@charset "UTF-8";
/**
 * Foundation for Sites by ZURB
 * Version 6.4.3
 * foundation.zurb.com
 * Licensed under MIT Open Source
 */
@media print, screen and (min-width: 40em) {
  right: auto;
  left: auto;
  margin: 0 auto;
}

/*! normalize-scss | MIT/GPLv2 License | bit.ly/normalize-scss */
/* Document
       ========================================================================== */
/**
     * 1. Change the default font family in all browsers (opinionated).
     * 2. Correct the line height in all browsers.
     * 3. Prevent adjustments of font size after orientation changes in
     *    IE on Windows Phone and in iOS.
     */
html {
  font-family: sans-serif;
  /* 1 */
  line-height: 1.15;
  /* 2 */
  -ms-text-size-adjust: 100%;
  /* 3 */
  -webkit-text-size-adjust: 100%;
  /* 3 */
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

sub {
  bottom: -0.25em;
}

sup {
  top: -0.5em;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

body {
  margin: 0;
  padding: 0;
  background: #ffffff;
  font-family: "Akkurat-Light", sans-serif;
  font-weight: normal;
  line-height: 1.5;
  color: #000000;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

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

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

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

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

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

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

pre {
  overflow: auto;
}

button,
input,
optgroup,
select,
textarea {
  font-family: inherit;
}

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

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

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

.row::before, .row::after {
  display: table;
  content: ' ';
  -webkit-flex-basis: 0;
      -ms-flex-preferred-size: 0;
          flex-basis: 0;
  -webkit-box-ordinal-group: 2;
  -webkit-order: 1;
      -ms-flex-order: 1;
          order: 1;
}

.row::after {
  clear: both;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.small-1 {
  width: 8.33333%;
}

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

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

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

.small-2 {
  width: 16.66667%;
}

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

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

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

.small-3 {
  width: 25%;
}

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

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

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

.small-4 {
  width: 33.33333%;
}

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

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

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

.small-5 {
  width: 41.66667%;
}

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

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

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

.small-6 {
  width: 50%;
}

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

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

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

.small-7 {
  width: 58.33333%;
}

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

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

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

.small-8 {
  width: 66.66667%;
}

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

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

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

.small-9 {
  width: 75%;
}

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

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

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

.small-10 {
  width: 83.33333%;
}

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

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

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

.small-11 {
  width: 91.66667%;
}

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

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

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

.small-12 {
  width: 100%;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.row {
  max-width: 75rem;
  margin-right: auto;
  margin-left: auto;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
  -webkit-flex-flow: row wrap;
      -ms-flex-flow: row wrap;
          flex-flow: row wrap;
}

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

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

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

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

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

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

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

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

.row.is-collapse-child,
.row.collapse > .column > .row,
.row.collapse > .columns > .row {
  margin-right: 0;
  margin-left: 0;
}

.column, .columns {
  -webkit-box-flex: 1;
  -webkit-flex: 1 1 0px;
      -ms-flex: 1 1 0px;
          flex: 1 1 0px;
  padding-right: 1.5625rem;
  padding-left: 1.5625rem;
  min-width: 0;
}

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

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

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

.small-1 {
  -webkit-box-flex: 0;
  -webkit-flex: 0 0 8.33333%;
      -ms-flex: 0 0 8.33333%;
          flex: 0 0 8.33333%;
  max-width: 8.33333%;
}

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

.small-2 {
  -webkit-box-flex: 0;
  -webkit-flex: 0 0 16.66667%;
      -ms-flex: 0 0 16.66667%;
          flex: 0 0 16.66667%;
  max-width: 16.66667%;
}

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

.small-3 {
  -webkit-box-flex: 0;
  -webkit-flex: 0 0 25%;
      -ms-flex: 0 0 25%;
          flex: 0 0 25%;
  max-width: 25%;
}

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

.small-4 {
  -webkit-box-flex: 0;
  -webkit-flex: 0 0 33.33333%;
      -ms-flex: 0 0 33.33333%;
          flex: 0 0 33.33333%;
  max-width: 33.33333%;
}

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

.small-5 {
  -webkit-box-flex: 0;
  -webkit-flex: 0 0 41.66667%;
      -ms-flex: 0 0 41.66667%;
          flex: 0 0 41.66667%;
  max-width: 41.66667%;
}

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

.small-6 {
  -webkit-box-flex: 0;
  -webkit-flex: 0 0 50%;
      -ms-flex: 0 0 50%;
          flex: 0 0 50%;
  max-width: 50%;
}

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

.small-7 {
  -webkit-box-flex: 0;
  -webkit-flex: 0 0 58.33333%;
      -ms-flex: 0 0 58.33333%;
          flex: 0 0 58.33333%;
  max-width: 58.33333%;
}

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

.small-8 {
  -webkit-box-flex: 0;
  -webkit-flex: 0 0 66.66667%;
      -ms-flex: 0 0 66.66667%;
          flex: 0 0 66.66667%;
  max-width: 66.66667%;
}

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

.small-9 {
  -webkit-box-flex: 0;
  -webkit-flex: 0 0 75%;
      -ms-flex: 0 0 75%;
          flex: 0 0 75%;
  max-width: 75%;
}

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

.small-10 {
  -webkit-box-flex: 0;
  -webkit-flex: 0 0 83.33333%;
      -ms-flex: 0 0 83.33333%;
          flex: 0 0 83.33333%;
  max-width: 83.33333%;
}

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

.small-11 {
  -webkit-box-flex: 0;
  -webkit-flex: 0 0 91.66667%;
      -ms-flex: 0 0 91.66667%;
          flex: 0 0 91.66667%;
  max-width: 91.66667%;
}

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

.small-12 {
  -webkit-box-flex: 0;
  -webkit-flex: 0 0 100%;
      -ms-flex: 0 0 100%;
          flex: 0 0 100%;
  max-width: 100%;
}

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

.small-up-1 {
  -webkit-flex-wrap: wrap;
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
}

.small-up-1 > .column, .small-up-1 > .columns {
  -webkit-box-flex: 0;
  -webkit-flex: 0 0 100%;
      -ms-flex: 0 0 100%;
          flex: 0 0 100%;
  max-width: 100%;
}

.small-up-2 {
  -webkit-flex-wrap: wrap;
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
}

.small-up-2 > .column, .small-up-2 > .columns {
  -webkit-box-flex: 0;
  -webkit-flex: 0 0 50%;
      -ms-flex: 0 0 50%;
          flex: 0 0 50%;
  max-width: 50%;
}

.small-up-3 {
  -webkit-flex-wrap: wrap;
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
}

.small-up-3 > .column, .small-up-3 > .columns {
  -webkit-box-flex: 0;
  -webkit-flex: 0 0 33.33333%;
      -ms-flex: 0 0 33.33333%;
          flex: 0 0 33.33333%;
  max-width: 33.33333%;
}

.small-up-4 {
  -webkit-flex-wrap: wrap;
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
}

.small-up-4 > .column, .small-up-4 > .columns {
  -webkit-box-flex: 0;
  -webkit-flex: 0 0 25%;
      -ms-flex: 0 0 25%;
          flex: 0 0 25%;
  max-width: 25%;
}

.small-up-5 {
  -webkit-flex-wrap: wrap;
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
}

.small-up-5 > .column, .small-up-5 > .columns {
  -webkit-box-flex: 0;
  -webkit-flex: 0 0 20%;
      -ms-flex: 0 0 20%;
          flex: 0 0 20%;
  max-width: 20%;
}

.small-up-6 {
  -webkit-flex-wrap: wrap;
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
}

.small-up-6 > .column, .small-up-6 > .columns {
  -webkit-box-flex: 0;
  -webkit-flex: 0 0 16.66667%;
      -ms-flex: 0 0 16.66667%;
          flex: 0 0 16.66667%;
  max-width: 16.66667%;
}

.small-up-7 {
  -webkit-flex-wrap: wrap;
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
}

.small-up-7 > .column, .small-up-7 > .columns {
  -webkit-box-flex: 0;
  -webkit-flex: 0 0 14.28571%;
      -ms-flex: 0 0 14.28571%;
          flex: 0 0 14.28571%;
  max-width: 14.28571%;
}

.small-up-8 {
  -webkit-flex-wrap: wrap;
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
}

.small-up-8 > .column, .small-up-8 > .columns {
  -webkit-box-flex: 0;
  -webkit-flex: 0 0 12.5%;
      -ms-flex: 0 0 12.5%;
          flex: 0 0 12.5%;
  max-width: 12.5%;
}

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

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

@media print, screen and (min-width: 48em) {
  .medium-1 {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 8.33333%;
        -ms-flex: 0 0 8.33333%;
            flex: 0 0 8.33333%;
    max-width: 8.33333%;
  }
  .medium-offset-0 {
    margin-left: 0%;
  }
  .medium-2 {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 16.66667%;
        -ms-flex: 0 0 16.66667%;
            flex: 0 0 16.66667%;
    max-width: 16.66667%;
  }
  .medium-offset-1 {
    margin-left: 8.33333%;
  }
  .medium-3 {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 25%;
        -ms-flex: 0 0 25%;
            flex: 0 0 25%;
    max-width: 25%;
  }
  .medium-offset-2 {
    margin-left: 16.66667%;
  }
  .medium-4 {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 33.33333%;
        -ms-flex: 0 0 33.33333%;
            flex: 0 0 33.33333%;
    max-width: 33.33333%;
  }
  .medium-offset-3 {
    margin-left: 25%;
  }
  .medium-5 {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 41.66667%;
        -ms-flex: 0 0 41.66667%;
            flex: 0 0 41.66667%;
    max-width: 41.66667%;
  }
  .medium-offset-4 {
    margin-left: 33.33333%;
  }
  .medium-6 {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 50%;
        -ms-flex: 0 0 50%;
            flex: 0 0 50%;
    max-width: 50%;
  }
  .medium-offset-5 {
    margin-left: 41.66667%;
  }
  .medium-7 {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 58.33333%;
        -ms-flex: 0 0 58.33333%;
            flex: 0 0 58.33333%;
    max-width: 58.33333%;
  }
  .medium-offset-6 {
    margin-left: 50%;
  }
  .medium-8 {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 66.66667%;
        -ms-flex: 0 0 66.66667%;
            flex: 0 0 66.66667%;
    max-width: 66.66667%;
  }
  .medium-offset-7 {
    margin-left: 58.33333%;
  }
  .medium-9 {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 75%;
        -ms-flex: 0 0 75%;
            flex: 0 0 75%;
    max-width: 75%;
  }
  .medium-offset-8 {
    margin-left: 66.66667%;
  }
  .medium-10 {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 83.33333%;
        -ms-flex: 0 0 83.33333%;
            flex: 0 0 83.33333%;
    max-width: 83.33333%;
  }
  .medium-offset-9 {
    margin-left: 75%;
  }
  .medium-11 {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 91.66667%;
        -ms-flex: 0 0 91.66667%;
            flex: 0 0 91.66667%;
    max-width: 91.66667%;
  }
  .medium-offset-10 {
    margin-left: 83.33333%;
  }
  .medium-12 {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 100%;
        -ms-flex: 0 0 100%;
            flex: 0 0 100%;
    max-width: 100%;
  }
  .medium-offset-11 {
    margin-left: 91.66667%;
  }
  .medium-up-1 {
    -webkit-flex-wrap: wrap;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
  }
  .medium-up-1 > .column, .medium-up-1 > .columns {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 100%;
        -ms-flex: 0 0 100%;
            flex: 0 0 100%;
    max-width: 100%;
  }
  .medium-up-2 {
    -webkit-flex-wrap: wrap;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
  }
  .medium-up-2 > .column, .medium-up-2 > .columns {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 50%;
        -ms-flex: 0 0 50%;
            flex: 0 0 50%;
    max-width: 50%;
  }
  .medium-up-3 {
    -webkit-flex-wrap: wrap;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
  }
  .medium-up-3 > .column, .medium-up-3 > .columns {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 33.33333%;
        -ms-flex: 0 0 33.33333%;
            flex: 0 0 33.33333%;
    max-width: 33.33333%;
  }
  .medium-up-4 {
    -webkit-flex-wrap: wrap;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
  }
  .medium-up-4 > .column, .medium-up-4 > .columns {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 25%;
        -ms-flex: 0 0 25%;
            flex: 0 0 25%;
    max-width: 25%;
  }
  .medium-up-5 {
    -webkit-flex-wrap: wrap;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
  }
  .medium-up-5 > .column, .medium-up-5 > .columns {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 20%;
        -ms-flex: 0 0 20%;
            flex: 0 0 20%;
    max-width: 20%;
  }
  .medium-up-6 {
    -webkit-flex-wrap: wrap;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
  }
  .medium-up-6 > .column, .medium-up-6 > .columns {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 16.66667%;
        -ms-flex: 0 0 16.66667%;
            flex: 0 0 16.66667%;
    max-width: 16.66667%;
  }
  .medium-up-7 {
    -webkit-flex-wrap: wrap;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
  }
  .medium-up-7 > .column, .medium-up-7 > .columns {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 14.28571%;
        -ms-flex: 0 0 14.28571%;
            flex: 0 0 14.28571%;
    max-width: 14.28571%;
  }
  .medium-up-8 {
    -webkit-flex-wrap: wrap;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
  }
  .medium-up-8 > .column, .medium-up-8 > .columns {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 12.5%;
        -ms-flex: 0 0 12.5%;
            flex: 0 0 12.5%;
    max-width: 12.5%;
  }
}

@media print, screen and (min-width: 48em) and (min-width: 48em) {
  .medium-expand {
    -webkit-box-flex: 1;
    -webkit-flex: 1 1 0px;
        -ms-flex: 1 1 0px;
            flex: 1 1 0px;
  }
}

.row.medium-unstack > .column, .row.medium-unstack > .columns {
  -webkit-box-flex: 0;
  -webkit-flex: 0 0 100%;
      -ms-flex: 0 0 100%;
          flex: 0 0 100%;
}

@media print, screen and (min-width: 48em) {
  .row.medium-unstack > .column, .row.medium-unstack > .columns {
    -webkit-box-flex: 1;
    -webkit-flex: 1 1 0px;
        -ms-flex: 1 1 0px;
            flex: 1 1 0px;
  }
}

@media print, screen and (min-width: 48em) {
  .medium-collapse > .column, .medium-collapse > .columns {
    padding-right: 0;
    padding-left: 0;
  }
  .medium-uncollapse > .column, .medium-uncollapse > .columns {
    padding-right: 0.625rem;
    padding-left: 0.625rem;
  }
}

@media print, screen and (min-width: 64em) {
  .large-1 {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 8.33333%;
        -ms-flex: 0 0 8.33333%;
            flex: 0 0 8.33333%;
    max-width: 8.33333%;
  }
  .large-offset-0 {
    margin-left: 0%;
  }
  .large-2 {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 16.66667%;
        -ms-flex: 0 0 16.66667%;
            flex: 0 0 16.66667%;
    max-width: 16.66667%;
  }
  .large-offset-1 {
    margin-left: 8.33333%;
  }
  .large-3 {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 25%;
        -ms-flex: 0 0 25%;
            flex: 0 0 25%;
    max-width: 25%;
  }
  .large-offset-2 {
    margin-left: 16.66667%;
  }
  .large-4 {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 33.33333%;
        -ms-flex: 0 0 33.33333%;
            flex: 0 0 33.33333%;
    max-width: 33.33333%;
  }
  .large-offset-3 {
    margin-left: 25%;
  }
  .large-5 {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 41.66667%;
        -ms-flex: 0 0 41.66667%;
            flex: 0 0 41.66667%;
    max-width: 41.66667%;
  }
  .large-offset-4 {
    margin-left: 33.33333%;
  }
  .large-6 {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 50%;
        -ms-flex: 0 0 50%;
            flex: 0 0 50%;
    max-width: 50%;
  }
  .large-offset-5 {
    margin-left: 41.66667%;
  }
  .large-7 {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 58.33333%;
        -ms-flex: 0 0 58.33333%;
            flex: 0 0 58.33333%;
    max-width: 58.33333%;
  }
  .large-offset-6 {
    margin-left: 50%;
  }
  .large-8 {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 66.66667%;
        -ms-flex: 0 0 66.66667%;
            flex: 0 0 66.66667%;
    max-width: 66.66667%;
  }
  .large-offset-7 {
    margin-left: 58.33333%;
  }
  .large-9 {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 75%;
        -ms-flex: 0 0 75%;
            flex: 0 0 75%;
    max-width: 75%;
  }
  .large-offset-8 {
    margin-left: 66.66667%;
  }
  .large-10 {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 83.33333%;
        -ms-flex: 0 0 83.33333%;
            flex: 0 0 83.33333%;
    max-width: 83.33333%;
  }
  .large-offset-9 {
    margin-left: 75%;
  }
  .large-11 {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 91.66667%;
        -ms-flex: 0 0 91.66667%;
            flex: 0 0 91.66667%;
    max-width: 91.66667%;
  }
  .large-offset-10 {
    margin-left: 83.33333%;
  }
  .large-12 {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 100%;
        -ms-flex: 0 0 100%;
            flex: 0 0 100%;
    max-width: 100%;
  }
  .large-offset-11 {
    margin-left: 91.66667%;
  }
  .large-up-1 {
    -webkit-flex-wrap: wrap;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
  }
  .large-up-1 > .column, .large-up-1 > .columns {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 100%;
        -ms-flex: 0 0 100%;
            flex: 0 0 100%;
    max-width: 100%;
  }
  .large-up-2 {
    -webkit-flex-wrap: wrap;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
  }
  .large-up-2 > .column, .large-up-2 > .columns {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 50%;
        -ms-flex: 0 0 50%;
            flex: 0 0 50%;
    max-width: 50%;
  }
  .large-up-3 {
    -webkit-flex-wrap: wrap;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
  }
  .large-up-3 > .column, .large-up-3 > .columns {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 33.33333%;
        -ms-flex: 0 0 33.33333%;
            flex: 0 0 33.33333%;
    max-width: 33.33333%;
  }
  .large-up-4 {
    -webkit-flex-wrap: wrap;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
  }
  .large-up-4 > .column, .large-up-4 > .columns {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 25%;
        -ms-flex: 0 0 25%;
            flex: 0 0 25%;
    max-width: 25%;
  }
  .large-up-5 {
    -webkit-flex-wrap: wrap;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
  }
  .large-up-5 > .column, .large-up-5 > .columns {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 20%;
        -ms-flex: 0 0 20%;
            flex: 0 0 20%;
    max-width: 20%;
  }
  .large-up-6 {
    -webkit-flex-wrap: wrap;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
  }
  .large-up-6 > .column, .large-up-6 > .columns {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 16.66667%;
        -ms-flex: 0 0 16.66667%;
            flex: 0 0 16.66667%;
    max-width: 16.66667%;
  }
  .large-up-7 {
    -webkit-flex-wrap: wrap;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
  }
  .large-up-7 > .column, .large-up-7 > .columns {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 14.28571%;
        -ms-flex: 0 0 14.28571%;
            flex: 0 0 14.28571%;
    max-width: 14.28571%;
  }
  .large-up-8 {
    -webkit-flex-wrap: wrap;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
  }
  .large-up-8 > .column, .large-up-8 > .columns {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 12.5%;
        -ms-flex: 0 0 12.5%;
            flex: 0 0 12.5%;
    max-width: 12.5%;
  }
}

@media print, screen and (min-width: 64em) and (min-width: 64em) {
  .large-expand {
    -webkit-box-flex: 1;
    -webkit-flex: 1 1 0px;
        -ms-flex: 1 1 0px;
            flex: 1 1 0px;
  }
}

.row.large-unstack > .column, .row.large-unstack > .columns {
  -webkit-box-flex: 0;
  -webkit-flex: 0 0 100%;
      -ms-flex: 0 0 100%;
          flex: 0 0 100%;
}

@media print, screen and (min-width: 64em) {
  .row.large-unstack > .column, .row.large-unstack > .columns {
    -webkit-box-flex: 1;
    -webkit-flex: 1 1 0px;
        -ms-flex: 1 1 0px;
            flex: 1 1 0px;
  }
}

@media print, screen and (min-width: 64em) {
  .large-collapse > .column, .large-collapse > .columns {
    padding-right: 0;
    padding-left: 0;
  }
  .large-uncollapse > .column, .large-uncollapse > .columns {
    padding-right: 0.625rem;
    padding-left: 0.625rem;
  }
}

.shrink {
  -webkit-box-flex: 0;
  -webkit-flex: 0 0 auto;
      -ms-flex: 0 0 auto;
          flex: 0 0 auto;
  max-width: 100%;
}

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

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

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

.align-right {
  -webkit-box-pack: end;
  -webkit-justify-content: flex-end;
      -ms-flex-pack: end;
          justify-content: flex-end;
}

.align-center {
  -webkit-box-pack: center;
  -webkit-justify-content: center;
      -ms-flex-pack: center;
          justify-content: center;
}

.align-justify {
  -webkit-box-pack: justify;
  -webkit-justify-content: space-between;
      -ms-flex-pack: justify;
          justify-content: space-between;
}

.align-spaced {
  -webkit-justify-content: space-around;
      -ms-flex-pack: distribute;
          justify-content: space-around;
}

.align-right.vertical.menu > li > a {
  -webkit-box-pack: end;
  -webkit-justify-content: flex-end;
      -ms-flex-pack: end;
          justify-content: flex-end;
}

.align-center.vertical.menu > li > a {
  -webkit-box-pack: center;
  -webkit-justify-content: center;
      -ms-flex-pack: center;
          justify-content: center;
}

.align-top {
  -webkit-box-align: start;
  -webkit-align-items: flex-start;
      -ms-flex-align: start;
          align-items: flex-start;
}

.align-self-top {
  -webkit-align-self: flex-start;
      -ms-flex-item-align: start;
          align-self: flex-start;
}

.align-bottom {
  -webkit-box-align: end;
  -webkit-align-items: flex-end;
      -ms-flex-align: end;
          align-items: flex-end;
}

.align-self-bottom {
  -webkit-align-self: flex-end;
      -ms-flex-item-align: end;
          align-self: flex-end;
}

.align-middle {
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
}

.align-self-middle {
  -webkit-align-self: center;
      -ms-flex-item-align: center;
          align-self: center;
}

.align-stretch {
  -webkit-box-align: stretch;
  -webkit-align-items: stretch;
      -ms-flex-align: stretch;
          align-items: stretch;
}

.align-self-stretch {
  -webkit-align-self: stretch;
      -ms-flex-item-align: stretch;
          align-self: stretch;
}

.align-center-middle {
  -webkit-box-pack: center;
  -webkit-justify-content: center;
      -ms-flex-pack: center;
          justify-content: center;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-align-content: center;
      -ms-flex-line-pack: center;
          align-content: center;
}

.small-order-1 {
  -webkit-box-ordinal-group: 2;
  -webkit-order: 1;
      -ms-flex-order: 1;
          order: 1;
}

.small-order-2 {
  -webkit-box-ordinal-group: 3;
  -webkit-order: 2;
      -ms-flex-order: 2;
          order: 2;
}

.small-order-3 {
  -webkit-box-ordinal-group: 4;
  -webkit-order: 3;
      -ms-flex-order: 3;
          order: 3;
}

.small-order-4 {
  -webkit-box-ordinal-group: 5;
  -webkit-order: 4;
      -ms-flex-order: 4;
          order: 4;
}

.small-order-5 {
  -webkit-box-ordinal-group: 6;
  -webkit-order: 5;
      -ms-flex-order: 5;
          order: 5;
}

.small-order-6 {
  -webkit-box-ordinal-group: 7;
  -webkit-order: 6;
      -ms-flex-order: 6;
          order: 6;
}

@media print, screen and (min-width: 48em) {
  .medium-order-1 {
    -webkit-box-ordinal-group: 2;
    -webkit-order: 1;
        -ms-flex-order: 1;
            order: 1;
  }
  .medium-order-2 {
    -webkit-box-ordinal-group: 3;
    -webkit-order: 2;
        -ms-flex-order: 2;
            order: 2;
  }
  .medium-order-3 {
    -webkit-box-ordinal-group: 4;
    -webkit-order: 3;
        -ms-flex-order: 3;
            order: 3;
  }
  .medium-order-4 {
    -webkit-box-ordinal-group: 5;
    -webkit-order: 4;
        -ms-flex-order: 4;
            order: 4;
  }
  .medium-order-5 {
    -webkit-box-ordinal-group: 6;
    -webkit-order: 5;
        -ms-flex-order: 5;
            order: 5;
  }
  .medium-order-6 {
    -webkit-box-ordinal-group: 7;
    -webkit-order: 6;
        -ms-flex-order: 6;
            order: 6;
  }
}

@media print, screen and (min-width: 64em) {
  .large-order-1 {
    -webkit-box-ordinal-group: 2;
    -webkit-order: 1;
        -ms-flex-order: 1;
            order: 1;
  }
  .large-order-2 {
    -webkit-box-ordinal-group: 3;
    -webkit-order: 2;
        -ms-flex-order: 2;
            order: 2;
  }
  .large-order-3 {
    -webkit-box-ordinal-group: 4;
    -webkit-order: 3;
        -ms-flex-order: 3;
            order: 3;
  }
  .large-order-4 {
    -webkit-box-ordinal-group: 5;
    -webkit-order: 4;
        -ms-flex-order: 4;
            order: 4;
  }
  .large-order-5 {
    -webkit-box-ordinal-group: 6;
    -webkit-order: 5;
        -ms-flex-order: 5;
            order: 5;
  }
  .large-order-6 {
    -webkit-box-ordinal-group: 7;
    -webkit-order: 6;
        -ms-flex-order: 6;
            order: 6;
  }
}

.flex-container {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
}

.flex-child-auto {
  -webkit-box-flex: 1;
  -webkit-flex: 1 1 auto;
      -ms-flex: 1 1 auto;
          flex: 1 1 auto;
}

.flex-child-grow {
  -webkit-box-flex: 1;
  -webkit-flex: 1 0 auto;
      -ms-flex: 1 0 auto;
          flex: 1 0 auto;
}

.flex-child-shrink {
  -webkit-box-flex: 0;
  -webkit-flex: 0 1 auto;
      -ms-flex: 0 1 auto;
          flex: 0 1 auto;
}

.flex-dir-row {
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
  -webkit-flex-direction: row;
      -ms-flex-direction: row;
          flex-direction: row;
}

.flex-dir-row-reverse {
  -webkit-box-orient: horizontal;
  -webkit-box-direction: reverse;
  -webkit-flex-direction: row-reverse;
      -ms-flex-direction: row-reverse;
          flex-direction: row-reverse;
}

.flex-dir-column {
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
      -ms-flex-direction: column;
          flex-direction: column;
}

.flex-dir-column-reverse {
  -webkit-box-orient: vertical;
  -webkit-box-direction: reverse;
  -webkit-flex-direction: column-reverse;
      -ms-flex-direction: column-reverse;
          flex-direction: column-reverse;
}

@media print, screen and (min-width: 48em) {
  .medium-flex-container {
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
  }
  .medium-flex-child-auto {
    -webkit-box-flex: 1;
    -webkit-flex: 1 1 auto;
        -ms-flex: 1 1 auto;
            flex: 1 1 auto;
  }
  .medium-flex-child-grow {
    -webkit-box-flex: 1;
    -webkit-flex: 1 0 auto;
        -ms-flex: 1 0 auto;
            flex: 1 0 auto;
  }
  .medium-flex-child-shrink {
    -webkit-box-flex: 0;
    -webkit-flex: 0 1 auto;
        -ms-flex: 0 1 auto;
            flex: 0 1 auto;
  }
  .medium-flex-dir-row {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
    -webkit-flex-direction: row;
        -ms-flex-direction: row;
            flex-direction: row;
  }
  .medium-flex-dir-row-reverse {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
    -webkit-flex-direction: row-reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse;
  }
  .medium-flex-dir-column {
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
    -webkit-flex-direction: column;
        -ms-flex-direction: column;
            flex-direction: column;
  }
  .medium-flex-dir-column-reverse {
    -webkit-box-orient: vertical;
    -webkit-box-direction: reverse;
    -webkit-flex-direction: column-reverse;
        -ms-flex-direction: column-reverse;
            flex-direction: column-reverse;
  }
}

@media print, screen and (min-width: 64em) {
  .large-flex-container {
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
  }
  .large-flex-child-auto {
    -webkit-box-flex: 1;
    -webkit-flex: 1 1 auto;
        -ms-flex: 1 1 auto;
            flex: 1 1 auto;
  }
  .large-flex-child-grow {
    -webkit-box-flex: 1;
    -webkit-flex: 1 0 auto;
        -ms-flex: 1 0 auto;
            flex: 1 0 auto;
  }
  .large-flex-child-shrink {
    -webkit-box-flex: 0;
    -webkit-flex: 0 1 auto;
        -ms-flex: 0 1 auto;
            flex: 0 1 auto;
  }
  .large-flex-dir-row {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
    -webkit-flex-direction: row;
        -ms-flex-direction: row;
            flex-direction: row;
  }
  .large-flex-dir-row-reverse {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
    -webkit-flex-direction: row-reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse;
  }
  .large-flex-dir-column {
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
    -webkit-flex-direction: column;
        -ms-flex-direction: column;
            flex-direction: column;
  }
  .large-flex-dir-column-reverse {
    -webkit-box-orient: vertical;
    -webkit-box-direction: reverse;
    -webkit-flex-direction: column-reverse;
        -ms-flex-direction: column-reverse;
            flex-direction: column-reverse;
  }
}

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

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

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

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

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

h1, .h1,
h2, .h2,
h3, .h3,
h4, .h4,
h5, .h5,
h6, .h6 {
  font-family: "Akkurat-RegularBold", sans-serif;
  font-style: normal;
  font-weight: normal;
  color: inherit;
  text-rendering: optimizeLegibility;
}

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

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

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

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

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

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

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

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

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

a:hover, a:focus {
  color: #840838;
}

a img {
  border: 0;
}

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

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

li {
  font-size: inherit;
}

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

ol {
  margin-left: 1.25rem;
}

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

dl {
  margin-bottom: 1rem;
}

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

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

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

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

cite:before {
  content: "— ";
}

abbr, abbr[title] {
  border-bottom: 1px dotted #000000;
  cursor: help;
  text-decoration: none;
}

figure {
  margin: 0;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@media print {
  * {
    background: transparent !important;
    -webkit-box-shadow: none !important;
            box-shadow: none !important;
    color: black !important;
    text-shadow: none !important;
  }
  .show-for-print {
    display: block !important;
  }
  .hide-for-print {
    display: none !important;
  }
  table.show-for-print {
    display: table !important;
  }
  thead.show-for-print {
    display: table-header-group !important;
  }
  tbody.show-for-print {
    display: table-row-group !important;
  }
  tr.show-for-print {
    display: table-row !important;
  }
  td.show-for-print {
    display: table-cell !important;
  }
  th.show-for-print {
    display: table-cell !important;
  }
  a,
  a:visited {
    text-decoration: underline;
  }
  a[href]:after {
    content: " (" attr(href) ")";
  }
  .ir a:after,
  a[href^='javascript:']:after,
  a[href^='#']:after {
    content: '';
  }
  abbr[title]:after {
    content: " (" attr(title) ")";
  }
  pre,
  blockquote {
    border: 1px solid #333333;
    page-break-inside: avoid;
  }
  thead {
    display: table-header-group;
  }
  tr,
  img {
    page-break-inside: avoid;
  }
  img {
    max-width: 100% !important;
  }
  @page {
    margin: 0.5cm;
  }
  p,
  h2,
  h3 {
    orphans: 3;
    widows: 3;
  }
  h2,
  h3 {
    page-break-after: avoid;
  }
  .print-break-inside {
    page-break-inside: auto;
  }
}

[type='text'], [type='password'], [type='date'], [type='datetime'], [type='datetime-local'], [type='month'], [type='week'], [type='email'], [type='number'], [type='search'], [type='tel'], [type='time'], [type='url'], [type='color'],
textarea {
  display: block;
  -webkit-box-sizing: border-box;
          box-sizing: border-box;
  width: 100%;
  height: 2.4375rem;
  margin: 0 0 1rem;
  padding: 0.5rem;
  border: 1px solid #eeeeee;
  -webkit-border-radius: 0;
          border-radius: 0;
  background-color: #ffffff;
  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
          box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
  font-family: inherit;
  font-size: 1rem;
  font-weight: normal;
  line-height: 1.5;
  color: #000000;
  -webkit-transition: border-color 0.25s ease-in-out, -webkit-box-shadow 0.5s;
  transition: border-color 0.25s ease-in-out, -webkit-box-shadow 0.5s;
  -o-transition: box-shadow 0.5s, border-color 0.25s ease-in-out;
  transition: box-shadow 0.5s, border-color 0.25s ease-in-out;
  transition: box-shadow 0.5s, border-color 0.25s ease-in-out, -webkit-box-shadow 0.5s;
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
}

[type='text']:focus, [type='password']:focus, [type='date']:focus, [type='datetime']:focus, [type='datetime-local']:focus, [type='month']:focus, [type='week']:focus, [type='email']:focus, [type='number']:focus, [type='search']:focus, [type='tel']:focus, [type='time']:focus, [type='url']:focus, [type='color']:focus,
textarea:focus {
  outline: none;
  border: 1px solid #333333;
  background-color: #ffffff;
  -webkit-box-shadow: 0 0 5px #eeeeee;
          box-shadow: 0 0 5px #eeeeee;
  -webkit-transition: border-color 0.25s ease-in-out, -webkit-box-shadow 0.5s;
  transition: border-color 0.25s ease-in-out, -webkit-box-shadow 0.5s;
  -o-transition: box-shadow 0.5s, border-color 0.25s ease-in-out;
  transition: box-shadow 0.5s, border-color 0.25s ease-in-out;
  transition: box-shadow 0.5s, border-color 0.25s ease-in-out, -webkit-box-shadow 0.5s;
}

textarea {
  max-width: 100%;
}

textarea[rows] {
  height: auto;
}

input::-webkit-input-placeholder,
textarea::-webkit-input-placeholder {
  color: #eeeeee;
}

input::-ms-input-placeholder,
textarea::-ms-input-placeholder {
  color: #eeeeee;
}

input::placeholder,
textarea::placeholder {
  color: #eeeeee;
}

input:disabled, input[readonly],
textarea:disabled,
textarea[readonly] {
  background-color: #f5f5f5;
  cursor: not-allowed;
}

[type='submit'],
[type='button'] {
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  -webkit-border-radius: 0;
          border-radius: 0;
}

input[type='search'] {
  -webkit-box-sizing: border-box;
          box-sizing: border-box;
}

[type='file'],
[type='checkbox'],
[type='radio'] {
  margin: 0 0 1rem;
}

[type='checkbox'] + label,
[type='radio'] + label {
  display: inline-block;
  vertical-align: baseline;
  margin-left: 0.5rem;
  margin-right: 1rem;
  margin-bottom: 0;
}

[type='checkbox'] + label[for],
[type='radio'] + label[for] {
  cursor: pointer;
}

label > [type='checkbox'],
label > [type='radio'] {
  margin-right: 0.5rem;
}

[type='file'] {
  width: 100%;
}

label {
  display: block;
  margin: 0;
  font-size: 0.875rem;
  font-weight: normal;
  line-height: 1.8;
  color: #000000;
}

label.middle {
  margin: 0 0 1rem;
  padding: 0.5625rem 0;
}

.help-text {
  margin-top: -0.5rem;
  font-size: 0.8125rem;
  font-style: italic;
  color: #000000;
}

.input-group {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  width: 100%;
  margin-bottom: 1rem;
  -webkit-box-align: stretch;
  -webkit-align-items: stretch;
      -ms-flex-align: stretch;
          align-items: stretch;
}

.input-group > :first-child {
  -webkit-border-radius: 0 0 0 0;
          border-radius: 0 0 0 0;
}

.input-group > :last-child > * {
  -webkit-border-radius: 0 0 0 0;
          border-radius: 0 0 0 0;
}

.input-group-label, .input-group-field, .input-group-button, .input-group-button a,
.input-group-button input,
.input-group-button button,
.input-group-button label {
  margin: 0;
  white-space: nowrap;
}

.input-group-label {
  padding: 0 1rem;
  border: 1px solid #eeeeee;
  background: #f5f5f5;
  color: #000000;
  text-align: center;
  white-space: nowrap;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-flex: 0;
  -webkit-flex: 0 0 auto;
      -ms-flex: 0 0 auto;
          flex: 0 0 auto;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
}

.input-group-label:first-child {
  border-right: 0;
}

.input-group-label:last-child {
  border-left: 0;
}

.input-group-field {
  -webkit-border-radius: 0;
          border-radius: 0;
  -webkit-box-flex: 1;
  -webkit-flex: 1 1 0px;
      -ms-flex: 1 1 0px;
          flex: 1 1 0px;
  height: auto;
  min-width: 0;
}

.input-group-button {
  padding-top: 0;
  padding-bottom: 0;
  text-align: center;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-flex: 0;
  -webkit-flex: 0 0 auto;
      -ms-flex: 0 0 auto;
          flex: 0 0 auto;
}

.input-group-button a,
.input-group-button input,
.input-group-button button,
.input-group-button label {
  height: auto;
  -webkit-align-self: stretch;
      -ms-flex-item-align: stretch;
          align-self: stretch;
  padding-top: 0;
  padding-bottom: 0;
  font-size: 1rem;
}

fieldset {
  margin: 0;
  padding: 0;
  border: 0;
}

legend {
  max-width: 100%;
  margin-bottom: 0.5rem;
}

.fieldset {
  margin: 1.125rem 0;
  padding: 1.25rem;
  border: 1px solid #eeeeee;
}

.fieldset legend {
  margin: 0;
  margin-left: -0.1875rem;
  padding: 0 0.1875rem;
}

select {
  height: 2.4375rem;
  margin: 0 0 1rem;
  padding: 0.5rem;
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  border: 1px solid #eeeeee;
  -webkit-border-radius: 0;
          border-radius: 0;
  background-color: #ffffff;
  font-family: inherit;
  font-size: 1rem;
  font-weight: normal;
  line-height: 1.5;
  color: #000000;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' width='32' height='24' viewBox='0 0 32 24'><polygon points='0,0 32,0 16,24' style='fill: rgb%2851, 51, 51%29'></polygon></svg>");
  -webkit-background-origin: content-box;
          background-origin: content-box;
  background-position: right -1rem center;
  background-repeat: no-repeat;
  -webkit-background-size: 9px 6px;
          background-size: 9px 6px;
  padding-right: 1.5rem;
  -webkit-transition: border-color 0.25s ease-in-out, -webkit-box-shadow 0.5s;
  transition: border-color 0.25s ease-in-out, -webkit-box-shadow 0.5s;
  -o-transition: box-shadow 0.5s, border-color 0.25s ease-in-out;
  transition: box-shadow 0.5s, border-color 0.25s ease-in-out;
  transition: box-shadow 0.5s, border-color 0.25s ease-in-out, -webkit-box-shadow 0.5s;
}

@media screen and (min-width: 0\0) {
  select {
    background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg==");
  }
}

select:focus {
  outline: none;
  border: 1px solid #333333;
  background-color: #ffffff;
  -webkit-box-shadow: 0 0 5px #eeeeee;
          box-shadow: 0 0 5px #eeeeee;
  -webkit-transition: border-color 0.25s ease-in-out, -webkit-box-shadow 0.5s;
  transition: border-color 0.25s ease-in-out, -webkit-box-shadow 0.5s;
  -o-transition: box-shadow 0.5s, border-color 0.25s ease-in-out;
  transition: box-shadow 0.5s, border-color 0.25s ease-in-out;
  transition: box-shadow 0.5s, border-color 0.25s ease-in-out, -webkit-box-shadow 0.5s;
}

select:disabled {
  background-color: #f5f5f5;
  cursor: not-allowed;
}

select::-ms-expand {
  display: none;
}

select[multiple] {
  height: auto;
  background-image: none;
}

.is-invalid-input:not(:focus) {
  border-color: #cc4b37;
  background-color: #faedeb;
}

.is-invalid-input:not(:focus)::-webkit-input-placeholder {
  color: #cc4b37;
}

.is-invalid-input:not(:focus)::-ms-input-placeholder {
  color: #cc4b37;
}

.is-invalid-input:not(:focus)::placeholder {
  color: #cc4b37;
}

.is-invalid-label {
  color: #cc4b37;
}

.form-error {
  display: none;
  margin-top: -0.5rem;
  margin-bottom: 1rem;
  font-size: 0.75rem;
  font-weight: bold;
  color: #cc4b37;
}

.form-error.is-visible {
  display: block;
}

.button {
  display: inline-block;
  vertical-align: middle;
  margin: 0 0 1rem 0;
  font-family: inherit;
  padding: 0.85em 1em;
  -webkit-appearance: none;
  border: 1px solid transparent;
  -webkit-border-radius: 0;
          border-radius: 0;
  -webkit-transition: background-color 0.25s ease-out, color 0.25s ease-out;
  -o-transition: background-color 0.25s ease-out, color 0.25s ease-out;
  transition: background-color 0.25s ease-out, color 0.25s ease-out;
  font-size: 0.9rem;
  line-height: 1;
  text-align: center;
  cursor: pointer;
  background-color: #9a0941;
  color: #ffffff;
}

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

.button:hover, .button:focus {
  background-color: #830837;
  color: #ffffff;
}

.button.tiny {
  font-size: 0.6rem;
}

.button.small {
  font-size: 0.75rem;
}

.button.large {
  font-size: 1.25rem;
}

.button.expanded {
  display: block;
  width: 100%;
  margin-right: 0;
  margin-left: 0;
}

.button.primary {
  background-color: #9a0941;
  color: #ffffff;
}

.button.primary:hover, .button.primary:focus {
  background-color: #7b0734;
  color: #ffffff;
}

.button.secondary {
  background-color: #333333;
  color: #ffffff;
}

.button.secondary:hover, .button.secondary:focus {
  background-color: #292929;
  color: #ffffff;
}

.button.success {
  background-color: #3adb76;
  color: #000000;
}

.button.success:hover, .button.success:focus {
  background-color: #22bb5b;
  color: #000000;
}

.button.warning {
  background-color: #ffae00;
  color: #000000;
}

.button.warning:hover, .button.warning:focus {
  background-color: #cc8b00;
  color: #000000;
}

.button.alert {
  background-color: #cc4b37;
  color: #000000;
}

.button.alert:hover, .button.alert:focus {
  background-color: #a53b2a;
  color: #000000;
}

.button.disabled, .button[disabled] {
  opacity: 0.25;
  cursor: not-allowed;
}

.button.disabled, .button.disabled:hover, .button.disabled:focus, .button[disabled], .button[disabled]:hover, .button[disabled]:focus {
  background-color: #9a0941;
  color: #ffffff;
}

.button.disabled.primary, .button[disabled].primary {
  opacity: 0.25;
  cursor: not-allowed;
}

.button.disabled.primary, .button.disabled.primary:hover, .button.disabled.primary:focus, .button[disabled].primary, .button[disabled].primary:hover, .button[disabled].primary:focus {
  background-color: #9a0941;
  color: #ffffff;
}

.button.disabled.secondary, .button[disabled].secondary {
  opacity: 0.25;
  cursor: not-allowed;
}

.button.disabled.secondary, .button.disabled.secondary:hover, .button.disabled.secondary:focus, .button[disabled].secondary, .button[disabled].secondary:hover, .button[disabled].secondary:focus {
  background-color: #333333;
  color: #ffffff;
}

.button.disabled.success, .button[disabled].success {
  opacity: 0.25;
  cursor: not-allowed;
}

.button.disabled.success, .button.disabled.success:hover, .button.disabled.success:focus, .button[disabled].success, .button[disabled].success:hover, .button[disabled].success:focus {
  background-color: #3adb76;
  color: #000000;
}

.button.disabled.warning, .button[disabled].warning {
  opacity: 0.25;
  cursor: not-allowed;
}

.button.disabled.warning, .button.disabled.warning:hover, .button.disabled.warning:focus, .button[disabled].warning, .button[disabled].warning:hover, .button[disabled].warning:focus {
  background-color: #ffae00;
  color: #000000;
}

.button.disabled.alert, .button[disabled].alert {
  opacity: 0.25;
  cursor: not-allowed;
}

.button.disabled.alert, .button.disabled.alert:hover, .button.disabled.alert:focus, .button[disabled].alert, .button[disabled].alert:hover, .button[disabled].alert:focus {
  background-color: #cc4b37;
  color: #000000;
}

.button.hollow {
  border: 1px solid #9a0941;
  color: #9a0941;
}

.button.hollow, .button.hollow:hover, .button.hollow:focus {
  background-color: transparent;
}

.button.hollow.disabled, .button.hollow.disabled:hover, .button.hollow.disabled:focus, .button.hollow[disabled], .button.hollow[disabled]:hover, .button.hollow[disabled]:focus {
  background-color: transparent;
}

.button.hollow:hover, .button.hollow:focus {
  border-color: #4d0521;
  color: #4d0521;
}

.button.hollow:hover.disabled, .button.hollow:hover[disabled], .button.hollow:focus.disabled, .button.hollow:focus[disabled] {
  border: 1px solid #9a0941;
  color: #9a0941;
}

.button.hollow.primary {
  border: 1px solid #9a0941;
  color: #9a0941;
}

.button.hollow.primary:hover, .button.hollow.primary:focus {
  border-color: #4d0521;
  color: #4d0521;
}

.button.hollow.primary:hover.disabled, .button.hollow.primary:hover[disabled], .button.hollow.primary:focus.disabled, .button.hollow.primary:focus[disabled] {
  border: 1px solid #9a0941;
  color: #9a0941;
}

.button.hollow.secondary {
  border: 1px solid #333333;
  color: #333333;
}

.button.hollow.secondary:hover, .button.hollow.secondary:focus {
  border-color: #1a1a1a;
  color: #1a1a1a;
}

.button.hollow.secondary:hover.disabled, .button.hollow.secondary:hover[disabled], .button.hollow.secondary:focus.disabled, .button.hollow.secondary:focus[disabled] {
  border: 1px solid #333333;
  color: #333333;
}

.button.hollow.success {
  border: 1px solid #3adb76;
  color: #3adb76;
}

.button.hollow.success:hover, .button.hollow.success:focus {
  border-color: #157539;
  color: #157539;
}

.button.hollow.success:hover.disabled, .button.hollow.success:hover[disabled], .button.hollow.success:focus.disabled, .button.hollow.success:focus[disabled] {
  border: 1px solid #3adb76;
  color: #3adb76;
}

.button.hollow.warning {
  border: 1px solid #ffae00;
  color: #ffae00;
}

.button.hollow.warning:hover, .button.hollow.warning:focus {
  border-color: #805700;
  color: #805700;
}

.button.hollow.warning:hover.disabled, .button.hollow.warning:hover[disabled], .button.hollow.warning:focus.disabled, .button.hollow.warning:focus[disabled] {
  border: 1px solid #ffae00;
  color: #ffae00;
}

.button.hollow.alert {
  border: 1px solid #cc4b37;
  color: #cc4b37;
}

.button.hollow.alert:hover, .button.hollow.alert:focus {
  border-color: #67251a;
  color: #67251a;
}

.button.hollow.alert:hover.disabled, .button.hollow.alert:hover[disabled], .button.hollow.alert:focus.disabled, .button.hollow.alert:focus[disabled] {
  border: 1px solid #cc4b37;
  color: #cc4b37;
}

.button.clear {
  border: 1px solid #9a0941;
  color: #9a0941;
}

.button.clear, .button.clear:hover, .button.clear:focus {
  background-color: transparent;
}

.button.clear.disabled, .button.clear.disabled:hover, .button.clear.disabled:focus, .button.clear[disabled], .button.clear[disabled]:hover, .button.clear[disabled]:focus {
  background-color: transparent;
}

.button.clear:hover, .button.clear:focus {
  border-color: #4d0521;
  color: #4d0521;
}

.button.clear:hover.disabled, .button.clear:hover[disabled], .button.clear:focus.disabled, .button.clear:focus[disabled] {
  border: 1px solid #9a0941;
  color: #9a0941;
}

.button.clear, .button.clear.disabled, .button.clear[disabled], .button.clear:hover, .button.clear:hover.disabled, .button.clear:hover[disabled], .button.clear:focus, .button.clear:focus.disabled, .button.clear:focus[disabled] {
  border-color: transparent;
}

.button.clear.primary {
  border: 1px solid #9a0941;
  color: #9a0941;
}

.button.clear.primary:hover, .button.clear.primary:focus {
  border-color: #4d0521;
  color: #4d0521;
}

.button.clear.primary:hover.disabled, .button.clear.primary:hover[disabled], .button.clear.primary:focus.disabled, .button.clear.primary:focus[disabled] {
  border: 1px solid #9a0941;
  color: #9a0941;
}

.button.clear.primary, .button.clear.primary.disabled, .button.clear.primary[disabled], .button.clear.primary:hover, .button.clear.primary:hover.disabled, .button.clear.primary:hover[disabled], .button.clear.primary:focus, .button.clear.primary:focus.disabled, .button.clear.primary:focus[disabled] {
  border-color: transparent;
}

.button.clear.secondary {
  border: 1px solid #333333;
  color: #333333;
}

.button.clear.secondary:hover, .button.clear.secondary:focus {
  border-color: #1a1a1a;
  color: #1a1a1a;
}

.button.clear.secondary:hover.disabled, .button.clear.secondary:hover[disabled], .button.clear.secondary:focus.disabled, .button.clear.secondary:focus[disabled] {
  border: 1px solid #333333;
  color: #333333;
}

.button.clear.secondary, .button.clear.secondary.disabled, .button.clear.secondary[disabled], .button.clear.secondary:hover, .button.clear.secondary:hover.disabled, .button.clear.secondary:hover[disabled], .button.clear.secondary:focus, .button.clear.secondary:focus.disabled, .button.clear.secondary:focus[disabled] {
  border-color: transparent;
}

.button.clear.success {
  border: 1px solid #3adb76;
  color: #3adb76;
}

.button.clear.success:hover, .button.clear.success:focus {
  border-color: #157539;
  color: #157539;
}

.button.clear.success:hover.disabled, .button.clear.success:hover[disabled], .button.clear.success:focus.disabled, .button.clear.success:focus[disabled] {
  border: 1px solid #3adb76;
  color: #3adb76;
}

.button.clear.success, .button.clear.success.disabled, .button.clear.success[disabled], .button.clear.success:hover, .button.clear.success:hover.disabled, .button.clear.success:hover[disabled], .button.clear.success:focus, .button.clear.success:focus.disabled, .button.clear.success:focus[disabled] {
  border-color: transparent;
}

.button.clear.warning {
  border: 1px solid #ffae00;
  color: #ffae00;
}

.button.clear.warning:hover, .button.clear.warning:focus {
  border-color: #805700;
  color: #805700;
}

.button.clear.warning:hover.disabled, .button.clear.warning:hover[disabled], .button.clear.warning:focus.disabled, .button.clear.warning:focus[disabled] {
  border: 1px solid #ffae00;
  color: #ffae00;
}

.button.clear.warning, .button.clear.warning.disabled, .button.clear.warning[disabled], .button.clear.warning:hover, .button.clear.warning:hover.disabled, .button.clear.warning:hover[disabled], .button.clear.warning:focus, .button.clear.warning:focus.disabled, .button.clear.warning:focus[disabled] {
  border-color: transparent;
}

.button.clear.alert {
  border: 1px solid #cc4b37;
  color: #cc4b37;
}

.button.clear.alert:hover, .button.clear.alert:focus {
  border-color: #67251a;
  color: #67251a;
}

.button.clear.alert:hover.disabled, .button.clear.alert:hover[disabled], .button.clear.alert:focus.disabled, .button.clear.alert:focus[disabled] {
  border: 1px solid #cc4b37;
  color: #cc4b37;
}

.button.clear.alert, .button.clear.alert.disabled, .button.clear.alert[disabled], .button.clear.alert:hover, .button.clear.alert:hover.disabled, .button.clear.alert:hover[disabled], .button.clear.alert:focus, .button.clear.alert:focus.disabled, .button.clear.alert:focus[disabled] {
  border-color: transparent;
}

.button.dropdown::after {
  display: block;
  width: 0;
  height: 0;
  border: inset 0.4em;
  content: '';
  border-bottom-width: 0;
  border-top-style: solid;
  border-color: #ffffff transparent transparent;
  position: relative;
  top: 0.4em;
  display: inline-block;
  float: right;
  margin-left: 1em;
}

.button.dropdown.hollow::after {
  border-top-color: #9a0941;
}

.button.dropdown.hollow.primary::after {
  border-top-color: #9a0941;
}

.button.dropdown.hollow.secondary::after {
  border-top-color: #333333;
}

.button.dropdown.hollow.success::after {
  border-top-color: #3adb76;
}

.button.dropdown.hollow.warning::after {
  border-top-color: #ffae00;
}

.button.dropdown.hollow.alert::after {
  border-top-color: #cc4b37;
}

.button.arrow-only::after {
  top: -0.1em;
  float: none;
  margin-left: 0;
}

a.button:hover, a.button:focus {
  text-decoration: none;
}

.accordion {
  margin-left: 0;
  background: transparent;
  list-style-type: none;
}

.accordion[disabled] .accordion-title {
  cursor: not-allowed;
}

.accordion-item:first-child > :first-child {
  -webkit-border-radius: 0 0 0 0;
          border-radius: 0 0 0 0;
}

.accordion-item:last-child > :last-child {
  -webkit-border-radius: 0 0 0 0;
          border-radius: 0 0 0 0;
}

.accordion-title {
  position: relative;
  display: block;
  padding: 1.25rem 1.875rem 1.25rem 0.9375rem;
  border: none;
  border-bottom: 0;
  font-size: 1.125rem;
  line-height: 1;
  color: #000000;
}

:last-child:not(.is-active) > .accordion-title {
  border-bottom: none;
  -webkit-border-radius: 0 0 0 0;
          border-radius: 0 0 0 0;
}

.accordion-title:hover, .accordion-title:focus {
  background-color: #E5E5E5;
}

.accordion-content {
  display: none;
  padding: 0;
  border: none;
  border-bottom: 0;
  background-color: transparent;
  color: inherit;
}

:last-child > .accordion-content:last-child {
  border-bottom: none;
}

.accordion-menu li {
  width: 100%;
}

.accordion-menu a {
  padding: 0.7rem 1rem;
}

.accordion-menu .is-accordion-submenu a {
  padding: 0.7rem 1rem;
}

.accordion-menu .nested.is-accordion-submenu {
  margin-right: 0;
  margin-left: 1rem;
}

.accordion-menu.align-right .nested.is-accordion-submenu {
  margin-right: 1rem;
  margin-left: 0;
}

.accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle) > a {
  position: relative;
}

.accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle) > a::after {
  display: block;
  width: 0;
  height: 0;
  border: inset 6px;
  content: '';
  border-bottom-width: 0;
  border-top-style: solid;
  border-color: #9a0941 transparent transparent;
  position: absolute;
  top: 50%;
  margin-top: -3px;
  right: 1rem;
}

.accordion-menu.align-left .is-accordion-submenu-parent > a::after {
  left: auto;
  right: 1rem;
}

.accordion-menu.align-right .is-accordion-submenu-parent > a::after {
  right: auto;
  left: 1rem;
}

.accordion-menu .is-accordion-submenu-parent[aria-expanded='true'] > a::after {
  -webkit-transform: rotate(180deg);
      -ms-transform: rotate(180deg);
          transform: rotate(180deg);
  -webkit-transform-origin: 50% 50%;
      -ms-transform-origin: 50% 50%;
          transform-origin: 50% 50%;
}

.is-accordion-submenu-parent {
  position: relative;
}

.has-submenu-toggle > a {
  margin-right: 40px;
}

.submenu-toggle {
  position: absolute;
  top: 0;
  right: 0;
  cursor: pointer;
  width: 40px;
  height: 40px;
}

.submenu-toggle::after {
  display: block;
  width: 0;
  height: 0;
  border: inset 6px;
  content: '';
  border-bottom-width: 0;
  border-top-style: solid;
  border-color: #9a0941 transparent transparent;
  top: 0;
  bottom: 0;
  margin: auto;
}

.submenu-toggle[aria-expanded='true']::after {
  -webkit-transform: scaleY(-1);
      -ms-transform: scaleY(-1);
          transform: scaleY(-1);
  -webkit-transform-origin: 50% 50%;
      -ms-transform-origin: 50% 50%;
          transform-origin: 50% 50%;
}

.submenu-toggle-text {
  position: absolute !important;
  width: 1px;
  height: 1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  -webkit-clip-path: inset(50%);
          clip-path: inset(50%);
  border: 0;
}

.badge {
  display: inline-block;
  min-width: 2.1em;
  padding: 0.3em;
  -webkit-border-radius: 50%;
          border-radius: 50%;
  font-size: 0.6rem;
  text-align: center;
  background: #9a0941;
  color: #ffffff;
}

.badge.primary {
  background: #9a0941;
  color: #ffffff;
}

.badge.secondary {
  background: #333333;
  color: #ffffff;
}

.badge.success {
  background: #3adb76;
  color: #000000;
}

.badge.warning {
  background: #ffae00;
  color: #000000;
}

.badge.alert {
  background: #cc4b37;
  color: #000000;
}

.breadcrumbs {
  margin: 0 0 1rem 0;
  list-style: none;
}

.breadcrumbs::before, .breadcrumbs::after {
  display: table;
  content: ' ';
  -webkit-flex-basis: 0;
      -ms-flex-preferred-size: 0;
          flex-basis: 0;
  -webkit-box-ordinal-group: 2;
  -webkit-order: 1;
      -ms-flex-order: 1;
          order: 1;
}

.breadcrumbs::after {
  clear: both;
}

.breadcrumbs li {
  float: left;
  font-size: 0.6875rem;
  color: #000000;
  cursor: default;
  text-transform: uppercase;
}

.breadcrumbs li:not(:last-child)::after {
  position: relative;
  margin: 0 0.75rem;
  opacity: 1;
  content: "/";
  color: #eeeeee;
}

.breadcrumbs a {
  color: #9a0941;
}

.breadcrumbs a:hover {
  text-decoration: underline;
}

.breadcrumbs .disabled {
  color: #eeeeee;
  cursor: not-allowed;
}

.button-group {
  margin-bottom: 1rem;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-flex-wrap: nowrap;
      -ms-flex-wrap: nowrap;
          flex-wrap: nowrap;
  -webkit-box-align: stretch;
  -webkit-align-items: stretch;
      -ms-flex-align: stretch;
          align-items: stretch;
}

.button-group::before, .button-group::after {
  display: table;
  content: ' ';
  -webkit-flex-basis: 0;
      -ms-flex-preferred-size: 0;
          flex-basis: 0;
  -webkit-box-ordinal-group: 2;
  -webkit-order: 1;
      -ms-flex-order: 1;
          order: 1;
}

.button-group::after {
  clear: both;
}

.button-group .button {
  margin: 0;
  margin-right: 1px;
  margin-bottom: 1px;
  font-size: 0.9rem;
  -webkit-box-flex: 0;
  -webkit-flex: 0 0 auto;
      -ms-flex: 0 0 auto;
          flex: 0 0 auto;
}

.button-group .button:last-child {
  margin-right: 0;
}

.button-group.tiny .button {
  font-size: 0.6rem;
}

.button-group.small .button {
  font-size: 0.75rem;
}

.button-group.large .button {
  font-size: 1.25rem;
}

.button-group.expanded .button {
  -webkit-box-flex: 1;
  -webkit-flex: 1 1 0px;
      -ms-flex: 1 1 0px;
          flex: 1 1 0px;
}

.button-group.primary .button {
  background-color: #9a0941;
  color: #ffffff;
}

.button-group.primary .button:hover, .button-group.primary .button:focus {
  background-color: #7b0734;
  color: #ffffff;
}

.button-group.secondary .button {
  background-color: #333333;
  color: #ffffff;
}

.button-group.secondary .button:hover, .button-group.secondary .button:focus {
  background-color: #292929;
  color: #ffffff;
}

.button-group.success .button {
  background-color: #3adb76;
  color: #000000;
}

.button-group.success .button:hover, .button-group.success .button:focus {
  background-color: #22bb5b;
  color: #000000;
}

.button-group.warning .button {
  background-color: #ffae00;
  color: #000000;
}

.button-group.warning .button:hover, .button-group.warning .button:focus {
  background-color: #cc8b00;
  color: #000000;
}

.button-group.alert .button {
  background-color: #cc4b37;
  color: #000000;
}

.button-group.alert .button:hover, .button-group.alert .button:focus {
  background-color: #a53b2a;
  color: #000000;
}

.button-group.stacked, .button-group.stacked-for-small, .button-group.stacked-for-medium {
  -webkit-flex-wrap: wrap;
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
}

.button-group.stacked .button, .button-group.stacked-for-small .button, .button-group.stacked-for-medium .button {
  -webkit-box-flex: 0;
  -webkit-flex: 0 0 100%;
      -ms-flex: 0 0 100%;
          flex: 0 0 100%;
}

.button-group.stacked .button:last-child, .button-group.stacked-for-small .button:last-child, .button-group.stacked-for-medium .button:last-child {
  margin-bottom: 0;
}

@media print, screen and (min-width: 48em) {
  .button-group.stacked-for-small .button {
    -webkit-box-flex: 1;
    -webkit-flex: 1 1 0px;
        -ms-flex: 1 1 0px;
            flex: 1 1 0px;
    margin-bottom: 0;
  }
}

@media print, screen and (min-width: 64em) {
  .button-group.stacked-for-medium .button {
    -webkit-box-flex: 1;
    -webkit-flex: 1 1 0px;
        -ms-flex: 1 1 0px;
            flex: 1 1 0px;
    margin-bottom: 0;
  }
}

@media screen and (max-width: 47.9375em) {
  .button-group.stacked-for-small.expanded {
    display: block;
  }
  .button-group.stacked-for-small.expanded .button {
    display: block;
    margin-right: 0;
  }
}

.callout {
  position: relative;
  margin: 0 0 1rem 0;
  padding: 1rem;
  border: 1px solid rgba(0, 0, 0, 0.25);
  -webkit-border-radius: 0;
          border-radius: 0;
  background-color: white;
  color: #000000;
}

.callout > :first-child {
  margin-top: 0;
}

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

.callout.primary {
  background-color: #fccee0;
  color: #000000;
}

.callout.secondary {
  background-color: #e0e0e0;
  color: #000000;
}

.callout.success {
  background-color: #e1faea;
  color: #000000;
}

.callout.warning {
  background-color: #fff3d9;
  color: #000000;
}

.callout.alert {
  background-color: #f7e4e1;
  color: #000000;
}

.callout.small {
  padding-top: 0.5rem;
  padding-right: 0.5rem;
  padding-bottom: 0.5rem;
  padding-left: 0.5rem;
}

.callout.large {
  padding-top: 3rem;
  padding-right: 3rem;
  padding-bottom: 3rem;
  padding-left: 3rem;
}

.card {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
      -ms-flex-direction: column;
          flex-direction: column;
  -webkit-box-flex: 1;
  -webkit-flex-grow: 1;
      -ms-flex-positive: 1;
          flex-grow: 1;
  margin-bottom: 1rem;
  border: 1px solid #f5f5f5;
  -webkit-border-radius: 0;
          border-radius: 0;
  background: #ffffff;
  -webkit-box-shadow: none;
          box-shadow: none;
  overflow: hidden;
  color: #000000;
}

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

.card-divider {
  -webkit-box-flex: 0;
  -webkit-flex: 0 1 auto;
      -ms-flex: 0 1 auto;
          flex: 0 1 auto;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  padding: 1rem;
  background: #f5f5f5;
}

.card-divider > :last-child {
  margin-bottom: 0;
}

.card-section {
  -webkit-box-flex: 1;
  -webkit-flex: 1 0 auto;
      -ms-flex: 1 0 auto;
          flex: 1 0 auto;
  padding: 1rem;
}

.card-section > :last-child {
  margin-bottom: 0;
}

.card-image {
  min-height: 1px;
}

.close-button {
  position: absolute;
  color: #333333;
  cursor: pointer;
}

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

.close-button:hover, .close-button:focus {
  color: #000000;
}

.close-button.small {
  right: 0.66rem;
  top: 0.33em;
  font-size: 1.5em;
  line-height: 1;
}

.close-button, .close-button.medium {
  right: 1rem;
  top: 0.5rem;
  font-size: 2em;
  line-height: 1;
}

.menu {
  padding: 0;
  margin: 0;
  list-style: none;
  position: relative;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-flex-wrap: wrap;
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
}

[data-whatinput='mouse'] .menu li {
  outline: 0;
}

.menu a,
.menu .button {
  line-height: 1;
  text-decoration: none;
  display: block;
  padding: 0.7rem 1rem;
}

.menu input,
.menu select,
.menu a,
.menu button {
  margin-bottom: 0;
}

.menu input {
  display: inline-block;
}

.menu, .menu.horizontal {
  -webkit-flex-wrap: wrap;
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
  -webkit-flex-direction: row;
      -ms-flex-direction: row;
          flex-direction: row;
}

.menu.vertical {
  -webkit-flex-wrap: nowrap;
      -ms-flex-wrap: nowrap;
          flex-wrap: nowrap;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
      -ms-flex-direction: column;
          flex-direction: column;
}

.menu.expanded li {
  -webkit-box-flex: 1;
  -webkit-flex: 1 1 0px;
      -ms-flex: 1 1 0px;
          flex: 1 1 0px;
}

.menu.simple {
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
}

.menu.simple li + li {
  margin-left: 1rem;
}

.menu.simple a {
  padding: 0;
}

@media print, screen and (min-width: 48em) {
  .menu.medium-horizontal {
    -webkit-flex-wrap: wrap;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
    -webkit-flex-direction: row;
        -ms-flex-direction: row;
            flex-direction: row;
  }
  .menu.medium-vertical {
    -webkit-flex-wrap: nowrap;
        -ms-flex-wrap: nowrap;
            flex-wrap: nowrap;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
    -webkit-flex-direction: column;
        -ms-flex-direction: column;
            flex-direction: column;
  }
  .menu.medium-expanded li {
    -webkit-box-flex: 1;
    -webkit-flex: 1 1 0px;
        -ms-flex: 1 1 0px;
            flex: 1 1 0px;
  }
  .menu.medium-simple li {
    -webkit-box-flex: 1;
    -webkit-flex: 1 1 0px;
        -ms-flex: 1 1 0px;
            flex: 1 1 0px;
  }
}

@media print, screen and (min-width: 64em) {
  .menu.large-horizontal {
    -webkit-flex-wrap: wrap;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
    -webkit-flex-direction: row;
        -ms-flex-direction: row;
            flex-direction: row;
  }
  .menu.large-vertical {
    -webkit-flex-wrap: nowrap;
        -ms-flex-wrap: nowrap;
            flex-wrap: nowrap;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
    -webkit-flex-direction: column;
        -ms-flex-direction: column;
            flex-direction: column;
  }
  .menu.large-expanded li {
    -webkit-box-flex: 1;
    -webkit-flex: 1 1 0px;
        -ms-flex: 1 1 0px;
            flex: 1 1 0px;
  }
  .menu.large-simple li {
    -webkit-box-flex: 1;
    -webkit-flex: 1 1 0px;
        -ms-flex: 1 1 0px;
            flex: 1 1 0px;
  }
}

.menu.nested {
  margin-right: 0;
  margin-left: 1rem;
}

.menu.icons a {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
}

.menu.icon-top a, .menu.icon-right a, .menu.icon-bottom a, .menu.icon-left a {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
}

.menu.icon-left li a {
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
  -webkit-flex-flow: row nowrap;
      -ms-flex-flow: row nowrap;
          flex-flow: row nowrap;
}

.menu.icon-left li a img,
.menu.icon-left li a i,
.menu.icon-left li a svg {
  margin-right: 0.25rem;
}

.menu.icon-right li a {
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
  -webkit-flex-flow: row nowrap;
      -ms-flex-flow: row nowrap;
          flex-flow: row nowrap;
}

.menu.icon-right li a img,
.menu.icon-right li a i,
.menu.icon-right li a svg {
  margin-left: 0.25rem;
}

.menu.icon-top li a {
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-flow: column nowrap;
      -ms-flex-flow: column nowrap;
          flex-flow: column nowrap;
}

.menu.icon-top li a img,
.menu.icon-top li a i,
.menu.icon-top li a svg {
  -webkit-align-self: stretch;
      -ms-flex-item-align: stretch;
          align-self: stretch;
  margin-bottom: 0.25rem;
  text-align: center;
}

.menu.icon-bottom li a {
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-flow: column nowrap;
      -ms-flex-flow: column nowrap;
          flex-flow: column nowrap;
}

.menu.icon-bottom li a img,
.menu.icon-bottom li a i,
.menu.icon-bottom li a svg {
  -webkit-align-self: stretch;
      -ms-flex-item-align: stretch;
          align-self: stretch;
  margin-bottom: 0.25rem;
  text-align: center;
}

.menu .is-active > a {
  background: #9a0941;
  color: #ffffff;
}

.menu .active > a {
  background: #9a0941;
  color: #ffffff;
}

.menu.align-left {
  -webkit-box-pack: start;
  -webkit-justify-content: flex-start;
      -ms-flex-pack: start;
          justify-content: flex-start;
}

.menu.align-right li {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: end;
  -webkit-justify-content: flex-end;
      -ms-flex-pack: end;
          justify-content: flex-end;
}

.menu.align-right li .submenu li {
  -webkit-box-pack: start;
  -webkit-justify-content: flex-start;
      -ms-flex-pack: start;
          justify-content: flex-start;
}

.menu.align-right.vertical li {
  display: block;
  text-align: right;
}

.menu.align-right.vertical li .submenu li {
  text-align: right;
}

.menu.align-right .nested {
  margin-right: 1rem;
  margin-left: 0;
}

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

.menu.align-center li .submenu li {
  -webkit-box-pack: start;
  -webkit-justify-content: flex-start;
      -ms-flex-pack: start;
          justify-content: flex-start;
}

.menu .menu-text {
  padding: 0.7rem 1rem;
  font-weight: bold;
  line-height: 1;
  color: inherit;
}

.menu-centered > .menu {
  -webkit-box-pack: center;
  -webkit-justify-content: center;
      -ms-flex-pack: center;
          justify-content: center;
}

.menu-centered > .menu li {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
  -webkit-justify-content: center;
      -ms-flex-pack: center;
          justify-content: center;
}

.menu-centered > .menu li .submenu li {
  -webkit-box-pack: start;
  -webkit-justify-content: flex-start;
      -ms-flex-pack: start;
          justify-content: flex-start;
}

.no-js [data-responsive-menu] ul {
  display: none;
}

.menu-icon {
  position: relative;
  display: inline-block;
  vertical-align: middle;
  width: 20px;
  height: 16px;
  cursor: pointer;
}

.menu-icon::after {
  position: absolute;
  top: 0;
  left: 0;
  display: block;
  width: 100%;
  height: 2px;
  background: #ffffff;
  -webkit-box-shadow: 0 7px 0 #ffffff, 0 14px 0 #ffffff;
          box-shadow: 0 7px 0 #ffffff, 0 14px 0 #ffffff;
  content: '';
}

.menu-icon:hover::after {
  background: #eeeeee;
  -webkit-box-shadow: 0 7px 0 #eeeeee, 0 14px 0 #eeeeee;
          box-shadow: 0 7px 0 #eeeeee, 0 14px 0 #eeeeee;
}

.menu-icon.dark {
  position: relative;
  display: inline-block;
  vertical-align: middle;
  width: 20px;
  height: 16px;
  cursor: pointer;
}

.menu-icon.dark::after {
  position: absolute;
  top: 0;
  left: 0;
  display: block;
  width: 100%;
  height: 2px;
  background: #000000;
  -webkit-box-shadow: 0 7px 0 #000000, 0 14px 0 #000000;
          box-shadow: 0 7px 0 #000000, 0 14px 0 #000000;
  content: '';
}

.menu-icon.dark:hover::after {
  background: #333333;
  -webkit-box-shadow: 0 7px 0 #333333, 0 14px 0 #333333;
          box-shadow: 0 7px 0 #333333, 0 14px 0 #333333;
}

.is-drilldown {
  position: relative;
  overflow: hidden;
}

.is-drilldown li {
  display: block;
}

.is-drilldown.animate-height {
  -webkit-transition: height 0.5s;
  -o-transition: height 0.5s;
  transition: height 0.5s;
}

.drilldown a {
  padding: 0.7rem 1rem;
  background: #ffffff;
}

.drilldown .is-drilldown-submenu {
  position: absolute;
  top: 0;
  left: 100%;
  z-index: -1;
  width: 100%;
  background: #ffffff;
  -webkit-transition: -webkit-transform 0.15s linear;
  transition: -webkit-transform 0.15s linear;
  -o-transition: transform 0.15s linear;
  transition: transform 0.15s linear;
  transition: transform 0.15s linear, -webkit-transform 0.15s linear;
}

.drilldown .is-drilldown-submenu.is-active {
  z-index: 1;
  display: block;
  -webkit-transform: translateX(-100%);
      -ms-transform: translateX(-100%);
          transform: translateX(-100%);
}

.drilldown .is-drilldown-submenu.is-closing {
  -webkit-transform: translateX(100%);
      -ms-transform: translateX(100%);
          transform: translateX(100%);
}

.drilldown .is-drilldown-submenu a {
  padding: 0.7rem 1rem;
}

.drilldown .nested.is-drilldown-submenu {
  margin-right: 0;
  margin-left: 0;
}

.drilldown .drilldown-submenu-cover-previous {
  min-height: 100%;
}

.drilldown .is-drilldown-submenu-parent > a {
  position: relative;
}

.drilldown .is-drilldown-submenu-parent > a::after {
  position: absolute;
  top: 50%;
  margin-top: -6px;
  right: 1rem;
  display: block;
  width: 0;
  height: 0;
  border: inset 6px;
  content: '';
  border-right-width: 0;
  border-left-style: solid;
  border-color: transparent transparent transparent #9a0941;
}

.drilldown.align-left .is-drilldown-submenu-parent > a::after {
  left: auto;
  right: 1rem;
  display: block;
  width: 0;
  height: 0;
  border: inset 6px;
  content: '';
  border-right-width: 0;
  border-left-style: solid;
  border-color: transparent transparent transparent #9a0941;
}

.drilldown.align-right .is-drilldown-submenu-parent > a::after {
  right: auto;
  left: 1rem;
  display: block;
  width: 0;
  height: 0;
  border: inset 6px;
  content: '';
  border-left-width: 0;
  border-right-style: solid;
  border-color: transparent #9a0941 transparent transparent;
}

.drilldown .js-drilldown-back > a::before {
  display: block;
  width: 0;
  height: 0;
  border: inset 6px;
  content: '';
  border-left-width: 0;
  border-right-style: solid;
  border-color: transparent #9a0941 transparent transparent;
  border-left-width: 0;
  display: inline-block;
  vertical-align: middle;
  margin-right: 0.75rem;
  border-left-width: 0;
}

.dropdown-pane {
  position: absolute;
  z-index: 10;
  width: 300px;
  padding: 1rem;
  visibility: hidden;
  display: none;
  border: 1px solid #eeeeee;
  -webkit-border-radius: 0;
          border-radius: 0;
  background-color: #ffffff;
  font-size: 1rem;
}

.dropdown-pane.is-opening {
  display: block;
}

.dropdown-pane.is-open {
  visibility: visible;
  display: block;
}

.dropdown-pane.tiny {
  width: 100px;
}

.dropdown-pane.small {
  width: 200px;
}

.dropdown-pane.large {
  width: 400px;
}

.dropdown.menu > li.opens-left > .is-dropdown-submenu {
  top: 100%;
  right: 0;
  left: auto;
}

.dropdown.menu > li.opens-right > .is-dropdown-submenu {
  top: 100%;
  right: auto;
  left: 0;
}

.dropdown.menu > li.is-dropdown-submenu-parent > a {
  position: relative;
  padding-right: 1.5rem;
}

.dropdown.menu > li.is-dropdown-submenu-parent > a::after {
  display: block;
  width: 0;
  height: 0;
  border: inset 6px;
  content: '';
  border-bottom-width: 0;
  border-top-style: solid;
  border-color: #9a0941 transparent transparent;
  right: 5px;
  left: auto;
  margin-top: -3px;
}

.dropdown.menu a {
  padding: 0.7rem 1rem;
}

[data-whatinput='mouse'] .dropdown.menu a {
  outline: 0;
}

.dropdown.menu .is-active > a {
  background: transparent;
  color: #9a0941;
}

.no-js .dropdown.menu ul {
  display: none;
}

.dropdown.menu .nested.is-dropdown-submenu {
  margin-right: 0;
  margin-left: 0;
}

.dropdown.menu.vertical > li .is-dropdown-submenu {
  top: 0;
}

.dropdown.menu.vertical > li.opens-left > .is-dropdown-submenu {
  right: 100%;
  left: auto;
  top: 0;
}

.dropdown.menu.vertical > li.opens-right > .is-dropdown-submenu {
  right: auto;
  left: 100%;
}

.dropdown.menu.vertical > li > a::after {
  right: 14px;
}

.dropdown.menu.vertical > li.opens-left > a::after {
  right: auto;
  left: 5px;
  display: block;
  width: 0;
  height: 0;
  border: inset 6px;
  content: '';
  border-left-width: 0;
  border-right-style: solid;
  border-color: transparent #9a0941 transparent transparent;
}

.dropdown.menu.vertical > li.opens-right > a::after {
  display: block;
  width: 0;
  height: 0;
  border: inset 6px;
  content: '';
  border-right-width: 0;
  border-left-style: solid;
  border-color: transparent transparent transparent #9a0941;
}

@media print, screen and (min-width: 48em) {
  .dropdown.menu.medium-horizontal > li.opens-left > .is-dropdown-submenu {
    top: 100%;
    right: 0;
    left: auto;
  }
  .dropdown.menu.medium-horizontal > li.opens-right > .is-dropdown-submenu {
    top: 100%;
    right: auto;
    left: 0;
  }
  .dropdown.menu.medium-horizontal > li.is-dropdown-submenu-parent > a {
    position: relative;
    padding-right: 1.5rem;
  }
  .dropdown.menu.medium-horizontal > li.is-dropdown-submenu-parent > a::after {
    display: block;
    width: 0;
    height: 0;
    border: inset 6px;
    content: '';
    border-bottom-width: 0;
    border-top-style: solid;
    border-color: #9a0941 transparent transparent;
    right: 5px;
    left: auto;
    margin-top: -3px;
  }
  .dropdown.menu.medium-vertical > li .is-dropdown-submenu {
    top: 0;
  }
  .dropdown.menu.medium-vertical > li.opens-left > .is-dropdown-submenu {
    right: 100%;
    left: auto;
    top: 0;
  }
  .dropdown.menu.medium-vertical > li.opens-right > .is-dropdown-submenu {
    right: auto;
    left: 100%;
  }
  .dropdown.menu.medium-vertical > li > a::after {
    right: 14px;
  }
  .dropdown.menu.medium-vertical > li.opens-left > a::after {
    right: auto;
    left: 5px;
    display: block;
    width: 0;
    height: 0;
    border: inset 6px;
    content: '';
    border-left-width: 0;
    border-right-style: solid;
    border-color: transparent #9a0941 transparent transparent;
  }
  .dropdown.menu.medium-vertical > li.opens-right > a::after {
    display: block;
    width: 0;
    height: 0;
    border: inset 6px;
    content: '';
    border-right-width: 0;
    border-left-style: solid;
    border-color: transparent transparent transparent #9a0941;
  }
}

@media print, screen and (min-width: 64em) {
  .dropdown.menu.large-horizontal > li.opens-left > .is-dropdown-submenu {
    top: 100%;
    right: 0;
    left: auto;
  }
  .dropdown.menu.large-horizontal > li.opens-right > .is-dropdown-submenu {
    top: 100%;
    right: auto;
    left: 0;
  }
  .dropdown.menu.large-horizontal > li.is-dropdown-submenu-parent > a {
    position: relative;
    padding-right: 1.5rem;
  }
  .dropdown.menu.large-horizontal > li.is-dropdown-submenu-parent > a::after {
    display: block;
    width: 0;
    height: 0;
    border: inset 6px;
    content: '';
    border-bottom-width: 0;
    border-top-style: solid;
    border-color: #9a0941 transparent transparent;
    right: 5px;
    left: auto;
    margin-top: -3px;
  }
  .dropdown.menu.large-vertical > li .is-dropdown-submenu {
    top: 0;
  }
  .dropdown.menu.large-vertical > li.opens-left > .is-dropdown-submenu {
    right: 100%;
    left: auto;
    top: 0;
  }
  .dropdown.menu.large-vertical > li.opens-right > .is-dropdown-submenu {
    right: auto;
    left: 100%;
  }
  .dropdown.menu.large-vertical > li > a::after {
    right: 14px;
  }
  .dropdown.menu.large-vertical > li.opens-left > a::after {
    right: auto;
    left: 5px;
    display: block;
    width: 0;
    height: 0;
    border: inset 6px;
    content: '';
    border-left-width: 0;
    border-right-style: solid;
    border-color: transparent #9a0941 transparent transparent;
  }
  .dropdown.menu.large-vertical > li.opens-right > a::after {
    display: block;
    width: 0;
    height: 0;
    border: inset 6px;
    content: '';
    border-right-width: 0;
    border-left-style: solid;
    border-color: transparent transparent transparent #9a0941;
  }
}

.dropdown.menu.align-right .is-dropdown-submenu.first-sub {
  top: 100%;
  right: 0;
  left: auto;
}

.is-dropdown-menu.vertical {
  width: 100px;
}

.is-dropdown-menu.vertical.align-right {
  float: right;
}

.is-dropdown-submenu-parent {
  position: relative;
}

.is-dropdown-submenu-parent a::after {
  position: absolute;
  top: 50%;
  right: 5px;
  left: auto;
  margin-top: -6px;
}

.is-dropdown-submenu-parent.opens-inner > .is-dropdown-submenu {
  top: 100%;
  left: auto;
}

.is-dropdown-submenu-parent.opens-left > .is-dropdown-submenu {
  right: 100%;
  left: auto;
}

.is-dropdown-submenu-parent.opens-right > .is-dropdown-submenu {
  right: auto;
  left: 100%;
}

.is-dropdown-submenu {
  position: absolute;
  top: 0;
  left: 100%;
  z-index: 1;
  display: none;
  min-width: 200px;
  border: 1px solid #eeeeee;
  background: #ffffff;
}

.dropdown .is-dropdown-submenu a {
  padding: 0.7rem 1rem;
}

.is-dropdown-submenu .is-dropdown-submenu-parent > a::after {
  right: 14px;
}

.is-dropdown-submenu .is-dropdown-submenu-parent.opens-left > a::after {
  right: auto;
  left: 5px;
  display: block;
  width: 0;
  height: 0;
  border: inset 6px;
  content: '';
  border-left-width: 0;
  border-right-style: solid;
  border-color: transparent #9a0941 transparent transparent;
}

.is-dropdown-submenu .is-dropdown-submenu-parent.opens-right > a::after {
  display: block;
  width: 0;
  height: 0;
  border: inset 6px;
  content: '';
  border-right-width: 0;
  border-left-style: solid;
  border-color: transparent transparent transparent #9a0941;
}

.is-dropdown-submenu .is-dropdown-submenu {
  margin-top: -1px;
}

.is-dropdown-submenu > li {
  width: 100%;
}

.is-dropdown-submenu.js-dropdown-active {
  display: block !important;
}

.responsive-embed,
.flex-video {
  position: relative;
  height: 0;
  margin-bottom: 1rem;
  padding-bottom: 75%;
  overflow: hidden;
}

.responsive-embed iframe,
.responsive-embed object,
.responsive-embed embed,
.responsive-embed video,
.flex-video iframe,
.flex-video object,
.flex-video embed,
.flex-video video {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

.responsive-embed.widescreen,
.flex-video.widescreen {
  padding-bottom: 56.25%;
}

.label {
  display: inline-block;
  padding: 0.33333rem 0.5rem;
  -webkit-border-radius: 0;
          border-radius: 0;
  font-size: 0.8rem;
  line-height: 1;
  white-space: nowrap;
  cursor: default;
  background: #9a0941;
  color: #ffffff;
}

.label.primary {
  background: #9a0941;
  color: #ffffff;
}

.label.secondary {
  background: #333333;
  color: #ffffff;
}

.label.success {
  background: #3adb76;
  color: #000000;
}

.label.warning {
  background: #ffae00;
  color: #000000;
}

.label.alert {
  background: #cc4b37;
  color: #000000;
}

.media-object {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  margin-bottom: 1rem;
  -webkit-flex-wrap: nowrap;
      -ms-flex-wrap: nowrap;
          flex-wrap: nowrap;
}

.media-object img {
  max-width: none;
}

@media screen and (max-width: 47.9375em) {
  .media-object.stack-for-small {
    -webkit-flex-wrap: wrap;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
  }
}

@media screen and (max-width: 47.9375em) {
  .media-object.stack-for-small .media-object-section {
    padding: 0;
    padding-bottom: 1rem;
    -webkit-flex-basis: 100%;
        -ms-flex-preferred-size: 100%;
            flex-basis: 100%;
    max-width: 100%;
  }
  .media-object.stack-for-small .media-object-section img {
    width: 100%;
  }
}

.media-object-section {
  -webkit-box-flex: 0;
  -webkit-flex: 0 1 auto;
      -ms-flex: 0 1 auto;
          flex: 0 1 auto;
}

.media-object-section:first-child {
  padding-right: 1rem;
}

.media-object-section:last-child:not(:nth-child(2)) {
  padding-left: 1rem;
}

.media-object-section > :last-child {
  margin-bottom: 0;
}

.media-object-section.main-section {
  -webkit-box-flex: 1;
  -webkit-flex: 1 1 0px;
      -ms-flex: 1 1 0px;
          flex: 1 1 0px;
}

.is-off-canvas-open {
  overflow: hidden;
}

.js-off-canvas-overlay {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 11;
  width: 100%;
  height: 100%;
  -webkit-transition: opacity 0.5s ease, visibility 0.5s ease;
  -o-transition: opacity 0.5s ease, visibility 0.5s ease;
  transition: opacity 0.5s ease, visibility 0.5s ease;
  background: rgba(255, 255, 255, 0.25);
  opacity: 0;
  visibility: hidden;
  overflow: hidden;
}

.js-off-canvas-overlay.is-visible {
  opacity: 1;
  visibility: visible;
}

.js-off-canvas-overlay.is-closable {
  cursor: pointer;
}

.js-off-canvas-overlay.is-overlay-absolute {
  position: absolute;
}

.js-off-canvas-overlay.is-overlay-fixed {
  position: fixed;
}

.off-canvas-wrapper {
  position: relative;
  overflow: hidden;
}

.off-canvas {
  position: fixed;
  z-index: 12;
  -webkit-transition: -webkit-transform 0.5s ease;
  transition: -webkit-transform 0.5s ease;
  -o-transition: transform 0.5s ease;
  transition: transform 0.5s ease;
  transition: transform 0.5s ease, -webkit-transform 0.5s ease;
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden;
  background: #f5f5f5;
}

[data-whatinput='mouse'] .off-canvas {
  outline: 0;
}

.off-canvas.is-transition-push {
  z-index: 12;
}

.off-canvas.is-closed {
  visibility: hidden;
}

.off-canvas.is-transition-overlap {
  z-index: 13;
}

.off-canvas.is-transition-overlap.is-open {
  -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.7);
          box-shadow: 0 0 10px rgba(0, 0, 0, 0.7);
}

.off-canvas.is-open {
  -webkit-transform: translate(0, 0);
      -ms-transform: translate(0, 0);
          transform: translate(0, 0);
}

.off-canvas-absolute {
  position: absolute;
  z-index: 12;
  -webkit-transition: -webkit-transform 0.5s ease;
  transition: -webkit-transform 0.5s ease;
  -o-transition: transform 0.5s ease;
  transition: transform 0.5s ease;
  transition: transform 0.5s ease, -webkit-transform 0.5s ease;
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden;
  background: #f5f5f5;
}

[data-whatinput='mouse'] .off-canvas-absolute {
  outline: 0;
}

.off-canvas-absolute.is-transition-push {
  z-index: 12;
}

.off-canvas-absolute.is-closed {
  visibility: hidden;
}

.off-canvas-absolute.is-transition-overlap {
  z-index: 13;
}

.off-canvas-absolute.is-transition-overlap.is-open {
  -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.7);
          box-shadow: 0 0 10px rgba(0, 0, 0, 0.7);
}

.off-canvas-absolute.is-open {
  -webkit-transform: translate(0, 0);
      -ms-transform: translate(0, 0);
          transform: translate(0, 0);
}

.position-left {
  top: 0;
  left: 0;
  height: 100%;
  overflow-y: auto;
  width: 250px;
  -webkit-transform: translateX(-250px);
      -ms-transform: translateX(-250px);
          transform: translateX(-250px);
}

.off-canvas-content .off-canvas.position-left {
  -webkit-transform: translateX(-250px);
      -ms-transform: translateX(-250px);
          transform: translateX(-250px);
}

.off-canvas-content .off-canvas.position-left.is-transition-overlap.is-open {
  -webkit-transform: translate(0, 0);
      -ms-transform: translate(0, 0);
          transform: translate(0, 0);
}

.off-canvas-content.is-open-left.has-transition-push {
  -webkit-transform: translateX(250px);
      -ms-transform: translateX(250px);
          transform: translateX(250px);
}

.position-left.is-transition-push {
  -webkit-box-shadow: inset -13px 0 20px -13px rgba(0, 0, 0, 0.25);
          box-shadow: inset -13px 0 20px -13px rgba(0, 0, 0, 0.25);
}

.position-right {
  top: 0;
  right: 0;
  height: 100%;
  overflow-y: auto;
  width: 250px;
  -webkit-transform: translateX(250px);
      -ms-transform: translateX(250px);
          transform: translateX(250px);
}

.off-canvas-content .off-canvas.position-right {
  -webkit-transform: translateX(250px);
      -ms-transform: translateX(250px);
          transform: translateX(250px);
}

.off-canvas-content .off-canvas.position-right.is-transition-overlap.is-open {
  -webkit-transform: translate(0, 0);
      -ms-transform: translate(0, 0);
          transform: translate(0, 0);
}

.off-canvas-content.is-open-right.has-transition-push {
  -webkit-transform: translateX(-250px);
      -ms-transform: translateX(-250px);
          transform: translateX(-250px);
}

.position-right.is-transition-push {
  -webkit-box-shadow: inset 13px 0 20px -13px rgba(0, 0, 0, 0.25);
          box-shadow: inset 13px 0 20px -13px rgba(0, 0, 0, 0.25);
}

.position-top {
  top: 0;
  left: 0;
  width: 100%;
  overflow-x: auto;
  height: 250px;
  -webkit-transform: translateY(-250px);
      -ms-transform: translateY(-250px);
          transform: translateY(-250px);
}

.off-canvas-content .off-canvas.position-top {
  -webkit-transform: translateY(-250px);
      -ms-transform: translateY(-250px);
          transform: translateY(-250px);
}

.off-canvas-content .off-canvas.position-top.is-transition-overlap.is-open {
  -webkit-transform: translate(0, 0);
      -ms-transform: translate(0, 0);
          transform: translate(0, 0);
}

.off-canvas-content.is-open-top.has-transition-push {
  -webkit-transform: translateY(250px);
      -ms-transform: translateY(250px);
          transform: translateY(250px);
}

.position-top.is-transition-push {
  -webkit-box-shadow: inset 0 -13px 20px -13px rgba(0, 0, 0, 0.25);
          box-shadow: inset 0 -13px 20px -13px rgba(0, 0, 0, 0.25);
}

.position-bottom {
  bottom: 0;
  left: 0;
  width: 100%;
  overflow-x: auto;
  height: 250px;
  -webkit-transform: translateY(250px);
      -ms-transform: translateY(250px);
          transform: translateY(250px);
}

.off-canvas-content .off-canvas.position-bottom {
  -webkit-transform: translateY(250px);
      -ms-transform: translateY(250px);
          transform: translateY(250px);
}

.off-canvas-content .off-canvas.position-bottom.is-transition-overlap.is-open {
  -webkit-transform: translate(0, 0);
      -ms-transform: translate(0, 0);
          transform: translate(0, 0);
}

.off-canvas-content.is-open-bottom.has-transition-push {
  -webkit-transform: translateY(-250px);
      -ms-transform: translateY(-250px);
          transform: translateY(-250px);
}

.position-bottom.is-transition-push {
  -webkit-box-shadow: inset 0 13px 20px -13px rgba(0, 0, 0, 0.25);
          box-shadow: inset 0 13px 20px -13px rgba(0, 0, 0, 0.25);
}

.off-canvas-content {
  -webkit-transform: none;
      -ms-transform: none;
          transform: none;
  -webkit-transition: -webkit-transform 0.5s ease;
  transition: -webkit-transform 0.5s ease;
  -o-transition: transform 0.5s ease;
  transition: transform 0.5s ease;
  transition: transform 0.5s ease, -webkit-transform 0.5s ease;
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden;
}

.off-canvas-content.has-transition-push {
  -webkit-transform: translate(0, 0);
      -ms-transform: translate(0, 0);
          transform: translate(0, 0);
}

.off-canvas-content .off-canvas.is-open {
  -webkit-transform: translate(0, 0);
      -ms-transform: translate(0, 0);
          transform: translate(0, 0);
}

@media print, screen and (min-width: 48em) {
  .position-left.reveal-for-medium {
    -webkit-transform: none;
        -ms-transform: none;
            transform: none;
    z-index: 12;
    -webkit-transition: none;
    -o-transition: none;
    transition: none;
    visibility: visible;
  }
  .position-left.reveal-for-medium .close-button {
    display: none;
  }
  .off-canvas-content .position-left.reveal-for-medium {
    -webkit-transform: none;
        -ms-transform: none;
            transform: none;
  }
  .off-canvas-content.has-reveal-left {
    margin-left: 250px;
  }
  .position-left.reveal-for-medium ~ .off-canvas-content {
    margin-left: 250px;
  }
  .position-right.reveal-for-medium {
    -webkit-transform: none;
        -ms-transform: none;
            transform: none;
    z-index: 12;
    -webkit-transition: none;
    -o-transition: none;
    transition: none;
    visibility: visible;
  }
  .position-right.reveal-for-medium .close-button {
    display: none;
  }
  .off-canvas-content .position-right.reveal-for-medium {
    -webkit-transform: none;
        -ms-transform: none;
            transform: none;
  }
  .off-canvas-content.has-reveal-right {
    margin-right: 250px;
  }
  .position-right.reveal-for-medium ~ .off-canvas-content {
    margin-right: 250px;
  }
  .position-top.reveal-for-medium {
    -webkit-transform: none;
        -ms-transform: none;
            transform: none;
    z-index: 12;
    -webkit-transition: none;
    -o-transition: none;
    transition: none;
    visibility: visible;
  }
  .position-top.reveal-for-medium .close-button {
    display: none;
  }
  .off-canvas-content .position-top.reveal-for-medium {
    -webkit-transform: none;
        -ms-transform: none;
            transform: none;
  }
  .off-canvas-content.has-reveal-top {
    margin-top: 250px;
  }
  .position-top.reveal-for-medium ~ .off-canvas-content {
    margin-top: 250px;
  }
  .position-bottom.reveal-for-medium {
    -webkit-transform: none;
        -ms-transform: none;
            transform: none;
    z-index: 12;
    -webkit-transition: none;
    -o-transition: none;
    transition: none;
    visibility: visible;
  }
  .position-bottom.reveal-for-medium .close-button {
    display: none;
  }
  .off-canvas-content .position-bottom.reveal-for-medium {
    -webkit-transform: none;
        -ms-transform: none;
            transform: none;
  }
  .off-canvas-content.has-reveal-bottom {
    margin-bottom: 250px;
  }
  .position-bottom.reveal-for-medium ~ .off-canvas-content {
    margin-bottom: 250px;
  }
}

@media print, screen and (min-width: 64em) {
  .position-left.reveal-for-large {
    -webkit-transform: none;
        -ms-transform: none;
            transform: none;
    z-index: 12;
    -webkit-transition: none;
    -o-transition: none;
    transition: none;
    visibility: visible;
  }
  .position-left.reveal-for-large .close-button {
    display: none;
  }
  .off-canvas-content .position-left.reveal-for-large {
    -webkit-transform: none;
        -ms-transform: none;
            transform: none;
  }
  .off-canvas-content.has-reveal-left {
    margin-left: 250px;
  }
  .position-left.reveal-for-large ~ .off-canvas-content {
    margin-left: 250px;
  }
  .position-right.reveal-for-large {
    -webkit-transform: none;
        -ms-transform: none;
            transform: none;
    z-index: 12;
    -webkit-transition: none;
    -o-transition: none;
    transition: none;
    visibility: visible;
  }
  .position-right.reveal-for-large .close-button {
    display: none;
  }
  .off-canvas-content .position-right.reveal-for-large {
    -webkit-transform: none;
        -ms-transform: none;
            transform: none;
  }
  .off-canvas-content.has-reveal-right {
    margin-right: 250px;
  }
  .position-right.reveal-for-large ~ .off-canvas-content {
    margin-right: 250px;
  }
  .position-top.reveal-for-large {
    -webkit-transform: none;
        -ms-transform: none;
            transform: none;
    z-index: 12;
    -webkit-transition: none;
    -o-transition: none;
    transition: none;
    visibility: visible;
  }
  .position-top.reveal-for-large .close-button {
    display: none;
  }
  .off-canvas-content .position-top.reveal-for-large {
    -webkit-transform: none;
        -ms-transform: none;
            transform: none;
  }
  .off-canvas-content.has-reveal-top {
    margin-top: 250px;
  }
  .position-top.reveal-for-large ~ .off-canvas-content {
    margin-top: 250px;
  }
  .position-bottom.reveal-for-large {
    -webkit-transform: none;
        -ms-transform: none;
            transform: none;
    z-index: 12;
    -webkit-transition: none;
    -o-transition: none;
    transition: none;
    visibility: visible;
  }
  .position-bottom.reveal-for-large .close-button {
    display: none;
  }
  .off-canvas-content .position-bottom.reveal-for-large {
    -webkit-transform: none;
        -ms-transform: none;
            transform: none;
  }
  .off-canvas-content.has-reveal-bottom {
    margin-bottom: 250px;
  }
  .position-bottom.reveal-for-large ~ .off-canvas-content {
    margin-bottom: 250px;
  }
}

@media print, screen and (min-width: 48em) {
  .off-canvas.in-canvas-for-medium {
    visibility: visible;
    height: auto;
    position: static;
    background: inherit;
    width: inherit;
    overflow: inherit;
    -webkit-transition: inherit;
    -o-transition: inherit;
    transition: inherit;
  }
  .off-canvas.in-canvas-for-medium.position-left, .off-canvas.in-canvas-for-medium.position-right, .off-canvas.in-canvas-for-medium.position-top, .off-canvas.in-canvas-for-medium.position-bottom {
    -webkit-box-shadow: none;
            box-shadow: none;
    -webkit-transform: none;
        -ms-transform: none;
            transform: none;
  }
  .off-canvas.in-canvas-for-medium .close-button {
    display: none;
  }
}

@media print, screen and (min-width: 64em) {
  .off-canvas.in-canvas-for-large {
    visibility: visible;
    height: auto;
    position: static;
    background: inherit;
    width: inherit;
    overflow: inherit;
    -webkit-transition: inherit;
    -o-transition: inherit;
    transition: inherit;
  }
  .off-canvas.in-canvas-for-large.position-left, .off-canvas.in-canvas-for-large.position-right, .off-canvas.in-canvas-for-large.position-top, .off-canvas.in-canvas-for-large.position-bottom {
    -webkit-box-shadow: none;
            box-shadow: none;
    -webkit-transform: none;
        -ms-transform: none;
            transform: none;
  }
  .off-canvas.in-canvas-for-large .close-button {
    display: none;
  }
}

.orbit {
  position: relative;
}

.orbit-container {
  position: relative;
  height: 0;
  margin: 0;
  list-style: none;
  overflow: hidden;
}

.orbit-slide {
  width: 100%;
}

.orbit-slide.no-motionui.is-active {
  top: 0;
  left: 0;
}

.orbit-figure {
  margin: 0;
}

.orbit-image {
  width: 100%;
  max-width: 100%;
  margin: 0;
}

.orbit-caption {
  position: absolute;
  bottom: 0;
  width: 100%;
  margin-bottom: 0;
  padding: 1rem;
  background-color: rgba(0, 0, 0, 0.5);
  color: #ffffff;
}

.orbit-previous, .orbit-next {
  position: absolute;
  top: 50%;
  -webkit-transform: translateY(-50%);
      -ms-transform: translateY(-50%);
          transform: translateY(-50%);
  z-index: 10;
  padding: 1rem;
  color: #ffffff;
}

[data-whatinput='mouse'] .orbit-previous, [data-whatinput='mouse'] .orbit-next {
  outline: 0;
}

.orbit-previous:hover, .orbit-next:hover, .orbit-previous:active, .orbit-next:active, .orbit-previous:focus, .orbit-next:focus {
  background-color: rgba(0, 0, 0, 0.5);
}

.orbit-previous {
  left: 0;
}

.orbit-next {
  left: auto;
  right: 0;
}

.orbit-bullets {
  position: relative;
  margin-top: 0.8rem;
  margin-bottom: 0.8rem;
  text-align: center;
}

[data-whatinput='mouse'] .orbit-bullets {
  outline: 0;
}

.orbit-bullets button {
  width: 1.2rem;
  height: 1.2rem;
  margin: 0.1rem;
  -webkit-border-radius: 50%;
          border-radius: 50%;
  background-color: #eeeeee;
}

.orbit-bullets button:hover {
  background-color: #333333;
}

.orbit-bullets button.is-active {
  background-color: #333333;
}

.pagination {
  margin-left: 0;
  margin-bottom: 1rem;
}

.pagination::before, .pagination::after {
  display: table;
  content: ' ';
  -webkit-flex-basis: 0;
      -ms-flex-preferred-size: 0;
          flex-basis: 0;
  -webkit-box-ordinal-group: 2;
  -webkit-order: 1;
      -ms-flex-order: 1;
          order: 1;
}

.pagination::after {
  clear: both;
}

.pagination li {
  margin-right: 0.0625rem;
  -webkit-border-radius: 0;
          border-radius: 0;
  font-size: 0.875rem;
  display: none;
}

.pagination li:last-child, .pagination li:first-child {
  display: inline-block;
}

@media print, screen and (min-width: 48em) {
  .pagination li {
    display: inline-block;
  }
}

.pagination a,
.pagination button {
  display: block;
  padding: 0.1875rem 0.625rem;
  -webkit-border-radius: 0;
          border-radius: 0;
  color: #000000;
}

.pagination a:hover,
.pagination button:hover {
  background: #f5f5f5;
}

.pagination .current {
  padding: 0.1875rem 0.625rem;
  background: #9a0941;
  color: #ffffff;
  cursor: default;
}

.pagination .disabled {
  padding: 0.1875rem 0.625rem;
  color: #eeeeee;
  cursor: not-allowed;
}

.pagination .disabled:hover {
  background: transparent;
}

.pagination .ellipsis::after {
  padding: 0.1875rem 0.625rem;
  content: '\2026';
  color: #000000;
}

.pagination-previous a::before,
.pagination-previous.disabled::before {
  display: inline-block;
  margin-right: 0.5rem;
  content: '\00ab';
}

.pagination-next a::after,
.pagination-next.disabled::after {
  display: inline-block;
  margin-left: 0.5rem;
  content: '\00bb';
}

.progress {
  height: 1rem;
  margin-bottom: 1rem;
  -webkit-border-radius: 0;
          border-radius: 0;
  background-color: #eeeeee;
}

.progress.primary .progress-meter {
  background-color: #9a0941;
}

.progress.secondary .progress-meter {
  background-color: #333333;
}

.progress.success .progress-meter {
  background-color: #3adb76;
}

.progress.warning .progress-meter {
  background-color: #ffae00;
}

.progress.alert .progress-meter {
  background-color: #cc4b37;
}

.progress-meter {
  position: relative;
  display: block;
  width: 0%;
  height: 100%;
  background-color: #9a0941;
}

.progress-meter-text {
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
      -ms-transform: translate(-50%, -50%);
          transform: translate(-50%, -50%);
  position: absolute;
  margin: 0;
  font-size: 0.75rem;
  font-weight: bold;
  color: #ffffff;
  white-space: nowrap;
}

.slider {
  position: relative;
  height: 0.5rem;
  margin-top: 1.25rem;
  margin-bottom: 2.25rem;
  background-color: #f5f5f5;
  cursor: pointer;
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;
  -ms-touch-action: none;
      touch-action: none;
}

.slider-fill {
  position: absolute;
  top: 0;
  left: 0;
  display: inline-block;
  max-width: 100%;
  height: 0.5rem;
  background-color: #eeeeee;
  -webkit-transition: all 0.2s ease-in-out;
  -o-transition: all 0.2s ease-in-out;
  transition: all 0.2s ease-in-out;
}

.slider-fill.is-dragging {
  -webkit-transition: all 0s linear;
  -o-transition: all 0s linear;
  transition: all 0s linear;
}

.slider-handle {
  position: absolute;
  top: 50%;
  -webkit-transform: translateY(-50%);
      -ms-transform: translateY(-50%);
          transform: translateY(-50%);
  left: 0;
  z-index: 1;
  display: inline-block;
  width: 1.4rem;
  height: 1.4rem;
  -webkit-border-radius: 0;
          border-radius: 0;
  background-color: #9a0941;
  -webkit-transition: all 0.2s ease-in-out;
  -o-transition: all 0.2s ease-in-out;
  transition: all 0.2s ease-in-out;
  -ms-touch-action: manipulation;
      touch-action: manipulation;
}

[data-whatinput='mouse'] .slider-handle {
  outline: 0;
}

.slider-handle:hover {
  background-color: #830837;
}

.slider-handle.is-dragging {
  -webkit-transition: all 0s linear;
  -o-transition: all 0s linear;
  transition: all 0s linear;
}

.slider.disabled,
.slider[disabled] {
  opacity: 0.25;
  cursor: not-allowed;
}

.slider.vertical {
  display: inline-block;
  width: 0.5rem;
  height: 12.5rem;
  margin: 0 1.25rem;
  -webkit-transform: scale(1, -1);
      -ms-transform: scale(1, -1);
          transform: scale(1, -1);
}

.slider.vertical .slider-fill {
  top: 0;
  width: 0.5rem;
  max-height: 100%;
}

.slider.vertical .slider-handle {
  position: absolute;
  top: 0;
  left: 50%;
  width: 1.4rem;
  height: 1.4rem;
  -webkit-transform: translateX(-50%);
      -ms-transform: translateX(-50%);
          transform: translateX(-50%);
}

.sticky-container {
  position: relative;
}

.sticky {
  position: relative;
  z-index: 0;
  -webkit-transform: translate3d(0, 0, 0);
          transform: translate3d(0, 0, 0);
}

.sticky.is-stuck {
  position: fixed;
  z-index: 5;
  width: 100%;
}

.sticky.is-stuck.is-at-top {
  top: 0;
}

.sticky.is-stuck.is-at-bottom {
  bottom: 0;
}

.sticky.is-anchored {
  position: relative;
  right: auto;
  left: auto;
}

.sticky.is-anchored.is-at-bottom {
  bottom: 0;
}

body.is-reveal-open {
  overflow: hidden;
}

html.is-reveal-open,
html.is-reveal-open body {
  min-height: 100%;
  overflow: hidden;
  position: fixed;
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;
}

.reveal-overlay {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1005;
  display: none;
  background-color: rgba(0, 0, 0, 0.45);
  overflow-y: scroll;
}

.reveal {
  z-index: 1006;
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden;
  display: none;
  padding: 1rem;
  border: 1px solid #eeeeee;
  -webkit-border-radius: 0;
          border-radius: 0;
  background-color: #ffffff;
  position: relative;
  top: 100px;
  margin-right: auto;
  margin-left: auto;
  overflow-y: auto;
}

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

@media print, screen and (min-width: 48em) {
  .reveal {
    min-height: 0;
  }
}

.reveal .column, .reveal .columns {
  min-width: 0;
}

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

@media print, screen and (min-width: 48em) {
  .reveal {
    width: 600px;
    max-width: 75rem;
  }
}

.reveal.collapse {
  padding: 0;
}

@media print, screen and (min-width: 48em) {
  .reveal.tiny {
    width: 30%;
    max-width: 75rem;
  }
}

@media print, screen and (min-width: 48em) {
  .reveal.small {
    width: 50%;
    max-width: 75rem;
  }
}

@media print, screen and (min-width: 48em) {
  .reveal.large {
    width: 90%;
    max-width: 75rem;
  }
}

.reveal.full {
  top: 0;
  left: 0;
  width: 100%;
  max-width: none;
  height: 100%;
  height: 100vh;
  min-height: 100vh;
  margin-left: 0;
  border: 0;
  -webkit-border-radius: 0;
          border-radius: 0;
}

@media screen and (max-width: 47.9375em) {
  .reveal {
    top: 0;
    left: 0;
    width: 100%;
    max-width: none;
    height: 100%;
    height: 100vh;
    min-height: 100vh;
    margin-left: 0;
    border: 0;
    -webkit-border-radius: 0;
            border-radius: 0;
  }
}

.reveal.without-overlay {
  position: fixed;
}

.switch {
  height: 2rem;
  position: relative;
  margin-bottom: 1rem;
  outline: 0;
  font-size: 0.875rem;
  font-weight: bold;
  color: #ffffff;
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;
}

.switch-input {
  position: absolute;
  margin-bottom: 0;
  opacity: 0;
}

.switch-paddle {
  position: relative;
  display: block;
  width: 4rem;
  height: 2rem;
  -webkit-border-radius: 0;
          border-radius: 0;
  background: #eeeeee;
  -webkit-transition: all 0.25s ease-out;
  -o-transition: all 0.25s ease-out;
  transition: all 0.25s ease-out;
  font-weight: inherit;
  color: inherit;
  cursor: pointer;
}

input + .switch-paddle {
  margin: 0;
}

.switch-paddle::after {
  position: absolute;
  top: 0.25rem;
  left: 0.25rem;
  display: block;
  width: 1.5rem;
  height: 1.5rem;
  -webkit-transform: translate3d(0, 0, 0);
          transform: translate3d(0, 0, 0);
  -webkit-border-radius: 0;
          border-radius: 0;
  background: #ffffff;
  -webkit-transition: all 0.25s ease-out;
  -o-transition: all 0.25s ease-out;
  transition: all 0.25s ease-out;
  content: '';
}

input:checked ~ .switch-paddle {
  background: #9a0941;
}

input:checked ~ .switch-paddle::after {
  left: 2.25rem;
}

[data-whatinput='mouse'] input:focus ~ .switch-paddle {
  outline: 0;
}

.switch-active, .switch-inactive {
  position: absolute;
  top: 50%;
  -webkit-transform: translateY(-50%);
      -ms-transform: translateY(-50%);
          transform: translateY(-50%);
}

.switch-active {
  left: 8%;
  display: none;
}

input:checked + label > .switch-active {
  display: block;
}

.switch-inactive {
  right: 15%;
}

input:checked + label > .switch-inactive {
  display: none;
}

.switch.tiny {
  height: 1.5rem;
}

.switch.tiny .switch-paddle {
  width: 3rem;
  height: 1.5rem;
  font-size: 0.625rem;
}

.switch.tiny .switch-paddle::after {
  top: 0.25rem;
  left: 0.25rem;
  width: 1rem;
  height: 1rem;
}

.switch.tiny input:checked ~ .switch-paddle::after {
  left: 1.75rem;
}

.switch.small {
  height: 1.75rem;
}

.switch.small .switch-paddle {
  width: 3.5rem;
  height: 1.75rem;
  font-size: 0.75rem;
}

.switch.small .switch-paddle::after {
  top: 0.25rem;
  left: 0.25rem;
  width: 1.25rem;
  height: 1.25rem;
}

.switch.small input:checked ~ .switch-paddle::after {
  left: 2rem;
}

.switch.large {
  height: 2.5rem;
}

.switch.large .switch-paddle {
  width: 5rem;
  height: 2.5rem;
  font-size: 1rem;
}

.switch.large .switch-paddle::after {
  top: 0.25rem;
  left: 0.25rem;
  width: 2rem;
  height: 2rem;
}

.switch.large input:checked ~ .switch-paddle::after {
  left: 2.75rem;
}

.tabs {
  margin: 0;
  border: 1px solid #f5f5f5;
  background: #ffffff;
  list-style-type: none;
}

.tabs::before, .tabs::after {
  display: table;
  content: ' ';
  -webkit-flex-basis: 0;
      -ms-flex-preferred-size: 0;
          flex-basis: 0;
  -webkit-box-ordinal-group: 2;
  -webkit-order: 1;
      -ms-flex-order: 1;
          order: 1;
}

.tabs::after {
  clear: both;
}

.tabs.vertical > li {
  display: block;
  float: none;
  width: auto;
}

.tabs.simple > li > a {
  padding: 0;
}

.tabs.simple > li > a:hover {
  background: transparent;
}

.tabs.primary {
  background: #9a0941;
}

.tabs.primary > li > a {
  color: #ffffff;
}

.tabs.primary > li > a:hover, .tabs.primary > li > a:focus {
  background: #aa0a48;
}

.tabs-title {
  float: left;
}

.tabs-title > a {
  display: block;
  padding: 1.25rem 1.5rem;
  font-size: 0.75rem;
  line-height: 1;
  color: #9a0941;
}

.tabs-title > a:hover {
  background: #ffffff;
  color: #840838;
}

.tabs-title > a:focus, .tabs-title > a[aria-selected='true'] {
  background: #f5f5f5;
  color: #9a0941;
}

.tabs-content {
  border: 1px solid #f5f5f5;
  border-top: 0;
  background: #ffffff;
  color: #000000;
  -webkit-transition: all 0.5s ease;
  -o-transition: all 0.5s ease;
  transition: all 0.5s ease;
}

.tabs-content.vertical {
  border: 1px solid #f5f5f5;
  border-left: 0;
}

.tabs-panel {
  display: none;
  padding: 1rem;
}

.tabs-panel.is-active {
  display: block;
}

.thumbnail {
  display: inline-block;
  max-width: 100%;
  margin-bottom: 1rem;
  border: solid 4px #ffffff;
  -webkit-border-radius: 0;
          border-radius: 0;
  -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);
          box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);
  line-height: 0;
}

a.thumbnail {
  -webkit-transition: -webkit-box-shadow 200ms ease-out;
  transition: -webkit-box-shadow 200ms ease-out;
  -o-transition: box-shadow 200ms ease-out;
  transition: box-shadow 200ms ease-out;
  transition: box-shadow 200ms ease-out, -webkit-box-shadow 200ms ease-out;
}

a.thumbnail:hover, a.thumbnail:focus {
  -webkit-box-shadow: 0 0 6px 1px rgba(154, 9, 65, 0.5);
          box-shadow: 0 0 6px 1px rgba(154, 9, 65, 0.5);
}

a.thumbnail image {
  -webkit-box-shadow: none;
          box-shadow: none;
}

.title-bar {
  padding: 0.5rem;
  background: #000000;
  color: #ffffff;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: start;
  -webkit-justify-content: flex-start;
      -ms-flex-pack: start;
          justify-content: flex-start;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
}

.title-bar .menu-icon {
  margin-left: 0.25rem;
  margin-right: 0.25rem;
}

.title-bar-left,
.title-bar-right {
  -webkit-box-flex: 1;
  -webkit-flex: 1 1 0px;
      -ms-flex: 1 1 0px;
          flex: 1 1 0px;
}

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

.title-bar-title {
  display: inline-block;
  vertical-align: middle;
  font-weight: bold;
}

.has-tip {
  position: relative;
  display: inline-block;
  border-bottom: dotted 1px #333333;
  font-weight: bold;
  cursor: help;
}

.tooltip {
  position: absolute;
  top: -webkit-calc(100% + 0.6495rem);
  top: calc(100% + 0.6495rem);
  z-index: 1200;
  max-width: 10rem;
  padding: 0.75rem;
  -webkit-border-radius: 0;
          border-radius: 0;
  background-color: #000000;
  font-size: 80%;
  color: #ffffff;
}

.tooltip::before {
  position: absolute;
}

.tooltip.bottom::before {
  display: block;
  width: 0;
  height: 0;
  border: inset 0.75rem;
  content: '';
  border-top-width: 0;
  border-bottom-style: solid;
  border-color: transparent transparent #000000;
  bottom: 100%;
}

.tooltip.bottom.align-center::before {
  left: 50%;
  -webkit-transform: translateX(-50%);
      -ms-transform: translateX(-50%);
          transform: translateX(-50%);
}

.tooltip.top::before {
  display: block;
  width: 0;
  height: 0;
  border: inset 0.75rem;
  content: '';
  border-bottom-width: 0;
  border-top-style: solid;
  border-color: #000000 transparent transparent;
  top: 100%;
  bottom: auto;
}

.tooltip.top.align-center::before {
  left: 50%;
  -webkit-transform: translateX(-50%);
      -ms-transform: translateX(-50%);
          transform: translateX(-50%);
}

.tooltip.left::before {
  display: block;
  width: 0;
  height: 0;
  border: inset 0.75rem;
  content: '';
  border-right-width: 0;
  border-left-style: solid;
  border-color: transparent transparent transparent #000000;
  left: 100%;
}

.tooltip.left.align-center::before {
  bottom: auto;
  top: 50%;
  -webkit-transform: translateY(-50%);
      -ms-transform: translateY(-50%);
          transform: translateY(-50%);
}

.tooltip.right::before {
  display: block;
  width: 0;
  height: 0;
  border: inset 0.75rem;
  content: '';
  border-left-width: 0;
  border-right-style: solid;
  border-color: transparent #000000 transparent transparent;
  right: 100%;
  left: auto;
}

.tooltip.right.align-center::before {
  bottom: auto;
  top: 50%;
  -webkit-transform: translateY(-50%);
      -ms-transform: translateY(-50%);
          transform: translateY(-50%);
}

.tooltip.align-top::before {
  bottom: auto;
  top: 10%;
}

.tooltip.align-bottom::before {
  bottom: 10%;
  top: auto;
}

.tooltip.align-left::before {
  left: 10%;
  right: auto;
}

.tooltip.align-right::before {
  left: auto;
  right: 10%;
}

.top-bar {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-flex-wrap: nowrap;
      -ms-flex-wrap: nowrap;
          flex-wrap: nowrap;
  -webkit-box-pack: justify;
  -webkit-justify-content: space-between;
      -ms-flex-pack: justify;
          justify-content: space-between;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
  padding: 0.5rem;
  -webkit-flex-wrap: wrap;
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
}

.top-bar,
.top-bar ul {
  background-color: #f5f5f5;
}

.top-bar input {
  max-width: 200px;
  margin-right: 1rem;
}

.top-bar .input-group-field {
  width: 100%;
  margin-right: 0;
}

.top-bar input.button {
  width: auto;
}

.top-bar .top-bar-left,
.top-bar .top-bar-right {
  -webkit-box-flex: 0;
  -webkit-flex: 0 0 100%;
      -ms-flex: 0 0 100%;
          flex: 0 0 100%;
  max-width: 100%;
}

@media print, screen and (min-width: 48em) {
  .top-bar {
    -webkit-flex-wrap: nowrap;
        -ms-flex-wrap: nowrap;
            flex-wrap: nowrap;
  }
  .top-bar .top-bar-left {
    -webkit-box-flex: 1;
    -webkit-flex: 1 1 auto;
        -ms-flex: 1 1 auto;
            flex: 1 1 auto;
    margin-right: auto;
  }
  .top-bar .top-bar-right {
    -webkit-box-flex: 0;
    -webkit-flex: 0 1 auto;
        -ms-flex: 0 1 auto;
            flex: 0 1 auto;
    margin-left: auto;
  }
}

@media screen and (max-width: 63.9375em) {
  .top-bar.stacked-for-medium {
    -webkit-flex-wrap: wrap;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
  }
  .top-bar.stacked-for-medium .top-bar-left,
  .top-bar.stacked-for-medium .top-bar-right {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 100%;
        -ms-flex: 0 0 100%;
            flex: 0 0 100%;
    max-width: 100%;
  }
}

@media screen and (max-width: 74.9375em) {
  .top-bar.stacked-for-large {
    -webkit-flex-wrap: wrap;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
  }
  .top-bar.stacked-for-large .top-bar-left,
  .top-bar.stacked-for-large .top-bar-right {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 100%;
        -ms-flex: 0 0 100%;
            flex: 0 0 100%;
    max-width: 100%;
  }
}

.top-bar-title {
  -webkit-box-flex: 0;
  -webkit-flex: 0 0 auto;
      -ms-flex: 0 0 auto;
          flex: 0 0 auto;
  margin: 0.5rem 1rem 0.5rem 0;
}

.top-bar-left,
.top-bar-right {
  -webkit-box-flex: 0;
  -webkit-flex: 0 0 auto;
      -ms-flex: 0 0 auto;
          flex: 0 0 auto;
}

.hide {
  display: none !important;
}

.invisible {
  visibility: hidden;
}

@media screen and (max-width: 47.9375em) {
  .hide-for-small-only {
    display: none !important;
  }
}

@media screen and (max-width: 0em), screen and (min-width: 48em) {
  .show-for-small-only {
    display: none !important;
  }
}

@media print, screen and (min-width: 48em) {
  .hide-for-medium {
    display: none !important;
  }
}

@media screen and (max-width: 47.9375em) {
  .show-for-medium {
    display: none !important;
  }
}

@media screen and (min-width: 48em) and (max-width: 63.9375em) {
  .hide-for-medium-only {
    display: none !important;
  }
}

@media screen and (max-width: 47.9375em), screen and (min-width: 64em) {
  .show-for-medium-only {
    display: none !important;
  }
}

@media print, screen and (min-width: 64em) {
  .hide-for-large {
    display: none !important;
  }
}

@media screen and (max-width: 63.9375em) {
  .show-for-large {
    display: none !important;
  }
}

@media screen and (min-width: 64em) and (max-width: 74.9375em) {
  .hide-for-large-only {
    display: none !important;
  }
}

@media screen and (max-width: 63.9375em), screen and (min-width: 75em) {
  .show-for-large-only {
    display: none !important;
  }
}

.show-for-sr,
.show-on-focus {
  position: absolute !important;
  width: 1px;
  height: 1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  -webkit-clip-path: inset(50%);
          clip-path: inset(50%);
  border: 0;
}

.show-on-focus:active, .show-on-focus:focus {
  position: static !important;
  width: auto;
  height: auto;
  overflow: visible;
  clip: auto;
  white-space: normal;
  -webkit-clip-path: none;
          clip-path: none;
}

.show-for-landscape,
.hide-for-portrait {
  display: block !important;
}

@media screen and (orientation: landscape) {
  .show-for-landscape,
  .hide-for-portrait {
    display: block !important;
  }
}

@media screen and (orientation: portrait) {
  .show-for-landscape,
  .hide-for-portrait {
    display: none !important;
  }
}

.hide-for-landscape,
.show-for-portrait {
  display: none !important;
}

@media screen and (orientation: landscape) {
  .hide-for-landscape,
  .show-for-portrait {
    display: none !important;
  }
}

@media screen and (orientation: portrait) {
  .hide-for-landscape,
  .show-for-portrait {
    display: block !important;
  }
}

.float-left {
  float: left !important;
}

.float-right {
  float: right !important;
}

.float-center {
  display: block;
  margin-right: auto;
  margin-left: auto;
}

.clearfix::before, .clearfix::after {
  display: table;
  content: ' ';
  -webkit-flex-basis: 0;
      -ms-flex-preferred-size: 0;
          flex-basis: 0;
  -webkit-box-ordinal-group: 2;
  -webkit-order: 1;
      -ms-flex-order: 1;
          order: 1;
}

.clearfix::after {
  clear: both;
}

/*@function rem-calc($px, $base-val: $base-px-default) {
	@if not unitless($px) {
		$px: strip-units($px);
	}
	@if not unitless($base-val) {
		$base-val: strip-units($base-val);
	}
	@return ($px / $base-val) * 1rem;
}*/
@font-face {
  font-family: 'Akkurat-Light';
  src: url("../helsana/fonts/akklg.eot");
  /* IE9+ */
  src: url("../helsana/fonts/akklg.eot?#iefix") format("embedded-opentype"), url("../helsana/fonts/akklg.woff") format("woff"), url("../helsana/fonts/akklg.ttf") format("truetype"), url("../helsana/fonts/akklg.svg#akklg") format("svg");
  /* Legacy iOS */
  font-weight: normal;
  font-style: normal;
}

@font-face {
  font-family: 'Akkurat-Regular';
  src: url("../helsana/fonts/akkrg.eot");
  src: url("../helsana/fonts/akkrg.eot?#iefix") format("embedded-opentype"), url("../helsana/fonts/akkrg.woff") format("woff"), url("../helsana/fonts/akkrg.ttf") format("truetype"), url("../helsana/fonts/akkrg.svg#akkrg") format("svg");
  font-weight: normal;
  font-style: normal;
}

@font-face {
  font-family: 'Akkurat-RegularBold';
  src: url("../helsana/fonts/akkbd.eot");
  src: url("../helsana/fonts/akkbd.eot?#iefix") format("embedded-opentype"), url("../helsana/fonts/akkbd.woff") format("woff"), url("../helsana/fonts/akkbd.ttf") format("truetype"), url("../helsana/fonts/akkbd.svg#akkbd") format("svg");
  font-weight: normal;
  font-style: normal;
}

.list--unstyled li, .footer-container footer .footer li {
  list-style-type: none;
}

.margin--reset, .portraits__container__inner p, .quote p {
  margin: 0;
  padding: 0;
}

.subtitels--margin-top, .ns-title-h2, .ns-title-revisionsbericht {
  margin-top: 25px;
}

p,
.ns-image-wrap,
.ns-title-main,
.ns-paragraph,
.ns-title-chapter,
.ns-title-h2,
.ns-title-h3,
.ns-title-h4,
.ns-title-revisionsbericht,
.ns-lead,
.ns-list,
.ns-image-wrap--small,
.ns-list,
.ns-image-wrap-small,
.ns-signature-container,
.quote,
.portraits__container,
.ns-button,
.embed-containter,
.ns-make-contentbg-red.doc-component {
  margin-left: 0;
  margin-right: 0;
}

@media screen and (min-width: 48em) {
  p,
  .ns-image-wrap,
  .ns-title-main,
  .ns-paragraph,
  .ns-title-chapter,
  .ns-title-h2,
  .ns-title-h3,
  .ns-title-h4,
  .ns-title-revisionsbericht,
  .ns-lead,
  .ns-list,
  .ns-image-wrap--small,
  .ns-list,
  .ns-image-wrap-small,
  .ns-signature-container,
  .quote,
  .portraits__container,
  .ns-button,
  .embed-containter,
  .ns-make-contentbg-red.doc-component {
    margin-left: 1.875rem;
    margin-right: 1.875rem;
  }
}

@media screen and (min-width: 62em) {
  p,
  .ns-image-wrap,
  .ns-title-main,
  .ns-paragraph,
  .ns-title-chapter,
  .ns-title-h2,
  .ns-title-h3,
  .ns-title-h4,
  .ns-title-revisionsbericht,
  .ns-lead,
  .ns-list,
  .ns-image-wrap--small,
  .ns-list,
  .ns-image-wrap-small,
  .ns-signature-container,
  .quote,
  .portraits__container,
  .ns-button,
  .embed-containter,
  .ns-make-contentbg-red.doc-component {
    margin-left: 8.4375rem;
    margin-right: 8.4375rem;
  }
}

@media screen and (min-width: 75em) {
  p,
  .ns-image-wrap,
  .ns-title-main,
  .ns-paragraph,
  .ns-title-chapter,
  .ns-title-h2,
  .ns-title-h3,
  .ns-title-h4,
  .ns-title-revisionsbericht,
  .ns-lead,
  .ns-list,
  .ns-image-wrap--small,
  .ns-list,
  .ns-image-wrap-small,
  .ns-signature-container,
  .quote,
  .portraits__container,
  .ns-button,
  .embed-containter,
  .ns-make-contentbg-red.doc-component {
    margin-left: 14.6875rem;
    margin-right: 14.6875rem;
  }
}

.ns-paragraph.ns-text-align--center {
  margin-left: auto;
  margin-right: auto;
  max-width: 800px;
}

.ns-content--large,
.keyfigures__container,
.accordion-content {
  margin-left: 0;
  margin-right: 0;
}

@media screen and (min-width: 48em) {
  .ns-content--large,
  .keyfigures__container,
  .accordion-content {
    margin-left: 1.875rem;
    margin-right: 1.875rem;
  }
}

@media screen and (min-width: 62em) {
  .ns-content--large,
  .keyfigures__container,
  .accordion-content {
    margin-left: 4.6875rem;
    margin-right: 4.6875rem;
  }
}

@media screen and (min-width: 75em) {
  .ns-content--large,
  .keyfigures__container,
  .accordion-content {
    margin-left: 10.9375rem;
    margin-right: 10.9375rem;
  }
}

.ns-content--large p,
.ns-content--large .ns-paragraph,
.ns-content--large .ns-title-chapter,
.ns-content--large .ns-title-main,
.ns-content--large .ns-title-h2,
.ns-content--large .ns-title-h3,
.ns-content--large .ns-title-h4,
.ns-content--large .ns-title-h4,
.ns-content--large .ns-title-h5,
.ns-content--large .ns-title-h6,
.ns-content--large .ns-title-revisionsbericht,
.ns-content--large .ns-lead,
.ns-content--large .ns-list,
.ns-content--large .ns-image-wrap,
.ns-content--large .ns-image-wrap--small,
.ns-content--large .ns-image-wrap-small,
.ns-content--large .ns-signature-container,
.ns-content--large .quote,
.ns-content--large .portraits__container,
.ns-content--large .ns-button,
.ns-content--large .embed-containter,
.keyfigures__container p,
.keyfigures__container .ns-paragraph,
.keyfigures__container .ns-title-chapter,
.keyfigures__container .ns-title-main,
.keyfigures__container .ns-title-h2,
.keyfigures__container .ns-title-h3,
.keyfigures__container .ns-title-h4,
.keyfigures__container .ns-title-h4,
.keyfigures__container .ns-title-h5,
.keyfigures__container .ns-title-h6,
.keyfigures__container .ns-title-revisionsbericht,
.keyfigures__container .ns-lead,
.keyfigures__container .ns-list,
.keyfigures__container .ns-image-wrap,
.keyfigures__container .ns-image-wrap--small,
.keyfigures__container .ns-image-wrap-small,
.keyfigures__container .ns-signature-container,
.keyfigures__container .quote,
.keyfigures__container .portraits__container,
.keyfigures__container .ns-button,
.keyfigures__container .embed-containter,
.accordion-content p,
.accordion-content .ns-paragraph,
.accordion-content .ns-title-chapter,
.accordion-content .ns-title-main,
.accordion-content .ns-title-h2,
.accordion-content .ns-title-h3,
.accordion-content .ns-title-h4,
.accordion-content .ns-title-h4,
.accordion-content .ns-title-h5,
.accordion-content .ns-title-h6,
.accordion-content .ns-title-revisionsbericht,
.accordion-content .ns-lead,
.accordion-content .ns-list,
.accordion-content .ns-image-wrap,
.accordion-content .ns-image-wrap--small,
.accordion-content .ns-image-wrap-small,
.accordion-content .ns-signature-container,
.accordion-content .quote,
.accordion-content .portraits__container,
.accordion-content .ns-button,
.accordion-content .embed-containter {
  margin-left: 0;
  margin-right: 0;
}

.ns-accordion-container .accordion-inner > * {
  margin-left: 0;
  margin-right: 0;
}

p,
.ns-paragraph {
  font-size: 0.875rem;
  line-height: 1.3125rem;
  margin-bottom: 20px;
}

@media screen and (min-width: 48em) {
  p,
  .ns-paragraph {
    font-size: 1.0625rem;
    line-height: 1.5rem;
  }
}

.ns-footnote {
  font-size: 0.75rem;
  line-height: 1.5;
  margin-bottom: 20px;
}

.ns-footnote sup {
  padding-right: 2px;
}

.ns-footnote + .embed-container {
  margin-top: 55px;
}

.embed-container + .ns-footnote {
  max-width: 820px;
  margin-left: auto;
  margin-right: auto;
}

.ns-lead {
  font-size: 0.875rem;
  color: #9181C6;
  line-height: 1.3125rem;
  margin-bottom: 40px;
}

@media screen and (min-width: 48em) {
  .ns-lead {
    font-size: 1.0625rem;
    line-height: 1.5rem;
  }
}

.ns-list {
  font-size: 0.875rem;
  line-height: 1.3125rem;
  padding-left: 1.5625rem;
}

.ns-list__elem {
  list-style-image: url(./../helsana/images/list-style_small.png);
}

@media screen and (min-width: 48em) {
  .ns-list__elem {
    list-style-image: url(./../helsana/images/list-style.png);
  }
}

@media screen and (min-width: 48em) {
  .ns-list {
    font-size: 1.0625rem;
    line-height: 1.5rem;
  }
}

.ns-more-on {
  text-align: center;
  font-size: 1.0625rem;
}

.ns-more-on:before {
  content: '';
  width: 12px;
  height: 11px;
  background-image: url("data:image/svg+xml,%3Csvg id='Pfeil' xmlns='http://www.w3.org/2000/svg' width='12.359' height='10.982' viewBox='0 0 12.359 10.982'%3E%3Cpath id='Pfad_5677' data-name='Pfad 5677' d='M6.35-5.491.893-10.982-.3-9.809,3.17-6.324H-6.01v1.666H3.17L-.3-1.19.893,0Z' transform='translate(6.01 10.982)' fill='black'/%3E%3C/svg%3E%0A");
  display: inline-block;
  margin-right: 3px;
}

.ns-more-on {
  font-family: "Akkurat-RegularBold", sans-serif;
}

.ns-more-on a {
  color: currentColor;
}

.ns-more-on a:hover {
  color: currentColor;
}

.bg-color-red .ns-more-on {
  color: #ffffff;
}

.bg-color-red .ns-more-on a {
  color: currentColor;
}

.bg-color-red .ns-more-on a:hover {
  color: currentColor;
}

.bg-color-red .ns-more-on:before {
  background-image: url("data:image/svg+xml,%3Csvg id='Pfeil' xmlns='http://www.w3.org/2000/svg' width='12.359' height='10.982' viewBox='0 0 12.359 10.982'%3E%3Cpath id='Pfad_5677' data-name='Pfad 5677' d='M6.35-5.491.893-10.982-.3-9.809,3.17-6.324H-6.01v1.666H3.17L-.3-1.19.893,0Z' transform='translate(6.01 10.982)' fill='white'/%3E%3C/svg%3E%0A");
}

.ns-button {
  color: #9a0941;
  display: inline-block;
  font-family: "Akkurat-Regular", sans-serif;
  text-align: center;
  margin: 0 0 98px 0;
}

.ns-button__btn {
  display: inline-block;
  border: 2px solid #9a0941;
  -webkit-border-radius: 2px;
          border-radius: 2px;
  cursor: pointer;
  padding: 14px 24px;
  vertical-align: middle;
  white-space: nowrap;
  font-size: 18px;
  line-height: 23px;
  font-family: "Akkurat-RegularBold", sans-serif;
}

.ns-button__btn:hover {
  background-color: #9a0941;
  color: #ffffff;
}

.ns-button__btn:hover .ns-button__btn__inner {
  color: #ffffff;
}

.ns-button__btn__inner {
  cursor: pointer;
  font-family: "Akkurat-RegularBold", sans-serif;
  color: #9a0941;
}

.bg-color-red .ns-button {
  color: #ffffff;
  font-family: "Akkurat-RegularBold", sans-serif;
}

.bg-color-red .ns-button__btn {
  background: #AD0B49;
  border: none;
}

.bg-color-red .ns-button__btn:hover {
  background-color: #BB0C50;
  color: #ffffff;
}

.bg-color-red .ns-button__btn:hover .ns-button__btn__inner {
  color: #ffffff;
  font-family: "Akkurat-RegularBold", sans-serif;
  font-weight: normal;
}

.bg-color-red .ns-button__btn__inner {
  color: #ffffff;
}

.ns-make-contentbg-red.doc-component {
  margin-bottom: 1.25rem;
  padding: 0.3125rem 0.625rem;
  background: #9a0941;
  color: #ffffff;
}

.ns-make-contentbg-red.doc-component:before {
  content: "This is a Helper-Component. When placed in a document, Content-Background will be turned red on the Frontend via JS.";
}

.ns-make-contentbg-dark-red.doc-component {
  margin-bottom: 1.25rem;
  padding: 0.3125rem 0.625rem;
  background: #7a0b35;
  color: #ffffff;
}

.ns-make-contentbg-dark-red.doc-component:before {
  content: "This is a Helper-Component. When placed in a document, Content-Background will be turned dark red on the Frontend via JS.";
}

.excel-download {
  text-align: right;
  max-width: 820px;
  margin: 0 auto;
  width: 100%;
}

.excel-download a {
  width: 25px;
  height: 28px;
  margin-bottom: 30px;
  display: inline-block;
}

.excel-download svg {
  max-width: 100%;
  fill: #9a0941;
}

.ns-image-wrap {
  margin-top: 5.625rem;
  margin-bottom: 5.9375rem;
}

.ns-image-wrap img {
  width: 100%;
}

.ns-image-wrap-small {
  float: none;
  width: 21.25rem;
  max-width: 100%;
  margin-top: 30px;
  margin-bottom: 30px;
}

.ns-signature-wrapper {
  padding: 0 0.625rem 0 0;
}

@media screen and (min-width: 48em) {
  .ns-signature-wrapper {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 33%;
        -ms-flex: 0 0 33%;
            flex: 0 0 33%;
    width: auto;
  }
}

.ns-signature-wrapper:last-child {
  padding-top: 3.125rem;
}

@media screen and (min-width: 48em) {
  .ns-signature-wrapper:last-child {
    padding-top: 0;
  }
}

.ns-signature-wrapper__image {
  height: 6.25rem;
}

.ns-signature-wrapper p.ns-paragraph, .ns-signature-wrapper__text {
  margin: 0;
  font-family: "Akkurat-RegularBold";
  font-size: 0.875rem;
  line-height: 1.25rem;
}

.ns-signature-wrapper__function {
  color: #9a0941;
}

.ns-signature-container {
  padding-top: 2.1875rem;
}

@media screen and (min-width: 48em) {
  .ns-signature-container {
    padding-top: 1.875rem;
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
    -webkit-flex-direction: row;
        -ms-flex-direction: row;
            flex-direction: row;
    -webkit-flex-wrap: wrap;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
    -webkit-box-pack: start;
    -webkit-justify-content: flex-start;
        -ms-flex-pack: start;
            justify-content: flex-start;
    -webkit-box-align: start;
    -webkit-align-items: flex-start;
        -ms-flex-align: start;
            align-items: flex-start;
  }
}

.portraits__container {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
  -webkit-justify-content: center;
      -ms-flex-pack: center;
          justify-content: center;
  -webkit-flex-wrap: wrap;
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
}

.portraits__container__inner {
  margin-bottom: 35px;
  padding: 0;
  text-align: center;
  font-family: "Akkurat-RegularBold", sans-serif;
}

.portraits__container__inner__img {
  width: 150px;
  margin-bottom: 15px;
  padding-left: auto;
  padding-right: auto;
}

.portraits__container__inner p {
  font-size: 0.875rem;
}

.portraits__container__inner__name {
  margin-top: 15px;
  line-height: 20px;
}

.portraits__container__inner__function {
  color: #9a0941;
  line-height: 20px;
}

.bg-color-red .portraits__container__inner__function {
  color: #A79AD1;
}

.portraits__container:last-of-type {
  margin-bottom: 120px;
}

.content__inner > div.portraits__container + :not(.portraits__container) {
  margin-top: 105px;
}

.entry-content > div.portraits__container + :not(.portraits__container) {
  margin-top: 105px;
}

.ns-accordion-container:first-of-type .pinned tr:nth-child(2) td {
  display: none;
}

.ns-accordion-container:first-of-type .responsive.switched tr td:not([class*="3ahead"]) span[class*="anoline_v"],
.ns-accordion-container:first-of-type .responsive.switched tr td:not([class*="3ahead"]) span[class*="ablack"] {
  white-space: nowrap;
}

.ns-accordion-container:first-of-type .responsive.switched tr td span.noline,
.ns-accordion-container:first-of-type .responsive.switched tr td span.black {
  white-space: nowrap;
}

.ns-accordion-container:first-of-type .responsive.switched td.ns-halign-center,
.ns-accordion-container:first-of-type .responsive.switched td.ns-halign-right:nth-child(6) {
  display: none;
}

.embed-container {
  max-width: 700px;
  margin: 0 auto;
  margin-bottom: 0;
}

.ns-title-h2 + .embed-container {
  margin-top: 15px;
}

body article[class*="finanzbericht"] .embed-container,
body article[class*="erfolgsrechnung"] .embed-container,
body article[class*="notes_source"] .embed-container {
  max-width: 820px;
}

.embed-container caption {
  display: none;
}

.bg-color-red .ns-table tr td:last-child {
  color: #A79AD1;
}

table.ns-table {
  border-collapse: collapse;
  font-family: "Akkurat-Light", sans-serif;
  margin-bottom: 30px;
  table-layout: fixed;
}

@media screen and (min-width: 48em) {
  table.ns-table {
    min-width: 100%;
    width: auto;
  }
}

table.ns-table p,
table.ns-table span,
table.ns-table td {
  padding: 0 !important;
  margin: 0 !important;
  white-space: normal !important;
  -webkit-box-sizing: border-box !important;
          box-sizing: border-box !important;
}

table.ns-table p,
table.ns-table span {
  display: inline;
}

table.ns-table td {
  padding: 5px 1px !important;
  line-height: 1;
  display: table-cell;
  color: #62AEDF;
}

table.ns-table td,
table.ns-table td p,
table.ns-table td span {
  font-size: 0.875rem;
}

table.ns-table p:empty {
  display: inline-block;
  height: 22px;
}

table.ns-table span {
  white-space: nowrap;
}

@media screen and (min-width: 48em) {
  table.ns-table span {
    white-space: normal;
  }
}

table.ns-table .superscript {
  font-size: 75%;
  margin-left: -2px;
  position: relative;
  top: -0.4em;
}

table.ns-table tr:hover td.ns-borderright-5-solid-paper-0:not(:last-of-type),
table.ns-table tr:hover td.ns-borderright-5-solid-helsanarotcmyku-100:not(:last-of-type),
table.ns-table .popup-is-open td.ns-borderright-5-solid-paper-0:not(:last-of-type),
table.ns-table .popup-is-open td.ns-borderright-5-solid-helsanarotcmyku-100:not(:last-of-type) {
  position: relative;
}

table.ns-table tr:hover td.ns-borderright-5-solid-paper-0:not(:last-of-type):before,
table.ns-table tr:hover td.ns-borderright-5-solid-helsanarotcmyku-100:not(:last-of-type):before,
table.ns-table .popup-is-open td.ns-borderright-5-solid-paper-0:not(:last-of-type):before,
table.ns-table .popup-is-open td.ns-borderright-5-solid-helsanarotcmyku-100:not(:last-of-type):before {
  content: '';
  width: 5px;
  height: 3px;
  background: #e7e7e7;
  top: -1px;
  right: -5px;
  position: absolute;
}

.bg-color-red table.ns-table tr:hover td.ns-borderright-5-solid-paper-0:not(:last-of-type):before, .bg-color-red
table.ns-table tr:hover td.ns-borderright-5-solid-helsanarotcmyku-100:not(:last-of-type):before, .bg-color-red
table.ns-table .popup-is-open td.ns-borderright-5-solid-paper-0:not(:last-of-type):before, .bg-color-red
table.ns-table .popup-is-open td.ns-borderright-5-solid-helsanarotcmyku-100:not(:last-of-type):before {
  background: #A79AD1;
}

table.ns-table tr:hover td.ns-borderright-5-solid-paper-0:not(:last-of-type):after,
table.ns-table tr:hover td.ns-borderright-5-solid-helsanarotcmyku-100:not(:last-of-type):after,
table.ns-table .popup-is-open td.ns-borderright-5-solid-paper-0:not(:last-of-type):after,
table.ns-table .popup-is-open td.ns-borderright-5-solid-helsanarotcmyku-100:not(:last-of-type):after {
  content: '';
  width: 5px;
  height: 3px;
  background: #e7e7e7;
  bottom: -1px;
  right: -5px;
  position: absolute;
}

.bg-color-red table.ns-table tr:hover td.ns-borderright-5-solid-paper-0:not(:last-of-type):after, .bg-color-red
table.ns-table tr:hover td.ns-borderright-5-solid-helsanarotcmyku-100:not(:last-of-type):after, .bg-color-red
table.ns-table .popup-is-open td.ns-borderright-5-solid-paper-0:not(:last-of-type):after, .bg-color-red
table.ns-table .popup-is-open td.ns-borderright-5-solid-helsanarotcmyku-100:not(:last-of-type):after {
  background: #A79AD1;
}

table.ns-table tr:hover.line-fixer:hover td:not(:last-of-type),
table.ns-table .popup-is-open.line-fixer:hover td:not(:last-of-type) {
  position: relative;
}

table.ns-table tr:hover.line-fixer:hover td:not(:last-of-type):before,
table.ns-table .popup-is-open.line-fixer:hover td:not(:last-of-type):before {
  top: -2px;
}

table.ns-table tr:hover.no-line-fixer:hover td:not(:last-of-type),
table.ns-table .popup-is-open.no-line-fixer:hover td:not(:last-of-type) {
  position: relative;
}

table.ns-table tr:hover.no-line-fixer:hover td:not(:last-of-type):before,
table.ns-table .popup-is-open.no-line-fixer:hover td:not(:last-of-type):before {
  display: none;
}

table.ns-table tr:hover.no-line-fixer:hover td:not(:last-of-type):after,
table.ns-table .popup-is-open.no-line-fixer:hover td:not(:last-of-type):after {
  bottom: -2px;
}

table.ns-table tr:hover.no-bottom-fix:hover td:not(:last-of-type):after,
table.ns-table .popup-is-open.no-bottom-fix:hover td:not(:last-of-type):after {
  display: none;
}

.bg-color-red table.ns-table tr:hover td.ns-borderright-5-solid-helsanarotcmyku-100:not(:last-of-type):before, .bg-color-red table.ns-table tr:hover td.ns-borderright-5-solid-helsanarotcmyku-100:not(:last-of-type):after, .bg-color-red
table.ns-table .popup-is-open td.ns-borderright-5-solid-helsanarotcmyku-100:not(:last-of-type):before, .bg-color-red
table.ns-table .popup-is-open td.ns-borderright-5-solid-helsanarotcmyku-100:not(:last-of-type):after {
  background: #A79AD1;
}

.bg-color-red table.ns-table tr:hover td, .bg-color-red table.ns-table tr:hover span, .bg-color-red
table.ns-table .popup-is-open td, .bg-color-red
table.ns-table .popup-is-open span {
  color: white !important;
}

.bg-color-red table.ns-table tr:hover td:not(.js-toggler-container), .bg-color-red
table.ns-table .popup-is-open td:not(.js-toggler-container) {
  background-color: #A79AD1 !important;
  border-color: #A79AD1;
}

.bg-color-red table.ns-table tr:hover .ns-borderright-5-solid-paper-0,
.bg-color-red table.ns-table tr:hover .ns-borderright-5-solid-helsanarotcmyku-100, .bg-color-red
table.ns-table .popup-is-open .ns-borderright-5-solid-paper-0,
.bg-color-red
table.ns-table .popup-is-open .ns-borderright-5-solid-helsanarotcmyku-100 {
  border-right-color: #A79AD1;
}

table.ns-table tr:hover td:not(.js-toggler-container),
table.ns-table .popup-is-open td:not(.js-toggler-container) {
  background-color: #e7e7e7 !important;
  -webkit-background-clip: padding-box;
          background-clip: padding-box;
}

table.ns-table tr:hover .ns-borderright-5-solid-paper-0,
table.ns-table tr:hover .ns-borderright-5-solid-helsanarotcmyku-100,
table.ns-table .popup-is-open .ns-borderright-5-solid-paper-0,
table.ns-table .popup-is-open .ns-borderright-5-solid-helsanarotcmyku-100 {
  border-right-color: #e7e7e7;
}

table.ns-table .ns-vertical-bottom {
  vertical-align: bottom;
}

table.ns-table .ns-vertical-middle {
  vertical-align: middle;
}

table.ns-table .ns-vertical-top {
  vertical-align: top;
}

table.ns-table .ns-tbl-head {
  text-align: right;
  border-bottom: 1px solid #62AEDF;
}

.bg-color-red table.ns-table .ns-tbl-head {
  border-bottom-color: #A79AD1;
}

table.ns-table .ns-tbl-noline_bold_color {
  border-bottom: 0px solid transparent;
  color: #62AEDF;
  font-family: "Akkurat-RegularBold", sans-serif;
}

table.ns-table .ns-tbl-line_bold {
  font-family: "Akkurat-RegularBold", sans-serif;
  border-bottom: 1px solid #62AEDF;
}

.bg-color-red table.ns-table .ns-tbl-line_bold {
  border-bottom-color: #A79AD1;
}

table.ns-table .ns-tbl-line .notes-text {
  color: black;
}

table.ns-table .solid-color-100 {
  color: black;
}

table.ns-table .ns-bordertop-1-solid-color-100 {
  border-top: 1px solid #62AEDF;
}

.bg-color-red table.ns-table .ns-bordertop-1-solid-color-100 {
  border-top-color: #A79AD1;
}

table.ns-table .ns-borderbottom-1-solid-color-100 {
  border-bottom: 1px solid #62AEDF;
}

.bg-color-red table.ns-table .ns-borderbottom-1-solid-color-100 {
  border-bottom-color: #A79AD1;
}

table.ns-table .ns-borderbottom-1-solid-color-100 {
  border-bottom: 1px solid #62AEDF;
}

.bg-color-red table.ns-table .ns-borderbottom-1-solid-color-100 {
  border-bottom-color: #A79AD1;
}

table.ns-table .ns-borderright-5-solid-paper-0 {
  border-right: 5px solid #f5f5f5;
}

.bg-color-red table.ns-table .ns-borderright-5-solid-paper-0 {
  border-right: 5px solid #9a0941;
}

table.ns-table .ns-borderright-5-solid-helsanarotcmyku-100 {
  border-right: 5px solid #9a0941;
}

table.ns-table .ns-bordertop-1-default-helsanaviolettcmyku-100 {
  border-top: 1px solid #A79AD1;
}

table.ns-table .ns-borderbottom-1-default-helsanaviolettcmyku-100,
table.ns-table .ns-borderbottom-1-solid-helsanaviolettcmyku-100 {
  border-bottom: 1px solid #A79AD1;
}

table.ns-table .ns-tbl-titel {
  font-family: "Akkurat-RegularBold", sans-serif;
  border-bottom: 2px solid #62AEDF;
}

.bg-color-red table.ns-table .ns-tbl-titel {
  border-bottom-color: #9181C6;
  color: #A79AD1;
}

table.ns-table .ns-horizontal-right {
  text-align: right;
}

table.ns-table .ns-horizontal-left {
  text-align: left;
}

table.ns-table .ns-tbl-noline_bold_color {
  border-top: 2px solid #62AEDF;
}

.bg-color-red table.ns-table .ns-tbl-noline_bold_color {
  border-top-color: #A79AD1;
}

table.ns-table .black {
  color: #000000;
}

table.ns-table .black + .superscript {
  color: #000000;
}

.bg-color-red table.ns-table .black {
  color: white;
}

table.ns-table .orange {
  color: #A79AD1;
}

table.ns-table .weiss {
  color: white;
}

.bg-color-red table.ns-table td {
  color: white;
}

table.ns-table .tabellen_titel p {
  font-family: "Akkurat-RegularBold", sans-serif;
  font-size: 0.75rem;
  line-height: 1.4;
}

table.ns-table .tabellen_lauftext p {
  color: #000000;
  font-size: 0.75rem;
  line-height: 1.4;
}

table.ns-table .notes {
  font-family: "Akkurat-Light", sans-serif;
  font-weight: normal;
}

table.ns-table.switched {
  table-layout: auto;
}

table.ns-table.switched td, table.ns-table.switched td span, table.ns-table.switched td p {
  white-space: nowrap !important;
}

.table-with-hidden-cols:not(.notes-open) div:not(.note-inside) table td:nth-of-type(4) {
  border-right: 0px solid transparent !important;
}

.table-with-hidden-cols:not(.notes-open) div:not(.note-inside) table td:nth-of-type(4):after, .table-with-hidden-cols:not(.notes-open) div:not(.note-inside) table td:nth-of-type(4):before {
  display: none !important;
}

.table-with-hidden-cols:not(.notes-open) div:not(.note-inside) table td:nth-of-type(5):not(.js-toggler-container), .table-with-hidden-cols:not(.notes-open) div:not(.note-inside) table td:nth-of-type(6) {
  display: none;
}

.table-for-charts-toggler td:nth-of-type(1) {
  width: 58%;
}

.table-for-charts-toggler td:nth-of-type(2), .table-for-charts-toggler td:nth-of-type(3), .table-for-charts-toggler td:nth-of-type(4) {
  width: 14%;
}

.table-for-charts-toggler td:nth-of-type(4) {
  border-right: 0px solid transparent !important;
}

.table-for-charts-toggler td:nth-of-type(4):after, .table-for-charts-toggler td:nth-of-type(4):before {
  display: none !important;
}

.table-for-charts-toggler td:nth-of-type(5):not(.js-toggler-container), .table-for-charts-toggler td:nth-of-type(6) {
  display: none;
}

.table-wrapper {
  position: relative;
  margin-bottom: 20px;
  margin-right: 0;
  margin-left: 0;
  overflow: hidden;
}

.table-wrapper table.responsive {
  margin-bottom: 0;
}

.table-wrapper .pinned {
  position: absolute;
  left: 0;
  top: 0;
  width: 40%;
  overflow-x: auto;
  overflow-y: hidden;
  border-right: 1px solid #333333;
  height: 100%;
  -webkit-overflow-scrolling: touch;
}

.table-wrapper .pinned table {
  border-right: none;
  border-left: none;
  width: 100%;
}

.table-wrapper .pinned table th,
.table-wrapper .pinned table td span {
  white-space: nowrap;
}

.table-wrapper .pinned table col {
  width: auto;
}

.table-wrapper .scrollable table th {
  white-space: pre-line !important;
}

.table-wrapper .pinned td:last-child {
  border-bottom: 0;
}

.table-wrapper div.scrollable {
  margin-left: 40%;
  overflow-x: auto;
  overflow-y: hidden;
  display: block;
  -webkit-overflow-scrolling: touch;
}

.table-wrapper div.scrollable colgroup col:nth-child(1) {
  display: none;
}

.table-wrapper table.responsive td span,
.table-wrapper table.responsive th {
  position: relative;
  overflow: hidden;
}

.table-wrapper table.responsive th:first-child,
.table-wrapper table.responsive td:first-child,
.table-wrapper table.responsive td:first-child,
.table-wrapper table.responsive.pinned td {
  display: none;
}

.scrollable::-webkit-scrollbar {
  width: 4px;
  height: 4px;
}

.scrollable::-webkit-scrollbar-button {
  width: 0;
  height: 0;
}

.scrollable::-webkit-scrollbar-track {
  background: #f0eeee;
  border: 0 none #ffffff;
  -webkit-border-radius: 0;
          border-radius: 0;
}

.scrollable::-webkit-scrollbar-thumb {
  background: #666666;
  border: 0 none #ffffff;
  -webkit-border-radius: 0;
          border-radius: 0;
}

.scrollable::-webkit-scrollbar-corner {
  background: transparent;
}

.pinned::-webkit-scrollbar {
  width: 4px;
  height: 4px;
}

.pinned::-webkit-scrollbar-button {
  width: 0;
  height: 0;
}

.pinned::-webkit-scrollbar-track {
  background: #f0eeee;
  border: 0 none #ffffff;
  -webkit-border-radius: 0;
          border-radius: 0;
}

.pinned::-webkit-scrollbar-thumb {
  background: #666666;
  border: 0 none #ffffff;
  -webkit-border-radius: 0;
          border-radius: 0;
}

.pinned::-webkit-scrollbar-corner {
  background: transparent;
}

.quote__container {
  padding-left: 0;
  border-top: 2px solid #9181C6;
  margin-left: 10px;
}

.quote__container:nth-child(1), .quote__container:nth-child(3) {
  margin-left: 0;
  margin-right: 0;
}

@media screen and (min-width: 48em) {
  .quote__container:nth-child(1), .quote__container:nth-child(3) {
    margin-left: -5px;
    margin-right: 5px;
  }
}

.quote__container:nth-child(2), .quote__container:nth-child(4) {
  margin-left: 0;
  margin-right: 0;
}

@media screen and (min-width: 48em) {
  .quote__container:nth-child(2), .quote__container:nth-child(4) {
    margin-left: 10px;
    margin-right: -10px;
  }
}

.quote__container .quote__container__number {
  font-size: 3.75rem;
  line-height: 1.5;
}

.quote__container .quote__container__number ~ .quote__container__text {
  margin-bottom: 0;
}

@media screen and (max-width: 61.9375em) {
  .quote__container .quote__container__number ~ .quote__container__text:last-of-type {
    margin-bottom: 20px;
  }
}

.quote__container .quote__container__text {
  font-size: 0.875rem;
  line-height: 1.42857143;
  margin-bottom: 20px;
}

.quote__container .quote__container__quote {
  font-size: 1.0625rem;
  line-height: 1.5rem;
  margin-top: 10px;
  margin-bottom: 30px;
}

.quote {
  *zoom: 1;
  color: #9181C6;
  margin-top: 40px;
  margin-bottom: 30px;
  padding-left: 0;
  padding-right: 0;
}

.quote:before, .quote:after {
  display: table;
  content: '';
  line-height: 0;
}

.quote:after {
  clear: both;
}

@media screen and (min-width: 48em) {
  .quote {
    padding-left: 5px;
    padding-right: 10px;
    margin-top: 55px;
    margin-bottom: 50px;
  }
}

.keyfigures__container {
  padding-left: 0;
  padding-right: 0;
  -webkit-flex-wrap: wrap;
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: -webkit-box;
  display: flex;
  -webkit-justify-content: center;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  font-family: "Akkurat-RegularBold", sans-serif;
}

@media screen and (min-width: 62em) {
  .keyfigures__container {
    padding-left: 30px;
    padding-right: 30px;
  }
}

.keyfigures__container__inner {
  text-align: center;
  padding-bottom: 60px;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: -webkit-box;
  display: flex;
  -webkit-justify-content: space-between;
  -webkit-box-pack: justify;
      -ms-flex-pack: justify;
          justify-content: space-between;
  -webkit-flex-direction: column;
  -ms-flex-direction: column;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
          flex-direction: column;
}

.keyfigures__container__inner__number {
  font-size: 3.75rem;
  line-height: 1;
  margin-bottom: 0;
}

.keyfigures__container__inner__text {
  font-size: 1.25rem;
  line-height: 1.5;
  margin-bottom: 0;
}

.keyfigures__container__inner__text__currency {
  font-size: 0.875rem;
  line-height: 1.5;
}

@media screen and (min-width: 48em) {
  .keyfigures__container__inner__text__currency {
    font-size: 1.0625rem;
  }
}

.content__inner > div.keyfigures__container + :not(.keyfigures__container) {
  margin-top: 100px;
}

.entry-content > div.keyfigures__container + :not(.keyfigures__container) {
  margin-top: 120px;
}

.keyfigure-card-container {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
  -webkit-flex-direction: row;
      -ms-flex-direction: row;
          flex-direction: row;
  -webkit-flex-wrap: wrap;
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
  -webkit-box-pack: justify;
  -webkit-justify-content: space-between;
      -ms-flex-pack: justify;
          justify-content: space-between;
  -webkit-box-align: start;
  -webkit-align-items: flex-start;
      -ms-flex-align: start;
          align-items: flex-start;
  width: 100%;
  max-width: 43.75rem;
  margin: 0 auto;
}

.keyfigure-card-container:after, .keyfigure-card-container:before {
  clear: none !important;
  display: none !important;
}

.keyfigure-card-wrapper {
  position: relative;
  margin-bottom: 35px;
  width: -webkit-calc(100% - 15px);
  width: calc(100% - 15px);
}

@media screen and (min-width: 48em) {
  .keyfigure-card-wrapper {
    width: -webkit-calc(50% - 7.7px);
    width: calc(50% - 7.7px);
  }
}

.keyfigure-card-wrapper:hover {
  cursor: pointer;
}

.keyfigure-card-wrapper:hover .keyfigure-card__toggle {
  width: 50px;
  height: 50px;
}

.keyfigure-card-wrapper:hover .keyfigure-card__toggle:before {
  width: 18px;
  opacity: 1;
}

.keyfigure-card-wrapper:hover .keyfigure-card__toggle:after {
  height: 18px;
  opacity: 1;
}

.keyfigure-card {
  color: white;
  -webkit-transition: all 0.3s;
  -o-transition: all 0.3s;
  transition: all 0.3s;
  background: #9a0941;
  -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16);
          box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16);
  position: relative;
  width: 100%;
  height: 0;
  padding: 100% 0 0 0;
  display: block;
}

.keyfigure-card .keyfigure-card__inner {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  width: 100%;
  height: 100%;
}

.keyfigure-card p {
  margin: 0;
  width: 100%;
}

.keyfigure-card__inner {
  padding: 20px 20px 40px;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
      -ms-flex-direction: column;
          flex-direction: column;
  -webkit-flex-wrap: nowrap;
      -ms-flex-wrap: nowrap;
          flex-wrap: nowrap;
  -webkit-box-pack: justify;
  -webkit-justify-content: space-between;
      -ms-flex-pack: justify;
          justify-content: space-between;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
}

.keyfigure-card__title-wrapper {
  font-size: 1.0625rem;
  text-align: center;
  width: 100%;
  height: 35%;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
      -ms-flex-direction: column;
          flex-direction: column;
  -webkit-flex-wrap: nowrap;
      -ms-flex-wrap: nowrap;
          flex-wrap: nowrap;
  -webkit-box-pack: center;
  -webkit-justify-content: center;
      -ms-flex-pack: center;
          justify-content: center;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
}

.keyfigure-card__title {
  font-family: 'Akkurat-RegularBold', sans-serif;
}

.keyfigure-card__subtitle {
  font-family: 'Akkurat-Light', sans-serif;
}

.keyfigure-card__fraction-title {
  font-size: 0.875rem;
  font-family: 'Akkurat-Light', sans-serif;
  line-height: 23/14;
  color: #A79AD1;
  text-align: center;
  margin-bottom: 0;
}

.keyfigure-card__toggle {
  background: #9181C6;
  font-size: 0;
  position: absolute;
  width: 35px;
  height: 35px;
  -webkit-border-radius: 50%;
          border-radius: 50%;
  top: 100%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
      -ms-transform: translate(-50%, -50%);
          transform: translate(-50%, -50%);
  cursor: pointer;
  -webkit-transition: .2s all ease-in-out;
  -o-transition: .2s all ease-in-out;
  transition: .2s all ease-in-out;
  z-index: 3;
}

.keyfigure-card__toggle:before, .keyfigure-card__toggle:after {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  background: white;
  -webkit-transform: translate(-50%, -50%);
      -ms-transform: translate(-50%, -50%);
          transform: translate(-50%, -50%);
  -webkit-transition: .2s all ease-in-out;
  -o-transition: .2s all ease-in-out;
  transition: .2s all ease-in-out;
  opacity: 1;
}

.keyfigure-card__toggle:before {
  width: 14px;
  height: 1px;
}

.keyfigure-card__toggle:after {
  width: 1px;
  height: 14px;
}

.keyfigure-card__toggle:hover {
  width: 50px;
  height: 50px;
}

.keyfigure-card__toggle:hover:before {
  width: 21px;
}

.keyfigure-card__toggle:hover:after {
  height: 21px;
}

.keyfigure-card--is-open .keyfigure-card__toggle:after {
  opacity: 0;
  background: transparent;
}

.keyfigure-card__more-wrapper {
  background: white;
  -webkit-box-shadow: 0 10px 20px rgba(0, 0, 0, 0.16);
          box-shadow: 0 10px 20px rgba(0, 0, 0, 0.16);
  padding: 35px 25px;
  width: 100%;
  height: auto;
  left: 0;
  position: relative;
  color: #272523;
  display: none;
}

.keyfigure-card__more-wrapper.open {
  display: block;
}

.keyfigure-card__more-wrapper .keyfigure-card__fraction {
  margin-bottom: 30px;
}

.keyfigure-card__more-wrapper .fraction {
  text-align: center;
  font-size: 0.875rem;
  font-family: "Akkurat-RegularBold", sams-serif;
  color: #A79AD1;
  width: 100%;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
      -ms-flex-direction: column;
          flex-direction: column;
  -webkit-flex-wrap: wrap;
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
  -webkit-box-pack: center;
  -webkit-justify-content: center;
      -ms-flex-pack: center;
          justify-content: center;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
}

.keyfigure-card__more-wrapper .fraction p {
  padding: 5px 20px;
  width: auto;
  max-width: 100%;
  margin: 0;
  display: inline-block;
}

.keyfigure-card__more-wrapper .fraction p:first-of-type {
  border-bottom: 1px solid #9181C6;
}

.keyfigure-card__more-wrapper .fraction p:last-of-type {
  -webkit-transform: translateY(-1px);
      -ms-transform: translateY(-1px);
          transform: translateY(-1px);
  border-top: 1px solid #9181C6;
}

.keyfigure-card__more-wrapper p,
.keyfigure-card__more-wrapper .ns-image-wrap {
  margin-left: 0;
  margin-right: 0;
  width: 100%;
  margin-top: 0;
  font-size: 0.875rem;
  line-height: 1.25rem;
}

.keyfigure-card__more-wrapper p:last-of-type,
.keyfigure-card__more-wrapper .ns-image-wrap:last-of-type {
  margin-bottom: 0;
}

.keyfigure-card__more-wrapper .ns-image-wrap {
  margin-bottom: 3.4375rem;
}

.keyfigure-card__comparison {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
  -webkit-flex-direction: row;
      -ms-flex-direction: row;
          flex-direction: row;
  -webkit-flex-wrap: wrap;
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
  -webkit-box-pack: justify;
  -webkit-justify-content: space-between;
      -ms-flex-pack: justify;
          justify-content: space-between;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
  font-family: 'Akkurat-Light', sans-serif;
  width: 100%;
  height: 65%;
}

.keyfigure-card__comparison > div {
  width: -webkit-calc(50% - 10px);
  width: calc(50% - 10px);
  text-align: center;
}

.keyfigure-card__comparison .comparison__left {
  font-family: "Akkurat-RegularBold", sans-serif;
}

.keyfigure-card__comparison .comparison__year, .keyfigure-card__comparison .comparison__num-type {
  font-size: 1.0625rem;
  line-height: 1;
}

.keyfigure-card__comparison .comparison__number {
  font-size: 3rem;
  line-height: 1;
  margin: 5px 0;
}

.keyfigure-card__comparison .comparison__right {
  color: #A79AD1;
}

.keyfigure-card__table {
  width: 100%;
  font-size: 0.875rem;
  font-family: 'Akkurat-Regular', sans-serif;
}

.keyfigure-card__table-row {
  width: 100%;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
  -webkit-flex-direction: row;
      -ms-flex-direction: row;
          flex-direction: row;
  -webkit-flex-wrap: wrap;
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
  -webkit-box-pack: justify;
  -webkit-justify-content: space-between;
      -ms-flex-pack: justify;
          justify-content: space-between;
  -webkit-box-align: end;
  -webkit-align-items: flex-end;
      -ms-flex-align: end;
          align-items: flex-end;
}

.keyfigure-card__table-row:first-of-type span {
  border-bottom: 2px solid #9181C6;
}

.keyfigure-card__table-row:last-of-type span {
  border-bottom: 0;
}

.keyfigure-card__table-row span {
  display: block;
  border-bottom: 1px solid #9181C6;
  width: -webkit-calc(100%/3.6 - 6px);
  width: calc(100%/3.6 - 6px);
  text-align: right;
  padding: 3px 0;
}

.keyfigure-card__table-row span:first-of-type {
  width: -webkit-calc(44.44444% - 6px);
  width: calc(44.44444% - 6px);
  text-align: left;
}

.keyfigure-card__table-row span:last-of-type {
  color: #A79AD1;
}

h1,
.ns-title-chapter {
  color: #000000;
  font-family: "Akkurat-RegularBold", sans-serif;
  font-size: 1.3125rem;
  line-height: 1.1;
  text-align: center;
  margin-bottom: 40px;
}

@media screen and (min-width: 48em) {
  h1,
  .ns-title-chapter {
    font-size: 2.1875rem;
    margin-bottom: 100px;
  }
  h1 + .excel-download,
  .ns-title-chapter + .excel-download {
    margin-top: -60px;
  }
}

.bg-color-red h1,
.bg-color-red .ns-title-chapter,
.bg-color-dark-red h1,
.bg-color-dark-red .ns-title-chapter {
  color: #ffffff;
}

main h1,
main .ns-title-chapter {
  margin-top: 50px;
}

@media screen and (min-width: 48em) {
  main h1,
  main .ns-title-chapter {
    margin-top: 50px;
  }
}

.ns-title--red {
  color: #9a0941;
}

h2.ns-title-main,
.ns-title-main {
  border-bottom: 1px solid #9181C6;
  color: #9181C6;
  font-weight: normal;
  font-size: 1.75rem;
  line-height: 1.5625rem;
  padding-bottom: 1.25rem;
  margin-bottom: 1.25rem;
  display: block;
}

@media screen and (min-width: 48em) {
  h2.ns-title-main,
  .ns-title-main {
    font-size: 2.8125rem;
    line-height: 2.8125rem;
  }
}

h2,
h3,
h4,
h5,
h6 {
  font-size: 1.0625rem;
}

h1 .ns-title-h2,
.ns-title-chapter .ns-title-h2 {
  margin-top: 0;
}

.ns-title--margin-bottom {
  margin-bottom: 30px;
}

.quote + .ns-title-h2 {
  margin-top: 0;
}

.ns-title-h2,
.ns-title-h3,
.ns-title-h4 {
  font-family: "Akkurat-RegularBold", sans-serif;
  margin-top: 45px;
}

.ns-title-h4 {
  color: #62AEDF;
  font-family: 'Akkurat-Light';
  display: block;
}

.cg-selection-title {
  font-family: "Akkurat-Regular", sans-serif;
}

.ns-title-revisionsbericht {
  font-size: 1.25rem;
  font-weight: bold;
  margin-bottom: 5px;
  line-height: 1.5rem;
  margin-top: 45px;
}

.ns-highlight {
  color: #f39a33 !important;
}

.ns-bold {
  font-family: "Akkurat-RegularBold", sans-serif !important;
}

.ns-text-align--center {
  text-align: center !important;
}

.ns-text-align--right {
  text-align: right !important;
}

#chartGenerator {
  margin: 0 auto;
  min-width: 320px;
}

body:not(.is_frontPage) main {
  background-color: #F5F5F5;
  padding: 40px 25px 100px 25px;
}

@media screen and (min-width: 48em) {
  body:not(.is_frontPage) main {
    padding-bottom: 140px;
  }
}

html {
  font-size: 16px !important;
}

body {
  color: #333333;
  font-family: "Akkurat-Light", sans-serif;
  font-size: 1.0625rem;
  line-height: 1.5rem;
  margin-top: 68px;
  height: 100%;
  min-height: 100%;
  overflow: auto;
  overscroll-behavior: none;
}

@media screen and (min-width: 48em) {
  body {
    margin-top: 120px;
  }
}

body .bg-color-bright {
  background-color: #f5f5f5;
}

body .bg-color-red {
  background-color: #9a0941 !important;
  color: #ffffff;
  -webkit-transition: all 0.3s;
  -o-transition: all 0.3s;
  transition: all 0.3s;
}

body .bg-color-dark-red {
  background-color: #7a0b35 !important;
  -webkit-transition: all 0.3s;
  -o-transition: all 0.3s;
  transition: all 0.3s;
}

body .bg-color-dark-red.bg--darker {
  background-color: #63092b !important;
}

body .row {
  display: block;
  max-width: 47.5rem;
}

@media screen and (min-width: 62em) {
  body .row {
    max-width: 60.625rem;
  }
}

@media screen and (min-width: 75em) {
  body .row {
    max-width: 73.125rem;
  }
}

body .content__inner {
  margin-top: 3.125rem;
  margin-bottom: 6.25rem;
}

@media screen and (min-width: 48em) {
  body .content__inner {
    margin-top: 5.3125rem;
  }
}

.nav-backdrop {
  background: rgba(0, 0, 0, 0.1);
  width: 100%;
  height: 100%;
  position: fixed;
  top: 0;
  left: 0;
  z-index: 999;
}

a,
.ns-anchor {
  color: #9a0941;
}

a:hover,
.ns-anchor:hover {
  color: #9a0941;
}

.bg-color-red a,
.bg-color-red .ns-anchor {
  color: #f39a33;
}

.bg-color-red a:hover,
.bg-color-red .ns-anchor:hover {
  color: #f39a33;
}

h2 h3,
h4,
h5,
h6 {
  font-size: 1.0625rem;
  margin-top: 0;
  margin-bottom: 0;
  text-align: left;
  display: inline-block;
}

strong {
  font-weight: bold;
}

.cg-selection-title {
  font-size: inherit;
  display: block;
}

#cgFlyout2 ul.cg-selection-controls {
  top: -25px !important;
}

#cgSelectYears {
  height: 63px !important;
  -webkit-box-sizing: content-box !important;
          box-sizing: content-box !important;
  border-top: solid 1px #ddd !important;
  border-bottom: solid 1px #ddd !important;
}

#cgFlyout2 ul.cg-selection li {
  margin-top: 2px;
}

@media screen and (min-width: 48em) {
  #cgFlyout2 ul.cg-selection li {
    width: 85px !important;
  }
}

.footer-container {
  font-size: 0.875rem;
}

.footer-container a {
  color: #565655;
}

.footer-container a:hover, .footer-container a:visited {
  color: #333333;
  font-family: "Akkurat-Regular", sans-serif;
}

.footer-container .upButton-container {
  padding-top: 70px;
  padding-bottom: 70px;
  padding-right: 0.9375rem;
  padding-left: 0.9375rem;
}

@media screen and (min-width: 75em) {
  .footer-container .upButton-container {
    padding-top: 130px;
    padding-bottom: 55px;
  }
}

.footer-container .upButton-container a {
  display: inline-block;
  left: 50%;
  position: relative;
  -webkit-transform: translateX(-50%);
  -ms-transform: translateX(-50%);
      transform: translateX(-50%);
}

.footer-container .upButton-container a .icon-up {
  width: 50px;
  -webkit-transition: 0.3s all ease;
  -o-transition: 0.3s all ease;
  transition: 0.3s all ease;
}

.footer-container .upButton-container a .icon-up:hover {
  margin-top: -10px;
  margin-bottom: 10px;
}

@media screen and (min-width: 75em) {
  .footer-container .upButton-container a .icon-up {
    width: 55px;
  }
}

.footer-container footer {
  padding-bottom: 22px;
  padding-right: 0.9375rem;
  padding-left: 0.9375rem;
}

.footer-container footer .footer {
  border-top: 1px solid #EEEEEE;
  padding: 20px 0 5px;
  *zoom: 1;
}

.footer-container footer .footer:before, .footer-container footer .footer:after {
  display: table;
  content: '';
  line-height: 0;
}

.footer-container footer .footer:after {
  clear: both;
}

@media screen and (min-width: 48em) {
  .footer-container footer .footer {
    margin-left: 15px;
    margin-right: 15px;
    padding: 25px 20px 0;
  }
}

@media screen and (min-width: 62em) {
  .footer-container footer .footer {
    margin-left: 0;
    margin-right: 0;
    padding: 28px 58px 0 65px;
  }
}

.footer-container footer .footer ul {
  margin-left: 0;
}

.footer-container footer .footer__social {
  float: none;
  margin-left: 0;
  margin-bottom: 10px;
}

@media screen and (min-width: 48em) {
  .footer-container footer .footer__social {
    float: left;
    margin-top: -5px;
    margin-bottom: 0;
  }
}

.footer-container footer .footer__social ul {
  display: inline-block;
  margin-bottom: 0;
}

.footer-container footer .footer__social ul:first-child {
  float: none;
}

@media screen and (min-width: 62em) {
  .footer-container footer .footer__social ul:first-child {
    float: left;
  }
}

.footer-container footer .footer__social__elem {
  float: left;
  padding-right: 3px;
}

.footer-container footer .footer__social__elem img {
  margin-top: -3px;
}

.footer-container footer .footer__copyright {
  border-top: 1px solid #EEEEEE;
  float: none;
  margin-right: 0;
  margin-left: 0;
  padding-top: 20px;
}

@media screen and (min-width: 48em) {
  .footer-container footer .footer__copyright {
    border-top: 0;
    float: right;
    padding-top: 0;
  }
}

.footer-container footer .footer__copyright ul {
  display: -webkit-flex;
  display: -ms-flexbox;
  display: -webkit-box;
  display: flex;
  -webkit-flex-direction: column-reverse;
  -ms-flex-direction: column-reverse;
  -webkit-box-orient: vertical;
  -webkit-box-direction: reverse;
          flex-direction: column-reverse;
  margin-bottom: 0;
}

@media screen and (min-width: 48em) {
  .footer-container footer .footer__copyright ul {
    -webkit-flex-direction: row-reverse;
    -ms-flex-direction: row-reverse;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
            flex-direction: row-reverse;
  }
}

.footer-container footer .footer__copyright ul li {
  margin-bottom: 15px;
}

@media screen and (min-width: 48em) {
  .footer-container footer .footer__copyright ul li {
    margin-bottom: 0;
  }
  .footer-container footer .footer__copyright ul li:not(:last-of-type) {
    padding-left: 22px;
  }
  .footer-container footer .footer__copyright ul li:first-of-type {
    padding-right: 7px;
  }
}

.footer-container footer .footer__copyright ul li:last-of-type a:hover, .footer-container footer .footer__copyright ul li:last-of-type a:visited {
  color: #333333;
  cursor: default;
  font-family: "Akkurat-Light", sans-serif;
}

.footer-container footer .footer__copyright ul li a {
  padding: 0;
}

.header {
  background-color: transparent;
  color: #9a0941;
  font-size: 1.3125rem;
  left: 0;
  position: fixed;
  right: 0;
  top: 0;
  width: 100%;
  z-index: 99999;
}

@media screen and (min-width: 48em) {
  .header {
    background-color: #ffffff;
    font-size: 20px;
    height: 120px;
  }
}

@media screen and (min-width: 769px) {
  .header {
    background-color: #ffffff;
    font-size: 20px;
    height: 120px;
  }
}

@media screen and (min-width: 62em) {
  .header {
    font-size: 1.5625rem;
  }
}

.header .header__content {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
  -webkit-flex-direction: row;
      -ms-flex-direction: row;
          flex-direction: row;
  -webkit-flex-wrap: wrap;
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
  -webkit-box-pack: justify;
  -webkit-justify-content: space-between;
      -ms-flex-pack: justify;
          justify-content: space-between;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
  padding: 0;
}

@media screen and (min-width: 48em) {
  .header .header__content {
    height: auto;
    padding: 43px 5px 46px;
  }
}

@media screen and (min-width: 62em) {
  .header .header__content {
    padding-left: 0;
    padding-right: 0;
  }
}

.header .header__content .title-bar {
  background-color: #ffffff;
  color: #9a0941;
  display: block;
  font-size: 0.625rem;
  padding: 18px 20px;
  width: 100%;
}

@media screen and (min-width: 48em) {
  html.no-js .header .header__content .title-bar {
    display: none;
  }
}

.header .header__content .title-bar li a {
  padding: 0;
}

.header .header__content .title-bar p {
  margin-bottom: 0;
}

.header .header__content .title-bar .title-bar-title {
  font-weight: normal;
  line-height: 1.8;
}

.header .header__content .title-bar .title-bar-title .title-bar-title--bold {
  font-size: 0.625rem;
  font-weight: bold;
  line-height: 1;
}

.header .header__content .title-bar .logo-small {
  display: inline-block;
  float: right;
  margin-top: 3px;
  width: 88px;
}

.header .header__content .title-bar .logo-small img {
  max-height: 30px;
}

.header .header__content .title-bar button {
  margin: 9px 20px 5px 0;
  width: 27px;
}

.header .header__content .title-bar button.menu-icon::after {
  background-color: #9a0941;
  -webkit-box-shadow: 0 7px 0 #9a0941, 0 14px 0 #9a0941;
          box-shadow: 0 7px 0 #9a0941, 0 14px 0 #9a0941;
  height: 3px;
}

.header .header__content .nav {
  background-color: #9a0941;
  float: left;
  min-height: 560px;
  padding: 7.5px 15px 50px 15px;
  width: 100%;
  -webkit-flex-direction: column;
  -ms-flex-direction: column;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
          flex-direction: column;
  -webkit-justify-content: flex-start;
  -webkit-box-pack: start;
      -ms-flex-pack: start;
          justify-content: flex-start;
  -webkit-flex-wrap: nowrap;
      -ms-flex-wrap: nowrap;
          flex-wrap: nowrap;
  overflow-y: auto;
  position: absolute;
  top: 66px;
  height: 100%;
  min-height: -webkit-calc(100vh - 66px);
  min-height: calc(100vh - 66px);
}

@media screen and (min-width: 48em) {
  .header .header__content .nav {
    background-color: #ffffff;
    padding-top: 0;
    padding-left: 0;
    padding-bottom: 0;
    min-height: auto;
    min-height: initial;
    width: 85%;
    position: static;
    overflow-y: visible;
    -webkit-flex-direction: row;
    -ms-flex-direction: row;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
            flex-direction: row;
    -webkit-justify-content: space-between;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between;
    min-height: auto;
  }
}

@media screen and (min-width: 62em) {
  .header .header__content .nav {
    width: 83%;
  }
}

@media screen and (min-width: 75em) {
  .header .header__content .nav {
    width: 86%;
  }
}

.header .header__content .nav ul {
  background-color: #9a0941;
  color: #ffffff;
}

@media screen and (min-width: 48em) {
  .header .header__content .nav ul {
    background-color: #ffffff;
  }
}

.header .header__content .nav .top-bar-left {
  -webkit-box-flex: 0;
  -webkit-flex: 0 0 auto;
      -ms-flex: 0 0 auto;
          flex: 0 0 auto;
  -webkit-box-ordinal-group: 3;
  -webkit-order: 2;
      -ms-flex-order: 2;
          order: 2;
  width: 100%;
}

@media screen and (min-width: 48em) {
  .header .header__content .nav .top-bar-left {
    -webkit-box-ordinal-group: 1;
    -webkit-order: 0;
        -ms-flex-order: 0;
            order: 0;
    width: auto;
  }
}

.header .header__content .nav .top-bar-left .top-bar__service-menu {
  padding-top: 0;
}

@media screen and (max-width: 61.9375em) {
  .header .header__content .nav .top-bar-left .top-bar__service-menu .submenu {
    display: none;
  }
}

.header .header__content .nav .top-bar-left .top-bar__service-menu .submenu.is-dropdown-submenu {
  left: 50%;
  margin-top: 0;
  position: relative;
  -webkit-transform: translateX(-50%);
      -ms-transform: translateX(-50%);
          transform: translateX(-50%);
  top: 114%;
}

@media screen and (min-width: 48em) {
  .header .header__content .nav .top-bar-left .top-bar__service-menu .submenu.is-dropdown-submenu {
    margin-top: 54px;
    position: absolute;
  }
}

@media screen and (min-width: 62em) {
  .header .header__content .nav .top-bar-left .top-bar__service-menu .submenu.is-dropdown-submenu {
    margin-top: 48px;
  }
}

.header .header__content .nav .top-bar-left .top-bar__service-menu .submenu.is-dropdown-submenu.top-bar__service-menu__search {
  min-width: 300px;
  -webkit-transform: translateX(-5%);
      -ms-transform: translateX(-5%);
          transform: translateX(-5%);
  left: 0;
}

.header .header__content .nav .top-bar-left .top-bar__service-menu .submenu.is-dropdown-submenu.top-bar__service-menu__search:after {
  -webkit-transform: translateX(0);
      -ms-transform: translateX(0);
          transform: translateX(0);
  left: 5%;
}

.header .header__content .nav .top-bar-left .top-bar__service-menu .top-bar__service-menu__item a {
  background: url("./../helsana/assets/svg/Helsana_GB_Dropdown2.svg") no-repeat right 0 bottom 5px;
  -webkit-background-size: 25px 25px;
          background-size: 25px;
  background-position: right center;
}

@media screen and (min-width: 48em) {
  .header .header__content .nav .top-bar-left .top-bar__service-menu .top-bar__service-menu__item a {
    background: none;
  }
}

.header .header__content .nav .top-bar-left .top-bar__service-menu .top-bar__service-menu__item ul li a {
  background: none;
}

.header .header__content .nav .top-bar-left .top-bar__service-menu .top-bar__service-menu__item:first-of-type a {
  background: none;
}

.header .header__content .nav .top-bar-left .top-bar__service-menu .top-bar__service-menu__item__image {
  float: left;
  margin-right: 5px;
  width: 21px;
}

.header .header__content .nav .top-bar-left .top-bar__service-menu .top-bar__service-menu__languages {
  font-size: 1.3125rem;
}

.header .header__content .nav .top-bar-left .top-bar__service-menu .top-bar__service-menu__languages .top-bar__service-menu__languages__link {
  display: inline-block;
  padding-top: 10px;
  width: 100%;
}

@media screen and (min-width: 48em) {
  .header .header__content .nav .top-bar-left .top-bar__service-menu .top-bar__service-menu__languages .top-bar__service-menu__languages__link {
    padding-top: 0px;
  }
}

.header .header__content .nav .top-bar-left .top-bar__service-menu .top-bar__service-menu__languages .top-bar__service-menu__languages__lang {
  float: left;
}

.header .header__content .nav .top-bar-left .top-bar__service-menu .top-bar__service-menu__languages img {
  display: block;
  margin-right: 5px;
}

@media screen and (min-width: 48em) {
  .header .header__content .nav .top-bar-left .top-bar__service-menu .top-bar__service-menu__languages img {
    background-color: #ffffff;
    display: block;
    float: left;
    position: initial;
  }
}

.header .header__content .nav .top-bar-left .top-bar__service-menu .top-bar__service-menu__languages img.top-bar__service-menu__languages__lang--hideOnScreen {
  display: inline-block;
}

@media screen and (min-width: 48em) {
  .header .header__content .nav .top-bar-left .top-bar__service-menu .top-bar__service-menu__languages img.top-bar__service-menu__languages__lang--hideOnScreen {
    display: none;
  }
}

.header .header__content .nav .top-bar-left .top-bar__service-menu .top-bar__service-menu__languages__item,
.header .header__content .nav .top-bar-left .top-bar__service-menu .top-bar__service-menu__downloads__item {
  font-size: 0.875rem;
}

@media screen and (min-width: 48em) {
  .header .header__content .nav .top-bar-left .top-bar__service-menu .top-bar__service-menu__languages__item,
  .header .header__content .nav .top-bar-left .top-bar__service-menu .top-bar__service-menu__downloads__item {
    font-size: 1.0625rem;
  }
}

.header .header__content .nav .top-bar-left .top-bar__service-menu .top-bar__service-menu__languages__item a,
.header .header__content .nav .top-bar-left .top-bar__service-menu .top-bar__service-menu__downloads__item a {
  padding: 12px 0px;
}

@media screen and (min-width: 48em) {
  .header .header__content .nav .top-bar-left .top-bar__service-menu .top-bar__service-menu__languages__item a,
  .header .header__content .nav .top-bar-left .top-bar__service-menu .top-bar__service-menu__downloads__item a {
    padding: 3px 30px;
  }
}

.header .header__content .nav .top-bar-left .top-bar__service-menu .search {
  width: 83%;
  margin: 0 auto;
}

.header .header__content .nav .top-bar-left .top-bar__service-menu .search input {
  background-color: #9a0941;
  border-bottom: 0;
  border-top: none;
  border-left: none;
  border-right: none;
  color: #ffffff;
  font-size: 1.0625rem;
  height: auto;
  max-width: 100%;
  padding: 0 0 10px 0;
  -webkit-box-shadow: none;
          box-shadow: none;
}

@media screen and (min-width: 48em) {
  .header .header__content .nav .top-bar-left .top-bar__service-menu .search input {
    border-bottom: 1px solid #f39a33;
    font-size: 1.5625rem;
    height: 50px;
  }
}

.header .header__content .nav .top-bar-left .top-bar__service-menu .search-placeholder {
  border: none;
}

.header .header__content .nav .top-bar-left .hideOn-large-screen {
  display: none;
}

@media screen and (min-width: 48em) {
  .header .header__content .nav .top-bar-left .hideOn-large-screen {
    display: block;
  }
}

.header .header__content .nav .top-bar-left .hideOn-small-screen {
  display: block;
}

@media screen and (min-width: 48em) {
  .header .header__content .nav .top-bar-left .hideOn-small-screen {
    display: none;
  }
}

.header .header__content .nav .top-bar-center {
  width: 100%;
}

.header .header__content .nav .top-bar-center .top-bar__main-menu > li a {
  padding-left: 20px;
  padding-right: 20px;
  width: 100%;
}

@media screen and (min-width: 48em) {
  .header .header__content .nav .top-bar-center .top-bar__main-menu > li a {
    width: auto;
  }
}

@media screen and (min-width: 62em) {
  .header .header__content .nav .top-bar-center .top-bar__main-menu > li a {
    padding-left: 30px;
    padding-right: 30px;
  }
}

.header .header__content .nav .top-bar-center .top-bar__main-menu > li.is-dropdown-submenu-parent ul.first-sub {
  left: 50%;
  -webkit-transform: translateX(-50%);
      -ms-transform: translateX(-50%);
          transform: translateX(-50%);
  right: auto;
}

@media screen and (min-width: 48em) {
  .header .header__content .nav .top-bar-center .top-bar__main-menu > li.is-dropdown-submenu-parent ul.first-sub {
    position: absolute;
    top: 76px;
  }
}

@media screen and (min-width: 62em) {
  .header .header__content .nav .top-bar-center .top-bar__main-menu > li.is-dropdown-submenu-parent ul.first-sub {
    top: 30px;
  }
}

.header .header__content .nav .top-bar-center .top-bar__main-menu > li.is-dropdown-submenu-parent ul.first-sub > li,
.header .header__content .nav .top-bar-center .top-bar__main-menu > li.is-dropdown-submenu-parent ul.first-sub a {
  display: block;
}

.header .header__content .nav .top-bar-center .top-bar__main-menu > li.is-dropdown-submenu-parent.current-menu-ancestor > a {
  font-family: "Akkurat-RegularBold", sans-serif;
}

.header .header__content .nav .top-bar-center .top-bar__main-menu > li.is-accordion-submenu-parent.current-menu-ancestor > a {
  font-family: "Akkurat-RegularBold", sans-serif;
}

.header .header__content .nav .top-bar-center .top-bar__main-menu .top-bar__main-menu__item a {
  background: url("./../helsana/assets/svg/Helsana_GB_Dropdown2.svg") no-repeat right 0 bottom 8px;
  -webkit-background-size: 25px 25px;
          background-size: 25px;
  background-position: right center;
}

@media screen and (min-width: 48em) {
  .header .header__content .nav .top-bar-center .top-bar__main-menu .top-bar__main-menu__item a {
    background: none;
  }
}

.header .header__content .nav .top-bar-center .top-bar__main-menu .top-bar__main-menu__item ul li a {
  background: none;
}

.header .header__content .nav .top-bar-center .top-bar__main-menu .top-bar__main-menu__item:first-of-type a {
  background: none;
}

.header .header__content .nav .top-bar-center .top-bar__main-menu .top-bar__main-menu__link {
  border-bottom: 1px solid #cb85a0;
  padding: 10px 0;
}

@media screen and (min-width: 48em) {
  .header .header__content .nav .top-bar-center .top-bar__main-menu .top-bar__main-menu__link {
    border-bottom: 1px solid #ffffff;
    padding: 0 25px 0 0;
  }
}

@media screen and (min-width: 48em) {
  .header .header__content .nav .menu.align-center {
    -webkit-flex-wrap: nowrap;
        -ms-flex-wrap: nowrap;
            flex-wrap: nowrap;
  }
}

.header .header__content .nav .menu.align-center li {
  display: block;
}

@media screen and (min-width: 48em) {
  .header .header__content .nav .menu.align-center li {
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
  }
}

.header .header__content .nav .menu.align-center > li {
  position: relative;
}

.header .header__content .nav .menu li a {
  border-bottom: 1px solid #cb85a0;
  padding: 10px 0;
}

@media screen and (min-width: 48em) {
  .header .header__content .nav .menu li a {
    border-bottom: none;
    padding: 0 15px;
  }
}

.header .header__content .nav .menu li a.top-bar__service-menu__zoomcontainer__link {
  padding-left: 0;
}

@media screen and (min-width: 48em) {
  .header .header__content .nav .menu li a.top-bar__service-menu__zoomcontainer__link, .header .header__content .nav .menu li a.top-bar__service-menu__downloads__link {
    padding-top: 0px;
  }
}

.header .header__content .nav .menu li .lang-navi {
  font-family: "Akkurat-RegularBold";
}

@media screen and (min-width: 48em) {
  .header .header__content .nav .menu li .lang-navi {
    font-size: 20px;
  }
}

.header .header__content .nav .menu li .top-bar__main-menu__bericht {
  margin-left: 0;
}

@media screen and (max-width: 61.9375em) {
  .header .header__content .nav .menu li .top-bar__main-menu__bericht {
    display: none;
    margin-top: 0;
    position: static;
    width: auto;
  }
}

.header .header__content .nav .menu > li > a {
  color: #ffffff;
}

@media screen and (min-width: 48em) {
  .header .header__content .nav .menu > li > a {
    color: #9a0941;
  }
}

@media screen and (min-width: 48em) {
  .header .header__content .nav .menu > li > a:hover {
    color: #9a0941;
  }
}

.header .header__content .nav .menu > li .is-submenu-item.top-bar__main-menu__menu_item {
  font-size: 0.875rem;
}

@media screen and (min-width: 48em) {
  .header .header__content .nav .menu > li .is-submenu-item.top-bar__main-menu__menu_item {
    font-size: 1.0625rem;
  }
}

.header .header__content .nav .menu > li .is-submenu-item.top-bar__main-menu__menu_item a {
  padding: 12px 0;
}

@media screen and (min-width: 48em) {
  .header .header__content .nav .menu > li .is-submenu-item.top-bar__main-menu__menu_item a {
    padding: 3px 30px;
  }
}

.header .header__content .nav .menu > li .is-submenu-item > a {
  color: #ffffff;
  line-height: 1.42857;
  padding: 3px 30px;
}

@media screen and (min-width: 48em) {
  .header .header__content .nav .menu > li .is-submenu-item > a:hover {
    font-family: "Akkurat-RegularBold", sans-serif;
    color: #ffffff;
  }
}

.header .header__content .nav .menu > li .is-submenu-item a.current-menu-item {
  font-family: "Akkurat-RegularBold", sans-serif;
}

.header .header__content .nav .menu .top-bar__main-menu__link--active {
  font-family: "Akkurat-RegularBold", sans-serif;
}

.header .header__content .nav .dropdown.menu.medium-horizontal > li.is-dropdown-submenu-parent > a::after {
  border-top-style: none;
}

.header .header__content .nav .dropdown.menu.medium-horizontal > li.is-dropdown-submenu-parent > a {
  padding-right: 18px;
}

.header .header__content .nav .dropdown.menu.medium-horizontal > li.is-dropdown-submenu-parent > a.top-bar__main-menu__link {
  white-space: nowrap;
  padding-right: 18px;
  padding-left: 18px;
}

@media screen and (min-width: 62em) {
  .header .header__content .nav .dropdown.menu.medium-horizontal > li.is-dropdown-submenu-parent > a.top-bar__main-menu__link {
    padding-right: 30px;
    padding-left: 30px;
  }
}

.header .header__content .nav .submenu.is-dropdown-submenu {
  background-color: #9a0941;
  border: none;
  font-size: 0.875rem;
  margin-top: 52px;
  padding: 0;
  width: auto;
  white-space: nowrap;
}

@media screen and (min-width: 48em) {
  .header .header__content .nav .submenu.is-dropdown-submenu {
    font-size: 1.0625rem;
    padding: 20px 0;
  }
}

@media screen and (min-width: 62em) {
  .header .header__content .nav .submenu.is-dropdown-submenu {
    margin-top: 44px;
  }
}

.header .header__content .nav .submenu.top-bar__service-menu__languages__submenu {
  min-width: inherit;
  top: -9px;
  width: 100%;
}

@media screen and (min-width: 48em) {
  .header .header__content .nav .submenu.top-bar__service-menu__languages__submenu {
    min-width: 86px;
  }
}

.header .header__content .nav .submenu.is-dropdown-submenu::after {
  border-color: transparent transparent #9a0941 transparent;
  border-width: 20px;
  border-style: solid;
  border-top: 0px solid transparent;
  content: '';
  display: none;
  position: absolute;
  top: -20px;
  left: 50%;
  -webkit-transform: translateX(-50%);
      -ms-transform: translateX(-50%);
          transform: translateX(-50%);
}

@media screen and (min-width: 48em) {
  .header .header__content .nav .submenu.is-dropdown-submenu::after {
    display: block;
  }
}

.header .header__content .top-bar-right {
  float: left;
  padding-top: 2px;
  width: 14%;
  position: relative;
  z-index: 5;
}

@media screen and (min-width: 62em) {
  .header .header__content .top-bar-right {
    width: 14%;
  }
}

.header .header__content .top-bar-right .logo {
  margin-top: 0px;
  width: 113px;
  margin-left: -2px;
}

@media screen and (min-width: 62em) {
  .header .header__content .top-bar-right .logo {
    width: 160px;
    margin-top: 0px;
    margin-left: 0;
  }
}

@media screen and (min-width: 75em) {
  .header .header__content .top-bar-right .logo {
    margin-left: -1px;
  }
}

.accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle) > a::after {
  display: none;
}

@media screen and (max-width: 47.9375em) {
  .no-js .top-bar {
    display: none;
  }
}

@media screen and (min-width: 48em) {
  .no-js .title-bar {
    display: none;
  }
}

html:not(.page-loaded) header ul > li > ul {
  display: none;
}

html:not(.page-loaded) header .title-bar {
  display: none;
}

@media screen and (min-width: 48em) {
  .top-bar-center {
    position: relative;
    left: -27px;
  }
}

@media screen and (min-width: 62em) {
  .top-bar-center {
    left: -13px;
  }
}

@media screen and (min-width: 48em) {
  .header .header__content .nav .dropdown.menu.medium-horizontal > li.is-dropdown-submenu-parent > a.top-bar__main-menu__link,
  .header .header__content .nav .top-bar-center .top-bar__main-menu .top-bar__main-menu__link {
    padding-right: 20px;
    padding-left: 20px;
    position: relative;
    top: -2px;
  }
}

@media screen and (min-width: 62em) {
  .header .header__content .nav .dropdown.menu.medium-horizontal > li.is-dropdown-submenu-parent > a.top-bar__main-menu__link,
  .header .header__content .nav .top-bar-center .top-bar__main-menu .top-bar__main-menu__link {
    padding-right: 30px;
    padding-left: 30px;
    top: 0;
  }
}

.white-placeholder {
  color: white;
}

.header .header__content .nav .top-bar-left .top-bar__service-menu .top-bar__service-menu__languages img.top-bar__service-menu__languages__lang {
  display: none;
}

@media screen and (min-width: 48em) {
  .header .header__content .nav .top-bar-left .top-bar__service-menu .top-bar__service-menu__languages img.top-bar__service-menu__languages__lang {
    display: block;
  }
}

.lang-navi.top-bar__service-menu__languages__lang {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
  -webkit-flex-direction: row;
      -ms-flex-direction: row;
          flex-direction: row;
  -webkit-flex-wrap: wrap;
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
  -webkit-box-pack: start;
  -webkit-justify-content: flex-start;
      -ms-flex-pack: start;
          justify-content: flex-start;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
}

.header .header__content .nav .top-bar-left .top-bar__service-menu .top-bar__service-menu__languages .top-bar__service-menu__languages__link,
.top-bar__service-menu__item.is-accordion-submenu-parent {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
  -webkit-flex-direction: row;
      -ms-flex-direction: row;
          flex-direction: row;
  -webkit-flex-wrap: wrap;
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
  -webkit-box-pack: justify;
  -webkit-justify-content: space-between;
      -ms-flex-pack: justify;
          justify-content: space-between;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
  width: 100%;
}

.header .header__content .nav .top-bar-left .top-bar__service-menu .top-bar__service-menu__languages .top-bar__service-menu__languages__link a,
.header .header__content .nav .top-bar-left .top-bar__service-menu .top-bar__service-menu__languages .top-bar__service-menu__languages__link ul,
.top-bar__service-menu__item.is-accordion-submenu-parent a,
.top-bar__service-menu__item.is-accordion-submenu-parent ul {
  width: 100%;
}

.ns-accordion-container {
  max-width: 820px;
  margin: 0 auto;
}

.accordion-click-area {
  cursor: pointer;
}

.accordion-click-area.open > h2:after {
  -webkit-transform: rotate(-180deg);
  -ms-transform: rotate(-180deg);
      transform: rotate(-180deg);
}

.accordion-title {
  border-top: 1px solid #cccccc;
  position: relative;
  font-family: "Akkurat-RegularBold", sans-serif;
  font-size: 1.125rem;
  margin: 0;
  text-align: left;
  font-weight: normal;
}

.accordion-title:hover, .accordion-title:focus {
  color: #000000;
}

.accordion-title:focus {
  background: transparent;
}

.accordion-title:focus:hover {
  background: #E5E5E5;
}

.accordion-title:after {
  content: "";
  background-image: url("./../helsana/assets/svg/Helsana_GB_Akkordeon.svg");
  -webkit-background-size: contain;
          background-size: contain;
  width: 1.5625rem;
  height: 1.5625rem;
  display: block;
  position: absolute;
  right: 0.125rem;
  bottom: 0.9375rem;
}

.accordion-inner {
  padding: 0.9375rem 0.9375rem 1.5625rem 0.9375rem;
}

@media screen and (min-width: 48em) {
  .accordion-inner {
    padding: 0.9375rem 1.875rem 1.5625rem 1.875rem;
  }
}

.accordion-inner > * {
  margin-left: 0;
  margin-right: 0;
}

.accordion-inner .embed-container {
  max-width: 820px;
}

body[class*="category-notes"] .ns-accordion-container > * {
  margin-left: 0;
  margin-right: 0;
}

body[class*="category-notes"] .category-title {
  max-width: 820px;
  margin-left: auto;
  margin-right: auto;
}

/* NOTES NEW STUFF */
/* overwriting plugin */
.nhsnote-box__background {
  position: absolute;
  background-color: transparent;
  width: 100%;
  height: 100%;
}

@media screen and (min-width: 48em) {
  .nhsnote-box__background {
    position: fixed;
  }
}

.nhsnote-box__inner {
  top: 66px;
  left: 0;
  -webkit-transform: translate(0, 0);
      -ms-transform: translate(0, 0);
          transform: translate(0, 0);
  background-color: #F9F9F8;
  overflow: visible;
  padding: 30px 30px 80px 30px;
  width: 100%;
  height: -webkit-calc(100% - 66px);
  height: calc(100% - 66px);
  position: fixed;
}

@media screen and (min-width: 48em) {
  .nhsnote-box__inner {
    position: absolute;
    width: 43.75rem;
    max-width: 100%;
    background-color: white;
    -webkit-box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);
            box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);
    margin-top: 40px;
    max-height: 40vh;
    height: auto;
    padding: 30px;
  }
}

@media screen and (min-width: 48em) {
  .note-small {
    width: 520px;
    max-width: 100%;
  }
}

.nhsnote-box {
  position: absolute;
  margin-top: -7.5rem;
  padding-bottom: 7.5rem;
}

.nhsnote-box__close {
  top: 30px;
  right: 30px;
  color: #9a0941;
  opacity: 1;
  cursor: pointer;
  width: 25px;
  height: 25px;
}

.nhsnote-box__content {
  padding: 0;
  overflow-y: visible;
  overflow-scrolling: touch;
  -webkit-overflow-scrolling: touch;
  max-width: 100%;
  max-height: 100%;
}

.nhsnote-box__content #content div:first-of-type.embed-container {
  margin-top: 20px;
}

.nhsnote-box__content #content div:first-of-type(:not(.embed-container)) {
  margin-top: 0;
}

/* overwriting plugin end */
.nhsnote {
  overflow: visible;
  top: 66px;
  left: 0;
  width: 100%;
  height: 100%;
  background: #F9F9F8;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
  -webkit-flex-direction: row;
      -ms-flex-direction: row;
          flex-direction: row;
  -webkit-flex-wrap: wrap;
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
  -webkit-box-pack: justify;
  -webkit-justify-content: space-between;
      -ms-flex-pack: justify;
          justify-content: space-between;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
}

.nhsnote .embed-container {
  max-width: 100%;
  width: 100%;
}

.nhsnote .embed-container .ns-table {
  min-width: 100%;
}

.nhsnote__title {
  margin-left: 0;
  margin-right: 0;
  color: #62AEDF;
  font-size: 0.875rem;
  font-family: "Akkurat-RegularBold", sans-serif;
  width: -webkit-calc(100% - 45px);
  width: calc(100% - 45px);
}

@media screen and (min-width: 48em) {
  .nhsnote__title {
    width: 100%;
  }
}

.nhsnote .ns-title-h2:first-of-type {
  display: none;
}

@media screen and (min-width: 48em) {
  .nhsnote {
    top: 0;
    max-height: 40vh;
    height: auto;
    background: white;
  }
  .nhsnote--small .note-triangle {
    -webkit-transform: translateX(-62%);
        -ms-transform: translateX(-62%);
            transform: translateX(-62%);
  }
}

.nhsnote .ns-title-h2 {
  margin-left: 0;
  margin-right: 0;
  color: #62AEDF;
  font-size: 0.875rem;
  font-family: "Akkurat-RegularBold", sans-serif;
}

.nhsnote .embed-container div table tr td.ns-borderright-5-solid-paper-0 {
  border-right: 5px solid #F9F9F8;
}

@media screen and (min-width: 48em) {
  .nhsnote .embed-container div table tr td.ns-borderright-5-solid-paper-0 {
    border-right: 5px solid white;
  }
}

.nhsnote .embed-container div table tr:hover td.ns-borderright-5-solid-paper-0 {
  border-right: 5px solid #e7e7e7;
}

.nhsnote__content p,
.nhsnote__content .ns-list {
  margin-left: 0;
  margin-right: 0;
  width: 100%;
  font-size: 0.875rem;
  line-height: 1.25rem;
}

.nhsnote__content .ns-paragraph:last-of-type,
.nhsnote__content p:last-of-type {
  margin-bottom: 0 !important;
}

.nhsnote__content .ns-footnote {
  font-size: 0.75rem;
  line-height: 1.5;
}

.nhsnote .ns-title-h3, .nhsnote .ns-title-h4,
.nhsnote .ns-title-h4 {
  margin-left: 0;
  margin-right: 0;
  width: 100%;
  font-size: 0.875rem;
  margin-top: 0;
}

.note-triangle {
  border-color: transparent transparent white transparent;
  border-width: 20px;
  border-style: solid;
  position: absolute;
  top: -40px;
  -webkit-transform: translateX(51%);
      -ms-transform: translateX(51%);
          transform: translateX(51%);
}

.note-inside {
  margin-top: 15px;
  -webkit-box-ordinal-group: 100;
  -webkit-order: 99;
      -ms-flex-order: 99;
          order: 99;
  width: 100%;
  height: 100%;
  overflow-y: auto;
  max-height: 60vh;
}

@media screen and (min-width: 48em) {
  .note-inside {
    max-height: -webkit-calc(40vh - 105px);
    max-height: calc(40vh - 105px);
  }
}

table.ns-table tr:hover .icon-info {
  fill: #9a0941;
}

table.ns-table tr:hover .note__link:empty:after {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15.688 15.688' fill='%239a0941' %3E%3Cg id='Info_Sign' transform='translate(-539.395 -761)'%3E%3Cpath id='Pfad_5212' data-name='Pfad 5212' class='cls-1' d='M7.844,0a7.844,7.844,0,1,0,7.844,7.844A7.856,7.856,0,0,0,7.844,0Zm.224,2.913A1.249,1.249,0,1,1,6.819,4.162,1.211,1.211,0,0,1,8.068,2.913ZM9.6,12.326H6.883a.8.8,0,0,1,0-1.6h.64V8.164h-.8a.8.8,0,0,1,0-1.6h1.6a.793.793,0,0,1,.8.8v3.362H9.6a.8.8,0,1,1,0,1.6Z' transform='translate(539.394 761)'/%3E%3C/g%3E%3C/svg%3E");
}

table.ns-table .note__link:empty {
  cursor: pointer;
  display: inline-block;
  margin-left: 12px;
}

table.ns-table .note__link:empty:after {
  content: '';
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15.688 15.688' fill='%23ddd' %3E%3Cg id='Info_Sign' transform='translate(-539.395 -761)'%3E%3Cpath id='Pfad_5212' data-name='Pfad 5212' class='cls-1' d='M7.844,0a7.844,7.844,0,1,0,7.844,7.844A7.856,7.856,0,0,0,7.844,0Zm.224,2.913A1.249,1.249,0,1,1,6.819,4.162,1.211,1.211,0,0,1,8.068,2.913ZM9.6,12.326H6.883a.8.8,0,0,1,0-1.6h.64V8.164h-.8a.8.8,0,0,1,0-1.6h1.6a.793.793,0,0,1,.8.8v3.362H9.6a.8.8,0,1,1,0,1.6Z' transform='translate(539.394 761)'/%3E%3C/g%3E%3C/svg%3E");
  display: inline-block;
  background-position: center;
  -webkit-background-size: contain;
          background-size: contain;
  position: relative;
  width: 15px;
  height: 15px;
  -webkit-transform: translateY(2px);
      -ms-transform: translateY(2px);
          transform: translateY(2px);
}

table.ns-table .note__link:empty:hover:after, table.ns-table .note__link:empty.active:after {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15.688 15.688' fill='%239a0941' %3E%3Cg id='Info_Sign' transform='translate(-539.395 -761)'%3E%3Cpath id='Pfad_5212' data-name='Pfad 5212' class='cls-1' d='M7.844,0a7.844,7.844,0,1,0,7.844,7.844A7.856,7.856,0,0,0,7.844,0Zm.224,2.913A1.249,1.249,0,1,1,6.819,4.162,1.211,1.211,0,0,1,8.068,2.913ZM9.6,12.326H6.883a.8.8,0,0,1,0-1.6h.64V8.164h-.8a.8.8,0,0,1,0-1.6h1.6a.793.793,0,0,1,.8.8v3.362H9.6a.8.8,0,1,1,0,1.6Z' transform='translate(539.394 761)'/%3E%3C/g%3E%3C/svg%3E");
}

table.ns-table .icon-info {
  fill: #ddd;
  width: 15px;
  height: 15px;
  margin-left: 12px;
  -webkit-transform: translateY(2px);
      -ms-transform: translateY(2px);
          transform: translateY(2px);
  display: inline-block;
  position: relative;
}

table.ns-table .icon-info:hover {
  fill: #63092b !important;
}

table.ns-table .icon-info.active {
  fill: #9a0941;
}

.notes-text a,
.notes-text a:hover {
  color: inherit;
  cursor: default;
}

table.ns-table {
  position: relative;
}

table.ns-table tr {
  position: relative;
}

table.ns-table tr td {
  position: relative;
}

table.ns-table tr .js-toggler-container:after {
  content: '';
  width: 50px;
  height: 98%;
  left: 100%;
  top: 1%;
  position: absolute;
  display: none;
}

@media screen and (min-width: 62em) {
  table.ns-table tr .js-toggler-container:after {
    display: block;
  }
}

table.ns-table tr .js-charts-toggler {
  display: none;
}

table.ns-table tr:not(.empty-row):hover .js-charts-toggler {
  display: inline-block;
}

.note-inside table tr td:last-of-type:after {
  display: none;
}

.js-toggler-container {
  cursor: pointer;
}

.js-charts-toggler {
  position: relative;
  cursor: pointer;
}

.icon-chart {
  fill: #9a0941;
  width: 32px;
  height: 32px;
  margin-left: 14px;
  cursor: pointer;
  position: absolute;
  top: 50%;
  left: 0;
  -webkit-transform: translateY(-68%);
      -ms-transform: translateY(-68%);
          transform: translateY(-68%);
}

.icon-chart:hover {
  fill: #63092b !important;
}

.highcharts-axis-labels.y-label text {
  border-top: 1px solid red;
  -webkit-transform: translateY(2%);
      -ms-transform: translateY(2%);
          transform: translateY(2%);
}

.highcharts-axis-labels.y-label text:first-of-type {
  display: none;
}

.highcharts-tick {
  -webkit-transform: translateY(2px);
      -ms-transform: translateY(2px);
          transform: translateY(2px);
  position: relative;
  z-index: 2;
}

.highcharts-axis-line {
  position: relative;
  z-index: 1;
}

.popup-backdrop {
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  display: none;
  z-index: 2;
  position: fixed;
}

@media screen and (min-width: 48em) {
  .popup-backdrop {
    position: absolute;
  }
}

.popup-closer {
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  position: fixed;
  z-index: 2;
}

.popup-comparison {
  position: absolute;
  width: 51.25rem;
  max-height: 60vh;
  height: auto;
  margin-top: 33px !important;
  -webkit-box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);
          box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);
  background: white;
  padding: 20px;
  padding-top: 30px;
  z-index: 3;
}

.popup-comparison .charts-wrapper {
  position: relative;
  width: 100%;
  height: 0;
  padding: 50% 0 0 0;
  display: block;
}

.popup-comparison .charts-wrapper #container {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  width: 100%;
  height: 100%;
}

.popup-comparison .top-title-bar {
  width: 100%;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
  -webkit-flex-direction: row;
      -ms-flex-direction: row;
          flex-direction: row;
  -webkit-flex-wrap: nowrap;
      -ms-flex-wrap: nowrap;
          flex-wrap: nowrap;
  -webkit-box-pack: justify;
  -webkit-justify-content: space-between;
      -ms-flex-pack: justify;
          justify-content: space-between;
  -webkit-box-align: end;
  -webkit-align-items: flex-end;
      -ms-flex-align: end;
          align-items: flex-end;
}

.popup-comparison .ns-title-h3, .popup-comparison .ns-title-h4 {
  text-align: left;
  margin-left: 0;
  margin-right: 0;
  margin-top: 0;
  max-width: 100%;
  padding: 0 10px;
  font-family: 'Akkurat-RegularBold';
  font-weight: normal;
  font-size: 0.875rem;
  color: #62AEDF;
}

.popup-comparison .closer {
  width: 30px;
  height: 30px;
  position: relative;
  display: inline-block;
  cursor: pointer;
  -webkit-transform: translateX(-20px);
      -ms-transform: translateX(-20px);
          transform: translateX(-20px);
}

.popup-comparison .closer:before, .popup-comparison .closer:after {
  content: '';
  position: absolute;
  top: 0;
  right: 0;
  width: 1px;
  height: 25px;
  background: #9a0941;
}

.popup-comparison .closer:before {
  -webkit-transform: rotate(45deg);
      -ms-transform: rotate(45deg);
          transform: rotate(45deg);
}

.popup-comparison .closer:after {
  -webkit-transform: rotate(-45deg);
      -ms-transform: rotate(-45deg);
          transform: rotate(-45deg);
}

.notes-open {
  position: relative;
  height: 100%;
  overflow-y: hidden;
}

@media screen and (min-width: 48em) {
  .notes-open {
    overflow-y: visible;
    height: auto;
    position: static;
  }
}

body.search main {
  background-color: #F5F5F5;
  padding-bottom: 120px;
}

body.search .search-page {
  float: none !important;
  max-width: 550px;
  margin: 0 auto;
}

body.search .search-page .entry-summary {
  margin-bottom: 50px;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-flex: 1;
  -webkit-flex-grow: 1;
      -ms-flex-positive: 1;
          flex-grow: 1;
}

body.search .search-page img {
  max-width: none;
  width: 60px;
  background-color: #ffffff;
  border: 1px solid #e2e2e2;
}

body.search .search-page .column-left {
  width: 80px;
  -webkit-flex-basis: 80px;
      -ms-flex-preferred-size: 80px;
          flex-basis: 80px;
}

body.search .search-page .column-left + .column-right {
  width: -webkit-calc(100% - 75px);
  width: calc(100% - 75px);
  -webkit-flex-basis: -webkit-calc(100% - 75px);
      -ms-flex-preferred-size: calc(100% - 75px);
          flex-basis: calc(100% - 75px);
}

body.search .search-page--excerpt {
  margin-left: 0;
  margin-right: 0;
  margin-bottom: 0;
  width: 100%;
}

body.search .search-page--link {
  color: black;
  font-family: "Akkurat-RegularBold", sans-serif;
  font-size: 13px;
}

body.search .no-results .page-content {
  display: inline-block;
  margin-top: 40px;
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGUuY3NzIiwic291cmNlcyI6WyJzdHlsZS5zY3NzIiwibnN3b3cvbWFpbi5zY3NzIiwiY29uZmlnL21haW4uc2NzcyIsImNvbmZpZy9fY29sb3JzLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24uc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2ZvdW5kYXRpb24uc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9fdmVuZG9yL25vcm1hbGl6ZS1zY3NzL3Nhc3MvX25vcm1hbGl6ZS5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL192ZW5kb3Ivbm9ybWFsaXplLXNjc3Mvc2Fzcy9ub3JtYWxpemUvX3ZhcmlhYmxlcy5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL192ZW5kb3Ivbm9ybWFsaXplLXNjc3Mvc2Fzcy9ub3JtYWxpemUvX3ZlcnRpY2FsLXJoeXRobS5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL192ZW5kb3Ivbm9ybWFsaXplLXNjc3Mvc2Fzcy9ub3JtYWxpemUvX25vcm1hbGl6ZS1taXhpbi5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvaGVscGVycy9fbWlzc2luZy1kZXBlbmRlbmNpZXMuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2hlbHBlcnMvX3RydWUuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fY29udGFpbi5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19wdXJnZS5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19yZW1vdmUuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fcmVwbGFjZS5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL190by1saXN0LnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL191dGlsLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL19tYXRoLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL191bml0LnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL192YWx1ZS5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fZGlyZWN0aW9uLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL19jb2xvci5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fc2VsZWN0b3Iuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX2ZsZXguc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX2JyZWFrcG9pbnQuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX21peGlucy5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fdHlwb2dyYXBoeS5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvX2dsb2JhbC5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZ3JpZC9fZ3JpZC5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZ3JpZC9fcm93LnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9ncmlkL19jb2x1bW4uc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX3NpemUuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX3Bvc2l0aW9uLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9ncmlkL19ndXR0ZXIuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX2NsYXNzZXMuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX2xheW91dC5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZ3JpZC9fZmxleC1ncmlkLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy94eS1ncmlkL194eS1ncmlkLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy94eS1ncmlkL19ndXR0ZXJzLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy94eS1ncmlkL19ncmlkLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy94eS1ncmlkL19jZWxsLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy94eS1ncmlkL19mcmFtZS5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MveHktZ3JpZC9fcG9zaXRpb24uc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3h5LWdyaWQvX2xheW91dC5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MveHktZ3JpZC9fY29sbGFwc2Uuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3h5LWdyaWQvX2NsYXNzZXMuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3R5cG9ncmFwaHkvX3R5cG9ncmFwaHkuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3R5cG9ncmFwaHkvX2Jhc2Uuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3R5cG9ncmFwaHkvX2hlbHBlcnMuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3R5cG9ncmFwaHkvX2FsaWdubWVudC5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdHlwb2dyYXBoeS9fcHJpbnQuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19mb3Jtcy5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX3RleHQuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19jaGVja2JveC5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX2xhYmVsLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9faGVscC10ZXh0LnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9faW5wdXQtZ3JvdXAuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19maWVsZHNldC5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX3NlbGVjdC5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX3JhbmdlLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fcHJvZ3Jlc3Muc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19tZXRlci5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX2Vycm9yLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL192aXNpYmlsaXR5LnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19mbG9hdC5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fYnV0dG9uLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19idXR0b24tZ3JvdXAuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2FjY29yZGlvbi1tZW51LnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19hY2NvcmRpb24uc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2JhZGdlLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19icmVhZGNydW1icy5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fY2FsbG91dC5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fY2FyZC5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fY2xvc2UtYnV0dG9uLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19kcmlsbGRvd24uc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2Ryb3Bkb3duLW1lbnUuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2Ryb3Bkb3duLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19mbGV4LnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19yZXNwb25zaXZlLWVtYmVkLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19sYWJlbC5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fbWVkaWEtb2JqZWN0LnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19tZW51LnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19tZW51LWljb24uc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX29mZi1jYW52YXMuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX29yYml0LnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19wYWdpbmF0aW9uLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19wcm9ncmVzcy1iYXIuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3JldmVhbC5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fc2xpZGVyLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19zdGlja3kuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3N3aXRjaC5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fdGFibGUuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3RhYnMuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3RpdGxlLWJhci5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fdG9wLWJhci5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fdGh1bWJuYWlsLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL190b29sdGlwLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX3Byb3RvdHlwZS5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19yZWxhdGlvbi5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19ib3guc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fcm90YXRlLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX3RleHQtdXRpbGl0aWVzLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX3RleHQtdHJhbnNmb3JtYXRpb24uc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fdGV4dC1kZWNvcmF0aW9uLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX2ZvbnQtc3R5bGluZy5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19saXN0LXN0eWxlLXR5cGUuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fcm91bmRlZC5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19ib3JkZXJlZC5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19zaGFkb3cuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fYXJyb3cuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fc2VwYXJhdG9yLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX292ZXJmbG93LnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX2Rpc3BsYXkuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fcG9zaXRpb24uc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fYm9yZGVyLWJveC5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19ib3JkZXItbm9uZS5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19zaXppbmcuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fc3BhY2luZy5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNldHRpbmdzLnNjc3MiLCJjb25maWcvX2p1aWNlLW1peGlucy5zY3NzIiwiY29uZmlnL19icmVha3BvaW50cy5zY3NzIiwiY29uZmlnL19jb250YWluZXItd2lkdGguc2NzcyIsImNvbmZpZy9fbWl4aW5zLnNjc3MiLCJjb25maWcvX2ZvbnRzLnNjc3MiLCJjb25maWcvX2hlbHBlci1jbGFzc2VzLXRvLWV4dGVuZC5zY3NzIiwibnN3b3cvY29tcG9uZW50cy9fY29udGFpbmVyLnNjc3MiLCJuc3dvdy9jb21wb25lbnRzL19wYXJhZ3JhcGguc2NzcyIsIm5zd293L2NvbXBvbmVudHMvX2Zvb3Rub3RlLnNjc3MiLCJuc3dvdy9jb21wb25lbnRzL19sZWFkLXRleHQuc2NzcyIsIm5zd293L2NvbXBvbmVudHMvX2xpc3Quc2NzcyIsIm5zd293L2NvbXBvbmVudHMvX21vcmUtb24taGVsc2FuYS5zY3NzIiwibnN3b3cvY29tcG9uZW50cy9fYnV0dG9uLnNjc3MiLCJuc3dvdy9jb21wb25lbnRzL19tYWtlLWNvbnRlbnRiZy1yZWQuc2NzcyIsIm5zd293L2NvbXBvbmVudHMvX2V4Y2VsLWRvd25sb2FkLnNjc3MiLCJuc3dvdy9jb21wb25lbnRzL19pbWFnZS13cmFwLnNjc3MiLCJuc3dvdy9jb21wb25lbnRzL19pbWFnZS13cmFwLXNtYWxsLnNjc3MiLCJuc3dvdy9jb21wb25lbnRzL19zaWduYXR1ci5zY3NzIiwibnN3b3cvY29tcG9uZW50cy9fc2lnbmF0dXItY29udGFpbmVyLnNjc3MiLCJuc3dvdy9jb21wb25lbnRzL19wb3J0cmFpdHMuc2NzcyIsIm5zd293L2NvbXBvbmVudHMvX3RhYmxlLnNjc3MiLCJuc3dvdy9jb21wb25lbnRzL190YWJsZS1yZXNwb25zaXZlLnNjc3MiLCJuc3dvdy9jb21wb25lbnRzL19xdW90ZXMuc2NzcyIsIm5zd293L2NvbXBvbmVudHMvX3F1b3Rlcy1jb250YWluZXIuc2NzcyIsIm5zd293L2NvbXBvbmVudHMvX2tleWZpZ3VyZXMuc2NzcyIsIm5zd293L2NvbXBvbmVudHMvX2tleWZpZ3VyZS1jYXJkcy5zY3NzIiwibnN3b3cvY29tcG9uZW50cy9fdGl0bGUtaDEtY2hhcHRlci5zY3NzIiwibnN3b3cvY29tcG9uZW50cy9fdGl0bGUtaDItbWFpbi5zY3NzIiwibnN3b3cvY29tcG9uZW50cy9fdGl0bGUtaDIuc2NzcyIsIm5zd293L2NvbXBvbmVudHMvX3RpdGxlLWgyLXJldmlzaW9uc2JlcmljaHQuc2NzcyIsInRoZW1lL21haW4uc2NzcyIsInRoZW1lL2xheW91dC9fY29udGVudC5zY3NzIiwidGhlbWUvbGF5b3V0L19mb290ZXIuc2NzcyIsInRoZW1lL2xheW91dC9faGVhZGVyLW5hdmlnYXRpb24uc2NzcyIsInRoZW1lL3BhZ2VzL25vdGVzL19ub3Rlcy5zY3NzIiwidGhlbWUvcGFnZXMvc2VhcmNoL19zZWFyY2guc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICduc3dvdy9tYWluJztcclxuQGltcG9ydCAndGhlbWUvbWFpbic7XHJcblxyXG4iLCJAaW1wb3J0IFwiLi4vY29uZmlnL21haW5cIjtcclxuXHJcbkBpbXBvcnQgJ2NvbXBvbmVudHMvY29udGFpbmVyJztcclxuXHJcbi8vIHRleHRcclxuQGltcG9ydCAnY29tcG9uZW50cy9wYXJhZ3JhcGgnO1xyXG5AaW1wb3J0ICdjb21wb25lbnRzL2Zvb3Rub3RlJztcclxuQGltcG9ydCAnY29tcG9uZW50cy9sZWFkLXRleHQnO1xyXG5AaW1wb3J0ICdjb21wb25lbnRzL2xpc3QnO1xyXG5cclxuLy8gc3BlY2lhbHNcclxuQGltcG9ydCAnY29tcG9uZW50cy9tb3JlLW9uLWhlbHNhbmEnO1xyXG5AaW1wb3J0ICdjb21wb25lbnRzL2J1dHRvbic7XHJcbkBpbXBvcnQgJ2NvbXBvbmVudHMvbWFrZS1jb250ZW50YmctcmVkJztcclxuQGltcG9ydCAnY29tcG9uZW50cy9leGNlbC1kb3dubG9hZCc7XHJcblxyXG4vLyBNZWRpYVxyXG5AaW1wb3J0ICdjb21wb25lbnRzL2ltYWdlLXdyYXAnO1xyXG5AaW1wb3J0ICdjb21wb25lbnRzL2ltYWdlLXdyYXAtc21hbGwnO1xyXG5cclxuLy8gU2lnbmF0dXJlXHJcbkBpbXBvcnQgJ2NvbXBvbmVudHMvc2lnbmF0dXInO1xyXG5AaW1wb3J0ICdjb21wb25lbnRzL3NpZ25hdHVyLWNvbnRhaW5lcic7XHJcblxyXG4vLyBQb3J0cmFpdHNcclxuQGltcG9ydCAnY29tcG9uZW50cy9wb3J0cmFpdHMnO1xyXG5cclxuLy8gVGFibGVcclxuQGltcG9ydCAnY29tcG9uZW50cy90YWJsZSc7XHJcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdGFibGUtcmVzcG9uc2l2ZSc7XHJcblxyXG4vLyBRdW90ZVxyXG5AaW1wb3J0ICdjb21wb25lbnRzL3F1b3Rlcyc7XHJcbkBpbXBvcnQgJ2NvbXBvbmVudHMvcXVvdGVzLWNvbnRhaW5lcic7XHJcblxyXG4vLyBLZXlmaWd1cmVzXHJcbkBpbXBvcnQgJ2NvbXBvbmVudHMva2V5ZmlndXJlcyc7XHJcbkBpbXBvcnQgJ2NvbXBvbmVudHMva2V5ZmlndXJlLWNhcmRzJztcclxuXHJcbi8vIFRpdGxlcyBcclxuQGltcG9ydCAnY29tcG9uZW50cy90aXRsZS1oMS1jaGFwdGVyJztcclxuQGltcG9ydCAnY29tcG9uZW50cy90aXRsZS1oMi1tYWluJztcclxuQGltcG9ydCAnY29tcG9uZW50cy90aXRsZS1oMic7XHJcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdGl0bGUtaDItcmV2aXNpb25zYmVyaWNodCc7XHJcblxyXG4ubnMtaGlnaGxpZ2h0IHtcclxuICBjb2xvcjogJG9yYW5nZSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4ubnMtYm9sZCB7XHJcbiAgZm9udC1mYW1pbHk6ICRmb250LWJvbGQgIWltcG9ydGFudDtcclxufVxyXG5cclxuLm5zLXRleHQtYWxpZ24ge1xyXG4gICYtLWNlbnRlciB7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcclxuICB9XHJcbiAgJi0tcmlnaHQge1xyXG4gICAgdGV4dC1hbGlnbjogcmlnaHQgIWltcG9ydGFudDtcclxuICB9XHJcbn1cclxuXHJcbiNjaGFydEdlbmVyYXRvciB7XHJcbiAgbWFyZ2luOiAwIGF1dG87XHJcbiAgbWluLXdpZHRoOiAzMjBweDtcclxufVxyXG5cclxuLy9AaW1wb3J0ICdvdGhlci1zdHVmZi8uLi4nOyIsIi8vIGNvbG9yLXZhcmlhYmxlc1xyXG5AaW1wb3J0ICdjb2xvcnMnO1xyXG5cclxuLy8gZm91bmRhdGlvblxyXG5AaW1wb3J0ICd2ZW5kb3IvZm91bmRhdGlvbic7XHJcblxyXG4vLyBqdWljZSBtaXhpbnMgdmlhIGh0dHA6Ly9reWxlYnJ1bW0uY29tL2p1aWNlL1xyXG5AaW1wb3J0ICdqdWljZS1taXhpbnMnO1xyXG5cclxuLy8gRGVmaW5pdGlvbmVuIG1tc1xyXG5AaW1wb3J0ICdicmVha3BvaW50cyc7XHJcbkBpbXBvcnQgJ2NvbnRhaW5lci13aWR0aCc7XHJcbkBpbXBvcnQgJ21peGlucyc7XHJcbkBpbXBvcnQgJ2ZvbnRzJztcclxuQGltcG9ydCAnaGVscGVyLWNsYXNzZXMtdG8tZXh0ZW5kJztcclxuIiwiJHJlZDogICAgICAgICAgICAgICAgICAgIzlhMDk0MTtcclxuJHJlZC1idG46ICAgICAgICAgICAgICAgI0FEMEI0OTtcclxuJHJlZC1idG4taG92ZXI6ICAgICAgICAgICNCQjBDNTA7XHJcbiRyZWQtZGFyazogICAgICAgICAgICAgIHJnYigxMjIsIDExLCA1Myk7XHJcbiRyZWQtZGFya2VyOiAgICAgICAgICAgIGRhcmtlbigkcmVkLWRhcmssIDUlKTtcclxuJGdyZXktYnJpZ2h0OiAgICAgICAgICAgI2Y1ZjVmNTtcclxuJGdyZXktYnJpZ2h0LWZvb3RlcjogICAgI0VFRUVFRTtcclxuJGdyZXktYWNjb3JkaW9uLWhvdmVyOiAgI0U1RTVFNTtcclxuJGdyZXktYWNjb3JkaW9uLWJvcmRlcjogI2NjY2NjYztcclxuXHJcbiRncmV5LWRhcms6ICAgICAgICAgICAgICMzMzMzMzM7XHJcbiRvcmFuZ2U6ICAgICAgICAgICAgICAgICNmMzlhMzM7XHJcbiRibHVlOiAgICAgICAgICAgICAgICAgICM2MkFFREY7XHJcbiRsYXZlbmRlcjogICAgICAgICAgICAgICM5MTgxQzY7XHJcbiRsaWxhOiAgICAgICAgICAgICAgICAgICNBNzlBRDE7XHJcbiRibGFjazogICAgICAgICAgICAgICAgICMwMDAwMDA7XHJcbiR3aGl0ZTogICAgICAgICAgICAgICAgICNmZmZmZmY7XHJcbiIsIkBpbXBvcnQgJ2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3VuZGF0aW9uJztcclxuQGltcG9ydCAnZm91bmRhdGlvbi1zZXR0aW5ncyc7XHJcblxyXG5AaW5jbHVkZSBmb3VuZGF0aW9uLWdsb2JhbC1zdHlsZXM7XHJcbkBpbmNsdWRlIGZvdW5kYXRpb24tZ3JpZDtcclxuQGluY2x1ZGUgZm91bmRhdGlvbi1mbGV4LWdyaWQ7XHJcbkBpbmNsdWRlIGZvdW5kYXRpb24tZmxleC1jbGFzc2VzO1xyXG5AaW5jbHVkZSBmb3VuZGF0aW9uLXR5cG9ncmFwaHk7XHJcbkBpbmNsdWRlIGZvdW5kYXRpb24tZm9ybXM7XHJcbkBpbmNsdWRlIGZvdW5kYXRpb24tYnV0dG9uO1xyXG5AaW5jbHVkZSBmb3VuZGF0aW9uLWFjY29yZGlvbjtcclxuQGluY2x1ZGUgZm91bmRhdGlvbi1hY2NvcmRpb24tbWVudTtcclxuQGluY2x1ZGUgZm91bmRhdGlvbi1iYWRnZTtcclxuQGluY2x1ZGUgZm91bmRhdGlvbi1icmVhZGNydW1icztcclxuQGluY2x1ZGUgZm91bmRhdGlvbi1idXR0b24tZ3JvdXA7XHJcbkBpbmNsdWRlIGZvdW5kYXRpb24tY2FsbG91dDtcclxuQGluY2x1ZGUgZm91bmRhdGlvbi1jYXJkO1xyXG5AaW5jbHVkZSBmb3VuZGF0aW9uLWNsb3NlLWJ1dHRvbjtcclxuQGluY2x1ZGUgZm91bmRhdGlvbi1tZW51O1xyXG5AaW5jbHVkZSBmb3VuZGF0aW9uLW1lbnUtaWNvbjtcclxuQGluY2x1ZGUgZm91bmRhdGlvbi1kcmlsbGRvd24tbWVudTtcclxuQGluY2x1ZGUgZm91bmRhdGlvbi1kcm9wZG93bjtcclxuQGluY2x1ZGUgZm91bmRhdGlvbi1kcm9wZG93bi1tZW51O1xyXG5AaW5jbHVkZSBmb3VuZGF0aW9uLXJlc3BvbnNpdmUtZW1iZWQ7XHJcbkBpbmNsdWRlIGZvdW5kYXRpb24tbGFiZWw7XHJcbkBpbmNsdWRlIGZvdW5kYXRpb24tbWVkaWEtb2JqZWN0O1xyXG5AaW5jbHVkZSBmb3VuZGF0aW9uLW9mZi1jYW52YXM7XHJcbkBpbmNsdWRlIGZvdW5kYXRpb24tb3JiaXQ7XHJcbkBpbmNsdWRlIGZvdW5kYXRpb24tcGFnaW5hdGlvbjtcclxuQGluY2x1ZGUgZm91bmRhdGlvbi1wcm9ncmVzcy1iYXI7XHJcbkBpbmNsdWRlIGZvdW5kYXRpb24tc2xpZGVyO1xyXG5AaW5jbHVkZSBmb3VuZGF0aW9uLXN0aWNreTtcclxuQGluY2x1ZGUgZm91bmRhdGlvbi1yZXZlYWw7XHJcbkBpbmNsdWRlIGZvdW5kYXRpb24tc3dpdGNoO1xyXG4vLyBAaW5jbHVkZSBmb3VuZGF0aW9uLXRhYmxlO1xyXG5AaW5jbHVkZSBmb3VuZGF0aW9uLXRhYnM7XHJcbkBpbmNsdWRlIGZvdW5kYXRpb24tdGh1bWJuYWlsO1xyXG5AaW5jbHVkZSBmb3VuZGF0aW9uLXRpdGxlLWJhcjtcclxuQGluY2x1ZGUgZm91bmRhdGlvbi10b29sdGlwO1xyXG5AaW5jbHVkZSBmb3VuZGF0aW9uLXRvcC1iYXI7XHJcbkBpbmNsdWRlIGZvdW5kYXRpb24tdmlzaWJpbGl0eS1jbGFzc2VzO1xyXG5AaW5jbHVkZSBmb3VuZGF0aW9uLWZsb2F0LWNsYXNzZXM7IiwiLyoqXHJcbiAqIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuICogVmVyc2lvbiA2LjQuM1xyXG4gKiBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG4gKi9cclxuXHJcbi8vIERlcGVuZGVuY2llc1xyXG5AaW1wb3J0ICcuLi9fdmVuZG9yL25vcm1hbGl6ZS1zY3NzL3Nhc3Mvbm9ybWFsaXplJztcclxuQGltcG9ydCAnLi4vX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL21pc3NpbmctZGVwZW5kZW5jaWVzJztcclxuQGltcG9ydCAnLi4vX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL3RydWUnO1xyXG5AaW1wb3J0ICcuLi9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9jb250YWluJztcclxuQGltcG9ydCAnLi4vX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvcHVyZ2UnO1xyXG5AaW1wb3J0ICcuLi9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9yZW1vdmUnO1xyXG5AaW1wb3J0ICcuLi9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9yZXBsYWNlJztcclxuQGltcG9ydCAnLi4vX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvdG8tbGlzdCc7XHJcblxyXG4vLyBTZXR0aW5nc1xyXG4vLyBpbXBvcnQgeW91ciBvd24gYHNldHRpbmdzYCBoZXJlIG9yXHJcbi8vIGltcG9ydCBhbmQgbW9kaWZ5IHRoZSBkZWZhdWx0IHNldHRpbmdzIHRocm91Z2hcclxuLy8gQGltcG9ydCAnc2V0dGluZ3Mvc2V0dGluZ3MnO1xyXG5cclxuLy8gU2FzcyB1dGlsaXRpZXNcclxuQGltcG9ydCAndXRpbC91dGlsJztcclxuXHJcbi8vIEdsb2JhbCB2YXJpYWJsZXMgYW5kIHN0eWxlc1xyXG5AaW1wb3J0ICdnbG9iYWwnO1xyXG5cclxuLy8gQ29tcG9uZW50c1xyXG5AaW1wb3J0ICdncmlkL2dyaWQnO1xyXG5AaW1wb3J0ICd4eS1ncmlkL3h5LWdyaWQnO1xyXG5AaW1wb3J0ICd0eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xyXG5AaW1wb3J0ICdmb3Jtcy9mb3Jtcyc7XHJcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdmlzaWJpbGl0eSc7XHJcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZmxvYXQnO1xyXG5AaW1wb3J0ICdjb21wb25lbnRzL2J1dHRvbic7XHJcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYnV0dG9uLWdyb3VwJztcclxuQGltcG9ydCAnY29tcG9uZW50cy9hY2NvcmRpb24tbWVudSc7XHJcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYWNjb3JkaW9uJztcclxuQGltcG9ydCAnY29tcG9uZW50cy9iYWRnZSc7XHJcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYnJlYWRjcnVtYnMnO1xyXG5AaW1wb3J0ICdjb21wb25lbnRzL2NhbGxvdXQnO1xyXG5AaW1wb3J0ICdjb21wb25lbnRzL2NhcmQnO1xyXG5AaW1wb3J0ICdjb21wb25lbnRzL2Nsb3NlLWJ1dHRvbic7XHJcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZHJpbGxkb3duJztcclxuQGltcG9ydCAnY29tcG9uZW50cy9kcm9wZG93bi1tZW51JztcclxuQGltcG9ydCAnY29tcG9uZW50cy9kcm9wZG93bic7XHJcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZmxleCc7XHJcbkBpbXBvcnQgJ2NvbXBvbmVudHMvcmVzcG9uc2l2ZS1lbWJlZCc7XHJcbkBpbXBvcnQgJ2NvbXBvbmVudHMvbGFiZWwnO1xyXG5AaW1wb3J0ICdjb21wb25lbnRzL21lZGlhLW9iamVjdCc7XHJcbkBpbXBvcnQgJ2NvbXBvbmVudHMvbWVudSc7XHJcbkBpbXBvcnQgJ2NvbXBvbmVudHMvbWVudS1pY29uJztcclxuQGltcG9ydCAnY29tcG9uZW50cy9vZmYtY2FudmFzJztcclxuQGltcG9ydCAnY29tcG9uZW50cy9vcmJpdCc7XHJcbkBpbXBvcnQgJ2NvbXBvbmVudHMvcGFnaW5hdGlvbic7XHJcbkBpbXBvcnQgJ2NvbXBvbmVudHMvcHJvZ3Jlc3MtYmFyJztcclxuQGltcG9ydCAnY29tcG9uZW50cy9yZXZlYWwnO1xyXG5AaW1wb3J0ICdjb21wb25lbnRzL3NsaWRlcic7XHJcbkBpbXBvcnQgJ2NvbXBvbmVudHMvc3RpY2t5JztcclxuQGltcG9ydCAnY29tcG9uZW50cy9zd2l0Y2gnO1xyXG5AaW1wb3J0ICdjb21wb25lbnRzL3RhYmxlJztcclxuQGltcG9ydCAnY29tcG9uZW50cy90YWJzJztcclxuQGltcG9ydCAnY29tcG9uZW50cy90aXRsZS1iYXInO1xyXG5AaW1wb3J0ICdjb21wb25lbnRzL3RvcC1iYXInO1xyXG5AaW1wb3J0ICdjb21wb25lbnRzL3RodW1ibmFpbCc7XHJcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdG9vbHRpcCc7XHJcbkBpbXBvcnQgJ3Byb3RvdHlwZS9wcm90b3R5cGUnO1xyXG5cclxuQG1peGluIGZvdW5kYXRpb24tZXZlcnl0aGluZyhcclxuICAkZmxleDogdHJ1ZSxcclxuICAkcHJvdG90eXBlOiBmYWxzZVxyXG4pIHtcclxuICBAaWYgJGZsZXgge1xyXG4gICAgJGdsb2JhbC1mbGV4Ym94OiB0cnVlICFnbG9iYWw7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWdsb2JhbC1zdHlsZXM7XHJcbiAgQGlmIG5vdCAkZmxleCB7XHJcbiAgICBAaW5jbHVkZSBmb3VuZGF0aW9uLWdyaWQ7XHJcbiAgfVxyXG4gIEBlbHNlIHtcclxuICAgIEBpZiAkeHktZ3JpZCB7XHJcbiAgICAgIEBpbmNsdWRlIGZvdW5kYXRpb24teHktZ3JpZC1jbGFzc2VzO1xyXG4gICAgfVxyXG4gICAgQGVsc2Uge1xyXG4gICAgICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZsZXgtZ3JpZDtcclxuICAgIH1cclxuICB9XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10eXBvZ3JhcGh5O1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZm9ybXM7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1idXR0b247XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1hY2NvcmRpb247XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1hY2NvcmRpb24tbWVudTtcclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWJhZGdlO1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tYnJlYWRjcnVtYnM7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1idXR0b24tZ3JvdXA7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1jYWxsb3V0O1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tY2FyZDtcclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWNsb3NlLWJ1dHRvbjtcclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLW1lbnU7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1tZW51LWljb247XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1kcmlsbGRvd24tbWVudTtcclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWRyb3Bkb3duO1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZHJvcGRvd24tbWVudTtcclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXJlc3BvbnNpdmUtZW1iZWQ7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1sYWJlbDtcclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLW1lZGlhLW9iamVjdDtcclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLW9mZi1jYW52YXM7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1vcmJpdDtcclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXBhZ2luYXRpb247XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm9ncmVzcy1iYXI7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1zbGlkZXI7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1zdGlja3k7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1yZXZlYWw7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1zd2l0Y2g7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10YWJsZTtcclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXRhYnM7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10aHVtYm5haWw7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10aXRsZS1iYXI7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10b29sdGlwO1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdG9wLWJhcjtcclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXZpc2liaWxpdHktY2xhc3NlcztcclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZsb2F0LWNsYXNzZXM7XHJcblxyXG4gIEBpZiAkZmxleCB7XHJcbiAgICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZsZXgtY2xhc3NlcztcclxuICB9XHJcblxyXG4gIEBpZiAkcHJvdG90eXBlIHtcclxuICAgIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLWNsYXNzZXM7XHJcbiAgfVxyXG59XHJcbiIsIkBpbXBvcnQgJ25vcm1hbGl6ZS92YXJpYWJsZXMnO1xyXG5AaW1wb3J0ICdub3JtYWxpemUvdmVydGljYWwtcmh5dGhtJztcclxuQGltcG9ydCAnbm9ybWFsaXplL25vcm1hbGl6ZS1taXhpbic7XHJcbiIsIi8vXHJcbi8vIFZhcmlhYmxlc1xyXG4vL1xyXG4vLyBZb3UgY2FuIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHZhbHVlcyBieSBzZXR0aW5nIHRoZSB2YXJpYWJsZXMgaW4geW91ciBTYXNzXHJcbi8vIGJlZm9yZSBpbXBvcnRpbmcgdGhlIG5vcm1hbGl6ZS1zY3NzIGxpYnJhcnkuXHJcblxyXG4vLyBUaGUgZm9udCBzaXplIHNldCBvbiB0aGUgcm9vdCBodG1sIGVsZW1lbnQuXHJcbiRiYXNlLWZvbnQtc2l6ZTogMTZweCAhZGVmYXVsdDtcclxuXHJcbi8vIFRoZSBiYXNlIGxpbmUgaGVpZ2h0IGRldGVybWluZXMgdGhlIGJhc2ljIHVuaXQgb2YgdmVydGljYWwgcmh5dGhtLlxyXG4kYmFzZS1saW5lLWhlaWdodDogMjRweCAhZGVmYXVsdDtcclxuXHJcbi8vIFRoZSBsZW5ndGggdW5pdCBpbiB3aGljaCB0byBvdXRwdXQgdmVydGljYWwgcmh5dGhtIHZhbHVlcy5cclxuLy8gU3VwcG9ydGVkIHZhbHVlczogcHgsIGVtLCByZW0uXHJcbiRiYXNlLXVuaXQ6ICdlbScgIWRlZmF1bHQ7XHJcblxyXG4vLyBUaGUgZGVmYXVsdCBmb250IGZhbWlseS5cclxuJGJhc2UtZm9udC1mYW1pbHk6IHNhbnMtc2VyaWYgIWRlZmF1bHQ7XHJcblxyXG4vLyBUaGUgZm9udCBzaXplcyBmb3IgaDEtaDYuXHJcbiRoMS1mb250LXNpemU6IDIgICAgKiAkYmFzZS1mb250LXNpemUgIWRlZmF1bHQ7XHJcbiRoMi1mb250LXNpemU6IDEuNSAgKiAkYmFzZS1mb250LXNpemUgIWRlZmF1bHQ7XHJcbiRoMy1mb250LXNpemU6IDEuMTcgKiAkYmFzZS1mb250LXNpemUgIWRlZmF1bHQ7XHJcbiRoNC1mb250LXNpemU6IDEgICAgKiAkYmFzZS1mb250LXNpemUgIWRlZmF1bHQ7XHJcbiRoNS1mb250LXNpemU6IDAuODMgKiAkYmFzZS1mb250LXNpemUgIWRlZmF1bHQ7XHJcbiRoNi1mb250LXNpemU6IDAuNjcgKiAkYmFzZS1mb250LXNpemUgIWRlZmF1bHQ7XHJcblxyXG4vLyBUaGUgYW1vdW50IGxpc3RzIGFuZCBibG9ja3F1b3RlcyBhcmUgaW5kZW50ZWQuXHJcbiRpbmRlbnQtYW1vdW50OiA0MHB4ICFkZWZhdWx0O1xyXG5cclxuLy8gVGhlIGZvbGxvd2luZyB2YXJpYWJsZSBjb250cm9scyB3aGV0aGVyIG5vcm1hbGl6ZS1zY3NzIHdpbGwgb3V0cHV0XHJcbi8vIGZvbnQtc2l6ZXMsIGxpbmUtaGVpZ2h0cyBhbmQgYmxvY2stbGV2ZWwgdG9wL2JvdHRvbSBtYXJnaW5zIHRoYXQgZm9ybSBhIGJhc2ljXHJcbi8vIHZlcnRpY2FsIHJoeXRobSBvbiB0aGUgcGFnZSwgd2hpY2ggZGlmZmVycyBmcm9tIHRoZSBvcmlnaW5hbCBOb3JtYWxpemUuY3NzLlxyXG4vLyBIb3dldmVyLCBjaGFuZ2luZyBhbnkgb2YgdGhlIHZhcmlhYmxlcyBhYm92ZSB3aWxsIGNhdXNlXHJcbi8vICRub3JtYWxpemUtdmVydGljYWwtcmh5dGhtIHRvIGJlIGF1dG9tYXRpY2FsbHkgc2V0IHRvIHRydWUuXHJcbiRub3JtYWxpemUtdmVydGljYWwtcmh5dGhtOiBmYWxzZSAhZGVmYXVsdDtcclxuIiwiLy9cclxuLy8gVmVydGljYWwgUmh5dGhtXHJcbi8vXHJcbi8vIFRoaXMgaXMgdGhlIG1pbmltYWwgYW1vdW50IG9mIGNvZGUgbmVlZGVkIHRvIGNyZWF0ZSB2ZXJ0aWNhbCByaHl0aG0gaW4gb3VyXHJcbi8vIENTUy4gSWYgeW91IGFyZSBsb29raW5nIGZvciBhIHJvYnVzdCBzb2x1dGlvbiwgbG9vayBhdCB0aGUgZXhjZWxsZW50IFR5cGV5XHJcbi8vIGxpYnJhcnkuIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2pwdGFyYW50by90eXBleVxyXG5cclxuQGZ1bmN0aW9uIG5vcm1hbGl6ZS1yaHl0aG0oJHZhbHVlLCAkcmVsYXRpdmUtdG86ICRiYXNlLWZvbnQtc2l6ZSwgJHVuaXQ6ICRiYXNlLXVuaXQpIHtcclxuICBAaWYgdW5pdCgkdmFsdWUpICE9IHB4IHtcclxuICAgIEBlcnJvciBcIlRoZSBub3JtYWxpemUgdmVydGljYWwtcmh5dGhtIG1vZHVsZSBvbmx5IHN1cHBvcnRzIHB4IGlucHV0cy4gVGhlIHR5cGV5IGxpYnJhcnkgaXMgYmV0dGVyLlwiO1xyXG4gIH1cclxuICBAaWYgJHVuaXQgPT0gcmVtIHtcclxuICAgIEByZXR1cm4gKCR2YWx1ZSAvICRiYXNlLWZvbnQtc2l6ZSkgKiAxcmVtO1xyXG4gIH1cclxuICBAZWxzZSBpZiAkdW5pdCA9PSBlbSB7XHJcbiAgICBAcmV0dXJuICgkdmFsdWUgLyAkcmVsYXRpdmUtdG8pICogMWVtO1xyXG4gIH1cclxuICBAZWxzZSB7IC8vICR1bml0ID09IHB4XHJcbiAgICBAcmV0dXJuICR2YWx1ZTtcclxuICB9XHJcbn1cclxuXHJcbkBtaXhpbiBub3JtYWxpemUtZm9udC1zaXplKCR2YWx1ZSwgJHJlbGF0aXZlLXRvOiAkYmFzZS1mb250LXNpemUpIHtcclxuICBAaWYgdW5pdCgkdmFsdWUpICE9ICdweCcge1xyXG4gICAgQGVycm9yIFwibm9ybWFsaXplLWZvbnQtc2l6ZSgpIG9ubHkgc3VwcG9ydHMgcHggaW5wdXRzLiBUaGUgdHlwZXkgbGlicmFyeSBpcyBiZXR0ZXIuXCI7XHJcbiAgfVxyXG4gIGZvbnQtc2l6ZTogbm9ybWFsaXplLXJoeXRobSgkdmFsdWUsICRyZWxhdGl2ZS10byk7XHJcbn1cclxuXHJcbkBtaXhpbiBub3JtYWxpemUtcmh5dGhtKCRwcm9wZXJ0eSwgJHZhbHVlcywgJHJlbGF0aXZlLXRvOiAkYmFzZS1mb250LXNpemUpIHtcclxuICAkdmFsdWUtbGlzdDogJHZhbHVlcztcclxuICAkc2VwOiBzcGFjZTtcclxuICBAaWYgdHlwZS1vZigkdmFsdWVzKSA9PSAnbGlzdCcge1xyXG4gICAgJHNlcDogbGlzdC1zZXBhcmF0b3IoJHZhbHVlcyk7XHJcbiAgfVxyXG4gIEBlbHNlIHtcclxuICAgICR2YWx1ZS1saXN0OiBhcHBlbmQoKCksICR2YWx1ZXMpO1xyXG4gIH1cclxuXHJcbiAgJG5vcm1hbGl6ZWQtdmFsdWVzOiAoKTtcclxuICBAZWFjaCAkdmFsdWUgaW4gJHZhbHVlLWxpc3Qge1xyXG4gICAgQGlmIHVuaXRsZXNzKCR2YWx1ZSkgYW5kICR2YWx1ZSAhPSAwIHtcclxuICAgICAgJHZhbHVlOiAkdmFsdWUgKiBub3JtYWxpemUtcmh5dGhtKCRiYXNlLWxpbmUtaGVpZ2h0LCAkcmVsYXRpdmUtdG8pO1xyXG4gICAgfVxyXG4gICAgJG5vcm1hbGl6ZWQtdmFsdWVzOiBhcHBlbmQoJG5vcm1hbGl6ZWQtdmFsdWVzLCAkdmFsdWUsICRzZXApO1xyXG4gIH1cclxuICAjeyRwcm9wZXJ0eX06ICRub3JtYWxpemVkLXZhbHVlcztcclxufVxyXG5cclxuQG1peGluIG5vcm1hbGl6ZS1tYXJnaW4oJHZhbHVlcywgJHJlbGF0aXZlLXRvOiAkYmFzZS1mb250LXNpemUpIHtcclxuICBAaW5jbHVkZSBub3JtYWxpemUtcmh5dGhtKG1hcmdpbiwgJHZhbHVlcywgJHJlbGF0aXZlLXRvKTtcclxufVxyXG5cclxuQG1peGluIG5vcm1hbGl6ZS1saW5lLWhlaWdodCgkZm9udC1zaXplLCAkbWluLWxpbmUtcGFkZGluZzogMnB4KSB7XHJcbiAgJGxpbmVzOiBjZWlsKCRmb250LXNpemUgLyAkYmFzZS1saW5lLWhlaWdodCk7XHJcbiAgLy8gSWYgbGluZXMgYXJlIGNyYW1wZWQgaW5jbHVkZSBzb21lIGV4dHJhIGxlYWRpbmcuXHJcbiAgQGlmICgkbGluZXMgKiAkYmFzZS1saW5lLWhlaWdodCAtICRmb250LXNpemUpIDwgKCRtaW4tbGluZS1wYWRkaW5nICogMikge1xyXG4gICAgJGxpbmVzOiAkbGluZXMgKyAxO1xyXG4gIH1cclxuICBAaW5jbHVkZSBub3JtYWxpemUtcmh5dGhtKGxpbmUtaGVpZ2h0LCAkbGluZXMsICRmb250LXNpemUpO1xyXG59XHJcbiIsIi8vIEhlbHBlciBmdW5jdGlvbiBmb3IgdGhlIG5vcm1hbGl6ZSgpIG1peGluLlxyXG5AZnVuY3Rpb24gX25vcm1hbGl6ZS1pbmNsdWRlKCRzZWN0aW9uLCAkZXhjbHVkZTogbnVsbCkge1xyXG4gIC8vIEluaXRpYWxpemUgdGhlIGdsb2JhbCB2YXJpYWJsZXMgbmVlZGVkIGJ5IHRoaXMgZnVuY3Rpb24uXHJcbiAgQGlmIG5vdCBnbG9iYWxfdmFyaWFibGVfZXhpc3RzKF9ub3JtYWxpemUtaW5jbHVkZSkge1xyXG4gICAgJF9ub3JtYWxpemUtaW5jbHVkZTogKCkgIWdsb2JhbDtcclxuICAgICRfbm9ybWFsaXplLWV4Y2x1ZGU6ICgpICFnbG9iYWw7XHJcbiAgfVxyXG4gIC8vIFNpbmNlIHdlIGFyZSBnaXZlbiAyIHBhcmFtZXRlcnMsIHNldCB0aGUgZ2xvYmFsIHZhcmlhYmxlcy5cclxuICBAaWYgJGV4Y2x1ZGUgIT0gbnVsbCB7XHJcbiAgICAkaW5jbHVkZTogJHNlY3Rpb247XHJcbiAgICAvLyBTYXNzIGRvZXNuJ3QgaGF2ZSBzdGF0aWMgdmFyaWFibGVzLCBzbyB0aGUgd29yay1hcm91bmQgaXMgdG8gc3R1ZmYgdGhlc2VcclxuICAgIC8vIHZhbHVlcyBpbnRvIGdsb2JhbCB2YXJpYWJsZXMgc28gd2UgY2FuIGFjY2VzcyB0aGVtIGluIGZ1dHVyZSBjYWxscy5cclxuICAgICRfbm9ybWFsaXplLWluY2x1ZGU6IGlmKHR5cGUtb2YoJGluY2x1ZGUpID09ICdsaXN0JywgJGluY2x1ZGUsICgkaW5jbHVkZSkpICFnbG9iYWw7XHJcbiAgICAkX25vcm1hbGl6ZS1leGNsdWRlOiBpZih0eXBlLW9mKCRleGNsdWRlKSA9PSAnbGlzdCcsICRleGNsdWRlLCAoJGV4Y2x1ZGUpKSAhZ2xvYmFsO1xyXG4gICAgQHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8gQ2hlY2sgaWYgJHNlY3Rpb24gaXMgaW4gdGhlICRpbmNsdWRlIGxpc3QuXHJcbiAgQGlmIGluZGV4KCRfbm9ybWFsaXplLWluY2x1ZGUsICRzZWN0aW9uKSB7XHJcbiAgICBAcmV0dXJuIHRydWU7XHJcbiAgfVxyXG4gIC8vIElmICRpbmNsdWRlIGlzIHNldCB0byAoYWxsKSwgbWFrZSBzdXJlICRzZWN0aW9uIGlzIG5vdCBpbiAkZXhjbHVkZS5cclxuICBAZWxzZSBpZiBub3QgaW5kZXgoJF9ub3JtYWxpemUtZXhjbHVkZSwgJHNlY3Rpb24pIGFuZCBpbmRleCgkX25vcm1hbGl6ZS1pbmNsdWRlLCBhbGwpIHtcclxuICAgIEByZXR1cm4gdHJ1ZTtcclxuICB9XHJcbiAgQHJldHVybiBmYWxzZTtcclxufVxyXG5cclxuQG1peGluIG5vcm1hbGl6ZSgkaW5jbHVkZTogKGFsbCksICRleGNsdWRlOiAoKSkge1xyXG4gIC8vIEluaXRpYWxpemUgdGhlIGhlbHBlciBmdW5jdGlvbiBieSBwYXNzaW5nIGl0IHRoaXMgbWl4aW4ncyBwYXJhbWV0ZXJzLlxyXG4gICRpbml0OiBfbm9ybWFsaXplLWluY2x1ZGUoJGluY2x1ZGUsICRleGNsdWRlKTtcclxuXHJcbiAgLy8gSWYgd2UndmUgY3VzdG9taXplZCBhbnkgZm9udCB2YXJpYWJsZXMsIHdlJ2xsIG5lZWQgZXh0cmEgcHJvcGVydGllcy5cclxuICBAaWYgJGJhc2UtZm9udC1zaXplICE9IDE2cHhcclxuICAgIG9yICRiYXNlLWxpbmUtaGVpZ2h0ICE9IDI0cHhcclxuICAgIG9yICRiYXNlLXVuaXQgIT0gJ2VtJ1xyXG4gICAgb3IgJGgxLWZvbnQtc2l6ZSAhPSAyICAgICogJGJhc2UtZm9udC1zaXplXHJcbiAgICBvciAkaDItZm9udC1zaXplICE9IDEuNSAgKiAkYmFzZS1mb250LXNpemVcclxuICAgIG9yICRoMy1mb250LXNpemUgIT0gMS4xNyAqICRiYXNlLWZvbnQtc2l6ZVxyXG4gICAgb3IgJGg0LWZvbnQtc2l6ZSAhPSAxICAgICogJGJhc2UtZm9udC1zaXplXHJcbiAgICBvciAkaDUtZm9udC1zaXplICE9IDAuODMgKiAkYmFzZS1mb250LXNpemVcclxuICAgIG9yICRoNi1mb250LXNpemUgIT0gMC42NyAqICRiYXNlLWZvbnQtc2l6ZSB7XHJcbiAgICAkbm9ybWFsaXplLXZlcnRpY2FsLXJoeXRobTogdHJ1ZSAhZ2xvYmFsO1xyXG4gIH1cclxuXHJcbiAgLyohIG5vcm1hbGl6ZS1zY3NzIHwgTUlUL0dQTHYyIExpY2Vuc2UgfCBiaXQubHkvbm9ybWFsaXplLXNjc3MgKi9cclxuXHJcbiAgQGlmIF9ub3JtYWxpemUtaW5jbHVkZShkb2N1bWVudCkge1xyXG4gICAgLyogRG9jdW1lbnRcclxuICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiAxLiBDaGFuZ2UgdGhlIGRlZmF1bHQgZm9udCBmYW1pbHkgaW4gYWxsIGJyb3dzZXJzIChvcGluaW9uYXRlZCkuXHJcbiAgICAgKiAyLiBDb3JyZWN0IHRoZSBsaW5lIGhlaWdodCBpbiBhbGwgYnJvd3NlcnMuXHJcbiAgICAgKiAzLiBQcmV2ZW50IGFkanVzdG1lbnRzIG9mIGZvbnQgc2l6ZSBhZnRlciBvcmllbnRhdGlvbiBjaGFuZ2VzIGluXHJcbiAgICAgKiAgICBJRSBvbiBXaW5kb3dzIFBob25lIGFuZCBpbiBpT1MuXHJcbiAgICAgKi9cclxuXHJcbiAgICBodG1sIHtcclxuICAgICAgZm9udC1mYW1pbHk6ICRiYXNlLWZvbnQtZmFtaWx5OyAvKiAxICovXHJcbiAgICAgIEBpZiAkbm9ybWFsaXplLXZlcnRpY2FsLXJoeXRobSB7XHJcbiAgICAgICAgLy8gQ29ycmVjdCBvbGQgYnJvd3NlciBidWcgdGhhdCBwcmV2ZW50ZWQgYWNjZXNzaWJsZSByZXNpemluZyBvZiB0ZXh0XHJcbiAgICAgICAgLy8gd2hlbiByb290IGZvbnQtc2l6ZSBpcyBzZXQgd2l0aCBweCBvciBlbS5cclxuICAgICAgICBmb250LXNpemU6ICgkYmFzZS1mb250LXNpemUgLyAxNnB4KSAqIDEwMCU7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6ICgkYmFzZS1saW5lLWhlaWdodCAvICRiYXNlLWZvbnQtc2l6ZSkgKiAxZW07IC8qIDIgKi9cclxuICAgICAgfVxyXG4gICAgICBAZWxzZSB7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTU7IC8qIDIgKi9cclxuICAgICAgfVxyXG4gICAgICAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLyogMyAqL1xyXG4gICAgICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8qIDMgKi9cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpZiBfbm9ybWFsaXplLWluY2x1ZGUoc2VjdGlvbnMpIHtcclxuICAgIC8qIFNlY3Rpb25zXHJcbiAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVtb3ZlIHRoZSBtYXJnaW4gaW4gYWxsIGJyb3dzZXJzIChvcGluaW9uYXRlZCkuXHJcbiAgICAgKi9cclxuXHJcbiAgICBib2R5IHtcclxuICAgICAgbWFyZ2luOiAwO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgOS0uXHJcbiAgICAgKi9cclxuXHJcbiAgICBhcnRpY2xlLFxyXG4gICAgYXNpZGUsXHJcbiAgICBmb290ZXIsXHJcbiAgICBoZWFkZXIsXHJcbiAgICBuYXYsXHJcbiAgICBzZWN0aW9uIHtcclxuICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb3JyZWN0IHRoZSBmb250IHNpemUgYW5kIG1hcmdpbiBvbiBgaDFgIGVsZW1lbnRzIHdpdGhpbiBgc2VjdGlvbmAgYW5kXHJcbiAgICAgKiBgYXJ0aWNsZWAgY29udGV4dHMgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgU2FmYXJpLlxyXG4gICAgICovXHJcblxyXG4gICAgaDEge1xyXG4gICAgICBAaW5jbHVkZSBub3JtYWxpemUtZm9udC1zaXplKCRoMS1mb250LXNpemUpO1xyXG4gICAgICBAaWYgJG5vcm1hbGl6ZS12ZXJ0aWNhbC1yaHl0aG0ge1xyXG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1saW5lLWhlaWdodCgkaDEtZm9udC1zaXplKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgQGlmICRub3JtYWxpemUtdmVydGljYWwtcmh5dGhtIHtcclxuICAgICAgICAvKiBTZXQgMSB1bml0IG9mIHZlcnRpY2FsIHJoeXRobSBvbiB0aGUgdG9wIGFuZCBib3R0b20gbWFyZ2lucy4gKi9cclxuICAgICAgICBAaW5jbHVkZSBub3JtYWxpemUtbWFyZ2luKDEgMCwgJGgxLWZvbnQtc2l6ZSk7XHJcbiAgICAgIH1cclxuICAgICAgQGVsc2Uge1xyXG4gICAgICAgIG1hcmdpbjogMC42N2VtIDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAaWYgJG5vcm1hbGl6ZS12ZXJ0aWNhbC1yaHl0aG0ge1xyXG4gICAgICBoMiB7XHJcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLWZvbnQtc2l6ZSgkaDItZm9udC1zaXplKTtcclxuICAgICAgICBAaW5jbHVkZSBub3JtYWxpemUtbGluZS1oZWlnaHQoJGgyLWZvbnQtc2l6ZSk7XHJcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLW1hcmdpbigxIDAsICRoMi1mb250LXNpemUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBoMyB7XHJcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLWZvbnQtc2l6ZSgkaDMtZm9udC1zaXplKTtcclxuICAgICAgICBAaW5jbHVkZSBub3JtYWxpemUtbGluZS1oZWlnaHQoJGgzLWZvbnQtc2l6ZSk7XHJcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLW1hcmdpbigxIDAsICRoMy1mb250LXNpemUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBoNCB7XHJcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLWZvbnQtc2l6ZSgkaDQtZm9udC1zaXplKTtcclxuICAgICAgICBAaW5jbHVkZSBub3JtYWxpemUtbGluZS1oZWlnaHQoJGg0LWZvbnQtc2l6ZSk7XHJcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLW1hcmdpbigxIDAsICRoNC1mb250LXNpemUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBoNSB7XHJcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLWZvbnQtc2l6ZSgkaDUtZm9udC1zaXplKTtcclxuICAgICAgICBAaW5jbHVkZSBub3JtYWxpemUtbGluZS1oZWlnaHQoJGg1LWZvbnQtc2l6ZSk7XHJcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLW1hcmdpbigxIDAsICRoNS1mb250LXNpemUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBoNiB7XHJcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLWZvbnQtc2l6ZSgkaDYtZm9udC1zaXplKTtcclxuICAgICAgICBAaW5jbHVkZSBub3JtYWxpemUtbGluZS1oZWlnaHQoJGg2LWZvbnQtc2l6ZSk7XHJcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLW1hcmdpbigxIDAsICRoNi1mb250LXNpemUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaWYgX25vcm1hbGl6ZS1pbmNsdWRlKGdyb3VwaW5nKSB7XHJcbiAgICAvKiBHcm91cGluZyBjb250ZW50XHJcbiAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuICAgIEBpZiAkbm9ybWFsaXplLXZlcnRpY2FsLXJoeXRobSB7XHJcbiAgICAgIC8qKlxyXG4gICAgICAgKiBTZXQgMSB1bml0IG9mIHZlcnRpY2FsIHJoeXRobSBvbiB0aGUgdG9wIGFuZCBib3R0b20gbWFyZ2luLlxyXG4gICAgICAgKi9cclxuXHJcbiAgICAgIGJsb2NrcXVvdGUge1xyXG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1tYXJnaW4oMSAkaW5kZW50LWFtb3VudCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGRsLFxyXG4gICAgICBvbCxcclxuICAgICAgdWwge1xyXG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1tYXJnaW4oMSAwKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLyoqXHJcbiAgICAgICAqIFR1cm4gb2ZmIG1hcmdpbnMgb24gbmVzdGVkIGxpc3RzLlxyXG4gICAgICAgKi9cclxuXHJcbiAgICAgIG9sLFxyXG4gICAgICB1bCB7XHJcbiAgICAgICAgb2wsXHJcbiAgICAgICAgdWwge1xyXG4gICAgICAgICAgbWFyZ2luOiAwO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgZGQge1xyXG4gICAgICAgIG1hcmdpbjogMCAwIDAgJGluZGVudC1hbW91bnQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIG9sLFxyXG4gICAgICB1bCB7XHJcbiAgICAgICAgcGFkZGluZzogMCAwIDAgJGluZGVudC1hbW91bnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDktLlxyXG4gICAgICovXHJcblxyXG4gICAgZmlnY2FwdGlvbixcclxuICAgIGZpZ3VyZSB7XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IG1hcmdpbiBpbiBJRSA4LlxyXG4gICAgICovXHJcblxyXG4gICAgZmlndXJlIHtcclxuICAgICAgQGlmICRub3JtYWxpemUtdmVydGljYWwtcmh5dGhtIHtcclxuICAgICAgICBAaW5jbHVkZSBub3JtYWxpemUtbWFyZ2luKDEgJGluZGVudC1hbW91bnQpO1xyXG4gICAgICB9XHJcbiAgICAgIEBlbHNlIHtcclxuICAgICAgICBtYXJnaW46IDFlbSAkaW5kZW50LWFtb3VudDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gRmlyZWZveC5cclxuICAgICAqIDIuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UgYW5kIElFLlxyXG4gICAgICovXHJcblxyXG4gICAgaHIge1xyXG4gICAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsgLyogMSAqL1xyXG4gICAgICBoZWlnaHQ6IDA7IC8qIDEgKi9cclxuICAgICAgb3ZlcmZsb3c6IHZpc2libGU7IC8qIDIgKi9cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFLlxyXG4gICAgICovXHJcblxyXG4gICAgbWFpbiB7XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgfVxyXG5cclxuICAgIEBpZiAkbm9ybWFsaXplLXZlcnRpY2FsLXJoeXRobSB7XHJcbiAgICAgIC8qKlxyXG4gICAgICAgKiBTZXQgMSB1bml0IG9mIHZlcnRpY2FsIHJoeXRobSBvbiB0aGUgdG9wIGFuZCBib3R0b20gbWFyZ2luLlxyXG4gICAgICAgKi9cclxuXHJcbiAgICAgIHAsXHJcbiAgICAgIHByZSB7XHJcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLW1hcmdpbigxIDApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiAxLiBDb3JyZWN0IHRoZSBpbmhlcml0YW5jZSBhbmQgc2NhbGluZyBvZiBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxyXG4gICAgICogMi4gQ29ycmVjdCB0aGUgb2RkIGBlbWAgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxyXG4gICAgICovXHJcblxyXG4gICAgcHJlIHtcclxuICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlOyAvKiAxICovXHJcbiAgICAgIGZvbnQtc2l6ZTogMWVtOyAvKiAyICovXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaWYgX25vcm1hbGl6ZS1pbmNsdWRlKGxpbmtzKSB7XHJcbiAgICAvKiBMaW5rc1xyXG4gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbiAgICAvKipcclxuICAgICAqIDEuIFJlbW92ZSB0aGUgZ3JheSBiYWNrZ3JvdW5kIG9uIGFjdGl2ZSBsaW5rcyBpbiBJRSAxMC5cclxuICAgICAqIDIuIFJlbW92ZSBnYXBzIGluIGxpbmtzIHVuZGVybGluZSBpbiBpT1MgOCsgYW5kIFNhZmFyaSA4Ky5cclxuICAgICAqL1xyXG5cclxuICAgIGEge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgLyogMSAqL1xyXG4gICAgICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbi1za2lwOiBvYmplY3RzOyAvKiAyICovXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZW1vdmUgdGhlIG91dGxpbmUgb24gZm9jdXNlZCBsaW5rcyB3aGVuIHRoZXkgYXJlIGFsc28gYWN0aXZlIG9yIGhvdmVyZWRcclxuICAgICAqIGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxyXG4gICAgICovXHJcblxyXG4gICAgYTphY3RpdmUsXHJcbiAgICBhOmhvdmVyIHtcclxuICAgICAgb3V0bGluZS13aWR0aDogMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpZiBfbm9ybWFsaXplLWluY2x1ZGUodGV4dCkge1xyXG4gICAgLyogVGV4dC1sZXZlbCBzZW1hbnRpY3NcclxuICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiAxLiBSZW1vdmUgdGhlIGJvdHRvbSBib3JkZXIgaW4gRmlyZWZveCAzOS0uXHJcbiAgICAgKiAyLiBBZGQgdGhlIGNvcnJlY3QgdGV4dCBkZWNvcmF0aW9uIGluIENocm9tZSwgRWRnZSwgSUUsIE9wZXJhLCBhbmQgU2FmYXJpLlxyXG4gICAgICovXHJcblxyXG4gICAgYWJiclt0aXRsZV0ge1xyXG4gICAgICBib3JkZXItYm90dG9tOiBub25lOyAvKiAxICovXHJcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyAvKiAyICovXHJcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDsgLyogMiAqL1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJldmVudCB0aGUgZHVwbGljYXRlIGFwcGxpY2F0aW9uIG9mIGBib2xkZXJgIGJ5IHRoZSBuZXh0IHJ1bGUgaW4gU2FmYXJpIDYuXHJcbiAgICAgKi9cclxuXHJcbiAgICBiLFxyXG4gICAgc3Ryb25nIHtcclxuICAgICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGQgdGhlIGNvcnJlY3QgZm9udCB3ZWlnaHQgaW4gQ2hyb21lLCBFZGdlLCBhbmQgU2FmYXJpLlxyXG4gICAgICovXHJcblxyXG4gICAgYixcclxuICAgIHN0cm9uZyB7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkZXI7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiAxLiBDb3JyZWN0IHRoZSBpbmhlcml0YW5jZSBhbmQgc2NhbGluZyBvZiBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxyXG4gICAgICogMi4gQ29ycmVjdCB0aGUgb2RkIGBlbWAgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxyXG4gICAgICovXHJcblxyXG4gICAgY29kZSxcclxuICAgIGtiZCxcclxuICAgIHNhbXAge1xyXG4gICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7IC8qIDEgKi9cclxuICAgICAgZm9udC1zaXplOiAxZW07IC8qIDIgKi9cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZCB0aGUgY29ycmVjdCBmb250IHN0eWxlIGluIEFuZHJvaWQgNC4zLS5cclxuICAgICAqL1xyXG5cclxuICAgIGRmbiB7XHJcbiAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZCB0aGUgY29ycmVjdCBiYWNrZ3JvdW5kIGFuZCBjb2xvciBpbiBJRSA5LS5cclxuICAgICAqL1xyXG5cclxuICAgIG1hcmsge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmYwO1xyXG4gICAgICBjb2xvcjogIzAwMDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZCB0aGUgY29ycmVjdCBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxyXG4gICAgICovXHJcblxyXG4gICAgc21hbGwge1xyXG4gICAgICBmb250LXNpemU6IDgwJTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByZXZlbnQgYHN1YmAgYW5kIGBzdXBgIGVsZW1lbnRzIGZyb20gYWZmZWN0aW5nIHRoZSBsaW5lIGhlaWdodCBpblxyXG4gICAgICogYWxsIGJyb3dzZXJzLlxyXG4gICAgICovXHJcblxyXG4gICAgc3ViLFxyXG4gICAgc3VwIHtcclxuICAgICAgZm9udC1zaXplOiA3NSU7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAwO1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcclxuICAgIH1cclxuXHJcbiAgICBzdWIge1xyXG4gICAgICBib3R0b206IC0wLjI1ZW07XHJcbiAgICB9XHJcblxyXG4gICAgc3VwIHtcclxuICAgICAgdG9wOiAtMC41ZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaWYgX25vcm1hbGl6ZS1pbmNsdWRlKGVtYmVkZGVkKSB7XHJcbiAgICAvKiBFbWJlZGRlZCBjb250ZW50XHJcbiAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgOS0uXHJcbiAgICAgKi9cclxuXHJcbiAgICBhdWRpbyxcclxuICAgIHZpZGVvIHtcclxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gaU9TIDQtNy5cclxuICAgICAqL1xyXG5cclxuICAgIGF1ZGlvOm5vdChbY29udHJvbHNdKSB7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAgIGhlaWdodDogMDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZSB0aGUgYm9yZGVyIG9uIGltYWdlcyBpbnNpZGUgbGlua3MgaW4gSUUgMTAtLlxyXG4gICAgICovXHJcblxyXG4gICAgaW1nIHtcclxuICAgICAgYm9yZGVyLXN0eWxlOiBub25lO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGlkZSB0aGUgb3ZlcmZsb3cgaW4gSUUuXHJcbiAgICAgKi9cclxuXHJcbiAgICBzdmc6bm90KDpyb290KSB7XHJcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaWYgX25vcm1hbGl6ZS1pbmNsdWRlKGZvcm1zKSB7XHJcbiAgICAvKiBGb3Jtc1xyXG4gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbiAgICAvKipcclxuICAgICAqIDEuIENoYW5nZSB0aGUgZm9udCBzdHlsZXMgaW4gYWxsIGJyb3dzZXJzIChvcGluaW9uYXRlZCkuXHJcbiAgICAgKiAyLiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBGaXJlZm94IGFuZCBTYWZhcmkuXHJcbiAgICAgKi9cclxuXHJcbiAgICBidXR0b24sXHJcbiAgICBpbnB1dCxcclxuICAgIG9wdGdyb3VwLFxyXG4gICAgc2VsZWN0LFxyXG4gICAgdGV4dGFyZWEge1xyXG4gICAgICBmb250LWZhbWlseTogJGJhc2UtZm9udC1mYW1pbHk7IC8qIDEgKi9cclxuICAgICAgZm9udC1zaXplOiAxMDAlOyAvKiAxICovXHJcbiAgICAgIEBpZiAkbm9ybWFsaXplLXZlcnRpY2FsLXJoeXRobSB7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6ICgkYmFzZS1saW5lLWhlaWdodCAvICRiYXNlLWZvbnQtc2l6ZSkgKiAxZW07IC8qIDEgKi9cclxuICAgICAgfVxyXG4gICAgICBAZWxzZSB7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTU7IC8qIDEgKi9cclxuICAgICAgfVxyXG4gICAgICBtYXJnaW46IDA7IC8qIDIgKi9cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNob3cgdGhlIG92ZXJmbG93IGluIElFLlxyXG4gICAgICovXHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEVkZ2UsIEZpcmVmb3gsIGFuZCBJRS5cclxuICAgICAqIDEuIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRmlyZWZveC5cclxuICAgICAqL1xyXG5cclxuICAgIGJ1dHRvbixcclxuICAgIHNlbGVjdCB7IC8qIDEgKi9cclxuICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiAxLiBQcmV2ZW50IGEgV2ViS2l0IGJ1ZyB3aGVyZSAoMikgZGVzdHJveXMgbmF0aXZlIGBhdWRpb2AgYW5kIGB2aWRlb2BcclxuICAgICAqICAgIGNvbnRyb2xzIGluIEFuZHJvaWQgNC5cclxuICAgICAqIDIuIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXHJcbiAgICAgKi9cclxuXHJcbiAgICBidXR0b24sXHJcbiAgICBodG1sIFt0eXBlPVwiYnV0dG9uXCJdLCAvKiAxICovXHJcbiAgICBbdHlwZT1cInJlc2V0XCJdLFxyXG4gICAgW3R5cGU9XCJzdWJtaXRcIl0ge1xyXG4gICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLyogMiAqL1xyXG4gICAgfVxyXG5cclxuICAgIGJ1dHRvbixcclxuICAgIFt0eXBlPVwiYnV0dG9uXCJdLFxyXG4gICAgW3R5cGU9XCJyZXNldFwiXSxcclxuICAgIFt0eXBlPVwic3VibWl0XCJdIHtcclxuXHJcbiAgICAgIC8qKlxyXG4gICAgICAgKiBSZW1vdmUgdGhlIGlubmVyIGJvcmRlciBhbmQgcGFkZGluZyBpbiBGaXJlZm94LlxyXG4gICAgICAgKi9cclxuXHJcbiAgICAgICY6Oi1tb3otZm9jdXMtaW5uZXIge1xyXG4gICAgICAgIGJvcmRlci1zdHlsZTogbm9uZTtcclxuICAgICAgICBwYWRkaW5nOiAwO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvKipcclxuICAgICAgICogUmVzdG9yZSB0aGUgZm9jdXMgc3R5bGVzIHVuc2V0IGJ5IHRoZSBwcmV2aW91cyBydWxlLlxyXG4gICAgICAgKi9cclxuXHJcbiAgICAgICY6LW1vei1mb2N1c3Jpbmcge1xyXG4gICAgICAgIG91dGxpbmU6IDFweCBkb3R0ZWQgQnV0dG9uVGV4dDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZS5cclxuICAgICAqL1xyXG5cclxuICAgIGlucHV0IHtcclxuICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiAxLiBBZGQgdGhlIGNvcnJlY3QgYm94IHNpemluZyBpbiBJRSAxMC0uXHJcbiAgICAgKiAyLiBSZW1vdmUgdGhlIHBhZGRpbmcgaW4gSUUgMTAtLlxyXG4gICAgICovXHJcblxyXG4gICAgW3R5cGU9XCJjaGVja2JveFwiXSxcclxuICAgIFt0eXBlPVwicmFkaW9cIl0ge1xyXG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiAxICovXHJcbiAgICAgIHBhZGRpbmc6IDA7IC8qIDIgKi9cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENvcnJlY3QgdGhlIGN1cnNvciBzdHlsZSBvZiBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBidXR0b25zIGluIENocm9tZS5cclxuICAgICAqL1xyXG5cclxuICAgIFt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxyXG4gICAgW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xyXG4gICAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiAxLiBDb3JyZWN0IHRoZSBvZGQgYXBwZWFyYW5jZSBpbiBDaHJvbWUgYW5kIFNhZmFyaS5cclxuICAgICAqIDIuIENvcnJlY3QgdGhlIG91dGxpbmUgc3R5bGUgaW4gU2FmYXJpLlxyXG4gICAgICovXHJcblxyXG4gICAgW3R5cGU9XCJzZWFyY2hcIl0ge1xyXG4gICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsgLyogMSAqL1xyXG4gICAgICBvdXRsaW5lLW9mZnNldDogLTJweDsgLyogMiAqL1xyXG5cclxuICAgICAgLyoqXHJcbiAgICAgICAqIFJlbW92ZSB0aGUgaW5uZXIgcGFkZGluZyBhbmQgY2FuY2VsIGJ1dHRvbnMgaW4gQ2hyb21lIGFuZCBTYWZhcmkgb24gbWFjT1MuXHJcbiAgICAgICAqL1xyXG5cclxuICAgICAgJjo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbixcclxuICAgICAgJjo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XHJcbiAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiAxLiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxyXG4gICAgICogMi4gQ2hhbmdlIGZvbnQgcHJvcGVydGllcyB0byBgaW5oZXJpdGAgaW4gU2FmYXJpLlxyXG4gICAgICovXHJcblxyXG4gICAgOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiB7XHJcbiAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvKiAxICovXHJcbiAgICAgIGZvbnQ6IGluaGVyaXQ7IC8qIDIgKi9cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENoYW5nZSB0aGUgYm9yZGVyLCBtYXJnaW4sIGFuZCBwYWRkaW5nIGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxyXG4gICAgICovXHJcblxyXG4gICAgZmllbGRzZXQge1xyXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjYzBjMGMwO1xyXG4gICAgICBtYXJnaW46IDAgMnB4O1xyXG4gICAgICBwYWRkaW5nOiAwLjM1ZW0gMC42MjVlbSAwLjc1ZW07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiAxLiBDb3JyZWN0IHRoZSB0ZXh0IHdyYXBwaW5nIGluIEVkZ2UgYW5kIElFLlxyXG4gICAgICogMi4gQ29ycmVjdCB0aGUgY29sb3IgaW5oZXJpdGFuY2UgZnJvbSBgZmllbGRzZXRgIGVsZW1lbnRzIGluIElFLlxyXG4gICAgICogMy4gUmVtb3ZlIHRoZSBwYWRkaW5nIHNvIGRldmVsb3BlcnMgYXJlIG5vdCBjYXVnaHQgb3V0IHdoZW4gdGhleSB6ZXJvIG91dFxyXG4gICAgICogICAgYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBhbGwgYnJvd3NlcnMuXHJcbiAgICAgKi9cclxuXHJcbiAgICBsZWdlbmQge1xyXG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiAxICovXHJcbiAgICAgIGRpc3BsYXk6IHRhYmxlOyAvKiAxICovXHJcbiAgICAgIG1heC13aWR0aDogMTAwJTsgLyogMSAqL1xyXG4gICAgICBwYWRkaW5nOiAwOyAvKiAzICovXHJcbiAgICAgIGNvbG9yOiBpbmhlcml0OyAvKiAyICovXHJcbiAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7IC8qIDEgKi9cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIDEuIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDktLlxyXG4gICAgICogMi4gQWRkIHRoZSBjb3JyZWN0IHZlcnRpY2FsIGFsaWdubWVudCBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBPcGVyYS5cclxuICAgICAqL1xyXG5cclxuICAgIHByb2dyZXNzIHtcclxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOyAvKiAxICovXHJcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsgLyogMiAqL1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVtb3ZlIHRoZSBkZWZhdWx0IHZlcnRpY2FsIHNjcm9sbGJhciBpbiBJRS5cclxuICAgICAqL1xyXG5cclxuICAgIHRleHRhcmVhIHtcclxuICAgICAgb3ZlcmZsb3c6IGF1dG87XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaWYgX25vcm1hbGl6ZS1pbmNsdWRlKGludGVyYWN0aXZlKSB7XHJcbiAgICAvKiBJbnRlcmFjdGl2ZVxyXG4gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbiAgICAvKlxyXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gRWRnZSwgSUUsIGFuZCBGaXJlZm94LlxyXG4gICAgICovXHJcblxyXG4gICAgZGV0YWlscyB7XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgfVxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBhbGwgYnJvd3NlcnMuXHJcbiAgICAgKi9cclxuXHJcbiAgICBzdW1tYXJ5IHtcclxuICAgICAgZGlzcGxheTogbGlzdC1pdGVtO1xyXG4gICAgfVxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSA5LS5cclxuICAgICAqL1xyXG5cclxuICAgIG1lbnUge1xyXG4gICAgICBkaXNwbGF5OiBibG9jaztcclxuXHJcbiAgICAgIEBpZiAkbm9ybWFsaXplLXZlcnRpY2FsLXJoeXRobSB7XHJcbiAgICAgICAgLypcclxuICAgICAgICAgKiAxLiBTZXQgMSB1bml0IG9mIHZlcnRpY2FsIHJoeXRobSBvbiB0aGUgdG9wIGFuZCBib3R0b20gbWFyZ2luLlxyXG4gICAgICAgICAqIDIuIFNldCBjb25zaXN0ZW50IHNwYWNlIGZvciB0aGUgbGlzdCBzdHlsZSBpbWFnZS5cclxuICAgICAgICAgKi9cclxuXHJcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLW1hcmdpbigxIDApOyAvKiAxICovXHJcbiAgICAgICAgcGFkZGluZzogMCAwIDAgJGluZGVudC1hbW91bnQ7IC8qIDIgKi9cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogVHVybiBvZmYgbWFyZ2lucyBvbiBuZXN0ZWQgbGlzdHMuXHJcbiAgICAgICAgICovXHJcblxyXG4gICAgICAgIG1lbnUgJixcclxuICAgICAgICBvbCAmLFxyXG4gICAgICAgIHVsICYge1xyXG4gICAgICAgICAgbWFyZ2luOiAwO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGlmIF9ub3JtYWxpemUtaW5jbHVkZShzY3JpcHRpbmcpIHtcclxuICAgIC8qIFNjcmlwdGluZ1xyXG4gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDktLlxyXG4gICAgICovXHJcblxyXG4gICAgY2FudmFzIHtcclxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUuXHJcbiAgICAgKi9cclxuXHJcbiAgICB0ZW1wbGF0ZSB7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaWYgX25vcm1hbGl6ZS1pbmNsdWRlKGhpZGRlbikge1xyXG4gICAgLyogSGlkZGVuXHJcbiAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgMTAtLlxyXG4gICAgICovXHJcblxyXG4gICAgW2hpZGRlbl0ge1xyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLy9cclxuLy8vIENoZWNrcyB3aGV0aGVyIGAkZnVuY3Rpb25zYCBleGlzdCBpbiBnbG9iYWwgc2NvcGUuXHJcbi8vL1xyXG4vLy8gQGFjY2VzcyBwcml2YXRlXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtBcmdMaXN0fSAkZnVuY3Rpb25zIC0gbGlzdCBvZiBmdW5jdGlvbnMgdG8gY2hlY2sgZm9yXHJcbi8vL1xyXG4vLy8gQHJldHVybiB7Qm9vbH0gV2hldGhlciBvciBub3QgdGhlcmUgYXJlIG1pc3NpbmcgZGVwZW5kZW5jaWVzXHJcbi8vL1xyXG4gXHJcbkBmdW5jdGlvbiBzbC1taXNzaW5nLWRlcGVuZGVuY2llcygkZnVuY3Rpb25zLi4uKSB7XHJcbiAgJG1pc3NpbmctZGVwZW5kZW5jaWVzOiAoKTtcclxuICBcclxuICBAZWFjaCAkZnVuY3Rpb24gaW4gJGZ1bmN0aW9ucyB7XHJcbiAgICBAaWYgbm90IGZ1bmN0aW9uLWV4aXN0cygkZnVuY3Rpb24pIHtcclxuICAgICAgJG1pc3NpbmctZGVwZW5kZW5jaWVzOiBhcHBlbmQoJG1pc3NpbmctZGVwZW5kZW5jaWVzLCAkZnVuY3Rpb24sIGNvbW1hKTtcclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgQGlmIGxlbmd0aCgkbWlzc2luZy1kZXBlbmRlbmNpZXMpID4gMCB7XHJcbiAgICBAZXJyb3IgJ1VubWV0IGRlcGVuZGVuY2llcyEgVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIHJlcXVpcmVkOiAjeyRtaXNzaW5nLWRlcGVuZGVuY2llc30uJztcclxuICB9XHJcblxyXG4gIEByZXR1cm4gbGVuZ3RoKCRtaXNzaW5nLWRlcGVuZGVuY2llcykgPiAwO1xyXG59XHJcbiIsIi8vL1xyXG4vLy8gUmV0dXJucyB0cnV0aGluZXNzIG9mIGAkdmFsdWVgLlxyXG4vLy9cclxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxyXG4vLy9cclxuLy8vIEBwYXJhbSB7Kn0gJHZhbHVlIC0gdmFsdWUgdG8gY2hlY2tcclxuLy8vXHJcbi8vLyBAcmV0dXJuIHtCb29sfVxyXG4vLy9cclxuIFxyXG5AZnVuY3Rpb24gc2wtaXMtdHJ1ZSgkdmFsdWUpIHtcclxuICBAcmV0dXJuIGlmKCR2YWx1ZSA9PSBudWxsLCBmYWxzZSwgJHZhbHVlIGFuZCAkdmFsdWUgIT0gbnVsbCBhbmQgJHZhbHVlICE9ICcnIGFuZCAkdmFsdWUgIT0gKCkpO1xyXG59XHJcbiIsIi8vL1xyXG4vLy8gUmV0dXJucyB3aGV0aGVyIGAkbGlzdGAgY29udGFpbnMgYCR2YWx1ZWAuXHJcbi8vL1xyXG4vLy8gQGlnbm9yZSBEb2N1bWVudGF0aW9uOiBodHRwOi8vYXQtaW1wb3J0LmdpdGh1Yi5pby9TYXNzeUxpc3RzL2RvY3VtZW50YXRpb24vI2Z1bmN0aW9uLXNsLWNvbnRhaW5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0xpc3R9ICAgICRsaXN0ICAtIGxpc3QgdG8gY2hlY2tcclxuLy8vIEBwYXJhbSB7Kn0gICAgICAgJHZhbHVlIC0gdmFsdWUgdG8gbG9vayBmb3JcclxuLy8vXHJcbi8vLyBAZXhhbXBsZVxyXG4vLy8gc2wtY29udGFpbihhIGIgYywgYSlcclxuLy8vIC8vIHRydWVcclxuLy8vXHJcbi8vLyBAZXhhbXBsZVxyXG4vLy8gc2wtY29udGFpbihhIGIgYywgeilcclxuLy8vIC8vIGZhbHNlXHJcbi8vL1xyXG4vLy8gQHJldHVybiB7Qm9vbH1cclxuLy8vXHJcblxyXG5AZnVuY3Rpb24gc2wtY29udGFpbigkbGlzdCwgJHZhbHVlKSB7XHJcbiAgQHJldHVybiBub3Qgbm90IGluZGV4KCRsaXN0LCAkdmFsdWUpO1xyXG59XHJcblxyXG4vLy9cclxuLy8vIEByZXF1aXJlcyBzbC1jb250YWluXHJcbi8vLyBAYWxpYXMgc2wtY29udGFpblxyXG4vLy9cclxuIFxyXG5AZnVuY3Rpb24gc2wtaW5jbHVkZSgkbGlzdCwgJHZhbHVlKSB7XHJcbiAgQHJldHVybiBzbC1jb250YWluKCRsaXN0LCAkdmFsdWUpO1xyXG59XHJcbiIsIi8vLyBSZW1vdmVzIGFsbCBmYWxzZSBhbmQgbnVsbCB2YWx1ZXMgZnJvbSBgJGxpc3RgLlxyXG4vLy9cclxuLy8vIEBpZ25vcmUgRG9jdW1lbnRhdGlvbjogaHR0cDovL2F0LWltcG9ydC5naXRodWIuaW8vU2Fzc3lMaXN0cy9kb2N1bWVudGF0aW9uLyNmdW5jdGlvbi1zbC1wdXJnZVxyXG4vLy9cclxuLy8vIEByZXF1aXJlcyBzbC1pcy10cnVlXHJcbi8vLyBAcmVxdWlyZXMgc2wtdG8tbGlzdFxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TGlzdH0gJGxpc3QgLSBsaXN0IHRvIHB1cmdlXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGVcclxuLy8vIHNsLXB1cmdlKG51bGwgYSBmYWxzZSBiKVxyXG4vLy8gLy8gYSBiXHJcbi8vL1xyXG4vLy8gQHJldHVybiB7TGlzdH1cclxuLy8vXHJcblxyXG5AZnVuY3Rpb24gc2wtcHVyZ2UoJGxpc3QpIHtcclxuICAkXzogc2wtbWlzc2luZy1kZXBlbmRlbmNpZXMoJ3NsLWlzLXRydWUnLCAnc2wtdG8tbGlzdCcpO1xyXG4gIFxyXG4gICRyZXN1bHQ6ICgpO1xyXG5cclxuICBAZWFjaCAkaXRlbSBpbiAkbGlzdCB7XHJcbiAgICBAaWYgc2wtaXMtdHJ1ZSgkaXRlbSkge1xyXG4gICAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJGl0ZW0sIGxpc3Qtc2VwYXJhdG9yKCRsaXN0KSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAcmV0dXJuIHNsLXRvLWxpc3QoJHJlc3VsdCk7XHJcbn1cclxuXHJcbi8vL1xyXG4vLy8gQHJlcXVpcmVzIHNsLXB1cmdlXHJcbi8vLyBAYWxpYXMgc2wtcHVyZ2VcclxuLy8vXHJcbiBcclxuQGZ1bmN0aW9uIHNsLWNsZWFuKCRsaXN0KSB7XHJcbiAgQHJldHVybiBzbC1wdXJnZSgkbGlzdCk7XHJcbn1cclxuIiwiLy8vXHJcbi8vLyBSZW1vdmVzIHZhbHVlKHMpIGAkdmFsdWVgIGZyb20gYCRsaXN0YC5cclxuLy8vXHJcbi8vLyBAaWdub3JlIERvY3VtZW50YXRpb246IGh0dHA6Ly9hdC1pbXBvcnQuZ2l0aHViLmlvL1Nhc3N5TGlzdHMvZG9jdW1lbnRhdGlvbi8jZnVuY3Rpb24tc2wtcmVtb3ZlXHJcbi8vL1xyXG4vLy8gQHJlcXVpcmVzIHNsLXJlcGxhY2VcclxuLy8vXHJcbi8vLyBAcGFyYW0ge0xpc3R9ICAgICRsaXN0ICAgICAgLSBsaXN0IHRvIHVwZGF0ZVxyXG4vLy8gQHBhcmFtIHsqfSAgICAgICAkdmFsdWUgICAgIC0gdmFsdWUgdG8gcmVtb3ZlXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGVcclxuLy8vIHNsLXJlbW92ZShhIGIgYywgYSlcclxuLy8vIC8vIGIgY1xyXG4vLy9cclxuLy8vIEByZXR1cm4ge0xpc3R9XHJcbi8vL1xyXG5cclxuQGZ1bmN0aW9uIHNsLXJlbW92ZSgkbGlzdCwgJHZhbHVlKSB7XHJcbiAgJF86IHNsLW1pc3NpbmctZGVwZW5kZW5jaWVzKCdzbC1yZXBsYWNlJyk7XHJcblxyXG4gIEByZXR1cm4gc2wtcmVwbGFjZSgkbGlzdCwgJHZhbHVlLCBudWxsKTtcclxufVxyXG5cclxuLy8vXHJcbi8vLyBAcmVxdWlyZXMgc2wtcmVtb3ZlXHJcbi8vLyBAYWxpYXMgc2wtcmVtb3ZlXHJcbi8vL1xyXG5cclxuQGZ1bmN0aW9uIHNsLXdpdGhvdXQoJGxpc3QsICR2YWx1ZSkge1xyXG4gIEByZXR1cm4gc2wtcmVtb3ZlKCRsaXN0LCAkdmFsdWUpO1xyXG59XHJcbiIsIi8vL1xyXG4vLy8gUmVwbGFjZXMgYCRvbGRgIGJ5IGAkbmV3YCBpbiBgJGxpc3RgLlxyXG4vLy9cclxuLy8vIEBpZ25vcmUgRG9jdW1lbnRhdGlvbjogaHR0cDovL2F0LWltcG9ydC5naXRodWIuaW8vU2Fzc3lMaXN0cy9kb2N1bWVudGF0aW9uLyNmdW5jdGlvbi1zbC1yZXBsYWNlXHJcbi8vL1xyXG4vLy8gQHJlcXVpcmVzIHNsLWlzLXRydWVcclxuLy8vIEByZXF1aXJlcyBzbC1wdXJnZVxyXG4vLy8gQHJlcXVpcmVzIHNsLXRvLWxpc3RcclxuLy8vXHJcbi8vLyBAcGFyYW0ge0xpc3R9ICAgICRsaXN0ICAtIGxpc3QgdG8gdXBkYXRlXHJcbi8vLyBAcGFyYW0geyp9ICAgICAgICRvbGQgICAtIHZhbHVlIHRvIHJlcGxhY2VcclxuLy8vIEBwYXJhbSB7Kn0gICAgICAgJHZhbHVlIC0gbmV3IHZhbHVlIGZvciAkb2xkXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGVcclxuLy8vIHNsLXJlcGxhY2UoYSBiIGMsIGIsIHopXHJcbi8vLyAvLyBhIHogY1xyXG4vLy9cclxuLy8vIEBleGFtcGxlXHJcbi8vLyBzbC1yZXBsYWNlKGEgYiBjLCB5LCB6KVxyXG4vLy8gLy8gYSBiIGNcclxuLy8vIFxyXG4vLy8gQHJldHVybiB7TGlzdH1cclxuLy8vXHJcbiBcclxuQGZ1bmN0aW9uIHNsLXJlcGxhY2UoJGxpc3QsICRvbGQsICR2YWx1ZSkge1xyXG4gICRfOiBzbC1taXNzaW5nLWRlcGVuZGVuY2llcygnc2wtaXMtdHJ1ZScsICdzbC1wdXJnZScsICdzbC10by1saXN0Jyk7XHJcblxyXG4gICRydW5uaW5nOiB0cnVlO1xyXG5cclxuICBAd2hpbGUgJHJ1bm5pbmcge1xyXG4gICAgJGluZGV4OiBpbmRleCgkbGlzdCwgJG9sZCk7XHJcblxyXG4gICAgQGlmIG5vdCAkaW5kZXgge1xyXG4gICAgICAkcnVubmluZzogZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgQGVsc2Uge1xyXG4gICAgICAkbGlzdDogc2V0LW50aCgkbGlzdCwgJGluZGV4LCAkdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gICRsaXN0OiBpZihzbC1pcy10cnVlKCR2YWx1ZSksICRsaXN0LCBzbC1wdXJnZSgkbGlzdCkpO1xyXG4gIFxyXG4gIEByZXR1cm4gc2wtdG8tbGlzdCgkbGlzdCk7XHJcbn1cclxuIiwiLy8vXHJcbi8vLyBDYXN0cyBgJHZhbHVlYCBpbnRvIGEgbGlzdC5cclxuLy8vXHJcbi8vLyBAaWdub3JlIERvY3VtZW50YXRpb246IGh0dHA6Ly9hdC1pbXBvcnQuZ2l0aHViLmlvL1Nhc3N5TGlzdHMvZG9jdW1lbnRhdGlvbi8jZnVuY3Rpb24tc2wtdG8tbGlzdFxyXG4vLy9cclxuLy8vIEBwYXJhbSB7Kn0gJHZhbHVlIC0gdmFsdWUgdG8gY2FzdCB0byBsaXN0XHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlcGFyYXRvciBbc3BhY2VdIC0gc2VwYXJhdG9yIHRvIHVzZVxyXG4vLy9cclxuLy8vIEBleGFtcGxlXHJcbi8vLyBzbC10by1saXN0KGEgYiBjLCBjb21tYSlcclxuLy8vIC8vIGEsIGIsIGNcclxuLy8vIFxyXG4vLy8gQHJldHVybiB7TGlzdH1cclxuLy8vXHJcblxyXG5AZnVuY3Rpb24gc2wtdG8tbGlzdCgkdmFsdWUsICRzZXBhcmF0b3I6IGxpc3Qtc2VwYXJhdG9yKCR2YWx1ZSkpIHtcclxuICBAcmV0dXJuIGpvaW4oKCksICR2YWx1ZSwgJHNlcGFyYXRvcik7XHJcbn1cclxuXHJcbi8vL1xyXG4vLy8gQHJlcXVpcmVzIHNsLXRvLWxpc3RcclxuLy8vIEBhbGlhcyBzbC10by1saXN0XHJcbi8vL1xyXG5cclxuQGZ1bmN0aW9uIHNsLWxpc3RpZnkoJHZhbHVlKSB7XHJcbiAgQHJldHVybiBzbC10by1saXN0KCR2YWx1ZSk7XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuQGltcG9ydCAnbWF0aCc7XHJcbkBpbXBvcnQgJ3VuaXQnO1xyXG5AaW1wb3J0ICd2YWx1ZSc7XHJcbkBpbXBvcnQgJ2RpcmVjdGlvbic7XHJcbkBpbXBvcnQgJ2NvbG9yJztcclxuQGltcG9ydCAnc2VsZWN0b3InO1xyXG5AaW1wb3J0ICdmbGV4JztcclxuQGltcG9ydCAnYnJlYWtwb2ludCc7XHJcbkBpbXBvcnQgJ21peGlucyc7XHJcbkBpbXBvcnQgJ3R5cG9ncmFwaHknO1xyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXHJcbi8vLy9cclxuXHJcbi8vLyBGaW5kcyB0aGUgZ3JlYXRlc3QgY29tbW9uIGRpdmlzb3Igb2YgdHdvIGludGVnZXJzLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYSAtIEZpcnN0IG51bWJlciB0byBjb21wYXJlLlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiIC0gU2Vjb25kIG51bWJlciB0byBjb21wYXJlLlxyXG4vLy9cclxuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBncmVhdGVzdCBjb21tb24gZGl2aXNvci5cclxuQGZ1bmN0aW9uIGdjZCgkYSwgJGIpIHtcclxuICAvLyBGcm9tOiBodHRwOi8vcm9zZXR0YWNvZGUub3JnL3dpa2kvR3JlYXRlc3RfY29tbW9uX2Rpdmlzb3IjSmF2YVNjcmlwdFxyXG4gIEBpZiAoJGIgIT0gMCkge1xyXG4gICAgQHJldHVybiBnY2QoJGIsICRhICUgJGIpO1xyXG4gIH1cclxuICBAZWxzZSB7XHJcbiAgICBAcmV0dXJuIGFicygkYSk7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gSGFuZGxlcyBkZWNpbWFsIGV4cG9uZW50cyBieSB0cnlpbmcgdG8gY29udmVydCB0aGVtIGludG8gYSBmcmFjdGlvbiBhbmQgdGhlbiB1c2UgYSBudGgtcm9vdC1hbGdvcml0aG0gZm9yIHBhcnRzIG9mIHRoZSBjYWxjdWxhdGlvblxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFzZSAtIFRoZSBiYXNlIG51bWJlci5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZXhwb25lbnQgLSBUaGUgZXhwb25lbnQuXHJcbi8vL1xyXG4vLy8gQHJldHVybnMge051bWJlcn0gVGhlIHByb2R1Y3Qgb2YgdGhlIGV4cG9uZW50aWF0aW9uLlxyXG5AZnVuY3Rpb24gcG93KCRiYXNlLCAkZXhwb25lbnQsICRwcmVjOiAxNikge1xyXG4gIEBpZiAoZmxvb3IoJGV4cG9uZW50KSAhPSAkZXhwb25lbnQpIHtcclxuICAgICRwcmVjMiA6IHBvdygxMCwgJHByZWMpO1xyXG4gICAgJGV4cG9uZW50OiByb3VuZCgkZXhwb25lbnQgKiAkcHJlYzIpO1xyXG4gICAgJGRlbm9taW5hdG9yOiBnY2QoJGV4cG9uZW50LCAkcHJlYzIpO1xyXG4gICAgQHJldHVybiBudGgtcm9vdChwb3coJGJhc2UsICRleHBvbmVudCAvICRkZW5vbWluYXRvciksICRwcmVjMiAvICRkZW5vbWluYXRvciwgJHByZWMpO1xyXG4gIH1cclxuXHJcbiAgJHZhbHVlOiAkYmFzZTtcclxuICBAaWYgJGV4cG9uZW50ID4gMSB7XHJcbiAgICBAZm9yICRpIGZyb20gMiB0aHJvdWdoICRleHBvbmVudCB7XHJcbiAgICAgICR2YWx1ZTogJHZhbHVlICogJGJhc2U7XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBlbHNlIGlmICRleHBvbmVudCA8IDEge1xyXG4gICAgQGZvciAkaSBmcm9tIDAgdGhyb3VnaCAtJGV4cG9uZW50IHtcclxuICAgICAgJHZhbHVlOiAkdmFsdWUgLyAkYmFzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEByZXR1cm4gJHZhbHVlO1xyXG59XHJcblxyXG5AZnVuY3Rpb24gbnRoLXJvb3QoJG51bSwgJG46IDIsICRwcmVjOiAxMikge1xyXG4gIC8vIEZyb206IGh0dHA6Ly9yb3NldHRhY29kZS5vcmcvd2lraS9OdGhfcm9vdCNKYXZhU2NyaXB0XHJcbiAgJHg6IDE7XHJcblxyXG4gIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggJHByZWMge1xyXG4gICAgJHg6IDEgLyAkbiAqICgoJG4gLSAxKSAqICR4ICsgKCRudW0gLyBwb3coJHgsICRuIC0gMSkpKTtcclxuICB9XHJcblxyXG4gIEByZXR1cm4gJHg7XHJcbn1cclxuXHJcbi8vLyBDYWxjdWxhdGVzIHRoZSBoZWlnaHQgYXMgYSBwZXJjZW50YWdlIG9mIHRoZSB3aWR0aCBmb3IgYSBnaXZlbiByYXRpby5cclxuLy8vIEBwYXJhbSB7TGlzdH0gJHJhdGlvIC0gUmF0aW8gdG8gdXNlIHRvIGNhbGN1bGF0ZSB0aGUgaGVpZ2h0LCBmb3JtYXR0ZWQgYXMgYHggYnkgeWAuXHJcbi8vLyBAcmV0dXJuIHtOdW1iZXJ9IEEgcGVyY2VudGFnZSB2YWx1ZSBmb3IgdGhlIGhlaWdodCByZWxhdGl2ZSB0byB0aGUgd2lkdGggb2YgYSByZXNwb25zaXZlIGNvbnRhaW5lci5cclxuQGZ1bmN0aW9uIHJhdGlvLXRvLXBlcmNlbnRhZ2UoJHJhdGlvKSB7XHJcbiAgJHc6IG50aCgkcmF0aW8sIDEpO1xyXG4gICRoOiBudGgoJHJhdGlvLCAzKTtcclxuICBAcmV0dXJuICRoIC8gJHcgKiAxMDAlO1xyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBmdW5jdGlvbnNcclxuLy8vL1xyXG5cclxuJGdsb2JhbC1mb250LXNpemU6IDEwMCUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gUmVtb3ZlcyB0aGUgdW5pdCAoZS5nLiBweCwgZW0sIHJlbSkgZnJvbSBhIHZhbHVlLCByZXR1cm5pbmcgdGhlIG51bWJlciBvbmx5LlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbnVtIC0gTnVtYmVyIHRvIHN0cmlwIHVuaXQgZnJvbS5cclxuLy8vXHJcbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBUaGUgc2FtZSBudW1iZXIsIHNhbnMgdW5pdC5cclxuQGZ1bmN0aW9uIHN0cmlwLXVuaXQoJG51bSkge1xyXG4gIEByZXR1cm4gJG51bSAvICgkbnVtICogMCArIDEpO1xyXG59XHJcblxyXG4vLy8gQ29udmVydHMgb25lIG9yIG1vcmUgcGl4ZWwgdmFsdWVzIGludG8gbWF0Y2hpbmcgcmVtIHZhbHVlcy5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkdmFsdWVzIC0gT25lIG9yIG1vcmUgdmFsdWVzIHRvIGNvbnZlcnQuIEJlIHN1cmUgdG8gc2VwYXJhdGUgdGhlbSB3aXRoIHNwYWNlcyBhbmQgbm90IGNvbW1hcy4gSWYgeW91IG5lZWQgdG8gY29udmVydCBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LCB3cmFwIHRoZSBsaXN0IGluIHBhcmVudGhlc2VzLlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYXNlIFtudWxsXSAtIFRoZSBiYXNlIHZhbHVlIHRvIHVzZSB3aGVuIGNhbGN1bGF0aW5nIHRoZSBgcmVtYC4gSWYgeW91J3JlIHVzaW5nIEZvdW5kYXRpb24gb3V0IG9mIHRoZSBib3gsIHRoaXMgaXMgMTZweC4gSWYgdGhpcyBwYXJhbWV0ZXIgaXMgYG51bGxgLCB0aGUgZnVuY3Rpb24gd2lsbCByZWZlcmVuY2UgdGhlIGAkYmFzZS1mb250LXNpemVgIHZhcmlhYmxlIGFzIHRoZSBiYXNlLlxyXG4vLy9cclxuLy8vIEByZXR1cm5zIHtMaXN0fSBBIGxpc3Qgb2YgY29udmVydGVkIHZhbHVlcy5cclxuQGZ1bmN0aW9uIHJlbS1jYWxjKCR2YWx1ZXMsICRiYXNlOiBudWxsKSB7XHJcbiAgJHJlbS12YWx1ZXM6ICgpO1xyXG4gICRjb3VudDogbGVuZ3RoKCR2YWx1ZXMpO1xyXG5cclxuICAvLyBJZiBubyBiYXNlIGlzIGRlZmluZWQsIGRlZmVyIHRvIHRoZSBnbG9iYWwgZm9udCBzaXplXHJcbiAgQGlmICRiYXNlID09IG51bGwge1xyXG4gICAgJGJhc2U6ICRnbG9iYWwtZm9udC1zaXplO1xyXG4gIH1cclxuXHJcbiAgLy8gSWYgdGhlIGJhc2UgZm9udCBzaXplIGlzIGEgJSwgdGhlbiBtdWx0aXBseSBpdCBieSAxNnB4XHJcbiAgLy8gVGhpcyBpcyBiZWNhdXNlIDEwMCUgZm9udCBzaXplID0gMTZweCBpbiBtb3N0IGFsbCBicm93c2Vyc1xyXG4gIEBpZiB1bml0KCRiYXNlKSA9PSAnJScge1xyXG4gICAgJGJhc2U6ICgkYmFzZSAvIDEwMCUpICogMTZweDtcclxuICB9XHJcblxyXG4gIC8vIFVzaW5nIHJlbSBhcyBiYXNlIGFsbG93cyBjb3JyZWN0IHNjYWxpbmdcclxuICBAaWYgdW5pdCgkYmFzZSkgPT0gJ3JlbScge1xyXG4gICAgJGJhc2U6IHN0cmlwLXVuaXQoJGJhc2UpICogMTZweDtcclxuICB9XHJcblxyXG4gIEBpZiAkY291bnQgPT0gMSB7XHJcbiAgICBAcmV0dXJuIC16Zi10by1yZW0oJHZhbHVlcywgJGJhc2UpO1xyXG4gIH1cclxuXHJcbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkY291bnQge1xyXG4gICAgJHJlbS12YWx1ZXM6IGFwcGVuZCgkcmVtLXZhbHVlcywgLXpmLXRvLXJlbShudGgoJHZhbHVlcywgJGkpLCAkYmFzZSkpO1xyXG4gIH1cclxuXHJcbiAgQHJldHVybiAkcmVtLXZhbHVlcztcclxufVxyXG5cclxuLy8gQ29udmVydHMgYSB1bml0bGVzcywgcGl4ZWwsIG9yIHJlbSB2YWx1ZSB0byBlbSwgZm9yIHVzZSBpbiBicmVha3BvaW50cy5cclxuQGZ1bmN0aW9uIC16Zi1icC10by1lbSgkdmFsdWUpIHtcclxuICAvLyBQaXhlbCBhbmQgdW5pdGxlc3MgdmFsdWVzIGFyZSBjb252ZXJ0ZWQgdG8gcmVtc1xyXG4gIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ3B4JyBvciB1bml0bGVzcygkdmFsdWUpIHtcclxuICAgICR2YWx1ZTogcmVtLWNhbGMoJHZhbHVlLCAkYmFzZTogMTZweCk7XHJcbiAgfVxyXG5cclxuICAvLyBUaGVuIHRoZSB2YWx1ZSBpcyBjb252ZXJ0ZWQgdG8gZW1zXHJcbiAgQHJldHVybiBzdHJpcC11bml0KCR2YWx1ZSkgKiAxZW07XHJcbn1cclxuXHJcbi8vLyBDb252ZXJ0cyBhIHBpeGVsIHZhbHVlIHRvIG1hdGNoaW5nIHJlbSB2YWx1ZS4gKkFueSogdmFsdWUgcGFzc2VkLCByZWdhcmRsZXNzIG9mIHVuaXQsIGlzIGFzc3VtZWQgdG8gYmUgYSBwaXhlbCB2YWx1ZS4gQnkgZGVmYXVsdCwgdGhlIGJhc2UgcGl4ZWwgdmFsdWUgdXNlZCB0byBjYWxjdWxhdGUgdGhlIHJlbSB2YWx1ZSBpcyB0YWtlbiBmcm9tIHRoZSBgJGdsb2JhbC1mb250LXNpemVgIHZhcmlhYmxlLlxyXG4vLy8gQGFjY2VzcyBwcml2YXRlXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR2YWx1ZSAtIFBpeGVsIHZhbHVlIHRvIGNvbnZlcnQuXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGJhc2UgW251bGxdIC0gQmFzZSBmb3IgcGl4ZWwgY29udmVyc2lvbi5cclxuLy8vXHJcbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBBIG51bWJlciBpbiByZW1zLCBjYWxjdWxhdGVkIGJhc2VkIG9uIHRoZSBnaXZlbiB2YWx1ZSBhbmQgdGhlIGJhc2UgcGl4ZWwgdmFsdWUuIHJlbSB2YWx1ZXMgYXJlIHBhc3NlZCB0aHJvdWdoIGFzIGlzLlxyXG5AZnVuY3Rpb24gLXpmLXRvLXJlbSgkdmFsdWUsICRiYXNlOiBudWxsKSB7XHJcbiAgLy8gQ2hlY2sgaWYgdGhlIHZhbHVlIGlzIGEgbnVtYmVyXHJcbiAgQGlmIHR5cGUtb2YoJHZhbHVlKSAhPSAnbnVtYmVyJyB7XHJcbiAgICBAd2FybiBpbnNwZWN0KCR2YWx1ZSkgKyAnIHdhcyBwYXNzZWQgdG8gcmVtLWNhbGMoKSwgd2hpY2ggaXMgbm90IGEgbnVtYmVyLic7XHJcbiAgICBAcmV0dXJuICR2YWx1ZTtcclxuICB9XHJcblxyXG4gIC8vIFRyYW5zZm9ybSBlbSBpbnRvIHJlbSBpZiBzb21lb25lIGhhbmRzIG92ZXIgJ2VtJ3NcclxuICBAaWYgdW5pdCgkdmFsdWUpID09ICdlbScge1xyXG4gICAgJHZhbHVlOiBzdHJpcC11bml0KCR2YWx1ZSkgKiAxcmVtO1xyXG4gIH1cclxuXHJcbiAgLy8gQ2FsY3VsYXRlIHJlbSBpZiB1bml0cyBmb3IgJHZhbHVlIGlzIG5vdCByZW0gb3IgZW1cclxuICBAaWYgdW5pdCgkdmFsdWUpICE9ICdyZW0nIHtcclxuICAgICR2YWx1ZTogc3RyaXAtdW5pdCgkdmFsdWUpIC8gc3RyaXAtdW5pdCgkYmFzZSkgKiAxcmVtO1xyXG4gIH1cclxuXHJcbiAgLy8gVHVybiAwcmVtIGludG8gMFxyXG4gIEBpZiAkdmFsdWUgPT0gMHJlbSB7XHJcbiAgICAkdmFsdWU6IDA7XHJcbiAgfVxyXG5cclxuICBAcmV0dXJuICR2YWx1ZTtcclxufVxyXG5cclxuLy8vIENvbnZlcnRzIGEgcGl4ZWwsIHBlcmNlbnRhZ2UsIHJlbSBvciBlbSB2YWx1ZSB0byBhIHVuaXRsZXNzIHZhbHVlIGJhc2VkIG9uIGEgZ2l2ZW4gZm9udCBzaXplLiBJZGVhbCBmb3Igd29ya2luZyBvdXQgdW5pdGxlc3MgbGluZSBoZWlnaHRzLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdmFsdWUgLSBWYWx1ZSB0byBjb252ZXJ0IHRvIGEgdW5pdGxlc3MgbGluZSBoZWlnaHRcclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFzZSAtIFRoZSBmb250IHNpemUgdG8gdXNlIHRvIHdvcmsgb3V0IHRoZSBsaW5lIGhlaWdodCAtIGRlZmF1bHRzIHRvICRnbG9iYWwtZm9udC1zaXplXHJcbi8vL1xyXG4vLy8gQHJldHVybiB7TnVtYmVyfSAtIFVuaXRsZXNzIG51bWJlclxyXG5AZnVuY3Rpb24gdW5pdGxlc3MtY2FsYygkdmFsdWUsICRiYXNlOiBudWxsKSB7XHJcblxyXG4gIC8vIElmIG5vIGJhc2UgaXMgZGVmaW5lZCwgZGVmZXIgdG8gdGhlIGdsb2JhbCBmb250IHNpemVcclxuICBAaWYgJGJhc2UgPT0gbnVsbCB7XHJcbiAgICAkYmFzZTogJGdsb2JhbC1mb250LXNpemU7XHJcbiAgfVxyXG5cclxuICAvLyBGaXJzdCwgbGV0cyBjb252ZXJ0IG91ciAkYmFzZSB0byBwaXhlbHNcclxuXHJcbiAgLy8gSWYgdGhlIGJhc2UgZm9udCBzaXplIGlzIGEgJSwgdGhlbiBtdWx0aXBseSBpdCBieSAxNnB4XHJcbiAgQGlmIHVuaXQoJGJhc2UpID09ICclJyB7XHJcbiAgICAkYmFzZTogKCRiYXNlIC8gMTAwJSkgKiAxNnB4O1xyXG4gIH1cclxuXHJcbiAgQGlmIHVuaXQoJGJhc2UpID09ICdyZW0nIHtcclxuICAgICRiYXNlOiBzdHJpcC11bml0KCRiYXNlKSAqIDE2cHg7XHJcbiAgfVxyXG5cclxuICBAaWYgdW5pdCgkYmFzZSkgPT0gJ2VtJyB7XHJcbiAgICAkYmFzZTogc3RyaXAtdW5pdCgkYmFzZSkgKiAxNnB4O1xyXG4gIH1cclxuXHJcbiAgLy8gTm93IGxldHMgY29udmVydCBvdXIgdmFsdWUgdG8gcGl4ZWxzIHRvb1xyXG4gIEBpZiB1bml0KCR2YWx1ZSkgPT0gJyUnIHtcclxuICAgICR2YWx1ZTogKCR2YWx1ZSAvIDEwMCUpICogJGJhc2U7XHJcbiAgfVxyXG5cclxuICBAaWYgdW5pdCgkdmFsdWUpID09ICdyZW0nIHtcclxuICAgICR2YWx1ZTogc3RyaXAtdW5pdCgkdmFsdWUpICogJGJhc2U7XHJcbiAgfVxyXG5cclxuICBAaWYgdW5pdCgkdmFsdWUpID09ICdlbScge1xyXG4gICAgJHZhbHVlOiBzdHJpcC11bml0KCR2YWx1ZSkgKiAkYmFzZTtcclxuICB9XHJcblxyXG4gIC8vICdweCdcclxuICBAaWYgdW5pdCgkdmFsdWUpID09ICdweCcge1xyXG4gICAgQHJldHVybiBzdHJpcC11bml0KCR2YWx1ZSkgLyBzdHJpcC11bml0KCRiYXNlKTtcclxuICB9XHJcblxyXG4gIC8vIGFzc3VtZSB0aGF0IGxpbmUtaGVpZ2h0cyBncmVhdGVybiB0aGVuIDEwIGFyZSBtZWFudCB0byBiZSBhYnNvbHV0ZSBpbiAncHgnXHJcbiAgQGlmIHVuaXRsZXNzKCR2YWx1ZSkgYW5kICgkdmFsdWUgPiAxMCkge1xyXG4gICAgQHJldHVybiAkdmFsdWUgLyBzdHJpcC11bml0KCRiYXNlKTtcclxuICB9XHJcblxyXG4gIEByZXR1cm4gJHZhbHVlO1xyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBmdW5jdGlvbnNcclxuLy8vL1xyXG5cclxuLy8vIERldGVybWluZSBpZiBhIHZhbHVlIGlzIG5vdCBmYWxzZXksIGluIENTUyB0ZXJtcy4gRmFsc2V5IHZhbHVlcyBhcmUgYG51bGxgLCBgbm9uZWAsIGAwYCB3aXRoIGFueSB1bml0LCBvciBhbiBlbXB0eSBsaXN0LlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TWl4ZWR9ICR2YWwgLSBWYWx1ZSB0byBjaGVjay5cclxuLy8vXHJcbi8vLyBAcmV0dXJucyB7Qm9vbGVhbn0gYHRydWVgIGlmIGAkdmFsYCBpcyBub3QgZmFsc2V5LlxyXG5AZnVuY3Rpb24gaGFzLXZhbHVlKCR2YWwpIHtcclxuICBAaWYgJHZhbCA9PSBudWxsIG9yICR2YWwgPT0gbm9uZSB7XHJcbiAgICBAcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBAaWYgdHlwZS1vZigkdmFsKSA9PSAnbnVtYmVyJyBhbmQgc3RyaXAtdW5pdCgkdmFsKSA9PSAwIHtcclxuICAgIEByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG4gIEBpZiB0eXBlLW9mKCR2YWwpID09ICdsaXN0JyBhbmQgbGVuZ3RoKCR2YWwpID09IDAge1xyXG4gICAgQHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgQHJldHVybiB0cnVlO1xyXG59XHJcblxyXG4vLy8gRGV0ZXJtaW5lIGEgdG9wL3JpZ2h0L2JvdHRvbS9yaWdodCB2YWx1ZSBvbiBhIHBhZGRpbmcsIG1hcmdpbiwgZXRjLiBwcm9wZXJ0eSwgbm8gbWF0dGVyIGhvdyBtYW55IHZhbHVlcyB3ZXJlIHBhc3NlZCBpbi4gVXNlIHRoaXMgZnVuY3Rpb24gaWYgeW91IG5lZWQgdG8ga25vdyB0aGUgc3BlY2lmaWMgc2lkZSBvZiBhIHZhbHVlLCBidXQgZG9uJ3Qga25vdyBpZiB0aGUgdmFsdWUgaXMgdXNpbmcgYSBzaG9ydGhhbmQgZm9ybWF0LlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TGlzdHxOdW1iZXJ9ICR2YWwgLSBWYWx1ZSB0byBhbmFseXplLiBTaG91bGQgYmUgYSBzaG9ydGhhbmQgc2l6aW5nIHByb3BlcnR5LCBlLmcuIFwiMWVtIDJlbSAxZW1cIlxyXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc2lkZSAtIFNpZGUgdG8gcmV0dXJuLiBTaG91bGQgYmUgYHRvcGAsIGByaWdodGAsIGBib3R0b21gLCBvciBgbGVmdGAuXHJcbi8vL1xyXG4vLy8gQHJldHVybnMge051bWJlcn0gQSBzaW5nbGUgdmFsdWUgYmFzZWQgb24gYCR2YWxgIGFuZCBgJHNpZGVgLlxyXG5AZnVuY3Rpb24gZ2V0LXNpZGUoJHZhbCwgJHNpZGUpIHtcclxuICAkbGVuZ3RoOiBsZW5ndGgoJHZhbCk7XHJcblxyXG4gIEBpZiAkbGVuZ3RoID09IDEge1xyXG4gICAgQHJldHVybiAkdmFsO1xyXG4gIH1cclxuICBAaWYgJGxlbmd0aCA9PSAyIHtcclxuICAgIEByZXR1cm4gbWFwLWdldCgoXHJcbiAgICAgIHRvcDogbnRoKCR2YWwsIDEpLFxyXG4gICAgICBib3R0b206IG50aCgkdmFsLCAxKSxcclxuICAgICAgbGVmdDogbnRoKCR2YWwsIDIpLFxyXG4gICAgICByaWdodDogbnRoKCR2YWwsIDIpLFxyXG4gICAgKSwgJHNpZGUpO1xyXG4gIH1cclxuICBAaWYgJGxlbmd0aCA9PSAzIHtcclxuICAgIEByZXR1cm4gbWFwLWdldCgoXHJcbiAgICAgIHRvcDogbnRoKCR2YWwsIDEpLFxyXG4gICAgICBsZWZ0OiBudGgoJHZhbCwgMiksXHJcbiAgICAgIHJpZ2h0OiBudGgoJHZhbCwgMiksXHJcbiAgICAgIGJvdHRvbTogbnRoKCR2YWwsIDMpLFxyXG4gICAgKSwgJHNpZGUpO1xyXG4gIH1cclxuICBAaWYgJGxlbmd0aCA9PSA0IHtcclxuICAgIEByZXR1cm4gbWFwLWdldCgoXHJcbiAgICAgIHRvcDogbnRoKCR2YWwsIDEpLFxyXG4gICAgICByaWdodDogbnRoKCR2YWwsIDIpLFxyXG4gICAgICBib3R0b206IG50aCgkdmFsLCAzKSxcclxuICAgICAgbGVmdDogbnRoKCR2YWwsIDQpLFxyXG4gICAgKSwgJHNpZGUpO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIEdpdmVuIGJvcmRlciAkdmFsLCBmaW5kIGEgc3BlY2lmaWMgZWxlbWVudCBvZiB0aGUgYm9yZGVyLCB3aGljaCBpcyAkZWxlbS4gVGhlIHBvc3NpYmxlIHZhbHVlcyBmb3IgJGVsZW0gYXJlIHdpZHRoLCBzdHlsZSwgYW5kIGNvbG9yLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TGlzdH0gJHZhbCAtIEJvcmRlciB2YWx1ZSB0byBmaW5kIGEgdmFsdWUgaW4uXHJcbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRlbGVtIC0gQm9yZGVyIGNvbXBvbmVudCB0byBleHRyYWN0LlxyXG4vLy9cclxuLy8vIEByZXR1cm5zIHtNaXhlZH0gSWYgdGhlIHZhbHVlIGV4aXN0cywgcmV0dXJucyB0aGUgdmFsdWUuIElmIHRoZSB2YWx1ZSBpcyBub3QgaW4gdGhlIGJvcmRlciBkZWZpbml0aW9uLCB0aGUgZnVuY3Rpb24gd2lsbCByZXR1cm4gYSAwcHggd2lkdGgsIHNvbGlkIHN0eWxlLCBvciBibGFjayBib3JkZXIuXHJcbkBmdW5jdGlvbiBnZXQtYm9yZGVyLXZhbHVlKCR2YWwsICRlbGVtKSB7XHJcbiAgLy8gRmluZCB0aGUgd2lkdGgsIHN0eWxlLCBvciBjb2xvciBhbmQgcmV0dXJuIGl0XHJcbiAgQGVhY2ggJHYgaW4gJHZhbCB7XHJcbiAgICAkdHlwZTogdHlwZS1vZigkdik7XHJcbiAgICBAaWYgJGVsZW0gPT0gd2lkdGggYW5kICR0eXBlID09ICdudW1iZXInIHtcclxuICAgICAgQHJldHVybiAkdjtcclxuICAgIH1cclxuICAgIEBpZiAkZWxlbSA9PSBzdHlsZSBhbmQgJHR5cGUgPT0gJ3N0cmluZycge1xyXG4gICAgICBAcmV0dXJuICR2O1xyXG4gICAgfVxyXG4gICAgQGlmICRlbGVtID09IGNvbG9yIGFuZCAkdHlwZSA9PSAnY29sb3InIHtcclxuICAgICAgQHJldHVybiAkdjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIERlZmF1bHRzXHJcbiAgJGRlZmF1bHRzOiAoXHJcbiAgICB3aWR0aDogMCxcclxuICAgIHN0eWxlOiBzb2xpZCxcclxuICAgIGNvbG9yOiAjMDAwLFxyXG4gICk7XHJcblxyXG4gIEByZXR1cm4gbWFwLWdldCgkZGVmYXVsdHMsICRlbGVtKTtcclxufVxyXG5cclxuLy8vIEZpbmRzIGEgdmFsdWUgaW4gYSBuZXN0ZWQgbWFwLlxyXG4vLy8gQGxpbmsgaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9zbmlwcGV0cy9zYXNzL2RlZXAtZ2V0c2V0LW1hcHMvIERlZXAgR2V0L1NldCBpbiBNYXBzXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtNYXB9ICRtYXAgLSBNYXAgdG8gcHVsbCBhIHZhbHVlIGZyb20uXHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGtleXMuLi4gLSBLZXlzIHRvIHVzZSB3aGVuIGxvb2tpbmcgZm9yIGEgdmFsdWUuXHJcbi8vLyBAcmV0dXJucyB7TWl4ZWR9IFRoZSB2YWx1ZSBmb3VuZCBpbiB0aGUgbWFwLlxyXG5AZnVuY3Rpb24gbWFwLWRlZXAtZ2V0KCRtYXAsICRrZXlzLi4uKSB7XHJcbiAgQGVhY2ggJGtleSBpbiAka2V5cyB7XHJcbiAgICAkbWFwOiBtYXAtZ2V0KCRtYXAsICRrZXkpO1xyXG4gIH1cclxuICBAcmV0dXJuICRtYXA7XHJcbn1cclxuXHJcbi8vLyBDYXN0cyBhIG1hcCBpbnRvIGEgbGlzdC5cclxuLy8vIEBsaW5rIGh0dHA6Ly9odWdvZ2lyYXVkZWwuY29tLzIwMTQvMDQvMjgvY2FzdGluZy1tYXAtaW50by1saXN0L1xyXG4vLy9cclxuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIHB1bGwgYSB2YWx1ZSBmcm9tLlxyXG4vLy9cclxuLy8vIEByZXR1cm5zIHtMaXN0fSBEZXBlbmRpbmcgb24gdGhlIGZsYWcsIHJldHVybnMgZWl0aGVyICRrZXlzIG9yICR2YWx1ZXMgb3IgYm90aC5cclxuQGZ1bmN0aW9uIG1hcC10by1saXN0KCRtYXAsICRrZWVwOiAnYm90aCcpIHtcclxuICAka2VlcDogaWYoaW5kZXgoJ2tleXMnICd2YWx1ZXMnLCAka2VlcCksICRrZWVwLCAnYm90aCcpO1xyXG5cclxuICBAaWYgdHlwZS1vZigkbWFwKSA9PSAnbWFwJyB7XHJcbiAgICAka2V5czogKCk7XHJcbiAgICAkdmFsdWVzOiAoKTtcclxuXHJcbiAgICBAZWFjaCAka2V5LCAkdmFsIGluICRtYXAge1xyXG4gICAgICAka2V5czogYXBwZW5kKCRrZXlzLCAka2V5KTtcclxuICAgICAgJHZhbHVlczogYXBwZW5kKCR2YWx1ZXMsICR2YWwpO1xyXG4gICAgfVxyXG5cclxuICAgIEBpZiAka2VlcCA9PSAna2V5cycge1xyXG4gICAgICBAcmV0dXJuICRrZXlzO1xyXG4gICAgfVxyXG4gICAgQGVsc2UgaWYgJGtlZXAgPT0gJ3ZhbHVlcycge1xyXG4gICAgICBAcmV0dXJuICR2YWx1ZXM7XHJcbiAgICB9XHJcbiAgICBAZWxzZSB7XHJcbiAgICAgIEByZXR1cm4gemlwKCRrZXlzLCAkdmFsdWVzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEByZXR1cm4gaWYodHlwZS1vZigkbWFwKSAhPSAnbGlzdCcsICgkdmFsdWUsKSwgJG1hcCk7XHJcblxyXG59XHJcblxyXG4vLy8gU2FmZWx5IHJldHVybiBhIHZhbHVlIGZyb20gYSBtYXAuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtNYXB9ICRtYXAgLSBNYXAgdG8gcmV0cmlldmUgYSB2YWx1ZSBmcm9tLlxyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRrZXkgLSBOYW1lIG9mIHRoZSBtYXAga2V5LlxyXG4vLy9cclxuLy8vIEByZXR1cm5zIHtMaXN0fSBGb3VuZCB2YWx1ZS5cclxuQGZ1bmN0aW9uIG1hcC1zYWZlLWdldCgkbWFwLCAka2V5KSB7XHJcbiAgQGlmICh0eXBlLW9mKCRtYXApID09ICdtYXAnIG9yICh0eXBlLW9mKCRtYXApID09ICdsaXN0JyBhbmQgbGVuZ3RoKCRtYXApID09IDApKSB7XHJcbiAgICBAaWYgKG1hcC1oYXMta2V5KCRtYXAsICRrZXkpKSB7XHJcbiAgICAgIEByZXR1cm4gbWFwLWdldCgkbWFwLCAka2V5KTtcclxuICAgIH1cclxuICAgIEBlbHNlIHtcclxuICAgICAgQGVycm9yICdLZXk6IGAjeyRrZXl9YCBpcyBub3QgYXZhaWxhYmxlIGluIGAjeyRtYXB9YCc7XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBlbHNlIHtcclxuICAgIEBlcnJvciAnYCN7JG1hcH1gIGlzIG5vdCBhIHZhbGlkIG1hcCc7XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBmdW5jdGlvbnNcclxuLy8vL1xyXG5cclxuLy8vIFJldHVybnMgdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiBvZiAkZGlyXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZGlyIC0gVXNlZCBkaXJlY3Rpb24gYmV0d2VlbiBcInRvcFwiLCBcInJpZ2h0XCIsIFwiYm90dG9tXCIgYW5kIFwibGVmdFwiLlxyXG4vLy8gQHJldHVybiB7S2V5d29yZH0gT3Bwb3NpdGUgZGlyZWN0aW9uIG9mICRkaXJcclxuQGZ1bmN0aW9uIGRpcmVjdGlvbi1vcHBvc2l0ZShcclxuICAkZGlyXHJcbikge1xyXG4gICRkaXJzOiAodG9wLCByaWdodCwgYm90dG9tLCBsZWZ0KTtcclxuICAkcGxhY2U6IGluZGV4KCRkaXJzLCAkZGlyKTtcclxuXHJcbiAgQGlmICRwbGFjZSA9PSBudWxsIHtcclxuICAgIEBlcnJvciAnZGlyZWN0aW9uLW9wcG9zaXRlOiBJbnZhbGlkICRkaXIgcGFyYW1ldGVyLCBleHBlY3RlZCBhIHZhbHVlIGZyb20gXCIjeyRkaXJzfVwiLCBmb3VuZCBcIiN7JGRpcn1cIi4nO1xyXG4gICAgQHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8gQ2FsY3VsIHRoZSBvcHBvc2l0ZSBwbGFjZSBpbiBhIGNpcmNsZSwgd2l0aCBhIHN0YXJ0aW5nIGluZGV4IG9mIDFcclxuICAkbGVuZ3RoOiBsZW5ndGgoJGRpcnMpO1xyXG4gICRkZW1pOiAkbGVuZ3RoIC8gMjtcclxuICAkb3Bwb3NpdGUtcGxhY2U6ICgoJHBsYWNlICsgJGRlbWkgLSAxKSAlICRsZW5ndGgpICsgMTtcclxuXHJcbiAgQHJldHVybiBudGgoJGRpcnMsICRvcHBvc2l0ZS1wbGFjZSk7XHJcbn1cclxuXHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbkBpbXBvcnQgJ21hdGgnO1xyXG5cclxuJGNvbnRyYXN0LXdhcm5pbmdzOiB0cnVlICFkZWZhdWx0O1xyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIGZ1bmN0aW9uc1xyXG4vLy8vXHJcblxyXG4vLy8gQ2hlY2tzIHRoZSBsdW1pbmFuY2Ugb2YgYCRjb2xvcmAuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIC0gQ29sb3IgdG8gY2hlY2sgdGhlIGx1bWluYW5jZSBvZi5cclxuLy8vXHJcbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBUaGUgbHVtaW5hbmNlIG9mIGAkY29sb3JgLlxyXG5AZnVuY3Rpb24gY29sb3ItbHVtaW5hbmNlKCRjb2xvcikge1xyXG4gIC8vIEFkYXB0ZWQgZnJvbTogaHR0cHM6Ly9naXRodWIuY29tL0xlYVZlcm91L2NvbnRyYXN0LXJhdGlvL2Jsb2IvZ2gtcGFnZXMvY29sb3IuanNcclxuICAvLyBGb3JtdWxhOiBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA4L1JFQy1XQ0FHMjAtMjAwODEyMTEvI3JlbGF0aXZlbHVtaW5hbmNlZGVmXHJcbiAgJHJnYmE6IHJlZCgkY29sb3IpLCBncmVlbigkY29sb3IpLCBibHVlKCRjb2xvcik7XHJcbiAgJHJnYmEyOiAoKTtcclxuXHJcbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAzIHtcclxuICAgICRyZ2I6IG50aCgkcmdiYSwgJGkpO1xyXG4gICAgJHJnYjogJHJnYiAvIDI1NTtcclxuXHJcbiAgICAkcmdiOiBpZigkcmdiIDwgMC4wMzkyOCwgJHJnYiAvIDEyLjkyLCBwb3coKCRyZ2IgKyAwLjA1NSkgLyAxLjA1NSwgMi40KSk7XHJcblxyXG4gICAgJHJnYmEyOiBhcHBlbmQoJHJnYmEyLCAkcmdiKTtcclxuICB9XHJcblxyXG4gIEByZXR1cm4gMC4yMTI2ICogbnRoKCRyZ2JhMiwgMSkgKyAwLjcxNTIgKiBudGgoJHJnYmEyLCAyKSArIDAuMDcyMiAqIG50aCgkcmdiYTIsIDMpO1xyXG59XHJcblxyXG4vLy8gQ2hlY2tzIHRoZSBjb250cmFzdCByYXRpbyBvZiB0d28gY29sb3JzLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvcjEgLSBGaXJzdCBjb2xvciB0byBjb21wYXJlLlxyXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yMiAtIFNlY29uZCBjb2xvciB0byBjb21wYXJlLlxyXG4vLy9cclxuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBjb250cmFzdCByYXRpbyBvZiB0aGUgY29tcGFyZWQgY29sb3JzLlxyXG5AZnVuY3Rpb24gY29sb3ItY29udHJhc3QoJGNvbG9yMSwgJGNvbG9yMikge1xyXG4gIC8vIEFkYXB0ZWQgZnJvbTogaHR0cHM6Ly9naXRodWIuY29tL0xlYVZlcm91L2NvbnRyYXN0LXJhdGlvL2Jsb2IvZ2gtcGFnZXMvY29sb3IuanNcclxuICAvLyBGb3JtdWxhOiBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA4L1JFQy1XQ0FHMjAtMjAwODEyMTEvI2NvbnRyYXN0LXJhdGlvZGVmXHJcbiAgJGx1bWluYW5jZTE6IGNvbG9yLWx1bWluYW5jZSgkY29sb3IxKSArIDAuMDU7XHJcbiAgJGx1bWluYW5jZTI6IGNvbG9yLWx1bWluYW5jZSgkY29sb3IyKSArIDAuMDU7XHJcbiAgJHJhdGlvOiAkbHVtaW5hbmNlMSAvICRsdW1pbmFuY2UyO1xyXG5cclxuICBAaWYgJGx1bWluYW5jZTIgPiAkbHVtaW5hbmNlMSB7XHJcbiAgICAkcmF0aW86IDEgLyAkcmF0aW87XHJcbiAgfVxyXG5cclxuICAkcmF0aW86IHJvdW5kKCRyYXRpbyAqIDEwKSAvIDEwO1xyXG5cclxuICBAcmV0dXJuICRyYXRpbztcclxufVxyXG5cclxuLy8vIENoZWNrcyB0aGUgbHVtaW5hbmNlIG9mIGAkYmFzZWAsIGFuZCByZXR1cm5zIHRoZSBjb2xvciBmcm9tIGAkY29sb3JzYCAobGlzdCBvZiBjb2xvcnMpIHRoYXQgaGFzIHRoZSBtb3N0IGNvbnRyYXN0LlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7Q29sb3J9ICRiYXNlIC0gQ29sb3IgdG8gY2hlY2sgbHVtaW5hbmNlLlxyXG4vLy8gQHBhcmFtIHtMaXN0fSAkY29sb3JzIFsoJHdoaXRlLCAkYmxhY2spXSAtIENvbG9ycyB0byBjb21wYXJlLlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR0b2xlcmFuY2UgWyRnbG9iYWwtY29sb3ItcGljay1jb250cmFzdC10b2xlcmFuY2VdIC0gQ29udHJhc3QgdG9sZXJhbmNlLlxyXG4vLy9cclxuLy8vIEByZXR1cm5zIHtDb2xvcn0gdGhlIGNvbG9yIGZyb20gYCRjb2xvcnNgIChsaXN0IG9mIGNvbG9ycykgdGhhdCBoYXMgdGhlIG1vc3QgY29udHJhc3QuXHJcbkBmdW5jdGlvbiBjb2xvci1waWNrLWNvbnRyYXN0KCRiYXNlLCAkY29sb3JzOiAoJHdoaXRlLCAkYmxhY2spLCAkdG9sZXJhbmNlOiAkZ2xvYmFsLWNvbG9yLXBpY2stY29udHJhc3QtdG9sZXJhbmNlKSB7XHJcbiAgJGNvbnRyYXN0OiBjb2xvci1jb250cmFzdCgkYmFzZSwgbnRoKCRjb2xvcnMsIDEpKTtcclxuICAkYmVzdDogbnRoKCRjb2xvcnMsIDEpO1xyXG5cclxuICBAZm9yICRpIGZyb20gMiB0aHJvdWdoIGxlbmd0aCgkY29sb3JzKSB7XHJcbiAgICAkY3VycmVudC1jb250cmFzdDogY29sb3ItY29udHJhc3QoJGJhc2UsIG50aCgkY29sb3JzLCAkaSkpO1xyXG4gICAgQGlmICgkY3VycmVudC1jb250cmFzdCAtICRjb250cmFzdCA+ICR0b2xlcmFuY2UpIHtcclxuICAgICAgJGNvbnRyYXN0OiBjb2xvci1jb250cmFzdCgkYmFzZSwgbnRoKCRjb2xvcnMsICRpKSk7XHJcbiAgICAgICRiZXN0OiBudGgoJGNvbG9ycywgJGkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGlmICgkY29udHJhc3Qtd2FybmluZ3MgYW5kICRjb250cmFzdCA8IDMpIHtcclxuICAgIEB3YXJuIFwiQ29udHJhc3QgcmF0aW8gb2YgI3skYmVzdH0gb24gI3skYmFzZX0gaXMgcHJldHR5IGJhZCwganVzdCAjeyRjb250cmFzdH1cIjtcclxuICB9XHJcblxyXG4gIEByZXR1cm4gJGJlc3Q7XHJcbn1cclxuXHJcbi8vLyBTY2FsZXMgYSBjb2xvciB0byBiZSBkYXJrZXIgaWYgaXQncyBsaWdodCwgb3IgbGlnaHRlciBpZiBpdCdzIGRhcmsuIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIHRpbnQgYSBjb2xvciBhcHByb3ByaWF0ZSB0byBpdHMgbGlnaHRuZXNzLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIENvbG9yIHRvIHNjYWxlLlxyXG4vLy8gQHBhcmFtIHtQZXJjZW50YWdlfSAkc2NhbGUgWzUlXSAtIEFtb3VudCB0byBzY2FsZSB1cCBvciBkb3duLlxyXG4vLy8gQHBhcmFtIHtQZXJjZW50YWdlfSAkdGhyZXNob2xkIFs0MCVdIC0gVGhyZXNob2xkIG9mIGxpZ2h0bmVzcyB0byBjaGVjayBhZ2FpbnN0LlxyXG4vLy9cclxuLy8vIEByZXR1cm5zIHtDb2xvcn0gQSBzY2FsZWQgY29sb3IuXHJcbkBmdW5jdGlvbiBzbWFydC1zY2FsZSgkY29sb3IsICRzY2FsZTogNSUsICR0aHJlc2hvbGQ6IDQwJSkge1xyXG4gIEBpZiBsaWdodG5lc3MoJGNvbG9yKSA+ICR0aHJlc2hvbGQge1xyXG4gICAgJHNjYWxlOiAtJHNjYWxlO1xyXG4gIH1cclxuICBAcmV0dXJuIHNjYWxlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJHNjYWxlKTtcclxufVxyXG5cclxuLy8vIEdldCBjb2xvciBmcm9tIGZvdW5kYXRpb24tcGFsZXR0ZVxyXG4vLy9cclxuLy8vIEBwYXJhbSB7a2V5fSBjb2xvciBrZXkgZnJvbSBmb3VuZGF0aW9uLXBhbGV0dGVcclxuLy8vXHJcbi8vLyBAcmV0dXJucyB7Q29sb3J9IGNvbG9yIGZyb20gZm91bmRhdGlvbi1wYWxldHRlXHJcbkBmdW5jdGlvbiBnZXQtY29sb3IoJGtleSkge1xyXG4gIEBpZiBtYXAtaGFzLWtleSgkZm91bmRhdGlvbi1wYWxldHRlLCAka2V5KSB7XHJcbiAgICBAcmV0dXJuIG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgJGtleSk7XHJcbiAgfVxyXG4gIEBlbHNlIHtcclxuICAgIEBlcnJvciAnZ2l2ZW4gJGtleSBpcyBub3QgYXZhaWxhYmxlIGluICRmb3VuZGF0aW9uLXBhbGV0dGUnO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIFRyYW5zZmVycyB0aGUgY29sb3JzIGluIHRoZSBgJGZvdW5kYXRpb24tcGFsZXR0ZWBtYXAgaW50byB2YXJpYWJsZXMsIHN1Y2ggYXMgYCRwcmltYXJ5LWNvbG9yYCBhbmQgYCRzZWNvbmRhcnktY29sb3JgLiBDYWxsIHRoaXMgbWl4aW4gYmVsb3cgdGhlIEdsb2JhbCBzZWN0aW9uIG9mIHlvdXIgc2V0dGluZ3MgZmlsZSB0byBwcm9wZXJseSBtaWdyYXRlIHlvdXIgY29kZWJhc2UuXHJcbkBtaXhpbiBhZGQtZm91bmRhdGlvbi1jb2xvcnMoKSB7XHJcbiAgQGlmIG1hcC1oYXMta2V5KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHByaW1hcnkpIHtcclxuICAgICRwcmltYXJ5LWNvbG9yOiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHByaW1hcnkpICFnbG9iYWw7XHJcbiAgfVxyXG4gIEBpZiBtYXAtaGFzLWtleSgkZm91bmRhdGlvbi1wYWxldHRlLCBzZWNvbmRhcnkpIHtcclxuICAgICRzZWNvbmRhcnktY29sb3I6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgc2Vjb25kYXJ5KSAhZ2xvYmFsO1xyXG4gIH1cclxuICBAaWYgbWFwLWhhcy1rZXkoJGZvdW5kYXRpb24tcGFsZXR0ZSwgc3VjY2Vzcykge1xyXG4gICAgJHN1Y2Nlc3MtY29sb3I6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgc3VjY2VzcykgIWdsb2JhbDtcclxuICB9XHJcbiAgQGlmIG1hcC1oYXMta2V5KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHdhcm5pbmcpIHtcclxuICAgICR3YXJuaW5nLWNvbG9yOiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHdhcm5pbmcpICFnbG9iYWw7XHJcbiAgfVxyXG4gIEBpZiBtYXAtaGFzLWtleSgkZm91bmRhdGlvbi1wYWxldHRlLCBhbGVydCkge1xyXG4gICAgJGFsZXJ0LWNvbG9yOiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsIGFsZXJ0KSAhZ2xvYmFsO1xyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXHJcbi8vLy9cclxuXHJcbi8vLyBHZW5lcmF0ZXMgYSBzZWxlY3RvciB3aXRoIGV2ZXJ5IHRleHQgaW5wdXQgdHlwZS4gWW91IGNhbiBhbHNvIGZpbHRlciB0aGUgbGlzdCB0byBvbmx5IG91dHB1dCBhIHN1YnNldCBvZiB0aG9zZSBzZWxlY3RvcnMuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtMaXN0fEtleXdvcmR9ICR0eXBlcyBbKCldIC0gQSBsaXN0IG9mIHRleHQgaW5wdXQgdHlwZXMgdG8gdXNlLiBMZWF2ZSBibGFuayB0byB1c2UgYWxsIG9mIHRoZW0uXHJcbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRtb2RpZmllciBbJyddIC0gQSBtb2RpZmllciB0byBiZSBhcHBsaWVkIHRvIGVhY2ggdGV4dCBpbnB1dCB0eXBlIChlLmcuIGEgY2xhc3Mgb3IgYSBwc2V1ZG8tY2xhc3MpLiBMZWF2ZSBibGFuayB0byBpZ25vcmUuXHJcbkBmdW5jdGlvbiB0ZXh0LWlucHV0cygkdHlwZXM6ICgpLCAkbW9kaWZpZXI6ICcnKSB7XHJcbiAgJHJldHVybjogKCk7XHJcblxyXG4gICRhbGwtdHlwZXM6XHJcbiAgICB0ZXh0XHJcbiAgICBwYXNzd29yZFxyXG4gICAgZGF0ZVxyXG4gICAgZGF0ZXRpbWVcclxuICAgIGRhdGV0aW1lLWxvY2FsXHJcbiAgICBtb250aFxyXG4gICAgd2Vla1xyXG4gICAgZW1haWxcclxuICAgIG51bWJlclxyXG4gICAgc2VhcmNoXHJcbiAgICB0ZWxcclxuICAgIHRpbWVcclxuICAgIHVybFxyXG4gICAgY29sb3I7XHJcblxyXG4gIEBpZiBub3QgaGFzLXZhbHVlKCR0eXBlcykge1xyXG4gICAgJHR5cGVzOiAkYWxsLXR5cGVzO1xyXG4gIH1cclxuXHJcbiAgQGVhY2ggJHR5cGUgaW4gJHR5cGVzIHtcclxuICAgICRyZXR1cm46IGFwcGVuZCgkcmV0dXJuLCB1bnF1b3RlKCdbdHlwZT1cXCcjeyR0eXBlfVxcJ10jeyRtb2RpZmllcn0nKSwgY29tbWEpO1xyXG4gIH1cclxuXHJcbiAgQHJldHVybiAkcmV0dXJuO1xyXG59XHJcbiIsIiQtemYtZmxleC1qdXN0aWZ5OiAoXHJcbiAgJ2xlZnQnOiBmbGV4LXN0YXJ0LFxyXG4gICdyaWdodCc6IGZsZXgtZW5kLFxyXG4gICdjZW50ZXInOiBjZW50ZXIsXHJcbiAgJ2p1c3RpZnknOiBzcGFjZS1iZXR3ZWVuLFxyXG4gICdzcGFjZWQnOiBzcGFjZS1hcm91bmQsXHJcbik7XHJcblxyXG4kLXpmLWZsZXgtYWxpZ246IChcclxuICAndG9wJzogZmxleC1zdGFydCxcclxuICAnYm90dG9tJzogZmxleC1lbmQsXHJcbiAgJ21pZGRsZSc6IGNlbnRlcixcclxuICAnc3RyZXRjaCc6IHN0cmV0Y2gsXHJcbik7XHJcblxyXG4kLXpmLWZsZXgtZGlyZWN0aW9uOiAoXHJcbiAgJ3Jvdyc6IHJvdyxcclxuICAncm93LXJldmVyc2UnOiByb3ctcmV2ZXJzZSxcclxuICAnY29sdW1uJzogY29sdW1uLFxyXG4gICdjb2x1bW4tcmV2ZXJzZSc6IGNvbHVtbi1yZXZlcnNlLFxyXG4pO1xyXG5cclxuLy8vIEVuYWJsZXMgZmxleGJveCBieSBhZGRpbmcgYGRpc3BsYXk6IGZsZXhgIHRvIHRoZSBlbGVtZW50LlxyXG5AbWl4aW4gZmxleCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxufVxyXG5cclxuLy8vIEhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5IGFsaWducyB0aGUgaXRlbXMgd2l0aGluIGEgZmxleCBjb250YWluZXIuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkeCBbbnVsbF0gLSBIb3Jpem9udGFsIGFsaWdubWVudCB0byB1c2UuIENhbiBiZSBgbGVmdGAsIGByaWdodGAsIGBjZW50ZXJgLCBganVzdGlmeWAsIG9yIGBzcGFjZWRgLiBPciwgc2V0IGl0IHRvIGBudWxsYCAodGhlIGRlZmF1bHQpIHRvIG5vdCBzZXQgaG9yaXpvbnRhbCBhbGlnbm1lbnQuXHJcbi8vLyBAcGFyYW0ge0tleXdvcmR9ICR5IFtudWxsXSAtIFZlcnRpY2FsIGFsaWdubWVudCB0byB1c2UuIENhbiBiZSBgdG9wYCwgYGJvdHRvbWAsIGBtaWRkbGVgLCBvciBgc3RyZXRjaGAuIE9yLCBzZXQgaXQgdG8gYG51bGxgICh0aGUgZGVmYXVsdCkgdG8gbm90IHNldCB2ZXJ0aWNhbCBhbGlnbm1lbnQuXHJcbkBtaXhpbiBmbGV4LWFsaWduKCR4OiBudWxsLCAkeTogbnVsbCkge1xyXG4gIEBpZiAkeCB7XHJcbiAgICBAaWYgbWFwLWhhcy1rZXkoJC16Zi1mbGV4LWp1c3RpZnksICR4KSB7XHJcbiAgICAgICR4OiBtYXAtZ2V0KCQtemYtZmxleC1qdXN0aWZ5LCAkeCk7XHJcbiAgICB9XHJcbiAgICBAZWxzZSB7XHJcbiAgICAgIEB3YXJuICdmbGV4LWdyaWQtcm93LWFsaWduKCk6ICN7JHh9IGlzIG5vdCBhIHZhbGlkIHZhbHVlIGZvciBob3Jpem9udGFsIGFsaWdubWVudC4gVXNlIGxlZnQsIHJpZ2h0LCBjZW50ZXIsIGp1c3RpZnksIG9yIHNwYWNlZC4nO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGlmICR5IHtcclxuICAgIEBpZiBtYXAtaGFzLWtleSgkLXpmLWZsZXgtYWxpZ24sICR5KSB7XHJcbiAgICAgICR5OiBtYXAtZ2V0KCQtemYtZmxleC1hbGlnbiwgJHkpO1xyXG4gICAgfVxyXG4gICAgQGVsc2Uge1xyXG4gICAgICBAd2FybiAnZmxleC1ncmlkLXJvdy1hbGlnbigpOiAjeyR5fSBpcyBub3QgYSB2YWxpZCB2YWx1ZSBmb3IgdmVydGljYWwgYWxpZ25tZW50LiBVc2UgdG9wLCBib3R0b20sIG1pZGRsZSwgb3Igc3RyZXRjaC4nO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAganVzdGlmeS1jb250ZW50OiAkeDtcclxuICBhbGlnbi1pdGVtczogJHk7XHJcbn1cclxuXHJcbi8vLyBWZXJ0aWNhbGx5IGFsaWduIGEgc2luZ2xlIGNvbHVtbiB3aXRoaW4gYSBmbGV4IHJvdy4gQXBwbHkgdGhpcyBtaXhpbiB0byBhIGZsZXggY29sdW1uLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHkgW251bGxdIC0gVmVydGljYWwgYWxpZ25tZW50IHRvIHVzZS4gQ2FuIGJlIGB0b3BgLCBgYm90dG9tYCwgYG1pZGRsZWAsIG9yIGBzdHJldGNoYC4gT3IsIHNldCBpdCB0byBgbnVsbGAgKHRoZSBkZWZhdWx0KSB0byBub3Qgc2V0IHZlcnRpY2FsIGFsaWdubWVudC5cclxuQG1peGluIGZsZXgtYWxpZ24tc2VsZigkeTogbnVsbCkge1xyXG4gIEBpZiAkeSB7XHJcbiAgICBAaWYgbWFwLWhhcy1rZXkoJC16Zi1mbGV4LWFsaWduLCAkeSkge1xyXG4gICAgICAkeTogbWFwLWdldCgkLXpmLWZsZXgtYWxpZ24sICR5KTtcclxuICAgIH1cclxuICAgIEBlbHNlIHtcclxuICAgICAgQHdhcm4gJ2ZsZXgtZ3JpZC1jb2x1bW4tYWxpZ24oKTogI3skeX0gaXMgbm90IGEgdmFsaWQgdmFsdWUgZm9yIGFsaWdubWVudC4gVXNlIHRvcCwgYm90dG9tLCBtaWRkbGUsIG9yIHN0cmV0Y2guJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFsaWduLXNlbGY6ICR5O1xyXG59XHJcblxyXG4vLy8gQ2hhbmdlcyB0aGUgc291cmNlIG9yZGVyIG9mIGEgZmxleCBjaGlsZC4gQ2hpbGRyZW4gd2l0aCBsb3dlciBudW1iZXJzIGFwcGVhciBmaXJzdCBpbiB0aGUgbGF5b3V0LlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRvcmRlciBbMF0gLSBPcmRlciBudW1iZXIgdG8gYXBwbHkuXHJcbkBtaXhpbiBmbGV4LW9yZGVyKCRvcmRlcjogMCkge1xyXG4gIG9yZGVyOiAkb3JkZXI7XHJcbn1cclxuXHJcbi8vLyBDaGFuZ2UgZmxleC1kaXJlY3Rpb25cclxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGRpcmVjdGlvbiBbcm93XSAtIEZsZXggZGlyZWN0aW9uIHRvIHVzZS4gQ2FuIGJlXHJcbi8vLyAgIC0gcm93IChkZWZhdWx0KTogc2FtZSBhcyB0ZXh0IGRpcmVjdGlvblxyXG4vLy8gICAtIHJvdy1yZXZlcnNlOiBvcHBvc2l0ZSB0byB0ZXh0IGRpcmVjdGlvblxyXG4vLy8gICAtIGNvbHVtbjogc2FtZSBhcyByb3cgYnV0IHRvcCB0byBib3R0b21cclxuLy8vICAgLSBjb2x1bW4tcmV2ZXJzZTogc2FtZSBhcyByb3ctcmV2ZXJzZSB0b3AgdG8gYm90dG9tXHJcbkBtaXhpbiBmbGV4LWRpcmVjdGlvbigkZGlyZWN0aW9uOiByb3cpIHtcclxuICBmbGV4LWRpcmVjdGlvbjogJGRpcmVjdGlvbjtcclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgYnJlYWtwb2ludHNcclxuLy8vL1xyXG5cclxuLy8vIEEgbGlzdCBvZiBuYW1lZCBicmVha3BvaW50cy4gWW91IGNhbiB1c2UgdGhlc2Ugd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdG8gcXVpY2tseSBjcmVhdGUgbWVkaWEgcXVlcmllcy5cclxuLy8vIEB0eXBlIE1hcFxyXG4kYnJlYWtwb2ludHM6IChcclxuICBzbWFsbDogMCxcclxuICBtZWRpdW06IDY0MHB4LFxyXG4gIGxhcmdlOiAxMDI0cHgsXHJcbiAgeGxhcmdlOiAxMjAwcHgsXHJcbiAgeHhsYXJnZTogMTQ0MHB4LFxyXG4pICFkZWZhdWx0O1xyXG5cclxuLy8vIFRoZSBsYXJnZXN0IG5hbWVkIGJyZWFrcG9pbnQgaW4gd2hpY2ggdG8gaW5jbHVkZSBwcmludCBhcyBhIG1lZGlhIHR5cGVcclxuLy8vIEB0eXBlIEtleXdvcmRcclxuJHByaW50LWJyZWFrcG9pbnQ6IGxhcmdlICFkZWZhdWx0O1xyXG5cclxuJC16Zi16ZXJvLWJyZWFrcG9pbnQ6IHNtYWxsICFkZWZhdWx0O1xyXG5cclxuJC16Zi1icmVha3BvaW50cy1rZXlzOiBtYXAtdG8tbGlzdCgkYnJlYWtwb2ludHMsICdrZXlzJyk7XHJcblxyXG5AaWYgbnRoKG1hcC12YWx1ZXMoJGJyZWFrcG9pbnRzKSwgMSkgIT0gMCB7XHJcbiAgQGVycm9yICdZb3VyIHNtYWxsZXN0IGJyZWFrcG9pbnQgKGRlZmluZWQgaW4gJGJyZWFrcG9pbnRzKSBtdXN0IGJlIHNldCB0byBcIjBcIi4nO1xyXG59XHJcbkBlbHNlIHtcclxuICAkLXpmLXplcm8tYnJlYWtwb2ludDogbnRoKG1hcC1rZXlzKCRicmVha3BvaW50cyksIDEpO1xyXG59XHJcblxyXG4vLy8gQWxsIG9mIHRoZSBuYW1lcyBpbiB0aGlzIGxpc3Qgd2lsbCBiZSBvdXRwdXQgYXMgY2xhc3NlcyBpbiB5b3VyIENTUywgbGlrZSBgLnNtYWxsLTEyYCwgYC5tZWRpdW0tNmAsIGFuZCBzbyBvbi4gRWFjaCB2YWx1ZSBpbiB0aGlzIGxpc3QgbXVzdCBhbHNvIGJlIGluIHRoZSBgJGJyZWFrcG9pbnRzYCBtYXAuXHJcbi8vLyBAdHlwZSBMaXN0XHJcbiRicmVha3BvaW50LWNsYXNzZXM6IChzbWFsbCBtZWRpdW0gbGFyZ2UpICFkZWZhdWx0O1xyXG5cclxuLy8vIEdlbmVyYXRlcyBhIG1lZGlhIHF1ZXJ5IHN0cmluZyBtYXRjaGluZyB0aGUgaW5wdXQgdmFsdWUuIFJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdG8gc2VlIHdoYXQgdGhlIHBvc3NpYmxlIGlucHV0cyBhcmUuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHZhbCBbc21hbGxdIC0gQnJlYWtwb2ludCBuYW1lLCBvciBweCwgcmVtLCBvciBlbSB2YWx1ZSB0byBwcm9jZXNzLlxyXG5AZnVuY3Rpb24gYnJlYWtwb2ludCgkdmFsOiAkLXpmLXplcm8tYnJlYWtwb2ludCkge1xyXG4gIC8vIFNpemUgb3Iga2V5d29yZFxyXG4gICRicDogbnRoKCR2YWwsIDEpO1xyXG4gIC8vIFZhbHVlIGZvciBtYXgtd2lkdGggbWVkaWEgcXVlcmllc1xyXG4gICRicC1tYXg6IDA7XHJcbiAgLy8gRGlyZWN0aW9uIG9mIG1lZGlhIHF1ZXJ5ICh1cCwgZG93biwgb3Igb25seSlcclxuICAkZGlyOiBpZihsZW5ndGgoJHZhbCkgPiAxLCBudGgoJHZhbCwgMiksIHVwKTtcclxuICAvLyBFdmVudHVhbCBvdXRwdXRcclxuICAkc3RyOiAnJztcclxuICAvLyBJcyBpdCBhIG5hbWVkIG1lZGlhIHF1ZXJ5P1xyXG4gICRuYW1lZDogZmFsc2U7XHJcblxyXG4gIC8vIE9yaWVudGF0aW9uIG1lZGlhIHF1ZXJpZXMgaGF2ZSBhIHVuaXF1ZSBzeW50YXhcclxuICBAaWYgJGJwID09ICdsYW5kc2NhcGUnIG9yICRicCA9PSAncG9ydHJhaXQnIHtcclxuICAgIEByZXR1cm4gJyhvcmllbnRhdGlvbjogI3skYnB9KSc7XHJcbiAgfVxyXG4gIEBlbHNlIGlmICRicCA9PSAncmV0aW5hJyB7XHJcbiAgICBAcmV0dXJuICcoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwgKG1pbi1yZXNvbHV0aW9uOiAxOTJkcGkpJztcclxuICB9XHJcblxyXG4gIC8vIFRyeSB0byBwdWxsIGEgbmFtZWQgYnJlYWtwb2ludCBvdXQgb2YgdGhlICRicmVha3BvaW50cyBtYXBcclxuICBAaWYgdHlwZS1vZigkYnApID09ICdzdHJpbmcnIHtcclxuICAgIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRicCkge1xyXG4gICAgICBAaWYgJGRpciA9PSAnb25seScgb3IgJGRpciA9PSAnZG93bicge1xyXG4gICAgICAgICRicC1tYXg6IC16Zi1tYXAtbmV4dCgkYnJlYWtwb2ludHMsICRicCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICRicDogbWFwLWdldCgkYnJlYWtwb2ludHMsICRicCk7XHJcbiAgICAgICRuYW1lZDogdHJ1ZTtcclxuICAgIH1cclxuICAgIEBlbHNlIHtcclxuICAgICAgJGJwOiAwO1xyXG4gICAgICBAd2FybiAnYnJlYWtwb2ludCgpOiBcIiN7JHZhbH1cIiBpcyBub3QgZGVmaW5lZCBpbiB5b3VyICRicmVha3BvaW50cyBzZXR0aW5nLic7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBDb252ZXJ0IGFueSBwaXhlbCwgcmVtLCBvciB1bml0bGVzcyB2YWx1ZSB0byBlbVxyXG4gICRicDogLXpmLWJwLXRvLWVtKCRicCk7XHJcbiAgQGlmICRicC1tYXgge1xyXG4gICAgJGJwLW1heDogLXpmLWJwLXRvLWVtKCRicC1tYXgpIC0gKDEvMTYpO1xyXG4gIH1cclxuXHJcbiAgLy8gQ29uZGl0aW9ucyB0byBza2lwIG1lZGlhIHF1ZXJ5IGNyZWF0aW9uXHJcbiAgLy8gLSBJdCdzIGEgbmFtZWQgYnJlYWtwb2ludCB0aGF0IHJlc29sdmVkIHRvIFwiMCBkb3duXCIgb3IgXCIwIHVwXCJcclxuICAvLyAtIEl0J3MgYSBudW1lcmljIGJyZWFrcG9pbnQgdGhhdCByZXNvbHZlZCB0byBcIjAgXCIgKyBhbnl0aGluZ1xyXG4gIEBpZiAkYnAgPiAwZW0gb3IgJGRpciA9PSAnb25seScgb3IgJGRpciA9PSAnZG93bicge1xyXG4gICAgLy8gYG9ubHlgIHJhbmdlcyB1c2UgdGhlIGZvcm1hdCBgKG1pbi13aWR0aDogbikgYW5kIChtYXgtd2lkdGg6IG4pYFxyXG4gICAgQGlmICRkaXIgPT0gJ29ubHknIHtcclxuICAgICAgLy8gT25seSBuYW1lZCBtZWRpYSBxdWVyaWVzIGNhbiBoYXZlIGFuIFwib25seVwiIHJhbmdlXHJcbiAgICAgIEBpZiAkbmFtZWQgPT0gdHJ1ZSB7XHJcbiAgICAgICAgLy8gT25seSB1c2UgXCJtaW4td2lkdGhcIiBpZiB0aGUgZmxvb3IgaXMgZ3JlYXRlciB0aGFuIDBcclxuICAgICAgICBAaWYgJGJwID4gMGVtIHtcclxuICAgICAgICAgICRzdHI6ICRzdHIgKyAnKG1pbi13aWR0aDogI3skYnB9KSc7XHJcblxyXG4gICAgICAgICAgLy8gT25seSBhZGQgXCJhbmRcIiB0byB0aGUgbWVkaWEgcXVlcnkgaWYgdGhlcmUncyBhIGNlaWxpbmdcclxuICAgICAgICAgIEBpZiAkYnAtbWF4ICE9IG51bGwge1xyXG4gICAgICAgICAgICAkc3RyOiAkc3RyICsgJyBhbmQgJztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIE9ubHkgdXNlIFwibWF4LXdpZHRoXCIgaWYgdGhlcmUncyBhIGNlaWxpbmdcclxuICAgICAgICBAaWYgJGJwLW1heCAhPSBudWxsIHtcclxuICAgICAgICAgICRzdHI6ICRzdHIgKyAnKG1heC13aWR0aDogI3skYnAtbWF4fSknO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBAZWxzZSB7XHJcbiAgICAgICAgQHdhcm4gJ2JyZWFrcG9pbnQoKTogT25seSBuYW1lZCBtZWRpYSBxdWVyaWVzIGNhbiBoYXZlIGFuIGBvbmx5YCByYW5nZS4nO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gYGRvd25gIHJhbmdlcyB1c2UgdGhlIGZvcm1hdCBgKG1heC13aWR0aDogbilgXHJcbiAgICBAZWxzZSBpZiAkZGlyID09ICdkb3duJyB7XHJcbiAgICAgICRtYXg6IGlmKCRuYW1lZCwgJGJwLW1heCwgJGJwKTtcclxuXHJcbiAgICAgIC8vIFNraXAgbWVkaWEgcXVlcnkgY3JlYXRpb24gaWYgaW5wdXQgdmFsdWUgaXMgZXhhY3RseSBcIjAgZG93blwiLFxyXG4gICAgICAvLyB1bmxlc3MgdGhlIGZ1bmN0aW9uIHdhcyBjYWxsZWQgYXMgXCJzbWFsbCBkb3duXCIsIGluIHdoaWNoIGNhc2UgaXQncyBqdXN0IFwic21hbGwgb25seVwiXHJcbiAgICAgIEBpZiAkbmFtZWQgb3IgJGJwID4gMGVtIHtcclxuICAgICAgICBAaWYgJG1heCAhPSBudWxsIHtcclxuICAgICAgICAgICRzdHI6ICRzdHIgKyAnKG1heC13aWR0aDogI3skbWF4fSknO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIGB1cGAgcmFuZ2VzIHVzZSB0aGUgZm9ybWF0IGAobWluLXdpZHRoOiBuKWBcclxuICAgIEBlbHNlIGlmICRicCA+IDBlbSB7XHJcbiAgICAgICRzdHI6ICRzdHIgKyAnKG1pbi13aWR0aDogI3skYnB9KSc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAcmV0dXJuICRzdHI7XHJcbn1cclxuXHJcbi8vLyBXcmFwcyBhIG1lZGlhIHF1ZXJ5IGFyb3VuZCB0aGUgY29udGVudCB5b3UgcHV0IGluc2lkZSB0aGUgbWl4aW4uIFRoaXMgbWl4aW4gYWNjZXB0cyBhIG51bWJlciBvZiB2YWx1ZXM6XHJcbi8vLyAgLSBJZiBhIHN0cmluZyBpcyBwYXNzZWQsIHRoZSBtaXhpbiB3aWxsIGxvb2sgZm9yIGl0IGluIHRoZSBgJGJyZWFrcG9pbnRzYCBtYXAsIGFuZCB1c2UgYSBtZWRpYSBxdWVyeSB0aGVyZS5cclxuLy8vICAtIElmIGEgcGl4ZWwgdmFsdWUgaXMgcGFzc2VkLCBpdCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhbiBlbSB2YWx1ZSB1c2luZyBgJGdsb2JhbC1mb250LXNpemVgIGFzIHRoZSBiYXNlLlxyXG4vLy8gIC0gSWYgYSByZW0gdmFsdWUgaXMgcGFzc2VkLCB0aGUgdW5pdCB3aWxsIGJlIGNoYW5nZWQgdG8gZW0uXHJcbi8vLyAgLSBJZiBhbiBlbSB2YWx1ZSBpcyBwYXNzZWQsIHRoZSB2YWx1ZSB3aWxsIGJlIHVzZWQgYXMtaXMuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHZhbHVlIC0gQnJlYWtwb2ludCBuYW1lLCBvciBweCwgcmVtLCBvciBlbSB2YWx1ZSB0byBwcm9jZXNzLlxyXG4vLy9cclxuLy8vIEBvdXRwdXQgSWYgdGhlIGJyZWFrcG9pbnQgaXMgXCIwcHggYW5kIGxhcmdlclwiLCBvdXRwdXRzIHRoZSBjb250ZW50IGFzLWlzLiBPdGhlcndpc2UsIG91dHB1dHMgdGhlIGNvbnRlbnQgd3JhcHBlZCBpbiBhIG1lZGlhIHF1ZXJ5LlxyXG5AbWl4aW4gYnJlYWtwb2ludCgkdmFsdWUpIHtcclxuICAkc3RyOiBicmVha3BvaW50KCR2YWx1ZSk7XHJcbiAgJGJwOiBpbmRleCgkLXpmLWJyZWFrcG9pbnRzLWtleXMsICR2YWx1ZSk7XHJcbiAgJHBicDogaW5kZXgoJC16Zi1icmVha3BvaW50cy1rZXlzLCAkcHJpbnQtYnJlYWtwb2ludCk7XHJcblxyXG4gICRvbGQtemYtc2l6ZTogbnVsbDtcclxuXHJcbiAgLy8gTWFrZSBicmVha3BvaW50IHNpemUgYXZhaWxhYmxlIGFzIGEgdmFyaWFibGVcclxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygtemYtc2l6ZSkge1xyXG4gICAgJG9sZC16Zi1zaXplOiAkLXpmLXNpemU7XHJcbiAgfVxyXG4gICQtemYtc2l6ZTogbnRoKCR2YWx1ZSwgMSkgIWdsb2JhbDsgLy8gZ2V0IHRoZSBmaXJzdCB2YWx1ZSB0byBhY2NvdW50IGZvciBgb25seWAgYW5kIGBkb3duYCBrZXl3b3Jkc1xyXG5cclxuICAvLyBJZiAkc3RyIGlzIHN0aWxsIGFuIGVtcHR5IHN0cmluZywgbm8gbWVkaWEgcXVlcnkgaXMgbmVlZGVkXHJcbiAgQGlmICRzdHIgPT0gJycge1xyXG4gICAgQGNvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICAvLyBPdGhlcndpc2UsIHdyYXAgdGhlIGNvbnRlbnQgaW4gYSBtZWRpYSBxdWVyeVxyXG4gIEBlbHNlIHtcclxuICAgIC8vIEZvciBuYW1lZCBicmVha3BvaW50cyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJHByaW50LWJyZWFrcG9pbnQsIGFkZCBwcmludCB0byB0aGUgbWVkaWEgdHlwZXNcclxuICAgIEBpZiAkYnAgIT0gbnVsbCBhbmQgJGJwIDw9ICRwYnAge1xyXG4gICAgICBAbWVkaWEgcHJpbnQsIHNjcmVlbiBhbmQgI3skc3RyfSB7XHJcbiAgICAgICAgQGNvbnRlbnQ7XHJcbiAgICAgICB9XHJcbiAgICB9XHJcbiAgICBAZWxzZSB7XHJcbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kICN7JHN0cn0ge1xyXG4gICAgICAgIEBjb250ZW50O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaWYgJG9sZC16Zi1zaXplICE9IG51bGwge1xyXG4gICAgLy8gUmVzdG9yZSB0aGUgb2xkIGJyZWFrcG9pbnQgc2l6ZVxyXG4gICAgJC16Zi1zaXplOiAkb2xkLXpmLXNpemUgIWdsb2JhbDtcclxuICB9IEBlbHNlIHtcclxuICAgICQtemYtc2l6ZTogbnVsbCAhZ2xvYmFsO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIENvbnZlcnMgdGhlIGJyZWFrcG9pbnRzIG1hcCB0byBhIFVSTC1lbmNvZGVkIHN0cmluZywgbGlrZSB0aGlzOiBga2V5MT12YWx1ZTEma2V5Mj12YWx1ZTJgLiBUaGUgdmFsdWUgaXMgdGhlbiBkcm9wcGVkIGludG8gdGhlIENTUyBmb3IgYSBzcGVjaWFsIGA8bWV0YT5gIHRhZywgd2hpY2ggaXMgcmVhZCBieSB0aGUgRm91bmRhdGlvbiBKYXZhU2NyaXB0LiBUaGlzIGlzIGhvdyB3ZSB0cmFuc2ZlciB2YWx1ZXMgZnJvbSBTYXNzIHRvIEphdmFTY3JpcHQsIHNvIHRoZXkgY2FuIGJlIGRlZmluZWQgaW4gb25lIHBsYWNlLlxyXG4vLy8gQGFjY2VzcyBwcml2YXRlXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtNYXB9ICRtYXAgLSBNYXAgdG8gY29udmVydC5cclxuLy8vXHJcbi8vLyBAcmV0dXJucyB7U3RyaW5nfSBBIHN0cmluZyBjb250YWluaW5nIHRoZSBtYXAncyBjb250ZW50cy5cclxuQGZ1bmN0aW9uIC16Zi1icC1zZXJpYWxpemUoJG1hcCkge1xyXG4gICRzdHI6ICcnO1xyXG4gIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkbWFwIHtcclxuICAgICRzdHI6ICRzdHIgKyAka2V5ICsgJz0nICsgLXpmLWJwLXRvLWVtKCR2YWx1ZSkgKyAnJic7XHJcbiAgfVxyXG4gICRzdHI6IHN0ci1zbGljZSgkc3RyLCAxLCAtMik7XHJcblxyXG4gIEByZXR1cm4gJHN0cjtcclxufVxyXG5cclxuLy8vIEZpbmQgdGhlIG5leHQga2V5IGluIGEgbWFwLlxyXG4vLy8gQGFjY2VzcyBwcml2YXRlXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtNYXB9ICRtYXAgLSBNYXAgdG8gdHJhdmVyc2UuXHJcbi8vLyBAcGFyYW0ge01peGVkfSAka2V5IC0gS2V5IHRvIHVzZSBhcyBhIHN0YXJ0aW5nIHBvaW50LlxyXG4vLy9cclxuLy8vIEByZXR1cm5zIHtNaXhlZH0gVGhlIHZhbHVlIGZvciB0aGUga2V5IGFmdGVyIGAka2V5YCwgaWYgYCRrZXlgIHdhcyBmb3VuZC4gSWYgYCRrZXlgIHdhcyBub3QgZm91bmQsIG9yIGAka2V5YCB3YXMgdGhlIGxhc3QgdmFsdWUgaW4gdGhlIG1hcCwgcmV0dXJucyBgbnVsbGAuXHJcbkBmdW5jdGlvbiAtemYtbWFwLW5leHQoJG1hcCwgJGtleSkge1xyXG5cclxuICAvLyBTdG9yZSB0aGUga2V5cyBvZiB0aGUgbWFwIGFzIGEgbGlzdFxyXG4gICR2YWx1ZXM6IG1hcC1rZXlzKCRtYXApO1xyXG5cclxuICAkaTogMDtcclxuXHJcbiAgLy8gSWYgdGhlIEtleSBFeGlzdHMsIEdldCB0aGUgaW5kZXggb2YgdGhlIGtleSB3aXRoaW4gdGhlIG1hcCBhbmQgYWRkIDEgdG8gaXQgZm9yIHRoZSBuZXh0IGJyZWFrcG9pbnQgaW4gdGhlIG1hcFxyXG4gIEBpZiAobWFwLWhhcy1rZXkoJG1hcCwgJGtleSkpIHtcclxuICAgICRpOiBpbmRleCgkdmFsdWVzLCAka2V5KSArIDE7XHJcbiAgfVxyXG5cclxuICAvLyBJZiB0aGUga2V5IGRvZXNuJ3QgZXhpc3QsIG9yIGl0J3MgdGhlIGxhc3Qga2V5IGluIHRoZSBtYXAsIHJldHVybiBudWxsXHJcbiAgQGlmICgkaSA+IGxlbmd0aCgkbWFwKSBvciAkaSA9PSAwKSB7XHJcbiAgICBAcmV0dXJuIG51bGw7XHJcbiAgfVxyXG4gIC8vIE90aGVyd2lzZSwgcmV0dXJuIHRoZSB2YWx1ZVxyXG4gIEBlbHNlIHtcclxuICAgIEByZXR1cm4gbWFwLWdldCgkbWFwLCBudGgoJHZhbHVlcywgJGkpKTtcclxuICB9XHJcblxyXG59XHJcblxyXG4vLy8gUmV0dXJuIGEgbGlzdCBvZiBvdXIgbmFtZWQgYnJlYWtwb2ludHMgbGVzcyB0aGFuICRrZXkuIFVzZWZ1bCBmb3IgZGVhbGluZyB3aXRoXHJcbi8vLyByZXNwb25zaXZlIGd1dHRlcnMgZm9yIHRoZSBncmlkLlxyXG4vLy8gQGFjY2VzcyBwcml2YXRlXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRrZXkgLSBLZXkgdG8gdXNlIGFzIGxhc3QgYnJlYWtwb2ludC5cclxuLy8vXHJcbi8vLyBAcmV0dXJucyB7QXJyYXl9IFRoZSBsaXN0IG9mIGJyZWFrcG9pbnRzIHVwIHRvIGFuZC4gSWYgJGtleSBpcyBhdXRvLCByZXR1cm5zIGJyZWFrcG9pbnRzIGFib3ZlIHRoZSB6ZXJvXHJcbkBmdW5jdGlvbiAtemYtYnJlYWtwb2ludHMtbGVzcy10aGFuKCRrZXkpIHtcclxuICAkbGlzdDogKCk7XHJcbiAgJGZvdW5kX2tleTogZmFsc2U7XHJcblxyXG4gIEBlYWNoICRuYW1lIGluICQtemYtYnJlYWtwb2ludHMta2V5cyB7XHJcbiAgICBAaWYgKCRuYW1lID09ICRrZXkpIHtcclxuICAgICAgJGZvdW5kX2tleTogdHJ1ZTtcclxuICAgIH1cclxuICAgIEBpZiBub3QgJGZvdW5kX2tleSB7XHJcbiAgICAgICRsaXN0OiBhcHBlbmQoJGxpc3QsICRuYW1lKTtcclxuICAgIH1cclxuICB9XHJcbiAgQHJldHVybiAkbGlzdDtcclxufVxyXG5cclxuLy8vIFJldHVybiBhIGxpc3Qgb2Ygb3VyIG5hbWVkIGJyZWFrcG9pbnRzIGxlc3MgdGhhbiAka2V5LiBVc2VmdWwgZm9yIGRlYWxpbmcgd2l0aFxyXG4vLy8gcmVzcG9uc2l2ZSBndXR0ZXJzIGZvciB0aGUgZ3JpZC5cclxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxyXG4vLy9cclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkYnJlYWtwb2luZyAtIGEgbmFtZWQgb3Igbm9uLW5hbWVkIGJyZWFrcG9pbmcuXHJcbi8vL1xyXG4vLy8gQHJldHVybnMge0FycmF5fSBUaGUgbGlzdCBvZiBicmVha3BvaW50cyB1cCB0byBhbmQuIElmICRrZXkgaXMgYXV0bywgcmV0dXJucyBicmVha3BvaW50cyBhYm92ZSB0aGUgemVyb1xyXG5AZnVuY3Rpb24gLXpmLWNsb3Nlc3QtbmFtZWQtYnJlYWtwb2ludCgkYnJlYWtwb2ludCkge1xyXG4gICRsYXN0OiAkLXpmLXplcm8tYnJlYWtwb2ludDtcclxuICAkZm91bmQ6IGZhbHNlO1xyXG5cclxuICAkdmFsdWU6IHVuaXRsZXNzLWNhbGMoJGJyZWFrcG9pbnQsIDFweCk7XHJcbiAgQGVhY2ggJGtleSwgJHZhbCBpbiAkYnJlYWtwb2ludHMge1xyXG4gICAgQGlmIG5vdCAkZm91bmQge1xyXG4gICAgICBAaWYgdW5pdGxlc3MtY2FsYygkdmFsKSA+ICR2YWx1ZSB7XHJcbiAgICAgICAgJGZvdW5kOiB0cnVlO1xyXG4gICAgICB9IEBlbHNlIHtcclxuICAgICAgICAkbGFzdDogJGtleTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQHJldHVybiAkbGFzdDtcclxufVxyXG5cclxuLy8vIEdldCBhIHZhbHVlIGZvciBhIGJyZWFrcG9pbnQgZnJvbSBhIHJlc3BvbnNpdmUgY29uZmlnIG1hcCBvciBzaW5nbGUgdmFsdWUuXHJcbi8vLyAtIElmIHRoZSBjb25maWcgaXMgYSBzaW5nbGUgdmFsdWUsIHJldHVybiBpdCByZWdhcmRsZXNzIG9mIGAkdmFsdWVgLlxyXG4vLy8gLSBJZiB0aGUgY29uZmlnIGlzIGEgbWFwIGFuZCBoYXMgdGhlIGtleSBgJHZhbHVlYCwgdGhlIGV4YWN0IGJyZWFrcG9pbnQgdmFsdWUgaXMgcmV0dXJuZWQuXHJcbi8vLyAtIElmIHRoZSBjb25maWcgaXMgYSBtYXAgYW5kIGRvZXMgKm5vdCogaGF2ZSB0aGUgYnJlYWtwb2ludCwgdGhlIHZhbHVlIG1hdGNoaW5nIHRoZSBuZXh0IGxvd2VzdCBicmVha3BvaW50IGluIHRoZSBjb25maWcgbWFwIGlzIHJldHVybmVkLlxyXG4vLy8gQGFjY2VzcyBwcml2YXRlXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkbWFwIC0gUmVzcG9uc2l2ZSBjb25maWcgbWFwIG9yIHNpbmdsZSB2YWx1ZS5cclxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHZhbHVlIC0gQnJlYWtwb2ludCBuYW1lIHRvIHVzZS5cclxuLy8vXHJcbi8vLyBAcmV0dXJuIHtNaXhlZH0gVGhlIGNvcnJlc3BvbmRpbmcgYnJlYWtwb2ludCB2YWx1ZS5cclxuQGZ1bmN0aW9uIC16Zi1nZXQtYnAtdmFsKCRtYXAsICR2YWx1ZSkge1xyXG4gIC8vIElmIHRoZSBnaXZlbiBtYXAgaXMgYSBzaW5nbGUgdmFsdWUsIHJldHVybiBpdFxyXG4gIEBpZiB0eXBlLW9mKCRtYXApID09ICdudW1iZXInIHtcclxuICAgIEByZXR1cm4gJG1hcDtcclxuICB9XHJcblxyXG5cclxuICAvLyBDaGVjayBpZiB0aGUgYnJlYWtwb2ludCBuYW1lIGV4aXN0cyBnbG9iYWxseVxyXG4gIEBpZiBub3QgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkdmFsdWUpIHtcclxuICAgIEBpZiB0eXBlLW9mKCR2YWx1ZSkgPT0gJ251bWJlcicge1xyXG4gICAgICAkdmFsdWU6IC16Zi1jbG9zZXN0LW5hbWVkLWJyZWFrcG9pbnQoJHZhbHVlKTtcclxuICAgIH0gQGVsc2Uge1xyXG4gICAgICBAcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIENoZWNrIGlmIHRoZSBicmVha3BvaW50IG5hbWUgZXhpc3RzIGluIHRoZSBsb2NhbCBjb25maWcgbWFwXHJcbiAgQGVsc2UgaWYgbWFwLWhhcy1rZXkoJG1hcCwgJHZhbHVlKSB7XHJcbiAgICAvLyBJZiBpdCBkb2VzLCBqdXN0IHJldHVybiB0aGUgdmFsdWVcclxuICAgIEByZXR1cm4gbWFwLWdldCgkbWFwLCAkdmFsdWUpO1xyXG4gIH1cclxuICAvLyBPdGhlcndpc2UsIGZpbmQgdGhlIG5leHQgbG93ZXN0IGJyZWFrcG9pbnQgYW5kIHJldHVybiB0aGF0IHZhbHVlXHJcbiAgQGVsc2Uge1xyXG4gICAgJGFuY2hvcjogbnVsbDtcclxuICAgICRmb3VuZDogZmFsc2U7XHJcblxyXG4gICAgQGVhY2ggJGtleSwgJHZhbCBpbiAkYnJlYWtwb2ludHMge1xyXG4gICAgICBAaWYgbm90ICRmb3VuZCB7XHJcbiAgICAgICAgQGlmIG1hcC1oYXMta2V5KCRtYXAsICRrZXkpIHtcclxuICAgICAgICAgICRhbmNob3I6ICRrZXk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAka2V5ID09ICR2YWx1ZSB7XHJcbiAgICAgICAgICAkZm91bmQ6IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQHJldHVybiBtYXAtZ2V0KCRtYXAsICRhbmNob3IpO1xyXG4gIH1cclxufVxyXG5cclxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgc21hbGwpIHtcclxuICAkc21hbGwtdXA6IHNjcmVlbjtcclxuICAkc21hbGwtb25seTogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQoc21hbGwgb25seSl9Jyk7XHJcbn1cclxuXHJcbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIG1lZGl1bSkge1xyXG4gICRtZWRpdW0tdXA6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KG1lZGl1bSl9Jyk7XHJcbiAgJG1lZGl1bS1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChtZWRpdW0gb25seSl9Jyk7XHJcbn1cclxuXHJcbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIGxhcmdlKSB7XHJcbiAgJGxhcmdlLXVwOiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChsYXJnZSl9Jyk7XHJcbiAgJGxhcmdlLW9ubHk6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KGxhcmdlIG9ubHkpfScpO1xyXG59XHJcblxyXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCB4bGFyZ2UpIHtcclxuICAkeGxhcmdlLXVwOiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludCh4bGFyZ2UpfScpO1xyXG4gICR4bGFyZ2Utb25seTogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQoeGxhcmdlIG9ubHkpfScpO1xyXG59XHJcblxyXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCB4eGxhcmdlKSB7XHJcbiAgJHh4bGFyZ2UtdXA6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KHh4bGFyZ2UpfScpO1xyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBmdW5jdGlvbnNcclxuLy8vL1xyXG5cclxuLy8vIENyZWF0ZXMgYW4gaW5uZXIgYm94LXNoYWRvdyBmb3Igb25seSBvbmUgc2lkZVxyXG4vLy8gXHJcbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaWRlIC0gU2lkZSB0aGUgc2hhZG93IGlzIHN1cHBvc2VkIHRvIGFwcGVhci4gQ2FuIGJlIGB0b3BgLCBgbGVmdGAsIGByaWdodGAgb3IgYGJvdHRvbWAuXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJHNpemUgLSBXaWR0aCBmb3IgdGhlIHRhcmdldCBzaWRlLlxyXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIC0gQ29sb3Igb2YgdGhlIHNoYWRvdy5cclxuQG1peGluIGlubmVyLXNpZGUtc2hhZG93KFxyXG4gICRzaWRlOiBib3R0b20sXHJcbiAgJHNpemU6IDIwcHgsXHJcbiAgJGNvbG9yOiByZ2JhKCRibGFjaywgMC4yNSlcclxuKSB7XHJcblxyXG4gICRoZWxwZXI6IHJvdW5kKCRzaXplICogMC42NSk7XHJcblxyXG4gIEBpZiAoJHNpZGUgPT0gdG9wKSB7XHJcbiAgICBib3gtc2hhZG93OiBpbnNldCAwICRoZWxwZXIgJHNpemUgKC0xKSokaGVscGVyICRjb2xvcjtcclxuICB9IEBlbHNlIGlmICgkc2lkZSA9PSBsZWZ0KSB7XHJcbiAgICBib3gtc2hhZG93OiBpbnNldCAkaGVscGVyIDAgJHNpemUgKC0xKSokaGVscGVyICRjb2xvcjtcclxuICB9IEBlbHNlIGlmICgkc2lkZSA9PSByaWdodCkge1xyXG4gICAgYm94LXNoYWRvdzogaW5zZXQgKC0xKSokaGVscGVyIDAgJHNpemUgKC0xKSokaGVscGVyICRjb2xvcjtcclxuICB9IEBlbHNlIGlmICgkc2lkZSA9PSBib3R0b20pIHtcclxuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgKC0xKSokaGVscGVyICRzaXplICgtMSkqJGhlbHBlciAkY29sb3I7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gQ3JlYXRlcyBhIENTUyB0cmlhbmdsZSwgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIGRyb3Bkb3duIGFycm93cywgZHJvcGRvd24gcGlwcywgYW5kIG1vcmUuIFVzZSB0aGlzIG1peGluIGluc2lkZSBhIGAmOjpiZWZvcmVgIG9yIGAmOjphZnRlcmAgc2VsZWN0b3IsIHRvIGF0dGFjaCB0aGUgdHJpYW5nbGUgdG8gYW4gZXhpc3RpbmcgZWxlbWVudC5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJHRyaWFuZ2xlLXNpemUgLSBXaWR0aCBvZiB0aGUgdHJpYW5nbGUuXHJcbi8vLyBAcGFyYW0ge0NvbG9yfSAkdHJpYW5nbGUtY29sb3IgLSBDb2xvciBvZiB0aGUgdHJpYW5nbGUuXHJcbi8vLyBAcGFyYW0ge0tleXdvcmR9ICR0cmlhbmdsZS1kaXJlY3Rpb24gLSBEaXJlY3Rpb24gdGhlIHRyaWFuZ2xlIHBvaW50cy4gQ2FuIGJlIGB1cGAsIGByaWdodGAsIGBkb3duYCwgb3IgYGxlZnRgLlxyXG5AbWl4aW4gY3NzLXRyaWFuZ2xlKFxyXG4gICR0cmlhbmdsZS1zaXplLFxyXG4gICR0cmlhbmdsZS1jb2xvcixcclxuICAkdHJpYW5nbGUtZGlyZWN0aW9uXHJcbikge1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG4gIHdpZHRoOiAwO1xyXG4gIGhlaWdodDogMDtcclxuXHJcbiAgYm9yZGVyOiBpbnNldCAkdHJpYW5nbGUtc2l6ZTtcclxuXHJcbiAgY29udGVudDogJyc7XHJcblxyXG4gIEBpZiAoJHRyaWFuZ2xlLWRpcmVjdGlvbiA9PSBkb3duKSB7XHJcbiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwO1xyXG4gICAgYm9yZGVyLXRvcC1zdHlsZTogc29saWQ7XHJcbiAgICBib3JkZXItY29sb3I6ICR0cmlhbmdsZS1jb2xvciB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcclxuICB9XHJcbiAgQGlmICgkdHJpYW5nbGUtZGlyZWN0aW9uID09IHVwKSB7XHJcbiAgICBib3JkZXItdG9wLXdpZHRoOiAwO1xyXG4gICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogc29saWQ7XHJcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICR0cmlhbmdsZS1jb2xvcjtcclxuICB9XHJcbiAgQGlmICgkdHJpYW5nbGUtZGlyZWN0aW9uID09IHJpZ2h0KSB7XHJcbiAgICBib3JkZXItcmlnaHQtd2lkdGg6IDA7XHJcbiAgICBib3JkZXItbGVmdC1zdHlsZTogc29saWQ7XHJcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICR0cmlhbmdsZS1jb2xvcjtcclxuICB9XHJcbiAgQGlmICgkdHJpYW5nbGUtZGlyZWN0aW9uID09IGxlZnQpIHtcclxuICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAwO1xyXG4gICAgYm9yZGVyLXJpZ2h0LXN0eWxlOiBzb2xpZDtcclxuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgJHRyaWFuZ2xlLWNvbG9yIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xyXG4gIH1cclxufVxyXG5cclxuLy8vIENyZWF0ZXMgYSBtZW51IGljb24gd2l0aCBhIHNldCB3aWR0aCwgaGVpZ2h0LCBudW1iZXIgb2YgYmFycywgYW5kIGNvbG9ycy4gVGhlIG1peGluIHVzZXMgdGhlIGhlaWdodCBvZiB0aGUgaWNvbiBhbmQgdGhlIHdlaWdodCBvZiB0aGUgYmFycyB0byBkZXRlcm1pbmUgc3BhY2luZy4gPGRpdiBjbGFzcz1cImRvY3MtZXhhbXBsZS1idXJnZXJcIj48L2Rpdj5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgWyRibGFja10gLSBDb2xvciB0byB1c2UgZm9yIHRoZSBpY29uLlxyXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yLWhvdmVyIFskZGFyay1ncmF5XSAtIENvbG9yIHRvIHVzZSB3aGVuIHRoZSBpY29uIGlzIGhvdmVyZWQgb3Zlci5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGggWzIwcHhdIC0gV2lkdGggb2YgdGhlIGljb24uXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGhlaWdodCBbMTZweF0gLSBIZWlnaHQgb2YgdGhlIGljb24uXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJHdlaWdodCBbMnB4XSAtIEhlaWdodCBvZiBpbmRpdmlkdWFsIGJhcnMgaW4gdGhlIGljb24uXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGJhcnMgWzNdIC0gTnVtYmVyIG9mIGJhcnMgaW4gdGhlIGljb24uXHJcbkBtaXhpbiBoYW1idXJnZXIoXHJcbiAgJGNvbG9yOiAkYmxhY2ssXHJcbiAgJGNvbG9yLWhvdmVyOiAkZGFyay1ncmF5LFxyXG4gICR3aWR0aDogMjBweCxcclxuICAkaGVpZ2h0OiAxNnB4LFxyXG4gICR3ZWlnaHQ6IDJweCxcclxuICAkYmFyczogM1xyXG4pIHtcclxuICAvLyBib3gtc2hhZG93IENTUyBvdXRwdXRcclxuICAkc2hhZG93OiAoKTtcclxuICAkaG92ZXItc2hhZG93OiAoKTtcclxuXHJcbiAgLy8gU3BhY2luZyBiZXR3ZWVuIGJhcnMgaXMgY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGUgdG90YWwgaGVpZ2h0IG9mIHRoZSBpY29uIGFuZCB0aGUgd2VpZ2h0IG9mIGVhY2ggYmFyXHJcbiAgJHNwYWNpbmc6ICgkaGVpZ2h0IC0gKCR3ZWlnaHQgKiAkYmFycykpIC8gKCRiYXJzIC0gMSk7XHJcblxyXG4gIEBpZiB1bml0KCRzcGFjaW5nKSA9PSAncHgnIHtcclxuICAgICRzcGFjaW5nOiBmbG9vcigkc3BhY2luZyk7XHJcbiAgfVxyXG5cclxuICBAZm9yICRpIGZyb20gMiB0aHJvdWdoICRiYXJzIHtcclxuICAgICRvZmZzZXQ6ICgkd2VpZ2h0ICsgJHNwYWNpbmcpICogKCRpIC0gMSk7XHJcbiAgICAkc2hhZG93OiBhcHBlbmQoJHNoYWRvdywgMCAkb2Zmc2V0IDAgJGNvbG9yLCBjb21tYSk7XHJcbiAgfVxyXG5cclxuICAvLyBJY29uIGNvbnRhaW5lclxyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICB3aWR0aDogJHdpZHRoO1xyXG4gIGhlaWdodDogJGhlaWdodDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcblxyXG4gIC8vIEljb24gYmFyc1xyXG4gICY6OmFmdGVyIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMDtcclxuICAgIGxlZnQ6IDA7XHJcblxyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogJHdlaWdodDtcclxuXHJcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3I7XHJcbiAgICBib3gtc2hhZG93OiAkc2hhZG93O1xyXG5cclxuICAgIGNvbnRlbnQ6ICcnO1xyXG4gIH1cclxuXHJcbiAgLy8gSG92ZXIgc3RhdGVcclxuICBAaWYgJGNvbG9yLWhvdmVyIHtcclxuICAgIC8vIEdlbmVyYXRlIENTU1xyXG4gICAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkYmFycyB7XHJcbiAgICAgICRvZmZzZXQ6ICgkd2VpZ2h0ICsgJHNwYWNpbmcpICogKCRpIC0gMSk7XHJcbiAgICAgICRob3Zlci1zaGFkb3c6IGFwcGVuZCgkaG92ZXItc2hhZG93LCAwICRvZmZzZXQgMCAkY29sb3ItaG92ZXIsIGNvbW1hKTtcclxuICAgIH1cclxuXHJcbiAgICAmOmhvdmVyOjphZnRlciB7XHJcbiAgICAgIGJhY2tncm91bmQ6ICRjb2xvci1ob3ZlcjtcclxuICAgICAgYm94LXNoYWRvdzogJGhvdmVyLXNoYWRvdztcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vLyBBZGRzIGEgZG93bndhcmQtZmFjaW5nIHRyaWFuZ2xlIGFzIGEgYmFja2dyb3VuZCBpbWFnZSB0byBhbiBlbGVtZW50LiBUaGUgaW1hZ2UgaXMgZm9ybWF0dGVkIGFzIGFuIFNWRywgbWFraW5nIGl0IGVhc3kgdG8gY2hhbmdlIHRoZSBjb2xvci4gQmVjYXVzZSBJbnRlcm5ldCBFeHBsb3JlciBkb2Vzbid0IHN1cHBvcnQgZW5jb2RlZCBTVkdzIGFzIGJhY2tncm91bmQgaW1hZ2VzLCBhIFBORyBmYWxsYmFjayBpcyBhbHNvIGluY2x1ZGVkLlxyXG4vLy8gVGhlcmUgYXJlIHR3byBQTkcgZmFsbGJhY2tzOiBhIGJsYWNrIHRyaWFuZ2xlIGFuZCBhIHdoaXRlIHRyaWFuZ2xlLiBUaGUgb25lIHVzZWQgZGVwZW5kcyBvbiB0aGUgbGlnaHRuZXNzIG9mIHRoZSBpbnB1dCBjb2xvci5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgWyRibGFja10gLSBDb2xvciB0byB1c2UgZm9yIHRoZSB0cmlhbmdsZS5cclxuQG1peGluIGJhY2tncm91bmQtdHJpYW5nbGUoJGNvbG9yOiAkYmxhY2spIHtcclxuICAkcmdiOiAncmdiJTI4I3tyb3VuZChyZWQoJGNvbG9yKSl9LCAje3JvdW5kKGdyZWVuKCRjb2xvcikpfSwgI3tyb3VuZChibHVlKCRjb2xvcikpfSUyOSc7XHJcblxyXG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2ZXJzaW9uPScxLjEnIHdpZHRoPSczMicgaGVpZ2h0PScyNCcgdmlld0JveD0nMCAwIDMyIDI0Jz48cG9seWdvbiBwb2ludHM9JzAsMCAzMiwwIDE2LDI0JyBzdHlsZT0nZmlsbDogI3skcmdifSc+PC9wb2x5Z29uPjwvc3ZnPlwiKTtcclxuXHJcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDowXFwwKSB7XHJcbiAgICBAaWYgbGlnaHRuZXNzKCRjb2xvcikgPCA2MCUge1xyXG4gICAgICAvLyBXaGl0ZSB0cmlhbmdsZVxyXG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBWUNBWUFBQUNiVS84MEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBSXBKUkVGVWVOckVrY2tOZ0RBTUJCZlJrRXQwT2JSQkJkc0dYVURnbVFmSzRYaEgybThjelFBQXkyN1IzdHN3NFFmZTJ4OHVPTzZvWUxiNkdsT29yM0dGK3N3VVJBT21VSitSd3RFSnM5V3ZUR0VZeEJYcUkxTVFBWmhDZlVRS1J6RE1WaitUd3JBSVY2anZTVUVrWUFyMUxTa2N5VEJiL1YrS1lmWDd4QWV1c3Ezc0xEdEdIM2tFR0FDUFdJZmxOWmZoUlFBQUFBQkpSVTVFcmtKZ2dnPT0nKTtcclxuICAgIH1cclxuICAgIEBlbHNlIHtcclxuICAgICAgLy8gQmxhY2sgdHJpYW5nbGVcclxuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQVlDQVlBQUFDYlUvODBBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQU1CSlJFRlVlTnJFbGxzT2hDQU1SVnN6QzlJbHpVN0tDbVZIVEpzb01XWU1VdHB5djlCZ2J1WFFCNVpTZGdCWVlZNHljZ0Jpdms4S1lGc1FNZk1pVFRCUDRvM25VekNLek9hYkxKYkx5Mi9nMzFldkdrQWdpblI0L1plZ0tINXFYM2JKQ3NjQTN0MHgza2dPNXRRRnloaEZmNTB4UnFGTGJ5TVVOSlF6Z3lqR1Mvd2dDcHZLcWtSQnB1V3JFNFY5ZCsxRTRkUFVYcUlnMTA3U1FPRS8yRFJReE13VER5Z0lJblZERVQ5VDNsQ29qLzZqL1ZDbUdqWk9sMmxLcFo4QUF3RFFQN3pJaW1ER0ZRQUFBQUJKUlU1RXJrSmdnZz09Jyk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gQXBwbGllcyB0aGUgbWljcm8gY2xlYXJmaXggaGFjayBwb3B1bGFyaXplZCBieSBOaWNvbGFzIEdhbGxhZ2hlci4gSW5jbHVkZSB0aGlzIG1peGluIG9uIGEgY29udGFpbmVyIGlmIGl0cyBjaGlsZHJlbiBhcmUgYWxsIGZsb2F0ZWQsIHRvIGdpdmUgdGhlIGNvbnRhaW5lciBhIHByb3BlciBoZWlnaHQuXHJcbi8vLyBUaGUgY2xlYXJmaXggaXMgYXVnbWVudGVkIHdpdGggc3BlY2lmaWMgc3R5bGVzIHRvIHByZXZlbnQgYm9yZGVycyBpbiBmbGV4Ym94IGVudmlyb25tZW50c1xyXG4vLy8gQGxpbmsgaHR0cDovL25pY29sYXNnYWxsYWdoZXIuY29tL21pY3JvLWNsZWFyZml4LWhhY2svIE1pY3JvIENsZWFyZml4IEhhY2tcclxuLy8vIEBsaW5rIGh0dHA6Ly9kYW5pc2FkZXNpZ25lci5jb20vYmxvZy9mbGV4Ym94LWNsZWFyLWZpeC1wc2V1ZG8tZWxlbWVudHMvIEZsZXhib3ggZml4XHJcbkBtaXhpbiBjbGVhcmZpeCB7XHJcbiAgJjo6YmVmb3JlLFxyXG4gICY6OmFmdGVyIHtcclxuICAgIGRpc3BsYXk6IHRhYmxlO1xyXG4gICAgY29udGVudDogJyAnO1xyXG5cclxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xyXG4gICAgICBmbGV4LWJhc2lzOiAwO1xyXG4gICAgICBvcmRlcjogMTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICY6OmFmdGVyIHtcclxuICAgIGNsZWFyOiBib3RoO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIEFkZHMgQ1NTIGZvciBhIFwicXVhbnRpdHkgcXVlcnlcIiBzZWxlY3RvciB0aGF0IGF1dG9tYXRpY2FsbHkgc2l6ZXMgZWxlbWVudHMgYmFzZWQgb24gaG93IG1hbnkgdGhlcmUgYXJlIGluc2lkZSBhIGNvbnRhaW5lci5cclxuLy8vIEBsaW5rIGh0dHA6Ly9hbGlzdGFwYXJ0LmNvbS9hcnRpY2xlL3F1YW50aXR5LXF1ZXJpZXMtZm9yLWNzcyBRdWFudGl0eSBRdWVyaWVzIGZvciBDU1NcclxuLy8vXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJG1heCAtIE1heGltdW0gbnVtYmVyIG9mIGl0ZW1zIHRvIGRldGVjdC4gVGhlIGhpZ2hlciB0aGlzIG51bWJlciBpcywgdGhlIG1vcmUgQ1NTIHRoYXQncyByZXF1aXJlZCB0byBjb3ZlciBlYWNoIG51bWJlciBvZiBpdGVtcy5cclxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGVsZW0gW2xpXSAtIFRhZyB0byB1c2UgZm9yIHNpYmxpbmcgc2VsZWN0b3JzLlxyXG5AbWl4aW4gYXV0by13aWR0aCgkbWF4LCAkZWxlbTogbGkpIHtcclxuICBAZm9yICRpIGZyb20gMiB0aHJvdWdoICRtYXgge1xyXG4gICAgJjpudGgtbGFzdC1jaGlsZCgjeyRpfSk6Zmlyc3QtY2hpbGQsXHJcbiAgICAmOm50aC1sYXN0LWNoaWxkKCN7JGl9KTpmaXJzdC1jaGlsZCB+ICN7JGVsZW19IHtcclxuICAgICAgd2lkdGg6IHBlcmNlbnRhZ2UoMSAvICRpKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vLyBSZW1vdmVzIHRoZSBmb2N1cyByaW5nIGFyb3VuZCBhbiBlbGVtZW50IHdoZW4gYSBtb3VzZSBpbnB1dCBpcyBkZXRlY3RlZC5cclxuQG1peGluIGRpc2FibGUtbW91c2Utb3V0bGluZSB7XHJcbiAgW2RhdGEtd2hhdGlucHV0PSdtb3VzZSddICYge1xyXG4gICAgb3V0bGluZTogMDtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBNYWtlcyBhbiBlbGVtZW50IHZpc3VhbGx5IGhpZGRlbiwgYnV0IHN0aWxsIGFjY2Vzc2libGUgdG8ga2V5Ym9hcmRzIGFuZCBhc3Npc3RpdmUgZGV2aWNlcy5cclxuLy8vIEBsaW5rIGh0dHA6Ly9zbm9vay5jYS9hcmNoaXZlcy9odG1sX2FuZF9jc3MvaGlkaW5nLWNvbnRlbnQtZm9yLWFjY2Vzc2liaWxpdHkgSGlkaW5nIENvbnRlbnQgZm9yIEFjY2Vzc2liaWxpdHlcclxuLy8vIEBsaW5rIGh0dHA6Ly9odWdvZ2lyYXVkZWwuY29tLzIwMTYvMTAvMTMvY3NzLWhpZGUtYW5kLXNlZWsvXHJcbkBtaXhpbiBlbGVtZW50LWludmlzaWJsZSB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XHJcbiAgd2lkdGg6IDFweDtcclxuICBoZWlnaHQ6IDFweDtcclxuICBwYWRkaW5nOiAwO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgY2xpcDogcmVjdCgwLDAsMCwwKTtcclxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gIGNsaXAtcGF0aDogaW5zZXQoNTAlKTtcclxuICBib3JkZXI6IDA7XHJcbn1cclxuXHJcbi8vLyBSZXZlcnNlcyB0aGUgQ1NTIG91dHB1dCBjcmVhdGVkIGJ5IHRoZSBgZWxlbWVudC1pbnZpc2libGUoKWAgbWl4aW4uXHJcbkBtaXhpbiBlbGVtZW50LWludmlzaWJsZS1vZmYge1xyXG4gIHBvc2l0aW9uOiBzdGF0aWMgIWltcG9ydGFudDtcclxuICB3aWR0aDogYXV0bztcclxuICBoZWlnaHQ6IGF1dG87XHJcbiAgb3ZlcmZsb3c6IHZpc2libGU7XHJcbiAgY2xpcDogYXV0bztcclxuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xyXG4gIGNsaXAtcGF0aDogbm9uZTtcclxufVxyXG5cclxuLy8vIFZlcnRpY2FsbHkgY2VudGVycyB0aGUgZWxlbWVudCBpbnNpZGUgb2YgaXRzIGZpcnN0IG5vbi1zdGF0aWMgcGFyZW50LFxyXG4vLy8gQGxpbmsgaHR0cDovL3d3dy5zaXRlcG9pbnQuY29tL2NlbnRlcmluZy13aXRoLXNhc3MvIENlbnRlcmluZyBXaXRoIFNhc3NcclxuQG1peGluIHZlcnRpY2FsLWNlbnRlciB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHRvcDogNTAlO1xyXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcclxufVxyXG5cclxuLy8vIEhvcml6b250YWxseSBjZW50ZXJzIHRoZSBlbGVtZW50IGluc2lkZSBvZiBpdHMgZmlyc3Qgbm9uLXN0YXRpYyBwYXJlbnQsXHJcbi8vLyBAbGluayBodHRwOi8vd3d3LnNpdGVwb2ludC5jb20vY2VudGVyaW5nLXdpdGgtc2Fzcy8gQ2VudGVyaW5nIFdpdGggU2Fzc1xyXG5AbWl4aW4gaG9yaXpvbnRhbC1jZW50ZXIge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICBsZWZ0OiA1MCU7XHJcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xyXG59XHJcblxyXG4vLy8gQWJzb2x1dGVseSBjZW50ZXJzIHRoZSBlbGVtZW50IGluc2lkZSBvZiBpdHMgZmlyc3Qgbm9uLXN0YXRpYyBwYXJlbnQsXHJcbi8vLyBAbGluayBodHRwOi8vd3d3LnNpdGVwb2ludC5jb20vY2VudGVyaW5nLXdpdGgtc2Fzcy8gQ2VudGVyaW5nIFdpdGggU2Fzc1xyXG5AbWl4aW4gYWJzb2x1dGUtY2VudGVyIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgdG9wOiA1MCU7XHJcbiAgbGVmdDogNTAlO1xyXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xyXG59XHJcblxyXG4vLy8gSXRlcmF0ZXMgdGhyb3VnaCBicmVha3BvaW50cyBkZWZpbmVkIGluIGAkYnJlYWtwb2ludC1jbGFzc2VzYCBhbmQgcHJpbnRzIHRoZSBDU1MgaW5zaWRlIHRoZSBtaXhpbiBhdCBlYWNoIGJyZWFrcG9pbnQncyBtZWRpYSBxdWVyeS4gVXNlIHRoaXMgd2l0aCB0aGUgZ3JpZCwgb3IgYW55IG90aGVyIGNvbXBvbmVudCB0aGF0IGhhcyByZXNwb25zaXZlIGNsYXNzZXMuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkc21hbGwgW3RydWVdIC0gSWYgYGZhbHNlYCwgdGhlIG1peGluIHdpbGwgc2tpcCB0aGUgYHNtYWxsYCBicmVha3BvaW50LiBVc2UgdGhpcyB3aXRoIGNvbXBvbmVudHMgdGhhdCBkb24ndCBwcmVmaXggY2xhc3NlcyB3aXRoIGBzbWFsbC1gLCBvbmx5IGBtZWRpdW0tYCBhbmQgdXAuXHJcbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRhdXRvLWluc2VydC1icmVha3BvaW50cyBbdHJ1ZV0gLSBJZiBgZmFsc2VgLCB0aGUgbWl4aW4gd2lsbCBpdGVyYXRlIG92ZXIgYnJlYWtwb2ludHMgd2l0aG91dCBkb2luZyB0aGUgbWVkaWEgcXVlcnkgaXRzZWxmLiBVc2VmdWwgZm9yIG1vcmUgY29tcGxleCBtZWRpYSBxdWVyeSBnZW5lcmF0aW9uIGFzIGluIHRoZSBtYXJnaW4gZ3JpZC5cclxuQG1peGluIC16Zi1lYWNoLWJyZWFrcG9pbnQoJHNtYWxsOiB0cnVlLCAkYXV0by1pbnNlcnQtYnJlYWtwb2ludHM6IHRydWUpIHtcclxuICAkbGlzdDogJGJyZWFrcG9pbnQtY2xhc3NlcztcclxuXHJcbiAgQGlmIG5vdCAkc21hbGwge1xyXG4gICAgJGxpc3Q6IHNsLXJlbW92ZSgkbGlzdCwgJC16Zi16ZXJvLWJyZWFrcG9pbnQpO1xyXG4gIH1cclxuXHJcbiAgQGVhY2ggJG5hbWUgaW4gJGxpc3Qge1xyXG4gICAgJC16Zi1zaXplOiAkbmFtZSAhZ2xvYmFsO1xyXG5cclxuICAgIEBpZiAkYXV0by1pbnNlcnQtYnJlYWtwb2ludHMge1xyXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XHJcbiAgICAgICAgQGNvbnRlbnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIEBlbHNlIHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gR2VuZXJhdGUgdGhlIGBAY29udGVudGAgcGFzc2VkIHRvIHRoZSBtaXhpbiB3aXRoIGEgdmFsdWUgYCQtemYtYnAtdmFsdWVgIHJlbGF0ZWQgdG8gYSBicmVha3BvaW50LCBkZXBlbmRpbmcgb24gdGhlIGAkbmFtZWAgcGFyYW1ldGVyOlxyXG4vLy8gLSBGb3IgYSBzaW5nbGUgdmFsdWUsIGAkLXpmLWJwLXZhbHVlYCBpcyB0aGlzIHZhbHVlLlxyXG4vLy8gLSBGb3IgYSBicmVha3BvaW50IG5hbWUsIGAkLXpmLWJwLXZhbHVlYCBpcyB0aGUgY29ycmVzcG9uZGluZyBicmVha3BvaW50IHZhbHVlIGluIGAkbWFwYC5cclxuLy8vIC0gRm9yIFwiYXV0b1wiLCBgJC16Zi1icC12YWx1ZWAgaXMgdGhlIGNvcnJlc3BvbmRpbmcgYnJlYWtwb2ludCB2YWx1ZSBpbiBgJG1hcGAgYW5kIGlzIHBhc3NlZCB0byBgQGNvbnRlbnRgLCB3aGljaCBpcyBtYWRlIHJlc3BvbnNpdmUgZm9yIGVhY2ggYnJlYWtwb2ludCBvZiBgJG1hcGAuXHJcbi8vLyBAcGFyYW0ge051bWJlcnxBcnJheXxLZXl3b3JkfSAkbmFtZSBbYXV0b10gLSBTaW5nbGUgdmFsdWUsIGJyZWFrcG9pbnQgbmFtZSwgb3IgbGlzdCBvZiBicmVha3BvaW50IG5hbWVzIHRvIHVzZS4gXCJhdXRvXCIgYnkgZGVmYXVsdC5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJG1hcCAtIE1hcCBvZiBicmVha3BvaW50cyBhbmQgdmFsdWVzIG9yIHNpbmdsZSB2YWx1ZSB0byB1c2UuXHJcbkBtaXhpbiAtemYtYnJlYWtwb2ludC12YWx1ZShcclxuICAkbmFtZTogYXV0byxcclxuICAkbWFwOiBudWxsXHJcbikge1xyXG4gIEBpZiAkbmFtZSA9PSBhdXRvIGFuZCB0eXBlLW9mKCRtYXApID09ICdtYXAnIHtcclxuICAgIC8vIFwiYXV0b1wiXHJcbiAgICBAZWFjaCAkaywgJHYgaW4gJG1hcCB7XHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGspIHtcclxuICAgICAgICBAaW5jbHVkZSAtemYtYnJlYWtwb2ludC12YWx1ZSgkdiwgJG1hcCkge1xyXG4gICAgICAgICAgQGNvbnRlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBlbHNlIHtcclxuICAgIC8vIGJyZWFrcG9pbnQgbmFtZVxyXG4gICAgQGlmIHR5cGUtb2YoJG5hbWUpID09ICdzdHJpbmcnIHtcclxuICAgICAgJG5hbWU6IC16Zi1nZXQtYnAtdmFsKCRtYXAsICRuYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBicmVha3BvaW50IHZhbHVlXHJcbiAgICAkLXpmLWJwLXZhbHVlOiAkbmFtZSAhZ2xvYmFsO1xyXG4gICAgQGNvbnRlbnQ7XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBmdW5jdGlvbnNcclxuLy8vL1xyXG5cclxuJC16Zi1mb250LXN0YWNrOiAoXHJcbiAgJ2dlb3JnaWEnOiAoR2VvcmdpYSwgXCJVUlcgQm9va21hbiBMXCIsIHNlcmlmKSxcclxuICAnaGVsdmV0aWNhJzogKEhlbHZldGljYSwgQXJpYWwsIFwiTmltYnVzIFNhbnMgTFwiLCBzYW5zLXNlcmlmKSxcclxuICAnbHVjaWRhLWdyYW5kZSc6IChcIkx1Y2lkYSBHcmFuZGVcIiwgXCJMdWNpZGEgU2FucyBVbmljb2RlXCIsIFwiQml0c3RyZWFtIFZlcmEgU2Fuc1wiLCBzYW5zLXNlcmlmKSxcclxuICAnbW9ub3NwYWNlJzogKFwiQ291cmllciBOZXdcIiwgQ291cmllciwgXCJOaW1idXMgU2FucyBMXCIsIG1vbm9zcGFjZSksXHJcbiAgJ3N5c3RlbSc6ICgtYXBwbGUtc3lzdGVtLCBzeXN0ZW0tdWksIEJsaW5rTWFjU3lzdGVtRm9udCwgXCJTZWdvZSBVSVwiLCBcIlJvYm90b1wiLCBcIk94eWdlblwiLCBcIlVidW50dVwiLCBcIkNhbnRhcmVsbFwiLCBcIkZpcmEgU2Fuc1wiLCBcIkhlbHZldGljYSBOZXVlXCIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWYpLFxyXG4gICd2ZXJkYW5hJzogKFZlcmRhbmEsIEdlbmV2YSwgXCJEZWphVnUgU2Fuc1wiLCBzYW5zLXNlcmlmKSxcclxuKTtcclxuXHJcbi8vLyBSZXR1cm4gYSBmb250IHN0YWNrIGxpc3QgZnJvbSBhIG1hcC4gRXF1aXZhbGVudCB0byBgbWFwLXNhZmUtZ2V0KCRuYW1lLCAkLXpmLWZvbnQtc3RhY2spYC5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHN0YWNrIC0gTmFtZSBvZiB0aGUgZm9udCBzdGFjay5cclxuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIFskLXpmLWZvbnQtc3RhY2tdIC0gTWFwIG9mIGZvbnQgc3RhY2tzIHRvIHJldHJpZXZlIGEgbGlzdCBmcm9tLlxyXG4vLy9cclxuLy8vIEByZXR1cm5zIHtMaXN0fSBGb3VuZCBmb250IHN0YWNrLlxyXG5AZnVuY3Rpb24gZm9udC1zdGFjaygkc3RhY2ssICRtYXA6ICQtemYtZm9udC1zdGFjaykge1xyXG4gIEByZXR1cm4gbWFwLXNhZmUtZ2V0KCRtYXAsICRzdGFjayk7XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8gc2Fzcy1saW50OmRpc2FibGUgZm9yY2UtYXR0cmlidXRlLW5lc3RpbmcsIGZvcmNlLXBzZXVkby1uZXN0aW5nLCBuby1jb2xvci1saXRlcmFscywgbm8tcXVhbGlmeWluZy1lbGVtZW50c1xyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIGdsb2JhbFxyXG4vLy8vXHJcblxyXG4vLy8gRm9udCBzaXplIGF0dHJpYnV0ZSBhcHBsaWVkIHRvIGA8aHRtbD5gIGFuZCBgPGJvZHk+YC4gV2UgdXNlIDEwMCUgYnkgZGVmYXVsdCBzbyB0aGUgdmFsdWUgaXMgaW5oZXJpdGVkIGZyb20gdGhlIHVzZXIncyBicm93c2VyIHNldHRpbmdzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRnbG9iYWwtZm9udC1zaXplOiAxMDAlICFkZWZhdWx0O1xyXG5cclxuLy8vIEdsb2JhbCB3aWR0aCBvZiB5b3VyIHNpdGUuIFVzZWQgYnkgdGhlIGdyaWQgdG8gZGV0ZXJtaW5lIHJvdyB3aWR0aC5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kZ2xvYmFsLXdpZHRoOiByZW0tY2FsYygxMjAwKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGxpbmUgaGVpZ2h0IGZvciBhbGwgdHlwZS4gYCRnbG9iYWwtbGluZWhlaWdodGAgaXMgMjRweCB3aGlsZSBgJGdsb2JhbC1mb250LXNpemVgIGlzIDE2cHhcclxuLy8vIEB0eXBlIE51bWJlclxyXG4kZ2xvYmFsLWxpbmVoZWlnaHQ6IDEuNSAhZGVmYXVsdDtcclxuXHJcbi8vLyBDb2xvcnMgdXNlZCBmb3IgYnV0dG9ucywgY2FsbG91dHMsIGxpbmtzLCBldGMuIFRoZXJlIG11c3QgYWx3YXlzIGJlIGEgY29sb3IgY2FsbGVkIGBwcmltYXJ5YC5cclxuLy8vIEB0eXBlIE1hcFxyXG4kZm91bmRhdGlvbi1wYWxldHRlOiAoXHJcbiAgcHJpbWFyeTogIzE3NzliYSxcclxuICBzZWNvbmRhcnk6ICM3Njc2NzYsXHJcbiAgc3VjY2VzczogIzNhZGI3NixcclxuICB3YXJuaW5nOiAjZmZhZTAwLFxyXG4gIGFsZXJ0OiAjY2M0YjM3LFxyXG4pICFkZWZhdWx0O1xyXG5cclxuLy8vIENvbG9yIHVzZWQgZm9yIGxpZ2h0IGdyYXkgVUkgaXRlbXMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kbGlnaHQtZ3JheTogI2U2ZTZlNiAhZGVmYXVsdDtcclxuXHJcbi8vLyBDb2xvciB1c2VkIGZvciBtZWRpdW0gZ3JheSBVSSBpdGVtcy5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRtZWRpdW0tZ3JheTogI2NhY2FjYSAhZGVmYXVsdDtcclxuXHJcbi8vLyBDb2xvciB1c2VkIGZvciBkYXJrIGdyYXkgVUkgaXRlbXMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kZGFyay1ncmF5OiAjOGE4YThhICFkZWZhdWx0O1xyXG5cclxuLy8vIENvbG9yIHVzZWQgZm9yIGJsYWNrIHVpIGl0ZW1zLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGJsYWNrOiAjMGEwYTBhICFkZWZhdWx0O1xyXG5cclxuLy8vIENvbG9yIHVzZWQgZm9yIHdoaXRlIHVpIGl0ZW1zLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJHdoaXRlOiAjZmVmZWZlICFkZWZhdWx0O1xyXG5cclxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIGJvZHkuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kYm9keS1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gVGV4dCBjb2xvciBvZiB0aGUgYm9keS5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRib2R5LWZvbnQtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcclxuXHJcbi8vLyBGb250IHN0YWNrIG9mIHRoZSBib2R5LlxyXG4vLy8gQHR5cGUgTGlzdFxyXG4kYm9keS1mb250LWZhbWlseTogJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBSb2JvdG8sIEFyaWFsLCBzYW5zLXNlcmlmICFkZWZhdWx0O1xyXG5cclxuLy8vIFNldCB0byBgdHJ1ZWAgdG8gZW5hYmxlIGFudGlhbGlhc2VkIHR5cGUsIHVzaW5nIHRoZSBgLXdlYmtpdC1mb250LXNtb290aGluZ2AgYW5kIGAtbW96LW9zeC1mb250LXNtb290aGluZ2AgQ1NTIHByb3BlcnRpZXMuXHJcbi8vLyBAdHlwZSBCb29sZWFuXHJcbiRib2R5LWFudGlhbGlhc2VkOiB0cnVlICFkZWZhdWx0O1xyXG5cclxuLy8vIEdsb2JhbCB2YWx1ZSB1c2VkIGZvciBtYXJnaW4gb24gY29tcG9uZW50cy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kZ2xvYmFsLW1hcmdpbjogMXJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBHbG9iYWwgdmFsdWUgdXNlZCBmb3IgcGFkZGluZyBvbiBjb21wb25lbnRzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRnbG9iYWwtcGFkZGluZzogMXJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBHbG9iYWwgdmFsdWUgdXNlZCBmb3IgcG9zaXRpb25pbmcgb24gY29tcG9uZW50cy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kZ2xvYmFsLXBvc2l0aW9uOiAxcmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIEdsb2JhbCBmb250IHdlaWdodCB1c2VkIGZvciBub3JtYWwgdHlwZS5cclxuLy8vIEB0eXBlIEtleXdvcmQgfCBOdW1iZXJcclxuJGdsb2JhbC13ZWlnaHQtbm9ybWFsOiBub3JtYWwgIWRlZmF1bHQ7XHJcblxyXG4vLy8gR2xvYmFsIGZvbnQgd2VpZ2h0IHVzZWQgZm9yIGJvbGQgdHlwZS5cclxuLy8vIEB0eXBlIEtleXdvcmQgfCBOdW1iZXJcclxuJGdsb2JhbC13ZWlnaHQtYm9sZDogYm9sZCAhZGVmYXVsdDtcclxuXHJcbi8vLyBHbG9iYWwgdmFsdWUgdXNlZCBmb3IgYWxsIGVsZW1lbnRzIHRoYXQgaGF2ZSBhIGJvcmRlciByYWRpdXMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGdsb2JhbC1yYWRpdXM6IDAgIWRlZmF1bHQ7XHJcblxyXG4vLy8gR2xvYmFsIHZhbHVlIHVzZWQgZm9yIGFsbCBtZW51IHN0eWxlcy4gQ2FuIGJlIG92ZXJ3cml0dGVuIGF0IGluZGl2aWR1YWwgbWVudSBjb21wb25lbnQgbGV2ZWwuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGdsb2JhbC1tZW51LXBhZGRpbmc6IDAuN3JlbSAxcmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIEdsb2JhbCB2YWx1ZSB1c2VkIGZvciBhbGwgbWVudSBzdHlsZXMuIE5lc3RlZCBtYXJnaW4gZm9yIHN1Ym1lbnUuXHJcbiRnbG9iYWwtbWVudS1uZXN0ZWQtbWFyZ2luOiAxcmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIFNldHMgdGhlIHRleHQgZGlyZWN0aW9uIG9mIHRoZSBDU1MuIENhbiBiZSBlaXRoZXIgYGx0cmAgb3IgYHJ0bGAuXHJcbi8vLyBAdHlwZSBLZXl3b3JkXHJcbiRnbG9iYWwtdGV4dC1kaXJlY3Rpb246IGx0ciAhZGVmYXVsdDtcclxuXHJcbi8vLyBFbmFibGVzIGZsZXhib3ggZm9yIGNvbXBvbmVudHMgdGhhdCBzdXBwb3J0IGl0LlxyXG4vLy8gQHR5cGUgQm9vbGVhblxyXG4kZ2xvYmFsLWZsZXhib3g6IHRydWUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRW5hYmxlZCByZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBwcm90b3R5cGVzIGlmIGFwcGxpY2FibGVcclxuLy8vIEB0eXBlIEJvb2xlYW5cclxuJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHM6IGZhbHNlICFkZWZhdWx0O1xyXG5cclxuLy8vIEJ1dHRvbiBjdXJzb3IncyB2YWx1ZSwgYGF1dG9gIGJ5IGRlZmF1bHRcclxuLy8vIEB0eXBlIEtleXdvcmRcclxuJGdsb2JhbC1idXR0b24tY3Vyc29yOiBhdXRvICFkZWZhdWx0O1xyXG5cclxuQGlmIG5vdCBtYXAtaGFzLWtleSgkZm91bmRhdGlvbi1wYWxldHRlLCBwcmltYXJ5KSB7XHJcbiAgQGVycm9yICdJbiAkZm91bmRhdGlvbi1wYWxldHRlLCB5b3UgbXVzdCBoYXZlIGEgY29sb3IgbmFtZWQgXCJwcmltYXJ5XCIuJztcclxufVxyXG5cclxuLy8gSW50ZXJuYWwgdmFyaWFibGVzIHVzZWQgZm9yIHRleHQgZGlyZWN0aW9uXHJcbiRnbG9iYWwtbGVmdDogaWYoJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSBydGwsIHJpZ2h0LCBsZWZ0KTtcclxuJGdsb2JhbC1yaWdodDogaWYoJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSBydGwsIGxlZnQsIHJpZ2h0KTtcclxuXHJcbi8vLyBHbG9iYWwgdG9sZXJhbmNlIGZvciBjb2xvciBwaWNrIGNvbnRyYXN0LlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRnbG9iYWwtY29sb3ItcGljay1jb250cmFzdC10b2xlcmFuY2U6IDAgIWRlZmF1bHQ7XHJcblxyXG4vLyBJbnRlcm5hbCB2YXJpYWJsZXMgdXNlZCBmb3IgY29sb3JzXHJcbiRwcmltYXJ5LWNvbG9yOiBnZXQtY29sb3IocHJpbWFyeSk7XHJcbiRzZWNvbmRhcnktY29sb3I6IGdldC1jb2xvcihzZWNvbmRhcnkpO1xyXG4kc3VjY2Vzcy1jb2xvcjogZ2V0LWNvbG9yKHN1Y2Nlc3MpO1xyXG4kd2FybmluZy1jb2xvcjogZ2V0LWNvbG9yKHdhcm5pbmcpO1xyXG4kYWxlcnQtY29sb3I6IGdldC1jb2xvcihhbGVydCk7XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1nbG9iYWwtc3R5bGVzIHtcclxuICBAaW5jbHVkZSAtemYtbm9ybWFsaXplO1xyXG5cclxuICAvLyBUaGVzZSBzdHlsZXMgYXJlIGFwcGxpZWQgdG8gYSA8bWV0YT4gdGFnLCB3aGljaCBpcyByZWFkIGJ5IHRoZSBGb3VuZGF0aW9uIEphdmFTY3JpcHRcclxuICAuZm91bmRhdGlvbi1tcSB7XHJcbiAgICBmb250LWZhbWlseTogJyN7LXpmLWJwLXNlcmlhbGl6ZSgkYnJlYWtwb2ludHMpfSc7XHJcbiAgfVxyXG5cclxuICBodG1sIHtcclxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICBmb250LXNpemU6ICRnbG9iYWwtZm9udC1zaXplO1xyXG4gIH1cclxuXHJcbiAgLy8gU2V0IGJveC1zaXppbmcgZ2xvYmFsbHkgdG8gaGFuZGxlIHBhZGRpbmcgYW5kIGJvcmRlciB3aWR0aHNcclxuICAqLFxyXG4gICo6OmJlZm9yZSxcclxuICAqOjphZnRlciB7XHJcbiAgICBib3gtc2l6aW5nOiBpbmhlcml0O1xyXG4gIH1cclxuXHJcbiAgLy8gRGVmYXVsdCBib2R5IHN0eWxlc1xyXG4gIGJvZHkge1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgcGFkZGluZzogMDtcclxuXHJcbiAgICBiYWNrZ3JvdW5kOiAkYm9keS1iYWNrZ3JvdW5kO1xyXG5cclxuICAgIGZvbnQtZmFtaWx5OiAkYm9keS1mb250LWZhbWlseTtcclxuICAgIGZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWw7XHJcbiAgICBsaW5lLWhlaWdodDogJGdsb2JhbC1saW5laGVpZ2h0O1xyXG4gICAgY29sb3I6ICRib2R5LWZvbnQtY29sb3I7XHJcblxyXG4gICAgQGlmICgkYm9keS1hbnRpYWxpYXNlZCkge1xyXG4gICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcclxuICAgICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGltZyB7XHJcbiAgICAvLyBHZXQgcmlkIG9mIGdhcCB1bmRlciBpbWFnZXMgYnkgbWFraW5nIHRoZW0gZGlzcGxheTogaW5saW5lLWJsb2NrOyBieSBkZWZhdWx0XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG5cclxuICAgIC8vIEdyaWQgZGVmYXVsdHMgdG8gZ2V0IGltYWdlcyBhbmQgZW1iZWRzIHRvIHdvcmsgcHJvcGVybHlcclxuICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogYXV0bztcclxuICAgIC1tcy1pbnRlcnBvbGF0aW9uLW1vZGU6IGJpY3ViaWM7XHJcbiAgfVxyXG5cclxuICAvLyBNYWtlIHN1cmUgdGV4dGFyZWEgdGFrZXMgb24gaGVpZ2h0IGF1dG9tYXRpY2FsbHlcclxuICB0ZXh0YXJlYSB7XHJcbiAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICBtaW4taGVpZ2h0OiA1MHB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XHJcbiAgfVxyXG5cclxuICAvLyBNYWtlIHNlbGVjdCBlbGVtZW50cyBhcmUgMTAwJSB3aWR0aCBieSBkZWZhdWx0XHJcbiAgc2VsZWN0IHtcclxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGJvcmRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG4gIH1cclxuXHJcbiAgLy8gU3R5bGVzIEdvb2dsZSBNYXBzIGFuZCBNYXBRdWVzdCBlbWJlZHMgcHJvcGVybHlcclxuICAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLWlkc1xyXG4gIC5tYXBfY2FudmFzLFxyXG4gIC5tcWEtZGlzcGxheSB7XHJcbiAgICBpbWcsXHJcbiAgICBlbWJlZCxcclxuICAgIG9iamVjdCB7XHJcbiAgICAgIG1heC13aWR0aDogbm9uZSAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gUmVzZXQgPGJ1dHRvbj4gc3R5bGVzIGNyZWF0ZWQgYnkgbW9zdCBicm93c2Vyc1xyXG4gIGJ1dHRvbiB7XHJcbiAgICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gICAgYXBwZWFyYW5jZTogbm9uZTtcclxuICAgIGJvcmRlcjogMDtcclxuICAgIGJvcmRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICBsaW5lLWhlaWdodDogMTtcclxuICAgIGN1cnNvcjogJGdsb2JhbC1idXR0b24tY3Vyc29yO1xyXG4gIH1cclxuXHJcbiAgLy8gUHJldmVudCB0ZXh0IG92ZXJmbG93IG9uIHByZVxyXG4gIHByZSB7XHJcbiAgICBvdmVyZmxvdzogYXV0bztcclxuICB9XHJcblxyXG4gIC8vIE1ha2UgcmVzZXQgaW5oZXJpdCBmb250LWZhbWlseSBpbnN0ZWFkIG9mIHNldHRpbmdzIHNhbnMtc2VyaWZcclxuICBidXR0b24sXHJcbiAgaW5wdXQsXHJcbiAgb3B0Z3JvdXAsXHJcbiAgc2VsZWN0LFxyXG4gIHRleHRhcmVhIHtcclxuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xyXG4gIH1cclxuXHJcbiAgLy8gSW50ZXJuYWwgY2xhc3NlcyB0byBzaG93L2hpZGUgZWxlbWVudHMgaW4gSmF2YVNjcmlwdFxyXG4gIC5pcy12aXNpYmxlIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG5cclxuICAuaXMtaGlkZGVuIHtcclxuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBMb2FkcyBub3JtYWxpemUuY3NzLlxyXG4vLy8gQGFjY2VzcyBwcml2YXRlXHJcbkBtaXhpbiAtemYtbm9ybWFsaXplIHtcclxuICBAaW5jbHVkZSBub3JtYWxpemUoKTtcclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgZ3JpZFxyXG4vLy8vXHJcblxyXG4vLy8gVGhlIG1heGltdW0gd2lkdGggb2YgYSByb3cuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGdyaWQtcm93LXdpZHRoOiAkZ2xvYmFsLXdpZHRoICFkZWZhdWx0O1xyXG5cclxuLy8vIFRoZSBkZWZhdWx0IGNvbHVtbiBjb3VudCBvZiBhIGdyaWQuIENoYW5naW5nIHRoaXMgdmFsdWUgYWZmZWN0cyB0aGUgbG9naWMgb2YgdGhlIGdyaWQgbWl4aW5zLCBhbmQgdGhlIG51bWJlciBvZiBDU1MgY2xhc3NlcyBvdXRwdXQuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGdyaWQtY29sdW1uLWNvdW50OiAxMiAhZGVmYXVsdDtcclxuXHJcbi8vLyBUaGUgYW1vdW50IG9mIHNwYWNlIGJldHdlZW4gY29sdW1ucyBhdCBkaWZmZXJlbnQgc2NyZWVuIHNpemVzLiBUbyB1c2UganVzdCBvbmUgc2l6ZSwgc2V0IHRoZSB2YXJpYWJsZSB0byBhIG51bWJlciBpbnN0ZWFkIG9mIGEgbWFwLlxyXG4vLy8gQHR5cGUgTWFwIHwgTGVuZ3RoXHJcbi8vLyBAc2luY2UgNi4xLjBcclxuJGdyaWQtY29sdW1uLWd1dHRlcjogKFxyXG4gIHNtYWxsOiAyMHB4LFxyXG4gIG1lZGl1bTogMzBweCxcclxuKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBJZiBgdHJ1ZWAsIHRoZSBsYXN0IGNvbHVtbiBpbiBhIHJvdyB3aWxsIGFsaWduIHRvIHRoZSBvcHBvc2l0ZSBlZGdlIG9mIHRoZSByb3cuXHJcbi8vLyBAdHlwZSBCb29sZWFuXHJcbiRncmlkLWNvbHVtbi1hbGlnbi1lZGdlOiB0cnVlICFkZWZhdWx0O1xyXG5cclxuLy8vIFNlbGVjdG9yIHVzZWQgZm9yIGFuIGFsaWFzIG9mIGNvbHVtbiAod2l0aCBAZXh0ZW5kKS4gSWYgYGZhbHNlYCwgbm8gYWxpYXMgaXMgY3JlYXRlZC5cclxuLy8vIEB0eXBlIFN0cmluZ1xyXG4kZ3JpZC1jb2x1bW4tYWxpYXM6ICdjb2x1bW5zJyAhZGVmYXVsdDtcclxuXHJcbi8vLyBUaGUgaGlnaGVzdCBudW1iZXIgb2YgYC54LXVwYCBjbGFzc2VzIGF2YWlsYWJsZSB3aGVuIHVzaW5nIHRoZSBibG9jayBncmlkIENTUy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kYmxvY2stZ3JpZC1tYXg6IDggIWRlZmF1bHQ7XHJcblxyXG4vLyBJbnRlcm5hbCB2YWx1ZSB0byBzdG9yZSB0aGUgZW5kIGNvbHVtbiBmbG9hdCBkaXJlY3Rpb25cclxuJC16Zi1lbmQtZmxvYXQ6IGlmKCRncmlkLWNvbHVtbi1hbGlnbi1lZGdlLCAkZ2xvYmFsLXJpZ2h0LCAkZ2xvYmFsLWxlZnQpO1xyXG5cclxuQGltcG9ydCAncm93JztcclxuQGltcG9ydCAnY29sdW1uJztcclxuQGltcG9ydCAnc2l6ZSc7XHJcbkBpbXBvcnQgJ3Bvc2l0aW9uJztcclxuQGltcG9ydCAnZ3V0dGVyJztcclxuQGltcG9ydCAnY2xhc3Nlcyc7XHJcbkBpbXBvcnQgJ2xheW91dCc7XHJcblxyXG5AaW1wb3J0ICdmbGV4LWdyaWQnO1xyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgZ3JpZFxyXG4vLy8vXHJcblxyXG4vLy8gQ2hhbmdlIHRoZSBiZWhhdmlvciBvZiBjb2x1bW5zIGRlZmluZWQgaW5zaWRlIHRoaXMgbWl4aW4gdG8gdXNlIGEgZGlmZmVyZW50IGNvbHVtbiBjb3VudC5cclxuLy8vIEBjb250ZW50XHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRjb2x1bW5zIC0gTnVtYmVyIG9mIGNvbHVtbnMgdG8gdXNlLlxyXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkcm9vdCBbZmFsc2VdXHJcbi8vLyAgIElmIGBmYWxzZWAsIHNlbGVjdG9ycyBpbnNpZGUgdGhpcyBtaXhpbiB3aWxsIG5lc3QgaW5zaWRlIHRoZSBwYXJlbnQgc2VsZWN0b3IuXHJcbi8vLyAgIElmIGB0cnVlYCwgc2VsZWN0b3JzIHdpbGwgbm90IG5lc3QuXHJcbkBtaXhpbiBncmlkLWNvbnRleHQoXHJcbiAgJGNvbHVtbnMsXHJcbiAgJHJvb3Q6IGZhbHNlXHJcbikge1xyXG4gIC8vIFN0b3JlIHRoZSBjdXJyZW50IGNvbHVtbiBjb3VudCBzbyBpdCBjYW4gYmUgcmUtc2V0IGxhdGVyXHJcbiAgJG9sZC1ncmlkLWNvbHVtbi1jb3VudDogJGdyaWQtY29sdW1uLWNvdW50O1xyXG4gICRncmlkLWNvbHVtbi1jb3VudDogJGNvbHVtbnMgIWdsb2JhbDtcclxuXHJcbiAgQGlmICRyb290IHtcclxuICAgIEBhdC1yb290IHsgQGNvbnRlbnQ7IH1cclxuICB9XHJcbiAgQGVsc2Uge1xyXG4gICAgQGNvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICAvLyBSZXN0b3JlIHRoZSBvbGQgY29sdW1uIGNvdW50XHJcbiAgJGdyaWQtY29sdW1uLWNvdW50OiAkb2xkLWdyaWQtY29sdW1uLWNvdW50ICFnbG9iYWw7XHJcbn1cclxuXHJcbi8vLyBDcmVhdGVzIGEgZ3JpZCByb3cuXHJcbi8vLyBAY29udGVudFxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkY29sdW1ucyBbbnVsbF0gLSBDb2x1bW4gY291bnQgZm9yIHRoaXMgcm93LiBgbnVsbGAgd2lsbCB1c2UgdGhlIGRlZmF1bHQgY29sdW1uIGNvdW50LlxyXG4vLy8gQHBhcmFtIHtLZXl3b3Jkc30gJGJlaGF2aW9yIFtudWxsXVxyXG4vLy8gICBNb2RpZmljYXRpb25zIHRvIHRoZSBkZWZhdWx0IGdyaWQgc3R5bGVzLiBgbmVzdGAgaW5kaWNhdGVzIHRoZSByb3cgd2lsbCBiZSBwbGFjZWQgaW5zaWRlIGFub3RoZXIgcm93LiBgY29sbGFwc2VgIGluZGljYXRlcyB0aGF0IHRoZSBjb2x1bW5zIGluc2lkZSB0aGlzIHJvdyB3aWxsIG5vdCBoYXZlIHBhZGRpbmcuIGBuZXN0IGNvbGxhcHNlYCBjb21iaW5lcyBib3RoIGJlaGF2aW9ycy5cclxuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICRzaXplIFskZ3JpZC1yb3ctd2lkdGhdIE1heGltdW0gc2l6ZSBvZiB0aGUgcm93LiBTZXQgdG8gYGV4cGFuZGAgdG8gbWFrZSB0aGUgcm93IHRha2luZyB0aGUgZnVsbCB3aWR0aC5cclxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGNmIFt0cnVlXSAtIFdoZXRoZXIgb3Igbm90IHRvIGluY2x1ZGUgYSBjbGVhcmZpeC5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLWNvbHVtbi1ndXR0ZXJdIC0gR3V0dGVyIG1hcCBvciBzaW5nbGUgdmFsdWUgdG8gdXNlIHdoZW4gaW52ZXJ0aW5nIG1hcmdpbnMuIFJlc3BvbnNpdmUgZ3V0dGVyIHNldHRpbmdzIGJ5IGRlZmF1bHQuXHJcbkBtaXhpbiBncmlkLXJvdyhcclxuICAkY29sdW1uczogbnVsbCxcclxuICAkYmVoYXZpb3I6IG51bGwsXHJcbiAgJHNpemU6ICRncmlkLXJvdy13aWR0aCxcclxuICAkY2Y6IHRydWUsXHJcbiAgJGd1dHRlcnM6ICRncmlkLWNvbHVtbi1ndXR0ZXJcclxuKSB7XHJcbiAgJG1hcmdpbjogYXV0bztcclxuXHJcbiAgQGlmIGluZGV4KCRiZWhhdmlvciwgbmVzdCkgIT0gbnVsbCB7XHJcbiAgICBAaW5jbHVkZSBncmlkLXJvdy1uZXN0KCRndXR0ZXJzKTtcclxuXHJcbiAgICBAaWYgaW5kZXgoJGJlaGF2aW9yLCBjb2xsYXBzZSkgIT0gbnVsbCB7XHJcbiAgICAgIG1hcmdpbi1yaWdodDogMDtcclxuICAgICAgbWFyZ2luLWxlZnQ6IDA7XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBlbHNlIHtcclxuICAgIEBpbmNsdWRlIGdyaWQtcm93LXNpemUoJHNpemUpO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xyXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XHJcbiAgfVxyXG5cclxuICBAaWYgJGNmIHtcclxuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xyXG4gIH1cclxuXHJcbiAgQGlmICRjb2x1bW5zICE9IG51bGwge1xyXG4gICAgQGluY2x1ZGUgZ3JpZC1jb250ZXh0KCRjb2x1bW5zKSB7XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8vIEludmVydHMgdGhlIG1hcmdpbnMgb2YgYSByb3cgdG8gbmVzdCBpdCBpbnNpZGUgb2YgYSBjb2x1bW4uXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtY29sdW1uLWd1dHRlcl0gLSBHdXR0ZXIgbWFwIG9yIHNpbmdsZSB2YWx1ZSB0byB1c2Ugd2hlbiBpbnZlcnRpbmcgbWFyZ2lucy4gUmVzcG9uc2l2ZSBndXR0ZXIgc2V0dGluZ3MgYnkgZGVmYXVsdC5cclxuQG1peGluIGdyaWQtcm93LW5lc3QoJGd1dHRlcnM6ICRncmlkLWNvbHVtbi1ndXR0ZXIpIHtcclxuICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50IHtcclxuICAgICRtYXJnaW46IHJlbS1jYWxjKC16Zi1nZXQtYnAtdmFsKCRndXR0ZXJzLCAkLXpmLXNpemUpKSAvIDIgKiAtMTtcclxuXHJcbiAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW47XHJcbiAgICBtYXJnaW4tbGVmdDogJG1hcmdpbjtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBTZXQgYSBncmlkIHJvdyBzaXplXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHNpemUgWyRncmlkLXJvdy13aWR0aF0gTWF4aW11bSBzaXplIG9mIHRoZSByb3cuIFNldCB0byBgZXhwYW5kYCB0byBtYWtlIHRoZSByb3cgdGFraW5nIHRoZSBmdWxsIHdpZHRoLlxyXG5AbWl4aW4gZ3JpZC1yb3ctc2l6ZSgkc2l6ZTogJGdyaWQtcm93LXdpZHRoKSB7XHJcbiAgQGlmICRzaXplID09IGV4cGFuZCB7XHJcbiAgICAkc2l6ZTogbm9uZTtcclxuICB9XHJcblxyXG4gIG1heC13aWR0aDogJHNpemU7XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIGdyaWRcclxuLy8vL1xyXG5cclxuLy8vIENhbGN1bGF0ZXMgdGhlIHdpZHRoIG9mIGEgY29sdW1uIGJhc2VkIG9uIGEgbnVtYmVyIG9mIGZhY3RvcnMuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TGlzdH0gJGNvbHVtbnNcclxuLy8vICAgV2lkdGggb2YgdGhlIGNvbHVtbi4gQWNjZXB0cyBtdWx0aXBsZSB2YWx1ZXM6XHJcbi8vLyAgIC0gQSBwZXJjZW50YWdlIHZhbHVlIHdpbGwgbWFrZSB0aGUgY29sdW1uIHRoYXQgZXhhY3Qgc2l6ZS5cclxuLy8vICAgLSBBIHNpbmdsZSBkaWdpdCB3aWxsIG1ha2UgdGhlIGNvbHVtbiBzcGFuIHRoYXQgbnVtYmVyIG9mIGNvbHVtbnMgd2lkZSwgdGFraW5nIGludG8gYWNjb3VudCB0aGUgY29sdW1uIGNvdW50IG9mIHRoZSBwYXJlbnQgcm93LlxyXG4vLy8gICAtIEEgbGlzdCBvZiB0aGUgZm9ybWF0IFwieCBvZiB5XCIgKHdpdGhvdXQgcXVvdGVzKSB3aWxsIG1ha2UgYSBjb2x1bW4gdGhhdCBpcyAqeCogY29sdW1ucyB3aWRlLCBhc3N1bWluZyAqeSogdG90YWwgY29sdW1ucyBmb3IgdGhlIHBhcmVudC5cclxuLy8vXHJcbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBBIGNhbGN1bGF0ZWQgcGVyY2VudGFnZSB2YWx1ZS5cclxuQGZ1bmN0aW9uIGdyaWQtY29sdW1uKCRjb2x1bW5zKSB7XHJcbiAgJHdpZHRoOiAwJTtcclxuXHJcbiAgLy8gUGFyc2luZyBwZXJjZW50cywgZGVjaW1hbHMsIGFuZCBjb2x1bW4gY291bnRzXHJcbiAgQGlmIHR5cGUtb2YoJGNvbHVtbnMpID09ICdudW1iZXInIHtcclxuICAgIEBpZiB1bml0KCRjb2x1bW5zKSA9PSAnJScge1xyXG4gICAgICAkd2lkdGg6ICRjb2x1bW5zO1xyXG4gICAgfVxyXG4gICAgQGVsc2UgaWYgJGNvbHVtbnMgPCAxIHtcclxuICAgICAgJHdpZHRoOiBwZXJjZW50YWdlKCRjb2x1bW5zKTtcclxuICAgIH1cclxuICAgIEBlbHNlIHtcclxuICAgICAgJHdpZHRoOiBwZXJjZW50YWdlKCRjb2x1bW5zIC8gJGdyaWQtY29sdW1uLWNvdW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFBhcnNpbmcgXCJuIG9mIG5cIiBleHByZXNzaW9uc1xyXG4gIEBlbHNlIGlmIHR5cGUtb2YoJGNvbHVtbnMpID09ICdsaXN0JyB7XHJcbiAgICBAaWYgbGVuZ3RoKCRjb2x1bW5zKSAhPSAzIHtcclxuICAgICAgQGVycm9yICdXcm9uZyBzeW50YXggZm9yIGdyaWQtY29sdW1uKCkuIFVzZSB0aGUgZm9ybWF0IFwibiBvZiBuXCIuJztcclxuICAgIH1cclxuICAgIEBlbHNlIHtcclxuICAgICAgJHdpZHRoOiBwZXJjZW50YWdlKG50aCgkY29sdW1ucywgMSkgLyBudGgoJGNvbHVtbnMsIDMpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIEFueXRoaW5nIGVsc2UgaXMgaW5jb3JyZWN0XHJcbiAgQGVsc2Uge1xyXG4gICAgQGVycm9yICdXcm9uZyBzeW50YXggZm9yIGdyaWQtY29sdW1uKCkuIFVzZSBhIG51bWJlciwgZGVjaW1hbCwgcGVyY2VudGFnZSwgb3IgXCJuIG9mIG5cIi4nO1xyXG4gIH1cclxuXHJcbiAgQHJldHVybiAkd2lkdGg7XHJcbn1cclxuXHJcbi8vLyBDcmVhdGVzIGEgZ3JpZCBjb2x1bW4uXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGNvbHVtbnMgWyRncmlkLWNvbHVtbi1jb3VudF0gLSBXaWR0aCBvZiB0aGUgY29sdW1uLiBSZWZlciB0byB0aGUgYGdyaWQtY29sdW1uKClgIGZ1bmN0aW9uIHRvIHNlZSBwb3NzaWJsZSB2YWx1ZXMuXHJcbi8vLyBAcGFyYW0ge01peGVkfSAkZ3V0dGVycyBbJGdyaWQtY29sdW1uLWd1dHRlcl0gLSBTcGFjaW5nIGJldHdlZW4gY29sdW1ucy4gUmVmZXIgdG8gdGhlIGBncmlkLWNvbHVtbi1ndXR0ZXIoKWAgZnVuY3Rpb24gdG8gc2VlIHBvc3NpYmxlIHZhbHVlcy5cclxuQG1peGluIGdyaWQtY29sdW1uKFxyXG4gICRjb2x1bW5zOiAkZ3JpZC1jb2x1bW4tY291bnQsXHJcbiAgJGd1dHRlcnM6ICRncmlkLWNvbHVtbi1ndXR0ZXJcclxuKSB7XHJcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tc2l6ZSgkY29sdW1ucyk7XHJcbiAgZmxvYXQ6ICRnbG9iYWwtbGVmdDtcclxuXHJcbiAgLy8gR3V0dGVyc1xyXG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLWd1dHRlcigkZ3V0dGVyczogJGd1dHRlcnMpO1xyXG5cclxuICAvLyBMYXN0IGNvbHVtbiBhbGlnbm1lbnRcclxuICBAaWYgJGdyaWQtY29sdW1uLWFsaWduLWVkZ2Uge1xyXG4gICAgJjpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpIHtcclxuICAgICAgZmxvYXQ6ICRnbG9iYWwtcmlnaHQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gQ3JlYXRlcyBhIGdyaWQgY29sdW1uIHJvdy4gVGhpcyBpcyB0aGUgZXF1aXZhbGVudCBvZiBhZGRpbmcgYC5yb3dgIGFuZCBgLmNvbHVtbmAgdG8gdGhlIHNhbWUgZWxlbWVudC5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge01peGVkfSAkZ3V0dGVycyBbJGdyaWQtY29sdW1uLWd1dHRlcl0gLSBXaWR0aCBvZiB0aGUgZ3V0dGVycyBvbiBlaXRoZXIgc2lkZSBvZiB0aGUgY29sdW1uIHJvdy4gUmVmZXIgdG8gdGhlIGBncmlkLWNvbHVtbi1ndXR0ZXIoKWAgZnVuY3Rpb24gdG8gc2VlIHBvc3NpYmxlIHZhbHVlcy5cclxuQG1peGluIGdyaWQtY29sdW1uLXJvdyhcclxuICAkZ3V0dGVyczogJGdyaWQtY29sdW1uLWd1dHRlclxyXG4pIHtcclxuICBAaW5jbHVkZSBncmlkLXJvdztcclxuICBAaW5jbHVkZSBncmlkLWNvbHVtbigkZ3V0dGVyczogJGd1dHRlcnMpO1xyXG5cclxuICAmLFxyXG4gICY6bGFzdC1jaGlsZCB7XHJcbiAgICBmbG9hdDogbm9uZTtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbigpYC5cclxuLy8vIEBhbGlhcyBncmlkLWNvbHVtblxyXG5AZnVuY3Rpb24gZ3JpZC1jb2woXHJcbiAgJGNvbHVtbnM6ICRncmlkLWNvbHVtbi1jb3VudFxyXG4pIHtcclxuICBAcmV0dXJuIGdyaWQtY29sdW1uKCRjb2x1bW5zKTtcclxufVxyXG5cclxuLy8vIFNob3J0aGFuZCBmb3IgYGdyaWQtY29sdW1uKClgLlxyXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uXHJcbkBtaXhpbiBncmlkLWNvbChcclxuICAkY29sdW1uczogJGdyaWQtY29sdW1uLWNvdW50LFxyXG4gICRndXR0ZXJzOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXHJcbikge1xyXG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uKCRjb2x1bW5zLCAkZ3V0dGVycyk7XHJcbn1cclxuXHJcbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbi1yb3coKWAuXHJcbi8vLyBAYWxpYXMgZ3JpZC1jb2x1bW4tcm93XHJcbkBtaXhpbiBncmlkLWNvbC1yb3coXHJcbiAgJGd1dHRlcnM6ICRncmlkLWNvbHVtbi1ndXR0ZXJcclxuKSB7XHJcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tcm93KCRndXR0ZXJzKTtcclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgZ3JpZFxyXG4vLy8vXHJcblxyXG4vLy8gU2V0IHRoZSB3aWR0aCBvZiBhIGdyaWQgY29sdW1uLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TnVtYmVyfExpc3R9ICR3aWR0aCBbJGdyaWQtY29sdW1uLWNvdW50XSAtIFdpZHRoIHRvIG1ha2UgdGhlIGNvbHVtbi4gWW91IGNhbiBwYXNzIGluIGFueSB2YWx1ZSBhY2NlcHRlZCBieSB0aGUgYGdyaWQtY29sdW1uKClgIGZ1bmN0aW9uLCBzdWNoIGFzIGA2YCwgYDUwJWAsIG9yIGAxIG9mIDJgLlxyXG5AbWl4aW4gZ3JpZC1jb2x1bW4tc2l6ZShcclxuICAkY29sdW1uczogJGdyaWQtY29sdW1uLWNvdW50XHJcbikge1xyXG4gIHdpZHRoOiBncmlkLWNvbHVtbigkY29sdW1ucyk7XHJcbn1cclxuXHJcbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbi1zaXplKClgLlxyXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLXNpemVcclxuQG1peGluIGdyaWQtY29sLXNpemUoXHJcbiAgJGNvbHVtbnM6ICRncmlkLWNvbHVtbi1jb3VudFxyXG4pIHtcclxuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1zaXplKCRjb2x1bW5zKTtcclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgZ3JpZFxyXG4vLy8vXHJcblxyXG4vLy8gUmVwb3NpdGlvbiBhIGNvbHVtbi5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge051bWJlcnxLZXl3b3JkfSAkcG9zaXRpb24gLSBEaXJlY3Rpb24gYW5kIGFtb3VudCB0byBtb3ZlLiBUaGUgY29sdW1uIHdpbGwgbW92ZSBlcXVhbCB0byB0aGUgd2lkdGggb2YgdGhlIGNvbHVtbiBjb3VudCBzcGVjaWZpZWQuIEEgcG9zaXRpdmUgbnVtYmVyIHdpbGwgcHVzaCB0aGUgY29sdW1uIHRvIHRoZSByaWdodCwgd2hpbGUgYSBuZWdhdGl2ZSBudW1iZXIgd2lsbCBwdWxsIGl0IHRvIHRoZSBsZWZ0LiBTZXQgdG8gY2VudGVyIHRvIGNlbnRlciB0aGUgY29sdW1uLlxyXG5AbWl4aW4gZ3JpZC1jb2x1bW4tcG9zaXRpb24oJHBvc2l0aW9uKSB7XHJcbiAgQGlmIHR5cGUtb2YoJHBvc2l0aW9uKSA9PSAnbnVtYmVyJyB7XHJcbiAgICAkb2Zmc2V0OiBwZXJjZW50YWdlKCRwb3NpdGlvbiAvICRncmlkLWNvbHVtbi1jb3VudCk7XHJcblxyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgI3skZ2xvYmFsLWxlZnR9OiAkb2Zmc2V0O1xyXG4gIH1cclxuICBAZWxzZSBpZiAkcG9zaXRpb24gPT0gY2VudGVyIHtcclxuICAgICYsICY6bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKSB7XHJcbiAgICAgIGZsb2F0OiBub25lO1xyXG4gICAgICBjbGVhcjogYm90aDtcclxuICAgIH1cclxuICAgIG1hcmdpbi1yaWdodDogYXV0bztcclxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gIH1cclxuICBAZWxzZSB7XHJcbiAgICBAd2FybiAnV3Jvbmcgc3ludGF4IGZvciBncmlkLWNvbHVtbi1wb3NpdGlvbigpLiBFbnRlciBhIHBvc2l0aXZlIG9yIG5lZ2F0aXZlIG51bWJlciwgb3IgY2VudGVyLic7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gUmVzZXQgYSBwb3NpdGlvbiBkZWZpbml0aW9uLlxyXG5AbWl4aW4gZ3JpZC1jb2x1bW4tdW5wb3NpdGlvbiB7XHJcbiAgcG9zaXRpb246IHN0YXRpYztcclxuICBmbG9hdDogJGdsb2JhbC1sZWZ0O1xyXG4gIG1hcmdpbi1yaWdodDogMDtcclxuICBtYXJnaW4tbGVmdDogMDtcclxufVxyXG5cclxuLy8vIE9mZnNldHMgYSBjb2x1bW4gdG8gdGhlIHJpZ2h0IGJ5IGAkbmAgY29sdW1ucy5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfExpc3R9ICRuIC0gV2lkdGggdG8gb2Zmc2V0IGJ5LiBZb3UgY2FuIHBhc3MgaW4gYW55IHZhbHVlIGFjY2VwdGVkIGJ5IHRoZSBgZ3JpZC1jb2x1bW4oKWAgbWl4aW4sIHN1Y2ggYXMgYDZgLCBgNTAlYCwgb3IgYDEgb2YgMmAuXHJcbkBtaXhpbiBncmlkLWNvbHVtbi1vZmZzZXQoJG4pIHtcclxuICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiBncmlkLWNvbHVtbigkbik7XHJcbn1cclxuXHJcbi8vLyBEaXNhYmxlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZSBsYXN0IGNvbHVtbiBpbiBhIHJvdyBhbGlnbmluZyB0byB0aGUgb3Bwb3NpdGUgZWRnZS5cclxuQG1peGluIGdyaWQtY29sdW1uLWVuZCB7XHJcbiAgLy8gVGhpcyBleHRyYSBzcGVjaWZpY2l0eSBpcyByZXF1aXJlZCBmb3IgdGhlIHByb3BlcnR5IHRvIGJlIGFwcGxpZWRcclxuICAmOmxhc3QtY2hpbGQ6bGFzdC1jaGlsZCB7XHJcbiAgICBmbG9hdDogJGdsb2JhbC1sZWZ0O1xyXG4gIH1cclxufVxyXG5cclxuLy8vIFNob3J0aGFuZCBmb3IgYGdyaWQtY29sdW1uLXBvc2l0aW9uKClgLlxyXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLXBvc2l0aW9uXHJcbkBtaXhpbiBncmlkLWNvbC1wb3MoJHBvc2l0aW9uKSB7XHJcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tcG9zaXRpb24oJHBvc2l0aW9uKTtcclxufVxyXG5cclxuLy8vIFNob3J0aGFuZCBmb3IgYGdyaWQtY29sdW1uLXVucG9zaXRpb24oKWAuXHJcbi8vLyBAYWxpYXMgZ3JpZC1jb2x1bW4tdW5wb3NpdGlvblxyXG5AbWl4aW4gZ3JpZC1jb2wtdW5wb3Mge1xyXG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLXVucG9zaXRpb247XHJcbn1cclxuXHJcbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbi1vZmZzZXQoKWAuXHJcbi8vLyBAYWxpYXMgZ3JpZC1jb2x1bW4tb2Zmc2V0XHJcbkBtaXhpbiBncmlkLWNvbC1vZmYoJG4pIHtcclxuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1vZmZzZXQoJG4pO1xyXG59XHJcblxyXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4tZW5kKClgLlxyXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLWVuZFxyXG5AbWl4aW4gZ3JpZC1jb2wtZW5kIHtcclxuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1lbmQ7XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIGdyaWRcclxuLy8vL1xyXG5cclxuLy8vIFNldCB0aGUgZ3V0dGVycyBvbiBhIGNvbHVtblxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ8S2V5d29yZH0gJGd1dHRlciBbYXV0b11cclxuLy8vICAgU3BhY2luZyBiZXR3ZWVuIGNvbHVtbnMsIGFjY2VwdHMgbXVsdGlwbGUgdmFsdWVzOlxyXG4vLy8gICAtIEEgc2luZ2xlIHZhbHVlIHdpbGwgbWFrZSB0aGUgZ3V0dGVyIHRoYXQgZXhhY3Qgc2l6ZS5cclxuLy8vICAgLSBBIGJyZWFrcG9pbnQgbmFtZSB3aWxsIG1ha2UgdGhlIGd1dHRlciB0aGUgY29ycmVzcG9uZGluZyBzaXplIGluIHRoZSAkZ3V0dGVycyBtYXAuXHJcbi8vLyAgIC0gXCJhdXRvXCIgd2lsbCBtYWtlIHRoZSBndXR0ZXIgcmVzcG9uc2l2ZSwgdXNpbmcgdGhlICRndXR0ZXJzIG1hcCB2YWx1ZXMuXHJcbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1jb2x1bW4tZ3V0dGVyXSAtIEd1dHRlciBtYXAgb3Igc2luZ2xlIHZhbHVlIHRvIHVzZS4gUmVzcG9uc2l2ZSBndXR0ZXIgc2V0dGluZ3MgYnkgZGVmYXVsdC5cclxuQG1peGluIGdyaWQtY29sdW1uLWd1dHRlcihcclxuICAkZ3V0dGVyOiBhdXRvLFxyXG4gICRndXR0ZXJzOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXHJcbikge1xyXG4gIEBpbmNsdWRlIC16Zi1icmVha3BvaW50LXZhbHVlKCRndXR0ZXIsICRndXR0ZXJzKSB7XHJcbiAgICAkcGFkZGluZzogcmVtLWNhbGMoJC16Zi1icC12YWx1ZSkgLyAyO1xyXG5cclxuICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nO1xyXG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcclxuICB9XHJcbn1cclxuXHJcbi8vLyBDb2xsYXBzZSB0aGUgZ3V0dGVycyBvbiBhIGNvbHVtbiBieSByZW1vdmluZyB0aGUgcGFkZGluZy4gKipOb3RlOioqIG9ubHkgdXNlIHRoaXMgbWl4aW4gd2l0aGluIGEgYnJlYWtwb2ludC4gVG8gY29sbGFwc2UgYSBjb2x1bW4ncyBndXR0ZXJzIG9uIGFsbCBzY3JlZW4gc2l6ZXMsIHVzZSB0aGUgYCRndXR0ZXJgIHBhcmFtZXRlciBvZiB0aGUgYGdyaWQtY29sdW1uKClgIG1peGluIGluc3RlYWQuXHJcbkBtaXhpbiBncmlkLWNvbHVtbi1jb2xsYXBzZSB7XHJcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tZ3V0dGVyKDApO1xyXG59XHJcblxyXG4vLy8gVW4tY29sbGFwc2UgdGhlIGd1dHRlcnMgb24gYSBjb2x1bW4gYnkgcmUtYWRkaW5nIHRoZSBwYWRkaW5nLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZ3V0dGVyIFskZ3JpZC1jb2x1bW4tZ3V0dGVyXSAtIFNwYWNpbmcgYmV0d2VlbiBjb2x1bW5zLlxyXG5AbWl4aW4gZ3JpZC1jb2x1bW4tdW5jb2xsYXBzZSgkZ3V0dGVyOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyKSB7XHJcbiAgQHdhcm4gJ1RoaXMgbWl4aW4gaXMgYmVpbmcgcmVwbGFjZWQgYnkgZ3JpZC1jb2x1bW4tZ3V0dGVyKCkuIGdyaWQtY29sdW1uLXVuY29sbGFwc2UoKSB3aWxsIGJlIHJlbW92ZWQgaW4gRm91bmRhdGlvbiA2LjQuJztcclxuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1ndXR0ZXIoJGd1dHRlcnM6ICRndXR0ZXIpO1xyXG59XHJcblxyXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4tZ3V0dGVyKClgLlxyXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLWd1dHRlclxyXG5AbWl4aW4gZ3JpZC1jb2wtZ3V0dGVyKFxyXG4gICRndXR0ZXI6IGF1dG8sXHJcbiAgJGd1dHRlcnM6ICRncmlkLWNvbHVtbi1ndXR0ZXJcclxuKSB7XHJcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tZ3V0dGVyKCRndXR0ZXIsICRndXR0ZXJzKTtcclxufVxyXG5cclxuLy8vIFNob3J0aGFuZCBmb3IgYGdyaWQtY29sdW1uLWNvbGxhcHNlKClgLlxyXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLWNvbGxhcHNlXHJcbkBtaXhpbiBncmlkLWNvbC1jb2xsYXBzZSB7XHJcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tY29sbGFwc2U7XHJcbn1cclxuXHJcbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbi11bmNvbGxhcHNlKClgLlxyXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLXVuY29sbGFwc2VcclxuQG1peGluIGdyaWQtY29sLXVuY29sbGFwc2UoJGd1dHRlcjogJGdyaWQtY29sdW1uLWd1dHRlcikge1xyXG4gIEB3YXJuICdUaGlzIG1peGluIGlzIGJlaW5nIHJlcGxhY2VkIGJ5IGdyaWQtY29sLWd1dHRlcigpLiBncmlkLWNvbC11bmNvbGxhcHNlKCkgd2lsbCBiZSByZW1vdmVkIGluIEZvdW5kYXRpb24gNi40Lic7XHJcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tdW5jb2xsYXBzZSgkZ3V0dGVyKTtcclxufVxyXG5cclxuLy8vIFNldHMgYm90dG9tIG1hcmdpbiBvbiBncmlkIGNvbHVtbnMgdG8gbWF0Y2ggZ3V0dGVyc1xyXG4vLy8gQHBhcmFtIHtOdW1iZXJ8S2V5d29yZH0gJG1hcmdpbiBbYXV0b11cclxuLy8vICAgVGhlIGJvdHRvbSBtYXJnaW4gb24gZ3JpZCBjb2x1bW5zLCBhY2NlcHRzIG11bHRpcGxlIHZhbHVlczpcclxuLy8vICAgLSBBIHNpbmdsZSB2YWx1ZSB3aWxsIG1ha2UgdGhlIG1hcmdpbiB0aGF0IGV4YWN0IHNpemUuXHJcbi8vLyAgIC0gQSBicmVha3BvaW50IG5hbWUgd2lsbCBtYWtlIHRoZSBtYXJnaW4gdGhlIGNvcnJlc3BvbmRpbmcgc2l6ZSBpbiB0aGUgJG1hcmdpbnMgbWFwLlxyXG4vLy8gICAtIFwiYXV0b1wiIHdpbGwgbWFrZSB0aGUgbWFyZ2luIHJlc3BvbnNpdmUsIHVzaW5nIHRoZSAkbWFyZ2lucyBtYXAgdmFsdWVzLlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkbWFyZ2lucyBbJGdyaWQtY29sdW1uLWd1dHRlcl0gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIHRvIHVzZS4gUmVzcG9uc2l2ZSBndXR0ZXIgc2V0dGluZ3MgYnkgZGVmYXVsdC5cclxuQG1peGluIGdyaWQtY29sdW1uLW1hcmdpbiAoXHJcbiAgJG1hcmdpbjogYXV0byxcclxuICAkbWFyZ2luczogJGdyaWQtY29sdW1uLWd1dHRlclxyXG4pIHtcclxuICBAaW5jbHVkZSAtemYtYnJlYWtwb2ludC12YWx1ZSgkbWFyZ2luLCAkbWFyZ2lucykge1xyXG4gICAgJG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKCQtemYtYnAtdmFsdWUpO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi1ib3R0b207XHJcblxyXG4gICAgPiA6bGFzdC1jaGlsZCB7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBncmlkXHJcbi8vLy9cclxuXHJcbi8vLyBPdXRwdXRzIENTUyBjbGFzc2VzIGZvciB0aGUgZ3JpZC5cclxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxyXG5AbWl4aW4gZm91bmRhdGlvbi1ncmlkKFxyXG4gICRyb3c6ICdyb3cnLFxyXG4gICRjb2x1bW46ICdjb2x1bW4nLFxyXG4gICRjb2x1bW4tcm93OiAnY29sdW1uLXJvdycsXHJcbiAgJGd1dHRlcjogJ2d1dHRlcicsXHJcbiAgJHB1c2g6ICdwdXNoJyxcclxuICAkcHVsbDogJ3B1bGwnLFxyXG4gICRjZW50ZXI6ICdjZW50ZXJlZCcsXHJcbiAgJHVuY2VudGVyOiAndW5jZW50ZXJlZCcsXHJcbiAgJGNvbGxhcHNlOiAnY29sbGFwc2UnLFxyXG4gICR1bmNvbGxhcHNlOiAndW5jb2xsYXBzZScsXHJcbiAgJG9mZnNldDogJ29mZnNldCcsXHJcbiAgJGVuZDogJ2VuZCcsXHJcbiAgJGV4cGFuZGVkOiAnZXhwYW5kZWQnLFxyXG4gICRibG9jazogJ2Jsb2NrJ1xyXG4pIHtcclxuICAvLyBSb3dcclxuICAuI3skcm93fSB7XHJcbiAgICBAaW5jbHVkZSBncmlkLXJvdztcclxuXHJcbiAgICAvLyBDb2xsYXBzaW5nXHJcbiAgICAmLiN7JGNvbGxhcHNlfSB7XHJcbiAgICAgID4gLiN7JGNvbHVtbn0ge1xyXG4gICAgICAgIEBpbmNsdWRlIGdyaWQtY29sLWNvbGxhcHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTmVzdGluZ1xyXG4gICAgJiAuI3skcm93fSB7XHJcbiAgICAgIEBpbmNsdWRlIGdyaWQtcm93LW5lc3QoJGdyaWQtY29sdW1uLWd1dHRlcik7XHJcblxyXG4gICAgICAmLiN7JGNvbGxhcHNlfSB7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRXhwYW5kZWQgKGZ1bGwtd2lkdGgpIHJvd1xyXG4gICAgJi4jeyRleHBhbmRlZH0ge1xyXG4gICAgICBAaW5jbHVkZSBncmlkLXJvdy1zaXplKGV4cGFuZCk7XHJcblxyXG4gICAgICAuI3skcm93fSB7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJjpub3QoLiN7JGV4cGFuZGVkfSkgLiN7JHJvd30ge1xyXG4gICAgICBAaW5jbHVkZSBncmlkLXJvdy1zaXplKGV4cGFuZCk7XHJcbiAgICB9XHJcblxyXG4gICAgQGlmIHR5cGUtb2YoJGdyaWQtY29sdW1uLWd1dHRlcikgPT0gJ21hcCcge1xyXG4gICAgICAvLyBTdGF0aWMgKHVucmVzcG9uc2l2ZSkgcm93IGd1dHRlcnNcclxuICAgICAgLy9cclxuICAgICAgQGVhY2ggJGJyZWFrcG9pbnQsICR2YWx1ZSBpbiAkZ3JpZC1jb2x1bW4tZ3V0dGVyIHtcclxuICAgICAgICAmLiN7JGd1dHRlcn0tI3skYnJlYWtwb2ludH0ge1xyXG4gICAgICAgICAgPiAuI3skY29sdW1ufSB7XHJcbiAgICAgICAgICAgIEBpbmNsdWRlIGdyaWQtY29sLWd1dHRlcigkdmFsdWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gQ29sdW1uXHJcbiAgLiN7JGNvbHVtbn0ge1xyXG4gICAgQGluY2x1ZGUgZ3JpZC1jb2w7XHJcblxyXG4gICAgQGlmICRncmlkLWNvbHVtbi1hbGlnbi1lZGdlIHtcclxuICAgICAgJi4jeyRlbmR9IHtcclxuICAgICAgICBAaW5jbHVkZSBncmlkLWNvbC1lbmQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIENvbHVtbiByb3dcclxuICAvLyBUaGUgZG91YmxlIC5yb3cgY2xhc3MgaXMgbmVlZGVkIHRvIGJ1bXAgdXAgdGhlIHNwZWNpZmljaXR5XHJcbiAgLiN7JGNvbHVtbn0uI3skcm93fS4jeyRyb3d9IHtcclxuICAgIGZsb2F0OiBub25lO1xyXG4gIH1cclxuXHJcbiAgLy8gVG8gcHJvcGVybHkgbmVzdCBhIGNvbHVtbiByb3csIHBhZGRpbmcgYW5kIG1hcmdpbiBpcyByZW1vdmVkXHJcbiAgLiN7JHJvd30gLiN7JGNvbHVtbn0uI3skcm93fS4jeyRyb3d9IHtcclxuICAgIG1hcmdpbi1yaWdodDogMDtcclxuICAgIG1hcmdpbi1sZWZ0OiAwO1xyXG4gICAgcGFkZGluZy1yaWdodDogMDtcclxuICAgIHBhZGRpbmctbGVmdDogMDtcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQge1xyXG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2x1bW4tY291bnQge1xyXG4gICAgICAvLyBDb2x1bW4gd2lkdGhcclxuICAgICAgLiN7JC16Zi1zaXplfS0jeyRpfSB7XHJcbiAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtc2l6ZSgkaSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFNvdXJjZSBvcmRlcmluZ1xyXG4gICAgICBAaWYgJGkgPCAkZ3JpZC1jb2x1bW4tY291bnQge1xyXG4gICAgICAgIC4jeyQtemYtc2l6ZX0tI3skcHVzaH0tI3skaX0ge1xyXG4gICAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtcG9zKCRpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC4jeyQtemYtc2l6ZX0tI3skcHVsbH0tI3skaX0ge1xyXG4gICAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtcG9zKC0kaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBPZmZzZXRzXHJcbiAgICAgICRvOiAkaSAtIDE7XHJcblxyXG4gICAgICAuI3skLXpmLXNpemV9LSN7JG9mZnNldH0tI3skb30ge1xyXG4gICAgICAgIEBpbmNsdWRlIGdyaWQtY29sLW9mZigkbyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBCbG9jayBncmlkXHJcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRibG9jay1ncmlkLW1heCB7XHJcbiAgICAgIC4jeyQtemYtc2l6ZX0tdXAtI3skaX0ge1xyXG4gICAgICAgIEBpbmNsdWRlIGdyaWQtbGF5b3V0KCRpLCAnLiN7JGNvbHVtbn0nKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFJlc3BvbnNpdmUgY29sbGFwc2luZ1xyXG4gICAgLiN7JC16Zi1zaXplfS0jeyRjb2xsYXBzZX0ge1xyXG4gICAgICA+IC4jeyRjb2x1bW59IHsgQGluY2x1ZGUgZ3JpZC1jb2wtY29sbGFwc2U7IH1cclxuXHJcbiAgICAgIC4jeyRyb3d9IHtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuI3skZXhwYW5kZWR9LiN7JHJvd30gLiN7JC16Zi1zaXplfS0jeyRjb2xsYXBzZX0uI3skcm93fSB7XHJcbiAgICAgIG1hcmdpbi1yaWdodDogMDtcclxuICAgICAgbWFyZ2luLWxlZnQ6IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLiN7JC16Zi1zaXplfS0jeyR1bmNvbGxhcHNlfSB7XHJcbiAgICAgID4gLiN7JGNvbHVtbn0geyBAaW5jbHVkZSBncmlkLWNvbC1ndXR0ZXIoJC16Zi1zaXplKTsgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFBvc2l0aW9uaW5nXHJcbiAgICAuI3skLXpmLXNpemV9LSN7JGNlbnRlcn0ge1xyXG4gICAgICBAaW5jbHVkZSBncmlkLWNvbC1wb3MoY2VudGVyKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBHdXR0ZXIgYWRqdXN0bWVudFxyXG4gICAgLiN7JC16Zi1zaXplfS0jeyR1bmNlbnRlcn0sXHJcbiAgICAuI3skLXpmLXNpemV9LSN7JHB1c2h9LTAsXHJcbiAgICAuI3skLXpmLXNpemV9LSN7JHB1bGx9LTAge1xyXG4gICAgICBAaW5jbHVkZSBncmlkLWNvbC11bnBvcztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIEJsb2NrIGdyaWQgY29sdW1uc1xyXG4gIC4jeyRjb2x1bW59LSN7JGJsb2NrfSB7XHJcbiAgICBAaW5jbHVkZSBncmlkLWNvbHVtbi1tYXJnaW47XHJcbiAgfVxyXG5cclxuICBAaWYgJGNvbHVtbiA9PSAnY29sdW1uJyBhbmQgaGFzLXZhbHVlKCRncmlkLWNvbHVtbi1hbGlhcykge1xyXG4gICAgLiN7JGdyaWQtY29sdW1uLWFsaWFzfSB7XHJcbiAgICAgIC8vIHNhc3MtbGludDpkaXNhYmxlLWJsb2NrIHBsYWNlaG9sZGVyLWluLWV4dGVuZFxyXG4gICAgICBAZXh0ZW5kIC5jb2x1bW47XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBncmlkXHJcbi8vLy9cclxuXHJcbi8vLyBTaXplcyBjaGlsZCBlbGVtZW50cyBzbyB0aGF0IGAkbmAgbnVtYmVyIG9mIGl0ZW1zIGFwcGVhciBvbiBlYWNoIHJvdy5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJG4gLSBOdW1iZXIgb2YgZWxlbWVudHMgdG8gZGlzcGxheSBwZXIgcm93LlxyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzZWxlY3RvciBbJy5jb2x1bW4nXSAtIFNlbGVjdG9yKHMpIHRvIHVzZSBmb3IgY2hpbGQgZWxlbWVudHMuXHJcbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkZ3V0dGVyXHJcbi8vLyAgIFRoZSBndXR0ZXIgdG8gYXBwbHkgdG8gY2hpbGQgZWxlbWVudHMuIEFjY2VwdHMgbXVsdGlwbGUgdmFsdWVzOlxyXG4vLy8gICAtICRncmlkLWNvbHVtbi1ndXR0ZXIgd2lsbCB1c2UgdGhlIHZhbHVlcyBpbiB0aGUgJGdyaWQtY29sdW1uLWd1dHRlciBtYXAsIGluY2x1ZGluZyBicmVha3BvaW50IHNpemVzLlxyXG4vLy8gICAtIEEgZml4ZWQgbnVtZXJpYyB2YWx1ZSB3aWxsIGFwcGx5IHRoaXMgZ3V0dGVyIHRvIGFsbCBicmVha3BvaW50cy5cclxuQG1peGluIGdyaWQtbGF5b3V0KFxyXG4gICRuLFxyXG4gICRzZWxlY3RvcjogJy5jb2x1bW4nLFxyXG4gICRndXR0ZXI6IG51bGxcclxuKSB7XHJcbiAgJiA+ICN7JHNlbGVjdG9yfSB7XHJcbiAgICBmbG9hdDogJGdsb2JhbC1sZWZ0O1xyXG4gICAgd2lkdGg6IHBlcmNlbnRhZ2UoMS8kbik7XHJcblxyXG4gICAgLy8gSWYgYSAkZ3V0dGVyIHZhbHVlIGlzIHBhc3NlZFxyXG4gICAgQGlmKCRndXR0ZXIpIHtcclxuICAgICAgLy8gR3V0dGVyc1xyXG4gICAgICBAaWYgdHlwZS1vZigkZ3V0dGVyKSA9PSAnbWFwJyB7XHJcbiAgICAgICAgQGVhY2ggJGJyZWFrcG9pbnQsICR2YWx1ZSBpbiAkZ3V0dGVyIHtcclxuICAgICAgICAgICRwYWRkaW5nOiByZW0tY2FsYygkdmFsdWUpIC8gMjtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRicmVha3BvaW50KSB7XHJcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nO1xyXG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBAZWxzZSBpZiB0eXBlLW9mKCRndXR0ZXIpID09ICdudW1iZXInIGFuZCBzdHJpcC11bml0KCRndXR0ZXIpID4gMCB7XHJcbiAgICAgICAgJHBhZGRpbmc6IHJlbS1jYWxjKCRndXR0ZXIpIC8gMjtcclxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZztcclxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJjpudGgtb2YtdHlwZSgxbikge1xyXG4gICAgICBjbGVhcjogbm9uZTtcclxuICAgIH1cclxuXHJcbiAgICAmOm50aC1vZi10eXBlKCN7JG59bisxKSB7XHJcbiAgICAgIGNsZWFyOiBib3RoO1xyXG4gICAgfVxyXG5cclxuICAgICY6bGFzdC1jaGlsZCB7XHJcbiAgICAgIGZsb2F0OiAkZ2xvYmFsLWxlZnQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gQWRkcyBleHRyYSBDU1MgdG8gYmxvY2sgZ3JpZCBjaGlsZHJlbiBzbyB0aGUgbGFzdCBpdGVtcyBpbiB0aGUgcm93IGNlbnRlciBhdXRvbWF0aWNhbGx5LiBBcHBseSB0aGlzIHRvIHRoZSBjb2x1bW5zLCBub3QgdGhlIHJvdy5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJG4gLSBOdW1iZXIgb2YgaXRlbXMgdGhhdCBhcHBlYXIgaW4gZWFjaCByb3cuXHJcbkBtaXhpbiBncmlkLWxheW91dC1jZW50ZXItbGFzdCgkbikge1xyXG4gIEBmb3IgJGkgZnJvbSAxIHRvICRuIHtcclxuICAgIEBpZiAkaSA9PSAxIHtcclxuICAgICAgJjpudGgtY2hpbGQoI3skbn1uKzEpOmxhc3QtY2hpbGQge1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAoMTAwIC0gMTAwLyRuICogJGkpIC8gMiAqIDElO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBAZWxzZSB7XHJcbiAgICAgICY6bnRoLWNoaWxkKCN7JG59bisxKTpudGgtbGFzdC1jaGlsZCgjeyRpfSkge1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAoMTAwIC0gMTAwLyRuICogJGkpIC8gMiAqIDElO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBmbGV4LWdyaWRcclxuLy8vL1xyXG5cclxuLy8vIENyZWF0ZXMgYSBjb250YWluZXIgZm9yIGEgZmxleCBncmlkIHJvdy5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0tleXdvcmR8TGlzdH0gJGJlaGF2aW9yIFtudWxsXVxyXG4vLy8gICBNb2RpZmljYXRpb25zIHRvIHRoZSBkZWZhdWx0IGdyaWQgc3R5bGVzLiBgbmVzdGAgaW5kaWNhdGVzIHRoZSByb3cgd2lsbCBiZSBwbGFjZWQgaW5zaWRlIGFub3RoZXIgcm93LiBgY29sbGFwc2VgIGluZGljYXRlcyB0aGF0IHRoZSBjb2x1bW5zIGluc2lkZSB0aGlzIHJvdyB3aWxsIG5vdCBoYXZlIHBhZGRpbmcuIGBuZXN0IGNvbGxhcHNlYCBjb21iaW5lcyBib3RoIGJlaGF2aW9ycy5cclxuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICRzaXplIFskZ3JpZC1yb3ctd2lkdGhdIE1heGltdW0gc2l6ZSBvZiB0aGUgcm93LiBTZXQgdG8gYGV4cGFuZGAgdG8gbWFrZSB0aGUgcm93IHRha2luZyB0aGUgZnVsbCB3aWR0aC5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkY29sdW1ucyBbbnVsbF0gLSBOdW1iZXIgb2YgY29sdW1ucyB0byB1c2UgZm9yIHRoaXMgcm93LiBJZiBzZXQgdG8gYG51bGxgICh0aGUgZGVmYXVsdCksIHRoZSBnbG9iYWwgY29sdW1uIGNvdW50IHdpbGwgYmUgdXNlZC5cclxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGJhc2UgW3RydWVdIC0gU2V0IHRvIGBmYWxzZWAgdG8gcHJldmVudCBiYXNpYyBzdHlsZXMgZnJvbSBiZWluZyBvdXRwdXQuIFVzZWZ1bCBpZiB5b3UncmUgY2FsbGluZyB0aGlzIG1peGluIG9uIHRoZSBzYW1lIGVsZW1lbnQgdHdpY2UsIGFzIGl0IHByZXZlbnRzIGR1cGxpY2F0ZSBDU1Mgb3V0cHV0LlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtY29sdW1uLWd1dHRlcl0gLSBHdXR0ZXIgbWFwIG9yIHNpbmdsZSB2YWx1ZSB0byB1c2Ugd2hlbiBpbnZlcnRpbmcgbWFyZ2lucywgaW4gY2FzZSB0aGUgcm93IGlzIG5lc3RlZC4gUmVzcG9uc2l2ZSBndXR0ZXIgc2V0dGluZ3MgYnkgZGVmYXVsdC5cclxuQG1peGluIGZsZXgtZ3JpZC1yb3coXHJcbiAgJGJlaGF2aW9yOiBudWxsLFxyXG4gICRzaXplOiAkZ3JpZC1yb3ctd2lkdGgsXHJcbiAgJGNvbHVtbnM6IG51bGwsXHJcbiAgJGJhc2U6IHRydWUsXHJcbiAgJHdyYXA6IHRydWUsXHJcbiAgJGd1dHRlcnM6ICRncmlkLWNvbHVtbi1ndXR0ZXJcclxuKSB7XHJcbiAgJG1hcmdpbjogYXV0bztcclxuICAkd3JhcDogaWYoJHdyYXAsIHdyYXAsIG5vd3JhcCk7XHJcblxyXG4gIEBpZiBpbmRleCgkYmVoYXZpb3IsIG5lc3QpICE9IG51bGwge1xyXG4gICAgQGluY2x1ZGUgZ3JpZC1yb3ctbmVzdCgkZ3V0dGVycyk7XHJcblxyXG4gICAgQGlmIGluZGV4KCRiZWhhdmlvciwgY29sbGFwc2UpICE9IG51bGwge1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xyXG4gICAgfVxyXG4gIH1cclxuICBAZWxzZSB7XHJcbiAgICBAaW5jbHVkZSBncmlkLXJvdy1zaXplKCRzaXplKTtcclxuICAgIG1hcmdpbi1yaWdodDogYXV0bztcclxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gIH1cclxuXHJcbiAgQGlmICRiYXNlIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWZsb3c6IHJvdyAkd3JhcDtcclxuICB9XHJcblxyXG4gIEBpZiAkY29sdW1ucyAhPSBudWxsIHtcclxuICAgIEBpbmNsdWRlIGdyaWQtY29udGV4dCgkY29sdW1ucywgJGJhc2UpIHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gQ2FsY3VsYXRlcyB0aGUgYGZsZXhgIHByb3BlcnR5IGZvciBhIGZsZXggZ3JpZCBjb2x1bW4uIEl0IGFjY2VwdHMgYWxsIG9mIHRoZSBzYW1lIHZhbHVlcyBhcyB0aGUgYmFzaWMgYGdyaWQtY29sdW1uKClgIGZ1bmN0aW9uLCBhbG9uZyB3aXRoIHR3byBleHRyYXM6XHJcbi8vLyAgIC0gYGV4cGFuZGAgKHRoZSBkZWZhdWx0KSB3aWxsIG1ha2UgdGhlIGNvbHVtbiBleHBhbmQgdG8gZmlsbCBzcGFjZS5cclxuLy8vICAgLSBgc2hyaW5rYCB3aWxsIG1ha2UgdGhlIGNvbHVtbiBjb250cmFjdCwgc28gaXQgb25seSB0YWtlcyB1cCB0aGUgaG9yaXpvbnRhbCBzcGFjZSBpdCBuZWVkcy5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge01peGVkfSAkY29sdW1ucyBbZXhwYW5kXSAtIFdpZHRoIG9mIHRoZSBjb2x1bW4uXHJcbkBmdW5jdGlvbiBmbGV4LWdyaWQtY29sdW1uKCRjb2x1bW5zOiBleHBhbmQpIHtcclxuICAkZmxleDogMSAxIDBweDsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSB6ZXJvLXVuaXRcclxuXHJcbiAgQGlmICRjb2x1bW5zID09IHNocmluayB7XHJcbiAgICAkZmxleDogMCAwIGF1dG87XHJcbiAgfVxyXG4gIEBlbHNlIGlmICRjb2x1bW5zICE9IGV4cGFuZCB7XHJcbiAgICAkZmxleDogMCAwIGdyaWQtY29sdW1uKCRjb2x1bW5zKTtcclxuICB9XHJcblxyXG4gIEByZXR1cm4gJGZsZXg7XHJcbn1cclxuXHJcbi8vLyBDcmVhdGVzIGEgY29sdW1uIGZvciBhIGZsZXggZ3JpZC4gQnkgZGVmYXVsdCwgdGhlIGNvbHVtbiB3aWxsIHN0cmV0Y2ggdG8gdGhlIGZ1bGwgd2lkdGggb2YgaXRzIGNvbnRhaW5lciwgYnV0IHRoaXMgY2FuIGJlIG92ZXJyaWRkZW4gd2l0aCBzaXppbmcgY2xhc3Nlcywgb3IgYnkgdXNpbmcgdGhlIGB1bnN0YWNrYCBjbGFzcyBvbiB0aGUgcGFyZW50IGZsZXggcm93LlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TWl4ZWR9ICRjb2x1bW5zIFtleHBhbmRdIC0gV2lkdGggb2YgdGhlIGNvbHVtbi4gUmVmZXIgdG8gdGhlIGBmbGV4LWdyaWQtY29sdW1uKClgIGZ1bmN0aW9uIHRvIHNlZSBwb3NzaWJsZSB2YWx1ZXMuXHJcbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1jb2x1bW4tZ3V0dGVyXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgZm9yIGd1dHRlcnMgd2lkdGguIFNlZSB0aGUgYGdyaWQtY29sdW1uLWd1dHRlcmAgbWl4aW4uXHJcbkBtaXhpbiBmbGV4LWdyaWQtY29sdW1uKFxyXG4gICRjb2x1bW5zOiBleHBhbmQsXHJcbiAgJGd1dHRlcnM6ICRncmlkLWNvbHVtbi1ndXR0ZXJcclxuKSB7XHJcbiAgLy8gQmFzZSBwcm9wZXJ0aWVzXHJcbiAgQGluY2x1ZGUgZmxleC1ncmlkLXNpemUoJGNvbHVtbnMpO1xyXG5cclxuICAvLyBHdXR0ZXJzXHJcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tZ3V0dGVyKCRndXR0ZXJzOiAkZ3V0dGVycyk7XHJcblxyXG4gIC8vIGZpeGVzIHJlY2VudCBDaHJvbWUgdmVyc2lvbiBub3QgbGltaXRpbmcgY2hpbGQgd2lkdGhcclxuICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zNDkzNDU4Ni93aGl0ZS1zcGFjZS1ub3dyYXAtYW5kLWZsZXhib3gtZGlkLW5vdC13b3JrLWluLWNocm9tZVxyXG4gIEBpZiAkY29sdW1ucyA9PSBleHBhbmQge1xyXG4gICAgbWluLXdpZHRoOiAwO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIENyZWF0ZXMgYSBibG9jayBncmlkIGZvciBhIGZsZXggZ3JpZCByb3cuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRuIC0gTnVtYmVyIG9mIGNvbHVtbnMgdG8gZGlzcGxheSBvbiBlYWNoIHJvdy5cclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc2VsZWN0b3IgLSBTZWxlY3RvciB0byB1c2UgdG8gdGFyZ2V0IGNvbHVtbnMgd2l0aGluIHRoZSByb3cuXHJcbkBtaXhpbiBmbGV4LWdyaWQtbGF5b3V0KFxyXG4gICRuLFxyXG4gICRzZWxlY3RvcjogJy5jb2x1bW4nXHJcbikge1xyXG4gIGZsZXgtd3JhcDogd3JhcDtcclxuXHJcbiAgPiAjeyRzZWxlY3Rvcn0ge1xyXG4gICAgJHBjdDogcGVyY2VudGFnZSgxLyRuKTtcclxuXHJcbiAgICBmbGV4OiAwIDAgJHBjdDtcclxuICAgIG1heC13aWR0aDogJHBjdDtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBDaGFuZ2VzIHRoZSB3aWR0aCBmbGV4IGdyaWQgY29sdW1uLlxyXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGNvbHVtbnMgW2V4cGFuZF0gLSBXaWR0aCBvZiB0aGUgY29sdW1uLiBSZWZlciB0byB0aGUgYGZsZXgtZ3JpZC1jb2x1bW4oKWAgZnVuY3Rpb24gdG8gc2VlIHBvc3NpYmxlIHZhbHVlcy5cclxuQG1peGluIGZsZXgtZ3JpZC1zaXplKCRjb2x1bW5zOiBudWxsKSB7XHJcbiAgJGNvbHVtbnM6ICRjb2x1bW5zIG9yIGV4cGFuZDtcclxuXHJcbiAgZmxleDogZmxleC1ncmlkLWNvbHVtbigkY29sdW1ucyk7XHJcblxyXG4gIC8vIG1heC13aWR0aCBmaXhlcyBJRSAxMC8xMSBub3QgcmVzcGVjdGluZyB0aGUgZmxleC1iYXNpcyBwcm9wZXJ0eVxyXG4gIEBpZiAkY29sdW1ucyAhPSBleHBhbmQgYW5kICRjb2x1bW5zICE9IHNocmluayB7XHJcbiAgICBtYXgtd2lkdGg6IGdyaWQtY29sdW1uKCRjb2x1bW5zKTtcclxuICB9XHJcbn1cclxuXHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1mbGV4LWdyaWQge1xyXG4gIC8vIFJvd1xyXG4gIC5yb3cge1xyXG4gICAgQGluY2x1ZGUgZmxleC1ncmlkLXJvdztcclxuXHJcbiAgICAvLyBOZXN0aW5nIGJlaGF2aW9yXHJcbiAgICAmIC5yb3cge1xyXG4gICAgICBAaW5jbHVkZSBmbGV4LWdyaWQtcm93KG5lc3QsICRiYXNlOiBmYWxzZSk7XHJcblxyXG4gICAgICAmLmNvbGxhcHNlIHtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBFeHBhbmRlZCByb3dcclxuICAgICYuZXhwYW5kZWQge1xyXG4gICAgICBAaW5jbHVkZSBncmlkLXJvdy1zaXplKGV4cGFuZCk7XHJcblxyXG4gICAgICAucm93IHtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmOm5vdCguZXhwYW5kZWQpIC5yb3cge1xyXG4gICAgICBAaW5jbHVkZSBncmlkLXJvdy1zaXplKGV4cGFuZCk7XHJcbiAgICB9XHJcblxyXG4gICAgJi5jb2xsYXBzZSB7XHJcbiAgICAgID4gLmNvbHVtbiB7XHJcbiAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtY29sbGFwc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBVbmRvIG5lZ2F0aXZlIG1hcmdpbnNcclxuICAgIC8vIEZyb20gY29sbGFwc2VkIGNoaWxkXHJcbiAgICAmLmlzLWNvbGxhcHNlLWNoaWxkLFxyXG4gICAgJi5jb2xsYXBzZSA+IC5jb2x1bW4gPiAucm93IHtcclxuICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xyXG4gICAgICBtYXJnaW4tbGVmdDogMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIENvbHVtblxyXG4gIC5jb2x1bW4ge1xyXG4gICAgQGluY2x1ZGUgZmxleC1ncmlkLWNvbHVtbjtcclxuICB9XHJcblxyXG4gIC8vIENvbHVtbiByb3dcclxuICAvLyBUaGUgZG91YmxlIC5yb3cgY2xhc3MgaXMgbmVlZGVkIHRvIGJ1bXAgdXAgdGhlIHNwZWNpZmljaXR5XHJcbiAgLmNvbHVtbi5yb3cucm93IHtcclxuICAgIGZsb2F0OiBub25lO1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgfVxyXG5cclxuICAvLyBUbyBwcm9wZXJseSBuZXN0IGEgY29sdW1uIHJvdywgcGFkZGluZyBhbmQgbWFyZ2luIGlzIHJlbW92ZWRcclxuICAucm93IC5jb2x1bW4ucm93LnJvdyB7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XHJcbiAgICBtYXJnaW4tbGVmdDogMDtcclxuICAgIHBhZGRpbmctcmlnaHQ6IDA7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50IHtcclxuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1uLWNvdW50IHtcclxuICAgICAgLy8gU2l6aW5nIChwZXJjZW50YWdlKVxyXG4gICAgICAuI3skLXpmLXNpemV9LSN7JGl9IHtcclxuICAgICAgICBmbGV4OiBmbGV4LWdyaWQtY29sdW1uKCRpKTtcclxuICAgICAgICBtYXgtd2lkdGg6IGdyaWQtY29sdW1uKCRpKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gT2Zmc2V0c1xyXG4gICAgICAkbzogJGkgLSAxO1xyXG5cclxuICAgICAgLiN7JC16Zi1zaXplfS1vZmZzZXQtI3skb30ge1xyXG4gICAgICAgIEBpbmNsdWRlIGdyaWQtY29sdW1uLW9mZnNldCgkbyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBCbG9jayBncmlkXHJcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRibG9jay1ncmlkLW1heCB7XHJcbiAgICAgIC4jeyQtemYtc2l6ZX0tdXAtI3skaX0ge1xyXG4gICAgICAgIEBpbmNsdWRlIGZsZXgtZ3JpZC1sYXlvdXQoJGkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQGlmICQtemYtc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XHJcbiAgICAgIC8vIFNpemluZyAoZXhwYW5kKVxyXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCQtemYtc2l6ZSkge1xyXG4gICAgICAgIC4jeyQtemYtc2l6ZX0tZXhwYW5kIHtcclxuICAgICAgICAgIGZsZXg6IGZsZXgtZ3JpZC1jb2x1bW4oKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIEF1dG8tc3RhY2tpbmcvdW5zdGFja2luZ1xyXG4gICAgICBAYXQtcm9vdCAod2l0aG91dDogbWVkaWEpIHtcclxuICAgICAgICAucm93LiN7JC16Zi1zaXplfS11bnN0YWNrIHtcclxuICAgICAgICAgID4gLmNvbHVtbiB7XHJcbiAgICAgICAgICAgIGZsZXg6IGZsZXgtZ3JpZC1jb2x1bW4oMTAwJSk7XHJcblxyXG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCQtemYtc2l6ZSkge1xyXG4gICAgICAgICAgICAgIGZsZXg6IGZsZXgtZ3JpZC1jb2x1bW4oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFJlc3BvbnNpdmUgY29sbGFwc2luZ1xyXG4gICAgLiN7JC16Zi1zaXplfS1jb2xsYXBzZSB7XHJcbiAgICAgID4gLmNvbHVtbiB7IEBpbmNsdWRlIGdyaWQtY29sLWNvbGxhcHNlOyB9XHJcbiAgICB9XHJcblxyXG4gICAgLiN7JC16Zi1zaXplfS11bmNvbGxhcHNlIHtcclxuICAgICAgPiAuY29sdW1uIHsgQGluY2x1ZGUgZ3JpZC1jb2wtZ3V0dGVyKCQtemYtc2l6ZSk7IH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFNpemluZyAoc2hyaW5rKVxyXG4gIC5zaHJpbmsge1xyXG4gICAgZmxleDogZmxleC1ncmlkLWNvbHVtbihzaHJpbmspO1xyXG4gICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gIH1cclxuXHJcbiAgLy8gQmxvY2sgZ3JpZCBjb2x1bW5zXHJcbiAgLmNvbHVtbi1ibG9jayB7XHJcbiAgICBAaW5jbHVkZSBncmlkLWNvbHVtbi1tYXJnaW47XHJcbiAgfVxyXG5cclxuICAuY29sdW1ucyB7XHJcbiAgICBAZXh0ZW5kIC5jb2x1bW47IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgcGxhY2Vob2xkZXItaW4tZXh0ZW5kXHJcblxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgeHktZ3JpZFxyXG4vLy8vXHJcblxyXG4vLy8gRW5hYmxlcyB0aGUgWFkgZ3JpZC5cclxuLy8vIEB0eXBlIEJvb2xlYW5cclxuJHh5LWdyaWQ6IHRydWUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gVGhlIG1heGltdW0gd2lkdGggb2YgYSBncmlkIGNvbnRhaW5lci5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kZ3JpZC1jb250YWluZXI6ICRnbG9iYWwtd2lkdGggIWRlZmF1bHQ7XHJcblxyXG4vLy8gVGhlIG51bWJlciBvZiBjb2x1bW5zIHVzZWQgaW4gdGhlIGdyaWQuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGdyaWQtY29sdW1uczogMTIgIWRlZmF1bHQ7XHJcblxyXG4vLy8gVGhlIGFtb3VudCBvZiBtYXJnaW4gYmV0d2VlbiBjZWxscyBhdCBkaWZmZXJlbnQgc2NyZWVuIHNpemVzIHdoZW4gdXNpbmcgdGhlIG1hcmdpbiBncmlkLiBUbyB1c2UganVzdCBvbmUgc2l6ZSwgc2V0IHRoZSB2YXJpYWJsZSB0byBhIG51bWJlciBpbnN0ZWFkIG9mIGEgbWFwLlxyXG4vLy8gQHR5cGUgTWFwIHwgTGVuZ3RoXHJcbiRncmlkLW1hcmdpbi1ndXR0ZXJzOiAoXHJcbiAgc21hbGw6IDIwcHgsXHJcbiAgbWVkaXVtOiAzMHB4XHJcbikgIWRlZmF1bHQ7XHJcblxyXG4vLy8gVGhlIGFtb3VudCBvZiBwYWRkaW5nIGluIGNlbGxzIGF0IGRpZmZlcmVudCBzY3JlZW4gc2l6ZXMgd2hlbiB1c2luZyB0aGUgcGFkZGluZyBncmlkLiBUbyB1c2UganVzdCBvbmUgc2l6ZSwgc2V0IHRoZSB2YXJpYWJsZSB0byBhIG51bWJlciBpbnN0ZWFkIG9mIGEgbWFwLlxyXG4vLy8gQHR5cGUgTWFwIHwgTGVuZ3RoXHJcbiRncmlkLXBhZGRpbmctZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnMgIWRlZmF1bHQ7XHJcblxyXG4vLy8gVGhlIGFtb3VudCBvZiBwYWRkaW5nIHRvIHVzZSB3aGVuIHBhZGRpbmcgdGhlIGdyaWQtY29udGFpbmVyLlxyXG4vLy8gQHR5cGUgTWFwIHwgTGVuZ3RoXHJcbiRncmlkLWNvbnRhaW5lci1wYWRkaW5nOiAkZ3JpZC1wYWRkaW5nLWd1dHRlcnMgIWRlZmF1bHQ7XHJcblxyXG4vLy8gVGhlIG1heGltdW0gd2lkdGggdG8gYXBwbHkgdG8gYSBncmlkIGNvbnRhaW5lclxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRncmlkLWNvbnRhaW5lci1tYXg6ICRnbG9iYWwtd2lkdGggIWRlZmF1bHQ7XHJcblxyXG4vLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIGNlbGxzIGluIGFuIFhZIGJsb2NrIGdyaWQuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHh5LWJsb2NrLWdyaWQtbWF4OiA4ICFkZWZhdWx0O1xyXG5cclxuQGltcG9ydCAnZ3V0dGVycyc7XHJcbkBpbXBvcnQgJ2dyaWQnO1xyXG5AaW1wb3J0ICdjZWxsJztcclxuQGltcG9ydCAnZnJhbWUnO1xyXG5AaW1wb3J0ICdwb3NpdGlvbic7XHJcbkBpbXBvcnQgJ2xheW91dCc7XHJcbkBpbXBvcnQgJ2NvbGxhcHNlJztcclxuQGltcG9ydCAnY2xhc3Nlcyc7XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCB4eS1ncmlkXHJcbi8vLy9cclxuXHJcbi8vLyBDcmVhdGUgZ3V0dGVycyBmb3IgYSBjZWxsL2NvbnRhaW5lci5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1tYXJnaW4tZ3V0dGVyc10gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIGZvciBndXR0ZXJzLlxyXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZ3V0dGVyLXR5cGUgW21hcmdpbl0gLSBUeXBlIG9mIGd1dHRlciB0byBvdXRwdXQuIEFjY2VwdHMgZWl0aGVyIG1hcmdpbiBvciBwYWRkaW5nLlxyXG4vLy8gQHBhcmFtIHtMaXN0fSAkZ3V0dGVyLXBvc2l0aW9uIFtyaWdodCBsZWZ0XSAtIFRoZSBwb3NpdGlvbiB0byBhcHBseSBndXR0ZXJzIHRvLiBBY2NlcHRzIGB0b3BgLCBgYm90dG9tYCwgYGxlZnRgLCBgcmlnaHRgIGluIGFueSBjb21iaW5hdGlvbi5cclxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJG5lZ2F0aXZlIFtmYWxzZV0gLSBXaGV0aGVyIHRvIGFwcGx5IHRoZSBndXR0ZXIgYXMgYSBuZWdhdGl2ZSB2YWx1ZS4gQ29tbW9ubHkgdXNlZCBmb3IgbmVzdGVkIGdyaWRzLlxyXG5AbWl4aW4geHktZ3V0dGVycyhcclxuICAkZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnMsXHJcbiAgJGd1dHRlci10eXBlOiBtYXJnaW4sXHJcbiAgJGd1dHRlci1wb3NpdGlvbjogcmlnaHQgbGVmdCxcclxuICAkbmVnYXRpdmU6IGZhbHNlXHJcbikge1xyXG4gICRvcGVyYXRvcjogaWYoJG5lZ2F0aXZlLCAnLScsICcnKTtcclxuXHJcbiAgLy8gSWYgd2UgaGF2ZSBkZWNsYXJlZCBuZWdhdGl2ZSBndXR0ZXJzLCBmb3JjZSB0eXBlIHRvIGBtYXJnaW4uXHJcbiAgJGd1dHRlci10eXBlOiBpZigkbmVnYXRpdmUsICdtYXJnaW4nLCAkZ3V0dGVyLXR5cGUpO1xyXG5cclxuICAvLyBPdXRwdXQgb3VyIG1hcmdpbiBndXR0ZXJzLlxyXG4gIEBpZiAodHlwZS1vZigkZ3V0dGVycykgPT0gJ21hcCcpIHtcclxuICAgIEBpbmNsdWRlIC16Zi1icmVha3BvaW50LXZhbHVlKGF1dG8sICRndXR0ZXJzKSB7XHJcbiAgICAgICRndXR0ZXI6IHJlbS1jYWxjKCQtemYtYnAtdmFsdWUpIC8gMjtcclxuXHJcbiAgICAgIC8vIExvb3AgdGhyb3VnaCBlYWNoIGd1dHRlciBwb3NpdGlvblxyXG4gICAgICBAZWFjaCAkdmFsdWUgaW4gJGd1dHRlci1wb3NpdGlvbiB7XHJcbiAgICAgICAgI3skZ3V0dGVyLXR5cGV9LSN7JHZhbHVlfTogI3skb3BlcmF0b3J9JGd1dHRlcjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBAZWxzZWlmICh0eXBlLW9mKCRndXR0ZXJzKSA9PSAnbnVtYmVyJykge1xyXG4gICAgJGd1dHRlcjogcmVtLWNhbGMoJGd1dHRlcnMpIC8gMjtcclxuXHJcbiAgICAvLyBMb29wIHRocm91Z2ggZWFjaCBndXR0ZXIgcG9zaXRpb25cclxuICAgIEBlYWNoICR2YWx1ZSBpbiAkZ3V0dGVyLXBvc2l0aW9uIHtcclxuICAgICAgI3skZ3V0dGVyLXR5cGV9LSN7JHZhbHVlfTogI3skb3BlcmF0b3J9JGd1dHRlcjtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIHh5LWdyaWRcclxuLy8vL1xyXG5cclxuLy8vIENyZWF0ZXMgYSBtYXggd2lkdGggY29udGFpbmVyLCBkZXNpZ25lZCB0byBob3VzZSB5b3VyIGdyaWQgY29udGVudC5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJHdpZHRoIFskZ3JpZC1jb250YWluZXJdIC0gYSB3aWR0aCB0byBsaW1pdCB0aGUgY29udGFpbmVyIHRvLlxyXG5AbWl4aW4geHktZ3JpZC1jb250YWluZXIoXHJcbiAgJHdpZHRoOiAkZ3JpZC1jb250YWluZXIsXHJcbiAgJHBhZGRpbmc6ICRncmlkLWNvbnRhaW5lci1wYWRkaW5nXHJcbikge1xyXG4gIEBpbmNsdWRlIHh5LWd1dHRlcnMoJGd1dHRlcnM6ICRwYWRkaW5nLCAkZ3V0dGVyLXR5cGU6IHBhZGRpbmcpO1xyXG5cclxuICBtYXgtd2lkdGg6ICR3aWR0aDtcclxuICBtYXJnaW46IDAgYXV0bztcclxufVxyXG5cclxuLy8vIENyZWF0ZXMgYSBjb250YWluZXIgZm9yIHlvdXIgZmxleCBjZWxscy5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRkaXJlY3Rpb24gW2hvcml6b250YWxdIC0gRWl0aGVyIGhvcml6b250YWwgb3IgdmVydGljYWwgZGlyZWN0aW9uIG9mIGNlbGxzIHdpdGhpbi5cclxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHdyYXAgW3RydWVdIC0gSWYgdGhlIGNlbGxzIHdpdGhpbiBzaG91bGQgd3JhcCBvciBub3QuXHJcbkBtaXhpbiB4eS1ncmlkKFxyXG4gICRkaXJlY3Rpb246IGhvcml6b250YWwsXHJcbiAgJHdyYXA6IHRydWVcclxuKSB7XHJcbiAgJGRpcmVjdGlvbjogaWYoJGRpcmVjdGlvbiA9PSAnaG9yaXpvbnRhbCcsIHJvdywgY29sdW1uKTtcclxuICAkd3JhcDogaWYoJHdyYXAsIHdyYXAsIG5vd3JhcCk7XHJcblxyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1mbG93OiAkZGlyZWN0aW9uICR3cmFwO1xyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCB4eS1ncmlkXHJcbi8vLy9cclxuXHJcbi8vLyBDYWxjdWxhdGUgdGhlIHBlcmNlbnRhZ2Ugc2l6ZSBvZiBhIGNlbGwuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TGlzdH0gJHNpemUgWyRncmlkLWNvbHVtbnNdIC0gU2l6ZSB0byBtYWtlIHRoZSBjZWxsLiBZb3UgY2FuIHBhc3MgYSB2YWx1ZSBpbiBtdWx0aXBsZSBmb3JtYXRzLCBzdWNoIGFzIGA2YCwgYDUwJWAsIGAxIG9mIDIgb3IgMS8zLlxyXG5AZnVuY3Rpb24geHktY2VsbC1zaXplKFxyXG4gICRzaXplOiAkZ3JpZC1jb2x1bW5zXHJcbikge1xyXG4gIC8vIFBhcnNpbmcgcGVyY2VudHMsIGRlY2ltYWxzLCBuIG9mIG4gYW5kIG51bWJlciBjb3VudHNcclxuICBAaWYgdHlwZS1vZigkc2l6ZSkgPT0gJ251bWJlcicge1xyXG4gICAgQGlmIHVuaXQoJHNpemUpID09ICclJyB7XHJcbiAgICAgICRzaXplOiAkc2l6ZTtcclxuICAgIH1cclxuICAgIEBlbHNlIGlmICRzaXplIDwgMSB7XHJcbiAgICAgICRzaXplOiBwZXJjZW50YWdlKCRzaXplKTtcclxuICAgIH1cclxuICAgIEBlbHNlIHtcclxuICAgICAgJHNpemU6IHBlcmNlbnRhZ2UoJHNpemUgLyAkZ3JpZC1jb2x1bW5zKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFBhcnNpbmcgXCJuIG9mIG5cIiBvciBcIm4vblwiIGV4cHJlc3Npb25zXHJcbiAgQGVsc2VpZiB0eXBlLW9mKCRzaXplKSA9PSAnbGlzdCcge1xyXG4gICAgQGlmIGxlbmd0aCgkc2l6ZSkgIT0gMyB7XHJcbiAgICAgIEBlcnJvciAnV3Jvbmcgc3ludGF4IGZvciB4eS1jZWxsLXNpemUoKS4gVXNlIHRoZSBmb3JtYXQgXCJuIG9mIG5cIiBvciBcIm4vblwiLic7XHJcbiAgICB9XHJcbiAgICBAZWxzZSB7XHJcbiAgICAgICRzaXplOiBwZXJjZW50YWdlKG50aCgkc2l6ZSwgMSkgLyBudGgoJHNpemUsIDMpKTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8gQW55dGhpbmcgZWxzZSBpcyBpbmNvcnJlY3RcclxuICBAZWxzZSB7XHJcbiAgICBAZXJyb3IgJ1dyb25nIHN5bnRheCBmb3IgeHktY2VsbC1zaXplKCkuIFVzZSBhIG51bWJlciwgZGVjaW1hbCwgcGVyY2VudGFnZSwgb3IgXCJuIG9mIG5cIiAvIFwibi9uXCIuJztcclxuICB9XHJcblxyXG4gIEByZXR1cm4gJHNpemU7XHJcbn1cclxuXHJcbi8vLyBTZXRzIGJhc2UgZmxleCBwcm9wZXJ0aWVzIGZvciBjZWxscy5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIFtmdWxsXSAtIFRoZSBzaXplIG9mIHlvdXIgY2VsbC4gQWNjZXB0cyBgZnVsbGAsIGBhdXRvYCBvciBgc2hyaW5rYC5cclxuQG1peGluIHh5LWNlbGwtYmFzZSgkc2l6ZTogZnVsbCkge1xyXG4gIEBpZigkc2l6ZSA9PSAnZnVsbCcpIHtcclxuICAgIC8vIFRoaXMgaXMgdGhlIGJhc2Ugc3R5bGUsIGFsbCBvdGhlcnMgaW5oZXJpdCBmcm9tIGl0XHJcbiAgICBmbGV4OiAwIDAgYXV0bztcclxuICAgIG1pbi1oZWlnaHQ6IDBweDtcclxuICAgIG1pbi13aWR0aDogMHB4O1xyXG4gIH1cclxuICBAZWxzZWlmICgkc2l6ZSA9PSAnYXV0bycpIHtcclxuICAgIGZsZXg6IDEgMSAwcHg7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgemVyby11bml0XHJcbiAgfVxyXG4gIEBlbHNlaWYgKCRzaXplID09ICdzaHJpbmsnKSB7XHJcbiAgICBmbGV4OiAwIDAgYXV0bztcclxuICB9XHJcbn1cclxuXHJcbi8vLyBSZXNldHMgYSBjZWxscyB3aWR0aCAob3IgaGVpZ2h0IGlmIHZlcnRpY2FsIGlzIHRydWUpIGFzIHdlbGwgYXMgc3RyaXBzIGl0cyBndXR0ZXJzLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHZlcnRpY2FsIFtmYWxzZV0gLSBTZXQgdG8gdHJ1ZSB0byBvdXRwdXQgdmVydGljYWwgKGhlaWdodCkgc3R5bGVzIHJhdGhlciB0aGFuIHdpZHRocy5cclxuQG1peGluIHh5LWNlbGwtcmVzZXQoJHZlcnRpY2FsOiB0cnVlKSB7XHJcbiAgJGRpcmVjdGlvbjogaWYoJHZlcnRpY2FsID09IHRydWUsIHdpZHRoLCBoZWlnaHQpO1xyXG4gICN7JGRpcmVjdGlvbn06IGF1dG87XHJcbn1cclxuXHJcbi8vIFNldHMgb3VyIGNlbGwgd2lkdGhzIG9yIGhlaWdodHMgZGVwZW5kaW5nIG9uIGd1dHRlciB0eXBlLlxyXG5AbWl4aW4gLXh5LWNlbGwtcHJvcGVydGllcygkc2l6ZSwgJG1hcmdpbi1ndXR0ZXIsICR2ZXJ0aWNhbCkge1xyXG4gICRkaXJlY3Rpb246IGlmKCR2ZXJ0aWNhbCA9PSB0cnVlLCBoZWlnaHQsIHdpZHRoKTtcclxuICBAaWYoJHNpemUgPT0gJ2Z1bGwnKSB7XHJcbiAgICAkdmFsOiBpZigkbWFyZ2luLWd1dHRlciA9PSAwLCAxMDAlLCBjYWxjKDEwMCUgLSAje3JlbS1jYWxjKCRtYXJnaW4tZ3V0dGVyKX0pKTtcclxuICAgICN7JGRpcmVjdGlvbn06ICR2YWw7XHJcbiAgfVxyXG4gIEBlbHNlaWYgKCRzaXplID09ICdhdXRvJykge1xyXG4gICAgI3skZGlyZWN0aW9ufTogYXV0bztcclxuICAgICR2YWw6IGlmKCRtYXJnaW4tZ3V0dGVyID09IDAsIDEwMCUsIGNhbGMoMTAwJSAtICN7cmVtLWNhbGMoJG1hcmdpbi1ndXR0ZXIpfSkpO1xyXG4gIH1cclxuICBAZWxzZWlmICgkc2l6ZSA9PSAnc2hyaW5rJykge1xyXG4gICAgI3skZGlyZWN0aW9ufTogYXV0bztcclxuICB9XHJcbiAgQGVsc2Uge1xyXG4gICAgJHZhbDogaWYoJG1hcmdpbi1ndXR0ZXIgPT0gMCwgI3t4eS1jZWxsLXNpemUoJHNpemUpfSwgY2FsYygje3h5LWNlbGwtc2l6ZSgkc2l6ZSl9IC0gI3tyZW0tY2FsYygkbWFyZ2luLWd1dHRlcil9KSk7XHJcbiAgICAjeyRkaXJlY3Rpb259OiAkdmFsO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIENyZWF0ZXMgYSBjZWxsIGZvciB5b3VyIGdyaWQuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHNpemUgW2Z1bGxdIC0gVGhlIHNpemUgb2YgeW91ciBjZWxsLiBDYW4gYmUgYGZ1bGxgIChkZWZhdWx0KSBmb3IgMTAwJSB3aWR0aCwgYGF1dG9gIHRvIHVzZSB1cCBhdmFpbGFibGUgc3BhY2UgYW5kIGBzaHJpbmtgIHRvIHVzZSB1cCBvbmx5IHJlcXVpcmVkIHNwYWNlLlxyXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkZ3V0dGVyLW91dHB1dCBbdHJ1ZV0gLSBXaGV0aGVyIG9yIG5vdCB0byBvdXRwdXQgZ3V0dGVyc1xyXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtbWFyZ2luLWd1dHRlcnNdIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSBmb3IgZ3V0dGVycy5cclxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGd1dHRlci10eXBlIFttYXJnaW5dIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSBmb3IgZ3V0dGVycy5cclxuLy8vIEBwYXJhbSB7TGlzdH0gJGd1dHRlci1wb3NpdGlvbiBbcmlnaHQgbGVmdF0gLSBUaGUgcG9zaXRpb24gdG8gYXBwbHkgZ3V0dGVycyB0by4gQWNjZXB0cyBgdG9wYCwgYGJvdHRvbWAsIGBsZWZ0YCwgYHJpZ2h0YCBpbiBhbnkgY29tYmluYXRpb24uXHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgW251bGxdIC0gVGhlIG5hbWUgb2YgdGhlIGJyZWFrcG9pbnQgc2l6ZSBpbiB5b3VyIGd1dHRlcnMgbWFwIHRvIGdldCB0aGUgc2l6ZSBmcm9tLiBJZiB1c2luZyB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0aGlzIHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgdW5sZXNzIG1hbnVhbGx5IGVudGVyZWQuXHJcbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICR2ZXJ0aWNhbCBbZmFsc2VdIC0gU2V0IHRvIHRydWUgdG8gb3V0cHV0IHZlcnRpY2FsIChoZWlnaHQpIHN0eWxlcyByYXRoZXIgdGhhbiB3aWR0aHMuXHJcbkBtaXhpbiB4eS1jZWxsKFxyXG4gICRzaXplOiBmdWxsLFxyXG4gICRndXR0ZXItb3V0cHV0OiB0cnVlLFxyXG4gICRndXR0ZXJzOiAkZ3JpZC1tYXJnaW4tZ3V0dGVycyxcclxuICAkZ3V0dGVyLXR5cGU6IG1hcmdpbixcclxuICAkZ3V0dGVyLXBvc2l0aW9uOiByaWdodCBsZWZ0LFxyXG4gICRicmVha3BvaW50OiBudWxsLFxyXG4gICR2ZXJ0aWNhbDogZmFsc2VcclxuKSB7XHJcbiAgQGlmKCRicmVha3BvaW50ID09IG51bGwpIHtcclxuICAgIC8vIElmIGAkYnAtc2l6ZWAgaXMgYXZhaWxhYmxlIHRoZW4gdXNlIHRoaXMsIG90aGVyd2lzZSByZXZlcnQgdG8gdGhlIHNtYWxsZXN0IGJwLlxyXG4gICAgQGlmKHZhcmlhYmxlLWV4aXN0cygtemYtc2l6ZSkgYW5kIHR5cGUtb2YoJC16Zi1zaXplKSAhPSAnbnVtYmVyJykgYW5kICQtemYtc2l6ZSAhPSBudWxsIHtcclxuICAgICAgJGJyZWFrcG9pbnQ6ICQtemYtc2l6ZTtcclxuICAgIH1cclxuICAgIEBlbHNlIHtcclxuICAgICAgJGJyZWFrcG9pbnQ6ICQtemYtemVyby1icmVha3BvaW50O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gR2V0IG91ciBndXR0ZXJzIGZyb20gbWFwIGlmIGF2YWlsYWJsZSwgaWYgbm90IG1hcCBqdXN0IHJldHVybiB0aGUgdmFsdWUuXHJcbiAgJGd1dHRlcjogLXpmLWdldC1icC12YWwoJGd1dHRlcnMsICRicmVha3BvaW50KTtcclxuXHJcbiAgLy8gQmFzZSBmbGV4IHByb3BlcnRpZXNcclxuICBAaW5jbHVkZSB4eS1jZWxsLWJhc2UoJHNpemUpO1xyXG5cclxuICBAaWYoJGd1dHRlci10eXBlID09ICdtYXJnaW4nKSB7XHJcbiAgICBAaW5jbHVkZSAteHktY2VsbC1wcm9wZXJ0aWVzKCRzaXplLCAkZ3V0dGVyLCAkdmVydGljYWwpO1xyXG4gIH1cclxuICBAZWxzZSB7XHJcbiAgICBAaW5jbHVkZSAteHktY2VsbC1wcm9wZXJ0aWVzKCRzaXplLCAwLCAkdmVydGljYWwpO1xyXG4gIH1cclxuXHJcbiAgQGlmICRndXR0ZXItb3V0cHV0IHtcclxuICAgIEBpbmNsdWRlIHh5LWd1dHRlcnMoJGd1dHRlciwgJGd1dHRlci10eXBlLCAkZ3V0dGVyLXBvc2l0aW9uKTtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBDcmVhdGVzIGEgc2luZ2xlIGJyZWFrcG9pbnQgc2l6ZWQgZ3JpZC4gVXNlZCB0byBnZW5lcmF0ZSBvdXIgZ3JpZCBjbGFzc2VzLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICRzaXplIFtmdWxsXSAtIFRoZSBzaXplIG9mIHlvdXIgY2VsbC4gQ2FuIGJlIGBmdWxsYCAoZGVmYXVsdCkgZm9yIDEwMCUgd2lkdGgsIGBhdXRvYCB0byB1c2UgdXAgYXZhaWxhYmxlIHNwYWNlIGFuZCBgc2hyaW5rYCB0byB1c2UgdXAgb25seSByZXF1aXJlZCBzcGFjZS5cclxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGd1dHRlci1vdXRwdXQgW3RydWVdIC0gV2hldGhlciBvciBub3QgdG8gb3V0cHV0IGd1dHRlcnNcclxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLW1hcmdpbi1ndXR0ZXJzXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgZm9yIGd1dHRlcnMuXHJcbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRndXR0ZXItdHlwZSBbbWFyZ2luXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgZm9yIGd1dHRlcnMuXHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgW251bGxdIC0gVGhlIG5hbWUgb2YgdGhlIGJyZWFrcG9pbnQgc2l6ZSBpbiB5b3VyIGd1dHRlcnMgbWFwIHRvIGdldCB0aGUgc2l6ZSBmcm9tLiBJZiB1c2luZyB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0aGlzIHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgdW5sZXNzIG1hbnVhbGx5IGVudGVyZWQuXHJcbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICR2ZXJ0aWNhbCBbZmFsc2VdIC0gU2V0IHRvIHRydWUgdG8gb3V0cHV0IHZlcnRpY2FsIChoZWlnaHQpIHN0eWxlcyByYXRoZXIgdGhhbiB3aWR0aHMuXHJcbkBtaXhpbiB4eS1jZWxsLXN0YXRpYyhcclxuICAkc2l6ZTogZnVsbCxcclxuICAkZ3V0dGVyLW91dHB1dDogdHJ1ZSxcclxuICAkZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnMsXHJcbiAgJGd1dHRlci10eXBlOiBtYXJnaW4sXHJcbiAgJGJyZWFrcG9pbnQ6ICQtemYtemVyby1icmVha3BvaW50LFxyXG4gICR2ZXJ0aWNhbDogZmFsc2VcclxuKSB7XHJcblxyXG4gICRndXR0ZXI6IC16Zi1nZXQtYnAtdmFsKCRndXR0ZXJzLCAkYnJlYWtwb2ludCk7XHJcbiAgJGd1dHRlci1wb3NpdGlvbjogaWYoJHZlcnRpY2FsID09IHRydWUsIHRvcCBib3R0b20sIGxlZnQgcmlnaHQpO1xyXG5cclxuICBAaWYoJGd1dHRlci10eXBlID09ICdtYXJnaW4nKSB7XHJcbiAgICBAaW5jbHVkZSAteHktY2VsbC1wcm9wZXJ0aWVzKCRzaXplLCAkZ3V0dGVyLCAkdmVydGljYWwpO1xyXG4gIH1cclxuICBAZWxzZSB7XHJcbiAgICBAaW5jbHVkZSAteHktY2VsbC1wcm9wZXJ0aWVzKCRzaXplLCAwLCAkdmVydGljYWwpO1xyXG4gIH1cclxuXHJcbiAgLy8gSWYgd2Ugd2FudCB0byBvdXRwdXQgdGhlIGd1dHRlcnNcclxuICBAaWYoJGd1dHRlci1vdXRwdXQpIHtcclxuICAgIC8vIFRPRE86IEZpZ3VyZSBvdXQgaWYgd2UgbmVlZCB0byBwYXNzIGJyZWFrcG9pbnQgaW4gaGVyZSB0b28uXHJcbiAgICBAaW5jbHVkZSB4eS1ndXR0ZXJzKCRndXR0ZXIsICRndXR0ZXItdHlwZSwgJGd1dHRlci1wb3NpdGlvbik7XHJcbiAgfVxyXG59XHJcbiIsIi8vLyBNb2RpZmllcyBhIGdyaWQgdG8gZ2l2ZSBpdCBcImZyYW1lXCIgYmVoYXZpb3IgKG5vIG92ZXJmbG93LCBubyB3cmFwLCBzdHJldGNoIGJlaGF2aW9yKVxyXG4vLy9cclxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHZlcnRpY2FsIFtmYWxzZV0gLSBJcyBncmlkIHZlcnRpY2FsIG9yIGhvcml6b250YWwuIFNob3VsZCBtYXRjaCBncmlkLlxyXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkbmVzdGVkIFtmYWxzZV0gLSBJcyBncmlkIG5lc3RlZCBvciBub3QuIElmIG5lc3RlZCBpcyB0cnVlIHRoaXMgc2V0cyB0aGUgZnJhbWUgdG8gMTAwJSBoZWlnaHQsIG90aGVyd2lzZSB3aWxsIGJlIDEwMHZoLlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbbnVsbF0gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIGZvciBndXR0ZXJzLlxyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW50IFtudWxsXSAtIFRoZSBuYW1lIG9mIHRoZSBicmVha3BvaW50IHNpemUgaW4geW91ciBndXR0ZXJzIG1hcCB0byBnZXQgdGhlIHNpemUgZnJvbS5cclxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtYmFzZSBbdHJ1ZV0gLSBJbmNsdWRlIHRoZSBiYXNlIHN0eWxlcyB0aGF0IGRvbid0IHZhcnkgcGVyIGJyZWFrcG9pbnQuXHJcbkBtaXhpbiB4eS1ncmlkLWZyYW1lKFxyXG4gICR2ZXJ0aWNhbDogZmFsc2UsXHJcbiAgJG5lc3RlZDogZmFsc2UsXHJcbiAgJGd1dHRlcnM6IG51bGwsXHJcbiAgJGJyZWFrcG9pbnQ6IG51bGwsXHJcbiAgJGluY2x1ZGUtYmFzZTogdHJ1ZVxyXG4pIHtcclxuXHJcbiAgQGlmICRpbmNsdWRlLWJhc2Uge1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIGZsZXgtd3JhcDogbm93cmFwO1xyXG4gICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XHJcbiAgfVxyXG5cclxuICBAaWYgJGJyZWFrcG9pbnQgPT0gbnVsbCBhbmQgdHlwZS1vZigkZ3V0dGVycykgPT0gJ21hcCcge1xyXG4gICAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCgpIHtcclxuICAgICAgQGluY2x1ZGUgeHktZ3JpZC1mcmFtZSgkdmVydGljYWwsICRuZXN0ZWQsICRndXR0ZXJzLCAkLXpmLXNpemUsIGZhbHNlKTtcclxuICAgIH1cclxuICB9IEBlbHNlIHtcclxuICAgIC8vIEdldCBvdXIgZ3V0dGVycyBpZiBhcHBsaWNhYmxlXHJcbiAgICAkZ3V0dGVyOiAtemYtZ2V0LWJwLXZhbCgkZ3V0dGVycywgJGJyZWFrcG9pbnQpO1xyXG5cclxuICAgIC8vIElmIHdlIGhhdmUgYSBndXR0ZXIsIGFkZCBpdCB0byB0aGUgd2lkdGgvaGVpZ2h0XHJcbiAgICBAaWYgJGd1dHRlciB7XHJcbiAgICAgIEBpZiAkdmVydGljYWwgPT0gdHJ1ZSB7XHJcbiAgICAgICAgJHVuaXQ6IGlmKCRuZXN0ZWQgPT0gdHJ1ZSwgMTAwJSwgMTAwdmgpO1xyXG4gICAgICAgICRndXR0ZXI6IHJlbS1jYWxjKCRndXR0ZXIpO1xyXG4gICAgICAgIGhlaWdodDogY2FsYygjeyR1bml0fSArICN7JGd1dHRlcn0pO1xyXG4gICAgICB9IEBlbHNlIHtcclxuICAgICAgICAkdW5pdDogaWYoJG5lc3RlZCA9PSB0cnVlLCAxMDAlLCAxMDB2dyk7XHJcbiAgICAgICAgJGd1dHRlcjogcmVtLWNhbGMoJGd1dHRlcik7XHJcbiAgICAgICAgd2lkdGg6IGNhbGMoI3skdW5pdH0gKyAjeyRndXR0ZXJ9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgQGVsc2Uge1xyXG4gICAgICBAaWYgJHZlcnRpY2FsID09IHRydWUge1xyXG4gICAgICAgIGhlaWdodDogaWYoJG5lc3RlZCA9PSB0cnVlLCAxMDAlLCAxMDB2aCk7XHJcbiAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIHdpZHRoOiBpZigkbmVzdGVkID09IHRydWUsIDEwMCUsIDEwMHZ3KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8vIE1vZGlmaWVzIGEgY2VsbCB0byBnaXZlIGl0IFwiYmxvY2tcIiBiZWhhdmlvciAob3ZlcmZsb3cgYXV0bywgaW5lcnRpYWwgc2Nyb2xsaW5nKVxyXG4vLy9cclxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHZlcnRpY2FsIFtmYWxzZV0gLSBJcyBncmlkIHZlcnRpY2FsIG9yIGhvcml6b250YWwuIFNob3VsZCBtYXRjaCBncmlkLlxyXG5AbWl4aW4geHktY2VsbC1ibG9jayhcclxuICAkdmVydGljYWw6IGZhbHNlXHJcbikge1xyXG4gICRwcm9wZXJ0eTogaWYoJHZlcnRpY2FsID09IHRydWUsICdvdmVyZmxvdy15JywgJ292ZXJmbG93LXgnKTtcclxuXHJcbiAgQGlmICR2ZXJ0aWNhbCA9PSB0cnVlIHtcclxuICAgIG92ZXJmbG93LXk6IGF1dG87XHJcbiAgICBtYXgtaGVpZ2h0OiAxMDAlO1xyXG4gIH0gQGVsc2Uge1xyXG4gICAgb3ZlcmZsb3cteDogYXV0bztcclxuICAgIG1heC13aWR0aDogMTAwJTtcclxuICB9XHJcblxyXG4gIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcclxuICAtbXMtb3ZlcmZsb3ctc3R5cGU6IC1tcy1hdXRvaGlkaW5nLXNjcm9sbGJhcjtcclxufVxyXG5cclxuLy8vIENvbnRhaW5lciBmb3IgaW5zaWRlIGEgZ3JpZCBmcmFtZSBjb250YWluaW5nIG11bHRpcGxlIGJsb2Nrcy4gVHlwaWNhbGx5IHVzZWRcclxuLy8vIGFzIGEgbW9kaWZpZXIgZm9yIGEgYC5jZWxsYCB0byBhbGxvdyB0aGUgY2VsbCB0byBwYXNzIGFsb25nIGZsZXggc2l6aW5nXHJcbi8vLyBjb25zdHJhaW50cyAvIGZyb20gcGFyZW50cyB0byBjaGlsZHJlbi5cclxuQG1peGluIHh5LWNlbGwtYmxvY2stY29udGFpbmVyKCkge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBtYXgtaGVpZ2h0OiAxMDAlO1xyXG5cclxuICA+IC5ncmlkLXgge1xyXG4gICAgbWF4LWhlaWdodDogMTAwJTtcclxuICAgIGZsZXgtd3JhcDogbm93cmFwO1xyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgeHktZ3JpZFxyXG4vLy8vXHJcblxyXG4vLy8gT2Zmc2V0cyBhIGNvbHVtbiB0byB0aGUgcmlnaHQvYm90dG9tIGJ5IGAkbmAgY29sdW1ucy5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkbiAtIFNpemUgdG8gb2Zmc2V0IGJ5LiBZb3UgY2FuIHBhc3MgaW4gYW55IHZhbHVlIGFjY2VwdGVkIGJ5IHRoZSBgemYtY2VsbCgpYCBtaXhpbiwgc3VjaCBhcyBgNmAsIGA1MCVgLCBvciBgMSBvZiAyYC5cclxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHZlcnRpY2FsIFtmYWxzZV0gU2V0cyB0aGUgZGlyZWN0aW9uIG9mIHRoZSBvZmZzZXQuIElmIHNldCB0byB0cnVlIHdpbGwgYXBwbHkgbWFyZ2luLXRvcCBpbnN0ZWFkLlxyXG5AbWl4aW4geHktY2VsbC1vZmZzZXQoXHJcbiAkbixcclxuICRndXR0ZXJzOiAkZ3JpZC1tYXJnaW4tZ3V0dGVycyxcclxuICRndXR0ZXItdHlwZTogbWFyZ2luLFxyXG4gJGJyZWFrcG9pbnQ6ICQtemYtemVyby1icmVha3BvaW50LFxyXG4gJHZlcnRpY2FsOiBmYWxzZVxyXG4pIHtcclxuICAkZGlyZWN0aW9uOiBpZigkdmVydGljYWwsICd0b3AnLCAkZ2xvYmFsLWxlZnQpO1xyXG5cclxuICBAaW5jbHVkZSAtemYtYnJlYWtwb2ludC12YWx1ZSgkYnJlYWtwb2ludCwgJGd1dHRlcnMpIHtcclxuICAgICRndXR0ZXI6IHJlbS1jYWxjKCQtemYtYnAtdmFsdWUpIC8gMjtcclxuICAgICRzaXplOiBpZigkZ3V0dGVyLXR5cGUgPT0gJ21hcmdpbicsIGNhbGMoI3t4eS1jZWxsLXNpemUoJG4pfSArICN7JGd1dHRlcn0pLCAje3h5LWNlbGwtc2l6ZSgkbil9KTtcclxuXHJcbiAgICBtYXJnaW4tI3skZGlyZWN0aW9ufTogI3skc2l6ZX07XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCB4eS1ncmlkXHJcbi8vLy9cclxuXHJcbi8vLyBTaXplcyBjaGlsZCBlbGVtZW50cyBzbyB0aGF0IGAkbmAgbnVtYmVyIG9mIGl0ZW1zIGFwcGVhciBvbiBlYWNoIHJvdy5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJG4gLSBOdW1iZXIgb2YgZWxlbWVudHMgdG8gZGlzcGxheSBwZXIgcm93LlxyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzZWxlY3RvciBbJy5jZWxsJ10gLSBTZWxlY3RvcihzKSB0byB1c2UgZm9yIGNoaWxkIGVsZW1lbnRzLlxyXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkZ3V0dGVyLW91dHB1dCBbdHJ1ZV0gLSBXaGV0aGVyIG9yIG5vdCB0byBvdXRwdXQgZ3V0dGVyc1xyXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtbWFyZ2luLWd1dHRlcnNdIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSBmb3IgZ3V0dGVycy5cclxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGd1dHRlci10eXBlIFttYXJnaW5dIC0gVHlwZSBvZiBndXR0ZXIgdG8gb3V0cHV0LiBBY2NlcHRzIGBtYXJnaW5gIG9yIGBwYWRkaW5nYC5cclxuLy8vIEBwYXJhbSB7TGlzdH0gJGd1dHRlci1wb3NpdGlvbiBbcmlnaHQgbGVmdF0gLSBUaGUgcG9zaXRpb24gdG8gYXBwbHkgZ3V0dGVycyB0by4gQWNjZXB0cyBgdG9wYCwgYGJvdHRvbWAsIGBsZWZ0YCwgYHJpZ2h0YCBpbiBhbnkgY29tYmluYXRpb24uXHJcbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICR2ZXJ0aWNhbCBbZmFsc2VdIC0gU2V0IHRvIHRydWUgdG8gb3V0cHV0IHZlcnRpY2FsIChoZWlnaHQpIHN0eWxlcyByYXRoZXIgdGhhbiB3aWR0aHMuXHJcbkBtaXhpbiB4eS1ncmlkLWxheW91dChcclxuICAkbixcclxuICAkc2VsZWN0b3I6ICcuY2VsbCcsXHJcbiAgJGd1dHRlci1vdXRwdXQ6IHRydWUsXHJcbiAgJGd1dHRlcnM6ICRncmlkLW1hcmdpbi1ndXR0ZXJzLFxyXG4gICRndXR0ZXItdHlwZTogbWFyZ2luLFxyXG4gICRndXR0ZXItcG9zaXRpb246IHJpZ2h0IGxlZnQsXHJcbiAgJGJyZWFrcG9pbnQ6ICQtemYtemVyby1icmVha3BvaW50LFxyXG4gICR2ZXJ0aWNhbDogZmFsc2VcclxuKSB7XHJcbiAgJHNpemU6IHBlcmNlbnRhZ2UoMS8kbik7XHJcblxyXG4gICYgPiAjeyRzZWxlY3Rvcn0ge1xyXG4gICAgQGluY2x1ZGUgeHktY2VsbCgkc2l6ZSwgJGd1dHRlci1vdXRwdXQsICRndXR0ZXJzLCAkZ3V0dGVyLXR5cGUsICRndXR0ZXItcG9zaXRpb24sICRicmVha3BvaW50LCAkdmVydGljYWwpO1xyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgeHktZ3JpZFxyXG4vLy8vXHJcblxyXG4vLy8gQ29sbGFwc2VzIHRoZSBncmlkIGEgY2VsbHMgd2l0aGluIGl0LlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc2VsZWN0b3IgWy5jZWxsXSAtIFRoZSBjaGlsZCBlbGVtZW50IHRvIHJlbW92ZSB0aGUgZ3V0dGVyIGZyb20uXHJcbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRndXR0ZXItdHlwZSBbbWFyZ2luXSAtIFRoZSB0eXBlIG9mIGd1dHRlciB0byByZW1vdmUuXHJcbi8vLyBAcGFyYW0ge0xpc3R9ICRndXR0ZXItcG9zaXRpb24gW3JpZ2h0IGxlZnRdIC0gVGhlIHBvc2l0aW9ucyB0byByZW1vdmUgZ3V0dGVycyBmcm9tLiBBY2NlcHRzIGB0b3BgLCBgYm90dG9tYCwgYGxlZnRgLCBgcmlnaHRgIGluIGFueSBjb21iaW5hdGlvbi5cclxuQG1peGluIHh5LWdyaWQtY29sbGFwc2UoXHJcbiAgJHNlbGVjdG9yOiAnLmNlbGwnLFxyXG4gICRndXR0ZXItdHlwZTogbWFyZ2luLFxyXG4gICRndXR0ZXItcG9zaXRpb246IHJpZ2h0IGxlZnQsXHJcbiAgJG1pbi1icmVha3BvaW50OiAkLXpmLXplcm8tYnJlYWtwb2ludFxyXG4pIHtcclxuICAvLyBGaXJzdCwgbGV0cyBuZWdhdGUgYW55IG1hcmdpbnMgb24gdGhlIHRvcCBsZXZlbFxyXG4gIEBpZiAoJGd1dHRlci10eXBlID09ICdtYXJnaW4nKSB7XHJcblxyXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbWluLWJyZWFrcG9pbnQpIHtcclxuICAgICAgQGVhY2ggJHZhbHVlIGluICRndXR0ZXItcG9zaXRpb24ge1xyXG4gICAgICAgIG1hcmdpbi0jeyR2YWx1ZX06IDA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgID4gI3skc2VsZWN0b3J9IHtcclxuICAgICAgICBAZWFjaCAkdmFsdWUgaW4gJGd1dHRlci1wb3NpdGlvbiB7XHJcbiAgICAgICAgICBtYXJnaW4tI3skdmFsdWV9OiAwO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICRleGNsdWRlZC1icHM6IC16Zi1icmVha3BvaW50cy1sZXNzLXRoYW4oJG1pbi1icmVha3BvaW50KTtcclxuXHJcbiAgICAvLyBPdXRwdXQgbmV3IHdpZHRocyB0byBub3QgaW5jbHVkZSBndXR0ZXJzXHJcbiAgICBAZWFjaCAkYnAgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XHJcbiAgICAgIEBpZihzbC1jb250YWluKCRleGNsdWRlZC1icHMsICRicCkpIHtcclxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtaW4tYnJlYWtwb2ludCkge1xyXG4gICAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2x1bW5zIHtcclxuICAgICAgICAgICAgLy8gU2l6aW5nIChwZXJjZW50YWdlKVxyXG4gICAgICAgICAgICA+IC4jeyRicH0tI3skaX0ge1xyXG4gICAgICAgICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc3RhdGljKCRpLCAkZ3V0dGVyLW91dHB1dDogZmFsc2UsICRndXR0ZXItdHlwZTogcGFkZGluZyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGJwKSB7XHJcbiAgICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbHVtbnMge1xyXG4gICAgICAgICAgICAvLyBTaXppbmcgKHBlcmNlbnRhZ2UpXHJcbiAgICAgICAgICAgID4gLiN7JGJwfS0jeyRpfSB7XHJcbiAgICAgICAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1zdGF0aWMoJGksICRndXR0ZXItb3V0cHV0OiBmYWxzZSwgJGd1dHRlci10eXBlOiBwYWRkaW5nKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBcclxuICAgIH1cclxuICB9XHJcbiAgQGVsc2Uge1xyXG5cclxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1pbi1icmVha3BvaW50KSB7XHJcbiAgICAgIEBlYWNoICR2YWx1ZSBpbiAkZ3V0dGVyLXBvc2l0aW9uIHtcclxuICAgICAgICBtYXJnaW4tI3skdmFsdWV9OiAwO1xyXG4gICAgICB9XHJcblxyXG4gICAgICA+ICN7JHNlbGVjdG9yfSB7XHJcbiAgICAgICAgQGVhY2ggJHZhbHVlIGluICRndXR0ZXItcG9zaXRpb24ge1xyXG4gICAgICAgICAgcGFkZGluZy0jeyR2YWx1ZX06IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCB4eS1ncmlkXHJcbi8vLy9cclxuXHJcbi8vIE1hcmdpbiBHcmlkIGNsYXNzZXNcclxuQG1peGluIHh5LWJhc2UtZ3JpZC1jbGFzc2VzIHtcclxuXHJcbiAgLy8gR3JpZCBDb250YWluZXJcclxuICAuZ3JpZC1jb250YWluZXIge1xyXG4gICAgQGluY2x1ZGUgeHktZ3JpZC1jb250YWluZXI7XHJcblxyXG4gICAgJi5mbHVpZCB7XHJcbiAgICAgIEBpbmNsdWRlIHh5LWdyaWQtY29udGFpbmVyKDEwMCUpO1xyXG4gICAgfVxyXG5cclxuICAgICYuZnVsbCB7XHJcbiAgICAgIEBpbmNsdWRlIHh5LWdyaWQtY29udGFpbmVyKDEwMCUsIDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gQmFzZSBncmlkIHN0eWxlc1xyXG4gIC5ncmlkLXgge1xyXG4gICAgQGluY2x1ZGUgeHktZ3JpZDtcclxuICB9XHJcblxyXG4gIC5jZWxsIHtcclxuICAgIEBpbmNsdWRlIHh5LWNlbGwtYmFzZSgpO1xyXG4gICAgQGluY2x1ZGUgeHktY2VsbC1zdGF0aWMoJGdyaWQtY29sdW1ucywgZmFsc2UsICRndXR0ZXItdHlwZTogcGFkZGluZyk7XHJcblxyXG4gICAgJi5hdXRvIHtcclxuICAgICAgQGluY2x1ZGUgeHktY2VsbC1iYXNlKGF1dG8pO1xyXG4gICAgfVxyXG5cclxuICAgICYuc2hyaW5rIHtcclxuICAgICAgQGluY2x1ZGUgeHktY2VsbC1iYXNlKHNocmluayk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuICAuZ3JpZC14IHtcclxuICAgID4gLmF1dG8ge1xyXG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLXN0YXRpYyhhdXRvLCBmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgPiAuc2hyaW5rIHtcclxuICAgICAgQGluY2x1ZGUgeHktY2VsbC1zdGF0aWMoc2hyaW5rLCBmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBBdXRvIHdpZHRoXHJcbiAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCgpIHtcclxuICAgIC8vIFRoaXMgaXMgYSBiaXQgb2YgYSBoYWNrL3dvcmthcm91bmQsIHNlZSB0aGVzZSBpc3N1ZXMgJiBQUnMgZm9yIHRoZSBiYWNrc3Rvcnk6XHJcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20venVyYi9mb3VuZGF0aW9uLXNpdGVzL2lzc3Vlcy8xMDI0NFxyXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3p1cmIvZm91bmRhdGlvbi1zaXRlcy9wdWxsLzEwMjIyIGFuZFxyXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3p1cmIvZm91bmRhdGlvbi1zaXRlcy9wdWxsLzEwMTY0XHJcbiAgICAuZ3JpZC14IHtcclxuICAgICAgJHN0cjogXCI+IC4jeyQtemYtc2l6ZX0tc2hyaW5rLCA+IC4jeyQtemYtc2l6ZX0tZnVsbFwiO1xyXG4gICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbHVtbnMge1xyXG4gICAgICAgICRzdHI6ICRzdHIgKyBcIiwgPiAuI3skLXpmLXNpemV9LSN7JGl9XCJcclxuICAgICAgfVxyXG4gICAgICAjeyRzdHJ9IHtcclxuICAgICAgICBmbGV4LWJhc2lzOiBhdXRvO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KCkge1xyXG4gICAgQGlmIG5vdCgkLXpmLXNpemUgPT0gc21hbGwpIHtcclxuICAgICAgLmdyaWQteCA+IC4jeyQtemYtc2l6ZX0tYXV0byB7XHJcbiAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1iYXNlKGF1dG8pO1xyXG4gICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc3RhdGljKGF1dG8sIGZhbHNlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmdyaWQteCA+IC4jeyQtemYtc2l6ZX0tc2hyaW5rIHtcclxuICAgICAgICBAaW5jbHVkZSB4eS1jZWxsLWJhc2Uoc2hyaW5rKTtcclxuICAgICAgICBAaW5jbHVkZSB4eS1jZWxsLXN0YXRpYyhzaHJpbmssIGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1ucyB7XHJcbiAgICAgIC8vIFNpemluZyAocGVyY2VudGFnZSlcclxuICAgICAgLmdyaWQteCA+IC4jeyQtemYtc2l6ZX0tI3skaX0ge1xyXG4gICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc3RhdGljKCRpLCBmYWxzZSwgJGd1dHRlci10eXBlOiBwYWRkaW5nKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gUmVzZXQgd2lkdGggd2hlbiB1c2luZyBgLmdyaWQtbWFyZ2luLXhgIG5vdCBvbiBgLmdyaWQteGBcclxuICAuZ3JpZC1tYXJnaW4teDpub3QoLmdyaWQteCkgPiAuY2VsbCB7XHJcbiAgICB3aWR0aDogYXV0bztcclxuICB9XHJcblxyXG4gIC8vIFJlc2V0IGhlaWdodCB3aGVuIHVzaW5nIGAuZ3JpZC1tYXJnaW4teWAgbm90IG9uIGAuZ3JpZC15YFxyXG4gIC5ncmlkLW1hcmdpbi15Om5vdCguZ3JpZC15KSA+IC5jZWxsIHtcclxuICAgIGhlaWdodDogYXV0bztcclxuICB9XHJcbn1cclxuXHJcbkBtaXhpbiAteHktYnJlYWtwb2ludC1jZWxsLWNsYXNzZXMoJGNsYXNzLWJyZWFrcG9pbnQsICRndXR0ZXItYnJlYWtwb2ludCwgJHZlcnRpY2FsKSB7XHJcbiAgJHByZWZpeDogaWYoJGNsYXNzLWJyZWFrcG9pbnQgPT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQsICcnLCAnI3skY2xhc3MtYnJlYWtwb2ludH0tJyk7XHJcbiAgPiAuI3skcHJlZml4fWF1dG8ge1xyXG4gICAgQGluY2x1ZGUgeHktY2VsbC1zdGF0aWMoYXV0bywgZmFsc2UsICRicmVha3BvaW50OiAkZ3V0dGVyLWJyZWFrcG9pbnQsICR2ZXJ0aWNhbDogJHZlcnRpY2FsKTtcclxuICB9XHJcblxyXG4gID4gLiN7JHByZWZpeH1zaHJpbmsge1xyXG4gICAgQGluY2x1ZGUgeHktY2VsbC1zdGF0aWMoc2hyaW5rLCBmYWxzZSwgJGJyZWFrcG9pbnQ6ICRndXR0ZXItYnJlYWtwb2ludCwgJHZlcnRpY2FsOiAkdmVydGljYWwpO1xyXG4gIH1cclxuXHJcbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2x1bW5zIHtcclxuICAgIC8vIFNpemluZyAocGVyY2VudGFnZSlcclxuICAgICRjbGFzc25hbWU6IGlmKCR2ZXJ0aWNhbCwgJy4jeyRjbGFzcy1icmVha3BvaW50fS0jeyRpfScsICcuI3skY2xhc3MtYnJlYWtwb2ludH0tI3skaX0nKTtcclxuXHJcbiAgICA+ICN7JGNsYXNzbmFtZX0ge1xyXG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLXN0YXRpYygkaSwgZmFsc2UsICRicmVha3BvaW50OiAkZ3V0dGVyLWJyZWFrcG9pbnQsICR2ZXJ0aWNhbDogJHZlcnRpY2FsKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vIE1hcmdpbiBHcmlkIGNsYXNzZXNcclxuQG1peGluIHh5LW1hcmdpbi1ncmlkLWNsYXNzZXMoXHJcbiAgJGd1dHRlci1wb3NpdGlvbjogbGVmdCByaWdodCxcclxuICAkdmVydGljYWw6IGZhbHNlLFxyXG4gICR3cmFwcGluZy1zZWxlY3RvcjogJy5ncmlkLW1hcmdpbi14J1xyXG4pe1xyXG4gICN7JHdyYXBwaW5nLXNlbGVjdG9yfSB7XHJcbiAgICBAaW5jbHVkZSB4eS1ndXR0ZXJzKCRuZWdhdGl2ZTogdHJ1ZSwgJGd1dHRlci1wb3NpdGlvbjogJGd1dHRlci1wb3NpdGlvbik7XHJcblxyXG4gICAgLy8gQmFzZSBjZWxsIHN0eWxlc1xyXG4gICAgPiAuY2VsbCB7XHJcbiAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc3RhdGljKCR2ZXJ0aWNhbDogJHZlcnRpY2FsKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBiYXNlIHN0eWxlcyBuZWVkIHRvIGFsbCBiZSBiZWZvcmUgdGhlIGF1dG8gYW5kIHNocmluayBzdHlsZXNcclxuICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoKSB7XHJcbiAgICAgIEBpZih0eXBlLW9mKCRncmlkLW1hcmdpbi1ndXR0ZXJzKSA9PSAnbWFwJyBhbmQgbWFwLWhhcy1rZXkoJGdyaWQtbWFyZ2luLWd1dHRlcnMsICQtemYtc2l6ZSkgYW5kICQtemYtc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCkge1xyXG4gICAgICAgID4gLmNlbGwge1xyXG4gICAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1zdGF0aWMoJGJyZWFrcG9pbnQ6ICQtemYtc2l6ZSwgJHZlcnRpY2FsOiAkdmVydGljYWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoKSB7XHJcblxyXG4gICAgICAvLyBUaGlzIGlzIHB1cmVseSBmb3IgcmVzcG9uc2l2ZSBndXR0ZXJzIC0gdGhlIG1hcmdpbiBncmlkIGhhcyB0byBnbyBiYWNrIGFuZCBhZGp1c3Qgd2lkdGhzIChvciBoZWlnaHRzKVxyXG4gICAgICAvLyBmb3IgcHJpb3IgYnJlYWtwb2ludHMgYmFzZWQgb24gdGhlIHJlc3BvbnNpdmUgZ3V0dGVyLlxyXG4gICAgICBAaWYodHlwZS1vZigkZ3JpZC1tYXJnaW4tZ3V0dGVycykgPT0gJ21hcCcgYW5kIG1hcC1oYXMta2V5KCRncmlkLW1hcmdpbi1ndXR0ZXJzLCAkLXpmLXNpemUpKSB7XHJcbiAgICAgICAgQGVhY2ggJGJwIGluIC16Zi1icmVha3BvaW50cy1sZXNzLXRoYW4oJC16Zi1zaXplKSB7XHJcbiAgICAgICAgICBAaWYobWFwLWhhcy1rZXkoJGdyaWQtbWFyZ2luLWd1dHRlcnMsICRicCkpIHtcclxuICAgICAgICAgICAgQGluY2x1ZGUgLXh5LWJyZWFrcG9pbnQtY2VsbC1jbGFzc2VzKCRicCwgJC16Zi1zaXplLCAkdmVydGljYWwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgQGluY2x1ZGUgLXh5LWJyZWFrcG9pbnQtY2VsbC1jbGFzc2VzKCQtemYtc2l6ZSwgJC16Zi1zaXplLCAkdmVydGljYWwpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8gUGFkZGluZyBHcmlkIGNsYXNzZXNcclxuQG1peGluIHh5LXBhZGRpbmctZ3JpZC1jbGFzc2VzIHtcclxuICAuZ3JpZC1wYWRkaW5nLXgge1xyXG5cclxuICAgIC8vIE5lZ2F0aXZlIG1hcmdpbiBmb3IgbmVzdGVkIGdyaWRzXHJcbiAgICAuZ3JpZC1wYWRkaW5nLXgge1xyXG4gICAgICBAaW5jbHVkZSB4eS1ndXR0ZXJzKCRuZWdhdGl2ZTogdHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTmVnYXRpdmUgbWFyZ2luIGZvciBncmlkcyB3aXRoaW4gYGdyaWQtY29udGFpbmVyL2dyaWQtY29udGFpbmVyLmZsdWlkYFxyXG4gICAgLy8gVGhpcyBhbGxvd3MgbWFyZ2luIGFuZCBwYWRkaW5nIGdyaWRzIHRvIGxpbmUgdXAgd2l0aCBlYWNob3RoZXJcclxuICAgIC5ncmlkLWNvbnRhaW5lcjpub3QoLmZ1bGwpID4gJiB7XHJcbiAgICAgIEBpbmNsdWRlIHh5LWd1dHRlcnMoJG5lZ2F0aXZlOiB0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBCYXNlIGNlbGwgc3R5bGVzXHJcbiAgICA+IC5jZWxsIHtcclxuICAgICAgQGluY2x1ZGUgeHktZ3V0dGVycygkZ3V0dGVyczogJGdyaWQtcGFkZGluZy1ndXR0ZXJzLCAkZ3V0dGVyLXR5cGU6IHBhZGRpbmcpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8gQmxvY2sgR3JpZCBjbGFzc2VzXHJcbkBtaXhpbiB4eS1ibG9jay1ncmlkLWNsYXNzZXMoJG1hcmdpbi1ncmlkOiB0cnVlLCAkcGFkZGluZy1ncmlkOiB0cnVlKSB7XHJcbiAgQGlmICRwYWRkaW5nLWdyaWQge1xyXG4gICAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCB7XHJcbiAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJHh5LWJsb2NrLWdyaWQtbWF4IHtcclxuICAgICAgICAuI3skLXpmLXNpemV9LXVwLSN7JGl9IHtcclxuICAgICAgICAgIEBpbmNsdWRlIHh5LWdyaWQtbGF5b3V0KCRpLCAnLmNlbGwnLCBmYWxzZSwgJGd1dHRlci10eXBlOiBwYWRkaW5nKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpZiAkbWFyZ2luLWdyaWQge1xyXG4gICAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCB7XHJcbiAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJHh5LWJsb2NrLWdyaWQtbWF4IHtcclxuICAgICAgICAvLyBUaGlzIGlzIHB1cmVseSBmb3IgcmVzcG9uc2l2ZSBndXR0ZXJzIC0gdGhlIG1hcmdpbiBncmlkIGhhcyB0byBnbyBiYWNrIGFuZCBhZGp1c3Qgd2lkdGhzIChvciBoZWlnaHRzKVxyXG4gICAgICAgIC8vIGZvciBwcmlvciBicmVha3BvaW50cyBiYXNlZCBvbiB0aGUgcmVzcG9uc2l2ZSBndXR0ZXIuXHJcbiAgICAgICAgQGlmKHR5cGUtb2YoJGdyaWQtbWFyZ2luLWd1dHRlcnMpID09ICdtYXAnIGFuZCBtYXAtaGFzLWtleSgkZ3JpZC1tYXJnaW4tZ3V0dGVycywgJC16Zi1zaXplKSkge1xyXG4gICAgICAgICAgQGVhY2ggJGJwIGluIC16Zi1icmVha3BvaW50cy1sZXNzLXRoYW4oJC16Zi1zaXplKSB7XHJcbiAgICAgICAgICAgIEBpZihtYXAtaGFzLWtleSgkZ3JpZC1tYXJnaW4tZ3V0dGVycywgJGJwKSkge1xyXG4gICAgICAgICAgICAgIC5ncmlkLW1hcmdpbi14LiN7JGJwfS11cC0jeyRpfSB7XHJcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSB4eS1ncmlkLWxheW91dCgkaSwgJy5jZWxsJywgZmFsc2UsICRndXR0ZXItdHlwZTogbWFyZ2luLCAkYnJlYWtwb2ludDogJGJwKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkeHktYmxvY2stZ3JpZC1tYXgge1xyXG4gICAgICAgIC5ncmlkLW1hcmdpbi14LiN7JC16Zi1zaXplfS11cC0jeyRpfSB7XHJcbiAgICAgICAgICBAaW5jbHVkZSB4eS1ncmlkLWxheW91dCgkaSwgJy5jZWxsJywgZmFsc2UsICRndXR0ZXItdHlwZTogbWFyZ2luLCAkYnJlYWtwb2ludDogJC16Zi1zaXplKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vIENvbGxhcHNlIGNsYXNzZXNcclxuQG1peGluIHh5LWNvbGxhcHNlLWdyaWQtY2xhc3NlcygkbWFyZ2luLWdyaWQ6IHRydWUsICRwYWRkaW5nLWdyaWQ6IHRydWUpIHtcclxuICBAZWFjaCAkYnAgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XHJcbiAgICBAaWYgJG1hcmdpbi1ncmlkIHtcclxuICAgICAgLiN7JGJwfS1tYXJnaW4tY29sbGFwc2Uge1xyXG4gICAgICAgIEBpbmNsdWRlIHh5LWdyaWQtY29sbGFwc2UoJGd1dHRlci10eXBlOiBtYXJnaW4sICRtaW4tYnJlYWtwb2ludDogJGJwKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBpZiAkcGFkZGluZy1ncmlkIHtcclxuICAgICAgLiN7JGJwfS1wYWRkaW5nLWNvbGxhcHNlIHtcclxuICAgICAgICBAaW5jbHVkZSB4eS1ncmlkLWNvbGxhcHNlKCRndXR0ZXItdHlwZTogcGFkZGluZywgJG1pbi1icmVha3BvaW50OiAkYnApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vLyBPZmZzZXQgY2xhc3Nlc1xyXG5AbWl4aW4geHktb2Zmc2V0LWNlbGwtY2xhc3NlcyB7XHJcbiAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCB7XHJcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbHVtbnMge1xyXG4gICAgICAvLyBPZmZzZXRzXHJcbiAgICAgICRvOiAkaSAtIDE7XHJcblxyXG4gICAgICAuI3skLXpmLXNpemV9LW9mZnNldC0jeyRvfSB7XHJcbiAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1vZmZzZXQoJG8sICRndXR0ZXJzOiAkZ3JpZC1wYWRkaW5nLWd1dHRlcnMsICRndXR0ZXItdHlwZTogcGFkZGluZywgJGJyZWFrcG9pbnQ6ICQtemYtc2l6ZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5ncmlkLW1hcmdpbi14ID4gLiN7JC16Zi1zaXplfS1vZmZzZXQtI3skb30ge1xyXG4gICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtb2Zmc2V0KCRvLCAkYnJlYWtwb2ludDogJC16Zi1zaXplKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8gVmVydGljYWwgR3JpZCBjbGFzc2VzXHJcbkBtaXhpbiB4eS12ZXJ0aWNhbC1ncmlkLWNsYXNzZXMoXHJcbiAgJG1hcmdpbi1ncmlkOiB0cnVlLFxyXG4gICRwYWRkaW5nLWdyaWQ6IHRydWVcclxuKSB7XHJcblxyXG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoKSB7XHJcbiAgICBAaWYgbm90KCQtemYtc2l6ZSA9PSBzbWFsbCkge1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmdyaWQteSB7XHJcbiAgICBAaW5jbHVkZSB4eS1ncmlkKHZlcnRpY2FsLCBmYWxzZSk7XHJcblxyXG5cclxuICAgID4gLmNlbGwge1xyXG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLXJlc2V0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgPiAuYXV0byB7XHJcbiAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc3RhdGljKGF1dG8sIGZhbHNlLCAkYnJlYWtwb2ludDogJC16Zi1zaXplLCAkdmVydGljYWw6IHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgID4gLnNocmluayB7XHJcbiAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc3RhdGljKHNocmluaywgZmFsc2UsICRicmVha3BvaW50OiAkLXpmLXNpemUsICR2ZXJ0aWNhbDogdHJ1ZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoKSB7XHJcbiAgICAgIC8vIFRoaXMgaXMgYSBiaXQgb2YgYSBoYWNrL3dvcmthcm91bmQsIHNlZSB0aGVzZSBpc3N1ZXMgYW5kIFBScyBmb3IgdGhlIGJhY2tzdG9yeTpcclxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3p1cmIvZm91bmRhdGlvbi1zaXRlcy9pc3N1ZXMvMTAyNDRcclxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3p1cmIvZm91bmRhdGlvbi1zaXRlcy9wdWxsLzEwMjIyIGFuZFxyXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20venVyYi9mb3VuZGF0aW9uLXNpdGVzL3B1bGwvMTAxNjRcclxuICAgICAgJHN0cjogXCI+IC4jeyQtemYtc2l6ZX0tc2hyaW5rLCA+IC4jeyQtemYtc2l6ZX0tZnVsbFwiO1xyXG4gICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbHVtbnMge1xyXG4gICAgICAgICRzdHI6ICRzdHIgKyBcIiwgPiAuI3skLXpmLXNpemV9LSN7JGl9XCJcclxuICAgICAgfVxyXG4gICAgICAjeyRzdHJ9IHtcclxuICAgICAgICBmbGV4LWJhc2lzOiBhdXRvO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCgpIHtcclxuICAgICAgQGlmIG5vdCgkLXpmLXNpemUgPT0gc21hbGwpIHtcclxuICAgICAgICA+IC4jeyQtemYtc2l6ZX0tYXV0byB7XHJcbiAgICAgICAgICBAaW5jbHVkZSB4eS1jZWxsLWJhc2UoYXV0byk7XHJcbiAgICAgICAgICBAaW5jbHVkZSB4eS1jZWxsLXN0YXRpYyhhdXRvLCBmYWxzZSwgJGJyZWFrcG9pbnQ6ICQtemYtc2l6ZSwgJHZlcnRpY2FsOiB0cnVlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgID4gLiN7JC16Zi1zaXplfS1zaHJpbmsge1xyXG4gICAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1zdGF0aWMoc2hyaW5rLCBmYWxzZSwgJGJyZWFrcG9pbnQ6ICQtemYtc2l6ZSwgJHZlcnRpY2FsOiB0cnVlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICB9XHJcblxyXG4gICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbHVtbnMge1xyXG4gICAgICAgIC8vIFNpemluZyAocGVyY2VudGFnZSlcclxuICAgICAgICA+IC4jeyQtemYtc2l6ZX0tI3skaX0ge1xyXG4gICAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1zdGF0aWMoJGksIGZhbHNlLCAkdmVydGljYWw6IHRydWUsICRndXR0ZXItdHlwZTogcGFkZGluZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGlmICRwYWRkaW5nLWdyaWQge1xyXG4gICAgLmdyaWQtcGFkZGluZy15IHtcclxuICAgICAgLy8gTmVnYXRpdmUgbWFyZ2luIGZvciBuZXN0ZWQgZ3JpZHNcclxuICAgICAgLmdyaWQtcGFkZGluZy15IHtcclxuICAgICAgICBAaW5jbHVkZSB4eS1ndXR0ZXJzKCRuZWdhdGl2ZTogdHJ1ZSwgJGd1dHRlci1wb3NpdGlvbjogdG9wIGJvdHRvbSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIEJhc2UgY2VsbCBzdHlsZXNcclxuICAgICAgPiAuY2VsbCB7XHJcbiAgICAgICAgQGluY2x1ZGUgeHktZ3V0dGVycygkZ3V0dGVyczogJGdyaWQtcGFkZGluZy1ndXR0ZXJzLCAkZ3V0dGVyLXR5cGU6IHBhZGRpbmcsICRndXR0ZXItcG9zaXRpb246IHRvcCBib3R0b20pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaWYgJG1hcmdpbi1ncmlkIHtcclxuICAgIEBpbmNsdWRlIHh5LW1hcmdpbi1ncmlkLWNsYXNzZXModG9wIGJvdHRvbSwgdHJ1ZSwgJy5ncmlkLW1hcmdpbi15Jyk7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuQG1peGluIHh5LWZyYW1lLWdyaWQtY2xhc3NlcygkdmVydGljYWwtZ3JpZDogdHJ1ZSwgJG1hcmdpbi1ncmlkOiB0cnVlKSB7XHJcbiAgLy8gRnJhbWVkIGdyaWQgc3R5bGVzXHJcbiAgLmdyaWQtZnJhbWUge1xyXG4gICAgQGluY2x1ZGUgeHktZ3JpZC1mcmFtZTtcclxuICB9XHJcblxyXG4gIC5jZWxsIC5ncmlkLWZyYW1lIHtcclxuICAgIHdpZHRoOiAxMDAlOyAvLyBTYW1lIGFzIGluY2x1ZGUgd2l0aCAkbmVzdGVkLCBidXQgd2l0aCBsZXNzIGNzc1xyXG4gIH1cclxuXHJcbiAgLmNlbGwtYmxvY2sge1xyXG4gICAgQGluY2x1ZGUgeHktY2VsbC1ibG9jaygpO1xyXG4gIH1cclxuXHJcbiAgLmNlbGwtYmxvY2steSB7XHJcbiAgICBAaW5jbHVkZSB4eS1jZWxsLWJsb2NrKHRydWUpO1xyXG4gIH1cclxuXHJcblxyXG4gIC5jZWxsLWJsb2NrLWNvbnRhaW5lciB7XHJcbiAgICBAaW5jbHVkZSB4eS1jZWxsLWJsb2NrLWNvbnRhaW5lcigpO1xyXG4gIH1cclxuXHJcblxyXG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoZmFsc2UpIHtcclxuXHJcbiAgICAuI3skLXpmLXNpemV9LWdyaWQtZnJhbWUge1xyXG4gICAgICBAaW5jbHVkZSB4eS1ncmlkLWZyYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIC5jZWxsIC4jeyQtemYtc2l6ZX0tZ3JpZC1mcmFtZSB7XHJcbiAgICAgIHdpZHRoOiAxMDAlOyAvLyBTYW1lIGFzIGluY2x1ZGUgd2l0aCAkbmVzdGVkLCBidXQgd2l0aCBsZXNzIGNzc1xyXG4gICAgfVxyXG5cclxuICAgIC4jeyQtemYtc2l6ZX0tY2VsbC1ibG9jayB7XHJcbiAgICAgIEBpbmNsdWRlIHh5LWNlbGwtYmxvY2soKTtcclxuICAgIH1cclxuXHJcbiAgICAuI3skLXpmLXNpemV9LWNlbGwtYmxvY2stY29udGFpbmVyIHtcclxuICAgICAgQGluY2x1ZGUgeHktY2VsbC1ibG9jay1jb250YWluZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICAuI3skLXpmLXNpemV9LWNlbGwtYmxvY2steSB7XHJcbiAgICAgIEBpbmNsdWRlIHh5LWNlbGwtYmxvY2sodHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaWYgJHZlcnRpY2FsLWdyaWQge1xyXG4gICAgLmdyaWQteSB7XHJcbiAgICAgICYuZ3JpZC1mcmFtZSB7XHJcbiAgICAgICAgd2lkdGg6IGF1dG87XHJcbiAgICAgICAgQGluY2x1ZGUgeHktZ3JpZC1mcmFtZSh0cnVlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludChmYWxzZSkge1xyXG4gICAgICAgICYuI3skLXpmLXNpemV9LWdyaWQtZnJhbWUge1xyXG4gICAgICAgICAgd2lkdGg6IGF1dG87XHJcbiAgICAgICAgICBAaW5jbHVkZSB4eS1ncmlkLWZyYW1lKHRydWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC5jZWxsIHtcclxuICAgICAgLmdyaWQteS5ncmlkLWZyYW1lIHtcclxuICAgICAgICBoZWlnaHQ6IDEwMCU7IC8vIFNhbWUgYXMgaW5jbHVkZSB3aXRoICRuZXN0ZWQsIGJ1dCB3aXRoIGxlc3MgY3NzXHJcbiAgICAgIH1cclxuICAgICAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludChmYWxzZSkge1xyXG4gICAgICAgIC5ncmlkLXkuI3skLXpmLXNpemV9LWdyaWQtZnJhbWUge1xyXG4gICAgICAgICAgaGVpZ2h0OiAxMDAlOyAvLyBTYW1lIGFzIGluY2x1ZGUgd2l0aCAkbmVzdGVkLCBidXQgd2l0aCBsZXNzIGNzc1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBAaWYgJG1hcmdpbi1ncmlkIHtcclxuICAgIEBpbmNsdWRlIHh5LW1hcmdpbi1ncmlkLWNsYXNzZXModG9wIGJvdHRvbSwgdHJ1ZSwgJy5ncmlkLW1hcmdpbi15Jyk7XHJcbiAgICAuZ3JpZC1mcmFtZS5ncmlkLW1hcmdpbi15IHtcclxuICAgICAgQGluY2x1ZGUgeHktZ3JpZC1mcmFtZSh0cnVlLCBmYWxzZSwgJGdyaWQtbWFyZ2luLWd1dHRlcnMsICRpbmNsdWRlLWJhc2U6IGZhbHNlKTtcclxuICAgIH1cclxuICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoZmFsc2UpIHtcclxuICAgICAgLmdyaWQtbWFyZ2luLXkuI3skLXpmLXNpemV9LWdyaWQtZnJhbWUge1xyXG4gICAgICAgIEBpbmNsdWRlIHh5LWdyaWQtZnJhbWUodHJ1ZSwgZmFsc2UsICRncmlkLW1hcmdpbi1ndXR0ZXJzLCAkLXpmLXNpemUsIGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8gRmluYWwgY2xhc3Nlc1xyXG5AbWl4aW4gZm91bmRhdGlvbi14eS1ncmlkLWNsYXNzZXMoXHJcbiAgJGJhc2UtZ3JpZDogdHJ1ZSxcclxuICAkbWFyZ2luLWdyaWQ6IHRydWUsXHJcbiAgJHBhZGRpbmctZ3JpZDogdHJ1ZSxcclxuICAkYmxvY2stZ3JpZDogdHJ1ZSxcclxuICAkY29sbGFwc2U6IHRydWUsXHJcbiAgJG9mZnNldDogdHJ1ZSxcclxuICAkdmVydGljYWwtZ3JpZDogdHJ1ZSxcclxuICAkZnJhbWUtZ3JpZDogdHJ1ZVxyXG4pIHtcclxuXHJcbiAgLy8gQmFzZSBncmlkIHN0eWxlc1xyXG4gIEBpZigkYmFzZS1ncmlkKSB7XHJcbiAgICBAaW5jbHVkZSB4eS1iYXNlLWdyaWQtY2xhc3NlcygpO1xyXG4gIH1cclxuXHJcbiAgLy8gTWFyZ2luIGdyaWRcclxuICBAaWYoJG1hcmdpbi1ncmlkKSB7XHJcbiAgICBAaW5jbHVkZSB4eS1tYXJnaW4tZ3JpZC1jbGFzc2VzKCk7XHJcbiAgfVxyXG5cclxuICAvLyBQYWRkaW5nIGdyaWRcclxuICBAaWYoJHBhZGRpbmctZ3JpZCkge1xyXG4gICAgQGluY2x1ZGUgeHktcGFkZGluZy1ncmlkLWNsYXNzZXMoKTtcclxuICB9XHJcblxyXG4gIC8vIEJsb2NrIGdyaWRcclxuICBAaWYoJGJsb2NrLWdyaWQpIHtcclxuICAgIEBpbmNsdWRlIHh5LWJsb2NrLWdyaWQtY2xhc3NlcygkbWFyZ2luLWdyaWQsICRwYWRkaW5nLWdyaWQpO1xyXG4gIH1cclxuXHJcbiAgLy8gQ29sbGFwc2UgZ3V0dGVyc1xyXG4gIEBpZigkY29sbGFwc2UpIHtcclxuICAgIEBpbmNsdWRlIHh5LWNvbGxhcHNlLWdyaWQtY2xhc3NlcygkbWFyZ2luLWdyaWQsICRwYWRkaW5nLWdyaWQpO1xyXG4gIH1cclxuXHJcbiAgLy8gT2Zmc2V0IGd1dHRlcnNcclxuICBAaWYoJG9mZnNldCkge1xyXG4gICAgQGluY2x1ZGUgeHktb2Zmc2V0LWNlbGwtY2xhc3NlcygpO1xyXG4gIH1cclxuXHJcbiAgLy8gVmVydGljYWwgZ3JpZFxyXG4gIEBpZigkdmVydGljYWwtZ3JpZCkge1xyXG4gICAgQGluY2x1ZGUgeHktdmVydGljYWwtZ3JpZC1jbGFzc2VzKCRtYXJnaW4tZ3JpZCwgJHBhZGRpbmctZ3JpZCk7XHJcbiAgfVxyXG5cclxuICBAaWYgKCRmcmFtZS1ncmlkKSB7XHJcbiAgICBAaW5jbHVkZSB4eS1mcmFtZS1ncmlkLWNsYXNzZXMoJHZlcnRpY2FsLWdyaWQsICRtYXJnaW4tZ3JpZClcclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIHR5cG9ncmFwaHlcclxuLy8vL1xyXG5cclxuLy8gQmFzZSB0eXBvZ3JhcGh5IHN0eWxlcyAodGFncyBvbmx5KVxyXG5AaW1wb3J0ICdiYXNlJztcclxuXHJcbi8vIFR5cG9ncmFwaHkgaGVscGVyIGNsYXNzZXMgKGNsYXNzZXMgb25seSlcclxuQGltcG9ydCAnaGVscGVycyc7XHJcblxyXG4vLyBUZXh0IGFsaWdubWVudCBjbGFzc2VzXHJcbkBpbXBvcnQgJ2FsaWdubWVudCc7XHJcblxyXG4vLyBQcmludCBzdHlsZXNcclxuQGltcG9ydCAncHJpbnQnO1xyXG5cclxuQG1peGluIGZvdW5kYXRpb24tdHlwb2dyYXBoeSB7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10eXBvZ3JhcGh5LWJhc2U7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10eXBvZ3JhcGh5LWhlbHBlcnM7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10ZXh0LWFsaWdubWVudDtcclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByaW50LXN0eWxlcztcclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgdHlwb2dyYXBoeS1iYXNlXHJcbi8vLy9cclxuXHJcbi8vIEJhc2UgVHlwb2dyYXBoeVxyXG4vLyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLVxyXG4vLyBUaGVzZSBhcmUgc3R5bGVzIGFwcGxpZWQgdG8gYmFzaWMgSFRNTCB0YWdzLCBpbmNsdWRpbmc6XHJcbi8vICAgLSBQYXJhZ3JhcGhzIDxwPlxyXG4vLyAgIC0gQm9sZC9pdGFsaWNzIDxiPiA8c3Ryb25nPiA8aT4gPGVtPlxyXG4vLyAgIC0gU21hbGwgdGV4dCA8c21hbGw+XHJcbi8vICAgLSBIZWFkaW5ncyA8aDE+LTxoNj5cclxuLy8gICAtIEFuY2hvcnMgPGE+XHJcbi8vICAgLSBEaXZpZGVycyA8aHI+XHJcbi8vICAgLSBMaXN0cyA8dWw+IDxvbD4gPGRsPlxyXG4vLyAgIC0gQmxvY2txdW90ZXMgPGJsb2NrcXVvdGU+XHJcbi8vICAgLSBDb2RlIGJsb2NrcyA8Y29kZT5cclxuLy8gICAtIEFiYnJldmlhdGlvbnMgPGFiYnI+XHJcbi8vICAgLSBDaXRhdGlvbnMgPGNpdGU+XHJcbi8vICAgLSBLZXlzdHJva2VzIDxrYmQ+XHJcblxyXG4vLy8gRm9udCBmYW1pbHkgZm9yIGhlYWRlciBlbGVtZW50cy5cclxuLy8vIEB0eXBlIFN0cmluZyB8IExpc3RcclxuJGhlYWRlci1mb250LWZhbWlseTogJGJvZHktZm9udC1mYW1pbHkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRm9udCB3ZWlnaHQgb2YgaGVhZGVycy5cclxuLy8vIEB0eXBlIFN0cmluZ1xyXG4kaGVhZGVyLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWwgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRm9udCBzdHlsZSAoZS5nLiBpdGFsaWNpemVkKSBvZiBoZWFkZXJzLlxyXG4vLy8gQHR5cGUgU3RyaW5nXHJcbiRoZWFkZXItZm9udC1zdHlsZTogbm9ybWFsICFkZWZhdWx0O1xyXG5cclxuLy8vIEZvbnQgc3RhY2sgdXNlZCBmb3IgZWxlbWVudHMgdGhhdCB1c2UgbW9ub3NwYWNlZCB0eXBlLCBzdWNoIGFzIGNvZGUgc2FtcGxlc1xyXG4vLy8gQHR5cGUgU3RyaW5nIHwgTGlzdFxyXG4kZm9udC1mYW1pbHktbW9ub3NwYWNlOiBDb25zb2xhcywgJ0xpYmVyYXRpb24gTW9ubycsIENvdXJpZXIsIG1vbm9zcGFjZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBDb2xvciBvZiBoZWFkZXJzLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGhlYWRlci1jb2xvcjogaW5oZXJpdCAhZGVmYXVsdDtcclxuXHJcbi8vLyBMaW5lIGhlaWdodCBvZiBoZWFkZXJzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRoZWFkZXItbGluZWhlaWdodDogMS40ICFkZWZhdWx0O1xyXG5cclxuLy8vIEJvdHRvbSBtYXJnaW4gb2YgaGVhZGVycy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kaGVhZGVyLW1hcmdpbi1ib3R0b206IDAuNXJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBTdHlsZXMgZm9yIGhlYWRpbmdzIGF0IHZhcmlvdXMgc2NyZWVuIHNpemVzLiBFYWNoIGtleSBpcyBhIGJyZWFrcG9pbnQsIGFuZCBlYWNoIHZhbHVlIGlzIGEgbWFwIG9mIGhlYWRpbmcgc3R5bGVzLlxyXG4vLy8gQHR5cGUgTWFwXHJcbiRoZWFkZXItc3R5bGVzOiAoXHJcbiAgc21hbGw6IChcclxuICAgICdoMSc6ICgnZm9udC1zaXplJzogMjQpLFxyXG4gICAgJ2gyJzogKCdmb250LXNpemUnOiAyMCksXHJcbiAgICAnaDMnOiAoJ2ZvbnQtc2l6ZSc6IDE5KSxcclxuICAgICdoNCc6ICgnZm9udC1zaXplJzogMTgpLFxyXG4gICAgJ2g1JzogKCdmb250LXNpemUnOiAxNyksXHJcbiAgICAnaDYnOiAoJ2ZvbnQtc2l6ZSc6IDE2KSxcclxuICApLFxyXG4gIG1lZGl1bTogKFxyXG4gICAgJ2gxJzogKCdmb250LXNpemUnOiA0OCksXHJcbiAgICAnaDInOiAoJ2ZvbnQtc2l6ZSc6IDQwKSxcclxuICAgICdoMyc6ICgnZm9udC1zaXplJzogMzEpLFxyXG4gICAgJ2g0JzogKCdmb250LXNpemUnOiAyNSksXHJcbiAgICAnaDUnOiAoJ2ZvbnQtc2l6ZSc6IDIwKSxcclxuICAgICdoNic6ICgnZm9udC1zaXplJzogMTYpLFxyXG4gICksXHJcbikgIWRlZmF1bHQ7XHJcblxyXG4vLyAkaGVhZGVyLXN0eWxlcyBtYXAgaXMgYnVpbHQgZnJvbSAkaGVhZGVyLXNpemVzIGluIG9yZGVyIHRvIGVuc3VyZSBkb3dud2FyZCBjb21wYXRpYmlsaXR5XHJcbi8vIHdoZW4gJGhlYWRlci1zaXplcyBpcyBkZXByZWNpYXRlZCwgJGhlYWRlci1zdHlsZXMgbmVlZHMgdG8gZ2V0ICFkZWZhdWx0IHZhbHVlcyBsaWtlIHNldHRpbmdzLnNjc3NcclxuQGZ1bmN0aW9uIGJ1aWxkX2Zyb21faGVhZGVyLXNpemVzKCRoZWFkZXItc2l6ZXMpIHtcclxuICBAd2FybiAnTm90ZSwgdGhhdCAkaGVhZGVyLXNpemVzIGhhcyBiZWVuIHJlcGxhY2VkIHdpdGggJGhlYWRlci1zdHlsZXMuICRoZWFkZXItc2l6ZXMgc3RpbGwgd29ya3MsIGJ1dCBpdCBpcyBnb2luZyB0byBiZSBkZXByZWNpYXRlZC4nO1xyXG4gICRoZWFkZXItc3R5bGVzOiAoKTtcclxuICBAZWFjaCAkc2l6ZSwgJGhlYWRlcnMgaW4gJGhlYWRlci1zaXplcyB7XHJcbiAgICAkaGVhZGVyLW1hcDogKCk7XHJcbiAgICBAZWFjaCAkaGVhZGVyLCAkZm9udC1zaXplIGluICRoZWFkZXJzIHtcclxuICAgICAgJGhlYWRlci1tYXA6IG1hcC1tZXJnZSgkaGVhZGVyLW1hcCwgKCRoZWFkZXI6ICgnZm9udC1zaXplJzogJGZvbnQtc2l6ZSkpKTsgIFxyXG4gICAgfVxyXG4gICAgJGhlYWRlci1zdHlsZXM6IG1hcC1tZXJnZSgkaGVhZGVyLXN0eWxlcywgKCRzaXplOiAkaGVhZGVyLW1hcCkpO1xyXG4gIH1cclxuICBAcmV0dXJuICRoZWFkZXItc3R5bGVzO1xyXG59XHJcblxyXG4vLyBJZiBpdCBleGlzdHMgJGhlYWRlcnMtc2l6ZXMgaXMgdXNlZCB0byBidWlsZCAkaGVhZGVyLXN0eWxlcy4gU2VlIHRoZSBkb2N1bWVudGF0aW9uLlxyXG5AaWYgdmFyaWFibGUtZXhpc3RzKGhlYWRlci1zaXplcykge1xyXG4gICRoZWFkZXItc3R5bGVzOiBidWlsZF9mcm9tX2hlYWRlci1zaXplcygkaGVhZGVyLXNpemVzKTtcclxufVxyXG5cclxuLy8vIFRleHQgcmVuZGVyaW5nIG1ldGhvZCBvZiBoZWFkZXJzLlxyXG4vLy8gQHR5cGUgU3RyaW5nXHJcbiRoZWFkZXItdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eSAhZGVmYXVsdDtcclxuXHJcbi8vLyBGb250IHNpemUgb2YgYDxzbWFsbD5gIGVsZW1lbnRzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRzbWFsbC1mb250LXNpemU6IDgwJSAhZGVmYXVsdDtcclxuXHJcbi8vLyBDb2xvciBvZiBgPHNtYWxsPmAgZWxlbWVudHMgd2hlbiBwbGFjZWQgaW5zaWRlIGhlYWRlcnMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kaGVhZGVyLXNtYWxsLWZvbnQtY29sb3I6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcclxuXHJcbi8vLyBMaW5lIGhlaWdodCBvZiB0ZXh0IGluc2lkZSBgPHA+YCBlbGVtZW50cy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kcGFyYWdyYXBoLWxpbmVoZWlnaHQ6IDEuNiAhZGVmYXVsdDtcclxuXHJcbi8vLyBCb3R0b20gbWFyZ2luIG9mIHBhcmFncmFwaHMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHBhcmFncmFwaC1tYXJnaW4tYm90dG9tOiAxcmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIFRleHQgcmVuZGVyaW5nIG1ldGhvZCBmb3IgcGFyYWdyYXBoIHRleHQuXHJcbi8vLyBAdHlwZSBTdHJpbmdcclxuJHBhcmFncmFwaC10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5ICFkZWZhdWx0O1xyXG5cclxuLy8vIFRleHQgY29sb3Igb2YgY29kZSBzYW1wbGVzLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGNvZGUtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcclxuXHJcbi8vLyBGb250IGZhbWlseSBvZiBjb2RlIHNhbXBsZXMuXHJcbi8vLyBAdHlwZSBTdHJpbmcgfCBMaXN0XHJcbiRjb2RlLWZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktbW9ub3NwYWNlICFkZWZhdWx0O1xyXG5cclxuLy8vIEZvbnQgd2VpZ2h0IG9mIHRleHQgaW4gY29kZSBzYW1wbGVzLlxyXG4vLy8gQHR5cGUgU3RyaW5nXHJcbiRjb2RlLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWwgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBjb2RlIHNhbXBsZXMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kY29kZS1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcclxuXHJcbi8vLyBCb3JkZXIgYXJvdW5kIGNvZGUgc2FtcGxlcy5cclxuLy8vIEB0eXBlIExpc3RcclxuJGNvZGUtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xyXG5cclxuLy8vIFBhZGRpbmcgYXJvdW5kIHRleHQgb2YgY29kZSBzYW1wbGVzLlxyXG4vLy8gQHR5cGUgTnVtYmVyIHwgTGlzdFxyXG4kY29kZS1wYWRkaW5nOiByZW0tY2FsYygyIDUgMSkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBjb2xvciBmb3IgbGlua3MuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kYW5jaG9yLWNvbG9yOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGNvbG9yIGZvciBsaW5rcyBvbiBob3Zlci5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRhbmNob3ItY29sb3ItaG92ZXI6IHNjYWxlLWNvbG9yKCRhbmNob3ItY29sb3IsICRsaWdodG5lc3M6IC0xNCUpICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgdGV4dCBkZWNvcmF0aW9uIGZvciBsaW5rcy5cclxuLy8vIEB0eXBlIFN0cmluZ1xyXG4kYW5jaG9yLXRleHQtZGVjb3JhdGlvbjogbm9uZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IHRleHQgZGVjb3JhdGlvbiBmb3IgbGlua3Mgb24gaG92ZXIuXHJcbi8vLyBAdHlwZSBTdHJpbmdcclxuJGFuY2hvci10ZXh0LWRlY29yYXRpb24taG92ZXI6IG5vbmUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gTWF4aW11bSB3aWR0aCBvZiBhIGRpdmlkZXIuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGhyLXdpZHRoOiAkZ2xvYmFsLXdpZHRoICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgYm9yZGVyIGZvciBhIGRpdmlkZXIuXHJcbi8vLyBAdHlwZSBMaXN0XHJcbiRoci1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBtYXJnaW4gZm9yIGEgZGl2aWRlci5cclxuLy8vIEB0eXBlIE51bWJlciB8IExpc3RcclxuJGhyLW1hcmdpbjogcmVtLWNhbGMoMjApIGF1dG8gIWRlZmF1bHQ7XHJcblxyXG4vLy8gTGluZSBoZWlnaHQgZm9yIGl0ZW1zIGluIGEgbGlzdC5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kbGlzdC1saW5laGVpZ2h0OiAkcGFyYWdyYXBoLWxpbmVoZWlnaHQgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQm90dG9tIG1hcmdpbiBmb3IgaXRlbXMgaW4gYSBsaXN0LlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRsaXN0LW1hcmdpbi1ib3R0b206ICRwYXJhZ3JhcGgtbWFyZ2luLWJvdHRvbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBCdWxsZXQgdHlwZSB0byB1c2UgZm9yIHVub3JkZXJlZCBsaXN0cyAoZS5nLiwgYHNxdWFyZWAsIGBjaXJjbGVgLCBgZGlzY2ApLlxyXG4vLy8gQHR5cGUgU3RyaW5nXHJcbiRsaXN0LXN0eWxlLXR5cGU6IGRpc2MgIWRlZmF1bHQ7XHJcblxyXG4vLy8gUG9zaXRpb25pbmcgZm9yIGJ1bGxldHMgb24gdW5vcmRlcmVkIGxpc3QgaXRlbXMuXHJcbi8vLyBAdHlwZSBTdHJpbmdcclxuJGxpc3Qtc3R5bGUtcG9zaXRpb246IG91dHNpZGUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gTGVmdCAob3IgcmlnaHQpIG1hcmdpbiBmb3IgbGlzdHMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGxpc3Qtc2lkZS1tYXJnaW46IDEuMjVyZW0gIWRlZmF1bHQ7XHJcblxyXG4vLy8gTGVmdCAob3IgcmlnaHQpIG1hcmdpbiBmb3IgYSBsaXN0IGluc2lkZSBhIGxpc3QuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGxpc3QtbmVzdGVkLXNpZGUtbWFyZ2luOiAxLjI1cmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIEJvdHRvbSBtYXJnaW4gZm9yIGA8ZGw+YCBlbGVtZW50cy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kZGVmbmxpc3QtbWFyZ2luLWJvdHRvbTogMXJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBGb250IHdlaWdodCBmb3IgYDxkdD5gIGVsZW1lbnRzLlxyXG4vLy8gQHR5cGUgU3RyaW5nXHJcbiRkZWZubGlzdC10ZXJtLXdlaWdodDogJGdsb2JhbC13ZWlnaHQtYm9sZCAhZGVmYXVsdDtcclxuXHJcbi8vLyBTcGFjaW5nIGJldHdlZW4gYDxkdD5gIGFuZCBgPGRkPmAgZWxlbWVudHMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGRlZm5saXN0LXRlcm0tbWFyZ2luLWJvdHRvbTogMC4zcmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIFRleHQgY29sb3Igb2YgYDxibG9ja3F1b3RlPmAgZWxlbWVudHMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kYmxvY2txdW90ZS1jb2xvcjogJGRhcmstZ3JheSAhZGVmYXVsdDtcclxuXHJcbi8vLyBQYWRkaW5nIGluc2lkZSBhIGA8YmxvY2txdW90ZT5gIGVsZW1lbnQuXHJcbi8vLyBAdHlwZSBOdW1iZXIgfCBMaXN0XHJcbiRibG9ja3F1b3RlLXBhZGRpbmc6IHJlbS1jYWxjKDkgMjAgMCAxOSkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gU2lkZSBib3JkZXIgZm9yIGA8YmxvY2txdW90ZT5gIGVsZW1lbnRzLlxyXG4vLy8gQHR5cGUgTGlzdFxyXG4kYmxvY2txdW90ZS1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRm9udCBzaXplIGZvciBgPGNpdGU+YCBlbGVtZW50cy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kY2l0ZS1mb250LXNpemU6IHJlbS1jYWxjKDEzKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBUZXh0IGNvbG9yIGZvciBgPGNpdGU+YCBlbGVtZW50cy5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRjaXRlLWNvbG9yOiAkZGFyay1ncmF5ICFkZWZhdWx0O1xyXG5cclxuLy8vIFBzZXVkbyBjb250ZW50IGZvciBgPGNpdGU+YCBlbGVtZW50cy5cclxuLy8vIEB0eXBlIFN0cmluZ1xyXG4kY2l0ZS1wc2V1ZG8tY29udGVudDogJ1xcMjAxNCBcXDAwMjAnICFkZWZhdWx0O1xyXG5cclxuLy8vIEZvbnQgZmFtaWx5IGZvciBgPGtiZD5gIGVsZW1lbnRzLlxyXG4vLy8gQHR5cGUgU3RyaW5nIHwgTGlzdFxyXG4ka2V5c3Ryb2tlLWZvbnQ6ICRmb250LWZhbWlseS1tb25vc3BhY2UgIWRlZmF1bHQ7XHJcblxyXG4vLy8gVGV4dCBjb2xvciBmb3IgYDxrYmQ+YCBlbGVtZW50cy5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRrZXlzdHJva2UtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcclxuXHJcbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciBgPGtiZD5gIGVsZW1lbnRzLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGtleXN0cm9rZS1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcclxuXHJcbi8vLyBQYWRkaW5nIGZvciBgPGtiZD5gIGVsZW1lbnRzLlxyXG4vLy8gQHR5cGUgTnVtYmVyIHwgTGlzdFxyXG4ka2V5c3Ryb2tlLXBhZGRpbmc6IHJlbS1jYWxjKDIgNCAwKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBCb3JkZXIgcmFkaXVzIGZvciBgPGtiZD5gIGVsZW1lbnRzLlxyXG4vLy8gQHR5cGUgTnVtYmVyIHwgTGlzdFxyXG4ka2V5c3Ryb2tlLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQm90dG9tIGJvcmRlciBzdHlsZSBmb3IgYDxhYmJyPmAgZWxlbWVudHMuXHJcbi8vLyBAdHlwZSBMaXN0XHJcbiRhYmJyLXVuZGVybGluZTogMXB4IGRvdHRlZCAkYmxhY2sgIWRlZmF1bHQ7XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi10eXBvZ3JhcGh5LWJhc2Uge1xyXG4gIC8vIFR5cG9ncmFwaHkgcmVzZXRzXHJcbiAgZGl2LFxyXG4gIGRsLFxyXG4gIGR0LFxyXG4gIGRkLFxyXG4gIHVsLFxyXG4gIG9sLFxyXG4gIGxpLFxyXG4gIGgxLFxyXG4gIGgyLFxyXG4gIGgzLFxyXG4gIGg0LFxyXG4gIGg1LFxyXG4gIGg2LFxyXG4gIHByZSxcclxuICBmb3JtLFxyXG4gIHAsXHJcbiAgYmxvY2txdW90ZSxcclxuICB0aCxcclxuICB0ZCB7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gIH1cclxuXHJcbiAgLy8gUGFyYWdyYXBoc1xyXG4gIHAge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogJHBhcmFncmFwaC1tYXJnaW4tYm90dG9tO1xyXG5cclxuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcclxuICAgIGxpbmUtaGVpZ2h0OiAkcGFyYWdyYXBoLWxpbmVoZWlnaHQ7XHJcbiAgICB0ZXh0LXJlbmRlcmluZzogJHBhcmFncmFwaC10ZXh0LXJlbmRlcmluZztcclxuICB9XHJcblxyXG4gIC8vIEVtcGhhc2l6ZWQgdGV4dFxyXG4gIGVtLFxyXG4gIGkge1xyXG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xyXG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XHJcbiAgfVxyXG5cclxuICAvLyBTdHJvbmcgdGV4dFxyXG4gIHN0cm9uZyxcclxuICBiIHtcclxuICAgIGZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkO1xyXG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XHJcbiAgfVxyXG5cclxuICAvLyBTbWFsbCB0ZXh0XHJcbiAgc21hbGwge1xyXG4gICAgZm9udC1zaXplOiAkc21hbGwtZm9udC1zaXplO1xyXG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XHJcbiAgfVxyXG5cclxuICAvLyBIZWFkaW5nc1xyXG4gIGgxLCAuaDEsXHJcbiAgaDIsIC5oMixcclxuICBoMywgLmgzLFxyXG4gIGg0LCAuaDQsXHJcbiAgaDUsIC5oNSxcclxuICBoNiwgLmg2IHtcclxuICAgIGZvbnQtZmFtaWx5OiAkaGVhZGVyLWZvbnQtZmFtaWx5O1xyXG4gICAgZm9udC1zdHlsZTogJGhlYWRlci1mb250LXN0eWxlO1xyXG4gICAgZm9udC13ZWlnaHQ6ICRoZWFkZXItZm9udC13ZWlnaHQ7XHJcbiAgICBjb2xvcjogJGhlYWRlci1jb2xvcjtcclxuICAgIHRleHQtcmVuZGVyaW5nOiAkaGVhZGVyLXRleHQtcmVuZGVyaW5nO1xyXG5cclxuICAgIHNtYWxsIHtcclxuICAgICAgbGluZS1oZWlnaHQ6IDA7XHJcbiAgICAgIGNvbG9yOiAkaGVhZGVyLXNtYWxsLWZvbnQtY29sb3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBIZWFkaW5nIHN0eWxlc1xyXG4gIEBlYWNoICRzaXplLCAkaGVhZGVycyBpbiAkaGVhZGVyLXN0eWxlcyB7XHJcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XHJcbiAgICAgIEBlYWNoICRoZWFkZXIsICRoZWFkZXItZGVmcyBpbiAkaGVhZGVycyB7XHJcbiAgICAgICAgJGZvbnQtc2l6ZS10ZW1wOiAxcmVtO1xyXG4gICAgICAgICN7JGhlYWRlcn0sIC4jeyRoZWFkZXJ9IHtcclxuXHJcbiAgICAgICAgICBAaWYgbWFwLWhhcy1rZXkoJGhlYWRlci1kZWZzLCBmb250LXNpemUpIHtcclxuICAgICAgICAgICAgJGZvbnQtc2l6ZS10ZW1wOiByZW0tY2FsYyhtYXAtZ2V0KCRoZWFkZXItZGVmcywgZm9udC1zaXplKSk7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS10ZW1wO1xyXG4gICAgICAgICAgfSBAZWxzZSBpZiBtYXAtaGFzLWtleSgkaGVhZGVyLWRlZnMsIGZzKSB7XHJcbiAgICAgICAgICAgICRmb250LXNpemUtdGVtcDogcmVtLWNhbGMobWFwLWdldCgkaGVhZGVyLWRlZnMsIGZzKSk7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS10ZW1wO1xyXG4gICAgICAgICAgfSBAZWxzZSBpZiAkc2l6ZSA9PSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS10ZW1wO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGlmIG1hcC1oYXMta2V5KCRoZWFkZXItZGVmcywgbGluZS1oZWlnaHQpIHtcclxuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IHVuaXRsZXNzLWNhbGMobWFwLWdldCgkaGVhZGVyLWRlZnMsIGxpbmUtaGVpZ2h0KSwgJGZvbnQtc2l6ZS10ZW1wKTtcclxuICAgICAgICAgIH0gQGVsc2UgaWYgbWFwLWhhcy1rZXkoJGhlYWRlci1kZWZzLCBsaCkge1xyXG4gICAgICAgICAgICBsaW5lLWhlaWdodDogdW5pdGxlc3MtY2FsYyhtYXAtZ2V0KCRoZWFkZXItZGVmcywgbGgpLCAkZm9udC1zaXplLXRlbXApO1xyXG4gICAgICAgICAgfSBAZWxzZSBpZiAkc2l6ZSA9PSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XHJcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiB1bml0bGVzcy1jYWxjKCRoZWFkZXItbGluZWhlaWdodCwgJGZvbnQtc2l6ZS10ZW1wKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBAaWYgbWFwLWhhcy1rZXkoJGhlYWRlci1kZWZzLCBtYXJnaW4tdG9wKSB7XHJcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IHJlbS1jYWxjKG1hcC1nZXQoJGhlYWRlci1kZWZzLCBtYXJnaW4tdG9wKSk7XHJcbiAgICAgICAgICB9IEBlbHNlIGlmIG1hcC1oYXMta2V5KCRoZWFkZXItZGVmcywgbXQpIHtcclxuICAgICAgICAgICAgbWFyZ2luLXRvcDogcmVtLWNhbGMobWFwLWdldCgkaGVhZGVyLWRlZnMsIG10KSk7XHJcbiAgICAgICAgICB9IEBlbHNlIGlmICRzaXplID09ICQtemYtemVyby1icmVha3BvaW50IHtcclxuICAgICAgICAgICAgbWFyZ2luLXRvcDogMDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiBtYXAtaGFzLWtleSgkaGVhZGVyLWRlZnMsIG1hcmdpbi1ib3R0b20pIHtcclxuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMobWFwLWdldCgkaGVhZGVyLWRlZnMsIG1hcmdpbi1ib3R0b20pKTtcclxuICAgICAgICAgIH0gQGVsc2UgaWYgbWFwLWhhcy1rZXkoJGhlYWRlci1kZWZzLCBtYikge1xyXG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYyhtYXAtZ2V0KCRoZWFkZXItZGVmcywgbWIpKTtcclxuICAgICAgICAgIH0gQGVsc2UgaWYgJHNpemUgPT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xyXG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYygkaGVhZGVyLW1hcmdpbi1ib3R0b20pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gTGlua3NcclxuICBhIHtcclxuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xyXG4gICAgY29sb3I6ICRhbmNob3ItY29sb3I7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246ICRhbmNob3ItdGV4dC1kZWNvcmF0aW9uO1xyXG5cclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuXHJcbiAgICAmOmhvdmVyLFxyXG4gICAgJjpmb2N1cyB7XHJcbiAgICAgIGNvbG9yOiAkYW5jaG9yLWNvbG9yLWhvdmVyO1xyXG4gICAgICBAaWYgJGFuY2hvci10ZXh0LWRlY29yYXRpb24taG92ZXIgIT0gJGFuY2hvci10ZXh0LWRlY29yYXRpb24ge1xyXG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogJGFuY2hvci10ZXh0LWRlY29yYXRpb24taG92ZXI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpbWcge1xyXG4gICAgICBib3JkZXI6IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBIb3Jpem9udGFsIHJ1bGVcclxuICBociB7XHJcbiAgICBjbGVhcjogYm90aDtcclxuXHJcbiAgICBtYXgtd2lkdGg6ICRoci13aWR0aDtcclxuICAgIGhlaWdodDogMDtcclxuICAgIG1hcmdpbjogJGhyLW1hcmdpbjtcclxuXHJcbiAgICBib3JkZXItdG9wOiAwO1xyXG4gICAgYm9yZGVyLXJpZ2h0OiAwO1xyXG4gICAgYm9yZGVyLWJvdHRvbTogJGhyLWJvcmRlcjtcclxuICAgIGJvcmRlci1sZWZ0OiAwO1xyXG4gIH1cclxuXHJcbiAgLy8gTGlzdHNcclxuICB1bCxcclxuICBvbCxcclxuICBkbCB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAkbGlzdC1tYXJnaW4tYm90dG9tO1xyXG4gICAgbGlzdC1zdHlsZS1wb3NpdGlvbjogJGxpc3Qtc3R5bGUtcG9zaXRpb247XHJcbiAgICBsaW5lLWhlaWdodDogJGxpc3QtbGluZWhlaWdodDtcclxuICB9XHJcblxyXG4gIC8vIExpc3QgaXRlbXNcclxuICBsaSB7XHJcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XHJcbiAgfVxyXG5cclxuICAvLyBVbm9yZGVyZWQgbGlzdHNcclxuICB1bCB7XHJcbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkbGlzdC1zaWRlLW1hcmdpbjtcclxuICAgIGxpc3Qtc3R5bGUtdHlwZTogJGxpc3Qtc3R5bGUtdHlwZTtcclxuICB9XHJcblxyXG4gIC8vIE9yZGVyZWQgbGlzdHNcclxuICBvbCB7XHJcbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkbGlzdC1zaWRlLW1hcmdpbjtcclxuICB9XHJcblxyXG4gIC8vIE5lc3RlZCB1bm9yZGVyZWQvb3JkZXJlZCBsaXN0c1xyXG4gIHVsLCBvbCB7XHJcbiAgICAmICYge1xyXG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkbGlzdC1uZXN0ZWQtc2lkZS1tYXJnaW47XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBEZWZpbml0aW9uIGxpc3RzXHJcbiAgZGwge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogJGRlZm5saXN0LW1hcmdpbi1ib3R0b207XHJcblxyXG4gICAgZHQge1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAkZGVmbmxpc3QtdGVybS1tYXJnaW4tYm90dG9tO1xyXG4gICAgICBmb250LXdlaWdodDogJGRlZm5saXN0LXRlcm0td2VpZ2h0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gQmxvY2txdW90ZXNcclxuICBibG9ja3F1b3RlIHtcclxuICAgIG1hcmdpbjogMCAwICRwYXJhZ3JhcGgtbWFyZ2luLWJvdHRvbTtcclxuICAgIHBhZGRpbmc6ICRibG9ja3F1b3RlLXBhZGRpbmc7XHJcbiAgICBib3JkZXItI3skZ2xvYmFsLWxlZnR9OiAkYmxvY2txdW90ZS1ib3JkZXI7XHJcblxyXG4gICAgJiwgcCB7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAkcGFyYWdyYXBoLWxpbmVoZWlnaHQ7XHJcbiAgICAgIGNvbG9yOiAkYmxvY2txdW90ZS1jb2xvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIENpdGF0aW9uc1xyXG4gIGNpdGUge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBmb250LXNpemU6ICRjaXRlLWZvbnQtc2l6ZTtcclxuICAgIGNvbG9yOiAkY2l0ZS1jb2xvcjtcclxuXHJcbiAgICAmOmJlZm9yZSB7XHJcbiAgICAgIGNvbnRlbnQ6ICRjaXRlLXBzZXVkby1jb250ZW50O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gQWJicmV2aWF0aW9uc1xyXG4gIGFiYnIsIGFiYnJbdGl0bGVdIHtcclxuICAgIGJvcmRlci1ib3R0b206ICRhYmJyLXVuZGVybGluZTtcclxuICAgIGN1cnNvcjogaGVscDtcclxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICB9XHJcblxyXG4gIC8vIEZpZ3VyZXNcclxuICBmaWd1cmUge1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gIH1cclxuICBcclxuICAvLyBDb2RlXHJcbiAgY29kZSB7XHJcbiAgICBwYWRkaW5nOiAkY29kZS1wYWRkaW5nO1xyXG5cclxuICAgIGJvcmRlcjogJGNvZGUtYm9yZGVyO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvZGUtYmFja2dyb3VuZDtcclxuXHJcbiAgICBmb250LWZhbWlseTogJGNvZGUtZm9udC1mYW1pbHk7XHJcbiAgICBmb250LXdlaWdodDogJGNvZGUtZm9udC13ZWlnaHQ7XHJcbiAgICBjb2xvcjogJGNvZGUtY29sb3I7XHJcbiAgfVxyXG5cclxuICAvLyBLZXlzdHJva2VzXHJcbiAga2JkIHtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIHBhZGRpbmc6ICRrZXlzdHJva2UtcGFkZGluZztcclxuXHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAka2V5c3Ryb2tlLWJhY2tncm91bmQ7XHJcblxyXG4gICAgZm9udC1mYW1pbHk6ICRrZXlzdHJva2UtZm9udDtcclxuICAgIGNvbG9yOiAka2V5c3Ryb2tlLWNvbG9yO1xyXG5cclxuICAgIEBpZiBoYXMtdmFsdWUoJGtleXN0cm9rZS1yYWRpdXMpIHtcclxuICAgICAgYm9yZGVyLXJhZGl1czogJGtleXN0cm9rZS1yYWRpdXM7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCB0eXBvZ3JhcGh5LWhlbHBlcnNcclxuLy8vL1xyXG5cclxuLy8vIERlZmF1bHQgZm9udCBzaXplIGZvciBsZWFkIHBhcmFncmFwaHMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGxlYWQtZm9udC1zaXplOiAkZ2xvYmFsLWZvbnQtc2l6ZSAqIDEuMjUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBsaW5lIGhlaWdodCBmb3IgbGVhZCBwYXJhZ3JhcGhzLlxyXG4vLy8gQHR5cGUgU3RyaW5nXHJcbiRsZWFkLWxpbmVoZWlnaHQ6IDEuNiAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGxpbmUgaGVpZ2h0IGZvciBzdWJoZWFkZXJzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRzdWJoZWFkZXItbGluZWhlaWdodDogMS40ICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgZm9udCBjb2xvciBmb3Igc3ViaGVhZGVycy5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRzdWJoZWFkZXItY29sb3I6ICRkYXJrLWdyYXkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBmb250IHdlaWdodCBmb3Igc3ViaGVhZGVycy5cclxuLy8vIEB0eXBlIFN0cmluZ1xyXG4kc3ViaGVhZGVyLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWwgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCB0b3AgbWFyZ2luIGZvciBzdWJoaGVhZGVycy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kc3ViaGVhZGVyLW1hcmdpbi10b3A6IDAuMnJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGJvdHRvbSBtYXJnaW4gZm9yIHN1YmhlYWRlcnMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHN1YmhlYWRlci1tYXJnaW4tYm90dG9tOiAwLjVyZW0gIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBmb250IHNpemUgZm9yIHN0YXRpc3RpYyBudW1iZXJzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRzdGF0LWZvbnQtc2l6ZTogMi41cmVtICFkZWZhdWx0O1xyXG5cclxuQG1peGluIGZvdW5kYXRpb24tdHlwb2dyYXBoeS1oZWxwZXJzIHtcclxuICAvLyBVc2UgdG8gY3JlYXRlIGEgc3ViaGVhZGluZyB1bmRlciBhIG1haW4gaGVhZGVyXHJcbiAgLy8gTWFrZSBzdXJlIHlvdSBwYWlyIHRoZSB0d28gZWxlbWVudHMgaW4gYSA8aGVhZGVyPiBlbGVtZW50LCBsaWtlIHRoaXM6XHJcbiAgLy8gPGhlYWRlcj5cclxuICAvLyAgIDxoMT5IZWFkaW5nPC9oMT5cclxuICAvLyAgIDxoMj5TdWJoZWFkaW5nPC9oMj5cclxuICAvLyA8L2hlYWRlcj5cclxuICAuc3ViaGVhZGVyIHtcclxuICAgIG1hcmdpbi10b3A6ICRzdWJoZWFkZXItbWFyZ2luLXRvcDtcclxuICAgIG1hcmdpbi1ib3R0b206ICRzdWJoZWFkZXItbWFyZ2luLWJvdHRvbTtcclxuXHJcbiAgICBmb250LXdlaWdodDogJHN1YmhlYWRlci1mb250LXdlaWdodDtcclxuICAgIGxpbmUtaGVpZ2h0OiAkc3ViaGVhZGVyLWxpbmVoZWlnaHQ7XHJcbiAgICBjb2xvcjogJHN1YmhlYWRlci1jb2xvcjtcclxuICB9XHJcblxyXG4gIC8vIFVzZSB0byBzdHlsZSBhbiBpbnRyb2R1Y3RvcnkgbGVhZCwgZGVjaywgYmx1cmIsIGV0Yy5cclxuICAubGVhZCB7XHJcbiAgICBmb250LXNpemU6ICRsZWFkLWZvbnQtc2l6ZTtcclxuICAgIGxpbmUtaGVpZ2h0OiAkbGVhZC1saW5laGVpZ2h0O1xyXG4gIH1cclxuXHJcbiAgLy8gVXNlIHRvIHN0eWxlIGEgbGFyZ2UgbnVtYmVyIHRvIGRpc3BsYXkgYSBzdGF0aXN0aWNcclxuICAuc3RhdCB7XHJcbiAgICBmb250LXNpemU6ICRzdGF0LWZvbnQtc2l6ZTtcclxuICAgIGxpbmUtaGVpZ2h0OiAxO1xyXG5cclxuICAgIHAgKyAmIHtcclxuICAgICAgbWFyZ2luLXRvcDogLTFyZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1bCwgb2wge1xyXG4gICAgLy8gVXNlIHRvIHJlbW92ZSBudW1iZXJzIGZyb20gb3JkZXJlZCBsaXN0ICYgYnVsbGV0cyBmcm9tIHVub3JkZXJlZCBsaXN0XHJcbiAgICAmLm5vLWJ1bGxldCB7XHJcbiAgICAgIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06IDA7XHJcbiAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLXRleHQtYWxpZ25tZW50IHtcclxuICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcclxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcclxuICAgICAgQGVhY2ggJGFsaWduIGluIChsZWZ0LCByaWdodCwgY2VudGVyLCBqdXN0aWZ5KSB7XHJcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcclxuICAgICAgICAgIC4jeyRzaXplfS10ZXh0LSN7JGFsaWdufSB7XHJcbiAgICAgICAgICAgIHRleHQtYWxpZ246ICRhbGlnbjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgQGVsc2Uge1xyXG4gICAgICAgICAgLnRleHQtI3skYWxpZ259IHtcclxuICAgICAgICAgICAgdGV4dC1hbGlnbjogJGFsaWduO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8gSWYgYHRydWVgLCBhbGwgZWxlbWVudHMgd2lsbCBoYXZlIHRyYW5zcGFyZW50IGJhY2tncm91bmRzIHdoZW4gcHJpbnRlZCwgdG8gc2F2ZSBvbiBpbmsuXHJcbi8vLyBAdHlwZSBCb29sZWFuXHJcbi8vLyBAZ3JvdXAgZ2xvYmFsXHJcbiRwcmludC10cmFuc3BhcmVudC1iYWNrZ3JvdW5kczogdHJ1ZSAhZGVmYXVsdDtcclxuJHByaW50LWhyZWZzOiB0cnVlICFkZWZhdWx0O1xyXG5cclxuLy8gc2Fzcy1saW50OmRpc2FibGUtYWxsXHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1wcmludC1zdHlsZXMge1xyXG4gIC5zaG93LWZvci1wcmludCB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfVxyXG5cclxuICBAbWVkaWEgcHJpbnQge1xyXG4gICAgKiB7XHJcbiAgICAgIEBpZiAkcHJpbnQtdHJhbnNwYXJlbnQtYmFja2dyb3VuZHMge1xyXG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcclxuXHJcbiAgICAgIGNvbG9yOiBibGFjayAhaW1wb3J0YW50OyAvLyBCbGFjayBwcmludHMgZmFzdGVyOiBoNWJwLmNvbS9zXHJcbiAgICAgIHRleHQtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLnNob3ctZm9yLXByaW50IHsgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfVxyXG4gICAgLmhpZGUtZm9yLXByaW50IHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XHJcblxyXG4gICAgdGFibGUuc2hvdy1mb3ItcHJpbnQgeyBkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50OyB9XHJcbiAgICB0aGVhZC5zaG93LWZvci1wcmludCB7IGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cCAhaW1wb3J0YW50OyB9XHJcbiAgICB0Ym9keS5zaG93LWZvci1wcmludCB7IGRpc3BsYXk6IHRhYmxlLXJvdy1ncm91cCAhaW1wb3J0YW50OyB9XHJcbiAgICB0ci5zaG93LWZvci1wcmludCB7IGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50OyB9XHJcbiAgICB0ZC5zaG93LWZvci1wcmludCB7IGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsgfVxyXG4gICAgdGguc2hvdy1mb3ItcHJpbnQgeyBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7IH1cclxuXHJcbiAgICAvLyBEaXNwbGF5IHRoZSBVUkwgb2YgYSBsaW5rIGFmdGVyIHRoZSB0ZXh0XHJcbiAgICBhLFxyXG4gICAgYTp2aXNpdGVkIHsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7fVxyXG4gICAgQGlmICRwcmludC1ocmVmcyB7XHJcbiAgICAgIGFbaHJlZl06YWZ0ZXIgeyBjb250ZW50OiAnICgnIGF0dHIoaHJlZikgJyknOyB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRG9uJ3QgZGlzcGxheSB0aGUgVVJMIGZvciBpbWFnZXMgb3IgSmF2YVNjcmlwdC9pbnRlcm5hbCBsaW5rc1xyXG4gICAgLmlyIGE6YWZ0ZXIsXHJcbiAgICBhW2hyZWZePSdqYXZhc2NyaXB0OiddOmFmdGVyLFxyXG4gICAgYVtocmVmXj0nIyddOmFmdGVyIHsgY29udGVudDogJyc7IH1cclxuXHJcbiAgICAvLyBEaXNwbGF5IHdoYXQgYW4gYWJicmV2aWF0aW9uIHN0YW5kcyBmb3IgYWZ0ZXIgdGhlIHRleHRcclxuICAgIGFiYnJbdGl0bGVdOmFmdGVyIHsgY29udGVudDogJyAoJyBhdHRyKHRpdGxlKSAnKSc7IH1cclxuXHJcbiAgICAvLyBQcmV2ZW50IHBhZ2UgYnJlYWtzIGluIHRoZSBtaWRkbGUgb2YgYSBibG9ja3F1b3RlIG9yIHByZWZvcm1hdHRlZCB0ZXh0IGJsb2NrXHJcbiAgICBwcmUsXHJcbiAgICBibG9ja3F1b3RlIHtcclxuICAgICAgYm9yZGVyOiAxcHggc29saWQgJGRhcmstZ3JheTtcclxuICAgICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGg1YnAuY29tL3RcclxuICAgIHRoZWFkIHsgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwOyB9XHJcblxyXG4gICAgdHIsXHJcbiAgICBpbWcgeyBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7IH1cclxuXHJcbiAgICBpbWcgeyBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgfVxyXG5cclxuICAgIEBwYWdlIHsgbWFyZ2luOiAwLjVjbTsgfVxyXG5cclxuICAgIHAsXHJcbiAgICBoMixcclxuICAgIGgzIHtcclxuICAgICAgb3JwaGFuczogMztcclxuICAgICAgd2lkb3dzOiAzO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEF2b2lkIHBhZ2UgYnJlYWtzIGFmdGVyIGEgaGVhZGluZ1xyXG4gICAgaDIsXHJcbiAgICBoMyB7IHBhZ2UtYnJlYWstYWZ0ZXI6IGF2b2lkOyB9XHJcblxyXG4gICAgLy8gSGVscGVyIHRvIHJlLWFsbG93IHBhZ2UgYnJlYWtzIGluIHRoZSBtaWRkbGUgb2YgY2VydGFpbiBlbGVtZW50cyAoZS5nLiBwcmUsIGJsb2NrcXVvdGUsIHRyKVxyXG4gICAgLnByaW50LWJyZWFrLWluc2lkZSB7XHJcbiAgICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdXRvO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgZm9ybXNcclxuLy8vL1xyXG5cclxuLy8vIEdsb2JhbCBzcGFjaW5nIGZvciBmb3JtIGVsZW1lbnRzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRmb3JtLXNwYWNpbmc6IHJlbS1jYWxjKDE2KSAhZGVmYXVsdDtcclxuXHJcbkBpbXBvcnQgJ3RleHQnO1xyXG5AaW1wb3J0ICdjaGVja2JveCc7XHJcbkBpbXBvcnQgJ2xhYmVsJztcclxuQGltcG9ydCAnaGVscC10ZXh0JztcclxuQGltcG9ydCAnaW5wdXQtZ3JvdXAnO1xyXG5AaW1wb3J0ICdmaWVsZHNldCc7XHJcbkBpbXBvcnQgJ3NlbGVjdCc7XHJcbkBpbXBvcnQgJ3JhbmdlJztcclxuQGltcG9ydCAncHJvZ3Jlc3MnO1xyXG5AaW1wb3J0ICdtZXRlcic7XHJcbkBpbXBvcnQgJ2Vycm9yJztcclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLWZvcm1zIHtcclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZvcm0tdGV4dDtcclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZvcm0tY2hlY2tib3g7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mb3JtLWxhYmVsO1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZm9ybS1oZWxwdGV4dDtcclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZvcm0tcHJlcG9zdGZpeDtcclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZvcm0tZmllbGRzZXQ7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mb3JtLXNlbGVjdDtcclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZvcm0tZXJyb3I7XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIGZvcm1zXHJcbi8vLy9cclxuXHJcbi8vLyBGb250IGNvbG9yIG9mIHRleHQgaW5wdXRzLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGlucHV0LWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRm9udCBjb2xvciBvZiBwbGFjZWhvbGRlciB0ZXh0IHdpdGhpbiB0ZXh0IGlucHV0cy5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRpbnB1dC1wbGFjZWhvbGRlci1jb2xvcjogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xyXG5cclxuLy8vIEZvbnQgZmFtaWx5IG9mIHRleHQgaW5wdXRzLlxyXG4vLy8gQHR5cGUgRm9udFxyXG4kaW5wdXQtZm9udC1mYW1pbHk6IGluaGVyaXQgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRm9udCBzaXplIG9mIHRleHQgaW5wdXRzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRpbnB1dC1mb250LXNpemU6IHJlbS1jYWxjKDE2KSAhZGVmYXVsdDtcclxuXHJcbi8vLyBGb250IHdlaWdodCBvZiB0ZXh0IGlucHV0cy5cclxuLy8vIEB0eXBlIEtleXdvcmRcclxuJGlucHV0LWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWwgIWRlZmF1bHQ7XHJcblxyXG4vLy8gTGluZSBoZWlnaHQgb2YgdGV4dCBpbnB1dHMuXHJcbi8vLyBAdHlwZSBLZXl3b3JkXHJcbiRpbnB1dC1saW5lLWhlaWdodDogJGdsb2JhbC1saW5laGVpZ2h0ICFkZWZhdWx0O1xyXG5cclxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgdGV4dCBpbnB1dHMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kaW5wdXQtYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xyXG5cclxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgZm9jdXNlZCBvZiB0ZXh0IGlucHV0cy5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRpbnB1dC1iYWNrZ3JvdW5kLWZvY3VzOiAkd2hpdGUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBkaXNhYmxlZCB0ZXh0IGlucHV0cy5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRpbnB1dC1iYWNrZ3JvdW5kLWRpc2FibGVkOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcclxuXHJcbi8vLyBCb3JkZXIgYXJvdW5kIHRleHQgaW5wdXRzLlxyXG4vLy8gQHR5cGUgQm9yZGVyXHJcbiRpbnB1dC1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQm9yZGVyIGFyb3VuZCBmb2N1c2VkIHRleHQgaW5wdXRzLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGlucHV0LWJvcmRlci1mb2N1czogMXB4IHNvbGlkICRkYXJrLWdyYXkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gUGFkZGluZyBvZiB0ZXh0IGlucHV0cy5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRpbnB1dC1wYWRkaW5nOiAkZm9ybS1zcGFjaW5nIC8gMiAhZGVmYXVsdDtcclxuXHJcbi8vLyBCb3ggc2hhZG93IGluc2lkZSB0ZXh0IGlucHV0cyB3aGVuIG5vdCBmb2N1c2VkLlxyXG4vLy8gQHR5cGUgU2hhZG93XHJcbiRpbnB1dC1zaGFkb3c6IGluc2V0IDAgMXB4IDJweCByZ2JhKCRibGFjaywgMC4xKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBCb3ggc2hhZG93IG91dHNpZGUgdGV4dCBpbnB1dHMgd2hlbiBmb2N1c2VkLlxyXG4vLy8gQHR5cGUgU2hhZG93XHJcbiRpbnB1dC1zaGFkb3ctZm9jdXM6IDAgMCA1cHggJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xyXG5cclxuLy8vIEN1cnNvciB0byB1c2Ugd2hlbiBob3ZlcmluZyBvdmVyIGEgZGlzYWJsZWQgdGV4dCBpbnB1dC5cclxuLy8vIEB0eXBlIEN1cnNvclxyXG4kaW5wdXQtY3Vyc29yLWRpc2FibGVkOiBub3QtYWxsb3dlZCAhZGVmYXVsdDtcclxuXHJcbi8vLyBQcm9wZXJ0aWVzIHRvIHRyYW5zaXRpb24gb24gdGV4dCBpbnB1dHMuXHJcbi8vLyBAdHlwZSBUcmFuc2l0aW9uXHJcbiRpbnB1dC10cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuNXMsIGJvcmRlci1jb2xvciAwLjI1cyBlYXNlLWluLW91dCAhZGVmYXVsdDtcclxuXHJcbi8vLyBFbmFibGVzIHRoZSB1cC9kb3duIGJ1dHRvbnMgdGhhdCBDaHJvbWUgYW5kIEZpcmVmb3ggYWRkIHRvIGA8aW5wdXQgdHlwZT0nbnVtYmVyJz5gIGVsZW1lbnRzLlxyXG4vLy8gQHR5cGUgQm9vbGVhblxyXG4kaW5wdXQtbnVtYmVyLXNwaW5uZXJzOiB0cnVlICFkZWZhdWx0O1xyXG5cclxuLy8vIFJhZGl1cyBmb3IgdGV4dCBpbnB1dHMuXHJcbi8vLyBAdHlwZSBCb3JkZXJcclxuJGlucHV0LXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQm9yZGVyIHJhZGl1cyBmb3IgZm9ybSBidXR0b25zLCBkZWZhdWx0ZWQgdG8gZ2xvYmFsLXJhZGl1cy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kZm9ybS1idXR0b24tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcclxuXHJcbkBtaXhpbiBmb3JtLWVsZW1lbnQge1xyXG4gICRoZWlnaHQ6ICgkaW5wdXQtZm9udC1zaXplICogdW5pdGxlc3MtY2FsYygkaW5wdXQtbGluZS1oZWlnaHQpKSArIChnZXQtc2lkZSgkaW5wdXQtcGFkZGluZywgJ3RvcCcpICsgZ2V0LXNpZGUoJGlucHV0LXBhZGRpbmcsICdib3R0b20nKSkgLSByZW0tY2FsYygxKTtcclxuXHJcbiAgZGlzcGxheTogYmxvY2s7XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6ICRoZWlnaHQ7XHJcbiAgbWFyZ2luOiAwIDAgJGZvcm0tc3BhY2luZztcclxuICBwYWRkaW5nOiAkaW5wdXQtcGFkZGluZztcclxuXHJcbiAgYm9yZGVyOiAkaW5wdXQtYm9yZGVyO1xyXG4gIGJvcmRlci1yYWRpdXM6ICRpbnB1dC1yYWRpdXM7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWJhY2tncm91bmQ7XHJcbiAgYm94LXNoYWRvdzogJGlucHV0LXNoYWRvdztcclxuXHJcbiAgZm9udC1mYW1pbHk6ICRpbnB1dC1mb250LWZhbWlseTtcclxuICBmb250LXNpemU6ICRpbnB1dC1mb250LXNpemU7XHJcbiAgZm9udC13ZWlnaHQ6ICRpbnB1dC1mb250LXdlaWdodDtcclxuICBsaW5lLWhlaWdodDogJGlucHV0LWxpbmUtaGVpZ2h0O1xyXG4gIGNvbG9yOiAkaW5wdXQtY29sb3I7XHJcblxyXG4gIEBpZiBoYXMtdmFsdWUoJGlucHV0LXRyYW5zaXRpb24pIHtcclxuICAgIHRyYW5zaXRpb246ICRpbnB1dC10cmFuc2l0aW9uO1xyXG4gIH1cclxuXHJcbiAgLy8gRm9jdXMgc3RhdGVcclxuICAmOmZvY3VzIHtcclxuICAgIG91dGxpbmU6IG5vbmU7XHJcbiAgICBib3JkZXI6ICRpbnB1dC1ib3JkZXItZm9jdXM7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaW5wdXQtYmFja2dyb3VuZC1mb2N1cztcclxuICAgIGJveC1zaGFkb3c6ICRpbnB1dC1zaGFkb3ctZm9jdXM7XHJcblxyXG4gICAgQGlmIGhhcy12YWx1ZSgkaW5wdXQtdHJhbnNpdGlvbikge1xyXG4gICAgICB0cmFuc2l0aW9uOiAkaW5wdXQtdHJhbnNpdGlvbjtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLWZvcm0tdGV4dCB7XHJcbiAgLy8gVGV4dCBpbnB1dHNcclxuICAje3RleHQtaW5wdXRzKCl9LFxyXG4gIHRleHRhcmVhIHtcclxuICAgIEBpbmNsdWRlIGZvcm0tZWxlbWVudDtcclxuICAgIGFwcGVhcmFuY2U6IG5vbmU7XHJcbiAgfVxyXG5cclxuICAvLyBUZXh0IGFyZWFzXHJcbiAgdGV4dGFyZWEge1xyXG4gICAgbWF4LXdpZHRoOiAxMDAlO1xyXG5cclxuICAgICZbcm93c10ge1xyXG4gICAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbnB1dCxcclxuICB0ZXh0YXJlYSB7XHJcbiAgICAvLyBQbGFjZWhvbGRlciB0ZXh0XHJcbiAgICAmOjpwbGFjZWhvbGRlciB7XHJcbiAgICAgIGNvbG9yOiAkaW5wdXQtcGxhY2Vob2xkZXItY29sb3I7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRGlzYWJsZWQvcmVhZG9ubHkgc3RhdGVcclxuICAgICY6ZGlzYWJsZWQsXHJcbiAgICAmW3JlYWRvbmx5XSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1iYWNrZ3JvdW5kLWRpc2FibGVkO1xyXG4gICAgICBjdXJzb3I6ICRpbnB1dC1jdXJzb3ItZGlzYWJsZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBSZXNldCBzdHlsZXMgb24gYnV0dG9uLWxpa2UgaW5wdXRzXHJcbiAgW3R5cGU9J3N1Ym1pdCddLFxyXG4gIFt0eXBlPSdidXR0b24nXSB7XHJcbiAgICBhcHBlYXJhbmNlOiBub25lO1xyXG4gICAgYm9yZGVyLXJhZGl1czogJGZvcm0tYnV0dG9uLXJhZGl1cztcclxuICB9XHJcblxyXG4gIC8vIFJlc2V0IE5vcm1hbGl6ZSBzZXR0aW5nIGNvbnRlbnQtYm94IHRvIHNlYXJjaCBlbGVtZW50c1xyXG4gIGlucHV0W3R5cGU9J3NlYXJjaCddIHsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1xdWFsaWZ5aW5nLWVsZW1lbnRzXHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gIH1cclxuXHJcbiAgLy8gTnVtYmVyIGlucHV0IHN0eWxlc1xyXG4gIFt0eXBlPSdudW1iZXInXSB7XHJcbiAgICBAaWYgbm90ICRpbnB1dC1udW1iZXItc3Bpbm5lcnMge1xyXG4gICAgICAtbW96LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby12ZW5kb3ItcHJlZml4XHJcblxyXG4gICAgICAmOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxyXG4gICAgICAmOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcclxuICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tdmVuZG9yLXByZWZpeFxyXG4gICAgICAgIG1hcmdpbjogMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgZm9ybXNcclxuLy8vL1xyXG5cclxuQG1peGluIGZvdW5kYXRpb24tZm9ybS1jaGVja2JveCB7XHJcbiAgW3R5cGU9J2ZpbGUnXSxcclxuICBbdHlwZT0nY2hlY2tib3gnXSxcclxuICBbdHlwZT0ncmFkaW8nXSB7XHJcbiAgICBtYXJnaW46IDAgMCAkZm9ybS1zcGFjaW5nO1xyXG4gIH1cclxuXHJcbiAgLy8gU3R5bGVzIGZvciBpbnB1dC9sYWJlbCBzaWJsaW5nc1xyXG4gIFt0eXBlPSdjaGVja2JveCddICsgbGFiZWwsXHJcbiAgW3R5cGU9J3JhZGlvJ10gKyBsYWJlbCB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XHJcblxyXG4gICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogJGZvcm0tc3BhY2luZyAqIDAuNTtcclxuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkZm9ybS1zcGFjaW5nO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMDtcclxuXHJcbiAgICAmW2Zvcl0ge1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBTdHlsZXMgZm9yIGlucHV0cyBpbnNpZGUgbGFiZWxzXHJcbiAgbGFiZWwgPiBbdHlwZT0nY2hlY2tib3gnXSxcclxuICBsYWJlbCA+IFt0eXBlPSdyYWRpbyddIHtcclxuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkZm9ybS1zcGFjaW5nICogMC41O1xyXG4gIH1cclxuXHJcbiAgLy8gTm9ybWFsaXplIGZpbGUgaW5wdXQgd2lkdGhcclxuICBbdHlwZT0nZmlsZSddIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgZm9ybXNcclxuLy8vL1xyXG5cclxuLy8vIENvbG9yIGZvciBmb3JtIGxhYmVscy5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRmb3JtLWxhYmVsLWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRm9udCBzaXplIGZvciBmb3JtIGxhYmVscy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kZm9ybS1sYWJlbC1mb250LXNpemU6IHJlbS1jYWxjKDE0KSAhZGVmYXVsdDtcclxuXHJcbi8vLyBGb250IHdlaWdodCBmb3IgZm9ybSBsYWJlbHMuXHJcbi8vLyBAdHlwZSBLZXl3b3JkXHJcbiRmb3JtLWxhYmVsLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWwgIWRlZmF1bHQ7XHJcblxyXG4vLy8gTGluZSBoZWlnaHQgZm9yIGZvcm0gbGFiZWxzLiBUaGUgaGlnaGVyIHRoZSBudW1iZXIsIHRoZSBtb3JlIHNwYWNlIGJldHdlZW4gdGhlIGxhYmVsIGFuZCBpdHMgaW5wdXQgZmllbGQuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGZvcm0tbGFiZWwtbGluZS1oZWlnaHQ6IDEuOCAhZGVmYXVsdDtcclxuXHJcbkBtaXhpbiBmb3JtLWxhYmVsIHtcclxuICBkaXNwbGF5OiBibG9jaztcclxuICBtYXJnaW46IDA7XHJcblxyXG4gIGZvbnQtc2l6ZTogJGZvcm0tbGFiZWwtZm9udC1zaXplO1xyXG4gIGZvbnQtd2VpZ2h0OiAkZm9ybS1sYWJlbC1mb250LXdlaWdodDtcclxuICBsaW5lLWhlaWdodDogJGZvcm0tbGFiZWwtbGluZS1oZWlnaHQ7XHJcbiAgY29sb3I6ICRmb3JtLWxhYmVsLWNvbG9yO1xyXG59XHJcblxyXG5AbWl4aW4gZm9ybS1sYWJlbC1taWRkbGUge1xyXG4gICRpbnB1dC1ib3JkZXItd2lkdGg6IGdldC1ib3JkZXItdmFsdWUoJGlucHV0LWJvcmRlciwgd2lkdGgpO1xyXG5cclxuICBtYXJnaW46IDAgMCAkZm9ybS1zcGFjaW5nO1xyXG4gIHBhZGRpbmc6ICgkZm9ybS1zcGFjaW5nIC8gMiArIHJlbS1jYWxjKCRpbnB1dC1ib3JkZXItd2lkdGgpKSAwO1xyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1mb3JtLWxhYmVsIHtcclxuICBsYWJlbCB7XHJcbiAgICBAaW5jbHVkZSBmb3JtLWxhYmVsO1xyXG5cclxuICAgICYubWlkZGxlIHtcclxuICAgICAgQGluY2x1ZGUgZm9ybS1sYWJlbC1taWRkbGU7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBmb3Jtc1xyXG4vLy8vXHJcblxyXG4vLy8gRGVmYXVsdCBjb2xvciBmb3IgaGVscCB0ZXh0LlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGhlbHB0ZXh0LWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBmb250IHNpemUgZm9yIGhlbHAgdGV4dC5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kaGVscHRleHQtZm9udC1zaXplOiByZW0tY2FsYygxMykgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBmb250IHN0eWxlIGZvciBoZWxwIHRleHQuXHJcbi8vLyBAdHlwZSBLZXl3b3JkXHJcbiRoZWxwdGV4dC1mb250LXN0eWxlOiBpdGFsaWMgIWRlZmF1bHQ7XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1mb3JtLWhlbHB0ZXh0IHtcclxuICAuaGVscC10ZXh0IHtcclxuICAgICRtYXJnaW4tdG9wOiAoJGZvcm0tc3BhY2luZyAqIDAuNSkgKiAtMTtcclxuXHJcbiAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLXRvcDtcclxuICAgIGZvbnQtc2l6ZTogJGhlbHB0ZXh0LWZvbnQtc2l6ZTtcclxuICAgIGZvbnQtc3R5bGU6ICRoZWxwdGV4dC1mb250LXN0eWxlO1xyXG4gICAgY29sb3I6ICRoZWxwdGV4dC1jb2xvcjtcclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIGZvcm1zXHJcbi8vLy9cclxuXHJcbi8vLyBDb2xvciBvZiBsYWJlbHMgcHJlZml4ZWQgdG8gYW4gaW5wdXQuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kaW5wdXQtcHJlZml4LWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBsYWJlbHMgcHJlZml4ZWQgdG8gYW4gaW5wdXQuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kaW5wdXQtcHJlZml4LWJhY2tncm91bmQ6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xyXG5cclxuLy8vIEJvcmRlciBhcm91bmQgbGFiZWxzIHByZWZpeGVkIHRvIGFuIGlucHV0LlxyXG4vLy8gQHR5cGUgQm9yZGVyXHJcbiRpbnB1dC1wcmVmaXgtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xyXG5cclxuLy8vIExlZnQvcmlnaHQgcGFkZGluZyBvZiBhbiBwcmUvcG9zdGZpeGVkIGlucHV0IGxhYmVsXHJcbiRpbnB1dC1wcmVmaXgtcGFkZGluZzogMXJlbSAhZGVmYXVsdDtcclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLWZvcm0tcHJlcG9zdGZpeCB7XHJcbiAgJGhlaWdodDogKCRpbnB1dC1mb250LXNpemUgKyAkZm9ybS1zcGFjaW5nICogMS41KTtcclxuXHJcbiAgLmlucHV0LWdyb3VwIHtcclxuICAgIGRpc3BsYXk6IGlmKCRnbG9iYWwtZmxleGJveCwgZmxleCwgdGFibGUpO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAkZm9ybS1zcGFjaW5nO1xyXG5cclxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xyXG4gICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcclxuICAgIH1cclxuXHJcbiAgICA+IDpmaXJzdC1jaGlsZCB7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IGlmKCRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gcnRsLCAwICRpbnB1dC1yYWRpdXMgJGlucHV0LXJhZGl1cyAwLCAkaW5wdXQtcmFkaXVzIDAgMCAkaW5wdXQtcmFkaXVzKTtcclxuICAgIH1cclxuXHJcbiAgICA+IDpsYXN0LWNoaWxkIHtcclxuICAgICAgPiAqIHtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiBpZigkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09IHJ0bCwgJGlucHV0LXJhZGl1cyAwIDAgJGlucHV0LXJhZGl1cywgMCAkaW5wdXQtcmFkaXVzICRpbnB1dC1yYWRpdXMgMCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICVpbnB1dC1ncm91cC1jaGlsZCB7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG5cclxuICAgIEBpZiBub3QgJGdsb2JhbC1mbGV4Ym94IHtcclxuICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcclxuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5pbnB1dC1ncm91cC1sYWJlbCB7XHJcbiAgICBAZXh0ZW5kICVpbnB1dC1ncm91cC1jaGlsZDtcclxuICAgIHBhZGRpbmc6IDAgJGlucHV0LXByZWZpeC1wYWRkaW5nO1xyXG4gICAgYm9yZGVyOiAkaW5wdXQtcHJlZml4LWJvcmRlcjtcclxuICAgIGJhY2tncm91bmQ6ICRpbnB1dC1wcmVmaXgtYmFja2dyb3VuZDtcclxuXHJcbiAgICBjb2xvcjogJGlucHV0LXByZWZpeC1jb2xvcjtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcblxyXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGZsZXg6IDAgMCBhdXRvO1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgfVxyXG4gICAgQGVsc2Uge1xyXG4gICAgICB3aWR0aDogMSU7XHJcbiAgICAgIGhlaWdodDogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICBAaWYgaGFzLXZhbHVlKCRpbnB1dC1wcmVmaXgtYm9yZGVyKSB7XHJcbiAgICAgICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICAgIGJvcmRlci0jeyRnbG9iYWwtcmlnaHR9OiAwO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmOmxhc3QtY2hpbGQge1xyXG4gICAgICAgIGJvcmRlci0jeyRnbG9iYWwtbGVmdH06IDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5pbnB1dC1ncm91cC1maWVsZCB7XHJcbiAgICBAZXh0ZW5kICVpbnB1dC1ncm91cC1jaGlsZDtcclxuICAgIGJvcmRlci1yYWRpdXM6IDA7XHJcblxyXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICAgIGZsZXg6IDEgMSAwcHg7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgemVyby11bml0XHJcbiAgICAgIGhlaWdodDogYXV0bztcclxuICAgICAgbWluLXdpZHRoOiAwO1xyXG4gICAgfVxyXG4gICAgQGVsc2Uge1xyXG4gICAgICBoZWlnaHQ6ICRoZWlnaHQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuaW5wdXQtZ3JvdXAtYnV0dG9uIHtcclxuICAgIEBleHRlbmQgJWlucHV0LWdyb3VwLWNoaWxkO1xyXG4gICAgcGFkZGluZy10b3A6IDA7XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogMDtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHJcbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgZmxleDogMCAwIGF1dG87XHJcbiAgICB9XHJcbiAgICBAZWxzZSB7XHJcbiAgICAgIHdpZHRoOiAxJTtcclxuICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgfVxyXG5cclxuICAgIGEsXHJcbiAgICBpbnB1dCxcclxuICAgIGJ1dHRvbixcclxuICAgIGxhYmVsIHtcclxuICAgICAgQGV4dGVuZCAlaW5wdXQtZ3JvdXAtY2hpbGQ7XHJcblxyXG4gICAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcclxuICAgICAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICAgICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcclxuICAgICAgfVxyXG4gICAgICBAZWxzZSB7XHJcbiAgICAgICAgaGVpZ2h0OiAkaGVpZ2h0O1xyXG4gICAgICB9XHJcbiAgICAgIHBhZGRpbmctdG9wOiAwO1xyXG4gICAgICBwYWRkaW5nLWJvdHRvbTogMDtcclxuICAgICAgZm9udC1zaXplOiAkaW5wdXQtZm9udC1zaXplO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gU3BlY2lmaWNpdHkgYnVtcCBuZWVkZWQgdG8gcHJldmVudCBvdmVycmlkZSBieSBidXR0b25zXHJcbiAgQGlmIG5vdCAkZ2xvYmFsLWZsZXhib3gge1xyXG4gICAgICAuaW5wdXQtZ3JvdXAgLmlucHV0LWdyb3VwLWJ1dHRvbiB7XHJcbiAgICAgICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xyXG4gICAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBmb3Jtc1xyXG4vLy8vXHJcblxyXG4vLy8gRGVmYXVsdCBib3JkZXIgYXJvdW5kIGN1c3RvbSBmaWVsZHNldHMuXHJcbi8vLyBAdHlwZSBCb3JkZXJcclxuJGZpZWxkc2V0LWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IHBhZGRpbmcgaW5zaWRlIGN1c3RvbSBmaWVsZHNldHMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGZpZWxkc2V0LXBhZGRpbmc6IHJlbS1jYWxjKDIwKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IG1hcmdpbiBhcm91bmQgY3VzdG9tIGZpZWxkc2V0cy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kZmllbGRzZXQtbWFyZ2luOiByZW0tY2FsYygxOCAwKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IHBhZGRpbmcgYmV0d2VlbiB0aGUgbGVnZW5kIHRleHQgYW5kIGZpZWxkc2V0IGJvcmRlci5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kbGVnZW5kLXBhZGRpbmc6IHJlbS1jYWxjKDAgMykgIWRlZmF1bHQ7XHJcblxyXG5AbWl4aW4gZmllbGRzZXQge1xyXG4gIG1hcmdpbjogJGZpZWxkc2V0LW1hcmdpbjtcclxuICBwYWRkaW5nOiAkZmllbGRzZXQtcGFkZGluZztcclxuICBib3JkZXI6ICRmaWVsZHNldC1ib3JkZXI7XHJcblxyXG4gIGxlZ2VuZCB7XHJcbiAgICAvLyBDb3ZlcnMgdXAgdGhlIGZpZWxkc2V0J3MgYm9yZGVyIHRvIGNyZWF0ZSBhcnRpZmljaWFsIHBhZGRpbmdcclxuICAgIG1hcmdpbjogMDtcclxuICAgIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06IHJlbS1jYWxjKC0zKTtcclxuICAgIHBhZGRpbmc6ICRsZWdlbmQtcGFkZGluZztcclxuICB9XHJcbn1cclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLWZvcm0tZmllbGRzZXQge1xyXG4gIGZpZWxkc2V0IHtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgICBib3JkZXI6IDA7XHJcbiAgfVxyXG5cclxuICBsZWdlbmQge1xyXG4gICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogJGZvcm0tc3BhY2luZyAqIDAuNTtcclxuICB9XHJcblxyXG4gIC5maWVsZHNldCB7XHJcbiAgICBAaW5jbHVkZSBmaWVsZHNldDtcclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIGZvcm1zXHJcbi8vLy9cclxuXHJcbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciBzZWxlY3QgbWVudXMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kc2VsZWN0LWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBDb2xvciBvZiB0aGUgZHJvcGRvd24gdHJpYW5nbGUgaW5zaWRlIHNlbGVjdCBtZW51cy4gU2V0IHRvIGB0cmFuc3BhcmVudGAgdG8gcmVtb3ZlIGl0IGVudGlyZWx5LlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJHNlbGVjdC10cmlhbmdsZS1jb2xvcjogJGRhcmstZ3JheSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IHJhZGl1cyBmb3Igc2VsZWN0IG1lbnVzLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJHNlbGVjdC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xyXG5cclxuQG1peGluIGZvcm0tc2VsZWN0IHtcclxuICAkaGVpZ2h0OiAoJGlucHV0LWZvbnQtc2l6ZSAqIHVuaXRsZXNzLWNhbGMoJGlucHV0LWxpbmUtaGVpZ2h0KSkgKyAoZ2V0LXNpZGUoJGlucHV0LXBhZGRpbmcsICd0b3AnKSArIGdldC1zaWRlKCRpbnB1dC1wYWRkaW5nLCAnYm90dG9tJykpIC0gcmVtLWNhbGMoMSk7XHJcblxyXG4gIGhlaWdodDogJGhlaWdodDtcclxuICBtYXJnaW46IDAgMCAkZm9ybS1zcGFjaW5nO1xyXG4gIHBhZGRpbmc6ICRpbnB1dC1wYWRkaW5nO1xyXG5cclxuICBhcHBlYXJhbmNlOiBub25lO1xyXG4gIGJvcmRlcjogJGlucHV0LWJvcmRlcjtcclxuICBib3JkZXItcmFkaXVzOiAkc2VsZWN0LXJhZGl1cztcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2VsZWN0LWJhY2tncm91bmQ7XHJcblxyXG4gIGZvbnQtZmFtaWx5OiAkaW5wdXQtZm9udC1mYW1pbHk7XHJcbiAgZm9udC1zaXplOiAkaW5wdXQtZm9udC1zaXplO1xyXG4gIGZvbnQtd2VpZ2h0OiAkaW5wdXQtZm9udC13ZWlnaHQ7XHJcbiAgbGluZS1oZWlnaHQ6ICRpbnB1dC1saW5lLWhlaWdodDtcclxuICBjb2xvcjogJGlucHV0LWNvbG9yO1xyXG5cclxuICBAaWYgJHNlbGVjdC10cmlhbmdsZS1jb2xvciAhPSB0cmFuc3BhcmVudCB7XHJcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLXRyaWFuZ2xlKCRzZWxlY3QtdHJpYW5nbGUtY29sb3IpO1xyXG4gICAgYmFja2dyb3VuZC1vcmlnaW46IGNvbnRlbnQtYm94O1xyXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogJGdsb2JhbC1yaWdodCAoLSRmb3JtLXNwYWNpbmcpIGNlbnRlcjtcclxuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XHJcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDlweCA2cHg7XHJcblxyXG4gICAgcGFkZGluZy0jeyRnbG9iYWwtcmlnaHR9OiAoJGZvcm0tc3BhY2luZyAqIDEuNSk7XHJcbiAgfVxyXG5cclxuICBAaWYgaGFzLXZhbHVlKCRpbnB1dC10cmFuc2l0aW9uKSB7XHJcbiAgICB0cmFuc2l0aW9uOiAkaW5wdXQtdHJhbnNpdGlvbjtcclxuICB9XHJcblxyXG4gIC8vIEZvY3VzIHN0YXRlXHJcbiAgJjpmb2N1cyB7XHJcbiAgICBvdXRsaW5lOiBub25lO1xyXG4gICAgYm9yZGVyOiAkaW5wdXQtYm9yZGVyLWZvY3VzO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWJhY2tncm91bmQtZm9jdXM7XHJcbiAgICBib3gtc2hhZG93OiAkaW5wdXQtc2hhZG93LWZvY3VzO1xyXG5cclxuICAgIEBpZiBoYXMtdmFsdWUoJGlucHV0LXRyYW5zaXRpb24pIHtcclxuICAgICAgdHJhbnNpdGlvbjogJGlucHV0LXRyYW5zaXRpb247XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBEaXNhYmxlZCBzdGF0ZVxyXG4gICY6ZGlzYWJsZWQge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWJhY2tncm91bmQtZGlzYWJsZWQ7XHJcbiAgICBjdXJzb3I6ICRpbnB1dC1jdXJzb3ItZGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICAvLyBIaWRlIHRoZSBkcm9wZG93biBhcnJvdyBzaG93biBpbiBuZXdlciBJRSB2ZXJzaW9uc1xyXG4gICY6Oi1tcy1leHBhbmQge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICB9XHJcblxyXG4gICZbbXVsdGlwbGVdIHtcclxuICAgIGhlaWdodDogYXV0bztcclxuICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1mb3JtLXNlbGVjdCB7XHJcbiAgc2VsZWN0IHtcclxuICAgIEBpbmNsdWRlIGZvcm0tc2VsZWN0O1xyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgc2xpZGVyXHJcbi8vLy9cclxuXHJcbi8vLyBEZWZhdWx0IGhlaWdodCBvZiB0aGUgc2xpZGVyLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRzbGlkZXItaGVpZ2h0OiAwLjVyZW0gIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBzbGlkZXIncyB0cmFjay5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRzbGlkZXItYmFja2dyb3VuZDogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBjb2xvciBvZiB0aGUgYWN0aXZlIGZpbGwgY29sb3Igb2YgdGhlIHNsaWRlci5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRzbGlkZXItZmlsbC1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBoZWlnaHQgb2YgdGhlIGhhbmRsZSBvZiB0aGUgc2xpZGVyLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRzbGlkZXItaGFuZGxlLWhlaWdodDogMS40cmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgd2lkdGggb2YgdGhlIGhhbmRsZSBvZiB0aGUgc2xpZGVyLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRzbGlkZXItaGFuZGxlLXdpZHRoOiAxLjRyZW0gIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBjb2xvciBvZiB0aGUgaGFuZGxlIGZvciB0aGUgc2xpZGVyLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJHNsaWRlci1oYW5kbGUtYmFja2dyb3VuZDogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBmYWRlIGFtb3VudCBvZiBhIGRpc2FibGVkIHNsaWRlci5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kc2xpZGVyLW9wYWNpdHktZGlzYWJsZWQ6IDAuMjUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCByYWRpdXMgZm9yIHNsaWRlci5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kc2xpZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1yYW5nZS1pbnB1dCB7XHJcbiAgaW5wdXRbdHlwZT1cInJhbmdlXCJdIHsgIC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tcXVhbGlmeWluZy1lbGVtZW50c1xyXG4gICAgJG1hcmdpbjogKCRzbGlkZXItaGFuZGxlLWhlaWdodCAtICRzbGlkZXItaGVpZ2h0KSAvIDI7XHJcblxyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogYXV0bztcclxuICAgIG1hcmdpbi10b3A6ICRtYXJnaW47XHJcbiAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luO1xyXG5cclxuICAgIGFwcGVhcmFuY2U6IG5vbmU7XHJcbiAgICBib3JkZXI6IDA7XHJcbiAgICBsaW5lLWhlaWdodDogMTtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuXHJcbiAgICBAaWYgaGFzLXZhbHVlKCRzbGlkZXItcmFkaXVzKSB7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6ICRzbGlkZXItcmFkaXVzO1xyXG4gICAgfVxyXG5cclxuICAgICY6Zm9jdXMge1xyXG4gICAgICBvdXRsaW5lOiAwO1xyXG4gICAgfVxyXG5cclxuICAgICZbZGlzYWJsZWRdIHtcclxuICAgICAgb3BhY2l0eTogJHNsaWRlci1vcGFjaXR5LWRpc2FibGVkO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHNhc3MtbGludDpkaXNhYmxlIG5vLXZlbmRvci1wcmVmaXhcclxuXHJcbiAgICAvLyBDaHJvbWUvU2FmYXJpXHJcbiAgICAmOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFjayB7XHJcbiAgICAgIGhlaWdodDogJHNsaWRlci1oZWlnaHQ7XHJcbiAgICAgIGJhY2tncm91bmQ6ICRzbGlkZXItYmFja2dyb3VuZDtcclxuICAgIH1cclxuXHJcbiAgICAmOjotd2Via2l0LXNsaWRlci1oYW5kbGUge1xyXG4gICAgICB3aWR0aDogJHNsaWRlci1oYW5kbGUtd2lkdGg7XHJcbiAgICAgIGhlaWdodDogJHNsaWRlci1oYW5kbGUtaGVpZ2h0O1xyXG4gICAgICBtYXJnaW4tdG9wOiAtJG1hcmdpbjtcclxuXHJcbiAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcclxuICAgICAgYmFja2dyb3VuZDogJHNsaWRlci1oYW5kbGUtYmFja2dyb3VuZDtcclxuXHJcbiAgICAgIEBpZiBoYXMtdmFsdWUoJHNsaWRlci1yYWRpdXMpIHtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiAkc2xpZGVyLXJhZGl1cztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIEZpcmVmb3hcclxuICAgICY6Oi1tb3otcmFuZ2UtdHJhY2sge1xyXG4gICAgICBoZWlnaHQ6ICRzbGlkZXItaGVpZ2h0O1xyXG4gICAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XHJcbiAgICAgIGJhY2tncm91bmQ6ICRzbGlkZXItYmFja2dyb3VuZDtcclxuICAgIH1cclxuXHJcbiAgICAmOjotbW96LXJhbmdlLXRodW1iIHtcclxuICAgICAgd2lkdGg6ICRzbGlkZXItaGFuZGxlLXdpZHRoO1xyXG4gICAgICBoZWlnaHQ6ICRzbGlkZXItaGFuZGxlLWhlaWdodDtcclxuICAgICAgbWFyZ2luLXRvcDogLSRtYXJnaW47XHJcblxyXG4gICAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XHJcbiAgICAgIGJhY2tncm91bmQ6ICRzbGlkZXItaGFuZGxlLWJhY2tncm91bmQ7XHJcblxyXG4gICAgICBAaWYgaGFzLXZhbHVlKCRzbGlkZXItcmFkaXVzKSB7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHNsaWRlci1yYWRpdXM7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBJbnRlcm5ldCBFeHBsb3JlclxyXG4gICAgJjo6LW1zLXRyYWNrIHtcclxuICAgICAgaGVpZ2h0OiAkc2xpZGVyLWhlaWdodDtcclxuXHJcbiAgICAgIGJvcmRlcjogMDtcclxuICAgICAgYm9yZGVyLXRvcDogJG1hcmdpbiBzb2xpZCAkYm9keS1iYWNrZ3JvdW5kO1xyXG4gICAgICBib3JkZXItYm90dG9tOiAkbWFyZ2luIHNvbGlkICRib2R5LWJhY2tncm91bmQ7XHJcbiAgICAgIGJhY2tncm91bmQ6ICRzbGlkZXItYmFja2dyb3VuZDtcclxuXHJcbiAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xyXG4gICAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgJjo6LW1zLXRodW1iIHtcclxuICAgICAgd2lkdGg6ICRzbGlkZXItaGFuZGxlLXdpZHRoO1xyXG4gICAgICBoZWlnaHQ6ICRzbGlkZXItaGFuZGxlLWhlaWdodDtcclxuICAgICAgYm9yZGVyOiAwO1xyXG4gICAgICBiYWNrZ3JvdW5kOiAkc2xpZGVyLWhhbmRsZS1iYWNrZ3JvdW5kO1xyXG5cclxuICAgICAgQGlmIGhhcy12YWx1ZSgkc2xpZGVyLXJhZGl1cykge1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRzbGlkZXItcmFkaXVzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJjo6LW1zLWZpbGwtbG93ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kOiAkc2xpZGVyLWZpbGwtYmFja2dyb3VuZDtcclxuICAgIH1cclxuXHJcbiAgICAmOjotbXMtZmlsbC11cHBlciB7XHJcbiAgICAgIGJhY2tncm91bmQ6ICRzbGlkZXItYmFja2dyb3VuZDtcclxuICAgIH1cclxuXHJcbiAgICBAYXQtcm9vdCB7XHJcbiAgICAgIG91dHB1dCB7XHJcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICAgICAgICBtYXJnaW4tbGVmdDogMC41ZW07XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRzbGlkZXItaGFuZGxlLWhlaWdodDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgcHJvZ3Jlc3MtYmFyXHJcbi8vLy9cclxuXHJcbi8vLyBIZWlnaHQgb2YgYSBwcm9ncmVzcyBiYXIuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHByb2dyZXNzLWhlaWdodDogMXJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGEgcHJvZ3Jlc3MgYmFyLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJHByb2dyZXNzLWJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcclxuXHJcbi8vLyBCb3R0b20gbWFyZ2luIG9mIGEgcHJvZ3Jlc3MgYmFyLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRwcm9ncmVzcy1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbiAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGNvbG9yIG9mIGEgcHJvZ3Jlc3MgYmFyJ3MgbWV0ZXIuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kcHJvZ3Jlc3MtbWV0ZXItYmFja2dyb3VuZDogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCByYWRpdXMgb2YgYSBwcm9ncmVzcyBiYXIuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHByb2dyZXNzLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1wcm9ncmVzcy1lbGVtZW50IHtcclxuICBwcm9ncmVzcyB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAkcHJvZ3Jlc3MtaGVpZ2h0O1xyXG4gICAgbWFyZ2luLWJvdHRvbTogJHByb2dyZXNzLW1hcmdpbi1ib3R0b207XHJcblxyXG4gICAgYXBwZWFyYW5jZTogbm9uZTtcclxuXHJcbiAgICBAaWYgaGFzdmFsdWUoJHByb2dyZXNzLXJhZGl1cykge1xyXG4gICAgICBib3JkZXItcmFkaXVzOiAkcHJvZ3Jlc3MtcmFkaXVzO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEZvciBGaXJlZm94XHJcbiAgICBib3JkZXI6IDA7XHJcbiAgICBiYWNrZ3JvdW5kOiAkcHJvZ3Jlc3MtYmFja2dyb3VuZDtcclxuXHJcbiAgICAmOjotd2Via2l0LXByb2dyZXNzLWJhciB7XHJcbiAgICAgIGJhY2tncm91bmQ6ICRwcm9ncmVzcy1iYWNrZ3JvdW5kO1xyXG5cclxuICAgICAgQGlmIGhhc3ZhbHVlKCRwcm9ncmVzcy1yYWRpdXMpIHtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiAkcHJvZ3Jlc3MtcmFkaXVzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJjo6LXdlYmtpdC1wcm9ncmVzcy12YWx1ZSB7XHJcbiAgICAgIGJhY2tncm91bmQ6ICRwcm9ncmVzcy1tZXRlci1iYWNrZ3JvdW5kO1xyXG5cclxuICAgICAgQGlmIGhhc3ZhbHVlKCRwcm9ncmVzcy1yYWRpdXMpIHtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiAkcHJvZ3Jlc3MtcmFkaXVzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJjo6LW1vei1wcm9ncmVzcy1iYXIge1xyXG4gICAgICBiYWNrZ3JvdW5kOiAkcHJvZ3Jlc3MtbWV0ZXItYmFja2dyb3VuZDtcclxuXHJcbiAgICAgIEBpZiBoYXN2YWx1ZSgkcHJvZ3Jlc3MtcmFkaXVzKSB7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHByb2dyZXNzLXJhZGl1cztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGZvdW5kYXRpb24tcGFsZXR0ZSB7XHJcbiAgICAgICYuI3skbmFtZX0ge1xyXG4gICAgICAgIC8vIEludGVybmV0IEV4cGxvcmVyIHNldHMgdGhlIGZpbGwgd2l0aCBjb2xvclxyXG4gICAgICAgIGNvbG9yOiAkY29sb3I7XHJcblxyXG4gICAgICAgICY6Oi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWUge1xyXG4gICAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjo6LW1vei1wcm9ncmVzcy1iYXIge1xyXG4gICAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIEZvciBJRSBhbmQgRWRnZVxyXG4gICAgJjo6LW1zLWZpbGwge1xyXG4gICAgICBAaWYgaGFzdmFsdWUoJHByb2dyZXNzLXJhZGl1cykge1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRwcm9ncmVzcy1yYWRpdXM7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGJvcmRlcjogMDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIG1ldGVyXHJcbi8vLy9cclxuXHJcbi8vLyBIZWlnaHQgb2YgYSBgPG1ldGVyPmAgZWxlbWVudC5cclxuLy8vIEB0eXBlIExlbmd0aFxyXG4kbWV0ZXItaGVpZ2h0OiAxcmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIEJvcmRlciByYWRpdXMgb2YgYSBgPG1ldGVyPmAgZWxlbWVudC5cclxuLy8vIEB0eXBlIExlbmd0aFxyXG4kbWV0ZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcclxuXHJcbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGEgYDxtZXRlcj5gIGVsZW1lbnQuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kbWV0ZXItYmFja2dyb3VuZDogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xyXG5cclxuLy8vIE1ldGVyIGZpbGwgZm9yIGFuIG9wdGltYWwgdmFsdWUgaW4gYSBgPG1ldGVyPmAgZWxlbWVudC5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRtZXRlci1maWxsLWdvb2Q6ICRzdWNjZXNzLWNvbG9yICFkZWZhdWx0O1xyXG5cclxuLy8vIE1ldGVyIGZpbGwgZm9yIGFuIGF2ZXJhZ2UgdmFsdWUgaW4gYSBgPG1ldGVyPmAgZWxlbWVudC5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRtZXRlci1maWxsLW1lZGl1bTogJHdhcm5pbmctY29sb3IgIWRlZmF1bHQ7XHJcblxyXG4vLy8gTWV0ZXIgZmlsbCBmb3IgYSBzdWJvcHRpbWFsIHZhbHVlIGluIGEgYDxtZXRlcj5gIGVsZW1lbnQuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kbWV0ZXItZmlsbC1iYWQ6ICRhbGVydC1jb2xvciAhZGVmYXVsdDtcclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLW1ldGVyLWVsZW1lbnQge1xyXG4gIG1ldGVyIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6ICRtZXRlci1oZWlnaHQ7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xyXG5cclxuICAgIC8vIERpc2FibGUgYC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZWAgZnJvbSBnZXR0aW5nIHByZWZpeGVkLFxyXG4gICAgLy8gV2UgaGF2ZSBkaXNhYmxlZCBhdXRvcHJlZml4ZXIgZmlyc3QgYW5kIGFyZSBqdXN0IG9ubHkgdXNpbmcgXHJcbiAgICAvLyBgLW1vei1hcHBlYXJhbmNlOiBub25lYCBhcyBhIHByZWZpeCBhbmQgbmVnbGVjdGluZyB0aGUgd2Via2l0LlxyXG4gICAgXHJcbiAgICAvKiEgYXV0b3ByZWZpeGVyOiBvZmYgKi9cclxuICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcclxuICAgICAgICAgYXBwZWFyYW5jZTogbm9uZTtcclxuXHJcbiAgICBAaWYgaGFzLXZhbHVlKCRtZXRlci1yYWRpdXMpIHtcclxuICAgICAgYm9yZGVyLXJhZGl1czogJG1ldGVyLXJhZGl1cztcclxuICAgIH1cclxuXHJcbiAgICAvLyBGb3IgRmlyZWZveFxyXG4gICAgYm9yZGVyOiAwO1xyXG4gICAgYmFja2dyb3VuZDogJG1ldGVyLWJhY2tncm91bmQ7XHJcblxyXG4gICAgLy8gQ2hyb21lL1NhZmFyaS9FZGdlXHJcbiAgICAmOjotd2Via2l0LW1ldGVyLWJhciB7XHJcbiAgICAgIGJvcmRlcjogMDtcclxuICAgICAgQGlmIGhhcy12YWx1ZSgkbWV0ZXItcmFkaXVzKSB7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJG1ldGVyLXJhZGl1cztcclxuICAgICAgfVxyXG5cclxuICAgICAgYmFja2dyb3VuZDogJG1ldGVyLWJhY2tncm91bmQ7XHJcbiAgICB9XHJcblxyXG4gICAgJjo6LXdlYmtpdC1tZXRlci1pbm5lci1lbGVtZW50IHtcclxuICAgICAgQGlmIGhhcy12YWx1ZSgkbWV0ZXItcmFkaXVzKSB7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJG1ldGVyLXJhZGl1cztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICY6Oi13ZWJraXQtbWV0ZXItb3B0aW11bS12YWx1ZSB7XHJcbiAgICAgIGJhY2tncm91bmQ6ICRtZXRlci1maWxsLWdvb2Q7XHJcblxyXG4gICAgICBAaWYgaGFzLXZhbHVlKCRtZXRlci1yYWRpdXMpIHtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiAkbWV0ZXItcmFkaXVzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJjo6LXdlYmtpdC1tZXRlci1zdWJvcHRpbXVtLXZhbHVlIHtcclxuICAgICAgYmFja2dyb3VuZDogJG1ldGVyLWZpbGwtbWVkaXVtO1xyXG5cclxuICAgICAgQGlmIGhhcy12YWx1ZSgkbWV0ZXItcmFkaXVzKSB7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJG1ldGVyLXJhZGl1cztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICY6Oi13ZWJraXQtbWV0ZXItZXZlbi1sZXNzLWdvb2QtdmFsdWUge1xyXG4gICAgICBiYWNrZ3JvdW5kOiAkbWV0ZXItZmlsbC1iYWQ7XHJcblxyXG4gICAgICBAaWYgaGFzLXZhbHVlKCRtZXRlci1yYWRpdXMpIHtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiAkbWV0ZXItcmFkaXVzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJjo6LW1vei1tZXRlci1iYXIge1xyXG4gICAgICBiYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvcjtcclxuXHJcbiAgICAgIEBpZiBoYXMtdmFsdWUoJG1ldGVyLXJhZGl1cykge1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRtZXRlci1yYWRpdXM7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmOi1tb3otbWV0ZXItb3B0aW11bTo6LW1vei1tZXRlci1iYXIgeyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIGZvcmNlLXBzZXVkby1uZXN0aW5nXHJcbiAgICAgIGJhY2tncm91bmQ6ICRtZXRlci1maWxsLWdvb2Q7XHJcbiAgICB9XHJcblxyXG4gICAgJjotbW96LW1ldGVyLXN1Yi1vcHRpbXVtOjotbW96LW1ldGVyLWJhciB7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgZm9yY2UtcHNldWRvLW5lc3RpbmdcclxuICAgICAgYmFja2dyb3VuZDogJG1ldGVyLWZpbGwtbWVkaXVtO1xyXG4gICAgfVxyXG5cclxuICAgICY6LW1vei1tZXRlci1zdWItc3ViLW9wdGltdW06Oi1tb3otbWV0ZXItYmFyIHsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBmb3JjZS1wc2V1ZG8tbmVzdGluZ1xyXG4gICAgICBiYWNrZ3JvdW5kOiAkbWV0ZXItZmlsbC1iYWQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBhYmlkZVxyXG4vLy8vXHJcblxyXG4vLy8gU2V0cyBpZiBlcnJvciBzdHlsZXMgc2hvdWxkIGJlIGFkZGVkIHRvIGlucHV0cy5cclxuLy8vIEB0eXBlIEJvb2xlYW5cclxuJGFiaWRlLWlucHV0czogdHJ1ZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBTZXRzIGlmIGVycm9yIHN0eWxlcyBzaG91bGQgYmUgYWRkZWQgdG8gbGFiZWxzLlxyXG4vLy8gQHR5cGUgQm9vbGVhblxyXG4kYWJpZGUtbGFiZWxzOiB0cnVlICFkZWZhdWx0O1xyXG5cclxuLy8vIEJhY2tncm91bmQgY29sb3IgdG8gdXNlIGZvciBpbnZhbGlkIHRleHQgaW5wdXRzLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGlucHV0LWJhY2tncm91bmQtaW52YWxpZDogZ2V0LWNvbG9yKGFsZXJ0KSAhZGVmYXVsdDtcclxuXHJcbi8vLyBDb2xvciB0byB1c2UgZm9yIGxhYmVscyBvZiBpbnZhbGlkIGlucHV0cy5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRmb3JtLWxhYmVsLWNvbG9yLWludmFsaWQ6IGdldC1jb2xvcihhbGVydCkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBmb250IGNvbG9yIGZvciBmb3JtIGVycm9yIHRleHQuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kaW5wdXQtZXJyb3ItY29sb3I6IGdldC1jb2xvcihhbGVydCkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBmb250IHNpemUgZm9yIGZvcm0gZXJyb3IgdGV4dC5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kaW5wdXQtZXJyb3ItZm9udC1zaXplOiByZW0tY2FsYygxMikgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBmb250IHdlaWdodCBmb3IgZm9ybSBlcnJvciB0ZXh0LlxyXG4vLy8gQHR5cGUgS2V5d29yZFxyXG4kaW5wdXQtZXJyb3ItZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQgIWRlZmF1bHQ7XHJcblxyXG4vLy8gU3R5bGVzIHRoZSBiYWNrZ3JvdW5kIGFuZCBib3JkZXIgb2YgYW4gaW5wdXQgZmllbGQgdG8gaGF2ZSBhbiBlcnJvciBzdGF0ZS5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFja2dyb3VuZCBbJGFsZXJ0LWNvbG9yXSAtIENvbG9yIHRvIHVzZSBmb3IgdGhlIGJhY2tncm91bmQgYW5kIGJvcmRlci5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFja2dyb3VuZC1saWdodGVuIFsxMCVdIC0gTGlnaHRuZXNzIGxldmVsIG9mIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLlxyXG5AbWl4aW4gZm9ybS1pbnB1dC1lcnJvcihcclxuICAkYmFja2dyb3VuZDogJGlucHV0LWJhY2tncm91bmQtaW52YWxpZCxcclxuICAkYmFja2dyb3VuZC1saWdodGVuOiAxMCVcclxuKSB7XHJcbiAgJjpub3QoOmZvY3VzKSB7XHJcbiAgICBib3JkZXItY29sb3I6ICRiYWNrZ3JvdW5kO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWl4KCRiYWNrZ3JvdW5kLCAkd2hpdGUsICRiYWNrZ3JvdW5kLWxpZ2h0ZW4pO1xyXG4gICAgJjo6cGxhY2Vob2xkZXIge1xyXG4gICAgICBjb2xvcjogJGJhY2tncm91bmQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gQWRkcyBlcnJvciBzdHlsZXMgdG8gYSBmb3JtIGVsZW1lbnQsIHVzaW5nIHRoZSB2YWx1ZXMgaW4gdGhlIHNldHRpbmdzIGZpbGUuXHJcbkBtaXhpbiBmb3JtLWVycm9yIHtcclxuICBkaXNwbGF5OiBub25lO1xyXG4gIG1hcmdpbi10b3A6ICRmb3JtLXNwYWNpbmcgKiAtMC41O1xyXG4gIG1hcmdpbi1ib3R0b206ICRmb3JtLXNwYWNpbmc7XHJcblxyXG4gIGZvbnQtc2l6ZTogJGlucHV0LWVycm9yLWZvbnQtc2l6ZTtcclxuICBmb250LXdlaWdodDogJGlucHV0LWVycm9yLWZvbnQtd2VpZ2h0O1xyXG4gIGNvbG9yOiAkaW5wdXQtZXJyb3ItY29sb3I7XHJcbn1cclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLWZvcm0tZXJyb3Ige1xyXG4gIEBpZiAkYWJpZGUtaW5wdXRzIHtcclxuICAgIC8vIEVycm9yIGNsYXNzIGZvciBpbnZhbGlkIGlucHV0c1xyXG4gICAgLmlzLWludmFsaWQtaW5wdXQge1xyXG4gICAgICBAaW5jbHVkZSBmb3JtLWlucHV0LWVycm9yO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGlmICRhYmlkZS1sYWJlbHMge1xyXG4gICAgLy8gRXJyb3IgY2xhc3MgZm9yIGxhYmVscyBvZiBpbnZhbGlkIG91dHB1dHNcclxuICAgIC5pcy1pbnZhbGlkLWxhYmVsIHtcclxuICAgICAgY29sb3I6ICRmb3JtLWxhYmVsLWNvbG9yLWludmFsaWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBGb3JtIGVycm9yIGVsZW1lbnRcclxuICAuZm9ybS1lcnJvciB7XHJcbiAgICBAaW5jbHVkZSBmb3JtLWVycm9yO1xyXG5cclxuICAgICYuaXMtdmlzaWJsZSB7XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8gSGlkZSBhbiBlbGVtZW50IGJ5IGRlZmF1bHQsIG9ubHkgZGlzcGxheWluZyBpdCBhYm92ZSBhIGNlcnRhaW4gc2NyZWVuIHNpemUuXHJcbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIC0gQnJlYWtwb2ludCB0byB1c2UuICoqTXVzdCBiZSBhIGJyZWFrcG9pbnQgZGVmaW5lZCBpbiBgJGJyZWFrcG9pbnRzYC4qKlxyXG5AbWl4aW4gc2hvdy1mb3IoJHNpemUpIHtcclxuICAkc2l6ZTogbWFwLWdldCgkYnJlYWtwb2ludHMsICRzaXplKTtcclxuICAkc2l6ZTogLXpmLWJwLXRvLWVtKCRzaXplKSAtICgxIC8gMTYpO1xyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplIGRvd24pIHtcclxuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBIaWRlIGFuIGVsZW1lbnQgYnkgZGVmYXVsdCwgb25seSBkaXNwbGF5aW5nIGl0IHdpdGhpbiBhIGNlcnRhaW4gYnJlYWtwb2ludC5cclxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHNpemUgLSBCcmVha3BvaW50IHRvIHVzZS4gKipNdXN0IGJlIGEgYnJlYWtwb2ludCBkZWZpbmVkIGluIGAkYnJlYWtwb2ludHNgLioqXHJcbkBtaXhpbiBzaG93LWZvci1vbmx5KCRzaXplKSB7XHJcbiAgJGxvd2VyLWJvdW5kLXNpemU6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkc2l6ZSk7XHJcbiAgJHVwcGVyLWJvdW5kLXNpemU6IC16Zi1tYXAtbmV4dCgkYnJlYWtwb2ludHMsICRzaXplKTtcclxuXHJcbiAgLy8gbW9yZSBvZnRlbiB0aGFuIG5vdCB0aGlzIHdpbGwgYmUgY29ycmVjdCwganVzdCBvbmUgdGltZSByb3VuZCB0aGUgbG9vcCBpdCB3b24ndCBzbyBzZXQgaW4gc2NvcGUgaGVyZVxyXG4gICRsb3dlci1ib3VuZDogLXpmLWJwLXRvLWVtKCRsb3dlci1ib3VuZC1zaXplKSAtICgxIC8gMTYpO1xyXG4gIC8vIHRlc3QgYWN0dWFsIGxvd2VyLWJvdW5kLXNpemUsIGlmIDAgc2V0IGl0IHRvIDBlbVxyXG4gIEBpZiBzdHJpcC11bml0KCRsb3dlci1ib3VuZC1zaXplKSA9PSAwIHtcclxuICAgICRsb3dlci1ib3VuZDogLXpmLWJwLXRvLWVtKCRsb3dlci1ib3VuZC1zaXplKTtcclxuICB9XHJcblxyXG4gIEBpZiAkdXBwZXItYm91bmQtc2l6ZSA9PSBudWxsIHtcclxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRsb3dlci1ib3VuZCkge1xyXG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBlbHNlIHtcclxuICAgICR1cHBlci1ib3VuZDogLXpmLWJwLXRvLWVtKCR1cHBlci1ib3VuZC1zaXplKTtcclxuXHJcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkbG93ZXItYm91bmQpLCBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICR1cHBlci1ib3VuZCkge1xyXG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLy8vIFNob3cgYW4gZWxlbWVudCBieSBkZWZhdWx0LCBhbmQgaGlkZSBpdCBhYm92ZSBhIGNlcnRhaW4gc2NyZWVuIHNpemUuXHJcbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIC0gQnJlYWtwb2ludCB0byB1c2UuICoqTXVzdCBiZSBhIGJyZWFrcG9pbnQgZGVmaW5lZCBpbiBgJGJyZWFrcG9pbnRzYC4qKlxyXG5AbWl4aW4gaGlkZS1mb3IoJHNpemUpIHtcclxuICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XHJcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gU2hvdyBhbiBlbGVtZW50IGJ5IGRlZmF1bHQsIGFuZCBoaWRlIGl0IGFib3ZlIGEgY2VydGFpbiBzY3JlZW4gc2l6ZS5cclxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHNpemUgLSBCcmVha3BvaW50IHRvIHVzZS4gKipNdXN0IGJlIGEgYnJlYWtwb2ludCBkZWZpbmVkIGluIGAkYnJlYWtwb2ludHNgLioqXHJcbkBtaXhpbiBoaWRlLWZvci1vbmx5KCRzaXplKSB7XHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSBvbmx5KSB7XHJcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi12aXNpYmlsaXR5LWNsYXNzZXMge1xyXG4gIC8vIEJhc2ljIGhpZGluZyBjbGFzc2VzXHJcbiAgLmhpZGUge1xyXG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG4gIH1cclxuXHJcbiAgLmludmlzaWJsZSB7XHJcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAvLyBSZXNwb25zaXZlIHZpc2liaWxpdHkgY2xhc3Nlc1xyXG4gIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xyXG4gICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcclxuICAgICAgLmhpZGUtZm9yLSN7JHNpemV9IHtcclxuICAgICAgICBAaW5jbHVkZSBoaWRlLWZvcigkc2l6ZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5zaG93LWZvci0jeyRzaXplfSB7XHJcbiAgICAgICAgQGluY2x1ZGUgc2hvdy1mb3IoJHNpemUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmhpZGUtZm9yLSN7JHNpemV9LW9ubHkge1xyXG4gICAgICBAaW5jbHVkZSBoaWRlLWZvci1vbmx5KCRzaXplKTtcclxuICAgIH1cclxuXHJcbiAgICAuc2hvdy1mb3ItI3skc2l6ZX0tb25seSB7XHJcbiAgICAgIEBpbmNsdWRlIHNob3ctZm9yLW9ubHkoJHNpemUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gU2NyZWVuIHJlYWRlciB2aXNpYmlsaXR5IGNsYXNzZXNcclxuICAvLyBOZWVkIGEgXCJoaWRlLWZvci1zclwiIGNsYXNzPyBBZGQgYXJpYS1oaWRkZW49J3RydWUnIHRvIHRoZSBlbGVtZW50XHJcbiAgLnNob3ctZm9yLXNyLFxyXG4gIC5zaG93LW9uLWZvY3VzIHtcclxuICAgIEBpbmNsdWRlIGVsZW1lbnQtaW52aXNpYmxlO1xyXG4gIH1cclxuXHJcbiAgLy8gT25seSBkaXNwbGF5IHRoZSBlbGVtZW50IHdoZW4gaXQncyBmb2N1c2VkXHJcbiAgLnNob3ctb24tZm9jdXMge1xyXG4gICAgJjphY3RpdmUsXHJcbiAgICAmOmZvY3VzIHtcclxuICAgICAgQGluY2x1ZGUgZWxlbWVudC1pbnZpc2libGUtb2ZmO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gTGFuZHNjYXBlIGFuZCBwb3J0cmFpdCB2aXNpYmlsaXR5XHJcbiAgLnNob3ctZm9yLWxhbmRzY2FwZSxcclxuICAuaGlkZS1mb3ItcG9ydHJhaXQge1xyXG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcclxuXHJcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhbmRzY2FwZSkge1xyXG4gICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG5cclxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQocG9ydHJhaXQpIHtcclxuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmhpZGUtZm9yLWxhbmRzY2FwZSxcclxuICAuc2hvdy1mb3ItcG9ydHJhaXQge1xyXG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG5cclxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFuZHNjYXBlKSB7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxuICAgIH1cclxuXHJcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KHBvcnRyYWl0KSB7XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBmbG9hdFxyXG4vLy8vXHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1mbG9hdC1jbGFzc2VzIHtcclxuICAuZmxvYXQtbGVmdCB7XHJcbiAgICBmbG9hdDogbGVmdCAhaW1wb3J0YW50O1xyXG4gIH1cclxuXHJcbiAgLmZsb2F0LXJpZ2h0IHtcclxuICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50O1xyXG4gIH1cclxuXHJcbiAgLmZsb2F0LWNlbnRlciB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIG1hcmdpbi1yaWdodDogYXV0bztcclxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gIH1cclxuXHJcbiAgLmNsZWFyZml4IHtcclxuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgYnV0dG9uXHJcbi8vLy9cclxuXHJcbi8vLyBGb250IGZhbWlseSBmb3IgYnV0dG9uIGVsZW1lbnRzLlxyXG4vLy8gQHR5cGUgRm9udFxyXG4kYnV0dG9uLWZvbnQtZmFtaWx5OiBpbmhlcml0ICFkZWZhdWx0O1xyXG5cclxuLy8vIFBhZGRpbmcgaW5zaWRlIGJ1dHRvbnMuXHJcbi8vLyBAdHlwZSBMaXN0XHJcbiRidXR0b24tcGFkZGluZzogMC44NWVtIDFlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBNYXJnaW4gYXJvdW5kIGJ1dHRvbnMuXHJcbi8vLyBAdHlwZSBMaXN0XHJcbiRidXR0b24tbWFyZ2luOiAwIDAgJGdsb2JhbC1tYXJnaW4gMCAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGZpbGwgZm9yIGJ1dHRvbnMuIENhbiBlaXRoZXIgYmUgYHNvbGlkYCBvciBgaG9sbG93YC5cclxuLy8vIEB0eXBlIEtleXdvcmRcclxuJGJ1dHRvbi1maWxsOiBzb2xpZCAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3IgZm9yIGJ1dHRvbnMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kYnV0dG9uLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xyXG5cclxuLy8vIEJhY2tncm91bmQgY29sb3Igb24gaG92ZXIgZm9yIGJ1dHRvbnMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kYnV0dG9uLWJhY2tncm91bmQtaG92ZXI6IHNjYWxlLWNvbG9yKCRidXR0b24tYmFja2dyb3VuZCwgJGxpZ2h0bmVzczogLTE1JSkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRm9udCBjb2xvciBmb3IgYnV0dG9ucy5cclxuLy8vIEB0eXBlIExpc3RcclxuJGJ1dHRvbi1jb2xvcjogJHdoaXRlICFkZWZhdWx0O1xyXG5cclxuLy8vIEFsdGVybmF0aXZlIGZvbnQgY29sb3IgZm9yIGJ1dHRvbnMuXHJcbi8vLyBAdHlwZSBMaXN0XHJcbiRidXR0b24tY29sb3ItYWx0OiAkYmxhY2sgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQm9yZGVyIHJhZGl1cyBmb3IgYnV0dG9ucywgZGVmYXVsdGVkIHRvIGdsb2JhbC1yYWRpdXMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGJ1dHRvbi1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xyXG5cclxuLy8vIEJvcmRlciB3aWR0aCBmb3IgaG9sbG93IG91dGxpbmUgYnV0dG9uc1xyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRidXR0b24taG9sbG93LWJvcmRlci13aWR0aDogMXB4ICFkZWZhdWx0O1xyXG5cclxuLy8vIFNpemVzIGZvciBidXR0b25zLlxyXG4vLy8gQHR5cGUgTWFwXHJcbiRidXR0b24tc2l6ZXM6IChcclxuICB0aW55OiAwLjZyZW0sXHJcbiAgc21hbGw6IDAuNzVyZW0sXHJcbiAgZGVmYXVsdDogMC45cmVtLFxyXG4gIGxhcmdlOiAxLjI1cmVtLFxyXG4pICFkZWZhdWx0O1xyXG5cclxuLy8vIENvbG9yaW5nIGNsYXNzZXMuIEEgbWFwIG9mIGNsYXNzZXMgdG8gb3V0cHV0IGluIHlvdXIgQ1NTLCBsaWtlIGAuc2Vjb25kYXJ5YCwgYC5zdWNjZXNzYCwgYW5kIHNvIG9uLlxyXG4vLy8gQHR5cGUgTWFwXHJcbiRidXR0b24tcGFsZXR0ZTogJGZvdW5kYXRpb24tcGFsZXR0ZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBvcGFjaXR5IGZvciBhIGRpc2FibGVkIGJ1dHRvbi5cclxuLy8vIEB0eXBlIExpc3RcclxuJGJ1dHRvbi1vcGFjaXR5LWRpc2FibGVkOiAwLjI1ICFkZWZhdWx0O1xyXG5cclxuLy8vIEJhY2tncm91bmQgY29sb3IgbGlnaHRuZXNzIG9uIGhvdmVyIGZvciBidXR0b25zLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRidXR0b24tYmFja2dyb3VuZC1ob3Zlci1saWdodG5lc3M6IC0yMCUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQ29sb3IgbGlnaHRuZXNzIG9uIGhvdmVyIGZvciBob2xsb3cgYnV0dG9ucy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kYnV0dG9uLWhvbGxvdy1ob3Zlci1saWdodG5lc3M6IC01MCUgIWRlZmF1bHQ7XHJcblxyXG4vLyBJbnRlcm5hbDogZmxpcCBmcm9tIG1hcmdpbi1yaWdodCB0byBtYXJnaW4tbGVmdCBmb3IgZGVmYXVsdHNcclxuQGlmICRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gJ3J0bCcge1xyXG4gICRidXR0b24tbWFyZ2luOiAwIDAgJGdsb2JhbC1tYXJnaW4gJGdsb2JhbC1tYXJnaW4gIWRlZmF1bHQ7XHJcbn1cclxuXHJcbi8vLyB0cmFuc2l0aW9ucyBmb3IgYnV0dG9ucy5cclxuLy8vIEB0eXBlIExpc3RcclxuJGJ1dHRvbi10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMjVzIGVhc2Utb3V0LCBjb2xvciAwLjI1cyBlYXNlLW91dCAhZGVmYXVsdDtcclxuXHJcbi8vIFRPRE86IERvY3VtZW50IGJ1dHRvbi1iYXNlKCkgbWl4aW5cclxuQG1peGluIGJ1dHRvbi1iYXNlIHtcclxuICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgbWFyZ2luOiAkYnV0dG9uLW1hcmdpbjtcclxuICBmb250LWZhbWlseTogJGJ1dHRvbi1mb250LWZhbWlseTtcclxuXHJcbiAgQGlmICh0eXBlLW9mKCRidXR0b24tcGFkZGluZykgPT0gJ21hcCcpIHtcclxuICAgIEBlYWNoICRzaXplLCAkcGFkZGluZyBpbiAkYnV0dG9uLXBhZGRpbmcge1xyXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XHJcbiAgICAgICAgcGFkZGluZzogJHBhZGRpbmc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgQGVsc2Uge1xyXG4gICAgcGFkZGluZzogJGJ1dHRvbi1wYWRkaW5nO1xyXG4gIH1cclxuXHJcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xyXG4gIGJvcmRlci1yYWRpdXM6ICRidXR0b24tcmFkaXVzO1xyXG4gIHRyYW5zaXRpb246ICRidXR0b24tdHJhbnNpdGlvbjtcclxuXHJcbiAgZm9udC1zaXplOiBtYXAtZ2V0KCRidXR0b24tc2l6ZXMsIGRlZmF1bHQpO1xyXG4gIGxpbmUtaGVpZ2h0OiAxO1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi8vLyBFeHBhbmRzIGEgYnV0dG9uIHRvIG1ha2UgaXQgZnVsbC13aWR0aC5cclxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGV4cGFuZCBbdHJ1ZV0gLSBTZXQgdG8gYHRydWVgIHRvIGVuYWJsZSB0aGUgZXhwYW5kIGJlaGF2aW9yLiBTZXQgdG8gYGZhbHNlYCB0byByZXZlcnNlIHRoaXMgYmVoYXZpb3IuXHJcbkBtaXhpbiBidXR0b24tZXhwYW5kKCRleHBhbmQ6IHRydWUpIHtcclxuICBAaWYgJGV4cGFuZCB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xyXG4gICAgbWFyZ2luLWxlZnQ6IDA7XHJcbiAgfVxyXG4gIEBlbHNlIHtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHdpZHRoOiBhdXRvO1xyXG4gICAgbWFyZ2luOiAkYnV0dG9uLW1hcmdpbjtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBTZXRzIHRoZSB2aXN1YWwgc3R5bGUgb2YgYSBidXR0b24uXHJcbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFja2dyb3VuZCBbJGJ1dHRvbi1iYWNrZ3JvdW5kXSAtIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIGJ1dHRvbi5cclxuLy8vIEBwYXJhbSB7Q29sb3J9ICRiYWNrZ3JvdW5kLWhvdmVyIFskYnV0dG9uLWJhY2tncm91bmQtaG92ZXJdIC0gQmFja2dyb3VuZCBjb2xvciBvZiB0aGUgYnV0dG9uIG9uIGhvdmVyLiBTZXQgdG8gYGF1dG9gIHRvIGhhdmUgdGhlIG1peGluIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgYSBob3ZlciBjb2xvci5cclxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbJGJ1dHRvbi1jb2xvcl0gLSBUZXh0IGNvbG9yIG9mIHRoZSBidXR0b24uIFNldCB0byBgYXV0b2AgdG8gYXV0b21hdGljYWxseSBnZW5lcmF0ZSBhIGNvbG9yIGJhc2VkIG9uIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLlxyXG5AbWl4aW4gYnV0dG9uLXN0eWxlKFxyXG4gICRiYWNrZ3JvdW5kOiAkYnV0dG9uLWJhY2tncm91bmQsXHJcbiAgJGJhY2tncm91bmQtaG92ZXI6ICRidXR0b24tYmFja2dyb3VuZC1ob3ZlcixcclxuICAkY29sb3I6ICRidXR0b24tY29sb3IsXHJcbiAgJGJhY2tncm91bmQtaG92ZXItbGlnaHRuZXNzOiAkYnV0dG9uLWJhY2tncm91bmQtaG92ZXItbGlnaHRuZXNzXHJcbikge1xyXG4gIEBpZiAkY29sb3IgPT0gYXV0byB7XHJcbiAgICAkY29sb3I6IGNvbG9yLXBpY2stY29udHJhc3QoJGJhY2tncm91bmQsICgkYnV0dG9uLWNvbG9yLCAkYnV0dG9uLWNvbG9yLWFsdCkpO1xyXG4gIH1cclxuXHJcbiAgQGlmICRiYWNrZ3JvdW5kLWhvdmVyID09IGF1dG8ge1xyXG4gICAgJGJhY2tncm91bmQtaG92ZXI6IHNjYWxlLWNvbG9yKCRiYWNrZ3JvdW5kLCAkbGlnaHRuZXNzOiAkYmFja2dyb3VuZC1ob3Zlci1saWdodG5lc3MpO1xyXG4gIH1cclxuXHJcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XHJcbiAgY29sb3I6ICRjb2xvcjtcclxuXHJcbiAgJjpob3ZlciwgJjpmb2N1cyB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZC1ob3ZlcjtcclxuICAgIGNvbG9yOiAkY29sb3I7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gUmVtb3ZlcyBiYWNrZ3JvdW5kIGZpbGwgb24gaG92ZXIgYW5kIGZvY3VzIGZvciBob2xsb3cgYnV0dG9ucy5cclxuQG1peGluIGJ1dHRvbi1ob2xsb3cge1xyXG4gICYsXHJcbiAgJjpob3ZlciwgJjpmb2N1cyB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICB9XHJcblxyXG4gICYuZGlzYWJsZWQsXHJcbiAgJltkaXNhYmxlZF0ge1xyXG4gICAgJixcclxuICAgICY6aG92ZXIsICY6Zm9jdXMge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBtaXhpbiBidXR0b24taG9sbG93LXN0eWxlKFxyXG4gICRjb2xvcjogJGJ1dHRvbi1iYWNrZ3JvdW5kLFxyXG4gICRob3Zlci1saWdodG5lc3M6ICRidXR0b24taG9sbG93LWhvdmVyLWxpZ2h0bmVzcyxcclxuICAkYm9yZGVyLXdpZHRoOiAkYnV0dG9uLWhvbGxvdy1ib3JkZXItd2lkdGhcclxuKSB7XHJcbiAgJGNvbG9yLWhvdmVyOiBzY2FsZS1jb2xvcigkY29sb3IsICRsaWdodG5lc3M6ICRob3Zlci1saWdodG5lc3MpO1xyXG5cclxuICBib3JkZXI6ICRib3JkZXItd2lkdGggc29saWQgJGNvbG9yO1xyXG4gIGNvbG9yOiAkY29sb3I7XHJcblxyXG4gICY6aG92ZXIsICY6Zm9jdXMge1xyXG4gICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItaG92ZXI7XHJcbiAgICBjb2xvcjogJGNvbG9yLWhvdmVyO1xyXG4gICAgJi5kaXNhYmxlZCxcclxuICAgICZbZGlzYWJsZWRdIHtcclxuICAgICAgYm9yZGVyOiAkYm9yZGVyLXdpZHRoIHNvbGlkICRjb2xvcjtcclxuICAgICAgY29sb3I6ICRjb2xvcjtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vLyBBZGRzIGRpc2FibGVkIHN0eWxlcyB0byBhIGJ1dHRvbiBieSBmYWRpbmcgdGhlIGVsZW1lbnQsIHJlc2V0aW5nIHRoZSBjdXJzb3IsIGFuZCBkaXNhYmxpbmcgcG9pbnRlciBldmVudHMuXHJcbi8vLyBAcGFyYW0gW0NvbG9yXSAkYmFja2dyb3VuZCBbJGJ1dHRvbi1iYWNrZ3JvdW5kXSAtIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIGRpc2FibGVkIGJ1dHRvbi5cclxuLy8vIEBwYXJhbSBbQ29sb3JdICRjb2xvciBbJGJ1dHRvbi1jb2xvcl0gLSBUZXh0IGNvbG9yIG9mIHRoZSBkaXNhYmxlZCBidXR0b24uIFNldCB0byBgYXV0b2AgdG8gaGF2ZSB0aGUgbWl4aW4gYXV0b21hdGljYWxseSBnZW5lcmF0ZSBhIGNvbG9yIGJhc2VkIG9uIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLlxyXG5AbWl4aW4gYnV0dG9uLWRpc2FibGVkKFxyXG4gICRiYWNrZ3JvdW5kOiAkYnV0dG9uLWJhY2tncm91bmQsXHJcbiAgJGNvbG9yOiAkYnV0dG9uLWNvbG9yXHJcbikge1xyXG4gIEBpZiAkY29sb3IgPT0gYXV0byB7XHJcbiAgICAkY29sb3I6IGNvbG9yLXBpY2stY29udHJhc3QoJGJhY2tncm91bmQsICgkYnV0dG9uLWNvbG9yLCAkYnV0dG9uLWNvbG9yLWFsdCkpO1xyXG4gIH1cclxuXHJcbiAgb3BhY2l0eTogJGJ1dHRvbi1vcGFjaXR5LWRpc2FibGVkO1xyXG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcblxyXG4gICYsICY6aG92ZXIsICY6Zm9jdXMge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XHJcbiAgICBjb2xvcjogJGNvbG9yO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIEFkZHMgYSBkcm9wZG93biBhcnJvdyB0byBhIGJ1dHRvbi5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkc2l6ZSBbMC40ZW1dIC0gU2l6ZSBvZiB0aGUgYXJyb3cuIFdlIHJlY29tbWVuZCB1c2luZyBhbiBgZW1gIHZhbHVlIHNvIHRoZSB0cmlhbmdsZSBzY2FsZXMgd2hlbiB1c2VkIGluc2lkZSBkaWZmZXJlbnQgc2l6ZXMgb2YgYnV0dG9ucy5cclxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbd2hpdGVdIC0gQ29sb3Igb2YgdGhlIGFycm93LlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRvZmZzZXQgWyRidXR0b24tcGFkZGluZ10gLSBEaXN0YW5jZSBiZXR3ZWVuIHRoZSBhcnJvdyBhbmQgdGhlIHRleHQgb2YgdGhlIGJ1dHRvbi4gRGVmYXVsdHMgdG8gd2hhdGV2ZXIgdGhlIHJpZ2h0IHBhZGRpbmcgb2YgYSBidXR0b24gaXMuXHJcbkBtaXhpbiBidXR0b24tZHJvcGRvd24oXHJcbiAgJHNpemU6IDAuNGVtLFxyXG4gICRjb2xvcjogJHdoaXRlLFxyXG4gICRvZmZzZXQ6IGdldC1zaWRlKCRidXR0b24tcGFkZGluZywgcmlnaHQpXHJcbikge1xyXG4gICY6OmFmdGVyIHtcclxuICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkc2l6ZSwgJGNvbG9yLCBkb3duKTtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHRvcDogMC40ZW07IC8vIEFsaWducyB0aGUgYXJyb3cgd2l0aCB0aGUgdGV4dCBvZiB0aGUgYnV0dG9uXHJcblxyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgZmxvYXQ6ICN7JGdsb2JhbC1yaWdodH07XHJcbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkb2Zmc2V0O1xyXG4gIH1cclxufVxyXG5cclxuLy8vIEFkZHMgYWxsIHN0eWxlcyBmb3IgYSBidXR0b24uIEZvciBtb3JlIGdyYW51bGFyIGNvbnRyb2wgb3ZlciBzdHlsZXMsIHVzZSB0aGUgaW5kaXZpZHVhbCBidXR0b24gbWl4aW5zLlxyXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkZXhwYW5kIFtmYWxzZV0gLSBTZXQgdG8gYHRydWVgIHRvIG1ha2UgdGhlIGJ1dHRvbiBmdWxsLXdpZHRoLlxyXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQgWyRidXR0b24tYmFja2dyb3VuZF0gLSBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBidXR0b24uXHJcbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFja2dyb3VuZC1ob3ZlciBbJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyXSAtIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIGJ1dHRvbiBvbiBob3Zlci4gU2V0IHRvIGBhdXRvYCB0byBoYXZlIHRoZSBtaXhpbiBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGEgaG92ZXIgY29sb3IuXHJcbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgWyRidXR0b24tY29sb3JdIC0gVGV4dCBjb2xvciBvZiB0aGUgYnV0dG9uLiBTZXQgdG8gYGF1dG9gIHRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgYSBjb2xvciBiYXNlZCBvbiB0aGUgYmFja2dyb3VuZCBjb2xvci5cclxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHN0eWxlIFtzb2xpZF0gLSBTZXQgdG8gYGhvbGxvd2AgdG8gY3JlYXRlIGEgaG9sbG93IGJ1dHRvbi4gVGhlIGNvbG9yIGRlZmluZWQgaW4gYCRiYWNrZ3JvdW5kYCB3aWxsIGJlIHVzZWQgYXMgdGhlIHByaW1hcnkgY29sb3Igb2YgdGhlIGJ1dHRvbi5cclxuQG1peGluIGJ1dHRvbihcclxuICAkZXhwYW5kOiBmYWxzZSxcclxuICAkYmFja2dyb3VuZDogJGJ1dHRvbi1iYWNrZ3JvdW5kLFxyXG4gICRiYWNrZ3JvdW5kLWhvdmVyOiAkYnV0dG9uLWJhY2tncm91bmQtaG92ZXIsXHJcbiAgJGNvbG9yOiAkYnV0dG9uLWNvbG9yLFxyXG4gICRzdHlsZTogJGJ1dHRvbi1maWxsXHJcbikge1xyXG4gIEBpbmNsdWRlIGJ1dHRvbi1iYXNlO1xyXG5cclxuICBAaWYgJHN0eWxlID09IHNvbGlkIHtcclxuICAgIEBpbmNsdWRlIGJ1dHRvbi1zdHlsZSgkYmFja2dyb3VuZCwgJGJhY2tncm91bmQtaG92ZXIsICRjb2xvcik7XHJcbiAgfVxyXG4gIEBlbHNlIGlmICRzdHlsZSA9PSBob2xsb3cge1xyXG4gICAgQGluY2x1ZGUgYnV0dG9uLWhvbGxvdztcclxuICAgIEBpbmNsdWRlIGJ1dHRvbi1ob2xsb3ctc3R5bGUoJGJhY2tncm91bmQpO1xyXG4gIH1cclxuXHJcbiAgQGlmICRleHBhbmQge1xyXG4gICAgQGluY2x1ZGUgYnV0dG9uLWV4cGFuZDtcclxuICB9XHJcbn1cclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLWJ1dHRvbiB7XHJcbiAgLmJ1dHRvbiB7XHJcbiAgICBAaW5jbHVkZSBidXR0b247XHJcblxyXG4gICAgLy8gU2l6ZXNcclxuICAgIEBlYWNoICRzaXplLCAkdmFsdWUgaW4gbWFwLXJlbW92ZSgkYnV0dG9uLXNpemVzLCBkZWZhdWx0KSB7XHJcbiAgICAgICYuI3skc2l6ZX0ge1xyXG4gICAgICAgIGZvbnQtc2l6ZTogJHZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJi5leHBhbmRlZCB7IEBpbmNsdWRlIGJ1dHRvbi1leHBhbmQ7IH1cclxuXHJcbiAgICAvLyBDb2xvcnNcclxuICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGJ1dHRvbi1wYWxldHRlIHtcclxuICAgICAgQGlmICRidXR0b24tZmlsbCAhPSBob2xsb3cge1xyXG4gICAgICAgICYuI3skbmFtZX0ge1xyXG4gICAgICAgICAgQGluY2x1ZGUgYnV0dG9uLXN0eWxlKCRjb2xvciwgYXV0bywgYXV0byk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIEBlbHNlIHtcclxuICAgICAgICAmLiN7JG5hbWV9IHtcclxuICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1ob2xsb3ctc3R5bGUoJGNvbG9yKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYuI3skbmFtZX0uZHJvcGRvd246OmFmdGVyIHtcclxuICAgICAgICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBEaXNhYmxlZCBzdHlsZVxyXG4gICAgJi5kaXNhYmxlZCxcclxuICAgICZbZGlzYWJsZWRdIHtcclxuICAgICAgQGluY2x1ZGUgYnV0dG9uLWRpc2FibGVkO1xyXG5cclxuICAgICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkYnV0dG9uLXBhbGV0dGUge1xyXG4gICAgICAgICYuI3skbmFtZX0ge1xyXG4gICAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWRpc2FibGVkKCRjb2xvciwgYXV0byk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSG9sbG93IHN0eWxlXHJcbiAgICBAaWYgJGJ1dHRvbi1maWxsICE9IGhvbGxvdyB7XHJcbiAgICAgICYuaG9sbG93IHtcclxuICAgICAgICBAaW5jbHVkZSBidXR0b24taG9sbG93O1xyXG4gICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1ob2xsb3ctc3R5bGU7XHJcblxyXG4gICAgICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGJ1dHRvbi1wYWxldHRlIHtcclxuICAgICAgICAgICYuI3skbmFtZX0ge1xyXG4gICAgICAgICAgICBAaW5jbHVkZSBidXR0b24taG9sbG93LXN0eWxlKCRjb2xvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ2xlYXIgc3R5bGVcclxuICAgIEBpZiAkYnV0dG9uLWZpbGwgIT0gY2xlYXIge1xyXG4gICAgICAmLmNsZWFyIHtcclxuICAgICAgICBAaW5jbHVkZSBidXR0b24taG9sbG93O1xyXG4gICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1ob2xsb3ctc3R5bGU7XHJcblxyXG4gICAgICAgICYsICY6aG92ZXIsICY6Zm9jdXMge1xyXG4gICAgICAgICAgJiwgJi5kaXNhYmxlZCwgJltkaXNhYmxlZF0ge1xyXG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkYnV0dG9uLXBhbGV0dGUge1xyXG4gICAgICAgICAgJi4jeyRuYW1lfSB7XHJcbiAgICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1ob2xsb3ctc3R5bGUoJGNvbG9yKTtcclxuXHJcbiAgICAgICAgICAgICYsICY6aG92ZXIsXHJcbiAgICAgICAgICAgICY6Zm9jdXMge1xyXG4gICAgICAgICAgICAgICYsXHJcbiAgICAgICAgICAgICAgJi5kaXNhYmxlZCxcclxuICAgICAgICAgICAgICAmW2Rpc2FibGVkXSB7XHJcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIERyb3Bkb3duIGFycm93XHJcbiAgICAmLmRyb3Bkb3duIHtcclxuICAgICAgQGluY2x1ZGUgYnV0dG9uLWRyb3Bkb3duO1xyXG5cclxuICAgICAgQGlmICRidXR0b24tZmlsbCA9PSBob2xsb3cge1xyXG4gICAgICAgICY6OmFmdGVyIHtcclxuICAgICAgICAgIGJvcmRlci10b3AtY29sb3I6ICRidXR0b24tYmFja2dyb3VuZDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYuaG9sbG93IHtcclxuICAgICAgICAmOjphZnRlciB7XHJcbiAgICAgICAgICBib3JkZXItdG9wLWNvbG9yOiAkYnV0dG9uLWJhY2tncm91bmQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRidXR0b24tcGFsZXR0ZSB7XHJcbiAgICAgICAgICAmLiN7JG5hbWV9IHtcclxuICAgICAgICAgICAgJjo6YWZ0ZXIge1xyXG4gICAgICAgICAgICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIEJ1dHRvbiB3aXRoIGRyb3Bkb3duIGFycm93IG9ubHlcclxuICAgICYuYXJyb3ctb25seTo6YWZ0ZXIge1xyXG4gICAgICB0b3A6IC0wLjFlbTtcclxuICAgICAgZmxvYXQ6IG5vbmU7XHJcbiAgICAgIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06IDA7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGEuYnV0dG9uIHtcclxuICAgICY6aG92ZXIsXHJcbiAgICAmOmZvY3VzIHtcclxuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgYnV0dG9uLWdyb3VwXHJcbi8vLy9cclxuXHJcbi8vLyBNYXJnaW4gZm9yIGJ1dHRvbiBncm91cHMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGJ1dHRvbmdyb3VwLW1hcmdpbjogMXJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBNYXJnaW4gYmV0d2VlbiBidXR0b25zIGluIGEgYnV0dG9uIGdyb3VwLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRidXR0b25ncm91cC1zcGFjaW5nOiAxcHggIWRlZmF1bHQ7XHJcblxyXG4vLy8gU2VsZWN0b3IgZm9yIHRoZSBidXR0b25zIGluc2lkZSBhIGJ1dHRvbiBncm91cC5cclxuLy8vIEB0eXBlIFN0cmluZ1xyXG4kYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3I6ICcuYnV0dG9uJyAhZGVmYXVsdDtcclxuXHJcbi8vLyBNYXhpbXVtIG51bWJlciBvZiBidXR0b25zIHRoYXQgY2FuIGJlIGluIGFuIGV2ZW4td2lkdGggYnV0dG9uIGdyb3VwLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRidXR0b25ncm91cC1leHBhbmQtbWF4OiA2ICFkZWZhdWx0O1xyXG5cclxuLy8vIERldGVybWluZXMgaWYgJGJ1dHRvbi1yYWRpdXMgaXMgYXBwbGllZCB0byBlYWNoIGJ1dHRvbiBvciB0aGUgYnV0dG9uIGdyb3VwIGFzIGEgd2hvbGUuIFVzZSAkZ2xvYmFsLXJhZGl1cyBpbiBfc2V0dGluZ3Muc2NzcyB0byBjaGFuZ2UgcmFkaXVzLlxyXG4vLy8gQHR5cGUgQm9vbGVhblxyXG4kYnV0dG9uZ3JvdXAtcmFkaXVzLW9uLWVhY2g6IHRydWUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQWRkIHN0eWxlcyBmb3IgYSBidXR0b24gZ3JvdXAgY29udGFpbmVyLlxyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRjaGlsZC1zZWxlY3RvciBbJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yXSAtIFNlbGVjdG9yIGZvciB0aGUgYnV0dG9ucyBpbnNpZGUgYSBidXR0b24gZ3JvdXAuXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJHNwYWNpbmcgWyRidXR0b25ncm91cC1zcGFjaW5nXSAtIFNwYWNpbmcgYmV0d2VlbiBidXR0b25zIGluIGEgYnV0dG9uIGdyb3VwLlxyXG5AbWl4aW4gYnV0dG9uLWdyb3VwKFxyXG4gICRjaGlsZC1zZWxlY3RvcjogJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yLFxyXG4gICRzcGFjaW5nOiAkYnV0dG9uZ3JvdXAtc3BhY2luZ1xyXG4pIHtcclxuICBAaW5jbHVkZSBjbGVhcmZpeDtcclxuICBtYXJnaW4tYm90dG9tOiAkYnV0dG9uZ3JvdXAtbWFyZ2luO1xyXG5cclxuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcclxuICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xyXG4gIH1cclxuICBAZWxzZSB7XHJcbiAgICBmb250LXNpemU6IDA7XHJcbiAgfVxyXG5cclxuICAjeyRjaGlsZC1zZWxlY3Rvcn0ge1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICRzcGFjaW5nO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmc7XHJcbiAgICBmb250LXNpemU6IG1hcC1nZXQoJGJ1dHRvbi1zaXplcywgZGVmYXVsdCk7XHJcblxyXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICAgIGZsZXg6IDAgMCBhdXRvO1xyXG4gICAgfVxyXG5cclxuICAgICY6bGFzdC1jaGlsZCB7XHJcbiAgICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAwO1xyXG4gICAgfVxyXG5cclxuICAgIEBpZiBub3QgJGJ1dHRvbmdyb3VwLXJhZGl1cy1vbi1lYWNoIHtcclxuICAgICAgYm9yZGVyLXJhZGl1czogMDtcclxuXHJcbiAgICAgICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICAgIGJvcmRlci10b3AtI3skZ2xvYmFsLWxlZnR9LXJhZGl1czogJGJ1dHRvbi1yYWRpdXM7XHJcbiAgICAgICAgYm9yZGVyLWJvdHRvbS0jeyRnbG9iYWwtbGVmdH0tcmFkaXVzOiAkYnV0dG9uLXJhZGl1cztcclxuICAgICAgfVxyXG5cclxuICAgICAgJjpsYXN0LWNoaWxkIHtcclxuICAgICAgICBib3JkZXItdG9wLSN7JGdsb2JhbC1yaWdodH0tcmFkaXVzOiAkYnV0dG9uLXJhZGl1cztcclxuICAgICAgICBib3JkZXItYm90dG9tLSN7JGdsb2JhbC1yaWdodH0tcmFkaXVzOiAkYnV0dG9uLXJhZGl1cztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcbn1cclxuXHJcbi8vLyBDcmVhdGVzIGEgZnVsbC13aWR0aCBidXR0b24gZ3JvdXAsIG1ha2luZyBlYWNoIGJ1dHRvbiBlcXVhbCB3aWR0aC5cclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc2VsZWN0b3IgWyRidXR0b25ncm91cC1jaGlsZC1zZWxlY3Rvcl0gLSBTZWxlY3RvciBmb3IgdGhlIGJ1dHRvbnMgaW5zaWRlIGEgYnV0dG9uIGdyb3VwLlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzcGFjaW5nIFskYnV0dG9uZ3JvdXAtc3BhY2luZ10gLSBTcGFjaW5nIGJldHdlZW4gYnV0dG9ucyBpbiBhIGJ1dHRvbiBncm91cC5cclxuQG1peGluIGJ1dHRvbi1ncm91cC1leHBhbmQoXHJcbiAgJHNlbGVjdG9yOiAkYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3IsXHJcbiAgJHNwYWNpbmc6ICRidXR0b25ncm91cC1zcGFjaW5nLFxyXG4gICRjb3VudDogbnVsbFxyXG4pIHtcclxuICBAaWYgbm90ICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogLSRzcGFjaW5nO1xyXG5cclxuICAgICY6OmJlZm9yZSxcclxuICAgICY6OmFmdGVyIHtcclxuICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICN7JHNlbGVjdG9yfSB7XHJcbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcclxuICAgICAgZmxleDogMSAxIDBweDsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSB6ZXJvLXVuaXRcclxuICAgIH1cclxuICAgIEBlbHNlIHtcclxuICAgICAgLy8gT25lIGNoaWxkXHJcbiAgICAgICY6Zmlyc3QtY2hpbGQ6bGFzdC1jaGlsZCB7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFR3byBvciBtb3JlIGNoaWxkcmVlblxyXG4gICAgICBAZm9yICRpIGZyb20gMiB0aHJvdWdoICRidXR0b25ncm91cC1leHBhbmQtbWF4IHtcclxuICAgICAgICAmOmZpcnN0LWNoaWxkOm50aC1sYXN0LWNoaWxkKCN7JGl9KSB7XHJcbiAgICAgICAgICAmLCAmOmZpcnN0LWNoaWxkOm50aC1sYXN0LWNoaWxkKCN7JGl9KSB+ICN7JHNlbGVjdG9yfSB7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgICAgICAgd2lkdGg6IGNhbGMoI3twZXJjZW50YWdlKDEgLyAkaSl9IC0gI3skc3BhY2luZ30pO1xyXG4gICAgICAgICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJHNwYWNpbmc7XHJcblxyXG4gICAgICAgICAgICAmOmxhc3QtY2hpbGQge1xyXG4gICAgICAgICAgICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkc3BhY2luZyAqIC0kYnV0dG9uZ3JvdXAtZXhwYW5kLW1heDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8vIFN0YWNrcyB0aGUgYnV0dG9ucyBpbiBhIGJ1dHRvbiBncm91cC5cclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc2VsZWN0b3IgWyRidXR0b25ncm91cC1jaGlsZC1zZWxlY3Rvcl0gLSBTZWxlY3RvciBmb3IgdGhlIGJ1dHRvbnMgaW5zaWRlIHRoZSBidXR0b24gZ3JvdXAuXHJcbkBtaXhpbiBidXR0b24tZ3JvdXAtc3RhY2soXHJcbiAgJHNlbGVjdG9yOiAkYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3JcclxuKSB7XHJcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgfVxyXG5cclxuICAjeyRzZWxlY3Rvcn0ge1xyXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICAgIGZsZXg6IDAgMCAxMDAlO1xyXG4gICAgfVxyXG4gICAgQGVsc2Uge1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICAmOmxhc3QtY2hpbGQge1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBAaWYgbm90ICRidXR0b25ncm91cC1yYWRpdXMtb24tZWFjaCB7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDA7XHJcblxyXG4gICAgICAmOmZpcnN0LWNoaWxke1xyXG4gICAgICAgIGJvcmRlci10b3AtI3skZ2xvYmFsLWxlZnR9LXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XHJcbiAgICAgICAgYm9yZGVyLXRvcC0jeyRnbG9iYWwtcmlnaHR9LXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICY6bGFzdC1jaGlsZCB7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcclxuICAgICAgICBib3JkZXItYm90dG9tLSN7JGdsb2JhbC1sZWZ0fS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG4gICAgICAgIGJvcmRlci1ib3R0b20tI3skZ2xvYmFsLXJpZ2h0fS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gIH1cclxufVxyXG5cclxuLy8vIFVuLXN0YWNrcyB0aGUgYnV0dG9ucyBpbiBhIGJ1dHRvbiBncm91cC5cclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc2VsZWN0b3IgWyRidXR0b25ncm91cC1jaGlsZC1zZWxlY3Rvcl0gLSBTZWxlY3RvciBmb3IgdGhlIGJ1dHRvbnMgaW5zaWRlIHRoZSBidXR0b24gZ3JvdXAuXHJcbkBtaXhpbiBidXR0b24tZ3JvdXAtdW5zdGFjayhcclxuICAkc2VsZWN0b3I6ICRidXR0b25ncm91cC1jaGlsZC1zZWxlY3RvclxyXG4pIHtcclxuICAjeyRzZWxlY3Rvcn0ge1xyXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICAgIGZsZXg6IDEgMSAwcHg7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgemVyby11bml0XHJcbiAgICB9XHJcbiAgICBAZWxzZSB7XHJcbiAgICAgIHdpZHRoOiBhdXRvO1xyXG4gICAgfVxyXG4gICAgbWFyZ2luLWJvdHRvbTogMDtcclxuXHJcbiAgICBAaWYgbm90ICRidXR0b25ncm91cC1yYWRpdXMtb24tZWFjaCB7XHJcbiAgICAgICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICAgIGJvcmRlci10b3AtI3skZ2xvYmFsLWxlZnR9LXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XHJcbiAgICAgICAgYm9yZGVyLXRvcC0jeyRnbG9iYWwtcmlnaHR9LXJhZGl1czogMDtcclxuICAgICAgICBib3JkZXItYm90dG9tLSN7JGdsb2JhbC1sZWZ0fS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmOmxhc3QtY2hpbGQge1xyXG4gICAgICAgIGJvcmRlci10b3AtI3skZ2xvYmFsLXJpZ2h0fS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG4gICAgICAgIGJvcmRlci1ib3R0b20tI3skZ2xvYmFsLXJpZ2h0fS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG4gICAgICAgIGJvcmRlci1ib3R0b20tI3skZ2xvYmFsLWxlZnR9LXJhZGl1czogMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcbn1cclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLWJ1dHRvbi1ncm91cCB7XHJcbiAgLmJ1dHRvbi1ncm91cCB7XHJcbiAgICBAaW5jbHVkZSBidXR0b24tZ3JvdXA7XHJcblxyXG4gICAgLy8gU2l6ZXNcclxuICAgIEBlYWNoICRzaXplLCAkdmFsdWUgaW4gbWFwLXJlbW92ZSgkYnV0dG9uLXNpemVzLCBkZWZhdWx0KSB7XHJcbiAgICAgICYuI3skc2l6ZX0gI3skYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3J9IHtcclxuICAgICAgICBmb250LXNpemU6ICR2YWx1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIEV2ZW4td2lkdGggR3JvdXBcclxuICAgICYuZXhwYW5kZWQgeyBAaW5jbHVkZSBidXR0b24tZ3JvdXAtZXhwYW5kOyB9XHJcblxyXG4gICAgLy8gQ29sb3JzXHJcbiAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRmb3VuZGF0aW9uLXBhbGV0dGUge1xyXG4gICAgICBAaWYgJGJ1dHRvbi1maWxsICE9IGhvbGxvdyB7XHJcbiAgICAgICAgJi4jeyRuYW1lfSAjeyRidXR0b25ncm91cC1jaGlsZC1zZWxlY3Rvcn0ge1xyXG4gICAgICAgICAgQGluY2x1ZGUgYnV0dG9uLXN0eWxlKCRjb2xvciwgYXV0bywgYXV0byk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIEBlbHNlIHtcclxuICAgICAgICAmLiN7JG5hbWV9ICN7JGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yfSB7XHJcbiAgICAgICAgICBAaW5jbHVkZSBidXR0b24taG9sbG93O1xyXG4gICAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWhvbGxvdy1zdHlsZSgkY29sb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICYuc3RhY2tlZCxcclxuICAgICYuc3RhY2tlZC1mb3Itc21hbGwsXHJcbiAgICAmLnN0YWNrZWQtZm9yLW1lZGl1bSB7XHJcbiAgICAgIEBpbmNsdWRlIGJ1dHRvbi1ncm91cC1zdGFjaztcclxuICAgIH1cclxuXHJcbiAgICAmLnN0YWNrZWQtZm9yLXNtYWxsIHtcclxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcclxuICAgICAgICBAaW5jbHVkZSBidXR0b24tZ3JvdXAtdW5zdGFjaztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICYuc3RhY2tlZC1mb3ItbWVkaXVtIHtcclxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xyXG4gICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1ncm91cC11bnN0YWNrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJi5zdGFja2VkLWZvci1zbWFsbC5leHBhbmRlZCB7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgZm9yY2UtZWxlbWVudC1uZXN0aW5nXHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSkge1xyXG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG5cclxuICAgICAgICAjeyRidXR0b25ncm91cC1jaGlsZC1zZWxlY3Rvcn0ge1xyXG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogMDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLy8vL1xyXG4vLy8gQGdyb3VwIGFjY29yZGlvbi1tZW51XHJcbi8vLy9cclxuXHJcbi8vLyBTZXRzIGFjY29yZGlvbiBtZW51IHBhZGRpbmcuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGFjY29yZGlvbm1lbnUtcGFkZGluZzogJGdsb2JhbC1tZW51LXBhZGRpbmcgIWRlZmF1bHQ7XHJcblxyXG4vLy8gU2V0cyBhY2NvcmRpb24gbWVudSBuZXN0ZWQgbWFyZ2luXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGFjY29yZGlvbm1lbnUtbmVzdGVkLW1hcmdpbjogJGdsb2JhbC1tZW51LW5lc3RlZC1tYXJnaW4gIWRlZmF1bHQ7XHJcblxyXG4vLy8gU2V0cyBhY2NvcmRpb24gbWVudSBzdWJtZW51IHBhZGRpbmcuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGFjY29yZGlvbm1lbnUtc3VibWVudS1wYWRkaW5nOiAkYWNjb3JkaW9ubWVudS1wYWRkaW5nICFkZWZhdWx0O1xyXG5cclxuLy8vIFNldHMgaWYgYWNjb3JkaW9uIG1lbnVzIGhhdmUgdGhlIGRlZmF1bHQgYXJyb3cgc3R5bGVzLlxyXG4vLy8gQHR5cGUgQm9vbGVhblxyXG4kYWNjb3JkaW9ubWVudS1hcnJvd3M6IHRydWUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gU2V0cyBhY2NvcmRpb24gbWVudSBhcnJvdyBjb2xvciBpZiBhcnJvdyBpcyB1c2VkLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGFjY29yZGlvbm1lbnUtYXJyb3ctY29sb3I6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xyXG5cclxuLy8vIFNldHMgYWNjb3JkaW9uIG1lbnUgaXRlbSBwYWRkaW5nLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGFjY29yZGlvbm1lbnUtaXRlbS1iYWNrZ3JvdW5kOiBudWxsICFkZWZhdWx0O1xyXG5cclxuLy8vIFNldHMgYWNjb3JkaW9uIG1lbnUgaXRlbSBib3JkZXIuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kYWNjb3JkaW9ubWVudS1ib3JkZXI6IG51bGwgIWRlZmF1bHQ7XHJcblxyXG4vLy8gU2V0cyBhY2NvcmRpb24gbWVudSBpdGVtIHBhZGRpbmcuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kYWNjb3JkaW9ubWVudS1zdWJtZW51LXRvZ2dsZS1iYWNrZ3JvdW5kOiBudWxsICFkZWZhdWx0O1xyXG5cclxuLy8vIFNldHMgYWNjb3JkaW9uIG1lbnUgaXRlbSBwYWRkaW5nLlxyXG4vLy8gQHR5cGUgTGlzdFxyXG4kYWNjb3JkaW9uLXN1Ym1lbnUtdG9nZ2xlLWJvcmRlcjogJGFjY29yZGlvbm1lbnUtYm9yZGVyICFkZWZhdWx0O1xyXG5cclxuLy8vIFNldHMgYWNjb3JkaW9uIG1lbnUgc3VibWVudSB0b2dnbGUgYmFja2dyb3VuZCB3aWR0aC5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kYWNjb3JkaW9ubWVudS1zdWJtZW51LXRvZ2dsZS13aWR0aDogNDBweCAhZGVmYXVsdDtcclxuXHJcbi8vLyBTZXRzIGFjY29yZGlvbiBtZW51IHN1Ym1lbnUgdG9nZ2xlIGJhY2tncm91bmQgaGVpZ2h0LlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRhY2NvcmRpb25tZW51LXN1Ym1lbnUtdG9nZ2xlLWhlaWdodDogJGFjY29yZGlvbm1lbnUtc3VibWVudS10b2dnbGUtd2lkdGggIWRlZmF1bHQ7XHJcblxyXG4vLy8gU2V0cyBhY2NvcmRpb24gbWVudSBhcnJvdyBzaXplIGlmIGFycm93IGlzIHVzZWQuXHJcbi8vLyBAdHlwZSBMZW5ndGhcclxuJGFjY29yZGlvbm1lbnUtYXJyb3ctc2l6ZTogNnB4ICFkZWZhdWx0O1xyXG5cclxuQG1peGluIHpmLWFjY29yZGlvbi1tZW51LWxlZnQtcmlnaHQtYXJyb3dzIHtcclxuICAuaXMtYWNjb3JkaW9uLXN1Ym1lbnUtcGFyZW50Om5vdCguaGFzLXN1Ym1lbnUtdG9nZ2xlKSA+IGEge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG5cclxuICAgICY6OmFmdGVyIHtcclxuICAgICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCRhY2NvcmRpb25tZW51LWFycm93LXNpemUsICRhY2NvcmRpb25tZW51LWFycm93LWNvbG9yLCBkb3duKTtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6IDUwJTtcclxuICAgICAgbWFyZ2luLXRvcDogLTEgKiAoJGFjY29yZGlvbm1lbnUtYXJyb3ctc2l6ZSAvIDIpO1xyXG4gICAgICAjeyRnbG9iYWwtcmlnaHR9OiAxcmVtO1xyXG4gICAgfVxyXG4gIH1cclxuICAmLmFsaWduLWxlZnQgLmlzLWFjY29yZGlvbi1zdWJtZW51LXBhcmVudCA+IGE6OmFmdGVyIHtcclxuICAgIGxlZnQ6IGF1dG87XHJcbiAgICByaWdodDogMXJlbTtcclxuICB9XHJcbiAgJi5hbGlnbi1yaWdodCAuaXMtYWNjb3JkaW9uLXN1Ym1lbnUtcGFyZW50ID4gYTo6YWZ0ZXIge1xyXG4gICAgcmlnaHQ6IGF1dG87XHJcbiAgICBsZWZ0OiAxcmVtO1xyXG4gIH1cclxufVxyXG5AbWl4aW4gZm91bmRhdGlvbi1hY2NvcmRpb24tbWVudSB7XHJcblxyXG4gIC5hY2NvcmRpb24tbWVudSB7XHJcbiAgICBAaWYgJGFjY29yZGlvbm1lbnUtYm9yZGVyIHtcclxuICAgICAgYm9yZGVyLWJvdHRvbTogJGFjY29yZGlvbm1lbnUtYm9yZGVyO1xyXG4gICAgfVxyXG5cclxuICAgIGxpIHtcclxuICAgICAgQGlmICRhY2NvcmRpb25tZW51LWJvcmRlciB7XHJcbiAgICAgICAgYm9yZGVyLXRvcDogJGFjY29yZGlvbm1lbnUtYm9yZGVyO1xyXG4gICAgICAgIGJvcmRlci1yaWdodDogJGFjY29yZGlvbm1lbnUtYm9yZGVyO1xyXG4gICAgICAgIGJvcmRlci1sZWZ0OiAkYWNjb3JkaW9ubWVudS1ib3JkZXI7XHJcbiAgICAgIH1cclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICB9XHJcblxyXG4gICAgYSB7XHJcbiAgICAgIEBpZiAkYWNjb3JkaW9ubWVudS1pdGVtLWJhY2tncm91bmQge1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICRhY2NvcmRpb25tZW51LWl0ZW0tYmFja2dyb3VuZDtcclxuICAgICAgfVxyXG4gICAgICBwYWRkaW5nOiAkYWNjb3JkaW9ubWVudS1wYWRkaW5nO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAuaXMtYWNjb3JkaW9uLXN1Ym1lbnUgYSB7XHJcbiAgICAgIHBhZGRpbmc6ICRhY2NvcmRpb25tZW51LXN1Ym1lbnUtcGFkZGluZztcclxuICAgIH1cclxuXHJcbiAgICAubmVzdGVkLmlzLWFjY29yZGlvbi1zdWJtZW51IHtcclxuICAgICAgQGluY2x1ZGUgbWVudS1uZXN0ZWQoJGFjY29yZGlvbm1lbnUtbmVzdGVkLW1hcmdpbik7XHJcbiAgICB9XHJcblxyXG4gICAgJi5hbGlnbi0jeyRnbG9iYWwtcmlnaHR9IHtcclxuICAgICAgLm5lc3RlZC5pcy1hY2NvcmRpb24tc3VibWVudSB7XHJcbiAgICAgICAgQGluY2x1ZGUgbWVudS1uZXN0ZWQoJGFjY29yZGlvbm1lbnUtbmVzdGVkLW1hcmdpbiwgcmlnaHQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQGlmICRhY2NvcmRpb25tZW51LWFycm93cyB7XHJcbiAgICAgIEBpbmNsdWRlIHpmLWFjY29yZGlvbi1tZW51LWxlZnQtcmlnaHQtYXJyb3dzO1xyXG5cclxuICAgICAgLmlzLWFjY29yZGlvbi1zdWJtZW51LXBhcmVudFthcmlhLWV4cGFuZGVkPSd0cnVlJ10gPiBhOjphZnRlciB7XHJcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcclxuICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiA1MCUgNTAlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuaXMtYWNjb3JkaW9uLXN1Ym1lbnUgbGkge1xyXG4gICAgQGlmICRhY2NvcmRpb25tZW51LWJvcmRlciB7XHJcbiAgICAgIGJvcmRlci1yaWdodDogMDtcclxuICAgICAgYm9yZGVyLWxlZnQ6IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuaXMtYWNjb3JkaW9uLXN1Ym1lbnUtcGFyZW50IHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB9XHJcblxyXG4gIC5oYXMtc3VibWVudS10b2dnbGUgPiBhIHtcclxuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkYWNjb3JkaW9ubWVudS1zdWJtZW51LXRvZ2dsZS13aWR0aDtcclxuICB9XHJcblxyXG4gIC8vIFN1Ym1lbnUgdG9nZ2xlXHJcbiAgLnN1Ym1lbnUtdG9nZ2xlIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMDtcclxuICAgICN7JGdsb2JhbC1yaWdodH06IDA7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcblxyXG4gICAgd2lkdGg6ICRhY2NvcmRpb25tZW51LXN1Ym1lbnUtdG9nZ2xlLXdpZHRoO1xyXG4gICAgaGVpZ2h0OiAkYWNjb3JkaW9ubWVudS1zdWJtZW51LXRvZ2dsZS1oZWlnaHQ7XHJcblxyXG4gICAgYm9yZGVyLSN7JGdsb2JhbC1sZWZ0fTogJGFjY29yZGlvbi1zdWJtZW51LXRvZ2dsZS1ib3JkZXI7XHJcblxyXG4gICAgQGlmICRhY2NvcmRpb25tZW51LXN1Ym1lbnUtdG9nZ2xlLWJhY2tncm91bmQge1xyXG4gICAgICBiYWNrZ3JvdW5kOiAkYWNjb3JkaW9ubWVudS1zdWJtZW51LXRvZ2dsZS1iYWNrZ3JvdW5kO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEFkZCB0aGUgYXJyb3cgdG8gdGhlIHRvZ2dsZVxyXG4gICAgJjo6YWZ0ZXIge1xyXG4gICAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoNnB4LCAkYWNjb3JkaW9ubWVudS1hcnJvdy1jb2xvciwgZG93bik7XHJcblxyXG4gICAgICB0b3A6IDA7XHJcbiAgICAgIGJvdHRvbTogMDtcclxuICAgICAgbWFyZ2luOiBhdXRvO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gUm90YXRlIHRoZSBhcnJvdyB3aGVuIG1lbnUgaXMgb3BlblxyXG4gIC5zdWJtZW51LXRvZ2dsZVthcmlhLWV4cGFuZGVkPSd0cnVlJ106OmFmdGVyIHtcclxuICAgIHRyYW5zZm9ybTogc2NhbGVZKC0xKTtcclxuICAgIHRyYW5zZm9ybS1vcmlnaW46IDUwJSA1MCU7XHJcbiAgfVxyXG5cclxuICAuc3VibWVudS10b2dnbGUtdGV4dCB7XHJcbiAgICBAaW5jbHVkZSBlbGVtZW50LWludmlzaWJsZTtcclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIGFjY29yZGlvblxyXG4vLy8vXHJcblxyXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIG9mIGFuIGFjY29yZGlvbiBncm91cC5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRhY2NvcmRpb24tYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xyXG5cclxuLy8vIElmIGB0cnVlYCwgYWRkcyBwbHVzIGFuZCBtaW51cyBpY29ucyB0byB0aGUgc2lkZSBvZiBlYWNoIGFjY29yZGlvbiB0aXRsZS5cclxuLy8vIEB0eXBlIEJvb2xlYW5cclxuJGFjY29yZGlvbi1wbHVzbWludXM6IHRydWUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRm9udCBzaXplIG9mIGFjY29yZGlvbiB0aXRsZXMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGFjY29yZGlvbi10aXRsZS1mb250LXNpemU6IHJlbS1jYWxjKDEyKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IHRleHQgY29sb3IgZm9yIGl0ZW1zIGluIGEgTWVudS5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRhY2NvcmRpb24taXRlbS1jb2xvcjogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIG9uIGhvdmVyIGZvciBpdGVtcyBpbiBhIE1lbnUuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kYWNjb3JkaW9uLWl0ZW0tYmFja2dyb3VuZC1ob3ZlcjogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBwYWRkaW5nIG9mIGFuIGFjY29yZGlvbiBpdGVtLlxyXG4vLy8gQHR5cGUgTnVtYmVyIHwgTGlzdFxyXG4kYWNjb3JkaW9uLWl0ZW0tcGFkZGluZzogMS4yNXJlbSAxcmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBvZiB0YWIgY29udGVudC5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRhY2NvcmRpb24tY29udGVudC1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBib3JkZXIgY29sb3Igb2YgdGFiIGNvbnRlbnQuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kYWNjb3JkaW9uLWNvbnRlbnQtYm9yZGVyOiAxcHggc29saWQgJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCB0ZXh0IGNvbG9yIG9mIHRhYiBjb250ZW50LlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGFjY29yZGlvbi1jb250ZW50LWNvbG9yOiAkYm9keS1mb250LWNvbG9yICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgcGFkZGluZyBmb3IgdGFiIGNvbnRlbnQuXHJcbi8vLyBAdHlwZSBOdW1iZXIgfCBMaXN0XHJcbiRhY2NvcmRpb24tY29udGVudC1wYWRkaW5nOiAxcmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIEFkZHMgc3R5bGVzIGZvciBhbiBhY2NvcmRpb24gY29udGFpbmVyLiBBcHBseSB0aGlzIHRvIHRoZSBzYW1lIGVsZW1lbnQgdGhhdCBnZXRzIGBkYXRhLWFjY29yZGlvbmAuXHJcbkBtaXhpbiBhY2NvcmRpb24tY29udGFpbmVyIChcclxuICAkYmFja2dyb3VuZDogJGFjY29yZGlvbi1iYWNrZ3JvdW5kXHJcbikge1xyXG4gIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06IDA7XHJcbiAgYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XHJcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xyXG4gICZbZGlzYWJsZWRdIHtcclxuICAgIC5hY2NvcmRpb24tdGl0bGUge1xyXG4gICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgYWNjb3JkaW9uIGl0ZW0uIEFwcGx5IHRoaXMgdG8gdGhlIGxpc3QgaXRlbSB3aXRoaW4gYW4gYWNjb3JkaW9uIHVsLlxyXG5AbWl4aW4gYWNjb3JkaW9uLWl0ZW0ge1xyXG4gICY6Zmlyc3QtY2hpbGQgPiA6Zmlyc3QtY2hpbGQge1xyXG4gICAgYm9yZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgJGdsb2JhbC1yYWRpdXMgMCAwO1xyXG4gIH1cclxuXHJcbiAgJjpsYXN0LWNoaWxkID4gOmxhc3QtY2hpbGQge1xyXG4gICAgYm9yZGVyLXJhZGl1czogMCAwICRnbG9iYWwtcmFkaXVzICRnbG9iYWwtcmFkaXVzO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgdGl0bGUgb2YgYW4gYWNjb3JkaW9uIGl0ZW0uIEFwcGx5IHRoaXMgdG8gdGhlIGxpbmsgd2l0aGluIGFuIGFjY29yZGlvbiBpdGVtLlxyXG5AbWl4aW4gYWNjb3JkaW9uLXRpdGxlIChcclxuICAkcGFkZGluZzogJGFjY29yZGlvbi1pdGVtLXBhZGRpbmcsXHJcbiAgJGZvbnQtc2l6ZTogJGFjY29yZGlvbi10aXRsZS1mb250LXNpemUsXHJcbiAgJGNvbG9yOiAkYWNjb3JkaW9uLWl0ZW0tY29sb3IsXHJcbiAgJGJvcmRlcjogJGFjY29yZGlvbi1jb250ZW50LWJvcmRlcixcclxuICAkYmFja2dyb3VuZC1ob3ZlcjogJGFjY29yZGlvbi1pdGVtLWJhY2tncm91bmQtaG92ZXJcclxuKSB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xyXG5cclxuICBib3JkZXI6ICRib3JkZXI7XHJcbiAgYm9yZGVyLWJvdHRvbTogMDtcclxuXHJcbiAgZm9udC1zaXplOiAkZm9udC1zaXplO1xyXG4gIGxpbmUtaGVpZ2h0OiAxO1xyXG4gIGNvbG9yOiAkY29sb3I7XHJcblxyXG4gIDpsYXN0LWNoaWxkOm5vdCguaXMtYWN0aXZlKSA+ICYge1xyXG4gICAgYm9yZGVyLWJvdHRvbTogJGJvcmRlcjtcclxuICAgIGJvcmRlci1yYWRpdXM6IDAgMCAkZ2xvYmFsLXJhZGl1cyAkZ2xvYmFsLXJhZGl1cztcclxuICB9XHJcblxyXG4gICY6aG92ZXIsXHJcbiAgJjpmb2N1cyB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZC1ob3ZlcjtcclxuICB9XHJcblxyXG4gIEBpZiAkYWNjb3JkaW9uLXBsdXNtaW51cyB7XHJcbiAgICAmOjpiZWZvcmUge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHRvcDogNTAlO1xyXG4gICAgICAjeyRnbG9iYWwtcmlnaHR9OiAxcmVtO1xyXG4gICAgICBtYXJnaW4tdG9wOiAtMC41cmVtO1xyXG4gICAgICBjb250ZW50OiAnKyc7XHJcbiAgICB9XHJcblxyXG4gICAgLmlzLWFjdGl2ZSA+ICY6OmJlZm9yZSB7XHJcbiAgICAgIGNvbnRlbnQ6ICdcXDIwMTMnO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8vIEFkZHMgc3R5bGVzIGZvciBhY2NvcmRpb24gY29udGVudC4gQXBwbHkgdGhpcyB0byB0aGUgY29udGVudCBwYW5lIGJlbG93IGFuIGFjY29yZGlvbiBpdGVtJ3MgdGl0bGUuXHJcbkBtaXhpbiBhY2NvcmRpb24tY29udGVudCAoXHJcbiAgJHBhZGRpbmc6ICRhY2NvcmRpb24tY29udGVudC1wYWRkaW5nLFxyXG4gICRib3JkZXI6ICRhY2NvcmRpb24tY29udGVudC1ib3JkZXIsXHJcbiAgJGJhY2tncm91bmQ6ICRhY2NvcmRpb24tY29udGVudC1iYWNrZ3JvdW5kLFxyXG4gICRjb2xvcjogJGFjY29yZGlvbi1jb250ZW50LWNvbG9yXHJcbikge1xyXG4gIGRpc3BsYXk6IG5vbmU7XHJcbiAgcGFkZGluZzogJHBhZGRpbmc7XHJcblxyXG4gIGJvcmRlcjogJGJvcmRlcjtcclxuICBib3JkZXItYm90dG9tOiAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xyXG5cclxuICBjb2xvcjogJGNvbG9yO1xyXG5cclxuICA6bGFzdC1jaGlsZCA+ICY6bGFzdC1jaGlsZCB7XHJcbiAgICBib3JkZXItYm90dG9tOiAkYm9yZGVyO1xyXG4gIH1cclxufVxyXG5cclxuQG1peGluIGZvdW5kYXRpb24tYWNjb3JkaW9uIHtcclxuICAuYWNjb3JkaW9uIHtcclxuICAgIEBpbmNsdWRlIGFjY29yZGlvbi1jb250YWluZXI7XHJcbiAgfVxyXG5cclxuICAuYWNjb3JkaW9uLWl0ZW0ge1xyXG4gICAgQGluY2x1ZGUgYWNjb3JkaW9uLWl0ZW07XHJcbiAgfVxyXG5cclxuICAuYWNjb3JkaW9uLXRpdGxlIHtcclxuICAgIEBpbmNsdWRlIGFjY29yZGlvbi10aXRsZTtcclxuICB9XHJcblxyXG4gIC5hY2NvcmRpb24tY29udGVudCB7XHJcbiAgICBAaW5jbHVkZSBhY2NvcmRpb24tY29udGVudDtcclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIGJhZGdlXHJcbi8vLy9cclxuXHJcbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3IgZm9yIGJhZGdlcy5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRiYWRnZS1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IHRleHQgY29sb3IgZm9yIGJhZGdlcy5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRiYWRnZS1jb2xvcjogJHdoaXRlICFkZWZhdWx0O1xyXG5cclxuLy8vIEFsdGVybmF0ZSB0ZXh0IGNvbG9yIGZvciBiYWRnZXMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kYmFkZ2UtY29sb3ItYWx0OiAkYmxhY2sgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQ29sb3JpbmcgY2xhc3Nlcy4gQSBtYXAgb2YgY2xhc3NlcyB0byBvdXRwdXQgaW4geW91ciBDU1MsIGxpa2UgYC5zZWNvbmRhcnlgLCBgLnN1Y2Nlc3NgLCBhbmQgc28gb24uXHJcbi8vLyBAdHlwZSBNYXBcclxuJGJhZGdlLXBhbGV0dGU6ICRmb3VuZGF0aW9uLXBhbGV0dGUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBwYWRkaW5nIGluc2lkZSBiYWRnZXMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGJhZGdlLXBhZGRpbmc6IDAuM2VtICFkZWZhdWx0O1xyXG5cclxuLy8vIE1pbmltdW0gd2lkdGggb2YgYSBiYWRnZS5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kYmFkZ2UtbWlud2lkdGg6IDIuMWVtICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgZm9udCBzaXplIGZvciBiYWRnZXMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGJhZGdlLWZvbnQtc2l6ZTogMC42cmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIEdlbmVyYXRlcyB0aGUgYmFzZSBzdHlsZXMgZm9yIGEgYmFkZ2UuXHJcbkBtaXhpbiBiYWRnZSB7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIG1pbi13aWR0aDogJGJhZGdlLW1pbndpZHRoO1xyXG4gIHBhZGRpbmc6ICRiYWRnZS1wYWRkaW5nO1xyXG5cclxuICBib3JkZXItcmFkaXVzOiA1MCU7XHJcblxyXG4gIGZvbnQtc2l6ZTogJGJhZGdlLWZvbnQtc2l6ZTtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbn1cclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLWJhZGdlIHtcclxuICAuYmFkZ2Uge1xyXG4gICAgQGluY2x1ZGUgYmFkZ2U7XHJcblxyXG4gICAgYmFja2dyb3VuZDogJGJhZGdlLWJhY2tncm91bmQ7XHJcbiAgICBjb2xvcjogJGJhZGdlLWNvbG9yO1xyXG5cclxuICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGJhZGdlLXBhbGV0dGUge1xyXG4gICAgICAmLiN7JG5hbWV9IHtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAkY29sb3I7XHJcbiAgICAgICAgY29sb3I6IGNvbG9yLXBpY2stY29udHJhc3QoJGNvbG9yLCAoJGJhZGdlLWNvbG9yLCAkYmFkZ2UtY29sb3ItYWx0KSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIGJyZWFkY3J1bWJzXHJcbi8vLy9cclxuXHJcbi8vLyBNYXJnaW4gYXJvdW5kIGEgYnJlYWRjcnVtYnMgY29udGFpbmVyLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRicmVhZGNydW1icy1tYXJnaW46IDAgMCAkZ2xvYmFsLW1hcmdpbiAwICFkZWZhdWx0O1xyXG5cclxuLy8vIEZvbnQgc2l6ZSBvZiBicmVhZGNydW1iIGxpbmtzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRicmVhZGNydW1icy1pdGVtLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTEpICFkZWZhdWx0O1xyXG5cclxuLy8vIENvbG9yIG9mIGJyZWFkY3J1bWIgbGlua3MuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kYnJlYWRjcnVtYnMtaXRlbS1jb2xvcjogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQ29sb3Igb2YgdGhlIGFjdGl2ZSBicmVhZGNydW1iIGxpbmsuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kYnJlYWRjcnVtYnMtaXRlbS1jb2xvci1jdXJyZW50OiAkYmxhY2sgIWRlZmF1bHQ7XHJcblxyXG4vLy8gT3BhY2l0eSBvZiBkaXNhYmxlZCBicmVhZGNydW1iIGxpbmtzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRicmVhZGNydW1icy1pdGVtLWNvbG9yLWRpc2FibGVkOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gTWFyZ2luIGJldHdlZW4gYnJlYWRjcnVtYiBpdGVtcy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kYnJlYWRjcnVtYnMtaXRlbS1tYXJnaW46IDAuNzVyZW0gIWRlZmF1bHQ7XHJcblxyXG4vLy8gSWYgYHRydWVgLCBtYWtlcyBicmVhZGNydW1iIGxpbmtzIHVwcGVyY2FzZS5cclxuLy8vIEB0eXBlIEJvb2xlYW5cclxuJGJyZWFkY3J1bWJzLWl0ZW0tdXBwZXJjYXNlOiB0cnVlICFkZWZhdWx0O1xyXG5cclxuLy8vIElmIGB0cnVlYCwgYWRkcyBhIHNlcGVyYXRvciBiZXR3ZWVuIGJyZWFkY3J1bWIgbGlua3MuXHJcbi8vLyBAdHlwZSBCb29sZWFuXHJcbiRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvcjogdHJ1ZSAhZGVmYXVsdDtcclxuXHJcbi8vIElmIGl0IGV4aXN0cyAkYnJlYWRjcnVtYnMtaXRlbS1zbGFzaCBpcyB1c2VkIHRvIGJ1aWxkICRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvci4gU2VlIHRoZSBkb2N1bWVudGF0aW9uLlxyXG5AaWYgdmFyaWFibGUtZXhpc3RzKGJyZWFkY3J1bWJzLWl0ZW0tc2xhc2gpIHtcclxuICAkYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3I6ICRicmVhZGNydW1icy1pdGVtLXNsYXNoO1xyXG59XHJcblxyXG4vLy8gVXNlZCBjaGFyYWN0ZXIgZm9yIHRoZSBicmVhZGNydW1iIHNlcGFyYXRvci5cclxuLy8vIEB0eXBlIENvbnRlbnRcclxuJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yLWl0ZW06ICcvJyAhZGVmYXVsdDtcclxuXHJcbi8vLyBVc2VkIGNoYXJhY3RlciBmb3IgdGhlIGJyZWFkY3J1bWIgc2VwYXJhdG9yIGluIHJ0bCBtb2RlLlxyXG4vLy8gQHR5cGUgQ29udGVudFxyXG4kYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3ItaXRlbS1ydGw6ICdcXFxcJyAhZGVmYXVsdDtcclxuXHJcbi8vLyBDb2xvciBvZiBicmVhZGNydW1iIGl0ZW0uXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3ItY29sb3I6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcclxuXHJcbi8vIElmIGl0IGV4aXN0cyAkYnJlYWRjcnVtYnMtaXRlbS1zbGFzaC1jb2xvciBpcyB1c2VkIHRvIGJ1aWxkICRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvci1jb2xvci4gU2VlIHRoZSBkb2N1bWVudGF0aW9uLlxyXG5AaWYgdmFyaWFibGUtZXhpc3RzKGJyZWFkY3J1bWJzLWl0ZW0tc2xhc2gtY29sb3IpIHtcclxuICAkYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3ItY29sb3I6ICRicmVhZGNydW1icy1pdGVtLXNsYXNoLWNvbG9yO1xyXG59XHJcblxyXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgYnJlYWRjcnVtYnMgY29udGFpbmVyLCBhbG9uZyB3aXRoIHRoZSBzdHlsZXMgZm9yIHRoZSBgPGxpPmAgYW5kIGA8YT5gIGVsZW1lbnRzIGluc2lkZSBvZiBpdC5cclxuQG1peGluIGJyZWFkY3J1bWJzLWNvbnRhaW5lciB7XHJcbiAgQGluY2x1ZGUgY2xlYXJmaXg7XHJcbiAgbWFyZ2luOiAkYnJlYWRjcnVtYnMtbWFyZ2luO1xyXG4gIGxpc3Qtc3R5bGU6IG5vbmU7XHJcblxyXG4gIC8vIEl0ZW0gd3JhcHBlclxyXG4gIGxpIHtcclxuICAgIGZsb2F0OiAjeyRnbG9iYWwtbGVmdH07XHJcblxyXG4gICAgZm9udC1zaXplOiAkYnJlYWRjcnVtYnMtaXRlbS1mb250LXNpemU7XHJcbiAgICBjb2xvcjogJGJyZWFkY3J1bWJzLWl0ZW0tY29sb3ItY3VycmVudDtcclxuICAgIGN1cnNvcjogZGVmYXVsdDtcclxuXHJcbiAgICBAaWYgJGJyZWFkY3J1bWJzLWl0ZW0tdXBwZXJjYXNlIHtcclxuICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcclxuICAgIH1cclxuXHJcbiAgICBAaWYgJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yIHtcclxuICAgICAgLy8gTmVlZCB0byBlc2NhcGUgdGhlIGJhY2tzbGFzaFxyXG4gICAgICAkc2VwYXJhdG9yOiBpZigkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09ICdsdHInLCAkYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3ItaXRlbSwgJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yLWl0ZW0tcnRsKTtcclxuXHJcbiAgICAgICY6bm90KDpsYXN0LWNoaWxkKTo6YWZ0ZXIge1xyXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICBtYXJnaW46IDAgJGJyZWFkY3J1bWJzLWl0ZW0tbWFyZ2luO1xyXG4gICAgICAgIG9wYWNpdHk6IDE7XHJcbiAgICAgICAgY29udGVudDogJHNlcGFyYXRvcjtcclxuICAgICAgICBjb2xvcjogJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yLWNvbG9yO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBAZWxzZSB7XHJcbiAgICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkYnJlYWRjcnVtYnMtaXRlbS1tYXJnaW47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBQYWdlIGxpbmtzXHJcbiAgYSB7XHJcbiAgICBjb2xvcjogJGJyZWFkY3J1bWJzLWl0ZW0tY29sb3I7XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuQG1peGluIGZvdW5kYXRpb24tYnJlYWRjcnVtYnMge1xyXG4gIC5icmVhZGNydW1icyB7XHJcbiAgICBAaW5jbHVkZSBicmVhZGNydW1icy1jb250YWluZXI7XHJcblxyXG4gICAgLmRpc2FibGVkIHtcclxuICAgICAgY29sb3I6ICRicmVhZGNydW1icy1pdGVtLWNvbG9yLWRpc2FibGVkO1xyXG4gICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgY2FsbG91dFxyXG4vLy8vXHJcblxyXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGNhbGxvdXQtYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgZmFkZSB2YWx1ZSBmb3IgY2FsbG91dCBiYWNrZ3JvdW5kcy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kY2FsbG91dC1iYWNrZ3JvdW5kLWZhZGU6IDg1JSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGJvcmRlciBzdHlsZSBmb3IgY2FsbG91dHMuXHJcbi8vLyBAdHlwZSBMaXN0XHJcbiRjYWxsb3V0LWJvcmRlcjogMXB4IHNvbGlkIHJnYmEoJGJsYWNrLCAwLjI1KSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGJvdHRvbSBtYXJnaW4gZm9yIGNhbGxvdXRzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRjYWxsb3V0LW1hcmdpbjogMCAwIDFyZW0gMCAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGlubmVyIHBhZGRpbmcgZm9yIGNhbGxvdXRzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRjYWxsb3V0LXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBmb250IGNvbG9yIGZvciBjYWxsb3V0cy5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRjYWxsb3V0LWZvbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3IgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBmb250IGNvbG9yIGZvciBjYWxsb3V0cywgaWYgdGhlIGNhbGxvdXQgaGFzIGEgZGFyayBiYWNrZ3JvdW5kLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGNhbGxvdXQtZm9udC1jb2xvci1hbHQ6ICRib2R5LWJhY2tncm91bmQgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBib3JkZXIgcmFkaXVzIGZvciBjYWxsb3V0cy5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRjYWxsb3V0LXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQW1vdW50IHRvIHRpbnQgbGlua3MgdXNlZCB3aXRoaW4gY29sb3JlZCBwYW5lbHMuIFNldCB0byBgZmFsc2VgIHRvIGRpc2FibGUgdGhpcyBmZWF0dXJlLlxyXG4vLy8gQHR5cGUgTnVtYmVyIHwgQm9vbGVhblxyXG4kY2FsbG91dC1saW5rLXRpbnQ6IDMwJSAhZGVmYXVsdDtcclxuXHJcbi8vLyBBZGRzIGJhc2ljIHN0eWxlcyBmb3IgYSBjYWxsb3V0LCBpbmNsdWRpbmcgcGFkZGluZyBhbmQgbWFyZ2luLlxyXG5AbWl4aW4gY2FsbG91dC1iYXNlKCkge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBtYXJnaW46ICRjYWxsb3V0LW1hcmdpbjtcclxuICBwYWRkaW5nOiAkY2FsbG91dC1wYWRkaW5nO1xyXG5cclxuICBib3JkZXI6ICRjYWxsb3V0LWJvcmRlcjtcclxuICBib3JkZXItcmFkaXVzOiAkY2FsbG91dC1yYWRpdXM7XHJcblxyXG4gIC8vIFJlc3BlY3QgdGhlIHBhZGRpbmcsIGZvb2wuXHJcbiAgPiA6Zmlyc3QtY2hpbGQge1xyXG4gICAgbWFyZ2luLXRvcDogMDtcclxuICB9XHJcblxyXG4gID4gOmxhc3QtY2hpbGQge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMDtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBHZW5lcmF0ZSBxdWljayBzdHlsZXMgZm9yIGEgY2FsbG91dCB1c2luZyBhIHNpbmdsZSBjb2xvciBhcyBhIGJhc2VsaW5lLlxyXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskY2FsbG91dC1iYWNrZ3JvdW5kXSAtIENvbG9yIHRvIHVzZS5cclxuQG1peGluIGNhbGxvdXQtc3R5bGUoJGNvbG9yOiAkY2FsbG91dC1iYWNrZ3JvdW5kKSB7XHJcbiAgJGJhY2tncm91bmQ6IHNjYWxlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJGNhbGxvdXQtYmFja2dyb3VuZC1mYWRlKTtcclxuXHJcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XHJcbiAgY29sb3I6IGNvbG9yLXBpY2stY29udHJhc3QoJGJhY2tncm91bmQsICgkY2FsbG91dC1mb250LWNvbG9yLCAkY2FsbG91dC1mb250LWNvbG9yLWFsdCkpO1xyXG59XHJcblxyXG5AbWl4aW4gY2FsbG91dC1zaXplKCRwYWRkaW5nKSB7XHJcbiAgcGFkZGluZy10b3A6ICRwYWRkaW5nO1xyXG4gIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nO1xyXG4gIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZztcclxuICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xyXG59XHJcblxyXG5cclxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIGNhbGxvdXQuXHJcbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgWyRjYWxsb3V0LWJhY2tncm91bmRdIC0gQ29sb3IgdG8gdXNlLlxyXG5AbWl4aW4gY2FsbG91dCgkY29sb3I6ICRjYWxsb3V0LWJhY2tncm91bmQpIHtcclxuICBAaW5jbHVkZSBjYWxsb3V0LWJhc2U7XHJcbiAgQGluY2x1ZGUgY2FsbG91dC1zdHlsZSgkY29sb3IpO1xyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1jYWxsb3V0IHtcclxuICAuY2FsbG91dCB7XHJcbiAgICBAaW5jbHVkZSBjYWxsb3V0O1xyXG5cclxuICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGZvdW5kYXRpb24tcGFsZXR0ZSB7XHJcbiAgICAgICYuI3skbmFtZX0ge1xyXG4gICAgICAgIEBpbmNsdWRlIGNhbGxvdXQtc3R5bGUoJGNvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICYuc21hbGwge1xyXG4gICAgICBAaW5jbHVkZSBjYWxsb3V0LXNpemUoMC41cmVtKTtcclxuICAgIH1cclxuXHJcbiAgICAmLmxhcmdlIHtcclxuICAgICAgQGluY2x1ZGUgY2FsbG91dC1zaXplKDNyZW0pO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgY2FyZFxyXG4vLy8vXHJcblxyXG4vLy8gRGVmdWFsdCBiYWNrZ3JvdW5kIGNvbG9yLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGNhcmQtYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgZm9udCBjb2xvciBmb3IgY2FyZHMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kY2FyZC1mb250LWNvbG9yOiAkYm9keS1mb250LWNvbG9yICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgYmFja2dyb3VuZC5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRjYXJkLWRpdmlkZXItYmFja2dyb3VuZDogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBib3JkZXIgc3R5bGUuXHJcbi8vLyBAdHlwZSBMaXN0XHJcbiRjYXJkLWJvcmRlcjogMXB4IHNvbGlkICRsaWdodC1ncmF5ICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgY2FyZCBzaGFkb3cuXHJcbi8vLyBAdHlwZSBMaXN0XHJcbiRjYXJkLXNoYWRvdzogbm9uZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGJvcmRlciByYWRpdXMuXHJcbi8vLyBAdHlwZSBMaXN0XHJcbiRjYXJkLWJvcmRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgcGFkZGluZy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kY2FyZC1wYWRkaW5nOiAkZ2xvYmFsLXBhZGRpbmcgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBib3R0b20gbWFyZ2luLlxyXG4vLy8gQHR5cGUgbnVtYmVyXHJcbiRjYXJkLW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luICFkZWZhdWx0O1xyXG5cclxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIGNhcmQgY29udGFpbmVyLlxyXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQgLSBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBjYXJkLlxyXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIC0gZm9udCBjb2xvciBvZiB0aGUgY2FyZC5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbWFyZ2luIC0gQm90dG9tIG1hcmdpbiBvZiB0aGUgY2FyZC5cclxuLy8vIEBwYXJhbSB7TGlzdH0gJGJvcmRlciAtIEJvcmRlciBhcm91bmQgdGhlIGNhcmQuXHJcbi8vLyBAcGFyYW0ge0xpc3R9ICRyYWRpdXMgLSBib3JkZXIgcmFkaXVzIG9mIHRoZSBjYXJkLlxyXG4vLy8gQHBhcmFtIHtMaXN0fSAkc2hhZG93IC0gYm94IHNoYWRvdyBvZiB0aGUgY2FyZC5cclxuQG1peGluIGNhcmQtY29udGFpbmVyKFxyXG4gICRiYWNrZ3JvdW5kOiAkY2FyZC1iYWNrZ3JvdW5kLFxyXG4gICRjb2xvcjogJGNhcmQtZm9udC1jb2xvcixcclxuICAkbWFyZ2luOiAkY2FyZC1tYXJnaW4tYm90dG9tLFxyXG4gICRib3JkZXI6ICRjYXJkLWJvcmRlcixcclxuICAkcmFkaXVzOiAkY2FyZC1ib3JkZXItcmFkaXVzLFxyXG4gICRzaGFkb3c6ICRjYXJkLXNoYWRvd1xyXG4pIHtcclxuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgZmxleC1ncm93OiAxO1xyXG4gIH1cclxuXHJcbiAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbjtcclxuXHJcbiAgYm9yZGVyOiAkYm9yZGVyO1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXM7XHJcblxyXG4gIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xyXG4gIGJveC1zaGFkb3c6ICRzaGFkb3c7XHJcblxyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgY29sb3I6ICRjb2xvcjtcclxuXHJcbiAgJiA+IDpsYXN0LWNoaWxkIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgY2FyZCBkaXZpZGVyLlxyXG5AbWl4aW4gY2FyZC1kaXZpZGVyKFxyXG4gICRiYWNrZ3JvdW5kOiAkY2FyZC1kaXZpZGVyLWJhY2tncm91bmQsXHJcbiAgJHBhZGRpbmc6ICRjYXJkLXBhZGRpbmdcclxuKSB7XHJcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICBmbGV4OiAwIDEgYXV0bztcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgfVxyXG5cclxuICBwYWRkaW5nOiAkcGFkZGluZztcclxuICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcclxuXHJcbiAgJiA+IDpsYXN0LWNoaWxkIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgY2FyZCBzZWN0aW9uLlxyXG5AbWl4aW4gY2FyZC1zZWN0aW9uKFxyXG4gICRwYWRkaW5nOiAkY2FyZC1wYWRkaW5nXHJcbikge1xyXG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xyXG4gICAgZmxleDogMSAwIGF1dG87XHJcbiAgfVxyXG5cclxuICBwYWRkaW5nOiAkcGFkZGluZztcclxuXHJcbiAgJiA+IDpsYXN0LWNoaWxkIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1jYXJkIHtcclxuICAuY2FyZCB7XHJcbiAgICBAaW5jbHVkZSBjYXJkLWNvbnRhaW5lcjtcclxuICB9XHJcblxyXG4gIC5jYXJkLWRpdmlkZXIge1xyXG4gICAgQGluY2x1ZGUgY2FyZC1kaXZpZGVyO1xyXG4gIH1cclxuXHJcbiAgLmNhcmQtc2VjdGlvbiB7XHJcbiAgICBAaW5jbHVkZSBjYXJkLXNlY3Rpb247XHJcbiAgfVxyXG5cclxuICAvLyBGb3IgSUUgMTEgLSBGbGV4YnVnXHJcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3BoaWxpcHdhbHRvbi9mbGV4YnVncy9pc3N1ZXMvNzVcclxuICAuY2FyZC1pbWFnZSB7XHJcbiAgICBtaW4taGVpZ2h0OiAxcHg7XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBjbG9zZS1idXR0b25cclxuLy8vL1xyXG5cclxuLy8vIERlZmF1bHQgcG9zaXRpb24gb2YgdGhlIGNsb3NlIGJ1dHRvbi4gVGhlIGZpcnN0IHZhbHVlIHNob3VsZCBiZSBgcmlnaHRgIG9yIGBsZWZ0YCwgYW5kIHRoZSBzZWNvbmQgdmFsdWUgc2hvdWxkIGJlIGB0b3BgIG9yIGBib3R0b21gLlxyXG4vLy8gQHR5cGUgTGlzdFxyXG4kY2xvc2VidXR0b24tcG9zaXRpb246IHJpZ2h0IHRvcCAhZGVmYXVsdDtcclxuXHJcbi8vLyBSaWdodCAob3IgbGVmdCkgb2Zmc2V0KHMpIGZvciBhIGNsb3NlIGJ1dHRvbi5cclxuLy8vIEB0eXBlIE51bWJlcnxNYXBcclxuJGNsb3NlYnV0dG9uLW9mZnNldC1ob3Jpem9udGFsOiAoXHJcbiAgc21hbGw6IDAuNjZyZW0sXHJcbiAgbWVkaXVtOiAxcmVtLFxyXG4pICFkZWZhdWx0O1xyXG5cclxuLy8vIFRvcCAob3IgYm90dG9tKSBvZmZzZXQocykgZm9yIGEgY2xvc2UgYnV0dG9uLlxyXG4vLy8gQHR5cGUgTnVtYmVyfE1hcFxyXG4kY2xvc2VidXR0b24tb2Zmc2V0LXZlcnRpY2FsOiAoXHJcbiAgc21hbGw6IDAuMzNlbSxcclxuICBtZWRpdW06IDAuNXJlbSxcclxuKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGZvbnQgc2l6ZShzKSBvZiB0aGUgY2xvc2UgYnV0dG9uLlxyXG4vLy8gQHR5cGUgTnVtYmVyfE1hcFxyXG4kY2xvc2VidXR0b24tc2l6ZTogKFxyXG4gIHNtYWxsOiAxLjVlbSxcclxuICBtZWRpdW06IDJlbSxcclxuKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBUaGUgbGluZS1oZWlnaHQgb2YgdGhlIGNsb3NlIGJ1dHRvbi4gSXQgYWZmZWN0cyB0aGUgc3BhY2luZyBvZiB0aGUgZWxlbWVudC5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kY2xvc2VidXR0b24tbGluZWhlaWdodDogMSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGNvbG9yIG9mIHRoZSBjbG9zZSBidXR0b24uXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kY2xvc2VidXR0b24tY29sb3I6ICRkYXJrLWdyYXkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBjb2xvciBvZiB0aGUgY2xvc2UgYnV0dG9uIHdoZW4gYmVpbmcgaG92ZXJlZCBvbi5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRjbG9zZWJ1dHRvbi1jb2xvci1ob3ZlcjogJGJsYWNrICFkZWZhdWx0O1xyXG5cclxuXHJcbi8vLyBHZXQgdGhlIHNpemUgYW5kIHBvc2l0aW9uIGZvciBhIGNsb3NlIGJ1dHRvbi4gSWYgdGhlIGlucHV0IHZhbHVlIGlzIGEgbnVtYmVyLCB0aGUgbnVtYmVyIGlzIHJldHVybmVkLiBJZiB0aGUgaW5wdXQgdmFsdWUgaXMgYSBjb25maWcgbWFwIGFuZCB0aGUgbWFwIGhhcyB0aGUga2V5IGAkc2l6ZWAsIHRoZSB2YWx1ZSBpcyByZXR1cm5lZC5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICR2YWx1ZSAtIEEgbnVtYmVyIG9yIG1hcCB0aGF0IHJlcHJlc2VudHMgdGhlIHNpemUgb3IgcG9zaXRpb24gdmFsdWUocykgb2YgdGhlIGNsb3NlIGJ1dHRvbi5cclxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHNpemUgLSBUaGUgc2l6ZSBvZiB0aGUgY2xvc2UgYnV0dG9uIHRvIHVzZS5cclxuLy8vXHJcbi8vLyBAcmV0dXJuIHtOdW1iZXJ9IFRoZSBnaXZlbiBudW1iZXIgb3IgdGhlIHZhbHVlIGZvdW5kIGluIHRoZSBtYXAuXHJcbkBmdW5jdGlvbiAtemYtZ2V0LXNpemUtdmFsKCR2YWx1ZSwgJHNpemUpIHtcclxuICAvLyBDaGVjayBpZiB0aGUgdmFsdWUgaXMgYSBudW1iZXJcclxuICBAaWYgdHlwZS1vZigkdmFsdWUpID09ICdudW1iZXInIHtcclxuICAgIC8vIElmIGl0IGlzLCBqdXN0IHJldHVybiB0aGUgbnVtYmVyXHJcbiAgICBAcmV0dXJuICR2YWx1ZTtcclxuICB9XHJcblxyXG4gIC8vIENoZWNrIGlmIHRoZSBzaXplIG5hbWUgZXhpc3RzIGluIHRoZSB2YWx1ZSBtYXBcclxuICBAZWxzZSBpZiBtYXAtaGFzLWtleSgkdmFsdWUsICRzaXplKSB7XHJcbiAgICAvLyBJZiBpdCBkb2VzLCByZXR1cm4gdGhlIHZhbHVlXHJcbiAgICBAcmV0dXJuIG1hcC1nZXQoJHZhbHVlLCAkc2l6ZSk7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gU2V0cyB0aGUgc2l6ZSBhbmQgcG9zaXRpb24gb2YgYSBjbG9zZSBidXR0b24uXHJcbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIFttZWRpdW1dIC0gVGhlIHNpemUgdG8gdXNlLiBTZXQgdG8gYHNtYWxsYCB0byBjcmVhdGUgYSBzbWFsbCBjbG9zZSBidXR0b24uIFRoZSAnbWVkaXVtJyB2YWx1ZXMgZGVmaW5lZCBpbiBgJGNsb3NlYnV0dG9uLSpgIHZhcmlhYmxlcyB3aWxsIGJlIHVzZWQgYXMgdGhlIGRlZmF1bHQgc2l6ZSBhbmQgcG9zaXRpb24gb2YgdGhlIGNsb3NlIGJ1dHRvbi5cclxuQG1peGluIGNsb3NlLWJ1dHRvbi1zaXplKCRzaXplKSB7XHJcbiAgJHg6IG50aCgkY2xvc2VidXR0b24tcG9zaXRpb24sIDEpO1xyXG4gICR5OiBudGgoJGNsb3NlYnV0dG9uLXBvc2l0aW9uLCAyKTtcclxuXHJcbiAgI3skeH06IC16Zi1nZXQtc2l6ZS12YWwoJGNsb3NlYnV0dG9uLW9mZnNldC1ob3Jpem9udGFsLCAkc2l6ZSk7XHJcbiAgI3skeX06IC16Zi1nZXQtc2l6ZS12YWwoJGNsb3NlYnV0dG9uLW9mZnNldC12ZXJ0aWNhbCwgJHNpemUpO1xyXG4gIGZvbnQtc2l6ZTogLXpmLWdldC1zaXplLXZhbCgkY2xvc2VidXR0b24tc2l6ZSwgJHNpemUpO1xyXG4gIGxpbmUtaGVpZ2h0OiAtemYtZ2V0LXNpemUtdmFsKCRjbG9zZWJ1dHRvbi1saW5laGVpZ2h0LCAkc2l6ZSk7XHJcbn1cclxuXHJcbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBjbG9zZSBidXR0b24sIHVzaW5nIHRoZSBzdHlsZXMgaW4gdGhlIHNldHRpbmdzIHZhcmlhYmxlcy5cclxuQG1peGluIGNsb3NlLWJ1dHRvbiB7XHJcbiAgJHg6IG50aCgkY2xvc2VidXR0b24tcG9zaXRpb24sIDEpO1xyXG4gICR5OiBudGgoJGNsb3NlYnV0dG9uLXBvc2l0aW9uLCAyKTtcclxuXHJcbiAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICBjb2xvcjogJGNsb3NlYnV0dG9uLWNvbG9yO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuXHJcbiAgJjpob3ZlcixcclxuICAmOmZvY3VzIHtcclxuICAgIGNvbG9yOiAkY2xvc2VidXR0b24tY29sb3ItaG92ZXI7XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1jbG9zZS1idXR0b24ge1xyXG4gIC5jbG9zZS1idXR0b24ge1xyXG4gICAgQGluY2x1ZGUgY2xvc2UtYnV0dG9uO1xyXG5cclxuICAgICYuc21hbGwgeyBAaW5jbHVkZSBjbG9zZS1idXR0b24tc2l6ZShzbWFsbCkgfVxyXG4gICAgJiwgJi5tZWRpdW0geyBAaW5jbHVkZSBjbG9zZS1idXR0b24tc2l6ZShtZWRpdW0pIH1cclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIGRyaWxsZG93blxyXG4vLy8vXHJcblxyXG4vLy8gVHJhbnNpdGlvbiBwcm9wZXJ0eSB0byB1c2UgZm9yIGFuaW1hdGluZyBtZW51cy5cclxuLy8vIEB0eXBlIFRyYW5zaXRpb25cclxuJGRyaWxsZG93bi10cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xNXMgbGluZWFyICFkZWZhdWx0O1xyXG5cclxuLy8vIEFkZHMgYXJyb3dzIHRvIGRyaWxsZG93biBpdGVtcyB3aXRoIHN1Ym1lbnVzLCBhcyB3ZWxsIGFzIHRoZSBiYWNrIGJ1dHRvbi5cclxuLy8vIEB0eXBlIEJvb2xlYW5cclxuJGRyaWxsZG93bi1hcnJvd3M6IHRydWUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gU2V0cyBkcmlsbGRvd24gbWVudSBpdGVtIHBhZGRpbmcuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGRyaWxsZG93bi1wYWRkaW5nOiAkZ2xvYmFsLW1lbnUtcGFkZGluZyAhZGVmYXVsdDtcclxuXHJcbi8vLyBTZXRzIGRyaWxsZG93biBtZW51IG5lc3RlZCBtYXJnaW5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kZHJpbGxkb3duLW5lc3RlZC1tYXJnaW46IDAgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgZHJpbGxkb3duIHRvcCBsZXZlbCBpdGVtcy5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRkcmlsbGRvd24tYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xyXG5cclxuLy8vIFNldHMgZHJpbGxkb3duIG1lbnUgaXRlbSBwYWRkaW5nIGluIHRoZSBzdWJtZW51LlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRkcmlsbGRvd24tc3VibWVudS1wYWRkaW5nOiAkZHJpbGxkb3duLXBhZGRpbmcgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgZHJpbGxkb3duIHN1Ym1lbnVzLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGRyaWxsZG93bi1zdWJtZW51LWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBTZXRzIGRyaWxsZG93biBhcnJvdyBjb2xvciBpZiBhcnJvdyBpcyB1c2VkLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGRyaWxsZG93bi1hcnJvdy1jb2xvcjogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XHJcblxyXG4vLy8gU2V0cyBkcmlsbGRvd24gYXJyb3cgc2l6ZSBpZiBhcnJvdyBpcyB1c2VkLlxyXG4vLy8gQHR5cGUgTGVuZ3RoXHJcbiRkcmlsbGRvd24tYXJyb3ctc2l6ZTogNnB4ICFkZWZhdWx0O1xyXG5cclxuQG1peGluIHpmLWRyaWxsZG93bi1sZWZ0LXJpZ2h0LWFycm93cyB7XHJcbiAgLmlzLWRyaWxsZG93bi1zdWJtZW51LXBhcmVudCA+IGEge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgJjo6YWZ0ZXIge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHRvcDogNTAlO1xyXG4gICAgICBtYXJnaW4tdG9wOiAtMSAqICRkcmlsbGRvd24tYXJyb3ctc2l6ZTtcclxuICAgICAgI3skZ2xvYmFsLXJpZ2h0fTogMXJlbTtcclxuICAgICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCRkcmlsbGRvd24tYXJyb3ctc2l6ZSwgJGRyaWxsZG93bi1hcnJvdy1jb2xvciwgJGdsb2JhbC1yaWdodCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLmFsaWduLWxlZnQgLmlzLWRyaWxsZG93bi1zdWJtZW51LXBhcmVudCA+IGE6OmFmdGVyIHtcclxuICAgIGxlZnQ6IGF1dG87XHJcbiAgICByaWdodDogMXJlbTtcclxuICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkZHJvcGRvd25tZW51LWFycm93LXNpemUsICRkcm9wZG93bm1lbnUtYXJyb3ctY29sb3IsIHJpZ2h0KTtcclxuICB9XHJcblxyXG4gICYuYWxpZ24tcmlnaHQgLmlzLWRyaWxsZG93bi1zdWJtZW51LXBhcmVudCA+IGE6OmFmdGVyIHtcclxuICAgIHJpZ2h0OiBhdXRvO1xyXG4gICAgbGVmdDogMXJlbTtcclxuICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkZHJvcGRvd25tZW51LWFycm93LXNpemUsICRkcm9wZG93bm1lbnUtYXJyb3ctY29sb3IsIGxlZnQpO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLWRyaWxsZG93bi1tZW51IHtcclxuICAvLyBBcHBsaWVkIHRvIHRoZSBNZW51IGNvbnRhaW5lclxyXG4gIC5pcy1kcmlsbGRvd24ge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuXHJcbiAgICBsaSB7XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgfVxyXG5cclxuICAgICYuYW5pbWF0ZS1oZWlnaHQge1xyXG4gICAgICB0cmFuc2l0aW9uOiBoZWlnaHQgMC41cztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFRoZSB0b3AgbGV2ZWwgPHVsPlxyXG4gIC5kcmlsbGRvd24ge1xyXG4gICAgYSB7XHJcbiAgICAgIHBhZGRpbmc6ICRkcmlsbGRvd24tcGFkZGluZztcclxuICAgICAgYmFja2dyb3VuZDogJGRyaWxsZG93bi1iYWNrZ3JvdW5kO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEFwcGxpZWQgdG8gc3VibWVudSA8dWw+c1xyXG4gICAgLmlzLWRyaWxsZG93bi1zdWJtZW51IHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6IDA7XHJcbiAgICAgICN7JGdsb2JhbC1sZWZ0fTogMTAwJTtcclxuICAgICAgei1pbmRleDogLTE7XHJcblxyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgYmFja2dyb3VuZDogJGRyaWxsZG93bi1zdWJtZW51LWJhY2tncm91bmQ7XHJcbiAgICAgIHRyYW5zaXRpb246ICRkcmlsbGRvd24tdHJhbnNpdGlvbjtcclxuXHJcbiAgICAgICYuaXMtYWN0aXZlIHtcclxuICAgICAgICB6LWluZGV4OiAxO1xyXG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWChpZigkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09IGx0ciwgLTEwMCUsIDEwMCUpKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5pcy1jbG9zaW5nIHtcclxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoaWYoJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSBsdHIsIDEwMCUsIC0xMDAlKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFN1Ym1lbnUgaXRlbSBwYWRkaW5nXHJcbiAgICAgIGEge1xyXG4gICAgICAgIHBhZGRpbmc6ICRkcmlsbGRvd24tc3VibWVudS1wYWRkaW5nO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLm5lc3RlZC5pcy1kcmlsbGRvd24tc3VibWVudSB7XHJcbiAgICAgIEBpbmNsdWRlIG1lbnUtbmVzdGVkKCRkcmlsbGRvd24tbmVzdGVkLW1hcmdpbik7XHJcbiAgICB9XHJcblxyXG4gICAgLmRyaWxsZG93bi1zdWJtZW51LWNvdmVyLXByZXZpb3VzIHtcclxuICAgICAgbWluLWhlaWdodDogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICBAaWYgJGRyaWxsZG93bi1hcnJvd3Mge1xyXG4gICAgICBAaW5jbHVkZSB6Zi1kcmlsbGRvd24tbGVmdC1yaWdodC1hcnJvd3M7XHJcblxyXG4gICAgICAuanMtZHJpbGxkb3duLWJhY2sgPiBhOjpiZWZvcmUge1xyXG4gICAgICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkZHJpbGxkb3duLWFycm93LXNpemUsICRkcmlsbGRvd24tYXJyb3ctY29sb3IsICRnbG9iYWwtbGVmdCk7XHJcbiAgICAgICAgYm9yZGVyLSN7JGdsb2JhbC1sZWZ0fS13aWR0aDogMDtcclxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICAgICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogMC43NXJlbTsgLy8gQ3JlYXRlcyBzcGFjZSBiZXR3ZWVuIHRoZSBhcnJvdyBhbmQgdGhlIHRleHRcclxuXHJcbiAgICAgICAgYm9yZGVyLSN7JGdsb2JhbC1sZWZ0fS13aWR0aDogMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgZHJvcGRvd24tbWVudVxyXG4vLy8vXHJcblxyXG4vLy8gRW5hYmxlcyBhcnJvd3MgZm9yIGl0ZW1zIHdpdGggZHJvcGRvd24gbWVudXMuXHJcbi8vLyBAdHlwZSBCb29sZWFuXHJcbiRkcm9wZG93bm1lbnUtYXJyb3dzOiB0cnVlICFkZWZhdWx0O1xyXG5cclxuLy8vIFNldHMgZHJvcGRvd24gbWVudSBhcnJvdyBjb2xvciBpZiBhcnJvdyBpcyB1c2VkLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGRyb3Bkb3dubWVudS1hcnJvdy1jb2xvcjogJGFuY2hvci1jb2xvciAhZGVmYXVsdDtcclxuXHJcbi8vLyBTZXRzIGRyb3Bkb3duIG1lbnUgYXJyb3cgc2l6ZSBpZiBhcnJvdyBpcyB1c2VkLlxyXG4vLy8gQHR5cGUgTGVuZ3RoXHJcbiRkcm9wZG93bm1lbnUtYXJyb3ctc2l6ZTogNnB4ICFkZWZhdWx0O1xyXG5cclxuLy8vIFNldHMgZHJvcGRvd24gbWVudSBhcnJvdyBwYWRkaW5nIGZvciBhbGlnbmluZyB0aGUgYXJyb3cgY29ycmVjdGx5LlxyXG4vLy8gQHR5cGUgTGVuZ3RoXHJcbiRkcm9wZG93bm1lbnUtYXJyb3ctcGFkZGluZzogMS41cmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIE1pbmltdW0gd2lkdGggb2YgZHJvcGRvd24gc3ViLW1lbnVzLlxyXG4vLy8gQHR5cGUgTGVuZ3RoXHJcbiRkcm9wZG93bm1lbnUtbWluLXdpZHRoOiAyMDBweCAhZGVmYXVsdDtcclxuXHJcbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciB0b3AgbGV2ZWwgaXRlbXMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kZHJvcGRvd25tZW51LWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciBkcm9wZG93bnMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kZHJvcGRvd25tZW51LXN1Ym1lbnUtYmFja2dyb3VuZDogJGRyb3Bkb3dubWVudS1iYWNrZ3JvdW5kICFkZWZhdWx0O1xyXG5cclxuLy8vIFBhZGRpbmcgZm9yIHRvcCBsZXZlbCBpdGVtcy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kZHJvcGRvd25tZW51LXBhZGRpbmc6ICRnbG9iYWwtbWVudS1wYWRkaW5nICFkZWZhdWx0O1xyXG5cclxuLy8vIFNldHMgZHJvcGRvd24gbWVudSBuZXN0ZWQgbWFyZ2luXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGRyb3Bkb3dubWVudS1uZXN0ZWQtbWFyZ2luOiAwICFkZWZhdWx0O1xyXG5cclxuLy8vIFBhZGRpbmcgZm9yIHN1Yi1tZW51IGl0ZW1zLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRkcm9wZG93bm1lbnUtc3VibWVudS1wYWRkaW5nOiAkZHJvcGRvd25tZW51LXBhZGRpbmcgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQm9yZGVyIGZvciBkcm9wZG93biBzdWItbWVudXMuXHJcbi8vLyBAdHlwZSBMaXN0XHJcbiRkcm9wZG93bm1lbnUtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xyXG5cclxuLy8gQm9yZGVyIHdpZHRoIGZvciBkcm9wZG93biBzdWItbWVudXMuXHJcbi8vIFVzZWQgdG8gYWRqdXN0IHRvcCBtYXJnaW4gb2YgYSBzdWItbWVudSBpZiBhIGJvcmRlciBpcyB1c2VkLlxyXG4vLyBAdHlwZSBMZW5ndGhcclxuJGRyb3Bkb3dubWVudS1ib3JkZXItd2lkdGg6IG50aCgkZHJvcGRvd25tZW51LWJvcmRlciwgMSk7XHJcblxyXG4vLy8gVGV4dCBjb2xvciBvZiBhbiBhY3RpdmUgZHJvcGRvd24gbWVudSBpdGVtLiBFeHBsaWNpdCBvdmVycmlkZSBmb3IgbWVudSBkZWZhdWx0c1xyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGRyb3Bkb3duLW1lbnUtaXRlbS1jb2xvci1hY3RpdmU6IGdldC1jb2xvcihwcmltYXJ5KSAhZGVmYXVsdDtcclxuXHJcbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGFuIGFjdGl2ZSBkcm9wZG93biBtZW51IGl0ZW0uIEV4cGxpY2l0IG92ZXJyaWRlIGZvciBtZW51IGRlZmF1bHRzXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kZHJvcGRvd24tbWVudS1pdGVtLWJhY2tncm91bmQtYWN0aXZlOiB0cmFuc3BhcmVudCAhZGVmYXVsdDtcclxuXHJcbkBtaXhpbiB6Zi1kcm9wZG93bi1sZWZ0LXJpZ2h0LWFycm93cyB7XHJcbiAgPiBhOjphZnRlciB7XHJcbiAgICAjeyRnbG9iYWwtcmlnaHR9OiAxNHB4O1xyXG4gIH1cclxuXHJcbiAgJi5vcGVucy1sZWZ0ID4gYTo6YWZ0ZXIge1xyXG4gICAgcmlnaHQ6IGF1dG87XHJcbiAgICBsZWZ0OiA1cHg7XHJcbiAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJGRyb3Bkb3dubWVudS1hcnJvdy1zaXplLCAkZHJvcGRvd25tZW51LWFycm93LWNvbG9yLCBsZWZ0KTtcclxuICB9XHJcblxyXG4gICYub3BlbnMtcmlnaHQgPiBhOjphZnRlciB7XHJcbiAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJGRyb3Bkb3dubWVudS1hcnJvdy1zaXplLCAkZHJvcGRvd25tZW51LWFycm93LWNvbG9yLCByaWdodCk7XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gZHJvcGRvd24tbWVudS1kaXJlY3Rpb24oJGRpcjogaG9yaXpvbnRhbCkge1xyXG4gIEBpZiAkZGlyID09IGhvcml6b250YWwge1xyXG4gICAgPiBsaS5vcGVucy1sZWZ0IHtcclxuICAgICAgPiAuaXMtZHJvcGRvd24tc3VibWVudSB7XHJcbiAgICAgICAgdG9wOiAxMDAlO1xyXG4gICAgICAgIHJpZ2h0OiAwO1xyXG4gICAgICAgIGxlZnQ6IGF1dG87XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICA+IGxpLm9wZW5zLXJpZ2h0IHtcclxuICAgICAgPiAuaXMtZHJvcGRvd24tc3VibWVudSB7XHJcbiAgICAgICAgdG9wOiAxMDAlO1xyXG4gICAgICAgIHJpZ2h0OiBhdXRvO1xyXG4gICAgICAgIGxlZnQ6IDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAaWYgJGRyb3Bkb3dubWVudS1hcnJvd3Mge1xyXG4gICAgICA+IGxpLmlzLWRyb3Bkb3duLXN1Ym1lbnUtcGFyZW50ID4gYSB7XHJcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgIHBhZGRpbmctI3skZ2xvYmFsLXJpZ2h0fTogJGRyb3Bkb3dubWVudS1hcnJvdy1wYWRkaW5nO1xyXG4gICAgICB9XHJcblxyXG4gICAgICA+IGxpLmlzLWRyb3Bkb3duLXN1Ym1lbnUtcGFyZW50ID4gYTo6YWZ0ZXIge1xyXG4gICAgICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkZHJvcGRvd25tZW51LWFycm93LXNpemUsICRkcm9wZG93bm1lbnUtYXJyb3ctY29sb3IsIGRvd24pO1xyXG4gICAgICAgICN7JGdsb2JhbC1yaWdodH06IDVweDtcclxuICAgICAgICAjeyRnbG9iYWwtbGVmdH06IGF1dG87XHJcbiAgICAgICAgbWFyZ2luLXRvcDogLTEgKiAoJGRyb3Bkb3dubWVudS1hcnJvdy1zaXplIC8gMik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgQGVsc2UgaWYgJGRpciA9PSB2ZXJ0aWNhbCB7XHJcbiAgICA+IGxpIHtcclxuICAgICAgLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xyXG4gICAgICAgIHRvcDogMDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5vcGVucy1sZWZ0IHtcclxuICAgICAgICA+IC5pcy1kcm9wZG93bi1zdWJtZW51IHtcclxuICAgICAgICAgIHJpZ2h0OiAxMDAlO1xyXG4gICAgICAgICAgbGVmdDogYXV0bztcclxuICAgICAgICAgIHRvcDogMDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYub3BlbnMtcmlnaHQge1xyXG4gICAgICAgID4gLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xyXG4gICAgICAgICAgcmlnaHQ6IGF1dG87XHJcbiAgICAgICAgICBsZWZ0OiAxMDAlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgQGlmICRkcm9wZG93bm1lbnUtYXJyb3dzIHtcclxuICAgICAgICBAaW5jbHVkZSB6Zi1kcm9wZG93bi1sZWZ0LXJpZ2h0LWFycm93cztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBAZWxzZSB7XHJcbiAgICBAd2FybiAnVGhlIGRpcmVjdGlvbiB1c2VkIGZvciBkcm9wZG93bi1tZW51LWRpcmVjdGlvbigpIG11c3QgYmUgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbC4nO1xyXG4gIH1cclxufVxyXG5cclxuQG1peGluIGZvdW5kYXRpb24tZHJvcGRvd24tbWVudSB7XHJcbiAgLmRyb3Bkb3duLm1lbnUge1xyXG4gICAgQGluY2x1ZGUgZHJvcGRvd24tbWVudS1kaXJlY3Rpb24oaG9yaXpvbnRhbCk7XHJcblxyXG4gICAgYSB7XHJcbiAgICAgIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcclxuICAgICAgcGFkZGluZzogJGRyb3Bkb3dubWVudS1wYWRkaW5nO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEFjdGl2ZSBzdGF0ZVxyXG4gICAgLmlzLWFjdGl2ZSA+IGEge1xyXG4gICAgICBiYWNrZ3JvdW5kOiAkZHJvcGRvd24tbWVudS1pdGVtLWJhY2tncm91bmQtYWN0aXZlO1xyXG4gICAgICBjb2xvcjogJGRyb3Bkb3duLW1lbnUtaXRlbS1jb2xvci1hY3RpdmU7XHJcbiAgICB9XHJcblxyXG4gICAgLm5vLWpzICYgdWwge1xyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG5cclxuICAgIC5uZXN0ZWQuaXMtZHJvcGRvd24tc3VibWVudSB7XHJcbiAgICAgIEBpbmNsdWRlIG1lbnUtbmVzdGVkKCRkcm9wZG93bm1lbnUtbmVzdGVkLW1hcmdpbik7XHJcbiAgICB9XHJcblxyXG4gICAgJi52ZXJ0aWNhbCB7XHJcbiAgICAgIEBpbmNsdWRlIGRyb3Bkb3duLW1lbnUtZGlyZWN0aW9uKHZlcnRpY2FsKTtcclxuICAgIH1cclxuXHJcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcclxuICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcclxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XHJcbiAgICAgICAgICAmLiN7JHNpemV9LWhvcml6b250YWwge1xyXG4gICAgICAgICAgICBAaW5jbHVkZSBkcm9wZG93bi1tZW51LWRpcmVjdGlvbihob3Jpem9udGFsKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAmLiN7JHNpemV9LXZlcnRpY2FsIHtcclxuICAgICAgICAgICAgQGluY2x1ZGUgZHJvcGRvd24tbWVudS1kaXJlY3Rpb24odmVydGljYWwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICYuYWxpZ24tcmlnaHQge1xyXG4gICAgICAuaXMtZHJvcGRvd24tc3VibWVudS5maXJzdC1zdWIge1xyXG4gICAgICAgIHRvcDogMTAwJTtcclxuICAgICAgICByaWdodDogMDtcclxuICAgICAgICBsZWZ0OiBhdXRvO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuaXMtZHJvcGRvd24tbWVudS52ZXJ0aWNhbCB7XHJcbiAgICB3aWR0aDogMTAwcHg7XHJcblxyXG4gICAgJi5hbGlnbi1yaWdodCB7XHJcbiAgICAgIGZsb2F0OiByaWdodDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5pcy1kcm9wZG93bi1zdWJtZW51LXBhcmVudCB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcblxyXG4gICAgYTo6YWZ0ZXIge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHRvcDogNTAlO1xyXG4gICAgICAjeyRnbG9iYWwtcmlnaHR9OiA1cHg7XHJcbiAgICAgICN7JGdsb2JhbC1sZWZ0fTogYXV0bztcclxuICAgICAgbWFyZ2luLXRvcDogLTEgKiAkZHJvcGRvd25tZW51LWFycm93LXNpemU7XHJcbiAgICB9XHJcblxyXG4gICAgJi5vcGVucy1pbm5lciA+IC5pcy1kcm9wZG93bi1zdWJtZW51IHtcclxuXHJcbiAgICAgIHRvcDogMTAwJTtcclxuICAgICAgQGlmICRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gJ3J0bCcge1xyXG4gICAgICAgIHJpZ2h0OiBhdXRvO1xyXG4gICAgICB9XHJcbiAgICAgIEBlbHNlIHtcclxuICAgICAgICBsZWZ0OiBhdXRvO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJi5vcGVucy1sZWZ0ID4gLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xyXG4gICAgICByaWdodDogMTAwJTtcclxuICAgICAgbGVmdDogYXV0bztcclxuICAgIH1cclxuXHJcbiAgICAmLm9wZW5zLXJpZ2h0ID4gLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xyXG4gICAgICByaWdodDogYXV0bztcclxuICAgICAgbGVmdDogMTAwJTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5pcy1kcm9wZG93bi1zdWJtZW51IHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMDtcclxuICAgICN7JGdsb2JhbC1sZWZ0fTogMTAwJTtcclxuICAgIHotaW5kZXg6IDE7XHJcblxyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICAgIG1pbi13aWR0aDogJGRyb3Bkb3dubWVudS1taW4td2lkdGg7XHJcblxyXG4gICAgYm9yZGVyOiAkZHJvcGRvd25tZW51LWJvcmRlcjtcclxuICAgIGJhY2tncm91bmQ6ICRkcm9wZG93bm1lbnUtc3VibWVudS1iYWNrZ3JvdW5kO1xyXG5cclxuICAgIC5kcm9wZG93biAmIGEge1xyXG4gICAgICBwYWRkaW5nOiAkZHJvcGRvd25tZW51LXN1Ym1lbnUtcGFkZGluZztcclxuICAgIH1cclxuXHJcbiAgICAuaXMtZHJvcGRvd24tc3VibWVudS1wYXJlbnQge1xyXG4gICAgICBAaWYgJGRyb3Bkb3dubWVudS1hcnJvd3Mge1xyXG4gICAgICAgIEBpbmNsdWRlIHpmLWRyb3Bkb3duLWxlZnQtcmlnaHQtYXJyb3dzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQGlmICh0eXBlLW9mKCRkcm9wZG93bm1lbnUtYm9yZGVyLXdpZHRoKSA9PSAnbnVtYmVyJykge1xyXG4gICAgICAuaXMtZHJvcGRvd24tc3VibWVudSB7XHJcbiAgICAgICAgbWFyZ2luLXRvcDogKC0kZHJvcGRvd25tZW51LWJvcmRlci13aWR0aCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICA+IGxpIHtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gW1RPRE9dIEN1dCBiYWNrIHNwZWNpZmljaXR5XHJcbiAgICAvLyY6bm90KC5qcy1kcm9wZG93bi1ub2hvdmVyKSA+IC5pcy1kcm9wZG93bi1zdWJtZW51LXBhcmVudDpob3ZlciA+ICYsIC8vIHdoeSBpcyB0aGlzIGxpbmUgbmVlZGVkPyBPcGVuaW5nIGlzIGhhbmRsZWQgYnkgSlMgYW5kIHRoaXMgY2F1c2VzIHNvbWUgdWdseSBmbGlja2VyaW5nIHdoZW4gdGhlIHN1YiBpcyByZS1wb3NpdGlvbmVkIGF1dG9tYXRpY2FsbHkuLi5cclxuICAgICYuanMtZHJvcGRvd24tYWN0aXZlIHtcclxuICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIGRyb3Bkb3duXHJcbi8vLy9cclxuXHJcbi8vLyBQYWRkaW5nIGZvciBkcm9wZG93biBwYW5lcy5cclxuLy8vIEB0eXBlIExpc3RcclxuJGRyb3Bkb3duLXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XHJcblxyXG4vLy8gQmFja2dyb3VuZCBmb3IgZHJvcGRvd24gcGFuZXMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kZHJvcGRvd24tYmFja2dyb3VuZDogJGJvZHktYmFja2dyb3VuZCAhZGVmYXVsdDtcclxuXHJcbi8vLyBCb3JkZXIgZm9yIGRyb3Bkb3duIHBhbmVzLlxyXG4vLy8gQHR5cGUgTGlzdFxyXG4kZHJvcGRvd24tYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xyXG5cclxuLy8vIEZvbnQgc2l6ZSBmb3IgZHJvcGRvd24gcGFuZXMuXHJcbi8vLyBAdHlwZSBMaXN0XHJcbiRkcm9wZG93bi1mb250LXNpemU6IDFyZW0gIWRlZmF1bHQ7XHJcblxyXG4vLy8gV2lkdGggZm9yIGRyb3Bkb3duIHBhbmVzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRkcm9wZG93bi13aWR0aDogMzAwcHggIWRlZmF1bHQ7XHJcblxyXG4vLy8gQm9yZGVyIHJhZGl1cyBkcm9wZG93biBwYW5lcy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kZHJvcGRvd24tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcclxuXHJcbi8vLyBTaXplcyBmb3IgZHJvcGRvd24gcGFuZXMuIEVhY2ggc2l6ZSBpcyBhIENTUyBjbGFzcyB5b3UgY2FuIGFwcGx5LlxyXG4vLy8gQHR5cGUgTWFwXHJcbiRkcm9wZG93bi1zaXplczogKFxyXG4gIHRpbnk6IDEwMHB4LFxyXG4gIHNtYWxsOiAyMDBweCxcclxuICBsYXJnZTogNDAwcHgsXHJcbikgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQXBwbGllcyBzdHlsZXMgZm9yIGEgYmFzaWMgZHJvcGRvd24uXHJcbkBtaXhpbiBkcm9wZG93bi1jb250YWluZXIge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB6LWluZGV4OiAxMDtcclxuXHJcbiAgd2lkdGg6ICRkcm9wZG93bi13aWR0aDtcclxuICBwYWRkaW5nOiAkZHJvcGRvd24tcGFkZGluZztcclxuXHJcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xyXG4gIGRpc3BsYXk6IG5vbmU7XHJcbiAgYm9yZGVyOiAkZHJvcGRvd24tYm9yZGVyO1xyXG4gIGJvcmRlci1yYWRpdXM6ICRkcm9wZG93bi1yYWRpdXM7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogJGRyb3Bkb3duLWJhY2tncm91bmQ7XHJcblxyXG4gIGZvbnQtc2l6ZTogJGRyb3Bkb3duLWZvbnQtc2l6ZTtcclxuXHJcblxyXG4gIC8vIEFsbG93IGFuIGludGVybWl0dGVudCBzdGF0ZSB0byBkbyBwb3NpdGlvbmluZyBiZWZvcmUgbWFraW5nIHZpc2libGUuXHJcbiAgJi5pcy1vcGVuaW5nIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gIH1cclxuXHJcbiAgJi5pcy1vcGVuIHtcclxuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICB9XHJcbn1cclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLWRyb3Bkb3duIHtcclxuICAuZHJvcGRvd24tcGFuZSB7XHJcbiAgICBAaW5jbHVkZSBkcm9wZG93bi1jb250YWluZXI7XHJcbiAgfVxyXG5cclxuICBAZWFjaCAkbmFtZSwgJHNpemUgaW4gJGRyb3Bkb3duLXNpemVzIHtcclxuICAgIC5kcm9wZG93bi1wYW5lLiN7JG5hbWV9IHtcclxuICAgICAgd2lkdGg6ICRzaXplO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgRmxleGJveCBVdGlsaXRpZXNcclxuLy8vL1xyXG4vL1xyXG4vLy8gRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGNvdW50IG9mIHNvdXJjZSBvcmRlcmluZ2BcclxuLy8vIEB0eXBlIE51bWJlclxyXG4kZmxleC1zb3VyY2Utb3JkZXJpbmctY291bnQ6IDYgIWRlZmF1bHQ7XHJcblxyXG4vLy8gUXVpY2tseSBkaXNhYmxlL2VuYWJsZSBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBWYW5pbGxhIEZsZXggSGVscGVycy5cclxuLy8vIEB0eXBlIEJvb2xlYW5cclxuJGZsZXhib3gtcmVzcG9uc2l2ZS1icmVha3BvaW50czogdHJ1ZSAhZGVmYXVsdDtcclxuXHJcbkBtaXhpbiBmbGV4LWhlbHBlcnMge1xyXG4gIC5mbGV4LWNvbnRhaW5lciB7XHJcbiAgICBAaW5jbHVkZSBmbGV4O1xyXG4gIH1cclxuXHJcbiAgLmZsZXgtY2hpbGQtYXV0byB7XHJcbiAgICBmbGV4OiAxIDEgYXV0bztcclxuICB9XHJcblxyXG4gIC5mbGV4LWNoaWxkLWdyb3cge1xyXG4gICAgZmxleDogMSAwIGF1dG87XHJcbiAgfVxyXG5cclxuICAuZmxleC1jaGlsZC1zaHJpbmsge1xyXG4gICAgZmxleDogMCAxIGF1dG87XHJcbiAgfVxyXG5cclxuICBAZWFjaCAkZGlyLCAkcHJvcCBpbiAkLXpmLWZsZXgtZGlyZWN0aW9uIHtcclxuICAgIC5mbGV4LWRpci0jeyRkaXJ9IHtcclxuICAgICAgQGluY2x1ZGUgZmxleC1kaXJlY3Rpb24oJHByb3ApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGlmICgkZmxleGJveC1yZXNwb25zaXZlLWJyZWFrcG9pbnRzKSB7XHJcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xyXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcclxuICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xyXG4gICAgICAgICAgLiN7JHNpemV9LWZsZXgtY29udGFpbmVyIHtcclxuICAgICAgICAgICAgQGluY2x1ZGUgZmxleDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAuI3skc2l6ZX0tZmxleC1jaGlsZC1hdXRvIHtcclxuICAgICAgICAgICAgZmxleDogMSAxIGF1dG87XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLiN7JHNpemV9LWZsZXgtY2hpbGQtZ3JvdyB7XHJcbiAgICAgICAgICAgIGZsZXg6IDEgMCBhdXRvO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC4jeyRzaXplfS1mbGV4LWNoaWxkLXNocmluayB7XHJcbiAgICAgICAgICAgIGZsZXg6IDAgMSBhdXRvO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIEBlYWNoICRkaXIsICRwcm9wIGluICQtemYtZmxleC1kaXJlY3Rpb24ge1xyXG4gICAgICAgICAgICAuI3skc2l6ZX0tZmxleC1kaXItI3skZGlyfSB7XHJcbiAgICAgICAgICAgICAgQGluY2x1ZGUgZmxleC1kaXJlY3Rpb24oJHByb3ApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1mbGV4LWNsYXNzZXMge1xyXG4gIC8vIEhvcml6b250YWwgYWxpZ25tZW50IHVzaW5nIGp1c3RpZnktY29udGVudFxyXG4gIEBlYWNoICRoZGlyLCAkcHJvcCBpbiBtYXAtcmVtb3ZlKCQtemYtZmxleC1qdXN0aWZ5LCAnbGVmdCcpIHtcclxuICAgIC5hbGlnbi0jeyRoZGlyfSB7XHJcbiAgICAgIEBpbmNsdWRlIGZsZXgtYWxpZ24oJHg6ICRoZGlyKTtcclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgLy8gSG9yaXpvbnRhbCBhbGlnbm1lbnQgU3BlY2lmaWNhbGx5IGZvciBWZXJ0aWNhbCBNZW51XHJcbiAgQGVhY2ggJGhkaXIsICRwcm9wIGluIG1hcC1yZW1vdmUoJC16Zi1mbGV4LWp1c3RpZnksICdsZWZ0JywgJ2p1c3RpZnknLCAnc3BhY2VkJykge1xyXG4gICAgLmFsaWduLSN7JGhkaXJ9IHtcclxuICAgICAgJi52ZXJ0aWNhbC5tZW51ID4gbGkgPiBhIHsgXHJcbiAgICAgICAgQGluY2x1ZGUgZmxleC1hbGlnbigkeDogJGhkaXIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBWZXJ0aWNhbCBhbGlnbm1lbnQgdXNpbmcgYWxpZ24taXRlbXMgYW5kIGFsaWduLXNlbGZcclxuICBAZWFjaCAkdmRpciwgJHByb3AgaW4gJC16Zi1mbGV4LWFsaWduIHtcclxuICAgIC5hbGlnbi0jeyR2ZGlyfSB7XHJcbiAgICAgIEBpbmNsdWRlIGZsZXgtYWxpZ24oJHk6ICR2ZGlyKTtcclxuICAgIH1cclxuXHJcbiAgICAuYWxpZ24tc2VsZi0jeyR2ZGlyfSB7XHJcbiAgICAgIEBpbmNsdWRlIGZsZXgtYWxpZ24tc2VsZigkeTogJHZkaXIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gQ2VudHJhbCBhbGlnbm1lbnQgb2YgY29udGVudFxyXG4gIC5hbGlnbi1jZW50ZXItbWlkZGxlIHtcclxuICAgIEBpbmNsdWRlIGZsZXgtYWxpZ24oJHg6IGNlbnRlciwgJHk6IG1pZGRsZSk7XHJcbiAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XHJcbiAgfVxyXG5cclxuICAvLyBTb3VyY2Ugb3JkZXJpbmdcclxuICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50IHtcclxuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGZsZXgtc291cmNlLW9yZGVyaW5nLWNvdW50IHtcclxuICAgICAgLiN7JC16Zi1zaXplfS1vcmRlci0jeyRpfSB7XHJcbiAgICAgICAgQGluY2x1ZGUgZmxleC1vcmRlcigkaSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFZhbmlsbGEgRmxleGJveCBIZWxwZXJzXHJcbiAgQGluY2x1ZGUgZmxleC1oZWxwZXJzO1xyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCByZXNwb25zaXZlLWVtYmVkXHJcbi8vLy9cclxuXHJcbi8vLyBNYXJnaW4gYmVsb3cgYSByZXNwb25zaXZlIGVtYmVkIGNvbnRhaW5lci5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kcmVzcG9uc2l2ZS1lbWJlZC1tYXJnaW4tYm90dG9tOiByZW0tY2FsYygxNikgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQXNwZWN0IHJhdGlvcyB1c2VkIHRvIGRldGVybWluZSBwYWRkaW5nLWJvdHRvbSBvZiByZXNwb25zaXZlIGVtYmVkIGNvbnRhaW5lcnMuXHJcbi8vLyBAdHlwZSBNYXBcclxuJHJlc3BvbnNpdmUtZW1iZWQtcmF0aW9zOiAoXHJcbiAgZGVmYXVsdDogNCBieSAzLFxyXG4gIHdpZGVzY3JlZW46IDE2IGJ5IDksXHJcbikgIWRlZmF1bHQ7XHJcblxyXG4vLyBXQVJOSU5HOiBXaWxsIGJlIHJlbW92ZWQgaW4gdmVyc2lvbiA2LjRcclxuJHJlc3BvbnNpdmUtZW1iZWQtcmF0aW86IGRlZmF1bHQ7XHJcblxyXG4vLy8gQ3JlYXRlcyBhIHJlc3BvbnNpdmUgZW1iZWQgY29udGFpbmVyLlxyXG4vLy8gQHBhcmFtIHtTdHJpbmd8TGlzdH0gJHJhdGlvIFtkZWZhdWx0XSAtIFJhdGlvIG9mIHRoZSBjb250YWluZXIuIENhbiBiZSBhIGtleSBmcm9tIHRoZSBgJHJlc3BvbnNpdmUtZW1iZWQtcmF0aW9zYCBtYXAgb3IgYSBsaXN0IGZvcm1hdHRlZCBhcyBgeCBieSB5YC5cclxuQG1peGluIHJlc3BvbnNpdmUtZW1iZWQoJHJhdGlvOiBkZWZhdWx0KSB7XHJcbiAgQGlmIHR5cGUtb2YoJHJhdGlvKSA9PSAnc3RyaW5nJyB7XHJcbiAgICAkcmF0aW86IG1hcC1nZXQoJHJlc3BvbnNpdmUtZW1iZWQtcmF0aW9zLCAkcmF0aW8pO1xyXG4gIH1cclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgaGVpZ2h0OiAwO1xyXG4gIG1hcmdpbi1ib3R0b206ICRyZXNwb25zaXZlLWVtYmVkLW1hcmdpbi1ib3R0b207XHJcbiAgcGFkZGluZy1ib3R0b206IHJhdGlvLXRvLXBlcmNlbnRhZ2UoJHJhdGlvKTtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuICBpZnJhbWUsXHJcbiAgb2JqZWN0LFxyXG4gIGVtYmVkLFxyXG4gIHZpZGVvIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMDtcclxuICAgICN7JGdsb2JhbC1sZWZ0fTogMDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gIH1cclxufVxyXG5cclxuQG1peGluIGZvdW5kYXRpb24tcmVzcG9uc2l2ZS1lbWJlZCB7XHJcbiAgLnJlc3BvbnNpdmUtZW1iZWQsXHJcbiAgLmZsZXgtdmlkZW8ge1xyXG4gICAgQGluY2x1ZGUgcmVzcG9uc2l2ZS1lbWJlZCgkcmF0aW86IGRlZmF1bHQpO1xyXG5cclxuICAgICRyYXRpb3M6IG1hcC1yZW1vdmUoJHJlc3BvbnNpdmUtZW1iZWQtcmF0aW9zLGRlZmF1bHQpO1xyXG5cclxuICAgIEBlYWNoICRuYW1lLCAkcmF0aW8gaW4gJHJhdGlvcyB7XHJcbiAgICAgICYuI3skbmFtZX0ge1xyXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiByYXRpby10by1wZXJjZW50YWdlKCRyYXRpbyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLWZsZXgtdmlkZW8ge1xyXG4gIEB3YXJuICdUaGlzIG1peGluIGlzIGJlaW5nIHJlcGxhY2VkIGJ5IGZvdW5kYXRpb24tcmVzcG9uc2l2ZS1lbWJlZCgpLiBmb3VuZGF0aW9uLWZsZXgtdmlkZW8oKSB3aWxsIGJlIHJlbW92ZWQgaW4gRm91bmRhdGlvbiA2LjQuJztcclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXJlc3BvbnNpdmUtZW1iZWQ7XHJcbn1cclxuXHJcbkBtaXhpbiBmbGV4LXZpZGVvKCRyYXRpbzogJHJlc3BvbnNpdmUtZW1iZWQtcmF0aW8pIHtcclxuICBAd2FybiAnVGhpcyBtaXhpbiBpcyBiZWluZyByZXBsYWNlZCBieSByZXNwb25zaXZlLWVtYmVkKCkuIGZsZXgtdmlkZW8oKSB3aWxsIGJlIHJlbW92ZWQgaW4gRm91bmRhdGlvbiA2LjQuJztcclxuICBAaW5jbHVkZSByZXNwb25zaXZlLWVtYmVkKCRyYXRpbyk7XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIGxhYmVsXHJcbi8vLy9cclxuXHJcbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3IgZm9yIGxhYmVscy5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRsYWJlbC1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IHRleHQgY29sb3IgZm9yIGxhYmVscy5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRsYWJlbC1jb2xvcjogJHdoaXRlICFkZWZhdWx0O1xyXG5cclxuLy8vIEFsdGVybmF0ZSB0ZXh0IGNvbG9yIGZvciBsYWJlbHMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kbGFiZWwtY29sb3ItYWx0OiAkYmxhY2sgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQ29sb3JpbmcgY2xhc3Nlcy4gQSBtYXAgb2YgY2xhc3NlcyB0byBvdXRwdXQgaW4geW91ciBDU1MsIGxpa2UgYC5zZWNvbmRhcnlgLCBgLnN1Y2Nlc3NgLCBhbmQgc28gb24uXHJcbi8vLyBAdHlwZSBNYXBcclxuJGxhYmVsLXBhbGV0dGU6ICRmb3VuZGF0aW9uLXBhbGV0dGUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBmb250IHNpemUgZm9yIGxhYmVscy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kbGFiZWwtZm9udC1zaXplOiAwLjhyZW0gIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBwYWRkaW5nIGluc2lkZSBsYWJlbHMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGxhYmVsLXBhZGRpbmc6IDAuMzMzMzNyZW0gMC41cmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgcmFkaXVzIG9mIGxhYmVscy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kbGFiZWwtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcclxuXHJcbi8vLyBHZW5lcmF0ZXMgYmFzZSBzdHlsZXMgZm9yIGEgbGFiZWwuXHJcbkBtaXhpbiBsYWJlbCB7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIHBhZGRpbmc6ICRsYWJlbC1wYWRkaW5nO1xyXG5cclxuICBib3JkZXItcmFkaXVzOiAkbGFiZWwtcmFkaXVzO1xyXG5cclxuICBmb250LXNpemU6ICRsYWJlbC1mb250LXNpemU7XHJcbiAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICBjdXJzb3I6IGRlZmF1bHQ7XHJcbn1cclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLWxhYmVsIHtcclxuICAubGFiZWwge1xyXG4gICAgQGluY2x1ZGUgbGFiZWw7XHJcblxyXG4gICAgYmFja2dyb3VuZDogJGxhYmVsLWJhY2tncm91bmQ7XHJcbiAgICBjb2xvcjogJGxhYmVsLWNvbG9yO1xyXG5cclxuICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGxhYmVsLXBhbGV0dGUge1xyXG4gICAgICAmLiN7JG5hbWV9IHtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAkY29sb3I7XHJcbiAgICAgICAgY29sb3I6IGNvbG9yLXBpY2stY29udHJhc3QoJGNvbG9yLCAoJGxhYmVsLWNvbG9yLCAkbGFiZWwtY29sb3ItYWx0KSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIG1lZGlhLW9iamVjdFxyXG4vLy8vXHJcblxyXG4vLy8gQm90dG9tIG1hcmdpbiBvZiBhIG1lZGlhIG9iamVjdC5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kbWVkaWFvYmplY3QtbWFyZ2luLWJvdHRvbTogJGdsb2JhbC1tYXJnaW4gIWRlZmF1bHQ7XHJcblxyXG4vLy8gTGVmdCBhbmQgcmlnaHQgcGFkZGluZyBvbiBzZWN0aW9ucyB3aXRoaW4gYSBtZWRpYSBvYmplY3QuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJG1lZGlhb2JqZWN0LXNlY3Rpb24tcGFkZGluZzogJGdsb2JhbC1wYWRkaW5nICFkZWZhdWx0O1xyXG5cclxuLy8vIFdpZHRoIG9mIGltYWdlcyB3aXRoaW4gYSBtZWRpYSBvYmplY3QsIHdoZW4gdGhlIG9iamVjdCBpcyBzdGFja2VkIHZlcnRpY2FsbHkuIFNldCB0byAnYXV0bycgdG8gdXNlIHRoZSBpbWFnZSdzIG5hdHVyYWwgd2lkdGguXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJG1lZGlhb2JqZWN0LWltYWdlLXdpZHRoLXN0YWNrZWQ6IDEwMCUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgbWVkaWEgb2JqZWN0IGNvbnRhaW5lci5cclxuQG1peGluIG1lZGlhLW9iamVjdC1jb250YWluZXIge1xyXG4gIGRpc3BsYXk6IGlmKCRnbG9iYWwtZmxleGJveCwgZmxleCwgYmxvY2spO1xyXG4gIG1hcmdpbi1ib3R0b206ICRtZWRpYW9iamVjdC1tYXJnaW4tYm90dG9tO1xyXG5cclxuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcclxuICAgIGZsZXgtd3JhcDogbm93cmFwO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIEFkZHMgc3R5bGVzIGZvciBzZWN0aW9ucyB3aXRoaW4gYSBtZWRpYSBvYmplY3QuXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJHBhZGRpbmcgWyRtZWRpYW9iamVjdC1zZWN0aW9uLXBhZGRpbmddIC0gUGFkZGluZyBiZXR3ZWVuIHNlY3Rpb25zLlxyXG5AbWl4aW4gbWVkaWEtb2JqZWN0LXNlY3Rpb24oJHBhZGRpbmc6ICRtZWRpYW9iamVjdC1zZWN0aW9uLXBhZGRpbmcpIHtcclxuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcclxuICAgIGZsZXg6IDAgMSBhdXRvO1xyXG4gIH1cclxuICBAZWxzZSB7XHJcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xyXG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcclxuICB9XHJcblxyXG4gICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgcGFkZGluZy0jeyRnbG9iYWwtcmlnaHR9OiAkcGFkZGluZztcclxuICB9XHJcblxyXG4gICY6bGFzdC1jaGlsZDpub3QoOm50aC1jaGlsZCgyKSkge1xyXG4gICAgcGFkZGluZy0jeyRnbG9iYWwtbGVmdH06ICRwYWRkaW5nO1xyXG4gIH1cclxuXHJcbiAgPiA6bGFzdC1jaGlsZCB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIEFkZHMgc3R5bGVzIHRvIHN0YWNrIHNlY3Rpb25zIG9mIGEgbWVkaWEgb2JqZWN0LiBBcHBseSB0aGlzIHRvIHRoZSBzZWN0aW9uIGVsZW1lbnRzLCBub3QgdGhlIGNvbnRhaW5lci5cclxuQG1peGluIG1lZGlhLW9iamVjdC1zdGFjayB7XHJcbiAgcGFkZGluZzogMDtcclxuICBwYWRkaW5nLWJvdHRvbTogJG1lZGlhb2JqZWN0LXNlY3Rpb24tcGFkZGluZztcclxuXHJcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICBmbGV4LWJhc2lzOiAxMDAlO1xyXG4gICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gIH1cclxuICBAZWxzZSB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICB9XHJcblxyXG4gIGltZyB7XHJcbiAgICB3aWR0aDogJG1lZGlhb2JqZWN0LWltYWdlLXdpZHRoLXN0YWNrZWQ7XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1tZWRpYS1vYmplY3Qge1xyXG4gIC5tZWRpYS1vYmplY3Qge1xyXG4gICAgQGluY2x1ZGUgbWVkaWEtb2JqZWN0LWNvbnRhaW5lcjtcclxuXHJcbiAgICBpbWcge1xyXG4gICAgICBtYXgtd2lkdGg6IG5vbmU7XHJcbiAgICB9XHJcblxyXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICAgICYuc3RhY2stZm9yLSN7JC16Zi16ZXJvLWJyZWFrcG9pbnR9IHtcclxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCQtemYtemVyby1icmVha3BvaW50IG9ubHkpIHtcclxuICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmLnN0YWNrLWZvci0jeyQtemYtemVyby1icmVha3BvaW50fSAubWVkaWEtb2JqZWN0LXNlY3Rpb24ge1xyXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCQtemYtemVyby1icmVha3BvaW50IG9ubHkpIHtcclxuICAgICAgICBAaW5jbHVkZSBtZWRpYS1vYmplY3Qtc3RhY2s7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5tZWRpYS1vYmplY3Qtc2VjdGlvbiB7XHJcbiAgICBAaW5jbHVkZSBtZWRpYS1vYmplY3Qtc2VjdGlvbjtcclxuXHJcbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcclxuICAgICAgJi5tYWluLXNlY3Rpb24ge1xyXG4gICAgICAgIGZsZXg6IDEgMSAwcHg7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgemVyby11bml0XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIEBlbHNlIHtcclxuICAgICAgJi5taWRkbGUge1xyXG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYuYm90dG9tIHtcclxuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBtZW51XHJcbi8vLy9cclxuXHJcbi8vLyBNYXJnaW4gb2YgYSBtZW51LlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRtZW51LW1hcmdpbjogMCAhZGVmYXVsdDtcclxuXHJcbi8vLyBMZWZ0LWhhbmQgbWFyZ2luIG9mIGEgbmVzdGVkIG1lbnUuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJG1lbnUtbmVzdGVkLW1hcmdpbjogJGdsb2JhbC1tZW51LW5lc3RlZC1tYXJnaW4gIWRlZmF1bHQ7XHJcblxyXG4vLy8gUGFkZGluZyBmb3IgaXRlbXMgaW4gYSBwaWxsIG1lbnUuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJG1lbnUtaXRlbXMtcGFkZGluZzogJGdsb2JhbC1tZW51LXBhZGRpbmcgIWRlZmF1bHQ7XHJcblxyXG4vLy8gbWFyZ2luIGZvciBpdGVtcyBpbiBhIHNpbXBsZSBtZW51LlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRtZW51LXNpbXBsZS1tYXJnaW46IDFyZW0gIWRlZmF1bHQ7XHJcblxyXG4vLy8gVGV4dCBjb2xvciBvZiBhbiBhY3RpdmUgbWVudSBpdGVtLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJG1lbnUtaXRlbS1jb2xvci1hY3RpdmU6ICR3aGl0ZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGFuIGFjdGl2ZSBtZW51IGl0ZW0uXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kbWVudS1pdGVtLWJhY2tncm91bmQtYWN0aXZlOiBnZXQtY29sb3IocHJpbWFyeSkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gU3BhY2luZyBiZXR3ZWVuIGFuIGljb24gYW5kIHRleHQgaW4gYSBtZW51IGl0ZW0uXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJG1lbnUtaWNvbi1zcGFjaW5nOiAwLjI1cmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIEJhY2tncm91bmQgY29sb3IgZm9yIGFuIGhvdmVyZWQgbWVudSBpdGVtLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJG1lbnUtaXRlbS1iYWNrZ3JvdW5kLWhvdmVyOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcclxuXHJcbi8vLyBCYWNrd2FyZCBjb21wYXRpYmlsaXR5IGZvciBtZW51IHN0YXRlLiBJZiB0cnVlLCB0aGlzIGR1cGxpY2F0ZSBgYWN0aXZlYCB3aXRoIGBpcy1hY3RpdmVgLiBcclxuLy8vIEJ1dCBwbGVhc2Ugbm90ZSB0aGF0IGBhY3RpdmVgIHdpbGwgYmUgcmVtb3ZlZCBpbiB1cGNvbWluZyB2ZXJzaW9ucy5cclxuLy8vIEB0eXBlIEJvb2xlYW5cclxuJG1lbnUtc3RhdGUtYmFjay1jb21wYXQ6IHRydWUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQmFja3dhcmQgY29tcGF0aWJpbGl0eSBmb3IgbWVudSBjZW50ZXJlZC4gSWYgdHJ1ZSwgdGhpcyBkdXBsaWNhdGUgYC5tZW51LWNlbnRlcmVkID4gLm1lbnVgIHdpdGggYC5tZW51LmFsaWduLWNlbnRlcmAuIFxyXG4vLy8gQnV0IHBsZWFzZSBub3RlIHRoYXQgYG1lbnUtY2VudGVyZWRgIHdpbGwgYmUgcmVtb3ZlZCBpbiB1cGNvbWluZyB2ZXJzaW9ucy5cclxuLy8vIEB0eXBlIEJvb2xlYW5cclxuJG1lbnUtY2VudGVyZWQtYmFjay1jb21wYXQ6IHRydWUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQmFja3dhcmQgY29tcGF0aWJpbGl0eSBmb3IgdXNpbmcgYGljb24tKmAgY2xhc3NlcyB3aXRob3V0IGAuaWNvbnNgIGNsYXNzZXNcclxuLy8vIEJ1dCBwbGVhc2Ugbm90ZSB0aGF0IHRoaXMgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aWxsIGJlIHJlbW92ZWQgaW4gdXBjb21pbmcgdmVyc2lvbnMuXHJcbi8vLyBAdHlwZSBCb29sZWFuXHJcbiRtZW51LWljb25zLWJhY2stY29tcGF0OiB0cnVlICFkZWZhdWx0O1xyXG5cclxuLy8vIENyZWF0ZXMgdGhlIGJhc2Ugc3R5bGVzIGZvciBhIE1lbnUuXHJcbkBtaXhpbiBtZW51LWJhc2Uge1xyXG4gIHBhZGRpbmc6IDA7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIGxpc3Qtc3R5bGU6IG5vbmU7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG5cclxuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgfVxyXG5cclxuICBsaSB7XHJcbiAgICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XHJcbiAgfVxyXG5cclxuICBhLFxyXG4gIC5idXR0b24ge1xyXG4gICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHBhZGRpbmc6ICRtZW51LWl0ZW1zLXBhZGRpbmc7XHJcbiAgfVxyXG5cclxuICAvLyBSZXNldCBzdHlsZXMgb2YgaW5uZXIgZWxlbWVudHNcclxuICBpbnB1dCxcclxuICBzZWxlY3QsXHJcbiAgYSxcclxuICBidXR0b24ge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMDtcclxuICB9XHJcblxyXG4gIGlucHV0IHtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICB9XHJcbn1cclxuXHJcbi8vLyBFeHBhbmRzIHRoZSBpdGVtcyBvZiBhIE1lbnUsIHNvIGVhY2ggaXRlbSBpcyB0aGUgc2FtZSB3aWR0aC5cclxuQG1peGluIG1lbnUtZXhwYW5kIHtcclxuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcclxuICAgIGxpIHtcclxuICAgICAgZmxleDogMSAxIDBweDsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSB6ZXJvLXVuaXRcclxuICAgIH1cclxuICB9XHJcbiAgQGVsc2Uge1xyXG4gICAgZGlzcGxheTogdGFibGU7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuXHJcbiAgICA+IGxpIHtcclxuICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcclxuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vLyBBbGlnbiBtZW51IGl0ZW1zLlxyXG5AbWl4aW4gbWVudS1hbGlnbigkYWxpZ25tZW50KSB7XHJcbiAgQGlmICRhbGlnbm1lbnQgPT0gbGVmdCB7XHJcbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG4gICAgfVxyXG4gICAgQGVsc2Uge1xyXG4gICAgICB0ZXh0LWFsaWduOiAkZ2xvYmFsLWxlZnQ7XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBlbHNlIGlmICRhbGlnbm1lbnQgPT0gcmlnaHQge1xyXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICAgIGxpIHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XHJcblxyXG4gICAgICAgIC5zdWJtZW51IGxpIHtcclxuICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYudmVydGljYWwgbGkge1xyXG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgIHRleHQtYWxpZ246ICRnbG9iYWwtcmlnaHQ7XHJcblxyXG4gICAgICAgIC5zdWJtZW51IGxpIHtcclxuICAgICAgICAgIHRleHQtYWxpZ246ICRnbG9iYWwtcmlnaHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBAZWxzZSB7XHJcbiAgICAgIHRleHQtYWxpZ246ICRnbG9iYWwtcmlnaHQ7XHJcblxyXG4gICAgICAuc3VibWVudSBsaSB7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogJGdsb2JhbC1sZWZ0O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLnZlcnRpY2FsIHtcclxuICAgICAgICAuc3VibWVudSBsaSB7XHJcbiAgICAgICAgICB0ZXh0LWFsaWduOiAkZ2xvYmFsLXJpZ2h0O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBAZWxzZSBpZiAkYWxpZ25tZW50ID09IGNlbnRlciB7XHJcbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcclxuICAgICAgbGkge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcblxyXG4gICAgICAgIC5zdWJtZW51IGxpIHtcclxuICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIEBlbHNlIHtcclxuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG5cclxuICAgICAgLnN1Ym1lbnUgbGkge1xyXG4gICAgICAgIHRleHQtYWxpZ246ICRnbG9iYWwtbGVmdDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8vIFNldHMgdGhlIGRpcmVjdGlvbiBvZiBhIE1lbnUuXHJcbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRkaXIgW2hvcml6b250YWxdIC0gRGlyZWN0aW9uIG9mIHRoZSBNZW51LiBDYW4gYmUgYGhvcml6b250YWxgIG9yIGB2ZXJ0aWNhbGAuXHJcbkBtaXhpbiBtZW51LWRpcmVjdGlvbigkZGlyOiBob3Jpem9udGFsKSB7XHJcbiAgQGlmICRkaXIgPT0gaG9yaXpvbnRhbCB7XHJcbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcclxuICAgICAgZmxleC13cmFwOiB3cmFwO1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gICAgfVxyXG4gICAgQGVsc2Uge1xyXG4gICAgICBsaSB7XHJcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBlbHNlIGlmICRkaXIgPT0gdmVydGljYWwge1xyXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgfVxyXG4gICAgQGVsc2Uge1xyXG4gICAgICBsaSB7XHJcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgQGVsc2Uge1xyXG4gICAgQHdhcm4gJ1RoZSBkaXJlY3Rpb24gdXNlZCBmb3IgbWVudS1kaXJlY3Rpb24oKSBtdXN0IGJlIGhvcml6b250YWwgb3IgdmVydGljYWwuJztcclxuICB9XHJcbn1cclxuXHJcbi8vLyBDcmVhdGVzIGEgc2ltcGxlIE1lbnUsIHdoaWNoIGhhcyBubyBwYWRkaW5nIG9yIGhvdmVyIHN0YXRlLlxyXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZGlyIFskZ2xvYmFsLWxlZnRdIC0gRGlyZWN0aW9uIG9mIHRoZSBtZW51LiBUaGlzIGVmZmVjdHMgdGhlIHNpZGUgb2YgdGhlIGA8bGk+YCB0aGF0IHJlY2VpdmVzIHRoZSBtYXJnaW4uXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJG1hcmdpbiBbJG1lbnUtc2ltcGxlLW1hcmdpbl0gLSBUaGUgbWFyZ2luIHRvIGFwcGx5IHRvIGVhY2ggYDxsaT5gLlxyXG5AbWl4aW4gbWVudS1zaW1wbGUoJGRpcjogJGdsb2JhbC1sZWZ0LCAkbWFyZ2luOiAkbWVudS1zaW1wbGUtbWFyZ2luKSB7XHJcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIH1cclxuXHJcbiAgbGkgKyBsaSB7XHJcbiAgICBtYXJnaW4tI3skZGlyfTogJG1hcmdpbjtcclxuICB9XHJcblxyXG4gIGEge1xyXG4gICAgcGFkZGluZzogMDtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBuZXN0ZWQgTWVudSwgYnkgYWRkaW5nIGBtYXJnaW4tbGVmdGAgdG8gdGhlIG1lbnUuXHJcbi8vLyBAcGFyYW0ge0tleXdvcmR8TnVtYmVyfSAkbWFyZ2luIFskbWVudS1uZXN0ZWQtbWFyZ2luXSAtIExlbmd0aCBvZiB0aGUgbWFyZ2luLlxyXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkbmVzdGVkLWFsaWdubWVudCBbbGVmdF0gLSBBbGlnbm1lbnQgb2YgdGhlIG5lc3RlZCBjbGFzc1xyXG5AbWl4aW4gbWVudS1uZXN0ZWQoXHJcbiAgJG1hcmdpbjogJG1lbnUtbmVzdGVkLW1hcmdpbixcclxuICAkbmVzdGVkLWFsaWdubWVudDogbGVmdFxyXG4pIHtcclxuICBAaWYgJG5lc3RlZC1hbGlnbm1lbnQgPT0gcmlnaHQge1xyXG4gICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICRtYXJnaW47XHJcbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAwO1xyXG4gIH1cclxuICBAZWxzZSB7XHJcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogMDtcclxuICAgIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06ICRtYXJnaW47XHJcbiAgfVxyXG5cclxufVxyXG5cclxuLy8vIEFkZHMgYmFzaWMgc3R5bGVzIGZvciBpY29ucyBpbiBtZW51cy5cclxuQG1peGluIG1lbnUtaWNvbnMoKSB7XHJcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICBhIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgIH1cclxuICB9XHJcbiAgQGVsc2Uge1xyXG4gICAgaW1nLFxyXG4gICAgaSxcclxuICAgIHN2ZyB7XHJcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcblxyXG4gICAgICArIHNwYW4ge1xyXG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vLyBBZGRzIHBvc2l0aW9uIGNsYXNzZXMgZm9yIGljb25zIHdpdGhpbiBhIG1lbnUuXHJcbkBtaXhpbiBtZW51LWljb24tcG9zaXRpb24oJHBvc2l0aW9uOiBsZWZ0LCAkc3BhY2luZzogJG1lbnUtaWNvbi1zcGFjaW5nKSB7XHJcbiAgQGlmICRwb3NpdGlvbiA9PSBsZWZ0IHtcclxuICAgIGxpIGEge1xyXG4gICAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcclxuICAgICAgICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGltZyxcclxuICAgICAgaSxcclxuICAgICAgc3ZnIHtcclxuICAgICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJHNwYWNpbmc7XHJcblxyXG4gICAgICAgIEBpZiBub3QgJGdsb2JhbC1mbGV4Ym94IHtcclxuICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgQGVsc2UgaWYgJHBvc2l0aW9uID09IHJpZ2h0IHtcclxuICAgIGxpIGEge1xyXG4gICAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcclxuICAgICAgICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGltZyxcclxuICAgICAgaSxcclxuICAgICAgc3ZnIHtcclxuICAgICAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkc3BhY2luZztcclxuXHJcbiAgICAgICAgQGlmIG5vdCAkZ2xvYmFsLWZsZXhib3gge1xyXG4gICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBAZWxzZSBpZiAkcG9zaXRpb24gPT0gdG9wIHtcclxuICAgIGxpIGEge1xyXG4gICAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcclxuICAgICAgICBmbGV4LWZsb3c6IGNvbHVtbiBub3dyYXA7XHJcbiAgICAgIH1cclxuICAgICAgQGVsc2Uge1xyXG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgaW1nLFxyXG4gICAgICBpLFxyXG4gICAgICBzdmcge1xyXG4gICAgICAgIEBpZiBub3QgJGdsb2JhbC1mbGV4Ym94IHtcclxuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICAgbWFyZ2luOiAwIGF1dG8gJHNwYWNpbmc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBlbHNlIHtcclxuICAgICAgICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7XHJcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZztcclxuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgQGVsc2UgaWYgJHBvc2l0aW9uID09IGJvdHRvbSB7XHJcbiAgICBsaSBhIHtcclxuICAgICAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICAgICAgZmxleC1mbG93OiBjb2x1bW4gbm93cmFwO1xyXG4gICAgICB9XHJcbiAgICAgIEBlbHNlIHtcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGltZyxcclxuICAgICAgaSxcclxuICAgICAgc3ZnIHtcclxuICAgICAgICBAaWYgbm90ICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgIG1hcmdpbjogJHNwYWNpbmcgYXV0byAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICBAZWxzZSB7XHJcbiAgICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoO1xyXG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmc7XHJcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gbWVudS10ZXh0IHtcclxuICBwYWRkaW5nOiAkZ2xvYmFsLW1lbnUtcGFkZGluZztcclxuXHJcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgY29sb3I6IGluaGVyaXQ7XHJcbn1cclxuXHJcbkBtaXhpbiBtZW51LXN0YXRlLWFjdGl2ZSB7XHJcbiAgYmFja2dyb3VuZDogJG1lbnUtaXRlbS1iYWNrZ3JvdW5kLWFjdGl2ZTtcclxuICBjb2xvcjogJG1lbnUtaXRlbS1jb2xvci1hY3RpdmU7XHJcbn1cclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLW1lbnUge1xyXG4gIC5tZW51IHtcclxuICAgIEBpbmNsdWRlIG1lbnUtYmFzZTtcclxuXHJcbiAgICAvLyBEZWZhdWx0IG9yaWVudGF0aW9uOiBob3Jpem9udGFsXHJcbiAgICAmLCAmLmhvcml6b250YWwge1xyXG4gICAgICBAaW5jbHVkZSBtZW51LWRpcmVjdGlvbihob3Jpem9udGFsKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBWZXJ0aWNhbCBvcmllbnRhdGlvbiBtb2RpZmllclxyXG4gICAgJi52ZXJ0aWNhbCB7XHJcbiAgICAgIEBpbmNsdWRlIG1lbnUtZGlyZWN0aW9uKHZlcnRpY2FsKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBFdmVuLXdpZHRoIG1vZGlmaWVyIGZvciBob3Jpem9udGFsIG9yaWVudGF0aW9uXHJcbiAgICAmLmV4cGFuZGVkIHtcclxuICAgICAgQGluY2x1ZGUgbWVudS1leHBhbmQ7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU2ltcGxlXHJcbiAgICAmLnNpbXBsZSB7XHJcbiAgICAgIEBpbmNsdWRlIG1lbnUtc2ltcGxlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEJyZWFrcG9pbnQgc3BlY2lmaWMgdmVyc2lvbnNcclxuICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoJHNtYWxsOiBmYWxzZSkge1xyXG4gICAgICAmLiN7JC16Zi1zaXplfS1ob3Jpem9udGFsIHtcclxuICAgICAgICBAaW5jbHVkZSBtZW51LWRpcmVjdGlvbihob3Jpem9udGFsKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi4jeyQtemYtc2l6ZX0tdmVydGljYWwge1xyXG4gICAgICAgIEBpbmNsdWRlIG1lbnUtZGlyZWN0aW9uKHZlcnRpY2FsKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi4jeyQtemYtc2l6ZX0tZXhwYW5kZWQge1xyXG4gICAgICAgIEBpbmNsdWRlIG1lbnUtZXhwYW5kO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLiN7JC16Zi1zaXplfS1zaW1wbGUge1xyXG4gICAgICAgIEBpbmNsdWRlIG1lbnUtZXhwYW5kO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTmVzdGluZ1xyXG4gICAgJi5uZXN0ZWQge1xyXG4gICAgICBAaW5jbHVkZSBtZW51LW5lc3RlZDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBJY29uIEJhc2UgU3R5bGVzXHJcbiAgICAmLmljb25zIHtcclxuICAgICAgQGluY2x1ZGUgbWVudS1pY29ucztcclxuICAgIH1cclxuXHJcbiAgICAvLyBCYWNrd2FyZCBDb21wYXRpYmlsaXR5IGZvciBhY3RpdmUgc3RhdGVcclxuICAgIEBpZiAkbWVudS1pY29ucy1iYWNrLWNvbXBhdCB7XHJcbiAgICAgICYuaWNvbi10b3AsXHJcbiAgICAgICYuaWNvbi1yaWdodCxcclxuICAgICAgJi5pY29uLWJvdHRvbSxcclxuICAgICAgJi5pY29uLWxlZnQge1xyXG4gICAgICAgIEBpbmNsdWRlIG1lbnUtaWNvbnM7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBJY29uIExlZnRcclxuICAgICYuaWNvbi1sZWZ0IHtcclxuICAgICAgQGluY2x1ZGUgbWVudS1pY29uLXBvc2l0aW9uKGxlZnQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEljb24gUmlnaHRcclxuICAgICYuaWNvbi1yaWdodCB7XHJcbiAgICAgIEBpbmNsdWRlIG1lbnUtaWNvbi1wb3NpdGlvbihyaWdodCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSWNvbiBUb3BcclxuICAgICYuaWNvbi10b3Age1xyXG4gICAgICBAaW5jbHVkZSBtZW51LWljb24tcG9zaXRpb24odG9wKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBJY29uIEJvdHRvbVxyXG4gICAgJi5pY29uLWJvdHRvbSB7XHJcbiAgICAgIEBpbmNsdWRlIG1lbnUtaWNvbi1wb3NpdGlvbihib3R0b20pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEFjdGl2ZSBzdGF0ZVxyXG4gICAgLmlzLWFjdGl2ZSA+IGEge1xyXG4gICAgICBAaW5jbHVkZSBtZW51LXN0YXRlLWFjdGl2ZTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgLy8gQmFja3dhcmQgQ29tcGF0aWJpbGl0eSBmb3IgYWN0aXZlIHN0YXRlXHJcbiAgICBAaWYgJG1lbnUtc3RhdGUtYmFjay1jb21wYXQge1xyXG4gICAgICAuYWN0aXZlID4gYSB7XHJcbiAgICAgICAgQGluY2x1ZGUgbWVudS1zdGF0ZS1hY3RpdmU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBBbGlnbiBsZWZ0XHJcbiAgICAmLmFsaWduLSN7JGdsb2JhbC1sZWZ0fSB7XHJcbiAgICAgIEBpbmNsdWRlIG1lbnUtYWxpZ24obGVmdCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQWxpZ24gcmlnaHRcclxuICAgICYuYWxpZ24tI3skZ2xvYmFsLXJpZ2h0fSB7XHJcbiAgICAgIEBpbmNsdWRlIG1lbnUtYWxpZ24ocmlnaHQpO1xyXG5cclxuICAgICAgLm5lc3RlZCB7XHJcbiAgICAgICAgQGluY2x1ZGUgbWVudS1uZXN0ZWQoJG5lc3RlZC1hbGlnbm1lbnQ6IHJpZ2h0KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIEFsaWduIGNlbnRlclxyXG4gICAgJi5hbGlnbi1jZW50ZXIge1xyXG4gICAgICBAaW5jbHVkZSBtZW51LWFsaWduKGNlbnRlcik7XHJcbiAgICB9XHJcblxyXG4gICAgLm1lbnUtdGV4dCB7XHJcbiAgICAgIEBpbmNsdWRlIG1lbnUtdGV4dDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpZiAkbWVudS1jZW50ZXJlZC1iYWNrLWNvbXBhdCB7XHJcbiAgICAubWVudS1jZW50ZXJlZCB7XHJcbiAgICAgID4gLm1lbnUge1xyXG4gICAgICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xyXG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIEBpbmNsdWRlIG1lbnUtYWxpZ24oY2VudGVyKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gUHJldmVudCBGT1VDIHdoZW4gdXNpbmcgdGhlIFJlc3BvbnNpdmUgTWVudSBwbHVnaW5cclxuICAubm8tanMgW2RhdGEtcmVzcG9uc2l2ZS1tZW51XSB1bCB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gIH1cclxufVxyXG4iLCJAbWl4aW4gZm91bmRhdGlvbi1tZW51LWljb24ge1xyXG4gIC5tZW51LWljb24ge1xyXG4gICAgQGluY2x1ZGUgaGFtYnVyZ2VyKCRjb2xvcjogJHRpdGxlYmFyLWljb24tY29sb3IsICRjb2xvci1ob3ZlcjogJHRpdGxlYmFyLWljb24tY29sb3ItaG92ZXIpO1xyXG4gIH1cclxuXHJcbiAgLm1lbnUtaWNvbi5kYXJrIHtcclxuICAgIEBpbmNsdWRlIGhhbWJ1cmdlcjtcclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIG9mZi1jYW52YXNcclxuLy8vL1xyXG5cclxuLy8vIFdpZHRoIG1hcCBvZiBhIGxlZnQvcmlnaHQgb2ZmLWNhbnZhcyBwYW5lbC5cclxuLy8vIEB0eXBlIE1hcFxyXG4kb2ZmY2FudmFzLXNpemVzOiAoXHJcbiAgc21hbGw6IDI1MHB4LFxyXG4pICFkZWZhdWx0O1xyXG5cclxuLy8vIEhlaWdodCBtYXAgb2YgYSB0b3AvYm90dG9tIG9mZi1jYW52YXMgcGFuZWwuXHJcbi8vLyBAdHlwZSBNYXBcclxuJG9mZmNhbnZhcy12ZXJ0aWNhbC1zaXplczogKFxyXG4gIHNtYWxsOiAyNTBweCxcclxuKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGFuIG9mZi1jYW52YXMgcGFuZWwuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kb2ZmY2FudmFzLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xyXG5cclxuLy8vIEJveCBzaGFkb3cgZm9yIHRoZSBvZmYtY2FudmFzIG92ZXJsYXAgcGFuZWwuXHJcbi8vLyBAdHlwZSBTaGFkb3dcclxuJG9mZmNhbnZhcy1zaGFkb3c6IDAgMCAxMHB4IHJnYmEoJGJsYWNrLCAwLjcpICFkZWZhdWx0O1xyXG5cclxuLy8vIElubmVyIGJveCBzaGFkb3cgc2l6ZSBmb3IgdGhlIG9mZi1jYW52YXMgcHVzaCBwYW5lbC5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kb2ZmY2FudmFzLWlubmVyLXNoYWRvdy1zaXplOiAyMHB4ICFkZWZhdWx0O1xyXG5cclxuLy8vIElubmVyIGJveCBzaGFkb3cgY29sb3IgZm9yIHRoZSBvZmYtY2FudmFzIHB1c2ggcGFuZWwuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kb2ZmY2FudmFzLWlubmVyLXNoYWRvdy1jb2xvcjogcmdiYSgkYmxhY2ssIDAuMjUpICFkZWZhdWx0O1xyXG5cclxuLy8vIFotaW5kZXggb2YgYW4gb2ZmLWNhbnZhcyBjb250ZW50IG92ZXJsYXkuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJG9mZmNhbnZhcy1vdmVybGF5LXppbmRleDogMTEgIWRlZmF1bHQ7XHJcblxyXG4vLy8gWi1pbmRleCBvZiBhbiBvZmYtY2FudmFzIHBhbmVsIHdpdGggdGhlIGBwdXNoYCB0cmFuc2l0aW9uLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRvZmZjYW52YXMtcHVzaC16aW5kZXg6IDEyICFkZWZhdWx0O1xyXG5cclxuLy8vIFotaW5kZXggb2YgYW4gb2ZmLWNhbnZhcyBwYW5lbCB3aXRoIHRoZSBgb3ZlcmxhcGAgdHJhbnNpdGlvbi5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kb2ZmY2FudmFzLW92ZXJsYXAtemluZGV4OiAxMyAhZGVmYXVsdDtcclxuXHJcbi8vLyBaLWluZGV4IG9mIGFuIG9mZi1jYW52YXMgcGFuZWwgdXNpbmcgdGhlIGByZXZlYWwtZm9yLSpgIGNsYXNzZXMgb3IgbWl4aW4uXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJG9mZmNhbnZhcy1yZXZlYWwtemluZGV4OiAxMiAhZGVmYXVsdDtcclxuXHJcbi8vLyBMZW5ndGggb2YgdGhlIGFuaW1hdGlvbiBvbiBhbiBvZmYtY2FudmFzIHBhbmVsLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRvZmZjYW52YXMtdHJhbnNpdGlvbi1sZW5ndGg6IDAuNXMgIWRlZmF1bHQ7XHJcblxyXG4vLy8gVGltaW5nIGZ1bmN0aW9uIG9mIHRoZSBhbmltYXRpb24gb24gYW4gb2ZmLWNhbnZhcyBwYW5lbC5cclxuLy8vIEB0eXBlIEtleXdvcmRcclxuJG9mZmNhbnZhcy10cmFuc2l0aW9uLXRpbWluZzogZWFzZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBJZiBgdHJ1ZWAsIGEgcmV2ZWFsZWQgb2ZmLWNhbnZhcyB3aWxsIGJlIGZpeGVkLXBvc2l0aW9uLCBhbmQgc2Nyb2xsIHdpdGggdGhlIHNjcmVlbi5cclxuLy8vIEB0eXBlIEJvb2xcclxuJG9mZmNhbnZhcy1maXhlZC1yZXZlYWw6IHRydWUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIG92ZXJsYXkgdGhhdCBhcHBlYXJzIHdoZW4gYW4gb2ZmLWNhbnZhcyBwYW5lbCBpcyBvcGVuLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJG9mZmNhbnZhcy1leGl0LWJhY2tncm91bmQ6IHJnYmEoJHdoaXRlLCAwLjI1KSAhZGVmYXVsdDtcclxuXHJcbi8vLyBDU1MgY2xhc3MgdXNlZCBmb3IgdGhlIG1haW4gY29udGVudCBhcmVhLiBUaGUgb2ZmLWNhbnZhcyBtaXhpbnMgdXNlIHRoaXMgdG8gdGFyZ2V0IHRoZSBwYWdlIGNvbnRlbnQuXHJcbiRtYWluY29udGVudC1jbGFzczogJ29mZi1jYW52YXMtY29udGVudCcgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQWRkcyBiYXNlbGluZSBzdHlsZXMgZm9yIG9mZi1jYW52YXMuIFRoaXMgQ1NTIGlzIHJlcXVpcmVkIHRvIG1ha2UgdGhlIG90aGVyIHBpZWNlcyB3b3JrLlxyXG5AbWl4aW4gb2ZmLWNhbnZhcy1iYXNpY3Mge1xyXG5cclxuICAvLy8gVHJhbnNmb3JtIGRlcHJlY2F0ZWQgc2l6ZSBzZXR0aW5ncyBpbnRvIG1hcCAmIHNob3cgd2FybmluZ1xyXG4gIEBpZiB2YXJpYWJsZS1leGlzdHMob2ZmY2FudmFzLXNpemUpIHtcclxuICAgICRvZmZjYW52YXMtc2l6ZXM6IChzbWFsbDogJG9mZmNhbnZhcy1zaXplLCBtZWRpdW06ICRvZmZjYW52YXMtc2l6ZSkgIWdsb2JhbDtcclxuICAgIEB3YXJuICckb2ZmY2FudmFzLXNpemUgaXMgZGVwcmVjYXRlZCBhbmQgbm90IHVzZWQgYW55bW9yZSEgUGxlYXNlIHVwZGF0ZSB5b3VyIHNldHRpbmdzIGFuZCB1c2UgdGhlIG1hcCAkb2ZmY2FudmFzLXNpemVzIGluc3RlYWQnO1xyXG4gIH1cclxuICBAaWYgdmFyaWFibGUtZXhpc3RzKG9mZmNhbnZhcy12ZXJ0aWNhbC1zaXplKSB7XHJcbiAgICAkb2ZmY2FudmFzLXZlcnRpY2FsLXNpemVzOiAoc21hbGw6ICRvZmZjYW52YXMtdmVydGljYWwtc2l6ZSwgbWVkaXVtOiAkb2ZmY2FudmFzLXZlcnRpY2FsLXNpemUpICFnbG9iYWw7XHJcbiAgICBAd2FybiAnJG9mZmNhbnZhcy12ZXJ0aWNhbC1zaXplIGlzIGRlcHJlY2F0ZWQgYW5kIG5vdCB1c2VkIGFueW1vcmUhIFBsZWFzZSB1cGRhdGUgeW91ciBzZXR0aW5ncyBhbmQgdXNlIHRoZSBtYXAgJG9mZmNhbnZhcy12ZXJ0aWNhbC1zaXplcyBpbnN0ZWFkJztcclxuICB9XHJcblxyXG4gIC8vIENoZWNrcyB0aGUgei1pbmRleGVzIGFuZCBpbmNyZWFzZSB0aGVtIGR1ZSB0byBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cclxuICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBvdmVybGF5J3Mgei1pbmRleCBpcyBuZXcgc2luY2UgdjYuNCBhbmQgbWF5IGJlIGlkZW50aWNhbCB0byB0aGUgdXNlciBjdXN0b20gc2V0dGluZ3Mgb2YgdGhlIHB1c2ggei1pbmRleC5cclxuICBAaWYgJG9mZmNhbnZhcy1wdXNoLXppbmRleCA8PSAkb2ZmY2FudmFzLW92ZXJsYXktemluZGV4IHsgJG9mZmNhbnZhcy1wdXNoLXppbmRleDogJG9mZmNhbnZhcy1vdmVybGF5LXppbmRleCArIDEgIWdsb2JhbDsgfVxyXG4gIEBpZiAkb2ZmY2FudmFzLW92ZXJsYXAtemluZGV4IDw9ICRvZmZjYW52YXMtcHVzaC16aW5kZXggeyAkb2ZmY2FudmFzLW92ZXJsYXAtemluZGV4OiAkb2ZmY2FudmFzLXB1c2gtemluZGV4ICsgMSAhZ2xvYmFsOyB9XHJcbiAgQGlmICRvZmZjYW52YXMtcmV2ZWFsLXppbmRleCA8PSAkb2ZmY2FudmFzLW92ZXJsYXktemluZGV4IHsgJG9mZmNhbnZhcy1yZXZlYWwtemluZGV4OiAkb2ZmY2FudmFzLW92ZXJsYXktemluZGV4ICsgMSAhZ2xvYmFsOyB9XHJcblxyXG4gIC8vIEhpZGVzIG92ZXJmbG93IG9uIGJvZHkgd2hlbiBhbiBvZmYtY2FudmFzIHBhbmVsIGlzIG9wZW4uXHJcbiAgLmlzLW9mZi1jYW52YXMtb3BlbiB7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgLy8gT2ZmLWNhbnZhcyBvdmVybGF5IChnZW5lcmF0ZWQgYnkgSmF2YVNjcmlwdClcclxuICAuanMtb2ZmLWNhbnZhcy1vdmVybGF5IHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMDtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICB6LWluZGV4OiAkb2ZmY2FudmFzLW92ZXJsYXktemluZGV4O1xyXG5cclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG5cclxuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgJG9mZmNhbnZhcy10cmFuc2l0aW9uLWxlbmd0aCAkb2ZmY2FudmFzLXRyYW5zaXRpb24tdGltaW5nLCB2aXNpYmlsaXR5ICRvZmZjYW52YXMtdHJhbnNpdGlvbi1sZW5ndGggJG9mZmNhbnZhcy10cmFuc2l0aW9uLXRpbWluZztcclxuXHJcbiAgICBiYWNrZ3JvdW5kOiAkb2ZmY2FudmFzLWV4aXQtYmFja2dyb3VuZDtcclxuXHJcbiAgICBvcGFjaXR5OiAwO1xyXG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xyXG5cclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG4gICAgJi5pcy12aXNpYmxlIHtcclxuICAgICAgb3BhY2l0eTogMTtcclxuICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcclxuICAgIH1cclxuXHJcbiAgICAmLmlzLWNsb3NhYmxlIHtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgfVxyXG5cclxuICAgICYuaXMtb3ZlcmxheS1hYnNvbHV0ZSB7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIH1cclxuXHJcbiAgICAmLmlzLW92ZXJsYXktZml4ZWQge1xyXG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vLyBBZGRzIGJhc2ljIHN0eWxlcyBmb3IgYW4gb2ZmLWNhbnZhcyB3cmFwcGVyLlxyXG5AbWl4aW4gb2ZmLWNhbnZhcy13cmFwcGVyKCkge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG4vLy8gQWRkcyBiYXNpYyBzdHlsZXMgZm9yIGFuIG9mZi1jYW52YXMgcGFuZWwuXHJcbkBtaXhpbiBvZmYtY2FudmFzLWJhc2UoXHJcbiAgJGJhY2tncm91bmQ6ICRvZmZjYW52YXMtYmFja2dyb3VuZCxcclxuICAkdHJhbnNpdGlvbjogJG9mZmNhbnZhcy10cmFuc2l0aW9uLWxlbmd0aCAkb2ZmY2FudmFzLXRyYW5zaXRpb24tdGltaW5nLFxyXG4gICRmaXhlZDogdHJ1ZVxyXG4pIHtcclxuICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XHJcblxyXG4gIEBpZiAkZml4ZWQgPT0gdHJ1ZSB7XHJcbiAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgfVxyXG4gIEBlbHNlIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB9XHJcblxyXG4gIC8vIFNldCB0aGUgb2ZmLWNhbnZhcyB6LWluZGV4LlxyXG4gIHotaW5kZXg6ICRvZmZjYW52YXMtcHVzaC16aW5kZXg7XHJcblxyXG4gIC8vIEluY3JlYXNlIENTUyBzcGVjaWZpY2l0eVxyXG4gICYuaXMtdHJhbnNpdGlvbi1wdXNoIHtcclxuICAgIHotaW5kZXg6ICRvZmZjYW52YXMtcHVzaC16aW5kZXg7XHJcbiAgfVxyXG5cclxuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gJHRyYW5zaXRpb247XHJcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xyXG5cclxuICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcclxuXHJcbiAgLy8gSGlkZSBpbmFjdGl2ZSBvZmYtY2FudmFzIHdpdGhpbiB0aGUgY29udGVudCB0aGF0IGhhdmUgdGhlIHNhbWUgcG9zaXRpb25cclxuICAmLmlzLWNsb3NlZCB7XHJcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAvLyBPdmVybGFwIG9ubHkgc3R5bGVzLlxyXG4gICYuaXMtdHJhbnNpdGlvbi1vdmVybGFwIHtcclxuICAgIHotaW5kZXg6ICRvZmZjYW52YXMtb3ZlcmxhcC16aW5kZXg7XHJcblxyXG4gICAgJi5pcy1vcGVuIHtcclxuICAgICAgYm94LXNoYWRvdzogJG9mZmNhbnZhcy1zaGFkb3c7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBTZXRzIHRyYW5zZm9ybSB0byAwIHRvIHNob3cgYW4gb2ZmLWNhbnZhcyBwYW5lbC5cclxuICAmLmlzLW9wZW4ge1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gQWRkcyBzdHlsZXMgdG8gcG9zaXRpb24gYW4gb2ZmLWNhbnZhcyBwYW5lbCB0byB0aGUgbGVmdC9yaWdodC90b3AvYm90dG9tLlxyXG5AbWl4aW4gb2ZmLWNhbnZhcy1wb3NpdGlvbihcclxuICAkcG9zaXRpb246IGxlZnQsXHJcbiAgJG9yaWVudGF0aW9uOiBob3Jpem9udGFsLFxyXG4gICRzaXplczogaWYoJG9yaWVudGF0aW9uID09IGhvcml6b250YWwsICRvZmZjYW52YXMtc2l6ZXMsICRvZmZjYW52YXMtdmVydGljYWwtc2l6ZXMpXHJcbikge1xyXG4gIEBpZiAkcG9zaXRpb24gPT0gbGVmdCB7XHJcbiAgICB0b3A6IDA7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgb3ZlcmZsb3cteTogYXV0bztcclxuXHJcbiAgICBAZWFjaCAkbmFtZSwgJHNpemUgaW4gJHNpemVzIHtcclxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xyXG4gICAgICAgIHdpZHRoOiAkc2l6ZTtcclxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLSRzaXplKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFNldHMgdGhlIHBvc2l0aW9uIGZvciBuZXN0ZWQgb2ZmLWNhbnZhcyBlbGVtZW50XHJcbiAgICBAYXQtcm9vdCAuI3skbWFpbmNvbnRlbnQtY2xhc3N9IC5vZmYtY2FudmFzLnBvc2l0aW9uLSN7JHBvc2l0aW9ufSB7XHJcblxyXG4gICAgICBAZWFjaCAkbmFtZSwgJHNpemUgaW4gJHNpemVzIHtcclxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XHJcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLSRzaXplKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgJi5pcy10cmFuc2l0aW9uLW92ZXJsYXAuaXMtb3BlbiB7XHJcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBTZXRzIHRoZSBvcGVuIHBvc2l0aW9uIGZvciB0aGUgY29udGVudFxyXG4gICAgQGF0LXJvb3QgLiN7JG1haW5jb250ZW50LWNsYXNzfS5pcy1vcGVuLSN7JHBvc2l0aW9ufSB7XHJcbiAgICAgICYuaGFzLXRyYW5zaXRpb24tcHVzaCB7XHJcbiAgICAgICAgQGVhY2ggJG5hbWUsICRzaXplIGluICRzaXplcyB7XHJcbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgkc2l6ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBlbHNlIGlmICRwb3NpdGlvbiA9PSByaWdodCB7XHJcbiAgICB0b3A6IDA7XHJcbiAgICByaWdodDogMDtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIG92ZXJmbG93LXk6IGF1dG87XHJcblxyXG4gICAgQGVhY2ggJG5hbWUsICRzaXplIGluICRzaXplcyB7XHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcclxuICAgICAgICB3aWR0aDogJHNpemU7XHJcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKCRzaXplKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFNldHMgdGhlIHBvc2l0aW9uIGZvciBuZXN0ZWQgb2ZmLWNhbnZhcyBlbGVtZW50XHJcbiAgICBAYXQtcm9vdCAuI3skbWFpbmNvbnRlbnQtY2xhc3N9IC5vZmYtY2FudmFzLnBvc2l0aW9uLSN7JHBvc2l0aW9ufSB7XHJcblxyXG4gICAgICBAZWFjaCAkbmFtZSwgJHNpemUgaW4gJHNpemVzIHtcclxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XHJcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoJHNpemUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAmLmlzLXRyYW5zaXRpb24tb3ZlcmxhcC5pcy1vcGVuIHtcclxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFNldHMgdGhlIG9wZW4gcG9zaXRpb24gZm9yIHRoZSBjb250ZW50XHJcbiAgICBAYXQtcm9vdCAuI3skbWFpbmNvbnRlbnQtY2xhc3N9LmlzLW9wZW4tI3skcG9zaXRpb259IHtcclxuICAgICAgJi5oYXMtdHJhbnNpdGlvbi1wdXNoIHtcclxuICAgICAgICBAZWFjaCAkbmFtZSwgJHNpemUgaW4gJHNpemVzIHtcclxuICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0kc2l6ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBlbHNlIGlmICRwb3NpdGlvbiA9PSB0b3Age1xyXG4gICAgdG9wOiAwO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgb3ZlcmZsb3cteDogYXV0bztcclxuXHJcbiAgICBAZWFjaCAkbmFtZSwgJHNpemUgaW4gJHNpemVzIHtcclxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xyXG4gICAgICAgIGhlaWdodDogJHNpemU7XHJcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kc2l6ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBTZXRzIHRoZSBwb3NpdGlvbiBmb3IgbmVzdGVkIG9mZi1jYW52YXMgZWxlbWVudFxyXG4gICAgQGF0LXJvb3QgLiN7JG1haW5jb250ZW50LWNsYXNzfSAub2ZmLWNhbnZhcy5wb3NpdGlvbi0jeyRwb3NpdGlvbn0ge1xyXG4gICAgICBAZWFjaCAkbmFtZSwgJHNpemUgaW4gJHNpemVzIHtcclxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XHJcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLSRzaXplKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgJi5pcy10cmFuc2l0aW9uLW92ZXJsYXAuaXMtb3BlbiB7XHJcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBTZXRzIHRoZSBvcGVuIHBvc2l0aW9uIGZvciB0aGUgY29udGVudFxyXG4gICAgQGF0LXJvb3QgLiN7JG1haW5jb250ZW50LWNsYXNzfS5pcy1vcGVuLSN7JHBvc2l0aW9ufSB7XHJcbiAgICAgICYuaGFzLXRyYW5zaXRpb24tcHVzaCB7XHJcbiAgICAgICAgQGVhY2ggJG5hbWUsICRzaXplIGluICRzaXplcyB7XHJcbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgkc2l6ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBlbHNlIGlmICRwb3NpdGlvbiA9PSBib3R0b20ge1xyXG4gICAgYm90dG9tOiAwO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgb3ZlcmZsb3cteDogYXV0bztcclxuXHJcbiAgICBAZWFjaCAkbmFtZSwgJHNpemUgaW4gJHNpemVzIHtcclxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xyXG4gICAgICAgIGhlaWdodDogJHNpemU7XHJcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKCRzaXplKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFNldHMgdGhlIHBvc2l0aW9uIGZvciBuZXN0ZWQgb2ZmLWNhbnZhcyBlbGVtZW50XHJcbiAgICBAYXQtcm9vdCAuI3skbWFpbmNvbnRlbnQtY2xhc3N9IC5vZmYtY2FudmFzLnBvc2l0aW9uLSN7JHBvc2l0aW9ufSB7XHJcbiAgICAgIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkc2l6ZXMge1xyXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcclxuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgkc2l6ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgICYuaXMtdHJhbnNpdGlvbi1vdmVybGFwLmlzLW9wZW4ge1xyXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU2V0cyB0aGUgb3BlbiBwb3NpdGlvbiBmb3IgdGhlIGNvbnRlbnRcclxuICAgIEBhdC1yb290IC4jeyRtYWluY29udGVudC1jbGFzc30uaXMtb3Blbi0jeyRwb3NpdGlvbn0ge1xyXG4gICAgICAmLmhhcy10cmFuc2l0aW9uLXB1c2gge1xyXG4gICAgICAgIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkc2l6ZXMge1xyXG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLSRzaXplKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIElmICRvZmZjYW52YXMtaW5uZXItc2hhZG93LXNpemUgaXMgc2V0LCBhZGQgaW5uZXIgYm94LXNoYWRvdy5cclxuICAvLyBUaGlzIG1pbWljcyB0aGUgb2ZmLWNhbnZhcyBwYW5lbCBoYXZpbmcgYSBsb3dlciB6LWluZGV4LCB3aXRob3V0IGhhdmluZyB0byBoYXZlIG9uZS5cclxuICBAaWYgJG9mZmNhbnZhcy1pbm5lci1zaGFkb3ctc2l6ZSB7XHJcbiAgICAmLmlzLXRyYW5zaXRpb24tcHVzaCB7XHJcbiAgICAgIEBpZiAkcG9zaXRpb24gPT0gbGVmdCB7XHJcbiAgICAgICAgQGluY2x1ZGUgaW5uZXItc2lkZS1zaGFkb3cocmlnaHQsICRvZmZjYW52YXMtaW5uZXItc2hhZG93LXNpemUsICRvZmZjYW52YXMtaW5uZXItc2hhZG93LWNvbG9yKTtcclxuICAgICAgfVxyXG4gICAgICBAZWxzZSBpZiAkcG9zaXRpb24gPT0gcmlnaHQge1xyXG4gICAgICAgIEBpbmNsdWRlIGlubmVyLXNpZGUtc2hhZG93KGxlZnQsICRvZmZjYW52YXMtaW5uZXItc2hhZG93LXNpemUsICRvZmZjYW52YXMtaW5uZXItc2hhZG93LWNvbG9yKTtcclxuICAgICAgfVxyXG4gICAgICBAZWxzZSBpZiAkcG9zaXRpb24gPT0gdG9wIHtcclxuICAgICAgICBAaW5jbHVkZSBpbm5lci1zaWRlLXNoYWRvdyhib3R0b20sICRvZmZjYW52YXMtaW5uZXItc2hhZG93LXNpemUsICRvZmZjYW52YXMtaW5uZXItc2hhZG93LWNvbG9yKTtcclxuICAgICAgfVxyXG4gICAgICBAZWxzZSBpZiAkcG9zaXRpb24gPT0gYm90dG9tIHtcclxuICAgICAgICBAaW5jbHVkZSBpbm5lci1zaWRlLXNoYWRvdyh0b3AsICRvZmZjYW52YXMtaW5uZXItc2hhZG93LXNpemUsICRvZmZjYW52YXMtaW5uZXItc2hhZG93LWNvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbi8vLyBTZXRzIHRoZSBzdHlsZXMgZm9yIHRoZSBjb250ZW50IGNvbnRhaW5lci5cclxuQG1peGluIG9mZi1jYW52YXMtY29udGVudCgpIHtcclxuICB0cmFuc2Zvcm06IG5vbmU7XHJcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtICRvZmZjYW52YXMtdHJhbnNpdGlvbi1sZW5ndGggJG9mZmNhbnZhcy10cmFuc2l0aW9uLXRpbWluZztcclxuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XHJcblxyXG4gIC8vIFRyYW5zZm9ybSBzY29wZSB1bnRpbCB0aGUgZWxlbWVudCBpcyBjbG9zZWQgKG1ha2VzIHN1cmUgdHJhbnNpdGlvbmVuZCBnZXRzIHRyaWdnZXJlZClcclxuICAmLmhhcy10cmFuc2l0aW9uLXB1c2gge1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG5cclxuICAvLyBDb25zaWRlciBlbGVtZW50ICYgY29udGVudCwgbmVzdGVkIGluIGFub3RoZXIgY29udGVudFxyXG4gIC5vZmYtY2FudmFzLmlzLW9wZW4ge1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gQWRkcyBzdHlsZXMgdGhhdCByZXZlYWwgYW4gb2ZmLWNhbnZhcyBwYW5lbC5cclxuQG1peGluIG9mZi1jYW52YXMtcmV2ZWFsKFxyXG4kcG9zaXRpb246IGxlZnQsXHJcbiR6aW5kZXg6ICRvZmZjYW52YXMtcmV2ZWFsLXppbmRleCxcclxuJGNvbnRlbnQ6ICRtYWluY29udGVudC1jbGFzcyxcclxuJGJyZWFrcG9pbnQ6IHNtYWxsXHJcbikge1xyXG4gIHRyYW5zZm9ybTogbm9uZTtcclxuICB6LWluZGV4OiAkemluZGV4O1xyXG4gIHRyYW5zaXRpb246IG5vbmU7XHJcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcclxuXHJcbiAgQGlmIG5vdCAkb2ZmY2FudmFzLWZpeGVkLXJldmVhbCB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgfVxyXG5cclxuICAuY2xvc2UtYnV0dG9uIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgfVxyXG5cclxuICAvLyBDb25zaWRlciByZXZlYWxlZCBlbGVtZW50IGlzIG5lc3RlZCBpbiBjb250ZW50XHJcbiAgLiN7JG1haW5jb250ZW50LWNsYXNzfSAmIHtcclxuICAgIHRyYW5zZm9ybTogbm9uZTtcclxuICB9XHJcblxyXG4gIEBhdC1yb290IC4jeyRjb250ZW50fS5oYXMtcmV2ZWFsLSN7JHBvc2l0aW9ufSB7XHJcbiAgICBtYXJnaW4tI3skcG9zaXRpb259OiAtemYtZ2V0LWJwLXZhbCgkb2ZmY2FudmFzLXNpemVzLCAkYnJlYWtwb2ludCk7XHJcbiAgfVxyXG5cclxuICAvLyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAocHJpb3IgdG8gdjYuNClcclxuICAmIH4gLiN7JGNvbnRlbnR9IHtcclxuICAgIG1hcmdpbi0jeyRwb3NpdGlvbn06IC16Zi1nZXQtYnAtdmFsKCRvZmZjYW52YXMtc2l6ZXMsICRicmVha3BvaW50KTtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBPdmVycmlkZXMgdGhlIG9mZi1jYW52YXMgc3R5bGVzXHJcbkBtaXhpbiBpbi1jYW52YXMoKSB7XHJcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcclxuICBoZWlnaHQ6IGF1dG87XHJcbiAgcG9zaXRpb246IHN0YXRpYztcclxuICBiYWNrZ3JvdW5kOiBpbmhlcml0O1xyXG4gIHdpZHRoOiBpbmhlcml0O1xyXG4gIG92ZXJmbG93OiBpbmhlcml0O1xyXG4gIHRyYW5zaXRpb246IGluaGVyaXQ7XHJcblxyXG4gIC8vIEluY3JlYXNlIENTUyBzcGVjaWZpY2l0eVxyXG4gICYucG9zaXRpb24tbGVmdCxcclxuICAmLnBvc2l0aW9uLXJpZ2h0LFxyXG4gICYucG9zaXRpb24tdG9wLFxyXG4gICYucG9zaXRpb24tYm90dG9tIHtcclxuICAgIGJveC1zaGFkb3c6IG5vbmU7XHJcbiAgICB0cmFuc2Zvcm06IG5vbmU7XHJcbiAgfVxyXG5cclxuICAuY2xvc2UtYnV0dG9uIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1vZmYtY2FudmFzIHtcclxuICBAaW5jbHVkZSBvZmYtY2FudmFzLWJhc2ljcztcclxuXHJcbiAgLy8gT2ZmLWNhbnZhcyB3cmFwcGVyXHJcbiAgLm9mZi1jYW52YXMtd3JhcHBlciB7XHJcbiAgICBAaW5jbHVkZSBvZmYtY2FudmFzLXdyYXBwZXI7XHJcbiAgfVxyXG5cclxuICAvLyBPZmYtY2FudmFzIGNvbnRhaW5lclxyXG4gIC5vZmYtY2FudmFzIHtcclxuICAgIEBpbmNsdWRlIG9mZi1jYW52YXMtYmFzZTtcclxuXHJcbiAgICAvLyBGb3JjZSBwb3NpdGlvbiBhYnNvbHV0ZSBmb3IgbmVzdGVkIG9mZi1jYW52YXMgYmVjYXVzZSBmaXhlZCBkb2Vzbid0IHdvcmsgZm9yIHB1c2ggdHJhbnNpdGlvbiB3aXRoaW4gdGhlIHRyYW5zZm9ybSBzY29wZS5cclxuICAgIEBhdC1yb290IC4jeyRtYWluY29udGVudC1jbGFzc30gJiB7XHJcbiAgICAgIC8vIE5PVEU6IHNpbmNlIG92ZXJsYXAgdHJhbnNpdGlvbiBpcyBjdXJyZW50bHkgZm9yY2VkIGlmIG5lc3RlZCwgdGhlcmUncyBubyBuZWVkIHRvIGZvcmNlIHBvc2l0aW9uIGFic29sdXRlIHVudGlsIG5lc3RlZCBwdXNoIHRyYW5zaXRpb24gaXMgc3VwcG9ydGVkLlxyXG4gICAgICAvLyBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBPZmYtY2FudmFzIGNvbnRhaW5lciB3aXRoIGFic29sdXRlIHBvc2l0aW9uXHJcbiAgLm9mZi1jYW52YXMtYWJzb2x1dGUge1xyXG4gICAgQGluY2x1ZGUgb2ZmLWNhbnZhcy1iYXNlKCRmaXhlZDogZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgLy8gT2ZmLWNhbnZhcyBwb3NpdGlvbiBjbGFzc2VzXHJcbiAgLnBvc2l0aW9uLWxlZnQgICAgeyBAaW5jbHVkZSBvZmYtY2FudmFzLXBvc2l0aW9uKGxlZnQsICAgaG9yaXpvbnRhbCk7IH1cclxuICAucG9zaXRpb24tcmlnaHQgICB7IEBpbmNsdWRlIG9mZi1jYW52YXMtcG9zaXRpb24ocmlnaHQsICBob3Jpem9udGFsKTsgfVxyXG4gIC5wb3NpdGlvbi10b3AgICAgIHsgQGluY2x1ZGUgb2ZmLWNhbnZhcy1wb3NpdGlvbih0b3AsICAgIHZlcnRpY2FsKTsgfVxyXG4gIC5wb3NpdGlvbi1ib3R0b20gIHsgQGluY2x1ZGUgb2ZmLWNhbnZhcy1wb3NpdGlvbihib3R0b20sIHZlcnRpY2FsKTsgfVxyXG5cclxuICAub2ZmLWNhbnZhcy1jb250ZW50IHtcclxuICAgIEBpbmNsdWRlIG9mZi1jYW52YXMtY29udGVudDtcclxuICB9XHJcblxyXG4gIC8vIFJldmVhbCBvZmYtY2FudmFzIHBhbmVsIG9uIGxhcmdlciBzY3JlZW5zXHJcbiAgQGVhY2ggJG5hbWUsICR2YWx1ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcclxuICAgIEBpZiAkbmFtZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcclxuICAgICAgICAucG9zaXRpb24tbGVmdC5yZXZlYWwtZm9yLSN7JG5hbWV9IHtcclxuICAgICAgICAgIEBpbmNsdWRlIG9mZi1jYW52YXMtcmV2ZWFsKGxlZnQsICRvZmZjYW52YXMtcmV2ZWFsLXppbmRleCwgJG1haW5jb250ZW50LWNsYXNzLCAkbmFtZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAucG9zaXRpb24tcmlnaHQucmV2ZWFsLWZvci0jeyRuYW1lfSB7XHJcbiAgICAgICAgICBAaW5jbHVkZSBvZmYtY2FudmFzLXJldmVhbChyaWdodCwgJG9mZmNhbnZhcy1yZXZlYWwtemluZGV4LCAkbWFpbmNvbnRlbnQtY2xhc3MsICRuYW1lKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5wb3NpdGlvbi10b3AucmV2ZWFsLWZvci0jeyRuYW1lfSB7XHJcbiAgICAgICAgICBAaW5jbHVkZSBvZmYtY2FudmFzLXJldmVhbCh0b3AsICRvZmZjYW52YXMtcmV2ZWFsLXppbmRleCwgJG1haW5jb250ZW50LWNsYXNzLCAkbmFtZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAucG9zaXRpb24tYm90dG9tLnJldmVhbC1mb3ItI3skbmFtZX0ge1xyXG4gICAgICAgICAgQGluY2x1ZGUgb2ZmLWNhbnZhcy1yZXZlYWwoYm90dG9tLCAkb2ZmY2FudmFzLXJldmVhbC16aW5kZXgsICRtYWluY29udGVudC1jbGFzcywgJG5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gTW92ZSBpbi1jYW52YXMgZm9yIGxhcmdlciBzY3JlZW5zXHJcbiAgQGVhY2ggJG5hbWUsICR2YWx1ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcclxuICAgIEBpZiAkbmFtZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcclxuICAgICAgICAub2ZmLWNhbnZhcy5pbi1jYW52YXMtZm9yLSN7JG5hbWV9IHtcclxuICAgICAgICAgIEBpbmNsdWRlIGluLWNhbnZhcztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBvcmJpdFxyXG4vLy8vXHJcblxyXG4vLy8gRGVmYXVsdCBjb2xvciBmb3IgT3JiaXQncyBidWxsZXRzLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJG9yYml0LWJ1bGxldC1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBhY3RpdmUgY29sb3IgZm9yIE9yYml0J3MgYnVsbGV0cy5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRvcmJpdC1idWxsZXQtYmFja2dyb3VuZC1hY3RpdmU6ICRkYXJrLWdyYXkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBkaWFtZXRlciBmb3IgT3JiaXQncyBidWxsZXRzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRvcmJpdC1idWxsZXQtZGlhbWV0ZXI6IDEuMnJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IG1hcmdpbiBiZXR3ZWVuIE9yYml0J3MgYnVsbGV0cy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kb3JiaXQtYnVsbGV0LW1hcmdpbjogMC4xcmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgZGlzdGFuY2UgZnJvbSBzbGlkZSByZWdpb24gZm9yIE9yYml0J3MgYnVsbGV0cy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kb3JiaXQtYnVsbGV0LW1hcmdpbi10b3A6IDAuOHJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGJvdHRvbSBtYXJnaW4gZnJvbSBPcmJpdCdzIGJ1bGxldHMgdG8gd2hhdGV2ZXIgY29udGVudCBtYXkgbHVyayBiZWxvdyBpdC5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kb3JiaXQtYnVsbGV0LW1hcmdpbi1ib3R0b206IDAuOHJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3IgZm9yIE9yYml0J3MgY2FwdGlvbi5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRvcmJpdC1jYXB0aW9uLWJhY2tncm91bmQ6IHJnYmEoJGJsYWNrLCAwLjUpICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgcGFkZGluZyBmb3IgT3JiaXQncyBjYXB0aW9uLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRvcmJpdC1jYXB0aW9uLXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIGZvciBPcmJpdCdzIGNvbnRyb2xzIHdoZW4gaG92ZXJlZC5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRvcmJpdC1jb250cm9sLWJhY2tncm91bmQtaG92ZXI6IHJnYmEoJGJsYWNrLCAwLjUpICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgcGFkZGluZyBmb3IgT3JiaXQncyBjb250cm9scy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kb3JiaXQtY29udHJvbC1wYWRkaW5nOiAxcmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgei1pbmRleCBmb3IgT3JiaXQncyBjb250cm9scy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kb3JiaXQtY29udHJvbC16aW5kZXg6IDEwICFkZWZhdWx0O1xyXG5cclxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgb3V0ZXIgT3JiaXQgd3JhcHBlci4gVGhlc2Ugc3R5bGVzIGFyZSB1c2VkIG9uIHRoZSBgLm9yYml0YCBjbGFzcy5cclxuQG1peGluIG9yYml0LXdyYXBwZXIge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxufVxyXG5cclxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgaW5uZXIgT3JiaXQgc2xpZGUgY29udGFpbmVyLiBUaGVzZSBzdHlsZXMgYXJlIHVzZWQgb24gdGhlIGAub3JiaXQtY29udGFpbmVyYCBjbGFzcy5cclxuQG1peGluIG9yYml0LWNvbnRhaW5lciB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGhlaWdodDogMDsgLy8gUHJldmVudCBGT1VDIGJ5IG5vdCBzaG93aW5nIHVudGlsIEpTIHNldHMgaGVpZ2h0XHJcbiAgbWFyZ2luOiAwO1xyXG4gIGxpc3Qtc3R5bGU6IG5vbmU7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG5cclxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgaW5kaXZpZHVhbCBzbGlkZXMgb2YgYW4gT3JiaXQgc2xpZGVyLiBUaGVzZSBzdHlsZXMgYXJlIHVzZWQgb24gdGhlIGAub3JiaXQtc2xpZGVgIGNsYXNzLlxyXG5AbWl4aW4gb3JiaXQtc2xpZGUge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG5cclxuICAmLm5vLW1vdGlvbnVpIHtcclxuICAgICYuaXMtYWN0aXZlIHtcclxuICAgICAgdG9wOiAwO1xyXG4gICAgICBsZWZ0OiAwO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuQG1peGluIG9yYml0LWZpZ3VyZSB7XHJcbiAgbWFyZ2luOiAwO1xyXG59XHJcblxyXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgc2xpZGUgY29udGFpbmluZyBhbiBpbWFnZS4gVGhlc2Ugc3R5bGVzIGFyZSB1c2VkIG9uIHRoZSBgLm9yYml0LWltYWdlYCBjbGFzcy5cclxuQG1peGluIG9yYml0LWltYWdlIHtcclxuICB3aWR0aDogMTAwJTtcclxuICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgbWFyZ2luOiAwO1xyXG59XHJcblxyXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGFuIG9yYml0IHNsaWRlIGNhcHRpb24uIFRoZXNlIHN0eWxlcyBhcmUgdXNlZCBvbiB0aGUgYC5vcmJpdC1jYXB0aW9uYCBjbGFzcy5cclxuQG1peGluIG9yYml0LWNhcHRpb24ge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICBib3R0b206IDA7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgbWFyZ2luLWJvdHRvbTogMDtcclxuICBwYWRkaW5nOiAkb3JiaXQtY2FwdGlvbi1wYWRkaW5nO1xyXG5cclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkb3JiaXQtY2FwdGlvbi1iYWNrZ3JvdW5kO1xyXG4gIGNvbG9yOiBjb2xvci1waWNrLWNvbnRyYXN0KCRvcmJpdC1jYXB0aW9uLWJhY2tncm91bmQpO1xyXG59XHJcblxyXG4vLy8gQWRkcyBiYXNlIHN0eWxlcyBmb3IgdGhlIG5leHQvcHJldmlvdXMgYnV0dG9ucyBpbiBhbiBPcmJpdCBzbGlkZXIuIFRoZXNlIHN0eWxlcyBhcmUgc2hhcmVkIGJldHdlZW4gdGhlIGAub3JiaXQtbmV4dGAgYW5kIGAub3JiaXQtcHJldmlvdXNgIGNsYXNzZXMgaW4gdGhlIGRlZmF1bHQgQ1NTLlxyXG5AbWl4aW4gb3JiaXQtY29udHJvbCB7XHJcbiAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xyXG4gIEBpbmNsdWRlIHZlcnRpY2FsLWNlbnRlcjtcclxuICB6LWluZGV4OiAkb3JiaXQtY29udHJvbC16aW5kZXg7XHJcbiAgcGFkZGluZzogJG9yYml0LWNvbnRyb2wtcGFkZGluZztcclxuICBjb2xvcjogJHdoaXRlO1xyXG5cclxuICAmOmhvdmVyLFxyXG4gICY6YWN0aXZlLFxyXG4gICY6Zm9jdXMge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG9yYml0LWNvbnRyb2wtYmFja2dyb3VuZC1ob3ZlcjtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIE9yYml0IHByZXZpb3VzIGJ1dHRvbi4gVGhlc2Ugc3R5bGVzIGFyZSB1c2VkIG9uIHRoZSBgLm9yYml0LXByZXZpb3VzYCBjbGFzcy5cclxuQG1peGluIG9yYml0LXByZXZpb3VzIHtcclxuICAjeyRnbG9iYWwtbGVmdH06IDA7XHJcbn1cclxuXHJcbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIE9yYml0IG5leHQgYnV0dG9uLiBUaGVzZSBzdHlsZXMgYXJlIHVzZWQgb24gdGhlIGAub3JiaXQtbmV4dGAgY2xhc3MuXHJcbkBtaXhpbiBvcmJpdC1uZXh0IHtcclxuICAjeyRnbG9iYWwtbGVmdH06IGF1dG87XHJcbiAgI3skZ2xvYmFsLXJpZ2h0fTogMDtcclxufVxyXG5cclxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIGNvbnRhaW5lciBvZiBPcmJpdCBidWxsZXRzLiAvLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBPcmJpdCBwcmV2aW91cyBidXR0b24uIFRoZXNlIHN0eWxlcyBhcmUgdXNlZCBvbiB0aGUgYC5vcmJpdC1idWxsZXRzYCBjbGFzcy5cclxuQG1peGluIG9yYml0LWJ1bGxldHMge1xyXG4gIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgbWFyZ2luLXRvcDogJG9yYml0LWJ1bGxldC1tYXJnaW4tdG9wO1xyXG4gIG1hcmdpbi1ib3R0b206ICRvcmJpdC1idWxsZXQtbWFyZ2luLWJvdHRvbTtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblxyXG4gIGJ1dHRvbiB7XHJcbiAgICB3aWR0aDogJG9yYml0LWJ1bGxldC1kaWFtZXRlcjtcclxuICAgIGhlaWdodDogJG9yYml0LWJ1bGxldC1kaWFtZXRlcjtcclxuICAgIG1hcmdpbjogJG9yYml0LWJ1bGxldC1tYXJnaW47XHJcblxyXG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG9yYml0LWJ1bGxldC1iYWNrZ3JvdW5kO1xyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb3JiaXQtYnVsbGV0LWJhY2tncm91bmQtYWN0aXZlO1xyXG4gICAgfVxyXG5cclxuICAgICYuaXMtYWN0aXZlIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG9yYml0LWJ1bGxldC1iYWNrZ3JvdW5kLWFjdGl2ZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLW9yYml0IHtcclxuICAub3JiaXQge1xyXG4gICAgQGluY2x1ZGUgb3JiaXQtd3JhcHBlcjtcclxuICB9XHJcblxyXG4gIC5vcmJpdC1jb250YWluZXIge1xyXG4gICAgQGluY2x1ZGUgb3JiaXQtY29udGFpbmVyO1xyXG4gIH1cclxuXHJcbiAgLm9yYml0LXNsaWRlIHtcclxuICAgIEBpbmNsdWRlIG9yYml0LXNsaWRlO1xyXG4gIH1cclxuXHJcbiAgLm9yYml0LWZpZ3VyZSB7XHJcbiAgICBAaW5jbHVkZSBvcmJpdC1maWd1cmU7XHJcbiAgfVxyXG5cclxuICAub3JiaXQtaW1hZ2Uge1xyXG4gICAgQGluY2x1ZGUgb3JiaXQtaW1hZ2U7XHJcbiAgfVxyXG5cclxuICAub3JiaXQtY2FwdGlvbiB7XHJcbiAgICBAaW5jbHVkZSBvcmJpdC1jYXB0aW9uO1xyXG4gIH1cclxuXHJcbiAgJW9yYml0LWNvbnRyb2wge1xyXG4gICAgQGluY2x1ZGUgb3JiaXQtY29udHJvbDtcclxuICB9XHJcblxyXG4gIC5vcmJpdC1wcmV2aW91cyB7XHJcbiAgICBAZXh0ZW5kICVvcmJpdC1jb250cm9sO1xyXG4gICAgQGluY2x1ZGUgb3JiaXQtcHJldmlvdXM7XHJcbiAgfVxyXG5cclxuICAub3JiaXQtbmV4dCB7XHJcbiAgICBAZXh0ZW5kICVvcmJpdC1jb250cm9sO1xyXG4gICAgQGluY2x1ZGUgb3JiaXQtbmV4dDtcclxuICB9XHJcblxyXG4gIC5vcmJpdC1idWxsZXRzIHtcclxuICAgIEBpbmNsdWRlIG9yYml0LWJ1bGxldHM7XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBwYWdpbmF0aW9uXHJcbi8vLy9cclxuXHJcbi8vLyBGb250IHNpemUgb2YgcGFnaW5hdGlvbiBpdGVtcy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kcGFnaW5hdGlvbi1mb250LXNpemU6IHJlbS1jYWxjKDE0KSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGJvdHRvbSBtYXJnaW4gb2YgdGhlIHBhZ2luYXRpb24gb2JqZWN0LlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRwYWdpbmF0aW9uLW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luICFkZWZhdWx0O1xyXG5cclxuLy8vIFRleHQgY29sb3Igb2YgcGFnaW5hdGlvbiBpdGVtcy5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRwYWdpbmF0aW9uLWl0ZW0tY29sb3I6ICRibGFjayAhZGVmYXVsdDtcclxuXHJcbi8vLyBQYWRkaW5nIGluc2lkZSBvZiBwYWdpbmF0aW9uIGl0ZW1zLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRwYWdpbmF0aW9uLWl0ZW0tcGFkZGluZzogcmVtLWNhbGMoMyAxMCkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gUmlnaHQgbWFyZ2luIHRvIHNlcGFyYXRlIHBhZ2luYXRpb24gaXRlbXMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHBhZ2luYXRpb24taXRlbS1zcGFjaW5nOiByZW0tY2FsYygxKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IHJhZGl1cyBmb3IgcGFnaW5hdGlvbiBpdGVtcy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kcGFnaW5hdGlvbi1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xyXG5cclxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgcGFnaW5hdGlvbiBpdGVtcyBvbiBob3Zlci5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRwYWdpbmF0aW9uLWl0ZW0tYmFja2dyb3VuZC1ob3ZlcjogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBwYWdpbmF0aW9uIGl0ZW0gZm9yIHRoZSBjdXJyZW50IHBhZ2UuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kcGFnaW5hdGlvbi1pdGVtLWJhY2tncm91bmQtY3VycmVudDogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XHJcblxyXG4vLy8gVGV4dCBjb2xvciBvZiB0aGUgcGFnaW5hdGlvbiBpdGVtIGZvciB0aGUgY3VycmVudCBwYWdlLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJHBhZ2luYXRpb24taXRlbS1jb2xvci1jdXJyZW50OiAkd2hpdGUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gVGV4dCBjb2xvciBvZiBhIGRpc2FibGVkIHBhZ2luYXRpb24gaXRlbS5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRwYWdpbmF0aW9uLWl0ZW0tY29sb3ItZGlzYWJsZWQ6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcclxuXHJcbi8vLyBDb2xvciBvZiB0aGUgZWxsaXBzaXMgaW4gYSBwYWdpbmF0aW9uIG1lbnUuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kcGFnaW5hdGlvbi1lbGxpcHNpcy1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xyXG5cclxuLy8vIElmIGBmYWxzZWAsIGRvbid0IGRpc3BsYXkgcGFnZSBudW1iZXIgbGlua3Mgb24gbW9iaWxlLCBvbmx5IG5leHQvcHJldmlvdXMgbGlua3NcclxuLy8vIGFuZCBvcHRpb25hbGx5IGN1cnJlbnQgcGFnZSBudW1iZXIuXHJcbi8vLyBAdHlwZSBCb29sZWFuXHJcbiRwYWdpbmF0aW9uLW1vYmlsZS1pdGVtczogZmFsc2UgIWRlZmF1bHQ7XHJcblxyXG4vLy8gSWYgYHRydWVgLCBkaXNwbGF5IHRoZSBjdXJyZW50IHBhZ2UgbnVtYmVyIG9uIG1vYmlsZSBldmVuIGlmIGAkcGFnaW5hdGlvbi1tb2JpbGUtaXRlbXNgIGlzIHNldCB0byBgZmFsc2VgLlxyXG4vLy8gVGhpcyBwYXJhbWV0ZXIgd2lsbCBvbmx5IG92ZXJyaWRlIHRoZSB2aXNpYmlsaXR5IHNldHRpbmcgb2YgdGhlIGN1cnJlbnQgaXRlbSBmb3IgYCRwYWdpbmF0aW9uLW1vYmlsZS1pdGVtczogZmFsc2U7YCxcclxuLy8vIGl0IHdpbGwgbm90IGFmZmVjdCB0aGUgY3VycmVudCBwYWdlIG51bWJlciB2aXNpYmlsaXR5IHdoZW4gYCRwYWdpbmF0aW9uLW1vYmlsZS1pdGVtc2AgaXMgc2V0IHRvIGB0cnVlYC5cclxuLy8vIEB0eXBlIEJvb2xlYW5cclxuJHBhZ2luYXRpb24tbW9iaWxlLWN1cnJlbnQtaXRlbTogZmFsc2UgIWRlZmF1bHQ7XHJcblxyXG4vLy8gSWYgYHRydWVgLCBhcnJvd3MgYXJlIGFkZGVkIHRvIHRoZSBuZXh0IGFuZCBwcmV2aW91cyBsaW5rcyBvZiBwYWdpbmF0aW9uLlxyXG4vLy8gQHR5cGUgQm9vbGVhblxyXG4kcGFnaW5hdGlvbi1hcnJvd3M6IHRydWUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgcGFnaW5hdGlvbiBjb250YWluZXIuIEFwcGx5IHRoaXMgdG8gYSBgPHVsPmAuXHJcbkBtaXhpbiBwYWdpbmF0aW9uLWNvbnRhaW5lciAoXHJcbiAgJG1hcmdpbi1ib3R0b206ICRwYWdpbmF0aW9uLW1hcmdpbi1ib3R0b20sXHJcbiAgJGZvbnQtc2l6ZTogJHBhZ2luYXRpb24tZm9udC1zaXplLFxyXG4gICRzcGFjaW5nOiAkcGFnaW5hdGlvbi1pdGVtLXNwYWNpbmcsXHJcbiAgJHJhZGl1czogJHBhZ2luYXRpb24tcmFkaXVzLFxyXG4gICRjb2xvcjogJHBhZ2luYXRpb24taXRlbS1jb2xvcixcclxuICAkcGFkZGluZzogJHBhZ2luYXRpb24taXRlbS1wYWRkaW5nLFxyXG4gICRiYWNrZ3JvdW5kLWhvdmVyOiAkcGFnaW5hdGlvbi1pdGVtLWJhY2tncm91bmQtaG92ZXJcclxuKSB7XHJcbiAgQGluY2x1ZGUgY2xlYXJmaXg7XHJcbiAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogMDtcclxuICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLWJvdHRvbTtcclxuXHJcbiAgLy8gTGlzdCBpdGVtXHJcbiAgbGkge1xyXG4gICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICRzcGFjaW5nO1xyXG4gICAgYm9yZGVyLXJhZGl1czogJHJhZGl1cztcclxuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZTtcclxuXHJcbiAgICBAaWYgJHBhZ2luYXRpb24tbW9iaWxlLWl0ZW1zIHtcclxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgfVxyXG4gICAgQGVsc2Uge1xyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG5cclxuICAgICAgJjpsYXN0LWNoaWxkLFxyXG4gICAgICAmOmZpcnN0LWNoaWxkIHtcclxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIEBpZiAkcGFnaW5hdGlvbi1tb2JpbGUtY3VycmVudC1pdGVtIHtcclxuICAgICAgICAmLmN1cnJlbnQge1xyXG4gICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcclxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFBhZ2UgbGlua3NcclxuICBhLFxyXG4gIGJ1dHRvbiB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHBhZGRpbmc6ICRwYWRkaW5nO1xyXG4gICAgYm9yZGVyLXJhZGl1czogJHJhZGl1cztcclxuICAgIGNvbG9yOiAkY29sb3I7XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kLWhvdmVyO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgY3VycmVudCBwYWdpbmF0aW9uIGl0ZW0uIEFwcGx5IHRoaXMgdG8gYW4gYDxhPmAuXHJcbkBtaXhpbiBwYWdpbmF0aW9uLWl0ZW0tY3VycmVudCAoXHJcbiAgJHBhZGRpbmc6ICRwYWdpbmF0aW9uLWl0ZW0tcGFkZGluZyxcclxuICAkYmFja2dyb3VuZC1jdXJyZW50OiAkcGFnaW5hdGlvbi1pdGVtLWJhY2tncm91bmQtY3VycmVudCxcclxuICAkY29sb3ItY3VycmVudDogJHBhZ2luYXRpb24taXRlbS1jb2xvci1jdXJyZW50XHJcbikge1xyXG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xyXG4gIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kLWN1cnJlbnQ7XHJcbiAgY29sb3I6ICRjb2xvci1jdXJyZW50O1xyXG4gIGN1cnNvcjogZGVmYXVsdDtcclxufVxyXG5cclxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIGRpc2FibGVkIHBhZ2luYXRpb24gaXRlbS4gQXBwbHkgdGhpcyB0byBhbiBgPGE+YC5cclxuQG1peGluIHBhZ2luYXRpb24taXRlbS1kaXNhYmxlZCAoXHJcbiAgJHBhZGRpbmc6ICRwYWdpbmF0aW9uLWl0ZW0tcGFkZGluZyxcclxuICAkY29sb3I6ICRwYWdpbmF0aW9uLWl0ZW0tY29sb3ItZGlzYWJsZWRcclxuKSB7XHJcbiAgcGFkZGluZzogJHBhZGRpbmc7XHJcbiAgY29sb3I6ICRjb2xvcjtcclxuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG5cclxuICAmOmhvdmVyIHtcclxuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gIH1cclxufVxyXG5cclxuLy8vIEFkZHMgc3R5bGVzIGZvciBhbiBlbGxpcHNpcyBmb3IgdXNlIGluIGEgcGFnaW5hdGlvbiBsaXN0LlxyXG5AbWl4aW4gcGFnaW5hdGlvbi1lbGxpcHNpcyAoXHJcbiAgJHBhZGRpbmc6ICRwYWdpbmF0aW9uLWl0ZW0tcGFkZGluZyxcclxuICAkY29sb3I6ICRwYWdpbmF0aW9uLWVsbGlwc2lzLWNvbG9yXHJcbikge1xyXG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xyXG4gIGNvbnRlbnQ6ICdcXDIwMjYnO1xyXG4gIGNvbG9yOiAkY29sb3I7XHJcbn1cclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLXBhZ2luYXRpb24ge1xyXG4gIC5wYWdpbmF0aW9uIHtcclxuICAgIEBpbmNsdWRlIHBhZ2luYXRpb24tY29udGFpbmVyO1xyXG5cclxuICAgIC5jdXJyZW50IHtcclxuICAgICAgQGluY2x1ZGUgcGFnaW5hdGlvbi1pdGVtLWN1cnJlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLmRpc2FibGVkIHtcclxuICAgICAgQGluY2x1ZGUgcGFnaW5hdGlvbi1pdGVtLWRpc2FibGVkO1xyXG4gICAgfVxyXG5cclxuICAgIC5lbGxpcHNpczo6YWZ0ZXIge1xyXG4gICAgICBAaW5jbHVkZSBwYWdpbmF0aW9uLWVsbGlwc2lzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGlmICRwYWdpbmF0aW9uLWFycm93cyB7XHJcbiAgICAucGFnaW5hdGlvbi1wcmV2aW91cyBhOjpiZWZvcmUsXHJcbiAgICAucGFnaW5hdGlvbi1wcmV2aW91cy5kaXNhYmxlZDo6YmVmb3JlIHtcclxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogMC41cmVtO1xyXG4gICAgICBjb250ZW50OiAnXFwwMGFiJztcclxuICAgIH1cclxuXHJcbiAgICAucGFnaW5hdGlvbi1uZXh0IGE6OmFmdGVyLFxyXG4gICAgLnBhZ2luYXRpb24tbmV4dC5kaXNhYmxlZDo6YWZ0ZXIge1xyXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06IDAuNXJlbTtcclxuICAgICAgY29udGVudDogJ1xcMDBiYic7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBwcm9ncmVzcyBiYXIgY29udGFpbmVyLlxyXG5AbWl4aW4gcHJvZ3Jlc3MtY29udGFpbmVyIHtcclxuICBoZWlnaHQ6ICRwcm9ncmVzcy1oZWlnaHQ7XHJcbiAgbWFyZ2luLWJvdHRvbTogJHByb2dyZXNzLW1hcmdpbi1ib3R0b207XHJcbiAgYm9yZGVyLXJhZGl1czogJHByb2dyZXNzLXJhZGl1cztcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkcHJvZ3Jlc3MtYmFja2dyb3VuZDtcclxufVxyXG5cclxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgaW5uZXIgbWV0ZXIgb2YgYSBwcm9ncmVzcyBiYXIuXHJcbkBtaXhpbiBwcm9ncmVzcy1tZXRlciB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG4gIHdpZHRoOiAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogJHByb2dyZXNzLW1ldGVyLWJhY2tncm91bmQ7XHJcblxyXG4gIEBpZiBoYXMtdmFsdWUoJHByb2dyZXNzLXJhZGl1cykge1xyXG4gICAgYm9yZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRleHQgaW4gdGhlIHByb2dyZXNzIG1ldGVyLlxyXG5AbWl4aW4gcHJvZ3Jlc3MtbWV0ZXItdGV4dCB7XHJcbiAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyO1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICBtYXJnaW46IDA7XHJcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xyXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gIGNvbG9yOiAkd2hpdGU7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuXHJcbiAgQGlmIGhhcy12YWx1ZSgkcHJvZ3Jlc3MtcmFkaXVzKSB7XHJcbiAgICBib3JkZXItcmFkaXVzOiAkcHJvZ3Jlc3MtcmFkaXVzO1xyXG4gIH1cclxufVxyXG5cclxuQG1peGluIGZvdW5kYXRpb24tcHJvZ3Jlc3MtYmFyIHtcclxuICAvLyBQcm9ncmVzcyBiYXJcclxuICAucHJvZ3Jlc3Mge1xyXG4gICAgQGluY2x1ZGUgcHJvZ3Jlc3MtY29udGFpbmVyO1xyXG5cclxuICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGZvdW5kYXRpb24tcGFsZXR0ZSB7XHJcbiAgICAgICYuI3skbmFtZX0ge1xyXG4gICAgICAgIC5wcm9ncmVzcy1tZXRlciB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBJbm5lciBtZXRlclxyXG4gIC5wcm9ncmVzcy1tZXRlciB7XHJcbiAgICBAaW5jbHVkZSBwcm9ncmVzcy1tZXRlcjtcclxuICB9XHJcblxyXG4gIC8vIElubmVyIG1ldGVyIHRleHRcclxuICAucHJvZ3Jlc3MtbWV0ZXItdGV4dCB7XHJcbiAgICBAaW5jbHVkZSBwcm9ncmVzcy1tZXRlci10ZXh0O1xyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgcmV2ZWFsXHJcbi8vLy9cclxuXHJcbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3Igb2YgYSBtb2RhbC5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRyZXZlYWwtYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgd2lkdGggb2YgYSBtb2RhbCwgd2l0aCBubyBjbGFzcyBhcHBsaWVkLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRyZXZlYWwtd2lkdGg6IDYwMHB4ICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgbWF4aW11bSB3aWR0aCBvZiBhIG1vZGFsLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRyZXZlYWwtbWF4LXdpZHRoOiAkZ2xvYmFsLXdpZHRoICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgcGFkZGluZyBpbnNpZGUgYSBtb2RhbC5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kcmV2ZWFsLXBhZGRpbmc6ICRnbG9iYWwtcGFkZGluZyAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGJvcmRlciBhcm91bmQgYSBtb2RhbC5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kcmV2ZWFsLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IHJhZGl1cyBmb3IgbW9kYWwuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHJldmVhbC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xyXG5cclxuLy8vIHotaW5kZXggZm9yIG1vZGFscy4gVGhlIG92ZXJsYXkgdXNlcyB0aGlzIHZhbHVlLCB3aGlsZSB0aGUgbW9kYWwgaXRzZWxmIHVzZXMgdGhpcyB2YWx1ZSBwbHVzIG9uZS5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kcmV2ZWFsLXppbmRleDogMTAwNSAhZGVmYXVsdDtcclxuXHJcbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIG1vZGFsIG92ZXJsYXlzLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJHJldmVhbC1vdmVybGF5LWJhY2tncm91bmQ6IHJnYmEoJGJsYWNrLCAwLjQ1KSAhZGVmYXVsdDtcclxuXHJcblxyXG4vLyBQbGFjZWhvbGRlciBzZWxlY3RvciBmb3IgbWVkaXVtLWFuZC11cCBtb2RhbHNcclxuLy8gUHJldmVudHMgZHVwbGljYXRlIENTUyB3aGVuIGRlZmluaW5nIG11bHRpcGxlIFJldmVhbCBzaXplc1xyXG5AaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xyXG4gIC8vICVyZXZlYWwtY2VudGVyZWQge1xyXG4gICAgcmlnaHQ6IGF1dG87XHJcbiAgICBsZWZ0OiBhdXRvO1xyXG4gICAgbWFyZ2luOiAwIGF1dG87XHJcbiAgLy8gfVxyXG59XHJcblxyXG5cclxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIG1vZGFsIG92ZXJsYXkuXHJcbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFja2dyb3VuZCBbJHJldmVhbC1vdmVybGF5LWJhY2tncm91bmRdIC0gQmFja2dyb3VuZCBjb2xvciBvZiB0aGUgb3ZlcmxheS5cclxuQG1peGluIHJldmVhbC1vdmVybGF5KCRiYWNrZ3JvdW5kOiAkcmV2ZWFsLW92ZXJsYXktYmFja2dyb3VuZCkge1xyXG4gIHBvc2l0aW9uOiBmaXhlZDtcclxuICB0b3A6IDA7XHJcbiAgcmlnaHQ6IDA7XHJcbiAgYm90dG9tOiAwO1xyXG4gIGxlZnQ6IDA7XHJcbiAgei1pbmRleDogJHJldmVhbC16aW5kZXg7XHJcblxyXG4gIGRpc3BsYXk6IG5vbmU7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XHJcbiAgb3ZlcmZsb3cteTogc2Nyb2xsO1xyXG59XHJcblxyXG4vLy8gQWRkcyBiYXNlIHN0eWxlcyBmb3IgYSBtb2RhbC5cclxuQG1peGluIHJldmVhbC1tb2RhbC1iYXNlIHtcclxuICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XHJcbiAgei1pbmRleDogJHJldmVhbC16aW5kZXggKyAxO1xyXG4gIC8vIFdvcmthcm91bmQgYW5kcm9pZCBicm93c2VyIHotaW5kZXggYnVnXHJcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xyXG5cclxuICBkaXNwbGF5OiBub25lO1xyXG4gIHBhZGRpbmc6ICRyZXZlYWwtcGFkZGluZztcclxuXHJcbiAgYm9yZGVyOiAkcmV2ZWFsLWJvcmRlcjtcclxuICBib3JkZXItcmFkaXVzOiAkcmV2ZWFsLXJhZGl1cztcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkcmV2ZWFsLWJhY2tncm91bmQ7XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XHJcbiAgICBtaW4taGVpZ2h0OiAwO1xyXG4gIH1cclxuXHJcbiAgLy8gTWFrZSBzdXJlIHJvd3MgZG9uJ3QgaGF2ZSBhIG1pbi13aWR0aCBvbiB0aGVtXHJcbiAgLmNvbHVtbiB7XHJcbiAgICBtaW4td2lkdGg6IDA7XHJcbiAgfVxyXG5cclxuICAvLyBTdHJpcCBtYXJnaW5zIGZyb20gdGhlIGxhc3QgaXRlbSBpbiB0aGUgbW9kYWxcclxuICA+IDpsYXN0LWNoaWxkIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gQWRqdXN0cyB0aGUgd2lkdGggb2YgYSBtb2RhbC5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGggLSBXaWR0aCBvZiB0aGUgbW9kYWwuIEdlbmVyYWxseSBhIHBlcmNlbnRhZ2UuXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJG1heC13aWR0aCBbJHJldmVhbC1tYXgtd2lkdGhdIC0gTWF4aW11bSB3aWR0aCBvZiB0aGUgbW9kYWwuXHJcbkBtaXhpbiByZXZlYWwtbW9kYWwtd2lkdGgoXHJcbiAgJHdpZHRoOiAkcmV2ZWFsLXdpZHRoLFxyXG4gICRtYXgtd2lkdGg6ICRyZXZlYWwtbWF4LXdpZHRoXHJcbikge1xyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XHJcbiAgICAvLyBAZXh0ZW5kICVyZXZlYWwtY2VudGVyZWQ7XHJcbiAgICB3aWR0aDogJHdpZHRoO1xyXG4gICAgbWF4LXdpZHRoOiAkbWF4LXdpZHRoO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIENyZWF0ZXMgYSBmdWxsLXNjcmVlbiBtb2RhbCwgd2hpY2ggc3RyZXRjaGVzIHRoZSBmdWxsIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIHdpbmRvdy5cclxuQG1peGluIHJldmVhbC1tb2RhbC1mdWxsc2NyZWVuIHtcclxuICB0b3A6IDA7XHJcbiAgbGVmdDogMDtcclxuXHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgbWF4LXdpZHRoOiBub25lO1xyXG4gIGhlaWdodDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMHZoOyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLWR1cGxpY2F0ZS1wcm9wZXJ0aWVzXHJcbiAgbWluLWhlaWdodDogMTAwdmg7XHJcbiAgbWFyZ2luLWxlZnQ6IDA7XHJcblxyXG4gIGJvcmRlcjogMDtcclxuICBib3JkZXItcmFkaXVzOiAwO1xyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1yZXZlYWwge1xyXG4gIC8vIFtUT0RPXSBJcyB0aGlzIG5lY2Vzc2FyeT9cclxuICBib2R5LmlzLXJldmVhbC1vcGVuIHsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1xdWFsaWZ5aW5nLWVsZW1lbnRzXHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgLy8gaHRtbCBnZXRzIHRoaXMgY2xhc3Mgb25seSBpbiBpT1NcclxuICBodG1sLmlzLXJldmVhbC1vcGVuLFxyXG4gIGh0bWwuaXMtcmV2ZWFsLW9wZW4gYm9keSB7XHJcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIHBvc2l0aW9uOiBmaXhlZDtcclxuICAgIHVzZXItc2VsZWN0OiBub25lO1xyXG4gIH1cclxuXHJcbiAgLy8gT3ZlcmxheVxyXG4gIC5yZXZlYWwtb3ZlcmxheSB7XHJcbiAgICBAaW5jbHVkZSByZXZlYWwtb3ZlcmxheTtcclxuICB9XHJcblxyXG4gIC8vIE1vZGFsIGNvbnRhaW5lclxyXG4gIC5yZXZlYWwge1xyXG4gICAgQGluY2x1ZGUgcmV2ZWFsLW1vZGFsLWJhc2U7XHJcbiAgICBAaW5jbHVkZSByZXZlYWwtbW9kYWwtd2lkdGgoJHJldmVhbC13aWR0aCk7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICB0b3A6IDEwMHB4O1xyXG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xyXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XHJcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xyXG5cclxuICAgIC8vIFJlbW92ZSBwYWRkaW5nXHJcbiAgICAmLmNvbGxhcHNlIHtcclxuICAgICAgcGFkZGluZzogMDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTaXppbmcgY2xhc3Nlc1xyXG4gICAgJi50aW55ICB7IEBpbmNsdWRlIHJldmVhbC1tb2RhbC13aWR0aCgzMCUpOyB9XHJcbiAgICAmLnNtYWxsIHsgQGluY2x1ZGUgcmV2ZWFsLW1vZGFsLXdpZHRoKDUwJSk7IH1cclxuICAgICYubGFyZ2UgeyBAaW5jbHVkZSByZXZlYWwtbW9kYWwtd2lkdGgoOTAlKTsgfVxyXG5cclxuICAgIC8vIEZ1bGwtc2NyZWVuIG1vZGVcclxuICAgICYuZnVsbCB7XHJcbiAgICAgIEBpbmNsdWRlIHJldmVhbC1tb2RhbC1mdWxsc2NyZWVuO1xyXG4gICAgfVxyXG5cclxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJC16Zi16ZXJvLWJyZWFrcG9pbnQgb25seSkge1xyXG4gICAgICBAaW5jbHVkZSByZXZlYWwtbW9kYWwtZnVsbHNjcmVlbjtcclxuICAgIH1cclxuXHJcbiAgICAmLndpdGhvdXQtb3ZlcmxheSB7XHJcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8gW1RPRE9dIENoZWNrIGhvdyBwbHVnaW4gY29uZmlybXMgZGlzYWJsZWQgb3IgdmVydGljYWwgc3RhdHVzXHJcbi8vIFtUT0RPXSBDaGVjayBpZiB0cmFuc2l0aW9uOiBhbGw7IGlzIG5lY2Vzc2FyeVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIHNsaWRlclxyXG4vLy8vXHJcblxyXG4vLy8gRGVmYXVsdCBzbGlkZXIgd2lkdGggb2YgYSB2ZXJ0aWNhbCBzbGlkZXIuIChEb2Vzbid0IGFwcGx5IHRvIHRoZSBuYXRpdmUgc2xpZGVyLilcclxuLy8vIEB0eXBlIE51bWJlclxyXG4kc2xpZGVyLXdpZHRoLXZlcnRpY2FsOiAwLjVyZW0gIWRlZmF1bHQ7XHJcblxyXG4vLy8gVHJhbnNpdGlvbiBwcm9wZXJ0aWVzIHRvIGFwcGx5IHRvIHRoZSBzbGlkZXIgaGFuZGxlIGFuZCBmaWxsLiAoRG9lc24ndCBhcHBseSB0byB0aGUgbmF0aXZlIHNsaWRlci4pXHJcbi8vLyBAdHlwZSBUcmFuc2l0aW9uXHJcbiRzbGlkZXItdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQWRkcyB0aGUgZ2VuZXJhbCBzdHlsZXMgZm9yIHNsaWRlcnMuXHJcbkBtaXhpbiBzbGlkZXItY29udGFpbmVyIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgaGVpZ2h0OiAkc2xpZGVyLWhlaWdodDtcclxuICBtYXJnaW4tdG9wOiAxLjI1cmVtO1xyXG4gIG1hcmdpbi1ib3R0b206IDIuMjVyZW07XHJcblxyXG4gIGJhY2tncm91bmQtY29sb3I6ICRzbGlkZXItYmFja2dyb3VuZDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XHJcbiAgdG91Y2gtYWN0aW9uOiBub25lO1xyXG59XHJcblxyXG4vLy8gQWRkcyB0aGUgZ2VuZXJhbCBzdHlsZXMgZm9yIGFjdGl2ZSBmaWxsIGZvciBzbGlkZXJzLlxyXG5AbWl4aW4gc2xpZGVyLWZpbGwge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB0b3A6IDA7XHJcbiAgbGVmdDogMDtcclxuXHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIG1heC13aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6ICRzbGlkZXItaGVpZ2h0O1xyXG5cclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2xpZGVyLWZpbGwtYmFja2dyb3VuZDtcclxuICB0cmFuc2l0aW9uOiAkc2xpZGVyLXRyYW5zaXRpb247XHJcblxyXG4gICYuaXMtZHJhZ2dpbmcge1xyXG4gICAgdHJhbnNpdGlvbjogYWxsIDBzIGxpbmVhcjtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBBZGRzIHRoZSBnZW5lcmFsIHN0eWxlcyBmb3IgdGhlIHNsaWRlciBoYW5kbGVzLlxyXG5AbWl4aW4gc2xpZGVyLWhhbmRsZSB7XHJcbiAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xyXG4gIEBpbmNsdWRlIHZlcnRpY2FsLWNlbnRlcjtcclxuICBsZWZ0OiAwO1xyXG4gIHotaW5kZXg6IDE7XHJcblxyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICB3aWR0aDogJHNsaWRlci1oYW5kbGUtd2lkdGg7XHJcbiAgaGVpZ2h0OiAkc2xpZGVyLWhhbmRsZS1oZWlnaHQ7XHJcblxyXG4gIGJvcmRlci1yYWRpdXM6ICRzbGlkZXItcmFkaXVzO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICRzbGlkZXItaGFuZGxlLWJhY2tncm91bmQ7XHJcbiAgdHJhbnNpdGlvbjogJHNsaWRlci10cmFuc2l0aW9uO1xyXG4gIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xyXG5cclxuICAmOmhvdmVyIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHNjYWxlLWNvbG9yKCRzbGlkZXItaGFuZGxlLWJhY2tncm91bmQsICRsaWdodG5lc3M6IC0xNSUpO1xyXG4gIH1cclxuXHJcbiAgJi5pcy1kcmFnZ2luZyB7XHJcbiAgICB0cmFuc2l0aW9uOiBhbGwgMHMgbGluZWFyO1xyXG4gIH1cclxufVxyXG5cclxuQG1peGluIHNsaWRlci1kaXNhYmxlZCB7XHJcbiAgb3BhY2l0eTogJHNsaWRlci1vcGFjaXR5LWRpc2FibGVkO1xyXG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbn1cclxuXHJcbkBtaXhpbiBzbGlkZXItdmVydGljYWwge1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICB3aWR0aDogJHNsaWRlci13aWR0aC12ZXJ0aWNhbDtcclxuICBoZWlnaHQ6IDEyLjVyZW07XHJcbiAgbWFyZ2luOiAwIDEuMjVyZW07XHJcbiAgdHJhbnNmb3JtOiBzY2FsZSgxLCAtMSk7XHJcblxyXG4gIC5zbGlkZXItZmlsbCB7XHJcbiAgICB0b3A6IDA7XHJcbiAgICB3aWR0aDogJHNsaWRlci13aWR0aC12ZXJ0aWNhbDtcclxuICAgIG1heC1oZWlnaHQ6IDEwMCU7XHJcbiAgfVxyXG5cclxuICAuc2xpZGVyLWhhbmRsZSB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDA7XHJcbiAgICBsZWZ0OiA1MCU7XHJcbiAgICB3aWR0aDogJHNsaWRlci1oYW5kbGUtaGVpZ2h0O1xyXG4gICAgaGVpZ2h0OiAkc2xpZGVyLWhhbmRsZS13aWR0aDtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcclxuICB9XHJcbn1cclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLXNsaWRlciB7XHJcbiAgLy8gQ29udGFpbmVyXHJcbiAgLnNsaWRlciB7XHJcbiAgICBAaW5jbHVkZSBzbGlkZXItY29udGFpbmVyO1xyXG4gIH1cclxuXHJcbiAgLy8gRmlsbCBhcmVhXHJcbiAgLnNsaWRlci1maWxsIHtcclxuICAgIEBpbmNsdWRlIHNsaWRlci1maWxsO1xyXG4gIH1cclxuXHJcbiAgLy8gRHJhZ2dhYmxlIGhhbmRsZVxyXG4gIC5zbGlkZXItaGFuZGxlIHtcclxuICAgIEBpbmNsdWRlIHNsaWRlci1oYW5kbGU7XHJcbiAgfVxyXG5cclxuICAvLyBEaXNhYmxlZCBzdGF0ZVxyXG4gIC5zbGlkZXIuZGlzYWJsZWQsXHJcbiAgLnNsaWRlcltkaXNhYmxlZF0ge1xyXG4gICAgQGluY2x1ZGUgc2xpZGVyLWRpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgLy8gVmVydGljYWwgc2xpZGVyXHJcbiAgLnNsaWRlci52ZXJ0aWNhbCB7XHJcbiAgICBAaW5jbHVkZSBzbGlkZXItdmVydGljYWw7XHJcbiAgfVxyXG5cclxuICAvLyBSVEwgc3VwcG9ydFxyXG4gIEBpZiAkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09IHJ0bCB7XHJcbiAgICAuc2xpZGVyOm5vdCgudmVydGljYWwpIHtcclxuICAgICAgdHJhbnNmb3JtOiBzY2FsZSgtMSwgMSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLXN0aWNreSB7XHJcbiAgLnN0aWNreS1jb250YWluZXIge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIH1cclxuXHJcbiAgLnN0aWNreSB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICB6LWluZGV4OiAwO1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcclxuICB9XHJcblxyXG4gIC5zdGlja3kuaXMtc3R1Y2sge1xyXG4gICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgei1pbmRleDogNTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG5cclxuICAgICYuaXMtYXQtdG9wIHtcclxuICAgICAgdG9wOiAwO1xyXG4gICAgfVxyXG5cclxuICAgICYuaXMtYXQtYm90dG9tIHtcclxuICAgICAgYm90dG9tOiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnN0aWNreS5pcy1hbmNob3JlZCB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICByaWdodDogYXV0bztcclxuICAgIGxlZnQ6IGF1dG87XHJcblxyXG4gICAgJi5pcy1hdC1ib3R0b20ge1xyXG4gICAgICBib3R0b206IDA7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBzd2l0Y2hcclxuLy8vL1xyXG5cclxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgYSBzd2l0Y2guXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kc3dpdGNoLWJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcclxuXHJcbi8vLyBCYWNrZ3JvdW5kIGFjdGl2ZSBjb2xvciBvZiBhIHN3aXRjaC5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRzd2l0Y2gtYmFja2dyb3VuZC1hY3RpdmU6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xyXG5cclxuLy8vIEhlaWdodCBvZiBhIHN3aXRjaCwgd2l0aCBubyBjbGFzcyBhcHBsaWVkLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRzd2l0Y2gtaGVpZ2h0OiAycmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIEhlaWdodCBvZiBhIHN3aXRjaCB3aXRoIC50aW55IGNsYXNzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRzd2l0Y2gtaGVpZ2h0LXRpbnk6IDEuNXJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBIZWlnaHQgb2YgYSBzd2l0Y2ggd2l0aCAuc21hbGwgY2xhc3MuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHN3aXRjaC1oZWlnaHQtc21hbGw6IDEuNzVyZW0gIWRlZmF1bHQ7XHJcblxyXG4vLy8gSGVpZ2h0IG9mIGEgc3dpdGNoIHdpdGggLmxhcmdlIGNsYXNzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRzd2l0Y2gtaGVpZ2h0LWxhcmdlOiAyLjVyZW0gIWRlZmF1bHQ7XHJcblxyXG4vLy8gQm9yZGVyIHJhZGl1cyBvZiB0aGUgc3dpdGNoXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHN3aXRjaC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xyXG5cclxuLy8vIGJvcmRlciBhcm91bmQgYSBtb2RhbC5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kc3dpdGNoLW1hcmdpbjogJGdsb2JhbC1tYXJnaW4gIWRlZmF1bHQ7XHJcblxyXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIHN3aXRjaCBjb250YWluZXIgYW5kIHBhZGRsZS5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRzd2l0Y2gtcGFkZGxlLWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBTcGFjaW5nIGJldHdlZW4gYSBzd2l0Y2ggcGFkZGxlIGFuZCB0aGUgZWRnZSBvZiB0aGUgYm9keS5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kc3dpdGNoLXBhZGRsZS1vZmZzZXQ6IDAuMjVyZW0gIWRlZmF1bHQ7XHJcblxyXG4vLy8gYm9yZGVyIHJhZGl1cyBvZiB0aGUgc3dpdGNoIHBhZGRsZVxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRzd2l0Y2gtcGFkZGxlLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XHJcblxyXG4vLy8gc3dpdGNoIHRyYW5zaXRpb24uXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHN3aXRjaC1wYWRkbGUtdHJhbnNpdGlvbjogYWxsIDAuMjVzIGVhc2Utb3V0ICFkZWZhdWx0O1xyXG5cclxuLy8gbWFrZSB0aGVtIHZhcmlhYmxlc1xyXG4vLyBhc2sgYWJvdXQgYWNjZXNzaWJpbGl0eSBvbiBsYWJlbFxyXG4vLyBjaGFuZ2UgY2xhc3MgbmFtZSBmb3IgdGV4dFxyXG5cclxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIHN3aXRjaCBjb250YWluZXIuIEFwcGx5IHRoaXMgdG8gYSBjb250YWluZXIgY2xhc3MuXHJcbkBtaXhpbiBzd2l0Y2gtY29udGFpbmVyIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgbWFyZ2luLWJvdHRvbTogJHN3aXRjaC1tYXJnaW47XHJcbiAgb3V0bGluZTogMDtcclxuXHJcbiAgLy8gVGhlc2UgcHJvcGVydGllcyBjYXNjYWRlIGRvd24gdG8gdGhlIHN3aXRjaCB0ZXh0XHJcbiAgZm9udC1zaXplOiByZW0tY2FsYygxNCk7XHJcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgY29sb3I6ICR3aGl0ZTtcclxuXHJcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XHJcbn1cclxuXHJcbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBzd2l0Y2ggaW5wdXQuIEFwcGx5IHRoaXMgdG8gYW4gYDxpbnB1dD5gIHdpdGhpbiBhIHN3aXRjaC5cclxuQG1peGluIHN3aXRjaC1pbnB1dCB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgb3BhY2l0eTogMDtcclxufVxyXG5cclxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgYmFja2dyb3VuZCBhbmQgcGFkZGxlIG9mIGEgc3dpdGNoLiBBcHBseSB0aGlzIHRvIGEgYDxsYWJlbD5gIHdpdGhpbiBhIHN3aXRjaC5cclxuQG1peGluIHN3aXRjaC1wYWRkbGUge1xyXG4gICRzd2l0Y2gtd2lkdGg6ICRzd2l0Y2gtaGVpZ2h0ICogMjtcclxuICAkcGFkZGxlLWhlaWdodDogJHN3aXRjaC1oZWlnaHQgLSAoJHN3aXRjaC1wYWRkbGUtb2Zmc2V0ICogMik7XHJcbiAgJHBhZGRsZS13aWR0aDogJHN3aXRjaC1oZWlnaHQgLSAoJHN3aXRjaC1wYWRkbGUtb2Zmc2V0ICogMik7XHJcbiAgJHBhZGRsZS1hY3RpdmUtb2ZmZXN0OiAkc3dpdGNoLXdpZHRoIC0gJHBhZGRsZS13aWR0aCAtICRzd2l0Y2gtcGFkZGxlLW9mZnNldDtcclxuXHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG4gIHdpZHRoOiAkc3dpdGNoLXdpZHRoO1xyXG4gIGhlaWdodDogJHN3aXRjaC1oZWlnaHQ7XHJcblxyXG4gIGJvcmRlci1yYWRpdXM6ICRzd2l0Y2gtcmFkaXVzO1xyXG4gIGJhY2tncm91bmQ6ICRzd2l0Y2gtYmFja2dyb3VuZDtcclxuICB0cmFuc2l0aW9uOiAkc3dpdGNoLXBhZGRsZS10cmFuc2l0aW9uO1xyXG5cclxuICAvLyBSZXNldHRpbmcgdGhlc2UgPGxhYmVsPiBwcmVzZXRzIHNvIHR5cGUgc3R5bGVzIGNhc2NhZGUgZG93blxyXG4gIGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xyXG4gIGNvbG9yOiBpbmhlcml0O1xyXG5cclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcblxyXG4gIC8vIE5lZWRlZCB0byBvdmVycmlkZSBzcGVjaWZpY2l0eVxyXG4gIGlucHV0ICsgJiB7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgfVxyXG5cclxuICAvLyBUaGUgcGFkZGxlIGl0c2VsZlxyXG4gICY6OmFmdGVyIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogJHN3aXRjaC1wYWRkbGUtb2Zmc2V0O1xyXG4gICAgI3skZ2xvYmFsLWxlZnR9OiAkc3dpdGNoLXBhZGRsZS1vZmZzZXQ7XHJcblxyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICB3aWR0aDogJHBhZGRsZS13aWR0aDtcclxuICAgIGhlaWdodDogJHBhZGRsZS1oZWlnaHQ7XHJcblxyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcclxuICAgIGJvcmRlci1yYWRpdXM6ICRzd2l0Y2gtcGFkZGxlLXJhZGl1cztcclxuICAgIGJhY2tncm91bmQ6ICRzd2l0Y2gtcGFkZGxlLWJhY2tncm91bmQ7XHJcbiAgICB0cmFuc2l0aW9uOiAkc3dpdGNoLXBhZGRsZS10cmFuc2l0aW9uO1xyXG4gICAgY29udGVudDogJyc7XHJcbiAgfVxyXG5cclxuICAvLyBDaGFuZ2UgdGhlIHZpc3VhbCBzdHlsZSB3aGVuIHRoZSBzd2l0Y2ggaXMgYWN0aXZlXHJcbiAgaW5wdXQ6Y2hlY2tlZCB+ICYge1xyXG4gICAgYmFja2dyb3VuZDogJHN3aXRjaC1iYWNrZ3JvdW5kLWFjdGl2ZTtcclxuXHJcbiAgICAmOjphZnRlciB7XHJcbiAgICAgICN7JGdsb2JhbC1sZWZ0fTogJHBhZGRsZS1hY3RpdmUtb2ZmZXN0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5wdXQ6Zm9jdXMgfiAmIHtcclxuICAgIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBBZGRzIGJhc2Ugc3R5bGVzIGZvciBhY3RpdmUvaW5hY3RpdmUgdGV4dCBpbnNpZGUgYSBzd2l0Y2guIEFwcGx5IHRoaXMgdG8gdGV4dCBlbGVtZW50cyBpbnNpZGUgdGhlIHN3aXRjaCBgPGxhYmVsPmAuXHJcbkBtaXhpbiBzd2l0Y2gtdGV4dCB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHRvcDogNTAlO1xyXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcclxufVxyXG5cclxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgYWN0aXZlIHN0YXRlIHRleHQgd2l0aGluIGEgc3dpdGNoLlxyXG5AbWl4aW4gc3dpdGNoLXRleHQtYWN0aXZlIHtcclxuICAjeyRnbG9iYWwtbGVmdH06IDglO1xyXG4gIGRpc3BsYXk6IG5vbmU7XHJcblxyXG4gIGlucHV0OmNoZWNrZWQgKyBsYWJlbCA+ICYge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBpbmFjdGl2ZSBzdGF0ZSB0ZXh0IHdpdGhpbiBhIHN3aXRjaC5cclxuQG1peGluIHN3aXRjaC10ZXh0LWluYWN0aXZlIHtcclxuICAjeyRnbG9iYWwtcmlnaHR9OiAxNSU7XHJcblxyXG4gIGlucHV0OmNoZWNrZWQgKyBsYWJlbCA+ICYge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBDaGFuZ2VzIHRoZSBzaXplIG9mIGEgc3dpdGNoIGJ5IG1vZGlmeWluZyB0aGUgc2l6ZSBvZiB0aGUgYm9keSBhbmQgcGFkZGxlLiBBcHBseSB0aGlzIHRvIGEgc3dpdGNoIGNvbnRhaW5lci5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZm9udC1zaXplIFsxcmVtXSAtIEZvbnQgc2l6ZSBvZiBsYWJlbCB0ZXh0IHdpdGhpbiB0aGUgc3dpdGNoLlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzd2l0Y2gtaGVpZ2h0IFsycmVtXSAtIEhlaWdodCBvZiB0aGUgc3dpdGNoIGJvZHkuXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJHBhZGRsZS1vZmZzZXQgWzAuMjVyZW1dIC0gU3BhY2luZyBiZXR3ZWVuIHRoZSBzd2l0Y2ggcGFkZGxlIGFuZCB0aGUgZWRnZSBvZiB0aGUgc3dpdGNoIGJvZHkuXHJcbkBtaXhpbiBzd2l0Y2gtc2l6ZShcclxuICAkZm9udC1zaXplOiAxcmVtLFxyXG4gICRzd2l0Y2gtaGVpZ2h0OiAycmVtLFxyXG4gICRwYWRkbGUtb2Zmc2V0OiAwLjI1cmVtXHJcbikge1xyXG5cclxuICAkc3dpdGNoLXdpZHRoOiAkc3dpdGNoLWhlaWdodCAqIDI7XHJcbiAgJHBhZGRsZS13aWR0aDogJHN3aXRjaC1oZWlnaHQgLSAoJHBhZGRsZS1vZmZzZXQgKiAyKTtcclxuICAkcGFkZGxlLWhlaWdodDogJHN3aXRjaC1oZWlnaHQgLSAoJHBhZGRsZS1vZmZzZXQgKiAyKTtcclxuICAkcGFkZGxlLWFjdGl2ZS1vZmZlc3Q6ICRzd2l0Y2gtd2lkdGggLSAkcGFkZGxlLXdpZHRoIC0gJHBhZGRsZS1vZmZzZXQ7XHJcblxyXG4gIGhlaWdodDogJHN3aXRjaC1oZWlnaHQ7XHJcblxyXG4gIC5zd2l0Y2gtcGFkZGxlIHtcclxuICAgIHdpZHRoOiAkc3dpdGNoLXdpZHRoO1xyXG4gICAgaGVpZ2h0OiAkc3dpdGNoLWhlaWdodDtcclxuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZTtcclxuICB9XHJcblxyXG4gIC5zd2l0Y2gtcGFkZGxlOjphZnRlciB7XHJcbiAgICB0b3A6ICRwYWRkbGUtb2Zmc2V0O1xyXG4gICAgI3skZ2xvYmFsLWxlZnR9OiAkcGFkZGxlLW9mZnNldDtcclxuICAgIHdpZHRoOiAkcGFkZGxlLXdpZHRoO1xyXG4gICAgaGVpZ2h0OiAkcGFkZGxlLWhlaWdodDtcclxuICB9XHJcblxyXG4gIGlucHV0OmNoZWNrZWQgfiAuc3dpdGNoLXBhZGRsZTo6YWZ0ZXIge1xyXG4gICAgI3skZ2xvYmFsLWxlZnR9OiAkcGFkZGxlLWFjdGl2ZS1vZmZlc3Q7XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1zd2l0Y2gge1xyXG4gIC8vIENvbnRhaW5lciBjbGFzc1xyXG4gIC5zd2l0Y2gge1xyXG4gICAgaGVpZ2h0OiAkc3dpdGNoLWhlaWdodDtcclxuICAgIEBpbmNsdWRlIHN3aXRjaC1jb250YWluZXI7XHJcbiAgfVxyXG5cclxuICAvLyA8aW5wdXQ+IGVsZW1lbnRcclxuICAuc3dpdGNoLWlucHV0IHtcclxuICAgIEBpbmNsdWRlIHN3aXRjaC1pbnB1dDtcclxuICB9XHJcblxyXG4gIC8vIDxsYWJlbD4gZWxlbWVudFxyXG4gIC5zd2l0Y2gtcGFkZGxlIHtcclxuICAgIEBpbmNsdWRlIHN3aXRjaC1wYWRkbGU7XHJcbiAgfVxyXG5cclxuICAvLyBCYXNlIGxhYmVsIHRleHQgc3R5bGVzXHJcbiAgJXN3aXRjaC10ZXh0IHtcclxuICAgIEBpbmNsdWRlIHN3aXRjaC10ZXh0O1xyXG4gIH1cclxuXHJcbiAgLy8gQWN0aXZlIGxhYmVsIHRleHQgc3R5bGVzXHJcbiAgLnN3aXRjaC1hY3RpdmUge1xyXG4gICAgQGV4dGVuZCAlc3dpdGNoLXRleHQ7XHJcbiAgICBAaW5jbHVkZSBzd2l0Y2gtdGV4dC1hY3RpdmU7XHJcbiAgfVxyXG5cclxuICAvLyBJbmFjdGl2ZSBsYWJlbCB0ZXh0IHN0eWxlc1xyXG4gIC5zd2l0Y2gtaW5hY3RpdmUge1xyXG4gICAgQGV4dGVuZCAlc3dpdGNoLXRleHQ7XHJcbiAgICBAaW5jbHVkZSBzd2l0Y2gtdGV4dC1pbmFjdGl2ZTtcclxuICB9XHJcblxyXG4gIC8vIFN3aXRjaCBzaXplc1xyXG4gIC5zd2l0Y2gudGlueSB7XHJcbiAgICBAaW5jbHVkZSBzd2l0Y2gtc2l6ZShyZW0tY2FsYygxMCksICRzd2l0Y2gtaGVpZ2h0LXRpbnksICRzd2l0Y2gtcGFkZGxlLW9mZnNldCk7XHJcbiAgfVxyXG5cclxuICAuc3dpdGNoLnNtYWxsIHtcclxuICAgIEBpbmNsdWRlIHN3aXRjaC1zaXplKHJlbS1jYWxjKDEyKSwgJHN3aXRjaC1oZWlnaHQtc21hbGwsICRzd2l0Y2gtcGFkZGxlLW9mZnNldCk7XHJcbiAgfVxyXG5cclxuICAuc3dpdGNoLmxhcmdlIHtcclxuICAgIEBpbmNsdWRlIHN3aXRjaC1zaXplKHJlbS1jYWxjKDE2KSwgJHN3aXRjaC1oZWlnaHQtbGFyZ2UsICRzd2l0Y2gtcGFkZGxlLW9mZnNldCk7XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vIHNhc3MtbGludDpkaXNhYmxlIGZvcmNlLWVsZW1lbnQtbmVzdGluZywgbm8tcXVhbGlmeWluZy1lbGVtZW50c1xyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIHRhYmxlXHJcbi8vLy9cclxuXHJcbi8vLyBEZWZhdWx0IGNvbG9yIGZvciB0YWJsZSBiYWNrZ3JvdW5kLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJHRhYmxlLWJhY2tncm91bmQ6ICR3aGl0ZSAgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBzY2FsZSBmb3IgZGFya2VuaW5nIHRoZSBzdHJpcGVkIHRhYmxlIHJvd3MgYW5kIHRoZSB0YWJsZSBib3JkZXIuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHRhYmxlLWNvbG9yLXNjYWxlOiA1JSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IHN0eWxlIGZvciB0YWJsZSBib3JkZXIuXHJcbi8vLyBAdHlwZSBMaXN0XHJcbiR0YWJsZS1ib3JkZXI6IDFweCBzb2xpZCBzbWFydC1zY2FsZSgkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWNvbG9yLXNjYWxlKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IHBhZGRpbmcgZm9yIHRhYmxlLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiR0YWJsZS1wYWRkaW5nOiByZW0tY2FsYyg4IDEwIDEwKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IHNjYWxlIGZvciBkYXJrZW5pbmcgdGhlIHRhYmxlIHJvd3Mgb24gaG92ZXIuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHRhYmxlLWhvdmVyLXNjYWxlOiAyJSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGNvbG9yIG9mIHN0YW5kYXJkIHJvd3Mgb24gaG92ZXIuXHJcbi8vLyBAdHlwZSBMaXN0XHJcbiR0YWJsZS1yb3ctaG92ZXI6IGRhcmtlbigkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWhvdmVyLXNjYWxlKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGNvbG9yIG9mIHN0cmlwZWQgcm93cyBvbiBob3Zlci5cclxuLy8vIEB0eXBlIExpc3RcclxuJHRhYmxlLXJvdy1zdHJpcGUtaG92ZXI6IGRhcmtlbigkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWNvbG9yLXNjYWxlICsgJHRhYmxlLWhvdmVyLXNjYWxlKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBJZiBgdHJ1ZWAsIHRhYmxlcyBhcmUgc3RyaXBlZCBieSBkZWZhdWx0IGFuZCBhbiAudW5zdHJpcGVkIGNsYXNzIGlzIGNyZWF0ZWQuIElmIGBmYWxzZWAsIGEgLnN0cmlwZWQgY2xhc3MgaXMgY3JlYXRlZC5cclxuLy8vIEB0eXBlIEJvb2xlYW5cclxuJHRhYmxlLWlzLXN0cmlwZWQ6IHRydWUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIGZvciBzdHJpcGVkIHJvd3MuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kdGFibGUtc3RyaXBlZC1iYWNrZ3JvdW5kOiBzbWFydC1zY2FsZSgkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWNvbG9yLXNjYWxlKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IHZhbHVlIGZvciBzaG93aW5nIHRoZSBzdHJpcGUgb24gcm93cyBvZiB0aGUgdGFibGVzLCBleGNsdWRpbmcgdGhlIGhlYWRlciBhbmQgZm9vdGVyLiBJZiBldmVuLCB0aGUgZXZlbiByb3dzIHdpbGwgaGF2ZSBhIGJhY2tncm91bmQgY29sb3IuIElmIG9kZCwgdGhlIG9kZCByb3dzIHdpbGwgaGF2ZSBhIGJhY2tncm91bmQgY29sb3IuIElmIGVtcHR5LCBvciBhbnkgb3RoZXIgdmFsdWUsIHRoZSB0YWJsZSByb3dzIHdpbGwgaGF2ZSBubyBzdHJpcGluZy5cclxuLy8vIEB0eXBlIEtleXdvcmRcclxuJHRhYmxlLXN0cmlwZTogZXZlbiAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGNvbG9yIGZvciBoZWFkZXIgYmFja2dyb3VuZC5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiR0YWJsZS1oZWFkLWJhY2tncm91bmQ6IHNtYXJ0LXNjYWxlKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUgLyAyKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGNvbG9yIG9mIGhlYWRlciByb3dzIG9uIGhvdmVyLlxyXG4vLy8gQHR5cGUgTGlzdFxyXG4kdGFibGUtaGVhZC1yb3ctaG92ZXI6IGRhcmtlbigkdGFibGUtaGVhZC1iYWNrZ3JvdW5kLCAkdGFibGUtaG92ZXItc2NhbGUpICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgY29sb3IgZm9yIGZvb3RlciBiYWNrZ3JvdW5kLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJHRhYmxlLWZvb3QtYmFja2dyb3VuZDogc21hcnQtc2NhbGUoJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBjb2xvciBvZiBmb290ZXIgcm93cyBvbiBob3Zlci5cclxuLy8vIEB0eXBlIExpc3RcclxuJHRhYmxlLWZvb3Qtcm93LWhvdmVyOiBkYXJrZW4oJHRhYmxlLWZvb3QtYmFja2dyb3VuZCwgJHRhYmxlLWhvdmVyLXNjYWxlKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGZvbnQgY29sb3IgZm9yIGhlYWRlci5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiR0YWJsZS1oZWFkLWZvbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3IgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBmb250IGNvbG9yIGZvciBmb290ZXIuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kdGFibGUtZm9vdC1mb250LWNvbG9yOiAkYm9keS1mb250LWNvbG9yICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgdmFsdWUgZm9yIHNob3dpbmcgdGhlIGhlYWRlciB3aGVuIHVzaW5nIHN0YWNrZWQgdGFibGVzLlxyXG4vLy8gQHR5cGUgQm9vbGVhblxyXG4kc2hvdy1oZWFkZXItZm9yLXN0YWNrZWQ6IGZhbHNlICFkZWZhdWx0O1xyXG5cclxuLy8vIEJyZWFrcG9pbnQgYXQgd2hpY2ggc3RhY2tlZCB0YWJsZSBzd2l0Y2hlcyBmcm9tIG1vYmlsZSB0byBkZXNrdG9wIHZpZXcuXHJcbi8vLyBAdHlwZSBCcmVha3BvaW50XHJcbiR0YWJsZS1zdGFjay1icmVha3BvaW50OiBtZWRpdW0gIWRlZmF1bHQ7XHJcblxyXG5AbWl4aW4gLXpmLXRhYmxlLXN0cmlwZSgkc3RyaXBlOiAkdGFibGUtc3RyaXBlKSB7XHJcbiAgdHIge1xyXG4gICAgLy8gSWYgc3RyaXBlIGlzIHNldCB0byBldmVuLCBkYXJrZW4gdGhlIGV2ZW4gcm93cy5cclxuICAgIEBpZiAkc3RyaXBlID09IGV2ZW4ge1xyXG4gICAgICAmOm50aC1jaGlsZChldmVuKSB7XHJcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMDtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtc3RyaXBlZC1iYWNrZ3JvdW5kO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSWYgc3RyaXBlIGlzIHNldCB0byBvZGQsIGRhcmtlbiB0aGUgb2RkIHJvd3MuXHJcbiAgICBAZWxzZSBpZiAkc3RyaXBlID09IG9kZCB7XHJcbiAgICAgICY6bnRoLWNoaWxkKG9kZCkge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1zdHJpcGVkLWJhY2tncm91bmQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBtaXhpbiAtemYtdGFibGUtdW5zdHJpcGUoKSB7XHJcbiAgdHIge1xyXG4gICAgYm9yZGVyLWJvdHRvbTogMDtcclxuICAgIGJvcmRlci1ib3R0b206ICR0YWJsZS1ib3JkZXI7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtYmFja2dyb3VuZDtcclxuICB9XHJcbn1cclxuXHJcbkBtaXhpbiAtemYtdGFibGUtY2hpbGRyZW4tc3R5bGVzKCRzdHJpcGU6ICR0YWJsZS1zdHJpcGUsICRpcy1zdHJpcGVkOiAkdGFibGUtaXMtc3RyaXBlZCkge1xyXG4gIHRoZWFkLFxyXG4gIHRib2R5LFxyXG4gIHRmb290IHtcclxuICAgIGJvcmRlcjogJHRhYmxlLWJvcmRlcjtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1iYWNrZ3JvdW5kO1xyXG4gIH1cclxuXHJcbiAgLy8gQ2FwdGlvblxyXG4gIGNhcHRpb24ge1xyXG4gICAgcGFkZGluZzogJHRhYmxlLXBhZGRpbmc7XHJcbiAgICBmb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtYm9sZDtcclxuICB9XHJcblxyXG4gIC8vIFRhYmxlIGhlYWRcclxuICB0aGVhZCB7XHJcbiAgICBiYWNrZ3JvdW5kOiAkdGFibGUtaGVhZC1iYWNrZ3JvdW5kO1xyXG4gICAgY29sb3I6ICR0YWJsZS1oZWFkLWZvbnQtY29sb3I7XHJcbiAgfVxyXG5cclxuICAvLyBUYWJsZSBmb290XHJcbiAgdGZvb3Qge1xyXG4gICAgYmFja2dyb3VuZDogJHRhYmxlLWZvb3QtYmFja2dyb3VuZDtcclxuICAgIGNvbG9yOiAkdGFibGUtZm9vdC1mb250LWNvbG9yO1xyXG4gIH1cclxuXHJcbiAgLy8gVGFibGUgaGVhZCBhbmQgZm9vdFxyXG4gIHRoZWFkLFxyXG4gIHRmb290IHtcclxuICAgIC8vIFJvd3Mgd2l0aGluIGhlYWQgYW5kIGZvb3RcclxuICAgIHRyIHtcclxuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ2VsbHMgd2l0aGluIGhlYWQgYW5kIGZvb3RcclxuICAgIHRoLFxyXG4gICAgdGQge1xyXG4gICAgICBwYWRkaW5nOiAkdGFibGUtcGFkZGluZztcclxuICAgICAgZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQ7XHJcbiAgICAgIHRleHQtYWxpZ246ICN7JGdsb2JhbC1sZWZ0fTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFRhYmxlIHJvd3NcclxuICB0Ym9keSB7XHJcbiAgICB0aCxcclxuICAgIHRkIHtcclxuICAgICAgcGFkZGluZzogJHRhYmxlLXBhZGRpbmc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBJZiB0YWJsZXMgYXJlIHN0cmlwZWRcclxuICBAaWYgJGlzLXN0cmlwZWQgPT0gdHJ1ZSB7XHJcbiAgICB0Ym9keSB7XHJcbiAgICAgIEBpbmNsdWRlIC16Zi10YWJsZS1zdHJpcGUoJHN0cmlwZSk7XHJcbiAgICB9XHJcblxyXG4gICAgJi51bnN0cmlwZWQge1xyXG4gICAgICB0Ym9keSB7XHJcbiAgICAgICAgQGluY2x1ZGUgLXpmLXRhYmxlLXVuc3RyaXBlKCk7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLWJhY2tncm91bmQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIElmIHRhYmxlcyBhcmUgbm90IHN0cmlwZWRcclxuICBAZWxzZSBpZiAkaXMtc3RyaXBlZCA9PSBmYWxzZSB7XHJcbiAgICB0Ym9keSB7XHJcbiAgICAgIEBpbmNsdWRlIC16Zi10YWJsZS11bnN0cmlwZSgpO1xyXG4gICAgfVxyXG5cclxuICAgICYuc3RyaXBlZCB7XHJcbiAgICAgIHRib2R5IHtcclxuICAgICAgICBAaW5jbHVkZSAtemYtdGFibGUtc3RyaXBlKCRzdHJpcGUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gQWRkcyB0aGUgZ2VuZXJhbCBzdHlsZXMgZm9yIHRhYmxlcy5cclxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHN0cmlwZSBbJHRhYmxlLXN0cmlwZV0gLSBVc2VzIGtleXdvcmRzIGV2ZW4sIG9kZCwgb3Igbm9uZSB0byBkYXJrZW4gcm93cyBvZiB0aGUgdGFibGUuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGV2ZW4uXHJcbkBtaXhpbiB0YWJsZShcclxuICAkc3RyaXBlOiAkdGFibGUtc3RyaXBlLFxyXG4gICRuZXN0OiBmYWxzZVxyXG4pIHtcclxuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIG1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luO1xyXG4gIGJvcmRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG5cclxuICBAaWYgJG5lc3Qge1xyXG4gICAgQGluY2x1ZGUgLXpmLXRhYmxlLWNoaWxkcmVuLXN0eWxlcygkc3RyaXBlKTtcclxuICB9XHJcbiAgQGVsc2Uge1xyXG4gICAgQGF0LXJvb3Qge1xyXG4gICAgICBAaW5jbHVkZSAtemYtdGFibGUtY2hpbGRyZW4tc3R5bGVzKCRzdHJpcGUpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8vIEFkZHMgdGhlIGFiaWxpdHkgdG8gaG9yaXpvbnRhbGx5IHNjcm9sbCB0aGUgdGFibGUgd2hlbiB0aGUgY29udGVudCBvdmVyZmxvd3MgaG9yaXpvbnRhbGx5LlxyXG5AbWl4aW4gdGFibGUtc2Nyb2xsIHtcclxuICBkaXNwbGF5OiBibG9jaztcclxuICB3aWR0aDogMTAwJTtcclxuICBvdmVyZmxvdy14OiBhdXRvO1xyXG59XHJcblxyXG4vLy8gU2xpZ2h0bHkgZGFya2VucyB0aGUgdGFibGUgcm93cyBvbiBob3Zlci5cclxuQG1peGluIHRhYmxlLWhvdmVyIHtcclxuICB0aGVhZCB0ciB7XHJcbiAgICAvL0RhcmtlbnMgdGhlIHRhYmxlIGhlYWRlciByb3dzIG9uIGhvdmVyLlxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1oZWFkLXJvdy1ob3ZlcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRmb290IHRyIHtcclxuICAgIC8vRGFya2VucyB0aGUgdGFibGUgZm9vdGVyIHJvd3Mgb24gaG92ZXIuXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLWZvb3Qtcm93LWhvdmVyO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdGJvZHkgdHIge1xyXG4gICAgLy9EYXJrZW5zIHRoZSBub24tc3RyaXBlZCB0YWJsZSByb3dzIG9uIGhvdmVyLlxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1yb3ctaG92ZXI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaWYgJHRhYmxlLWlzLXN0cmlwZWQgPT0gdHJ1ZSB7XHJcbiAgICAvLyBEYXJrZW5zIHRoZSBldmVuIHN0cmlwZWQgdGFibGUgcm93cy5cclxuICAgIEBpZigkdGFibGUtc3RyaXBlID09IGV2ZW4pIHtcclxuICAgICAgJjpub3QoLnVuc3RyaXBlZCkgdHI6bnRoLW9mLXR5cGUoZXZlbik6aG92ZXIge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1yb3ctc3RyaXBlLWhvdmVyO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRGFya2VucyB0aGUgb2RkIHN0cmlwZWQgdGFibGUgcm93cy5cclxuICAgIEBlbHNlaWYoJHRhYmxlLXN0cmlwZSA9PSBvZGQpIHtcclxuICAgICAgJjpub3QoLnVuc3RyaXBlZCkgdHI6bnRoLW9mLXR5cGUob2RkKTpob3ZlciB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLXJvdy1zdHJpcGUtaG92ZXI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBlbHNlIGlmICR0YWJsZS1pcy1zdHJpcGVkID09IGZhbHNlIHtcclxuICAgIC8vIERhcmtlbnMgdGhlIGV2ZW4gc3RyaXBlZCB0YWJsZSByb3dzLlxyXG4gICAgQGlmKCR0YWJsZS1zdHJpcGUgPT0gZXZlbikge1xyXG4gICAgICAmLnN0cmlwZWQgdHI6bnRoLW9mLXR5cGUoZXZlbik6aG92ZXIge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1yb3ctc3RyaXBlLWhvdmVyO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRGFya2VucyB0aGUgb2RkIHN0cmlwZWQgdGFibGUgcm93cy5cclxuICAgIEBlbHNlaWYoJHRhYmxlLXN0cmlwZSA9PSBvZGQpIHtcclxuICAgICAgJi5zdHJpcGVkIHRyOm50aC1vZi10eXBlKG9kZCk6aG92ZXIge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1yb3ctc3RyaXBlLWhvdmVyO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgc3RhY2tlZCB0YWJsZS4gVXNlZnVsIGZvciBzbWFsbC1zY3JlZW4gbGF5b3V0cy5cclxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGhlYWRlciBbJHNob3ctaGVhZGVyLWZvci1zdGFja2VkXSAtIFNob3cgdGhlIGZpcnN0IHRoIG9mIGhlYWRlciB3aGVuIHN0YWNrZWQuXHJcbkBtaXhpbiB0YWJsZS1zdGFjaygkaGVhZGVyOiAkc2hvdy1oZWFkZXItZm9yLXN0YWNrZWQpIHtcclxuICBAaWYgJGhlYWRlciB7XHJcbiAgICB0aGVhZCB7XHJcbiAgICAgIHRoIHtcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBAZWxzZSB7XHJcbiAgICB0aGVhZCB7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0Zm9vdCB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gIH1cclxuXHJcbiAgdHIsXHJcbiAgdGgsXHJcbiAgdGQge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgfVxyXG5cclxuICB0ZCB7XHJcbiAgICBib3JkZXItdG9wOiAwO1xyXG4gIH1cclxufVxyXG5cclxuQG1peGluIGZvdW5kYXRpb24tdGFibGUoJG5lc3Q6IGZhbHNlKSB7XHJcbiAgdGFibGUge1xyXG4gICAgQGluY2x1ZGUgdGFibGUoJG5lc3Q6ICRuZXN0KTtcclxuICB9XHJcblxyXG4gIHRhYmxlLnN0YWNrIHtcclxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRhYmxlLXN0YWNrLWJyZWFrcG9pbnQgZG93bikge1xyXG4gICAgICBAaW5jbHVkZSB0YWJsZS1zdGFjaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRhYmxlLnNjcm9sbCB7XHJcbiAgICBAaW5jbHVkZSB0YWJsZS1zY3JvbGw7XHJcbiAgfVxyXG5cclxuICB0YWJsZS5ob3ZlciB7XHJcbiAgICBAaW5jbHVkZSB0YWJsZS1ob3ZlcjtcclxuICB9XHJcblxyXG4gIC50YWJsZS1zY3JvbGwge1xyXG4gICAgb3ZlcmZsb3cteDogYXV0bztcclxuXHJcbiAgICB0YWJsZSB7XHJcbiAgICAgIHdpZHRoOiBhdXRvO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgdGFic1xyXG4vLy8vXHJcblxyXG4vLy8gRGVmYXVsdCBtYXJnaW4gb2YgdGhlIHRhYiBiYXIuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHRhYi1tYXJnaW46IDAgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIG9mIGEgdGFiIGJhci5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiR0YWItYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xyXG5cclxuLy8vIEZvbnQgY29sb3Igb2YgdGFiIGl0ZW0uXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kdGFiLWNvbG9yOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcclxuXHJcbi8vLyBBY3RpdmUgYmFja2dyb3VuZCBjb2xvciBvZiBhIHRhYiBiYXIuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kdGFiLWJhY2tncm91bmQtYWN0aXZlOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcclxuXHJcbi8vLyBBY3RpdmUgZm9udCBjb2xvciBvZiB0YWIgaXRlbS5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiR0YWItYWN0aXZlLWNvbG9yOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcclxuXHJcbi8vLyBGb250IHNpemUgb2YgdGFiIGl0ZW1zLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiR0YWItaXRlbS1mb250LXNpemU6IHJlbS1jYWxjKDEyKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3Igb24gaG92ZXIgZm9yIGl0ZW1zIGluIGEgTWVudS5cclxuJHRhYi1pdGVtLWJhY2tncm91bmQtaG92ZXI6ICR3aGl0ZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IHBhZGRpbmcgb2YgYSB0YWIgaXRlbS5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kdGFiLWl0ZW0tcGFkZGluZzogMS4yNXJlbSAxLjVyZW0gIWRlZmF1bHQ7XHJcblxyXG4vLy8gTWF4aW11bSBudW1iZXIgb2YgYGV4cGFuZC1uYCBjbGFzc2VzIHRvIGluY2x1ZGUgaW4gdGhlIENTUy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kdGFiLWV4cGFuZC1tYXg6IDYgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRhYiBjb250ZW50LlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJHRhYi1jb250ZW50LWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGJvcmRlciBjb2xvciBvZiB0YWIgY29udGVudC5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiR0YWItY29udGVudC1ib3JkZXI6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgdGV4dCBjb2xvciBvZiB0YWIgY29udGVudC5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiR0YWItY29udGVudC1jb2xvcjogJGJvZHktZm9udC1jb2xvciAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IHBhZGRpbmcgZm9yIHRhYiBjb250ZW50LlxyXG4vLy8gQHR5cGUgTnVtYmVyIHwgTGlzdFxyXG4kdGFiLWNvbnRlbnQtcGFkZGluZzogMXJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSB0YWIgY29udGFpbmVyLiBBcHBseSB0aGlzIHRvIGEgYDx1bD5gLlxyXG5AbWl4aW4gdGFicy1jb250YWluZXIgKFxyXG4gICRtYXJnaW46ICR0YWItbWFyZ2luLFxyXG4gICRiYWNrZ3JvdW5kOiAkdGFiLWJhY2tncm91bmQsXHJcbiAgJGJvcmRlci1jb2xvcjogJHRhYi1jb250ZW50LWJvcmRlclxyXG4pIHtcclxuICBAaW5jbHVkZSBjbGVhcmZpeDtcclxuICBtYXJnaW46ICRtYXJnaW47XHJcbiAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlci1jb2xvcjtcclxuICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcclxuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XHJcbn1cclxuXHJcbi8vLyBBdWdtZW50cyBhIHRhYiBjb250YWluZXIgdG8gaGF2ZSB2ZXJ0aWNhbCB0YWJzLiBVc2UgdGhpcyBpbiBjb25qdW5jdGlvbiB3aXRoIGB0YWJzLWNvbnRhaW5lcigpYC5cclxuQG1peGluIHRhYnMtY29udGFpbmVyLXZlcnRpY2FsIHtcclxuICA+IGxpIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgZmxvYXQ6IG5vbmU7XHJcbiAgICB3aWR0aDogYXV0bztcclxuICB9XHJcbn1cclxuXHJcbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGxpbmtzIHdpdGhpbiBhIHRhYiBjb250YWluZXIuIEFwcGx5IHRoaXMgdG8gdGhlIGA8bGk+YCBlbGVtZW50cyBpbnNpZGUgYSB0YWIgY29udGFpbmVyLlxyXG5AbWl4aW4gdGFicy10aXRsZSAoXHJcbiAgJHBhZGRpbmc6ICR0YWItaXRlbS1wYWRkaW5nLFxyXG4gICRmb250LXNpemU6ICR0YWItaXRlbS1mb250LXNpemUsXHJcbiAgJGNvbG9yOiAkdGFiLWNvbG9yLFxyXG4gICRjb2xvci1hY3RpdmU6ICR0YWItYWN0aXZlLWNvbG9yLFxyXG4gICRiYWNrZ3JvdW5kLWhvdmVyOiAkdGFiLWl0ZW0tYmFja2dyb3VuZC1ob3ZlcixcclxuICAkYmFja2dyb3VuZC1hY3RpdmU6ICR0YWItYmFja2dyb3VuZC1hY3RpdmVcclxuKSB7XHJcbiAgZmxvYXQ6ICN7JGdsb2JhbC1sZWZ0fTtcclxuXHJcbiAgPiBhIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgcGFkZGluZzogJHBhZGRpbmc7XHJcbiAgICBmb250LXNpemU6ICRmb250LXNpemU7XHJcbiAgICBsaW5lLWhlaWdodDogMTtcclxuICAgIGNvbG9yOiAkY29sb3I7XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kLWhvdmVyO1xyXG4gICAgICBjb2xvcjogc2NhbGUtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAtMTQlKTtcclxuICAgIH1cclxuXHJcbiAgICAmOmZvY3VzLFxyXG4gICAgJlthcmlhLXNlbGVjdGVkPSd0cnVlJ10ge1xyXG4gICAgICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZC1hY3RpdmU7XHJcbiAgICAgIGNvbG9yOiAkY29sb3ItYWN0aXZlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgd3JhcHBlciB0aGF0IHN1cnJvdW5kcyBhIHRhYiBncm91cCdzIGNvbnRlbnQgcGFuZXMuXHJcbkBtaXhpbiB0YWJzLWNvbnRlbnQgKFxyXG4gICRiYWNrZ3JvdW5kOiAkdGFiLWNvbnRlbnQtYmFja2dyb3VuZCxcclxuICAkY29sb3I6ICR0YWItY29udGVudC1jb2xvcixcclxuICAkYm9yZGVyLWNvbG9yOiAkdGFiLWNvbnRlbnQtYm9yZGVyXHJcbikge1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItY29sb3I7XHJcbiAgYm9yZGVyLXRvcDogMDtcclxuICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcclxuICBjb2xvcjogJGNvbG9yO1xyXG4gIHRyYW5zaXRpb246IGFsbCAwLjVzIGVhc2U7XHJcbn1cclxuXHJcbi8vLyBBdWdtZW50cyBhIHRhYiBjb250ZW50IGNvbnRhaW5lciB0byBoYXZlIGEgdmVydGljYWwgc3R5bGUsIGJ5IHNoaWZ0aW5nIHRoZSBib3JkZXIgYXJvdW5kLiBVc2UgdGhpcyBpbiBjb25qdW5jdGlvbiB3aXRoIGB0YWJzLWNvbnRlbnQoKWAuXHJcbkBtaXhpbiB0YWJzLWNvbnRlbnQtdmVydGljYWwgKFxyXG4gICRib3JkZXItY29sb3I6ICR0YWItY29udGVudC1ib3JkZXJcclxuKSB7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlci1jb2xvcjtcclxuICBib3JkZXItI3skZ2xvYmFsLWxlZnR9OiAwO1xyXG59XHJcblxyXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGFuIGluZGl2aWR1YWwgdGFiIGNvbnRlbnQgcGFuZWwgd2l0aGluIHRoZSB0YWIgY29udGVudCBjb250YWluZXIuXHJcbkBtaXhpbiB0YWJzLXBhbmVsIChcclxuICAkcGFkZGluZzogJHRhYi1jb250ZW50LXBhZGRpbmdcclxuKSB7XHJcbiAgZGlzcGxheTogbm9uZTtcclxuICBwYWRkaW5nOiAkcGFkZGluZztcclxuXHJcbiAgJi5pcy1hY3RpdmUge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi10YWJzIHtcclxuICAudGFicyB7XHJcbiAgICBAaW5jbHVkZSB0YWJzLWNvbnRhaW5lcjtcclxuICB9XHJcblxyXG4gIC8vIFZlcnRpY2FsXHJcbiAgLnRhYnMudmVydGljYWwge1xyXG4gICAgQGluY2x1ZGUgdGFicy1jb250YWluZXItdmVydGljYWw7XHJcbiAgfVxyXG5cclxuICAvLyBTaW1wbGVcclxuICAudGFicy5zaW1wbGUge1xyXG4gICAgPiBsaSA+IGEge1xyXG4gICAgICBwYWRkaW5nOiAwO1xyXG5cclxuICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFByaW1hcnkgY29sb3JcclxuICAudGFicy5wcmltYXJ5IHtcclxuICAgIGJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yO1xyXG5cclxuICAgID4gbGkgPiBhIHtcclxuICAgICAgY29sb3I6IGNvbG9yLXBpY2stY29udHJhc3QoJHByaW1hcnktY29sb3IpO1xyXG5cclxuICAgICAgJjpob3ZlcixcclxuICAgICAgJjpmb2N1cyB7XHJcbiAgICAgICAgYmFja2dyb3VuZDogc21hcnQtc2NhbGUoJHByaW1hcnktY29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAudGFicy10aXRsZSB7XHJcbiAgICBAaW5jbHVkZSB0YWJzLXRpdGxlO1xyXG4gIH1cclxuXHJcbiAgLnRhYnMtY29udGVudCB7XHJcbiAgICBAaW5jbHVkZSB0YWJzLWNvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICAudGFicy1jb250ZW50LnZlcnRpY2FsIHtcclxuICAgIEBpbmNsdWRlIHRhYnMtY29udGVudC12ZXJ0aWNhbDtcclxuICB9XHJcblxyXG4gIC50YWJzLXBhbmVsIHtcclxuICAgIEBpbmNsdWRlIHRhYnMtcGFuZWw7XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCB0aXRsZS1iYXJcclxuLy8vL1xyXG5cclxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgYSB0aXRsZSBiYXIuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kdGl0bGViYXItYmFja2dyb3VuZDogJGJsYWNrICFkZWZhdWx0O1xyXG5cclxuLy8vIENvbG9yIG9mIHRleHQgaW5zaWRlIGEgdGl0bGUgYmFyLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJHRpdGxlYmFyLWNvbG9yOiAkd2hpdGUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gUGFkZGluZyBpbnNpZGUgYSB0aXRsZSBiYXIuXHJcbi8vLyBAdHlwZSBMZW5ndGhcclxuJHRpdGxlYmFyLXBhZGRpbmc6IDAuNXJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBGb250IHdlaWdodCBvZiB0ZXh0IGluc2lkZSBhIHRpdGxlIGJhci5cclxuLy8vIEB0eXBlIFdlaWdodFxyXG4kdGl0bGViYXItdGV4dC1mb250LXdlaWdodDogYm9sZCAhZGVmYXVsdDtcclxuXHJcbi8vLyBDb2xvciBvZiBtZW51IGljb25zIGluc2lkZSBhIHRpdGxlIGJhci5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiR0aXRsZWJhci1pY29uLWNvbG9yOiAkd2hpdGUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQ29sb3Igb2YgbWVudSBpY29ucyBpbnNpZGUgYSB0aXRsZSBiYXIgb24gaG92ZXIuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kdGl0bGViYXItaWNvbi1jb2xvci1ob3ZlcjogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xyXG5cclxuLy8vIFNwYWNpbmcgYmV0d2VlbiB0aGUgbWVudSBpY29uIGFuZCB0ZXh0IGluc2lkZSBhIHRpdGxlIGJhci5cclxuLy8vIEB0eXBlIExlbmd0aFxyXG4kdGl0bGViYXItaWNvbi1zcGFjaW5nOiAwLjI1cmVtICFkZWZhdWx0O1xyXG5cclxuQG1peGluIGZvdW5kYXRpb24tdGl0bGUtYmFyIHtcclxuICAudGl0bGUtYmFyIHtcclxuICAgIHBhZGRpbmc6ICR0aXRsZWJhci1wYWRkaW5nO1xyXG4gICAgYmFja2dyb3VuZDogJHRpdGxlYmFyLWJhY2tncm91bmQ7XHJcbiAgICBjb2xvcjogJHRpdGxlYmFyLWNvbG9yO1xyXG5cclxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICB9XHJcbiAgICBAZWxzZSB7XHJcbiAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xyXG4gICAgfVxyXG5cclxuICAgIC5tZW51LWljb24ge1xyXG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkdGl0bGViYXItaWNvbi1zcGFjaW5nO1xyXG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJHRpdGxlYmFyLWljb24tc3BhY2luZztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xyXG4gICAgLnRpdGxlLWJhci1sZWZ0LFxyXG4gICAgLnRpdGxlLWJhci1yaWdodCB7XHJcbiAgICAgIGZsZXg6IDEgMSAwcHg7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgemVyby11bml0XHJcbiAgICB9XHJcblxyXG4gICAgLnRpdGxlLWJhci1yaWdodCB7XHJcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xyXG4gICAgfVxyXG4gIH1cclxuICBAZWxzZSB7XHJcbiAgICAudGl0bGUtYmFyLWxlZnQge1xyXG4gICAgICBmbG9hdDogbGVmdDtcclxuICAgIH1cclxuXHJcbiAgICAudGl0bGUtYmFyLXJpZ2h0IHtcclxuICAgICAgZmxvYXQ6IHJpZ2h0O1xyXG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC50aXRsZS1iYXItdGl0bGUge1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICAgIGZvbnQtd2VpZ2h0OiAkdGl0bGViYXItdGV4dC1mb250LXdlaWdodDtcclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIHRvcC1iYXJcclxuLy8vL1xyXG5cclxuLy8vIFBhZGRpbmcgZm9yIHRoZSB0b3AgYmFyLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiR0b3BiYXItcGFkZGluZzogMC41cmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIEJhY2tncm91bmQgY29sb3IgZm9yIHRoZSB0b3AgYmFyLiBUaGlzIGNvbG9yIGFsc28gY2FzY2FkZXMgdG8gbWVudXMgd2l0aGluIHRoZSB0b3AgYmFyLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJHRvcGJhci1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcclxuXHJcbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIHN1Ym1lbnVzIHdpdGhpbiB0aGUgdG9wIGJhci4gVXNlZnVsbCBpZiAkdG9wYmFyLWJhY2tncm91bmQgaXMgdHJhbnNwYXJlbnQuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kdG9wYmFyLXN1Ym1lbnUtYmFja2dyb3VuZDogJHRvcGJhci1iYWNrZ3JvdW5kICFkZWZhdWx0O1xyXG5cclxuLy8vIFNwYWNpbmcgZm9yIHRoZSB0b3AgYmFyIHRpdGxlLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiR0b3BiYXItdGl0bGUtc3BhY2luZzogMC41cmVtIDFyZW0gMC41cmVtIDAgIWRlZmF1bHQ7XHJcblxyXG4vLy8gTWF4aW11bSB3aWR0aCBvZiBgPGlucHV0PmAgZWxlbWVudHMgaW5zaWRlIHRoZSB0b3AgYmFyLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiR0b3BiYXItaW5wdXQtd2lkdGg6IDIwMHB4ICFkZWZhdWx0O1xyXG5cclxuLy8vIEJyZWFrcG9pbnQgYXQgd2hpY2ggdG9wIGJhciBzd2l0Y2hlcyBmcm9tIG1vYmlsZSB0byBkZXNrdG9wIHZpZXcuXHJcbi8vLyBAdHlwZSBCcmVha3BvaW50XHJcbiR0b3BiYXItdW5zdGFjay1icmVha3BvaW50OiBtZWRpdW0gIWRlZmF1bHQ7XHJcblxyXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgdG9wIGJhciBjb250YWluZXIuXHJcbkBtaXhpbiB0b3AtYmFyLWNvbnRhaW5lciB7XHJcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC13cmFwOiBub3dyYXA7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIH1cclxuICBAZWxzZSB7XHJcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcclxuICB9XHJcblxyXG4gIHBhZGRpbmc6ICR0b3BiYXItcGFkZGluZztcclxuXHJcbiAgJixcclxuICB1bCB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdG9wYmFyLWJhY2tncm91bmQ7XHJcbiAgfVxyXG5cclxuICAvLyBDaGVjayBpZiAkdG9wYmFyLWJhY2tncm91bmQgaXMgZGlmZmVybnQgZnJvbSAkdG9wYmFyLWJhY2tncm91bmQtc3VibWVudVxyXG4gIEBpZiAoJHRvcGJhci1iYWNrZ3JvdW5kICE9ICR0b3BiYXItc3VibWVudS1iYWNrZ3JvdW5kKSB7XHJcbiAgICB1bCB1bCB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0b3BiYXItc3VibWVudS1iYWNrZ3JvdW5kO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gUmVzdHJhaW4gd2lkdGggb2YgaW5wdXRzIGJ5IGRlZmF1bHQgdG8gbWFrZSB0aGVtIGVhc2llciB0byBhcnJhbmdlXHJcbiAgaW5wdXQge1xyXG4gICAgbWF4LXdpZHRoOiAkdG9wYmFyLWlucHV0LXdpZHRoO1xyXG4gICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06IDFyZW07XHJcbiAgfVxyXG5cclxuICAvLyBUaGUgYWJvdmUgc3R5bGVzIHNob3VsZG4ndCBhcHBseSB0byBpbnB1dCBncm91cCBmaWVsZHNcclxuICAuaW5wdXQtZ3JvdXAtZmllbGQge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogMDtcclxuICB9XHJcblxyXG4gIGlucHV0LmJ1dHRvbiB7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tcXVhbGlmeWluZy1lbGVtZW50c1xyXG4gICAgd2lkdGg6IGF1dG87XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gTWFrZXMgc2VjdGlvbnMgb2YgYSB0b3AgYmFyIHN0YWNrIG9uIHRvcCBvZiBlYWNoIG90aGVyLlxyXG5AbWl4aW4gdG9wLWJhci1zdGFja2VkIHtcclxuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcclxuICAgIGZsZXgtd3JhcDogd3JhcDtcclxuXHJcbiAgICAvLyBTdWItc2VjdGlvbnNcclxuICAgIC50b3AtYmFyLWxlZnQsXHJcbiAgICAudG9wLWJhci1yaWdodCB7XHJcbiAgICAgIGZsZXg6IDAgMCAxMDAlO1xyXG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBlbHNlIHtcclxuICAgIC8vIFN1Yi1zZWN0aW9uc1xyXG4gICAgLnRvcC1iYXItbGVmdCxcclxuICAgIC50b3AtYmFyLXJpZ2h0IHtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gVW5kb2VzIHRoZSBDU1MgYXBwbGllZCBieSB0aGUgYHRvcC1iYXItc3RhY2tlZCgpYCBtaXhpbi5cclxuQG1peGluIHRvcC1iYXItdW5zdGFjayB7XHJcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcclxuXHJcbiAgICAudG9wLWJhci1sZWZ0IHtcclxuICAgICAgZmxleDogMSAxIGF1dG87XHJcbiAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcclxuICAgIH1cclxuXHJcbiAgICAudG9wLWJhci1yaWdodCB7XHJcbiAgICAgIGZsZXg6IDAgMSBhdXRvO1xyXG4gICAgICBtYXJnaW4tbGVmdDogYXV0bztcclxuICAgIH1cclxuICB9XHJcbiAgQGVsc2Uge1xyXG4gICAgLnRvcC1iYXItbGVmdCxcclxuICAgIC50b3AtYmFyLXJpZ2h0IHtcclxuICAgICAgd2lkdGg6IGF1dG87XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi10b3AtYmFyIHtcclxuICAvLyBUb3AgYmFyIGNvbnRhaW5lclxyXG4gIC50b3AtYmFyIHtcclxuICAgIEBpbmNsdWRlIHRvcC1iYXItY29udGFpbmVyO1xyXG5cclxuICAgIC8vIFN0YWNrIG9uIHNtYWxsIHNjcmVlbnMgYnkgZGVmYXVsdFxyXG4gICAgQGluY2x1ZGUgdG9wLWJhci1zdGFja2VkO1xyXG5cclxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRvcGJhci11bnN0YWNrLWJyZWFrcG9pbnQpIHtcclxuICAgICAgQGluY2x1ZGUgdG9wLWJhci11bnN0YWNrO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEdlbmVyYXRlIGNsYXNzZXMgZm9yIHN0YWNraW5nIG9uIGVhY2ggc2NyZWVuIHNpemUgKGRlZmluZWQgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcylcclxuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xyXG4gICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xyXG4gICAgICAgICYuc3RhY2tlZC1mb3ItI3skc2l6ZX0ge1xyXG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSBkb3duKSB7XHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRvcC1iYXItc3RhY2tlZDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFN1Yi1zZWN0aW9uc1xyXG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xyXG4gICAgLnRvcC1iYXItdGl0bGUge1xyXG4gICAgICBmbGV4OiAwIDAgYXV0bztcclxuICAgICAgbWFyZ2luOiAkdG9wYmFyLXRpdGxlLXNwYWNpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgLnRvcC1iYXItbGVmdCxcclxuICAgIC50b3AtYmFyLXJpZ2h0IHtcclxuICAgICAgZmxleDogMCAwIGF1dG87XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBlbHNlIHtcclxuICAgIC50b3AtYmFyLXRpdGxlIHtcclxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICBmbG9hdDogbGVmdDtcclxuICAgICAgcGFkZGluZzogJHRvcGJhci10aXRsZS1zcGFjaW5nO1xyXG5cclxuICAgICAgLm1lbnUtaWNvbiB7XHJcbiAgICAgICAgYm90dG9tOiAycHg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAudG9wLWJhci1sZWZ0IHtcclxuICAgICAgZmxvYXQ6IGxlZnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLnRvcC1iYXItcmlnaHQge1xyXG4gICAgICBmbG9hdDogcmlnaHQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCB0aHVtYm5haWxcclxuLy8vL1xyXG5cclxuLy8vIEJvcmRlciBhcm91bmQgdGh1bWJuYWlsIGltYWdlcy5cclxuLy8vIEB0eXBlIEJvcmRlclxyXG4kdGh1bWJuYWlsLWJvcmRlcjogc29saWQgNHB4ICR3aGl0ZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBCb3R0b20gbWFyZ2luIGZvciB0aHVtYm5haWwgaW1hZ2VzLlxyXG4vLy8gQHR5cGUgTGVuZ3RoXHJcbiR0aHVtYm5haWwtbWFyZ2luLWJvdHRvbTogJGdsb2JhbC1tYXJnaW4gIWRlZmF1bHQ7XHJcblxyXG4vLy8gQm94IHNoYWRvdyB1bmRlciB0aHVtYm5haWwgaW1hZ2VzLlxyXG4vLy8gQHR5cGUgU2hhZG93XHJcbiR0aHVtYm5haWwtc2hhZG93OiAwIDAgMCAxcHggcmdiYSgkYmxhY2ssIDAuMikgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQm94IHNoYWRvdyB1bmRlciB0aHVtYm5haWwgaW1hZ2VzLlxyXG4vLy8gQHR5cGUgU2hhZG93XHJcbiR0aHVtYm5haWwtc2hhZG93LWhvdmVyOiAwIDAgNnB4IDFweCByZ2JhKCRwcmltYXJ5LWNvbG9yLCAwLjUpICFkZWZhdWx0O1xyXG5cclxuLy8vIFRyYW5zaXRpb24gcHJvcHJ0aWVzIGZvciB0aHVtYm5haWwgaW1hZ2VzLlxyXG4vLy8gQHR5cGUgVHJhbnNpdGlvblxyXG4kdGh1bWJuYWlsLXRyYW5zaXRpb246IGJveC1zaGFkb3cgMjAwbXMgZWFzZS1vdXQgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCByYWRpdXMgZm9yIHRodW1ibmFpbCBpbWFnZXMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHRodW1ibmFpbC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xyXG5cclxuLy8vIEFkZHMgdGh1bWJuYWlsIHN0eWxlcyB0byBhbiBlbGVtZW50LlxyXG5AbWl4aW4gdGh1bWJuYWlsIHtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gIG1hcmdpbi1ib3R0b206ICR0aHVtYm5haWwtbWFyZ2luLWJvdHRvbTtcclxuXHJcbiAgYm9yZGVyOiAkdGh1bWJuYWlsLWJvcmRlcjtcclxuICBib3JkZXItcmFkaXVzOiAkdGh1bWJuYWlsLXJhZGl1cztcclxuICBib3gtc2hhZG93OiAkdGh1bWJuYWlsLXNoYWRvdztcclxuXHJcbiAgbGluZS1oZWlnaHQ6IDA7XHJcbn1cclxuXHJcbkBtaXhpbiB0aHVtYm5haWwtbGluayB7XHJcbiAgdHJhbnNpdGlvbjogJHRodW1ibmFpbC10cmFuc2l0aW9uO1xyXG5cclxuICAmOmhvdmVyLFxyXG4gICY6Zm9jdXMge1xyXG4gICAgYm94LXNoYWRvdzogJHRodW1ibmFpbC1zaGFkb3ctaG92ZXI7XHJcbiAgfVxyXG5cclxuICBpbWFnZSB7XHJcbiAgICBib3gtc2hhZG93OiBub25lO1xyXG4gIH1cclxufVxyXG5cclxuQG1peGluIGZvdW5kYXRpb24tdGh1bWJuYWlsIHtcclxuICAudGh1bWJuYWlsIHtcclxuICAgIEBpbmNsdWRlIHRodW1ibmFpbDtcclxuICB9XHJcblxyXG4gIGEudGh1bWJuYWlsIHtcclxuICAgIEBpbmNsdWRlIHRodW1ibmFpbC1saW5rO1xyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgdG9vbHRpcFxyXG4vLy8vXHJcblxyXG4vLy8gRGVmYXVsdCBjdXJzb3Igb2YgdGhlIGRlZmluZWQgdGVybS5cclxuLy8vIEB0eXBlIEtleXdvcmRcclxuJGhhcy10aXAtY3Vyc29yOiBoZWxwICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgZm9udCB3ZWlnaHQgb2YgdGhlIGRlZmluZWQgdGVybS5cclxuLy8vIEB0eXBlIEtleXdvcmQgfCBOdW1iZXJcclxuJGhhcy10aXAtZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBib3JkZXIgYm90dG9tIG9mIHRoZSBkZWZpbmVkIHRlcm0uXHJcbi8vLyBAdHlwZSBMaXN0XHJcbiRoYXMtdGlwLWJvcmRlci1ib3R0b206IGRvdHRlZCAxcHggJGRhcmstZ3JheSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGNvbG9yIG9mIHRoZSB0b29sdGlwIGJhY2tncm91bmQuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBjb2xvciBvZiB0aGUgdG9vbHRpcCBmb250LlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJHRvb2x0aXAtY29sb3I6ICR3aGl0ZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IHBhZGRpbmcgb2YgdGhlIHRvb2x0aXAgYmFja2dyb3VuZC5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kdG9vbHRpcC1wYWRkaW5nOiAwLjc1cmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgbWF4IHdpZHRoIGZvciB0b29sdGlwcy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kdG9vbHRpcC1tYXgtd2lkdGg6IDEwcmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgZm9udCBzaXplIG9mIHRoZSB0b29sdGlwIHRleHQuIEJ5IGRlZmF1bHQsIHdlIHJlY29tbWVuZCBhIHNtYWxsZXIgZm9udCBzaXplIHRoYW4gdGhlIGJvZHkgY29weS5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kdG9vbHRpcC1mb250LXNpemU6ICRzbWFsbC1mb250LXNpemUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBwaXAgd2lkdGggZm9yIHRvb2x0aXBzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiR0b29sdGlwLXBpcC13aWR0aDogMC43NXJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IHBpcCBoZWlnaHQgZm9yIHRvb2x0aXBzLiBUaGlzIGlzIGhlbHBmdWwgZm9yIGNhbGN1bGF0aW5nIHRoZSBkaXN0YW5jZSBvZiB0aGUgdG9vbHRpcCBmcm9tIHRoZSB0b29sdGlwIHdvcmQuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHRvb2x0aXAtcGlwLWhlaWdodDogJHRvb2x0aXAtcGlwLXdpZHRoICogMC44NjYgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCByYWRpdXMgZm9yIHRvb2x0aXBzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiR0b29sdGlwLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XHJcblxyXG5AbWl4aW4gaGFzLXRpcCB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHJcbiAgYm9yZGVyLWJvdHRvbTogJGhhcy10aXAtYm9yZGVyLWJvdHRvbTtcclxuICBmb250LXdlaWdodDogJGhhcy10aXAtZm9udC13ZWlnaHQ7XHJcbiAgY3Vyc29yOiAkaGFzLXRpcC1jdXJzb3I7XHJcbn1cclxuXHJcbkBtaXhpbiB0b29sdGlwIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgdG9wOiBjYWxjKDEwMCUgKyAjeyR0b29sdGlwLXBpcC1oZWlnaHR9KTtcclxuICB6LWluZGV4OiAxMjAwO1xyXG5cclxuICBtYXgtd2lkdGg6ICR0b29sdGlwLW1heC13aWR0aDtcclxuICBwYWRkaW5nOiAkdG9vbHRpcC1wYWRkaW5nO1xyXG5cclxuICBib3JkZXItcmFkaXVzOiAkdG9vbHRpcC1yYWRpdXM7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogJHRvb2x0aXAtYmFja2dyb3VuZC1jb2xvcjtcclxuICBmb250LXNpemU6ICR0b29sdGlwLWZvbnQtc2l6ZTtcclxuICBjb2xvcjogJHRvb2x0aXAtY29sb3I7XHJcblxyXG4gICY6OmJlZm9yZSB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgfVxyXG5cclxuICAmLmJvdHRvbSB7XHJcbiAgICAmOjpiZWZvcmUge1xyXG4gICAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJHRvb2x0aXAtcGlwLXdpZHRoLCAkdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yLCB1cCk7XHJcbiAgICAgIGJvdHRvbTogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICAmLmFsaWduLWNlbnRlcjo6YmVmb3JlIHtcclxuICAgICAgbGVmdDogNTAlO1xyXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLnRvcCB7XHJcbiAgICAmOjpiZWZvcmUge1xyXG4gICAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJHRvb2x0aXAtcGlwLXdpZHRoLCAkdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yLCBkb3duKTtcclxuICAgICAgdG9wOiAxMDAlO1xyXG4gICAgICBib3R0b206IGF1dG87XHJcbiAgICB9XHJcblxyXG4gICAgJi5hbGlnbi1jZW50ZXI6OmJlZm9yZSB7XHJcbiAgICAgIGxlZnQ6IDUwJTtcclxuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi5sZWZ0IHtcclxuICAgICY6OmJlZm9yZSB7XHJcbiAgICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkdG9vbHRpcC1waXAtd2lkdGgsICR0b29sdGlwLWJhY2tncm91bmQtY29sb3IsIHJpZ2h0KTtcclxuICAgICAgbGVmdDogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICAmLmFsaWduLWNlbnRlcjo6YmVmb3JlIHtcclxuICAgICAgYm90dG9tOiBhdXRvO1xyXG4gICAgICB0b3A6IDUwJTtcclxuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi5yaWdodCB7XHJcbiAgICAmOjpiZWZvcmUge1xyXG4gICAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJHRvb2x0aXAtcGlwLXdpZHRoLCAkdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yLCBsZWZ0KTtcclxuICAgICAgcmlnaHQ6IDEwMCU7XHJcbiAgICAgIGxlZnQ6IGF1dG87XHJcbiAgICB9XHJcblxyXG4gICAgJi5hbGlnbi1jZW50ZXI6OmJlZm9yZSB7XHJcbiAgICAgIGJvdHRvbTogYXV0bztcclxuICAgICAgdG9wOiA1MCU7XHJcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICYuYWxpZ24tdG9wOjpiZWZvcmUge1xyXG4gICAgYm90dG9tOiBhdXRvO1xyXG4gICAgdG9wOiAxMCU7XHJcbiAgfVxyXG5cclxuICAmLmFsaWduLWJvdHRvbTo6YmVmb3JlIHtcclxuICAgIGJvdHRvbTogMTAlO1xyXG4gICAgdG9wOiBhdXRvO1xyXG4gIH1cclxuXHJcbiAgJi5hbGlnbi1sZWZ0OjpiZWZvcmUge1xyXG4gICAgbGVmdDogMTAlO1xyXG4gICAgcmlnaHQ6IGF1dG87XHJcbiAgfVxyXG5cclxuICAmLmFsaWduLXJpZ2h0OjpiZWZvcmUge1xyXG4gICAgbGVmdDogYXV0bztcclxuICAgIHJpZ2h0OiAxMCU7XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi10b29sdGlwIHtcclxuICAuaGFzLXRpcCB7XHJcbiAgICBAaW5jbHVkZSBoYXMtdGlwO1xyXG4gIH1cclxuXHJcbiAgLnRvb2x0aXAge1xyXG4gICAgQGluY2x1ZGUgdG9vbHRpcDtcclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIHByb3RvdHlwZVxyXG4vLy8vXHJcblxyXG4vLyBSZWxhdGlvbmFsIE1peGluc1xyXG5AaW1wb3J0ICdyZWxhdGlvbic7XHJcblxyXG4vLyBCb3ggTWl4aW5cclxuQGltcG9ydCAnYm94JztcclxuXHJcbi8vIFJvdGF0ZSBNaXhpblxyXG5AaW1wb3J0ICdyb3RhdGUnO1xyXG5cclxuLy8gVGV4dCB1dGlsaXRpZXNcclxuQGltcG9ydCAndGV4dC11dGlsaXRpZXMnO1xyXG5cclxuLy8gVGV4dCB0cmFuc2Zvcm1hdGlvbiBjbGFzc2VzXHJcbkBpbXBvcnQgJ3RleHQtdHJhbnNmb3JtYXRpb24nO1xyXG5cclxuLy8gVGV4dCBEZWNvcmF0aW9uIGNsYXNzZXNcclxuQGltcG9ydCAndGV4dC1kZWNvcmF0aW9uJztcclxuXHJcbi8vIEZvbnQgU3R5bGluZ1xyXG5AaW1wb3J0ICdmb250LXN0eWxpbmcnO1xyXG5cclxuLy8gTGlzdCBTdHlsZSB0eXBlXHJcbkBpbXBvcnQgJ2xpc3Qtc3R5bGUtdHlwZSc7XHJcblxyXG4vLyBSb3VuZGVkIFV0aWxpdHlcclxuQGltcG9ydCAncm91bmRlZCc7XHJcblxyXG4vLyBCb3JkZXJlZCBVdGlsaXR5XHJcbkBpbXBvcnQgJ2JvcmRlcmVkJztcclxuXHJcbi8vIFNoYWRvdyBVdGlsaXR5XHJcbkBpbXBvcnQgJ3NoYWRvdyc7XHJcblxyXG4vLyBBcnJvdyBVdGlsaXR5XHJcbkBpbXBvcnQgJ2Fycm93JztcclxuXHJcbi8vIFNlcGFyYXRvciBVdGlsaXR5XHJcbkBpbXBvcnQgJ3NlcGFyYXRvcic7XHJcblxyXG4vLyBPdmVyZmxvdyBoZWxwZXIgY2xhc3Nlc1xyXG5AaW1wb3J0ICdvdmVyZmxvdyc7XHJcblxyXG4vLyBEaXNwbGF5IGNsYXNzZXNcclxuQGltcG9ydCAnZGlzcGxheSc7XHJcblxyXG4vLyBQb3NpdGlvbiBIZWxwZXJzXHJcbkBpbXBvcnQgJ3Bvc2l0aW9uJztcclxuXHJcbi8vIEJvcmRlciBib3hcclxuQGltcG9ydCAnYm9yZGVyLWJveCc7XHJcblxyXG4vLyBCb3JkZXIgbm9uZSBVdGlsdHlcclxuQGltcG9ydCAnYm9yZGVyLW5vbmUnO1xyXG5cclxuLy8gU2l6aW5nIFV0aWxpdGllc1xyXG5AaW1wb3J0ICdzaXppbmcnO1xyXG5cclxuLy8gU3BhY2luZyBVdGlsaXRpZXNcclxuQGltcG9ydCAnc3BhY2luZyc7XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtY2xhc3NlcyB7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtdGV4dC11dGlsaXRpZXM7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtdGV4dC10cmFuc2Zvcm1hdGlvbjtcclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS10ZXh0LWRlY29yYXRpb247XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtZm9udC1zdHlsaW5nO1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLWxpc3Qtc3R5bGUtdHlwZTtcclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1yb3VuZGVkO1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLWJvcmRlcmVkO1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLXNoYWRvdztcclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1hcnJvdztcclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1zZXBhcmF0b3I7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtb3ZlcmZsb3c7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtZGlzcGxheTtcclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1wb3NpdGlvbjtcclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1ib3JkZXItYm94O1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLWJvcmRlci1ub25lO1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLXNpemluZztcclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1zcGFjaW5nO1xyXG59XHJcbiIsIi8vLyBTZWxlY3QgYWxsIGNoaWxkcmVuIGZyb20gdGhlIGZpcnN0IHRvIGAkbnVtYC5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbnVtW10gRmlyc3QgYG5gIG51bWJlcnMgb2YgdG90YWwgY2hpbGRyZW4gXHJcbkBtaXhpbiBmaXJzdCgkbnVtKSB7XHJcbiAgQGlmICRudW0gPT0gMSB7XHJcbiAgICAmOmZpcnN0LWNoaWxkIHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcbiAgfSBAZWxzZSB7XHJcbiAgICAmOm50aC1jaGlsZCgtbiArICN7JG51bX0pIHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gU2VsZWN0IHRoZSBmaXJzdCBleGFjdCBjaGlsZFxyXG5AbWl4aW4gZmlyc3QtY2hpbGQge1xyXG4gICY6Zmlyc3Qtb2YtdHlwZSB7XHJcbiAgICBAY29udGVudDtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBTZWxlY3QgYWxsIGNoaWxkcmVuIGZyb20gdGhlIGxhc3QgdG8gYCRudW1gLlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRudW1bXSBMYXN0IGBuYCBudW1iZXJzIG9mIHRvdGFsIGNoaWxkcmVuIFxyXG5AbWl4aW4gbGFzdCgkbnVtKSB7XHJcbiAgJjpudGgtbGFzdC1jaGlsZCgtbiArICN7JG51bX0pIHtcclxuICAgIEBjb250ZW50O1xyXG4gIH1cclxufVxyXG5cclxuLy8vIFNlbGVjdCB0aGUgbGFzdCBleGFjdCBjaGlsZFxyXG5AbWl4aW4gbGFzdC1jaGlsZCB7XHJcbiAgJjpsYXN0LW9mLXR5cGUge1xyXG4gICAgQGNvbnRlbnQ7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gU2VsZWN0IGNoaWxkcmVuIGV2ZXJ5IGAkbnVtYC5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbnVtW10gRXZlcnkgYG5gIG51bWJlciBvZiBhbGwgY2hpbGRyZW5cclxuQG1peGluIGV2ZXJ5KCRudW0pIHtcclxuICAmOm50aC1jaGlsZCgjeyRudW19bikge1xyXG4gICAgQGNvbnRlbnQ7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gU2VsZWN0IG9ubHkgdGhlIGZpcnN0IGFuZCBsYXN0IGNoaWxkLlxyXG5AbWl4aW4gZmlyc3QtbGFzdCB7XHJcbiAgJjpmaXJzdC1jaGlsZCxcclxuICAmOmxhc3QtY2hpbGQge1xyXG4gICAgQGNvbnRlbnQ7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gU2VsZWN0IGFsbCBjaGlsZHJlbiBhZnRlciB0aGUgZmlyc3QgdG8gYCRudW1gLlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRudW1bXSBBZnRlciBGaXJzdCBgbmAgbnVtYmVycyBvZiB0b3RhbCBjaGlsZHJlbiBcclxuQG1peGluIGFmdGVyLWZpcnN0KCRudW0pIHtcclxuICAmOm50aC1jaGlsZChuICsgI3skbnVtICsgMX0pIHtcclxuICAgIEBjb250ZW50O1xyXG4gIH1cclxufVxyXG5cclxuLy8vIFNlbGVjdCBhbGwgY2hpbGRyZW4gYmVmb3JlIGAkbnVtYCBmcm9tIHRoZSBsYXN0LlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRudW1bXSBGcm9tIExhc3QgYG5gIG51bWJlcnMgb2YgdG90YWwgY2hpbGRyZW4gXHJcbkBtaXhpbiBmcm9tLWxhc3QoJG51bSkge1xyXG4gICY6bnRoLWxhc3QtY2hpbGQoI3skbnVtfSkge1xyXG4gICAgQGNvbnRlbnQ7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gU2VsZWN0IHRoZSBgJG51bWAgY2hpbGQgZnJvbSB0aGUgZmlyc3QgYW5kIHRoZSBgJG51bWAgY2hpbGQgZnJvbSB0aGUgbGFzdC5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbnVtW10gYG5gIG51bWJlciBjYWxsZWQgZnJvbSBmaXJzdCBhbmQgbGFzdCBcclxuQG1peGluIGZyb20tZmlyc3QtbGFzdCgkbnVtKSB7XHJcbiAgJjpudGgtY2hpbGQoI3skbnVtfSksXHJcbiAgJjpudGgtbGFzdC1jaGlsZCgjeyRudW19KSB7XHJcbiAgICBAY29udGVudDtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBTZWxlY3QgYWxsIGNoaWxkcmVuIGJ1dCBgJG51bWAuXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJG51bVtdIGBuYCBudW1iZXIgdGhhdCBzaG91bGQgYmUgZXhjbHVkZWQgZnJvbSBhbGwgb3RoZXIgY2hpbGRyZW4gXHJcbkBtaXhpbiBhbGwtYnV0KCRudW0pIHtcclxuICAmOm5vdCg6bnRoLWNoaWxkKCN7JG51bX0pKSB7XHJcbiAgICBAY29udGVudDtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBTZWxlY3QgYWxsIGNoaWxkcmVuIGJldHdlZW4gdGhlIGAkbnVtYCBmaXJzdCBhbmQgdGhlIGAkbnVtYCBsYXN0LlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRudW1bXSBgbmAgbnVtYmVyIGV4Y2x1ZGVkIGZyb20gZmlyc3QgYW5kIGxhc3QgZnJvbSBhbGwgb3RoZXIgY2hpbGRyZW5cclxuQG1peGluIGFsbC1idXQtZmlyc3QtbGFzdCgkbnVtKSB7XHJcbiAgJjpudGgtY2hpbGQobiArICN7JG51bX0pOm50aC1sYXN0LWNoaWxkKG4gKyAjeyRudW19KSB7XHJcbiAgICBAY29udGVudDtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBXaWxsIG9ubHkgc2VsZWN0IHRoZSBjaGlsZCBpZiBpdOKAmXMgdW5pcXVlLiBUaGF0IG1lYW5zIHRoYXQgaWYgdGhlcmUgYXJlIGF0IGxlYXN0IDIgY2hpbGRyZW4sIHRoZSBzdHlsZSB3aWxsIG5vdCBiZSBhcHBsaWVkLlxyXG5AbWl4aW4gdW5pcXVlIHtcclxuICAmOm9ubHktY2hpbGQge1xyXG4gICAgQGNvbnRlbnQ7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gV2lsbCBvbmx5IHNlbGVjdCBjaGlsZHJlbiBpZiB0aGV5IGFyZSBub3QgdW5pcXVlLiBUaGF0IG1lYW5zIHRoYXQgaWYgdGhlcmUgYXJlIGF0IGxlYXN0IDIgY2hpbGRyZW4sIHRoZSBzdHlsZSB3aWxsIGJlIGFwcGxpZWQuXHJcbkBtaXhpbiBub3QtdW5pcXVlKCkge1xyXG4gICY6bm90KDpvbmx5LWNoaWxkKSB7XHJcbiAgICBAY29udGVudDtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBTZWxlY3QgYWxsIGNoaWxkcmVuIGJldHdlZW4gYCRmaXJzdGAgYW5kIGAkbGFzdGAuXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGZpcnN0W10gRmlyc3QgYG50aGAgbnVtYmVyXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGxhc3RbXSBMYXN0IGBudGhgIG51bWJlclxyXG5AbWl4aW4gYmV0d2VlbigkZmlyc3QsICRsYXN0KSB7XHJcbiAgJjpudGgtY2hpbGQobiArICN7JGZpcnN0fSk6bnRoLWNoaWxkKC1uICsgI3skbGFzdH0pIHtcclxuICAgIEBjb250ZW50O1xyXG4gIH1cclxufVxyXG5cclxuLy8vIFNlbGVjdCBhbGwgZXZlbiBjaGlsZHJlbi5cclxuQG1peGluIGV2ZW4ge1xyXG4gICY6bnRoLWNoaWxkKGV2ZW4pIHtcclxuICAgIEBjb250ZW50O1xyXG4gIH1cclxufVxyXG5cclxuLy8vIFNlbGVjdCBhbGwgZXZlbiBjaGlsZHJlbiBiZXR3ZWVuIGAkZmlyc3RgIGFuZCBgJGxhc3RgLlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRmaXJzdFtdIEZpcnN0IGBudGhgIG51bWJlclxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRsYXN0W10gTGFzdCBgbnRoYCBudW1iZXJcclxuQG1peGluIGV2ZW4tYmV0d2VlbigkZmlyc3QsICRsYXN0KSB7XHJcbiAgJjpudGgtY2hpbGQoZXZlbik6bnRoLWNoaWxkKG4gKyAjeyRmaXJzdH0pOm50aC1jaGlsZCgtbiArICN7JGxhc3R9KSB7XHJcbiAgICBAY29udGVudDtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBTZWxlY3QgYWxsIG9kZCBjaGlsZHJlbi5cclxuQG1peGluIG9kZCB7XHJcbiAgJjpudGgtY2hpbGQob2RkKSB7XHJcbiAgICBAY29udGVudDtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBTZWxlY3QgYWxsIG9kZCBjaGlsZHJlbiBiZXR3ZWVuIGAkZmlyc3RgIGFuZCBgJGxhc3RgLlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRmaXJzdFtdIEZpcnN0IGBudGhgIG51bWJlclxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRsYXN0W10gTGFzdCBgbnRoYCBudW1iZXJcclxuQG1peGluIG9kZC1iZXR3ZWVuKCRmaXJzdCwgJGxhc3QpIHtcclxuICAmOm50aC1jaGlsZChvZGQpOm50aC1jaGlsZChuICsgI3skZmlyc3R9KTpudGgtY2hpbGQoLW4gKyAjeyRsYXN0fSkge1xyXG4gICAgQGNvbnRlbnQ7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gU2VsZWN0IGFsbCBgJG51bWAgY2hpbGRyZW4gYmV0d2VlbiBgJGZpcnN0YCBhbmQgYCRsYXN0YC5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbnVtW10gRXZlcnkgYG5gIG51bWJlciBiZXR3ZWVuIGAkZmlyc3RgIGFuZCBgJGxhc3RgLlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRmaXJzdFtdIEZpcnN0IGBuYCBudW1iZXJcclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbGFzdFtdIExhc3QgYG5gIG51bWJlclxyXG5AbWl4aW4gbnVtYmVyLWJldHdlZW4oJG51bSwgJGZpcnN0LCAkbGFzdCkge1xyXG4gICY6bnRoLWNoaWxkKCN7JG51bX1uKTpudGgtY2hpbGQobiArICN7JGZpcnN0fSk6bnRoLWNoaWxkKC1uICsgI3skbGFzdH0pIHtcclxuICAgIEBjb250ZW50O1xyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgcHJvdG90eXBlLWJveFxyXG4vLy8vXHJcblxyXG4vLy8gQm94IE1peGluOiBFYXNpbHkgY3JlYXRlIGEgc3F1YXJlLCByZWN0YW5nbGUgb3IgYSBjaXJjbGVcclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGhbXSBXaWR0aCBvZiB0aGUgYm94XHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGhlaWdodFskd2lkdGhdIEhlaWdodCBvZiB0aGUgYm94LCBkZWZhdWx0cyB0byBgJHdpZHRoYCB0byBlYXNpbHkgbWFrZSBhIHNxdWFyZVxyXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkY2lyY2xlW2ZhbHNlXSBNYWtlcyB0aGUgYm94IGEgY2lyY2xlLCBieSBkZWZhdWx0IGBmYWxzZWAuXHJcbkBtaXhpbiBib3goXHJcbiAgJHdpZHRoLCBcclxuICAkaGVpZ2h0OiAkd2lkdGgsIFxyXG4gICRjaXJjbGU6IGZhbHNlXHJcbikge1xyXG4gIHdpZHRoOiAkd2lkdGg7XHJcbiAgaGVpZ2h0OiAkaGVpZ2h0O1xyXG4gIEBpZiAkY2lyY2xlIHtcclxuICAgIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50O1xyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgcHJvdG90eXBlLXJvdGF0ZVxyXG4vLy8vXHJcblxyXG4vLy8gUm90YXRlIE1peGluOiBSb3RhdGUgYW4gZWxlbWVudCB0byBhIGNlcnRhaW4gZGVnXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGRlZ1tdIERlZ3JlZSBvZiByb3RhdGlvblxyXG5AbWl4aW4gcm90YXRlKCRkZWcpIHtcclxuXHR0cmFuc2Zvcm06cm90YXRlKCRkZWcgKyBkZWcpO1xyXG59XHJcblxyXG4vLy8gUm90YXRlWCBNaXhpbjogUm90YXRlIGFuIGVsZW1lbnQgdG8gYSBjZXJ0YWluIGRlZyBvbiBYLUF4aXNcclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZGVnW10gRGVncmVlIG9mIHJvdGF0aW9uXHJcbkBtaXhpbiByb3RhdGVYKCRkZWcpIHtcclxuXHR0cmFuc2Zvcm06cm90YXRlWCgkZGVnICsgZGVnKTtcclxufVxyXG5cclxuLy8vIFJvdGF0ZVkgTWl4aW46IFJvdGF0ZSBhbiBlbGVtZW50IHRvIGEgY2VydGFpbiBkZWcgb24gWS1BeGlzXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGRlZ1tdIERlZ3JlZSBvZiByb3RhdGlvblxyXG5AbWl4aW4gcm90YXRlWSgkZGVnKSB7XHJcblx0dHJhbnNmb3JtOnJvdGF0ZVkoJGRlZyArIGRlZyk7XHJcbn1cclxuXHJcbi8vLyBSb3RhdGVaIE1peGluOiBSb3RhdGUgYW4gZWxlbWVudCB0byBhIGNlcnRhaW4gZGVnIG9uIFotQXhpc1xyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRkZWdbXSBEZWdyZWUgb2Ygcm90YXRpb25cclxuQG1peGluIHJvdGF0ZVooJGRlZykge1xyXG5cdHRyYW5zZm9ybTpyb3RhdGVaKCRkZWcgKyBkZWcpO1xyXG59IiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIHByb3RvdHlwZS10ZXh0LXV0aWxpdGllc1xyXG4vLy8vXHJcblxyXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgdGV4dCB1dGlsaXRpZXNcclxuLy8vIEB0eXBlIEJvb2xlYW5cclxuJHByb3RvdHlwZS11dGlsaXRpZXMtYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgVmFsdWUgZm9yIGB0ZXh0LW92ZXJmbG93YCB2YXJpYWJsZVxyXG4vLy8gQHR5cGUgU3RyaW5nXHJcbiRwcm90b3R5cGUtdGV4dC1vdmVyZmxvdzogZWxsaXBzaXMgIWRlZmF1bHQ7XHJcblxyXG4vLy8gSW1hZ2UgUmVwbGFjZW1lbnQgdXRpbGl0eS4gYHRleHQtaGlkZWBcclxuQG1peGluIHRleHQtaGlkZSB7XHJcbiAgZm9udDogMC8wIGEgIWltcG9ydGFudDtcclxuICBjb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcclxuICB0ZXh0LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcbiAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8vLyBUcnVuY2F0aW5nIHRoZSB0ZXh0LCBlbGlwc2lzIGJ5IGRlZmF1bHQuXHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJG92ZXJmbG93IFskcHJvdG90eXBlLXRleHQtb3ZlcmZsb3ddIFRleHQgVHJ1bmNhdGVcclxuQG1peGluIHRleHQtdHJ1bmNhdGUoXHJcbiAgJG92ZXJmbG93OiAkcHJvdG90eXBlLXRleHQtb3ZlcmZsb3dcclxuKSB7XHJcbiAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xyXG4gIHRleHQtb3ZlcmZsb3c6ICRvdmVyZmxvdzsgXHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vLy8gTm8gd3JhcHBpbmcgb2YgdGhlIHRleHQuIGB0ZXh0LW5vd3JhcGBcclxuQG1peGluIHRleHQtbm93cmFwIHtcclxuICB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8vLyBXcmFwcGluZyBvZiB0aGUgdGV4dC4gYHRleHQtd3JhcGBcclxuQG1peGluIHRleHQtd3JhcCB7XHJcbiAgd29yZC13cmFwOiBicmVhay13b3JkICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS10ZXh0LXV0aWxpdGllcyB7XHJcbiAgLnRleHQtaGlkZSB7XHJcbiAgICBAaW5jbHVkZSB0ZXh0LWhpZGU7XHJcbiAgfVxyXG5cclxuICAudGV4dC10cnVuY2F0ZSB7XHJcbiAgICBAaW5jbHVkZSB0ZXh0LXRydW5jYXRlO1xyXG4gIH1cclxuXHJcbiAgLnRleHQtbm93cmFwIHtcclxuICAgIEBpbmNsdWRlIHRleHQtbm93cmFwO1xyXG4gIH1cclxuXHJcbiAgLnRleHQtd3JhcCB7XHJcbiAgICBAaW5jbHVkZSB0ZXh0LXdyYXA7XHJcbiAgfVxyXG5cclxuICBAaWYgKCRwcm90b3R5cGUtdXRpbGl0aWVzLWJyZWFrcG9pbnRzKSB7XHJcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xyXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcclxuICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xyXG4gICAgICAgICAgLiN7JHNpemV9LXRleHQtaGlkZSB7XHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRleHQtaGlkZTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAuI3skc2l6ZX0tdGV4dC10cnVuY2F0ZSB7XHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRleHQtdHJ1bmNhdGU7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLiN7JHNpemV9LXRleHQtbm93cmFwIHtcclxuICAgICAgICAgICAgQGluY2x1ZGUgdGV4dC1ub3dyYXA7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLiN7JHNpemV9LXRleHQtd3JhcCB7XHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRleHQtd3JhcDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIHByb3RvdHlwZS10ZXh0LXRyYW5zZm9ybWF0aW9uXHJcbi8vLy9cclxuXHJcbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciB0ZXh0IHRyYW5zZm9ybWF0aW9uIGNsYXNzZXNcclxuLy8vIEB0eXBlIEJvb2xlYW5cclxuJHByb3RvdHlwZS10cmFuc2Zvcm1hdGlvbi1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XHJcblxyXG4vLy8gTWFwIGNvbnRhaW5pbmcgYWxsIHRoZSBgdGV4dC10cmFuc2Zvcm1hdGlvbmAgY2xhc3Nlc1xyXG4vLy8gQHR5cGUgTWFwXHJcbiRwcm90b3R5cGUtdGV4dC10cmFuc2Zvcm1hdGlvbjogKFxyXG4gIGxvd2VyY2FzZSxcclxuICB1cHBlcmNhc2UsXHJcbiAgY2FwaXRhbGl6ZVxyXG4pICFkZWZhdWx0O1xyXG5cclxuLy8vIFRleHQgVHJhbnNmb3JtYXRpb24sIGJ5IGRlZmF1bHQgY29taW5nIHRocm91Z2ggYSBtYXAgYCRwcm90b3R5cGUtdGV4dC10cmFuc2Zvcm1hdGlvbmBcclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkdHJhbnNmb3JtYXRpb24gW10gVGV4dCBUcmFuc2Zvcm1hdGlvblxyXG5AbWl4aW4gdGV4dC10cmFuc2Zvcm0oJHRyYW5zZm9ybWF0aW9uKSB7XHJcbiAgdGV4dC10cmFuc2Zvcm06ICR0cmFuc2Zvcm1hdGlvbiAhaW1wb3J0YW50O1xyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtdGV4dC10cmFuc2Zvcm1hdGlvbiB7XHJcbiAgQGVhY2ggJHRyYW5zZm9ybWF0aW9uIGluICRwcm90b3R5cGUtdGV4dC10cmFuc2Zvcm1hdGlvbiB7XHJcbiAgICAudGV4dC0jeyR0cmFuc2Zvcm1hdGlvbn0ge1xyXG4gICAgICBAaW5jbHVkZSB0ZXh0LXRyYW5zZm9ybSgkdHJhbnNmb3JtYXRpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGlmICgkcHJvdG90eXBlLXRyYW5zZm9ybWF0aW9uLWJyZWFrcG9pbnRzKSB7XHJcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xyXG4gIFx0QGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcclxuICAgICAgICBAZWFjaCAkdHJhbnNmb3JtYXRpb24gaW4gJHByb3RvdHlwZS10ZXh0LXRyYW5zZm9ybWF0aW9uIHtcclxuICAgICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XHJcbiAgICAgICAgICAgIC4jeyRzaXplfS10ZXh0LSN7JHRyYW5zZm9ybWF0aW9ufSB7XHJcbiAgXHRcdFx0ICAgICAgQGluY2x1ZGUgdGV4dC10cmFuc2Zvcm0oJHRyYW5zZm9ybWF0aW9uKTtcclxuICBcdFx0XHQgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgcHJvdG90eXBlLXRleHQtZGVjb3JhdGlvblxyXG4vLy8vXHJcblxyXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgdGV4dCBkZWNvcmF0aW9uIGNsYXNzZXNcclxuLy8vIEB0eXBlIEJvb2xlYW5cclxuJHByb3RvdHlwZS1kZWNvcmF0aW9uLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcclxuXHJcbi8vLyBNYXAgY29udGFpbmluZyBhbGwgdGhlIGB0ZXh0LWRlY29yYXRpb25gIGNsYXNzZXNcclxuLy8vIEB0eXBlIE1hcFxyXG4kcHJvdG90eXBlLXRleHQtZGVjb3JhdGlvbjogKFxyXG4gIG92ZXJsaW5lLFxyXG4gIHVuZGVybGluZSxcclxuICBsaW5lLXRocm91Z2gsXHJcbikgIWRlZmF1bHQ7XHJcblxyXG4vLy8gVGV4dCBEZWNvcmF0aW9uLCBieSBkZWZhdWx0IGNvbWluZyB0aHJvdWdoIGEgbWFwIGAkcHJvdG90eXBlLXRleHQtZGVjb3JhdGlvbmBcclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZGVjb3JhdGlvbiBbXSBUZXh0IERlY29yYXRpb25cclxuQG1peGluIHRleHQtZGVjb3JhdGlvbigkZGVjb3JhdGlvbikge1xyXG4gIHRleHQtZGVjb3JhdGlvbjogJGRlY29yYXRpb24gIWltcG9ydGFudDtcclxufVxyXG5cclxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLXRleHQtZGVjb3JhdGlvbiB7XHJcbiAgQGVhY2ggJGRlY29yYXRpb24gaW4gJHByb3RvdHlwZS10ZXh0LWRlY29yYXRpb24ge1xyXG4gICAgLnRleHQtI3skZGVjb3JhdGlvbn0ge1xyXG4gICAgICBAaW5jbHVkZSB0ZXh0LWRlY29yYXRpb24oJGRlY29yYXRpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGlmICgkcHJvdG90eXBlLWRlY29yYXRpb24tYnJlYWtwb2ludHMpIHtcclxuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXHJcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcclxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xyXG4gICAgICAgIEBlYWNoICRkZWNvcmF0aW9uIGluICRwcm90b3R5cGUtdGV4dC1kZWNvcmF0aW9uIHtcclxuICAgICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XHJcbiAgICAgICAgICAgIC4jeyRzaXplfS10ZXh0LSN7JGRlY29yYXRpb259IHtcclxuICAgICAgICAgICAgICBAaW5jbHVkZSB0ZXh0LWRlY29yYXRpb24oJGRlY29yYXRpb24pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBwcm90b3R5cGUtZm9udC1zdHlsaW5nXHJcbi8vLy9cclxuXHJcbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBmb250IHN0eWxpbmcgdHlwZXNcclxuLy8vIEB0eXBlIEJvb2xlYW5cclxuJHByb3RvdHlwZS1mb250LWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcclxuXHJcbi8vLyBMZXR0ZXIgc3BhY2luZyBmb3IgYC5mb250LXdpZGVgXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHByb3RvdHlwZS13aWRlLWxldHRlci1zcGFjaW5nOiByZW0tY2FsYyg0KSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IHdlaWdodCBmb3IgYC5mb250LW5vcm1hbGAsIGRlZmF1bHRlZCB0byBgZ2xvYmFsLXdlaWdodC1ub3JtYWxgXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHByb3RvdHlwZS1mb250LW5vcm1hbDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgd2VpZ2h0IGZvciBgLmZvbnQtYm9sZGAsIGRlZmF1bHRlZCB0byBgZ2xvYmFsLXdlaWdodC1ib2xkYFxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRwcm90b3R5cGUtZm9udC1ib2xkOiAkZ2xvYmFsLXdlaWdodC1ib2xkICFkZWZhdWx0O1xyXG5cclxuLy8vIEZvbnQgd2lkZSBsZXR0ZXIgc3BhY2luZyFcclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbGV0dGVyLXNwYWNpbmcgWyRwcm90b3R5cGUtd2lkZS1sZXR0ZXItc3BhY2luZ10gV2lkZSBsZXR0ZXIgc3BhY2luZyBmb3IgdGhlIGZvbnRcclxuQG1peGluIGZvbnQtd2lkZShcclxuICAkbGV0dGVyLXNwYWNpbmc6ICRwcm90b3R5cGUtd2lkZS1sZXR0ZXItc3BhY2luZ1xyXG4pIHtcclxuICBsZXR0ZXItc3BhY2luZzogJGxldHRlci1zcGFjaW5nO1xyXG59XHJcblxyXG4vLy8gRm9udCBXZWlnaHQgTm9ybWFsLCBkZWZhdWx0IHZhbHVlIGNvbWluZyB0aHJvdWdoIGBnbG9iYWwtd2VpZ2h0LW5vcm1hbGBcclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2VpZ2h0IFskcHJvdG90eXBlLWZvbnQtbm9ybWFsXSBXZWlnaHQgb2YgdGhlIGZvbnQgKG5vcm1hbClcclxuQG1peGluIGZvbnQtbm9ybWFsKFxyXG4gICR3ZWlnaHQ6ICRwcm90b3R5cGUtZm9udC1ub3JtYWxcclxuKSB7XHJcbiAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XHJcbn1cclxuXHJcbi8vLyBGb250IFdlaWdodCBCb2xkLCBkZWZhdWx0IHZhbHVlIGNvbWluZyB0aHJvdWdoIGBnbG9iYWwtd2VpZ2h0LWJvbGRgXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJHdlaWdodCBbJHByb3RvdHlwZS1mb250LWJvbGRdIFdlaWdodCBvZiB0aGUgZm9udCAoYm9sZClcclxuQG1peGluIGZvbnQtYm9sZChcclxuICAkd2VpZ2h0OiAkcHJvdG90eXBlLWZvbnQtYm9sZFxyXG4pIHtcclxuICBmb250LXdlaWdodDogJHdlaWdodDtcclxufVxyXG5cclxuLy8vIEZvbnQgU3R5bGUgSXRhbGljXHJcbkBtaXhpbiBmb250LWl0YWxpYyB7XHJcbiAgZm9udC1zdHlsZTogaXRhbGljICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS1mb250LXN0eWxpbmcge1xyXG4gIC5mb250LXdpZGV7XHJcbiAgICBAaW5jbHVkZSBmb250LXdpZGU7XHJcbiAgfVxyXG5cclxuICAuZm9udC1ub3JtYWwge1xyXG4gICAgQGluY2x1ZGUgZm9udC1ub3JtYWw7XHJcbiAgfVxyXG5cclxuICAuZm9udC1ib2xkIHtcclxuICAgIEBpbmNsdWRlIGZvbnQtYm9sZDtcclxuICB9XHJcblxyXG4gIC5mb250LWl0YWxpYyB7XHJcbiAgICBAaW5jbHVkZSBmb250LWl0YWxpYztcclxuICB9XHJcblxyXG4gIEBpZiAoJHByb3RvdHlwZS1mb250LWJyZWFrcG9pbnRzKSB7XHJcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xyXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcclxuICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xyXG4gICAgICAgICAgLiN7JHNpemV9LWZvbnQtd2lkZXtcclxuICAgICAgICAgICAgQGluY2x1ZGUgZm9udC13aWRlO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC4jeyRzaXplfS1mb250LW5vcm1hbCB7XHJcbiAgICAgICAgICAgIEBpbmNsdWRlIGZvbnQtbm9ybWFsO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC4jeyRzaXplfS1mb250LWJvbGQge1xyXG4gICAgICAgICAgICBAaW5jbHVkZSBmb250LWJvbGQ7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLiN7JHNpemV9LWZvbnQtaXRhbGljIHtcclxuICAgICAgICAgICAgQGluY2x1ZGUgZm9udC1pdGFsaWM7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBwcm90b3R5cGUtbGlzdC1zdHlsZS10eXBlXHJcbi8vLy9cclxuXHJcbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBsaXN0IHN0eWxpbmcgdHlwZXNcclxuLy8vIEB0eXBlIEJvb2xlYW5cclxuJHByb3RvdHlwZS1saXN0LWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcclxuXHJcbi8vLyBNYXAgY29udGFpbmluZyBhbGwgdGhlIGBzdHlsZS10eXBlLXVub3JkZXJlZGAgY2xhc3Nlc1xyXG4vLy8gQHR5cGUgTWFwXHJcbiRwcm90b3R5cGUtc3R5bGUtdHlwZS11bm9yZGVyZWQ6IChcclxuICBkaXNjLFxyXG4gIGNpcmNsZSxcclxuICBzcXVhcmVcclxuKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBNYXAgY29udGFpbmluZyBhbGwgdGhlIGBzdHlsZS10eXBlLW9yZGVyZWRgIGNsYXNzZXNcclxuLy8vIEB0eXBlIE1hcFxyXG4kcHJvdG90eXBlLXN0eWxlLXR5cGUtb3JkZXJlZDogKFxyXG4gIGRlY2ltYWwsXHJcbiAgbG93ZXItYWxwaGEsXHJcbiAgbG93ZXItbGF0aW4sXHJcbiAgbG93ZXItcm9tYW4sXHJcbiAgdXBwZXItYWxwaGEsXHJcbiAgdXBwZXItbGF0aW4sXHJcbiAgdXBwZXItcm9tYW5cclxuKSAhZGVmYXVsdDtcclxuXHJcblxyXG4vLy8gU3R5bGUgdHlwZSBmb3IgdW5vcmRlcmVkIExpc3RzLCBieSBkZWZhdWx0IGNvbWluZyB0aHJvdWdoIGEgbWFwIGAkcHJvdG90eXBlLXN0eWxlLXR5cGUtdW5vcmRlcmVkYFxyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzdHlsZS10eXBlLXVub3JkZXJlZCBbXSBTdHlsZSB0eXBlIGZvciB1bm9yZGVyZWQgTGlzdHNcclxuQG1peGluIHN0eWxlLXR5cGUtdW5vcmRlcmVkKCRzdHlsZS10eXBlLXVub3JkZXJlZCkge1xyXG4gIGxpc3Qtc3R5bGUtdHlwZTogJHN0eWxlLXR5cGUtdW5vcmRlcmVkICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8vLyBTdHlsZSB0eXBlIGZvciBvcmRlcmVkIExpc3RzLCBieSBkZWZhdWx0IGNvbWluZyB0aHJvdWdoIGEgbWFwIGAkcHJvdG90eXBlLXN0eWxlLXR5cGUtb3JkZXJlZGBcclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc3R5bGUtdHlwZS1vcmRlcmVkIFtdIFN0eWxlIHR5cGUgZm9yIG9yZGVyZWQgTGlzdHNcclxuQG1peGluIHN0eWxlLXR5cGUtb3JkZXJlZCgkc3R5bGUtdHlwZS1vcmRlcmVkKSB7XHJcbiAgbGlzdC1zdHlsZS10eXBlOiAkc3R5bGUtdHlwZS1vcmRlcmVkICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbkBtaXhpbiBsaXN0LXVub3JkZXJlZCB7XHJcbiAgQGVhY2ggJHN0eWxlLXR5cGUtdW5vcmRlcmVkIGluICRwcm90b3R5cGUtc3R5bGUtdHlwZS11bm9yZGVyZWQge1xyXG4gICAgdWwubGlzdC0jeyRzdHlsZS10eXBlLXVub3JkZXJlZH0ge1xyXG4gICAgICBAaW5jbHVkZSBzdHlsZS10eXBlLXVub3JkZXJlZCgkc3R5bGUtdHlwZS11bm9yZGVyZWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGlmICgkcHJvdG90eXBlLWxpc3QtYnJlYWtwb2ludHMpIHtcclxuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXHJcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcclxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xyXG4gICAgICAgIEBlYWNoICRzdHlsZS10eXBlLXVub3JkZXJlZCBpbiAkcHJvdG90eXBlLXN0eWxlLXR5cGUtdW5vcmRlcmVkIHtcclxuICAgICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XHJcbiAgICAgICAgICAgIHVsLiN7JHNpemV9LWxpc3QtI3skc3R5bGUtdHlwZS11bm9yZGVyZWR9IHtcclxuICAgICAgICAgICAgICBAaW5jbHVkZSBzdHlsZS10eXBlLXVub3JkZXJlZCgkc3R5bGUtdHlwZS11bm9yZGVyZWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gbGlzdC1vcmRlcmVkIHtcclxuICBAZWFjaCAkc3R5bGUtdHlwZS1vcmRlcmVkIGluICRwcm90b3R5cGUtc3R5bGUtdHlwZS1vcmRlcmVkIHtcclxuICAgIG9sLmxpc3QtI3skc3R5bGUtdHlwZS1vcmRlcmVkfSB7XHJcbiAgICAgIEBpbmNsdWRlIHN0eWxlLXR5cGUtb3JkZXJlZCgkc3R5bGUtdHlwZS1vcmRlcmVkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpZiAoJHByb3RvdHlwZS1saXN0LWJyZWFrcG9pbnRzKSB7XHJcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xyXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcclxuICAgICAgICBAZWFjaCAkc3R5bGUtdHlwZS1vcmRlcmVkIGluICRwcm90b3R5cGUtc3R5bGUtdHlwZS1vcmRlcmVkIHtcclxuICAgICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XHJcbiAgICAgICAgICAgIG9sLiN7JHNpemV9LWxpc3QtI3skc3R5bGUtdHlwZS1vcmRlcmVkfSB7XHJcbiAgICAgICAgICAgICAgQGluY2x1ZGUgc3R5bGUtdHlwZS1vcmRlcmVkKCRzdHlsZS10eXBlLW9yZGVyZWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtbGlzdC1zdHlsZS10eXBlIHtcclxuICBAaW5jbHVkZSBsaXN0LXVub3JkZXJlZDtcclxuICBAaW5jbHVkZSBsaXN0LW9yZGVyZWQ7XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1yb3VuZGVkXHJcbi8vLy9cclxuXHJcbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciByb3VuZGVkIHV0aWxpdHkuXHJcbi8vLyBAdHlwZSBCb29sZWFuXHJcbiRwcm90b3R5cGUtcm91bmRlZC1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCB2YWx1ZSBmb3IgYHByb3RvdHlwZS1ib3JkZXItcmFkaXVzYFxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRwcm90b3R5cGUtYm9yZGVyLXJhZGl1czogcmVtLWNhbGMoMykgIWRlZmF1bHQ7XHJcblxyXG4vLy8gUm91bmRlZCB1dGlsaXR5IChhbGwgY29ybmVycyk6IEFkZHMgcmFkaXVzIGNvcm5lcnMgKGFsbCBjb3JuZXJzKSB0byBhbiBlbGVtZW50IGJ5IGRlZmF1bHQuXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJHJhZGl1cyBbJHByb3RvdHlwZS1ib3JkZXItcmFkaXVzXSBCb3JkZXIgcmFkaXVzIChhbGwgY29ybmVycylcclxuQG1peGluIGJvcmRlci1yYWRpdXMoXHJcbiAgJHJhZGl1czogJHByb3RvdHlwZS1ib3JkZXItcmFkaXVzXHJcbikge1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXM7XHJcbn1cclxuXHJcbi8vLyBSb3VuZGVkIHNxdWFyZSB1dGlsaXR5IG9yIHJlY3RhbmdsZSB1dGlsaXR5IChhbGwgY29ybmVycyk6IFJvdW5kcyBhbGwgY29ybmVycyB0byBhbiBlbGVtZW50IGJ5IGRlZmF1bHQgdG8gbWFrZSBhIHBpbGwgc2hhcGUuXHJcbkBtaXhpbiBib3JkZXItcm91bmRlZCB7XHJcbiAgYm9yZGVyLXJhZGl1czogNTAwMHB4ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS1yb3VuZGVkIHtcclxuICAucm91bmRlZCB7XHJcbiAgICBAaW5jbHVkZSBib3JkZXItcm91bmRlZDtcclxuICB9XHJcblxyXG4gIC5yYWRpdXMge1xyXG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cztcclxuICB9XHJcblxyXG4gIEBpZiAoJHByb3RvdHlwZS1yb3VuZGVkLWJyZWFrcG9pbnRzKSB7XHJcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xyXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcclxuICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xyXG4gICAgICAgICAgLiN7JHNpemV9LXJvdW5kZWQge1xyXG4gICAgICAgICAgICBAaW5jbHVkZSBib3JkZXItcm91bmRlZDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC4jeyRzaXplfS1yYWRpdXMge1xyXG4gICAgICAgICAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgcHJvdG90eXBlLWJvcmRlcmVkXHJcbi8vLy9cclxuXHJcbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBib3JkZXJlZCB1dGlsaXR5LlxyXG4vLy8gQHR5cGUgQm9vbGVhblxyXG4kcHJvdG90eXBlLWJvcmRlcmVkLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IHZhbHVlIGZvciBgcHJvdG90eXBlLWJvcmRlci13aWR0aGBcclxuLy8vIEB0eXBlIE51bWJlclxyXG4kcHJvdG90eXBlLWJvcmRlci13aWR0aDogcmVtLWNhbGMoMSkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCB2YWx1ZSBmb3IgYHByb3RvdHlwZS1ib3JkZXItdHlwZWBcclxuLy8vIEB0eXBlIFN0cmluZ1xyXG4kcHJvdG90eXBlLWJvcmRlci10eXBlOiBzb2xpZCAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IHZhbHVlIGZvciBgcHJvdG90eXBlLWJvcmRlci1jb2xvcmAgZGVmYXVsdGVkIHRvIGBtZWRpdW0tZ3JheWBcclxuLy8vIEB0eXBlIENvbG9yXHJcbiRwcm90b3R5cGUtYm9yZGVyLWNvbG9yOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQm9yZGVyZWQgVXRpbGl0eTogQWRkcyBhIGxpZ2h0IGJvcmRlciB0byBhbiBlbGVtZW50IGJ5IGRlZmF1bHQuXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJHdpZHRoIFskcHJvdG90eXBlLWJvcmRlci13aWR0aF0gV2lkdGggb2YgdGhlIGJvcmRlclxyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR0eXBlIFskcHJvdG90eXBlLWJvcmRlci10eXBlXSBUeXBlIG9mIHRoZSBib3JkZXJcclxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbJHByb3RvdHlwZS1ib3JkZXItY29sb3JdIENvbG9yIG9mIHRoZSBib3JkZXJcclxuQG1peGluIGJvcmRlcmVkKFxyXG4gICR3aWR0aDogJHByb3RvdHlwZS1ib3JkZXItd2lkdGgsXHJcbiAgJHR5cGU6ICRwcm90b3R5cGUtYm9yZGVyLXR5cGUsXHJcbiAgJGNvbG9yOiAkcHJvdG90eXBlLWJvcmRlci1jb2xvclxyXG4pIHtcclxuICBib3JkZXI6ICR3aWR0aCAkdHlwZSAkY29sb3I7XHJcbn1cclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS1ib3JkZXJlZCB7XHJcbiAgLmJvcmRlcmVkIHtcclxuICAgIEBpbmNsdWRlIGJvcmRlcmVkO1xyXG4gIH1cclxuXHJcbiAgQGlmICgkcHJvdG90eXBlLWJvcmRlcmVkLWJyZWFrcG9pbnRzKSB7XHJcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xyXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcclxuICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xyXG4gICAgICAgICAgLiN7JHNpemV9LWJvcmRlcmVkIHtcclxuICAgICAgICAgICAgQGluY2x1ZGUgYm9yZGVyZWQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBwcm90b3R5cGUtc2hhZG93XHJcbi8vLy9cclxuXHJcbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBzaGFkb3cgdXRpbGl0eS5cclxuLy8vIEB0eXBlIEJvb2xlYW5cclxuJHByb3RvdHlwZS1zaGFkb3ctYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgdmFsdWUgZm9yIGBwcm90b3R5cGUtYm94LXNoYWRvd2BcclxuLy8vIEB0eXBlIE51bWJlclxyXG4kcHJvdG90eXBlLWJveC1zaGFkb3c6IDAgMnB4IDVweCAwIHJnYmEoMCwwLDAsLjE2KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAwIDJweCAxMHB4IDAgcmdiYSgwLDAsMCwuMTIpICFkZWZhdWx0O1xyXG5cclxuLy8vIFNoYWRvdyBVdGlsaXR5OiBBZGRzIGEgbGlnaHQgYm94IHNoYWRvdyB0byBhbiBlbGVtZW50IGJ5IGRlZmF1bHQuXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJHNoYWRvdyBbJHByb3RvdHlwZS1ib3gtc2hhZG93XSBCb3ggU2hhZG93IG9mIGEgY29tcG9uZW50XHJcbkBtaXhpbiBzaGFkb3coXHJcbiAgJHNoYWRvdzogJHByb3RvdHlwZS1ib3gtc2hhZG93XHJcbikge1xyXG4gIGJveC1zaGFkb3c6ICRzaGFkb3c7XHJcbn1cclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS1zaGFkb3cge1xyXG4gIC5zaGFkb3cge1xyXG4gICAgQGluY2x1ZGUgc2hhZG93O1xyXG4gIH1cclxuXHJcbiAgQGlmICgkcHJvdG90eXBlLXNoYWRvdy1icmVha3BvaW50cykge1xyXG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcclxuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xyXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XHJcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcclxuICAgICAgICAgIC4jeyRzaXplfS1zaGFkb3cge1xyXG4gICAgICAgICAgICBAaW5jbHVkZSBzaGFkb3c7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBwcm90b3R5cGUtYXJyb3dcclxuLy8vL1xyXG5cclxuLy8vIE1hcCBjb250YWluaW5nIGFsbCB0aGUgYGFycm93YCBkaXJlY3Rpb25cclxuLy8vIEB0eXBlIE1hcFxyXG4kcHJvdG90eXBlLWFycm93LWRpcmVjdGlvbnM6IChcclxuICBkb3duLFxyXG4gIHVwLFxyXG4gIHJpZ2h0LFxyXG4gIGxlZnRcclxuKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBXaWR0aCBvZiB0aGUgQXJyb3csIGAwLjQzNzVyZW1gIGJ5IGRlZmF1bHQuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHByb3RvdHlwZS1hcnJvdy1zaXplOiAwLjQzNzVyZW07XHJcblxyXG4vLy8gQ29sb3Igb2YgdGhlIEFycm93LCBgJGJsYWNrYCBieSBkZWZhdWx0LlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJHByb3RvdHlwZS1hcnJvdy1jb2xvcjogJGJsYWNrO1xyXG5cclxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLWFycm93IHtcclxuICBAZWFjaCAkcHJvdG90eXBlLWFycm93LWRpcmVjdGlvbiBpbiAkcHJvdG90eXBlLWFycm93LWRpcmVjdGlvbnMge1xyXG4gICAgLmFycm93LSN7JHByb3RvdHlwZS1hcnJvdy1kaXJlY3Rpb259IHtcclxuICAgICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKFxyXG4gICAgICAgICRwcm90b3R5cGUtYXJyb3ctc2l6ZSwgXHJcbiAgICAgICAgJHByb3RvdHlwZS1hcnJvdy1jb2xvciwgXHJcbiAgICAgICAgJHByb3RvdHlwZS1hcnJvdy1kaXJlY3Rpb25cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1zZXBhcmF0b3JcclxuLy8vL1xyXG5cclxuLy8vIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIHNlcGFyYXRvci5cclxuLy8vIEB0eXBlIEJvb2xlYW5cclxuJHByb3RvdHlwZS1zZXBhcmF0b3ItYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgYWxpZ25tZW50IG9mIGEgc2VwYXJhdG9yLlxyXG4vLy8gQHR5cGUgU3RyaW5nXHJcbiRwcm90b3R5cGUtc2VwYXJhdG9yLWFsaWduOiBjZW50ZXIgIWRlZmF1bHQ7XHJcblxyXG4vLy8gSGVpZ2h0IG9mIGEgc2VwYXJhdG9yLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRwcm90b3R5cGUtc2VwYXJhdG9yLWhlaWdodDogcmVtLWNhbGMoMikgIWRlZmF1bHQ7XHJcblxyXG4vLy8gV2lkdGggb2YgYSBzZXBhcmF0b3IuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHByb3RvdHlwZS1zZXBhcmF0b3Itd2lkdGg6IDNyZW0gIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBjb2xvciBvZiBhIHNlcGFyYXRvci5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRwcm90b3R5cGUtc2VwYXJhdG9yLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xyXG5cclxuLy8vIFRvcCBNYXJnaW4gb2YgYSBzZXBhcmF0b3IuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHByb3RvdHlwZS1zZXBhcmF0b3ItbWFyZ2luLXRvcDogJGdsb2JhbC1tYXJnaW4gIWRlZmF1bHQ7XHJcblxyXG4vLy8gVGl0bGUgc2VwYXJhdG9yIFV0aWxpdHksIG1vc3RseSB1c2VkIHRvIHN0eWxlIHRoZSBtYWluIGhlYWRpbmcgb2YgYSBzZWN0aW9uXHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGFsaWduIFskcHJvdG90eXBlLXNlcGFyYXRvci1hbGlnbl0gLSBzZXBhcmF0b3IgQWxpZ25tZW50XHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGhlaWdodCBbJHByb3RvdHlwZS1zZXBhcmF0b3ItaGVpZ2h0XSAtIFdpZHRoXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJHdpZHRoIFskcHJvdG90eXBlLXNlcGFyYXRvci13aWR0aF0gLSBIZWlnaHRcclxuLy8vIEBwYXJhbSB7Q29sb3J9ICRiYWNrZ3JvdW5kIFskcHJvdG90eXBlLXNlcGFyYXRvci1iYWNrZ3JvdW5kXSAtIEJhY2tncm91bmRcclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdG9wIFskcHJvdG90eXBlLXNlcGFyYXRvci1tYXJnaW4tdG9wXSAtIE1hcmdpbiBUb3BcclxuQG1peGluIHNlcGFyYXRvciAoXHJcbiAgJGFsaWduOiAkcHJvdG90eXBlLXNlcGFyYXRvci1hbGlnbixcclxuICAkaGVpZ2h0OiAkcHJvdG90eXBlLXNlcGFyYXRvci1oZWlnaHQsXHJcbiAgJHdpZHRoOiAkcHJvdG90eXBlLXNlcGFyYXRvci13aWR0aCxcclxuICAkYmFja2dyb3VuZDogJHByb3RvdHlwZS1zZXBhcmF0b3ItYmFja2dyb3VuZCxcclxuICAkdG9wOiAkcHJvdG90eXBlLXNlcGFyYXRvci1tYXJnaW4tdG9wXHJcbikge1xyXG4gIHRleHQtYWxpZ246ICRhbGlnbiAhaW1wb3J0YW50O1xyXG5cdEBpbmNsdWRlIGNsZWFyZml4O1xyXG5cclxuICAmOjphZnRlciB7XHJcbiAgICBAaW5jbHVkZSBwb3NpdGlvbihyZWxhdGl2ZSk7XHJcbiAgICB3aWR0aDogJHdpZHRoO1xyXG4gICAgYm9yZGVyLWJvdHRvbTogJGhlaWdodCBzb2xpZCAkYmFja2dyb3VuZDtcclxuICAgIG1hcmdpbjogJHRvcCBhdXRvIDA7XHJcblxyXG4gICAgQGlmICRhbGlnbiA9PSBsZWZ0IHtcclxuICAgICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDtcclxuICAgIH1cclxuXHJcbiAgICBAaWYgJGFsaWduID09IHJpZ2h0IHtcclxuICAgICAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtc2VwYXJhdG9yIHtcclxuXHQuc2VwYXJhdG9yLWNlbnRlciB7XHJcblx0XHRAaW5jbHVkZSBzZXBhcmF0b3IoY2VudGVyKTtcclxuXHR9XHJcblxyXG4gIC5zZXBhcmF0b3ItbGVmdCB7XHJcbiAgICBAaW5jbHVkZSBzZXBhcmF0b3IobGVmdCk7XHJcbiAgfVxyXG5cclxuICAuc2VwYXJhdG9yLXJpZ2h0IHtcclxuICAgIEBpbmNsdWRlIHNlcGFyYXRvcihyaWdodCk7XHJcbiAgfVxyXG5cclxuXHRAaWYgKCRwcm90b3R5cGUtc2VwYXJhdG9yLWJyZWFrcG9pbnRzKSB7XHJcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xyXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcclxuICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xyXG4gICAgICAgICAgLiN7JHNpemV9LXNlcGFyYXRvci1jZW50ZXIge1xyXG4gICAgICAgICAgICBAaW5jbHVkZSBzZXBhcmF0b3IoY2VudGVyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC4jeyRzaXplfS1zZXBhcmF0b3ItbGVmdCB7XHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHNlcGFyYXRvcihsZWZ0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC4jeyRzaXplfS1zZXBhcmF0b3ItcmlnaHQge1xyXG4gICAgICAgICAgICBAaW5jbHVkZSBzZXBhcmF0b3IocmlnaHQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgcHJvdG90eXBlLW92ZXJmbG93XHJcbi8vLy9cclxuXHJcbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBvdmVyZmxvdyBoZWxwZXIgY2xhc3Nlc1xyXG4vLy8gQHR5cGUgQm9vbGVhblxyXG4kcHJvdG90eXBlLW92ZXJmbG93LWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcclxuXHJcbi8vLyBNYXAgY29udGFpbmluZyBhbGwgdGhlIGBvdmVyZmxvd2AgY2xhc3Nlc1xyXG4vLy8gQHR5cGUgTWFwXHJcbiRwcm90b3R5cGUtb3ZlcmZsb3c6IChcclxuICB2aXNpYmxlLFxyXG4gIGhpZGRlbixcclxuICBzY3JvbGxcclxuKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBPdmVyZmxvdyBjbGFzc2VzLCBieSBkZWZhdWx0IGNvbWluZyB0aHJvdWdoIGEgbWFwIGAkcHJvdG90eXBlLW92ZXJmbG93YFxyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvdmVyZmxvdyBbXSBPdmVyZmxvdyBjbGFzc2VzXHJcbkBtaXhpbiBvdmVyZmxvdygkb3ZlcmZsb3cpIHtcclxuICBvdmVyZmxvdzogJG92ZXJmbG93ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8vLyBPdmVyZmxvdyBjbGFzc2VzIG9uIGhvcml6b250YWwgYXhpcywgYnkgZGVmYXVsdCBjb21pbmcgdGhyb3VnaCBhIG1hcCBgJHByb3RvdHlwZS1vdmVyZmxvd2BcclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkb3ZlcmZsb3cgW10gT3ZlcmZsb3cgY2xhc3NlcyAoaG9yaXpvbnRhbCBheGlzKVxyXG5AbWl4aW4gb3ZlcmZsb3cteCgkb3ZlcmZsb3cpIHtcclxuICBvdmVyZmxvdy14OiAkb3ZlcmZsb3cgIWltcG9ydGFudDtcclxufVxyXG5cclxuLy8vIE92ZXJmbG93IGNsYXNzZXMgb24gdmVydGljYWwgYXhpcywgYnkgZGVmYXVsdCBjb21pbmcgdGhyb3VnaCBhIG1hcCBgJHByb3RvdHlwZS1vdmVyZmxvd2BcclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkb3ZlcmZsb3cgW10gT3ZlcmZsb3cgY2xhc3NlcyAodmVydGljYWwgYXhpcylcclxuQG1peGluIG92ZXJmbG93LXkoJG92ZXJmbG93KSB7XHJcbiAgb3ZlcmZsb3cteTogJG92ZXJmbG93ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS1vdmVyZmxvdyB7XHJcbiAgQGVhY2ggJG92ZXJmbG93IGluICRwcm90b3R5cGUtb3ZlcmZsb3cge1xyXG4gICAgLm92ZXJmbG93LSN7JG92ZXJmbG93fSB7XHJcbiAgICAgIEBpbmNsdWRlIG92ZXJmbG93KCRvdmVyZmxvdyk7XHJcbiAgICB9XHJcbiAgICAub3ZlcmZsb3cteC0jeyRvdmVyZmxvd30ge1xyXG4gICAgICBAaW5jbHVkZSBvdmVyZmxvdy14KCRvdmVyZmxvdyk7XHJcbiAgICB9XHJcbiAgICAub3ZlcmZsb3cteS0jeyRvdmVyZmxvd30ge1xyXG4gICAgICBAaW5jbHVkZSBvdmVyZmxvdy15KCRvdmVyZmxvdyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaWYgKCRwcm90b3R5cGUtb3ZlcmZsb3ctYnJlYWtwb2ludHMpIHtcclxuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXHJcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcclxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xyXG4gICAgICAgIEBlYWNoICRvdmVyZmxvdyBpbiAkcHJvdG90eXBlLW92ZXJmbG93IHtcclxuICAgICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XHJcbiAgICAgICAgICAgIC4jeyRzaXplfS1vdmVyZmxvdy0jeyRvdmVyZmxvd30ge1xyXG4gICAgICAgICAgICAgIEBpbmNsdWRlIG92ZXJmbG93KCRvdmVyZmxvdyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLiN7JHNpemV9LW92ZXJmbG93LXgtI3skb3ZlcmZsb3d9IHtcclxuICAgICAgICAgICAgICBAaW5jbHVkZSBvdmVyZmxvdy14KCRvdmVyZmxvdyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLiN7JHNpemV9LW92ZXJmbG93LXktI3skb3ZlcmZsb3d9IHtcclxuICAgICAgICAgICAgICBAaW5jbHVkZSBvdmVyZmxvdy15KCRvdmVyZmxvdyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1kaXNwbGF5XHJcbi8vLy9cclxuXHJcbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBkaXNwbGF5IGNsYXNzZXNcclxuLy8vIEB0eXBlIEJvb2xlYW5cclxuJHByb3RvdHlwZS1kaXNwbGF5LWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcclxuXHJcbi8vLyBNYXAgY29udGFpbmluZyBhbGwgdGhlIGBkaXNwbGF5YCBjbGFzc2VzXHJcbi8vLyBAdHlwZSBNYXBcclxuJHByb3RvdHlwZS1kaXNwbGF5OiAoXHJcbiAgaW5saW5lLFxyXG4gIGlubGluZS1ibG9jayxcclxuICBibG9jayxcclxuICB0YWJsZSxcclxuICB0YWJsZS1jZWxsXHJcbikgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGlzcGxheSBjbGFzc2VzLCBieSBkZWZhdWx0IGNvbWluZyB0aHJvdWdoIGEgbWFwIGAkcHJvdG90eXBlLWRpc3BsYXlgXHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGRpc3BsYXkgW10gRGlzcGxheSBjbGFzc2VzXHJcbkBtaXhpbiBkaXNwbGF5KCRkaXNwbGF5KSB7XHJcbiAgZGlzcGxheTogJGRpc3BsYXkgIWltcG9ydGFudDtcclxufVxyXG5cclxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLWRpc3BsYXkge1xyXG4gIEBlYWNoICRkaXNwbGF5IGluICRwcm90b3R5cGUtZGlzcGxheSB7XHJcbiAgICAuZGlzcGxheS0jeyRkaXNwbGF5fSB7XHJcbiAgICAgIEBpbmNsdWRlIGRpc3BsYXkoJGRpc3BsYXkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGlmICgkcHJvdG90eXBlLWRpc3BsYXktYnJlYWtwb2ludHMpIHtcclxuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXHJcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcclxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xyXG4gICAgICAgIEBlYWNoICRkaXNwbGF5IGluICRwcm90b3R5cGUtZGlzcGxheSB7XHJcbiAgICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xyXG4gICAgICAgICAgICAuI3skc2l6ZX0tZGlzcGxheS0jeyRkaXNwbGF5fSB7XHJcbiAgICAgICAgICAgICAgQGluY2x1ZGUgZGlzcGxheSgkZGlzcGxheSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1wb3NpdGlvblxyXG4vLy8vXHJcblxyXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgcG9zaXRpb24gaGVscGVyc1xyXG4vLy8gQHR5cGUgQm9vbGVhblxyXG4kcHJvdG90eXBlLXBvc2l0aW9uLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcclxuXHJcbi8vLyBNYXAgY29udGFpbmluZyBhbGwgdGhlIGBwb3NpdGlvbmAgY2xhc3Nlc1xyXG4vLy8gQHR5cGUgTWFwXHJcbiRwcm90b3R5cGUtcG9zaXRpb246IChcclxuICBzdGF0aWMsXHJcbiAgcmVsYXRpdmUsXHJcbiAgYWJzb2x1dGUsXHJcbiAgZml4ZWRcclxuKSAhZGVmYXVsdDtcclxuXHJcbi8vLyB6LWluZGV4IGZvciBmaXhlZCBwb3NpdGlvbmluZ1xyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRwcm90b3R5cGUtcG9zaXRpb24tei1pbmRleDogOTc1ICFkZWZhdWx0O1xyXG5cclxuLy8vIFBvc2l0aW9uIGNsYXNzZXMsIGJ5IGRlZmF1bHQgY29taW5nIHRocm91Z2ggYSBtYXAgYCRwcm90b3R5cGUtcG9zaXRpb25gLCB3aGVyZWFzIGFsbCB0aGUgb2Zmc2V0IHZhbHVlcyBhcmUgbXVsdGlwbGllZCBieSBgJGdsb2JhbC1wb3NpdGlvbmAgd2hpY2ggYnkgZGVmYXVsdCBpcyBlcXVhbCB0byBgMXJlbWAuXHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHBvc2l0aW9uIFtdIFBvc2l0aW9uIGNsYXNzZXMsIEVpdGhlciBgc3RhdGljYCwgYHJlbGF0aXZlYCwgYGFic29sdXRlYCBvciBgZml4ZWRgXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJHRvcCBbbnVsbF0gLSBUb3Agb2Zmc2V0XHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJHJpZ2h0IFtudWxsXSAtIFJpZ2h0IG9mZnNldFxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRib3R0b20gW251bGxdIC0gQm90dG9tIG9mZnNldFxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRsZWZ0IFtudWxsXSAtIExlZnQgb2Zmc2V0XHJcbkBtaXhpbiBwb3NpdGlvbihcclxuICAkcG9zaXRpb24sXHJcbiAgJHRvcDogbnVsbCxcclxuICAkcmlnaHQ6IG51bGwsXHJcbiAgJGJvdHRvbTogbnVsbCxcclxuICAkbGVmdDogbnVsbFxyXG4pIHtcclxuICBwb3NpdGlvbjogJHBvc2l0aW9uICFpbXBvcnRhbnQ7XHJcbiAgQGlmICR0b3AgIT0gbnVsbCB7XHJcbiAgICB0b3A6ICR0b3AgKiAkZ2xvYmFsLXBvc2l0aW9uICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG4gIEBpZiAkcmlnaHQgIT0gbnVsbCB7XHJcbiAgICByaWdodDogJHJpZ2h0ICogJGdsb2JhbC1wb3NpdGlvbiAhaW1wb3J0YW50O1xyXG4gIH1cclxuICBAaWYgJGJvdHRvbSAhPSBudWxsIHtcclxuICAgIGJvdHRvbTogJGJvdHRvbSAqICRnbG9iYWwtcG9zaXRpb24gIWltcG9ydGFudDtcclxuICB9XHJcbiAgQGlmICRsZWZ0ICE9IG51bGwge1xyXG4gICAgbGVmdDogJGxlZnQgKiAkZ2xvYmFsLXBvc2l0aW9uICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gUG9zaXRpb24gRml4ZWQgb24gdG9wIGNvcm5lcnNcclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkei1pbmRleCBbJHByb3RvdHlwZS1wb3NpdGlvbi16LWluZGV4XSB6LWluZGV4IGZvciBgcG9zaXRpb24tZml4ZWQtdG9wYFxyXG5AbWl4aW4gcG9zaXRpb24tZml4ZWQtdG9wKFxyXG4gICR6LWluZGV4OiAkcHJvdG90eXBlLXBvc2l0aW9uLXotaW5kZXhcclxuKSB7XHJcbiAgQGluY2x1ZGUgcG9zaXRpb24oZml4ZWQsIDAsIDAsIG51bGwsIDApO1xyXG4gIHotaW5kZXg6ICR6LWluZGV4O1xyXG59XHJcblxyXG4vLy8gUG9zaXRpb24gRml4ZWQgb24gYm90dG9tIGNvcm5lcnNcclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkei1pbmRleCBbJHByb3RvdHlwZS1wb3NpdGlvbi16LWluZGV4XSB6LWluZGV4IGZvciBgcG9zaXRpb24tZml4ZWQtYm90dG9tYFxyXG5AbWl4aW4gcG9zaXRpb24tZml4ZWQtYm90dG9tKFxyXG4gICR6LWluZGV4OiAkcHJvdG90eXBlLXBvc2l0aW9uLXotaW5kZXhcclxuKSB7XHJcbiAgQGluY2x1ZGUgcG9zaXRpb24oZml4ZWQsIG51bGwsIDAsIDAsIDApO1xyXG4gIHotaW5kZXg6ICR6LWluZGV4O1xyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtcG9zaXRpb24ge1xyXG4gIC8vIFBvc2l0aW9uOiBTdGF0aWMsIFJlbGF0aXZlLCBGaXhlZCwgQWJzb2x1dGVcclxuICBAZWFjaCAkcG9zaXRpb24gaW4gJHByb3RvdHlwZS1wb3NpdGlvbiB7XHJcbiAgICAucG9zaXRpb24tI3skcG9zaXRpb259IHtcclxuICAgICAgQGluY2x1ZGUgcG9zaXRpb24oJHBvc2l0aW9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFBvc2l0aW9uOiBGaXhlZCBUb3AsIEZpeGVkIEJvdHRvbVxyXG4gIC5wb3NpdGlvbi1maXhlZC10b3Age1xyXG4gICAgQGluY2x1ZGUgcG9zaXRpb24tZml4ZWQtdG9wO1xyXG4gIH1cclxuICAucG9zaXRpb24tZml4ZWQtYm90dG9tIHtcclxuICAgIEBpbmNsdWRlIHBvc2l0aW9uLWZpeGVkLWJvdHRvbTtcclxuICB9XHJcblxyXG4gIEBpZiAoJHByb3RvdHlwZS1wb3NpdGlvbi1icmVha3BvaW50cykge1xyXG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcclxuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xyXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XHJcbiAgICAgICAgLy8gUG9zaXRpb246IFN0YXRpYywgUmVsYXRpdmUsIEZpeGVkLCBBYnNvbHV0ZVxyXG4gICAgICAgIEBlYWNoICRwb3NpdGlvbiBpbiAkcHJvdG90eXBlLXBvc2l0aW9uIHtcclxuICAgICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XHJcbiAgICAgICAgICAgIC4jeyRzaXplfS1wb3NpdGlvbi0jeyRwb3NpdGlvbn0ge1xyXG4gICAgICAgICAgICAgIEBpbmNsdWRlIHBvc2l0aW9uKCRwb3NpdGlvbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFBvc2l0aW9uOiBGaXhlZCBUb3AsIEZpeGVkIEJvdHRvbVxyXG4gICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XHJcbiAgICAgICAgICAuI3skc2l6ZX0tcG9zaXRpb24tZml4ZWQtdG9wIHtcclxuICAgICAgICAgICAgQGluY2x1ZGUgcG9zaXRpb24tZml4ZWQtdG9wO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC4jeyRzaXplfS1wb3NpdGlvbi1maXhlZC1ib3R0b20ge1xyXG4gICAgICAgICAgICBAaW5jbHVkZSBwb3NpdGlvbi1maXhlZC1ib3R0b207XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBwcm90b3R5cGUtYm9yZGVyLWJveFxyXG4vLy8vXHJcblxyXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgYm9yZGVyIGJveC5cclxuLy8vIEB0eXBlIEJvb2xlYW5cclxuJHByb3RvdHlwZS1ib3JkZXItYm94LWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcclxuXHJcbi8vLyBCb3JkZXIgYm94IHV0aWxpdHlcclxuQG1peGluIGJvcmRlci1ib3gge1xyXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDtcclxufVxyXG5cclxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLWJvcmRlci1ib3gge1xyXG4gIC5ib3JkZXItYm94IHtcclxuICAgIEBpbmNsdWRlIGJvcmRlci1ib3g7XHJcbiAgfVxyXG5cclxuICBAaWYgKCRwcm90b3R5cGUtYm9yZGVyLWJveC1icmVha3BvaW50cykge1xyXG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcclxuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xyXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XHJcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcclxuICAgICAgICAgIC4jeyRzaXplfS1ib3JkZXItYm94IHtcclxuICAgICAgICAgICAgQGluY2x1ZGUgYm9yZGVyLWJveDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1ib3JkZXItbm9uZVxyXG4vLy8vXHJcblxyXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgYm9yZGVyIG5vbmUuXHJcbi8vLyBAdHlwZSBCb29sZWFuXHJcbiRwcm90b3R5cGUtYm9yZGVyLW5vbmUtYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xyXG5cclxuLy8vIEJvcmRlciBub25lIHV0aWxpdHlcclxuQG1peGluIGJvcmRlci1ub25lIHtcclxuICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcclxufVxyXG5cclxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLWJvcmRlci1ub25lIHtcclxuICAuYm9yZGVyLW5vbmUge1xyXG4gICAgQGluY2x1ZGUgYm9yZGVyLW5vbmU7XHJcbiAgfVxyXG5cclxuICBAaWYgKCRwcm90b3R5cGUtYm9yZGVyLW5vbmUtYnJlYWtwb2ludHMpIHtcclxuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXHJcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcclxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xyXG4gICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XHJcbiAgICAgICAgICAuI3skc2l6ZX0tYm9yZGVyLW5vbmUge1xyXG4gICAgICAgICAgICBAaW5jbHVkZSBib3JkZXItbm9uZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1zaXppbmdcclxuLy8vL1xyXG5cclxuLy8vIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIHNwYWNpbmcgY2xhc3NlcyAobWFyZ2luIGFuZCBwYWRkaW5nKVxyXG4vLy8gQHR5cGUgQm9vbGVhblxyXG4kcHJvdG90eXBlLXNpemluZy1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XHJcblxyXG4vLy8gTWFwIGNvbnRhaW5pbmcgYWxsIHRoZSBgc2l6aW5nYCBjbGFzc2VzXHJcbi8vLyBAdHlwZSBNYXBcclxuJHByb3RvdHlwZS1zaXppbmc6IChcclxuICB3aWR0aCxcclxuICBoZWlnaHRcclxuKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBNYXAgY29udGFpbmluZyBhbGwgdGhlIHNpemVzLlxyXG4vLy8gQHR5cGUgTWFwXHJcbiRwcm90b3R5cGUtc2l6ZXM6IChcclxuICAyNTogMjUlLFxyXG4gIDUwOiA1MCUsXHJcbiAgNzU6IDc1JSxcclxuICAxMDA6IDEwMCVcclxuKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBNYXggV2lkdGggMTAwIHV0aWxpdHkuXHJcbkBtaXhpbiBtYXgtd2lkdGgtMTAwIHtcclxuICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcclxufVxyXG5cclxuLy8vIE1heCBIZWlnaHQgMTAwIHV0aWxpdHkuXHJcbkBtaXhpbiBtYXgtaGVpZ2h0LTEwMCB7XHJcbiAgbWF4LWhlaWdodDogMTAwJSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtc2l6aW5nIHtcclxuICAvLyBFbGVtZW50IFNpemluZ1xyXG4gIEBlYWNoICRzaXppbmcgaW4gJHByb3RvdHlwZS1zaXppbmcge1xyXG4gICAgQGVhY2ggJGxlbmd0aCwgJHBlcmNlbnRhZ2UgaW4gJHByb3RvdHlwZS1zaXplcyB7XHJcbiAgICAgIC4jeyRzaXppbmd9LSN7JGxlbmd0aH0ge1xyXG4gICAgICAgICN7JHNpemluZ306ICRwZXJjZW50YWdlICFpbXBvcnRhbnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIE1heCB3aWR0aCAmIGhlaWdodFxyXG4gIC5tYXgtd2lkdGgtMTAwIHtcclxuICAgIEBpbmNsdWRlIG1heC13aWR0aC0xMDA7XHJcbiAgfVxyXG4gIC5tYXgtaGVpZ2h0LTEwMCB7XHJcbiAgICBAaW5jbHVkZSBtYXgtaGVpZ2h0LTEwMDtcclxuICB9XHJcblxyXG4gIEBpZiAoJHByb3RvdHlwZS1zaXppbmctYnJlYWtwb2ludHMpIHtcclxuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXHJcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcclxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xyXG4gICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XHJcbiAgICAgICAgICBAZWFjaCAkc2l6aW5nIGluICRwcm90b3R5cGUtc2l6aW5nIHtcclxuICAgICAgICAgICAgQGVhY2ggJGxlbmd0aCwgJHBlcmNlbnRhZ2UgaW4gJHByb3RvdHlwZS1zaXplcyB7XHJcbiAgICAgICAgICAgICAgLiN7JHNpemV9LSN7JHNpemluZ30tI3skbGVuZ3RofSB7XHJcbiAgICAgICAgICAgICAgICAjeyRzaXppbmd9OiAkcGVyY2VudGFnZSAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgcHJvdG90eXBlLXNwYWNpbmdcclxuLy8vL1xyXG5cclxuLy8vIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIHNwYWNpbmcgY2xhc3NlcyAobWFyZ2luIGFuZCBwYWRkaW5nKVxyXG4vLy8gQHR5cGUgQm9vbGVhblxyXG4kcHJvdG90eXBlLXNwYWNpbmctYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgbnVtYmVyIG9mIHNwYWNlcnMgY291bnQgKG1hcmdpbiBhbmQgcGFkZGluZylcclxuLy8vIEB0eXBlIE51bWJlclxyXG4kcHJvdG90eXBlLXNwYWNlcnMtY291bnQ6IDMgIWRlZmF1bHQ7XHJcblxyXG4vLy8gTWFyZ2luIGhlbHBlciBtaXhpbiwgYWxsIHRoZSB2YWx1ZXMgYXJlIG11bHRpcGxpZWQgYnkgYCRnbG9iYWwtbWFyZ2luYCB3aGljaCBieSBkZWZhdWx0IGlzIGVxdWFsIHRvIGAxcmVtYFxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR0b3AgW251bGxdIC0gTWFyZ2luIFRvcFxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRyaWdodCBbbnVsbF0gLSBNYXJnaW4gUmlnaHRcclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYm90dG9tIFtudWxsXSAtIE1hcmdpbiBCb3R0b21cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbGVmdCBbbnVsbF0gLSBNYXJnaW4gTGVmdFxyXG5AbWl4aW4gbWFyZ2luKFxyXG4gICR0b3A6IG51bGwsXHJcbiAgJHJpZ2h0OiBudWxsLFxyXG4gICRib3R0b206IG51bGwsXHJcbiAgJGxlZnQ6IG51bGxcclxuKSB7XHJcbiAgQGlmICR0b3AgIT0gbnVsbCB7XHJcbiAgICBtYXJnaW4tdG9wOiAkdG9wICogJGdsb2JhbC1tYXJnaW4gIWltcG9ydGFudDtcclxuICB9XHJcbiAgQGlmICRyaWdodCAhPSBudWxsIHtcclxuICAgIG1hcmdpbi1yaWdodDogJHJpZ2h0ICogJGdsb2JhbC1tYXJnaW4gIWltcG9ydGFudDtcclxuICB9XHJcbiAgQGlmICRib3R0b20gIT0gbnVsbCB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAkYm90dG9tICogJGdsb2JhbC1tYXJnaW4gIWltcG9ydGFudDtcclxuICB9XHJcbiAgQGlmICRsZWZ0ICE9IG51bGwge1xyXG4gICAgbWFyZ2luLWxlZnQ6ICRsZWZ0ICogJGdsb2JhbC1tYXJnaW4gIWltcG9ydGFudDtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBQYWRkaW5nIGhlbHBlciBtaXhpbiwgYWxsIHRoZSB2YWx1ZXMgYXJlIG11bHRpcGxpZWQgYnkgYCRnbG9iYWwtcGFkZGluZ2Agd2hpY2ggYnkgZGVmYXVsdCBpcyBlcXVhbCB0byBgMXJlbWBcclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdG9wIFtudWxsXSAtIFBhZGRpbmcgVG9wXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJHJpZ2h0IFtudWxsXSAtIFBhZGRpbmcgUmlnaHRcclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYm90dG9tIFtudWxsXSAtIFBhZGRpbmcgQm90dG9tXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGxlZnQgW251bGxdIC0gUGFkZGluZyBMZWZ0XHJcbkBtaXhpbiBwYWRkaW5nKFxyXG4gICR0b3A6IG51bGwsXHJcbiAgJHJpZ2h0OiBudWxsLFxyXG4gICRib3R0b206IG51bGwsXHJcbiAgJGxlZnQ6IG51bGxcclxuKSB7XHJcbiAgQGlmICR0b3AgIT0gbnVsbCB7XHJcbiAgICBwYWRkaW5nLXRvcDogJHRvcCAqICRnbG9iYWwtcGFkZGluZyAhaW1wb3J0YW50O1xyXG4gIH1cclxuICBAaWYgJHJpZ2h0ICE9IG51bGwge1xyXG4gICAgcGFkZGluZy1yaWdodDogJHJpZ2h0ICogJGdsb2JhbC1wYWRkaW5nICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG4gIEBpZiAkYm90dG9tICE9IG51bGwge1xyXG4gICAgcGFkZGluZy1ib3R0b206ICRib3R0b20gKiAkZ2xvYmFsLXBhZGRpbmcgIWltcG9ydGFudDtcclxuICB9XHJcbiAgQGlmICRsZWZ0ICE9IG51bGwge1xyXG4gICAgcGFkZGluZy1sZWZ0OiAkbGVmdCAqICRnbG9iYWwtcGFkZGluZyAhaW1wb3J0YW50O1xyXG4gIH1cclxufVxyXG5cclxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLXNwYWNpbmcge1xyXG4gIEBmb3IgJHNwYWNlciBmcm9tIDAgdGhyb3VnaCAkcHJvdG90eXBlLXNwYWNlcnMtY291bnQge1xyXG4gICAgLy8gQWxsIFNpZGVzXHJcbiAgICAubWFyZ2luLSN7JHNwYWNlcn0ge1xyXG4gICAgICBAaW5jbHVkZSBtYXJnaW4oJHNwYWNlciwgJHNwYWNlciwgJHNwYWNlciwgJHNwYWNlcik7XHJcbiAgICB9XHJcblxyXG4gICAgLnBhZGRpbmctI3skc3BhY2VyfSB7XHJcbiAgICAgIEBpbmNsdWRlIHBhZGRpbmcoJHNwYWNlciwgJHNwYWNlciwgJHNwYWNlciwgJHNwYWNlcik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVG9wIFNpZGVcclxuICAgIC5tYXJnaW4tdG9wLSN7JHNwYWNlcn0ge1xyXG4gICAgICBAaW5jbHVkZSBtYXJnaW4oJHNwYWNlciwgbnVsbCwgbnVsbCwgbnVsbCk7XHJcbiAgICB9XHJcblxyXG4gICAgLnBhZGRpbmctdG9wLSN7JHNwYWNlcn0ge1xyXG4gICAgICBAaW5jbHVkZSBwYWRkaW5nKCRzcGFjZXIsIG51bGwsIG51bGwsIG51bGwpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFJpZ2h0IFNpZGVcclxuICAgIC5tYXJnaW4tcmlnaHQtI3skc3BhY2VyfSB7XHJcbiAgICAgIEBpbmNsdWRlIG1hcmdpbihudWxsLCAkc3BhY2VyLCBudWxsLCBudWxsKTtcclxuICAgIH1cclxuXHJcbiAgICAucGFkZGluZy1yaWdodC0jeyRzcGFjZXJ9IHtcclxuICAgICAgQGluY2x1ZGUgcGFkZGluZyhudWxsLCAkc3BhY2VyLCBudWxsLCBudWxsKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBCb3R0b20gU2lkZVxyXG4gICAgLm1hcmdpbi1ib3R0b20tI3skc3BhY2VyfSB7XHJcbiAgICAgIEBpbmNsdWRlIG1hcmdpbihudWxsLCBudWxsLCAkc3BhY2VyLCBudWxsKTtcclxuICAgIH1cclxuXHJcbiAgICAucGFkZGluZy1ib3R0b20tI3skc3BhY2VyfSB7XHJcbiAgICAgIEBpbmNsdWRlIHBhZGRpbmcobnVsbCwgbnVsbCwgJHNwYWNlciwgbnVsbCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTGVmdCBTaWRlXHJcbiAgICAubWFyZ2luLWxlZnQtI3skc3BhY2VyfSB7XHJcbiAgICAgIEBpbmNsdWRlIG1hcmdpbihudWxsLCBudWxsLCBudWxsLCAkc3BhY2VyKTtcclxuICAgIH1cclxuXHJcbiAgICAucGFkZGluZy1sZWZ0LSN7JHNwYWNlcn0ge1xyXG4gICAgICBAaW5jbHVkZSBwYWRkaW5nKG51bGwsIG51bGwsIG51bGwsICRzcGFjZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEhvcml6b250YWwgQXhlc1xyXG4gICAgLm1hcmdpbi1ob3Jpem9udGFsLSN7JHNwYWNlcn0ge1xyXG4gICAgICBAaW5jbHVkZSBtYXJnaW4obnVsbCwgJHNwYWNlciwgbnVsbCwgJHNwYWNlcik7XHJcbiAgICB9XHJcblxyXG4gICAgLnBhZGRpbmctaG9yaXpvbnRhbC0jeyRzcGFjZXJ9IHtcclxuICAgICAgQGluY2x1ZGUgcGFkZGluZyhudWxsLCAkc3BhY2VyLCBudWxsLCAkc3BhY2VyKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBWZXJ0aWNhbCBBeGVzXHJcbiAgICAubWFyZ2luLXZlcnRpY2FsLSN7JHNwYWNlcn0ge1xyXG4gICAgICBAaW5jbHVkZSBtYXJnaW4oJHNwYWNlciwgbnVsbCwgJHNwYWNlciwgbnVsbClcclxuICAgIH1cclxuXHJcbiAgICAucGFkZGluZy12ZXJ0aWNhbC0jeyRzcGFjZXJ9IHtcclxuICAgICAgQGluY2x1ZGUgcGFkZGluZygkc3BhY2VyLCBudWxsLCAkc3BhY2VyLCBudWxsKVxyXG4gICAgfVxyXG5cclxuICAgIEBpZiAoJHByb3RvdHlwZS1zcGFjaW5nLWJyZWFrcG9pbnRzKSB7XHJcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xyXG4gICAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcclxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XHJcbiAgICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xyXG4gICAgICAgICAgICAvLyBBbGwgU2lkZXNcclxuICAgICAgICAgICAgLiN7JHNpemV9LW1hcmdpbi0jeyRzcGFjZXJ9IHtcclxuICAgICAgICAgICAgICBAaW5jbHVkZSBtYXJnaW4oJHNwYWNlciwgJHNwYWNlciwgJHNwYWNlciwgJHNwYWNlcik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC4jeyRzaXplfS1wYWRkaW5nLSN7JHNwYWNlcn0ge1xyXG4gICAgICAgICAgICAgIEBpbmNsdWRlIHBhZGRpbmcoJHNwYWNlciwgJHNwYWNlciwgJHNwYWNlciwgJHNwYWNlcik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIFRvcCBTaWRlXHJcbiAgICAgICAgICAgIC4jeyRzaXplfS1tYXJnaW4tdG9wLSN7JHNwYWNlcn0ge1xyXG4gICAgICAgICAgICAgIEBpbmNsdWRlIG1hcmdpbigkc3BhY2VyLCBudWxsLCBudWxsLCBudWxsKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLiN7JHNpemV9LXBhZGRpbmctdG9wLSN7JHNwYWNlcn0ge1xyXG4gICAgICAgICAgICAgIEBpbmNsdWRlIHBhZGRpbmcoJHNwYWNlciwgbnVsbCwgbnVsbCwgbnVsbCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIFJpZ2h0IFNpZGVcclxuICAgICAgICAgICAgLiN7JHNpemV9LW1hcmdpbi1yaWdodC0jeyRzcGFjZXJ9IHtcclxuICAgICAgICAgICAgICBAaW5jbHVkZSBtYXJnaW4obnVsbCwgJHNwYWNlciwgbnVsbCwgbnVsbCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC4jeyRzaXplfS1wYWRkaW5nLXJpZ2h0LSN7JHNwYWNlcn0ge1xyXG4gICAgICAgICAgICAgIEBpbmNsdWRlIHBhZGRpbmcobnVsbCwgJHNwYWNlciwgbnVsbCwgbnVsbCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIEJvdHRvbSBTaWRlXHJcbiAgICAgICAgICAgIC4jeyRzaXplfS1tYXJnaW4tYm90dG9tLSN7JHNwYWNlcn0ge1xyXG4gICAgICAgICAgICAgIEBpbmNsdWRlIG1hcmdpbihudWxsLCBudWxsLCAkc3BhY2VyLCBudWxsKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLiN7JHNpemV9LXBhZGRpbmctYm90dG9tLSN7JHNwYWNlcn0ge1xyXG4gICAgICAgICAgICAgIEBpbmNsdWRlIHBhZGRpbmcobnVsbCwgbnVsbCwgJHNwYWNlciwgbnVsbCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIExlZnQgU2lkZVxyXG4gICAgICAgICAgICAuI3skc2l6ZX0tbWFyZ2luLWxlZnQtI3skc3BhY2VyfSB7XHJcbiAgICAgICAgICAgICAgQGluY2x1ZGUgbWFyZ2luKG51bGwsIG51bGwsIG51bGwsICRzcGFjZXIpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAuI3skc2l6ZX0tcGFkZGluZy1sZWZ0LSN7JHNwYWNlcn0ge1xyXG4gICAgICAgICAgICAgIEBpbmNsdWRlIHBhZGRpbmcobnVsbCwgbnVsbCwgbnVsbCwgJHNwYWNlcik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIEhvcml6b250YWwgQXhlc1xyXG4gICAgICAgICAgICAuI3skc2l6ZX0tbWFyZ2luLWhvcml6b250YWwtI3skc3BhY2VyfSB7XHJcbiAgICAgICAgICAgICAgQGluY2x1ZGUgbWFyZ2luKG51bGwsICRzcGFjZXIsIG51bGwsICRzcGFjZXIpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAuI3skc2l6ZX0tcGFkZGluZy1ob3Jpem9udGFsLSN7JHNwYWNlcn0ge1xyXG4gICAgICAgICAgICAgIEBpbmNsdWRlIHBhZGRpbmcobnVsbCwgJHNwYWNlciwgbnVsbCwgJHNwYWNlcik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIFZlcnRpY2FsIEF4ZXNcclxuICAgICAgICAgICAgLiN7JHNpemV9LW1hcmdpbi12ZXJ0aWNhbC0jeyRzcGFjZXJ9IHtcclxuICAgICAgICAgICAgICBAaW5jbHVkZSBtYXJnaW4oJHNwYWNlciwgbnVsbCwgJHNwYWNlciwgbnVsbClcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLiN7JHNpemV9LXBhZGRpbmctdmVydGljYWwtI3skc3BhY2VyfSB7XHJcbiAgICAgICAgICAgICAgQGluY2x1ZGUgcGFkZGluZygkc3BhY2VyLCBudWxsLCAkc3BhY2VyLCBudWxsKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIlxyXG4vLyAgRm91bmRhdGlvbiBmb3IgU2l0ZXMgU2V0dGluZ3NcclxuLy8gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbi8vXHJcbi8vICBUYWJsZSBvZiBDb250ZW50czpcclxuLy9cclxuLy8gICAxLiBHbG9iYWxcclxuLy8gICAyLiBCcmVha3BvaW50c1xyXG4vLyAgIDMuIFRoZSBHcmlkXHJcbi8vICAgNC4gQmFzZSBUeXBvZ3JhcGh5XHJcbi8vICAgNS4gVHlwb2dyYXBoeSBIZWxwZXJzXHJcbi8vICAgNi4gQWJpZGVcclxuLy8gICA3LiBBY2NvcmRpb25cclxuLy8gICA4LiBBY2NvcmRpb24gTWVudVxyXG4vLyAgIDkuIEJhZGdlXHJcbi8vICAxMC4gQnJlYWRjcnVtYnNcclxuLy8gIDExLiBCdXR0b25cclxuLy8gIDEyLiBCdXR0b24gR3JvdXBcclxuLy8gIDEzLiBDYWxsb3V0XHJcbi8vICAxNC4gQ2FyZFxyXG4vLyAgMTUuIENsb3NlIEJ1dHRvblxyXG4vLyAgMTYuIERyaWxsZG93blxyXG4vLyAgMTcuIERyb3Bkb3duXHJcbi8vICAxOC4gRHJvcGRvd24gTWVudVxyXG4vLyAgMTkuIEZsZXhib3ggVXRpbGl0aWVzXHJcbi8vICAyMC4gRm9ybXNcclxuLy8gIDIxLiBMYWJlbFxyXG4vLyAgMjIuIE1lZGlhIE9iamVjdFxyXG4vLyAgMjMuIE1lbnVcclxuLy8gIDI0LiBNZXRlclxyXG4vLyAgMjUuIE9mZi1jYW52YXNcclxuLy8gIDI2LiBPcmJpdFxyXG4vLyAgMjcuIFBhZ2luYXRpb25cclxuLy8gIDI4LiBQcm9ncmVzcyBCYXJcclxuLy8gIDI5LiBQcm90b3R5cGUgQXJyb3dcclxuLy8gIDMwLiBQcm90b3R5cGUgQm9yZGVyLUJveFxyXG4vLyAgMzEuIFByb3RvdHlwZSBCb3JkZXItTm9uZVxyXG4vLyAgMzIuIFByb3RvdHlwZSBCb3JkZXJlZFxyXG4vLyAgMzMuIFByb3RvdHlwZSBEaXNwbGF5XHJcbi8vICAzNC4gUHJvdG90eXBlIEZvbnQtU3R5bGluZ1xyXG4vLyAgMzUuIFByb3RvdHlwZSBMaXN0LVN0eWxlLVR5cGVcclxuLy8gIDM2LiBQcm90b3R5cGUgT3ZlcmZsb3dcclxuLy8gIDM3LiBQcm90b3R5cGUgUG9zaXRpb25cclxuLy8gIDM4LiBQcm90b3R5cGUgUm91bmRlZFxyXG4vLyAgMzkuIFByb3RvdHlwZSBTZXBhcmF0b3JcclxuLy8gIDQwLiBQcm90b3R5cGUgU2hhZG93XHJcbi8vICA0MS4gUHJvdG90eXBlIFNpemluZ1xyXG4vLyAgNDIuIFByb3RvdHlwZSBTcGFjaW5nXHJcbi8vICA0My4gUHJvdG90eXBlIFRleHQtRGVjb3JhdGlvblxyXG4vLyAgNDQuIFByb3RvdHlwZSBUZXh0LVRyYW5zZm9ybWF0aW9uXHJcbi8vICA0NS4gUHJvdG90eXBlIFRleHQtVXRpbGl0aWVzXHJcbi8vICA0Ni4gUmVzcG9uc2l2ZSBFbWJlZFxyXG4vLyAgNDcuIFJldmVhbFxyXG4vLyAgNDguIFNsaWRlclxyXG4vLyAgNDkuIFN3aXRjaFxyXG4vLyAgNTAuIFRhYmxlXHJcbi8vICA1MS4gVGFic1xyXG4vLyAgNTIuIFRodW1ibmFpbFxyXG4vLyAgNTMuIFRpdGxlIEJhclxyXG4vLyAgNTQuIFRvb2x0aXBcclxuLy8gIDU1LiBUb3AgQmFyXHJcbi8vICA1Ni4gWHkgR3JpZFxyXG5cclxuXHJcbi8vIDEuIEdsb2JhbFxyXG4vLyAtLS0tLS0tLS1cclxuXHJcbiRnbG9iYWwtZm9udC1zaXplOiAxMDAlO1xyXG4kZ2xvYmFsLXdpZHRoOiByZW0tY2FsYygxMjAwKTtcclxuJGdsb2JhbC1saW5laGVpZ2h0OiAxLjU7XHJcbiRmb3VuZGF0aW9uLXBhbGV0dGU6IChcclxuICBwcmltYXJ5OiAkcmVkLFxyXG4gIHNlY29uZGFyeTogJGdyZXktZGFyayxcclxuICBzdWNjZXNzOiAjM2FkYjc2LFxyXG4gIHdhcm5pbmc6ICNmZmFlMDAsXHJcbiAgYWxlcnQ6ICNjYzRiMzcsXHJcbik7XHJcbiRsaWdodC1ncmF5OiAjZjVmNWY1O1xyXG4kbWVkaXVtLWdyYXk6ICNlZWVlZWU7XHJcbiRkYXJrLWdyYXk6ICMzMzMzMzM7XHJcbiRibGFjazogJGJsYWNrO1xyXG4kd2hpdGU6ICR3aGl0ZTtcclxuJGJvZHktYmFja2dyb3VuZDogJHdoaXRlO1xyXG4kYm9keS1mb250LWNvbG9yOiAkYmxhY2s7XHJcbiRib2R5LWZvbnQtZmFtaWx5OiAnQWtrdXJhdC1MaWdodCcsIHNhbnMtc2VyaWY7XHJcbiRib2R5LWFudGlhbGlhc2VkOiB0cnVlO1xyXG4kZ2xvYmFsLW1hcmdpbjogMXJlbTtcclxuJGdsb2JhbC1wYWRkaW5nOiAxcmVtO1xyXG4kZ2xvYmFsLXBvc2l0aW9uOiAxcmVtO1xyXG4kZ2xvYmFsLXdlaWdodC1ub3JtYWw6IG5vcm1hbDtcclxuJGdsb2JhbC13ZWlnaHQtYm9sZDogYm9sZDtcclxuJGdsb2JhbC1yYWRpdXM6IDA7XHJcbiRnbG9iYWwtbWVudS1wYWRkaW5nOiAwLjdyZW0gMXJlbTtcclxuJGdsb2JhbC1tZW51LW5lc3RlZC1tYXJnaW46IDFyZW07XHJcbiRnbG9iYWwtdGV4dC1kaXJlY3Rpb246IGx0cjtcclxuJGdsb2JhbC1mbGV4Ym94OiB0cnVlO1xyXG4kZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50czogZmFsc2U7XHJcbiRnbG9iYWwtYnV0dG9uLWN1cnNvcjogYXV0bztcclxuJGdsb2JhbC1jb2xvci1waWNrLWNvbnRyYXN0LXRvbGVyYW5jZTogMDtcclxuJHByaW50LXRyYW5zcGFyZW50LWJhY2tncm91bmRzOiB0cnVlO1xyXG5cclxuQGluY2x1ZGUgYWRkLWZvdW5kYXRpb24tY29sb3JzO1xyXG5cclxuLy8gMi4gQnJlYWtwb2ludHNcclxuLy8gLS0tLS0tLS0tLS0tLS1cclxuXHJcbiRicmVha3BvaW50czogKFxyXG4gIHNtYWxsOiAwLFxyXG4gIG1lZGl1bTogNzY4cHgsXHJcbiAgbGFyZ2U6IDEwMjRweCxcclxuICB4bGFyZ2U6IDEyMDBweCxcclxuICB4eGxhcmdlOiAxNDQwcHgsXHJcbik7XHJcbiRwcmludC1icmVha3BvaW50OiBsYXJnZTtcclxuJGJyZWFrcG9pbnQtY2xhc3NlczogKHNtYWxsIG1lZGl1bSBsYXJnZSk7XHJcblxyXG4vLyAzLiBUaGUgR3JpZFxyXG4vLyAtLS0tLS0tLS0tLVxyXG5cclxuJGdyaWQtcm93LXdpZHRoOiAkZ2xvYmFsLXdpZHRoO1xyXG4kZ3JpZC1jb2x1bW4tY291bnQ6IDEyO1xyXG4kZ3JpZC1jb2x1bW4tZ3V0dGVyOiAoXHJcbiAgc21hbGw6IDUwcHgsXHJcbiAgbWVkaXVtOiAyMHB4LFxyXG4pO1xyXG4kZ3JpZC1jb2x1bW4tYWxpZ24tZWRnZTogdHJ1ZTtcclxuJGdyaWQtY29sdW1uLWFsaWFzOiAnY29sdW1ucyc7XHJcbiRibG9jay1ncmlkLW1heDogODtcclxuXHJcbi8vIDQuIEJhc2UgVHlwb2dyYXBoeVxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiRoZWFkZXItZm9udC1mYW1pbHk6ICdBa2t1cmF0LVJlZ3VsYXJCb2xkJywgc2Fucy1zZXJpZjtcclxuJGhlYWRlci1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsO1xyXG4kaGVhZGVyLWZvbnQtc3R5bGU6IG5vcm1hbDtcclxuJGZvbnQtZmFtaWx5LW1vbm9zcGFjZTogQ29uc29sYXMsICdMaWJlcmF0aW9uIE1vbm8nLCBDb3VyaWVyLCBtb25vc3BhY2U7XHJcbiRoZWFkZXItY29sb3I6IGluaGVyaXQ7XHJcbiRoZWFkZXItbGluZWhlaWdodDogMS40O1xyXG4kaGVhZGVyLW1hcmdpbi1ib3R0b206IDAuNXJlbTtcclxuJGhlYWRlci1zdHlsZXM6IChcclxuICBzbWFsbDogKFxyXG4gICAgJ2gxJzogKCdmb250LXNpemUnOiAyNCksXHJcbiAgICAnaDInOiAoJ2ZvbnQtc2l6ZSc6IDIwKSxcclxuICAgICdoMyc6ICgnZm9udC1zaXplJzogMTkpLFxyXG4gICAgJ2g0JzogKCdmb250LXNpemUnOiAxOCksXHJcbiAgICAnaDUnOiAoJ2ZvbnQtc2l6ZSc6IDE3KSxcclxuICAgICdoNic6ICgnZm9udC1zaXplJzogMTYpLFxyXG4gICksXHJcbiAgbWVkaXVtOiAoXHJcbiAgICAnaDEnOiAoJ2ZvbnQtc2l6ZSc6IDQ4KSxcclxuICAgICdoMic6ICgnZm9udC1zaXplJzogNDApLFxyXG4gICAgJ2gzJzogKCdmb250LXNpemUnOiAzMSksXHJcbiAgICAnaDQnOiAoJ2ZvbnQtc2l6ZSc6IDI1KSxcclxuICAgICdoNSc6ICgnZm9udC1zaXplJzogMjApLFxyXG4gICAgJ2g2JzogKCdmb250LXNpemUnOiAxNiksXHJcbiAgKSxcclxuKTtcclxuJGhlYWRlci10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5O1xyXG4kc21hbGwtZm9udC1zaXplOiA4MCU7XHJcbiRoZWFkZXItc21hbGwtZm9udC1jb2xvcjogJG1lZGl1bS1ncmF5O1xyXG4kcGFyYWdyYXBoLWxpbmVoZWlnaHQ6IDEuNjtcclxuJHBhcmFncmFwaC1tYXJnaW4tYm90dG9tOiAxcmVtO1xyXG4kcGFyYWdyYXBoLXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7XHJcbiRjb2RlLWNvbG9yOiAkYmxhY2s7XHJcbiRjb2RlLWZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktbW9ub3NwYWNlO1xyXG4kY29kZS1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsO1xyXG4kY29kZS1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheTtcclxuJGNvZGUtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5O1xyXG4kY29kZS1wYWRkaW5nOiByZW0tY2FsYygyIDUgMSk7XHJcbiRhbmNob3ItY29sb3I6ICRwcmltYXJ5LWNvbG9yO1xyXG4kYW5jaG9yLWNvbG9yLWhvdmVyOiBzY2FsZS1jb2xvcigkYW5jaG9yLWNvbG9yLCAkbGlnaHRuZXNzOiAtMTQlKTtcclxuJGFuY2hvci10ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiRhbmNob3ItdGV4dC1kZWNvcmF0aW9uLWhvdmVyOiBub25lO1xyXG4kaHItd2lkdGg6ICRnbG9iYWwtd2lkdGg7XHJcbiRoci1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXk7XHJcbiRoci1tYXJnaW46IHJlbS1jYWxjKDIwKSBhdXRvO1xyXG4kbGlzdC1saW5laGVpZ2h0OiAkcGFyYWdyYXBoLWxpbmVoZWlnaHQ7XHJcbiRsaXN0LW1hcmdpbi1ib3R0b206ICRwYXJhZ3JhcGgtbWFyZ2luLWJvdHRvbTtcclxuJGxpc3Qtc3R5bGUtdHlwZTogZGlzYztcclxuJGxpc3Qtc3R5bGUtcG9zaXRpb246IG91dHNpZGU7XHJcbiRsaXN0LXNpZGUtbWFyZ2luOiAxLjI1cmVtO1xyXG4kbGlzdC1uZXN0ZWQtc2lkZS1tYXJnaW46IDEuMjVyZW07XHJcbiRkZWZubGlzdC1tYXJnaW4tYm90dG9tOiAxcmVtO1xyXG4kZGVmbmxpc3QtdGVybS13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQ7XHJcbiRkZWZubGlzdC10ZXJtLW1hcmdpbi1ib3R0b206IDAuM3JlbTtcclxuJGJsb2NrcXVvdGUtY29sb3I6ICRkYXJrLWdyYXk7XHJcbiRibG9ja3F1b3RlLXBhZGRpbmc6IHJlbS1jYWxjKDkgMjAgMCAxOSk7XHJcbiRibG9ja3F1b3RlLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcclxuJGNpdGUtZm9udC1zaXplOiByZW0tY2FsYygxMyk7XHJcbiRjaXRlLWNvbG9yOiAkZGFyay1ncmF5O1xyXG4kY2l0ZS1wc2V1ZG8tY29udGVudDogJ1xcMjAxNCBcXDAwMjAnO1xyXG4ka2V5c3Ryb2tlLWZvbnQ6ICRmb250LWZhbWlseS1tb25vc3BhY2U7XHJcbiRrZXlzdHJva2UtY29sb3I6ICRibGFjaztcclxuJGtleXN0cm9rZS1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheTtcclxuJGtleXN0cm9rZS1wYWRkaW5nOiByZW0tY2FsYygyIDQgMCk7XHJcbiRrZXlzdHJva2UtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcclxuJGFiYnItdW5kZXJsaW5lOiAxcHggZG90dGVkICRibGFjaztcclxuXHJcbi8vIDUuIFR5cG9ncmFwaHkgSGVscGVyc1xyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiRsZWFkLWZvbnQtc2l6ZTogJGdsb2JhbC1mb250LXNpemUgKiAxLjI1O1xyXG4kbGVhZC1saW5laGVpZ2h0OiAxLjY7XHJcbiRzdWJoZWFkZXItbGluZWhlaWdodDogMS40O1xyXG4kc3ViaGVhZGVyLWNvbG9yOiAkZGFyay1ncmF5O1xyXG4kc3ViaGVhZGVyLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWw7XHJcbiRzdWJoZWFkZXItbWFyZ2luLXRvcDogMC4ycmVtO1xyXG4kc3ViaGVhZGVyLW1hcmdpbi1ib3R0b206IDAuNXJlbTtcclxuJHN0YXQtZm9udC1zaXplOiAyLjVyZW07XHJcblxyXG4vLyA2LiBBYmlkZVxyXG4vLyAtLS0tLS0tLVxyXG5cclxuJGFiaWRlLWlucHV0czogdHJ1ZTtcclxuJGFiaWRlLWxhYmVsczogdHJ1ZTtcclxuJGlucHV0LWJhY2tncm91bmQtaW52YWxpZDogZ2V0LWNvbG9yKGFsZXJ0KTtcclxuJGZvcm0tbGFiZWwtY29sb3ItaW52YWxpZDogZ2V0LWNvbG9yKGFsZXJ0KTtcclxuJGlucHV0LWVycm9yLWNvbG9yOiBnZXQtY29sb3IoYWxlcnQpO1xyXG4kaW5wdXQtZXJyb3ItZm9udC1zaXplOiByZW0tY2FsYygxMik7XHJcbiRpbnB1dC1lcnJvci1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtYm9sZDtcclxuXHJcbi8vIDcuIEFjY29yZGlvblxyXG4vLyAtLS0tLS0tLS0tLS1cclxuXHJcbiRhY2NvcmRpb24tYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiRhY2NvcmRpb24tcGx1c21pbnVzOiBmYWxzZTtcclxuJGFjY29yZGlvbi10aXRsZS1mb250LXNpemU6IHJlbS1jYWxjKDE4cHgpO1xyXG4kYWNjb3JkaW9uLWl0ZW0tY29sb3I6ICRibGFjaztcclxuJGFjY29yZGlvbi1pdGVtLWJhY2tncm91bmQtaG92ZXI6ICRncmV5LWFjY29yZGlvbi1ob3ZlcjtcclxuJGFjY29yZGlvbi1pdGVtLXBhZGRpbmc6IHJlbS1jYWxjKDIwcHggMzBweCAyMHB4IDE1cHgpO1xyXG4kYWNjb3JkaW9uLWNvbnRlbnQtYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiRhY2NvcmRpb24tY29udGVudC1ib3JkZXI6IG5vbmU7XHJcbiRhY2NvcmRpb24tY29udGVudC1jb2xvcjogaW5oZXJpdDtcclxuJGFjY29yZGlvbi1jb250ZW50LXBhZGRpbmc6IDA7XHJcblxyXG4vLyA4LiBBY2NvcmRpb24gTWVudVxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuJGFjY29yZGlvbm1lbnUtcGFkZGluZzogJGdsb2JhbC1tZW51LXBhZGRpbmc7XHJcbiRhY2NvcmRpb25tZW51LW5lc3RlZC1tYXJnaW46ICRnbG9iYWwtbWVudS1uZXN0ZWQtbWFyZ2luO1xyXG4kYWNjb3JkaW9ubWVudS1zdWJtZW51LXBhZGRpbmc6ICRhY2NvcmRpb25tZW51LXBhZGRpbmc7XHJcbiRhY2NvcmRpb25tZW51LWFycm93czogdHJ1ZTtcclxuJGFjY29yZGlvbm1lbnUtYXJyb3ctY29sb3I6ICRwcmltYXJ5LWNvbG9yO1xyXG4kYWNjb3JkaW9ubWVudS1pdGVtLWJhY2tncm91bmQ6IG51bGw7XHJcbiRhY2NvcmRpb25tZW51LWJvcmRlcjogbnVsbDtcclxuJGFjY29yZGlvbm1lbnUtc3VibWVudS10b2dnbGUtYmFja2dyb3VuZDogbnVsbDtcclxuJGFjY29yZGlvbi1zdWJtZW51LXRvZ2dsZS1ib3JkZXI6ICRhY2NvcmRpb25tZW51LWJvcmRlcjtcclxuJGFjY29yZGlvbm1lbnUtc3VibWVudS10b2dnbGUtd2lkdGg6IDQwcHg7XHJcbiRhY2NvcmRpb25tZW51LXN1Ym1lbnUtdG9nZ2xlLWhlaWdodDogJGFjY29yZGlvbm1lbnUtc3VibWVudS10b2dnbGUtd2lkdGg7XHJcbiRhY2NvcmRpb25tZW51LWFycm93LXNpemU6IDZweDtcclxuXHJcbi8vIDkuIEJhZGdlXHJcbi8vIC0tLS0tLS0tXHJcblxyXG4kYmFkZ2UtYmFja2dyb3VuZDogJHByaW1hcnktY29sb3I7XHJcbiRiYWRnZS1jb2xvcjogJHdoaXRlO1xyXG4kYmFkZ2UtY29sb3ItYWx0OiAkYmxhY2s7XHJcbiRiYWRnZS1wYWxldHRlOiAkZm91bmRhdGlvbi1wYWxldHRlO1xyXG4kYmFkZ2UtcGFkZGluZzogMC4zZW07XHJcbiRiYWRnZS1taW53aWR0aDogMi4xZW07XHJcbiRiYWRnZS1mb250LXNpemU6IDAuNnJlbTtcclxuXHJcbi8vIDEwLiBCcmVhZGNydW1ic1xyXG4vLyAtLS0tLS0tLS0tLS0tLS1cclxuXHJcbiRicmVhZGNydW1icy1tYXJnaW46IDAgMCAkZ2xvYmFsLW1hcmdpbiAwO1xyXG4kYnJlYWRjcnVtYnMtaXRlbS1mb250LXNpemU6IHJlbS1jYWxjKDExKTtcclxuJGJyZWFkY3J1bWJzLWl0ZW0tY29sb3I6ICRwcmltYXJ5LWNvbG9yO1xyXG4kYnJlYWRjcnVtYnMtaXRlbS1jb2xvci1jdXJyZW50OiAkYmxhY2s7XHJcbiRicmVhZGNydW1icy1pdGVtLWNvbG9yLWRpc2FibGVkOiAkbWVkaXVtLWdyYXk7XHJcbiRicmVhZGNydW1icy1pdGVtLW1hcmdpbjogMC43NXJlbTtcclxuJGJyZWFkY3J1bWJzLWl0ZW0tdXBwZXJjYXNlOiB0cnVlO1xyXG4kYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3I6IHRydWU7XHJcbiRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvci1pdGVtOiAnLyc7XHJcbiRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvci1pdGVtLXJ0bDogJ1xcXFwnO1xyXG4kYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3ItY29sb3I6ICRtZWRpdW0tZ3JheTtcclxuXHJcbi8vIDExLiBCdXR0b25cclxuLy8gLS0tLS0tLS0tLVxyXG5cclxuJGJ1dHRvbi1mb250LWZhbWlseTogaW5oZXJpdDtcclxuJGJ1dHRvbi1wYWRkaW5nOiAwLjg1ZW0gMWVtO1xyXG4kYnV0dG9uLW1hcmdpbjogMCAwICRnbG9iYWwtbWFyZ2luIDA7XHJcbiRidXR0b24tZmlsbDogc29saWQ7XHJcbiRidXR0b24tYmFja2dyb3VuZDogJHByaW1hcnktY29sb3I7XHJcbiRidXR0b24tYmFja2dyb3VuZC1ob3Zlcjogc2NhbGUtY29sb3IoJGJ1dHRvbi1iYWNrZ3JvdW5kLCAkbGlnaHRuZXNzOiAtMTUlKTtcclxuJGJ1dHRvbi1jb2xvcjogJHdoaXRlO1xyXG4kYnV0dG9uLWNvbG9yLWFsdDogJGJsYWNrO1xyXG4kYnV0dG9uLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XHJcbiRidXR0b24taG9sbG93LWJvcmRlci13aWR0aDogMXB4O1xyXG4kYnV0dG9uLXNpemVzOiAoXHJcbiAgdGlueTogMC42cmVtLFxyXG4gIHNtYWxsOiAwLjc1cmVtLFxyXG4gIGRlZmF1bHQ6IDAuOXJlbSxcclxuICBsYXJnZTogMS4yNXJlbSxcclxuKTtcclxuJGJ1dHRvbi1wYWxldHRlOiAkZm91bmRhdGlvbi1wYWxldHRlO1xyXG4kYnV0dG9uLW9wYWNpdHktZGlzYWJsZWQ6IDAuMjU7XHJcbiRidXR0b24tYmFja2dyb3VuZC1ob3Zlci1saWdodG5lc3M6IC0yMCU7XHJcbiRidXR0b24taG9sbG93LWhvdmVyLWxpZ2h0bmVzczogLTUwJTtcclxuJGJ1dHRvbi10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMjVzIGVhc2Utb3V0LCBjb2xvciAwLjI1cyBlYXNlLW91dDtcclxuXHJcbi8vIDEyLiBCdXR0b24gR3JvdXBcclxuLy8gLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuJGJ1dHRvbmdyb3VwLW1hcmdpbjogMXJlbTtcclxuJGJ1dHRvbmdyb3VwLXNwYWNpbmc6IDFweDtcclxuJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yOiAnLmJ1dHRvbic7XHJcbiRidXR0b25ncm91cC1leHBhbmQtbWF4OiA2O1xyXG4kYnV0dG9uZ3JvdXAtcmFkaXVzLW9uLWVhY2g6IHRydWU7XHJcblxyXG4vLyAxMy4gQ2FsbG91dFxyXG4vLyAtLS0tLS0tLS0tLVxyXG5cclxuJGNhbGxvdXQtYmFja2dyb3VuZDogJHdoaXRlO1xyXG4kY2FsbG91dC1iYWNrZ3JvdW5kLWZhZGU6IDg1JTtcclxuJGNhbGxvdXQtYm9yZGVyOiAxcHggc29saWQgcmdiYSgkYmxhY2ssIDAuMjUpO1xyXG4kY2FsbG91dC1tYXJnaW46IDAgMCAxcmVtIDA7XHJcbiRjYWxsb3V0LXBhZGRpbmc6IDFyZW07XHJcbiRjYWxsb3V0LWZvbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3I7XHJcbiRjYWxsb3V0LWZvbnQtY29sb3ItYWx0OiAkYm9keS1iYWNrZ3JvdW5kO1xyXG4kY2FsbG91dC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG4kY2FsbG91dC1saW5rLXRpbnQ6IDMwJTtcclxuXHJcbi8vIDE0LiBDYXJkXHJcbi8vIC0tLS0tLS0tXHJcblxyXG4kY2FyZC1iYWNrZ3JvdW5kOiAkd2hpdGU7XHJcbiRjYXJkLWZvbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3I7XHJcbiRjYXJkLWRpdmlkZXItYmFja2dyb3VuZDogJGxpZ2h0LWdyYXk7XHJcbiRjYXJkLWJvcmRlcjogMXB4IHNvbGlkICRsaWdodC1ncmF5O1xyXG4kY2FyZC1zaGFkb3c6IG5vbmU7XHJcbiRjYXJkLWJvcmRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG4kY2FyZC1wYWRkaW5nOiAkZ2xvYmFsLXBhZGRpbmc7XHJcbiRjYXJkLW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luO1xyXG5cclxuLy8gMTUuIENsb3NlIEJ1dHRvblxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4kY2xvc2VidXR0b24tcG9zaXRpb246IHJpZ2h0IHRvcDtcclxuJGNsb3NlYnV0dG9uLW9mZnNldC1ob3Jpem9udGFsOiAoXHJcbiAgc21hbGw6IDAuNjZyZW0sXHJcbiAgbWVkaXVtOiAxcmVtLFxyXG4pO1xyXG4kY2xvc2VidXR0b24tb2Zmc2V0LXZlcnRpY2FsOiAoXHJcbiAgc21hbGw6IDAuMzNlbSxcclxuICBtZWRpdW06IDAuNXJlbSxcclxuKTtcclxuJGNsb3NlYnV0dG9uLXNpemU6IChcclxuICBzbWFsbDogMS41ZW0sXHJcbiAgbWVkaXVtOiAyZW0sXHJcbik7XHJcbiRjbG9zZWJ1dHRvbi1saW5laGVpZ2h0OiAxO1xyXG4kY2xvc2VidXR0b24tY29sb3I6ICRkYXJrLWdyYXk7XHJcbiRjbG9zZWJ1dHRvbi1jb2xvci1ob3ZlcjogJGJsYWNrO1xyXG5cclxuLy8gMTYuIERyaWxsZG93blxyXG4vLyAtLS0tLS0tLS0tLS0tXHJcblxyXG4kZHJpbGxkb3duLXRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjE1cyBsaW5lYXI7XHJcbiRkcmlsbGRvd24tYXJyb3dzOiB0cnVlO1xyXG4kZHJpbGxkb3duLXBhZGRpbmc6ICRnbG9iYWwtbWVudS1wYWRkaW5nO1xyXG4kZHJpbGxkb3duLW5lc3RlZC1tYXJnaW46IDA7XHJcbiRkcmlsbGRvd24tYmFja2dyb3VuZDogJHdoaXRlO1xyXG4kZHJpbGxkb3duLXN1Ym1lbnUtcGFkZGluZzogJGRyaWxsZG93bi1wYWRkaW5nO1xyXG4kZHJpbGxkb3duLXN1Ym1lbnUtYmFja2dyb3VuZDogJHdoaXRlO1xyXG4kZHJpbGxkb3duLWFycm93LWNvbG9yOiAkcHJpbWFyeS1jb2xvcjtcclxuJGRyaWxsZG93bi1hcnJvdy1zaXplOiA2cHg7XHJcblxyXG4vLyAxNy4gRHJvcGRvd25cclxuLy8gLS0tLS0tLS0tLS0tXHJcblxyXG4kZHJvcGRvd24tcGFkZGluZzogMXJlbTtcclxuJGRyb3Bkb3duLWJhY2tncm91bmQ6ICRib2R5LWJhY2tncm91bmQ7XHJcbiRkcm9wZG93bi1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXk7XHJcbiRkcm9wZG93bi1mb250LXNpemU6IDFyZW07XHJcbiRkcm9wZG93bi13aWR0aDogMzAwcHg7XHJcbiRkcm9wZG93bi1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG4kZHJvcGRvd24tc2l6ZXM6IChcclxuICB0aW55OiAxMDBweCxcclxuICBzbWFsbDogMjAwcHgsXHJcbiAgbGFyZ2U6IDQwMHB4LFxyXG4pO1xyXG5cclxuLy8gMTguIERyb3Bkb3duIE1lbnVcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiRkcm9wZG93bm1lbnUtYXJyb3dzOiB0cnVlO1xyXG4kZHJvcGRvd25tZW51LWFycm93LWNvbG9yOiAkYW5jaG9yLWNvbG9yO1xyXG4kZHJvcGRvd25tZW51LWFycm93LXNpemU6IDZweDtcclxuJGRyb3Bkb3dubWVudS1hcnJvdy1wYWRkaW5nOiAxLjVyZW07XHJcbiRkcm9wZG93bm1lbnUtbWluLXdpZHRoOiAyMDBweDtcclxuJGRyb3Bkb3dubWVudS1iYWNrZ3JvdW5kOiAkd2hpdGU7XHJcbiRkcm9wZG93bm1lbnUtc3VibWVudS1iYWNrZ3JvdW5kOiAkZHJvcGRvd25tZW51LWJhY2tncm91bmQ7XHJcbiRkcm9wZG93bm1lbnUtcGFkZGluZzogJGdsb2JhbC1tZW51LXBhZGRpbmc7XHJcbiRkcm9wZG93bm1lbnUtbmVzdGVkLW1hcmdpbjogMDtcclxuJGRyb3Bkb3dubWVudS1zdWJtZW51LXBhZGRpbmc6ICRkcm9wZG93bm1lbnUtcGFkZGluZztcclxuJGRyb3Bkb3dubWVudS1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXk7XHJcbiRkcm9wZG93bi1tZW51LWl0ZW0tY29sb3ItYWN0aXZlOiBnZXQtY29sb3IocHJpbWFyeSk7XHJcbiRkcm9wZG93bi1tZW51LWl0ZW0tYmFja2dyb3VuZC1hY3RpdmU6IHRyYW5zcGFyZW50O1xyXG5cclxuLy8gMTkuIEZsZXhib3ggVXRpbGl0aWVzXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuJGZsZXgtc291cmNlLW9yZGVyaW5nLWNvdW50OiA2O1xyXG4kZmxleGJveC1yZXNwb25zaXZlLWJyZWFrcG9pbnRzOiB0cnVlO1xyXG5cclxuLy8gMjAuIEZvcm1zXHJcbi8vIC0tLS0tLS0tLVxyXG5cclxuJGZpZWxkc2V0LWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcclxuJGZpZWxkc2V0LXBhZGRpbmc6IHJlbS1jYWxjKDIwKTtcclxuJGZpZWxkc2V0LW1hcmdpbjogcmVtLWNhbGMoMTggMCk7XHJcbiRsZWdlbmQtcGFkZGluZzogcmVtLWNhbGMoMCAzKTtcclxuJGZvcm0tc3BhY2luZzogcmVtLWNhbGMoMTYpO1xyXG4kaGVscHRleHQtY29sb3I6ICRibGFjaztcclxuJGhlbHB0ZXh0LWZvbnQtc2l6ZTogcmVtLWNhbGMoMTMpO1xyXG4kaGVscHRleHQtZm9udC1zdHlsZTogaXRhbGljO1xyXG4kaW5wdXQtcHJlZml4LWNvbG9yOiAkYmxhY2s7XHJcbiRpbnB1dC1wcmVmaXgtYmFja2dyb3VuZDogJGxpZ2h0LWdyYXk7XHJcbiRpbnB1dC1wcmVmaXgtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5O1xyXG4kaW5wdXQtcHJlZml4LXBhZGRpbmc6IDFyZW07XHJcbiRmb3JtLWxhYmVsLWNvbG9yOiAkYmxhY2s7XHJcbiRmb3JtLWxhYmVsLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTQpO1xyXG4kZm9ybS1sYWJlbC1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsO1xyXG4kZm9ybS1sYWJlbC1saW5lLWhlaWdodDogMS44O1xyXG4kc2VsZWN0LWJhY2tncm91bmQ6ICR3aGl0ZTtcclxuJHNlbGVjdC10cmlhbmdsZS1jb2xvcjogJGRhcmstZ3JheTtcclxuJHNlbGVjdC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG4kaW5wdXQtY29sb3I6ICRibGFjaztcclxuJGlucHV0LXBsYWNlaG9sZGVyLWNvbG9yOiAkbWVkaXVtLWdyYXk7XHJcbiRpbnB1dC1mb250LWZhbWlseTogaW5oZXJpdDtcclxuJGlucHV0LWZvbnQtc2l6ZTogcmVtLWNhbGMoMTYpO1xyXG4kaW5wdXQtZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LW5vcm1hbDtcclxuJGlucHV0LWxpbmUtaGVpZ2h0OiAkZ2xvYmFsLWxpbmVoZWlnaHQ7XHJcbiRpbnB1dC1iYWNrZ3JvdW5kOiAkd2hpdGU7XHJcbiRpbnB1dC1iYWNrZ3JvdW5kLWZvY3VzOiAkd2hpdGU7XHJcbiRpbnB1dC1iYWNrZ3JvdW5kLWRpc2FibGVkOiAkbGlnaHQtZ3JheTtcclxuJGlucHV0LWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcclxuJGlucHV0LWJvcmRlci1mb2N1czogMXB4IHNvbGlkICRkYXJrLWdyYXk7XHJcbiRpbnB1dC1wYWRkaW5nOiAkZm9ybS1zcGFjaW5nIC8gMjtcclxuJGlucHV0LXNoYWRvdzogaW5zZXQgMCAxcHggMnB4IHJnYmEoJGJsYWNrLCAwLjEpO1xyXG4kaW5wdXQtc2hhZG93LWZvY3VzOiAwIDAgNXB4ICRtZWRpdW0tZ3JheTtcclxuJGlucHV0LWN1cnNvci1kaXNhYmxlZDogbm90LWFsbG93ZWQ7XHJcbiRpbnB1dC10cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuNXMsIGJvcmRlci1jb2xvciAwLjI1cyBlYXNlLWluLW91dDtcclxuJGlucHV0LW51bWJlci1zcGlubmVyczogdHJ1ZTtcclxuJGlucHV0LXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XHJcbiRmb3JtLWJ1dHRvbi1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG5cclxuLy8gMjEuIExhYmVsXHJcbi8vIC0tLS0tLS0tLVxyXG5cclxuJGxhYmVsLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yO1xyXG4kbGFiZWwtY29sb3I6ICR3aGl0ZTtcclxuJGxhYmVsLWNvbG9yLWFsdDogJGJsYWNrO1xyXG4kbGFiZWwtcGFsZXR0ZTogJGZvdW5kYXRpb24tcGFsZXR0ZTtcclxuJGxhYmVsLWZvbnQtc2l6ZTogMC44cmVtO1xyXG4kbGFiZWwtcGFkZGluZzogMC4zMzMzM3JlbSAwLjVyZW07XHJcbiRsYWJlbC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG5cclxuLy8gMjIuIE1lZGlhIE9iamVjdFxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4kbWVkaWFvYmplY3QtbWFyZ2luLWJvdHRvbTogJGdsb2JhbC1tYXJnaW47XHJcbiRtZWRpYW9iamVjdC1zZWN0aW9uLXBhZGRpbmc6ICRnbG9iYWwtcGFkZGluZztcclxuJG1lZGlhb2JqZWN0LWltYWdlLXdpZHRoLXN0YWNrZWQ6IDEwMCU7XHJcblxyXG4vLyAyMy4gTWVudVxyXG4vLyAtLS0tLS0tLVxyXG5cclxuJG1lbnUtbWFyZ2luOiAwO1xyXG4kbWVudS1uZXN0ZWQtbWFyZ2luOiAkZ2xvYmFsLW1lbnUtbmVzdGVkLW1hcmdpbjtcclxuJG1lbnUtaXRlbXMtcGFkZGluZzogJGdsb2JhbC1tZW51LXBhZGRpbmc7XHJcbiRtZW51LXNpbXBsZS1tYXJnaW46IDFyZW07XHJcbiRtZW51LWl0ZW0tY29sb3ItYWN0aXZlOiAkd2hpdGU7XHJcbiRtZW51LWl0ZW0tYmFja2dyb3VuZC1hY3RpdmU6IGdldC1jb2xvcihwcmltYXJ5KTtcclxuJG1lbnUtaWNvbi1zcGFjaW5nOiAwLjI1cmVtO1xyXG4kbWVudS1pdGVtLWJhY2tncm91bmQtaG92ZXI6ICRsaWdodC1ncmF5O1xyXG4kbWVudS1zdGF0ZS1iYWNrLWNvbXBhdDogdHJ1ZTtcclxuJG1lbnUtY2VudGVyZWQtYmFjay1jb21wYXQ6IHRydWU7XHJcbiRtZW51LWljb25zLWJhY2stY29tcGF0OiB0cnVlO1xyXG5cclxuLy8gMjQuIE1ldGVyXHJcbi8vIC0tLS0tLS0tLVxyXG5cclxuJG1ldGVyLWhlaWdodDogMXJlbTtcclxuJG1ldGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XHJcbiRtZXRlci1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXk7XHJcbiRtZXRlci1maWxsLWdvb2Q6ICRzdWNjZXNzLWNvbG9yO1xyXG4kbWV0ZXItZmlsbC1tZWRpdW06ICR3YXJuaW5nLWNvbG9yO1xyXG4kbWV0ZXItZmlsbC1iYWQ6ICRhbGVydC1jb2xvcjtcclxuXHJcbi8vIDI1LiBPZmYtY2FudmFzXHJcbi8vIC0tLS0tLS0tLS0tLS0tXHJcblxyXG4kb2ZmY2FudmFzLXNpemVzOiAoXHJcbiAgc21hbGw6IDI1MHB4LFxyXG4pO1xyXG4kb2ZmY2FudmFzLXZlcnRpY2FsLXNpemVzOiAoXHJcbiAgc21hbGw6IDI1MHB4LFxyXG4pO1xyXG4kb2ZmY2FudmFzLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5O1xyXG4kb2ZmY2FudmFzLXNoYWRvdzogMCAwIDEwcHggcmdiYSgkYmxhY2ssIDAuNyk7XHJcbiRvZmZjYW52YXMtaW5uZXItc2hhZG93LXNpemU6IDIwcHg7XHJcbiRvZmZjYW52YXMtaW5uZXItc2hhZG93LWNvbG9yOiByZ2JhKCRibGFjaywgMC4yNSk7XHJcbiRvZmZjYW52YXMtb3ZlcmxheS16aW5kZXg6IDExO1xyXG4kb2ZmY2FudmFzLXB1c2gtemluZGV4OiAxMjtcclxuJG9mZmNhbnZhcy1vdmVybGFwLXppbmRleDogMTM7XHJcbiRvZmZjYW52YXMtcmV2ZWFsLXppbmRleDogMTI7XHJcbiRvZmZjYW52YXMtdHJhbnNpdGlvbi1sZW5ndGg6IDAuNXM7XHJcbiRvZmZjYW52YXMtdHJhbnNpdGlvbi10aW1pbmc6IGVhc2U7XHJcbiRvZmZjYW52YXMtZml4ZWQtcmV2ZWFsOiB0cnVlO1xyXG4kb2ZmY2FudmFzLWV4aXQtYmFja2dyb3VuZDogcmdiYSgkd2hpdGUsIDAuMjUpO1xyXG4kbWFpbmNvbnRlbnQtY2xhc3M6ICdvZmYtY2FudmFzLWNvbnRlbnQnO1xyXG5cclxuLy8gMjYuIE9yYml0XHJcbi8vIC0tLS0tLS0tLVxyXG5cclxuJG9yYml0LWJ1bGxldC1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXk7XHJcbiRvcmJpdC1idWxsZXQtYmFja2dyb3VuZC1hY3RpdmU6ICRkYXJrLWdyYXk7XHJcbiRvcmJpdC1idWxsZXQtZGlhbWV0ZXI6IDEuMnJlbTtcclxuJG9yYml0LWJ1bGxldC1tYXJnaW46IDAuMXJlbTtcclxuJG9yYml0LWJ1bGxldC1tYXJnaW4tdG9wOiAwLjhyZW07XHJcbiRvcmJpdC1idWxsZXQtbWFyZ2luLWJvdHRvbTogMC44cmVtO1xyXG4kb3JiaXQtY2FwdGlvbi1iYWNrZ3JvdW5kOiByZ2JhKCRibGFjaywgMC41KTtcclxuJG9yYml0LWNhcHRpb24tcGFkZGluZzogMXJlbTtcclxuJG9yYml0LWNvbnRyb2wtYmFja2dyb3VuZC1ob3ZlcjogcmdiYSgkYmxhY2ssIDAuNSk7XHJcbiRvcmJpdC1jb250cm9sLXBhZGRpbmc6IDFyZW07XHJcbiRvcmJpdC1jb250cm9sLXppbmRleDogMTA7XHJcblxyXG4vLyAyNy4gUGFnaW5hdGlvblxyXG4vLyAtLS0tLS0tLS0tLS0tLVxyXG5cclxuJHBhZ2luYXRpb24tZm9udC1zaXplOiByZW0tY2FsYygxNCk7XHJcbiRwYWdpbmF0aW9uLW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luO1xyXG4kcGFnaW5hdGlvbi1pdGVtLWNvbG9yOiAkYmxhY2s7XHJcbiRwYWdpbmF0aW9uLWl0ZW0tcGFkZGluZzogcmVtLWNhbGMoMyAxMCk7XHJcbiRwYWdpbmF0aW9uLWl0ZW0tc3BhY2luZzogcmVtLWNhbGMoMSk7XHJcbiRwYWdpbmF0aW9uLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XHJcbiRwYWdpbmF0aW9uLWl0ZW0tYmFja2dyb3VuZC1ob3ZlcjogJGxpZ2h0LWdyYXk7XHJcbiRwYWdpbmF0aW9uLWl0ZW0tYmFja2dyb3VuZC1jdXJyZW50OiAkcHJpbWFyeS1jb2xvcjtcclxuJHBhZ2luYXRpb24taXRlbS1jb2xvci1jdXJyZW50OiAkd2hpdGU7XHJcbiRwYWdpbmF0aW9uLWl0ZW0tY29sb3ItZGlzYWJsZWQ6ICRtZWRpdW0tZ3JheTtcclxuJHBhZ2luYXRpb24tZWxsaXBzaXMtY29sb3I6ICRibGFjaztcclxuJHBhZ2luYXRpb24tbW9iaWxlLWl0ZW1zOiBmYWxzZTtcclxuJHBhZ2luYXRpb24tbW9iaWxlLWN1cnJlbnQtaXRlbTogZmFsc2U7XHJcbiRwYWdpbmF0aW9uLWFycm93czogdHJ1ZTtcclxuXHJcbi8vIDI4LiBQcm9ncmVzcyBCYXJcclxuLy8gLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuJHByb2dyZXNzLWhlaWdodDogMXJlbTtcclxuJHByb2dyZXNzLWJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheTtcclxuJHByb2dyZXNzLW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luO1xyXG4kcHJvZ3Jlc3MtbWV0ZXItYmFja2dyb3VuZDogJHByaW1hcnktY29sb3I7XHJcbiRwcm9ncmVzcy1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG5cclxuLy8gMjkuIFByb3RvdHlwZSBBcnJvd1xyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4kcHJvdG90eXBlLWFycm93LWRpcmVjdGlvbnM6IChcclxuICBkb3duLFxyXG4gIHVwLFxyXG4gIHJpZ2h0LFxyXG4gIGxlZnRcclxuKTtcclxuJHByb3RvdHlwZS1hcnJvdy1zaXplOiAwLjQzNzVyZW07XHJcbiRwcm90b3R5cGUtYXJyb3ctY29sb3I6ICRibGFjaztcclxuXHJcbi8vIDMwLiBQcm90b3R5cGUgQm9yZGVyLUJveFxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiRwcm90b3R5cGUtYm9yZGVyLWJveC1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHM7XHJcblxyXG4vLyAzMS4gUHJvdG90eXBlIEJvcmRlci1Ob25lXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiRwcm90b3R5cGUtYm9yZGVyLW5vbmUtYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzO1xyXG5cclxuLy8gMzIuIFByb3RvdHlwZSBCb3JkZXJlZFxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4kcHJvdG90eXBlLWJvcmRlcmVkLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cztcclxuJHByb3RvdHlwZS1ib3JkZXItd2lkdGg6IHJlbS1jYWxjKDEpO1xyXG4kcHJvdG90eXBlLWJvcmRlci10eXBlOiBzb2xpZDtcclxuJHByb3RvdHlwZS1ib3JkZXItY29sb3I6ICRtZWRpdW0tZ3JheTtcclxuXHJcbi8vIDMzLiBQcm90b3R5cGUgRGlzcGxheVxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiRwcm90b3R5cGUtZGlzcGxheS1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHM7XHJcbiRwcm90b3R5cGUtZGlzcGxheTogKFxyXG4gIGlubGluZSxcclxuICBpbmxpbmUtYmxvY2ssXHJcbiAgYmxvY2ssXHJcbiAgdGFibGUsXHJcbiAgdGFibGUtY2VsbFxyXG4pO1xyXG5cclxuLy8gMzQuIFByb3RvdHlwZSBGb250LVN0eWxpbmdcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiRwcm90b3R5cGUtZm9udC1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHM7XHJcbiRwcm90b3R5cGUtd2lkZS1sZXR0ZXItc3BhY2luZzogcmVtLWNhbGMoNCk7XHJcbiRwcm90b3R5cGUtZm9udC1ub3JtYWw6ICRnbG9iYWwtd2VpZ2h0LW5vcm1hbDtcclxuJHByb3RvdHlwZS1mb250LWJvbGQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQ7XHJcblxyXG4vLyAzNS4gUHJvdG90eXBlIExpc3QtU3R5bGUtVHlwZVxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuJHByb3RvdHlwZS1saXN0LWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cztcclxuJHByb3RvdHlwZS1zdHlsZS10eXBlLXVub3JkZXJlZDogKFxyXG4gIGRpc2MsXHJcbiAgY2lyY2xlLFxyXG4gIHNxdWFyZVxyXG4pO1xyXG4kcHJvdG90eXBlLXN0eWxlLXR5cGUtb3JkZXJlZDogKFxyXG4gIGRlY2ltYWwsXHJcbiAgbG93ZXItYWxwaGEsXHJcbiAgbG93ZXItbGF0aW4sXHJcbiAgbG93ZXItcm9tYW4sXHJcbiAgdXBwZXItYWxwaGEsXHJcbiAgdXBwZXItbGF0aW4sXHJcbiAgdXBwZXItcm9tYW5cclxuKTtcclxuXHJcbi8vIDM2LiBQcm90b3R5cGUgT3ZlcmZsb3dcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuJHByb3RvdHlwZS1vdmVyZmxvdy1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHM7XHJcbiRwcm90b3R5cGUtb3ZlcmZsb3c6IChcclxuICB2aXNpYmxlLFxyXG4gIGhpZGRlbixcclxuICBzY3JvbGxcclxuKTtcclxuXHJcbi8vIDM3LiBQcm90b3R5cGUgUG9zaXRpb25cclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuJHByb3RvdHlwZS1wb3NpdGlvbi1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHM7XHJcbiRwcm90b3R5cGUtcG9zaXRpb246IChcclxuICBzdGF0aWMsXHJcbiAgcmVsYXRpdmUsXHJcbiAgYWJzb2x1dGUsXHJcbiAgZml4ZWRcclxuKTtcclxuJHByb3RvdHlwZS1wb3NpdGlvbi16LWluZGV4OiA5NzU7XHJcblxyXG4vLyAzOC4gUHJvdG90eXBlIFJvdW5kZWRcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4kcHJvdG90eXBlLXJvdW5kZWQtYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzO1xyXG4kcHJvdG90eXBlLWJvcmRlci1yYWRpdXM6IHJlbS1jYWxjKDMpO1xyXG5cclxuLy8gMzkuIFByb3RvdHlwZSBTZXBhcmF0b3JcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiRwcm90b3R5cGUtc2VwYXJhdG9yLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cztcclxuJHByb3RvdHlwZS1zZXBhcmF0b3ItYWxpZ246IGNlbnRlcjtcclxuJHByb3RvdHlwZS1zZXBhcmF0b3ItaGVpZ2h0OiByZW0tY2FsYygyKTtcclxuJHByb3RvdHlwZS1zZXBhcmF0b3Itd2lkdGg6IDNyZW07XHJcbiRwcm90b3R5cGUtc2VwYXJhdG9yLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yO1xyXG4kcHJvdG90eXBlLXNlcGFyYXRvci1tYXJnaW4tdG9wOiAkZ2xvYmFsLW1hcmdpbjtcclxuXHJcbi8vIDQwLiBQcm90b3R5cGUgU2hhZG93XHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4kcHJvdG90eXBlLXNoYWRvdy1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHM7XHJcbiRwcm90b3R5cGUtYm94LXNoYWRvdzogMCAycHggNXB4IDAgcmdiYSgwLDAsMCwuMTYpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgIDAgMnB4IDEwcHggMCByZ2JhKDAsMCwwLC4xMik7XHJcblxyXG4vLyA0MS4gUHJvdG90eXBlIFNpemluZ1xyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuJHByb3RvdHlwZS1zaXppbmctYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzO1xyXG4kcHJvdG90eXBlLXNpemluZzogKFxyXG4gIHdpZHRoLFxyXG4gIGhlaWdodFxyXG4pO1xyXG4kcHJvdG90eXBlLXNpemVzOiAoXHJcbiAgMjU6IDI1JSxcclxuICA1MDogNTAlLFxyXG4gIDc1OiA3NSUsXHJcbiAgMTAwOiAxMDAlXHJcbik7XHJcblxyXG4vLyA0Mi4gUHJvdG90eXBlIFNwYWNpbmdcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4kcHJvdG90eXBlLXNwYWNpbmctYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzO1xyXG4kcHJvdG90eXBlLXNwYWNlcnMtY291bnQ6IDM7XHJcblxyXG4vLyA0My4gUHJvdG90eXBlIFRleHQtRGVjb3JhdGlvblxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuJHByb3RvdHlwZS1kZWNvcmF0aW9uLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cztcclxuJHByb3RvdHlwZS10ZXh0LWRlY29yYXRpb246IChcclxuICBvdmVybGluZSxcclxuICB1bmRlcmxpbmUsXHJcbiAgbGluZS10aHJvdWdoLFxyXG4pO1xyXG5cclxuLy8gNDQuIFByb3RvdHlwZSBUZXh0LVRyYW5zZm9ybWF0aW9uXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuJHByb3RvdHlwZS10cmFuc2Zvcm1hdGlvbi1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHM7XHJcbiRwcm90b3R5cGUtdGV4dC10cmFuc2Zvcm1hdGlvbjogKFxyXG4gIGxvd2VyY2FzZSxcclxuICB1cHBlcmNhc2UsXHJcbiAgY2FwaXRhbGl6ZVxyXG4pO1xyXG5cclxuLy8gNDUuIFByb3RvdHlwZSBUZXh0LVV0aWxpdGllc1xyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4kcHJvdG90eXBlLXV0aWxpdGllcy1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHM7XHJcbiRwcm90b3R5cGUtdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcblxyXG4vLyA0Ni4gUmVzcG9uc2l2ZSBFbWJlZFxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuJHJlc3BvbnNpdmUtZW1iZWQtbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMTYpO1xyXG4kcmVzcG9uc2l2ZS1lbWJlZC1yYXRpb3M6IChcclxuICBkZWZhdWx0OiA0IGJ5IDMsXHJcbiAgd2lkZXNjcmVlbjogMTYgYnkgOSxcclxuKTtcclxuXHJcbi8vIDQ3LiBSZXZlYWxcclxuLy8gLS0tLS0tLS0tLVxyXG5cclxuJHJldmVhbC1iYWNrZ3JvdW5kOiAkd2hpdGU7XHJcbiRyZXZlYWwtd2lkdGg6IDYwMHB4O1xyXG4kcmV2ZWFsLW1heC13aWR0aDogJGdsb2JhbC13aWR0aDtcclxuJHJldmVhbC1wYWRkaW5nOiAkZ2xvYmFsLXBhZGRpbmc7XHJcbiRyZXZlYWwtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5O1xyXG4kcmV2ZWFsLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XHJcbiRyZXZlYWwtemluZGV4OiAxMDA1O1xyXG4kcmV2ZWFsLW92ZXJsYXktYmFja2dyb3VuZDogcmdiYSgkYmxhY2ssIDAuNDUpO1xyXG5cclxuLy8gNDguIFNsaWRlclxyXG4vLyAtLS0tLS0tLS0tXHJcblxyXG4kc2xpZGVyLXdpZHRoLXZlcnRpY2FsOiAwLjVyZW07XHJcbiRzbGlkZXItdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQ7XHJcbiRzbGlkZXItaGVpZ2h0OiAwLjVyZW07XHJcbiRzbGlkZXItYmFja2dyb3VuZDogJGxpZ2h0LWdyYXk7XHJcbiRzbGlkZXItZmlsbC1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXk7XHJcbiRzbGlkZXItaGFuZGxlLWhlaWdodDogMS40cmVtO1xyXG4kc2xpZGVyLWhhbmRsZS13aWR0aDogMS40cmVtO1xyXG4kc2xpZGVyLWhhbmRsZS1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvcjtcclxuJHNsaWRlci1vcGFjaXR5LWRpc2FibGVkOiAwLjI1O1xyXG4kc2xpZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XHJcblxyXG4vLyA0OS4gU3dpdGNoXHJcbi8vIC0tLS0tLS0tLS1cclxuXHJcbiRzd2l0Y2gtYmFja2dyb3VuZDogJG1lZGl1bS1ncmF5O1xyXG4kc3dpdGNoLWJhY2tncm91bmQtYWN0aXZlOiAkcHJpbWFyeS1jb2xvcjtcclxuJHN3aXRjaC1oZWlnaHQ6IDJyZW07XHJcbiRzd2l0Y2gtaGVpZ2h0LXRpbnk6IDEuNXJlbTtcclxuJHN3aXRjaC1oZWlnaHQtc21hbGw6IDEuNzVyZW07XHJcbiRzd2l0Y2gtaGVpZ2h0LWxhcmdlOiAyLjVyZW07XHJcbiRzd2l0Y2gtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcclxuJHN3aXRjaC1tYXJnaW46ICRnbG9iYWwtbWFyZ2luO1xyXG4kc3dpdGNoLXBhZGRsZS1iYWNrZ3JvdW5kOiAkd2hpdGU7XHJcbiRzd2l0Y2gtcGFkZGxlLW9mZnNldDogMC4yNXJlbTtcclxuJHN3aXRjaC1wYWRkbGUtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcclxuJHN3aXRjaC1wYWRkbGUtdHJhbnNpdGlvbjogYWxsIDAuMjVzIGVhc2Utb3V0O1xyXG5cclxuLy8gNTAuIFRhYmxlXHJcbi8vIC0tLS0tLS0tLVxyXG5cclxuJHRhYmxlLWJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4kdGFibGUtY29sb3Itc2NhbGU6IDUlO1xyXG4kdGFibGUtYm9yZGVyOiAxcHggc29saWQgc21hcnQtc2NhbGUoJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSk7XHJcbiR0YWJsZS1wYWRkaW5nOiByZW0tY2FsYyg4IDEwIDEwKTtcclxuJHRhYmxlLWhvdmVyLXNjYWxlOiAyJTtcclxuJHRhYmxlLXJvdy1ob3ZlcjogZGFya2VuKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtaG92ZXItc2NhbGUpO1xyXG4kdGFibGUtcm93LXN0cmlwZS1ob3ZlcjogZGFya2VuKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUgKyAkdGFibGUtaG92ZXItc2NhbGUpO1xyXG4kdGFibGUtaXMtc3RyaXBlZDogdHJ1ZTtcclxuJHRhYmxlLXN0cmlwZWQtYmFja2dyb3VuZDogc21hcnQtc2NhbGUoJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSk7XHJcbiR0YWJsZS1zdHJpcGU6IGV2ZW47XHJcbiR0YWJsZS1oZWFkLWJhY2tncm91bmQ6IHNtYXJ0LXNjYWxlKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUgLyAyKTtcclxuJHRhYmxlLWhlYWQtcm93LWhvdmVyOiBkYXJrZW4oJHRhYmxlLWhlYWQtYmFja2dyb3VuZCwgJHRhYmxlLWhvdmVyLXNjYWxlKTtcclxuJHRhYmxlLWZvb3QtYmFja2dyb3VuZDogc21hcnQtc2NhbGUoJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSk7XHJcbiR0YWJsZS1mb290LXJvdy1ob3ZlcjogZGFya2VuKCR0YWJsZS1mb290LWJhY2tncm91bmQsICR0YWJsZS1ob3Zlci1zY2FsZSk7XHJcbiR0YWJsZS1oZWFkLWZvbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3I7XHJcbiR0YWJsZS1mb290LWZvbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3I7XHJcbiRzaG93LWhlYWRlci1mb3Itc3RhY2tlZDogZmFsc2U7XHJcbiR0YWJsZS1zdGFjay1icmVha3BvaW50OiBtZWRpdW07XHJcblxyXG4vLyA1MS4gVGFic1xyXG4vLyAtLS0tLS0tLVxyXG5cclxuJHRhYi1tYXJnaW46IDA7XHJcbiR0YWItYmFja2dyb3VuZDogJHdoaXRlO1xyXG4kdGFiLWNvbG9yOiAkcHJpbWFyeS1jb2xvcjtcclxuJHRhYi1iYWNrZ3JvdW5kLWFjdGl2ZTogJGxpZ2h0LWdyYXk7XHJcbiR0YWItYWN0aXZlLWNvbG9yOiAkcHJpbWFyeS1jb2xvcjtcclxuJHRhYi1pdGVtLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTIpO1xyXG4kdGFiLWl0ZW0tYmFja2dyb3VuZC1ob3ZlcjogJHdoaXRlO1xyXG4kdGFiLWl0ZW0tcGFkZGluZzogMS4yNXJlbSAxLjVyZW07XHJcbiR0YWItZXhwYW5kLW1heDogNjtcclxuJHRhYi1jb250ZW50LWJhY2tncm91bmQ6ICR3aGl0ZTtcclxuJHRhYi1jb250ZW50LWJvcmRlcjogJGxpZ2h0LWdyYXk7XHJcbiR0YWItY29udGVudC1jb2xvcjogJGJvZHktZm9udC1jb2xvcjtcclxuJHRhYi1jb250ZW50LXBhZGRpbmc6IDFyZW07XHJcblxyXG4vLyA1Mi4gVGh1bWJuYWlsXHJcbi8vIC0tLS0tLS0tLS0tLS1cclxuXHJcbiR0aHVtYm5haWwtYm9yZGVyOiBzb2xpZCA0cHggJHdoaXRlO1xyXG4kdGh1bWJuYWlsLW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luO1xyXG4kdGh1bWJuYWlsLXNoYWRvdzogMCAwIDAgMXB4IHJnYmEoJGJsYWNrLCAwLjIpO1xyXG4kdGh1bWJuYWlsLXNoYWRvdy1ob3ZlcjogMCAwIDZweCAxcHggcmdiYSgkcHJpbWFyeS1jb2xvciwgMC41KTtcclxuJHRodW1ibmFpbC10cmFuc2l0aW9uOiBib3gtc2hhZG93IDIwMG1zIGVhc2Utb3V0O1xyXG4kdGh1bWJuYWlsLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XHJcblxyXG4vLyA1My4gVGl0bGUgQmFyXHJcbi8vIC0tLS0tLS0tLS0tLS1cclxuXHJcbiR0aXRsZWJhci1iYWNrZ3JvdW5kOiAkYmxhY2s7XHJcbiR0aXRsZWJhci1jb2xvcjogJHdoaXRlO1xyXG4kdGl0bGViYXItcGFkZGluZzogMC41cmVtO1xyXG4kdGl0bGViYXItdGV4dC1mb250LXdlaWdodDogYm9sZDtcclxuJHRpdGxlYmFyLWljb24tY29sb3I6ICR3aGl0ZTtcclxuJHRpdGxlYmFyLWljb24tY29sb3ItaG92ZXI6ICRtZWRpdW0tZ3JheTtcclxuJHRpdGxlYmFyLWljb24tc3BhY2luZzogMC4yNXJlbTtcclxuXHJcbi8vIDU0LiBUb29sdGlwXHJcbi8vIC0tLS0tLS0tLS0tXHJcblxyXG4kaGFzLXRpcC1jdXJzb3I6IGhlbHA7XHJcbiRoYXMtdGlwLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkO1xyXG4kaGFzLXRpcC1ib3JkZXItYm90dG9tOiBkb3R0ZWQgMXB4ICRkYXJrLWdyYXk7XHJcbiR0b29sdGlwLWJhY2tncm91bmQtY29sb3I6ICRibGFjaztcclxuJHRvb2x0aXAtY29sb3I6ICR3aGl0ZTtcclxuJHRvb2x0aXAtcGFkZGluZzogMC43NXJlbTtcclxuJHRvb2x0aXAtbWF4LXdpZHRoOiAxMHJlbTtcclxuJHRvb2x0aXAtZm9udC1zaXplOiAkc21hbGwtZm9udC1zaXplO1xyXG4kdG9vbHRpcC1waXAtd2lkdGg6IDAuNzVyZW07XHJcbiR0b29sdGlwLXBpcC1oZWlnaHQ6ICR0b29sdGlwLXBpcC13aWR0aCAqIDAuODY2O1xyXG4kdG9vbHRpcC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG5cclxuLy8gNTUuIFRvcCBCYXJcclxuLy8gLS0tLS0tLS0tLS1cclxuXHJcbiR0b3BiYXItcGFkZGluZzogMC41cmVtO1xyXG4kdG9wYmFyLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5O1xyXG4kdG9wYmFyLXN1Ym1lbnUtYmFja2dyb3VuZDogJHRvcGJhci1iYWNrZ3JvdW5kO1xyXG4kdG9wYmFyLXRpdGxlLXNwYWNpbmc6IDAuNXJlbSAxcmVtIDAuNXJlbSAwO1xyXG4kdG9wYmFyLWlucHV0LXdpZHRoOiAyMDBweDtcclxuJHRvcGJhci11bnN0YWNrLWJyZWFrcG9pbnQ6IG1lZGl1bTtcclxuXHJcbi8vIDU2LiBYeSBHcmlkXHJcbi8vIC0tLS0tLS0tLS0tXHJcblxyXG4keHktZ3JpZDogdHJ1ZTtcclxuJGdyaWQtY29udGFpbmVyOiAkZ2xvYmFsLXdpZHRoO1xyXG4kZ3JpZC1jb2x1bW5zOiAxMjtcclxuJGdyaWQtbWFyZ2luLWd1dHRlcnM6IChcclxuICBzbWFsbDogMjBweCxcclxuICBtZWRpdW06IDMwcHhcclxuKTtcclxuJGdyaWQtcGFkZGluZy1ndXR0ZXJzOiAkZ3JpZC1tYXJnaW4tZ3V0dGVycztcclxuJGdyaWQtY29udGFpbmVyLXBhZGRpbmc6ICRncmlkLXBhZGRpbmctZ3V0dGVycztcclxuJGdyaWQtY29udGFpbmVyLW1heDogJGdsb2JhbC13aWR0aDtcclxuJHh5LWJsb2NrLWdyaWQtbWF4OiA4O1xyXG5cclxuIiwiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuLy8gSnVpY2UgdjEuMC4wXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcblxyXG5cclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuLy8gVmFyaWFibGUgc2V0dGluZ3NcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbi8vIENTUyBjdWJpYy1iZXppZXIgdGltaW5nIGZ1bmN0aW9ucy5cclxuLy8gQ3JlZGl0OiBodHRwOi8vZ2l0aHViLmNvbS9qYXVraWEvZWFzaWVcclxuLy8gRUFTRSBJTlxyXG4kZWFzZS1pbi1xdWFkOiAgICAgIGN1YmljLWJlemllcigwLjU1MCwgIDAuMDg1LCAwLjY4MCwgMC41MzApO1xyXG4kZWFzZS1pbi1jdWJpYzogICAgIGN1YmljLWJlemllcigwLjU1MCwgIDAuMDU1LCAwLjY3NSwgMC4xOTApO1xyXG4kZWFzZS1pbi1xdWFydDogICAgIGN1YmljLWJlemllcigwLjg5NSwgIDAuMDMwLCAwLjY4NSwgMC4yMjApO1xyXG4kZWFzZS1pbi1xdWludDogICAgIGN1YmljLWJlemllcigwLjc1NSwgIDAuMDUwLCAwLjg1NSwgMC4wNjApO1xyXG4kZWFzZS1pbi1zaW5lOiAgICAgIGN1YmljLWJlemllcigwLjQ3MCwgIDAuMDAwLCAwLjc0NSwgMC43MTUpO1xyXG4kZWFzZS1pbi1leHBvOiAgICAgIGN1YmljLWJlemllcigwLjk1MCwgIDAuMDUwLCAwLjc5NSwgMC4wMzUpO1xyXG4kZWFzZS1pbi1jaXJjOiAgICAgIGN1YmljLWJlemllcigwLjYwMCwgIDAuMDQwLCAwLjk4MCwgMC4zMzUpO1xyXG4kZWFzZS1pbi1iYWNrOiAgICAgIGN1YmljLWJlemllcigwLjYwMCwgLTAuMjgwLCAwLjczNSwgMC4wNDUpO1xyXG4vLyBFQVNFIE9VVFxyXG4kZWFzZS1vdXQtcXVhZDogICAgIGN1YmljLWJlemllcigwLjI1MCwgIDAuNDYwLCAwLjQ1MCwgMC45NDApO1xyXG4kZWFzZS1vdXQtY3ViaWM6ICAgIGN1YmljLWJlemllcigwLjIxNSwgIDAuNjEwLCAwLjM1NSwgMS4wMDApO1xyXG4kZWFzZS1vdXQtcXVhcnQ6ICAgIGN1YmljLWJlemllcigwLjE2NSwgIDAuODQwLCAwLjQ0MCwgMS4wMDApO1xyXG4kZWFzZS1vdXQtcXVpbnQ6ICAgIGN1YmljLWJlemllcigwLjIzMCwgIDEuMDAwLCAwLjMyMCwgMS4wMDApO1xyXG4kZWFzZS1vdXQtc2luZTogICAgIGN1YmljLWJlemllcigwLjM5MCwgIDAuNTc1LCAwLjU2NSwgMS4wMDApO1xyXG4kZWFzZS1vdXQtZXhwbzogICAgIGN1YmljLWJlemllcigwLjE5MCwgIDEuMDAwLCAwLjIyMCwgMS4wMDApO1xyXG4kZWFzZS1vdXQtY2lyYzogICAgIGN1YmljLWJlemllcigwLjA3NSwgIDAuODIwLCAwLjE2NSwgMS4wMDApO1xyXG4kZWFzZS1vdXQtYmFjazogICAgIGN1YmljLWJlemllcigwLjE3NSwgIDAuODg1LCAwLjMyMCwgMS4yNzUpO1xyXG4vLyBFQVNFIElOIE9VVFxyXG4kZWFzZS1pbi1vdXQtcXVhZDogIGN1YmljLWJlemllcigwLjQ1NSwgIDAuMDMwLCAwLjUxNSwgMC45NTUpO1xyXG4kZWFzZS1pbi1vdXQtY3ViaWM6IGN1YmljLWJlemllcigwLjY0NSwgIDAuMDQ1LCAwLjM1NSwgMS4wMDApO1xyXG4kZWFzZS1pbi1vdXQtcXVhcnQ6IGN1YmljLWJlemllcigwLjc3MCwgIDAuMDAwLCAwLjE3NSwgMS4wMDApO1xyXG4kZWFzZS1pbi1vdXQtcXVpbnQ6IGN1YmljLWJlemllcigwLjg2MCwgIDAuMDAwLCAwLjA3MCwgMS4wMDApO1xyXG4kZWFzZS1pbi1vdXQtc2luZTogIGN1YmljLWJlemllcigwLjQ0NSwgIDAuMDUwLCAwLjU1MCwgMC45NTApO1xyXG4kZWFzZS1pbi1vdXQtZXhwbzogIGN1YmljLWJlemllcigxLjAwMCwgIDAuMDAwLCAwLjAwMCwgMS4wMDApO1xyXG4kZWFzZS1pbi1vdXQtY2lyYzogIGN1YmljLWJlemllcigwLjc4NSwgIDAuMTM1LCAwLjE1MCwgMC44NjApO1xyXG4kZWFzZS1pbi1vdXQtYmFjazogIGN1YmljLWJlemllcigwLjY4MCwgLTAuNTUwLCAwLjI2NSwgMS41NTApO1xyXG5cclxuLy8gQmFzZSBweFxyXG4kYmFzZS1weC1kZWZhdWx0OiAxNnB4ICFkZWZhdWx0O1xyXG4kYnJvd3Nlci1wcmVmaXhlczogZmFsc2UgIWRlZmF1bHQ7XHJcblxyXG4vLyBQcmVmaXggbWl4aW4gaWYgbmVlZGVkXHJcbi8vIENyZWRpdDogaHR0cDovL2JvdXJib24uaW8vZG9jcy8jcHJlZml4ZXJcclxuQG1peGluIGp1aWNlLXByZWZpeGVyKCRwcm9wZXJ0eSwgJHZhbHVlLCAkcHJlZml4ZXMpIHtcclxuXHRAZWFjaCAkcHJlZml4IGluICRwcmVmaXhlcyB7XHJcblx0XHRAaWYgJHByZWZpeCA9PSB3ZWJraXQge1xyXG5cdFx0XHQtd2Via2l0LSN7JHByb3BlcnR5fTogI3skdmFsdWV9O1xyXG5cdFx0fVxyXG5cdFx0QGVsc2UgaWYgJHByZWZpeCA9PSBtb3oge1xyXG5cdFx0XHQtbW96LSN7JHByb3BlcnR5fTogI3skdmFsdWV9O1xyXG5cdFx0fVxyXG5cdFx0QGVsc2UgaWYgJHByZWZpeCA9PSBtcyB7XHJcblx0XHRcdC1tcy0jeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTtcclxuXHRcdH1cclxuXHRcdEBlbHNlIGlmICRwcmVmaXggPT0gbyB7XHJcblx0XHRcdC1vLSN7JHByb3BlcnR5fTogI3skdmFsdWV9O1xyXG5cdFx0fVxyXG5cdFx0QGVsc2UgaWYgJHByZWZpeCA9PSBzcGVjIHtcclxuXHRcdFx0I3skcHJvcGVydHl9OiAjeyR2YWx1ZX07XHJcblx0XHR9XHJcblx0XHRAZWxzZSAge1xyXG5cdFx0XHRAd2FybiBcIlVucmVjb2duaXplZCBwcmVmaXg6ICN7JHByZWZpeH1cIjtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuXHJcbi8vIFN0cmlwIHRoZSB1bml0cyBmcm9tIGEgdmFsdWVcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5AZnVuY3Rpb24gc3RyaXAtdW5pdHMoJHZhbHVlKSB7XHJcblx0QHJldHVybiAkdmFsdWUgLyAoJHZhbHVlICogMCArIDEpO1xyXG59XHJcblxyXG4vLyBDYWxjdWxhdGUgcmVtcyBmcm9tIGEgcHggdmFsdWVcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbi8qQGZ1bmN0aW9uIHJlbS1jYWxjKCRweCwgJGJhc2UtdmFsOiAkYmFzZS1weC1kZWZhdWx0KSB7XHJcblx0QGlmIG5vdCB1bml0bGVzcygkcHgpIHtcclxuXHRcdCRweDogc3RyaXAtdW5pdHMoJHB4KTtcclxuXHR9XHJcblx0QGlmIG5vdCB1bml0bGVzcygkYmFzZS12YWwpIHtcclxuXHRcdCRiYXNlLXZhbDogc3RyaXAtdW5pdHMoJGJhc2UtdmFsKTtcclxuXHR9XHJcblx0QHJldHVybiAoJHB4IC8gJGJhc2UtdmFsKSAqIDFyZW07XHJcbn0qL1xyXG5cclxuLy8gQ2FsY3VsYXRlIGVtcyBmcm9tIGEgcHggdmFsdWVcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbkBmdW5jdGlvbiBlbS1jYWxjKCRweCwgJGJhc2UtdmFsOiAkYmFzZS1weC1kZWZhdWx0KSB7XHJcblx0QGlmIG5vdCB1bml0bGVzcygkcHgpIHtcclxuXHRcdCRweDogc3RyaXAtdW5pdHMoJHB4KTtcclxuXHR9XHJcblx0QGlmIG5vdCB1bml0bGVzcygkYmFzZS12YWwpIHtcclxuXHRcdCRiYXNlLXZhbDogc3RyaXAtdW5pdHMoJGJhc2UtdmFsKTtcclxuXHR9XHJcblx0QHJldHVybiAoJHB4IC8gJGJhc2UtdmFsKSAqIDFlbTtcclxufVxyXG5cclxuLy8gQnJlYWtwb2ludHNcclxuJG9uZXB4OiBlbS1jYWxjKDEpICFkZWZhdWx0O1xyXG4kaGRwaS1yYXRpby1kZWZhdWx0OiAxLjMgIWRlZmF1bHQ7XHJcbiRicmVha3BvaW50LXhsYXJnZS1kZWZhdWx0OiBlbS1jYWxjKDE5MjApICFkZWZhdWx0O1xyXG4kYnJlYWtwb2ludC1sYXJnZS1kZWZhdWx0OiBlbS1jYWxjKDE0NDApICFkZWZhdWx0O1xyXG4kYnJlYWtwb2ludC1tZWRpdW0tZGVmYXVsdDogZW0tY2FsYygxMDI0KSAhZGVmYXVsdDtcclxuJGJyZWFrcG9pbnQtc21hbGwtZGVmYXVsdDogZW0tY2FsYyg2NDApICFkZWZhdWx0O1xyXG4kYnJlYWtwb2ludC14c21hbGwtZGVmYXVsdDogZW0tY2FsYyg0ODApICFkZWZhdWx0O1xyXG4kYnJlYWtwb2ludC14eHNtYWxsLWRlZmF1bHQ6IGVtLWNhbGMoMzIwKSAhZGVmYXVsdDtcclxuLy8gU2hvdy9IaWRlXHJcbiRzaG93LWRpc3BsYXktZGVmYXVsdDogYmxvY2sgIWRlZmF1bHQ7XHJcbi8vIEJvcmRlciBSYWRpdXNcclxuJGJvcmRlci1yYWRpdXMtZGVmYXVsdDogNXB4ICFkZWZhdWx0O1xyXG4vLyBQbGFjZWhvbGRlciBDb2xvclxyXG4kcGxhY2Vob2xkZXItY29sb3ItZGVmYXVsdDogIzU1NTU1NSAhZGVmYXVsdDtcclxuLy8gVHJpYW5nbGVcclxuJHRyaWFuZ2xlLWRpcmVjdGlvbi1kZWZhdWx0OiByaWdodCAhZGVmYXVsdDtcclxuJHRyaWFuZ2xlLXNpemUtZGVmYXVsdDogJGJhc2UtcHgtZGVmYXVsdCAhZGVmYXVsdDtcclxuJHRyaWFuZ2xlLWNvbG9yLWRlZmF1bHQ6ICMyMjIyMjIgIWRlZmF1bHQ7XHJcbiR0cmlhbmdsZS1lbGVtZW50LWRlZmF1bHQ6IGFmdGVyICFkZWZhdWx0O1xyXG4vLyBDaXJjbGVcclxuJGNpcmNsZS1zaXplLWRlZmF1bHQ6ICRiYXNlLXB4LWRlZmF1bHQgIWRlZmF1bHQ7XHJcbiRjaXJjbGUtY29sb3ItZGVmYXVsdDogaW5oZXJpdCAhZGVmYXVsdDtcclxuJGNpcmNsZS1ib3JkZXItd2lkdGgtZGVmYXVsdDogbnVsbCAhZGVmYXVsdDtcclxuJGNpcmNsZS1ib3JkZXItY29sb3ItZGVmYXVsdDogIzIyMjIyMiAhZGVmYXVsdDtcclxuJGNpcmNsZS1kaXNwbGF5LWRlZmF1bHQ6IGlubGluZS1ibG9jayAhZGVmYXVsdDtcclxuLy8gU3F1YXJlXHJcbiRzcXVhcmUtc2l6ZS1kZWZhdWx0OiAkYmFzZS1weC1kZWZhdWx0ICFkZWZhdWx0O1xyXG4kc3F1YXJlLWNvbG9yLWRlZmF1bHQ6IGJsYWNrICFkZWZhdWx0O1xyXG4kc3F1YXJlLWJvcmRlci13aWR0aC1kZWZhdWx0OiBudWxsICFkZWZhdWx0O1xyXG4kc3F1YXJlLWJvcmRlci1jb2xvci1kZWZhdWx0OiBncmV5ICFkZWZhdWx0O1xyXG4kc3F1YXJlLWVsZW1lbnQtZGVmYXVsdDogYmVmb3JlICFkZWZhdWx0O1xyXG4vLyBQb3NpdGlvblxyXG4kcG9zaXRpb24tZGVmYXVsdDogbnVsbCAhZGVmYXVsdDtcclxuLy8gVGludC9TaGFkZVxyXG4kbWl4LXBlcmNlbnQtZGVmYXVsdDogMTUlICFkZWZhdWx0O1xyXG5cclxuXHJcblxyXG5cclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuLy8gTWl4aW5zXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4vLyBCcmVha3BvaW50c1xyXG4vLyBJbnNwaXJhdGlvbjogaHR0cDovL3d3dy5zaXRlcG9pbnQuY29tL21hbmFnaW5nLXJlc3BvbnNpdmUtYnJlYWtwb2ludHMtc2Fzcy9cclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiRicmVha3BvaW50czogKFxyXG5cdFwieHhsYXJnZVwiOlx0XCIobWluLXdpZHRoOiAjeyRicmVha3BvaW50LXhsYXJnZS1kZWZhdWx0ICsgJG9uZXB4fSlcIixcclxuXHRcInhsYXJnZS1vbmx5XCI6XHRcIihtaW4td2lkdGg6ICN7JGJyZWFrcG9pbnQtbGFyZ2UtZGVmYXVsdCArICRvbmVweH0pIGFuZCAobWF4LXdpZHRoOiAjeyRicmVha3BvaW50LXhsYXJnZS1kZWZhdWx0fSlcIixcclxuXHRcInhsYXJnZS11cFwiOlx0XCIobWluLXdpZHRoOiAjeyRicmVha3BvaW50LWxhcmdlLWRlZmF1bHQgKyAkb25lcHh9KVwiLFxyXG5cdFwieGxhcmdlXCI6XHRcIihtYXgtd2lkdGg6ICN7JGJyZWFrcG9pbnQteGxhcmdlLWRlZmF1bHR9KVwiLFxyXG5cdFwibGFyZ2Utb25seVwiOlx0XCIobWluLXdpZHRoOiAjeyRicmVha3BvaW50LW1lZGl1bS1kZWZhdWx0ICsgJG9uZXB4fSkgYW5kIChtYXgtd2lkdGg6ICN7JGJyZWFrcG9pbnQtbGFyZ2UtZGVmYXVsdH0pXCIsXHJcblx0XCJsYXJnZS11cFwiOlx0XCIobWluLXdpZHRoOiAjeyRicmVha3BvaW50LW1lZGl1bS1kZWZhdWx0ICsgJG9uZXB4fSlcIixcclxuXHRcImxhcmdlXCI6XHRcIihtYXgtd2lkdGg6ICN7JGJyZWFrcG9pbnQtbGFyZ2UtZGVmYXVsdH0pXCIsXHJcblx0XCJtZWRpdW0tb25seVwiOlx0XCIobWluLXdpZHRoOiAjeyRicmVha3BvaW50LXNtYWxsLWRlZmF1bHQgKyAkb25lcHh9KSBhbmQgKG1heC13aWR0aDogI3skYnJlYWtwb2ludC1tZWRpdW0tZGVmYXVsdH0pXCIsXHJcblx0XCJtZWRpdW0tdXBcIjpcdFwiKG1pbi13aWR0aDogI3skYnJlYWtwb2ludC1zbWFsbC1kZWZhdWx0ICsgJG9uZXB4fSlcIixcclxuXHRcIm1lZGl1bVwiOlx0XCIobWF4LXdpZHRoOiAjeyRicmVha3BvaW50LW1lZGl1bS1kZWZhdWx0fSlcIixcclxuXHRcInNtYWxsLW9ubHlcIjpcdFwiKG1pbi13aWR0aDogI3skYnJlYWtwb2ludC14c21hbGwtZGVmYXVsdCArICRvbmVweH0pIGFuZCAobWF4LXdpZHRoOiAjeyRicmVha3BvaW50LXNtYWxsLWRlZmF1bHR9KVwiLFxyXG5cdFwic21hbGwtdXBcIjpcdFwiKG1pbi13aWR0aDogI3skYnJlYWtwb2ludC14c21hbGwtZGVmYXVsdCArICRvbmVweH0pXCIsXHJcblx0XCJzbWFsbFwiOlx0XCIobWF4LXdpZHRoOiAjeyRicmVha3BvaW50LXNtYWxsLWRlZmF1bHR9KVwiLFxyXG5cdFwieHNtYWxsLW9ubHlcIjpcdFwiKG1pbi13aWR0aDogI3skYnJlYWtwb2ludC14eHNtYWxsLWRlZmF1bHQgKyAkb25lcHh9KSBhbmQgKG1heC13aWR0aDogI3skYnJlYWtwb2ludC14c21hbGwtZGVmYXVsdH0pXCIsXHJcblx0XCJ4c21hbGwtdXBcIjpcdFwiKG1pbi13aWR0aDogI3skYnJlYWtwb2ludC14eHNtYWxsLWRlZmF1bHQgKyAkb25lcHh9KVwiLFxyXG5cdFwieHNtYWxsXCI6XHRcIihtYXgtd2lkdGg6ICN7JGJyZWFrcG9pbnQteHNtYWxsLWRlZmF1bHR9KVwiLFxyXG5cdFwieHhzbWFsbFwiOlx0XCIobWF4LXdpZHRoOiAjeyRicmVha3BvaW50LXh4c21hbGwtZGVmYXVsdH0pXCIsXHJcblx0XCJpcGhvbmUzXCI6XHRcIihtaW4tZGV2aWNlLXdpZHRoOiAzMjBweCkgYW5kIChtYXgtZGV2aWNlLXdpZHRoOiA0ODBweCkgYW5kICgtd2Via2l0LWRldmljZS1waXhlbC1yYXRpbzogMSlcIixcclxuXHRcImlwaG9uZTMtbGFuZHNjYXBlXCI6XHRcIihtaW4tZGV2aWNlLXdpZHRoOiAzMjBweCkgYW5kIChtYXgtZGV2aWNlLXdpZHRoOiA0ODBweCkgYW5kICgtd2Via2l0LWRldmljZS1waXhlbC1yYXRpbzogMSkgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKVwiLFxyXG5cdFwiaXBob25lMy1wb3J0cmFpdFwiOlx0XCIobWluLWRldmljZS13aWR0aDogMzIwcHgpIGFuZCAobWF4LWRldmljZS13aWR0aDogNDgwcHgpIGFuZCAoLXdlYmtpdC1kZXZpY2UtcGl4ZWwtcmF0aW86IDEpIGFuZCAob3JpZW50YXRpb246IHBvcnRyYWl0KVwiLFxyXG5cdFwiaXBob25lNFwiOlx0XCIobWluLWRldmljZS13aWR0aDogMzIwcHgpIGFuZCAobWF4LWRldmljZS13aWR0aDogNDgwcHgpIGFuZCAoLXdlYmtpdC1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpIGFuZCAoZGV2aWNlLWFzcGVjdC1yYXRpbzogMi8zKVwiLFxyXG5cdFwiaXBob25lNC1sYW5kc2NhcGVcIjpcdFwiKG1pbi1kZXZpY2Utd2lkdGg6IDMyMHB4KSBhbmQgKG1heC1kZXZpY2Utd2lkdGg6IDQ4MHB4KSBhbmQgKC13ZWJraXQtZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSBhbmQgKGRldmljZS1hc3BlY3QtcmF0aW86IDIvMykgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKVwiLFxyXG5cdFwiaXBob25lNC1wb3J0cmFpdFwiOlx0XCIobWluLWRldmljZS13aWR0aDogMzIwcHgpIGFuZCAobWF4LWRldmljZS13aWR0aDogNDgwcHgpIGFuZCAoLXdlYmtpdC1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpIGFuZCAoZGV2aWNlLWFzcGVjdC1yYXRpbzogMi8zKSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdClcIixcclxuXHRcImlwaG9uZTVcIjpcdFwiKG1pbi1kZXZpY2Utd2lkdGg6IDMyMHB4KSBhbmQgKG1heC1kZXZpY2Utd2lkdGg6IDU2OHB4KSBhbmQgKC13ZWJraXQtZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSBhbmQgKGRldmljZS1hc3BlY3QtcmF0aW86IDQwLzcxKVwiLFxyXG5cdFwiaXBob25lNS1sYW5kc2NhcGVcIjpcdFwiKG1pbi1kZXZpY2Utd2lkdGg6IDMyMHB4KSBhbmQgKG1heC1kZXZpY2Utd2lkdGg6IDU2OHB4KSBhbmQgKC13ZWJraXQtZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSBhbmQgKGRldmljZS1hc3BlY3QtcmF0aW86IDQwLzcxKSBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpXCIsXHJcblx0XCJpcGhvbmU1LXBvcnRyYWl0XCI6XHRcIihtaW4tZGV2aWNlLXdpZHRoOiAzMjBweCkgYW5kIChtYXgtZGV2aWNlLXdpZHRoOiA1NjhweCkgYW5kICgtd2Via2l0LWRldmljZS1waXhlbC1yYXRpbzogMikgYW5kIChkZXZpY2UtYXNwZWN0LXJhdGlvOiA0MC83MSkgYW5kIChvcmllbnRhdGlvbjogcG9ydHJhaXQpXCIsXHJcblx0XCJpcGhvbmU2XCI6XHRcIihtaW4tZGV2aWNlLXdpZHRoOiAzNzVweCkgYW5kIChtYXgtZGV2aWNlLXdpZHRoOiA2NjdweCkgYW5kICgtd2Via2l0LWRldmljZS1waXhlbC1yYXRpbzogMilcIixcclxuXHRcImlwaG9uZTYtbGFuZHNjYXBlXCI6XHRcIihtaW4tZGV2aWNlLXdpZHRoOiAzNzVweCkgYW5kIChtYXgtZGV2aWNlLXdpZHRoOiA2NjdweCkgYW5kICgtd2Via2l0LWRldmljZS1waXhlbC1yYXRpbzogMikgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKVwiLFxyXG5cdFwiaXBob25lNi1wb3J0cmFpdFwiOlx0XCIobWluLWRldmljZS13aWR0aDogMzc1cHgpIGFuZCAobWF4LWRldmljZS13aWR0aDogNjY3cHgpIGFuZCAoLXdlYmtpdC1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpIGFuZCAob3JpZW50YXRpb246IHBvcnRyYWl0KVwiLFxyXG5cdFwiaXBob25lNi1wbHVzXCI6XHRcIihtaW4tZGV2aWNlLXdpZHRoOiA0MTRweCkgYW5kIChtYXgtZGV2aWNlLXdpZHRoOiA3MzZweCkgYW5kICgtd2Via2l0LWRldmljZS1waXhlbC1yYXRpbzogMylcIixcclxuXHRcImlwaG9uZTYtcGx1cy1sYW5kc2NhcGVcIjpcdFwiKG1pbi1kZXZpY2Utd2lkdGg6IDQxNHB4KSBhbmQgKG1heC1kZXZpY2Utd2lkdGg6IDczNnB4KSBhbmQgKC13ZWJraXQtZGV2aWNlLXBpeGVsLXJhdGlvOiAzKSBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpXCIsXHJcblx0XCJpcGhvbmU2LXBsdXMtcG9ydHJhaXRcIjpcdFwiKG1pbi1kZXZpY2Utd2lkdGg6IDQxNHB4KSBhbmQgKG1heC1kZXZpY2Utd2lkdGg6IDczNnB4KSBhbmQgKC13ZWJraXQtZGV2aWNlLXBpeGVsLXJhdGlvOiAzKSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdClcIixcclxuXHRcImlwYWRcIjpcdFwiKG1pbi1kZXZpY2Utd2lkdGg6IDc2OHB4KSBhbmQgKG1heC1kZXZpY2Utd2lkdGg6IDEwMjRweClcIixcclxuXHRcImlwYWQtbGFuZHNjYXBlXCI6XHRcIihtaW4tZGV2aWNlLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtZGV2aWNlLXdpZHRoOiAxMDI0cHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSlcIixcclxuXHRcImlwYWQtcG9ydHJhaXRcIjpcdFwiKG1pbi1kZXZpY2Utd2lkdGg6IDc2OHB4KSBhbmQgKG1heC1kZXZpY2Utd2lkdGg6IDEwMjRweCkgYW5kIChvcmllbnRhdGlvbjogcG9ydHJhaXQpXCIsXHJcblx0XCJpcGFkLXJldGluYVwiOlx0XCIobWluLWRldmljZS13aWR0aDogNzY4cHgpIGFuZCAobWF4LWRldmljZS13aWR0aDogMTAyNHB4KSBhbmQgKC13ZWJraXQtZGV2aWNlLXBpeGVsLXJhdGlvOiAyKVwiLFxyXG5cdFwiaXBhZC1yZXRpbmEtbGFuZHNjYXBlXCI6XHRcIihtaW4tZGV2aWNlLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtZGV2aWNlLXdpZHRoOiAxMDI0cHgpIGFuZCAoLXdlYmtpdC1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSlcIixcclxuXHRcImlwYWQtcmV0aW5hLXBvcnRyYWl0XCI6XHRcIihtaW4tZGV2aWNlLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtZGV2aWNlLXdpZHRoOiAxMDI0cHgpIGFuZCAoLXdlYmtpdC1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpIGFuZCAob3JpZW50YXRpb246IHBvcnRyYWl0KVwiLFxyXG5cdFwiaGRwaVwiOlx0XCIoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAkaGRwaS1yYXRpby1kZWZhdWx0KSwgb25seSBzY3JlZW4gYW5kIChtaW4tLW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86ICRoZHBpLXJhdGlvLWRlZmF1bHQpLCBvbmx5IHNjcmVlbiBhbmQgKC1tb3otbWluLWRldmljZS1waXhlbC1yYXRpbzogJGhkcGktcmF0aW8tZGVmYXVsdCksXHRvbmx5IHNjcmVlbiBhbmQgKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JGhkcGktcmF0aW8tZGVmYXVsdH0vMSksIG9ubHkgc2NyZWVuIGFuZCAobWluLXJlc29sdXRpb246ICN7cm91bmQoJGhkcGktcmF0aW8tZGVmYXVsdCo5Nil9ZHBpKSwgb25seSBzY3JlZW4gYW5kIChtaW4tcmVzb2x1dGlvbjogI3skaGRwaS1yYXRpby1kZWZhdWx0fWRwcHgpXCJcclxuKTtcclxuQG1peGluIGJwKCRicmVhaywgJHZpZXdwb3J0MTogbnVsbCkge1xyXG5cdC8vIHByZXNldCBicmVha3BvaW50XHJcblx0QGlmIG5vdCAkdmlld3BvcnQxIHtcclxuXHRcdEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRicmVhaykge1xyXG5cdFx0XHRAbWVkaWEgb25seSBzY3JlZW4gYW5kICN7bWFwLWdldCgkYnJlYWtwb2ludHMsICRicmVhayl9IHsgQGNvbnRlbnQ7IH1cclxuXHRcdH1cclxuXHRcdEBlbHNlIHtcclxuXHRcdFx0QHdhcm4gXCJDb3VsZG4ndCBmaW5kIGEgYnJlYWtwb2ludCBuYW1lZCAjeyRicmVha30uXCI7XHJcblx0XHR9XHJcblx0fVxyXG5cdEBlbHNlIHtcclxuXHRcdC8vIG1pbiBicmVha3BvaW50XHJcblx0XHRAaWYgJGJyZWFrID09IG1pbiB7XHJcblx0XHRcdEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICR2aWV3cG9ydDEpIHsgQGNvbnRlbnQ7IH1cclxuXHRcdH1cclxuXHRcdC8vIG1heCBicmVha3BvaW50XHJcblx0XHRAZWxzZSBpZiAkYnJlYWsgPT0gbWF4IHtcclxuXHRcdFx0QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJHZpZXdwb3J0MSkgeyBAY29udGVudDsgfVxyXG5cdFx0fVxyXG5cdFx0Ly8gbWluICYgbWF4IGJyZWFrcG9pbnRcclxuXHRcdEBlbHNlIHtcclxuXHRcdFx0QG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJGJyZWFrKSBhbmQgKG1heC13aWR0aDogJHZpZXdwb3J0MSkgeyBAY29udGVudDsgfVxyXG5cdFx0fVxyXG5cdH1cclxufVxyXG5cclxuLy8gU2hvdy9IaWRlIEVsZW1lbnRcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cclxuQG1peGluIHNob3coJGJyZWFrcG9pbnQ6IG51bGwsICRkaXNwbGF5OiAkc2hvdy1kaXNwbGF5LWRlZmF1bHQpIHtcclxuXHRAaWYgJGJyZWFrcG9pbnQge1xyXG5cdFx0ZGlzcGxheTogbm9uZTtcclxuXHRcdEBpbmNsdWRlIGJwKCRicmVha3BvaW50KSB7XHJcblx0XHRcdGRpc3BsYXk6ICRkaXNwbGF5O1xyXG5cdFx0fVxyXG5cdH0gQGVsc2Uge1xyXG5cdFx0ZGlzcGxheTogJGRpc3BsYXk7XHJcblx0fVxyXG59XHJcbkBtaXhpbiBoaWRlKCRicmVha3BvaW50OiBudWxsKSB7XHJcblx0QGlmICRicmVha3BvaW50IHtcclxuXHRcdEBpbmNsdWRlIGJwKCRicmVha3BvaW50KSB7XHJcblx0XHRcdGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxuXHRcdH1cclxuXHR9IEBlbHNlIHtcclxuXHRcdGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxuXHR9XHJcbn1cclxuXHJcblxyXG4vLyBTaW5nbGUgc2lkZSBib3JkZXIgcmFkaXVzXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuQG1peGluIGJvcmRlci10b3AtcmFkaXVzKCRyYWRpdXM6ICRib3JkZXItcmFkaXVzLWRlZmF1bHQpIHtcclxuXHRib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogJHJhZGl1cztcclxuXHRib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAkcmFkaXVzO1xyXG59XHJcbkBtaXhpbiBib3JkZXItcmlnaHQtcmFkaXVzKCRyYWRpdXM6ICRib3JkZXItcmFkaXVzLWRlZmF1bHQpIHtcclxuXHRib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogJHJhZGl1cztcclxuXHRib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogJHJhZGl1cztcclxufVxyXG5AbWl4aW4gYm9yZGVyLWJvdHRvbS1yYWRpdXMoJHJhZGl1czogJGJvcmRlci1yYWRpdXMtZGVmYXVsdCkge1xyXG5cdGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAkcmFkaXVzO1xyXG5cdGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6ICRyYWRpdXM7XHJcbn1cclxuQG1peGluIGJvcmRlci1sZWZ0LXJhZGl1cygkcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1kZWZhdWx0KSB7XHJcblx0Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czogJHJhZGl1cztcclxuXHRib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAkcmFkaXVzO1xyXG59XHJcblxyXG4vLyBUcmFuc2Zvcm1zXHJcbi8vIC0tLS0tLS0tLS1cclxuQG1peGluIHRyYW5zZm9ybS1zaW5nbGUoJHByb3BlcnR5LCAkdmFsdWUpIHtcclxuXHRAaWYgJGJyb3dzZXItcHJlZml4ZXMge1xyXG5cdFx0QGluY2x1ZGUganVpY2UtcHJlZml4ZXIodHJhbnNmb3JtLCAjeyRwcm9wZXJ0eX11bnF1b3RlKFwiKFwiKSN7JHZhbHVlfXVucXVvdGUoXCIpXCIpLCB3ZWJraXQgbW96IG1zIG8gc3BlYyk7XHJcblx0fVxyXG5cdEBlbHNlIHtcclxuXHRcdHRyYW5zZm9ybTogI3skcHJvcGVydHl9dW5xdW90ZShcIihcIikjeyR2YWx1ZX11bnF1b3RlKFwiKVwiKTtcclxuXHR9XHJcbn1cclxuQG1peGluIHJvdGF0ZSgkZGVnKSB7XHJcblx0QGluY2x1ZGUgdHJhbnNmb3JtLXNpbmdsZShyb3RhdGUsICRkZWcpO1xyXG59XHJcbkBtaXhpbiByb3RhdGVYKCRkZWcpIHtcclxuXHRAaW5jbHVkZSB0cmFuc2Zvcm0tc2luZ2xlKHJvdGF0ZVgsICRkZWcpO1xyXG59XHJcbkBtaXhpbiByb3RhdGVZKCRkZWcpIHtcclxuXHRAaW5jbHVkZSB0cmFuc2Zvcm0tc2luZ2xlKHJvdGF0ZVksICRkZWcpO1xyXG59XHJcbkBtaXhpbiByb3RhdGVaKCRkZWcpIHtcclxuXHRAaW5jbHVkZSB0cmFuc2Zvcm0tc2luZ2xlKHJvdGF0ZVosICRkZWcpO1xyXG59XHJcbkBtaXhpbiByb3RhdGUzZCgkeCwgJHksICR6LCAkZGVnKSB7XHJcblx0JG11bHRpLXZhcjogJHgsICR5LCAkeiwgJGRlZztcclxuXHRAaW5jbHVkZSB0cmFuc2Zvcm0tc2luZ2xlKHJvdGF0ZTNkLCAkbXVsdGktdmFyKTtcclxufVxyXG5AbWl4aW4gc2NhbGUoJHJhdGlvKSB7XHJcblx0QGluY2x1ZGUgdHJhbnNmb3JtLXNpbmdsZShzY2FsZSwgJHJhdGlvKTtcclxufVxyXG5AbWl4aW4gc2NhbGVYKCRyYXRpbykge1xyXG5cdEBpbmNsdWRlIHRyYW5zZm9ybS1zaW5nbGUoc2NhbGVYLCAkcmF0aW8pO1xyXG59XHJcbkBtaXhpbiBzY2FsZVkoJHJhdGlvKSB7XHJcblx0QGluY2x1ZGUgdHJhbnNmb3JtLXNpbmdsZShzY2FsZVksICRyYXRpbyk7XHJcbn1cclxuQG1peGluIHNjYWxlWigkcmF0aW8pIHtcclxuXHRAaW5jbHVkZSB0cmFuc2Zvcm0tc2luZ2xlKHNjYWxlWiwgJHJhdGlvKTtcclxufVxyXG5AbWl4aW4gc2NhbGUzZCgkeCwgJHksICR6KSB7XHJcblx0JG11bHRpLXZhcjogJHgsICR5LCAkejtcclxuXHRAaW5jbHVkZSB0cmFuc2Zvcm0tc2luZ2xlKHNjYWxlM2QsICRtdWx0aS12YXIpO1xyXG59XHJcbkBtaXhpbiBza2V3KCR4LCAkeSkge1xyXG5cdCRtdWx0aS12YXI6ICR4LCAkeTtcclxuXHRAaW5jbHVkZSB0cmFuc2Zvcm0tc2luZ2xlKHNrZXcsICRtdWx0aS12YXIpO1xyXG5cdGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcclxufVxyXG5AbWl4aW4gc2tld1goJGRlZykge1xyXG5cdEBpbmNsdWRlIHRyYW5zZm9ybS1zaW5nbGUoc2tld1gsICRkZWcpO1xyXG5cdGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcclxufVxyXG5AbWl4aW4gc2tld1koJGRlZykge1xyXG5cdEBpbmNsdWRlIHRyYW5zZm9ybS1zaW5nbGUoc2tld1ksICRkZWcpO1xyXG5cdGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcclxufVxyXG5AbWl4aW4gdHJhbnNsYXRlKCR4LCAkeSkge1xyXG5cdCRtdWx0aS12YXI6ICR4LCAkeTtcclxuXHRAaW5jbHVkZSB0cmFuc2Zvcm0tc2luZ2xlKHRyYW5zbGF0ZSwgJG11bHRpLXZhcik7XHJcbn1cclxuQG1peGluIHRyYW5zbGF0ZVgoJHgpIHtcclxuXHRAaW5jbHVkZSB0cmFuc2Zvcm0tc2luZ2xlKHRyYW5zbGF0ZVgsICR4KTtcclxufVxyXG5AbWl4aW4gdHJhbnNsYXRlWSgkeSkge1xyXG5cdEBpbmNsdWRlIHRyYW5zZm9ybS1zaW5nbGUodHJhbnNsYXRlWSwgJHkpO1xyXG59XHJcbkBtaXhpbiB0cmFuc2xhdGVaKCR6KSB7XHJcblx0QGluY2x1ZGUgdHJhbnNmb3JtLXNpbmdsZSh0cmFuc2xhdGVaLCAkeik7XHJcbn1cclxuQG1peGluIHRyYW5zbGF0ZTNkKCR4LCAkeSwgJHopIHtcclxuXHQkbXVsdGktdmFyOiAkeCwgJHksICR6O1xyXG5cdEBpbmNsdWRlIHRyYW5zZm9ybS1zaW5nbGUodHJhbnNsYXRlM2QsICRtdWx0aS12YXIpO1xyXG59XHJcblxyXG4vLyBFbWJvc3MgZWZmZWN0XHJcbi8vIC0tLS0tLS0tLS0tLS1cclxuQG1peGluIGJveC1lbWJvc3MoJG9wYWNpdHk6IDAuNSwgJG9wYWNpdHkyOiAwLjUpe1xyXG5cdEBpZiAkYnJvd3Nlci1wcmVmaXhlcyB7XHJcblx0XHRAaW5jbHVkZSBqdWljZS1wcmVmaXhlcihib3gtc2hhZG93LCBcInJnYmEod2hpdGUsI3skb3BhY2l0eX0pIDAgMXB4IDAsIGluc2V0IHJnYmEoYmxhY2ssI3skb3BhY2l0eTJ9KSAwIDFweCAwXCIsIHdlYmtpdCBzcGVjKTtcclxuXHR9XHJcblx0QGVsc2Uge1xyXG5cdFx0Ym94LXNoYWRvdzogcmdiYSh3aGl0ZSwkb3BhY2l0eSkgMCAxcHggMCwgaW5zZXQgcmdiYShibGFjaywkb3BhY2l0eTIpIDAgMXB4IDA7XHJcblx0fVxyXG59XHJcblxyXG4vLyBMZXR0ZXJwcmVzcyBlZmZlY3RcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXHJcbkBtaXhpbiBsZXR0ZXJwcmVzcygkb3BhY2l0eTogMC41KXtcclxuXHR0ZXh0LXNoYWRvdzogcmdiYSh3aGl0ZSwkb3BhY2l0eSkgMCAxcHggMDtcclxufVxyXG5cclxuLy8gUGxhY2Vob2xkZXIgdGV4dFxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tXHJcbkBtaXhpbiBwbGFjZWhvbGRlci1jb2xvcigkY29sb3I6ICRwbGFjZWhvbGRlci1jb2xvci1kZWZhdWx0KSB7XHJcblx0QGlmICRicm93c2VyLXByZWZpeGVzIHtcclxuXHRcdCY6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xyXG5cdFx0XHRjb2xvcjogJGNvbG9yO1xyXG5cdFx0fVxyXG5cdFx0Jjo6LW1vei1wbGFjZWhvbGRlciB7XHJcblx0XHRcdGNvbG9yOiAkY29sb3I7XHJcblx0XHR9XHJcblx0XHQmOjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xyXG5cdFx0XHRjb2xvcjogJGNvbG9yO1xyXG5cdFx0fVxyXG5cdFx0Jjo6cGxhY2Vob2xkZXIge1xyXG5cdFx0XHRjb2xvcjogJGNvbG9yO1xyXG5cdFx0fVxyXG5cdH1cclxuXHRAZWxzZSB7XHJcblx0XHQmOjpwbGFjZWhvbGRlciB7XHJcblx0XHRcdGNvbG9yOiAkY29sb3I7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcblxyXG4vLyBTaXppbmdcclxuLy8gLS0tLS0tXHJcbkBtaXhpbiBzaXplKCR3aWR0aCwgJGhlaWdodDogJHdpZHRoKSB7XHJcblx0d2lkdGg6ICR3aWR0aDtcclxuXHRoZWlnaHQ6ICRoZWlnaHQ7XHJcbn1cclxuXHJcbi8vIE5vcm1hbCAmIGhvdmVyIHN0YXRlXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbkBtaXhpbiBob3ZlcmVyKCRwcm9wZXJ0eSwgJG5vcm1hbCwgJGhvdmVyZWQpIHtcclxuXHQjeyRwcm9wZXJ0eX06ICRub3JtYWw7XHJcblx0Jjpob3ZlciB7XHJcblx0XHQjeyRwcm9wZXJ0eX06ICRob3ZlcmVkO1xyXG5cdH1cclxufVxyXG5cclxuLy8gQWRkIHJlc3BvbnNpdmUgc3R5bGluZyBmb3IgbXVsdGlwbGUgYnJlYWtwb2ludHNcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuQG1peGluIHJlc3BvbnNpdmUoJHByb3BlcnR5LCAkYmFzZSwgJG1lZGl1bTpmYWxzZSwgJHNtYWxsOmZhbHNlKSB7XHJcblx0I3skcHJvcGVydHl9OiAkYmFzZTtcclxuXHRAaWYgJG1lZGl1bSB7XHJcblx0XHRAaW5jbHVkZSBicChtZWRpdW0pIHtcclxuXHRcdFx0I3skcHJvcGVydHl9OiAkbWVkaXVtO1xyXG5cdFx0fVxyXG5cdH1cclxuXHRAaWYgJHNtYWxsIHtcclxuXHRcdEBpbmNsdWRlIGJwKHNtYWxsKSB7XHJcblx0XHRcdCN7JHByb3BlcnR5fTogJHNtYWxsO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG5cclxuLy8gQ3JlYXRlIGEgdHJpYW5nbGUgdXNpbmcgYm9yZGVyc1xyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbkBtaXhpbiB0cmlhbmdsZSgkZGlyZWN0aW9uOiAkdHJpYW5nbGUtZGlyZWN0aW9uLWRlZmF1bHQsXHJcblx0XHRcdFx0XHRcdFx0XHQkc2l6ZTogJHRyaWFuZ2xlLXNpemUtZGVmYXVsdCxcclxuXHRcdFx0XHRcdFx0XHRcdCRjb2xvcjogJHRyaWFuZ2xlLWNvbG9yLWRlZmF1bHQsXHJcblx0XHRcdFx0XHRcdFx0XHQkY2VudGVyOiBmYWxzZSxcclxuXHRcdFx0XHRcdFx0XHRcdCRlbGVtZW50OiAkdHJpYW5nbGUtZWxlbWVudC1kZWZhdWx0KSB7XHJcblx0JjojeyRlbGVtZW50fSB7XHJcblx0XHRAaWYgbm90ICRjZW50ZXIge1xyXG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHR9XHJcblx0XHRjb250ZW50OicnO1xyXG5cdFx0QGluY2x1ZGUgc2l6ZSgwKTtcclxuXHRcdC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcclxuXHRcdGJvcmRlci1zdHlsZTogc29saWQ7XHJcblx0XHRAaWYgJGRpcmVjdGlvbiA9PSB1cCB7XHJcblx0XHRcdGJvcmRlci13aWR0aDogMCAkc2l6ZSAoJHNpemUqMS42MjUpICRzaXplO1xyXG5cdFx0XHRib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICRjb2xvciB0cmFuc3BhcmVudDtcclxuXHRcdFx0QGlmICRjZW50ZXIge1xyXG5cdFx0XHRcdEBpbmNsdWRlIGFic29sdXRlKG51bGwsbnVsbCwxMDAlLDUwJSk7XHJcblx0XHRcdFx0QGlmICRicm93c2VyLXByZWZpeGVzIHtcclxuXHRcdFx0XHRcdEBpbmNsdWRlIGp1aWNlLXByZWZpeGVyKHRyYW5zZm9ybSwgdHJhbnNsYXRlWCgtJHNpemUpLCB3ZWJraXQgbW96IG1zIG8gc3BlYyk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdEBlbHNlIHtcclxuXHRcdFx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtJHNpemUpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0QGVsc2UgaWYgJGRpcmVjdGlvbiA9PSB1cC1yaWdodCB7XHJcblx0XHRcdGJvcmRlci13aWR0aDogMCAkc2l6ZSAkc2l6ZSAwO1xyXG5cdFx0XHRib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICRjb2xvciB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcclxuXHRcdFx0QGlmICRjZW50ZXIge1xyXG5cdFx0XHRcdEBpbmNsdWRlIGFic29sdXRlKDAsMCk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gcmlnaHQge1xyXG5cdFx0XHRib3JkZXItd2lkdGg6ICRzaXplIDAgJHNpemUgKCRzaXplKjEuNjI1KTtcclxuXHRcdFx0Ym9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAkY29sb3I7XHJcblx0XHRcdEBpZiAkY2VudGVyIHtcclxuXHRcdFx0XHRAaW5jbHVkZSBhYnNvbHV0ZSg1MCUsbnVsbCxudWxsLDEwMCUpO1xyXG5cdFx0XHRcdEBpZiAkYnJvd3Nlci1wcmVmaXhlcyB7XHJcblx0XHRcdFx0XHRAaW5jbHVkZSBqdWljZS1wcmVmaXhlcih0cmFuc2Zvcm0sIHRyYW5zbGF0ZVkoLSRzaXplKSwgd2Via2l0IG1veiBtcyBvIHNwZWMpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRAZWxzZSB7XHJcblx0XHRcdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLSRzaXplKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gZG93bi1yaWdodCB7XHJcblx0XHRcdGJvcmRlci13aWR0aDogMCAwICRzaXplICRzaXplO1xyXG5cdFx0XHRib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICRjb2xvciB0cmFuc3BhcmVudDtcclxuXHRcdFx0QGlmICRjZW50ZXIge1xyXG5cdFx0XHRcdEBpbmNsdWRlIGFic29sdXRlKG51bGwsMCwwKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0QGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBkb3duIHtcclxuXHRcdFx0Ym9yZGVyLXdpZHRoOiAoJHNpemUqMS42MjUpICRzaXplIDAgJHNpemU7XHJcblx0XHRcdGJvcmRlci1jb2xvcjogJGNvbG9yIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xyXG5cdFx0XHRAaWYgJGNlbnRlciB7XHJcblx0XHRcdFx0QGluY2x1ZGUgYWJzb2x1dGUoMTAwJSxudWxsLG51bGwsNTAlKTtcclxuXHRcdFx0XHRAaWYgJGJyb3dzZXItcHJlZml4ZXMge1xyXG5cdFx0XHRcdFx0QGluY2x1ZGUganVpY2UtcHJlZml4ZXIodHJhbnNmb3JtLCB0cmFuc2xhdGVYKC0kc2l6ZSksIHdlYmtpdCBtb3ogbXMgbyBzcGVjKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0QGVsc2Uge1xyXG5cdFx0XHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0kc2l6ZSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRAZWxzZSBpZiAkZGlyZWN0aW9uID09IGRvd24tbGVmdCB7XHJcblx0XHRcdGJvcmRlci13aWR0aDogJHNpemUgMCAwICRzaXplO1xyXG5cdFx0XHRib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICRjb2xvcjtcclxuXHRcdFx0QGlmICRjZW50ZXIge1xyXG5cdFx0XHRcdEBpbmNsdWRlIGFic29sdXRlKG51bGwsbnVsbCwwLDApO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRAZWxzZSBpZiAkZGlyZWN0aW9uID09IGxlZnQge1xyXG5cdFx0XHRib3JkZXItd2lkdGg6ICRzaXplICgkc2l6ZSoxLjYyNSkgJHNpemUgMDtcclxuXHRcdFx0Ym9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCAkY29sb3IgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XHJcblx0XHRcdEBpZiAkY2VudGVyIHtcclxuXHRcdFx0XHRAaW5jbHVkZSBhYnNvbHV0ZSg1MCUsMTAwJSk7XHJcblx0XHRcdFx0QGlmICRicm93c2VyLXByZWZpeGVzIHtcclxuXHRcdFx0XHRcdEBpbmNsdWRlIGp1aWNlLXByZWZpeGVyKHRyYW5zZm9ybSwgdHJhbnNsYXRlWSgtJHNpemUpLCB3ZWJraXQgbW96IG1zIG8gc3BlYyk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdEBlbHNlIHtcclxuXHRcdFx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtJHNpemUpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0QGVsc2UgaWYgJGRpcmVjdGlvbiA9PSB1cC1sZWZ0IHtcclxuXHRcdFx0Ym9yZGVyLXdpZHRoOiAkc2l6ZSAkc2l6ZSAwIDA7XHJcblx0XHRcdGJvcmRlci1jb2xvcjogJGNvbG9yIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xyXG5cdFx0XHRAaWYgJGNlbnRlciB7XHJcblx0XHRcdFx0QGluY2x1ZGUgYWJzb2x1dGUoMCxudWxsLG51bGwsMCk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdEBlbHNlIHtcclxuXHRcdFx0QHdhcm4gXCJBdmFpbGFibGUgZGlyZWN0aW9uczogdXAsIHVwLXJpZ2h0LCByaWdodCwgZG93bi1yaWdodCwgZG93biwgZG93bi1sZWZ0LCBsZWZ0LCB1cC1sZWZ0LlwiO1xyXG5cdFx0fVxyXG5cdFx0QGNvbnRlbnQ7XHJcblx0fVxyXG59XHJcblxyXG4vLyBDcmVhdGUgYSBjaXJjbGUsIHdpdGggYW4gb3B0aW9uYWwgYm9yZGVyXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuQG1peGluIGNpcmNsZSgkc2l6ZTogJGNpcmNsZS1zaXplLWRlZmF1bHQsXHJcblx0XHRcdFx0XHRcdCRjb2xvcjogJGNpcmNsZS1jb2xvci1kZWZhdWx0LFxyXG5cdFx0XHRcdFx0XHQkYm9yZGVyLXdpZHRoOiAkY2lyY2xlLWJvcmRlci13aWR0aC1kZWZhdWx0LFxyXG5cdFx0XHRcdFx0XHQkYm9yZGVyLWNvbG9yOiAkY2lyY2xlLWJvcmRlci1jb2xvci1kZWZhdWx0LFxyXG5cdFx0XHRcdFx0XHQkZGlzcGxheTogJGNpcmNsZS1kaXNwbGF5LWRlZmF1bHQpIHtcclxuXHRkaXNwbGF5OiAkZGlzcGxheTtcclxuXHRib3JkZXItcmFkaXVzOiA1MCU7XHJcblx0QGlmICRib3JkZXItd2lkdGgge1xyXG5cdFx0QGluY2x1ZGUgc2l6ZSgkc2l6ZSk7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XHJcblx0XHRib3JkZXI6ICRib3JkZXItd2lkdGggc29saWQgJGJvcmRlci1jb2xvcjtcclxuXHR9XHJcblx0QGVsc2V7XHJcblx0XHRAaWYgJGNvbG9yID09IGluaGVyaXQge1xyXG5cdFx0XHRAaW5jbHVkZSBzaXplKDApO1xyXG5cdFx0XHRib3JkZXItd2lkdGg6ICRzaXplLzI7XHJcblx0XHRcdGJvcmRlci1zdHlsZTogc29saWQ7XHJcblx0XHR9XHJcblx0XHRAZWxzZSB7XHJcblx0XHRcdEBpbmNsdWRlIHNpemUoJHNpemUpO1xyXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcblxyXG4vLyBDcmVhdGUgYSBwc3VlZG8gZWxlbWVudCBzcXVhcmUsIHdpdGggYW4gb3B0aW9uYWwgYm9yZGVyXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuQG1peGluIHNxdWFyZSgkc2l6ZTogJHNxdWFyZS1zaXplLWRlZmF1bHQsXHJcblx0XHRcdFx0XHRcdCRjb2xvcjogJHNxdWFyZS1jb2xvci1kZWZhdWx0LFxyXG5cdFx0XHRcdFx0XHQkYm9yZGVyLXdpZHRoOiAkc3F1YXJlLWJvcmRlci13aWR0aC1kZWZhdWx0LFxyXG5cdFx0XHRcdFx0XHQkYm9yZGVyLWNvbG9yOiAkc3F1YXJlLWJvcmRlci1jb2xvci1kZWZhdWx0LFxyXG5cdFx0XHRcdFx0XHQkZWxlbWVudDogJHNxdWFyZS1lbGVtZW50LWRlZmF1bHQpIHtcclxuXHQmOiN7JGVsZW1lbnR9IHtcclxuXHRcdGNvbnRlbnQ6ICcnO1xyXG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdFx0QGluY2x1ZGUgc2l6ZSgkc2l6ZSk7XHJcblx0XHRiYWNrZ3JvdW5kOiAkY29sb3I7XHJcblx0XHRAaWYgJGJvcmRlci13aWR0aCB7XHJcblx0XHRcdGJvcmRlcjogJGJvcmRlci13aWR0aCBzb2xpZCAkYm9yZGVyLWNvbG9yO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG5cclxuLy8gQWR2YW5jZWQgcG9zaXRpb25pbmdcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuQG1peGluIHBvc2l0aW9uKCR0eXBlLFxyXG5cdFx0XHRcdFx0XHRcdFx0JHRvcDogJHBvc2l0aW9uLWRlZmF1bHQsXHJcblx0XHRcdFx0XHRcdFx0XHQkcmlnaHQ6ICRwb3NpdGlvbi1kZWZhdWx0LFxyXG5cdFx0XHRcdFx0XHRcdFx0JGJvdHRvbTogJHBvc2l0aW9uLWRlZmF1bHQsXHJcblx0XHRcdFx0XHRcdFx0XHQkbGVmdDogJHBvc2l0aW9uLWRlZmF1bHQpIHtcclxuXHRwb3NpdGlvbjogJHR5cGU7XHJcblx0JGFsbG93ZWRfdHlwZXM6IGFic29sdXRlIHJlbGF0aXZlIGZpeGVkO1xyXG5cdEBpZiBub3QgaW5kZXgoJGFsbG93ZWRfdHlwZXMsICR0eXBlKSB7XHJcblx0XHRAd2FybiBcIlVua25vd24gcG9zaXRpb246ICN7JHR5cGV9LlwiO1xyXG5cdH1cclxuXHRAZWFjaCAkZGF0YSBpbiB0b3AgJHRvcCwgcmlnaHQgJHJpZ2h0LCBib3R0b20gJGJvdHRvbSwgbGVmdCAkbGVmdCB7XHJcblx0XHQje250aCgkZGF0YSwgMSl9OiBudGgoJGRhdGEsIDIpO1xyXG5cdH1cclxufVxyXG5AbWl4aW4gYWJzb2x1dGUoJHRvcDogJHBvc2l0aW9uLWRlZmF1bHQsICRyaWdodDogJHBvc2l0aW9uLWRlZmF1bHQsICRib3R0b206ICRwb3NpdGlvbi1kZWZhdWx0LCAkbGVmdDogJHBvc2l0aW9uLWRlZmF1bHQpIHtcclxuXHRAaW5jbHVkZSBwb3NpdGlvbihhYnNvbHV0ZSwgJHRvcCwgJHJpZ2h0LCAkYm90dG9tLCAkbGVmdCk7XHJcbn1cclxuQG1peGluIHJlbGF0aXZlKCR0b3A6ICRwb3NpdGlvbi1kZWZhdWx0LCAkcmlnaHQ6ICRwb3NpdGlvbi1kZWZhdWx0LCAkYm90dG9tOiAkcG9zaXRpb24tZGVmYXVsdCwgJGxlZnQ6ICRwb3NpdGlvbi1kZWZhdWx0KSB7XHJcblx0QGluY2x1ZGUgcG9zaXRpb24ocmVsYXRpdmUsICR0b3AsICRyaWdodCwgJGJvdHRvbSwgJGxlZnQpO1xyXG59XHJcbkBtaXhpbiBmaXhlZCgkdG9wOiAkcG9zaXRpb24tZGVmYXVsdCwgJHJpZ2h0OiAkcG9zaXRpb24tZGVmYXVsdCwgJGJvdHRvbTogJHBvc2l0aW9uLWRlZmF1bHQsICRsZWZ0OiAkcG9zaXRpb24tZGVmYXVsdCkge1xyXG5cdEBpbmNsdWRlIHBvc2l0aW9uKGZpeGVkLCAkdG9wLCAkcmlnaHQsICRib3R0b20sICRsZWZ0KTtcclxufVxyXG5cclxuLy8gRWFzaWx5IHNldCBhbiBlbGVtZW50J3MgXCJ0cmJsXCIgdmFsdWVzXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuQG1peGluIHRyYmwoJHRvcDogJHBvc2l0aW9uLWRlZmF1bHQsXHJcblx0XHRcdFx0XHRcdFx0XHQkcmlnaHQ6ICRwb3NpdGlvbi1kZWZhdWx0LFxyXG5cdFx0XHRcdFx0XHRcdFx0JGJvdHRvbTogJHBvc2l0aW9uLWRlZmF1bHQsXHJcblx0XHRcdFx0XHRcdFx0XHQkbGVmdDogJHBvc2l0aW9uLWRlZmF1bHQpIHtcclxuXHRAZWFjaCAkZGF0YSBpbiB0b3AgJHRvcCwgcmlnaHQgJHJpZ2h0LCBib3R0b20gJGJvdHRvbSwgbGVmdCAkbGVmdCB7XHJcblx0XHQje250aCgkZGF0YSwgMSl9OiBudGgoJGRhdGEsIDIpO1xyXG5cdH1cclxufVxyXG5AbWl4aW4gdG9wLWxlZnQge1xyXG5cdEBpbmNsdWRlIHRyYmwoMCxudWxsLG51bGwsMCk7XHJcbn1cclxuQG1peGluIHRvcC1yaWdodCB7XHJcblx0QGluY2x1ZGUgdHJibCgwLDApO1xyXG59XHJcbkBtaXhpbiBib3R0b20tbGVmdCB7XHJcblx0QGluY2x1ZGUgdHJibChudWxsLG51bGwsMCwwKTtcclxufVxyXG5AbWl4aW4gYm90dG9tLXJpZ2h0IHtcclxuXHRAaW5jbHVkZSB0cmJsKG51bGwsMCwwLG51bGwpO1xyXG59XHJcblxyXG4vLyBQcmVsb2FkIEltYWdlc1xyXG4vLyBDcmVkaXQ6IGh0dHA6Ly9jb2RlcGVuLmlvL3BpeGVsYXNzL2RldGFpbHMvdkVLWlJxXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuQG1peGluIGltYWdlLXByZWxvYWQoJHByZWxvYWQ6IHJ1bikge1xyXG5cdEBpZiBub3QgdmFyaWFibGUtZXhpc3RzKF9wcmVsb2FkLWltYWdlLWxpc3QpIHtcclxuXHRcdCRfcHJlbG9hZC1pbWFnZS1saXN0OiAoKSFnbG9iYWw7XHJcblx0fVxyXG5cdEBpZiBub3QgdmFyaWFibGUtZXhpc3RzKF9wcmVsb2FkLWltYWdlLXVybHMpIHtcclxuXHRcdCRfcHJlbG9hZC1pbWFnZS11cmxzOiAoKSFnbG9iYWw7XHJcblx0fVxyXG5cdEBpZiBub3QgdmFyaWFibGUtZXhpc3RzKF9wcmVsb2FkLWltYWdlcy1sb2FkZWQpIHtcclxuXHRcdCRfcHJlbG9hZC1pbWFnZXMtbG9hZGVkOiBmYWxzZSFnbG9iYWw7XHJcblx0fVxyXG5cdEBpZiAkcHJlbG9hZCA9PSBydW4gYW5kIG5vdCAkX3ByZWxvYWQtaW1hZ2VzLWxvYWRlZCB7XHJcblx0XHQkX3ByZWxvYWQtaW1hZ2VzLWxvYWRlZDogdHJ1ZSFnbG9iYWw7XHJcblx0XHRodG1sOmFmdGVyIHtcclxuXHRcdFx0Y29udGVudDogJyc7XHJcblx0XHRcdGRpc3BsYXk6IG5vbmU7XHJcblx0XHRcdGJhY2tncm91bmQtaW1hZ2U6ICRfcHJlbG9hZC1pbWFnZS11cmxzO1xyXG5cdFx0fVxyXG5cdH0gQGVsc2Uge1xyXG5cdFx0JF9wcmVsb2FkLWltYWdlLWxpc3Q6IGpvaW4oJHByZWxvYWQsICRfcHJlbG9hZC1pbWFnZS1saXN0KSFnbG9iYWw7XHJcblx0XHQkaW1hZ2UtdXJsczogKCk7XHJcblx0XHRAaWYgbGVuZ3RoKCRfcHJlbG9hZC1pbWFnZS1saXN0KSA+IDAge1xyXG5cdFx0XHRAZm9yICRpIGZyb20gMSB0aHJvdWdoIGxlbmd0aCgkX3ByZWxvYWQtaW1hZ2UtbGlzdCkge1xyXG5cdFx0XHRcdCRpbWFnZS11cmxzOiBqb2luKHVybCgje250aCgkX3ByZWxvYWQtaW1hZ2UtbGlzdCwkaSl9KSwgJGltYWdlLXVybHMpO1xyXG5cdFx0XHR9XHJcblx0XHRcdCRyZXN1bHQ6ICgpO1xyXG5cdFx0XHRAZWFjaCAkaXRlbSBpbiAkaW1hZ2UtdXJscyB7XHJcblx0XHRcdFx0QGlmIG5vdCBpbmRleCgkcmVzdWx0LCAkaXRlbSkge1xyXG5cdFx0XHRcdFx0XHQkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJGl0ZW0sIGNvbW1hKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0JF9wcmVsb2FkLWltYWdlLXVybHM6ICRyZXN1bHQhZ2xvYmFsO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG5cclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuLy8gSGVscGVyIE1peGluc1xyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuLy8gQ2xlYXJmaXhcclxuLy8gLS0tLS0tLS1cclxuQG1peGluIGNsZWFyZml4IHtcclxuXHQqem9vbTogMTtcclxuXHQmOmJlZm9yZSxcclxuXHQmOmFmdGVyIHtcclxuXHRcdGRpc3BsYXk6IHRhYmxlO1xyXG5cdFx0Y29udGVudDonJztcclxuXHRcdGxpbmUtaGVpZ2h0OiAwO1xyXG5cdH1cclxuXHQmOmFmdGVyIHtcclxuXHRcdGNsZWFyOiBib3RoO1xyXG5cdH1cclxufVxyXG5cclxuLy8gSGlkZSB0ZXh0XHJcbi8vIC0tLS0tLS0tLVxyXG5AbWl4aW4gaGlkZS10ZXh0IHtcclxuXHRmb250OiAwLzAgYTtcclxuXHRjb2xvcjogdHJhbnNwYXJlbnQ7XHJcblx0dGV4dC1zaGFkb3c6IG5vbmU7XHJcbn1cclxuXHJcbi8vIENlbnRlciBhbiBlbGVtZW50IHZlcnRpY2FsbHkgYW5kIGhvcml6b250YWxseVxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuQG1peGluIGNlbnRlcmVyIHtcclxuXHRAaW5jbHVkZSBhYnNvbHV0ZSg1MCUsbnVsbCxudWxsLDUwJSk7XHJcblx0QGlmICRicm93c2VyLXByZWZpeGVzIHtcclxuXHRcdEBpbmNsdWRlIGp1aWNlLXByZWZpeGVyKHRyYW5zZm9ybSwgdHJhbnNsYXRlKC01MCUsLTUwJSksIHdlYmtpdCBtb3ogbXMgbyBzcGVjKTtcclxuXHR9XHJcblx0QGVsc2Uge1xyXG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwtNTAlKTtcclxuXHR9XHJcbn1cclxuXHJcbi8vIENlbnRlciBhbiBlbGVtZW50IHZlcnRpY2FsbHlcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5AbWl4aW4gdmVydC1jZW50ZXJlciB7XHJcblx0QGluY2x1ZGUgcmVsYXRpdmUoNTAlKTtcclxuXHRAaWYgJGJyb3dzZXItcHJlZml4ZXMge1xyXG5cdFx0QGluY2x1ZGUganVpY2UtcHJlZml4ZXIodHJhbnNmb3JtLCB0cmFuc2xhdGVZKC01MCUpLCB3ZWJraXQgbW96IG1zIG8gc3BlYyk7XHJcblx0fVxyXG5cdEBlbHNlIHtcclxuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcclxuXHR9XHJcbn1cclxuXHJcbi8vIENvdmVyIGV2ZXJ5dGhpbmdcclxuLy8gLS0tLS0tLS0tLS0tLS0tLVxyXG5AbWl4aW4gY292ZXJlciB7XHJcblx0QGluY2x1ZGUgYWJzb2x1dGUoMCwgbnVsbCwgbnVsbCwgMCk7XHJcblx0QGluY2x1ZGUgc2l6ZSgxMDAlKTtcclxufVxyXG5cclxuLy8gQ2VudGVyIGEgYmxvY2sgbGV2ZWwgZWxlbWVudFxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbkBtaXhpbiBjZW50ZXItYmxvY2sge1xyXG5cdGRpc3BsYXk6IGJsb2NrO1xyXG5cdG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG5cdG1hcmdpbi1yaWdodDogYXV0bztcclxufVxyXG5cclxuLy8gQ2xlYW4gYW4gZWxlbWVudFxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tXHJcbkBtaXhpbiBjbGVhbiB7XHJcblx0bWFyZ2luOiAwO1xyXG5cdHBhZGRpbmc6IDA7XHJcbn1cclxuXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuLy8gRnVuY3Rpb25zXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbi8vIE1peCB3aGl0ZSB3aXRoIGFub3RoZXIgY29sb3JcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5AZnVuY3Rpb24gdGludCgkY29sb3IsICRwZXJjZW50OiAkbWl4LXBlcmNlbnQtZGVmYXVsdCl7XHJcblx0QHJldHVybiBtaXgod2hpdGUsICRjb2xvciwgJHBlcmNlbnQpO1xyXG59XHJcblxyXG4vLyBNaXggYmxhY2sgd2l0aCBhbm90aGVyIGNvbG9yXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuQGZ1bmN0aW9uIHNoYWRlKCRjb2xvciwgJHBlcmNlbnQ6ICRtaXgtcGVyY2VudC1kZWZhdWx0KXtcclxuXHRAcmV0dXJuIG1peChibGFjaywgJGNvbG9yLCAkcGVyY2VudCk7XHJcbn1cclxuXHJcbi8vIENyZWF0ZSBhIHJhbmRvbSBjb2xvclxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuQGZ1bmN0aW9uIHJhbmRvbS1jb2xvcigkbWluOiAwLCAkbWF4OiAyNTUsICRhbHBoYTogMSkge1xyXG5cdEBpZiAkbWluIDwgMCB7XHJcblx0XHQkbWluOiAtMTtcclxuXHR9IEBlbHNlIHtcclxuXHRcdCRtaW46ICRtaW4gLSAxO1xyXG5cdH1cclxuXHRAaWYgJG1heCA+IDI1NSB7XHJcblx0XHQkbWF4OiAyNTY7XHJcblx0fSBAZWxzZSB7XHJcblx0XHQkbWF4OiAkbWF4ICsgMTtcclxuXHR9XHJcblx0JHJlZDogcmFuZG9tKCRtYXgpICsgJG1pbjtcclxuXHQkZ3JlZW46IHJhbmRvbSgkbWF4KSArICRtaW47XHJcblx0JGJsdWU6IHJhbmRvbSgkbWF4KSArICRtaW47XHJcblx0QHJldHVybiByZ2JhKCRyZWQsICRncmVlbiwgJGJsdWUsICRhbHBoYSk7XHJcbn1cclxuXHJcbi8vIFJldmVyc2UgYSBzdHJpbmdcclxuLy8gQ3JlZGl0OiBodHRwczovL2NvZGVyd2FsbC5jb20vcC9yaHVfdXcvc2Fzcy1zdHItcmV2ZXJzZS1mdW5jdGlvblxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tXHJcbkBmdW5jdGlvbiByZXZlcnNlKCRzdHJpbmcpIHtcclxuXHQkcmV2ZXJzZWQtc3RyaW5nOiAnJztcclxuXHRAZm9yICRpIGZyb20gMSB0aHJvdWdoIHN0ci1sZW5ndGgoJHN0cmluZykge1xyXG5cdFx0JGNoYXI6IHN0ci1zbGljZSgkc3RyaW5nLCAkaSwgJGkpO1xyXG5cdFx0JHJldmVyc2VkLXN0cmluZzogXCIjeyRjaGFyfSN7JHJldmVyc2VkLXN0cmluZ31cIjtcclxuXHR9XHJcblx0QHJldHVybiAjeyRyZXZlcnNlZC1zdHJpbmd9O1xyXG59XHJcbiIsIiRicmVha3BvaW50czogKFxyXG5cdHNtYWxsOiAwcHgsXHJcblx0YnJlYWtwb2ludC1waG9uZTogMzIwcHgsXHJcblx0YnJlYWtwb2ludC1pcGhvbmU2OiAzNzVweCxcclxuXHRicmVha3BvaW50LWlwaG9uZTZwbHVzOiA0MTRweCxcclxuXHRicmVha3BvaW50LXBob25lLWxhcmdlOiA1NjhweCxcclxuXHRicmVha3BvaW50LXRhYmxldDogNzY4cHgsXHJcblx0YnJlYWtwb2ludC10YWJsZXQtbGFuZDI6IDk5MnB4LFxyXG5cdGJyZWFrcG9pbnQtdGFibGV0LWxhbmQ6IDEwMjRweCxcclxuXHRicmVha3BvaW50LWxhcHRvcDogMTIwMHB4LFxyXG5cdGJyZWFrcG9pbnQtZGVza3RvcDogMTYwMHB4XHJcbik7XHJcbiRicmVha3BvaW50LWxhcHRvcDogMTIwMHB4OyIsIlxyXG4kb3V0ZXItY29udGFpbmVyLXdpZHRoLXM6IHJlbS1jYWxjKDc2MHB4KTtcclxuJG91dGVyLWNvbnRhaW5lci13aWR0aC1tOiByZW0tY2FsYyg5NzBweCk7XHJcbiRvdXRlci1jb250YWluZXItd2lkdGgtbDogcmVtLWNhbGMoMTE3MHB4KTtcclxuXHJcbiRpbm5lci1jb250YWluZXItd2lkdGgtczogcmVtLWNhbGMoNzYwcHgpO1xyXG4kaW5uZXItY29udGFpbmVyLXdpZHRoLW06IHJlbS1jYWxjKDgyMHB4KTsgLy8gaW4gcGl4ZWxcclxuJGlubmVyLWNvbnRhaW5lci13aWR0aC1sOiByZW0tY2FsYyg3MDBweCk7IC8vIGluIHBpeGVsIiwiQG1peGluIGJvcmRlci1yYWRpdXMoJHBhcmFtLCAkbW96OnRydWUsICR3ZWJraXQ6dHJ1ZSwgJG1zOnRydWUpIHtcclxuXHJcbiAgQGlmICRtb3oge1xyXG5cdC1tb3otYm9yZGVyLXJhZGl1czogJHBhcmFtO1xyXG4gIH1cclxuXHJcbiAgQGlmICR3ZWJraXQge1xyXG5cdC13ZWJraXQtYm9yZGVyLXJhZGl1czogJHBhcmFtO1xyXG4gIH1cclxuXHJcbiAgQGlmICRtcyB7XHJcblx0LW1zLWJvcmRlci1yYWRpdXM6ICRwYXJhbTtcclxuICB9XHJcblxyXG4gIGJvcmRlci1yYWRpdXM6ICRwYXJhbTtcclxuICAtd2Via2l0LW1hc2staW1hZ2U6IC13ZWJraXQtcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgd2hpdGUgMTAwJSwgYmxhY2sgMTAwJSk7XHJcbn1cclxuXHJcbkBtaXhpbiBib3gtc2hhZG93KCRwYXJhbSwgJG1vejp0cnVlLCAkd2Via2l0OnRydWUsICRtczpmYWxzZSkge1xyXG5cclxuICBAaWYgJG1veiB7XHJcblx0LW1vei1ib3gtc2hhZG93OiAkcGFyYW07XHJcbiAgfVxyXG5cclxuICBAaWYgJHdlYmtpdCB7XHJcblx0LXdlYmtpdC1ib3gtc2hhZG93OiAkcGFyYW07XHJcbiAgfVxyXG5cclxuICBAaWYgJG1zIHtcclxuXHQtbXMtYm94LXNoYWRvdzogJHBhcmFtO1xyXG4gIH1cclxuXHJcbiAgYm94LXNoYWRvdzogJHBhcmFtO1xyXG59XHJcblxyXG5cclxuQG1peGluIHRyYW5zZm9ybXMoJHBhcmFtLCAkbW96OnRydWUsICR3ZWJraXQ6dHJ1ZSwgJG1zOmZhbHNlKSB7XHJcblxyXG4gIEBpZiAkbW96IHtcclxuXHQtbW96LXRyYW5zZm9ybTogJHBhcmFtO1xyXG4gIH1cclxuXHJcbiAgQGlmICR3ZWJraXQge1xyXG5cdC13ZWJraXQtdHJhbnNmb3JtOiAkcGFyYW07XHJcbiAgfVxyXG5cclxuICBAaWYgJG1zIHtcclxuXHQtbXMtdHJhbnNmb3JtOiAkcGFyYW07XHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm06ICRwYXJhbTtcclxufVxyXG5cclxuXHJcbkBtaXhpbiB0cmFuc2l0aW9uKCRwYXJhbSwgJG1vejp0cnVlLCAkd2Via2l0OnRydWUsICRtczpmYWxzZSkge1xyXG5cclxuICBAaWYgJG1veiB7XHJcblx0LW1vei10cmFuc2l0aW9uOiAkcGFyYW07XHJcbiAgfVxyXG5cclxuICBAaWYgJHdlYmtpdCB7XHJcblx0LXdlYmtpdC10cmFuc2l0aW9uOiAkcGFyYW07XHJcbiAgfVxyXG5cclxuICBAaWYgJG1zIHtcclxuXHQtbXMtdHJhbnNpdGlvbjogJHBhcmFtO1xyXG4gIH1cclxuXHJcbiAgdHJhbnNpdGlvbjogJHBhcmFtO1xyXG59XHJcblxyXG5AbWl4aW4gdHJhbnNpdGlvbi1wcm9wZXJ0eSgkcGFyYW0pIHtcclxuICAtd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHk6ICRwYXJhbTtcclxuICB0cmFuc2l0aW9uLXByb3BlcnR5OiAkcGFyYW07XHJcbn1cclxuXHJcbkBtaXhpbiB0cmFuc2l0aW9uLWR1cmF0aW9uKCRwYXJhbSkge1xyXG4gIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogJHBhcmFtO1xyXG4gIHRyYW5zaXRpb24tZHVyYXRpb246ICRwYXJhbTtcclxufVxyXG5cclxuQG1peGluIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uKCRwYXJhbSkge1xyXG4gIC13ZWJraXQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246ICRwYXJhbTtcclxuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogJHBhcmFtO1xyXG59XHJcblxyXG5AbWl4aW4gYm94LXNpemluZyAoJHBhcmFtKSB7XHJcbiAgYm94LXNpemluZzogJHBhcmFtO1xyXG4gIC13ZWJraXQtYm94LXNpemluZzogJHBhcmFtO1xyXG4gIC1tb3otYm94LXNpemluZzogJHBhcmFtO1xyXG59XHJcblxyXG5AbWl4aW4gZGlzcGxheS1mbGV4ICgpIHtcclxuICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7XHJcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XHJcbiAgZGlzcGxheTogZmxleDtcclxufVxyXG5cclxuQG1peGluIGRpc3BsYXktaW5saW5lLWZsZXgoKSB7XHJcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XHJcbn1cclxuXHJcbkBtaXhpbiBmbGV4LWRpcmVjdGlvbigkcGFyYW0pIHtcclxuICAtd2Via2l0LWZsZXgtZGlyZWN0aW9uOiAkcGFyYW07XHJcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiAkcGFyYW07XHJcbiAgZmxleC1kaXJlY3Rpb246ICRwYXJhbTtcclxufVxyXG5cclxuQG1peGluIGZsZXgtanVzdGlmeSAoJHBhcmFtMSkge1xyXG4gIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiAkcGFyYW0xO1xyXG4gIGp1c3RpZnktY29udGVudDogJHBhcmFtMTtcclxufVxyXG5cclxuQG1peGluIGZsZXgtd3JhcCgpe1xyXG4gIC13ZWJraXQtZmxleC13cmFwOiB3cmFwO1xyXG4gIGZsZXgtd3JhcDogd3JhcDtcclxufVxyXG5cclxuXHJcbkBtaXhpbiBmbGV4LWFsaWduLWl0ZW1zKCRwYXJhbSkge1xyXG4gIC13ZWJraXQtYWxpZ24taXRlbXM6ICRwYXJhbTtcclxuICBhbGlnbi1pdGVtczogJHBhcmFtO1xyXG59XHJcblxyXG5AbWl4aW4gZmxleCgkcGFyYW06ZmFsc2UpIHtcclxuICBAaWYgJHBhcmFtIHtcclxuXHQtd2Via2l0LWZsZXg6ICRwYXJhbTtcclxuXHQtbXMtZmxleDogJHBhcmFtO1xyXG5cdGZsZXg6ICRwYXJhbTtcclxuICB9IEBlbHNlIHtcclxuXHQtd2Via2l0LWZsZXg6IDAgMCAxMDAlO1xyXG5cdC1tcy1mbGV4OiAwIDAgMTAwJTtcclxuXHRmbGV4OiAwIDAgMTAwJTtcclxuICB9XHJcbn1cclxuXHJcbkBtaXhpbiBiYWNrc3BhY2UtdmlzaWJpbGl0eSgkcGFyYW06ZmFsc2UpIHtcclxuICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6ICRwYXJhbTtcclxuICBiYWNrZmFjZS12aXNpYmlsaXR5OiAkcGFyYW07XHJcbn1cclxuXHJcbkBtaXhpbiBjb2x1bW4tY291bnQoJGNvdW50LCAkZ2FwKSB7XHJcbiAgLW1vei1jb2x1bW4tY291bnQ6ICRjb3VudDtcclxuICAtbW96LWNvbHVtbi1nYXA6ICRnYXA7XHJcbiAgLXdlYmtpdC1jb2x1bW4tY291bnQ6ICRjb3VudDtcclxuICAtd2Via2l0LWNvbHVtbi1nYXA6ICRnYXA7XHJcbiAgY29sdW1uLWNvdW50OiAkY291bnQ7XHJcbiAgY29sdW1uLWdhcDogJGdhcDtcclxufVxyXG5cclxuQG1peGluIGZsZXhib3goJGRpcmVjdGlvbjogcm93LCAkd3JhcDogd3JhcCwgJGp1c3RpZnktY29udGVudDogZmxleC1zdGFydCwgJGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQpIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiAkZGlyZWN0aW9uO1xyXG4gIGZsZXgtd3JhcDogJHdyYXA7XHJcbiAganVzdGlmeS1jb250ZW50OiAkanVzdGlmeS1jb250ZW50O1xyXG4gIGFsaWduLWl0ZW1zOiAkYWxpZ24tY29udGVudDtcclxufVxyXG5cclxuQG1peGluIHJlc3BvbnNpdmUtcmF0aW8oJGN3OiAxMDAlLCAkcnc6IDE2LCAkcmg6IDksICRjOiAnaWZyYW1lJykge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB3aWR0aDogJGN3O1xyXG4gIGhlaWdodDogMDtcclxuICBwYWRkaW5nOiAoKCRyaCAvICRydykgKiAkY3cpIDAgMCAwO1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG5cclxuICBAaWYgJGMgIT0gbnVsbCB7XHJcbiAgICAjeyRjfSB7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgdG9wOiAwO1xyXG4gICAgICBsZWZ0OiAwO1xyXG4gICAgICByaWdodDogMDtcclxuICAgICAgYm90dG9tOiAwO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgfVxyXG4gIH1cclxufSIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbkBmb250LWZhY2V7XHJcbiAgZm9udC1mYW1pbHk6ICdBa2t1cmF0LUxpZ2h0JztcclxuICBzcmM6XHR1cmwoJy4uL2hlbHNhbmEvZm9udHMvYWtrbGcuZW90Jyk7IC8qIElFOSsgKi9cclxuICBzcmM6XHR1cmwoJy4uL2hlbHNhbmEvZm9udHMvYWtrbGcuZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSwgLyogSUU2LUlFOCAqL1xyXG4gIHVybCgnLi4vaGVsc2FuYS9mb250cy9ha2tsZy53b2ZmJykgZm9ybWF0KCd3b2ZmJyksIC8qIE1vZGVybiBCcm93c2VycyAqL1xyXG4gIHVybCgnLi4vaGVsc2FuYS9mb250cy9ha2tsZy50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyksIC8qIFNhZmFyaSwgQW5kcm9pZCwgaU9TICovXHJcbiAgdXJsKCcuLi9oZWxzYW5hL2ZvbnRzL2Fra2xnLnN2ZyNha2tsZycpIGZvcm1hdCgnc3ZnJyk7IC8qIExlZ2FjeSBpT1MgKi9cclxuICBmb250LXdlaWdodDogbm9ybWFsO1xyXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcclxufVxyXG5cclxuQGZvbnQtZmFjZXtcclxuICBmb250LWZhbWlseTogJ0Fra3VyYXQtUmVndWxhcic7XHJcbiAgc3JjOlx0dXJsKCcuLi9oZWxzYW5hL2ZvbnRzL2Fra3JnLmVvdCcpO1xyXG4gIHNyYzpcdHVybCgnLi4vaGVsc2FuYS9mb250cy9ha2tyZy5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLFxyXG4gIHVybCgnLi4vaGVsc2FuYS9mb250cy9ha2tyZy53b2ZmJykgZm9ybWF0KCd3b2ZmJyksXHJcbiAgdXJsKCcuLi9oZWxzYW5hL2ZvbnRzL2Fra3JnLnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKSxcclxuICB1cmwoJy4uL2hlbHNhbmEvZm9udHMvYWtrcmcuc3ZnI2Fra3JnJykgZm9ybWF0KCdzdmcnKTtcclxuICBmb250LXdlaWdodDogbm9ybWFsO1xyXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcclxufVxyXG5cclxuQGZvbnQtZmFjZSB7XHJcbiAgZm9udC1mYW1pbHk6ICdBa2t1cmF0LVJlZ3VsYXJCb2xkJztcclxuICBzcmM6IHVybCgnLi4vaGVsc2FuYS9mb250cy9ha2tiZC5lb3QnKTtcclxuICBzcmM6IHVybCgnLi4vaGVsc2FuYS9mb250cy9ha2tiZC5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLFxyXG4gIHVybCgnLi4vaGVsc2FuYS9mb250cy9ha2tiZC53b2ZmJykgZm9ybWF0KCd3b2ZmJyksXHJcbiAgdXJsKCcuLi9oZWxzYW5hL2ZvbnRzL2Fra2JkLnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKSxcclxuICB1cmwoJy4uL2hlbHNhbmEvZm9udHMvYWtrYmQuc3ZnI2Fra2JkJykgZm9ybWF0KCdzdmcnKTtcclxuICBmb250LXdlaWdodDogbm9ybWFsO1xyXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcclxufVxyXG5cclxuLy9Gb250IEZhbWlsaWVzXHJcbiRmb250LWxpZ2h0OiAnQWtrdXJhdC1MaWdodCcsIHNhbnMtc2VyaWY7XHJcbiRmb250LXJlZ3VsYXI6ICdBa2t1cmF0LVJlZ3VsYXInLCBzYW5zLXNlcmlmO1xyXG4kZm9udC1ib2xkOiAnQWtrdXJhdC1SZWd1bGFyQm9sZCcsIHNhbnMtc2VyaWY7XHJcblxyXG4vL0ZvbnQgU2l6ZXNcclxuJGZvbnRzLXRpdGxlLWgxOiByZW0tY2FsYygzNXB4KTtcclxuJGZvbnRzLXRpdGxlLWgxLXM6IHJlbS1jYWxjKDIxcHgpO1xyXG5cclxuJGZvbnRzLXRpdGxlLW1haW46IHJlbS1jYWxjKDQ1cHgpO1xyXG4kZm9udHMtdGl0bGUtbWFpbi1zOiByZW0tY2FsYygyOHB4KTtcclxuXHJcbiRmb250cy10aXRsZS1yZXZpc2lvbnNiZXJpY2h0OiByZW0tY2FsYygyMHB4KTtcclxuXHJcbiRmb250cy10aXRsZS1oMjogcmVtLWNhbGMoMTdweCk7XHJcbiRmb250cy10aXRsZS1oMzogcmVtLWNhbGMoMTdweCk7XHJcblxyXG4kZm9udHMtbGVhZDogcmVtLWNhbGMoMTdweCk7XHJcbiRmb250cy1sZWFkLXM6IHJlbS1jYWxjKDE0cHgpO1xyXG5cclxuJGZvbnRzLXBhcmFncmFwaDogcmVtLWNhbGMoMTdweCk7XHJcbiRmb250cy1wYXJhZ3JhcGgtczogcmVtLWNhbGMoMTRweCk7XHJcblxyXG4kZm9udHMtcG9ydHJhaXRzOiByZW0tY2FsYygxNHB4KTtcclxuXHJcbiRmb250cy1xdW90ZTogcmVtLWNhbGMoMTdweCk7XHJcbiRmb250cy1xdW90ZS1zbWFsbDogcmVtLWNhbGMoMTRweCk7XHJcblxyXG4kZm9udHMtbnVtYmVycy1iaWc6IHJlbS1jYWxjKDYwcHgpO1xyXG4kZm9udHMta2V5ZmlndXJlcy10eHQ6IHJlbS1jYWxjKDIwcHgpO1xyXG4kZm9udHMta2V5ZmlndXJlcy1jdXJyZW5jeTogcmVtLWNhbGMoMTdweCk7XHJcbiRmb250cy1rZXlmaWd1cmVzLWN1cnJlbmN5LXM6IHJlbS1jYWxjKDE0cHgpO1xyXG5cclxuJGZvbnRzLXRhYmxlczogcmVtLWNhbGMoMTRweCk7XHJcbiRmb250cy1mb290bm90ZXM6IHJlbS1jYWxjKDEycHgpO1xyXG5cclxuJGZvbnRzLW1haW4tbmF2OiByZW0tY2FsYygyNXB4KTtcclxuJGZvbnRzLW5hdi1sYW5nOiByZW0tY2FsYygyMXB4KTtcclxuJGZvbnRzLXN1Yi1uYXY6IHJlbS1jYWxjKDE3cHgpO1xyXG4kZm9udHMtbmF2LXNtYWxsOiByZW0tY2FsYygxMHB4KTtcclxuJGZvbnRzLXN1Yi1uYXYtc21hbGw6IHJlbS1jYWxjKDE0cHgpO1xyXG5cclxuJGZvbnRzLWZvb3RlcjogcmVtLWNhbGMoMTRweCk7XHJcblxyXG4vL0xpbmUtaGVpZ2h0c1xyXG4kbGgtcGFyYWdyYXBoOiByZW0tY2FsYygyNHB4KTtcclxuJGxoLXBhcmFncmFwaC1zOiByZW0tY2FsYygyMXB4KTtcclxuIiwiLy9IZXJlIGFyZSB0aGUgY2xhc3NlcyBkZWZpbmVkIHRvIGV4dGVuZCBpbiBkaWZmZXJlbnQgcnVsZXNcclxuXHJcbi8vc2V0IGxpc3QgdG8gdW5zdHlsZWRcclxuLmxpc3QtLXVuc3R5bGVke1xyXG4gIGxpe1xyXG4gICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xyXG4gIH1cclxufVxyXG5cclxuLy9yZXNldCBhbGwgbWFyZ2lucyBhbmQgcGFkZGluZ3MgKHRvIHVzZSBvbiBwYXJlbnQgZWxlbWVudCB0byBzdGFydCBmcmVzaCBvbiBjaGlsZC1lbGVtZW50cylcclxuLm1hcmdpbi0tcmVzZXR7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIHBhZGRpbmc6IDA7XHJcbn1cclxuXHJcbi5zdWJ0aXRlbHMtLW1hcmdpbi10b3B7XHJcbiAgbWFyZ2luLXRvcDogMjVweDtcclxufSIsIiRjYWxjLW1hcmdpbi1zdGFuZGFyZC1zOiAoKCRvdXRlci1jb250YWluZXItd2lkdGgtcyktKCRpbm5lci1jb250YWluZXItd2lkdGgtbCkpLzI7XHJcbiRjYWxjLW1hcmdpbi1zdGFuZGFyZC1tOiAoKCRvdXRlci1jb250YWluZXItd2lkdGgtbSktKCRpbm5lci1jb250YWluZXItd2lkdGgtbCkpLzI7XHJcbiRjYWxjLW1hcmdpbi1zdGFuZGFyZC1sOiAoKCRvdXRlci1jb250YWluZXItd2lkdGgtbCktKCRpbm5lci1jb250YWluZXItd2lkdGgtbCkpLzI7XHJcblxyXG4kY2FsYy1tYXJnaW4tbGFyZ2UtczogKCgkb3V0ZXItY29udGFpbmVyLXdpZHRoLXMpLSgkaW5uZXItY29udGFpbmVyLXdpZHRoLW0pKS8yO1xyXG4kY2FsYy1tYXJnaW4tbGFyZ2UtbTogKCgkb3V0ZXItY29udGFpbmVyLXdpZHRoLW0pLSgkaW5uZXItY29udGFpbmVyLXdpZHRoLW0pKS8yO1xyXG4kY2FsYy1tYXJnaW4tbGFyZ2UtbDogKCgkb3V0ZXItY29udGFpbmVyLXdpZHRoLWwpLSgkaW5uZXItY29udGFpbmVyLXdpZHRoLW0pKS8yO1xyXG5cclxuLy9QbGVhc2Ugd3JpdGUgZXZlcnkgY2xhc3MgaW50byB0aGlzIGxpc3QgZm9yIGVsZW1lbnRzLCB3aGljaCBmaXQgdGhlIHN0YW5kYXJkLWNvbnRhaW5lclxyXG4vL3NldCBsZWZ0IGFuZCByaWdodCBtYXJnaW4gZm9yIGNvbnRlbnQtd2lkdGhcclxucCxcclxuLm5zLWltYWdlLXdyYXAsXHJcbi5ucy10aXRsZS1tYWluLFxyXG4ubnMtcGFyYWdyYXBoLFxyXG4ubnMtdGl0bGUtY2hhcHRlcixcclxuLm5zLXRpdGxlLWgyLFxyXG4ubnMtdGl0bGUtaDMsXHJcbi5ucy10aXRsZS1yZXZpc2lvbnNiZXJpY2h0LFxyXG4ubnMtbGVhZCxcclxuLm5zLWxpc3QsXHJcbi5ucy1pbWFnZS13cmFwLS1zbWFsbCxcclxuLm5zLWxpc3QsXHJcbi5ucy1pbWFnZS13cmFwLXNtYWxsLFxyXG4ubnMtc2lnbmF0dXJlLWNvbnRhaW5lcixcclxuLnF1b3RlLFxyXG4ucG9ydHJhaXRzX19jb250YWluZXIsXHJcbi5ucy1idXR0b24sXHJcbi5lbWJlZC1jb250YWludGVyLFxyXG4ubnMtbWFrZS1jb250ZW50YmctcmVkLmRvYy1jb21wb25lbnQge1xyXG4gIG1hcmdpbi1sZWZ0OiAwO1xyXG4gIG1hcmdpbi1yaWdodDogMDtcclxuICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgICBtYXJnaW4tbGVmdDogJGNhbGMtbWFyZ2luLXN0YW5kYXJkLXM7XHJcbiAgICBtYXJnaW4tcmlnaHQ6ICRjYWxjLW1hcmdpbi1zdGFuZGFyZC1zO1xyXG4gIH1cclxuICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0LWxhbmQyKSB7XHJcbiAgICBtYXJnaW4tbGVmdDogJGNhbGMtbWFyZ2luLXN0YW5kYXJkLW07XHJcbiAgICBtYXJnaW4tcmlnaHQ6ICRjYWxjLW1hcmdpbi1zdGFuZGFyZC1tO1xyXG4gIH1cclxuICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtbGFwdG9wKSB7XHJcbiAgICBtYXJnaW4tbGVmdDogJGNhbGMtbWFyZ2luLXN0YW5kYXJkLWw7XHJcbiAgICBtYXJnaW4tcmlnaHQ6ICRjYWxjLW1hcmdpbi1zdGFuZGFyZC1sO1xyXG4gIH1cclxufVxyXG4ubnMtcGFyYWdyYXBoLm5zLXRleHQtYWxpZ24tLWNlbnRlciB7XHJcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XHJcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xyXG4gIG1heC13aWR0aDogODAwcHg7XHJcbn1cclxuXHJcbi8vIERlZmluaXRpb24gb2YgbWFyZ2lucyBmb3IgZWxlbWVudHMgaW4gdGhlIGxhcmdlciBjb250YWluZXJcclxuLm5zLWNvbnRlbnQtLWxhcmdlLFxyXG4vLyAubnMtaW1hZ2Utd3JhcCxcclxuLmtleWZpZ3VyZXNfX2NvbnRhaW5lcixcclxuLmFjY29yZGlvbi1jb250ZW50IHtcclxuICBtYXJnaW4tbGVmdDogMDtcclxuICBtYXJnaW4tcmlnaHQ6IDA7XHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldCkge1xyXG4gICAgbWFyZ2luLWxlZnQ6ICRjYWxjLW1hcmdpbi1zdGFuZGFyZC1zO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAkY2FsYy1tYXJnaW4tc3RhbmRhcmQtcztcclxuICB9XHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldC1sYW5kMikge1xyXG4gICAgbWFyZ2luLWxlZnQ6ICRjYWxjLW1hcmdpbi1sYXJnZS1tO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAkY2FsYy1tYXJnaW4tbGFyZ2UtbTtcclxuICB9XHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LWxhcHRvcCkge1xyXG4gICAgbWFyZ2luLWxlZnQ6ICRjYWxjLW1hcmdpbi1sYXJnZS1sO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAkY2FsYy1tYXJnaW4tbGFyZ2UtbDtcclxuICB9XHJcblxyXG4gIHAsXHJcbiAgLm5zLXBhcmFncmFwaCxcclxuICAubnMtdGl0bGUtY2hhcHRlcixcclxuICAubnMtdGl0bGUtbWFpbixcclxuICAubnMtdGl0bGUtaDIsXHJcbiAgLm5zLXRpdGxlLWgzLFxyXG4gIC5ucy10aXRsZS1oNCxcclxuICAubnMtdGl0bGUtaDUsXHJcbiAgLm5zLXRpdGxlLWg2LFxyXG4gIC5ucy10aXRsZS1yZXZpc2lvbnNiZXJpY2h0LFxyXG4gIC5ucy1sZWFkLFxyXG4gIC5ucy1saXN0LFxyXG4gIC5ucy1pbWFnZS13cmFwLFxyXG4gIC5ucy1pbWFnZS13cmFwLS1zbWFsbCxcclxuICAubnMtaW1hZ2Utd3JhcC1zbWFsbCxcclxuICAubnMtc2lnbmF0dXJlLWNvbnRhaW5lcixcclxuICAucXVvdGUsXHJcbiAgLnBvcnRyYWl0c19fY29udGFpbmVyLFxyXG4gIC5ucy1idXR0b24sXHJcbiAgLmVtYmVkLWNvbnRhaW50ZXJ7XHJcbiAgICBtYXJnaW4tbGVmdDogMDtcclxuICAgIG1hcmdpbi1yaWdodDogMDtcclxuICB9XHJcbn1cclxuXHJcbi5ucy1hY2NvcmRpb24tY29udGFpbmVyIHtcclxuICAuYWNjb3JkaW9uLWlubmVyIHtcclxuXHQ+ICoge1xyXG5cdCAgbWFyZ2luLWxlZnQ6IDA7XHJcblx0ICBtYXJnaW4tcmlnaHQ6IDA7XHJcblx0fVxyXG4gIH1cclxufVxyXG5cclxuIiwicCxcclxuLm5zLXBhcmFncmFwaHtcclxuICBmb250LXNpemU6ICRmb250cy1wYXJhZ3JhcGgtcztcclxuICBsaW5lLWhlaWdodDogJGxoLXBhcmFncmFwaC1zO1xyXG4gIG1hcmdpbi1ib3R0b206IDIwcHg7XHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldCl7XHJcbiAgICBmb250LXNpemU6ICRmb250cy1wYXJhZ3JhcGg7XHJcbiAgICBsaW5lLWhlaWdodDogJGxoLXBhcmFncmFwaDtcclxuICB9XHJcbn0iLCIubnMtZm9vdG5vdGUge1xyXG4gICAgZm9udC1zaXplOiAkZm9udHMtZm9vdG5vdGVzO1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcclxuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XHJcbiAgICBzdXAge1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAycHg7XHJcbiAgICB9XHJcblxyXG4gICsgLmVtYmVkLWNvbnRhaW5lciB7XHJcbiAgICBtYXJnaW4tdG9wOiA1NXB4O1xyXG4gIH1cclxuICAuZW1iZWQtY29udGFpbmVyICsgJiB7XHJcbiAgICBtYXgtd2lkdGg6IDgyMHB4O1xyXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XHJcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcbiAgfVxyXG59IiwiLm5zLWxlYWR7XHJcbiAgZm9udC1zaXplOiAkZm9udHMtbGVhZC1zO1xyXG4gIGNvbG9yOiAkbGF2ZW5kZXI7XHJcbiAgbGluZS1oZWlnaHQ6ICRsaC1wYXJhZ3JhcGgtcztcclxuICBtYXJnaW4tYm90dG9tOiA0MHB4O1xyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpe1xyXG4gICAgZm9udC1zaXplOiAkZm9udHMtbGVhZDtcclxuICAgIGxpbmUtaGVpZ2h0OiAkbGgtcGFyYWdyYXBoO1xyXG4gIH1cclxufSIsIi8vV3JhcHBlciwgdWxcclxuLm5zLWxpc3R7XHJcbiAgZm9udC1zaXplOiAkZm9udHMtcGFyYWdyYXBoLXM7XHJcbiAgbGluZS1oZWlnaHQ6ICRsaC1wYXJhZ3JhcGgtcztcclxuICBwYWRkaW5nLWxlZnQ6IHJlbS1jYWxjKDI1cHgpO1xyXG5cclxuICAvL0VsZW1lbnQsIGxpXHJcbiAgJl9fZWxlbXtcclxuICAgIGxpc3Qtc3R5bGUtaW1hZ2U6IHVybCguLy4uL2hlbHNhbmEvaW1hZ2VzL2xpc3Qtc3R5bGVfc21hbGwucG5nKTtcclxuXHJcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KXtcclxuICAgICAgbGlzdC1zdHlsZS1pbWFnZTogdXJsKC4vLi4vaGVsc2FuYS9pbWFnZXMvbGlzdC1zdHlsZS5wbmcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldCl7XHJcbiAgICBmb250LXNpemU6ICRmb250cy1wYXJhZ3JhcGg7XHJcbiAgICBsaW5lLWhlaWdodDogJGxoLXBhcmFncmFwaDtcclxuICB9XHJcbn0iLCIubnMtbW9yZS1vbiB7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIGZvbnQtc2l6ZTogJGZvbnRzLXBhcmFncmFwaDtcclxuXHJcbiAgJjpiZWZvcmUge1xyXG4gICAgY29udGVudDogJyc7XHJcbiAgICB3aWR0aDogMTJweDtcclxuICAgIGhlaWdodDogMTFweDtcclxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgaWQ9J1BmZWlsJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMi4zNTknIGhlaWdodD0nMTAuOTgyJyB2aWV3Qm94PScwIDAgMTIuMzU5IDEwLjk4MiclM0UlM0NwYXRoIGlkPSdQZmFkXzU2NzcnIGRhdGEtbmFtZT0nUGZhZCA1Njc3JyBkPSdNNi4zNS01LjQ5MS44OTMtMTAuOTgyLS4zLTkuODA5LDMuMTctNi4zMjRILTYuMDF2MS42NjZIMy4xN0wtLjMtMS4xOS44OTMsMFonIHRyYW5zZm9ybT0ndHJhbnNsYXRlKDYuMDEgMTAuOTgyKScgZmlsbD0nYmxhY2snLyUzRSUzQy9zdmclM0UlMEFcIik7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDNweDtcclxuICB9XHJcbn1cclxuXHJcbi5ucy1tb3JlLW9uIHtcclxuICBmb250LWZhbWlseTogJGZvbnQtYm9sZDtcclxuXHJcbiAgYSB7XHJcbiAgICBjb2xvcjogY3VycmVudENvbG9yO1xyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGNvbG9yOiBjdXJyZW50Q29sb3I7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uYmctY29sb3ItcmVkIHtcclxuICAubnMtbW9yZS1vbiB7XHJcbiAgICBjb2xvcjogJHdoaXRlO1xyXG5cclxuICAgIGEge1xyXG4gICAgICBjb2xvcjogY3VycmVudENvbG9yO1xyXG4gICAgICAmOmhvdmVyIHtcclxuICAgICAgICBjb2xvcjogY3VycmVudENvbG9yO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAmOmJlZm9yZSB7XHJcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgaWQ9J1BmZWlsJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMi4zNTknIGhlaWdodD0nMTAuOTgyJyB2aWV3Qm94PScwIDAgMTIuMzU5IDEwLjk4MiclM0UlM0NwYXRoIGlkPSdQZmFkXzU2NzcnIGRhdGEtbmFtZT0nUGZhZCA1Njc3JyBkPSdNNi4zNS01LjQ5MS44OTMtMTAuOTgyLS4zLTkuODA5LDMuMTctNi4zMjRILTYuMDF2MS42NjZIMy4xN0wtLjMtMS4xOS44OTMsMFonIHRyYW5zZm9ybT0ndHJhbnNsYXRlKDYuMDEgMTAuOTgyKScgZmlsbD0nd2hpdGUnLyUzRSUzQy9zdmclM0UlMEFcIik7XHJcbiAgICB9XHJcbiAgfVxyXG59IiwiLm5zLWJ1dHRvbiB7XHJcbiAgY29sb3I6ICRyZWQ7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIGZvbnQtZmFtaWx5OiAkZm9udC1yZWd1bGFyO1xyXG4gIC8vIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIG1hcmdpbjogMCAwIDk4cHggMDtcclxuXHJcbiAgJl9fYnRue1xyXG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIGJvcmRlcjogMnB4IHNvbGlkICRyZWQ7XHJcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBwYWRkaW5nOiAxNHB4IDI0cHg7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgIGZvbnQtc2l6ZTogMThweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAyM3B4O1xyXG4gICAgZm9udC1mYW1pbHk6ICRmb250LWJvbGQ7XHJcbiAgICBcclxuICAgICY6aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcmVkO1xyXG4gICAgICBjb2xvcjogJHdoaXRlO1xyXG5cclxuICAgICAgLm5zLWJ1dHRvbl9fYnRuX19pbm5lcntcclxuICAgICAgICBjb2xvcjogJHdoaXRlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgICZfX2lubmVye1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIGZvbnQtZmFtaWx5OiAkZm9udC1ib2xkO1xyXG4gICAgICBjb2xvcjogJHJlZDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi5iZy1jb2xvci1yZWR7XHJcblxyXG4gIC5ucy1idXR0b257XHJcbiAgICBjb2xvcjogJHdoaXRlO1xyXG4gICAgZm9udC1mYW1pbHk6ICRmb250LWJvbGQ7XHJcbiAgICBcclxuICAgICZfX2J0bntcclxuICAgICAgYmFja2dyb3VuZDogJHJlZC1idG47XHJcbiAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHJlZC1idG4taG92ZXI7XHJcbiAgICAgICAgY29sb3I6ICR3aGl0ZTtcclxuICAgICAgICBcclxuICAgICAgICAubnMtYnV0dG9uX19idG5fX2lubmVye1xyXG4gICAgICAgICAgY29sb3I6ICR3aGl0ZTtcclxuICAgICAgICAgIGZvbnQtZmFtaWx5OiAkZm9udC1ib2xkO1xyXG4gICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICZfX2lubmVye1xyXG4gICAgICAgIGNvbG9yOiAkd2hpdGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn0iLCIubnMtbWFrZS1jb250ZW50YmctcmVkIHtcclxuICAgICYuZG9jLWNvbXBvbmVudCB7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMjBweCk7XHJcbiAgICAgICAgcGFkZGluZzogcmVtLWNhbGMoNXB4IDEwcHgpO1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICRyZWQ7XHJcbiAgICAgICAgY29sb3I6ICR3aGl0ZTtcclxuICAgICAgICAmOmJlZm9yZSB7XHJcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiVGhpcyBpcyBhIEhlbHBlci1Db21wb25lbnQuIFdoZW4gcGxhY2VkIGluIGEgZG9jdW1lbnQsIENvbnRlbnQtQmFja2dyb3VuZCB3aWxsIGJlIHR1cm5lZCByZWQgb24gdGhlIEZyb250ZW5kIHZpYSBKUy5cIlxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuLm5zLW1ha2UtY29udGVudGJnLWRhcmstcmVkIHtcclxuICAgICYuZG9jLWNvbXBvbmVudCB7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMjBweCk7XHJcbiAgICAgICAgcGFkZGluZzogcmVtLWNhbGMoNXB4IDEwcHgpO1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICRyZWQtZGFyaztcclxuICAgICAgICBjb2xvcjogJHdoaXRlO1xyXG4gICAgICAgICY6YmVmb3JlIHtcclxuICAgICAgICAgICAgY29udGVudDogXCJUaGlzIGlzIGEgSGVscGVyLUNvbXBvbmVudC4gV2hlbiBwbGFjZWQgaW4gYSBkb2N1bWVudCwgQ29udGVudC1CYWNrZ3JvdW5kIHdpbGwgYmUgdHVybmVkIGRhcmsgcmVkIG9uIHRoZSBGcm9udGVuZCB2aWEgSlMuXCJcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiLmV4Y2VsLWRvd25sb2FkIHtcclxuICB0ZXh0LWFsaWduOiByaWdodDtcclxuICBtYXgtd2lkdGg6IDgyMHB4O1xyXG4gIG1hcmdpbjogMCBhdXRvO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG5cclxuICBhe1xyXG4gICAgd2lkdGg6IDI1cHg7XHJcbiAgICBoZWlnaHQ6IDI4cHg7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIH1cclxuXHJcbiAgc3ZnIHtcclxuICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgIGZpbGw6ICRyZWQ7XHJcbiAgfVxyXG59IiwiLm5zLWltYWdlLXdyYXB7XHJcbiAgbWFyZ2luLXRvcDogcmVtLWNhbGMoOTBweCk7XHJcbiAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoOTVweCk7XHJcblxyXG4gIGltZ3tcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gIH1cclxufSIsIi5ucy1pbWFnZS13cmFwLXNtYWxse1xyXG4gIGZsb2F0Om5vbmU7XHJcbiAgd2lkdGg6cmVtLWNhbGMoMzQwcHgpO1xyXG4gIG1heC13aWR0aDogMTAwJTtcclxuICBtYXJnaW4tdG9wOiAzMHB4O1xyXG4gIG1hcmdpbi1ib3R0b206IDMwcHg7XHJcbn0iLCIubnMtc2lnbmF0dXJlLXdyYXBwZXJ7XHJcbiAgICBwYWRkaW5nOjAgcmVtLWNhbGMoMTBweCkgMCAwO1xyXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldCkge1xyXG4gICAgICBmbGV4OiAwIDAgMzMlO1xyXG4gICAgICB3aWR0aDogYXV0bzsgIFxyXG4gICAgfVxyXG4gICAgJjpsYXN0LWNoaWxkIHtcclxuICAgICAgcGFkZGluZy10b3A6IHJlbS1jYWxjKDUwcHgpO1xyXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgICAgICAgcGFkZGluZy10b3A6IDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgICZfX2ltYWdle1xyXG4gICAgICBoZWlnaHQ6IHJlbS1jYWxjKDEwMHB4KTtcclxuICAgIH1cclxuICAgIHAubnMtcGFyYWdyYXBoLFxyXG4gICAgJl9fdGV4dHtcclxuICAgICAgbWFyZ2luOjA7XHJcbiAgICAgIGZvbnQtZmFtaWx5OiBcIkFra3VyYXQtUmVndWxhckJvbGRcIjtcclxuICAgICAgLy8gZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTRweCk7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiByZW0tY2FsYygyMHB4KTtcclxuICAgIH1cclxuICAgICZfX2Z1bmN0aW9ue1xyXG4gICAgICBjb2xvcjokcmVkO1xyXG4gICAgfVxyXG4gIH0iLCIubnMtc2lnbmF0dXJlLWNvbnRhaW5lcntcclxuICBwYWRkaW5nLXRvcDpyZW0tY2FsYygzNXB4KTtcclxuICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgICBwYWRkaW5nLXRvcDpyZW0tY2FsYygzMHB4KTtcclxuICAgIEBpbmNsdWRlIGZsZXhib3gocm93LCB3cmFwLCBmbGV4LXN0YXJ0LCBmbGV4LXN0YXJ0KTtcclxuICB9XHJcblxyXG59IiwiLnBvcnRyYWl0c19fY29udGFpbmVyIHtcclxuICBkaXNwbGF5OmZsZXg7XHJcbiAganVzdGlmeS1jb250ZW50OmNlbnRlcjtcclxuICBmbGV4LXdyYXA6IHdyYXA7XHJcblxyXG4gICZfX2lubmVyIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDM1cHg7XHJcbiAgICBwYWRkaW5nOjA7XHJcbiAgICB0ZXh0LWFsaWduOmNlbnRlcjtcclxuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1ib2xkO1xyXG5cclxuICAgICZfX2ltZyB7XHJcbiAgICAgIHdpZHRoOiAxNTBweDtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDtcclxuICAgICAgcGFkZGluZy1sZWZ0OiBhdXRvO1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiBhdXRvO1xyXG4gICAgfVxyXG5cclxuICAgIHAge1xyXG4gICAgICBAZXh0ZW5kIC5tYXJnaW4tLXJlc2V0O1xyXG4gICAgICBmb250LXNpemU6ICRmb250cy1wb3J0cmFpdHM7XHJcbiAgICB9XHJcbiAgICAmX19uYW1lIHtcclxuICAgICAgbWFyZ2luLXRvcDogMTVweDtcclxuICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7XHJcbiAgICB9XHJcbiAgICAmX19mdW5jdGlvbiB7XHJcbiAgICAgIGNvbG9yOiAkcmVkO1xyXG4gICAgICBsaW5lLWhlaWdodDogMjBweDtcclxuICAgICAgXHJcbiAgICAgIC5iZy1jb2xvci1yZWQgJiB7XHJcbiAgICAgICAgY29sb3I6ICRsaWxhO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gICY6bGFzdC1vZi10eXBle1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMTIwcHg7XHJcbiAgfVxyXG59XHJcblxyXG4uY29udGVudF9faW5uZXIge1xyXG4gID4gZGl2LnBvcnRyYWl0c19fY29udGFpbmVyIHtcclxuICAgICsgOm5vdCgucG9ydHJhaXRzX19jb250YWluZXIpIHtcclxuICAgICAgbWFyZ2luLXRvcDogMTA1cHg7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uZW50cnktY29udGVudHtcclxuICA+IGRpdi5wb3J0cmFpdHNfX2NvbnRhaW5lciB7XHJcbiAgICArIDpub3QoLnBvcnRyYWl0c19fY29udGFpbmVyKSB7XHJcbiAgICAgIG1hcmdpbi10b3A6IDEwNXB4O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyB0aGlzIGFyZSB2ZXJ5IHNwZWNpZmljIGhhY2tzIGZvciB0aGUgZmlyc3QgdGFibGVcclxuLy8gdG8gYXZvaWQgYSBwcm9ibGVtIHdpdGggcmVzcG9uc2l2ZS10YWJsZXNcclxuLy8gd2hlbiB0aGVyZSBpcyBhIHJvd3NwYW49XCIyXCIgaW4gdGhlIGZpcnN0IGNvbHVtblxyXG4ubnMtYWNjb3JkaW9uLWNvbnRhaW5lcjpmaXJzdC1vZi10eXBlIHtcclxuICAucGlubmVkIHtcclxuICAgIHRyOm50aC1jaGlsZCgyKSB7XHJcbiAgICAgIHRkIHtcclxuICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAucmVzcG9uc2l2ZS5zd2l0Y2hlZCB7XHJcblxyXG4gICAgdHIgdGQ6bm90KFtjbGFzcyo9XCIzYWhlYWRcIl0pIHtcclxuICAgICAgICBzcGFuW2NsYXNzKj1cImFub2xpbmVfdlwiXSxcclxuICAgICAgICBzcGFuW2NsYXNzKj1cImFibGFja1wiXSB7XHJcbiAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHRyIHRkIHtcclxuXHJcbiAgICAgIHNwYW4ubm9saW5lLFxyXG4gICAgICBzcGFuLmJsYWNrIHtcclxuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGQubnMtaGFsaWduLWNlbnRlcixcclxuICAgIHRkLm5zLWhhbGlnbi1yaWdodDpudGgtY2hpbGQoNikge1xyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLmVtYmVkLWNvbnRhaW5lciB7XHJcbiAgbWF4LXdpZHRoOiA3MDBweDtcclxuICBtYXJnaW46IDAgYXV0bztcclxuICBtYXJnaW4tYm90dG9tOiAwO1xyXG5cclxuICAubnMtdGl0bGUtaDIrJiB7XHJcbiAgICBtYXJnaW4tdG9wOiAxNXB4O1xyXG4gIH1cclxuXHJcbiAgYm9keSBhcnRpY2xlW2NsYXNzKj1cImZpbmFuemJlcmljaHRcIl0gJixcclxuICBib2R5IGFydGljbGVbY2xhc3MqPVwiZXJmb2xnc3JlY2hudW5nXCJdICYsXHJcbiAgYm9keSBhcnRpY2xlW2NsYXNzKj1cIm5vdGVzX3NvdXJjZVwiXSAmIHtcclxuICAgIG1heC13aWR0aDogODIwcHg7XHJcbiAgfVxyXG5cclxuICBjYXB0aW9uIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuXHJcblxyXG4vLyB0YWJsZSB7XHJcbi8vICAgdGQsIHRoIHtcclxuLy8gICAgIGNvbG9yOiAkYmx1ZTtcclxuXHJcbi8vICAgICAuYmctY29sb3ItcmVkICYge1xyXG4vLyAgICAgICBjb2xvcjogJHdoaXRlO1xyXG4vLyAgICAgfSAgXHJcbi8vICAgfVxyXG5cclxuLy8gICB0ciB7XHJcbi8vICAgICB0ZCB7XHJcbi8vICAgICAgIHBhZGRpbmc6IDVweCAxcHg7XHJcblxyXG5cclxuLy8gICAgICAgJjpsYXN0LWNoaWxkIHtcclxuLy8gICAgICAgICBib3JkZXItcmlnaHQtd2lkdGg6IDA7XHJcbi8vICAgICAgIH1cclxuXHJcbi8vICAgICAgIHAge1xyXG4vLyAgICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xyXG4vLyAgICAgICAgIG1hcmdpbjogMDtcclxuXHJcbi8vICAgICAgICAgc3BhbiB7XHJcbi8vICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDE0cHgpO1xyXG4vLyAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDtcclxuLy8gICAgICAgICAgIHdoaXRlLXNwYWNlOiBwcmUtbGluZTtcclxuXHJcbi8vICAgICAgICAgICAmW2NsYXNzKj1cImFub3Rlc1wiXSB7XHJcbi8vICAgICAgICAgICAgIGNvbG9yOiAkcmVkO1xyXG4vLyAgICAgICAgICAgfVxyXG5cclxuLy8gICAgICAgICAgICZbY2xhc3MqPVwiYWJsYWNrXCJdIHtcclxuLy8gICAgICAgICAgICAgY29sb3I6ICRibGFjaztcclxuLy8gICAgICAgICAgIH1cclxuXHJcbi8vICAgICAgICAgICAmW2NsYXNzKj1cIm9yYW5nZVwiXSB7XHJcbi8vICAgICAgICAgICAgIGNvbG9yOiAkbGF2ZW5kZXI7XHJcbi8vICAgICAgICAgICB9XHJcblxyXG4vLyAgICAgICAgICAgLnN1cGVyc2NyaXB0LFxyXG4vLyAgICAgICAgICAgJltjbGFzcyo9XCJzdXBlcnNjcmlwdFwiXSB7XHJcbi8vICAgICAgICAgICAgIGZvbnQtc2l6ZTogNzUlO1xyXG4vLyAgICAgICAgICAgICBtYXJnaW4tbGVmdDogLTJweDtcclxuLy8gICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4vLyAgICAgICAgICAgICB0b3A6IC0wLjRlbTtcclxuLy8gICAgICAgICAgIH1cclxuXHJcbi8vICAgICAgICAgICAmW2NsYXNzKj1cImFzdXBlcnNjcmlwdF9ibGFja1wiXSB7XHJcbi8vICAgICAgICAgICAgIGNvbG9yOiAkYmxhY2s7XHJcbi8vICAgICAgICAgICB9XHJcbi8vICAgICAgICAgfVxyXG4vLyAgICAgICB9XHJcbi8vICAgICB9XHJcblxyXG4vLyAgICAgJjpob3ZlciB7XHJcbi8vICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlN2U3ZTc7XHJcblxyXG4vLyAgICAgICB0ZCB7XHJcbi8vICAgICAgICAgLy8gY29sb3I6ICR3aGl0ZSAhaW1wb3J0YW50O1xyXG4vLyAgICAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogI2U3ZTdlNztcclxuXHJcbi8vICAgICAgICAgc3BhbiB7XHJcblxyXG4vLyAgICAgICAgICAgJixcclxuLy8gICAgICAgICAgIGEge1xyXG4vLyAgICAgICAgICAgICAvLyBjb2xvcjogJHdoaXRlICFpbXBvcnRhbnQ7XHJcbi8vICAgICAgICAgICB9XHJcbi8vICAgICAgICAgfVxyXG4vLyAgICAgICB9XHJcblxyXG4vLyAgICAgICAvLyBjb2xvcjokd2hpdGU7XHJcbi8vICAgICAgIC5iZy1jb2xvci1yZWQgJiB7XHJcbi8vICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGxhdmVuZGVyO1xyXG5cclxuLy8gICAgICAgICB0ZCB7XHJcbi8vICAgICAgICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRsYXZlbmRlcjtcclxuLy8gICAgICAgICB9XHJcbi8vICAgICAgIH1cclxuLy8gICAgIH1cclxuLy8gICB9XHJcbi8vIH1cclxuXHJcbi5iZy1jb2xvci1yZWQgLm5zLXRhYmxlIHtcclxuICB0ciB0ZDpsYXN0LWNoaWxkIHtcclxuICAgIGNvbG9yOiAkbGlsYTtcclxuICB9XHJcbn1cclxuXHJcbi8vIFJFV1JJVEUgVEFCTEUgU1RZTEVTXHJcbnRhYmxlLm5zLXRhYmxlIHtcclxuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xyXG4gIGZvbnQtZmFtaWx5OiAkZm9udC1saWdodDtcclxuICBtYXJnaW4tYm90dG9tOiAzMHB4O1xyXG4gIHRhYmxlLWxheW91dDogZml4ZWQ7XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpIHtcclxuICAgIG1pbi13aWR0aDogMTAwJTtcclxuICAgIHdpZHRoOiBhdXRvO1xyXG4gIH1cclxuICBcclxuICAvLyB3aWR0aDogMTAwJTtcclxuXHJcbiAgLy8gcmVzZXQgYWxsIHRoZSBzdHlsZXMgZnJvbSBldmVyeXdoZXJlIGVsc2VcclxuICBwLFxyXG4gIHNwYW4sXHJcbiAgdGQge1xyXG4gICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XHJcbiAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xyXG4gICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsICFpbXBvcnRhbnQ7XHJcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDtcclxuICB9XHJcblxyXG5wLFxyXG5zcGFuIHtcclxuICBkaXNwbGF5OiBpbmxpbmU7XHJcbn1cclxuXHJcbiAgdGQge1xyXG4gICAgcGFkZGluZzogNXB4IDFweCAhaW1wb3J0YW50O1xyXG4gICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xyXG4gICAgY29sb3I6ICRibHVlO1xyXG5cclxuICAgICYsXHJcbiAgICBwLFxyXG4gICAgc3BhbiB7XHJcbiAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTRweCk7XHJcblxyXG4gICAgICAvLyBsaW5lLWhlaWdodDogMTBweCAhaW1wb3J0YW50O1xyXG4gICAgICAvLyBoZWlnaHQ6IDEwcHg7XHJcbiAgICAgIC8vIG1heC1oZWlnaHQ6IDEwcHg7XHJcbiAgICAgIC8vIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHAge1xyXG4gICAgJjplbXB0eSB7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgaGVpZ2h0OiAyMnB4O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3BhbiB7XHJcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG5cclxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpIHtcclxuICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAuc3VwZXJzY3JpcHQge1xyXG4gICAgZm9udC1zaXplOiA3NSU7XHJcbiAgICBtYXJnaW4tbGVmdDogLTJweDtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHRvcDogLTAuNGVtO1xyXG4gIH1cclxuXHJcbiAgdHI6aG92ZXIsXHJcbiAgLnBvcHVwLWlzLW9wZW4ge1xyXG4gICAgLy8gcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgXHJcbiAgICB0ZC5ucy1ib3JkZXJyaWdodC01LXNvbGlkLXBhcGVyLTAsXHJcbiAgICB0ZC5ucy1ib3JkZXJyaWdodC01LXNvbGlkLWhlbHNhbmFyb3RjbXlrdS0xMDAge1xyXG4gICAgICAmOm5vdCg6bGFzdC1vZi10eXBlKXtcclxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgJjpiZWZvcmUge1xyXG4gICAgICAgICAgY29udGVudDogJyc7XHJcbiAgICAgICAgICB3aWR0aDogNXB4O1xyXG4gICAgICAgICAgaGVpZ2h0OiAzcHg7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAjZTdlN2U3O1xyXG5cclxuICAgICAgICAgIC5iZy1jb2xvci1yZWQgJiB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRsaWxhO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdG9wOiAtMXB4O1xyXG4gICAgICAgICAgcmlnaHQ6IC01cHg7XHJcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgfSAgXHJcbiAgICAgICAgJjphZnRlciB7XHJcbiAgICAgICAgICBjb250ZW50OiAnJztcclxuICAgICAgICAgIHdpZHRoOiA1cHg7XHJcbiAgICAgICAgICBoZWlnaHQ6IDNweDtcclxuICAgICAgICAgIGJhY2tncm91bmQ6ICNlN2U3ZTc7XHJcbiAgICAgICAgICAuYmctY29sb3ItcmVkICYge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkbGlsYTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJvdHRvbTogLTFweDtcclxuICAgICAgICAgIHJpZ2h0OiAtNXB4O1xyXG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgIH0gIFxyXG4gICAgICB9XHJcbiAgICB9ICAgICAgXHJcbiAgICAmLmxpbmUtZml4ZXIge1xyXG4gICAgICAmOmhvdmVyIHtcclxuICAgICAgICB0ZCB7XHJcbiAgICAgICAgICAmOm5vdCg6bGFzdC1vZi10eXBlKXtcclxuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgICAgICAgICAgJjpiZWZvcmUge1xyXG4gICAgICAgICAgICAgICAgICB0b3A6IC0ycHg7XHJcbiAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSAgIFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAmLm5vLWxpbmUtZml4ZXIge1xyXG4gICAgICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgICAgIHRkIHtcclxuICAgICAgICAgICAgICAmOm5vdCg6bGFzdC1vZi10eXBlKXtcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcclxuICAgICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICAmOmFmdGVyIHtcclxuICAgICAgICAgICAgICAgICAgYm90dG9tOiAtMnB4O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSAgIFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAgICAgJi5uby1ib3R0b20tZml4IHtcclxuICAgICAgICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgICAgICAgIHRkOm5vdCg6bGFzdC1vZi10eXBlKXtcclxuICAgICAgICAgICAgICAgICAgJjphZnRlciB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgIC5iZy1jb2xvci1yZWQgJiB7XHJcbiAgICAgIHRkLm5zLWJvcmRlcnJpZ2h0LTUtc29saWQtaGVsc2FuYXJvdGNteWt1LTEwMCB7XHJcbiAgICAgICAgJjpub3QoOmxhc3Qtb2YtdHlwZSl7XHJcbiAgICAgICAgICAmOmJlZm9yZSwgJjphZnRlciB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRsaWxhO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAgIHRkLCBzcGFuIHtcclxuICAgICAgICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDtcclxuICAgICAgfVxyXG4gICAgICB0ZDpub3QoLmpzLXRvZ2dsZXItY29udGFpbmVyKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGxpbGEgIWltcG9ydGFudDtcclxuICAgICAgICBib3JkZXItY29sb3I6ICRsaWxhO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAubnMtYm9yZGVycmlnaHQtNS1zb2xpZC1wYXBlci0wLFxyXG4gICAgICAubnMtYm9yZGVycmlnaHQtNS1zb2xpZC1oZWxzYW5hcm90Y215a3UtMTAwIHtcclxuICAgICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRsaWxhO1xyXG4gICAgICB9ICBcclxuICAgIH1cclxuXHJcbiAgICB0ZDpub3QoLmpzLXRvZ2dsZXItY29udGFpbmVyKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlN2U3ZTcgIWltcG9ydGFudDtcclxuICAgICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcclxuICAgIH1cclxuXHJcbiAgICAubnMtYm9yZGVycmlnaHQtNS1zb2xpZC1wYXBlci0wLFxyXG4gICAgLm5zLWJvcmRlcnJpZ2h0LTUtc29saWQtaGVsc2FuYXJvdGNteWt1LTEwMCB7XHJcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogI2U3ZTdlNztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5ucy12ZXJ0aWNhbC1ib3R0b20ge1xyXG4gICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTtcclxuICB9XHJcbiAgXHJcbiAgLm5zLXZlcnRpY2FsLW1pZGRsZSB7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gIH1cclxuICBcclxuICAubnMtdmVydGljYWwtdG9wIHtcclxuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XHJcbiAgfVxyXG5cclxuICAubnMtdGJsLWhlYWQge1xyXG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XHJcbiAgICAvLyBib3JkZXItdG9wOiAxcHggc29saWQgJGJsdWU7XHJcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGJsdWU7XHJcblxyXG4gICAgLmJnLWNvbG9yLXJlZCAmIHtcclxuICAgICAgLy8gYm9yZGVyLXRvcC1jb2xvcjogJGxhdmVuZGVyO1xyXG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkbGlsYTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5ucy10Ymwtbm9saW5lX2JvbGRfY29sb3Ige1xyXG4gICAgYm9yZGVyLWJvdHRvbTogMHB4IHNvbGlkIHRyYW5zcGFyZW50O1xyXG4gICAgY29sb3I6ICRibHVlO1xyXG4gICAgZm9udC1mYW1pbHk6ICRmb250LWJvbGQ7XHJcbiAgfVxyXG5cclxuICAubnMtdGJsLWxpbmVfYm9sZHtcclxuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1ib2xkO1xyXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRibHVlO1xyXG4gICAgLmJnLWNvbG9yLXJlZCAmIHtcclxuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGxpbGE7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAubnMtdGJsLWxpbmUge1xyXG4gICAgLm5vdGVzLXRleHQge1xyXG4gICAgICBjb2xvcjogYmxhY2s7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuc29saWQtY29sb3ItMTAwIHtcclxuICAgIGNvbG9yOiBibGFjaztcclxuICB9XHJcblxyXG4gIC5ucy1ib3JkZXJ0b3AtMS1zb2xpZC1jb2xvci0xMDAge1xyXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRibHVlO1xyXG4gICAgLmJnLWNvbG9yLXJlZCAmIHtcclxuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGxpbGE7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAubnMtYm9yZGVyYm90dG9tLTEtc29saWQtY29sb3ItMTAwIHtcclxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYmx1ZTtcclxuICAgIC5iZy1jb2xvci1yZWQgJiB7XHJcbiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRsaWxhO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLm5zLWJvcmRlcmJvdHRvbS0xLXNvbGlkLWNvbG9yLTEwMCB7XHJcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGJsdWU7XHJcbiAgICAuYmctY29sb3ItcmVkICYge1xyXG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkbGlsYTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5ucy1ib3JkZXJyaWdodC01LXNvbGlkLXBhcGVyLTAge1xyXG4gICAgYm9yZGVyLXJpZ2h0OiA1cHggc29saWQgJGdyZXktYnJpZ2h0O1xyXG4gICAgXHJcbiAgICAuYmctY29sb3ItcmVkICYge1xyXG4gICAgICBib3JkZXItcmlnaHQ6IDVweCBzb2xpZCAkcmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLm5zLWJvcmRlcnJpZ2h0LTUtc29saWQtaGVsc2FuYXJvdGNteWt1LTEwMCB7XHJcbiAgICBib3JkZXItcmlnaHQ6IDVweCBzb2xpZCAkcmVkO1xyXG5cclxuICAgIC8vIC5iZy1jb2xvci1yZWQuYmctLWRhcmtlciAmIHtcclxuICAgIC8vICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkcmVkLWRhcms7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG5cclxuICAubnMtYm9yZGVydG9wLTEtZGVmYXVsdC1oZWxzYW5hdmlvbGV0dGNteWt1LTEwMCB7XHJcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGxpbGE7XHJcbiAgfVxyXG5cclxuICAubnMtYm9yZGVyYm90dG9tLTEtZGVmYXVsdC1oZWxzYW5hdmlvbGV0dGNteWt1LTEwMCxcclxuICAubnMtYm9yZGVyYm90dG9tLTEtc29saWQtaGVsc2FuYXZpb2xldHRjbXlrdS0xMDAge1xyXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRsaWxhO1xyXG4gIH1cclxuXHJcbiAgLm5zLXRibC10aXRlbCB7XHJcbiAgICBmb250LWZhbWlseTogJGZvbnQtYm9sZDtcclxuICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAkYmx1ZTtcclxuICAgIC5iZy1jb2xvci1yZWQgJiB7XHJcbiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRsYXZlbmRlcjtcclxuICAgICAgY29sb3I6ICRsaWxhO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLm5zLWhvcml6b250YWwtcmlnaHQge1xyXG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XHJcbiAgfVxyXG5cclxuICAubnMtaG9yaXpvbnRhbC1sZWZ0IHtcclxuICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgfVxyXG5cclxuICAubnMtdGJsLW5vbGluZV9ib2xkX2NvbG9yIHtcclxuICAgIGJvcmRlci10b3A6IDJweCBzb2xpZCAkYmx1ZTtcclxuICAgIC5iZy1jb2xvci1yZWQgJiB7XHJcbiAgICAgIGJvcmRlci10b3AtY29sb3I6ICRsaWxhO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmJsYWNrIHtcclxuICAgIGNvbG9yOiAkYmxhY2s7XHJcblxyXG4gICAgKyAuc3VwZXJzY3JpcHQge1xyXG4gICAgICBjb2xvcjogJGJsYWNrO1xyXG4gICAgfVxyXG5cclxuICAgIC5iZy1jb2xvci1yZWQgJiB7XHJcbiAgICAgICAgY29sb3I6IHdoaXRlO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICAub3JhbmdlIHtcclxuICAgIC8vIGNvbG9yOiAkbGF2ZW5kZXI7XHJcbiAgICBjb2xvcjogJGxpbGE7XHJcbiAgfVxyXG5cclxuICAud2Vpc3Mge1xyXG4gICAgY29sb3I6IHdoaXRlO1xyXG4gIH1cclxuXHJcbiAgLmJnLWNvbG9yLXJlZCAmIHtcclxuICAgIHRkIHtcclxuICAgICAgY29sb3I6IHdoaXRlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnRhYmVsbGVuX3RpdGVsIHtcclxuICAgIHAge1xyXG4gICAgICBmb250LWZhbWlseTogJGZvbnQtYm9sZDtcclxuICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxMnB4KTtcclxuICAgICAgbGluZS1oZWlnaHQ6IDEuNDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC50YWJlbGxlbl9sYXVmdGV4dCB7XHJcbiAgICBwIHtcclxuICAgICAgY29sb3I6ICRibGFjaztcclxuICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxMnB4KTtcclxuICAgICAgbGluZS1oZWlnaHQ6IDEuNDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5ub3RlcyB7XHJcbiAgICBmb250LWZhbWlseTogJGZvbnQtbGlnaHQ7XHJcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xyXG4gIH1cclxuXHJcblxyXG4gICYuc3dpdGNoZWQge1xyXG4gICAgdGFibGUtbGF5b3V0OiBhdXRvO1xyXG4gICAgdGR7XHJcbiAgICAgICYsIHNwYW4sIHAge1xyXG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuXHJcbi8vIEhpZGUgc3R1ZmZcclxuLnRhYmxlLXdpdGgtaGlkZGVuLWNvbHM6bm90KC5ub3Rlcy1vcGVuKSB7XHJcbiAgZGl2Om5vdCgubm90ZS1pbnNpZGUpIHRhYmxlIHtcclxuICAgIHRkIHtcclxuICAgICAgJjpudGgtb2YtdHlwZSg0KSB7XHJcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAwcHggc29saWQgdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcclxuICAgICAgICAmOmFmdGVyLFxyXG4gICAgICAgICY6YmVmb3JlIHtcclxuICAgICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICBcclxuICAgICAgJjpudGgtb2YtdHlwZSg1KTpub3QoLmpzLXRvZ2dsZXItY29udGFpbmVyKSxcclxuICAgICAgJjpudGgtb2YtdHlwZSg2KSB7XHJcbiAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLnRhYmxlLWZvci1jaGFydHMtdG9nZ2xlciB7XHJcbiAgdGQge1xyXG4gICAgJjpudGgtb2YtdHlwZSgxKSB7XHJcbiAgICAgIHdpZHRoOiA1OCU7XHJcbiAgICB9XHJcblxyXG4gICAgJjpudGgtb2YtdHlwZSgyKSxcclxuICAgICY6bnRoLW9mLXR5cGUoMyksXHJcbiAgICAmOm50aC1vZi10eXBlKDQpIHtcclxuICAgICAgd2lkdGg6IDE0JVxyXG4gICAgfVxyXG5cclxuICAgICY6bnRoLW9mLXR5cGUoNCkge1xyXG4gICAgICBib3JkZXItcmlnaHQ6IDBweCBzb2xpZCB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG4gICAgICAmOmFmdGVyLFxyXG4gICAgICAmOmJlZm9yZSB7XHJcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJjpudGgtb2YtdHlwZSg1KTpub3QoLmpzLXRvZ2dsZXItY29udGFpbmVyKSxcclxuICAgICY6bnRoLW9mLXR5cGUoNikge1xyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG4gIH1cclxufSIsIi50YWJsZS13cmFwcGVyIHtcclxuICB0YWJsZS5yZXNwb25zaXZlIHtcclxuXHRtYXJnaW4tYm90dG9tOiAwO1xyXG4gIH1cclxuXHJcbiAgLnBpbm5lZCB7XHJcblx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdGxlZnQ6IDA7XHJcblx0dG9wOiAwO1xyXG5cdHdpZHRoOiA0MCU7XHJcblx0b3ZlcmZsb3cteDogYXV0bztcclxuXHRvdmVyZmxvdy15OiBoaWRkZW47XHJcblx0Ym9yZGVyLXJpZ2h0OiAxcHggc29saWQgJGRhcmstZ3JheTtcclxuXHRoZWlnaHQ6IDEwMCU7XHJcblx0LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xyXG4gIH1cclxuXHJcbiAgLnBpbm5lZCB0YWJsZSB7XHJcblx0Ym9yZGVyLXJpZ2h0OiBub25lO1xyXG5cdGJvcmRlci1sZWZ0OiBub25lO1xyXG5cdHdpZHRoOiAxMDAlO1xyXG4gIH1cclxuXHJcbiAgLnBpbm5lZCB0YWJsZSB0aCxcclxuICAucGlubmVkIHRhYmxlIHRkIHNwYW4ge1xyXG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgfVxyXG5cclxuICAucGlubmVkIHRhYmxlIGNvbCB7XHJcblx0d2lkdGg6IGF1dG87XHJcbiAgfVxyXG5cclxuICAuc2Nyb2xsYWJsZSB0YWJsZSB0aCB7XHJcblx0IHdoaXRlLXNwYWNlOiBwcmUtbGluZSAhaW1wb3J0YW50O1xyXG4gIH1cclxuXHJcbiAgLnBpbm5lZCB0ZDpsYXN0LWNoaWxkIHtcclxuXHRib3JkZXItYm90dG9tOiAwO1xyXG4gIH1cclxuXHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIG1hcmdpbi1ib3R0b206IDIwcHg7XHJcbiAgbWFyZ2luLXJpZ2h0OiAwO1xyXG4gIG1hcmdpbi1sZWZ0OiAwO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG5cclxuICBkaXYuc2Nyb2xsYWJsZSB7XHJcblx0bWFyZ2luLWxlZnQ6IDQwJTtcclxuXHRvdmVyZmxvdy14OiBhdXRvO1xyXG5cdG92ZXJmbG93LXk6IGhpZGRlbjtcclxuXHRkaXNwbGF5OiBibG9jaztcclxuXHQtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XHJcblxyXG5cdGNvbGdyb3VwIGNvbDpudGgtY2hpbGQoMSkge1xyXG5cdCAgZGlzcGxheTogbm9uZTtcclxuXHR9XHJcbiAgfVxyXG5cclxuXHJcbiAgdGFibGUucmVzcG9uc2l2ZSB0ZCBzcGFuLFxyXG4gIHRhYmxlLnJlc3BvbnNpdmUgdGgge1xyXG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHRvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgdGFibGUucmVzcG9uc2l2ZSB0aDpmaXJzdC1jaGlsZCxcclxuICB0YWJsZS5yZXNwb25zaXZlIHRkOmZpcnN0LWNoaWxkLFxyXG4gIHRhYmxlLnJlc3BvbnNpdmUgdGQ6Zmlyc3QtY2hpbGQsXHJcbiAgdGFibGUucmVzcG9uc2l2ZS5waW5uZWQgdGQge1xyXG5cdGRpc3BsYXk6IG5vbmU7XHJcbiAgfVxyXG59XHJcblxyXG4uc2Nyb2xsYWJsZTo6LXdlYmtpdC1zY3JvbGxiYXIge1xyXG4gIHdpZHRoOiA0cHg7XHJcbiAgaGVpZ2h0OiA0cHg7XHJcbn1cclxuXHJcbi5zY3JvbGxhYmxlOjotd2Via2l0LXNjcm9sbGJhci1idXR0b24ge1xyXG4gIHdpZHRoOiAwO1xyXG4gIGhlaWdodDogMDtcclxufVxyXG5cclxuLnNjcm9sbGFibGU6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcclxuICBiYWNrZ3JvdW5kOiAjZjBlZWVlO1xyXG4gIGJvcmRlcjogMCBub25lICNmZmZmZmY7XHJcbiAgYm9yZGVyLXJhZGl1czogMDtcclxufVxyXG5cclxuLnNjcm9sbGFibGU6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcclxuICBiYWNrZ3JvdW5kOiAjNjY2NjY2O1xyXG4gIGJvcmRlcjogMCBub25lICNmZmZmZmY7XHJcbiAgYm9yZGVyLXJhZGl1czogMDtcclxufVxyXG4uc2Nyb2xsYWJsZTo6LXdlYmtpdC1zY3JvbGxiYXItY29ybmVyIHtcclxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxufVxyXG5cclxuXHJcbi5waW5uZWQ6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcclxuICB3aWR0aDogNHB4O1xyXG4gIGhlaWdodDogNHB4O1xyXG59XHJcblxyXG4ucGlubmVkOjotd2Via2l0LXNjcm9sbGJhci1idXR0b24ge1xyXG4gIHdpZHRoOiAwO1xyXG4gIGhlaWdodDogMDtcclxufVxyXG5cclxuLnBpbm5lZDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xyXG4gIGJhY2tncm91bmQ6ICNmMGVlZWU7XHJcbiAgYm9yZGVyOiAwIG5vbmUgI2ZmZmZmZjtcclxuICBib3JkZXItcmFkaXVzOiAwO1xyXG59XHJcblxyXG4ucGlubmVkOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XHJcbiAgYmFja2dyb3VuZDogIzY2NjY2NjtcclxuICBib3JkZXI6IDAgbm9uZSAjZmZmZmZmO1xyXG4gIGJvcmRlci1yYWRpdXM6IDA7XHJcbn1cclxuLnBpbm5lZDo6LXdlYmtpdC1zY3JvbGxiYXItY29ybmVyIHtcclxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxufSIsIi5xdW90ZV9fY29udGFpbmVye1xyXG4gICAgcGFkZGluZy1sZWZ0OjA7XHJcbiAgICBib3JkZXItdG9wOiAycHggc29saWQgJGxhdmVuZGVyO1xyXG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XHJcblxyXG4gICAgJjpudGgtY2hpbGQoMSksXHJcbiAgICAmOm50aC1jaGlsZCgzKSB7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7XHJcblxyXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IC01cHg7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmOm50aC1jaGlsZCgyKSxcclxuICAgICY6bnRoLWNoaWxkKDQpe1xyXG4gICAgICBtYXJnaW4tbGVmdDowO1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6MDtcclxuXHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpIHtcclxuICAgICAgICBtYXJnaW4tbGVmdDoxMHB4O1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDotMTBweDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5xdW90ZV9fY29udGFpbmVyX19udW1iZXIge1xyXG4gICAgICBmb250LXNpemU6ICRmb250cy1udW1iZXJzLWJpZztcclxuICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcclxuXHJcbiAgICAgIH4gLnF1b3RlX19jb250YWluZXJfX3RleHQge1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XHJcblxyXG5cdFx0JjpsYXN0LW9mLXR5cGUge1xyXG5cdFx0ICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0IGRvd24pIHtcclxuXHRcdFx0bWFyZ2luLWJvdHRvbTogMjBweDtcclxuXHRcdCAgfVxyXG5cdFx0fVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnF1b3RlX19jb250YWluZXJfX3RleHR7XHJcbiAgICAgIGZvbnQtc2l6ZTogJGZvbnRzLXF1b3RlLXNtYWxsO1xyXG4gICAgICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MztcclxuICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcclxuICAgIH1cclxuXHJcbiAgICAucXVvdGVfX2NvbnRhaW5lcl9fcXVvdGV7XHJcbiAgICAgIGZvbnQtc2l6ZTogJGZvbnRzLXF1b3RlO1xyXG4gICAgICBsaW5lLWhlaWdodDogJGxoLXBhcmFncmFwaDtcclxuICAgICAgbWFyZ2luLXRvcDogMTBweDtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDtcclxuICAgIH1cclxuICB9IiwiLnF1b3Rle1xyXG4gIEBpbmNsdWRlIGNsZWFyZml4O1xyXG4gIGNvbG9yOiAkbGF2ZW5kZXI7XHJcbiAgbWFyZ2luLXRvcDogNDBweDtcclxuICBtYXJnaW4tYm90dG9tOiAzMHB4O1xyXG4gIHBhZGRpbmctbGVmdDogMDtcclxuICBwYWRkaW5nLXJpZ2h0OiAwO1xyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDVweDtcclxuICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7XHJcbiAgICBtYXJnaW4tdG9wOiA1NXB4O1xyXG4gICAgbWFyZ2luLWJvdHRvbTogNTBweDtcclxuICB9XHJcbiAgcHtcclxuICAgQGV4dGVuZCAubWFyZ2luLS1yZXNldDtcclxuICB9XHJcbn0iLCIua2V5ZmlndXJlc19fY29udGFpbmVyIHtcclxuICBwYWRkaW5nLWxlZnQ6IDA7XHJcbiAgcGFkZGluZy1yaWdodDogMDtcclxuICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xyXG4gIEBpbmNsdWRlIGZsZXgtanVzdGlmeShjZW50ZXIpO1xyXG4gIGZvbnQtZmFtaWx5OiAkZm9udC1ib2xkO1xyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0LWxhbmQyKSB7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDMwcHg7XHJcbiAgICBwYWRkaW5nLXJpZ2h0OiAzMHB4O1xyXG4gIH1cclxuXHJcbiAgJl9faW5uZXIge1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgcGFkZGluZy1ib3R0b206IDYwcHg7XHJcbiAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXgoKTtcclxuICAgIEBpbmNsdWRlIGZsZXgtanVzdGlmeShzcGFjZS1iZXR3ZWVuKTtcclxuICAgIEBpbmNsdWRlIGZsZXgtZGlyZWN0aW9uKGNvbHVtbik7XHJcblxyXG4gICAgJl9fbnVtYmVyIHtcclxuICAgICAgZm9udC1zaXplOiAkZm9udHMtbnVtYmVycy1iaWc7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAxO1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gICAgfVxyXG5cclxuICAgICZfX3RleHQge1xyXG4gICAgICBmb250LXNpemU6ICRmb250cy1rZXlmaWd1cmVzLXR4dDtcclxuXHQgIGxpbmUtaGVpZ2h0OiAxLjU7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XHJcblxyXG4gICAgICAmX19jdXJyZW5jeSB7XHJcbiAgICAgICAgZm9udC1zaXplOiAkZm9udHMta2V5ZmlndXJlcy1jdXJyZW5jeS1zO1xyXG5cdFx0bGluZS1oZWlnaHQ6IDEuNTtcclxuXHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpIHtcclxuXHRcdCAgZm9udC1zaXplOiAkZm9udHMta2V5ZmlndXJlcy1jdXJyZW5jeTtcclxuXHRcdH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLmNvbnRlbnRfX2lubmVyIHtcclxuICA+IGRpdi5rZXlmaWd1cmVzX19jb250YWluZXIge1xyXG4gICAgKyA6bm90KC5rZXlmaWd1cmVzX19jb250YWluZXIpIHtcclxuICAgICAgbWFyZ2luLXRvcDogMTAwcHg7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uZW50cnktY29udGVudHtcclxuICA+IGRpdi5rZXlmaWd1cmVzX19jb250YWluZXIge1xyXG4gICAgKyA6bm90KC5rZXlmaWd1cmVzX19jb250YWluZXIpIHtcclxuICAgICAgbWFyZ2luLXRvcDogMTIwcHg7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi5rZXlmaWd1cmUtY2FyZC1jb250YWluZXIge1xyXG4gIEBpbmNsdWRlIGZsZXhib3gocm93LCB3cmFwLCBzcGFjZS1iZXR3ZWVuLCBmbGV4LXN0YXJ0KTtcclxuICB3aWR0aDogMTAwJTtcclxuICBtYXgtd2lkdGg6ICRpbm5lci1jb250YWluZXItd2lkdGgtbDtcclxuICBtYXJnaW46IDAgYXV0bztcclxuXHJcbiAgJjphZnRlcixcclxuICAmOmJlZm9yZSB7XHJcbiAgICBjbGVhcjogbm9uZSAhaW1wb3J0YW50O1xyXG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG4gIH1cclxufVxyXG5cclxuLmtleWZpZ3VyZS1jYXJkLXdyYXBwZXIge1xyXG4gIC8vIEBpbmNsdWRlIGZsZXhib3goY29sdW1uLCB3cmFwLCBmbGV4LXN0YXJ0LCBmbGV4LXN0YXJ0KTtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgbWFyZ2luLWJvdHRvbTogMzVweDsgLy8gaGVpZ2h0IG9mIHBsdXMgdG9nZ2xlXHJcbiAgd2lkdGg6IGNhbGMoMTAwJSAtIDE1cHgpO1xyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpe1xyXG4gICAgd2lkdGg6IGNhbGMoNTAlIC0gNy43cHgpO1xyXG4gIH1cclxuXHJcbiAgJjpob3ZlciB7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAua2V5ZmlndXJlLWNhcmRfX3RvZ2dsZXtcclxuICAgICAgd2lkdGg6IDUwcHg7XHJcbiAgICAgIGhlaWdodDogNTBweDtcclxuXHJcbiAgICAgICY6YmVmb3JlIHtcclxuICAgICAgICB3aWR0aDogMThweDtcclxuICAgICAgICBvcGFjaXR5OiAxO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmOmFmdGVye1xyXG4gICAgICAgIGhlaWdodDogMThweDtcclxuICAgICAgICBvcGFjaXR5OiAxO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4ua2V5ZmlndXJlLWNhcmQge1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxuXHJcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbihhbGwgMC4zcyk7XHJcblxyXG4gIGJhY2tncm91bmQ6ICRyZWQ7XHJcblxyXG4gIC8vIC5iZy0tZGFya2VyICYge1xyXG4gIC8vICAgYmFja2dyb3VuZDogJHJlZC1kYXJrO1xyXG4gIC8vIH1cclxuXHJcbiAgICBib3gtc2hhZG93OiAwIDNweCA2cHggcmdiYShibGFjaywgMC4xNik7XHJcbiAgQGluY2x1ZGUgcmVzcG9uc2l2ZS1yYXRpbygxMDAlLCAxLCAxLCAnLmtleWZpZ3VyZS1jYXJkX19pbm5lcicpO1xyXG5cclxuICBwIHtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gIH1cclxuXHJcbiAgJl9faW5uZXIge1xyXG4gICAgcGFkZGluZzogMjBweCAyMHB4IDQwcHg7XHJcbiAgICBAaW5jbHVkZSBmbGV4Ym94KGNvbHVtbiwgbm93cmFwLCBzcGFjZS1iZXR3ZWVuLCBjZW50ZXIpO1xyXG4gICAgLy8gQGluY2x1ZGUgZmxleGJveChyb3csIHdyYXAsIGNlbnRlciwgY2VudGVyKTtcclxuICB9XHJcblxyXG4gICZfX3RpdGxlLXdyYXBwZXIge1xyXG4gICAgZm9udC1zaXplOiByZW0tY2FsYygxN3B4KTtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAzNSU7XHJcbiAgICBAaW5jbHVkZSBmbGV4Ym94KGNvbHVtbiwgbm93cmFwLCBjZW50ZXIsIGNlbnRlcik7XHJcblxyXG4gICAgLmtleWZpZ3VyZS1jYXJkLS1jb21wYXJpc29uICYge1xyXG4gICAgICAvLyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9fdGl0bGUge1xyXG4gICAgZm9udC1mYW1pbHk6ICdBa2t1cmF0LVJlZ3VsYXJCb2xkJywgc2Fucy1zZXJpZjtcclxuICB9XHJcblxyXG4gICZfX3N1YnRpdGxlIHtcclxuICAgIGZvbnQtZmFtaWx5OiAnQWtrdXJhdC1MaWdodCcsIHNhbnMtc2VyaWY7XHJcbiAgfVxyXG5cclxuXHJcbiAgJl9fZnJhY3Rpb24tdGl0bGUge1xyXG4gICAgICBmb250LXNpemU6IHJlbS1jYWxjKDE0cHgpO1xyXG4gICAgICBmb250LWZhbWlseTogJ0Fra3VyYXQtTGlnaHQnLCBzYW5zLXNlcmlmO1xyXG4gICAgICBsaW5lLWhlaWdodDogMjMvMTQ7XHJcbiAgICAgIGNvbG9yOiAkbGlsYTtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgfVxyXG5cclxuXHJcbiAgJl9fdG9nZ2xlIHtcclxuICAgIGJhY2tncm91bmQ6ICRsYXZlbmRlcjtcclxuICAgIGZvbnQtc2l6ZTogMDtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHdpZHRoOiAzNXB4O1xyXG4gICAgaGVpZ2h0OiAzNXB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgdG9wOiAxMDAlO1xyXG4gICAgbGVmdDogNTAlO1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICB0cmFuc2l0aW9uOiAuMnMgYWxsIGVhc2UtaW4tb3V0O1xyXG4gICAgei1pbmRleDogMztcclxuXHJcbiAgICAmOmJlZm9yZSxcclxuICAgICY6YWZ0ZXIge1xyXG4gICAgICBjb250ZW50OiAnJztcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6IDUwJTtcclxuICAgICAgbGVmdDogNTAlO1xyXG4gICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcclxuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XHJcbiAgICAgIHRyYW5zaXRpb246IC4ycyBhbGwgZWFzZS1pbi1vdXQ7XHJcbiAgICAgIG9wYWNpdHk6IDE7XHJcbiAgICB9XHJcblxyXG4gICAgJjpiZWZvcmUge1xyXG4gICAgICB3aWR0aDogMTRweDtcclxuICAgICAgaGVpZ2h0OiAxcHg7XHJcbiAgICB9XHJcblxyXG4gICAgJjphZnRlciB7XHJcbiAgICAgIHdpZHRoOiAxcHg7XHJcbiAgICAgIGhlaWdodDogMTRweDtcclxuICAgIH1cclxuXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgd2lkdGg6IDUwcHg7XHJcbiAgICAgIGhlaWdodDogNTBweDtcclxuXHJcbiAgICAgICY6YmVmb3JlIHtcclxuICAgICAgICB3aWR0aDogMjFweDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJjphZnRlcntcclxuICAgICAgICBoZWlnaHQ6IDIxcHg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi5rZXlmaWd1cmUtY2FyZC0taXMtb3BlbiB7XHJcbiAgLmtleWZpZ3VyZS1jYXJkX190b2dnbGU6YWZ0ZXIge1xyXG4gICAgb3BhY2l0eTogMDtcclxuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gIH0gXHJcbn1cclxuXHJcbi5rZXlmaWd1cmUtY2FyZF9fbW9yZS13cmFwcGVyIHtcclxuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcclxuICBib3gtc2hhZG93OiAwIDEwcHggMjBweCByZ2JhKGJsYWNrLCAwLjE2KTtcclxuICBwYWRkaW5nOiAzNXB4IDI1cHg7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiBhdXRvO1xyXG4gIGxlZnQ6IDA7IFxyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBjb2xvcjogIzI3MjUyMztcclxuICBkaXNwbGF5OiBub25lOyBcclxuXHJcbiAgJi5vcGVuIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gIH1cclxuXHJcbiAgLmtleWZpZ3VyZS1jYXJkX19mcmFjdGlvbiB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xyXG4gIH1cclxuXHJcbiAgLmZyYWN0aW9uIHtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTRweCk7XHJcbiAgICBmb250LWZhbWlseTogXCJBa2t1cmF0LVJlZ3VsYXJCb2xkXCIsIHNhbXMtc2VyaWY7XHJcbiAgICBjb2xvcjogJGxpbGE7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIEBpbmNsdWRlIGZsZXhib3goY29sdW1uLCB3cmFwLCBjZW50ZXIsIGNlbnRlcik7XHJcblxyXG4gICAgcCB7XHJcbiAgICAgIHBhZGRpbmc6IDVweCAyMHB4O1xyXG4gICAgICB3aWR0aDogYXV0bztcclxuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgICBtYXJnaW46IDA7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHJcbiAgICAgICY6Zmlyc3Qtb2YtdHlwZSB7XHJcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRsYXZlbmRlcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgJjpsYXN0LW9mLXR5cGUge1xyXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcclxuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGxhdmVuZGVyO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwLFxyXG4gIC5ucy1pbWFnZS13cmFwIHtcclxuICAgIG1hcmdpbi1sZWZ0OiAwO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXJnaW4tdG9wOiAwO1xyXG4gICAgZm9udC1zaXplOiByZW0tY2FsYygxNHB4KTtcclxuICAgIGxpbmUtaGVpZ2h0OiByZW0tY2FsYygyMHB4KTtcclxuXHJcbiAgICAmOmxhc3Qtb2YtdHlwZSgpe1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLm5zLWltYWdlLXdyYXAge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoNTVweCk7XHJcbiAgfVxyXG59XHJcblxyXG4ua2V5ZmlndXJlLWNhcmRfX2NvbXBhcmlzb24ge1xyXG4gIEBpbmNsdWRlIGZsZXhib3gocm93LCB3cmFwLCBzcGFjZS1iZXR3ZWVuLCBjZW50ZXIpO1xyXG4gIGZvbnQtZmFtaWx5OiAnQWtrdXJhdC1MaWdodCcsIHNhbnMtc2VyaWY7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMDAlIC0gMzUlO1xyXG5cclxuICA+IGRpdiB7XHJcbiAgICB3aWR0aDogY2FsYyg1MCUgLSAxMHB4KTtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICB9XHJcblxyXG5cclxuICAuY29tcGFyaXNvbiB7XHJcbiAgICAmX19sZWZ0IHtcclxuICAgICAgZm9udC1mYW1pbHk6ICRmb250LWJvbGQ7XHJcbiAgICB9XHJcblxyXG4gICAgJl9feWVhcixcclxuICAgICZfX251bS10eXBlIHtcclxuICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxN3B4KTtcclxuICAgICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgICB9XHJcblxyXG4gICAgJl9fbnVtYmVyIHtcclxuICAgICAgZm9udC1zaXplOiByZW0tY2FsYyg0OHB4KTtcclxuICAgICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgICAgIG1hcmdpbjogNXB4IDA7XHJcbiAgICB9XHJcblxyXG4gICAgJl9fcmlnaHQge1xyXG4gICAgICBjb2xvcjogJGxpbGE7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4ua2V5ZmlndXJlLWNhcmRfX3RhYmxlIHtcclxuICB3aWR0aDogMTAwJTtcclxuICBmb250LXNpemU6IHJlbS1jYWxjKDE0cHgpO1xyXG4gIGZvbnQtZmFtaWx5OiAnQWtrdXJhdC1SZWd1bGFyJywgc2Fucy1zZXJpZjtcclxuXHJcbiAgJi1yb3cge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBAaW5jbHVkZSBmbGV4Ym94KHJvdywgd3JhcCwgc3BhY2UtYmV0d2VlbiwgZmxleC1lbmQpO1xyXG4gICAgJjpmaXJzdC1vZi10eXBlIHtcclxuICAgICAgc3BhbiB7XHJcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICRsYXZlbmRlcjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICY6bGFzdC1vZi10eXBlIHtcclxuICAgICAgc3BhbiB7XHJcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgc3BhbiB7XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGxhdmVuZGVyO1xyXG4gICAgICB3aWR0aDogY2FsYygjezEwMCUvMy42fSAtIDZweCk7XHJcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xyXG4gICAgICBwYWRkaW5nOiAzcHggMDtcclxuXHJcbiAgICAgICY6Zmlyc3Qtb2YtdHlwZSB7XHJcbiAgICAgICAgd2lkdGg6IGNhbGMoI3soMTAwJSAvIDMuNikqMS42fSAtIDZweCk7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJjpsYXN0LW9mLXR5cGUge1xyXG4gICAgICAgIGNvbG9yOiAkbGlsYTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufSIsImgxLFxyXG4ubnMtdGl0bGUtY2hhcHRlcntcclxuICBjb2xvcjogJGJsYWNrO1xyXG4gIGZvbnQtZmFtaWx5OiAkZm9udC1ib2xkO1xyXG4gIGZvbnQtc2l6ZTogJGZvbnRzLXRpdGxlLWgxLXM7XHJcbiAgbGluZS1oZWlnaHQ6IDEuMTtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgbWFyZ2luLWJvdHRvbTogNDBweDtcclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldCkge1xyXG4gICAgZm9udC1zaXplOiAkZm9udHMtdGl0bGUtaDE7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxMDBweDtcclxuXHJcbiAgICAmICsgLmV4Y2VsLWRvd25sb2FkIHtcclxuICAgICAgbWFyZ2luLXRvcDogLTYwcHg7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uYmctY29sb3ItcmVkLFxyXG4uYmctY29sb3ItZGFyay1yZWR7XHJcbiAgaDEsXHJcbiAgLm5zLXRpdGxlLWNoYXB0ZXJ7XHJcbiAgICBjb2xvcjogJHdoaXRlO1xyXG4gIH1cclxufVxyXG5cclxubWFpbiB7XHJcbiAgaDEsXHJcbiAgLm5zLXRpdGxlLWNoYXB0ZXJ7XHJcblx0bWFyZ2luLXRvcDogNTBweDtcclxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpIHtcclxuXHQgIG1hcmdpbi10b3A6ICg5MHB4IC0gNDBweCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4ubnMtdGl0bGUtLXJlZCB7XHJcbiAgY29sb3I6ICRyZWQ7XHJcbn0iLCJoMi5ucy10aXRsZS1tYWluLFxyXG4ubnMtdGl0bGUtbWFpbntcclxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGxhdmVuZGVyO1xyXG4gIGNvbG9yOiAkbGF2ZW5kZXI7XHJcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuICBmb250LXNpemU6ICRmb250cy10aXRsZS1tYWluLXM7XHJcbiAgbGluZS1oZWlnaHQ6IHJlbS1jYWxjKDI1cHgpO1xyXG4gIHBhZGRpbmctYm90dG9tOiByZW0tY2FsYygyMHB4KTtcclxuICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYygyMHB4KTtcclxuICBkaXNwbGF5OiBibG9jaztcclxuICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KXtcclxuICAgIGZvbnQtc2l6ZTogJGZvbnRzLXRpdGxlLW1haW47XHJcbiAgICBsaW5lLWhlaWdodDogcmVtLWNhbGMoNDVweCk7XHJcbiAgfVxyXG59XHJcbiIsIi5ucy10aXRsZS1oMntcclxuICBAZXh0ZW5kIC5zdWJ0aXRlbHMtLW1hcmdpbi10b3A7XHJcbn1cclxuXHJcbmgyLFxyXG5oMyxcclxuaDQsXHJcbmg1LFxyXG5oNntcclxuICBmb250LXNpemU6ICRmb250cy10aXRsZS1oMjtcclxufVxyXG5cclxuaDEsXHJcbi5ucy10aXRsZS1jaGFwdGVye1xyXG4gIC5ucy10aXRsZS1oMntcclxuICAgIG1hcmdpbi10b3A6IDA7XHJcbiAgfVxyXG59XHJcblxyXG4ubnMtdGl0bGUtLW1hcmdpbi1ib3R0b20ge1xyXG4gIG1hcmdpbi1ib3R0b206IDMwcHg7XHJcbn1cclxuXHJcbi5xdW90ZSArIC5ucy10aXRsZS1oMntcclxuICBtYXJnaW4tdG9wOiAwO1xyXG59XHJcblxyXG5cclxuLm5zLXRpdGxlLWgyLFxyXG4ubnMtdGl0bGUtaDMge1xyXG4gIGZvbnQtZmFtaWx5OiAkZm9udC1ib2xkO1xyXG4gIG1hcmdpbi10b3A6IDQ1cHg7XHJcbn1cclxuXHJcbi5ucy10aXRsZS1oNCB7XHJcbiAgQGV4dGVuZCAubnMtdGl0bGUtaDM7XHJcbiAgY29sb3I6ICRibHVlO1xyXG4gIGZvbnQtZmFtaWx5OiAnQWtrdXJhdC1MaWdodCc7XHJcbiAgZGlzcGxheTogYmxvY2s7XHJcbn1cclxuXHJcblxyXG4uY2ctc2VsZWN0aW9uLXRpdGxlIHtcclxuICBmb250LWZhbWlseTogJGZvbnQtcmVndWxhcjtcclxufSIsIi5ucy10aXRsZS1yZXZpc2lvbnNiZXJpY2h0e1xyXG4gIEBleHRlbmQgLnN1YnRpdGVscy0tbWFyZ2luLXRvcDtcclxuICBmb250LXNpemU6ICRmb250cy10aXRsZS1yZXZpc2lvbnNiZXJpY2h0O1xyXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gIG1hcmdpbi1ib3R0b206IDVweDtcclxuICBsaW5lLWhlaWdodDogJGxoLXBhcmFncmFwaDtcclxuICBtYXJnaW4tdG9wOiA0NXB4O1xyXG59IiwiYm9keTpub3QoLmlzX2Zyb250UGFnZSkge1xyXG4gIG1haW4ge1xyXG5cdGJhY2tncm91bmQtY29sb3I6ICNGNUY1RjU7XHJcblx0cGFkZGluZzogNDBweCAyNXB4IDEwMHB4IDI1cHg7XHJcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDE0MHB4O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuQGltcG9ydCAnbGF5b3V0L2NvbnRlbnQnO1xyXG5AaW1wb3J0ICdsYXlvdXQvZm9vdGVyJztcclxuQGltcG9ydCAnbGF5b3V0L2hlYWRlci1uYXZpZ2F0aW9uJztcclxuXHJcbkBpbXBvcnQgJ3BhZ2VzL25vdGVzL25vdGVzJztcclxuQGltcG9ydCAncGFnZXMvc2VhcmNoL3NlYXJjaCc7XHJcblxyXG4vL0BpbXBvcnQgJ3BkZi8uLi4nO1xyXG5cclxuLy9AaW1wb3J0ICd2ZW5kb3IvLi4uJzsiLCJodG1sIHtcclxuICBmb250LXNpemU6IDE2cHggIWltcG9ydGFudDsvL3RvIGJlIHN1cmVcclxufVxyXG5cclxuYm9keSB7XHJcbiAgY29sb3I6ICRncmV5LWRhcms7XHJcbiAgZm9udC1mYW1pbHk6ICRmb250LWxpZ2h0O1xyXG4gIGZvbnQtc2l6ZTokZm9udHMtcGFyYWdyYXBoO1xyXG4gIGxpbmUtaGVpZ2h0OiByZW0tY2FsYygyNHB4KTtcclxuICBtYXJnaW4tdG9wOiA2OHB4O1xyXG4gIGhlaWdodDogMTAwJTtcclxuICBtaW4taGVpZ2h0OiAxMDAlO1xyXG4gIG92ZXJmbG93OiBhdXRvO1xyXG4gIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmU7XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpe1xyXG4gICAgbWFyZ2luLXRvcDogMTIwcHg7XHJcbiAgfVxyXG4gIFxyXG4gIC5iZy1jb2xvci1icmlnaHR7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JleS1icmlnaHQ7XHJcbiAgfVxyXG5cclxuICAuYmctY29sb3ItcmVke1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHJlZCAhaW1wb3J0YW50O1xyXG4gICAgY29sb3I6JHdoaXRlO1xyXG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbihhbGwgMC4zcyk7XHJcblxyXG4gICAgLy9jc3MgZm9yIGZ1bmN0aW9uXHJcbiAgICAvLyAmLmJnLS1kYXJrZXJ7XHJcbiAgICAvLyAgIGJhY2tncm91bmQtY29sb3I6ICRyZWQtZGFyayAhaW1wb3J0YW50O1xyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgLmJnLWNvbG9yLWRhcmstcmVkIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRyZWQtZGFyayAhaW1wb3J0YW50O1xyXG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbihhbGwgMC4zcyk7XHJcblxyXG4gICAgJi5iZy0tZGFya2VyIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHJlZC1kYXJrZXIgIWltcG9ydGFudDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vd2l0aCBkZWZpbmllcnQgaW4gY29uZmlnL2NvbnRhaW5lci13aXRoXHJcbiAgLnJvd3tcclxuICAgIGRpc3BsYXk6YmxvY2s7XHJcbiAgICBtYXgtd2lkdGg6ICRvdXRlci1jb250YWluZXItd2lkdGgtcztcclxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQtbGFuZDIpe1xyXG4gICAgICBtYXgtd2lkdGg6ICRvdXRlci1jb250YWluZXItd2lkdGgtbTtcclxuICAgIH1cclxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC1sYXB0b3Ape1xyXG4gICAgICBtYXgtd2lkdGg6ICRvdXRlci1jb250YWluZXItd2lkdGgtbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5jb250ZW50X19pbm5lcntcclxuICAgIG1hcmdpbi10b3A6IHJlbS1jYWxjKDUwcHgpO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMTAwcHgpO1xyXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldCl7XHJcbiAgICAgIG1hcmdpbi10b3A6IHJlbS1jYWxjKDg1cHgpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLm5hdi1iYWNrZHJvcCB7XHJcbiAgYmFja2dyb3VuZDogcmdiYShibGFjaywgMC4xKTtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIHRvcDogMDtcclxuICBsZWZ0OiAwO1xyXG4gIHotaW5kZXg6IDk5OTtcclxufVxyXG5cclxuXHJcbmEsXHJcbi5ucy1hbmNob3J7XHJcbiAgY29sb3I6JHJlZDtcclxuXHJcbiAgJjpob3ZlcntcclxuICAgIGNvbG9yOiRyZWQ7XHJcbiAgfVxyXG59XHJcblxyXG4uYmctY29sb3ItcmVke1xyXG4gIGEsXHJcbiAgLm5zLWFuY2hvcntcclxuICAgIGNvbG9yOiRvcmFuZ2U7XHJcblxyXG4gICAgJjpob3ZlcntcclxuICAgICAgY29sb3I6JG9yYW5nZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmgyXHJcbmgzLFxyXG5oNCxcclxuaDUsXHJcbmg2e1xyXG4gIC8vIGZvbnQtZmFtaWx5OiAkZm9udC1ib2xkO1xyXG4gIGZvbnQtc2l6ZTogJGZvbnRzLXRpdGxlLWgyO1xyXG4gIC8vIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gIG1hcmdpbi10b3A6IDA7XHJcbiAgbWFyZ2luLWJvdHRvbTogMDtcclxuICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxufVxyXG5cclxuc3Ryb25ne1xyXG4gIGZvbnQtd2VpZ2h0OmJvbGQ7XHJcbn1cclxuXHJcblxyXG4vLyBDT1JSRUNUSU9OUyBORVhYQVJcclxuXHJcbi5jZy1zZWxlY3Rpb24tdGl0bGUge1xyXG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcclxuICBkaXNwbGF5OiBibG9jaztcclxufVxyXG5cclxuI2NnRmx5b3V0MiB1bC5jZy1zZWxlY3Rpb24tY29udHJvbHMge1xyXG4gIHRvcDogLTI1cHggIWltcG9ydGFudDtcclxufVxyXG5cclxuI2NnU2VsZWN0WWVhcnMge1xyXG4gIGhlaWdodDogNjNweCAhaW1wb3J0YW50O1xyXG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7XHJcbiAgYm9yZGVyLXRvcDogc29saWQgMXB4ICNkZGQgIWltcG9ydGFudDtcclxuICBib3JkZXItYm90dG9tOiBzb2xpZCAxcHggI2RkZCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4jY2dGbHlvdXQyIHVsLmNnLXNlbGVjdGlvbiBsaSB7XHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldCkge1xyXG4gIHdpZHRoOiA4NXB4ICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG4gIG1hcmdpbi10b3A6IDJweDtcclxufSIsIi5mb290ZXItY29udGFpbmVyIHtcclxuICBmb250LXNpemU6ICRmb250cy1mb290ZXI7XHJcblxyXG4gIGEge1xyXG5cdC8vIGNvbG9yOiRncmV5LWRhcms7XHJcblx0Y29sb3I6ICM1NjU2NTU7XHJcblxyXG5cdCY6aG92ZXIsXHJcblx0Jjp2aXNpdGVkIHtcclxuXHQgIGNvbG9yOiRncmV5LWRhcms7XHJcblx0ICBmb250LWZhbWlseTogJGZvbnQtcmVndWxhcjtcclxuXHR9XHJcbiAgfVxyXG5cclxuICAudXBCdXR0b24tY29udGFpbmVyIHtcclxuICAgIHBhZGRpbmctdG9wOiA3MHB4O1xyXG4gICAgcGFkZGluZy1ib3R0b206IDcwcHg7XHJcblx0QGluY2x1ZGUgZ3JpZC1jb2x1bW4tZ3V0dGVyKDMwcHgpO1xyXG5cclxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC1sYXB0b3Ape1xyXG5cdFx0cGFkZGluZy10b3A6IDEzMHB4O1xyXG4gICAgICBwYWRkaW5nLWJvdHRvbTogNTVweDtcclxuICAgIH1cclxuXHJcblx0YSB7XHJcblx0ICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0ICBsZWZ0OiA1MCU7XHJcblx0ICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0ICBAaW5jbHVkZSB0cmFuc2Zvcm1zKHRyYW5zbGF0ZVgoLTUwJSkpO1xyXG5cclxuXHQgIC5pY29uLXVwIHtcclxuXHRcdHdpZHRoOiA1MHB4O1xyXG5cdFx0QGluY2x1ZGUgdHJhbnNpdGlvbiguM3MgYWxsIGVhc2UpO1xyXG5cclxuXHRcdCY6aG92ZXIge1xyXG5cdFx0ICBtYXJnaW4tdG9wOiAtMTBweDtcclxuXHRcdCAgbWFyZ2luLWJvdHRvbTogMTBweDtcclxuXHRcdH1cclxuXHJcblx0XHRAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtbGFwdG9wKSB7XHJcblx0XHQgIHdpZHRoOjU1cHg7XHJcblx0XHR9XHJcblx0ICB9XHJcblx0fVxyXG4gIH1cclxuXHJcbiAgZm9vdGVyIHtcclxuXHRwYWRkaW5nLWJvdHRvbTogMjJweDtcclxuXHRAaW5jbHVkZSBncmlkLWNvbHVtbi1ndXR0ZXIoMzBweCk7XHJcblxyXG5cdCAgLmZvb3RlciB7XHJcblx0XHRib3JkZXItdG9wOiAxcHggc29saWQgJGdyZXktYnJpZ2h0LWZvb3RlcjtcclxuXHRcdHBhZGRpbmc6IDIwcHggMCA1cHg7XHJcblx0XHRAaW5jbHVkZSBjbGVhcmZpeDtcclxuXHJcblx0XHRAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcblx0XHQgIG1hcmdpbi1sZWZ0OiAxNXB4O1xyXG5cdFx0ICBtYXJnaW4tcmlnaHQ6IDE1cHg7XHJcblx0XHQgIHBhZGRpbmc6IDI1cHggMjBweCAwO1xyXG5cdFx0fVxyXG5cclxuXHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQtbGFuZDIpIHtcclxuXHRcdCAgbWFyZ2luLWxlZnQ6MDtcclxuXHRcdCAgbWFyZ2luLXJpZ2h0OjA7XHJcblx0XHQgIHBhZGRpbmc6IDI4cHggNThweCAwIDY1cHg7XHJcblx0XHR9XHJcblxyXG5cdFx0dWx7XHJcblx0XHQgIG1hcmdpbi1sZWZ0OiAwO1xyXG5cdFx0fVxyXG5cclxuXHQgXHRAZXh0ZW5kIC5saXN0LS11bnN0eWxlZDtcclxuXHJcblx0XHQmX19zb2NpYWwge1xyXG5cdFx0ICBmbG9hdDogbm9uZTtcclxuXHRcdCAgbWFyZ2luLWxlZnQ6IDA7XHJcblx0XHRcdG1hcmdpbi1ib3R0b206IDEwcHg7XHJcblx0XHRcdFxyXG5cdFx0ICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcblx0XHRcdGZsb2F0OiBsZWZ0O1xyXG5cdFx0XHRtYXJnaW4tdG9wOiAtNXB4O1xyXG5cdFx0XHRtYXJnaW4tYm90dG9tOiAwO1xyXG5cdFx0ICB9XHJcblxyXG5cdFx0ICB1bCB7XHJcblx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHRcdFx0bWFyZ2luLWJvdHRvbTogMDtcclxuXHJcblx0XHRcdCY6Zmlyc3QtY2hpbGQge1xyXG5cdFx0XHQgIGZsb2F0OiBub25lO1xyXG5cclxuXHRcdFx0ICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0LWxhbmQyKXtcclxuXHRcdFx0XHRmbG9hdDogbGVmdDtcclxuXHRcdFx0ICB9XHJcblx0XHRcdH1cclxuXHRcdCAgfVxyXG5cclxuXHRcdCAgJl9fZWxlbSB7XHJcblx0XHRcdGZsb2F0OiBsZWZ0O1xyXG5cdFx0XHRwYWRkaW5nLXJpZ2h0OiAzcHg7XHJcblxyXG5cdFx0XHRpbWcge1xyXG5cdFx0XHQgIG1hcmdpbi10b3A6IC0zcHg7XHJcblx0XHRcdH1cclxuXHRcdCAgfVxyXG5cdFx0fVxyXG5cclxuXHRcdCZfX2NvcHlyaWdodCB7XHJcblx0XHQgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkZ3JleS1icmlnaHQtZm9vdGVyO1xyXG5cdFx0ICBmbG9hdDogbm9uZTtcclxuXHRcdCAgbWFyZ2luLXJpZ2h0OiAwO1xyXG5cdFx0ICBtYXJnaW4tbGVmdDogMDtcclxuXHRcdCAgcGFkZGluZy10b3A6IDIwcHg7XHJcblxyXG5cdFx0ICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KXtcclxuXHRcdFx0Ym9yZGVyLXRvcDogMDtcclxuXHRcdFx0ZmxvYXQ6IHJpZ2h0O1xyXG5cdFx0XHRwYWRkaW5nLXRvcDogMDtcclxuXHRcdCAgfVxyXG5cclxuXHRcdCAgdWwge1xyXG5cdFx0XHRAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XHJcblx0XHRcdEBpbmNsdWRlIGZsZXgtZGlyZWN0aW9uKGNvbHVtbi1yZXZlcnNlKTtcclxuXHRcdFx0bWFyZ2luLWJvdHRvbTowO1xyXG5cclxuXHRcdFx0QGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldCkge1xyXG5cdFx0XHQgIEBpbmNsdWRlIGZsZXgtZGlyZWN0aW9uKHJvdy1yZXZlcnNlKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0bGkge1xyXG5cdFx0XHQgIG1hcmdpbi1ib3R0b206IDE1cHg7XHJcblxyXG5cdFx0XHQgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpIHtcclxuXHRcdFx0XHRtYXJnaW4tYm90dG9tOiAwO1xyXG5cclxuXHRcdFx0XHQmOm5vdCg6bGFzdC1vZi10eXBlKSB7XHJcblx0XHRcdFx0ICBwYWRkaW5nLWxlZnQ6IDIycHg7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQmOmZpcnN0LW9mLXR5cGUge1xyXG5cdFx0XHRcdCAgcGFkZGluZy1yaWdodDogN3B4O1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0ICB9XHJcblxyXG5cdFx0XHQgICY6bGFzdC1vZi10eXBlIHtcclxuXHRcdFx0XHRhIHtcclxuXHRcdFx0XHQgICY6aG92ZXIsXHJcblx0XHRcdFx0ICAmOnZpc2l0ZWQge1xyXG5cdFx0XHRcdFx0Y29sb3I6ICMzMzMzMzM7XHJcblx0XHRcdFx0XHRjdXJzb3I6IGRlZmF1bHQ7XHJcblx0XHRcdFx0XHRmb250LWZhbWlseTogJGZvbnQtbGlnaHQ7XHJcblx0XHRcdFx0ICB9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQgIH1cclxuXHJcblx0XHRcdCAgYSB7XHJcblx0XHRcdFx0cGFkZGluZzogMDtcclxuXHRcdFx0ICB9XHJcblx0XHRcdH1cclxuXHRcdCAgfVxyXG5cdFx0fVxyXG5cdCAgfVxyXG4gIFx0fVxyXG59IiwiLmhlYWRlciB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgY29sb3I6ICRyZWQ7XHJcbiAgZm9udC1zaXplOiAkZm9udHMtbmF2LWxhbmc7XHJcbiAgbGVmdDogMDtcclxuICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgcmlnaHQ6IDA7XHJcbiAgdG9wOiAwO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIHotaW5kZXg6IDk5OTk5O1xyXG4gIFxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpe1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xyXG4gICAgZm9udC1zaXplOiAyMHB4O1xyXG4gICAgaGVpZ2h0OiAxMjBweDtcclxuICB9XHJcblxyXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KzEpe1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xyXG4gICAgZm9udC1zaXplOiAyMHB4O1xyXG4gICAgaGVpZ2h0OiAxMjBweDtcclxuICB9XHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldC1sYW5kMikge1xyXG4gICAgZm9udC1zaXplOiAkZm9udHMtbWFpbi1uYXY7XHJcbiAgfVxyXG5cclxuICAuaGVhZGVyX19jb250ZW50IHtcclxuICAgIEBpbmNsdWRlIGZsZXhib3gocm93LCB3cmFwLCBzcGFjZS1iZXR3ZWVuLCBjZW50ZXIpO1xyXG5cclxuICAgIHBhZGRpbmc6IDA7XHJcblxyXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldCkge1xyXG4gICAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICAgIHBhZGRpbmc6IDQzcHggNXB4IDQ2cHg7XHJcbiAgICB9XHJcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0LWxhbmQyKSB7XHJcbiAgICAgIHBhZGRpbmctbGVmdDogMDtcclxuICAgICAgcGFkZGluZy1yaWdodDogMDtcclxuICAgICAgLy8gcGFkZGluZy10b3A6IDMzcHg7XHJcbiAgICB9XHJcblxyXG4gICAgLnRpdGxlLWJhciB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICAgICAgY29sb3I6ICRyZWQ7XHJcblx0ICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICBmb250LXNpemU6ICRmb250cy1uYXYtc21hbGw7XHJcbiAgICAgIHBhZGRpbmc6IDE4cHggMjBweDtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpIHtcclxuICAgICAgICBodG1sLm5vLWpzICYge1xyXG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxpIHtcclxuICAgICAgICBhIHtcclxuICAgICAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHAge1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC50aXRsZS1iYXItdGl0bGUge1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuODtcclxuXHJcbiAgICAgICAgLnRpdGxlLWJhci10aXRsZS0tYm9sZCB7XHJcbiAgICAgICAgICBmb250LXNpemU6ICRmb250cy1uYXYtc21hbGw7XHJcbiAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcclxuXHRcdCAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAubG9nby1zbWFsbCB7XHJcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0XHRmbG9hdDogcmlnaHQ7XHJcblx0XHRtYXJnaW4tdG9wOiAzcHg7XHJcbiAgICAgICAgd2lkdGg6IDg4cHg7XHJcblx0XHRpbWcge1xyXG5cdFx0ICBtYXgtaGVpZ2h0OiAzMHB4O1xyXG5cdFx0fVxyXG4gICAgICB9XHJcblxyXG4gICAgICBidXR0b24ge1xyXG4gICAgICAgIG1hcmdpbjogOXB4IDIwcHggNXB4IDA7XHJcbiAgICAgICAgd2lkdGg6IDI3cHg7XHJcblxyXG4gICAgICAgICYubWVudS1pY29uOjphZnRlciB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcmVkO1xyXG4gICAgICAgICAgYm94LXNoYWRvdzogMCA3cHggMCAkcmVkLCAwIDE0cHggMCAkcmVkO1xyXG4gICAgICAgICAgaGVpZ2h0OiAzcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLm5hdiB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRyZWQ7XHJcbiAgICAgIGZsb2F0OiBsZWZ0O1xyXG4gICAgICBtaW4taGVpZ2h0OiA1NjBweDtcclxuICAgICAgcGFkZGluZzogNy41cHggMTVweCA1MHB4IDE1cHg7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG5cdCAgQGluY2x1ZGUgZmxleC1kaXJlY3Rpb24oY29sdW1uKTtcclxuXHQgIEBpbmNsdWRlIGZsZXgtanVzdGlmeShmbGV4LXN0YXJ0KTtcclxuXHQgIGZsZXgtd3JhcDogbm93cmFwO1xyXG5cdCAgb3ZlcmZsb3cteTogYXV0bztcclxuXHQgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHQgIHRvcDogNjZweDtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggLSA2NnB4KTtcclxuXHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XHJcbiAgICAgICAgcGFkZGluZy10b3A6IDA7XHJcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xyXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xyXG4gICAgICAgIG1pbi1oZWlnaHQ6IGF1dG87XHJcblx0XHRtaW4taGVpZ2h0OiBpbml0aWFsO1xyXG4gICAgICAgIHdpZHRoOiA4NSU7XHJcblx0XHRwb3NpdGlvbjogc3RhdGljO1xyXG5cdFx0b3ZlcmZsb3cteTogdmlzaWJsZTtcclxuXHRcdEBpbmNsdWRlIGZsZXgtZGlyZWN0aW9uKHJvdyk7XHJcbiAgICBAaW5jbHVkZSBmbGV4LWp1c3RpZnkoc3BhY2UtYmV0d2Vlbik7XHJcbiAgICBtaW4taGVpZ2h0OiBhdXRvO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0LWxhbmQyKSB7XHJcbiAgICAgICAgd2lkdGg6IDgzJTtcclxuICAgICAgfVxyXG5cclxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LWxhcHRvcCkge1xyXG4gICAgICAgIHdpZHRoOiA4NiU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHVsIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcmVkO1xyXG4gICAgICAgIGNvbG9yOiAkd2hpdGU7XHJcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldCkge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLnRvcC1iYXItbGVmdCB7XHJcbiAgICAgICAgZmxleDogMCAwIGF1dG87XHJcbiAgICAgICAgb3JkZXI6IDI7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpIHtcclxuICAgICAgICAgIG9yZGVyOiAwO1xyXG4gICAgICAgICAgd2lkdGg6IGF1dG87XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAudG9wLWJhcl9fc2VydmljZS1tZW51IHtcclxuICAgICAgICAgIHBhZGRpbmctdG9wOiAwO1xyXG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldCkge1xyXG4gICAgICAgICAgICAvLyBwYWRkaW5nLXRvcDogNXB4O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLnN1Ym1lbnUge1xyXG5cdFx0XHRAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0IGRvd24pIHtcclxuXHRcdFx0ICBkaXNwbGF5OiBub25lO1xyXG5cdFx0XHR9XHJcblxyXG4gICAgICAgICAgICAmLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xyXG4gICAgICAgICAgICAgIGxlZnQ6IDUwJTtcclxuICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xyXG4gICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XHJcbiAgICAgICAgICAgICAgdG9wOiAxMTQlO1xyXG5cclxuICAgICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA1NHB4O1xyXG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldC1sYW5kMikge1xyXG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNDhweDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgJi50b3AtYmFyX19zZXJ2aWNlLW1lbnVfX3NlYXJjaCB7XHJcbiAgICAgICAgICAgICAgICBtaW4td2lkdGg6IDMwMHB4O1xyXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01JSk7XHJcbiAgICAgICAgICAgICAgICBsZWZ0OiAwO1xyXG5cclxuICAgICAgICAgICAgICAgICY6YWZ0ZXIge1xyXG4gICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XHJcbiAgICAgICAgICAgICAgICAgIGxlZnQ6IDUlOyAgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLnRvcC1iYXJfX3NlcnZpY2UtbWVudV9faXRlbXtcclxuICAgICAgICAgICAgYXtcclxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoXCIuLy4uL2hlbHNhbmEvYXNzZXRzL3N2Zy9IZWxzYW5hX0dCX0Ryb3Bkb3duMi5zdmdcIikgbm8tcmVwZWF0IHJpZ2h0IDAgYm90dG9tIDVweDtcclxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDI1cHg7XHJcbiAgICAgICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQgY2VudGVyO1xyXG4gICAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpIHtcclxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHVsIGxpIGF7XHJcbiAgICAgICAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgJjpmaXJzdC1vZi10eXBle1xyXG4gICAgICAgICAgICAgIGF7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOm5vbmU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAudG9wLWJhcl9fc2VydmljZS1tZW51X19pdGVtX19pbWFnZXtcclxuICAgICAgICAgICAgZmxvYXQ6bGVmdDtcclxuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7XHJcbiAgICAgICAgICAgIHdpZHRoOiAyMXB4O1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC50b3AtYmFyX19zZXJ2aWNlLW1lbnVfX2xhbmd1YWdlcyB7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnRzLW5hdi1sYW5nO1xyXG5cclxuICAgICAgICAgICAgLnRvcC1iYXJfX3NlcnZpY2UtbWVudV9fbGFuZ3VhZ2VzX19saW5rIHtcclxuICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgICAgICAgcGFkZGluZy10b3A6MTBweDtcclxuICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcclxuXHJcbiAgICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldCkge1xyXG4gICAgICAgICAgICAgICAgcGFkZGluZy10b3A6MHB4O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLnRvcC1iYXJfX3NlcnZpY2UtbWVudV9fbGFuZ3VhZ2VzX19sYW5nIHtcclxuICAgICAgICAgICAgICBmbG9hdDogbGVmdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpbWd7XHJcbiAgICAgICAgICAgICAgZGlzcGxheTpibG9jaztcclxuICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6NXB4O1xyXG5cclxuICAgICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiR3aGl0ZTtcclxuICAgICAgICAgICAgICAgIGRpc3BsYXk6YmxvY2s7XHJcbiAgICAgICAgICAgICAgICBmbG9hdDpsZWZ0O1xyXG4gICAgICAgICAgICAgICAgcG9zaXRpb246aW5pdGlhbDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgJi50b3AtYmFyX19zZXJ2aWNlLW1lbnVfX2xhbmd1YWdlc19fbGFuZy0taGlkZU9uU2NyZWVue1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgICAgICAgICAgICAgICAgIGRpc3BsYXk6bm9uZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC50b3AtYmFyX19zZXJ2aWNlLW1lbnVfX2xhbmd1YWdlc19faXRlbSxcclxuICAgICAgICAgIC50b3AtYmFyX19zZXJ2aWNlLW1lbnVfX2Rvd25sb2Fkc19faXRlbSB7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnRzLXN1Yi1uYXYtc21hbGw7XHJcbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpIHtcclxuICAgICAgICAgICAgICBmb250LXNpemU6ICRmb250cy1zdWItbmF2O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGEge1xyXG4gICAgICAgICAgICAgIHBhZGRpbmc6IDEycHggMHB4O1xyXG4gICAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpIHtcclxuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDNweCAzMHB4O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC5zZWFyY2h7XHJcbiAgICAgICAgICAgIHdpZHRoOiA4MyU7XHJcbiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvO1xyXG5cclxuICAgICAgICAgICAgaW5wdXQge1xyXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRyZWQ7XHJcbiAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMDtcclxuICAgICAgICAgICAgICBib3JkZXItdG9wOiBub25lO1xyXG4gICAgICAgICAgICAgIGJvcmRlci1sZWZ0OiBub25lO1xyXG4gICAgICAgICAgICAgIGJvcmRlci1yaWdodDogbm9uZTtcclxuICAgICAgICAgICAgICBjb2xvcjogJHdoaXRlO1xyXG4gICAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnRzLXN1Yi1uYXY7XHJcbiAgICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xyXG4gICAgICAgICAgICAgIC8vIG1hcmdpbi1sZWZ0OiAwcHg7XHJcbiAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgICAgICAgICAgIHBhZGRpbmc6MCAwIDEwcHggMDtcclxuICAgICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xyXG4gICAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpIHtcclxuICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkb3JhbmdlO1xyXG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udHMtbWFpbi1uYXY7XHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDUwcHg7XHJcbiAgICAgICAgICAgICAgICAvLyBtYXJnaW4tbGVmdDogMzBweDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC5zZWFyY2gtcGxhY2Vob2xkZXJ7XHJcbiAgICAgICAgICAgIGJvcmRlcjpub25lO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAuaGlkZU9uLWxhcmdlLXNjcmVlbiB7XHJcbiAgICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldCkge1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLmhpZGVPbi1zbWFsbC1zY3JlZW4ge1xyXG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAudG9wLWJhci1jZW50ZXIge1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG5cclxuICAgICAgICAudG9wLWJhcl9fbWFpbi1tZW51IHtcclxuICAgICAgICAgID4gbGkge1xyXG4gICAgICAgICAgICBhIHtcclxuICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7XHJcbiAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMjBweDtcclxuICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgICAgICAgICAgICAgICB3aWR0aDogYXV0bztcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldC1sYW5kMikge1xyXG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAzMHB4O1xyXG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMzBweDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgJi5pcy1kcm9wZG93bi1zdWJtZW51LXBhcmVudCB7XHJcbiAgICAgICAgICAgICAgdWwuZmlyc3Qtc3ViIHtcclxuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpIHtcclxuICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgICAgICAgICB0b3A6IDc2cHg7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldC1sYW5kMikge1xyXG4gICAgICAgICAgICAgICAgICB0b3A6IDMwcHg7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgbGVmdDogNTAlO1xyXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xyXG4gICAgICAgICAgICAgICAgcmlnaHQ6IGF1dG87XHJcblxyXG4gICAgICAgICAgICAgICAgPiBsaSxcclxuICAgICAgICAgICAgICAgIGEge1xyXG4gICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICYuY3VycmVudC1tZW51LWFuY2VzdG9yIHtcclxuICAgICAgICAgICAgICAgID4gYSB7XHJcblx0XHRcdFx0ICBcdGZvbnQtZmFtaWx5OiAkZm9udC1ib2xkO1xyXG5cdFx0XHRcdCAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuXHRcdFx0Ji5pcy1hY2NvcmRpb24tc3VibWVudS1wYXJlbnQge1xyXG5cdFx0XHQgICYuY3VycmVudC1tZW51LWFuY2VzdG9yIHtcclxuXHRcdFx0XHQ+IGEge1xyXG5cdFx0XHRcdCAgZm9udC1mYW1pbHk6ICRmb250LWJvbGQ7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQgIH1cclxuXHRcdFx0fVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLnRvcC1iYXJfX21haW4tbWVudV9faXRlbSB7XHJcbiAgICAgICAgICAgIGF7XHJcbiAgICAgICAgICAgICAgYmFja2dyb3VuZDogdXJsKFwiLi8uLi9oZWxzYW5hL2Fzc2V0cy9zdmcvSGVsc2FuYV9HQl9Ecm9wZG93bjIuc3ZnXCIpIG5vLXJlcGVhdCByaWdodCAwIGJvdHRvbSA4cHg7XHJcbiAgICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiAyNXB4O1xyXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IGNlbnRlcjtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB1bCBsaSBhe1xyXG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICY6Zmlyc3Qtb2YtdHlwZXtcclxuICAgICAgICAgICAgICBhe1xyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDpub25lO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLnRvcC1iYXJfX21haW4tbWVudV9fbGluayB7XHJcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2IoMjAzLCAxMzMsIDE2MCk7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggMDtcclxuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldCkge1xyXG5cdFx0XHQgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkd2hpdGU7XHJcbiAgICAgICAgICAgICAgcGFkZGluZzogMCAyNXB4IDAgMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLm1lbnUge1xyXG4gICAgICAgICYuYWxpZ24tY2VudGVyIHtcclxuICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpIHtcclxuICAgICAgICAgICAgZmxleC13cmFwOiBub3dyYXA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsaSB7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgPiBsaSB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgbGkge1xyXG4gICAgICAgICAgYSB7XHJcblx0XHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2IoMjAzLCAxMzMsIDE2MCk7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggMDtcclxuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldCkge1xyXG4gICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XHJcbiAgICAgICAgICAgICAgcGFkZGluZzogMCAxNXB4O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAmLnRvcC1iYXJfX3NlcnZpY2UtbWVudV9fem9vbWNvbnRhaW5lcl9fbGluayB7XHJcbiAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICYudG9wLWJhcl9fc2VydmljZS1tZW51X196b29tY29udGFpbmVyX19saW5rLFxyXG4gICAgICAgICAgICAmLnRvcC1iYXJfX3NlcnZpY2UtbWVudV9fZG93bmxvYWRzX19saW5rIHtcclxuICAgICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogMHB4O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLmxhbmctbmF2aSB7XHJcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBcIkFra3VyYXQtUmVndWxhckJvbGRcIjtcclxuICAgICAgICAgICAgLy8gZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpIHtcclxuICAgICAgICAgICAgICBmb250LXNpemU6IDIwcHg7XHJcbiAgICAgICAgICAgICAgLy8gcGFkZGluZy10b3A6IDJweDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLnRvcC1iYXJfX21haW4tbWVudV9fYmVyaWNodCB7XHJcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xyXG5cdFx0XHRAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0IGRvd24pIHtcclxuXHRcdFx0ICBkaXNwbGF5OiBub25lO1xyXG5cdFx0XHQgIG1hcmdpbi10b3A6IDA7XHJcblx0XHRcdCAgcG9zaXRpb246IHN0YXRpYztcclxuXHRcdFx0ICB3aWR0aDogYXV0bztcclxuXHRcdFx0fVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICA+IGxpIHtcclxuICAgICAgICAgID4gYSB7XHJcbiAgICAgICAgICAgIGNvbG9yOiAkd2hpdGU7XHJcbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpIHtcclxuICAgICAgICAgICAgICBjb2xvcjogJHJlZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgICAgICAvLyBjb2xvcjogJG9yYW5nZTtcclxuICAgICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjogJHJlZDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC5pcy1zdWJtZW51LWl0ZW0ge1xyXG4gICAgICAgICAgICAmLnRvcC1iYXJfX21haW4tbWVudV9fbWVudV9pdGVtIHtcclxuICAgICAgICAgICAgICBmb250LXNpemU6ICRmb250cy1zdWItbmF2LXNtYWxsO1xyXG4gICAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpIHtcclxuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnRzLXN1Yi1uYXY7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGEge1xyXG4gICAgICAgICAgICAgICAgcGFkZGluZzogMTJweCAwO1xyXG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldCkge1xyXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAzcHggMzBweDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPiBhIHtcclxuICAgICAgICAgICAgICBjb2xvcjogJHdoaXRlO1xyXG4gICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQyODU3O1xyXG4gICAgICAgICAgICAgIHBhZGRpbmc6IDNweCAzMHB4O1xyXG4gICAgICAgICAgICAgICY6aG92ZXIge1xyXG4gICAgICAgICAgICAgICAgLy8gY29sb3I6ICRvcmFuZ2U7XHJcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAkZm9udC1ib2xkO1xyXG4gICAgICAgICAgICAgICAgICBjb2xvcjogJHdoaXRlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgXHRcdFx0YS5jdXJyZW50LW1lbnUtaXRlbSAge1xyXG4gICAgICBcdFx0XHRcdGZvbnQtZmFtaWx5OiAkZm9udC1ib2xkO1xyXG4gICAgICBcdFx0XHR9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAudG9wLWJhcl9fbWFpbi1tZW51X19saW5rLS1hY3RpdmV7XHJcbiAgICAgICAgICBmb250LWZhbWlseTogJGZvbnQtYm9sZDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLmRyb3Bkb3duIHtcclxuICAgICAgICAmLm1lbnUge1xyXG4gICAgICAgICAgJi5tZWRpdW0taG9yaXpvbnRhbCB7XHJcbiAgICAgICAgICAgID4gbGkge1xyXG4gICAgICAgICAgICAgICYuaXMtZHJvcGRvd24tc3VibWVudS1wYXJlbnQge1xyXG4gICAgICAgICAgICAgICAgPiBhOjphZnRlciB7XHJcbiAgICAgICAgICAgICAgICAgIGJvcmRlci10b3Atc3R5bGU6IG5vbmU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA+IGEge1xyXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxOHB4O1xyXG4gICAgICAgICAgICAgICAgICAmLnRvcC1iYXJfX21haW4tbWVudV9fbGluayB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxOHB4O1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMThweDtcclxuICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0LWxhbmQyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAzMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAzMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAuc3VibWVudSB7XHJcbiAgICAgICAgJi5pcy1kcm9wZG93bi1zdWJtZW51IHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRyZWQ7XHJcbiAgICAgICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgICAgICBmb250LXNpemU6ICRmb250cy1zdWItbmF2LXNtYWxsO1xyXG4gICAgICAgICAgbWFyZ2luLXRvcDogNTJweDtcclxuICAgICAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICAgICAgICB3aWR0aDogYXV0bztcclxuICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnRzLXN1Yi1uYXY7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDIwcHggMDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQtbGFuZDIpIHtcclxuICAgICAgICAgICAgbWFyZ2luLXRvcDogNDRweDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICBcclxuICAgICAgICB9XHJcbiAgICAgICAgJi50b3AtYmFyX19zZXJ2aWNlLW1lbnVfX2xhbmd1YWdlc19fc3VibWVudSB7XHJcbiAgICAgICAgICBtaW4td2lkdGg6IGluaGVyaXQ7XHJcbiAgICAgICAgICB0b3A6IC05cHg7XHJcbiAgICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpIHtcclxuICAgICAgICAgICAgbWluLXdpZHRoOiA4NnB4O1xyXG4gICAgICAgICAgICAvLyB3aWR0aDogOTBweDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgJi5pcy1kcm9wZG93bi1zdWJtZW51OjphZnRlciB7XHJcbiAgICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICRyZWQgdHJhbnNwYXJlbnQ7XHJcbiAgICAgICAgICBib3JkZXItd2lkdGg6IDIwcHg7XHJcbiAgICAgICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG4gICAgICAgICAgYm9yZGVyLXRvcDogMHB4IHNvbGlkIHRyYW5zcGFyZW50O1xyXG4gICAgICAgICAgY29udGVudDogJyc7XHJcbiAgICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgdG9wOiAtMjBweDtcclxuICAgICAgICAgIGxlZnQ6IDUwJTtcclxuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcclxuICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpIHtcclxuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnRvcC1iYXItcmlnaHQge1xyXG4gICAgICBmbG9hdDogbGVmdDtcclxuICAgICAgcGFkZGluZy10b3A6IDJweDtcclxuICAgICAgd2lkdGg6IDE0JTtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICB6LWluZGV4OiA1O1xyXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0LWxhbmQyKSB7XHJcbiAgICAgICAgd2lkdGg6IDE0JTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmxvZ28ge1xyXG4gICAgICAgIG1hcmdpbi10b3A6IDBweDtcclxuICAgICAgICB3aWR0aDogMTEzcHg7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IC0ycHg7XHJcblx0XHRpbWcge1xyXG5cdFx0ICAvLyBtYXgtaGVpZ2h0OiA1NHB4O1xyXG5cdFx0fVxyXG5cclxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0LWxhbmQyKSB7XHJcbiAgICAgICAgICB3aWR0aDogMTYwcHg7XHJcbiAgICAgICAgICBtYXJnaW4tdG9wOiAwcHg7XHJcbiAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LWxhcHRvcCkge1xyXG4gICAgICAgICAgbWFyZ2luLWxlZnQ6IC0xcHg7XHJcbiAgICAgICAgICAvLyBoZWlnaHQ6IDU0cHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbi5hY2NvcmRpb24tbWVudSAuaXMtYWNjb3JkaW9uLXN1Ym1lbnUtcGFyZW50Om5vdCguaGFzLXN1Ym1lbnUtdG9nZ2xlKT5hOjphZnRlcntcclxuICBkaXNwbGF5Om5vbmU7XHJcbn1cclxuXHJcbi50b3AtYmFyLWxlZnQge1xyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQtbGFuZDIpIHtcclxuICAgIC8vIG1hcmdpbi10b3A6IDJweDtcclxuICB9XHJcbn1cclxuXHJcbi8vIHRvIGF2b2lkIGZsYXNoIG9mIHVuc3R5bGVkIGNvbnRlbnQgKHN1Ym1lbnVzKSBvbiBwYWdlIGxvYWRcclxuLm5vLWpzIHtcclxuICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtcGhvbmUtbGFyZ2UgZG93bikge1xyXG4gICAgLnRvcC1iYXIge1xyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldCkge1xyXG4gICAgLnRpdGxlLWJhciB7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5odG1sOm5vdCgucGFnZS1sb2FkZWQpIHtcclxuICBoZWFkZXIge1xyXG4gICAgdWwge1xyXG4gICAgICA+IGxpIHtcclxuICAgICAgICA+IHVsIHtcclxuICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnRpdGxlLWJhciB7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLnRvcC1iYXItY2VudGVyIHtcclxuICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBsZWZ0OiAtMjdweDtcclxuICB9XHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldC1sYW5kMikge1xyXG4gICAgbGVmdDogLTEzcHg7XHJcbiAgfVxyXG59XHJcbi5oZWFkZXIgLmhlYWRlcl9fY29udGVudCAubmF2IC5kcm9wZG93bi5tZW51Lm1lZGl1bS1ob3Jpem9udGFsID4gbGkuaXMtZHJvcGRvd24tc3VibWVudS1wYXJlbnQgPiBhLnRvcC1iYXJfX21haW4tbWVudV9fbGluayxcclxuLmhlYWRlciAuaGVhZGVyX19jb250ZW50IC5uYXYgLnRvcC1iYXItY2VudGVyIC50b3AtYmFyX19tYWluLW1lbnUgLnRvcC1iYXJfX21haW4tbWVudV9fbGluayB7XHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldCkge1xyXG4gICAgcGFkZGluZy1yaWdodDogMjBweDtcclxuICAgIHBhZGRpbmctbGVmdDogMjBweDtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHRvcDogLTJweDtcclxuICB9XHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldC1sYW5kMikge1xyXG4gICAgcGFkZGluZy1yaWdodDogMzBweDtcclxuICAgIHBhZGRpbmctbGVmdDogMzBweDtcclxuICAgIHRvcDogMDtcclxuICB9XHJcbn1cclxuXHJcbi53aGl0ZS1wbGFjZWhvbGRlciB7XHJcbiAgY29sb3I6IHdoaXRlO1xyXG59XHJcblxyXG4uaGVhZGVyIC5oZWFkZXJfX2NvbnRlbnQgLm5hdiAudG9wLWJhci1sZWZ0IC50b3AtYmFyX19zZXJ2aWNlLW1lbnUgLnRvcC1iYXJfX3NlcnZpY2UtbWVudV9fbGFuZ3VhZ2VzIGltZy50b3AtYmFyX19zZXJ2aWNlLW1lbnVfX2xhbmd1YWdlc19fbGFuZyB7XHJcbiAgZGlzcGxheTogbm9uZTtcclxuICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KXtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gIH0gIFxyXG59XHJcblxyXG4ubGFuZy1uYXZpLnRvcC1iYXJfX3NlcnZpY2UtbWVudV9fbGFuZ3VhZ2VzX19sYW5ne1xyXG4gIEBpbmNsdWRlIGZsZXhib3gocm93LCB3cmFwLCBmbGV4LXN0YXJ0LCBjZW50ZXIpO1xyXG59XHJcblxyXG4uaGVhZGVyIC5oZWFkZXJfX2NvbnRlbnQgLm5hdiAudG9wLWJhci1sZWZ0IC50b3AtYmFyX19zZXJ2aWNlLW1lbnUgLnRvcC1iYXJfX3NlcnZpY2UtbWVudV9fbGFuZ3VhZ2VzIC50b3AtYmFyX19zZXJ2aWNlLW1lbnVfX2xhbmd1YWdlc19fbGluayxcclxuLnRvcC1iYXJfX3NlcnZpY2UtbWVudV9faXRlbS5pcy1hY2NvcmRpb24tc3VibWVudS1wYXJlbnQge1xyXG4gIEBpbmNsdWRlIGZsZXhib3gocm93LCB3cmFwLCBzcGFjZS1iZXR3ZWVuLCBjZW50ZXIpO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG5cclxuICBhLFxyXG4gIHVsIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gIH1cclxufSIsIi5ucy1hY2NvcmRpb24tY29udGFpbmVyIHtcclxuICAgIG1heC13aWR0aDogODIwcHg7XHJcbiAgICBtYXJnaW46IDAgYXV0bztcclxufVxyXG5cclxuLmFjY29yZGlvbiB7XHJcblx0Ji1jbGljay1hcmVhIHtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG5cdCAgJi5vcGVuIHtcclxuXHRcdD4gaDIge1xyXG5cdFx0ICAmOmFmdGVyIHtcclxuXHRcdFx0QGluY2x1ZGUgdHJhbnNmb3Jtcyhyb3RhdGUoLTE4MGRlZykpO1xyXG5cdFx0ICB9XHJcblx0XHR9XHJcblx0ICB9XHJcblx0fVxyXG5cclxuXHJcbiAgICAmLXRpdGxlIHtcclxuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGdyZXktYWNjb3JkaW9uLWJvcmRlcjtcclxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgZm9udC1mYW1pbHk6ICRmb250LWJvbGQ7XHJcbiAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxOHB4KTtcclxuICAgICAgICBtYXJnaW46IDA7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcclxuICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xyXG5cclxuICAgICAgICAmOmhvdmVyLFxyXG4gICAgICAgICY6Zm9jdXMge1xyXG4gICAgICAgICAgICBjb2xvcjogJGJsYWNrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjpmb2N1cyB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRncmV5LWFjY29yZGlvbi1ob3ZlcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjphZnRlciB7XHJcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnLi8uLi9oZWxzYW5hL2Fzc2V0cy9zdmcvSGVsc2FuYV9HQl9Ba2tvcmRlb24uc3ZnJyk7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcclxuICAgICAgICAgICAgd2lkdGg6IHJlbS1jYWxjKDI1cHgpO1xyXG4gICAgICAgICAgICBoZWlnaHQ6IHJlbS1jYWxjKDI1cHgpO1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgICByaWdodDogcmVtLWNhbGMoMnB4KTtcclxuICAgICAgICAgICAgYm90dG9tOiByZW0tY2FsYygxNXB4KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJi1pbm5lciB7XHJcblx0ICBwYWRkaW5nOiByZW0tY2FsYygxNXB4IDE1cHggMjVweCAxNXB4KTtcclxuXHJcblx0ICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcblx0XHRwYWRkaW5nOiByZW0tY2FsYygxNXB4IDMwcHggMjVweCAzMHB4KTtcclxuXHQgIH1cclxuXHJcbiAgICAgICAgPiAqIHtcclxuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XHJcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcclxuICAgICAgICB9XHJcblxyXG5cdCAgLmVtYmVkLWNvbnRhaW5lciB7XHJcblx0XHRtYXgtd2lkdGg6IDgyMHB4O1xyXG5cdCAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5ib2R5W2NsYXNzKj1cImNhdGVnb3J5LW5vdGVzXCJdIHtcclxuICAubnMtYWNjb3JkaW9uLWNvbnRhaW5lciB7XHJcblx0PiAqIHtcclxuXHQgIG1hcmdpbi1sZWZ0OiAwO1xyXG5cdCAgbWFyZ2luLXJpZ2h0OiAwO1xyXG5cdH1cclxuICB9XHJcblxyXG4gIC5jYXRlZ29yeS10aXRsZSB7XHJcblx0bWF4LXdpZHRoOiA4MjBweDtcclxuXHRtYXJnaW4tbGVmdDogYXV0bztcclxuXHRtYXJnaW4tcmlnaHQ6IGF1dG87XHJcbiAgfVxyXG59XHJcblxyXG4vKiBOT1RFUyBORVcgU1RVRkYgKi9cclxuXHJcbi8qIG92ZXJ3cml0aW5nIHBsdWdpbiAqL1xyXG4ubmhzbm90ZS1ib3hfX2JhY2tncm91bmQge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgfVxyXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogMTAwJTtcclxufVxyXG5cclxuLm5oc25vdGUtYm94X19pbm5lciB7XHJcbiAgdG9wOiA2NnB4O1xyXG4gIGxlZnQ6IDA7XHJcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI0Y5RjlGODtcclxuICBvdmVyZmxvdzogdmlzaWJsZTtcclxuICBwYWRkaW5nOiAgMzBweCAzMHB4IDgwcHggMzBweDtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDY2cHgpO1xyXG4gIHBvc2l0aW9uOiBmaXhlZDtcclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldCkge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgd2lkdGg6ICRpbm5lci1jb250YWluZXItd2lkdGgtbDtcclxuICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xyXG4gICAgYm94LXNoYWRvdzogMCAxMHB4IDIwcHggcmdiYShibGFjaywgMC4yKTtcclxuICAgIG1hcmdpbi10b3A6IDQwcHg7XHJcbiAgICBtYXgtaGVpZ2h0OiA0MHZoO1xyXG4gICAgaGVpZ2h0OiBhdXRvO1xyXG4gICAgcGFkZGluZzogMzBweDtcclxuICB9XHJcbn1cclxuXHJcbi5ub3RlLXNtYWxsIHtcclxuICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgICB3aWR0aDogNTIwcHg7XHJcbiAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgfVxyXG59XHJcblxyXG4ubmhzbm90ZS1ib3gge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICBtYXJnaW4tdG9wOiAtNy41cmVtO1xyXG4gIHBhZGRpbmctYm90dG9tOiA3LjVyZW07XHJcbn1cclxuXHJcbi5uaHNub3RlLWJveF9fY2xvc2Uge1xyXG4gIHRvcDogMzBweDtcclxuICByaWdodDogMzBweDtcclxuICBjb2xvcjogJHJlZDtcclxuICBvcGFjaXR5OiAxO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICB3aWR0aDogMjVweDtcclxuICBoZWlnaHQ6IDI1cHg7XHJcbn1cclxuXHJcbi5uaHNub3RlLWJveF9fY29udGVudCB7XHJcbiAgcGFkZGluZzogMDtcclxuICBvdmVyZmxvdy15OiB2aXNpYmxlO1xyXG4gIG92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XHJcbiAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xyXG4gIG1heC13aWR0aDogMTAwJTtcclxuICBtYXgtaGVpZ2h0OiAxMDAlO1xyXG5cclxuICAjY29udGVudCB7XHJcbiAgICBkaXY6Zmlyc3Qtb2YtdHlwZSgpLmVtYmVkLWNvbnRhaW5lciB7XHJcbiAgICAgIG1hcmdpbi10b3A6IDIwcHg7XHJcbiAgICB9XHJcbiAgXHJcbiAgICBkaXY6Zmlyc3Qtb2YtdHlwZSg6bm90KC5lbWJlZC1jb250YWluZXIpKXtcclxuICAgICAgbWFyZ2luLXRvcDogMDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuLyogb3ZlcndyaXRpbmcgcGx1Z2luIGVuZCAqL1xyXG5cclxuLm5oc25vdGUge1xyXG4gIC8vIHBvc2l0aW9uOiBmaXhlZDtcclxuICBvdmVyZmxvdzogdmlzaWJsZTtcclxuICAvLyBwYWRkaW5nOiAxNXB4IDMwcHggMzBweCAzMHB4O1xyXG4gIHRvcDogNjZweDsgLy8gb3ZlcndyaXRlIGpzIGlubGluZSBzdHlsZXNcclxuICBsZWZ0OiAwOyAgLy8gb3ZlcndyaXRlIGpzIGlubGluZSBzdHlsZXNcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgYmFja2dyb3VuZDogI0Y5RjlGODtcclxuICBAaW5jbHVkZSBmbGV4Ym94KHJvdywgd3JhcCwgc3BhY2UtYmV0d2VlbiwgY2VudGVyKTtcclxuXHJcbiAgLmVtYmVkLWNvbnRhaW5lciB7XHJcbiAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIC8vIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDtcclxuXHJcbiAgICAubnMtdGFibGUge1xyXG4gICAgICBtaW4td2lkdGg6IDEwMCU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX190aXRsZSB7XHJcbiAgICBtYXJnaW4tbGVmdDogMDtcclxuICAgIG1hcmdpbi1yaWdodDogMDtcclxuICAgIGNvbG9yOiAkYmx1ZTtcclxuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTRweCk7XHJcbiAgICBmb250LWZhbWlseTogJGZvbnQtYm9sZDtcclxuICAgIC8vIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDQ1cHgpO1xyXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldCkge1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5ucy10aXRsZS1oMjpmaXJzdC1vZi10eXBle1xyXG4gICAgZGlzcGxheTogbm9uZTsgLy8gaGlkZSBmaXJzdCB0aXRsZSBiZWNhdXNlIGl0IGlzIHRoZSBzYW1lIGFzIHRpdGxlXHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgICB0b3A6IDA7XHJcbiAgICBtYXgtaGVpZ2h0OiA0MHZoO1xyXG4gICAgaGVpZ2h0OiBhdXRvO1xyXG4gICAgLy8gaGVpZ2h0OiBhdXRvO1xyXG4gICAgLy8gbWFyZ2luLXRvcDogNDBweCAhaW1wb3J0YW50O1xyXG4gICAgLy8gYm94LXNoYWRvdzogMCAxMHB4IDIwcHggcmdiYShibGFjaywgMC4yKTtcclxuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xyXG5cclxuICAgICY6bm90KC5uaHNub3RlLS1zbWFsbCkge1xyXG4gICAgICAvLyBtYXJnaW4tbGVmdDogY2FsYyg4MjBweCAtICN7JGlubmVyLWNvbnRhaW5lci13aWR0aC1sfSkgIWltcG9ydGFudDsgLy8gODIwcHggaXMgbWF4LXdpZHRoIG9mIHRhYmxlXHJcbiAgICB9XHJcblxyXG4gICAgJi0tc21hbGwge1xyXG4gICAgICAubm90ZS10cmlhbmdsZSB7XHJcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC02MiUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAubnMtdGl0bGUtaDIge1xyXG4gICAgbWFyZ2luLWxlZnQ6IDA7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XHJcbiAgICBjb2xvcjogJGJsdWU7XHJcbiAgICBmb250LXNpemU6IHJlbS1jYWxjKDE0cHgpO1xyXG4gICAgZm9udC1mYW1pbHk6ICRmb250LWJvbGQ7XHJcbiAgfVxyXG5cclxuICAuZW1iZWQtY29udGFpbmVyIGRpdiB0YWJsZSB0ciB0ZC5ucy1ib3JkZXJyaWdodC01LXNvbGlkLXBhcGVyLTAge1xyXG4gICAgYm9yZGVyLXJpZ2h0OiA1cHggc29saWQgI0Y5RjlGODtcclxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpIHtcclxuICAgICAgYm9yZGVyLXJpZ2h0OiA1cHggc29saWQgd2hpdGU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuZW1iZWQtY29udGFpbmVyIGRpdiB0YWJsZSB0cjpob3ZlciB0ZC5ucy1ib3JkZXJyaWdodC01LXNvbGlkLXBhcGVyLTAge1xyXG4gICAgYm9yZGVyLXJpZ2h0OiA1cHggc29saWQgI2U3ZTdlNztcclxuICB9XHJcblxyXG4gICZfX2NvbnRlbnQge1xyXG4gICAgcCxcclxuICAgIC5ucy1saXN0IHtcclxuICAgICAgbWFyZ2luLWxlZnQ6IDA7XHJcbiAgICAgIG1hcmdpbi1yaWdodDogMDtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTRweCk7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiByZW0tY2FsYygyMHB4KTtcclxuICAgIH1cclxuXHJcbiAgICAubnMtcGFyYWdyYXBoOmxhc3Qtb2YtdHlwZSxcclxuICAgIHA6bGFzdC1vZi10eXBlIHtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG5cclxuICAgIC5ucy1mb290bm90ZSB7XHJcbiAgICAgIGZvbnQtc2l6ZTogJGZvbnRzLWZvb3Rub3RlcztcclxuICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5ucy10aXRsZS1oMyxcclxuICAubnMtdGl0bGUtaDQge1xyXG4gICAgbWFyZ2luLWxlZnQ6IDA7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTRweCk7XHJcbiAgICBtYXJnaW4tdG9wOiAwO1xyXG4gIH1cclxufVxyXG5cclxuLm5vdGUtdHJpYW5nbGUge1xyXG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgd2hpdGUgdHJhbnNwYXJlbnQ7XHJcbiAgYm9yZGVyLXdpZHRoOiAyMHB4O1xyXG4gIGJvcmRlci1zdHlsZTogc29saWQ7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHRvcDogLTQwcHg7XHJcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDUxJSk7XHJcbn1cclxuXHJcbi5ub3RlLWluc2lkZSB7XHJcbiAgbWFyZ2luLXRvcDogMTVweDtcclxuICBvcmRlcjogOTk7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIG92ZXJmbG93LXk6IGF1dG87XHJcbiAgbWF4LWhlaWdodDogNjB2aDtcclxuICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgICBtYXgtaGVpZ2h0OiBjYWxjKDQwdmggLSAxMDVweCk7XHJcbiAgfVxyXG59XHJcblxyXG50YWJsZS5ucy10YWJsZSB7XHJcbiAgdHI6aG92ZXIge1xyXG4gICAgXHJcbiAgICAuaWNvbi1pbmZvIHtcclxuICAgICAgZmlsbDogJHJlZDtcclxuICAgIH1cclxuXHJcbiAgICAubm90ZV9fbGluazplbXB0eSB7XHJcbiAgICAgICY6YWZ0ZXIge1xyXG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMTUuNjg4IDE1LjY4OCcgZmlsbD0nJTIzOWEwOTQxJyAlM0UlM0NnIGlkPSdJbmZvX1NpZ24nIHRyYW5zZm9ybT0ndHJhbnNsYXRlKC01MzkuMzk1IC03NjEpJyUzRSUzQ3BhdGggaWQ9J1BmYWRfNTIxMicgZGF0YS1uYW1lPSdQZmFkIDUyMTInIGNsYXNzPSdjbHMtMScgZD0nTTcuODQ0LDBhNy44NDQsNy44NDQsMCwxLDAsNy44NDQsNy44NDRBNy44NTYsNy44NTYsMCwwLDAsNy44NDQsMFptLjIyNCwyLjkxM0ExLjI0OSwxLjI0OSwwLDEsMSw2LjgxOSw0LjE2MiwxLjIxMSwxLjIxMSwwLDAsMSw4LjA2OCwyLjkxM1pNOS42LDEyLjMyNkg2Ljg4M2EuOC44LDAsMCwxLDAtMS42aC42NFY4LjE2NGgtLjhhLjguOCwwLDAsMSwwLTEuNmgxLjZhLjc5My43OTMsMCwwLDEsLjguOHYzLjM2Mkg5LjZhLjguOCwwLDEsMSwwLDEuNlonIHRyYW5zZm9ybT0ndHJhbnNsYXRlKDUzOS4zOTQgNzYxKScvJTNFJTNDL2clM0UlM0Mvc3ZnJTNFXCIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAubm90ZV9fbGluazplbXB0eXtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIG1hcmdpbi1sZWZ0OiAxMnB4O1xyXG5cclxuICAgICY6YWZ0ZXIge1xyXG4gICAgICBjb250ZW50OiAnJztcclxuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAxNS42ODggMTUuNjg4JyBmaWxsPSclMjNkZGQnICUzRSUzQ2cgaWQ9J0luZm9fU2lnbicgdHJhbnNmb3JtPSd0cmFuc2xhdGUoLTUzOS4zOTUgLTc2MSknJTNFJTNDcGF0aCBpZD0nUGZhZF81MjEyJyBkYXRhLW5hbWU9J1BmYWQgNTIxMicgY2xhc3M9J2Nscy0xJyBkPSdNNy44NDQsMGE3Ljg0NCw3Ljg0NCwwLDEsMCw3Ljg0NCw3Ljg0NEE3Ljg1Niw3Ljg1NiwwLDAsMCw3Ljg0NCwwWm0uMjI0LDIuOTEzQTEuMjQ5LDEuMjQ5LDAsMSwxLDYuODE5LDQuMTYyLDEuMjExLDEuMjExLDAsMCwxLDguMDY4LDIuOTEzWk05LjYsMTIuMzI2SDYuODgzYS44LjgsMCwwLDEsMC0xLjZoLjY0VjguMTY0aC0uOGEuOC44LDAsMCwxLDAtMS42aDEuNmEuNzkzLjc5MywwLDAsMSwuOC44djMuMzYySDkuNmEuOC44LDAsMSwxLDAsMS42WicgdHJhbnNmb3JtPSd0cmFuc2xhdGUoNTM5LjM5NCA3NjEpJy8lM0UlM0MvZyUzRSUzQy9zdmclM0VcIik7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xyXG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgd2lkdGg6IDE1cHg7XHJcbiAgICAgIGhlaWdodDogMTVweDtcclxuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDJweCk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgICY6aG92ZXIsXHJcbiAgICAmLmFjdGl2ZSB7XHJcbiAgICAgICY6YWZ0ZXIge1xyXG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMTUuNjg4IDE1LjY4OCcgZmlsbD0nJTIzOWEwOTQxJyAlM0UlM0NnIGlkPSdJbmZvX1NpZ24nIHRyYW5zZm9ybT0ndHJhbnNsYXRlKC01MzkuMzk1IC03NjEpJyUzRSUzQ3BhdGggaWQ9J1BmYWRfNTIxMicgZGF0YS1uYW1lPSdQZmFkIDUyMTInIGNsYXNzPSdjbHMtMScgZD0nTTcuODQ0LDBhNy44NDQsNy44NDQsMCwxLDAsNy44NDQsNy44NDRBNy44NTYsNy44NTYsMCwwLDAsNy44NDQsMFptLjIyNCwyLjkxM0ExLjI0OSwxLjI0OSwwLDEsMSw2LjgxOSw0LjE2MiwxLjIxMSwxLjIxMSwwLDAsMSw4LjA2OCwyLjkxM1pNOS42LDEyLjMyNkg2Ljg4M2EuOC44LDAsMCwxLDAtMS42aC42NFY4LjE2NGgtLjhhLjguOCwwLDAsMSwwLTEuNmgxLjZhLjc5My43OTMsMCwwLDEsLjguOHYzLjM2Mkg5LjZhLjguOCwwLDEsMSwwLDEuNlonIHRyYW5zZm9ybT0ndHJhbnNsYXRlKDUzOS4zOTQgNzYxKScvJTNFJTNDL2clM0UlM0Mvc3ZnJTNFXCIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIC5pY29uLWluZm8ge1xyXG4gICAgZmlsbDogI2RkZDtcclxuICAgIHdpZHRoOiAxNXB4O1xyXG4gICAgaGVpZ2h0OiAxNXB4O1xyXG4gICAgbWFyZ2luLWxlZnQ6IDEycHg7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMnB4KTtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgZmlsbDogJHJlZC1kYXJrZXIgIWltcG9ydGFudDtcclxuICAgIH1cclxuXHJcbiAgICAmLmFjdGl2ZSB7XHJcbiAgICAgIGZpbGw6ICRyZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4ubm90ZXMtdGV4dCB7XHJcbiAgYSxcclxuICBhOmhvdmVyIHtcclxuICAgIGNvbG9yOiBpbmhlcml0O1xyXG4gICAgY3Vyc29yOiBkZWZhdWx0O1xyXG4gIH1cclxufVxyXG5cclxuLy8gQ0hBUlRTXHJcbnRhYmxlLm5zLXRhYmxlIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuXHJcbnRhYmxlLm5zLXRhYmxlIHRye1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHJcbiAgdGQge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG5cclxuICB9XHJcbiAgICAgIC5qcy10b2dnbGVyLWNvbnRhaW5lciB7XHJcbiAgICAgICAgJjphZnRlciB7XHJcbiAgICAgICAgICBjb250ZW50OiAnJztcclxuICAgICAgICAgIHdpZHRoOiA1MHB4O1xyXG4gICAgICAgICAgaGVpZ2h0OiA5OCU7XHJcbiAgICAgICAgICBsZWZ0OiAxMDAlO1xyXG4gICAgICAgICAgdG9wOiAxJTtcclxuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0LWxhbmQyKSB7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBcclxuICAuanMtY2hhcnRzLXRvZ2dsZXIge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICB9XHJcblxyXG4gICY6bm90KC5lbXB0eS1yb3cpOmhvdmVyIHtcclxuICAgIC5qcy1jaGFydHMtdG9nZ2xlciB7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi5ub3RlLWluc2lkZSB0YWJsZSB0ciB0ZDpsYXN0LW9mLXR5cGUge1xyXG4gICY6YWZ0ZXIge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICB9XHJcbn1cclxuXHJcbi5qcy10b2dnbGVyLWNvbnRhaW5lciB7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4uanMtY2hhcnRzLXRvZ2dsZXIge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi5pY29uLWNoYXJ0IHtcclxuICBmaWxsOiAkcmVkO1xyXG4gIHdpZHRoOiAzMnB4O1xyXG4gIGhlaWdodDogMzJweDtcclxuICBtYXJnaW4tbGVmdDogMTRweDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHRvcDogNTAlO1xyXG4gIGxlZnQ6IDA7XHJcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC02OCUpO1xyXG5cclxuICAmOmhvdmVyIHtcclxuICAgIGZpbGw6ICRyZWQtZGFya2VyICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLmhpZ2hjaGFydHMtYXhpcy1sYWJlbHMueS1sYWJlbCB7XHJcbiAgdGV4dCB7XHJcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmVkO1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDIlKTtcclxuXHJcbiAgICAmOmZpcnN0LW9mLXR5cGUge1xyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLmhpZ2hjaGFydHMtdGljayB7XHJcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDJweCk7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHotaW5kZXg6IDI7XHJcbn1cclxuLmhpZ2hjaGFydHMtYXhpcy1saW5lIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgei1pbmRleDogMTtcclxufVxyXG5cclxuLnBvcHVwLWJhY2tkcm9wIHtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgdG9wOiAwO1xyXG4gIGxlZnQ6IDA7XHJcbiAgZGlzcGxheTogbm9uZTtcclxuICB6LWluZGV4OiAyO1xyXG4gIHBvc2l0aW9uOiBmaXhlZDtcclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldCkge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIH1cclxuIFxyXG59XHJcblxyXG4ucG9wdXAtY2xvc2VyIHtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgdG9wOiAwO1xyXG4gIGxlZnQ6IDA7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIHotaW5kZXg6IDI7XHJcbn1cclxuXHJcbi5wb3B1cC1jb21wYXJpc29uIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgd2lkdGg6ICRpbm5lci1jb250YWluZXItd2lkdGgtbTtcclxuICBtYXgtaGVpZ2h0OiA2MHZoO1xyXG4gIGhlaWdodDogYXV0bztcclxuICAvLyBoZWlnaHQ6IGF1dG87XHJcbiAgICBtYXJnaW4tdG9wOiAzM3B4ICFpbXBvcnRhbnQ7XHJcbiAgICBib3gtc2hhZG93OiAwIDEwcHggMjBweCByZ2JhKGJsYWNrLCAwLjIpO1xyXG4gICAgYmFja2dyb3VuZDogd2hpdGU7XHJcbiAgICBwYWRkaW5nOiAyMHB4O1xyXG4gICAgcGFkZGluZy10b3A6IDMwcHg7XHJcbiAgICB6LWluZGV4OiAzO1xyXG4gICAgLmNoYXJ0cy13cmFwcGVyIHtcclxuICAgICAgQGluY2x1ZGUgcmVzcG9uc2l2ZS1yYXRpbygxMDAlLCA4NTAsIDQyNSwgJyNjb250YWluZXInKTtcclxuICAgIH1cclxuXHJcbiAgICAudG9wLXRpdGxlLWJhciB7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBAaW5jbHVkZSBmbGV4Ym94KHJvdywgbm93cmFwLCBzcGFjZS1iZXR3ZWVuLCBmbGV4LWVuZCk7XHJcbiAgICB9XHJcbiAgICAubnMtdGl0bGUtaDMge1xyXG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gICAgbWFyZ2luLWxlZnQ6IDA7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XHJcbiAgICBtYXJnaW4tdG9wOiAwO1xyXG4gICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgcGFkZGluZzogMCAxMHB4O1xyXG4gICAgZm9udC1mYW1pbHk6ICdBa2t1cmF0LVJlZ3VsYXJCb2xkJztcclxuICAgICAgZm9udC13ZWlnaHQ6bm9ybWFsO1xyXG4gICAgZm9udC1zaXplOiByZW0tY2FsYygxNHB4KTtcclxuICAgIGNvbG9yOiAkYmx1ZTtcclxuICB9XHJcblxyXG4gIC5jbG9zZXIge1xyXG4gICAgd2lkdGg6IDMwcHg7XHJcbiAgICBoZWlnaHQ6IDMwcHg7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwcHgpO1xyXG5cclxuICAgICY6YmVmb3JlLFxyXG4gICAgJjphZnRlciB7XHJcbiAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHRvcDogMDtcclxuICAgICAgcmlnaHQ6IDA7XHJcbiAgICAgIHdpZHRoOiAxcHg7XHJcbiAgICAgIGhlaWdodDogMjVweDtcclxuICAgICAgYmFja2dyb3VuZDogJHJlZDtcclxuICAgIH1cclxuXHJcbiAgICAmOmJlZm9yZSB7XHJcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcclxuICAgIH1cclxuXHJcbiAgICAmOmFmdGVyIHtcclxuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi5ub3Rlcy1vcGVuIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIG92ZXJmbG93LXk6IGhpZGRlbjtcclxuIFxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpIHtcclxuICAgIG92ZXJmbG93LXk6IHZpc2libGU7XHJcbiAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICBwb3NpdGlvbjogc3RhdGljO1xyXG4gIH0gXHJcbn0iLCJib2R5LnNlYXJjaCB7XHJcbiAgbWFpbiB7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogI0Y1RjVGNTtcclxuXHRwYWRkaW5nLWJvdHRvbTogMTIwcHg7XHJcbiAgfVxyXG5cclxuICAuc2VhcmNoLXBhZ2Uge1xyXG5cdGZsb2F0OiBub25lICFpbXBvcnRhbnQ7XHJcblx0bWF4LXdpZHRoOiA1NTBweDtcclxuXHRtYXJnaW46IDAgYXV0bztcclxuXHJcblx0LmVudHJ5LXN1bW1hcnkge1xyXG5cdCAgbWFyZ2luLWJvdHRvbTogNTBweDtcclxuXHQgIGRpc3BsYXk6IGZsZXg7XHJcblx0ICBmbGV4LWdyb3c6IDE7XHJcblx0fVxyXG5cclxuXHRpbWcge1xyXG5cdCAgbWF4LXdpZHRoOiBub25lO1xyXG5cdCAgd2lkdGg6IDYwcHg7XHJcblx0ICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XHJcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNlMmUyZTI7XHJcblx0fVxyXG5cclxuXHQuY29sdW1uLWxlZnQge1xyXG5cdCAgd2lkdGg6IDgwcHg7XHJcblx0ICBmbGV4LWJhc2lzOiA4MHB4O1xyXG5cdCAgKyAuY29sdW1uLXJpZ2h0IHtcclxuXHRcdHdpZHRoOiBjYWxjKDEwMCUgLSA3NXB4KTtcclxuXHRcdGZsZXgtYmFzaXM6IGNhbGMoMTAwJSAtIDc1cHgpO1xyXG5cdCAgfVxyXG5cdH1cclxuXHQmLS1leGNlcnB0IHtcclxuXHQgIG1hcmdpbi1sZWZ0OiAwO1xyXG5cdCAgbWFyZ2luLXJpZ2h0OiAwO1xyXG5cdCAgbWFyZ2luLWJvdHRvbTogMDtcclxuXHQgIHdpZHRoOiAxMDAlO1xyXG5cdH1cclxuXHJcblx0Ji0tbGluayB7XHJcblx0ICBjb2xvcjogYmxhY2s7XHJcblx0ICBmb250LWZhbWlseTogJGZvbnQtYm9sZDtcclxuXHQgIGZvbnQtc2l6ZTogMTNweDtcclxuXHR9XHJcbiAgfVxyXG5cclxuICAubm8tcmVzdWx0cyB7XHJcblx0LnBhZ2UtY29udGVudCB7XHJcblx0ICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0ICBtYXJnaW4tdG9wOiA0MHB4O1xyXG5cdH1cclxuICB9XHJcbn1cclxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUtBQTs7Ozs7R0FLRztBb0I4SkcsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLE1BQU0sU0FBUyxFQUFFLElBQUk7RStEdEgzQyxLQUFLLEVBQUUsSUFBSTtFQUNYLElB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 */

@font-face {
  font-family: 'Akkurat-Light';
  src: url("../helsana/fonts/akklg.eot");
  /* IE9+ */
  src: url("../helsana/fonts/akklg.eot?#iefix") format("embedded-opentype"), url("../helsana/fonts/akklg.woff") format("woff"), url("../helsana/fonts/akklg.ttf") format("truetype"), url("../helsana/fonts/akklg.svg#akklg") format("svg");
  /* Legacy iOS */
  font-weight: normal;
  font-style: normal;
}

@font-face {
  font-family: 'Akkurat-Regular';
  src: url("../helsana/fonts/akkrg.eot");
  src: url("../helsana/fonts/akkrg.eot?#iefix") format("embedded-opentype"), url("../helsana/fonts/akkrg.woff") format("woff"), url("../helsana/fonts/akkrg.ttf") format("truetype"), url("../helsana/fonts/akkrg.svg#akkrg") format("svg");
  font-weight: normal;
  font-style: normal;
}

@font-face {
  font-family: 'Akkurat-RegularBold';
  src: url("../helsana/fonts/akkbd.eot");
  src: url("../helsana/fonts/akkbd.eot?#iefix") format("embedded-opentype"), url("../helsana/fonts/akkbd.woff") format("woff"), url("../helsana/fonts/akkbd.ttf") format("truetype"), url("../helsana/fonts/akkbd.svg#akkbd") format("svg");
  font-weight: normal;
  font-style: normal;
}

/**
 * Foundation for Sites by ZURB
 * Version 6.4.3
 * foundation.zurb.com
 * Licensed under MIT Open Source
 */
@media print, screen and (min-width: 40em) {
  right: auto;
  left: auto;
  margin: 0 auto;
}

.footer-container {
  position: relative;
  z-index: 1;
  background: #ffffff;
}

@media screen and (max-width: 61.9375em) {
  .gb17-home {
    overflow-x: hidden;
  }
}

@media screen and (min-width: 48em) {
  .gb17-home .hide-on-desktop {
    display: none;
  }
}

.gb17-home .hide-on-mobile {
  display: none;
}

@media screen and (min-width: 48em) {
  .gb17-home .hide-on-mobile {
    display: block;
  }
}

.gb17-home h2,
.gb17-home h3,
.gb17-home h4,
.gb17-home h5,
.gb17-home h6 {
  display: block;
}

.gb17-home p {
  margin-left: 0;
  margin-right: 0;
}

.gb17-home .row {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
}

.gb17-home .row:before, .gb17-home .row:after {
  display: none;
}

.gb17-home img {
  vertical-align: middle;
  max-width: 100%;
  height: auto;
}

.gb17-home .icon-down {
  bottom: 20px;
  position: absolute;
  left: 50%;
  -webkit-transform: translateX(-50%);
      -ms-transform: translateX(-50%);
          transform: translateX(-50%);
}

@media screen and (min-width: 48em) {
  .gb17-home .icon-down {
    bottom: 25px;
    -webkit-transition: 0.25s ease-in-out;
    -o-transition: 0.25s ease-in-out;
    transition: 0.25s ease-in-out;
  }
  .gb17-home .icon-down:hover {
    bottom: 10px;
  }
}

.gb17-home .icon-up {
  position: absolute;
  left: 50%;
  -webkit-transform: translateX(-50%);
      -ms-transform: translateX(-50%);
          transform: translateX(-50%);
}

.gb17-home .section-image-hero {
  background-repeat: no-repeat;
  -webkit-background-size: cover;
          background-size: cover;
  background-position: center 0;
  position: relative;
  height: -webkit-calc(100vh - 68px);
  height: calc(100vh - 68px);
}

@media screen and (min-width: 48em) {
  .gb17-home .section-image-hero {
    background-position: center 0;
    height: -webkit-calc(100vh - 120px);
    height: calc(100vh - 120px);
  }
}

.gb17-home .column {
  padding-left: 0;
  padding-right: 0;
}

@media screen and (min-width: 48em) {
  .gb17-home .column {
    padding-left: inherit;
    padding-right: inherit;
  }
}

.gb17-home .text-center {
  width: 100%;
}

@media screen and (min-width: 48em) {
  .gb17-home .text-center {
    width: auto;
  }
}

.gb17-home .hero-text {
  padding-top: 14px;
  padding-left: 20px;
  padding-right: 20px;
}

@media screen and (min-width: 48em) {
  .gb17-home .hero-text {
    padding-top: 35px;
    padding-left: 0;
    padding-right: 0;
  }
}

.gb17-home .hero-text__main-title {
  font-size: 40px;
  line-height: 45px;
  font-family: "Akkurat-RegularBold", sans-serif;
  display: block;
  width: 100%;
  margin: 0;
  color: #9a0941;
  text-align: left;
}

@media screen and (min-width: 768px) {
  .gb17-home .hero-text__main-title {
    font-size: 70px;
    line-height: 75px;
  }
}

.gb17-home .hero-text__byline {
  font-size: 40px;
  line-height: 45px;
  font-family: "Akkurat-Light", sans-serif;
  display: block;
  width: 100%;
  margin: 0;
  color: #9a0941;
}

@media screen and (min-width: 768px) {
  .gb17-home .hero-text__byline {
    font-size: 70px;
    line-height: 75px;
  }
}

.gb17-home .btn-row {
  margin-top: 33px !important;
  width: 100%;
}

.gb17-home .btn-row .btn {
  margin-top: 10px;
  margin-bottom: 10px;
}

@media screen and (min-width: 768px) {
  .gb17-home .btn-row .btn {
    margin: 10px;
  }
}

.gb17-home .btn-row .text-center {
  width: 100%;
}

.gb17-home .blur-ie-svg-wrap {
  width: 100%;
  overflow: hidden;
  position: relative;
  background-color: black;
}

.gb17-home .blur-ie-svg-wrap.fixed {
  z-index: -1;
  position: fixed;
  top: 0;
}

.gb17-home .blur-ie-color-overlay {
  width: 100%;
  height: 100%;
  background: black;
  position: absolute;
  top: 0;
  left: 0;
  opacity: 0;
}

.gb17-home .opacity--in .blur-ie-svg-wrap {
  position: fixed;
  top: 66px !important;
  z-index: -1;
}

@media screen and (min-width: 48em) {
  .gb17-home .opacity--in .blur-ie-svg-wrap {
    top: 120px !important;
  }
}

.gb17-home body {
  background: red;
}

.gb17-home .blur-ie-svg-wrap__inner {
  position: relative;
  min-width: 100%;
  -webkit-transform: translateX(-5%);
      -ms-transform: translateX(-5%);
          transform: translateX(-5%);
}

.gb17-home .blur-ie-svg-wrap__inner svg {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

.gb17-home .blur-section__inner {
  position: relative;
}

.gb17-home .blur-section {
  opacity: 0;
}

.gb17-home .blur-section .txt-desc {
  color: white;
  max-width: 530px;
  margin-left: auto;
  margin-right: auto;
}

.gb17-home .blur-section .text-center {
  margin-top: 130px;
}

.gb17-home .blur-section .center-block1 {
  margin-top: 70px;
  margin-bottom: 96px;
}

.gb17-home .blur-section.opacity--in {
  opacity: 1;
}

.gb17-home .blur-video {
  margin-top: 33px;
  position: relative;
  width: 100%;
  height: 0;
  padding: 56.25% 0 0 0;
  display: block;
}

.gb17-home .blur-video iframe {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  width: 100%;
  height: 100%;
}

.gb17-home .blur-section__overlay {
  width: 100%;
  position: absolute;
  bottom: 0;
  left: 0;
  padding-bottom: 212px;
}

.gb17-home .blur-section__title {
  font-family: "Akkurat-Light", sans-serif;
  color: white;
  font-size: 25px;
}

.gb17-home .blur-section__title b {
  font-family: "Akkurat-RegularBold", sans-serif;
}

@media screen and (min-width: 48em) {
  .gb17-home .blur-section__title {
    font-size: 40px;
  }
}

.gb17-home .section-hero-content {
  position: relative;
  text-align: center;
}

.gb17-home .top-year-image-small {
  width: 100%;
  max-width: 170px;
  position: absolute;
  left: 50%;
  top: 63%;
  -webkit-transform: translate(-50%, -50%);
      -ms-transform: translate(-50%, -50%);
          transform: translate(-50%, -50%);
}

@media screen and (min-width: 48em) {
  .gb17-home .top-year-image-small {
    display: none !important;
  }
}

.gb17-home .top-year-image-medium {
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
      -ms-transform: translate(-50%, -50%);
          transform: translate(-50%, -50%);
  max-width: 920px;
  max-height: 50vh;
  margin-left: auto;
  margin-right: auto;
}

@media screen and (min-width: 48em) {
  .gb17-home .top-year-image-medium {
    display: block !important;
    max-height: none;
    width: 100%;
    padding-left: 20px;
    padding-right: 20px;
  }
}

.gb17-home .section-bottom-aligned {
  position: absolute;
  bottom: 85px;
  right: 20px;
  left: 20px;
}

.gb17-home .section-bottom-aligned h2.section-title {
  max-width: 880px;
  margin: 0 auto;
}

.gb17-home .section-content {
  max-width: 920px;
  padding-left: 20px;
  padding-right: 20px;
  padding-top: 40px;
  padding-bottom: 40px;
  margin-left: auto;
  margin-right: auto;
}

@media screen and (min-width: 769px) {
  .gb17-home .section-content {
    padding-top: 295px;
    padding-bottom: 0px;
  }
}

.gb17-home .section-content-inner, .gb17-home .section-content-inner-wider {
  max-width: 620px;
  margin-left: auto;
  margin-right: auto;
}

.gb17-home .section-content-inner-wider {
  max-width: 880px;
}

.gb17-home .space-between-cols-mobile {
  margin-bottom: 120px;
}

.gb17-home .section-circle-combo {
  margin-bottom: 120px;
  max-width: 835px !important;
  margin-left: auto;
  margin-right: auto;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
  -webkit-flex-direction: row;
      -ms-flex-direction: row;
          flex-direction: row;
  -webkit-flex-wrap: wrap;
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
  -webkit-box-pack: justify;
  -webkit-justify-content: space-between;
      -ms-flex-pack: justify;
          justify-content: space-between;
  -webkit-box-align: start;
  -webkit-align-items: flex-start;
      -ms-flex-align: start;
          align-items: flex-start;
}

.gb17-home .section-circle-combo.align-center {
  -webkit-box-pack: center;
  -webkit-justify-content: center;
      -ms-flex-pack: center;
          justify-content: center;
}

.gb17-home .section-circle-combo > div {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
      -ms-flex-direction: column;
          flex-direction: column;
  -webkit-flex-wrap: wrap;
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
  -webkit-box-pack: center;
  -webkit-justify-content: center;
      -ms-flex-pack: center;
          justify-content: center;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
}

.gb17-home .section-circle-combo > div p:last-of-type {
  margin-bottom: 0 !important;
}

.gb17-home .section-circle-combo > div:last-child {
  margin-top: 0;
}

@media screen and (min-width: 48em) {
  .gb17-home .section-circle-combo > div:last-child {
    margin-top: 0;
  }
}

@media screen and (min-width: 48em) {
  .gb17-home .section-circle-combo {
    margin-bottom: 280px;
  }
}

.gb17-home .section-circle-combo .txt-desc {
  text-align: center;
  margin-bottom: 43px;
  width: 100%;
  max-width: 330px;
}

@media screen and (min-width: 48em) {
  .gb17-home .section-circle-combo .txt-desc {
    margin-bottom: 30px;
  }
  .gb17-home .section-circle-combo .txt-desc.highlight-yellow {
    margin-bottom: 24px;
  }
}

.gb17-home .section-circle-combo .txt-desc--orange {
  color: #f39a33;
}

.gb17-home .txt-desc b {
  font-family: "Akkurat-RegularBold", sans-serif;
  font-weight: normal;
}

.gb17-home h2.section-title {
  color: #ffffff;
  padding-top: .15em;
  border-top: 2px solid #ffffff;
  font-size: 20px;
  margin-bottom: 1.352em;
  font-family: 'Akkurat-Light';
  text-align: center;
  font-weight: normal;
}

@media screen and (min-width: 48em) {
  .gb17-home h2.section-title {
    text-align: left;
    font-size: 40px;
  }
}

.gb17-home h3.section-subtitle {
  line-height: 1.17;
  color: #fed037;
  text-align: center;
  margin-top: 30px;
  margin-bottom: 30px;
  font-size: 20px;
  font-weight: 300;
}

@media screen and (min-width: 48em) {
  .gb17-home h3.section-subtitle {
    margin-top: 95px;
    margin-bottom: 95px;
    padding-left: 43px;
    padding-right: 43px;
    font-size: 20px;
  }
}

.gb17-home .number-title {
  text-align: center;
  margin-bottom: 15px;
}

@media screen and (min-width: 48em) {
  .gb17-home .number-title {
    margin-bottom: 20px;
  }
}

.gb17-home .number-title h3 {
  font-weight: 300;
  margin: 0;
  line-height: 1.1;
  font-size: 20px;
  text-align: center;
}

@media screen and (min-width: 48em) {
  .gb17-home .number-title h3 {
    font-size: 20px;
  }
}

.gb17-home .number-title .number {
  display: block;
}

.gb17-home .number-title .number.number-small {
  font-size: 40px;
}

@media screen and (min-width: 48em) {
  .gb17-home .number-title .number.number-small {
    font-size: 60px;
  }
}

.gb17-home .number-title .number.number-small-medium {
  font-size: 45px;
}

@media screen and (min-width: 48em) {
  .gb17-home .number-title .number.number-small-medium {
    font-size: 70px;
    line-height: 73px;
    margin-bottom: 10px;
  }
}

.gb17-home .number-title .number.number-medium {
  font-size: 50px;
}

@media screen and (min-width: 48em) {
  .gb17-home .number-title .number.number-medium {
    font-size: 80px;
    line-height: 90px;
  }
}

.gb17-home .number-title .number.number-medium-large {
  font-size: 55px;
}

@media screen and (min-width: 48em) {
  .gb17-home .number-title .number.number-medium-large {
    font-size: 70px;
    margin-bottom: 20px;
    line-height: 63px;
  }
}

.gb17-home .number-title .number.number-large {
  font-size: 60px;
}

@media screen and (min-width: 48em) {
  .gb17-home .number-title .number.number-large {
    font-size: 100px;
    margin-bottom: 20px;
    line-height: 68px;
  }
}

.gb17-home .home-events-container {
  padding-top: 15px;
}

@media screen and (min-width: 48em) {
  .gb17-home .home-events-container {
    padding-top: 60px;
  }
}

.gb17-home .home-event {
  text-align: center;
}

.gb17-home .home-event h3 {
  text-align: center;
  font-family: "Akkurat-RegularBold", sans-serif;
}

@media screen and (min-width: 48em) {
  .gb17-home .home-event {
    padding-bottom: 30px;
  }
  .gb17-home .home-event:nth-child(odd) {
    clear: left;
  }
}

.gb17-home .section-interview-image {
  margin-top: 40px;
  margin-bottom: 35px;
}

@media screen and (min-width: 48em) {
  .gb17-home .section-interview-image {
    margin-top: 100px;
    margin-bottom: 75px;
  }
}

.gb17-home .divider-yellow {
  margin: 30px auto;
  height: 1px;
  width: 110px;
  background-color: #fed037;
}

@media screen and (min-width: 48em) {
  .gb17-home .divider-yellow {
    margin-top: 45px;
    margin-bottom: 50px;
  }
}

.gb17-home .section-image-blurred-inner {
  position: relative;
  height: -webkit-calc(100vh - 53px);
  height: calc(100vh - 53px);
}

@media screen and (min-width: 48em) {
  .gb17-home .section-image-blurred-inner {
    height: -webkit-calc(100vh - 120px);
    height: calc(100vh - 120px);
  }
}

.gb17-home .section-image-blurred-inner .image-sharp,
.gb17-home .section-image-blurred-inner .image-blurred {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-repeat: no-repeat;
  -webkit-background-size: cover;
          background-size: cover;
  background-position: center;
  -webkit-transform: translate3d(0, 0, 0);
          transform: translate3d(0, 0, 0);
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden;
  will-change: position, opacity, top;
}

.gb17-home .section-image-blurred-inner .image-blurred {
  opacity: 0;
  visibility: hidden;
}

.gb17-home .section-image-blurred.fixed .image-sharp,
.gb17-home .section-image-blurred.fixed .image-blurred {
  position: fixed;
  top: 53px;
  visibility: visible;
}

@media screen and (min-width: 769px) {
  .gb17-home .section-image-blurred.fixed .image-sharp,
  .gb17-home .section-image-blurred.fixed .image-blurred {
    top: 120px;
  }
}

.gb17-home .over-image-content {
  position: relative;
  z-index: 1;
  color: #ffffff;
  min-height: -webkit-calc(100vh - 53px);
  min-height: calc(100vh - 53px);
}

@media screen and (min-width: 48em) {
  .gb17-home .over-image-content {
    min-height: -webkit-calc(100vh - 120px);
    min-height: calc(100vh - 120px);
  }
}

.gb17-home .section-text {
  position: relative;
  z-index: 1;
}

.gb17-home .bg-violet {
  color: #ffffff;
  background-color: #9A0941;
  -webkit-transition: background-color 0.3s;
  -o-transition: background-color 0.3s;
  transition: background-color 0.3s;
}

.gb17-home .ube-video {
  position: relative;
  height: 0;
  margin-bottom: 1rem;
  padding-bottom: 56.25%;
  overflow: hidden;
  margin-bottom: 120px;
  margin-top: 10px;
}

.gb17-home .ube-video iframe,
.gb17-home .ube-video object,
.gb17-home .ube-video embed,
.gb17-home .ube-video video {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

@media screen and (min-width: 48em) {
  .gb17-home .ube-video {
    margin-top: 70px;
    margin-bottom: 280px;
  }
}

.gb17-home .over-image-content .responsive-youtube-video {
  margin-bottom: 0px !important;
}

.gb17-home .btn-more-home {
  -webkit-border-radius: 2px;
          border-radius: 2px;
  padding: 17px 38px 18px;
  color: #ffffff;
  font-size: 16px;
  line-height: 21px;
  display: block;
  background-color: #AD0B49;
  font-family: "Akkurat-RegularBold", sans-serif;
}

@media screen and (min-width: 48em) {
  .gb17-home .btn-more-home {
    display: inline-block;
  }
}

.gb17-home .btn-more-home .icn-arrow {
  margin-left: 4px;
}

.gb17-home .btn-more-home:hover, .gb17-home .btn-more-home:focus {
  color: #ffffff;
  background-color: #BB0C50;
}

.gb17-home .btn-more-home:hover .icn-arrow, .gb17-home .btn-more-home:focus .icn-arrow {
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%207.5%2012%22%3E%3Cstyle%3E.st0%7Bfill%3A%239A0941%7D%3C%2Fstyle%3E%3Cpath%20d%3D%22M1.8.1c-.2-.1-.5-.1-.7%200L.2%201c-.2.2-.2.5%200%20.7L4.5%206%20.1%2010.3c-.2.2-.2.5%200%20.7l.9.9c.2.2.5.2.7%200l5.6-5.5c.2-.2.2-.5%200-.7L1.8.1z%22%20class%3D%22st0%22%2F%3E%3C%2Fsvg%3E");
}

.gb17-home .btn-more-interview {
  font-family: "Akkurat-RegularBold", sans-serif;
  margin-top: 30px;
}

@media screen and (min-width: 48em) {
  .gb17-home .btn-more-interview {
    margin-top: 45px;
    margin-bottom: 80px;
  }
}

.gb17-home .icn-arrow {
  display: inline-block;
  width: 8px;
  height: 12px;
  background-repeat: no-repeat;
  -webkit-background-size: contain;
          background-size: contain;
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%207.5%2012%22%3E%3Cstyle%3E.st0%7Bfill%3A%23fff%7D%3C%2Fstyle%3E%3Cpath%20d%3D%22M1.8.1c-.2-.1-.5-.1-.7%200L.2%201c-.2.2-.2.5%200%20.7L4.5%206%20.1%2010.3c-.2.2-.2.5%200%20.7l.9.9c.2.2.5.2.7%200l5.6-5.5c.2-.2.2-.5%200-.7L1.8.1z%22%20class%3D%22st0%22%2F%3E%3C%2Fsvg%3E");
}

.gb17-home span.type-space-003 {
  margin-right: -0.03em;
}

.gb17-home span.type-space-005 {
  margin-right: -0.05em;
}

.gb17-home span.type-space-0075 {
  margin-right: -0.075em;
}

.gb17-home span.type-space-01 {
  margin-right: -0.1em;
}

.gb17-home span.type-space-013 {
  margin-right: -0.13em;
}

.gb17-home .center-block1 {
  display: block;
  margin-right: auto;
  margin-left: auto;
  width: 260px;
  -webkit-border-radius: 50%;
          border-radius: 50%;
  margin-bottom: 30px;
}

@media screen and (min-width: 48em) {
  .gb17-home .center-block1 {
    width: 420px;
  }
}

@media screen and (min-width: 48em) {
  .gb17-home .center-block--wide {
    width: 620px;
  }
}

@media screen and (min-width: 48em) {
  .gb17-home .offset-col {
    margin-top: 250px !important;
  }
}

.gb17-home .center-block2 {
  display: block;
  margin-right: auto;
  margin-left: auto;
  width: 260px;
  -webkit-border-radius: 50%;
          border-radius: 50%;
}

@media screen and (min-width: 48em) {
  .gb17-home .center-block2 {
    width: 440px;
    margin-bottom: 24px;
  }
}

.gb17-home .spacing-logo-image {
  max-width: 100% !important;
}

@media screen and (min-width: 48em) {
  .gb17-home .spacing-logo-image {
    margin-top: 20px;
    margin-bottom: 100px;
    max-width: 430px !important;
  }
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGUtaG9tZS5jc3MiLCJzb3VyY2VzIjpbInN0eWxlLWhvbWUuc2NzcyIsImNvbmZpZy9fY29sb3JzLnNjc3MiLCJjb25maWcvX2ZvbnRzLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3VuZGF0aW9uLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvX3ZlbmRvci9ub3JtYWxpemUtc2Nzcy9zYXNzL19ub3JtYWxpemUuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9fdmVuZG9yL25vcm1hbGl6ZS1zY3NzL3Nhc3Mvbm9ybWFsaXplL192YXJpYWJsZXMuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9fdmVuZG9yL25vcm1hbGl6ZS1zY3NzL3Nhc3Mvbm9ybWFsaXplL192ZXJ0aWNhbC1yaHl0aG0uc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9fdmVuZG9yL25vcm1hbGl6ZS1zY3NzL3Nhc3Mvbm9ybWFsaXplL19ub3JtYWxpemUtbWl4aW4uc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2hlbHBlcnMvX21pc3NpbmctZGVwZW5kZW5jaWVzLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL190cnVlLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX2NvbnRhaW4uc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fcHVyZ2Uuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fcmVtb3ZlLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX3JlcGxhY2Uuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fdG8tbGlzdC5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fdXRpbC5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fbWF0aC5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fdW5pdC5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fdmFsdWUuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX2RpcmVjdGlvbi5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fY29sb3Iuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX3NlbGVjdG9yLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL19mbGV4LnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL19icmVha3BvaW50LnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL19taXhpbnMuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX3R5cG9ncmFwaHkuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL19nbG9iYWwuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX2dyaWQuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX3Jvdy5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZ3JpZC9fY29sdW1uLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9ncmlkL19zaXplLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9ncmlkL19wb3NpdGlvbi5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZ3JpZC9fZ3V0dGVyLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9ncmlkL19jbGFzc2VzLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9ncmlkL19sYXlvdXQuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX2ZsZXgtZ3JpZC5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MveHktZ3JpZC9feHktZ3JpZC5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MveHktZ3JpZC9fZ3V0dGVycy5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MveHktZ3JpZC9fZ3JpZC5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MveHktZ3JpZC9fY2VsbC5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MveHktZ3JpZC9fZnJhbWUuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3h5LWdyaWQvX3Bvc2l0aW9uLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy94eS1ncmlkL19sYXlvdXQuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3h5LWdyaWQvX2NvbGxhcHNlLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy94eS1ncmlkL19jbGFzc2VzLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy90eXBvZ3JhcGh5L190eXBvZ3JhcGh5LnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy90eXBvZ3JhcGh5L19iYXNlLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy90eXBvZ3JhcGh5L19oZWxwZXJzLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy90eXBvZ3JhcGh5L19hbGlnbm1lbnQuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3R5cG9ncmFwaHkvX3ByaW50LnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fZm9ybXMuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL190ZXh0LnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fY2hlY2tib3guc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19sYWJlbC5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX2hlbHAtdGV4dC5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX2lucHV0LWdyb3VwLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fZmllbGRzZXQuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19zZWxlY3Quc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19yYW5nZS5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX3Byb2dyZXNzLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fbWV0ZXIuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19lcnJvci5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fdmlzaWJpbGl0eS5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fZmxvYXQuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2J1dHRvbi5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fYnV0dG9uLWdyb3VwLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19hY2NvcmRpb24tbWVudS5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fYWNjb3JkaW9uLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19iYWRnZS5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fYnJlYWRjcnVtYnMuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2NhbGxvdXQuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2NhcmQuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2Nsb3NlLWJ1dHRvbi5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fZHJpbGxkb3duLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19kcm9wZG93bi1tZW51LnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19kcm9wZG93bi5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fZmxleC5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fcmVzcG9uc2l2ZS1lbWJlZC5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fbGFiZWwuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX21lZGlhLW9iamVjdC5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fbWVudS5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fbWVudS1pY29uLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19vZmYtY2FudmFzLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19vcmJpdC5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fcGFnaW5hdGlvbi5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fcHJvZ3Jlc3MtYmFyLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19yZXZlYWwuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3NsaWRlci5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fc3RpY2t5LnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19zd2l0Y2guc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3RhYmxlLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL190YWJzLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL190aXRsZS1iYXIuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3RvcC1iYXIuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3RodW1ibmFpbC5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fdG9vbHRpcC5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19wcm90b3R5cGUuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fcmVsYXRpb24uc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fYm94LnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX3JvdGF0ZS5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL190ZXh0LXV0aWxpdGllcy5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL190ZXh0LXRyYW5zZm9ybWF0aW9uLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX3RleHQtZGVjb3JhdGlvbi5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19mb250LXN0eWxpbmcuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fbGlzdC1zdHlsZS10eXBlLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX3JvdW5kZWQuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fYm9yZGVyZWQuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fc2hhZG93LnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX2Fycm93LnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX3NlcGFyYXRvci5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19vdmVyZmxvdy5zY3NzIiwiY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19kaXNwbGF5LnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX3Bvc2l0aW9uLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX2JvcmRlci1ib3guc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fYm9yZGVyLW5vbmUuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fc2l6aW5nLnNjc3MiLCJjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX3NwYWNpbmcuc2NzcyIsImNvbmZpZy92ZW5kb3IvZm91bmRhdGlvbi1zZXR0aW5ncy5zY3NzIiwiY29uZmlnL19icmVha3BvaW50cy5zY3NzIiwiY29uZmlnL19jb250YWluZXItd2lkdGguc2NzcyIsInRoZW1lL3BhZ2VzL2Zyb250cGFnZS9fZnJvbnRwYWdlLnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSGVsc2FuYSBHQiBIb21lIDIwMTdcclxuXHJcbi8vIGhvbWUtc3BlY2lmaWNcclxuJGlubmVyLWNvbnRlbnQtbWF4d2lkdGg6IDg4MHB4O1xyXG4kaG9tZS12aW9sZXQ6ICAgICAgIzlBMDk0MTtcclxuJGhvbWUteWVsbG93OiAgICAgICNmZWQwMzc7XHJcbiRob21lLWdyZWVuOiAgICAgICAjYzJjODQxO1xyXG4kaG9tZS1ibHVlOiAgICAgICAgIzYyQUVERjtcclxuJGhvbWUtY3JhbmJlcnJ5OiAgICNFMDg1QUE7XHJcblxyXG4vLyBpbXBvcnRzXHJcbkBpbXBvcnQgJ2NvbmZpZy9jb2xvcnMnO1xyXG5AaW1wb3J0ICdjb25maWcvZm9udHMnO1xyXG5AaW1wb3J0ICdjb25maWcvdmVuZG9yL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3VuZGF0aW9uJztcclxuQGltcG9ydCAnY29uZmlnL3ZlbmRvci9mb3VuZGF0aW9uLXNldHRpbmdzJztcclxuQGltcG9ydCAnY29uZmlnL2JyZWFrcG9pbnRzJztcclxuQGltcG9ydCAnY29uZmlnL2NvbnRhaW5lci13aWR0aCc7XHJcblxyXG4vLyBtYWtlIHN1cmUgZm9vdGVyIGlzIHZpc2libGVcclxuLmZvb3Rlci1jb250YWluZXIge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgei1pbmRleDogMTtcclxuICAgIGJhY2tncm91bmQ6ICR3aGl0ZTtcclxufVxyXG4vLyBuYW1lc3BhY2UgZXZlcnl0aGluZyB0byBlbnN1cmUgdGhlcmUgd2lsbCBiZSBubyBjb25mbGljdHNcclxuLmdiMTctaG9tZSB7XHJcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0IGRvd24pIHtcclxuICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47XHJcbiAgICB9XHJcbiAgICAvLyBFbGVtZW50cyBmb3IgR0JcclxuICAgIEBpbXBvcnQgJ3RoZW1lL3BhZ2VzL2Zyb250cGFnZS9mcm9udHBhZ2UnO1xyXG59XHJcbiIsIiRyZWQ6ICAgICAgICAgICAgICAgICAgICM5YTA5NDE7XHJcbiRyZWQtYnRuOiAgICAgICAgICAgICAgICNBRDBCNDk7XHJcbiRyZWQtYnRuLWhvdmVyOiAgICAgICAgICAjQkIwQzUwO1xyXG4kcmVkLWRhcms6ICAgICAgICAgICAgICByZ2IoMTIyLCAxMSwgNTMpO1xyXG4kcmVkLWRhcmtlcjogICAgICAgICAgICBkYXJrZW4oJHJlZC1kYXJrLCA1JSk7XHJcbiRncmV5LWJyaWdodDogICAgICAgICAgICNmNWY1ZjU7XHJcbiRncmV5LWJyaWdodC1mb290ZXI6ICAgICNFRUVFRUU7XHJcbiRncmV5LWFjY29yZGlvbi1ob3ZlcjogICNFNUU1RTU7XHJcbiRncmV5LWFjY29yZGlvbi1ib3JkZXI6ICNjY2NjY2M7XHJcblxyXG4kZ3JleS1kYXJrOiAgICAgICAgICAgICAjMzMzMzMzO1xyXG4kb3JhbmdlOiAgICAgICAgICAgICAgICAjZjM5YTMzO1xyXG4kYmx1ZTogICAgICAgICAgICAgICAgICAjNjJBRURGO1xyXG4kbGF2ZW5kZXI6ICAgICAgICAgICAgICAjOTE4MUM2O1xyXG4kbGlsYTogICAgICAgICAgICAgICAgICAjQTc5QUQxO1xyXG4kYmxhY2s6ICAgICAgICAgICAgICAgICAjMDAwMDAwO1xyXG4kd2hpdGU6ICAgICAgICAgICAgICAgICAjZmZmZmZmO1xyXG4iLCJAY2hhcnNldCBcIlVURi04XCI7XHJcblxyXG5AZm9udC1mYWNle1xyXG4gIGZvbnQtZmFtaWx5OiAnQWtrdXJhdC1MaWdodCc7XHJcbiAgc3JjOlx0dXJsKCcuLi9oZWxzYW5hL2ZvbnRzL2Fra2xnLmVvdCcpOyAvKiBJRTkrICovXHJcbiAgc3JjOlx0dXJsKCcuLi9oZWxzYW5hL2ZvbnRzL2Fra2xnLmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksIC8qIElFNi1JRTggKi9cclxuICB1cmwoJy4uL2hlbHNhbmEvZm9udHMvYWtrbGcud29mZicpIGZvcm1hdCgnd29mZicpLCAvKiBNb2Rlcm4gQnJvd3NlcnMgKi9cclxuICB1cmwoJy4uL2hlbHNhbmEvZm9udHMvYWtrbGcudHRmJykgZm9ybWF0KCd0cnVldHlwZScpLCAvKiBTYWZhcmksIEFuZHJvaWQsIGlPUyAqL1xyXG4gIHVybCgnLi4vaGVsc2FuYS9mb250cy9ha2tsZy5zdmcjYWtrbGcnKSBmb3JtYXQoJ3N2ZycpOyAvKiBMZWdhY3kgaU9TICovXHJcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuICBmb250LXN0eWxlOiBub3JtYWw7XHJcbn1cclxuXHJcbkBmb250LWZhY2V7XHJcbiAgZm9udC1mYW1pbHk6ICdBa2t1cmF0LVJlZ3VsYXInO1xyXG4gIHNyYzpcdHVybCgnLi4vaGVsc2FuYS9mb250cy9ha2tyZy5lb3QnKTtcclxuICBzcmM6XHR1cmwoJy4uL2hlbHNhbmEvZm9udHMvYWtrcmcuZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSxcclxuICB1cmwoJy4uL2hlbHNhbmEvZm9udHMvYWtrcmcud29mZicpIGZvcm1hdCgnd29mZicpLFxyXG4gIHVybCgnLi4vaGVsc2FuYS9mb250cy9ha2tyZy50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyksXHJcbiAgdXJsKCcuLi9oZWxzYW5hL2ZvbnRzL2Fra3JnLnN2ZyNha2tyZycpIGZvcm1hdCgnc3ZnJyk7XHJcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuICBmb250LXN0eWxlOiBub3JtYWw7XHJcbn1cclxuXHJcbkBmb250LWZhY2Uge1xyXG4gIGZvbnQtZmFtaWx5OiAnQWtrdXJhdC1SZWd1bGFyQm9sZCc7XHJcbiAgc3JjOiB1cmwoJy4uL2hlbHNhbmEvZm9udHMvYWtrYmQuZW90Jyk7XHJcbiAgc3JjOiB1cmwoJy4uL2hlbHNhbmEvZm9udHMvYWtrYmQuZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSxcclxuICB1cmwoJy4uL2hlbHNhbmEvZm9udHMvYWtrYmQud29mZicpIGZvcm1hdCgnd29mZicpLFxyXG4gIHVybCgnLi4vaGVsc2FuYS9mb250cy9ha2tiZC50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyksXHJcbiAgdXJsKCcuLi9oZWxzYW5hL2ZvbnRzL2Fra2JkLnN2ZyNha2tiZCcpIGZvcm1hdCgnc3ZnJyk7XHJcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuICBmb250LXN0eWxlOiBub3JtYWw7XHJcbn1cclxuXHJcbi8vRm9udCBGYW1pbGllc1xyXG4kZm9udC1saWdodDogJ0Fra3VyYXQtTGlnaHQnLCBzYW5zLXNlcmlmO1xyXG4kZm9udC1yZWd1bGFyOiAnQWtrdXJhdC1SZWd1bGFyJywgc2Fucy1zZXJpZjtcclxuJGZvbnQtYm9sZDogJ0Fra3VyYXQtUmVndWxhckJvbGQnLCBzYW5zLXNlcmlmO1xyXG5cclxuLy9Gb250IFNpemVzXHJcbiRmb250cy10aXRsZS1oMTogcmVtLWNhbGMoMzVweCk7XHJcbiRmb250cy10aXRsZS1oMS1zOiByZW0tY2FsYygyMXB4KTtcclxuXHJcbiRmb250cy10aXRsZS1tYWluOiByZW0tY2FsYyg0NXB4KTtcclxuJGZvbnRzLXRpdGxlLW1haW4tczogcmVtLWNhbGMoMjhweCk7XHJcblxyXG4kZm9udHMtdGl0bGUtcmV2aXNpb25zYmVyaWNodDogcmVtLWNhbGMoMjBweCk7XHJcblxyXG4kZm9udHMtdGl0bGUtaDI6IHJlbS1jYWxjKDE3cHgpO1xyXG4kZm9udHMtdGl0bGUtaDM6IHJlbS1jYWxjKDE3cHgpO1xyXG5cclxuJGZvbnRzLWxlYWQ6IHJlbS1jYWxjKDE3cHgpO1xyXG4kZm9udHMtbGVhZC1zOiByZW0tY2FsYygxNHB4KTtcclxuXHJcbiRmb250cy1wYXJhZ3JhcGg6IHJlbS1jYWxjKDE3cHgpO1xyXG4kZm9udHMtcGFyYWdyYXBoLXM6IHJlbS1jYWxjKDE0cHgpO1xyXG5cclxuJGZvbnRzLXBvcnRyYWl0czogcmVtLWNhbGMoMTRweCk7XHJcblxyXG4kZm9udHMtcXVvdGU6IHJlbS1jYWxjKDE3cHgpO1xyXG4kZm9udHMtcXVvdGUtc21hbGw6IHJlbS1jYWxjKDE0cHgpO1xyXG5cclxuJGZvbnRzLW51bWJlcnMtYmlnOiByZW0tY2FsYyg2MHB4KTtcclxuJGZvbnRzLWtleWZpZ3VyZXMtdHh0OiByZW0tY2FsYygyMHB4KTtcclxuJGZvbnRzLWtleWZpZ3VyZXMtY3VycmVuY3k6IHJlbS1jYWxjKDE3cHgpO1xyXG4kZm9udHMta2V5ZmlndXJlcy1jdXJyZW5jeS1zOiByZW0tY2FsYygxNHB4KTtcclxuXHJcbiRmb250cy10YWJsZXM6IHJlbS1jYWxjKDE0cHgpO1xyXG4kZm9udHMtZm9vdG5vdGVzOiByZW0tY2FsYygxMnB4KTtcclxuXHJcbiRmb250cy1tYWluLW5hdjogcmVtLWNhbGMoMjVweCk7XHJcbiRmb250cy1uYXYtbGFuZzogcmVtLWNhbGMoMjFweCk7XHJcbiRmb250cy1zdWItbmF2OiByZW0tY2FsYygxN3B4KTtcclxuJGZvbnRzLW5hdi1zbWFsbDogcmVtLWNhbGMoMTBweCk7XHJcbiRmb250cy1zdWItbmF2LXNtYWxsOiByZW0tY2FsYygxNHB4KTtcclxuXHJcbiRmb250cy1mb290ZXI6IHJlbS1jYWxjKDE0cHgpO1xyXG5cclxuLy9MaW5lLWhlaWdodHNcclxuJGxoLXBhcmFncmFwaDogcmVtLWNhbGMoMjRweCk7XHJcbiRsaC1wYXJhZ3JhcGgtczogcmVtLWNhbGMoMjFweCk7XHJcbiIsIi8qKlxyXG4gKiBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbiAqIFZlcnNpb24gNi40LjNcclxuICogZm91bmRhdGlvbi56dXJiLmNvbVxyXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuICovXHJcblxyXG4vLyBEZXBlbmRlbmNpZXNcclxuQGltcG9ydCAnLi4vX3ZlbmRvci9ub3JtYWxpemUtc2Nzcy9zYXNzL25vcm1hbGl6ZSc7XHJcbkBpbXBvcnQgJy4uL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvaGVscGVycy9taXNzaW5nLWRlcGVuZGVuY2llcyc7XHJcbkBpbXBvcnQgJy4uL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvaGVscGVycy90cnVlJztcclxuQGltcG9ydCAnLi4vX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvY29udGFpbic7XHJcbkBpbXBvcnQgJy4uL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL3B1cmdlJztcclxuQGltcG9ydCAnLi4vX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvcmVtb3ZlJztcclxuQGltcG9ydCAnLi4vX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvcmVwbGFjZSc7XHJcbkBpbXBvcnQgJy4uL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL3RvLWxpc3QnO1xyXG5cclxuLy8gU2V0dGluZ3NcclxuLy8gaW1wb3J0IHlvdXIgb3duIGBzZXR0aW5nc2AgaGVyZSBvclxyXG4vLyBpbXBvcnQgYW5kIG1vZGlmeSB0aGUgZGVmYXVsdCBzZXR0aW5ncyB0aHJvdWdoXHJcbi8vIEBpbXBvcnQgJ3NldHRpbmdzL3NldHRpbmdzJztcclxuXHJcbi8vIFNhc3MgdXRpbGl0aWVzXHJcbkBpbXBvcnQgJ3V0aWwvdXRpbCc7XHJcblxyXG4vLyBHbG9iYWwgdmFyaWFibGVzIGFuZCBzdHlsZXNcclxuQGltcG9ydCAnZ2xvYmFsJztcclxuXHJcbi8vIENvbXBvbmVudHNcclxuQGltcG9ydCAnZ3JpZC9ncmlkJztcclxuQGltcG9ydCAneHktZ3JpZC94eS1ncmlkJztcclxuQGltcG9ydCAndHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcclxuQGltcG9ydCAnZm9ybXMvZm9ybXMnO1xyXG5AaW1wb3J0ICdjb21wb25lbnRzL3Zpc2liaWxpdHknO1xyXG5AaW1wb3J0ICdjb21wb25lbnRzL2Zsb2F0JztcclxuQGltcG9ydCAnY29tcG9uZW50cy9idXR0b24nO1xyXG5AaW1wb3J0ICdjb21wb25lbnRzL2J1dHRvbi1ncm91cCc7XHJcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYWNjb3JkaW9uLW1lbnUnO1xyXG5AaW1wb3J0ICdjb21wb25lbnRzL2FjY29yZGlvbic7XHJcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYmFkZ2UnO1xyXG5AaW1wb3J0ICdjb21wb25lbnRzL2JyZWFkY3J1bWJzJztcclxuQGltcG9ydCAnY29tcG9uZW50cy9jYWxsb3V0JztcclxuQGltcG9ydCAnY29tcG9uZW50cy9jYXJkJztcclxuQGltcG9ydCAnY29tcG9uZW50cy9jbG9zZS1idXR0b24nO1xyXG5AaW1wb3J0ICdjb21wb25lbnRzL2RyaWxsZG93bic7XHJcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZHJvcGRvd24tbWVudSc7XHJcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZHJvcGRvd24nO1xyXG5AaW1wb3J0ICdjb21wb25lbnRzL2ZsZXgnO1xyXG5AaW1wb3J0ICdjb21wb25lbnRzL3Jlc3BvbnNpdmUtZW1iZWQnO1xyXG5AaW1wb3J0ICdjb21wb25lbnRzL2xhYmVsJztcclxuQGltcG9ydCAnY29tcG9uZW50cy9tZWRpYS1vYmplY3QnO1xyXG5AaW1wb3J0ICdjb21wb25lbnRzL21lbnUnO1xyXG5AaW1wb3J0ICdjb21wb25lbnRzL21lbnUtaWNvbic7XHJcbkBpbXBvcnQgJ2NvbXBvbmVudHMvb2ZmLWNhbnZhcyc7XHJcbkBpbXBvcnQgJ2NvbXBvbmVudHMvb3JiaXQnO1xyXG5AaW1wb3J0ICdjb21wb25lbnRzL3BhZ2luYXRpb24nO1xyXG5AaW1wb3J0ICdjb21wb25lbnRzL3Byb2dyZXNzLWJhcic7XHJcbkBpbXBvcnQgJ2NvbXBvbmVudHMvcmV2ZWFsJztcclxuQGltcG9ydCAnY29tcG9uZW50cy9zbGlkZXInO1xyXG5AaW1wb3J0ICdjb21wb25lbnRzL3N0aWNreSc7XHJcbkBpbXBvcnQgJ2NvbXBvbmVudHMvc3dpdGNoJztcclxuQGltcG9ydCAnY29tcG9uZW50cy90YWJsZSc7XHJcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdGFicyc7XHJcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdGl0bGUtYmFyJztcclxuQGltcG9ydCAnY29tcG9uZW50cy90b3AtYmFyJztcclxuQGltcG9ydCAnY29tcG9uZW50cy90aHVtYm5haWwnO1xyXG5AaW1wb3J0ICdjb21wb25lbnRzL3Rvb2x0aXAnO1xyXG5AaW1wb3J0ICdwcm90b3R5cGUvcHJvdG90eXBlJztcclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLWV2ZXJ5dGhpbmcoXHJcbiAgJGZsZXg6IHRydWUsXHJcbiAgJHByb3RvdHlwZTogZmFsc2VcclxuKSB7XHJcbiAgQGlmICRmbGV4IHtcclxuICAgICRnbG9iYWwtZmxleGJveDogdHJ1ZSAhZ2xvYmFsO1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1nbG9iYWwtc3R5bGVzO1xyXG4gIEBpZiBub3QgJGZsZXgge1xyXG4gICAgQGluY2x1ZGUgZm91bmRhdGlvbi1ncmlkO1xyXG4gIH1cclxuICBAZWxzZSB7XHJcbiAgICBAaWYgJHh5LWdyaWQge1xyXG4gICAgICBAaW5jbHVkZSBmb3VuZGF0aW9uLXh5LWdyaWQtY2xhc3NlcztcclxuICAgIH1cclxuICAgIEBlbHNlIHtcclxuICAgICAgQGluY2x1ZGUgZm91bmRhdGlvbi1mbGV4LWdyaWQ7XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdHlwb2dyYXBoeTtcclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZvcm1zO1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tYnV0dG9uO1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tYWNjb3JkaW9uO1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tYWNjb3JkaW9uLW1lbnU7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1iYWRnZTtcclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWJyZWFkY3J1bWJzO1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tYnV0dG9uLWdyb3VwO1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tY2FsbG91dDtcclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWNhcmQ7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1jbG9zZS1idXR0b247XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1tZW51O1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tbWVudS1pY29uO1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZHJpbGxkb3duLW1lbnU7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1kcm9wZG93bjtcclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWRyb3Bkb3duLW1lbnU7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1yZXNwb25zaXZlLWVtYmVkO1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tbGFiZWw7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1tZWRpYS1vYmplY3Q7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1vZmYtY2FudmFzO1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tb3JiaXQ7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wYWdpbmF0aW9uO1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvZ3Jlc3MtYmFyO1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tc2xpZGVyO1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tc3RpY2t5O1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcmV2ZWFsO1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tc3dpdGNoO1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdGFibGU7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10YWJzO1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdGh1bWJuYWlsO1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdGl0bGUtYmFyO1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdG9vbHRpcDtcclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXRvcC1iYXI7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi12aXNpYmlsaXR5LWNsYXNzZXM7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mbG9hdC1jbGFzc2VzO1xyXG5cclxuICBAaWYgJGZsZXgge1xyXG4gICAgQGluY2x1ZGUgZm91bmRhdGlvbi1mbGV4LWNsYXNzZXM7XHJcbiAgfVxyXG5cclxuICBAaWYgJHByb3RvdHlwZSB7XHJcbiAgICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1jbGFzc2VzO1xyXG4gIH1cclxufVxyXG4iLCJAaW1wb3J0ICdub3JtYWxpemUvdmFyaWFibGVzJztcclxuQGltcG9ydCAnbm9ybWFsaXplL3ZlcnRpY2FsLXJoeXRobSc7XHJcbkBpbXBvcnQgJ25vcm1hbGl6ZS9ub3JtYWxpemUtbWl4aW4nO1xyXG4iLCIvL1xyXG4vLyBWYXJpYWJsZXNcclxuLy9cclxuLy8gWW91IGNhbiBvdmVycmlkZSB0aGUgZGVmYXVsdCB2YWx1ZXMgYnkgc2V0dGluZyB0aGUgdmFyaWFibGVzIGluIHlvdXIgU2Fzc1xyXG4vLyBiZWZvcmUgaW1wb3J0aW5nIHRoZSBub3JtYWxpemUtc2NzcyBsaWJyYXJ5LlxyXG5cclxuLy8gVGhlIGZvbnQgc2l6ZSBzZXQgb24gdGhlIHJvb3QgaHRtbCBlbGVtZW50LlxyXG4kYmFzZS1mb250LXNpemU6IDE2cHggIWRlZmF1bHQ7XHJcblxyXG4vLyBUaGUgYmFzZSBsaW5lIGhlaWdodCBkZXRlcm1pbmVzIHRoZSBiYXNpYyB1bml0IG9mIHZlcnRpY2FsIHJoeXRobS5cclxuJGJhc2UtbGluZS1oZWlnaHQ6IDI0cHggIWRlZmF1bHQ7XHJcblxyXG4vLyBUaGUgbGVuZ3RoIHVuaXQgaW4gd2hpY2ggdG8gb3V0cHV0IHZlcnRpY2FsIHJoeXRobSB2YWx1ZXMuXHJcbi8vIFN1cHBvcnRlZCB2YWx1ZXM6IHB4LCBlbSwgcmVtLlxyXG4kYmFzZS11bml0OiAnZW0nICFkZWZhdWx0O1xyXG5cclxuLy8gVGhlIGRlZmF1bHQgZm9udCBmYW1pbHkuXHJcbiRiYXNlLWZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmICFkZWZhdWx0O1xyXG5cclxuLy8gVGhlIGZvbnQgc2l6ZXMgZm9yIGgxLWg2LlxyXG4kaDEtZm9udC1zaXplOiAyICAgICogJGJhc2UtZm9udC1zaXplICFkZWZhdWx0O1xyXG4kaDItZm9udC1zaXplOiAxLjUgICogJGJhc2UtZm9udC1zaXplICFkZWZhdWx0O1xyXG4kaDMtZm9udC1zaXplOiAxLjE3ICogJGJhc2UtZm9udC1zaXplICFkZWZhdWx0O1xyXG4kaDQtZm9udC1zaXplOiAxICAgICogJGJhc2UtZm9udC1zaXplICFkZWZhdWx0O1xyXG4kaDUtZm9udC1zaXplOiAwLjgzICogJGJhc2UtZm9udC1zaXplICFkZWZhdWx0O1xyXG4kaDYtZm9udC1zaXplOiAwLjY3ICogJGJhc2UtZm9udC1zaXplICFkZWZhdWx0O1xyXG5cclxuLy8gVGhlIGFtb3VudCBsaXN0cyBhbmQgYmxvY2txdW90ZXMgYXJlIGluZGVudGVkLlxyXG4kaW5kZW50LWFtb3VudDogNDBweCAhZGVmYXVsdDtcclxuXHJcbi8vIFRoZSBmb2xsb3dpbmcgdmFyaWFibGUgY29udHJvbHMgd2hldGhlciBub3JtYWxpemUtc2NzcyB3aWxsIG91dHB1dFxyXG4vLyBmb250LXNpemVzLCBsaW5lLWhlaWdodHMgYW5kIGJsb2NrLWxldmVsIHRvcC9ib3R0b20gbWFyZ2lucyB0aGF0IGZvcm0gYSBiYXNpY1xyXG4vLyB2ZXJ0aWNhbCByaHl0aG0gb24gdGhlIHBhZ2UsIHdoaWNoIGRpZmZlcnMgZnJvbSB0aGUgb3JpZ2luYWwgTm9ybWFsaXplLmNzcy5cclxuLy8gSG93ZXZlciwgY2hhbmdpbmcgYW55IG9mIHRoZSB2YXJpYWJsZXMgYWJvdmUgd2lsbCBjYXVzZVxyXG4vLyAkbm9ybWFsaXplLXZlcnRpY2FsLXJoeXRobSB0byBiZSBhdXRvbWF0aWNhbGx5IHNldCB0byB0cnVlLlxyXG4kbm9ybWFsaXplLXZlcnRpY2FsLXJoeXRobTogZmFsc2UgIWRlZmF1bHQ7XHJcbiIsIi8vXHJcbi8vIFZlcnRpY2FsIFJoeXRobVxyXG4vL1xyXG4vLyBUaGlzIGlzIHRoZSBtaW5pbWFsIGFtb3VudCBvZiBjb2RlIG5lZWRlZCB0byBjcmVhdGUgdmVydGljYWwgcmh5dGhtIGluIG91clxyXG4vLyBDU1MuIElmIHlvdSBhcmUgbG9va2luZyBmb3IgYSByb2J1c3Qgc29sdXRpb24sIGxvb2sgYXQgdGhlIGV4Y2VsbGVudCBUeXBleVxyXG4vLyBsaWJyYXJ5LiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9qcHRhcmFudG8vdHlwZXlcclxuXHJcbkBmdW5jdGlvbiBub3JtYWxpemUtcmh5dGhtKCR2YWx1ZSwgJHJlbGF0aXZlLXRvOiAkYmFzZS1mb250LXNpemUsICR1bml0OiAkYmFzZS11bml0KSB7XHJcbiAgQGlmIHVuaXQoJHZhbHVlKSAhPSBweCB7XHJcbiAgICBAZXJyb3IgXCJUaGUgbm9ybWFsaXplIHZlcnRpY2FsLXJoeXRobSBtb2R1bGUgb25seSBzdXBwb3J0cyBweCBpbnB1dHMuIFRoZSB0eXBleSBsaWJyYXJ5IGlzIGJldHRlci5cIjtcclxuICB9XHJcbiAgQGlmICR1bml0ID09IHJlbSB7XHJcbiAgICBAcmV0dXJuICgkdmFsdWUgLyAkYmFzZS1mb250LXNpemUpICogMXJlbTtcclxuICB9XHJcbiAgQGVsc2UgaWYgJHVuaXQgPT0gZW0ge1xyXG4gICAgQHJldHVybiAoJHZhbHVlIC8gJHJlbGF0aXZlLXRvKSAqIDFlbTtcclxuICB9XHJcbiAgQGVsc2UgeyAvLyAkdW5pdCA9PSBweFxyXG4gICAgQHJldHVybiAkdmFsdWU7XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gbm9ybWFsaXplLWZvbnQtc2l6ZSgkdmFsdWUsICRyZWxhdGl2ZS10bzogJGJhc2UtZm9udC1zaXplKSB7XHJcbiAgQGlmIHVuaXQoJHZhbHVlKSAhPSAncHgnIHtcclxuICAgIEBlcnJvciBcIm5vcm1hbGl6ZS1mb250LXNpemUoKSBvbmx5IHN1cHBvcnRzIHB4IGlucHV0cy4gVGhlIHR5cGV5IGxpYnJhcnkgaXMgYmV0dGVyLlwiO1xyXG4gIH1cclxuICBmb250LXNpemU6IG5vcm1hbGl6ZS1yaHl0aG0oJHZhbHVlLCAkcmVsYXRpdmUtdG8pO1xyXG59XHJcblxyXG5AbWl4aW4gbm9ybWFsaXplLXJoeXRobSgkcHJvcGVydHksICR2YWx1ZXMsICRyZWxhdGl2ZS10bzogJGJhc2UtZm9udC1zaXplKSB7XHJcbiAgJHZhbHVlLWxpc3Q6ICR2YWx1ZXM7XHJcbiAgJHNlcDogc3BhY2U7XHJcbiAgQGlmIHR5cGUtb2YoJHZhbHVlcykgPT0gJ2xpc3QnIHtcclxuICAgICRzZXA6IGxpc3Qtc2VwYXJhdG9yKCR2YWx1ZXMpO1xyXG4gIH1cclxuICBAZWxzZSB7XHJcbiAgICAkdmFsdWUtbGlzdDogYXBwZW5kKCgpLCAkdmFsdWVzKTtcclxuICB9XHJcblxyXG4gICRub3JtYWxpemVkLXZhbHVlczogKCk7XHJcbiAgQGVhY2ggJHZhbHVlIGluICR2YWx1ZS1saXN0IHtcclxuICAgIEBpZiB1bml0bGVzcygkdmFsdWUpIGFuZCAkdmFsdWUgIT0gMCB7XHJcbiAgICAgICR2YWx1ZTogJHZhbHVlICogbm9ybWFsaXplLXJoeXRobSgkYmFzZS1saW5lLWhlaWdodCwgJHJlbGF0aXZlLXRvKTtcclxuICAgIH1cclxuICAgICRub3JtYWxpemVkLXZhbHVlczogYXBwZW5kKCRub3JtYWxpemVkLXZhbHVlcywgJHZhbHVlLCAkc2VwKTtcclxuICB9XHJcbiAgI3skcHJvcGVydHl9OiAkbm9ybWFsaXplZC12YWx1ZXM7XHJcbn1cclxuXHJcbkBtaXhpbiBub3JtYWxpemUtbWFyZ2luKCR2YWx1ZXMsICRyZWxhdGl2ZS10bzogJGJhc2UtZm9udC1zaXplKSB7XHJcbiAgQGluY2x1ZGUgbm9ybWFsaXplLXJoeXRobShtYXJnaW4sICR2YWx1ZXMsICRyZWxhdGl2ZS10byk7XHJcbn1cclxuXHJcbkBtaXhpbiBub3JtYWxpemUtbGluZS1oZWlnaHQoJGZvbnQtc2l6ZSwgJG1pbi1saW5lLXBhZGRpbmc6IDJweCkge1xyXG4gICRsaW5lczogY2VpbCgkZm9udC1zaXplIC8gJGJhc2UtbGluZS1oZWlnaHQpO1xyXG4gIC8vIElmIGxpbmVzIGFyZSBjcmFtcGVkIGluY2x1ZGUgc29tZSBleHRyYSBsZWFkaW5nLlxyXG4gIEBpZiAoJGxpbmVzICogJGJhc2UtbGluZS1oZWlnaHQgLSAkZm9udC1zaXplKSA8ICgkbWluLWxpbmUtcGFkZGluZyAqIDIpIHtcclxuICAgICRsaW5lczogJGxpbmVzICsgMTtcclxuICB9XHJcbiAgQGluY2x1ZGUgbm9ybWFsaXplLXJoeXRobShsaW5lLWhlaWdodCwgJGxpbmVzLCAkZm9udC1zaXplKTtcclxufVxyXG4iLCIvLyBIZWxwZXIgZnVuY3Rpb24gZm9yIHRoZSBub3JtYWxpemUoKSBtaXhpbi5cclxuQGZ1bmN0aW9uIF9ub3JtYWxpemUtaW5jbHVkZSgkc2VjdGlvbiwgJGV4Y2x1ZGU6IG51bGwpIHtcclxuICAvLyBJbml0aWFsaXplIHRoZSBnbG9iYWwgdmFyaWFibGVzIG5lZWRlZCBieSB0aGlzIGZ1bmN0aW9uLlxyXG4gIEBpZiBub3QgZ2xvYmFsX3ZhcmlhYmxlX2V4aXN0cyhfbm9ybWFsaXplLWluY2x1ZGUpIHtcclxuICAgICRfbm9ybWFsaXplLWluY2x1ZGU6ICgpICFnbG9iYWw7XHJcbiAgICAkX25vcm1hbGl6ZS1leGNsdWRlOiAoKSAhZ2xvYmFsO1xyXG4gIH1cclxuICAvLyBTaW5jZSB3ZSBhcmUgZ2l2ZW4gMiBwYXJhbWV0ZXJzLCBzZXQgdGhlIGdsb2JhbCB2YXJpYWJsZXMuXHJcbiAgQGlmICRleGNsdWRlICE9IG51bGwge1xyXG4gICAgJGluY2x1ZGU6ICRzZWN0aW9uO1xyXG4gICAgLy8gU2FzcyBkb2Vzbid0IGhhdmUgc3RhdGljIHZhcmlhYmxlcywgc28gdGhlIHdvcmstYXJvdW5kIGlzIHRvIHN0dWZmIHRoZXNlXHJcbiAgICAvLyB2YWx1ZXMgaW50byBnbG9iYWwgdmFyaWFibGVzIHNvIHdlIGNhbiBhY2Nlc3MgdGhlbSBpbiBmdXR1cmUgY2FsbHMuXHJcbiAgICAkX25vcm1hbGl6ZS1pbmNsdWRlOiBpZih0eXBlLW9mKCRpbmNsdWRlKSA9PSAnbGlzdCcsICRpbmNsdWRlLCAoJGluY2x1ZGUpKSAhZ2xvYmFsO1xyXG4gICAgJF9ub3JtYWxpemUtZXhjbHVkZTogaWYodHlwZS1vZigkZXhjbHVkZSkgPT0gJ2xpc3QnLCAkZXhjbHVkZSwgKCRleGNsdWRlKSkgIWdsb2JhbDtcclxuICAgIEByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vIENoZWNrIGlmICRzZWN0aW9uIGlzIGluIHRoZSAkaW5jbHVkZSBsaXN0LlxyXG4gIEBpZiBpbmRleCgkX25vcm1hbGl6ZS1pbmNsdWRlLCAkc2VjdGlvbikge1xyXG4gICAgQHJldHVybiB0cnVlO1xyXG4gIH1cclxuICAvLyBJZiAkaW5jbHVkZSBpcyBzZXQgdG8gKGFsbCksIG1ha2Ugc3VyZSAkc2VjdGlvbiBpcyBub3QgaW4gJGV4Y2x1ZGUuXHJcbiAgQGVsc2UgaWYgbm90IGluZGV4KCRfbm9ybWFsaXplLWV4Y2x1ZGUsICRzZWN0aW9uKSBhbmQgaW5kZXgoJF9ub3JtYWxpemUtaW5jbHVkZSwgYWxsKSB7XHJcbiAgICBAcmV0dXJuIHRydWU7XHJcbiAgfVxyXG4gIEByZXR1cm4gZmFsc2U7XHJcbn1cclxuXHJcbkBtaXhpbiBub3JtYWxpemUoJGluY2x1ZGU6IChhbGwpLCAkZXhjbHVkZTogKCkpIHtcclxuICAvLyBJbml0aWFsaXplIHRoZSBoZWxwZXIgZnVuY3Rpb24gYnkgcGFzc2luZyBpdCB0aGlzIG1peGluJ3MgcGFyYW1ldGVycy5cclxuICAkaW5pdDogX25vcm1hbGl6ZS1pbmNsdWRlKCRpbmNsdWRlLCAkZXhjbHVkZSk7XHJcblxyXG4gIC8vIElmIHdlJ3ZlIGN1c3RvbWl6ZWQgYW55IGZvbnQgdmFyaWFibGVzLCB3ZSdsbCBuZWVkIGV4dHJhIHByb3BlcnRpZXMuXHJcbiAgQGlmICRiYXNlLWZvbnQtc2l6ZSAhPSAxNnB4XHJcbiAgICBvciAkYmFzZS1saW5lLWhlaWdodCAhPSAyNHB4XHJcbiAgICBvciAkYmFzZS11bml0ICE9ICdlbSdcclxuICAgIG9yICRoMS1mb250LXNpemUgIT0gMiAgICAqICRiYXNlLWZvbnQtc2l6ZVxyXG4gICAgb3IgJGgyLWZvbnQtc2l6ZSAhPSAxLjUgICogJGJhc2UtZm9udC1zaXplXHJcbiAgICBvciAkaDMtZm9udC1zaXplICE9IDEuMTcgKiAkYmFzZS1mb250LXNpemVcclxuICAgIG9yICRoNC1mb250LXNpemUgIT0gMSAgICAqICRiYXNlLWZvbnQtc2l6ZVxyXG4gICAgb3IgJGg1LWZvbnQtc2l6ZSAhPSAwLjgzICogJGJhc2UtZm9udC1zaXplXHJcbiAgICBvciAkaDYtZm9udC1zaXplICE9IDAuNjcgKiAkYmFzZS1mb250LXNpemUge1xyXG4gICAgJG5vcm1hbGl6ZS12ZXJ0aWNhbC1yaHl0aG06IHRydWUgIWdsb2JhbDtcclxuICB9XHJcblxyXG4gIC8qISBub3JtYWxpemUtc2NzcyB8IE1JVC9HUEx2MiBMaWNlbnNlIHwgYml0Lmx5L25vcm1hbGl6ZS1zY3NzICovXHJcblxyXG4gIEBpZiBfbm9ybWFsaXplLWluY2x1ZGUoZG9jdW1lbnQpIHtcclxuICAgIC8qIERvY3VtZW50XHJcbiAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogMS4gQ2hhbmdlIHRoZSBkZWZhdWx0IGZvbnQgZmFtaWx5IGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxyXG4gICAgICogMi4gQ29ycmVjdCB0aGUgbGluZSBoZWlnaHQgaW4gYWxsIGJyb3dzZXJzLlxyXG4gICAgICogMy4gUHJldmVudCBhZGp1c3RtZW50cyBvZiBmb250IHNpemUgYWZ0ZXIgb3JpZW50YXRpb24gY2hhbmdlcyBpblxyXG4gICAgICogICAgSUUgb24gV2luZG93cyBQaG9uZSBhbmQgaW4gaU9TLlxyXG4gICAgICovXHJcblxyXG4gICAgaHRtbCB7XHJcbiAgICAgIGZvbnQtZmFtaWx5OiAkYmFzZS1mb250LWZhbWlseTsgLyogMSAqL1xyXG4gICAgICBAaWYgJG5vcm1hbGl6ZS12ZXJ0aWNhbC1yaHl0aG0ge1xyXG4gICAgICAgIC8vIENvcnJlY3Qgb2xkIGJyb3dzZXIgYnVnIHRoYXQgcHJldmVudGVkIGFjY2Vzc2libGUgcmVzaXppbmcgb2YgdGV4dFxyXG4gICAgICAgIC8vIHdoZW4gcm9vdCBmb250LXNpemUgaXMgc2V0IHdpdGggcHggb3IgZW0uXHJcbiAgICAgICAgZm9udC1zaXplOiAoJGJhc2UtZm9udC1zaXplIC8gMTZweCkgKiAxMDAlO1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAoJGJhc2UtbGluZS1oZWlnaHQgLyAkYmFzZS1mb250LXNpemUpICogMWVtOyAvKiAyICovXHJcbiAgICAgIH1cclxuICAgICAgQGVsc2Uge1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE1OyAvKiAyICovXHJcbiAgICAgIH1cclxuICAgICAgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8qIDMgKi9cclxuICAgICAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAzICovXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaWYgX25vcm1hbGl6ZS1pbmNsdWRlKHNlY3Rpb25zKSB7XHJcbiAgICAvKiBTZWN0aW9uc1xyXG4gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZSB0aGUgbWFyZ2luIGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxyXG4gICAgICovXHJcblxyXG4gICAgYm9keSB7XHJcbiAgICAgIG1hcmdpbjogMDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDktLlxyXG4gICAgICovXHJcblxyXG4gICAgYXJ0aWNsZSxcclxuICAgIGFzaWRlLFxyXG4gICAgZm9vdGVyLFxyXG4gICAgaGVhZGVyLFxyXG4gICAgbmF2LFxyXG4gICAgc2VjdGlvbiB7XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29ycmVjdCB0aGUgZm9udCBzaXplIGFuZCBtYXJnaW4gb24gYGgxYCBlbGVtZW50cyB3aXRoaW4gYHNlY3Rpb25gIGFuZFxyXG4gICAgICogYGFydGljbGVgIGNvbnRleHRzIGluIENocm9tZSwgRmlyZWZveCwgYW5kIFNhZmFyaS5cclxuICAgICAqL1xyXG5cclxuICAgIGgxIHtcclxuICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLWZvbnQtc2l6ZSgkaDEtZm9udC1zaXplKTtcclxuICAgICAgQGlmICRub3JtYWxpemUtdmVydGljYWwtcmh5dGhtIHtcclxuICAgICAgICBAaW5jbHVkZSBub3JtYWxpemUtbGluZS1oZWlnaHQoJGgxLWZvbnQtc2l6ZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIEBpZiAkbm9ybWFsaXplLXZlcnRpY2FsLXJoeXRobSB7XHJcbiAgICAgICAgLyogU2V0IDEgdW5pdCBvZiB2ZXJ0aWNhbCByaHl0aG0gb24gdGhlIHRvcCBhbmQgYm90dG9tIG1hcmdpbnMuICovXHJcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLW1hcmdpbigxIDAsICRoMS1mb250LXNpemUpO1xyXG4gICAgICB9XHJcbiAgICAgIEBlbHNlIHtcclxuICAgICAgICBtYXJnaW46IDAuNjdlbSAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQGlmICRub3JtYWxpemUtdmVydGljYWwtcmh5dGhtIHtcclxuICAgICAgaDIge1xyXG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1mb250LXNpemUoJGgyLWZvbnQtc2l6ZSk7XHJcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLWxpbmUtaGVpZ2h0KCRoMi1mb250LXNpemUpO1xyXG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1tYXJnaW4oMSAwLCAkaDItZm9udC1zaXplKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaDMge1xyXG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1mb250LXNpemUoJGgzLWZvbnQtc2l6ZSk7XHJcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLWxpbmUtaGVpZ2h0KCRoMy1mb250LXNpemUpO1xyXG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1tYXJnaW4oMSAwLCAkaDMtZm9udC1zaXplKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaDQge1xyXG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1mb250LXNpemUoJGg0LWZvbnQtc2l6ZSk7XHJcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLWxpbmUtaGVpZ2h0KCRoNC1mb250LXNpemUpO1xyXG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1tYXJnaW4oMSAwLCAkaDQtZm9udC1zaXplKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaDUge1xyXG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1mb250LXNpemUoJGg1LWZvbnQtc2l6ZSk7XHJcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLWxpbmUtaGVpZ2h0KCRoNS1mb250LXNpemUpO1xyXG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1tYXJnaW4oMSAwLCAkaDUtZm9udC1zaXplKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaDYge1xyXG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1mb250LXNpemUoJGg2LWZvbnQtc2l6ZSk7XHJcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLWxpbmUtaGVpZ2h0KCRoNi1mb250LXNpemUpO1xyXG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1tYXJnaW4oMSAwLCAkaDYtZm9udC1zaXplKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGlmIF9ub3JtYWxpemUtaW5jbHVkZShncm91cGluZykge1xyXG4gICAgLyogR3JvdXBpbmcgY29udGVudFxyXG4gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbiAgICBAaWYgJG5vcm1hbGl6ZS12ZXJ0aWNhbC1yaHl0aG0ge1xyXG4gICAgICAvKipcclxuICAgICAgICogU2V0IDEgdW5pdCBvZiB2ZXJ0aWNhbCByaHl0aG0gb24gdGhlIHRvcCBhbmQgYm90dG9tIG1hcmdpbi5cclxuICAgICAgICovXHJcblxyXG4gICAgICBibG9ja3F1b3RlIHtcclxuICAgICAgICBAaW5jbHVkZSBub3JtYWxpemUtbWFyZ2luKDEgJGluZGVudC1hbW91bnQpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBkbCxcclxuICAgICAgb2wsXHJcbiAgICAgIHVsIHtcclxuICAgICAgICBAaW5jbHVkZSBub3JtYWxpemUtbWFyZ2luKDEgMCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8qKlxyXG4gICAgICAgKiBUdXJuIG9mZiBtYXJnaW5zIG9uIG5lc3RlZCBsaXN0cy5cclxuICAgICAgICovXHJcblxyXG4gICAgICBvbCxcclxuICAgICAgdWwge1xyXG4gICAgICAgIG9sLFxyXG4gICAgICAgIHVsIHtcclxuICAgICAgICAgIG1hcmdpbjogMDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGRkIHtcclxuICAgICAgICBtYXJnaW46IDAgMCAwICRpbmRlbnQtYW1vdW50O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBvbCxcclxuICAgICAgdWwge1xyXG4gICAgICAgIHBhZGRpbmc6IDAgMCAwICRpbmRlbnQtYW1vdW50O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSA5LS5cclxuICAgICAqL1xyXG5cclxuICAgIGZpZ2NhcHRpb24sXHJcbiAgICBmaWd1cmUge1xyXG4gICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZCB0aGUgY29ycmVjdCBtYXJnaW4gaW4gSUUgOC5cclxuICAgICAqL1xyXG5cclxuICAgIGZpZ3VyZSB7XHJcbiAgICAgIEBpZiAkbm9ybWFsaXplLXZlcnRpY2FsLXJoeXRobSB7XHJcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLW1hcmdpbigxICRpbmRlbnQtYW1vdW50KTtcclxuICAgICAgfVxyXG4gICAgICBAZWxzZSB7XHJcbiAgICAgICAgbWFyZ2luOiAxZW0gJGluZGVudC1hbW91bnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIEZpcmVmb3guXHJcbiAgICAgKiAyLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlIGFuZCBJRS5cclxuICAgICAqL1xyXG5cclxuICAgIGhyIHtcclxuICAgICAgYm94LXNpemluZzogY29udGVudC1ib3g7IC8qIDEgKi9cclxuICAgICAgaGVpZ2h0OiAwOyAvKiAxICovXHJcbiAgICAgIG92ZXJmbG93OiB2aXNpYmxlOyAvKiAyICovXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRS5cclxuICAgICAqL1xyXG5cclxuICAgIG1haW4ge1xyXG4gICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIH1cclxuXHJcbiAgICBAaWYgJG5vcm1hbGl6ZS12ZXJ0aWNhbC1yaHl0aG0ge1xyXG4gICAgICAvKipcclxuICAgICAgICogU2V0IDEgdW5pdCBvZiB2ZXJ0aWNhbCByaHl0aG0gb24gdGhlIHRvcCBhbmQgYm90dG9tIG1hcmdpbi5cclxuICAgICAgICovXHJcblxyXG4gICAgICBwLFxyXG4gICAgICBwcmUge1xyXG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1tYXJnaW4oMSAwKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cclxuICAgICAqIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cclxuICAgICAqL1xyXG5cclxuICAgIHByZSB7XHJcbiAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTsgLyogMSAqL1xyXG4gICAgICBmb250LXNpemU6IDFlbTsgLyogMiAqL1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGlmIF9ub3JtYWxpemUtaW5jbHVkZShsaW5rcykge1xyXG4gICAgLyogTGlua3NcclxuICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiAxLiBSZW1vdmUgdGhlIGdyYXkgYmFja2dyb3VuZCBvbiBhY3RpdmUgbGlua3MgaW4gSUUgMTAuXHJcbiAgICAgKiAyLiBSZW1vdmUgZ2FwcyBpbiBsaW5rcyB1bmRlcmxpbmUgaW4gaU9TIDgrIGFuZCBTYWZhcmkgOCsuXHJcbiAgICAgKi9cclxuXHJcbiAgICBhIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IC8qIDEgKi9cclxuICAgICAgLXdlYmtpdC10ZXh0LWRlY29yYXRpb24tc2tpcDogb2JqZWN0czsgLyogMiAqL1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVtb3ZlIHRoZSBvdXRsaW5lIG9uIGZvY3VzZWQgbGlua3Mgd2hlbiB0aGV5IGFyZSBhbHNvIGFjdGl2ZSBvciBob3ZlcmVkXHJcbiAgICAgKiBpbiBhbGwgYnJvd3NlcnMgKG9waW5pb25hdGVkKS5cclxuICAgICAqL1xyXG5cclxuICAgIGE6YWN0aXZlLFxyXG4gICAgYTpob3ZlciB7XHJcbiAgICAgIG91dGxpbmUtd2lkdGg6IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaWYgX25vcm1hbGl6ZS1pbmNsdWRlKHRleHQpIHtcclxuICAgIC8qIFRleHQtbGV2ZWwgc2VtYW50aWNzXHJcbiAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogMS4gUmVtb3ZlIHRoZSBib3R0b20gYm9yZGVyIGluIEZpcmVmb3ggMzktLlxyXG4gICAgICogMi4gQWRkIHRoZSBjb3JyZWN0IHRleHQgZGVjb3JhdGlvbiBpbiBDaHJvbWUsIEVkZ2UsIElFLCBPcGVyYSwgYW5kIFNhZmFyaS5cclxuICAgICAqL1xyXG5cclxuICAgIGFiYnJbdGl0bGVdIHtcclxuICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTsgLyogMSAqL1xyXG4gICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgLyogMiAqL1xyXG4gICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7IC8qIDIgKi9cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByZXZlbnQgdGhlIGR1cGxpY2F0ZSBhcHBsaWNhdGlvbiBvZiBgYm9sZGVyYCBieSB0aGUgbmV4dCBydWxlIGluIFNhZmFyaSA2LlxyXG4gICAgICovXHJcblxyXG4gICAgYixcclxuICAgIHN0cm9uZyB7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgd2VpZ2h0IGluIENocm9tZSwgRWRnZSwgYW5kIFNhZmFyaS5cclxuICAgICAqL1xyXG5cclxuICAgIGIsXHJcbiAgICBzdHJvbmcge1xyXG4gICAgICBmb250LXdlaWdodDogYm9sZGVyO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cclxuICAgICAqIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cclxuICAgICAqL1xyXG5cclxuICAgIGNvZGUsXHJcbiAgICBrYmQsXHJcbiAgICBzYW1wIHtcclxuICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlOyAvKiAxICovXHJcbiAgICAgIGZvbnQtc2l6ZTogMWVtOyAvKiAyICovXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGQgdGhlIGNvcnJlY3QgZm9udCBzdHlsZSBpbiBBbmRyb2lkIDQuMy0uXHJcbiAgICAgKi9cclxuXHJcbiAgICBkZm4ge1xyXG4gICAgICBmb250LXN0eWxlOiBpdGFsaWM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGQgdGhlIGNvcnJlY3QgYmFja2dyb3VuZCBhbmQgY29sb3IgaW4gSUUgOS0uXHJcbiAgICAgKi9cclxuXHJcbiAgICBtYXJrIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmMDtcclxuICAgICAgY29sb3I6ICMwMDA7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGQgdGhlIGNvcnJlY3QgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cclxuICAgICAqL1xyXG5cclxuICAgIHNtYWxsIHtcclxuICAgICAgZm9udC1zaXplOiA4MCU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBlbGVtZW50cyBmcm9tIGFmZmVjdGluZyB0aGUgbGluZSBoZWlnaHQgaW5cclxuICAgICAqIGFsbCBicm93c2Vycy5cclxuICAgICAqL1xyXG5cclxuICAgIHN1YixcclxuICAgIHN1cCB7XHJcbiAgICAgIGZvbnQtc2l6ZTogNzUlO1xyXG4gICAgICBsaW5lLWhlaWdodDogMDtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XHJcbiAgICB9XHJcblxyXG4gICAgc3ViIHtcclxuICAgICAgYm90dG9tOiAtMC4yNWVtO1xyXG4gICAgfVxyXG5cclxuICAgIHN1cCB7XHJcbiAgICAgIHRvcDogLTAuNWVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGlmIF9ub3JtYWxpemUtaW5jbHVkZShlbWJlZGRlZCkge1xyXG4gICAgLyogRW1iZWRkZWQgY29udGVudFxyXG4gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDktLlxyXG4gICAgICovXHJcblxyXG4gICAgYXVkaW8sXHJcbiAgICB2aWRlbyB7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIGlPUyA0LTcuXHJcbiAgICAgKi9cclxuXHJcbiAgICBhdWRpbzpub3QoW2NvbnRyb2xzXSkge1xyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICBoZWlnaHQ6IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZW1vdmUgdGhlIGJvcmRlciBvbiBpbWFnZXMgaW5zaWRlIGxpbmtzIGluIElFIDEwLS5cclxuICAgICAqL1xyXG5cclxuICAgIGltZyB7XHJcbiAgICAgIGJvcmRlci1zdHlsZTogbm9uZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhpZGUgdGhlIG92ZXJmbG93IGluIElFLlxyXG4gICAgICovXHJcblxyXG4gICAgc3ZnOm5vdCg6cm9vdCkge1xyXG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGlmIF9ub3JtYWxpemUtaW5jbHVkZShmb3Jtcykge1xyXG4gICAgLyogRm9ybXNcclxuICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiAxLiBDaGFuZ2UgdGhlIGZvbnQgc3R5bGVzIGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxyXG4gICAgICogMi4gUmVtb3ZlIHRoZSBtYXJnaW4gaW4gRmlyZWZveCBhbmQgU2FmYXJpLlxyXG4gICAgICovXHJcblxyXG4gICAgYnV0dG9uLFxyXG4gICAgaW5wdXQsXHJcbiAgICBvcHRncm91cCxcclxuICAgIHNlbGVjdCxcclxuICAgIHRleHRhcmVhIHtcclxuICAgICAgZm9udC1mYW1pbHk6ICRiYXNlLWZvbnQtZmFtaWx5OyAvKiAxICovXHJcbiAgICAgIGZvbnQtc2l6ZTogMTAwJTsgLyogMSAqL1xyXG4gICAgICBAaWYgJG5vcm1hbGl6ZS12ZXJ0aWNhbC1yaHl0aG0ge1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAoJGJhc2UtbGluZS1oZWlnaHQgLyAkYmFzZS1mb250LXNpemUpICogMWVtOyAvKiAxICovXHJcbiAgICAgIH1cclxuICAgICAgQGVsc2Uge1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE1OyAvKiAxICovXHJcbiAgICAgIH1cclxuICAgICAgbWFyZ2luOiAwOyAvKiAyICovXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTaG93IHRoZSBvdmVyZmxvdyBpbiBJRS5cclxuICAgICAqL1xyXG5cclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBFZGdlLCBGaXJlZm94LCBhbmQgSUUuXHJcbiAgICAgKiAxLiBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEZpcmVmb3guXHJcbiAgICAgKi9cclxuXHJcbiAgICBidXR0b24sXHJcbiAgICBzZWxlY3QgeyAvKiAxICovXHJcbiAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogMS4gUHJldmVudCBhIFdlYktpdCBidWcgd2hlcmUgKDIpIGRlc3Ryb3lzIG5hdGl2ZSBgYXVkaW9gIGFuZCBgdmlkZW9gXHJcbiAgICAgKiAgICBjb250cm9scyBpbiBBbmRyb2lkIDQuXHJcbiAgICAgKiAyLiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxyXG4gICAgICovXHJcblxyXG4gICAgYnV0dG9uLFxyXG4gICAgaHRtbCBbdHlwZT1cImJ1dHRvblwiXSwgLyogMSAqL1xyXG4gICAgW3R5cGU9XCJyZXNldFwiXSxcclxuICAgIFt0eXBlPVwic3VibWl0XCJdIHtcclxuICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247IC8qIDIgKi9cclxuICAgIH1cclxuXHJcbiAgICBidXR0b24sXHJcbiAgICBbdHlwZT1cImJ1dHRvblwiXSxcclxuICAgIFt0eXBlPVwicmVzZXRcIl0sXHJcbiAgICBbdHlwZT1cInN1Ym1pdFwiXSB7XHJcblxyXG4gICAgICAvKipcclxuICAgICAgICogUmVtb3ZlIHRoZSBpbm5lciBib3JkZXIgYW5kIHBhZGRpbmcgaW4gRmlyZWZveC5cclxuICAgICAgICovXHJcblxyXG4gICAgICAmOjotbW96LWZvY3VzLWlubmVyIHtcclxuICAgICAgICBib3JkZXItc3R5bGU6IG5vbmU7XHJcbiAgICAgICAgcGFkZGluZzogMDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLyoqXHJcbiAgICAgICAqIFJlc3RvcmUgdGhlIGZvY3VzIHN0eWxlcyB1bnNldCBieSB0aGUgcHJldmlvdXMgcnVsZS5cclxuICAgICAgICovXHJcblxyXG4gICAgICAmOi1tb3otZm9jdXNyaW5nIHtcclxuICAgICAgICBvdXRsaW5lOiAxcHggZG90dGVkIEJ1dHRvblRleHQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UuXHJcbiAgICAgKi9cclxuXHJcbiAgICBpbnB1dCB7XHJcbiAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gSUUgMTAtLlxyXG4gICAgICogMi4gUmVtb3ZlIHRoZSBwYWRkaW5nIGluIElFIDEwLS5cclxuICAgICAqL1xyXG5cclxuICAgIFt0eXBlPVwiY2hlY2tib3hcIl0sXHJcbiAgICBbdHlwZT1cInJhZGlvXCJdIHtcclxuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLyogMSAqL1xyXG4gICAgICBwYWRkaW5nOiAwOyAvKiAyICovXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb3JyZWN0IHRoZSBjdXJzb3Igc3R5bGUgb2YgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgYnV0dG9ucyBpbiBDaHJvbWUuXHJcbiAgICAgKi9cclxuXHJcbiAgICBbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcclxuICAgIFt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcclxuICAgICAgaGVpZ2h0OiBhdXRvO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogMS4gQ29ycmVjdCB0aGUgb2RkIGFwcGVhcmFuY2UgaW4gQ2hyb21lIGFuZCBTYWZhcmkuXHJcbiAgICAgKiAyLiBDb3JyZWN0IHRoZSBvdXRsaW5lIHN0eWxlIGluIFNhZmFyaS5cclxuICAgICAqL1xyXG5cclxuICAgIFt0eXBlPVwic2VhcmNoXCJdIHtcclxuICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7IC8qIDEgKi9cclxuICAgICAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7IC8qIDIgKi9cclxuXHJcbiAgICAgIC8qKlxyXG4gICAgICAgKiBSZW1vdmUgdGhlIGlubmVyIHBhZGRpbmcgYW5kIGNhbmNlbCBidXR0b25zIGluIENocm9tZSBhbmQgU2FmYXJpIG9uIG1hY09TLlxyXG4gICAgICAgKi9cclxuXHJcbiAgICAgICY6Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sXHJcbiAgICAgICY6Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xyXG4gICAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogMS4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cclxuICAgICAqIDIuIENoYW5nZSBmb250IHByb3BlcnRpZXMgdG8gYGluaGVyaXRgIGluIFNhZmFyaS5cclxuICAgICAqL1xyXG5cclxuICAgIDo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24ge1xyXG4gICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLyogMSAqL1xyXG4gICAgICBmb250OiBpbmhlcml0OyAvKiAyICovXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDaGFuZ2UgdGhlIGJvcmRlciwgbWFyZ2luLCBhbmQgcGFkZGluZyBpbiBhbGwgYnJvd3NlcnMgKG9waW5pb25hdGVkKS5cclxuICAgICAqL1xyXG5cclxuICAgIGZpZWxkc2V0IHtcclxuICAgICAgYm9yZGVyOiAxcHggc29saWQgI2MwYzBjMDtcclxuICAgICAgbWFyZ2luOiAwIDJweDtcclxuICAgICAgcGFkZGluZzogMC4zNWVtIDAuNjI1ZW0gMC43NWVtO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogMS4gQ29ycmVjdCB0aGUgdGV4dCB3cmFwcGluZyBpbiBFZGdlIGFuZCBJRS5cclxuICAgICAqIDIuIENvcnJlY3QgdGhlIGNvbG9yIGluaGVyaXRhbmNlIGZyb20gYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBJRS5cclxuICAgICAqIDMuIFJlbW92ZSB0aGUgcGFkZGluZyBzbyBkZXZlbG9wZXJzIGFyZSBub3QgY2F1Z2h0IG91dCB3aGVuIHRoZXkgemVybyBvdXRcclxuICAgICAqICAgIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gYWxsIGJyb3dzZXJzLlxyXG4gICAgICovXHJcblxyXG4gICAgbGVnZW5kIHtcclxuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLyogMSAqL1xyXG4gICAgICBkaXNwbGF5OiB0YWJsZTsgLyogMSAqL1xyXG4gICAgICBtYXgtd2lkdGg6IDEwMCU7IC8qIDEgKi9cclxuICAgICAgcGFkZGluZzogMDsgLyogMyAqL1xyXG4gICAgICBjb2xvcjogaW5oZXJpdDsgLyogMiAqL1xyXG4gICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsOyAvKiAxICovXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiAxLiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSA5LS5cclxuICAgICAqIDIuIEFkZCB0aGUgY29ycmVjdCB2ZXJ0aWNhbCBhbGlnbm1lbnQgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXHJcbiAgICAgKi9cclxuXHJcbiAgICBwcm9ncmVzcyB7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsgLyogMSAqL1xyXG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IC8qIDIgKi9cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZSB0aGUgZGVmYXVsdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgaW4gSUUuXHJcbiAgICAgKi9cclxuXHJcbiAgICB0ZXh0YXJlYSB7XHJcbiAgICAgIG92ZXJmbG93OiBhdXRvO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGlmIF9ub3JtYWxpemUtaW5jbHVkZShpbnRlcmFjdGl2ZSkge1xyXG4gICAgLyogSW50ZXJhY3RpdmVcclxuICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4gICAgLypcclxuICAgICAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIEVkZ2UsIElFLCBhbmQgRmlyZWZveC5cclxuICAgICAqL1xyXG5cclxuICAgIGRldGFpbHMge1xyXG4gICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIH1cclxuXHJcbiAgICAvKlxyXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gYWxsIGJyb3dzZXJzLlxyXG4gICAgICovXHJcblxyXG4gICAgc3VtbWFyeSB7XHJcbiAgICAgIGRpc3BsYXk6IGxpc3QtaXRlbTtcclxuICAgIH1cclxuXHJcbiAgICAvKlxyXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgOS0uXHJcbiAgICAgKi9cclxuXHJcbiAgICBtZW51IHtcclxuICAgICAgZGlzcGxheTogYmxvY2s7XHJcblxyXG4gICAgICBAaWYgJG5vcm1hbGl6ZS12ZXJ0aWNhbC1yaHl0aG0ge1xyXG4gICAgICAgIC8qXHJcbiAgICAgICAgICogMS4gU2V0IDEgdW5pdCBvZiB2ZXJ0aWNhbCByaHl0aG0gb24gdGhlIHRvcCBhbmQgYm90dG9tIG1hcmdpbi5cclxuICAgICAgICAgKiAyLiBTZXQgY29uc2lzdGVudCBzcGFjZSBmb3IgdGhlIGxpc3Qgc3R5bGUgaW1hZ2UuXHJcbiAgICAgICAgICovXHJcblxyXG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1tYXJnaW4oMSAwKTsgLyogMSAqL1xyXG4gICAgICAgIHBhZGRpbmc6IDAgMCAwICRpbmRlbnQtYW1vdW50OyAvKiAyICovXHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIFR1cm4gb2ZmIG1hcmdpbnMgb24gbmVzdGVkIGxpc3RzLlxyXG4gICAgICAgICAqL1xyXG5cclxuICAgICAgICBtZW51ICYsXHJcbiAgICAgICAgb2wgJixcclxuICAgICAgICB1bCAmIHtcclxuICAgICAgICAgIG1hcmdpbjogMDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpZiBfbm9ybWFsaXplLWluY2x1ZGUoc2NyaXB0aW5nKSB7XHJcbiAgICAvKiBTY3JpcHRpbmdcclxuICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSA5LS5cclxuICAgICAqL1xyXG5cclxuICAgIGNhbnZhcyB7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFLlxyXG4gICAgICovXHJcblxyXG4gICAgdGVtcGxhdGUge1xyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGlmIF9ub3JtYWxpemUtaW5jbHVkZShoaWRkZW4pIHtcclxuICAgIC8qIEhpZGRlblxyXG4gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDEwLS5cclxuICAgICAqL1xyXG5cclxuICAgIFtoaWRkZW5dIHtcclxuICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLy8vXHJcbi8vLyBDaGVja3Mgd2hldGhlciBgJGZ1bmN0aW9uc2AgZXhpc3QgaW4gZ2xvYmFsIHNjb3BlLlxyXG4vLy9cclxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxyXG4vLy9cclxuLy8vIEBwYXJhbSB7QXJnTGlzdH0gJGZ1bmN0aW9ucyAtIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIGNoZWNrIGZvclxyXG4vLy9cclxuLy8vIEByZXR1cm4ge0Jvb2x9IFdoZXRoZXIgb3Igbm90IHRoZXJlIGFyZSBtaXNzaW5nIGRlcGVuZGVuY2llc1xyXG4vLy9cclxuIFxyXG5AZnVuY3Rpb24gc2wtbWlzc2luZy1kZXBlbmRlbmNpZXMoJGZ1bmN0aW9ucy4uLikge1xyXG4gICRtaXNzaW5nLWRlcGVuZGVuY2llczogKCk7XHJcbiAgXHJcbiAgQGVhY2ggJGZ1bmN0aW9uIGluICRmdW5jdGlvbnMge1xyXG4gICAgQGlmIG5vdCBmdW5jdGlvbi1leGlzdHMoJGZ1bmN0aW9uKSB7XHJcbiAgICAgICRtaXNzaW5nLWRlcGVuZGVuY2llczogYXBwZW5kKCRtaXNzaW5nLWRlcGVuZGVuY2llcywgJGZ1bmN0aW9uLCBjb21tYSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIEBpZiBsZW5ndGgoJG1pc3NpbmctZGVwZW5kZW5jaWVzKSA+IDAge1xyXG4gICAgQGVycm9yICdVbm1ldCBkZXBlbmRlbmNpZXMhIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSByZXF1aXJlZDogI3skbWlzc2luZy1kZXBlbmRlbmNpZXN9Lic7XHJcbiAgfVxyXG5cclxuICBAcmV0dXJuIGxlbmd0aCgkbWlzc2luZy1kZXBlbmRlbmNpZXMpID4gMDtcclxufVxyXG4iLCIvLy9cclxuLy8vIFJldHVybnMgdHJ1dGhpbmVzcyBvZiBgJHZhbHVlYC5cclxuLy8vXHJcbi8vLyBAYWNjZXNzIHByaXZhdGVcclxuLy8vXHJcbi8vLyBAcGFyYW0geyp9ICR2YWx1ZSAtIHZhbHVlIHRvIGNoZWNrXHJcbi8vL1xyXG4vLy8gQHJldHVybiB7Qm9vbH1cclxuLy8vXHJcbiBcclxuQGZ1bmN0aW9uIHNsLWlzLXRydWUoJHZhbHVlKSB7XHJcbiAgQHJldHVybiBpZigkdmFsdWUgPT0gbnVsbCwgZmFsc2UsICR2YWx1ZSBhbmQgJHZhbHVlICE9IG51bGwgYW5kICR2YWx1ZSAhPSAnJyBhbmQgJHZhbHVlICE9ICgpKTtcclxufVxyXG4iLCIvLy9cclxuLy8vIFJldHVybnMgd2hldGhlciBgJGxpc3RgIGNvbnRhaW5zIGAkdmFsdWVgLlxyXG4vLy9cclxuLy8vIEBpZ25vcmUgRG9jdW1lbnRhdGlvbjogaHR0cDovL2F0LWltcG9ydC5naXRodWIuaW8vU2Fzc3lMaXN0cy9kb2N1bWVudGF0aW9uLyNmdW5jdGlvbi1zbC1jb250YWluXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtMaXN0fSAgICAkbGlzdCAgLSBsaXN0IHRvIGNoZWNrXHJcbi8vLyBAcGFyYW0geyp9ICAgICAgICR2YWx1ZSAtIHZhbHVlIHRvIGxvb2sgZm9yXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGVcclxuLy8vIHNsLWNvbnRhaW4oYSBiIGMsIGEpXHJcbi8vLyAvLyB0cnVlXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGVcclxuLy8vIHNsLWNvbnRhaW4oYSBiIGMsIHopXHJcbi8vLyAvLyBmYWxzZVxyXG4vLy9cclxuLy8vIEByZXR1cm4ge0Jvb2x9XHJcbi8vL1xyXG5cclxuQGZ1bmN0aW9uIHNsLWNvbnRhaW4oJGxpc3QsICR2YWx1ZSkge1xyXG4gIEByZXR1cm4gbm90IG5vdCBpbmRleCgkbGlzdCwgJHZhbHVlKTtcclxufVxyXG5cclxuLy8vXHJcbi8vLyBAcmVxdWlyZXMgc2wtY29udGFpblxyXG4vLy8gQGFsaWFzIHNsLWNvbnRhaW5cclxuLy8vXHJcbiBcclxuQGZ1bmN0aW9uIHNsLWluY2x1ZGUoJGxpc3QsICR2YWx1ZSkge1xyXG4gIEByZXR1cm4gc2wtY29udGFpbigkbGlzdCwgJHZhbHVlKTtcclxufVxyXG4iLCIvLy8gUmVtb3ZlcyBhbGwgZmFsc2UgYW5kIG51bGwgdmFsdWVzIGZyb20gYCRsaXN0YC5cclxuLy8vXHJcbi8vLyBAaWdub3JlIERvY3VtZW50YXRpb246IGh0dHA6Ly9hdC1pbXBvcnQuZ2l0aHViLmlvL1Nhc3N5TGlzdHMvZG9jdW1lbnRhdGlvbi8jZnVuY3Rpb24tc2wtcHVyZ2VcclxuLy8vXHJcbi8vLyBAcmVxdWlyZXMgc2wtaXMtdHJ1ZVxyXG4vLy8gQHJlcXVpcmVzIHNsLXRvLWxpc3RcclxuLy8vXHJcbi8vLyBAcGFyYW0ge0xpc3R9ICRsaXN0IC0gbGlzdCB0byBwdXJnZVxyXG4vLy9cclxuLy8vIEBleGFtcGxlXHJcbi8vLyBzbC1wdXJnZShudWxsIGEgZmFsc2UgYilcclxuLy8vIC8vIGEgYlxyXG4vLy9cclxuLy8vIEByZXR1cm4ge0xpc3R9XHJcbi8vL1xyXG5cclxuQGZ1bmN0aW9uIHNsLXB1cmdlKCRsaXN0KSB7XHJcbiAgJF86IHNsLW1pc3NpbmctZGVwZW5kZW5jaWVzKCdzbC1pcy10cnVlJywgJ3NsLXRvLWxpc3QnKTtcclxuICBcclxuICAkcmVzdWx0OiAoKTtcclxuXHJcbiAgQGVhY2ggJGl0ZW0gaW4gJGxpc3Qge1xyXG4gICAgQGlmIHNsLWlzLXRydWUoJGl0ZW0pIHtcclxuICAgICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICRpdGVtLCBsaXN0LXNlcGFyYXRvcigkbGlzdCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQHJldHVybiBzbC10by1saXN0KCRyZXN1bHQpO1xyXG59XHJcblxyXG4vLy9cclxuLy8vIEByZXF1aXJlcyBzbC1wdXJnZVxyXG4vLy8gQGFsaWFzIHNsLXB1cmdlXHJcbi8vL1xyXG4gXHJcbkBmdW5jdGlvbiBzbC1jbGVhbigkbGlzdCkge1xyXG4gIEByZXR1cm4gc2wtcHVyZ2UoJGxpc3QpO1xyXG59XHJcbiIsIi8vL1xyXG4vLy8gUmVtb3ZlcyB2YWx1ZShzKSBgJHZhbHVlYCBmcm9tIGAkbGlzdGAuXHJcbi8vL1xyXG4vLy8gQGlnbm9yZSBEb2N1bWVudGF0aW9uOiBodHRwOi8vYXQtaW1wb3J0LmdpdGh1Yi5pby9TYXNzeUxpc3RzL2RvY3VtZW50YXRpb24vI2Z1bmN0aW9uLXNsLXJlbW92ZVxyXG4vLy9cclxuLy8vIEByZXF1aXJlcyBzbC1yZXBsYWNlXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtMaXN0fSAgICAkbGlzdCAgICAgIC0gbGlzdCB0byB1cGRhdGVcclxuLy8vIEBwYXJhbSB7Kn0gICAgICAgJHZhbHVlICAgICAtIHZhbHVlIHRvIHJlbW92ZVxyXG4vLy9cclxuLy8vIEBleGFtcGxlXHJcbi8vLyBzbC1yZW1vdmUoYSBiIGMsIGEpXHJcbi8vLyAvLyBiIGNcclxuLy8vXHJcbi8vLyBAcmV0dXJuIHtMaXN0fVxyXG4vLy9cclxuXHJcbkBmdW5jdGlvbiBzbC1yZW1vdmUoJGxpc3QsICR2YWx1ZSkge1xyXG4gICRfOiBzbC1taXNzaW5nLWRlcGVuZGVuY2llcygnc2wtcmVwbGFjZScpO1xyXG5cclxuICBAcmV0dXJuIHNsLXJlcGxhY2UoJGxpc3QsICR2YWx1ZSwgbnVsbCk7XHJcbn1cclxuXHJcbi8vL1xyXG4vLy8gQHJlcXVpcmVzIHNsLXJlbW92ZVxyXG4vLy8gQGFsaWFzIHNsLXJlbW92ZVxyXG4vLy9cclxuXHJcbkBmdW5jdGlvbiBzbC13aXRob3V0KCRsaXN0LCAkdmFsdWUpIHtcclxuICBAcmV0dXJuIHNsLXJlbW92ZSgkbGlzdCwgJHZhbHVlKTtcclxufVxyXG4iLCIvLy9cclxuLy8vIFJlcGxhY2VzIGAkb2xkYCBieSBgJG5ld2AgaW4gYCRsaXN0YC5cclxuLy8vXHJcbi8vLyBAaWdub3JlIERvY3VtZW50YXRpb246IGh0dHA6Ly9hdC1pbXBvcnQuZ2l0aHViLmlvL1Nhc3N5TGlzdHMvZG9jdW1lbnRhdGlvbi8jZnVuY3Rpb24tc2wtcmVwbGFjZVxyXG4vLy9cclxuLy8vIEByZXF1aXJlcyBzbC1pcy10cnVlXHJcbi8vLyBAcmVxdWlyZXMgc2wtcHVyZ2VcclxuLy8vIEByZXF1aXJlcyBzbC10by1saXN0XHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtMaXN0fSAgICAkbGlzdCAgLSBsaXN0IHRvIHVwZGF0ZVxyXG4vLy8gQHBhcmFtIHsqfSAgICAgICAkb2xkICAgLSB2YWx1ZSB0byByZXBsYWNlXHJcbi8vLyBAcGFyYW0geyp9ICAgICAgICR2YWx1ZSAtIG5ldyB2YWx1ZSBmb3IgJG9sZFxyXG4vLy9cclxuLy8vIEBleGFtcGxlXHJcbi8vLyBzbC1yZXBsYWNlKGEgYiBjLCBiLCB6KVxyXG4vLy8gLy8gYSB6IGNcclxuLy8vXHJcbi8vLyBAZXhhbXBsZVxyXG4vLy8gc2wtcmVwbGFjZShhIGIgYywgeSwgeilcclxuLy8vIC8vIGEgYiBjXHJcbi8vLyBcclxuLy8vIEByZXR1cm4ge0xpc3R9XHJcbi8vL1xyXG4gXHJcbkBmdW5jdGlvbiBzbC1yZXBsYWNlKCRsaXN0LCAkb2xkLCAkdmFsdWUpIHtcclxuICAkXzogc2wtbWlzc2luZy1kZXBlbmRlbmNpZXMoJ3NsLWlzLXRydWUnLCAnc2wtcHVyZ2UnLCAnc2wtdG8tbGlzdCcpO1xyXG5cclxuICAkcnVubmluZzogdHJ1ZTtcclxuXHJcbiAgQHdoaWxlICRydW5uaW5nIHtcclxuICAgICRpbmRleDogaW5kZXgoJGxpc3QsICRvbGQpO1xyXG5cclxuICAgIEBpZiBub3QgJGluZGV4IHtcclxuICAgICAgJHJ1bm5pbmc6IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIEBlbHNlIHtcclxuICAgICAgJGxpc3Q6IHNldC1udGgoJGxpc3QsICRpbmRleCwgJHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICAkbGlzdDogaWYoc2wtaXMtdHJ1ZSgkdmFsdWUpLCAkbGlzdCwgc2wtcHVyZ2UoJGxpc3QpKTtcclxuICBcclxuICBAcmV0dXJuIHNsLXRvLWxpc3QoJGxpc3QpO1xyXG59XHJcbiIsIi8vL1xyXG4vLy8gQ2FzdHMgYCR2YWx1ZWAgaW50byBhIGxpc3QuXHJcbi8vL1xyXG4vLy8gQGlnbm9yZSBEb2N1bWVudGF0aW9uOiBodHRwOi8vYXQtaW1wb3J0LmdpdGh1Yi5pby9TYXNzeUxpc3RzL2RvY3VtZW50YXRpb24vI2Z1bmN0aW9uLXNsLXRvLWxpc3RcclxuLy8vXHJcbi8vLyBAcGFyYW0geyp9ICR2YWx1ZSAtIHZhbHVlIHRvIGNhc3QgdG8gbGlzdFxyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzZXBhcmF0b3IgW3NwYWNlXSAtIHNlcGFyYXRvciB0byB1c2VcclxuLy8vXHJcbi8vLyBAZXhhbXBsZVxyXG4vLy8gc2wtdG8tbGlzdChhIGIgYywgY29tbWEpXHJcbi8vLyAvLyBhLCBiLCBjXHJcbi8vLyBcclxuLy8vIEByZXR1cm4ge0xpc3R9XHJcbi8vL1xyXG5cclxuQGZ1bmN0aW9uIHNsLXRvLWxpc3QoJHZhbHVlLCAkc2VwYXJhdG9yOiBsaXN0LXNlcGFyYXRvcigkdmFsdWUpKSB7XHJcbiAgQHJldHVybiBqb2luKCgpLCAkdmFsdWUsICRzZXBhcmF0b3IpO1xyXG59XHJcblxyXG4vLy9cclxuLy8vIEByZXF1aXJlcyBzbC10by1saXN0XHJcbi8vLyBAYWxpYXMgc2wtdG8tbGlzdFxyXG4vLy9cclxuXHJcbkBmdW5jdGlvbiBzbC1saXN0aWZ5KCR2YWx1ZSkge1xyXG4gIEByZXR1cm4gc2wtdG8tbGlzdCgkdmFsdWUpO1xyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbkBpbXBvcnQgJ21hdGgnO1xyXG5AaW1wb3J0ICd1bml0JztcclxuQGltcG9ydCAndmFsdWUnO1xyXG5AaW1wb3J0ICdkaXJlY3Rpb24nO1xyXG5AaW1wb3J0ICdjb2xvcic7XHJcbkBpbXBvcnQgJ3NlbGVjdG9yJztcclxuQGltcG9ydCAnZmxleCc7XHJcbkBpbXBvcnQgJ2JyZWFrcG9pbnQnO1xyXG5AaW1wb3J0ICdtaXhpbnMnO1xyXG5AaW1wb3J0ICd0eXBvZ3JhcGh5JztcclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIGZ1bmN0aW9uc1xyXG4vLy8vXHJcblxyXG4vLy8gRmluZHMgdGhlIGdyZWF0ZXN0IGNvbW1vbiBkaXZpc29yIG9mIHR3byBpbnRlZ2Vycy5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGEgLSBGaXJzdCBudW1iZXIgdG8gY29tcGFyZS5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYiAtIFNlY29uZCBudW1iZXIgdG8gY29tcGFyZS5cclxuLy8vXHJcbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBUaGUgZ3JlYXRlc3QgY29tbW9uIGRpdmlzb3IuXHJcbkBmdW5jdGlvbiBnY2QoJGEsICRiKSB7XHJcbiAgLy8gRnJvbTogaHR0cDovL3Jvc2V0dGFjb2RlLm9yZy93aWtpL0dyZWF0ZXN0X2NvbW1vbl9kaXZpc29yI0phdmFTY3JpcHRcclxuICBAaWYgKCRiICE9IDApIHtcclxuICAgIEByZXR1cm4gZ2NkKCRiLCAkYSAlICRiKTtcclxuICB9XHJcbiAgQGVsc2Uge1xyXG4gICAgQHJldHVybiBhYnMoJGEpO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIEhhbmRsZXMgZGVjaW1hbCBleHBvbmVudHMgYnkgdHJ5aW5nIHRvIGNvbnZlcnQgdGhlbSBpbnRvIGEgZnJhY3Rpb24gYW5kIHRoZW4gdXNlIGEgbnRoLXJvb3QtYWxnb3JpdGhtIGZvciBwYXJ0cyBvZiB0aGUgY2FsY3VsYXRpb25cclxuLy8vXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGJhc2UgLSBUaGUgYmFzZSBudW1iZXIuXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGV4cG9uZW50IC0gVGhlIGV4cG9uZW50LlxyXG4vLy9cclxuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBwcm9kdWN0IG9mIHRoZSBleHBvbmVudGlhdGlvbi5cclxuQGZ1bmN0aW9uIHBvdygkYmFzZSwgJGV4cG9uZW50LCAkcHJlYzogMTYpIHtcclxuICBAaWYgKGZsb29yKCRleHBvbmVudCkgIT0gJGV4cG9uZW50KSB7XHJcbiAgICAkcHJlYzIgOiBwb3coMTAsICRwcmVjKTtcclxuICAgICRleHBvbmVudDogcm91bmQoJGV4cG9uZW50ICogJHByZWMyKTtcclxuICAgICRkZW5vbWluYXRvcjogZ2NkKCRleHBvbmVudCwgJHByZWMyKTtcclxuICAgIEByZXR1cm4gbnRoLXJvb3QocG93KCRiYXNlLCAkZXhwb25lbnQgLyAkZGVub21pbmF0b3IpLCAkcHJlYzIgLyAkZGVub21pbmF0b3IsICRwcmVjKTtcclxuICB9XHJcblxyXG4gICR2YWx1ZTogJGJhc2U7XHJcbiAgQGlmICRleHBvbmVudCA+IDEge1xyXG4gICAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkZXhwb25lbnQge1xyXG4gICAgICAkdmFsdWU6ICR2YWx1ZSAqICRiYXNlO1xyXG4gICAgfVxyXG4gIH1cclxuICBAZWxzZSBpZiAkZXhwb25lbnQgPCAxIHtcclxuICAgIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggLSRleHBvbmVudCB7XHJcbiAgICAgICR2YWx1ZTogJHZhbHVlIC8gJGJhc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAcmV0dXJuICR2YWx1ZTtcclxufVxyXG5cclxuQGZ1bmN0aW9uIG50aC1yb290KCRudW0sICRuOiAyLCAkcHJlYzogMTIpIHtcclxuICAvLyBGcm9tOiBodHRwOi8vcm9zZXR0YWNvZGUub3JnL3dpa2kvTnRoX3Jvb3QjSmF2YVNjcmlwdFxyXG4gICR4OiAxO1xyXG5cclxuICBAZm9yICRpIGZyb20gMCB0aHJvdWdoICRwcmVjIHtcclxuICAgICR4OiAxIC8gJG4gKiAoKCRuIC0gMSkgKiAkeCArICgkbnVtIC8gcG93KCR4LCAkbiAtIDEpKSk7XHJcbiAgfVxyXG5cclxuICBAcmV0dXJuICR4O1xyXG59XHJcblxyXG4vLy8gQ2FsY3VsYXRlcyB0aGUgaGVpZ2h0IGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgd2lkdGggZm9yIGEgZ2l2ZW4gcmF0aW8uXHJcbi8vLyBAcGFyYW0ge0xpc3R9ICRyYXRpbyAtIFJhdGlvIHRvIHVzZSB0byBjYWxjdWxhdGUgdGhlIGhlaWdodCwgZm9ybWF0dGVkIGFzIGB4IGJ5IHlgLlxyXG4vLy8gQHJldHVybiB7TnVtYmVyfSBBIHBlcmNlbnRhZ2UgdmFsdWUgZm9yIHRoZSBoZWlnaHQgcmVsYXRpdmUgdG8gdGhlIHdpZHRoIG9mIGEgcmVzcG9uc2l2ZSBjb250YWluZXIuXHJcbkBmdW5jdGlvbiByYXRpby10by1wZXJjZW50YWdlKCRyYXRpbykge1xyXG4gICR3OiBudGgoJHJhdGlvLCAxKTtcclxuICAkaDogbnRoKCRyYXRpbywgMyk7XHJcbiAgQHJldHVybiAkaCAvICR3ICogMTAwJTtcclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXHJcbi8vLy9cclxuXHJcbiRnbG9iYWwtZm9udC1zaXplOiAxMDAlICFkZWZhdWx0O1xyXG5cclxuLy8vIFJlbW92ZXMgdGhlIHVuaXQgKGUuZy4gcHgsIGVtLCByZW0pIGZyb20gYSB2YWx1ZSwgcmV0dXJuaW5nIHRoZSBudW1iZXIgb25seS5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJG51bSAtIE51bWJlciB0byBzdHJpcCB1bml0IGZyb20uXHJcbi8vL1xyXG4vLy8gQHJldHVybnMge051bWJlcn0gVGhlIHNhbWUgbnVtYmVyLCBzYW5zIHVuaXQuXHJcbkBmdW5jdGlvbiBzdHJpcC11bml0KCRudW0pIHtcclxuICBAcmV0dXJuICRudW0gLyAoJG51bSAqIDAgKyAxKTtcclxufVxyXG5cclxuLy8vIENvbnZlcnRzIG9uZSBvciBtb3JlIHBpeGVsIHZhbHVlcyBpbnRvIG1hdGNoaW5nIHJlbSB2YWx1ZXMuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TGlzdH0gJHZhbHVlcyAtIE9uZSBvciBtb3JlIHZhbHVlcyB0byBjb252ZXJ0LiBCZSBzdXJlIHRvIHNlcGFyYXRlIHRoZW0gd2l0aCBzcGFjZXMgYW5kIG5vdCBjb21tYXMuIElmIHlvdSBuZWVkIHRvIGNvbnZlcnQgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCwgd3JhcCB0aGUgbGlzdCBpbiBwYXJlbnRoZXNlcy5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFzZSBbbnVsbF0gLSBUaGUgYmFzZSB2YWx1ZSB0byB1c2Ugd2hlbiBjYWxjdWxhdGluZyB0aGUgYHJlbWAuIElmIHlvdSdyZSB1c2luZyBGb3VuZGF0aW9uIG91dCBvZiB0aGUgYm94LCB0aGlzIGlzIDE2cHguIElmIHRoaXMgcGFyYW1ldGVyIGlzIGBudWxsYCwgdGhlIGZ1bmN0aW9uIHdpbGwgcmVmZXJlbmNlIHRoZSBgJGJhc2UtZm9udC1zaXplYCB2YXJpYWJsZSBhcyB0aGUgYmFzZS5cclxuLy8vXHJcbi8vLyBAcmV0dXJucyB7TGlzdH0gQSBsaXN0IG9mIGNvbnZlcnRlZCB2YWx1ZXMuXHJcbkBmdW5jdGlvbiByZW0tY2FsYygkdmFsdWVzLCAkYmFzZTogbnVsbCkge1xyXG4gICRyZW0tdmFsdWVzOiAoKTtcclxuICAkY291bnQ6IGxlbmd0aCgkdmFsdWVzKTtcclxuXHJcbiAgLy8gSWYgbm8gYmFzZSBpcyBkZWZpbmVkLCBkZWZlciB0byB0aGUgZ2xvYmFsIGZvbnQgc2l6ZVxyXG4gIEBpZiAkYmFzZSA9PSBudWxsIHtcclxuICAgICRiYXNlOiAkZ2xvYmFsLWZvbnQtc2l6ZTtcclxuICB9XHJcblxyXG4gIC8vIElmIHRoZSBiYXNlIGZvbnQgc2l6ZSBpcyBhICUsIHRoZW4gbXVsdGlwbHkgaXQgYnkgMTZweFxyXG4gIC8vIFRoaXMgaXMgYmVjYXVzZSAxMDAlIGZvbnQgc2l6ZSA9IDE2cHggaW4gbW9zdCBhbGwgYnJvd3NlcnNcclxuICBAaWYgdW5pdCgkYmFzZSkgPT0gJyUnIHtcclxuICAgICRiYXNlOiAoJGJhc2UgLyAxMDAlKSAqIDE2cHg7XHJcbiAgfVxyXG5cclxuICAvLyBVc2luZyByZW0gYXMgYmFzZSBhbGxvd3MgY29ycmVjdCBzY2FsaW5nXHJcbiAgQGlmIHVuaXQoJGJhc2UpID09ICdyZW0nIHtcclxuICAgICRiYXNlOiBzdHJpcC11bml0KCRiYXNlKSAqIDE2cHg7XHJcbiAgfVxyXG5cclxuICBAaWYgJGNvdW50ID09IDEge1xyXG4gICAgQHJldHVybiAtemYtdG8tcmVtKCR2YWx1ZXMsICRiYXNlKTtcclxuICB9XHJcblxyXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGNvdW50IHtcclxuICAgICRyZW0tdmFsdWVzOiBhcHBlbmQoJHJlbS12YWx1ZXMsIC16Zi10by1yZW0obnRoKCR2YWx1ZXMsICRpKSwgJGJhc2UpKTtcclxuICB9XHJcblxyXG4gIEByZXR1cm4gJHJlbS12YWx1ZXM7XHJcbn1cclxuXHJcbi8vIENvbnZlcnRzIGEgdW5pdGxlc3MsIHBpeGVsLCBvciByZW0gdmFsdWUgdG8gZW0sIGZvciB1c2UgaW4gYnJlYWtwb2ludHMuXHJcbkBmdW5jdGlvbiAtemYtYnAtdG8tZW0oJHZhbHVlKSB7XHJcbiAgLy8gUGl4ZWwgYW5kIHVuaXRsZXNzIHZhbHVlcyBhcmUgY29udmVydGVkIHRvIHJlbXNcclxuICBAaWYgdW5pdCgkdmFsdWUpID09ICdweCcgb3IgdW5pdGxlc3MoJHZhbHVlKSB7XHJcbiAgICAkdmFsdWU6IHJlbS1jYWxjKCR2YWx1ZSwgJGJhc2U6IDE2cHgpO1xyXG4gIH1cclxuXHJcbiAgLy8gVGhlbiB0aGUgdmFsdWUgaXMgY29udmVydGVkIHRvIGVtc1xyXG4gIEByZXR1cm4gc3RyaXAtdW5pdCgkdmFsdWUpICogMWVtO1xyXG59XHJcblxyXG4vLy8gQ29udmVydHMgYSBwaXhlbCB2YWx1ZSB0byBtYXRjaGluZyByZW0gdmFsdWUuICpBbnkqIHZhbHVlIHBhc3NlZCwgcmVnYXJkbGVzcyBvZiB1bml0LCBpcyBhc3N1bWVkIHRvIGJlIGEgcGl4ZWwgdmFsdWUuIEJ5IGRlZmF1bHQsIHRoZSBiYXNlIHBpeGVsIHZhbHVlIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSByZW0gdmFsdWUgaXMgdGFrZW4gZnJvbSB0aGUgYCRnbG9iYWwtZm9udC1zaXplYCB2YXJpYWJsZS5cclxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdmFsdWUgLSBQaXhlbCB2YWx1ZSB0byBjb252ZXJ0LlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYXNlIFtudWxsXSAtIEJhc2UgZm9yIHBpeGVsIGNvbnZlcnNpb24uXHJcbi8vL1xyXG4vLy8gQHJldHVybnMge051bWJlcn0gQSBudW1iZXIgaW4gcmVtcywgY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGUgZ2l2ZW4gdmFsdWUgYW5kIHRoZSBiYXNlIHBpeGVsIHZhbHVlLiByZW0gdmFsdWVzIGFyZSBwYXNzZWQgdGhyb3VnaCBhcyBpcy5cclxuQGZ1bmN0aW9uIC16Zi10by1yZW0oJHZhbHVlLCAkYmFzZTogbnVsbCkge1xyXG4gIC8vIENoZWNrIGlmIHRoZSB2YWx1ZSBpcyBhIG51bWJlclxyXG4gIEBpZiB0eXBlLW9mKCR2YWx1ZSkgIT0gJ251bWJlcicge1xyXG4gICAgQHdhcm4gaW5zcGVjdCgkdmFsdWUpICsgJyB3YXMgcGFzc2VkIHRvIHJlbS1jYWxjKCksIHdoaWNoIGlzIG5vdCBhIG51bWJlci4nO1xyXG4gICAgQHJldHVybiAkdmFsdWU7XHJcbiAgfVxyXG5cclxuICAvLyBUcmFuc2Zvcm0gZW0gaW50byByZW0gaWYgc29tZW9uZSBoYW5kcyBvdmVyICdlbSdzXHJcbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAnZW0nIHtcclxuICAgICR2YWx1ZTogc3RyaXAtdW5pdCgkdmFsdWUpICogMXJlbTtcclxuICB9XHJcblxyXG4gIC8vIENhbGN1bGF0ZSByZW0gaWYgdW5pdHMgZm9yICR2YWx1ZSBpcyBub3QgcmVtIG9yIGVtXHJcbiAgQGlmIHVuaXQoJHZhbHVlKSAhPSAncmVtJyB7XHJcbiAgICAkdmFsdWU6IHN0cmlwLXVuaXQoJHZhbHVlKSAvIHN0cmlwLXVuaXQoJGJhc2UpICogMXJlbTtcclxuICB9XHJcblxyXG4gIC8vIFR1cm4gMHJlbSBpbnRvIDBcclxuICBAaWYgJHZhbHVlID09IDByZW0ge1xyXG4gICAgJHZhbHVlOiAwO1xyXG4gIH1cclxuXHJcbiAgQHJldHVybiAkdmFsdWU7XHJcbn1cclxuXHJcbi8vLyBDb252ZXJ0cyBhIHBpeGVsLCBwZXJjZW50YWdlLCByZW0gb3IgZW0gdmFsdWUgdG8gYSB1bml0bGVzcyB2YWx1ZSBiYXNlZCBvbiBhIGdpdmVuIGZvbnQgc2l6ZS4gSWRlYWwgZm9yIHdvcmtpbmcgb3V0IHVuaXRsZXNzIGxpbmUgaGVpZ2h0cy5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJHZhbHVlIC0gVmFsdWUgdG8gY29udmVydCB0byBhIHVuaXRsZXNzIGxpbmUgaGVpZ2h0XHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGJhc2UgLSBUaGUgZm9udCBzaXplIHRvIHVzZSB0byB3b3JrIG91dCB0aGUgbGluZSBoZWlnaHQgLSBkZWZhdWx0cyB0byAkZ2xvYmFsLWZvbnQtc2l6ZVxyXG4vLy9cclxuLy8vIEByZXR1cm4ge051bWJlcn0gLSBVbml0bGVzcyBudW1iZXJcclxuQGZ1bmN0aW9uIHVuaXRsZXNzLWNhbGMoJHZhbHVlLCAkYmFzZTogbnVsbCkge1xyXG5cclxuICAvLyBJZiBubyBiYXNlIGlzIGRlZmluZWQsIGRlZmVyIHRvIHRoZSBnbG9iYWwgZm9udCBzaXplXHJcbiAgQGlmICRiYXNlID09IG51bGwge1xyXG4gICAgJGJhc2U6ICRnbG9iYWwtZm9udC1zaXplO1xyXG4gIH1cclxuXHJcbiAgLy8gRmlyc3QsIGxldHMgY29udmVydCBvdXIgJGJhc2UgdG8gcGl4ZWxzXHJcblxyXG4gIC8vIElmIHRoZSBiYXNlIGZvbnQgc2l6ZSBpcyBhICUsIHRoZW4gbXVsdGlwbHkgaXQgYnkgMTZweFxyXG4gIEBpZiB1bml0KCRiYXNlKSA9PSAnJScge1xyXG4gICAgJGJhc2U6ICgkYmFzZSAvIDEwMCUpICogMTZweDtcclxuICB9XHJcblxyXG4gIEBpZiB1bml0KCRiYXNlKSA9PSAncmVtJyB7XHJcbiAgICAkYmFzZTogc3RyaXAtdW5pdCgkYmFzZSkgKiAxNnB4O1xyXG4gIH1cclxuXHJcbiAgQGlmIHVuaXQoJGJhc2UpID09ICdlbScge1xyXG4gICAgJGJhc2U6IHN0cmlwLXVuaXQoJGJhc2UpICogMTZweDtcclxuICB9XHJcblxyXG4gIC8vIE5vdyBsZXRzIGNvbnZlcnQgb3VyIHZhbHVlIHRvIHBpeGVscyB0b29cclxuICBAaWYgdW5pdCgkdmFsdWUpID09ICclJyB7XHJcbiAgICAkdmFsdWU6ICgkdmFsdWUgLyAxMDAlKSAqICRiYXNlO1xyXG4gIH1cclxuXHJcbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAncmVtJyB7XHJcbiAgICAkdmFsdWU6IHN0cmlwLXVuaXQoJHZhbHVlKSAqICRiYXNlO1xyXG4gIH1cclxuXHJcbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAnZW0nIHtcclxuICAgICR2YWx1ZTogc3RyaXAtdW5pdCgkdmFsdWUpICogJGJhc2U7XHJcbiAgfVxyXG5cclxuICAvLyAncHgnXHJcbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAncHgnIHtcclxuICAgIEByZXR1cm4gc3RyaXAtdW5pdCgkdmFsdWUpIC8gc3RyaXAtdW5pdCgkYmFzZSk7XHJcbiAgfVxyXG5cclxuICAvLyBhc3N1bWUgdGhhdCBsaW5lLWhlaWdodHMgZ3JlYXRlcm4gdGhlbiAxMCBhcmUgbWVhbnQgdG8gYmUgYWJzb2x1dGUgaW4gJ3B4J1xyXG4gIEBpZiB1bml0bGVzcygkdmFsdWUpIGFuZCAoJHZhbHVlID4gMTApIHtcclxuICAgIEByZXR1cm4gJHZhbHVlIC8gc3RyaXAtdW5pdCgkYmFzZSk7XHJcbiAgfVxyXG5cclxuICBAcmV0dXJuICR2YWx1ZTtcclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXHJcbi8vLy9cclxuXHJcbi8vLyBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBub3QgZmFsc2V5LCBpbiBDU1MgdGVybXMuIEZhbHNleSB2YWx1ZXMgYXJlIGBudWxsYCwgYG5vbmVgLCBgMGAgd2l0aCBhbnkgdW5pdCwgb3IgYW4gZW1wdHkgbGlzdC5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge01peGVkfSAkdmFsIC0gVmFsdWUgdG8gY2hlY2suXHJcbi8vL1xyXG4vLy8gQHJldHVybnMge0Jvb2xlYW59IGB0cnVlYCBpZiBgJHZhbGAgaXMgbm90IGZhbHNleS5cclxuQGZ1bmN0aW9uIGhhcy12YWx1ZSgkdmFsKSB7XHJcbiAgQGlmICR2YWwgPT0gbnVsbCBvciAkdmFsID09IG5vbmUge1xyXG4gICAgQHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgQGlmIHR5cGUtb2YoJHZhbCkgPT0gJ251bWJlcicgYW5kIHN0cmlwLXVuaXQoJHZhbCkgPT0gMCB7XHJcbiAgICBAcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBAaWYgdHlwZS1vZigkdmFsKSA9PSAnbGlzdCcgYW5kIGxlbmd0aCgkdmFsKSA9PSAwIHtcclxuICAgIEByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG4gIEByZXR1cm4gdHJ1ZTtcclxufVxyXG5cclxuLy8vIERldGVybWluZSBhIHRvcC9yaWdodC9ib3R0b20vcmlnaHQgdmFsdWUgb24gYSBwYWRkaW5nLCBtYXJnaW4sIGV0Yy4gcHJvcGVydHksIG5vIG1hdHRlciBob3cgbWFueSB2YWx1ZXMgd2VyZSBwYXNzZWQgaW4uIFVzZSB0aGlzIGZ1bmN0aW9uIGlmIHlvdSBuZWVkIHRvIGtub3cgdGhlIHNwZWNpZmljIHNpZGUgb2YgYSB2YWx1ZSwgYnV0IGRvbid0IGtub3cgaWYgdGhlIHZhbHVlIGlzIHVzaW5nIGEgc2hvcnRoYW5kIGZvcm1hdC5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0xpc3R8TnVtYmVyfSAkdmFsIC0gVmFsdWUgdG8gYW5hbHl6ZS4gU2hvdWxkIGJlIGEgc2hvcnRoYW5kIHNpemluZyBwcm9wZXJ0eSwgZS5nLiBcIjFlbSAyZW0gMWVtXCJcclxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHNpZGUgLSBTaWRlIHRvIHJldHVybi4gU2hvdWxkIGJlIGB0b3BgLCBgcmlnaHRgLCBgYm90dG9tYCwgb3IgYGxlZnRgLlxyXG4vLy9cclxuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IEEgc2luZ2xlIHZhbHVlIGJhc2VkIG9uIGAkdmFsYCBhbmQgYCRzaWRlYC5cclxuQGZ1bmN0aW9uIGdldC1zaWRlKCR2YWwsICRzaWRlKSB7XHJcbiAgJGxlbmd0aDogbGVuZ3RoKCR2YWwpO1xyXG5cclxuICBAaWYgJGxlbmd0aCA9PSAxIHtcclxuICAgIEByZXR1cm4gJHZhbDtcclxuICB9XHJcbiAgQGlmICRsZW5ndGggPT0gMiB7XHJcbiAgICBAcmV0dXJuIG1hcC1nZXQoKFxyXG4gICAgICB0b3A6IG50aCgkdmFsLCAxKSxcclxuICAgICAgYm90dG9tOiBudGgoJHZhbCwgMSksXHJcbiAgICAgIGxlZnQ6IG50aCgkdmFsLCAyKSxcclxuICAgICAgcmlnaHQ6IG50aCgkdmFsLCAyKSxcclxuICAgICksICRzaWRlKTtcclxuICB9XHJcbiAgQGlmICRsZW5ndGggPT0gMyB7XHJcbiAgICBAcmV0dXJuIG1hcC1nZXQoKFxyXG4gICAgICB0b3A6IG50aCgkdmFsLCAxKSxcclxuICAgICAgbGVmdDogbnRoKCR2YWwsIDIpLFxyXG4gICAgICByaWdodDogbnRoKCR2YWwsIDIpLFxyXG4gICAgICBib3R0b206IG50aCgkdmFsLCAzKSxcclxuICAgICksICRzaWRlKTtcclxuICB9XHJcbiAgQGlmICRsZW5ndGggPT0gNCB7XHJcbiAgICBAcmV0dXJuIG1hcC1nZXQoKFxyXG4gICAgICB0b3A6IG50aCgkdmFsLCAxKSxcclxuICAgICAgcmlnaHQ6IG50aCgkdmFsLCAyKSxcclxuICAgICAgYm90dG9tOiBudGgoJHZhbCwgMyksXHJcbiAgICAgIGxlZnQ6IG50aCgkdmFsLCA0KSxcclxuICAgICksICRzaWRlKTtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBHaXZlbiBib3JkZXIgJHZhbCwgZmluZCBhIHNwZWNpZmljIGVsZW1lbnQgb2YgdGhlIGJvcmRlciwgd2hpY2ggaXMgJGVsZW0uIFRoZSBwb3NzaWJsZSB2YWx1ZXMgZm9yICRlbGVtIGFyZSB3aWR0aCwgc3R5bGUsIGFuZCBjb2xvci5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0xpc3R9ICR2YWwgLSBCb3JkZXIgdmFsdWUgdG8gZmluZCBhIHZhbHVlIGluLlxyXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZWxlbSAtIEJvcmRlciBjb21wb25lbnQgdG8gZXh0cmFjdC5cclxuLy8vXHJcbi8vLyBAcmV0dXJucyB7TWl4ZWR9IElmIHRoZSB2YWx1ZSBleGlzdHMsIHJldHVybnMgdGhlIHZhbHVlLiBJZiB0aGUgdmFsdWUgaXMgbm90IGluIHRoZSBib3JkZXIgZGVmaW5pdGlvbiwgdGhlIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGEgMHB4IHdpZHRoLCBzb2xpZCBzdHlsZSwgb3IgYmxhY2sgYm9yZGVyLlxyXG5AZnVuY3Rpb24gZ2V0LWJvcmRlci12YWx1ZSgkdmFsLCAkZWxlbSkge1xyXG4gIC8vIEZpbmQgdGhlIHdpZHRoLCBzdHlsZSwgb3IgY29sb3IgYW5kIHJldHVybiBpdFxyXG4gIEBlYWNoICR2IGluICR2YWwge1xyXG4gICAgJHR5cGU6IHR5cGUtb2YoJHYpO1xyXG4gICAgQGlmICRlbGVtID09IHdpZHRoIGFuZCAkdHlwZSA9PSAnbnVtYmVyJyB7XHJcbiAgICAgIEByZXR1cm4gJHY7XHJcbiAgICB9XHJcbiAgICBAaWYgJGVsZW0gPT0gc3R5bGUgYW5kICR0eXBlID09ICdzdHJpbmcnIHtcclxuICAgICAgQHJldHVybiAkdjtcclxuICAgIH1cclxuICAgIEBpZiAkZWxlbSA9PSBjb2xvciBhbmQgJHR5cGUgPT0gJ2NvbG9yJyB7XHJcbiAgICAgIEByZXR1cm4gJHY7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBEZWZhdWx0c1xyXG4gICRkZWZhdWx0czogKFxyXG4gICAgd2lkdGg6IDAsXHJcbiAgICBzdHlsZTogc29saWQsXHJcbiAgICBjb2xvcjogIzAwMCxcclxuICApO1xyXG5cclxuICBAcmV0dXJuIG1hcC1nZXQoJGRlZmF1bHRzLCAkZWxlbSk7XHJcbn1cclxuXHJcbi8vLyBGaW5kcyBhIHZhbHVlIGluIGEgbmVzdGVkIG1hcC5cclxuLy8vIEBsaW5rIGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vc25pcHBldHMvc2Fzcy9kZWVwLWdldHNldC1tYXBzLyBEZWVwIEdldC9TZXQgaW4gTWFwc1xyXG4vLy9cclxuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIHB1bGwgYSB2YWx1ZSBmcm9tLlxyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRrZXlzLi4uIC0gS2V5cyB0byB1c2Ugd2hlbiBsb29raW5nIGZvciBhIHZhbHVlLlxyXG4vLy8gQHJldHVybnMge01peGVkfSBUaGUgdmFsdWUgZm91bmQgaW4gdGhlIG1hcC5cclxuQGZ1bmN0aW9uIG1hcC1kZWVwLWdldCgkbWFwLCAka2V5cy4uLikge1xyXG4gIEBlYWNoICRrZXkgaW4gJGtleXMge1xyXG4gICAgJG1hcDogbWFwLWdldCgkbWFwLCAka2V5KTtcclxuICB9XHJcbiAgQHJldHVybiAkbWFwO1xyXG59XHJcblxyXG4vLy8gQ2FzdHMgYSBtYXAgaW50byBhIGxpc3QuXHJcbi8vLyBAbGluayBodHRwOi8vaHVnb2dpcmF1ZGVsLmNvbS8yMDE0LzA0LzI4L2Nhc3RpbmctbWFwLWludG8tbGlzdC9cclxuLy8vXHJcbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byBwdWxsIGEgdmFsdWUgZnJvbS5cclxuLy8vXHJcbi8vLyBAcmV0dXJucyB7TGlzdH0gRGVwZW5kaW5nIG9uIHRoZSBmbGFnLCByZXR1cm5zIGVpdGhlciAka2V5cyBvciAkdmFsdWVzIG9yIGJvdGguXHJcbkBmdW5jdGlvbiBtYXAtdG8tbGlzdCgkbWFwLCAka2VlcDogJ2JvdGgnKSB7XHJcbiAgJGtlZXA6IGlmKGluZGV4KCdrZXlzJyAndmFsdWVzJywgJGtlZXApLCAka2VlcCwgJ2JvdGgnKTtcclxuXHJcbiAgQGlmIHR5cGUtb2YoJG1hcCkgPT0gJ21hcCcge1xyXG4gICAgJGtleXM6ICgpO1xyXG4gICAgJHZhbHVlczogKCk7XHJcblxyXG4gICAgQGVhY2ggJGtleSwgJHZhbCBpbiAkbWFwIHtcclxuICAgICAgJGtleXM6IGFwcGVuZCgka2V5cywgJGtleSk7XHJcbiAgICAgICR2YWx1ZXM6IGFwcGVuZCgkdmFsdWVzLCAkdmFsKTtcclxuICAgIH1cclxuXHJcbiAgICBAaWYgJGtlZXAgPT0gJ2tleXMnIHtcclxuICAgICAgQHJldHVybiAka2V5cztcclxuICAgIH1cclxuICAgIEBlbHNlIGlmICRrZWVwID09ICd2YWx1ZXMnIHtcclxuICAgICAgQHJldHVybiAkdmFsdWVzO1xyXG4gICAgfVxyXG4gICAgQGVsc2Uge1xyXG4gICAgICBAcmV0dXJuIHppcCgka2V5cywgJHZhbHVlcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAcmV0dXJuIGlmKHR5cGUtb2YoJG1hcCkgIT0gJ2xpc3QnLCAoJHZhbHVlLCksICRtYXApO1xyXG5cclxufVxyXG5cclxuLy8vIFNhZmVseSByZXR1cm4gYSB2YWx1ZSBmcm9tIGEgbWFwLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIHJldHJpZXZlIGEgdmFsdWUgZnJvbS5cclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAka2V5IC0gTmFtZSBvZiB0aGUgbWFwIGtleS5cclxuLy8vXHJcbi8vLyBAcmV0dXJucyB7TGlzdH0gRm91bmQgdmFsdWUuXHJcbkBmdW5jdGlvbiBtYXAtc2FmZS1nZXQoJG1hcCwgJGtleSkge1xyXG4gIEBpZiAodHlwZS1vZigkbWFwKSA9PSAnbWFwJyBvciAodHlwZS1vZigkbWFwKSA9PSAnbGlzdCcgYW5kIGxlbmd0aCgkbWFwKSA9PSAwKSkge1xyXG4gICAgQGlmIChtYXAtaGFzLWtleSgkbWFwLCAka2V5KSkge1xyXG4gICAgICBAcmV0dXJuIG1hcC1nZXQoJG1hcCwgJGtleSk7XHJcbiAgICB9XHJcbiAgICBAZWxzZSB7XHJcbiAgICAgIEBlcnJvciAnS2V5OiBgI3ska2V5fWAgaXMgbm90IGF2YWlsYWJsZSBpbiBgI3skbWFwfWAnO1xyXG4gICAgfVxyXG4gIH1cclxuICBAZWxzZSB7XHJcbiAgICBAZXJyb3IgJ2AjeyRtYXB9YCBpcyBub3QgYSB2YWxpZCBtYXAnO1xyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXHJcbi8vLy9cclxuXHJcbi8vLyBSZXR1cm5zIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gb2YgJGRpclxyXG4vLy9cclxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGRpciAtIFVzZWQgZGlyZWN0aW9uIGJldHdlZW4gXCJ0b3BcIiwgXCJyaWdodFwiLCBcImJvdHRvbVwiIGFuZCBcImxlZnRcIi5cclxuLy8vIEByZXR1cm4ge0tleXdvcmR9IE9wcG9zaXRlIGRpcmVjdGlvbiBvZiAkZGlyXHJcbkBmdW5jdGlvbiBkaXJlY3Rpb24tb3Bwb3NpdGUoXHJcbiAgJGRpclxyXG4pIHtcclxuICAkZGlyczogKHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCk7XHJcbiAgJHBsYWNlOiBpbmRleCgkZGlycywgJGRpcik7XHJcblxyXG4gIEBpZiAkcGxhY2UgPT0gbnVsbCB7XHJcbiAgICBAZXJyb3IgJ2RpcmVjdGlvbi1vcHBvc2l0ZTogSW52YWxpZCAkZGlyIHBhcmFtZXRlciwgZXhwZWN0ZWQgYSB2YWx1ZSBmcm9tIFwiI3skZGlyc31cIiwgZm91bmQgXCIjeyRkaXJ9XCIuJztcclxuICAgIEByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vIENhbGN1bCB0aGUgb3Bwb3NpdGUgcGxhY2UgaW4gYSBjaXJjbGUsIHdpdGggYSBzdGFydGluZyBpbmRleCBvZiAxXHJcbiAgJGxlbmd0aDogbGVuZ3RoKCRkaXJzKTtcclxuICAkZGVtaTogJGxlbmd0aCAvIDI7XHJcbiAgJG9wcG9zaXRlLXBsYWNlOiAoKCRwbGFjZSArICRkZW1pIC0gMSkgJSAkbGVuZ3RoKSArIDE7XHJcblxyXG4gIEByZXR1cm4gbnRoKCRkaXJzLCAkb3Bwb3NpdGUtcGxhY2UpO1xyXG59XHJcblxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG5AaW1wb3J0ICdtYXRoJztcclxuXHJcbiRjb250cmFzdC13YXJuaW5nczogdHJ1ZSAhZGVmYXVsdDtcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBmdW5jdGlvbnNcclxuLy8vL1xyXG5cclxuLy8vIENoZWNrcyB0aGUgbHVtaW5hbmNlIG9mIGAkY29sb3JgLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIENvbG9yIHRvIGNoZWNrIHRoZSBsdW1pbmFuY2Ugb2YuXHJcbi8vL1xyXG4vLy8gQHJldHVybnMge051bWJlcn0gVGhlIGx1bWluYW5jZSBvZiBgJGNvbG9yYC5cclxuQGZ1bmN0aW9uIGNvbG9yLWx1bWluYW5jZSgkY29sb3IpIHtcclxuICAvLyBBZGFwdGVkIGZyb206IGh0dHBzOi8vZ2l0aHViLmNvbS9MZWFWZXJvdS9jb250cmFzdC1yYXRpby9ibG9iL2doLXBhZ2VzL2NvbG9yLmpzXHJcbiAgLy8gRm9ybXVsYTogaHR0cDovL3d3dy53My5vcmcvVFIvMjAwOC9SRUMtV0NBRzIwLTIwMDgxMjExLyNyZWxhdGl2ZWx1bWluYW5jZWRlZlxyXG4gICRyZ2JhOiByZWQoJGNvbG9yKSwgZ3JlZW4oJGNvbG9yKSwgYmx1ZSgkY29sb3IpO1xyXG4gICRyZ2JhMjogKCk7XHJcblxyXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggMyB7XHJcbiAgICAkcmdiOiBudGgoJHJnYmEsICRpKTtcclxuICAgICRyZ2I6ICRyZ2IgLyAyNTU7XHJcblxyXG4gICAgJHJnYjogaWYoJHJnYiA8IDAuMDM5MjgsICRyZ2IgLyAxMi45MiwgcG93KCgkcmdiICsgMC4wNTUpIC8gMS4wNTUsIDIuNCkpO1xyXG5cclxuICAgICRyZ2JhMjogYXBwZW5kKCRyZ2JhMiwgJHJnYik7XHJcbiAgfVxyXG5cclxuICBAcmV0dXJuIDAuMjEyNiAqIG50aCgkcmdiYTIsIDEpICsgMC43MTUyICogbnRoKCRyZ2JhMiwgMikgKyAwLjA3MjIgKiBudGgoJHJnYmEyLCAzKTtcclxufVxyXG5cclxuLy8vIENoZWNrcyB0aGUgY29udHJhc3QgcmF0aW8gb2YgdHdvIGNvbG9ycy5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IxIC0gRmlyc3QgY29sb3IgdG8gY29tcGFyZS5cclxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvcjIgLSBTZWNvbmQgY29sb3IgdG8gY29tcGFyZS5cclxuLy8vXHJcbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBUaGUgY29udHJhc3QgcmF0aW8gb2YgdGhlIGNvbXBhcmVkIGNvbG9ycy5cclxuQGZ1bmN0aW9uIGNvbG9yLWNvbnRyYXN0KCRjb2xvcjEsICRjb2xvcjIpIHtcclxuICAvLyBBZGFwdGVkIGZyb206IGh0dHBzOi8vZ2l0aHViLmNvbS9MZWFWZXJvdS9jb250cmFzdC1yYXRpby9ibG9iL2doLXBhZ2VzL2NvbG9yLmpzXHJcbiAgLy8gRm9ybXVsYTogaHR0cDovL3d3dy53My5vcmcvVFIvMjAwOC9SRUMtV0NBRzIwLTIwMDgxMjExLyNjb250cmFzdC1yYXRpb2RlZlxyXG4gICRsdW1pbmFuY2UxOiBjb2xvci1sdW1pbmFuY2UoJGNvbG9yMSkgKyAwLjA1O1xyXG4gICRsdW1pbmFuY2UyOiBjb2xvci1sdW1pbmFuY2UoJGNvbG9yMikgKyAwLjA1O1xyXG4gICRyYXRpbzogJGx1bWluYW5jZTEgLyAkbHVtaW5hbmNlMjtcclxuXHJcbiAgQGlmICRsdW1pbmFuY2UyID4gJGx1bWluYW5jZTEge1xyXG4gICAgJHJhdGlvOiAxIC8gJHJhdGlvO1xyXG4gIH1cclxuXHJcbiAgJHJhdGlvOiByb3VuZCgkcmF0aW8gKiAxMCkgLyAxMDtcclxuXHJcbiAgQHJldHVybiAkcmF0aW87XHJcbn1cclxuXHJcbi8vLyBDaGVja3MgdGhlIGx1bWluYW5jZSBvZiBgJGJhc2VgLCBhbmQgcmV0dXJucyB0aGUgY29sb3IgZnJvbSBgJGNvbG9yc2AgKGxpc3Qgb2YgY29sb3JzKSB0aGF0IGhhcyB0aGUgbW9zdCBjb250cmFzdC5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFzZSAtIENvbG9yIHRvIGNoZWNrIGx1bWluYW5jZS5cclxuLy8vIEBwYXJhbSB7TGlzdH0gJGNvbG9ycyBbKCR3aGl0ZSwgJGJsYWNrKV0gLSBDb2xvcnMgdG8gY29tcGFyZS5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdG9sZXJhbmNlIFskZ2xvYmFsLWNvbG9yLXBpY2stY29udHJhc3QtdG9sZXJhbmNlXSAtIENvbnRyYXN0IHRvbGVyYW5jZS5cclxuLy8vXHJcbi8vLyBAcmV0dXJucyB7Q29sb3J9IHRoZSBjb2xvciBmcm9tIGAkY29sb3JzYCAobGlzdCBvZiBjb2xvcnMpIHRoYXQgaGFzIHRoZSBtb3N0IGNvbnRyYXN0LlxyXG5AZnVuY3Rpb24gY29sb3ItcGljay1jb250cmFzdCgkYmFzZSwgJGNvbG9yczogKCR3aGl0ZSwgJGJsYWNrKSwgJHRvbGVyYW5jZTogJGdsb2JhbC1jb2xvci1waWNrLWNvbnRyYXN0LXRvbGVyYW5jZSkge1xyXG4gICRjb250cmFzdDogY29sb3ItY29udHJhc3QoJGJhc2UsIG50aCgkY29sb3JzLCAxKSk7XHJcbiAgJGJlc3Q6IG50aCgkY29sb3JzLCAxKTtcclxuXHJcbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCBsZW5ndGgoJGNvbG9ycykge1xyXG4gICAgJGN1cnJlbnQtY29udHJhc3Q6IGNvbG9yLWNvbnRyYXN0KCRiYXNlLCBudGgoJGNvbG9ycywgJGkpKTtcclxuICAgIEBpZiAoJGN1cnJlbnQtY29udHJhc3QgLSAkY29udHJhc3QgPiAkdG9sZXJhbmNlKSB7XHJcbiAgICAgICRjb250cmFzdDogY29sb3ItY29udHJhc3QoJGJhc2UsIG50aCgkY29sb3JzLCAkaSkpO1xyXG4gICAgICAkYmVzdDogbnRoKCRjb2xvcnMsICRpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpZiAoJGNvbnRyYXN0LXdhcm5pbmdzIGFuZCAkY29udHJhc3QgPCAzKSB7XHJcbiAgICBAd2FybiBcIkNvbnRyYXN0IHJhdGlvIG9mICN7JGJlc3R9IG9uICN7JGJhc2V9IGlzIHByZXR0eSBiYWQsIGp1c3QgI3skY29udHJhc3R9XCI7XHJcbiAgfVxyXG5cclxuICBAcmV0dXJuICRiZXN0O1xyXG59XHJcblxyXG4vLy8gU2NhbGVzIGEgY29sb3IgdG8gYmUgZGFya2VyIGlmIGl0J3MgbGlnaHQsIG9yIGxpZ2h0ZXIgaWYgaXQncyBkYXJrLiBVc2UgdGhpcyBmdW5jdGlvbiB0byB0aW50IGEgY29sb3IgYXBwcm9wcmlhdGUgdG8gaXRzIGxpZ2h0bmVzcy5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBDb2xvciB0byBzY2FsZS5cclxuLy8vIEBwYXJhbSB7UGVyY2VudGFnZX0gJHNjYWxlIFs1JV0gLSBBbW91bnQgdG8gc2NhbGUgdXAgb3IgZG93bi5cclxuLy8vIEBwYXJhbSB7UGVyY2VudGFnZX0gJHRocmVzaG9sZCBbNDAlXSAtIFRocmVzaG9sZCBvZiBsaWdodG5lc3MgdG8gY2hlY2sgYWdhaW5zdC5cclxuLy8vXHJcbi8vLyBAcmV0dXJucyB7Q29sb3J9IEEgc2NhbGVkIGNvbG9yLlxyXG5AZnVuY3Rpb24gc21hcnQtc2NhbGUoJGNvbG9yLCAkc2NhbGU6IDUlLCAkdGhyZXNob2xkOiA0MCUpIHtcclxuICBAaWYgbGlnaHRuZXNzKCRjb2xvcikgPiAkdGhyZXNob2xkIHtcclxuICAgICRzY2FsZTogLSRzY2FsZTtcclxuICB9XHJcbiAgQHJldHVybiBzY2FsZS1jb2xvcigkY29sb3IsICRsaWdodG5lc3M6ICRzY2FsZSk7XHJcbn1cclxuXHJcbi8vLyBHZXQgY29sb3IgZnJvbSBmb3VuZGF0aW9uLXBhbGV0dGVcclxuLy8vXHJcbi8vLyBAcGFyYW0ge2tleX0gY29sb3Iga2V5IGZyb20gZm91bmRhdGlvbi1wYWxldHRlXHJcbi8vL1xyXG4vLy8gQHJldHVybnMge0NvbG9yfSBjb2xvciBmcm9tIGZvdW5kYXRpb24tcGFsZXR0ZVxyXG5AZnVuY3Rpb24gZ2V0LWNvbG9yKCRrZXkpIHtcclxuICBAaWYgbWFwLWhhcy1rZXkoJGZvdW5kYXRpb24tcGFsZXR0ZSwgJGtleSkge1xyXG4gICAgQHJldHVybiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsICRrZXkpO1xyXG4gIH1cclxuICBAZWxzZSB7XHJcbiAgICBAZXJyb3IgJ2dpdmVuICRrZXkgaXMgbm90IGF2YWlsYWJsZSBpbiAkZm91bmRhdGlvbi1wYWxldHRlJztcclxuICB9XHJcbn1cclxuXHJcbi8vLyBUcmFuc2ZlcnMgdGhlIGNvbG9ycyBpbiB0aGUgYCRmb3VuZGF0aW9uLXBhbGV0dGVgbWFwIGludG8gdmFyaWFibGVzLCBzdWNoIGFzIGAkcHJpbWFyeS1jb2xvcmAgYW5kIGAkc2Vjb25kYXJ5LWNvbG9yYC4gQ2FsbCB0aGlzIG1peGluIGJlbG93IHRoZSBHbG9iYWwgc2VjdGlvbiBvZiB5b3VyIHNldHRpbmdzIGZpbGUgdG8gcHJvcGVybHkgbWlncmF0ZSB5b3VyIGNvZGViYXNlLlxyXG5AbWl4aW4gYWRkLWZvdW5kYXRpb24tY29sb3JzKCkge1xyXG4gIEBpZiBtYXAtaGFzLWtleSgkZm91bmRhdGlvbi1wYWxldHRlLCBwcmltYXJ5KSB7XHJcbiAgICAkcHJpbWFyeS1jb2xvcjogbWFwLWdldCgkZm91bmRhdGlvbi1wYWxldHRlLCBwcmltYXJ5KSAhZ2xvYmFsO1xyXG4gIH1cclxuICBAaWYgbWFwLWhhcy1rZXkoJGZvdW5kYXRpb24tcGFsZXR0ZSwgc2Vjb25kYXJ5KSB7XHJcbiAgICAkc2Vjb25kYXJ5LWNvbG9yOiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHNlY29uZGFyeSkgIWdsb2JhbDtcclxuICB9XHJcbiAgQGlmIG1hcC1oYXMta2V5KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHN1Y2Nlc3MpIHtcclxuICAgICRzdWNjZXNzLWNvbG9yOiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHN1Y2Nlc3MpICFnbG9iYWw7XHJcbiAgfVxyXG4gIEBpZiBtYXAtaGFzLWtleSgkZm91bmRhdGlvbi1wYWxldHRlLCB3YXJuaW5nKSB7XHJcbiAgICAkd2FybmluZy1jb2xvcjogbWFwLWdldCgkZm91bmRhdGlvbi1wYWxldHRlLCB3YXJuaW5nKSAhZ2xvYmFsO1xyXG4gIH1cclxuICBAaWYgbWFwLWhhcy1rZXkoJGZvdW5kYXRpb24tcGFsZXR0ZSwgYWxlcnQpIHtcclxuICAgICRhbGVydC1jb2xvcjogbWFwLWdldCgkZm91bmRhdGlvbi1wYWxldHRlLCBhbGVydCkgIWdsb2JhbDtcclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIGZ1bmN0aW9uc1xyXG4vLy8vXHJcblxyXG4vLy8gR2VuZXJhdGVzIGEgc2VsZWN0b3Igd2l0aCBldmVyeSB0ZXh0IGlucHV0IHR5cGUuIFlvdSBjYW4gYWxzbyBmaWx0ZXIgdGhlIGxpc3QgdG8gb25seSBvdXRwdXQgYSBzdWJzZXQgb2YgdGhvc2Ugc2VsZWN0b3JzLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TGlzdHxLZXl3b3JkfSAkdHlwZXMgWygpXSAtIEEgbGlzdCBvZiB0ZXh0IGlucHV0IHR5cGVzIHRvIHVzZS4gTGVhdmUgYmxhbmsgdG8gdXNlIGFsbCBvZiB0aGVtLlxyXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkbW9kaWZpZXIgWycnXSAtIEEgbW9kaWZpZXIgdG8gYmUgYXBwbGllZCB0byBlYWNoIHRleHQgaW5wdXQgdHlwZSAoZS5nLiBhIGNsYXNzIG9yIGEgcHNldWRvLWNsYXNzKS4gTGVhdmUgYmxhbmsgdG8gaWdub3JlLlxyXG5AZnVuY3Rpb24gdGV4dC1pbnB1dHMoJHR5cGVzOiAoKSwgJG1vZGlmaWVyOiAnJykge1xyXG4gICRyZXR1cm46ICgpO1xyXG5cclxuICAkYWxsLXR5cGVzOlxyXG4gICAgdGV4dFxyXG4gICAgcGFzc3dvcmRcclxuICAgIGRhdGVcclxuICAgIGRhdGV0aW1lXHJcbiAgICBkYXRldGltZS1sb2NhbFxyXG4gICAgbW9udGhcclxuICAgIHdlZWtcclxuICAgIGVtYWlsXHJcbiAgICBudW1iZXJcclxuICAgIHNlYXJjaFxyXG4gICAgdGVsXHJcbiAgICB0aW1lXHJcbiAgICB1cmxcclxuICAgIGNvbG9yO1xyXG5cclxuICBAaWYgbm90IGhhcy12YWx1ZSgkdHlwZXMpIHtcclxuICAgICR0eXBlczogJGFsbC10eXBlcztcclxuICB9XHJcblxyXG4gIEBlYWNoICR0eXBlIGluICR0eXBlcyB7XHJcbiAgICAkcmV0dXJuOiBhcHBlbmQoJHJldHVybiwgdW5xdW90ZSgnW3R5cGU9XFwnI3skdHlwZX1cXCddI3skbW9kaWZpZXJ9JyksIGNvbW1hKTtcclxuICB9XHJcblxyXG4gIEByZXR1cm4gJHJldHVybjtcclxufVxyXG4iLCIkLXpmLWZsZXgtanVzdGlmeTogKFxyXG4gICdsZWZ0JzogZmxleC1zdGFydCxcclxuICAncmlnaHQnOiBmbGV4LWVuZCxcclxuICAnY2VudGVyJzogY2VudGVyLFxyXG4gICdqdXN0aWZ5Jzogc3BhY2UtYmV0d2VlbixcclxuICAnc3BhY2VkJzogc3BhY2UtYXJvdW5kLFxyXG4pO1xyXG5cclxuJC16Zi1mbGV4LWFsaWduOiAoXHJcbiAgJ3RvcCc6IGZsZXgtc3RhcnQsXHJcbiAgJ2JvdHRvbSc6IGZsZXgtZW5kLFxyXG4gICdtaWRkbGUnOiBjZW50ZXIsXHJcbiAgJ3N0cmV0Y2gnOiBzdHJldGNoLFxyXG4pO1xyXG5cclxuJC16Zi1mbGV4LWRpcmVjdGlvbjogKFxyXG4gICdyb3cnOiByb3csXHJcbiAgJ3Jvdy1yZXZlcnNlJzogcm93LXJldmVyc2UsXHJcbiAgJ2NvbHVtbic6IGNvbHVtbixcclxuICAnY29sdW1uLXJldmVyc2UnOiBjb2x1bW4tcmV2ZXJzZSxcclxuKTtcclxuXHJcbi8vLyBFbmFibGVzIGZsZXhib3ggYnkgYWRkaW5nIGBkaXNwbGF5OiBmbGV4YCB0byB0aGUgZWxlbWVudC5cclxuQG1peGluIGZsZXgge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbn1cclxuXHJcbi8vLyBIb3Jpem9udGFsbHkgb3IgdmVydGljYWxseSBhbGlnbnMgdGhlIGl0ZW1zIHdpdGhpbiBhIGZsZXggY29udGFpbmVyLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHggW251bGxdIC0gSG9yaXpvbnRhbCBhbGlnbm1lbnQgdG8gdXNlLiBDYW4gYmUgYGxlZnRgLCBgcmlnaHRgLCBgY2VudGVyYCwgYGp1c3RpZnlgLCBvciBgc3BhY2VkYC4gT3IsIHNldCBpdCB0byBgbnVsbGAgKHRoZSBkZWZhdWx0KSB0byBub3Qgc2V0IGhvcml6b250YWwgYWxpZ25tZW50LlxyXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkeSBbbnVsbF0gLSBWZXJ0aWNhbCBhbGlnbm1lbnQgdG8gdXNlLiBDYW4gYmUgYHRvcGAsIGBib3R0b21gLCBgbWlkZGxlYCwgb3IgYHN0cmV0Y2hgLiBPciwgc2V0IGl0IHRvIGBudWxsYCAodGhlIGRlZmF1bHQpIHRvIG5vdCBzZXQgdmVydGljYWwgYWxpZ25tZW50LlxyXG5AbWl4aW4gZmxleC1hbGlnbigkeDogbnVsbCwgJHk6IG51bGwpIHtcclxuICBAaWYgJHgge1xyXG4gICAgQGlmIG1hcC1oYXMta2V5KCQtemYtZmxleC1qdXN0aWZ5LCAkeCkge1xyXG4gICAgICAkeDogbWFwLWdldCgkLXpmLWZsZXgtanVzdGlmeSwgJHgpO1xyXG4gICAgfVxyXG4gICAgQGVsc2Uge1xyXG4gICAgICBAd2FybiAnZmxleC1ncmlkLXJvdy1hbGlnbigpOiAjeyR4fSBpcyBub3QgYSB2YWxpZCB2YWx1ZSBmb3IgaG9yaXpvbnRhbCBhbGlnbm1lbnQuIFVzZSBsZWZ0LCByaWdodCwgY2VudGVyLCBqdXN0aWZ5LCBvciBzcGFjZWQuJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpZiAkeSB7XHJcbiAgICBAaWYgbWFwLWhhcy1rZXkoJC16Zi1mbGV4LWFsaWduLCAkeSkge1xyXG4gICAgICAkeTogbWFwLWdldCgkLXpmLWZsZXgtYWxpZ24sICR5KTtcclxuICAgIH1cclxuICAgIEBlbHNlIHtcclxuICAgICAgQHdhcm4gJ2ZsZXgtZ3JpZC1yb3ctYWxpZ24oKTogI3skeX0gaXMgbm90IGEgdmFsaWQgdmFsdWUgZm9yIHZlcnRpY2FsIGFsaWdubWVudC4gVXNlIHRvcCwgYm90dG9tLCBtaWRkbGUsIG9yIHN0cmV0Y2guJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGp1c3RpZnktY29udGVudDogJHg7XHJcbiAgYWxpZ24taXRlbXM6ICR5O1xyXG59XHJcblxyXG4vLy8gVmVydGljYWxseSBhbGlnbiBhIHNpbmdsZSBjb2x1bW4gd2l0aGluIGEgZmxleCByb3cuIEFwcGx5IHRoaXMgbWl4aW4gdG8gYSBmbGV4IGNvbHVtbi5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0tleXdvcmR9ICR5IFtudWxsXSAtIFZlcnRpY2FsIGFsaWdubWVudCB0byB1c2UuIENhbiBiZSBgdG9wYCwgYGJvdHRvbWAsIGBtaWRkbGVgLCBvciBgc3RyZXRjaGAuIE9yLCBzZXQgaXQgdG8gYG51bGxgICh0aGUgZGVmYXVsdCkgdG8gbm90IHNldCB2ZXJ0aWNhbCBhbGlnbm1lbnQuXHJcbkBtaXhpbiBmbGV4LWFsaWduLXNlbGYoJHk6IG51bGwpIHtcclxuICBAaWYgJHkge1xyXG4gICAgQGlmIG1hcC1oYXMta2V5KCQtemYtZmxleC1hbGlnbiwgJHkpIHtcclxuICAgICAgJHk6IG1hcC1nZXQoJC16Zi1mbGV4LWFsaWduLCAkeSk7XHJcbiAgICB9XHJcbiAgICBAZWxzZSB7XHJcbiAgICAgIEB3YXJuICdmbGV4LWdyaWQtY29sdW1uLWFsaWduKCk6ICN7JHl9IGlzIG5vdCBhIHZhbGlkIHZhbHVlIGZvciBhbGlnbm1lbnQuIFVzZSB0b3AsIGJvdHRvbSwgbWlkZGxlLCBvciBzdHJldGNoLic7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhbGlnbi1zZWxmOiAkeTtcclxufVxyXG5cclxuLy8vIENoYW5nZXMgdGhlIHNvdXJjZSBvcmRlciBvZiBhIGZsZXggY2hpbGQuIENoaWxkcmVuIHdpdGggbG93ZXIgbnVtYmVycyBhcHBlYXIgZmlyc3QgaW4gdGhlIGxheW91dC5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkb3JkZXIgWzBdIC0gT3JkZXIgbnVtYmVyIHRvIGFwcGx5LlxyXG5AbWl4aW4gZmxleC1vcmRlcigkb3JkZXI6IDApIHtcclxuICBvcmRlcjogJG9yZGVyO1xyXG59XHJcblxyXG4vLy8gQ2hhbmdlIGZsZXgtZGlyZWN0aW9uXHJcbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRkaXJlY3Rpb24gW3Jvd10gLSBGbGV4IGRpcmVjdGlvbiB0byB1c2UuIENhbiBiZVxyXG4vLy8gICAtIHJvdyAoZGVmYXVsdCk6IHNhbWUgYXMgdGV4dCBkaXJlY3Rpb25cclxuLy8vICAgLSByb3ctcmV2ZXJzZTogb3Bwb3NpdGUgdG8gdGV4dCBkaXJlY3Rpb25cclxuLy8vICAgLSBjb2x1bW46IHNhbWUgYXMgcm93IGJ1dCB0b3AgdG8gYm90dG9tXHJcbi8vLyAgIC0gY29sdW1uLXJldmVyc2U6IHNhbWUgYXMgcm93LXJldmVyc2UgdG9wIHRvIGJvdHRvbVxyXG5AbWl4aW4gZmxleC1kaXJlY3Rpb24oJGRpcmVjdGlvbjogcm93KSB7XHJcbiAgZmxleC1kaXJlY3Rpb246ICRkaXJlY3Rpb247XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIGJyZWFrcG9pbnRzXHJcbi8vLy9cclxuXHJcbi8vLyBBIGxpc3Qgb2YgbmFtZWQgYnJlYWtwb2ludHMuIFlvdSBjYW4gdXNlIHRoZXNlIHdpdGggdGhlIGBicmVha3BvaW50KClgIG1peGluIHRvIHF1aWNrbHkgY3JlYXRlIG1lZGlhIHF1ZXJpZXMuXHJcbi8vLyBAdHlwZSBNYXBcclxuJGJyZWFrcG9pbnRzOiAoXHJcbiAgc21hbGw6IDAsXHJcbiAgbWVkaXVtOiA2NDBweCxcclxuICBsYXJnZTogMTAyNHB4LFxyXG4gIHhsYXJnZTogMTIwMHB4LFxyXG4gIHh4bGFyZ2U6IDE0NDBweCxcclxuKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBUaGUgbGFyZ2VzdCBuYW1lZCBicmVha3BvaW50IGluIHdoaWNoIHRvIGluY2x1ZGUgcHJpbnQgYXMgYSBtZWRpYSB0eXBlXHJcbi8vLyBAdHlwZSBLZXl3b3JkXHJcbiRwcmludC1icmVha3BvaW50OiBsYXJnZSAhZGVmYXVsdDtcclxuXHJcbiQtemYtemVyby1icmVha3BvaW50OiBzbWFsbCAhZGVmYXVsdDtcclxuXHJcbiQtemYtYnJlYWtwb2ludHMta2V5czogbWFwLXRvLWxpc3QoJGJyZWFrcG9pbnRzLCAna2V5cycpO1xyXG5cclxuQGlmIG50aChtYXAtdmFsdWVzKCRicmVha3BvaW50cyksIDEpICE9IDAge1xyXG4gIEBlcnJvciAnWW91ciBzbWFsbGVzdCBicmVha3BvaW50IChkZWZpbmVkIGluICRicmVha3BvaW50cykgbXVzdCBiZSBzZXQgdG8gXCIwXCIuJztcclxufVxyXG5AZWxzZSB7XHJcbiAgJC16Zi16ZXJvLWJyZWFrcG9pbnQ6IG50aChtYXAta2V5cygkYnJlYWtwb2ludHMpLCAxKTtcclxufVxyXG5cclxuLy8vIEFsbCBvZiB0aGUgbmFtZXMgaW4gdGhpcyBsaXN0IHdpbGwgYmUgb3V0cHV0IGFzIGNsYXNzZXMgaW4geW91ciBDU1MsIGxpa2UgYC5zbWFsbC0xMmAsIGAubWVkaXVtLTZgLCBhbmQgc28gb24uIEVhY2ggdmFsdWUgaW4gdGhpcyBsaXN0IG11c3QgYWxzbyBiZSBpbiB0aGUgYCRicmVha3BvaW50c2AgbWFwLlxyXG4vLy8gQHR5cGUgTGlzdFxyXG4kYnJlYWtwb2ludC1jbGFzc2VzOiAoc21hbGwgbWVkaXVtIGxhcmdlKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBHZW5lcmF0ZXMgYSBtZWRpYSBxdWVyeSBzdHJpbmcgbWF0Y2hpbmcgdGhlIGlucHV0IHZhbHVlLiBSZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGBicmVha3BvaW50KClgIG1peGluIHRvIHNlZSB3aGF0IHRoZSBwb3NzaWJsZSBpbnB1dHMgYXJlLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICR2YWwgW3NtYWxsXSAtIEJyZWFrcG9pbnQgbmFtZSwgb3IgcHgsIHJlbSwgb3IgZW0gdmFsdWUgdG8gcHJvY2Vzcy5cclxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQoJHZhbDogJC16Zi16ZXJvLWJyZWFrcG9pbnQpIHtcclxuICAvLyBTaXplIG9yIGtleXdvcmRcclxuICAkYnA6IG50aCgkdmFsLCAxKTtcclxuICAvLyBWYWx1ZSBmb3IgbWF4LXdpZHRoIG1lZGlhIHF1ZXJpZXNcclxuICAkYnAtbWF4OiAwO1xyXG4gIC8vIERpcmVjdGlvbiBvZiBtZWRpYSBxdWVyeSAodXAsIGRvd24sIG9yIG9ubHkpXHJcbiAgJGRpcjogaWYobGVuZ3RoKCR2YWwpID4gMSwgbnRoKCR2YWwsIDIpLCB1cCk7XHJcbiAgLy8gRXZlbnR1YWwgb3V0cHV0XHJcbiAgJHN0cjogJyc7XHJcbiAgLy8gSXMgaXQgYSBuYW1lZCBtZWRpYSBxdWVyeT9cclxuICAkbmFtZWQ6IGZhbHNlO1xyXG5cclxuICAvLyBPcmllbnRhdGlvbiBtZWRpYSBxdWVyaWVzIGhhdmUgYSB1bmlxdWUgc3ludGF4XHJcbiAgQGlmICRicCA9PSAnbGFuZHNjYXBlJyBvciAkYnAgPT0gJ3BvcnRyYWl0JyB7XHJcbiAgICBAcmV0dXJuICcob3JpZW50YXRpb246ICN7JGJwfSknO1xyXG4gIH1cclxuICBAZWxzZSBpZiAkYnAgPT0gJ3JldGluYScge1xyXG4gICAgQHJldHVybiAnKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMiksIChtaW4tcmVzb2x1dGlvbjogMTkyZHBpKSc7XHJcbiAgfVxyXG5cclxuICAvLyBUcnkgdG8gcHVsbCBhIG5hbWVkIGJyZWFrcG9pbnQgb3V0IG9mIHRoZSAkYnJlYWtwb2ludHMgbWFwXHJcbiAgQGlmIHR5cGUtb2YoJGJwKSA9PSAnc3RyaW5nJyB7XHJcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkYnApIHtcclxuICAgICAgQGlmICRkaXIgPT0gJ29ubHknIG9yICRkaXIgPT0gJ2Rvd24nIHtcclxuICAgICAgICAkYnAtbWF4OiAtemYtbWFwLW5leHQoJGJyZWFrcG9pbnRzLCAkYnApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAkYnA6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkYnApO1xyXG4gICAgICAkbmFtZWQ6IHRydWU7XHJcbiAgICB9XHJcbiAgICBAZWxzZSB7XHJcbiAgICAgICRicDogMDtcclxuICAgICAgQHdhcm4gJ2JyZWFrcG9pbnQoKTogXCIjeyR2YWx9XCIgaXMgbm90IGRlZmluZWQgaW4geW91ciAkYnJlYWtwb2ludHMgc2V0dGluZy4nO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gQ29udmVydCBhbnkgcGl4ZWwsIHJlbSwgb3IgdW5pdGxlc3MgdmFsdWUgdG8gZW1cclxuICAkYnA6IC16Zi1icC10by1lbSgkYnApO1xyXG4gIEBpZiAkYnAtbWF4IHtcclxuICAgICRicC1tYXg6IC16Zi1icC10by1lbSgkYnAtbWF4KSAtICgxLzE2KTtcclxuICB9XHJcblxyXG4gIC8vIENvbmRpdGlvbnMgdG8gc2tpcCBtZWRpYSBxdWVyeSBjcmVhdGlvblxyXG4gIC8vIC0gSXQncyBhIG5hbWVkIGJyZWFrcG9pbnQgdGhhdCByZXNvbHZlZCB0byBcIjAgZG93blwiIG9yIFwiMCB1cFwiXHJcbiAgLy8gLSBJdCdzIGEgbnVtZXJpYyBicmVha3BvaW50IHRoYXQgcmVzb2x2ZWQgdG8gXCIwIFwiICsgYW55dGhpbmdcclxuICBAaWYgJGJwID4gMGVtIG9yICRkaXIgPT0gJ29ubHknIG9yICRkaXIgPT0gJ2Rvd24nIHtcclxuICAgIC8vIGBvbmx5YCByYW5nZXMgdXNlIHRoZSBmb3JtYXQgYChtaW4td2lkdGg6IG4pIGFuZCAobWF4LXdpZHRoOiBuKWBcclxuICAgIEBpZiAkZGlyID09ICdvbmx5JyB7XHJcbiAgICAgIC8vIE9ubHkgbmFtZWQgbWVkaWEgcXVlcmllcyBjYW4gaGF2ZSBhbiBcIm9ubHlcIiByYW5nZVxyXG4gICAgICBAaWYgJG5hbWVkID09IHRydWUge1xyXG4gICAgICAgIC8vIE9ubHkgdXNlIFwibWluLXdpZHRoXCIgaWYgdGhlIGZsb29yIGlzIGdyZWF0ZXIgdGhhbiAwXHJcbiAgICAgICAgQGlmICRicCA+IDBlbSB7XHJcbiAgICAgICAgICAkc3RyOiAkc3RyICsgJyhtaW4td2lkdGg6ICN7JGJwfSknO1xyXG5cclxuICAgICAgICAgIC8vIE9ubHkgYWRkIFwiYW5kXCIgdG8gdGhlIG1lZGlhIHF1ZXJ5IGlmIHRoZXJlJ3MgYSBjZWlsaW5nXHJcbiAgICAgICAgICBAaWYgJGJwLW1heCAhPSBudWxsIHtcclxuICAgICAgICAgICAgJHN0cjogJHN0ciArICcgYW5kICc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBPbmx5IHVzZSBcIm1heC13aWR0aFwiIGlmIHRoZXJlJ3MgYSBjZWlsaW5nXHJcbiAgICAgICAgQGlmICRicC1tYXggIT0gbnVsbCB7XHJcbiAgICAgICAgICAkc3RyOiAkc3RyICsgJyhtYXgtd2lkdGg6ICN7JGJwLW1heH0pJztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgQGVsc2Uge1xyXG4gICAgICAgIEB3YXJuICdicmVha3BvaW50KCk6IE9ubHkgbmFtZWQgbWVkaWEgcXVlcmllcyBjYW4gaGF2ZSBhbiBgb25seWAgcmFuZ2UuJztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIGBkb3duYCByYW5nZXMgdXNlIHRoZSBmb3JtYXQgYChtYXgtd2lkdGg6IG4pYFxyXG4gICAgQGVsc2UgaWYgJGRpciA9PSAnZG93bicge1xyXG4gICAgICAkbWF4OiBpZigkbmFtZWQsICRicC1tYXgsICRicCk7XHJcblxyXG4gICAgICAvLyBTa2lwIG1lZGlhIHF1ZXJ5IGNyZWF0aW9uIGlmIGlucHV0IHZhbHVlIGlzIGV4YWN0bHkgXCIwIGRvd25cIixcclxuICAgICAgLy8gdW5sZXNzIHRoZSBmdW5jdGlvbiB3YXMgY2FsbGVkIGFzIFwic21hbGwgZG93blwiLCBpbiB3aGljaCBjYXNlIGl0J3MganVzdCBcInNtYWxsIG9ubHlcIlxyXG4gICAgICBAaWYgJG5hbWVkIG9yICRicCA+IDBlbSB7XHJcbiAgICAgICAgQGlmICRtYXggIT0gbnVsbCB7XHJcbiAgICAgICAgICAkc3RyOiAkc3RyICsgJyhtYXgtd2lkdGg6ICN7JG1heH0pJztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBgdXBgIHJhbmdlcyB1c2UgdGhlIGZvcm1hdCBgKG1pbi13aWR0aDogbilgXHJcbiAgICBAZWxzZSBpZiAkYnAgPiAwZW0ge1xyXG4gICAgICAkc3RyOiAkc3RyICsgJyhtaW4td2lkdGg6ICN7JGJwfSknO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQHJldHVybiAkc3RyO1xyXG59XHJcblxyXG4vLy8gV3JhcHMgYSBtZWRpYSBxdWVyeSBhcm91bmQgdGhlIGNvbnRlbnQgeW91IHB1dCBpbnNpZGUgdGhlIG1peGluLiBUaGlzIG1peGluIGFjY2VwdHMgYSBudW1iZXIgb2YgdmFsdWVzOlxyXG4vLy8gIC0gSWYgYSBzdHJpbmcgaXMgcGFzc2VkLCB0aGUgbWl4aW4gd2lsbCBsb29rIGZvciBpdCBpbiB0aGUgYCRicmVha3BvaW50c2AgbWFwLCBhbmQgdXNlIGEgbWVkaWEgcXVlcnkgdGhlcmUuXHJcbi8vLyAgLSBJZiBhIHBpeGVsIHZhbHVlIGlzIHBhc3NlZCwgaXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYW4gZW0gdmFsdWUgdXNpbmcgYCRnbG9iYWwtZm9udC1zaXplYCBhcyB0aGUgYmFzZS5cclxuLy8vICAtIElmIGEgcmVtIHZhbHVlIGlzIHBhc3NlZCwgdGhlIHVuaXQgd2lsbCBiZSBjaGFuZ2VkIHRvIGVtLlxyXG4vLy8gIC0gSWYgYW4gZW0gdmFsdWUgaXMgcGFzc2VkLCB0aGUgdmFsdWUgd2lsbCBiZSB1c2VkIGFzLWlzLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICR2YWx1ZSAtIEJyZWFrcG9pbnQgbmFtZSwgb3IgcHgsIHJlbSwgb3IgZW0gdmFsdWUgdG8gcHJvY2Vzcy5cclxuLy8vXHJcbi8vLyBAb3V0cHV0IElmIHRoZSBicmVha3BvaW50IGlzIFwiMHB4IGFuZCBsYXJnZXJcIiwgb3V0cHV0cyB0aGUgY29udGVudCBhcy1pcy4gT3RoZXJ3aXNlLCBvdXRwdXRzIHRoZSBjb250ZW50IHdyYXBwZWQgaW4gYSBtZWRpYSBxdWVyeS5cclxuQG1peGluIGJyZWFrcG9pbnQoJHZhbHVlKSB7XHJcbiAgJHN0cjogYnJlYWtwb2ludCgkdmFsdWUpO1xyXG4gICRicDogaW5kZXgoJC16Zi1icmVha3BvaW50cy1rZXlzLCAkdmFsdWUpO1xyXG4gICRwYnA6IGluZGV4KCQtemYtYnJlYWtwb2ludHMta2V5cywgJHByaW50LWJyZWFrcG9pbnQpO1xyXG5cclxuICAkb2xkLXpmLXNpemU6IG51bGw7XHJcblxyXG4gIC8vIE1ha2UgYnJlYWtwb2ludCBzaXplIGF2YWlsYWJsZSBhcyBhIHZhcmlhYmxlXHJcbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoLXpmLXNpemUpIHtcclxuICAgICRvbGQtemYtc2l6ZTogJC16Zi1zaXplO1xyXG4gIH1cclxuICAkLXpmLXNpemU6IG50aCgkdmFsdWUsIDEpICFnbG9iYWw7IC8vIGdldCB0aGUgZmlyc3QgdmFsdWUgdG8gYWNjb3VudCBmb3IgYG9ubHlgIGFuZCBgZG93bmAga2V5d29yZHNcclxuXHJcbiAgLy8gSWYgJHN0ciBpcyBzdGlsbCBhbiBlbXB0eSBzdHJpbmcsIG5vIG1lZGlhIHF1ZXJ5IGlzIG5lZWRlZFxyXG4gIEBpZiAkc3RyID09ICcnIHtcclxuICAgIEBjb250ZW50O1xyXG4gIH1cclxuXHJcbiAgLy8gT3RoZXJ3aXNlLCB3cmFwIHRoZSBjb250ZW50IGluIGEgbWVkaWEgcXVlcnlcclxuICBAZWxzZSB7XHJcbiAgICAvLyBGb3IgbmFtZWQgYnJlYWtwb2ludHMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICRwcmludC1icmVha3BvaW50LCBhZGQgcHJpbnQgdG8gdGhlIG1lZGlhIHR5cGVzXHJcbiAgICBAaWYgJGJwICE9IG51bGwgYW5kICRicCA8PSAkcGJwIHtcclxuICAgICAgQG1lZGlhIHByaW50LCBzY3JlZW4gYW5kICN7JHN0cn0ge1xyXG4gICAgICAgIEBjb250ZW50O1xyXG4gICAgICAgfVxyXG4gICAgfVxyXG4gICAgQGVsc2Uge1xyXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAjeyRzdHJ9IHtcclxuICAgICAgICBAY29udGVudDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGlmICRvbGQtemYtc2l6ZSAhPSBudWxsIHtcclxuICAgIC8vIFJlc3RvcmUgdGhlIG9sZCBicmVha3BvaW50IHNpemVcclxuICAgICQtemYtc2l6ZTogJG9sZC16Zi1zaXplICFnbG9iYWw7XHJcbiAgfSBAZWxzZSB7XHJcbiAgICAkLXpmLXNpemU6IG51bGwgIWdsb2JhbDtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBDb252ZXJzIHRoZSBicmVha3BvaW50cyBtYXAgdG8gYSBVUkwtZW5jb2RlZCBzdHJpbmcsIGxpa2UgdGhpczogYGtleTE9dmFsdWUxJmtleTI9dmFsdWUyYC4gVGhlIHZhbHVlIGlzIHRoZW4gZHJvcHBlZCBpbnRvIHRoZSBDU1MgZm9yIGEgc3BlY2lhbCBgPG1ldGE+YCB0YWcsIHdoaWNoIGlzIHJlYWQgYnkgdGhlIEZvdW5kYXRpb24gSmF2YVNjcmlwdC4gVGhpcyBpcyBob3cgd2UgdHJhbnNmZXIgdmFsdWVzIGZyb20gU2FzcyB0byBKYXZhU2NyaXB0LCBzbyB0aGV5IGNhbiBiZSBkZWZpbmVkIGluIG9uZSBwbGFjZS5cclxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIGNvbnZlcnQuXHJcbi8vL1xyXG4vLy8gQHJldHVybnMge1N0cmluZ30gQSBzdHJpbmcgY29udGFpbmluZyB0aGUgbWFwJ3MgY29udGVudHMuXHJcbkBmdW5jdGlvbiAtemYtYnAtc2VyaWFsaXplKCRtYXApIHtcclxuICAkc3RyOiAnJztcclxuICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJG1hcCB7XHJcbiAgICAkc3RyOiAkc3RyICsgJGtleSArICc9JyArIC16Zi1icC10by1lbSgkdmFsdWUpICsgJyYnO1xyXG4gIH1cclxuICAkc3RyOiBzdHItc2xpY2UoJHN0ciwgMSwgLTIpO1xyXG5cclxuICBAcmV0dXJuICRzdHI7XHJcbn1cclxuXHJcbi8vLyBGaW5kIHRoZSBuZXh0IGtleSBpbiBhIG1hcC5cclxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIHRyYXZlcnNlLlxyXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGtleSAtIEtleSB0byB1c2UgYXMgYSBzdGFydGluZyBwb2ludC5cclxuLy8vXHJcbi8vLyBAcmV0dXJucyB7TWl4ZWR9IFRoZSB2YWx1ZSBmb3IgdGhlIGtleSBhZnRlciBgJGtleWAsIGlmIGAka2V5YCB3YXMgZm91bmQuIElmIGAka2V5YCB3YXMgbm90IGZvdW5kLCBvciBgJGtleWAgd2FzIHRoZSBsYXN0IHZhbHVlIGluIHRoZSBtYXAsIHJldHVybnMgYG51bGxgLlxyXG5AZnVuY3Rpb24gLXpmLW1hcC1uZXh0KCRtYXAsICRrZXkpIHtcclxuXHJcbiAgLy8gU3RvcmUgdGhlIGtleXMgb2YgdGhlIG1hcCBhcyBhIGxpc3RcclxuICAkdmFsdWVzOiBtYXAta2V5cygkbWFwKTtcclxuXHJcbiAgJGk6IDA7XHJcblxyXG4gIC8vIElmIHRoZSBLZXkgRXhpc3RzLCBHZXQgdGhlIGluZGV4IG9mIHRoZSBrZXkgd2l0aGluIHRoZSBtYXAgYW5kIGFkZCAxIHRvIGl0IGZvciB0aGUgbmV4dCBicmVha3BvaW50IGluIHRoZSBtYXBcclxuICBAaWYgKG1hcC1oYXMta2V5KCRtYXAsICRrZXkpKSB7XHJcbiAgICAkaTogaW5kZXgoJHZhbHVlcywgJGtleSkgKyAxO1xyXG4gIH1cclxuXHJcbiAgLy8gSWYgdGhlIGtleSBkb2Vzbid0IGV4aXN0LCBvciBpdCdzIHRoZSBsYXN0IGtleSBpbiB0aGUgbWFwLCByZXR1cm4gbnVsbFxyXG4gIEBpZiAoJGkgPiBsZW5ndGgoJG1hcCkgb3IgJGkgPT0gMCkge1xyXG4gICAgQHJldHVybiBudWxsO1xyXG4gIH1cclxuICAvLyBPdGhlcndpc2UsIHJldHVybiB0aGUgdmFsdWVcclxuICBAZWxzZSB7XHJcbiAgICBAcmV0dXJuIG1hcC1nZXQoJG1hcCwgbnRoKCR2YWx1ZXMsICRpKSk7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuLy8vIFJldHVybiBhIGxpc3Qgb2Ygb3VyIG5hbWVkIGJyZWFrcG9pbnRzIGxlc3MgdGhhbiAka2V5LiBVc2VmdWwgZm9yIGRlYWxpbmcgd2l0aFxyXG4vLy8gcmVzcG9uc2l2ZSBndXR0ZXJzIGZvciB0aGUgZ3JpZC5cclxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxyXG4vLy9cclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAka2V5IC0gS2V5IHRvIHVzZSBhcyBsYXN0IGJyZWFrcG9pbnQuXHJcbi8vL1xyXG4vLy8gQHJldHVybnMge0FycmF5fSBUaGUgbGlzdCBvZiBicmVha3BvaW50cyB1cCB0byBhbmQuIElmICRrZXkgaXMgYXV0bywgcmV0dXJucyBicmVha3BvaW50cyBhYm92ZSB0aGUgemVyb1xyXG5AZnVuY3Rpb24gLXpmLWJyZWFrcG9pbnRzLWxlc3MtdGhhbigka2V5KSB7XHJcbiAgJGxpc3Q6ICgpO1xyXG4gICRmb3VuZF9rZXk6IGZhbHNlO1xyXG5cclxuICBAZWFjaCAkbmFtZSBpbiAkLXpmLWJyZWFrcG9pbnRzLWtleXMge1xyXG4gICAgQGlmICgkbmFtZSA9PSAka2V5KSB7XHJcbiAgICAgICRmb3VuZF9rZXk6IHRydWU7XHJcbiAgICB9XHJcbiAgICBAaWYgbm90ICRmb3VuZF9rZXkge1xyXG4gICAgICAkbGlzdDogYXBwZW5kKCRsaXN0LCAkbmFtZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIEByZXR1cm4gJGxpc3Q7XHJcbn1cclxuXHJcbi8vLyBSZXR1cm4gYSBsaXN0IG9mIG91ciBuYW1lZCBicmVha3BvaW50cyBsZXNzIHRoYW4gJGtleS4gVXNlZnVsIGZvciBkZWFsaW5nIHdpdGhcclxuLy8vIHJlc3BvbnNpdmUgZ3V0dGVycyBmb3IgdGhlIGdyaWQuXHJcbi8vLyBAYWNjZXNzIHByaXZhdGVcclxuLy8vXHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbmcgLSBhIG5hbWVkIG9yIG5vbi1uYW1lZCBicmVha3BvaW5nLlxyXG4vLy9cclxuLy8vIEByZXR1cm5zIHtBcnJheX0gVGhlIGxpc3Qgb2YgYnJlYWtwb2ludHMgdXAgdG8gYW5kLiBJZiAka2V5IGlzIGF1dG8sIHJldHVybnMgYnJlYWtwb2ludHMgYWJvdmUgdGhlIHplcm9cclxuQGZ1bmN0aW9uIC16Zi1jbG9zZXN0LW5hbWVkLWJyZWFrcG9pbnQoJGJyZWFrcG9pbnQpIHtcclxuICAkbGFzdDogJC16Zi16ZXJvLWJyZWFrcG9pbnQ7XHJcbiAgJGZvdW5kOiBmYWxzZTtcclxuXHJcbiAgJHZhbHVlOiB1bml0bGVzcy1jYWxjKCRicmVha3BvaW50LCAxcHgpO1xyXG4gIEBlYWNoICRrZXksICR2YWwgaW4gJGJyZWFrcG9pbnRzIHtcclxuICAgIEBpZiBub3QgJGZvdW5kIHtcclxuICAgICAgQGlmIHVuaXRsZXNzLWNhbGMoJHZhbCkgPiAkdmFsdWUge1xyXG4gICAgICAgICRmb3VuZDogdHJ1ZTtcclxuICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgJGxhc3Q6ICRrZXk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEByZXR1cm4gJGxhc3Q7XHJcbn1cclxuXHJcbi8vLyBHZXQgYSB2YWx1ZSBmb3IgYSBicmVha3BvaW50IGZyb20gYSByZXNwb25zaXZlIGNvbmZpZyBtYXAgb3Igc2luZ2xlIHZhbHVlLlxyXG4vLy8gLSBJZiB0aGUgY29uZmlnIGlzIGEgc2luZ2xlIHZhbHVlLCByZXR1cm4gaXQgcmVnYXJkbGVzcyBvZiBgJHZhbHVlYC5cclxuLy8vIC0gSWYgdGhlIGNvbmZpZyBpcyBhIG1hcCBhbmQgaGFzIHRoZSBrZXkgYCR2YWx1ZWAsIHRoZSBleGFjdCBicmVha3BvaW50IHZhbHVlIGlzIHJldHVybmVkLlxyXG4vLy8gLSBJZiB0aGUgY29uZmlnIGlzIGEgbWFwIGFuZCBkb2VzICpub3QqIGhhdmUgdGhlIGJyZWFrcG9pbnQsIHRoZSB2YWx1ZSBtYXRjaGluZyB0aGUgbmV4dCBsb3dlc3QgYnJlYWtwb2ludCBpbiB0aGUgY29uZmlnIG1hcCBpcyByZXR1cm5lZC5cclxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJG1hcCAtIFJlc3BvbnNpdmUgY29uZmlnIG1hcCBvciBzaW5nbGUgdmFsdWUuXHJcbi8vLyBAcGFyYW0ge0tleXdvcmR9ICR2YWx1ZSAtIEJyZWFrcG9pbnQgbmFtZSB0byB1c2UuXHJcbi8vL1xyXG4vLy8gQHJldHVybiB7TWl4ZWR9IFRoZSBjb3JyZXNwb25kaW5nIGJyZWFrcG9pbnQgdmFsdWUuXHJcbkBmdW5jdGlvbiAtemYtZ2V0LWJwLXZhbCgkbWFwLCAkdmFsdWUpIHtcclxuICAvLyBJZiB0aGUgZ2l2ZW4gbWFwIGlzIGEgc2luZ2xlIHZhbHVlLCByZXR1cm4gaXRcclxuICBAaWYgdHlwZS1vZigkbWFwKSA9PSAnbnVtYmVyJyB7XHJcbiAgICBAcmV0dXJuICRtYXA7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gQ2hlY2sgaWYgdGhlIGJyZWFrcG9pbnQgbmFtZSBleGlzdHMgZ2xvYmFsbHlcclxuICBAaWYgbm90IG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJHZhbHVlKSB7XHJcbiAgICBAaWYgdHlwZS1vZigkdmFsdWUpID09ICdudW1iZXInIHtcclxuICAgICAgJHZhbHVlOiAtemYtY2xvc2VzdC1uYW1lZC1icmVha3BvaW50KCR2YWx1ZSk7XHJcbiAgICB9IEBlbHNlIHtcclxuICAgICAgQHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyBDaGVjayBpZiB0aGUgYnJlYWtwb2ludCBuYW1lIGV4aXN0cyBpbiB0aGUgbG9jYWwgY29uZmlnIG1hcFxyXG4gIEBlbHNlIGlmIG1hcC1oYXMta2V5KCRtYXAsICR2YWx1ZSkge1xyXG4gICAgLy8gSWYgaXQgZG9lcywganVzdCByZXR1cm4gdGhlIHZhbHVlXHJcbiAgICBAcmV0dXJuIG1hcC1nZXQoJG1hcCwgJHZhbHVlKTtcclxuICB9XHJcbiAgLy8gT3RoZXJ3aXNlLCBmaW5kIHRoZSBuZXh0IGxvd2VzdCBicmVha3BvaW50IGFuZCByZXR1cm4gdGhhdCB2YWx1ZVxyXG4gIEBlbHNlIHtcclxuICAgICRhbmNob3I6IG51bGw7XHJcbiAgICAkZm91bmQ6IGZhbHNlO1xyXG5cclxuICAgIEBlYWNoICRrZXksICR2YWwgaW4gJGJyZWFrcG9pbnRzIHtcclxuICAgICAgQGlmIG5vdCAkZm91bmQge1xyXG4gICAgICAgIEBpZiBtYXAtaGFzLWtleSgkbWFwLCAka2V5KSB7XHJcbiAgICAgICAgICAkYW5jaG9yOiAka2V5O1xyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgJGtleSA9PSAkdmFsdWUge1xyXG4gICAgICAgICAgJGZvdW5kOiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEByZXR1cm4gbWFwLWdldCgkbWFwLCAkYW5jaG9yKTtcclxuICB9XHJcbn1cclxuXHJcbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIHNtYWxsKSB7XHJcbiAgJHNtYWxsLXVwOiBzY3JlZW47XHJcbiAgJHNtYWxsLW9ubHk6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KHNtYWxsIG9ubHkpfScpO1xyXG59XHJcblxyXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCBtZWRpdW0pIHtcclxuICAkbWVkaXVtLXVwOiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChtZWRpdW0pfScpO1xyXG4gICRtZWRpdW0tb25seTogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQobWVkaXVtIG9ubHkpfScpO1xyXG59XHJcblxyXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCBsYXJnZSkge1xyXG4gICRsYXJnZS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQobGFyZ2UpfScpO1xyXG4gICRsYXJnZS1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChsYXJnZSBvbmx5KX0nKTtcclxufVxyXG5cclxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgeGxhcmdlKSB7XHJcbiAgJHhsYXJnZS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQoeGxhcmdlKX0nKTtcclxuICAkeGxhcmdlLW9ubHk6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KHhsYXJnZSBvbmx5KX0nKTtcclxufVxyXG5cclxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgeHhsYXJnZSkge1xyXG4gICR4eGxhcmdlLXVwOiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludCh4eGxhcmdlKX0nKTtcclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXHJcbi8vLy9cclxuXHJcbi8vLyBDcmVhdGVzIGFuIGlubmVyIGJveC1zaGFkb3cgZm9yIG9ubHkgb25lIHNpZGVcclxuLy8vIFxyXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc2lkZSAtIFNpZGUgdGhlIHNoYWRvdyBpcyBzdXBwb3NlZCB0byBhcHBlYXIuIENhbiBiZSBgdG9wYCwgYGxlZnRgLCBgcmlnaHRgIG9yIGBib3R0b21gLlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzaXplIC0gV2lkdGggZm9yIHRoZSB0YXJnZXQgc2lkZS5cclxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIENvbG9yIG9mIHRoZSBzaGFkb3cuXHJcbkBtaXhpbiBpbm5lci1zaWRlLXNoYWRvdyhcclxuICAkc2lkZTogYm90dG9tLFxyXG4gICRzaXplOiAyMHB4LFxyXG4gICRjb2xvcjogcmdiYSgkYmxhY2ssIDAuMjUpXHJcbikge1xyXG5cclxuICAkaGVscGVyOiByb3VuZCgkc2l6ZSAqIDAuNjUpO1xyXG5cclxuICBAaWYgKCRzaWRlID09IHRvcCkge1xyXG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAkaGVscGVyICRzaXplICgtMSkqJGhlbHBlciAkY29sb3I7XHJcbiAgfSBAZWxzZSBpZiAoJHNpZGUgPT0gbGVmdCkge1xyXG4gICAgYm94LXNoYWRvdzogaW5zZXQgJGhlbHBlciAwICRzaXplICgtMSkqJGhlbHBlciAkY29sb3I7XHJcbiAgfSBAZWxzZSBpZiAoJHNpZGUgPT0gcmlnaHQpIHtcclxuICAgIGJveC1zaGFkb3c6IGluc2V0ICgtMSkqJGhlbHBlciAwICRzaXplICgtMSkqJGhlbHBlciAkY29sb3I7XHJcbiAgfSBAZWxzZSBpZiAoJHNpZGUgPT0gYm90dG9tKSB7XHJcbiAgICBib3gtc2hhZG93OiBpbnNldCAwICgtMSkqJGhlbHBlciAkc2l6ZSAoLTEpKiRoZWxwZXIgJGNvbG9yO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIENyZWF0ZXMgYSBDU1MgdHJpYW5nbGUsIHdoaWNoIGNhbiBiZSB1c2VkIGZvciBkcm9wZG93biBhcnJvd3MsIGRyb3Bkb3duIHBpcHMsIGFuZCBtb3JlLiBVc2UgdGhpcyBtaXhpbiBpbnNpZGUgYSBgJjo6YmVmb3JlYCBvciBgJjo6YWZ0ZXJgIHNlbGVjdG9yLCB0byBhdHRhY2ggdGhlIHRyaWFuZ2xlIHRvIGFuIGV4aXN0aW5nIGVsZW1lbnQuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR0cmlhbmdsZS1zaXplIC0gV2lkdGggb2YgdGhlIHRyaWFuZ2xlLlxyXG4vLy8gQHBhcmFtIHtDb2xvcn0gJHRyaWFuZ2xlLWNvbG9yIC0gQ29sb3Igb2YgdGhlIHRyaWFuZ2xlLlxyXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkdHJpYW5nbGUtZGlyZWN0aW9uIC0gRGlyZWN0aW9uIHRoZSB0cmlhbmdsZSBwb2ludHMuIENhbiBiZSBgdXBgLCBgcmlnaHRgLCBgZG93bmAsIG9yIGBsZWZ0YC5cclxuQG1peGluIGNzcy10cmlhbmdsZShcclxuICAkdHJpYW5nbGUtc2l6ZSxcclxuICAkdHJpYW5nbGUtY29sb3IsXHJcbiAgJHRyaWFuZ2xlLWRpcmVjdGlvblxyXG4pIHtcclxuICBkaXNwbGF5OiBibG9jaztcclxuICB3aWR0aDogMDtcclxuICBoZWlnaHQ6IDA7XHJcblxyXG4gIGJvcmRlcjogaW5zZXQgJHRyaWFuZ2xlLXNpemU7XHJcblxyXG4gIGNvbnRlbnQ6ICcnO1xyXG5cclxuICBAaWYgKCR0cmlhbmdsZS1kaXJlY3Rpb24gPT0gZG93bikge1xyXG4gICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDtcclxuICAgIGJvcmRlci10b3Atc3R5bGU6IHNvbGlkO1xyXG4gICAgYm9yZGVyLWNvbG9yOiAkdHJpYW5nbGUtY29sb3IgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XHJcbiAgfVxyXG4gIEBpZiAoJHRyaWFuZ2xlLWRpcmVjdGlvbiA9PSB1cCkge1xyXG4gICAgYm9yZGVyLXRvcC13aWR0aDogMDtcclxuICAgIGJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkO1xyXG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAkdHJpYW5nbGUtY29sb3I7XHJcbiAgfVxyXG4gIEBpZiAoJHRyaWFuZ2xlLWRpcmVjdGlvbiA9PSByaWdodCkge1xyXG4gICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwO1xyXG4gICAgYm9yZGVyLWxlZnQtc3R5bGU6IHNvbGlkO1xyXG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAkdHJpYW5nbGUtY29sb3I7XHJcbiAgfVxyXG4gIEBpZiAoJHRyaWFuZ2xlLWRpcmVjdGlvbiA9PSBsZWZ0KSB7XHJcbiAgICBib3JkZXItbGVmdC13aWR0aDogMDtcclxuICAgIGJvcmRlci1yaWdodC1zdHlsZTogc29saWQ7XHJcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICR0cmlhbmdsZS1jb2xvciB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBDcmVhdGVzIGEgbWVudSBpY29uIHdpdGggYSBzZXQgd2lkdGgsIGhlaWdodCwgbnVtYmVyIG9mIGJhcnMsIGFuZCBjb2xvcnMuIFRoZSBtaXhpbiB1c2VzIHRoZSBoZWlnaHQgb2YgdGhlIGljb24gYW5kIHRoZSB3ZWlnaHQgb2YgdGhlIGJhcnMgdG8gZGV0ZXJtaW5lIHNwYWNpbmcuIDxkaXYgY2xhc3M9XCJkb2NzLWV4YW1wbGUtYnVyZ2VyXCI+PC9kaXY+XHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskYmxhY2tdIC0gQ29sb3IgdG8gdXNlIGZvciB0aGUgaWNvbi5cclxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvci1ob3ZlciBbJGRhcmstZ3JheV0gLSBDb2xvciB0byB1c2Ugd2hlbiB0aGUgaWNvbiBpcyBob3ZlcmVkIG92ZXIuXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJHdpZHRoIFsyMHB4XSAtIFdpZHRoIG9mIHRoZSBpY29uLlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRoZWlnaHQgWzE2cHhdIC0gSGVpZ2h0IG9mIHRoZSBpY29uLlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3ZWlnaHQgWzJweF0gLSBIZWlnaHQgb2YgaW5kaXZpZHVhbCBiYXJzIGluIHRoZSBpY29uLlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYXJzIFszXSAtIE51bWJlciBvZiBiYXJzIGluIHRoZSBpY29uLlxyXG5AbWl4aW4gaGFtYnVyZ2VyKFxyXG4gICRjb2xvcjogJGJsYWNrLFxyXG4gICRjb2xvci1ob3ZlcjogJGRhcmstZ3JheSxcclxuICAkd2lkdGg6IDIwcHgsXHJcbiAgJGhlaWdodDogMTZweCxcclxuICAkd2VpZ2h0OiAycHgsXHJcbiAgJGJhcnM6IDNcclxuKSB7XHJcbiAgLy8gYm94LXNoYWRvdyBDU1Mgb3V0cHV0XHJcbiAgJHNoYWRvdzogKCk7XHJcbiAgJGhvdmVyLXNoYWRvdzogKCk7XHJcblxyXG4gIC8vIFNwYWNpbmcgYmV0d2VlbiBiYXJzIGlzIGNhbGN1bGF0ZWQgYmFzZWQgb24gdGhlIHRvdGFsIGhlaWdodCBvZiB0aGUgaWNvbiBhbmQgdGhlIHdlaWdodCBvZiBlYWNoIGJhclxyXG4gICRzcGFjaW5nOiAoJGhlaWdodCAtICgkd2VpZ2h0ICogJGJhcnMpKSAvICgkYmFycyAtIDEpO1xyXG5cclxuICBAaWYgdW5pdCgkc3BhY2luZykgPT0gJ3B4JyB7XHJcbiAgICAkc3BhY2luZzogZmxvb3IoJHNwYWNpbmcpO1xyXG4gIH1cclxuXHJcbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkYmFycyB7XHJcbiAgICAkb2Zmc2V0OiAoJHdlaWdodCArICRzcGFjaW5nKSAqICgkaSAtIDEpO1xyXG4gICAgJHNoYWRvdzogYXBwZW5kKCRzaGFkb3csIDAgJG9mZnNldCAwICRjb2xvciwgY29tbWEpO1xyXG4gIH1cclxuXHJcbiAgLy8gSWNvbiBjb250YWluZXJcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgd2lkdGg6ICR3aWR0aDtcclxuICBoZWlnaHQ6ICRoZWlnaHQ7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG5cclxuICAvLyBJY29uIGJhcnNcclxuICAmOjphZnRlciB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDA7XHJcbiAgICBsZWZ0OiAwO1xyXG5cclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6ICR3ZWlnaHQ7XHJcblxyXG4gICAgYmFja2dyb3VuZDogJGNvbG9yO1xyXG4gICAgYm94LXNoYWRvdzogJHNoYWRvdztcclxuXHJcbiAgICBjb250ZW50OiAnJztcclxuICB9XHJcblxyXG4gIC8vIEhvdmVyIHN0YXRlXHJcbiAgQGlmICRjb2xvci1ob3ZlciB7XHJcbiAgICAvLyBHZW5lcmF0ZSBDU1NcclxuICAgIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJGJhcnMge1xyXG4gICAgICAkb2Zmc2V0OiAoJHdlaWdodCArICRzcGFjaW5nKSAqICgkaSAtIDEpO1xyXG4gICAgICAkaG92ZXItc2hhZG93OiBhcHBlbmQoJGhvdmVyLXNoYWRvdywgMCAkb2Zmc2V0IDAgJGNvbG9yLWhvdmVyLCBjb21tYSk7XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3Zlcjo6YWZ0ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItaG92ZXI7XHJcbiAgICAgIGJveC1zaGFkb3c6ICRob3Zlci1zaGFkb3c7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gQWRkcyBhIGRvd253YXJkLWZhY2luZyB0cmlhbmdsZSBhcyBhIGJhY2tncm91bmQgaW1hZ2UgdG8gYW4gZWxlbWVudC4gVGhlIGltYWdlIGlzIGZvcm1hdHRlZCBhcyBhbiBTVkcsIG1ha2luZyBpdCBlYXN5IHRvIGNoYW5nZSB0aGUgY29sb3IuIEJlY2F1c2UgSW50ZXJuZXQgRXhwbG9yZXIgZG9lc24ndCBzdXBwb3J0IGVuY29kZWQgU1ZHcyBhcyBiYWNrZ3JvdW5kIGltYWdlcywgYSBQTkcgZmFsbGJhY2sgaXMgYWxzbyBpbmNsdWRlZC5cclxuLy8vIFRoZXJlIGFyZSB0d28gUE5HIGZhbGxiYWNrczogYSBibGFjayB0cmlhbmdsZSBhbmQgYSB3aGl0ZSB0cmlhbmdsZS4gVGhlIG9uZSB1c2VkIGRlcGVuZHMgb24gdGhlIGxpZ2h0bmVzcyBvZiB0aGUgaW5wdXQgY29sb3IuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskYmxhY2tdIC0gQ29sb3IgdG8gdXNlIGZvciB0aGUgdHJpYW5nbGUuXHJcbkBtaXhpbiBiYWNrZ3JvdW5kLXRyaWFuZ2xlKCRjb2xvcjogJGJsYWNrKSB7XHJcbiAgJHJnYjogJ3JnYiUyOCN7cm91bmQocmVkKCRjb2xvcikpfSwgI3tyb3VuZChncmVlbigkY29sb3IpKX0sICN7cm91bmQoYmx1ZSgkY29sb3IpKX0lMjknO1xyXG5cclxuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgdmVyc2lvbj0nMS4xJyB3aWR0aD0nMzInIGhlaWdodD0nMjQnIHZpZXdCb3g9JzAgMCAzMiAyNCc+PHBvbHlnb24gcG9pbnRzPScwLDAgMzIsMCAxNiwyNCcgc3R5bGU9J2ZpbGw6ICN7JHJnYn0nPjwvcG9seWdvbj48L3N2Zz5cIik7XHJcblxyXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6MFxcMCkge1xyXG4gICAgQGlmIGxpZ2h0bmVzcygkY29sb3IpIDwgNjAlIHtcclxuICAgICAgLy8gV2hpdGUgdHJpYW5nbGVcclxuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQVlDQVlBQUFDYlUvODBBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQUlwSlJFRlVlTnJFa2NrTmdEQU1CQmZSa0V0ME9iUkJCZHNHWFVEZ21RZks0WGhIMm04Y3pRQUF5MjdSM3RzdzRRZmUyeDh1T082b1lMYjZHbE9vcjNHRitzd1VSQU9tVUorUnd0RUpzOVd2VEdFWXhCWHFJMU1RQVpoQ2ZVUUtSekRNVmorVHdyQUlWNmp2U1VFa1lBcjFMU2tjeVRCYi9WK0tZZlg3eEFldXNxM3NMRHRHSDNrRUdBQ1BXSWZsTlpmaFJRQUFBQUJKUlU1RXJrSmdnZz09Jyk7XHJcbiAgICB9XHJcbiAgICBAZWxzZSB7XHJcbiAgICAgIC8vIEJsYWNrIHRyaWFuZ2xlXHJcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFZQ0FZQUFBQ2JVLzgwQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFNQkpSRUZVZU5yRWxsc09oQ0FNUlZzekM5SWx6VTdLQ21WSFRKc29NV1lNVXRweXY5QmdidVhRQjVaU2RnQllZWTR5Y2dCaXZrOEtZRnNRTWZNaVRUQlA0bzNuVXpDS3pPYWJMSmJMeTIvZzMxZXZHa0FnaW5SNC9aZWdLSDVxWDNiSkNzY0EzdDB4M2tnTzV0UUZ5aGhGZjUweFJxRkxieU1VTkpRemd5akdTL3dnQ3B2S3FrUkJwdVdyRTRWOWQrMUU0ZFBVWHFJZzEwN1NRT0UvMkRSUXhNd1REeWdJSW5WREVUOVQzbENvai82ai9WQ21HalpPbDJsS3BaOEFBd0RRUDd6SWltREdGUUFBQUFCSlJVNUVya0pnZ2c9PScpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8vIEFwcGxpZXMgdGhlIG1pY3JvIGNsZWFyZml4IGhhY2sgcG9wdWxhcml6ZWQgYnkgTmljb2xhcyBHYWxsYWdoZXIuIEluY2x1ZGUgdGhpcyBtaXhpbiBvbiBhIGNvbnRhaW5lciBpZiBpdHMgY2hpbGRyZW4gYXJlIGFsbCBmbG9hdGVkLCB0byBnaXZlIHRoZSBjb250YWluZXIgYSBwcm9wZXIgaGVpZ2h0LlxyXG4vLy8gVGhlIGNsZWFyZml4IGlzIGF1Z21lbnRlZCB3aXRoIHNwZWNpZmljIHN0eWxlcyB0byBwcmV2ZW50IGJvcmRlcnMgaW4gZmxleGJveCBlbnZpcm9ubWVudHNcclxuLy8vIEBsaW5rIGh0dHA6Ly9uaWNvbGFzZ2FsbGFnaGVyLmNvbS9taWNyby1jbGVhcmZpeC1oYWNrLyBNaWNybyBDbGVhcmZpeCBIYWNrXHJcbi8vLyBAbGluayBodHRwOi8vZGFuaXNhZGVzaWduZXIuY29tL2Jsb2cvZmxleGJveC1jbGVhci1maXgtcHNldWRvLWVsZW1lbnRzLyBGbGV4Ym94IGZpeFxyXG5AbWl4aW4gY2xlYXJmaXgge1xyXG4gICY6OmJlZm9yZSxcclxuICAmOjphZnRlciB7XHJcbiAgICBkaXNwbGF5OiB0YWJsZTtcclxuICAgIGNvbnRlbnQ6ICcgJztcclxuXHJcbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcclxuICAgICAgZmxleC1iYXNpczogMDtcclxuICAgICAgb3JkZXI6IDE7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmOjphZnRlciB7XHJcbiAgICBjbGVhcjogYm90aDtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBBZGRzIENTUyBmb3IgYSBcInF1YW50aXR5IHF1ZXJ5XCIgc2VsZWN0b3IgdGhhdCBhdXRvbWF0aWNhbGx5IHNpemVzIGVsZW1lbnRzIGJhc2VkIG9uIGhvdyBtYW55IHRoZXJlIGFyZSBpbnNpZGUgYSBjb250YWluZXIuXHJcbi8vLyBAbGluayBodHRwOi8vYWxpc3RhcGFydC5jb20vYXJ0aWNsZS9xdWFudGl0eS1xdWVyaWVzLWZvci1jc3MgUXVhbnRpdHkgUXVlcmllcyBmb3IgQ1NTXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRtYXggLSBNYXhpbXVtIG51bWJlciBvZiBpdGVtcyB0byBkZXRlY3QuIFRoZSBoaWdoZXIgdGhpcyBudW1iZXIgaXMsIHRoZSBtb3JlIENTUyB0aGF0J3MgcmVxdWlyZWQgdG8gY292ZXIgZWFjaCBudW1iZXIgb2YgaXRlbXMuXHJcbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRlbGVtIFtsaV0gLSBUYWcgdG8gdXNlIGZvciBzaWJsaW5nIHNlbGVjdG9ycy5cclxuQG1peGluIGF1dG8td2lkdGgoJG1heCwgJGVsZW06IGxpKSB7XHJcbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkbWF4IHtcclxuICAgICY6bnRoLWxhc3QtY2hpbGQoI3skaX0pOmZpcnN0LWNoaWxkLFxyXG4gICAgJjpudGgtbGFzdC1jaGlsZCgjeyRpfSk6Zmlyc3QtY2hpbGQgfiAjeyRlbGVtfSB7XHJcbiAgICAgIHdpZHRoOiBwZXJjZW50YWdlKDEgLyAkaSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gUmVtb3ZlcyB0aGUgZm9jdXMgcmluZyBhcm91bmQgYW4gZWxlbWVudCB3aGVuIGEgbW91c2UgaW5wdXQgaXMgZGV0ZWN0ZWQuXHJcbkBtaXhpbiBkaXNhYmxlLW1vdXNlLW91dGxpbmUge1xyXG4gIFtkYXRhLXdoYXRpbnB1dD0nbW91c2UnXSAmIHtcclxuICAgIG91dGxpbmU6IDA7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gTWFrZXMgYW4gZWxlbWVudCB2aXN1YWxseSBoaWRkZW4sIGJ1dCBzdGlsbCBhY2Nlc3NpYmxlIHRvIGtleWJvYXJkcyBhbmQgYXNzaXN0aXZlIGRldmljZXMuXHJcbi8vLyBAbGluayBodHRwOi8vc25vb2suY2EvYXJjaGl2ZXMvaHRtbF9hbmRfY3NzL2hpZGluZy1jb250ZW50LWZvci1hY2Nlc3NpYmlsaXR5IEhpZGluZyBDb250ZW50IGZvciBBY2Nlc3NpYmlsaXR5XHJcbi8vLyBAbGluayBodHRwOi8vaHVnb2dpcmF1ZGVsLmNvbS8yMDE2LzEwLzEzL2Nzcy1oaWRlLWFuZC1zZWVrL1xyXG5AbWl4aW4gZWxlbWVudC1pbnZpc2libGUge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xyXG4gIHdpZHRoOiAxcHg7XHJcbiAgaGVpZ2h0OiAxcHg7XHJcbiAgcGFkZGluZzogMDtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIGNsaXA6IHJlY3QoMCwwLDAsMCk7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICBjbGlwLXBhdGg6IGluc2V0KDUwJSk7XHJcbiAgYm9yZGVyOiAwO1xyXG59XHJcblxyXG4vLy8gUmV2ZXJzZXMgdGhlIENTUyBvdXRwdXQgY3JlYXRlZCBieSB0aGUgYGVsZW1lbnQtaW52aXNpYmxlKClgIG1peGluLlxyXG5AbWl4aW4gZWxlbWVudC1pbnZpc2libGUtb2ZmIHtcclxuICBwb3NpdGlvbjogc3RhdGljICFpbXBvcnRhbnQ7XHJcbiAgd2lkdGg6IGF1dG87XHJcbiAgaGVpZ2h0OiBhdXRvO1xyXG4gIG92ZXJmbG93OiB2aXNpYmxlO1xyXG4gIGNsaXA6IGF1dG87XHJcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcclxuICBjbGlwLXBhdGg6IG5vbmU7XHJcbn1cclxuXHJcbi8vLyBWZXJ0aWNhbGx5IGNlbnRlcnMgdGhlIGVsZW1lbnQgaW5zaWRlIG9mIGl0cyBmaXJzdCBub24tc3RhdGljIHBhcmVudCxcclxuLy8vIEBsaW5rIGh0dHA6Ly93d3cuc2l0ZXBvaW50LmNvbS9jZW50ZXJpbmctd2l0aC1zYXNzLyBDZW50ZXJpbmcgV2l0aCBTYXNzXHJcbkBtaXhpbiB2ZXJ0aWNhbC1jZW50ZXIge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB0b3A6IDUwJTtcclxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcbn1cclxuXHJcbi8vLyBIb3Jpem9udGFsbHkgY2VudGVycyB0aGUgZWxlbWVudCBpbnNpZGUgb2YgaXRzIGZpcnN0IG5vbi1zdGF0aWMgcGFyZW50LFxyXG4vLy8gQGxpbmsgaHR0cDovL3d3dy5zaXRlcG9pbnQuY29tL2NlbnRlcmluZy13aXRoLXNhc3MvIENlbnRlcmluZyBXaXRoIFNhc3NcclxuQG1peGluIGhvcml6b250YWwtY2VudGVyIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgbGVmdDogNTAlO1xyXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcclxufVxyXG5cclxuLy8vIEFic29sdXRlbHkgY2VudGVycyB0aGUgZWxlbWVudCBpbnNpZGUgb2YgaXRzIGZpcnN0IG5vbi1zdGF0aWMgcGFyZW50LFxyXG4vLy8gQGxpbmsgaHR0cDovL3d3dy5zaXRlcG9pbnQuY29tL2NlbnRlcmluZy13aXRoLXNhc3MvIENlbnRlcmluZyBXaXRoIFNhc3NcclxuQG1peGluIGFic29sdXRlLWNlbnRlciB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHRvcDogNTAlO1xyXG4gIGxlZnQ6IDUwJTtcclxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcclxufVxyXG5cclxuLy8vIEl0ZXJhdGVzIHRocm91Z2ggYnJlYWtwb2ludHMgZGVmaW5lZCBpbiBgJGJyZWFrcG9pbnQtY2xhc3Nlc2AgYW5kIHByaW50cyB0aGUgQ1NTIGluc2lkZSB0aGUgbWl4aW4gYXQgZWFjaCBicmVha3BvaW50J3MgbWVkaWEgcXVlcnkuIFVzZSB0aGlzIHdpdGggdGhlIGdyaWQsIG9yIGFueSBvdGhlciBjb21wb25lbnQgdGhhdCBoYXMgcmVzcG9uc2l2ZSBjbGFzc2VzLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHNtYWxsIFt0cnVlXSAtIElmIGBmYWxzZWAsIHRoZSBtaXhpbiB3aWxsIHNraXAgdGhlIGBzbWFsbGAgYnJlYWtwb2ludC4gVXNlIHRoaXMgd2l0aCBjb21wb25lbnRzIHRoYXQgZG9uJ3QgcHJlZml4IGNsYXNzZXMgd2l0aCBgc21hbGwtYCwgb25seSBgbWVkaXVtLWAgYW5kIHVwLlxyXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkYXV0by1pbnNlcnQtYnJlYWtwb2ludHMgW3RydWVdIC0gSWYgYGZhbHNlYCwgdGhlIG1peGluIHdpbGwgaXRlcmF0ZSBvdmVyIGJyZWFrcG9pbnRzIHdpdGhvdXQgZG9pbmcgdGhlIG1lZGlhIHF1ZXJ5IGl0c2VsZi4gVXNlZnVsIGZvciBtb3JlIGNvbXBsZXggbWVkaWEgcXVlcnkgZ2VuZXJhdGlvbiBhcyBpbiB0aGUgbWFyZ2luIGdyaWQuXHJcbkBtaXhpbiAtemYtZWFjaC1icmVha3BvaW50KCRzbWFsbDogdHJ1ZSwgJGF1dG8taW5zZXJ0LWJyZWFrcG9pbnRzOiB0cnVlKSB7XHJcbiAgJGxpc3Q6ICRicmVha3BvaW50LWNsYXNzZXM7XHJcblxyXG4gIEBpZiBub3QgJHNtYWxsIHtcclxuICAgICRsaXN0OiBzbC1yZW1vdmUoJGxpc3QsICQtemYtemVyby1icmVha3BvaW50KTtcclxuICB9XHJcblxyXG4gIEBlYWNoICRuYW1lIGluICRsaXN0IHtcclxuICAgICQtemYtc2l6ZTogJG5hbWUgIWdsb2JhbDtcclxuXHJcbiAgICBAaWYgJGF1dG8taW5zZXJ0LWJyZWFrcG9pbnRzIHtcclxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xyXG4gICAgICAgIEBjb250ZW50O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBAZWxzZSB7XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8vIEdlbmVyYXRlIHRoZSBgQGNvbnRlbnRgIHBhc3NlZCB0byB0aGUgbWl4aW4gd2l0aCBhIHZhbHVlIGAkLXpmLWJwLXZhbHVlYCByZWxhdGVkIHRvIGEgYnJlYWtwb2ludCwgZGVwZW5kaW5nIG9uIHRoZSBgJG5hbWVgIHBhcmFtZXRlcjpcclxuLy8vIC0gRm9yIGEgc2luZ2xlIHZhbHVlLCBgJC16Zi1icC12YWx1ZWAgaXMgdGhpcyB2YWx1ZS5cclxuLy8vIC0gRm9yIGEgYnJlYWtwb2ludCBuYW1lLCBgJC16Zi1icC12YWx1ZWAgaXMgdGhlIGNvcnJlc3BvbmRpbmcgYnJlYWtwb2ludCB2YWx1ZSBpbiBgJG1hcGAuXHJcbi8vLyAtIEZvciBcImF1dG9cIiwgYCQtemYtYnAtdmFsdWVgIGlzIHRoZSBjb3JyZXNwb25kaW5nIGJyZWFrcG9pbnQgdmFsdWUgaW4gYCRtYXBgIGFuZCBpcyBwYXNzZWQgdG8gYEBjb250ZW50YCwgd2hpY2ggaXMgbWFkZSByZXNwb25zaXZlIGZvciBlYWNoIGJyZWFrcG9pbnQgb2YgYCRtYXBgLlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ8QXJyYXl8S2V5d29yZH0gJG5hbWUgW2F1dG9dIC0gU2luZ2xlIHZhbHVlLCBicmVha3BvaW50IG5hbWUsIG9yIGxpc3Qgb2YgYnJlYWtwb2ludCBuYW1lcyB0byB1c2UuIFwiYXV0b1wiIGJ5IGRlZmF1bHQuXHJcbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRtYXAgLSBNYXAgb2YgYnJlYWtwb2ludHMgYW5kIHZhbHVlcyBvciBzaW5nbGUgdmFsdWUgdG8gdXNlLlxyXG5AbWl4aW4gLXpmLWJyZWFrcG9pbnQtdmFsdWUoXHJcbiAgJG5hbWU6IGF1dG8sXHJcbiAgJG1hcDogbnVsbFxyXG4pIHtcclxuICBAaWYgJG5hbWUgPT0gYXV0byBhbmQgdHlwZS1vZigkbWFwKSA9PSAnbWFwJyB7XHJcbiAgICAvLyBcImF1dG9cIlxyXG4gICAgQGVhY2ggJGssICR2IGluICRtYXAge1xyXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRrKSB7XHJcbiAgICAgICAgQGluY2x1ZGUgLXpmLWJyZWFrcG9pbnQtdmFsdWUoJHYsICRtYXApIHtcclxuICAgICAgICAgIEBjb250ZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBAZWxzZSB7XHJcbiAgICAvLyBicmVha3BvaW50IG5hbWVcclxuICAgIEBpZiB0eXBlLW9mKCRuYW1lKSA9PSAnc3RyaW5nJyB7XHJcbiAgICAgICRuYW1lOiAtemYtZ2V0LWJwLXZhbCgkbWFwLCAkbmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gYnJlYWtwb2ludCB2YWx1ZVxyXG4gICAgJC16Zi1icC12YWx1ZTogJG5hbWUgIWdsb2JhbDtcclxuICAgIEBjb250ZW50O1xyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXHJcbi8vLy9cclxuXHJcbiQtemYtZm9udC1zdGFjazogKFxyXG4gICdnZW9yZ2lhJzogKEdlb3JnaWEsIFwiVVJXIEJvb2ttYW4gTFwiLCBzZXJpZiksXHJcbiAgJ2hlbHZldGljYSc6IChIZWx2ZXRpY2EsIEFyaWFsLCBcIk5pbWJ1cyBTYW5zIExcIiwgc2Fucy1zZXJpZiksXHJcbiAgJ2x1Y2lkYS1ncmFuZGUnOiAoXCJMdWNpZGEgR3JhbmRlXCIsIFwiTHVjaWRhIFNhbnMgVW5pY29kZVwiLCBcIkJpdHN0cmVhbSBWZXJhIFNhbnNcIiwgc2Fucy1zZXJpZiksXHJcbiAgJ21vbm9zcGFjZSc6IChcIkNvdXJpZXIgTmV3XCIsIENvdXJpZXIsIFwiTmltYnVzIFNhbnMgTFwiLCBtb25vc3BhY2UpLFxyXG4gICdzeXN0ZW0nOiAoLWFwcGxlLXN5c3RlbSwgc3lzdGVtLXVpLCBCbGlua01hY1N5c3RlbUZvbnQsIFwiU2Vnb2UgVUlcIiwgXCJSb2JvdG9cIiwgXCJPeHlnZW5cIiwgXCJVYnVudHVcIiwgXCJDYW50YXJlbGxcIiwgXCJGaXJhIFNhbnNcIiwgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmKSxcclxuICAndmVyZGFuYSc6IChWZXJkYW5hLCBHZW5ldmEsIFwiRGVqYVZ1IFNhbnNcIiwgc2Fucy1zZXJpZiksXHJcbik7XHJcblxyXG4vLy8gUmV0dXJuIGEgZm9udCBzdGFjayBsaXN0IGZyb20gYSBtYXAuIEVxdWl2YWxlbnQgdG8gYG1hcC1zYWZlLWdldCgkbmFtZSwgJC16Zi1mb250LXN0YWNrKWAuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzdGFjayAtIE5hbWUgb2YgdGhlIGZvbnQgc3RhY2suXHJcbi8vLyBAcGFyYW0ge01hcH0gJG1hcCBbJC16Zi1mb250LXN0YWNrXSAtIE1hcCBvZiBmb250IHN0YWNrcyB0byByZXRyaWV2ZSBhIGxpc3QgZnJvbS5cclxuLy8vXHJcbi8vLyBAcmV0dXJucyB7TGlzdH0gRm91bmQgZm9udCBzdGFjay5cclxuQGZ1bmN0aW9uIGZvbnQtc3RhY2soJHN0YWNrLCAkbWFwOiAkLXpmLWZvbnQtc3RhY2spIHtcclxuICBAcmV0dXJuIG1hcC1zYWZlLWdldCgkbWFwLCAkc3RhY2spO1xyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vIHNhc3MtbGludDpkaXNhYmxlIGZvcmNlLWF0dHJpYnV0ZS1uZXN0aW5nLCBmb3JjZS1wc2V1ZG8tbmVzdGluZywgbm8tY29sb3ItbGl0ZXJhbHMsIG5vLXF1YWxpZnlpbmctZWxlbWVudHNcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBnbG9iYWxcclxuLy8vL1xyXG5cclxuLy8vIEZvbnQgc2l6ZSBhdHRyaWJ1dGUgYXBwbGllZCB0byBgPGh0bWw+YCBhbmQgYDxib2R5PmAuIFdlIHVzZSAxMDAlIGJ5IGRlZmF1bHQgc28gdGhlIHZhbHVlIGlzIGluaGVyaXRlZCBmcm9tIHRoZSB1c2VyJ3MgYnJvd3NlciBzZXR0aW5ncy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kZ2xvYmFsLWZvbnQtc2l6ZTogMTAwJSAhZGVmYXVsdDtcclxuXHJcbi8vLyBHbG9iYWwgd2lkdGggb2YgeW91ciBzaXRlLiBVc2VkIGJ5IHRoZSBncmlkIHRvIGRldGVybWluZSByb3cgd2lkdGguXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGdsb2JhbC13aWR0aDogcmVtLWNhbGMoMTIwMCkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBsaW5lIGhlaWdodCBmb3IgYWxsIHR5cGUuIGAkZ2xvYmFsLWxpbmVoZWlnaHRgIGlzIDI0cHggd2hpbGUgYCRnbG9iYWwtZm9udC1zaXplYCBpcyAxNnB4XHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGdsb2JhbC1saW5laGVpZ2h0OiAxLjUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQ29sb3JzIHVzZWQgZm9yIGJ1dHRvbnMsIGNhbGxvdXRzLCBsaW5rcywgZXRjLiBUaGVyZSBtdXN0IGFsd2F5cyBiZSBhIGNvbG9yIGNhbGxlZCBgcHJpbWFyeWAuXHJcbi8vLyBAdHlwZSBNYXBcclxuJGZvdW5kYXRpb24tcGFsZXR0ZTogKFxyXG4gIHByaW1hcnk6ICMxNzc5YmEsXHJcbiAgc2Vjb25kYXJ5OiAjNzY3Njc2LFxyXG4gIHN1Y2Nlc3M6ICMzYWRiNzYsXHJcbiAgd2FybmluZzogI2ZmYWUwMCxcclxuICBhbGVydDogI2NjNGIzNyxcclxuKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBDb2xvciB1c2VkIGZvciBsaWdodCBncmF5IFVJIGl0ZW1zLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGxpZ2h0LWdyYXk6ICNlNmU2ZTYgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQ29sb3IgdXNlZCBmb3IgbWVkaXVtIGdyYXkgVUkgaXRlbXMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kbWVkaXVtLWdyYXk6ICNjYWNhY2EgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQ29sb3IgdXNlZCBmb3IgZGFyayBncmF5IFVJIGl0ZW1zLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGRhcmstZ3JheTogIzhhOGE4YSAhZGVmYXVsdDtcclxuXHJcbi8vLyBDb2xvciB1c2VkIGZvciBibGFjayB1aSBpdGVtcy5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRibGFjazogIzBhMGEwYSAhZGVmYXVsdDtcclxuXHJcbi8vLyBDb2xvciB1c2VkIGZvciB3aGl0ZSB1aSBpdGVtcy5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiR3aGl0ZTogI2ZlZmVmZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBib2R5LlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGJvZHktYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xyXG5cclxuLy8vIFRleHQgY29sb3Igb2YgdGhlIGJvZHkuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kYm9keS1mb250LWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRm9udCBzdGFjayBvZiB0aGUgYm9keS5cclxuLy8vIEB0eXBlIExpc3RcclxuJGJvZHktZm9udC1mYW1pbHk6ICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgUm9ib3RvLCBBcmlhbCwgc2Fucy1zZXJpZiAhZGVmYXVsdDtcclxuXHJcbi8vLyBTZXQgdG8gYHRydWVgIHRvIGVuYWJsZSBhbnRpYWxpYXNlZCB0eXBlLCB1c2luZyB0aGUgYC13ZWJraXQtZm9udC1zbW9vdGhpbmdgIGFuZCBgLW1vei1vc3gtZm9udC1zbW9vdGhpbmdgIENTUyBwcm9wZXJ0aWVzLlxyXG4vLy8gQHR5cGUgQm9vbGVhblxyXG4kYm9keS1hbnRpYWxpYXNlZDogdHJ1ZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBHbG9iYWwgdmFsdWUgdXNlZCBmb3IgbWFyZ2luIG9uIGNvbXBvbmVudHMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGdsb2JhbC1tYXJnaW46IDFyZW0gIWRlZmF1bHQ7XHJcblxyXG4vLy8gR2xvYmFsIHZhbHVlIHVzZWQgZm9yIHBhZGRpbmcgb24gY29tcG9uZW50cy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kZ2xvYmFsLXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XHJcblxyXG4vLy8gR2xvYmFsIHZhbHVlIHVzZWQgZm9yIHBvc2l0aW9uaW5nIG9uIGNvbXBvbmVudHMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGdsb2JhbC1wb3NpdGlvbjogMXJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBHbG9iYWwgZm9udCB3ZWlnaHQgdXNlZCBmb3Igbm9ybWFsIHR5cGUuXHJcbi8vLyBAdHlwZSBLZXl3b3JkIHwgTnVtYmVyXHJcbiRnbG9iYWwtd2VpZ2h0LW5vcm1hbDogbm9ybWFsICFkZWZhdWx0O1xyXG5cclxuLy8vIEdsb2JhbCBmb250IHdlaWdodCB1c2VkIGZvciBib2xkIHR5cGUuXHJcbi8vLyBAdHlwZSBLZXl3b3JkIHwgTnVtYmVyXHJcbiRnbG9iYWwtd2VpZ2h0LWJvbGQ6IGJvbGQgIWRlZmF1bHQ7XHJcblxyXG4vLy8gR2xvYmFsIHZhbHVlIHVzZWQgZm9yIGFsbCBlbGVtZW50cyB0aGF0IGhhdmUgYSBib3JkZXIgcmFkaXVzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRnbG9iYWwtcmFkaXVzOiAwICFkZWZhdWx0O1xyXG5cclxuLy8vIEdsb2JhbCB2YWx1ZSB1c2VkIGZvciBhbGwgbWVudSBzdHlsZXMuIENhbiBiZSBvdmVyd3JpdHRlbiBhdCBpbmRpdmlkdWFsIG1lbnUgY29tcG9uZW50IGxldmVsLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRnbG9iYWwtbWVudS1wYWRkaW5nOiAwLjdyZW0gMXJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBHbG9iYWwgdmFsdWUgdXNlZCBmb3IgYWxsIG1lbnUgc3R5bGVzLiBOZXN0ZWQgbWFyZ2luIGZvciBzdWJtZW51LlxyXG4kZ2xvYmFsLW1lbnUtbmVzdGVkLW1hcmdpbjogMXJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBTZXRzIHRoZSB0ZXh0IGRpcmVjdGlvbiBvZiB0aGUgQ1NTLiBDYW4gYmUgZWl0aGVyIGBsdHJgIG9yIGBydGxgLlxyXG4vLy8gQHR5cGUgS2V5d29yZFxyXG4kZ2xvYmFsLXRleHQtZGlyZWN0aW9uOiBsdHIgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRW5hYmxlcyBmbGV4Ym94IGZvciBjb21wb25lbnRzIHRoYXQgc3VwcG9ydCBpdC5cclxuLy8vIEB0eXBlIEJvb2xlYW5cclxuJGdsb2JhbC1mbGV4Ym94OiB0cnVlICFkZWZhdWx0O1xyXG5cclxuLy8vIEVuYWJsZWQgcmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgcHJvdG90eXBlcyBpZiBhcHBsaWNhYmxlXHJcbi8vLyBAdHlwZSBCb29sZWFuXHJcbiRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzOiBmYWxzZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBCdXR0b24gY3Vyc29yJ3MgdmFsdWUsIGBhdXRvYCBieSBkZWZhdWx0XHJcbi8vLyBAdHlwZSBLZXl3b3JkXHJcbiRnbG9iYWwtYnV0dG9uLWN1cnNvcjogYXV0byAhZGVmYXVsdDtcclxuXHJcbkBpZiBub3QgbWFwLWhhcy1rZXkoJGZvdW5kYXRpb24tcGFsZXR0ZSwgcHJpbWFyeSkge1xyXG4gIEBlcnJvciAnSW4gJGZvdW5kYXRpb24tcGFsZXR0ZSwgeW91IG11c3QgaGF2ZSBhIGNvbG9yIG5hbWVkIFwicHJpbWFyeVwiLic7XHJcbn1cclxuXHJcbi8vIEludGVybmFsIHZhcmlhYmxlcyB1c2VkIGZvciB0ZXh0IGRpcmVjdGlvblxyXG4kZ2xvYmFsLWxlZnQ6IGlmKCRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gcnRsLCByaWdodCwgbGVmdCk7XHJcbiRnbG9iYWwtcmlnaHQ6IGlmKCRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gcnRsLCBsZWZ0LCByaWdodCk7XHJcblxyXG4vLy8gR2xvYmFsIHRvbGVyYW5jZSBmb3IgY29sb3IgcGljayBjb250cmFzdC5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kZ2xvYmFsLWNvbG9yLXBpY2stY29udHJhc3QtdG9sZXJhbmNlOiAwICFkZWZhdWx0O1xyXG5cclxuLy8gSW50ZXJuYWwgdmFyaWFibGVzIHVzZWQgZm9yIGNvbG9yc1xyXG4kcHJpbWFyeS1jb2xvcjogZ2V0LWNvbG9yKHByaW1hcnkpO1xyXG4kc2Vjb25kYXJ5LWNvbG9yOiBnZXQtY29sb3Ioc2Vjb25kYXJ5KTtcclxuJHN1Y2Nlc3MtY29sb3I6IGdldC1jb2xvcihzdWNjZXNzKTtcclxuJHdhcm5pbmctY29sb3I6IGdldC1jb2xvcih3YXJuaW5nKTtcclxuJGFsZXJ0LWNvbG9yOiBnZXQtY29sb3IoYWxlcnQpO1xyXG5cclxuQG1peGluIGZvdW5kYXRpb24tZ2xvYmFsLXN0eWxlcyB7XHJcbiAgQGluY2x1ZGUgLXpmLW5vcm1hbGl6ZTtcclxuXHJcbiAgLy8gVGhlc2Ugc3R5bGVzIGFyZSBhcHBsaWVkIHRvIGEgPG1ldGE+IHRhZywgd2hpY2ggaXMgcmVhZCBieSB0aGUgRm91bmRhdGlvbiBKYXZhU2NyaXB0XHJcbiAgLmZvdW5kYXRpb24tbXEge1xyXG4gICAgZm9udC1mYW1pbHk6ICcjey16Zi1icC1zZXJpYWxpemUoJGJyZWFrcG9pbnRzKX0nO1xyXG4gIH1cclxuXHJcbiAgaHRtbCB7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgZm9udC1zaXplOiAkZ2xvYmFsLWZvbnQtc2l6ZTtcclxuICB9XHJcblxyXG4gIC8vIFNldCBib3gtc2l6aW5nIGdsb2JhbGx5IHRvIGhhbmRsZSBwYWRkaW5nIGFuZCBib3JkZXIgd2lkdGhzXHJcbiAgKixcclxuICAqOjpiZWZvcmUsXHJcbiAgKjo6YWZ0ZXIge1xyXG4gICAgYm94LXNpemluZzogaW5oZXJpdDtcclxuICB9XHJcblxyXG4gIC8vIERlZmF1bHQgYm9keSBzdHlsZXNcclxuICBib2R5IHtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIHBhZGRpbmc6IDA7XHJcblxyXG4gICAgYmFja2dyb3VuZDogJGJvZHktYmFja2dyb3VuZDtcclxuXHJcbiAgICBmb250LWZhbWlseTogJGJvZHktZm9udC1mYW1pbHk7XHJcbiAgICBmb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsO1xyXG4gICAgbGluZS1oZWlnaHQ6ICRnbG9iYWwtbGluZWhlaWdodDtcclxuICAgIGNvbG9yOiAkYm9keS1mb250LWNvbG9yO1xyXG5cclxuICAgIEBpZiAoJGJvZHktYW50aWFsaWFzZWQpIHtcclxuICAgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XHJcbiAgICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbWcge1xyXG4gICAgLy8gR2V0IHJpZCBvZiBnYXAgdW5kZXIgaW1hZ2VzIGJ5IG1ha2luZyB0aGVtIGRpc3BsYXk6IGlubGluZS1ibG9jazsgYnkgZGVmYXVsdFxyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuXHJcbiAgICAvLyBHcmlkIGRlZmF1bHRzIHRvIGdldCBpbWFnZXMgYW5kIGVtYmVkcyB0byB3b3JrIHByb3Blcmx5XHJcbiAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljO1xyXG4gIH1cclxuXHJcbiAgLy8gTWFrZSBzdXJlIHRleHRhcmVhIHRha2VzIG9uIGhlaWdodCBhdXRvbWF0aWNhbGx5XHJcbiAgdGV4dGFyZWEge1xyXG4gICAgaGVpZ2h0OiBhdXRvO1xyXG4gICAgbWluLWhlaWdodDogNTBweDtcclxuICAgIGJvcmRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG4gIH1cclxuXHJcbiAgLy8gTWFrZSBzZWxlY3QgZWxlbWVudHMgYXJlIDEwMCUgd2lkdGggYnkgZGVmYXVsdFxyXG4gIHNlbGVjdCB7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBib3JkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcclxuICB9XHJcblxyXG4gIC8vIFN0eWxlcyBHb29nbGUgTWFwcyBhbmQgTWFwUXVlc3QgZW1iZWRzIHByb3Blcmx5XHJcbiAgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1pZHNcclxuICAubWFwX2NhbnZhcyxcclxuICAubXFhLWRpc3BsYXkge1xyXG4gICAgaW1nLFxyXG4gICAgZW1iZWQsXHJcbiAgICBvYmplY3Qge1xyXG4gICAgICBtYXgtd2lkdGg6IG5vbmUgIWltcG9ydGFudDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFJlc2V0IDxidXR0b24+IHN0eWxlcyBjcmVhdGVkIGJ5IG1vc3QgYnJvd3NlcnNcclxuICBidXR0b24ge1xyXG4gICAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIGFwcGVhcmFuY2U6IG5vbmU7XHJcbiAgICBib3JkZXI6IDA7XHJcbiAgICBib3JkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcclxuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgICBjdXJzb3I6ICRnbG9iYWwtYnV0dG9uLWN1cnNvcjtcclxuICB9XHJcblxyXG4gIC8vIFByZXZlbnQgdGV4dCBvdmVyZmxvdyBvbiBwcmVcclxuICBwcmUge1xyXG4gICAgb3ZlcmZsb3c6IGF1dG87XHJcbiAgfVxyXG5cclxuICAvLyBNYWtlIHJlc2V0IGluaGVyaXQgZm9udC1mYW1pbHkgaW5zdGVhZCBvZiBzZXR0aW5ncyBzYW5zLXNlcmlmXHJcbiAgYnV0dG9uLFxyXG4gIGlucHV0LFxyXG4gIG9wdGdyb3VwLFxyXG4gIHNlbGVjdCxcclxuICB0ZXh0YXJlYSB7XHJcbiAgICBmb250LWZhbWlseTogaW5oZXJpdDtcclxuICB9XHJcblxyXG4gIC8vIEludGVybmFsIGNsYXNzZXMgdG8gc2hvdy9oaWRlIGVsZW1lbnRzIGluIEphdmFTY3JpcHRcclxuICAuaXMtdmlzaWJsZSB7XHJcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xyXG4gIH1cclxuXHJcbiAgLmlzLWhpZGRlbiB7XHJcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gTG9hZHMgbm9ybWFsaXplLmNzcy5cclxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxyXG5AbWl4aW4gLXpmLW5vcm1hbGl6ZSB7XHJcbiAgQGluY2x1ZGUgbm9ybWFsaXplKCk7XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIGdyaWRcclxuLy8vL1xyXG5cclxuLy8vIFRoZSBtYXhpbXVtIHdpZHRoIG9mIGEgcm93LlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRncmlkLXJvdy13aWR0aDogJGdsb2JhbC13aWR0aCAhZGVmYXVsdDtcclxuXHJcbi8vLyBUaGUgZGVmYXVsdCBjb2x1bW4gY291bnQgb2YgYSBncmlkLiBDaGFuZ2luZyB0aGlzIHZhbHVlIGFmZmVjdHMgdGhlIGxvZ2ljIG9mIHRoZSBncmlkIG1peGlucywgYW5kIHRoZSBudW1iZXIgb2YgQ1NTIGNsYXNzZXMgb3V0cHV0LlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRncmlkLWNvbHVtbi1jb3VudDogMTIgIWRlZmF1bHQ7XHJcblxyXG4vLy8gVGhlIGFtb3VudCBvZiBzcGFjZSBiZXR3ZWVuIGNvbHVtbnMgYXQgZGlmZmVyZW50IHNjcmVlbiBzaXplcy4gVG8gdXNlIGp1c3Qgb25lIHNpemUsIHNldCB0aGUgdmFyaWFibGUgdG8gYSBudW1iZXIgaW5zdGVhZCBvZiBhIG1hcC5cclxuLy8vIEB0eXBlIE1hcCB8IExlbmd0aFxyXG4vLy8gQHNpbmNlIDYuMS4wXHJcbiRncmlkLWNvbHVtbi1ndXR0ZXI6IChcclxuICBzbWFsbDogMjBweCxcclxuICBtZWRpdW06IDMwcHgsXHJcbikgIWRlZmF1bHQ7XHJcblxyXG4vLy8gSWYgYHRydWVgLCB0aGUgbGFzdCBjb2x1bW4gaW4gYSByb3cgd2lsbCBhbGlnbiB0byB0aGUgb3Bwb3NpdGUgZWRnZSBvZiB0aGUgcm93LlxyXG4vLy8gQHR5cGUgQm9vbGVhblxyXG4kZ3JpZC1jb2x1bW4tYWxpZ24tZWRnZTogdHJ1ZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBTZWxlY3RvciB1c2VkIGZvciBhbiBhbGlhcyBvZiBjb2x1bW4gKHdpdGggQGV4dGVuZCkuIElmIGBmYWxzZWAsIG5vIGFsaWFzIGlzIGNyZWF0ZWQuXHJcbi8vLyBAdHlwZSBTdHJpbmdcclxuJGdyaWQtY29sdW1uLWFsaWFzOiAnY29sdW1ucycgIWRlZmF1bHQ7XHJcblxyXG4vLy8gVGhlIGhpZ2hlc3QgbnVtYmVyIG9mIGAueC11cGAgY2xhc3NlcyBhdmFpbGFibGUgd2hlbiB1c2luZyB0aGUgYmxvY2sgZ3JpZCBDU1MuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGJsb2NrLWdyaWQtbWF4OiA4ICFkZWZhdWx0O1xyXG5cclxuLy8gSW50ZXJuYWwgdmFsdWUgdG8gc3RvcmUgdGhlIGVuZCBjb2x1bW4gZmxvYXQgZGlyZWN0aW9uXHJcbiQtemYtZW5kLWZsb2F0OiBpZigkZ3JpZC1jb2x1bW4tYWxpZ24tZWRnZSwgJGdsb2JhbC1yaWdodCwgJGdsb2JhbC1sZWZ0KTtcclxuXHJcbkBpbXBvcnQgJ3Jvdyc7XHJcbkBpbXBvcnQgJ2NvbHVtbic7XHJcbkBpbXBvcnQgJ3NpemUnO1xyXG5AaW1wb3J0ICdwb3NpdGlvbic7XHJcbkBpbXBvcnQgJ2d1dHRlcic7XHJcbkBpbXBvcnQgJ2NsYXNzZXMnO1xyXG5AaW1wb3J0ICdsYXlvdXQnO1xyXG5cclxuQGltcG9ydCAnZmxleC1ncmlkJztcclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIGdyaWRcclxuLy8vL1xyXG5cclxuLy8vIENoYW5nZSB0aGUgYmVoYXZpb3Igb2YgY29sdW1ucyBkZWZpbmVkIGluc2lkZSB0aGlzIG1peGluIHRvIHVzZSBhIGRpZmZlcmVudCBjb2x1bW4gY291bnQuXHJcbi8vLyBAY29udGVudFxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkY29sdW1ucyAtIE51bWJlciBvZiBjb2x1bW5zIHRvIHVzZS5cclxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHJvb3QgW2ZhbHNlXVxyXG4vLy8gICBJZiBgZmFsc2VgLCBzZWxlY3RvcnMgaW5zaWRlIHRoaXMgbWl4aW4gd2lsbCBuZXN0IGluc2lkZSB0aGUgcGFyZW50IHNlbGVjdG9yLlxyXG4vLy8gICBJZiBgdHJ1ZWAsIHNlbGVjdG9ycyB3aWxsIG5vdCBuZXN0LlxyXG5AbWl4aW4gZ3JpZC1jb250ZXh0KFxyXG4gICRjb2x1bW5zLFxyXG4gICRyb290OiBmYWxzZVxyXG4pIHtcclxuICAvLyBTdG9yZSB0aGUgY3VycmVudCBjb2x1bW4gY291bnQgc28gaXQgY2FuIGJlIHJlLXNldCBsYXRlclxyXG4gICRvbGQtZ3JpZC1jb2x1bW4tY291bnQ6ICRncmlkLWNvbHVtbi1jb3VudDtcclxuICAkZ3JpZC1jb2x1bW4tY291bnQ6ICRjb2x1bW5zICFnbG9iYWw7XHJcblxyXG4gIEBpZiAkcm9vdCB7XHJcbiAgICBAYXQtcm9vdCB7IEBjb250ZW50OyB9XHJcbiAgfVxyXG4gIEBlbHNlIHtcclxuICAgIEBjb250ZW50O1xyXG4gIH1cclxuXHJcbiAgLy8gUmVzdG9yZSB0aGUgb2xkIGNvbHVtbiBjb3VudFxyXG4gICRncmlkLWNvbHVtbi1jb3VudDogJG9sZC1ncmlkLWNvbHVtbi1jb3VudCAhZ2xvYmFsO1xyXG59XHJcblxyXG4vLy8gQ3JlYXRlcyBhIGdyaWQgcm93LlxyXG4vLy8gQGNvbnRlbnRcclxuLy8vXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGNvbHVtbnMgW251bGxdIC0gQ29sdW1uIGNvdW50IGZvciB0aGlzIHJvdy4gYG51bGxgIHdpbGwgdXNlIHRoZSBkZWZhdWx0IGNvbHVtbiBjb3VudC5cclxuLy8vIEBwYXJhbSB7S2V5d29yZHN9ICRiZWhhdmlvciBbbnVsbF1cclxuLy8vICAgTW9kaWZpY2F0aW9ucyB0byB0aGUgZGVmYXVsdCBncmlkIHN0eWxlcy4gYG5lc3RgIGluZGljYXRlcyB0aGUgcm93IHdpbGwgYmUgcGxhY2VkIGluc2lkZSBhbm90aGVyIHJvdy4gYGNvbGxhcHNlYCBpbmRpY2F0ZXMgdGhhdCB0aGUgY29sdW1ucyBpbnNpZGUgdGhpcyByb3cgd2lsbCBub3QgaGF2ZSBwYWRkaW5nLiBgbmVzdCBjb2xsYXBzZWAgY29tYmluZXMgYm90aCBiZWhhdmlvcnMuXHJcbi8vLyBAcGFyYW0ge0tleXdvcmR8TnVtYmVyfSAkc2l6ZSBbJGdyaWQtcm93LXdpZHRoXSBNYXhpbXVtIHNpemUgb2YgdGhlIHJvdy4gU2V0IHRvIGBleHBhbmRgIHRvIG1ha2UgdGhlIHJvdyB0YWtpbmcgdGhlIGZ1bGwgd2lkdGguXHJcbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRjZiBbdHJ1ZV0gLSBXaGV0aGVyIG9yIG5vdCB0byBpbmNsdWRlIGEgY2xlYXJmaXguXHJcbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1jb2x1bW4tZ3V0dGVyXSAtIEd1dHRlciBtYXAgb3Igc2luZ2xlIHZhbHVlIHRvIHVzZSB3aGVuIGludmVydGluZyBtYXJnaW5zLiBSZXNwb25zaXZlIGd1dHRlciBzZXR0aW5ncyBieSBkZWZhdWx0LlxyXG5AbWl4aW4gZ3JpZC1yb3coXHJcbiAgJGNvbHVtbnM6IG51bGwsXHJcbiAgJGJlaGF2aW9yOiBudWxsLFxyXG4gICRzaXplOiAkZ3JpZC1yb3ctd2lkdGgsXHJcbiAgJGNmOiB0cnVlLFxyXG4gICRndXR0ZXJzOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXHJcbikge1xyXG4gICRtYXJnaW46IGF1dG87XHJcblxyXG4gIEBpZiBpbmRleCgkYmVoYXZpb3IsIG5lc3QpICE9IG51bGwge1xyXG4gICAgQGluY2x1ZGUgZ3JpZC1yb3ctbmVzdCgkZ3V0dGVycyk7XHJcblxyXG4gICAgQGlmIGluZGV4KCRiZWhhdmlvciwgY29sbGFwc2UpICE9IG51bGwge1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xyXG4gICAgfVxyXG4gIH1cclxuICBAZWxzZSB7XHJcbiAgICBAaW5jbHVkZSBncmlkLXJvdy1zaXplKCRzaXplKTtcclxuICAgIG1hcmdpbi1yaWdodDogYXV0bztcclxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gIH1cclxuXHJcbiAgQGlmICRjZiB7XHJcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcclxuICB9XHJcblxyXG4gIEBpZiAkY29sdW1ucyAhPSBudWxsIHtcclxuICAgIEBpbmNsdWRlIGdyaWQtY29udGV4dCgkY29sdW1ucykge1xyXG4gICAgICBAY29udGVudDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vLyBJbnZlcnRzIHRoZSBtYXJnaW5zIG9mIGEgcm93IHRvIG5lc3QgaXQgaW5zaWRlIG9mIGEgY29sdW1uLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLWNvbHVtbi1ndXR0ZXJdIC0gR3V0dGVyIG1hcCBvciBzaW5nbGUgdmFsdWUgdG8gdXNlIHdoZW4gaW52ZXJ0aW5nIG1hcmdpbnMuIFJlc3BvbnNpdmUgZ3V0dGVyIHNldHRpbmdzIGJ5IGRlZmF1bHQuXHJcbkBtaXhpbiBncmlkLXJvdy1uZXN0KCRndXR0ZXJzOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyKSB7XHJcbiAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCB7XHJcbiAgICAkbWFyZ2luOiByZW0tY2FsYygtemYtZ2V0LWJwLXZhbCgkZ3V0dGVycywgJC16Zi1zaXplKSkgLyAyICogLTE7XHJcblxyXG4gICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luO1xyXG4gICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW47XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gU2V0IGEgZ3JpZCByb3cgc2l6ZVxyXG4vLy9cclxuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICRzaXplIFskZ3JpZC1yb3ctd2lkdGhdIE1heGltdW0gc2l6ZSBvZiB0aGUgcm93LiBTZXQgdG8gYGV4cGFuZGAgdG8gbWFrZSB0aGUgcm93IHRha2luZyB0aGUgZnVsbCB3aWR0aC5cclxuQG1peGluIGdyaWQtcm93LXNpemUoJHNpemU6ICRncmlkLXJvdy13aWR0aCkge1xyXG4gIEBpZiAkc2l6ZSA9PSBleHBhbmQge1xyXG4gICAgJHNpemU6IG5vbmU7XHJcbiAgfVxyXG5cclxuICBtYXgtd2lkdGg6ICRzaXplO1xyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBncmlkXHJcbi8vLy9cclxuXHJcbi8vLyBDYWxjdWxhdGVzIHRoZSB3aWR0aCBvZiBhIGNvbHVtbiBiYXNlZCBvbiBhIG51bWJlciBvZiBmYWN0b3JzLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TnVtYmVyfExpc3R9ICRjb2x1bW5zXHJcbi8vLyAgIFdpZHRoIG9mIHRoZSBjb2x1bW4uIEFjY2VwdHMgbXVsdGlwbGUgdmFsdWVzOlxyXG4vLy8gICAtIEEgcGVyY2VudGFnZSB2YWx1ZSB3aWxsIG1ha2UgdGhlIGNvbHVtbiB0aGF0IGV4YWN0IHNpemUuXHJcbi8vLyAgIC0gQSBzaW5nbGUgZGlnaXQgd2lsbCBtYWtlIHRoZSBjb2x1bW4gc3BhbiB0aGF0IG51bWJlciBvZiBjb2x1bW5zIHdpZGUsIHRha2luZyBpbnRvIGFjY291bnQgdGhlIGNvbHVtbiBjb3VudCBvZiB0aGUgcGFyZW50IHJvdy5cclxuLy8vICAgLSBBIGxpc3Qgb2YgdGhlIGZvcm1hdCBcInggb2YgeVwiICh3aXRob3V0IHF1b3Rlcykgd2lsbCBtYWtlIGEgY29sdW1uIHRoYXQgaXMgKngqIGNvbHVtbnMgd2lkZSwgYXNzdW1pbmcgKnkqIHRvdGFsIGNvbHVtbnMgZm9yIHRoZSBwYXJlbnQuXHJcbi8vL1xyXG4vLy8gQHJldHVybnMge051bWJlcn0gQSBjYWxjdWxhdGVkIHBlcmNlbnRhZ2UgdmFsdWUuXHJcbkBmdW5jdGlvbiBncmlkLWNvbHVtbigkY29sdW1ucykge1xyXG4gICR3aWR0aDogMCU7XHJcblxyXG4gIC8vIFBhcnNpbmcgcGVyY2VudHMsIGRlY2ltYWxzLCBhbmQgY29sdW1uIGNvdW50c1xyXG4gIEBpZiB0eXBlLW9mKCRjb2x1bW5zKSA9PSAnbnVtYmVyJyB7XHJcbiAgICBAaWYgdW5pdCgkY29sdW1ucykgPT0gJyUnIHtcclxuICAgICAgJHdpZHRoOiAkY29sdW1ucztcclxuICAgIH1cclxuICAgIEBlbHNlIGlmICRjb2x1bW5zIDwgMSB7XHJcbiAgICAgICR3aWR0aDogcGVyY2VudGFnZSgkY29sdW1ucyk7XHJcbiAgICB9XHJcbiAgICBAZWxzZSB7XHJcbiAgICAgICR3aWR0aDogcGVyY2VudGFnZSgkY29sdW1ucyAvICRncmlkLWNvbHVtbi1jb3VudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBQYXJzaW5nIFwibiBvZiBuXCIgZXhwcmVzc2lvbnNcclxuICBAZWxzZSBpZiB0eXBlLW9mKCRjb2x1bW5zKSA9PSAnbGlzdCcge1xyXG4gICAgQGlmIGxlbmd0aCgkY29sdW1ucykgIT0gMyB7XHJcbiAgICAgIEBlcnJvciAnV3Jvbmcgc3ludGF4IGZvciBncmlkLWNvbHVtbigpLiBVc2UgdGhlIGZvcm1hdCBcIm4gb2YgblwiLic7XHJcbiAgICB9XHJcbiAgICBAZWxzZSB7XHJcbiAgICAgICR3aWR0aDogcGVyY2VudGFnZShudGgoJGNvbHVtbnMsIDEpIC8gbnRoKCRjb2x1bW5zLCAzKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBBbnl0aGluZyBlbHNlIGlzIGluY29ycmVjdFxyXG4gIEBlbHNlIHtcclxuICAgIEBlcnJvciAnV3Jvbmcgc3ludGF4IGZvciBncmlkLWNvbHVtbigpLiBVc2UgYSBudW1iZXIsIGRlY2ltYWwsIHBlcmNlbnRhZ2UsIG9yIFwibiBvZiBuXCIuJztcclxuICB9XHJcblxyXG4gIEByZXR1cm4gJHdpZHRoO1xyXG59XHJcblxyXG4vLy8gQ3JlYXRlcyBhIGdyaWQgY29sdW1uLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TWl4ZWR9ICRjb2x1bW5zIFskZ3JpZC1jb2x1bW4tY291bnRdIC0gV2lkdGggb2YgdGhlIGNvbHVtbi4gUmVmZXIgdG8gdGhlIGBncmlkLWNvbHVtbigpYCBmdW5jdGlvbiB0byBzZWUgcG9zc2libGUgdmFsdWVzLlxyXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGd1dHRlcnMgWyRncmlkLWNvbHVtbi1ndXR0ZXJdIC0gU3BhY2luZyBiZXR3ZWVuIGNvbHVtbnMuIFJlZmVyIHRvIHRoZSBgZ3JpZC1jb2x1bW4tZ3V0dGVyKClgIGZ1bmN0aW9uIHRvIHNlZSBwb3NzaWJsZSB2YWx1ZXMuXHJcbkBtaXhpbiBncmlkLWNvbHVtbihcclxuICAkY29sdW1uczogJGdyaWQtY29sdW1uLWNvdW50LFxyXG4gICRndXR0ZXJzOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXHJcbikge1xyXG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLXNpemUoJGNvbHVtbnMpO1xyXG4gIGZsb2F0OiAkZ2xvYmFsLWxlZnQ7XHJcblxyXG4gIC8vIEd1dHRlcnNcclxuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1ndXR0ZXIoJGd1dHRlcnM6ICRndXR0ZXJzKTtcclxuXHJcbiAgLy8gTGFzdCBjb2x1bW4gYWxpZ25tZW50XHJcbiAgQGlmICRncmlkLWNvbHVtbi1hbGlnbi1lZGdlIHtcclxuICAgICY6bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKSB7XHJcbiAgICAgIGZsb2F0OiAkZ2xvYmFsLXJpZ2h0O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8vIENyZWF0ZXMgYSBncmlkIGNvbHVtbiByb3cuIFRoaXMgaXMgdGhlIGVxdWl2YWxlbnQgb2YgYWRkaW5nIGAucm93YCBhbmQgYC5jb2x1bW5gIHRvIHRoZSBzYW1lIGVsZW1lbnQuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGd1dHRlcnMgWyRncmlkLWNvbHVtbi1ndXR0ZXJdIC0gV2lkdGggb2YgdGhlIGd1dHRlcnMgb24gZWl0aGVyIHNpZGUgb2YgdGhlIGNvbHVtbiByb3cuIFJlZmVyIHRvIHRoZSBgZ3JpZC1jb2x1bW4tZ3V0dGVyKClgIGZ1bmN0aW9uIHRvIHNlZSBwb3NzaWJsZSB2YWx1ZXMuXHJcbkBtaXhpbiBncmlkLWNvbHVtbi1yb3coXHJcbiAgJGd1dHRlcnM6ICRncmlkLWNvbHVtbi1ndXR0ZXJcclxuKSB7XHJcbiAgQGluY2x1ZGUgZ3JpZC1yb3c7XHJcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4oJGd1dHRlcnM6ICRndXR0ZXJzKTtcclxuXHJcbiAgJixcclxuICAmOmxhc3QtY2hpbGQge1xyXG4gICAgZmxvYXQ6IG5vbmU7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4oKWAuXHJcbi8vLyBAYWxpYXMgZ3JpZC1jb2x1bW5cclxuQGZ1bmN0aW9uIGdyaWQtY29sKFxyXG4gICRjb2x1bW5zOiAkZ3JpZC1jb2x1bW4tY291bnRcclxuKSB7XHJcbiAgQHJldHVybiBncmlkLWNvbHVtbigkY29sdW1ucyk7XHJcbn1cclxuXHJcbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbigpYC5cclxuLy8vIEBhbGlhcyBncmlkLWNvbHVtblxyXG5AbWl4aW4gZ3JpZC1jb2woXHJcbiAgJGNvbHVtbnM6ICRncmlkLWNvbHVtbi1jb3VudCxcclxuICAkZ3V0dGVyczogJGdyaWQtY29sdW1uLWd1dHRlclxyXG4pIHtcclxuICBAaW5jbHVkZSBncmlkLWNvbHVtbigkY29sdW1ucywgJGd1dHRlcnMpO1xyXG59XHJcblxyXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4tcm93KClgLlxyXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLXJvd1xyXG5AbWl4aW4gZ3JpZC1jb2wtcm93KFxyXG4gICRndXR0ZXJzOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXHJcbikge1xyXG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLXJvdygkZ3V0dGVycyk7XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIGdyaWRcclxuLy8vL1xyXG5cclxuLy8vIFNldCB0aGUgd2lkdGggb2YgYSBncmlkIGNvbHVtbi5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkd2lkdGggWyRncmlkLWNvbHVtbi1jb3VudF0gLSBXaWR0aCB0byBtYWtlIHRoZSBjb2x1bW4uIFlvdSBjYW4gcGFzcyBpbiBhbnkgdmFsdWUgYWNjZXB0ZWQgYnkgdGhlIGBncmlkLWNvbHVtbigpYCBmdW5jdGlvbiwgc3VjaCBhcyBgNmAsIGA1MCVgLCBvciBgMSBvZiAyYC5cclxuQG1peGluIGdyaWQtY29sdW1uLXNpemUoXHJcbiAgJGNvbHVtbnM6ICRncmlkLWNvbHVtbi1jb3VudFxyXG4pIHtcclxuICB3aWR0aDogZ3JpZC1jb2x1bW4oJGNvbHVtbnMpO1xyXG59XHJcblxyXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4tc2l6ZSgpYC5cclxuLy8vIEBhbGlhcyBncmlkLWNvbHVtbi1zaXplXHJcbkBtaXhpbiBncmlkLWNvbC1zaXplKFxyXG4gICRjb2x1bW5zOiAkZ3JpZC1jb2x1bW4tY291bnRcclxuKSB7XHJcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tc2l6ZSgkY29sdW1ucyk7XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIGdyaWRcclxuLy8vL1xyXG5cclxuLy8vIFJlcG9zaXRpb24gYSBjb2x1bW4uXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtOdW1iZXJ8S2V5d29yZH0gJHBvc2l0aW9uIC0gRGlyZWN0aW9uIGFuZCBhbW91bnQgdG8gbW92ZS4gVGhlIGNvbHVtbiB3aWxsIG1vdmUgZXF1YWwgdG8gdGhlIHdpZHRoIG9mIHRoZSBjb2x1bW4gY291bnQgc3BlY2lmaWVkLiBBIHBvc2l0aXZlIG51bWJlciB3aWxsIHB1c2ggdGhlIGNvbHVtbiB0byB0aGUgcmlnaHQsIHdoaWxlIGEgbmVnYXRpdmUgbnVtYmVyIHdpbGwgcHVsbCBpdCB0byB0aGUgbGVmdC4gU2V0IHRvIGNlbnRlciB0byBjZW50ZXIgdGhlIGNvbHVtbi5cclxuQG1peGluIGdyaWQtY29sdW1uLXBvc2l0aW9uKCRwb3NpdGlvbikge1xyXG4gIEBpZiB0eXBlLW9mKCRwb3NpdGlvbikgPT0gJ251bWJlcicge1xyXG4gICAgJG9mZnNldDogcGVyY2VudGFnZSgkcG9zaXRpb24gLyAkZ3JpZC1jb2x1bW4tY291bnQpO1xyXG5cclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICN7JGdsb2JhbC1sZWZ0fTogJG9mZnNldDtcclxuICB9XHJcbiAgQGVsc2UgaWYgJHBvc2l0aW9uID09IGNlbnRlciB7XHJcbiAgICAmLCAmOmxhc3QtY2hpbGQ6bm90KDpmaXJzdC1jaGlsZCkge1xyXG4gICAgICBmbG9hdDogbm9uZTtcclxuICAgICAgY2xlYXI6IGJvdGg7XHJcbiAgICB9XHJcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcclxuICB9XHJcbiAgQGVsc2Uge1xyXG4gICAgQHdhcm4gJ1dyb25nIHN5bnRheCBmb3IgZ3JpZC1jb2x1bW4tcG9zaXRpb24oKS4gRW50ZXIgYSBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBudW1iZXIsIG9yIGNlbnRlci4nO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIFJlc2V0IGEgcG9zaXRpb24gZGVmaW5pdGlvbi5cclxuQG1peGluIGdyaWQtY29sdW1uLXVucG9zaXRpb24ge1xyXG4gIHBvc2l0aW9uOiBzdGF0aWM7XHJcbiAgZmxvYXQ6ICRnbG9iYWwtbGVmdDtcclxuICBtYXJnaW4tcmlnaHQ6IDA7XHJcbiAgbWFyZ2luLWxlZnQ6IDA7XHJcbn1cclxuXHJcbi8vLyBPZmZzZXRzIGEgY29sdW1uIHRvIHRoZSByaWdodCBieSBgJG5gIGNvbHVtbnMuXHJcbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkbiAtIFdpZHRoIHRvIG9mZnNldCBieS4gWW91IGNhbiBwYXNzIGluIGFueSB2YWx1ZSBhY2NlcHRlZCBieSB0aGUgYGdyaWQtY29sdW1uKClgIG1peGluLCBzdWNoIGFzIGA2YCwgYDUwJWAsIG9yIGAxIG9mIDJgLlxyXG5AbWl4aW4gZ3JpZC1jb2x1bW4tb2Zmc2V0KCRuKSB7XHJcbiAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogZ3JpZC1jb2x1bW4oJG4pO1xyXG59XHJcblxyXG4vLy8gRGlzYWJsZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiB0aGUgbGFzdCBjb2x1bW4gaW4gYSByb3cgYWxpZ25pbmcgdG8gdGhlIG9wcG9zaXRlIGVkZ2UuXHJcbkBtaXhpbiBncmlkLWNvbHVtbi1lbmQge1xyXG4gIC8vIFRoaXMgZXh0cmEgc3BlY2lmaWNpdHkgaXMgcmVxdWlyZWQgZm9yIHRoZSBwcm9wZXJ0eSB0byBiZSBhcHBsaWVkXHJcbiAgJjpsYXN0LWNoaWxkOmxhc3QtY2hpbGQge1xyXG4gICAgZmxvYXQ6ICRnbG9iYWwtbGVmdDtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbi1wb3NpdGlvbigpYC5cclxuLy8vIEBhbGlhcyBncmlkLWNvbHVtbi1wb3NpdGlvblxyXG5AbWl4aW4gZ3JpZC1jb2wtcG9zKCRwb3NpdGlvbikge1xyXG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLXBvc2l0aW9uKCRwb3NpdGlvbik7XHJcbn1cclxuXHJcbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbi11bnBvc2l0aW9uKClgLlxyXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLXVucG9zaXRpb25cclxuQG1peGluIGdyaWQtY29sLXVucG9zIHtcclxuICBAaW5jbHVkZSBncmlkLWNvbHVtbi11bnBvc2l0aW9uO1xyXG59XHJcblxyXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4tb2Zmc2V0KClgLlxyXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLW9mZnNldFxyXG5AbWl4aW4gZ3JpZC1jb2wtb2ZmKCRuKSB7XHJcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tb2Zmc2V0KCRuKTtcclxufVxyXG5cclxuLy8vIFNob3J0aGFuZCBmb3IgYGdyaWQtY29sdW1uLWVuZCgpYC5cclxuLy8vIEBhbGlhcyBncmlkLWNvbHVtbi1lbmRcclxuQG1peGluIGdyaWQtY29sLWVuZCB7XHJcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tZW5kO1xyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBncmlkXHJcbi8vLy9cclxuXHJcbi8vLyBTZXQgdGhlIGd1dHRlcnMgb24gYSBjb2x1bW5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfEtleXdvcmR9ICRndXR0ZXIgW2F1dG9dXHJcbi8vLyAgIFNwYWNpbmcgYmV0d2VlbiBjb2x1bW5zLCBhY2NlcHRzIG11bHRpcGxlIHZhbHVlczpcclxuLy8vICAgLSBBIHNpbmdsZSB2YWx1ZSB3aWxsIG1ha2UgdGhlIGd1dHRlciB0aGF0IGV4YWN0IHNpemUuXHJcbi8vLyAgIC0gQSBicmVha3BvaW50IG5hbWUgd2lsbCBtYWtlIHRoZSBndXR0ZXIgdGhlIGNvcnJlc3BvbmRpbmcgc2l6ZSBpbiB0aGUgJGd1dHRlcnMgbWFwLlxyXG4vLy8gICAtIFwiYXV0b1wiIHdpbGwgbWFrZSB0aGUgZ3V0dGVyIHJlc3BvbnNpdmUsIHVzaW5nIHRoZSAkZ3V0dGVycyBtYXAgdmFsdWVzLlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtY29sdW1uLWd1dHRlcl0gLSBHdXR0ZXIgbWFwIG9yIHNpbmdsZSB2YWx1ZSB0byB1c2UuIFJlc3BvbnNpdmUgZ3V0dGVyIHNldHRpbmdzIGJ5IGRlZmF1bHQuXHJcbkBtaXhpbiBncmlkLWNvbHVtbi1ndXR0ZXIoXHJcbiAgJGd1dHRlcjogYXV0byxcclxuICAkZ3V0dGVyczogJGdyaWQtY29sdW1uLWd1dHRlclxyXG4pIHtcclxuICBAaW5jbHVkZSAtemYtYnJlYWtwb2ludC12YWx1ZSgkZ3V0dGVyLCAkZ3V0dGVycykge1xyXG4gICAgJHBhZGRpbmc6IHJlbS1jYWxjKCQtemYtYnAtdmFsdWUpIC8gMjtcclxuXHJcbiAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZztcclxuICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gQ29sbGFwc2UgdGhlIGd1dHRlcnMgb24gYSBjb2x1bW4gYnkgcmVtb3ZpbmcgdGhlIHBhZGRpbmcuICoqTm90ZToqKiBvbmx5IHVzZSB0aGlzIG1peGluIHdpdGhpbiBhIGJyZWFrcG9pbnQuIFRvIGNvbGxhcHNlIGEgY29sdW1uJ3MgZ3V0dGVycyBvbiBhbGwgc2NyZWVuIHNpemVzLCB1c2UgdGhlIGAkZ3V0dGVyYCBwYXJhbWV0ZXIgb2YgdGhlIGBncmlkLWNvbHVtbigpYCBtaXhpbiBpbnN0ZWFkLlxyXG5AbWl4aW4gZ3JpZC1jb2x1bW4tY29sbGFwc2Uge1xyXG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLWd1dHRlcigwKTtcclxufVxyXG5cclxuLy8vIFVuLWNvbGxhcHNlIHRoZSBndXR0ZXJzIG9uIGEgY29sdW1uIGJ5IHJlLWFkZGluZyB0aGUgcGFkZGluZy5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGd1dHRlciBbJGdyaWQtY29sdW1uLWd1dHRlcl0gLSBTcGFjaW5nIGJldHdlZW4gY29sdW1ucy5cclxuQG1peGluIGdyaWQtY29sdW1uLXVuY29sbGFwc2UoJGd1dHRlcjogJGdyaWQtY29sdW1uLWd1dHRlcikge1xyXG4gIEB3YXJuICdUaGlzIG1peGluIGlzIGJlaW5nIHJlcGxhY2VkIGJ5IGdyaWQtY29sdW1uLWd1dHRlcigpLiBncmlkLWNvbHVtbi11bmNvbGxhcHNlKCkgd2lsbCBiZSByZW1vdmVkIGluIEZvdW5kYXRpb24gNi40Lic7XHJcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tZ3V0dGVyKCRndXR0ZXJzOiAkZ3V0dGVyKTtcclxufVxyXG5cclxuLy8vIFNob3J0aGFuZCBmb3IgYGdyaWQtY29sdW1uLWd1dHRlcigpYC5cclxuLy8vIEBhbGlhcyBncmlkLWNvbHVtbi1ndXR0ZXJcclxuQG1peGluIGdyaWQtY29sLWd1dHRlcihcclxuICAkZ3V0dGVyOiBhdXRvLFxyXG4gICRndXR0ZXJzOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXHJcbikge1xyXG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLWd1dHRlcigkZ3V0dGVyLCAkZ3V0dGVycyk7XHJcbn1cclxuXHJcbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbi1jb2xsYXBzZSgpYC5cclxuLy8vIEBhbGlhcyBncmlkLWNvbHVtbi1jb2xsYXBzZVxyXG5AbWl4aW4gZ3JpZC1jb2wtY29sbGFwc2Uge1xyXG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLWNvbGxhcHNlO1xyXG59XHJcblxyXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4tdW5jb2xsYXBzZSgpYC5cclxuLy8vIEBhbGlhcyBncmlkLWNvbHVtbi11bmNvbGxhcHNlXHJcbkBtaXhpbiBncmlkLWNvbC11bmNvbGxhcHNlKCRndXR0ZXI6ICRncmlkLWNvbHVtbi1ndXR0ZXIpIHtcclxuICBAd2FybiAnVGhpcyBtaXhpbiBpcyBiZWluZyByZXBsYWNlZCBieSBncmlkLWNvbC1ndXR0ZXIoKS4gZ3JpZC1jb2wtdW5jb2xsYXBzZSgpIHdpbGwgYmUgcmVtb3ZlZCBpbiBGb3VuZGF0aW9uIDYuNC4nO1xyXG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLXVuY29sbGFwc2UoJGd1dHRlcik7XHJcbn1cclxuXHJcbi8vLyBTZXRzIGJvdHRvbSBtYXJnaW4gb24gZ3JpZCBjb2x1bW5zIHRvIG1hdGNoIGd1dHRlcnNcclxuLy8vIEBwYXJhbSB7TnVtYmVyfEtleXdvcmR9ICRtYXJnaW4gW2F1dG9dXHJcbi8vLyAgIFRoZSBib3R0b20gbWFyZ2luIG9uIGdyaWQgY29sdW1ucywgYWNjZXB0cyBtdWx0aXBsZSB2YWx1ZXM6XHJcbi8vLyAgIC0gQSBzaW5nbGUgdmFsdWUgd2lsbCBtYWtlIHRoZSBtYXJnaW4gdGhhdCBleGFjdCBzaXplLlxyXG4vLy8gICAtIEEgYnJlYWtwb2ludCBuYW1lIHdpbGwgbWFrZSB0aGUgbWFyZ2luIHRoZSBjb3JyZXNwb25kaW5nIHNpemUgaW4gdGhlICRtYXJnaW5zIG1hcC5cclxuLy8vICAgLSBcImF1dG9cIiB3aWxsIG1ha2UgdGhlIG1hcmdpbiByZXNwb25zaXZlLCB1c2luZyB0aGUgJG1hcmdpbnMgbWFwIHZhbHVlcy5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJG1hcmdpbnMgWyRncmlkLWNvbHVtbi1ndXR0ZXJdIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSB0byB1c2UuIFJlc3BvbnNpdmUgZ3V0dGVyIHNldHRpbmdzIGJ5IGRlZmF1bHQuXHJcbkBtaXhpbiBncmlkLWNvbHVtbi1tYXJnaW4gKFxyXG4gICRtYXJnaW46IGF1dG8sXHJcbiAgJG1hcmdpbnM6ICRncmlkLWNvbHVtbi1ndXR0ZXJcclxuKSB7XHJcbiAgQGluY2x1ZGUgLXpmLWJyZWFrcG9pbnQtdmFsdWUoJG1hcmdpbiwgJG1hcmdpbnMpIHtcclxuICAgICRtYXJnaW4tYm90dG9tOiByZW0tY2FsYygkLXpmLWJwLXZhbHVlKTtcclxuICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4tYm90dG9tO1xyXG5cclxuICAgID4gOmxhc3QtY2hpbGQge1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgZ3JpZFxyXG4vLy8vXHJcblxyXG4vLy8gT3V0cHV0cyBDU1MgY2xhc3NlcyBmb3IgdGhlIGdyaWQuXHJcbi8vLyBAYWNjZXNzIHByaXZhdGVcclxuQG1peGluIGZvdW5kYXRpb24tZ3JpZChcclxuICAkcm93OiAncm93JyxcclxuICAkY29sdW1uOiAnY29sdW1uJyxcclxuICAkY29sdW1uLXJvdzogJ2NvbHVtbi1yb3cnLFxyXG4gICRndXR0ZXI6ICdndXR0ZXInLFxyXG4gICRwdXNoOiAncHVzaCcsXHJcbiAgJHB1bGw6ICdwdWxsJyxcclxuICAkY2VudGVyOiAnY2VudGVyZWQnLFxyXG4gICR1bmNlbnRlcjogJ3VuY2VudGVyZWQnLFxyXG4gICRjb2xsYXBzZTogJ2NvbGxhcHNlJyxcclxuICAkdW5jb2xsYXBzZTogJ3VuY29sbGFwc2UnLFxyXG4gICRvZmZzZXQ6ICdvZmZzZXQnLFxyXG4gICRlbmQ6ICdlbmQnLFxyXG4gICRleHBhbmRlZDogJ2V4cGFuZGVkJyxcclxuICAkYmxvY2s6ICdibG9jaydcclxuKSB7XHJcbiAgLy8gUm93XHJcbiAgLiN7JHJvd30ge1xyXG4gICAgQGluY2x1ZGUgZ3JpZC1yb3c7XHJcblxyXG4gICAgLy8gQ29sbGFwc2luZ1xyXG4gICAgJi4jeyRjb2xsYXBzZX0ge1xyXG4gICAgICA+IC4jeyRjb2x1bW59IHtcclxuICAgICAgICBAaW5jbHVkZSBncmlkLWNvbC1jb2xsYXBzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIE5lc3RpbmdcclxuICAgICYgLiN7JHJvd30ge1xyXG4gICAgICBAaW5jbHVkZSBncmlkLXJvdy1uZXN0KCRncmlkLWNvbHVtbi1ndXR0ZXIpO1xyXG5cclxuICAgICAgJi4jeyRjb2xsYXBzZX0ge1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMDtcclxuICAgICAgICBtYXJnaW4tbGVmdDogMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIEV4cGFuZGVkIChmdWxsLXdpZHRoKSByb3dcclxuICAgICYuI3skZXhwYW5kZWR9IHtcclxuICAgICAgQGluY2x1ZGUgZ3JpZC1yb3ctc2l6ZShleHBhbmQpO1xyXG5cclxuICAgICAgLiN7JHJvd30ge1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcclxuICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICY6bm90KC4jeyRleHBhbmRlZH0pIC4jeyRyb3d9IHtcclxuICAgICAgQGluY2x1ZGUgZ3JpZC1yb3ctc2l6ZShleHBhbmQpO1xyXG4gICAgfVxyXG5cclxuICAgIEBpZiB0eXBlLW9mKCRncmlkLWNvbHVtbi1ndXR0ZXIpID09ICdtYXAnIHtcclxuICAgICAgLy8gU3RhdGljICh1bnJlc3BvbnNpdmUpIHJvdyBndXR0ZXJzXHJcbiAgICAgIC8vXHJcbiAgICAgIEBlYWNoICRicmVha3BvaW50LCAkdmFsdWUgaW4gJGdyaWQtY29sdW1uLWd1dHRlciB7XHJcbiAgICAgICAgJi4jeyRndXR0ZXJ9LSN7JGJyZWFrcG9pbnR9IHtcclxuICAgICAgICAgID4gLiN7JGNvbHVtbn0ge1xyXG4gICAgICAgICAgICBAaW5jbHVkZSBncmlkLWNvbC1ndXR0ZXIoJHZhbHVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIENvbHVtblxyXG4gIC4jeyRjb2x1bW59IHtcclxuICAgIEBpbmNsdWRlIGdyaWQtY29sO1xyXG5cclxuICAgIEBpZiAkZ3JpZC1jb2x1bW4tYWxpZ24tZWRnZSB7XHJcbiAgICAgICYuI3skZW5kfSB7XHJcbiAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtZW5kO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBDb2x1bW4gcm93XHJcbiAgLy8gVGhlIGRvdWJsZSAucm93IGNsYXNzIGlzIG5lZWRlZCB0byBidW1wIHVwIHRoZSBzcGVjaWZpY2l0eVxyXG4gIC4jeyRjb2x1bW59LiN7JHJvd30uI3skcm93fSB7XHJcbiAgICBmbG9hdDogbm9uZTtcclxuICB9XHJcblxyXG4gIC8vIFRvIHByb3Blcmx5IG5lc3QgYSBjb2x1bW4gcm93LCBwYWRkaW5nIGFuZCBtYXJnaW4gaXMgcmVtb3ZlZFxyXG4gIC4jeyRyb3d9IC4jeyRjb2x1bW59LiN7JHJvd30uI3skcm93fSB7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XHJcbiAgICBtYXJnaW4tbGVmdDogMDtcclxuICAgIHBhZGRpbmctcmlnaHQ6IDA7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50IHtcclxuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1uLWNvdW50IHtcclxuICAgICAgLy8gQ29sdW1uIHdpZHRoXHJcbiAgICAgIC4jeyQtemYtc2l6ZX0tI3skaX0ge1xyXG4gICAgICAgIEBpbmNsdWRlIGdyaWQtY29sLXNpemUoJGkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBTb3VyY2Ugb3JkZXJpbmdcclxuICAgICAgQGlmICRpIDwgJGdyaWQtY29sdW1uLWNvdW50IHtcclxuICAgICAgICAuI3skLXpmLXNpemV9LSN7JHB1c2h9LSN7JGl9IHtcclxuICAgICAgICAgIEBpbmNsdWRlIGdyaWQtY29sLXBvcygkaSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuI3skLXpmLXNpemV9LSN7JHB1bGx9LSN7JGl9IHtcclxuICAgICAgICAgIEBpbmNsdWRlIGdyaWQtY29sLXBvcygtJGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gT2Zmc2V0c1xyXG4gICAgICAkbzogJGkgLSAxO1xyXG5cclxuICAgICAgLiN7JC16Zi1zaXplfS0jeyRvZmZzZXR9LSN7JG99IHtcclxuICAgICAgICBAaW5jbHVkZSBncmlkLWNvbC1vZmYoJG8pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQmxvY2sgZ3JpZFxyXG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkYmxvY2stZ3JpZC1tYXgge1xyXG4gICAgICAuI3skLXpmLXNpemV9LXVwLSN7JGl9IHtcclxuICAgICAgICBAaW5jbHVkZSBncmlkLWxheW91dCgkaSwgJy4jeyRjb2x1bW59Jyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBSZXNwb25zaXZlIGNvbGxhcHNpbmdcclxuICAgIC4jeyQtemYtc2l6ZX0tI3skY29sbGFwc2V9IHtcclxuICAgICAgPiAuI3skY29sdW1ufSB7IEBpbmNsdWRlIGdyaWQtY29sLWNvbGxhcHNlOyB9XHJcblxyXG4gICAgICAuI3skcm93fSB7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLiN7JGV4cGFuZGVkfS4jeyRyb3d9IC4jeyQtemYtc2l6ZX0tI3skY29sbGFwc2V9LiN7JHJvd30ge1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xyXG4gICAgfVxyXG5cclxuICAgIC4jeyQtemYtc2l6ZX0tI3skdW5jb2xsYXBzZX0ge1xyXG4gICAgICA+IC4jeyRjb2x1bW59IHsgQGluY2x1ZGUgZ3JpZC1jb2wtZ3V0dGVyKCQtemYtc2l6ZSk7IH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBQb3NpdGlvbmluZ1xyXG4gICAgLiN7JC16Zi1zaXplfS0jeyRjZW50ZXJ9IHtcclxuICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtcG9zKGNlbnRlcik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gR3V0dGVyIGFkanVzdG1lbnRcclxuICAgIC4jeyQtemYtc2l6ZX0tI3skdW5jZW50ZXJ9LFxyXG4gICAgLiN7JC16Zi1zaXplfS0jeyRwdXNofS0wLFxyXG4gICAgLiN7JC16Zi1zaXplfS0jeyRwdWxsfS0wIHtcclxuICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtdW5wb3M7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBCbG9jayBncmlkIGNvbHVtbnNcclxuICAuI3skY29sdW1ufS0jeyRibG9ja30ge1xyXG4gICAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tbWFyZ2luO1xyXG4gIH1cclxuXHJcbiAgQGlmICRjb2x1bW4gPT0gJ2NvbHVtbicgYW5kIGhhcy12YWx1ZSgkZ3JpZC1jb2x1bW4tYWxpYXMpIHtcclxuICAgIC4jeyRncmlkLWNvbHVtbi1hbGlhc30ge1xyXG4gICAgICAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1ibG9jayBwbGFjZWhvbGRlci1pbi1leHRlbmRcclxuICAgICAgQGV4dGVuZCAuY29sdW1uO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgZ3JpZFxyXG4vLy8vXHJcblxyXG4vLy8gU2l6ZXMgY2hpbGQgZWxlbWVudHMgc28gdGhhdCBgJG5gIG51bWJlciBvZiBpdGVtcyBhcHBlYXIgb24gZWFjaCByb3cuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRuIC0gTnVtYmVyIG9mIGVsZW1lbnRzIHRvIGRpc3BsYXkgcGVyIHJvdy5cclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc2VsZWN0b3IgWycuY29sdW1uJ10gLSBTZWxlY3RvcihzKSB0byB1c2UgZm9yIGNoaWxkIGVsZW1lbnRzLlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TGlzdH0gJGd1dHRlclxyXG4vLy8gICBUaGUgZ3V0dGVyIHRvIGFwcGx5IHRvIGNoaWxkIGVsZW1lbnRzLiBBY2NlcHRzIG11bHRpcGxlIHZhbHVlczpcclxuLy8vICAgLSAkZ3JpZC1jb2x1bW4tZ3V0dGVyIHdpbGwgdXNlIHRoZSB2YWx1ZXMgaW4gdGhlICRncmlkLWNvbHVtbi1ndXR0ZXIgbWFwLCBpbmNsdWRpbmcgYnJlYWtwb2ludCBzaXplcy5cclxuLy8vICAgLSBBIGZpeGVkIG51bWVyaWMgdmFsdWUgd2lsbCBhcHBseSB0aGlzIGd1dHRlciB0byBhbGwgYnJlYWtwb2ludHMuXHJcbkBtaXhpbiBncmlkLWxheW91dChcclxuICAkbixcclxuICAkc2VsZWN0b3I6ICcuY29sdW1uJyxcclxuICAkZ3V0dGVyOiBudWxsXHJcbikge1xyXG4gICYgPiAjeyRzZWxlY3Rvcn0ge1xyXG4gICAgZmxvYXQ6ICRnbG9iYWwtbGVmdDtcclxuICAgIHdpZHRoOiBwZXJjZW50YWdlKDEvJG4pO1xyXG5cclxuICAgIC8vIElmIGEgJGd1dHRlciB2YWx1ZSBpcyBwYXNzZWRcclxuICAgIEBpZigkZ3V0dGVyKSB7XHJcbiAgICAgIC8vIEd1dHRlcnNcclxuICAgICAgQGlmIHR5cGUtb2YoJGd1dHRlcikgPT0gJ21hcCcge1xyXG4gICAgICAgIEBlYWNoICRicmVha3BvaW50LCAkdmFsdWUgaW4gJGd1dHRlciB7XHJcbiAgICAgICAgICAkcGFkZGluZzogcmVtLWNhbGMoJHZhbHVlKSAvIDI7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkYnJlYWtwb2ludCkge1xyXG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZztcclxuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgQGVsc2UgaWYgdHlwZS1vZigkZ3V0dGVyKSA9PSAnbnVtYmVyJyBhbmQgc3RyaXAtdW5pdCgkZ3V0dGVyKSA+IDAge1xyXG4gICAgICAgICRwYWRkaW5nOiByZW0tY2FsYygkZ3V0dGVyKSAvIDI7XHJcbiAgICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmc7XHJcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICY6bnRoLW9mLXR5cGUoMW4pIHtcclxuICAgICAgY2xlYXI6IG5vbmU7XHJcbiAgICB9XHJcblxyXG4gICAgJjpudGgtb2YtdHlwZSgjeyRufW4rMSkge1xyXG4gICAgICBjbGVhcjogYm90aDtcclxuICAgIH1cclxuXHJcbiAgICAmOmxhc3QtY2hpbGQge1xyXG4gICAgICBmbG9hdDogJGdsb2JhbC1sZWZ0O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8vIEFkZHMgZXh0cmEgQ1NTIHRvIGJsb2NrIGdyaWQgY2hpbGRyZW4gc28gdGhlIGxhc3QgaXRlbXMgaW4gdGhlIHJvdyBjZW50ZXIgYXV0b21hdGljYWxseS4gQXBwbHkgdGhpcyB0byB0aGUgY29sdW1ucywgbm90IHRoZSByb3cuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRuIC0gTnVtYmVyIG9mIGl0ZW1zIHRoYXQgYXBwZWFyIGluIGVhY2ggcm93LlxyXG5AbWl4aW4gZ3JpZC1sYXlvdXQtY2VudGVyLWxhc3QoJG4pIHtcclxuICBAZm9yICRpIGZyb20gMSB0byAkbiB7XHJcbiAgICBAaWYgJGkgPT0gMSB7XHJcbiAgICAgICY6bnRoLWNoaWxkKCN7JG59bisxKTpsYXN0LWNoaWxkIHtcclxuICAgICAgICBtYXJnaW4tbGVmdDogKDEwMCAtIDEwMC8kbiAqICRpKSAvIDIgKiAxJTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgQGVsc2Uge1xyXG4gICAgICAmOm50aC1jaGlsZCgjeyRufW4rMSk6bnRoLWxhc3QtY2hpbGQoI3skaX0pIHtcclxuICAgICAgICBtYXJnaW4tbGVmdDogKDEwMCAtIDEwMC8kbiAqICRpKSAvIDIgKiAxJTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgZmxleC1ncmlkXHJcbi8vLy9cclxuXHJcbi8vLyBDcmVhdGVzIGEgY29udGFpbmVyIGZvciBhIGZsZXggZ3JpZCByb3cuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtLZXl3b3JkfExpc3R9ICRiZWhhdmlvciBbbnVsbF1cclxuLy8vICAgTW9kaWZpY2F0aW9ucyB0byB0aGUgZGVmYXVsdCBncmlkIHN0eWxlcy4gYG5lc3RgIGluZGljYXRlcyB0aGUgcm93IHdpbGwgYmUgcGxhY2VkIGluc2lkZSBhbm90aGVyIHJvdy4gYGNvbGxhcHNlYCBpbmRpY2F0ZXMgdGhhdCB0aGUgY29sdW1ucyBpbnNpZGUgdGhpcyByb3cgd2lsbCBub3QgaGF2ZSBwYWRkaW5nLiBgbmVzdCBjb2xsYXBzZWAgY29tYmluZXMgYm90aCBiZWhhdmlvcnMuXHJcbi8vLyBAcGFyYW0ge0tleXdvcmR8TnVtYmVyfSAkc2l6ZSBbJGdyaWQtcm93LXdpZHRoXSBNYXhpbXVtIHNpemUgb2YgdGhlIHJvdy4gU2V0IHRvIGBleHBhbmRgIHRvIG1ha2UgdGhlIHJvdyB0YWtpbmcgdGhlIGZ1bGwgd2lkdGguXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGNvbHVtbnMgW251bGxdIC0gTnVtYmVyIG9mIGNvbHVtbnMgdG8gdXNlIGZvciB0aGlzIHJvdy4gSWYgc2V0IHRvIGBudWxsYCAodGhlIGRlZmF1bHQpLCB0aGUgZ2xvYmFsIGNvbHVtbiBjb3VudCB3aWxsIGJlIHVzZWQuXHJcbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRiYXNlIFt0cnVlXSAtIFNldCB0byBgZmFsc2VgIHRvIHByZXZlbnQgYmFzaWMgc3R5bGVzIGZyb20gYmVpbmcgb3V0cHV0LiBVc2VmdWwgaWYgeW91J3JlIGNhbGxpbmcgdGhpcyBtaXhpbiBvbiB0aGUgc2FtZSBlbGVtZW50IHR3aWNlLCBhcyBpdCBwcmV2ZW50cyBkdXBsaWNhdGUgQ1NTIG91dHB1dC5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLWNvbHVtbi1ndXR0ZXJdIC0gR3V0dGVyIG1hcCBvciBzaW5nbGUgdmFsdWUgdG8gdXNlIHdoZW4gaW52ZXJ0aW5nIG1hcmdpbnMsIGluIGNhc2UgdGhlIHJvdyBpcyBuZXN0ZWQuIFJlc3BvbnNpdmUgZ3V0dGVyIHNldHRpbmdzIGJ5IGRlZmF1bHQuXHJcbkBtaXhpbiBmbGV4LWdyaWQtcm93KFxyXG4gICRiZWhhdmlvcjogbnVsbCxcclxuICAkc2l6ZTogJGdyaWQtcm93LXdpZHRoLFxyXG4gICRjb2x1bW5zOiBudWxsLFxyXG4gICRiYXNlOiB0cnVlLFxyXG4gICR3cmFwOiB0cnVlLFxyXG4gICRndXR0ZXJzOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXHJcbikge1xyXG4gICRtYXJnaW46IGF1dG87XHJcbiAgJHdyYXA6IGlmKCR3cmFwLCB3cmFwLCBub3dyYXApO1xyXG5cclxuICBAaWYgaW5kZXgoJGJlaGF2aW9yLCBuZXN0KSAhPSBudWxsIHtcclxuICAgIEBpbmNsdWRlIGdyaWQtcm93LW5lc3QoJGd1dHRlcnMpO1xyXG5cclxuICAgIEBpZiBpbmRleCgkYmVoYXZpb3IsIGNvbGxhcHNlKSAhPSBudWxsIHtcclxuICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xyXG4gICAgICBtYXJnaW4tbGVmdDogMDtcclxuICAgIH1cclxuICB9XHJcbiAgQGVsc2Uge1xyXG4gICAgQGluY2x1ZGUgZ3JpZC1yb3ctc2l6ZSgkc2l6ZSk7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcclxuICB9XHJcblxyXG4gIEBpZiAkYmFzZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1mbG93OiByb3cgJHdyYXA7XHJcbiAgfVxyXG5cclxuICBAaWYgJGNvbHVtbnMgIT0gbnVsbCB7XHJcbiAgICBAaW5jbHVkZSBncmlkLWNvbnRleHQoJGNvbHVtbnMsICRiYXNlKSB7XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8vIENhbGN1bGF0ZXMgdGhlIGBmbGV4YCBwcm9wZXJ0eSBmb3IgYSBmbGV4IGdyaWQgY29sdW1uLiBJdCBhY2NlcHRzIGFsbCBvZiB0aGUgc2FtZSB2YWx1ZXMgYXMgdGhlIGJhc2ljIGBncmlkLWNvbHVtbigpYCBmdW5jdGlvbiwgYWxvbmcgd2l0aCB0d28gZXh0cmFzOlxyXG4vLy8gICAtIGBleHBhbmRgICh0aGUgZGVmYXVsdCkgd2lsbCBtYWtlIHRoZSBjb2x1bW4gZXhwYW5kIHRvIGZpbGwgc3BhY2UuXHJcbi8vLyAgIC0gYHNocmlua2Agd2lsbCBtYWtlIHRoZSBjb2x1bW4gY29udHJhY3QsIHNvIGl0IG9ubHkgdGFrZXMgdXAgdGhlIGhvcml6b250YWwgc3BhY2UgaXQgbmVlZHMuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGNvbHVtbnMgW2V4cGFuZF0gLSBXaWR0aCBvZiB0aGUgY29sdW1uLlxyXG5AZnVuY3Rpb24gZmxleC1ncmlkLWNvbHVtbigkY29sdW1uczogZXhwYW5kKSB7XHJcbiAgJGZsZXg6IDEgMSAwcHg7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgemVyby11bml0XHJcblxyXG4gIEBpZiAkY29sdW1ucyA9PSBzaHJpbmsge1xyXG4gICAgJGZsZXg6IDAgMCBhdXRvO1xyXG4gIH1cclxuICBAZWxzZSBpZiAkY29sdW1ucyAhPSBleHBhbmQge1xyXG4gICAgJGZsZXg6IDAgMCBncmlkLWNvbHVtbigkY29sdW1ucyk7XHJcbiAgfVxyXG5cclxuICBAcmV0dXJuICRmbGV4O1xyXG59XHJcblxyXG4vLy8gQ3JlYXRlcyBhIGNvbHVtbiBmb3IgYSBmbGV4IGdyaWQuIEJ5IGRlZmF1bHQsIHRoZSBjb2x1bW4gd2lsbCBzdHJldGNoIHRvIHRoZSBmdWxsIHdpZHRoIG9mIGl0cyBjb250YWluZXIsIGJ1dCB0aGlzIGNhbiBiZSBvdmVycmlkZGVuIHdpdGggc2l6aW5nIGNsYXNzZXMsIG9yIGJ5IHVzaW5nIHRoZSBgdW5zdGFja2AgY2xhc3Mgb24gdGhlIHBhcmVudCBmbGV4IHJvdy5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge01peGVkfSAkY29sdW1ucyBbZXhwYW5kXSAtIFdpZHRoIG9mIHRoZSBjb2x1bW4uIFJlZmVyIHRvIHRoZSBgZmxleC1ncmlkLWNvbHVtbigpYCBmdW5jdGlvbiB0byBzZWUgcG9zc2libGUgdmFsdWVzLlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtY29sdW1uLWd1dHRlcl0gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIGZvciBndXR0ZXJzIHdpZHRoLiBTZWUgdGhlIGBncmlkLWNvbHVtbi1ndXR0ZXJgIG1peGluLlxyXG5AbWl4aW4gZmxleC1ncmlkLWNvbHVtbihcclxuICAkY29sdW1uczogZXhwYW5kLFxyXG4gICRndXR0ZXJzOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXHJcbikge1xyXG4gIC8vIEJhc2UgcHJvcGVydGllc1xyXG4gIEBpbmNsdWRlIGZsZXgtZ3JpZC1zaXplKCRjb2x1bW5zKTtcclxuXHJcbiAgLy8gR3V0dGVyc1xyXG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLWd1dHRlcigkZ3V0dGVyczogJGd1dHRlcnMpO1xyXG5cclxuICAvLyBmaXhlcyByZWNlbnQgQ2hyb21lIHZlcnNpb24gbm90IGxpbWl0aW5nIGNoaWxkIHdpZHRoXHJcbiAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzQ5MzQ1ODYvd2hpdGUtc3BhY2Utbm93cmFwLWFuZC1mbGV4Ym94LWRpZC1ub3Qtd29yay1pbi1jaHJvbWVcclxuICBAaWYgJGNvbHVtbnMgPT0gZXhwYW5kIHtcclxuICAgIG1pbi13aWR0aDogMDtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBDcmVhdGVzIGEgYmxvY2sgZ3JpZCBmb3IgYSBmbGV4IGdyaWQgcm93LlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbiAtIE51bWJlciBvZiBjb2x1bW5zIHRvIGRpc3BsYXkgb24gZWFjaCByb3cuXHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlbGVjdG9yIC0gU2VsZWN0b3IgdG8gdXNlIHRvIHRhcmdldCBjb2x1bW5zIHdpdGhpbiB0aGUgcm93LlxyXG5AbWl4aW4gZmxleC1ncmlkLWxheW91dChcclxuICAkbixcclxuICAkc2VsZWN0b3I6ICcuY29sdW1uJ1xyXG4pIHtcclxuICBmbGV4LXdyYXA6IHdyYXA7XHJcblxyXG4gID4gI3skc2VsZWN0b3J9IHtcclxuICAgICRwY3Q6IHBlcmNlbnRhZ2UoMS8kbik7XHJcblxyXG4gICAgZmxleDogMCAwICRwY3Q7XHJcbiAgICBtYXgtd2lkdGg6ICRwY3Q7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gQ2hhbmdlcyB0aGUgd2lkdGggZmxleCBncmlkIGNvbHVtbi5cclxuLy8vIEBwYXJhbSB7TWl4ZWR9ICRjb2x1bW5zIFtleHBhbmRdIC0gV2lkdGggb2YgdGhlIGNvbHVtbi4gUmVmZXIgdG8gdGhlIGBmbGV4LWdyaWQtY29sdW1uKClgIGZ1bmN0aW9uIHRvIHNlZSBwb3NzaWJsZSB2YWx1ZXMuXHJcbkBtaXhpbiBmbGV4LWdyaWQtc2l6ZSgkY29sdW1uczogbnVsbCkge1xyXG4gICRjb2x1bW5zOiAkY29sdW1ucyBvciBleHBhbmQ7XHJcblxyXG4gIGZsZXg6IGZsZXgtZ3JpZC1jb2x1bW4oJGNvbHVtbnMpO1xyXG5cclxuICAvLyBtYXgtd2lkdGggZml4ZXMgSUUgMTAvMTEgbm90IHJlc3BlY3RpbmcgdGhlIGZsZXgtYmFzaXMgcHJvcGVydHlcclxuICBAaWYgJGNvbHVtbnMgIT0gZXhwYW5kIGFuZCAkY29sdW1ucyAhPSBzaHJpbmsge1xyXG4gICAgbWF4LXdpZHRoOiBncmlkLWNvbHVtbigkY29sdW1ucyk7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuQG1peGluIGZvdW5kYXRpb24tZmxleC1ncmlkIHtcclxuICAvLyBSb3dcclxuICAucm93IHtcclxuICAgIEBpbmNsdWRlIGZsZXgtZ3JpZC1yb3c7XHJcblxyXG4gICAgLy8gTmVzdGluZyBiZWhhdmlvclxyXG4gICAgJiAucm93IHtcclxuICAgICAgQGluY2x1ZGUgZmxleC1ncmlkLXJvdyhuZXN0LCAkYmFzZTogZmFsc2UpO1xyXG5cclxuICAgICAgJi5jb2xsYXBzZSB7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRXhwYW5kZWQgcm93XHJcbiAgICAmLmV4cGFuZGVkIHtcclxuICAgICAgQGluY2x1ZGUgZ3JpZC1yb3ctc2l6ZShleHBhbmQpO1xyXG5cclxuICAgICAgLnJvdyB7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJjpub3QoLmV4cGFuZGVkKSAucm93IHtcclxuICAgICAgQGluY2x1ZGUgZ3JpZC1yb3ctc2l6ZShleHBhbmQpO1xyXG4gICAgfVxyXG5cclxuICAgICYuY29sbGFwc2Uge1xyXG4gICAgICA+IC5jb2x1bW4ge1xyXG4gICAgICAgIEBpbmNsdWRlIGdyaWQtY29sLWNvbGxhcHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVW5kbyBuZWdhdGl2ZSBtYXJnaW5zXHJcbiAgICAvLyBGcm9tIGNvbGxhcHNlZCBjaGlsZFxyXG4gICAgJi5pcy1jb2xsYXBzZS1jaGlsZCxcclxuICAgICYuY29sbGFwc2UgPiAuY29sdW1uID4gLnJvdyB7XHJcbiAgICAgIG1hcmdpbi1yaWdodDogMDtcclxuICAgICAgbWFyZ2luLWxlZnQ6IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBDb2x1bW5cclxuICAuY29sdW1uIHtcclxuICAgIEBpbmNsdWRlIGZsZXgtZ3JpZC1jb2x1bW47XHJcbiAgfVxyXG5cclxuICAvLyBDb2x1bW4gcm93XHJcbiAgLy8gVGhlIGRvdWJsZSAucm93IGNsYXNzIGlzIG5lZWRlZCB0byBidW1wIHVwIHRoZSBzcGVjaWZpY2l0eVxyXG4gIC5jb2x1bW4ucm93LnJvdyB7XHJcbiAgICBmbG9hdDogbm9uZTtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gIH1cclxuXHJcbiAgLy8gVG8gcHJvcGVybHkgbmVzdCBhIGNvbHVtbiByb3csIHBhZGRpbmcgYW5kIG1hcmdpbiBpcyByZW1vdmVkXHJcbiAgLnJvdyAuY29sdW1uLnJvdy5yb3cge1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xyXG4gICAgbWFyZ2luLWxlZnQ6IDA7XHJcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xyXG4gICAgcGFkZGluZy1sZWZ0OiAwO1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCB7XHJcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbHVtbi1jb3VudCB7XHJcbiAgICAgIC8vIFNpemluZyAocGVyY2VudGFnZSlcclxuICAgICAgLiN7JC16Zi1zaXplfS0jeyRpfSB7XHJcbiAgICAgICAgZmxleDogZmxleC1ncmlkLWNvbHVtbigkaSk7XHJcbiAgICAgICAgbWF4LXdpZHRoOiBncmlkLWNvbHVtbigkaSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIE9mZnNldHNcclxuICAgICAgJG86ICRpIC0gMTtcclxuXHJcbiAgICAgIC4jeyQtemYtc2l6ZX0tb2Zmc2V0LSN7JG99IHtcclxuICAgICAgICBAaW5jbHVkZSBncmlkLWNvbHVtbi1vZmZzZXQoJG8pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQmxvY2sgZ3JpZFxyXG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkYmxvY2stZ3JpZC1tYXgge1xyXG4gICAgICAuI3skLXpmLXNpemV9LXVwLSN7JGl9IHtcclxuICAgICAgICBAaW5jbHVkZSBmbGV4LWdyaWQtbGF5b3V0KCRpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBpZiAkLXpmLXNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xyXG4gICAgICAvLyBTaXppbmcgKGV4cGFuZClcclxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkLXpmLXNpemUpIHtcclxuICAgICAgICAuI3skLXpmLXNpemV9LWV4cGFuZCB7XHJcbiAgICAgICAgICBmbGV4OiBmbGV4LWdyaWQtY29sdW1uKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBBdXRvLXN0YWNraW5nL3Vuc3RhY2tpbmdcclxuICAgICAgQGF0LXJvb3QgKHdpdGhvdXQ6IG1lZGlhKSB7XHJcbiAgICAgICAgLnJvdy4jeyQtemYtc2l6ZX0tdW5zdGFjayB7XHJcbiAgICAgICAgICA+IC5jb2x1bW4ge1xyXG4gICAgICAgICAgICBmbGV4OiBmbGV4LWdyaWQtY29sdW1uKDEwMCUpO1xyXG5cclxuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkLXpmLXNpemUpIHtcclxuICAgICAgICAgICAgICBmbGV4OiBmbGV4LWdyaWQtY29sdW1uKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBSZXNwb25zaXZlIGNvbGxhcHNpbmdcclxuICAgIC4jeyQtemYtc2l6ZX0tY29sbGFwc2Uge1xyXG4gICAgICA+IC5jb2x1bW4geyBAaW5jbHVkZSBncmlkLWNvbC1jb2xsYXBzZTsgfVxyXG4gICAgfVxyXG5cclxuICAgIC4jeyQtemYtc2l6ZX0tdW5jb2xsYXBzZSB7XHJcbiAgICAgID4gLmNvbHVtbiB7IEBpbmNsdWRlIGdyaWQtY29sLWd1dHRlcigkLXpmLXNpemUpOyB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBTaXppbmcgKHNocmluaylcclxuICAuc2hyaW5rIHtcclxuICAgIGZsZXg6IGZsZXgtZ3JpZC1jb2x1bW4oc2hyaW5rKTtcclxuICAgIG1heC13aWR0aDogMTAwJTtcclxuICB9XHJcblxyXG4gIC8vIEJsb2NrIGdyaWQgY29sdW1uc1xyXG4gIC5jb2x1bW4tYmxvY2sge1xyXG4gICAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tbWFyZ2luO1xyXG4gIH1cclxuXHJcbiAgLmNvbHVtbnMge1xyXG4gICAgQGV4dGVuZCAuY29sdW1uOyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIHBsYWNlaG9sZGVyLWluLWV4dGVuZFxyXG5cclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIHh5LWdyaWRcclxuLy8vL1xyXG5cclxuLy8vIEVuYWJsZXMgdGhlIFhZIGdyaWQuXHJcbi8vLyBAdHlwZSBCb29sZWFuXHJcbiR4eS1ncmlkOiB0cnVlICFkZWZhdWx0O1xyXG5cclxuLy8vIFRoZSBtYXhpbXVtIHdpZHRoIG9mIGEgZ3JpZCBjb250YWluZXIuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGdyaWQtY29udGFpbmVyOiAkZ2xvYmFsLXdpZHRoICFkZWZhdWx0O1xyXG5cclxuLy8vIFRoZSBudW1iZXIgb2YgY29sdW1ucyB1c2VkIGluIHRoZSBncmlkLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRncmlkLWNvbHVtbnM6IDEyICFkZWZhdWx0O1xyXG5cclxuLy8vIFRoZSBhbW91bnQgb2YgbWFyZ2luIGJldHdlZW4gY2VsbHMgYXQgZGlmZmVyZW50IHNjcmVlbiBzaXplcyB3aGVuIHVzaW5nIHRoZSBtYXJnaW4gZ3JpZC4gVG8gdXNlIGp1c3Qgb25lIHNpemUsIHNldCB0aGUgdmFyaWFibGUgdG8gYSBudW1iZXIgaW5zdGVhZCBvZiBhIG1hcC5cclxuLy8vIEB0eXBlIE1hcCB8IExlbmd0aFxyXG4kZ3JpZC1tYXJnaW4tZ3V0dGVyczogKFxyXG4gIHNtYWxsOiAyMHB4LFxyXG4gIG1lZGl1bTogMzBweFxyXG4pICFkZWZhdWx0O1xyXG5cclxuLy8vIFRoZSBhbW91bnQgb2YgcGFkZGluZyBpbiBjZWxscyBhdCBkaWZmZXJlbnQgc2NyZWVuIHNpemVzIHdoZW4gdXNpbmcgdGhlIHBhZGRpbmcgZ3JpZC4gVG8gdXNlIGp1c3Qgb25lIHNpemUsIHNldCB0aGUgdmFyaWFibGUgdG8gYSBudW1iZXIgaW5zdGVhZCBvZiBhIG1hcC5cclxuLy8vIEB0eXBlIE1hcCB8IExlbmd0aFxyXG4kZ3JpZC1wYWRkaW5nLWd1dHRlcnM6ICRncmlkLW1hcmdpbi1ndXR0ZXJzICFkZWZhdWx0O1xyXG5cclxuLy8vIFRoZSBhbW91bnQgb2YgcGFkZGluZyB0byB1c2Ugd2hlbiBwYWRkaW5nIHRoZSBncmlkLWNvbnRhaW5lci5cclxuLy8vIEB0eXBlIE1hcCB8IExlbmd0aFxyXG4kZ3JpZC1jb250YWluZXItcGFkZGluZzogJGdyaWQtcGFkZGluZy1ndXR0ZXJzICFkZWZhdWx0O1xyXG5cclxuLy8vIFRoZSBtYXhpbXVtIHdpZHRoIHRvIGFwcGx5IHRvIGEgZ3JpZCBjb250YWluZXJcclxuLy8vIEB0eXBlIE51bWJlclxyXG4kZ3JpZC1jb250YWluZXItbWF4OiAkZ2xvYmFsLXdpZHRoICFkZWZhdWx0O1xyXG5cclxuLy8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjZWxscyBpbiBhbiBYWSBibG9jayBncmlkLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiR4eS1ibG9jay1ncmlkLW1heDogOCAhZGVmYXVsdDtcclxuXHJcbkBpbXBvcnQgJ2d1dHRlcnMnO1xyXG5AaW1wb3J0ICdncmlkJztcclxuQGltcG9ydCAnY2VsbCc7XHJcbkBpbXBvcnQgJ2ZyYW1lJztcclxuQGltcG9ydCAncG9zaXRpb24nO1xyXG5AaW1wb3J0ICdsYXlvdXQnO1xyXG5AaW1wb3J0ICdjb2xsYXBzZSc7XHJcbkBpbXBvcnQgJ2NsYXNzZXMnO1xyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgeHktZ3JpZFxyXG4vLy8vXHJcblxyXG4vLy8gQ3JlYXRlIGd1dHRlcnMgZm9yIGEgY2VsbC9jb250YWluZXIuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtbWFyZ2luLWd1dHRlcnNdIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSBmb3IgZ3V0dGVycy5cclxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGd1dHRlci10eXBlIFttYXJnaW5dIC0gVHlwZSBvZiBndXR0ZXIgdG8gb3V0cHV0LiBBY2NlcHRzIGVpdGhlciBtYXJnaW4gb3IgcGFkZGluZy5cclxuLy8vIEBwYXJhbSB7TGlzdH0gJGd1dHRlci1wb3NpdGlvbiBbcmlnaHQgbGVmdF0gLSBUaGUgcG9zaXRpb24gdG8gYXBwbHkgZ3V0dGVycyB0by4gQWNjZXB0cyBgdG9wYCwgYGJvdHRvbWAsIGBsZWZ0YCwgYHJpZ2h0YCBpbiBhbnkgY29tYmluYXRpb24uXHJcbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRuZWdhdGl2ZSBbZmFsc2VdIC0gV2hldGhlciB0byBhcHBseSB0aGUgZ3V0dGVyIGFzIGEgbmVnYXRpdmUgdmFsdWUuIENvbW1vbmx5IHVzZWQgZm9yIG5lc3RlZCBncmlkcy5cclxuQG1peGluIHh5LWd1dHRlcnMoXHJcbiAgJGd1dHRlcnM6ICRncmlkLW1hcmdpbi1ndXR0ZXJzLFxyXG4gICRndXR0ZXItdHlwZTogbWFyZ2luLFxyXG4gICRndXR0ZXItcG9zaXRpb246IHJpZ2h0IGxlZnQsXHJcbiAgJG5lZ2F0aXZlOiBmYWxzZVxyXG4pIHtcclxuICAkb3BlcmF0b3I6IGlmKCRuZWdhdGl2ZSwgJy0nLCAnJyk7XHJcblxyXG4gIC8vIElmIHdlIGhhdmUgZGVjbGFyZWQgbmVnYXRpdmUgZ3V0dGVycywgZm9yY2UgdHlwZSB0byBgbWFyZ2luLlxyXG4gICRndXR0ZXItdHlwZTogaWYoJG5lZ2F0aXZlLCAnbWFyZ2luJywgJGd1dHRlci10eXBlKTtcclxuXHJcbiAgLy8gT3V0cHV0IG91ciBtYXJnaW4gZ3V0dGVycy5cclxuICBAaWYgKHR5cGUtb2YoJGd1dHRlcnMpID09ICdtYXAnKSB7XHJcbiAgICBAaW5jbHVkZSAtemYtYnJlYWtwb2ludC12YWx1ZShhdXRvLCAkZ3V0dGVycykge1xyXG4gICAgICAkZ3V0dGVyOiByZW0tY2FsYygkLXpmLWJwLXZhbHVlKSAvIDI7XHJcblxyXG4gICAgICAvLyBMb29wIHRocm91Z2ggZWFjaCBndXR0ZXIgcG9zaXRpb25cclxuICAgICAgQGVhY2ggJHZhbHVlIGluICRndXR0ZXItcG9zaXRpb24ge1xyXG4gICAgICAgICN7JGd1dHRlci10eXBlfS0jeyR2YWx1ZX06ICN7JG9wZXJhdG9yfSRndXR0ZXI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgQGVsc2VpZiAodHlwZS1vZigkZ3V0dGVycykgPT0gJ251bWJlcicpIHtcclxuICAgICRndXR0ZXI6IHJlbS1jYWxjKCRndXR0ZXJzKSAvIDI7XHJcblxyXG4gICAgLy8gTG9vcCB0aHJvdWdoIGVhY2ggZ3V0dGVyIHBvc2l0aW9uXHJcbiAgICBAZWFjaCAkdmFsdWUgaW4gJGd1dHRlci1wb3NpdGlvbiB7XHJcbiAgICAgICN7JGd1dHRlci10eXBlfS0jeyR2YWx1ZX06ICN7JG9wZXJhdG9yfSRndXR0ZXI7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCB4eS1ncmlkXHJcbi8vLy9cclxuXHJcbi8vLyBDcmVhdGVzIGEgbWF4IHdpZHRoIGNvbnRhaW5lciwgZGVzaWduZWQgdG8gaG91c2UgeW91ciBncmlkIGNvbnRlbnQuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCBbJGdyaWQtY29udGFpbmVyXSAtIGEgd2lkdGggdG8gbGltaXQgdGhlIGNvbnRhaW5lciB0by5cclxuQG1peGluIHh5LWdyaWQtY29udGFpbmVyKFxyXG4gICR3aWR0aDogJGdyaWQtY29udGFpbmVyLFxyXG4gICRwYWRkaW5nOiAkZ3JpZC1jb250YWluZXItcGFkZGluZ1xyXG4pIHtcclxuICBAaW5jbHVkZSB4eS1ndXR0ZXJzKCRndXR0ZXJzOiAkcGFkZGluZywgJGd1dHRlci10eXBlOiBwYWRkaW5nKTtcclxuXHJcbiAgbWF4LXdpZHRoOiAkd2lkdGg7XHJcbiAgbWFyZ2luOiAwIGF1dG87XHJcbn1cclxuXHJcbi8vLyBDcmVhdGVzIGEgY29udGFpbmVyIGZvciB5b3VyIGZsZXggY2VsbHMuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZGlyZWN0aW9uIFtob3Jpem9udGFsXSAtIEVpdGhlciBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGRpcmVjdGlvbiBvZiBjZWxscyB3aXRoaW4uXHJcbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICR3cmFwIFt0cnVlXSAtIElmIHRoZSBjZWxscyB3aXRoaW4gc2hvdWxkIHdyYXAgb3Igbm90LlxyXG5AbWl4aW4geHktZ3JpZChcclxuICAkZGlyZWN0aW9uOiBob3Jpem9udGFsLFxyXG4gICR3cmFwOiB0cnVlXHJcbikge1xyXG4gICRkaXJlY3Rpb246IGlmKCRkaXJlY3Rpb24gPT0gJ2hvcml6b250YWwnLCByb3csIGNvbHVtbik7XHJcbiAgJHdyYXA6IGlmKCR3cmFwLCB3cmFwLCBub3dyYXApO1xyXG5cclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZmxvdzogJGRpcmVjdGlvbiAkd3JhcDtcclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgeHktZ3JpZFxyXG4vLy8vXHJcblxyXG4vLy8gQ2FsY3VsYXRlIHRoZSBwZXJjZW50YWdlIHNpemUgb2YgYSBjZWxsLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TnVtYmVyfExpc3R9ICRzaXplIFskZ3JpZC1jb2x1bW5zXSAtIFNpemUgdG8gbWFrZSB0aGUgY2VsbC4gWW91IGNhbiBwYXNzIGEgdmFsdWUgaW4gbXVsdGlwbGUgZm9ybWF0cywgc3VjaCBhcyBgNmAsIGA1MCVgLCBgMSBvZiAyIG9yIDEvMy5cclxuQGZ1bmN0aW9uIHh5LWNlbGwtc2l6ZShcclxuICAkc2l6ZTogJGdyaWQtY29sdW1uc1xyXG4pIHtcclxuICAvLyBQYXJzaW5nIHBlcmNlbnRzLCBkZWNpbWFscywgbiBvZiBuIGFuZCBudW1iZXIgY291bnRzXHJcbiAgQGlmIHR5cGUtb2YoJHNpemUpID09ICdudW1iZXInIHtcclxuICAgIEBpZiB1bml0KCRzaXplKSA9PSAnJScge1xyXG4gICAgICAkc2l6ZTogJHNpemU7XHJcbiAgICB9XHJcbiAgICBAZWxzZSBpZiAkc2l6ZSA8IDEge1xyXG4gICAgICAkc2l6ZTogcGVyY2VudGFnZSgkc2l6ZSk7XHJcbiAgICB9XHJcbiAgICBAZWxzZSB7XHJcbiAgICAgICRzaXplOiBwZXJjZW50YWdlKCRzaXplIC8gJGdyaWQtY29sdW1ucyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBQYXJzaW5nIFwibiBvZiBuXCIgb3IgXCJuL25cIiBleHByZXNzaW9uc1xyXG4gIEBlbHNlaWYgdHlwZS1vZigkc2l6ZSkgPT0gJ2xpc3QnIHtcclxuICAgIEBpZiBsZW5ndGgoJHNpemUpICE9IDMge1xyXG4gICAgICBAZXJyb3IgJ1dyb25nIHN5bnRheCBmb3IgeHktY2VsbC1zaXplKCkuIFVzZSB0aGUgZm9ybWF0IFwibiBvZiBuXCIgb3IgXCJuL25cIi4nO1xyXG4gICAgfVxyXG4gICAgQGVsc2Uge1xyXG4gICAgICAkc2l6ZTogcGVyY2VudGFnZShudGgoJHNpemUsIDEpIC8gbnRoKCRzaXplLCAzKSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIEFueXRoaW5nIGVsc2UgaXMgaW5jb3JyZWN0XHJcbiAgQGVsc2Uge1xyXG4gICAgQGVycm9yICdXcm9uZyBzeW50YXggZm9yIHh5LWNlbGwtc2l6ZSgpLiBVc2UgYSBudW1iZXIsIGRlY2ltYWwsIHBlcmNlbnRhZ2UsIG9yIFwibiBvZiBuXCIgLyBcIm4vblwiLic7XHJcbiAgfVxyXG5cclxuICBAcmV0dXJuICRzaXplO1xyXG59XHJcblxyXG4vLy8gU2V0cyBiYXNlIGZsZXggcHJvcGVydGllcyBmb3IgY2VsbHMuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc2l6ZSBbZnVsbF0gLSBUaGUgc2l6ZSBvZiB5b3VyIGNlbGwuIEFjY2VwdHMgYGZ1bGxgLCBgYXV0b2Agb3IgYHNocmlua2AuXHJcbkBtaXhpbiB4eS1jZWxsLWJhc2UoJHNpemU6IGZ1bGwpIHtcclxuICBAaWYoJHNpemUgPT0gJ2Z1bGwnKSB7XHJcbiAgICAvLyBUaGlzIGlzIHRoZSBiYXNlIHN0eWxlLCBhbGwgb3RoZXJzIGluaGVyaXQgZnJvbSBpdFxyXG4gICAgZmxleDogMCAwIGF1dG87XHJcbiAgICBtaW4taGVpZ2h0OiAwcHg7XHJcbiAgICBtaW4td2lkdGg6IDBweDtcclxuICB9XHJcbiAgQGVsc2VpZiAoJHNpemUgPT0gJ2F1dG8nKSB7XHJcbiAgICBmbGV4OiAxIDEgMHB4OyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIHplcm8tdW5pdFxyXG4gIH1cclxuICBAZWxzZWlmICgkc2l6ZSA9PSAnc2hyaW5rJykge1xyXG4gICAgZmxleDogMCAwIGF1dG87XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gUmVzZXRzIGEgY2VsbHMgd2lkdGggKG9yIGhlaWdodCBpZiB2ZXJ0aWNhbCBpcyB0cnVlKSBhcyB3ZWxsIGFzIHN0cmlwcyBpdHMgZ3V0dGVycy5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICR2ZXJ0aWNhbCBbZmFsc2VdIC0gU2V0IHRvIHRydWUgdG8gb3V0cHV0IHZlcnRpY2FsIChoZWlnaHQpIHN0eWxlcyByYXRoZXIgdGhhbiB3aWR0aHMuXHJcbkBtaXhpbiB4eS1jZWxsLXJlc2V0KCR2ZXJ0aWNhbDogdHJ1ZSkge1xyXG4gICRkaXJlY3Rpb246IGlmKCR2ZXJ0aWNhbCA9PSB0cnVlLCB3aWR0aCwgaGVpZ2h0KTtcclxuICAjeyRkaXJlY3Rpb259OiBhdXRvO1xyXG59XHJcblxyXG4vLyBTZXRzIG91ciBjZWxsIHdpZHRocyBvciBoZWlnaHRzIGRlcGVuZGluZyBvbiBndXR0ZXIgdHlwZS5cclxuQG1peGluIC14eS1jZWxsLXByb3BlcnRpZXMoJHNpemUsICRtYXJnaW4tZ3V0dGVyLCAkdmVydGljYWwpIHtcclxuICAkZGlyZWN0aW9uOiBpZigkdmVydGljYWwgPT0gdHJ1ZSwgaGVpZ2h0LCB3aWR0aCk7XHJcbiAgQGlmKCRzaXplID09ICdmdWxsJykge1xyXG4gICAgJHZhbDogaWYoJG1hcmdpbi1ndXR0ZXIgPT0gMCwgMTAwJSwgY2FsYygxMDAlIC0gI3tyZW0tY2FsYygkbWFyZ2luLWd1dHRlcil9KSk7XHJcbiAgICAjeyRkaXJlY3Rpb259OiAkdmFsO1xyXG4gIH1cclxuICBAZWxzZWlmICgkc2l6ZSA9PSAnYXV0bycpIHtcclxuICAgICN7JGRpcmVjdGlvbn06IGF1dG87XHJcbiAgICAkdmFsOiBpZigkbWFyZ2luLWd1dHRlciA9PSAwLCAxMDAlLCBjYWxjKDEwMCUgLSAje3JlbS1jYWxjKCRtYXJnaW4tZ3V0dGVyKX0pKTtcclxuICB9XHJcbiAgQGVsc2VpZiAoJHNpemUgPT0gJ3NocmluaycpIHtcclxuICAgICN7JGRpcmVjdGlvbn06IGF1dG87XHJcbiAgfVxyXG4gIEBlbHNlIHtcclxuICAgICR2YWw6IGlmKCRtYXJnaW4tZ3V0dGVyID09IDAsICN7eHktY2VsbC1zaXplKCRzaXplKX0sIGNhbGMoI3t4eS1jZWxsLXNpemUoJHNpemUpfSAtICN7cmVtLWNhbGMoJG1hcmdpbi1ndXR0ZXIpfSkpO1xyXG4gICAgI3skZGlyZWN0aW9ufTogJHZhbDtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBDcmVhdGVzIGEgY2VsbCBmb3IgeW91ciBncmlkLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICRzaXplIFtmdWxsXSAtIFRoZSBzaXplIG9mIHlvdXIgY2VsbC4gQ2FuIGJlIGBmdWxsYCAoZGVmYXVsdCkgZm9yIDEwMCUgd2lkdGgsIGBhdXRvYCB0byB1c2UgdXAgYXZhaWxhYmxlIHNwYWNlIGFuZCBgc2hyaW5rYCB0byB1c2UgdXAgb25seSByZXF1aXJlZCBzcGFjZS5cclxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGd1dHRlci1vdXRwdXQgW3RydWVdIC0gV2hldGhlciBvciBub3QgdG8gb3V0cHV0IGd1dHRlcnNcclxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLW1hcmdpbi1ndXR0ZXJzXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgZm9yIGd1dHRlcnMuXHJcbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRndXR0ZXItdHlwZSBbbWFyZ2luXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgZm9yIGd1dHRlcnMuXHJcbi8vLyBAcGFyYW0ge0xpc3R9ICRndXR0ZXItcG9zaXRpb24gW3JpZ2h0IGxlZnRdIC0gVGhlIHBvc2l0aW9uIHRvIGFwcGx5IGd1dHRlcnMgdG8uIEFjY2VwdHMgYHRvcGAsIGBib3R0b21gLCBgbGVmdGAsIGByaWdodGAgaW4gYW55IGNvbWJpbmF0aW9uLlxyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW50IFtudWxsXSAtIFRoZSBuYW1lIG9mIHRoZSBicmVha3BvaW50IHNpemUgaW4geW91ciBndXR0ZXJzIG1hcCB0byBnZXQgdGhlIHNpemUgZnJvbS4gSWYgdXNpbmcgd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdGhpcyB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IHVubGVzcyBtYW51YWxseSBlbnRlcmVkLlxyXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkdmVydGljYWwgW2ZhbHNlXSAtIFNldCB0byB0cnVlIHRvIG91dHB1dCB2ZXJ0aWNhbCAoaGVpZ2h0KSBzdHlsZXMgcmF0aGVyIHRoYW4gd2lkdGhzLlxyXG5AbWl4aW4geHktY2VsbChcclxuICAkc2l6ZTogZnVsbCxcclxuICAkZ3V0dGVyLW91dHB1dDogdHJ1ZSxcclxuICAkZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnMsXHJcbiAgJGd1dHRlci10eXBlOiBtYXJnaW4sXHJcbiAgJGd1dHRlci1wb3NpdGlvbjogcmlnaHQgbGVmdCxcclxuICAkYnJlYWtwb2ludDogbnVsbCxcclxuICAkdmVydGljYWw6IGZhbHNlXHJcbikge1xyXG4gIEBpZigkYnJlYWtwb2ludCA9PSBudWxsKSB7XHJcbiAgICAvLyBJZiBgJGJwLXNpemVgIGlzIGF2YWlsYWJsZSB0aGVuIHVzZSB0aGlzLCBvdGhlcndpc2UgcmV2ZXJ0IHRvIHRoZSBzbWFsbGVzdCBicC5cclxuICAgIEBpZih2YXJpYWJsZS1leGlzdHMoLXpmLXNpemUpIGFuZCB0eXBlLW9mKCQtemYtc2l6ZSkgIT0gJ251bWJlcicpIGFuZCAkLXpmLXNpemUgIT0gbnVsbCB7XHJcbiAgICAgICRicmVha3BvaW50OiAkLXpmLXNpemU7XHJcbiAgICB9XHJcbiAgICBAZWxzZSB7XHJcbiAgICAgICRicmVha3BvaW50OiAkLXpmLXplcm8tYnJlYWtwb2ludDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIEdldCBvdXIgZ3V0dGVycyBmcm9tIG1hcCBpZiBhdmFpbGFibGUsIGlmIG5vdCBtYXAganVzdCByZXR1cm4gdGhlIHZhbHVlLlxyXG4gICRndXR0ZXI6IC16Zi1nZXQtYnAtdmFsKCRndXR0ZXJzLCAkYnJlYWtwb2ludCk7XHJcblxyXG4gIC8vIEJhc2UgZmxleCBwcm9wZXJ0aWVzXHJcbiAgQGluY2x1ZGUgeHktY2VsbC1iYXNlKCRzaXplKTtcclxuXHJcbiAgQGlmKCRndXR0ZXItdHlwZSA9PSAnbWFyZ2luJykge1xyXG4gICAgQGluY2x1ZGUgLXh5LWNlbGwtcHJvcGVydGllcygkc2l6ZSwgJGd1dHRlciwgJHZlcnRpY2FsKTtcclxuICB9XHJcbiAgQGVsc2Uge1xyXG4gICAgQGluY2x1ZGUgLXh5LWNlbGwtcHJvcGVydGllcygkc2l6ZSwgMCwgJHZlcnRpY2FsKTtcclxuICB9XHJcblxyXG4gIEBpZiAkZ3V0dGVyLW91dHB1dCB7XHJcbiAgICBAaW5jbHVkZSB4eS1ndXR0ZXJzKCRndXR0ZXIsICRndXR0ZXItdHlwZSwgJGd1dHRlci1wb3NpdGlvbik7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gQ3JlYXRlcyBhIHNpbmdsZSBicmVha3BvaW50IHNpemVkIGdyaWQuIFVzZWQgdG8gZ2VuZXJhdGUgb3VyIGdyaWQgY2xhc3Nlcy5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0tleXdvcmR8TnVtYmVyfSAkc2l6ZSBbZnVsbF0gLSBUaGUgc2l6ZSBvZiB5b3VyIGNlbGwuIENhbiBiZSBgZnVsbGAgKGRlZmF1bHQpIGZvciAxMDAlIHdpZHRoLCBgYXV0b2AgdG8gdXNlIHVwIGF2YWlsYWJsZSBzcGFjZSBhbmQgYHNocmlua2AgdG8gdXNlIHVwIG9ubHkgcmVxdWlyZWQgc3BhY2UuXHJcbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRndXR0ZXItb3V0cHV0IFt0cnVlXSAtIFdoZXRoZXIgb3Igbm90IHRvIG91dHB1dCBndXR0ZXJzXHJcbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1tYXJnaW4tZ3V0dGVyc10gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIGZvciBndXR0ZXJzLlxyXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZ3V0dGVyLXR5cGUgW21hcmdpbl0gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIGZvciBndXR0ZXJzLlxyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW50IFtudWxsXSAtIFRoZSBuYW1lIG9mIHRoZSBicmVha3BvaW50IHNpemUgaW4geW91ciBndXR0ZXJzIG1hcCB0byBnZXQgdGhlIHNpemUgZnJvbS4gSWYgdXNpbmcgd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdGhpcyB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IHVubGVzcyBtYW51YWxseSBlbnRlcmVkLlxyXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkdmVydGljYWwgW2ZhbHNlXSAtIFNldCB0byB0cnVlIHRvIG91dHB1dCB2ZXJ0aWNhbCAoaGVpZ2h0KSBzdHlsZXMgcmF0aGVyIHRoYW4gd2lkdGhzLlxyXG5AbWl4aW4geHktY2VsbC1zdGF0aWMoXHJcbiAgJHNpemU6IGZ1bGwsXHJcbiAgJGd1dHRlci1vdXRwdXQ6IHRydWUsXHJcbiAgJGd1dHRlcnM6ICRncmlkLW1hcmdpbi1ndXR0ZXJzLFxyXG4gICRndXR0ZXItdHlwZTogbWFyZ2luLFxyXG4gICRicmVha3BvaW50OiAkLXpmLXplcm8tYnJlYWtwb2ludCxcclxuICAkdmVydGljYWw6IGZhbHNlXHJcbikge1xyXG5cclxuICAkZ3V0dGVyOiAtemYtZ2V0LWJwLXZhbCgkZ3V0dGVycywgJGJyZWFrcG9pbnQpO1xyXG4gICRndXR0ZXItcG9zaXRpb246IGlmKCR2ZXJ0aWNhbCA9PSB0cnVlLCB0b3AgYm90dG9tLCBsZWZ0IHJpZ2h0KTtcclxuXHJcbiAgQGlmKCRndXR0ZXItdHlwZSA9PSAnbWFyZ2luJykge1xyXG4gICAgQGluY2x1ZGUgLXh5LWNlbGwtcHJvcGVydGllcygkc2l6ZSwgJGd1dHRlciwgJHZlcnRpY2FsKTtcclxuICB9XHJcbiAgQGVsc2Uge1xyXG4gICAgQGluY2x1ZGUgLXh5LWNlbGwtcHJvcGVydGllcygkc2l6ZSwgMCwgJHZlcnRpY2FsKTtcclxuICB9XHJcblxyXG4gIC8vIElmIHdlIHdhbnQgdG8gb3V0cHV0IHRoZSBndXR0ZXJzXHJcbiAgQGlmKCRndXR0ZXItb3V0cHV0KSB7XHJcbiAgICAvLyBUT0RPOiBGaWd1cmUgb3V0IGlmIHdlIG5lZWQgdG8gcGFzcyBicmVha3BvaW50IGluIGhlcmUgdG9vLlxyXG4gICAgQGluY2x1ZGUgeHktZ3V0dGVycygkZ3V0dGVyLCAkZ3V0dGVyLXR5cGUsICRndXR0ZXItcG9zaXRpb24pO1xyXG4gIH1cclxufVxyXG4iLCIvLy8gTW9kaWZpZXMgYSBncmlkIHRvIGdpdmUgaXQgXCJmcmFtZVwiIGJlaGF2aW9yIChubyBvdmVyZmxvdywgbm8gd3JhcCwgc3RyZXRjaCBiZWhhdmlvcilcclxuLy8vXHJcbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICR2ZXJ0aWNhbCBbZmFsc2VdIC0gSXMgZ3JpZCB2ZXJ0aWNhbCBvciBob3Jpem9udGFsLiBTaG91bGQgbWF0Y2ggZ3JpZC5cclxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJG5lc3RlZCBbZmFsc2VdIC0gSXMgZ3JpZCBuZXN0ZWQgb3Igbm90LiBJZiBuZXN0ZWQgaXMgdHJ1ZSB0aGlzIHNldHMgdGhlIGZyYW1lIHRvIDEwMCUgaGVpZ2h0LCBvdGhlcndpc2Ugd2lsbCBiZSAxMDB2aC5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgW251bGxdIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSBmb3IgZ3V0dGVycy5cclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkYnJlYWtwb2ludCBbbnVsbF0gLSBUaGUgbmFtZSBvZiB0aGUgYnJlYWtwb2ludCBzaXplIGluIHlvdXIgZ3V0dGVycyBtYXAgdG8gZ2V0IHRoZSBzaXplIGZyb20uXHJcbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRpbmNsdWRlLWJhc2UgW3RydWVdIC0gSW5jbHVkZSB0aGUgYmFzZSBzdHlsZXMgdGhhdCBkb24ndCB2YXJ5IHBlciBicmVha3BvaW50LlxyXG5AbWl4aW4geHktZ3JpZC1mcmFtZShcclxuICAkdmVydGljYWw6IGZhbHNlLFxyXG4gICRuZXN0ZWQ6IGZhbHNlLFxyXG4gICRndXR0ZXJzOiBudWxsLFxyXG4gICRicmVha3BvaW50OiBudWxsLFxyXG4gICRpbmNsdWRlLWJhc2U6IHRydWVcclxuKSB7XHJcblxyXG4gIEBpZiAkaW5jbHVkZS1iYXNlIHtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcclxuICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xyXG4gIH1cclxuXHJcbiAgQGlmICRicmVha3BvaW50ID09IG51bGwgYW5kIHR5cGUtb2YoJGd1dHRlcnMpID09ICdtYXAnIHtcclxuICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoKSB7XHJcbiAgICAgIEBpbmNsdWRlIHh5LWdyaWQtZnJhbWUoJHZlcnRpY2FsLCAkbmVzdGVkLCAkZ3V0dGVycywgJC16Zi1zaXplLCBmYWxzZSk7XHJcbiAgICB9XHJcbiAgfSBAZWxzZSB7XHJcbiAgICAvLyBHZXQgb3VyIGd1dHRlcnMgaWYgYXBwbGljYWJsZVxyXG4gICAgJGd1dHRlcjogLXpmLWdldC1icC12YWwoJGd1dHRlcnMsICRicmVha3BvaW50KTtcclxuXHJcbiAgICAvLyBJZiB3ZSBoYXZlIGEgZ3V0dGVyLCBhZGQgaXQgdG8gdGhlIHdpZHRoL2hlaWdodFxyXG4gICAgQGlmICRndXR0ZXIge1xyXG4gICAgICBAaWYgJHZlcnRpY2FsID09IHRydWUge1xyXG4gICAgICAgICR1bml0OiBpZigkbmVzdGVkID09IHRydWUsIDEwMCUsIDEwMHZoKTtcclxuICAgICAgICAkZ3V0dGVyOiByZW0tY2FsYygkZ3V0dGVyKTtcclxuICAgICAgICBoZWlnaHQ6IGNhbGMoI3skdW5pdH0gKyAjeyRndXR0ZXJ9KTtcclxuICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgJHVuaXQ6IGlmKCRuZXN0ZWQgPT0gdHJ1ZSwgMTAwJSwgMTAwdncpO1xyXG4gICAgICAgICRndXR0ZXI6IHJlbS1jYWxjKCRndXR0ZXIpO1xyXG4gICAgICAgIHdpZHRoOiBjYWxjKCN7JHVuaXR9ICsgI3skZ3V0dGVyfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIEBlbHNlIHtcclxuICAgICAgQGlmICR2ZXJ0aWNhbCA9PSB0cnVlIHtcclxuICAgICAgICBoZWlnaHQ6IGlmKCRuZXN0ZWQgPT0gdHJ1ZSwgMTAwJSwgMTAwdmgpO1xyXG4gICAgICB9IEBlbHNlIHtcclxuICAgICAgICB3aWR0aDogaWYoJG5lc3RlZCA9PSB0cnVlLCAxMDAlLCAxMDB2dyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vLyBNb2RpZmllcyBhIGNlbGwgdG8gZ2l2ZSBpdCBcImJsb2NrXCIgYmVoYXZpb3IgKG92ZXJmbG93IGF1dG8sIGluZXJ0aWFsIHNjcm9sbGluZylcclxuLy8vXHJcbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICR2ZXJ0aWNhbCBbZmFsc2VdIC0gSXMgZ3JpZCB2ZXJ0aWNhbCBvciBob3Jpem9udGFsLiBTaG91bGQgbWF0Y2ggZ3JpZC5cclxuQG1peGluIHh5LWNlbGwtYmxvY2soXHJcbiAgJHZlcnRpY2FsOiBmYWxzZVxyXG4pIHtcclxuICAkcHJvcGVydHk6IGlmKCR2ZXJ0aWNhbCA9PSB0cnVlLCAnb3ZlcmZsb3cteScsICdvdmVyZmxvdy14Jyk7XHJcblxyXG4gIEBpZiAkdmVydGljYWwgPT0gdHJ1ZSB7XHJcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xyXG4gICAgbWF4LWhlaWdodDogMTAwJTtcclxuICB9IEBlbHNlIHtcclxuICAgIG92ZXJmbG93LXg6IGF1dG87XHJcbiAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgfVxyXG5cclxuICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XHJcbiAgLW1zLW92ZXJmbG93LXN0eXBlOiAtbXMtYXV0b2hpZGluZy1zY3JvbGxiYXI7XHJcbn1cclxuXHJcbi8vLyBDb250YWluZXIgZm9yIGluc2lkZSBhIGdyaWQgZnJhbWUgY29udGFpbmluZyBtdWx0aXBsZSBibG9ja3MuIFR5cGljYWxseSB1c2VkXHJcbi8vLyBhcyBhIG1vZGlmaWVyIGZvciBhIGAuY2VsbGAgdG8gYWxsb3cgdGhlIGNlbGwgdG8gcGFzcyBhbG9uZyBmbGV4IHNpemluZ1xyXG4vLy8gY29uc3RyYWludHMgLyBmcm9tIHBhcmVudHMgdG8gY2hpbGRyZW4uXHJcbkBtaXhpbiB4eS1jZWxsLWJsb2NrLWNvbnRhaW5lcigpIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgbWF4LWhlaWdodDogMTAwJTtcclxuXHJcbiAgPiAuZ3JpZC14IHtcclxuICAgIG1heC1oZWlnaHQ6IDEwMCU7XHJcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIHh5LWdyaWRcclxuLy8vL1xyXG5cclxuLy8vIE9mZnNldHMgYSBjb2x1bW4gdG8gdGhlIHJpZ2h0L2JvdHRvbSBieSBgJG5gIGNvbHVtbnMuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TGlzdH0gJG4gLSBTaXplIHRvIG9mZnNldCBieS4gWW91IGNhbiBwYXNzIGluIGFueSB2YWx1ZSBhY2NlcHRlZCBieSB0aGUgYHpmLWNlbGwoKWAgbWl4aW4sIHN1Y2ggYXMgYDZgLCBgNTAlYCwgb3IgYDEgb2YgMmAuXHJcbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICR2ZXJ0aWNhbCBbZmFsc2VdIFNldHMgdGhlIGRpcmVjdGlvbiBvZiB0aGUgb2Zmc2V0LiBJZiBzZXQgdG8gdHJ1ZSB3aWxsIGFwcGx5IG1hcmdpbi10b3AgaW5zdGVhZC5cclxuQG1peGluIHh5LWNlbGwtb2Zmc2V0KFxyXG4gJG4sXHJcbiAkZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnMsXHJcbiAkZ3V0dGVyLXR5cGU6IG1hcmdpbixcclxuICRicmVha3BvaW50OiAkLXpmLXplcm8tYnJlYWtwb2ludCxcclxuICR2ZXJ0aWNhbDogZmFsc2VcclxuKSB7XHJcbiAgJGRpcmVjdGlvbjogaWYoJHZlcnRpY2FsLCAndG9wJywgJGdsb2JhbC1sZWZ0KTtcclxuXHJcbiAgQGluY2x1ZGUgLXpmLWJyZWFrcG9pbnQtdmFsdWUoJGJyZWFrcG9pbnQsICRndXR0ZXJzKSB7XHJcbiAgICAkZ3V0dGVyOiByZW0tY2FsYygkLXpmLWJwLXZhbHVlKSAvIDI7XHJcbiAgICAkc2l6ZTogaWYoJGd1dHRlci10eXBlID09ICdtYXJnaW4nLCBjYWxjKCN7eHktY2VsbC1zaXplKCRuKX0gKyAjeyRndXR0ZXJ9KSwgI3t4eS1jZWxsLXNpemUoJG4pfSk7XHJcblxyXG4gICAgbWFyZ2luLSN7JGRpcmVjdGlvbn06ICN7JHNpemV9O1xyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgeHktZ3JpZFxyXG4vLy8vXHJcblxyXG4vLy8gU2l6ZXMgY2hpbGQgZWxlbWVudHMgc28gdGhhdCBgJG5gIG51bWJlciBvZiBpdGVtcyBhcHBlYXIgb24gZWFjaCByb3cuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRuIC0gTnVtYmVyIG9mIGVsZW1lbnRzIHRvIGRpc3BsYXkgcGVyIHJvdy5cclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc2VsZWN0b3IgWycuY2VsbCddIC0gU2VsZWN0b3IocykgdG8gdXNlIGZvciBjaGlsZCBlbGVtZW50cy5cclxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGd1dHRlci1vdXRwdXQgW3RydWVdIC0gV2hldGhlciBvciBub3QgdG8gb3V0cHV0IGd1dHRlcnNcclxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLW1hcmdpbi1ndXR0ZXJzXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgZm9yIGd1dHRlcnMuXHJcbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRndXR0ZXItdHlwZSBbbWFyZ2luXSAtIFR5cGUgb2YgZ3V0dGVyIHRvIG91dHB1dC4gQWNjZXB0cyBgbWFyZ2luYCBvciBgcGFkZGluZ2AuXHJcbi8vLyBAcGFyYW0ge0xpc3R9ICRndXR0ZXItcG9zaXRpb24gW3JpZ2h0IGxlZnRdIC0gVGhlIHBvc2l0aW9uIHRvIGFwcGx5IGd1dHRlcnMgdG8uIEFjY2VwdHMgYHRvcGAsIGBib3R0b21gLCBgbGVmdGAsIGByaWdodGAgaW4gYW55IGNvbWJpbmF0aW9uLlxyXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkdmVydGljYWwgW2ZhbHNlXSAtIFNldCB0byB0cnVlIHRvIG91dHB1dCB2ZXJ0aWNhbCAoaGVpZ2h0KSBzdHlsZXMgcmF0aGVyIHRoYW4gd2lkdGhzLlxyXG5AbWl4aW4geHktZ3JpZC1sYXlvdXQoXHJcbiAgJG4sXHJcbiAgJHNlbGVjdG9yOiAnLmNlbGwnLFxyXG4gICRndXR0ZXItb3V0cHV0OiB0cnVlLFxyXG4gICRndXR0ZXJzOiAkZ3JpZC1tYXJnaW4tZ3V0dGVycyxcclxuICAkZ3V0dGVyLXR5cGU6IG1hcmdpbixcclxuICAkZ3V0dGVyLXBvc2l0aW9uOiByaWdodCBsZWZ0LFxyXG4gICRicmVha3BvaW50OiAkLXpmLXplcm8tYnJlYWtwb2ludCxcclxuICAkdmVydGljYWw6IGZhbHNlXHJcbikge1xyXG4gICRzaXplOiBwZXJjZW50YWdlKDEvJG4pO1xyXG5cclxuICAmID4gI3skc2VsZWN0b3J9IHtcclxuICAgIEBpbmNsdWRlIHh5LWNlbGwoJHNpemUsICRndXR0ZXItb3V0cHV0LCAkZ3V0dGVycywgJGd1dHRlci10eXBlLCAkZ3V0dGVyLXBvc2l0aW9uLCAkYnJlYWtwb2ludCwgJHZlcnRpY2FsKTtcclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIHh5LWdyaWRcclxuLy8vL1xyXG5cclxuLy8vIENvbGxhcHNlcyB0aGUgZ3JpZCBhIGNlbGxzIHdpdGhpbiBpdC5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlbGVjdG9yIFsuY2VsbF0gLSBUaGUgY2hpbGQgZWxlbWVudCB0byByZW1vdmUgdGhlIGd1dHRlciBmcm9tLlxyXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZ3V0dGVyLXR5cGUgW21hcmdpbl0gLSBUaGUgdHlwZSBvZiBndXR0ZXIgdG8gcmVtb3ZlLlxyXG4vLy8gQHBhcmFtIHtMaXN0fSAkZ3V0dGVyLXBvc2l0aW9uIFtyaWdodCBsZWZ0XSAtIFRoZSBwb3NpdGlvbnMgdG8gcmVtb3ZlIGd1dHRlcnMgZnJvbS4gQWNjZXB0cyBgdG9wYCwgYGJvdHRvbWAsIGBsZWZ0YCwgYHJpZ2h0YCBpbiBhbnkgY29tYmluYXRpb24uXHJcbkBtaXhpbiB4eS1ncmlkLWNvbGxhcHNlKFxyXG4gICRzZWxlY3RvcjogJy5jZWxsJyxcclxuICAkZ3V0dGVyLXR5cGU6IG1hcmdpbixcclxuICAkZ3V0dGVyLXBvc2l0aW9uOiByaWdodCBsZWZ0LFxyXG4gICRtaW4tYnJlYWtwb2ludDogJC16Zi16ZXJvLWJyZWFrcG9pbnRcclxuKSB7XHJcbiAgLy8gRmlyc3QsIGxldHMgbmVnYXRlIGFueSBtYXJnaW5zIG9uIHRoZSB0b3AgbGV2ZWxcclxuICBAaWYgKCRndXR0ZXItdHlwZSA9PSAnbWFyZ2luJykge1xyXG5cclxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1pbi1icmVha3BvaW50KSB7XHJcbiAgICAgIEBlYWNoICR2YWx1ZSBpbiAkZ3V0dGVyLXBvc2l0aW9uIHtcclxuICAgICAgICBtYXJnaW4tI3skdmFsdWV9OiAwO1xyXG4gICAgICB9XHJcblxyXG4gICAgICA+ICN7JHNlbGVjdG9yfSB7XHJcbiAgICAgICAgQGVhY2ggJHZhbHVlIGluICRndXR0ZXItcG9zaXRpb24ge1xyXG4gICAgICAgICAgbWFyZ2luLSN7JHZhbHVlfTogMDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAkZXhjbHVkZWQtYnBzOiAtemYtYnJlYWtwb2ludHMtbGVzcy10aGFuKCRtaW4tYnJlYWtwb2ludCk7XHJcblxyXG4gICAgLy8gT3V0cHV0IG5ldyB3aWR0aHMgdG8gbm90IGluY2x1ZGUgZ3V0dGVyc1xyXG4gICAgQGVhY2ggJGJwIGluICRicmVha3BvaW50LWNsYXNzZXMge1xyXG4gICAgICBAaWYoc2wtY29udGFpbigkZXhjbHVkZWQtYnBzLCAkYnApKSB7XHJcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbWluLWJyZWFrcG9pbnQpIHtcclxuICAgICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1ucyB7XHJcbiAgICAgICAgICAgIC8vIFNpemluZyAocGVyY2VudGFnZSlcclxuICAgICAgICAgICAgPiAuI3skYnB9LSN7JGl9IHtcclxuICAgICAgICAgICAgICBAaW5jbHVkZSB4eS1jZWxsLXN0YXRpYygkaSwgJGd1dHRlci1vdXRwdXQ6IGZhbHNlLCAkZ3V0dGVyLXR5cGU6IHBhZGRpbmcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IEBlbHNlIHtcclxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRicCkge1xyXG4gICAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2x1bW5zIHtcclxuICAgICAgICAgICAgLy8gU2l6aW5nIChwZXJjZW50YWdlKVxyXG4gICAgICAgICAgICA+IC4jeyRicH0tI3skaX0ge1xyXG4gICAgICAgICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc3RhdGljKCRpLCAkZ3V0dGVyLW91dHB1dDogZmFsc2UsICRndXR0ZXItdHlwZTogcGFkZGluZyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gXHJcbiAgICB9XHJcbiAgfVxyXG4gIEBlbHNlIHtcclxuXHJcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtaW4tYnJlYWtwb2ludCkge1xyXG4gICAgICBAZWFjaCAkdmFsdWUgaW4gJGd1dHRlci1wb3NpdGlvbiB7XHJcbiAgICAgICAgbWFyZ2luLSN7JHZhbHVlfTogMDtcclxuICAgICAgfVxyXG5cclxuICAgICAgPiAjeyRzZWxlY3Rvcn0ge1xyXG4gICAgICAgIEBlYWNoICR2YWx1ZSBpbiAkZ3V0dGVyLXBvc2l0aW9uIHtcclxuICAgICAgICAgIHBhZGRpbmctI3skdmFsdWV9OiAwO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgeHktZ3JpZFxyXG4vLy8vXHJcblxyXG4vLyBNYXJnaW4gR3JpZCBjbGFzc2VzXHJcbkBtaXhpbiB4eS1iYXNlLWdyaWQtY2xhc3NlcyB7XHJcblxyXG4gIC8vIEdyaWQgQ29udGFpbmVyXHJcbiAgLmdyaWQtY29udGFpbmVyIHtcclxuICAgIEBpbmNsdWRlIHh5LWdyaWQtY29udGFpbmVyO1xyXG5cclxuICAgICYuZmx1aWQge1xyXG4gICAgICBAaW5jbHVkZSB4eS1ncmlkLWNvbnRhaW5lcigxMDAlKTtcclxuICAgIH1cclxuXHJcbiAgICAmLmZ1bGwge1xyXG4gICAgICBAaW5jbHVkZSB4eS1ncmlkLWNvbnRhaW5lcigxMDAlLCAwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIEJhc2UgZ3JpZCBzdHlsZXNcclxuICAuZ3JpZC14IHtcclxuICAgIEBpbmNsdWRlIHh5LWdyaWQ7XHJcbiAgfVxyXG5cclxuICAuY2VsbCB7XHJcbiAgICBAaW5jbHVkZSB4eS1jZWxsLWJhc2UoKTtcclxuICAgIEBpbmNsdWRlIHh5LWNlbGwtc3RhdGljKCRncmlkLWNvbHVtbnMsIGZhbHNlLCAkZ3V0dGVyLXR5cGU6IHBhZGRpbmcpO1xyXG5cclxuICAgICYuYXV0byB7XHJcbiAgICAgIEBpbmNsdWRlIHh5LWNlbGwtYmFzZShhdXRvKTtcclxuICAgIH1cclxuXHJcbiAgICAmLnNocmluayB7XHJcbiAgICAgIEBpbmNsdWRlIHh5LWNlbGwtYmFzZShzaHJpbmspO1xyXG4gICAgfVxyXG5cclxuICB9XHJcbiAgLmdyaWQteCB7XHJcbiAgICA+IC5hdXRvIHtcclxuICAgICAgQGluY2x1ZGUgeHktY2VsbC1zdGF0aWMoYXV0bywgZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgID4gLnNocmluayB7XHJcbiAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc3RhdGljKHNocmluaywgZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gQXV0byB3aWR0aFxyXG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoKSB7XHJcbiAgICAvLyBUaGlzIGlzIGEgYml0IG9mIGEgaGFjay93b3JrYXJvdW5kLCBzZWUgdGhlc2UgaXNzdWVzICYgUFJzIGZvciB0aGUgYmFja3N0b3J5OlxyXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3p1cmIvZm91bmRhdGlvbi1zaXRlcy9pc3N1ZXMvMTAyNDRcclxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96dXJiL2ZvdW5kYXRpb24tc2l0ZXMvcHVsbC8xMDIyMiBhbmRcclxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96dXJiL2ZvdW5kYXRpb24tc2l0ZXMvcHVsbC8xMDE2NFxyXG4gICAgLmdyaWQteCB7XHJcbiAgICAgICRzdHI6IFwiPiAuI3skLXpmLXNpemV9LXNocmluaywgPiAuI3skLXpmLXNpemV9LWZ1bGxcIjtcclxuICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2x1bW5zIHtcclxuICAgICAgICAkc3RyOiAkc3RyICsgXCIsID4gLiN7JC16Zi1zaXplfS0jeyRpfVwiXHJcbiAgICAgIH1cclxuICAgICAgI3skc3RyfSB7XHJcbiAgICAgICAgZmxleC1iYXNpczogYXV0bztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCgpIHtcclxuICAgIEBpZiBub3QoJC16Zi1zaXplID09IHNtYWxsKSB7XHJcbiAgICAgIC5ncmlkLXggPiAuI3skLXpmLXNpemV9LWF1dG8ge1xyXG4gICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtYmFzZShhdXRvKTtcclxuICAgICAgICBAaW5jbHVkZSB4eS1jZWxsLXN0YXRpYyhhdXRvLCBmYWxzZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5ncmlkLXggPiAuI3skLXpmLXNpemV9LXNocmluayB7XHJcbiAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1iYXNlKHNocmluayk7XHJcbiAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1zdGF0aWMoc2hyaW5rLCBmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbHVtbnMge1xyXG4gICAgICAvLyBTaXppbmcgKHBlcmNlbnRhZ2UpXHJcbiAgICAgIC5ncmlkLXggPiAuI3skLXpmLXNpemV9LSN7JGl9IHtcclxuICAgICAgICBAaW5jbHVkZSB4eS1jZWxsLXN0YXRpYygkaSwgZmFsc2UsICRndXR0ZXItdHlwZTogcGFkZGluZyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFJlc2V0IHdpZHRoIHdoZW4gdXNpbmcgYC5ncmlkLW1hcmdpbi14YCBub3Qgb24gYC5ncmlkLXhgXHJcbiAgLmdyaWQtbWFyZ2luLXg6bm90KC5ncmlkLXgpID4gLmNlbGwge1xyXG4gICAgd2lkdGg6IGF1dG87XHJcbiAgfVxyXG5cclxuICAvLyBSZXNldCBoZWlnaHQgd2hlbiB1c2luZyBgLmdyaWQtbWFyZ2luLXlgIG5vdCBvbiBgLmdyaWQteWBcclxuICAuZ3JpZC1tYXJnaW4teTpub3QoLmdyaWQteSkgPiAuY2VsbCB7XHJcbiAgICBoZWlnaHQ6IGF1dG87XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gLXh5LWJyZWFrcG9pbnQtY2VsbC1jbGFzc2VzKCRjbGFzcy1icmVha3BvaW50LCAkZ3V0dGVyLWJyZWFrcG9pbnQsICR2ZXJ0aWNhbCkge1xyXG4gICRwcmVmaXg6IGlmKCRjbGFzcy1icmVha3BvaW50ID09ICQtemYtemVyby1icmVha3BvaW50LCAnJywgJyN7JGNsYXNzLWJyZWFrcG9pbnR9LScpO1xyXG4gID4gLiN7JHByZWZpeH1hdXRvIHtcclxuICAgIEBpbmNsdWRlIHh5LWNlbGwtc3RhdGljKGF1dG8sIGZhbHNlLCAkYnJlYWtwb2ludDogJGd1dHRlci1icmVha3BvaW50LCAkdmVydGljYWw6ICR2ZXJ0aWNhbCk7XHJcbiAgfVxyXG5cclxuICA+IC4jeyRwcmVmaXh9c2hyaW5rIHtcclxuICAgIEBpbmNsdWRlIHh5LWNlbGwtc3RhdGljKHNocmluaywgZmFsc2UsICRicmVha3BvaW50OiAkZ3V0dGVyLWJyZWFrcG9pbnQsICR2ZXJ0aWNhbDogJHZlcnRpY2FsKTtcclxuICB9XHJcblxyXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1ucyB7XHJcbiAgICAvLyBTaXppbmcgKHBlcmNlbnRhZ2UpXHJcbiAgICAkY2xhc3NuYW1lOiBpZigkdmVydGljYWwsICcuI3skY2xhc3MtYnJlYWtwb2ludH0tI3skaX0nLCAnLiN7JGNsYXNzLWJyZWFrcG9pbnR9LSN7JGl9Jyk7XHJcblxyXG4gICAgPiAjeyRjbGFzc25hbWV9IHtcclxuICAgICAgQGluY2x1ZGUgeHktY2VsbC1zdGF0aWMoJGksIGZhbHNlLCAkYnJlYWtwb2ludDogJGd1dHRlci1icmVha3BvaW50LCAkdmVydGljYWw6ICR2ZXJ0aWNhbCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vLyBNYXJnaW4gR3JpZCBjbGFzc2VzXHJcbkBtaXhpbiB4eS1tYXJnaW4tZ3JpZC1jbGFzc2VzKFxyXG4gICRndXR0ZXItcG9zaXRpb246IGxlZnQgcmlnaHQsXHJcbiAgJHZlcnRpY2FsOiBmYWxzZSxcclxuICAkd3JhcHBpbmctc2VsZWN0b3I6ICcuZ3JpZC1tYXJnaW4teCdcclxuKXtcclxuICAjeyR3cmFwcGluZy1zZWxlY3Rvcn0ge1xyXG4gICAgQGluY2x1ZGUgeHktZ3V0dGVycygkbmVnYXRpdmU6IHRydWUsICRndXR0ZXItcG9zaXRpb246ICRndXR0ZXItcG9zaXRpb24pO1xyXG5cclxuICAgIC8vIEJhc2UgY2VsbCBzdHlsZXNcclxuICAgID4gLmNlbGwge1xyXG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLXN0YXRpYygkdmVydGljYWw6ICR2ZXJ0aWNhbCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gYmFzZSBzdHlsZXMgbmVlZCB0byBhbGwgYmUgYmVmb3JlIHRoZSBhdXRvIGFuZCBzaHJpbmsgc3R5bGVzXHJcbiAgICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KCkge1xyXG4gICAgICBAaWYodHlwZS1vZigkZ3JpZC1tYXJnaW4tZ3V0dGVycykgPT0gJ21hcCcgYW5kIG1hcC1oYXMta2V5KCRncmlkLW1hcmdpbi1ndXR0ZXJzLCAkLXpmLXNpemUpIGFuZCAkLXpmLXNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQpIHtcclxuICAgICAgICA+IC5jZWxsIHtcclxuICAgICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc3RhdGljKCRicmVha3BvaW50OiAkLXpmLXNpemUsICR2ZXJ0aWNhbDogJHZlcnRpY2FsKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KCkge1xyXG5cclxuICAgICAgLy8gVGhpcyBpcyBwdXJlbHkgZm9yIHJlc3BvbnNpdmUgZ3V0dGVycyAtIHRoZSBtYXJnaW4gZ3JpZCBoYXMgdG8gZ28gYmFjayBhbmQgYWRqdXN0IHdpZHRocyAob3IgaGVpZ2h0cylcclxuICAgICAgLy8gZm9yIHByaW9yIGJyZWFrcG9pbnRzIGJhc2VkIG9uIHRoZSByZXNwb25zaXZlIGd1dHRlci5cclxuICAgICAgQGlmKHR5cGUtb2YoJGdyaWQtbWFyZ2luLWd1dHRlcnMpID09ICdtYXAnIGFuZCBtYXAtaGFzLWtleSgkZ3JpZC1tYXJnaW4tZ3V0dGVycywgJC16Zi1zaXplKSkge1xyXG4gICAgICAgIEBlYWNoICRicCBpbiAtemYtYnJlYWtwb2ludHMtbGVzcy10aGFuKCQtemYtc2l6ZSkge1xyXG4gICAgICAgICAgQGlmKG1hcC1oYXMta2V5KCRncmlkLW1hcmdpbi1ndXR0ZXJzLCAkYnApKSB7XHJcbiAgICAgICAgICAgIEBpbmNsdWRlIC14eS1icmVha3BvaW50LWNlbGwtY2xhc3NlcygkYnAsICQtemYtc2l6ZSwgJHZlcnRpY2FsKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIEBpbmNsdWRlIC14eS1icmVha3BvaW50LWNlbGwtY2xhc3NlcygkLXpmLXNpemUsICQtemYtc2l6ZSwgJHZlcnRpY2FsKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vIFBhZGRpbmcgR3JpZCBjbGFzc2VzXHJcbkBtaXhpbiB4eS1wYWRkaW5nLWdyaWQtY2xhc3NlcyB7XHJcbiAgLmdyaWQtcGFkZGluZy14IHtcclxuXHJcbiAgICAvLyBOZWdhdGl2ZSBtYXJnaW4gZm9yIG5lc3RlZCBncmlkc1xyXG4gICAgLmdyaWQtcGFkZGluZy14IHtcclxuICAgICAgQGluY2x1ZGUgeHktZ3V0dGVycygkbmVnYXRpdmU6IHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIE5lZ2F0aXZlIG1hcmdpbiBmb3IgZ3JpZHMgd2l0aGluIGBncmlkLWNvbnRhaW5lci9ncmlkLWNvbnRhaW5lci5mbHVpZGBcclxuICAgIC8vIFRoaXMgYWxsb3dzIG1hcmdpbiBhbmQgcGFkZGluZyBncmlkcyB0byBsaW5lIHVwIHdpdGggZWFjaG90aGVyXHJcbiAgICAuZ3JpZC1jb250YWluZXI6bm90KC5mdWxsKSA+ICYge1xyXG4gICAgICBAaW5jbHVkZSB4eS1ndXR0ZXJzKCRuZWdhdGl2ZTogdHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQmFzZSBjZWxsIHN0eWxlc1xyXG4gICAgPiAuY2VsbCB7XHJcbiAgICAgIEBpbmNsdWRlIHh5LWd1dHRlcnMoJGd1dHRlcnM6ICRncmlkLXBhZGRpbmctZ3V0dGVycywgJGd1dHRlci10eXBlOiBwYWRkaW5nKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vIEJsb2NrIEdyaWQgY2xhc3Nlc1xyXG5AbWl4aW4geHktYmxvY2stZ3JpZC1jbGFzc2VzKCRtYXJnaW4tZ3JpZDogdHJ1ZSwgJHBhZGRpbmctZ3JpZDogdHJ1ZSkge1xyXG4gIEBpZiAkcGFkZGluZy1ncmlkIHtcclxuICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQge1xyXG4gICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICR4eS1ibG9jay1ncmlkLW1heCB7XHJcbiAgICAgICAgLiN7JC16Zi1zaXplfS11cC0jeyRpfSB7XHJcbiAgICAgICAgICBAaW5jbHVkZSB4eS1ncmlkLWxheW91dCgkaSwgJy5jZWxsJywgZmFsc2UsICRndXR0ZXItdHlwZTogcGFkZGluZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaWYgJG1hcmdpbi1ncmlkIHtcclxuICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQge1xyXG4gICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICR4eS1ibG9jay1ncmlkLW1heCB7XHJcbiAgICAgICAgLy8gVGhpcyBpcyBwdXJlbHkgZm9yIHJlc3BvbnNpdmUgZ3V0dGVycyAtIHRoZSBtYXJnaW4gZ3JpZCBoYXMgdG8gZ28gYmFjayBhbmQgYWRqdXN0IHdpZHRocyAob3IgaGVpZ2h0cylcclxuICAgICAgICAvLyBmb3IgcHJpb3IgYnJlYWtwb2ludHMgYmFzZWQgb24gdGhlIHJlc3BvbnNpdmUgZ3V0dGVyLlxyXG4gICAgICAgIEBpZih0eXBlLW9mKCRncmlkLW1hcmdpbi1ndXR0ZXJzKSA9PSAnbWFwJyBhbmQgbWFwLWhhcy1rZXkoJGdyaWQtbWFyZ2luLWd1dHRlcnMsICQtemYtc2l6ZSkpIHtcclxuICAgICAgICAgIEBlYWNoICRicCBpbiAtemYtYnJlYWtwb2ludHMtbGVzcy10aGFuKCQtemYtc2l6ZSkge1xyXG4gICAgICAgICAgICBAaWYobWFwLWhhcy1rZXkoJGdyaWQtbWFyZ2luLWd1dHRlcnMsICRicCkpIHtcclxuICAgICAgICAgICAgICAuZ3JpZC1tYXJnaW4teC4jeyRicH0tdXAtI3skaX0ge1xyXG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgeHktZ3JpZC1sYXlvdXQoJGksICcuY2VsbCcsIGZhbHNlLCAkZ3V0dGVyLXR5cGU6IG1hcmdpbiwgJGJyZWFrcG9pbnQ6ICRicCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJHh5LWJsb2NrLWdyaWQtbWF4IHtcclxuICAgICAgICAuZ3JpZC1tYXJnaW4teC4jeyQtemYtc2l6ZX0tdXAtI3skaX0ge1xyXG4gICAgICAgICAgQGluY2x1ZGUgeHktZ3JpZC1sYXlvdXQoJGksICcuY2VsbCcsIGZhbHNlLCAkZ3V0dGVyLXR5cGU6IG1hcmdpbiwgJGJyZWFrcG9pbnQ6ICQtemYtc2l6ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vLyBDb2xsYXBzZSBjbGFzc2VzXHJcbkBtaXhpbiB4eS1jb2xsYXBzZS1ncmlkLWNsYXNzZXMoJG1hcmdpbi1ncmlkOiB0cnVlLCAkcGFkZGluZy1ncmlkOiB0cnVlKSB7XHJcbiAgQGVhY2ggJGJwIGluICRicmVha3BvaW50LWNsYXNzZXMge1xyXG4gICAgQGlmICRtYXJnaW4tZ3JpZCB7XHJcbiAgICAgIC4jeyRicH0tbWFyZ2luLWNvbGxhcHNlIHtcclxuICAgICAgICBAaW5jbHVkZSB4eS1ncmlkLWNvbGxhcHNlKCRndXR0ZXItdHlwZTogbWFyZ2luLCAkbWluLWJyZWFrcG9pbnQ6ICRicCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAaWYgJHBhZGRpbmctZ3JpZCB7XHJcbiAgICAgIC4jeyRicH0tcGFkZGluZy1jb2xsYXBzZSB7XHJcbiAgICAgICAgQGluY2x1ZGUgeHktZ3JpZC1jb2xsYXBzZSgkZ3V0dGVyLXR5cGU6IHBhZGRpbmcsICRtaW4tYnJlYWtwb2ludDogJGJwKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8gT2Zmc2V0IGNsYXNzZXNcclxuQG1peGluIHh5LW9mZnNldC1jZWxsLWNsYXNzZXMge1xyXG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQge1xyXG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2x1bW5zIHtcclxuICAgICAgLy8gT2Zmc2V0c1xyXG4gICAgICAkbzogJGkgLSAxO1xyXG5cclxuICAgICAgLiN7JC16Zi1zaXplfS1vZmZzZXQtI3skb30ge1xyXG4gICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtb2Zmc2V0KCRvLCAkZ3V0dGVyczogJGdyaWQtcGFkZGluZy1ndXR0ZXJzLCAkZ3V0dGVyLXR5cGU6IHBhZGRpbmcsICRicmVha3BvaW50OiAkLXpmLXNpemUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuZ3JpZC1tYXJnaW4teCA+IC4jeyQtemYtc2l6ZX0tb2Zmc2V0LSN7JG99IHtcclxuICAgICAgICBAaW5jbHVkZSB4eS1jZWxsLW9mZnNldCgkbywgJGJyZWFrcG9pbnQ6ICQtemYtc2l6ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vIFZlcnRpY2FsIEdyaWQgY2xhc3Nlc1xyXG5AbWl4aW4geHktdmVydGljYWwtZ3JpZC1jbGFzc2VzKFxyXG4gICRtYXJnaW4tZ3JpZDogdHJ1ZSxcclxuICAkcGFkZGluZy1ncmlkOiB0cnVlXHJcbikge1xyXG5cclxuICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KCkge1xyXG4gICAgQGlmIG5vdCgkLXpmLXNpemUgPT0gc21hbGwpIHtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5ncmlkLXkge1xyXG4gICAgQGluY2x1ZGUgeHktZ3JpZCh2ZXJ0aWNhbCwgZmFsc2UpO1xyXG5cclxuXHJcbiAgICA+IC5jZWxsIHtcclxuICAgICAgQGluY2x1ZGUgeHktY2VsbC1yZXNldCgpO1xyXG4gICAgfVxyXG5cclxuICAgID4gLmF1dG8ge1xyXG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLXN0YXRpYyhhdXRvLCBmYWxzZSwgJGJyZWFrcG9pbnQ6ICQtemYtc2l6ZSwgJHZlcnRpY2FsOiB0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICA+IC5zaHJpbmsge1xyXG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLXN0YXRpYyhzaHJpbmssIGZhbHNlLCAkYnJlYWtwb2ludDogJC16Zi1zaXplLCAkdmVydGljYWw6IHRydWUpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KCkge1xyXG4gICAgICAvLyBUaGlzIGlzIGEgYml0IG9mIGEgaGFjay93b3JrYXJvdW5kLCBzZWUgdGhlc2UgaXNzdWVzIGFuZCBQUnMgZm9yIHRoZSBiYWNrc3Rvcnk6XHJcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96dXJiL2ZvdW5kYXRpb24tc2l0ZXMvaXNzdWVzLzEwMjQ0XHJcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96dXJiL2ZvdW5kYXRpb24tc2l0ZXMvcHVsbC8xMDIyMiBhbmRcclxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3p1cmIvZm91bmRhdGlvbi1zaXRlcy9wdWxsLzEwMTY0XHJcbiAgICAgICRzdHI6IFwiPiAuI3skLXpmLXNpemV9LXNocmluaywgPiAuI3skLXpmLXNpemV9LWZ1bGxcIjtcclxuICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2x1bW5zIHtcclxuICAgICAgICAkc3RyOiAkc3RyICsgXCIsID4gLiN7JC16Zi1zaXplfS0jeyRpfVwiXHJcbiAgICAgIH1cclxuICAgICAgI3skc3RyfSB7XHJcbiAgICAgICAgZmxleC1iYXNpczogYXV0bztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoKSB7XHJcbiAgICAgIEBpZiBub3QoJC16Zi1zaXplID09IHNtYWxsKSB7XHJcbiAgICAgICAgPiAuI3skLXpmLXNpemV9LWF1dG8ge1xyXG4gICAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1iYXNlKGF1dG8pO1xyXG4gICAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1zdGF0aWMoYXV0bywgZmFsc2UsICRicmVha3BvaW50OiAkLXpmLXNpemUsICR2ZXJ0aWNhbDogdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICA+IC4jeyQtemYtc2l6ZX0tc2hyaW5rIHtcclxuICAgICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc3RhdGljKHNocmluaywgZmFsc2UsICRicmVha3BvaW50OiAkLXpmLXNpemUsICR2ZXJ0aWNhbDogdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfVxyXG5cclxuICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2x1bW5zIHtcclxuICAgICAgICAvLyBTaXppbmcgKHBlcmNlbnRhZ2UpXHJcbiAgICAgICAgPiAuI3skLXpmLXNpemV9LSN7JGl9IHtcclxuICAgICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc3RhdGljKCRpLCBmYWxzZSwgJHZlcnRpY2FsOiB0cnVlLCAkZ3V0dGVyLXR5cGU6IHBhZGRpbmcpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpZiAkcGFkZGluZy1ncmlkIHtcclxuICAgIC5ncmlkLXBhZGRpbmcteSB7XHJcbiAgICAgIC8vIE5lZ2F0aXZlIG1hcmdpbiBmb3IgbmVzdGVkIGdyaWRzXHJcbiAgICAgIC5ncmlkLXBhZGRpbmcteSB7XHJcbiAgICAgICAgQGluY2x1ZGUgeHktZ3V0dGVycygkbmVnYXRpdmU6IHRydWUsICRndXR0ZXItcG9zaXRpb246IHRvcCBib3R0b20pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBCYXNlIGNlbGwgc3R5bGVzXHJcbiAgICAgID4gLmNlbGwge1xyXG4gICAgICAgIEBpbmNsdWRlIHh5LWd1dHRlcnMoJGd1dHRlcnM6ICRncmlkLXBhZGRpbmctZ3V0dGVycywgJGd1dHRlci10eXBlOiBwYWRkaW5nLCAkZ3V0dGVyLXBvc2l0aW9uOiB0b3AgYm90dG9tKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGlmICRtYXJnaW4tZ3JpZCB7XHJcbiAgICBAaW5jbHVkZSB4eS1tYXJnaW4tZ3JpZC1jbGFzc2VzKHRvcCBib3R0b20sIHRydWUsICcuZ3JpZC1tYXJnaW4teScpO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbkBtaXhpbiB4eS1mcmFtZS1ncmlkLWNsYXNzZXMoJHZlcnRpY2FsLWdyaWQ6IHRydWUsICRtYXJnaW4tZ3JpZDogdHJ1ZSkge1xyXG4gIC8vIEZyYW1lZCBncmlkIHN0eWxlc1xyXG4gIC5ncmlkLWZyYW1lIHtcclxuICAgIEBpbmNsdWRlIHh5LWdyaWQtZnJhbWU7XHJcbiAgfVxyXG5cclxuICAuY2VsbCAuZ3JpZC1mcmFtZSB7XHJcbiAgICB3aWR0aDogMTAwJTsgLy8gU2FtZSBhcyBpbmNsdWRlIHdpdGggJG5lc3RlZCwgYnV0IHdpdGggbGVzcyBjc3NcclxuICB9XHJcblxyXG4gIC5jZWxsLWJsb2NrIHtcclxuICAgIEBpbmNsdWRlIHh5LWNlbGwtYmxvY2soKTtcclxuICB9XHJcblxyXG4gIC5jZWxsLWJsb2NrLXkge1xyXG4gICAgQGluY2x1ZGUgeHktY2VsbC1ibG9jayh0cnVlKTtcclxuICB9XHJcblxyXG5cclxuICAuY2VsbC1ibG9jay1jb250YWluZXIge1xyXG4gICAgQGluY2x1ZGUgeHktY2VsbC1ibG9jay1jb250YWluZXIoKTtcclxuICB9XHJcblxyXG5cclxuICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KGZhbHNlKSB7XHJcblxyXG4gICAgLiN7JC16Zi1zaXplfS1ncmlkLWZyYW1lIHtcclxuICAgICAgQGluY2x1ZGUgeHktZ3JpZC1mcmFtZTtcclxuICAgIH1cclxuXHJcbiAgICAuY2VsbCAuI3skLXpmLXNpemV9LWdyaWQtZnJhbWUge1xyXG4gICAgICB3aWR0aDogMTAwJTsgLy8gU2FtZSBhcyBpbmNsdWRlIHdpdGggJG5lc3RlZCwgYnV0IHdpdGggbGVzcyBjc3NcclxuICAgIH1cclxuXHJcbiAgICAuI3skLXpmLXNpemV9LWNlbGwtYmxvY2sge1xyXG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLWJsb2NrKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLiN7JC16Zi1zaXplfS1jZWxsLWJsb2NrLWNvbnRhaW5lciB7XHJcbiAgICAgIEBpbmNsdWRlIHh5LWNlbGwtYmxvY2stY29udGFpbmVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLiN7JC16Zi1zaXplfS1jZWxsLWJsb2NrLXkge1xyXG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLWJsb2NrKHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGlmICR2ZXJ0aWNhbC1ncmlkIHtcclxuICAgIC5ncmlkLXkge1xyXG4gICAgICAmLmdyaWQtZnJhbWUge1xyXG4gICAgICAgIHdpZHRoOiBhdXRvO1xyXG4gICAgICAgIEBpbmNsdWRlIHh5LWdyaWQtZnJhbWUodHJ1ZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoZmFsc2UpIHtcclxuICAgICAgICAmLiN7JC16Zi1zaXplfS1ncmlkLWZyYW1lIHtcclxuICAgICAgICAgIHdpZHRoOiBhdXRvO1xyXG4gICAgICAgICAgQGluY2x1ZGUgeHktZ3JpZC1mcmFtZSh0cnVlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAuY2VsbCB7XHJcbiAgICAgIC5ncmlkLXkuZ3JpZC1mcmFtZSB7XHJcbiAgICAgICAgaGVpZ2h0OiAxMDAlOyAvLyBTYW1lIGFzIGluY2x1ZGUgd2l0aCAkbmVzdGVkLCBidXQgd2l0aCBsZXNzIGNzc1xyXG4gICAgICB9XHJcbiAgICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoZmFsc2UpIHtcclxuICAgICAgICAuZ3JpZC15LiN7JC16Zi1zaXplfS1ncmlkLWZyYW1lIHtcclxuICAgICAgICAgIGhlaWdodDogMTAwJTsgLy8gU2FtZSBhcyBpbmNsdWRlIHdpdGggJG5lc3RlZCwgYnV0IHdpdGggbGVzcyBjc3NcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgQGlmICRtYXJnaW4tZ3JpZCB7XHJcbiAgICBAaW5jbHVkZSB4eS1tYXJnaW4tZ3JpZC1jbGFzc2VzKHRvcCBib3R0b20sIHRydWUsICcuZ3JpZC1tYXJnaW4teScpO1xyXG4gICAgLmdyaWQtZnJhbWUuZ3JpZC1tYXJnaW4teSB7XHJcbiAgICAgIEBpbmNsdWRlIHh5LWdyaWQtZnJhbWUodHJ1ZSwgZmFsc2UsICRncmlkLW1hcmdpbi1ndXR0ZXJzLCAkaW5jbHVkZS1iYXNlOiBmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KGZhbHNlKSB7XHJcbiAgICAgIC5ncmlkLW1hcmdpbi15LiN7JC16Zi1zaXplfS1ncmlkLWZyYW1lIHtcclxuICAgICAgICBAaW5jbHVkZSB4eS1ncmlkLWZyYW1lKHRydWUsIGZhbHNlLCAkZ3JpZC1tYXJnaW4tZ3V0dGVycywgJC16Zi1zaXplLCBmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vIEZpbmFsIGNsYXNzZXNcclxuQG1peGluIGZvdW5kYXRpb24teHktZ3JpZC1jbGFzc2VzKFxyXG4gICRiYXNlLWdyaWQ6IHRydWUsXHJcbiAgJG1hcmdpbi1ncmlkOiB0cnVlLFxyXG4gICRwYWRkaW5nLWdyaWQ6IHRydWUsXHJcbiAgJGJsb2NrLWdyaWQ6IHRydWUsXHJcbiAgJGNvbGxhcHNlOiB0cnVlLFxyXG4gICRvZmZzZXQ6IHRydWUsXHJcbiAgJHZlcnRpY2FsLWdyaWQ6IHRydWUsXHJcbiAgJGZyYW1lLWdyaWQ6IHRydWVcclxuKSB7XHJcblxyXG4gIC8vIEJhc2UgZ3JpZCBzdHlsZXNcclxuICBAaWYoJGJhc2UtZ3JpZCkge1xyXG4gICAgQGluY2x1ZGUgeHktYmFzZS1ncmlkLWNsYXNzZXMoKTtcclxuICB9XHJcblxyXG4gIC8vIE1hcmdpbiBncmlkXHJcbiAgQGlmKCRtYXJnaW4tZ3JpZCkge1xyXG4gICAgQGluY2x1ZGUgeHktbWFyZ2luLWdyaWQtY2xhc3NlcygpO1xyXG4gIH1cclxuXHJcbiAgLy8gUGFkZGluZyBncmlkXHJcbiAgQGlmKCRwYWRkaW5nLWdyaWQpIHtcclxuICAgIEBpbmNsdWRlIHh5LXBhZGRpbmctZ3JpZC1jbGFzc2VzKCk7XHJcbiAgfVxyXG5cclxuICAvLyBCbG9jayBncmlkXHJcbiAgQGlmKCRibG9jay1ncmlkKSB7XHJcbiAgICBAaW5jbHVkZSB4eS1ibG9jay1ncmlkLWNsYXNzZXMoJG1hcmdpbi1ncmlkLCAkcGFkZGluZy1ncmlkKTtcclxuICB9XHJcblxyXG4gIC8vIENvbGxhcHNlIGd1dHRlcnNcclxuICBAaWYoJGNvbGxhcHNlKSB7XHJcbiAgICBAaW5jbHVkZSB4eS1jb2xsYXBzZS1ncmlkLWNsYXNzZXMoJG1hcmdpbi1ncmlkLCAkcGFkZGluZy1ncmlkKTtcclxuICB9XHJcblxyXG4gIC8vIE9mZnNldCBndXR0ZXJzXHJcbiAgQGlmKCRvZmZzZXQpIHtcclxuICAgIEBpbmNsdWRlIHh5LW9mZnNldC1jZWxsLWNsYXNzZXMoKTtcclxuICB9XHJcblxyXG4gIC8vIFZlcnRpY2FsIGdyaWRcclxuICBAaWYoJHZlcnRpY2FsLWdyaWQpIHtcclxuICAgIEBpbmNsdWRlIHh5LXZlcnRpY2FsLWdyaWQtY2xhc3NlcygkbWFyZ2luLWdyaWQsICRwYWRkaW5nLWdyaWQpO1xyXG4gIH1cclxuXHJcbiAgQGlmICgkZnJhbWUtZ3JpZCkge1xyXG4gICAgQGluY2x1ZGUgeHktZnJhbWUtZ3JpZC1jbGFzc2VzKCR2ZXJ0aWNhbC1ncmlkLCAkbWFyZ2luLWdyaWQpXHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCB0eXBvZ3JhcGh5XHJcbi8vLy9cclxuXHJcbi8vIEJhc2UgdHlwb2dyYXBoeSBzdHlsZXMgKHRhZ3Mgb25seSlcclxuQGltcG9ydCAnYmFzZSc7XHJcblxyXG4vLyBUeXBvZ3JhcGh5IGhlbHBlciBjbGFzc2VzIChjbGFzc2VzIG9ubHkpXHJcbkBpbXBvcnQgJ2hlbHBlcnMnO1xyXG5cclxuLy8gVGV4dCBhbGlnbm1lbnQgY2xhc3Nlc1xyXG5AaW1wb3J0ICdhbGlnbm1lbnQnO1xyXG5cclxuLy8gUHJpbnQgc3R5bGVzXHJcbkBpbXBvcnQgJ3ByaW50JztcclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLXR5cG9ncmFwaHkge1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdHlwb2dyYXBoeS1iYXNlO1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdHlwb2dyYXBoeS1oZWxwZXJzO1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdGV4dC1hbGlnbm1lbnQ7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcmludC1zdHlsZXM7XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIHR5cG9ncmFwaHktYmFzZVxyXG4vLy8vXHJcblxyXG4vLyBCYXNlIFR5cG9ncmFwaHlcclxuLy8gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC1cclxuLy8gVGhlc2UgYXJlIHN0eWxlcyBhcHBsaWVkIHRvIGJhc2ljIEhUTUwgdGFncywgaW5jbHVkaW5nOlxyXG4vLyAgIC0gUGFyYWdyYXBocyA8cD5cclxuLy8gICAtIEJvbGQvaXRhbGljcyA8Yj4gPHN0cm9uZz4gPGk+IDxlbT5cclxuLy8gICAtIFNtYWxsIHRleHQgPHNtYWxsPlxyXG4vLyAgIC0gSGVhZGluZ3MgPGgxPi08aDY+XHJcbi8vICAgLSBBbmNob3JzIDxhPlxyXG4vLyAgIC0gRGl2aWRlcnMgPGhyPlxyXG4vLyAgIC0gTGlzdHMgPHVsPiA8b2w+IDxkbD5cclxuLy8gICAtIEJsb2NrcXVvdGVzIDxibG9ja3F1b3RlPlxyXG4vLyAgIC0gQ29kZSBibG9ja3MgPGNvZGU+XHJcbi8vICAgLSBBYmJyZXZpYXRpb25zIDxhYmJyPlxyXG4vLyAgIC0gQ2l0YXRpb25zIDxjaXRlPlxyXG4vLyAgIC0gS2V5c3Ryb2tlcyA8a2JkPlxyXG5cclxuLy8vIEZvbnQgZmFtaWx5IGZvciBoZWFkZXIgZWxlbWVudHMuXHJcbi8vLyBAdHlwZSBTdHJpbmcgfCBMaXN0XHJcbiRoZWFkZXItZm9udC1mYW1pbHk6ICRib2R5LWZvbnQtZmFtaWx5ICFkZWZhdWx0O1xyXG5cclxuLy8vIEZvbnQgd2VpZ2h0IG9mIGhlYWRlcnMuXHJcbi8vLyBAdHlwZSBTdHJpbmdcclxuJGhlYWRlci1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsICFkZWZhdWx0O1xyXG5cclxuLy8vIEZvbnQgc3R5bGUgKGUuZy4gaXRhbGljaXplZCkgb2YgaGVhZGVycy5cclxuLy8vIEB0eXBlIFN0cmluZ1xyXG4kaGVhZGVyLWZvbnQtc3R5bGU6IG5vcm1hbCAhZGVmYXVsdDtcclxuXHJcbi8vLyBGb250IHN0YWNrIHVzZWQgZm9yIGVsZW1lbnRzIHRoYXQgdXNlIG1vbm9zcGFjZWQgdHlwZSwgc3VjaCBhcyBjb2RlIHNhbXBsZXNcclxuLy8vIEB0eXBlIFN0cmluZyB8IExpc3RcclxuJGZvbnQtZmFtaWx5LW1vbm9zcGFjZTogQ29uc29sYXMsICdMaWJlcmF0aW9uIE1vbm8nLCBDb3VyaWVyLCBtb25vc3BhY2UgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQ29sb3Igb2YgaGVhZGVycy5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRoZWFkZXItY29sb3I6IGluaGVyaXQgIWRlZmF1bHQ7XHJcblxyXG4vLy8gTGluZSBoZWlnaHQgb2YgaGVhZGVycy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kaGVhZGVyLWxpbmVoZWlnaHQ6IDEuNCAhZGVmYXVsdDtcclxuXHJcbi8vLyBCb3R0b20gbWFyZ2luIG9mIGhlYWRlcnMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGhlYWRlci1tYXJnaW4tYm90dG9tOiAwLjVyZW0gIWRlZmF1bHQ7XHJcblxyXG4vLy8gU3R5bGVzIGZvciBoZWFkaW5ncyBhdCB2YXJpb3VzIHNjcmVlbiBzaXplcy4gRWFjaCBrZXkgaXMgYSBicmVha3BvaW50LCBhbmQgZWFjaCB2YWx1ZSBpcyBhIG1hcCBvZiBoZWFkaW5nIHN0eWxlcy5cclxuLy8vIEB0eXBlIE1hcFxyXG4kaGVhZGVyLXN0eWxlczogKFxyXG4gIHNtYWxsOiAoXHJcbiAgICAnaDEnOiAoJ2ZvbnQtc2l6ZSc6IDI0KSxcclxuICAgICdoMic6ICgnZm9udC1zaXplJzogMjApLFxyXG4gICAgJ2gzJzogKCdmb250LXNpemUnOiAxOSksXHJcbiAgICAnaDQnOiAoJ2ZvbnQtc2l6ZSc6IDE4KSxcclxuICAgICdoNSc6ICgnZm9udC1zaXplJzogMTcpLFxyXG4gICAgJ2g2JzogKCdmb250LXNpemUnOiAxNiksXHJcbiAgKSxcclxuICBtZWRpdW06IChcclxuICAgICdoMSc6ICgnZm9udC1zaXplJzogNDgpLFxyXG4gICAgJ2gyJzogKCdmb250LXNpemUnOiA0MCksXHJcbiAgICAnaDMnOiAoJ2ZvbnQtc2l6ZSc6IDMxKSxcclxuICAgICdoNCc6ICgnZm9udC1zaXplJzogMjUpLFxyXG4gICAgJ2g1JzogKCdmb250LXNpemUnOiAyMCksXHJcbiAgICAnaDYnOiAoJ2ZvbnQtc2l6ZSc6IDE2KSxcclxuICApLFxyXG4pICFkZWZhdWx0O1xyXG5cclxuLy8gJGhlYWRlci1zdHlsZXMgbWFwIGlzIGJ1aWx0IGZyb20gJGhlYWRlci1zaXplcyBpbiBvcmRlciB0byBlbnN1cmUgZG93bndhcmQgY29tcGF0aWJpbGl0eVxyXG4vLyB3aGVuICRoZWFkZXItc2l6ZXMgaXMgZGVwcmVjaWF0ZWQsICRoZWFkZXItc3R5bGVzIG5lZWRzIHRvIGdldCAhZGVmYXVsdCB2YWx1ZXMgbGlrZSBzZXR0aW5ncy5zY3NzXHJcbkBmdW5jdGlvbiBidWlsZF9mcm9tX2hlYWRlci1zaXplcygkaGVhZGVyLXNpemVzKSB7XHJcbiAgQHdhcm4gJ05vdGUsIHRoYXQgJGhlYWRlci1zaXplcyBoYXMgYmVlbiByZXBsYWNlZCB3aXRoICRoZWFkZXItc3R5bGVzLiAkaGVhZGVyLXNpemVzIHN0aWxsIHdvcmtzLCBidXQgaXQgaXMgZ29pbmcgdG8gYmUgZGVwcmVjaWF0ZWQuJztcclxuICAkaGVhZGVyLXN0eWxlczogKCk7XHJcbiAgQGVhY2ggJHNpemUsICRoZWFkZXJzIGluICRoZWFkZXItc2l6ZXMge1xyXG4gICAgJGhlYWRlci1tYXA6ICgpO1xyXG4gICAgQGVhY2ggJGhlYWRlciwgJGZvbnQtc2l6ZSBpbiAkaGVhZGVycyB7XHJcbiAgICAgICRoZWFkZXItbWFwOiBtYXAtbWVyZ2UoJGhlYWRlci1tYXAsICgkaGVhZGVyOiAoJ2ZvbnQtc2l6ZSc6ICRmb250LXNpemUpKSk7ICBcclxuICAgIH1cclxuICAgICRoZWFkZXItc3R5bGVzOiBtYXAtbWVyZ2UoJGhlYWRlci1zdHlsZXMsICgkc2l6ZTogJGhlYWRlci1tYXApKTtcclxuICB9XHJcbiAgQHJldHVybiAkaGVhZGVyLXN0eWxlcztcclxufVxyXG5cclxuLy8gSWYgaXQgZXhpc3RzICRoZWFkZXJzLXNpemVzIGlzIHVzZWQgdG8gYnVpbGQgJGhlYWRlci1zdHlsZXMuIFNlZSB0aGUgZG9jdW1lbnRhdGlvbi5cclxuQGlmIHZhcmlhYmxlLWV4aXN0cyhoZWFkZXItc2l6ZXMpIHtcclxuICAkaGVhZGVyLXN0eWxlczogYnVpbGRfZnJvbV9oZWFkZXItc2l6ZXMoJGhlYWRlci1zaXplcyk7XHJcbn1cclxuXHJcbi8vLyBUZXh0IHJlbmRlcmluZyBtZXRob2Qgb2YgaGVhZGVycy5cclxuLy8vIEB0eXBlIFN0cmluZ1xyXG4kaGVhZGVyLXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRm9udCBzaXplIG9mIGA8c21hbGw+YCBlbGVtZW50cy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kc21hbGwtZm9udC1zaXplOiA4MCUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQ29sb3Igb2YgYDxzbWFsbD5gIGVsZW1lbnRzIHdoZW4gcGxhY2VkIGluc2lkZSBoZWFkZXJzLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGhlYWRlci1zbWFsbC1mb250LWNvbG9yOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gTGluZSBoZWlnaHQgb2YgdGV4dCBpbnNpZGUgYDxwPmAgZWxlbWVudHMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHBhcmFncmFwaC1saW5laGVpZ2h0OiAxLjYgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQm90dG9tIG1hcmdpbiBvZiBwYXJhZ3JhcGhzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRwYXJhZ3JhcGgtbWFyZ2luLWJvdHRvbTogMXJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBUZXh0IHJlbmRlcmluZyBtZXRob2QgZm9yIHBhcmFncmFwaCB0ZXh0LlxyXG4vLy8gQHR5cGUgU3RyaW5nXHJcbiRwYXJhZ3JhcGgtdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eSAhZGVmYXVsdDtcclxuXHJcbi8vLyBUZXh0IGNvbG9yIG9mIGNvZGUgc2FtcGxlcy5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRjb2RlLWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRm9udCBmYW1pbHkgb2YgY29kZSBzYW1wbGVzLlxyXG4vLy8gQHR5cGUgU3RyaW5nIHwgTGlzdFxyXG4kY29kZS1mb250LWZhbWlseTogJGZvbnQtZmFtaWx5LW1vbm9zcGFjZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBGb250IHdlaWdodCBvZiB0ZXh0IGluIGNvZGUgc2FtcGxlcy5cclxuLy8vIEB0eXBlIFN0cmluZ1xyXG4kY29kZS1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsICFkZWZhdWx0O1xyXG5cclxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgY29kZSBzYW1wbGVzLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGNvZGUtYmFja2dyb3VuZDogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQm9yZGVyIGFyb3VuZCBjb2RlIHNhbXBsZXMuXHJcbi8vLyBAdHlwZSBMaXN0XHJcbiRjb2RlLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcclxuXHJcbi8vLyBQYWRkaW5nIGFyb3VuZCB0ZXh0IG9mIGNvZGUgc2FtcGxlcy5cclxuLy8vIEB0eXBlIE51bWJlciB8IExpc3RcclxuJGNvZGUtcGFkZGluZzogcmVtLWNhbGMoMiA1IDEpICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgY29sb3IgZm9yIGxpbmtzLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGFuY2hvci1jb2xvcjogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBjb2xvciBmb3IgbGlua3Mgb24gaG92ZXIuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kYW5jaG9yLWNvbG9yLWhvdmVyOiBzY2FsZS1jb2xvcigkYW5jaG9yLWNvbG9yLCAkbGlnaHRuZXNzOiAtMTQlKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IHRleHQgZGVjb3JhdGlvbiBmb3IgbGlua3MuXHJcbi8vLyBAdHlwZSBTdHJpbmdcclxuJGFuY2hvci10ZXh0LWRlY29yYXRpb246IG5vbmUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCB0ZXh0IGRlY29yYXRpb24gZm9yIGxpbmtzIG9uIGhvdmVyLlxyXG4vLy8gQHR5cGUgU3RyaW5nXHJcbiRhbmNob3ItdGV4dC1kZWNvcmF0aW9uLWhvdmVyOiBub25lICFkZWZhdWx0O1xyXG5cclxuLy8vIE1heGltdW0gd2lkdGggb2YgYSBkaXZpZGVyLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRoci13aWR0aDogJGdsb2JhbC13aWR0aCAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGJvcmRlciBmb3IgYSBkaXZpZGVyLlxyXG4vLy8gQHR5cGUgTGlzdFxyXG4kaHItYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgbWFyZ2luIGZvciBhIGRpdmlkZXIuXHJcbi8vLyBAdHlwZSBOdW1iZXIgfCBMaXN0XHJcbiRoci1tYXJnaW46IHJlbS1jYWxjKDIwKSBhdXRvICFkZWZhdWx0O1xyXG5cclxuLy8vIExpbmUgaGVpZ2h0IGZvciBpdGVtcyBpbiBhIGxpc3QuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGxpc3QtbGluZWhlaWdodDogJHBhcmFncmFwaC1saW5laGVpZ2h0ICFkZWZhdWx0O1xyXG5cclxuLy8vIEJvdHRvbSBtYXJnaW4gZm9yIGl0ZW1zIGluIGEgbGlzdC5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kbGlzdC1tYXJnaW4tYm90dG9tOiAkcGFyYWdyYXBoLW1hcmdpbi1ib3R0b20gIWRlZmF1bHQ7XHJcblxyXG4vLy8gQnVsbGV0IHR5cGUgdG8gdXNlIGZvciB1bm9yZGVyZWQgbGlzdHMgKGUuZy4sIGBzcXVhcmVgLCBgY2lyY2xlYCwgYGRpc2NgKS5cclxuLy8vIEB0eXBlIFN0cmluZ1xyXG4kbGlzdC1zdHlsZS10eXBlOiBkaXNjICFkZWZhdWx0O1xyXG5cclxuLy8vIFBvc2l0aW9uaW5nIGZvciBidWxsZXRzIG9uIHVub3JkZXJlZCBsaXN0IGl0ZW1zLlxyXG4vLy8gQHR5cGUgU3RyaW5nXHJcbiRsaXN0LXN0eWxlLXBvc2l0aW9uOiBvdXRzaWRlICFkZWZhdWx0O1xyXG5cclxuLy8vIExlZnQgKG9yIHJpZ2h0KSBtYXJnaW4gZm9yIGxpc3RzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRsaXN0LXNpZGUtbWFyZ2luOiAxLjI1cmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIExlZnQgKG9yIHJpZ2h0KSBtYXJnaW4gZm9yIGEgbGlzdCBpbnNpZGUgYSBsaXN0LlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRsaXN0LW5lc3RlZC1zaWRlLW1hcmdpbjogMS4yNXJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBCb3R0b20gbWFyZ2luIGZvciBgPGRsPmAgZWxlbWVudHMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGRlZm5saXN0LW1hcmdpbi1ib3R0b206IDFyZW0gIWRlZmF1bHQ7XHJcblxyXG4vLy8gRm9udCB3ZWlnaHQgZm9yIGA8ZHQ+YCBlbGVtZW50cy5cclxuLy8vIEB0eXBlIFN0cmluZ1xyXG4kZGVmbmxpc3QtdGVybS13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQgIWRlZmF1bHQ7XHJcblxyXG4vLy8gU3BhY2luZyBiZXR3ZWVuIGA8ZHQ+YCBhbmQgYDxkZD5gIGVsZW1lbnRzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRkZWZubGlzdC10ZXJtLW1hcmdpbi1ib3R0b206IDAuM3JlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBUZXh0IGNvbG9yIG9mIGA8YmxvY2txdW90ZT5gIGVsZW1lbnRzLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGJsb2NrcXVvdGUtY29sb3I6ICRkYXJrLWdyYXkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gUGFkZGluZyBpbnNpZGUgYSBgPGJsb2NrcXVvdGU+YCBlbGVtZW50LlxyXG4vLy8gQHR5cGUgTnVtYmVyIHwgTGlzdFxyXG4kYmxvY2txdW90ZS1wYWRkaW5nOiByZW0tY2FsYyg5IDIwIDAgMTkpICFkZWZhdWx0O1xyXG5cclxuLy8vIFNpZGUgYm9yZGVyIGZvciBgPGJsb2NrcXVvdGU+YCBlbGVtZW50cy5cclxuLy8vIEB0eXBlIExpc3RcclxuJGJsb2NrcXVvdGUtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xyXG5cclxuLy8vIEZvbnQgc2l6ZSBmb3IgYDxjaXRlPmAgZWxlbWVudHMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGNpdGUtZm9udC1zaXplOiByZW0tY2FsYygxMykgIWRlZmF1bHQ7XHJcblxyXG4vLy8gVGV4dCBjb2xvciBmb3IgYDxjaXRlPmAgZWxlbWVudHMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kY2l0ZS1jb2xvcjogJGRhcmstZ3JheSAhZGVmYXVsdDtcclxuXHJcbi8vLyBQc2V1ZG8gY29udGVudCBmb3IgYDxjaXRlPmAgZWxlbWVudHMuXHJcbi8vLyBAdHlwZSBTdHJpbmdcclxuJGNpdGUtcHNldWRvLWNvbnRlbnQ6ICdcXDIwMTQgXFwwMDIwJyAhZGVmYXVsdDtcclxuXHJcbi8vLyBGb250IGZhbWlseSBmb3IgYDxrYmQ+YCBlbGVtZW50cy5cclxuLy8vIEB0eXBlIFN0cmluZyB8IExpc3RcclxuJGtleXN0cm9rZS1mb250OiAkZm9udC1mYW1pbHktbW9ub3NwYWNlICFkZWZhdWx0O1xyXG5cclxuLy8vIFRleHQgY29sb3IgZm9yIGA8a2JkPmAgZWxlbWVudHMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4ka2V5c3Ryb2tlLWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgYDxrYmQ+YCBlbGVtZW50cy5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRrZXlzdHJva2UtYmFja2dyb3VuZDogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gUGFkZGluZyBmb3IgYDxrYmQ+YCBlbGVtZW50cy5cclxuLy8vIEB0eXBlIE51bWJlciB8IExpc3RcclxuJGtleXN0cm9rZS1wYWRkaW5nOiByZW0tY2FsYygyIDQgMCkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQm9yZGVyIHJhZGl1cyBmb3IgYDxrYmQ+YCBlbGVtZW50cy5cclxuLy8vIEB0eXBlIE51bWJlciB8IExpc3RcclxuJGtleXN0cm9rZS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xyXG5cclxuLy8vIEJvdHRvbSBib3JkZXIgc3R5bGUgZm9yIGA8YWJicj5gIGVsZW1lbnRzLlxyXG4vLy8gQHR5cGUgTGlzdFxyXG4kYWJici11bmRlcmxpbmU6IDFweCBkb3R0ZWQgJGJsYWNrICFkZWZhdWx0O1xyXG5cclxuQG1peGluIGZvdW5kYXRpb24tdHlwb2dyYXBoeS1iYXNlIHtcclxuICAvLyBUeXBvZ3JhcGh5IHJlc2V0c1xyXG4gIGRpdixcclxuICBkbCxcclxuICBkdCxcclxuICBkZCxcclxuICB1bCxcclxuICBvbCxcclxuICBsaSxcclxuICBoMSxcclxuICBoMixcclxuICBoMyxcclxuICBoNCxcclxuICBoNSxcclxuICBoNixcclxuICBwcmUsXHJcbiAgZm9ybSxcclxuICBwLFxyXG4gIGJsb2NrcXVvdGUsXHJcbiAgdGgsXHJcbiAgdGQge1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgcGFkZGluZzogMDtcclxuICB9XHJcblxyXG4gIC8vIFBhcmFncmFwaHNcclxuICBwIHtcclxuICAgIG1hcmdpbi1ib3R0b206ICRwYXJhZ3JhcGgtbWFyZ2luLWJvdHRvbTtcclxuXHJcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XHJcbiAgICBsaW5lLWhlaWdodDogJHBhcmFncmFwaC1saW5laGVpZ2h0O1xyXG4gICAgdGV4dC1yZW5kZXJpbmc6ICRwYXJhZ3JhcGgtdGV4dC1yZW5kZXJpbmc7XHJcbiAgfVxyXG5cclxuICAvLyBFbXBoYXNpemVkIHRleHRcclxuICBlbSxcclxuICBpIHtcclxuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcclxuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xyXG4gIH1cclxuXHJcbiAgLy8gU3Ryb25nIHRleHRcclxuICBzdHJvbmcsXHJcbiAgYiB7XHJcbiAgICBmb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtYm9sZDtcclxuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xyXG4gIH1cclxuXHJcbiAgLy8gU21hbGwgdGV4dFxyXG4gIHNtYWxsIHtcclxuICAgIGZvbnQtc2l6ZTogJHNtYWxsLWZvbnQtc2l6ZTtcclxuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xyXG4gIH1cclxuXHJcbiAgLy8gSGVhZGluZ3NcclxuICBoMSwgLmgxLFxyXG4gIGgyLCAuaDIsXHJcbiAgaDMsIC5oMyxcclxuICBoNCwgLmg0LFxyXG4gIGg1LCAuaDUsXHJcbiAgaDYsIC5oNiB7XHJcbiAgICBmb250LWZhbWlseTogJGhlYWRlci1mb250LWZhbWlseTtcclxuICAgIGZvbnQtc3R5bGU6ICRoZWFkZXItZm9udC1zdHlsZTtcclxuICAgIGZvbnQtd2VpZ2h0OiAkaGVhZGVyLWZvbnQtd2VpZ2h0O1xyXG4gICAgY29sb3I6ICRoZWFkZXItY29sb3I7XHJcbiAgICB0ZXh0LXJlbmRlcmluZzogJGhlYWRlci10ZXh0LXJlbmRlcmluZztcclxuXHJcbiAgICBzbWFsbCB7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAwO1xyXG4gICAgICBjb2xvcjogJGhlYWRlci1zbWFsbC1mb250LWNvbG9yO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gSGVhZGluZyBzdHlsZXNcclxuICBAZWFjaCAkc2l6ZSwgJGhlYWRlcnMgaW4gJGhlYWRlci1zdHlsZXMge1xyXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xyXG4gICAgICBAZWFjaCAkaGVhZGVyLCAkaGVhZGVyLWRlZnMgaW4gJGhlYWRlcnMge1xyXG4gICAgICAgICRmb250LXNpemUtdGVtcDogMXJlbTtcclxuICAgICAgICAjeyRoZWFkZXJ9LCAuI3skaGVhZGVyfSB7XHJcblxyXG4gICAgICAgICAgQGlmIG1hcC1oYXMta2V5KCRoZWFkZXItZGVmcywgZm9udC1zaXplKSB7XHJcbiAgICAgICAgICAgICRmb250LXNpemUtdGVtcDogcmVtLWNhbGMobWFwLWdldCgkaGVhZGVyLWRlZnMsIGZvbnQtc2l6ZSkpO1xyXG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LXNpemUtdGVtcDtcclxuICAgICAgICAgIH0gQGVsc2UgaWYgbWFwLWhhcy1rZXkoJGhlYWRlci1kZWZzLCBmcykge1xyXG4gICAgICAgICAgICAkZm9udC1zaXplLXRlbXA6IHJlbS1jYWxjKG1hcC1nZXQoJGhlYWRlci1kZWZzLCBmcykpO1xyXG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LXNpemUtdGVtcDtcclxuICAgICAgICAgIH0gQGVsc2UgaWYgJHNpemUgPT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xyXG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LXNpemUtdGVtcDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiBtYXAtaGFzLWtleSgkaGVhZGVyLWRlZnMsIGxpbmUtaGVpZ2h0KSB7XHJcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiB1bml0bGVzcy1jYWxjKG1hcC1nZXQoJGhlYWRlci1kZWZzLCBsaW5lLWhlaWdodCksICRmb250LXNpemUtdGVtcCk7XHJcbiAgICAgICAgICB9IEBlbHNlIGlmIG1hcC1oYXMta2V5KCRoZWFkZXItZGVmcywgbGgpIHtcclxuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IHVuaXRsZXNzLWNhbGMobWFwLWdldCgkaGVhZGVyLWRlZnMsIGxoKSwgJGZvbnQtc2l6ZS10ZW1wKTtcclxuICAgICAgICAgIH0gQGVsc2UgaWYgJHNpemUgPT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xyXG4gICAgICAgICAgICBsaW5lLWhlaWdodDogdW5pdGxlc3MtY2FsYygkaGVhZGVyLWxpbmVoZWlnaHQsICRmb250LXNpemUtdGVtcCk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgQGlmIG1hcC1oYXMta2V5KCRoZWFkZXItZGVmcywgbWFyZ2luLXRvcCkge1xyXG4gICAgICAgICAgICBtYXJnaW4tdG9wOiByZW0tY2FsYyhtYXAtZ2V0KCRoZWFkZXItZGVmcywgbWFyZ2luLXRvcCkpO1xyXG4gICAgICAgICAgfSBAZWxzZSBpZiBtYXAtaGFzLWtleSgkaGVhZGVyLWRlZnMsIG10KSB7XHJcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IHJlbS1jYWxjKG1hcC1nZXQoJGhlYWRlci1kZWZzLCBtdCkpO1xyXG4gICAgICAgICAgfSBAZWxzZSBpZiAkc2l6ZSA9PSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XHJcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgbWFwLWhhcy1rZXkoJGhlYWRlci1kZWZzLCBtYXJnaW4tYm90dG9tKSB7XHJcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKG1hcC1nZXQoJGhlYWRlci1kZWZzLCBtYXJnaW4tYm90dG9tKSk7XHJcbiAgICAgICAgICB9IEBlbHNlIGlmIG1hcC1oYXMta2V5KCRoZWFkZXItZGVmcywgbWIpIHtcclxuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMobWFwLWdldCgkaGVhZGVyLWRlZnMsIG1iKSk7XHJcbiAgICAgICAgICB9IEBlbHNlIGlmICRzaXplID09ICQtemYtemVyby1icmVha3BvaW50IHtcclxuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoJGhlYWRlci1tYXJnaW4tYm90dG9tKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIExpbmtzXHJcbiAgYSB7XHJcbiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcclxuICAgIGNvbG9yOiAkYW5jaG9yLWNvbG9yO1xyXG4gICAgdGV4dC1kZWNvcmF0aW9uOiAkYW5jaG9yLXRleHQtZGVjb3JhdGlvbjtcclxuXHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcblxyXG4gICAgJjpob3ZlcixcclxuICAgICY6Zm9jdXMge1xyXG4gICAgICBjb2xvcjogJGFuY2hvci1jb2xvci1ob3ZlcjtcclxuICAgICAgQGlmICRhbmNob3ItdGV4dC1kZWNvcmF0aW9uLWhvdmVyICE9ICRhbmNob3ItdGV4dC1kZWNvcmF0aW9uIHtcclxuICAgICAgICB0ZXh0LWRlY29yYXRpb246ICRhbmNob3ItdGV4dC1kZWNvcmF0aW9uLWhvdmVyO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaW1nIHtcclxuICAgICAgYm9yZGVyOiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gSG9yaXpvbnRhbCBydWxlXHJcbiAgaHIge1xyXG4gICAgY2xlYXI6IGJvdGg7XHJcblxyXG4gICAgbWF4LXdpZHRoOiAkaHItd2lkdGg7XHJcbiAgICBoZWlnaHQ6IDA7XHJcbiAgICBtYXJnaW46ICRoci1tYXJnaW47XHJcblxyXG4gICAgYm9yZGVyLXRvcDogMDtcclxuICAgIGJvcmRlci1yaWdodDogMDtcclxuICAgIGJvcmRlci1ib3R0b206ICRoci1ib3JkZXI7XHJcbiAgICBib3JkZXItbGVmdDogMDtcclxuICB9XHJcblxyXG4gIC8vIExpc3RzXHJcbiAgdWwsXHJcbiAgb2wsXHJcbiAgZGwge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogJGxpc3QtbWFyZ2luLWJvdHRvbTtcclxuICAgIGxpc3Qtc3R5bGUtcG9zaXRpb246ICRsaXN0LXN0eWxlLXBvc2l0aW9uO1xyXG4gICAgbGluZS1oZWlnaHQ6ICRsaXN0LWxpbmVoZWlnaHQ7XHJcbiAgfVxyXG5cclxuICAvLyBMaXN0IGl0ZW1zXHJcbiAgbGkge1xyXG4gICAgZm9udC1zaXplOiBpbmhlcml0O1xyXG4gIH1cclxuXHJcbiAgLy8gVW5vcmRlcmVkIGxpc3RzXHJcbiAgdWwge1xyXG4gICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogJGxpc3Qtc2lkZS1tYXJnaW47XHJcbiAgICBsaXN0LXN0eWxlLXR5cGU6ICRsaXN0LXN0eWxlLXR5cGU7XHJcbiAgfVxyXG5cclxuICAvLyBPcmRlcmVkIGxpc3RzXHJcbiAgb2wge1xyXG4gICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogJGxpc3Qtc2lkZS1tYXJnaW47XHJcbiAgfVxyXG5cclxuICAvLyBOZXN0ZWQgdW5vcmRlcmVkL29yZGVyZWQgbGlzdHNcclxuICB1bCwgb2wge1xyXG4gICAgJiAmIHtcclxuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogJGxpc3QtbmVzdGVkLXNpZGUtbWFyZ2luO1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gRGVmaW5pdGlvbiBsaXN0c1xyXG4gIGRsIHtcclxuICAgIG1hcmdpbi1ib3R0b206ICRkZWZubGlzdC1tYXJnaW4tYm90dG9tO1xyXG5cclxuICAgIGR0IHtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogJGRlZm5saXN0LXRlcm0tbWFyZ2luLWJvdHRvbTtcclxuICAgICAgZm9udC13ZWlnaHQ6ICRkZWZubGlzdC10ZXJtLXdlaWdodDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIEJsb2NrcXVvdGVzXHJcbiAgYmxvY2txdW90ZSB7XHJcbiAgICBtYXJnaW46IDAgMCAkcGFyYWdyYXBoLW1hcmdpbi1ib3R0b207XHJcbiAgICBwYWRkaW5nOiAkYmxvY2txdW90ZS1wYWRkaW5nO1xyXG4gICAgYm9yZGVyLSN7JGdsb2JhbC1sZWZ0fTogJGJsb2NrcXVvdGUtYm9yZGVyO1xyXG5cclxuICAgICYsIHAge1xyXG4gICAgICBsaW5lLWhlaWdodDogJHBhcmFncmFwaC1saW5laGVpZ2h0O1xyXG4gICAgICBjb2xvcjogJGJsb2NrcXVvdGUtY29sb3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBDaXRhdGlvbnNcclxuICBjaXRlIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgZm9udC1zaXplOiAkY2l0ZS1mb250LXNpemU7XHJcbiAgICBjb2xvcjogJGNpdGUtY29sb3I7XHJcblxyXG4gICAgJjpiZWZvcmUge1xyXG4gICAgICBjb250ZW50OiAkY2l0ZS1wc2V1ZG8tY29udGVudDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIEFiYnJldmlhdGlvbnNcclxuICBhYmJyLCBhYmJyW3RpdGxlXSB7XHJcbiAgICBib3JkZXItYm90dG9tOiAkYWJici11bmRlcmxpbmU7XHJcbiAgICBjdXJzb3I6IGhlbHA7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgfVxyXG5cclxuICAvLyBGaWd1cmVzXHJcbiAgZmlndXJlIHtcclxuICAgIG1hcmdpbjogMDtcclxuICB9XHJcbiAgXHJcbiAgLy8gQ29kZVxyXG4gIGNvZGUge1xyXG4gICAgcGFkZGluZzogJGNvZGUtcGFkZGluZztcclxuXHJcbiAgICBib3JkZXI6ICRjb2RlLWJvcmRlcjtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2RlLWJhY2tncm91bmQ7XHJcblxyXG4gICAgZm9udC1mYW1pbHk6ICRjb2RlLWZvbnQtZmFtaWx5O1xyXG4gICAgZm9udC13ZWlnaHQ6ICRjb2RlLWZvbnQtd2VpZ2h0O1xyXG4gICAgY29sb3I6ICRjb2RlLWNvbG9yO1xyXG4gIH1cclxuXHJcbiAgLy8gS2V5c3Ryb2tlc1xyXG4gIGtiZCB7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBwYWRkaW5nOiAka2V5c3Ryb2tlLXBhZGRpbmc7XHJcblxyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGtleXN0cm9rZS1iYWNrZ3JvdW5kO1xyXG5cclxuICAgIGZvbnQtZmFtaWx5OiAka2V5c3Ryb2tlLWZvbnQ7XHJcbiAgICBjb2xvcjogJGtleXN0cm9rZS1jb2xvcjtcclxuXHJcbiAgICBAaWYgaGFzLXZhbHVlKCRrZXlzdHJva2UtcmFkaXVzKSB7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6ICRrZXlzdHJva2UtcmFkaXVzO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgdHlwb2dyYXBoeS1oZWxwZXJzXHJcbi8vLy9cclxuXHJcbi8vLyBEZWZhdWx0IGZvbnQgc2l6ZSBmb3IgbGVhZCBwYXJhZ3JhcGhzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRsZWFkLWZvbnQtc2l6ZTogJGdsb2JhbC1mb250LXNpemUgKiAxLjI1ICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgbGluZSBoZWlnaHQgZm9yIGxlYWQgcGFyYWdyYXBocy5cclxuLy8vIEB0eXBlIFN0cmluZ1xyXG4kbGVhZC1saW5laGVpZ2h0OiAxLjYgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBsaW5lIGhlaWdodCBmb3Igc3ViaGVhZGVycy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kc3ViaGVhZGVyLWxpbmVoZWlnaHQ6IDEuNCAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGZvbnQgY29sb3IgZm9yIHN1YmhlYWRlcnMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kc3ViaGVhZGVyLWNvbG9yOiAkZGFyay1ncmF5ICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgZm9udCB3ZWlnaHQgZm9yIHN1YmhlYWRlcnMuXHJcbi8vLyBAdHlwZSBTdHJpbmdcclxuJHN1YmhlYWRlci1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgdG9wIG1hcmdpbiBmb3Igc3ViaGhlYWRlcnMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHN1YmhlYWRlci1tYXJnaW4tdG9wOiAwLjJyZW0gIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBib3R0b20gbWFyZ2luIGZvciBzdWJoZWFkZXJzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRzdWJoZWFkZXItbWFyZ2luLWJvdHRvbTogMC41cmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgZm9udCBzaXplIGZvciBzdGF0aXN0aWMgbnVtYmVycy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kc3RhdC1mb250LXNpemU6IDIuNXJlbSAhZGVmYXVsdDtcclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLXR5cG9ncmFwaHktaGVscGVycyB7XHJcbiAgLy8gVXNlIHRvIGNyZWF0ZSBhIHN1YmhlYWRpbmcgdW5kZXIgYSBtYWluIGhlYWRlclxyXG4gIC8vIE1ha2Ugc3VyZSB5b3UgcGFpciB0aGUgdHdvIGVsZW1lbnRzIGluIGEgPGhlYWRlcj4gZWxlbWVudCwgbGlrZSB0aGlzOlxyXG4gIC8vIDxoZWFkZXI+XHJcbiAgLy8gICA8aDE+SGVhZGluZzwvaDE+XHJcbiAgLy8gICA8aDI+U3ViaGVhZGluZzwvaDI+XHJcbiAgLy8gPC9oZWFkZXI+XHJcbiAgLnN1YmhlYWRlciB7XHJcbiAgICBtYXJnaW4tdG9wOiAkc3ViaGVhZGVyLW1hcmdpbi10b3A7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAkc3ViaGVhZGVyLW1hcmdpbi1ib3R0b207XHJcblxyXG4gICAgZm9udC13ZWlnaHQ6ICRzdWJoZWFkZXItZm9udC13ZWlnaHQ7XHJcbiAgICBsaW5lLWhlaWdodDogJHN1YmhlYWRlci1saW5laGVpZ2h0O1xyXG4gICAgY29sb3I6ICRzdWJoZWFkZXItY29sb3I7XHJcbiAgfVxyXG5cclxuICAvLyBVc2UgdG8gc3R5bGUgYW4gaW50cm9kdWN0b3J5IGxlYWQsIGRlY2ssIGJsdXJiLCBldGMuXHJcbiAgLmxlYWQge1xyXG4gICAgZm9udC1zaXplOiAkbGVhZC1mb250LXNpemU7XHJcbiAgICBsaW5lLWhlaWdodDogJGxlYWQtbGluZWhlaWdodDtcclxuICB9XHJcblxyXG4gIC8vIFVzZSB0byBzdHlsZSBhIGxhcmdlIG51bWJlciB0byBkaXNwbGF5IGEgc3RhdGlzdGljXHJcbiAgLnN0YXQge1xyXG4gICAgZm9udC1zaXplOiAkc3RhdC1mb250LXNpemU7XHJcbiAgICBsaW5lLWhlaWdodDogMTtcclxuXHJcbiAgICBwICsgJiB7XHJcbiAgICAgIG1hcmdpbi10b3A6IC0xcmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdWwsIG9sIHtcclxuICAgIC8vIFVzZSB0byByZW1vdmUgbnVtYmVycyBmcm9tIG9yZGVyZWQgbGlzdCAmIGJ1bGxldHMgZnJvbSB1bm9yZGVyZWQgbGlzdFxyXG4gICAgJi5uby1idWxsZXQge1xyXG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAwO1xyXG4gICAgICBsaXN0LXN0eWxlOiBub25lO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi10ZXh0LWFsaWdubWVudCB7XHJcbiAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XHJcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XHJcbiAgICAgIEBlYWNoICRhbGlnbiBpbiAobGVmdCwgcmlnaHQsIGNlbnRlciwganVzdGlmeSkge1xyXG4gICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XHJcbiAgICAgICAgICAuI3skc2l6ZX0tdGV4dC0jeyRhbGlnbn0ge1xyXG4gICAgICAgICAgICB0ZXh0LWFsaWduOiAkYWxpZ247XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBlbHNlIHtcclxuICAgICAgICAgIC50ZXh0LSN7JGFsaWdufSB7XHJcbiAgICAgICAgICAgIHRleHQtYWxpZ246ICRhbGlnbjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vIElmIGB0cnVlYCwgYWxsIGVsZW1lbnRzIHdpbGwgaGF2ZSB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kcyB3aGVuIHByaW50ZWQsIHRvIHNhdmUgb24gaW5rLlxyXG4vLy8gQHR5cGUgQm9vbGVhblxyXG4vLy8gQGdyb3VwIGdsb2JhbFxyXG4kcHJpbnQtdHJhbnNwYXJlbnQtYmFja2dyb3VuZHM6IHRydWUgIWRlZmF1bHQ7XHJcbiRwcmludC1ocmVmczogdHJ1ZSAhZGVmYXVsdDtcclxuXHJcbi8vIHNhc3MtbGludDpkaXNhYmxlLWFsbFxyXG5cclxuQG1peGluIGZvdW5kYXRpb24tcHJpbnQtc3R5bGVzIHtcclxuICAuc2hvdy1mb3ItcHJpbnQgeyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH1cclxuXHJcbiAgQG1lZGlhIHByaW50IHtcclxuICAgICoge1xyXG4gICAgICBAaWYgJHByaW50LXRyYW5zcGFyZW50LWJhY2tncm91bmRzIHtcclxuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XHJcblxyXG4gICAgICBjb2xvcjogYmxhY2sgIWltcG9ydGFudDsgLy8gQmxhY2sgcHJpbnRzIGZhc3RlcjogaDVicC5jb20vc1xyXG4gICAgICB0ZXh0LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG5cclxuICAgIC5zaG93LWZvci1wcmludCB7IGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH1cclxuICAgIC5oaWRlLWZvci1wcmludCB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfVxyXG5cclxuICAgIHRhYmxlLnNob3ctZm9yLXByaW50IHsgZGlzcGxheTogdGFibGUgIWltcG9ydGFudDsgfVxyXG4gICAgdGhlYWQuc2hvdy1mb3ItcHJpbnQgeyBkaXNwbGF5OiB0YWJsZS1oZWFkZXItZ3JvdXAgIWltcG9ydGFudDsgfVxyXG4gICAgdGJvZHkuc2hvdy1mb3ItcHJpbnQgeyBkaXNwbGF5OiB0YWJsZS1yb3ctZ3JvdXAgIWltcG9ydGFudDsgfVxyXG4gICAgdHIuc2hvdy1mb3ItcHJpbnQgeyBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsgfVxyXG4gICAgdGQuc2hvdy1mb3ItcHJpbnQgeyBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7IH1cclxuICAgIHRoLnNob3ctZm9yLXByaW50IHsgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OyB9XHJcblxyXG4gICAgLy8gRGlzcGxheSB0aGUgVVJMIG9mIGEgbGluayBhZnRlciB0aGUgdGV4dFxyXG4gICAgYSxcclxuICAgIGE6dmlzaXRlZCB7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO31cclxuICAgIEBpZiAkcHJpbnQtaHJlZnMge1xyXG4gICAgICBhW2hyZWZdOmFmdGVyIHsgY29udGVudDogJyAoJyBhdHRyKGhyZWYpICcpJzsgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIERvbid0IGRpc3BsYXkgdGhlIFVSTCBmb3IgaW1hZ2VzIG9yIEphdmFTY3JpcHQvaW50ZXJuYWwgbGlua3NcclxuICAgIC5pciBhOmFmdGVyLFxyXG4gICAgYVtocmVmXj0namF2YXNjcmlwdDonXTphZnRlcixcclxuICAgIGFbaHJlZl49JyMnXTphZnRlciB7IGNvbnRlbnQ6ICcnOyB9XHJcblxyXG4gICAgLy8gRGlzcGxheSB3aGF0IGFuIGFiYnJldmlhdGlvbiBzdGFuZHMgZm9yIGFmdGVyIHRoZSB0ZXh0XHJcbiAgICBhYmJyW3RpdGxlXTphZnRlciB7IGNvbnRlbnQ6ICcgKCcgYXR0cih0aXRsZSkgJyknOyB9XHJcblxyXG4gICAgLy8gUHJldmVudCBwYWdlIGJyZWFrcyBpbiB0aGUgbWlkZGxlIG9mIGEgYmxvY2txdW90ZSBvciBwcmVmb3JtYXR0ZWQgdGV4dCBibG9ja1xyXG4gICAgcHJlLFxyXG4gICAgYmxvY2txdW90ZSB7XHJcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRkYXJrLWdyYXk7XHJcbiAgICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBoNWJwLmNvbS90XHJcbiAgICB0aGVhZCB7IGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cDsgfVxyXG5cclxuICAgIHRyLFxyXG4gICAgaW1nIHsgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkOyB9XHJcblxyXG4gICAgaW1nIHsgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IH1cclxuXHJcbiAgICBAcGFnZSB7IG1hcmdpbjogMC41Y207IH1cclxuXHJcbiAgICBwLFxyXG4gICAgaDIsXHJcbiAgICBoMyB7XHJcbiAgICAgIG9ycGhhbnM6IDM7XHJcbiAgICAgIHdpZG93czogMztcclxuICAgIH1cclxuXHJcbiAgICAvLyBBdm9pZCBwYWdlIGJyZWFrcyBhZnRlciBhIGhlYWRpbmdcclxuICAgIGgyLFxyXG4gICAgaDMgeyBwYWdlLWJyZWFrLWFmdGVyOiBhdm9pZDsgfVxyXG5cclxuICAgIC8vIEhlbHBlciB0byByZS1hbGxvdyBwYWdlIGJyZWFrcyBpbiB0aGUgbWlkZGxlIG9mIGNlcnRhaW4gZWxlbWVudHMgKGUuZy4gcHJlLCBibG9ja3F1b3RlLCB0cilcclxuICAgIC5wcmludC1icmVhay1pbnNpZGUge1xyXG4gICAgICBwYWdlLWJyZWFrLWluc2lkZTogYXV0bztcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIGZvcm1zXHJcbi8vLy9cclxuXHJcbi8vLyBHbG9iYWwgc3BhY2luZyBmb3IgZm9ybSBlbGVtZW50cy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kZm9ybS1zcGFjaW5nOiByZW0tY2FsYygxNikgIWRlZmF1bHQ7XHJcblxyXG5AaW1wb3J0ICd0ZXh0JztcclxuQGltcG9ydCAnY2hlY2tib3gnO1xyXG5AaW1wb3J0ICdsYWJlbCc7XHJcbkBpbXBvcnQgJ2hlbHAtdGV4dCc7XHJcbkBpbXBvcnQgJ2lucHV0LWdyb3VwJztcclxuQGltcG9ydCAnZmllbGRzZXQnO1xyXG5AaW1wb3J0ICdzZWxlY3QnO1xyXG5AaW1wb3J0ICdyYW5nZSc7XHJcbkBpbXBvcnQgJ3Byb2dyZXNzJztcclxuQGltcG9ydCAnbWV0ZXInO1xyXG5AaW1wb3J0ICdlcnJvcic7XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1mb3JtcyB7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mb3JtLXRleHQ7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mb3JtLWNoZWNrYm94O1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZm9ybS1sYWJlbDtcclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZvcm0taGVscHRleHQ7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mb3JtLXByZXBvc3RmaXg7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mb3JtLWZpZWxkc2V0O1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZm9ybS1zZWxlY3Q7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mb3JtLWVycm9yO1xyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBmb3Jtc1xyXG4vLy8vXHJcblxyXG4vLy8gRm9udCBjb2xvciBvZiB0ZXh0IGlucHV0cy5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRpbnB1dC1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xyXG5cclxuLy8vIEZvbnQgY29sb3Igb2YgcGxhY2Vob2xkZXIgdGV4dCB3aXRoaW4gdGV4dCBpbnB1dHMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kaW5wdXQtcGxhY2Vob2xkZXItY29sb3I6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcclxuXHJcbi8vLyBGb250IGZhbWlseSBvZiB0ZXh0IGlucHV0cy5cclxuLy8vIEB0eXBlIEZvbnRcclxuJGlucHV0LWZvbnQtZmFtaWx5OiBpbmhlcml0ICFkZWZhdWx0O1xyXG5cclxuLy8vIEZvbnQgc2l6ZSBvZiB0ZXh0IGlucHV0cy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kaW5wdXQtZm9udC1zaXplOiByZW0tY2FsYygxNikgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRm9udCB3ZWlnaHQgb2YgdGV4dCBpbnB1dHMuXHJcbi8vLyBAdHlwZSBLZXl3b3JkXHJcbiRpbnB1dC1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsICFkZWZhdWx0O1xyXG5cclxuLy8vIExpbmUgaGVpZ2h0IG9mIHRleHQgaW5wdXRzLlxyXG4vLy8gQHR5cGUgS2V5d29yZFxyXG4kaW5wdXQtbGluZS1oZWlnaHQ6ICRnbG9iYWwtbGluZWhlaWdodCAhZGVmYXVsdDtcclxuXHJcbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRleHQgaW5wdXRzLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGlucHV0LWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGZvY3VzZWQgb2YgdGV4dCBpbnB1dHMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kaW5wdXQtYmFja2dyb3VuZC1mb2N1czogJHdoaXRlICFkZWZhdWx0O1xyXG5cclxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgZGlzYWJsZWQgdGV4dCBpbnB1dHMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kaW5wdXQtYmFja2dyb3VuZC1kaXNhYmxlZDogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQm9yZGVyIGFyb3VuZCB0ZXh0IGlucHV0cy5cclxuLy8vIEB0eXBlIEJvcmRlclxyXG4kaW5wdXQtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xyXG5cclxuLy8vIEJvcmRlciBhcm91bmQgZm9jdXNlZCB0ZXh0IGlucHV0cy5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRpbnB1dC1ib3JkZXItZm9jdXM6IDFweCBzb2xpZCAkZGFyay1ncmF5ICFkZWZhdWx0O1xyXG5cclxuLy8vIFBhZGRpbmcgb2YgdGV4dCBpbnB1dHMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kaW5wdXQtcGFkZGluZzogJGZvcm0tc3BhY2luZyAvIDIgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQm94IHNoYWRvdyBpbnNpZGUgdGV4dCBpbnB1dHMgd2hlbiBub3QgZm9jdXNlZC5cclxuLy8vIEB0eXBlIFNoYWRvd1xyXG4kaW5wdXQtc2hhZG93OiBpbnNldCAwIDFweCAycHggcmdiYSgkYmxhY2ssIDAuMSkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQm94IHNoYWRvdyBvdXRzaWRlIHRleHQgaW5wdXRzIHdoZW4gZm9jdXNlZC5cclxuLy8vIEB0eXBlIFNoYWRvd1xyXG4kaW5wdXQtc2hhZG93LWZvY3VzOiAwIDAgNXB4ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcclxuXHJcbi8vLyBDdXJzb3IgdG8gdXNlIHdoZW4gaG92ZXJpbmcgb3ZlciBhIGRpc2FibGVkIHRleHQgaW5wdXQuXHJcbi8vLyBAdHlwZSBDdXJzb3JcclxuJGlucHV0LWN1cnNvci1kaXNhYmxlZDogbm90LWFsbG93ZWQgIWRlZmF1bHQ7XHJcblxyXG4vLy8gUHJvcGVydGllcyB0byB0cmFuc2l0aW9uIG9uIHRleHQgaW5wdXRzLlxyXG4vLy8gQHR5cGUgVHJhbnNpdGlvblxyXG4kaW5wdXQtdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjVzLCBib3JkZXItY29sb3IgMC4yNXMgZWFzZS1pbi1vdXQgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRW5hYmxlcyB0aGUgdXAvZG93biBidXR0b25zIHRoYXQgQ2hyb21lIGFuZCBGaXJlZm94IGFkZCB0byBgPGlucHV0IHR5cGU9J251bWJlcic+YCBlbGVtZW50cy5cclxuLy8vIEB0eXBlIEJvb2xlYW5cclxuJGlucHV0LW51bWJlci1zcGlubmVyczogdHJ1ZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBSYWRpdXMgZm9yIHRleHQgaW5wdXRzLlxyXG4vLy8gQHR5cGUgQm9yZGVyXHJcbiRpbnB1dC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xyXG5cclxuLy8vIEJvcmRlciByYWRpdXMgZm9yIGZvcm0gYnV0dG9ucywgZGVmYXVsdGVkIHRvIGdsb2JhbC1yYWRpdXMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGZvcm0tYnV0dG9uLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XHJcblxyXG5AbWl4aW4gZm9ybS1lbGVtZW50IHtcclxuICAkaGVpZ2h0OiAoJGlucHV0LWZvbnQtc2l6ZSAqIHVuaXRsZXNzLWNhbGMoJGlucHV0LWxpbmUtaGVpZ2h0KSkgKyAoZ2V0LXNpZGUoJGlucHV0LXBhZGRpbmcsICd0b3AnKSArIGdldC1zaWRlKCRpbnB1dC1wYWRkaW5nLCAnYm90dG9tJykpIC0gcmVtLWNhbGMoMSk7XHJcblxyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAkaGVpZ2h0O1xyXG4gIG1hcmdpbjogMCAwICRmb3JtLXNwYWNpbmc7XHJcbiAgcGFkZGluZzogJGlucHV0LXBhZGRpbmc7XHJcblxyXG4gIGJvcmRlcjogJGlucHV0LWJvcmRlcjtcclxuICBib3JkZXItcmFkaXVzOiAkaW5wdXQtcmFkaXVzO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1iYWNrZ3JvdW5kO1xyXG4gIGJveC1zaGFkb3c6ICRpbnB1dC1zaGFkb3c7XHJcblxyXG4gIGZvbnQtZmFtaWx5OiAkaW5wdXQtZm9udC1mYW1pbHk7XHJcbiAgZm9udC1zaXplOiAkaW5wdXQtZm9udC1zaXplO1xyXG4gIGZvbnQtd2VpZ2h0OiAkaW5wdXQtZm9udC13ZWlnaHQ7XHJcbiAgbGluZS1oZWlnaHQ6ICRpbnB1dC1saW5lLWhlaWdodDtcclxuICBjb2xvcjogJGlucHV0LWNvbG9yO1xyXG5cclxuICBAaWYgaGFzLXZhbHVlKCRpbnB1dC10cmFuc2l0aW9uKSB7XHJcbiAgICB0cmFuc2l0aW9uOiAkaW5wdXQtdHJhbnNpdGlvbjtcclxuICB9XHJcblxyXG4gIC8vIEZvY3VzIHN0YXRlXHJcbiAgJjpmb2N1cyB7XHJcbiAgICBvdXRsaW5lOiBub25lO1xyXG4gICAgYm9yZGVyOiAkaW5wdXQtYm9yZGVyLWZvY3VzO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWJhY2tncm91bmQtZm9jdXM7XHJcbiAgICBib3gtc2hhZG93OiAkaW5wdXQtc2hhZG93LWZvY3VzO1xyXG5cclxuICAgIEBpZiBoYXMtdmFsdWUoJGlucHV0LXRyYW5zaXRpb24pIHtcclxuICAgICAgdHJhbnNpdGlvbjogJGlucHV0LXRyYW5zaXRpb247XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1mb3JtLXRleHQge1xyXG4gIC8vIFRleHQgaW5wdXRzXHJcbiAgI3t0ZXh0LWlucHV0cygpfSxcclxuICB0ZXh0YXJlYSB7XHJcbiAgICBAaW5jbHVkZSBmb3JtLWVsZW1lbnQ7XHJcbiAgICBhcHBlYXJhbmNlOiBub25lO1xyXG4gIH1cclxuXHJcbiAgLy8gVGV4dCBhcmVhc1xyXG4gIHRleHRhcmVhIHtcclxuICAgIG1heC13aWR0aDogMTAwJTtcclxuXHJcbiAgICAmW3Jvd3NdIHtcclxuICAgICAgaGVpZ2h0OiBhdXRvO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5wdXQsXHJcbiAgdGV4dGFyZWEge1xyXG4gICAgLy8gUGxhY2Vob2xkZXIgdGV4dFxyXG4gICAgJjo6cGxhY2Vob2xkZXIge1xyXG4gICAgICBjb2xvcjogJGlucHV0LXBsYWNlaG9sZGVyLWNvbG9yO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIERpc2FibGVkL3JlYWRvbmx5IHN0YXRlXHJcbiAgICAmOmRpc2FibGVkLFxyXG4gICAgJltyZWFkb25seV0ge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaW5wdXQtYmFja2dyb3VuZC1kaXNhYmxlZDtcclxuICAgICAgY3Vyc29yOiAkaW5wdXQtY3Vyc29yLWRpc2FibGVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gUmVzZXQgc3R5bGVzIG9uIGJ1dHRvbi1saWtlIGlucHV0c1xyXG4gIFt0eXBlPSdzdWJtaXQnXSxcclxuICBbdHlwZT0nYnV0dG9uJ10ge1xyXG4gICAgYXBwZWFyYW5jZTogbm9uZTtcclxuICAgIGJvcmRlci1yYWRpdXM6ICRmb3JtLWJ1dHRvbi1yYWRpdXM7XHJcbiAgfVxyXG5cclxuICAvLyBSZXNldCBOb3JtYWxpemUgc2V0dGluZyBjb250ZW50LWJveCB0byBzZWFyY2ggZWxlbWVudHNcclxuICBpbnB1dFt0eXBlPSdzZWFyY2gnXSB7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tcXVhbGlmeWluZy1lbGVtZW50c1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICB9XHJcblxyXG4gIC8vIE51bWJlciBpbnB1dCBzdHlsZXNcclxuICBbdHlwZT0nbnVtYmVyJ10ge1xyXG4gICAgQGlmIG5vdCAkaW5wdXQtbnVtYmVyLXNwaW5uZXJzIHtcclxuICAgICAgLW1vei1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tdmVuZG9yLXByZWZpeFxyXG5cclxuICAgICAgJjo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcclxuICAgICAgJjo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XHJcbiAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXZlbmRvci1wcmVmaXhcclxuICAgICAgICBtYXJnaW46IDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIGZvcm1zXHJcbi8vLy9cclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLWZvcm0tY2hlY2tib3gge1xyXG4gIFt0eXBlPSdmaWxlJ10sXHJcbiAgW3R5cGU9J2NoZWNrYm94J10sXHJcbiAgW3R5cGU9J3JhZGlvJ10ge1xyXG4gICAgbWFyZ2luOiAwIDAgJGZvcm0tc3BhY2luZztcclxuICB9XHJcblxyXG4gIC8vIFN0eWxlcyBmb3IgaW5wdXQvbGFiZWwgc2libGluZ3NcclxuICBbdHlwZT0nY2hlY2tib3gnXSArIGxhYmVsLFxyXG4gIFt0eXBlPSdyYWRpbyddICsgbGFiZWwge1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xyXG5cclxuICAgIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06ICRmb3JtLXNwYWNpbmcgKiAwLjU7XHJcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJGZvcm0tc3BhY2luZztcclxuICAgIG1hcmdpbi1ib3R0b206IDA7XHJcblxyXG4gICAgJltmb3JdIHtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gU3R5bGVzIGZvciBpbnB1dHMgaW5zaWRlIGxhYmVsc1xyXG4gIGxhYmVsID4gW3R5cGU9J2NoZWNrYm94J10sXHJcbiAgbGFiZWwgPiBbdHlwZT0ncmFkaW8nXSB7XHJcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJGZvcm0tc3BhY2luZyAqIDAuNTtcclxuICB9XHJcblxyXG4gIC8vIE5vcm1hbGl6ZSBmaWxlIGlucHV0IHdpZHRoXHJcbiAgW3R5cGU9J2ZpbGUnXSB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIGZvcm1zXHJcbi8vLy9cclxuXHJcbi8vLyBDb2xvciBmb3IgZm9ybSBsYWJlbHMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kZm9ybS1sYWJlbC1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xyXG5cclxuLy8vIEZvbnQgc2l6ZSBmb3IgZm9ybSBsYWJlbHMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGZvcm0tbGFiZWwtZm9udC1zaXplOiByZW0tY2FsYygxNCkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRm9udCB3ZWlnaHQgZm9yIGZvcm0gbGFiZWxzLlxyXG4vLy8gQHR5cGUgS2V5d29yZFxyXG4kZm9ybS1sYWJlbC1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsICFkZWZhdWx0O1xyXG5cclxuLy8vIExpbmUgaGVpZ2h0IGZvciBmb3JtIGxhYmVscy4gVGhlIGhpZ2hlciB0aGUgbnVtYmVyLCB0aGUgbW9yZSBzcGFjZSBiZXR3ZWVuIHRoZSBsYWJlbCBhbmQgaXRzIGlucHV0IGZpZWxkLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRmb3JtLWxhYmVsLWxpbmUtaGVpZ2h0OiAxLjggIWRlZmF1bHQ7XHJcblxyXG5AbWl4aW4gZm9ybS1sYWJlbCB7XHJcbiAgZGlzcGxheTogYmxvY2s7XHJcbiAgbWFyZ2luOiAwO1xyXG5cclxuICBmb250LXNpemU6ICRmb3JtLWxhYmVsLWZvbnQtc2l6ZTtcclxuICBmb250LXdlaWdodDogJGZvcm0tbGFiZWwtZm9udC13ZWlnaHQ7XHJcbiAgbGluZS1oZWlnaHQ6ICRmb3JtLWxhYmVsLWxpbmUtaGVpZ2h0O1xyXG4gIGNvbG9yOiAkZm9ybS1sYWJlbC1jb2xvcjtcclxufVxyXG5cclxuQG1peGluIGZvcm0tbGFiZWwtbWlkZGxlIHtcclxuICAkaW5wdXQtYm9yZGVyLXdpZHRoOiBnZXQtYm9yZGVyLXZhbHVlKCRpbnB1dC1ib3JkZXIsIHdpZHRoKTtcclxuXHJcbiAgbWFyZ2luOiAwIDAgJGZvcm0tc3BhY2luZztcclxuICBwYWRkaW5nOiAoJGZvcm0tc3BhY2luZyAvIDIgKyByZW0tY2FsYygkaW5wdXQtYm9yZGVyLXdpZHRoKSkgMDtcclxufVxyXG5cclxuQG1peGluIGZvdW5kYXRpb24tZm9ybS1sYWJlbCB7XHJcbiAgbGFiZWwge1xyXG4gICAgQGluY2x1ZGUgZm9ybS1sYWJlbDtcclxuXHJcbiAgICAmLm1pZGRsZSB7XHJcbiAgICAgIEBpbmNsdWRlIGZvcm0tbGFiZWwtbWlkZGxlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgZm9ybXNcclxuLy8vL1xyXG5cclxuLy8vIERlZmF1bHQgY29sb3IgZm9yIGhlbHAgdGV4dC5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRoZWxwdGV4dC1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgZm9udCBzaXplIGZvciBoZWxwIHRleHQuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGhlbHB0ZXh0LWZvbnQtc2l6ZTogcmVtLWNhbGMoMTMpICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgZm9udCBzdHlsZSBmb3IgaGVscCB0ZXh0LlxyXG4vLy8gQHR5cGUgS2V5d29yZFxyXG4kaGVscHRleHQtZm9udC1zdHlsZTogaXRhbGljICFkZWZhdWx0O1xyXG5cclxuQG1peGluIGZvdW5kYXRpb24tZm9ybS1oZWxwdGV4dCB7XHJcbiAgLmhlbHAtdGV4dCB7XHJcbiAgICAkbWFyZ2luLXRvcDogKCRmb3JtLXNwYWNpbmcgKiAwLjUpICogLTE7XHJcblxyXG4gICAgbWFyZ2luLXRvcDogJG1hcmdpbi10b3A7XHJcbiAgICBmb250LXNpemU6ICRoZWxwdGV4dC1mb250LXNpemU7XHJcbiAgICBmb250LXN0eWxlOiAkaGVscHRleHQtZm9udC1zdHlsZTtcclxuICAgIGNvbG9yOiAkaGVscHRleHQtY29sb3I7XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBmb3Jtc1xyXG4vLy8vXHJcblxyXG4vLy8gQ29sb3Igb2YgbGFiZWxzIHByZWZpeGVkIHRvIGFuIGlucHV0LlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGlucHV0LXByZWZpeC1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xyXG5cclxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgbGFiZWxzIHByZWZpeGVkIHRvIGFuIGlucHV0LlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGlucHV0LXByZWZpeC1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcclxuXHJcbi8vLyBCb3JkZXIgYXJvdW5kIGxhYmVscyBwcmVmaXhlZCB0byBhbiBpbnB1dC5cclxuLy8vIEB0eXBlIEJvcmRlclxyXG4kaW5wdXQtcHJlZml4LWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcclxuXHJcbi8vLyBMZWZ0L3JpZ2h0IHBhZGRpbmcgb2YgYW4gcHJlL3Bvc3RmaXhlZCBpbnB1dCBsYWJlbFxyXG4kaW5wdXQtcHJlZml4LXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1mb3JtLXByZXBvc3RmaXgge1xyXG4gICRoZWlnaHQ6ICgkaW5wdXQtZm9udC1zaXplICsgJGZvcm0tc3BhY2luZyAqIDEuNSk7XHJcblxyXG4gIC5pbnB1dC1ncm91cCB7XHJcbiAgICBkaXNwbGF5OiBpZigkZ2xvYmFsLWZsZXhib3gsIGZsZXgsIHRhYmxlKTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogJGZvcm0tc3BhY2luZztcclxuXHJcbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcclxuICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XHJcbiAgICB9XHJcblxyXG4gICAgPiA6Zmlyc3QtY2hpbGQge1xyXG4gICAgICBib3JkZXItcmFkaXVzOiBpZigkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09IHJ0bCwgMCAkaW5wdXQtcmFkaXVzICRpbnB1dC1yYWRpdXMgMCwgJGlucHV0LXJhZGl1cyAwIDAgJGlucHV0LXJhZGl1cyk7XHJcbiAgICB9XHJcblxyXG4gICAgPiA6bGFzdC1jaGlsZCB7XHJcbiAgICAgID4gKiB7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogaWYoJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSBydGwsICRpbnB1dC1yYWRpdXMgMCAwICRpbnB1dC1yYWRpdXMsIDAgJGlucHV0LXJhZGl1cyAkaW5wdXQtcmFkaXVzIDApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAlaW5wdXQtZ3JvdXAtY2hpbGQge1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuXHJcbiAgICBAaWYgbm90ICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XHJcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuaW5wdXQtZ3JvdXAtbGFiZWwge1xyXG4gICAgQGV4dGVuZCAlaW5wdXQtZ3JvdXAtY2hpbGQ7XHJcbiAgICBwYWRkaW5nOiAwICRpbnB1dC1wcmVmaXgtcGFkZGluZztcclxuICAgIGJvcmRlcjogJGlucHV0LXByZWZpeC1ib3JkZXI7XHJcbiAgICBiYWNrZ3JvdW5kOiAkaW5wdXQtcHJlZml4LWJhY2tncm91bmQ7XHJcblxyXG4gICAgY29sb3I6ICRpbnB1dC1wcmVmaXgtY29sb3I7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG5cclxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBmbGV4OiAwIDAgYXV0bztcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIH1cclxuICAgIEBlbHNlIHtcclxuICAgICAgd2lkdGg6IDElO1xyXG4gICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICB9XHJcblxyXG4gICAgQGlmIGhhcy12YWx1ZSgkaW5wdXQtcHJlZml4LWJvcmRlcikge1xyXG4gICAgICAmOmZpcnN0LWNoaWxkIHtcclxuICAgICAgICBib3JkZXItI3skZ2xvYmFsLXJpZ2h0fTogMDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJjpsYXN0LWNoaWxkIHtcclxuICAgICAgICBib3JkZXItI3skZ2xvYmFsLWxlZnR9OiAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuaW5wdXQtZ3JvdXAtZmllbGQge1xyXG4gICAgQGV4dGVuZCAlaW5wdXQtZ3JvdXAtY2hpbGQ7XHJcbiAgICBib3JkZXItcmFkaXVzOiAwO1xyXG5cclxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xyXG4gICAgICBmbGV4OiAxIDEgMHB4OyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIHplcm8tdW5pdFxyXG4gICAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICAgIG1pbi13aWR0aDogMDtcclxuICAgIH1cclxuICAgIEBlbHNlIHtcclxuICAgICAgaGVpZ2h0OiAkaGVpZ2h0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmlucHV0LWdyb3VwLWJ1dHRvbiB7XHJcbiAgICBAZXh0ZW5kICVpbnB1dC1ncm91cC1jaGlsZDtcclxuICAgIHBhZGRpbmctdG9wOiAwO1xyXG4gICAgcGFkZGluZy1ib3R0b206IDA7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblxyXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGZsZXg6IDAgMCBhdXRvO1xyXG4gICAgfVxyXG4gICAgQGVsc2Uge1xyXG4gICAgICB3aWR0aDogMSU7XHJcbiAgICAgIGhlaWdodDogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICBhLFxyXG4gICAgaW5wdXQsXHJcbiAgICBidXR0b24sXHJcbiAgICBsYWJlbCB7XHJcbiAgICAgIEBleHRlbmQgJWlucHV0LWdyb3VwLWNoaWxkO1xyXG5cclxuICAgICAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xyXG4gICAgICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7XHJcbiAgICAgIH1cclxuICAgICAgQGVsc2Uge1xyXG4gICAgICAgIGhlaWdodDogJGhlaWdodDtcclxuICAgICAgfVxyXG4gICAgICBwYWRkaW5nLXRvcDogMDtcclxuICAgICAgcGFkZGluZy1ib3R0b206IDA7XHJcbiAgICAgIGZvbnQtc2l6ZTogJGlucHV0LWZvbnQtc2l6ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFNwZWNpZmljaXR5IGJ1bXAgbmVlZGVkIHRvIHByZXZlbnQgb3ZlcnJpZGUgYnkgYnV0dG9uc1xyXG4gIEBpZiBub3QgJGdsb2JhbC1mbGV4Ym94IHtcclxuICAgICAgLmlucHV0LWdyb3VwIC5pbnB1dC1ncm91cC1idXR0b24ge1xyXG4gICAgICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcclxuICAgICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgZm9ybXNcclxuLy8vL1xyXG5cclxuLy8vIERlZmF1bHQgYm9yZGVyIGFyb3VuZCBjdXN0b20gZmllbGRzZXRzLlxyXG4vLy8gQHR5cGUgQm9yZGVyXHJcbiRmaWVsZHNldC1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBwYWRkaW5nIGluc2lkZSBjdXN0b20gZmllbGRzZXRzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRmaWVsZHNldC1wYWRkaW5nOiByZW0tY2FsYygyMCkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBtYXJnaW4gYXJvdW5kIGN1c3RvbSBmaWVsZHNldHMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGZpZWxkc2V0LW1hcmdpbjogcmVtLWNhbGMoMTggMCkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBwYWRkaW5nIGJldHdlZW4gdGhlIGxlZ2VuZCB0ZXh0IGFuZCBmaWVsZHNldCBib3JkZXIuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGxlZ2VuZC1wYWRkaW5nOiByZW0tY2FsYygwIDMpICFkZWZhdWx0O1xyXG5cclxuQG1peGluIGZpZWxkc2V0IHtcclxuICBtYXJnaW46ICRmaWVsZHNldC1tYXJnaW47XHJcbiAgcGFkZGluZzogJGZpZWxkc2V0LXBhZGRpbmc7XHJcbiAgYm9yZGVyOiAkZmllbGRzZXQtYm9yZGVyO1xyXG5cclxuICBsZWdlbmQge1xyXG4gICAgLy8gQ292ZXJzIHVwIHRoZSBmaWVsZHNldCdzIGJvcmRlciB0byBjcmVhdGUgYXJ0aWZpY2lhbCBwYWRkaW5nXHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiByZW0tY2FsYygtMyk7XHJcbiAgICBwYWRkaW5nOiAkbGVnZW5kLXBhZGRpbmc7XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1mb3JtLWZpZWxkc2V0IHtcclxuICBmaWVsZHNldCB7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gICAgYm9yZGVyOiAwO1xyXG4gIH1cclxuXHJcbiAgbGVnZW5kIHtcclxuICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgIG1hcmdpbi1ib3R0b206ICRmb3JtLXNwYWNpbmcgKiAwLjU7XHJcbiAgfVxyXG5cclxuICAuZmllbGRzZXQge1xyXG4gICAgQGluY2x1ZGUgZmllbGRzZXQ7XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBmb3Jtc1xyXG4vLy8vXHJcblxyXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3Igc2VsZWN0IG1lbnVzLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJHNlbGVjdC1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQ29sb3Igb2YgdGhlIGRyb3Bkb3duIHRyaWFuZ2xlIGluc2lkZSBzZWxlY3QgbWVudXMuIFNldCB0byBgdHJhbnNwYXJlbnRgIHRvIHJlbW92ZSBpdCBlbnRpcmVseS5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRzZWxlY3QtdHJpYW5nbGUtY29sb3I6ICRkYXJrLWdyYXkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCByYWRpdXMgZm9yIHNlbGVjdCBtZW51cy5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRzZWxlY3QtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcclxuXHJcbkBtaXhpbiBmb3JtLXNlbGVjdCB7XHJcbiAgJGhlaWdodDogKCRpbnB1dC1mb250LXNpemUgKiB1bml0bGVzcy1jYWxjKCRpbnB1dC1saW5lLWhlaWdodCkpICsgKGdldC1zaWRlKCRpbnB1dC1wYWRkaW5nLCAndG9wJykgKyBnZXQtc2lkZSgkaW5wdXQtcGFkZGluZywgJ2JvdHRvbScpKSAtIHJlbS1jYWxjKDEpO1xyXG5cclxuICBoZWlnaHQ6ICRoZWlnaHQ7XHJcbiAgbWFyZ2luOiAwIDAgJGZvcm0tc3BhY2luZztcclxuICBwYWRkaW5nOiAkaW5wdXQtcGFkZGluZztcclxuXHJcbiAgYXBwZWFyYW5jZTogbm9uZTtcclxuICBib3JkZXI6ICRpbnB1dC1ib3JkZXI7XHJcbiAgYm9yZGVyLXJhZGl1czogJHNlbGVjdC1yYWRpdXM7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogJHNlbGVjdC1iYWNrZ3JvdW5kO1xyXG5cclxuICBmb250LWZhbWlseTogJGlucHV0LWZvbnQtZmFtaWx5O1xyXG4gIGZvbnQtc2l6ZTogJGlucHV0LWZvbnQtc2l6ZTtcclxuICBmb250LXdlaWdodDogJGlucHV0LWZvbnQtd2VpZ2h0O1xyXG4gIGxpbmUtaGVpZ2h0OiAkaW5wdXQtbGluZS1oZWlnaHQ7XHJcbiAgY29sb3I6ICRpbnB1dC1jb2xvcjtcclxuXHJcbiAgQGlmICRzZWxlY3QtdHJpYW5nbGUtY29sb3IgIT0gdHJhbnNwYXJlbnQge1xyXG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC10cmlhbmdsZSgkc2VsZWN0LXRyaWFuZ2xlLWNvbG9yKTtcclxuICAgIGJhY2tncm91bmQtb3JpZ2luOiBjb250ZW50LWJveDtcclxuICAgIGJhY2tncm91bmQtcG9zaXRpb246ICRnbG9iYWwtcmlnaHQgKC0kZm9ybS1zcGFjaW5nKSBjZW50ZXI7XHJcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xyXG4gICAgYmFja2dyb3VuZC1zaXplOiA5cHggNnB4O1xyXG5cclxuICAgIHBhZGRpbmctI3skZ2xvYmFsLXJpZ2h0fTogKCRmb3JtLXNwYWNpbmcgKiAxLjUpO1xyXG4gIH1cclxuXHJcbiAgQGlmIGhhcy12YWx1ZSgkaW5wdXQtdHJhbnNpdGlvbikge1xyXG4gICAgdHJhbnNpdGlvbjogJGlucHV0LXRyYW5zaXRpb247XHJcbiAgfVxyXG5cclxuICAvLyBGb2N1cyBzdGF0ZVxyXG4gICY6Zm9jdXMge1xyXG4gICAgb3V0bGluZTogbm9uZTtcclxuICAgIGJvcmRlcjogJGlucHV0LWJvcmRlci1mb2N1cztcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1iYWNrZ3JvdW5kLWZvY3VzO1xyXG4gICAgYm94LXNoYWRvdzogJGlucHV0LXNoYWRvdy1mb2N1cztcclxuXHJcbiAgICBAaWYgaGFzLXZhbHVlKCRpbnB1dC10cmFuc2l0aW9uKSB7XHJcbiAgICAgIHRyYW5zaXRpb246ICRpbnB1dC10cmFuc2l0aW9uO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gRGlzYWJsZWQgc3RhdGVcclxuICAmOmRpc2FibGVkIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1iYWNrZ3JvdW5kLWRpc2FibGVkO1xyXG4gICAgY3Vyc29yOiAkaW5wdXQtY3Vyc29yLWRpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgLy8gSGlkZSB0aGUgZHJvcGRvd24gYXJyb3cgc2hvd24gaW4gbmV3ZXIgSUUgdmVyc2lvbnNcclxuICAmOjotbXMtZXhwYW5kIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgfVxyXG5cclxuICAmW211bHRpcGxlXSB7XHJcbiAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xyXG4gIH1cclxufVxyXG5cclxuQG1peGluIGZvdW5kYXRpb24tZm9ybS1zZWxlY3Qge1xyXG4gIHNlbGVjdCB7XHJcbiAgICBAaW5jbHVkZSBmb3JtLXNlbGVjdDtcclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIHNsaWRlclxyXG4vLy8vXHJcblxyXG4vLy8gRGVmYXVsdCBoZWlnaHQgb2YgdGhlIHNsaWRlci5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kc2xpZGVyLWhlaWdodDogMC41cmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgc2xpZGVyJ3MgdHJhY2suXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kc2xpZGVyLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgY29sb3Igb2YgdGhlIGFjdGl2ZSBmaWxsIGNvbG9yIG9mIHRoZSBzbGlkZXIuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kc2xpZGVyLWZpbGwtYmFja2dyb3VuZDogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgaGVpZ2h0IG9mIHRoZSBoYW5kbGUgb2YgdGhlIHNsaWRlci5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kc2xpZGVyLWhhbmRsZS1oZWlnaHQ6IDEuNHJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IHdpZHRoIG9mIHRoZSBoYW5kbGUgb2YgdGhlIHNsaWRlci5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kc2xpZGVyLWhhbmRsZS13aWR0aDogMS40cmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgY29sb3Igb2YgdGhlIGhhbmRsZSBmb3IgdGhlIHNsaWRlci5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRzbGlkZXItaGFuZGxlLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgZmFkZSBhbW91bnQgb2YgYSBkaXNhYmxlZCBzbGlkZXIuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHNsaWRlci1vcGFjaXR5LWRpc2FibGVkOiAwLjI1ICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgcmFkaXVzIGZvciBzbGlkZXIuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHNsaWRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xyXG5cclxuQG1peGluIGZvdW5kYXRpb24tcmFuZ2UtaW5wdXQge1xyXG4gIGlucHV0W3R5cGU9XCJyYW5nZVwiXSB7ICAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXF1YWxpZnlpbmctZWxlbWVudHNcclxuICAgICRtYXJnaW46ICgkc2xpZGVyLWhhbmRsZS1oZWlnaHQgLSAkc2xpZGVyLWhlaWdodCkgLyAyO1xyXG5cclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICBtYXJnaW4tdG9wOiAkbWFyZ2luO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbjtcclxuXHJcbiAgICBhcHBlYXJhbmNlOiBub25lO1xyXG4gICAgYm9yZGVyOiAwO1xyXG4gICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcblxyXG4gICAgQGlmIGhhcy12YWx1ZSgkc2xpZGVyLXJhZGl1cykge1xyXG4gICAgICBib3JkZXItcmFkaXVzOiAkc2xpZGVyLXJhZGl1cztcclxuICAgIH1cclxuXHJcbiAgICAmOmZvY3VzIHtcclxuICAgICAgb3V0bGluZTogMDtcclxuICAgIH1cclxuXHJcbiAgICAmW2Rpc2FibGVkXSB7XHJcbiAgICAgIG9wYWNpdHk6ICRzbGlkZXItb3BhY2l0eS1kaXNhYmxlZDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBzYXNzLWxpbnQ6ZGlzYWJsZSBuby12ZW5kb3ItcHJlZml4XHJcblxyXG4gICAgLy8gQ2hyb21lL1NhZmFyaVxyXG4gICAgJjo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2sge1xyXG4gICAgICBoZWlnaHQ6ICRzbGlkZXItaGVpZ2h0O1xyXG4gICAgICBiYWNrZ3JvdW5kOiAkc2xpZGVyLWJhY2tncm91bmQ7XHJcbiAgICB9XHJcblxyXG4gICAgJjo6LXdlYmtpdC1zbGlkZXItaGFuZGxlIHtcclxuICAgICAgd2lkdGg6ICRzbGlkZXItaGFuZGxlLXdpZHRoO1xyXG4gICAgICBoZWlnaHQ6ICRzbGlkZXItaGFuZGxlLWhlaWdodDtcclxuICAgICAgbWFyZ2luLXRvcDogLSRtYXJnaW47XHJcblxyXG4gICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XHJcbiAgICAgIGJhY2tncm91bmQ6ICRzbGlkZXItaGFuZGxlLWJhY2tncm91bmQ7XHJcblxyXG4gICAgICBAaWYgaGFzLXZhbHVlKCRzbGlkZXItcmFkaXVzKSB7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHNsaWRlci1yYWRpdXM7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBGaXJlZm94XHJcbiAgICAmOjotbW96LXJhbmdlLXRyYWNrIHtcclxuICAgICAgaGVpZ2h0OiAkc2xpZGVyLWhlaWdodDtcclxuICAgICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xyXG4gICAgICBiYWNrZ3JvdW5kOiAkc2xpZGVyLWJhY2tncm91bmQ7XHJcbiAgICB9XHJcblxyXG4gICAgJjo6LW1vei1yYW5nZS10aHVtYiB7XHJcbiAgICAgIHdpZHRoOiAkc2xpZGVyLWhhbmRsZS13aWR0aDtcclxuICAgICAgaGVpZ2h0OiAkc2xpZGVyLWhhbmRsZS1oZWlnaHQ7XHJcbiAgICAgIG1hcmdpbi10b3A6IC0kbWFyZ2luO1xyXG5cclxuICAgICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xyXG4gICAgICBiYWNrZ3JvdW5kOiAkc2xpZGVyLWhhbmRsZS1iYWNrZ3JvdW5kO1xyXG5cclxuICAgICAgQGlmIGhhcy12YWx1ZSgkc2xpZGVyLXJhZGl1cykge1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRzbGlkZXItcmFkaXVzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSW50ZXJuZXQgRXhwbG9yZXJcclxuICAgICY6Oi1tcy10cmFjayB7XHJcbiAgICAgIGhlaWdodDogJHNsaWRlci1oZWlnaHQ7XHJcblxyXG4gICAgICBib3JkZXI6IDA7XHJcbiAgICAgIGJvcmRlci10b3A6ICRtYXJnaW4gc29saWQgJGJvZHktYmFja2dyb3VuZDtcclxuICAgICAgYm9yZGVyLWJvdHRvbTogJG1hcmdpbiBzb2xpZCAkYm9keS1iYWNrZ3JvdW5kO1xyXG4gICAgICBiYWNrZ3JvdW5kOiAkc2xpZGVyLWJhY2tncm91bmQ7XHJcblxyXG4gICAgICBvdmVyZmxvdzogdmlzaWJsZTtcclxuICAgICAgY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgfVxyXG5cclxuICAgICY6Oi1tcy10aHVtYiB7XHJcbiAgICAgIHdpZHRoOiAkc2xpZGVyLWhhbmRsZS13aWR0aDtcclxuICAgICAgaGVpZ2h0OiAkc2xpZGVyLWhhbmRsZS1oZWlnaHQ7XHJcbiAgICAgIGJvcmRlcjogMDtcclxuICAgICAgYmFja2dyb3VuZDogJHNsaWRlci1oYW5kbGUtYmFja2dyb3VuZDtcclxuXHJcbiAgICAgIEBpZiBoYXMtdmFsdWUoJHNsaWRlci1yYWRpdXMpIHtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiAkc2xpZGVyLXJhZGl1cztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICY6Oi1tcy1maWxsLWxvd2VyIHtcclxuICAgICAgYmFja2dyb3VuZDogJHNsaWRlci1maWxsLWJhY2tncm91bmQ7XHJcbiAgICB9XHJcblxyXG4gICAgJjo6LW1zLWZpbGwtdXBwZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kOiAkc2xpZGVyLWJhY2tncm91bmQ7XHJcbiAgICB9XHJcblxyXG4gICAgQGF0LXJvb3Qge1xyXG4gICAgICBvdXRwdXQge1xyXG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDAuNWVtO1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkc2xpZGVyLWhhbmRsZS1oZWlnaHQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIHByb2dyZXNzLWJhclxyXG4vLy8vXHJcblxyXG4vLy8gSGVpZ2h0IG9mIGEgcHJvZ3Jlc3MgYmFyLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRwcm9ncmVzcy1oZWlnaHQ6IDFyZW0gIWRlZmF1bHQ7XHJcblxyXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBhIHByb2dyZXNzIGJhci5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRwcm9ncmVzcy1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQm90dG9tIG1hcmdpbiBvZiBhIHByb2dyZXNzIGJhci5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kcHJvZ3Jlc3MtbWFyZ2luLWJvdHRvbTogJGdsb2JhbC1tYXJnaW4gIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBjb2xvciBvZiBhIHByb2dyZXNzIGJhcidzIG1ldGVyLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJHByb2dyZXNzLW1ldGVyLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgcmFkaXVzIG9mIGEgcHJvZ3Jlc3MgYmFyLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRwcm9ncmVzcy1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xyXG5cclxuQG1peGluIGZvdW5kYXRpb24tcHJvZ3Jlc3MtZWxlbWVudCB7XHJcbiAgcHJvZ3Jlc3Mge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogJHByb2dyZXNzLWhlaWdodDtcclxuICAgIG1hcmdpbi1ib3R0b206ICRwcm9ncmVzcy1tYXJnaW4tYm90dG9tO1xyXG5cclxuICAgIGFwcGVhcmFuY2U6IG5vbmU7XHJcblxyXG4gICAgQGlmIGhhc3ZhbHVlKCRwcm9ncmVzcy1yYWRpdXMpIHtcclxuICAgICAgYm9yZGVyLXJhZGl1czogJHByb2dyZXNzLXJhZGl1cztcclxuICAgIH1cclxuXHJcbiAgICAvLyBGb3IgRmlyZWZveFxyXG4gICAgYm9yZGVyOiAwO1xyXG4gICAgYmFja2dyb3VuZDogJHByb2dyZXNzLWJhY2tncm91bmQ7XHJcblxyXG4gICAgJjo6LXdlYmtpdC1wcm9ncmVzcy1iYXIge1xyXG4gICAgICBiYWNrZ3JvdW5kOiAkcHJvZ3Jlc3MtYmFja2dyb3VuZDtcclxuXHJcbiAgICAgIEBpZiBoYXN2YWx1ZSgkcHJvZ3Jlc3MtcmFkaXVzKSB7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHByb2dyZXNzLXJhZGl1cztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICY6Oi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWUge1xyXG4gICAgICBiYWNrZ3JvdW5kOiAkcHJvZ3Jlc3MtbWV0ZXItYmFja2dyb3VuZDtcclxuXHJcbiAgICAgIEBpZiBoYXN2YWx1ZSgkcHJvZ3Jlc3MtcmFkaXVzKSB7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHByb2dyZXNzLXJhZGl1cztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICY6Oi1tb3otcHJvZ3Jlc3MtYmFyIHtcclxuICAgICAgYmFja2dyb3VuZDogJHByb2dyZXNzLW1ldGVyLWJhY2tncm91bmQ7XHJcblxyXG4gICAgICBAaWYgaGFzdmFsdWUoJHByb2dyZXNzLXJhZGl1cykge1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRwcm9ncmVzcy1yYWRpdXM7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRmb3VuZGF0aW9uLXBhbGV0dGUge1xyXG4gICAgICAmLiN7JG5hbWV9IHtcclxuICAgICAgICAvLyBJbnRlcm5ldCBFeHBsb3JlciBzZXRzIHRoZSBmaWxsIHdpdGggY29sb3JcclxuICAgICAgICBjb2xvcjogJGNvbG9yO1xyXG5cclxuICAgICAgICAmOjotd2Via2l0LXByb2dyZXNzLXZhbHVlIHtcclxuICAgICAgICAgIGJhY2tncm91bmQ6ICRjb2xvcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICY6Oi1tb3otcHJvZ3Jlc3MtYmFyIHtcclxuICAgICAgICAgIGJhY2tncm91bmQ6ICRjb2xvcjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBGb3IgSUUgYW5kIEVkZ2VcclxuICAgICY6Oi1tcy1maWxsIHtcclxuICAgICAgQGlmIGhhc3ZhbHVlKCRwcm9ncmVzcy1yYWRpdXMpIHtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiAkcHJvZ3Jlc3MtcmFkaXVzO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBib3JkZXI6IDA7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBtZXRlclxyXG4vLy8vXHJcblxyXG4vLy8gSGVpZ2h0IG9mIGEgYDxtZXRlcj5gIGVsZW1lbnQuXHJcbi8vLyBAdHlwZSBMZW5ndGhcclxuJG1ldGVyLWhlaWdodDogMXJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBCb3JkZXIgcmFkaXVzIG9mIGEgYDxtZXRlcj5gIGVsZW1lbnQuXHJcbi8vLyBAdHlwZSBMZW5ndGhcclxuJG1ldGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBhIGA8bWV0ZXI+YCBlbGVtZW50LlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJG1ldGVyLWJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcclxuXHJcbi8vLyBNZXRlciBmaWxsIGZvciBhbiBvcHRpbWFsIHZhbHVlIGluIGEgYDxtZXRlcj5gIGVsZW1lbnQuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kbWV0ZXItZmlsbC1nb29kOiAkc3VjY2Vzcy1jb2xvciAhZGVmYXVsdDtcclxuXHJcbi8vLyBNZXRlciBmaWxsIGZvciBhbiBhdmVyYWdlIHZhbHVlIGluIGEgYDxtZXRlcj5gIGVsZW1lbnQuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kbWV0ZXItZmlsbC1tZWRpdW06ICR3YXJuaW5nLWNvbG9yICFkZWZhdWx0O1xyXG5cclxuLy8vIE1ldGVyIGZpbGwgZm9yIGEgc3Vib3B0aW1hbCB2YWx1ZSBpbiBhIGA8bWV0ZXI+YCBlbGVtZW50LlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJG1ldGVyLWZpbGwtYmFkOiAkYWxlcnQtY29sb3IgIWRlZmF1bHQ7XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1tZXRlci1lbGVtZW50IHtcclxuICBtZXRlciB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAkbWV0ZXItaGVpZ2h0O1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcclxuXHJcbiAgICAvLyBEaXNhYmxlIGAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmVgIGZyb20gZ2V0dGluZyBwcmVmaXhlZCxcclxuICAgIC8vIFdlIGhhdmUgZGlzYWJsZWQgYXV0b3ByZWZpeGVyIGZpcnN0IGFuZCBhcmUganVzdCBvbmx5IHVzaW5nIFxyXG4gICAgLy8gYC1tb3otYXBwZWFyYW5jZTogbm9uZWAgYXMgYSBwcmVmaXggYW5kIG5lZ2xlY3RpbmcgdGhlIHdlYmtpdC5cclxuICAgIFxyXG4gICAgLyohIGF1dG9wcmVmaXhlcjogb2ZmICovXHJcbiAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XHJcbiAgICAgICAgIGFwcGVhcmFuY2U6IG5vbmU7XHJcblxyXG4gICAgQGlmIGhhcy12YWx1ZSgkbWV0ZXItcmFkaXVzKSB7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6ICRtZXRlci1yYWRpdXM7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRm9yIEZpcmVmb3hcclxuICAgIGJvcmRlcjogMDtcclxuICAgIGJhY2tncm91bmQ6ICRtZXRlci1iYWNrZ3JvdW5kO1xyXG5cclxuICAgIC8vIENocm9tZS9TYWZhcmkvRWRnZVxyXG4gICAgJjo6LXdlYmtpdC1tZXRlci1iYXIge1xyXG4gICAgICBib3JkZXI6IDA7XHJcbiAgICAgIEBpZiBoYXMtdmFsdWUoJG1ldGVyLXJhZGl1cykge1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRtZXRlci1yYWRpdXM7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGJhY2tncm91bmQ6ICRtZXRlci1iYWNrZ3JvdW5kO1xyXG4gICAgfVxyXG5cclxuICAgICY6Oi13ZWJraXQtbWV0ZXItaW5uZXItZWxlbWVudCB7XHJcbiAgICAgIEBpZiBoYXMtdmFsdWUoJG1ldGVyLXJhZGl1cykge1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRtZXRlci1yYWRpdXM7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmOjotd2Via2l0LW1ldGVyLW9wdGltdW0tdmFsdWUge1xyXG4gICAgICBiYWNrZ3JvdW5kOiAkbWV0ZXItZmlsbC1nb29kO1xyXG5cclxuICAgICAgQGlmIGhhcy12YWx1ZSgkbWV0ZXItcmFkaXVzKSB7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJG1ldGVyLXJhZGl1cztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICY6Oi13ZWJraXQtbWV0ZXItc3Vib3B0aW11bS12YWx1ZSB7XHJcbiAgICAgIGJhY2tncm91bmQ6ICRtZXRlci1maWxsLW1lZGl1bTtcclxuXHJcbiAgICAgIEBpZiBoYXMtdmFsdWUoJG1ldGVyLXJhZGl1cykge1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRtZXRlci1yYWRpdXM7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmOjotd2Via2l0LW1ldGVyLWV2ZW4tbGVzcy1nb29kLXZhbHVlIHtcclxuICAgICAgYmFja2dyb3VuZDogJG1ldGVyLWZpbGwtYmFkO1xyXG5cclxuICAgICAgQGlmIGhhcy12YWx1ZSgkbWV0ZXItcmFkaXVzKSB7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJG1ldGVyLXJhZGl1cztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICY6Oi1tb3otbWV0ZXItYmFyIHtcclxuICAgICAgYmFja2dyb3VuZDogJHByaW1hcnktY29sb3I7XHJcblxyXG4gICAgICBAaWYgaGFzLXZhbHVlKCRtZXRlci1yYWRpdXMpIHtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiAkbWV0ZXItcmFkaXVzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJjotbW96LW1ldGVyLW9wdGltdW06Oi1tb3otbWV0ZXItYmFyIHsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBmb3JjZS1wc2V1ZG8tbmVzdGluZ1xyXG4gICAgICBiYWNrZ3JvdW5kOiAkbWV0ZXItZmlsbC1nb29kO1xyXG4gICAgfVxyXG5cclxuICAgICY6LW1vei1tZXRlci1zdWItb3B0aW11bTo6LW1vei1tZXRlci1iYXIgeyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIGZvcmNlLXBzZXVkby1uZXN0aW5nXHJcbiAgICAgIGJhY2tncm91bmQ6ICRtZXRlci1maWxsLW1lZGl1bTtcclxuICAgIH1cclxuXHJcbiAgICAmOi1tb3otbWV0ZXItc3ViLXN1Yi1vcHRpbXVtOjotbW96LW1ldGVyLWJhciB7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgZm9yY2UtcHNldWRvLW5lc3RpbmdcclxuICAgICAgYmFja2dyb3VuZDogJG1ldGVyLWZpbGwtYmFkO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgYWJpZGVcclxuLy8vL1xyXG5cclxuLy8vIFNldHMgaWYgZXJyb3Igc3R5bGVzIHNob3VsZCBiZSBhZGRlZCB0byBpbnB1dHMuXHJcbi8vLyBAdHlwZSBCb29sZWFuXHJcbiRhYmlkZS1pbnB1dHM6IHRydWUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gU2V0cyBpZiBlcnJvciBzdHlsZXMgc2hvdWxkIGJlIGFkZGVkIHRvIGxhYmVscy5cclxuLy8vIEB0eXBlIEJvb2xlYW5cclxuJGFiaWRlLWxhYmVsczogdHJ1ZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIHRvIHVzZSBmb3IgaW52YWxpZCB0ZXh0IGlucHV0cy5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRpbnB1dC1iYWNrZ3JvdW5kLWludmFsaWQ6IGdldC1jb2xvcihhbGVydCkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQ29sb3IgdG8gdXNlIGZvciBsYWJlbHMgb2YgaW52YWxpZCBpbnB1dHMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kZm9ybS1sYWJlbC1jb2xvci1pbnZhbGlkOiBnZXQtY29sb3IoYWxlcnQpICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgZm9udCBjb2xvciBmb3IgZm9ybSBlcnJvciB0ZXh0LlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGlucHV0LWVycm9yLWNvbG9yOiBnZXQtY29sb3IoYWxlcnQpICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgZm9udCBzaXplIGZvciBmb3JtIGVycm9yIHRleHQuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGlucHV0LWVycm9yLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTIpICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgZm9udCB3ZWlnaHQgZm9yIGZvcm0gZXJyb3IgdGV4dC5cclxuLy8vIEB0eXBlIEtleXdvcmRcclxuJGlucHV0LWVycm9yLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkICFkZWZhdWx0O1xyXG5cclxuLy8vIFN0eWxlcyB0aGUgYmFja2dyb3VuZCBhbmQgYm9yZGVyIG9mIGFuIGlucHV0IGZpZWxkIHRvIGhhdmUgYW4gZXJyb3Igc3RhdGUuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQgWyRhbGVydC1jb2xvcl0gLSBDb2xvciB0byB1c2UgZm9yIHRoZSBiYWNrZ3JvdW5kIGFuZCBib3JkZXIuXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGJhY2tncm91bmQtbGlnaHRlbiBbMTAlXSAtIExpZ2h0bmVzcyBsZXZlbCBvZiB0aGUgYmFja2dyb3VuZCBjb2xvci5cclxuQG1peGluIGZvcm0taW5wdXQtZXJyb3IoXHJcbiAgJGJhY2tncm91bmQ6ICRpbnB1dC1iYWNrZ3JvdW5kLWludmFsaWQsXHJcbiAgJGJhY2tncm91bmQtbGlnaHRlbjogMTAlXHJcbikge1xyXG4gICY6bm90KDpmb2N1cykge1xyXG4gICAgYm9yZGVyLWNvbG9yOiAkYmFja2dyb3VuZDtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IG1peCgkYmFja2dyb3VuZCwgJHdoaXRlLCAkYmFja2dyb3VuZC1saWdodGVuKTtcclxuICAgICY6OnBsYWNlaG9sZGVyIHtcclxuICAgICAgY29sb3I6ICRiYWNrZ3JvdW5kO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8vIEFkZHMgZXJyb3Igc3R5bGVzIHRvIGEgZm9ybSBlbGVtZW50LCB1c2luZyB0aGUgdmFsdWVzIGluIHRoZSBzZXR0aW5ncyBmaWxlLlxyXG5AbWl4aW4gZm9ybS1lcnJvciB7XHJcbiAgZGlzcGxheTogbm9uZTtcclxuICBtYXJnaW4tdG9wOiAkZm9ybS1zcGFjaW5nICogLTAuNTtcclxuICBtYXJnaW4tYm90dG9tOiAkZm9ybS1zcGFjaW5nO1xyXG5cclxuICBmb250LXNpemU6ICRpbnB1dC1lcnJvci1mb250LXNpemU7XHJcbiAgZm9udC13ZWlnaHQ6ICRpbnB1dC1lcnJvci1mb250LXdlaWdodDtcclxuICBjb2xvcjogJGlucHV0LWVycm9yLWNvbG9yO1xyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1mb3JtLWVycm9yIHtcclxuICBAaWYgJGFiaWRlLWlucHV0cyB7XHJcbiAgICAvLyBFcnJvciBjbGFzcyBmb3IgaW52YWxpZCBpbnB1dHNcclxuICAgIC5pcy1pbnZhbGlkLWlucHV0IHtcclxuICAgICAgQGluY2x1ZGUgZm9ybS1pbnB1dC1lcnJvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpZiAkYWJpZGUtbGFiZWxzIHtcclxuICAgIC8vIEVycm9yIGNsYXNzIGZvciBsYWJlbHMgb2YgaW52YWxpZCBvdXRwdXRzXHJcbiAgICAuaXMtaW52YWxpZC1sYWJlbCB7XHJcbiAgICAgIGNvbG9yOiAkZm9ybS1sYWJlbC1jb2xvci1pbnZhbGlkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gRm9ybSBlcnJvciBlbGVtZW50XHJcbiAgLmZvcm0tZXJyb3Ige1xyXG4gICAgQGluY2x1ZGUgZm9ybS1lcnJvcjtcclxuXHJcbiAgICAmLmlzLXZpc2libGUge1xyXG4gICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vIEhpZGUgYW4gZWxlbWVudCBieSBkZWZhdWx0LCBvbmx5IGRpc3BsYXlpbmcgaXQgYWJvdmUgYSBjZXJ0YWluIHNjcmVlbiBzaXplLlxyXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc2l6ZSAtIEJyZWFrcG9pbnQgdG8gdXNlLiAqKk11c3QgYmUgYSBicmVha3BvaW50IGRlZmluZWQgaW4gYCRicmVha3BvaW50c2AuKipcclxuQG1peGluIHNob3ctZm9yKCRzaXplKSB7XHJcbiAgJHNpemU6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkc2l6ZSk7XHJcbiAgJHNpemU6IC16Zi1icC10by1lbSgkc2l6ZSkgLSAoMSAvIDE2KTtcclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSBkb3duKSB7XHJcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gSGlkZSBhbiBlbGVtZW50IGJ5IGRlZmF1bHQsIG9ubHkgZGlzcGxheWluZyBpdCB3aXRoaW4gYSBjZXJ0YWluIGJyZWFrcG9pbnQuXHJcbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIC0gQnJlYWtwb2ludCB0byB1c2UuICoqTXVzdCBiZSBhIGJyZWFrcG9pbnQgZGVmaW5lZCBpbiBgJGJyZWFrcG9pbnRzYC4qKlxyXG5AbWl4aW4gc2hvdy1mb3Itb25seSgkc2l6ZSkge1xyXG4gICRsb3dlci1ib3VuZC1zaXplOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJHNpemUpO1xyXG4gICR1cHBlci1ib3VuZC1zaXplOiAtemYtbWFwLW5leHQoJGJyZWFrcG9pbnRzLCAkc2l6ZSk7XHJcblxyXG4gIC8vIG1vcmUgb2Z0ZW4gdGhhbiBub3QgdGhpcyB3aWxsIGJlIGNvcnJlY3QsIGp1c3Qgb25lIHRpbWUgcm91bmQgdGhlIGxvb3AgaXQgd29uJ3Qgc28gc2V0IGluIHNjb3BlIGhlcmVcclxuICAkbG93ZXItYm91bmQ6IC16Zi1icC10by1lbSgkbG93ZXItYm91bmQtc2l6ZSkgLSAoMSAvIDE2KTtcclxuICAvLyB0ZXN0IGFjdHVhbCBsb3dlci1ib3VuZC1zaXplLCBpZiAwIHNldCBpdCB0byAwZW1cclxuICBAaWYgc3RyaXAtdW5pdCgkbG93ZXItYm91bmQtc2l6ZSkgPT0gMCB7XHJcbiAgICAkbG93ZXItYm91bmQ6IC16Zi1icC10by1lbSgkbG93ZXItYm91bmQtc2l6ZSk7XHJcbiAgfVxyXG5cclxuICBAaWYgJHVwcGVyLWJvdW5kLXNpemUgPT0gbnVsbCB7XHJcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkbG93ZXItYm91bmQpIHtcclxuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG4gIH1cclxuICBAZWxzZSB7XHJcbiAgICAkdXBwZXItYm91bmQ6IC16Zi1icC10by1lbSgkdXBwZXItYm91bmQtc2l6ZSk7XHJcblxyXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJGxvd2VyLWJvdW5kKSwgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkdXBwZXItYm91bmQpIHtcclxuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuXHJcbi8vLyBTaG93IGFuIGVsZW1lbnQgYnkgZGVmYXVsdCwgYW5kIGhpZGUgaXQgYWJvdmUgYSBjZXJ0YWluIHNjcmVlbiBzaXplLlxyXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc2l6ZSAtIEJyZWFrcG9pbnQgdG8gdXNlLiAqKk11c3QgYmUgYSBicmVha3BvaW50IGRlZmluZWQgaW4gYCRicmVha3BvaW50c2AuKipcclxuQG1peGluIGhpZGUtZm9yKCRzaXplKSB7XHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xyXG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG4gIH1cclxufVxyXG5cclxuLy8vIFNob3cgYW4gZWxlbWVudCBieSBkZWZhdWx0LCBhbmQgaGlkZSBpdCBhYm92ZSBhIGNlcnRhaW4gc2NyZWVuIHNpemUuXHJcbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIC0gQnJlYWtwb2ludCB0byB1c2UuICoqTXVzdCBiZSBhIGJyZWFrcG9pbnQgZGVmaW5lZCBpbiBgJGJyZWFrcG9pbnRzYC4qKlxyXG5AbWl4aW4gaGlkZS1mb3Itb25seSgkc2l6ZSkge1xyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUgb25seSkge1xyXG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG4gIH1cclxufVxyXG5cclxuQG1peGluIGZvdW5kYXRpb24tdmlzaWJpbGl0eS1jbGFzc2VzIHtcclxuICAvLyBCYXNpYyBoaWRpbmcgY2xhc3Nlc1xyXG4gIC5oaWRlIHtcclxuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxuICB9XHJcblxyXG4gIC5pbnZpc2libGUge1xyXG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgLy8gUmVzcG9uc2l2ZSB2aXNpYmlsaXR5IGNsYXNzZXNcclxuICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcclxuICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XHJcbiAgICAgIC5oaWRlLWZvci0jeyRzaXplfSB7XHJcbiAgICAgICAgQGluY2x1ZGUgaGlkZS1mb3IoJHNpemUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuc2hvdy1mb3ItI3skc2l6ZX0ge1xyXG4gICAgICAgIEBpbmNsdWRlIHNob3ctZm9yKCRzaXplKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5oaWRlLWZvci0jeyRzaXplfS1vbmx5IHtcclxuICAgICAgQGluY2x1ZGUgaGlkZS1mb3Itb25seSgkc2l6ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLnNob3ctZm9yLSN7JHNpemV9LW9ubHkge1xyXG4gICAgICBAaW5jbHVkZSBzaG93LWZvci1vbmx5KCRzaXplKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFNjcmVlbiByZWFkZXIgdmlzaWJpbGl0eSBjbGFzc2VzXHJcbiAgLy8gTmVlZCBhIFwiaGlkZS1mb3Itc3JcIiBjbGFzcz8gQWRkIGFyaWEtaGlkZGVuPSd0cnVlJyB0byB0aGUgZWxlbWVudFxyXG4gIC5zaG93LWZvci1zcixcclxuICAuc2hvdy1vbi1mb2N1cyB7XHJcbiAgICBAaW5jbHVkZSBlbGVtZW50LWludmlzaWJsZTtcclxuICB9XHJcblxyXG4gIC8vIE9ubHkgZGlzcGxheSB0aGUgZWxlbWVudCB3aGVuIGl0J3MgZm9jdXNlZFxyXG4gIC5zaG93LW9uLWZvY3VzIHtcclxuICAgICY6YWN0aXZlLFxyXG4gICAgJjpmb2N1cyB7XHJcbiAgICAgIEBpbmNsdWRlIGVsZW1lbnQtaW52aXNpYmxlLW9mZjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIExhbmRzY2FwZSBhbmQgcG9ydHJhaXQgdmlzaWJpbGl0eVxyXG4gIC5zaG93LWZvci1sYW5kc2NhcGUsXHJcbiAgLmhpZGUtZm9yLXBvcnRyYWl0IHtcclxuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XHJcblxyXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYW5kc2NhcGUpIHtcclxuICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcclxuICAgIH1cclxuXHJcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KHBvcnRyYWl0KSB7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5oaWRlLWZvci1sYW5kc2NhcGUsXHJcbiAgLnNob3ctZm9yLXBvcnRyYWl0IHtcclxuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxuXHJcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhbmRzY2FwZSkge1xyXG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChwb3J0cmFpdCkge1xyXG4gICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgZmxvYXRcclxuLy8vL1xyXG5cclxuQG1peGluIGZvdW5kYXRpb24tZmxvYXQtY2xhc3NlcyB7XHJcbiAgLmZsb2F0LWxlZnQge1xyXG4gICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDtcclxuICB9XHJcblxyXG4gIC5mbG9hdC1yaWdodCB7XHJcbiAgICBmbG9hdDogcmlnaHQgIWltcG9ydGFudDtcclxuICB9XHJcblxyXG4gIC5mbG9hdC1jZW50ZXIge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcclxuICB9XHJcblxyXG4gIC5jbGVhcmZpeCB7XHJcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIGJ1dHRvblxyXG4vLy8vXHJcblxyXG4vLy8gRm9udCBmYW1pbHkgZm9yIGJ1dHRvbiBlbGVtZW50cy5cclxuLy8vIEB0eXBlIEZvbnRcclxuJGJ1dHRvbi1mb250LWZhbWlseTogaW5oZXJpdCAhZGVmYXVsdDtcclxuXHJcbi8vLyBQYWRkaW5nIGluc2lkZSBidXR0b25zLlxyXG4vLy8gQHR5cGUgTGlzdFxyXG4kYnV0dG9uLXBhZGRpbmc6IDAuODVlbSAxZW0gIWRlZmF1bHQ7XHJcblxyXG4vLy8gTWFyZ2luIGFyb3VuZCBidXR0b25zLlxyXG4vLy8gQHR5cGUgTGlzdFxyXG4kYnV0dG9uLW1hcmdpbjogMCAwICRnbG9iYWwtbWFyZ2luIDAgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBmaWxsIGZvciBidXR0b25zLiBDYW4gZWl0aGVyIGJlIGBzb2xpZGAgb3IgYGhvbGxvd2AuXHJcbi8vLyBAdHlwZSBLZXl3b3JkXHJcbiRidXR0b24tZmlsbDogc29saWQgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIGZvciBidXR0b25zLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGJ1dHRvbi1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcclxuXHJcbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9uIGhvdmVyIGZvciBidXR0b25zLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyOiBzY2FsZS1jb2xvcigkYnV0dG9uLWJhY2tncm91bmQsICRsaWdodG5lc3M6IC0xNSUpICFkZWZhdWx0O1xyXG5cclxuLy8vIEZvbnQgY29sb3IgZm9yIGJ1dHRvbnMuXHJcbi8vLyBAdHlwZSBMaXN0XHJcbiRidXR0b24tY29sb3I6ICR3aGl0ZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBBbHRlcm5hdGl2ZSBmb250IGNvbG9yIGZvciBidXR0b25zLlxyXG4vLy8gQHR5cGUgTGlzdFxyXG4kYnV0dG9uLWNvbG9yLWFsdDogJGJsYWNrICFkZWZhdWx0O1xyXG5cclxuLy8vIEJvcmRlciByYWRpdXMgZm9yIGJ1dHRvbnMsIGRlZmF1bHRlZCB0byBnbG9iYWwtcmFkaXVzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRidXR0b24tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcclxuXHJcbi8vLyBCb3JkZXIgd2lkdGggZm9yIGhvbGxvdyBvdXRsaW5lIGJ1dHRvbnNcclxuLy8vIEB0eXBlIE51bWJlclxyXG4kYnV0dG9uLWhvbGxvdy1ib3JkZXItd2lkdGg6IDFweCAhZGVmYXVsdDtcclxuXHJcbi8vLyBTaXplcyBmb3IgYnV0dG9ucy5cclxuLy8vIEB0eXBlIE1hcFxyXG4kYnV0dG9uLXNpemVzOiAoXHJcbiAgdGlueTogMC42cmVtLFxyXG4gIHNtYWxsOiAwLjc1cmVtLFxyXG4gIGRlZmF1bHQ6IDAuOXJlbSxcclxuICBsYXJnZTogMS4yNXJlbSxcclxuKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBDb2xvcmluZyBjbGFzc2VzLiBBIG1hcCBvZiBjbGFzc2VzIHRvIG91dHB1dCBpbiB5b3VyIENTUywgbGlrZSBgLnNlY29uZGFyeWAsIGAuc3VjY2Vzc2AsIGFuZCBzbyBvbi5cclxuLy8vIEB0eXBlIE1hcFxyXG4kYnV0dG9uLXBhbGV0dGU6ICRmb3VuZGF0aW9uLXBhbGV0dGUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gb3BhY2l0eSBmb3IgYSBkaXNhYmxlZCBidXR0b24uXHJcbi8vLyBAdHlwZSBMaXN0XHJcbiRidXR0b24tb3BhY2l0eS1kaXNhYmxlZDogMC4yNSAhZGVmYXVsdDtcclxuXHJcbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGxpZ2h0bmVzcyBvbiBob3ZlciBmb3IgYnV0dG9ucy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kYnV0dG9uLWJhY2tncm91bmQtaG92ZXItbGlnaHRuZXNzOiAtMjAlICFkZWZhdWx0O1xyXG5cclxuLy8vIENvbG9yIGxpZ2h0bmVzcyBvbiBob3ZlciBmb3IgaG9sbG93IGJ1dHRvbnMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGJ1dHRvbi1ob2xsb3ctaG92ZXItbGlnaHRuZXNzOiAtNTAlICFkZWZhdWx0O1xyXG5cclxuLy8gSW50ZXJuYWw6IGZsaXAgZnJvbSBtYXJnaW4tcmlnaHQgdG8gbWFyZ2luLWxlZnQgZm9yIGRlZmF1bHRzXHJcbkBpZiAkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09ICdydGwnIHtcclxuICAkYnV0dG9uLW1hcmdpbjogMCAwICRnbG9iYWwtbWFyZ2luICRnbG9iYWwtbWFyZ2luICFkZWZhdWx0O1xyXG59XHJcblxyXG4vLy8gdHJhbnNpdGlvbnMgZm9yIGJ1dHRvbnMuXHJcbi8vLyBAdHlwZSBMaXN0XHJcbiRidXR0b24tdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjI1cyBlYXNlLW91dCwgY29sb3IgMC4yNXMgZWFzZS1vdXQgIWRlZmF1bHQ7XHJcblxyXG4vLyBUT0RPOiBEb2N1bWVudCBidXR0b24tYmFzZSgpIG1peGluXHJcbkBtaXhpbiBidXR0b24tYmFzZSB7XHJcbiAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gIG1hcmdpbjogJGJ1dHRvbi1tYXJnaW47XHJcbiAgZm9udC1mYW1pbHk6ICRidXR0b24tZm9udC1mYW1pbHk7XHJcblxyXG4gIEBpZiAodHlwZS1vZigkYnV0dG9uLXBhZGRpbmcpID09ICdtYXAnKSB7XHJcbiAgICBAZWFjaCAkc2l6ZSwgJHBhZGRpbmcgaW4gJGJ1dHRvbi1wYWRkaW5nIHtcclxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xyXG4gICAgICAgIHBhZGRpbmc6ICRwYWRkaW5nO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBlbHNlIHtcclxuICAgIHBhZGRpbmc6ICRidXR0b24tcGFkZGluZztcclxuICB9XHJcblxyXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcclxuICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcclxuICBib3JkZXItcmFkaXVzOiAkYnV0dG9uLXJhZGl1cztcclxuICB0cmFuc2l0aW9uOiAkYnV0dG9uLXRyYW5zaXRpb247XHJcblxyXG4gIGZvbnQtc2l6ZTogbWFwLWdldCgkYnV0dG9uLXNpemVzLCBkZWZhdWx0KTtcclxuICBsaW5lLWhlaWdodDogMTtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4vLy8gRXhwYW5kcyBhIGJ1dHRvbiB0byBtYWtlIGl0IGZ1bGwtd2lkdGguXHJcbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRleHBhbmQgW3RydWVdIC0gU2V0IHRvIGB0cnVlYCB0byBlbmFibGUgdGhlIGV4cGFuZCBiZWhhdmlvci4gU2V0IHRvIGBmYWxzZWAgdG8gcmV2ZXJzZSB0aGlzIGJlaGF2aW9yLlxyXG5AbWl4aW4gYnV0dG9uLWV4cGFuZCgkZXhwYW5kOiB0cnVlKSB7XHJcbiAgQGlmICRleHBhbmQge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIG1hcmdpbi1yaWdodDogMDtcclxuICAgIG1hcmdpbi1sZWZ0OiAwO1xyXG4gIH1cclxuICBAZWxzZSB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB3aWR0aDogYXV0bztcclxuICAgIG1hcmdpbjogJGJ1dHRvbi1tYXJnaW47XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gU2V0cyB0aGUgdmlzdWFsIHN0eWxlIG9mIGEgYnV0dG9uLlxyXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQgWyRidXR0b24tYmFja2dyb3VuZF0gLSBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBidXR0b24uXHJcbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFja2dyb3VuZC1ob3ZlciBbJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyXSAtIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIGJ1dHRvbiBvbiBob3Zlci4gU2V0IHRvIGBhdXRvYCB0byBoYXZlIHRoZSBtaXhpbiBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGEgaG92ZXIgY29sb3IuXHJcbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgWyRidXR0b24tY29sb3JdIC0gVGV4dCBjb2xvciBvZiB0aGUgYnV0dG9uLiBTZXQgdG8gYGF1dG9gIHRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgYSBjb2xvciBiYXNlZCBvbiB0aGUgYmFja2dyb3VuZCBjb2xvci5cclxuQG1peGluIGJ1dHRvbi1zdHlsZShcclxuICAkYmFja2dyb3VuZDogJGJ1dHRvbi1iYWNrZ3JvdW5kLFxyXG4gICRiYWNrZ3JvdW5kLWhvdmVyOiAkYnV0dG9uLWJhY2tncm91bmQtaG92ZXIsXHJcbiAgJGNvbG9yOiAkYnV0dG9uLWNvbG9yLFxyXG4gICRiYWNrZ3JvdW5kLWhvdmVyLWxpZ2h0bmVzczogJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyLWxpZ2h0bmVzc1xyXG4pIHtcclxuICBAaWYgJGNvbG9yID09IGF1dG8ge1xyXG4gICAgJGNvbG9yOiBjb2xvci1waWNrLWNvbnRyYXN0KCRiYWNrZ3JvdW5kLCAoJGJ1dHRvbi1jb2xvciwgJGJ1dHRvbi1jb2xvci1hbHQpKTtcclxuICB9XHJcblxyXG4gIEBpZiAkYmFja2dyb3VuZC1ob3ZlciA9PSBhdXRvIHtcclxuICAgICRiYWNrZ3JvdW5kLWhvdmVyOiBzY2FsZS1jb2xvcigkYmFja2dyb3VuZCwgJGxpZ2h0bmVzczogJGJhY2tncm91bmQtaG92ZXItbGlnaHRuZXNzKTtcclxuICB9XHJcblxyXG4gIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xyXG4gIGNvbG9yOiAkY29sb3I7XHJcblxyXG4gICY6aG92ZXIsICY6Zm9jdXMge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQtaG92ZXI7XHJcbiAgICBjb2xvcjogJGNvbG9yO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIFJlbW92ZXMgYmFja2dyb3VuZCBmaWxsIG9uIGhvdmVyIGFuZCBmb2N1cyBmb3IgaG9sbG93IGJ1dHRvbnMuXHJcbkBtaXhpbiBidXR0b24taG9sbG93IHtcclxuICAmLFxyXG4gICY6aG92ZXIsICY6Zm9jdXMge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgfVxyXG5cclxuICAmLmRpc2FibGVkLFxyXG4gICZbZGlzYWJsZWRdIHtcclxuICAgICYsXHJcbiAgICAmOmhvdmVyLCAmOmZvY3VzIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gYnV0dG9uLWhvbGxvdy1zdHlsZShcclxuICAkY29sb3I6ICRidXR0b24tYmFja2dyb3VuZCxcclxuICAkaG92ZXItbGlnaHRuZXNzOiAkYnV0dG9uLWhvbGxvdy1ob3Zlci1saWdodG5lc3MsXHJcbiAgJGJvcmRlci13aWR0aDogJGJ1dHRvbi1ob2xsb3ctYm9yZGVyLXdpZHRoXHJcbikge1xyXG4gICRjb2xvci1ob3Zlcjogc2NhbGUtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAkaG92ZXItbGlnaHRuZXNzKTtcclxuXHJcbiAgYm9yZGVyOiAkYm9yZGVyLXdpZHRoIHNvbGlkICRjb2xvcjtcclxuICBjb2xvcjogJGNvbG9yO1xyXG5cclxuICAmOmhvdmVyLCAmOmZvY3VzIHtcclxuICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLWhvdmVyO1xyXG4gICAgY29sb3I6ICRjb2xvci1ob3ZlcjtcclxuICAgICYuZGlzYWJsZWQsXHJcbiAgICAmW2Rpc2FibGVkXSB7XHJcbiAgICAgIGJvcmRlcjogJGJvcmRlci13aWR0aCBzb2xpZCAkY29sb3I7XHJcbiAgICAgIGNvbG9yOiAkY29sb3I7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gQWRkcyBkaXNhYmxlZCBzdHlsZXMgdG8gYSBidXR0b24gYnkgZmFkaW5nIHRoZSBlbGVtZW50LCByZXNldGluZyB0aGUgY3Vyc29yLCBhbmQgZGlzYWJsaW5nIHBvaW50ZXIgZXZlbnRzLlxyXG4vLy8gQHBhcmFtIFtDb2xvcl0gJGJhY2tncm91bmQgWyRidXR0b24tYmFja2dyb3VuZF0gLSBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBkaXNhYmxlZCBidXR0b24uXHJcbi8vLyBAcGFyYW0gW0NvbG9yXSAkY29sb3IgWyRidXR0b24tY29sb3JdIC0gVGV4dCBjb2xvciBvZiB0aGUgZGlzYWJsZWQgYnV0dG9uLiBTZXQgdG8gYGF1dG9gIHRvIGhhdmUgdGhlIG1peGluIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgYSBjb2xvciBiYXNlZCBvbiB0aGUgYmFja2dyb3VuZCBjb2xvci5cclxuQG1peGluIGJ1dHRvbi1kaXNhYmxlZChcclxuICAkYmFja2dyb3VuZDogJGJ1dHRvbi1iYWNrZ3JvdW5kLFxyXG4gICRjb2xvcjogJGJ1dHRvbi1jb2xvclxyXG4pIHtcclxuICBAaWYgJGNvbG9yID09IGF1dG8ge1xyXG4gICAgJGNvbG9yOiBjb2xvci1waWNrLWNvbnRyYXN0KCRiYWNrZ3JvdW5kLCAoJGJ1dHRvbi1jb2xvciwgJGJ1dHRvbi1jb2xvci1hbHQpKTtcclxuICB9XHJcblxyXG4gIG9wYWNpdHk6ICRidXR0b24tb3BhY2l0eS1kaXNhYmxlZDtcclxuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG5cclxuICAmLCAmOmhvdmVyLCAmOmZvY3VzIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xyXG4gICAgY29sb3I6ICRjb2xvcjtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBBZGRzIGEgZHJvcGRvd24gYXJyb3cgdG8gYSBidXR0b24uXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJHNpemUgWzAuNGVtXSAtIFNpemUgb2YgdGhlIGFycm93LiBXZSByZWNvbW1lbmQgdXNpbmcgYW4gYGVtYCB2YWx1ZSBzbyB0aGUgdHJpYW5nbGUgc2NhbGVzIHdoZW4gdXNlZCBpbnNpZGUgZGlmZmVyZW50IHNpemVzIG9mIGJ1dHRvbnMuXHJcbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgW3doaXRlXSAtIENvbG9yIG9mIHRoZSBhcnJvdy5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkb2Zmc2V0IFskYnV0dG9uLXBhZGRpbmddIC0gRGlzdGFuY2UgYmV0d2VlbiB0aGUgYXJyb3cgYW5kIHRoZSB0ZXh0IG9mIHRoZSBidXR0b24uIERlZmF1bHRzIHRvIHdoYXRldmVyIHRoZSByaWdodCBwYWRkaW5nIG9mIGEgYnV0dG9uIGlzLlxyXG5AbWl4aW4gYnV0dG9uLWRyb3Bkb3duKFxyXG4gICRzaXplOiAwLjRlbSxcclxuICAkY29sb3I6ICR3aGl0ZSxcclxuICAkb2Zmc2V0OiBnZXQtc2lkZSgkYnV0dG9uLXBhZGRpbmcsIHJpZ2h0KVxyXG4pIHtcclxuICAmOjphZnRlciB7XHJcbiAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJHNpemUsICRjb2xvciwgZG93bik7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICB0b3A6IDAuNGVtOyAvLyBBbGlnbnMgdGhlIGFycm93IHdpdGggdGhlIHRleHQgb2YgdGhlIGJ1dHRvblxyXG5cclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIGZsb2F0OiAjeyRnbG9iYWwtcmlnaHR9O1xyXG4gICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogJG9mZnNldDtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBBZGRzIGFsbCBzdHlsZXMgZm9yIGEgYnV0dG9uLiBGb3IgbW9yZSBncmFudWxhciBjb250cm9sIG92ZXIgc3R5bGVzLCB1c2UgdGhlIGluZGl2aWR1YWwgYnV0dG9uIG1peGlucy5cclxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGV4cGFuZCBbZmFsc2VdIC0gU2V0IHRvIGB0cnVlYCB0byBtYWtlIHRoZSBidXR0b24gZnVsbC13aWR0aC5cclxuLy8vIEBwYXJhbSB7Q29sb3J9ICRiYWNrZ3JvdW5kIFskYnV0dG9uLWJhY2tncm91bmRdIC0gQmFja2dyb3VuZCBjb2xvciBvZiB0aGUgYnV0dG9uLlxyXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQtaG92ZXIgWyRidXR0b24tYmFja2dyb3VuZC1ob3Zlcl0gLSBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBidXR0b24gb24gaG92ZXIuIFNldCB0byBgYXV0b2AgdG8gaGF2ZSB0aGUgbWl4aW4gYXV0b21hdGljYWxseSBnZW5lcmF0ZSBhIGhvdmVyIGNvbG9yLlxyXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskYnV0dG9uLWNvbG9yXSAtIFRleHQgY29sb3Igb2YgdGhlIGJ1dHRvbi4gU2V0IHRvIGBhdXRvYCB0byBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGEgY29sb3IgYmFzZWQgb24gdGhlIGJhY2tncm91bmQgY29sb3IuXHJcbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzdHlsZSBbc29saWRdIC0gU2V0IHRvIGBob2xsb3dgIHRvIGNyZWF0ZSBhIGhvbGxvdyBidXR0b24uIFRoZSBjb2xvciBkZWZpbmVkIGluIGAkYmFja2dyb3VuZGAgd2lsbCBiZSB1c2VkIGFzIHRoZSBwcmltYXJ5IGNvbG9yIG9mIHRoZSBidXR0b24uXHJcbkBtaXhpbiBidXR0b24oXHJcbiAgJGV4cGFuZDogZmFsc2UsXHJcbiAgJGJhY2tncm91bmQ6ICRidXR0b24tYmFja2dyb3VuZCxcclxuICAkYmFja2dyb3VuZC1ob3ZlcjogJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyLFxyXG4gICRjb2xvcjogJGJ1dHRvbi1jb2xvcixcclxuICAkc3R5bGU6ICRidXR0b24tZmlsbFxyXG4pIHtcclxuICBAaW5jbHVkZSBidXR0b24tYmFzZTtcclxuXHJcbiAgQGlmICRzdHlsZSA9PSBzb2xpZCB7XHJcbiAgICBAaW5jbHVkZSBidXR0b24tc3R5bGUoJGJhY2tncm91bmQsICRiYWNrZ3JvdW5kLWhvdmVyLCAkY29sb3IpO1xyXG4gIH1cclxuICBAZWxzZSBpZiAkc3R5bGUgPT0gaG9sbG93IHtcclxuICAgIEBpbmNsdWRlIGJ1dHRvbi1ob2xsb3c7XHJcbiAgICBAaW5jbHVkZSBidXR0b24taG9sbG93LXN0eWxlKCRiYWNrZ3JvdW5kKTtcclxuICB9XHJcblxyXG4gIEBpZiAkZXhwYW5kIHtcclxuICAgIEBpbmNsdWRlIGJ1dHRvbi1leHBhbmQ7XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1idXR0b24ge1xyXG4gIC5idXR0b24ge1xyXG4gICAgQGluY2x1ZGUgYnV0dG9uO1xyXG5cclxuICAgIC8vIFNpemVzXHJcbiAgICBAZWFjaCAkc2l6ZSwgJHZhbHVlIGluIG1hcC1yZW1vdmUoJGJ1dHRvbi1zaXplcywgZGVmYXVsdCkge1xyXG4gICAgICAmLiN7JHNpemV9IHtcclxuICAgICAgICBmb250LXNpemU6ICR2YWx1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICYuZXhwYW5kZWQgeyBAaW5jbHVkZSBidXR0b24tZXhwYW5kOyB9XHJcblxyXG4gICAgLy8gQ29sb3JzXHJcbiAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRidXR0b24tcGFsZXR0ZSB7XHJcbiAgICAgIEBpZiAkYnV0dG9uLWZpbGwgIT0gaG9sbG93IHtcclxuICAgICAgICAmLiN7JG5hbWV9IHtcclxuICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1zdHlsZSgkY29sb3IsIGF1dG8sIGF1dG8pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBAZWxzZSB7XHJcbiAgICAgICAgJi4jeyRuYW1lfSB7XHJcbiAgICAgICAgICBAaW5jbHVkZSBidXR0b24taG9sbG93LXN0eWxlKCRjb2xvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLiN7JG5hbWV9LmRyb3Bkb3duOjphZnRlciB7XHJcbiAgICAgICAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRGlzYWJsZWQgc3R5bGVcclxuICAgICYuZGlzYWJsZWQsXHJcbiAgICAmW2Rpc2FibGVkXSB7XHJcbiAgICAgIEBpbmNsdWRlIGJ1dHRvbi1kaXNhYmxlZDtcclxuXHJcbiAgICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGJ1dHRvbi1wYWxldHRlIHtcclxuICAgICAgICAmLiN7JG5hbWV9IHtcclxuICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1kaXNhYmxlZCgkY29sb3IsIGF1dG8pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIEhvbGxvdyBzdHlsZVxyXG4gICAgQGlmICRidXR0b24tZmlsbCAhPSBob2xsb3cge1xyXG4gICAgICAmLmhvbGxvdyB7XHJcbiAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWhvbGxvdztcclxuICAgICAgICBAaW5jbHVkZSBidXR0b24taG9sbG93LXN0eWxlO1xyXG5cclxuICAgICAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRidXR0b24tcGFsZXR0ZSB7XHJcbiAgICAgICAgICAmLiN7JG5hbWV9IHtcclxuICAgICAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWhvbGxvdy1zdHlsZSgkY29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIENsZWFyIHN0eWxlXHJcbiAgICBAaWYgJGJ1dHRvbi1maWxsICE9IGNsZWFyIHtcclxuICAgICAgJi5jbGVhciB7XHJcbiAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWhvbGxvdztcclxuICAgICAgICBAaW5jbHVkZSBidXR0b24taG9sbG93LXN0eWxlO1xyXG5cclxuICAgICAgICAmLCAmOmhvdmVyLCAmOmZvY3VzIHtcclxuICAgICAgICAgICYsICYuZGlzYWJsZWQsICZbZGlzYWJsZWRdIHtcclxuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGJ1dHRvbi1wYWxldHRlIHtcclxuICAgICAgICAgICYuI3skbmFtZX0ge1xyXG4gICAgICAgICAgICBAaW5jbHVkZSBidXR0b24taG9sbG93LXN0eWxlKCRjb2xvcik7XHJcblxyXG4gICAgICAgICAgICAmLCAmOmhvdmVyLFxyXG4gICAgICAgICAgICAmOmZvY3VzIHtcclxuICAgICAgICAgICAgICAmLFxyXG4gICAgICAgICAgICAgICYuZGlzYWJsZWQsXHJcbiAgICAgICAgICAgICAgJltkaXNhYmxlZF0ge1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBEcm9wZG93biBhcnJvd1xyXG4gICAgJi5kcm9wZG93biB7XHJcbiAgICAgIEBpbmNsdWRlIGJ1dHRvbi1kcm9wZG93bjtcclxuXHJcbiAgICAgIEBpZiAkYnV0dG9uLWZpbGwgPT0gaG9sbG93IHtcclxuICAgICAgICAmOjphZnRlciB7XHJcbiAgICAgICAgICBib3JkZXItdG9wLWNvbG9yOiAkYnV0dG9uLWJhY2tncm91bmQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmLmhvbGxvdyB7XHJcbiAgICAgICAgJjo6YWZ0ZXIge1xyXG4gICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGJ1dHRvbi1iYWNrZ3JvdW5kO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkYnV0dG9uLXBhbGV0dGUge1xyXG4gICAgICAgICAgJi4jeyRuYW1lfSB7XHJcbiAgICAgICAgICAgICY6OmFmdGVyIHtcclxuICAgICAgICAgICAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBCdXR0b24gd2l0aCBkcm9wZG93biBhcnJvdyBvbmx5XHJcbiAgICAmLmFycm93LW9ubHk6OmFmdGVyIHtcclxuICAgICAgdG9wOiAtMC4xZW07XHJcbiAgICAgIGZsb2F0OiBub25lO1xyXG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAwO1xyXG4gICAgfVxyXG4gIH1cclxuICBhLmJ1dHRvbiB7XHJcbiAgICAmOmhvdmVyLFxyXG4gICAgJjpmb2N1cyB7XHJcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIGJ1dHRvbi1ncm91cFxyXG4vLy8vXHJcblxyXG4vLy8gTWFyZ2luIGZvciBidXR0b24gZ3JvdXBzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRidXR0b25ncm91cC1tYXJnaW46IDFyZW0gIWRlZmF1bHQ7XHJcblxyXG4vLy8gTWFyZ2luIGJldHdlZW4gYnV0dG9ucyBpbiBhIGJ1dHRvbiBncm91cC5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kYnV0dG9uZ3JvdXAtc3BhY2luZzogMXB4ICFkZWZhdWx0O1xyXG5cclxuLy8vIFNlbGVjdG9yIGZvciB0aGUgYnV0dG9ucyBpbnNpZGUgYSBidXR0b24gZ3JvdXAuXHJcbi8vLyBAdHlwZSBTdHJpbmdcclxuJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yOiAnLmJ1dHRvbicgIWRlZmF1bHQ7XHJcblxyXG4vLy8gTWF4aW11bSBudW1iZXIgb2YgYnV0dG9ucyB0aGF0IGNhbiBiZSBpbiBhbiBldmVuLXdpZHRoIGJ1dHRvbiBncm91cC5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kYnV0dG9uZ3JvdXAtZXhwYW5kLW1heDogNiAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZXRlcm1pbmVzIGlmICRidXR0b24tcmFkaXVzIGlzIGFwcGxpZWQgdG8gZWFjaCBidXR0b24gb3IgdGhlIGJ1dHRvbiBncm91cCBhcyBhIHdob2xlLiBVc2UgJGdsb2JhbC1yYWRpdXMgaW4gX3NldHRpbmdzLnNjc3MgdG8gY2hhbmdlIHJhZGl1cy5cclxuLy8vIEB0eXBlIEJvb2xlYW5cclxuJGJ1dHRvbmdyb3VwLXJhZGl1cy1vbi1lYWNoOiB0cnVlICFkZWZhdWx0O1xyXG5cclxuLy8vIEFkZCBzdHlsZXMgZm9yIGEgYnV0dG9uIGdyb3VwIGNvbnRhaW5lci5cclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkY2hpbGQtc2VsZWN0b3IgWyRidXR0b25ncm91cC1jaGlsZC1zZWxlY3Rvcl0gLSBTZWxlY3RvciBmb3IgdGhlIGJ1dHRvbnMgaW5zaWRlIGEgYnV0dG9uIGdyb3VwLlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzcGFjaW5nIFskYnV0dG9uZ3JvdXAtc3BhY2luZ10gLSBTcGFjaW5nIGJldHdlZW4gYnV0dG9ucyBpbiBhIGJ1dHRvbiBncm91cC5cclxuQG1peGluIGJ1dHRvbi1ncm91cChcclxuICAkY2hpbGQtc2VsZWN0b3I6ICRidXR0b25ncm91cC1jaGlsZC1zZWxlY3RvcixcclxuICAkc3BhY2luZzogJGJ1dHRvbmdyb3VwLXNwYWNpbmdcclxuKSB7XHJcbiAgQGluY2x1ZGUgY2xlYXJmaXg7XHJcbiAgbWFyZ2luLWJvdHRvbTogJGJ1dHRvbmdyb3VwLW1hcmdpbjtcclxuXHJcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC13cmFwOiBub3dyYXA7XHJcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcclxuICB9XHJcbiAgQGVsc2Uge1xyXG4gICAgZm9udC1zaXplOiAwO1xyXG4gIH1cclxuXHJcbiAgI3skY2hpbGQtc2VsZWN0b3J9IHtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkc3BhY2luZztcclxuICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nO1xyXG4gICAgZm9udC1zaXplOiBtYXAtZ2V0KCRidXR0b24tc2l6ZXMsIGRlZmF1bHQpO1xyXG5cclxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xyXG4gICAgICBmbGV4OiAwIDAgYXV0bztcclxuICAgIH1cclxuXHJcbiAgICAmOmxhc3QtY2hpbGQge1xyXG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogMDtcclxuICAgIH1cclxuXHJcbiAgICBAaWYgbm90ICRidXR0b25ncm91cC1yYWRpdXMtb24tZWFjaCB7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDA7XHJcblxyXG4gICAgICAmOmZpcnN0LWNoaWxkIHtcclxuICAgICAgICBib3JkZXItdG9wLSN7JGdsb2JhbC1sZWZ0fS1yYWRpdXM6ICRidXR0b24tcmFkaXVzO1xyXG4gICAgICAgIGJvcmRlci1ib3R0b20tI3skZ2xvYmFsLWxlZnR9LXJhZGl1czogJGJ1dHRvbi1yYWRpdXM7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICY6bGFzdC1jaGlsZCB7XHJcbiAgICAgICAgYm9yZGVyLXRvcC0jeyRnbG9iYWwtcmlnaHR9LXJhZGl1czogJGJ1dHRvbi1yYWRpdXM7XHJcbiAgICAgICAgYm9yZGVyLWJvdHRvbS0jeyRnbG9iYWwtcmlnaHR9LXJhZGl1czogJGJ1dHRvbi1yYWRpdXM7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG59XHJcblxyXG4vLy8gQ3JlYXRlcyBhIGZ1bGwtd2lkdGggYnV0dG9uIGdyb3VwLCBtYWtpbmcgZWFjaCBidXR0b24gZXF1YWwgd2lkdGguXHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlbGVjdG9yIFskYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3JdIC0gU2VsZWN0b3IgZm9yIHRoZSBidXR0b25zIGluc2lkZSBhIGJ1dHRvbiBncm91cC5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkc3BhY2luZyBbJGJ1dHRvbmdyb3VwLXNwYWNpbmddIC0gU3BhY2luZyBiZXR3ZWVuIGJ1dHRvbnMgaW4gYSBidXR0b24gZ3JvdXAuXHJcbkBtaXhpbiBidXR0b24tZ3JvdXAtZXhwYW5kKFxyXG4gICRzZWxlY3RvcjogJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yLFxyXG4gICRzcGFjaW5nOiAkYnV0dG9uZ3JvdXAtc3BhY2luZyxcclxuICAkY291bnQ6IG51bGxcclxuKSB7XHJcbiAgQGlmIG5vdCAkZ2xvYmFsLWZsZXhib3gge1xyXG4gICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06IC0kc3BhY2luZztcclxuXHJcbiAgICAmOjpiZWZvcmUsXHJcbiAgICAmOjphZnRlciB7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAjeyRzZWxlY3Rvcn0ge1xyXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICAgIGZsZXg6IDEgMSAwcHg7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgemVyby11bml0XHJcbiAgICB9XHJcbiAgICBAZWxzZSB7XHJcbiAgICAgIC8vIE9uZSBjaGlsZFxyXG4gICAgICAmOmZpcnN0LWNoaWxkOmxhc3QtY2hpbGQge1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBUd28gb3IgbW9yZSBjaGlsZHJlZW5cclxuICAgICAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkYnV0dG9uZ3JvdXAtZXhwYW5kLW1heCB7XHJcbiAgICAgICAgJjpmaXJzdC1jaGlsZDpudGgtbGFzdC1jaGlsZCgjeyRpfSkge1xyXG4gICAgICAgICAgJiwgJjpmaXJzdC1jaGlsZDpudGgtbGFzdC1jaGlsZCgjeyRpfSkgfiAjeyRzZWxlY3Rvcn0ge1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgICAgIHdpZHRoOiBjYWxjKCN7cGVyY2VudGFnZSgxIC8gJGkpfSAtICN7JHNwYWNpbmd9KTtcclxuICAgICAgICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICRzcGFjaW5nO1xyXG5cclxuICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcclxuICAgICAgICAgICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJHNwYWNpbmcgKiAtJGJ1dHRvbmdyb3VwLWV4cGFuZC1tYXg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vLyBTdGFja3MgdGhlIGJ1dHRvbnMgaW4gYSBidXR0b24gZ3JvdXAuXHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlbGVjdG9yIFskYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3JdIC0gU2VsZWN0b3IgZm9yIHRoZSBidXR0b25zIGluc2lkZSB0aGUgYnV0dG9uIGdyb3VwLlxyXG5AbWl4aW4gYnV0dG9uLWdyb3VwLXN0YWNrKFxyXG4gICRzZWxlY3RvcjogJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yXHJcbikge1xyXG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xyXG4gICAgZmxleC13cmFwOiB3cmFwO1xyXG4gIH1cclxuXHJcbiAgI3skc2VsZWN0b3J9IHtcclxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xyXG4gICAgICBmbGV4OiAwIDAgMTAwJTtcclxuICAgIH1cclxuICAgIEBlbHNlIHtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICB9XHJcblxyXG4gICAgJjpsYXN0LWNoaWxkIHtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcclxuICAgIH1cclxuXHJcblxyXG4gICAgQGlmIG5vdCAkYnV0dG9uZ3JvdXAtcmFkaXVzLW9uLWVhY2gge1xyXG4gICAgICBib3JkZXItcmFkaXVzOiAwO1xyXG5cclxuICAgICAgJjpmaXJzdC1jaGlsZHtcclxuICAgICAgICBib3JkZXItdG9wLSN7JGdsb2JhbC1sZWZ0fS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG4gICAgICAgIGJvcmRlci10b3AtI3skZ2xvYmFsLXJpZ2h0fS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmOmxhc3QtY2hpbGQge1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgICAgICAgYm9yZGVyLWJvdHRvbS0jeyRnbG9iYWwtbGVmdH0tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcclxuICAgICAgICBib3JkZXItYm90dG9tLSN7JGdsb2JhbC1yaWdodH0tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcbn1cclxuXHJcbi8vLyBVbi1zdGFja3MgdGhlIGJ1dHRvbnMgaW4gYSBidXR0b24gZ3JvdXAuXHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlbGVjdG9yIFskYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3JdIC0gU2VsZWN0b3IgZm9yIHRoZSBidXR0b25zIGluc2lkZSB0aGUgYnV0dG9uIGdyb3VwLlxyXG5AbWl4aW4gYnV0dG9uLWdyb3VwLXVuc3RhY2soXHJcbiAgJHNlbGVjdG9yOiAkYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3JcclxuKSB7XHJcbiAgI3skc2VsZWN0b3J9IHtcclxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xyXG4gICAgICBmbGV4OiAxIDEgMHB4OyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIHplcm8tdW5pdFxyXG4gICAgfVxyXG4gICAgQGVsc2Uge1xyXG4gICAgICB3aWR0aDogYXV0bztcclxuICAgIH1cclxuICAgIG1hcmdpbi1ib3R0b206IDA7XHJcblxyXG4gICAgQGlmIG5vdCAkYnV0dG9uZ3JvdXAtcmFkaXVzLW9uLWVhY2gge1xyXG4gICAgICAmOmZpcnN0LWNoaWxkIHtcclxuICAgICAgICBib3JkZXItdG9wLSN7JGdsb2JhbC1sZWZ0fS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG4gICAgICAgIGJvcmRlci10b3AtI3skZ2xvYmFsLXJpZ2h0fS1yYWRpdXM6IDA7XHJcbiAgICAgICAgYm9yZGVyLWJvdHRvbS0jeyRnbG9iYWwtbGVmdH0tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcclxuICAgICAgfVxyXG5cclxuICAgICAgJjpsYXN0LWNoaWxkIHtcclxuICAgICAgICBib3JkZXItdG9wLSN7JGdsb2JhbC1yaWdodH0tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcclxuICAgICAgICBib3JkZXItYm90dG9tLSN7JGdsb2JhbC1yaWdodH0tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcclxuICAgICAgICBib3JkZXItYm90dG9tLSN7JGdsb2JhbC1sZWZ0fS1yYWRpdXM6IDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1idXR0b24tZ3JvdXAge1xyXG4gIC5idXR0b24tZ3JvdXAge1xyXG4gICAgQGluY2x1ZGUgYnV0dG9uLWdyb3VwO1xyXG5cclxuICAgIC8vIFNpemVzXHJcbiAgICBAZWFjaCAkc2l6ZSwgJHZhbHVlIGluIG1hcC1yZW1vdmUoJGJ1dHRvbi1zaXplcywgZGVmYXVsdCkge1xyXG4gICAgICAmLiN7JHNpemV9ICN7JGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yfSB7XHJcbiAgICAgICAgZm9udC1zaXplOiAkdmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBFdmVuLXdpZHRoIEdyb3VwXHJcbiAgICAmLmV4cGFuZGVkIHsgQGluY2x1ZGUgYnV0dG9uLWdyb3VwLWV4cGFuZDsgfVxyXG5cclxuICAgIC8vIENvbG9yc1xyXG4gICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkZm91bmRhdGlvbi1wYWxldHRlIHtcclxuICAgICAgQGlmICRidXR0b24tZmlsbCAhPSBob2xsb3cge1xyXG4gICAgICAgICYuI3skbmFtZX0gI3skYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3J9IHtcclxuICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1zdHlsZSgkY29sb3IsIGF1dG8sIGF1dG8pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBAZWxzZSB7XHJcbiAgICAgICAgJi4jeyRuYW1lfSAjeyRidXR0b25ncm91cC1jaGlsZC1zZWxlY3Rvcn0ge1xyXG4gICAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWhvbGxvdztcclxuICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1ob2xsb3ctc3R5bGUoJGNvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmLnN0YWNrZWQsXHJcbiAgICAmLnN0YWNrZWQtZm9yLXNtYWxsLFxyXG4gICAgJi5zdGFja2VkLWZvci1tZWRpdW0ge1xyXG4gICAgICBAaW5jbHVkZSBidXR0b24tZ3JvdXAtc3RhY2s7XHJcbiAgICB9XHJcblxyXG4gICAgJi5zdGFja2VkLWZvci1zbWFsbCB7XHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XHJcbiAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWdyb3VwLXVuc3RhY2s7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmLnN0YWNrZWQtZm9yLW1lZGl1bSB7XHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcclxuICAgICAgICBAaW5jbHVkZSBidXR0b24tZ3JvdXAtdW5zdGFjaztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICYuc3RhY2tlZC1mb3Itc21hbGwuZXhwYW5kZWQgeyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIGZvcmNlLWVsZW1lbnQtbmVzdGluZ1xyXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpIHtcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuXHJcbiAgICAgICAgI3skYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3J9IHtcclxuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vLy9cclxuLy8vIEBncm91cCBhY2NvcmRpb24tbWVudVxyXG4vLy8vXHJcblxyXG4vLy8gU2V0cyBhY2NvcmRpb24gbWVudSBwYWRkaW5nLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRhY2NvcmRpb25tZW51LXBhZGRpbmc6ICRnbG9iYWwtbWVudS1wYWRkaW5nICFkZWZhdWx0O1xyXG5cclxuLy8vIFNldHMgYWNjb3JkaW9uIG1lbnUgbmVzdGVkIG1hcmdpblxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRhY2NvcmRpb25tZW51LW5lc3RlZC1tYXJnaW46ICRnbG9iYWwtbWVudS1uZXN0ZWQtbWFyZ2luICFkZWZhdWx0O1xyXG5cclxuLy8vIFNldHMgYWNjb3JkaW9uIG1lbnUgc3VibWVudSBwYWRkaW5nLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRhY2NvcmRpb25tZW51LXN1Ym1lbnUtcGFkZGluZzogJGFjY29yZGlvbm1lbnUtcGFkZGluZyAhZGVmYXVsdDtcclxuXHJcbi8vLyBTZXRzIGlmIGFjY29yZGlvbiBtZW51cyBoYXZlIHRoZSBkZWZhdWx0IGFycm93IHN0eWxlcy5cclxuLy8vIEB0eXBlIEJvb2xlYW5cclxuJGFjY29yZGlvbm1lbnUtYXJyb3dzOiB0cnVlICFkZWZhdWx0O1xyXG5cclxuLy8vIFNldHMgYWNjb3JkaW9uIG1lbnUgYXJyb3cgY29sb3IgaWYgYXJyb3cgaXMgdXNlZC5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRhY2NvcmRpb25tZW51LWFycm93LWNvbG9yOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcclxuXHJcbi8vLyBTZXRzIGFjY29yZGlvbiBtZW51IGl0ZW0gcGFkZGluZy5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRhY2NvcmRpb25tZW51LWl0ZW0tYmFja2dyb3VuZDogbnVsbCAhZGVmYXVsdDtcclxuXHJcbi8vLyBTZXRzIGFjY29yZGlvbiBtZW51IGl0ZW0gYm9yZGVyLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGFjY29yZGlvbm1lbnUtYm9yZGVyOiBudWxsICFkZWZhdWx0O1xyXG5cclxuLy8vIFNldHMgYWNjb3JkaW9uIG1lbnUgaXRlbSBwYWRkaW5nLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGFjY29yZGlvbm1lbnUtc3VibWVudS10b2dnbGUtYmFja2dyb3VuZDogbnVsbCAhZGVmYXVsdDtcclxuXHJcbi8vLyBTZXRzIGFjY29yZGlvbiBtZW51IGl0ZW0gcGFkZGluZy5cclxuLy8vIEB0eXBlIExpc3RcclxuJGFjY29yZGlvbi1zdWJtZW51LXRvZ2dsZS1ib3JkZXI6ICRhY2NvcmRpb25tZW51LWJvcmRlciAhZGVmYXVsdDtcclxuXHJcbi8vLyBTZXRzIGFjY29yZGlvbiBtZW51IHN1Ym1lbnUgdG9nZ2xlIGJhY2tncm91bmQgd2lkdGguXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGFjY29yZGlvbm1lbnUtc3VibWVudS10b2dnbGUtd2lkdGg6IDQwcHggIWRlZmF1bHQ7XHJcblxyXG4vLy8gU2V0cyBhY2NvcmRpb24gbWVudSBzdWJtZW51IHRvZ2dsZSBiYWNrZ3JvdW5kIGhlaWdodC5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kYWNjb3JkaW9ubWVudS1zdWJtZW51LXRvZ2dsZS1oZWlnaHQ6ICRhY2NvcmRpb25tZW51LXN1Ym1lbnUtdG9nZ2xlLXdpZHRoICFkZWZhdWx0O1xyXG5cclxuLy8vIFNldHMgYWNjb3JkaW9uIG1lbnUgYXJyb3cgc2l6ZSBpZiBhcnJvdyBpcyB1c2VkLlxyXG4vLy8gQHR5cGUgTGVuZ3RoXHJcbiRhY2NvcmRpb25tZW51LWFycm93LXNpemU6IDZweCAhZGVmYXVsdDtcclxuXHJcbkBtaXhpbiB6Zi1hY2NvcmRpb24tbWVudS1sZWZ0LXJpZ2h0LWFycm93cyB7XHJcbiAgLmlzLWFjY29yZGlvbi1zdWJtZW51LXBhcmVudDpub3QoLmhhcy1zdWJtZW51LXRvZ2dsZSkgPiBhIHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHJcbiAgICAmOjphZnRlciB7XHJcbiAgICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkYWNjb3JkaW9ubWVudS1hcnJvdy1zaXplLCAkYWNjb3JkaW9ubWVudS1hcnJvdy1jb2xvciwgZG93bik7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgdG9wOiA1MCU7XHJcbiAgICAgIG1hcmdpbi10b3A6IC0xICogKCRhY2NvcmRpb25tZW51LWFycm93LXNpemUgLyAyKTtcclxuICAgICAgI3skZ2xvYmFsLXJpZ2h0fTogMXJlbTtcclxuICAgIH1cclxuICB9XHJcbiAgJi5hbGlnbi1sZWZ0IC5pcy1hY2NvcmRpb24tc3VibWVudS1wYXJlbnQgPiBhOjphZnRlciB7XHJcbiAgICBsZWZ0OiBhdXRvO1xyXG4gICAgcmlnaHQ6IDFyZW07XHJcbiAgfVxyXG4gICYuYWxpZ24tcmlnaHQgLmlzLWFjY29yZGlvbi1zdWJtZW51LXBhcmVudCA+IGE6OmFmdGVyIHtcclxuICAgIHJpZ2h0OiBhdXRvO1xyXG4gICAgbGVmdDogMXJlbTtcclxuICB9XHJcbn1cclxuQG1peGluIGZvdW5kYXRpb24tYWNjb3JkaW9uLW1lbnUge1xyXG5cclxuICAuYWNjb3JkaW9uLW1lbnUge1xyXG4gICAgQGlmICRhY2NvcmRpb25tZW51LWJvcmRlciB7XHJcbiAgICAgIGJvcmRlci1ib3R0b206ICRhY2NvcmRpb25tZW51LWJvcmRlcjtcclxuICAgIH1cclxuXHJcbiAgICBsaSB7XHJcbiAgICAgIEBpZiAkYWNjb3JkaW9ubWVudS1ib3JkZXIge1xyXG4gICAgICAgIGJvcmRlci10b3A6ICRhY2NvcmRpb25tZW51LWJvcmRlcjtcclxuICAgICAgICBib3JkZXItcmlnaHQ6ICRhY2NvcmRpb25tZW51LWJvcmRlcjtcclxuICAgICAgICBib3JkZXItbGVmdDogJGFjY29yZGlvbm1lbnUtYm9yZGVyO1xyXG4gICAgICB9XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgfVxyXG5cclxuICAgIGEge1xyXG4gICAgICBAaWYgJGFjY29yZGlvbm1lbnUtaXRlbS1iYWNrZ3JvdW5kIHtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAkYWNjb3JkaW9ubWVudS1pdGVtLWJhY2tncm91bmQ7XHJcbiAgICAgIH1cclxuICAgICAgcGFkZGluZzogJGFjY29yZGlvbm1lbnUtcGFkZGluZztcclxuICAgIH1cclxuICAgIFxyXG4gICAgLmlzLWFjY29yZGlvbi1zdWJtZW51IGEge1xyXG4gICAgICBwYWRkaW5nOiAkYWNjb3JkaW9ubWVudS1zdWJtZW51LXBhZGRpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgLm5lc3RlZC5pcy1hY2NvcmRpb24tc3VibWVudSB7XHJcbiAgICAgIEBpbmNsdWRlIG1lbnUtbmVzdGVkKCRhY2NvcmRpb25tZW51LW5lc3RlZC1tYXJnaW4pO1xyXG4gICAgfVxyXG5cclxuICAgICYuYWxpZ24tI3skZ2xvYmFsLXJpZ2h0fSB7XHJcbiAgICAgIC5uZXN0ZWQuaXMtYWNjb3JkaW9uLXN1Ym1lbnUge1xyXG4gICAgICAgIEBpbmNsdWRlIG1lbnUtbmVzdGVkKCRhY2NvcmRpb25tZW51LW5lc3RlZC1tYXJnaW4sIHJpZ2h0KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBpZiAkYWNjb3JkaW9ubWVudS1hcnJvd3Mge1xyXG4gICAgICBAaW5jbHVkZSB6Zi1hY2NvcmRpb24tbWVudS1sZWZ0LXJpZ2h0LWFycm93cztcclxuXHJcbiAgICAgIC5pcy1hY2NvcmRpb24tc3VibWVudS1wYXJlbnRbYXJpYS1leHBhbmRlZD0ndHJ1ZSddID4gYTo6YWZ0ZXIge1xyXG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XHJcbiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmlzLWFjY29yZGlvbi1zdWJtZW51IGxpIHtcclxuICAgIEBpZiAkYWNjb3JkaW9ubWVudS1ib3JkZXIge1xyXG4gICAgICBib3JkZXItcmlnaHQ6IDA7XHJcbiAgICAgIGJvcmRlci1sZWZ0OiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmlzLWFjY29yZGlvbi1zdWJtZW51LXBhcmVudCB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgfVxyXG5cclxuICAuaGFzLXN1Ym1lbnUtdG9nZ2xlID4gYSB7XHJcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJGFjY29yZGlvbm1lbnUtc3VibWVudS10b2dnbGUtd2lkdGg7XHJcbiAgfVxyXG5cclxuICAvLyBTdWJtZW51IHRvZ2dsZVxyXG4gIC5zdWJtZW51LXRvZ2dsZSB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDA7XHJcbiAgICAjeyRnbG9iYWwtcmlnaHR9OiAwO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG5cclxuICAgIHdpZHRoOiAkYWNjb3JkaW9ubWVudS1zdWJtZW51LXRvZ2dsZS13aWR0aDtcclxuICAgIGhlaWdodDogJGFjY29yZGlvbm1lbnUtc3VibWVudS10b2dnbGUtaGVpZ2h0O1xyXG5cclxuICAgIGJvcmRlci0jeyRnbG9iYWwtbGVmdH06ICRhY2NvcmRpb24tc3VibWVudS10b2dnbGUtYm9yZGVyO1xyXG5cclxuICAgIEBpZiAkYWNjb3JkaW9ubWVudS1zdWJtZW51LXRvZ2dsZS1iYWNrZ3JvdW5kIHtcclxuICAgICAgYmFja2dyb3VuZDogJGFjY29yZGlvbm1lbnUtc3VibWVudS10b2dnbGUtYmFja2dyb3VuZDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBBZGQgdGhlIGFycm93IHRvIHRoZSB0b2dnbGVcclxuICAgICY6OmFmdGVyIHtcclxuICAgICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKDZweCwgJGFjY29yZGlvbm1lbnUtYXJyb3ctY29sb3IsIGRvd24pO1xyXG5cclxuICAgICAgdG9wOiAwO1xyXG4gICAgICBib3R0b206IDA7XHJcbiAgICAgIG1hcmdpbjogYXV0bztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFJvdGF0ZSB0aGUgYXJyb3cgd2hlbiBtZW51IGlzIG9wZW5cclxuICAuc3VibWVudS10b2dnbGVbYXJpYS1leHBhbmRlZD0ndHJ1ZSddOjphZnRlciB7XHJcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgtMSk7XHJcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiA1MCUgNTAlO1xyXG4gIH1cclxuXHJcbiAgLnN1Ym1lbnUtdG9nZ2xlLXRleHQge1xyXG4gICAgQGluY2x1ZGUgZWxlbWVudC1pbnZpc2libGU7XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBhY2NvcmRpb25cclxuLy8vL1xyXG5cclxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBvZiBhbiBhY2NvcmRpb24gZ3JvdXAuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kYWNjb3JkaW9uLWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBJZiBgdHJ1ZWAsIGFkZHMgcGx1cyBhbmQgbWludXMgaWNvbnMgdG8gdGhlIHNpZGUgb2YgZWFjaCBhY2NvcmRpb24gdGl0bGUuXHJcbi8vLyBAdHlwZSBCb29sZWFuXHJcbiRhY2NvcmRpb24tcGx1c21pbnVzOiB0cnVlICFkZWZhdWx0O1xyXG5cclxuLy8vIEZvbnQgc2l6ZSBvZiBhY2NvcmRpb24gdGl0bGVzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRhY2NvcmRpb24tdGl0bGUtZm9udC1zaXplOiByZW0tY2FsYygxMikgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCB0ZXh0IGNvbG9yIGZvciBpdGVtcyBpbiBhIE1lbnUuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kYWNjb3JkaW9uLWl0ZW0tY29sb3I6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBvbiBob3ZlciBmb3IgaXRlbXMgaW4gYSBNZW51LlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGFjY29yZGlvbi1pdGVtLWJhY2tncm91bmQtaG92ZXI6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgcGFkZGluZyBvZiBhbiBhY2NvcmRpb24gaXRlbS5cclxuLy8vIEB0eXBlIE51bWJlciB8IExpc3RcclxuJGFjY29yZGlvbi1pdGVtLXBhZGRpbmc6IDEuMjVyZW0gMXJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3Igb2YgdGFiIGNvbnRlbnQuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kYWNjb3JkaW9uLWNvbnRlbnQtYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgYm9yZGVyIGNvbG9yIG9mIHRhYiBjb250ZW50LlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGFjY29yZGlvbi1jb250ZW50LWJvcmRlcjogMXB4IHNvbGlkICRsaWdodC1ncmF5ICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgdGV4dCBjb2xvciBvZiB0YWIgY29udGVudC5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRhY2NvcmRpb24tY29udGVudC1jb2xvcjogJGJvZHktZm9udC1jb2xvciAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IHBhZGRpbmcgZm9yIHRhYiBjb250ZW50LlxyXG4vLy8gQHR5cGUgTnVtYmVyIHwgTGlzdFxyXG4kYWNjb3JkaW9uLWNvbnRlbnQtcGFkZGluZzogMXJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBBZGRzIHN0eWxlcyBmb3IgYW4gYWNjb3JkaW9uIGNvbnRhaW5lci4gQXBwbHkgdGhpcyB0byB0aGUgc2FtZSBlbGVtZW50IHRoYXQgZ2V0cyBgZGF0YS1hY2NvcmRpb25gLlxyXG5AbWl4aW4gYWNjb3JkaW9uLWNvbnRhaW5lciAoXHJcbiAgJGJhY2tncm91bmQ6ICRhY2NvcmRpb24tYmFja2dyb3VuZFxyXG4pIHtcclxuICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAwO1xyXG4gIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xyXG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcclxuICAmW2Rpc2FibGVkXSB7XHJcbiAgICAuYWNjb3JkaW9uLXRpdGxlIHtcclxuICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGFjY29yZGlvbiBpdGVtLiBBcHBseSB0aGlzIHRvIHRoZSBsaXN0IGl0ZW0gd2l0aGluIGFuIGFjY29yZGlvbiB1bC5cclxuQG1peGluIGFjY29yZGlvbi1pdGVtIHtcclxuICAmOmZpcnN0LWNoaWxkID4gOmZpcnN0LWNoaWxkIHtcclxuICAgIGJvcmRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICRnbG9iYWwtcmFkaXVzIDAgMDtcclxuICB9XHJcblxyXG4gICY6bGFzdC1jaGlsZCA+IDpsYXN0LWNoaWxkIHtcclxuICAgIGJvcmRlci1yYWRpdXM6IDAgMCAkZ2xvYmFsLXJhZGl1cyAkZ2xvYmFsLXJhZGl1cztcclxuICB9XHJcbn1cclxuXHJcbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIHRpdGxlIG9mIGFuIGFjY29yZGlvbiBpdGVtLiBBcHBseSB0aGlzIHRvIHRoZSBsaW5rIHdpdGhpbiBhbiBhY2NvcmRpb24gaXRlbS5cclxuQG1peGluIGFjY29yZGlvbi10aXRsZSAoXHJcbiAgJHBhZGRpbmc6ICRhY2NvcmRpb24taXRlbS1wYWRkaW5nLFxyXG4gICRmb250LXNpemU6ICRhY2NvcmRpb24tdGl0bGUtZm9udC1zaXplLFxyXG4gICRjb2xvcjogJGFjY29yZGlvbi1pdGVtLWNvbG9yLFxyXG4gICRib3JkZXI6ICRhY2NvcmRpb24tY29udGVudC1ib3JkZXIsXHJcbiAgJGJhY2tncm91bmQtaG92ZXI6ICRhY2NvcmRpb24taXRlbS1iYWNrZ3JvdW5kLWhvdmVyXHJcbikge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBkaXNwbGF5OiBibG9jaztcclxuICBwYWRkaW5nOiAkcGFkZGluZztcclxuXHJcbiAgYm9yZGVyOiAkYm9yZGVyO1xyXG4gIGJvcmRlci1ib3R0b206IDA7XHJcblxyXG4gIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZTtcclxuICBsaW5lLWhlaWdodDogMTtcclxuICBjb2xvcjogJGNvbG9yO1xyXG5cclxuICA6bGFzdC1jaGlsZDpub3QoLmlzLWFjdGl2ZSkgPiAmIHtcclxuICAgIGJvcmRlci1ib3R0b206ICRib3JkZXI7XHJcbiAgICBib3JkZXItcmFkaXVzOiAwIDAgJGdsb2JhbC1yYWRpdXMgJGdsb2JhbC1yYWRpdXM7XHJcbiAgfVxyXG5cclxuICAmOmhvdmVyLFxyXG4gICY6Zm9jdXMge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQtaG92ZXI7XHJcbiAgfVxyXG5cclxuICBAaWYgJGFjY29yZGlvbi1wbHVzbWludXMge1xyXG4gICAgJjo6YmVmb3JlIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6IDUwJTtcclxuICAgICAgI3skZ2xvYmFsLXJpZ2h0fTogMXJlbTtcclxuICAgICAgbWFyZ2luLXRvcDogLTAuNXJlbTtcclxuICAgICAgY29udGVudDogJysnO1xyXG4gICAgfVxyXG5cclxuICAgIC5pcy1hY3RpdmUgPiAmOjpiZWZvcmUge1xyXG4gICAgICBjb250ZW50OiAnXFwyMDEzJztcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vLyBBZGRzIHN0eWxlcyBmb3IgYWNjb3JkaW9uIGNvbnRlbnQuIEFwcGx5IHRoaXMgdG8gdGhlIGNvbnRlbnQgcGFuZSBiZWxvdyBhbiBhY2NvcmRpb24gaXRlbSdzIHRpdGxlLlxyXG5AbWl4aW4gYWNjb3JkaW9uLWNvbnRlbnQgKFxyXG4gICRwYWRkaW5nOiAkYWNjb3JkaW9uLWNvbnRlbnQtcGFkZGluZyxcclxuICAkYm9yZGVyOiAkYWNjb3JkaW9uLWNvbnRlbnQtYm9yZGVyLFxyXG4gICRiYWNrZ3JvdW5kOiAkYWNjb3JkaW9uLWNvbnRlbnQtYmFja2dyb3VuZCxcclxuICAkY29sb3I6ICRhY2NvcmRpb24tY29udGVudC1jb2xvclxyXG4pIHtcclxuICBkaXNwbGF5OiBub25lO1xyXG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xyXG5cclxuICBib3JkZXI6ICRib3JkZXI7XHJcbiAgYm9yZGVyLWJvdHRvbTogMDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcclxuXHJcbiAgY29sb3I6ICRjb2xvcjtcclxuXHJcbiAgOmxhc3QtY2hpbGQgPiAmOmxhc3QtY2hpbGQge1xyXG4gICAgYm9yZGVyLWJvdHRvbTogJGJvcmRlcjtcclxuICB9XHJcbn1cclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLWFjY29yZGlvbiB7XHJcbiAgLmFjY29yZGlvbiB7XHJcbiAgICBAaW5jbHVkZSBhY2NvcmRpb24tY29udGFpbmVyO1xyXG4gIH1cclxuXHJcbiAgLmFjY29yZGlvbi1pdGVtIHtcclxuICAgIEBpbmNsdWRlIGFjY29yZGlvbi1pdGVtO1xyXG4gIH1cclxuXHJcbiAgLmFjY29yZGlvbi10aXRsZSB7XHJcbiAgICBAaW5jbHVkZSBhY2NvcmRpb24tdGl0bGU7XHJcbiAgfVxyXG5cclxuICAuYWNjb3JkaW9uLWNvbnRlbnQge1xyXG4gICAgQGluY2x1ZGUgYWNjb3JkaW9uLWNvbnRlbnQ7XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBiYWRnZVxyXG4vLy8vXHJcblxyXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIGZvciBiYWRnZXMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kYmFkZ2UtYmFja2dyb3VuZDogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCB0ZXh0IGNvbG9yIGZvciBiYWRnZXMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kYmFkZ2UtY29sb3I6ICR3aGl0ZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBBbHRlcm5hdGUgdGV4dCBjb2xvciBmb3IgYmFkZ2VzLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGJhZGdlLWNvbG9yLWFsdDogJGJsYWNrICFkZWZhdWx0O1xyXG5cclxuLy8vIENvbG9yaW5nIGNsYXNzZXMuIEEgbWFwIG9mIGNsYXNzZXMgdG8gb3V0cHV0IGluIHlvdXIgQ1NTLCBsaWtlIGAuc2Vjb25kYXJ5YCwgYC5zdWNjZXNzYCwgYW5kIHNvIG9uLlxyXG4vLy8gQHR5cGUgTWFwXHJcbiRiYWRnZS1wYWxldHRlOiAkZm91bmRhdGlvbi1wYWxldHRlICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgcGFkZGluZyBpbnNpZGUgYmFkZ2VzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRiYWRnZS1wYWRkaW5nOiAwLjNlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBNaW5pbXVtIHdpZHRoIG9mIGEgYmFkZ2UuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGJhZGdlLW1pbndpZHRoOiAyLjFlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGZvbnQgc2l6ZSBmb3IgYmFkZ2VzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRiYWRnZS1mb250LXNpemU6IDAuNnJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBHZW5lcmF0ZXMgdGhlIGJhc2Ugc3R5bGVzIGZvciBhIGJhZGdlLlxyXG5AbWl4aW4gYmFkZ2Uge1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICBtaW4td2lkdGg6ICRiYWRnZS1taW53aWR0aDtcclxuICBwYWRkaW5nOiAkYmFkZ2UtcGFkZGluZztcclxuXHJcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG5cclxuICBmb250LXNpemU6ICRiYWRnZS1mb250LXNpemU7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1iYWRnZSB7XHJcbiAgLmJhZGdlIHtcclxuICAgIEBpbmNsdWRlIGJhZGdlO1xyXG5cclxuICAgIGJhY2tncm91bmQ6ICRiYWRnZS1iYWNrZ3JvdW5kO1xyXG4gICAgY29sb3I6ICRiYWRnZS1jb2xvcjtcclxuXHJcbiAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRiYWRnZS1wYWxldHRlIHtcclxuICAgICAgJi4jeyRuYW1lfSB7XHJcbiAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yO1xyXG4gICAgICAgIGNvbG9yOiBjb2xvci1waWNrLWNvbnRyYXN0KCRjb2xvciwgKCRiYWRnZS1jb2xvciwgJGJhZGdlLWNvbG9yLWFsdCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBicmVhZGNydW1ic1xyXG4vLy8vXHJcblxyXG4vLy8gTWFyZ2luIGFyb3VuZCBhIGJyZWFkY3J1bWJzIGNvbnRhaW5lci5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kYnJlYWRjcnVtYnMtbWFyZ2luOiAwIDAgJGdsb2JhbC1tYXJnaW4gMCAhZGVmYXVsdDtcclxuXHJcbi8vLyBGb250IHNpemUgb2YgYnJlYWRjcnVtYiBsaW5rcy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kYnJlYWRjcnVtYnMtaXRlbS1mb250LXNpemU6IHJlbS1jYWxjKDExKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBDb2xvciBvZiBicmVhZGNydW1iIGxpbmtzLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGJyZWFkY3J1bWJzLWl0ZW0tY29sb3I6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xyXG5cclxuLy8vIENvbG9yIG9mIHRoZSBhY3RpdmUgYnJlYWRjcnVtYiBsaW5rLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGJyZWFkY3J1bWJzLWl0ZW0tY29sb3ItY3VycmVudDogJGJsYWNrICFkZWZhdWx0O1xyXG5cclxuLy8vIE9wYWNpdHkgb2YgZGlzYWJsZWQgYnJlYWRjcnVtYiBsaW5rcy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kYnJlYWRjcnVtYnMtaXRlbS1jb2xvci1kaXNhYmxlZDogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xyXG5cclxuLy8vIE1hcmdpbiBiZXR3ZWVuIGJyZWFkY3J1bWIgaXRlbXMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGJyZWFkY3J1bWJzLWl0ZW0tbWFyZ2luOiAwLjc1cmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIElmIGB0cnVlYCwgbWFrZXMgYnJlYWRjcnVtYiBsaW5rcyB1cHBlcmNhc2UuXHJcbi8vLyBAdHlwZSBCb29sZWFuXHJcbiRicmVhZGNydW1icy1pdGVtLXVwcGVyY2FzZTogdHJ1ZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBJZiBgdHJ1ZWAsIGFkZHMgYSBzZXBlcmF0b3IgYmV0d2VlbiBicmVhZGNydW1iIGxpbmtzLlxyXG4vLy8gQHR5cGUgQm9vbGVhblxyXG4kYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3I6IHRydWUgIWRlZmF1bHQ7XHJcblxyXG4vLyBJZiBpdCBleGlzdHMgJGJyZWFkY3J1bWJzLWl0ZW0tc2xhc2ggaXMgdXNlZCB0byBidWlsZCAkYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3IuIFNlZSB0aGUgZG9jdW1lbnRhdGlvbi5cclxuQGlmIHZhcmlhYmxlLWV4aXN0cyhicmVhZGNydW1icy1pdGVtLXNsYXNoKSB7XHJcbiAgJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yOiAkYnJlYWRjcnVtYnMtaXRlbS1zbGFzaDtcclxufVxyXG5cclxuLy8vIFVzZWQgY2hhcmFjdGVyIGZvciB0aGUgYnJlYWRjcnVtYiBzZXBhcmF0b3IuXHJcbi8vLyBAdHlwZSBDb250ZW50XHJcbiRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvci1pdGVtOiAnLycgIWRlZmF1bHQ7XHJcblxyXG4vLy8gVXNlZCBjaGFyYWN0ZXIgZm9yIHRoZSBicmVhZGNydW1iIHNlcGFyYXRvciBpbiBydGwgbW9kZS5cclxuLy8vIEB0eXBlIENvbnRlbnRcclxuJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yLWl0ZW0tcnRsOiAnXFxcXCcgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQ29sb3Igb2YgYnJlYWRjcnVtYiBpdGVtLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yLWNvbG9yOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XHJcblxyXG4vLyBJZiBpdCBleGlzdHMgJGJyZWFkY3J1bWJzLWl0ZW0tc2xhc2gtY29sb3IgaXMgdXNlZCB0byBidWlsZCAkYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3ItY29sb3IuIFNlZSB0aGUgZG9jdW1lbnRhdGlvbi5cclxuQGlmIHZhcmlhYmxlLWV4aXN0cyhicmVhZGNydW1icy1pdGVtLXNsYXNoLWNvbG9yKSB7XHJcbiAgJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yLWNvbG9yOiAkYnJlYWRjcnVtYnMtaXRlbS1zbGFzaC1jb2xvcjtcclxufVxyXG5cclxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIGJyZWFkY3J1bWJzIGNvbnRhaW5lciwgYWxvbmcgd2l0aCB0aGUgc3R5bGVzIGZvciB0aGUgYDxsaT5gIGFuZCBgPGE+YCBlbGVtZW50cyBpbnNpZGUgb2YgaXQuXHJcbkBtaXhpbiBicmVhZGNydW1icy1jb250YWluZXIge1xyXG4gIEBpbmNsdWRlIGNsZWFyZml4O1xyXG4gIG1hcmdpbjogJGJyZWFkY3J1bWJzLW1hcmdpbjtcclxuICBsaXN0LXN0eWxlOiBub25lO1xyXG5cclxuICAvLyBJdGVtIHdyYXBwZXJcclxuICBsaSB7XHJcbiAgICBmbG9hdDogI3skZ2xvYmFsLWxlZnR9O1xyXG5cclxuICAgIGZvbnQtc2l6ZTogJGJyZWFkY3J1bWJzLWl0ZW0tZm9udC1zaXplO1xyXG4gICAgY29sb3I6ICRicmVhZGNydW1icy1pdGVtLWNvbG9yLWN1cnJlbnQ7XHJcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XHJcblxyXG4gICAgQGlmICRicmVhZGNydW1icy1pdGVtLXVwcGVyY2FzZSB7XHJcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XHJcbiAgICB9XHJcblxyXG4gICAgQGlmICRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvciB7XHJcbiAgICAgIC8vIE5lZWQgdG8gZXNjYXBlIHRoZSBiYWNrc2xhc2hcclxuICAgICAgJHNlcGFyYXRvcjogaWYoJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSAnbHRyJywgJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yLWl0ZW0sICRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvci1pdGVtLXJ0bCk7XHJcblxyXG4gICAgICAmOm5vdCg6bGFzdC1jaGlsZCk6OmFmdGVyIHtcclxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgbWFyZ2luOiAwICRicmVhZGNydW1icy1pdGVtLW1hcmdpbjtcclxuICAgICAgICBvcGFjaXR5OiAxO1xyXG4gICAgICAgIGNvbnRlbnQ6ICRzZXBhcmF0b3I7XHJcbiAgICAgICAgY29sb3I6ICRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvci1jb2xvcjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgQGVsc2Uge1xyXG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJGJyZWFkY3J1bWJzLWl0ZW0tbWFyZ2luO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gUGFnZSBsaW5rc1xyXG4gIGEge1xyXG4gICAgY29sb3I6ICRicmVhZGNydW1icy1pdGVtLWNvbG9yO1xyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLWJyZWFkY3J1bWJzIHtcclxuICAuYnJlYWRjcnVtYnMge1xyXG4gICAgQGluY2x1ZGUgYnJlYWRjcnVtYnMtY29udGFpbmVyO1xyXG5cclxuICAgIC5kaXNhYmxlZCB7XHJcbiAgICAgIGNvbG9yOiAkYnJlYWRjcnVtYnMtaXRlbS1jb2xvci1kaXNhYmxlZDtcclxuICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIGNhbGxvdXRcclxuLy8vL1xyXG5cclxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvci5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRjYWxsb3V0LWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGZhZGUgdmFsdWUgZm9yIGNhbGxvdXQgYmFja2dyb3VuZHMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGNhbGxvdXQtYmFja2dyb3VuZC1mYWRlOiA4NSUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBib3JkZXIgc3R5bGUgZm9yIGNhbGxvdXRzLlxyXG4vLy8gQHR5cGUgTGlzdFxyXG4kY2FsbG91dC1ib3JkZXI6IDFweCBzb2xpZCByZ2JhKCRibGFjaywgMC4yNSkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBib3R0b20gbWFyZ2luIGZvciBjYWxsb3V0cy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kY2FsbG91dC1tYXJnaW46IDAgMCAxcmVtIDAgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBpbm5lciBwYWRkaW5nIGZvciBjYWxsb3V0cy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kY2FsbG91dC1wYWRkaW5nOiAxcmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgZm9udCBjb2xvciBmb3IgY2FsbG91dHMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kY2FsbG91dC1mb250LWNvbG9yOiAkYm9keS1mb250LWNvbG9yICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgZm9udCBjb2xvciBmb3IgY2FsbG91dHMsIGlmIHRoZSBjYWxsb3V0IGhhcyBhIGRhcmsgYmFja2dyb3VuZC5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRjYWxsb3V0LWZvbnQtY29sb3ItYWx0OiAkYm9keS1iYWNrZ3JvdW5kICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgYm9yZGVyIHJhZGl1cyBmb3IgY2FsbG91dHMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kY2FsbG91dC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xyXG5cclxuLy8vIEFtb3VudCB0byB0aW50IGxpbmtzIHVzZWQgd2l0aGluIGNvbG9yZWQgcGFuZWxzLiBTZXQgdG8gYGZhbHNlYCB0byBkaXNhYmxlIHRoaXMgZmVhdHVyZS5cclxuLy8vIEB0eXBlIE51bWJlciB8IEJvb2xlYW5cclxuJGNhbGxvdXQtbGluay10aW50OiAzMCUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQWRkcyBiYXNpYyBzdHlsZXMgZm9yIGEgY2FsbG91dCwgaW5jbHVkaW5nIHBhZGRpbmcgYW5kIG1hcmdpbi5cclxuQG1peGluIGNhbGxvdXQtYmFzZSgpIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgbWFyZ2luOiAkY2FsbG91dC1tYXJnaW47XHJcbiAgcGFkZGluZzogJGNhbGxvdXQtcGFkZGluZztcclxuXHJcbiAgYm9yZGVyOiAkY2FsbG91dC1ib3JkZXI7XHJcbiAgYm9yZGVyLXJhZGl1czogJGNhbGxvdXQtcmFkaXVzO1xyXG5cclxuICAvLyBSZXNwZWN0IHRoZSBwYWRkaW5nLCBmb29sLlxyXG4gID4gOmZpcnN0LWNoaWxkIHtcclxuICAgIG1hcmdpbi10b3A6IDA7XHJcbiAgfVxyXG5cclxuICA+IDpsYXN0LWNoaWxkIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gR2VuZXJhdGUgcXVpY2sgc3R5bGVzIGZvciBhIGNhbGxvdXQgdXNpbmcgYSBzaW5nbGUgY29sb3IgYXMgYSBiYXNlbGluZS5cclxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbJGNhbGxvdXQtYmFja2dyb3VuZF0gLSBDb2xvciB0byB1c2UuXHJcbkBtaXhpbiBjYWxsb3V0LXN0eWxlKCRjb2xvcjogJGNhbGxvdXQtYmFja2dyb3VuZCkge1xyXG4gICRiYWNrZ3JvdW5kOiBzY2FsZS1jb2xvcigkY29sb3IsICRsaWdodG5lc3M6ICRjYWxsb3V0LWJhY2tncm91bmQtZmFkZSk7XHJcblxyXG4gIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xyXG4gIGNvbG9yOiBjb2xvci1waWNrLWNvbnRyYXN0KCRiYWNrZ3JvdW5kLCAoJGNhbGxvdXQtZm9udC1jb2xvciwgJGNhbGxvdXQtZm9udC1jb2xvci1hbHQpKTtcclxufVxyXG5cclxuQG1peGluIGNhbGxvdXQtc2l6ZSgkcGFkZGluZykge1xyXG4gIHBhZGRpbmctdG9wOiAkcGFkZGluZztcclxuICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZztcclxuICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmc7XHJcbiAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcclxufVxyXG5cclxuXHJcbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBjYWxsb3V0LlxyXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskY2FsbG91dC1iYWNrZ3JvdW5kXSAtIENvbG9yIHRvIHVzZS5cclxuQG1peGluIGNhbGxvdXQoJGNvbG9yOiAkY2FsbG91dC1iYWNrZ3JvdW5kKSB7XHJcbiAgQGluY2x1ZGUgY2FsbG91dC1iYXNlO1xyXG4gIEBpbmNsdWRlIGNhbGxvdXQtc3R5bGUoJGNvbG9yKTtcclxufVxyXG5cclxuQG1peGluIGZvdW5kYXRpb24tY2FsbG91dCB7XHJcbiAgLmNhbGxvdXQge1xyXG4gICAgQGluY2x1ZGUgY2FsbG91dDtcclxuXHJcbiAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRmb3VuZGF0aW9uLXBhbGV0dGUge1xyXG4gICAgICAmLiN7JG5hbWV9IHtcclxuICAgICAgICBAaW5jbHVkZSBjYWxsb3V0LXN0eWxlKCRjb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmLnNtYWxsIHtcclxuICAgICAgQGluY2x1ZGUgY2FsbG91dC1zaXplKDAuNXJlbSk7XHJcbiAgICB9XHJcblxyXG4gICAgJi5sYXJnZSB7XHJcbiAgICAgIEBpbmNsdWRlIGNhbGxvdXQtc2l6ZSgzcmVtKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIGNhcmRcclxuLy8vL1xyXG5cclxuLy8vIERlZnVhbHQgYmFja2dyb3VuZCBjb2xvci5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRjYXJkLWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGZvbnQgY29sb3IgZm9yIGNhcmRzLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGNhcmQtZm9udC1jb2xvcjogJGJvZHktZm9udC1jb2xvciAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGJhY2tncm91bmQuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kY2FyZC1kaXZpZGVyLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgYm9yZGVyIHN0eWxlLlxyXG4vLy8gQHR5cGUgTGlzdFxyXG4kY2FyZC1ib3JkZXI6IDFweCBzb2xpZCAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGNhcmQgc2hhZG93LlxyXG4vLy8gQHR5cGUgTGlzdFxyXG4kY2FyZC1zaGFkb3c6IG5vbmUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBib3JkZXIgcmFkaXVzLlxyXG4vLy8gQHR5cGUgTGlzdFxyXG4kY2FyZC1ib3JkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IHBhZGRpbmcuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGNhcmQtcGFkZGluZzogJGdsb2JhbC1wYWRkaW5nICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgYm90dG9tIG1hcmdpbi5cclxuLy8vIEB0eXBlIG51bWJlclxyXG4kY2FyZC1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbiAhZGVmYXVsdDtcclxuXHJcbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBjYXJkIGNvbnRhaW5lci5cclxuLy8vIEBwYXJhbSB7Q29sb3J9ICRiYWNrZ3JvdW5kIC0gQmFja2dyb3VuZCBjb2xvciBvZiB0aGUgY2FyZC5cclxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIGZvbnQgY29sb3Igb2YgdGhlIGNhcmQuXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJG1hcmdpbiAtIEJvdHRvbSBtYXJnaW4gb2YgdGhlIGNhcmQuXHJcbi8vLyBAcGFyYW0ge0xpc3R9ICRib3JkZXIgLSBCb3JkZXIgYXJvdW5kIHRoZSBjYXJkLlxyXG4vLy8gQHBhcmFtIHtMaXN0fSAkcmFkaXVzIC0gYm9yZGVyIHJhZGl1cyBvZiB0aGUgY2FyZC5cclxuLy8vIEBwYXJhbSB7TGlzdH0gJHNoYWRvdyAtIGJveCBzaGFkb3cgb2YgdGhlIGNhcmQuXHJcbkBtaXhpbiBjYXJkLWNvbnRhaW5lcihcclxuICAkYmFja2dyb3VuZDogJGNhcmQtYmFja2dyb3VuZCxcclxuICAkY29sb3I6ICRjYXJkLWZvbnQtY29sb3IsXHJcbiAgJG1hcmdpbjogJGNhcmQtbWFyZ2luLWJvdHRvbSxcclxuICAkYm9yZGVyOiAkY2FyZC1ib3JkZXIsXHJcbiAgJHJhZGl1czogJGNhcmQtYm9yZGVyLXJhZGl1cyxcclxuICAkc2hhZG93OiAkY2FyZC1zaGFkb3dcclxuKSB7XHJcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGZsZXgtZ3JvdzogMTtcclxuICB9XHJcblxyXG4gIG1hcmdpbi1ib3R0b206ICRtYXJnaW47XHJcblxyXG4gIGJvcmRlcjogJGJvcmRlcjtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xyXG5cclxuICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcclxuICBib3gtc2hhZG93OiAkc2hhZG93O1xyXG5cclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIGNvbG9yOiAkY29sb3I7XHJcblxyXG4gICYgPiA6bGFzdC1jaGlsZCB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIGNhcmQgZGl2aWRlci5cclxuQG1peGluIGNhcmQtZGl2aWRlcihcclxuICAkYmFja2dyb3VuZDogJGNhcmQtZGl2aWRlci1iYWNrZ3JvdW5kLFxyXG4gICRwYWRkaW5nOiAkY2FyZC1wYWRkaW5nXHJcbikge1xyXG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xyXG4gICAgZmxleDogMCAxIGF1dG87XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gIH1cclxuXHJcbiAgcGFkZGluZzogJHBhZGRpbmc7XHJcbiAgYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XHJcblxyXG4gICYgPiA6bGFzdC1jaGlsZCB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIGNhcmQgc2VjdGlvbi5cclxuQG1peGluIGNhcmQtc2VjdGlvbihcclxuICAkcGFkZGluZzogJGNhcmQtcGFkZGluZ1xyXG4pIHtcclxuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcclxuICAgIGZsZXg6IDEgMCBhdXRvO1xyXG4gIH1cclxuXHJcbiAgcGFkZGluZzogJHBhZGRpbmc7XHJcblxyXG4gICYgPiA6bGFzdC1jaGlsZCB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gIH1cclxufVxyXG5cclxuQG1peGluIGZvdW5kYXRpb24tY2FyZCB7XHJcbiAgLmNhcmQge1xyXG4gICAgQGluY2x1ZGUgY2FyZC1jb250YWluZXI7XHJcbiAgfVxyXG5cclxuICAuY2FyZC1kaXZpZGVyIHtcclxuICAgIEBpbmNsdWRlIGNhcmQtZGl2aWRlcjtcclxuICB9XHJcblxyXG4gIC5jYXJkLXNlY3Rpb24ge1xyXG4gICAgQGluY2x1ZGUgY2FyZC1zZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgLy8gRm9yIElFIDExIC0gRmxleGJ1Z1xyXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9waGlsaXB3YWx0b24vZmxleGJ1Z3MvaXNzdWVzLzc1XHJcbiAgLmNhcmQtaW1hZ2Uge1xyXG4gICAgbWluLWhlaWdodDogMXB4O1xyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgY2xvc2UtYnV0dG9uXHJcbi8vLy9cclxuXHJcbi8vLyBEZWZhdWx0IHBvc2l0aW9uIG9mIHRoZSBjbG9zZSBidXR0b24uIFRoZSBmaXJzdCB2YWx1ZSBzaG91bGQgYmUgYHJpZ2h0YCBvciBgbGVmdGAsIGFuZCB0aGUgc2Vjb25kIHZhbHVlIHNob3VsZCBiZSBgdG9wYCBvciBgYm90dG9tYC5cclxuLy8vIEB0eXBlIExpc3RcclxuJGNsb3NlYnV0dG9uLXBvc2l0aW9uOiByaWdodCB0b3AgIWRlZmF1bHQ7XHJcblxyXG4vLy8gUmlnaHQgKG9yIGxlZnQpIG9mZnNldChzKSBmb3IgYSBjbG9zZSBidXR0b24uXHJcbi8vLyBAdHlwZSBOdW1iZXJ8TWFwXHJcbiRjbG9zZWJ1dHRvbi1vZmZzZXQtaG9yaXpvbnRhbDogKFxyXG4gIHNtYWxsOiAwLjY2cmVtLFxyXG4gIG1lZGl1bTogMXJlbSxcclxuKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBUb3AgKG9yIGJvdHRvbSkgb2Zmc2V0KHMpIGZvciBhIGNsb3NlIGJ1dHRvbi5cclxuLy8vIEB0eXBlIE51bWJlcnxNYXBcclxuJGNsb3NlYnV0dG9uLW9mZnNldC12ZXJ0aWNhbDogKFxyXG4gIHNtYWxsOiAwLjMzZW0sXHJcbiAgbWVkaXVtOiAwLjVyZW0sXHJcbikgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBmb250IHNpemUocykgb2YgdGhlIGNsb3NlIGJ1dHRvbi5cclxuLy8vIEB0eXBlIE51bWJlcnxNYXBcclxuJGNsb3NlYnV0dG9uLXNpemU6IChcclxuICBzbWFsbDogMS41ZW0sXHJcbiAgbWVkaXVtOiAyZW0sXHJcbikgIWRlZmF1bHQ7XHJcblxyXG4vLy8gVGhlIGxpbmUtaGVpZ2h0IG9mIHRoZSBjbG9zZSBidXR0b24uIEl0IGFmZmVjdHMgdGhlIHNwYWNpbmcgb2YgdGhlIGVsZW1lbnQuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGNsb3NlYnV0dG9uLWxpbmVoZWlnaHQ6IDEgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBjb2xvciBvZiB0aGUgY2xvc2UgYnV0dG9uLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGNsb3NlYnV0dG9uLWNvbG9yOiAkZGFyay1ncmF5ICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgY29sb3Igb2YgdGhlIGNsb3NlIGJ1dHRvbiB3aGVuIGJlaW5nIGhvdmVyZWQgb24uXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kY2xvc2VidXR0b24tY29sb3ItaG92ZXI6ICRibGFjayAhZGVmYXVsdDtcclxuXHJcblxyXG4vLy8gR2V0IHRoZSBzaXplIGFuZCBwb3NpdGlvbiBmb3IgYSBjbG9zZSBidXR0b24uIElmIHRoZSBpbnB1dCB2YWx1ZSBpcyBhIG51bWJlciwgdGhlIG51bWJlciBpcyByZXR1cm5lZC4gSWYgdGhlIGlucHV0IHZhbHVlIGlzIGEgY29uZmlnIG1hcCBhbmQgdGhlIG1hcCBoYXMgdGhlIGtleSBgJHNpemVgLCB0aGUgdmFsdWUgaXMgcmV0dXJuZWQuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkdmFsdWUgLSBBIG51bWJlciBvciBtYXAgdGhhdCByZXByZXNlbnRzIHRoZSBzaXplIG9yIHBvc2l0aW9uIHZhbHVlKHMpIG9mIHRoZSBjbG9zZSBidXR0b24uXHJcbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIC0gVGhlIHNpemUgb2YgdGhlIGNsb3NlIGJ1dHRvbiB0byB1c2UuXHJcbi8vL1xyXG4vLy8gQHJldHVybiB7TnVtYmVyfSBUaGUgZ2l2ZW4gbnVtYmVyIG9yIHRoZSB2YWx1ZSBmb3VuZCBpbiB0aGUgbWFwLlxyXG5AZnVuY3Rpb24gLXpmLWdldC1zaXplLXZhbCgkdmFsdWUsICRzaXplKSB7XHJcbiAgLy8gQ2hlY2sgaWYgdGhlIHZhbHVlIGlzIGEgbnVtYmVyXHJcbiAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSAnbnVtYmVyJyB7XHJcbiAgICAvLyBJZiBpdCBpcywganVzdCByZXR1cm4gdGhlIG51bWJlclxyXG4gICAgQHJldHVybiAkdmFsdWU7XHJcbiAgfVxyXG5cclxuICAvLyBDaGVjayBpZiB0aGUgc2l6ZSBuYW1lIGV4aXN0cyBpbiB0aGUgdmFsdWUgbWFwXHJcbiAgQGVsc2UgaWYgbWFwLWhhcy1rZXkoJHZhbHVlLCAkc2l6ZSkge1xyXG4gICAgLy8gSWYgaXQgZG9lcywgcmV0dXJuIHRoZSB2YWx1ZVxyXG4gICAgQHJldHVybiBtYXAtZ2V0KCR2YWx1ZSwgJHNpemUpO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIFNldHMgdGhlIHNpemUgYW5kIHBvc2l0aW9uIG9mIGEgY2xvc2UgYnV0dG9uLlxyXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc2l6ZSBbbWVkaXVtXSAtIFRoZSBzaXplIHRvIHVzZS4gU2V0IHRvIGBzbWFsbGAgdG8gY3JlYXRlIGEgc21hbGwgY2xvc2UgYnV0dG9uLiBUaGUgJ21lZGl1bScgdmFsdWVzIGRlZmluZWQgaW4gYCRjbG9zZWJ1dHRvbi0qYCB2YXJpYWJsZXMgd2lsbCBiZSB1c2VkIGFzIHRoZSBkZWZhdWx0IHNpemUgYW5kIHBvc2l0aW9uIG9mIHRoZSBjbG9zZSBidXR0b24uXHJcbkBtaXhpbiBjbG9zZS1idXR0b24tc2l6ZSgkc2l6ZSkge1xyXG4gICR4OiBudGgoJGNsb3NlYnV0dG9uLXBvc2l0aW9uLCAxKTtcclxuICAkeTogbnRoKCRjbG9zZWJ1dHRvbi1wb3NpdGlvbiwgMik7XHJcblxyXG4gICN7JHh9OiAtemYtZ2V0LXNpemUtdmFsKCRjbG9zZWJ1dHRvbi1vZmZzZXQtaG9yaXpvbnRhbCwgJHNpemUpO1xyXG4gICN7JHl9OiAtemYtZ2V0LXNpemUtdmFsKCRjbG9zZWJ1dHRvbi1vZmZzZXQtdmVydGljYWwsICRzaXplKTtcclxuICBmb250LXNpemU6IC16Zi1nZXQtc2l6ZS12YWwoJGNsb3NlYnV0dG9uLXNpemUsICRzaXplKTtcclxuICBsaW5lLWhlaWdodDogLXpmLWdldC1zaXplLXZhbCgkY2xvc2VidXR0b24tbGluZWhlaWdodCwgJHNpemUpO1xyXG59XHJcblxyXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgY2xvc2UgYnV0dG9uLCB1c2luZyB0aGUgc3R5bGVzIGluIHRoZSBzZXR0aW5ncyB2YXJpYWJsZXMuXHJcbkBtaXhpbiBjbG9zZS1idXR0b24ge1xyXG4gICR4OiBudGgoJGNsb3NlYnV0dG9uLXBvc2l0aW9uLCAxKTtcclxuICAkeTogbnRoKCRjbG9zZWJ1dHRvbi1wb3NpdGlvbiwgMik7XHJcblxyXG4gIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgY29sb3I6ICRjbG9zZWJ1dHRvbi1jb2xvcjtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcblxyXG4gICY6aG92ZXIsXHJcbiAgJjpmb2N1cyB7XHJcbiAgICBjb2xvcjogJGNsb3NlYnV0dG9uLWNvbG9yLWhvdmVyO1xyXG4gIH1cclxufVxyXG5cclxuQG1peGluIGZvdW5kYXRpb24tY2xvc2UtYnV0dG9uIHtcclxuICAuY2xvc2UtYnV0dG9uIHtcclxuICAgIEBpbmNsdWRlIGNsb3NlLWJ1dHRvbjtcclxuXHJcbiAgICAmLnNtYWxsIHsgQGluY2x1ZGUgY2xvc2UtYnV0dG9uLXNpemUoc21hbGwpIH1cclxuICAgICYsICYubWVkaXVtIHsgQGluY2x1ZGUgY2xvc2UtYnV0dG9uLXNpemUobWVkaXVtKSB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBkcmlsbGRvd25cclxuLy8vL1xyXG5cclxuLy8vIFRyYW5zaXRpb24gcHJvcGVydHkgdG8gdXNlIGZvciBhbmltYXRpbmcgbWVudXMuXHJcbi8vLyBAdHlwZSBUcmFuc2l0aW9uXHJcbiRkcmlsbGRvd24tdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMTVzIGxpbmVhciAhZGVmYXVsdDtcclxuXHJcbi8vLyBBZGRzIGFycm93cyB0byBkcmlsbGRvd24gaXRlbXMgd2l0aCBzdWJtZW51cywgYXMgd2VsbCBhcyB0aGUgYmFjayBidXR0b24uXHJcbi8vLyBAdHlwZSBCb29sZWFuXHJcbiRkcmlsbGRvd24tYXJyb3dzOiB0cnVlICFkZWZhdWx0O1xyXG5cclxuLy8vIFNldHMgZHJpbGxkb3duIG1lbnUgaXRlbSBwYWRkaW5nLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRkcmlsbGRvd24tcGFkZGluZzogJGdsb2JhbC1tZW51LXBhZGRpbmcgIWRlZmF1bHQ7XHJcblxyXG4vLy8gU2V0cyBkcmlsbGRvd24gbWVudSBuZXN0ZWQgbWFyZ2luXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGRyaWxsZG93bi1uZXN0ZWQtbWFyZ2luOiAwICFkZWZhdWx0O1xyXG5cclxuLy8vIEJhY2tncm91bmQgY29sb3IgZm9yIGRyaWxsZG93biB0b3AgbGV2ZWwgaXRlbXMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kZHJpbGxkb3duLWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBTZXRzIGRyaWxsZG93biBtZW51IGl0ZW0gcGFkZGluZyBpbiB0aGUgc3VibWVudS5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kZHJpbGxkb3duLXN1Ym1lbnUtcGFkZGluZzogJGRyaWxsZG93bi1wYWRkaW5nICFkZWZhdWx0O1xyXG5cclxuLy8vIEJhY2tncm91bmQgY29sb3IgZm9yIGRyaWxsZG93biBzdWJtZW51cy5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRkcmlsbGRvd24tc3VibWVudS1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gU2V0cyBkcmlsbGRvd24gYXJyb3cgY29sb3IgaWYgYXJyb3cgaXMgdXNlZC5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRkcmlsbGRvd24tYXJyb3ctY29sb3I6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xyXG5cclxuLy8vIFNldHMgZHJpbGxkb3duIGFycm93IHNpemUgaWYgYXJyb3cgaXMgdXNlZC5cclxuLy8vIEB0eXBlIExlbmd0aFxyXG4kZHJpbGxkb3duLWFycm93LXNpemU6IDZweCAhZGVmYXVsdDtcclxuXHJcbkBtaXhpbiB6Zi1kcmlsbGRvd24tbGVmdC1yaWdodC1hcnJvd3Mge1xyXG4gIC5pcy1kcmlsbGRvd24tc3VibWVudS1wYXJlbnQgPiBhIHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICY6OmFmdGVyIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6IDUwJTtcclxuICAgICAgbWFyZ2luLXRvcDogLTEgKiAkZHJpbGxkb3duLWFycm93LXNpemU7XHJcbiAgICAgICN7JGdsb2JhbC1yaWdodH06IDFyZW07XHJcbiAgICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkZHJpbGxkb3duLWFycm93LXNpemUsICRkcmlsbGRvd24tYXJyb3ctY29sb3IsICRnbG9iYWwtcmlnaHQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi5hbGlnbi1sZWZ0IC5pcy1kcmlsbGRvd24tc3VibWVudS1wYXJlbnQgPiBhOjphZnRlciB7XHJcbiAgICBsZWZ0OiBhdXRvO1xyXG4gICAgcmlnaHQ6IDFyZW07XHJcbiAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJGRyb3Bkb3dubWVudS1hcnJvdy1zaXplLCAkZHJvcGRvd25tZW51LWFycm93LWNvbG9yLCByaWdodCk7XHJcbiAgfVxyXG5cclxuICAmLmFsaWduLXJpZ2h0IC5pcy1kcmlsbGRvd24tc3VibWVudS1wYXJlbnQgPiBhOjphZnRlciB7XHJcbiAgICByaWdodDogYXV0bztcclxuICAgIGxlZnQ6IDFyZW07XHJcbiAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJGRyb3Bkb3dubWVudS1hcnJvdy1zaXplLCAkZHJvcGRvd25tZW51LWFycm93LWNvbG9yLCBsZWZ0KTtcclxuICB9XHJcblxyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1kcmlsbGRvd24tbWVudSB7XHJcbiAgLy8gQXBwbGllZCB0byB0aGUgTWVudSBjb250YWluZXJcclxuICAuaXMtZHJpbGxkb3duIHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG4gICAgbGkge1xyXG4gICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIH1cclxuXHJcbiAgICAmLmFuaW1hdGUtaGVpZ2h0IHtcclxuICAgICAgdHJhbnNpdGlvbjogaGVpZ2h0IDAuNXM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBUaGUgdG9wIGxldmVsIDx1bD5cclxuICAuZHJpbGxkb3duIHtcclxuICAgIGEge1xyXG4gICAgICBwYWRkaW5nOiAkZHJpbGxkb3duLXBhZGRpbmc7XHJcbiAgICAgIGJhY2tncm91bmQ6ICRkcmlsbGRvd24tYmFja2dyb3VuZDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBBcHBsaWVkIHRvIHN1Ym1lbnUgPHVsPnNcclxuICAgIC5pcy1kcmlsbGRvd24tc3VibWVudSB7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgdG9wOiAwO1xyXG4gICAgICAjeyRnbG9iYWwtbGVmdH06IDEwMCU7XHJcbiAgICAgIHotaW5kZXg6IC0xO1xyXG5cclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIGJhY2tncm91bmQ6ICRkcmlsbGRvd24tc3VibWVudS1iYWNrZ3JvdW5kO1xyXG4gICAgICB0cmFuc2l0aW9uOiAkZHJpbGxkb3duLXRyYW5zaXRpb247XHJcblxyXG4gICAgICAmLmlzLWFjdGl2ZSB7XHJcbiAgICAgICAgei1pbmRleDogMTtcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoaWYoJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSBsdHIsIC0xMDAlLCAxMDAlKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYuaXMtY2xvc2luZyB7XHJcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGlmKCRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gbHRyLCAxMDAlLCAtMTAwJSkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBTdWJtZW51IGl0ZW0gcGFkZGluZ1xyXG4gICAgICBhIHtcclxuICAgICAgICBwYWRkaW5nOiAkZHJpbGxkb3duLXN1Ym1lbnUtcGFkZGluZztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5uZXN0ZWQuaXMtZHJpbGxkb3duLXN1Ym1lbnUge1xyXG4gICAgICBAaW5jbHVkZSBtZW51LW5lc3RlZCgkZHJpbGxkb3duLW5lc3RlZC1tYXJnaW4pO1xyXG4gICAgfVxyXG5cclxuICAgIC5kcmlsbGRvd24tc3VibWVudS1jb3Zlci1wcmV2aW91cyB7XHJcbiAgICAgIG1pbi1oZWlnaHQ6IDEwMCU7XHJcbiAgICB9XHJcblxyXG4gICAgQGlmICRkcmlsbGRvd24tYXJyb3dzIHtcclxuICAgICAgQGluY2x1ZGUgemYtZHJpbGxkb3duLWxlZnQtcmlnaHQtYXJyb3dzO1xyXG5cclxuICAgICAgLmpzLWRyaWxsZG93bi1iYWNrID4gYTo6YmVmb3JlIHtcclxuICAgICAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJGRyaWxsZG93bi1hcnJvdy1zaXplLCAkZHJpbGxkb3duLWFycm93LWNvbG9yLCAkZ2xvYmFsLWxlZnQpO1xyXG4gICAgICAgIGJvcmRlci0jeyRnbG9iYWwtbGVmdH0td2lkdGg6IDA7XHJcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06IDAuNzVyZW07IC8vIENyZWF0ZXMgc3BhY2UgYmV0d2VlbiB0aGUgYXJyb3cgYW5kIHRoZSB0ZXh0XHJcblxyXG4gICAgICAgIGJvcmRlci0jeyRnbG9iYWwtbGVmdH0td2lkdGg6IDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIGRyb3Bkb3duLW1lbnVcclxuLy8vL1xyXG5cclxuLy8vIEVuYWJsZXMgYXJyb3dzIGZvciBpdGVtcyB3aXRoIGRyb3Bkb3duIG1lbnVzLlxyXG4vLy8gQHR5cGUgQm9vbGVhblxyXG4kZHJvcGRvd25tZW51LWFycm93czogdHJ1ZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBTZXRzIGRyb3Bkb3duIG1lbnUgYXJyb3cgY29sb3IgaWYgYXJyb3cgaXMgdXNlZC5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRkcm9wZG93bm1lbnUtYXJyb3ctY29sb3I6ICRhbmNob3ItY29sb3IgIWRlZmF1bHQ7XHJcblxyXG4vLy8gU2V0cyBkcm9wZG93biBtZW51IGFycm93IHNpemUgaWYgYXJyb3cgaXMgdXNlZC5cclxuLy8vIEB0eXBlIExlbmd0aFxyXG4kZHJvcGRvd25tZW51LWFycm93LXNpemU6IDZweCAhZGVmYXVsdDtcclxuXHJcbi8vLyBTZXRzIGRyb3Bkb3duIG1lbnUgYXJyb3cgcGFkZGluZyBmb3IgYWxpZ25pbmcgdGhlIGFycm93IGNvcnJlY3RseS5cclxuLy8vIEB0eXBlIExlbmd0aFxyXG4kZHJvcGRvd25tZW51LWFycm93LXBhZGRpbmc6IDEuNXJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBNaW5pbXVtIHdpZHRoIG9mIGRyb3Bkb3duIHN1Yi1tZW51cy5cclxuLy8vIEB0eXBlIExlbmd0aFxyXG4kZHJvcGRvd25tZW51LW1pbi13aWR0aDogMjAwcHggIWRlZmF1bHQ7XHJcblxyXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgdG9wIGxldmVsIGl0ZW1zLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGRyb3Bkb3dubWVudS1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgZHJvcGRvd25zLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGRyb3Bkb3dubWVudS1zdWJtZW51LWJhY2tncm91bmQ6ICRkcm9wZG93bm1lbnUtYmFja2dyb3VuZCAhZGVmYXVsdDtcclxuXHJcbi8vLyBQYWRkaW5nIGZvciB0b3AgbGV2ZWwgaXRlbXMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGRyb3Bkb3dubWVudS1wYWRkaW5nOiAkZ2xvYmFsLW1lbnUtcGFkZGluZyAhZGVmYXVsdDtcclxuXHJcbi8vLyBTZXRzIGRyb3Bkb3duIG1lbnUgbmVzdGVkIG1hcmdpblxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRkcm9wZG93bm1lbnUtbmVzdGVkLW1hcmdpbjogMCAhZGVmYXVsdDtcclxuXHJcbi8vLyBQYWRkaW5nIGZvciBzdWItbWVudSBpdGVtcy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kZHJvcGRvd25tZW51LXN1Ym1lbnUtcGFkZGluZzogJGRyb3Bkb3dubWVudS1wYWRkaW5nICFkZWZhdWx0O1xyXG5cclxuLy8vIEJvcmRlciBmb3IgZHJvcGRvd24gc3ViLW1lbnVzLlxyXG4vLy8gQHR5cGUgTGlzdFxyXG4kZHJvcGRvd25tZW51LWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcclxuXHJcbi8vIEJvcmRlciB3aWR0aCBmb3IgZHJvcGRvd24gc3ViLW1lbnVzLlxyXG4vLyBVc2VkIHRvIGFkanVzdCB0b3AgbWFyZ2luIG9mIGEgc3ViLW1lbnUgaWYgYSBib3JkZXIgaXMgdXNlZC5cclxuLy8gQHR5cGUgTGVuZ3RoXHJcbiRkcm9wZG93bm1lbnUtYm9yZGVyLXdpZHRoOiBudGgoJGRyb3Bkb3dubWVudS1ib3JkZXIsIDEpO1xyXG5cclxuLy8vIFRleHQgY29sb3Igb2YgYW4gYWN0aXZlIGRyb3Bkb3duIG1lbnUgaXRlbS4gRXhwbGljaXQgb3ZlcnJpZGUgZm9yIG1lbnUgZGVmYXVsdHNcclxuLy8vIEB0eXBlIENvbG9yXHJcbiRkcm9wZG93bi1tZW51LWl0ZW0tY29sb3ItYWN0aXZlOiBnZXQtY29sb3IocHJpbWFyeSkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBhbiBhY3RpdmUgZHJvcGRvd24gbWVudSBpdGVtLiBFeHBsaWNpdCBvdmVycmlkZSBmb3IgbWVudSBkZWZhdWx0c1xyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGRyb3Bkb3duLW1lbnUtaXRlbS1iYWNrZ3JvdW5kLWFjdGl2ZTogdHJhbnNwYXJlbnQgIWRlZmF1bHQ7XHJcblxyXG5AbWl4aW4gemYtZHJvcGRvd24tbGVmdC1yaWdodC1hcnJvd3Mge1xyXG4gID4gYTo6YWZ0ZXIge1xyXG4gICAgI3skZ2xvYmFsLXJpZ2h0fTogMTRweDtcclxuICB9XHJcblxyXG4gICYub3BlbnMtbGVmdCA+IGE6OmFmdGVyIHtcclxuICAgIHJpZ2h0OiBhdXRvO1xyXG4gICAgbGVmdDogNXB4O1xyXG4gICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCRkcm9wZG93bm1lbnUtYXJyb3ctc2l6ZSwgJGRyb3Bkb3dubWVudS1hcnJvdy1jb2xvciwgbGVmdCk7XHJcbiAgfVxyXG5cclxuICAmLm9wZW5zLXJpZ2h0ID4gYTo6YWZ0ZXIge1xyXG4gICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCRkcm9wZG93bm1lbnUtYXJyb3ctc2l6ZSwgJGRyb3Bkb3dubWVudS1hcnJvdy1jb2xvciwgcmlnaHQpO1xyXG4gIH1cclxufVxyXG5cclxuQG1peGluIGRyb3Bkb3duLW1lbnUtZGlyZWN0aW9uKCRkaXI6IGhvcml6b250YWwpIHtcclxuICBAaWYgJGRpciA9PSBob3Jpem9udGFsIHtcclxuICAgID4gbGkub3BlbnMtbGVmdCB7XHJcbiAgICAgID4gLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xyXG4gICAgICAgIHRvcDogMTAwJTtcclxuICAgICAgICByaWdodDogMDtcclxuICAgICAgICBsZWZ0OiBhdXRvO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgPiBsaS5vcGVucy1yaWdodCB7XHJcbiAgICAgID4gLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xyXG4gICAgICAgIHRvcDogMTAwJTtcclxuICAgICAgICByaWdodDogYXV0bztcclxuICAgICAgICBsZWZ0OiAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQGlmICRkcm9wZG93bm1lbnUtYXJyb3dzIHtcclxuICAgICAgPiBsaS5pcy1kcm9wZG93bi1zdWJtZW51LXBhcmVudCA+IGEge1xyXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICBwYWRkaW5nLSN7JGdsb2JhbC1yaWdodH06ICRkcm9wZG93bm1lbnUtYXJyb3ctcGFkZGluZztcclxuICAgICAgfVxyXG5cclxuICAgICAgPiBsaS5pcy1kcm9wZG93bi1zdWJtZW51LXBhcmVudCA+IGE6OmFmdGVyIHtcclxuICAgICAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJGRyb3Bkb3dubWVudS1hcnJvdy1zaXplLCAkZHJvcGRvd25tZW51LWFycm93LWNvbG9yLCBkb3duKTtcclxuICAgICAgICAjeyRnbG9iYWwtcmlnaHR9OiA1cHg7XHJcbiAgICAgICAgI3skZ2xvYmFsLWxlZnR9OiBhdXRvO1xyXG4gICAgICAgIG1hcmdpbi10b3A6IC0xICogKCRkcm9wZG93bm1lbnUtYXJyb3ctc2l6ZSAvIDIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBlbHNlIGlmICRkaXIgPT0gdmVydGljYWwge1xyXG4gICAgPiBsaSB7XHJcbiAgICAgIC5pcy1kcm9wZG93bi1zdWJtZW51IHtcclxuICAgICAgICB0b3A6IDA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYub3BlbnMtbGVmdCB7XHJcbiAgICAgICAgPiAuaXMtZHJvcGRvd24tc3VibWVudSB7XHJcbiAgICAgICAgICByaWdodDogMTAwJTtcclxuICAgICAgICAgIGxlZnQ6IGF1dG87XHJcbiAgICAgICAgICB0b3A6IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmLm9wZW5zLXJpZ2h0IHtcclxuICAgICAgICA+IC5pcy1kcm9wZG93bi1zdWJtZW51IHtcclxuICAgICAgICAgIHJpZ2h0OiBhdXRvO1xyXG4gICAgICAgICAgbGVmdDogMTAwJTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIEBpZiAkZHJvcGRvd25tZW51LWFycm93cyB7XHJcbiAgICAgICAgQGluY2x1ZGUgemYtZHJvcGRvd24tbGVmdC1yaWdodC1hcnJvd3M7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgQGVsc2Uge1xyXG4gICAgQHdhcm4gJ1RoZSBkaXJlY3Rpb24gdXNlZCBmb3IgZHJvcGRvd24tbWVudS1kaXJlY3Rpb24oKSBtdXN0IGJlIGhvcml6b250YWwgb3IgdmVydGljYWwuJztcclxuICB9XHJcbn1cclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLWRyb3Bkb3duLW1lbnUge1xyXG4gIC5kcm9wZG93bi5tZW51IHtcclxuICAgIEBpbmNsdWRlIGRyb3Bkb3duLW1lbnUtZGlyZWN0aW9uKGhvcml6b250YWwpO1xyXG5cclxuICAgIGEge1xyXG4gICAgICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XHJcbiAgICAgIHBhZGRpbmc6ICRkcm9wZG93bm1lbnUtcGFkZGluZztcclxuICAgIH1cclxuXHJcbiAgICAvLyBBY3RpdmUgc3RhdGVcclxuICAgIC5pcy1hY3RpdmUgPiBhIHtcclxuICAgICAgYmFja2dyb3VuZDogJGRyb3Bkb3duLW1lbnUtaXRlbS1iYWNrZ3JvdW5kLWFjdGl2ZTtcclxuICAgICAgY29sb3I6ICRkcm9wZG93bi1tZW51LWl0ZW0tY29sb3ItYWN0aXZlO1xyXG4gICAgfVxyXG5cclxuICAgIC5uby1qcyAmIHVsIHtcclxuICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgIH1cclxuXHJcbiAgICAubmVzdGVkLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xyXG4gICAgICBAaW5jbHVkZSBtZW51LW5lc3RlZCgkZHJvcGRvd25tZW51LW5lc3RlZC1tYXJnaW4pO1xyXG4gICAgfVxyXG5cclxuICAgICYudmVydGljYWwge1xyXG4gICAgICBAaW5jbHVkZSBkcm9wZG93bi1tZW51LWRpcmVjdGlvbih2ZXJ0aWNhbCk7XHJcbiAgICB9XHJcblxyXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XHJcbiAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XHJcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xyXG4gICAgICAgICAgJi4jeyRzaXplfS1ob3Jpem9udGFsIHtcclxuICAgICAgICAgICAgQGluY2x1ZGUgZHJvcGRvd24tbWVudS1kaXJlY3Rpb24oaG9yaXpvbnRhbCk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgJi4jeyRzaXplfS12ZXJ0aWNhbCB7XHJcbiAgICAgICAgICAgIEBpbmNsdWRlIGRyb3Bkb3duLW1lbnUtZGlyZWN0aW9uKHZlcnRpY2FsKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmLmFsaWduLXJpZ2h0IHtcclxuICAgICAgLmlzLWRyb3Bkb3duLXN1Ym1lbnUuZmlyc3Qtc3ViIHtcclxuICAgICAgICB0b3A6IDEwMCU7XHJcbiAgICAgICAgcmlnaHQ6IDA7XHJcbiAgICAgICAgbGVmdDogYXV0bztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmlzLWRyb3Bkb3duLW1lbnUudmVydGljYWwge1xyXG4gICAgd2lkdGg6IDEwMHB4O1xyXG5cclxuICAgICYuYWxpZ24tcmlnaHQge1xyXG4gICAgICBmbG9hdDogcmlnaHQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuaXMtZHJvcGRvd24tc3VibWVudS1wYXJlbnQge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG5cclxuICAgIGE6OmFmdGVyIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6IDUwJTtcclxuICAgICAgI3skZ2xvYmFsLXJpZ2h0fTogNXB4O1xyXG4gICAgICAjeyRnbG9iYWwtbGVmdH06IGF1dG87XHJcbiAgICAgIG1hcmdpbi10b3A6IC0xICogJGRyb3Bkb3dubWVudS1hcnJvdy1zaXplO1xyXG4gICAgfVxyXG5cclxuICAgICYub3BlbnMtaW5uZXIgPiAuaXMtZHJvcGRvd24tc3VibWVudSB7XHJcblxyXG4gICAgICB0b3A6IDEwMCU7XHJcbiAgICAgIEBpZiAkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09ICdydGwnIHtcclxuICAgICAgICByaWdodDogYXV0bztcclxuICAgICAgfVxyXG4gICAgICBAZWxzZSB7XHJcbiAgICAgICAgbGVmdDogYXV0bztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICYub3BlbnMtbGVmdCA+IC5pcy1kcm9wZG93bi1zdWJtZW51IHtcclxuICAgICAgcmlnaHQ6IDEwMCU7XHJcbiAgICAgIGxlZnQ6IGF1dG87XHJcbiAgICB9XHJcblxyXG4gICAgJi5vcGVucy1yaWdodCA+IC5pcy1kcm9wZG93bi1zdWJtZW51IHtcclxuICAgICAgcmlnaHQ6IGF1dG87XHJcbiAgICAgIGxlZnQ6IDEwMCU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuaXMtZHJvcGRvd24tc3VibWVudSB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDA7XHJcbiAgICAjeyRnbG9iYWwtbGVmdH06IDEwMCU7XHJcbiAgICB6LWluZGV4OiAxO1xyXG5cclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICBtaW4td2lkdGg6ICRkcm9wZG93bm1lbnUtbWluLXdpZHRoO1xyXG5cclxuICAgIGJvcmRlcjogJGRyb3Bkb3dubWVudS1ib3JkZXI7XHJcbiAgICBiYWNrZ3JvdW5kOiAkZHJvcGRvd25tZW51LXN1Ym1lbnUtYmFja2dyb3VuZDtcclxuXHJcbiAgICAuZHJvcGRvd24gJiBhIHtcclxuICAgICAgcGFkZGluZzogJGRyb3Bkb3dubWVudS1zdWJtZW51LXBhZGRpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgLmlzLWRyb3Bkb3duLXN1Ym1lbnUtcGFyZW50IHtcclxuICAgICAgQGlmICRkcm9wZG93bm1lbnUtYXJyb3dzIHtcclxuICAgICAgICBAaW5jbHVkZSB6Zi1kcm9wZG93bi1sZWZ0LXJpZ2h0LWFycm93cztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBpZiAodHlwZS1vZigkZHJvcGRvd25tZW51LWJvcmRlci13aWR0aCkgPT0gJ251bWJlcicpIHtcclxuICAgICAgLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xyXG4gICAgICAgIG1hcmdpbi10b3A6ICgtJGRyb3Bkb3dubWVudS1ib3JkZXItd2lkdGgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgPiBsaSB7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFtUT0RPXSBDdXQgYmFjayBzcGVjaWZpY2l0eVxyXG4gICAgLy8mOm5vdCguanMtZHJvcGRvd24tbm9ob3ZlcikgPiAuaXMtZHJvcGRvd24tc3VibWVudS1wYXJlbnQ6aG92ZXIgPiAmLCAvLyB3aHkgaXMgdGhpcyBsaW5lIG5lZWRlZD8gT3BlbmluZyBpcyBoYW5kbGVkIGJ5IEpTIGFuZCB0aGlzIGNhdXNlcyBzb21lIHVnbHkgZmxpY2tlcmluZyB3aGVuIHRoZSBzdWIgaXMgcmUtcG9zaXRpb25lZCBhdXRvbWF0aWNhbGx5Li4uXHJcbiAgICAmLmpzLWRyb3Bkb3duLWFjdGl2ZSB7XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBkcm9wZG93blxyXG4vLy8vXHJcblxyXG4vLy8gUGFkZGluZyBmb3IgZHJvcGRvd24gcGFuZXMuXHJcbi8vLyBAdHlwZSBMaXN0XHJcbiRkcm9wZG93bi1wYWRkaW5nOiAxcmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIEJhY2tncm91bmQgZm9yIGRyb3Bkb3duIHBhbmVzLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGRyb3Bkb3duLWJhY2tncm91bmQ6ICRib2R5LWJhY2tncm91bmQgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQm9yZGVyIGZvciBkcm9wZG93biBwYW5lcy5cclxuLy8vIEB0eXBlIExpc3RcclxuJGRyb3Bkb3duLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcclxuXHJcbi8vLyBGb250IHNpemUgZm9yIGRyb3Bkb3duIHBhbmVzLlxyXG4vLy8gQHR5cGUgTGlzdFxyXG4kZHJvcGRvd24tZm9udC1zaXplOiAxcmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIFdpZHRoIGZvciBkcm9wZG93biBwYW5lcy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kZHJvcGRvd24td2lkdGg6IDMwMHB4ICFkZWZhdWx0O1xyXG5cclxuLy8vIEJvcmRlciByYWRpdXMgZHJvcGRvd24gcGFuZXMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGRyb3Bkb3duLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XHJcblxyXG4vLy8gU2l6ZXMgZm9yIGRyb3Bkb3duIHBhbmVzLiBFYWNoIHNpemUgaXMgYSBDU1MgY2xhc3MgeW91IGNhbiBhcHBseS5cclxuLy8vIEB0eXBlIE1hcFxyXG4kZHJvcGRvd24tc2l6ZXM6IChcclxuICB0aW55OiAxMDBweCxcclxuICBzbWFsbDogMjAwcHgsXHJcbiAgbGFyZ2U6IDQwMHB4LFxyXG4pICFkZWZhdWx0O1xyXG5cclxuLy8vIEFwcGxpZXMgc3R5bGVzIGZvciBhIGJhc2ljIGRyb3Bkb3duLlxyXG5AbWl4aW4gZHJvcGRvd24tY29udGFpbmVyIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgei1pbmRleDogMTA7XHJcblxyXG4gIHdpZHRoOiAkZHJvcGRvd24td2lkdGg7XHJcbiAgcGFkZGluZzogJGRyb3Bkb3duLXBhZGRpbmc7XHJcblxyXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcclxuICBkaXNwbGF5OiBub25lO1xyXG4gIGJvcmRlcjogJGRyb3Bkb3duLWJvcmRlcjtcclxuICBib3JkZXItcmFkaXVzOiAkZHJvcGRvd24tcmFkaXVzO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICRkcm9wZG93bi1iYWNrZ3JvdW5kO1xyXG5cclxuICBmb250LXNpemU6ICRkcm9wZG93bi1mb250LXNpemU7XHJcblxyXG5cclxuICAvLyBBbGxvdyBhbiBpbnRlcm1pdHRlbnQgc3RhdGUgdG8gZG8gcG9zaXRpb25pbmcgYmVmb3JlIG1ha2luZyB2aXNpYmxlLlxyXG4gICYuaXMtb3BlbmluZyB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICB9XHJcblxyXG4gICYuaXMtb3BlbiB7XHJcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1kcm9wZG93biB7XHJcbiAgLmRyb3Bkb3duLXBhbmUge1xyXG4gICAgQGluY2x1ZGUgZHJvcGRvd24tY29udGFpbmVyO1xyXG4gIH1cclxuXHJcbiAgQGVhY2ggJG5hbWUsICRzaXplIGluICRkcm9wZG93bi1zaXplcyB7XHJcbiAgICAuZHJvcGRvd24tcGFuZS4jeyRuYW1lfSB7XHJcbiAgICAgIHdpZHRoOiAkc2l6ZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIEZsZXhib3ggVXRpbGl0aWVzXHJcbi8vLy9cclxuLy9cclxuLy8vIERlZmF1bHQgdmFsdWUgZm9yIHRoZSBjb3VudCBvZiBzb3VyY2Ugb3JkZXJpbmdgXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGZsZXgtc291cmNlLW9yZGVyaW5nLWNvdW50OiA2ICFkZWZhdWx0O1xyXG5cclxuLy8vIFF1aWNrbHkgZGlzYWJsZS9lbmFibGUgUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgVmFuaWxsYSBGbGV4IEhlbHBlcnMuXHJcbi8vLyBAdHlwZSBCb29sZWFuXHJcbiRmbGV4Ym94LXJlc3BvbnNpdmUtYnJlYWtwb2ludHM6IHRydWUgIWRlZmF1bHQ7XHJcblxyXG5AbWl4aW4gZmxleC1oZWxwZXJzIHtcclxuICAuZmxleC1jb250YWluZXIge1xyXG4gICAgQGluY2x1ZGUgZmxleDtcclxuICB9XHJcblxyXG4gIC5mbGV4LWNoaWxkLWF1dG8ge1xyXG4gICAgZmxleDogMSAxIGF1dG87XHJcbiAgfVxyXG5cclxuICAuZmxleC1jaGlsZC1ncm93IHtcclxuICAgIGZsZXg6IDEgMCBhdXRvO1xyXG4gIH1cclxuXHJcbiAgLmZsZXgtY2hpbGQtc2hyaW5rIHtcclxuICAgIGZsZXg6IDAgMSBhdXRvO1xyXG4gIH1cclxuXHJcbiAgQGVhY2ggJGRpciwgJHByb3AgaW4gJC16Zi1mbGV4LWRpcmVjdGlvbiB7XHJcbiAgICAuZmxleC1kaXItI3skZGlyfSB7XHJcbiAgICAgIEBpbmNsdWRlIGZsZXgtZGlyZWN0aW9uKCRwcm9wKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpZiAoJGZsZXhib3gtcmVzcG9uc2l2ZS1icmVha3BvaW50cykge1xyXG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcclxuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xyXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XHJcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcclxuICAgICAgICAgIC4jeyRzaXplfS1mbGV4LWNvbnRhaW5lciB7XHJcbiAgICAgICAgICAgIEBpbmNsdWRlIGZsZXg7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLiN7JHNpemV9LWZsZXgtY2hpbGQtYXV0byB7XHJcbiAgICAgICAgICAgIGZsZXg6IDEgMSBhdXRvO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC4jeyRzaXplfS1mbGV4LWNoaWxkLWdyb3cge1xyXG4gICAgICAgICAgICBmbGV4OiAxIDAgYXV0bztcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAuI3skc2l6ZX0tZmxleC1jaGlsZC1zaHJpbmsge1xyXG4gICAgICAgICAgICBmbGV4OiAwIDEgYXV0bztcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBAZWFjaCAkZGlyLCAkcHJvcCBpbiAkLXpmLWZsZXgtZGlyZWN0aW9uIHtcclxuICAgICAgICAgICAgLiN7JHNpemV9LWZsZXgtZGlyLSN7JGRpcn0ge1xyXG4gICAgICAgICAgICAgIEBpbmNsdWRlIGZsZXgtZGlyZWN0aW9uKCRwcm9wKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuQG1peGluIGZvdW5kYXRpb24tZmxleC1jbGFzc2VzIHtcclxuICAvLyBIb3Jpem9udGFsIGFsaWdubWVudCB1c2luZyBqdXN0aWZ5LWNvbnRlbnRcclxuICBAZWFjaCAkaGRpciwgJHByb3AgaW4gbWFwLXJlbW92ZSgkLXpmLWZsZXgtanVzdGlmeSwgJ2xlZnQnKSB7XHJcbiAgICAuYWxpZ24tI3skaGRpcn0ge1xyXG4gICAgICBAaW5jbHVkZSBmbGV4LWFsaWduKCR4OiAkaGRpcik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIC8vIEhvcml6b250YWwgYWxpZ25tZW50IFNwZWNpZmljYWxseSBmb3IgVmVydGljYWwgTWVudVxyXG4gIEBlYWNoICRoZGlyLCAkcHJvcCBpbiBtYXAtcmVtb3ZlKCQtemYtZmxleC1qdXN0aWZ5LCAnbGVmdCcsICdqdXN0aWZ5JywgJ3NwYWNlZCcpIHtcclxuICAgIC5hbGlnbi0jeyRoZGlyfSB7XHJcbiAgICAgICYudmVydGljYWwubWVudSA+IGxpID4gYSB7IFxyXG4gICAgICAgIEBpbmNsdWRlIGZsZXgtYWxpZ24oJHg6ICRoZGlyKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gVmVydGljYWwgYWxpZ25tZW50IHVzaW5nIGFsaWduLWl0ZW1zIGFuZCBhbGlnbi1zZWxmXHJcbiAgQGVhY2ggJHZkaXIsICRwcm9wIGluICQtemYtZmxleC1hbGlnbiB7XHJcbiAgICAuYWxpZ24tI3skdmRpcn0ge1xyXG4gICAgICBAaW5jbHVkZSBmbGV4LWFsaWduKCR5OiAkdmRpcik7XHJcbiAgICB9XHJcblxyXG4gICAgLmFsaWduLXNlbGYtI3skdmRpcn0ge1xyXG4gICAgICBAaW5jbHVkZSBmbGV4LWFsaWduLXNlbGYoJHk6ICR2ZGlyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIENlbnRyYWwgYWxpZ25tZW50IG9mIGNvbnRlbnRcclxuICAuYWxpZ24tY2VudGVyLW1pZGRsZSB7XHJcbiAgICBAaW5jbHVkZSBmbGV4LWFsaWduKCR4OiBjZW50ZXIsICR5OiBtaWRkbGUpO1xyXG4gICAgYWxpZ24tY29udGVudDogY2VudGVyO1xyXG4gIH1cclxuXHJcbiAgLy8gU291cmNlIG9yZGVyaW5nXHJcbiAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCB7XHJcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRmbGV4LXNvdXJjZS1vcmRlcmluZy1jb3VudCB7XHJcbiAgICAgIC4jeyQtemYtc2l6ZX0tb3JkZXItI3skaX0ge1xyXG4gICAgICAgIEBpbmNsdWRlIGZsZXgtb3JkZXIoJGkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBWYW5pbGxhIEZsZXhib3ggSGVscGVyc1xyXG4gIEBpbmNsdWRlIGZsZXgtaGVscGVycztcclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgcmVzcG9uc2l2ZS1lbWJlZFxyXG4vLy8vXHJcblxyXG4vLy8gTWFyZ2luIGJlbG93IGEgcmVzcG9uc2l2ZSBlbWJlZCBjb250YWluZXIuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHJlc3BvbnNpdmUtZW1iZWQtbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMTYpICFkZWZhdWx0O1xyXG5cclxuLy8vIEFzcGVjdCByYXRpb3MgdXNlZCB0byBkZXRlcm1pbmUgcGFkZGluZy1ib3R0b20gb2YgcmVzcG9uc2l2ZSBlbWJlZCBjb250YWluZXJzLlxyXG4vLy8gQHR5cGUgTWFwXHJcbiRyZXNwb25zaXZlLWVtYmVkLXJhdGlvczogKFxyXG4gIGRlZmF1bHQ6IDQgYnkgMyxcclxuICB3aWRlc2NyZWVuOiAxNiBieSA5LFxyXG4pICFkZWZhdWx0O1xyXG5cclxuLy8gV0FSTklORzogV2lsbCBiZSByZW1vdmVkIGluIHZlcnNpb24gNi40XHJcbiRyZXNwb25zaXZlLWVtYmVkLXJhdGlvOiBkZWZhdWx0O1xyXG5cclxuLy8vIENyZWF0ZXMgYSByZXNwb25zaXZlIGVtYmVkIGNvbnRhaW5lci5cclxuLy8vIEBwYXJhbSB7U3RyaW5nfExpc3R9ICRyYXRpbyBbZGVmYXVsdF0gLSBSYXRpbyBvZiB0aGUgY29udGFpbmVyLiBDYW4gYmUgYSBrZXkgZnJvbSB0aGUgYCRyZXNwb25zaXZlLWVtYmVkLXJhdGlvc2AgbWFwIG9yIGEgbGlzdCBmb3JtYXR0ZWQgYXMgYHggYnkgeWAuXHJcbkBtaXhpbiByZXNwb25zaXZlLWVtYmVkKCRyYXRpbzogZGVmYXVsdCkge1xyXG4gIEBpZiB0eXBlLW9mKCRyYXRpbykgPT0gJ3N0cmluZycge1xyXG4gICAgJHJhdGlvOiBtYXAtZ2V0KCRyZXNwb25zaXZlLWVtYmVkLXJhdGlvcywgJHJhdGlvKTtcclxuICB9XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGhlaWdodDogMDtcclxuICBtYXJnaW4tYm90dG9tOiAkcmVzcG9uc2l2ZS1lbWJlZC1tYXJnaW4tYm90dG9tO1xyXG4gIHBhZGRpbmctYm90dG9tOiByYXRpby10by1wZXJjZW50YWdlKCRyYXRpbyk7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuXHJcbiAgaWZyYW1lLFxyXG4gIG9iamVjdCxcclxuICBlbWJlZCxcclxuICB2aWRlbyB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDA7XHJcbiAgICAjeyRnbG9iYWwtbGVmdH06IDA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICB9XHJcbn1cclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLXJlc3BvbnNpdmUtZW1iZWQge1xyXG4gIC5yZXNwb25zaXZlLWVtYmVkLFxyXG4gIC5mbGV4LXZpZGVvIHtcclxuICAgIEBpbmNsdWRlIHJlc3BvbnNpdmUtZW1iZWQoJHJhdGlvOiBkZWZhdWx0KTtcclxuXHJcbiAgICAkcmF0aW9zOiBtYXAtcmVtb3ZlKCRyZXNwb25zaXZlLWVtYmVkLXJhdGlvcyxkZWZhdWx0KTtcclxuXHJcbiAgICBAZWFjaCAkbmFtZSwgJHJhdGlvIGluICRyYXRpb3Mge1xyXG4gICAgICAmLiN7JG5hbWV9IHtcclxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogcmF0aW8tdG8tcGVyY2VudGFnZSgkcmF0aW8pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1mbGV4LXZpZGVvIHtcclxuICBAd2FybiAnVGhpcyBtaXhpbiBpcyBiZWluZyByZXBsYWNlZCBieSBmb3VuZGF0aW9uLXJlc3BvbnNpdmUtZW1iZWQoKS4gZm91bmRhdGlvbi1mbGV4LXZpZGVvKCkgd2lsbCBiZSByZW1vdmVkIGluIEZvdW5kYXRpb24gNi40Lic7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1yZXNwb25zaXZlLWVtYmVkO1xyXG59XHJcblxyXG5AbWl4aW4gZmxleC12aWRlbygkcmF0aW86ICRyZXNwb25zaXZlLWVtYmVkLXJhdGlvKSB7XHJcbiAgQHdhcm4gJ1RoaXMgbWl4aW4gaXMgYmVpbmcgcmVwbGFjZWQgYnkgcmVzcG9uc2l2ZS1lbWJlZCgpLiBmbGV4LXZpZGVvKCkgd2lsbCBiZSByZW1vdmVkIGluIEZvdW5kYXRpb24gNi40Lic7XHJcbiAgQGluY2x1ZGUgcmVzcG9uc2l2ZS1lbWJlZCgkcmF0aW8pO1xyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBsYWJlbFxyXG4vLy8vXHJcblxyXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIGZvciBsYWJlbHMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kbGFiZWwtYmFja2dyb3VuZDogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCB0ZXh0IGNvbG9yIGZvciBsYWJlbHMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kbGFiZWwtY29sb3I6ICR3aGl0ZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBBbHRlcm5hdGUgdGV4dCBjb2xvciBmb3IgbGFiZWxzLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGxhYmVsLWNvbG9yLWFsdDogJGJsYWNrICFkZWZhdWx0O1xyXG5cclxuLy8vIENvbG9yaW5nIGNsYXNzZXMuIEEgbWFwIG9mIGNsYXNzZXMgdG8gb3V0cHV0IGluIHlvdXIgQ1NTLCBsaWtlIGAuc2Vjb25kYXJ5YCwgYC5zdWNjZXNzYCwgYW5kIHNvIG9uLlxyXG4vLy8gQHR5cGUgTWFwXHJcbiRsYWJlbC1wYWxldHRlOiAkZm91bmRhdGlvbi1wYWxldHRlICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgZm9udCBzaXplIGZvciBsYWJlbHMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGxhYmVsLWZvbnQtc2l6ZTogMC44cmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgcGFkZGluZyBpbnNpZGUgbGFiZWxzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRsYWJlbC1wYWRkaW5nOiAwLjMzMzMzcmVtIDAuNXJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IHJhZGl1cyBvZiBsYWJlbHMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGxhYmVsLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XHJcblxyXG4vLy8gR2VuZXJhdGVzIGJhc2Ugc3R5bGVzIGZvciBhIGxhYmVsLlxyXG5AbWl4aW4gbGFiZWwge1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICBwYWRkaW5nOiAkbGFiZWwtcGFkZGluZztcclxuXHJcbiAgYm9yZGVyLXJhZGl1czogJGxhYmVsLXJhZGl1cztcclxuXHJcbiAgZm9udC1zaXplOiAkbGFiZWwtZm9udC1zaXplO1xyXG4gIGxpbmUtaGVpZ2h0OiAxO1xyXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgY3Vyc29yOiBkZWZhdWx0O1xyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1sYWJlbCB7XHJcbiAgLmxhYmVsIHtcclxuICAgIEBpbmNsdWRlIGxhYmVsO1xyXG5cclxuICAgIGJhY2tncm91bmQ6ICRsYWJlbC1iYWNrZ3JvdW5kO1xyXG4gICAgY29sb3I6ICRsYWJlbC1jb2xvcjtcclxuXHJcbiAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRsYWJlbC1wYWxldHRlIHtcclxuICAgICAgJi4jeyRuYW1lfSB7XHJcbiAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yO1xyXG4gICAgICAgIGNvbG9yOiBjb2xvci1waWNrLWNvbnRyYXN0KCRjb2xvciwgKCRsYWJlbC1jb2xvciwgJGxhYmVsLWNvbG9yLWFsdCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBtZWRpYS1vYmplY3RcclxuLy8vL1xyXG5cclxuLy8vIEJvdHRvbSBtYXJnaW4gb2YgYSBtZWRpYSBvYmplY3QuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJG1lZGlhb2JqZWN0LW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luICFkZWZhdWx0O1xyXG5cclxuLy8vIExlZnQgYW5kIHJpZ2h0IHBhZGRpbmcgb24gc2VjdGlvbnMgd2l0aGluIGEgbWVkaWEgb2JqZWN0LlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRtZWRpYW9iamVjdC1zZWN0aW9uLXBhZGRpbmc6ICRnbG9iYWwtcGFkZGluZyAhZGVmYXVsdDtcclxuXHJcbi8vLyBXaWR0aCBvZiBpbWFnZXMgd2l0aGluIGEgbWVkaWEgb2JqZWN0LCB3aGVuIHRoZSBvYmplY3QgaXMgc3RhY2tlZCB2ZXJ0aWNhbGx5LiBTZXQgdG8gJ2F1dG8nIHRvIHVzZSB0aGUgaW1hZ2UncyBuYXR1cmFsIHdpZHRoLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRtZWRpYW9iamVjdC1pbWFnZS13aWR0aC1zdGFja2VkOiAxMDAlICFkZWZhdWx0O1xyXG5cclxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIG1lZGlhIG9iamVjdCBjb250YWluZXIuXHJcbkBtaXhpbiBtZWRpYS1vYmplY3QtY29udGFpbmVyIHtcclxuICBkaXNwbGF5OiBpZigkZ2xvYmFsLWZsZXhib3gsIGZsZXgsIGJsb2NrKTtcclxuICBtYXJnaW4tYm90dG9tOiAkbWVkaWFvYmplY3QtbWFyZ2luLWJvdHRvbTtcclxuXHJcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBBZGRzIHN0eWxlcyBmb3Igc2VjdGlvbnMgd2l0aGluIGEgbWVkaWEgb2JqZWN0LlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRwYWRkaW5nIFskbWVkaWFvYmplY3Qtc2VjdGlvbi1wYWRkaW5nXSAtIFBhZGRpbmcgYmV0d2VlbiBzZWN0aW9ucy5cclxuQG1peGluIG1lZGlhLW9iamVjdC1zZWN0aW9uKCRwYWRkaW5nOiAkbWVkaWFvYmplY3Qtc2VjdGlvbi1wYWRkaW5nKSB7XHJcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICBmbGV4OiAwIDEgYXV0bztcclxuICB9XHJcbiAgQGVsc2Uge1xyXG4gICAgZGlzcGxheTogdGFibGUtY2VsbDtcclxuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XHJcbiAgfVxyXG5cclxuICAmOmZpcnN0LWNoaWxkIHtcclxuICAgIHBhZGRpbmctI3skZ2xvYmFsLXJpZ2h0fTogJHBhZGRpbmc7XHJcbiAgfVxyXG5cclxuICAmOmxhc3QtY2hpbGQ6bm90KDpudGgtY2hpbGQoMikpIHtcclxuICAgIHBhZGRpbmctI3skZ2xvYmFsLWxlZnR9OiAkcGFkZGluZztcclxuICB9XHJcblxyXG4gID4gOmxhc3QtY2hpbGQge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMDtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBBZGRzIHN0eWxlcyB0byBzdGFjayBzZWN0aW9ucyBvZiBhIG1lZGlhIG9iamVjdC4gQXBwbHkgdGhpcyB0byB0aGUgc2VjdGlvbiBlbGVtZW50cywgbm90IHRoZSBjb250YWluZXIuXHJcbkBtaXhpbiBtZWRpYS1vYmplY3Qtc3RhY2sge1xyXG4gIHBhZGRpbmc6IDA7XHJcbiAgcGFkZGluZy1ib3R0b206ICRtZWRpYW9iamVjdC1zZWN0aW9uLXBhZGRpbmc7XHJcblxyXG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xyXG4gICAgZmxleC1iYXNpczogMTAwJTtcclxuICAgIG1heC13aWR0aDogMTAwJTtcclxuICB9XHJcbiAgQGVsc2Uge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgfVxyXG5cclxuICBpbWcge1xyXG4gICAgd2lkdGg6ICRtZWRpYW9iamVjdC1pbWFnZS13aWR0aC1zdGFja2VkO1xyXG4gIH1cclxufVxyXG5cclxuQG1peGluIGZvdW5kYXRpb24tbWVkaWEtb2JqZWN0IHtcclxuICAubWVkaWEtb2JqZWN0IHtcclxuICAgIEBpbmNsdWRlIG1lZGlhLW9iamVjdC1jb250YWluZXI7XHJcblxyXG4gICAgaW1nIHtcclxuICAgICAgbWF4LXdpZHRoOiBub25lO1xyXG4gICAgfVxyXG5cclxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xyXG4gICAgICAmLnN0YWNrLWZvci0jeyQtemYtemVyby1icmVha3BvaW50fSB7XHJcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkLXpmLXplcm8tYnJlYWtwb2ludCBvbmx5KSB7XHJcbiAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJi5zdGFjay1mb3ItI3skLXpmLXplcm8tYnJlYWtwb2ludH0gLm1lZGlhLW9iamVjdC1zZWN0aW9uIHtcclxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkLXpmLXplcm8tYnJlYWtwb2ludCBvbmx5KSB7XHJcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEtb2JqZWN0LXN0YWNrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAubWVkaWEtb2JqZWN0LXNlY3Rpb24ge1xyXG4gICAgQGluY2x1ZGUgbWVkaWEtb2JqZWN0LXNlY3Rpb247XHJcblxyXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICAgICYubWFpbi1zZWN0aW9uIHtcclxuICAgICAgICBmbGV4OiAxIDEgMHB4OyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIHplcm8tdW5pdFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBAZWxzZSB7XHJcbiAgICAgICYubWlkZGxlIHtcclxuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLmJvdHRvbSB7XHJcbiAgICAgICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgbWVudVxyXG4vLy8vXHJcblxyXG4vLy8gTWFyZ2luIG9mIGEgbWVudS5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kbWVudS1tYXJnaW46IDAgIWRlZmF1bHQ7XHJcblxyXG4vLy8gTGVmdC1oYW5kIG1hcmdpbiBvZiBhIG5lc3RlZCBtZW51LlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRtZW51LW5lc3RlZC1tYXJnaW46ICRnbG9iYWwtbWVudS1uZXN0ZWQtbWFyZ2luICFkZWZhdWx0O1xyXG5cclxuLy8vIFBhZGRpbmcgZm9yIGl0ZW1zIGluIGEgcGlsbCBtZW51LlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRtZW51LWl0ZW1zLXBhZGRpbmc6ICRnbG9iYWwtbWVudS1wYWRkaW5nICFkZWZhdWx0O1xyXG5cclxuLy8vIG1hcmdpbiBmb3IgaXRlbXMgaW4gYSBzaW1wbGUgbWVudS5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kbWVudS1zaW1wbGUtbWFyZ2luOiAxcmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIFRleHQgY29sb3Igb2YgYW4gYWN0aXZlIG1lbnUgaXRlbS5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRtZW51LWl0ZW0tY29sb3ItYWN0aXZlOiAkd2hpdGUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBhbiBhY3RpdmUgbWVudSBpdGVtLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJG1lbnUtaXRlbS1iYWNrZ3JvdW5kLWFjdGl2ZTogZ2V0LWNvbG9yKHByaW1hcnkpICFkZWZhdWx0O1xyXG5cclxuLy8vIFNwYWNpbmcgYmV0d2VlbiBhbiBpY29uIGFuZCB0ZXh0IGluIGEgbWVudSBpdGVtLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRtZW51LWljb24tc3BhY2luZzogMC4yNXJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciBhbiBob3ZlcmVkIG1lbnUgaXRlbS5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRtZW51LWl0ZW0tYmFja2dyb3VuZC1ob3ZlcjogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQmFja3dhcmQgY29tcGF0aWJpbGl0eSBmb3IgbWVudSBzdGF0ZS4gSWYgdHJ1ZSwgdGhpcyBkdXBsaWNhdGUgYGFjdGl2ZWAgd2l0aCBgaXMtYWN0aXZlYC4gXHJcbi8vLyBCdXQgcGxlYXNlIG5vdGUgdGhhdCBgYWN0aXZlYCB3aWxsIGJlIHJlbW92ZWQgaW4gdXBjb21pbmcgdmVyc2lvbnMuXHJcbi8vLyBAdHlwZSBCb29sZWFuXHJcbiRtZW51LXN0YXRlLWJhY2stY29tcGF0OiB0cnVlICFkZWZhdWx0O1xyXG5cclxuLy8vIEJhY2t3YXJkIGNvbXBhdGliaWxpdHkgZm9yIG1lbnUgY2VudGVyZWQuIElmIHRydWUsIHRoaXMgZHVwbGljYXRlIGAubWVudS1jZW50ZXJlZCA+IC5tZW51YCB3aXRoIGAubWVudS5hbGlnbi1jZW50ZXJgLiBcclxuLy8vIEJ1dCBwbGVhc2Ugbm90ZSB0aGF0IGBtZW51LWNlbnRlcmVkYCB3aWxsIGJlIHJlbW92ZWQgaW4gdXBjb21pbmcgdmVyc2lvbnMuXHJcbi8vLyBAdHlwZSBCb29sZWFuXHJcbiRtZW51LWNlbnRlcmVkLWJhY2stY29tcGF0OiB0cnVlICFkZWZhdWx0O1xyXG5cclxuLy8vIEJhY2t3YXJkIGNvbXBhdGliaWxpdHkgZm9yIHVzaW5nIGBpY29uLSpgIGNsYXNzZXMgd2l0aG91dCBgLmljb25zYCBjbGFzc2VzXHJcbi8vLyBCdXQgcGxlYXNlIG5vdGUgdGhhdCB0aGlzIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2lsbCBiZSByZW1vdmVkIGluIHVwY29taW5nIHZlcnNpb25zLlxyXG4vLy8gQHR5cGUgQm9vbGVhblxyXG4kbWVudS1pY29ucy1iYWNrLWNvbXBhdDogdHJ1ZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBDcmVhdGVzIHRoZSBiYXNlIHN0eWxlcyBmb3IgYSBNZW51LlxyXG5AbWl4aW4gbWVudS1iYXNlIHtcclxuICBwYWRkaW5nOiAwO1xyXG4gIG1hcmdpbjogMDtcclxuICBsaXN0LXN0eWxlOiBub25lO1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHJcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC13cmFwOiB3cmFwO1xyXG4gIH1cclxuXHJcbiAgbGkge1xyXG4gICAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xyXG4gIH1cclxuXHJcbiAgYSxcclxuICAuYnV0dG9uIHtcclxuICAgIGxpbmUtaGVpZ2h0OiAxO1xyXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBwYWRkaW5nOiAkbWVudS1pdGVtcy1wYWRkaW5nO1xyXG4gIH1cclxuXHJcbiAgLy8gUmVzZXQgc3R5bGVzIG9mIGlubmVyIGVsZW1lbnRzXHJcbiAgaW5wdXQsXHJcbiAgc2VsZWN0LFxyXG4gIGEsXHJcbiAgYnV0dG9uIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgfVxyXG5cclxuICBpbnB1dCB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gRXhwYW5kcyB0aGUgaXRlbXMgb2YgYSBNZW51LCBzbyBlYWNoIGl0ZW0gaXMgdGhlIHNhbWUgd2lkdGguXHJcbkBtaXhpbiBtZW51LWV4cGFuZCB7XHJcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICBsaSB7XHJcbiAgICAgIGZsZXg6IDEgMSAwcHg7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgemVyby11bml0XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBlbHNlIHtcclxuICAgIGRpc3BsYXk6IHRhYmxlO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcblxyXG4gICAgPiBsaSB7XHJcbiAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XHJcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gQWxpZ24gbWVudSBpdGVtcy5cclxuQG1peGluIG1lbnUtYWxpZ24oJGFsaWdubWVudCkge1xyXG4gIEBpZiAkYWxpZ25tZW50ID09IGxlZnQge1xyXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuICAgIH1cclxuICAgIEBlbHNlIHtcclxuICAgICAgdGV4dC1hbGlnbjogJGdsb2JhbC1sZWZ0O1xyXG4gICAgfVxyXG4gIH1cclxuICBAZWxzZSBpZiAkYWxpZ25tZW50ID09IHJpZ2h0IHtcclxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xyXG4gICAgICBsaSB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xyXG5cclxuICAgICAgICAuc3VibWVudSBsaSB7XHJcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmLnZlcnRpY2FsIGxpIHtcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICB0ZXh0LWFsaWduOiAkZ2xvYmFsLXJpZ2h0O1xyXG5cclxuICAgICAgICAuc3VibWVudSBsaSB7XHJcbiAgICAgICAgICB0ZXh0LWFsaWduOiAkZ2xvYmFsLXJpZ2h0O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgQGVsc2Uge1xyXG4gICAgICB0ZXh0LWFsaWduOiAkZ2xvYmFsLXJpZ2h0O1xyXG5cclxuICAgICAgLnN1Ym1lbnUgbGkge1xyXG4gICAgICAgIHRleHQtYWxpZ246ICRnbG9iYWwtbGVmdDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi52ZXJ0aWNhbCB7XHJcbiAgICAgICAgLnN1Ym1lbnUgbGkge1xyXG4gICAgICAgICAgdGV4dC1hbGlnbjogJGdsb2JhbC1yaWdodDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgQGVsc2UgaWYgJGFsaWdubWVudCA9PSBjZW50ZXIge1xyXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICAgIGxpIHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cclxuICAgICAgICAuc3VibWVudSBsaSB7XHJcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBAZWxzZSB7XHJcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHJcbiAgICAgIC5zdWJtZW51IGxpIHtcclxuICAgICAgICB0ZXh0LWFsaWduOiAkZ2xvYmFsLWxlZnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vLyBTZXRzIHRoZSBkaXJlY3Rpb24gb2YgYSBNZW51LlxyXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZGlyIFtob3Jpem9udGFsXSAtIERpcmVjdGlvbiBvZiB0aGUgTWVudS4gQ2FuIGJlIGBob3Jpem9udGFsYCBvciBgdmVydGljYWxgLlxyXG5AbWl4aW4gbWVudS1kaXJlY3Rpb24oJGRpcjogaG9yaXpvbnRhbCkge1xyXG4gIEBpZiAkZGlyID09IGhvcml6b250YWwge1xyXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcclxuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcclxuICAgIH1cclxuICAgIEBlbHNlIHtcclxuICAgICAgbGkge1xyXG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBAZWxzZSBpZiAkZGlyID09IHZlcnRpY2FsIHtcclxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xyXG4gICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcclxuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIH1cclxuICAgIEBlbHNlIHtcclxuICAgICAgbGkge1xyXG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBlbHNlIHtcclxuICAgIEB3YXJuICdUaGUgZGlyZWN0aW9uIHVzZWQgZm9yIG1lbnUtZGlyZWN0aW9uKCkgbXVzdCBiZSBob3Jpem9udGFsIG9yIHZlcnRpY2FsLic7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gQ3JlYXRlcyBhIHNpbXBsZSBNZW51LCB3aGljaCBoYXMgbm8gcGFkZGluZyBvciBob3ZlciBzdGF0ZS5cclxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGRpciBbJGdsb2JhbC1sZWZ0XSAtIERpcmVjdGlvbiBvZiB0aGUgbWVudS4gVGhpcyBlZmZlY3RzIHRoZSBzaWRlIG9mIHRoZSBgPGxpPmAgdGhhdCByZWNlaXZlcyB0aGUgbWFyZ2luLlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRtYXJnaW4gWyRtZW51LXNpbXBsZS1tYXJnaW5dIC0gVGhlIG1hcmdpbiB0byBhcHBseSB0byBlYWNoIGA8bGk+YC5cclxuQG1peGluIG1lbnUtc2ltcGxlKCRkaXI6ICRnbG9iYWwtbGVmdCwgJG1hcmdpbjogJG1lbnUtc2ltcGxlLW1hcmdpbikge1xyXG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICB9XHJcblxyXG4gIGxpICsgbGkge1xyXG4gICAgbWFyZ2luLSN7JGRpcn06ICRtYXJnaW47XHJcbiAgfVxyXG5cclxuICBhIHtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgbmVzdGVkIE1lbnUsIGJ5IGFkZGluZyBgbWFyZ2luLWxlZnRgIHRvIHRoZSBtZW51LlxyXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJG1hcmdpbiBbJG1lbnUtbmVzdGVkLW1hcmdpbl0gLSBMZW5ndGggb2YgdGhlIG1hcmdpbi5cclxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJG5lc3RlZC1hbGlnbm1lbnQgW2xlZnRdIC0gQWxpZ25tZW50IG9mIHRoZSBuZXN0ZWQgY2xhc3NcclxuQG1peGluIG1lbnUtbmVzdGVkKFxyXG4gICRtYXJnaW46ICRtZW51LW5lc3RlZC1tYXJnaW4sXHJcbiAgJG5lc3RlZC1hbGlnbm1lbnQ6IGxlZnRcclxuKSB7XHJcbiAgQGlmICRuZXN0ZWQtYWxpZ25tZW50ID09IHJpZ2h0IHtcclxuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkbWFyZ2luO1xyXG4gICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogMDtcclxuICB9XHJcbiAgQGVsc2Uge1xyXG4gICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06IDA7XHJcbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkbWFyZ2luO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbi8vLyBBZGRzIGJhc2ljIHN0eWxlcyBmb3IgaWNvbnMgaW4gbWVudXMuXHJcbkBtaXhpbiBtZW51LWljb25zKCkge1xyXG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xyXG4gICAgYSB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBlbHNlIHtcclxuICAgIGltZyxcclxuICAgIGksXHJcbiAgICBzdmcge1xyXG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG5cclxuICAgICAgKyBzcGFuIHtcclxuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gQWRkcyBwb3NpdGlvbiBjbGFzc2VzIGZvciBpY29ucyB3aXRoaW4gYSBtZW51LlxyXG5AbWl4aW4gbWVudS1pY29uLXBvc2l0aW9uKCRwb3NpdGlvbjogbGVmdCwgJHNwYWNpbmc6ICRtZW51LWljb24tc3BhY2luZykge1xyXG4gIEBpZiAkcG9zaXRpb24gPT0gbGVmdCB7XHJcbiAgICBsaSBhIHtcclxuICAgICAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICAgICAgZmxleC1mbG93OiByb3cgbm93cmFwO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpbWcsXHJcbiAgICAgIGksXHJcbiAgICAgIHN2ZyB7XHJcbiAgICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICRzcGFjaW5nO1xyXG5cclxuICAgICAgICBAaWYgbm90ICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBlbHNlIGlmICRwb3NpdGlvbiA9PSByaWdodCB7XHJcbiAgICBsaSBhIHtcclxuICAgICAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICAgICAgZmxleC1mbG93OiByb3cgbm93cmFwO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpbWcsXHJcbiAgICAgIGksXHJcbiAgICAgIHN2ZyB7XHJcbiAgICAgICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogJHNwYWNpbmc7XHJcblxyXG4gICAgICAgIEBpZiBub3QgJGdsb2JhbC1mbGV4Ym94IHtcclxuICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgQGVsc2UgaWYgJHBvc2l0aW9uID09IHRvcCB7XHJcbiAgICBsaSBhIHtcclxuICAgICAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICAgICAgZmxleC1mbG93OiBjb2x1bW4gbm93cmFwO1xyXG4gICAgICB9XHJcbiAgICAgIEBlbHNlIHtcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGltZyxcclxuICAgICAgaSxcclxuICAgICAgc3ZnIHtcclxuICAgICAgICBAaWYgbm90ICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgIG1hcmdpbjogMCBhdXRvICRzcGFjaW5nO1xyXG4gICAgICAgIH1cclxuICAgICAgICBAZWxzZSB7XHJcbiAgICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoO1xyXG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmc7XHJcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBlbHNlIGlmICRwb3NpdGlvbiA9PSBib3R0b20ge1xyXG4gICAgbGkgYSB7XHJcbiAgICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xyXG4gICAgICAgIGZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDtcclxuICAgICAgfVxyXG4gICAgICBAZWxzZSB7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpbWcsXHJcbiAgICAgIGksXHJcbiAgICAgIHN2ZyB7XHJcbiAgICAgICAgQGlmIG5vdCAkZ2xvYmFsLWZsZXhib3gge1xyXG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICBtYXJnaW46ICRzcGFjaW5nIGF1dG8gMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgQGVsc2Uge1xyXG4gICAgICAgICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcclxuICAgICAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nO1xyXG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuQG1peGluIG1lbnUtdGV4dCB7XHJcbiAgcGFkZGluZzogJGdsb2JhbC1tZW51LXBhZGRpbmc7XHJcblxyXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gIGxpbmUtaGVpZ2h0OiAxO1xyXG4gIGNvbG9yOiBpbmhlcml0O1xyXG59XHJcblxyXG5AbWl4aW4gbWVudS1zdGF0ZS1hY3RpdmUge1xyXG4gIGJhY2tncm91bmQ6ICRtZW51LWl0ZW0tYmFja2dyb3VuZC1hY3RpdmU7XHJcbiAgY29sb3I6ICRtZW51LWl0ZW0tY29sb3ItYWN0aXZlO1xyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1tZW51IHtcclxuICAubWVudSB7XHJcbiAgICBAaW5jbHVkZSBtZW51LWJhc2U7XHJcblxyXG4gICAgLy8gRGVmYXVsdCBvcmllbnRhdGlvbjogaG9yaXpvbnRhbFxyXG4gICAgJiwgJi5ob3Jpem9udGFsIHtcclxuICAgICAgQGluY2x1ZGUgbWVudS1kaXJlY3Rpb24oaG9yaXpvbnRhbCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVmVydGljYWwgb3JpZW50YXRpb24gbW9kaWZpZXJcclxuICAgICYudmVydGljYWwge1xyXG4gICAgICBAaW5jbHVkZSBtZW51LWRpcmVjdGlvbih2ZXJ0aWNhbCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRXZlbi13aWR0aCBtb2RpZmllciBmb3IgaG9yaXpvbnRhbCBvcmllbnRhdGlvblxyXG4gICAgJi5leHBhbmRlZCB7XHJcbiAgICAgIEBpbmNsdWRlIG1lbnUtZXhwYW5kO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFNpbXBsZVxyXG4gICAgJi5zaW1wbGUge1xyXG4gICAgICBAaW5jbHVkZSBtZW51LXNpbXBsZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBCcmVha3BvaW50IHNwZWNpZmljIHZlcnNpb25zXHJcbiAgICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KCRzbWFsbDogZmFsc2UpIHtcclxuICAgICAgJi4jeyQtemYtc2l6ZX0taG9yaXpvbnRhbCB7XHJcbiAgICAgICAgQGluY2x1ZGUgbWVudS1kaXJlY3Rpb24oaG9yaXpvbnRhbCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYuI3skLXpmLXNpemV9LXZlcnRpY2FsIHtcclxuICAgICAgICBAaW5jbHVkZSBtZW51LWRpcmVjdGlvbih2ZXJ0aWNhbCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYuI3skLXpmLXNpemV9LWV4cGFuZGVkIHtcclxuICAgICAgICBAaW5jbHVkZSBtZW51LWV4cGFuZDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi4jeyQtemYtc2l6ZX0tc2ltcGxlIHtcclxuICAgICAgICBAaW5jbHVkZSBtZW51LWV4cGFuZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIE5lc3RpbmdcclxuICAgICYubmVzdGVkIHtcclxuICAgICAgQGluY2x1ZGUgbWVudS1uZXN0ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSWNvbiBCYXNlIFN0eWxlc1xyXG4gICAgJi5pY29ucyB7XHJcbiAgICAgIEBpbmNsdWRlIG1lbnUtaWNvbnM7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQmFja3dhcmQgQ29tcGF0aWJpbGl0eSBmb3IgYWN0aXZlIHN0YXRlXHJcbiAgICBAaWYgJG1lbnUtaWNvbnMtYmFjay1jb21wYXQge1xyXG4gICAgICAmLmljb24tdG9wLFxyXG4gICAgICAmLmljb24tcmlnaHQsXHJcbiAgICAgICYuaWNvbi1ib3R0b20sXHJcbiAgICAgICYuaWNvbi1sZWZ0IHtcclxuICAgICAgICBAaW5jbHVkZSBtZW51LWljb25zO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSWNvbiBMZWZ0XHJcbiAgICAmLmljb24tbGVmdCB7XHJcbiAgICAgIEBpbmNsdWRlIG1lbnUtaWNvbi1wb3NpdGlvbihsZWZ0KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBJY29uIFJpZ2h0XHJcbiAgICAmLmljb24tcmlnaHQge1xyXG4gICAgICBAaW5jbHVkZSBtZW51LWljb24tcG9zaXRpb24ocmlnaHQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEljb24gVG9wXHJcbiAgICAmLmljb24tdG9wIHtcclxuICAgICAgQGluY2x1ZGUgbWVudS1pY29uLXBvc2l0aW9uKHRvcCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSWNvbiBCb3R0b21cclxuICAgICYuaWNvbi1ib3R0b20ge1xyXG4gICAgICBAaW5jbHVkZSBtZW51LWljb24tcG9zaXRpb24oYm90dG9tKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBBY3RpdmUgc3RhdGVcclxuICAgIC5pcy1hY3RpdmUgPiBhIHtcclxuICAgICAgQGluY2x1ZGUgbWVudS1zdGF0ZS1hY3RpdmU7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vIEJhY2t3YXJkIENvbXBhdGliaWxpdHkgZm9yIGFjdGl2ZSBzdGF0ZVxyXG4gICAgQGlmICRtZW51LXN0YXRlLWJhY2stY29tcGF0IHtcclxuICAgICAgLmFjdGl2ZSA+IGEge1xyXG4gICAgICAgIEBpbmNsdWRlIG1lbnUtc3RhdGUtYWN0aXZlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQWxpZ24gbGVmdFxyXG4gICAgJi5hbGlnbi0jeyRnbG9iYWwtbGVmdH0ge1xyXG4gICAgICBAaW5jbHVkZSBtZW51LWFsaWduKGxlZnQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEFsaWduIHJpZ2h0XHJcbiAgICAmLmFsaWduLSN7JGdsb2JhbC1yaWdodH0ge1xyXG4gICAgICBAaW5jbHVkZSBtZW51LWFsaWduKHJpZ2h0KTtcclxuXHJcbiAgICAgIC5uZXN0ZWQge1xyXG4gICAgICAgIEBpbmNsdWRlIG1lbnUtbmVzdGVkKCRuZXN0ZWQtYWxpZ25tZW50OiByaWdodCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBBbGlnbiBjZW50ZXJcclxuICAgICYuYWxpZ24tY2VudGVyIHtcclxuICAgICAgQGluY2x1ZGUgbWVudS1hbGlnbihjZW50ZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIC5tZW51LXRleHQge1xyXG4gICAgICBAaW5jbHVkZSBtZW51LXRleHQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaWYgJG1lbnUtY2VudGVyZWQtYmFjay1jb21wYXQge1xyXG4gICAgLm1lbnUtY2VudGVyZWQge1xyXG4gICAgICA+IC5tZW51IHtcclxuICAgICAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcclxuICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICBAaW5jbHVkZSBtZW51LWFsaWduKGNlbnRlcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFByZXZlbnQgRk9VQyB3aGVuIHVzaW5nIHRoZSBSZXNwb25zaXZlIE1lbnUgcGx1Z2luXHJcbiAgLm5vLWpzIFtkYXRhLXJlc3BvbnNpdmUtbWVudV0gdWwge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICB9XHJcbn1cclxuIiwiQG1peGluIGZvdW5kYXRpb24tbWVudS1pY29uIHtcclxuICAubWVudS1pY29uIHtcclxuICAgIEBpbmNsdWRlIGhhbWJ1cmdlcigkY29sb3I6ICR0aXRsZWJhci1pY29uLWNvbG9yLCAkY29sb3ItaG92ZXI6ICR0aXRsZWJhci1pY29uLWNvbG9yLWhvdmVyKTtcclxuICB9XHJcblxyXG4gIC5tZW51LWljb24uZGFyayB7XHJcbiAgICBAaW5jbHVkZSBoYW1idXJnZXI7XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBvZmYtY2FudmFzXHJcbi8vLy9cclxuXHJcbi8vLyBXaWR0aCBtYXAgb2YgYSBsZWZ0L3JpZ2h0IG9mZi1jYW52YXMgcGFuZWwuXHJcbi8vLyBAdHlwZSBNYXBcclxuJG9mZmNhbnZhcy1zaXplczogKFxyXG4gIHNtYWxsOiAyNTBweCxcclxuKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBIZWlnaHQgbWFwIG9mIGEgdG9wL2JvdHRvbSBvZmYtY2FudmFzIHBhbmVsLlxyXG4vLy8gQHR5cGUgTWFwXHJcbiRvZmZjYW52YXMtdmVydGljYWwtc2l6ZXM6IChcclxuICBzbWFsbDogMjUwcHgsXHJcbikgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBhbiBvZmYtY2FudmFzIHBhbmVsLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJG9mZmNhbnZhcy1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcclxuXHJcbi8vLyBCb3ggc2hhZG93IGZvciB0aGUgb2ZmLWNhbnZhcyBvdmVybGFwIHBhbmVsLlxyXG4vLy8gQHR5cGUgU2hhZG93XHJcbiRvZmZjYW52YXMtc2hhZG93OiAwIDAgMTBweCByZ2JhKCRibGFjaywgMC43KSAhZGVmYXVsdDtcclxuXHJcbi8vLyBJbm5lciBib3ggc2hhZG93IHNpemUgZm9yIHRoZSBvZmYtY2FudmFzIHB1c2ggcGFuZWwuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJG9mZmNhbnZhcy1pbm5lci1zaGFkb3ctc2l6ZTogMjBweCAhZGVmYXVsdDtcclxuXHJcbi8vLyBJbm5lciBib3ggc2hhZG93IGNvbG9yIGZvciB0aGUgb2ZmLWNhbnZhcyBwdXNoIHBhbmVsLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJG9mZmNhbnZhcy1pbm5lci1zaGFkb3ctY29sb3I6IHJnYmEoJGJsYWNrLCAwLjI1KSAhZGVmYXVsdDtcclxuXHJcbi8vLyBaLWluZGV4IG9mIGFuIG9mZi1jYW52YXMgY29udGVudCBvdmVybGF5LlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRvZmZjYW52YXMtb3ZlcmxheS16aW5kZXg6IDExICFkZWZhdWx0O1xyXG5cclxuLy8vIFotaW5kZXggb2YgYW4gb2ZmLWNhbnZhcyBwYW5lbCB3aXRoIHRoZSBgcHVzaGAgdHJhbnNpdGlvbi5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kb2ZmY2FudmFzLXB1c2gtemluZGV4OiAxMiAhZGVmYXVsdDtcclxuXHJcbi8vLyBaLWluZGV4IG9mIGFuIG9mZi1jYW52YXMgcGFuZWwgd2l0aCB0aGUgYG92ZXJsYXBgIHRyYW5zaXRpb24uXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJG9mZmNhbnZhcy1vdmVybGFwLXppbmRleDogMTMgIWRlZmF1bHQ7XHJcblxyXG4vLy8gWi1pbmRleCBvZiBhbiBvZmYtY2FudmFzIHBhbmVsIHVzaW5nIHRoZSBgcmV2ZWFsLWZvci0qYCBjbGFzc2VzIG9yIG1peGluLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRvZmZjYW52YXMtcmV2ZWFsLXppbmRleDogMTIgIWRlZmF1bHQ7XHJcblxyXG4vLy8gTGVuZ3RoIG9mIHRoZSBhbmltYXRpb24gb24gYW4gb2ZmLWNhbnZhcyBwYW5lbC5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kb2ZmY2FudmFzLXRyYW5zaXRpb24tbGVuZ3RoOiAwLjVzICFkZWZhdWx0O1xyXG5cclxuLy8vIFRpbWluZyBmdW5jdGlvbiBvZiB0aGUgYW5pbWF0aW9uIG9uIGFuIG9mZi1jYW52YXMgcGFuZWwuXHJcbi8vLyBAdHlwZSBLZXl3b3JkXHJcbiRvZmZjYW52YXMtdHJhbnNpdGlvbi10aW1pbmc6IGVhc2UgIWRlZmF1bHQ7XHJcblxyXG4vLy8gSWYgYHRydWVgLCBhIHJldmVhbGVkIG9mZi1jYW52YXMgd2lsbCBiZSBmaXhlZC1wb3NpdGlvbiwgYW5kIHNjcm9sbCB3aXRoIHRoZSBzY3JlZW4uXHJcbi8vLyBAdHlwZSBCb29sXHJcbiRvZmZjYW52YXMtZml4ZWQtcmV2ZWFsOiB0cnVlICFkZWZhdWx0O1xyXG5cclxuLy8vIEJhY2tncm91bmQgY29sb3IgZm9yIHRoZSBvdmVybGF5IHRoYXQgYXBwZWFycyB3aGVuIGFuIG9mZi1jYW52YXMgcGFuZWwgaXMgb3Blbi5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRvZmZjYW52YXMtZXhpdC1iYWNrZ3JvdW5kOiByZ2JhKCR3aGl0ZSwgMC4yNSkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQ1NTIGNsYXNzIHVzZWQgZm9yIHRoZSBtYWluIGNvbnRlbnQgYXJlYS4gVGhlIG9mZi1jYW52YXMgbWl4aW5zIHVzZSB0aGlzIHRvIHRhcmdldCB0aGUgcGFnZSBjb250ZW50LlxyXG4kbWFpbmNvbnRlbnQtY2xhc3M6ICdvZmYtY2FudmFzLWNvbnRlbnQnICFkZWZhdWx0O1xyXG5cclxuLy8vIEFkZHMgYmFzZWxpbmUgc3R5bGVzIGZvciBvZmYtY2FudmFzLiBUaGlzIENTUyBpcyByZXF1aXJlZCB0byBtYWtlIHRoZSBvdGhlciBwaWVjZXMgd29yay5cclxuQG1peGluIG9mZi1jYW52YXMtYmFzaWNzIHtcclxuXHJcbiAgLy8vIFRyYW5zZm9ybSBkZXByZWNhdGVkIHNpemUgc2V0dGluZ3MgaW50byBtYXAgJiBzaG93IHdhcm5pbmdcclxuICBAaWYgdmFyaWFibGUtZXhpc3RzKG9mZmNhbnZhcy1zaXplKSB7XHJcbiAgICAkb2ZmY2FudmFzLXNpemVzOiAoc21hbGw6ICRvZmZjYW52YXMtc2l6ZSwgbWVkaXVtOiAkb2ZmY2FudmFzLXNpemUpICFnbG9iYWw7XHJcbiAgICBAd2FybiAnJG9mZmNhbnZhcy1zaXplIGlzIGRlcHJlY2F0ZWQgYW5kIG5vdCB1c2VkIGFueW1vcmUhIFBsZWFzZSB1cGRhdGUgeW91ciBzZXR0aW5ncyBhbmQgdXNlIHRoZSBtYXAgJG9mZmNhbnZhcy1zaXplcyBpbnN0ZWFkJztcclxuICB9XHJcbiAgQGlmIHZhcmlhYmxlLWV4aXN0cyhvZmZjYW52YXMtdmVydGljYWwtc2l6ZSkge1xyXG4gICAgJG9mZmNhbnZhcy12ZXJ0aWNhbC1zaXplczogKHNtYWxsOiAkb2ZmY2FudmFzLXZlcnRpY2FsLXNpemUsIG1lZGl1bTogJG9mZmNhbnZhcy12ZXJ0aWNhbC1zaXplKSAhZ2xvYmFsO1xyXG4gICAgQHdhcm4gJyRvZmZjYW52YXMtdmVydGljYWwtc2l6ZSBpcyBkZXByZWNhdGVkIGFuZCBub3QgdXNlZCBhbnltb3JlISBQbGVhc2UgdXBkYXRlIHlvdXIgc2V0dGluZ3MgYW5kIHVzZSB0aGUgbWFwICRvZmZjYW52YXMtdmVydGljYWwtc2l6ZXMgaW5zdGVhZCc7XHJcbiAgfVxyXG5cclxuICAvLyBDaGVja3MgdGhlIHotaW5kZXhlcyBhbmQgaW5jcmVhc2UgdGhlbSBkdWUgdG8gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuXHJcbiAgLy8gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB0aGUgb3ZlcmxheSdzIHotaW5kZXggaXMgbmV3IHNpbmNlIHY2LjQgYW5kIG1heSBiZSBpZGVudGljYWwgdG8gdGhlIHVzZXIgY3VzdG9tIHNldHRpbmdzIG9mIHRoZSBwdXNoIHotaW5kZXguXHJcbiAgQGlmICRvZmZjYW52YXMtcHVzaC16aW5kZXggPD0gJG9mZmNhbnZhcy1vdmVybGF5LXppbmRleCB7ICRvZmZjYW52YXMtcHVzaC16aW5kZXg6ICRvZmZjYW52YXMtb3ZlcmxheS16aW5kZXggKyAxICFnbG9iYWw7IH1cclxuICBAaWYgJG9mZmNhbnZhcy1vdmVybGFwLXppbmRleCA8PSAkb2ZmY2FudmFzLXB1c2gtemluZGV4IHsgJG9mZmNhbnZhcy1vdmVybGFwLXppbmRleDogJG9mZmNhbnZhcy1wdXNoLXppbmRleCArIDEgIWdsb2JhbDsgfVxyXG4gIEBpZiAkb2ZmY2FudmFzLXJldmVhbC16aW5kZXggPD0gJG9mZmNhbnZhcy1vdmVybGF5LXppbmRleCB7ICRvZmZjYW52YXMtcmV2ZWFsLXppbmRleDogJG9mZmNhbnZhcy1vdmVybGF5LXppbmRleCArIDEgIWdsb2JhbDsgfVxyXG5cclxuICAvLyBIaWRlcyBvdmVyZmxvdyBvbiBib2R5IHdoZW4gYW4gb2ZmLWNhbnZhcyBwYW5lbCBpcyBvcGVuLlxyXG4gIC5pcy1vZmYtY2FudmFzLW9wZW4ge1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gIC8vIE9mZi1jYW52YXMgb3ZlcmxheSAoZ2VuZXJhdGVkIGJ5IEphdmFTY3JpcHQpXHJcbiAgLmpzLW9mZi1jYW52YXMtb3ZlcmxheSB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDA7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgei1pbmRleDogJG9mZmNhbnZhcy1vdmVybGF5LXppbmRleDtcclxuXHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuXHJcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5ICRvZmZjYW52YXMtdHJhbnNpdGlvbi1sZW5ndGggJG9mZmNhbnZhcy10cmFuc2l0aW9uLXRpbWluZywgdmlzaWJpbGl0eSAkb2ZmY2FudmFzLXRyYW5zaXRpb24tbGVuZ3RoICRvZmZjYW52YXMtdHJhbnNpdGlvbi10aW1pbmc7XHJcblxyXG4gICAgYmFja2dyb3VuZDogJG9mZmNhbnZhcy1leGl0LWJhY2tncm91bmQ7XHJcblxyXG4gICAgb3BhY2l0eTogMDtcclxuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcclxuXHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuICAgICYuaXMtdmlzaWJsZSB7XHJcbiAgICAgIG9wYWNpdHk6IDE7XHJcbiAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XHJcbiAgICB9XHJcblxyXG4gICAgJi5pcy1jbG9zYWJsZSB7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIH1cclxuXHJcbiAgICAmLmlzLW92ZXJsYXktYWJzb2x1dGUge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB9XHJcblxyXG4gICAgJi5pcy1vdmVybGF5LWZpeGVkIHtcclxuICAgICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8gQWRkcyBiYXNpYyBzdHlsZXMgZm9yIGFuIG9mZi1jYW52YXMgd3JhcHBlci5cclxuQG1peGluIG9mZi1jYW52YXMtd3JhcHBlcigpIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG5cclxuLy8vIEFkZHMgYmFzaWMgc3R5bGVzIGZvciBhbiBvZmYtY2FudmFzIHBhbmVsLlxyXG5AbWl4aW4gb2ZmLWNhbnZhcy1iYXNlKFxyXG4gICRiYWNrZ3JvdW5kOiAkb2ZmY2FudmFzLWJhY2tncm91bmQsXHJcbiAgJHRyYW5zaXRpb246ICRvZmZjYW52YXMtdHJhbnNpdGlvbi1sZW5ndGggJG9mZmNhbnZhcy10cmFuc2l0aW9uLXRpbWluZyxcclxuICAkZml4ZWQ6IHRydWVcclxuKSB7XHJcbiAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xyXG5cclxuICBAaWYgJGZpeGVkID09IHRydWUge1xyXG4gICAgcG9zaXRpb246IGZpeGVkO1xyXG4gIH1cclxuICBAZWxzZSB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgfVxyXG5cclxuICAvLyBTZXQgdGhlIG9mZi1jYW52YXMgei1pbmRleC5cclxuICB6LWluZGV4OiAkb2ZmY2FudmFzLXB1c2gtemluZGV4O1xyXG5cclxuICAvLyBJbmNyZWFzZSBDU1Mgc3BlY2lmaWNpdHlcclxuICAmLmlzLXRyYW5zaXRpb24tcHVzaCB7XHJcbiAgICB6LWluZGV4OiAkb2ZmY2FudmFzLXB1c2gtemluZGV4O1xyXG4gIH1cclxuXHJcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtICR0cmFuc2l0aW9uO1xyXG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcclxuXHJcbiAgYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XHJcblxyXG4gIC8vIEhpZGUgaW5hY3RpdmUgb2ZmLWNhbnZhcyB3aXRoaW4gdGhlIGNvbnRlbnQgdGhhdCBoYXZlIHRoZSBzYW1lIHBvc2l0aW9uXHJcbiAgJi5pcy1jbG9zZWQge1xyXG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgLy8gT3ZlcmxhcCBvbmx5IHN0eWxlcy5cclxuICAmLmlzLXRyYW5zaXRpb24tb3ZlcmxhcCB7XHJcbiAgICB6LWluZGV4OiAkb2ZmY2FudmFzLW92ZXJsYXAtemluZGV4O1xyXG5cclxuICAgICYuaXMtb3BlbiB7XHJcbiAgICAgIGJveC1zaGFkb3c6ICRvZmZjYW52YXMtc2hhZG93O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gU2V0cyB0cmFuc2Zvcm0gdG8gMCB0byBzaG93IGFuIG9mZi1jYW52YXMgcGFuZWwuXHJcbiAgJi5pcy1vcGVuIHtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIEFkZHMgc3R5bGVzIHRvIHBvc2l0aW9uIGFuIG9mZi1jYW52YXMgcGFuZWwgdG8gdGhlIGxlZnQvcmlnaHQvdG9wL2JvdHRvbS5cclxuQG1peGluIG9mZi1jYW52YXMtcG9zaXRpb24oXHJcbiAgJHBvc2l0aW9uOiBsZWZ0LFxyXG4gICRvcmllbnRhdGlvbjogaG9yaXpvbnRhbCxcclxuICAkc2l6ZXM6IGlmKCRvcmllbnRhdGlvbiA9PSBob3Jpem9udGFsLCAkb2ZmY2FudmFzLXNpemVzLCAkb2ZmY2FudmFzLXZlcnRpY2FsLXNpemVzKVxyXG4pIHtcclxuICBAaWYgJHBvc2l0aW9uID09IGxlZnQge1xyXG4gICAgdG9wOiAwO1xyXG4gICAgbGVmdDogMDtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIG92ZXJmbG93LXk6IGF1dG87XHJcblxyXG4gICAgQGVhY2ggJG5hbWUsICRzaXplIGluICRzaXplcyB7XHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcclxuICAgICAgICB3aWR0aDogJHNpemU7XHJcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0kc2l6ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBTZXRzIHRoZSBwb3NpdGlvbiBmb3IgbmVzdGVkIG9mZi1jYW52YXMgZWxlbWVudFxyXG4gICAgQGF0LXJvb3QgLiN7JG1haW5jb250ZW50LWNsYXNzfSAub2ZmLWNhbnZhcy5wb3NpdGlvbi0jeyRwb3NpdGlvbn0ge1xyXG5cclxuICAgICAgQGVhY2ggJG5hbWUsICRzaXplIGluICRzaXplcyB7XHJcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xyXG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0kc2l6ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgICYuaXMtdHJhbnNpdGlvbi1vdmVybGFwLmlzLW9wZW4ge1xyXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU2V0cyB0aGUgb3BlbiBwb3NpdGlvbiBmb3IgdGhlIGNvbnRlbnRcclxuICAgIEBhdC1yb290IC4jeyRtYWluY29udGVudC1jbGFzc30uaXMtb3Blbi0jeyRwb3NpdGlvbn0ge1xyXG4gICAgICAmLmhhcy10cmFuc2l0aW9uLXB1c2gge1xyXG4gICAgICAgIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkc2l6ZXMge1xyXG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoJHNpemUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBAZWxzZSBpZiAkcG9zaXRpb24gPT0gcmlnaHQge1xyXG4gICAgdG9wOiAwO1xyXG4gICAgcmlnaHQ6IDA7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xyXG5cclxuICAgIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkc2l6ZXMge1xyXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XHJcbiAgICAgICAgd2lkdGg6ICRzaXplO1xyXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgkc2l6ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBTZXRzIHRoZSBwb3NpdGlvbiBmb3IgbmVzdGVkIG9mZi1jYW52YXMgZWxlbWVudFxyXG4gICAgQGF0LXJvb3QgLiN7JG1haW5jb250ZW50LWNsYXNzfSAub2ZmLWNhbnZhcy5wb3NpdGlvbi0jeyRwb3NpdGlvbn0ge1xyXG5cclxuICAgICAgQGVhY2ggJG5hbWUsICRzaXplIGluICRzaXplcyB7XHJcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xyXG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKCRzaXplKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgJi5pcy10cmFuc2l0aW9uLW92ZXJsYXAuaXMtb3BlbiB7XHJcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBTZXRzIHRoZSBvcGVuIHBvc2l0aW9uIGZvciB0aGUgY29udGVudFxyXG4gICAgQGF0LXJvb3QgLiN7JG1haW5jb250ZW50LWNsYXNzfS5pcy1vcGVuLSN7JHBvc2l0aW9ufSB7XHJcbiAgICAgICYuaGFzLXRyYW5zaXRpb24tcHVzaCB7XHJcbiAgICAgICAgQGVhY2ggJG5hbWUsICRzaXplIGluICRzaXplcyB7XHJcbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtJHNpemUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBAZWxzZSBpZiAkcG9zaXRpb24gPT0gdG9wIHtcclxuICAgIHRvcDogMDtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIG92ZXJmbG93LXg6IGF1dG87XHJcblxyXG4gICAgQGVhY2ggJG5hbWUsICRzaXplIGluICRzaXplcyB7XHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcclxuICAgICAgICBoZWlnaHQ6ICRzaXplO1xyXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtJHNpemUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU2V0cyB0aGUgcG9zaXRpb24gZm9yIG5lc3RlZCBvZmYtY2FudmFzIGVsZW1lbnRcclxuICAgIEBhdC1yb290IC4jeyRtYWluY29udGVudC1jbGFzc30gLm9mZi1jYW52YXMucG9zaXRpb24tI3skcG9zaXRpb259IHtcclxuICAgICAgQGVhY2ggJG5hbWUsICRzaXplIGluICRzaXplcyB7XHJcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xyXG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kc2l6ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgICYuaXMtdHJhbnNpdGlvbi1vdmVybGFwLmlzLW9wZW4ge1xyXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU2V0cyB0aGUgb3BlbiBwb3NpdGlvbiBmb3IgdGhlIGNvbnRlbnRcclxuICAgIEBhdC1yb290IC4jeyRtYWluY29udGVudC1jbGFzc30uaXMtb3Blbi0jeyRwb3NpdGlvbn0ge1xyXG4gICAgICAmLmhhcy10cmFuc2l0aW9uLXB1c2gge1xyXG4gICAgICAgIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkc2l6ZXMge1xyXG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoJHNpemUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBAZWxzZSBpZiAkcG9zaXRpb24gPT0gYm90dG9tIHtcclxuICAgIGJvdHRvbTogMDtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIG92ZXJmbG93LXg6IGF1dG87XHJcblxyXG4gICAgQGVhY2ggJG5hbWUsICRzaXplIGluICRzaXplcyB7XHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcclxuICAgICAgICBoZWlnaHQ6ICRzaXplO1xyXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgkc2l6ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBTZXRzIHRoZSBwb3NpdGlvbiBmb3IgbmVzdGVkIG9mZi1jYW52YXMgZWxlbWVudFxyXG4gICAgQGF0LXJvb3QgLiN7JG1haW5jb250ZW50LWNsYXNzfSAub2ZmLWNhbnZhcy5wb3NpdGlvbi0jeyRwb3NpdGlvbn0ge1xyXG4gICAgICBAZWFjaCAkbmFtZSwgJHNpemUgaW4gJHNpemVzIHtcclxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XHJcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoJHNpemUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAmLmlzLXRyYW5zaXRpb24tb3ZlcmxhcC5pcy1vcGVuIHtcclxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFNldHMgdGhlIG9wZW4gcG9zaXRpb24gZm9yIHRoZSBjb250ZW50XHJcbiAgICBAYXQtcm9vdCAuI3skbWFpbmNvbnRlbnQtY2xhc3N9LmlzLW9wZW4tI3skcG9zaXRpb259IHtcclxuICAgICAgJi5oYXMtdHJhbnNpdGlvbi1wdXNoIHtcclxuICAgICAgICBAZWFjaCAkbmFtZSwgJHNpemUgaW4gJHNpemVzIHtcclxuICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kc2l6ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBJZiAkb2ZmY2FudmFzLWlubmVyLXNoYWRvdy1zaXplIGlzIHNldCwgYWRkIGlubmVyIGJveC1zaGFkb3cuXHJcbiAgLy8gVGhpcyBtaW1pY3MgdGhlIG9mZi1jYW52YXMgcGFuZWwgaGF2aW5nIGEgbG93ZXIgei1pbmRleCwgd2l0aG91dCBoYXZpbmcgdG8gaGF2ZSBvbmUuXHJcbiAgQGlmICRvZmZjYW52YXMtaW5uZXItc2hhZG93LXNpemUge1xyXG4gICAgJi5pcy10cmFuc2l0aW9uLXB1c2gge1xyXG4gICAgICBAaWYgJHBvc2l0aW9uID09IGxlZnQge1xyXG4gICAgICAgIEBpbmNsdWRlIGlubmVyLXNpZGUtc2hhZG93KHJpZ2h0LCAkb2ZmY2FudmFzLWlubmVyLXNoYWRvdy1zaXplLCAkb2ZmY2FudmFzLWlubmVyLXNoYWRvdy1jb2xvcik7XHJcbiAgICAgIH1cclxuICAgICAgQGVsc2UgaWYgJHBvc2l0aW9uID09IHJpZ2h0IHtcclxuICAgICAgICBAaW5jbHVkZSBpbm5lci1zaWRlLXNoYWRvdyhsZWZ0LCAkb2ZmY2FudmFzLWlubmVyLXNoYWRvdy1zaXplLCAkb2ZmY2FudmFzLWlubmVyLXNoYWRvdy1jb2xvcik7XHJcbiAgICAgIH1cclxuICAgICAgQGVsc2UgaWYgJHBvc2l0aW9uID09IHRvcCB7XHJcbiAgICAgICAgQGluY2x1ZGUgaW5uZXItc2lkZS1zaGFkb3coYm90dG9tLCAkb2ZmY2FudmFzLWlubmVyLXNoYWRvdy1zaXplLCAkb2ZmY2FudmFzLWlubmVyLXNoYWRvdy1jb2xvcik7XHJcbiAgICAgIH1cclxuICAgICAgQGVsc2UgaWYgJHBvc2l0aW9uID09IGJvdHRvbSB7XHJcbiAgICAgICAgQGluY2x1ZGUgaW5uZXItc2lkZS1zaGFkb3codG9wLCAkb2ZmY2FudmFzLWlubmVyLXNoYWRvdy1zaXplLCAkb2ZmY2FudmFzLWlubmVyLXNoYWRvdy1jb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG4vLy8gU2V0cyB0aGUgc3R5bGVzIGZvciB0aGUgY29udGVudCBjb250YWluZXIuXHJcbkBtaXhpbiBvZmYtY2FudmFzLWNvbnRlbnQoKSB7XHJcbiAgdHJhbnNmb3JtOiBub25lO1xyXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAkb2ZmY2FudmFzLXRyYW5zaXRpb24tbGVuZ3RoICRvZmZjYW52YXMtdHJhbnNpdGlvbi10aW1pbmc7XHJcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xyXG5cclxuICAvLyBUcmFuc2Zvcm0gc2NvcGUgdW50aWwgdGhlIGVsZW1lbnQgaXMgY2xvc2VkIChtYWtlcyBzdXJlIHRyYW5zaXRpb25lbmQgZ2V0cyB0cmlnZ2VyZWQpXHJcbiAgJi5oYXMtdHJhbnNpdGlvbi1wdXNoIHtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gIH1cclxuXHJcbiAgLy8gQ29uc2lkZXIgZWxlbWVudCAmIGNvbnRlbnQsIG5lc3RlZCBpbiBhbm90aGVyIGNvbnRlbnRcclxuICAub2ZmLWNhbnZhcy5pcy1vcGVuIHtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIEFkZHMgc3R5bGVzIHRoYXQgcmV2ZWFsIGFuIG9mZi1jYW52YXMgcGFuZWwuXHJcbkBtaXhpbiBvZmYtY2FudmFzLXJldmVhbChcclxuJHBvc2l0aW9uOiBsZWZ0LFxyXG4kemluZGV4OiAkb2ZmY2FudmFzLXJldmVhbC16aW5kZXgsXHJcbiRjb250ZW50OiAkbWFpbmNvbnRlbnQtY2xhc3MsXHJcbiRicmVha3BvaW50OiBzbWFsbFxyXG4pIHtcclxuICB0cmFuc2Zvcm06IG5vbmU7XHJcbiAgei1pbmRleDogJHppbmRleDtcclxuICB0cmFuc2l0aW9uOiBub25lO1xyXG4gIHZpc2liaWxpdHk6IHZpc2libGU7XHJcblxyXG4gIEBpZiBub3QgJG9mZmNhbnZhcy1maXhlZC1yZXZlYWwge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIH1cclxuXHJcbiAgLmNsb3NlLWJ1dHRvbiB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gIH1cclxuXHJcbiAgLy8gQ29uc2lkZXIgcmV2ZWFsZWQgZWxlbWVudCBpcyBuZXN0ZWQgaW4gY29udGVudFxyXG4gIC4jeyRtYWluY29udGVudC1jbGFzc30gJiB7XHJcbiAgICB0cmFuc2Zvcm06IG5vbmU7XHJcbiAgfVxyXG5cclxuICBAYXQtcm9vdCAuI3skY29udGVudH0uaGFzLXJldmVhbC0jeyRwb3NpdGlvbn0ge1xyXG4gICAgbWFyZ2luLSN7JHBvc2l0aW9ufTogLXpmLWdldC1icC12YWwoJG9mZmNhbnZhcy1zaXplcywgJGJyZWFrcG9pbnQpO1xyXG4gIH1cclxuXHJcbiAgLy8gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgKHByaW9yIHRvIHY2LjQpXHJcbiAgJiB+IC4jeyRjb250ZW50fSB7XHJcbiAgICBtYXJnaW4tI3skcG9zaXRpb259OiAtemYtZ2V0LWJwLXZhbCgkb2ZmY2FudmFzLXNpemVzLCAkYnJlYWtwb2ludCk7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gT3ZlcnJpZGVzIHRoZSBvZmYtY2FudmFzIHN0eWxlc1xyXG5AbWl4aW4gaW4tY2FudmFzKCkge1xyXG4gIHZpc2liaWxpdHk6IHZpc2libGU7XHJcbiAgaGVpZ2h0OiBhdXRvO1xyXG4gIHBvc2l0aW9uOiBzdGF0aWM7XHJcbiAgYmFja2dyb3VuZDogaW5oZXJpdDtcclxuICB3aWR0aDogaW5oZXJpdDtcclxuICBvdmVyZmxvdzogaW5oZXJpdDtcclxuICB0cmFuc2l0aW9uOiBpbmhlcml0O1xyXG5cclxuICAvLyBJbmNyZWFzZSBDU1Mgc3BlY2lmaWNpdHlcclxuICAmLnBvc2l0aW9uLWxlZnQsXHJcbiAgJi5wb3NpdGlvbi1yaWdodCxcclxuICAmLnBvc2l0aW9uLXRvcCxcclxuICAmLnBvc2l0aW9uLWJvdHRvbSB7XHJcbiAgICBib3gtc2hhZG93OiBub25lO1xyXG4gICAgdHJhbnNmb3JtOiBub25lO1xyXG4gIH1cclxuXHJcbiAgLmNsb3NlLWJ1dHRvbiB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gIH1cclxufVxyXG5cclxuQG1peGluIGZvdW5kYXRpb24tb2ZmLWNhbnZhcyB7XHJcbiAgQGluY2x1ZGUgb2ZmLWNhbnZhcy1iYXNpY3M7XHJcblxyXG4gIC8vIE9mZi1jYW52YXMgd3JhcHBlclxyXG4gIC5vZmYtY2FudmFzLXdyYXBwZXIge1xyXG4gICAgQGluY2x1ZGUgb2ZmLWNhbnZhcy13cmFwcGVyO1xyXG4gIH1cclxuXHJcbiAgLy8gT2ZmLWNhbnZhcyBjb250YWluZXJcclxuICAub2ZmLWNhbnZhcyB7XHJcbiAgICBAaW5jbHVkZSBvZmYtY2FudmFzLWJhc2U7XHJcblxyXG4gICAgLy8gRm9yY2UgcG9zaXRpb24gYWJzb2x1dGUgZm9yIG5lc3RlZCBvZmYtY2FudmFzIGJlY2F1c2UgZml4ZWQgZG9lc24ndCB3b3JrIGZvciBwdXNoIHRyYW5zaXRpb24gd2l0aGluIHRoZSB0cmFuc2Zvcm0gc2NvcGUuXHJcbiAgICBAYXQtcm9vdCAuI3skbWFpbmNvbnRlbnQtY2xhc3N9ICYge1xyXG4gICAgICAvLyBOT1RFOiBzaW5jZSBvdmVybGFwIHRyYW5zaXRpb24gaXMgY3VycmVudGx5IGZvcmNlZCBpZiBuZXN0ZWQsIHRoZXJlJ3Mgbm8gbmVlZCB0byBmb3JjZSBwb3NpdGlvbiBhYnNvbHV0ZSB1bnRpbCBuZXN0ZWQgcHVzaCB0cmFuc2l0aW9uIGlzIHN1cHBvcnRlZC5cclxuICAgICAgLy8gcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gT2ZmLWNhbnZhcyBjb250YWluZXIgd2l0aCBhYnNvbHV0ZSBwb3NpdGlvblxyXG4gIC5vZmYtY2FudmFzLWFic29sdXRlIHtcclxuICAgIEBpbmNsdWRlIG9mZi1jYW52YXMtYmFzZSgkZml4ZWQ6IGZhbHNlKTtcclxuICB9XHJcblxyXG4gIC8vIE9mZi1jYW52YXMgcG9zaXRpb24gY2xhc3Nlc1xyXG4gIC5wb3NpdGlvbi1sZWZ0ICAgIHsgQGluY2x1ZGUgb2ZmLWNhbnZhcy1wb3NpdGlvbihsZWZ0LCAgIGhvcml6b250YWwpOyB9XHJcbiAgLnBvc2l0aW9uLXJpZ2h0ICAgeyBAaW5jbHVkZSBvZmYtY2FudmFzLXBvc2l0aW9uKHJpZ2h0LCAgaG9yaXpvbnRhbCk7IH1cclxuICAucG9zaXRpb24tdG9wICAgICB7IEBpbmNsdWRlIG9mZi1jYW52YXMtcG9zaXRpb24odG9wLCAgICB2ZXJ0aWNhbCk7IH1cclxuICAucG9zaXRpb24tYm90dG9tICB7IEBpbmNsdWRlIG9mZi1jYW52YXMtcG9zaXRpb24oYm90dG9tLCB2ZXJ0aWNhbCk7IH1cclxuXHJcbiAgLm9mZi1jYW52YXMtY29udGVudCB7XHJcbiAgICBAaW5jbHVkZSBvZmYtY2FudmFzLWNvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICAvLyBSZXZlYWwgb2ZmLWNhbnZhcyBwYW5lbCBvbiBsYXJnZXIgc2NyZWVuc1xyXG4gIEBlYWNoICRuYW1lLCAkdmFsdWUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XHJcbiAgICBAaWYgJG5hbWUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xyXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XHJcbiAgICAgICAgLnBvc2l0aW9uLWxlZnQucmV2ZWFsLWZvci0jeyRuYW1lfSB7XHJcbiAgICAgICAgICBAaW5jbHVkZSBvZmYtY2FudmFzLXJldmVhbChsZWZ0LCAkb2ZmY2FudmFzLXJldmVhbC16aW5kZXgsICRtYWluY29udGVudC1jbGFzcywgJG5hbWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLnBvc2l0aW9uLXJpZ2h0LnJldmVhbC1mb3ItI3skbmFtZX0ge1xyXG4gICAgICAgICAgQGluY2x1ZGUgb2ZmLWNhbnZhcy1yZXZlYWwocmlnaHQsICRvZmZjYW52YXMtcmV2ZWFsLXppbmRleCwgJG1haW5jb250ZW50LWNsYXNzLCAkbmFtZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAucG9zaXRpb24tdG9wLnJldmVhbC1mb3ItI3skbmFtZX0ge1xyXG4gICAgICAgICAgQGluY2x1ZGUgb2ZmLWNhbnZhcy1yZXZlYWwodG9wLCAkb2ZmY2FudmFzLXJldmVhbC16aW5kZXgsICRtYWluY29udGVudC1jbGFzcywgJG5hbWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLnBvc2l0aW9uLWJvdHRvbS5yZXZlYWwtZm9yLSN7JG5hbWV9IHtcclxuICAgICAgICAgIEBpbmNsdWRlIG9mZi1jYW52YXMtcmV2ZWFsKGJvdHRvbSwgJG9mZmNhbnZhcy1yZXZlYWwtemluZGV4LCAkbWFpbmNvbnRlbnQtY2xhc3MsICRuYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIE1vdmUgaW4tY2FudmFzIGZvciBsYXJnZXIgc2NyZWVuc1xyXG4gIEBlYWNoICRuYW1lLCAkdmFsdWUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XHJcbiAgICBAaWYgJG5hbWUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xyXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XHJcbiAgICAgICAgLm9mZi1jYW52YXMuaW4tY2FudmFzLWZvci0jeyRuYW1lfSB7XHJcbiAgICAgICAgICBAaW5jbHVkZSBpbi1jYW52YXM7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgb3JiaXRcclxuLy8vL1xyXG5cclxuLy8vIERlZmF1bHQgY29sb3IgZm9yIE9yYml0J3MgYnVsbGV0cy5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRvcmJpdC1idWxsZXQtYmFja2dyb3VuZDogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgYWN0aXZlIGNvbG9yIGZvciBPcmJpdCdzIGJ1bGxldHMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kb3JiaXQtYnVsbGV0LWJhY2tncm91bmQtYWN0aXZlOiAkZGFyay1ncmF5ICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgZGlhbWV0ZXIgZm9yIE9yYml0J3MgYnVsbGV0cy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kb3JiaXQtYnVsbGV0LWRpYW1ldGVyOiAxLjJyZW0gIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBtYXJnaW4gYmV0d2VlbiBPcmJpdCdzIGJ1bGxldHMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJG9yYml0LWJ1bGxldC1tYXJnaW46IDAuMXJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGRpc3RhbmNlIGZyb20gc2xpZGUgcmVnaW9uIGZvciBPcmJpdCdzIGJ1bGxldHMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJG9yYml0LWJ1bGxldC1tYXJnaW4tdG9wOiAwLjhyZW0gIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBib3R0b20gbWFyZ2luIGZyb20gT3JiaXQncyBidWxsZXRzIHRvIHdoYXRldmVyIGNvbnRlbnQgbWF5IGx1cmsgYmVsb3cgaXQuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJG9yYml0LWJ1bGxldC1tYXJnaW4tYm90dG9tOiAwLjhyZW0gIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIGZvciBPcmJpdCdzIGNhcHRpb24uXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kb3JiaXQtY2FwdGlvbi1iYWNrZ3JvdW5kOiByZ2JhKCRibGFjaywgMC41KSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IHBhZGRpbmcgZm9yIE9yYml0J3MgY2FwdGlvbi5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kb3JiaXQtY2FwdGlvbi1wYWRkaW5nOiAxcmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBmb3IgT3JiaXQncyBjb250cm9scyB3aGVuIGhvdmVyZWQuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kb3JiaXQtY29udHJvbC1iYWNrZ3JvdW5kLWhvdmVyOiByZ2JhKCRibGFjaywgMC41KSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IHBhZGRpbmcgZm9yIE9yYml0J3MgY29udHJvbHMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJG9yYml0LWNvbnRyb2wtcGFkZGluZzogMXJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IHotaW5kZXggZm9yIE9yYml0J3MgY29udHJvbHMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJG9yYml0LWNvbnRyb2wtemluZGV4OiAxMCAhZGVmYXVsdDtcclxuXHJcbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIG91dGVyIE9yYml0IHdyYXBwZXIuIFRoZXNlIHN0eWxlcyBhcmUgdXNlZCBvbiB0aGUgYC5vcmJpdGAgY2xhc3MuXHJcbkBtaXhpbiBvcmJpdC13cmFwcGVyIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuXHJcbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGlubmVyIE9yYml0IHNsaWRlIGNvbnRhaW5lci4gVGhlc2Ugc3R5bGVzIGFyZSB1c2VkIG9uIHRoZSBgLm9yYml0LWNvbnRhaW5lcmAgY2xhc3MuXHJcbkBtaXhpbiBvcmJpdC1jb250YWluZXIge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBoZWlnaHQ6IDA7IC8vIFByZXZlbnQgRk9VQyBieSBub3Qgc2hvd2luZyB1bnRpbCBKUyBzZXRzIGhlaWdodFxyXG4gIG1hcmdpbjogMDtcclxuICBsaXN0LXN0eWxlOiBub25lO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbn1cclxuXHJcbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGluZGl2aWR1YWwgc2xpZGVzIG9mIGFuIE9yYml0IHNsaWRlci4gVGhlc2Ugc3R5bGVzIGFyZSB1c2VkIG9uIHRoZSBgLm9yYml0LXNsaWRlYCBjbGFzcy5cclxuQG1peGluIG9yYml0LXNsaWRlIHtcclxuICB3aWR0aDogMTAwJTtcclxuXHJcbiAgJi5uby1tb3Rpb251aSB7XHJcbiAgICAmLmlzLWFjdGl2ZSB7XHJcbiAgICAgIHRvcDogMDtcclxuICAgICAgbGVmdDogMDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBtaXhpbiBvcmJpdC1maWd1cmUge1xyXG4gIG1hcmdpbjogMDtcclxufVxyXG5cclxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIHNsaWRlIGNvbnRhaW5pbmcgYW4gaW1hZ2UuIFRoZXNlIHN0eWxlcyBhcmUgdXNlZCBvbiB0aGUgYC5vcmJpdC1pbWFnZWAgY2xhc3MuXHJcbkBtaXhpbiBvcmJpdC1pbWFnZSB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gIG1hcmdpbjogMDtcclxufVxyXG5cclxuLy8vIEFkZHMgc3R5bGVzIGZvciBhbiBvcmJpdCBzbGlkZSBjYXB0aW9uLiBUaGVzZSBzdHlsZXMgYXJlIHVzZWQgb24gdGhlIGAub3JiaXQtY2FwdGlvbmAgY2xhc3MuXHJcbkBtaXhpbiBvcmJpdC1jYXB0aW9uIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgYm90dG9tOiAwO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgcGFkZGluZzogJG9yYml0LWNhcHRpb24tcGFkZGluZztcclxuXHJcbiAgYmFja2dyb3VuZC1jb2xvcjogJG9yYml0LWNhcHRpb24tYmFja2dyb3VuZDtcclxuICBjb2xvcjogY29sb3ItcGljay1jb250cmFzdCgkb3JiaXQtY2FwdGlvbi1iYWNrZ3JvdW5kKTtcclxufVxyXG5cclxuLy8vIEFkZHMgYmFzZSBzdHlsZXMgZm9yIHRoZSBuZXh0L3ByZXZpb3VzIGJ1dHRvbnMgaW4gYW4gT3JiaXQgc2xpZGVyLiBUaGVzZSBzdHlsZXMgYXJlIHNoYXJlZCBiZXR3ZWVuIHRoZSBgLm9yYml0LW5leHRgIGFuZCBgLm9yYml0LXByZXZpb3VzYCBjbGFzc2VzIGluIHRoZSBkZWZhdWx0IENTUy5cclxuQG1peGluIG9yYml0LWNvbnRyb2wge1xyXG4gIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcclxuICBAaW5jbHVkZSB2ZXJ0aWNhbC1jZW50ZXI7XHJcbiAgei1pbmRleDogJG9yYml0LWNvbnRyb2wtemluZGV4O1xyXG4gIHBhZGRpbmc6ICRvcmJpdC1jb250cm9sLXBhZGRpbmc7XHJcbiAgY29sb3I6ICR3aGl0ZTtcclxuXHJcbiAgJjpob3ZlcixcclxuICAmOmFjdGl2ZSxcclxuICAmOmZvY3VzIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRvcmJpdC1jb250cm9sLWJhY2tncm91bmQtaG92ZXI7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBPcmJpdCBwcmV2aW91cyBidXR0b24uIFRoZXNlIHN0eWxlcyBhcmUgdXNlZCBvbiB0aGUgYC5vcmJpdC1wcmV2aW91c2AgY2xhc3MuXHJcbkBtaXhpbiBvcmJpdC1wcmV2aW91cyB7XHJcbiAgI3skZ2xvYmFsLWxlZnR9OiAwO1xyXG59XHJcblxyXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBPcmJpdCBuZXh0IGJ1dHRvbi4gVGhlc2Ugc3R5bGVzIGFyZSB1c2VkIG9uIHRoZSBgLm9yYml0LW5leHRgIGNsYXNzLlxyXG5AbWl4aW4gb3JiaXQtbmV4dCB7XHJcbiAgI3skZ2xvYmFsLWxlZnR9OiBhdXRvO1xyXG4gICN7JGdsb2JhbC1yaWdodH06IDA7XHJcbn1cclxuXHJcbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBjb250YWluZXIgb2YgT3JiaXQgYnVsbGV0cy4gLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgT3JiaXQgcHJldmlvdXMgYnV0dG9uLiBUaGVzZSBzdHlsZXMgYXJlIHVzZWQgb24gdGhlIGAub3JiaXQtYnVsbGV0c2AgY2xhc3MuXHJcbkBtaXhpbiBvcmJpdC1idWxsZXRzIHtcclxuICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIG1hcmdpbi10b3A6ICRvcmJpdC1idWxsZXQtbWFyZ2luLXRvcDtcclxuICBtYXJnaW4tYm90dG9tOiAkb3JiaXQtYnVsbGV0LW1hcmdpbi1ib3R0b207XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG5cclxuICBidXR0b24ge1xyXG4gICAgd2lkdGg6ICRvcmJpdC1idWxsZXQtZGlhbWV0ZXI7XHJcbiAgICBoZWlnaHQ6ICRvcmJpdC1idWxsZXQtZGlhbWV0ZXI7XHJcbiAgICBtYXJnaW46ICRvcmJpdC1idWxsZXQtbWFyZ2luO1xyXG5cclxuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRvcmJpdC1idWxsZXQtYmFja2dyb3VuZDtcclxuXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG9yYml0LWJ1bGxldC1iYWNrZ3JvdW5kLWFjdGl2ZTtcclxuICAgIH1cclxuXHJcbiAgICAmLmlzLWFjdGl2ZSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRvcmJpdC1idWxsZXQtYmFja2dyb3VuZC1hY3RpdmU7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1vcmJpdCB7XHJcbiAgLm9yYml0IHtcclxuICAgIEBpbmNsdWRlIG9yYml0LXdyYXBwZXI7XHJcbiAgfVxyXG5cclxuICAub3JiaXQtY29udGFpbmVyIHtcclxuICAgIEBpbmNsdWRlIG9yYml0LWNvbnRhaW5lcjtcclxuICB9XHJcblxyXG4gIC5vcmJpdC1zbGlkZSB7XHJcbiAgICBAaW5jbHVkZSBvcmJpdC1zbGlkZTtcclxuICB9XHJcblxyXG4gIC5vcmJpdC1maWd1cmUge1xyXG4gICAgQGluY2x1ZGUgb3JiaXQtZmlndXJlO1xyXG4gIH1cclxuXHJcbiAgLm9yYml0LWltYWdlIHtcclxuICAgIEBpbmNsdWRlIG9yYml0LWltYWdlO1xyXG4gIH1cclxuXHJcbiAgLm9yYml0LWNhcHRpb24ge1xyXG4gICAgQGluY2x1ZGUgb3JiaXQtY2FwdGlvbjtcclxuICB9XHJcblxyXG4gICVvcmJpdC1jb250cm9sIHtcclxuICAgIEBpbmNsdWRlIG9yYml0LWNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICAub3JiaXQtcHJldmlvdXMge1xyXG4gICAgQGV4dGVuZCAlb3JiaXQtY29udHJvbDtcclxuICAgIEBpbmNsdWRlIG9yYml0LXByZXZpb3VzO1xyXG4gIH1cclxuXHJcbiAgLm9yYml0LW5leHQge1xyXG4gICAgQGV4dGVuZCAlb3JiaXQtY29udHJvbDtcclxuICAgIEBpbmNsdWRlIG9yYml0LW5leHQ7XHJcbiAgfVxyXG5cclxuICAub3JiaXQtYnVsbGV0cyB7XHJcbiAgICBAaW5jbHVkZSBvcmJpdC1idWxsZXRzO1xyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgcGFnaW5hdGlvblxyXG4vLy8vXHJcblxyXG4vLy8gRm9udCBzaXplIG9mIHBhZ2luYXRpb24gaXRlbXMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHBhZ2luYXRpb24tZm9udC1zaXplOiByZW0tY2FsYygxNCkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBib3R0b20gbWFyZ2luIG9mIHRoZSBwYWdpbmF0aW9uIG9iamVjdC5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kcGFnaW5hdGlvbi1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbiAhZGVmYXVsdDtcclxuXHJcbi8vLyBUZXh0IGNvbG9yIG9mIHBhZ2luYXRpb24gaXRlbXMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kcGFnaW5hdGlvbi1pdGVtLWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XHJcblxyXG4vLy8gUGFkZGluZyBpbnNpZGUgb2YgcGFnaW5hdGlvbiBpdGVtcy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kcGFnaW5hdGlvbi1pdGVtLXBhZGRpbmc6IHJlbS1jYWxjKDMgMTApICFkZWZhdWx0O1xyXG5cclxuLy8vIFJpZ2h0IG1hcmdpbiB0byBzZXBhcmF0ZSBwYWdpbmF0aW9uIGl0ZW1zLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRwYWdpbmF0aW9uLWl0ZW0tc3BhY2luZzogcmVtLWNhbGMoMSkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCByYWRpdXMgZm9yIHBhZ2luYXRpb24gaXRlbXMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHBhZ2luYXRpb24tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcclxuXHJcbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIHBhZ2luYXRpb24gaXRlbXMgb24gaG92ZXIuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kcGFnaW5hdGlvbi1pdGVtLWJhY2tncm91bmQtaG92ZXI6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xyXG5cclxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgcGFnaW5hdGlvbiBpdGVtIGZvciB0aGUgY3VycmVudCBwYWdlLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJHBhZ2luYXRpb24taXRlbS1iYWNrZ3JvdW5kLWN1cnJlbnQ6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xyXG5cclxuLy8vIFRleHQgY29sb3Igb2YgdGhlIHBhZ2luYXRpb24gaXRlbSBmb3IgdGhlIGN1cnJlbnQgcGFnZS5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRwYWdpbmF0aW9uLWl0ZW0tY29sb3ItY3VycmVudDogJHdoaXRlICFkZWZhdWx0O1xyXG5cclxuLy8vIFRleHQgY29sb3Igb2YgYSBkaXNhYmxlZCBwYWdpbmF0aW9uIGl0ZW0uXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kcGFnaW5hdGlvbi1pdGVtLWNvbG9yLWRpc2FibGVkOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQ29sb3Igb2YgdGhlIGVsbGlwc2lzIGluIGEgcGFnaW5hdGlvbiBtZW51LlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJHBhZ2luYXRpb24tZWxsaXBzaXMtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcclxuXHJcbi8vLyBJZiBgZmFsc2VgLCBkb24ndCBkaXNwbGF5IHBhZ2UgbnVtYmVyIGxpbmtzIG9uIG1vYmlsZSwgb25seSBuZXh0L3ByZXZpb3VzIGxpbmtzXHJcbi8vLyBhbmQgb3B0aW9uYWxseSBjdXJyZW50IHBhZ2UgbnVtYmVyLlxyXG4vLy8gQHR5cGUgQm9vbGVhblxyXG4kcGFnaW5hdGlvbi1tb2JpbGUtaXRlbXM6IGZhbHNlICFkZWZhdWx0O1xyXG5cclxuLy8vIElmIGB0cnVlYCwgZGlzcGxheSB0aGUgY3VycmVudCBwYWdlIG51bWJlciBvbiBtb2JpbGUgZXZlbiBpZiBgJHBhZ2luYXRpb24tbW9iaWxlLWl0ZW1zYCBpcyBzZXQgdG8gYGZhbHNlYC5cclxuLy8vIFRoaXMgcGFyYW1ldGVyIHdpbGwgb25seSBvdmVycmlkZSB0aGUgdmlzaWJpbGl0eSBzZXR0aW5nIG9mIHRoZSBjdXJyZW50IGl0ZW0gZm9yIGAkcGFnaW5hdGlvbi1tb2JpbGUtaXRlbXM6IGZhbHNlO2AsXHJcbi8vLyBpdCB3aWxsIG5vdCBhZmZlY3QgdGhlIGN1cnJlbnQgcGFnZSBudW1iZXIgdmlzaWJpbGl0eSB3aGVuIGAkcGFnaW5hdGlvbi1tb2JpbGUtaXRlbXNgIGlzIHNldCB0byBgdHJ1ZWAuXHJcbi8vLyBAdHlwZSBCb29sZWFuXHJcbiRwYWdpbmF0aW9uLW1vYmlsZS1jdXJyZW50LWl0ZW06IGZhbHNlICFkZWZhdWx0O1xyXG5cclxuLy8vIElmIGB0cnVlYCwgYXJyb3dzIGFyZSBhZGRlZCB0byB0aGUgbmV4dCBhbmQgcHJldmlvdXMgbGlua3Mgb2YgcGFnaW5hdGlvbi5cclxuLy8vIEB0eXBlIEJvb2xlYW5cclxuJHBhZ2luYXRpb24tYXJyb3dzOiB0cnVlICFkZWZhdWx0O1xyXG5cclxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIHBhZ2luYXRpb24gY29udGFpbmVyLiBBcHBseSB0aGlzIHRvIGEgYDx1bD5gLlxyXG5AbWl4aW4gcGFnaW5hdGlvbi1jb250YWluZXIgKFxyXG4gICRtYXJnaW4tYm90dG9tOiAkcGFnaW5hdGlvbi1tYXJnaW4tYm90dG9tLFxyXG4gICRmb250LXNpemU6ICRwYWdpbmF0aW9uLWZvbnQtc2l6ZSxcclxuICAkc3BhY2luZzogJHBhZ2luYXRpb24taXRlbS1zcGFjaW5nLFxyXG4gICRyYWRpdXM6ICRwYWdpbmF0aW9uLXJhZGl1cyxcclxuICAkY29sb3I6ICRwYWdpbmF0aW9uLWl0ZW0tY29sb3IsXHJcbiAgJHBhZGRpbmc6ICRwYWdpbmF0aW9uLWl0ZW0tcGFkZGluZyxcclxuICAkYmFja2dyb3VuZC1ob3ZlcjogJHBhZ2luYXRpb24taXRlbS1iYWNrZ3JvdW5kLWhvdmVyXHJcbikge1xyXG4gIEBpbmNsdWRlIGNsZWFyZml4O1xyXG4gIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06IDA7XHJcbiAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi1ib3R0b207XHJcblxyXG4gIC8vIExpc3QgaXRlbVxyXG4gIGxpIHtcclxuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkc3BhY2luZztcclxuICAgIGJvcmRlci1yYWRpdXM6ICRyYWRpdXM7XHJcbiAgICBmb250LXNpemU6ICRmb250LXNpemU7XHJcblxyXG4gICAgQGlmICRwYWdpbmF0aW9uLW1vYmlsZS1pdGVtcyB7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIH1cclxuICAgIEBlbHNlIHtcclxuICAgICAgZGlzcGxheTogbm9uZTtcclxuXHJcbiAgICAgICY6bGFzdC1jaGlsZCxcclxuICAgICAgJjpmaXJzdC1jaGlsZCB7XHJcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBAaWYgJHBhZ2luYXRpb24tbW9iaWxlLWN1cnJlbnQtaXRlbSB7XHJcbiAgICAgICAgJi5jdXJyZW50IHtcclxuICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XHJcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBQYWdlIGxpbmtzXHJcbiAgYSxcclxuICBidXR0b24ge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBwYWRkaW5nOiAkcGFkZGluZztcclxuICAgIGJvcmRlci1yYWRpdXM6ICRyYWRpdXM7XHJcbiAgICBjb2xvcjogJGNvbG9yO1xyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZC1ob3ZlcjtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGN1cnJlbnQgcGFnaW5hdGlvbiBpdGVtLiBBcHBseSB0aGlzIHRvIGFuIGA8YT5gLlxyXG5AbWl4aW4gcGFnaW5hdGlvbi1pdGVtLWN1cnJlbnQgKFxyXG4gICRwYWRkaW5nOiAkcGFnaW5hdGlvbi1pdGVtLXBhZGRpbmcsXHJcbiAgJGJhY2tncm91bmQtY3VycmVudDogJHBhZ2luYXRpb24taXRlbS1iYWNrZ3JvdW5kLWN1cnJlbnQsXHJcbiAgJGNvbG9yLWN1cnJlbnQ6ICRwYWdpbmF0aW9uLWl0ZW0tY29sb3ItY3VycmVudFxyXG4pIHtcclxuICBwYWRkaW5nOiAkcGFkZGluZztcclxuICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZC1jdXJyZW50O1xyXG4gIGNvbG9yOiAkY29sb3ItY3VycmVudDtcclxuICBjdXJzb3I6IGRlZmF1bHQ7XHJcbn1cclxuXHJcbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBkaXNhYmxlZCBwYWdpbmF0aW9uIGl0ZW0uIEFwcGx5IHRoaXMgdG8gYW4gYDxhPmAuXHJcbkBtaXhpbiBwYWdpbmF0aW9uLWl0ZW0tZGlzYWJsZWQgKFxyXG4gICRwYWRkaW5nOiAkcGFnaW5hdGlvbi1pdGVtLXBhZGRpbmcsXHJcbiAgJGNvbG9yOiAkcGFnaW5hdGlvbi1pdGVtLWNvbG9yLWRpc2FibGVkXHJcbikge1xyXG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xyXG4gIGNvbG9yOiAkY29sb3I7XHJcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcclxuXHJcbiAgJjpob3ZlciB7XHJcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBBZGRzIHN0eWxlcyBmb3IgYW4gZWxsaXBzaXMgZm9yIHVzZSBpbiBhIHBhZ2luYXRpb24gbGlzdC5cclxuQG1peGluIHBhZ2luYXRpb24tZWxsaXBzaXMgKFxyXG4gICRwYWRkaW5nOiAkcGFnaW5hdGlvbi1pdGVtLXBhZGRpbmcsXHJcbiAgJGNvbG9yOiAkcGFnaW5hdGlvbi1lbGxpcHNpcy1jb2xvclxyXG4pIHtcclxuICBwYWRkaW5nOiAkcGFkZGluZztcclxuICBjb250ZW50OiAnXFwyMDI2JztcclxuICBjb2xvcjogJGNvbG9yO1xyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1wYWdpbmF0aW9uIHtcclxuICAucGFnaW5hdGlvbiB7XHJcbiAgICBAaW5jbHVkZSBwYWdpbmF0aW9uLWNvbnRhaW5lcjtcclxuXHJcbiAgICAuY3VycmVudCB7XHJcbiAgICAgIEBpbmNsdWRlIHBhZ2luYXRpb24taXRlbS1jdXJyZW50O1xyXG4gICAgfVxyXG5cclxuICAgIC5kaXNhYmxlZCB7XHJcbiAgICAgIEBpbmNsdWRlIHBhZ2luYXRpb24taXRlbS1kaXNhYmxlZDtcclxuICAgIH1cclxuXHJcbiAgICAuZWxsaXBzaXM6OmFmdGVyIHtcclxuICAgICAgQGluY2x1ZGUgcGFnaW5hdGlvbi1lbGxpcHNpcztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpZiAkcGFnaW5hdGlvbi1hcnJvd3Mge1xyXG4gICAgLnBhZ2luYXRpb24tcHJldmlvdXMgYTo6YmVmb3JlLFxyXG4gICAgLnBhZ2luYXRpb24tcHJldmlvdXMuZGlzYWJsZWQ6OmJlZm9yZSB7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06IDAuNXJlbTtcclxuICAgICAgY29udGVudDogJ1xcMDBhYic7XHJcbiAgICB9XHJcblxyXG4gICAgLnBhZ2luYXRpb24tbmV4dCBhOjphZnRlcixcclxuICAgIC5wYWdpbmF0aW9uLW5leHQuZGlzYWJsZWQ6OmFmdGVyIHtcclxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAwLjVyZW07XHJcbiAgICAgIGNvbnRlbnQ6ICdcXDAwYmInO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgcHJvZ3Jlc3MgYmFyIGNvbnRhaW5lci5cclxuQG1peGluIHByb2dyZXNzLWNvbnRhaW5lciB7XHJcbiAgaGVpZ2h0OiAkcHJvZ3Jlc3MtaGVpZ2h0O1xyXG4gIG1hcmdpbi1ib3R0b206ICRwcm9ncmVzcy1tYXJnaW4tYm90dG9tO1xyXG4gIGJvcmRlci1yYWRpdXM6ICRwcm9ncmVzcy1yYWRpdXM7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogJHByb2dyZXNzLWJhY2tncm91bmQ7XHJcbn1cclxuXHJcbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGlubmVyIG1ldGVyIG9mIGEgcHJvZ3Jlc3MgYmFyLlxyXG5AbWl4aW4gcHJvZ3Jlc3MtbWV0ZXIge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBkaXNwbGF5OiBibG9jaztcclxuICB3aWR0aDogMCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICRwcm9ncmVzcy1tZXRlci1iYWNrZ3JvdW5kO1xyXG5cclxuICBAaWYgaGFzLXZhbHVlKCRwcm9ncmVzcy1yYWRpdXMpIHtcclxuICAgIGJvcmRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIEFkZHMgc3R5bGVzIGZvciB0ZXh0IGluIHRoZSBwcm9ncmVzcyBtZXRlci5cclxuQG1peGluIHByb2dyZXNzLW1ldGVyLXRleHQge1xyXG4gIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlcjtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcclxuICBmb250LXdlaWdodDogYm9sZDtcclxuICBjb2xvcjogJHdoaXRlO1xyXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcblxyXG4gIEBpZiBoYXMtdmFsdWUoJHByb2dyZXNzLXJhZGl1cykge1xyXG4gICAgYm9yZGVyLXJhZGl1czogJHByb2dyZXNzLXJhZGl1cztcclxuICB9XHJcbn1cclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLXByb2dyZXNzLWJhciB7XHJcbiAgLy8gUHJvZ3Jlc3MgYmFyXHJcbiAgLnByb2dyZXNzIHtcclxuICAgIEBpbmNsdWRlIHByb2dyZXNzLWNvbnRhaW5lcjtcclxuXHJcbiAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRmb3VuZGF0aW9uLXBhbGV0dGUge1xyXG4gICAgICAmLiN7JG5hbWV9IHtcclxuICAgICAgICAucHJvZ3Jlc3MtbWV0ZXIge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gSW5uZXIgbWV0ZXJcclxuICAucHJvZ3Jlc3MtbWV0ZXIge1xyXG4gICAgQGluY2x1ZGUgcHJvZ3Jlc3MtbWV0ZXI7XHJcbiAgfVxyXG5cclxuICAvLyBJbm5lciBtZXRlciB0ZXh0XHJcbiAgLnByb2dyZXNzLW1ldGVyLXRleHQge1xyXG4gICAgQGluY2x1ZGUgcHJvZ3Jlc3MtbWV0ZXItdGV4dDtcclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIHJldmVhbFxyXG4vLy8vXHJcblxyXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIG9mIGEgbW9kYWwuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kcmV2ZWFsLWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IHdpZHRoIG9mIGEgbW9kYWwsIHdpdGggbm8gY2xhc3MgYXBwbGllZC5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kcmV2ZWFsLXdpZHRoOiA2MDBweCAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IG1heGltdW0gd2lkdGggb2YgYSBtb2RhbC5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kcmV2ZWFsLW1heC13aWR0aDogJGdsb2JhbC13aWR0aCAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IHBhZGRpbmcgaW5zaWRlIGEgbW9kYWwuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHJldmVhbC1wYWRkaW5nOiAkZ2xvYmFsLXBhZGRpbmcgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBib3JkZXIgYXJvdW5kIGEgbW9kYWwuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHJldmVhbC1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCByYWRpdXMgZm9yIG1vZGFsLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRyZXZlYWwtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcclxuXHJcbi8vLyB6LWluZGV4IGZvciBtb2RhbHMuIFRoZSBvdmVybGF5IHVzZXMgdGhpcyB2YWx1ZSwgd2hpbGUgdGhlIG1vZGFsIGl0c2VsZiB1c2VzIHRoaXMgdmFsdWUgcGx1cyBvbmUuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHJldmVhbC16aW5kZXg6IDEwMDUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBtb2RhbCBvdmVybGF5cy5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRyZXZlYWwtb3ZlcmxheS1iYWNrZ3JvdW5kOiByZ2JhKCRibGFjaywgMC40NSkgIWRlZmF1bHQ7XHJcblxyXG5cclxuLy8gUGxhY2Vob2xkZXIgc2VsZWN0b3IgZm9yIG1lZGl1bS1hbmQtdXAgbW9kYWxzXHJcbi8vIFByZXZlbnRzIGR1cGxpY2F0ZSBDU1Mgd2hlbiBkZWZpbmluZyBtdWx0aXBsZSBSZXZlYWwgc2l6ZXNcclxuQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcclxuICAvLyAlcmV2ZWFsLWNlbnRlcmVkIHtcclxuICAgIHJpZ2h0OiBhdXRvO1xyXG4gICAgbGVmdDogYXV0bztcclxuICAgIG1hcmdpbjogMCBhdXRvO1xyXG4gIC8vIH1cclxufVxyXG5cclxuXHJcbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBtb2RhbCBvdmVybGF5LlxyXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQgWyRyZXZlYWwtb3ZlcmxheS1iYWNrZ3JvdW5kXSAtIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIG92ZXJsYXkuXHJcbkBtaXhpbiByZXZlYWwtb3ZlcmxheSgkYmFja2dyb3VuZDogJHJldmVhbC1vdmVybGF5LWJhY2tncm91bmQpIHtcclxuICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgdG9wOiAwO1xyXG4gIHJpZ2h0OiAwO1xyXG4gIGJvdHRvbTogMDtcclxuICBsZWZ0OiAwO1xyXG4gIHotaW5kZXg6ICRyZXZlYWwtemluZGV4O1xyXG5cclxuICBkaXNwbGF5OiBub25lO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xyXG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcclxufVxyXG5cclxuLy8vIEFkZHMgYmFzZSBzdHlsZXMgZm9yIGEgbW9kYWwuXHJcbkBtaXhpbiByZXZlYWwtbW9kYWwtYmFzZSB7XHJcbiAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xyXG4gIHotaW5kZXg6ICRyZXZlYWwtemluZGV4ICsgMTtcclxuICAvLyBXb3JrYXJvdW5kIGFuZHJvaWQgYnJvd3NlciB6LWluZGV4IGJ1Z1xyXG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcclxuXHJcbiAgZGlzcGxheTogbm9uZTtcclxuICBwYWRkaW5nOiAkcmV2ZWFsLXBhZGRpbmc7XHJcblxyXG4gIGJvcmRlcjogJHJldmVhbC1ib3JkZXI7XHJcbiAgYm9yZGVyLXJhZGl1czogJHJldmVhbC1yYWRpdXM7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogJHJldmVhbC1iYWNrZ3JvdW5kO1xyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xyXG4gICAgbWluLWhlaWdodDogMDtcclxuICB9XHJcblxyXG4gIC8vIE1ha2Ugc3VyZSByb3dzIGRvbid0IGhhdmUgYSBtaW4td2lkdGggb24gdGhlbVxyXG4gIC5jb2x1bW4ge1xyXG4gICAgbWluLXdpZHRoOiAwO1xyXG4gIH1cclxuXHJcbiAgLy8gU3RyaXAgbWFyZ2lucyBmcm9tIHRoZSBsYXN0IGl0ZW0gaW4gdGhlIG1vZGFsXHJcbiAgPiA6bGFzdC1jaGlsZCB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIEFkanVzdHMgdGhlIHdpZHRoIG9mIGEgbW9kYWwuXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJHdpZHRoIC0gV2lkdGggb2YgdGhlIG1vZGFsLiBHZW5lcmFsbHkgYSBwZXJjZW50YWdlLlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRtYXgtd2lkdGggWyRyZXZlYWwtbWF4LXdpZHRoXSAtIE1heGltdW0gd2lkdGggb2YgdGhlIG1vZGFsLlxyXG5AbWl4aW4gcmV2ZWFsLW1vZGFsLXdpZHRoKFxyXG4gICR3aWR0aDogJHJldmVhbC13aWR0aCxcclxuICAkbWF4LXdpZHRoOiAkcmV2ZWFsLW1heC13aWR0aFxyXG4pIHtcclxuICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xyXG4gICAgLy8gQGV4dGVuZCAlcmV2ZWFsLWNlbnRlcmVkO1xyXG4gICAgd2lkdGg6ICR3aWR0aDtcclxuICAgIG1heC13aWR0aDogJG1heC13aWR0aDtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBDcmVhdGVzIGEgZnVsbC1zY3JlZW4gbW9kYWwsIHdoaWNoIHN0cmV0Y2hlcyB0aGUgZnVsbCB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSB3aW5kb3cuXHJcbkBtaXhpbiByZXZlYWwtbW9kYWwtZnVsbHNjcmVlbiB7XHJcbiAgdG9wOiAwO1xyXG4gIGxlZnQ6IDA7XHJcblxyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIG1heC13aWR0aDogbm9uZTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMDB2aDsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1kdXBsaWNhdGUtcHJvcGVydGllc1xyXG4gIG1pbi1oZWlnaHQ6IDEwMHZoO1xyXG4gIG1hcmdpbi1sZWZ0OiAwO1xyXG5cclxuICBib3JkZXI6IDA7XHJcbiAgYm9yZGVyLXJhZGl1czogMDtcclxufVxyXG5cclxuQG1peGluIGZvdW5kYXRpb24tcmV2ZWFsIHtcclxuICAvLyBbVE9ET10gSXMgdGhpcyBuZWNlc3Nhcnk/XHJcbiAgYm9keS5pcy1yZXZlYWwtb3BlbiB7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tcXVhbGlmeWluZy1lbGVtZW50c1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gIC8vIGh0bWwgZ2V0cyB0aGlzIGNsYXNzIG9ubHkgaW4gaU9TXHJcbiAgaHRtbC5pcy1yZXZlYWwtb3BlbixcclxuICBodG1sLmlzLXJldmVhbC1vcGVuIGJvZHkge1xyXG4gICAgbWluLWhlaWdodDogMTAwJTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcclxuICB9XHJcblxyXG4gIC8vIE92ZXJsYXlcclxuICAucmV2ZWFsLW92ZXJsYXkge1xyXG4gICAgQGluY2x1ZGUgcmV2ZWFsLW92ZXJsYXk7XHJcbiAgfVxyXG5cclxuICAvLyBNb2RhbCBjb250YWluZXJcclxuICAucmV2ZWFsIHtcclxuICAgIEBpbmNsdWRlIHJldmVhbC1tb2RhbC1iYXNlO1xyXG4gICAgQGluY2x1ZGUgcmV2ZWFsLW1vZGFsLXdpZHRoKCRyZXZlYWwtd2lkdGgpO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgdG9wOiAxMDBweDtcclxuICAgIG1hcmdpbi1yaWdodDogYXV0bztcclxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gICAgb3ZlcmZsb3cteTogYXV0bztcclxuXHJcbiAgICAvLyBSZW1vdmUgcGFkZGluZ1xyXG4gICAgJi5jb2xsYXBzZSB7XHJcbiAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU2l6aW5nIGNsYXNzZXNcclxuICAgICYudGlueSAgeyBAaW5jbHVkZSByZXZlYWwtbW9kYWwtd2lkdGgoMzAlKTsgfVxyXG4gICAgJi5zbWFsbCB7IEBpbmNsdWRlIHJldmVhbC1tb2RhbC13aWR0aCg1MCUpOyB9XHJcbiAgICAmLmxhcmdlIHsgQGluY2x1ZGUgcmV2ZWFsLW1vZGFsLXdpZHRoKDkwJSk7IH1cclxuXHJcbiAgICAvLyBGdWxsLXNjcmVlbiBtb2RlXHJcbiAgICAmLmZ1bGwge1xyXG4gICAgICBAaW5jbHVkZSByZXZlYWwtbW9kYWwtZnVsbHNjcmVlbjtcclxuICAgIH1cclxuXHJcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCQtemYtemVyby1icmVha3BvaW50IG9ubHkpIHtcclxuICAgICAgQGluY2x1ZGUgcmV2ZWFsLW1vZGFsLWZ1bGxzY3JlZW47XHJcbiAgICB9XHJcblxyXG4gICAgJi53aXRob3V0LW92ZXJsYXkge1xyXG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vIFtUT0RPXSBDaGVjayBob3cgcGx1Z2luIGNvbmZpcm1zIGRpc2FibGVkIG9yIHZlcnRpY2FsIHN0YXR1c1xyXG4vLyBbVE9ET10gQ2hlY2sgaWYgdHJhbnNpdGlvbjogYWxsOyBpcyBuZWNlc3NhcnlcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBzbGlkZXJcclxuLy8vL1xyXG5cclxuLy8vIERlZmF1bHQgc2xpZGVyIHdpZHRoIG9mIGEgdmVydGljYWwgc2xpZGVyLiAoRG9lc24ndCBhcHBseSB0byB0aGUgbmF0aXZlIHNsaWRlci4pXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHNsaWRlci13aWR0aC12ZXJ0aWNhbDogMC41cmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIFRyYW5zaXRpb24gcHJvcGVydGllcyB0byBhcHBseSB0byB0aGUgc2xpZGVyIGhhbmRsZSBhbmQgZmlsbC4gKERvZXNuJ3QgYXBwbHkgdG8gdGhlIG5hdGl2ZSBzbGlkZXIuKVxyXG4vLy8gQHR5cGUgVHJhbnNpdGlvblxyXG4kc2xpZGVyLXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0ICFkZWZhdWx0O1xyXG5cclxuLy8vIEFkZHMgdGhlIGdlbmVyYWwgc3R5bGVzIGZvciBzbGlkZXJzLlxyXG5AbWl4aW4gc2xpZGVyLWNvbnRhaW5lciB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGhlaWdodDogJHNsaWRlci1oZWlnaHQ7XHJcbiAgbWFyZ2luLXRvcDogMS4yNXJlbTtcclxuICBtYXJnaW4tYm90dG9tOiAyLjI1cmVtO1xyXG5cclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2xpZGVyLWJhY2tncm91bmQ7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIHVzZXItc2VsZWN0OiBub25lO1xyXG4gIHRvdWNoLWFjdGlvbjogbm9uZTtcclxufVxyXG5cclxuLy8vIEFkZHMgdGhlIGdlbmVyYWwgc3R5bGVzIGZvciBhY3RpdmUgZmlsbCBmb3Igc2xpZGVycy5cclxuQG1peGluIHNsaWRlci1maWxsIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgdG9wOiAwO1xyXG4gIGxlZnQ6IDA7XHJcblxyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAkc2xpZGVyLWhlaWdodDtcclxuXHJcbiAgYmFja2dyb3VuZC1jb2xvcjogJHNsaWRlci1maWxsLWJhY2tncm91bmQ7XHJcbiAgdHJhbnNpdGlvbjogJHNsaWRlci10cmFuc2l0aW9uO1xyXG5cclxuICAmLmlzLWRyYWdnaW5nIHtcclxuICAgIHRyYW5zaXRpb246IGFsbCAwcyBsaW5lYXI7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gQWRkcyB0aGUgZ2VuZXJhbCBzdHlsZXMgZm9yIHRoZSBzbGlkZXIgaGFuZGxlcy5cclxuQG1peGluIHNsaWRlci1oYW5kbGUge1xyXG4gIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcclxuICBAaW5jbHVkZSB2ZXJ0aWNhbC1jZW50ZXI7XHJcbiAgbGVmdDogMDtcclxuICB6LWluZGV4OiAxO1xyXG5cclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgd2lkdGg6ICRzbGlkZXItaGFuZGxlLXdpZHRoO1xyXG4gIGhlaWdodDogJHNsaWRlci1oYW5kbGUtaGVpZ2h0O1xyXG5cclxuICBib3JkZXItcmFkaXVzOiAkc2xpZGVyLXJhZGl1cztcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2xpZGVyLWhhbmRsZS1iYWNrZ3JvdW5kO1xyXG4gIHRyYW5zaXRpb246ICRzbGlkZXItdHJhbnNpdGlvbjtcclxuICB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjtcclxuXHJcbiAgJjpob3ZlciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBzY2FsZS1jb2xvcigkc2xpZGVyLWhhbmRsZS1iYWNrZ3JvdW5kLCAkbGlnaHRuZXNzOiAtMTUlKTtcclxuICB9XHJcblxyXG4gICYuaXMtZHJhZ2dpbmcge1xyXG4gICAgdHJhbnNpdGlvbjogYWxsIDBzIGxpbmVhcjtcclxuICB9XHJcbn1cclxuXHJcbkBtaXhpbiBzbGlkZXItZGlzYWJsZWQge1xyXG4gIG9wYWNpdHk6ICRzbGlkZXItb3BhY2l0eS1kaXNhYmxlZDtcclxuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG59XHJcblxyXG5AbWl4aW4gc2xpZGVyLXZlcnRpY2FsIHtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgd2lkdGg6ICRzbGlkZXItd2lkdGgtdmVydGljYWw7XHJcbiAgaGVpZ2h0OiAxMi41cmVtO1xyXG4gIG1hcmdpbjogMCAxLjI1cmVtO1xyXG4gIHRyYW5zZm9ybTogc2NhbGUoMSwgLTEpO1xyXG5cclxuICAuc2xpZGVyLWZpbGwge1xyXG4gICAgdG9wOiAwO1xyXG4gICAgd2lkdGg6ICRzbGlkZXItd2lkdGgtdmVydGljYWw7XHJcbiAgICBtYXgtaGVpZ2h0OiAxMDAlO1xyXG4gIH1cclxuXHJcbiAgLnNsaWRlci1oYW5kbGUge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgbGVmdDogNTAlO1xyXG4gICAgd2lkdGg6ICRzbGlkZXItaGFuZGxlLWhlaWdodDtcclxuICAgIGhlaWdodDogJHNsaWRlci1oYW5kbGUtd2lkdGg7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1zbGlkZXIge1xyXG4gIC8vIENvbnRhaW5lclxyXG4gIC5zbGlkZXIge1xyXG4gICAgQGluY2x1ZGUgc2xpZGVyLWNvbnRhaW5lcjtcclxuICB9XHJcblxyXG4gIC8vIEZpbGwgYXJlYVxyXG4gIC5zbGlkZXItZmlsbCB7XHJcbiAgICBAaW5jbHVkZSBzbGlkZXItZmlsbDtcclxuICB9XHJcblxyXG4gIC8vIERyYWdnYWJsZSBoYW5kbGVcclxuICAuc2xpZGVyLWhhbmRsZSB7XHJcbiAgICBAaW5jbHVkZSBzbGlkZXItaGFuZGxlO1xyXG4gIH1cclxuXHJcbiAgLy8gRGlzYWJsZWQgc3RhdGVcclxuICAuc2xpZGVyLmRpc2FibGVkLFxyXG4gIC5zbGlkZXJbZGlzYWJsZWRdIHtcclxuICAgIEBpbmNsdWRlIHNsaWRlci1kaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIC8vIFZlcnRpY2FsIHNsaWRlclxyXG4gIC5zbGlkZXIudmVydGljYWwge1xyXG4gICAgQGluY2x1ZGUgc2xpZGVyLXZlcnRpY2FsO1xyXG4gIH1cclxuXHJcbiAgLy8gUlRMIHN1cHBvcnRcclxuICBAaWYgJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSBydGwge1xyXG4gICAgLnNsaWRlcjpub3QoLnZlcnRpY2FsKSB7XHJcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoLTEsIDEpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1zdGlja3kge1xyXG4gIC5zdGlja3ktY29udGFpbmVyIHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB9XHJcblxyXG4gIC5zdGlja3kge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgei1pbmRleDogMDtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XHJcbiAgfVxyXG5cclxuICAuc3RpY2t5LmlzLXN0dWNrIHtcclxuICAgIHBvc2l0aW9uOiBmaXhlZDtcclxuICAgIHotaW5kZXg6IDU7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuXHJcbiAgICAmLmlzLWF0LXRvcCB7XHJcbiAgICAgIHRvcDogMDtcclxuICAgIH1cclxuXHJcbiAgICAmLmlzLWF0LWJvdHRvbSB7XHJcbiAgICAgIGJvdHRvbTogMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5zdGlja3kuaXMtYW5jaG9yZWQge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgcmlnaHQ6IGF1dG87XHJcbiAgICBsZWZ0OiBhdXRvO1xyXG5cclxuICAgICYuaXMtYXQtYm90dG9tIHtcclxuICAgICAgYm90dG9tOiAwO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgc3dpdGNoXHJcbi8vLy9cclxuXHJcbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGEgc3dpdGNoLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJHN3aXRjaC1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQmFja2dyb3VuZCBhY3RpdmUgY29sb3Igb2YgYSBzd2l0Y2guXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kc3dpdGNoLWJhY2tncm91bmQtYWN0aXZlOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcclxuXHJcbi8vLyBIZWlnaHQgb2YgYSBzd2l0Y2gsIHdpdGggbm8gY2xhc3MgYXBwbGllZC5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kc3dpdGNoLWhlaWdodDogMnJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBIZWlnaHQgb2YgYSBzd2l0Y2ggd2l0aCAudGlueSBjbGFzcy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kc3dpdGNoLWhlaWdodC10aW55OiAxLjVyZW0gIWRlZmF1bHQ7XHJcblxyXG4vLy8gSGVpZ2h0IG9mIGEgc3dpdGNoIHdpdGggLnNtYWxsIGNsYXNzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRzd2l0Y2gtaGVpZ2h0LXNtYWxsOiAxLjc1cmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIEhlaWdodCBvZiBhIHN3aXRjaCB3aXRoIC5sYXJnZSBjbGFzcy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kc3dpdGNoLWhlaWdodC1sYXJnZTogMi41cmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIEJvcmRlciByYWRpdXMgb2YgdGhlIHN3aXRjaFxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRzd2l0Y2gtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcclxuXHJcbi8vLyBib3JkZXIgYXJvdW5kIGEgbW9kYWwuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHN3aXRjaC1tYXJnaW46ICRnbG9iYWwtbWFyZ2luICFkZWZhdWx0O1xyXG5cclxuLy8vIEJhY2tncm91bmQgY29sb3IgZm9yIHRoZSBzd2l0Y2ggY29udGFpbmVyIGFuZCBwYWRkbGUuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kc3dpdGNoLXBhZGRsZS1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gU3BhY2luZyBiZXR3ZWVuIGEgc3dpdGNoIHBhZGRsZSBhbmQgdGhlIGVkZ2Ugb2YgdGhlIGJvZHkuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHN3aXRjaC1wYWRkbGUtb2Zmc2V0OiAwLjI1cmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIGJvcmRlciByYWRpdXMgb2YgdGhlIHN3aXRjaCBwYWRkbGVcclxuLy8vIEB0eXBlIE51bWJlclxyXG4kc3dpdGNoLXBhZGRsZS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xyXG5cclxuLy8vIHN3aXRjaCB0cmFuc2l0aW9uLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRzd2l0Y2gtcGFkZGxlLXRyYW5zaXRpb246IGFsbCAwLjI1cyBlYXNlLW91dCAhZGVmYXVsdDtcclxuXHJcbi8vIG1ha2UgdGhlbSB2YXJpYWJsZXNcclxuLy8gYXNrIGFib3V0IGFjY2Vzc2liaWxpdHkgb24gbGFiZWxcclxuLy8gY2hhbmdlIGNsYXNzIG5hbWUgZm9yIHRleHRcclxuXHJcbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBzd2l0Y2ggY29udGFpbmVyLiBBcHBseSB0aGlzIHRvIGEgY29udGFpbmVyIGNsYXNzLlxyXG5AbWl4aW4gc3dpdGNoLWNvbnRhaW5lciB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIG1hcmdpbi1ib3R0b206ICRzd2l0Y2gtbWFyZ2luO1xyXG4gIG91dGxpbmU6IDA7XHJcblxyXG4gIC8vIFRoZXNlIHByb3BlcnRpZXMgY2FzY2FkZSBkb3duIHRvIHRoZSBzd2l0Y2ggdGV4dFxyXG4gIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTQpO1xyXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gIGNvbG9yOiAkd2hpdGU7XHJcblxyXG4gIHVzZXItc2VsZWN0OiBub25lO1xyXG59XHJcblxyXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgc3dpdGNoIGlucHV0LiBBcHBseSB0aGlzIHRvIGFuIGA8aW5wdXQ+YCB3aXRoaW4gYSBzd2l0Y2guXHJcbkBtaXhpbiBzd2l0Y2gtaW5wdXQge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gIG9wYWNpdHk6IDA7XHJcbn1cclxuXHJcbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGJhY2tncm91bmQgYW5kIHBhZGRsZSBvZiBhIHN3aXRjaC4gQXBwbHkgdGhpcyB0byBhIGA8bGFiZWw+YCB3aXRoaW4gYSBzd2l0Y2guXHJcbkBtaXhpbiBzd2l0Y2gtcGFkZGxlIHtcclxuICAkc3dpdGNoLXdpZHRoOiAkc3dpdGNoLWhlaWdodCAqIDI7XHJcbiAgJHBhZGRsZS1oZWlnaHQ6ICRzd2l0Y2gtaGVpZ2h0IC0gKCRzd2l0Y2gtcGFkZGxlLW9mZnNldCAqIDIpO1xyXG4gICRwYWRkbGUtd2lkdGg6ICRzd2l0Y2gtaGVpZ2h0IC0gKCRzd2l0Y2gtcGFkZGxlLW9mZnNldCAqIDIpO1xyXG4gICRwYWRkbGUtYWN0aXZlLW9mZmVzdDogJHN3aXRjaC13aWR0aCAtICRwYWRkbGUtd2lkdGggLSAkc3dpdGNoLXBhZGRsZS1vZmZzZXQ7XHJcblxyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBkaXNwbGF5OiBibG9jaztcclxuICB3aWR0aDogJHN3aXRjaC13aWR0aDtcclxuICBoZWlnaHQ6ICRzd2l0Y2gtaGVpZ2h0O1xyXG5cclxuICBib3JkZXItcmFkaXVzOiAkc3dpdGNoLXJhZGl1cztcclxuICBiYWNrZ3JvdW5kOiAkc3dpdGNoLWJhY2tncm91bmQ7XHJcbiAgdHJhbnNpdGlvbjogJHN3aXRjaC1wYWRkbGUtdHJhbnNpdGlvbjtcclxuXHJcbiAgLy8gUmVzZXR0aW5nIHRoZXNlIDxsYWJlbD4gcHJlc2V0cyBzbyB0eXBlIHN0eWxlcyBjYXNjYWRlIGRvd25cclxuICBmb250LXdlaWdodDogaW5oZXJpdDtcclxuICBjb2xvcjogaW5oZXJpdDtcclxuXHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG5cclxuICAvLyBOZWVkZWQgdG8gb3ZlcnJpZGUgc3BlY2lmaWNpdHlcclxuICBpbnB1dCArICYge1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gIH1cclxuXHJcbiAgLy8gVGhlIHBhZGRsZSBpdHNlbGZcclxuICAmOjphZnRlciB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6ICRzd2l0Y2gtcGFkZGxlLW9mZnNldDtcclxuICAgICN7JGdsb2JhbC1sZWZ0fTogJHN3aXRjaC1wYWRkbGUtb2Zmc2V0O1xyXG5cclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgd2lkdGg6ICRwYWRkbGUtd2lkdGg7XHJcbiAgICBoZWlnaHQ6ICRwYWRkbGUtaGVpZ2h0O1xyXG5cclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XHJcbiAgICBib3JkZXItcmFkaXVzOiAkc3dpdGNoLXBhZGRsZS1yYWRpdXM7XHJcbiAgICBiYWNrZ3JvdW5kOiAkc3dpdGNoLXBhZGRsZS1iYWNrZ3JvdW5kO1xyXG4gICAgdHJhbnNpdGlvbjogJHN3aXRjaC1wYWRkbGUtdHJhbnNpdGlvbjtcclxuICAgIGNvbnRlbnQ6ICcnO1xyXG4gIH1cclxuXHJcbiAgLy8gQ2hhbmdlIHRoZSB2aXN1YWwgc3R5bGUgd2hlbiB0aGUgc3dpdGNoIGlzIGFjdGl2ZVxyXG4gIGlucHV0OmNoZWNrZWQgfiAmIHtcclxuICAgIGJhY2tncm91bmQ6ICRzd2l0Y2gtYmFja2dyb3VuZC1hY3RpdmU7XHJcblxyXG4gICAgJjo6YWZ0ZXIge1xyXG4gICAgICAjeyRnbG9iYWwtbGVmdH06ICRwYWRkbGUtYWN0aXZlLW9mZmVzdDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlucHV0OmZvY3VzIH4gJiB7XHJcbiAgICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gQWRkcyBiYXNlIHN0eWxlcyBmb3IgYWN0aXZlL2luYWN0aXZlIHRleHQgaW5zaWRlIGEgc3dpdGNoLiBBcHBseSB0aGlzIHRvIHRleHQgZWxlbWVudHMgaW5zaWRlIHRoZSBzd2l0Y2ggYDxsYWJlbD5gLlxyXG5AbWl4aW4gc3dpdGNoLXRleHQge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB0b3A6IDUwJTtcclxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcbn1cclxuXHJcbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGFjdGl2ZSBzdGF0ZSB0ZXh0IHdpdGhpbiBhIHN3aXRjaC5cclxuQG1peGluIHN3aXRjaC10ZXh0LWFjdGl2ZSB7XHJcbiAgI3skZ2xvYmFsLWxlZnR9OiA4JTtcclxuICBkaXNwbGF5OiBub25lO1xyXG5cclxuICBpbnB1dDpjaGVja2VkICsgbGFiZWwgPiAmIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgaW5hY3RpdmUgc3RhdGUgdGV4dCB3aXRoaW4gYSBzd2l0Y2guXHJcbkBtaXhpbiBzd2l0Y2gtdGV4dC1pbmFjdGl2ZSB7XHJcbiAgI3skZ2xvYmFsLXJpZ2h0fTogMTUlO1xyXG5cclxuICBpbnB1dDpjaGVja2VkICsgbGFiZWwgPiAmIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gQ2hhbmdlcyB0aGUgc2l6ZSBvZiBhIHN3aXRjaCBieSBtb2RpZnlpbmcgdGhlIHNpemUgb2YgdGhlIGJvZHkgYW5kIHBhZGRsZS4gQXBwbHkgdGhpcyB0byBhIHN3aXRjaCBjb250YWluZXIuXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGZvbnQtc2l6ZSBbMXJlbV0gLSBGb250IHNpemUgb2YgbGFiZWwgdGV4dCB3aXRoaW4gdGhlIHN3aXRjaC5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkc3dpdGNoLWhlaWdodCBbMnJlbV0gLSBIZWlnaHQgb2YgdGhlIHN3aXRjaCBib2R5LlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRwYWRkbGUtb2Zmc2V0IFswLjI1cmVtXSAtIFNwYWNpbmcgYmV0d2VlbiB0aGUgc3dpdGNoIHBhZGRsZSBhbmQgdGhlIGVkZ2Ugb2YgdGhlIHN3aXRjaCBib2R5LlxyXG5AbWl4aW4gc3dpdGNoLXNpemUoXHJcbiAgJGZvbnQtc2l6ZTogMXJlbSxcclxuICAkc3dpdGNoLWhlaWdodDogMnJlbSxcclxuICAkcGFkZGxlLW9mZnNldDogMC4yNXJlbVxyXG4pIHtcclxuXHJcbiAgJHN3aXRjaC13aWR0aDogJHN3aXRjaC1oZWlnaHQgKiAyO1xyXG4gICRwYWRkbGUtd2lkdGg6ICRzd2l0Y2gtaGVpZ2h0IC0gKCRwYWRkbGUtb2Zmc2V0ICogMik7XHJcbiAgJHBhZGRsZS1oZWlnaHQ6ICRzd2l0Y2gtaGVpZ2h0IC0gKCRwYWRkbGUtb2Zmc2V0ICogMik7XHJcbiAgJHBhZGRsZS1hY3RpdmUtb2ZmZXN0OiAkc3dpdGNoLXdpZHRoIC0gJHBhZGRsZS13aWR0aCAtICRwYWRkbGUtb2Zmc2V0O1xyXG5cclxuICBoZWlnaHQ6ICRzd2l0Y2gtaGVpZ2h0O1xyXG5cclxuICAuc3dpdGNoLXBhZGRsZSB7XHJcbiAgICB3aWR0aDogJHN3aXRjaC13aWR0aDtcclxuICAgIGhlaWdodDogJHN3aXRjaC1oZWlnaHQ7XHJcbiAgICBmb250LXNpemU6ICRmb250LXNpemU7XHJcbiAgfVxyXG5cclxuICAuc3dpdGNoLXBhZGRsZTo6YWZ0ZXIge1xyXG4gICAgdG9wOiAkcGFkZGxlLW9mZnNldDtcclxuICAgICN7JGdsb2JhbC1sZWZ0fTogJHBhZGRsZS1vZmZzZXQ7XHJcbiAgICB3aWR0aDogJHBhZGRsZS13aWR0aDtcclxuICAgIGhlaWdodDogJHBhZGRsZS1oZWlnaHQ7XHJcbiAgfVxyXG5cclxuICBpbnB1dDpjaGVja2VkIH4gLnN3aXRjaC1wYWRkbGU6OmFmdGVyIHtcclxuICAgICN7JGdsb2JhbC1sZWZ0fTogJHBhZGRsZS1hY3RpdmUtb2ZmZXN0O1xyXG4gIH1cclxufVxyXG5cclxuQG1peGluIGZvdW5kYXRpb24tc3dpdGNoIHtcclxuICAvLyBDb250YWluZXIgY2xhc3NcclxuICAuc3dpdGNoIHtcclxuICAgIGhlaWdodDogJHN3aXRjaC1oZWlnaHQ7XHJcbiAgICBAaW5jbHVkZSBzd2l0Y2gtY29udGFpbmVyO1xyXG4gIH1cclxuXHJcbiAgLy8gPGlucHV0PiBlbGVtZW50XHJcbiAgLnN3aXRjaC1pbnB1dCB7XHJcbiAgICBAaW5jbHVkZSBzd2l0Y2gtaW5wdXQ7XHJcbiAgfVxyXG5cclxuICAvLyA8bGFiZWw+IGVsZW1lbnRcclxuICAuc3dpdGNoLXBhZGRsZSB7XHJcbiAgICBAaW5jbHVkZSBzd2l0Y2gtcGFkZGxlO1xyXG4gIH1cclxuXHJcbiAgLy8gQmFzZSBsYWJlbCB0ZXh0IHN0eWxlc1xyXG4gICVzd2l0Y2gtdGV4dCB7XHJcbiAgICBAaW5jbHVkZSBzd2l0Y2gtdGV4dDtcclxuICB9XHJcblxyXG4gIC8vIEFjdGl2ZSBsYWJlbCB0ZXh0IHN0eWxlc1xyXG4gIC5zd2l0Y2gtYWN0aXZlIHtcclxuICAgIEBleHRlbmQgJXN3aXRjaC10ZXh0O1xyXG4gICAgQGluY2x1ZGUgc3dpdGNoLXRleHQtYWN0aXZlO1xyXG4gIH1cclxuXHJcbiAgLy8gSW5hY3RpdmUgbGFiZWwgdGV4dCBzdHlsZXNcclxuICAuc3dpdGNoLWluYWN0aXZlIHtcclxuICAgIEBleHRlbmQgJXN3aXRjaC10ZXh0O1xyXG4gICAgQGluY2x1ZGUgc3dpdGNoLXRleHQtaW5hY3RpdmU7XHJcbiAgfVxyXG5cclxuICAvLyBTd2l0Y2ggc2l6ZXNcclxuICAuc3dpdGNoLnRpbnkge1xyXG4gICAgQGluY2x1ZGUgc3dpdGNoLXNpemUocmVtLWNhbGMoMTApLCAkc3dpdGNoLWhlaWdodC10aW55LCAkc3dpdGNoLXBhZGRsZS1vZmZzZXQpO1xyXG4gIH1cclxuXHJcbiAgLnN3aXRjaC5zbWFsbCB7XHJcbiAgICBAaW5jbHVkZSBzd2l0Y2gtc2l6ZShyZW0tY2FsYygxMiksICRzd2l0Y2gtaGVpZ2h0LXNtYWxsLCAkc3dpdGNoLXBhZGRsZS1vZmZzZXQpO1xyXG4gIH1cclxuXHJcbiAgLnN3aXRjaC5sYXJnZSB7XHJcbiAgICBAaW5jbHVkZSBzd2l0Y2gtc2l6ZShyZW0tY2FsYygxNiksICRzd2l0Y2gtaGVpZ2h0LWxhcmdlLCAkc3dpdGNoLXBhZGRsZS1vZmZzZXQpO1xyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLyBzYXNzLWxpbnQ6ZGlzYWJsZSBmb3JjZS1lbGVtZW50LW5lc3RpbmcsIG5vLXF1YWxpZnlpbmctZWxlbWVudHNcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCB0YWJsZVxyXG4vLy8vXHJcblxyXG4vLy8gRGVmYXVsdCBjb2xvciBmb3IgdGFibGUgYmFja2dyb3VuZC5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiR0YWJsZS1iYWNrZ3JvdW5kOiAkd2hpdGUgICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgc2NhbGUgZm9yIGRhcmtlbmluZyB0aGUgc3RyaXBlZCB0YWJsZSByb3dzIGFuZCB0aGUgdGFibGUgYm9yZGVyLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiR0YWJsZS1jb2xvci1zY2FsZTogNSUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBzdHlsZSBmb3IgdGFibGUgYm9yZGVyLlxyXG4vLy8gQHR5cGUgTGlzdFxyXG4kdGFibGUtYm9yZGVyOiAxcHggc29saWQgc21hcnQtc2NhbGUoJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBwYWRkaW5nIGZvciB0YWJsZS5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kdGFibGUtcGFkZGluZzogcmVtLWNhbGMoOCAxMCAxMCkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBzY2FsZSBmb3IgZGFya2VuaW5nIHRoZSB0YWJsZSByb3dzIG9uIGhvdmVyLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiR0YWJsZS1ob3Zlci1zY2FsZTogMiUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBjb2xvciBvZiBzdGFuZGFyZCByb3dzIG9uIGhvdmVyLlxyXG4vLy8gQHR5cGUgTGlzdFxyXG4kdGFibGUtcm93LWhvdmVyOiBkYXJrZW4oJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1ob3Zlci1zY2FsZSkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBjb2xvciBvZiBzdHJpcGVkIHJvd3Mgb24gaG92ZXIuXHJcbi8vLyBAdHlwZSBMaXN0XHJcbiR0YWJsZS1yb3ctc3RyaXBlLWhvdmVyOiBkYXJrZW4oJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSArICR0YWJsZS1ob3Zlci1zY2FsZSkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gSWYgYHRydWVgLCB0YWJsZXMgYXJlIHN0cmlwZWQgYnkgZGVmYXVsdCBhbmQgYW4gLnVuc3RyaXBlZCBjbGFzcyBpcyBjcmVhdGVkLiBJZiBgZmFsc2VgLCBhIC5zdHJpcGVkIGNsYXNzIGlzIGNyZWF0ZWQuXHJcbi8vLyBAdHlwZSBCb29sZWFuXHJcbiR0YWJsZS1pcy1zdHJpcGVkOiB0cnVlICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBmb3Igc3RyaXBlZCByb3dzLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJHRhYmxlLXN0cmlwZWQtYmFja2dyb3VuZDogc21hcnQtc2NhbGUoJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCB2YWx1ZSBmb3Igc2hvd2luZyB0aGUgc3RyaXBlIG9uIHJvd3Mgb2YgdGhlIHRhYmxlcywgZXhjbHVkaW5nIHRoZSBoZWFkZXIgYW5kIGZvb3Rlci4gSWYgZXZlbiwgdGhlIGV2ZW4gcm93cyB3aWxsIGhhdmUgYSBiYWNrZ3JvdW5kIGNvbG9yLiBJZiBvZGQsIHRoZSBvZGQgcm93cyB3aWxsIGhhdmUgYSBiYWNrZ3JvdW5kIGNvbG9yLiBJZiBlbXB0eSwgb3IgYW55IG90aGVyIHZhbHVlLCB0aGUgdGFibGUgcm93cyB3aWxsIGhhdmUgbm8gc3RyaXBpbmcuXHJcbi8vLyBAdHlwZSBLZXl3b3JkXHJcbiR0YWJsZS1zdHJpcGU6IGV2ZW4gIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBjb2xvciBmb3IgaGVhZGVyIGJhY2tncm91bmQuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kdGFibGUtaGVhZC1iYWNrZ3JvdW5kOiBzbWFydC1zY2FsZSgkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWNvbG9yLXNjYWxlIC8gMikgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBjb2xvciBvZiBoZWFkZXIgcm93cyBvbiBob3Zlci5cclxuLy8vIEB0eXBlIExpc3RcclxuJHRhYmxlLWhlYWQtcm93LWhvdmVyOiBkYXJrZW4oJHRhYmxlLWhlYWQtYmFja2dyb3VuZCwgJHRhYmxlLWhvdmVyLXNjYWxlKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGNvbG9yIGZvciBmb290ZXIgYmFja2dyb3VuZC5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiR0YWJsZS1mb290LWJhY2tncm91bmQ6IHNtYXJ0LXNjYWxlKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUpICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgY29sb3Igb2YgZm9vdGVyIHJvd3Mgb24gaG92ZXIuXHJcbi8vLyBAdHlwZSBMaXN0XHJcbiR0YWJsZS1mb290LXJvdy1ob3ZlcjogZGFya2VuKCR0YWJsZS1mb290LWJhY2tncm91bmQsICR0YWJsZS1ob3Zlci1zY2FsZSkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBmb250IGNvbG9yIGZvciBoZWFkZXIuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kdGFibGUtaGVhZC1mb250LWNvbG9yOiAkYm9keS1mb250LWNvbG9yICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgZm9udCBjb2xvciBmb3IgZm9vdGVyLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJHRhYmxlLWZvb3QtZm9udC1jb2xvcjogJGJvZHktZm9udC1jb2xvciAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IHZhbHVlIGZvciBzaG93aW5nIHRoZSBoZWFkZXIgd2hlbiB1c2luZyBzdGFja2VkIHRhYmxlcy5cclxuLy8vIEB0eXBlIEJvb2xlYW5cclxuJHNob3ctaGVhZGVyLWZvci1zdGFja2VkOiBmYWxzZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBCcmVha3BvaW50IGF0IHdoaWNoIHN0YWNrZWQgdGFibGUgc3dpdGNoZXMgZnJvbSBtb2JpbGUgdG8gZGVza3RvcCB2aWV3LlxyXG4vLy8gQHR5cGUgQnJlYWtwb2ludFxyXG4kdGFibGUtc3RhY2stYnJlYWtwb2ludDogbWVkaXVtICFkZWZhdWx0O1xyXG5cclxuQG1peGluIC16Zi10YWJsZS1zdHJpcGUoJHN0cmlwZTogJHRhYmxlLXN0cmlwZSkge1xyXG4gIHRyIHtcclxuICAgIC8vIElmIHN0cmlwZSBpcyBzZXQgdG8gZXZlbiwgZGFya2VuIHRoZSBldmVuIHJvd3MuXHJcbiAgICBAaWYgJHN0cmlwZSA9PSBldmVuIHtcclxuICAgICAgJjpudGgtY2hpbGQoZXZlbikge1xyXG4gICAgICAgIGJvcmRlci1ib3R0b206IDA7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLXN0cmlwZWQtYmFja2dyb3VuZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIElmIHN0cmlwZSBpcyBzZXQgdG8gb2RkLCBkYXJrZW4gdGhlIG9kZCByb3dzLlxyXG4gICAgQGVsc2UgaWYgJHN0cmlwZSA9PSBvZGQge1xyXG4gICAgICAmOm50aC1jaGlsZChvZGQpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtc3RyaXBlZC1iYWNrZ3JvdW5kO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gLXpmLXRhYmxlLXVuc3RyaXBlKCkge1xyXG4gIHRyIHtcclxuICAgIGJvcmRlci1ib3R0b206IDA7XHJcbiAgICBib3JkZXItYm90dG9tOiAkdGFibGUtYm9yZGVyO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLWJhY2tncm91bmQ7XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gLXpmLXRhYmxlLWNoaWxkcmVuLXN0eWxlcygkc3RyaXBlOiAkdGFibGUtc3RyaXBlLCAkaXMtc3RyaXBlZDogJHRhYmxlLWlzLXN0cmlwZWQpIHtcclxuICB0aGVhZCxcclxuICB0Ym9keSxcclxuICB0Zm9vdCB7XHJcbiAgICBib3JkZXI6ICR0YWJsZS1ib3JkZXI7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtYmFja2dyb3VuZDtcclxuICB9XHJcblxyXG4gIC8vIENhcHRpb25cclxuICBjYXB0aW9uIHtcclxuICAgIHBhZGRpbmc6ICR0YWJsZS1wYWRkaW5nO1xyXG4gICAgZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQ7XHJcbiAgfVxyXG5cclxuICAvLyBUYWJsZSBoZWFkXHJcbiAgdGhlYWQge1xyXG4gICAgYmFja2dyb3VuZDogJHRhYmxlLWhlYWQtYmFja2dyb3VuZDtcclxuICAgIGNvbG9yOiAkdGFibGUtaGVhZC1mb250LWNvbG9yO1xyXG4gIH1cclxuXHJcbiAgLy8gVGFibGUgZm9vdFxyXG4gIHRmb290IHtcclxuICAgIGJhY2tncm91bmQ6ICR0YWJsZS1mb290LWJhY2tncm91bmQ7XHJcbiAgICBjb2xvcjogJHRhYmxlLWZvb3QtZm9udC1jb2xvcjtcclxuICB9XHJcblxyXG4gIC8vIFRhYmxlIGhlYWQgYW5kIGZvb3RcclxuICB0aGVhZCxcclxuICB0Zm9vdCB7XHJcbiAgICAvLyBSb3dzIHdpdGhpbiBoZWFkIGFuZCBmb290XHJcbiAgICB0ciB7XHJcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENlbGxzIHdpdGhpbiBoZWFkIGFuZCBmb290XHJcbiAgICB0aCxcclxuICAgIHRkIHtcclxuICAgICAgcGFkZGluZzogJHRhYmxlLXBhZGRpbmc7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkO1xyXG4gICAgICB0ZXh0LWFsaWduOiAjeyRnbG9iYWwtbGVmdH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBUYWJsZSByb3dzXHJcbiAgdGJvZHkge1xyXG4gICAgdGgsXHJcbiAgICB0ZCB7XHJcbiAgICAgIHBhZGRpbmc6ICR0YWJsZS1wYWRkaW5nO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gSWYgdGFibGVzIGFyZSBzdHJpcGVkXHJcbiAgQGlmICRpcy1zdHJpcGVkID09IHRydWUge1xyXG4gICAgdGJvZHkge1xyXG4gICAgICBAaW5jbHVkZSAtemYtdGFibGUtc3RyaXBlKCRzdHJpcGUpO1xyXG4gICAgfVxyXG5cclxuICAgICYudW5zdHJpcGVkIHtcclxuICAgICAgdGJvZHkge1xyXG4gICAgICAgIEBpbmNsdWRlIC16Zi10YWJsZS11bnN0cmlwZSgpO1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1iYWNrZ3JvdW5kO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBJZiB0YWJsZXMgYXJlIG5vdCBzdHJpcGVkXHJcbiAgQGVsc2UgaWYgJGlzLXN0cmlwZWQgPT0gZmFsc2Uge1xyXG4gICAgdGJvZHkge1xyXG4gICAgICBAaW5jbHVkZSAtemYtdGFibGUtdW5zdHJpcGUoKTtcclxuICAgIH1cclxuXHJcbiAgICAmLnN0cmlwZWQge1xyXG4gICAgICB0Ym9keSB7XHJcbiAgICAgICAgQGluY2x1ZGUgLXpmLXRhYmxlLXN0cmlwZSgkc3RyaXBlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8vIEFkZHMgdGhlIGdlbmVyYWwgc3R5bGVzIGZvciB0YWJsZXMuXHJcbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzdHJpcGUgWyR0YWJsZS1zdHJpcGVdIC0gVXNlcyBrZXl3b3JkcyBldmVuLCBvZGQsIG9yIG5vbmUgdG8gZGFya2VuIHJvd3Mgb2YgdGhlIHRhYmxlLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBldmVuLlxyXG5AbWl4aW4gdGFibGUoXHJcbiAgJHN0cmlwZTogJHRhYmxlLXN0cmlwZSxcclxuICAkbmVzdDogZmFsc2VcclxuKSB7XHJcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcclxuICB3aWR0aDogMTAwJTtcclxuICBtYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbjtcclxuICBib3JkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcclxuXHJcbiAgQGlmICRuZXN0IHtcclxuICAgIEBpbmNsdWRlIC16Zi10YWJsZS1jaGlsZHJlbi1zdHlsZXMoJHN0cmlwZSk7XHJcbiAgfVxyXG4gIEBlbHNlIHtcclxuICAgIEBhdC1yb290IHtcclxuICAgICAgQGluY2x1ZGUgLXpmLXRhYmxlLWNoaWxkcmVuLXN0eWxlcygkc3RyaXBlKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vLyBBZGRzIHRoZSBhYmlsaXR5IHRvIGhvcml6b250YWxseSBzY3JvbGwgdGhlIHRhYmxlIHdoZW4gdGhlIGNvbnRlbnQgb3ZlcmZsb3dzIGhvcml6b250YWxseS5cclxuQG1peGluIHRhYmxlLXNjcm9sbCB7XHJcbiAgZGlzcGxheTogYmxvY2s7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgb3ZlcmZsb3cteDogYXV0bztcclxufVxyXG5cclxuLy8vIFNsaWdodGx5IGRhcmtlbnMgdGhlIHRhYmxlIHJvd3Mgb24gaG92ZXIuXHJcbkBtaXhpbiB0YWJsZS1ob3ZlciB7XHJcbiAgdGhlYWQgdHIge1xyXG4gICAgLy9EYXJrZW5zIHRoZSB0YWJsZSBoZWFkZXIgcm93cyBvbiBob3Zlci5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtaGVhZC1yb3ctaG92ZXI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0Zm9vdCB0ciB7XHJcbiAgICAvL0RhcmtlbnMgdGhlIHRhYmxlIGZvb3RlciByb3dzIG9uIGhvdmVyLlxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1mb290LXJvdy1ob3ZlcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRib2R5IHRyIHtcclxuICAgIC8vRGFya2VucyB0aGUgbm9uLXN0cmlwZWQgdGFibGUgcm93cyBvbiBob3Zlci5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtcm93LWhvdmVyO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGlmICR0YWJsZS1pcy1zdHJpcGVkID09IHRydWUge1xyXG4gICAgLy8gRGFya2VucyB0aGUgZXZlbiBzdHJpcGVkIHRhYmxlIHJvd3MuXHJcbiAgICBAaWYoJHRhYmxlLXN0cmlwZSA9PSBldmVuKSB7XHJcbiAgICAgICY6bm90KC51bnN0cmlwZWQpIHRyOm50aC1vZi10eXBlKGV2ZW4pOmhvdmVyIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtcm93LXN0cmlwZS1ob3ZlcjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIERhcmtlbnMgdGhlIG9kZCBzdHJpcGVkIHRhYmxlIHJvd3MuXHJcbiAgICBAZWxzZWlmKCR0YWJsZS1zdHJpcGUgPT0gb2RkKSB7XHJcbiAgICAgICY6bm90KC51bnN0cmlwZWQpIHRyOm50aC1vZi10eXBlKG9kZCk6aG92ZXIge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1yb3ctc3RyaXBlLWhvdmVyO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAZWxzZSBpZiAkdGFibGUtaXMtc3RyaXBlZCA9PSBmYWxzZSB7XHJcbiAgICAvLyBEYXJrZW5zIHRoZSBldmVuIHN0cmlwZWQgdGFibGUgcm93cy5cclxuICAgIEBpZigkdGFibGUtc3RyaXBlID09IGV2ZW4pIHtcclxuICAgICAgJi5zdHJpcGVkIHRyOm50aC1vZi10eXBlKGV2ZW4pOmhvdmVyIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtcm93LXN0cmlwZS1ob3ZlcjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIERhcmtlbnMgdGhlIG9kZCBzdHJpcGVkIHRhYmxlIHJvd3MuXHJcbiAgICBAZWxzZWlmKCR0YWJsZS1zdHJpcGUgPT0gb2RkKSB7XHJcbiAgICAgICYuc3RyaXBlZCB0cjpudGgtb2YtdHlwZShvZGQpOmhvdmVyIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtcm93LXN0cmlwZS1ob3ZlcjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIHN0YWNrZWQgdGFibGUuIFVzZWZ1bCBmb3Igc21hbGwtc2NyZWVuIGxheW91dHMuXHJcbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRoZWFkZXIgWyRzaG93LWhlYWRlci1mb3Itc3RhY2tlZF0gLSBTaG93IHRoZSBmaXJzdCB0aCBvZiBoZWFkZXIgd2hlbiBzdGFja2VkLlxyXG5AbWl4aW4gdGFibGUtc3RhY2soJGhlYWRlcjogJHNob3ctaGVhZGVyLWZvci1zdGFja2VkKSB7XHJcbiAgQGlmICRoZWFkZXIge1xyXG4gICAgdGhlYWQge1xyXG4gICAgICB0aCB7XHJcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgQGVsc2Uge1xyXG4gICAgdGhlYWQge1xyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdGZvb3Qge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICB9XHJcblxyXG4gIHRyLFxyXG4gIHRoLFxyXG4gIHRkIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gIH1cclxuXHJcbiAgdGQge1xyXG4gICAgYm9yZGVyLXRvcDogMDtcclxuICB9XHJcbn1cclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLXRhYmxlKCRuZXN0OiBmYWxzZSkge1xyXG4gIHRhYmxlIHtcclxuICAgIEBpbmNsdWRlIHRhYmxlKCRuZXN0OiAkbmVzdCk7XHJcbiAgfVxyXG5cclxuICB0YWJsZS5zdGFjayB7XHJcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZS1zdGFjay1icmVha3BvaW50IGRvd24pIHtcclxuICAgICAgQGluY2x1ZGUgdGFibGUtc3RhY2s7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0YWJsZS5zY3JvbGwge1xyXG4gICAgQGluY2x1ZGUgdGFibGUtc2Nyb2xsO1xyXG4gIH1cclxuXHJcbiAgdGFibGUuaG92ZXIge1xyXG4gICAgQGluY2x1ZGUgdGFibGUtaG92ZXI7XHJcbiAgfVxyXG5cclxuICAudGFibGUtc2Nyb2xsIHtcclxuICAgIG92ZXJmbG93LXg6IGF1dG87XHJcblxyXG4gICAgdGFibGUge1xyXG4gICAgICB3aWR0aDogYXV0bztcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIHRhYnNcclxuLy8vL1xyXG5cclxuLy8vIERlZmF1bHQgbWFyZ2luIG9mIHRoZSB0YWIgYmFyLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiR0YWItbWFyZ2luOiAwICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBvZiBhIHRhYiBiYXIuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kdGFiLWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBGb250IGNvbG9yIG9mIHRhYiBpdGVtLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJHRhYi1jb2xvcjogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQWN0aXZlIGJhY2tncm91bmQgY29sb3Igb2YgYSB0YWIgYmFyLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJHRhYi1iYWNrZ3JvdW5kLWFjdGl2ZTogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQWN0aXZlIGZvbnQgY29sb3Igb2YgdGFiIGl0ZW0uXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kdGFiLWFjdGl2ZS1jb2xvcjogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRm9udCBzaXplIG9mIHRhYiBpdGVtcy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kdGFiLWl0ZW0tZm9udC1zaXplOiByZW0tY2FsYygxMikgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIG9uIGhvdmVyIGZvciBpdGVtcyBpbiBhIE1lbnUuXHJcbiR0YWItaXRlbS1iYWNrZ3JvdW5kLWhvdmVyOiAkd2hpdGUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBwYWRkaW5nIG9mIGEgdGFiIGl0ZW0uXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHRhYi1pdGVtLXBhZGRpbmc6IDEuMjVyZW0gMS41cmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIE1heGltdW0gbnVtYmVyIG9mIGBleHBhbmQtbmAgY2xhc3NlcyB0byBpbmNsdWRlIGluIHRoZSBDU1MuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHRhYi1leHBhbmQtbWF4OiA2ICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBvZiB0YWIgY29udGVudC5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiR0YWItY29udGVudC1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBib3JkZXIgY29sb3Igb2YgdGFiIGNvbnRlbnQuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kdGFiLWNvbnRlbnQtYm9yZGVyOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IHRleHQgY29sb3Igb2YgdGFiIGNvbnRlbnQuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kdGFiLWNvbnRlbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3IgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBwYWRkaW5nIGZvciB0YWIgY29udGVudC5cclxuLy8vIEB0eXBlIE51bWJlciB8IExpc3RcclxuJHRhYi1jb250ZW50LXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XHJcblxyXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgdGFiIGNvbnRhaW5lci4gQXBwbHkgdGhpcyB0byBhIGA8dWw+YC5cclxuQG1peGluIHRhYnMtY29udGFpbmVyIChcclxuICAkbWFyZ2luOiAkdGFiLW1hcmdpbixcclxuICAkYmFja2dyb3VuZDogJHRhYi1iYWNrZ3JvdW5kLFxyXG4gICRib3JkZXItY29sb3I6ICR0YWItY29udGVudC1ib3JkZXJcclxuKSB7XHJcbiAgQGluY2x1ZGUgY2xlYXJmaXg7XHJcbiAgbWFyZ2luOiAkbWFyZ2luO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItY29sb3I7XHJcbiAgYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XHJcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xyXG59XHJcblxyXG4vLy8gQXVnbWVudHMgYSB0YWIgY29udGFpbmVyIHRvIGhhdmUgdmVydGljYWwgdGFicy4gVXNlIHRoaXMgaW4gY29uanVuY3Rpb24gd2l0aCBgdGFicy1jb250YWluZXIoKWAuXHJcbkBtaXhpbiB0YWJzLWNvbnRhaW5lci12ZXJ0aWNhbCB7XHJcbiAgPiBsaSB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIGZsb2F0OiBub25lO1xyXG4gICAgd2lkdGg6IGF1dG87XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBsaW5rcyB3aXRoaW4gYSB0YWIgY29udGFpbmVyLiBBcHBseSB0aGlzIHRvIHRoZSBgPGxpPmAgZWxlbWVudHMgaW5zaWRlIGEgdGFiIGNvbnRhaW5lci5cclxuQG1peGluIHRhYnMtdGl0bGUgKFxyXG4gICRwYWRkaW5nOiAkdGFiLWl0ZW0tcGFkZGluZyxcclxuICAkZm9udC1zaXplOiAkdGFiLWl0ZW0tZm9udC1zaXplLFxyXG4gICRjb2xvcjogJHRhYi1jb2xvcixcclxuICAkY29sb3ItYWN0aXZlOiAkdGFiLWFjdGl2ZS1jb2xvcixcclxuICAkYmFja2dyb3VuZC1ob3ZlcjogJHRhYi1pdGVtLWJhY2tncm91bmQtaG92ZXIsXHJcbiAgJGJhY2tncm91bmQtYWN0aXZlOiAkdGFiLWJhY2tncm91bmQtYWN0aXZlXHJcbikge1xyXG4gIGZsb2F0OiAjeyRnbG9iYWwtbGVmdH07XHJcblxyXG4gID4gYSB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHBhZGRpbmc6ICRwYWRkaW5nO1xyXG4gICAgZm9udC1zaXplOiAkZm9udC1zaXplO1xyXG4gICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgICBjb2xvcjogJGNvbG9yO1xyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZC1ob3ZlcjtcclxuICAgICAgY29sb3I6IHNjYWxlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogLTE0JSk7XHJcbiAgICB9XHJcblxyXG4gICAgJjpmb2N1cyxcclxuICAgICZbYXJpYS1zZWxlY3RlZD0ndHJ1ZSddIHtcclxuICAgICAgYmFja2dyb3VuZDogJGJhY2tncm91bmQtYWN0aXZlO1xyXG4gICAgICBjb2xvcjogJGNvbG9yLWFjdGl2ZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIHdyYXBwZXIgdGhhdCBzdXJyb3VuZHMgYSB0YWIgZ3JvdXAncyBjb250ZW50IHBhbmVzLlxyXG5AbWl4aW4gdGFicy1jb250ZW50IChcclxuICAkYmFja2dyb3VuZDogJHRhYi1jb250ZW50LWJhY2tncm91bmQsXHJcbiAgJGNvbG9yOiAkdGFiLWNvbnRlbnQtY29sb3IsXHJcbiAgJGJvcmRlci1jb2xvcjogJHRhYi1jb250ZW50LWJvcmRlclxyXG4pIHtcclxuICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLWNvbG9yO1xyXG4gIGJvcmRlci10b3A6IDA7XHJcbiAgYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XHJcbiAgY29sb3I6ICRjb2xvcjtcclxuICB0cmFuc2l0aW9uOiBhbGwgMC41cyBlYXNlO1xyXG59XHJcblxyXG4vLy8gQXVnbWVudHMgYSB0YWIgY29udGVudCBjb250YWluZXIgdG8gaGF2ZSBhIHZlcnRpY2FsIHN0eWxlLCBieSBzaGlmdGluZyB0aGUgYm9yZGVyIGFyb3VuZC4gVXNlIHRoaXMgaW4gY29uanVuY3Rpb24gd2l0aCBgdGFicy1jb250ZW50KClgLlxyXG5AbWl4aW4gdGFicy1jb250ZW50LXZlcnRpY2FsIChcclxuICAkYm9yZGVyLWNvbG9yOiAkdGFiLWNvbnRlbnQtYm9yZGVyXHJcbikge1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItY29sb3I7XHJcbiAgYm9yZGVyLSN7JGdsb2JhbC1sZWZ0fTogMDtcclxufVxyXG5cclxuLy8vIEFkZHMgc3R5bGVzIGZvciBhbiBpbmRpdmlkdWFsIHRhYiBjb250ZW50IHBhbmVsIHdpdGhpbiB0aGUgdGFiIGNvbnRlbnQgY29udGFpbmVyLlxyXG5AbWl4aW4gdGFicy1wYW5lbCAoXHJcbiAgJHBhZGRpbmc6ICR0YWItY29udGVudC1wYWRkaW5nXHJcbikge1xyXG4gIGRpc3BsYXk6IG5vbmU7XHJcbiAgcGFkZGluZzogJHBhZGRpbmc7XHJcblxyXG4gICYuaXMtYWN0aXZlIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gIH1cclxufVxyXG5cclxuQG1peGluIGZvdW5kYXRpb24tdGFicyB7XHJcbiAgLnRhYnMge1xyXG4gICAgQGluY2x1ZGUgdGFicy1jb250YWluZXI7XHJcbiAgfVxyXG5cclxuICAvLyBWZXJ0aWNhbFxyXG4gIC50YWJzLnZlcnRpY2FsIHtcclxuICAgIEBpbmNsdWRlIHRhYnMtY29udGFpbmVyLXZlcnRpY2FsO1xyXG4gIH1cclxuXHJcbiAgLy8gU2ltcGxlXHJcbiAgLnRhYnMuc2ltcGxlIHtcclxuICAgID4gbGkgPiBhIHtcclxuICAgICAgcGFkZGluZzogMDtcclxuXHJcbiAgICAgICY6aG92ZXIge1xyXG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBQcmltYXJ5IGNvbG9yXHJcbiAgLnRhYnMucHJpbWFyeSB7XHJcbiAgICBiYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvcjtcclxuXHJcbiAgICA+IGxpID4gYSB7XHJcbiAgICAgIGNvbG9yOiBjb2xvci1waWNrLWNvbnRyYXN0KCRwcmltYXJ5LWNvbG9yKTtcclxuXHJcbiAgICAgICY6aG92ZXIsXHJcbiAgICAgICY6Zm9jdXMge1xyXG4gICAgICAgIGJhY2tncm91bmQ6IHNtYXJ0LXNjYWxlKCRwcmltYXJ5LWNvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnRhYnMtdGl0bGUge1xyXG4gICAgQGluY2x1ZGUgdGFicy10aXRsZTtcclxuICB9XHJcblxyXG4gIC50YWJzLWNvbnRlbnQge1xyXG4gICAgQGluY2x1ZGUgdGFicy1jb250ZW50O1xyXG4gIH1cclxuXHJcbiAgLnRhYnMtY29udGVudC52ZXJ0aWNhbCB7XHJcbiAgICBAaW5jbHVkZSB0YWJzLWNvbnRlbnQtdmVydGljYWw7XHJcbiAgfVxyXG5cclxuICAudGFicy1wYW5lbCB7XHJcbiAgICBAaW5jbHVkZSB0YWJzLXBhbmVsO1xyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgdGl0bGUtYmFyXHJcbi8vLy9cclxuXHJcbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGEgdGl0bGUgYmFyLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJHRpdGxlYmFyLWJhY2tncm91bmQ6ICRibGFjayAhZGVmYXVsdDtcclxuXHJcbi8vLyBDb2xvciBvZiB0ZXh0IGluc2lkZSBhIHRpdGxlIGJhci5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiR0aXRsZWJhci1jb2xvcjogJHdoaXRlICFkZWZhdWx0O1xyXG5cclxuLy8vIFBhZGRpbmcgaW5zaWRlIGEgdGl0bGUgYmFyLlxyXG4vLy8gQHR5cGUgTGVuZ3RoXHJcbiR0aXRsZWJhci1wYWRkaW5nOiAwLjVyZW0gIWRlZmF1bHQ7XHJcblxyXG4vLy8gRm9udCB3ZWlnaHQgb2YgdGV4dCBpbnNpZGUgYSB0aXRsZSBiYXIuXHJcbi8vLyBAdHlwZSBXZWlnaHRcclxuJHRpdGxlYmFyLXRleHQtZm9udC13ZWlnaHQ6IGJvbGQgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQ29sb3Igb2YgbWVudSBpY29ucyBpbnNpZGUgYSB0aXRsZSBiYXIuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kdGl0bGViYXItaWNvbi1jb2xvcjogJHdoaXRlICFkZWZhdWx0O1xyXG5cclxuLy8vIENvbG9yIG9mIG1lbnUgaWNvbnMgaW5zaWRlIGEgdGl0bGUgYmFyIG9uIGhvdmVyLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJHRpdGxlYmFyLWljb24tY29sb3ItaG92ZXI6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcclxuXHJcbi8vLyBTcGFjaW5nIGJldHdlZW4gdGhlIG1lbnUgaWNvbiBhbmQgdGV4dCBpbnNpZGUgYSB0aXRsZSBiYXIuXHJcbi8vLyBAdHlwZSBMZW5ndGhcclxuJHRpdGxlYmFyLWljb24tc3BhY2luZzogMC4yNXJlbSAhZGVmYXVsdDtcclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLXRpdGxlLWJhciB7XHJcbiAgLnRpdGxlLWJhciB7XHJcbiAgICBwYWRkaW5nOiAkdGl0bGViYXItcGFkZGluZztcclxuICAgIGJhY2tncm91bmQ6ICR0aXRsZWJhci1iYWNrZ3JvdW5kO1xyXG4gICAgY29sb3I6ICR0aXRsZWJhci1jb2xvcjtcclxuXHJcbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgfVxyXG4gICAgQGVsc2Uge1xyXG4gICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcclxuICAgIH1cclxuXHJcbiAgICAubWVudS1pY29uIHtcclxuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogJHRpdGxlYmFyLWljb24tc3BhY2luZztcclxuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICR0aXRsZWJhci1pY29uLXNwYWNpbmc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcclxuICAgIC50aXRsZS1iYXItbGVmdCxcclxuICAgIC50aXRsZS1iYXItcmlnaHQge1xyXG4gICAgICBmbGV4OiAxIDEgMHB4OyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIHplcm8tdW5pdFxyXG4gICAgfVxyXG5cclxuICAgIC50aXRsZS1iYXItcmlnaHQge1xyXG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcclxuICAgIH1cclxuICB9XHJcbiAgQGVsc2Uge1xyXG4gICAgLnRpdGxlLWJhci1sZWZ0IHtcclxuICAgICAgZmxvYXQ6IGxlZnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLnRpdGxlLWJhci1yaWdodCB7XHJcbiAgICAgIGZsb2F0OiByaWdodDtcclxuICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAudGl0bGUtYmFyLXRpdGxlIHtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICBmb250LXdlaWdodDogJHRpdGxlYmFyLXRleHQtZm9udC13ZWlnaHQ7XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCB0b3AtYmFyXHJcbi8vLy9cclxuXHJcbi8vLyBQYWRkaW5nIGZvciB0aGUgdG9wIGJhci5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kdG9wYmFyLXBhZGRpbmc6IDAuNXJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciB0aGUgdG9wIGJhci4gVGhpcyBjb2xvciBhbHNvIGNhc2NhZGVzIHRvIG1lbnVzIHdpdGhpbiB0aGUgdG9wIGJhci5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiR0b3BiYXItYmFja2dyb3VuZDogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQmFja2dyb3VuZCBjb2xvciBzdWJtZW51cyB3aXRoaW4gdGhlIHRvcCBiYXIuIFVzZWZ1bGwgaWYgJHRvcGJhci1iYWNrZ3JvdW5kIGlzIHRyYW5zcGFyZW50LlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJHRvcGJhci1zdWJtZW51LWJhY2tncm91bmQ6ICR0b3BiYXItYmFja2dyb3VuZCAhZGVmYXVsdDtcclxuXHJcbi8vLyBTcGFjaW5nIGZvciB0aGUgdG9wIGJhciB0aXRsZS5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kdG9wYmFyLXRpdGxlLXNwYWNpbmc6IDAuNXJlbSAxcmVtIDAuNXJlbSAwICFkZWZhdWx0O1xyXG5cclxuLy8vIE1heGltdW0gd2lkdGggb2YgYDxpbnB1dD5gIGVsZW1lbnRzIGluc2lkZSB0aGUgdG9wIGJhci5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kdG9wYmFyLWlucHV0LXdpZHRoOiAyMDBweCAhZGVmYXVsdDtcclxuXHJcbi8vLyBCcmVha3BvaW50IGF0IHdoaWNoIHRvcCBiYXIgc3dpdGNoZXMgZnJvbSBtb2JpbGUgdG8gZGVza3RvcCB2aWV3LlxyXG4vLy8gQHR5cGUgQnJlYWtwb2ludFxyXG4kdG9wYmFyLXVuc3RhY2stYnJlYWtwb2ludDogbWVkaXVtICFkZWZhdWx0O1xyXG5cclxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIHRvcCBiYXIgY29udGFpbmVyLlxyXG5AbWl4aW4gdG9wLWJhci1jb250YWluZXIge1xyXG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtd3JhcDogbm93cmFwO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICB9XHJcbiAgQGVsc2Uge1xyXG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XHJcbiAgfVxyXG5cclxuICBwYWRkaW5nOiAkdG9wYmFyLXBhZGRpbmc7XHJcblxyXG4gICYsXHJcbiAgdWwge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHRvcGJhci1iYWNrZ3JvdW5kO1xyXG4gIH1cclxuXHJcbiAgLy8gQ2hlY2sgaWYgJHRvcGJhci1iYWNrZ3JvdW5kIGlzIGRpZmZlcm50IGZyb20gJHRvcGJhci1iYWNrZ3JvdW5kLXN1Ym1lbnVcclxuICBAaWYgKCR0b3BiYXItYmFja2dyb3VuZCAhPSAkdG9wYmFyLXN1Ym1lbnUtYmFja2dyb3VuZCkge1xyXG4gICAgdWwgdWwge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdG9wYmFyLXN1Ym1lbnUtYmFja2dyb3VuZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFJlc3RyYWluIHdpZHRoIG9mIGlucHV0cyBieSBkZWZhdWx0IHRvIG1ha2UgdGhlbSBlYXNpZXIgdG8gYXJyYW5nZVxyXG4gIGlucHV0IHtcclxuICAgIG1heC13aWR0aDogJHRvcGJhci1pbnB1dC13aWR0aDtcclxuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAxcmVtO1xyXG4gIH1cclxuXHJcbiAgLy8gVGhlIGFib3ZlIHN0eWxlcyBzaG91bGRuJ3QgYXBwbHkgdG8gaW5wdXQgZ3JvdXAgZmllbGRzXHJcbiAgLmlucHV0LWdyb3VwLWZpZWxkIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06IDA7XHJcbiAgfVxyXG5cclxuICBpbnB1dC5idXR0b24geyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXF1YWxpZnlpbmctZWxlbWVudHNcclxuICAgIHdpZHRoOiBhdXRvO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIE1ha2VzIHNlY3Rpb25zIG9mIGEgdG9wIGJhciBzdGFjayBvbiB0b3Agb2YgZWFjaCBvdGhlci5cclxuQG1peGluIHRvcC1iYXItc3RhY2tlZCB7XHJcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICBmbGV4LXdyYXA6IHdyYXA7XHJcblxyXG4gICAgLy8gU3ViLXNlY3Rpb25zXHJcbiAgICAudG9wLWJhci1sZWZ0LFxyXG4gICAgLnRvcC1iYXItcmlnaHQge1xyXG4gICAgICBmbGV4OiAwIDAgMTAwJTtcclxuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgfVxyXG4gIH1cclxuICBAZWxzZSB7XHJcbiAgICAvLyBTdWItc2VjdGlvbnNcclxuICAgIC50b3AtYmFyLWxlZnQsXHJcbiAgICAudG9wLWJhci1yaWdodCB7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8vIFVuZG9lcyB0aGUgQ1NTIGFwcGxpZWQgYnkgdGhlIGB0b3AtYmFyLXN0YWNrZWQoKWAgbWl4aW4uXHJcbkBtaXhpbiB0b3AtYmFyLXVuc3RhY2sge1xyXG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xyXG4gICAgZmxleC13cmFwOiBub3dyYXA7XHJcblxyXG4gICAgLnRvcC1iYXItbGVmdCB7XHJcbiAgICAgIGZsZXg6IDEgMSBhdXRvO1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcbiAgICB9XHJcblxyXG4gICAgLnRvcC1iYXItcmlnaHQge1xyXG4gICAgICBmbGV4OiAwIDEgYXV0bztcclxuICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBlbHNlIHtcclxuICAgIC50b3AtYmFyLWxlZnQsXHJcbiAgICAudG9wLWJhci1yaWdodCB7XHJcbiAgICAgIHdpZHRoOiBhdXRvO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuQG1peGluIGZvdW5kYXRpb24tdG9wLWJhciB7XHJcbiAgLy8gVG9wIGJhciBjb250YWluZXJcclxuICAudG9wLWJhciB7XHJcbiAgICBAaW5jbHVkZSB0b3AtYmFyLWNvbnRhaW5lcjtcclxuXHJcbiAgICAvLyBTdGFjayBvbiBzbWFsbCBzY3JlZW5zIGJ5IGRlZmF1bHRcclxuICAgIEBpbmNsdWRlIHRvcC1iYXItc3RhY2tlZDtcclxuXHJcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0b3BiYXItdW5zdGFjay1icmVha3BvaW50KSB7XHJcbiAgICAgIEBpbmNsdWRlIHRvcC1iYXItdW5zdGFjaztcclxuICAgIH1cclxuXHJcbiAgICAvLyBHZW5lcmF0ZSBjbGFzc2VzIGZvciBzdGFja2luZyBvbiBlYWNoIHNjcmVlbiBzaXplIChkZWZpbmVkIGluICRicmVha3BvaW50LWNsYXNzZXMpXHJcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcclxuICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcclxuICAgICAgICAmLnN0YWNrZWQtZm9yLSN7JHNpemV9IHtcclxuICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUgZG93bikge1xyXG4gICAgICAgICAgICBAaW5jbHVkZSB0b3AtYmFyLXN0YWNrZWQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBTdWItc2VjdGlvbnNcclxuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcclxuICAgIC50b3AtYmFyLXRpdGxlIHtcclxuICAgICAgZmxleDogMCAwIGF1dG87XHJcbiAgICAgIG1hcmdpbjogJHRvcGJhci10aXRsZS1zcGFjaW5nO1xyXG4gICAgfVxyXG5cclxuICAgIC50b3AtYmFyLWxlZnQsXHJcbiAgICAudG9wLWJhci1yaWdodCB7XHJcbiAgICAgIGZsZXg6IDAgMCBhdXRvO1xyXG4gICAgfVxyXG4gIH1cclxuICBAZWxzZSB7XHJcbiAgICAudG9wLWJhci10aXRsZSB7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgZmxvYXQ6IGxlZnQ7XHJcbiAgICAgIHBhZGRpbmc6ICR0b3BiYXItdGl0bGUtc3BhY2luZztcclxuXHJcbiAgICAgIC5tZW51LWljb24ge1xyXG4gICAgICAgIGJvdHRvbTogMnB4O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnRvcC1iYXItbGVmdCB7XHJcbiAgICAgIGZsb2F0OiBsZWZ0O1xyXG4gICAgfVxyXG5cclxuICAgIC50b3AtYmFyLXJpZ2h0IHtcclxuICAgICAgZmxvYXQ6IHJpZ2h0O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgdGh1bWJuYWlsXHJcbi8vLy9cclxuXHJcbi8vLyBCb3JkZXIgYXJvdW5kIHRodW1ibmFpbCBpbWFnZXMuXHJcbi8vLyBAdHlwZSBCb3JkZXJcclxuJHRodW1ibmFpbC1ib3JkZXI6IHNvbGlkIDRweCAkd2hpdGUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQm90dG9tIG1hcmdpbiBmb3IgdGh1bWJuYWlsIGltYWdlcy5cclxuLy8vIEB0eXBlIExlbmd0aFxyXG4kdGh1bWJuYWlsLW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luICFkZWZhdWx0O1xyXG5cclxuLy8vIEJveCBzaGFkb3cgdW5kZXIgdGh1bWJuYWlsIGltYWdlcy5cclxuLy8vIEB0eXBlIFNoYWRvd1xyXG4kdGh1bWJuYWlsLXNoYWRvdzogMCAwIDAgMXB4IHJnYmEoJGJsYWNrLCAwLjIpICFkZWZhdWx0O1xyXG5cclxuLy8vIEJveCBzaGFkb3cgdW5kZXIgdGh1bWJuYWlsIGltYWdlcy5cclxuLy8vIEB0eXBlIFNoYWRvd1xyXG4kdGh1bWJuYWlsLXNoYWRvdy1ob3ZlcjogMCAwIDZweCAxcHggcmdiYSgkcHJpbWFyeS1jb2xvciwgMC41KSAhZGVmYXVsdDtcclxuXHJcbi8vLyBUcmFuc2l0aW9uIHByb3BydGllcyBmb3IgdGh1bWJuYWlsIGltYWdlcy5cclxuLy8vIEB0eXBlIFRyYW5zaXRpb25cclxuJHRodW1ibmFpbC10cmFuc2l0aW9uOiBib3gtc2hhZG93IDIwMG1zIGVhc2Utb3V0ICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgcmFkaXVzIGZvciB0aHVtYm5haWwgaW1hZ2VzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiR0aHVtYm5haWwtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcclxuXHJcbi8vLyBBZGRzIHRodW1ibmFpbCBzdHlsZXMgdG8gYW4gZWxlbWVudC5cclxuQG1peGluIHRodW1ibmFpbCB7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIG1heC13aWR0aDogMTAwJTtcclxuICBtYXJnaW4tYm90dG9tOiAkdGh1bWJuYWlsLW1hcmdpbi1ib3R0b207XHJcblxyXG4gIGJvcmRlcjogJHRodW1ibmFpbC1ib3JkZXI7XHJcbiAgYm9yZGVyLXJhZGl1czogJHRodW1ibmFpbC1yYWRpdXM7XHJcbiAgYm94LXNoYWRvdzogJHRodW1ibmFpbC1zaGFkb3c7XHJcblxyXG4gIGxpbmUtaGVpZ2h0OiAwO1xyXG59XHJcblxyXG5AbWl4aW4gdGh1bWJuYWlsLWxpbmsge1xyXG4gIHRyYW5zaXRpb246ICR0aHVtYm5haWwtdHJhbnNpdGlvbjtcclxuXHJcbiAgJjpob3ZlcixcclxuICAmOmZvY3VzIHtcclxuICAgIGJveC1zaGFkb3c6ICR0aHVtYm5haWwtc2hhZG93LWhvdmVyO1xyXG4gIH1cclxuXHJcbiAgaW1hZ2Uge1xyXG4gICAgYm94LXNoYWRvdzogbm9uZTtcclxuICB9XHJcbn1cclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLXRodW1ibmFpbCB7XHJcbiAgLnRodW1ibmFpbCB7XHJcbiAgICBAaW5jbHVkZSB0aHVtYm5haWw7XHJcbiAgfVxyXG5cclxuICBhLnRodW1ibmFpbCB7XHJcbiAgICBAaW5jbHVkZSB0aHVtYm5haWwtbGluaztcclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIHRvb2x0aXBcclxuLy8vL1xyXG5cclxuLy8vIERlZmF1bHQgY3Vyc29yIG9mIHRoZSBkZWZpbmVkIHRlcm0uXHJcbi8vLyBAdHlwZSBLZXl3b3JkXHJcbiRoYXMtdGlwLWN1cnNvcjogaGVscCAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGZvbnQgd2VpZ2h0IG9mIHRoZSBkZWZpbmVkIHRlcm0uXHJcbi8vLyBAdHlwZSBLZXl3b3JkIHwgTnVtYmVyXHJcbiRoYXMtdGlwLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgYm9yZGVyIGJvdHRvbSBvZiB0aGUgZGVmaW5lZCB0ZXJtLlxyXG4vLy8gQHR5cGUgTGlzdFxyXG4kaGFzLXRpcC1ib3JkZXItYm90dG9tOiBkb3R0ZWQgMXB4ICRkYXJrLWdyYXkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBjb2xvciBvZiB0aGUgdG9vbHRpcCBiYWNrZ3JvdW5kLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJHRvb2x0aXAtYmFja2dyb3VuZC1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgY29sb3Igb2YgdGhlIHRvb2x0aXAgZm9udC5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiR0b29sdGlwLWNvbG9yOiAkd2hpdGUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBwYWRkaW5nIG9mIHRoZSB0b29sdGlwIGJhY2tncm91bmQuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHRvb2x0aXAtcGFkZGluZzogMC43NXJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IG1heCB3aWR0aCBmb3IgdG9vbHRpcHMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHRvb2x0aXAtbWF4LXdpZHRoOiAxMHJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGZvbnQgc2l6ZSBvZiB0aGUgdG9vbHRpcCB0ZXh0LiBCeSBkZWZhdWx0LCB3ZSByZWNvbW1lbmQgYSBzbWFsbGVyIGZvbnQgc2l6ZSB0aGFuIHRoZSBib2R5IGNvcHkuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHRvb2x0aXAtZm9udC1zaXplOiAkc21hbGwtZm9udC1zaXplICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgcGlwIHdpZHRoIGZvciB0b29sdGlwcy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kdG9vbHRpcC1waXAtd2lkdGg6IDAuNzVyZW0gIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBwaXAgaGVpZ2h0IGZvciB0b29sdGlwcy4gVGhpcyBpcyBoZWxwZnVsIGZvciBjYWxjdWxhdGluZyB0aGUgZGlzdGFuY2Ugb2YgdGhlIHRvb2x0aXAgZnJvbSB0aGUgdG9vbHRpcCB3b3JkLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiR0b29sdGlwLXBpcC1oZWlnaHQ6ICR0b29sdGlwLXBpcC13aWR0aCAqIDAuODY2ICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgcmFkaXVzIGZvciB0b29sdGlwcy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kdG9vbHRpcC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xyXG5cclxuQG1peGluIGhhcy10aXAge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblxyXG4gIGJvcmRlci1ib3R0b206ICRoYXMtdGlwLWJvcmRlci1ib3R0b207XHJcbiAgZm9udC13ZWlnaHQ6ICRoYXMtdGlwLWZvbnQtd2VpZ2h0O1xyXG4gIGN1cnNvcjogJGhhcy10aXAtY3Vyc29yO1xyXG59XHJcblxyXG5AbWl4aW4gdG9vbHRpcCB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHRvcDogY2FsYygxMDAlICsgI3skdG9vbHRpcC1waXAtaGVpZ2h0fSk7XHJcbiAgei1pbmRleDogMTIwMDtcclxuXHJcbiAgbWF4LXdpZHRoOiAkdG9vbHRpcC1tYXgtd2lkdGg7XHJcbiAgcGFkZGluZzogJHRvb2x0aXAtcGFkZGluZztcclxuXHJcbiAgYm9yZGVyLXJhZGl1czogJHRvb2x0aXAtcmFkaXVzO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICR0b29sdGlwLWJhY2tncm91bmQtY29sb3I7XHJcbiAgZm9udC1zaXplOiAkdG9vbHRpcC1mb250LXNpemU7XHJcbiAgY29sb3I6ICR0b29sdGlwLWNvbG9yO1xyXG5cclxuICAmOjpiZWZvcmUge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIH1cclxuXHJcbiAgJi5ib3R0b20ge1xyXG4gICAgJjo6YmVmb3JlIHtcclxuICAgICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCR0b29sdGlwLXBpcC13aWR0aCwgJHRvb2x0aXAtYmFja2dyb3VuZC1jb2xvciwgdXApO1xyXG4gICAgICBib3R0b206IDEwMCU7XHJcbiAgICB9XHJcblxyXG4gICAgJi5hbGlnbi1jZW50ZXI6OmJlZm9yZSB7XHJcbiAgICAgIGxlZnQ6IDUwJTtcclxuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi50b3Age1xyXG4gICAgJjo6YmVmb3JlIHtcclxuICAgICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCR0b29sdGlwLXBpcC13aWR0aCwgJHRvb2x0aXAtYmFja2dyb3VuZC1jb2xvciwgZG93bik7XHJcbiAgICAgIHRvcDogMTAwJTtcclxuICAgICAgYm90dG9tOiBhdXRvO1xyXG4gICAgfVxyXG5cclxuICAgICYuYWxpZ24tY2VudGVyOjpiZWZvcmUge1xyXG4gICAgICBsZWZ0OiA1MCU7XHJcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICYubGVmdCB7XHJcbiAgICAmOjpiZWZvcmUge1xyXG4gICAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJHRvb2x0aXAtcGlwLXdpZHRoLCAkdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yLCByaWdodCk7XHJcbiAgICAgIGxlZnQ6IDEwMCU7XHJcbiAgICB9XHJcblxyXG4gICAgJi5hbGlnbi1jZW50ZXI6OmJlZm9yZSB7XHJcbiAgICAgIGJvdHRvbTogYXV0bztcclxuICAgICAgdG9wOiA1MCU7XHJcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICYucmlnaHQge1xyXG4gICAgJjo6YmVmb3JlIHtcclxuICAgICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCR0b29sdGlwLXBpcC13aWR0aCwgJHRvb2x0aXAtYmFja2dyb3VuZC1jb2xvciwgbGVmdCk7XHJcbiAgICAgIHJpZ2h0OiAxMDAlO1xyXG4gICAgICBsZWZ0OiBhdXRvO1xyXG4gICAgfVxyXG5cclxuICAgICYuYWxpZ24tY2VudGVyOjpiZWZvcmUge1xyXG4gICAgICBib3R0b206IGF1dG87XHJcbiAgICAgIHRvcDogNTAlO1xyXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLmFsaWduLXRvcDo6YmVmb3JlIHtcclxuICAgIGJvdHRvbTogYXV0bztcclxuICAgIHRvcDogMTAlO1xyXG4gIH1cclxuXHJcbiAgJi5hbGlnbi1ib3R0b206OmJlZm9yZSB7XHJcbiAgICBib3R0b206IDEwJTtcclxuICAgIHRvcDogYXV0bztcclxuICB9XHJcblxyXG4gICYuYWxpZ24tbGVmdDo6YmVmb3JlIHtcclxuICAgIGxlZnQ6IDEwJTtcclxuICAgIHJpZ2h0OiBhdXRvO1xyXG4gIH1cclxuXHJcbiAgJi5hbGlnbi1yaWdodDo6YmVmb3JlIHtcclxuICAgIGxlZnQ6IGF1dG87XHJcbiAgICByaWdodDogMTAlO1xyXG4gIH1cclxufVxyXG5cclxuQG1peGluIGZvdW5kYXRpb24tdG9vbHRpcCB7XHJcbiAgLmhhcy10aXAge1xyXG4gICAgQGluY2x1ZGUgaGFzLXRpcDtcclxuICB9XHJcblxyXG4gIC50b29sdGlwIHtcclxuICAgIEBpbmNsdWRlIHRvb2x0aXA7XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBwcm90b3R5cGVcclxuLy8vL1xyXG5cclxuLy8gUmVsYXRpb25hbCBNaXhpbnNcclxuQGltcG9ydCAncmVsYXRpb24nO1xyXG5cclxuLy8gQm94IE1peGluXHJcbkBpbXBvcnQgJ2JveCc7XHJcblxyXG4vLyBSb3RhdGUgTWl4aW5cclxuQGltcG9ydCAncm90YXRlJztcclxuXHJcbi8vIFRleHQgdXRpbGl0aWVzXHJcbkBpbXBvcnQgJ3RleHQtdXRpbGl0aWVzJztcclxuXHJcbi8vIFRleHQgdHJhbnNmb3JtYXRpb24gY2xhc3Nlc1xyXG5AaW1wb3J0ICd0ZXh0LXRyYW5zZm9ybWF0aW9uJztcclxuXHJcbi8vIFRleHQgRGVjb3JhdGlvbiBjbGFzc2VzXHJcbkBpbXBvcnQgJ3RleHQtZGVjb3JhdGlvbic7XHJcblxyXG4vLyBGb250IFN0eWxpbmdcclxuQGltcG9ydCAnZm9udC1zdHlsaW5nJztcclxuXHJcbi8vIExpc3QgU3R5bGUgdHlwZVxyXG5AaW1wb3J0ICdsaXN0LXN0eWxlLXR5cGUnO1xyXG5cclxuLy8gUm91bmRlZCBVdGlsaXR5XHJcbkBpbXBvcnQgJ3JvdW5kZWQnO1xyXG5cclxuLy8gQm9yZGVyZWQgVXRpbGl0eVxyXG5AaW1wb3J0ICdib3JkZXJlZCc7XHJcblxyXG4vLyBTaGFkb3cgVXRpbGl0eVxyXG5AaW1wb3J0ICdzaGFkb3cnO1xyXG5cclxuLy8gQXJyb3cgVXRpbGl0eVxyXG5AaW1wb3J0ICdhcnJvdyc7XHJcblxyXG4vLyBTZXBhcmF0b3IgVXRpbGl0eVxyXG5AaW1wb3J0ICdzZXBhcmF0b3InO1xyXG5cclxuLy8gT3ZlcmZsb3cgaGVscGVyIGNsYXNzZXNcclxuQGltcG9ydCAnb3ZlcmZsb3cnO1xyXG5cclxuLy8gRGlzcGxheSBjbGFzc2VzXHJcbkBpbXBvcnQgJ2Rpc3BsYXknO1xyXG5cclxuLy8gUG9zaXRpb24gSGVscGVyc1xyXG5AaW1wb3J0ICdwb3NpdGlvbic7XHJcblxyXG4vLyBCb3JkZXIgYm94XHJcbkBpbXBvcnQgJ2JvcmRlci1ib3gnO1xyXG5cclxuLy8gQm9yZGVyIG5vbmUgVXRpbHR5XHJcbkBpbXBvcnQgJ2JvcmRlci1ub25lJztcclxuXHJcbi8vIFNpemluZyBVdGlsaXRpZXNcclxuQGltcG9ydCAnc2l6aW5nJztcclxuXHJcbi8vIFNwYWNpbmcgVXRpbGl0aWVzXHJcbkBpbXBvcnQgJ3NwYWNpbmcnO1xyXG5cclxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLWNsYXNzZXMge1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLXRleHQtdXRpbGl0aWVzO1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLXRleHQtdHJhbnNmb3JtYXRpb247XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtdGV4dC1kZWNvcmF0aW9uO1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLWZvbnQtc3R5bGluZztcclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1saXN0LXN0eWxlLXR5cGU7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtcm91bmRlZDtcclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1ib3JkZXJlZDtcclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1zaGFkb3c7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtYXJyb3c7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtc2VwYXJhdG9yO1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLW92ZXJmbG93O1xyXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLWRpc3BsYXk7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtcG9zaXRpb247XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtYm9yZGVyLWJveDtcclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1ib3JkZXItbm9uZTtcclxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1zaXppbmc7XHJcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtc3BhY2luZztcclxufVxyXG4iLCIvLy8gU2VsZWN0IGFsbCBjaGlsZHJlbiBmcm9tIHRoZSBmaXJzdCB0byBgJG51bWAuXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJG51bVtdIEZpcnN0IGBuYCBudW1iZXJzIG9mIHRvdGFsIGNoaWxkcmVuIFxyXG5AbWl4aW4gZmlyc3QoJG51bSkge1xyXG4gIEBpZiAkbnVtID09IDEge1xyXG4gICAgJjpmaXJzdC1jaGlsZCB7XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgfVxyXG4gIH0gQGVsc2Uge1xyXG4gICAgJjpudGgtY2hpbGQoLW4gKyAjeyRudW19KSB7XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8vIFNlbGVjdCB0aGUgZmlyc3QgZXhhY3QgY2hpbGRcclxuQG1peGluIGZpcnN0LWNoaWxkIHtcclxuICAmOmZpcnN0LW9mLXR5cGUge1xyXG4gICAgQGNvbnRlbnQ7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gU2VsZWN0IGFsbCBjaGlsZHJlbiBmcm9tIHRoZSBsYXN0IHRvIGAkbnVtYC5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbnVtW10gTGFzdCBgbmAgbnVtYmVycyBvZiB0b3RhbCBjaGlsZHJlbiBcclxuQG1peGluIGxhc3QoJG51bSkge1xyXG4gICY6bnRoLWxhc3QtY2hpbGQoLW4gKyAjeyRudW19KSB7XHJcbiAgICBAY29udGVudDtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBTZWxlY3QgdGhlIGxhc3QgZXhhY3QgY2hpbGRcclxuQG1peGluIGxhc3QtY2hpbGQge1xyXG4gICY6bGFzdC1vZi10eXBlIHtcclxuICAgIEBjb250ZW50O1xyXG4gIH1cclxufVxyXG5cclxuLy8vIFNlbGVjdCBjaGlsZHJlbiBldmVyeSBgJG51bWAuXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJG51bVtdIEV2ZXJ5IGBuYCBudW1iZXIgb2YgYWxsIGNoaWxkcmVuXHJcbkBtaXhpbiBldmVyeSgkbnVtKSB7XHJcbiAgJjpudGgtY2hpbGQoI3skbnVtfW4pIHtcclxuICAgIEBjb250ZW50O1xyXG4gIH1cclxufVxyXG5cclxuLy8vIFNlbGVjdCBvbmx5IHRoZSBmaXJzdCBhbmQgbGFzdCBjaGlsZC5cclxuQG1peGluIGZpcnN0LWxhc3Qge1xyXG4gICY6Zmlyc3QtY2hpbGQsXHJcbiAgJjpsYXN0LWNoaWxkIHtcclxuICAgIEBjb250ZW50O1xyXG4gIH1cclxufVxyXG5cclxuLy8vIFNlbGVjdCBhbGwgY2hpbGRyZW4gYWZ0ZXIgdGhlIGZpcnN0IHRvIGAkbnVtYC5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbnVtW10gQWZ0ZXIgRmlyc3QgYG5gIG51bWJlcnMgb2YgdG90YWwgY2hpbGRyZW4gXHJcbkBtaXhpbiBhZnRlci1maXJzdCgkbnVtKSB7XHJcbiAgJjpudGgtY2hpbGQobiArICN7JG51bSArIDF9KSB7XHJcbiAgICBAY29udGVudDtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBTZWxlY3QgYWxsIGNoaWxkcmVuIGJlZm9yZSBgJG51bWAgZnJvbSB0aGUgbGFzdC5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbnVtW10gRnJvbSBMYXN0IGBuYCBudW1iZXJzIG9mIHRvdGFsIGNoaWxkcmVuIFxyXG5AbWl4aW4gZnJvbS1sYXN0KCRudW0pIHtcclxuICAmOm50aC1sYXN0LWNoaWxkKCN7JG51bX0pIHtcclxuICAgIEBjb250ZW50O1xyXG4gIH1cclxufVxyXG5cclxuLy8vIFNlbGVjdCB0aGUgYCRudW1gIGNoaWxkIGZyb20gdGhlIGZpcnN0IGFuZCB0aGUgYCRudW1gIGNoaWxkIGZyb20gdGhlIGxhc3QuXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJG51bVtdIGBuYCBudW1iZXIgY2FsbGVkIGZyb20gZmlyc3QgYW5kIGxhc3QgXHJcbkBtaXhpbiBmcm9tLWZpcnN0LWxhc3QoJG51bSkge1xyXG4gICY6bnRoLWNoaWxkKCN7JG51bX0pLFxyXG4gICY6bnRoLWxhc3QtY2hpbGQoI3skbnVtfSkge1xyXG4gICAgQGNvbnRlbnQ7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gU2VsZWN0IGFsbCBjaGlsZHJlbiBidXQgYCRudW1gLlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRudW1bXSBgbmAgbnVtYmVyIHRoYXQgc2hvdWxkIGJlIGV4Y2x1ZGVkIGZyb20gYWxsIG90aGVyIGNoaWxkcmVuIFxyXG5AbWl4aW4gYWxsLWJ1dCgkbnVtKSB7XHJcbiAgJjpub3QoOm50aC1jaGlsZCgjeyRudW19KSkge1xyXG4gICAgQGNvbnRlbnQ7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gU2VsZWN0IGFsbCBjaGlsZHJlbiBiZXR3ZWVuIHRoZSBgJG51bWAgZmlyc3QgYW5kIHRoZSBgJG51bWAgbGFzdC5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbnVtW10gYG5gIG51bWJlciBleGNsdWRlZCBmcm9tIGZpcnN0IGFuZCBsYXN0IGZyb20gYWxsIG90aGVyIGNoaWxkcmVuXHJcbkBtaXhpbiBhbGwtYnV0LWZpcnN0LWxhc3QoJG51bSkge1xyXG4gICY6bnRoLWNoaWxkKG4gKyAjeyRudW19KTpudGgtbGFzdC1jaGlsZChuICsgI3skbnVtfSkge1xyXG4gICAgQGNvbnRlbnQ7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gV2lsbCBvbmx5IHNlbGVjdCB0aGUgY2hpbGQgaWYgaXTigJlzIHVuaXF1ZS4gVGhhdCBtZWFucyB0aGF0IGlmIHRoZXJlIGFyZSBhdCBsZWFzdCAyIGNoaWxkcmVuLCB0aGUgc3R5bGUgd2lsbCBub3QgYmUgYXBwbGllZC5cclxuQG1peGluIHVuaXF1ZSB7XHJcbiAgJjpvbmx5LWNoaWxkIHtcclxuICAgIEBjb250ZW50O1xyXG4gIH1cclxufVxyXG5cclxuLy8vIFdpbGwgb25seSBzZWxlY3QgY2hpbGRyZW4gaWYgdGhleSBhcmUgbm90IHVuaXF1ZS4gVGhhdCBtZWFucyB0aGF0IGlmIHRoZXJlIGFyZSBhdCBsZWFzdCAyIGNoaWxkcmVuLCB0aGUgc3R5bGUgd2lsbCBiZSBhcHBsaWVkLlxyXG5AbWl4aW4gbm90LXVuaXF1ZSgpIHtcclxuICAmOm5vdCg6b25seS1jaGlsZCkge1xyXG4gICAgQGNvbnRlbnQ7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gU2VsZWN0IGFsbCBjaGlsZHJlbiBiZXR3ZWVuIGAkZmlyc3RgIGFuZCBgJGxhc3RgLlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRmaXJzdFtdIEZpcnN0IGBudGhgIG51bWJlclxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRsYXN0W10gTGFzdCBgbnRoYCBudW1iZXJcclxuQG1peGluIGJldHdlZW4oJGZpcnN0LCAkbGFzdCkge1xyXG4gICY6bnRoLWNoaWxkKG4gKyAjeyRmaXJzdH0pOm50aC1jaGlsZCgtbiArICN7JGxhc3R9KSB7XHJcbiAgICBAY29udGVudDtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBTZWxlY3QgYWxsIGV2ZW4gY2hpbGRyZW4uXHJcbkBtaXhpbiBldmVuIHtcclxuICAmOm50aC1jaGlsZChldmVuKSB7XHJcbiAgICBAY29udGVudDtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBTZWxlY3QgYWxsIGV2ZW4gY2hpbGRyZW4gYmV0d2VlbiBgJGZpcnN0YCBhbmQgYCRsYXN0YC5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZmlyc3RbXSBGaXJzdCBgbnRoYCBudW1iZXJcclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbGFzdFtdIExhc3QgYG50aGAgbnVtYmVyXHJcbkBtaXhpbiBldmVuLWJldHdlZW4oJGZpcnN0LCAkbGFzdCkge1xyXG4gICY6bnRoLWNoaWxkKGV2ZW4pOm50aC1jaGlsZChuICsgI3skZmlyc3R9KTpudGgtY2hpbGQoLW4gKyAjeyRsYXN0fSkge1xyXG4gICAgQGNvbnRlbnQ7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gU2VsZWN0IGFsbCBvZGQgY2hpbGRyZW4uXHJcbkBtaXhpbiBvZGQge1xyXG4gICY6bnRoLWNoaWxkKG9kZCkge1xyXG4gICAgQGNvbnRlbnQ7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gU2VsZWN0IGFsbCBvZGQgY2hpbGRyZW4gYmV0d2VlbiBgJGZpcnN0YCBhbmQgYCRsYXN0YC5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZmlyc3RbXSBGaXJzdCBgbnRoYCBudW1iZXJcclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbGFzdFtdIExhc3QgYG50aGAgbnVtYmVyXHJcbkBtaXhpbiBvZGQtYmV0d2VlbigkZmlyc3QsICRsYXN0KSB7XHJcbiAgJjpudGgtY2hpbGQob2RkKTpudGgtY2hpbGQobiArICN7JGZpcnN0fSk6bnRoLWNoaWxkKC1uICsgI3skbGFzdH0pIHtcclxuICAgIEBjb250ZW50O1xyXG4gIH1cclxufVxyXG5cclxuLy8vIFNlbGVjdCBhbGwgYCRudW1gIGNoaWxkcmVuIGJldHdlZW4gYCRmaXJzdGAgYW5kIGAkbGFzdGAuXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJG51bVtdIEV2ZXJ5IGBuYCBudW1iZXIgYmV0d2VlbiBgJGZpcnN0YCBhbmQgYCRsYXN0YC5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZmlyc3RbXSBGaXJzdCBgbmAgbnVtYmVyXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGxhc3RbXSBMYXN0IGBuYCBudW1iZXJcclxuQG1peGluIG51bWJlci1iZXR3ZWVuKCRudW0sICRmaXJzdCwgJGxhc3QpIHtcclxuICAmOm50aC1jaGlsZCgjeyRudW19bik6bnRoLWNoaWxkKG4gKyAjeyRmaXJzdH0pOm50aC1jaGlsZCgtbiArICN7JGxhc3R9KSB7XHJcbiAgICBAY29udGVudDtcclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1ib3hcclxuLy8vL1xyXG5cclxuLy8vIEJveCBNaXhpbjogRWFzaWx5IGNyZWF0ZSBhIHNxdWFyZSwgcmVjdGFuZ2xlIG9yIGEgY2lyY2xlXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJHdpZHRoW10gV2lkdGggb2YgdGhlIGJveFxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRoZWlnaHRbJHdpZHRoXSBIZWlnaHQgb2YgdGhlIGJveCwgZGVmYXVsdHMgdG8gYCR3aWR0aGAgdG8gZWFzaWx5IG1ha2UgYSBzcXVhcmVcclxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGNpcmNsZVtmYWxzZV0gTWFrZXMgdGhlIGJveCBhIGNpcmNsZSwgYnkgZGVmYXVsdCBgZmFsc2VgLlxyXG5AbWl4aW4gYm94KFxyXG4gICR3aWR0aCwgXHJcbiAgJGhlaWdodDogJHdpZHRoLCBcclxuICAkY2lyY2xlOiBmYWxzZVxyXG4pIHtcclxuICB3aWR0aDogJHdpZHRoO1xyXG4gIGhlaWdodDogJGhlaWdodDtcclxuICBAaWYgJGNpcmNsZSB7XHJcbiAgICBib3JkZXItcmFkaXVzOiA1MCUgIWltcG9ydGFudDtcclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1yb3RhdGVcclxuLy8vL1xyXG5cclxuLy8vIFJvdGF0ZSBNaXhpbjogUm90YXRlIGFuIGVsZW1lbnQgdG8gYSBjZXJ0YWluIGRlZ1xyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRkZWdbXSBEZWdyZWUgb2Ygcm90YXRpb25cclxuQG1peGluIHJvdGF0ZSgkZGVnKSB7XHJcblx0dHJhbnNmb3JtOnJvdGF0ZSgkZGVnICsgZGVnKTtcclxufVxyXG5cclxuLy8vIFJvdGF0ZVggTWl4aW46IFJvdGF0ZSBhbiBlbGVtZW50IHRvIGEgY2VydGFpbiBkZWcgb24gWC1BeGlzXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGRlZ1tdIERlZ3JlZSBvZiByb3RhdGlvblxyXG5AbWl4aW4gcm90YXRlWCgkZGVnKSB7XHJcblx0dHJhbnNmb3JtOnJvdGF0ZVgoJGRlZyArIGRlZyk7XHJcbn1cclxuXHJcbi8vLyBSb3RhdGVZIE1peGluOiBSb3RhdGUgYW4gZWxlbWVudCB0byBhIGNlcnRhaW4gZGVnIG9uIFktQXhpc1xyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRkZWdbXSBEZWdyZWUgb2Ygcm90YXRpb25cclxuQG1peGluIHJvdGF0ZVkoJGRlZykge1xyXG5cdHRyYW5zZm9ybTpyb3RhdGVZKCRkZWcgKyBkZWcpO1xyXG59XHJcblxyXG4vLy8gUm90YXRlWiBNaXhpbjogUm90YXRlIGFuIGVsZW1lbnQgdG8gYSBjZXJ0YWluIGRlZyBvbiBaLUF4aXNcclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZGVnW10gRGVncmVlIG9mIHJvdGF0aW9uXHJcbkBtaXhpbiByb3RhdGVaKCRkZWcpIHtcclxuXHR0cmFuc2Zvcm06cm90YXRlWigkZGVnICsgZGVnKTtcclxufSIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBwcm90b3R5cGUtdGV4dC11dGlsaXRpZXNcclxuLy8vL1xyXG5cclxuLy8vIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIHRleHQgdXRpbGl0aWVzXHJcbi8vLyBAdHlwZSBCb29sZWFuXHJcbiRwcm90b3R5cGUtdXRpbGl0aWVzLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IFZhbHVlIGZvciBgdGV4dC1vdmVyZmxvd2AgdmFyaWFibGVcclxuLy8vIEB0eXBlIFN0cmluZ1xyXG4kcHJvdG90eXBlLXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzICFkZWZhdWx0O1xyXG5cclxuLy8vIEltYWdlIFJlcGxhY2VtZW50IHV0aWxpdHkuIGB0ZXh0LWhpZGVgXHJcbkBtaXhpbiB0ZXh0LWhpZGUge1xyXG4gIGZvbnQ6IDAvMCBhICFpbXBvcnRhbnQ7XHJcbiAgY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcbiAgdGV4dC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG4gIGJvcmRlcjogMCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vLy8gVHJ1bmNhdGluZyB0aGUgdGV4dCwgZWxpcHNpcyBieSBkZWZhdWx0LlxyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvdmVyZmxvdyBbJHByb3RvdHlwZS10ZXh0LW92ZXJmbG93XSBUZXh0IFRydW5jYXRlXHJcbkBtaXhpbiB0ZXh0LXRydW5jYXRlKFxyXG4gICRvdmVyZmxvdzogJHByb3RvdHlwZS10ZXh0LW92ZXJmbG93XHJcbikge1xyXG4gIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50O1xyXG4gIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcclxuICB0ZXh0LW92ZXJmbG93OiAkb3ZlcmZsb3c7IFxyXG4gIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDtcclxufVxyXG5cclxuLy8vIE5vIHdyYXBwaW5nIG9mIHRoZSB0ZXh0LiBgdGV4dC1ub3dyYXBgXHJcbkBtaXhpbiB0ZXh0LW5vd3JhcCB7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vLy8gV3JhcHBpbmcgb2YgdGhlIHRleHQuIGB0ZXh0LXdyYXBgXHJcbkBtaXhpbiB0ZXh0LXdyYXAge1xyXG4gIHdvcmQtd3JhcDogYnJlYWstd29yZCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtdGV4dC11dGlsaXRpZXMge1xyXG4gIC50ZXh0LWhpZGUge1xyXG4gICAgQGluY2x1ZGUgdGV4dC1oaWRlO1xyXG4gIH1cclxuXHJcbiAgLnRleHQtdHJ1bmNhdGUge1xyXG4gICAgQGluY2x1ZGUgdGV4dC10cnVuY2F0ZTtcclxuICB9XHJcblxyXG4gIC50ZXh0LW5vd3JhcCB7XHJcbiAgICBAaW5jbHVkZSB0ZXh0LW5vd3JhcDtcclxuICB9XHJcblxyXG4gIC50ZXh0LXdyYXAge1xyXG4gICAgQGluY2x1ZGUgdGV4dC13cmFwO1xyXG4gIH1cclxuXHJcbiAgQGlmICgkcHJvdG90eXBlLXV0aWxpdGllcy1icmVha3BvaW50cykge1xyXG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcclxuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xyXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XHJcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcclxuICAgICAgICAgIC4jeyRzaXplfS10ZXh0LWhpZGUge1xyXG4gICAgICAgICAgICBAaW5jbHVkZSB0ZXh0LWhpZGU7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLiN7JHNpemV9LXRleHQtdHJ1bmNhdGUge1xyXG4gICAgICAgICAgICBAaW5jbHVkZSB0ZXh0LXRydW5jYXRlO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC4jeyRzaXplfS10ZXh0LW5vd3JhcCB7XHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRleHQtbm93cmFwO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC4jeyRzaXplfS10ZXh0LXdyYXAge1xyXG4gICAgICAgICAgICBAaW5jbHVkZSB0ZXh0LXdyYXA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBwcm90b3R5cGUtdGV4dC10cmFuc2Zvcm1hdGlvblxyXG4vLy8vXHJcblxyXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgdGV4dCB0cmFuc2Zvcm1hdGlvbiBjbGFzc2VzXHJcbi8vLyBAdHlwZSBCb29sZWFuXHJcbiRwcm90b3R5cGUtdHJhbnNmb3JtYXRpb24tYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xyXG5cclxuLy8vIE1hcCBjb250YWluaW5nIGFsbCB0aGUgYHRleHQtdHJhbnNmb3JtYXRpb25gIGNsYXNzZXNcclxuLy8vIEB0eXBlIE1hcFxyXG4kcHJvdG90eXBlLXRleHQtdHJhbnNmb3JtYXRpb246IChcclxuICBsb3dlcmNhc2UsXHJcbiAgdXBwZXJjYXNlLFxyXG4gIGNhcGl0YWxpemVcclxuKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBUZXh0IFRyYW5zZm9ybWF0aW9uLCBieSBkZWZhdWx0IGNvbWluZyB0aHJvdWdoIGEgbWFwIGAkcHJvdG90eXBlLXRleHQtdHJhbnNmb3JtYXRpb25gXHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHRyYW5zZm9ybWF0aW9uIFtdIFRleHQgVHJhbnNmb3JtYXRpb25cclxuQG1peGluIHRleHQtdHJhbnNmb3JtKCR0cmFuc2Zvcm1hdGlvbikge1xyXG4gIHRleHQtdHJhbnNmb3JtOiAkdHJhbnNmb3JtYXRpb24gIWltcG9ydGFudDtcclxufVxyXG5cclxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLXRleHQtdHJhbnNmb3JtYXRpb24ge1xyXG4gIEBlYWNoICR0cmFuc2Zvcm1hdGlvbiBpbiAkcHJvdG90eXBlLXRleHQtdHJhbnNmb3JtYXRpb24ge1xyXG4gICAgLnRleHQtI3skdHJhbnNmb3JtYXRpb259IHtcclxuICAgICAgQGluY2x1ZGUgdGV4dC10cmFuc2Zvcm0oJHRyYW5zZm9ybWF0aW9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpZiAoJHByb3RvdHlwZS10cmFuc2Zvcm1hdGlvbi1icmVha3BvaW50cykge1xyXG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcclxuICBcdEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xyXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XHJcbiAgICAgICAgQGVhY2ggJHRyYW5zZm9ybWF0aW9uIGluICRwcm90b3R5cGUtdGV4dC10cmFuc2Zvcm1hdGlvbiB7XHJcbiAgICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xyXG4gICAgICAgICAgICAuI3skc2l6ZX0tdGV4dC0jeyR0cmFuc2Zvcm1hdGlvbn0ge1xyXG4gIFx0XHRcdCAgICAgIEBpbmNsdWRlIHRleHQtdHJhbnNmb3JtKCR0cmFuc2Zvcm1hdGlvbik7XHJcbiAgXHRcdFx0ICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIHByb3RvdHlwZS10ZXh0LWRlY29yYXRpb25cclxuLy8vL1xyXG5cclxuLy8vIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIHRleHQgZGVjb3JhdGlvbiBjbGFzc2VzXHJcbi8vLyBAdHlwZSBCb29sZWFuXHJcbiRwcm90b3R5cGUtZGVjb3JhdGlvbi1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XHJcblxyXG4vLy8gTWFwIGNvbnRhaW5pbmcgYWxsIHRoZSBgdGV4dC1kZWNvcmF0aW9uYCBjbGFzc2VzXHJcbi8vLyBAdHlwZSBNYXBcclxuJHByb3RvdHlwZS10ZXh0LWRlY29yYXRpb246IChcclxuICBvdmVybGluZSxcclxuICB1bmRlcmxpbmUsXHJcbiAgbGluZS10aHJvdWdoLFxyXG4pICFkZWZhdWx0O1xyXG5cclxuLy8vIFRleHQgRGVjb3JhdGlvbiwgYnkgZGVmYXVsdCBjb21pbmcgdGhyb3VnaCBhIG1hcCBgJHByb3RvdHlwZS10ZXh0LWRlY29yYXRpb25gXHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGRlY29yYXRpb24gW10gVGV4dCBEZWNvcmF0aW9uXHJcbkBtaXhpbiB0ZXh0LWRlY29yYXRpb24oJGRlY29yYXRpb24pIHtcclxuICB0ZXh0LWRlY29yYXRpb246ICRkZWNvcmF0aW9uICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS10ZXh0LWRlY29yYXRpb24ge1xyXG4gIEBlYWNoICRkZWNvcmF0aW9uIGluICRwcm90b3R5cGUtdGV4dC1kZWNvcmF0aW9uIHtcclxuICAgIC50ZXh0LSN7JGRlY29yYXRpb259IHtcclxuICAgICAgQGluY2x1ZGUgdGV4dC1kZWNvcmF0aW9uKCRkZWNvcmF0aW9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpZiAoJHByb3RvdHlwZS1kZWNvcmF0aW9uLWJyZWFrcG9pbnRzKSB7XHJcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xyXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcclxuICAgICAgICBAZWFjaCAkZGVjb3JhdGlvbiBpbiAkcHJvdG90eXBlLXRleHQtZGVjb3JhdGlvbiB7XHJcbiAgICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xyXG4gICAgICAgICAgICAuI3skc2l6ZX0tdGV4dC0jeyRkZWNvcmF0aW9ufSB7XHJcbiAgICAgICAgICAgICAgQGluY2x1ZGUgdGV4dC1kZWNvcmF0aW9uKCRkZWNvcmF0aW9uKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgcHJvdG90eXBlLWZvbnQtc3R5bGluZ1xyXG4vLy8vXHJcblxyXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgZm9udCBzdHlsaW5nIHR5cGVzXHJcbi8vLyBAdHlwZSBCb29sZWFuXHJcbiRwcm90b3R5cGUtZm9udC1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XHJcblxyXG4vLy8gTGV0dGVyIHNwYWNpbmcgZm9yIGAuZm9udC13aWRlYFxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRwcm90b3R5cGUtd2lkZS1sZXR0ZXItc3BhY2luZzogcmVtLWNhbGMoNCkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCB3ZWlnaHQgZm9yIGAuZm9udC1ub3JtYWxgLCBkZWZhdWx0ZWQgdG8gYGdsb2JhbC13ZWlnaHQtbm9ybWFsYFxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRwcm90b3R5cGUtZm9udC1ub3JtYWw6ICRnbG9iYWwtd2VpZ2h0LW5vcm1hbCAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IHdlaWdodCBmb3IgYC5mb250LWJvbGRgLCBkZWZhdWx0ZWQgdG8gYGdsb2JhbC13ZWlnaHQtYm9sZGBcclxuLy8vIEB0eXBlIE51bWJlclxyXG4kcHJvdG90eXBlLWZvbnQtYm9sZDogJGdsb2JhbC13ZWlnaHQtYm9sZCAhZGVmYXVsdDtcclxuXHJcbi8vLyBGb250IHdpZGUgbGV0dGVyIHNwYWNpbmchXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGxldHRlci1zcGFjaW5nIFskcHJvdG90eXBlLXdpZGUtbGV0dGVyLXNwYWNpbmddIFdpZGUgbGV0dGVyIHNwYWNpbmcgZm9yIHRoZSBmb250XHJcbkBtaXhpbiBmb250LXdpZGUoXHJcbiAgJGxldHRlci1zcGFjaW5nOiAkcHJvdG90eXBlLXdpZGUtbGV0dGVyLXNwYWNpbmdcclxuKSB7XHJcbiAgbGV0dGVyLXNwYWNpbmc6ICRsZXR0ZXItc3BhY2luZztcclxufVxyXG5cclxuLy8vIEZvbnQgV2VpZ2h0IE5vcm1hbCwgZGVmYXVsdCB2YWx1ZSBjb21pbmcgdGhyb3VnaCBgZ2xvYmFsLXdlaWdodC1ub3JtYWxgXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJHdlaWdodCBbJHByb3RvdHlwZS1mb250LW5vcm1hbF0gV2VpZ2h0IG9mIHRoZSBmb250IChub3JtYWwpXHJcbkBtaXhpbiBmb250LW5vcm1hbChcclxuICAkd2VpZ2h0OiAkcHJvdG90eXBlLWZvbnQtbm9ybWFsXHJcbikge1xyXG4gIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0O1xyXG59XHJcblxyXG4vLy8gRm9udCBXZWlnaHQgQm9sZCwgZGVmYXVsdCB2YWx1ZSBjb21pbmcgdGhyb3VnaCBgZ2xvYmFsLXdlaWdodC1ib2xkYFxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3ZWlnaHQgWyRwcm90b3R5cGUtZm9udC1ib2xkXSBXZWlnaHQgb2YgdGhlIGZvbnQgKGJvbGQpXHJcbkBtaXhpbiBmb250LWJvbGQoXHJcbiAgJHdlaWdodDogJHByb3RvdHlwZS1mb250LWJvbGRcclxuKSB7XHJcbiAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XHJcbn1cclxuXHJcbi8vLyBGb250IFN0eWxlIEl0YWxpY1xyXG5AbWl4aW4gZm9udC1pdGFsaWMge1xyXG4gIGZvbnQtc3R5bGU6IGl0YWxpYyAhaW1wb3J0YW50O1xyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtZm9udC1zdHlsaW5nIHtcclxuICAuZm9udC13aWRle1xyXG4gICAgQGluY2x1ZGUgZm9udC13aWRlO1xyXG4gIH1cclxuXHJcbiAgLmZvbnQtbm9ybWFsIHtcclxuICAgIEBpbmNsdWRlIGZvbnQtbm9ybWFsO1xyXG4gIH1cclxuXHJcbiAgLmZvbnQtYm9sZCB7XHJcbiAgICBAaW5jbHVkZSBmb250LWJvbGQ7XHJcbiAgfVxyXG5cclxuICAuZm9udC1pdGFsaWMge1xyXG4gICAgQGluY2x1ZGUgZm9udC1pdGFsaWM7XHJcbiAgfVxyXG5cclxuICBAaWYgKCRwcm90b3R5cGUtZm9udC1icmVha3BvaW50cykge1xyXG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcclxuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xyXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XHJcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcclxuICAgICAgICAgIC4jeyRzaXplfS1mb250LXdpZGV7XHJcbiAgICAgICAgICAgIEBpbmNsdWRlIGZvbnQtd2lkZTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAuI3skc2l6ZX0tZm9udC1ub3JtYWwge1xyXG4gICAgICAgICAgICBAaW5jbHVkZSBmb250LW5vcm1hbDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAuI3skc2l6ZX0tZm9udC1ib2xkIHtcclxuICAgICAgICAgICAgQGluY2x1ZGUgZm9udC1ib2xkO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC4jeyRzaXplfS1mb250LWl0YWxpYyB7XHJcbiAgICAgICAgICAgIEBpbmNsdWRlIGZvbnQtaXRhbGljO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgcHJvdG90eXBlLWxpc3Qtc3R5bGUtdHlwZVxyXG4vLy8vXHJcblxyXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgbGlzdCBzdHlsaW5nIHR5cGVzXHJcbi8vLyBAdHlwZSBCb29sZWFuXHJcbiRwcm90b3R5cGUtbGlzdC1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XHJcblxyXG4vLy8gTWFwIGNvbnRhaW5pbmcgYWxsIHRoZSBgc3R5bGUtdHlwZS11bm9yZGVyZWRgIGNsYXNzZXNcclxuLy8vIEB0eXBlIE1hcFxyXG4kcHJvdG90eXBlLXN0eWxlLXR5cGUtdW5vcmRlcmVkOiAoXHJcbiAgZGlzYyxcclxuICBjaXJjbGUsXHJcbiAgc3F1YXJlXHJcbikgIWRlZmF1bHQ7XHJcblxyXG4vLy8gTWFwIGNvbnRhaW5pbmcgYWxsIHRoZSBgc3R5bGUtdHlwZS1vcmRlcmVkYCBjbGFzc2VzXHJcbi8vLyBAdHlwZSBNYXBcclxuJHByb3RvdHlwZS1zdHlsZS10eXBlLW9yZGVyZWQ6IChcclxuICBkZWNpbWFsLFxyXG4gIGxvd2VyLWFscGhhLFxyXG4gIGxvd2VyLWxhdGluLFxyXG4gIGxvd2VyLXJvbWFuLFxyXG4gIHVwcGVyLWFscGhhLFxyXG4gIHVwcGVyLWxhdGluLFxyXG4gIHVwcGVyLXJvbWFuXHJcbikgIWRlZmF1bHQ7XHJcblxyXG5cclxuLy8vIFN0eWxlIHR5cGUgZm9yIHVub3JkZXJlZCBMaXN0cywgYnkgZGVmYXVsdCBjb21pbmcgdGhyb3VnaCBhIG1hcCBgJHByb3RvdHlwZS1zdHlsZS10eXBlLXVub3JkZXJlZGBcclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc3R5bGUtdHlwZS11bm9yZGVyZWQgW10gU3R5bGUgdHlwZSBmb3IgdW5vcmRlcmVkIExpc3RzXHJcbkBtaXhpbiBzdHlsZS10eXBlLXVub3JkZXJlZCgkc3R5bGUtdHlwZS11bm9yZGVyZWQpIHtcclxuICBsaXN0LXN0eWxlLXR5cGU6ICRzdHlsZS10eXBlLXVub3JkZXJlZCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vLy8gU3R5bGUgdHlwZSBmb3Igb3JkZXJlZCBMaXN0cywgYnkgZGVmYXVsdCBjb21pbmcgdGhyb3VnaCBhIG1hcCBgJHByb3RvdHlwZS1zdHlsZS10eXBlLW9yZGVyZWRgXHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHN0eWxlLXR5cGUtb3JkZXJlZCBbXSBTdHlsZSB0eXBlIGZvciBvcmRlcmVkIExpc3RzXHJcbkBtaXhpbiBzdHlsZS10eXBlLW9yZGVyZWQoJHN0eWxlLXR5cGUtb3JkZXJlZCkge1xyXG4gIGxpc3Qtc3R5bGUtdHlwZTogJHN0eWxlLXR5cGUtb3JkZXJlZCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG5AbWl4aW4gbGlzdC11bm9yZGVyZWQge1xyXG4gIEBlYWNoICRzdHlsZS10eXBlLXVub3JkZXJlZCBpbiAkcHJvdG90eXBlLXN0eWxlLXR5cGUtdW5vcmRlcmVkIHtcclxuICAgIHVsLmxpc3QtI3skc3R5bGUtdHlwZS11bm9yZGVyZWR9IHtcclxuICAgICAgQGluY2x1ZGUgc3R5bGUtdHlwZS11bm9yZGVyZWQoJHN0eWxlLXR5cGUtdW5vcmRlcmVkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpZiAoJHByb3RvdHlwZS1saXN0LWJyZWFrcG9pbnRzKSB7XHJcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xyXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcclxuICAgICAgICBAZWFjaCAkc3R5bGUtdHlwZS11bm9yZGVyZWQgaW4gJHByb3RvdHlwZS1zdHlsZS10eXBlLXVub3JkZXJlZCB7XHJcbiAgICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xyXG4gICAgICAgICAgICB1bC4jeyRzaXplfS1saXN0LSN7JHN0eWxlLXR5cGUtdW5vcmRlcmVkfSB7XHJcbiAgICAgICAgICAgICAgQGluY2x1ZGUgc3R5bGUtdHlwZS11bm9yZGVyZWQoJHN0eWxlLXR5cGUtdW5vcmRlcmVkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuQG1peGluIGxpc3Qtb3JkZXJlZCB7XHJcbiAgQGVhY2ggJHN0eWxlLXR5cGUtb3JkZXJlZCBpbiAkcHJvdG90eXBlLXN0eWxlLXR5cGUtb3JkZXJlZCB7XHJcbiAgICBvbC5saXN0LSN7JHN0eWxlLXR5cGUtb3JkZXJlZH0ge1xyXG4gICAgICBAaW5jbHVkZSBzdHlsZS10eXBlLW9yZGVyZWQoJHN0eWxlLXR5cGUtb3JkZXJlZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaWYgKCRwcm90b3R5cGUtbGlzdC1icmVha3BvaW50cykge1xyXG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcclxuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xyXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XHJcbiAgICAgICAgQGVhY2ggJHN0eWxlLXR5cGUtb3JkZXJlZCBpbiAkcHJvdG90eXBlLXN0eWxlLXR5cGUtb3JkZXJlZCB7XHJcbiAgICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xyXG4gICAgICAgICAgICBvbC4jeyRzaXplfS1saXN0LSN7JHN0eWxlLXR5cGUtb3JkZXJlZH0ge1xyXG4gICAgICAgICAgICAgIEBpbmNsdWRlIHN0eWxlLXR5cGUtb3JkZXJlZCgkc3R5bGUtdHlwZS1vcmRlcmVkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLWxpc3Qtc3R5bGUtdHlwZSB7XHJcbiAgQGluY2x1ZGUgbGlzdC11bm9yZGVyZWQ7XHJcbiAgQGluY2x1ZGUgbGlzdC1vcmRlcmVkO1xyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBwcm90b3R5cGUtcm91bmRlZFxyXG4vLy8vXHJcblxyXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3Igcm91bmRlZCB1dGlsaXR5LlxyXG4vLy8gQHR5cGUgQm9vbGVhblxyXG4kcHJvdG90eXBlLXJvdW5kZWQtYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgdmFsdWUgZm9yIGBwcm90b3R5cGUtYm9yZGVyLXJhZGl1c2BcclxuLy8vIEB0eXBlIE51bWJlclxyXG4kcHJvdG90eXBlLWJvcmRlci1yYWRpdXM6IHJlbS1jYWxjKDMpICFkZWZhdWx0O1xyXG5cclxuLy8vIFJvdW5kZWQgdXRpbGl0eSAoYWxsIGNvcm5lcnMpOiBBZGRzIHJhZGl1cyBjb3JuZXJzIChhbGwgY29ybmVycykgdG8gYW4gZWxlbWVudCBieSBkZWZhdWx0LlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRyYWRpdXMgWyRwcm90b3R5cGUtYm9yZGVyLXJhZGl1c10gQm9yZGVyIHJhZGl1cyAoYWxsIGNvcm5lcnMpXHJcbkBtaXhpbiBib3JkZXItcmFkaXVzKFxyXG4gICRyYWRpdXM6ICRwcm90b3R5cGUtYm9yZGVyLXJhZGl1c1xyXG4pIHtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xyXG59XHJcblxyXG4vLy8gUm91bmRlZCBzcXVhcmUgdXRpbGl0eSBvciByZWN0YW5nbGUgdXRpbGl0eSAoYWxsIGNvcm5lcnMpOiBSb3VuZHMgYWxsIGNvcm5lcnMgdG8gYW4gZWxlbWVudCBieSBkZWZhdWx0IHRvIG1ha2UgYSBwaWxsIHNoYXBlLlxyXG5AbWl4aW4gYm9yZGVyLXJvdW5kZWQge1xyXG4gIGJvcmRlci1yYWRpdXM6IDUwMDBweCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtcm91bmRlZCB7XHJcbiAgLnJvdW5kZWQge1xyXG4gICAgQGluY2x1ZGUgYm9yZGVyLXJvdW5kZWQ7XHJcbiAgfVxyXG5cclxuICAucmFkaXVzIHtcclxuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXM7XHJcbiAgfVxyXG5cclxuICBAaWYgKCRwcm90b3R5cGUtcm91bmRlZC1icmVha3BvaW50cykge1xyXG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcclxuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xyXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XHJcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcclxuICAgICAgICAgIC4jeyRzaXplfS1yb3VuZGVkIHtcclxuICAgICAgICAgICAgQGluY2x1ZGUgYm9yZGVyLXJvdW5kZWQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAuI3skc2l6ZX0tcmFkaXVzIHtcclxuICAgICAgICAgICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1ib3JkZXJlZFxyXG4vLy8vXHJcblxyXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgYm9yZGVyZWQgdXRpbGl0eS5cclxuLy8vIEB0eXBlIEJvb2xlYW5cclxuJHByb3RvdHlwZS1ib3JkZXJlZC1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCB2YWx1ZSBmb3IgYHByb3RvdHlwZS1ib3JkZXItd2lkdGhgXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHByb3RvdHlwZS1ib3JkZXItd2lkdGg6IHJlbS1jYWxjKDEpICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgdmFsdWUgZm9yIGBwcm90b3R5cGUtYm9yZGVyLXR5cGVgXHJcbi8vLyBAdHlwZSBTdHJpbmdcclxuJHByb3RvdHlwZS1ib3JkZXItdHlwZTogc29saWQgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCB2YWx1ZSBmb3IgYHByb3RvdHlwZS1ib3JkZXItY29sb3JgIGRlZmF1bHRlZCB0byBgbWVkaXVtLWdyYXlgXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kcHJvdG90eXBlLWJvcmRlci1jb2xvcjogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xyXG5cclxuLy8vIEJvcmRlcmVkIFV0aWxpdHk6IEFkZHMgYSBsaWdodCBib3JkZXIgdG8gYW4gZWxlbWVudCBieSBkZWZhdWx0LlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCBbJHByb3RvdHlwZS1ib3JkZXItd2lkdGhdIFdpZHRoIG9mIHRoZSBib3JkZXJcclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkdHlwZSBbJHByb3RvdHlwZS1ib3JkZXItdHlwZV0gVHlwZSBvZiB0aGUgYm9yZGVyXHJcbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgWyRwcm90b3R5cGUtYm9yZGVyLWNvbG9yXSBDb2xvciBvZiB0aGUgYm9yZGVyXHJcbkBtaXhpbiBib3JkZXJlZChcclxuICAkd2lkdGg6ICRwcm90b3R5cGUtYm9yZGVyLXdpZHRoLFxyXG4gICR0eXBlOiAkcHJvdG90eXBlLWJvcmRlci10eXBlLFxyXG4gICRjb2xvcjogJHByb3RvdHlwZS1ib3JkZXItY29sb3JcclxuKSB7XHJcbiAgYm9yZGVyOiAkd2lkdGggJHR5cGUgJGNvbG9yO1xyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtYm9yZGVyZWQge1xyXG4gIC5ib3JkZXJlZCB7XHJcbiAgICBAaW5jbHVkZSBib3JkZXJlZDtcclxuICB9XHJcblxyXG4gIEBpZiAoJHByb3RvdHlwZS1ib3JkZXJlZC1icmVha3BvaW50cykge1xyXG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcclxuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xyXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XHJcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcclxuICAgICAgICAgIC4jeyRzaXplfS1ib3JkZXJlZCB7XHJcbiAgICAgICAgICAgIEBpbmNsdWRlIGJvcmRlcmVkO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgcHJvdG90eXBlLXNoYWRvd1xyXG4vLy8vXHJcblxyXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3Igc2hhZG93IHV0aWxpdHkuXHJcbi8vLyBAdHlwZSBCb29sZWFuXHJcbiRwcm90b3R5cGUtc2hhZG93LWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IHZhbHVlIGZvciBgcHJvdG90eXBlLWJveC1zaGFkb3dgXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHByb3RvdHlwZS1ib3gtc2hhZG93OiAwIDJweCA1cHggMCByZ2JhKDAsMCwwLC4xNiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgMCAycHggMTBweCAwIHJnYmEoMCwwLDAsLjEyKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBTaGFkb3cgVXRpbGl0eTogQWRkcyBhIGxpZ2h0IGJveCBzaGFkb3cgdG8gYW4gZWxlbWVudCBieSBkZWZhdWx0LlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzaGFkb3cgWyRwcm90b3R5cGUtYm94LXNoYWRvd10gQm94IFNoYWRvdyBvZiBhIGNvbXBvbmVudFxyXG5AbWl4aW4gc2hhZG93KFxyXG4gICRzaGFkb3c6ICRwcm90b3R5cGUtYm94LXNoYWRvd1xyXG4pIHtcclxuICBib3gtc2hhZG93OiAkc2hhZG93O1xyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtc2hhZG93IHtcclxuICAuc2hhZG93IHtcclxuICAgIEBpbmNsdWRlIHNoYWRvdztcclxuICB9XHJcblxyXG4gIEBpZiAoJHByb3RvdHlwZS1zaGFkb3ctYnJlYWtwb2ludHMpIHtcclxuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXHJcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcclxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xyXG4gICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XHJcbiAgICAgICAgICAuI3skc2l6ZX0tc2hhZG93IHtcclxuICAgICAgICAgICAgQGluY2x1ZGUgc2hhZG93O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgcHJvdG90eXBlLWFycm93XHJcbi8vLy9cclxuXHJcbi8vLyBNYXAgY29udGFpbmluZyBhbGwgdGhlIGBhcnJvd2AgZGlyZWN0aW9uXHJcbi8vLyBAdHlwZSBNYXBcclxuJHByb3RvdHlwZS1hcnJvdy1kaXJlY3Rpb25zOiAoXHJcbiAgZG93bixcclxuICB1cCxcclxuICByaWdodCxcclxuICBsZWZ0XHJcbikgIWRlZmF1bHQ7XHJcblxyXG4vLy8gV2lkdGggb2YgdGhlIEFycm93LCBgMC40Mzc1cmVtYCBieSBkZWZhdWx0LlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRwcm90b3R5cGUtYXJyb3ctc2l6ZTogMC40Mzc1cmVtO1xyXG5cclxuLy8vIENvbG9yIG9mIHRoZSBBcnJvdywgYCRibGFja2AgYnkgZGVmYXVsdC5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRwcm90b3R5cGUtYXJyb3ctY29sb3I6ICRibGFjaztcclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS1hcnJvdyB7XHJcbiAgQGVhY2ggJHByb3RvdHlwZS1hcnJvdy1kaXJlY3Rpb24gaW4gJHByb3RvdHlwZS1hcnJvdy1kaXJlY3Rpb25zIHtcclxuICAgIC5hcnJvdy0jeyRwcm90b3R5cGUtYXJyb3ctZGlyZWN0aW9ufSB7XHJcbiAgICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZShcclxuICAgICAgICAkcHJvdG90eXBlLWFycm93LXNpemUsIFxyXG4gICAgICAgICRwcm90b3R5cGUtYXJyb3ctY29sb3IsIFxyXG4gICAgICAgICRwcm90b3R5cGUtYXJyb3ctZGlyZWN0aW9uXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBwcm90b3R5cGUtc2VwYXJhdG9yXHJcbi8vLy9cclxuXHJcbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBzZXBhcmF0b3IuXHJcbi8vLyBAdHlwZSBCb29sZWFuXHJcbiRwcm90b3R5cGUtc2VwYXJhdG9yLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGFsaWdubWVudCBvZiBhIHNlcGFyYXRvci5cclxuLy8vIEB0eXBlIFN0cmluZ1xyXG4kcHJvdG90eXBlLXNlcGFyYXRvci1hbGlnbjogY2VudGVyICFkZWZhdWx0O1xyXG5cclxuLy8vIEhlaWdodCBvZiBhIHNlcGFyYXRvci5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kcHJvdG90eXBlLXNlcGFyYXRvci1oZWlnaHQ6IHJlbS1jYWxjKDIpICFkZWZhdWx0O1xyXG5cclxuLy8vIFdpZHRoIG9mIGEgc2VwYXJhdG9yLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRwcm90b3R5cGUtc2VwYXJhdG9yLXdpZHRoOiAzcmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgY29sb3Igb2YgYSBzZXBhcmF0b3IuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kcHJvdG90eXBlLXNlcGFyYXRvci1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcclxuXHJcbi8vLyBUb3AgTWFyZ2luIG9mIGEgc2VwYXJhdG9yLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRwcm90b3R5cGUtc2VwYXJhdG9yLW1hcmdpbi10b3A6ICRnbG9iYWwtbWFyZ2luICFkZWZhdWx0O1xyXG5cclxuLy8vIFRpdGxlIHNlcGFyYXRvciBVdGlsaXR5LCBtb3N0bHkgdXNlZCB0byBzdHlsZSB0aGUgbWFpbiBoZWFkaW5nIG9mIGEgc2VjdGlvblxyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRhbGlnbiBbJHByb3RvdHlwZS1zZXBhcmF0b3ItYWxpZ25dIC0gc2VwYXJhdG9yIEFsaWdubWVudFxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRoZWlnaHQgWyRwcm90b3R5cGUtc2VwYXJhdG9yLWhlaWdodF0gLSBXaWR0aFxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCBbJHByb3RvdHlwZS1zZXBhcmF0b3Itd2lkdGhdIC0gSGVpZ2h0XHJcbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFja2dyb3VuZCBbJHByb3RvdHlwZS1zZXBhcmF0b3ItYmFja2dyb3VuZF0gLSBCYWNrZ3JvdW5kXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJHRvcCBbJHByb3RvdHlwZS1zZXBhcmF0b3ItbWFyZ2luLXRvcF0gLSBNYXJnaW4gVG9wXHJcbkBtaXhpbiBzZXBhcmF0b3IgKFxyXG4gICRhbGlnbjogJHByb3RvdHlwZS1zZXBhcmF0b3ItYWxpZ24sXHJcbiAgJGhlaWdodDogJHByb3RvdHlwZS1zZXBhcmF0b3ItaGVpZ2h0LFxyXG4gICR3aWR0aDogJHByb3RvdHlwZS1zZXBhcmF0b3Itd2lkdGgsXHJcbiAgJGJhY2tncm91bmQ6ICRwcm90b3R5cGUtc2VwYXJhdG9yLWJhY2tncm91bmQsXHJcbiAgJHRvcDogJHByb3RvdHlwZS1zZXBhcmF0b3ItbWFyZ2luLXRvcFxyXG4pIHtcclxuICB0ZXh0LWFsaWduOiAkYWxpZ24gIWltcG9ydGFudDtcclxuXHRAaW5jbHVkZSBjbGVhcmZpeDtcclxuXHJcbiAgJjo6YWZ0ZXIge1xyXG4gICAgQGluY2x1ZGUgcG9zaXRpb24ocmVsYXRpdmUpO1xyXG4gICAgd2lkdGg6ICR3aWR0aDtcclxuICAgIGJvcmRlci1ib3R0b206ICRoZWlnaHQgc29saWQgJGJhY2tncm91bmQ7XHJcbiAgICBtYXJnaW46ICR0b3AgYXV0byAwO1xyXG5cclxuICAgIEBpZiAkYWxpZ24gPT0gbGVmdCB7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgQGlmICRhbGlnbiA9PSByaWdodCB7XHJcbiAgICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLXNlcGFyYXRvciB7XHJcblx0LnNlcGFyYXRvci1jZW50ZXIge1xyXG5cdFx0QGluY2x1ZGUgc2VwYXJhdG9yKGNlbnRlcik7XHJcblx0fVxyXG5cclxuICAuc2VwYXJhdG9yLWxlZnQge1xyXG4gICAgQGluY2x1ZGUgc2VwYXJhdG9yKGxlZnQpO1xyXG4gIH1cclxuXHJcbiAgLnNlcGFyYXRvci1yaWdodCB7XHJcbiAgICBAaW5jbHVkZSBzZXBhcmF0b3IocmlnaHQpO1xyXG4gIH1cclxuXHJcblx0QGlmICgkcHJvdG90eXBlLXNlcGFyYXRvci1icmVha3BvaW50cykge1xyXG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcclxuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xyXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XHJcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcclxuICAgICAgICAgIC4jeyRzaXplfS1zZXBhcmF0b3ItY2VudGVyIHtcclxuICAgICAgICAgICAgQGluY2x1ZGUgc2VwYXJhdG9yKGNlbnRlcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAuI3skc2l6ZX0tc2VwYXJhdG9yLWxlZnQge1xyXG4gICAgICAgICAgICBAaW5jbHVkZSBzZXBhcmF0b3IobGVmdCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAuI3skc2l6ZX0tc2VwYXJhdG9yLXJpZ2h0IHtcclxuICAgICAgICAgICAgQGluY2x1ZGUgc2VwYXJhdG9yKHJpZ2h0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1vdmVyZmxvd1xyXG4vLy8vXHJcblxyXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3Igb3ZlcmZsb3cgaGVscGVyIGNsYXNzZXNcclxuLy8vIEB0eXBlIEJvb2xlYW5cclxuJHByb3RvdHlwZS1vdmVyZmxvdy1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XHJcblxyXG4vLy8gTWFwIGNvbnRhaW5pbmcgYWxsIHRoZSBgb3ZlcmZsb3dgIGNsYXNzZXNcclxuLy8vIEB0eXBlIE1hcFxyXG4kcHJvdG90eXBlLW92ZXJmbG93OiAoXHJcbiAgdmlzaWJsZSxcclxuICBoaWRkZW4sXHJcbiAgc2Nyb2xsXHJcbikgIWRlZmF1bHQ7XHJcblxyXG4vLy8gT3ZlcmZsb3cgY2xhc3NlcywgYnkgZGVmYXVsdCBjb21pbmcgdGhyb3VnaCBhIG1hcCBgJHByb3RvdHlwZS1vdmVyZmxvd2BcclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkb3ZlcmZsb3cgW10gT3ZlcmZsb3cgY2xhc3Nlc1xyXG5AbWl4aW4gb3ZlcmZsb3coJG92ZXJmbG93KSB7XHJcbiAgb3ZlcmZsb3c6ICRvdmVyZmxvdyAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vLy8gT3ZlcmZsb3cgY2xhc3NlcyBvbiBob3Jpem9udGFsIGF4aXMsIGJ5IGRlZmF1bHQgY29taW5nIHRocm91Z2ggYSBtYXAgYCRwcm90b3R5cGUtb3ZlcmZsb3dgXHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJG92ZXJmbG93IFtdIE92ZXJmbG93IGNsYXNzZXMgKGhvcml6b250YWwgYXhpcylcclxuQG1peGluIG92ZXJmbG93LXgoJG92ZXJmbG93KSB7XHJcbiAgb3ZlcmZsb3cteDogJG92ZXJmbG93ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8vLyBPdmVyZmxvdyBjbGFzc2VzIG9uIHZlcnRpY2FsIGF4aXMsIGJ5IGRlZmF1bHQgY29taW5nIHRocm91Z2ggYSBtYXAgYCRwcm90b3R5cGUtb3ZlcmZsb3dgXHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJG92ZXJmbG93IFtdIE92ZXJmbG93IGNsYXNzZXMgKHZlcnRpY2FsIGF4aXMpXHJcbkBtaXhpbiBvdmVyZmxvdy15KCRvdmVyZmxvdykge1xyXG4gIG92ZXJmbG93LXk6ICRvdmVyZmxvdyAhaW1wb3J0YW50O1xyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtb3ZlcmZsb3cge1xyXG4gIEBlYWNoICRvdmVyZmxvdyBpbiAkcHJvdG90eXBlLW92ZXJmbG93IHtcclxuICAgIC5vdmVyZmxvdy0jeyRvdmVyZmxvd30ge1xyXG4gICAgICBAaW5jbHVkZSBvdmVyZmxvdygkb3ZlcmZsb3cpO1xyXG4gICAgfVxyXG4gICAgLm92ZXJmbG93LXgtI3skb3ZlcmZsb3d9IHtcclxuICAgICAgQGluY2x1ZGUgb3ZlcmZsb3cteCgkb3ZlcmZsb3cpO1xyXG4gICAgfVxyXG4gICAgLm92ZXJmbG93LXktI3skb3ZlcmZsb3d9IHtcclxuICAgICAgQGluY2x1ZGUgb3ZlcmZsb3cteSgkb3ZlcmZsb3cpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGlmICgkcHJvdG90eXBlLW92ZXJmbG93LWJyZWFrcG9pbnRzKSB7XHJcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xyXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcclxuICAgICAgICBAZWFjaCAkb3ZlcmZsb3cgaW4gJHByb3RvdHlwZS1vdmVyZmxvdyB7XHJcbiAgICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xyXG4gICAgICAgICAgICAuI3skc2l6ZX0tb3ZlcmZsb3ctI3skb3ZlcmZsb3d9IHtcclxuICAgICAgICAgICAgICBAaW5jbHVkZSBvdmVyZmxvdygkb3ZlcmZsb3cpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC4jeyRzaXplfS1vdmVyZmxvdy14LSN7JG92ZXJmbG93fSB7XHJcbiAgICAgICAgICAgICAgQGluY2x1ZGUgb3ZlcmZsb3cteCgkb3ZlcmZsb3cpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC4jeyRzaXplfS1vdmVyZmxvdy15LSN7JG92ZXJmbG93fSB7XHJcbiAgICAgICAgICAgICAgQGluY2x1ZGUgb3ZlcmZsb3cteSgkb3ZlcmZsb3cpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBwcm90b3R5cGUtZGlzcGxheVxyXG4vLy8vXHJcblxyXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgZGlzcGxheSBjbGFzc2VzXHJcbi8vLyBAdHlwZSBCb29sZWFuXHJcbiRwcm90b3R5cGUtZGlzcGxheS1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XHJcblxyXG4vLy8gTWFwIGNvbnRhaW5pbmcgYWxsIHRoZSBgZGlzcGxheWAgY2xhc3Nlc1xyXG4vLy8gQHR5cGUgTWFwXHJcbiRwcm90b3R5cGUtZGlzcGxheTogKFxyXG4gIGlubGluZSxcclxuICBpbmxpbmUtYmxvY2ssXHJcbiAgYmxvY2ssXHJcbiAgdGFibGUsXHJcbiAgdGFibGUtY2VsbFxyXG4pICFkZWZhdWx0O1xyXG5cclxuLy8vIERpc3BsYXkgY2xhc3NlcywgYnkgZGVmYXVsdCBjb21pbmcgdGhyb3VnaCBhIG1hcCBgJHByb3RvdHlwZS1kaXNwbGF5YFxyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRkaXNwbGF5IFtdIERpc3BsYXkgY2xhc3Nlc1xyXG5AbWl4aW4gZGlzcGxheSgkZGlzcGxheSkge1xyXG4gIGRpc3BsYXk6ICRkaXNwbGF5ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS1kaXNwbGF5IHtcclxuICBAZWFjaCAkZGlzcGxheSBpbiAkcHJvdG90eXBlLWRpc3BsYXkge1xyXG4gICAgLmRpc3BsYXktI3skZGlzcGxheX0ge1xyXG4gICAgICBAaW5jbHVkZSBkaXNwbGF5KCRkaXNwbGF5KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpZiAoJHByb3RvdHlwZS1kaXNwbGF5LWJyZWFrcG9pbnRzKSB7XHJcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xyXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcclxuICAgICAgICBAZWFjaCAkZGlzcGxheSBpbiAkcHJvdG90eXBlLWRpc3BsYXkge1xyXG4gICAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcclxuICAgICAgICAgICAgLiN7JHNpemV9LWRpc3BsYXktI3skZGlzcGxheX0ge1xyXG4gICAgICAgICAgICAgIEBpbmNsdWRlIGRpc3BsYXkoJGRpc3BsYXkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBwcm90b3R5cGUtcG9zaXRpb25cclxuLy8vL1xyXG5cclxuLy8vIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIHBvc2l0aW9uIGhlbHBlcnNcclxuLy8vIEB0eXBlIEJvb2xlYW5cclxuJHByb3RvdHlwZS1wb3NpdGlvbi1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XHJcblxyXG4vLy8gTWFwIGNvbnRhaW5pbmcgYWxsIHRoZSBgcG9zaXRpb25gIGNsYXNzZXNcclxuLy8vIEB0eXBlIE1hcFxyXG4kcHJvdG90eXBlLXBvc2l0aW9uOiAoXHJcbiAgc3RhdGljLFxyXG4gIHJlbGF0aXZlLFxyXG4gIGFic29sdXRlLFxyXG4gIGZpeGVkXHJcbikgIWRlZmF1bHQ7XHJcblxyXG4vLy8gei1pbmRleCBmb3IgZml4ZWQgcG9zaXRpb25pbmdcclxuLy8vIEB0eXBlIE51bWJlclxyXG4kcHJvdG90eXBlLXBvc2l0aW9uLXotaW5kZXg6IDk3NSAhZGVmYXVsdDtcclxuXHJcbi8vLyBQb3NpdGlvbiBjbGFzc2VzLCBieSBkZWZhdWx0IGNvbWluZyB0aHJvdWdoIGEgbWFwIGAkcHJvdG90eXBlLXBvc2l0aW9uYCwgd2hlcmVhcyBhbGwgdGhlIG9mZnNldCB2YWx1ZXMgYXJlIG11bHRpcGxpZWQgYnkgYCRnbG9iYWwtcG9zaXRpb25gIHdoaWNoIGJ5IGRlZmF1bHQgaXMgZXF1YWwgdG8gYDFyZW1gLlxyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRwb3NpdGlvbiBbXSBQb3NpdGlvbiBjbGFzc2VzLCBFaXRoZXIgYHN0YXRpY2AsIGByZWxhdGl2ZWAsIGBhYnNvbHV0ZWAgb3IgYGZpeGVkYFxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR0b3AgW251bGxdIC0gVG9wIG9mZnNldFxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRyaWdodCBbbnVsbF0gLSBSaWdodCBvZmZzZXRcclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYm90dG9tIFtudWxsXSAtIEJvdHRvbSBvZmZzZXRcclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbGVmdCBbbnVsbF0gLSBMZWZ0IG9mZnNldFxyXG5AbWl4aW4gcG9zaXRpb24oXHJcbiAgJHBvc2l0aW9uLFxyXG4gICR0b3A6IG51bGwsXHJcbiAgJHJpZ2h0OiBudWxsLFxyXG4gICRib3R0b206IG51bGwsXHJcbiAgJGxlZnQ6IG51bGxcclxuKSB7XHJcbiAgcG9zaXRpb246ICRwb3NpdGlvbiAhaW1wb3J0YW50O1xyXG4gIEBpZiAkdG9wICE9IG51bGwge1xyXG4gICAgdG9wOiAkdG9wICogJGdsb2JhbC1wb3NpdGlvbiAhaW1wb3J0YW50O1xyXG4gIH1cclxuICBAaWYgJHJpZ2h0ICE9IG51bGwge1xyXG4gICAgcmlnaHQ6ICRyaWdodCAqICRnbG9iYWwtcG9zaXRpb24gIWltcG9ydGFudDtcclxuICB9XHJcbiAgQGlmICRib3R0b20gIT0gbnVsbCB7XHJcbiAgICBib3R0b206ICRib3R0b20gKiAkZ2xvYmFsLXBvc2l0aW9uICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG4gIEBpZiAkbGVmdCAhPSBudWxsIHtcclxuICAgIGxlZnQ6ICRsZWZ0ICogJGdsb2JhbC1wb3NpdGlvbiAhaW1wb3J0YW50O1xyXG4gIH1cclxufVxyXG5cclxuLy8vIFBvc2l0aW9uIEZpeGVkIG9uIHRvcCBjb3JuZXJzXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJHotaW5kZXggWyRwcm90b3R5cGUtcG9zaXRpb24tei1pbmRleF0gei1pbmRleCBmb3IgYHBvc2l0aW9uLWZpeGVkLXRvcGBcclxuQG1peGluIHBvc2l0aW9uLWZpeGVkLXRvcChcclxuICAkei1pbmRleDogJHByb3RvdHlwZS1wb3NpdGlvbi16LWluZGV4XHJcbikge1xyXG4gIEBpbmNsdWRlIHBvc2l0aW9uKGZpeGVkLCAwLCAwLCBudWxsLCAwKTtcclxuICB6LWluZGV4OiAkei1pbmRleDtcclxufVxyXG5cclxuLy8vIFBvc2l0aW9uIEZpeGVkIG9uIGJvdHRvbSBjb3JuZXJzXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJHotaW5kZXggWyRwcm90b3R5cGUtcG9zaXRpb24tei1pbmRleF0gei1pbmRleCBmb3IgYHBvc2l0aW9uLWZpeGVkLWJvdHRvbWBcclxuQG1peGluIHBvc2l0aW9uLWZpeGVkLWJvdHRvbShcclxuICAkei1pbmRleDogJHByb3RvdHlwZS1wb3NpdGlvbi16LWluZGV4XHJcbikge1xyXG4gIEBpbmNsdWRlIHBvc2l0aW9uKGZpeGVkLCBudWxsLCAwLCAwLCAwKTtcclxuICB6LWluZGV4OiAkei1pbmRleDtcclxufVxyXG5cclxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLXBvc2l0aW9uIHtcclxuICAvLyBQb3NpdGlvbjogU3RhdGljLCBSZWxhdGl2ZSwgRml4ZWQsIEFic29sdXRlXHJcbiAgQGVhY2ggJHBvc2l0aW9uIGluICRwcm90b3R5cGUtcG9zaXRpb24ge1xyXG4gICAgLnBvc2l0aW9uLSN7JHBvc2l0aW9ufSB7XHJcbiAgICAgIEBpbmNsdWRlIHBvc2l0aW9uKCRwb3NpdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBQb3NpdGlvbjogRml4ZWQgVG9wLCBGaXhlZCBCb3R0b21cclxuICAucG9zaXRpb24tZml4ZWQtdG9wIHtcclxuICAgIEBpbmNsdWRlIHBvc2l0aW9uLWZpeGVkLXRvcDtcclxuICB9XHJcbiAgLnBvc2l0aW9uLWZpeGVkLWJvdHRvbSB7XHJcbiAgICBAaW5jbHVkZSBwb3NpdGlvbi1maXhlZC1ib3R0b207XHJcbiAgfVxyXG5cclxuICBAaWYgKCRwcm90b3R5cGUtcG9zaXRpb24tYnJlYWtwb2ludHMpIHtcclxuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXHJcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcclxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xyXG4gICAgICAgIC8vIFBvc2l0aW9uOiBTdGF0aWMsIFJlbGF0aXZlLCBGaXhlZCwgQWJzb2x1dGVcclxuICAgICAgICBAZWFjaCAkcG9zaXRpb24gaW4gJHByb3RvdHlwZS1wb3NpdGlvbiB7XHJcbiAgICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xyXG4gICAgICAgICAgICAuI3skc2l6ZX0tcG9zaXRpb24tI3skcG9zaXRpb259IHtcclxuICAgICAgICAgICAgICBAaW5jbHVkZSBwb3NpdGlvbigkcG9zaXRpb24pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBQb3NpdGlvbjogRml4ZWQgVG9wLCBGaXhlZCBCb3R0b21cclxuICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xyXG4gICAgICAgICAgLiN7JHNpemV9LXBvc2l0aW9uLWZpeGVkLXRvcCB7XHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHBvc2l0aW9uLWZpeGVkLXRvcDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAuI3skc2l6ZX0tcG9zaXRpb24tZml4ZWQtYm90dG9tIHtcclxuICAgICAgICAgICAgQGluY2x1ZGUgcG9zaXRpb24tZml4ZWQtYm90dG9tO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgcHJvdG90eXBlLWJvcmRlci1ib3hcclxuLy8vL1xyXG5cclxuLy8vIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIGJvcmRlciBib3guXHJcbi8vLyBAdHlwZSBCb29sZWFuXHJcbiRwcm90b3R5cGUtYm9yZGVyLWJveC1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQm9yZGVyIGJveCB1dGlsaXR5XHJcbkBtaXhpbiBib3JkZXItYm94IHtcclxuICBib3gtc2l6aW5nOiBib3JkZXItYm94ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS1ib3JkZXItYm94IHtcclxuICAuYm9yZGVyLWJveCB7XHJcbiAgICBAaW5jbHVkZSBib3JkZXItYm94O1xyXG4gIH1cclxuXHJcbiAgQGlmICgkcHJvdG90eXBlLWJvcmRlci1ib3gtYnJlYWtwb2ludHMpIHtcclxuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXHJcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcclxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xyXG4gICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XHJcbiAgICAgICAgICAuI3skc2l6ZX0tYm9yZGVyLWJveCB7XHJcbiAgICAgICAgICAgIEBpbmNsdWRlIGJvcmRlci1ib3g7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBwcm90b3R5cGUtYm9yZGVyLW5vbmVcclxuLy8vL1xyXG5cclxuLy8vIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIGJvcmRlciBub25lLlxyXG4vLy8gQHR5cGUgQm9vbGVhblxyXG4kcHJvdG90eXBlLWJvcmRlci1ub25lLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcclxuXHJcbi8vLyBCb3JkZXIgbm9uZSB1dGlsaXR5XHJcbkBtaXhpbiBib3JkZXItbm9uZSB7XHJcbiAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS1ib3JkZXItbm9uZSB7XHJcbiAgLmJvcmRlci1ub25lIHtcclxuICAgIEBpbmNsdWRlIGJvcmRlci1ub25lO1xyXG4gIH1cclxuXHJcbiAgQGlmICgkcHJvdG90eXBlLWJvcmRlci1ub25lLWJyZWFrcG9pbnRzKSB7XHJcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xyXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcclxuICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xyXG4gICAgICAgICAgLiN7JHNpemV9LWJvcmRlci1ub25lIHtcclxuICAgICAgICAgICAgQGluY2x1ZGUgYm9yZGVyLW5vbmU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBwcm90b3R5cGUtc2l6aW5nXHJcbi8vLy9cclxuXHJcbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBzcGFjaW5nIGNsYXNzZXMgKG1hcmdpbiBhbmQgcGFkZGluZylcclxuLy8vIEB0eXBlIEJvb2xlYW5cclxuJHByb3RvdHlwZS1zaXppbmctYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xyXG5cclxuLy8vIE1hcCBjb250YWluaW5nIGFsbCB0aGUgYHNpemluZ2AgY2xhc3Nlc1xyXG4vLy8gQHR5cGUgTWFwXHJcbiRwcm90b3R5cGUtc2l6aW5nOiAoXHJcbiAgd2lkdGgsXHJcbiAgaGVpZ2h0XHJcbikgIWRlZmF1bHQ7XHJcblxyXG4vLy8gTWFwIGNvbnRhaW5pbmcgYWxsIHRoZSBzaXplcy5cclxuLy8vIEB0eXBlIE1hcFxyXG4kcHJvdG90eXBlLXNpemVzOiAoXHJcbiAgMjU6IDI1JSxcclxuICA1MDogNTAlLFxyXG4gIDc1OiA3NSUsXHJcbiAgMTAwOiAxMDAlXHJcbikgIWRlZmF1bHQ7XHJcblxyXG4vLy8gTWF4IFdpZHRoIDEwMCB1dGlsaXR5LlxyXG5AbWl4aW4gbWF4LXdpZHRoLTEwMCB7XHJcbiAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8vLyBNYXggSGVpZ2h0IDEwMCB1dGlsaXR5LlxyXG5AbWl4aW4gbWF4LWhlaWdodC0xMDAge1xyXG4gIG1heC1oZWlnaHQ6IDEwMCUgIWltcG9ydGFudDtcclxufVxyXG5cclxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLXNpemluZyB7XHJcbiAgLy8gRWxlbWVudCBTaXppbmdcclxuICBAZWFjaCAkc2l6aW5nIGluICRwcm90b3R5cGUtc2l6aW5nIHtcclxuICAgIEBlYWNoICRsZW5ndGgsICRwZXJjZW50YWdlIGluICRwcm90b3R5cGUtc2l6ZXMge1xyXG4gICAgICAuI3skc2l6aW5nfS0jeyRsZW5ndGh9IHtcclxuICAgICAgICAjeyRzaXppbmd9OiAkcGVyY2VudGFnZSAhaW1wb3J0YW50O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBNYXggd2lkdGggJiBoZWlnaHRcclxuICAubWF4LXdpZHRoLTEwMCB7XHJcbiAgICBAaW5jbHVkZSBtYXgtd2lkdGgtMTAwO1xyXG4gIH1cclxuICAubWF4LWhlaWdodC0xMDAge1xyXG4gICAgQGluY2x1ZGUgbWF4LWhlaWdodC0xMDA7XHJcbiAgfVxyXG5cclxuICBAaWYgKCRwcm90b3R5cGUtc2l6aW5nLWJyZWFrcG9pbnRzKSB7XHJcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xyXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcclxuICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xyXG4gICAgICAgICAgQGVhY2ggJHNpemluZyBpbiAkcHJvdG90eXBlLXNpemluZyB7XHJcbiAgICAgICAgICAgIEBlYWNoICRsZW5ndGgsICRwZXJjZW50YWdlIGluICRwcm90b3R5cGUtc2l6ZXMge1xyXG4gICAgICAgICAgICAgIC4jeyRzaXplfS0jeyRzaXppbmd9LSN7JGxlbmd0aH0ge1xyXG4gICAgICAgICAgICAgICAgI3skc2l6aW5nfTogJHBlcmNlbnRhZ2UgIWltcG9ydGFudDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1zcGFjaW5nXHJcbi8vLy9cclxuXHJcbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBzcGFjaW5nIGNsYXNzZXMgKG1hcmdpbiBhbmQgcGFkZGluZylcclxuLy8vIEB0eXBlIEJvb2xlYW5cclxuJHByb3RvdHlwZS1zcGFjaW5nLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IG51bWJlciBvZiBzcGFjZXJzIGNvdW50IChtYXJnaW4gYW5kIHBhZGRpbmcpXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHByb3RvdHlwZS1zcGFjZXJzLWNvdW50OiAzICFkZWZhdWx0O1xyXG5cclxuLy8vIE1hcmdpbiBoZWxwZXIgbWl4aW4sIGFsbCB0aGUgdmFsdWVzIGFyZSBtdWx0aXBsaWVkIGJ5IGAkZ2xvYmFsLW1hcmdpbmAgd2hpY2ggYnkgZGVmYXVsdCBpcyBlcXVhbCB0byBgMXJlbWBcclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdG9wIFtudWxsXSAtIE1hcmdpbiBUb3BcclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcmlnaHQgW251bGxdIC0gTWFyZ2luIFJpZ2h0XHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGJvdHRvbSBbbnVsbF0gLSBNYXJnaW4gQm90dG9tXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGxlZnQgW251bGxdIC0gTWFyZ2luIExlZnRcclxuQG1peGluIG1hcmdpbihcclxuICAkdG9wOiBudWxsLFxyXG4gICRyaWdodDogbnVsbCxcclxuICAkYm90dG9tOiBudWxsLFxyXG4gICRsZWZ0OiBudWxsXHJcbikge1xyXG4gIEBpZiAkdG9wICE9IG51bGwge1xyXG4gICAgbWFyZ2luLXRvcDogJHRvcCAqICRnbG9iYWwtbWFyZ2luICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG4gIEBpZiAkcmlnaHQgIT0gbnVsbCB7XHJcbiAgICBtYXJnaW4tcmlnaHQ6ICRyaWdodCAqICRnbG9iYWwtbWFyZ2luICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG4gIEBpZiAkYm90dG9tICE9IG51bGwge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogJGJvdHRvbSAqICRnbG9iYWwtbWFyZ2luICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG4gIEBpZiAkbGVmdCAhPSBudWxsIHtcclxuICAgIG1hcmdpbi1sZWZ0OiAkbGVmdCAqICRnbG9iYWwtbWFyZ2luICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gUGFkZGluZyBoZWxwZXIgbWl4aW4sIGFsbCB0aGUgdmFsdWVzIGFyZSBtdWx0aXBsaWVkIGJ5IGAkZ2xvYmFsLXBhZGRpbmdgIHdoaWNoIGJ5IGRlZmF1bHQgaXMgZXF1YWwgdG8gYDFyZW1gXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJHRvcCBbbnVsbF0gLSBQYWRkaW5nIFRvcFxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRyaWdodCBbbnVsbF0gLSBQYWRkaW5nIFJpZ2h0XHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGJvdHRvbSBbbnVsbF0gLSBQYWRkaW5nIEJvdHRvbVxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRsZWZ0IFtudWxsXSAtIFBhZGRpbmcgTGVmdFxyXG5AbWl4aW4gcGFkZGluZyhcclxuICAkdG9wOiBudWxsLFxyXG4gICRyaWdodDogbnVsbCxcclxuICAkYm90dG9tOiBudWxsLFxyXG4gICRsZWZ0OiBudWxsXHJcbikge1xyXG4gIEBpZiAkdG9wICE9IG51bGwge1xyXG4gICAgcGFkZGluZy10b3A6ICR0b3AgKiAkZ2xvYmFsLXBhZGRpbmcgIWltcG9ydGFudDtcclxuICB9XHJcbiAgQGlmICRyaWdodCAhPSBudWxsIHtcclxuICAgIHBhZGRpbmctcmlnaHQ6ICRyaWdodCAqICRnbG9iYWwtcGFkZGluZyAhaW1wb3J0YW50O1xyXG4gIH1cclxuICBAaWYgJGJvdHRvbSAhPSBudWxsIHtcclxuICAgIHBhZGRpbmctYm90dG9tOiAkYm90dG9tICogJGdsb2JhbC1wYWRkaW5nICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG4gIEBpZiAkbGVmdCAhPSBudWxsIHtcclxuICAgIHBhZGRpbmctbGVmdDogJGxlZnQgKiAkZ2xvYmFsLXBhZGRpbmcgIWltcG9ydGFudDtcclxuICB9XHJcbn1cclxuXHJcbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS1zcGFjaW5nIHtcclxuICBAZm9yICRzcGFjZXIgZnJvbSAwIHRocm91Z2ggJHByb3RvdHlwZS1zcGFjZXJzLWNvdW50IHtcclxuICAgIC8vIEFsbCBTaWRlc1xyXG4gICAgLm1hcmdpbi0jeyRzcGFjZXJ9IHtcclxuICAgICAgQGluY2x1ZGUgbWFyZ2luKCRzcGFjZXIsICRzcGFjZXIsICRzcGFjZXIsICRzcGFjZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIC5wYWRkaW5nLSN7JHNwYWNlcn0ge1xyXG4gICAgICBAaW5jbHVkZSBwYWRkaW5nKCRzcGFjZXIsICRzcGFjZXIsICRzcGFjZXIsICRzcGFjZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFRvcCBTaWRlXHJcbiAgICAubWFyZ2luLXRvcC0jeyRzcGFjZXJ9IHtcclxuICAgICAgQGluY2x1ZGUgbWFyZ2luKCRzcGFjZXIsIG51bGwsIG51bGwsIG51bGwpO1xyXG4gICAgfVxyXG5cclxuICAgIC5wYWRkaW5nLXRvcC0jeyRzcGFjZXJ9IHtcclxuICAgICAgQGluY2x1ZGUgcGFkZGluZygkc3BhY2VyLCBudWxsLCBudWxsLCBudWxsKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBSaWdodCBTaWRlXHJcbiAgICAubWFyZ2luLXJpZ2h0LSN7JHNwYWNlcn0ge1xyXG4gICAgICBAaW5jbHVkZSBtYXJnaW4obnVsbCwgJHNwYWNlciwgbnVsbCwgbnVsbCk7XHJcbiAgICB9XHJcblxyXG4gICAgLnBhZGRpbmctcmlnaHQtI3skc3BhY2VyfSB7XHJcbiAgICAgIEBpbmNsdWRlIHBhZGRpbmcobnVsbCwgJHNwYWNlciwgbnVsbCwgbnVsbCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQm90dG9tIFNpZGVcclxuICAgIC5tYXJnaW4tYm90dG9tLSN7JHNwYWNlcn0ge1xyXG4gICAgICBAaW5jbHVkZSBtYXJnaW4obnVsbCwgbnVsbCwgJHNwYWNlciwgbnVsbCk7XHJcbiAgICB9XHJcblxyXG4gICAgLnBhZGRpbmctYm90dG9tLSN7JHNwYWNlcn0ge1xyXG4gICAgICBAaW5jbHVkZSBwYWRkaW5nKG51bGwsIG51bGwsICRzcGFjZXIsIG51bGwpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIExlZnQgU2lkZVxyXG4gICAgLm1hcmdpbi1sZWZ0LSN7JHNwYWNlcn0ge1xyXG4gICAgICBAaW5jbHVkZSBtYXJnaW4obnVsbCwgbnVsbCwgbnVsbCwgJHNwYWNlcik7XHJcbiAgICB9XHJcblxyXG4gICAgLnBhZGRpbmctbGVmdC0jeyRzcGFjZXJ9IHtcclxuICAgICAgQGluY2x1ZGUgcGFkZGluZyhudWxsLCBudWxsLCBudWxsLCAkc3BhY2VyKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBIb3Jpem9udGFsIEF4ZXNcclxuICAgIC5tYXJnaW4taG9yaXpvbnRhbC0jeyRzcGFjZXJ9IHtcclxuICAgICAgQGluY2x1ZGUgbWFyZ2luKG51bGwsICRzcGFjZXIsIG51bGwsICRzcGFjZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIC5wYWRkaW5nLWhvcml6b250YWwtI3skc3BhY2VyfSB7XHJcbiAgICAgIEBpbmNsdWRlIHBhZGRpbmcobnVsbCwgJHNwYWNlciwgbnVsbCwgJHNwYWNlcik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVmVydGljYWwgQXhlc1xyXG4gICAgLm1hcmdpbi12ZXJ0aWNhbC0jeyRzcGFjZXJ9IHtcclxuICAgICAgQGluY2x1ZGUgbWFyZ2luKCRzcGFjZXIsIG51bGwsICRzcGFjZXIsIG51bGwpXHJcbiAgICB9XHJcblxyXG4gICAgLnBhZGRpbmctdmVydGljYWwtI3skc3BhY2VyfSB7XHJcbiAgICAgIEBpbmNsdWRlIHBhZGRpbmcoJHNwYWNlciwgbnVsbCwgJHNwYWNlciwgbnVsbClcclxuICAgIH1cclxuXHJcbiAgICBAaWYgKCRwcm90b3R5cGUtc3BhY2luZy1icmVha3BvaW50cykge1xyXG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcclxuICAgICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XHJcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xyXG4gICAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcclxuICAgICAgICAgICAgLy8gQWxsIFNpZGVzXHJcbiAgICAgICAgICAgIC4jeyRzaXplfS1tYXJnaW4tI3skc3BhY2VyfSB7XHJcbiAgICAgICAgICAgICAgQGluY2x1ZGUgbWFyZ2luKCRzcGFjZXIsICRzcGFjZXIsICRzcGFjZXIsICRzcGFjZXIpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAuI3skc2l6ZX0tcGFkZGluZy0jeyRzcGFjZXJ9IHtcclxuICAgICAgICAgICAgICBAaW5jbHVkZSBwYWRkaW5nKCRzcGFjZXIsICRzcGFjZXIsICRzcGFjZXIsICRzcGFjZXIpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBUb3AgU2lkZVxyXG4gICAgICAgICAgICAuI3skc2l6ZX0tbWFyZ2luLXRvcC0jeyRzcGFjZXJ9IHtcclxuICAgICAgICAgICAgICBAaW5jbHVkZSBtYXJnaW4oJHNwYWNlciwgbnVsbCwgbnVsbCwgbnVsbCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC4jeyRzaXplfS1wYWRkaW5nLXRvcC0jeyRzcGFjZXJ9IHtcclxuICAgICAgICAgICAgICBAaW5jbHVkZSBwYWRkaW5nKCRzcGFjZXIsIG51bGwsIG51bGwsIG51bGwpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBSaWdodCBTaWRlXHJcbiAgICAgICAgICAgIC4jeyRzaXplfS1tYXJnaW4tcmlnaHQtI3skc3BhY2VyfSB7XHJcbiAgICAgICAgICAgICAgQGluY2x1ZGUgbWFyZ2luKG51bGwsICRzcGFjZXIsIG51bGwsIG51bGwpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAuI3skc2l6ZX0tcGFkZGluZy1yaWdodC0jeyRzcGFjZXJ9IHtcclxuICAgICAgICAgICAgICBAaW5jbHVkZSBwYWRkaW5nKG51bGwsICRzcGFjZXIsIG51bGwsIG51bGwpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBCb3R0b20gU2lkZVxyXG4gICAgICAgICAgICAuI3skc2l6ZX0tbWFyZ2luLWJvdHRvbS0jeyRzcGFjZXJ9IHtcclxuICAgICAgICAgICAgICBAaW5jbHVkZSBtYXJnaW4obnVsbCwgbnVsbCwgJHNwYWNlciwgbnVsbCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC4jeyRzaXplfS1wYWRkaW5nLWJvdHRvbS0jeyRzcGFjZXJ9IHtcclxuICAgICAgICAgICAgICBAaW5jbHVkZSBwYWRkaW5nKG51bGwsIG51bGwsICRzcGFjZXIsIG51bGwpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBMZWZ0IFNpZGVcclxuICAgICAgICAgICAgLiN7JHNpemV9LW1hcmdpbi1sZWZ0LSN7JHNwYWNlcn0ge1xyXG4gICAgICAgICAgICAgIEBpbmNsdWRlIG1hcmdpbihudWxsLCBudWxsLCBudWxsLCAkc3BhY2VyKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLiN7JHNpemV9LXBhZGRpbmctbGVmdC0jeyRzcGFjZXJ9IHtcclxuICAgICAgICAgICAgICBAaW5jbHVkZSBwYWRkaW5nKG51bGwsIG51bGwsIG51bGwsICRzcGFjZXIpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBIb3Jpem9udGFsIEF4ZXNcclxuICAgICAgICAgICAgLiN7JHNpemV9LW1hcmdpbi1ob3Jpem9udGFsLSN7JHNwYWNlcn0ge1xyXG4gICAgICAgICAgICAgIEBpbmNsdWRlIG1hcmdpbihudWxsLCAkc3BhY2VyLCBudWxsLCAkc3BhY2VyKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLiN7JHNpemV9LXBhZGRpbmctaG9yaXpvbnRhbC0jeyRzcGFjZXJ9IHtcclxuICAgICAgICAgICAgICBAaW5jbHVkZSBwYWRkaW5nKG51bGwsICRzcGFjZXIsIG51bGwsICRzcGFjZXIpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBWZXJ0aWNhbCBBeGVzXHJcbiAgICAgICAgICAgIC4jeyRzaXplfS1tYXJnaW4tdmVydGljYWwtI3skc3BhY2VyfSB7XHJcbiAgICAgICAgICAgICAgQGluY2x1ZGUgbWFyZ2luKCRzcGFjZXIsIG51bGwsICRzcGFjZXIsIG51bGwpXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC4jeyRzaXplfS1wYWRkaW5nLXZlcnRpY2FsLSN7JHNwYWNlcn0ge1xyXG4gICAgICAgICAgICAgIEBpbmNsdWRlIHBhZGRpbmcoJHNwYWNlciwgbnVsbCwgJHNwYWNlciwgbnVsbClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCJcclxuLy8gIEZvdW5kYXRpb24gZm9yIFNpdGVzIFNldHRpbmdzXHJcbi8vICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4vL1xyXG4vLyAgVGFibGUgb2YgQ29udGVudHM6XHJcbi8vXHJcbi8vICAgMS4gR2xvYmFsXHJcbi8vICAgMi4gQnJlYWtwb2ludHNcclxuLy8gICAzLiBUaGUgR3JpZFxyXG4vLyAgIDQuIEJhc2UgVHlwb2dyYXBoeVxyXG4vLyAgIDUuIFR5cG9ncmFwaHkgSGVscGVyc1xyXG4vLyAgIDYuIEFiaWRlXHJcbi8vICAgNy4gQWNjb3JkaW9uXHJcbi8vICAgOC4gQWNjb3JkaW9uIE1lbnVcclxuLy8gICA5LiBCYWRnZVxyXG4vLyAgMTAuIEJyZWFkY3J1bWJzXHJcbi8vICAxMS4gQnV0dG9uXHJcbi8vICAxMi4gQnV0dG9uIEdyb3VwXHJcbi8vICAxMy4gQ2FsbG91dFxyXG4vLyAgMTQuIENhcmRcclxuLy8gIDE1LiBDbG9zZSBCdXR0b25cclxuLy8gIDE2LiBEcmlsbGRvd25cclxuLy8gIDE3LiBEcm9wZG93blxyXG4vLyAgMTguIERyb3Bkb3duIE1lbnVcclxuLy8gIDE5LiBGbGV4Ym94IFV0aWxpdGllc1xyXG4vLyAgMjAuIEZvcm1zXHJcbi8vICAyMS4gTGFiZWxcclxuLy8gIDIyLiBNZWRpYSBPYmplY3RcclxuLy8gIDIzLiBNZW51XHJcbi8vICAyNC4gTWV0ZXJcclxuLy8gIDI1LiBPZmYtY2FudmFzXHJcbi8vICAyNi4gT3JiaXRcclxuLy8gIDI3LiBQYWdpbmF0aW9uXHJcbi8vICAyOC4gUHJvZ3Jlc3MgQmFyXHJcbi8vICAyOS4gUHJvdG90eXBlIEFycm93XHJcbi8vICAzMC4gUHJvdG90eXBlIEJvcmRlci1Cb3hcclxuLy8gIDMxLiBQcm90b3R5cGUgQm9yZGVyLU5vbmVcclxuLy8gIDMyLiBQcm90b3R5cGUgQm9yZGVyZWRcclxuLy8gIDMzLiBQcm90b3R5cGUgRGlzcGxheVxyXG4vLyAgMzQuIFByb3RvdHlwZSBGb250LVN0eWxpbmdcclxuLy8gIDM1LiBQcm90b3R5cGUgTGlzdC1TdHlsZS1UeXBlXHJcbi8vICAzNi4gUHJvdG90eXBlIE92ZXJmbG93XHJcbi8vICAzNy4gUHJvdG90eXBlIFBvc2l0aW9uXHJcbi8vICAzOC4gUHJvdG90eXBlIFJvdW5kZWRcclxuLy8gIDM5LiBQcm90b3R5cGUgU2VwYXJhdG9yXHJcbi8vICA0MC4gUHJvdG90eXBlIFNoYWRvd1xyXG4vLyAgNDEuIFByb3RvdHlwZSBTaXppbmdcclxuLy8gIDQyLiBQcm90b3R5cGUgU3BhY2luZ1xyXG4vLyAgNDMuIFByb3RvdHlwZSBUZXh0LURlY29yYXRpb25cclxuLy8gIDQ0LiBQcm90b3R5cGUgVGV4dC1UcmFuc2Zvcm1hdGlvblxyXG4vLyAgNDUuIFByb3RvdHlwZSBUZXh0LVV0aWxpdGllc1xyXG4vLyAgNDYuIFJlc3BvbnNpdmUgRW1iZWRcclxuLy8gIDQ3LiBSZXZlYWxcclxuLy8gIDQ4LiBTbGlkZXJcclxuLy8gIDQ5LiBTd2l0Y2hcclxuLy8gIDUwLiBUYWJsZVxyXG4vLyAgNTEuIFRhYnNcclxuLy8gIDUyLiBUaHVtYm5haWxcclxuLy8gIDUzLiBUaXRsZSBCYXJcclxuLy8gIDU0LiBUb29sdGlwXHJcbi8vICA1NS4gVG9wIEJhclxyXG4vLyAgNTYuIFh5IEdyaWRcclxuXHJcblxyXG4vLyAxLiBHbG9iYWxcclxuLy8gLS0tLS0tLS0tXHJcblxyXG4kZ2xvYmFsLWZvbnQtc2l6ZTogMTAwJTtcclxuJGdsb2JhbC13aWR0aDogcmVtLWNhbGMoMTIwMCk7XHJcbiRnbG9iYWwtbGluZWhlaWdodDogMS41O1xyXG4kZm91bmRhdGlvbi1wYWxldHRlOiAoXHJcbiAgcHJpbWFyeTogJHJlZCxcclxuICBzZWNvbmRhcnk6ICRncmV5LWRhcmssXHJcbiAgc3VjY2VzczogIzNhZGI3NixcclxuICB3YXJuaW5nOiAjZmZhZTAwLFxyXG4gIGFsZXJ0OiAjY2M0YjM3LFxyXG4pO1xyXG4kbGlnaHQtZ3JheTogI2Y1ZjVmNTtcclxuJG1lZGl1bS1ncmF5OiAjZWVlZWVlO1xyXG4kZGFyay1ncmF5OiAjMzMzMzMzO1xyXG4kYmxhY2s6ICRibGFjaztcclxuJHdoaXRlOiAkd2hpdGU7XHJcbiRib2R5LWJhY2tncm91bmQ6ICR3aGl0ZTtcclxuJGJvZHktZm9udC1jb2xvcjogJGJsYWNrO1xyXG4kYm9keS1mb250LWZhbWlseTogJ0Fra3VyYXQtTGlnaHQnLCBzYW5zLXNlcmlmO1xyXG4kYm9keS1hbnRpYWxpYXNlZDogdHJ1ZTtcclxuJGdsb2JhbC1tYXJnaW46IDFyZW07XHJcbiRnbG9iYWwtcGFkZGluZzogMXJlbTtcclxuJGdsb2JhbC1wb3NpdGlvbjogMXJlbTtcclxuJGdsb2JhbC13ZWlnaHQtbm9ybWFsOiBub3JtYWw7XHJcbiRnbG9iYWwtd2VpZ2h0LWJvbGQ6IGJvbGQ7XHJcbiRnbG9iYWwtcmFkaXVzOiAwO1xyXG4kZ2xvYmFsLW1lbnUtcGFkZGluZzogMC43cmVtIDFyZW07XHJcbiRnbG9iYWwtbWVudS1uZXN0ZWQtbWFyZ2luOiAxcmVtO1xyXG4kZ2xvYmFsLXRleHQtZGlyZWN0aW9uOiBsdHI7XHJcbiRnbG9iYWwtZmxleGJveDogdHJ1ZTtcclxuJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHM6IGZhbHNlO1xyXG4kZ2xvYmFsLWJ1dHRvbi1jdXJzb3I6IGF1dG87XHJcbiRnbG9iYWwtY29sb3ItcGljay1jb250cmFzdC10b2xlcmFuY2U6IDA7XHJcbiRwcmludC10cmFuc3BhcmVudC1iYWNrZ3JvdW5kczogdHJ1ZTtcclxuXHJcbkBpbmNsdWRlIGFkZC1mb3VuZGF0aW9uLWNvbG9ycztcclxuXHJcbi8vIDIuIEJyZWFrcG9pbnRzXHJcbi8vIC0tLS0tLS0tLS0tLS0tXHJcblxyXG4kYnJlYWtwb2ludHM6IChcclxuICBzbWFsbDogMCxcclxuICBtZWRpdW06IDc2OHB4LFxyXG4gIGxhcmdlOiAxMDI0cHgsXHJcbiAgeGxhcmdlOiAxMjAwcHgsXHJcbiAgeHhsYXJnZTogMTQ0MHB4LFxyXG4pO1xyXG4kcHJpbnQtYnJlYWtwb2ludDogbGFyZ2U7XHJcbiRicmVha3BvaW50LWNsYXNzZXM6IChzbWFsbCBtZWRpdW0gbGFyZ2UpO1xyXG5cclxuLy8gMy4gVGhlIEdyaWRcclxuLy8gLS0tLS0tLS0tLS1cclxuXHJcbiRncmlkLXJvdy13aWR0aDogJGdsb2JhbC13aWR0aDtcclxuJGdyaWQtY29sdW1uLWNvdW50OiAxMjtcclxuJGdyaWQtY29sdW1uLWd1dHRlcjogKFxyXG4gIHNtYWxsOiA1MHB4LFxyXG4gIG1lZGl1bTogMjBweCxcclxuKTtcclxuJGdyaWQtY29sdW1uLWFsaWduLWVkZ2U6IHRydWU7XHJcbiRncmlkLWNvbHVtbi1hbGlhczogJ2NvbHVtbnMnO1xyXG4kYmxvY2stZ3JpZC1tYXg6IDg7XHJcblxyXG4vLyA0LiBCYXNlIFR5cG9ncmFwaHlcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4kaGVhZGVyLWZvbnQtZmFtaWx5OiAnQWtrdXJhdC1SZWd1bGFyQm9sZCcsIHNhbnMtc2VyaWY7XHJcbiRoZWFkZXItZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LW5vcm1hbDtcclxuJGhlYWRlci1mb250LXN0eWxlOiBub3JtYWw7XHJcbiRmb250LWZhbWlseS1tb25vc3BhY2U6IENvbnNvbGFzLCAnTGliZXJhdGlvbiBNb25vJywgQ291cmllciwgbW9ub3NwYWNlO1xyXG4kaGVhZGVyLWNvbG9yOiBpbmhlcml0O1xyXG4kaGVhZGVyLWxpbmVoZWlnaHQ6IDEuNDtcclxuJGhlYWRlci1tYXJnaW4tYm90dG9tOiAwLjVyZW07XHJcbiRoZWFkZXItc3R5bGVzOiAoXHJcbiAgc21hbGw6IChcclxuICAgICdoMSc6ICgnZm9udC1zaXplJzogMjQpLFxyXG4gICAgJ2gyJzogKCdmb250LXNpemUnOiAyMCksXHJcbiAgICAnaDMnOiAoJ2ZvbnQtc2l6ZSc6IDE5KSxcclxuICAgICdoNCc6ICgnZm9udC1zaXplJzogMTgpLFxyXG4gICAgJ2g1JzogKCdmb250LXNpemUnOiAxNyksXHJcbiAgICAnaDYnOiAoJ2ZvbnQtc2l6ZSc6IDE2KSxcclxuICApLFxyXG4gIG1lZGl1bTogKFxyXG4gICAgJ2gxJzogKCdmb250LXNpemUnOiA0OCksXHJcbiAgICAnaDInOiAoJ2ZvbnQtc2l6ZSc6IDQwKSxcclxuICAgICdoMyc6ICgnZm9udC1zaXplJzogMzEpLFxyXG4gICAgJ2g0JzogKCdmb250LXNpemUnOiAyNSksXHJcbiAgICAnaDUnOiAoJ2ZvbnQtc2l6ZSc6IDIwKSxcclxuICAgICdoNic6ICgnZm9udC1zaXplJzogMTYpLFxyXG4gICksXHJcbik7XHJcbiRoZWFkZXItdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTtcclxuJHNtYWxsLWZvbnQtc2l6ZTogODAlO1xyXG4kaGVhZGVyLXNtYWxsLWZvbnQtY29sb3I6ICRtZWRpdW0tZ3JheTtcclxuJHBhcmFncmFwaC1saW5laGVpZ2h0OiAxLjY7XHJcbiRwYXJhZ3JhcGgtbWFyZ2luLWJvdHRvbTogMXJlbTtcclxuJHBhcmFncmFwaC10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5O1xyXG4kY29kZS1jb2xvcjogJGJsYWNrO1xyXG4kY29kZS1mb250LWZhbWlseTogJGZvbnQtZmFtaWx5LW1vbm9zcGFjZTtcclxuJGNvZGUtZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LW5vcm1hbDtcclxuJGNvZGUtYmFja2dyb3VuZDogJGxpZ2h0LWdyYXk7XHJcbiRjb2RlLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcclxuJGNvZGUtcGFkZGluZzogcmVtLWNhbGMoMiA1IDEpO1xyXG4kYW5jaG9yLWNvbG9yOiAkcHJpbWFyeS1jb2xvcjtcclxuJGFuY2hvci1jb2xvci1ob3Zlcjogc2NhbGUtY29sb3IoJGFuY2hvci1jb2xvciwgJGxpZ2h0bmVzczogLTE0JSk7XHJcbiRhbmNob3ItdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4kYW5jaG9yLXRleHQtZGVjb3JhdGlvbi1ob3Zlcjogbm9uZTtcclxuJGhyLXdpZHRoOiAkZ2xvYmFsLXdpZHRoO1xyXG4kaHItYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5O1xyXG4kaHItbWFyZ2luOiByZW0tY2FsYygyMCkgYXV0bztcclxuJGxpc3QtbGluZWhlaWdodDogJHBhcmFncmFwaC1saW5laGVpZ2h0O1xyXG4kbGlzdC1tYXJnaW4tYm90dG9tOiAkcGFyYWdyYXBoLW1hcmdpbi1ib3R0b207XHJcbiRsaXN0LXN0eWxlLXR5cGU6IGRpc2M7XHJcbiRsaXN0LXN0eWxlLXBvc2l0aW9uOiBvdXRzaWRlO1xyXG4kbGlzdC1zaWRlLW1hcmdpbjogMS4yNXJlbTtcclxuJGxpc3QtbmVzdGVkLXNpZGUtbWFyZ2luOiAxLjI1cmVtO1xyXG4kZGVmbmxpc3QtbWFyZ2luLWJvdHRvbTogMXJlbTtcclxuJGRlZm5saXN0LXRlcm0td2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkO1xyXG4kZGVmbmxpc3QtdGVybS1tYXJnaW4tYm90dG9tOiAwLjNyZW07XHJcbiRibG9ja3F1b3RlLWNvbG9yOiAkZGFyay1ncmF5O1xyXG4kYmxvY2txdW90ZS1wYWRkaW5nOiByZW0tY2FsYyg5IDIwIDAgMTkpO1xyXG4kYmxvY2txdW90ZS1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXk7XHJcbiRjaXRlLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTMpO1xyXG4kY2l0ZS1jb2xvcjogJGRhcmstZ3JheTtcclxuJGNpdGUtcHNldWRvLWNvbnRlbnQ6ICdcXDIwMTQgXFwwMDIwJztcclxuJGtleXN0cm9rZS1mb250OiAkZm9udC1mYW1pbHktbW9ub3NwYWNlO1xyXG4ka2V5c3Ryb2tlLWNvbG9yOiAkYmxhY2s7XHJcbiRrZXlzdHJva2UtYmFja2dyb3VuZDogJGxpZ2h0LWdyYXk7XHJcbiRrZXlzdHJva2UtcGFkZGluZzogcmVtLWNhbGMoMiA0IDApO1xyXG4ka2V5c3Ryb2tlLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XHJcbiRhYmJyLXVuZGVybGluZTogMXB4IGRvdHRlZCAkYmxhY2s7XHJcblxyXG4vLyA1LiBUeXBvZ3JhcGh5IEhlbHBlcnNcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4kbGVhZC1mb250LXNpemU6ICRnbG9iYWwtZm9udC1zaXplICogMS4yNTtcclxuJGxlYWQtbGluZWhlaWdodDogMS42O1xyXG4kc3ViaGVhZGVyLWxpbmVoZWlnaHQ6IDEuNDtcclxuJHN1YmhlYWRlci1jb2xvcjogJGRhcmstZ3JheTtcclxuJHN1YmhlYWRlci1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsO1xyXG4kc3ViaGVhZGVyLW1hcmdpbi10b3A6IDAuMnJlbTtcclxuJHN1YmhlYWRlci1tYXJnaW4tYm90dG9tOiAwLjVyZW07XHJcbiRzdGF0LWZvbnQtc2l6ZTogMi41cmVtO1xyXG5cclxuLy8gNi4gQWJpZGVcclxuLy8gLS0tLS0tLS1cclxuXHJcbiRhYmlkZS1pbnB1dHM6IHRydWU7XHJcbiRhYmlkZS1sYWJlbHM6IHRydWU7XHJcbiRpbnB1dC1iYWNrZ3JvdW5kLWludmFsaWQ6IGdldC1jb2xvcihhbGVydCk7XHJcbiRmb3JtLWxhYmVsLWNvbG9yLWludmFsaWQ6IGdldC1jb2xvcihhbGVydCk7XHJcbiRpbnB1dC1lcnJvci1jb2xvcjogZ2V0LWNvbG9yKGFsZXJ0KTtcclxuJGlucHV0LWVycm9yLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTIpO1xyXG4kaW5wdXQtZXJyb3ItZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQ7XHJcblxyXG4vLyA3LiBBY2NvcmRpb25cclxuLy8gLS0tLS0tLS0tLS0tXHJcblxyXG4kYWNjb3JkaW9uLWJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4kYWNjb3JkaW9uLXBsdXNtaW51czogZmFsc2U7XHJcbiRhY2NvcmRpb24tdGl0bGUtZm9udC1zaXplOiByZW0tY2FsYygxOHB4KTtcclxuJGFjY29yZGlvbi1pdGVtLWNvbG9yOiAkYmxhY2s7XHJcbiRhY2NvcmRpb24taXRlbS1iYWNrZ3JvdW5kLWhvdmVyOiAkZ3JleS1hY2NvcmRpb24taG92ZXI7XHJcbiRhY2NvcmRpb24taXRlbS1wYWRkaW5nOiByZW0tY2FsYygyMHB4IDMwcHggMjBweCAxNXB4KTtcclxuJGFjY29yZGlvbi1jb250ZW50LWJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4kYWNjb3JkaW9uLWNvbnRlbnQtYm9yZGVyOiBub25lO1xyXG4kYWNjb3JkaW9uLWNvbnRlbnQtY29sb3I6IGluaGVyaXQ7XHJcbiRhY2NvcmRpb24tY29udGVudC1wYWRkaW5nOiAwO1xyXG5cclxuLy8gOC4gQWNjb3JkaW9uIE1lbnVcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiRhY2NvcmRpb25tZW51LXBhZGRpbmc6ICRnbG9iYWwtbWVudS1wYWRkaW5nO1xyXG4kYWNjb3JkaW9ubWVudS1uZXN0ZWQtbWFyZ2luOiAkZ2xvYmFsLW1lbnUtbmVzdGVkLW1hcmdpbjtcclxuJGFjY29yZGlvbm1lbnUtc3VibWVudS1wYWRkaW5nOiAkYWNjb3JkaW9ubWVudS1wYWRkaW5nO1xyXG4kYWNjb3JkaW9ubWVudS1hcnJvd3M6IHRydWU7XHJcbiRhY2NvcmRpb25tZW51LWFycm93LWNvbG9yOiAkcHJpbWFyeS1jb2xvcjtcclxuJGFjY29yZGlvbm1lbnUtaXRlbS1iYWNrZ3JvdW5kOiBudWxsO1xyXG4kYWNjb3JkaW9ubWVudS1ib3JkZXI6IG51bGw7XHJcbiRhY2NvcmRpb25tZW51LXN1Ym1lbnUtdG9nZ2xlLWJhY2tncm91bmQ6IG51bGw7XHJcbiRhY2NvcmRpb24tc3VibWVudS10b2dnbGUtYm9yZGVyOiAkYWNjb3JkaW9ubWVudS1ib3JkZXI7XHJcbiRhY2NvcmRpb25tZW51LXN1Ym1lbnUtdG9nZ2xlLXdpZHRoOiA0MHB4O1xyXG4kYWNjb3JkaW9ubWVudS1zdWJtZW51LXRvZ2dsZS1oZWlnaHQ6ICRhY2NvcmRpb25tZW51LXN1Ym1lbnUtdG9nZ2xlLXdpZHRoO1xyXG4kYWNjb3JkaW9ubWVudS1hcnJvdy1zaXplOiA2cHg7XHJcblxyXG4vLyA5LiBCYWRnZVxyXG4vLyAtLS0tLS0tLVxyXG5cclxuJGJhZGdlLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yO1xyXG4kYmFkZ2UtY29sb3I6ICR3aGl0ZTtcclxuJGJhZGdlLWNvbG9yLWFsdDogJGJsYWNrO1xyXG4kYmFkZ2UtcGFsZXR0ZTogJGZvdW5kYXRpb24tcGFsZXR0ZTtcclxuJGJhZGdlLXBhZGRpbmc6IDAuM2VtO1xyXG4kYmFkZ2UtbWlud2lkdGg6IDIuMWVtO1xyXG4kYmFkZ2UtZm9udC1zaXplOiAwLjZyZW07XHJcblxyXG4vLyAxMC4gQnJlYWRjcnVtYnNcclxuLy8gLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4kYnJlYWRjcnVtYnMtbWFyZ2luOiAwIDAgJGdsb2JhbC1tYXJnaW4gMDtcclxuJGJyZWFkY3J1bWJzLWl0ZW0tZm9udC1zaXplOiByZW0tY2FsYygxMSk7XHJcbiRicmVhZGNydW1icy1pdGVtLWNvbG9yOiAkcHJpbWFyeS1jb2xvcjtcclxuJGJyZWFkY3J1bWJzLWl0ZW0tY29sb3ItY3VycmVudDogJGJsYWNrO1xyXG4kYnJlYWRjcnVtYnMtaXRlbS1jb2xvci1kaXNhYmxlZDogJG1lZGl1bS1ncmF5O1xyXG4kYnJlYWRjcnVtYnMtaXRlbS1tYXJnaW46IDAuNzVyZW07XHJcbiRicmVhZGNydW1icy1pdGVtLXVwcGVyY2FzZTogdHJ1ZTtcclxuJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yOiB0cnVlO1xyXG4kYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3ItaXRlbTogJy8nO1xyXG4kYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3ItaXRlbS1ydGw6ICdcXFxcJztcclxuJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yLWNvbG9yOiAkbWVkaXVtLWdyYXk7XHJcblxyXG4vLyAxMS4gQnV0dG9uXHJcbi8vIC0tLS0tLS0tLS1cclxuXHJcbiRidXR0b24tZm9udC1mYW1pbHk6IGluaGVyaXQ7XHJcbiRidXR0b24tcGFkZGluZzogMC44NWVtIDFlbTtcclxuJGJ1dHRvbi1tYXJnaW46IDAgMCAkZ2xvYmFsLW1hcmdpbiAwO1xyXG4kYnV0dG9uLWZpbGw6IHNvbGlkO1xyXG4kYnV0dG9uLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yO1xyXG4kYnV0dG9uLWJhY2tncm91bmQtaG92ZXI6IHNjYWxlLWNvbG9yKCRidXR0b24tYmFja2dyb3VuZCwgJGxpZ2h0bmVzczogLTE1JSk7XHJcbiRidXR0b24tY29sb3I6ICR3aGl0ZTtcclxuJGJ1dHRvbi1jb2xvci1hbHQ6ICRibGFjaztcclxuJGJ1dHRvbi1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG4kYnV0dG9uLWhvbGxvdy1ib3JkZXItd2lkdGg6IDFweDtcclxuJGJ1dHRvbi1zaXplczogKFxyXG4gIHRpbnk6IDAuNnJlbSxcclxuICBzbWFsbDogMC43NXJlbSxcclxuICBkZWZhdWx0OiAwLjlyZW0sXHJcbiAgbGFyZ2U6IDEuMjVyZW0sXHJcbik7XHJcbiRidXR0b24tcGFsZXR0ZTogJGZvdW5kYXRpb24tcGFsZXR0ZTtcclxuJGJ1dHRvbi1vcGFjaXR5LWRpc2FibGVkOiAwLjI1O1xyXG4kYnV0dG9uLWJhY2tncm91bmQtaG92ZXItbGlnaHRuZXNzOiAtMjAlO1xyXG4kYnV0dG9uLWhvbGxvdy1ob3Zlci1saWdodG5lc3M6IC01MCU7XHJcbiRidXR0b24tdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjI1cyBlYXNlLW91dCwgY29sb3IgMC4yNXMgZWFzZS1vdXQ7XHJcblxyXG4vLyAxMi4gQnV0dG9uIEdyb3VwXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiRidXR0b25ncm91cC1tYXJnaW46IDFyZW07XHJcbiRidXR0b25ncm91cC1zcGFjaW5nOiAxcHg7XHJcbiRidXR0b25ncm91cC1jaGlsZC1zZWxlY3RvcjogJy5idXR0b24nO1xyXG4kYnV0dG9uZ3JvdXAtZXhwYW5kLW1heDogNjtcclxuJGJ1dHRvbmdyb3VwLXJhZGl1cy1vbi1lYWNoOiB0cnVlO1xyXG5cclxuLy8gMTMuIENhbGxvdXRcclxuLy8gLS0tLS0tLS0tLS1cclxuXHJcbiRjYWxsb3V0LWJhY2tncm91bmQ6ICR3aGl0ZTtcclxuJGNhbGxvdXQtYmFja2dyb3VuZC1mYWRlOiA4NSU7XHJcbiRjYWxsb3V0LWJvcmRlcjogMXB4IHNvbGlkIHJnYmEoJGJsYWNrLCAwLjI1KTtcclxuJGNhbGxvdXQtbWFyZ2luOiAwIDAgMXJlbSAwO1xyXG4kY2FsbG91dC1wYWRkaW5nOiAxcmVtO1xyXG4kY2FsbG91dC1mb250LWNvbG9yOiAkYm9keS1mb250LWNvbG9yO1xyXG4kY2FsbG91dC1mb250LWNvbG9yLWFsdDogJGJvZHktYmFja2dyb3VuZDtcclxuJGNhbGxvdXQtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcclxuJGNhbGxvdXQtbGluay10aW50OiAzMCU7XHJcblxyXG4vLyAxNC4gQ2FyZFxyXG4vLyAtLS0tLS0tLVxyXG5cclxuJGNhcmQtYmFja2dyb3VuZDogJHdoaXRlO1xyXG4kY2FyZC1mb250LWNvbG9yOiAkYm9keS1mb250LWNvbG9yO1xyXG4kY2FyZC1kaXZpZGVyLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5O1xyXG4kY2FyZC1ib3JkZXI6IDFweCBzb2xpZCAkbGlnaHQtZ3JheTtcclxuJGNhcmQtc2hhZG93OiBub25lO1xyXG4kY2FyZC1ib3JkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcclxuJGNhcmQtcGFkZGluZzogJGdsb2JhbC1wYWRkaW5nO1xyXG4kY2FyZC1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbjtcclxuXHJcbi8vIDE1LiBDbG9zZSBCdXR0b25cclxuLy8gLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuJGNsb3NlYnV0dG9uLXBvc2l0aW9uOiByaWdodCB0b3A7XHJcbiRjbG9zZWJ1dHRvbi1vZmZzZXQtaG9yaXpvbnRhbDogKFxyXG4gIHNtYWxsOiAwLjY2cmVtLFxyXG4gIG1lZGl1bTogMXJlbSxcclxuKTtcclxuJGNsb3NlYnV0dG9uLW9mZnNldC12ZXJ0aWNhbDogKFxyXG4gIHNtYWxsOiAwLjMzZW0sXHJcbiAgbWVkaXVtOiAwLjVyZW0sXHJcbik7XHJcbiRjbG9zZWJ1dHRvbi1zaXplOiAoXHJcbiAgc21hbGw6IDEuNWVtLFxyXG4gIG1lZGl1bTogMmVtLFxyXG4pO1xyXG4kY2xvc2VidXR0b24tbGluZWhlaWdodDogMTtcclxuJGNsb3NlYnV0dG9uLWNvbG9yOiAkZGFyay1ncmF5O1xyXG4kY2xvc2VidXR0b24tY29sb3ItaG92ZXI6ICRibGFjaztcclxuXHJcbi8vIDE2LiBEcmlsbGRvd25cclxuLy8gLS0tLS0tLS0tLS0tLVxyXG5cclxuJGRyaWxsZG93bi10cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xNXMgbGluZWFyO1xyXG4kZHJpbGxkb3duLWFycm93czogdHJ1ZTtcclxuJGRyaWxsZG93bi1wYWRkaW5nOiAkZ2xvYmFsLW1lbnUtcGFkZGluZztcclxuJGRyaWxsZG93bi1uZXN0ZWQtbWFyZ2luOiAwO1xyXG4kZHJpbGxkb3duLWJhY2tncm91bmQ6ICR3aGl0ZTtcclxuJGRyaWxsZG93bi1zdWJtZW51LXBhZGRpbmc6ICRkcmlsbGRvd24tcGFkZGluZztcclxuJGRyaWxsZG93bi1zdWJtZW51LWJhY2tncm91bmQ6ICR3aGl0ZTtcclxuJGRyaWxsZG93bi1hcnJvdy1jb2xvcjogJHByaW1hcnktY29sb3I7XHJcbiRkcmlsbGRvd24tYXJyb3ctc2l6ZTogNnB4O1xyXG5cclxuLy8gMTcuIERyb3Bkb3duXHJcbi8vIC0tLS0tLS0tLS0tLVxyXG5cclxuJGRyb3Bkb3duLXBhZGRpbmc6IDFyZW07XHJcbiRkcm9wZG93bi1iYWNrZ3JvdW5kOiAkYm9keS1iYWNrZ3JvdW5kO1xyXG4kZHJvcGRvd24tYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5O1xyXG4kZHJvcGRvd24tZm9udC1zaXplOiAxcmVtO1xyXG4kZHJvcGRvd24td2lkdGg6IDMwMHB4O1xyXG4kZHJvcGRvd24tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcclxuJGRyb3Bkb3duLXNpemVzOiAoXHJcbiAgdGlueTogMTAwcHgsXHJcbiAgc21hbGw6IDIwMHB4LFxyXG4gIGxhcmdlOiA0MDBweCxcclxuKTtcclxuXHJcbi8vIDE4LiBEcm9wZG93biBNZW51XHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4kZHJvcGRvd25tZW51LWFycm93czogdHJ1ZTtcclxuJGRyb3Bkb3dubWVudS1hcnJvdy1jb2xvcjogJGFuY2hvci1jb2xvcjtcclxuJGRyb3Bkb3dubWVudS1hcnJvdy1zaXplOiA2cHg7XHJcbiRkcm9wZG93bm1lbnUtYXJyb3ctcGFkZGluZzogMS41cmVtO1xyXG4kZHJvcGRvd25tZW51LW1pbi13aWR0aDogMjAwcHg7XHJcbiRkcm9wZG93bm1lbnUtYmFja2dyb3VuZDogJHdoaXRlO1xyXG4kZHJvcGRvd25tZW51LXN1Ym1lbnUtYmFja2dyb3VuZDogJGRyb3Bkb3dubWVudS1iYWNrZ3JvdW5kO1xyXG4kZHJvcGRvd25tZW51LXBhZGRpbmc6ICRnbG9iYWwtbWVudS1wYWRkaW5nO1xyXG4kZHJvcGRvd25tZW51LW5lc3RlZC1tYXJnaW46IDA7XHJcbiRkcm9wZG93bm1lbnUtc3VibWVudS1wYWRkaW5nOiAkZHJvcGRvd25tZW51LXBhZGRpbmc7XHJcbiRkcm9wZG93bm1lbnUtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5O1xyXG4kZHJvcGRvd24tbWVudS1pdGVtLWNvbG9yLWFjdGl2ZTogZ2V0LWNvbG9yKHByaW1hcnkpO1xyXG4kZHJvcGRvd24tbWVudS1pdGVtLWJhY2tncm91bmQtYWN0aXZlOiB0cmFuc3BhcmVudDtcclxuXHJcbi8vIDE5LiBGbGV4Ym94IFV0aWxpdGllc1xyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiRmbGV4LXNvdXJjZS1vcmRlcmluZy1jb3VudDogNjtcclxuJGZsZXhib3gtcmVzcG9uc2l2ZS1icmVha3BvaW50czogdHJ1ZTtcclxuXHJcbi8vIDIwLiBGb3Jtc1xyXG4vLyAtLS0tLS0tLS1cclxuXHJcbiRmaWVsZHNldC1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXk7XHJcbiRmaWVsZHNldC1wYWRkaW5nOiByZW0tY2FsYygyMCk7XHJcbiRmaWVsZHNldC1tYXJnaW46IHJlbS1jYWxjKDE4IDApO1xyXG4kbGVnZW5kLXBhZGRpbmc6IHJlbS1jYWxjKDAgMyk7XHJcbiRmb3JtLXNwYWNpbmc6IHJlbS1jYWxjKDE2KTtcclxuJGhlbHB0ZXh0LWNvbG9yOiAkYmxhY2s7XHJcbiRoZWxwdGV4dC1mb250LXNpemU6IHJlbS1jYWxjKDEzKTtcclxuJGhlbHB0ZXh0LWZvbnQtc3R5bGU6IGl0YWxpYztcclxuJGlucHV0LXByZWZpeC1jb2xvcjogJGJsYWNrO1xyXG4kaW5wdXQtcHJlZml4LWJhY2tncm91bmQ6ICRsaWdodC1ncmF5O1xyXG4kaW5wdXQtcHJlZml4LWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcclxuJGlucHV0LXByZWZpeC1wYWRkaW5nOiAxcmVtO1xyXG4kZm9ybS1sYWJlbC1jb2xvcjogJGJsYWNrO1xyXG4kZm9ybS1sYWJlbC1mb250LXNpemU6IHJlbS1jYWxjKDE0KTtcclxuJGZvcm0tbGFiZWwtZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LW5vcm1hbDtcclxuJGZvcm0tbGFiZWwtbGluZS1oZWlnaHQ6IDEuODtcclxuJHNlbGVjdC1iYWNrZ3JvdW5kOiAkd2hpdGU7XHJcbiRzZWxlY3QtdHJpYW5nbGUtY29sb3I6ICRkYXJrLWdyYXk7XHJcbiRzZWxlY3QtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcclxuJGlucHV0LWNvbG9yOiAkYmxhY2s7XHJcbiRpbnB1dC1wbGFjZWhvbGRlci1jb2xvcjogJG1lZGl1bS1ncmF5O1xyXG4kaW5wdXQtZm9udC1mYW1pbHk6IGluaGVyaXQ7XHJcbiRpbnB1dC1mb250LXNpemU6IHJlbS1jYWxjKDE2KTtcclxuJGlucHV0LWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWw7XHJcbiRpbnB1dC1saW5lLWhlaWdodDogJGdsb2JhbC1saW5laGVpZ2h0O1xyXG4kaW5wdXQtYmFja2dyb3VuZDogJHdoaXRlO1xyXG4kaW5wdXQtYmFja2dyb3VuZC1mb2N1czogJHdoaXRlO1xyXG4kaW5wdXQtYmFja2dyb3VuZC1kaXNhYmxlZDogJGxpZ2h0LWdyYXk7XHJcbiRpbnB1dC1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXk7XHJcbiRpbnB1dC1ib3JkZXItZm9jdXM6IDFweCBzb2xpZCAkZGFyay1ncmF5O1xyXG4kaW5wdXQtcGFkZGluZzogJGZvcm0tc3BhY2luZyAvIDI7XHJcbiRpbnB1dC1zaGFkb3c6IGluc2V0IDAgMXB4IDJweCByZ2JhKCRibGFjaywgMC4xKTtcclxuJGlucHV0LXNoYWRvdy1mb2N1czogMCAwIDVweCAkbWVkaXVtLWdyYXk7XHJcbiRpbnB1dC1jdXJzb3ItZGlzYWJsZWQ6IG5vdC1hbGxvd2VkO1xyXG4kaW5wdXQtdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjVzLCBib3JkZXItY29sb3IgMC4yNXMgZWFzZS1pbi1vdXQ7XHJcbiRpbnB1dC1udW1iZXItc3Bpbm5lcnM6IHRydWU7XHJcbiRpbnB1dC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG4kZm9ybS1idXR0b24tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcclxuXHJcbi8vIDIxLiBMYWJlbFxyXG4vLyAtLS0tLS0tLS1cclxuXHJcbiRsYWJlbC1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvcjtcclxuJGxhYmVsLWNvbG9yOiAkd2hpdGU7XHJcbiRsYWJlbC1jb2xvci1hbHQ6ICRibGFjaztcclxuJGxhYmVsLXBhbGV0dGU6ICRmb3VuZGF0aW9uLXBhbGV0dGU7XHJcbiRsYWJlbC1mb250LXNpemU6IDAuOHJlbTtcclxuJGxhYmVsLXBhZGRpbmc6IDAuMzMzMzNyZW0gMC41cmVtO1xyXG4kbGFiZWwtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcclxuXHJcbi8vIDIyLiBNZWRpYSBPYmplY3RcclxuLy8gLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuJG1lZGlhb2JqZWN0LW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luO1xyXG4kbWVkaWFvYmplY3Qtc2VjdGlvbi1wYWRkaW5nOiAkZ2xvYmFsLXBhZGRpbmc7XHJcbiRtZWRpYW9iamVjdC1pbWFnZS13aWR0aC1zdGFja2VkOiAxMDAlO1xyXG5cclxuLy8gMjMuIE1lbnVcclxuLy8gLS0tLS0tLS1cclxuXHJcbiRtZW51LW1hcmdpbjogMDtcclxuJG1lbnUtbmVzdGVkLW1hcmdpbjogJGdsb2JhbC1tZW51LW5lc3RlZC1tYXJnaW47XHJcbiRtZW51LWl0ZW1zLXBhZGRpbmc6ICRnbG9iYWwtbWVudS1wYWRkaW5nO1xyXG4kbWVudS1zaW1wbGUtbWFyZ2luOiAxcmVtO1xyXG4kbWVudS1pdGVtLWNvbG9yLWFjdGl2ZTogJHdoaXRlO1xyXG4kbWVudS1pdGVtLWJhY2tncm91bmQtYWN0aXZlOiBnZXQtY29sb3IocHJpbWFyeSk7XHJcbiRtZW51LWljb24tc3BhY2luZzogMC4yNXJlbTtcclxuJG1lbnUtaXRlbS1iYWNrZ3JvdW5kLWhvdmVyOiAkbGlnaHQtZ3JheTtcclxuJG1lbnUtc3RhdGUtYmFjay1jb21wYXQ6IHRydWU7XHJcbiRtZW51LWNlbnRlcmVkLWJhY2stY29tcGF0OiB0cnVlO1xyXG4kbWVudS1pY29ucy1iYWNrLWNvbXBhdDogdHJ1ZTtcclxuXHJcbi8vIDI0LiBNZXRlclxyXG4vLyAtLS0tLS0tLS1cclxuXHJcbiRtZXRlci1oZWlnaHQ6IDFyZW07XHJcbiRtZXRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG4kbWV0ZXItYmFja2dyb3VuZDogJG1lZGl1bS1ncmF5O1xyXG4kbWV0ZXItZmlsbC1nb29kOiAkc3VjY2Vzcy1jb2xvcjtcclxuJG1ldGVyLWZpbGwtbWVkaXVtOiAkd2FybmluZy1jb2xvcjtcclxuJG1ldGVyLWZpbGwtYmFkOiAkYWxlcnQtY29sb3I7XHJcblxyXG4vLyAyNS4gT2ZmLWNhbnZhc1xyXG4vLyAtLS0tLS0tLS0tLS0tLVxyXG5cclxuJG9mZmNhbnZhcy1zaXplczogKFxyXG4gIHNtYWxsOiAyNTBweCxcclxuKTtcclxuJG9mZmNhbnZhcy12ZXJ0aWNhbC1zaXplczogKFxyXG4gIHNtYWxsOiAyNTBweCxcclxuKTtcclxuJG9mZmNhbnZhcy1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheTtcclxuJG9mZmNhbnZhcy1zaGFkb3c6IDAgMCAxMHB4IHJnYmEoJGJsYWNrLCAwLjcpO1xyXG4kb2ZmY2FudmFzLWlubmVyLXNoYWRvdy1zaXplOiAyMHB4O1xyXG4kb2ZmY2FudmFzLWlubmVyLXNoYWRvdy1jb2xvcjogcmdiYSgkYmxhY2ssIDAuMjUpO1xyXG4kb2ZmY2FudmFzLW92ZXJsYXktemluZGV4OiAxMTtcclxuJG9mZmNhbnZhcy1wdXNoLXppbmRleDogMTI7XHJcbiRvZmZjYW52YXMtb3ZlcmxhcC16aW5kZXg6IDEzO1xyXG4kb2ZmY2FudmFzLXJldmVhbC16aW5kZXg6IDEyO1xyXG4kb2ZmY2FudmFzLXRyYW5zaXRpb24tbGVuZ3RoOiAwLjVzO1xyXG4kb2ZmY2FudmFzLXRyYW5zaXRpb24tdGltaW5nOiBlYXNlO1xyXG4kb2ZmY2FudmFzLWZpeGVkLXJldmVhbDogdHJ1ZTtcclxuJG9mZmNhbnZhcy1leGl0LWJhY2tncm91bmQ6IHJnYmEoJHdoaXRlLCAwLjI1KTtcclxuJG1haW5jb250ZW50LWNsYXNzOiAnb2ZmLWNhbnZhcy1jb250ZW50JztcclxuXHJcbi8vIDI2LiBPcmJpdFxyXG4vLyAtLS0tLS0tLS1cclxuXHJcbiRvcmJpdC1idWxsZXQtYmFja2dyb3VuZDogJG1lZGl1bS1ncmF5O1xyXG4kb3JiaXQtYnVsbGV0LWJhY2tncm91bmQtYWN0aXZlOiAkZGFyay1ncmF5O1xyXG4kb3JiaXQtYnVsbGV0LWRpYW1ldGVyOiAxLjJyZW07XHJcbiRvcmJpdC1idWxsZXQtbWFyZ2luOiAwLjFyZW07XHJcbiRvcmJpdC1idWxsZXQtbWFyZ2luLXRvcDogMC44cmVtO1xyXG4kb3JiaXQtYnVsbGV0LW1hcmdpbi1ib3R0b206IDAuOHJlbTtcclxuJG9yYml0LWNhcHRpb24tYmFja2dyb3VuZDogcmdiYSgkYmxhY2ssIDAuNSk7XHJcbiRvcmJpdC1jYXB0aW9uLXBhZGRpbmc6IDFyZW07XHJcbiRvcmJpdC1jb250cm9sLWJhY2tncm91bmQtaG92ZXI6IHJnYmEoJGJsYWNrLCAwLjUpO1xyXG4kb3JiaXQtY29udHJvbC1wYWRkaW5nOiAxcmVtO1xyXG4kb3JiaXQtY29udHJvbC16aW5kZXg6IDEwO1xyXG5cclxuLy8gMjcuIFBhZ2luYXRpb25cclxuLy8gLS0tLS0tLS0tLS0tLS1cclxuXHJcbiRwYWdpbmF0aW9uLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTQpO1xyXG4kcGFnaW5hdGlvbi1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbjtcclxuJHBhZ2luYXRpb24taXRlbS1jb2xvcjogJGJsYWNrO1xyXG4kcGFnaW5hdGlvbi1pdGVtLXBhZGRpbmc6IHJlbS1jYWxjKDMgMTApO1xyXG4kcGFnaW5hdGlvbi1pdGVtLXNwYWNpbmc6IHJlbS1jYWxjKDEpO1xyXG4kcGFnaW5hdGlvbi1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG4kcGFnaW5hdGlvbi1pdGVtLWJhY2tncm91bmQtaG92ZXI6ICRsaWdodC1ncmF5O1xyXG4kcGFnaW5hdGlvbi1pdGVtLWJhY2tncm91bmQtY3VycmVudDogJHByaW1hcnktY29sb3I7XHJcbiRwYWdpbmF0aW9uLWl0ZW0tY29sb3ItY3VycmVudDogJHdoaXRlO1xyXG4kcGFnaW5hdGlvbi1pdGVtLWNvbG9yLWRpc2FibGVkOiAkbWVkaXVtLWdyYXk7XHJcbiRwYWdpbmF0aW9uLWVsbGlwc2lzLWNvbG9yOiAkYmxhY2s7XHJcbiRwYWdpbmF0aW9uLW1vYmlsZS1pdGVtczogZmFsc2U7XHJcbiRwYWdpbmF0aW9uLW1vYmlsZS1jdXJyZW50LWl0ZW06IGZhbHNlO1xyXG4kcGFnaW5hdGlvbi1hcnJvd3M6IHRydWU7XHJcblxyXG4vLyAyOC4gUHJvZ3Jlc3MgQmFyXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiRwcm9ncmVzcy1oZWlnaHQ6IDFyZW07XHJcbiRwcm9ncmVzcy1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXk7XHJcbiRwcm9ncmVzcy1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbjtcclxuJHByb2dyZXNzLW1ldGVyLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yO1xyXG4kcHJvZ3Jlc3MtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcclxuXHJcbi8vIDI5LiBQcm90b3R5cGUgQXJyb3dcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuJHByb3RvdHlwZS1hcnJvdy1kaXJlY3Rpb25zOiAoXHJcbiAgZG93bixcclxuICB1cCxcclxuICByaWdodCxcclxuICBsZWZ0XHJcbik7XHJcbiRwcm90b3R5cGUtYXJyb3ctc2l6ZTogMC40Mzc1cmVtO1xyXG4kcHJvdG90eXBlLWFycm93LWNvbG9yOiAkYmxhY2s7XHJcblxyXG4vLyAzMC4gUHJvdG90eXBlIEJvcmRlci1Cb3hcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4kcHJvdG90eXBlLWJvcmRlci1ib3gtYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzO1xyXG5cclxuLy8gMzEuIFByb3RvdHlwZSBCb3JkZXItTm9uZVxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4kcHJvdG90eXBlLWJvcmRlci1ub25lLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cztcclxuXHJcbi8vIDMyLiBQcm90b3R5cGUgQm9yZGVyZWRcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuJHByb3RvdHlwZS1ib3JkZXJlZC1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHM7XHJcbiRwcm90b3R5cGUtYm9yZGVyLXdpZHRoOiByZW0tY2FsYygxKTtcclxuJHByb3RvdHlwZS1ib3JkZXItdHlwZTogc29saWQ7XHJcbiRwcm90b3R5cGUtYm9yZGVyLWNvbG9yOiAkbWVkaXVtLWdyYXk7XHJcblxyXG4vLyAzMy4gUHJvdG90eXBlIERpc3BsYXlcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4kcHJvdG90eXBlLWRpc3BsYXktYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzO1xyXG4kcHJvdG90eXBlLWRpc3BsYXk6IChcclxuICBpbmxpbmUsXHJcbiAgaW5saW5lLWJsb2NrLFxyXG4gIGJsb2NrLFxyXG4gIHRhYmxlLFxyXG4gIHRhYmxlLWNlbGxcclxuKTtcclxuXHJcbi8vIDM0LiBQcm90b3R5cGUgRm9udC1TdHlsaW5nXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4kcHJvdG90eXBlLWZvbnQtYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzO1xyXG4kcHJvdG90eXBlLXdpZGUtbGV0dGVyLXNwYWNpbmc6IHJlbS1jYWxjKDQpO1xyXG4kcHJvdG90eXBlLWZvbnQtbm9ybWFsOiAkZ2xvYmFsLXdlaWdodC1ub3JtYWw7XHJcbiRwcm90b3R5cGUtZm9udC1ib2xkOiAkZ2xvYmFsLXdlaWdodC1ib2xkO1xyXG5cclxuLy8gMzUuIFByb3RvdHlwZSBMaXN0LVN0eWxlLVR5cGVcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiRwcm90b3R5cGUtbGlzdC1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHM7XHJcbiRwcm90b3R5cGUtc3R5bGUtdHlwZS11bm9yZGVyZWQ6IChcclxuICBkaXNjLFxyXG4gIGNpcmNsZSxcclxuICBzcXVhcmVcclxuKTtcclxuJHByb3RvdHlwZS1zdHlsZS10eXBlLW9yZGVyZWQ6IChcclxuICBkZWNpbWFsLFxyXG4gIGxvd2VyLWFscGhhLFxyXG4gIGxvd2VyLWxhdGluLFxyXG4gIGxvd2VyLXJvbWFuLFxyXG4gIHVwcGVyLWFscGhhLFxyXG4gIHVwcGVyLWxhdGluLFxyXG4gIHVwcGVyLXJvbWFuXHJcbik7XHJcblxyXG4vLyAzNi4gUHJvdG90eXBlIE92ZXJmbG93XHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiRwcm90b3R5cGUtb3ZlcmZsb3ctYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzO1xyXG4kcHJvdG90eXBlLW92ZXJmbG93OiAoXHJcbiAgdmlzaWJsZSxcclxuICBoaWRkZW4sXHJcbiAgc2Nyb2xsXHJcbik7XHJcblxyXG4vLyAzNy4gUHJvdG90eXBlIFBvc2l0aW9uXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiRwcm90b3R5cGUtcG9zaXRpb24tYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzO1xyXG4kcHJvdG90eXBlLXBvc2l0aW9uOiAoXHJcbiAgc3RhdGljLFxyXG4gIHJlbGF0aXZlLFxyXG4gIGFic29sdXRlLFxyXG4gIGZpeGVkXHJcbik7XHJcbiRwcm90b3R5cGUtcG9zaXRpb24tei1pbmRleDogOTc1O1xyXG5cclxuLy8gMzguIFByb3RvdHlwZSBSb3VuZGVkXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuJHByb3RvdHlwZS1yb3VuZGVkLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cztcclxuJHByb3RvdHlwZS1ib3JkZXItcmFkaXVzOiByZW0tY2FsYygzKTtcclxuXHJcbi8vIDM5LiBQcm90b3R5cGUgU2VwYXJhdG9yXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4kcHJvdG90eXBlLXNlcGFyYXRvci1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHM7XHJcbiRwcm90b3R5cGUtc2VwYXJhdG9yLWFsaWduOiBjZW50ZXI7XHJcbiRwcm90b3R5cGUtc2VwYXJhdG9yLWhlaWdodDogcmVtLWNhbGMoMik7XHJcbiRwcm90b3R5cGUtc2VwYXJhdG9yLXdpZHRoOiAzcmVtO1xyXG4kcHJvdG90eXBlLXNlcGFyYXRvci1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvcjtcclxuJHByb3RvdHlwZS1zZXBhcmF0b3ItbWFyZ2luLXRvcDogJGdsb2JhbC1tYXJnaW47XHJcblxyXG4vLyA0MC4gUHJvdG90eXBlIFNoYWRvd1xyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuJHByb3RvdHlwZS1zaGFkb3ctYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzO1xyXG4kcHJvdG90eXBlLWJveC1zaGFkb3c6IDAgMnB4IDVweCAwIHJnYmEoMCwwLDAsLjE2KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAwIDJweCAxMHB4IDAgcmdiYSgwLDAsMCwuMTIpO1xyXG5cclxuLy8gNDEuIFByb3RvdHlwZSBTaXppbmdcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiRwcm90b3R5cGUtc2l6aW5nLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cztcclxuJHByb3RvdHlwZS1zaXppbmc6IChcclxuICB3aWR0aCxcclxuICBoZWlnaHRcclxuKTtcclxuJHByb3RvdHlwZS1zaXplczogKFxyXG4gIDI1OiAyNSUsXHJcbiAgNTA6IDUwJSxcclxuICA3NTogNzUlLFxyXG4gIDEwMDogMTAwJVxyXG4pO1xyXG5cclxuLy8gNDIuIFByb3RvdHlwZSBTcGFjaW5nXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuJHByb3RvdHlwZS1zcGFjaW5nLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cztcclxuJHByb3RvdHlwZS1zcGFjZXJzLWNvdW50OiAzO1xyXG5cclxuLy8gNDMuIFByb3RvdHlwZSBUZXh0LURlY29yYXRpb25cclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiRwcm90b3R5cGUtZGVjb3JhdGlvbi1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHM7XHJcbiRwcm90b3R5cGUtdGV4dC1kZWNvcmF0aW9uOiAoXHJcbiAgb3ZlcmxpbmUsXHJcbiAgdW5kZXJsaW5lLFxyXG4gIGxpbmUtdGhyb3VnaCxcclxuKTtcclxuXHJcbi8vIDQ0LiBQcm90b3R5cGUgVGV4dC1UcmFuc2Zvcm1hdGlvblxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiRwcm90b3R5cGUtdHJhbnNmb3JtYXRpb24tYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzO1xyXG4kcHJvdG90eXBlLXRleHQtdHJhbnNmb3JtYXRpb246IChcclxuICBsb3dlcmNhc2UsXHJcbiAgdXBwZXJjYXNlLFxyXG4gIGNhcGl0YWxpemVcclxuKTtcclxuXHJcbi8vIDQ1LiBQcm90b3R5cGUgVGV4dC1VdGlsaXRpZXNcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuJHByb3RvdHlwZS11dGlsaXRpZXMtYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzO1xyXG4kcHJvdG90eXBlLXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG5cclxuLy8gNDYuIFJlc3BvbnNpdmUgRW1iZWRcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiRyZXNwb25zaXZlLWVtYmVkLW1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDE2KTtcclxuJHJlc3BvbnNpdmUtZW1iZWQtcmF0aW9zOiAoXHJcbiAgZGVmYXVsdDogNCBieSAzLFxyXG4gIHdpZGVzY3JlZW46IDE2IGJ5IDksXHJcbik7XHJcblxyXG4vLyA0Ny4gUmV2ZWFsXHJcbi8vIC0tLS0tLS0tLS1cclxuXHJcbiRyZXZlYWwtYmFja2dyb3VuZDogJHdoaXRlO1xyXG4kcmV2ZWFsLXdpZHRoOiA2MDBweDtcclxuJHJldmVhbC1tYXgtd2lkdGg6ICRnbG9iYWwtd2lkdGg7XHJcbiRyZXZlYWwtcGFkZGluZzogJGdsb2JhbC1wYWRkaW5nO1xyXG4kcmV2ZWFsLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcclxuJHJldmVhbC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG4kcmV2ZWFsLXppbmRleDogMTAwNTtcclxuJHJldmVhbC1vdmVybGF5LWJhY2tncm91bmQ6IHJnYmEoJGJsYWNrLCAwLjQ1KTtcclxuXHJcbi8vIDQ4LiBTbGlkZXJcclxuLy8gLS0tLS0tLS0tLVxyXG5cclxuJHNsaWRlci13aWR0aC12ZXJ0aWNhbDogMC41cmVtO1xyXG4kc2xpZGVyLXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0O1xyXG4kc2xpZGVyLWhlaWdodDogMC41cmVtO1xyXG4kc2xpZGVyLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5O1xyXG4kc2xpZGVyLWZpbGwtYmFja2dyb3VuZDogJG1lZGl1bS1ncmF5O1xyXG4kc2xpZGVyLWhhbmRsZS1oZWlnaHQ6IDEuNHJlbTtcclxuJHNsaWRlci1oYW5kbGUtd2lkdGg6IDEuNHJlbTtcclxuJHNsaWRlci1oYW5kbGUtYmFja2dyb3VuZDogJHByaW1hcnktY29sb3I7XHJcbiRzbGlkZXItb3BhY2l0eS1kaXNhYmxlZDogMC4yNTtcclxuJHNsaWRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG5cclxuLy8gNDkuIFN3aXRjaFxyXG4vLyAtLS0tLS0tLS0tXHJcblxyXG4kc3dpdGNoLWJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheTtcclxuJHN3aXRjaC1iYWNrZ3JvdW5kLWFjdGl2ZTogJHByaW1hcnktY29sb3I7XHJcbiRzd2l0Y2gtaGVpZ2h0OiAycmVtO1xyXG4kc3dpdGNoLWhlaWdodC10aW55OiAxLjVyZW07XHJcbiRzd2l0Y2gtaGVpZ2h0LXNtYWxsOiAxLjc1cmVtO1xyXG4kc3dpdGNoLWhlaWdodC1sYXJnZTogMi41cmVtO1xyXG4kc3dpdGNoLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XHJcbiRzd2l0Y2gtbWFyZ2luOiAkZ2xvYmFsLW1hcmdpbjtcclxuJHN3aXRjaC1wYWRkbGUtYmFja2dyb3VuZDogJHdoaXRlO1xyXG4kc3dpdGNoLXBhZGRsZS1vZmZzZXQ6IDAuMjVyZW07XHJcbiRzd2l0Y2gtcGFkZGxlLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XHJcbiRzd2l0Y2gtcGFkZGxlLXRyYW5zaXRpb246IGFsbCAwLjI1cyBlYXNlLW91dDtcclxuXHJcbi8vIDUwLiBUYWJsZVxyXG4vLyAtLS0tLS0tLS1cclxuXHJcbiR0YWJsZS1iYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuJHRhYmxlLWNvbG9yLXNjYWxlOiA1JTtcclxuJHRhYmxlLWJvcmRlcjogMXB4IHNvbGlkIHNtYXJ0LXNjYWxlKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUpO1xyXG4kdGFibGUtcGFkZGluZzogcmVtLWNhbGMoOCAxMCAxMCk7XHJcbiR0YWJsZS1ob3Zlci1zY2FsZTogMiU7XHJcbiR0YWJsZS1yb3ctaG92ZXI6IGRhcmtlbigkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWhvdmVyLXNjYWxlKTtcclxuJHRhYmxlLXJvdy1zdHJpcGUtaG92ZXI6IGRhcmtlbigkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWNvbG9yLXNjYWxlICsgJHRhYmxlLWhvdmVyLXNjYWxlKTtcclxuJHRhYmxlLWlzLXN0cmlwZWQ6IHRydWU7XHJcbiR0YWJsZS1zdHJpcGVkLWJhY2tncm91bmQ6IHNtYXJ0LXNjYWxlKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUpO1xyXG4kdGFibGUtc3RyaXBlOiBldmVuO1xyXG4kdGFibGUtaGVhZC1iYWNrZ3JvdW5kOiBzbWFydC1zY2FsZSgkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWNvbG9yLXNjYWxlIC8gMik7XHJcbiR0YWJsZS1oZWFkLXJvdy1ob3ZlcjogZGFya2VuKCR0YWJsZS1oZWFkLWJhY2tncm91bmQsICR0YWJsZS1ob3Zlci1zY2FsZSk7XHJcbiR0YWJsZS1mb290LWJhY2tncm91bmQ6IHNtYXJ0LXNjYWxlKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUpO1xyXG4kdGFibGUtZm9vdC1yb3ctaG92ZXI6IGRhcmtlbigkdGFibGUtZm9vdC1iYWNrZ3JvdW5kLCAkdGFibGUtaG92ZXItc2NhbGUpO1xyXG4kdGFibGUtaGVhZC1mb250LWNvbG9yOiAkYm9keS1mb250LWNvbG9yO1xyXG4kdGFibGUtZm9vdC1mb250LWNvbG9yOiAkYm9keS1mb250LWNvbG9yO1xyXG4kc2hvdy1oZWFkZXItZm9yLXN0YWNrZWQ6IGZhbHNlO1xyXG4kdGFibGUtc3RhY2stYnJlYWtwb2ludDogbWVkaXVtO1xyXG5cclxuLy8gNTEuIFRhYnNcclxuLy8gLS0tLS0tLS1cclxuXHJcbiR0YWItbWFyZ2luOiAwO1xyXG4kdGFiLWJhY2tncm91bmQ6ICR3aGl0ZTtcclxuJHRhYi1jb2xvcjogJHByaW1hcnktY29sb3I7XHJcbiR0YWItYmFja2dyb3VuZC1hY3RpdmU6ICRsaWdodC1ncmF5O1xyXG4kdGFiLWFjdGl2ZS1jb2xvcjogJHByaW1hcnktY29sb3I7XHJcbiR0YWItaXRlbS1mb250LXNpemU6IHJlbS1jYWxjKDEyKTtcclxuJHRhYi1pdGVtLWJhY2tncm91bmQtaG92ZXI6ICR3aGl0ZTtcclxuJHRhYi1pdGVtLXBhZGRpbmc6IDEuMjVyZW0gMS41cmVtO1xyXG4kdGFiLWV4cGFuZC1tYXg6IDY7XHJcbiR0YWItY29udGVudC1iYWNrZ3JvdW5kOiAkd2hpdGU7XHJcbiR0YWItY29udGVudC1ib3JkZXI6ICRsaWdodC1ncmF5O1xyXG4kdGFiLWNvbnRlbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3I7XHJcbiR0YWItY29udGVudC1wYWRkaW5nOiAxcmVtO1xyXG5cclxuLy8gNTIuIFRodW1ibmFpbFxyXG4vLyAtLS0tLS0tLS0tLS0tXHJcblxyXG4kdGh1bWJuYWlsLWJvcmRlcjogc29saWQgNHB4ICR3aGl0ZTtcclxuJHRodW1ibmFpbC1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbjtcclxuJHRodW1ibmFpbC1zaGFkb3c6IDAgMCAwIDFweCByZ2JhKCRibGFjaywgMC4yKTtcclxuJHRodW1ibmFpbC1zaGFkb3ctaG92ZXI6IDAgMCA2cHggMXB4IHJnYmEoJHByaW1hcnktY29sb3IsIDAuNSk7XHJcbiR0aHVtYm5haWwtdHJhbnNpdGlvbjogYm94LXNoYWRvdyAyMDBtcyBlYXNlLW91dDtcclxuJHRodW1ibmFpbC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG5cclxuLy8gNTMuIFRpdGxlIEJhclxyXG4vLyAtLS0tLS0tLS0tLS0tXHJcblxyXG4kdGl0bGViYXItYmFja2dyb3VuZDogJGJsYWNrO1xyXG4kdGl0bGViYXItY29sb3I6ICR3aGl0ZTtcclxuJHRpdGxlYmFyLXBhZGRpbmc6IDAuNXJlbTtcclxuJHRpdGxlYmFyLXRleHQtZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiR0aXRsZWJhci1pY29uLWNvbG9yOiAkd2hpdGU7XHJcbiR0aXRsZWJhci1pY29uLWNvbG9yLWhvdmVyOiAkbWVkaXVtLWdyYXk7XHJcbiR0aXRsZWJhci1pY29uLXNwYWNpbmc6IDAuMjVyZW07XHJcblxyXG4vLyA1NC4gVG9vbHRpcFxyXG4vLyAtLS0tLS0tLS0tLVxyXG5cclxuJGhhcy10aXAtY3Vyc29yOiBoZWxwO1xyXG4kaGFzLXRpcC1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtYm9sZDtcclxuJGhhcy10aXAtYm9yZGVyLWJvdHRvbTogZG90dGVkIDFweCAkZGFyay1ncmF5O1xyXG4kdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yOiAkYmxhY2s7XHJcbiR0b29sdGlwLWNvbG9yOiAkd2hpdGU7XHJcbiR0b29sdGlwLXBhZGRpbmc6IDAuNzVyZW07XHJcbiR0b29sdGlwLW1heC13aWR0aDogMTByZW07XHJcbiR0b29sdGlwLWZvbnQtc2l6ZTogJHNtYWxsLWZvbnQtc2l6ZTtcclxuJHRvb2x0aXAtcGlwLXdpZHRoOiAwLjc1cmVtO1xyXG4kdG9vbHRpcC1waXAtaGVpZ2h0OiAkdG9vbHRpcC1waXAtd2lkdGggKiAwLjg2NjtcclxuJHRvb2x0aXAtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcclxuXHJcbi8vIDU1LiBUb3AgQmFyXHJcbi8vIC0tLS0tLS0tLS0tXHJcblxyXG4kdG9wYmFyLXBhZGRpbmc6IDAuNXJlbTtcclxuJHRvcGJhci1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheTtcclxuJHRvcGJhci1zdWJtZW51LWJhY2tncm91bmQ6ICR0b3BiYXItYmFja2dyb3VuZDtcclxuJHRvcGJhci10aXRsZS1zcGFjaW5nOiAwLjVyZW0gMXJlbSAwLjVyZW0gMDtcclxuJHRvcGJhci1pbnB1dC13aWR0aDogMjAwcHg7XHJcbiR0b3BiYXItdW5zdGFjay1icmVha3BvaW50OiBtZWRpdW07XHJcblxyXG4vLyA1Ni4gWHkgR3JpZFxyXG4vLyAtLS0tLS0tLS0tLVxyXG5cclxuJHh5LWdyaWQ6IHRydWU7XHJcbiRncmlkLWNvbnRhaW5lcjogJGdsb2JhbC13aWR0aDtcclxuJGdyaWQtY29sdW1uczogMTI7XHJcbiRncmlkLW1hcmdpbi1ndXR0ZXJzOiAoXHJcbiAgc21hbGw6IDIwcHgsXHJcbiAgbWVkaXVtOiAzMHB4XHJcbik7XHJcbiRncmlkLXBhZGRpbmctZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnM7XHJcbiRncmlkLWNvbnRhaW5lci1wYWRkaW5nOiAkZ3JpZC1wYWRkaW5nLWd1dHRlcnM7XHJcbiRncmlkLWNvbnRhaW5lci1tYXg6ICRnbG9iYWwtd2lkdGg7XHJcbiR4eS1ibG9jay1ncmlkLW1heDogODtcclxuXHJcbiIsIiRicmVha3BvaW50czogKFxyXG5cdHNtYWxsOiAwcHgsXHJcblx0YnJlYWtwb2ludC1waG9uZTogMzIwcHgsXHJcblx0YnJlYWtwb2ludC1pcGhvbmU2OiAzNzVweCxcclxuXHRicmVha3BvaW50LWlwaG9uZTZwbHVzOiA0MTRweCxcclxuXHRicmVha3BvaW50LXBob25lLWxhcmdlOiA1NjhweCxcclxuXHRicmVha3BvaW50LXRhYmxldDogNzY4cHgsXHJcblx0YnJlYWtwb2ludC10YWJsZXQtbGFuZDI6IDk5MnB4LFxyXG5cdGJyZWFrcG9pbnQtdGFibGV0LWxhbmQ6IDEwMjRweCxcclxuXHRicmVha3BvaW50LWxhcHRvcDogMTIwMHB4LFxyXG5cdGJyZWFrcG9pbnQtZGVza3RvcDogMTYwMHB4XHJcbik7XHJcbiRicmVha3BvaW50LWxhcHRvcDogMTIwMHB4OyIsIlxyXG4kb3V0ZXItY29udGFpbmVyLXdpZHRoLXM6IHJlbS1jYWxjKDc2MHB4KTtcclxuJG91dGVyLWNvbnRhaW5lci13aWR0aC1tOiByZW0tY2FsYyg5NzBweCk7XHJcbiRvdXRlci1jb250YWluZXItd2lkdGgtbDogcmVtLWNhbGMoMTE3MHB4KTtcclxuXHJcbiRpbm5lci1jb250YWluZXItd2lkdGgtczogcmVtLWNhbGMoNzYwcHgpO1xyXG4kaW5uZXItY29udGFpbmVyLXdpZHRoLW06IHJlbS1jYWxjKDgyMHB4KTsgLy8gaW4gcGl4ZWxcclxuJGlubmVyLWNvbnRhaW5lci13aWR0aC1sOiByZW0tY2FsYyg3MDBweCk7IC8vIGluIHBpeGVsIiwiQG1peGluIGZsZXhib3goJGRpcmVjdGlvbjogcm93LCAkd3JhcDogd3JhcCwgJGp1c3RpZnktY29udGVudDogZmxleC1zdGFydCwgJGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQpIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiAkZGlyZWN0aW9uO1xyXG4gIGZsZXgtd3JhcDogJHdyYXA7XHJcbiAganVzdGlmeS1jb250ZW50OiAkanVzdGlmeS1jb250ZW50O1xyXG4gIGFsaWduLWl0ZW1zOiAkYWxpZ24tY29udGVudDtcclxufVxyXG5cclxuQG1peGluIHJlc3BvbnNpdmUtcmF0aW8oJGN3OiAxMDAlLCAkcnc6IDE2LCAkcmg6IDksICRjOiAnaWZyYW1lJykge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB3aWR0aDogJGN3O1xyXG4gIGhlaWdodDogMDtcclxuICBwYWRkaW5nOiAoKCRyaCAvICRydykgKiAkY3cpIDAgMCAwO1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG5cclxuICBAaWYgJGMgIT1udWxsIHtcclxuICAgICN7JGN9IHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6IDA7XHJcbiAgICAgIGxlZnQ6IDA7XHJcbiAgICAgIHJpZ2h0OiAwO1xyXG4gICAgICBib3R0b206IDA7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uaGlkZS1vbi1kZXNrdG9wIHtcclxuICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gIH1cclxufVxyXG5cclxuLmhpZGUtb24tbW9iaWxlIHtcclxuICBkaXNwbGF5OiBub25lO1xyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gIH1cclxufVxyXG5cclxuLy8gdW5kbyBzb21lIHdlaXJkIGdsb2JhbCBzdHlsZXNcclxuaDIsXHJcbmgzLFxyXG5oNCxcclxuaDUsXHJcbmg2IHtcclxuICBkaXNwbGF5OiBibG9jaztcclxufVxyXG5cclxucCB7XHJcbiAgbWFyZ2luLWxlZnQ6IDA7XHJcbiAgbWFyZ2luLXJpZ2h0OiAwO1xyXG59XHJcblxyXG4ucm93IHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG5cclxuICAmOmJlZm9yZSxcclxuICAmOmFmdGVyIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgfVxyXG59XHJcblxyXG5pbWcge1xyXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogYXV0bztcclxufVxyXG5cclxuLy8gaG9tZS1zcGVjaWZpYyBzdHlsZXNcclxuLmljb24tZG93biB7XHJcbiAgYm90dG9tOiAyMHB4O1xyXG4gIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyO1xyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgICBib3R0b206IDI1cHg7XHJcbiAgICB0cmFuc2l0aW9uOiAwLjI1cyBlYXNlLWluLW91dDtcclxuXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgYm90dG9tOiAxMHB4O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLmljb24tdXAge1xyXG4gIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyO1xyXG59XHJcblxyXG4uc2VjdGlvbi1pbWFnZS1oZXJvIHtcclxuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xyXG4gIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XHJcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIDA7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGhlaWdodDogY2FsYygxMDB2aCAtIDY4cHgpO1xyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgMDtcclxuICAgIGhlaWdodDogY2FsYygxMDB2aCAtIDEyMHB4KTtcclxuICB9XHJcbn1cclxuXHJcbi8vIC5ibHVyLXNlY3Rpb24ge1xyXG4vLyAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuLy8gfVxyXG4vLyAuYmx1ci1zZWN0aW9uX19vdmVybGF5IHtcclxuLy8gICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbi8vICAgdG9wOiAwO1xyXG4vLyAgIGxlZnQ6IDA7XHJcbi8vICAgd2lkdGg6IDEwMCU7XHJcbi8vICAgaGVpZ2h0OiAyMDB2aDtcclxuLy8gICBAaW5jbHVkZSBmbGV4Ym94KGNvbHVtbiwgd3JhcCwgZmxleC1lbmQsIGNlbnRlcik7XHJcbi8vIH1cclxuXHJcbi5jb2x1bW4ge1xyXG4gIHBhZGRpbmctbGVmdDogMDtcclxuICBwYWRkaW5nLXJpZ2h0OiAwO1xyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IGluaGVyaXQ7XHJcbiAgICBwYWRkaW5nLXJpZ2h0OiBpbmhlcml0O1xyXG4gIH1cclxufVxyXG5cclxuLnRleHQtY2VudGVyIHtcclxuICB3aWR0aDogMTAwJTtcclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldCkge1xyXG4gICAgd2lkdGg6IGF1dG87XHJcbiAgfVxyXG59XHJcblxyXG4uaGVyby10ZXh0IHtcclxuICBwYWRkaW5nLXRvcDogMTRweDtcclxuICBwYWRkaW5nLWxlZnQ6IDIwcHg7XHJcbiAgcGFkZGluZy1yaWdodDogMjBweDtcclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldCkge1xyXG4gICAgcGFkZGluZy10b3A6IDM1cHg7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XHJcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xyXG4gIH1cclxufVxyXG5cclxuLmhlcm8tdGV4dF9fbWFpbi10aXRsZSB7XHJcbiAgZm9udC1zaXplOiA0MHB4O1xyXG4gIGxpbmUtaGVpZ2h0OiA0NXB4O1xyXG4gIGZvbnQtZmFtaWx5OiAkZm9udC1ib2xkO1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIG1hcmdpbjogMDtcclxuICBjb2xvcjogJHJlZDtcclxuICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG5cclxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkge1xyXG4gICAgZm9udC1zaXplOiA3MHB4O1xyXG4gICAgbGluZS1oZWlnaHQ6IDc1cHg7XHJcbiAgfVxyXG59XHJcblxyXG4uaGVyby10ZXh0X19ieWxpbmUge1xyXG4gIGZvbnQtc2l6ZTogNDBweDtcclxuICBsaW5lLWhlaWdodDogNDVweDtcclxuICBmb250LWZhbWlseTogJGZvbnQtbGlnaHQ7XHJcbiAgZGlzcGxheTogYmxvY2s7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIGNvbG9yOiAkcmVkO1xyXG5cclxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkge1xyXG4gICAgZm9udC1zaXplOiA3MHB4O1xyXG4gICAgbGluZS1oZWlnaHQ6IDc1cHg7XHJcbiAgfVxyXG59XHJcblxyXG4uYnRuLXJvdyB7XHJcbiAgbWFyZ2luLXRvcDogMzNweCAhaW1wb3J0YW50O1xyXG4gIHdpZHRoOiAxMDAlO1xyXG5cclxuICAuYnRuIHtcclxuICAgIG1hcmdpbi10b3A6IDEwcHg7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG5cclxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KSB7XHJcbiAgICAgIG1hcmdpbjogMTBweDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC50ZXh0LWNlbnRlciB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICB9XHJcbn1cclxuXHJcbi5ibHVyLWllLXN2Zy13cmFwIHtcclxuICB3aWR0aDogMTAwJTtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjaztcclxuXHJcbiAgJi5maXhlZCB7XHJcbiAgICB6LWluZGV4OiAtMTtcclxuICAgIHBvc2l0aW9uOiBmaXhlZDtcclxuICAgIHRvcDogMDtcclxuICB9XHJcblxyXG59XHJcblxyXG4uYmx1ci1pZS1jb2xvci1vdmVybGF5IHtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgYmFja2dyb3VuZDogYmxhY2s7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHRvcDogMDtcclxuICBsZWZ0OiAwO1xyXG4gIG9wYWNpdHk6IDA7XHJcbn1cclxuXHJcbi5vcGFjaXR5LS1pbiAuYmx1ci1pZS1zdmctd3JhcCB7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIHRvcDogNjZweCAhaW1wb3J0YW50O1xyXG4gIHotaW5kZXg6IC0xO1xyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgICB0b3A6IDEyMHB4ICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG59XHJcblxyXG5ib2R5IHtcclxuICBiYWNrZ3JvdW5kOiByZWQ7XHJcbn1cclxuXHJcbi5ibHVyLWllLXN2Zy13cmFwX19pbm5lciB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIG1pbi13aWR0aDogMTAwJTtcclxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUlKTtcclxuXHJcbiAgc3ZnIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMDtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICB9XHJcbn1cclxuXHJcbi5ibHVyLXNlY3Rpb25fX2lubmVyIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuXHJcbi5ibHVyLXNlY3Rpb24ge1xyXG4gIG9wYWNpdHk6IDA7XHJcblxyXG4gIC50eHQtZGVzYyB7XHJcbiAgICBjb2xvcjogd2hpdGU7XHJcbiAgICBtYXgtd2lkdGg6IDUzMHB4O1xyXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XHJcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcbiAgfVxyXG5cclxuICAudGV4dC1jZW50ZXIge1xyXG4gICAgbWFyZ2luLXRvcDogMTMwcHg7XHJcbiAgfVxyXG5cclxuICAuY2VudGVyLWJsb2NrMSB7XHJcbiAgICBtYXJnaW4tdG9wOiA3MHB4O1xyXG4gICAgbWFyZ2luLWJvdHRvbTogOTZweDtcclxuICB9XHJcblxyXG4gICYub3BhY2l0eS0taW4ge1xyXG4gICAgb3BhY2l0eTogMTtcclxuICB9XHJcbn1cclxuXHJcbi5ibHVyLXZpZGVvIHtcclxuICBtYXJnaW4tdG9wOiAzM3B4O1xyXG4gIC8vIG1hcmdpbi1ib3R0b206IDI0MHB4O1xyXG4gIEBpbmNsdWRlIHJlc3BvbnNpdmUtcmF0aW8oMTAwJSwgMTYsIDksICdpZnJhbWUnKTtcclxufVxyXG5cclxuLmJsdXItc2VjdGlvbl9fb3ZlcmxheSB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIC8vIGJhY2tncm91bmQ6IHJlZDtcclxuICBib3R0b206IDA7XHJcbiAgbGVmdDogMDtcclxuICBwYWRkaW5nLWJvdHRvbTogMjEycHg7XHJcbn1cclxuXHJcbi8vICNzZWN0aW9uMDQgLmJsdXItc2VjdGlvbl9fb3ZlcmxheSB7XHJcbi8vICAgcGFkZGluZy10b3A6IDEyMHZoO1xyXG4vLyAgIHBhZGRpbmctYm90dG9tOiAzMDBweDtcclxuLy8gICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcclxuLy8gfVxyXG5cclxuLmJsdXItc2VjdGlvbl9fdGl0bGUge1xyXG4gIGZvbnQtZmFtaWx5OiAkZm9udC1saWdodDtcclxuICBjb2xvcjogd2hpdGU7XHJcbiAgZm9udC1zaXplOiAyNXB4O1xyXG5cclxuICBiIHtcclxuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1ib2xkO1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldCkge1xyXG4gICAgZm9udC1zaXplOiA0MHB4O1xyXG4gIH1cclxufVxyXG5cclxuLnNlY3Rpb24taGVyby1jb250ZW50IHtcclxuICAvLyBoZWlnaHQ6IGNhbGMoMTAwJSAtIDEyMHB4KTtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgICAvLyBoZWlnaHQ6IGNhbGMoMTAwJSAtIDEzMHB4KTtcclxuICB9XHJcbn1cclxuXHJcbi50b3AteWVhci1pbWFnZS1zbWFsbCB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgbWF4LXdpZHRoOiAxNzBweDtcclxuICAvLyBwYWRkaW5nLWxlZnQ6IDIwcHg7XHJcbiAgLy8gcGFkZGluZy1yaWdodDogMjBweDtcclxuICAvLyBAaW5jbHVkZSBhYnNvbHV0ZS1jZW50ZXI7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIGxlZnQ6IDUwJTtcclxuICB0b3A6IDYzJTtcclxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldCkge1xyXG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG4gIH1cclxufVxyXG5cclxuLnRvcC15ZWFyLWltYWdlLW1lZGl1bSB7XHJcbiAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyO1xyXG4gIG1heC13aWR0aDogJGlubmVyLWNvbnRlbnQtbWF4d2lkdGggKyA0MHB4O1xyXG4gIG1heC1oZWlnaHQ6IDUwdmg7XHJcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XHJcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xyXG4gICAgbWF4LWhlaWdodDogbm9uZTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgcGFkZGluZy1sZWZ0OiAyMHB4O1xyXG4gICAgcGFkZGluZy1yaWdodDogMjBweDtcclxuICB9XHJcbn1cclxuXHJcbi5zZWN0aW9uLWJvdHRvbS1hbGlnbmVkIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgYm90dG9tOiA4NXB4O1xyXG4gIHJpZ2h0OiAyMHB4O1xyXG4gIGxlZnQ6IDIwcHg7XHJcblxyXG4gIGgyLnNlY3Rpb24tdGl0bGUge1xyXG4gICAgbWF4LXdpZHRoOiAkaW5uZXItY29udGVudC1tYXh3aWR0aDtcclxuICAgIG1hcmdpbjogMCBhdXRvO1xyXG4gIH1cclxufVxyXG5cclxuLnNlY3Rpb24tY29udGVudCB7XHJcbiAgbWF4LXdpZHRoOiAkaW5uZXItY29udGVudC1tYXh3aWR0aCArIDQwcHg7XHJcbiAgcGFkZGluZy1sZWZ0OiAyMHB4O1xyXG4gIHBhZGRpbmctcmlnaHQ6IDIwcHg7XHJcbiAgcGFkZGluZy10b3A6IDQwcHg7XHJcbiAgcGFkZGluZy1ib3R0b206IDQwcHg7XHJcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XHJcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xyXG5cclxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCsxKSB7XHJcbiAgICBwYWRkaW5nLXRvcDogMjk1cHg7XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogMHB4O1xyXG4gIH1cclxufVxyXG5cclxuLnNlY3Rpb24tY29udGVudC1pbm5lciB7XHJcbiAgbWF4LXdpZHRoOiAoNTgwcHggKyA0MHB4KTtcclxuICBtYXJnaW4tbGVmdDogYXV0bztcclxuICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpIHtcclxuICAgIC8vIHBhZGRpbmctbGVmdDogMjBweDtcclxuICAgIC8vIHBhZGRpbmctcmlnaHQ6IDIwcHg7XHJcbiAgfVxyXG59XHJcblxyXG4uc2VjdGlvbi1jb250ZW50LWlubmVyLXdpZGVyIHtcclxuICBAZXh0ZW5kIC5zZWN0aW9uLWNvbnRlbnQtaW5uZXI7XHJcbiAgbWF4LXdpZHRoOiAkaW5uZXItY29udGVudC1tYXh3aWR0aDtcclxufVxyXG5cclxuLnNwYWNlLWJldHdlZW4tY29scy1tb2JpbGUge1xyXG4gIG1hcmdpbi1ib3R0b206IDEyMHB4O1xyXG59XHJcblxyXG4uc2VjdGlvbi1jaXJjbGUtY29tYm8ge1xyXG4gIG1hcmdpbi1ib3R0b206IDEyMHB4O1xyXG4gIG1heC13aWR0aDogODM1cHggIWltcG9ydGFudDtcclxuICBtYXJnaW4tbGVmdDogYXV0bztcclxuICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcblxyXG4gIEBpbmNsdWRlIGZsZXhib3gocm93LCB3cmFwLCBzcGFjZS1iZXR3ZWVuLCBmbGV4LXN0YXJ0KTtcclxuXHJcbiAgJi5hbGlnbi1jZW50ZXIge1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgfVxyXG5cclxuICA+ZGl2IHtcclxuICAgIEBpbmNsdWRlIGZsZXhib3goY29sdW1uLCB3cmFwLCBjZW50ZXIsIGNlbnRlcik7XHJcblxyXG4gICAgcDpsYXN0LW9mLXR5cGUge1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgJjpsYXN0LWNoaWxkIHtcclxuICAgICAgLy8gbWFyZ2luLXRvcDogMjBweDtcclxuICAgICAgbWFyZ2luLXRvcDogMDtcclxuXHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpIHtcclxuICAgICAgICBtYXJnaW4tdG9wOiAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmOmZpcnN0LWNoaWxkIHtcclxuICAgIC8vIG1hcmdpbi10b3A6IC0xNXB4O1xyXG4gIH1cclxuXHJcbiAgJjpsYXN0LWNoaWxkIHtcclxuICAgIC8vIG1hcmdpbi1ib3R0b206IDUwcHg7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAyODBweDtcclxuXHJcbiAgICAmLnZzcGFjZS1sYXJnZXItdGFibGV0IHtcclxuICAgICAgLy8gcGFkZGluZy10b3A6IDUwcHg7XHJcbiAgICAgIC8vIHBhZGRpbmctYm90dG9tOiA1MHB4O1xyXG4gICAgfVxyXG5cclxuICAgICYudnNwYWNlLWJvdHRvbS1sYXJnZXItdGFibGV0IHtcclxuICAgICAgLy8gbWFyZ2luLXRvcDogLTMwcHg7XHJcbiAgICAgIC8vIHBhZGRpbmctYm90dG9tOiA0MHB4O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gLmNlbnRlci1ibG9jazEge1xyXG4gIC8vICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xyXG4gIC8vICAgICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgLy8gICAgICAgICBtYXJnaW4tdG9wOiA3MHB4O1xyXG4gIC8vICAgICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDtcclxuICAvLyAgICAgfVxyXG4gIC8vIH1cclxuICAvLyAuY2VudGVyLWJsb2NrMiB7XHJcbiAgLy8gICAgIG1hcmdpbi1ib3R0b206IDMwcHg7XHJcbiAgLy8gfVxyXG4gIC50eHQtZGVzYyB7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBtYXJnaW4tYm90dG9tOiA0M3B4O1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXgtd2lkdGg6IDMzMHB4O1xyXG5cclxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpIHtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDtcclxuXHJcbiAgICAgICYuaGlnaGxpZ2h0LXllbGxvdyB7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICYtLW9yYW5nZSB7XHJcbiAgICAgIGNvbG9yOiAkb3JhbmdlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLnR4dC1kZXNjIHtcclxuICBiIHtcclxuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1ib2xkO1xyXG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuICB9XHJcbn1cclxuXHJcbmgyLnNlY3Rpb24tdGl0bGUge1xyXG4gIGNvbG9yOiAkd2hpdGU7XHJcbiAgcGFkZGluZy10b3A6IC4xNWVtO1xyXG4gIGJvcmRlci10b3A6IDJweCBzb2xpZCAkd2hpdGU7XHJcbiAgZm9udC1zaXplOiAyMHB4O1xyXG4gIG1hcmdpbi1ib3R0b206IDEuMzUyZW07XHJcbiAgZm9udC1mYW1pbHk6ICdBa2t1cmF0LUxpZ2h0JztcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldCkge1xyXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcclxuICAgIGZvbnQtc2l6ZTogNDBweDtcclxuICB9XHJcbn1cclxuXHJcbmgzLnNlY3Rpb24tc3VidGl0bGUge1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjE3O1xyXG4gIGNvbG9yOiAkaG9tZS15ZWxsb3c7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIG1hcmdpbi10b3A6IDMwcHg7XHJcbiAgbWFyZ2luLWJvdHRvbTogMzBweDtcclxuICBmb250LXNpemU6IDIwcHg7XHJcbiAgZm9udC13ZWlnaHQ6IDMwMDtcclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldCkge1xyXG4gICAgbWFyZ2luLXRvcDogOTVweDtcclxuICAgIG1hcmdpbi1ib3R0b206IDk1cHg7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDQzcHg7XHJcbiAgICBwYWRkaW5nLXJpZ2h0OiA0M3B4O1xyXG4gICAgZm9udC1zaXplOiAyMHB4O1xyXG4gIH1cclxufVxyXG5cclxuLm51bWJlci10aXRsZSB7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIG1hcmdpbi1ib3R0b206IDE1cHg7XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XHJcbiAgfVxyXG5cclxuICBoMyB7XHJcbiAgICBmb250LXdlaWdodDogMzAwO1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuMTtcclxuICAgIGZvbnQtc2l6ZTogMjBweDtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHJcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgICAgIGZvbnQtc2l6ZTogMjBweDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5udW1iZXIge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcblxyXG4gICAgJi5udW1iZXItc21hbGwge1xyXG4gICAgICBmb250LXNpemU6IDQwcHg7XHJcblxyXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgICAgICAgZm9udC1zaXplOiA2MHB4O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJi5udW1iZXItc21hbGwtbWVkaXVtIHtcclxuICAgICAgZm9udC1zaXplOiA0NXB4O1xyXG4gICAgICAvLyBsZXR0ZXItc3BhY2luZzogLTAuMDVlbTtcclxuXHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpIHtcclxuICAgICAgICBmb250LXNpemU6IDcwcHg7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDczcHg7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICYubnVtYmVyLW1lZGl1bSB7XHJcbiAgICAgIGZvbnQtc2l6ZTogNTBweDtcclxuXHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpIHtcclxuICAgICAgICBmb250LXNpemU6IDgwcHg7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDkwcHg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmLm51bWJlci1tZWRpdW0tbGFyZ2Uge1xyXG4gICAgICBmb250LXNpemU6IDU1cHg7XHJcblxyXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgICAgICAgZm9udC1zaXplOiA3MHB4O1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDYzcHg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmLm51bWJlci1sYXJnZSB7XHJcbiAgICAgIGZvbnQtc2l6ZTogNjBweDtcclxuXHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpIHtcclxuICAgICAgICBmb250LXNpemU6IDEwMHB4O1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDY4cHg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vIC5oaWdobGlnaHQtZ3JlZW4ge1xyXG4vLyAgICAgY29sb3I6ICRob21lLWdyZWVuO1xyXG4vLyB9XHJcbi8vIC5oaWdobGlnaHQtYmx1ZSB7XHJcbi8vICAgICBjb2xvcjogJGhvbWUtYmx1ZTtcclxuLy8gfVxyXG4vLyAuaGlnaGxpZ2h0LXllbGxvdyB7XHJcbi8vICAgICBjb2xvcjogJGhvbWUteWVsbG93O1xyXG4vLyB9XHJcbi8vIC5oaWdobGlnaHQtd2hpdGUge1xyXG4vLyAgICAgY29sb3I6ICR3aGl0ZTtcclxuLy8gfVxyXG4vLyAuaGlnaGxpZ2h0LWNyYW5iZXJyeSB7XHJcbi8vICAgICBjb2xvcjogJGhvbWUtY3JhbmJlcnJ5O1xyXG4vLyB9XHJcblxyXG4vLyAuaGlnaGxpZ2h0LW9yYW5nZSB7XHJcbi8vICAgICBjb2xvcjogJG9yYW5nZTtcclxuLy8gfVxyXG5cclxuLmhvbWUtZXZlbnRzLWNvbnRhaW5lciB7XHJcbiAgcGFkZGluZy10b3A6IDE1cHg7XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpIHtcclxuICAgIHBhZGRpbmctdG9wOiA2MHB4O1xyXG4gIH1cclxufVxyXG5cclxuLmhvbWUtZXZlbnQge1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHJcbiAgaDMge1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgZm9udC1mYW1pbHk6ICRmb250LWJvbGQ7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogMzBweDtcclxuXHJcbiAgICAmOm50aC1jaGlsZChvZGQpIHtcclxuICAgICAgY2xlYXI6IGxlZnQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uc2VjdGlvbi1pbnRlcnZpZXctaW1hZ2Uge1xyXG4gIG1hcmdpbi10b3A6IDQwcHg7XHJcbiAgbWFyZ2luLWJvdHRvbTogMzVweDtcclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldCkge1xyXG4gICAgbWFyZ2luLXRvcDogMTAwcHg7XHJcbiAgICBtYXJnaW4tYm90dG9tOiA3NXB4O1xyXG4gIH1cclxufVxyXG5cclxuLmRpdmlkZXIteWVsbG93IHtcclxuICBtYXJnaW46IDMwcHggYXV0bztcclxuICBoZWlnaHQ6IDFweDtcclxuICB3aWR0aDogMTEwcHg7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogJGhvbWUteWVsbG93O1xyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgICBtYXJnaW4tdG9wOiA0NXB4O1xyXG4gICAgbWFyZ2luLWJvdHRvbTogNTBweDtcclxuICB9XHJcbn1cclxuXHJcbi5zZWN0aW9uLWltYWdlLWJsdXJyZWQtaW5uZXIge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBoZWlnaHQ6IGNhbGMoMTAwdmggLSA1M3B4KTtcclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldCkge1xyXG4gICAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gMTIwcHgpO1xyXG4gIH1cclxuXHJcbiAgLmltYWdlLXNoYXJwLFxyXG4gIC5pbWFnZS1ibHVycmVkIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMDtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICByaWdodDogMDtcclxuICAgIGJvdHRvbTogMDtcclxuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XHJcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xyXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcclxuICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcclxuICAgIHdpbGwtY2hhbmdlOiBwb3NpdGlvbiwgb3BhY2l0eSwgdG9wO1xyXG4gIH1cclxuXHJcbiAgLmltYWdlLWJsdXJyZWQge1xyXG4gICAgb3BhY2l0eTogMDtcclxuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcclxuICB9XHJcbn1cclxuXHJcbi5zZWN0aW9uLWltYWdlLWJsdXJyZWQge1xyXG4gICYuZml4ZWQge1xyXG5cclxuICAgIC5pbWFnZS1zaGFycCxcclxuICAgIC5pbWFnZS1ibHVycmVkIHtcclxuICAgICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgICB0b3A6IDUzcHg7XHJcbiAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XHJcblxyXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCsxKSB7XHJcbiAgICAgICAgdG9wOiAxMjBweDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLm92ZXItaW1hZ2UtY29udGVudCB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHotaW5kZXg6IDE7XHJcbiAgY29sb3I6ICR3aGl0ZTtcclxuICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoIC0gNTNweCk7XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpIHtcclxuICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggLSAxMjBweCk7XHJcbiAgfVxyXG59XHJcblxyXG4uc2VjdGlvbi10ZXh0IHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgei1pbmRleDogMTtcclxufVxyXG5cclxuLmJnLXZpb2xldCB7XHJcbiAgY29sb3I6ICR3aGl0ZTtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkaG9tZS12aW9sZXQ7XHJcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzO1xyXG4gIC8vIC5iZy0tZGFya2VyICYge1xyXG4gIC8vICAgYmFja2dyb3VuZC1jb2xvcjogJHJlZC1kYXJrO1xyXG4gIC8vIH1cclxufVxyXG5cclxuLnViZS12aWRlbyB7XHJcbiAgQGluY2x1ZGUgcmVzcG9uc2l2ZS1lbWJlZCh3aWRlc2NyZWVuKTtcclxuICBtYXJnaW4tYm90dG9tOiAxMjBweDtcclxuICBtYXJnaW4tdG9wOiAxMHB4O1xyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KGJyZWFrcG9pbnQtdGFibGV0KSB7XHJcbiAgICBtYXJnaW4tdG9wOiA3MHB4O1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMjgwcHg7XHJcbiAgfVxyXG59XHJcblxyXG4ub3Zlci1pbWFnZS1jb250ZW50IC5yZXNwb25zaXZlLXlvdXR1YmUtdmlkZW8ge1xyXG4gIG1hcmdpbi1ib3R0b206IDBweCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4uYnRuLW1vcmUtaG9tZSB7XHJcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xyXG4gIHBhZGRpbmc6IDE3cHggMzhweCAxOHB4O1xyXG4gIGNvbG9yOiAkd2hpdGU7XHJcbiAgZm9udC1zaXplOiAxNnB4O1xyXG4gIGxpbmUtaGVpZ2h0OiAyMXB4O1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNBRDBCNDk7XHJcbiAgZm9udC1mYW1pbHk6ICRmb250LWJvbGQ7XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpIHtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICB9XHJcblxyXG4gIC5pY24tYXJyb3cge1xyXG4gICAgbWFyZ2luLWxlZnQ6IDRweDtcclxuICB9XHJcblxyXG4gICY6aG92ZXIsXHJcbiAgJjpmb2N1cyB7XHJcbiAgICBjb2xvcjogJHdoaXRlO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHJlZC1idG4taG92ZXI7XHJcblxyXG4gICAgLmljbi1hcnJvdyB7XHJcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwNy41JTIwMTIlMjIlM0UlM0NzdHlsZSUzRS5zdDAlN0JmaWxsJTNBJTIzOUEwOTQxJTdEJTNDJTJGc3R5bGUlM0UlM0NwYXRoJTIwZCUzRCUyMk0xLjguMWMtLjItLjEtLjUtLjEtLjclMjAwTC4yJTIwMWMtLjIuMi0uMi41JTIwMCUyMC43TDQuNSUyMDYlMjAuMSUyMDEwLjNjLS4yLjItLjIuNSUyMDAlMjAuN2wuOS45Yy4yLjIuNS4yLjclMjAwbDUuNi01LjVjLjItLjIuMi0uNSUyMDAtLjdMMS44LjF6JTIyJTIwY2xhc3MlM0QlMjJzdDAlMjIlMkYlM0UlM0MlMkZzdmclM0UnKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi5idG4tbW9yZS1pbnRlcnZpZXcge1xyXG4gIGZvbnQtZmFtaWx5OiAkZm9udC1ib2xkO1xyXG4gIG1hcmdpbi10b3A6IDMwcHg7XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpIHtcclxuICAgIG1hcmdpbi10b3A6IDQ1cHg7XHJcbiAgICBtYXJnaW4tYm90dG9tOiA4MHB4O1xyXG4gIH1cclxufVxyXG5cclxuLmljbi1hcnJvdyB7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIHdpZHRoOiA4cHg7XHJcbiAgaGVpZ2h0OiAxMnB4O1xyXG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XHJcbiAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xyXG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwNy41JTIwMTIlMjIlM0UlM0NzdHlsZSUzRS5zdDAlN0JmaWxsJTNBJTIzZmZmJTdEJTNDJTJGc3R5bGUlM0UlM0NwYXRoJTIwZCUzRCUyMk0xLjguMWMtLjItLjEtLjUtLjEtLjclMjAwTC4yJTIwMWMtLjIuMi0uMi41JTIwMCUyMC43TDQuNSUyMDYlMjAuMSUyMDEwLjNjLS4yLjItLjIuNSUyMDAlMjAuN2wuOS45Yy4yLjIuNS4yLjclMjAwbDUuNi01LjVjLjItLjIuMi0uNSUyMDAtLjdMMS44LjF6JTIyJTIwY2xhc3MlM0QlMjJzdDAlMjIlMkYlM0UlM0MlMkZzdmclM0UnKTtcclxufVxyXG5cclxuc3Bhbi50eXBlLXNwYWNlIHtcclxuICAmLTAwMyB7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjAzZW07XHJcbiAgfVxyXG5cclxuICAmLTAwNSB7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjA1ZW07XHJcbiAgfVxyXG5cclxuICAmLTAwNzUge1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAtMC4wNzVlbTtcclxuICB9XHJcblxyXG4gICYtMDEge1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAtMC4xZW07XHJcbiAgfVxyXG5cclxuICAmLTAxMyB7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjEzZW07XHJcbiAgfVxyXG59XHJcblxyXG4uY2VudGVyLWJsb2NrMSB7XHJcbiAgZGlzcGxheTogYmxvY2s7XHJcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xyXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gIHdpZHRoOiAyNjBweDtcclxuICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgbWFyZ2luLWJvdHRvbTogMzBweDtcclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldCkge1xyXG4gICAgd2lkdGg6IDQyMHB4O1xyXG4gIH1cclxufVxyXG5cclxuLmNlbnRlci1ibG9jay0td2lkZSB7XHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldCkge1xyXG4gICAgd2lkdGg6IDYyMHB4O1xyXG4gIH1cclxufVxyXG5cclxuLm9mZnNldC1jb2wge1xyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpIHtcclxuICAgIG1hcmdpbi10b3A6IDI1MHB4ICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG59XHJcblxyXG4uY2VudGVyLWJsb2NrMiB7XHJcbiAgZGlzcGxheTogYmxvY2s7XHJcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xyXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gIHdpZHRoOiAyNjBweDtcclxuICBib3JkZXItcmFkaXVzOiA1MCU7XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoYnJlYWtwb2ludC10YWJsZXQpIHtcclxuICAgIHdpZHRoOiA0NDBweDtcclxuICAgIG1hcmdpbi1ib3R0b206IDI0cHg7XHJcbiAgfVxyXG59XHJcblxyXG4uc3BhY2luZy1sb2dvLWltYWdlIHtcclxuICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChicmVha3BvaW50LXRhYmxldCkge1xyXG4gICAgbWFyZ2luLXRvcDogMjBweDtcclxuICAgIG1hcmdpbi1ib3R0b206IDEwMHB4O1xyXG4gICAgbWF4LXdpZHRoOiA0MzBweCAhaW1wb3J0YW50O1xyXG4gIH1cclxufSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUVFQSxVQUFVO0VBQ1IsV0FBVyxFQUFFLGVBQWU7RUFDNUIsR0FBRyxFQUFFLGlDQUFpQztFQUFFLFVBQVU7RUFDbEQsR0FBRyxFQUFFLHdDQUF3QyxDQUFDLDJCQUEyQixFQUN6RSxrQ0FBa0MsQ0FBQyxjQUFjLEVBQ2pELGlDQUFpQyxDQUFDLGtCQUFrQixFQUNwRCx1Q0FBdUMsQ0FBQyxhQUFhO0VBQUUsZ0JBQWdCO0VBQ3ZFLFdBQVcsRUFBRSxNQUFNO0VBQ25CLFVBQVUsRUFBRSxNQUFNOzs7QUFHcEIsVUFBVTtFQUNSLFdBQVcsRUFBRSxpQkFBaUI7RUFDOUIsR0FBRyxFQUFFLGlDQUFpQztFQUN0QyxHQUFHLEVBQUUsd0NBQXdDLENBQUMsMkJBQTJCLEVBQ3pFLGtDQUFrQyxDQUFDLGNBQWMsRUFDakQsaUNBQWlDLENBQUMsa0JBQWtCLEVBQ3BELHVDQUF1QyxDQUFDLGFBQWE7RUFDckQsV0FBVyxFQUFFLE1BQU07RUFDbkIsVUFB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 */
