@charset "UTF-8";
/**
 * Foundation for Sites by ZURB
 * Version 6.2.4
 * foundation.zurb.com
 * Licensed under MIT Open Source
 */
/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
/**
   * 1. Set default font family to sans-serif.
   * 2. Prevent iOS and IE text size adjust after device orientation change,
   *    without disabling user zoom.
   */
html {
  font-family: sans-serif;
  /* 1 */
  -ms-text-size-adjust: 100%;
  /* 2 */
  -webkit-text-size-adjust: 100%;
  /* 2 */
}

/**
   * Remove default margin.
   */
body {
  margin: 0;
}

/* HTML5 display definitions
     ========================================================================== */
/**
   * Correct `block` display not defined for any HTML5 element in IE 8/9.
   * Correct `block` display not defined for `details` or `summary` in IE 10/11
   * and Firefox.
   * Correct `block` display not defined for `main` in IE 11.
   */
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
  display: block;
}

/**
   * 1. Correct `inline-block` display not defined in IE 8/9.
   * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
   */
audio,
canvas,
progress,
video {
  display: inline-block;
  /* 1 */
  vertical-align: baseline;
  /* 2 */
}

/**
   * Prevent modern browsers from displaying `audio` without controls.
   * Remove excess height in iOS 5 devices.
   */
audio:not([controls]) {
  display: none;
  height: 0;
}

/**
   * Address `[hidden]` styling not present in IE 8/9/10.
   * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.
   */
[hidden],
template {
  display: none;
}

/* Links
     ========================================================================== */
/**
   * Remove the gray background color from active links in IE 10.
   */
a {
  background-color: transparent;
}

/**
   * Improve readability of focused elements when they are also in an
   * active/hover state.
   */
a:active,
a:hover {
  outline: 0;
}

/* Text-level semantics
     ========================================================================== */
/**
   * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
   */
abbr[title] {
  border-bottom: 1px dotted;
}

/**
   * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
   */
b,
strong {
  font-weight: bold;
}

/**
   * Address styling not present in Safari and Chrome.
   */
dfn {
  font-style: italic;
}

/**
   * Address variable `h1` font-size and margin within `section` and `article`
   * contexts in Firefox 4+, Safari, and Chrome.
   */
h1 {
  font-size: 2em;
  margin: 0.67em 0;
}

/**
   * Address styling not present in IE 8/9.
   */
mark {
  background: #ff0;
  color: #000;
}

/**
   * Address inconsistent and variable font size in all browsers.
   */
small {
  font-size: 80%;
}

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

sup {
  top: -0.5em;
}

sub {
  bottom: -0.25em;
}

/* Embedded content
     ========================================================================== */
/**
   * Remove border when inside `a` element in IE 8/9/10.
   */
img {
  border: 0;
}

/**
   * Correct overflow not hidden in IE 9/10/11.
   */
svg:not(:root) {
  overflow: hidden;
}

/* Grouping content
     ========================================================================== */
/**
   * Address margin not present in IE 8/9 and Safari.
   */
figure {
  margin: 1em 40px;
}

/**
   * Address differences between Firefox and other browsers.
   */
hr {
  box-sizing: content-box;
  height: 0;
}

/**
   * Contain overflow in all browsers.
   */
pre {
  overflow: auto;
}

/**
   * Address odd `em`-unit font size rendering in all browsers.
   */
code,
kbd,
pre,
samp {
  font-family: monospace, monospace;
  font-size: 1em;
}

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

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

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

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

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

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

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

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

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

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

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

/**
   * Define consistent border, margin, and padding.
   * [NOTE] We don't enable this ruleset in Foundation, because we want the <fieldset> element to have plain styling.
   */
/* fieldset {
    border: 1px solid #c0c0c0;
    margin: 0 2px;
    padding: 0.35em 0.625em 0.75em;
  } */
/**
   * 1. Correct `color` not being inherited in IE 8/9/10/11.
   * 2. Remove padding so people aren't caught out if they zero out fieldsets.
   */
legend {
  border: 0;
  /* 1 */
  padding: 0;
  /* 2 */
}

/**
   * Remove default vertical scrollbar in IE 8/9/10/11.
   */
textarea {
  overflow: auto;
}

/**
   * Don't inherit the `font-weight` (applied by a rule above).
   * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
   */
optgroup {
  font-weight: bold;
}

/* Tables
     ========================================================================== */
/**
   * Remove most spacing between table cells.
   */
table {
  border-collapse: collapse;
  border-spacing: 0;
}

td,
th {
  padding: 0;
}

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

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

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

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

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

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

select {
  width: 100%;
  border-radius: 3px;
}

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

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

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

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

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

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

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

.row::after {
  clear: both;
}

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

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

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

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

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

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

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

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

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

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

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

.row .column.row.row, .row .row.row.columns {
  padding-left: 0;
  padding-right: 0;
  margin-left: 0;
  margin-right: 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 {
  width: 100%;
  float: left;
}

.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 {
  width: 50%;
  float: left;
}

.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 {
  width: 33.33333%;
  float: left;
}

.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 {
  width: 25%;
  float: left;
}

.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 {
  width: 20%;
  float: left;
}

.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 {
  width: 16.66667%;
  float: left;
}

.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 {
  width: 14.28571%;
  float: left;
}

.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 {
  width: 12.5%;
  float: left;
}

.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-left: 0;
  padding-right: 0;
}

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

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

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

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

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

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

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

@media 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 {
    width: 100%;
    float: left;
  }
  .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 {
    width: 50%;
    float: left;
  }
  .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 {
    width: 33.33333%;
    float: left;
  }
  .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 {
    width: 25%;
    float: left;
  }
  .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 {
    width: 20%;
    float: left;
  }
  .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 {
    width: 16.66667%;
    float: left;
  }
  .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 {
    width: 14.28571%;
    float: left;
  }
  .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 {
    width: 12.5%;
    float: left;
  }
  .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-left: 0;
    padding-right: 0;
  }
  .large-collapse .row {
    margin-left: 0;
    margin-right: 0;
  }
  .expanded.row .large-collapse.row {
    margin-left: 0;
    margin-right: 0;
  }
  .large-uncollapse > .column, .large-uncollapse > .columns {
    padding-left: 0.9375rem;
    padding-right: 0.9375rem;
  }
  .large-centered {
    margin-left: auto;
    margin-right: auto;
  }
  .large-centered, .large-centered:last-child:not(:first-child) {
    float: none;
    clear: both;
  }
  .large-uncentered,
  .large-push-0,
  .large-pull-0 {
    position: static;
    margin-left: 0;
    margin-right: 0;
    float: left;
  }
}

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

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

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

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

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

h1,
h2,
h3,
h4,
h5,

h6 {
  font-family: "Source Sans Pro", Helvetica, Roboto, Arial, sans-serif;
  font-weight: 900;
  font-style: normal;
  color: #0a0a0a;
  text-rendering: optimizeLegibility;
  margin-top: 0;
  margin-bottom: 0.5rem;
  line-height: 1.1;
}

h7 {
  font-family: "Source Sans Pro", Helvetica, Roboto, Arial, sans-serif;
  font-weight: 600;
  font-style: normal;
  color: #fefefe;
  text-rendering: optimizeLegibility;
  margin-top: 0;
  margin-bottom: 0.5rem;
  line-height: 1.1;
}

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

h1 {
  font-size: 1.5rem;
}

h2 {
  font-size: 1.25rem;
}

h3 {
  font-size: 1.1875rem;
}

h4 {
  font-size: 1.125rem;
}

h5 {
  font-size: 1.0625rem;
}

h6 {
  font-size: 1rem;
}

h7 {
  font-size: 1.0625rem;
}

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

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

a:hover, a:focus {
  color: #2a2a2a;
}

a img {
  border: 0;
}

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

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

li {
  font-size: inherit;
}

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

ol {
  margin-left: 2rem;
}

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

dl {
  margin-bottom: 1rem;
}

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

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

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

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

cite:before {
  content: '\2014 \0020';
}

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

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

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

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

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

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

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

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

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

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

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

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

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

@media 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;
    color: black !important;
    box-shadow: none !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 #545454;
    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;
  }
}

.button {
  display: inline-block;
  text-align: center;
  line-height: 1;
  cursor: pointer;
  -webkit-appearance: none;
  transition: background-color 0.25s ease-out, color 0.25s ease-out;
  vertical-align: middle;
  border: 1px solid transparent;
  border-radius: 3px;
  padding: 0.55em 1.7em;
  margin: 0 10px 1rem 0;
  font-size: 0.9rem;
  background-color: #2199e8;
  color: #fefefe;
}

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

.button:hover, .button:focus {
  background-color: #1583cc;
  color: #fefefe;
}

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

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

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

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

.button.primary {
  background-color: #2199e8;
  color: #fefefe;
}

.button.primary:hover, .button.primary:focus {
  background-color: #147cc0;
  color: #fefefe;
}

.button.secondary {
  background-color: #777;
  color: #fefefe;
}

.button.secondary:hover, .button.secondary:focus {
  background-color: #5f5f5f;
  color: #fefefe;
}

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

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

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

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

.button.alert {
  background-color: #ec5840;
  color: #fefefe;
}

.button.alert:hover, .button.alert:focus {
  background-color: #da3116;
  color: #fefefe;
}

.button.white {
  background-color: #ffffff;
  color: #0a0a0a;
}

.button.white:hover, .button.white:focus {
  background-color: #cccccc;
  color: #0a0a0a;
}

.button.hollow {
  border: 1px solid #2199e8;
  color: #2199e8;
}

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

.button.hollow:hover, .button.hollow:focus {
  border-color: #0c4d78;
  color: #0c4d78;
}

.button.hollow.primary {
  border: 1px solid #2199e8;
  color: #2199e8;
}

.button.hollow.primary:hover, .button.hollow.primary:focus {
  border-color: #0c4d78;
  color: #0c4d78;
}

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

.button.hollow.secondary:hover, .button.hollow.secondary:focus {
  border-color: #3c3c3c;
  color: #3c3c3c;
}

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

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

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

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

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

.button.hollow.alert:hover, .button.hollow.alert:focus {
  border-color: #881f0e;
  color: #881f0e;
}

.button.hollow.white {
  border: 1px solid #ffffff;
  color: #ffffff;
}

.button.hollow.white:hover, .button.hollow.white:focus {
  border-color: gray;
  color: gray;
}

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

.button.disabled:hover, .button.disabled:focus, .button[disabled]:hover, .button[disabled]:focus {
  background-color: #2199e8;
  color: #fefefe;
}

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

.button.disabled.primary:hover, .button.disabled.primary:focus, .button[disabled].primary:hover, .button[disabled].primary:focus {
  background-color: #2199e8;
  color: #fefefe;
}

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

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

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

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

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

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

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

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

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

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

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

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

[type='text'], [type='password'], [type='date'], [type='datetime'], [type='datetime-local'], [type='month'], [type='week'], [type='email'], [type='number'], [type='search'], [type='tel'], [type='time'], [type='url'], [type='color'],
textarea {
  display: block;
  box-sizing: border-box;
  width: 100%;
  height: 2.4375rem;
  padding: 0.5rem;
  border: 0;
  margin: 0 0 1rem;
  font-family: inherit;
  font-size: 1rem;
  color: #0a0a0a;
  background-color: #fefefe;
  box-shadow: none;
  border-radius: 3px;
  transition: box-shadow 0.5s, border-color 0.25s ease-in-out;
  -webkit-appearance: none;
  -moz-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 {
  border: 1px solid #545454;
  background-color: #fefefe;
  outline: none;
  box-shadow: 0 0 5px #cacaca;
  transition: box-shadow 0.5s, border-color 0.25s ease-in-out;
}

textarea {
  max-width: 100%;
}

textarea[rows] {
  height: auto;
}

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

input:disabled, input[readonly],
textarea:disabled,
textarea[readonly] {
  background-color: #e9e9e9;
  cursor: default;
}

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

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

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

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

[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: 500;
  line-height: 1.8;
  color: #0a0a0a;
}

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

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

.input-group {
  display: table;
  width: 100%;
  margin-bottom: 1rem;
}

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

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

.input-group-label, .input-group-field, .input-group-button {
  margin: 0;
  white-space: nowrap;
  display: table-cell;
  vertical-align: middle;
}

.input-group-label {
  text-align: center;
  padding: 0 1rem;
  background: #e9e9e9;
  color: #0a0a0a;
  border: 1px solid #cacaca;
  white-space: nowrap;
  width: 1%;
  height: 100%;
}

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

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

.input-group-field {
  border-radius: 0;
  height: 2.5rem;
}

.input-group-button {
  padding-top: 0;
  padding-bottom: 0;
  text-align: center;
  height: 100%;
  width: 1%;
}

.input-group-button a,
.input-group-button input,
.input-group-button button {
  margin: 0;
}

.input-group .input-group-button {
  display: table-cell;
}

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

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

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

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

select {
  height: 2.4375rem;
  padding: 0.5rem;
  border: 0;
  margin: 0 0 1rem;
  font-size: 1rem;
  font-family: inherit;
  line-height: normal;
  color: #0a0a0a;
  background-color: #fefefe;
  border-radius: 3px;
  -webkit-appearance: none;
  -moz-appearance: none;
  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%2884, 84, 84%29'></polygon></svg>");
  background-size: 9px 6px;
  background-position: right -1rem center;
  background-origin: content-box;
  background-repeat: no-repeat;
  padding-right: 1.5rem;
}

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

select:disabled {
  background-color: #e9e9e9;
  cursor: default;
}

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

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

.is-invalid-input:not(:focus) {
  background-color: rgba(236, 88, 64, 0.1);
  border-color: #ec5840;
}

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

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

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

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

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

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

.accordion-title {
  display: block;
  padding: 1.25rem 1rem;
  line-height: 1;
  font-size: 0.75rem;
  color: #2199e8;
  position: relative;
  border: 1px solid #e9e9e9;
  border-bottom: 0;
}

:last-child:not(.is-active) > .accordion-title {
  border-radius: 0 0 3px 3px;
  border-bottom: 1px solid #e9e9e9;
}

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

.accordion-title::before {
  content: '+';
  position: absolute;
  right: 1rem;
  top: 50%;
  margin-top: -0.5rem;
}

.is-active > .accordion-title::before {
  content: '–';
}

.accordion-content {
  padding: 1rem;
  display: none;
  border: 1px solid #e9e9e9;
  border-bottom: 0;
  background-color: #fefefe;
  color: #2199e8;
}

:last-child > .accordion-content:last-child {
  border-bottom: 1px solid #e9e9e9;
}

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

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

.is-accordion-submenu-parent[aria-expanded='true'] > a::after {
  transform-origin: 50% 50%;
  transform: scaleY(-1);
}

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

.badge.secondary {
  background: #777;
  color: #fefefe;
}

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

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

.badge.alert {
  background: #ec5840;
  color: #fefefe;
}

.badge.white {
  background: #ffffff;
  color: #0a0a0a;
}

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

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

.breadcrumbs::after {
  clear: both;
}

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

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

.breadcrumbs a {
  color: #2199e8;
}

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

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

.button-group {
  margin-bottom: 1rem;
  font-size: 0;
}

.button-group::before, .button-group::after {
  content: ' ';
  display: table;
}

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

.button-group .button {
  margin: 0;
  margin-right: 1px;
  margin-bottom: 1px;
  font-size: 0.9rem;
}

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

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

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

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

.button-group.expanded {
  margin-right: -1px;
}

.button-group.expanded::before, .button-group.expanded::after {
  display: none;
}

.button-group.expanded .button:first-child:nth-last-child(2), .button-group.expanded .button:first-child:nth-last-child(2):first-child:nth-last-child(2) ~ .button {
  display: inline-block;
  width: calc(50% - 1px);
  margin-right: 1px;
}

.button-group.expanded .button:first-child:nth-last-child(2):last-child, .button-group.expanded .button:first-child:nth-last-child(2):first-child:nth-last-child(2) ~ .button:last-child {
  margin-right: -6px;
}

.button-group.expanded .button:first-child:nth-last-child(3), .button-group.expanded .button:first-child:nth-last-child(3):first-child:nth-last-child(3) ~ .button {
  display: inline-block;
  width: calc(33.33333% - 1px);
  margin-right: 1px;
}

.button-group.expanded .button:first-child:nth-last-child(3):last-child, .button-group.expanded .button:first-child:nth-last-child(3):first-child:nth-last-child(3) ~ .button:last-child {
  margin-right: -6px;
}

.button-group.expanded .button:first-child:nth-last-child(4), .button-group.expanded .button:first-child:nth-last-child(4):first-child:nth-last-child(4) ~ .button {
  display: inline-block;
  width: calc(25% - 1px);
  margin-right: 1px;
}

.button-group.expanded .button:first-child:nth-last-child(4):last-child, .button-group.expanded .button:first-child:nth-last-child(4):first-child:nth-last-child(4) ~ .button:last-child {
  margin-right: -6px;
}

.button-group.expanded .button:first-child:nth-last-child(5), .button-group.expanded .button:first-child:nth-last-child(5):first-child:nth-last-child(5) ~ .button {
  display: inline-block;
  width: calc(20% - 1px);
  margin-right: 1px;
}

.button-group.expanded .button:first-child:nth-last-child(5):last-child, .button-group.expanded .button:first-child:nth-last-child(5):first-child:nth-last-child(5) ~ .button:last-child {
  margin-right: -6px;
}

.button-group.expanded .button:first-child:nth-last-child(6), .button-group.expanded .button:first-child:nth-last-child(6):first-child:nth-last-child(6) ~ .button {
  display: inline-block;
  width: calc(16.66667% - 1px);
  margin-right: 1px;
}

.button-group.expanded .button:first-child:nth-last-child(6):last-child, .button-group.expanded .button:first-child:nth-last-child(6):first-child:nth-last-child(6) ~ .button:last-child {
  margin-right: -6px;
}

.button-group.primary .button {
  background-color: #2199e8;
  color: #fefefe;
}

.button-group.primary .button:hover, .button-group.primary .button:focus {
  background-color: #147cc0;
  color: #fefefe;
}

.button-group.secondary .button {
  background-color: #777;
  color: #fefefe;
}

.button-group.secondary .button:hover, .button-group.secondary .button:focus {
  background-color: #5f5f5f;
  color: #fefefe;
}

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

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

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

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

.button-group.alert .button {
  background-color: #ec5840;
  color: #fefefe;
}

.button-group.alert .button:hover, .button-group.alert .button:focus {
  background-color: #da3116;
  color: #fefefe;
}

.button-group.white .button {
  background-color: #ffffff;
  color: #0a0a0a;
}

.button-group.white .button:hover, .button-group.white .button:focus {
  background-color: #cccccc;
  color: #0a0a0a;
}

.button-group.stacked .button, .button-group.stacked-for-small .button, .button-group.stacked-for-medium .button {
  width: 100%;
}

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

@media screen and (min-width: 40em) {
  .button-group.stacked-for-small .button {
    width: auto;
    margin-bottom: 0;
  }
}

@media screen and (min-width: 64em) {
  .button-group.stacked-for-medium .button {
    width: auto;
    margin-bottom: 0;
  }
}

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

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

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

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

.callout.primary {
  background-color: #def0fc;
}

.callout.secondary {
  background-color: #ebebeb;
}

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

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

.callout.alert {
  background-color: #fce6e2;
}

.callout.white {
  background-color: white;
}

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

.close-button {
  position: absolute;
  color: #545454;
  right: 1rem;
  top: 0.5rem;
  font-size: 2em;
  line-height: 1;
  cursor: pointer;
}

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

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

.menu {
  margin: 0;
  list-style-type: none;
}

.menu > li {
  display: table-cell;
  vertical-align: middle;
}

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

.menu > li > a {
  display: block;
  padding: 0.7rem 1rem;
  line-height: 1;
}

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

.menu > li > a img,
.menu > li > a i,
.menu > li > a svg {
  vertical-align: middle;
}

.menu > li > a img + span,
.menu > li > a i + span,
.menu > li > a svg + span {
  vertical-align: middle;
}

.menu > li > a img,
.menu > li > a i,
.menu > li > a svg {
  margin-right: 0.25rem;
  display: inline-block;
}

.menu > li {
  display: table-cell;
}

.menu.vertical > li {
  display: block;
}

@media screen and (min-width: 40em) {
  .menu.medium-horizontal > li {
    display: table-cell;
  }
  .menu.medium-vertical > li {
    display: block;
  }
}

@media screen and (min-width: 64em) {
  .menu.large-horizontal > li {
    display: table-cell;
  }
  .menu.large-vertical > li {
    display: block;
  }
}

.menu.simple li {
  line-height: 1;
  display: inline-block;
  margin-right: 1rem;
}

.menu.simple a {
  padding: 0;
}

.menu.align-right::before, .menu.align-right::after {
  content: ' ';
  display: table;
}

.menu.align-right::after {
  clear: both;
}

.menu.align-right > li {
  float: right;
}

.menu.expanded {
  width: 100%;
  display: table;
  table-layout: fixed;
}

.menu.expanded > li:first-child:last-child {
  width: 100%;
}

.menu.icon-top > li > a {
  text-align: center;
}

.menu.icon-top > li > a img,
.menu.icon-top > li > a i,
.menu.icon-top > li > a svg {
  display: block;
  margin: 0 auto 0.25rem;
}

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

.menu .active > a {
  color: #0a0a0a;
  background: #e9e9e9;
}

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

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

.menu-centered > .menu {
  display: inline-block;
}

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

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

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

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

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

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

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

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

.is-drilldown li {
  display: block !important;
}

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

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

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

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

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

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

.dropdown-pane {
  background-color: #fefefe;
  border: 1px solid #cacaca;
  border-radius: 3px;
  display: block;
  font-size: 1rem;
  padding: 1rem;
  position: absolute;
  visibility: hidden;
  width: 300px;
  z-index: 10;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

.dropdown.menu.vertical > li > a::after {
  right: 14px;
  margin-top: -3px;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.flex-video.vimeo {
  padding-top: 0;
}

.label {
  display: inline-block;
  padding: 0.33333rem 0.5rem;
  font-size: 0.8rem;
  line-height: 1;
  white-space: nowrap;
  cursor: default;
  border-radius: 3px;
  background: #2199e8;
  color: #fefefe;
}

.label.secondary {
  background: #777;
  color: #fefefe;
}

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

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

.label.alert {
  background: #ec5840;
  color: #fefefe;
}

.label.white {
  background: #ffffff;
  color: #0a0a0a;
}

.media-object {
  margin-bottom: 1rem;
  display: block;
}

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

@media screen and (max-width: 39.9375em) {
  .media-object.stack-for-small .media-object-section {
    padding: 0;
    padding-bottom: 1rem;
    display: block;
  }
  .media-object.stack-for-small .media-object-section img {
    width: 100%;
  }
}

.media-object-section {
  display: table-cell;
  vertical-align: top;
}

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

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

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

.media-object-section.middle {
  vertical-align: middle;
}

.media-object-section.bottom {
  vertical-align: bottom;
}

html,
body {
  height: 100%;
}

.off-canvas-wrapper {
  width: 100%;
  overflow-x: hidden;
  position: relative;
  backface-visibility: hidden;
  -webkit-overflow-scrolling: auto;
}

.off-canvas-wrapper-inner {
  position: relative;
  width: 100%;
  min-height: 100%;
  transition: transform 0.5s ease;
}

.off-canvas-wrapper-inner::before, .off-canvas-wrapper-inner::after {
  content: ' ';
  display: table;
}

.off-canvas-wrapper-inner::after {
  clear: both;
}

.off-canvas-content,
.off-canvas-content {
  min-height: 100%;
  background: #fefefe;
  transition: transform 0.5s ease;
  backface-visibility: hidden;
  z-index: 1;
  padding-bottom: 0.1px;
  box-shadow: 0 0 10px rgba(10, 10, 10, 0.5);
}

.js-off-canvas-exit {
  display: none;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(254, 254, 254, 0.25);
  cursor: pointer;
  transition: background 0.5s ease;
}

.off-canvas {
  position: absolute;
  background: #e9e9e9;
  z-index: -1;
  max-height: 100%;
  overflow-y: auto;
  transform: translateX(0);
}

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

.off-canvas.position-left {
  left: -250px;
  top: 0;
  width: 250px;
}

.is-open-left {
  transform: translateX(250px);
}

.off-canvas.position-right {
  right: -250px;
  top: 0;
  width: 250px;
}

.is-open-right {
  transform: translateX(-250px);
}

@media screen and (min-width: 40em) {
  .position-left.reveal-for-medium {
    left: 0;
    z-index: auto;
    position: fixed;
  }
  .position-left.reveal-for-medium ~ .off-canvas-content {
    margin-left: 250px;
  }
  .position-right.reveal-for-medium {
    right: 0;
    z-index: auto;
    position: fixed;
  }
  .position-right.reveal-for-medium ~ .off-canvas-content {
    margin-right: 250px;
  }
}

@media screen and (min-width: 64em) {
  .position-left.reveal-for-large {
    left: 0;
    z-index: auto;
    position: fixed;
  }
  .position-left.reveal-for-large ~ .off-canvas-content {
    margin-left: 250px;
  }
  .position-right.reveal-for-large {
    right: 0;
    z-index: auto;
    position: fixed;
  }
  .position-right.reveal-for-large ~ .off-canvas-content {
    margin-right: 250px;
  }
}

.orbit {
  position: relative;
}

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

.orbit-slide {
  width: 100%;
  max-height: 100%;
}

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

.orbit-figure {
  margin: 0;
}

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

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

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

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

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

.orbit-previous {
  left: 0;
}

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

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

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

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

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

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

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

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

.pagination::after {
  clear: both;
}

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

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

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

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

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

.pagination .current {
  padding: 0.1875rem 0.625rem;
  background: #2199e8;
  color: #fefefe;
  cursor: default;
}

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

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

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

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

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

.progress {
  background-color: #cacaca;
  height: 1rem;
  margin-bottom: 1rem;
  border-radius: 3px;
}

.progress.primary .progress-meter {
  background-color: #2199e8;
}

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

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

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

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

.progress.white .progress-meter {
  background-color: #ffffff;
}

.progress-meter {
  position: relative;
  display: block;
  width: 0%;
  height: 100%;
  background-color: #2199e8;
  border-radius: 3px;
}

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

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

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

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

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

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

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

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

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

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

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

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

.sticky-container {
  position: relative;
}

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

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

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

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

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

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

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

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

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

.reveal {
  display: none;
  z-index: 1006;
  padding: 1rem;
  border: 1px solid #cacaca;
  background-color: #fefefe;
  border-radius: 3px;
  position: relative;
  top: 100px;
  margin-left: auto;
  margin-right: auto;
  overflow-y: auto;
}

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

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

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

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

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

@media screen and (min-width: 40em) {
  .reveal .reveal {
    left: auto;
    right: auto;
    margin: 0 auto;
  }
}

.reveal.collapse {
  padding: 0;
}

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

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

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

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

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

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

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

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

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

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

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

input:checked ~ .switch-paddle {
  background: #2199e8;
}

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

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

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

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

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

.switch-inactive {
  right: 15%;
}

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

.switch.tiny {
  height: 1.5rem;
}

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

.switch.tiny .switch-paddle::after {
  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 {
  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 {
  width: 2rem;
  height: 2rem;
}

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

table {
  width: 100%;
  margin-bottom: 1rem;
  border-radius: 3px;
}

table thead,
table tbody,
table tfoot {
  border: 1px solid #f1f1f1;
  background-color: #fefefe;
}

table caption {
  font-weight: 900;
  padding: 0.5rem 0.625rem 0.625rem;
}

table thead {
  background: #f8f8f8;
  color: #545454;
}

table tfoot {
  background: #f1f1f1;
  color: #545454;
}

table thead tr,
table tfoot tr {
  background: transparent;
}

table thead th,
table thead td,
table tfoot th,
table tfoot td {
  padding: 0.5rem 0.625rem 0.625rem;
  font-weight: 900;
  text-align: left;
}

table tbody tr:nth-child(even) {
  background-color: #f1f1f1;
}

table tbody th,
table tbody td {
  padding: 0.5rem 0.625rem 0.625rem;
}

@media screen and (max-width: 63.9375em) {
  table.stack thead {
    display: none;
  }
  table.stack tfoot {
    display: none;
  }
  table.stack tr,
  table.stack th,
  table.stack td {
    display: block;
  }
  table.stack td {
    border-top: 0;
  }
}

table.scroll {
  display: block;
  width: 100%;
  overflow-x: auto;
}

table.hover thead tr:hover {
  background-color: #f3f3f3;
}

table.hover tfoot tr:hover {
  background-color: #ececec;
}

table.hover tbody tr:hover {
  background-color: #f9f9f9;
}

table.hover tbody tr:nth-of-type(even):hover {
  background-color: #ececec;
}

.table-scroll {
  overflow-x: auto;
}

.table-scroll table {
  width: auto;
}

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

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

.tabs::after {
  clear: both;
}

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

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

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

.tabs.primary {
  background: #2199e8;
}

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

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

.tabs-title {
  float: left;
}

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

.tabs-title > a:hover {
  background: #fefefe;
}

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

.tabs-content {
  background: #fefefe;
  transition: all 0.5s ease;
  border: 1px solid #cacaca;
  border-top: 0;
}

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

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

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

.thumbnail {
  border: solid 4px #fefefe;
  box-shadow: 0 0 0 1px rgba(10, 10, 10, 0.2);
  display: inline-block;
  line-height: 0;
  max-width: 100%;
  transition: box-shadow 200ms ease-out;
  border-radius: 3px;
  margin-bottom: 1rem;
}

.thumbnail:hover, .thumbnail:focus {
  box-shadow: 0 0 6px 1px rgba(33, 153, 232, 0.5);
}

.title-bar {
  background: #545454;
  color: #fefefe;
  padding: 0.5rem;
}

.title-bar::before, .title-bar::after {
  content: ' ';
  display: table;
}

.title-bar::after {
  clear: both;
}

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

.title-bar-left {
  float: left;
}

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

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

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

.tooltip {
  background-color: #0a0a0a;
  color: #fefefe;
  font-size: 80%;
  padding: 0.75rem;
  position: absolute;
  z-index: 10;
  top: calc(100% + 0.6495rem);
  max-width: 10rem !important;
  border-radius: 3px;
}

.tooltip::before {
  content: '';
  display: block;
  width: 0;
  height: 0;
  border: inset 0.75rem;
  border-color: transparent transparent #0a0a0a;
  border-bottom-style: solid;
  border-top-width: 0;
  bottom: 100%;
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
}

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

.tooltip.left::before {
  content: '';
  display: block;
  width: 0;
  height: 0;
  border: inset 0.75rem;
  border-color: transparent transparent transparent #0a0a0a;
  border-left-style: solid;
  border-right-width: 0;
  bottom: auto;
  left: 100%;
  top: 50%;
  transform: translateY(-50%);
}

.tooltip.right::before {
  content: '';
  display: block;
  width: 0;
  height: 0;
  border: inset 0.75rem;
  border-color: transparent #0a0a0a transparent transparent;
  border-right-style: solid;
  border-left-width: 0;
  bottom: auto;
  left: auto;
  right: 100%;
  top: 50%;
  transform: translateY(-50%);
}

.top-bar {
  padding: 0;
}

.top-bar::before, .top-bar::after {
  content: ' ';
  display: table;
}

.top-bar::after {
  clear: both;
}

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

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

.top-bar .input-group-field {
  width: 100%;
  margin-right: 0;
}

.top-bar input.button {
  width: auto;
}

.top-bar .top-bar-left,
.top-bar .top-bar-right {
  width: 100%;
}

@media screen and (min-width: 40em) {
  .top-bar .top-bar-left,
  .top-bar .top-bar-right {
    width: auto;
  }
}

@media screen and (max-width: 63.9375em) {
  .top-bar.stacked-for-medium .top-bar-left,
  .top-bar.stacked-for-medium .top-bar-right {
    width: 100%;
  }
}

@media screen and (max-width: 74.9375em) {
  .top-bar.stacked-for-large .top-bar-left,
  .top-bar.stacked-for-large .top-bar-right {
    width: 100%;
  }
}

.top-bar-title {
  float: left;
  margin-right: 1rem;
}

.top-bar-left {
  float: left;
}

.top-bar-right {
  float: right;
}

.hide {
  display: none !important;
}

.invisible {
  visibility: hidden;
}

@media screen and (max-width: 39.9375em) {
  .hide-for-small-only {
    display: none !important;
  }
}

@media screen and (max-width: 0em), screen and (min-width: 40em) {
  .show-for-small-only {
    display: none !important;
  }
}

@media screen and (min-width: 40em) {
  .hide-for-medium {
    display: none !important;
  }
}

@media screen and (max-width: 39.9375em) {
  .show-for-medium {
    display: none !important;
  }
}

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  .hide-for-medium-only {
    display: none !important;
  }
}

@media screen and (max-width: 39.9375em), screen and (min-width: 64em) {
  .show-for-medium-only {
    display: none !important;
  }
}

@media screen and (min-width: 64em) {
  .hide-for-large {
    display: none !important;
  }
}

@media screen and (max-width: 63.9375em) {
  .show-for-large {
    display: none !important;
  }
}

@media screen and (min-width: 64em) and (max-width: 74.9375em) {
  .hide-for-large-only {
    display: none !important;
  }
}

@media screen and (max-width: 63.9375em), screen and (min-width: 75em) {
  .show-for-large-only {
    display: none !important;
  }
}

.show-for-sr,
.show-on-focus {
  position: absolute !important;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
}

.show-on-focus:active, .show-on-focus:focus {
  position: static !important;
  height: auto;
  width: auto;
  overflow: visible;
  clip: auto;
}

.show-for-landscape,
.hide-for-portrait {
  display: block !important;
}

@media screen and (orientation: landscape) {
  .show-for-landscape,
  .hide-for-portrait {
    display: block !important;
  }
}

@media screen and (orientation: portrait) {
  .show-for-landscape,
  .hide-for-portrait {
    display: none !important;
  }
}

.hide-for-landscape,
.show-for-portrait {
  display: none !important;
}

@media screen and (orientation: landscape) {
  .hide-for-landscape,
  .show-for-portrait {
    display: none !important;
  }
}

@media screen and (orientation: portrait) {
  .hide-for-landscape,
  .show-for-portrait {
    display: block !important;
  }
}

.float-left {
  float: left !important;
}

.float-right {
  float: right !important;
}

.float-center {
  display: block;
  margin-left: auto;
  margin-right: auto;
}

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

.clearfix::after {
  clear: both;
}

/**
 * Classes Used in Wall Elements
 *
 * vxwany              : Any block element generated for the Wall
 * vxwfx               : Any block element generated for the Wall, which is scalable in size
 * vxwcsw              : Any block element under cell with scalable width
 * vxwcsh              : Any block element under cell with scalable height
 * vxwcsf              : Any block element under cell with scalable font-size
 * vxwcsl              : Any block element under cell with scalable line-height
 * vxwcsp              : Any block element under cell with scalable paddings
 * vxwcsm              : Any block element under cell with scalable margins
 *
 * vxwport             : Port, the visible area of the Wall
 * vxwbase             : Base, which contains 3 panes for the left/center/right page
 * vxwplayerviewbase   : Player view base, where mosaic video playback happens within
 * vxwplayerviewmask   : Player view masks, for blocking areas with no corresponding video tile
 * vxwpane_left        : Pane for left page (current page minus 1)
 * vxwpane_center      : Pane for current page
 * vxwpane_right       : Pane for right page (current page plus 1)
 *
 * vxwp                : Wall page
 * vxwp_${PROTO}       : Wall page (prototype specific)
 *
 * vxwc                : Wall page cell
 * vxwc_${PROTO}       : Wall page cell (prototype specific)
 *
 * vxwclgimg           : Cell logo image
 * vxwclgimg_${PROTO}  : Cell logo image (prototype specific)
 *
 * vxwcct              : Cell text content (e.g., article)
 * vxwcct_${PROTO}     : Cell text content (prototype specific)
 * vxwccto             : Cell text content title overlay
 * vxwccto_${PROTO}    : Cell text content title overlay (prototype specific)
 * vxwcctt             : Cell text content title
 * vxwcctt_${PROTO}    : Cell text content title (prototype specific)
 * vxwcctsimg          : Cell text content sub image
 * vxwcctsimg_${PROTO} : Cell text content sub image (prototype specific)
 * vxwcctst            : Cell text content sub title
 * vxwcctst_${PROTO}   : Cell text content sub title (prototype specific)
 * vxwcctd             : Cell text content description
 * vxwcctd_${PROTO}    : Cell text content description (prototype specific)
 * vxwcctdp            : Cell text content description paragraph
 * vxwcctdp_${PROTO}   : Cell text content description paragraph (prototype specific)
 * vxwcctg             : Cell text content gradient mask
 * vxwcctg_${PROTO}    : Cell text content gradient mask (prototype specific)
 *
 * vxwclb:             : Cell label
 * vxwclb_${PROTO}     : Cell label (prototype specific)
 * vxwclbvl            : Volatile cell label (which can hide/unhide)
 * vxwclbimg           : Cell label image
 * vxwclbimg_${PROTO}  : Cell label image (prototype specific)
 * vxwclbtxt           : Cell label main text
 * vxwclbtxt_${PROTO}  : Cell label main text (prototype specific)
 * vxwclbsub           : Cell label sub text
 * vxwclbsub_${PROTO}  : Cell label sub text (prototype specific)
 *
 * vxwcvimg            : Cell video cover image
 */
/**
 * IDs Used in Wall Elements (where {SN} is an unique serial number)
 *
 * vxwplayerview_{SN} : ID of the mosaic player outer view
 * vxh5playerv_{SN}   : ID of the mosaic player inner view, using HTML5, for video component
 * vxh5playera_{SN}   : ID of the mosaic player inner view, using HTML5, for audio component
 * vxflplayerv_{SN}   : ID of the mosaic player inner view, using flash, for video component
 * vxflplayera_{SN}   : ID of the mosaic player inner view, using flash, for audio component
 */
.vxwtouchprompt {
  background: rgba(200, 200, 200, 0.5) url("http://d3ik2vfsvyg6fu.cloudfront.net/images/Touch_to_Play.png") no-repeat center;
  background-size: 25%;
}

.vxwany {
  touch-action: pan-y;
}

.vxwplayerviewmask {
  background-color: #FFFFFF;
}

.vxwc {
  border: 2px solid transparent;
}

.vxwc[vxwcfocus] {
  border-color: red;
}

.vxwc_vidGeneric, .vxwc_html {
  background-color: transparent;
}

.vxwc_category, .vxwc_picGeneric, .vxwc_txtGeneric {
  background-color: #ebebeb;
}

.vxwc_html {
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
}

.vxwclgimg {
  position: absolute;
  left: 12px;
  top: 12px;
  width: 36px;
  height: 33px;
}

.vxwclb {
  position: absolute;
  width: 100%;
  left: 0;
  bottom: 0;
  padding: 0px 4px;
  background-color: rgba(0, 0, 0, 0.5);
  font-family: 'HelveticaNeue-CondensedBold',Arial,'Times New Roman';
}

.vxwclb_category {
  height: 40px;
}

.vxwclb_vidGeneric, .vxwclb_picGeneric {
  height: 32px;
}

.vxwclbimg {
  padding: 0px 0px 0px 0px;
  float: left;
  width: 0px;
  height: 0px;
}

.vxwclbtxt {
  color: white;
  overflow: hidden;
}

.vxwclbtxt_category {
  margin: 8px 4px;
  line-height: 24px;
  height: 24px;
  font-size: 18px;
}

.vxwclbtxt_vidGeneric, .vxwclbtxt_picGeneric {
  margin: 2px 4px 0 0px;
  line-height: 12px;
  height: 14px;
  font-size: 10px;
}

.vxwclbsub {
  color: #aaaaaa;
  overflow: hidden;
}

.vxwclbsub_vidGeneric, .vxwclbsub_picGeneric {
  margin: 0 4px 0 4px;
  line-height: 10px;
  height: 10px;
  font-size: 8px;
}

.vxwcct_txtGeneric {
  padding: 6px;
}

.vxwccto_txtGeneric {
  bottom: 0;
  padding: 4px;
  background: -webkit-linear-gradient(top, rgba(35, 35, 35, 0) 0%, #232323 75%);
  background: -moz-linear-gradient(top, rgba(35, 35, 35, 0) 0%, #232323 75%);
  background: linear-gradient(top, rgba(35, 35, 35, 0) 0%, #232323 75%);
}

.vxwcctt_txtGeneric {
  color: black;
  padding: 2px;
  font-family: 'HelveticaNeue-CondensedBold',Arial,'Times New Roman';
  font-size: 22px;
}

.vxwccto_txtGeneric > .vxwcctt_txtGeneric {
  color: #EEEEEE;
}

.vxwcctd_txtGeneric {
  color: black;
  padding: 2px;
  font-family: Georgia,'Times New Roman',Arial;
  font-size: 16px;
}

.vxwcctdp_txtGeneric {
  margin-bottom: 6px;
}

.vxwcctg_txtGeneric {
  height: 20px;
  background: -webkit-linear-gradient(top, rgba(235, 235, 235, 0) 0%, #ebebeb 75%);
  background: -moz-linear-gradient(top, rgba(235, 235, 235, 0) 0%, #ebebeb 75%);
  background: linear-gradient(top, rgba(235, 235, 235, 0) 0%, #ebebeb 75%);
}

.vxwcctsimg_txtGeneric {
  float: left;
  padding: 2px 6px 2px 2px;
  width: 22px;
  height: 22px;
}

.vxwcctst_txtGeneric {
  color: #555555;
  padding: 2px;
  font-family: 'HelveticaNeue-CondensedBold',Arial,'Times New Roman';
  height: 22px;
  line-height: 22px;
  font-size: 14px;
}

.vxwccto_txtGeneric > .vxwcctst_txtGeneric {
  color: #AAAAAA;
}

.usermix {
  overflow-y: auto !important;
  overflow-x: auto !important;
}

.usermix-list {
  height: 400px;
  overflow: auto;
  background-color: #fefefe;
}

.usermix-list .selected {
  background-color: #ffff00;
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC5jc3MiLCJzb3VyY2VzIjpbImRlZmF1bHQuc2NzcyIsIl9zZXR0aW5ncy5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fdXRpbC5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fdW5pdC5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fdmFsdWUuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX2NvbG9yLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL19zZWxlY3Rvci5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fZmxleC5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fYnJlYWtwb2ludC5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fbWl4aW5zLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3VuZGF0aW9uLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL191dGlsLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9fZ2xvYmFsLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9ncmlkL19ncmlkLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9ncmlkL19yb3cuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX2NvbHVtbi5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZ3JpZC9fc2l6ZS5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZ3JpZC9fcG9zaXRpb24uc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX2d1dHRlci5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZ3JpZC9fY2xhc3Nlcy5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZ3JpZC9fbGF5b3V0LnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9ncmlkL19mbGV4LWdyaWQuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3R5cG9ncmFwaHkvX3R5cG9ncmFwaHkuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3R5cG9ncmFwaHkvX2Jhc2Uuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3R5cG9ncmFwaHkvX2hlbHBlcnMuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3R5cG9ncmFwaHkvX2FsaWdubWVudC5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdHlwb2dyYXBoeS9fcHJpbnQuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19mb3Jtcy5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX3RleHQuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19jaGVja2JveC5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX2xhYmVsLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9faGVscC10ZXh0LnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9faW5wdXQtZ3JvdXAuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19maWVsZHNldC5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX3NlbGVjdC5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX3JhbmdlLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fcHJvZ3Jlc3Muc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19tZXRlci5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX2Vycm9yLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL192aXNpYmlsaXR5LnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19mbG9hdC5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fYnV0dG9uLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19idXR0b24tZ3JvdXAuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2FjY29yZGlvbi1tZW51LnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19hY2NvcmRpb24uc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2JhZGdlLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19icmVhZGNydW1icy5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fY2FsbG91dC5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fY2xvc2UtYnV0dG9uLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19kcmlsbGRvd24uc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2Ryb3Bkb3duLW1lbnUuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2Ryb3Bkb3duLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19mbGV4LnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19mbGV4LXZpZGVvLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19sYWJlbC5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fbWVkaWEtb2JqZWN0LnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19tZW51LnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19tZW51LWljb24uc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX29mZi1jYW52YXMuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX29yYml0LnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19wYWdpbmF0aW9uLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19wcm9ncmVzcy1iYXIuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3JldmVhbC5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fc2xpZGVyLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19zdGlja3kuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3N3aXRjaC5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fdGFibGUuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3RhYnMuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3RpdGxlLWJhci5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fdG9wLWJhci5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fdGh1bWJuYWlsLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL190b29sdGlwLnNjc3MiLCJfdnVlbWl4d2FsbHNldHRpbmdzLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJAY2hhcnNldCAndXRmLTgnO1xuXG5AaW1wb3J0ICdzZXR0aW5ncyc7XG5AaW1wb3J0ICdmb3VuZGF0aW9uJztcblxuQGluY2x1ZGUgZm91bmRhdGlvbi1nbG9iYWwtc3R5bGVzO1xuQGluY2x1ZGUgZm91bmRhdGlvbi1ncmlkO1xuLy8gQGluY2x1ZGUgZm91bmRhdGlvbi1mbGV4LWdyaWQ7XG5AaW5jbHVkZSBmb3VuZGF0aW9uLXR5cG9ncmFwaHk7XG5AaW5jbHVkZSBmb3VuZGF0aW9uLWJ1dHRvbjtcbkBpbmNsdWRlIGZvdW5kYXRpb24tZm9ybXM7XG4vLyBAaW5jbHVkZSBmb3VuZGF0aW9uLXJhbmdlLWlucHV0O1xuQGluY2x1ZGUgZm91bmRhdGlvbi1hY2NvcmRpb247XG5AaW5jbHVkZSBmb3VuZGF0aW9uLWFjY29yZGlvbi1tZW51O1xuQGluY2x1ZGUgZm91bmRhdGlvbi1iYWRnZTtcbkBpbmNsdWRlIGZvdW5kYXRpb24tYnJlYWRjcnVtYnM7XG5AaW5jbHVkZSBmb3VuZGF0aW9uLWJ1dHRvbi1ncm91cDtcbkBpbmNsdWRlIGZvdW5kYXRpb24tY2FsbG91dDtcbkBpbmNsdWRlIGZvdW5kYXRpb24tY2xvc2UtYnV0dG9uO1xuQGluY2x1ZGUgZm91bmRhdGlvbi1tZW51O1xuQGluY2x1ZGUgZm91bmRhdGlvbi1tZW51LWljb247XG5AaW5jbHVkZSBmb3VuZGF0aW9uLWRyaWxsZG93bi1tZW51O1xuQGluY2x1ZGUgZm91bmRhdGlvbi1kcm9wZG93bjtcbkBpbmNsdWRlIGZvdW5kYXRpb24tZHJvcGRvd24tbWVudTtcbkBpbmNsdWRlIGZvdW5kYXRpb24tZmxleC12aWRlbztcbkBpbmNsdWRlIGZvdW5kYXRpb24tbGFiZWw7XG5AaW5jbHVkZSBmb3VuZGF0aW9uLW1lZGlhLW9iamVjdDtcbkBpbmNsdWRlIGZvdW5kYXRpb24tb2ZmLWNhbnZhcztcbkBpbmNsdWRlIGZvdW5kYXRpb24tb3JiaXQ7XG5AaW5jbHVkZSBmb3VuZGF0aW9uLXBhZ2luYXRpb247XG5AaW5jbHVkZSBmb3VuZGF0aW9uLXByb2dyZXNzLWJhcjtcbi8vIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvZ3Jlc3MtZWxlbWVudDtcbi8vIEBpbmNsdWRlIGZvdW5kYXRpb24tbWV0ZXItZWxlbWVudDtcbkBpbmNsdWRlIGZvdW5kYXRpb24tc2xpZGVyO1xuQGluY2x1ZGUgZm91bmRhdGlvbi1zdGlja3k7XG5AaW5jbHVkZSBmb3VuZGF0aW9uLXJldmVhbDtcbkBpbmNsdWRlIGZvdW5kYXRpb24tc3dpdGNoO1xuQGluY2x1ZGUgZm91bmRhdGlvbi10YWJsZTtcbkBpbmNsdWRlIGZvdW5kYXRpb24tdGFicztcbkBpbmNsdWRlIGZvdW5kYXRpb24tdGh1bWJuYWlsO1xuQGluY2x1ZGUgZm91bmRhdGlvbi10aXRsZS1iYXI7XG5AaW5jbHVkZSBmb3VuZGF0aW9uLXRvb2x0aXA7XG5AaW5jbHVkZSBmb3VuZGF0aW9uLXRvcC1iYXI7XG5AaW5jbHVkZSBmb3VuZGF0aW9uLXZpc2liaWxpdHktY2xhc3NlcztcbkBpbmNsdWRlIGZvdW5kYXRpb24tZmxvYXQtY2xhc3Nlcztcbi8vIEBpbmNsdWRlIGZvdW5kYXRpb24tZmxleC1jbGFzc2VzO1xuXG5cbkBpbXBvcnQgJ192dWVtaXh3YWxsc2V0dGluZ3MnOyIsIi8vICBGb3VuZGF0aW9uIGZvciBTaXRlcyBTZXR0aW5nc1xuLy8gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vL1xuLy8gIFRhYmxlIG9mIENvbnRlbnRzOlxuLy9cbi8vICAgMS4gR2xvYmFsXG4vLyAgIDIuIEJyZWFrcG9pbnRzXG4vLyAgIDMuIFRoZSBHcmlkXG4vLyAgIDQuIEJhc2UgVHlwb2dyYXBoeVxuLy8gICA1LiBUeXBvZ3JhcGh5IEhlbHBlcnNcbi8vICAgNi4gQWJpZGVcbi8vICAgNy4gQWNjb3JkaW9uXG4vLyAgIDguIEFjY29yZGlvbiBNZW51XG4vLyAgIDkuIEJhZGdlXG4vLyAgMTAuIEJyZWFkY3J1bWJzXG4vLyAgMTEuIEJ1dHRvblxuLy8gIDEyLiBCdXR0b24gR3JvdXBcbi8vICAxMy4gQ2FsbG91dFxuLy8gIDE0LiBDbG9zZSBCdXR0b25cbi8vICAxNS4gRHJpbGxkb3duXG4vLyAgMTYuIERyb3Bkb3duXG4vLyAgMTcuIERyb3Bkb3duIE1lbnVcbi8vICAxOC4gRmxleCBWaWRlb1xuLy8gIDE5LiBGb3Jtc1xuLy8gIDIwLiBMYWJlbFxuLy8gIDIxLiBNZWRpYSBPYmplY3Rcbi8vICAyMi4gTWVudVxuLy8gIDIzLiBNZXRlclxuLy8gIDI0LiBPZmYtY2FudmFzXG4vLyAgMjUuIE9yYml0XG4vLyAgMjYuIFBhZ2luYXRpb25cbi8vICAyNy4gUHJvZ3Jlc3MgQmFyXG4vLyAgMjguIFJldmVhbFxuLy8gIDI5LiBTbGlkZXJcbi8vICAzMC4gU3dpdGNoXG4vLyAgMzEuIFRhYmxlXG4vLyAgMzIuIFRhYnNcbi8vICAzMy4gVGh1bWJuYWlsXG4vLyAgMzQuIFRpdGxlIEJhclxuLy8gIDM1LiBUb29sdGlwXG4vLyAgMzYuIFRvcCBCYXJcblxuQGltcG9ydCAndXRpbC91dGlsJztcblxuLy8gMS4gR2xvYmFsXG4vLyAtLS0tLS0tLS1cblxuJGdsb2JhbC1mb250LXNpemU6IDEwMCU7XG4kZ2xvYmFsLXdpZHRoOiByZW0tY2FsYygxMjAwKTtcbiRnbG9iYWwtbGluZWhlaWdodDogMS41O1xuJGZvdW5kYXRpb24tcGFsZXR0ZTogKFxuICBwcmltYXJ5OiAjMjE5OWU4LFxuICBzZWNvbmRhcnk6ICM3NzcsXG4gIHN1Y2Nlc3M6ICMzYWRiNzYsXG4gIHdhcm5pbmc6ICNmZmFlMDAsXG4gIGFsZXJ0OiAjZWM1ODQwLFxuICB3aGl0ZTogI2ZmZmZmZixcbik7XG4kbGlnaHQtZ3JheTogI2U5ZTllOTtcbiRtZWRpdW0tZ3JheTogI2NhY2FjYTtcbiRkYXJrLWdyYXk6ICM1NDU0NTQ7XG4kYmxhY2s6ICMwYTBhMGE7XG4kd2hpdGU6ICNmZWZlZmU7XG4kYm9keS1iYWNrZ3JvdW5kOiAkd2hpdGU7XG4kYm9keS1mb250LWNvbG9yOiAkZGFyay1ncmF5O1xuJGJvZHktZm9udC1mYW1pbHk6ICdTb3VyY2UgU2FucyBQcm8nLCBIZWx2ZXRpY2EsIFJvYm90bywgQXJpYWwsIHNhbnMtc2VyaWY7XG4kYm9keS1hbnRpYWxpYXNlZDogdHJ1ZTtcbiRnbG9iYWwtbWFyZ2luOiAxcmVtO1xuJGdsb2JhbC1wYWRkaW5nOiAxcmVtO1xuJGdsb2JhbC13ZWlnaHQtbm9ybWFsOiA1MDA7XG4kZ2xvYmFsLXdlaWdodC1ib2xkOiA5MDA7XG4kZ2xvYmFsLXJhZGl1czogM3B4O1xuJGdsb2JhbC10ZXh0LWRpcmVjdGlvbjogbHRyO1xuJGdsb2JhbC1mbGV4Ym94OiBmYWxzZTtcbiRwcmludC10cmFuc3BhcmVudC1iYWNrZ3JvdW5kczogdHJ1ZTtcblxuQGluY2x1ZGUgYWRkLWZvdW5kYXRpb24tY29sb3JzO1xuXG4vLyAyLiBCcmVha3BvaW50c1xuLy8gLS0tLS0tLS0tLS0tLS1cblxuJGJyZWFrcG9pbnRzOiAoXG4gIHNtYWxsOiAwLFxuICBtZWRpdW06IDY0MHB4LFxuICBsYXJnZTogMTAyNHB4LFxuICB4bGFyZ2U6IDEyMDBweCxcbiAgeHhsYXJnZTogMTQ0MHB4LFxuKTtcbiRicmVha3BvaW50LWNsYXNzZXM6IChzbWFsbCBtZWRpdW0gbGFyZ2UpO1xuXG4vLyAzLiBUaGUgR3JpZFxuLy8gLS0tLS0tLS0tLS1cblxuJGdyaWQtcm93LXdpZHRoOiAkZ2xvYmFsLXdpZHRoO1xuJGdyaWQtY29sdW1uLWNvdW50OiAxMjtcbiRncmlkLWNvbHVtbi1ndXR0ZXI6IChcbiAgc21hbGw6IDIwcHgsXG4gIG1lZGl1bTogMzBweCxcbik7XG4kZ3JpZC1jb2x1bW4tYWxpZ24tZWRnZTogdHJ1ZTtcbiRibG9jay1ncmlkLW1heDogODtcblxuLy8gNC4gQmFzZSBUeXBvZ3JhcGh5XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cblxuJGhlYWRlci1mb250LWZhbWlseTogJGJvZHktZm9udC1mYW1pbHk7XG4kaGVhZGVyLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkO1xuJGhlYWRlci1mb250LXN0eWxlOiBub3JtYWw7XG4kZm9udC1mYW1pbHktbW9ub3NwYWNlOiBDb25zb2xhcywgJ0xpYmVyYXRpb24gTW9ubycsIENvdXJpZXIsIG1vbm9zcGFjZTtcbiRoZWFkZXItc2l6ZXM6IChcbiAgc21hbGw6IChcbiAgICAnaDEnOiAyNCxcbiAgICAnaDInOiAyMCxcbiAgICAnaDMnOiAxOSxcbiAgICAnaDQnOiAxOCxcbiAgICAnaDUnOiAxNyxcbiAgICAnaDYnOiAxNixcbiAgKSxcbiAgbWVkaXVtOiAoXG4gICAgJ2gxJzogNDgsXG4gICAgJ2gyJzogNDAsXG4gICAgJ2gzJzogMzEsXG4gICAgJ2g0JzogMjUsXG4gICAgJ2g1JzogMjAsXG4gICAgJ2g2JzogMTYsXG4gICksXG4pO1xuJGhlYWRlci1jb2xvcjogJGJsYWNrO1xuJGhlYWRlci1saW5laGVpZ2h0OiAxLjE7XG4kaGVhZGVyLW1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiRoZWFkZXItdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTtcbiRzbWFsbC1mb250LXNpemU6IDgwJTtcbiRoZWFkZXItc21hbGwtZm9udC1jb2xvcjogJG1lZGl1bS1ncmF5O1xuJHBhcmFncmFwaC1saW5laGVpZ2h0OiAxLjY7XG4kcGFyYWdyYXBoLW1hcmdpbi1ib3R0b206IDFyZW07XG4kcGFyYWdyYXBoLXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7XG4kY29kZS1jb2xvcjogJGJsYWNrO1xuJGNvZGUtZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1tb25vc3BhY2U7XG4kY29kZS1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsO1xuJGNvZGUtYmFja2dyb3VuZDogJGxpZ2h0LWdyYXk7XG4kY29kZS1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXk7XG4kY29kZS1wYWRkaW5nOiByZW0tY2FsYygyIDUgMSk7XG4kYW5jaG9yLWNvbG9yOiAkZGFyay1ncmF5O1xuJGFuY2hvci1jb2xvci1ob3Zlcjogc2NhbGUtY29sb3IoJGFuY2hvci1jb2xvciwgJGxpZ2h0bmVzczogLTUwJSk7XG4kYW5jaG9yLXRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiRhbmNob3ItdGV4dC1kZWNvcmF0aW9uLWhvdmVyOiBub25lO1xuJGhyLXdpZHRoOiAkZ2xvYmFsLXdpZHRoO1xuJGhyLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcbiRoci1tYXJnaW46IHJlbS1jYWxjKDIwKSBhdXRvO1xuJGxpc3QtbGluZWhlaWdodDogMjtcbiRsaXN0LW1hcmdpbi1ib3R0b206ICRwYXJhZ3JhcGgtbWFyZ2luLWJvdHRvbTtcbiRsaXN0LXN0eWxlLXR5cGU6IGRpc2M7XG4kbGlzdC1zdHlsZS1wb3NpdGlvbjogb3V0c2lkZTtcbiRsaXN0LXNpZGUtbWFyZ2luOiAycmVtO1xuJGxpc3QtbmVzdGVkLXNpZGUtbWFyZ2luOiAxLjVyZW07XG4kZGVmbmxpc3QtbWFyZ2luLWJvdHRvbTogMXJlbTtcbiRkZWZubGlzdC10ZXJtLXdlaWdodDogJGdsb2JhbC13ZWlnaHQtYm9sZDtcbiRkZWZubGlzdC10ZXJtLW1hcmdpbi1ib3R0b206IDAuM3JlbTtcbiRibG9ja3F1b3RlLWNvbG9yOiAkZGFyay1ncmF5O1xuJGJsb2NrcXVvdGUtcGFkZGluZzogcmVtLWNhbGMoOSAyMCAwIDE5KTtcbiRibG9ja3F1b3RlLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcbiRjaXRlLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTMpO1xuJGNpdGUtY29sb3I6ICRkYXJrLWdyYXk7XG4ka2V5c3Ryb2tlLWZvbnQ6ICRmb250LWZhbWlseS1tb25vc3BhY2U7XG4ka2V5c3Ryb2tlLWNvbG9yOiAkYmxhY2s7XG4ka2V5c3Ryb2tlLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5O1xuJGtleXN0cm9rZS1wYWRkaW5nOiByZW0tY2FsYygyIDQgMCk7XG4ka2V5c3Ryb2tlLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4kYWJici11bmRlcmxpbmU6IDFweCBkb3R0ZWQgJGJsYWNrO1xuXG4vLyA1LiBUeXBvZ3JhcGh5IEhlbHBlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4kbGVhZC1mb250LXNpemU6ICRnbG9iYWwtZm9udC1zaXplICogMS4yNTtcbiRsZWFkLWxpbmVoZWlnaHQ6IDEuNjtcbiRzdWJoZWFkZXItbGluZWhlaWdodDogMS40O1xuJHN1YmhlYWRlci1jb2xvcjogJGRhcmstZ3JheTtcbiRzdWJoZWFkZXItZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQ7XG4kc3ViaGVhZGVyLW1hcmdpbi10b3A6IDAuMnJlbTtcbiRzdWJoZWFkZXItbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuJHN0YXQtZm9udC1zaXplOiAyLjVyZW07XG5cbi8vIDYuIEFiaWRlXG4vLyAtLS0tLS0tLVxuXG4kYWJpZGUtaW5wdXRzOiB0cnVlO1xuJGFiaWRlLWxhYmVsczogdHJ1ZTtcbiRpbnB1dC1iYWNrZ3JvdW5kLWludmFsaWQ6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgYWxlcnQpO1xuJGZvcm0tbGFiZWwtY29sb3ItaW52YWxpZDogbWFwLWdldCgkZm91bmRhdGlvbi1wYWxldHRlLCBhbGVydCk7XG4kaW5wdXQtZXJyb3ItY29sb3I6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgYWxlcnQpO1xuJGlucHV0LWVycm9yLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTIpO1xuJGlucHV0LWVycm9yLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkO1xuXG4vLyA3LiBBY2NvcmRpb25cbi8vIC0tLS0tLS0tLS0tLVxuXG4kYWNjb3JkaW9uLWJhY2tncm91bmQ6ICR3aGl0ZTtcbiRhY2NvcmRpb24tcGx1c21pbnVzOiB0cnVlO1xuJGFjY29yZGlvbi1pdGVtLWNvbG9yOiBmb3JlZ3JvdW5kKCRhY2NvcmRpb24tYmFja2dyb3VuZCwgJHByaW1hcnktY29sb3IpO1xuJGFjY29yZGlvbi1pdGVtLWJhY2tncm91bmQtaG92ZXI6ICRsaWdodC1ncmF5O1xuJGFjY29yZGlvbi1pdGVtLXBhZGRpbmc6IDEuMjVyZW0gMXJlbTtcbiRhY2NvcmRpb24tY29udGVudC1iYWNrZ3JvdW5kOiAkd2hpdGU7XG4kYWNjb3JkaW9uLWNvbnRlbnQtYm9yZGVyOiAxcHggc29saWQgJGxpZ2h0LWdyYXk7XG4kYWNjb3JkaW9uLWNvbnRlbnQtY29sb3I6IGZvcmVncm91bmQoJGFjY29yZGlvbi1iYWNrZ3JvdW5kLCAkcHJpbWFyeS1jb2xvcik7XG4kYWNjb3JkaW9uLWNvbnRlbnQtcGFkZGluZzogMXJlbTtcblxuLy8gOC4gQWNjb3JkaW9uIE1lbnVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG5cbiRhY2NvcmRpb25tZW51LWFycm93czogdHJ1ZTtcbiRhY2NvcmRpb25tZW51LWFycm93LWNvbG9yOiAkcHJpbWFyeS1jb2xvcjtcblxuLy8gOS4gQmFkZ2Vcbi8vIC0tLS0tLS0tXG5cbiRiYWRnZS1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvcjtcbiRiYWRnZS1jb2xvcjogZm9yZWdyb3VuZCgkYmFkZ2UtYmFja2dyb3VuZCk7XG4kYmFkZ2UtcGFkZGluZzogMC4zZW07XG4kYmFkZ2UtbWlud2lkdGg6IDIuMWVtO1xuJGJhZGdlLWZvbnQtc2l6ZTogMC42cmVtO1xuXG4vLyAxMC4gQnJlYWRjcnVtYnNcbi8vIC0tLS0tLS0tLS0tLS0tLVxuXG4kYnJlYWRjcnVtYnMtbWFyZ2luOiAwIDAgJGdsb2JhbC1tYXJnaW4gMDtcbiRicmVhZGNydW1icy1pdGVtLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTEpO1xuJGJyZWFkY3J1bWJzLWl0ZW0tY29sb3I6ICRwcmltYXJ5LWNvbG9yO1xuJGJyZWFkY3J1bWJzLWl0ZW0tY29sb3ItY3VycmVudDogJGJsYWNrO1xuJGJyZWFkY3J1bWJzLWl0ZW0tY29sb3ItZGlzYWJsZWQ6ICRtZWRpdW0tZ3JheTtcbiRicmVhZGNydW1icy1pdGVtLW1hcmdpbjogMC43NXJlbTtcbiRicmVhZGNydW1icy1pdGVtLXVwcGVyY2FzZTogdHJ1ZTtcbiRicmVhZGNydW1icy1pdGVtLXNsYXNoOiB0cnVlO1xuXG4vLyAxMS4gQnV0dG9uXG4vLyAtLS0tLS0tLS0tXG5cbiRidXR0b24tcGFkZGluZzogMC41NWVtIDEuN2VtO1xuJGJ1dHRvbi1tYXJnaW46IDAgMTBweCAkZ2xvYmFsLW1hcmdpbiAwO1xuJGJ1dHRvbi1maWxsOiBzb2xpZDtcbiRidXR0b24tYmFja2dyb3VuZDogJHByaW1hcnktY29sb3I7XG4kYnV0dG9uLWJhY2tncm91bmQtaG92ZXI6IHNjYWxlLWNvbG9yKCRidXR0b24tYmFja2dyb3VuZCwgJGxpZ2h0bmVzczogLTE1JSk7XG4kYnV0dG9uLWNvbG9yOiAkd2hpdGU7XG4kYnV0dG9uLWNvbG9yLWFsdDogJGJsYWNrO1xuJGJ1dHRvbi1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuJGJ1dHRvbi1zaXplczogKFxuICB0aW55OiAwLjZyZW0sXG4gIHNtYWxsOiAwLjc1cmVtLFxuICBkZWZhdWx0OiAwLjlyZW0sXG4gIGxhcmdlOiAxLjE1cmVtLFxuKTtcbiRidXR0b24tb3BhY2l0eS1kaXNhYmxlZDogMC4yNTtcblxuLy8gMTIuIEJ1dHRvbiBHcm91cFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuXG4kYnV0dG9uZ3JvdXAtbWFyZ2luOiAxcmVtO1xuJGJ1dHRvbmdyb3VwLXNwYWNpbmc6IDFweDtcbiRidXR0b25ncm91cC1jaGlsZC1zZWxlY3RvcjogJy5idXR0b24nO1xuJGJ1dHRvbmdyb3VwLWV4cGFuZC1tYXg6IDY7XG5cbi8vIDEzLiBDYWxsb3V0XG4vLyAtLS0tLS0tLS0tLVxuXG4kY2FsbG91dC1iYWNrZ3JvdW5kOiAkd2hpdGU7XG4kY2FsbG91dC1iYWNrZ3JvdW5kLWZhZGU6IDg1JTtcbiRjYWxsb3V0LWJvcmRlcjogMXB4IHNvbGlkIHJnYmEoJGJsYWNrLCAwLjI1KTtcbiRjYWxsb3V0LW1hcmdpbjogMCAwIDFyZW0gMDtcbiRjYWxsb3V0LXBhZGRpbmc6IDFyZW07XG4kY2FsbG91dC1mb250LWNvbG9yOiAkYm9keS1mb250LWNvbG9yO1xuJGNhbGxvdXQtZm9udC1jb2xvci1hbHQ6ICRib2R5LWJhY2tncm91bmQ7XG4kY2FsbG91dC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuJGNhbGxvdXQtbGluay10aW50OiAzMCU7XG5cbi8vIDE0LiBDbG9zZSBCdXR0b25cbi8vIC0tLS0tLS0tLS0tLS0tLS1cblxuJGNsb3NlYnV0dG9uLXBvc2l0aW9uOiByaWdodCB0b3A7XG4kY2xvc2VidXR0b24tb2Zmc2V0LWhvcml6b250YWw6IDFyZW07XG4kY2xvc2VidXR0b24tb2Zmc2V0LXZlcnRpY2FsOiAwLjVyZW07XG4kY2xvc2VidXR0b24tc2l6ZTogMmVtO1xuJGNsb3NlYnV0dG9uLWxpbmVoZWlnaHQ6IDE7XG4kY2xvc2VidXR0b24tY29sb3I6ICRkYXJrLWdyYXk7XG4kY2xvc2VidXR0b24tY29sb3ItaG92ZXI6ICRibGFjaztcblxuLy8gMTUuIERyaWxsZG93blxuLy8gLS0tLS0tLS0tLS0tLVxuXG4kZHJpbGxkb3duLXRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjE1cyBsaW5lYXI7XG4kZHJpbGxkb3duLWFycm93czogdHJ1ZTtcbiRkcmlsbGRvd24tYXJyb3ctY29sb3I6ICRwcmltYXJ5LWNvbG9yO1xuJGRyaWxsZG93bi1iYWNrZ3JvdW5kOiAkd2hpdGU7XG5cbi8vIDE2LiBEcm9wZG93blxuLy8gLS0tLS0tLS0tLS0tXG5cbiRkcm9wZG93bi1wYWRkaW5nOiAxcmVtO1xuJGRyb3Bkb3duLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcbiRkcm9wZG93bi1mb250LXNpemU6IDFyZW07XG4kZHJvcGRvd24td2lkdGg6IDMwMHB4O1xuJGRyb3Bkb3duLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4kZHJvcGRvd24tc2l6ZXM6IChcbiAgdGlueTogMTAwcHgsXG4gIHNtYWxsOiAyMDBweCxcbiAgbGFyZ2U6IDQwMHB4LFxuKTtcblxuLy8gMTcuIERyb3Bkb3duIE1lbnVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG5cbiRkcm9wZG93bm1lbnUtYXJyb3dzOiB0cnVlO1xuJGRyb3Bkb3dubWVudS1hcnJvdy1jb2xvcjogJGFuY2hvci1jb2xvcjtcbiRkcm9wZG93bm1lbnUtbWluLXdpZHRoOiAyMDBweDtcbiRkcm9wZG93bm1lbnUtYmFja2dyb3VuZDogJHdoaXRlO1xuJGRyb3Bkb3dubWVudS1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXk7XG5cbi8vIDE4LiBGbGV4IFZpZGVvXG4vLyAtLS0tLS0tLS0tLS0tLVxuXG4kZmxleHZpZGVvLW1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDE2KTtcbiRmbGV4dmlkZW8tcmF0aW86IDQgYnkgMztcbiRmbGV4dmlkZW8tcmF0aW8td2lkZXNjcmVlbjogMTYgYnkgOTtcblxuLy8gMTkuIEZvcm1zXG4vLyAtLS0tLS0tLS1cblxuJGZpZWxkc2V0LWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcbiRmaWVsZHNldC1wYWRkaW5nOiByZW0tY2FsYygyMCk7XG4kZmllbGRzZXQtbWFyZ2luOiByZW0tY2FsYygxOCAwKTtcbiRsZWdlbmQtcGFkZGluZzogcmVtLWNhbGMoMCAzKTtcbiRmb3JtLXNwYWNpbmc6IHJlbS1jYWxjKDE2KTtcbiRoZWxwdGV4dC1jb2xvcjogJGJsYWNrO1xuJGhlbHB0ZXh0LWZvbnQtc2l6ZTogcmVtLWNhbGMoMTMpO1xuJGhlbHB0ZXh0LWZvbnQtc3R5bGU6IGl0YWxpYztcbiRpbnB1dC1wcmVmaXgtY29sb3I6ICRibGFjaztcbiRpbnB1dC1wcmVmaXgtYmFja2dyb3VuZDogJGxpZ2h0LWdyYXk7XG4kaW5wdXQtcHJlZml4LWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcbiRpbnB1dC1wcmVmaXgtcGFkZGluZzogMXJlbTtcbiRmb3JtLWxhYmVsLWNvbG9yOiAkYmxhY2s7XG4kZm9ybS1sYWJlbC1mb250LXNpemU6IHJlbS1jYWxjKDE0KTtcbiRmb3JtLWxhYmVsLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWw7XG4kZm9ybS1sYWJlbC1saW5lLWhlaWdodDogMS44O1xuJHNlbGVjdC1iYWNrZ3JvdW5kOiAkd2hpdGU7XG4kc2VsZWN0LXRyaWFuZ2xlLWNvbG9yOiAkZGFyay1ncmF5O1xuJHNlbGVjdC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuJGlucHV0LWNvbG9yOiAkYmxhY2s7XG4kaW5wdXQtcGxhY2Vob2xkZXItY29sb3I6ICRtZWRpdW0tZ3JheTtcbiRpbnB1dC1mb250LWZhbWlseTogaW5oZXJpdDtcbiRpbnB1dC1mb250LXNpemU6IHJlbS1jYWxjKDE2KTtcbiRpbnB1dC1iYWNrZ3JvdW5kOiAkd2hpdGU7XG4kaW5wdXQtYmFja2dyb3VuZC1mb2N1czogJHdoaXRlO1xuJGlucHV0LWJhY2tncm91bmQtZGlzYWJsZWQ6ICRsaWdodC1ncmF5O1xuJGlucHV0LWJvcmRlcjowO1xuJGlucHV0LWJvcmRlci1mb2N1czogMXB4IHNvbGlkICRkYXJrLWdyYXk7XG4kaW5wdXQtc2hhZG93OiBub25lO1xuJGlucHV0LXNoYWRvdy1mb2N1czogMCAwIDVweCAkbWVkaXVtLWdyYXk7XG4kaW5wdXQtY3Vyc29yLWRpc2FibGVkOiBkZWZhdWx0O1xuJGlucHV0LXRyYW5zaXRpb246IGJveC1zaGFkb3cgMC41cywgYm9yZGVyLWNvbG9yIDAuMjVzIGVhc2UtaW4tb3V0O1xuJGlucHV0LW51bWJlci1zcGlubmVyczogdHJ1ZTtcbiRpbnB1dC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuXG4vLyAyMC4gTGFiZWxcbi8vIC0tLS0tLS0tLVxuXG4kbGFiZWwtYmFja2dyb3VuZDogJHByaW1hcnktY29sb3I7XG4kbGFiZWwtY29sb3I6IGZvcmVncm91bmQoJGxhYmVsLWJhY2tncm91bmQpO1xuJGxhYmVsLWZvbnQtc2l6ZTogMC44cmVtO1xuJGxhYmVsLXBhZGRpbmc6IDAuMzMzMzNyZW0gMC41cmVtO1xuJGxhYmVsLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG5cbi8vIDIxLiBNZWRpYSBPYmplY3Rcbi8vIC0tLS0tLS0tLS0tLS0tLS1cblxuJG1lZGlhb2JqZWN0LW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luO1xuJG1lZGlhb2JqZWN0LXNlY3Rpb24tcGFkZGluZzogJGdsb2JhbC1wYWRkaW5nO1xuJG1lZGlhb2JqZWN0LWltYWdlLXdpZHRoLXN0YWNrZWQ6IDEwMCU7XG5cbi8vIDIyLiBNZW51XG4vLyAtLS0tLS0tLVxuXG4kbWVudS1tYXJnaW46IDA7XG4kbWVudS1tYXJnaW4tbmVzdGVkOiAxcmVtO1xuJG1lbnUtaXRlbS1wYWRkaW5nOiAwLjdyZW0gMXJlbTtcbiRtZW51LWl0ZW0tY29sb3ItYWN0aXZlOiAkYmxhY2s7XG4kbWVudS1pdGVtLWJhY2tncm91bmQtYWN0aXZlOiAkbGlnaHQtZ3JheTtcbiRtZW51LWljb24tc3BhY2luZzogMC4yNXJlbTtcblxuLy8gMjMuIE1ldGVyXG4vLyAtLS0tLS0tLS1cblxuJG1ldGVyLWhlaWdodDogMXJlbTtcbiRtZXRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuJG1ldGVyLWJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheTtcbiRtZXRlci1maWxsLWdvb2Q6ICRzdWNjZXNzLWNvbG9yO1xuJG1ldGVyLWZpbGwtbWVkaXVtOiAkd2FybmluZy1jb2xvcjtcbiRtZXRlci1maWxsLWJhZDogJGFsZXJ0LWNvbG9yO1xuXG4vLyAyNC4gT2ZmLWNhbnZhc1xuLy8gLS0tLS0tLS0tLS0tLS1cblxuJG9mZmNhbnZhcy1zaXplOiAyNTBweDtcbiRvZmZjYW52YXMtYmFja2dyb3VuZDogJGxpZ2h0LWdyYXk7XG4kb2ZmY2FudmFzLXppbmRleDogLTE7XG4kb2ZmY2FudmFzLXRyYW5zaXRpb24tbGVuZ3RoOiAwLjVzO1xuJG9mZmNhbnZhcy10cmFuc2l0aW9uLXRpbWluZzogZWFzZTtcbiRvZmZjYW52YXMtZml4ZWQtcmV2ZWFsOiB0cnVlO1xuJG9mZmNhbnZhcy1leGl0LWJhY2tncm91bmQ6IHJnYmEoJHdoaXRlLCAwLjI1KTtcbiRtYWluY29udGVudC1jbGFzczogJ29mZi1jYW52YXMtY29udGVudCc7XG4kbWFpbmNvbnRlbnQtc2hhZG93OiAwIDAgMTBweCByZ2JhKCRibGFjaywgMC41KTtcblxuLy8gMjUuIE9yYml0XG4vLyAtLS0tLS0tLS1cblxuJG9yYml0LWJ1bGxldC1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXk7XG4kb3JiaXQtYnVsbGV0LWJhY2tncm91bmQtYWN0aXZlOiAkZGFyay1ncmF5O1xuJG9yYml0LWJ1bGxldC1kaWFtZXRlcjogMS4ycmVtO1xuJG9yYml0LWJ1bGxldC1tYXJnaW46IDAuMXJlbTtcbiRvcmJpdC1idWxsZXQtbWFyZ2luLXRvcDogMC44cmVtO1xuJG9yYml0LWJ1bGxldC1tYXJnaW4tYm90dG9tOiAwLjhyZW07XG4kb3JiaXQtY2FwdGlvbi1iYWNrZ3JvdW5kOiByZ2JhKCRibGFjaywgMC41KTtcbiRvcmJpdC1jYXB0aW9uLXBhZGRpbmc6IDFyZW07XG4kb3JiaXQtY29udHJvbC1iYWNrZ3JvdW5kLWhvdmVyOiByZ2JhKCRibGFjaywgMC41KTtcbiRvcmJpdC1jb250cm9sLXBhZGRpbmc6IDFyZW07XG4kb3JiaXQtY29udHJvbC16aW5kZXg6IDEwO1xuXG4vLyAyNi4gUGFnaW5hdGlvblxuLy8gLS0tLS0tLS0tLS0tLS1cblxuJHBhZ2luYXRpb24tZm9udC1zaXplOiByZW0tY2FsYygxNCk7XG4kcGFnaW5hdGlvbi1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbjtcbiRwYWdpbmF0aW9uLWl0ZW0tY29sb3I6ICRibGFjaztcbiRwYWdpbmF0aW9uLWl0ZW0tcGFkZGluZzogcmVtLWNhbGMoMyAxMCk7XG4kcGFnaW5hdGlvbi1pdGVtLXNwYWNpbmc6IHJlbS1jYWxjKDEpO1xuJHBhZ2luYXRpb24tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiRwYWdpbmF0aW9uLWl0ZW0tYmFja2dyb3VuZC1ob3ZlcjogJGxpZ2h0LWdyYXk7XG4kcGFnaW5hdGlvbi1pdGVtLWJhY2tncm91bmQtY3VycmVudDogJHByaW1hcnktY29sb3I7XG4kcGFnaW5hdGlvbi1pdGVtLWNvbG9yLWN1cnJlbnQ6IGZvcmVncm91bmQoJHBhZ2luYXRpb24taXRlbS1iYWNrZ3JvdW5kLWN1cnJlbnQpO1xuJHBhZ2luYXRpb24taXRlbS1jb2xvci1kaXNhYmxlZDogJG1lZGl1bS1ncmF5O1xuJHBhZ2luYXRpb24tZWxsaXBzaXMtY29sb3I6ICRibGFjaztcbiRwYWdpbmF0aW9uLW1vYmlsZS1pdGVtczogZmFsc2U7XG4kcGFnaW5hdGlvbi1hcnJvd3M6IHRydWU7XG5cbi8vIDI3LiBQcm9ncmVzcyBCYXJcbi8vIC0tLS0tLS0tLS0tLS0tLS1cblxuJHByb2dyZXNzLWhlaWdodDogMXJlbTtcbiRwcm9ncmVzcy1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXk7XG4kcHJvZ3Jlc3MtbWFyZ2luLWJvdHRvbTogJGdsb2JhbC1tYXJnaW47XG4kcHJvZ3Jlc3MtbWV0ZXItYmFja2dyb3VuZDogJHByaW1hcnktY29sb3I7XG4kcHJvZ3Jlc3MtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcblxuLy8gMjguIFJldmVhbFxuLy8gLS0tLS0tLS0tLVxuXG4kcmV2ZWFsLWJhY2tncm91bmQ6ICR3aGl0ZTtcbiRyZXZlYWwtd2lkdGg6IDYwMHB4O1xuJHJldmVhbC1tYXgtd2lkdGg6ICRnbG9iYWwtd2lkdGg7XG4kcmV2ZWFsLXBhZGRpbmc6ICRnbG9iYWwtcGFkZGluZztcbiRyZXZlYWwtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5O1xuJHJldmVhbC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuJHJldmVhbC16aW5kZXg6IDEwMDU7XG4kcmV2ZWFsLW92ZXJsYXktYmFja2dyb3VuZDogcmdiYSgkYmxhY2ssIDAuNDUpO1xuXG4vLyAyOS4gU2xpZGVyXG4vLyAtLS0tLS0tLS0tXG5cbiRzbGlkZXItd2lkdGgtdmVydGljYWw6IDAuNXJlbTtcbiRzbGlkZXItdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQ7XG4kc2xpZGVyLWhlaWdodDogMC41cmVtO1xuJHNsaWRlci1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheTtcbiRzbGlkZXItZmlsbC1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXk7XG4kc2xpZGVyLWhhbmRsZS1oZWlnaHQ6IDEuNHJlbTtcbiRzbGlkZXItaGFuZGxlLXdpZHRoOiAxLjRyZW07XG4kc2xpZGVyLWhhbmRsZS1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvcjtcbiRzbGlkZXItb3BhY2l0eS1kaXNhYmxlZDogMC4yNTtcbiRzbGlkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcblxuLy8gMzAuIFN3aXRjaFxuLy8gLS0tLS0tLS0tLVxuXG4kc3dpdGNoLWJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheTtcbiRzd2l0Y2gtYmFja2dyb3VuZC1hY3RpdmU6ICRwcmltYXJ5LWNvbG9yO1xuJHN3aXRjaC1oZWlnaHQ6IDJyZW07XG4kc3dpdGNoLWhlaWdodC10aW55OiAxLjVyZW07XG4kc3dpdGNoLWhlaWdodC1zbWFsbDogMS43NXJlbTtcbiRzd2l0Y2gtaGVpZ2h0LWxhcmdlOiAyLjVyZW07XG4kc3dpdGNoLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4kc3dpdGNoLW1hcmdpbjogJGdsb2JhbC1tYXJnaW47XG4kc3dpdGNoLXBhZGRsZS1iYWNrZ3JvdW5kOiAkd2hpdGU7XG4kc3dpdGNoLXBhZGRsZS1vZmZzZXQ6IDAuMjVyZW07XG4kc3dpdGNoLXBhZGRsZS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuJHN3aXRjaC1wYWRkbGUtdHJhbnNpdGlvbjogYWxsIDAuMjVzIGVhc2Utb3V0O1xuXG4vLyAzMS4gVGFibGVcbi8vIC0tLS0tLS0tLVxuXG4kdGFibGUtYmFja2dyb3VuZDogJHdoaXRlO1xuJHRhYmxlLWNvbG9yLXNjYWxlOiA1JTtcbiR0YWJsZS1ib3JkZXI6IDFweCBzb2xpZCBzbWFydC1zY2FsZSgkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWNvbG9yLXNjYWxlKTtcbiR0YWJsZS1wYWRkaW5nOiByZW0tY2FsYyg4IDEwIDEwKTtcbiR0YWJsZS1ob3Zlci1zY2FsZTogMiU7XG4kdGFibGUtcm93LWhvdmVyOiBkYXJrZW4oJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1ob3Zlci1zY2FsZSk7XG4kdGFibGUtcm93LXN0cmlwZS1ob3ZlcjogZGFya2VuKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUgKyAkdGFibGUtaG92ZXItc2NhbGUpO1xuJHRhYmxlLXN0cmlwZWQtYmFja2dyb3VuZDogc21hcnQtc2NhbGUoJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSk7XG4kdGFibGUtc3RyaXBlOiBldmVuO1xuJHRhYmxlLWhlYWQtYmFja2dyb3VuZDogc21hcnQtc2NhbGUoJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSAvIDIpO1xuJHRhYmxlLWZvb3QtYmFja2dyb3VuZDogc21hcnQtc2NhbGUoJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSk7XG4kdGFibGUtaGVhZC1mb250LWNvbG9yOiAkYm9keS1mb250LWNvbG9yO1xuJHNob3ctaGVhZGVyLWZvci1zdGFja2VkOiBmYWxzZTtcblxuLy8gMzIuIFRhYnNcbi8vIC0tLS0tLS0tXG5cbiR0YWItbWFyZ2luOiAwO1xuJHRhYi1iYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiR0YWItYmFja2dyb3VuZC1hY3RpdmU6ICR3aGl0ZTtcbiR0YWItaXRlbS1mb250LXNpemU6IHJlbS1jYWxjKDEyKTtcbiR0YWItaXRlbS1iYWNrZ3JvdW5kLWhvdmVyOiAkd2hpdGU7XG4kdGFiLWl0ZW0tcGFkZGluZzogMS4yNXJlbSAxLjVyZW07XG4kdGFiLWV4cGFuZC1tYXg6IDY7XG4kdGFiLWNvbnRlbnQtYmFja2dyb3VuZDogJHdoaXRlO1xuJHRhYi1jb250ZW50LWJvcmRlcjogJG1lZGl1bS1ncmF5O1xuJHRhYi1jb250ZW50LWNvbG9yOiBmb3JlZ3JvdW5kKCR0YWItYmFja2dyb3VuZCwgJHByaW1hcnktY29sb3IpO1xuJHRhYi1jb250ZW50LXBhZGRpbmc6IDFyZW07XG5cbi8vIDMzLiBUaHVtYm5haWxcbi8vIC0tLS0tLS0tLS0tLS1cblxuJHRodW1ibmFpbC1ib3JkZXI6IHNvbGlkIDRweCAkd2hpdGU7XG4kdGh1bWJuYWlsLW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luO1xuJHRodW1ibmFpbC1zaGFkb3c6IDAgMCAwIDFweCByZ2JhKCRibGFjaywgMC4yKTtcbiR0aHVtYm5haWwtc2hhZG93LWhvdmVyOiAwIDAgNnB4IDFweCByZ2JhKCRwcmltYXJ5LWNvbG9yLCAwLjUpO1xuJHRodW1ibmFpbC10cmFuc2l0aW9uOiBib3gtc2hhZG93IDIwMG1zIGVhc2Utb3V0O1xuJHRodW1ibmFpbC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuXG4vLyAzNC4gVGl0bGUgQmFyXG4vLyAtLS0tLS0tLS0tLS0tXG5cbiR0aXRsZWJhci1iYWNrZ3JvdW5kOiAkZGFyay1ncmF5O1xuJHRpdGxlYmFyLWNvbG9yOiAkd2hpdGU7XG4kdGl0bGViYXItcGFkZGluZzogMC41cmVtO1xuJHRpdGxlYmFyLXRleHQtZm9udC13ZWlnaHQ6IGJvbGQ7XG4kdGl0bGViYXItaWNvbi1jb2xvcjogJHdoaXRlO1xuJHRpdGxlYmFyLWljb24tY29sb3ItaG92ZXI6ICRtZWRpdW0tZ3JheTtcbiR0aXRsZWJhci1pY29uLXNwYWNpbmc6IDAuMjVyZW07XG5cbi8vIDM1LiBUb29sdGlwXG4vLyAtLS0tLS0tLS0tLVxuXG4kaGFzLXRpcC1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtYm9sZDtcbiRoYXMtdGlwLWJvcmRlci1ib3R0b206IGRvdHRlZCAxcHggJGRhcmstZ3JheTtcbiR0b29sdGlwLWJhY2tncm91bmQtY29sb3I6ICRibGFjaztcbiR0b29sdGlwLWNvbG9yOiAkd2hpdGU7XG4kdG9vbHRpcC1wYWRkaW5nOiAwLjc1cmVtO1xuJHRvb2x0aXAtZm9udC1zaXplOiAkc21hbGwtZm9udC1zaXplO1xuJHRvb2x0aXAtcGlwLXdpZHRoOiAwLjc1cmVtO1xuJHRvb2x0aXAtcGlwLWhlaWdodDogJHRvb2x0aXAtcGlwLXdpZHRoICogMC44NjY7XG4kdG9vbHRpcC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuXG4vLyAzNi4gVG9wIEJhclxuLy8gLS0tLS0tLS0tLS1cblxuJHRvcGJhci1wYWRkaW5nOiAwO1xuJHRvcGJhci1iYWNrZ3JvdW5kOiAkd2hpdGU7XG4kdG9wYmFyLXN1Ym1lbnUtYmFja2dyb3VuZDogJHdoaXRlO1xuJHRvcGJhci10aXRsZS1zcGFjaW5nOiAxcmVtO1xuJHRvcGJhci1pbnB1dC13aWR0aDogMjAwcHg7XG4kdG9wYmFyLXVuc3RhY2stYnJlYWtwb2ludDogbWVkaXVtO1xuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbkBpbXBvcnQgJ3VuaXQnO1xuQGltcG9ydCAndmFsdWUnO1xuQGltcG9ydCAnY29sb3InO1xuQGltcG9ydCAnc2VsZWN0b3InO1xuQGltcG9ydCAnZmxleCc7XG5AaW1wb3J0ICdicmVha3BvaW50JztcbkBpbXBvcnQgJ21peGlucyc7XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmdW5jdGlvbnNcbi8vLy9cblxuJGdsb2JhbC1mb250LXNpemU6IDEwMCUgIWRlZmF1bHQ7XG5cbi8vIHNjc3MtbGludDpkaXNhYmxlIFplcm9Vbml0XG5cbi8vLyBSZW1vdmVzIHRoZSB1bml0IChlLmcuIHB4LCBlbSwgcmVtKSBmcm9tIGEgdmFsdWUsIHJldHVybmluZyB0aGUgbnVtYmVyIG9ubHkuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJG51bSAtIE51bWJlciB0byBzdHJpcCB1bml0IGZyb20uXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBUaGUgc2FtZSBudW1iZXIsIHNhbnMgdW5pdC5cbkBmdW5jdGlvbiBzdHJpcC11bml0KCRudW0pIHtcbiAgQHJldHVybiAkbnVtIC8gKCRudW0gKiAwICsgMSk7XG59XG5cbi8vLyBDb252ZXJ0cyBvbmUgb3IgbW9yZSBwaXhlbCB2YWx1ZXMgaW50byBtYXRjaGluZyByZW0gdmFsdWVzLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TGlzdH0gJHZhbHVlcyAtIE9uZSBvciBtb3JlIHZhbHVlcyB0byBjb252ZXJ0LiBCZSBzdXJlIHRvIHNlcGFyYXRlIHRoZW0gd2l0aCBzcGFjZXMgYW5kIG5vdCBjb21tYXMuIElmIHlvdSBuZWVkIHRvIGNvbnZlcnQgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCwgd3JhcCB0aGUgbGlzdCBpbiBwYXJlbnRoZXNlcy5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGJhc2UgW251bGxdIC0gVGhlIGJhc2UgdmFsdWUgdG8gdXNlIHdoZW4gY2FsY3VsYXRpbmcgdGhlIGByZW1gLiBJZiB5b3UncmUgdXNpbmcgRm91bmRhdGlvbiBvdXQgb2YgdGhlIGJveCwgdGhpcyBpcyAxNnB4LiBJZiB0aGlzIHBhcmFtZXRlciBpcyBgbnVsbGAsIHRoZSBmdW5jdGlvbiB3aWxsIHJlZmVyZW5jZSB0aGUgYCRiYXNlLWZvbnQtc2l6ZWAgdmFyaWFibGUgYXMgdGhlIGJhc2UuXG4vLy9cbi8vLyBAcmV0dXJucyB7TGlzdH0gQSBsaXN0IG9mIGNvbnZlcnRlZCB2YWx1ZXMuXG5AZnVuY3Rpb24gcmVtLWNhbGMoJHZhbHVlcywgJGJhc2U6IG51bGwpIHtcbiAgJHJlbS12YWx1ZXM6ICgpO1xuICAkY291bnQ6IGxlbmd0aCgkdmFsdWVzKTtcblxuICAvLyBJZiBubyBiYXNlIGlzIGRlZmluZWQsIGRlZmVyIHRvIHRoZSBnbG9iYWwgZm9udCBzaXplXG4gIEBpZiAkYmFzZSA9PSBudWxsIHtcbiAgICAkYmFzZTogJGdsb2JhbC1mb250LXNpemU7XG4gIH1cblxuICAvLyBJZiB0aGUgYmFzZSBmb250IHNpemUgaXMgYSAlLCB0aGVuIG11bHRpcGx5IGl0IGJ5IDE2cHhcbiAgLy8gVGhpcyBpcyBiZWNhdXNlIDEwMCUgZm9udCBzaXplID0gMTZweCBpbiBtb3N0IGFsbCBicm93c2Vyc1xuICBAaWYgdW5pdCgkYmFzZSkgPT0gJyUnIHtcbiAgICAkYmFzZTogKCRiYXNlIC8gMTAwJSkgKiAxNnB4O1xuICB9XG4gIFxuICAvLyBVc2luZyByZW0gYXMgYmFzZSBhbGxvd3MgY29ycmVjdCBzY2FsaW5nXG4gIEBpZiB1bml0KCRiYXNlKSA9PSAncmVtJyB7XG4gICAgJGJhc2U6IHN0cmlwLXVuaXQoJGJhc2UpICogMTZweDtcbiAgfVxuXG4gIEBpZiAkY291bnQgPT0gMSB7XG4gICAgQHJldHVybiAtemYtdG8tcmVtKCR2YWx1ZXMsICRiYXNlKTtcbiAgfVxuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGNvdW50IHtcbiAgICAkcmVtLXZhbHVlczogYXBwZW5kKCRyZW0tdmFsdWVzLCAtemYtdG8tcmVtKG50aCgkdmFsdWVzLCAkaSksICRiYXNlKSk7XG4gIH1cblxuICBAcmV0dXJuICRyZW0tdmFsdWVzO1xufVxuXG4vLyBDb252ZXJ0cyBhIHVuaXRsZXNzLCBwaXhlbCwgb3IgcmVtIHZhbHVlIHRvIGVtLCBmb3IgdXNlIGluIGJyZWFrcG9pbnRzLlxuQGZ1bmN0aW9uIC16Zi1icC10by1lbSgkdmFsdWUpIHtcbiAgLy8gUGl4ZWwgYW5kIHVuaXRsZXNzIHZhbHVlcyBhcmUgY29udmVydGVkIHRvIHJlbXNcbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAncHgnIG9yIHVuaXRsZXNzKCR2YWx1ZSkge1xuICAgICR2YWx1ZTogcmVtLWNhbGMoJHZhbHVlLCAkYmFzZTogMTZweCk7XG4gIH1cblxuICAvLyBUaGVuIHRoZSB2YWx1ZSBpcyBjb252ZXJ0ZWQgdG8gZW1zXG4gIEByZXR1cm4gc3RyaXAtdW5pdCgkdmFsdWUpICogMWVtO1xufVxuXG4vLy8gQ29udmVydHMgYSBwaXhlbCB2YWx1ZSB0byBtYXRjaGluZyByZW0gdmFsdWUuICpBbnkqIHZhbHVlIHBhc3NlZCwgcmVnYXJkbGVzcyBvZiB1bml0LCBpcyBhc3N1bWVkIHRvIGJlIGEgcGl4ZWwgdmFsdWUuIEJ5IGRlZmF1bHQsIHRoZSBiYXNlIHBpeGVsIHZhbHVlIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSByZW0gdmFsdWUgaXMgdGFrZW4gZnJvbSB0aGUgYCRnbG9iYWwtZm9udC1zaXplYCB2YXJpYWJsZS5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdmFsdWUgLSBQaXhlbCB2YWx1ZSB0byBjb252ZXJ0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFzZSBbbnVsbF0gLSBCYXNlIGZvciBwaXhlbCBjb252ZXJzaW9uLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gQSBudW1iZXIgaW4gcmVtcywgY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGUgZ2l2ZW4gdmFsdWUgYW5kIHRoZSBiYXNlIHBpeGVsIHZhbHVlLiByZW0gdmFsdWVzIGFyZSBwYXNzZWQgdGhyb3VnaCBhcyBpcy5cbkBmdW5jdGlvbiAtemYtdG8tcmVtKCR2YWx1ZSwgJGJhc2U6IG51bGwpIHtcbiAgLy8gQ2hlY2sgaWYgdGhlIHZhbHVlIGlzIGEgbnVtYmVyXG4gIEBpZiB0eXBlLW9mKCR2YWx1ZSkgIT0gJ251bWJlcicge1xuICAgIEB3YXJuIGluc3BlY3QoJHZhbHVlKSArICcgd2FzIHBhc3NlZCB0byByZW0tY2FsYygpLCB3aGljaCBpcyBub3QgYSBudW1iZXIuJztcbiAgICBAcmV0dXJuICR2YWx1ZTtcbiAgfVxuXG4gIC8vIENhbGN1bGF0ZSByZW0gaWYgdW5pdHMgZm9yICR2YWx1ZSBpcyBub3QgcmVtXG4gIEBpZiB1bml0KCR2YWx1ZSkgIT0gJ3JlbScge1xuICAgICR2YWx1ZTogc3RyaXAtdW5pdCgkdmFsdWUpIC8gc3RyaXAtdW5pdCgkYmFzZSkgKiAxcmVtO1xuICB9XG5cbiAgLy8gVHVybiAwcmVtIGludG8gMFxuICBAaWYgJHZhbHVlID09IDByZW0ge1xuICAgICR2YWx1ZTogMDtcbiAgfVxuXG4gIEByZXR1cm4gJHZhbHVlO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXG4vLy8vXG5cbi8vLyBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBub3QgZmFsc2V5LCBpbiBDU1MgdGVybXMuIEZhbHNleSB2YWx1ZXMgYXJlIGBudWxsYCwgYG5vbmVgLCBgMGAgd2l0aCBhbnkgdW5pdCwgb3IgYW4gZW1wdHkgbGlzdC5cbi8vL1xuLy8vIEBwYXJhbSB7TWl4ZWR9ICR2YWwgLSBWYWx1ZSB0byBjaGVjay5cbi8vL1xuLy8vIEByZXR1cm5zIHtCb29sZWFufSBgdHJ1ZWAgaWYgYCR2YWxgIGlzIG5vdCBmYWxzZXkuXG5AZnVuY3Rpb24gaGFzLXZhbHVlKCR2YWwpIHtcbiAgQGlmICR2YWwgPT0gbnVsbCBvciAkdmFsID09IG5vbmUge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbiAgQGlmIHR5cGUtb2YoJHZhbCkgPT0gJ251bWJlcicgYW5kIHN0cmlwLXVuaXQoJHZhbCkgPT0gMCB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxuICBAaWYgdHlwZS1vZigkdmFsKSA9PSAnbGlzdCcgYW5kIGxlbmd0aCgkdmFsKSA9PSAwIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuLy8vIERldGVybWluZSBhIHRvcC9yaWdodC9ib3R0b20vcmlnaHQgdmFsdWUgb24gYSBwYWRkaW5nLCBtYXJnaW4sIGV0Yy4gcHJvcGVydHksIG5vIG1hdHRlciBob3cgbWFueSB2YWx1ZXMgd2VyZSBwYXNzZWQgaW4uIFVzZSB0aGlzIGZ1bmN0aW9uIGlmIHlvdSBuZWVkIHRvIGtub3cgdGhlIHNwZWNpZmljIHNpZGUgb2YgYSB2YWx1ZSwgYnV0IGRvbid0IGtub3cgaWYgdGhlIHZhbHVlIGlzIHVzaW5nIGEgc2hvcnRoYW5kIGZvcm1hdC5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdHxOdW1iZXJ9ICR2YWwgLSBWYWx1ZSB0byBhbmFseXplLiBTaG91bGQgYmUgYSBzaG9ydGhhbmQgc2l6aW5nIHByb3BlcnR5LCBlLmcuIFwiMWVtIDJlbSAxZW1cIlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHNpZGUgLSBTaWRlIHRvIHJldHVybi4gU2hvdWxkIGJlIGB0b3BgLCBgcmlnaHRgLCBgYm90dG9tYCwgb3IgYGxlZnRgLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gQSBzaW5nbGUgdmFsdWUgYmFzZWQgb24gYCR2YWxgIGFuZCBgJHNpZGVgLlxuQGZ1bmN0aW9uIGdldC1zaWRlKCR2YWwsICRzaWRlKSB7XG4gICRsZW5ndGg6IGxlbmd0aCgkdmFsKTtcblxuICBAaWYgJGxlbmd0aCA9PSAxIHtcbiAgICBAcmV0dXJuICR2YWw7XG4gIH1cbiAgQGlmICRsZW5ndGggPT0gMiB7XG4gICAgQHJldHVybiBtYXAtZ2V0KChcbiAgICAgIHRvcDogbnRoKCR2YWwsIDEpLFxuICAgICAgYm90dG9tOiBudGgoJHZhbCwgMSksXG4gICAgICBsZWZ0OiBudGgoJHZhbCwgMiksXG4gICAgICByaWdodDogbnRoKCR2YWwsIDIpLFxuICAgICksICRzaWRlKTtcbiAgfVxuICBAaWYgJGxlbmd0aCA9PSAzIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoKFxuICAgICAgdG9wOiBudGgoJHZhbCwgMSksXG4gICAgICBsZWZ0OiBudGgoJHZhbCwgMiksXG4gICAgICByaWdodDogbnRoKCR2YWwsIDIpLFxuICAgICAgYm90dG9tOiBudGgoJHZhbCwgMyksXG4gICAgKSwgJHNpZGUpO1xuICB9XG4gIEBpZiAkbGVuZ3RoID09IDQge1xuICAgIEByZXR1cm4gbWFwLWdldCgoXG4gICAgICB0b3A6IG50aCgkdmFsLCAxKSxcbiAgICAgIHJpZ2h0OiBudGgoJHZhbCwgMiksXG4gICAgICBib3R0b206IG50aCgkdmFsLCAzKSxcbiAgICAgIGxlZnQ6IG50aCgkdmFsLCA0KSxcbiAgICApLCAkc2lkZSk7XG4gIH1cbn1cblxuLy8vIEdpdmVuIGJvcmRlciAkdmFsLCBmaW5kIGEgc3BlY2lmaWMgZWxlbWVudCBvZiB0aGUgYm9yZGVyLCB3aGljaCBpcyAkZWxlbS4gVGhlIHBvc3NpYmxlIHZhbHVlcyBmb3IgJGVsZW0gYXJlIHdpZHRoLCBzdHlsZSwgYW5kIGNvbG9yLlxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkdmFsIC0gQm9yZGVyIHZhbHVlIHRvIGZpbmQgYSB2YWx1ZSBpbi5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRlbGVtIC0gQm9yZGVyIGNvbXBvbmVudCB0byBleHRyYWN0LlxuLy8vXG4vLy8gQHJldHVybnMge01peGVkfSBJZiB0aGUgdmFsdWUgZXhpc3RzLCByZXR1cm5zIHRoZSB2YWx1ZS4gSWYgdGhlIHZhbHVlIGlzIG5vdCBpbiB0aGUgYm9yZGVyIGRlZmluaXRpb24sIHRoZSBmdW5jdGlvbiB3aWxsIHJldHVybiBhIDBweCB3aWR0aCwgc29saWQgc3R5bGUsIG9yIGJsYWNrIGJvcmRlci5cbkBmdW5jdGlvbiBnZXQtYm9yZGVyLXZhbHVlKCR2YWwsICRlbGVtKSB7XG4gIC8vIEZpbmQgdGhlIHdpZHRoLCBzdHlsZSwgb3IgY29sb3IgYW5kIHJldHVybiBpdFxuICBAZWFjaCAkdiBpbiAkdmFsIHtcbiAgICAkdHlwZTogdHlwZS1vZigkdik7XG4gICAgQGlmICRlbGVtID09IHdpZHRoIGFuZCAkdHlwZSA9PSAnbnVtYmVyJyB7XG4gICAgICBAcmV0dXJuICR2O1xuICAgIH1cbiAgICBAaWYgJGVsZW0gPT0gc3R5bGUgYW5kICR0eXBlID09ICdzdHJpbmcnIHtcbiAgICAgIEByZXR1cm4gJHY7XG4gICAgfVxuICAgIEBpZiAkZWxlbSA9PSBjb2xvciBhbmQgJHR5cGUgPT0gJ2NvbG9yJyB7XG4gICAgICBAcmV0dXJuICR2O1xuICAgIH1cbiAgfVxuXG4gIC8vIERlZmF1bHRzXG4gICRkZWZhdWx0czogKFxuICAgIHdpZHRoOiAwLFxuICAgIHN0eWxlOiBzb2xpZCxcbiAgICBjb2xvcjogIzAwMCxcbiAgKTtcblxuICBAcmV0dXJuIG1hcC1nZXQoJGRlZmF1bHRzLCAkZWxlbSk7XG59XG5cbi8vLyBGaW5kcyBhIHZhbHVlIGluIGEgbmVzdGVkIG1hcC5cbi8vLyBAbGluayBodHRwczovL2Nzcy10cmlja3MuY29tL3NuaXBwZXRzL3Nhc3MvZGVlcC1nZXRzZXQtbWFwcy8gRGVlcCBHZXQvU2V0IGluIE1hcHNcbi8vL1xuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIHB1bGwgYSB2YWx1ZSBmcm9tLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAka2V5cy4uLiAtIEtleXMgdG8gdXNlIHdoZW4gbG9va2luZyBmb3IgYSB2YWx1ZS5cbi8vLyBAcmV0dXJucyB7TWl4ZWR9IFRoZSB2YWx1ZSBmb3VuZCBpbiB0aGUgbWFwLlxuQGZ1bmN0aW9uIG1hcC1kZWVwLWdldCgkbWFwLCAka2V5cy4uLikge1xuICBAZWFjaCAka2V5IGluICRrZXlzIHtcbiAgICAkbWFwOiBtYXAtZ2V0KCRtYXAsICRrZXkpO1xuICB9XG4gIEByZXR1cm4gJG1hcDtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZ1bmN0aW9uc1xuLy8vL1xuXG4vLy8gQ2hlY2tzIHRoZSBsaWdodG5lc3Mgb2YgYCRjb2xvcmAsIGFuZCBpZiBpdCBwYXNzZXMgdGhlIGAkdGhyZXNob2xkYCBvZiBsaWdodG5lc3MsIGl0IHJldHVybnMgdGhlIGAkeWVzYCBjb2xvci4gT3RoZXJ3aXNlLCBpdCByZXR1cm5zIHRoZSBgJG5vYCBjb2xvci4gVXNlIHRoaXMgZnVuY3Rpb24gdG8gZHluYW1pY2FsbHkgb3V0cHV0IGEgZm9yZWdyb3VuZCBjb2xvciBiYXNlZCBvbiBhIGdpdmVuIGJhY2tncm91bmQgY29sb3IuXG4vLy9cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBDb2xvciB0byBjaGVjayB0aGUgbGlnaHRuZXNzIG9mLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICR5ZXMgWyRibGFja10gLSBDb2xvciB0byByZXR1cm4gaWYgYCRjb2xvcmAgaXMgbGlnaHQuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJG5vIFskd2hpdGVdIC0gQ29sb3IgdG8gcmV0dXJuIGlmIGAkY29sb3JgIGlzIGRhcmsuXG4vLy8gQHBhcmFtIHtQZXJjZW50YWdlfSAkdGhyZXNob2xkIFs2MCVdIC0gVGhyZXNob2xkIG9mIGxpZ2h0bmVzcyB0byBjaGVjayBhZ2FpbnN0LlxuLy8vXG4vLy8gQHJldHVybnMge0NvbG9yfSBUaGUgJHllcyBjb2xvciBvciAkbm8gY29sb3IuXG5AZnVuY3Rpb24gZm9yZWdyb3VuZCgkY29sb3IsICR5ZXM6ICRibGFjaywgJG5vOiAkd2hpdGUsICR0aHJlc2hvbGQ6IDYwJSkge1xuICBAaWYgJGNvbG9yID09IHRyYW5zcGFyZW50IHtcbiAgICAkY29sb3I6ICRib2R5LWJhY2tncm91bmQ7XG4gIH1cbiAgQGlmIChsaWdodG5lc3MoJGNvbG9yKSA+ICR0aHJlc2hvbGQpIHtcbiAgICBAcmV0dXJuICR5ZXM7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJG5vO1xuICB9XG59XG5cbi8vLyBTY2FsZXMgYSBjb2xvciB0byBiZSBsaWdodGVyIGlmIGl0J3MgbGlnaHQsIG9yIGRhcmtlciBpZiBpdCdzIGRhcmsuIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIHRpbnQgYSBjb2xvciBhcHByb3ByaWF0ZSB0byBpdHMgbGlnaHRuZXNzLlxuLy8vXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIC0gQ29sb3IgdG8gc2NhbGUuXG4vLy8gQHBhcmFtIHtQZXJjZW50YWdlfSAkc2NhbGUgWzUlXSAtIEFtb3VudCB0byBzY2FsZSB1cCBvciBkb3duLlxuLy8vIEBwYXJhbSB7UGVyY2VudGFnZX0gJHRocmVzaG9sZCBbNDAlXSAtIFRocmVzaG9sZCBvZiBsaWdodG5lc3MgdG8gY2hlY2sgYWdhaW5zdC5cbi8vL1xuLy8vIEByZXR1cm5zIHtDb2xvcn0gQSBzY2FsZWQgY29sb3IuXG5AZnVuY3Rpb24gc21hcnQtc2NhbGUoJGNvbG9yLCAkc2NhbGU6IDUlLCAkdGhyZXNob2xkOiA0MCUpIHtcbiAgQGlmIGxpZ2h0bmVzcygkY29sb3IpID4gJHRocmVzaG9sZCB7XG4gICAgJHNjYWxlOiAtJHNjYWxlO1xuICB9XG4gIEByZXR1cm4gc2NhbGUtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAkc2NhbGUpO1xufVxuXG4vLy8gR2V0IGNvbG9yIGZyb20gZm91bmRhdGlvbi1wYWxldHRlXG4vLy9cbi8vLyBAcGFyYW0ge2tleX0gY29sb3Iga2V5IGZyb20gZm91bmRhdGlvbi1wYWxldHRlXG4vLy9cbi8vLyBAcmV0dXJucyB7Q29sb3J9IGNvbG9yIGZyb20gZm91bmRhdGlvbi1wYWxldHRlXG5AZnVuY3Rpb24gZ2V0LWNvbG9yKCRrZXkpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRmb3VuZGF0aW9uLXBhbGV0dGUsICRrZXkpIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgJGtleSk7XG4gIH0gQGVsc2Uge1xuICAgIEBlcnJvciAnZ2l2ZW4gJGtleSBpcyBub3QgYXZhaWxhYmxlIGluICRmb3VuZGF0aW9uLXBhbGV0dGUnO1xuICB9XG59XG5cbi8vLyBUcmFuc2ZlcnMgdGhlIGNvbG9ycyBpbiB0aGUgYCRmb3VuZGF0aW9uLXBhbGV0dGVgIHZhcmlhYmxlIGludG8gdGhlIGxlZ2FjeSBjb2xvciB2YXJpYWJsZXMsIHN1Y2ggYXMgYCRwcmltYXJ5LWNvbG9yYCBhbmQgYCRzZWNvbmRhcnktY29sb3JgLiBDYWxsIHRoaXMgbWl4aW4gYmVsb3cgdGhlIEdsb2JhbCBzZWN0aW9uIG9mIHlvdXIgc2V0dGluZ3MgZmlsZSB0byBwcm9wZXJseSBtaWdyYXRlIHlvdXIgY29kZWJhc2UuXG5AbWl4aW4gYWRkLWZvdW5kYXRpb24tY29sb3JzKCkge1xuICBAaWYgbWFwLWhhcy1rZXkoJGZvdW5kYXRpb24tcGFsZXR0ZSwgcHJpbWFyeSkge1xuICAgICRwcmltYXJ5LWNvbG9yOiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHByaW1hcnkpICFnbG9iYWw7XG4gIH1cbiAgQGlmIG1hcC1oYXMta2V5KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHNlY29uZGFyeSkge1xuICAgICRzZWNvbmRhcnktY29sb3I6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgc2Vjb25kYXJ5KSAhZ2xvYmFsO1xuICB9XG4gIEBpZiBtYXAtaGFzLWtleSgkZm91bmRhdGlvbi1wYWxldHRlLCBzdWNjZXNzKSB7XG4gICAgJHN1Y2Nlc3MtY29sb3I6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgc3VjY2VzcykgIWdsb2JhbDtcbiAgfVxuICBAaWYgbWFwLWhhcy1rZXkoJGZvdW5kYXRpb24tcGFsZXR0ZSwgd2FybmluZykge1xuICAgICR3YXJuaW5nLWNvbG9yOiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHdhcm5pbmcpICFnbG9iYWw7XG4gIH1cbiAgQGlmIG1hcC1oYXMta2V5KCRmb3VuZGF0aW9uLXBhbGV0dGUsIGFsZXJ0KSB7XG4gICAgJGFsZXJ0LWNvbG9yOiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsIGFsZXJ0KSAhZ2xvYmFsO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmdW5jdGlvbnNcbi8vLy9cblxuLy8vIEdlbmVyYXRlcyBhIHNlbGVjdG9yIHdpdGggZXZlcnkgdGV4dCBpbnB1dCB0eXBlLiBZb3UgY2FuIGFsc28gZmlsdGVyIHRoZSBsaXN0IHRvIG9ubHkgb3V0cHV0IGEgc3Vic2V0IG9mIHRob3NlIHNlbGVjdG9ycy5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdHxLZXl3b3JkfSAkdHlwZXMgWygpXSAtIEEgbGlzdCBvZiB0ZXh0IGlucHV0IHR5cGVzIHRvIHVzZS4gTGVhdmUgYmxhbmsgdG8gdXNlIGFsbCBvZiB0aGVtLlxuQGZ1bmN0aW9uIHRleHQtaW5wdXRzKCR0eXBlczogKCkpIHtcbiAgJHJldHVybjogKCk7XG5cbiAgJGFsbC10eXBlczpcbiAgICB0ZXh0XG4gICAgcGFzc3dvcmRcbiAgICBkYXRlXG4gICAgZGF0ZXRpbWVcbiAgICBkYXRldGltZS1sb2NhbFxuICAgIG1vbnRoXG4gICAgd2Vla1xuICAgIGVtYWlsXG4gICAgbnVtYmVyXG4gICAgc2VhcmNoXG4gICAgdGVsXG4gICAgdGltZVxuICAgIHVybFxuICAgIGNvbG9yO1xuXG4gIEBpZiBub3QgaGFzLXZhbHVlKCR0eXBlcykge1xuICAgICR0eXBlczogJGFsbC10eXBlcztcbiAgfVxuXG4gIEBlYWNoICR0eXBlIGluICR0eXBlcyB7XG4gICAgJHJldHVybjogYXBwZW5kKCRyZXR1cm4sIHVucXVvdGUoJ1t0eXBlPVxcJyN7JHR5cGV9XFwnXScpLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG4iLCIkLXpmLWZsZXgtanVzdGlmeTogKFxuICAnbGVmdCc6IGZsZXgtc3RhcnQsXG4gICdyaWdodCc6IGZsZXgtZW5kLFxuICAnY2VudGVyJzogY2VudGVyLFxuICAnanVzdGlmeSc6IHNwYWNlLWJldHdlZW4sXG4gICdzcGFjZWQnOiBzcGFjZS1hcm91bmQsXG4pO1xuXG4kLXpmLWZsZXgtYWxpZ246IChcbiAgJ3RvcCc6IGZsZXgtc3RhcnQsXG4gICdib3R0b20nOiBmbGV4LWVuZCxcbiAgJ21pZGRsZSc6IGNlbnRlcixcbiAgJ3N0cmV0Y2gnOiBzdHJldGNoLFxuKTtcblxuLy8vIEVuYWJsZXMgZmxleGJveCBieSBhZGRpbmcgYGRpc3BsYXk6IGZsZXhgIHRvIHRoZSBlbGVtZW50LlxuQG1peGluIGZsZXgge1xuICBkaXNwbGF5OiBmbGV4O1xufVxuXG4vLy8gSG9yaXpvbnRhbGx5IG9yIHZlcnRpY2FsbHkgYWxpZ25zIHRoZSBpdGVtcyB3aXRoaW4gYSBmbGV4IGNvbnRhaW5lci5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHggW251bGxdIC0gSG9yaXpvbnRhbCBhbGlnbm1lbnQgdG8gdXNlLiBDYW4gYmUgYGxlZnRgLCBgcmlnaHRgLCBgY2VudGVyYCwgYGp1c3RpZnlgLCBvciBgc3BhY2VkYC4gT3IsIHNldCBpdCB0byBgbnVsbGAgKHRoZSBkZWZhdWx0KSB0byBub3Qgc2V0IGhvcml6b250YWwgYWxpZ25tZW50LlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHkgW251bGxdIC0gVmVydGljYWwgYWxpZ25tZW50IHRvIHVzZS4gQ2FuIGJlIGB0b3BgLCBgYm90dG9tYCwgYG1pZGRsZWAsIG9yIGBzdHJldGNoYC4gT3IsIHNldCBpdCB0byBgbnVsbGAgKHRoZSBkZWZhdWx0KSB0byBub3Qgc2V0IHZlcnRpY2FsIGFsaWdubWVudC5cbkBtaXhpbiBmbGV4LWFsaWduKCR4OiBudWxsLCAkeTogbnVsbCkge1xuICBAaWYgJHgge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkLXpmLWZsZXgtanVzdGlmeSwgJHgpIHtcbiAgICAgICR4OiBtYXAtZ2V0KCQtemYtZmxleC1qdXN0aWZ5LCAkeCk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICdmbGV4LWdyaWQtcm93LWFsaWduKCk6ICN7JHh9IGlzIG5vdCBhIHZhbGlkIHZhbHVlIGZvciBob3Jpem9udGFsIGFsaWdubWVudC4gVXNlIGxlZnQsIHJpZ2h0LCBjZW50ZXIsIGp1c3RpZnksIG9yIHNwYWNlZC4nXG4gICAgfVxuICB9XG5cbiAgQGlmICR5IHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJC16Zi1mbGV4LWFsaWduLCAkeSkge1xuICAgICAgJHk6IG1hcC1nZXQoJC16Zi1mbGV4LWFsaWduLCAkeSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICdmbGV4LWdyaWQtcm93LWFsaWduKCk6ICN7JHl9IGlzIG5vdCBhIHZhbGlkIHZhbHVlIGZvciB2ZXJ0aWNhbCBhbGlnbm1lbnQuIFVzZSB0b3AsIGJvdHRvbSwgbWlkZGxlLCBvciBzdHJldGNoLidcbiAgICB9XG4gIH1cblxuICBqdXN0aWZ5LWNvbnRlbnQ6ICR4O1xuICBhbGlnbi1pdGVtczogJHk7XG59XG5cbi8vLyBWZXJ0aWNhbGx5IGFsaWduIGEgc2luZ2xlIGNvbHVtbiB3aXRoaW4gYSBmbGV4IHJvdy4gQXBwbHkgdGhpcyBtaXhpbiB0byBhIGZsZXggY29sdW1uLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkeSBbbnVsbF0gLSBWZXJ0aWNhbCBhbGlnbm1lbnQgdG8gdXNlLiBDYW4gYmUgYHRvcGAsIGBib3R0b21gLCBgbWlkZGxlYCwgb3IgYHN0cmV0Y2hgLiBPciwgc2V0IGl0IHRvIGBudWxsYCAodGhlIGRlZmF1bHQpIHRvIG5vdCBzZXQgdmVydGljYWwgYWxpZ25tZW50LlxuQG1peGluIGZsZXgtYWxpZ24tc2VsZigkeTogbnVsbCkge1xuICBAaWYgJHkge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkLXpmLWZsZXgtYWxpZ24sICR5KSB7XG4gICAgICAkeTogbWFwLWdldCgkLXpmLWZsZXgtYWxpZ24sICR5KTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gJ2ZsZXgtZ3JpZC1jb2x1bW4tYWxpZ24oKTogI3skeX0gaXMgbm90IGEgdmFsaWQgdmFsdWUgZm9yIGFsaWdubWVudC4gVXNlIHRvcCwgYm90dG9tLCBtaWRkbGUsIG9yIHN0cmV0Y2guJ1xuICAgIH1cbiAgfVxuXG4gIGFsaWduLXNlbGY6ICR5O1xufVxuXG4vLy8gQ2hhbmdlcyB0aGUgc291cmNlIG9yZGVyIG9mIGEgZmxleCBjaGlsZC4gQ2hpbGRyZW4gd2l0aCBsb3dlciBudW1iZXJzIGFwcGVhciBmaXJzdCBpbiB0aGUgbGF5b3V0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkb3JkZXIgWzBdIC0gT3JkZXIgbnVtYmVyIHRvIGFwcGx5LlxuQG1peGluIGZsZXgtb3JkZXIoJG9yZGVyOiAwKSB7XG4gIG9yZGVyOiAkb3JkZXI7XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBicmVha3BvaW50c1xuLy8vL1xuXG4vLyBzY3NzLWxpbnQ6ZGlzYWJsZSBaZXJvVW5pdFxuXG4vLy8gQSBsaXN0IG9mIG5hbWVkIGJyZWFrcG9pbnRzLiBZb3UgY2FuIHVzZSB0aGVzZSB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0byBxdWlja2x5IGNyZWF0ZSBtZWRpYSBxdWVyaWVzLlxuLy8vIEB0eXBlIE1hcFxuJGJyZWFrcG9pbnRzOiAoXG4gIHNtYWxsOiAwLFxuICBtZWRpdW06IDY0MHB4LFxuICBsYXJnZTogMTAyNHB4LFxuICB4bGFyZ2U6IDEyMDBweCxcbiAgeHhsYXJnZTogMTQ0MHB4LFxuKSAhZGVmYXVsdDtcblxuJC16Zi16ZXJvLWJyZWFrcG9pbnQ6IHNtYWxsICFkZWZhdWx0O1xuXG5AaWYgbnRoKG1hcC12YWx1ZXMoJGJyZWFrcG9pbnRzKSwgMSkgIT0gMCB7XG4gIEBlcnJvciAnWW91ciBzbWFsbGVzdCBicmVha3BvaW50IChkZWZpbmVkIGluICRicmVha3BvaW50cykgbXVzdCBiZSBzZXQgdG8gXCIwXCIuJztcbn1cbkBlbHNlIHtcbiAgJC16Zi16ZXJvLWJyZWFrcG9pbnQ6IG50aChtYXAta2V5cygkYnJlYWtwb2ludHMpLCAxKTtcbn1cblxuLy8vIEFsbCBvZiB0aGUgbmFtZXMgaW4gdGhpcyBsaXN0IHdpbGwgYmUgb3V0cHV0IGFzIGNsYXNzZXMgaW4geW91ciBDU1MsIGxpa2UgYC5zbWFsbC0xMmAsIGAubWVkaXVtLTZgLCBhbmQgc28gb24uIEVhY2ggdmFsdWUgaW4gdGhpcyBsaXN0IG11c3QgYWxzbyBiZSBpbiB0aGUgYCRicmVha3BvaW50c2AgbWFwLlxuLy8vIEB0eXBlIExpc3RcbiRicmVha3BvaW50LWNsYXNzZXM6IChzbWFsbCBtZWRpdW0gbGFyZ2UpICFkZWZhdWx0O1xuXG4vLy8gR2VuZXJhdGVzIGEgbWVkaWEgcXVlcnkgc3RyaW5nIG1hdGNoaW5nIHRoZSBpbnB1dCB2YWx1ZS4gUmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0byBzZWUgd2hhdCB0aGUgcG9zc2libGUgaW5wdXRzIGFyZS5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICR2YWwgW3NtYWxsXSAtIEJyZWFrcG9pbnQgbmFtZSwgb3IgcHgsIHJlbSwgb3IgZW0gdmFsdWUgdG8gcHJvY2Vzcy5cbkBmdW5jdGlvbiBicmVha3BvaW50KCR2YWw6ICQtemYtemVyby1icmVha3BvaW50KSB7XG4gIC8vIFNpemUgb3Iga2V5d29yZFxuICAkYnA6IG50aCgkdmFsLCAxKTtcbiAgLy8gVmFsdWUgZm9yIG1heC13aWR0aCBtZWRpYSBxdWVyaWVzXG4gICRicC1tYXg6IDA7XG4gIC8vIERpcmVjdGlvbiBvZiBtZWRpYSBxdWVyeSAodXAsIGRvd24sIG9yIG9ubHkpXG4gICRkaXI6IGlmKGxlbmd0aCgkdmFsKSA+IDEsIG50aCgkdmFsLCAyKSwgdXApO1xuICAvLyBFdmVudHVhbCBvdXRwdXRcbiAgJHN0cjogJyc7XG4gIC8vIElzIGl0IGEgbmFtZWQgbWVkaWEgcXVlcnk/XG4gICRuYW1lZDogZmFsc2U7XG5cbiAgLy8gT3JpZW50YXRpb24gbWVkaWEgcXVlcmllcyBoYXZlIGEgdW5pcXVlIHN5bnRheFxuICBAaWYgJGJwID09ICdsYW5kc2NhcGUnIG9yICRicCA9PSAncG9ydHJhaXQnIHtcbiAgICBAcmV0dXJuICcob3JpZW50YXRpb246ICN7JGJwfSknO1xuICB9XG4gIEBlbHNlIGlmICRicCA9PSAncmV0aW5hJyB7XG4gICAgQHJldHVybiAnKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMiksIChtaW4tcmVzb2x1dGlvbjogMTkyZHBpKSc7XG4gIH1cblxuICAvLyBUcnkgdG8gcHVsbCBhIG5hbWVkIGJyZWFrcG9pbnQgb3V0IG9mIHRoZSAkYnJlYWtwb2ludHMgbWFwXG4gIEBpZiB0eXBlLW9mKCRicCkgPT0gJ3N0cmluZycge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRicCkge1xuICAgICAgQGlmICRkaXIgPT0gJ29ubHknIG9yICRkaXIgPT0gJ2Rvd24nIHtcbiAgICAgICAgJGJwLW1heDogLXpmLW1hcC1uZXh0KCRicmVha3BvaW50cywgJGJwKTtcbiAgICAgIH1cblxuICAgICAgJGJwOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJGJwKTtcbiAgICAgICRuYW1lZDogdHJ1ZTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJGJwOiAwO1xuICAgICAgQHdhcm4gJ2JyZWFrcG9pbnQoKTogXCIjeyR2YWx9XCIgaXMgbm90IGRlZmluZWQgaW4geW91ciAkYnJlYWtwb2ludHMgc2V0dGluZy4nO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvbnZlcnQgYW55IHBpeGVsLCByZW0sIG9yIHVuaXRsZXNzIHZhbHVlIHRvIGVtXG4gICRicDogLXpmLWJwLXRvLWVtKCRicCk7XG4gIEBpZiAkYnAtbWF4IHtcbiAgICAkYnAtbWF4OiAtemYtYnAtdG8tZW0oJGJwLW1heCkgLSAoMS8xNik7XG4gIH1cblxuICAvLyBDb25kaXRpb25zIHRvIHNraXAgbWVkaWEgcXVlcnkgY3JlYXRpb25cbiAgLy8gLSBJdCdzIGEgbmFtZWQgYnJlYWtwb2ludCB0aGF0IHJlc29sdmVkIHRvIFwiMCBkb3duXCIgb3IgXCIwIHVwXCJcbiAgLy8gLSBJdCdzIGEgbnVtZXJpYyBicmVha3BvaW50IHRoYXQgcmVzb2x2ZWQgdG8gXCIwIFwiICsgYW55dGhpbmdcbiAgQGlmICRicCA+IDBlbSBvciAkZGlyID09ICdvbmx5JyBvciAkZGlyID09ICdkb3duJyB7XG4gICAgLy8gYG9ubHlgIHJhbmdlcyB1c2UgdGhlIGZvcm1hdCBgKG1pbi13aWR0aDogbikgYW5kIChtYXgtd2lkdGg6IG4pYFxuICAgIEBpZiAkZGlyID09ICdvbmx5JyB7XG4gICAgICAvLyBPbmx5IG5hbWVkIG1lZGlhIHF1ZXJpZXMgY2FuIGhhdmUgYW4gXCJvbmx5XCIgcmFuZ2VcbiAgICAgIEBpZiAkbmFtZWQgPT0gdHJ1ZSB7XG4gICAgICAgIC8vIE9ubHkgdXNlIFwibWluLXdpZHRoXCIgaWYgdGhlIGZsb29yIGlzIGdyZWF0ZXIgdGhhbiAwXG4gICAgICAgIEBpZiAkYnAgPiAwZW0ge1xuICAgICAgICAgICRzdHI6ICRzdHIgKyAnKG1pbi13aWR0aDogI3skYnB9KSc7XG5cbiAgICAgICAgICAvLyBPbmx5IGFkZCBcImFuZFwiIHRvIHRoZSBtZWRpYSBxdWVyeSBpZiB0aGVyZSdzIGEgY2VpbGluZ1xuICAgICAgICAgIEBpZiAkYnAtbWF4ICE9IG51bGwge1xuICAgICAgICAgICAgJHN0cjogJHN0ciArICcgYW5kICc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gT25seSB1c2UgXCJtYXgtd2lkdGhcIiBpZiB0aGVyZSdzIGEgY2VpbGluZ1xuICAgICAgICBAaWYgJGJwLW1heCAhPSBudWxsIHtcbiAgICAgICAgICAkc3RyOiAkc3RyICsgJyhtYXgtd2lkdGg6ICN7JGJwLW1heH0pJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBAd2FybiAnYnJlYWtwb2ludCgpOiBPbmx5IG5hbWVkIG1lZGlhIHF1ZXJpZXMgY2FuIGhhdmUgYW4gYG9ubHlgIHJhbmdlLic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gYGRvd25gIHJhbmdlcyB1c2UgdGhlIGZvcm1hdCBgKG1heC13aWR0aDogbilgXG4gICAgQGVsc2UgaWYgJGRpciA9PSAnZG93bicge1xuICAgICAgJG1heDogaWYoJG5hbWVkLCAkYnAtbWF4LCAkYnApO1xuXG4gICAgICAvLyBTa2lwIG1lZGlhIHF1ZXJ5IGNyZWF0aW9uIGlmIGlucHV0IHZhbHVlIGlzIGV4YWN0bHkgXCIwIGRvd25cIixcbiAgICAgIC8vIHVubGVzcyB0aGUgZnVuY3Rpb24gd2FzIGNhbGxlZCBhcyBcInNtYWxsIGRvd25cIiwgaW4gd2hpY2ggY2FzZSBpdCdzIGp1c3QgXCJzbWFsbCBvbmx5XCJcbiAgICAgIEBpZiAkbmFtZWQgb3IgJGJwID4gMGVtIHtcbiAgICAgICAgQGlmICRtYXggIT0gbnVsbCB7XG4gICAgICAgICAgJHN0cjogJHN0ciArICcobWF4LXdpZHRoOiAjeyRtYXh9KSc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBgdXBgIHJhbmdlcyB1c2UgdGhlIGZvcm1hdCBgKG1pbi13aWR0aDogbilgXG4gICAgQGVsc2UgaWYgJGJwID4gMGVtIHtcbiAgICAgICRzdHI6ICRzdHIgKyAnKG1pbi13aWR0aDogI3skYnB9KSc7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkc3RyO1xufVxuXG4vLy8gV3JhcHMgYSBtZWRpYSBxdWVyeSBhcm91bmQgdGhlIGNvbnRlbnQgeW91IHB1dCBpbnNpZGUgdGhlIG1peGluLiBUaGlzIG1peGluIGFjY2VwdHMgYSBudW1iZXIgb2YgdmFsdWVzOlxuLy8vICAtIElmIGEgc3RyaW5nIGlzIHBhc3NlZCwgdGhlIG1peGluIHdpbGwgbG9vayBmb3IgaXQgaW4gdGhlIGAkYnJlYWtwb2ludHNgIG1hcCwgYW5kIHVzZSBhIG1lZGlhIHF1ZXJ5IHRoZXJlLlxuLy8vICAtIElmIGEgcGl4ZWwgdmFsdWUgaXMgcGFzc2VkLCBpdCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhbiBlbSB2YWx1ZSB1c2luZyBgJGdsb2JhbC1mb250LXNpemVgIGFzIHRoZSBiYXNlLlxuLy8vICAtIElmIGEgcmVtIHZhbHVlIGlzIHBhc3NlZCwgdGhlIHVuaXQgd2lsbCBiZSBjaGFuZ2VkIHRvIGVtLlxuLy8vICAtIElmIGFuIGVtIHZhbHVlIGlzIHBhc3NlZCwgdGhlIHZhbHVlIHdpbGwgYmUgdXNlZCBhcy1pcy5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICR2YWx1ZSAtIEJyZWFrcG9pbnQgbmFtZSwgb3IgcHgsIHJlbSwgb3IgZW0gdmFsdWUgdG8gcHJvY2Vzcy5cbi8vL1xuLy8vIEBvdXRwdXQgSWYgdGhlIGJyZWFrcG9pbnQgaXMgXCIwcHggYW5kIGxhcmdlclwiLCBvdXRwdXRzIHRoZSBjb250ZW50IGFzLWlzLiBPdGhlcndpc2UsIG91dHB1dHMgdGhlIGNvbnRlbnQgd3JhcHBlZCBpbiBhIG1lZGlhIHF1ZXJ5LlxuQG1peGluIGJyZWFrcG9pbnQoJHZhbHVlKSB7XG4gICRzdHI6IGJyZWFrcG9pbnQoJHZhbHVlKTtcblxuICAvLyBJZiAkc3RyIGlzIHN0aWxsIGFuIGVtcHR5IHN0cmluZywgbm8gbWVkaWEgcXVlcnkgaXMgbmVlZGVkXG4gIEBpZiAkc3RyID09ICcnIHtcbiAgICBAY29udGVudDtcbiAgfVxuXG4gIC8vIE90aGVyd2lzZSwgd3JhcCB0aGUgY29udGVudCBpbiBhIG1lZGlhIHF1ZXJ5XG4gIEBlbHNlIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAjeyRzdHJ9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQ29udmVycyB0aGUgYnJlYWtwb2ludHMgbWFwIHRvIGEgVVJMLWVuY29kZWQgc3RyaW5nLCBsaWtlIHRoaXM6IGBrZXkxPXZhbHVlMSZrZXkyPXZhbHVlMmAuIFRoZSB2YWx1ZSBpcyB0aGVuIGRyb3BwZWQgaW50byB0aGUgQ1NTIGZvciBhIHNwZWNpYWwgYDxtZXRhPmAgdGFnLCB3aGljaCBpcyByZWFkIGJ5IHRoZSBGb3VuZGF0aW9uIEphdmFTY3JpcHQuIFRoaXMgaXMgaG93IHdlIHRyYW5zZmVyIHZhbHVlcyBmcm9tIFNhc3MgdG8gSmF2YVNjcmlwdCwgc28gdGhleSBjYW4gYmUgZGVmaW5lZCBpbiBvbmUgcGxhY2UuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byBjb252ZXJ0LlxuLy8vXG4vLy8gQHJldHVybnMge1N0cmluZ30gQSBzdHJpbmcgY29udGFpbmluZyB0aGUgbWFwJ3MgY29udGVudHMuXG5AZnVuY3Rpb24gLXpmLWJwLXNlcmlhbGl6ZSgkbWFwKSB7XG4gICRzdHI6ICcnO1xuICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJG1hcCB7XG4gICAgJHN0cjogJHN0ciArICRrZXkgKyAnPScgKyAtemYtYnAtdG8tZW0oJHZhbHVlKSArICcmJztcbiAgfVxuICAkc3RyOiBzdHItc2xpY2UoJHN0ciwgMSwgLTIpO1xuXG4gIEByZXR1cm4gJHN0cjtcbn1cblxuLy8vIEZpbmQgdGhlIG5leHQga2V5IGluIGEgbWFwLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtNYXB9ICRtYXAgLSBNYXAgdG8gdHJhdmVyc2UuXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGtleSAtIEtleSB0byB1c2UgYXMgYSBzdGFydGluZyBwb2ludC5cbi8vL1xuLy8vIEByZXR1cm5zIHtNaXhlZH0gVGhlIHZhbHVlIGZvciB0aGUga2V5IGFmdGVyIGAka2V5YCwgaWYgYCRrZXlgIHdhcyBmb3VuZC4gSWYgYCRrZXlgIHdhcyBub3QgZm91bmQsIG9yIGAka2V5YCB3YXMgdGhlIGxhc3QgdmFsdWUgaW4gdGhlIG1hcCwgcmV0dXJucyBgbnVsbGAuXG5AZnVuY3Rpb24gLXpmLW1hcC1uZXh0KCRtYXAsICRrZXkpIHtcblxuICAvLyBTdG9yZSB0aGUga2V5cyBvZiB0aGUgbWFwIGFzIGEgbGlzdFxuICAkdmFsdWVzOiBtYXAta2V5cygkbWFwKTtcblxuICAkaTogMDtcblxuICAvLyBJZiB0aGUgS2V5IEV4aXN0cywgR2V0IHRoZSBpbmRleCBvZiB0aGUga2V5IHdpdGhpbiB0aGUgbWFwIGFuZCBhZGQgMSB0byBpdCBmb3IgdGhlIG5leHQgYnJlYWtwb2ludCBpbiB0aGUgbWFwXG4gIEBpZiAobWFwLWhhcy1rZXkoJG1hcCwgJGtleSkpIHtcbiAgICAkaTogaW5kZXgoJHZhbHVlcywgJGtleSkgKyAxO1xuICB9XG5cbiAgLy8gSWYgdGhlIGtleSBkb2Vzbid0IGV4aXN0LCBvciBpdCdzIHRoZSBsYXN0IGtleSBpbiB0aGUgbWFwLCByZXR1cm4gbnVsbFxuICBAaWYgKCRpID4gbGVuZ3RoKCRtYXApIG9yICRpID09IDApIHtcbiAgICBAcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gT3RoZXJ3aXNlLCByZXR1cm4gdGhlIHZhbHVlXG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJG1hcCwgbnRoKCR2YWx1ZXMsICRpKSk7XG4gIH1cblxufVxuXG4vLy8gR2V0IGEgdmFsdWUgZm9yIGEgYnJlYWtwb2ludCBmcm9tIGEgcmVzcG9uc2l2ZSBjb25maWcgbWFwLiBJZiB0aGUgY29uZmlnIG1hcCBoYXMgdGhlIGtleSBgJHZhbHVlYCwgdGhlIGV4YWN0IGJyZWFrcG9pbnQgdmFsdWUgaXMgcmV0dXJuZWQuIElmIHRoZSBjb25maWcgbWFwIGRvZXMgKm5vdCogaGF2ZSB0aGUgYnJlYWtwb2ludCwgdGhlIHZhbHVlIG1hdGNoaW5nIHRoZSBuZXh0IGxvd2VzdCBicmVha3BvaW50IGluIHRoZSBjb25maWcgbWFwIGlzIHJldHVybmVkLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtNYXB9ICRtYXAgLSBJbnB1dCBjb25maWcgbWFwLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHZhbHVlIC0gQnJlYWtwb2ludCBuYW1lIHRvIHVzZS5cbi8vL1xuLy8vIEByZXR1cm4ge01peGVkfSBUaGUgY29ycmVzcG9uZGluZyBicmVha3BvaW50IHZhbHVlLlxuQGZ1bmN0aW9uIC16Zi1nZXQtYnAtdmFsKCRtYXAsICR2YWx1ZSkge1xuICAvLyBDaGVjayBpZiB0aGUgYnJlYWtwb2ludCBuYW1lIGV4aXN0cyBnbG9iYWxseVxuICBAaWYgbm90IG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJHZhbHVlKSB7XG4gICAgQHJldHVybiBudWxsO1xuICB9XG4gIC8vIENoZWNrIGlmIHRoZSBicmVha3BvaW50IG5hbWUgZXhpc3RzIGluIHRoZSBsb2NhbCBjb25maWcgbWFwXG4gIEBlbHNlIGlmIG1hcC1oYXMta2V5KCRtYXAsICR2YWx1ZSkge1xuICAgIC8vIElmIGl0IGRvZXMsIGp1c3QgcmV0dXJuIHRoZSB2YWx1ZVxuICAgIEByZXR1cm4gbWFwLWdldCgkbWFwLCAkdmFsdWUpO1xuICB9XG4gIC8vIE90aGVyd2lzZSwgZmluZCB0aGUgbmV4dCBsb3dlc3QgYnJlYWtwb2ludCBhbmQgcmV0dXJuIHRoYXQgdmFsdWVcbiAgQGVsc2Uge1xuICAgICRhbmNob3I6IG51bGw7XG4gICAgJGZvdW5kOiBmYWxzZTtcblxuICAgIEBlYWNoICRrZXksICR2YWwgaW4gJGJyZWFrcG9pbnRzIHtcbiAgICAgIEBpZiBub3QgJGZvdW5kIHtcbiAgICAgICAgQGlmIG1hcC1oYXMta2V5KCRtYXAsICRrZXkpIHtcbiAgICAgICAgICAkYW5jaG9yOiAka2V5O1xuICAgICAgICB9XG4gICAgICAgIEBpZiAka2V5ID09ICR2YWx1ZSB7XG4gICAgICAgICAgJGZvdW5kOiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgQHJldHVybiBtYXAtZ2V0KCRtYXAsICRhbmNob3IpO1xuICB9XG59XG5cbi8vIExlZ2FjeSBicmVha3BvaW50IHZhcmlhYmxlc1xuLy8gVGhlc2Ugd2lsbCBiZSByZW1vdmVkIGluIDYuM1xuJHNtYWxsLXVwOiBudWxsO1xuJHNtYWxsLW9ubHk6IG51bGw7XG4kbWVkaXVtLXVwOiBudWxsO1xuJG1lZGl1bS1vbmx5OiBudWxsO1xuJGxhcmdlLXVwOiBudWxsO1xuJGxhcmdlLW9ubHk6IG51bGw7XG4keGxhcmdlLXVwOiBudWxsO1xuJHhsYXJnZS1vbmx5OiBudWxsO1xuJHh4bGFyZ2UtdXA6IG51bGw7XG4keHhsYXJnZS1vbmx5OiBudWxsO1xuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCBzbWFsbCkge1xuICAkc21hbGwtdXA6IHNjcmVlbjtcbiAgJHNtYWxsLW9ubHk6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KHNtYWxsIG9ubHkpfScpO1xufVxuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCBtZWRpdW0pIHtcbiAgJG1lZGl1bS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQobWVkaXVtKX0nKTtcbiAgJG1lZGl1bS1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChtZWRpdW0gb25seSl9Jyk7XG59XG5cbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIGxhcmdlKSB7XG4gICRsYXJnZS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQobGFyZ2UpfScpO1xuICAkbGFyZ2Utb25seTogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQobGFyZ2Ugb25seSl9Jyk7XG59XG5cbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIHhsYXJnZSkge1xuICAkeGxhcmdlLXVwOiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludCh4bGFyZ2UpfScpO1xuICAkeGxhcmdlLW9ubHk6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KHhsYXJnZSBvbmx5KX0nKTtcbn1cblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgeHhsYXJnZSkge1xuICAkeHhsYXJnZS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQoeHhsYXJnZSl9Jyk7XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmdW5jdGlvbnNcbi8vLy9cblxuLy8vIENyZWF0ZXMgYSBDU1MgdHJpYW5nbGUsIHdoaWNoIGNhbiBiZSB1c2VkIGZvciBkcm9wZG93biBhcnJvd3MsIGRyb3Bkb3duIHBpcHMsIGFuZCBtb3JlLiBVc2UgdGhpcyBtaXhpbiBpbnNpZGUgYSBgJjo6YmVmb3JlYCBvciBgJjo6YWZ0ZXJgIHNlbGVjdG9yLCB0byBhdHRhY2ggdGhlIHRyaWFuZ2xlIHRvIGFuIGV4aXN0aW5nIGVsZW1lbnQuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHRyaWFuZ2xlLXNpemUgLSBXaWR0aCBvZiB0aGUgdHJpYW5nbGUuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJHRyaWFuZ2xlLWNvbG9yIC0gQ29sb3Igb2YgdGhlIHRyaWFuZ2xlLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHRyaWFuZ2xlLWRpcmVjdGlvbiAtIERpcmVjdGlvbiB0aGUgdHJpYW5nbGUgcG9pbnRzLiBDYW4gYmUgYHVwYCwgYHJpZ2h0YCwgYGRvd25gLCBvciBgbGVmdGAuXG5AbWl4aW4gY3NzLXRyaWFuZ2xlKFxuICAkdHJpYW5nbGUtc2l6ZSxcbiAgJHRyaWFuZ2xlLWNvbG9yLFxuICAkdHJpYW5nbGUtZGlyZWN0aW9uXG4pIHtcbiAgY29udGVudDogJyc7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiAwO1xuICBib3JkZXI6IGluc2V0ICR0cmlhbmdsZS1zaXplO1xuXG4gIEBpZiAoJHRyaWFuZ2xlLWRpcmVjdGlvbiA9PSBkb3duKSB7XG4gICAgYm9yZGVyLWNvbG9yOiAkdHJpYW5nbGUtY29sb3IgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXRvcC1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDtcbiAgfVxuICBAaWYgKCR0cmlhbmdsZS1kaXJlY3Rpb24gPT0gdXApIHtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICR0cmlhbmdsZS1jb2xvcjtcbiAgICBib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItdG9wLXdpZHRoOiAwO1xuICB9XG4gIEBpZiAoJHRyaWFuZ2xlLWRpcmVjdGlvbiA9PSByaWdodCkge1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgJHRyaWFuZ2xlLWNvbG9yO1xuICAgIGJvcmRlci1sZWZ0LXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItcmlnaHQtd2lkdGg6IDA7XG4gIH1cbiAgQGlmICgkdHJpYW5nbGUtZGlyZWN0aW9uID09IGxlZnQpIHtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICR0cmlhbmdsZS1jb2xvciB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItcmlnaHQtc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAwO1xuICB9XG59XG5cbi8vLyBDcmVhdGVzIGEgbWVudSBpY29uIHdpdGggYSBzZXQgd2lkdGgsIGhlaWdodCwgbnVtYmVyIG9mIGJhcnMsIGFuZCBjb2xvcnMuIFRoZSBtaXhpbiB1c2VzIHRoZSBoZWlnaHQgb2YgdGhlIGljb24gYW5kIHRoZSB3ZWlnaHQgb2YgdGhlIGJhcnMgdG8gZGV0ZXJtaW5lIHNwYWNpbmcuIDxkaXYgY2xhc3M9XCJkb2NzLWV4YW1wbGUtYnVyZ2VyXCI+PC9kaXY+XG4vLy9cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgWyRibGFja10gLSBDb2xvciB0byB1c2UgZm9yIHRoZSBpY29uLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvci1ob3ZlciBbJGRhcmstZ3JheV0gLSBDb2xvciB0byB1c2Ugd2hlbiB0aGUgaWNvbiBpcyBob3ZlcmVkIG92ZXIuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCBbMjBweF0gLSBXaWR0aCBvZiB0aGUgaWNvbi5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGhlaWdodCBbMTZweF0gLSBIZWlnaHQgb2YgdGhlIGljb24uXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3ZWlnaHQgWzJweF0gLSBIZWlnaHQgb2YgaW5kaXZpZHVhbCBiYXJzIGluIHRoZSBpY29uLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFycyBbM10gLSBOdW1iZXIgb2YgYmFycyBpbiB0aGUgaWNvbi5cbkBtaXhpbiBoYW1idXJnZXIoXG4gICRjb2xvcjogJGJsYWNrLFxuICAkY29sb3ItaG92ZXI6ICRkYXJrLWdyYXksXG4gICR3aWR0aDogMjBweCxcbiAgJGhlaWdodDogMTZweCxcbiAgJHdlaWdodDogMnB4LFxuICAkYmFyczogM1xuKSB7XG4gIC8vIGJveC1zaGFkb3cgQ1NTIG91dHB1dFxuICAkc2hhZG93OiAoKTtcbiAgJGhvdmVyLXNoYWRvdzogKCk7XG5cbiAgLy8gU3BhY2luZyBiZXR3ZWVuIGJhcnMgaXMgY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGUgdG90YWwgaGVpZ2h0IG9mIHRoZSBpY29uIGFuZCB0aGUgd2VpZ2h0IG9mIGVhY2ggYmFyXG4gICRzcGFjaW5nOiAoJGhlaWdodCAtICgkd2VpZ2h0ICogJGJhcnMpKSAvICgkYmFycyAtIDEpO1xuXG4gIEBpZiB1bml0KCRzcGFjaW5nKSA9PSAncHgnIHtcbiAgICAkc3BhY2luZzogZmxvb3IoJHNwYWNpbmcpO1xuICB9XG5cbiAgLy8gSWNvbiBjb250YWluZXJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgd2lkdGg6ICR3aWR0aDtcbiAgaGVpZ2h0OiAkaGVpZ2h0O1xuXG4gIC8vIEljb24gYmFyc1xuICAmOjphZnRlciB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogJHdlaWdodDtcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3I7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG5cbiAgICBAZm9yICRpIGZyb20gMiB0aHJvdWdoICRiYXJzIHtcbiAgICAgICRvZmZzZXQ6ICgkd2VpZ2h0ICsgJHNwYWNpbmcpICogKCRpIC0gMSk7XG4gICAgICAkc2hhZG93OiBhcHBlbmQoJHNoYWRvdywgMCAkb2Zmc2V0IDAgJGNvbG9yLCBjb21tYSk7XG4gICAgfVxuXG4gICAgYm94LXNoYWRvdzogJHNoYWRvdztcbiAgfVxuXG4gIC8vIEhvdmVyIHN0YXRlXG4gIEBpZiAkY29sb3ItaG92ZXIge1xuICAgIC8vIEdlbmVyYXRlIENTU1xuICAgIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJGJhcnMge1xuICAgICAgJG9mZnNldDogKCR3ZWlnaHQgKyAkc3BhY2luZykgKiAoJGkgLSAxKTtcbiAgICAgICRob3Zlci1zaGFkb3c6IGFwcGVuZCgkaG92ZXItc2hhZG93LCAwICRvZmZzZXQgMCAkY29sb3ItaG92ZXIsIGNvbW1hKTtcbiAgICB9XG5cbiAgICAmOmhvdmVyOjphZnRlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItaG92ZXI7XG4gICAgICBib3gtc2hhZG93OiAkaG92ZXItc2hhZG93O1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBhIGRvd253YXJkLWZhY2luZyB0cmlhbmdsZSBhcyBhIGJhY2tncm91bmQgaW1hZ2UgdG8gYW4gZWxlbWVudC4gVGhlIGltYWdlIGlzIGZvcm1hdHRlZCBhcyBhbiBTVkcsIG1ha2luZyBpdCBlYXN5IHRvIGNoYW5nZSB0aGUgY29sb3IuIEJlY2F1c2UgSW50ZXJuZXQgRXhwbG9yZXIgZG9lc24ndCBzdXBwb3J0IGVuY29kZWQgU1ZHcyBhcyBiYWNrZ3JvdW5kIGltYWdlcywgYSBQTkcgZmFsbGJhY2sgaXMgYWxzbyBpbmNsdWRlZC5cbi8vLyBUaGVyZSBhcmUgdHdvIFBORyBmYWxsYmFja3M6IGEgYmxhY2sgdHJpYW5nbGUgYW5kIGEgd2hpdGUgdHJpYW5nbGUuIFRoZSBvbmUgdXNlZCBkZXBlbmRzIG9uIHRoZSBsaWdodG5lc3Mgb2YgdGhlIGlucHV0IGNvbG9yLlxuLy8vXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskYmxhY2tdIC0gQ29sb3IgdG8gdXNlIGZvciB0aGUgdHJpYW5nbGUuXG5AbWl4aW4gYmFja2dyb3VuZC10cmlhbmdsZSgkY29sb3I6ICRibGFjaykge1xuICAkcmdiOiAncmdiJTI4I3tyb3VuZChyZWQoJGNvbG9yKSl9LCAje3JvdW5kKGdyZWVuKCRjb2xvcikpfSwgI3tyb3VuZChibHVlKCRjb2xvcikpfSUyOSc7XG5cbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZlcnNpb249JzEuMScgd2lkdGg9JzMyJyBoZWlnaHQ9JzI0JyB2aWV3Qm94PScwIDAgMzIgMjQnPjxwb2x5Z29uIHBvaW50cz0nMCwwIDMyLDAgMTYsMjQnIHN0eWxlPSdmaWxsOiAjeyRyZ2J9Jz48L3BvbHlnb24+PC9zdmc+XCIpO1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6MFxcMCkge1xuICAgIEBpZiBsaWdodG5lc3MoJGNvbG9yKSA8IDYwJSB7XG4gICAgICAvLyBXaGl0ZSB0cmlhbmdsZVxuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQVlDQVlBQUFDYlUvODBBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQUlwSlJFRlVlTnJFa2NrTmdEQU1CQmZSa0V0ME9iUkJCZHNHWFVEZ21RZks0WGhIMm04Y3pRQUF5MjdSM3RzdzRRZmUyeDh1T082b1lMYjZHbE9vcjNHRitzd1VSQU9tVUorUnd0RUpzOVd2VEdFWXhCWHFJMU1RQVpoQ2ZVUUtSekRNVmorVHdyQUlWNmp2U1VFa1lBcjFMU2tjeVRCYi9WK0tZZlg3eEFldXNxM3NMRHRHSDNrRUdBQ1BXSWZsTlpmaFJRQUFBQUJKUlU1RXJrSmdnZz09Jyk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIC8vIEJsYWNrIHRyaWFuZ2xlXG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBWUNBWUFBQUNiVS84MEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBTUJKUkVGVWVOckVsbHNPaENBTVJWc3pDOUlselU3S0NtVkhUSnNvTVdZTVV0cHl2OUJnYnVYUUI1WlNkZ0JZWVk0eWNnQml2azhLWUZzUU1mTWlUVEJQNG8zblV6Q0t6T2FiTEpiTHkyL2czMWV2R2tBZ2luUjQvWmVnS0g1cVgzYkpDc2NBM3QweDNrZ081dFFGeWhoRmY1MHhScUZMYnlNVU5KUXpneWpHUy93Z0Nwdktxa1JCcHVXckU0VjlkKzFFNGRQVVhxSWcxMDdTUU9FLzJEUlF4TXdURHlnSUluVkRFVDlUM2xDb2ovNmovVkNtR2paT2wybEtwWjhBQXdEUVA3eklpbURHRlFBQUFBQkpSVTVFcmtKZ2dnPT0nKTtcbiAgICB9XG4gIH1cbn1cblxuLy8vIEFwcGxpZXMgdGhlIG1pY3JvIGNsZWFyZml4IGhhY2sgcG9wdWxhcml6ZWQgYnkgTmljb2xhcyBHYWxsYWdoZXIuIEluY2x1ZGUgdGhpcyBtaXhpbiBvbiBhIGNvbnRhaW5lciBpZiBpdHMgY2hpbGRyZW4gYXJlIGFsbCBmbG9hdGVkLCB0byBnaXZlIHRoZSBjb250YWluZXIgYSBwcm9wZXIgaGVpZ2h0LlxuLy8vIFRoZSBjbGVhcmZpeCBpcyBhdWdtZW50ZWQgd2l0aCBzcGVjaWZpYyBzdHlsZXMgdG8gcHJldmVudCBib3JkZXJzIGluIGZsZXhib3ggZW52aXJvbm1lbnRzXG4vLy8gQGxpbmsgaHR0cDovL25pY29sYXNnYWxsYWdoZXIuY29tL21pY3JvLWNsZWFyZml4LWhhY2svIE1pY3JvIENsZWFyZml4IEhhY2tcbi8vLyBAbGluayBodHRwOi8vZGFuaXNhZGVzaWduZXIuY29tL2Jsb2cvZmxleGJveC1jbGVhci1maXgtcHNldWRvLWVsZW1lbnRzLyBGbGV4Ym94IGZpeFxuQG1peGluIGNsZWFyZml4IHtcbiAgJjo6YmVmb3JlLFxuICAmOjphZnRlciB7XG4gICAgY29udGVudDogJyAnO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZmxleC1iYXNpczogMDtcbiAgICAgIG9yZGVyOiAxO1xuICAgIH1cbiAgfVxuXG4gICY6OmFmdGVyIHtcbiAgICBjbGVhcjogYm90aDtcbiAgfVxufVxuXG4vLy8gQWRkcyBDU1MgZm9yIGEgXCJxdWFudGl0eSBxdWVyeVwiIHNlbGVjdG9yIHRoYXQgYXV0b21hdGljYWxseSBzaXplcyBlbGVtZW50cyBiYXNlZCBvbiBob3cgbWFueSB0aGVyZSBhcmUgaW5zaWRlIGEgY29udGFpbmVyLlxuLy8vIEBsaW5rIGh0dHA6Ly9hbGlzdGFwYXJ0LmNvbS9hcnRpY2xlL3F1YW50aXR5LXF1ZXJpZXMtZm9yLWNzcyBRdWFudGl0eSBRdWVyaWVzIGZvciBDU1Ncbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbWF4IC0gTWF4aW11bSBudW1iZXIgb2YgaXRlbXMgdG8gZGV0ZWN0LiBUaGUgaGlnaGVyIHRoaXMgbnVtYmVyIGlzLCB0aGUgbW9yZSBDU1MgdGhhdCdzIHJlcXVpcmVkIHRvIGNvdmVyIGVhY2ggbnVtYmVyIG9mIGl0ZW1zLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGVsZW0gW2xpXSAtIFRhZyB0byB1c2UgZm9yIHNpYmxpbmcgc2VsZWN0b3JzLlxuQG1peGluIGF1dG8td2lkdGgoJG1heCwgJGVsZW06IGxpKSB7XG4gIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJG1heCB7XG4gICAgJjpudGgtbGFzdC1jaGlsZCgjeyRpfSk6Zmlyc3QtY2hpbGQsXG4gICAgJjpudGgtbGFzdC1jaGlsZCgjeyRpfSk6Zmlyc3QtY2hpbGQgfiAjeyRlbGVtfSB7XG4gICAgICB3aWR0aDogcGVyY2VudGFnZSgxIC8gJGkpO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gUmVtb3ZlcyB0aGUgZm9jdXMgcmluZyBhcm91bmQgYW4gZWxlbWVudCB3aGVuIGEgbW91c2UgaW5wdXQgaXMgZGV0ZWN0ZWQuXG5AbWl4aW4gZGlzYWJsZS1tb3VzZS1vdXRsaW5lIHtcbiAgW2RhdGEtd2hhdGlucHV0PSdtb3VzZSddICYge1xuICAgIG91dGxpbmU6IDA7XG4gIH1cbn1cblxuLy8vIE1ha2VzIGFuIGVsZW1lbnQgdmlzdWFsbHkgaGlkZGVuLCBidXQgc3RpbGwgYWNjZXNzaWJsZSB0byBrZXlib2FyZHMgYW5kIGFzc2lzdGl2ZSBkZXZpY2VzLlxuLy8vIEBsaW5rIGh0dHA6Ly9zbm9vay5jYS9hcmNoaXZlcy9odG1sX2FuZF9jc3MvaGlkaW5nLWNvbnRlbnQtZm9yLWFjY2Vzc2liaWxpdHkgSGlkaW5nIENvbnRlbnQgZm9yIEFjY2Vzc2liaWxpdHlcbkBtaXhpbiBlbGVtZW50LWludmlzaWJsZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xuICB3aWR0aDogMXB4O1xuICBoZWlnaHQ6IDFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTtcbn1cblxuLy8vIFJldmVyc2VzIHRoZSBDU1Mgb3V0cHV0IGNyZWF0ZWQgYnkgdGhlIGBlbGVtZW50LWludmlzaWJsZSgpYCBtaXhpbi5cbkBtaXhpbiBlbGVtZW50LWludmlzaWJsZS1vZmYge1xuICBwb3NpdGlvbjogc3RhdGljICFpbXBvcnRhbnQ7XG4gIGhlaWdodDogYXV0bztcbiAgd2lkdGg6IGF1dG87XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xuICBjbGlwOiBhdXRvO1xufVxuXG4vLy8gVmVydGljYWxseSBjZW50ZXJzIHRoZSBlbGVtZW50IGluc2lkZSBvZiBpdHMgZmlyc3Qgbm9uLXN0YXRpYyBwYXJlbnQsXG4vLy8gQGxpbmsgaHR0cDovL3d3dy5zaXRlcG9pbnQuY29tL2NlbnRlcmluZy13aXRoLXNhc3MvIENlbnRlcmluZyBXaXRoIFNhc3NcbkBtaXhpbiB2ZXJ0aWNhbC1jZW50ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG59XG5cbi8vLyBIb3Jpem9udGFsbHkgY2VudGVycyB0aGUgZWxlbWVudCBpbnNpZGUgb2YgaXRzIGZpcnN0IG5vbi1zdGF0aWMgcGFyZW50LFxuLy8vIEBsaW5rIGh0dHA6Ly93d3cuc2l0ZXBvaW50LmNvbS9jZW50ZXJpbmctd2l0aC1zYXNzLyBDZW50ZXJpbmcgV2l0aCBTYXNzXG5AbWl4aW4gaG9yaXpvbnRhbC1jZW50ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xufVxuXG4vLy8gQWJzb2x1dGVseSBjZW50ZXJzIHRoZSBlbGVtZW50IGluc2lkZSBvZiBpdHMgZmlyc3Qgbm9uLXN0YXRpYyBwYXJlbnQsXG4vLy8gQGxpbmsgaHR0cDovL3d3dy5zaXRlcG9pbnQuY29tL2NlbnRlcmluZy13aXRoLXNhc3MvIENlbnRlcmluZyBXaXRoIFNhc3NcbkBtaXhpbiBhYnNvbHV0ZS1jZW50ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xufVxuXG4vLy8gSXRlcmF0ZXMgdGhyb3VnaCBicmVha3BvaW50cyBkZWZpbmVkIGluIGAkYnJlYWtwb2ludC1jbGFzc2VzYCBhbmQgcHJpbnRzIHRoZSBDU1MgaW5zaWRlIHRoZSBtaXhpbiBhdCBlYWNoIGJyZWFrcG9pbnQncyBtZWRpYSBxdWVyeS4gVXNlIHRoaXMgd2l0aCB0aGUgZ3JpZCwgb3IgYW55IG90aGVyIGNvbXBvbmVudCB0aGF0IGhhcyByZXNwb25zaXZlIGNsYXNzZXMuXG4vLy9cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRzbWFsbCBbdHJ1ZV0gLSBJZiBgZmFsc2VgLCB0aGUgbWl4aW4gd2lsbCBza2lwIHRoZSBgc21hbGxgIGJyZWFrcG9pbnQuIFVzZSB0aGlzIHdpdGggY29tcG9uZW50cyB0aGF0IGRvbid0IHByZWZpeCBjbGFzc2VzIHdpdGggYHNtYWxsLWAsIG9ubHkgYG1lZGl1bS1gIGFuZCB1cC5cbkBtaXhpbiAtemYtZWFjaC1icmVha3BvaW50KCRzbWFsbDogdHJ1ZSkge1xuICAkbWFwOiAkYnJlYWtwb2ludC1jbGFzc2VzO1xuXG4gIEBpZiBub3QgJHNtYWxsIHtcbiAgICAkbWFwOiBtYXAtcmVtb3ZlKCRtYXAsICQtemYtemVyby1icmVha3BvaW50KTtcbiAgfVxuXG4gIEBlYWNoICRzaXplIGluICRtYXAge1xuICAgICQtemYtc2l6ZTogJHNpemUgIWdsb2JhbDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuIiwiLyoqXG4gKiBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4gKiBWZXJzaW9uIDYuMi40XG4gKiBmb3VuZGF0aW9uLnp1cmIuY29tXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcbiAqL1xuXG4vLyBTYXNzIHV0aWxpdGllc1xuQGltcG9ydCAndXRpbC91dGlsJztcblxuLy8gR2xvYmFsIHZhcmlhYmxlcyBhbmQgc3R5bGVzXG5AaW1wb3J0ICdnbG9iYWwnO1xuXG4vLyBDb21wb25lbnRzXG5AaW1wb3J0ICdncmlkL2dyaWQnO1xuQGltcG9ydCAndHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkBpbXBvcnQgJ2Zvcm1zL2Zvcm1zJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdmlzaWJpbGl0eSc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2Zsb2F0JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYnV0dG9uJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYnV0dG9uLWdyb3VwJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYWNjb3JkaW9uLW1lbnUnO1xuQGltcG9ydCAnY29tcG9uZW50cy9hY2NvcmRpb24nO1xuQGltcG9ydCAnY29tcG9uZW50cy9iYWRnZSc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2JyZWFkY3J1bWJzJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvY2FsbG91dCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2Nsb3NlLWJ1dHRvbic7XG5AaW1wb3J0ICdjb21wb25lbnRzL2RyaWxsZG93bic7XG5AaW1wb3J0ICdjb21wb25lbnRzL2Ryb3Bkb3duLW1lbnUnO1xuQGltcG9ydCAnY29tcG9uZW50cy9kcm9wZG93bic7XG5AaW1wb3J0ICdjb21wb25lbnRzL2ZsZXgnO1xuQGltcG9ydCAnY29tcG9uZW50cy9mbGV4LXZpZGVvJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvbGFiZWwnO1xuQGltcG9ydCAnY29tcG9uZW50cy9tZWRpYS1vYmplY3QnO1xuQGltcG9ydCAnY29tcG9uZW50cy9tZW51JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvbWVudS1pY29uJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvb2ZmLWNhbnZhcyc7XG5AaW1wb3J0ICdjb21wb25lbnRzL29yYml0JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvcGFnaW5hdGlvbic7XG5AaW1wb3J0ICdjb21wb25lbnRzL3Byb2dyZXNzLWJhcic7XG5AaW1wb3J0ICdjb21wb25lbnRzL3JldmVhbCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3NsaWRlcic7XG5AaW1wb3J0ICdjb21wb25lbnRzL3N0aWNreSc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3N3aXRjaCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3RhYmxlJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdGFicyc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3RpdGxlLWJhcic7XG5AaW1wb3J0ICdjb21wb25lbnRzL3RvcC1iYXInO1xuQGltcG9ydCAnY29tcG9uZW50cy90aHVtYm5haWwnO1xuQGltcG9ydCAnY29tcG9uZW50cy90b29sdGlwJztcblxuQG1peGluIGZvdW5kYXRpb24tZXZlcnl0aGluZygkZmxleDogZmFsc2UpIHtcbiAgQGlmICRmbGV4IHtcbiAgICAkZ2xvYmFsLWZsZXhib3g6IHRydWUgIWdsb2JhbDtcbiAgfVxuXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZ2xvYmFsLXN0eWxlcztcbiAgQGlmIG5vdCAkZmxleCB7XG4gICAgQGluY2x1ZGUgZm91bmRhdGlvbi1ncmlkO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZsZXgtZ3JpZDtcbiAgfVxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXR5cG9ncmFwaHk7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZm9ybXM7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tYnV0dG9uO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWFjY29yZGlvbjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1hY2NvcmRpb24tbWVudTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1iYWRnZTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1icmVhZGNydW1icztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1idXR0b24tZ3JvdXA7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tY2FsbG91dDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1jbG9zZS1idXR0b247XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tbWVudTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1tZW51LWljb247XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZHJpbGxkb3duLW1lbnU7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZHJvcGRvd247XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZHJvcGRvd24tbWVudTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mbGV4LXZpZGVvO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWxhYmVsO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLW1lZGlhLW9iamVjdDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1vZmYtY2FudmFzO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLW9yYml0O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXBhZ2luYXRpb247XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvZ3Jlc3MtYmFyO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXNsaWRlcjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1zdGlja3k7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcmV2ZWFsO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXN3aXRjaDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10YWJsZTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10YWJzO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXRodW1ibmFpbDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10aXRsZS1iYXI7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdG9vbHRpcDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10b3AtYmFyO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXZpc2liaWxpdHktY2xhc3NlcztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mbG9hdC1jbGFzc2VzO1xuXG4gIEBpZiAkZmxleCB7XG4gICAgQGluY2x1ZGUgZm91bmRhdGlvbi1mbGV4LWNsYXNzZXM7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG5AaW1wb3J0ICd1bml0JztcbkBpbXBvcnQgJ3ZhbHVlJztcbkBpbXBvcnQgJ2NvbG9yJztcbkBpbXBvcnQgJ3NlbGVjdG9yJztcbkBpbXBvcnQgJ2ZsZXgnO1xuQGltcG9ydCAnYnJlYWtwb2ludCc7XG5AaW1wb3J0ICdtaXhpbnMnO1xuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vIHNjc3MtbGludDpkaXNhYmxlIENvbG9yVmFyaWFibGUsIFF1YWxpZnlpbmdFbGVtZW50LCBWZW5kb3JQcmVmaXhcblxuLy8vL1xuLy8vIEBncm91cCBnbG9iYWxcbi8vLy9cblxuLy8vIEZvbnQgc2l6ZSBhdHRyaWJ1dGUgYXBwbGllZCB0byBgPGh0bWw+YCBhbmQgYDxib2R5PmAuIFdlIHVzZSAxMDAlIGJ5IGRlZmF1bHQgc28gdGhlIHZhbHVlIGlzIGluaGVyaXRlZCBmcm9tIHRoZSB1c2VyJ3MgYnJvd3NlciBzZXR0aW5ncy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRnbG9iYWwtZm9udC1zaXplOiAxMDAlICFkZWZhdWx0O1xuXG4vLy8gR2xvYmFsIHdpZHRoIG9mIHlvdXIgc2l0ZS4gVXNlZCBieSB0aGUgZ3JpZCB0byBkZXRlcm1pbmUgcm93IHdpZHRoLlxuLy8vIEB0eXBlIE51bWJlclxuJGdsb2JhbC13aWR0aDogcmVtLWNhbGMoMTIwMCkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGxpbmUgaGVpZ2h0IGZvciBhbGwgdHlwZS4gYCRnbG9iYWwtbGluZWhlaWdodGAgaXMgMjRweCB3aGlsZSBgJGdsb2JhbC1mb250LXNpemVgIGlzIDE2cHhcbi8vLyBAdHlwZSBOdW1iZXJcbiRnbG9iYWwtbGluZWhlaWdodDogMS41ICFkZWZhdWx0O1xuXG4vLy8gQ29sb3JzIHVzZWQgZm9yIGJ1dHRvbnMsIGNhbGxvdXRzLCBsaW5rcywgZXRjLiBUaGVyZSBtdXN0IGFsd2F5cyBiZSBhIGNvbG9yIGNhbGxlZCBgcHJpbWFyeWAuXG4vLy8gQHR5cGUgTWFwXG4kZm91bmRhdGlvbi1wYWxldHRlOiAoXG4gIHByaW1hcnk6ICMyMTk5ZTgsXG4gIHNlY29uZGFyeTogIzc3NyxcbiAgc3VjY2VzczogIzNhZGI3NixcbiAgd2FybmluZzogI2ZmYWUwMCxcbiAgYWxlcnQ6ICNlYzU4NDAsXG4pICFkZWZhdWx0O1xuXG4vLy8gQ29sb3IgdXNlZCBmb3IgbGlnaHQgZ3JheSBVSSBpdGVtcy5cbi8vLyBAdHlwZSBDb2xvclxuJGxpZ2h0LWdyYXk6ICNlNmU2ZTYgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciB1c2VkIGZvciBtZWRpdW0gZ3JheSBVSSBpdGVtcy5cbi8vLyBAdHlwZSBDb2xvclxuJG1lZGl1bS1ncmF5OiAjY2FjYWNhICFkZWZhdWx0O1xuXG4vLy8gQ29sb3IgdXNlZCBmb3IgZGFyayBncmF5IFVJIGl0ZW1zLlxuLy8vIEB0eXBlIENvbG9yXG4kZGFyay1ncmF5OiAjOGE4YThhICFkZWZhdWx0O1xuXG4vLy8gQ29sb3IgdXNlZCBmb3IgYmxhY2sgdWkgaXRlbXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRibGFjazogIzBhMGEwYSAhZGVmYXVsdDtcblxuLy8vIENvbG9yIHVzZWQgZm9yIHdoaXRlIHVpIGl0ZW1zLlxuLy8vIEB0eXBlIENvbG9yXG4kd2hpdGU6ICNmZWZlZmUgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBib2R5LlxuLy8vIEB0eXBlIENvbG9yXG4kYm9keS1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBUZXh0IGNvbG9yIG9mIHRoZSBib2R5LlxuLy8vIEB0eXBlIENvbG9yXG4kYm9keS1mb250LWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHN0YWNrIG9mIHRoZSBib2R5LlxuLy8vIEB0eXBlIExpc3RcbiRib2R5LWZvbnQtZmFtaWx5OiAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIFJvYm90bywgQXJpYWwsIHNhbnMtc2VyaWYgIWRlZmF1bHQ7XG5cbi8vLyBTZXQgdG8gYHRydWVgIHRvIGVuYWJsZSBhbnRpYWxpYXNlZCB0eXBlLCB1c2luZyB0aGUgYC13ZWJraXQtZm9udC1zbW9vdGhpbmdgIGFuZCBgLW1vei1vc3gtZm9udC1zbW9vdGhpbmdgIENTUyBwcm9wZXJ0aWVzLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRib2R5LWFudGlhbGlhc2VkOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gR2xvYmFsIHZhbHVlIHVzZWQgZm9yIG1hcmdpbiBvbiBjb21wb25lbnRzLlxuLy8vIEB0eXBlIE51bWJlclxuJGdsb2JhbC1tYXJnaW46IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgdmFsdWUgdXNlZCBmb3IgcGFkZGluZyBvbiBjb21wb25lbnRzLlxuLy8vIEB0eXBlIE51bWJlclxuJGdsb2JhbC1wYWRkaW5nOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gR2xvYmFsIGZvbnQgd2VpZ2h0IHVzZWQgZm9yIG5vcm1hbCB0eXBlLlxuLy8vIEB0eXBlIEtleXdvcmQgfCBOdW1iZXJcbiRnbG9iYWwtd2VpZ2h0LW5vcm1hbDogbm9ybWFsICFkZWZhdWx0O1xuXG4vLy8gR2xvYmFsIGZvbnQgd2VpZ2h0IHVzZWQgZm9yIGJvbGQgdHlwZS5cbi8vLyBAdHlwZSBLZXl3b3JkIHwgTnVtYmVyXG4kZ2xvYmFsLXdlaWdodC1ib2xkOiBib2xkICFkZWZhdWx0O1xuXG4vLy8gR2xvYmFsIHZhbHVlIHVzZWQgZm9yIGFsbCBlbGVtZW50cyB0aGF0IGhhdmUgYSBib3JkZXIgcmFkaXVzLlxuLy8vIEB0eXBlIE51bWJlclxuJGdsb2JhbC1yYWRpdXM6IDAgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIHRoZSB0ZXh0IGRpcmVjdGlvbiBvZiB0aGUgQ1NTLiBDYW4gYmUgZWl0aGVyIGBsdHJgIG9yIGBydGxgLlxuLy8vIEB0eXBlIEtleXdvcmRcbiRnbG9iYWwtdGV4dC1kaXJlY3Rpb246IGx0ciAhZGVmYXVsdDtcblxuLy8vIEVuYWJsZXMgZmxleGJveCBmb3IgY29tcG9uZW50cyB0aGF0IHN1cHBvcnQgaXQuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGdsb2JhbC1mbGV4Ym94OiBmYWxzZSAhZGVmYXVsdDtcblxuQGlmIG5vdCBtYXAtaGFzLWtleSgkZm91bmRhdGlvbi1wYWxldHRlLCBwcmltYXJ5KSB7XG4gIEBlcnJvciAnSW4gJGZvdW5kYXRpb24tcGFsZXR0ZSwgeW91IG11c3QgaGF2ZSBhIGNvbG9yIG5hbWVkIFwicHJpbWFyeVwiLic7XG59XG5cbi8vIEludGVybmFsIHZhcmlhYmxlcyB1c2VkIGZvciB0ZXh0IGRpcmVjdGlvblxuJGdsb2JhbC1sZWZ0OiBpZigkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09IHJ0bCwgcmlnaHQsIGxlZnQpO1xuJGdsb2JhbC1yaWdodDogaWYoJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSBydGwsIGxlZnQsIHJpZ2h0KTtcblxuLy8gSW50ZXJuYWwgdmFyaWFibGVzIHVzZWQgZm9yIGNvbG9yc1xuJHByaW1hcnktY29sb3I6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgcHJpbWFyeSk7XG4kc2Vjb25kYXJ5LWNvbG9yOiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHNlY29uZGFyeSk7XG4kc3VjY2Vzcy1jb2xvcjogbWFwLWdldCgkZm91bmRhdGlvbi1wYWxldHRlLCBzdWNjZXNzKTtcbiR3YXJuaW5nLWNvbG9yOiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHdhcm5pbmcpO1xuJGFsZXJ0LWNvbG9yOiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsIGFsZXJ0KTtcblxuLy8gUmVtb3ZlIHRoaXMgaW4gNi4zXG4kLXpmLW1lbnUtaWNvbi1pbXBvcnRlZDogZmFsc2U7XG4kLXpmLWZsZXgtY2xhc3Nlcy1pbXBvcnRlZDogZmFsc2U7XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWdsb2JhbC1zdHlsZXMge1xuICBAaW5jbHVkZSAtemYtbm9ybWFsaXplO1xuXG4gIC8vIFRoZXNlIHN0eWxlcyBhcmUgYXBwbGllZCB0byBhIDxtZXRhPiB0YWcsIHdoaWNoIGlzIHJlYWQgYnkgdGhlIEZvdW5kYXRpb24gSmF2YVNjcmlwdFxuICAuZm91bmRhdGlvbi1tcSB7XG4gICAgZm9udC1mYW1pbHk6ICcjey16Zi1icC1zZXJpYWxpemUoJGJyZWFrcG9pbnRzKX0nO1xuICB9XG5cbiAgaHRtbCB7XG4gICAgZm9udC1zaXplOiAkZ2xvYmFsLWZvbnQtc2l6ZTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG5cbiAgLy8gU2V0IGJveC1zaXppbmcgZ2xvYmFsbHkgdG8gaGFuZGxlIHBhZGRpbmcgYW5kIGJvcmRlciB3aWR0aHNcbiAgKixcbiAgKjo6YmVmb3JlLFxuICAqOjphZnRlciB7XG4gICAgYm94LXNpemluZzogaW5oZXJpdDtcbiAgfVxuXG4gIC8vIERlZmF1bHQgYm9keSBzdHlsZXNcbiAgYm9keSB7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgZm9udC1mYW1pbHk6ICRib2R5LWZvbnQtZmFtaWx5O1xuICAgIGZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWw7XG4gICAgbGluZS1oZWlnaHQ6ICRnbG9iYWwtbGluZWhlaWdodDtcbiAgICBjb2xvcjogJGJvZHktZm9udC1jb2xvcjtcbiAgICBiYWNrZ3JvdW5kOiAkYm9keS1iYWNrZ3JvdW5kO1xuXG4gICAgQGlmICgkYm9keS1hbnRpYWxpYXNlZCkge1xuICAgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICAgIH1cbiAgfVxuXG4gIGltZyB7XG4gICAgLy8gR3JpZCBkZWZhdWx0cyB0byBnZXQgaW1hZ2VzIGFuZCBlbWJlZHMgdG8gd29yayBwcm9wZXJseVxuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgLW1zLWludGVycG9sYXRpb24tbW9kZTogYmljdWJpYztcblxuICAgIC8vIEdldCByaWQgb2YgZ2FwIHVuZGVyIGltYWdlcyBieSBtYWtpbmcgdGhlbSBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGJ5IGRlZmF1bHRcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgfVxuXG4gIC8vIE1ha2Ugc3VyZSB0ZXh0YXJlYSB0YWtlcyBvbiBoZWlnaHQgYXV0b21hdGljYWxseVxuICB0ZXh0YXJlYSB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIG1pbi1oZWlnaHQ6IDUwcHg7XG4gICAgYm9yZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gIH1cblxuICAvLyBNYWtlIHNlbGVjdCBlbGVtZW50cyBhcmUgMTAwJSB3aWR0aCBieSBkZWZhdWx0XG4gIHNlbGVjdCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm9yZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gIH1cblxuICAvLyBTdHlsZXMgR29vZ2xlIE1hcHMgYW5kIE1hcFF1ZXN0IGVtYmVkcyBwcm9wZXJseVxuICAvLyBzY3NzLWxpbnQ6ZGlzYWJsZSBJZFNlbGVjdG9yXG4gICNtYXBfY2FudmFzLFxuICAubWFwX2NhbnZhcyxcbiAgLm1xYS1kaXNwbGF5IHtcbiAgICBpbWcsXG4gICAgZW1iZWQsXG4gICAgb2JqZWN0IHtcbiAgICAgIG1heC13aWR0aDogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuXG4gIC8vIFJlc2V0IDxidXR0b24+IHN0eWxlcyBjcmVhdGVkIGJ5IG1vc3QgYnJvd3NlcnNcbiAgYnV0dG9uIHtcbiAgICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGJvcmRlcjogMDtcbiAgICBib3JkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgfVxuXG4gIC8vIEludGVybmFsIGNsYXNzZXMgdG8gc2hvdy9oaWRlIGVsZW1lbnRzIGluIEphdmFTY3JpcHRcbiAgLmlzLXZpc2libGUge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gIH1cblxuICAuaXMtaGlkZGVuIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLy8vIExvYWRzIG5vcm1hbGl6ZS5jc3MuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5AbWl4aW4gLXpmLW5vcm1hbGl6ZSB7XG4gIC8qISBub3JtYWxpemUuY3NzIHYzLjAuMyB8IE1JVCBMaWNlbnNlIHwgZ2l0aHViLmNvbS9uZWNvbGFzL25vcm1hbGl6ZS5jc3MgKi9cblxuICAvKipcbiAgICogMS4gU2V0IGRlZmF1bHQgZm9udCBmYW1pbHkgdG8gc2Fucy1zZXJpZi5cbiAgICogMi4gUHJldmVudCBpT1MgYW5kIElFIHRleHQgc2l6ZSBhZGp1c3QgYWZ0ZXIgZGV2aWNlIG9yaWVudGF0aW9uIGNoYW5nZSxcbiAgICogICAgd2l0aG91dCBkaXNhYmxpbmcgdXNlciB6b29tLlxuICAgKi9cblxuICBodG1sIHtcbiAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsgLyogMSAqL1xuICAgIC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAyICovXG4gICAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAyICovXG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGRlZmF1bHQgbWFyZ2luLlxuICAgKi9cblxuICBib2R5IHtcbiAgICBtYXJnaW46IDA7XG4gIH1cblxuICAvKiBIVE1MNSBkaXNwbGF5IGRlZmluaXRpb25zXG4gICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiAgLyoqXG4gICAqIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGZvciBhbnkgSFRNTDUgZWxlbWVudCBpbiBJRSA4LzkuXG4gICAqIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGZvciBgZGV0YWlsc2Agb3IgYHN1bW1hcnlgIGluIElFIDEwLzExXG4gICAqIGFuZCBGaXJlZm94LlxuICAgKiBDb3JyZWN0IGBibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBmb3IgYG1haW5gIGluIElFIDExLlxuICAgKi9cblxuICBhcnRpY2xlLFxuICBhc2lkZSxcbiAgZGV0YWlscyxcbiAgZmlnY2FwdGlvbixcbiAgZmlndXJlLFxuICBmb290ZXIsXG4gIGhlYWRlcixcbiAgaGdyb3VwLFxuICBtYWluLFxuICBtZW51LFxuICBuYXYsXG4gIHNlY3Rpb24sXG4gIHN1bW1hcnkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgLyoqXG4gICAqIDEuIENvcnJlY3QgYGlubGluZS1ibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBpbiBJRSA4LzkuXG4gICAqIDIuIE5vcm1hbGl6ZSB2ZXJ0aWNhbCBhbGlnbm1lbnQgb2YgYHByb2dyZXNzYCBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBPcGVyYS5cbiAgICovXG5cbiAgYXVkaW8sXG4gIGNhbnZhcyxcbiAgcHJvZ3Jlc3MsXG4gIHZpZGVvIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IC8qIDEgKi9cbiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IC8qIDIgKi9cbiAgfVxuXG4gIC8qKlxuICAgKiBQcmV2ZW50IG1vZGVybiBicm93c2VycyBmcm9tIGRpc3BsYXlpbmcgYGF1ZGlvYCB3aXRob3V0IGNvbnRyb2xzLlxuICAgKiBSZW1vdmUgZXhjZXNzIGhlaWdodCBpbiBpT1MgNSBkZXZpY2VzLlxuICAgKi9cblxuICBhdWRpbzpub3QoW2NvbnRyb2xzXSkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgaGVpZ2h0OiAwO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHJlc3MgYFtoaWRkZW5dYCBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS8xMC5cbiAgICogSGlkZSB0aGUgYHRlbXBsYXRlYCBlbGVtZW50IGluIElFIDgvOS8xMC8xMSwgU2FmYXJpLCBhbmQgRmlyZWZveCA8IDIyLlxuICAgKi9cblxuICBbaGlkZGVuXSxcbiAgdGVtcGxhdGUge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAvKiBMaW5rc1xuICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4gIC8qKlxuICAgKiBSZW1vdmUgdGhlIGdyYXkgYmFja2dyb3VuZCBjb2xvciBmcm9tIGFjdGl2ZSBsaW5rcyBpbiBJRSAxMC5cbiAgICovXG5cbiAgYSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIH1cblxuICAvKipcbiAgICogSW1wcm92ZSByZWFkYWJpbGl0eSBvZiBmb2N1c2VkIGVsZW1lbnRzIHdoZW4gdGhleSBhcmUgYWxzbyBpbiBhblxuICAgKiBhY3RpdmUvaG92ZXIgc3RhdGUuXG4gICAqL1xuXG4gIGE6YWN0aXZlLFxuICBhOmhvdmVyIHtcbiAgICBvdXRsaW5lOiAwO1xuICB9XG5cbiAgLyogVGV4dC1sZXZlbCBzZW1hbnRpY3NcbiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuICAvKipcbiAgICogQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS8xMC8xMSwgU2FmYXJpLCBhbmQgQ2hyb21lLlxuICAgKi9cblxuICBhYmJyW3RpdGxlXSB7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRyZXNzIHN0eWxlIHNldCB0byBgYm9sZGVyYCBpbiBGaXJlZm94IDQrLCBTYWZhcmksIGFuZCBDaHJvbWUuXG4gICAqL1xuXG4gIGIsXG4gIHN0cm9uZyB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIH1cblxuICAvKipcbiAgICogQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIFNhZmFyaSBhbmQgQ2hyb21lLlxuICAgKi9cblxuICBkZm4ge1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRyZXNzIHZhcmlhYmxlIGBoMWAgZm9udC1zaXplIGFuZCBtYXJnaW4gd2l0aGluIGBzZWN0aW9uYCBhbmQgYGFydGljbGVgXG4gICAqIGNvbnRleHRzIGluIEZpcmVmb3ggNCssIFNhZmFyaSwgYW5kIENocm9tZS5cbiAgICovXG5cbiAgaDEge1xuICAgIGZvbnQtc2l6ZTogMmVtO1xuICAgIG1hcmdpbjogMC42N2VtIDA7XG4gIH1cblxuICAvKipcbiAgICogQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS5cbiAgICovXG5cbiAgbWFyayB7XG4gICAgYmFja2dyb3VuZDogI2ZmMDtcbiAgICBjb2xvcjogIzAwMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRyZXNzIGluY29uc2lzdGVudCBhbmQgdmFyaWFibGUgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAgICovXG5cbiAgc21hbGwge1xuICAgIGZvbnQtc2l6ZTogODAlO1xuICB9XG5cbiAgLyoqXG4gICAqIFByZXZlbnQgYHN1YmAgYW5kIGBzdXBgIGFmZmVjdGluZyBgbGluZS1oZWlnaHRgIGluIGFsbCBicm93c2Vycy5cbiAgICovXG5cbiAgc3ViLFxuICBzdXAge1xuICAgIGZvbnQtc2l6ZTogNzUlO1xuICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG4gIH1cblxuICBzdXAge1xuICAgIHRvcDogLTAuNWVtO1xuICB9XG5cbiAgc3ViIHtcbiAgICBib3R0b206IC0wLjI1ZW07XG4gIH1cblxuICAvKiBFbWJlZGRlZCBjb250ZW50XG4gICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiAgLyoqXG4gICAqIFJlbW92ZSBib3JkZXIgd2hlbiBpbnNpZGUgYGFgIGVsZW1lbnQgaW4gSUUgOC85LzEwLlxuICAgKi9cblxuICBpbWcge1xuICAgIGJvcmRlcjogMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb3JyZWN0IG92ZXJmbG93IG5vdCBoaWRkZW4gaW4gSUUgOS8xMC8xMS5cbiAgICovXG5cbiAgc3ZnOm5vdCg6cm9vdCkge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gIH1cblxuICAvKiBHcm91cGluZyBjb250ZW50XG4gICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiAgLyoqXG4gICAqIEFkZHJlc3MgbWFyZ2luIG5vdCBwcmVzZW50IGluIElFIDgvOSBhbmQgU2FmYXJpLlxuICAgKi9cblxuICBmaWd1cmUge1xuICAgIG1hcmdpbjogMWVtIDQwcHg7XG4gIH1cblxuICAvKipcbiAgICogQWRkcmVzcyBkaWZmZXJlbmNlcyBiZXR3ZWVuIEZpcmVmb3ggYW5kIG90aGVyIGJyb3dzZXJzLlxuICAgKi9cblxuICBociB7XG4gICAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gICAgaGVpZ2h0OiAwO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnRhaW4gb3ZlcmZsb3cgaW4gYWxsIGJyb3dzZXJzLlxuICAgKi9cblxuICBwcmUge1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHJlc3Mgb2RkIGBlbWAtdW5pdCBmb250IHNpemUgcmVuZGVyaW5nIGluIGFsbCBicm93c2Vycy5cbiAgICovXG5cbiAgY29kZSxcbiAga2JkLFxuICBwcmUsXG4gIHNhbXAge1xuICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTtcbiAgICBmb250LXNpemU6IDFlbTtcbiAgfVxuXG4gIC8qIEZvcm1zXG4gICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiAgLyoqXG4gICAqIEtub3duIGxpbWl0YXRpb246IGJ5IGRlZmF1bHQsIENocm9tZSBhbmQgU2FmYXJpIG9uIE9TIFggYWxsb3cgdmVyeSBsaW1pdGVkXG4gICAqIHN0eWxpbmcgb2YgYHNlbGVjdGAsIHVubGVzcyBhIGBib3JkZXJgIHByb3BlcnR5IGlzIHNldC5cbiAgICovXG5cbiAgLyoqXG4gICAqIDEuIENvcnJlY3QgY29sb3Igbm90IGJlaW5nIGluaGVyaXRlZC5cbiAgICogICAgS25vd24gaXNzdWU6IGFmZmVjdHMgY29sb3Igb2YgZGlzYWJsZWQgZWxlbWVudHMuXG4gICAqIDIuIENvcnJlY3QgZm9udCBwcm9wZXJ0aWVzIG5vdCBiZWluZyBpbmhlcml0ZWQuXG4gICAqIDMuIEFkZHJlc3MgbWFyZ2lucyBzZXQgZGlmZmVyZW50bHkgaW4gRmlyZWZveCA0KywgU2FmYXJpLCBhbmQgQ2hyb21lLlxuICAgKi9cblxuICBidXR0b24sXG4gIGlucHV0LFxuICBvcHRncm91cCxcbiAgc2VsZWN0LFxuICB0ZXh0YXJlYSB7XG4gICAgY29sb3I6IGluaGVyaXQ7IC8qIDEgKi9cbiAgICBmb250OiBpbmhlcml0OyAvKiAyICovXG4gICAgbWFyZ2luOiAwOyAvKiAzICovXG4gIH1cblxuICAvKipcbiAgICogQWRkcmVzcyBgb3ZlcmZsb3dgIHNldCB0byBgaGlkZGVuYCBpbiBJRSA4LzkvMTAvMTEuXG4gICAqL1xuXG4gIGJ1dHRvbiB7XG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIH1cblxuICAvKipcbiAgICogQWRkcmVzcyBpbmNvbnNpc3RlbnQgYHRleHQtdHJhbnNmb3JtYCBpbmhlcml0YW5jZSBmb3IgYGJ1dHRvbmAgYW5kIGBzZWxlY3RgLlxuICAgKiBBbGwgb3RoZXIgZm9ybSBjb250cm9sIGVsZW1lbnRzIGRvIG5vdCBpbmhlcml0IGB0ZXh0LXRyYW5zZm9ybWAgdmFsdWVzLlxuICAgKiBDb3JyZWN0IGBidXR0b25gIHN0eWxlIGluaGVyaXRhbmNlIGluIEZpcmVmb3gsIElFIDgvOS8xMC8xMSwgYW5kIE9wZXJhLlxuICAgKiBDb3JyZWN0IGBzZWxlY3RgIHN0eWxlIGluaGVyaXRhbmNlIGluIEZpcmVmb3guXG4gICAqL1xuXG4gIGJ1dHRvbixcbiAgc2VsZWN0IHtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgfVxuXG4gIC8qKlxuICAgKiAxLiBBdm9pZCB0aGUgV2ViS2l0IGJ1ZyBpbiBBbmRyb2lkIDQuMC4qIHdoZXJlICgyKSBkZXN0cm95cyBuYXRpdmUgYGF1ZGlvYFxuICAgKiAgICBhbmQgYHZpZGVvYCBjb250cm9scy5cbiAgICogMi4gQ29ycmVjdCBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIGBpbnB1dGAgdHlwZXMgaW4gaU9TLlxuICAgKiAzLiBJbXByb3ZlIHVzYWJpbGl0eSBhbmQgY29uc2lzdGVuY3kgb2YgY3Vyc29yIHN0eWxlIGJldHdlZW4gaW1hZ2UtdHlwZVxuICAgKiAgICBgaW5wdXRgIGFuZCBvdGhlcnMuXG4gICAqL1xuXG4gIGJ1dHRvbixcbiAgaHRtbCBpbnB1dFt0eXBlPVwiYnV0dG9uXCJdLCAvKiAxICovXG4gIGlucHV0W3R5cGU9XCJyZXNldFwiXSxcbiAgaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSB7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247IC8qIDIgKi9cbiAgICBjdXJzb3I6IHBvaW50ZXI7IC8qIDMgKi9cbiAgfVxuXG4gIC8qKlxuICAgKiBSZS1zZXQgZGVmYXVsdCBjdXJzb3IgZm9yIGRpc2FibGVkIGVsZW1lbnRzLlxuICAgKi9cblxuICBidXR0b25bZGlzYWJsZWRdLFxuICBodG1sIGlucHV0W2Rpc2FibGVkXSB7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgaW5uZXIgcGFkZGluZyBhbmQgYm9yZGVyIGluIEZpcmVmb3ggNCsuXG4gICAqL1xuXG4gIGJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcbiAgaW5wdXQ6Oi1tb3otZm9jdXMtaW5uZXIge1xuICAgIGJvcmRlcjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHJlc3MgRmlyZWZveCA0KyBzZXR0aW5nIGBsaW5lLWhlaWdodGAgb24gYGlucHV0YCB1c2luZyBgIWltcG9ydGFudGAgaW5cbiAgICogdGhlIFVBIHN0eWxlc2hlZXQuXG4gICAqL1xuXG4gIGlucHV0IHtcbiAgICBsaW5lLWhlaWdodDogbm9ybWFsO1xuICB9XG5cbiAgLyoqXG4gICAqIEl0J3MgcmVjb21tZW5kZWQgdGhhdCB5b3UgZG9uJ3QgYXR0ZW1wdCB0byBzdHlsZSB0aGVzZSBlbGVtZW50cy5cbiAgICogRmlyZWZveCdzIGltcGxlbWVudGF0aW9uIGRvZXNuJ3QgcmVzcGVjdCBib3gtc2l6aW5nLCBwYWRkaW5nLCBvciB3aWR0aC5cbiAgICpcbiAgICogMS4gQWRkcmVzcyBib3ggc2l6aW5nIHNldCB0byBgY29udGVudC1ib3hgIGluIElFIDgvOS8xMC5cbiAgICogMi4gUmVtb3ZlIGV4Y2VzcyBwYWRkaW5nIGluIElFIDgvOS8xMC5cbiAgICovXG5cbiAgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdLFxuICBpbnB1dFt0eXBlPVwicmFkaW9cIl0ge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8qIDEgKi9cbiAgICBwYWRkaW5nOiAwOyAvKiAyICovXG4gIH1cblxuICAvKipcbiAgICogRml4IHRoZSBjdXJzb3Igc3R5bGUgZm9yIENocm9tZSdzIGluY3JlbWVudC9kZWNyZW1lbnQgYnV0dG9ucy4gRm9yIGNlcnRhaW5cbiAgICogYGZvbnQtc2l6ZWAgdmFsdWVzIG9mIHRoZSBgaW5wdXRgLCBpdCBjYXVzZXMgdGhlIGN1cnNvciBzdHlsZSBvZiB0aGVcbiAgICogZGVjcmVtZW50IGJ1dHRvbiB0byBjaGFuZ2UgZnJvbSBgZGVmYXVsdGAgdG8gYHRleHRgLlxuICAgKi9cblxuICBpbnB1dFt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuICBpbnB1dFt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cblxuICAvKipcbiAgICogMS4gQWRkcmVzcyBgYXBwZWFyYW5jZWAgc2V0IHRvIGBzZWFyY2hmaWVsZGAgaW4gU2FmYXJpIGFuZCBDaHJvbWUuXG4gICAqIDIuIEFkZHJlc3MgYGJveC1zaXppbmdgIHNldCB0byBgYm9yZGVyLWJveGAgaW4gU2FmYXJpIGFuZCBDaHJvbWUuXG4gICAqL1xuXG4gIGlucHV0W3R5cGU9XCJzZWFyY2hcIl0ge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkOyAvKiAxICovXG4gICAgYm94LXNpemluZzogY29udGVudC1ib3g7IC8qIDIgKi9cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgaW5uZXIgcGFkZGluZyBhbmQgc2VhcmNoIGNhbmNlbCBidXR0b24gaW4gU2FmYXJpIGFuZCBDaHJvbWUgb24gT1MgWC5cbiAgICogU2FmYXJpIChidXQgbm90IENocm9tZSkgY2xpcHMgdGhlIGNhbmNlbCBidXR0b24gd2hlbiB0aGUgc2VhcmNoIGlucHV0IGhhc1xuICAgKiBwYWRkaW5nIChhbmQgYHRleHRmaWVsZGAgYXBwZWFyYW5jZSkuXG4gICAqL1xuXG4gIGlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sXG4gIGlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmUgY29uc2lzdGVudCBib3JkZXIsIG1hcmdpbiwgYW5kIHBhZGRpbmcuXG4gICAqIFtOT1RFXSBXZSBkb24ndCBlbmFibGUgdGhpcyBydWxlc2V0IGluIEZvdW5kYXRpb24sIGJlY2F1c2Ugd2Ugd2FudCB0aGUgPGZpZWxkc2V0PiBlbGVtZW50IHRvIGhhdmUgcGxhaW4gc3R5bGluZy5cbiAgICovXG5cbiAgLyogZmllbGRzZXQge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNjMGMwYzA7XG4gICAgbWFyZ2luOiAwIDJweDtcbiAgICBwYWRkaW5nOiAwLjM1ZW0gMC42MjVlbSAwLjc1ZW07XG4gIH0gKi9cblxuICAvKipcbiAgICogMS4gQ29ycmVjdCBgY29sb3JgIG5vdCBiZWluZyBpbmhlcml0ZWQgaW4gSUUgOC85LzEwLzExLlxuICAgKiAyLiBSZW1vdmUgcGFkZGluZyBzbyBwZW9wbGUgYXJlbid0IGNhdWdodCBvdXQgaWYgdGhleSB6ZXJvIG91dCBmaWVsZHNldHMuXG4gICAqL1xuXG4gIGxlZ2VuZCB7XG4gICAgYm9yZGVyOiAwOyAvKiAxICovXG4gICAgcGFkZGluZzogMDsgLyogMiAqL1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBkZWZhdWx0IHZlcnRpY2FsIHNjcm9sbGJhciBpbiBJRSA4LzkvMTAvMTEuXG4gICAqL1xuXG4gIHRleHRhcmVhIHtcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgfVxuXG4gIC8qKlxuICAgKiBEb24ndCBpbmhlcml0IHRoZSBgZm9udC13ZWlnaHRgIChhcHBsaWVkIGJ5IGEgcnVsZSBhYm92ZSkuXG4gICAqIE5PVEU6IHRoZSBkZWZhdWx0IGNhbm5vdCBzYWZlbHkgYmUgY2hhbmdlZCBpbiBDaHJvbWUgYW5kIFNhZmFyaSBvbiBPUyBYLlxuICAgKi9cblxuICBvcHRncm91cCB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIH1cblxuICAvKiBUYWJsZXNcbiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuICAvKipcbiAgICogUmVtb3ZlIG1vc3Qgc3BhY2luZyBiZXR3ZWVuIHRhYmxlIGNlbGxzLlxuICAgKi9cblxuICB0YWJsZSB7XG4gICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgICBib3JkZXItc3BhY2luZzogMDtcbiAgfVxuXG4gIHRkLFxuICB0aCB7XG4gICAgcGFkZGluZzogMDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZ3JpZFxuLy8vL1xuXG4vLy8gVGhlIG1heGltdW0gd2lkdGggb2YgYSByb3cuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ3JpZC1yb3ctd2lkdGg6ICRnbG9iYWwtd2lkdGggIWRlZmF1bHQ7XG5cbi8vLyBUaGUgZGVmYXVsdCBjb2x1bW4gY291bnQgb2YgYSBncmlkLiBDaGFuZ2luZyB0aGlzIHZhbHVlIGFmZmVjdHMgdGhlIGxvZ2ljIG9mIHRoZSBncmlkIG1peGlucywgYW5kIHRoZSBudW1iZXIgb2YgQ1NTIGNsYXNzZXMgb3V0cHV0LlxuLy8vIEB0eXBlIE51bWJlclxuJGdyaWQtY29sdW1uLWNvdW50OiAxMiAhZGVmYXVsdDtcblxuLy8vIFRoZSBhbW91bnQgb2Ygc3BhY2UgYmV0d2VlbiBjb2x1bW5zIGF0IGRpZmZlcmVudCBzY3JlZW4gc2l6ZXMuIFRvIHVzZSBqdXN0IG9uZSBzaXplLCBzZXQgdGhlIHZhcmlhYmxlIHRvIGEgbnVtYmVyIGluc3RlYWQgb2YgYSBtYXAuXG4vLy8gQHR5cGUgTWFwIHwgTGVuZ3RoXG4vLy8gQHNpbmNlIDYuMS4wXG4kZ3JpZC1jb2x1bW4tZ3V0dGVyOiAoXG4gIHNtYWxsOiAyMHB4LFxuICBtZWRpdW06IDMwcHgsXG4pICFkZWZhdWx0O1xuXG4vLy8gSWYgYHRydWVgLCB0aGUgbGFzdCBjb2x1bW4gaW4gYSByb3cgd2lsbCBhbGlnbiB0byB0aGUgb3Bwb3NpdGUgZWRnZSBvZiB0aGUgcm93LlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRncmlkLWNvbHVtbi1hbGlnbi1lZGdlOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gVGhlIGhpZ2hlc3QgbnVtYmVyIG9mIGAueC11cGAgY2xhc3NlcyBhdmFpbGFibGUgd2hlbiB1c2luZyB0aGUgYmxvY2sgZ3JpZCBDU1MuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYmxvY2stZ3JpZC1tYXg6IDggIWRlZmF1bHQ7XG5cbi8vIEludGVybmFsIHZhbHVlIHRvIHN0b3JlIHRoZSBlbmQgY29sdW1uIGZsb2F0IGRpcmVjdGlvblxuJC16Zi1lbmQtZmxvYXQ6IGlmKCRncmlkLWNvbHVtbi1hbGlnbi1lZGdlLCAkZ2xvYmFsLXJpZ2h0LCAkZ2xvYmFsLWxlZnQpO1xuXG4vLyBUaGUgbGFzdCBwaWVjZSB0byB0cmFuc2l0aW9uIHRoZSByZXNwb25zaXZlIGd1dHRlciBmZWF0dXJlXG4vLyBSZW1vdmUgdGhpcyBpbiA2LjNcbiRncmlkLWNvbHVtbi1yZXNwb25zaXZlLWd1dHRlcjogbnVsbCAhZGVmYXVsdDtcbkBpZiAkZ3JpZC1jb2x1bW4tcmVzcG9uc2l2ZS1ndXR0ZXIge1xuICAvLyBzY3NzLWxpbnQ6ZGlzYWJsZSBEZWJ1Z1N0YXRlbWVudFxuICBAd2FybiAnUmVuYW1lICRncmlkLWNvbHVtbi1yZXNwb25zaXZlLWd1dHRlciB0byAkZ3JpZC1jb2x1bW4tZ3V0dGVyIHRvIHJlbW92ZSB0aGlzIHdhcm5pbmcuJztcbiAgJGdyaWQtY29sdW1uLWd1dHRlcjogJGdyaWQtY29sdW1uLXJlc3BvbnNpdmUtZ3V0dGVyO1xufVxuXG4vLyBJZiBhIHNpbmdsZSB2YWx1ZSBpcyBwYXNzZWQgYXMgYSBndXR0ZXIsIGNvbnZlcnQgaXQgdG8gYSBtYXAgc28gdGhlIGNvZGUga25vd3Mgd2hhdCB0byBkbyB3aXRoIGl0XG5AaWYgdHlwZS1vZigkZ3JpZC1jb2x1bW4tZ3V0dGVyKSA9PSAnbnVtYmVyJyB7XG4gICRncmlkLWNvbHVtbi1ndXR0ZXI6IChcbiAgICBzbWFsbDogJGdyaWQtY29sdW1uLWd1dHRlcixcbiAgKTtcbn1cblxuQGltcG9ydCAncm93JztcbkBpbXBvcnQgJ2NvbHVtbic7XG5AaW1wb3J0ICdzaXplJztcbkBpbXBvcnQgJ3Bvc2l0aW9uJztcbkBpbXBvcnQgJ2d1dHRlcic7XG5AaW1wb3J0ICdjbGFzc2VzJztcbkBpbXBvcnQgJ2xheW91dCc7XG5cbkBpbXBvcnQgJ2ZsZXgtZ3JpZCc7XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBncmlkXG4vLy8vXG5cbi8vLyBDaGFuZ2UgdGhlIGJlaGF2aW9yIG9mIGNvbHVtbnMgZGVmaW5lZCBpbnNpZGUgdGhpcyBtaXhpbiB0byB1c2UgYSBkaWZmZXJlbnQgY29sdW1uIGNvdW50LlxuLy8vIEBjb250ZW50XG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJGNvbHVtbnMgLSBOdW1iZXIgb2YgY29sdW1ucyB0byB1c2UuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkcm9vdCBbZmFsc2VdXG4vLy8gICBJZiBgZmFsc2VgLCBzZWxlY3RvcnMgaW5zaWRlIHRoaXMgbWl4aW4gd2lsbCBuZXN0IGluc2lkZSB0aGUgcGFyZW50IHNlbGVjdG9yLlxuLy8vICAgSWYgYHRydWVgLCBzZWxlY3RvcnMgd2lsbCBub3QgbmVzdC5cbkBtaXhpbiBncmlkLWNvbnRleHQoXG4gICRjb2x1bW5zLFxuICAkcm9vdDogZmFsc2Vcbikge1xuICAvLyBTdG9yZSB0aGUgY3VycmVudCBjb2x1bW4gY291bnQgc28gaXQgY2FuIGJlIHJlLXNldCBsYXRlclxuICAkb2xkLWdyaWQtY29sdW1uLWNvdW50OiAkZ3JpZC1jb2x1bW4tY291bnQ7XG4gICRncmlkLWNvbHVtbi1jb3VudDogJGNvbHVtbnMgIWdsb2JhbDtcblxuICBAaWYgJHJvb3Qge1xuICAgIEBhdC1yb290IHsgQGNvbnRlbnQ7IH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cblxuICAvLyBSZXN0b3JlIHRoZSBvbGQgY29sdW1uIGNvdW50XG4gICRncmlkLWNvbHVtbi1jb3VudDogJG9sZC1ncmlkLWNvbHVtbi1jb3VudCAhZ2xvYmFsO1xufVxuXG4vLy8gQ3JlYXRlcyBhIGdyaWQgcm93LlxuLy8vIEBjb250ZW50XG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJGNvbHVtbnMgW251bGxdIC0gQ29sdW1uIGNvdW50IGZvciB0aGlzIHJvdy4gYG51bGxgIHdpbGwgdXNlIHRoZSBkZWZhdWx0IGNvbHVtbiBjb3VudC5cbi8vLyBAcGFyYW0ge0tleXdvcmRzfSAkYmVoYXZpb3IgW251bGxdXG4vLy8gICBNb2RpZmljYXRpb25zIHRvIHRoZSBkZWZhdWx0IGdyaWQgc3R5bGVzLiBgbmVzdGAgaW5kaWNhdGVzIHRoZSByb3cgd2lsbCBiZSBwbGFjZWQgaW5zaWRlIGFub3RoZXIgcm93LiBgY29sbGFwc2VgIGluZGljYXRlcyB0aGF0IHRoZSBjb2x1bW5zIGluc2lkZSB0aGlzIHJvdyB3aWxsIG5vdCBoYXZlIHBhZGRpbmcuIGBuZXN0IGNvbGxhcHNlYCBjb21iaW5lcyBib3RoIGJlaGF2aW9ycy5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHdpZHRoIFskZ3JpZC1yb3ctd2lkdGhdIC0gTWF4aW11bSB3aWR0aCBvZiB0aGUgcm93LlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGNmIFt0cnVlXSAtIFdoZXRoZXIgb3Igbm90IHRvIGluY2x1ZGUgYSBjbGVhcmZpeC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGd1dHRlciBbJGdyaWQtY29sdW1uLWd1dHRlcl0gLSBHdXR0ZXIgdG8gdXNlIHdoZW4gaW52ZXJ0aW5nIG1hcmdpbnMsIGluIGNhc2UgdGhlIHJvdyBpcyBuZXN0ZWQuXG5AbWl4aW4gZ3JpZC1yb3coXG4gICRjb2x1bW5zOiBudWxsLFxuICAkYmVoYXZpb3I6IG51bGwsXG4gICR3aWR0aDogJGdyaWQtcm93LXdpZHRoLFxuICAkY2Y6IHRydWUsXG4gICRndXR0ZXI6ICRncmlkLWNvbHVtbi1ndXR0ZXJcbikge1xuICAkbWFyZ2luOiBhdXRvO1xuXG4gIEBpZiBpbmRleCgkYmVoYXZpb3IsIG5lc3QpICE9IG51bGwge1xuICAgIEBpbmNsdWRlIGdyaWQtcm93LW5lc3QoJGd1dHRlcik7XG5cbiAgICBAaWYgaW5kZXgoJGJlaGF2aW9yLCBjb2xsYXBzZSkgIT0gbnVsbCB7XG4gICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIG1heC13aWR0aDogJHdpZHRoO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgfVxuXG4gIEBpZiAkY2Yge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICB9XG5cbiAgQGlmICRjb2x1bW5zICE9IG51bGwge1xuICAgIEBpbmNsdWRlIGdyaWQtY29udGV4dCgkY29sdW1ucykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vLyBJbnZlcnRzIHRoZSBtYXJnaW5zIG9mIGEgcm93IHRvIG5lc3QgaXQgaW5zaWRlIG9mIGEgY29sdW1uLlxuLy8vXG4vLy8gQHBhcmFtIHtNYXB8bnVsbH0gJGd1dHRlciBbbnVsbF0gLSBHdXR0ZXIgdmFsdWUgdG8gdXNlIHdoZW4gaW52ZXJ0aW5nIHRoZSBtYXJnaW5zLiBTZXQgdG8gYG51bGxgIHRvIHJlZmVyIHRvIHRoZSByZXNwb25zaXZlIGd1dHRlciBzZXR0aW5ncy5cbkBtaXhpbiBncmlkLXJvdy1uZXN0KCRndXR0ZXI6ICRncmlkLWNvbHVtbi1ndXR0ZXIpIHtcbiAgQGlmIHR5cGUtb2YoJGd1dHRlcikgPT0gJ251bWJlcicge1xuICAgICRndXR0ZXI6ICgkLXpmLXplcm8tYnJlYWtwb2ludDogJGd1dHRlcik7XG4gIH1cblxuICBAZWFjaCAkYnJlYWtwb2ludCwgJHZhbHVlIGluICRndXR0ZXIge1xuICAgICRtYXJnaW46IHJlbS1jYWxjKCR2YWx1ZSkgLyAyICogLTE7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRicmVha3BvaW50KSB7XG4gICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbjtcbiAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbjtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGdyaWRcbi8vLy9cblxuLy8vIENhbGN1bGF0ZXMgdGhlIHdpZHRoIG9mIGEgY29sdW1uIGJhc2VkIG9uIGEgbnVtYmVyIG9mIGZhY3RvcnMuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkY29sdW1uc1xuLy8vICAgV2lkdGggb2YgdGhlIGNvbHVtbi4gQWNjZXB0cyBtdWx0aXBsZSB2YWx1ZXM6XG4vLy8gICAtIEEgcGVyY2VudGFnZSB2YWx1ZSB3aWxsIG1ha2UgdGhlIGNvbHVtbiB0aGF0IGV4YWN0IHNpemUuXG4vLy8gICAtIEEgc2luZ2xlIGRpZ2l0IHdpbGwgbWFrZSB0aGUgY29sdW1uIHNwYW4gdGhhdCBudW1iZXIgb2YgY29sdW1ucyB3aWRlLCB0YWtpbmcgaW50byBhY2NvdW50IHRoZSBjb2x1bW4gY291bnQgb2YgdGhlIHBhcmVudCByb3cuXG4vLy8gICAtIEEgc3RyaW5nIG9mIHRoZSBmb3JtYXQgXCJ4IG9mIHlcIiB3aWxsIG1ha2UgYSBjb2x1bW4gdGhhdCBpcyAqeCogY29sdW1ucyB3aWRlLCBhc3N1bWluZyAqeSogdG90YWwgY29sdW1ucyBmb3IgdGhlIHBhcmVudC5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IEEgY2FsY3VsYXRlZCBwZXJjZW50YWdlIHZhbHVlLlxuQGZ1bmN0aW9uIGdyaWQtY29sdW1uKCRjb2x1bW5zKSB7XG4gICR3aWR0aDogMCU7XG5cbiAgLy8gUGFyc2luZyBwZXJjZW50cywgZGVjaW1hbHMsIGFuZCBjb2x1bW4gY291bnRzXG4gIEBpZiB0eXBlLW9mKCRjb2x1bW5zKSA9PSAnbnVtYmVyJyB7XG4gICAgQGlmIHVuaXQoJGNvbHVtbnMpID09ICclJyB7XG4gICAgICAkd2lkdGg6ICRjb2x1bW5zO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkY29sdW1ucyA8IDEge1xuICAgICAgJHdpZHRoOiBwZXJjZW50YWdlKCRjb2x1bW5zKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJHdpZHRoOiBwZXJjZW50YWdlKCRjb2x1bW5zIC8gJGdyaWQtY29sdW1uLWNvdW50KTtcbiAgICB9XG4gIH1cblxuICAvLyBQYXJzaW5nIFwibiBvZiBuXCIgZXhwcmVzc2lvbnNcbiAgQGVsc2UgaWYgdHlwZS1vZigkY29sdW1ucykgPT0gJ2xpc3QnIHtcbiAgICBAaWYgbGVuZ3RoKCRjb2x1bW5zKSAhPSAzIHtcbiAgICAgIEBlcnJvciAnV3Jvbmcgc3ludGF4IGZvciBncmlkLWNvbHVtbigpLiBVc2UgdGhlIGZvcm1hdCBcIm4gb2YgblwiLic7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICR3aWR0aDogcGVyY2VudGFnZShudGgoJGNvbHVtbnMsIDEpIC8gbnRoKCRjb2x1bW5zLCAzKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQW55dGhpbmcgZWxzZSBpcyBpbmNvcnJlY3RcbiAgQGVsc2Uge1xuICAgIEBlcnJvciAnV3Jvbmcgc3ludGF4IGZvciBncmlkLWNvbHVtbigpLiBVc2UgYSBudW1iZXIsIGRlY2ltYWwsIHBlcmNlbnRhZ2UsIG9yIFwibiBvZiBuXCIuJztcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoO1xufVxuXG4vLy8gQ3JlYXRlcyBhIGdyaWQgY29sdW1uLlxuLy8vXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGNvbHVtbnMgWyRncmlkLWNvbHVtbi1jb3VudF0gLSBXaWR0aCBvZiB0aGUgY29sdW1uLiBSZWZlciB0byB0aGUgYGdyaWQtY29sdW1uKClgIGZ1bmN0aW9uIHRvIHNlZSBwb3NzaWJsZSB2YWx1ZXMuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRndXR0ZXIgWyRncmlkLWNvbHVtbi1ndXR0ZXJdIC0gU3BhY2luZyBiZXR3ZWVuIGNvbHVtbnMuXG5AbWl4aW4gZ3JpZC1jb2x1bW4oXG4gICRjb2x1bW5zOiAkZ3JpZC1jb2x1bW4tY291bnQsXG4gICRndXR0ZXI6ICRncmlkLWNvbHVtbi1ndXR0ZXJcbikge1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1zaXplKCRjb2x1bW5zKTtcbiAgZmxvYXQ6ICRnbG9iYWwtbGVmdDtcblxuICAvLyBHdXR0ZXJzXG4gIEBpZiB0eXBlLW9mKCRndXR0ZXIpID09ICdtYXAnIHtcbiAgICBAZWFjaCAkYnJlYWtwb2ludCwgJHZhbHVlIGluICRndXR0ZXIge1xuICAgICAgJHBhZGRpbmc6IHJlbS1jYWxjKCR2YWx1ZSkgLyAyO1xuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRicmVha3BvaW50KSB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSBpZiB0eXBlLW9mKCRndXR0ZXIpID09ICdudW1iZXInIGFuZCBzdHJpcC11bml0KCRndXR0ZXIpID4gMCB7XG4gICAgJHBhZGRpbmc6IHJlbS1jYWxjKCRndXR0ZXIpIC8gMjtcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nO1xuICB9XG5cbiAgLy8gTGFzdCBjb2x1bW4gYWxpZ25tZW50XG4gIEBpZiAkZ3JpZC1jb2x1bW4tYWxpZ24tZWRnZSB7XG4gICAgJjpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgICAgIGZsb2F0OiAkZ2xvYmFsLXJpZ2h0O1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQ3JlYXRlcyBhIGdyaWQgY29sdW1uIHJvdy4gVGhpcyBpcyB0aGUgZXF1aXZhbGVudCBvZiBhZGRpbmcgYC5yb3dgIGFuZCBgLmNvbHVtbmAgdG8gdGhlIHNhbWUgZWxlbWVudC5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZ3V0dGVyIFskZ3JpZC1jb2x1bW4tZ3V0dGVyXSAtIFdpZHRoIG9mIHRoZSBndXR0ZXJzIG9uIGVpdGhlciBzaWRlIG9mIHRoZSBjb2x1bW4gcm93LlxuQG1peGluIGdyaWQtY29sdW1uLXJvdyhcbiAgJGd1dHRlcjogJGdyaWQtY29sdW1uLWd1dHRlclxuKSB7XG4gIEBpbmNsdWRlIGdyaWQtcm93O1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbigkZ3V0dGVyOiAkZ3V0dGVyKTtcblxuICAmLFxuICAmOmxhc3QtY2hpbGQge1xuICAgIGZsb2F0OiBub25lO1xuICB9XG59XG5cbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbigpYC5cbi8vLyBAYWxpYXMgZ3JpZC1jb2x1bW5cbkBmdW5jdGlvbiBncmlkLWNvbChcbiAgJGNvbHVtbnM6ICRncmlkLWNvbHVtbi1jb3VudFxuKSB7XG4gIEByZXR1cm4gZ3JpZC1jb2x1bW4oJGNvbHVtbnMpO1xufVxuXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4oKWAuXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uXG5AbWl4aW4gZ3JpZC1jb2woXG4gICRjb2x1bW5zOiAkZ3JpZC1jb2x1bW4tY291bnQsXG4gICRndXR0ZXI6ICRncmlkLWNvbHVtbi1ndXR0ZXJcbikge1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbigkY29sdW1ucywgJGd1dHRlcik7XG59XG5cbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbi1yb3coKWAuXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLXJvd1xuQG1peGluIGdyaWQtY29sLXJvdyhcbiAgJGd1dHRlcjogJGdyaWQtY29sdW1uLWd1dHRlclxuKSB7XG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLXJvdygkZ3V0dGVyKTtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGdyaWRcbi8vLy9cblxuLy8vIFNldCB0aGUgd2lkdGggb2YgYSBncmlkIGNvbHVtbi5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfExpc3R9ICR3aWR0aCBbJGdyaWQtY29sdW1uLWNvdW50XSAtIFdpZHRoIHRvIG1ha2UgdGhlIGNvbHVtbi4gWW91IGNhbiBwYXNzIGluIGFueSB2YWx1ZSBhY2NlcHRlZCBieSB0aGUgYGdyaWQtY29sdW1uKClgIGZ1bmN0aW9uLCBzdWNoIGFzIGA2YCwgYDUwJWAsIG9yIGAxIG9mIDJgLlxuQG1peGluIGdyaWQtY29sdW1uLXNpemUoXG4gICRjb2x1bW5zOiAkZ3JpZC1jb2x1bW4tY291bnRcbikge1xuICB3aWR0aDogZ3JpZC1jb2x1bW4oJGNvbHVtbnMpO1xufVxuXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4tc2l6ZSgpYC5cbi8vLyBAYWxpYXMgZ3JpZC1jb2x1bW4tc2l6ZVxuQG1peGluIGdyaWQtY29sLXNpemUoXG4gICRjb2x1bW5zOiAkZ3JpZC1jb2x1bW4tY291bnRcbikge1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1zaXplKCRjb2x1bW5zKTtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGdyaWRcbi8vLy9cblxuLy8vIFJlcG9zaXRpb24gYSBjb2x1bW4uXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxLZXl3b3JkfSAkcG9zaXRpb24gLSBEaXJlY3Rpb24gYW5kIGFtb3VudCB0byBtb3ZlLiBUaGUgY29sdW1uIHdpbGwgbW92ZSBlcXVhbCB0byB0aGUgd2lkdGggb2YgdGhlIGNvbHVtbiBjb3VudCBzcGVjaWZpZWQuIEEgcG9zaXRpdmUgbnVtYmVyIHdpbGwgcHVzaCB0aGUgY29sdW1uIHRvIHRoZSByaWdodCwgd2hpbGUgYSBuZWdhdGl2ZSBudW1iZXIgd2lsbCBwdWxsIGl0IHRvIHRoZSBsZWZ0LiBTZXQgdG8gY2VudGVyIHRvIGNlbnRlciB0aGUgY29sdW1uLlxuQG1peGluIGdyaWQtY29sdW1uLXBvc2l0aW9uKCRwb3NpdGlvbikge1xuICBAaWYgdHlwZS1vZigkcG9zaXRpb24pID09ICdudW1iZXInIHtcbiAgICAkb2Zmc2V0OiBwZXJjZW50YWdlKCRwb3NpdGlvbiAvICRncmlkLWNvbHVtbi1jb3VudCk7XG5cbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgI3skZ2xvYmFsLWxlZnR9OiAkb2Zmc2V0O1xuICB9XG4gIEBlbHNlIGlmICRwb3NpdGlvbiA9PSBjZW50ZXIge1xuICAgICYsICY6bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKSB7XG4gICAgICBmbG9hdDogbm9uZTtcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIH1cbiAgQGVsc2Uge1xuICAgIEB3YXJuICdXcm9uZyBzeW50YXggZm9yIGdyaWQtY29sdW1uLXBvc2l0aW9uKCkuIEVudGVyIGEgcG9zaXRpdmUgb3IgbmVnYXRpdmUgbnVtYmVyLCBvciBjZW50ZXIuJztcbiAgfVxufVxuXG4vLy8gUmVzZXQgYSBwb3NpdGlvbiBkZWZpbml0aW9uLlxuQG1peGluIGdyaWQtY29sdW1uLXVucG9zaXRpb24ge1xuICBwb3NpdGlvbjogc3RhdGljO1xuICBtYXJnaW4tbGVmdDogMDtcbiAgbWFyZ2luLXJpZ2h0OiAwO1xuICBmbG9hdDogbGVmdDtcbn1cblxuLy8vIE9mZnNldHMgYSBjb2x1bW4gdG8gdGhlIHJpZ2h0IGJ5IGAkbmAgY29sdW1ucy5cbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkbiAtIFdpZHRoIHRvIG9mZnNldCBieS4gWW91IGNhbiBwYXNzIGluIGFueSB2YWx1ZSBhY2NlcHRlZCBieSB0aGUgYGdyaWQtY29sdW1uKClgIG1peGluLCBzdWNoIGFzIGA2YCwgYDUwJWAsIG9yIGAxIG9mIDJgLlxuQG1peGluIGdyaWQtY29sdW1uLW9mZnNldCgkbikge1xuICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiBncmlkLWNvbHVtbigkbik7XG59XG5cbi8vLyBEaXNhYmxlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZSBsYXN0IGNvbHVtbiBpbiBhIHJvdyBhbGlnbmluZyB0byB0aGUgb3Bwb3NpdGUgZWRnZS5cbkBtaXhpbiBncmlkLWNvbHVtbi1lbmQge1xuICAvLyBUaGlzIGV4dHJhIHNwZWNpZmljaXR5IGlzIHJlcXVpcmVkIGZvciB0aGUgcHJvcGVydHkgdG8gYmUgYXBwbGllZFxuICAmOmxhc3QtY2hpbGQ6bGFzdC1jaGlsZCB7XG4gICAgZmxvYXQ6ICRnbG9iYWwtbGVmdDtcbiAgfVxufVxuXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4tcG9zaXRpb24oKWAuXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLXBvc2l0aW9uXG5AbWl4aW4gZ3JpZC1jb2wtcG9zKCRwb3NpdGlvbikge1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1wb3NpdGlvbigkcG9zaXRpb24pO1xufVxuXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4tdW5wb3NpdGlvbigpYC5cbi8vLyBAYWxpYXMgZ3JpZC1jb2x1bW4tdW5wb3NpdGlvblxuQG1peGluIGdyaWQtY29sLXVucG9zIHtcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tdW5wb3NpdGlvbjtcbn1cblxuLy8vIFNob3J0aGFuZCBmb3IgYGdyaWQtY29sdW1uLW9mZnNldCgpYC5cbi8vLyBAYWxpYXMgZ3JpZC1jb2x1bW4tb2Zmc2V0XG5AbWl4aW4gZ3JpZC1jb2wtb2ZmKCRuKSB7XG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLW9mZnNldCgkbik7XG59XG5cbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbi1lbmQoKWAuXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLWVuZFxuQG1peGluIGdyaWQtY29sLWVuZCB7XG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLWVuZDtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGdyaWRcbi8vLy9cblxuLy8vIENvbGxhcHNlIHRoZSBndXR0ZXJzIG9uIGEgY29sdW1uIGJ5IHJlbW92aW5nIHRoZSBwYWRkaW5nLiAqKk5vdGU6Kiogb25seSB1c2UgdGhpcyBtaXhpbiB3aXRoaW4gYSBicmVha3BvaW50LiBUbyBjb2xsYXBzZSBhIGNvbHVtbidzIGd1dHRlcnMgb24gYWxsIHNjcmVlbiBzaXplcywgdXNlIHRoZSBgJGd1dHRlcmAgcGFyYW1ldGVyIG9mIHRoZSBgZ3JpZC1jb2x1bW4oKWAgbWl4aW4gaW5zdGVhZC5cbkBtaXhpbiBncmlkLWNvbHVtbi1jb2xsYXBzZSB7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgcGFkZGluZy1yaWdodDogMDtcbn1cblxuLy8vIFVuLWNvbGxhcHNlIHRoZSBndXR0ZXJzIG9uIGEgY29sdW1uIGJ5IHJlLWFkZGluZyB0aGUgcGFkZGluZy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZ3V0dGVyIFskZ3JpZC1jb2x1bW4tZ3V0dGVyXSAtIFNwYWNpbmcgYmV0d2VlbiBjb2x1bW5zLlxuQG1peGluIGdyaWQtY29sdW1uLXVuY29sbGFwc2UoJGd1dHRlcjogJGdyaWQtY29sdW1uLWd1dHRlcikge1xuICAkZ3V0dGVyOiByZW0tY2FsYygkZ3V0dGVyKSAvIDI7XG4gIHBhZGRpbmctbGVmdDogJGd1dHRlcjtcbiAgcGFkZGluZy1yaWdodDogJGd1dHRlcjtcbn1cblxuLy8vIFNob3J0aGFuZCBmb3IgYGdyaWQtY29sdW1uLWNvbGxhcHNlKClgLlxuLy8vIEBhbGlhcyBncmlkLWNvbHVtbi1jb2xsYXBzZVxuQG1peGluIGdyaWQtY29sLWNvbGxhcHNlIHtcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tY29sbGFwc2U7XG59XG5cbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbi11bmNvbGxhcHNlKClgLlxuLy8vIEBhbGlhcyBncmlkLWNvbHVtbi11bmNvbGxhcHNlXG5AbWl4aW4gZ3JpZC1jb2wtdW5jb2xsYXBzZSgkZ3V0dGVyOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyKSB7XG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLXVuY29sbGFwc2UoJGd1dHRlcik7XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBncmlkXG4vLy8vXG5cbi8vLyBPdXRwdXRzIENTUyBjbGFzc2VzIGZvciB0aGUgZ3JpZC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBtaXhpbiBmb3VuZGF0aW9uLWdyaWQoXG4gICRyb3c6ICdyb3cnLFxuICAkY29sdW1uOiAnY29sdW1uJyxcbiAgJGNvbHVtbi1yb3c6ICdjb2x1bW4tcm93JyxcbiAgJHB1c2g6ICdwdXNoJyxcbiAgJHB1bGw6ICdwdWxsJyxcbiAgJGNlbnRlcjogJ2NlbnRlcmVkJyxcbiAgJHVuY2VudGVyOiAndW5jZW50ZXJlZCcsXG4gICRjb2xsYXBzZTogJ2NvbGxhcHNlJyxcbiAgJHVuY29sbGFwc2U6ICd1bmNvbGxhcHNlJyxcbiAgJG9mZnNldDogJ29mZnNldCcsXG4gICRlbmQ6ICdlbmQnLFxuICAkZXhwYW5kZWQ6ICdleHBhbmRlZCdcbikge1xuICAvLyBSb3dcbiAgLiN7JHJvd30ge1xuICAgIEBpbmNsdWRlIGdyaWQtcm93O1xuXG4gICAgLy8gQ29sbGFwc2luZ1xuICAgICYuI3skY29sbGFwc2V9IHtcbiAgICAgID4gLiN7JGNvbHVtbn0ge1xuICAgICAgICBAaW5jbHVkZSBncmlkLWNvbC1jb2xsYXBzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBOZXN0aW5nXG4gICAgJiAuI3skcm93fSB7XG4gICAgICBAaW5jbHVkZSBncmlkLXJvdy1uZXN0KCRncmlkLWNvbHVtbi1ndXR0ZXIpO1xuXG4gICAgICAmLiN7JGNvbGxhcHNlfSB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRXhwYW5kZWQgKGZ1bGwtd2lkdGgpIHJvd1xuICAgICYuI3skZXhwYW5kZWR9IHtcbiAgICAgIG1heC13aWR0aDogbm9uZTtcblxuICAgICAgLiN7JHJvd30ge1xuICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIENvbHVtblxuICAuI3skY29sdW1ufSB7XG4gICAgQGluY2x1ZGUgZ3JpZC1jb2w7XG5cbiAgICBAaWYgJGdyaWQtY29sdW1uLWFsaWduLWVkZ2Uge1xuICAgICAgJi4jeyRlbmR9IHtcbiAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtZW5kO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIENvbHVtbiByb3dcbiAgLy8gVGhlIGRvdWJsZSAucm93IGNsYXNzIGlzIG5lZWRlZCB0byBidW1wIHVwIHRoZSBzcGVjaWZpY2l0eVxuICAuI3skY29sdW1ufS4jeyRyb3d9LiN7JHJvd30ge1xuICAgIGZsb2F0OiBub25lO1xuICB9XG5cbiAgLy8gVG8gcHJvcGVybHkgbmVzdCBhIGNvbHVtbiByb3csIHBhZGRpbmcgYW5kIG1hcmdpbiBpcyByZW1vdmVkXG4gIC4jeyRyb3d9IC4jeyRjb2x1bW59LiN7JHJvd30uI3skcm93fSB7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICB9XG5cbiAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCB7XG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2x1bW4tY291bnQge1xuICAgICAgLy8gQ29sdW1uIHdpZHRoXG4gICAgICAuI3skLXpmLXNpemV9LSN7JGl9IHtcbiAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtc2l6ZSgkaSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFNvdXJjZSBvcmRlcmluZ1xuICAgICAgQGlmICRpIDwgJGdyaWQtY29sdW1uLWNvdW50IHtcbiAgICAgICAgLiN7JC16Zi1zaXplfS0jeyRwdXNofS0jeyRpfSB7XG4gICAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtcG9zKCRpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC4jeyQtemYtc2l6ZX0tI3skcHVsbH0tI3skaX0ge1xuICAgICAgICAgIEBpbmNsdWRlIGdyaWQtY29sLXBvcygtJGkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIE9mZnNldHNcbiAgICAgICRvOiAkaSAtIDE7XG5cbiAgICAgIC4jeyQtemYtc2l6ZX0tI3skb2Zmc2V0fS0jeyRvfSB7XG4gICAgICAgIEBpbmNsdWRlIGdyaWQtY29sLW9mZigkbyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQmxvY2sgZ3JpZFxuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGJsb2NrLWdyaWQtbWF4IHtcbiAgICAgIC4jeyQtemYtc2l6ZX0tdXAtI3skaX0ge1xuICAgICAgICBAaW5jbHVkZSBncmlkLWxheW91dCgkaSwgXCIuI3skY29sdW1ufVwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXNwb25zaXZlIGNvbGxhcHNpbmdcbiAgICAuI3skLXpmLXNpemV9LSN7JGNvbGxhcHNlfSB7XG4gICAgICA+IC4jeyRjb2x1bW59IHsgQGluY2x1ZGUgZ3JpZC1jb2wtY29sbGFwc2U7IH1cblxuICAgICAgLiN7JHJvd30ge1xuICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIC4jeyRleHBhbmRlZH0uI3skcm93fSAuI3skLXpmLXNpemV9LSN7JGNvbGxhcHNlfS4jeyRyb3d9IHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgIH1cblxuICAgIC4jeyQtemYtc2l6ZX0tI3skdW5jb2xsYXBzZX0ge1xuICAgICAgJGd1dHRlcjogLXpmLWdldC1icC12YWwoJGdyaWQtY29sdW1uLWd1dHRlciwgJC16Zi1zaXplKTtcblxuICAgICAgPiAuI3skY29sdW1ufSB7IEBpbmNsdWRlIGdyaWQtY29sLXVuY29sbGFwc2UoJGd1dHRlcik7IH1cbiAgICB9XG5cbiAgICAvLyBQb3NpdGlvbmluZ1xuICAgIC4jeyQtemYtc2l6ZX0tI3skY2VudGVyfSB7XG4gICAgICBAaW5jbHVkZSBncmlkLWNvbC1wb3MoY2VudGVyKTtcbiAgICB9XG5cbiAgICAvLyBHdXR0ZXIgYWRqdXN0bWVudFxuICAgIC4jeyQtemYtc2l6ZX0tI3skdW5jZW50ZXJ9LFxuICAgIC4jeyQtemYtc2l6ZX0tI3skcHVzaH0tMCxcbiAgICAuI3skLXpmLXNpemV9LSN7JHB1bGx9LTAge1xuICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtdW5wb3M7XG4gICAgfVxuICB9XG5cbiAgQGlmICRjb2x1bW4gPT0gJ2NvbHVtbicge1xuICAgIC5jb2x1bW5zIHtcbiAgICAgIC8vIHNjc3MtbGludDpkaXNhYmxlIFBsYWNlaG9sZGVySW5FeHRlbmRcbiAgICAgIEBleHRlbmQgLmNvbHVtbjtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGdyaWRcbi8vLy9cblxuLy8vIFNpemVzIGNoaWxkIGVsZW1lbnRzIHNvIHRoYXQgYCRuYCBudW1iZXIgb2YgaXRlbXMgYXBwZWFyIG9uIGVhY2ggcm93LlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRuIC0gTnVtYmVyIG9mIGVsZW1lbnRzIHRvIGRpc3BsYXkgcGVyIHJvdy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlbGVjdG9yIFsnLmNvbHVtbiddIC0gU2VsZWN0b3IocykgdG8gdXNlIGZvciBjaGlsZCBlbGVtZW50cy5cbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkZ3V0dGVyXG4vLy8gICBUaGUgZ3V0dGVyIHRvIGFwcGx5IHRvIGNoaWxkIGVsZW1lbnRzLiBBY2NlcHRzIG11bHRpcGxlIHZhbHVlczpcbi8vLyAgIC0gJGdyaWQtY29sdW1uLWd1dHRlciB3aWxsIHVzZSB0aGUgdmFsdWVzIGluIHRoZSAkZ3JpZC1jb2x1bW4tZ3V0dGVyIG1hcCwgaW5jbHVkaW5nIGJyZWFrcG9pbnQgc2l6ZXMuXG4vLy8gICAtIEEgZml4ZWQgbnVtZXJpYyB2YWx1ZSB3aWxsIGFwcGx5IHRoaXMgZ3V0dGVyIHRvIGFsbCBicmVha3BvaW50cy5cbkBtaXhpbiBncmlkLWxheW91dChcbiAgJG4sXG4gICRzZWxlY3RvcjogJy5jb2x1bW4nLFxuICAkZ3V0dGVyOiBudWxsXG4pIHtcbiAgJiA+ICN7JHNlbGVjdG9yfSB7XG4gICAgd2lkdGg6IHBlcmNlbnRhZ2UoMS8kbik7XG4gICAgZmxvYXQ6ICRnbG9iYWwtbGVmdDtcblxuICAgIC8vIElmIGEgJGd1dHRlciB2YWx1ZSBpcyBwYXNzZWRcbiAgICBAaWYoJGd1dHRlcikge1xuICAgICAgLy8gR3V0dGVyc1xuICAgICAgQGlmIHR5cGUtb2YoJGd1dHRlcikgPT0gJ21hcCcge1xuICAgICAgICBAZWFjaCAkYnJlYWtwb2ludCwgJHZhbHVlIGluICRndXR0ZXIge1xuICAgICAgICAgICRwYWRkaW5nOiByZW0tY2FsYygkdmFsdWUpIC8gMjtcblxuICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIGlmIHR5cGUtb2YoJGd1dHRlcikgPT0gJ251bWJlcicgYW5kIHN0cmlwLXVuaXQoJGd1dHRlcikgPiAwIHtcbiAgICAgICAgJHBhZGRpbmc6IHJlbS1jYWxjKCRndXR0ZXIpIC8gMjtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjpudGgtb2YtdHlwZSgxbikge1xuICAgICAgY2xlYXI6IG5vbmU7XG4gICAgfVxuXG4gICAgJjpudGgtb2YtdHlwZSgjeyRufW4rMSkge1xuICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIGZsb2F0OiAkZ2xvYmFsLWxlZnQ7XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIGV4dHJhIENTUyB0byBibG9jayBncmlkIGNoaWxkcmVuIHNvIHRoZSBsYXN0IGl0ZW1zIGluIHRoZSByb3cgY2VudGVyIGF1dG9tYXRpY2FsbHkuIEFwcGx5IHRoaXMgdG8gdGhlIGNvbHVtbnMsIG5vdCB0aGUgcm93LlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRuIC0gTnVtYmVyIG9mIGl0ZW1zIHRoYXQgYXBwZWFyIGluIGVhY2ggcm93LlxuQG1peGluIGdyaWQtbGF5b3V0LWNlbnRlci1sYXN0KCRuKSB7XG4gIEBmb3IgJGkgZnJvbSAxIHRvICRuIHtcbiAgICBAaWYgJGkgPT0gMSB7XG4gICAgICAmOm50aC1jaGlsZCgjeyRufW4rMSk6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAoMTAwIC0gMTAwLyRuICogJGkpIC8gMiAqIDElO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAmOm50aC1jaGlsZCgjeyRufW4rMSk6bnRoLWxhc3QtY2hpbGQoI3skaX0pIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICgxMDAgLSAxMDAvJG4gKiAkaSkgLyAyICogMSU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmbGV4LWdyaWRcbi8vLy9cblxuLy8vIENyZWF0ZXMgYSBjb250YWluZXIgZm9yIGEgZmxleCBncmlkIHJvdy5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxMaXN0fSAkYmVoYXZpb3IgW251bGxdXG4vLy8gICBNb2RpZmljYXRpb25zIHRvIHRoZSBkZWZhdWx0IGdyaWQgc3R5bGVzLiBgbmVzdGAgaW5kaWNhdGVzIHRoZSByb3cgd2lsbCBiZSBwbGFjZWQgaW5zaWRlIGFub3RoZXIgcm93LiBgY29sbGFwc2VgIGluZGljYXRlcyB0aGF0IHRoZSBjb2x1bW5zIGluc2lkZSB0aGlzIHJvdyB3aWxsIG5vdCBoYXZlIHBhZGRpbmcuIGBuZXN0IGNvbGxhcHNlYCBjb21iaW5lcyBib3RoIGJlaGF2aW9ycy5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHdpZHRoIFskZ3JpZC1yb3ctd2lkdGhdIC0gTWF4aW11bSB3aWR0aCBvZiB0aGUgcm93LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkY29sdW1ucyBbbnVsbF0gLSBOdW1iZXIgb2YgY29sdW1ucyB0byB1c2UgZm9yIHRoaXMgcm93LiBJZiBzZXQgdG8gYG51bGxgICh0aGUgZGVmYXVsdCksIHRoZSBnbG9iYWwgY29sdW1uIGNvdW50IHdpbGwgYmUgdXNlZC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRiYXNlIFt0cnVlXSAtIFNldCB0byBgZmFsc2VgIHRvIHByZXZlbnQgYmFzaWMgc3R5bGVzIGZyb20gYmVpbmcgb3V0cHV0LiBVc2VmdWwgaWYgeW91J3JlIGNhbGxpbmcgdGhpcyBtaXhpbiBvbiB0aGUgc2FtZSBlbGVtZW50IHR3aWNlLCBhcyBpdCBwcmV2ZW50cyBkdXBsaWNhdGUgQ1NTIG91dHB1dC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGd1dHRlciBbJGdyaWQtY29sdW1uLWd1dHRlcl0gLSBHdXR0ZXIgdG8gdXNlIHdoZW4gaW52ZXJ0aW5nIG1hcmdpbnMsIGluIGNhc2UgdGhlIHJvdyBpcyBuZXN0ZWQuXG5AbWl4aW4gZmxleC1ncmlkLXJvdyhcbiAgJGJlaGF2aW9yOiBudWxsLFxuICAkd2lkdGg6ICRncmlkLXJvdy13aWR0aCxcbiAgJGNvbHVtbnM6IG51bGwsXG4gICRiYXNlOiB0cnVlLFxuICAkZ3V0dGVyOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXG4pIHtcbiAgJG1hcmdpbjogYXV0bztcblxuICBAaWYgaW5kZXgoJGJlaGF2aW9yLCBuZXN0KSAhPSBudWxsIHtcbiAgICBAaW5jbHVkZSBncmlkLXJvdy1uZXN0KCRndXR0ZXIpO1xuXG4gICAgQGlmIGluZGV4KCRiZWhhdmlvciwgY29sbGFwc2UpICE9IG51bGwge1xuICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBtYXgtd2lkdGg6ICR3aWR0aDtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIH1cblxuICBAaWYgJGJhc2Uge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgfVxuXG4gIEBpZiAkY29sdW1ucyAhPSBudWxsIHtcbiAgICBAaW5jbHVkZSBncmlkLWNvbnRleHQoJGNvbHVtbnMsICRiYXNlKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8vIENhbGN1bGF0ZXMgdGhlIGBmbGV4YCBwcm9wZXJ0eSBmb3IgYSBmbGV4IGdyaWQgY29sdW1uLiBJdCBhY2NlcHRzIGFsbCBvZiB0aGUgc2FtZSB2YWx1ZXMgYXMgdGhlIGJhc2ljIGBncmlkLWNvbHVtbigpYCBmdW5jdGlvbiwgYWxvbmcgd2l0aCB0d28gZXh0cmFzOlxuLy8vICAgLSBgbnVsbGAgKHRoZSBkZWZhdWx0KSB3aWxsIG1ha2UgdGhlIGNvbHVtbiBleHBhbmQgdG8gZmlsbCBzcGFjZS5cbi8vLyAgIC0gYHNocmlua2Agd2lsbCBtYWtlIHRoZSBjb2x1bW4gY29udHJhY3QsIHNvIGl0IG9ubHkgdGFrZXMgdXAgdGhlIGhvcml6b250YWwgc3BhY2UgaXQgbmVlZHMuXG4vLy9cbi8vLyBAcGFyYW0ge01peGVkfSAkY29sdW1ucyBbbnVsbF0gLSBXaWR0aCBvZiB0aGUgY29sdW1uLlxuQGZ1bmN0aW9uIGZsZXgtZ3JpZC1jb2x1bW4oJGNvbHVtbnM6IG51bGwpIHtcbiAgLy8gc2Nzcy1saW50OmRpc2FibGUgWmVyb1VuaXRcbiAgJGZsZXg6IDEgMSAwcHg7XG5cbiAgQGlmICRjb2x1bW5zID09IHNocmluayB7XG4gICAgJGZsZXg6IDAgMCBhdXRvO1xuICB9XG4gIEBlbHNlIGlmICRjb2x1bW5zICE9IG51bGwge1xuICAgICRmbGV4OiAwIDAgZ3JpZC1jb2x1bW4oJGNvbHVtbnMpO1xuICB9XG5cbiAgQHJldHVybiAkZmxleDtcbn1cblxuLy8vIENyZWF0ZXMgYSBjb2x1bW4gZm9yIGEgZmxleCBncmlkLiBCeSBkZWZhdWx0LCB0aGUgY29sdW1uIHdpbGwgc3RyZXRjaCB0byB0aGUgZnVsbCB3aWR0aCBvZiBpdHMgY29udGFpbmVyLCBidXQgdGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiB3aXRoIHNpemluZyBjbGFzc2VzLCBvciBieSB1c2luZyB0aGUgYHVuc3RhY2tgIGNsYXNzIG9uIHRoZSBwYXJlbnQgZmxleCByb3cuXG4vLy9cbi8vLyBAcGFyYW0ge01peGVkfSAkY29sdW1ucyBbbnVsbF0gLSBXaWR0aCBvZiB0aGUgY29sdW1uLiBSZWZlciB0byB0aGUgYGZsZXgtZ3JpZC1jb2x1bW4oKWAgZnVuY3Rpb24gdG8gc2VlIHBvc3NpYmxlIHZhbHVlcy5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGd1dHRlciBbJGdyaWQtY29sdW1uLWd1dHRlcl0gLSBTcGFjZSBiZXR3ZWVuIGNvbHVtbnMsIGFkZGVkIGFzIGEgbGVmdCBhbmQgcmlnaHQgcGFkZGluZy5cbkBtaXhpbiBmbGV4LWdyaWQtY29sdW1uKFxuICAkY29sdW1uczogbnVsbCxcbiAgJGd1dHRlcjogJGdyaWQtY29sdW1uLWd1dHRlclxuKSB7XG4gIC8vIEJhc2UgcHJvcGVydGllc1xuICBmbGV4OiBmbGV4LWdyaWQtY29sdW1uKCRjb2x1bW5zKTtcblxuICAvLyBHdXR0ZXJzXG4gIEBpZiB0eXBlLW9mKCRndXR0ZXIpID09ICdtYXAnIHtcbiAgICBAZWFjaCAkYnJlYWtwb2ludCwgJHZhbHVlIGluICRndXR0ZXIge1xuICAgICAgJHBhZGRpbmc6IHJlbS1jYWxjKCR2YWx1ZSkgLyAyO1xuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRicmVha3BvaW50KSB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSBpZiB0eXBlLW9mKCRndXR0ZXIpID09ICdudW1iZXInIGFuZCBzdHJpcC11bml0KCRndXR0ZXIpID4gMCB7XG4gICAgJHBhZGRpbmc6IHJlbS1jYWxjKCRndXR0ZXIpIC8gMjtcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nO1xuICB9XG5cbiAgLy8gZml4ZXMgcmVjZW50IENocm9tZSB2ZXJzaW9uIG5vdCBsaW1pdGluZyBjaGlsZCB3aWR0aFxuICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zNDkzNDU4Ni93aGl0ZS1zcGFjZS1ub3dyYXAtYW5kLWZsZXhib3gtZGlkLW5vdC13b3JrLWluLWNocm9tZVxuICBAaWYgJGNvbHVtbnMgPT0gbnVsbCB7XG4gICAgbWluLXdpZHRoOiBpbml0aWFsO1xuICB9XG4gIC8vIG1heC13aWR0aCBmaXhlcyBJRSAxMC8xMSBub3QgcmVzcGVjdGluZyB0aGUgZmxleC1iYXNpcyBwcm9wZXJ0eVxuICBAaWYgJGNvbHVtbnMgIT0gbnVsbCBhbmQgJGNvbHVtbnMgIT0gc2hyaW5rIHtcbiAgICBtYXgtd2lkdGg6IGdyaWQtY29sdW1uKCRjb2x1bW5zKTtcbiAgfVxufVxuXG4vLy8gQ3JlYXRlcyBhIGJsb2NrIGdyaWQgZm9yIGEgZmxleCBncmlkIHJvdy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbiAtIE51bWJlciBvZiBjb2x1bW5zIHRvIGRpc3BsYXkgb24gZWFjaCByb3cuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzZWxlY3RvciAtIFNlbGVjdG9yIHRvIHVzZSB0byB0YXJnZXQgY29sdW1ucyB3aXRoaW4gdGhlIHJvdy5cbkBtaXhpbiBmbGV4LWdyaWQtbGF5b3V0KFxuICAkbixcbiAgJHNlbGVjdG9yOiAnLmNvbHVtbidcbikge1xuICBmbGV4LXdyYXA6IHdyYXA7XG5cbiAgPiAjeyRzZWxlY3Rvcn0ge1xuICAgICRwY3Q6IHBlcmNlbnRhZ2UoMS8kbik7XG5cbiAgICBmbGV4OiAwIDAgJHBjdDtcbiAgICBtYXgtd2lkdGg6ICRwY3Q7XG4gIH1cbn1cblxuLy8vIENoYW5nZXMgdGhlIHNvdXJjZSBvcmRlciBvZiBhIGZsZXggZ3JpZCBjb2x1bW4uIENvbHVtbnMgd2l0aCBsb3dlciBudW1iZXJzIGFwcGVhciBmaXJzdCBpbiB0aGUgbGF5b3V0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkb3JkZXIgWzBdIC0gT3JkZXIgbnVtYmVyIHRvIGFwcGx5LlxuQG1peGluIGZsZXgtZ3JpZC1vcmRlcigkb3JkZXI6IDApIHtcbiAgQHdhcm4gJ1RoaXMgbWl4aW4gaXMgYmVpbmcgcmVwbGFjZWQgYnkgZmxleC1vcmRlcigpLiBmbGV4LWdyaWQtb3JkZXIoKSB3aWxsIGJlIHJlbW92ZWQgaW4gRm91bmRhdGlvbiA2LjMuJztcbiAgQGluY2x1ZGUgZmxleC1vcmRlcigkb3JkZXIpO1xufVxuXG4vLy8gSG9yaXpvbnRhbGx5IG9yIHZlcnRpY2FsbHkgYWxpZ25zIHRoZSBjb2x1bW5zIHdpdGhpbiBhIGZsZXggcm93LiBBcHBseSB0aGlzIG1peGluIHRvIGEgZmxleCByb3cuXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICR4IFtudWxsXSAtIEhvcml6b250YWwgYWxpZ25tZW50IHRvIHVzZS4gQ2FuIGJlIGBsZWZ0YCwgYHJpZ2h0YCwgYGNlbnRlcmAsIGBqdXN0aWZ5YCwgb3IgYHNwYWNlZGAuIE9yLCBzZXQgaXQgdG8gYG51bGxgICh0aGUgZGVmYXVsdCkgdG8gbm90IHNldCBob3Jpem9udGFsIGFsaWdubWVudC5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICR5IFtudWxsXSAtIFZlcnRpY2FsIGFsaWdubWVudCB0byB1c2UuIENhbiBiZSBgdG9wYCwgYGJvdHRvbWAsIGBtaWRkbGVgLCBvciBgc3RyZXRjaGAuIE9yLCBzZXQgaXQgdG8gYG51bGxgICh0aGUgZGVmYXVsdCkgdG8gbm90IHNldCB2ZXJ0aWNhbCBhbGlnbm1lbnQuXG5AbWl4aW4gZmxleC1ncmlkLXJvdy1hbGlnbigkeDogbnVsbCwgJHk6IG51bGwpIHtcbiAgQHdhcm4gJ1RoaXMgbWl4aW4gaXMgYmVpbmcgcmVwbGFjZWQgYnkgZmxleC1hbGlnbigpLiBmbGV4LWdyaWQtcm93LWFsaWduKCkgd2lsbCBiZSByZW1vdmVkIGluIEZvdW5kYXRpb24gNi4zLic7XG4gIEBpbmNsdWRlIGZsZXgtYWxpZ24oJHgsICR5KTtcbn1cblxuLy8vIFZlcnRpY2FsbHkgYWxpZ24gYSBzaW5nbGUgY29sdW1uIHdpdGhpbiBhIGZsZXggcm93LiBBcHBseSB0aGlzIG1peGluIHRvIGEgZmxleCBjb2x1bW4uXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICR5IFtudWxsXSAtIFZlcnRpY2FsIGFsaWdubWVudCB0byB1c2UuIENhbiBiZSBgdG9wYCwgYGJvdHRvbWAsIGBtaWRkbGVgLCBvciBgc3RyZXRjaGAuIE9yLCBzZXQgaXQgdG8gYG51bGxgICh0aGUgZGVmYXVsdCkgdG8gbm90IHNldCB2ZXJ0aWNhbCBhbGlnbm1lbnQuXG5AbWl4aW4gZmxleC1ncmlkLWNvbHVtbi1hbGlnbigkeTogbnVsbCkge1xuICBAd2FybiAnVGhpcyBtaXhpbiBpcyBiZWluZyByZXBsYWNlZCBieSBmbGV4LWFsaWduLXNlbGYoKS4gZmxleC1ncmlkLWNvbHVtbi1hbGlnbigpIHdpbGwgYmUgcmVtb3ZlZCBpbiBGb3VuZGF0aW9uIDYuMy4nO1xuICBAaW5jbHVkZSBmbGV4LWFsaWduLXNlbGYoJHkpO1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1mbGV4LWdyaWQge1xuICAvLyBSb3dcbiAgLnJvdyB7XG4gICAgQGluY2x1ZGUgZmxleC1ncmlkLXJvdztcblxuICAgIC8vIE5lc3RpbmcgYmVoYXZpb3JcbiAgICAmIC5yb3cge1xuICAgICAgQGluY2x1ZGUgZmxleC1ncmlkLXJvdyhuZXN0LCAkYmFzZTogZmFsc2UpO1xuICAgIH1cblxuICAgIC8vIEV4cGFuZGVkIHJvd1xuICAgICYuZXhwYW5kZWQge1xuICAgICAgbWF4LXdpZHRoOiBub25lO1xuICAgIH1cblxuICAgICYuY29sbGFwc2Uge1xuICAgICAgPiAuY29sdW1uIHtcbiAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtY29sbGFwc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVW5kbyBuZWdhdGl2ZSBtYXJnaW5zXG4gICAgLy8gRnJvbSBjb2xsYXBzZWQgY2hpbGRcbiAgICAmLmlzLWNvbGxhcHNlLWNoaWxkLFxuICAgICYuY29sbGFwc2UgPiAuY29sdW1uID4gLnJvdyB7XG4gICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICB9XG4gIH1cblxuICAvLyBDb2x1bW5cbiAgLmNvbHVtbiB7XG4gICAgQGluY2x1ZGUgZmxleC1ncmlkLWNvbHVtbjtcbiAgfVxuXG4gIC8vIENvbHVtbiByb3dcbiAgLy8gVGhlIGRvdWJsZSAucm93IGNsYXNzIGlzIG5lZWRlZCB0byBidW1wIHVwIHRoZSBzcGVjaWZpY2l0eVxuICAuY29sdW1uLnJvdy5yb3cge1xuICAgIGZsb2F0OiBub25lO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgLy8gVG8gcHJvcGVybHkgbmVzdCBhIGNvbHVtbiByb3csIHBhZGRpbmcgYW5kIG1hcmdpbiBpcyByZW1vdmVkXG4gIC5yb3cgLmNvbHVtbi5yb3cucm93IHtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgcGFkZGluZy1yaWdodDogMDtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cblxuICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50IHtcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbHVtbi1jb3VudCB7XG4gICAgICAvLyBTaXppbmcgKHBlcmNlbnRhZ2UpXG4gICAgICAuI3skLXpmLXNpemV9LSN7JGl9IHtcbiAgICAgICAgZmxleDogZmxleC1ncmlkLWNvbHVtbigkaSk7XG4gICAgICAgIG1heC13aWR0aDogZ3JpZC1jb2x1bW4oJGkpO1xuICAgICAgfVxuXG4gICAgICAvLyBPZmZzZXRzXG4gICAgICAkbzogJGkgLSAxO1xuXG4gICAgICAuI3skLXpmLXNpemV9LW9mZnNldC0jeyRvfSB7XG4gICAgICAgIEBpbmNsdWRlIGdyaWQtY29sdW1uLW9mZnNldCgkbyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU291cmNlIG9yZGVyaW5nXG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCA2IHtcbiAgICAgIC4jeyQtemYtc2l6ZX0tb3JkZXItI3skaX0ge1xuICAgICAgICBAaW5jbHVkZSBmbGV4LW9yZGVyKCRpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBCbG9jayBncmlkXG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkYmxvY2stZ3JpZC1tYXgge1xuICAgICAgLiN7JC16Zi1zaXplfS11cC0jeyRpfSB7XG4gICAgICAgIEBpbmNsdWRlIGZsZXgtZ3JpZC1sYXlvdXQoJGkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAkLXpmLXNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgLy8gU2l6aW5nIChleHBhbmQpXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCQtemYtc2l6ZSkge1xuICAgICAgICAuI3skLXpmLXNpemV9LWV4cGFuZCB7XG4gICAgICAgICAgZmxleDogZmxleC1ncmlkLWNvbHVtbigpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIEF1dG8tc3RhY2tpbmcvdW5zdGFja2luZ1xuICAgICAgQGF0LXJvb3QgKHdpdGhvdXQ6IG1lZGlhKSB7XG4gICAgICAgIC5yb3cuI3skLXpmLXNpemV9LXVuc3RhY2sge1xuICAgICAgICAgID4gLmNvbHVtbiB7XG4gICAgICAgICAgICBmbGV4OiBmbGV4LWdyaWQtY29sdW1uKDEwMCUpO1xuXG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCQtemYtc2l6ZSkge1xuICAgICAgICAgICAgICBmbGV4OiBmbGV4LWdyaWQtY29sdW1uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVzcG9uc2l2ZSBjb2xsYXBzaW5nXG4gICAgLiN7JC16Zi1zaXplfS1jb2xsYXBzZSB7XG4gICAgICA+IC5jb2x1bW4geyBAaW5jbHVkZSBncmlkLWNvbC1jb2xsYXBzZTsgfVxuICAgIH1cblxuICAgIC4jeyQtemYtc2l6ZX0tdW5jb2xsYXBzZSB7XG4gICAgICAkZ3V0dGVyOiAtemYtZ2V0LWJwLXZhbCgkZ3JpZC1jb2x1bW4tZ3V0dGVyLCAkLXpmLXNpemUpO1xuXG4gICAgICA+IC5jb2x1bW4geyBAaW5jbHVkZSBncmlkLWNvbC11bmNvbGxhcHNlKCRndXR0ZXIpOyB9XG4gICAgfVxuICB9XG5cbiAgLy8gU2l6aW5nIChzaHJpbmspXG4gIC5zaHJpbmsge1xuICAgIGZsZXg6IGZsZXgtZ3JpZC1jb2x1bW4oc2hyaW5rKTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cblxuICAvLyBWZXJ0aWNhbCBhbGlnbm1lbnQgdXNpbmcgYWxpZ24taXRlbXMgYW5kIGFsaWduLXNlbGZcbiAgLy8gUmVtb3ZlIHRoZXNlIGluIDYuM1xuICBAZWFjaCAkdmRpciwgJHByb3AgaW4gJC16Zi1mbGV4LWFsaWduIHtcbiAgICAuY29sdW1uLmFsaWduLSN7JHZkaXJ9IHtcbiAgICAgIEBpbmNsdWRlIGZsZXgtYWxpZ24tc2VsZigkdmRpcik7XG4gICAgfVxuICB9XG5cbiAgLmNvbHVtbnMge1xuICAgIC8vIHNjc3MtbGludDpkaXNhYmxlIFBsYWNlaG9sZGVySW5FeHRlbmRcbiAgICBAZXh0ZW5kIC5jb2x1bW47XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHR5cG9ncmFwaHlcbi8vLy9cblxuLy8gc2Nzcy1saW50OmRpc2FibGUgRGVjbGFyYXRpb25PcmRlclxuXG4vLyBCYXNlIHR5cG9ncmFwaHkgc3R5bGVzICh0YWdzIG9ubHkpXG5AaW1wb3J0ICdiYXNlJztcblxuLy8gVHlwb2dyYXBoeSBoZWxwZXIgY2xhc3NlcyAoY2xhc3NlcyBvbmx5KVxuQGltcG9ydCAnaGVscGVycyc7XG5cbi8vIFRleHQgYWxpZ25tZW50IGNsYXNzZXNcbkBpbXBvcnQgJ2FsaWdubWVudCc7XG5cbi8vIFByaW50IHN0eWxlc1xuQGltcG9ydCAncHJpbnQnO1xuXG5AbWl4aW4gZm91bmRhdGlvbi10eXBvZ3JhcGh5IHtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10eXBvZ3JhcGh5LWJhc2U7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdHlwb2dyYXBoeS1oZWxwZXJzO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXRleHQtYWxpZ25tZW50O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByaW50LXN0eWxlcztcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHR5cG9ncmFwaHktYmFzZVxuLy8vL1xuXG4vLyBCYXNlIFR5cG9ncmFwaHlcbi8vIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtXG4vLyBUaGVzZSBhcmUgc3R5bGVzIGFwcGxpZWQgdG8gYmFzaWMgSFRNTCB0YWdzLCBpbmNsdWRpbmc6XG4vLyAgIC0gUGFyYWdyYXBocyA8cD5cbi8vICAgLSBCb2xkL2l0YWxpY3MgPGI+IDxzdHJvbmc+IDxpPiA8ZW0+XG4vLyAgIC0gU21hbGwgdGV4dCA8c21hbGw+XG4vLyAgIC0gSGVhZGluZ3MgPGgxPuKAlDxoNj5cbi8vICAgLSBBbmNob3JzIDxhPlxuLy8gICAtIERpdmlkZXJzIDxocj5cbi8vICAgLSBMaXN0cyA8dWw+IDxvbD4gPGRsPlxuLy8gICAtIEJsb2NrcXVvdGVzIDxibG9ja3F1b3RlPlxuLy8gICAtIENvZGUgYmxvY2tzIDxjb2RlPlxuLy8gICAtIEFiYnJldmlhdGlvbnMgPGFiYnI+XG4vLyAgIC0gQ2l0YXRpb25zIDxjaXRlPlxuLy8gICAtIEtleXN0cm9rZXMgPGtiZD5cblxuLy8vIEZvbnQgZmFtaWx5IGZvciBoZWFkZXIgZWxlbWVudHMuXG4vLy8gQHR5cGUgU3RyaW5nIHwgTGlzdFxuJGhlYWRlci1mb250LWZhbWlseTogJGJvZHktZm9udC1mYW1pbHkgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHdlaWdodCBvZiBoZWFkZXJzLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGhlYWRlci1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsICFkZWZhdWx0O1xuXG4vLy8gRm9udCBzdHlsZSAoZS5nLiBpdGFsaWNpemVkKSBvZiBoZWFkZXJzLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGhlYWRlci1mb250LXN0eWxlOiBub3JtYWwgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHN0YWNrIHVzZWQgZm9yIGVsZW1lbnRzIHRoYXQgdXNlIG1vbm9zcGFjZWQgdHlwZSwgc3VjaCBhcyBjb2RlIHNhbXBsZXNcbi8vLyBAdHlwZSBTdHJpbmcgfCBMaXN0XG4kZm9udC1mYW1pbHktbW9ub3NwYWNlOiBDb25zb2xhcywgJ0xpYmVyYXRpb24gTW9ubycsIENvdXJpZXIsIG1vbm9zcGFjZSAhZGVmYXVsdDtcblxuLy8vIFNpemVzIG9mIGhlYWRpbmdzIGF0IHZhcmlvdXMgc2NyZWVuIHNpemVzLiBFYWNoIGtleSBpcyBhIGJyZWFrcG9pbnQsIGFuZCBlYWNoIHZhbHVlIGlzIGEgbWFwIG9mIGhlYWRpbmcgc2l6ZXMuXG4vLy8gQHR5cGUgTWFwXG4kaGVhZGVyLXNpemVzOiAoXG4gIHNtYWxsOiAoXG4gICAgJ2gxJzogMjQsXG4gICAgJ2gyJzogMjAsXG4gICAgJ2gzJzogMTksXG4gICAgJ2g0JzogMTgsXG4gICAgJ2g1JzogMTcsXG4gICAgJ2g2JzogMTYsXG4gICksXG4gIG1lZGl1bTogKFxuICAgICdoMSc6IDQ4LFxuICAgICdoMic6IDQwLFxuICAgICdoMyc6IDMxLFxuICAgICdoNCc6IDI1LFxuICAgICdoNSc6IDIwLFxuICAgICdoNic6IDE2LFxuICApLFxuKSAhZGVmYXVsdDtcblxuLy8vIENvbG9yIG9mIGhlYWRlcnMuXG4vLy8gQHR5cGUgQ29sb3JcbiRoZWFkZXItY29sb3I6IGluaGVyaXQgIWRlZmF1bHQ7XG5cbi8vLyBMaW5lIGhlaWdodCBvZiBoZWFkZXJzLlxuLy8vIEB0eXBlIE51bWJlclxuJGhlYWRlci1saW5laGVpZ2h0OiAxLjQgIWRlZmF1bHQ7XG5cbi8vLyBCb3R0b20gbWFyZ2luIG9mIGhlYWRlcnMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kaGVhZGVyLW1hcmdpbi1ib3R0b206IDAuNXJlbSAhZGVmYXVsdDtcblxuLy8vIFRleHQgcmVuZGVyaW5nIG1ldGhvZCBvZiBoZWFkZXJzLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGhlYWRlci10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5ICFkZWZhdWx0O1xuXG4vLy8gRm9udCBzaXplIG9mIGA8c21hbGw+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzbWFsbC1mb250LXNpemU6IDgwJSAhZGVmYXVsdDtcblxuLy8vIENvbG9yIG9mIGA8c21hbGw+YCBlbGVtZW50cyB3aGVuIHBsYWNlZCBpbnNpZGUgaGVhZGVycy5cbi8vLyBAdHlwZSBDb2xvclxuJGhlYWRlci1zbWFsbC1mb250LWNvbG9yOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBMaW5lIGhlaWdodCBvZiB0ZXh0IGluc2lkZSBgPHA+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwYXJhZ3JhcGgtbGluZWhlaWdodDogMS42ICFkZWZhdWx0O1xuXG4vLy8gQm90dG9tIG1hcmdpbiBvZiBwYXJhZ3JhcGhzLlxuLy8vIEB0eXBlIE51bWJlclxuJHBhcmFncmFwaC1tYXJnaW4tYm90dG9tOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gVGV4dCByZW5kZXJpbmcgbWV0aG9kIGZvciBwYXJhZ3JhcGggdGV4dC5cbi8vLyBAdHlwZSBTdHJpbmdcbiRwYXJhZ3JhcGgtdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eSAhZGVmYXVsdDtcblxuLy8vIFRleHQgY29sb3Igb2YgY29kZSBzYW1wbGVzLlxuLy8vIEB0eXBlIENvbG9yXG4kY29kZS1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gRm9udCBmYW1pbHkgb2YgY29kZSBzYW1wbGVzLlxuLy8vIEB0eXBlIFN0cmluZyB8IExpc3RcbiRjb2RlLWZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktbW9ub3NwYWNlICFkZWZhdWx0O1xuXG4vLy8gRm9udCB3ZWlnaHQgb2YgdGV4dCBpbiBjb2RlIHNhbXBsZXMuXG4vLy8gQHR5cGUgU3RyaW5nXG4kY29kZS1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBjb2RlIHNhbXBsZXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRjb2RlLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIGFyb3VuZCBjb2RlIHNhbXBsZXMuXG4vLy8gQHR5cGUgTGlzdFxuJGNvZGUtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gUGFkZGluZyBhcm91bmQgdGV4dCBvZiBjb2RlIHNhbXBsZXMuXG4vLy8gQHR5cGUgTnVtYmVyIHwgTGlzdFxuJGNvZGUtcGFkZGluZzogcmVtLWNhbGMoMiA1IDEpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBmb3IgbGlua3MuXG4vLy8gQHR5cGUgQ29sb3JcbiRhbmNob3ItY29sb3I6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBmb3IgbGlua3Mgb24gaG92ZXIuXG4vLy8gQHR5cGUgQ29sb3JcbiRhbmNob3ItY29sb3ItaG92ZXI6IHNjYWxlLWNvbG9yKCRhbmNob3ItY29sb3IsICRsaWdodG5lc3M6IC0xNCUpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB0ZXh0IGRlb2NyYXRpb24gZm9yIGxpbmtzLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGFuY2hvci10ZXh0LWRlY29yYXRpb246IG5vbmUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHRleHQgZGVjb3JhdGlvbiBmb3IgbGlua3Mgb24gaG92ZXIuXG4vLy8gQHR5cGUgU3RyaW5nXG4kYW5jaG9yLXRleHQtZGVjb3JhdGlvbi1ob3Zlcjogbm9uZSAhZGVmYXVsdDtcblxuLy8vIE1heGltdW0gd2lkdGggb2YgYSBkaXZpZGVyLlxuLy8vIEB0eXBlIE51bWJlclxuJGhyLXdpZHRoOiAkZ2xvYmFsLXdpZHRoICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3JkZXIgZm9yIGEgZGl2aWRlci5cbi8vLyBAdHlwZSBMaXN0XG4kaHItYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBtYXJnaW4gZm9yIGEgZGl2aWRlci5cbi8vLyBAdHlwZSBOdW1iZXIgfCBMaXN0XG4kaHItbWFyZ2luOiByZW0tY2FsYygyMCkgYXV0byAhZGVmYXVsdDtcblxuLy8vIExpbmUgaGVpZ2h0IGZvciBpdGVtcyBpbiBhIGxpc3QuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbGlzdC1saW5laGVpZ2h0OiAkcGFyYWdyYXBoLWxpbmVoZWlnaHQgIWRlZmF1bHQ7XG5cbi8vLyBCb3R0b20gbWFyZ2luIGZvciBpdGVtcyBpbiBhIGxpc3QuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbGlzdC1tYXJnaW4tYm90dG9tOiAkcGFyYWdyYXBoLW1hcmdpbi1ib3R0b20gIWRlZmF1bHQ7XG5cbi8vLyBCdWxsZXQgdHlwZSB0byB1c2UgZm9yIHVub3JkZXJlZCBsaXN0cyAoZS5nLiwgYHNxdWFyZWAsIGBjaXJjbGVgLCBgZGlzY2ApLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGxpc3Qtc3R5bGUtdHlwZTogZGlzYyAhZGVmYXVsdDtcblxuLy8vIFBvc2l0aW9uaW5nIGZvciBidWxsZXRzIG9uIHVub3JkZXJlZCBsaXN0IGl0ZW1zLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGxpc3Qtc3R5bGUtcG9zaXRpb246IG91dHNpZGUgIWRlZmF1bHQ7XG5cbi8vLyBMZWZ0IChvciByaWdodCkgbWFyZ2luIGZvciBsaXN0cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRsaXN0LXNpZGUtbWFyZ2luOiAxLjI1cmVtICFkZWZhdWx0O1xuXG4vLy8gTGVmdCAob3IgcmlnaHQpIG1hcmdpbiBmb3IgYSBsaXN0IGluc2lkZSBhIGxpc3QuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbGlzdC1uZXN0ZWQtc2lkZS1tYXJnaW46IDEuMjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBCb3R0b20gbWFyZ2luIGZvciBgPGRsPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZGVmbmxpc3QtbWFyZ2luLWJvdHRvbTogMXJlbSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgd2VpZ2h0IGZvciBgPGR0PmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgU3RyaW5nXG4kZGVmbmxpc3QtdGVybS13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQgIWRlZmF1bHQ7XG5cbi8vLyBTcGFjaW5nIGJldHdlZW4gYDxkdD5gIGFuZCBgPGRkPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZGVmbmxpc3QtdGVybS1tYXJnaW4tYm90dG9tOiAwLjNyZW0gIWRlZmF1bHQ7XG5cbi8vLyBUZXh0IGNvbG9yIG9mIGA8YmxvY2txdW90ZT5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIENvbG9yXG4kYmxvY2txdW90ZS1jb2xvcjogJGRhcmstZ3JheSAhZGVmYXVsdDtcblxuLy8vIFBhZGRpbmcgaW5zaWRlIGEgYDxibG9ja3F1b3RlPmAgZWxlbWVudC5cbi8vLyBAdHlwZSBOdW1iZXIgfCBMaXN0XG4kYmxvY2txdW90ZS1wYWRkaW5nOiByZW0tY2FsYyg5IDIwIDAgMTkpICFkZWZhdWx0O1xuXG4vLy8gU2lkZSBib3JkZXIgZm9yIGA8YmxvY2txdW90ZT5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIExpc3RcbiRibG9ja3F1b3RlLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc2l6ZSBmb3IgYDxjaXRlPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kY2l0ZS1mb250LXNpemU6IHJlbS1jYWxjKDEzKSAhZGVmYXVsdDtcblxuLy8vIFRleHQgY29sb3IgZm9yIGA8Y2l0ZT5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIENvbG9yXG4kY2l0ZS1jb2xvcjogJGRhcmstZ3JheSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgZmFtaWx5IGZvciBgPGtiZD5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIFN0cmluZyB8IExpc3RcbiRrZXlzdHJva2UtZm9udDogJGZvbnQtZmFtaWx5LW1vbm9zcGFjZSAhZGVmYXVsdDtcblxuLy8vIFRleHQgY29sb3IgZm9yIGA8a2JkPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRrZXlzdHJva2UtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3IgZm9yIGA8a2JkPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRrZXlzdHJva2UtYmFja2dyb3VuZDogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBQYWRkaW5nIGZvciBgPGtiZD5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIE51bWJlciB8IExpc3RcbiRrZXlzdHJva2UtcGFkZGluZzogcmVtLWNhbGMoMiA0IDApICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIHJhZGl1cyBmb3IgYDxrYmQ+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBOdW1iZXIgfCBMaXN0XG4ka2V5c3Ryb2tlLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbi8vLyBCb3R0b20gYm9yZGVyIHN0eWxlIGZvciBgPGFiYnI+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBMaXN0XG4kYWJici11bmRlcmxpbmU6IDFweCBkb3R0ZWQgJGJsYWNrICFkZWZhdWx0O1xuXG5AbWl4aW4gZm91bmRhdGlvbi10eXBvZ3JhcGh5LWJhc2Uge1xuICAvLyBUeXBvZ3JhcGh5IHJlc2V0c1xuICBkaXYsXG4gIGRsLFxuICBkdCxcbiAgZGQsXG4gIHVsLFxuICBvbCxcbiAgbGksXG4gIGgxLFxuICBoMixcbiAgaDMsXG4gIGg0LFxuICBoNSxcbiAgaDYsXG4gIHByZSxcbiAgZm9ybSxcbiAgcCxcbiAgYmxvY2txdW90ZSxcbiAgdGgsXG4gIHRkIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gIC8vIFBhcmFncmFwaHNcbiAgcCB7XG4gICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgIGxpbmUtaGVpZ2h0OiAkcGFyYWdyYXBoLWxpbmVoZWlnaHQ7XG4gICAgbWFyZ2luLWJvdHRvbTogJHBhcmFncmFwaC1tYXJnaW4tYm90dG9tO1xuICAgIHRleHQtcmVuZGVyaW5nOiAkcGFyYWdyYXBoLXRleHQtcmVuZGVyaW5nO1xuICB9XG5cbiAgLy8gRW1waGFzaXplZCB0ZXh0XG4gIGVtLFxuICBpIHtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gIH1cblxuICAvLyBTdHJvbmcgdGV4dFxuICBzdHJvbmcsXG4gIGIge1xuICAgIGZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkO1xuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICB9XG5cbiAgLy8gU21hbGwgdGV4dFxuICBzbWFsbCB7XG4gICAgZm9udC1zaXplOiAkc21hbGwtZm9udC1zaXplO1xuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICB9XG5cbiAgLy8gSGVhZGluZ3NcbiAgaDEsXG4gIGgyLFxuICBoMyxcbiAgaDQsXG4gIGg1LFxuICBoNiB7XG4gICAgZm9udC1mYW1pbHk6ICRoZWFkZXItZm9udC1mYW1pbHk7XG4gICAgZm9udC13ZWlnaHQ6ICRoZWFkZXItZm9udC13ZWlnaHQ7XG4gICAgZm9udC1zdHlsZTogJGhlYWRlci1mb250LXN0eWxlO1xuICAgIGNvbG9yOiAkaGVhZGVyLWNvbG9yO1xuICAgIHRleHQtcmVuZGVyaW5nOiAkaGVhZGVyLXRleHQtcmVuZGVyaW5nO1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogJGhlYWRlci1tYXJnaW4tYm90dG9tO1xuICAgIGxpbmUtaGVpZ2h0OiAkaGVhZGVyLWxpbmVoZWlnaHQ7XG5cbiAgICBzbWFsbCB7XG4gICAgICBjb2xvcjogJGhlYWRlci1zbWFsbC1mb250LWNvbG9yO1xuICAgICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgfVxuICB9XG5cbiAgLy8gSGVhZGluZyBzaXplc1xuICBAZWFjaCAkc2l6ZSwgJGhlYWRlcnMgaW4gJGhlYWRlci1zaXplcyB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgQGVhY2ggJGhlYWRlciwgJGZvbnQtc2l6ZSBpbiAkaGVhZGVycyB7XG4gICAgICAgICN7JGhlYWRlcn0ge1xuICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoJGZvbnQtc2l6ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBMaW5rc1xuICBhIHtcbiAgICBjb2xvcjogJGFuY2hvci1jb2xvcjtcbiAgICB0ZXh0LWRlY29yYXRpb246ICRhbmNob3ItdGV4dC1kZWNvcmF0aW9uO1xuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyB7XG4gICAgICBjb2xvcjogJGFuY2hvci1jb2xvci1ob3ZlcjtcbiAgICAgIEBpZiAkYW5jaG9yLXRleHQtZGVjb3JhdGlvbi1ob3ZlciAhPSAkYW5jaG9yLXRleHQtZGVjb3JhdGlvbiB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogJGFuY2hvci10ZXh0LWRlY29yYXRpb24taG92ZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaW1nIHtcbiAgICAgIGJvcmRlcjogMDtcbiAgICB9XG4gIH1cblxuICAvLyBIb3Jpem9udGFsIHJ1bGVcbiAgaHIge1xuICAgIG1heC13aWR0aDogJGhyLXdpZHRoO1xuICAgIGhlaWdodDogMDtcbiAgICBib3JkZXItcmlnaHQ6IDA7XG4gICAgYm9yZGVyLXRvcDogMDtcbiAgICBib3JkZXItYm90dG9tOiAkaHItYm9yZGVyO1xuICAgIGJvcmRlci1sZWZ0OiAwO1xuICAgIG1hcmdpbjogJGhyLW1hcmdpbjtcbiAgICBjbGVhcjogYm90aDtcbiAgfVxuXG4gIC8vIExpc3RzXG4gIHVsLFxuICBvbCxcbiAgZGwge1xuICAgIGxpbmUtaGVpZ2h0OiAkbGlzdC1saW5laGVpZ2h0O1xuICAgIG1hcmdpbi1ib3R0b206ICRsaXN0LW1hcmdpbi1ib3R0b207XG4gICAgbGlzdC1zdHlsZS1wb3NpdGlvbjogJGxpc3Qtc3R5bGUtcG9zaXRpb247XG4gIH1cblxuICAvLyBMaXN0IGl0ZW1zXG4gIGxpIHtcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gIH1cblxuICAvLyBVbm9yZGVyZWQgbGlzdHNcbiAgdWwge1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogJGxpc3Qtc3R5bGUtdHlwZTtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkbGlzdC1zaWRlLW1hcmdpbjtcbiAgfVxuXG4gIC8vIE9yZGVyZWQgbGlzdHNcbiAgb2wge1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06ICRsaXN0LXNpZGUtbWFyZ2luO1xuICB9XG5cbiAgLy8gTmVzdGVkIHVub3JkZXJlZC9vcmRlcmVkIGxpc3RzXG4gIHVsLCBvbCB7XG4gICAgJiAmIHtcbiAgICAgIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06ICRsaXN0LW5lc3RlZC1zaWRlLW1hcmdpbjtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuICB9XG5cbiAgLy8gRGVmaW5pdGlvbiBsaXN0c1xuICBkbCB7XG4gICAgbWFyZ2luLWJvdHRvbTogJGRlZm5saXN0LW1hcmdpbi1ib3R0b207XG5cbiAgICBkdCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkZGVmbmxpc3QtdGVybS1tYXJnaW4tYm90dG9tO1xuICAgICAgZm9udC13ZWlnaHQ6ICRkZWZubGlzdC10ZXJtLXdlaWdodDtcbiAgICB9XG4gIH1cblxuICAvLyBCbG9ja3F1b3Rlc1xuICBibG9ja3F1b3RlIHtcbiAgICBtYXJnaW46IDAgMCAkcGFyYWdyYXBoLW1hcmdpbi1ib3R0b207XG4gICAgcGFkZGluZzogJGJsb2NrcXVvdGUtcGFkZGluZztcbiAgICBib3JkZXItI3skZ2xvYmFsLWxlZnR9OiAkYmxvY2txdW90ZS1ib3JkZXI7XG5cbiAgICAmLCBwIHtcbiAgICAgIGxpbmUtaGVpZ2h0OiAkcGFyYWdyYXBoLWxpbmVoZWlnaHQ7XG4gICAgICBjb2xvcjogJGJsb2NrcXVvdGUtY29sb3I7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2l0YXRpb25zXG4gIGNpdGUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZvbnQtc2l6ZTogJGNpdGUtZm9udC1zaXplO1xuICAgIGNvbG9yOiAkY2l0ZS1jb2xvcjtcblxuICAgICY6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICdcXDIwMTQgXFwwMDIwJztcbiAgICB9XG4gIH1cblxuICAvLyBBYmJyZXZpYXRpb25zXG4gIGFiYnIge1xuICAgIGNvbG9yOiAkYm9keS1mb250LWNvbG9yO1xuICAgIGN1cnNvcjogaGVscDtcbiAgICBib3JkZXItYm90dG9tOiAkYWJici11bmRlcmxpbmU7XG4gIH1cblxuICAvLyBDb2RlXG4gIGNvZGUge1xuICAgIGZvbnQtZmFtaWx5OiAkY29kZS1mb250LWZhbWlseTtcbiAgICBmb250LXdlaWdodDogJGNvZGUtZm9udC13ZWlnaHQ7XG4gICAgY29sb3I6ICRjb2RlLWNvbG9yO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2RlLWJhY2tncm91bmQ7XG4gICAgYm9yZGVyOiAkY29kZS1ib3JkZXI7XG4gICAgcGFkZGluZzogJGNvZGUtcGFkZGluZztcbiAgfVxuXG4gIC8vIEtleXN0cm9rZXNcbiAga2JkIHtcbiAgICBwYWRkaW5nOiAka2V5c3Ryb2tlLXBhZGRpbmc7XG4gICAgbWFyZ2luOiAwO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRrZXlzdHJva2UtYmFja2dyb3VuZDtcbiAgICBjb2xvcjogJGtleXN0cm9rZS1jb2xvcjtcbiAgICBmb250LWZhbWlseTogJGtleXN0cm9rZS1mb250O1xuXG4gICAgQGlmIGhhcy12YWx1ZSgka2V5c3Ryb2tlLXJhZGl1cykge1xuICAgICAgYm9yZGVyLXJhZGl1czogJGtleXN0cm9rZS1yYWRpdXM7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB0eXBvZ3JhcGh5LWhlbHBlcnNcbi8vLy9cblxuLy8vIERlZmF1bHQgZm9udCBzaXplIGZvciBsZWFkIHBhcmFncmFwaHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbGVhZC1mb250LXNpemU6ICRnbG9iYWwtZm9udC1zaXplICogMS4yNSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgbGluZSBoZWlnaHQgZm9yIGxlYWQgcGFyYWdyYXBocy5cbi8vLyBAdHlwZSBTdHJpbmdcbiRsZWFkLWxpbmVoZWlnaHQ6IDEuNiAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgbGluZSBoZWlnaHQgZm9yIHN1YmhlYWRlcnMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3ViaGVhZGVyLWxpbmVoZWlnaHQ6IDEuNCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBjb2xvciBmb3Igc3ViaGVhZGVycy5cbi8vLyBAdHlwZSBDb2xvclxuJHN1YmhlYWRlci1jb2xvcjogJGRhcmstZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCB3ZWlnaHQgZm9yIHN1YmhlYWRlcnMuXG4vLy8gQHR5cGUgU3RyaW5nXG4kc3ViaGVhZGVyLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWwgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHRvcCBtYXJnaW4gZm9yIHN1YmhoZWFkZXJzLlxuLy8vIEB0eXBlIE51bWJlclxuJHN1YmhlYWRlci1tYXJnaW4tdG9wOiAwLjJyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvdHRvbSBtYXJnaW4gZm9yIHN1YmhlYWRlcnMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3ViaGVhZGVyLW1hcmdpbi1ib3R0b206IDAuNXJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBzaXplIGZvciBzdGF0aXN0aWMgbnVtYmVycy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzdGF0LWZvbnQtc2l6ZTogMi41cmVtICFkZWZhdWx0O1xuXG5AbWl4aW4gZm91bmRhdGlvbi10eXBvZ3JhcGh5LWhlbHBlcnMge1xuICAvLyBVc2UgdG8gY3JlYXRlIGEgc3ViaGVhZGluZyB1bmRlciBhIG1haW4gaGVhZGVyXG4gIC8vIE1ha2Ugc3VyZSB5b3UgcGFpciB0aGUgdHdvIGVsZW1lbnRzIGluIGEgPGhlYWRlcj4gZWxlbWVudCwgbGlrZSB0aGlzOlxuICAvLyA8aGVhZGVyPlxuICAvLyAgIDxoMT5IZWFkaW5nPC9oMT5cbiAgLy8gICA8aDI+U3ViaGVhZGluZzwvaDI+XG4gIC8vIDwvaGVhZGVyPlxuICAuc3ViaGVhZGVyIHtcbiAgICBtYXJnaW4tdG9wOiAkc3ViaGVhZGVyLW1hcmdpbi10b3A7XG4gICAgbWFyZ2luLWJvdHRvbTogJHN1YmhlYWRlci1tYXJnaW4tYm90dG9tO1xuICAgIGZvbnQtd2VpZ2h0OiAkc3ViaGVhZGVyLWZvbnQtd2VpZ2h0O1xuICAgIGxpbmUtaGVpZ2h0OiAkc3ViaGVhZGVyLWxpbmVoZWlnaHQ7XG4gICAgY29sb3I6ICRzdWJoZWFkZXItY29sb3I7XG4gIH1cblxuICAvLyBVc2UgdG8gc3R5bGUgYW4gaW50cm9kdWN0b3J5IGxlYWQsIGRlY2ssIGJsdXJiLCBldGMuXG4gIC5sZWFkIHtcbiAgICBmb250LXNpemU6ICRsZWFkLWZvbnQtc2l6ZTtcbiAgICBsaW5lLWhlaWdodDogJGxlYWQtbGluZWhlaWdodDtcbiAgfVxuXG4gIC8vIFVzZSB0byBzdHlsZSBhIGxhcmdlIG51bWJlciB0byBkaXNwbGF5IGEgc3RhdGlzdGljXG4gIC5zdGF0IHtcbiAgICBmb250LXNpemU6ICRzdGF0LWZvbnQtc2l6ZTtcbiAgICBsaW5lLWhlaWdodDogMTtcblxuICAgIHAgKyAmIHtcbiAgICAgIG1hcmdpbi10b3A6IC0xcmVtO1xuICAgIH1cbiAgfVxuXG4gIC8vIFVzZSB0byByZW1vdmUgdGhlIGJ1bGxldHMgZnJvbSBhbiB1bm9yZGVyZWQgbGlzdFxuICAubm8tYnVsbGV0IHtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAwO1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG5AbWl4aW4gZm91bmRhdGlvbi10ZXh0LWFsaWdubWVudCB7XG4gIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgIEBlYWNoICRhbGlnbiBpbiAobGVmdCwgcmlnaHQsIGNlbnRlciwganVzdGlmeSkge1xuICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgIC4jeyRzaXplfS10ZXh0LSN7JGFsaWdufSB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiAkYWxpZ247XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAudGV4dC0jeyRhbGlnbn0ge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogJGFsaWduO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLyBJZiBgdHJ1ZWAsIGFsbCBlbGVtZW50cyB3aWxsIGhhdmUgdHJhbnNwYXJlbnQgYmFja2dyb3VuZHMgd2hlbiBwcmludGVkLCB0byBzYXZlIG9uIGluay5cbi8vLyBAdHlwZSBCb29sZWFuXG4vLy8gQGdyb3VwIGdsb2JhbFxuJHByaW50LXRyYW5zcGFyZW50LWJhY2tncm91bmRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBzY3NzLWxpbnQ6ZGlzYWJsZSBhbGxcblxuQG1peGluIGZvdW5kYXRpb24tcHJpbnQtc3R5bGVzIHtcbiAgLnNob3ctZm9yLXByaW50IHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XG5cbiAgQG1lZGlhIHByaW50IHtcbiAgICAqIHtcbiAgICAgIEBpZiAkcHJpbnQtdHJhbnNwYXJlbnQtYmFja2dyb3VuZHMge1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAgICAgfVxuXG4gICAgICBjb2xvcjogYmxhY2sgIWltcG9ydGFudDsgLy8gQmxhY2sgcHJpbnRzIGZhc3RlcjogaDVicC5jb20vc1xuICAgICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgdGV4dC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuc2hvdy1mb3ItcHJpbnQgeyBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyB9XG4gICAgLmhpZGUtZm9yLXByaW50IHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XG5cbiAgICB0YWJsZS5zaG93LWZvci1wcmludCB7IGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7IH1cbiAgICB0aGVhZC5zaG93LWZvci1wcmludCB7IGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cCAhaW1wb3J0YW50OyB9XG4gICAgdGJvZHkuc2hvdy1mb3ItcHJpbnQgeyBkaXNwbGF5OiB0YWJsZS1yb3ctZ3JvdXAgIWltcG9ydGFudDsgfVxuICAgIHRyLnNob3ctZm9yLXByaW50IHsgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7IH1cbiAgICB0ZC5zaG93LWZvci1wcmludCB7IGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsgfVxuICAgIHRoLnNob3ctZm9yLXByaW50IHsgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OyB9XG5cbiAgICAvLyBEaXNwbGF5IHRoZSBVUkwgb2YgYSBsaW5rIGFmdGVyIHRoZSB0ZXh0XG4gICAgYSxcbiAgICBhOnZpc2l0ZWQgeyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTt9XG4gICAgYVtocmVmXTphZnRlciB7IGNvbnRlbnQ6ICcgKCcgYXR0cihocmVmKSAnKSc7IH1cblxuICAgIC8vIERvbid0IGRpc3BsYXkgdGhlIFVSTCBmb3IgaW1hZ2VzIG9yIEphdmFTY3JpcHQvaW50ZXJuYWwgbGlua3NcbiAgICAuaXIgYTphZnRlcixcbiAgICBhW2hyZWZePSdqYXZhc2NyaXB0OiddOmFmdGVyLFxuICAgIGFbaHJlZl49JyMnXTphZnRlciB7IGNvbnRlbnQ6ICcnOyB9XG5cbiAgICAvLyBEaXNwbGF5IHdoYXQgYW4gYWJicmV2aWF0aW9uIHN0YW5kcyBmb3IgYWZ0ZXIgdGhlIHRleHRcbiAgICBhYmJyW3RpdGxlXTphZnRlciB7IGNvbnRlbnQ6ICcgKCcgYXR0cih0aXRsZSkgJyknOyB9XG5cbiAgICAvLyBQcmV2ZW50IHBhZ2UgYnJlYWtzIGluIHRoZSBtaWRkbGUgb2YgYSBibG9ja3F1b3RlIG9yIHByZWZvcm1hdHRlZCB0ZXh0IGJsb2NrXG4gICAgcHJlLFxuICAgIGJsb2NrcXVvdGUge1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgJGRhcmstZ3JheTtcbiAgICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgICB9XG5cbiAgICAvLyBoNWJwLmNvbS90XG4gICAgdGhlYWQgeyBkaXNwbGF5OiB0YWJsZS1oZWFkZXItZ3JvdXA7IH1cblxuICAgIHRyLFxuICAgIGltZyB7IHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsgfVxuXG4gICAgaW1nIHsgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IH1cblxuICAgIEBwYWdlIHsgbWFyZ2luOiAwLjVjbTsgfVxuXG4gICAgcCxcbiAgICBoMixcbiAgICBoMyB7XG4gICAgICBvcnBoYW5zOiAzO1xuICAgICAgd2lkb3dzOiAzO1xuICAgIH1cblxuICAgIC8vIEF2b2lkIHBhZ2UgYnJlYWtzIGFmdGVyIGEgaGVhZGluZ1xuICAgIGgyLFxuICAgIGgzIHsgcGFnZS1icmVhay1hZnRlcjogYXZvaWQ7IH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZm9ybXNcbi8vLy9cblxuLy8vIEdsb2JhbCBzcGFjaW5nIGZvciBmb3JtIGVsZW1lbnRzLlxuLy8vIEB0eXBlIE51bWJlclxuJGZvcm0tc3BhY2luZzogcmVtLWNhbGMoMTYpICFkZWZhdWx0O1xuXG5AaW1wb3J0ICd0ZXh0JztcbkBpbXBvcnQgJ2NoZWNrYm94JztcbkBpbXBvcnQgJ2xhYmVsJztcbkBpbXBvcnQgJ2hlbHAtdGV4dCc7XG5AaW1wb3J0ICdpbnB1dC1ncm91cCc7XG5AaW1wb3J0ICdmaWVsZHNldCc7XG5AaW1wb3J0ICdzZWxlY3QnO1xuQGltcG9ydCAncmFuZ2UnO1xuQGltcG9ydCAncHJvZ3Jlc3MnO1xuQGltcG9ydCAnbWV0ZXInO1xuQGltcG9ydCAnZXJyb3InO1xuXG5AbWl4aW4gZm91bmRhdGlvbi1mb3JtcyB7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZm9ybS10ZXh0O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZvcm0tY2hlY2tib3g7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZm9ybS1sYWJlbDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mb3JtLWhlbHB0ZXh0O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZvcm0tcHJlcG9zdGZpeDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mb3JtLWZpZWxkc2V0O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZvcm0tc2VsZWN0O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZvcm0tZXJyb3I7XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmb3Jtc1xuLy8vL1xuXG4vLy8gRm9udCBjb2xvciBvZiB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBDb2xvclxuJGlucHV0LWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBGb250IGNvbG9yIG9mIHBsYWNlaG9sZGVyIHRleHQgd2l0aGluIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtcGxhY2Vob2xkZXItY29sb3I6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgZmFtaWx5IG9mIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIEZvbnRcbiRpbnB1dC1mb250LWZhbWlseTogaW5oZXJpdCAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc2l6ZSBvZiB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRpbnB1dC1mb250LXNpemU6IHJlbS1jYWxjKDE2KSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRpbnB1dC1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGZvY3VzZWQgb2YgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRpbnB1dC1iYWNrZ3JvdW5kLWZvY3VzOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGRpc2FibGVkIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtYmFja2dyb3VuZC1kaXNhYmxlZDogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgYXJvdW5kIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIEJvcmRlclxuJGlucHV0LWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciBhcm91bmQgZm9jdXNlZCB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBDb2xvclxuJGlucHV0LWJvcmRlci1mb2N1czogMXB4IHNvbGlkICRkYXJrLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBCb3ggc2hhZG93IGluc2lkZSB0ZXh0IGlucHV0cyB3aGVuIG5vdCBmb2N1c2VkLlxuLy8vIEB0eXBlIFNoYWRvd1xuJGlucHV0LXNoYWRvdzogaW5zZXQgMCAxcHggMnB4IHJnYmEoJGJsYWNrLCAwLjEpICFkZWZhdWx0O1xuXG4vLy8gQm94IHNoYWRvdyBvdXRzaWRlIHRleHQgaW5wdXRzIHdoZW4gZm9jdXNlZC5cbi8vLyBAdHlwZSBTaGFkb3dcbiRpbnB1dC1zaGFkb3ctZm9jdXM6IDAgMCA1cHggJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQ3Vyc29yIHRvIHVzZSB3aGVuIGhvdmVyaW5nIG92ZXIgYSBkaXNhYmxlZCB0ZXh0IGlucHV0LlxuLy8vIEB0eXBlIEN1cnNvclxuJGlucHV0LWN1cnNvci1kaXNhYmxlZDogbm90LWFsbG93ZWQgIWRlZmF1bHQ7XG5cbi8vLyBQcm9wZXJ0aWVzIHRvIHRyYW5zaXRpb24gb24gdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgVHJhbnNpdGlvblxuJGlucHV0LXRyYW5zaXRpb246IGJveC1zaGFkb3cgMC41cywgYm9yZGVyLWNvbG9yIDAuMjVzIGVhc2UtaW4tb3V0ICFkZWZhdWx0O1xuXG4vLy8gRW5hYmxlcyB0aGUgdXAvZG93biBidXR0b25zIHRoYXQgQ2hyb21lIGFuZCBGaXJlZm94IGFkZCB0byBgPGlucHV0IHR5cGU9J251bWJlcic+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kaW5wdXQtbnVtYmVyLXNwaW5uZXJzOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gUmFkaXVzIGZvciB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBCb3JkZXJcbiRpbnB1dC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIHJhZGl1cyBmb3IgYnV0dG9ucywgZGVmYXVsdGVkIHRvIGdsb2JhbC1yYWRpdXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnV0dG9uLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3JtLWVsZW1lbnQge1xuICAkaGVpZ2h0OiAoJGlucHV0LWZvbnQtc2l6ZSArICgkZm9ybS1zcGFjaW5nICogMS41KSAtIHJlbS1jYWxjKDEpKTtcblxuICBkaXNwbGF5OiBibG9jaztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogJGhlaWdodDtcbiAgcGFkZGluZzogJGZvcm0tc3BhY2luZyAvIDI7XG4gIGJvcmRlcjogJGlucHV0LWJvcmRlcjtcbiAgbWFyZ2luOiAwIDAgJGZvcm0tc3BhY2luZztcblxuICBmb250LWZhbWlseTogJGlucHV0LWZvbnQtZmFtaWx5O1xuICBmb250LXNpemU6ICRpbnB1dC1mb250LXNpemU7XG4gIGNvbG9yOiAkaW5wdXQtY29sb3I7XG4gIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1iYWNrZ3JvdW5kO1xuICBib3gtc2hhZG93OiAkaW5wdXQtc2hhZG93O1xuICBib3JkZXItcmFkaXVzOiAkaW5wdXQtcmFkaXVzO1xuXG4gIEBpZiBoYXMtdmFsdWUoJGlucHV0LXRyYW5zaXRpb24pIHtcbiAgICB0cmFuc2l0aW9uOiAkaW5wdXQtdHJhbnNpdGlvbjtcbiAgfVxuXG4gIC8vIEZvY3VzIHN0YXRlXG4gICY6Zm9jdXMge1xuICAgIGJvcmRlcjogJGlucHV0LWJvcmRlci1mb2N1cztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaW5wdXQtYmFja2dyb3VuZC1mb2N1cztcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGJveC1zaGFkb3c6ICRpbnB1dC1zaGFkb3ctZm9jdXM7XG5cbiAgICBAaWYgaGFzLXZhbHVlKCRpbnB1dC10cmFuc2l0aW9uKSB7XG4gICAgICB0cmFuc2l0aW9uOiAkaW5wdXQtdHJhbnNpdGlvbjtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tZm9ybS10ZXh0IHtcbiAgLy8gVGV4dCBpbnB1dHNcbiAgI3t0ZXh0LWlucHV0cygpfSxcbiAgdGV4dGFyZWEge1xuICAgIEBpbmNsdWRlIGZvcm0tZWxlbWVudDtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuICB9XG5cbiAgLy8gVGV4dCBhcmVhc1xuICB0ZXh0YXJlYSB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuXG4gICAgJltyb3dzXSB7XG4gICAgICBoZWlnaHQ6IGF1dG87XG4gICAgfVxuICB9XG5cbiAgaW5wdXQsXG4gIHRleHRhcmVhIHtcbiAgICAvLyBQbGFjZWhvbGRlciB0ZXh0XG4gICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgY29sb3I6ICRpbnB1dC1wbGFjZWhvbGRlci1jb2xvcjtcbiAgICB9XG5cbiAgICAvLyBEaXNhYmxlZC9yZWFkb25seSBzdGF0ZVxuICAgICY6ZGlzYWJsZWQsXG4gICAgJltyZWFkb25seV0ge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWJhY2tncm91bmQtZGlzYWJsZWQ7XG4gICAgICBjdXJzb3I6ICRpbnB1dC1jdXJzb3ItZGlzYWJsZWQ7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVzZXQgc3R5bGVzIG9uIGJ1dHRvbi1saWtlIGlucHV0c1xuICBbdHlwZT0nc3VibWl0J10sXG4gIFt0eXBlPSdidXR0b24nXSB7XG4gICAgYm9yZGVyLXJhZGl1czogJGJ1dHRvbi1yYWRpdXM7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcbiAgfVxuXG4gIC8vIFJlc2V0IE5vcm1hbGl6ZSBzZXR0aW5nIGNvbnRlbnQtYm94IHRvIHNlYXJjaCBlbGVtZW50c1xuICAvLyBzY3NzLWxpbnQ6ZGlzYWJsZSBRdWFsaWZ5aW5nRWxlbWVudFxuICBpbnB1dFt0eXBlPSdzZWFyY2gnXSB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgfVxuXG4gIC8vIE51bWJlciBpbnB1dCBzdHlsZXNcbiAgW3R5cGU9J251bWJlciddIHtcbiAgICBAaWYgbm90ICRpbnB1dC1udW1iZXItc3Bpbm5lcnMge1xuICAgICAgLW1vei1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XG5cbiAgICAgICY6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG4gICAgICAmOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmb3Jtc1xuLy8vL1xuXG5AbWl4aW4gZm91bmRhdGlvbi1mb3JtLWNoZWNrYm94IHtcbiAgW3R5cGU9J2ZpbGUnXSxcbiAgW3R5cGU9J2NoZWNrYm94J10sXG4gIFt0eXBlPSdyYWRpbyddIHtcbiAgICBtYXJnaW46IDAgMCAkZm9ybS1zcGFjaW5nO1xuICB9XG5cbiAgLy8gU3R5bGVzIGZvciBpbnB1dC9sYWJlbCBzaWJsaW5nc1xuICBbdHlwZT0nY2hlY2tib3gnXSArIGxhYmVsLFxuICBbdHlwZT0ncmFkaW8nXSArIGxhYmVsIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogJGZvcm0tc3BhY2luZyAqIDAuNTtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJGZvcm0tc3BhY2luZztcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcblxuICAgICZbZm9yXSB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuICB9XG5cbiAgLy8gU3R5bGVzIGZvciBpbnB1dHMgaW5zaWRlIGxhYmVsc1xuICBsYWJlbCA+IFt0eXBlPSdjaGVja2JveCddLFxuICBsYWJlbCA+IFt0eXBlPSdyYWRpbyddIHtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJGZvcm0tc3BhY2luZyAqIDAuNTtcbiAgfVxuXG4gIC8vIE5vcm1hbGl6ZSBmaWxlIGlucHV0IHdpZHRoXG4gIFt0eXBlPSdmaWxlJ10ge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmb3Jtc1xuLy8vL1xuXG4vLy8gQ29sb3IgZm9yIGZvcm0gbGFiZWxzLlxuLy8vIEB0eXBlIENvbG9yXG4kZm9ybS1sYWJlbC1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gRm9udCBzaXplIGZvciBmb3JtIGxhYmVscy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRmb3JtLWxhYmVsLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTQpICFkZWZhdWx0O1xuXG4vLy8gRm9udCB3ZWlnaHQgZm9yIGZvcm0gbGFiZWxzLlxuLy8vIEB0eXBlIEtleXdvcmRcbiRmb3JtLWxhYmVsLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWwgIWRlZmF1bHQ7XG5cbi8vLyBMaW5lIGhlaWdodCBmb3IgZm9ybSBsYWJlbHMuIFRoZSBoaWdoZXIgdGhlIG51bWJlciwgdGhlIG1vcmUgc3BhY2UgYmV0d2VlbiB0aGUgbGFiZWwgYW5kIGl0cyBpbnB1dCBmaWVsZC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRmb3JtLWxhYmVsLWxpbmUtaGVpZ2h0OiAxLjggIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3JtLWxhYmVsIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbjogMDtcbiAgZm9udC1zaXplOiAkZm9ybS1sYWJlbC1mb250LXNpemU7XG4gIGZvbnQtd2VpZ2h0OiAkZm9ybS1sYWJlbC1mb250LXdlaWdodDtcbiAgbGluZS1oZWlnaHQ6ICRmb3JtLWxhYmVsLWxpbmUtaGVpZ2h0O1xuICBjb2xvcjogJGZvcm0tbGFiZWwtY29sb3I7XG59XG5cbkBtaXhpbiBmb3JtLWxhYmVsLW1pZGRsZSB7XG4gICRpbnB1dC1ib3JkZXItd2lkdGg6IGdldC1ib3JkZXItdmFsdWUoJGlucHV0LWJvcmRlciwgd2lkdGgpO1xuICBtYXJnaW46IDAgMCAkZm9ybS1zcGFjaW5nO1xuICBwYWRkaW5nOiAoJGZvcm0tc3BhY2luZyAvIDIgKyByZW0tY2FsYygkaW5wdXQtYm9yZGVyLXdpZHRoKSkgMDtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tZm9ybS1sYWJlbCB7XG4gIGxhYmVsIHtcbiAgICBAaW5jbHVkZSBmb3JtLWxhYmVsO1xuXG4gICAgJi5taWRkbGUge1xuICAgICAgQGluY2x1ZGUgZm9ybS1sYWJlbC1taWRkbGU7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmb3Jtc1xuLy8vL1xuXG4vLy8gRGVmYXVsdCBjb2xvciBmb3IgaGVscCB0ZXh0LlxuLy8vIEB0eXBlIENvbG9yXG4kaGVscHRleHQtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBzaXplIGZvciBoZWxwIHRleHQuXG4vLy8gQHR5cGUgTnVtYmVyXG4kaGVscHRleHQtZm9udC1zaXplOiByZW0tY2FsYygxMykgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgc3R5bGUgZm9yIGhlbHAgdGV4dC5cbi8vLyBAdHlwZSBLZXl3b3JkXG4kaGVscHRleHQtZm9udC1zdHlsZTogaXRhbGljICFkZWZhdWx0O1xuXG5AbWl4aW4gZm91bmRhdGlvbi1mb3JtLWhlbHB0ZXh0IHtcbiAgLmhlbHAtdGV4dCB7XG4gICAgJG1hcmdpbi10b3A6ICgkZm9ybS1zcGFjaW5nICogMC41KSAqIC0xO1xuXG4gICAgbWFyZ2luLXRvcDogJG1hcmdpbi10b3A7XG4gICAgZm9udC1zaXplOiAkaGVscHRleHQtZm9udC1zaXplO1xuICAgIGZvbnQtc3R5bGU6ICRoZWxwdGV4dC1mb250LXN0eWxlO1xuICAgIGNvbG9yOiAkaGVscHRleHQtY29sb3I7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZvcm1zXG4vLy8vXG5cbi8vLyBDb2xvciBvZiBsYWJlbHMgcHJlZml4ZWQgdG8gYW4gaW5wdXQuXG4vLy8gQHR5cGUgQ29sb3JcbiRpbnB1dC1wcmVmaXgtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgbGFiZWxzIHByZWZpeGVkIHRvIGFuIGlucHV0LlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtcHJlZml4LWJhY2tncm91bmQ6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIGFyb3VuZCBsYWJlbHMgcHJlZml4ZWQgdG8gYW4gaW5wdXQuXG4vLy8gQHR5cGUgQm9yZGVyXG4kaW5wdXQtcHJlZml4LWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIExlZnQvcmlnaHQgcGFkZGluZyBvZiBhbiBwcmUvcG9zdGZpeGVkIGlucHV0IGxhYmVsXG4kaW5wdXQtcHJlZml4LXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZvcm0tcHJlcG9zdGZpeCB7XG4gICRoZWlnaHQ6ICgkaW5wdXQtZm9udC1zaXplICsgJGZvcm0tc3BhY2luZyAqIDEuNSk7XG5cbiAgLmlucHV0LWdyb3VwIHtcbiAgICBkaXNwbGF5OiBpZigkZ2xvYmFsLWZsZXhib3gsIGZsZXgsIHRhYmxlKTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW4tYm90dG9tOiAkZm9ybS1zcGFjaW5nO1xuXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICB9XG5cbiAgICA+IDpmaXJzdC1jaGlsZCB7XG4gICAgICBib3JkZXItcmFkaXVzOiBpZigkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09IHJ0bCwgMCAkZ2xvYmFsLXJhZGl1cyAkZ2xvYmFsLXJhZGl1cyAwLCAkZ2xvYmFsLXJhZGl1cyAwIDAgJGdsb2JhbC1yYWRpdXMpO1xuICAgIH1cblxuICAgID4gOmxhc3QtY2hpbGQge1xuICAgICAgPiAqIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogaWYoJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSBydGwsICRnbG9iYWwtcmFkaXVzIDAgMCAkZ2xvYmFsLXJhZGl1cywgMCAkZ2xvYmFsLXJhZGl1cyAkZ2xvYmFsLXJhZGl1cyAwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAlaW5wdXQtZ3JvdXAtY2hpbGQge1xuICAgIG1hcmdpbjogMDtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICAgQGlmIG5vdCAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuICB9XG5cbiAgLmlucHV0LWdyb3VwLWxhYmVsIHtcbiAgICBAZXh0ZW5kICVpbnB1dC1ncm91cC1jaGlsZDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcGFkZGluZzogMCAkaW5wdXQtcHJlZml4LXBhZGRpbmc7XG4gICAgYmFja2dyb3VuZDogJGlucHV0LXByZWZpeC1iYWNrZ3JvdW5kO1xuICAgIGNvbG9yOiAkaW5wdXQtcHJlZml4LWNvbG9yO1xuICAgIGJvcmRlcjogJGlucHV0LXByZWZpeC1ib3JkZXI7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgd2lkdGg6IDElO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIH1cblxuICAgIEBpZiBoYXMtdmFsdWUoJGlucHV0LXByZWZpeC1ib3JkZXIpIHtcbiAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItI3skZ2xvYmFsLXJpZ2h0fTogMDtcbiAgICAgIH1cblxuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLSN7JGdsb2JhbC1sZWZ0fTogMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuaW5wdXQtZ3JvdXAtZmllbGQge1xuICAgIEBleHRlbmQgJWlucHV0LWdyb3VwLWNoaWxkO1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG5cbiAgICAvLyBzY3NzLWxpbnQ6ZGlzYWJsZSBaZXJvVW5pdFxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZmxleDogMSAxIDBweDtcbiAgICAgIGhlaWdodDogYXV0bztcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIC5pbnB1dC1ncm91cC1idXR0b24ge1xuICAgIEBleHRlbmQgJWlucHV0LWdyb3VwLWNoaWxkO1xuICAgIHBhZGRpbmctdG9wOiAwO1xuICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIHdpZHRoOiAxJTtcbiAgICB9XG5cbiAgICBhLFxuICAgIGlucHV0LFxuICAgIGJ1dHRvbiB7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxuICB9XG5cbiAgLy8gU3BlY2lmaWNpdHkgYnVtcCBuZWVkZWQgdG8gcHJldmVudCBvdmVycmlkZSBieSBidXR0b25zXG4gIC8vIHNjc3MtbGludDpkaXNhYmxlIFF1YWxpZnlpbmdTZWxlY3RvclxuICBAaWYgbm90ICRnbG9iYWwtZmxleGJveCB7XG4gICAgICAuaW5wdXQtZ3JvdXAgLmlucHV0LWdyb3VwLWJ1dHRvbiB7XG4gICAgICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZm9ybXNcbi8vLy9cblxuLy8vIERlZmF1bHQgYm9yZGVyIGFyb3VuZCBjdXN0b20gZmllbGRzZXRzLlxuLy8vIEB0eXBlIEJvcmRlclxuJGZpZWxkc2V0LWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBpbnNpZGUgY3VzdG9tIGZpZWxkc2V0cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRmaWVsZHNldC1wYWRkaW5nOiByZW0tY2FsYygyMCkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IG1hcmdpbiBhcm91bmQgY3VzdG9tIGZpZWxkc2V0cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRmaWVsZHNldC1tYXJnaW46IHJlbS1jYWxjKDE4IDApICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwYWRkaW5nIGJldHdlZW4gdGhlIGxlZ2VuZCB0ZXh0IGFuZCBmaWVsZHNldCBib3JkZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbGVnZW5kLXBhZGRpbmc6IHJlbS1jYWxjKDAgMykgIWRlZmF1bHQ7XG5cbkBtaXhpbiBmaWVsZHNldCB7XG4gIGJvcmRlcjogJGZpZWxkc2V0LWJvcmRlcjtcbiAgcGFkZGluZzogJGZpZWxkc2V0LXBhZGRpbmc7XG4gIG1hcmdpbjogJGZpZWxkc2V0LW1hcmdpbjtcblxuICBsZWdlbmQge1xuICAgIC8vIENvdmVycyB1cCB0aGUgZmllbGRzZXQncyBib3JkZXIgdG8gY3JlYXRlIGFydGlmaWNpYWwgcGFkZGluZ1xuICAgIGJhY2tncm91bmQ6ICRib2R5LWJhY2tncm91bmQ7XG4gICAgcGFkZGluZzogJGxlZ2VuZC1wYWRkaW5nO1xuICAgIG1hcmdpbjogMDtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiByZW0tY2FsYygtMyk7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tZm9ybS1maWVsZHNldCB7XG4gIGZpZWxkc2V0IHtcbiAgICBib3JkZXI6IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW46IDA7XG4gIH1cblxuICBsZWdlbmQge1xuICAgIG1hcmdpbi1ib3R0b206ICRmb3JtLXNwYWNpbmcgKiAwLjU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG5cbiAgLmZpZWxkc2V0IHtcbiAgICBAaW5jbHVkZSBmaWVsZHNldDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZm9ybXNcbi8vLy9cblxuLy8vIEJhY2tncm91bmQgY29sb3IgZm9yIHNlbGVjdCBtZW51cy5cbi8vLyBAdHlwZSBDb2xvclxuJHNlbGVjdC1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciBvZiB0aGUgZHJvcGRvd24gdHJpYW5nbGUgaW5zaWRlIHNlbGVjdCBtZW51cy4gU2V0IHRvIGB0cmFuc3BhcmVudGAgdG8gcmVtb3ZlIGl0IGVudGlyZWx5LlxuLy8vIEB0eXBlIENvbG9yXG4kc2VsZWN0LXRyaWFuZ2xlLWNvbG9yOiAkZGFyay1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCByYWRpdXMgZm9yIHNlbGVjdCBtZW51cy5cbi8vLyBAdHlwZSBDb2xvclxuJHNlbGVjdC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG5AbWl4aW4gZm9ybS1zZWxlY3Qge1xuICAkaGVpZ2h0OiAoJGlucHV0LWZvbnQtc2l6ZSArICgkZm9ybS1zcGFjaW5nICogMS41KSAtIHJlbS1jYWxjKDEpKTtcblxuICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIHBhZGRpbmc6ICgkZm9ybS1zcGFjaW5nIC8gMik7XG4gIGJvcmRlcjogJGlucHV0LWJvcmRlcjtcbiAgbWFyZ2luOiAwIDAgJGZvcm0tc3BhY2luZztcbiAgZm9udC1zaXplOiAkaW5wdXQtZm9udC1zaXplO1xuICBmb250LWZhbWlseTogJGlucHV0LWZvbnQtZmFtaWx5O1xuICBsaW5lLWhlaWdodDogbm9ybWFsO1xuICBjb2xvcjogJGlucHV0LWNvbG9yO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2VsZWN0LWJhY2tncm91bmQ7XG4gIGJvcmRlci1yYWRpdXM6ICRzZWxlY3QtcmFkaXVzO1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcblxuICBAaWYgJHNlbGVjdC10cmlhbmdsZS1jb2xvciAhPSB0cmFuc3BhcmVudCB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC10cmlhbmdsZSgkc2VsZWN0LXRyaWFuZ2xlLWNvbG9yKTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDlweCA2cHg7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogJGdsb2JhbC1yaWdodCAoLSRmb3JtLXNwYWNpbmcpIGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLW9yaWdpbjogY29udGVudC1ib3g7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBwYWRkaW5nLSN7JGdsb2JhbC1yaWdodH06ICgkZm9ybS1zcGFjaW5nICogMS41KTtcbiAgfVxuXG4gIC8vIERpc2FibGVkIHN0YXRlXG4gICY6ZGlzYWJsZWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1iYWNrZ3JvdW5kLWRpc2FibGVkO1xuICAgIGN1cnNvcjogJGlucHV0LWN1cnNvci1kaXNhYmxlZDtcbiAgfVxuXG4gIC8vIEhpZGUgdGhlIGRyb3Bkb3duIGFycm93IHNob3duIGluIG5ld2VyIElFIHZlcnNpb25zXG4gICY6Oi1tcy1leHBhbmQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAmW211bHRpcGxlXSB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tZm9ybS1zZWxlY3Qge1xuICBzZWxlY3Qge1xuICAgIEBpbmNsdWRlIGZvcm0tc2VsZWN0O1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBzbGlkZXJcbi8vLy9cblxuLy8vIERlZmF1bHQgaGVpZ2h0IG9mIHRoZSBzbGlkZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc2xpZGVyLWhlaWdodDogMC41cmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBzbGlkZXIncyB0cmFjay5cbi8vLyBAdHlwZSBDb2xvclxuJHNsaWRlci1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2YgdGhlIGFjdGl2ZSBmaWxsIGNvbG9yIG9mIHRoZSBzbGlkZXIuXG4vLy8gQHR5cGUgQ29sb3JcbiRzbGlkZXItZmlsbC1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGhlaWdodCBvZiB0aGUgaGFuZGxlIG9mIHRoZSBzbGlkZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc2xpZGVyLWhhbmRsZS1oZWlnaHQ6IDEuNHJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgd2lkdGggb2YgdGhlIGhhbmRsZSBvZiB0aGUgc2xpZGVyLlxuLy8vIEB0eXBlIE51bWJlclxuJHNsaWRlci1oYW5kbGUtd2lkdGg6IDEuNHJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2YgdGhlIGhhbmRsZSBmb3IgdGhlIHNsaWRlci5cbi8vLyBAdHlwZSBDb2xvclxuJHNsaWRlci1oYW5kbGUtYmFja2dyb3VuZDogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZhZGUgYW1vdW50IG9mIGEgZGlzYWJsZWQgc2xpZGVyLlxuLy8vIEB0eXBlIE51bWJlclxuJHNsaWRlci1vcGFjaXR5LWRpc2FibGVkOiAwLjI1ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCByYWRpdXMgZm9yIHNsaWRlci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzbGlkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuQG1peGluIGZvdW5kYXRpb24tcmFuZ2UtaW5wdXQge1xuICAvLyBzY3NzLWxpbnQ6ZGlzYWJsZSBRdWFsaWZ5aW5nRWxlbWVudFxuICBpbnB1dFt0eXBlPVwicmFuZ2VcIl0ge1xuICAgICRtYXJnaW46ICgkc2xpZGVyLWhhbmRsZS1oZWlnaHQgLSAkc2xpZGVyLWhlaWdodCkgLyAyO1xuXG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIG1hcmdpbi10b3A6ICRtYXJnaW47XG4gICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbjtcbiAgICBib3JkZXI6IDA7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG5cbiAgICBAaWYgaGFzLXZhbHVlKCRzbGlkZXItcmFkaXVzKSB7XG4gICAgICBib3JkZXItcmFkaXVzOiAkc2xpZGVyLXJhZGl1cztcbiAgICB9XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgIG91dGxpbmU6IDA7XG4gICAgfVxuXG4gICAgJltkaXNhYmxlZF0ge1xuICAgICAgb3BhY2l0eTogJHNsaWRlci1vcGFjaXR5LWRpc2FibGVkO1xuICAgIH1cblxuICAgIC8vIENocm9tZS9TYWZhcmlcbiAgICAmOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFjayB7XG4gICAgICBoZWlnaHQ6ICRzbGlkZXItaGVpZ2h0O1xuICAgICAgYmFja2dyb3VuZDogJHNsaWRlci1iYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgICY6Oi13ZWJraXQtc2xpZGVyLWhhbmRsZSB7XG4gICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICBiYWNrZ3JvdW5kOiAkc2xpZGVyLWhhbmRsZS1iYWNrZ3JvdW5kO1xuICAgICAgd2lkdGg6ICRzbGlkZXItaGFuZGxlLXdpZHRoO1xuICAgICAgaGVpZ2h0OiAkc2xpZGVyLWhhbmRsZS1oZWlnaHQ7XG4gICAgICBtYXJnaW4tdG9wOiAtJG1hcmdpbjtcblxuICAgICAgQGlmIGhhcy12YWx1ZSgkc2xpZGVyLXJhZGl1cykge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkc2xpZGVyLXJhZGl1cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGaXJlZm94XG4gICAgJjo6LW1vei1yYW5nZS10cmFjayB7XG4gICAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICBoZWlnaHQ6ICRzbGlkZXItaGVpZ2h0O1xuICAgICAgYmFja2dyb3VuZDogJHNsaWRlci1iYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgICY6Oi1tb3otcmFuZ2UtdGh1bWIge1xuICAgICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgYmFja2dyb3VuZDogJHNsaWRlci1oYW5kbGUtYmFja2dyb3VuZDtcbiAgICAgIHdpZHRoOiAkc2xpZGVyLWhhbmRsZS13aWR0aDtcbiAgICAgIGhlaWdodDogJHNsaWRlci1oYW5kbGUtaGVpZ2h0O1xuICAgICAgbWFyZ2luLXRvcDogLSRtYXJnaW47XG5cbiAgICAgIEBpZiBoYXMtdmFsdWUoJHNsaWRlci1yYWRpdXMpIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHNsaWRlci1yYWRpdXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSW50ZXJuZXQgRXhwbG9yZXJcbiAgICAmOjotbXMtdHJhY2sge1xuICAgICAgaGVpZ2h0OiAkc2xpZGVyLWhlaWdodDtcbiAgICAgIGJhY2tncm91bmQ6ICRzbGlkZXItYmFja2dyb3VuZDtcbiAgICAgIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlcjogMDtcbiAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgYm9yZGVyLXRvcDogJG1hcmdpbiBzb2xpZCAkYm9keS1iYWNrZ3JvdW5kO1xuICAgICAgYm9yZGVyLWJvdHRvbTogJG1hcmdpbiBzb2xpZCAkYm9keS1iYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgICY6Oi1tcy10aHVtYiB7XG4gICAgICBiYWNrZ3JvdW5kOiAkc2xpZGVyLWhhbmRsZS1iYWNrZ3JvdW5kO1xuICAgICAgd2lkdGg6ICRzbGlkZXItaGFuZGxlLXdpZHRoO1xuICAgICAgaGVpZ2h0OiAkc2xpZGVyLWhhbmRsZS1oZWlnaHQ7XG4gICAgICBib3JkZXI6IDA7XG5cbiAgICAgIEBpZiBoYXMtdmFsdWUoJHNsaWRlci1yYWRpdXMpIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHNsaWRlci1yYWRpdXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjo6LW1zLWZpbGwtbG93ZXIge1xuICAgICAgYmFja2dyb3VuZDogJHNsaWRlci1maWxsLWJhY2tncm91bmQ7XG4gICAgfVxuXG4gICAgJjo6LW1zLWZpbGwtdXBwZXIge1xuICAgICAgYmFja2dyb3VuZDogJHNsaWRlci1iYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgIEBhdC1yb290IHtcbiAgICAgIG91dHB1dCB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkc2xpZGVyLWhhbmRsZS1oZWlnaHQ7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwLjVlbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb2dyZXNzLWJhclxuLy8vL1xuXG4vLy8gSGVpZ2h0IG9mIGEgcHJvZ3Jlc3MgYmFyLlxuLy8vIEB0eXBlIE51bWJlclxuJHByb2dyZXNzLWhlaWdodDogMXJlbSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgYSBwcm9ncmVzcyBiYXIuXG4vLy8gQHR5cGUgQ29sb3JcbiRwcm9ncmVzcy1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBCb3R0b20gbWFyZ2luIG9mIGEgcHJvZ3Jlc3MgYmFyLlxuLy8vIEB0eXBlIE51bWJlclxuJHByb2dyZXNzLW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBvZiBhIHByb2dyZXNzIGJhcidzIG1ldGVyLlxuLy8vIEB0eXBlIENvbG9yXG4kcHJvZ3Jlc3MtbWV0ZXItYmFja2dyb3VuZDogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHJhZGl1cyBvZiBhIHByb2dyZXNzIGJhci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwcm9ncmVzcy1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm9ncmVzcy1lbGVtZW50IHtcbiAgcHJvZ3Jlc3Mge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAkcHJvZ3Jlc3MtaGVpZ2h0O1xuICAgIG1hcmdpbi1ib3R0b206ICRwcm9ncmVzcy1tYXJnaW4tYm90dG9tO1xuXG4gICAgQGlmIGhhc3ZhbHVlKCRwcm9ncmVzcy1yYWRpdXMpIHtcbiAgICAgIGJvcmRlci1yYWRpdXM6ICRwcm9ncmVzcy1yYWRpdXM7XG4gICAgfVxuXG4gICAgLy8gRm9yIEZpcmVmb3hcbiAgICBiYWNrZ3JvdW5kOiAkcHJvZ3Jlc3MtYmFja2dyb3VuZDtcbiAgICBib3JkZXI6IDA7XG5cbiAgICAmOjotd2Via2l0LXByb2dyZXNzLWJhciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkcHJvZ3Jlc3MtYmFja2dyb3VuZDtcblxuICAgICAgQGlmIGhhc3ZhbHVlKCRwcm9ncmVzcy1yYWRpdXMpIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHByb2dyZXNzLXJhZGl1cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOjotd2Via2l0LXByb2dyZXNzLXZhbHVlIHtcbiAgICAgIGJhY2tncm91bmQ6ICRwcm9ncmVzcy1tZXRlci1iYWNrZ3JvdW5kO1xuXG4gICAgICBAaWYgaGFzdmFsdWUoJHByb2dyZXNzLXJhZGl1cykge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkcHJvZ3Jlc3MtcmFkaXVzO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6Oi1tb3otcHJvZ3Jlc3MtYmFyIHtcbiAgICAgIGJhY2tncm91bmQ6ICRwcm9ncmVzcy1tZXRlci1iYWNrZ3JvdW5kO1xuXG4gICAgICBAaWYgaGFzdmFsdWUoJHByb2dyZXNzLXJhZGl1cykge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkcHJvZ3Jlc3MtcmFkaXVzO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGZvdW5kYXRpb24tcGFsZXR0ZSB7XG4gICAgICAmLiN7JG5hbWV9IHtcbiAgICAgICAgLy8gSW50ZXJuZXQgRXhwbG9yZXIgc2V0cyB0aGUgZmlsbCB3aXRoIGNvbG9yXG4gICAgICAgIGNvbG9yOiAkY29sb3I7XG5cbiAgICAgICAgJjo6LXdlYmtpdC1wcm9ncmVzcy12YWx1ZSB7XG4gICAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgJjo6LW1vei1wcm9ncmVzcy1iYXIge1xuICAgICAgICAgIGJhY2tncm91bmQ6ICRjb2xvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICAvLyBGb3IgSUUgYW5kIEVkZ2UgIFxuICAgICY6Oi1tcy1maWxse1xuICAgICAgQGlmIGhhc3ZhbHVlKCRwcm9ncmVzcy1yYWRpdXMpIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHByb2dyZXNzLXJhZGl1czsgIFxuICAgICAgfVxuXG4gICAgICBib3JkZXI6IDA7ICAgICBcbiAgICB9IFxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBtZXRlclxuLy8vL1xuXG4vLy8gSGVpZ2h0IG9mIGEgYDxtZXRlcj5gIGVsZW1lbnQuXG4vLy8gQHR5cGUgTGVuZ3RoXG4kbWV0ZXItaGVpZ2h0OiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIHJhZGl1cyBvZiBhIGA8bWV0ZXI+YCBlbGVtZW50LlxuLy8vIEB0eXBlIExlbmd0aFxuJG1ldGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGEgYDxtZXRlcj5gIGVsZW1lbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiRtZXRlci1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBNZXRlciBmaWxsIGZvciBhbiBvcHRpbWFsIHZhbHVlIGluIGEgYDxtZXRlcj5gIGVsZW1lbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiRtZXRlci1maWxsLWdvb2Q6ICRzdWNjZXNzLWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gTWV0ZXIgZmlsbCBmb3IgYW4gYXZlcmFnZSB2YWx1ZSBpbiBhIGA8bWV0ZXI+YCBlbGVtZW50LlxuLy8vIEB0eXBlIENvbG9yXG4kbWV0ZXItZmlsbC1tZWRpdW06ICR3YXJuaW5nLWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gTWV0ZXIgZmlsbCBmb3IgYSBzdWJvcHRpbWFsIHZhbHVlIGluIGEgYDxtZXRlcj5gIGVsZW1lbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiRtZXRlci1maWxsLWJhZDogJGFsZXJ0LWNvbG9yICFkZWZhdWx0O1xuXG5AbWl4aW4gZm91bmRhdGlvbi1tZXRlci1lbGVtZW50IHtcbiAgbWV0ZXIge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAkbWV0ZXItaGVpZ2h0O1xuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG5cbiAgICBAaWYgaGFzLXZhbHVlKCRtZXRlci1yYWRpdXMpIHtcbiAgICAgIGJvcmRlci1yYWRpdXM6ICRtZXRlci1yYWRpdXM7XG4gICAgfVxuXG4gICAgLy8gRm9yIEZpcmVmb3hcbiAgICBiYWNrZ3JvdW5kOiAkbWV0ZXItYmFja2dyb3VuZDtcbiAgICBib3JkZXI6IDA7XG5cbiAgICAvLyBDaHJvbWUvU2FmYXJpL0VkZ2VcbiAgICAmOjotd2Via2l0LW1ldGVyLWJhciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkbWV0ZXItYmFja2dyb3VuZDtcblxuICAgICAgQGlmIGhhcy12YWx1ZSgkbWV0ZXItcmFkaXVzKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRtZXRlci1yYWRpdXM7XG4gICAgICB9XG4gICAgICBcbiAgICAgIGJvcmRlcjogMDtcbiAgICB9XG5cbiAgICAmOjotd2Via2l0LW1ldGVyLWlubmVyLWVsZW1lbnQge1xuICAgICAgQGlmIGhhcy12YWx1ZSgkbWV0ZXItcmFkaXVzKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRtZXRlci1yYWRpdXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjo6LXdlYmtpdC1tZXRlci1vcHRpbXVtLXZhbHVlIHtcbiAgICAgIGJhY2tncm91bmQ6ICRtZXRlci1maWxsLWdvb2Q7XG5cbiAgICAgIEBpZiBoYXMtdmFsdWUoJG1ldGVyLXJhZGl1cykge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkbWV0ZXItcmFkaXVzO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6Oi13ZWJraXQtbWV0ZXItc3Vib3B0aW11bS12YWx1ZSB7XG4gICAgICBiYWNrZ3JvdW5kOiAkbWV0ZXItZmlsbC1tZWRpdW07XG5cbiAgICAgIEBpZiBoYXMtdmFsdWUoJG1ldGVyLXJhZGl1cykge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkbWV0ZXItcmFkaXVzO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6Oi13ZWJraXQtbWV0ZXItZXZlbi1sZXNzLWdvb2QtdmFsdWUge1xuICAgICAgYmFja2dyb3VuZDogJG1ldGVyLWZpbGwtYmFkO1xuXG4gICAgICBAaWYgaGFzLXZhbHVlKCRtZXRlci1yYWRpdXMpIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJG1ldGVyLXJhZGl1cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOjotbW96LW1ldGVyLWJhciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvcjtcblxuICAgICAgQGlmIGhhcy12YWx1ZSgkbWV0ZXItcmFkaXVzKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRtZXRlci1yYWRpdXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjotbW96LW1ldGVyLW9wdGltdW06Oi1tb3otbWV0ZXItYmFyIHtcbiAgICAgIGJhY2tncm91bmQ6ICRtZXRlci1maWxsLWdvb2Q7XG4gICAgfVxuXG4gICAgJjotbW96LW1ldGVyLXN1Yi1vcHRpbXVtOjotbW96LW1ldGVyLWJhciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkbWV0ZXItZmlsbC1tZWRpdW07XG4gICAgfVxuXG4gICAgJjotbW96LW1ldGVyLXN1Yi1zdWItb3B0aW11bTo6LW1vei1tZXRlci1iYXIge1xuICAgICAgYmFja2dyb3VuZDogJG1ldGVyLWZpbGwtYmFkO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgYWJpZGVcbi8vLy9cblxuLy8vIFNldHMgaWYgZXJyb3Igc3R5bGVzIHNob3VsZCBiZSBhZGRlZCB0byBpbnB1dHMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGFiaWRlLWlucHV0czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIFNldHMgaWYgZXJyb3Igc3R5bGVzIHNob3VsZCBiZSBhZGRlZCB0byBsYWJlbHMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGFiaWRlLWxhYmVsczogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3IgdG8gdXNlIGZvciBpbnZhbGlkIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtYmFja2dyb3VuZC1pbnZhbGlkOiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsIGFsZXJ0KSAhZGVmYXVsdDtcblxuLy8vIENvbG9yIHRvIHVzZSBmb3IgbGFiZWxzIG9mIGludmFsaWQgaW5wdXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kZm9ybS1sYWJlbC1jb2xvci1pbnZhbGlkOiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsIGFsZXJ0KSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBjb2xvciBmb3IgZm9ybSBlcnJvciB0ZXh0LlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtZXJyb3ItY29sb3I6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgYWxlcnQpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IHNpemUgZm9yIGZvcm0gZXJyb3IgdGV4dC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRpbnB1dC1lcnJvci1mb250LXNpemU6IHJlbS1jYWxjKDEyKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCB3ZWlnaHQgZm9yIGZvcm0gZXJyb3IgdGV4dC5cbi8vLyBAdHlwZSBLZXl3b3JkXG4kaW5wdXQtZXJyb3ItZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQgIWRlZmF1bHQ7XG5cbi8vLyBTdHlsZXMgdGhlIGJhY2tncm91bmQgYW5kIGJvcmRlciBvZiBhbiBpbnB1dCBmaWVsZCB0byBoYXZlIGFuIGVycm9yIHN0YXRlLlxuLy8vXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQgWyRhbGVydC1jb2xvcl0gLSBDb2xvciB0byB1c2UgZm9yIHRoZSBiYWNrZ3JvdW5kIGFuZCBib3JkZXIuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYWNrZ3JvdW5kLWFscGhhIFswLjFdIC0gVHJhbnNwYXJlbmN5IGxldmVsIG9mIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLlxuQG1peGluIGZvcm0taW5wdXQtZXJyb3IoXG4gICRiYWNrZ3JvdW5kOiAkaW5wdXQtYmFja2dyb3VuZC1pbnZhbGlkLFxuICAkYmFja2dyb3VuZC1hbHBoYTogMC4xXG4pIHtcbiAgJjpub3QoOmZvY3VzKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgkYmFja2dyb3VuZCwgJGJhY2tncm91bmQtYWxwaGEpO1xuICAgIGJvcmRlci1jb2xvcjogJGJhY2tncm91bmQ7XG4gIH1cbn1cblxuLy8vIEFkZHMgZXJyb3Igc3R5bGVzIHRvIGEgZm9ybSBlbGVtZW50LCB1c2luZyB0aGUgdmFsdWVzIGluIHRoZSBzZXR0aW5ncyBmaWxlLlxuQG1peGluIGZvcm0tZXJyb3Ige1xuICBkaXNwbGF5OiBub25lO1xuICBtYXJnaW4tdG9wOiAkZm9ybS1zcGFjaW5nICogLTAuNTtcbiAgbWFyZ2luLWJvdHRvbTogJGZvcm0tc3BhY2luZztcbiAgZm9udC1zaXplOiAkaW5wdXQtZXJyb3ItZm9udC1zaXplO1xuICBmb250LXdlaWdodDogJGlucHV0LWVycm9yLWZvbnQtd2VpZ2h0O1xuICBjb2xvcjogJGlucHV0LWVycm9yLWNvbG9yO1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1mb3JtLWVycm9yIHtcbiAgQGlmICRhYmlkZS1pbnB1dHMge1xuICAgIC8vIEVycm9yIGNsYXNzIGZvciBpbnZhbGlkIGlucHV0c1xuICAgIC5pcy1pbnZhbGlkLWlucHV0IHtcbiAgICAgIEBpbmNsdWRlIGZvcm0taW5wdXQtZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgQGlmICRhYmlkZS1sYWJlbHMge1xuICAgIC8vIEVycm9yIGNsYXNzIGZvciBsYWJlbHMgb2YgaW52YWxpZCBvdXRwdXRzXG4gICAgLmlzLWludmFsaWQtbGFiZWwge1xuICAgICAgY29sb3I6ICRmb3JtLWxhYmVsLWNvbG9yLWludmFsaWQ7XG4gICAgfVxuICB9XG5cbiAgLy8gRm9ybSBlcnJvciBlbGVtZW50XG4gIC5mb3JtLWVycm9yIHtcbiAgICBAaW5jbHVkZSBmb3JtLWVycm9yO1xuXG4gICAgJi5pcy12aXNpYmxlIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLyBIaWRlIGFuIGVsZW1lbnQgYnkgZGVmYXVsdCwgb25seSBkaXNwbGF5aW5nIGl0IGFib3ZlIGEgY2VydGFpbiBzY3JlZW4gc2l6ZS5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIC0gQnJlYWtwb2ludCB0byB1c2UuICoqTXVzdCBiZSBhIGJyZWFrcG9pbnQgZGVmaW5lZCBpbiBgJGJyZWFrcG9pbnRzYC4qKlxuQG1peGluIHNob3ctZm9yKCRzaXplKSB7XG4gICRzaXplOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJHNpemUpO1xuICAkc2l6ZTogLXpmLWJwLXRvLWVtKCRzaXplKSAtICgxIC8gMTYpO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUgZG93bikge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuXG4vLy8gSGlkZSBhbiBlbGVtZW50IGJ5IGRlZmF1bHQsIG9ubHkgZGlzcGxheWluZyBpdCB3aXRoaW4gYSBjZXJ0YWluIGJyZWFrcG9pbnQuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc2l6ZSAtIEJyZWFrcG9pbnQgdG8gdXNlLiAqKk11c3QgYmUgYSBicmVha3BvaW50IGRlZmluZWQgaW4gYCRicmVha3BvaW50c2AuKipcbkBtaXhpbiBzaG93LWZvci1vbmx5KCRzaXplKSB7XG4gICRsb3dlci1ib3VuZC1zaXplOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJHNpemUpO1xuICAkdXBwZXItYm91bmQtc2l6ZTogLXpmLW1hcC1uZXh0KCRicmVha3BvaW50cywgJHNpemUpO1xuXG4gIC8vIG1vcmUgb2Z0ZW4gdGhhbiBub3QgdGhpcyB3aWxsIGJlIGNvcnJlY3QsIGp1c3Qgb25lIHRpbWUgcm91bmQgdGhlIGxvb3AgaXQgd29uJ3Qgc28gc2V0IGluIHNjb3BlIGhlcmVcbiAgJGxvd2VyLWJvdW5kOiAtemYtYnAtdG8tZW0oJGxvd2VyLWJvdW5kLXNpemUpIC0gKDEgLyAxNik7XG4gIC8vIHRlc3QgYWN0dWFsIGxvd2VyLWJvdW5kLXNpemUsIGlmIDAgc2V0IGl0IHRvIDBlbVxuICBAaWYgc3RyaXAtdW5pdCgkbG93ZXItYm91bmQtc2l6ZSkgPT0gMCB7XG4gICAgJGxvd2VyLWJvdW5kOiAtemYtYnAtdG8tZW0oJGxvd2VyLWJvdW5kLXNpemUpO1xuICB9XG5cbiAgQGlmICR1cHBlci1ib3VuZC1zaXplID09IG51bGwge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRsb3dlci1ib3VuZCkge1xuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJHVwcGVyLWJvdW5kOiAtemYtYnAtdG8tZW0oJHVwcGVyLWJvdW5kLXNpemUpO1xuXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJGxvd2VyLWJvdW5kKSwgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkdXBwZXItYm91bmQpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLy8gU2hvdyBhbiBlbGVtZW50IGJ5IGRlZmF1bHQsIGFuZCBoaWRlIGl0IGFib3ZlIGEgY2VydGFpbiBzY3JlZW4gc2l6ZS5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIC0gQnJlYWtwb2ludCB0byB1c2UuICoqTXVzdCBiZSBhIGJyZWFrcG9pbnQgZGVmaW5lZCBpbiBgJGJyZWFrcG9pbnRzYC4qKlxuQG1peGluIGhpZGUtZm9yKCRzaXplKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLy8vIFNob3cgYW4gZWxlbWVudCBieSBkZWZhdWx0LCBhbmQgaGlkZSBpdCBhYm92ZSBhIGNlcnRhaW4gc2NyZWVuIHNpemUuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc2l6ZSAtIEJyZWFrcG9pbnQgdG8gdXNlLiAqKk11c3QgYmUgYSBicmVha3BvaW50IGRlZmluZWQgaW4gYCRicmVha3BvaW50c2AuKipcbkBtaXhpbiBoaWRlLWZvci1vbmx5KCRzaXplKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUgb25seSkge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi12aXNpYmlsaXR5LWNsYXNzZXMge1xuICAvLyBCYXNpYyBoaWRpbmcgY2xhc3Nlc1xuICAuaGlkZSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLmludmlzaWJsZSB7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB9XG5cbiAgLy8gUmVzcG9uc2l2ZSB2aXNpYmlsaXR5IGNsYXNzZXNcbiAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgIC5oaWRlLWZvci0jeyRzaXplfSB7XG4gICAgICAgIEBpbmNsdWRlIGhpZGUtZm9yKCRzaXplKTtcbiAgICAgIH1cblxuICAgICAgLnNob3ctZm9yLSN7JHNpemV9IHtcbiAgICAgICAgQGluY2x1ZGUgc2hvdy1mb3IoJHNpemUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5oaWRlLWZvci0jeyRzaXplfS1vbmx5IHtcbiAgICAgIEBpbmNsdWRlIGhpZGUtZm9yLW9ubHkoJHNpemUpO1xuICAgIH1cblxuICAgIC5zaG93LWZvci0jeyRzaXplfS1vbmx5IHtcbiAgICAgIEBpbmNsdWRlIHNob3ctZm9yLW9ubHkoJHNpemUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNjcmVlbiByZWFkZXIgdmlzaWJpbGl0eSBjbGFzc2VzXG4gIC8vIE5lZWQgYSBcImhpZGUtZm9yLXNyXCIgY2xhc3M/IEFkZCBhcmlhLWhpZGRlbj0ndHJ1ZScgdG8gdGhlIGVsZW1lbnRcbiAgLnNob3ctZm9yLXNyLFxuICAuc2hvdy1vbi1mb2N1cyB7XG4gICAgQGluY2x1ZGUgZWxlbWVudC1pbnZpc2libGU7XG4gIH1cblxuICAvLyBPbmx5IGRpc3BsYXkgdGhlIGVsZW1lbnQgd2hlbiBpdCdzIGZvY3VzZWRcbiAgLnNob3ctb24tZm9jdXMge1xuICAgICY6YWN0aXZlLFxuICAgICY6Zm9jdXMge1xuICAgICAgQGluY2x1ZGUgZWxlbWVudC1pbnZpc2libGUtb2ZmO1xuICAgIH1cbiAgfVxuXG4gIC8vIExhbmRzY2FwZSBhbmQgcG9ydHJhaXQgdmlzaWJpbGl0eVxuICAuc2hvdy1mb3ItbGFuZHNjYXBlLFxuICAuaGlkZS1mb3ItcG9ydHJhaXQge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhbmRzY2FwZSkge1xuICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KHBvcnRyYWl0KSB7XG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgLmhpZGUtZm9yLWxhbmRzY2FwZSxcbiAgLnNob3ctZm9yLXBvcnRyYWl0IHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhbmRzY2FwZSkge1xuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQocG9ydHJhaXQpIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmbG9hdFxuLy8vL1xuXG5AbWl4aW4gZm91bmRhdGlvbi1mbG9hdC1jbGFzc2VzIHtcbiAgLmZsb2F0LWxlZnQge1xuICAgIGZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQ7XG4gIH1cblxuICAuZmxvYXQtcmlnaHQge1xuICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50O1xuICB9XG5cbiAgLmZsb2F0LWNlbnRlciB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICB9XG5cbiAgLmNsZWFyZml4IHtcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgYnV0dG9uXG4vLy8vXG5cbi8vLyBQYWRkaW5nIGluc2lkZSBidXR0b25zLlxuLy8vIEB0eXBlIExpc3RcbiRidXR0b24tcGFkZGluZzogMC44NWVtIDFlbSAhZGVmYXVsdDtcblxuLy8vIE1hcmdpbiBhcm91bmQgYnV0dG9ucy5cbi8vLyBAdHlwZSBMaXN0XG4kYnV0dG9uLW1hcmdpbjogMCAwICRnbG9iYWwtbWFyZ2luIDAgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZpbGwgZm9yIGJ1dHRvbnMuIENhbiBlaXRoZXIgYmUgYHNvbGlkYCBvciBgaG9sbG93YC5cbi8vLyBAdHlwZSBLZXl3b3JkXG4kYnV0dG9uLWZpbGw6IHNvbGlkICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIGZvciBidXR0b25zLlxuLy8vIEB0eXBlIENvbG9yXG4kYnV0dG9uLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvbiBob3ZlciBmb3IgYnV0dG9ucy5cbi8vLyBAdHlwZSBDb2xvclxuJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyOiBzY2FsZS1jb2xvcigkYnV0dG9uLWJhY2tncm91bmQsICRsaWdodG5lc3M6IC0xNSUpICFkZWZhdWx0O1xuXG4vLy8gRm9udCBjb2xvciBmb3IgYnV0dG9ucy5cbi8vLyBAdHlwZSBMaXN0XG4kYnV0dG9uLWNvbG9yOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBGb250IGNvbG9yIGZvciBidXR0b25zLCBpZiB0aGUgYmFja2dyb3VuZCBpcyBsaWdodC5cbi8vLyBAdHlwZSBMaXN0XG4kYnV0dG9uLWNvbG9yLWFsdDogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIHJhZGl1cyBmb3IgYnV0dG9ucywgZGVmYXVsdGVkIHRvIGdsb2JhbC1yYWRpdXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnV0dG9uLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbi8vLyBTaXplcyBmb3IgYnV0dG9ucy5cbi8vLyBAdHlwZSBNYXBcbiRidXR0b24tc2l6ZXM6IChcbiAgdGlueTogMC42cmVtLFxuICBzbWFsbDogMC43NXJlbSxcbiAgZGVmYXVsdDogMC45cmVtLFxuICBsYXJnZTogMS4yNXJlbSxcbikgIWRlZmF1bHQ7XG5cbi8vLyBvcGFjaXR5IGZvciBhIGRpc2FibGVkIGJ1dHRvbi5cbi8vLyBAdHlwZSBMaXN0XG4kYnV0dG9uLW9wYWNpdHktZGlzYWJsZWQ6IDAuMjUgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGxpZ2h0bmVzcyBvbiBob3ZlciBmb3IgYnV0dG9ucy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRidXR0b24tYmFja2dyb3VuZC1ob3Zlci1saWdodG5lc3M6IC0yMCUgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciBsaWdodG5lc3Mgb24gaG92ZXIgZm9yIGhvbGxvdyBidXR0b25zLlxuLy8vIEB0eXBlIE51bWJlclxuJGJ1dHRvbi1ob2xsb3ctaG92ZXItbGlnaHRuZXNzOiAtNTAlICFkZWZhdWx0O1xuXG4vLyBJbnRlcm5hbDogZmxpcCBmcm9tIG1hcmdpbi1yaWdodCB0byBtYXJnaW4tbGVmdCBmb3IgZGVmYXVsdHNcbkBpZiAkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09ICdydGwnIHtcbiAgJGJ1dHRvbi1tYXJnaW46IDAgMCAkZ2xvYmFsLW1hcmdpbiAkZ2xvYmFsLW1hcmdpbiAhZGVmYXVsdDtcbn1cblxuLy8gVE9ETzogRG9jdW1lbnQgYnV0dG9uLWJhc2UoKSBtaXhpblxuQG1peGluIGJ1dHRvbi1iYXNlIHtcbiAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMjVzIGVhc2Utb3V0LCBjb2xvciAwLjI1cyBlYXNlLW91dDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1yYWRpdXM6ICRidXR0b24tcmFkaXVzO1xuICBwYWRkaW5nOiAkYnV0dG9uLXBhZGRpbmc7XG4gIG1hcmdpbjogJGJ1dHRvbi1tYXJnaW47XG4gIGZvbnQtc2l6ZTogbWFwLWdldCgkYnV0dG9uLXNpemVzLCBkZWZhdWx0KTtcbn1cblxuLy8vIEV4cGFuZHMgYSBidXR0b24gdG8gbWFrZSBpdCBmdWxsLXdpZHRoLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGV4cGFuZCBbdHJ1ZV0gLSBTZXQgdG8gYHRydWVgIHRvIGVuYWJsZSB0aGUgZXhwYW5kIGJlaGF2aW9yLiBTZXQgdG8gYGZhbHNlYCB0byByZXZlcnNlIHRoaXMgYmVoYXZpb3IuXG5AbWl4aW4gYnV0dG9uLWV4cGFuZCgkZXhwYW5kOiB0cnVlKSB7XG4gIEBpZiAkZXhwYW5kIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbiAgQGVsc2Uge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB3aWR0aDogYXV0bztcbiAgICBtYXJnaW46ICRidXR0b24tbWFyZ2luO1xuICB9XG59XG5cbi8vLyBTZXRzIHRoZSB2aXN1YWwgc3R5bGUgb2YgYSBidXR0b24uXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQgWyRidXR0b24tYmFja2dyb3VuZF0gLSBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBidXR0b24uXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQtaG92ZXIgWyRidXR0b24tYmFja2dyb3VuZC1ob3Zlcl0gLSBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBidXR0b24gb24gaG92ZXIuIFNldCB0byBgYXV0b2AgdG8gaGF2ZSB0aGUgbWl4aW4gYXV0b21hdGljYWxseSBnZW5lcmF0ZSBhIGhvdmVyIGNvbG9yLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbJGJ1dHRvbi1jb2xvcl0gLSBUZXh0IGNvbG9yIG9mIHRoZSBidXR0b24uIFNldCB0byBgYXV0b2AgdG8gYXV0b21hdGljYWxseSBnZW5lcmF0ZSBhIGNvbG9yIGJhc2VkIG9uIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLlxuQG1peGluIGJ1dHRvbi1zdHlsZShcbiAgJGJhY2tncm91bmQ6ICRidXR0b24tYmFja2dyb3VuZCxcbiAgJGJhY2tncm91bmQtaG92ZXI6ICRidXR0b24tYmFja2dyb3VuZC1ob3ZlcixcbiAgJGNvbG9yOiAkYnV0dG9uLWNvbG9yLFxuICAkYmFja2dyb3VuZC1ob3Zlci1saWdodG5lc3M6ICRidXR0b24tYmFja2dyb3VuZC1ob3Zlci1saWdodG5lc3Ncbikge1xuICBAaWYgJGNvbG9yID09IGF1dG8ge1xuICAgICRjb2xvcjogZm9yZWdyb3VuZCgkYmFja2dyb3VuZCwgJGJ1dHRvbi1jb2xvci1hbHQsICRidXR0b24tY29sb3IpO1xuICB9XG5cbiAgQGlmICRiYWNrZ3JvdW5kLWhvdmVyID09IGF1dG8ge1xuICAgICRiYWNrZ3JvdW5kLWhvdmVyOiBzY2FsZS1jb2xvcigkYmFja2dyb3VuZCwgJGxpZ2h0bmVzczogJGJhY2tncm91bmQtaG92ZXItbGlnaHRuZXNzKTtcbiAgfVxuXG4gIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuICBjb2xvcjogJGNvbG9yO1xuXG4gICY6aG92ZXIsICY6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kLWhvdmVyO1xuICAgIGNvbG9yOiAkY29sb3I7XG4gIH1cbn1cblxuLy8vIFJlbW92ZXMgYmFja2dyb3VuZCBmaWxsIG9uIGhvdmVyIGFuZCBmb2N1cyBmb3IgaG9sbG93IGJ1dHRvbnMuXG5AbWl4aW4gYnV0dG9uLWhvbGxvdyB7XG4gICYsXG4gICY6aG92ZXIsICY6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICB9XG59XG5cbkBtaXhpbiBidXR0b24taG9sbG93LXN0eWxlKFxuICAkY29sb3I6ICRwcmltYXJ5LWNvbG9yLFxuICAkaG92ZXItbGlnaHRuZXNzOiAkYnV0dG9uLWhvbGxvdy1ob3Zlci1saWdodG5lc3Ncbikge1xuICAkY29sb3ItaG92ZXI6IHNjYWxlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJGhvdmVyLWxpZ2h0bmVzcyk7XG5cbiAgYm9yZGVyOiAxcHggc29saWQgJGNvbG9yO1xuICBjb2xvcjogJGNvbG9yO1xuXG4gICY6aG92ZXIsICY6Zm9jdXMge1xuICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLWhvdmVyO1xuICAgIGNvbG9yOiAkY29sb3ItaG92ZXI7XG4gIH1cbn1cblxuLy8vIEFkZHMgZGlzYWJsZWQgc3R5bGVzIHRvIGEgYnV0dG9uIGJ5IGZhZGluZyB0aGUgZWxlbWVudCwgcmVzZXRpbmcgdGhlIGN1cnNvciwgYW5kIGRpc2FibGluZyBwb2ludGVyIGV2ZW50cy5cbkBtaXhpbiBidXR0b24tZGlzYWJsZWQoJGNvbG9yOiAkcHJpbWFyeS1jb2xvcikge1xuICBvcGFjaXR5OiAkYnV0dG9uLW9wYWNpdHktZGlzYWJsZWQ7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG5cbiAgJjpob3ZlciwgJjpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICAgIGNvbG9yOiAkYnV0dG9uLWNvbG9yO1xuICB9XG59XG5cbi8vLyBBZGRzIGEgZHJvcGRvd24gYXJyb3cgdG8gYSBidXR0b24uXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzaXplIFswLjRlbV0gLSBTaXplIG9mIHRoZSBhcnJvdy4gV2UgcmVjb21tZW5kIHVzaW5nIGFuIGBlbWAgdmFsdWUgc28gdGhlIHRyaWFuZ2xlIHNjYWxlcyB3aGVuIHVzZWQgaW5zaWRlIGRpZmZlcmVudCBzaXplcyBvZiBidXR0b25zLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbd2hpdGVdIC0gQ29sb3Igb2YgdGhlIGFycm93LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkb2Zmc2V0IFskYnV0dG9uLXBhZGRpbmddIC0gRGlzdGFuY2UgYmV0d2VlbiB0aGUgYXJyb3cgYW5kIHRoZSB0ZXh0IG9mIHRoZSBidXR0b24uIERlZmF1bHRzIHRvIHdoYXRldmVyIHRoZSByaWdodCBwYWRkaW5nIG9mIGEgYnV0dG9uIGlzLlxuQG1peGluIGJ1dHRvbi1kcm9wZG93bihcbiAgJHNpemU6IDAuNGVtLFxuICAkY29sb3I6ICR3aGl0ZSxcbiAgJG9mZnNldDogZ2V0LXNpZGUoJGJ1dHRvbi1wYWRkaW5nLCByaWdodClcbikge1xuICAmOjphZnRlciB7XG4gICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCRzaXplLCAkY29sb3IsIGRvd24pO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB0b3A6IDAuNGVtOyAvLyBBbGlnbnMgdGhlIGFycm93IHdpdGggdGhlIHRleHQgb2YgdGhlIGJ1dHRvblxuICAgIGZsb2F0OiAjeyRnbG9iYWwtcmlnaHR9O1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06IGdldC1zaWRlKCRidXR0b24tcGFkZGluZywgcmlnaHQpO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgfVxufVxuXG4vLy8gQWRkcyBhbGwgc3R5bGVzIGZvciBhIGJ1dHRvbi4gRm9yIG1vcmUgZ3JhbnVsYXIgY29udHJvbCBvdmVyIHN0eWxlcywgdXNlIHRoZSBpbmRpdmlkdWFsIGJ1dHRvbiBtaXhpbnMuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkZXhwYW5kIFtmYWxzZV0gLSBTZXQgdG8gYHRydWVgIHRvIG1ha2UgdGhlIGJ1dHRvbiBmdWxsLXdpZHRoLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRiYWNrZ3JvdW5kIFskYnV0dG9uLWJhY2tncm91bmRdIC0gQmFja2dyb3VuZCBjb2xvciBvZiB0aGUgYnV0dG9uLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRiYWNrZ3JvdW5kLWhvdmVyIFskYnV0dG9uLWJhY2tncm91bmQtaG92ZXJdIC0gQmFja2dyb3VuZCBjb2xvciBvZiB0aGUgYnV0dG9uIG9uIGhvdmVyLiBTZXQgdG8gYGF1dG9gIHRvIGhhdmUgdGhlIG1peGluIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgYSBob3ZlciBjb2xvci5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgWyRidXR0b24tY29sb3JdIC0gVGV4dCBjb2xvciBvZiB0aGUgYnV0dG9uLiBTZXQgdG8gYGF1dG9gIHRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgYSBjb2xvciBiYXNlZCBvbiB0aGUgYmFja2dyb3VuZCBjb2xvci5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzdHlsZSBbc29saWRdIC0gU2V0IHRvIGBob2xsb3dgIHRvIGNyZWF0ZSBhIGhvbGxvdyBidXR0b24uIFRoZSBjb2xvciBkZWZpbmVkIGluIGAkYmFja2dyb3VuZGAgd2lsbCBiZSB1c2VkIGFzIHRoZSBwcmltYXJ5IGNvbG9yIG9mIHRoZSBidXR0b24uXG5AbWl4aW4gYnV0dG9uKFxuICAkZXhwYW5kOiBmYWxzZSxcbiAgJGJhY2tncm91bmQ6ICRidXR0b24tYmFja2dyb3VuZCxcbiAgJGJhY2tncm91bmQtaG92ZXI6ICRidXR0b24tYmFja2dyb3VuZC1ob3ZlcixcbiAgJGNvbG9yOiAkYnV0dG9uLWNvbG9yLFxuICAkc3R5bGU6ICRidXR0b24tZmlsbFxuKSB7XG4gIEBpbmNsdWRlIGJ1dHRvbi1iYXNlO1xuXG4gIEBpZiAkc3R5bGUgPT0gc29saWQge1xuICAgIEBpbmNsdWRlIGJ1dHRvbi1zdHlsZSgkYmFja2dyb3VuZCwgJGJhY2tncm91bmQtaG92ZXIsICRjb2xvcik7XG4gIH1cbiAgQGVsc2UgaWYgJHN0eWxlID09IGhvbGxvdyB7XG4gICAgQGluY2x1ZGUgYnV0dG9uLWhvbGxvdztcbiAgICBAaW5jbHVkZSBidXR0b24taG9sbG93LXN0eWxlKCRiYWNrZ3JvdW5kKTtcbiAgfVxuXG4gIEBpZiAkZXhwYW5kIHtcbiAgICBAaW5jbHVkZSBidXR0b24tZXhwYW5kO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWJ1dHRvbiB7XG4gIC5idXR0b24ge1xuICAgIEBpbmNsdWRlIGJ1dHRvbjtcblxuICAgIC8vIFNpemVzXG4gICAgQGVhY2ggJHNpemUsICR2YWx1ZSBpbiBtYXAtcmVtb3ZlKCRidXR0b24tc2l6ZXMsIGRlZmF1bHQpIHtcbiAgICAgICYuI3skc2l6ZX0ge1xuICAgICAgICBmb250LXNpemU6ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmV4cGFuZGVkIHsgQGluY2x1ZGUgYnV0dG9uLWV4cGFuZDsgfVxuXG4gICAgLy8gQ29sb3JzXG4gICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkZm91bmRhdGlvbi1wYWxldHRlIHtcbiAgICAgIEBpZiAkYnV0dG9uLWZpbGwgIT0gaG9sbG93IHtcbiAgICAgICAgJi4jeyRuYW1lfSB7XG4gICAgICAgICAgQGluY2x1ZGUgYnV0dG9uLXN0eWxlKCRjb2xvciwgYXV0bywgYXV0byk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJi4jeyRuYW1lfSB7XG4gICAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWhvbGxvdy1zdHlsZSgkY29sb3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi4jeyRuYW1lfS5kcm9wZG93bjo6YWZ0ZXIge1xuICAgICAgICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEhvbGxvdyBzdHlsZVxuICAgIEBpZiAkYnV0dG9uLWZpbGwgIT0gaG9sbG93IHtcbiAgICAgICYuaG9sbG93IHtcbiAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWhvbGxvdztcbiAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWhvbGxvdy1zdHlsZTtcblxuICAgICAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRmb3VuZGF0aW9uLXBhbGV0dGUge1xuICAgICAgICAgICYuI3skbmFtZX0ge1xuICAgICAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWhvbGxvdy1zdHlsZSgkY29sb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIERpc2FibGVkIHN0eWxlXG4gICAgJi5kaXNhYmxlZCxcbiAgICAmW2Rpc2FibGVkXSB7XG4gICAgICBAaW5jbHVkZSBidXR0b24tZGlzYWJsZWQ7XG5cbiAgICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGZvdW5kYXRpb24tcGFsZXR0ZSB7XG4gICAgICAgICYuI3skbmFtZX0ge1xuICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1kaXNhYmxlZCgkY29sb3IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRHJvcGRvd24gYXJyb3dcbiAgICAmLmRyb3Bkb3duIHtcbiAgICAgIEBpbmNsdWRlIGJ1dHRvbi1kcm9wZG93bjtcblxuICAgICAgQGlmICRidXR0b24tZmlsbCA9PSBob2xsb3cge1xuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGJ1dHRvbi1iYWNrZ3JvdW5kO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQnV0dG9uIHdpdGggZHJvcGRvd24gYXJyb3cgb25seVxuICAgICYuYXJyb3ctb25seTo6YWZ0ZXIge1xuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogMDtcbiAgICAgIGZsb2F0OiBub25lO1xuICAgICAgdG9wOiAtMC4xZW07XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBidXR0b24tZ3JvdXBcbi8vLy9cblxuLy8vIE1hcmdpbiBmb3IgYnV0dG9uIGdyb3Vwcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRidXR0b25ncm91cC1tYXJnaW46IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBNYXJnaW4gYmV0d2VlbiBidXR0b25zIGluIGEgYnV0dG9uIGdyb3VwLlxuLy8vIEB0eXBlIEJvcmRlclxuJGJ1dHRvbmdyb3VwLXNwYWNpbmc6IDFweCAhZGVmYXVsdDtcblxuLy8vIFNlbGVjdG9yIGZvciB0aGUgYnV0dG9ucyBpbnNpZGUgYSBidXR0b24gZ3JvdXAuXG4vLy8gQHR5cGUgU3RyaW5nXG4kYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3I6ICcuYnV0dG9uJyAhZGVmYXVsdDtcblxuLy8vIE1heGltdW0gbnVtYmVyIG9mIGJ1dHRvbnMgdGhhdCBjYW4gYmUgaW4gYW4gZXZlbi13aWR0aCBidXR0b24gZ3JvdXAuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnV0dG9uZ3JvdXAtZXhwYW5kLW1heDogNiAhZGVmYXVsdDtcblxuLy8vIEFkZCBzdHlsZXMgZm9yIGEgYnV0dG9uIGdyb3VwIGNvbnRhaW5lci5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGNoaWxkLXNlbGVjdG9yIFskYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3JdIC0gU2VsZWN0b3IgZm9yIHRoZSBidXR0b25zIGluc2lkZSBhIGJ1dHRvbiBncm91cC5cbkBtaXhpbiBidXR0b24tZ3JvdXAoXG4gICRjaGlsZC1zZWxlY3RvcjogJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yXG4pIHtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIG1hcmdpbi1ib3R0b206ICRidXR0b25ncm91cC1tYXJnaW47XG5cbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgfVxuICBAZWxzZSB7XG4gICAgZm9udC1zaXplOiAwO1xuICB9XG5cbiAgI3skY2hpbGQtc2VsZWN0b3J9IHtcbiAgICBtYXJnaW46IDA7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICRidXR0b25ncm91cC1zcGFjaW5nO1xuICAgIG1hcmdpbi1ib3R0b206ICRidXR0b25ncm91cC1zcGFjaW5nO1xuICAgIGZvbnQtc2l6ZTogbWFwLWdldCgkYnV0dG9uLXNpemVzLCBkZWZhdWx0KTtcblxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgfVxuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAwO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQ3JlYXRlcyBhIGZ1bGwtd2lkdGggYnV0dG9uIGdyb3VwLCBtYWtpbmcgZWFjaCBidXR0b24gZXF1YWwgd2lkdGguXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzZWxlY3RvciBbJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yXSAtIFNlbGVjdG9yIGZvciB0aGUgYnV0dG9ucyBpbnNpZGUgYSBidXR0b24gZ3JvdXAuXG5AbWl4aW4gYnV0dG9uLWdyb3VwLWV4cGFuZChcbiAgJHNlbGVjdG9yOiAkYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3IsXG4gICRjb3VudDogbnVsbFxuKSB7XG4gIEBpZiBub3QgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogLSRidXR0b25ncm91cC1zcGFjaW5nO1xuXG4gICAgJjo6YmVmb3JlLFxuICAgICY6OmFmdGVyIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgLy8gc2Nzcy1saW50OmRpc2FibGUgWmVyb1VuaXRcbiAgI3skc2VsZWN0b3J9IHtcbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGZsZXg6IDEgMSAwcHg7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJGJ1dHRvbmdyb3VwLWV4cGFuZC1tYXgge1xuICAgICAgICAmOmZpcnN0LWNoaWxkOm50aC1sYXN0LWNoaWxkKCN7JGl9KSB7XG4gICAgICAgICAgJiwgJjpmaXJzdC1jaGlsZDpudGgtbGFzdC1jaGlsZCgjeyRpfSkgfiAjeyRzZWxlY3Rvcn0ge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgd2lkdGg6IGNhbGMoI3twZXJjZW50YWdlKDEgLyAkaSl9IC0gI3skYnV0dG9uZ3JvdXAtc3BhY2luZ30pO1xuICAgICAgICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICRidXR0b25ncm91cC1zcGFjaW5nO1xuXG4gICAgICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJGJ1dHRvbmdyb3VwLXNwYWNpbmcgKiAtJGJ1dHRvbmdyb3VwLWV4cGFuZC1tYXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vLyBTdGFja3MgdGhlIGJ1dHRvbnMgaW4gYSBidXR0b24gZ3JvdXAuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzZWxlY3RvciBbJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yXSAtIFNlbGVjdG9yIGZvciB0aGUgYnV0dG9ucyBpbnNpZGUgdGhlIGJ1dHRvbiBncm91cC5cbkBtaXhpbiBidXR0b24tZ3JvdXAtc3RhY2soXG4gICRzZWxlY3RvcjogJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yXG4pIHtcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICB9XG5cbiAgI3skc2VsZWN0b3J9IHtcbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGZsZXg6IDAgMCAxMDAlO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG4gIH1cbn1cblxuLy8vIFVuLXN0YWNrcyB0aGUgYnV0dG9ucyBpbiBhIGJ1dHRvbiBncm91cC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlbGVjdG9yIFskYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3JdIC0gU2VsZWN0b3IgZm9yIHRoZSBidXR0b25zIGluc2lkZSB0aGUgYnV0dG9uIGdyb3VwLlxuQG1peGluIGJ1dHRvbi1ncm91cC11bnN0YWNrKFxuICAkc2VsZWN0b3I6ICRidXR0b25ncm91cC1jaGlsZC1zZWxlY3RvclxuKSB7XG4gIC8vIHNjc3MtbGludDpkaXNhYmxlIFplcm9Vbml0XG4gICN7JHNlbGVjdG9yfSB7XG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBmbGV4OiAxIDEgMHB4O1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICB3aWR0aDogYXV0bztcbiAgICB9XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1idXR0b24tZ3JvdXAge1xuICAuYnV0dG9uLWdyb3VwIHtcbiAgICBAaW5jbHVkZSBidXR0b24tZ3JvdXA7XG5cbiAgICAvLyBTaXplc1xuICAgIEBlYWNoICRzaXplLCAkdmFsdWUgaW4gbWFwLXJlbW92ZSgkYnV0dG9uLXNpemVzLCBkZWZhdWx0KSB7XG4gICAgICAmLiN7JHNpemV9ICN7JGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yfSB7XG4gICAgICAgIGZvbnQtc2l6ZTogJHZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEV2ZW4td2lkdGggR3JvdXBcbiAgICAmLmV4cGFuZGVkIHsgQGluY2x1ZGUgYnV0dG9uLWdyb3VwLWV4cGFuZDsgfVxuXG4gICAgLy8gQ29sb3JzXG4gICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkZm91bmRhdGlvbi1wYWxldHRlIHtcbiAgICAgIEBpZiAkYnV0dG9uLWZpbGwgIT0gaG9sbG93IHtcbiAgICAgICAgJi4jeyRuYW1lfSAjeyRidXR0b25ncm91cC1jaGlsZC1zZWxlY3Rvcn0ge1xuICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1zdHlsZSgkY29sb3IsIGF1dG8sIGF1dG8pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICYuI3skbmFtZX0gI3skYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3J9IHtcbiAgICAgICAgICBAaW5jbHVkZSBidXR0b24taG9sbG93O1xuICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1ob2xsb3ctc3R5bGUoJGNvbG9yKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYuc3RhY2tlZCxcbiAgICAmLnN0YWNrZWQtZm9yLXNtYWxsLFxuICAgICYuc3RhY2tlZC1mb3ItbWVkaXVtIHtcbiAgICAgIEBpbmNsdWRlIGJ1dHRvbi1ncm91cC1zdGFjaztcbiAgICB9XG5cbiAgICAmLnN0YWNrZWQtZm9yLXNtYWxsIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1ncm91cC11bnN0YWNrO1xuICAgICAgfVxuICAgIH1cblxuICAgICYuc3RhY2tlZC1mb3ItbWVkaXVtIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWdyb3VwLXVuc3RhY2s7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gc2Nzcy1saW50OmRpc2FibGUgTWVyZ2VhYmxlU2VsZWN0b3JcbiAgICAmLnN0YWNrZWQtZm9yLXNtYWxsLmV4cGFuZGVkIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSkge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgICAjeyRidXR0b25ncm91cC1jaGlsZC1zZWxlY3Rvcn0ge1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLy8vXG4vLy8gQGdyb3VwIGFjY29yZGlvbi1tZW51XG4vLy8vXG5cbi8vLyBTZXRzIGlmIGFjY29yZGlvbiBtZW51cyBoYXZlIHRoZSBkZWZhdWx0IGFycm93IHN0eWxlcy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kYWNjb3JkaW9ubWVudS1hcnJvd3M6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGFjY29yZGlvbiBtZW51IGFycm93IGNvbG9yIGlmIGFycm93IGlzIHVzZWQuXG4vLy8gQHR5cGUgQ29sb3JcbiRhY2NvcmRpb25tZW51LWFycm93LWNvbG9yOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuQG1peGluIGZvdW5kYXRpb24tYWNjb3JkaW9uLW1lbnUge1xuICBAaWYgJGFjY29yZGlvbm1lbnUtYXJyb3dzIHtcbiAgICAuaXMtYWNjb3JkaW9uLXN1Ym1lbnUtcGFyZW50ID4gYSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKDZweCwgJGFjY29yZGlvbm1lbnUtYXJyb3ctY29sb3IsIGRvd24pO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICBtYXJnaW4tdG9wOiAtNHB4O1xuICAgICAgICByaWdodDogMXJlbTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuaXMtYWNjb3JkaW9uLXN1Ym1lbnUtcGFyZW50W2FyaWEtZXhwYW5kZWQ9J3RydWUnXSA+IGE6OmFmdGVyIHtcbiAgICAgIHRyYW5zZm9ybS1vcmlnaW46IDUwJSA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlWSgtMSk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBhY2NvcmRpb25cbi8vLy9cblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBvZiBhbiBhY2NvcmRpb24gZ3JvdXAuXG4vLy8gQHR5cGUgQ29sb3JcbiRhY2NvcmRpb24tYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gSWYgYHRydWVgLCBhZGRzIHBsdXMgYW5kIG1pbnVzIGljb25zIHRvIHRoZSBzaWRlIG9mIGVhY2ggYWNjb3JkaW9uIHRpdGxlLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRhY2NvcmRpb24tcGx1c21pbnVzOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB0ZXh0IGNvbG9yIGZvciBpdGVtcyBpbiBhIE1lbnUuXG4vLy8gQHR5cGUgQ29sb3JcbiRhY2NvcmRpb24taXRlbS1jb2xvcjogZm9yZWdyb3VuZCgkYWNjb3JkaW9uLWJhY2tncm91bmQsICRwcmltYXJ5LWNvbG9yKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBvbiBob3ZlciBmb3IgaXRlbXMgaW4gYSBNZW51LlxuLy8vIEB0eXBlIENvbG9yXG4kYWNjb3JkaW9uLWl0ZW0tYmFja2dyb3VuZC1ob3ZlcjogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgb2YgYW4gYWNjb3JkaW9uIGl0ZW0uXG4vLy8gQHR5cGUgTnVtYmVyIHwgTGlzdFxuJGFjY29yZGlvbi1pdGVtLXBhZGRpbmc6IDEuMjVyZW0gMXJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBvZiB0YWIgY29udGVudC5cbi8vLyBAdHlwZSBDb2xvclxuJGFjY29yZGlvbi1jb250ZW50LWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm9yZGVyIGNvbG9yIG9mIHRhYiBjb250ZW50LlxuLy8vIEB0eXBlIENvbG9yXG4kYWNjb3JkaW9uLWNvbnRlbnQtYm9yZGVyOiAxcHggc29saWQgJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHRleHQgY29sb3Igb2YgdGFiIGNvbnRlbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiRhY2NvcmRpb24tY29udGVudC1jb2xvcjogZm9yZWdyb3VuZCgkYWNjb3JkaW9uLWNvbnRlbnQtYmFja2dyb3VuZCwgJGJvZHktZm9udC1jb2xvcikgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgZm9yIHRhYiBjb250ZW50LlxuLy8vIEB0eXBlIE51bWJlciB8IExpc3RcbiRhY2NvcmRpb24tY29udGVudC1wYWRkaW5nOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGFuIGFjY29yZGlvbiBjb250YWluZXIuIEFwcGx5IHRoaXMgdG8gdGhlIHNhbWUgZWxlbWVudCB0aGF0IGdldHMgYGRhdGEtYWNjb3JkaW9uYC5cbkBtaXhpbiBhY2NvcmRpb24tY29udGFpbmVyIHtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBiYWNrZ3JvdW5kOiAkYWNjb3JkaW9uLWJhY2tncm91bmQ7XG4gIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06IDA7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGFjY29yZGlvbiBpdGVtLiBBcHBseSB0aGlzIHRvIHRoZSBsaXN0IGl0ZW0gd2l0aGluIGFuIGFjY29yZGlvbiB1bC5cbkBtaXhpbiBhY2NvcmRpb24taXRlbSB7XG4gICY6Zmlyc3QtY2hpbGQgPiA6Zmlyc3QtY2hpbGQge1xuICAgIGJvcmRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICRnbG9iYWwtcmFkaXVzIDAgMDtcbiAgfVxuXG4gICY6bGFzdC1jaGlsZCA+IDpsYXN0LWNoaWxkIHtcbiAgICBib3JkZXItcmFkaXVzOiAwIDAgJGdsb2JhbC1yYWRpdXMgJGdsb2JhbC1yYWRpdXM7XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgdGl0bGUgb2YgYW4gYWNjb3JkaW9uIGl0ZW0uIEFwcGx5IHRoaXMgdG8gdGhlIGxpbmsgd2l0aGluIGFuIGFjY29yZGlvbiBpdGVtLlxuQG1peGluIGFjY29yZGlvbi10aXRsZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAkYWNjb3JkaW9uLWl0ZW0tcGFkZGluZztcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTIpO1xuICBjb2xvcjogJGFjY29yZGlvbi1pdGVtLWNvbG9yO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJvcmRlcjogJGFjY29yZGlvbi1jb250ZW50LWJvcmRlcjtcbiAgYm9yZGVyLWJvdHRvbTogMDtcblxuICA6bGFzdC1jaGlsZDpub3QoLmlzLWFjdGl2ZSkgPiAmIHtcbiAgICBib3JkZXItcmFkaXVzOiAwIDAgJGdsb2JhbC1yYWRpdXMgJGdsb2JhbC1yYWRpdXM7XG4gICAgYm9yZGVyLWJvdHRvbTogJGFjY29yZGlvbi1jb250ZW50LWJvcmRlcjtcbiAgfVxuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRhY2NvcmRpb24taXRlbS1iYWNrZ3JvdW5kLWhvdmVyO1xuICB9XG5cbiAgQGlmICRhY2NvcmRpb24tcGx1c21pbnVzIHtcbiAgICAmOjpiZWZvcmUge1xuICAgICAgY29udGVudDogJysnO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgI3skZ2xvYmFsLXJpZ2h0fTogMXJlbTtcbiAgICAgIHRvcDogNTAlO1xuICAgICAgbWFyZ2luLXRvcDogLTAuNXJlbTtcbiAgICB9XG5cbiAgICAuaXMtYWN0aXZlID4gJjo6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICfigJMnO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGFjY29yZGlvbiBjb250ZW50LiBBcHBseSB0aGlzIHRvIHRoZSBjb250ZW50IHBhbmUgYmVsb3cgYW4gYWNjb3JkaW9uIGl0ZW0ncyB0aXRsZS5cbkBtaXhpbiBhY2NvcmRpb24tY29udGVudCB7XG4gIHBhZGRpbmc6ICRhY2NvcmRpb24tY29udGVudC1wYWRkaW5nO1xuICBkaXNwbGF5OiBub25lO1xuICBib3JkZXI6ICRhY2NvcmRpb24tY29udGVudC1ib3JkZXI7XG4gIGJvcmRlci1ib3R0b206IDA7XG4gIGJhY2tncm91bmQtY29sb3I6ICRhY2NvcmRpb24tY29udGVudC1iYWNrZ3JvdW5kO1xuICBjb2xvcjogJGFjY29yZGlvbi1jb250ZW50LWNvbG9yO1xuXG4gIDpsYXN0LWNoaWxkID4gJjpsYXN0LWNoaWxkIHtcbiAgICBib3JkZXItYm90dG9tOiAkYWNjb3JkaW9uLWNvbnRlbnQtYm9yZGVyO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWFjY29yZGlvbiB7XG4gIC5hY2NvcmRpb24ge1xuICAgIEBpbmNsdWRlIGFjY29yZGlvbi1jb250YWluZXI7XG4gIH1cblxuICAuYWNjb3JkaW9uLWl0ZW0ge1xuICAgIEBpbmNsdWRlIGFjY29yZGlvbi1pdGVtO1xuICB9XG5cbiAgLmFjY29yZGlvbi10aXRsZSB7XG4gICAgQGluY2x1ZGUgYWNjb3JkaW9uLXRpdGxlO1xuICB9XG5cbiAgLmFjY29yZGlvbi1jb250ZW50IHtcbiAgICBAaW5jbHVkZSBhY2NvcmRpb24tY29udGVudDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgYmFkZ2Vcbi8vLy9cblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBmb3IgYmFkZ2VzLlxuLy8vIEB0eXBlIENvbG9yXG4kYmFkZ2UtYmFja2dyb3VuZDogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHRleHQgY29sb3IgZm9yIGJhZGdlcy5cbi8vLyBAdHlwZSBDb2xvclxuJGJhZGdlLWNvbG9yOiBmb3JlZ3JvdW5kKCRiYWRnZS1iYWNrZ3JvdW5kKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBpbnNpZGUgYmFkZ2VzLlxuLy8vIEB0eXBlIE51bWJlclxuJGJhZGdlLXBhZGRpbmc6IDAuM2VtICFkZWZhdWx0O1xuXG4vLy8gTWluaW11bSB3aWR0aCBvZiBhIGJhZGdlLlxuLy8vIEB0eXBlIE51bWJlclxuJGJhZGdlLW1pbndpZHRoOiAyLjFlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBzaXplIGZvciBiYWRnZXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYmFkZ2UtZm9udC1zaXplOiAwLjZyZW0gIWRlZmF1bHQ7XG5cbi8vLyBHZW5lcmF0ZXMgdGhlIGJhc2Ugc3R5bGVzIGZvciBhIGJhZGdlLlxuQG1peGluIGJhZGdlIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nOiAkYmFkZ2UtcGFkZGluZztcbiAgbWluLXdpZHRoOiAkYmFkZ2UtbWlud2lkdGg7XG4gIGZvbnQtc2l6ZTogJGJhZGdlLWZvbnQtc2l6ZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWJhZGdlIHtcbiAgLmJhZGdlIHtcbiAgICBAaW5jbHVkZSBiYWRnZTtcblxuICAgIGJhY2tncm91bmQ6ICRiYWRnZS1iYWNrZ3JvdW5kO1xuICAgIGNvbG9yOiAkYmFkZ2UtY29sb3I7XG5cbiAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRmb3VuZGF0aW9uLXBhbGV0dGUge1xuICAgICAgQGlmICRuYW1lICE9IHByaW1hcnkge1xuICAgICAgICAmLiN7JG5hbWV9IHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAkY29sb3I7XG4gICAgICAgICAgY29sb3I6IGZvcmVncm91bmQoJGNvbG9yKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgYnJlYWRjcnVtYnNcbi8vLy9cblxuLy8vIE1hcmdpbiBhcm91bmQgYSBicmVhZGNydW1icyBjb250YWluZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnJlYWRjcnVtYnMtbWFyZ2luOiAwIDAgJGdsb2JhbC1tYXJnaW4gMCAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc2l6ZSBvZiBicmVhZGNydW1iIGxpbmtzLlxuLy8vIEB0eXBlIE51bWJlclxuJGJyZWFkY3J1bWJzLWl0ZW0tZm9udC1zaXplOiByZW0tY2FsYygxMSkgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciBvZiBicmVhZGNydW1iIGxpbmtzLlxuLy8vIEB0eXBlIENvbG9yXG4kYnJlYWRjcnVtYnMtaXRlbS1jb2xvcjogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciBvZiB0aGUgYWN0aXZlIGJyZWFkY3J1bWIgbGluay5cbi8vLyBAdHlwZSBDb2xvclxuJGJyZWFkY3J1bWJzLWl0ZW0tY29sb3ItY3VycmVudDogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gT3BhY2l0eSBvZiBkaXNhYmxlZCBicmVhZGNydW1iIGxpbmtzLlxuLy8vIEB0eXBlIE51bWJlclxuJGJyZWFkY3J1bWJzLWl0ZW0tY29sb3ItZGlzYWJsZWQ6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIE1hcmdpbiBiZXR3ZWVuIGJyZWFkY3J1bWIgaXRlbXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnJlYWRjcnVtYnMtaXRlbS1tYXJnaW46IDAuNzVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBJZiBgdHJ1ZWAsIG1ha2VzIGJyZWFkY3J1bWIgbGlua3MgdXBwZXJjYXNlLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRicmVhZGNydW1icy1pdGVtLXVwcGVyY2FzZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIElmIGB0cnVlYCwgYWRkcyBhIHNsYXNoIGJldHdlZW4gYnJlYWRjcnVtYiBsaW5rcy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kYnJlYWRjcnVtYnMtaXRlbS1zbGFzaDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIGJyZWFkY3J1bWJzIGNvbnRhaW5lciwgYWxvbmcgd2l0aCB0aGUgc3R5bGVzIGZvciB0aGUgYDxsaT5gIGFuZCBgPGE+YCBlbGVtZW50cyBpbnNpZGUgb2YgaXQuXG5AbWl4aW4gYnJlYWRjcnVtYnMtY29udGFpbmVyIHtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIG1hcmdpbjogJGJyZWFkY3J1bWJzLW1hcmdpbjtcblxuICAvLyBJdGVtIHdyYXBwZXJcbiAgbGkge1xuICAgIGZsb2F0OiAjeyRnbG9iYWwtbGVmdH07XG4gICAgY29sb3I6ICRicmVhZGNydW1icy1pdGVtLWNvbG9yLWN1cnJlbnQ7XG4gICAgZm9udC1zaXplOiAkYnJlYWRjcnVtYnMtaXRlbS1mb250LXNpemU7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xuXG4gICAgQGlmICRicmVhZGNydW1icy1pdGVtLXVwcGVyY2FzZSB7XG4gICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIH1cblxuICAgIEBpZiAkYnJlYWRjcnVtYnMtaXRlbS1zbGFzaCB7XG4gICAgICAvLyBOZWVkIHRvIGVzY2FwZSB0aGUgYmFja3NsYXNoXG4gICAgICAkc2xhc2g6IGlmKCRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gJ2x0cicsICcvJywgJ1xcXFwnKTtcblxuICAgICAgJjpub3QoOmxhc3QtY2hpbGQpOjphZnRlciB7XG4gICAgICAgIGNvbG9yOiAkbWVkaXVtLWdyYXk7XG4gICAgICAgIGNvbnRlbnQ6ICRzbGFzaDtcbiAgICAgICAgbWFyZ2luOiAwICRicmVhZGNydW1icy1pdGVtLW1hcmdpbjtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB0b3A6IDFweDtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICRicmVhZGNydW1icy1pdGVtLW1hcmdpbjtcbiAgICB9XG4gIH1cblxuICAvLyBQYWdlIGxpbmtzXG4gIGEge1xuICAgIGNvbG9yOiAkYnJlYWRjcnVtYnMtaXRlbS1jb2xvcjtcblxuICAgICY6aG92ZXIge1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWJyZWFkY3J1bWJzIHtcbiAgLmJyZWFkY3J1bWJzIHtcbiAgICBAaW5jbHVkZSBicmVhZGNydW1icy1jb250YWluZXI7XG5cbiAgICAuZGlzYWJsZWQge1xuICAgICAgY29sb3I6ICRicmVhZGNydW1icy1pdGVtLWNvbG9yLWRpc2FibGVkO1xuICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGNhbGxvdXRcbi8vLy9cblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvci5cbi8vLyBAdHlwZSBDb2xvclxuJGNhbGxvdXQtYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmYWRlIHZhbHVlIGZvciBjYWxsb3V0IGJhY2tncm91bmRzLlxuLy8vIEB0eXBlIE51bWJlclxuJGNhbGxvdXQtYmFja2dyb3VuZC1mYWRlOiA4NSUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvcmRlciBzdHlsZSBmb3IgY2FsbG91dHMuXG4vLy8gQHR5cGUgTGlzdFxuJGNhbGxvdXQtYm9yZGVyOiAxcHggc29saWQgcmdiYSgkYmxhY2ssIDAuMjUpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3R0b20gbWFyZ2luIGZvciBjYWxsb3V0cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRjYWxsb3V0LW1hcmdpbjogMCAwIDFyZW0gMCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgaW5uZXIgcGFkZGluZyBmb3IgY2FsbG91dHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kY2FsbG91dC1wYWRkaW5nOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IGNvbG9yIGZvciBjYWxsb3V0cy5cbi8vLyBAdHlwZSBDb2xvclxuJGNhbGxvdXQtZm9udC1jb2xvcjogJGJvZHktZm9udC1jb2xvciAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBjb2xvciBmb3IgY2FsbG91dHMsIGlmIHRoZSBjYWxsb3V0IGhhcyBhIGRhcmsgYmFja2dyb3VuZC5cbi8vLyBAdHlwZSBDb2xvclxuJGNhbGxvdXQtZm9udC1jb2xvci1hbHQ6ICRib2R5LWJhY2tncm91bmQgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvcmRlciByYWRpdXMgZm9yIGNhbGxvdXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kY2FsbG91dC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gQW1vdW50IHRvIHRpbnQgbGlua3MgdXNlZCB3aXRoaW4gY29sb3JlZCBwYW5lbHMuIFNldCB0byBgZmFsc2VgIHRvIGRpc2FibGUgdGhpcyBmZWF0dXJlLlxuLy8vIEB0eXBlIE51bWJlciB8IEJvb2xlYW5cbiRjYWxsb3V0LWxpbmstdGludDogMzAlICFkZWZhdWx0O1xuXG4vLy8gQWRkcyBiYXNpYyBzdHlsZXMgZm9yIGEgY2FsbG91dCwgaW5jbHVkaW5nIHBhZGRpbmcgYW5kIG1hcmdpbi5cbkBtaXhpbiBjYWxsb3V0LWJhc2UoKSB7XG4gIG1hcmdpbjogJGNhbGxvdXQtbWFyZ2luO1xuICBwYWRkaW5nOiAkY2FsbG91dC1wYWRkaW5nO1xuICBib3JkZXI6ICRjYWxsb3V0LWJvcmRlcjtcbiAgYm9yZGVyLXJhZGl1czogJGNhbGxvdXQtcmFkaXVzO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGNvbG9yOiAkY2FsbG91dC1mb250LWNvbG9yO1xuXG4gIC8vIFJlc3BlY3QgdGhlIHBhZGRpbmcsIGZvb2wuXG4gID4gOmZpcnN0LWNoaWxkIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICB9XG5cbiAgPiA6bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxufVxuXG4vLy8gR2VuZXJhdGUgcXVpY2sgc3R5bGVzIGZvciBhIGNhbGxvdXQgdXNpbmcgYSBzaW5nbGUgY29sb3IgYXMgYSBiYXNlbGluZS5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgWyRjYWxsb3V0LWJhY2tncm91bmRdIC0gQ29sb3IgdG8gdXNlLlxuQG1peGluIGNhbGxvdXQtc3R5bGUoJGNvbG9yOiAkY2FsbG91dC1iYWNrZ3JvdW5kKSB7XG4gICRiYWNrZ3JvdW5kOiBzY2FsZS1jb2xvcigkY29sb3IsICRsaWdodG5lc3M6ICRjYWxsb3V0LWJhY2tncm91bmQtZmFkZSk7XG5cbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG59XG5cbkBtaXhpbiBjYWxsb3V0LXNpemUoJHBhZGRpbmcpIHtcbiAgcGFkZGluZy10b3A6ICRwYWRkaW5nO1xuICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZztcbiAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nO1xuICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xufVxuXG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBjYWxsb3V0LlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbJGNhbGxvdXQtYmFja2dyb3VuZF0gLSBDb2xvciB0byB1c2UuXG5AbWl4aW4gY2FsbG91dCgkY29sb3I6ICRjYWxsb3V0LWJhY2tncm91bmQpIHtcbiAgQGluY2x1ZGUgY2FsbG91dC1iYXNlO1xuICBAaW5jbHVkZSBjYWxsb3V0LXN0eWxlKCRjb2xvcik7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWNhbGxvdXQge1xuICAuY2FsbG91dCB7XG4gICAgQGluY2x1ZGUgY2FsbG91dDtcblxuICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGZvdW5kYXRpb24tcGFsZXR0ZSB7XG4gICAgICAmLiN7JG5hbWV9IHtcbiAgICAgICAgQGluY2x1ZGUgY2FsbG91dC1zdHlsZSgkY29sb3IpO1xuICAgICAgfVxuICAgIH1cblxuICAgICYuc21hbGwge1xuICAgICAgQGluY2x1ZGUgY2FsbG91dC1zaXplKDAuNXJlbSk7XG4gICAgfVxuXG4gICAgJi5sYXJnZSB7XG4gICAgICBAaW5jbHVkZSBjYWxsb3V0LXNpemUoM3JlbSk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBjbG9zZS1idXR0b25cbi8vLy9cblxuLy8vIERlZmF1bHQgcG9zaXRpb24gb2YgdGhlIGNsb3NlIGJ1dHRvbi4gVGhlIGZpcnN0IHZhbHVlIHNob3VsZCBiZSBgcmlnaHRgIG9yIGBsZWZ0YCwgYW5kIHRoZSBzZWNvbmQgdmFsdWUgc2hvdWxkIGJlIGB0b3BgIG9yIGBib3R0b21gLlxuLy8vIEB0eXBlIExpc3RcbiRjbG9zZWJ1dHRvbi1wb3NpdGlvbjogcmlnaHQgdG9wICFkZWZhdWx0O1xuXG4vLy8gUmlnaHQgKG9yIGxlZnQpIG9mZnNldCBmb3IgYSBjbG9zZSBidXR0b24uXG4vLy8gQHR5cGUgTnVtYmVyXG4kY2xvc2VidXR0b24tb2Zmc2V0LWhvcml6b250YWw6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBUb3AgKG9yIGJvdHRvbSkgb2Zmc2V0IGZvciBhIGNsb3NlIGJ1dHRvbi5cbi8vLyBAdHlwZSBOdW1iZXJcbiRjbG9zZWJ1dHRvbi1vZmZzZXQtdmVydGljYWw6IDAuNXJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBzaXplIG9mIHRoZSBjbG9zZSBidXR0b24uXG4vLy8gQHR5cGUgTnVtYmVyXG4kY2xvc2VidXR0b24tc2l6ZTogMmVtICFkZWZhdWx0O1xuXG4vLy8gVGhlIGxpbmUtaGVpZ2h0IG9mIHRoZSBjbG9zZSBidXR0b24uIEl0IGFmZmVjdHMgdGhlIHNwYWNpbmcgb2YgdGhlIGVsZW1lbnQuXG4vLy8gQHR5cGUgTnVtYmVyXG4kY2xvc2VidXR0b24tbGluZWhlaWdodDogMSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2YgdGhlIGNsb3NlIGJ1dHRvbi5cbi8vLyBAdHlwZSBDb2xvclxuJGNsb3NlYnV0dG9uLWNvbG9yOiAkZGFyay1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBvZiB0aGUgY2xvc2UgYnV0dG9uIHdoZW4gYmVpbmcgaG92ZXJlZCBvbi5cbi8vLyBAdHlwZSBDb2xvclxuJGNsb3NlYnV0dG9uLWNvbG9yLWhvdmVyOiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBjbG9zZSBidXR0b24sIHVzaW5nIHRoZSBzdHlsZXMgaW4gdGhlIHNldHRpbmdzIHZhcmlhYmxlcy5cbkBtaXhpbiBjbG9zZS1idXR0b24ge1xuICAkeDogbnRoKCRjbG9zZWJ1dHRvbi1wb3NpdGlvbiwgMSk7XG4gICR5OiBudGgoJGNsb3NlYnV0dG9uLXBvc2l0aW9uLCAyKTtcblxuICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgY29sb3I6ICRjbG9zZWJ1dHRvbi1jb2xvcjtcbiAgI3skeH06ICRjbG9zZWJ1dHRvbi1vZmZzZXQtaG9yaXpvbnRhbDtcbiAgI3skeX06ICRjbG9zZWJ1dHRvbi1vZmZzZXQtdmVydGljYWw7XG4gIGZvbnQtc2l6ZTogJGNsb3NlYnV0dG9uLXNpemU7XG4gIGxpbmUtaGVpZ2h0OiAkY2xvc2VidXR0b24tbGluZWhlaWdodDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuICAgIGNvbG9yOiAkY2xvc2VidXR0b24tY29sb3ItaG92ZXI7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tY2xvc2UtYnV0dG9uIHtcbiAgLmNsb3NlLWJ1dHRvbiB7XG4gICAgQGluY2x1ZGUgY2xvc2UtYnV0dG9uO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBkcmlsbGRvd25cbi8vLy9cblxuLy8vIFRyYW5zaXRpb24gcHJvcGVydHkgdG8gdXNlIGZvciBhbmltYXRpbmcgbWVudXMuXG4vLy8gQHR5cGUgVHJhbnNpdGlvblxuJGRyaWxsZG93bi10cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xNXMgbGluZWFyICFkZWZhdWx0O1xuXG4vLy8gQWRkcyBhcnJvd3MgdG8gZHJpbGxkb3duIGl0ZW1zIHdpdGggc3VibWVudXMsIGFzIHdlbGwgYXMgdGhlIGJhY2sgYnV0dG9uLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRkcmlsbGRvd24tYXJyb3dzOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBkcmlsbGRvd24gYXJyb3cgY29sb3IgaWYgYXJyb3cgaXMgdXNlZC5cbi8vLyBAdHlwZSBDb2xvclxuJGRyaWxsZG93bi1hcnJvdy1jb2xvcjogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciBkcmlsbGRvd24gc3VibWVudXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRkcmlsbGRvd24tYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG5AbWl4aW4gZm91bmRhdGlvbi1kcmlsbGRvd24tbWVudSB7XG4gIC8vIEFwcGxpZWQgdG8gdGhlIE1lbnUgY29udGFpbmVyXG4gIC5pcy1kcmlsbGRvd24ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgbGkge1xuICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICAvLyBBcHBsaWVkIHRvIG5lc3RlZCA8dWw+c1xuICAuaXMtZHJpbGxkb3duLXN1Ym1lbnUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgI3skZ2xvYmFsLWxlZnR9OiAxMDAlO1xuICAgIHotaW5kZXg6IC0xO1xuICAgIC8vIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kOiAkZHJpbGxkb3duLWJhY2tncm91bmQ7XG4gICAgdHJhbnNpdGlvbjogJGRyaWxsZG93bi10cmFuc2l0aW9uO1xuXG4gICAgJi5pcy1hY3RpdmUge1xuICAgICAgei1pbmRleDogMTtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGlmKCRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gbHRyLCAtMTAwJSwgMTAwJSkpO1xuICAgIH1cblxuICAgICYuaXMtY2xvc2luZyB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoaWYoJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSBsdHIsIDEwMCUsIC0xMDAlKSk7XG4gICAgfVxuICB9XG5cbiAgQGlmICRkcmlsbGRvd24tYXJyb3dzIHtcbiAgICAuaXMtZHJpbGxkb3duLXN1Ym1lbnUtcGFyZW50ID4gYSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKDZweCwgJGRyaWxsZG93bi1hcnJvdy1jb2xvciwgJGdsb2JhbC1yaWdodCk7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIG1hcmdpbi10b3A6IC02cHg7XG4gICAgICAgICN7JGdsb2JhbC1yaWdodH06IDFyZW07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmpzLWRyaWxsZG93bi1iYWNrID4gYTo6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSg2cHgsICRkcmlsbGRvd24tYXJyb3ctY29sb3IsICRnbG9iYWwtbGVmdCk7XG4gICAgICBib3JkZXItI3skZ2xvYmFsLWxlZnR9LXdpZHRoOiAwO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAwLjc1cmVtOyAvLyBDcmVhdGVzIHNwYWNlIGJldHdlZW4gdGhlIGFycm93IGFuZCB0aGUgdGV4dFxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZHJvcGRvd24tbWVudVxuLy8vL1xuXG4vLy8gRW5hYmxlcyBhcnJvd3MgZm9yIGl0ZW1zIHdpdGggZHJvcGRvd24gbWVudXMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGRyb3Bkb3dubWVudS1hcnJvd3M6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGRyb3Bkb3duIG1lbnUgYXJyb3cgY29sb3IgaWYgYXJyb3cgaXMgdXNlZC5cbi8vLyBAdHlwZSBDb2xvclxuJGRyb3Bkb3dubWVudS1hcnJvdy1jb2xvcjogJGFuY2hvci1jb2xvciAhZGVmYXVsdDtcblxuLy8vIE1pbmltdW0gd2lkdGggb2YgZHJvcGRvd24gc3ViLW1lbnVzLlxuLy8vIEB0eXBlIExlbmd0aFxuJGRyb3Bkb3dubWVudS1taW4td2lkdGg6IDIwMHB4ICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgZHJvcGRvd25zLlxuLy8vIEB0eXBlIENvbG9yXG4kZHJvcGRvd25tZW51LWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciBmb3IgZHJvcGRvd24gc3ViLW1lbnVzLlxuLy8vIEB0eXBlIExpc3RcbiRkcm9wZG93bm1lbnUtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLyBCb3JkZXIgd2lkdGggZm9yIGRyb3Bkb3duIHN1Yi1tZW51cy5cbi8vIFVzZWQgdG8gYWRqdXN0IHRvcCBtYXJnaW4gb2YgYSBzdWItbWVudSBpZiBhIGJvcmRlciBpcyB1c2VkLlxuLy8gQHR5cGUgTGVuZ3RoXG4kZHJvcGRvd25tZW51LWJvcmRlci13aWR0aDogbnRoKCRkcm9wZG93bm1lbnUtYm9yZGVyLCAxKTtcblxuQG1peGluIGxlZnQtcmlnaHQtYXJyb3dzIHtcbiAgPiBhOjphZnRlciB7XG4gICAgI3skZ2xvYmFsLXJpZ2h0fTogMTRweDtcbiAgICBtYXJnaW4tdG9wOiAtM3B4O1xuICB9XG5cbiAgJi5vcGVucy1sZWZ0ID4gYTo6YWZ0ZXIge1xuICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSg1cHgsICRkcm9wZG93bm1lbnUtYXJyb3ctY29sb3IsIGxlZnQpO1xuICB9XG5cbiAgJi5vcGVucy1yaWdodCA+IGE6OmFmdGVyIHtcbiAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoNXB4LCAkZHJvcGRvd25tZW51LWFycm93LWNvbG9yLCByaWdodCk7XG4gIH1cbn1cblxuQG1peGluIGRyb3Bkb3duLW1lbnUtZGlyZWN0aW9uKCRkaXI6IGhvcml6b250YWwpIHtcbiAgQGlmICRkaXIgPT0gaG9yaXpvbnRhbCB7XG4gICAgPiBsaS5vcGVucy1sZWZ0IHtcbiAgICAgID4gLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xuICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgdG9wOiAxMDAlO1xuICAgICAgfVxuICAgIH1cblxuICAgID4gbGkub3BlbnMtcmlnaHQge1xuICAgICAgPiAuaXMtZHJvcGRvd24tc3VibWVudSB7XG4gICAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICB0b3A6IDEwMCU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmICRkcm9wZG93bm1lbnUtYXJyb3dzIHtcbiAgICAgID4gbGkuaXMtZHJvcGRvd24tc3VibWVudS1wYXJlbnQgPiBhIHtcbiAgICAgICAgcGFkZGluZy0jeyRnbG9iYWwtcmlnaHR9OiAxLjVyZW07XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIH1cblxuICAgICAgPiBsaS5pcy1kcm9wZG93bi1zdWJtZW51LXBhcmVudCA+IGE6OmFmdGVyIHtcbiAgICAgICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKDVweCwgJGRyb3Bkb3dubWVudS1hcnJvdy1jb2xvciwgZG93bik7XG4gICAgICAgICN7JGdsb2JhbC1yaWdodH06IDVweDtcbiAgICAgICAgbWFyZ2luLXRvcDogLTJweDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJGRpciA9PSB2ZXJ0aWNhbCB7XG4gICAgPiBsaSB7XG4gICAgICAuaXMtZHJvcGRvd24tc3VibWVudSB7XG4gICAgICAgIHRvcDogMDtcbiAgICAgIH1cblxuICAgICAgJi5vcGVucy1sZWZ0IHtcbiAgICAgICAgPiAuaXMtZHJvcGRvd24tc3VibWVudSB7XG4gICAgICAgICAgbGVmdDogYXV0bztcbiAgICAgICAgICByaWdodDogMTAwJTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLm9wZW5zLXJpZ2h0IHtcbiAgICAgICAgPiAuaXMtZHJvcGRvd24tc3VibWVudSB7XG4gICAgICAgICAgcmlnaHQ6IGF1dG87XG4gICAgICAgICAgbGVmdDogMTAwJTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAaWYgJGRyb3Bkb3dubWVudS1hcnJvd3Mge1xuICAgICAgICBAaW5jbHVkZSBsZWZ0LXJpZ2h0LWFycm93cztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEB3YXJuICdUaGUgZGlyZWN0aW9uIHVzZWQgZm9yIGRyb3Bkb3duLW1lbnUtZGlyZWN0aW9uKCkgbXVzdCBiZSBob3Jpem9udGFsIG9yIHZlcnRpY2FsLic7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tZHJvcGRvd24tbWVudSB7XG4gIC5kcm9wZG93bi5tZW51IHtcbiAgICBAaW5jbHVkZSBkcm9wZG93bi1tZW51LWRpcmVjdGlvbihob3Jpem9udGFsKTtcblxuICAgIGEge1xuICAgICAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xuICAgIH1cblxuICAgIC5uby1qcyAmIHVsIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgJi52ZXJ0aWNhbCB7XG4gICAgICBAaW5jbHVkZSBkcm9wZG93bi1tZW51LWRpcmVjdGlvbih2ZXJ0aWNhbCk7XG4gICAgfVxuXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgICAgJi4jeyRzaXplfS1ob3Jpem9udGFsIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGRyb3Bkb3duLW1lbnUtZGlyZWN0aW9uKGhvcml6b250YWwpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgICYuI3skc2l6ZX0tdmVydGljYWwge1xuICAgICAgICAgICAgQGluY2x1ZGUgZHJvcGRvd24tbWVudS1kaXJlY3Rpb24odmVydGljYWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYuYWxpZ24tcmlnaHQge1xuICAgICAgLmlzLWRyb3Bkb3duLXN1Ym1lbnUuZmlyc3Qtc3ViIHtcbiAgICAgICAgdG9wOiAxMDAlO1xuICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgICByaWdodDogMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuaXMtZHJvcGRvd24tbWVudS52ZXJ0aWNhbCB7XG4gICAgd2lkdGg6IDEwMHB4O1xuXG4gICAgJi5hbGlnbi1yaWdodCB7XG4gICAgICBmbG9hdDogcmlnaHQ7XG4gICAgfVxuICB9XG5cbiAgLmlzLWRyb3Bkb3duLXN1Ym1lbnUtcGFyZW50IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICBhOjphZnRlciB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDUwJTtcbiAgICAgICN7JGdsb2JhbC1yaWdodH06IDVweDtcbiAgICAgIG1hcmdpbi10b3A6IC0ycHg7XG4gICAgfVxuXG4gICAgJi5vcGVucy1pbm5lciA+IC5pcy1kcm9wZG93bi1zdWJtZW51IHtcblxuICAgICAgdG9wOiAxMDAlO1xuICAgICAgQGlmICRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gJ3J0bCcge1xuICAgICAgICByaWdodDogYXV0bztcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgfVxuICAgIH1cblxuICAgICYub3BlbnMtbGVmdCA+IC5pcy1kcm9wZG93bi1zdWJtZW51IHtcbiAgICAgIGxlZnQ6IGF1dG87XG4gICAgICByaWdodDogMTAwJTtcbiAgICB9XG5cbiAgICAmLm9wZW5zLXJpZ2h0ID4gLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xuICAgICAgcmlnaHQ6IGF1dG87XG4gICAgICBsZWZ0OiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIC5pcy1kcm9wZG93bi1zdWJtZW51IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgI3skZ2xvYmFsLWxlZnR9OiAxMDAlO1xuICAgIG1pbi13aWR0aDogJGRyb3Bkb3dubWVudS1taW4td2lkdGg7XG4gICAgei1pbmRleDogMTtcbiAgICBiYWNrZ3JvdW5kOiAkZHJvcGRvd25tZW51LWJhY2tncm91bmQ7XG4gICAgYm9yZGVyOiAkZHJvcGRvd25tZW51LWJvcmRlcjtcblxuICAgIC5pcy1kcm9wZG93bi1zdWJtZW51LXBhcmVudCB7XG4gICAgICBAaWYgJGRyb3Bkb3dubWVudS1hcnJvd3Mge1xuICAgICAgICBAaW5jbHVkZSBsZWZ0LXJpZ2h0LWFycm93cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgKHR5cGUtb2YoJGRyb3Bkb3dubWVudS1ib3JkZXItd2lkdGgpID09ICdudW1iZXInKSB7XG4gICAgICAuaXMtZHJvcGRvd24tc3VibWVudSB7XG4gICAgICAgIG1hcmdpbi10b3A6ICgtJGRyb3Bkb3dubWVudS1ib3JkZXItd2lkdGgpO1xuICAgICAgfVxuICAgIH1cblxuICAgID4gbGkge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgLy8gW1RPRE9dIEN1dCBiYWNrIHNwZWNpZmljaXR5XG4gICAgLy8gc2Nzcy1saW50OmRpc2FibGUgU2VsZWN0b3JEZXB0aFxuICAgIC8vJjpub3QoLmpzLWRyb3Bkb3duLW5vaG92ZXIpID4gLmlzLWRyb3Bkb3duLXN1Ym1lbnUtcGFyZW50OmhvdmVyID4gJiwgLy8gd2h5IGlzIHRoaXMgbGluZSBuZWVkZWQ/IE9wZW5pbmcgaXMgaGFuZGxlZCBieSBKUyBhbmQgdGhpcyBjYXVzZXMgc29tZSB1Z2x5IGZsaWNrZXJpbmcgd2hlbiB0aGUgc3ViIGlzIHJlLXBvc2l0aW9uZWQgYXV0b21hdGljYWxseS4uLlxuICAgICYuanMtZHJvcGRvd24tYWN0aXZlIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZHJvcGRvd25cbi8vLy9cblxuLy8vIFBhZGRpbmcgZm9yIGRyb3Bkb3duIHBhbmVzLlxuLy8vIEB0eXBlIExpc3RcbiRkcm9wZG93bi1wYWRkaW5nOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIGZvciBkcm9wZG93biBwYW5lcy5cbi8vLyBAdHlwZSBMaXN0XG4kZHJvcGRvd24tYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRm9udCBzaXplIGZvciBkcm9wZG93biBwYW5lcy5cbi8vLyBAdHlwZSBMaXN0XG4kZHJvcGRvd24tZm9udC1zaXplOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gV2lkdGggZm9yIGRyb3Bkb3duIHBhbmVzLlxuLy8vIEB0eXBlIE51bWJlclxuJGRyb3Bkb3duLXdpZHRoOiAzMDBweCAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciByYWRpdXMgZHJvcGRvd24gcGFuZXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZHJvcGRvd24tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIFNpemVzIGZvciBkcm9wZG93biBwYW5lcy4gRWFjaCBzaXplIGlzIGEgQ1NTIGNsYXNzIHlvdSBjYW4gYXBwbHkuXG4vLy8gQHR5cGUgTWFwXG4kZHJvcGRvd24tc2l6ZXM6IChcbiAgdGlueTogMTAwcHgsXG4gIHNtYWxsOiAyMDBweCxcbiAgbGFyZ2U6IDQwMHB4LFxuKSAhZGVmYXVsdDtcblxuLy8vIEFwcGxpZXMgc3R5bGVzIGZvciBhIGJhc2ljIGRyb3Bkb3duLlxuQG1peGluIGRyb3Bkb3duLWNvbnRhaW5lciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRib2R5LWJhY2tncm91bmQ7XG4gIGJvcmRlcjogJGRyb3Bkb3duLWJvcmRlcjtcbiAgYm9yZGVyLXJhZGl1czogJGRyb3Bkb3duLXJhZGl1cztcbiAgZGlzcGxheTogYmxvY2s7XG4gIGZvbnQtc2l6ZTogJGRyb3Bkb3duLWZvbnQtc2l6ZTtcbiAgcGFkZGluZzogJGRyb3Bkb3duLXBhZGRpbmc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB3aWR0aDogJGRyb3Bkb3duLXdpZHRoO1xuICB6LWluZGV4OiAxMDtcblxuICAmLmlzLW9wZW4ge1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tZHJvcGRvd24ge1xuICAuZHJvcGRvd24tcGFuZSB7XG4gICAgQGluY2x1ZGUgZHJvcGRvd24tY29udGFpbmVyO1xuICB9XG5cbiAgQGVhY2ggJG5hbWUsICRzaXplIGluICRkcm9wZG93bi1zaXplcyB7XG4gICAgLmRyb3Bkb3duLXBhbmUuI3skbmFtZX0ge1xuICAgICAgd2lkdGg6ICRzaXplO1xuICAgIH1cbiAgfVxufVxuIiwiQG1peGluIGZvdW5kYXRpb24tZmxleC1jbGFzc2VzIHtcbiAgLy8gSG9yaXpvbnRhbCBhbGlnbm1lbnQgdXNpbmcganVzdGlmeS1jb250ZW50XG4gIEBlYWNoICRoZGlyLCAkcHJvcCBpbiBtYXAtcmVtb3ZlKCQtemYtZmxleC1qdXN0aWZ5LCBsZWZ0KSB7XG4gICAgLmFsaWduLSN7JGhkaXJ9IHtcbiAgICAgIEBpbmNsdWRlIGZsZXgtYWxpZ24oJHg6ICRoZGlyKTtcbiAgICB9XG4gIH1cblxuICAvLyBWZXJ0aWNhbCBhbGlnbm1lbnQgdXNpbmcgYWxpZ24taXRlbXMgYW5kIGFsaWduLXNlbGZcbiAgQGVhY2ggJHZkaXIsICRwcm9wIGluICQtemYtZmxleC1hbGlnbiB7XG4gICAgLmFsaWduLSN7JHZkaXJ9IHtcbiAgICAgIEBpbmNsdWRlIGZsZXgtYWxpZ24oJHk6ICR2ZGlyKTtcbiAgICB9XG5cbiAgICAuYWxpZ24tc2VsZi0jeyR2ZGlyfSB7XG4gICAgICBAaW5jbHVkZSBmbGV4LWFsaWduLXNlbGYoJHk6ICR2ZGlyKTtcbiAgICB9XG4gIH1cblxuICAvLyBTb3VyY2Ugb3JkZXJpbmdcbiAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCB7XG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCA2IHtcbiAgICAgIC4jeyQtemYtc2l6ZX0tb3JkZXItI3skaX0ge1xuICAgICAgICBAaW5jbHVkZSBmbGV4LW9yZGVyKCRpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZsZXgtdmlkZW9cbi8vLy9cblxuLy8vIE1hcmdpbiBiZWxvdyBhIGZsZXggdmlkZW8gY29udGFpbmVyLlxuLy8vIEB0eXBlIE51bWJlclxuJGZsZXh2aWRlby1tYXJnaW4tYm90dG9tOiByZW0tY2FsYygxNikgIWRlZmF1bHQ7XG5cbi8vLyBQYWRkaW5nIHVzZWQgdG8gY3JlYXRlIGEgNDozIGFzcGVjdCByYXRpby5cbi8vLyBAdHlwZSBOdW1iZXJcbiRmbGV4dmlkZW8tcmF0aW86IDQgYnkgMyAhZGVmYXVsdDtcblxuLy8vIFBhZGRpbmcgdXNlZCB0byBjcmVhdGUgYSAxNjo5IGFzcGVjdCByYXRpby5cbi8vLyBAdHlwZSBOdW1iZXJcbiRmbGV4dmlkZW8tcmF0aW8td2lkZXNjcmVlbjogMTYgYnkgOSAhZGVmYXVsdDtcblxuLy8vIENyZWF0ZXMgYSBwZXJjZW50YWdlIGhlaWdodCB0aGF0IGNhbiBiZSB1c2VkIGFzIHBhZGRpbmcgaW4gYSBmbGV4IHZpZGVvIGNvbnRhaW5lci5cbi8vLyBAcGFyYW0ge0xpc3R9ICRyYXRpbyAtIFJhdGlvIHRvIHVzZSB0byBjYWxjdWxhdGUgdGhlIGhlaWdodCwgZm9ybWF0dGVkIGFzIGB4IGJ5IHlgLlxuLy8vIEByZXR1cm4ge051bWJlcn0gQSBwZXJjZW50YWdlIHZhbHVlIHRoYXQgY2FuIGJlIHVzZWQgYXMgdGhlIGBwYWRkaW5nLWJvdHRvbWAgcGFyYW1ldGVyIG9mIGEgZmxleCB2aWRlbyBjb250YWluZXIuXG5AZnVuY3Rpb24gZmxleC12aWRlbygkcmF0aW8pIHtcbiAgJHc6IG50aCgkcmF0aW8sIDEpO1xuICAkaDogbnRoKCRyYXRpbywgMyk7XG4gIEByZXR1cm4gJGggLyAkdyAqIDEwMCU7XG59XG5cbi8vLyBDcmVhdGVzIGEgZmxleCB2aWRlbyBjb250YWluZXIuXG4vLy8gQHBhcmFtIHtMaXN0fSAkcmF0aW8gWyRmbGV4dmlkZW8tcmF0aW9dIC0gUmF0aW8gdG8gdXNlIGZvciB0aGUgY29udGFpbmVyLCBmb3JtYXR0ZWQgYXMgYHggYnkgeWAuXG5AbWl4aW4gZmxleC12aWRlbygkcmF0aW86ICRmbGV4dmlkZW8tcmF0aW8pIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDA7XG4gIHBhZGRpbmctYm90dG9tOiBmbGV4LXZpZGVvKCRyYXRpbyk7XG4gIG1hcmdpbi1ib3R0b206ICRmbGV4dmlkZW8tbWFyZ2luLWJvdHRvbTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICBpZnJhbWUsXG4gIG9iamVjdCxcbiAgZW1iZWQsXG4gIHZpZGVvIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgICN7JGdsb2JhbC1sZWZ0fTogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tZmxleC12aWRlbyB7XG4gIC5mbGV4LXZpZGVvIHtcbiAgICBAaW5jbHVkZSBmbGV4LXZpZGVvO1xuXG4gICAgJi53aWRlc2NyZWVuIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiBmbGV4LXZpZGVvKCRmbGV4dmlkZW8tcmF0aW8td2lkZXNjcmVlbik7XG4gICAgfVxuXG4gICAgJi52aW1lbyB7XG4gICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGxhYmVsXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3IgZm9yIGxhYmVscy5cbi8vLyBAdHlwZSBDb2xvclxuJGxhYmVsLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB0ZXh0IGNvbG9yIGZvciBsYWJlbHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRsYWJlbC1jb2xvcjogZm9yZWdyb3VuZCgkbGFiZWwtYmFja2dyb3VuZCkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgc2l6ZSBmb3IgbGFiZWxzLlxuLy8vIEB0eXBlIE51bWJlclxuJGxhYmVsLWZvbnQtc2l6ZTogMC44cmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwYWRkaW5nIGluc2lkZSBsYWJlbHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbGFiZWwtcGFkZGluZzogMC4zMzMzM3JlbSAwLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHJhZGl1cyBvZiBsYWJlbHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbGFiZWwtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIEdlbmVyYXRlcyBiYXNlIHN0eWxlcyBmb3IgYSBsYWJlbC5cbkBtaXhpbiBsYWJlbCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZzogJGxhYmVsLXBhZGRpbmc7XG4gIGZvbnQtc2l6ZTogJGxhYmVsLWZvbnQtc2l6ZTtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGN1cnNvcjogZGVmYXVsdDtcbiAgYm9yZGVyLXJhZGl1czogJGxhYmVsLXJhZGl1cztcbn1cblxuQG1peGluIGZvdW5kYXRpb24tbGFiZWwge1xuICAubGFiZWwge1xuICAgIEBpbmNsdWRlIGxhYmVsO1xuXG4gICAgYmFja2dyb3VuZDogJGxhYmVsLWJhY2tncm91bmQ7XG4gICAgY29sb3I6ICRsYWJlbC1jb2xvcjtcblxuICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGZvdW5kYXRpb24tcGFsZXR0ZSB7XG4gICAgICBAaWYgJG5hbWUgIT0gcHJpbWFyeSB7XG4gICAgICAgICYuI3skbmFtZX0ge1xuICAgICAgICAgIGJhY2tncm91bmQ6ICRjb2xvcjtcbiAgICAgICAgICBjb2xvcjogZm9yZWdyb3VuZCgkY29sb3IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBtZWRpYS1vYmplY3Rcbi8vLy9cblxuLy8vIEJvdHRvbSBtYXJnaW4gb2YgYSBtZWRpYSBvYmplY3QuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbWVkaWFvYmplY3QtbWFyZ2luLWJvdHRvbTogJGdsb2JhbC1tYXJnaW4gIWRlZmF1bHQ7XG5cbi8vLyBMZWZ0IGFuZCByaWdodCBwYWRkaW5nIG9uIHNlY3Rpb25zIHdpdGhpbiBhIG1lZGlhIG9iamVjdC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRtZWRpYW9iamVjdC1zZWN0aW9uLXBhZGRpbmc6ICRnbG9iYWwtcGFkZGluZyAhZGVmYXVsdDtcblxuLy8vIFdpZHRoIG9mIGltYWdlcyB3aXRoaW4gYSBtZWRpYSBvYmplY3QsIHdoZW4gdGhlIG9iamVjdCBpcyBzdGFja2VkIHZlcnRpY2FsbHkuIFNldCB0byAnYXV0bycgdG8gdXNlIHRoZSBpbWFnZSdzIG5hdHVyYWwgd2lkdGguXG4vLy8gQHR5cGUgTnVtYmVyXG4kbWVkaWFvYmplY3QtaW1hZ2Utd2lkdGgtc3RhY2tlZDogMTAwJSAhZGVmYXVsdDtcblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIG1lZGlhIG9iamVjdCBjb250YWluZXIuXG5AbWl4aW4gbWVkaWEtb2JqZWN0LWNvbnRhaW5lciB7XG4gIG1hcmdpbi1ib3R0b206ICRtZWRpYW9iamVjdC1tYXJnaW4tYm90dG9tO1xuICBkaXNwbGF5OiBpZigkZ2xvYmFsLWZsZXhib3gsIGZsZXgsIGJsb2NrKTtcblxuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHNlY3Rpb25zIHdpdGhpbiBhIG1lZGlhIG9iamVjdC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHBhZGRpbmcgWyRtZWRpYW9iamVjdC1zZWN0aW9uLXBhZGRpbmddIC0gUGFkZGluZyBiZXR3ZWVuIHNlY3Rpb25zLlxuQG1peGluIG1lZGlhLW9iamVjdC1zZWN0aW9uKCRwYWRkaW5nOiAkbWVkaWFvYmplY3Qtc2VjdGlvbi1wYWRkaW5nKSB7XG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICB9XG4gIEBlbHNlIHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIH1cblxuICAmOmZpcnN0LWNoaWxkIHtcbiAgICBwYWRkaW5nLSN7JGdsb2JhbC1yaWdodH06ICRwYWRkaW5nO1xuICB9XG5cbiAgJjpsYXN0LWNoaWxkOm5vdCg6bnRoLWNoaWxkKDIpKSB7XG4gICAgcGFkZGluZy0jeyRnbG9iYWwtbGVmdH06ICRwYWRkaW5nO1xuICB9XG5cbiAgPiA6bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgdG8gc3RhY2sgc2VjdGlvbnMgb2YgYSBtZWRpYSBvYmplY3QuIEFwcGx5IHRoaXMgdG8gdGhlIHNlY3Rpb24gZWxlbWVudHMsIG5vdCB0aGUgY29udGFpbmVyLlxuQG1peGluIG1lZGlhLW9iamVjdC1zdGFjayB7XG4gIHBhZGRpbmc6IDA7XG4gIHBhZGRpbmctYm90dG9tOiAkbWVkaWFvYmplY3Qtc2VjdGlvbi1wYWRkaW5nO1xuXG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGZsZXgtYmFzaXM6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gIGltZyB7XG4gICAgd2lkdGg6ICRtZWRpYW9iamVjdC1pbWFnZS13aWR0aC1zdGFja2VkO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLW1lZGlhLW9iamVjdCB7XG4gIC5tZWRpYS1vYmplY3Qge1xuICAgIEBpbmNsdWRlIG1lZGlhLW9iamVjdC1jb250YWluZXI7XG5cbiAgICBpbWcge1xuICAgICAgbWF4LXdpZHRoOiBub25lO1xuICAgIH1cblxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgJi5zdGFjay1mb3ItI3skLXpmLXplcm8tYnJlYWtwb2ludH0ge1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCQtemYtemVyby1icmVha3BvaW50IG9ubHkpIHtcbiAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLnN0YWNrLWZvci0jeyQtemYtemVyby1icmVha3BvaW50fSAubWVkaWEtb2JqZWN0LXNlY3Rpb24ge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkLXpmLXplcm8tYnJlYWtwb2ludCBvbmx5KSB7XG4gICAgICAgIEBpbmNsdWRlIG1lZGlhLW9iamVjdC1zdGFjaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubWVkaWEtb2JqZWN0LXNlY3Rpb24ge1xuICAgIEBpbmNsdWRlIG1lZGlhLW9iamVjdC1zZWN0aW9uO1xuXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICAvLyBzY3NzLWxpbnQ6ZGlzYWJsZSBaZXJvVW5pdFxuICAgICAgJi5tYWluLXNlY3Rpb24ge1xuICAgICAgICBmbGV4OiAxIDEgMHB4O1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAmLm1pZGRsZSB7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICB9XG5cbiAgICAgICYuYm90dG9tIHtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIG1lbnVcbi8vLy9cblxuLy8vIE1hcmdpbiBvZiBhIG1lbnUuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbWVudS1tYXJnaW46IDAgIWRlZmF1bHQ7XG5cbi8vLyBMZWZ0LWhhbmQgbWFyZ2luIG9mIGEgbmVzdGVkIG1lbnUuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbWVudS1tYXJnaW4tbmVzdGVkOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gUGFkZGluZyBmb3IgaXRlbXMgaW4gYSBtZW51LlxuLy8vIEB0eXBlIE51bWJlclxuJG1lbnUtaXRlbS1wYWRkaW5nOiAwLjdyZW0gMXJlbSAhZGVmYXVsdDtcblxuLy8vIFRleHQgY29sb3Igb2YgYW4gYWN0aXZlIG1lbnUgaXRlbS5cbi8vLyBAdHlwZSBDb2xvclxuJG1lbnUtaXRlbS1jb2xvci1hY3RpdmU6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgYW4gYWN0aXZlIG1lbnUgaXRlbS5cbi8vLyBAdHlwZSBDb2xvclxuJG1lbnUtaXRlbS1iYWNrZ3JvdW5kLWFjdGl2ZTogbWFwLWdldCgkZm91bmRhdGlvbi1wYWxldHRlLCBwcmltYXJ5KSAhZGVmYXVsdDtcblxuLy8vIFNwYWNpbmcgYmV0d2VlbiBhbiBpY29uIGFuZCB0ZXh0IGluIGEgbWVudSBpdGVtLlxuLy8vIEB0eXBlIE51bWJlclxuJG1lbnUtaWNvbi1zcGFjaW5nOiAwLjI1cmVtICFkZWZhdWx0O1xuXG4vLy8gQ3JlYXRlcyB0aGUgYmFzZSBzdHlsZXMgZm9yIGEgTWVudS5cbkBtaXhpbiBtZW51LWJhc2Uge1xuICBtYXJnaW46ICRtZW51LW1hcmdpbjtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuXG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxuXG4gIC8vIExpc3QgaXRlbXMgYXJlIHRhYmxlIGNlbGwgdG8gYWxsb3cgZm9yIHZlcnRpY2FsIGFsaWdubWVudFxuICA+IGxpIHtcbiAgICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG5cbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gIH1cblxuICAvLyBSZXNldCBsaW5lIGhlaWdodCB0byBtYWtlIHRoZSBoZWlnaHQgb2YgdGhlIG92ZXJhbGwgaXRlbSBlYXNpZXIgdG8gY2FsY3VsYXRlXG4gID4gbGkgPiBhIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiAkbWVudS1pdGVtLXBhZGRpbmc7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gIH1cblxuICAvLyBSZXNldCBzdHlsZXMgb2YgaW5uZXIgZWxlbWVudHNcbiAgaW5wdXQsXG4gIGEsXG4gIGJ1dHRvbiB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxufVxuXG4vLy8gRXhwYW5kcyB0aGUgaXRlbXMgb2YgYSBNZW51LCBzbyBlYWNoIGl0ZW0gaXMgdGhlIHNhbWUgd2lkdGguXG5AbWl4aW4gbWVudS1leHBhbmQge1xuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAvLyBzY3NzLWxpbnQ6ZGlzYWJsZSBaZXJvVW5pdFxuICAgID4gbGkge1xuICAgICAgZmxleDogMSAxIDBweDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG4gIH1cbn1cblxuLy8vIFNldHMgdGhlIGRpcmVjdGlvbiBvZiBhIE1lbnUuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZGlyIFtob3Jpem9udGFsXSAtIERpcmVjdGlvbiBvZiB0aGUgTWVudS4gQ2FuIGJlIGBob3Jpem9udGFsYCBvciBgdmVydGljYWxgLlxuQG1peGluIG1lbnUtZGlyZWN0aW9uKCRkaXI6IGhvcml6b250YWwpIHtcbiAgQGlmICRkaXIgPT0gaG9yaXpvbnRhbCB7XG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcblxuICAgICAgPiBsaSB7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICA+IGxpIHtcbiAgICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJGRpciA9PSB2ZXJ0aWNhbCB7XG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XG5cbiAgICAgID4gbGkge1xuICAgICAgICBmbGV4OiAwIDAgMTAwJTtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgfVxuXG4gICAgICA+IGxpICA+IGEge1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICA+IGxpIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAd2FybiAnVGhlIGRpcmVjdGlvbiB1c2VkIGZvciBtZW51LWRpcmVjdGlvbigpIG11c3QgYmUgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbC4nO1xuICB9XG59XG5cbi8vLyBDcmVhdGVzIGEgc2ltcGxlIE1lbnUsIHdoaWNoIGhhcyBubyBwYWRkaW5nIG9yIGhvdmVyIHN0YXRlLlxuQG1peGluIG1lbnUtc2ltcGxlIHtcbiAgbGkge1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogZ2V0LXNpZGUoJG1lbnUtaXRlbS1wYWRkaW5nLCAkZ2xvYmFsLXJpZ2h0KTtcbiAgfVxuXG4gIGEge1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIG5lc3RlZCBNZW51LCBieSBhZGRpbmcgYG1hcmdpbi1sZWZ0YCB0byB0aGUgbWVudS5cbi8vLyBAcGFyYW0ge0tleXdvcmR8TnVtYmVyfSAkcGFkZGluZyBbYXV0b10gLSBMZW5ndGggb2YgdGhlIG1hcmdpbi5cbkBtaXhpbiBtZW51LW5lc3RlZCgkbWFyZ2luOiAkbWVudS1tYXJnaW4tbmVzdGVkKSB7XG4gIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06ICRtYXJnaW47XG59XG5cbi8vLyBBZGRzIHN1cHBvcnQgZm9yIGljb25zIHRvIE1lbnUgaXRlbXMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkcG9zaXRpb24gW3NpZGVdIC0gUG9zaXRpb25pbmcgZm9yIGljb25zLiBDYW4gYmUgYHNpZGVgIChsZWZ0LCBvciByaWdodCBvbiBSVEwpIG9yIGB0b3BgLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGJhc2UgW3RydWVdIC0gU2V0IHRvIGBmYWxzZWAgdG8gcHJldmVudCB0aGUgc2hhcmVkIENTUyBiZXR3ZWVuIHNpZGUtIGFuZCB0b3AtYWxpZ25lZCBpY29ucyBmcm9tIGJlaW5nIHByaW50ZWQuIFNldCB0aGlzIHRvIGBmYWxzZWAgaWYgeW91J3JlIGNhbGxpbmcgdGhlIG1peGluIG11bHRpcGxlIHRpbWVzIG9uIHRoZSBzYW1lIGVsZW1lbnQuXG5AbWl4aW4gbWVudS1pY29ucygkcG9zaXRpb246IHNpZGUsICRiYXNlOiB0cnVlKSB7XG4gIEBpZiAkYmFzZSB7XG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICA+IGxpID4gYSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgID4gbGkgPiBhIHtcbiAgICAgICAgaW1nLFxuICAgICAgICBpLFxuICAgICAgICBzdmcge1xuICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cbiAgICAgICAgICArIHNwYW4ge1xuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJHBvc2l0aW9uID09IHNpZGUge1xuICAgID4gbGkgPiBhIHtcbiAgICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIGltZyxcbiAgICAgIGksXG4gICAgICBzdmcge1xuICAgICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJG1lbnUtaWNvbi1zcGFjaW5nO1xuXG4gICAgICAgIEBpZiBub3QgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJHBvc2l0aW9uID09IHRvcCB7XG4gICAgPiBsaSA+IGEge1xuICAgICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICAgIGZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICBpbWcsXG4gICAgICBpLFxuICAgICAgc3ZnIHtcbiAgICAgICAgQGlmIG5vdCAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgIG1hcmdpbjogMCBhdXRvICRtZW51LWljb24tc3BhY2luZztcbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogJG1lbnUtaWNvbi1zcGFjaW5nO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBtZW51LXRleHQge1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBwYWRkaW5nLXRvcDogMDtcbiAgcGFkZGluZy1ib3R0b206IDA7XG4gIHBhZGRpbmc6ICRtZW51LWl0ZW0tcGFkZGluZztcbn1cblxuQG1peGluIGZvdW5kYXRpb24tbWVudSB7XG4gIC5tZW51IHtcbiAgICBAaW5jbHVkZSBtZW51LWJhc2U7XG4gICAgQGluY2x1ZGUgbWVudS1pY29ucztcblxuICAgIC8vIE9yaWVudGF0aW9uXG4gICAgQGluY2x1ZGUgbWVudS1kaXJlY3Rpb24oaG9yaXpvbnRhbCk7XG5cbiAgICAmLnZlcnRpY2FsIHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtZGlyZWN0aW9uKHZlcnRpY2FsKTtcbiAgICB9XG5cbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgICAmLiN7JHNpemV9LWhvcml6b250YWwge1xuICAgICAgICAgICAgQGluY2x1ZGUgbWVudS1kaXJlY3Rpb24oaG9yaXpvbnRhbCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgJi4jeyRzaXplfS12ZXJ0aWNhbCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBtZW51LWRpcmVjdGlvbih2ZXJ0aWNhbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2ltcGxlXG4gICAgJi5zaW1wbGUge1xuICAgICAgQGluY2x1ZGUgbWVudS1zaW1wbGU7XG4gICAgfVxuXG4gICAgLy8gQWxpZ24gcmlnaHRcbiAgICAmLmFsaWduLSN7JGdsb2JhbC1yaWdodH0ge1xuICAgICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuXG4gICAgICAgID4gbGkge1xuICAgICAgICAgIGZsb2F0OiAkZ2xvYmFsLXJpZ2h0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRXZlbi13aWR0aFxuICAgICYuZXhwYW5kZWQge1xuICAgICAgQGluY2x1ZGUgbWVudS1leHBhbmQ7XG5cbiAgICAgID4gbGk6Zmlyc3QtY2hpbGQ6bGFzdC1jaGlsZCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFZlcnRpY2FsIGljb25zXG4gICAgJi5pY29uLXRvcCB7XG4gICAgICBAaW5jbHVkZSBtZW51LWljb25zKHRvcCwgJGJhc2U6IGZhbHNlKTtcbiAgICB9XG5cbiAgICAvLyBOZXN0aW5nXG4gICAgJi5uZXN0ZWQge1xuICAgICAgQGluY2x1ZGUgbWVudS1uZXN0ZWQ7XG4gICAgfVxuXG4gICAgLy8gQWN0aXZlIHN0YXRlXG4gICAgLmFjdGl2ZSA+IGEge1xuICAgICAgY29sb3I6ICRtZW51LWl0ZW0tY29sb3ItYWN0aXZlO1xuICAgICAgYmFja2dyb3VuZDogJG1lbnUtaXRlbS1iYWNrZ3JvdW5kLWFjdGl2ZTtcbiAgICB9XG4gIH1cblxuICAubWVudS10ZXh0IHtcbiAgICBAaW5jbHVkZSBtZW51LXRleHQ7XG4gIH1cblxuICAvLyBBbGlnbiBjZW50ZXJcbiAgLm1lbnUtY2VudGVyZWQge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgID4gLm1lbnUge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIH1cbiAgfVxuXG4gIC8vIFByZXZlbnQgRk9VQyB3aGVuIHVzaW5nIHRoZSBSZXNwb25zaXZlIE1lbnUgcGx1Z2luXG4gIC5uby1qcyBbZGF0YS1yZXNwb25zaXZlLW1lbnVdIHVsIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG4iLCJAbWl4aW4gZm91bmRhdGlvbi1tZW51LWljb24ge1xuICAubWVudS1pY29uIHtcbiAgICBAaW5jbHVkZSBoYW1idXJnZXIoJGNvbG9yOiAkdGl0bGViYXItaWNvbi1jb2xvciwgJGNvbG9yLWhvdmVyOiAkdGl0bGViYXItaWNvbi1jb2xvci1ob3Zlcik7XG4gIH1cblxuICAubWVudS1pY29uLmRhcmsge1xuICAgIEBpbmNsdWRlIGhhbWJ1cmdlcjtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgb2ZmLWNhbnZhc1xuLy8vL1xuXG4vLy8gV2lkdGggb2YgYW4gb2ZmLWNhbnZhcyBtZW51LlxuLy8vIEB0eXBlIE51bWJlclxuJG9mZmNhbnZhcy1zaXplOiAyNTBweCAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgYW4gb2ZmLWNhbnZhcyBtZW51LlxuLy8vIEB0eXBlIENvbG9yXG4kb2ZmY2FudmFzLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gWi1pbmRleCBvZiBhbiBvZmYtY2FudmFzIG1lbnUuXG4vLy8gQHR5cGUgTnVtYmVyXG4kb2ZmY2FudmFzLXppbmRleDogLTEgIWRlZmF1bHQ7XG5cbi8vLyBMZW5ndGggb2YgdGhlIGFuaW1hdGlvbiBvbiBhbiBvZmYtY2FudmFzIG1lbnUuXG4vLy8gQHR5cGUgTnVtYmVyXG4kb2ZmY2FudmFzLXRyYW5zaXRpb24tbGVuZ3RoOiAwLjVzICFkZWZhdWx0O1xuXG4vLy8gVGltaW5nIGZ1bmN0aW9uIG9mIHRoZSBhbmltYXRpb24gb24gYW4gb2ZmLWNhbnZhcyBtZW51LlxuLy8vIEB0eXBlIEtleXdvcmRcbiRvZmZjYW52YXMtdHJhbnNpdGlvbi10aW1pbmc6IGVhc2UgIWRlZmF1bHQ7XG5cbi8vLyBJZiBgdHJ1ZWAsIGEgcmV2ZWFsZWQgb2ZmLWNhbnZhcyB3aWxsIGJlIGZpeGVkLXBvc2l0aW9uLCBhbmQgc2Nyb2xsIHdpdGggdGhlIHNjcmVlbi5cbiRvZmZjYW52YXMtZml4ZWQtcmV2ZWFsOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIG92ZXJsYXkgdGhhdCBhcHBlYXJzIHdoZW4gYW4gb2ZmLWNhbnZhcyBtZW51IGlzIG9wZW4uXG4vLy8gQHR5cGUgQ29sb3JcbiRvZmZjYW52YXMtZXhpdC1iYWNrZ3JvdW5kOiByZ2JhKCR3aGl0ZSwgMC4yNSkgIWRlZmF1bHQ7XG5cbi8vLyBDU1MgY2xhc3MgdXNlZCBmb3IgdGhlIG1haW4gY29udGVudCBhcmVhLiBUaGUgb2ZmLWNhbnZhcyBtaXhpbnMgdXNlIHRoaXMgdG8gdGFyZ2V0IHRoZSBwYWdlIGJvZHkuXG4kbWFpbmNvbnRlbnQtY2xhc3M6ICdvZmYtY2FudmFzLWNvbnRlbnQnICFkZWZhdWx0O1xuXG4vLy8gQm94IHNoYWRvdyB0byBwbGFjZSB1bmRlciB0aGUgbWFpbiBjb250ZW50IGFyZWEuIFRoaXMgc2hhZG93IG92ZXJsYXBzIHRoZSBvZmYtY2FudmFzIG1lbnVzLlxuLy8vIEB0eXBlIFNoYWRvd1xuJG1haW5jb250ZW50LXNoYWRvdzogMCAwIDEwcHggcmdiYSgkYmxhY2ssIDAuNSkgIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIGJhc2VsaW5lIHN0eWxlcyBmb3Igb2ZmLWNhbnZhcy4gVGhpcyBDU1MgaXMgcmVxdWlyZWQgdG8gbWFrZSB0aGUgb3RoZXIgcGllY2VzIHdvcmsuXG5AbWl4aW4gb2ZmLWNhbnZhcy1iYXNpY3Mge1xuICAvLyBFeHRyYSBwcm9wZXJ0aWVzIG5lZWRlZCBvbiA8aHRtbD4gYW5kIDxib2R5PiB0byBtYWtlIG9mZi1jYW52YXMgd29ya1xuICBodG1sLFxuICBib2R5IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gIH1cblxuICAub2ZmLWNhbnZhcy13cmFwcGVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogYXV0bztcbiAgfVxuXG4gIC5vZmYtY2FudmFzLXdyYXBwZXItaW5uZXIge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtaW4taGVpZ2h0OiAxMDAlOyBcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gJG9mZmNhbnZhcy10cmFuc2l0aW9uLWxlbmd0aCAkb2ZmY2FudmFzLXRyYW5zaXRpb24tdGltaW5nO1xuICB9XG5cbiAgLy8gQ29udGFpbmVyIGZvciBwYWdlIGNvbnRlbnRcbiAgLm9mZi1jYW52YXMtY29udGVudCxcbiAgLiN7JG1haW5jb250ZW50LWNsYXNzfSB7XG4gICAgbWluLWhlaWdodDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kOiAkYm9keS1iYWNrZ3JvdW5kO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAkb2ZmY2FudmFzLXRyYW5zaXRpb24tbGVuZ3RoICRvZmZjYW52YXMtdHJhbnNpdGlvbi10aW1pbmc7XG4gICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIHotaW5kZXg6IDE7XG4gICAgcGFkZGluZy1ib3R0b206IDAuMXB4OyAvLyBQcmV2ZW50cyBtYXJnaW4gY29sbGFwc2luZywgd2hpY2ggd291bGQgcmV2ZWFsIHRoZSBib3ggc2hhZG93IG9mIHRoZSB3cmFwcGVyXG5cbiAgICBAaWYgaGFzLXZhbHVlKCRtYWluY29udGVudC1zaGFkb3cpIHtcbiAgICAgIGJveC1zaGFkb3c6ICRtYWluY29udGVudC1zaGFkb3c7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2xpY2stdG8tZXhpdCBvdmVybGF5IChnZW5lcmF0ZWQgYnkgSmF2YVNjcmlwdClcbiAgLmpzLW9mZi1jYW52YXMtZXhpdCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQ6ICRvZmZjYW52YXMtZXhpdC1iYWNrZ3JvdW5kO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kICRvZmZjYW52YXMtdHJhbnNpdGlvbi1sZW5ndGggJG9mZmNhbnZhcy10cmFuc2l0aW9uLXRpbWluZztcbiAgfVxufVxuXG4vLy8gQWRkcyBiYXNpYyBzdHlsZXMgZm9yIGFuIG9mZi1jYW52YXMgbWVudS5cbkBtaXhpbiBvZmYtY2FudmFzLWJhc2Uge1xuICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYmFja2dyb3VuZDogJG9mZmNhbnZhcy1iYWNrZ3JvdW5kO1xuICB6LWluZGV4OiAkb2ZmY2FudmFzLXppbmRleDtcbiAgbWF4LWhlaWdodDogMTAwJTtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xufVxuXG5AbWl4aW4gb2ZmLWNhbnZhcy1wb3NpdGlvbihcbiAgJHBvc2l0aW9uOiBsZWZ0LFxuICAkc2l6ZTogJG9mZmNhbnZhcy1zaXplLFxuICAkZml4ZWQ6IGZhbHNlXG4pIHtcbiAgQGlmICRwb3NpdGlvbiA9PSBsZWZ0IHtcbiAgICBsZWZ0OiAtJHNpemU7XG4gICAgdG9wOiAwO1xuICAgIHdpZHRoOiAkc2l6ZTtcbiAgfVxuICBAZWxzZSBpZiAkcG9zaXRpb24gPT0gcmlnaHQge1xuICAgIHJpZ2h0OiAtJHNpemU7XG4gICAgdG9wOiAwO1xuICAgIHdpZHRoOiAkc2l6ZTtcbiAgfVxuXG4gIC8vIEdlbmVyYXRlcyBhbiBvcGVuIHN0YXRlIGNsYXNzIHRoYXQgbWF0Y2hlcyB0aGUgd2lkdGggb2YgdGhlIG1lbnVcbiAgQGF0LXJvb3Qge1xuICAgIC5pcy1vcGVuLSN7JHBvc2l0aW9ufSB7XG4gICAgICBAaWYgJHBvc2l0aW9uID09IGxlZnQge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoJHNpemUpO1xuICAgICAgfVxuICAgICAgQGVsc2UgaWYgJHBvc2l0aW9uID09IHJpZ2h0IHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0kc2l6ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyB0aGF0IHJldmVhbCBhbiBvZmYtY2FudmFzIG1lbnUuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkcG9zaXRpb24gW2xlZnRdIC0gUG9zaXRpb24gb2YgdGhlIG9mZi1jYW52YXMgbWVudSBiZWluZyByZXZlYWxlZC5cbkBtaXhpbiBvZmYtY2FudmFzLXJldmVhbChcbiAgJHBvc2l0aW9uOiBsZWZ0XG4pIHtcbiAgI3skcG9zaXRpb259OiAwO1xuICB6LWluZGV4OiBhdXRvO1xuXG4gIEBpZiAkb2ZmY2FudmFzLWZpeGVkLXJldmVhbCB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICB9XG5cbiAgJiB+IC4jeyRtYWluY29udGVudC1jbGFzc30ge1xuICAgIG1hcmdpbi0jeyRwb3NpdGlvbn06ICRvZmZjYW52YXMtc2l6ZTtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1vZmYtY2FudmFzIHtcbiAgQGluY2x1ZGUgb2ZmLWNhbnZhcy1iYXNpY3M7XG5cbiAgLy8gT2ZmLWNhbnZhcyBjb250YWluZXJcbiAgLm9mZi1jYW52YXMge1xuICAgIEBpbmNsdWRlIG9mZi1jYW52YXMtYmFzZTtcblxuICAgICYucG9zaXRpb24tbGVmdCAgIHsgQGluY2x1ZGUgb2ZmLWNhbnZhcy1wb3NpdGlvbihsZWZ0KTsgfVxuICAgICYucG9zaXRpb24tcmlnaHQgIHsgQGluY2x1ZGUgb2ZmLWNhbnZhcy1wb3NpdGlvbihyaWdodCk7IH1cbiAgfVxuXG4gIC8vIFJldmVhbCBvZmYtY2FudmFzIG1lbnUgb24gbGFyZ2VyIHNjcmVlbnNcbiAgQGVhY2ggJG5hbWUsICR2YWx1ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICBAaWYgJG5hbWUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xuICAgICAgICAucG9zaXRpb24tbGVmdC5yZXZlYWwtZm9yLSN7JG5hbWV9IHtcbiAgICAgICAgICBAaW5jbHVkZSBvZmYtY2FudmFzLXJldmVhbChsZWZ0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5wb3NpdGlvbi1yaWdodC5yZXZlYWwtZm9yLSN7JG5hbWV9IHtcbiAgICAgICAgICBAaW5jbHVkZSBvZmYtY2FudmFzLXJldmVhbChyaWdodCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIG9yYml0XG4vLy8vXG5cbi8vLyBEZWZhdWx0IGNvbG9yIGZvciBPcmJpdCdzIGJ1bGxldHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRvcmJpdC1idWxsZXQtYmFja2dyb3VuZDogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBhY3RpdmUgY29sb3IgZm9yIE9yYml0J3MgYnVsbGV0cy5cbi8vLyBAdHlwZSBDb2xvclxuJG9yYml0LWJ1bGxldC1iYWNrZ3JvdW5kLWFjdGl2ZTogJGRhcmstZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZGlhbWV0ZXIgZm9yIE9yYml0J3MgYnVsbGV0cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvcmJpdC1idWxsZXQtZGlhbWV0ZXI6IDEuMnJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgbWFyZ2luIGJldHdlZW4gT3JiaXQncyBidWxsZXRzLlxuLy8vIEB0eXBlIE51bWJlclxuJG9yYml0LWJ1bGxldC1tYXJnaW46IDAuMXJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZGlzdGFuY2UgZnJvbSBzbGlkZSByZWdpb24gZm9yIE9yYml0J3MgYnVsbGV0cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvcmJpdC1idWxsZXQtbWFyZ2luLXRvcDogMC44cmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3R0b20gbWFyZ2luIGZyb20gT3JiaXQncyBidWxsZXRzIHRvIHdoYXRldmVyIGNvbnRlbnQgbWF5IGx1cmsgYmVsb3cgaXQuXG4vLy8gQHR5cGUgTnVtYmVyXG4kb3JiaXQtYnVsbGV0LW1hcmdpbi1ib3R0b206IDAuOHJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBmb3IgT3JiaXQncyBjYXB0aW9uLlxuLy8vIEB0eXBlIENvbG9yXG4kb3JiaXQtY2FwdGlvbi1iYWNrZ3JvdW5kOiByZ2JhKCRibGFjaywgMC41KSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBmb3IgT3JiaXQncyBjYXB0aW9uLlxuLy8vIEB0eXBlIE51bWJlclxuJG9yYml0LWNhcHRpb24tcGFkZGluZzogMXJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBmb3IgT3JiaXQncyBjb250cm9scyB3aGVuIGhvdmVyZWQuXG4vLy8gQHR5cGUgQ29sb3JcbiRvcmJpdC1jb250cm9sLWJhY2tncm91bmQtaG92ZXI6IHJnYmEoJGJsYWNrLCAwLjUpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwYWRkaW5nIGZvciBPcmJpdCdzIGNvbnRyb2xzLlxuLy8vIEB0eXBlIE51bWJlclxuJG9yYml0LWNvbnRyb2wtcGFkZGluZzogMXJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgei1pbmRleCBmb3IgT3JiaXQncyBjb250cm9scy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvcmJpdC1jb250cm9sLXppbmRleDogMTAgIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIG91dGVyIE9yYml0IHdyYXBwZXIuIFRoZXNlIHN0eWxlcyBhcmUgdXNlZCBvbiB0aGUgYC5vcmJpdGAgY2xhc3MuXG5AbWl4aW4gb3JiaXQtd3JhcHBlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgaW5uZXIgT3JiaXQgc2xpZGUgY29udGFpbmVyLiBUaGVzZSBzdHlsZXMgYXJlIHVzZWQgb24gdGhlIGAub3JiaXQtY29udGFpbmVyYCBjbGFzcy5cbkBtaXhpbiBvcmJpdC1jb250YWluZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbjogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgaW5kaXZpZHVhbCBzbGlkZXMgb2YgYW4gT3JiaXQgc2xpZGVyLiBUaGVzZSBzdHlsZXMgYXJlIHVzZWQgb24gdGhlIGAub3JiaXQtc2xpZGVgIGNsYXNzLlxuQG1peGluIG9yYml0LXNsaWRlIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC1oZWlnaHQ6IDEwMCU7XG5cbiAgJi5uby1tb3Rpb251aSB7XG4gICAgJi5pcy1hY3RpdmUge1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogMDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG9yYml0LWZpZ3VyZSB7XG4gIG1hcmdpbjogMDtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIHNsaWRlIGNvbnRhaW5pbmcgYW4gaW1hZ2UuIFRoZXNlIHN0eWxlcyBhcmUgdXNlZCBvbiB0aGUgYC5vcmJpdC1pbWFnZWAgY2xhc3MuXG5AbWl4aW4gb3JiaXQtaW1hZ2Uge1xuICBtYXJnaW46IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDEwMCU7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYW4gb3JiaXQgc2xpZGUgY2FwdGlvbi4gVGhlc2Ugc3R5bGVzIGFyZSB1c2VkIG9uIHRoZSBgLm9yYml0LWNhcHRpb25gIGNsYXNzLlxuQG1peGluIG9yYml0LWNhcHRpb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6ICRvcmJpdC1jYXB0aW9uLXBhZGRpbmc7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIGNvbG9yOiBmb3JlZ3JvdW5kKCRvcmJpdC1jYXB0aW9uLWJhY2tncm91bmQpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkb3JiaXQtY2FwdGlvbi1iYWNrZ3JvdW5kO1xufVxuXG4vLy8gQWRkcyBiYXNlIHN0eWxlcyBmb3IgdGhlIG5leHQvcHJldmlvdXMgYnV0dG9ucyBpbiBhbiBPcmJpdCBzbGlkZXIuIFRoZXNlIHN0eWxlcyBhcmUgc2hhcmVkIGJldHdlZW4gdGhlIGAub3JiaXQtbmV4dGAgYW5kIGAub3JiaXQtcHJldmlvdXNgIGNsYXNzZXMgaW4gdGhlIGRlZmF1bHQgQ1NTLlxuQG1peGluIG9yYml0LWNvbnRyb2wge1xuICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gIEBpbmNsdWRlIHZlcnRpY2FsLWNlbnRlcjtcbiAgei1pbmRleDogJG9yYml0LWNvbnRyb2wtemluZGV4O1xuICBwYWRkaW5nOiAkb3JiaXQtY29udHJvbC1wYWRkaW5nO1xuICBjb2xvcjogJHdoaXRlO1xuXG4gICY6aG92ZXIsXG4gICY6YWN0aXZlLFxuICAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb3JiaXQtY29udHJvbC1iYWNrZ3JvdW5kLWhvdmVyO1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIE9yYml0IHByZXZpb3VzIGJ1dHRvbi4gVGhlc2Ugc3R5bGVzIGFyZSB1c2VkIG9uIHRoZSBgLm9yYml0LXByZXZpb3VzYCBjbGFzcy5cbkBtaXhpbiBvcmJpdC1wcmV2aW91cyB7XG4gICN7JGdsb2JhbC1sZWZ0fTogMDtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgT3JiaXQgbmV4dCBidXR0b24uIFRoZXNlIHN0eWxlcyBhcmUgdXNlZCBvbiB0aGUgYC5vcmJpdC1uZXh0YCBjbGFzcy5cbkBtaXhpbiBvcmJpdC1uZXh0IHtcbiAgI3skZ2xvYmFsLWxlZnR9OiBhdXRvO1xuICAjeyRnbG9iYWwtcmlnaHR9OiAwO1xufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgY29udGFpbmVyIG9mIE9yYml0IGJ1bGxldHMuIC8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIE9yYml0IHByZXZpb3VzIGJ1dHRvbi4gVGhlc2Ugc3R5bGVzIGFyZSB1c2VkIG9uIHRoZSBgLm9yYml0LWJ1bGxldHNgIGNsYXNzLlxuQG1peGluIG9yYml0LWJ1bGxldHMge1xuICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLXRvcDogJG9yYml0LWJ1bGxldC1tYXJnaW4tdG9wO1xuICBtYXJnaW4tYm90dG9tOiAkb3JiaXQtYnVsbGV0LW1hcmdpbi1ib3R0b207XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICBidXR0b24ge1xuICAgIHdpZHRoOiAkb3JiaXQtYnVsbGV0LWRpYW1ldGVyO1xuICAgIGhlaWdodDogJG9yYml0LWJ1bGxldC1kaWFtZXRlcjtcbiAgICBtYXJnaW46ICRvcmJpdC1idWxsZXQtbWFyZ2luO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRvcmJpdC1idWxsZXQtYmFja2dyb3VuZDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRvcmJpdC1idWxsZXQtYmFja2dyb3VuZC1hY3RpdmU7XG4gICAgfVxuXG4gICAgJi5pcy1hY3RpdmUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG9yYml0LWJ1bGxldC1iYWNrZ3JvdW5kLWFjdGl2ZTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tb3JiaXQge1xuICAub3JiaXQge1xuICAgIEBpbmNsdWRlIG9yYml0LXdyYXBwZXI7XG4gIH1cblxuICAub3JiaXQtY29udGFpbmVyIHtcbiAgICBAaW5jbHVkZSBvcmJpdC1jb250YWluZXI7XG4gIH1cblxuICAub3JiaXQtc2xpZGUge1xuICAgIEBpbmNsdWRlIG9yYml0LXNsaWRlO1xuICB9XG5cbiAgLm9yYml0LWZpZ3VyZSB7XG4gICAgQGluY2x1ZGUgb3JiaXQtZmlndXJlO1xuICB9XG5cbiAgLm9yYml0LWltYWdlIHtcbiAgICBAaW5jbHVkZSBvcmJpdC1pbWFnZTtcbiAgfVxuXG4gIC5vcmJpdC1jYXB0aW9uIHtcbiAgICBAaW5jbHVkZSBvcmJpdC1jYXB0aW9uO1xuICB9XG5cbiAgJW9yYml0LWNvbnRyb2wge1xuICAgIEBpbmNsdWRlIG9yYml0LWNvbnRyb2w7XG4gIH1cblxuICAub3JiaXQtcHJldmlvdXMge1xuICAgIEBleHRlbmQgJW9yYml0LWNvbnRyb2w7XG4gICAgQGluY2x1ZGUgb3JiaXQtcHJldmlvdXM7XG4gIH1cblxuICAub3JiaXQtbmV4dCB7XG4gICAgQGV4dGVuZCAlb3JiaXQtY29udHJvbDtcbiAgICBAaW5jbHVkZSBvcmJpdC1uZXh0O1xuICB9XG5cbiAgLm9yYml0LWJ1bGxldHMge1xuICAgIEBpbmNsdWRlIG9yYml0LWJ1bGxldHM7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHBhZ2luYXRpb25cbi8vLy9cblxuLy8vIEZvbnQgc2l6ZSBvZiBwYWdpbmF0aW9uIGl0ZW1zLlxuLy8vIEB0eXBlIE51bWJlclxuJHBhZ2luYXRpb24tZm9udC1zaXplOiByZW0tY2FsYygxNCkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvdHRvbSBtYXJnaW4gb2YgdGhlIHBhZ2luYXRpb24gb2JqZWN0LlxuLy8vIEB0eXBlIE51bWJlclxuJHBhZ2luYXRpb24tbWFyZ2luLWJvdHRvbTogJGdsb2JhbC1tYXJnaW4gIWRlZmF1bHQ7XG5cbi8vLyBUZXh0IGNvbG9yIG9mIHBhZ2luYXRpb24gaXRlbXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRwYWdpbmF0aW9uLWl0ZW0tY29sb3I6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIFBhZGRpbmcgaW5zaWRlIG9mIHBhZ2luYXRpb24gaXRlbXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcGFnaW5hdGlvbi1pdGVtLXBhZGRpbmc6IHJlbS1jYWxjKDMgMTApICFkZWZhdWx0O1xuXG4vLy8gUmlnaHQgbWFyZ2luIHRvIHNlcGFyYXRlIHBhZ2luYXRpb24gaXRlbXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcGFnaW5hdGlvbi1pdGVtLXNwYWNpbmc6IHJlbS1jYWxjKDEpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCByYWRpdXMgZm9yIHBhZ2luYXRpb24gaXRlbXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcGFnaW5hdGlvbi1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBwYWdpbmF0aW9uIGl0ZW1zIG9uIGhvdmVyLlxuLy8vIEB0eXBlIENvbG9yXG4kcGFnaW5hdGlvbi1pdGVtLWJhY2tncm91bmQtaG92ZXI6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBwYWdpbmF0aW9uIGl0ZW0gZm9yIHRoZSBjdXJyZW50IHBhZ2UuXG4vLy8gQHR5cGUgQ29sb3JcbiRwYWdpbmF0aW9uLWl0ZW0tYmFja2dyb3VuZC1jdXJyZW50OiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIFRleHQgY29sb3Igb2YgdGhlIHBhZ2luYXRpb24gaXRlbSBmb3IgdGhlIGN1cnJlbnQgcGFnZS5cbi8vLyBAdHlwZSBDb2xvclxuJHBhZ2luYXRpb24taXRlbS1jb2xvci1jdXJyZW50OiBmb3JlZ3JvdW5kKCRwYWdpbmF0aW9uLWl0ZW0tYmFja2dyb3VuZC1jdXJyZW50KSAhZGVmYXVsdDtcblxuLy8vIFRleHQgY29sb3Igb2YgYSBkaXNhYmxlZCBwYWdpbmF0aW9uIGl0ZW0uXG4vLy8gQHR5cGUgQ29sb3JcbiRwYWdpbmF0aW9uLWl0ZW0tY29sb3ItZGlzYWJsZWQ6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIENvbG9yIG9mIHRoZSBlbGxpcHNpcyBpbiBhIHBhZ2luYXRpb24gbWVudS5cbi8vLyBAdHlwZSBDb2xvclxuJHBhZ2luYXRpb24tZWxsaXBzaXMtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIElmIGBmYWxzZWAsIGRvbid0IGRpc3BsYXkgcGFnZSBudW1iZXIgbGlua3Mgb24gbW9iaWxlLCBvbmx5IG5leHQvcHJldmlvdXMgbGlua3Ncbi8vLyBhbmQgb3B0aW9uYWxseSBjdXJyZW50IHBhZ2UgbnVtYmVyLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRwYWdpbmF0aW9uLW1vYmlsZS1pdGVtczogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vLyBJZiBgZmFsc2VgLCBkb24ndCBkaXNwbGF5IGN1cnJlbnQgcGFnZSBudW1iZXIgb24gbW9iaWxlLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRwYWdpbmF0aW9uLW1vYmlsZS1jdXJyZW50LWl0ZW06IGZhbHNlICFkZWZhdWx0O1xuXG4vLy8gSWYgYHRydWVgLCBhcnJvd3MgYXJlIGFkZGVkIHRvIHRoZSBuZXh0IGFuZCBwcmV2aW91cyBsaW5rcyBvZiBwYWdpbmF0aW9uLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRwYWdpbmF0aW9uLWFycm93czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIHBhZ2luYXRpb24gY29udGFpbmVyLiBBcHBseSB0aGlzIHRvIGEgYDx1bD5gLlxuQG1peGluIHBhZ2luYXRpb24tY29udGFpbmVyIHtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06IDA7XG4gIG1hcmdpbi1ib3R0b206ICRwYWdpbmF0aW9uLW1hcmdpbi1ib3R0b207XG5cbiAgLy8gTGlzdCBpdGVtXG4gIGxpIHtcbiAgICBmb250LXNpemU6ICRwYWdpbmF0aW9uLWZvbnQtc2l6ZTtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJHBhZ2luYXRpb24taXRlbS1zcGFjaW5nO1xuICAgIGJvcmRlci1yYWRpdXM6ICRwYWdpbmF0aW9uLXJhZGl1cztcblxuICAgIEBpZiAkcGFnaW5hdGlvbi1tb2JpbGUtaXRlbXMge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgICAmOmxhc3QtY2hpbGQsXG4gICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgfVxuXG4gICAgICBAaWYgJHBhZ2luYXRpb24tbW9iaWxlLWN1cnJlbnQtaXRlbSB7XG4gICAgICAgICYuY3VycmVudCB7XG4gICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQYWdlIGxpbmtzXG4gIGEsXG4gIGJ1dHRvbiB7XG4gICAgY29sb3I6ICRwYWdpbmF0aW9uLWl0ZW0tY29sb3I7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZzogJHBhZ2luYXRpb24taXRlbS1wYWRkaW5nO1xuICAgIGJvcmRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkcGFnaW5hdGlvbi1pdGVtLWJhY2tncm91bmQtaG92ZXI7XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGN1cnJlbnQgcGFnaW5hdGlvbiBpdGVtLiBBcHBseSB0aGlzIHRvIGFuIGA8YT5gLlxuQG1peGluIHBhZ2luYXRpb24taXRlbS1jdXJyZW50IHtcbiAgcGFkZGluZzogJHBhZ2luYXRpb24taXRlbS1wYWRkaW5nO1xuICBiYWNrZ3JvdW5kOiAkcGFnaW5hdGlvbi1pdGVtLWJhY2tncm91bmQtY3VycmVudDtcbiAgY29sb3I6ICRwYWdpbmF0aW9uLWl0ZW0tY29sb3ItY3VycmVudDtcbiAgY3Vyc29yOiBkZWZhdWx0O1xufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgZGlzYWJsZWQgcGFnaW5hdGlvbiBpdGVtLiBBcHBseSB0aGlzIHRvIGFuIGA8YT5gLlxuQG1peGluIHBhZ2luYXRpb24taXRlbS1kaXNhYmxlZCB7XG4gIHBhZGRpbmc6ICRwYWdpbmF0aW9uLWl0ZW0tcGFkZGluZztcbiAgY29sb3I6ICRwYWdpbmF0aW9uLWl0ZW0tY29sb3ItZGlzYWJsZWQ7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhbiBlbGxpcHNpcyBmb3IgdXNlIGluIGEgcGFnaW5hdGlvbiBsaXN0LlxuQG1peGluIHBhZ2luYXRpb24tZWxsaXBzaXMge1xuICBjb250ZW50OiAnXFwyMDI2JztcbiAgcGFkZGluZzogJHBhZ2luYXRpb24taXRlbS1wYWRkaW5nO1xuICBjb2xvcjogJHBhZ2luYXRpb24tZWxsaXBzaXMtY29sb3I7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXBhZ2luYXRpb24ge1xuICAucGFnaW5hdGlvbiB7XG4gICAgQGluY2x1ZGUgcGFnaW5hdGlvbi1jb250YWluZXI7XG5cbiAgICAuY3VycmVudCB7XG4gICAgICBAaW5jbHVkZSBwYWdpbmF0aW9uLWl0ZW0tY3VycmVudDtcbiAgICB9XG5cbiAgICAuZGlzYWJsZWQge1xuICAgICAgQGluY2x1ZGUgcGFnaW5hdGlvbi1pdGVtLWRpc2FibGVkO1xuICAgIH1cblxuICAgIC5lbGxpcHNpczo6YWZ0ZXIge1xuICAgICAgQGluY2x1ZGUgcGFnaW5hdGlvbi1lbGxpcHNpcztcbiAgICB9XG4gIH1cblxuICBAaWYgJHBhZ2luYXRpb24tYXJyb3dzIHtcbiAgICAucGFnaW5hdGlvbi1wcmV2aW91cyBhOjpiZWZvcmUsXG4gICAgLnBhZ2luYXRpb24tcHJldmlvdXMuZGlzYWJsZWQ6OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAnXFwwMGFiJztcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAwLjVyZW07XG4gICAgfVxuXG4gICAgLnBhZ2luYXRpb24tbmV4dCBhOjphZnRlcixcbiAgICAucGFnaW5hdGlvbi1uZXh0LmRpc2FibGVkOjphZnRlciB7XG4gICAgICBjb250ZW50OiAnXFwwMGJiJztcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06IDAuNXJlbTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgcHJvZ3Jlc3MgYmFyIGNvbnRhaW5lci5cbkBtaXhpbiBwcm9ncmVzcy1jb250YWluZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkcHJvZ3Jlc3MtYmFja2dyb3VuZDtcbiAgaGVpZ2h0OiAkcHJvZ3Jlc3MtaGVpZ2h0O1xuICBtYXJnaW4tYm90dG9tOiAkcHJvZ3Jlc3MtbWFyZ2luLWJvdHRvbTtcbiAgYm9yZGVyLXJhZGl1czogJHByb2dyZXNzLXJhZGl1cztcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgaW5uZXIgbWV0ZXIgb2YgYSBwcm9ncmVzcyBiYXIuXG5AbWl4aW4gcHJvZ3Jlc3MtbWV0ZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHByb2dyZXNzLW1ldGVyLWJhY2tncm91bmQ7XG5cbiAgQGlmIGhhcy12YWx1ZSgkcHJvZ3Jlc3MtcmFkaXVzKSB7XG4gICAgYm9yZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0ZXh0IGluIHRoZSBwcm9ncmVzcyBtZXRlci5cbkBtaXhpbiBwcm9ncmVzcy1tZXRlci10ZXh0IHtcbiAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIG1hcmdpbjogMDtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgY29sb3I6ICR3aGl0ZTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICBAaWYgaGFzLXZhbHVlKCRwcm9ncmVzcy1yYWRpdXMpIHtcbiAgICBib3JkZXItcmFkaXVzOiAkcHJvZ3Jlc3MtcmFkaXVzO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXByb2dyZXNzLWJhciB7XG4gIC8vIFByb2dyZXNzIGJhclxuICAucHJvZ3Jlc3Mge1xuICAgIEBpbmNsdWRlIHByb2dyZXNzLWNvbnRhaW5lcjtcblxuICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGZvdW5kYXRpb24tcGFsZXR0ZSB7XG4gICAgICAmLiN7JG5hbWV9IHtcbiAgICAgICAgLnByb2dyZXNzLW1ldGVyIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBJbm5lciBtZXRlclxuICAucHJvZ3Jlc3MtbWV0ZXIge1xuICAgIEBpbmNsdWRlIHByb2dyZXNzLW1ldGVyO1xuICB9XG5cbiAgLy8gSW5uZXIgbWV0ZXIgdGV4dFxuICAucHJvZ3Jlc3MtbWV0ZXItdGV4dCB7XG4gICAgQGluY2x1ZGUgcHJvZ3Jlc3MtbWV0ZXItdGV4dDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcmV2ZWFsXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3Igb2YgYSBtb2RhbC5cbi8vLyBAdHlwZSBDb2xvclxuJHJldmVhbC1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHdpZHRoIG9mIGEgbW9kYWwsIHdpdGggbm8gY2xhc3MgYXBwbGllZC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRyZXZlYWwtd2lkdGg6IDYwMHB4ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBtYXhpbXVtIHdpZHRoIG9mIGEgbW9kYWwuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcmV2ZWFsLW1heC13aWR0aDogJGdsb2JhbC13aWR0aCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBpbnNpZGUgYSBtb2RhbC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRyZXZlYWwtcGFkZGluZzogJGdsb2JhbC1wYWRkaW5nICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3JkZXIgYXJvdW5kIGEgbW9kYWwuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcmV2ZWFsLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcmFkaXVzIGZvciBtb2RhbC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRyZXZlYWwtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIHotaW5kZXggZm9yIG1vZGFscy4gVGhlIG92ZXJsYXkgdXNlcyB0aGlzIHZhbHVlLCB3aGlsZSB0aGUgbW9kYWwgaXRzZWxmIHVzZXMgdGhpcyB2YWx1ZSBwbHVzIG9uZS5cbi8vLyBAdHlwZSBOdW1iZXJcbiRyZXZlYWwtemluZGV4OiAxMDA1ICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBtb2RhbCBvdmVybGF5cy5cbi8vLyBAdHlwZSBDb2xvclxuJHJldmVhbC1vdmVybGF5LWJhY2tncm91bmQ6IHJnYmEoJGJsYWNrLCAwLjQ1KSAhZGVmYXVsdDtcblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIG1vZGFsIG92ZXJsYXkuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQgWyRyZXZlYWwtb3ZlcmxheS1iYWNrZ3JvdW5kXSAtIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIG92ZXJsYXkuXG5AbWl4aW4gcmV2ZWFsLW92ZXJsYXkoJGJhY2tncm91bmQ6ICRyZXZlYWwtb3ZlcmxheS1iYWNrZ3JvdW5kKSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICB6LWluZGV4OiAkcmV2ZWFsLXppbmRleDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcbn1cblxuLy8vIEFkZHMgYmFzZSBzdHlsZXMgZm9yIGEgbW9kYWwuXG5AbWl4aW4gcmV2ZWFsLW1vZGFsLWJhc2Uge1xuICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIHotaW5kZXg6ICRyZXZlYWwtemluZGV4ICsgMTtcbiAgcGFkZGluZzogJHJldmVhbC1wYWRkaW5nO1xuICBib3JkZXI6ICRyZXZlYWwtYm9yZGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkcmV2ZWFsLWJhY2tncm91bmQ7XG4gIGJvcmRlci1yYWRpdXM6ICRyZXZlYWwtcmFkaXVzO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgbWluLWhlaWdodDogMDtcbiAgfVxuXG4gIC8vIE1ha2Ugc3VyZSByb3dzIGRvbid0IGhhdmUgYSBtaW4td2lkdGggb24gdGhlbVxuICAuY29sdW1uLFxuICAuY29sdW1ucyB7XG4gICAgbWluLXdpZHRoOiAwO1xuICB9XG5cbiAgLy8gU3RyaXAgbWFyZ2lucyBmcm9tIHRoZSBsYXN0IGl0ZW0gaW4gdGhlIG1vZGFsXG4gID4gOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuLy8vIEFkanVzdHMgdGhlIHdpZHRoIG9mIGEgbW9kYWwuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCAtIFdpZHRoIG9mIHRoZSBtb2RhbC4gR2VuZXJhbGx5IGEgcGVyY2VudGFnZS5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG1heC13aWR0aCBbJHJldmVhbC1tYXgtd2lkdGhdIC0gTWF4aW11bSB3aWR0aCBvZiB0aGUgbW9kYWwuXG5AbWl4aW4gcmV2ZWFsLW1vZGFsLXdpZHRoKFxuICAkd2lkdGg6ICRyZXZlYWwtd2lkdGgsXG4gICRtYXgtd2lkdGg6ICRyZXZlYWwtbWF4LXdpZHRoXG4pIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICBAZXh0ZW5kICVyZXZlYWwtY2VudGVyZWQ7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBtYXgtd2lkdGg6ICRyZXZlYWwtbWF4LXdpZHRoO1xuICB9XG59XG5cbi8vLyBDcmVhdGVzIGEgZnVsbC1zY3JlZW4gbW9kYWwsIHdoaWNoIHN0cmV0Y2hlcyB0aGUgZnVsbCB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSB3aW5kb3cuXG5AbWl4aW4gcmV2ZWFsLW1vZGFsLWZ1bGxzY3JlZW4ge1xuICAvLyBzY3NzLWxpbnQ6ZGlzYWJsZSBEdXBsaWNhdGVQcm9wZXJ0eVxuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGhlaWdodDogMTAwdmg7XG4gIG1pbi1oZWlnaHQ6IDEwMHZoO1xuICBtYXgtd2lkdGg6IG5vbmU7XG4gIG1hcmdpbi1sZWZ0OiAwO1xuICBib3JkZXI6IDA7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXJldmVhbCB7XG4gIC8vIFtUT0RPXSBJcyB0aGlzIG5lY2Vzc2FyeT9cbiAgLy8gc2Nzcy1saW50OmRpc2FibGUgUXVhbGlmeWluZ0VsZW1lbnRcbiAgYm9keS5pcy1yZXZlYWwtb3BlbiB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxuICAvLyBodG1sIGdldHMgdGhpcyBjbGFzcyBvbmx5IGluIGlPU1xuICBodG1sLmlzLXJldmVhbC1vcGVuLFxuICBodG1sLmlzLXJldmVhbC1vcGVuIGJvZHkge1xuICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgfVxuXG4gIC8vIE92ZXJsYXlcbiAgLnJldmVhbC1vdmVybGF5IHtcbiAgICBAaW5jbHVkZSByZXZlYWwtb3ZlcmxheTtcbiAgfVxuXG4gIC8vIE1vZGFsIGNvbnRhaW5lclxuICAucmV2ZWFsIHtcbiAgICBAaW5jbHVkZSByZXZlYWwtbW9kYWwtYmFzZTtcbiAgICBAaW5jbHVkZSByZXZlYWwtbW9kYWwtd2lkdGgoJHJldmVhbC13aWR0aCk7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHRvcDogMTAwcHg7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG5cbiAgICAvLyBQbGFjZWhvbGRlciBzZWxlY3RvciBmb3IgbWVkaXVtLWFuZC11cCBtb2RhbHNcbiAgICAvLyBQcmV2ZW50cyBkdXBsaWNhdGUgQ1NTIHdoZW4gZGVmaW5pbmcgbXVsdGlwbGUgUmV2ZWFsIHNpemVzXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICVyZXZlYWwtY2VudGVyZWQge1xuICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgICByaWdodDogYXV0bztcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVtb3ZlIHBhZGRpbmdcbiAgICAmLmNvbGxhcHNlIHtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgfVxuXG4gICAgLy8gU2l6aW5nIGNsYXNzZXNcbiAgICAmLnRpbnkgIHsgQGluY2x1ZGUgcmV2ZWFsLW1vZGFsLXdpZHRoKDMwJSk7IH1cbiAgICAmLnNtYWxsIHsgQGluY2x1ZGUgcmV2ZWFsLW1vZGFsLXdpZHRoKDUwJSk7IH1cbiAgICAmLmxhcmdlIHsgQGluY2x1ZGUgcmV2ZWFsLW1vZGFsLXdpZHRoKDkwJSk7IH1cblxuICAgIC8vIEZ1bGwtc2NyZWVuIG1vZGVcbiAgICAmLmZ1bGwge1xuICAgICAgQGluY2x1ZGUgcmV2ZWFsLW1vZGFsLWZ1bGxzY3JlZW47XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkLXpmLXplcm8tYnJlYWtwb2ludCBvbmx5KSB7XG4gICAgICBAaW5jbHVkZSByZXZlYWwtbW9kYWwtZnVsbHNjcmVlbjtcbiAgICB9XG5cbiAgICAmLndpdGhvdXQtb3ZlcmxheSB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8gW1RPRE9dIENoZWNrIGhvdyBwbHVnaW4gY29uZmlybXMgZGlzYWJsZWQgb3IgdmVydGljYWwgc3RhdHVzXG4vLyBbVE9ET10gQ2hlY2sgaWYgdHJhbnNpdGlvbjogYWxsOyBpcyBuZWNlc3NhcnlcblxuLy8vL1xuLy8vIEBncm91cCBzbGlkZXJcbi8vLy9cblxuLy8vIERlZmF1bHQgc2xpZGVyIHdpZHRoIG9mIGEgdmVydGljYWwgc2xpZGVyLiAoRG9lc24ndCBhcHBseSB0byB0aGUgbmF0aXZlIHNsaWRlci4pXG4vLy8gQHR5cGUgTnVtYmVyXG4kc2xpZGVyLXdpZHRoLXZlcnRpY2FsOiAwLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBUcmFuc2l0aW9uIHByb3BlcnRpZXMgdG8gYXBwbHkgdG8gdGhlIHNsaWRlciBoYW5kbGUgYW5kIGZpbGwuIChEb2Vzbid0IGFwcGx5IHRvIHRoZSBuYXRpdmUgc2xpZGVyLilcbi8vLyBAdHlwZSBUcmFuc2l0aW9uXG4kc2xpZGVyLXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0ICFkZWZhdWx0O1xuXG4vLy8gQWRkcyB0aGUgZ2VuZXJhbCBzdHlsZXMgZm9yIHNsaWRlcnMuXG5AbWl4aW4gc2xpZGVyLWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAkc2xpZGVyLWhlaWdodDtcbiAgbWFyZ2luLXRvcDogMS4yNXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMi4yNXJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHNsaWRlci1iYWNrZ3JvdW5kO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICB0b3VjaC1hY3Rpb246IG5vbmU7XG59XG5cbi8vLyBBZGRzIHRoZSBnZW5lcmFsIHN0eWxlcyBmb3IgYWN0aXZlIGZpbGwgZm9yIHNsaWRlcnMuXG5AbWl4aW4gc2xpZGVyLWZpbGwge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogJHNsaWRlci1oZWlnaHQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICRzbGlkZXItZmlsbC1iYWNrZ3JvdW5kO1xuICB0cmFuc2l0aW9uOiAkc2xpZGVyLXRyYW5zaXRpb247XG5cbiAgJi5pcy1kcmFnZ2luZyB7XG4gICAgdHJhbnNpdGlvbjogYWxsIDBzIGxpbmVhcjtcbiAgfVxufVxuXG4vLy8gQWRkcyB0aGUgZ2VuZXJhbCBzdHlsZXMgZm9yIHRoZSBzbGlkZXIgaGFuZGxlcy5cbkBtaXhpbiBzbGlkZXItaGFuZGxlIHtcbiAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xuICBAaW5jbHVkZSB2ZXJ0aWNhbC1jZW50ZXI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogMTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogJHNsaWRlci1oYW5kbGUtd2lkdGg7XG4gIGhlaWdodDogJHNsaWRlci1oYW5kbGUtaGVpZ2h0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2xpZGVyLWhhbmRsZS1iYWNrZ3JvdW5kO1xuICB0cmFuc2l0aW9uOiAkc2xpZGVyLXRyYW5zaXRpb247XG4gIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xuICBib3JkZXItcmFkaXVzOiAkc2xpZGVyLXJhZGl1cztcblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBzY2FsZS1jb2xvcigkc2xpZGVyLWhhbmRsZS1iYWNrZ3JvdW5kLCAkbGlnaHRuZXNzOiAtMTUlKTtcbiAgfVxuXG4gICYuaXMtZHJhZ2dpbmcge1xuICAgIHRyYW5zaXRpb246IGFsbCAwcyBsaW5lYXI7XG4gIH1cbn1cblxuQG1peGluIHNsaWRlci1kaXNhYmxlZCB7XG4gIG9wYWNpdHk6ICRzbGlkZXItb3BhY2l0eS1kaXNhYmxlZDtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cblxuQG1peGluIHNsaWRlci12ZXJ0aWNhbCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6ICRzbGlkZXItd2lkdGgtdmVydGljYWw7XG4gIGhlaWdodDogMTIuNXJlbTtcbiAgbWFyZ2luOiAwIDEuMjVyZW07XG4gIHRyYW5zZm9ybTogc2NhbGUoMSwgLTEpO1xuXG4gIC5zbGlkZXItZmlsbCB7XG4gICAgdG9wOiAwO1xuICAgIHdpZHRoOiAkc2xpZGVyLXdpZHRoLXZlcnRpY2FsO1xuICAgIG1heC1oZWlnaHQ6IDEwMCU7XG4gIH1cblxuICAuc2xpZGVyLWhhbmRsZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiA1MCU7XG4gICAgd2lkdGg6ICRzbGlkZXItaGFuZGxlLWhlaWdodDtcbiAgICBoZWlnaHQ6ICRzbGlkZXItaGFuZGxlLXdpZHRoO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1zbGlkZXIge1xuICAvLyBDb250YWluZXJcbiAgLnNsaWRlciB7XG4gICAgQGluY2x1ZGUgc2xpZGVyLWNvbnRhaW5lcjtcbiAgfVxuXG4gIC8vIEZpbGwgYXJlYVxuICAuc2xpZGVyLWZpbGwge1xuICAgIEBpbmNsdWRlIHNsaWRlci1maWxsO1xuICB9XG5cbiAgLy8gRHJhZ2dhYmxlIGhhbmRsZVxuICAuc2xpZGVyLWhhbmRsZSB7XG4gICAgQGluY2x1ZGUgc2xpZGVyLWhhbmRsZTtcbiAgfVxuXG4gIC8vIERpc2FibGVkIHN0YXRlXG4gIC5zbGlkZXIuZGlzYWJsZWQsXG4gIC5zbGlkZXJbZGlzYWJsZWRdIHtcbiAgICBAaW5jbHVkZSBzbGlkZXItZGlzYWJsZWQ7XG4gIH1cblxuICAvLyBWZXJ0aWNhbCBzbGlkZXJcbiAgLnNsaWRlci52ZXJ0aWNhbCB7XG4gICAgQGluY2x1ZGUgc2xpZGVyLXZlcnRpY2FsO1xuICB9XG5cbiAgLy8gUlRMIHN1cHBvcnRcbiAgQGlmICRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gcnRsIHtcbiAgICAuc2xpZGVyOm5vdCgudmVydGljYWwpIHtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoLTEsIDEpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbkBtaXhpbiBmb3VuZGF0aW9uLXN0aWNreSB7XG4gIC5zdGlja3ktY29udGFpbmVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIH1cblxuICAuc3RpY2t5IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgei1pbmRleDogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG5cbiAgLnN0aWNreS5pcy1zdHVjayB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHotaW5kZXg6IDU7XG5cbiAgICAmLmlzLWF0LXRvcCB7XG4gICAgICB0b3A6IDA7XG4gICAgfVxuXG4gICAgJi5pcy1hdC1ib3R0b20ge1xuICAgICAgYm90dG9tOiAwO1xuICAgIH1cbiAgfVxuXG4gIC5zdGlja3kuaXMtYW5jaG9yZWQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiBhdXRvO1xuICAgIHJpZ2h0OiBhdXRvO1xuXG4gICAgJi5pcy1hdC1ib3R0b20ge1xuICAgICAgYm90dG9tOiAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgc3dpdGNoXG4vLy8vXG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGEgc3dpdGNoLlxuLy8vIEB0eXBlIENvbG9yXG4kc3dpdGNoLWJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgYWN0aXZlIGNvbG9yIG9mIGEgc3dpdGNoLlxuLy8vIEB0eXBlIENvbG9yXG4kc3dpdGNoLWJhY2tncm91bmQtYWN0aXZlOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIEhlaWdodCBvZiBhIHN3aXRjaCwgd2l0aCBubyBjbGFzcyBhcHBsaWVkLlxuLy8vIEB0eXBlIE51bWJlclxuJHN3aXRjaC1oZWlnaHQ6IDJyZW0gIWRlZmF1bHQ7XG5cbi8vLyBIZWlnaHQgb2YgYSBzd2l0Y2ggd2l0aCAudGlueSBjbGFzcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzd2l0Y2gtaGVpZ2h0LXRpbnk6IDEuNXJlbSAhZGVmYXVsdDtcblxuLy8vIEhlaWdodCBvZiBhIHN3aXRjaCB3aXRoIC5zbWFsbCBjbGFzcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzd2l0Y2gtaGVpZ2h0LXNtYWxsOiAxLjc1cmVtICFkZWZhdWx0O1xuXG4vLy8gSGVpZ2h0IG9mIGEgc3dpdGNoIHdpdGggLmxhcmdlIGNsYXNzLlxuLy8vIEB0eXBlIE51bWJlclxuJHN3aXRjaC1oZWlnaHQtbGFyZ2U6IDIuNXJlbSAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciByYWRpdXMgb2YgdGhlIHN3aXRjaFxuLy8vIEB0eXBlIE51bWJlclxuJHN3aXRjaC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gYm9yZGVyIGFyb3VuZCBhIG1vZGFsLlxuLy8vIEB0eXBlIE51bWJlclxuJHN3aXRjaC1tYXJnaW46ICRnbG9iYWwtbWFyZ2luICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIHN3aXRjaCBjb250YWluZXIgYW5kIHBhZGRsZS5cbi8vLyBAdHlwZSBDb2xvclxuJHN3aXRjaC1wYWRkbGUtYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gU3BhY2luZyBiZXR3ZWVuIGEgc3dpdGNoIHBhZGRsZSBhbmQgdGhlIGVkZ2Ugb2YgdGhlIGJvZHkuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3dpdGNoLXBhZGRsZS1vZmZzZXQ6IDAuMjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBib3JkZXIgcmFkaXVzIG9mIHRoZSBzd2l0Y2ggcGFkZGxlXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3dpdGNoLXBhZGRsZS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gc3dpdGNoIHRyYW5zaXRpb24uXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3dpdGNoLXBhZGRsZS10cmFuc2l0aW9uOiBhbGwgMC4yNXMgZWFzZS1vdXQgIWRlZmF1bHQ7XG5cbi8vIG1ha2UgdGhlbSB2YXJpYWJsZXNcbi8vIGFzayBhYm91dCBhY2Nlc3NpYmlsaXR5IG9uIGxhYmVsXG4vLyBjaGFuZ2UgY2xhc3MgbmFtZSBmb3IgdGV4dFxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgc3dpdGNoIGNvbnRhaW5lci4gQXBwbHkgdGhpcyB0byBhIGNvbnRhaW5lciBjbGFzcy5cbkBtaXhpbiBzd2l0Y2gtY29udGFpbmVyIHtcbiAgbWFyZ2luLWJvdHRvbTogJHN3aXRjaC1tYXJnaW47XG4gIG91dGxpbmU6IDA7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG5cbiAgLy8gVGhlc2UgcHJvcGVydGllcyBjYXNjYWRlIGRvd24gdG8gdGhlIHN3aXRjaCB0ZXh0XG4gIGNvbG9yOiAkd2hpdGU7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBmb250LXNpemU6IHJlbS1jYWxjKDE0KTtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIHN3aXRjaCBpbnB1dC4gQXBwbHkgdGhpcyB0byBhbiBgPGlucHV0PmAgd2l0aGluIGEgc3dpdGNoLlxuQG1peGluIHN3aXRjaC1pbnB1dCB7XG4gIG9wYWNpdHk6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgYmFja2dyb3VuZCBhbmQgcGFkZGxlIG9mIGEgc3dpdGNoLiBBcHBseSB0aGlzIHRvIGEgYDxsYWJlbD5gIHdpdGhpbiBhIHN3aXRjaC5cbkBtaXhpbiBzd2l0Y2gtcGFkZGxlIHtcbiAgYmFja2dyb3VuZDogJHN3aXRjaC1iYWNrZ3JvdW5kO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiA0cmVtO1xuICBoZWlnaHQ6ICRzd2l0Y2gtaGVpZ2h0O1xuICB0cmFuc2l0aW9uOiAkc3dpdGNoLXBhZGRsZS10cmFuc2l0aW9uO1xuICBib3JkZXItcmFkaXVzOiAkc3dpdGNoLXJhZGl1cztcblxuICAvLyBSZXNldHRpbmcgdGhlc2UgPGxhYmVsPiBwcmVzZXRzIHNvIHR5cGUgc3R5bGVzIGNhc2NhZGUgZG93blxuICBjb2xvcjogaW5oZXJpdDtcbiAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7XG5cbiAgLy8gTmVlZGVkIHRvIG92ZXJyaWRlIHNwZWNpZmljaXR5XG4gIGlucHV0ICsgJiB7XG4gICAgbWFyZ2luOiAwO1xuICB9XG5cbiAgLy8gVGhlIHBhZGRsZSBpdHNlbGZcbiAgJjo6YWZ0ZXIge1xuICAgIGJhY2tncm91bmQ6ICRzd2l0Y2gtcGFkZGxlLWJhY2tncm91bmQ7XG4gICAgY29udGVudDogJyc7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGhlaWdodDogMS41cmVtO1xuICAgICN7JGdsb2JhbC1sZWZ0fTogMC4yNXJlbTtcbiAgICB0b3A6IDAuMjVyZW07XG4gICAgd2lkdGg6IDEuNXJlbTtcbiAgICB0cmFuc2l0aW9uOiAkc3dpdGNoLXBhZGRsZS10cmFuc2l0aW9uO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgYm9yZGVyLXJhZGl1czogJHN3aXRjaC1wYWRkbGUtcmFkaXVzO1xuICB9XG5cbiAgLy8gQ2hhbmdlIHRoZSB2aXN1YWwgc3R5bGUgd2hlbiB0aGUgc3dpdGNoIGlzIGFjdGl2ZVxuICBpbnB1dDpjaGVja2VkIH4gJiB7XG4gICAgYmFja2dyb3VuZDogJHN3aXRjaC1iYWNrZ3JvdW5kLWFjdGl2ZTtcblxuICAgICY6OmFmdGVyIHtcbiAgICAgICN7JGdsb2JhbC1sZWZ0fTogMi4yNXJlbTtcbiAgICB9XG4gIH1cblxuICBpbnB1dDpmb2N1cyB+ICYge1xuICAgIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcbiAgfVxufVxuXG4vLy8gQWRkcyBiYXNlIHN0eWxlcyBmb3IgYWN0aXZlL2luYWN0aXZlIHRleHQgaW5zaWRlIGEgc3dpdGNoLiBBcHBseSB0aGlzIHRvIHRleHQgZWxlbWVudHMgaW5zaWRlIHRoZSBzd2l0Y2ggYDxsYWJlbD5gLlxuQG1peGluIHN3aXRjaC10ZXh0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBhY3RpdmUgc3RhdGUgdGV4dCB3aXRoaW4gYSBzd2l0Y2guXG5AbWl4aW4gc3dpdGNoLXRleHQtYWN0aXZlIHtcbiAgI3skZ2xvYmFsLWxlZnR9OiA4JTtcbiAgZGlzcGxheTogbm9uZTtcblxuICBpbnB1dDpjaGVja2VkICsgbGFiZWwgPiAmIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBpbmFjdGl2ZSBzdGF0ZSB0ZXh0IHdpdGhpbiBhIHN3aXRjaC5cbkBtaXhpbiBzd2l0Y2gtdGV4dC1pbmFjdGl2ZSB7XG4gICN7JGdsb2JhbC1yaWdodH06IDE1JTtcblxuICBpbnB1dDpjaGVja2VkICsgbGFiZWwgPiAmIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi8vLyBDaGFuZ2VzIHRoZSBzaXplIG9mIGEgc3dpdGNoIGJ5IG1vZGlmeWluZyB0aGUgc2l6ZSBvZiB0aGUgYm9keSBhbmQgcGFkZGxlLiBBcHBseSB0aGlzIHRvIGEgc3dpdGNoIGNvbnRhaW5lci5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGZvbnQtc2l6ZSBbMXJlbV0gLSBGb250IHNpemUgb2YgbGFiZWwgdGV4dCB3aXRoaW4gdGhlIHN3aXRjaC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHdpZHRoIFs0cmVtXSAtIFdpZHRoIG9mIHRoZSBzd2l0Y2ggYm9keS5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGhlaWdodCBbMnJlbV0gLSBIZWlnaHQgb2YgdGhlIHN3aXRjaCBib2R5LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcGFkZGxlLXdpZHRoIFsxLjVyZW1dIC0gV2lkdGggb2YgdGhlIHN3aXRjaCBwYWRkbGUuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRwYWRkbGUtb2Zmc2V0IFswLjI1cmVtXSAtIFNwYWNpbmcgYmV0d2VlbiB0aGUgc3dpdGNoIHBhZGRsZSBhbmQgdGhlIGVkZ2Ugb2YgdGhlIHN3aXRjaCBib2R5LlxuQG1peGluIHN3aXRjaC1zaXplKFxuICAkZm9udC1zaXplOiAxcmVtLFxuICAkd2lkdGg6IDRyZW0sXG4gICRoZWlnaHQ6IDJyZW0sXG4gICRwYWRkbGUtd2lkdGg6IDEuNXJlbSxcbiAgJHBhZGRsZS1vZmZzZXQ6IDAuMjVyZW1cbikge1xuICAkcGFkZGxlLWhlaWdodDogJGhlaWdodCAtICgkcGFkZGxlLW9mZnNldCAqIDIpO1xuICAkcGFkZGxlLWxlZnQtYWN0aXZlOiAkd2lkdGggLSAkcGFkZGxlLXdpZHRoIC0gJHBhZGRsZS1vZmZzZXQ7XG5cbiAgaGVpZ2h0OiAkaGVpZ2h0O1xuICBcbiAgLnN3aXRjaC1wYWRkbGUge1xuICAgIHdpZHRoOiAkd2lkdGg7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZTtcbiAgfVxuXG4gIC5zd2l0Y2gtcGFkZGxlOjphZnRlciB7XG4gICAgd2lkdGg6ICRwYWRkbGUtd2lkdGg7XG4gICAgaGVpZ2h0OiAkcGFkZGxlLWhlaWdodDtcbiAgfVxuXG4gIGlucHV0OmNoZWNrZWQgfiAuc3dpdGNoLXBhZGRsZTo6YWZ0ZXIge1xuICAgICN7JGdsb2JhbC1sZWZ0fTogJHBhZGRsZS1sZWZ0LWFjdGl2ZTtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1zd2l0Y2gge1xuICAvLyBDb250YWluZXIgY2xhc3NcbiAgLnN3aXRjaCB7XG4gICAgaGVpZ2h0OiAkc3dpdGNoLWhlaWdodDtcbiAgICBAaW5jbHVkZSBzd2l0Y2gtY29udGFpbmVyO1xuICB9XG5cbiAgLy8gPGlucHV0PiBlbGVtZW50XG4gIC5zd2l0Y2gtaW5wdXQge1xuICAgIEBpbmNsdWRlIHN3aXRjaC1pbnB1dDtcbiAgfVxuXG4gIC8vIDxsYWJlbD4gZWxlbWVudFxuICAuc3dpdGNoLXBhZGRsZSB7XG4gICAgQGluY2x1ZGUgc3dpdGNoLXBhZGRsZTtcbiAgfVxuXG4gIC8vIEJhc2UgbGFiZWwgdGV4dCBzdHlsZXNcbiAgJXN3aXRjaC10ZXh0IHtcbiAgICBAaW5jbHVkZSBzd2l0Y2gtdGV4dDtcbiAgfVxuXG4gIC8vIEFjdGl2ZSBsYWJlbCB0ZXh0IHN0eWxlc1xuICAuc3dpdGNoLWFjdGl2ZSB7XG4gICAgQGV4dGVuZCAlc3dpdGNoLXRleHQ7XG4gICAgQGluY2x1ZGUgc3dpdGNoLXRleHQtYWN0aXZlO1xuICB9XG5cbiAgLy8gSW5hY3RpdmUgbGFiZWwgdGV4dCBzdHlsZXNcbiAgLnN3aXRjaC1pbmFjdGl2ZSB7XG4gICAgQGV4dGVuZCAlc3dpdGNoLXRleHQ7XG4gICAgQGluY2x1ZGUgc3dpdGNoLXRleHQtaW5hY3RpdmU7XG4gIH1cblxuICAvLyBTd2l0Y2ggc2l6ZXNcbiAgLnN3aXRjaC50aW55IHtcbiAgICBAaW5jbHVkZSBzd2l0Y2gtc2l6ZShyZW0tY2FsYygxMCksIDNyZW0sICRzd2l0Y2gtaGVpZ2h0LXRpbnksIDFyZW0sICRzd2l0Y2gtcGFkZGxlLW9mZnNldCk7XG4gIH1cblxuICAuc3dpdGNoLnNtYWxsIHtcbiAgICBAaW5jbHVkZSBzd2l0Y2gtc2l6ZShyZW0tY2FsYygxMiksIDMuNXJlbSwgJHN3aXRjaC1oZWlnaHQtc21hbGwsIDEuMjVyZW0sICRzd2l0Y2gtcGFkZGxlLW9mZnNldCk7XG4gIH1cblxuICAuc3dpdGNoLmxhcmdlIHtcbiAgICBAaW5jbHVkZSBzd2l0Y2gtc2l6ZShyZW0tY2FsYygxNiksIDVyZW0sICRzd2l0Y2gtaGVpZ2h0LWxhcmdlLCAycmVtLCAkc3dpdGNoLXBhZGRsZS1vZmZzZXQpO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8gc2Nzcy1saW50OmRpc2FibGUgTWVyZ2VhYmxlU2VsZWN0b3IsIFF1YWxpZnlpbmdFbGVtZW50XG5cbi8vLy9cbi8vLyBAZ3JvdXAgdGFibGVcbi8vLy9cblxuLy8vIERlZmF1bHQgY29sb3IgZm9yIHRhYmxlIGJhY2tncm91bmQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWJsZS1iYWNrZ3JvdW5kOiAkd2hpdGUgICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBzY2FsZSBmb3IgZGFya2VuaW5nIHRoZSBzdHJpcGVkIHRhYmxlIHJvd3MgYW5kIHRoZSB0YWJsZSBib3JkZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdGFibGUtY29sb3Itc2NhbGU6IDUlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBzdHlsZSBmb3IgdGFibGUgYm9yZGVyLlxuLy8vIEB0eXBlIExpc3RcbiR0YWJsZS1ib3JkZXI6IDFweCBzb2xpZCBzbWFydC1zY2FsZSgkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWNvbG9yLXNjYWxlKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBmb3IgdGFibGUuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdGFibGUtcGFkZGluZzogcmVtLWNhbGMoOCAxMCAxMCkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHNjYWxlIGZvciBkYXJrZW5pbmcgdGhlIHRhYmxlIHJvd3Mgb24gaG92ZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdGFibGUtaG92ZXItc2NhbGU6IDIlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBvZiBzdGFuZGFyZCByb3dzIG9uIGhvdmVyLlxuLy8vIEB0eXBlIExpc3RcbiR0YWJsZS1yb3ctaG92ZXI6IGRhcmtlbigkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWhvdmVyLXNjYWxlKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2Ygc3RyaXBlZCByb3dzIG9uIGhvdmVyLlxuLy8vIEB0eXBlIExpc3RcbiR0YWJsZS1yb3ctc3RyaXBlLWhvdmVyOiBkYXJrZW4oJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSArICR0YWJsZS1ob3Zlci1zY2FsZSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3IgZm9yIHN0cmlwZWQgcm93cy5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYmxlLXN0cmlwZWQtYmFja2dyb3VuZDogc21hcnQtc2NhbGUoJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHZhbHVlIGZvciBzaG93aW5nIHRoZSBzdHJpcGUgb24gcm93cyBvZiB0aGUgdGFibGVzLCBleGNsdWRpbmcgdGhlIGhlYWRlciBhbmQgZm9vdGVyLiBJZiBldmVuLCB0aGUgZXZlbiByb3dzIHdpbGwgaGF2ZSBhIGJhY2tncm91bmQgY29sb3IuIElmIG9kZCwgdGhlIG9kZCByb3dzIHdpbGwgaGF2ZSBhIGJhY2tncm91bmQgY29sb3IuIElmIGVtcHR5LCBvciBhbnkgb3RoZXIgdmFsdWUsIHRoZSB0YWJsZSByb3dzIHdpbGwgaGF2ZSBubyBzdHJpcGluZy5cbi8vLyBAdHlwZSBLZXl3b3JkXG4kdGFibGUtc3RyaXBlOiBldmVuICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBmb3IgaGVhZGVyIGJhY2tncm91bmQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWJsZS1oZWFkLWJhY2tncm91bmQ6IHNtYXJ0LXNjYWxlKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUgLyAyKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2YgaGVhZGVyIHJvd3Mgb24gaG92ZXIuXG4vLy8gQHR5cGUgTGlzdFxuJHRhYmxlLWhlYWQtcm93LWhvdmVyOiBkYXJrZW4oJHRhYmxlLWhlYWQtYmFja2dyb3VuZCwgJHRhYmxlLWhvdmVyLXNjYWxlKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3IgZm9yIGZvb3RlciBiYWNrZ3JvdW5kLlxuLy8vIEB0eXBlIENvbG9yXG4kdGFibGUtZm9vdC1iYWNrZ3JvdW5kOiBzbWFydC1zY2FsZSgkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWNvbG9yLXNjYWxlKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2YgZm9vdGVyIHJvd3Mgb24gaG92ZXIuXG4vLy8gQHR5cGUgTGlzdFxuJHRhYmxlLWZvb3Qtcm93LWhvdmVyOiBkYXJrZW4oJHRhYmxlLWZvb3QtYmFja2dyb3VuZCwgJHRhYmxlLWhvdmVyLXNjYWxlKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBjb2xvciBmb3IgaGVhZGVyLlxuLy8vIEB0eXBlIENvbG9yXG4kdGFibGUtaGVhZC1mb250LWNvbG9yOiAkYm9keS1mb250LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IGNvbG9yIGZvciBmb290ZXIuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWJsZS1mb290LWZvbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHZhbHVlIGZvciBzaG93aW5nIHRoZSBoZWFkZXIgd2hlbiB1c2luZyBzdGFja2VkIHRhYmxlcy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kc2hvdy1oZWFkZXItZm9yLXN0YWNrZWQ6IGZhbHNlICFkZWZhdWx0O1xuXG5AbWl4aW4gLXpmLXRhYmxlLWNoaWxkcmVuLXN0eWxlcygkc3RyaXBlOiAkdGFibGUtc3RyaXBlKSB7XG4gIHRoZWFkLFxuICB0Ym9keSxcbiAgdGZvb3Qge1xuICAgIGJvcmRlcjogJHRhYmxlLWJvcmRlcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtYmFja2dyb3VuZDtcbiAgfVxuXG4gIC8vIENhcHRpb25cbiAgY2FwdGlvbiB7XG4gICAgZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQ7XG4gICAgcGFkZGluZzogJHRhYmxlLXBhZGRpbmc7XG4gIH1cbiAgXG4gIC8vIFRhYmxlIGhlYWRcbiAgdGhlYWQge1xuICAgIGJhY2tncm91bmQ6ICR0YWJsZS1oZWFkLWJhY2tncm91bmQ7XG4gICAgY29sb3I6ICR0YWJsZS1oZWFkLWZvbnQtY29sb3I7XG4gIH1cblxuICAvLyBUYWJsZSBmb290XG4gIHRmb290IHtcbiAgICBiYWNrZ3JvdW5kOiAkdGFibGUtZm9vdC1iYWNrZ3JvdW5kO1xuICAgIGNvbG9yOiAkdGFibGUtZm9vdC1mb250LWNvbG9yO1xuICB9XG5cbiAgLy8gVGFibGUgaGVhZCBhbmQgZm9vdFxuICB0aGVhZCxcbiAgdGZvb3Qge1xuICAgIC8vIFJvd3Mgd2l0aGluIGhlYWQgYW5kIGZvb3RcbiAgICB0ciB7XG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICB9XG5cbiAgICAvLyBDZWxscyB3aXRoaW4gaGVhZCBhbmQgZm9vdFxuICAgIHRoLFxuICAgIHRkIHtcbiAgICAgIHBhZGRpbmc6ICR0YWJsZS1wYWRkaW5nO1xuICAgICAgZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQ7XG4gICAgICB0ZXh0LWFsaWduOiAjeyRnbG9iYWwtbGVmdH07XG4gICAgfVxuICB9XG5cbiAgLy8gVGFibGUgcm93c1xuICB0Ym9keSB7XG4gICAgdHIge1xuICAgICAgLy8gSWYgc3RyaXBlIGlzIHNldCB0byBldmVuLCBkYXJrZW4gdGhlIGV2ZW4gcm93cy5cbiAgICAgIEBpZiAkc3RyaXBlID09IGV2ZW4ge1xuICAgICAgICAmOm50aC1jaGlsZChldmVuKSB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLXN0cmlwZWQtYmFja2dyb3VuZDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBJZiBzdHJpcGUgaXMgc2V0IHRvIG9kZCwgZGFya2VuIHRoZSBvZGQgcm93cy5cbiAgICAgIEBlbHNlIGlmICRzdHJpcGUgPT0gb2RkIHtcbiAgICAgICAgJjpudGgtY2hpbGQob2RkKSB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLXN0cmlwZWQtYmFja2dyb3VuZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoLFxuICAgIHRkIHtcbiAgICAgIHBhZGRpbmc6ICR0YWJsZS1wYWRkaW5nO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyB0aGUgZ2VuZXJhbCBzdHlsZXMgZm9yIHRhYmxlcy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzdHJpcGUgWyR0YWJsZS1zdHJpcGVdIC0gVXNlcyBrZXl3b3JkcyBldmVuLCBvZGQsIG9yIG5vbmUgdG8gZGFya2VuIHJvd3Mgb2YgdGhlIHRhYmxlLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBldmVuLlxuQG1peGluIHRhYmxlKFxuICAkc3RyaXBlOiAkdGFibGUtc3RyaXBlLFxuICAkbmVzdDogZmFsc2Vcbikge1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luLWJvdHRvbTogJGdsb2JhbC1tYXJnaW47XG4gIGJvcmRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuXG4gIEBpZiAkbmVzdCB7XG4gICAgQGluY2x1ZGUgLXpmLXRhYmxlLWNoaWxkcmVuLXN0eWxlcygkc3RyaXBlKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgQGluY2x1ZGUgLXpmLXRhYmxlLWNoaWxkcmVuLXN0eWxlcygkc3RyaXBlKTtcbiAgICB9XG4gIH1cbn1cblxuLy8vIEFkZHMgdGhlIGFiaWxpdHkgdG8gaG9yaXpvbnRhbGx5IHNjcm9sbCB0aGUgdGFibGUgd2hlbiB0aGUgY29udGVudCBvdmVyZmxvd3MgaG9yaXpvbnRhbGx5LlxuQG1peGluIHRhYmxlLXNjcm9sbCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbiAgb3ZlcmZsb3cteDogYXV0bztcbn1cblxuLy8vIFNsaWdodGx5IGRhcmtlbnMgdGhlIHRhYmxlIHJvd3Mgb24gaG92ZXIuXG5AbWl4aW4gdGFibGUtaG92ZXIge1xuICB0aGVhZCB0ciB7XG4gICAgLy9EYXJrZW5zIHRoZSB0YWJsZSBoZWFkZXIgcm93cyBvbiBob3Zlci5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1oZWFkLXJvdy1ob3ZlcjtcbiAgICB9XG4gIH1cblxuICB0Zm9vdCB0ciB7XG4gICAgLy9EYXJrZW5zIHRoZSB0YWJsZSBmb290ZXIgcm93cyBvbiBob3Zlci5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1mb290LXJvdy1ob3ZlcjtcbiAgICB9XG4gIH1cblxuICB0Ym9keSB0ciB7XG4gICAgLy9EYXJrZW5zIHRoZSBub24tc3RyaXBlZCB0YWJsZSByb3dzIG9uIGhvdmVyLlxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLXJvdy1ob3ZlcjtcbiAgICB9XG5cbiAgICAvL0RhcmtlbnMgdGhlIGV2ZW4gc3RyaXBlZCB0YWJsZSByb3dzLlxuICAgIEBpZigkdGFibGUtc3RyaXBlID09IGV2ZW4pIHtcbiAgICAgICY6bnRoLW9mLXR5cGUoZXZlbik6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtcm93LXN0cmlwZS1ob3ZlcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvL0RhcmtlbnMgdGhlIG9kZCBzdHJpcGVkIHRhYmxlIHJvd3MuXG4gICAgQGVsc2VpZigkdGFibGUtc3RyaXBlID09IG9kZCkge1xuICAgICAgJjpudGgtb2YtdHlwZShvZGQpOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLXJvdy1zdHJpcGUtaG92ZXI7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBzdGFja2VkIHRhYmxlLiBVc2VmdWwgZm9yIHNtYWxsLXNjcmVlbiBsYXlvdXRzLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGhlYWRlciBbJHNob3ctaGVhZGVyLWZvci1zdGFja2VkXSAtIFNob3cgdGhlIGZpcnN0IHRoIG9mIGhlYWRlciB3aGVuIHN0YWNrZWQuXG5AbWl4aW4gdGFibGUtc3RhY2soJGhlYWRlcjogJHNob3ctaGVhZGVyLWZvci1zdGFja2VkKSB7XG4gIEBpZiAkaGVhZGVyIHtcbiAgICB0aGVhZCB7XG4gICAgICB0aDpmaXJzdC1jaGlsZCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuXG4gICAgICB0aCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICB0aGVhZCB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gIHRmb290IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgdHIsXG4gIHRoLFxuICB0ZCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICB0ZCB7XG4gICAgYm9yZGVyLXRvcDogMDtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi10YWJsZSgkbmVzdDogZmFsc2UpIHtcbiAgdGFibGUge1xuICAgIEBpbmNsdWRlIHRhYmxlKCRuZXN0OiAkbmVzdCk7XG4gIH1cblxuICB0YWJsZS5zdGFjayB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0gZG93bikge1xuICAgICAgQGluY2x1ZGUgdGFibGUtc3RhY2s7XG4gICAgfVxuICB9XG5cbiAgdGFibGUuc2Nyb2xsIHtcbiAgICBAaW5jbHVkZSB0YWJsZS1zY3JvbGw7XG4gIH1cblxuICB0YWJsZS5ob3ZlciB7XG4gICAgQGluY2x1ZGUgdGFibGUtaG92ZXI7XG4gIH1cblxuICAudGFibGUtc2Nyb2xsIHtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xuXG4gICAgdGFibGUge1xuICAgICAgd2lkdGg6IGF1dG87XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB0YWJzXG4vLy8vXG5cbi8vLyBEZWZhdWx0IG1hcmdpbiBvZiB0aGUgdGFiIGJhci5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0YWItbWFyZ2luOiAwICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIG9mIGEgdGFiIGJhci5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYi1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBhY3RpdmUgYmFja2dyb3VuZCBjb2xvciBvZiBhIHRhYiBiYXIuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWItYmFja2dyb3VuZC1hY3RpdmU6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRm9udCBzaXplIG9mIHRhYiBpdGVtcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0YWItaXRlbS1mb250LXNpemU6IHJlbS1jYWxjKDEyKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBvbiBob3ZlciBmb3IgaXRlbXMgaW4gYSBNZW51LlxuJHRhYi1pdGVtLWJhY2tncm91bmQtaG92ZXI6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBvZiBhIHRhYiBpdGVtLlxuLy8vIEB0eXBlIE51bWJlclxuJHRhYi1pdGVtLXBhZGRpbmc6IDEuMjVyZW0gMS41cmVtICFkZWZhdWx0O1xuXG4vLy8gTWF4aW11bSBudW1iZXIgb2YgYGV4cGFuZC1uYCBjbGFzc2VzIHRvIGluY2x1ZGUgaW4gdGhlIENTUy5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0YWItZXhwYW5kLW1heDogNiAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBvZiB0YWIgY29udGVudC5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYi1jb250ZW50LWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm9yZGVyIGNvbG9yIG9mIHRhYiBjb250ZW50LlxuLy8vIEB0eXBlIENvbG9yXG4kdGFiLWNvbnRlbnQtYm9yZGVyOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgdGV4dCBjb2xvciBvZiB0YWIgY29udGVudC5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYi1jb250ZW50LWNvbG9yOiBmb3JlZ3JvdW5kKCR0YWItYmFja2dyb3VuZCwgJHByaW1hcnktY29sb3IpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwYWRkaW5nIGZvciB0YWIgY29udGVudC5cbi8vLyBAdHlwZSBOdW1iZXIgfCBMaXN0XG4kdGFiLWNvbnRlbnQtcGFkZGluZzogMXJlbSAhZGVmYXVsdDtcblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIHRhYiBjb250YWluZXIuIEFwcGx5IHRoaXMgdG8gYSBgPHVsPmAuXG5AbWl4aW4gdGFicy1jb250YWluZXIge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgbWFyZ2luOiAkdGFiLW1hcmdpbjtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBiYWNrZ3JvdW5kOiAkdGFiLWJhY2tncm91bmQ7XG4gIGJvcmRlcjogMXB4IHNvbGlkICR0YWItY29udGVudC1ib3JkZXI7XG59XG5cbi8vLyBBdWdtZW50cyBhIHRhYiBjb250YWluZXIgdG8gaGF2ZSB2ZXJ0aWNhbCB0YWJzLiBVc2UgdGhpcyBpbiBjb25qdW5jdGlvbiB3aXRoIGB0YWJzLWNvbnRhaW5lcigpYC5cbkBtaXhpbiB0YWJzLWNvbnRhaW5lci12ZXJ0aWNhbCB7XG4gID4gbGkge1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIGZsb2F0OiBub25lO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGxpbmtzIHdpdGhpbiBhIHRhYiBjb250YWluZXIuIEFwcGx5IHRoaXMgdG8gdGhlIGA8bGk+YCBlbGVtZW50cyBpbnNpZGUgYSB0YWIgY29udGFpbmVyLlxuQG1peGluIHRhYnMtdGl0bGUge1xuICBmbG9hdDogI3skZ2xvYmFsLWxlZnR9O1xuXG4gID4gYSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZzogJHRhYi1pdGVtLXBhZGRpbmc7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgZm9udC1zaXplOiAkdGFiLWl0ZW0tZm9udC1zaXplO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkdGFiLWl0ZW0tYmFja2dyb3VuZC1ob3ZlcjtcbiAgICB9XG5cbiAgICAmOmZvY3VzLFxuICAgICZbYXJpYS1zZWxlY3RlZD0ndHJ1ZSddIHtcbiAgICAgIGJhY2tncm91bmQ6ICR0YWItYmFja2dyb3VuZC1hY3RpdmU7XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIHdyYXBwZXIgdGhhdCBzdXJyb3VuZHMgYSB0YWIgZ3JvdXAncyBjb250ZW50IHBhbmVzLlxuQG1peGluIHRhYnMtY29udGVudCB7XG4gIGJhY2tncm91bmQ6ICR0YWItY29udGVudC1iYWNrZ3JvdW5kO1xuICB0cmFuc2l0aW9uOiBhbGwgMC41cyBlYXNlO1xuICBib3JkZXI6IDFweCBzb2xpZCAkdGFiLWNvbnRlbnQtYm9yZGVyO1xuICBib3JkZXItdG9wOiAwO1xufVxuXG4vLy8gQXVnbWVudHMgYSB0YWIgY29udGVudCBjb250YWluZXIgdG8gaGF2ZSBhIHZlcnRpY2FsIHN0eWxlLCBieSBzaGlmdGluZyB0aGUgYm9yZGVyIGFyb3VuZC4gVXNlIHRoaXMgaW4gY29uanVuY3Rpb24gd2l0aCBgdGFicy1jb250ZW50KClgLlxuQG1peGluIHRhYnMtY29udGVudC12ZXJ0aWNhbCB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICR0YWItY29udGVudC1ib3JkZXI7XG4gIGJvcmRlci0jeyRnbG9iYWwtbGVmdH06IDA7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYW4gaW5kaXZpZHVhbCB0YWIgY29udGVudCBwYW5lbCB3aXRoaW4gdGhlIHRhYiBjb250ZW50IGNvbnRhaW5lci5cbkBtaXhpbiB0YWJzLXBhbmVsIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgcGFkZGluZzogJHRhYi1jb250ZW50LXBhZGRpbmc7XG5cbiAgJi5pcy1hY3RpdmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXRhYnMge1xuICAudGFicyB7XG4gICAgQGluY2x1ZGUgdGFicy1jb250YWluZXI7XG4gIH1cblxuICAvLyBWZXJ0aWNhbFxuICAudGFicy52ZXJ0aWNhbCB7XG4gICAgQGluY2x1ZGUgdGFicy1jb250YWluZXItdmVydGljYWw7XG4gIH1cblxuICAvLyBTaW1wbGVcbiAgLnRhYnMuc2ltcGxlIHtcbiAgICA+IGxpID4gYSB7XG4gICAgICBwYWRkaW5nOiAwO1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUHJpbWFyeSBjb2xvclxuICAudGFicy5wcmltYXJ5IHtcbiAgICBiYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvcjtcblxuICAgID4gbGkgPiBhIHtcbiAgICAgIGNvbG9yOiBmb3JlZ3JvdW5kKCRwcmltYXJ5LWNvbG9yKTtcblxuICAgICAgJjpob3ZlcixcbiAgICAgICY6Zm9jdXMge1xuICAgICAgICBiYWNrZ3JvdW5kOiBzbWFydC1zY2FsZSgkcHJpbWFyeS1jb2xvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnRhYnMtdGl0bGUge1xuICAgIEBpbmNsdWRlIHRhYnMtdGl0bGU7XG4gIH1cblxuICAudGFicy1jb250ZW50IHtcbiAgICBAaW5jbHVkZSB0YWJzLWNvbnRlbnQ7XG4gIH1cblxuICAudGFicy1jb250ZW50LnZlcnRpY2FsIHtcbiAgICBAaW5jbHVkZSB0YWJzLWNvbnRlbnQtdmVydGljYWw7XG4gIH1cblxuICAudGFicy1wYW5lbCB7XG4gICAgQGluY2x1ZGUgdGFicy1wYW5lbDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgdGl0bGUtYmFyXG4vLy8vXG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGEgdGl0bGUgYmFyLlxuLy8vIEB0eXBlIENvbG9yXG4kdGl0bGViYXItYmFja2dyb3VuZDogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gQ29sb3Igb2YgdGV4dCBpbnNpZGUgYSB0aXRsZSBiYXIuXG4vLy8gQHR5cGUgQ29sb3JcbiR0aXRsZWJhci1jb2xvcjogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gUGFkZGluZyBpbnNpZGUgYSB0aXRsZSBiYXIuXG4vLy8gQHR5cGUgTGVuZ3RoXG4kdGl0bGViYXItcGFkZGluZzogMC41cmVtICFkZWZhdWx0O1xuXG4vLy8gRm9udCB3ZWlnaHQgb2YgdGV4dCBpbnNpZGUgYSB0aXRsZSBiYXIuXG4vLy8gQHR5cGUgV2VpZ2h0XG4kdGl0bGViYXItdGV4dC1mb250LXdlaWdodDogYm9sZCAhZGVmYXVsdDtcblxuLy8vIENvbG9yIG9mIG1lbnUgaWNvbnMgaW5zaWRlIGEgdGl0bGUgYmFyLlxuLy8vIEB0eXBlIENvbG9yXG4kdGl0bGViYXItaWNvbi1jb2xvcjogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gQ29sb3Igb2YgbWVudSBpY29ucyBpbnNpZGUgYSB0aXRsZSBiYXIgb24gaG92ZXIuXG4vLy8gQHR5cGUgQ29sb3JcbiR0aXRsZWJhci1pY29uLWNvbG9yLWhvdmVyOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBTcGFjaW5nIGJldHdlZW4gdGhlIG1lbnUgaWNvbiBhbmQgdGV4dCBpbnNpZGUgYSB0aXRsZSBiYXIuXG4vLy8gQHR5cGUgTGVuZ3RoXG4kdGl0bGViYXItaWNvbi1zcGFjaW5nOiAwLjI1cmVtICFkZWZhdWx0O1xuXG5AbWl4aW4gZm91bmRhdGlvbi10aXRsZS1iYXIge1xuICAudGl0bGUtYmFyIHtcbiAgICBiYWNrZ3JvdW5kOiAkdGl0bGViYXItYmFja2dyb3VuZDtcbiAgICBjb2xvcjogJHRpdGxlYmFyLWNvbG9yO1xuICAgIHBhZGRpbmc6ICR0aXRsZWJhci1wYWRkaW5nO1xuXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgfVxuXG4gICAgLm1lbnUtaWNvbiB7XG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkdGl0bGViYXItaWNvbi1zcGFjaW5nO1xuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICR0aXRsZWJhci1pY29uLXNwYWNpbmc7XG4gICAgfVxuICB9XG5cbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgLy8gc2Nzcy1saW50OmRpc2FibGUgWmVyb1VuaXRcbiAgICAudGl0bGUtYmFyLWxlZnQsXG4gICAgLnRpdGxlLWJhci1yaWdodCB7XG4gICAgICBmbGV4OiAxIDEgMHB4O1xuICAgIH1cblxuICAgIC50aXRsZS1iYXItcmlnaHQge1xuICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAudGl0bGUtYmFyLWxlZnQge1xuICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgfVxuXG4gICAgLnRpdGxlLWJhci1yaWdodCB7XG4gICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB9XG4gIH1cblxuICAudGl0bGUtYmFyLXRpdGxlIHtcbiAgICBmb250LXdlaWdodDogJHRpdGxlYmFyLXRleHQtZm9udC13ZWlnaHQ7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHRvcC1iYXJcbi8vLy9cblxuLy8vIFBhZGRpbmcgZm9yIHRoZSB0b3AgYmFyLlxuLy8vIEB0eXBlIE51bWJlclxuJHRvcGJhci1wYWRkaW5nOiAwLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciB0aGUgdG9wIGJhci4gVGhpcyBjb2xvciBhbHNvIGNhc2NhZGVzIHRvIG1lbnVzIHdpdGhpbiB0aGUgdG9wIGJhci5cbi8vLyBAdHlwZSBDb2xvclxuJHRvcGJhci1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igc3VibWVudXMgd2l0aGluIHRoZSB0b3AgYmFyLiBVc2VmdWxsIGlmICR0b3BiYXItYmFja2dyb3VuZCBpcyB0cmFuc3BhcmVudC5cbi8vLyBAdHlwZSBDb2xvclxuJHRvcGJhci1zdWJtZW51LWJhY2tncm91bmQ6ICR0b3BiYXItYmFja2dyb3VuZCAhZGVmYXVsdDtcblxuLy8vIFNwYWNpbmcgZm9yIHRoZSB0b3AgYmFyIHRpdGxlLlxuLy8vIEB0eXBlIE51bWJlclxuJHRvcGJhci10aXRsZS1zcGFjaW5nOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gTWF4aW11bSB3aWR0aCBvZiBgPGlucHV0PmAgZWxlbWVudHMgaW5zaWRlIHRoZSB0b3AgYmFyLlxuLy8vIEB0eXBlIE51bWJlclxuJHRvcGJhci1pbnB1dC13aWR0aDogMjAwcHggIWRlZmF1bHQ7XG5cbi8vLyBCcmVha3BvaW50IGF0IHdoaWNoIHRvcCBiYXIgc3dpdGNoZXMgZnJvbSBtb2JpbGUgdG8gZGVza3RvcCB2aWV3LlxuLy8vIEB0eXBlIEJyZWFrcG9pbnRcbiR0b3BiYXItdW5zdGFjay1icmVha3BvaW50OiBtZWRpdW0gIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSB0b3AgYmFyIGNvbnRhaW5lci5cbkBtaXhpbiB0b3AtYmFyLWNvbnRhaW5lciB7XG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICB9XG5cbiAgcGFkZGluZzogJHRvcGJhci1wYWRkaW5nO1xuXG4gICYsXG4gIHVsIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdG9wYmFyLWJhY2tncm91bmQ7XG4gIH1cblxuICAvLyBDaGVjayBpZiAkdG9wYmFyLWJhY2tncm91bmQgaXMgZGlmZmVybnQgZnJvbSAkdG9wYmFyLWJhY2tncm91bmQtc3VibWVudVxuICBAaWYgKCR0b3BiYXItYmFja2dyb3VuZCAhPSAkdG9wYmFyLXN1Ym1lbnUtYmFja2dyb3VuZCkge1xuICAgIHVsIHVsIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0b3BiYXItc3VibWVudS1iYWNrZ3JvdW5kO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJlc3RyYWluIHdpZHRoIG9mIGlucHV0cyBieSBkZWZhdWx0IHRvIG1ha2UgdGhlbSBlYXNpZXIgdG8gYXJyYW5nZVxuICBpbnB1dCB7XG4gICAgbWF4LXdpZHRoOiAkdG9wYmFyLWlucHV0LXdpZHRoO1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAxcmVtO1xuICB9XG5cbiAgLy8gVGhlIGFib3ZlIHN0eWxlcyBzaG91bGRuJ3QgYXBwbHkgdG8gaW5wdXQgZ3JvdXAgZmllbGRzXG4gIC5pbnB1dC1ncm91cC1maWVsZCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06IDA7XG4gIH1cblxuICAvLyBzY3NzLWxpbnQ6ZGlzYWJsZSBRdWFsaWZ5aW5nRWxlbWVudFxuICBpbnB1dC5idXR0b24ge1xuICAgIHdpZHRoOiBhdXRvO1xuICB9XG59XG5cbi8vLyBNYWtlcyBzZWN0aW9ucyBvZiBhIHRvcCBiYXIgc3RhY2sgb24gdG9wIG9mIGVhY2ggb3RoZXIuXG5AbWl4aW4gdG9wLWJhci1zdGFja2VkIHtcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuXG4gICAgLy8gU3ViLXNlY3Rpb25zXG4gICAgLnRvcC1iYXItbGVmdCxcbiAgICAudG9wLWJhci1yaWdodCB7XG4gICAgICBmbGV4OiAwIDAgMTAwJTtcbiAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIFN1Yi1zZWN0aW9uc1xuICAgIC50b3AtYmFyLWxlZnQsXG4gICAgLnRvcC1iYXItcmlnaHQge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuICB9XG59XG5cbi8vLyBVbmRvZXMgdGhlIENTUyBhcHBsaWVkIGJ5IHRoZSBgdG9wLWJhci1zdGFja2VkKClgIG1peGluLlxuQG1peGluIHRvcC1iYXItdW5zdGFjayB7XG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGZsZXgtd3JhcDogbm93cmFwO1xuXG4gICAgLy8gc2Nzcy1saW50OmRpc2FibGUgWmVyb1VuaXRcbiAgICAudG9wLWJhci1sZWZ0IHtcbiAgICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgIH1cbiAgICAudG9wLWJhci1yaWdodCB7XG4gICAgICBmbGV4OiAwIDEgYXV0bztcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIC50b3AtYmFyLWxlZnQsXG4gICAgLnRvcC1iYXItcmlnaHQge1xuICAgICAgd2lkdGg6IGF1dG87XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXRvcC1iYXIge1xuICAvLyBUb3AgYmFyIGNvbnRhaW5lclxuICAudG9wLWJhciB7XG4gICAgQGluY2x1ZGUgdG9wLWJhci1jb250YWluZXI7XG5cbiAgICAvLyBTdGFjayBvbiBzbWFsbCBzY3JlZW5zIGJ5IGRlZmF1bHRcbiAgICBAaW5jbHVkZSB0b3AtYmFyLXN0YWNrZWQ7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0b3BiYXItdW5zdGFjay1icmVha3BvaW50KSB7XG4gICAgICBAaW5jbHVkZSB0b3AtYmFyLXVuc3RhY2s7XG4gICAgfVxuXG4gICAgLy8gR2VuZXJhdGUgY2xhc3NlcyBmb3Igc3RhY2tpbmcgb24gZWFjaCBzY3JlZW4gc2l6ZSAoZGVmaW5lZCBpbiAkYnJlYWtwb2ludC1jbGFzc2VzKVxuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgJi5zdGFja2VkLWZvci0jeyRzaXplfSB7XG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSBkb3duKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSB0b3AtYmFyLXN0YWNrZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gU3ViLXNlY3Rpb25zXG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIC50b3AtYmFyLXRpdGxlIHtcbiAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkdG9wYmFyLXRpdGxlLXNwYWNpbmc7XG4gICAgfVxuXG4gICAgLnRvcC1iYXItbGVmdCxcbiAgICAudG9wLWJhci1yaWdodCB7XG4gICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIC50b3AtYmFyLXRpdGxlIHtcbiAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkdG9wYmFyLXRpdGxlLXNwYWNpbmc7XG5cbiAgICB9XG5cbiAgICAudG9wLWJhci1sZWZ0IHtcbiAgICAgIGZsb2F0OiBsZWZ0O1xuICAgIH1cblxuICAgIC50b3AtYmFyLXJpZ2h0IHtcbiAgICAgIGZsb2F0OiByaWdodDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHRodW1ibmFpbFxuLy8vL1xuXG4vLy8gQm9yZGVyIGFyb3VuZCB0aHVtYm5haWwgaW1hZ2VzLlxuLy8vIEB0eXBlIEJvcmRlclxuJHRodW1ibmFpbC1ib3JkZXI6IHNvbGlkIDRweCAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBCb3R0b20gbWFyZ2luIGZvciB0aHVtYm5haWwgaW1hZ2VzLlxuLy8vIEB0eXBlIExlbmd0aFxuJHRodW1ibmFpbC1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbiAhZGVmYXVsdDtcblxuLy8vIEJveCBzaGFkb3cgdW5kZXIgdGh1bWJuYWlsIGltYWdlcy5cbi8vLyBAdHlwZSBTaGFkb3dcbiR0aHVtYm5haWwtc2hhZG93OiAwIDAgMCAxcHggcmdiYSgkYmxhY2ssIDAuMikgIWRlZmF1bHQ7XG5cbi8vLyBCb3ggc2hhZG93IHVuZGVyIHRodW1ibmFpbCBpbWFnZXMuXG4vLy8gQHR5cGUgU2hhZG93XG4kdGh1bWJuYWlsLXNoYWRvdy1ob3ZlcjogMCAwIDZweCAxcHggcmdiYSgkcHJpbWFyeS1jb2xvciwgMC41KSAhZGVmYXVsdDtcblxuLy8vIFRyYW5zaXRpb24gcHJvcHJ0aWVzIGZvciB0aHVtYm5haWwgaW1hZ2VzLlxuLy8vIEB0eXBlIFRyYW5zaXRpb25cbiR0aHVtYm5haWwtdHJhbnNpdGlvbjogYm94LXNoYWRvdyAyMDBtcyBlYXNlLW91dCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcmFkaXVzIGZvciB0aHVtYm5haWwgaW1hZ2VzLlxuLy8vIEB0eXBlIE51bWJlclxuJHRodW1ibmFpbC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gQWRkcyB0aHVtYm5haWwgc3R5bGVzIHRvIGFuIGVsZW1lbnQuXG5AbWl4aW4gdGh1bWJuYWlsIHtcbiAgYm9yZGVyOiAkdGh1bWJuYWlsLWJvcmRlcjtcbiAgYm94LXNoYWRvdzogJHRodW1ibmFpbC1zaGFkb3c7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbGluZS1oZWlnaHQ6IDA7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgdHJhbnNpdGlvbjogJHRodW1ibmFpbC10cmFuc2l0aW9uO1xuICBib3JkZXItcmFkaXVzOiAkdGh1bWJuYWlsLXJhZGl1cztcbiAgbWFyZ2luLWJvdHRvbTogJHRodW1ibmFpbC1tYXJnaW4tYm90dG9tO1xuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuICAgIGJveC1zaGFkb3c6ICR0aHVtYm5haWwtc2hhZG93LWhvdmVyO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXRodW1ibmFpbCB7XG4gIC50aHVtYm5haWwge1xuICAgIEBpbmNsdWRlIHRodW1ibmFpbDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgdG9vbHRpcFxuLy8vL1xuXG4vLy8gRGVmYXVsdCBmb250IHdlaWdodCBvZiB0aGUgZGVmaW5lZCB0ZXJtLlxuLy8vIEB0eXBlIEtleXdvcmQgfCBOdW1iZXJcbiRoYXMtdGlwLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3JkZXIgYm90dG9tIG9mIHRoZSBkZWZpbmVkIHRlcm0uXG4vLy8gQHR5cGUgTGlzdFxuJGhhcy10aXAtYm9yZGVyLWJvdHRvbTogZG90dGVkIDFweCAkZGFyay1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBvZiB0aGUgdG9vbHRpcCBiYWNrZ3JvdW5kLlxuLy8vIEB0eXBlIENvbG9yXG4kdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIG9mIHRoZSB0b29sdGlwIGZvbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0b29sdGlwLWNvbG9yOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgb2YgdGhlIHRvb2x0aXAgYmFja2dyb3VuZC5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0b29sdGlwLXBhZGRpbmc6IDAuNzVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgc2l6ZSBvZiB0aGUgdG9vbHRpcCB0ZXh0LiBCeSBkZWZhdWx0LCB3ZSByZWNvbW1lbmQgYSBzbWFsbGVyIGZvbnQgc2l6ZSB0aGFuIHRoZSBib2R5IGNvcHkuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdG9vbHRpcC1mb250LXNpemU6ICRzbWFsbC1mb250LXNpemUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBpcCB3aWR0aCBmb3IgdG9vbHRpcHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdG9vbHRpcC1waXAtd2lkdGg6IDAuNzVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBpcCBoZWlnaHQgZm9yIHRvb2x0aXBzLiBUaGlzIGlzIGhlbHBmdWwgZm9yIGNhbGN1bGF0aW5nIHRoZSBkaXN0YW5jZSBvZiB0aGUgdG9vbHRpcCBmcm9tIHRoZSB0b29sdGlwIHdvcmQuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdG9vbHRpcC1waXAtaGVpZ2h0OiAkdG9vbHRpcC1waXAtd2lkdGggKiAwLjg2NiAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcmFkaXVzIGZvciB0b29sdGlwcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0b29sdGlwLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbkBtaXhpbiBoYXMtdGlwIHtcbiAgYm9yZGVyLWJvdHRvbTogJGhhcy10aXAtYm9yZGVyLWJvdHRvbTtcbiAgZm9udC13ZWlnaHQ6ICRoYXMtdGlwLWZvbnQtd2VpZ2h0O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgY3Vyc29yOiBoZWxwO1xufVxuXG5AbWl4aW4gdG9vbHRpcCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICR0b29sdGlwLWJhY2tncm91bmQtY29sb3I7XG4gIGNvbG9yOiAkdG9vbHRpcC1jb2xvcjtcbiAgZm9udC1zaXplOiAkdG9vbHRpcC1mb250LXNpemU7XG4gIHBhZGRpbmc6ICR0b29sdGlwLXBhZGRpbmc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMTA7XG4gIHRvcDogY2FsYygxMDAlICsgI3skdG9vbHRpcC1waXAtaGVpZ2h0fSk7XG4gIG1heC13aWR0aDogMTByZW0gIWltcG9ydGFudDtcbiAgYm9yZGVyLXJhZGl1czogJHRvb2x0aXAtcmFkaXVzO1xuXG4gICY6OmJlZm9yZSB7XG4gICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCR0b29sdGlwLXBpcC13aWR0aCwgJHRvb2x0aXAtYmFja2dyb3VuZC1jb2xvciwgdXApO1xuICAgIGJvdHRvbTogMTAwJTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgfVxuXG4gICYudG9wOjpiZWZvcmUge1xuICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkdG9vbHRpcC1waXAtd2lkdGgsICR0b29sdGlwLWJhY2tncm91bmQtY29sb3IsIGRvd24pO1xuICAgIHRvcDogMTAwJTtcbiAgICBib3R0b206IGF1dG87XG4gIH1cblxuICAmLmxlZnQ6OmJlZm9yZSB7XG4gICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCR0b29sdGlwLXBpcC13aWR0aCwgJHRvb2x0aXAtYmFja2dyb3VuZC1jb2xvciwgcmlnaHQpO1xuICAgIGJvdHRvbTogYXV0bztcbiAgICBsZWZ0OiAxMDAlO1xuICAgIHRvcDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgfVxuXG4gICYucmlnaHQ6OmJlZm9yZSB7XG4gICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCR0b29sdGlwLXBpcC13aWR0aCwgJHRvb2x0aXAtYmFja2dyb3VuZC1jb2xvciwgbGVmdCk7XG4gICAgYm90dG9tOiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IDEwMCU7XG4gICAgdG9wOiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXRvb2x0aXAge1xuICAuaGFzLXRpcCB7XG4gICAgQGluY2x1ZGUgaGFzLXRpcDtcbiAgfVxuXG4gIC50b29sdGlwIHtcbiAgICBAaW5jbHVkZSB0b29sdGlwO1xuICB9XG59XG4iLCIvKipcbiAqIENsYXNzZXMgVXNlZCBpbiBXYWxsIEVsZW1lbnRzXG4gKlxuICogdnh3YW55ICAgICAgICAgICAgICA6IEFueSBibG9jayBlbGVtZW50IGdlbmVyYXRlZCBmb3IgdGhlIFdhbGxcbiAqIHZ4d2Z4ICAgICAgICAgICAgICAgOiBBbnkgYmxvY2sgZWxlbWVudCBnZW5lcmF0ZWQgZm9yIHRoZSBXYWxsLCB3aGljaCBpcyBzY2FsYWJsZSBpbiBzaXplXG4gKiB2eHdjc3cgICAgICAgICAgICAgIDogQW55IGJsb2NrIGVsZW1lbnQgdW5kZXIgY2VsbCB3aXRoIHNjYWxhYmxlIHdpZHRoXG4gKiB2eHdjc2ggICAgICAgICAgICAgIDogQW55IGJsb2NrIGVsZW1lbnQgdW5kZXIgY2VsbCB3aXRoIHNjYWxhYmxlIGhlaWdodFxuICogdnh3Y3NmICAgICAgICAgICAgICA6IEFueSBibG9jayBlbGVtZW50IHVuZGVyIGNlbGwgd2l0aCBzY2FsYWJsZSBmb250LXNpemVcbiAqIHZ4d2NzbCAgICAgICAgICAgICAgOiBBbnkgYmxvY2sgZWxlbWVudCB1bmRlciBjZWxsIHdpdGggc2NhbGFibGUgbGluZS1oZWlnaHRcbiAqIHZ4d2NzcCAgICAgICAgICAgICAgOiBBbnkgYmxvY2sgZWxlbWVudCB1bmRlciBjZWxsIHdpdGggc2NhbGFibGUgcGFkZGluZ3NcbiAqIHZ4d2NzbSAgICAgICAgICAgICAgOiBBbnkgYmxvY2sgZWxlbWVudCB1bmRlciBjZWxsIHdpdGggc2NhbGFibGUgbWFyZ2luc1xuICpcbiAqIHZ4d3BvcnQgICAgICAgICAgICAgOiBQb3J0LCB0aGUgdmlzaWJsZSBhcmVhIG9mIHRoZSBXYWxsXG4gKiB2eHdiYXNlICAgICAgICAgICAgIDogQmFzZSwgd2hpY2ggY29udGFpbnMgMyBwYW5lcyBmb3IgdGhlIGxlZnQvY2VudGVyL3JpZ2h0IHBhZ2VcbiAqIHZ4d3BsYXllcnZpZXdiYXNlICAgOiBQbGF5ZXIgdmlldyBiYXNlLCB3aGVyZSBtb3NhaWMgdmlkZW8gcGxheWJhY2sgaGFwcGVucyB3aXRoaW5cbiAqIHZ4d3BsYXllcnZpZXdtYXNrICAgOiBQbGF5ZXIgdmlldyBtYXNrcywgZm9yIGJsb2NraW5nIGFyZWFzIHdpdGggbm8gY29ycmVzcG9uZGluZyB2aWRlbyB0aWxlXG4gKiB2eHdwYW5lX2xlZnQgICAgICAgIDogUGFuZSBmb3IgbGVmdCBwYWdlIChjdXJyZW50IHBhZ2UgbWludXMgMSlcbiAqIHZ4d3BhbmVfY2VudGVyICAgICAgOiBQYW5lIGZvciBjdXJyZW50IHBhZ2VcbiAqIHZ4d3BhbmVfcmlnaHQgICAgICAgOiBQYW5lIGZvciByaWdodCBwYWdlIChjdXJyZW50IHBhZ2UgcGx1cyAxKVxuICpcbiAqIHZ4d3AgICAgICAgICAgICAgICAgOiBXYWxsIHBhZ2VcbiAqIHZ4d3BfJHtQUk9UT30gICAgICAgOiBXYWxsIHBhZ2UgKHByb3RvdHlwZSBzcGVjaWZpYylcbiAqXG4gKiB2eHdjICAgICAgICAgICAgICAgIDogV2FsbCBwYWdlIGNlbGxcbiAqIHZ4d2NfJHtQUk9UT30gICAgICAgOiBXYWxsIHBhZ2UgY2VsbCAocHJvdG90eXBlIHNwZWNpZmljKVxuICpcbiAqIHZ4d2NsZ2ltZyAgICAgICAgICAgOiBDZWxsIGxvZ28gaW1hZ2VcbiAqIHZ4d2NsZ2ltZ18ke1BST1RPfSAgOiBDZWxsIGxvZ28gaW1hZ2UgKHByb3RvdHlwZSBzcGVjaWZpYylcbiAqXG4gKiB2eHdjY3QgICAgICAgICAgICAgIDogQ2VsbCB0ZXh0IGNvbnRlbnQgKGUuZy4sIGFydGljbGUpXG4gKiB2eHdjY3RfJHtQUk9UT30gICAgIDogQ2VsbCB0ZXh0IGNvbnRlbnQgKHByb3RvdHlwZSBzcGVjaWZpYylcbiAqIHZ4d2NjdG8gICAgICAgICAgICAgOiBDZWxsIHRleHQgY29udGVudCB0aXRsZSBvdmVybGF5XG4gKiB2eHdjY3RvXyR7UFJPVE99ICAgIDogQ2VsbCB0ZXh0IGNvbnRlbnQgdGl0bGUgb3ZlcmxheSAocHJvdG90eXBlIHNwZWNpZmljKVxuICogdnh3Y2N0dCAgICAgICAgICAgICA6IENlbGwgdGV4dCBjb250ZW50IHRpdGxlXG4gKiB2eHdjY3R0XyR7UFJPVE99ICAgIDogQ2VsbCB0ZXh0IGNvbnRlbnQgdGl0bGUgKHByb3RvdHlwZSBzcGVjaWZpYylcbiAqIHZ4d2NjdHNpbWcgICAgICAgICAgOiBDZWxsIHRleHQgY29udGVudCBzdWIgaW1hZ2VcbiAqIHZ4d2NjdHNpbWdfJHtQUk9UT30gOiBDZWxsIHRleHQgY29udGVudCBzdWIgaW1hZ2UgKHByb3RvdHlwZSBzcGVjaWZpYylcbiAqIHZ4d2NjdHN0ICAgICAgICAgICAgOiBDZWxsIHRleHQgY29udGVudCBzdWIgdGl0bGVcbiAqIHZ4d2NjdHN0XyR7UFJPVE99ICAgOiBDZWxsIHRleHQgY29udGVudCBzdWIgdGl0bGUgKHByb3RvdHlwZSBzcGVjaWZpYylcbiAqIHZ4d2NjdGQgICAgICAgICAgICAgOiBDZWxsIHRleHQgY29udGVudCBkZXNjcmlwdGlvblxuICogdnh3Y2N0ZF8ke1BST1RPfSAgICA6IENlbGwgdGV4dCBjb250ZW50IGRlc2NyaXB0aW9uIChwcm90b3R5cGUgc3BlY2lmaWMpXG4gKiB2eHdjY3RkcCAgICAgICAgICAgIDogQ2VsbCB0ZXh0IGNvbnRlbnQgZGVzY3JpcHRpb24gcGFyYWdyYXBoXG4gKiB2eHdjY3RkcF8ke1BST1RPfSAgIDogQ2VsbCB0ZXh0IGNvbnRlbnQgZGVzY3JpcHRpb24gcGFyYWdyYXBoIChwcm90b3R5cGUgc3BlY2lmaWMpXG4gKiB2eHdjY3RnICAgICAgICAgICAgIDogQ2VsbCB0ZXh0IGNvbnRlbnQgZ3JhZGllbnQgbWFza1xuICogdnh3Y2N0Z18ke1BST1RPfSAgICA6IENlbGwgdGV4dCBjb250ZW50IGdyYWRpZW50IG1hc2sgKHByb3RvdHlwZSBzcGVjaWZpYylcbiAqXG4gKiB2eHdjbGI6ICAgICAgICAgICAgIDogQ2VsbCBsYWJlbFxuICogdnh3Y2xiXyR7UFJPVE99ICAgICA6IENlbGwgbGFiZWwgKHByb3RvdHlwZSBzcGVjaWZpYylcbiAqIHZ4d2NsYnZsICAgICAgICAgICAgOiBWb2xhdGlsZSBjZWxsIGxhYmVsICh3aGljaCBjYW4gaGlkZS91bmhpZGUpXG4gKiB2eHdjbGJpbWcgICAgICAgICAgIDogQ2VsbCBsYWJlbCBpbWFnZVxuICogdnh3Y2xiaW1nXyR7UFJPVE99ICA6IENlbGwgbGFiZWwgaW1hZ2UgKHByb3RvdHlwZSBzcGVjaWZpYylcbiAqIHZ4d2NsYnR4dCAgICAgICAgICAgOiBDZWxsIGxhYmVsIG1haW4gdGV4dFxuICogdnh3Y2xidHh0XyR7UFJPVE99ICA6IENlbGwgbGFiZWwgbWFpbiB0ZXh0IChwcm90b3R5cGUgc3BlY2lmaWMpXG4gKiB2eHdjbGJzdWIgICAgICAgICAgIDogQ2VsbCBsYWJlbCBzdWIgdGV4dFxuICogdnh3Y2xic3ViXyR7UFJPVE99ICA6IENlbGwgbGFiZWwgc3ViIHRleHQgKHByb3RvdHlwZSBzcGVjaWZpYylcbiAqXG4gKiB2eHdjdmltZyAgICAgICAgICAgIDogQ2VsbCB2aWRlbyBjb3ZlciBpbWFnZVxuICovXG5cbi8qKlxuICogSURzIFVzZWQgaW4gV2FsbCBFbGVtZW50cyAod2hlcmUge1NOfSBpcyBhbiB1bmlxdWUgc2VyaWFsIG51bWJlcilcbiAqXG4gKiB2eHdwbGF5ZXJ2aWV3X3tTTn0gOiBJRCBvZiB0aGUgbW9zYWljIHBsYXllciBvdXRlciB2aWV3XG4gKiB2eGg1cGxheWVydl97U059ICAgOiBJRCBvZiB0aGUgbW9zYWljIHBsYXllciBpbm5lciB2aWV3LCB1c2luZyBIVE1MNSwgZm9yIHZpZGVvIGNvbXBvbmVudFxuICogdnhoNXBsYXllcmFfe1NOfSAgIDogSUQgb2YgdGhlIG1vc2FpYyBwbGF5ZXIgaW5uZXIgdmlldywgdXNpbmcgSFRNTDUsIGZvciBhdWRpbyBjb21wb25lbnRcbiAqIHZ4ZmxwbGF5ZXJ2X3tTTn0gICA6IElEIG9mIHRoZSBtb3NhaWMgcGxheWVyIGlubmVyIHZpZXcsIHVzaW5nIGZsYXNoLCBmb3IgdmlkZW8gY29tcG9uZW50XG4gKiB2eGZscGxheWVyYV97U059ICAgOiBJRCBvZiB0aGUgbW9zYWljIHBsYXllciBpbm5lciB2aWV3LCB1c2luZyBmbGFzaCwgZm9yIGF1ZGlvIGNvbXBvbmVudFxuICovXG5cbi52eHd0b3VjaHByb21wdCB7XG5cdGJhY2tncm91bmQ6IHJnYmEoMjAwLCAyMDAsIDIwMCwgMC41KSB1cmwoXCJodHRwOi8vZDNpazJ2ZnN2eWc2ZnUuY2xvdWRmcm9udC5uZXQvaW1hZ2VzL1RvdWNoX3RvX1BsYXkucG5nXCIpIG5vLXJlcGVhdCBjZW50ZXI7XG5cdGJhY2tncm91bmQtc2l6ZTogMjUlXG59XG5cbi52eHdhbnlcbntcblx0dG91Y2gtYWN0aW9uOnBhbi15XG59XG5cbi52eHdwbGF5ZXJ2aWV3bWFza1xue1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiNGRkZGRkZcbn1cblxuLnZ4d2Ncbntcblx0Ym9yZGVyOjJweCBzb2xpZCB0cmFuc3BhcmVudFxufVxuXG4udnh3Y1t2eHdjZm9jdXNdXG57XG5cdGJvcmRlci1jb2xvcjpyZWRcbn1cblxuLnZ4d2NfdmlkR2VuZXJpYywgLnZ4d2NfaHRtbFxue1xuXHRiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50XG59XG5cbi52eHdjX2NhdGVnb3J5LCAudnh3Y19waWNHZW5lcmljLCAudnh3Y190eHRHZW5lcmljXG57XG5cdGJhY2tncm91bmQtY29sb3I6cmdiYSgyMzUsMjM1LDIzNSwxKVxufVxuXG4udnh3Y19odG1sXG57XG5cdGRpc3BsYXk6LXdlYmtpdC1mbGV4O1xuXHRkaXNwbGF5OmZsZXg7XG5cdC13ZWJraXQtZmxleC1mbG93OmNvbHVtbjtcblx0ZmxleC1mbG93OmNvbHVtblxufVxuXG4udnh3Y2xnaW1nXG57XG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHRsZWZ0OjEycHg7XG5cdHRvcDoxMnB4O1xuXHR3aWR0aDozNnB4O1xuXHRoZWlnaHQ6MzNweFxufVxuXG4udnh3Y2xiXG57XG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHR3aWR0aDoxMDAlO1xuXHRsZWZ0OjA7XG5cdGJvdHRvbTowO1xuXHRwYWRkaW5nOjBweCA0cHg7XG5cdGJhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwLjUpO1xuXHRmb250LWZhbWlseTonSGVsdmV0aWNhTmV1ZS1Db25kZW5zZWRCb2xkJyxBcmlhbCwnVGltZXMgTmV3IFJvbWFuJ1xufVxuXG4udnh3Y2xiX2NhdGVnb3J5XG57XG5cdGhlaWdodDo0MHB4O1xufVxuXG4udnh3Y2xiX3ZpZEdlbmVyaWMsIC52eHdjbGJfcGljR2VuZXJpY1xue1xuXHRoZWlnaHQ6MzJweDtcbn1cblxuLnZ4d2NsYmltZ1xue1xuXHRwYWRkaW5nOjBweCAwcHggMHB4IDBweDtcblx0ZmxvYXQ6bGVmdDtcblx0d2lkdGg6MHB4O1xuXHRoZWlnaHQ6MHB4XG59XG5cbi52eHdjbGJ0eHRcbntcblx0Y29sb3I6d2hpdGU7XG5cdG92ZXJmbG93OmhpZGRlblxufVxuXG4udnh3Y2xidHh0X2NhdGVnb3J5XG57XG5cdG1hcmdpbjo4cHggNHB4O1xuXHRsaW5lLWhlaWdodDoyNHB4O1xuXHRoZWlnaHQ6MjRweDtcblx0Zm9udC1zaXplOjE4cHhcbn1cblxuLnZ4d2NsYnR4dF92aWRHZW5lcmljLCAudnh3Y2xidHh0X3BpY0dlbmVyaWNcbntcblx0bWFyZ2luOjJweCA0cHggMCAwcHg7XG5cdGxpbmUtaGVpZ2h0OjEycHg7XG5cdGhlaWdodDoxNHB4O1xuXHRmb250LXNpemU6MTBweFxufVxuXG4udnh3Y2xic3ViXG57XG5cdGNvbG9yOnJnYmEoMTcwLDE3MCwxNzAsMSk7XG5cdG92ZXJmbG93OmhpZGRlblxufVxuXG4udnh3Y2xic3ViX3ZpZEdlbmVyaWMsIC52eHdjbGJzdWJfcGljR2VuZXJpY1xue1xuXHRtYXJnaW46MCA0cHggMCA0cHg7XG5cdGxpbmUtaGVpZ2h0OjEwcHg7XG5cdGhlaWdodDoxMHB4O1xuXHRmb250LXNpemU6OHB4XG59XG5cbi52eHdjY3RfdHh0R2VuZXJpY1xue1xuXHRwYWRkaW5nOjZweFxufVxuXG4udnh3Y2N0b190eHRHZW5lcmljXG57XG5cdGJvdHRvbTowO1xuXHRwYWRkaW5nOjRweDtcblx0YmFja2dyb3VuZDotd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsIHJnYmEoMzUsMzUsMzUsMCkgMCUsIHJnYmEoMzUsMzUsMzUsMSkgNzUlKTtcblx0YmFja2dyb3VuZDotbW96LWxpbmVhci1ncmFkaWVudCh0b3AsIHJnYmEoMzUsMzUsMzUsMCkgMCUsIHJnYmEoMzUsMzUsMzUsMSkgNzUlKTtcblx0YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG9wLCByZ2JhKDM1LDM1LDM1LDApIDAlLCByZ2JhKDM1LDM1LDM1LDEpIDc1JSlcbn1cblxuLnZ4d2NjdHRfdHh0R2VuZXJpY1xue1xuXHRjb2xvcjpibGFjaztcblx0cGFkZGluZzoycHg7XG5cdGZvbnQtZmFtaWx5OidIZWx2ZXRpY2FOZXVlLUNvbmRlbnNlZEJvbGQnLEFyaWFsLCdUaW1lcyBOZXcgUm9tYW4nO1xuXHRmb250LXNpemU6MjJweFxufVxuXG4udnh3Y2N0b190eHRHZW5lcmljID4gLnZ4d2NjdHRfdHh0R2VuZXJpY1xue1xuXHRjb2xvcjojRUVFRUVFXG59XG5cbi52eHdjY3RkX3R4dEdlbmVyaWNcbntcblx0Y29sb3I6YmxhY2s7XG5cdHBhZGRpbmc6MnB4O1xuXHRmb250LWZhbWlseTpHZW9yZ2lhLCdUaW1lcyBOZXcgUm9tYW4nLEFyaWFsO1xuXHRmb250LXNpemU6MTZweFxufVxuXG4udnh3Y2N0ZHBfdHh0R2VuZXJpY1xue1xuXHRtYXJnaW4tYm90dG9tOjZweFxufVxuXG4udnh3Y2N0Z190eHRHZW5lcmljXG57XG5cdGhlaWdodDoyMHB4O1xuXHRiYWNrZ3JvdW5kOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgcmdiYSgyMzUsMjM1LDIzNSwwKSAwJSwgcmdiYSgyMzUsMjM1LDIzNSwxKSA3NSUpO1xuXHRiYWNrZ3JvdW5kOi1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgcmdiYSgyMzUsMjM1LDIzNSwwKSAwJSwgcmdiYSgyMzUsMjM1LDIzNSwxKSA3NSUpO1xuXHRiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0b3AsIHJnYmEoMjM1LDIzNSwyMzUsMCkgMCUsIHJnYmEoMjM1LDIzNSwyMzUsMSkgNzUlKVxufVxuXG4udnh3Y2N0c2ltZ190eHRHZW5lcmljXG57XG5cdGZsb2F0OmxlZnQ7XG5cdHBhZGRpbmc6MnB4IDZweCAycHggMnB4O1xuXHR3aWR0aDoyMnB4O1xuXHRoZWlnaHQ6MjJweFxufVxuXG4udnh3Y2N0c3RfdHh0R2VuZXJpY1xue1xuXHRjb2xvcjpyZ2JhKDg1LDg1LDg1LDEpO1xuXHRwYWRkaW5nOjJweDtcblx0Zm9udC1mYW1pbHk6J0hlbHZldGljYU5ldWUtQ29uZGVuc2VkQm9sZCcsQXJpYWwsJ1RpbWVzIE5ldyBSb21hbic7XG5cdGhlaWdodDoyMnB4O1xuXHRsaW5lLWhlaWdodDoyMnB4O1xuXHRmb250LXNpemU6MTRweFxufVxuXG4udnh3Y2N0b190eHRHZW5lcmljID4gLnZ4d2NjdHN0X3R4dEdlbmVyaWNcbntcblx0Y29sb3I6I0FBQUFBQVxufVxuXG5cbi51c2VybWl4IHtcblx0b3ZlcmZsb3cteTogYXV0byAhaW1wb3J0YW50O1xuICAgIG92ZXJmbG93LXg6IGF1dG8gIWltcG9ydGFudDtcbn1cblxuLnVzZXJtaXgtbGlzdCB7XG5cdGhlaWdodDogNDAwcHg7XG5cdG92ZXJmbG93OiBhdXRvO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmVmZWZlO1xuXG59XG5cbi51c2VybWl4LWxpc3QgLnNlbGVjdGVke1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZjAwO1xuXG59Il0sIm1hcHBpbmdzIjoiO0FVQUE7Ozs7O0dBS0c7QUUrTUQsNEVBQTRFO0FBRTVFOzs7O0tBSUc7QUFFSCxBQUFBLElBQUksQ0FBQztFQUNILFdBQVcsRUFBRSxVQUFXO0VBQUUsT0FBTztFQUNqQyxvQkFBb0IsRUFBRSxJQUFLO0VBQUUsT0FBTztFQUNwQyx3QkFBd0IsRUFBRSxJQUFLO0VBQUUsT0FBTztDQUN6Qzs7QUFFRDs7S0FFRztBQUVILEFBQUEsSUFBSSxDQUFDO0VBQ0gsTUFBTSxFQUFFLENBQUU7Q0FDWDs7QUFFRDtrRkFDZ0Y7QUFFaEY7Ozs7O0tBS0c7QUFFSCxBQUFBLE9BQU87QUFDUCxBQUFBLEtBQUs7QUFDTCxBQUFBLE9BQU87QUFDUCxBQUFBLFVBQVU7QUFDVixBQUFBLE1BQU07QUFDTixBQUFBLE1BQU07QUFDTixBQUFBLE1BQU07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 */
