@charset "UTF-8";
/*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */
/**
 * 1. Change the default font family in all browsers (opinionated).
 * 2. Prevent adjustments of font size after orientation changes in IE and iOS.
 */
html {
  font-family: sans-serif;
  /* 1 */
  -ms-text-size-adjust: 100%;
  /* 2 */
  -webkit-text-size-adjust: 100%;
  /* 2 */
}

/* apply a natural box layout model to all elements, but allowing components to change */
html {
  box-sizing: border-box;
}

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

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

/* HTML5 display definitions
   ========================================================================== */
/**
 * Add the correct display in IE 9-.
 * 1. Add the correct display in Edge, IE, and Firefox.
 * 2. Add the correct display in IE.
 */
article,
aside,
details,
figcaption,
figure,
footer,
header,
main,
menu,
nav,
section,
summary {
  /* 1 */
  display: block;
}

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

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

/**
 * Add the correct vertical alignment in Chrome, Firefox, and Opera.
 */
progress {
  vertical-align: baseline;
}

/**
 * Add the correct display in IE 10-.
 * 1. Add the correct display in IE.
 */
template,
[hidden] {
  display: none;
}

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

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

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

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

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

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

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

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

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

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

sub {
  bottom: -0.25em;
}

sup {
  top: -0.5em;
}

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

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

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

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

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

/* Forms
   ========================================================================== */
/**
 * 1. Change font properties to `inherit` in all browsers (opinionated).
 * 2. Remove the margin in Firefox and Safari.
 */
button,
input,
select,
textarea {
  font: inherit;
  /* 1 */
  margin: 0;
  /* 2 */
}

/**
 * Restore the font weight unset by the previous rule.
 */
optgroup {
  font-weight: bold;
}

/**
 * Show the overflow in IE.
 * 1. Show the overflow in Edge.
 */
button,
input {
  /* 1 */
  overflow: visible;
}

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

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

/**
 * Remove the inner border and padding in Firefox.
 */
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
  border-style: none;
  padding: 0;
}

/**
 * Restore the focus styles unset by the previous rule.
 */
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
  outline: 1px dotted ButtonText;
}

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

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

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

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

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

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

/**
 * Remove the inner padding and cancel buttons in Chrome and Safari on OS X.
 */
[type="search"]::-webkit-search-cancel-button,
[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none;
}

/**
 * Correct the text style of placeholders in Chrome, Edge, and Safari.
 */
::-webkit-input-placeholder {
  color: inherit;
  opacity: 0.54;
}

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

/**
 *  remove ios styling. Only use on buttons and search inputs
 */
button, [type="search"], [type="button"] {
  -webkit-appearance: none;
  border-radius: 0;
  padding: 0;
}

input[type="number"] {
  -moz-appearance: textfield;
}

input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

.assistive-text {
  clip: rect(1px, 1px, 1px, 1px);
  position: absolute !important;
  white-space: nowrap;
  height: 1px;
  width: 1px;
  overflow: hidden;
}

.assistive-text:hover, .assistive-text:active, .assistive-text:focus {
  font-size: .875em;
  font-weight: bold;
  line-height: normal;
  z-index: 100000;
  top: 5px;
  left: 5px;
  display: block;
  clip: auto !important;
  width: auto;
  height: auto;
  padding: 15px 23px 14px;
  text-decoration: none;
  color: #21759b;
  border-radius: 3px;
  background-color: #f1f1f1;
  box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6);
}

.hide {
  display: none;
}

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

@keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

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

@keyframes fadeOut {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}

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

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

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

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

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

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

@keyframes slideOutDown {
  from {
    transform: translate3d(0, 0, 0);
  }
  to {
    visibility: hidden;
    transform: translate3d(0, 100%, 0);
  }
}

@keyframes slideOutDown {
  from {
    transform: translate3d(0, 0, 0);
  }
  to {
    visibility: hidden;
    transform: translate3d(0, 100%, 0);
  }
}

.slideOutDown {
  animation-name: slideOutDown;
}

@keyframes slideOutLeft {
  from {
    transform: translate3d(0, 0, 0);
  }
  to {
    visibility: hidden;
    transform: translate3d(-100%, 0, 0);
  }
}

.slideOutLeft {
  animation-name: slideOutLeft;
}

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

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

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

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

@-webkit-keyframes bounce {
  0% {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    visibility: visible;
  }
  50% {
    -webkit-transform: translate3d(0, 30px, 0);
    transform: translate3d(0, 30px, 0);
    visibility: visible;
  }
  100% {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    visibility: visible;
  }
}

@keyframes bounce {
  0% {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    visibility: visible;
  }
  50% {
    -webkit-transform: translate3d(0, 30px, 0);
    transform: translate3d(0, 30px, 0);
    visibility: visible;
  }
  100% {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    visibility: visible;
  }
}

@-webkit-keyframes MoonImageAnimation {
  0% {
    opacity: .15;
  }
  75% {
    opacity: 1;
  }
  85% {
    opacity: 0;
  }
  100% {
    opacity: .15;
  }
}

@keyframes MoonImageAnimation {
  0% {
    opacity: .15;
  }
  75% {
    opacity: 1;
  }
  85% {
    opacity: 0;
  }
  100% {
    opacity: .15;
  }
}

@-webkit-keyframes MoonGradientRise {
  0% {
    transform: translateY(0);
  }
  85% {
    transform: translateY(100%);
  }
  100% {
    transform: translateY(0);
  }
}

@keyframes MoonGradientRise {
  0% {
    transform: translateY(0);
  }
  85% {
    transform: translateY(100%);
  }
  100% {
    transform: translateY(0);
  }
}

@-webkit-keyframes MoonTypeReveal {
  0% {
    letter-spacing: inherit;
  }
  85% {
    letter-spacing: .15em;
  }
  100% {
    letter-spacing: .15em;
  }
}

@keyframes MoonTypeReveal {
  0% {
    letter-spacing: inherit;
  }
  85% {
    letter-spacing: .15em;
  }
  100% {
    letter-spacing: .15em;
  }
}

body {
  font-family: 'Muli', 'Trebuchet MS', sans-serif;
  line-height: 1.625;
  font-size: 1em;
  -webkit-font-smoothing: antialiased;
  -moz-font-smoothing: antialiased;
}

h1, h2, h3, h4, h5, h6, .alpha, .beta, .gamma, .delta, .epsilon, .zeta {
  margin-top: 0;
  font-weight: 700;
}

.alpha {
  color: #434343;
  font-size: 2.25em;
  line-height: 1.05;
}

.alpha:before {
  display: block;
  content: '';
  height: .1666em;
  width: 4.1677em;
  background: #f3ad00;
  margin-bottom: .35em;
}

.alpha:after {
  display: none;
}

h2, .beta {
  color: #434343;
  font-size: 2em;
  margin-bottom: .5em;
  line-height: 1.0625;
}

h2:after, .beta:after {
  margin-top: .4em;
  display: block;
  content: '';
  height: .1875em;
  width: 3.125em;
  background: #f3ad00;
}

.premiere-date {
  color: #777777;
  font-size: 2em;
  margin-bottom: .5em;
  line-height: 1.0625;
}

.overline {
  margin-bottom: 1.5em;
}

.overline h1, .overline .alpha {
  line-height: 1.05;
  margin-bottom: .2em;
}

.overline h1:before, .overline .alpha:before {
  display: none;
}

.overline:before {
  margin-top: .4em;
  margin-bottom: .75em;
  display: block;
  content: '';
  height: .375em;
  width: 9.375em;
  background: #f3ad00;
}

.js .alpha:before, .js .alpha:after, .js h2:before, .js h2:after, .js .beta:before, .js .beta:after, .js .overline:before, .js .overline:after {
  -webkit-transition: width 0.75s ease-in-out;
  -ms-transition: width 0.75s ease-in-out;
  transition: width 0.75s ease-in-out;
  width: 0;
}

.js .overline.animate:before {
  width: 9.375em;
}

.js .alpha.animate:before, .js h2.alpha.animate:before {
  width: 4.1677em;
}

.js h2.animate:after, .js .beta.animate:after {
  width: 3.125em;
}

h3, .gamma {
  line-height: 1.25;
  color: #434343;
  font-size: 1.625em;
}

h4, .delta {
  color: #999999;
  font-size: 1.5em;
  line-height: 1.07;
}

h5, .epislon {
  color: black;
  font-size: 1.375em;
  line-height: 1.08;
}

h6, .zeta {
  color: #777777;
  font-family: 'Roboto Slab', serif;
  text-transform: uppercase;
  font-size: .875em;
  letter-spacing: .0714em;
}

p {
  margin: 0 0 1.666667em;
  font-size: 1.125em;
}

p:empty {
  display: none;
}

.plugin-container ol, .plugin-container ul {
  font-size: 1.125em;
  margin: 0 0 1.666667em;
  padding-left: 1.5em;
}

@media (min-width: 40.625em) {
  .plugin-container ol, .plugin-container ul {
    padding-left: 2.5em;
  }
}

.plugin-container ol li, .plugin-container ul li {
  margin-bottom: 1em;
}

.plugin-container ol {
  padding-left: 2em;
}

@media (min-width: 40.625em) {
  .plugin-container ol {
    padding-left: 3em;
  }
}

.plugin-container ul {
  list-style: none;
}

.plugin-container ul li {
  position: relative;
  padding-left: .5em;
}

.plugin-container ul li:before {
  display: inline-block;
  position: absolute;
  top: 0;
  left: -.5em;
  line-height: 1.5;
  content: '\2022';
  color: #f3ad00;
}

.two-up:after {
  display: table;
  clear: both;
  content: '';
}

.two-up:before {
  display: table;
  clear: both;
  content: '';
}

.two-up li {
  margin-bottom: 3em;
}

@media (min-width: 40.625em) {
  .two-up li {
    width: 47.36842%;
    float: left;
  }
  .two-up li:nth-child(2n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .two-up li:nth-child(2n + 2) {
    margin-left: 52.63158%;
    margin-right: -100%;
    clear: none;
  }
}

@media (min-width: 68.75em) {
  .two-up li {
    width: 48.71795%;
    float: left;
  }
  .two-up li:nth-child(2n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .two-up li:nth-child(2n + 2) {
    margin-left: 51.28205%;
    margin-right: -100%;
    clear: none;
  }
}

@media (min-width: 81.25em) {
  .two-up li {
    width: 49.15254%;
    float: left;
  }
  .two-up li:nth-child(2n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .two-up li:nth-child(2n + 2) {
    margin-left: 50.84746%;
    margin-right: -100%;
    clear: none;
  }
}

.three-up:after {
  display: table;
  clear: both;
  content: '';
}

.three-up:before {
  display: table;
  clear: both;
  content: '';
}

.three-up li {
  margin-bottom: 3em;
}

@media (min-width: 40.625em) {
  .three-up li {
    width: 47.36842%;
    float: left;
  }
  .three-up li:nth-child(2n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .three-up li:nth-child(2n + 2) {
    margin-left: 52.63158%;
    margin-right: -100%;
    clear: none;
  }
}

@media (min-width: 68.75em) {
  .three-up li {
    width: 31.61538%;
    float: left;
  }
  .three-up li:nth-child(3n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .three-up li:nth-child(3n + 2) {
    margin-left: 34.17949%;
    margin-right: -100%;
    clear: none;
  }
  .three-up li:nth-child(3n + 3) {
    margin-left: 68.35897%;
    margin-right: -100%;
    clear: none;
  }
}

@media (min-width: 81.25em) {
  .three-up li {
    width: 32.20339%;
    float: left;
  }
  .three-up li:nth-child(3n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .three-up li:nth-child(3n + 2) {
    margin-left: 33.89831%;
    margin-right: -100%;
    clear: none;
  }
  .three-up li:nth-child(3n + 3) {
    margin-left: 67.79661%;
    margin-right: -100%;
    clear: none;
  }
}

.social-list {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  text-align: center;
}

.social-list a {
  display: inline-block;
  width: 2em;
  height: 2em;
}

.social-list a svg path {
  -webkit-transition: fill 0.3s ease-in-out;
  -ms-transition: fill 0.3s ease-in-out;
  transition: fill 0.3s ease-in-out;
}

.social-list li {
  display: inline-block;
  padding: 0 .25em;
  text-align: center;
  -webkit-box-flex: 1;
  -ms-flex-positive: 1;
  flex-grow: 1;
}

.social-list svg .background {
  fill: #777777;
}

.social-list svg .color {
  fill: white;
}

.teaser-list {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
}

.teaser-list li {
  list-style: none;
}

.teaser-list dd {
  margin: 0;
}

.teaser-item figure {
  margin: 0 0 0.75em;
  position: relative;
  overflow: hidden;
  padding-bottom: 56.25%;
}

.teaser-item figure a {
  display: block;
  width: 100%;
  height: 100%;
}

.teaser-item figure img {
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  display: block;
  width: 100%;
}

.teaser-item p {
  margin-bottom: 0;
}

.teaser-item h3 {
  margin-bottom: 0.375em;
}

.teaser-item h3 .passport-icon {
  max-width: 1em;
  max-height: 1em;
}

.teaser-item .zeta {
  margin-bottom: 0.375em;
  display: inline-block;
}

.teaser-item .icon {
  position: absolute;
  bottom: 0;
  left: 0;
  display: inline-block;
  width: 3.125em;
  height: 3.125em;
  background: rgba(23, 65, 137, 0.75);
}

.teaser-item .icon img {
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  max-width: 1.5625em;
  max-height: 1.5625em;
  width: auto;
  height: auto;
}

.collection-item figure {
  padding-bottom: 27.5%;
}

.js .teaser-item.slide-in-item {
  -webkit-animation-duration: 0.5s;
  animation-duration: 0.5s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  -webkit-animation-name: slideInUp;
  animation-name: slideInUp;
}

.js .teaser-item.hidden-item {
  display: none;
}

.plugin-block, .plugin-list-block {
  margin-bottom: 3em;
}

.plugin-block:after, .plugin-list-block:after {
  display: table;
  clear: both;
  content: '';
}

.plugin-block:before, .plugin-list-block:before {
  display: table;
  clear: both;
  content: '';
}

.plugin-block h3 {
  border-bottom: 0.0625em solid #999999;
  margin-bottom: 1.5em;
}

.plugin-container h3 {
  margin-bottom: 0.1875em;
}

.plugin-list-block ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
}

.plugin-list-block ul:after {
  display: table;
  clear: both;
  content: '';
}

.plugin-list-block ul:before {
  display: table;
  clear: both;
  content: '';
}

.plugin-list-block ul li {
  list-style: none;
}

.plugin-list-block ul dd {
  margin: 0;
}

.alpha + .plugin-block, .alpha + .plugin-list-block {
  margin-top: 3em;
}

.plugin-container figure {
  margin-bottom: 1.5em;
}

.plugin-container figure img {
  display: block;
}

.plugin-container figure.center {
  display: block;
  margin: 15px auto;
}

*[style*="float: left"], .left {
  float: none !important;
  display: block;
  margin: 0 auto 2.25em auto;
}

@media (min-width: 40.625em) {
  *[style*="float: left"], .left {
    display: inherit;
    float: left !important;
    margin-right: 1.5em;
    margin-bottom: 0.75em !important;
  }
}

*[style*="float: right"], .right {
  float: none !important;
  display: block;
  margin: 0 auto 2.25em auto;
}

@media (min-width: 40.625em) {
  *[style*="float: right"], .right {
    display: inherit;
    float: right !important;
    margin-left: 1.5em;
    margin-bottom: 0.75em !important;
  }
}

.center {
  margin-bottom: 1.5em;
  text-align: center;
}

/**
 * wallop.css
 *
 * @fileoverview Default styles for wallop – recommended
 *
 * @author Pedro Duarte
 * @author http://pedroduarte.me/wallop
 */
.carousel-container *:focus {
  outline: 0.125em solid #f3ad00;
}

.carousel-container .full-screen, .carousel-container .slides-pagination {
  display: none;
}

.carousel-container .Wallop-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  grid-gap: 3px;
  padding: 0;
}

.carousel-container .Wallop-list .Wallop-item:before {
  display: none;
}

@media (min-width: 68.75em) {
  .carousel-container .Wallop-list {
    width: 150%;
    margin-left: -25%;
  }
}

@media (min-width: 95.625em) {
  .carousel-container .Wallop-list {
    width: 200%;
    margin-left: -50%;
  }
}

.js {
  /*
    This element groups all the items, but not the buttons
    It's a recommendation but it's very likely
    you'll want to hide any overflow from the items
    Especially when doing animations such as scale
   */
  /*
    This is the item element
    By default, they are all hidden and
    positioned absolute
    I recommend always having .Wallop-item--current
    in your markup by default (probably on the first element)
   */
  /*
    This is the current item element
    All we do here, is make it visible again reset
    the position to static. Could also be relative
   */
}

.js .carousel-container {
  overflow: hidden;
  margin-bottom: 3em;
  background: black;
}

@media (min-width: 68.75em) {
  .js .carousel-container {
    padding-top: 1em;
  }
}

.js .carousel-container .slides-pagination {
  display: inherit;
}

.js .Wallop-list {
  width: inherit;
}

.js .carousel.expanded .slides-pagination, .js .carousel.expanded .full-screen {
  display: none;
}

.js .plugin-container .Wallop {
  position: relative;
  -webkit-animation-duration: 0.45s;
  animation-duration: 0.45s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
}

.js .plugin-container .Wallop.entering-fullscreen {
  -webkit-animation-name: slideInDown;
  animation-name: slideInDown;
}

.js .plugin-container .Wallop.exiting-fullscreen {
  animation-name: slideOutDown;
}

.js .plugin-container .Wallop.entering-back {
  -webkit-animation-name: fadeIn;
  animation-name: fadeIn;
}

.js .plugin-container .Wallop.viewing-full {
  position: fixed;
  height: 100%;
  width: 100%;
  left: 0;
  top: 0;
  z-index: 2147483647;
  background: black;
}

.js .plugin-container .Wallop.viewing-full button {
  z-index: 1;
}

.js .plugin-container .Wallop.viewing-full .slides-pagination {
  right: 20%;
  top: calc(75vh + 1em);
}

.js .plugin-container .Wallop.viewing-full .full-screen {
  left: 20%;
  top: calc(75vh + 1.15em);
}

.js .plugin-container .Wallop.viewing-full .Wallop-item {
  border-bottom: none;
  color: white;
  background: transparent;
  height: 100%;
  width: 100%;
}

.js .plugin-container .Wallop.viewing-full .Wallop-item.Wallop-item--current figure {
  margin: 0 auto;
  width: 60%;
}

.js .plugin-container .Wallop.viewing-full .Wallop-item.Wallop-item--current figure .media-container {
  display: inline-block;
  height: 75vh;
  width: 100%;
  padding-top: 1em;
}

.js .plugin-container .Wallop.viewing-full .Wallop-item.Wallop-item--current figure figcaption {
  margin: 3em auto 0 auto;
  padding: 0;
  max-width: 60vw;
}

.js .plugin-container .Wallop.viewing-full .Wallop-item.Wallop-item--current figure .see-more {
  left: calc(20% - .45em);
  top: calc(75vh + 7.75em);
}

.js .plugin-container .Wallop.viewing-full .Wallop-item.Wallop-item--current figure .hide-more {
  right: 20%;
}

.js .plugin-container .Wallop.viewing-full .Wallop-item.Wallop-item--current figure.long-caption.expanded figcaption {
  padding-top: 3em;
}

.js .plugin-container .Wallop-list {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
  display: inherit;
  position: relative;
  overflow: hidden;
}

.js .plugin-container .Wallop-list li {
  list-style: none;
}

.js .plugin-container .Wallop-list dd {
  margin: 0;
}

.js .plugin-container .Wallop-item {
  visibility: hidden;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  padding-left: 0;
  margin-bottom: 0;
  color: white;
}

.js .plugin-container .Wallop-item .media-container {
  display: block;
  height: 24em;
  position: relative;
}

@media (min-width: 68.75em) {
  .js .plugin-container .Wallop-item .media-container {
    height: 32.8125em;
  }
}

.js .plugin-container .Wallop-item .media-container img {
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  max-height: 100%;
  max-width: 90%;
}

@media (min-width: 68.75em) {
  .js .plugin-container .Wallop-item .media-container img {
    max-width: 100%;
  }
}

.js .plugin-container .Wallop-item h4 {
  margin-bottom: .25em;
}

.js .carousel-item-caption {
  padding: 0.5em 1.5em;
  text-align: left;
}

.js .plugin-container .Wallop-item--current {
  visibility: visible;
  position: relative;
  text-align: center;
}

.js .plugin-container .Wallop-item--current figure {
  display: inline-block;
  width: 100%;
}

.js .plugin-container .Wallop-item--current figure.long-caption .hide-more, .js .plugin-container .Wallop-item--current figure.long-caption .see-more {
  display: none;
}

@media (min-width: 68.75em) {
  .js .plugin-container .Wallop-item--current figure.long-caption figcaption {
    -webkit-transition: max-height 1s ease-in-out;
    -ms-transition: max-height 1s ease-in-out;
    transition: max-height 1s ease-in-out;
    max-height: 15em;
    overflow: hidden;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption p {
    max-height: 4.5em;
    min-height: 4.5em;
    overflow: hidden;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption .see-more {
    border: none;
    background: none;
    box-shadow: none;
    -webkit-transition: color 0.3s ease-in-out;
    -ms-transition: color 0.3s ease-in-out;
    transition: color 0.3s ease-in-out;
    display: inline-block;
    color: #bb0b0e;
    position: absolute;
    left: calc(5% - .45em);
    top: 40.25em;
    padding: 0 .45em;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption .see-more:hover, .js .plugin-container .Wallop-item--current figure.long-caption .see-more:focus, .js .plugin-container .Wallop-item--current figure.long-caption .see-more:active {
    box-shadow: none;
    border: none;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption .see-more:hover {
    color: #f3ad00;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption .hide-more {
    border: none;
    background: none;
    box-shadow: none;
    -webkit-transition: all 0.3s ease-in-out;
    -ms-transition: all 0.3s ease-in-out;
    transition: all 0.3s ease-in-out;
    display: inline-block;
    opacity: 0;
    width: 2em;
    height: 2em;
    position: absolute;
    right: 5%;
    z-index: 1;
    display: none;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption .hide-more:hover, .js .plugin-container .Wallop-item--current figure.long-caption .hide-more:focus, .js .plugin-container .Wallop-item--current figure.long-caption .hide-more:active {
    box-shadow: none;
    border: none;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption .hide-more:hover svg {
    fill: #f3ad00;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption .hide-more svg {
    -webkit-transition: fill 0.3s ease-in-out;
    -ms-transition: fill 0.3s ease-in-out;
    transition: fill 0.3s ease-in-out;
    position: absolute;
    top: 50%;
    left: 50%;
    -webkit-transform: translate(-50%, -50%);
    -ms-transform: translate(-50%, -50%);
    transform: translate(-50%, -50%);
    pointer-events: none;
    max-width: 1em;
    max-height: 1em;
    fill: white;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption.expanded {
    padding-bottom: 8.55em;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption.expanded figcaption {
    max-height: 100%;
    position: absolute;
    padding: 3em 5% 1.5em 5%;
    max-width: inherit;
    bottom: 0;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption.expanded p {
    max-height: inherit;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption.expanded .hide-more {
    display: inline-block;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption.expanded .see-more {
    display: none;
  }
}

.js .plugin-container .Wallop-item--current figure img {
  display: inline-block;
}

.js .plugin-container .Wallop-item--current h4 {
  color: white;
}

.js .plugin-container .Wallop-item--current figcaption, .js .plugin-container .Wallop-item--current .caption {
  padding: 1.5em 0 0 0;
  background: rgba(0, 0, 0, 0.75);
  text-align: left;
  color: white;
  font-style: normal;
  max-width: 90%;
  margin: 1.5em auto 0 auto;
}

.js .plugin-container .Wallop-item--current figcaption p, .js .plugin-container .Wallop-item--current .caption p {
  margin-bottom: .55em;
}

.js .plugin-container .Wallop-item--current figcaption span, .js .plugin-container .Wallop-item--current .caption span {
  height: auto;
  display: block;
  margin-top: 3em;
}

.js .Wallop-buttonPrevious, .js .Wallop-buttonNext {
  border: none;
  background: none;
  box-shadow: none;
}

.js .Wallop-buttonPrevious:hover, .js .Wallop-buttonPrevious:focus, .js .Wallop-buttonPrevious:active, .js .Wallop-buttonNext:hover, .js .Wallop-buttonNext:focus, .js .Wallop-buttonNext:active {
  box-shadow: none;
  border: none;
}

.js .Wallop-buttonPrevious svg, .js .Wallop-buttonNext svg {
  height: 1em;
  width: 1em;
}

.js .Wallop-buttonPrevious svg path, .js .Wallop-buttonNext svg path {
  -webkit-transition: fill 0.3s ease-in-out;
  -ms-transition: fill 0.3s ease-in-out;
  transition: fill 0.3s ease-in-out;
  fill: white;
  opacity: .85;
}

.js .Wallop-buttonPrevious:hover svg path, .js .Wallop-buttonNext:hover svg path {
  fill: #f3ad00;
}

.js .full-screen {
  padding: 0.75em 1.5em;
  text-align: center;
  display: inline-block;
  color: #999999;
  border: 0;
  -webkit-transition: color 0.3s ease-in-out;
  -ms-transition: color 0.3s ease-in-out;
  transition: color 0.3s ease-in-out;
  background: none;
  padding: .3em .45em .5em .45em;
  text-transform: uppercase;
  font-weight: 700;
  position: absolute;
  top: 37.5em;
  left: 5%;
  display: none;
  line-height: 0;
  z-index: 1;
}

.js .full-screen * {
  vertical-align: middle;
}

@media (min-width: 68.75em) {
  .js .full-screen {
    display: inline-block;
  }
}

.js .full-screen .full-screen-icon {
  -webkit-transition: fill 0.3s ease-in-out;
  -ms-transition: fill 0.3s ease-in-out;
  transition: fill 0.3s ease-in-out;
  fill: white;
  width: 1.25em;
  height: 1.25em;
  display: inline-block;
  margin-right: 0.5em;
  margin-bottom: -.05em;
}

.js .full-screen:hover {
  color: #f3ad00;
}

.js .full-screen:hover .full-screen-icon {
  fill: #f3ad00;
}

.js .slides-pagination {
  margin: 0;
  position: absolute;
  top: 27.75em;
  right: 5%;
  font-weight: 700;
  z-index: 1;
}

@media (min-width: 68.75em) {
  .js .slides-pagination {
    top: 37.75em;
  }
}

.js .slides-pagination .count {
  color: #999999;
  float: left;
  margin: -.05em 1em 0 0;
}

.js .slides-pagination button {
  display: inline-block;
}

.js .slides-pagination button:first-of-type {
  margin-right: .75em;
}

.js .plugin-container .video-gallery {
  max-width: 44em;
  margin: 0 auto;
}

.js .plugin-container .video-gallery .slides-pagination, .js .plugin-container .video-gallery .full-screen {
  top: .5em;
}

@media (min-width: 68.75em) {
  .js .plugin-container .video-gallery .slides-pagination, .js .plugin-container .video-gallery .full-screen {
    top: 23.75em;
  }
}

@media (min-width: 81.25em) {
  .js .plugin-container .video-gallery .slides-pagination, .js .plugin-container .video-gallery .full-screen {
    top: 25.75em;
  }
}

@media (min-width: 68.75em) {
  .js .plugin-container .video-gallery .full-screen {
    left: calc(5% - .45em);
  }
}

.js .plugin-container .video-gallery .caption {
  padding: 0;
  margin: 0 auto;
  margin-bottom: 1.5em;
}

@media (min-width: 68.75em) {
  .js .plugin-container .video-gallery .caption {
    margin-top: 3.75em;
  }
}

.js .plugin-container .video-gallery .cove-container {
  margin-top: 2.25em;
}

@media (min-width: 68.75em) {
  .js .plugin-container .video-gallery .cove-container {
    margin-top: 0;
  }
}

.js .plugin-container .video-gallery.viewing-full {
  max-width: 100%;
}

.js .plugin-container .video-gallery.viewing-full .slides-pagination {
  right: calc(50% - 23em);
  top: 28em;
}

.js .plugin-container .video-gallery.viewing-full .full-screen {
  left: calc(50% - 23em);
  top: 28em;
}

.js .plugin-container .video-gallery.viewing-full .Wallop-item--current.Wallop-item {
  height: 100vh;
}

.js .plugin-container .video-gallery.viewing-full .cove-wrapper {
  width: 40em;
  margin: 1.5em auto 0 auto;
}

.js .plugin-container .video-gallery.viewing-full .cove-container {
  margin: 0;
}

.js .plugin-container .video-gallery.viewing-full .caption {
  max-width: 100%;
}

/**
 * wallop--slide.css
 *
 * @fileoverview Slide animation for wallop
 *
 * @author Pedro Duarte
 * @author http://pedroduarte.me/wallop
 */
/* the 10ms animation-delay fixed some weird rendering issues with iPhone */
.Wallop--slide .Wallop-item--showPrevious {
  -webkit-animation: slideFromLeft 350ms 10ms linear both;
  -moz-animation: slideFromLeft 350ms 10ms linear both;
  -ms-animation: slideFromLeft 350ms 10ms linear both;
  animation: slideFromLeft 350ms 10ms linear both;
}

.Wallop--slide .Wallop-item--showNext {
  -webkit-animation: slideFromRight 350ms 10ms linear both;
  -moz-animation: slideFromRight 350ms 10ms linear both;
  -ms-animation: slideFromRight 350ms 10ms linear both;
  animation: slideFromRight 350ms 10ms linear both;
}

.Wallop--slide .Wallop-item--hidePrevious,
.Wallop--slide .Wallop-item--hideNext {
  visibility: visible;
}

.Wallop--slide .Wallop-item--hidePrevious {
  -webkit-animation: slideToLeft 350ms 10ms linear both;
  -moz-animation: slideToLeft 350ms 10ms linear both;
  -ms-animation: slideToLeft 350ms 10ms linear both;
  animation: slideToLeft 350ms 10ms linear both;
}

.Wallop--slide .Wallop-item--hideNext {
  -webkit-animation: slideToRight 350ms 10ms linear both;
  -moz-animation: slideToRight 350ms 10ms linear both;
  -ms-animation: slideToRight 350ms 10ms linear both;
  animation: slideToRight 350ms 10ms linear both;
}

@-webkit-keyframes slideFromLeft {
  0% {
    -webkit-transform: translate3d(-100%, 0, 0);
    -moz-transform: translate3d(-100%, 0, 0);
    -ms-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@-moz-keyframes slideFromLeft {
  0% {
    -webkit-transform: translate3d(-100%, 0, 0);
    -moz-transform: translate3d(-100%, 0, 0);
    -ms-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@-ms-keyframes slideFromLeft {
  0% {
    -webkit-transform: translate3d(-100%, 0, 0);
    -moz-transform: translate3d(-100%, 0, 0);
    -ms-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@keyframes slideFromLeft {
  0% {
    -webkit-transform: translate3d(-100%, 0, 0);
    -moz-transform: translate3d(-100%, 0, 0);
    -ms-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@-webkit-keyframes slideFromRight {
  0% {
    -webkit-transform: translate3d(100%, 0, 0);
    -moz-transform: translate3d(100%, 0, 0);
    -ms-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@-moz-keyframes slideFromRight {
  0% {
    -webkit-transform: translate3d(100%, 0, 0);
    -moz-transform: translate3d(100%, 0, 0);
    -ms-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@-ms-keyframes slideFromRight {
  0% {
    -webkit-transform: translate3d(100%, 0, 0);
    -moz-transform: translate3d(100%, 0, 0);
    -ms-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@keyframes slideFromRight {
  0% {
    -webkit-transform: translate3d(100%, 0, 0);
    -moz-transform: translate3d(100%, 0, 0);
    -ms-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@-webkit-keyframes slideToLeft {
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    -webkit-transform: translate3d(-100%, 0, 0);
    -moz-transform: translate3d(-100%, 0, 0);
    -ms-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@-moz-keyframes slideToLeft {
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    -webkit-transform: translate3d(-100%, 0, 0);
    -moz-transform: translate3d(-100%, 0, 0);
    -ms-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@-ms-keyframes slideToLeft {
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    -webkit-transform: translate3d(-100%, 0, 0);
    -moz-transform: translate3d(-100%, 0, 0);
    -ms-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@keyframes slideToLeft {
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    -webkit-transform: translate3d(-100%, 0, 0);
    -moz-transform: translate3d(-100%, 0, 0);
    -ms-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@-webkit-keyframes slideToRight {
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    -webkit-transform: translate3d(100%, 0, 0);
    -moz-transform: translate3d(100%, 0, 0);
    -ms-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@-moz-keyframes slideToRight {
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    -webkit-transform: translate3d(100%, 0, 0);
    -moz-transform: translate3d(100%, 0, 0);
    -ms-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@-ms-keyframes slideToRight {
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    -webkit-transform: translate3d(100%, 0, 0);
    -moz-transform: translate3d(100%, 0, 0);
    -ms-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@keyframes slideToRight {
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    -webkit-transform: translate3d(100%, 0, 0);
    -moz-transform: translate3d(100%, 0, 0);
    -ms-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

.accordion-toggle {
  display: none;
}

.js .accordion-toggle {
  border: none;
  background: none;
  display: block;
  width: 100%;
  text-align: left;
  text-transform: uppercase;
  color: #bb0b0e;
  font-size: 1.25em;
  font-weight: 700;
  position: relative;
  margin-bottom: 1.5em;
  padding-bottom: 0.5em;
  border-bottom: 0.125em solid #999999;
}

.js .accordion-toggle * {
  vertical-align: middle;
}

.js .accordion-toggle:hover {
  border-bottom: 0.125em solid #999999;
}

.js .accordion-toggle svg {
  display: inline-block;
  margin-top: -.15em;
  height: .75em;
  width: .75em;
  fill: #bb0b0e;
}

.js .accordion-toggle .vertical {
  -webkit-transition: transform 0.25s ease-in-out;
  -ms-transition: transform 0.25s ease-in-out;
  transition: transform 0.25s ease-in-out;
  -ms-transform-origin: center;
  transform-origin: center;
}

.js .accordion-toggle.open .vertical {
  -ms-transform: scaleY(0);
  transform: scaleY(0);
}

.js .accordion-content {
  display: none;
}

.js .accordion-content.open {
  display: block;
}

.filters {
  background: #d0dbed;
  padding: 1.5em;
  margin-bottom: 1.5em;
  position: relative;
  /* CAUTION: IE hackery ahead */
}

.filters:after {
  display: table;
  clear: both;
  content: '';
}

.filters:before {
  display: table;
  clear: both;
  content: '';
}

.filters fieldset {
  padding: 0;
  margin: 0;
  margin-bottom: 1.5em;
  border: none;
}

.filters fieldset input[type='radio'] {
  position: absolute;
  left: -9999px;
}

.filters fieldset input[type='radio']:checked + label {
  background-color: #4872b4;
  color: white;
  border: 0.125em solid #4872b4;
}

.filters fieldset input[type='radio']:focus + label {
  border: 0.125em solid #f3ad00;
}

.filters fieldset label {
  -webkit-transition: all 0.35s ease-in-out;
  -ms-transition: all 0.35s ease-in-out;
  transition: all 0.35s ease-in-out;
  background: white;
  padding: .2em 1.5em;
  font-weight: 700;
  color: #4872b4;
  display: inline-block;
  border: .125em solid white;
}

.filters fieldset label:first-of-type {
  border-radius: 1.25em 0 0 1.25em;
  padding-right: 1.15em;
}

.filters fieldset label:last-of-type {
  border-radius: 0 1.25em 1.25em 0;
  padding-left: 1.15em;
}

@media (min-width: 81.25em) {
  .filters fieldset label {
    width: 12.8125em;
    text-align: center;
  }
}

@media (min-width: 68.75em) {
  .filters fieldset {
    display: inline-block;
    margin-bottom: 0;
    margin-right: 0.75em;
  }
}

@media only screen and (max-width: 23.75em) {
  .filters fieldset {
    font-size: 3.85vw;
  }
}

.filters .label {
  display: inline-block;
  margin-bottom: 0.75em;
  font-weight: 700;
  color: #434343;
}

@media (min-width: 68.75em) {
  .filters .label {
    margin-bottom: 0;
    margin-right: 0.375em;
  }
}

@media (min-width: 81.25em) {
  .filters .label {
    margin-right: 0.75em;
  }
}

.filters .styled-select {
  background: white;
  position: relative;
  display: inline-block;
  width: 100%;
  margin-bottom: 0.75em;
  border: .125em solid white;
}

.filters .styled-select.focused {
  border: 0.125em solid #f3ad00;
}

.filters .styled-select.focused:after {
  border-color: #f3ad00 #f3ad00 #f3ad00 #4872b4;
}

.filters .styled-select:after {
  position: absolute;
  top: -.125em;
  right: -.125em;
  content: '';
  background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgNDAgNDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDQwIDQwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHN0eWxlIHR5cGU9InRleHQvY3NzIj4uc3Qwe2ZpbGw6IzQ4NzJCNDt9LnN0MXtmaWxsOiNGRkZGRkY7fTwvc3R5bGU+PHJlY3QgY2xhc3M9InN0MCIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIi8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTEyLjMsMTdsNy43LDcuN2w3LjctNy43bC0xLjctMS44bC01LjksNmwtNS45LTZMMTIuMywxN3oiLz48L3N2Zz4=);
  background-repeat: no-repeat;
  background-position: center;
  background-color: #4872b4;
  height: calc(100% + .25em);
  width: 2.49em;
  pointer-events: none;
  border: 0.125em solid #4872b4;
  border-left: none;
}

.filters .styled-select:before {
  position: absolute;
  top: 50%;
  -ms-transform: translate(0, -50%);
  -webkit-transform: translate(0, -50%);
  transform: translate(0, -50%);
  right: 0;
  content: '';
  display: inline-block;
  background-color: white;
  height: 100%;
  width: 5.25em \9;
}

@media (min-width: 68.75em) {
  .filters .styled-select {
    width: inherit;
    margin: 0;
    margin-right: 0.75em;
  }
}

@media (min-width: 81.25em) {
  .filters .styled-select {
    margin-right: 1.5em;
  }
}

.filters select {
  padding: .2em .75em .19em .75em;
  display: inline-block;
  width: 100%;
  font-weight: 700;
  color: #4872b4;
  border: none;
  box-shadow: none;
  border-radius: 0;
  background: transparent;
  background: none;
  padding-right: 4em;
  background-image: none;
  -webkit-appearance: none;
}

.filters select::-ms-expand {
  display: none;
  /* remove default arrow on ie10 and ie11 */
}

.filters .sorting {
  display: inline-block;
  width: 100%;
}

.filters .sorting .styled-select {
  margin-right: 0;
}

@media (min-width: 68.75em) {
  .filters .sorting {
    width: inherit;
    float: right;
  }
}

.filters .submit {
  clear: both;
  margin-top: 1.5em;
}

.filters .submit input[type='submit'] {
  padding: .25em .5em;
}

@media (min-width: 68.75em) {
  .filters form * {
    vertical-align: middle;
  }
}

@media (min-width: 81.25em) {
  .filters {
    font-size: 1.0625em;
  }
}

@media (min-width: 95.625em) {
  .filters {
    font-size: 1.125em;
  }
}

.filter-target.loading {
  -webkit-animation-duration: 0.35s;
  animation-duration: 0.35s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  -webkit-animation-name: fadeIn;
  animation-name: fadeIn;
  position: relative;
  opacity: 0;
}

.filter-target.loading:before {
  content: 'Loading...';
  display: inline-block;
  position: absolute;
  width: 100%;
  height: 100%;
  text-align: center;
  top: 0;
  left: 0;
  background-color: white;
  color: #434343;
  font-weight: 700;
  text-align: center;
  font-size: 1.25em;
  padding: 1.5em;
  z-index: 9;
  opacity: 1;
}

.filter-target.loaded ul {
  -webkit-animation-duration: 0.5s;
  animation-duration: 0.5s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  -webkit-animation-name: slideInUp;
  animation-name: slideInUp;
}

.js .filters select:focus {
  outline: none;
}

.js .filters .submit {
  display: none;
}

.related-films {
  margin: 3em 0;
}

.related-films img {
  width: 100%;
}

.related-films ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
}

.related-films ul:after {
  display: table;
  clear: both;
  content: '';
}

.related-films ul:before {
  display: table;
  clear: both;
  content: '';
}

.related-films ul li {
  list-style: none;
}

.related-films ul dd {
  margin: 0;
}

.related-films ul li {
  width: 44.44444%;
  float: left;
  margin-bottom: 11.11111%;
}

.related-films ul li:nth-child(2n + 1) {
  margin-left: 0;
  margin-right: -100%;
  clear: both;
  margin-left: 0;
}

.related-films ul li:nth-child(2n + 2) {
  margin-left: 55.55556%;
  margin-right: -100%;
  clear: none;
}

@media (min-width: 40.625em) {
  .related-films ul li {
    width: 29.73684%;
    float: left;
    margin-bottom: 3em;
  }
  .related-films ul li:nth-child(3n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .related-films ul li:nth-child(3n + 2) {
    margin-left: 35%;
    margin-right: -100%;
    clear: none;
  }
  .related-films ul li:nth-child(3n + 3) {
    margin-left: 70%;
    margin-right: -100%;
    clear: none;
  }
}

@media (min-width: 68.75em) {
  .related-films ul li {
    width: 31.61538%;
    float: left;
    margin-bottom: 2.5641%;
  }
  .related-films ul li:nth-child(3n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .related-films ul li:nth-child(3n + 2) {
    margin-left: 34.17949%;
    margin-right: -100%;
    clear: none;
  }
  .related-films ul li:nth-child(3n + 3) {
    margin-left: 68.35897%;
    margin-right: -100%;
    clear: none;
  }
}

@media (min-width: 81.25em) {
  .related-films ul li {
    width: 18.64407%;
    float: left;
  }
  .related-films ul li:nth-child(5n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .related-films ul li:nth-child(5n + 2) {
    margin-left: 20.33898%;
    margin-right: -100%;
    clear: none;
  }
  .related-films ul li:nth-child(5n + 3) {
    margin-left: 40.67797%;
    margin-right: -100%;
    clear: none;
  }
  .related-films ul li:nth-child(5n + 4) {
    margin-left: 61.01695%;
    margin-right: -100%;
    clear: none;
  }
  .related-films ul li:nth-child(5n + 5) {
    margin-left: 81.35593%;
    margin-right: -100%;
    clear: none;
  }
}

.email-signup-form input, .email-signup-form button {
  font-family: 'Roboto Slab', serif;
  padding: 0.75em 1.5em;
}

.email-signup-form .email-field {
  display: block;
  margin-bottom: 0.75em;
  width: 100%;
  border: 1px solid #777777;
}

.email-signup-form .email-field::placeholder {
  text-transform: uppercase;
}

.email-signup-form .zip-code-field {
  display: block;
  margin-bottom: 0.75em;
  width: 100%;
  border: 1px solid #777777;
  text-transform: uppercase;
}

.email-signup-form .note {
  display: block;
  width: 100%;
  text-align: left;
  margin-bottom: 0.75em;
  font-size: .85em;
  margin-top: 0.75em;
}

.email-signup-form button[type='submit'] {
  border: none;
  background: none;
  box-shadow: none;
  padding: 0.75em 1.5em;
  text-align: center;
  display: inline-block;
  color: white;
  background-color: #243757;
  border: 0;
  padding-right: 3em;
  position: relative;
  -webkit-transition: background 0.3s ease-in-out;
  -ms-transition: background 0.3s ease-in-out;
  transition: background 0.3s ease-in-out;
  text-transform: uppercase;
  width: 9em;
  z-index: 2;
}

.email-signup-form button[type='submit']:hover, .email-signup-form button[type='submit']:focus, .email-signup-form button[type='submit']:active {
  box-shadow: none;
  border: none;
}

.email-signup-form button[type='submit'] * {
  vertical-align: middle;
}

.email-signup-form button[type='submit'] svg {
  position: absolute;
  top: 50%;
  -ms-transform: translate(0, -50%);
  -webkit-transform: translate(0, -50%);
  transform: translate(0, -50%);
  fill: white;
  right: 1em;
  display: inline-block;
  width: 1em;
  height: 1em;
}

.email-signup-form button[type='submit']:hover {
  background: #1d2c45;
}

.email-signup-form button[type='submit']:before {
  content: '';
  display: inline-block;
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
  z-index: -1;
  box-shadow: 0px 0px 0 #243757,1px 1px 0 #243757,2px 2px 0 #243757,3px 3px 0 #243757,4px 4px 0 #243757,5px 5px 0 #243757,6px 6px 0 #243757,7px 7px 0 #243757,8px 8px 0 #243757,9px 9px 0 #243757,10px 10px 0 #243757,11px 11px 0 #243757,12px 12px 0 #243757,13px 13px 0 #243757,14px 14px 0 #243757,15px 15px 0 #243757,16px 16px 0 #243757,17px 17px 0 #243757,18px 18px 0 #243757,19px 19px 0 #243757,20px 20px 0 #243757,21px 21px 0 #243757,22px 22px 0 #243757,23px 23px 0 #243757,24px 24px 0 #243757,25px 25px 0 #243757,26px 26px 0 #243757,27px 27px 0 #243757,28px 28px 0 #243757,29px 29px 0 #243757,30px 30px 0 #243757,31px 31px 0 #243757,32px 32px 0 #243757,33px 33px 0 #243757,34px 34px 0 #243757,35px 35px 0 #243757,36px 36px 0 #243757,37px 37px 0 #243757,38px 38px 0 #243757,39px 39px 0 #243757,40px 40px 0 #243757,41px 41px 0 #243757,42px 42px 0 #243757,43px 43px 0 #243757,44px 44px 0 #243757,45px 45px 0 #243757,46px 46px 0 #243757,47px 47px 0 #243757,48px 48px 0 #243757,49px 49px 0 #243757,50px 50px 0 #243757,51px 51px 0 #243757,52px 52px 0 #243757,53px 53px 0 #243757,54px 54px 0 #243757,55px 55px 0 #243757,56px 56px 0 #243757,57px 57px 0 #243757,58px 58px 0 #243757,59px 59px 0 #243757,60px 60px 0 #243757,61px 61px 0 #243757,62px 62px 0 #243757,63px 63px 0 #243757,64px 64px 0 #243757,65px 65px 0 #243757,66px 66px 0 #243757,67px 67px 0 #243757,68px 68px 0 #243757,69px 69px 0 #243757,70px 70px 0 #243757,71px 71px 0 #243757,72px 72px 0 #243757,73px 73px 0 #243757,74px 74px 0 #243757,75px 75px 0 #243757,76px 76px 0 #243757,77px 77px 0 #243757,78px 78px 0 #243757,79px 79px 0 #243757,80px 80px 0 #243757,81px 81px 0 #243757,82px 82px 0 #243757,83px 83px 0 #243757,84px 84px 0 #243757,85px 85px 0 #243757,86px 86px 0 #243757,87px 87px 0 #243757,88px 88px 0 #243757,89px 89px 0 #243757,90px 90px 0 #243757,91px 91px 0 #243757,92px 92px 0 #243757,93px 93px 0 #243757,94px 94px 0 #243757,95px 95px 0 #243757,96px 96px 0 #243757,97px 97px 0 #243757,98px 98px 0 #243757,99px 99px 0 #243757,100px 100px 0 #243757,101px 101px 0 #243757,102px 102px 0 #243757,103px 103px 0 #243757,104px 104px 0 #243757,105px 105px 0 #243757,106px 106px 0 #243757,107px 107px 0 #243757,108px 108px 0 #243757,109px 109px 0 #243757,110px 110px 0 #243757,111px 111px 0 #243757,112px 112px 0 #243757,113px 113px 0 #243757,114px 114px 0 #243757,115px 115px 0 #243757,116px 116px 0 #243757,117px 117px 0 #243757,118px 118px 0 #243757,119px 119px 0 #243757,120px 120px 0 #243757,121px 121px 0 #243757,122px 122px 0 #243757,123px 123px 0 #243757,124px 124px 0 #243757,125px 125px 0 #243757,126px 126px 0 #243757,127px 127px 0 #243757,128px 128px 0 #243757,129px 129px 0 #243757,130px 130px 0 #243757,131px 131px 0 #243757,132px 132px 0 #243757,133px 133px 0 #243757,134px 134px 0 #243757,135px 135px 0 #243757,136px 136px 0 #243757,137px 137px 0 #243757,138px 138px 0 #243757,139px 139px 0 #243757,140px 140px 0 #243757,141px 141px 0 #243757,142px 142px 0 #243757,143px 143px 0 #243757,144px 144px 0 #243757,145px 145px 0 #243757,146px 146px 0 #243757,147px 147px 0 #243757,148px 148px 0 #243757,149px 149px 0 #243757,150px 150px 0 #243757,151px 151px 0 #243757,152px 152px 0 #243757,153px 153px 0 #243757,154px 154px 0 #243757,155px 155px 0 #243757,156px 156px 0 #243757,157px 157px 0 #243757,158px 158px 0 #243757,159px 159px 0 #243757,160px 160px 0 #243757,161px 161px 0 #243757,162px 162px 0 #243757,163px 163px 0 #243757,164px 164px 0 #243757,165px 165px 0 #243757,166px 166px 0 #243757,167px 167px 0 #243757,168px 168px 0 #243757,169px 169px 0 #243757,170px 170px 0 #243757,171px 171px 0 #243757,172px 172px 0 #243757,173px 173px 0 #243757,174px 174px 0 #243757,175px 175px 0 #243757,176px 176px 0 #243757,177px 177px 0 #243757,178px 178px 0 #243757,179px 179px 0 #243757,180px 180px 0 #243757,181px 181px 0 #243757,182px 182px 0 #243757,183px 183px 0 #243757,184px 184px 0 #243757,185px 185px 0 #243757,186px 186px 0 #243757,187px 187px 0 #243757,188px 188px 0 #243757,189px 189px 0 #243757,190px 190px 0 #243757,191px 191px 0 #243757,192px 192px 0 #243757,193px 193px 0 #243757,194px 194px 0 #243757,195px 195px 0 #243757,196px 196px 0 #243757,197px 197px 0 #243757,198px 198px 0 #243757,200px 200px 0 rgba(0, 0, 0, 0);
  opacity: .35;
}

.homepage-hero-item {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}

.homepage-hero-item:empty {
  display: none;
}

.homepage-hero-item img {
  display: block;
  width: 100%;
}

.homepage-hero-item img.blackAndWhite {
  -webkit-filter: grayscale(1);
  filter: grayscale(1);
}

.homepage-hero-item .title {
  padding: 0.75em 1.5em;
  background: #ac0b0e;
  color: white;
  float: none !important;
  margin-bottom: 0 !important;
}

.homepage-hero-item .title .zeta {
  color: white;
  display: block;
  margin-bottom: 1.5em;
}

.homepage-hero-item .title.right {
  margin-left: 0 !important;
}

.homepage-hero-item .title.left {
  margin-right: 0 !important;
}

.homepage-hero-item .title .alpha {
  text-transform: uppercase;
  font-family: 'Josefin Sans', sans-serif;
  color: white;
  font-size: 2em;
  margin-bottom: 0;
  line-height: 1.2;
}

.homepage-hero-item .title .alpha:before {
  display: none;
}

.homepage-hero-item .watch {
  text-decoration: none;
  background: transparent;
  padding: 0.75em 1.5em;
  text-align: center;
  display: inline-block;
  color: white;
  border-color: white;
  border-width: 0.0625em;
  border-style: solid;
  -webkit-transition: background 0.3s ease-in-out;
  -ms-transition: background 0.3s ease-in-out;
  transition: background 0.3s ease-in-out;
  padding-right: 3em;
  position: relative;
}

.homepage-hero-item .watch:hover {
  text-decoration: none;
}

.homepage-hero-item .watch:active {
  text-decoration: none;
}

.homepage-hero-item .watch:visited {
  text-decoration: none;
}

.homepage-hero-item .watch:focus {
  text-decoration: none;
}

.homepage-hero-item .watch * {
  vertical-align: middle;
}

.homepage-hero-item .watch svg {
  position: absolute;
  top: 50%;
  -ms-transform: translate(0, -50%);
  -webkit-transform: translate(0, -50%);
  transform: translate(0, -50%);
  fill: white;
  right: 1em;
  display: inline-block;
  width: 1em;
  height: 1em;
}

.homepage-hero-item .watch.zeta {
  display: inline-block;
  font-size: 1em;
}

.homepage-hero-item .watch:hover {
  background: rgba(255, 255, 255, 0.5);
}

@media (min-width: 68.75em) {
  .homepage-hero-item {
    position: relative;
  }
  .homepage-hero-item .title {
    width: 48.71795%;
    float: left;
    margin-right: 2.5641%;
    position: absolute;
    left: 0;
    bottom: 15%;
    padding: 1.5em 3em;
    background: none;
  }
  .homepage-hero-item .title.left {
    left: 0;
    margin-right: 0;
  }
  .homepage-hero-item .title.right {
    right: 0;
    margin-right: 0;
    left: inherit;
  }
  .homepage-hero-item .title .alpha {
    font-size: 3em;
  }
  .homepage-hero-item .title * {
    position: relative;
    z-index: 3;
  }
  .homepage-hero-item .title:after {
    content: '';
    position: absolute;
    height: 100%;
    width: 100%;
    top: 0;
    left: 0;
    z-index: 1;
  }
  @supports (mix-blend-mode: multiply) {
    .homepage-hero-item .title:after {
      background: rgba(255, 255, 255, 0.2);
    }
  }
  .homepage-hero-item .title:before {
    background: rgba(0, 0, 0, 0.6);
    content: '';
    position: absolute;
    height: 100%;
    width: 100%;
    top: 0;
    left: 0;
    z-index: 2;
  }
  @supports (mix-blend-mode: multiply) {
    .homepage-hero-item .title:before {
      background: #d90002;
      mix-blend-mode: multiply;
    }
  }
}

@media (min-width: 81.25em) {
  .homepage-hero-item .title {
    width: 40.67797%;
    float: left;
    margin-right: 1.69492%;
  }
}

.pagination {
  margin: 3em 0;
  text-align: center;
}

.pagination .load-more {
  display: none;
}

@media (min-width: 81.25em) {
  .pagination {
    margin: 4.5em 0;
  }
  .pagination .title {
    width: 40.67797%;
    float: left;
    margin-right: 1.69492%;
  }
}

.js .pagination .load-more {
  display: inline-block;
  padding: 0.75em 1.5em;
  text-align: center;
  display: inline-block;
  color: white;
  background-color: #bb0b0e;
  border: 0;
  -webkit-transition: background 0.35s ease-in-out;
  -ms-transition: background 0.35s ease-in-out;
  transition: background 0.35s ease-in-out;
}

.js .pagination .load-more * {
  vertical-align: middle;
}

.js .pagination .load-more:hover {
  background: #8c0007;
}

.js .pagination .page-numbers {
  display: none;
}

.no-results {
  font-weight: 700;
  text-align: center;
  font-weight: 1.25em;
  padding: 1.5em;
  color: #434343;
}

.no-results.error {
  color: #bb0b0e;
}

.no-results.error b {
  display: block;
}

.appended-item {
  -webkit-animation-duration: 0.5s;
  animation-duration: 0.5s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  -webkit-animation-name: slideInUp;
  animation-name: slideInUp;
}

.film-listings ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
}

.film-listings ul li {
  list-style: none;
}

.film-listings ul dd {
  margin: 0;
}

.film-listings ul li {
  margin-bottom: 3em;
}

.film-listings ul li:after {
  display: table;
  clear: both;
  content: '';
}

.film-listings ul li:before {
  display: table;
  clear: both;
  content: '';
}

@media (min-width: 81.25em) {
  .film-listings ul li {
    margin-bottom: 1.5em;
  }
}

@media (min-width: 40.625em) {
  .film-listings .image {
    width: 34.21053%;
    float: left;
    margin-right: 5.26316%;
  }
}

@media (min-width: 68.75em) {
  .film-listings .image {
    width: 48.71795%;
    float: left;
    margin-right: 2.5641%;
  }
}

@media (min-width: 81.25em) {
  .film-listings .image {
    width: 49.15254%;
    float: left;
    margin-right: 1.69492%;
  }
}

.film-listings .description h3 {
  margin-bottom: 0;
}

.film-listings .description .zeta {
  display: block;
  margin-top: 0.375em;
  margin-bottom: 0.75em;
}

.film-listings .description p {
  margin-bottom: 0.75em;
}

.film-listings .description .parts {
  color: #777777;
  font-weight: 700;
}

.film-listings .description .parts a:not(:last-of-type):after {
  content: '|';
  color: #999999;
  font-weight: 400;
  display: inline-block;
  margin-left: .4375em;
  margin-right: .3125em;
  line-height: 1;
}

@media (min-width: 40.625em) {
  .film-listings .description {
    width: 60.52632%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 68.75em) {
  .film-listings .description {
    width: 48.71795%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 81.25em) {
  .film-listings .description {
    width: 49.15254%;
    float: right;
    margin-right: 0;
  }
  .film-listings .description p {
    margin-bottom: 1.5em;
  }
}

.film-detail-hero-item {
  margin: 0;
  margin-top: 3em;
}

.film-detail-hero-item img {
  display: block;
  width: 100%;
}

.film-detail-hero-item .title {
  padding: 0.75em 1.5em 1em 1.5em;
  background: #ac0b0e;
  color: white;
  float: none !important;
  margin-bottom: 0 !important;
}

.film-detail-hero-item .title.right {
  margin-left: 0 !important;
}

.film-detail-hero-item .title.left {
  margin-right: 0 !important;
}

.film-detail-hero-item .title .alpha {
  text-transform: uppercase;
  font-family: 'Josefin Sans', sans-serif;
  color: white;
  font-size: 2em;
  margin-bottom: 0;
  line-height: 1.2;
  display: block;
  padding-top: .25em;
}

.film-detail-hero-item .title .alpha:before {
  display: none;
}

.film-detail-hero-item .title .zeta {
  display: inline-block;
  color: white;
  margin-bottom: .5em;
}

.film-detail-hero-item .title .underline {
  display: inline-block;
  font-size: 4vw;
  font-weight: 700;
}

@media (min-width: 40.625em) {
  .film-detail-hero-item .title .underline {
    font-size: 1.5em;
  }
}

@media (min-width: 81.25em) {
  .film-detail-hero-item .title .zeta {
    margin-bottom: 1.5em;
  }
  .film-detail-hero-item .title .underline {
    margin-top: .5em;
  }
}

.film-detail-hero-item .overlay {
  font-size: 3vw;
}

@media (min-width: 40.625em) {
  .film-detail-hero-item .overlay {
    font-size: inherit;
  }
}

.film-detail-hero-item .watch-link {
  text-decoration: none;
  display: block;
  position: relative;
  font-size: 3vw;
}

.film-detail-hero-item .watch-link:hover {
  text-decoration: none;
}

.film-detail-hero-item .watch-link:active {
  text-decoration: none;
}

.film-detail-hero-item .watch-link:visited {
  text-decoration: none;
}

.film-detail-hero-item .watch-link:focus {
  text-decoration: none;
}

.film-detail-hero-item .watch-link .alpha {
  -webkit-transition: color 0.35s ease-in-out;
  -ms-transition: color 0.35s ease-in-out;
  transition: color 0.35s ease-in-out;
}

.film-detail-hero-item .watch-link .alpha:after {
  display: table;
  clear: both;
  content: '';
}

.film-detail-hero-item .watch-link .alpha:before {
  display: table;
  clear: both;
  content: '';
}

.film-detail-hero-item .watch-link .alpha:before {
  display: none;
}

.film-detail-hero-item .watch-link .alpha .title-copy {
  float: left;
  width: calc(100% - 2em);
  padding-top: .125em;
}

.film-detail-hero-item .watch-link .alpha .title-copy:after {
  -webkit-transition: all 0.3s ease-in-out;
  -ms-transition: all 0.3s ease-in-out;
  transition: all 0.3s ease-in-out;
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  background: white;
  height: 1px;
  width: 100%;
  visibility: hidden;
  -ms-transform: scaleX(0);
  transform: scaleX(0);
}

.film-detail-hero-item .watch-link .alpha .play-icon {
  max-height: 1.25em;
  max-width: 1.25em;
  display: inline-block;
  float: left;
  margin-right: .5em;
}

.film-detail-hero-item .watch-link .alpha .play-icon path {
  -webkit-transition: fill 0.35s ease-in-out;
  -ms-transition: fill 0.35s ease-in-out;
  transition: fill 0.35s ease-in-out;
  fill: white;
}

.film-detail-hero-item .watch-link:hover .title-copy {
  position: relative;
}

.film-detail-hero-item .watch-link:hover .title-copy:after {
  visibility: visible;
  -ms-transform: scaleX(1);
  transform: scaleX(1);
}

@media (min-width: 40.625em) {
  .film-detail-hero-item .watch-link {
    font-size: inherit;
  }
}

@media (min-width: 68.75em) {
  .film-detail-hero-item {
    position: relative;
  }
  .film-detail-hero-item .title {
    position: absolute;
    bottom: 15%;
    padding: 1.5em 1.875em;
    background: none;
  }
  .film-detail-hero-item .title.left {
    width: 55.12821%;
    float: left;
    margin-right: 2.5641%;
    left: 0;
    padding-right: .25em;
  }
  .film-detail-hero-item .title.right {
    width: 55.12821%;
    float: right;
    margin-right: 0;
    right: 0;
    padding-right: .25em;
  }
  .film-detail-hero-item .title .alpha {
    font-size: 3em;
  }
  .film-detail-hero-item .title * {
    position: relative;
    z-index: 3;
  }
  .film-detail-hero-item .title:after {
    content: '';
    position: absolute;
    height: 100%;
    width: 100%;
    top: 0;
    left: 0;
    z-index: 1;
  }
  @supports (mix-blend-mode: multiply) {
    .film-detail-hero-item .title:after {
      background: rgba(255, 255, 255, 0.2);
    }
  }
  .film-detail-hero-item .title:before {
    background: rgba(0, 0, 0, 0.6);
    content: '';
    position: absolute;
    height: 100%;
    width: 100%;
    top: 0;
    left: 0;
    z-index: 2;
  }
  @supports (mix-blend-mode: multiply) {
    .film-detail-hero-item .title:before {
      background: #d90002;
      mix-blend-mode: multiply;
    }
  }
}

@media (min-width: 81.25em) {
  .film-detail-hero-item .title.left {
    width: 47.0339%;
    float: left;
    margin-right: 1.69492%;
    left: 0;
  }
  .film-detail-hero-item .title.right {
    width: 47.0339%;
    float: right;
    margin-right: 0;
    right: 0;
  }
}

@media (min-width: 95.625em) {
  .film-detail-hero-item .title.left {
    width: 40.67797%;
    float: left;
    margin-right: 1.69492%;
  }
  .film-detail-hero-item .title.right {
    width: 40.67797%;
    float: right;
    margin-right: 0;
  }
}

.film-detail-hero-item .watch-link + .zeta {
  margin-top: 1.5em;
}

.film-detail-hero-item .title-copy + .zeta {
  margin-top: 1.5em;
}

.film-detail-hero-item .zeta + .watch-link .alpha {
  padding-top: 0;
}

.film-sub-nav {
  background: #174189;
  color: white;
  -webkit-transition: background 0.3s ease-in-out;
  -ms-transition: background 0.3s ease-in-out;
  transition: background 0.3s ease-in-out;
  margin-bottom: 1.5em;
}

.film-sub-nav:after {
  display: table;
  clear: both;
  content: '';
}

.film-sub-nav:before {
  display: table;
  clear: both;
  content: '';
}

.film-sub-nav a {
  text-decoration: none;
  display: inline-block;
  color: white;
  text-transform: uppercase;
  font-size: 1.125em;
}

.film-sub-nav a:hover {
  text-decoration: none;
}

.film-sub-nav a:active {
  text-decoration: none;
}

.film-sub-nav a:visited {
  text-decoration: none;
}

.film-sub-nav a:focus {
  text-decoration: none;
}

.film-sub-nav a:hover {
  color: white;
  text-decoration: none;
}

.film-sub-nav ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
}

.film-sub-nav ul li {
  list-style: none;
}

.film-sub-nav ul dd {
  margin: 0;
}

@media (min-width: 68.75em) {
  .film-sub-nav {
    margin-bottom: 3em;
  }
}

.film-parts, .tab-mobile-toggle {
  display: none;
}

.film-parts {
  position: relative;
}

@media (min-width: 81.25em) {
  .film-parts {
    width: 27.9661%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 95.625em) {
  .film-parts {
    width: 23.72881%;
    float: right;
    margin-right: 0;
  }
}

.info-tabs .tab-link {
  -webkit-transition: background 0.5s ease-in-out;
  -ms-transition: background 0.5s ease-in-out;
  transition: background 0.5s ease-in-out;
  padding: .5625em 1em;
  width: 100%;
}

.info-tabs .tab-link:hover {
  background: #103066;
}

.info-tabs .tab-link.active {
  background: #103066;
  cursor: default;
}

@media (min-width: 81.25em) {
  .info-tabs .tab-list {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
  }
  .info-tabs .tab-list li {
    display: inline-block;
  }
  .info-tabs .tab-list li a {
    padding: 1.3em 1.5em;
  }
}

@media (min-width: 81.25em) {
  .info-tabs {
    width: 70.33898%;
    float: left;
    margin-right: 1.69492%;
  }
}

@media (min-width: 95.625em) {
  .info-tabs {
    width: 74.57627%;
    float: left;
    margin-right: 1.69492%;
  }
}

.tab-panel .tab-panel-title {
  margin-bottom: .25em;
}

.tab-panel .part-content {
  margin-top: 3em;
}

.tab-panel .bio figure {
  text-align: center;
  margin: 0 auto;
  margin-bottom: 1.5em;
}

.tab-panel .bio figure span {
  height: 75vw;
  width: 75vw;
  display: inline-block;
  position: relative;
  overflow: hidden;
  border-radius: 50%;
}

.tab-panel .bio figure img {
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  object-fit: cover;
  min-height: 100%;
  min-width: 100%;
}

@media (min-width: 40.625em) {
  .tab-panel .bio figure span {
    width: 10em;
    height: 10em;
  }
}

@media (min-width: 68.75em) {
  .tab-panel .bio {
    display: grid;
    grid-template-columns: 2.5fr 4fr;
  }
  .tab-panel .bio figure, .tab-panel .bio .bio-content {
    display: inline-block;
  }
  .tab-panel .bio figure {
    width: 30%;
    vertical-align: top;
  }
  .tab-panel .bio figure span {
    width: 12.5em;
    height: 12.5em;
  }
  .tab-panel .bio .bio-content {
    width: 65%;
  }
  @supports (display: grid) {
    .tab-panel .bio figure, .tab-panel .bio .bio-content {
      width: auto;
      vertical-align: inherit;
    }
    .tab-panel .bio figure {
      align-content: center;
    }
  }
}

@media (min-width: 81.25em) {
  .tab-panel .bio figure span {
    width: 15em;
    height: 15em;
  }
}

@media (min-width: 95.625em) {
  .tab-panel .bio figure span {
    width: 20em;
    height: 20em;
  }
}

.tab-panel .pdf-links strong {
  display: inline-block;
  margin-right: .5em;
}

.tab-panel .pdf-links .part-download {
  display: inline-block;
}

.tab-panel .pdf-links .part-download:not(:last-of-type):after {
  content: '|';
  color: #999999;
  font-weight: 400;
  display: inline-block;
  margin-left: .4375em;
  margin-right: .3125em;
  line-height: 1;
  vertical-align: text-top;
}

.tab-panel .single-download {
  display: inline-block;
}

@media (min-width: 40.625em) {
  .tab-panel {
    width: 73.68421%;
    float: left;
    margin-right: 5.26316%;
    float: none;
  }
}

@media (min-width: 68.75em) {
  .tab-panel {
    width: 74.35897%;
    float: left;
    margin-right: 2.5641%;
    float: none;
  }
}

@media (min-width: 81.25em) {
  .tab-panel {
    max-width: 65.25em;
  }
}

@media (min-width: 81.25em) {
  .related-feature-list .filters .label {
    margin-left: -4.1875em;
  }
}

.related-feature-list .filters form {
  text-align: center;
}

.related-feature-list .filters form fieldset label {
  width: 100%;
}

.related-feature-list .filters form fieldset label:first-of-type {
  border-radius: 0;
}

.related-feature-list .filters form fieldset label:last-of-type {
  border-radius: 0;
}

@media only screen and (min-width: 45.3125em) {
  .related-feature-list .filters form fieldset label {
    width: 7.5em;
  }
  .related-feature-list .filters form fieldset label:first-of-type {
    border-radius: 1.25em 0 0 1.25em;
    padding-right: 1.15em;
  }
  .related-feature-list .filters form fieldset label:last-of-type {
    border-radius: 0 1.25em 1.25em 0;
    padding-left: 1.15em;
  }
}

@media (min-width: 68.75em) {
  .related-feature-list .filters form fieldset label {
    width: 10em;
  }
}

@media only screen and (max-width: 23.75em) {
  .related-feature-list .filters form fieldset label {
    font-size: 4.85vw;
  }
}

.js .film-parts {
  display: block;
}

.js .part-selection {
  font-size: 1.125em;
  text-transform: uppercase;
  display: block;
  margin: .25em .3em;
}

.js .part-selection:after {
  display: table;
  clear: both;
  content: '';
}

.js .part-selection:before {
  display: table;
  clear: both;
  content: '';
}

.js .part-selection .instruction {
  display: none;
}

.js .part-selection button {
  height: 3.8175em;
  width: 100%;
  position: relative;
  z-index: 2;
  background: white;
  text-align: left;
  border: 0.0625em solid #999999;
  border-bottom: none;
  padding: .25em 1em;
  text-transform: uppercase;
  color: #434343;
  position: relative;
}

.js .part-selection button .part {
  width: calc(100% - 1em);
  font-weight: 700;
}

.js .part-selection button .part span {
  display: block;
  font-size: .777em;
  color: #4872b4;
}

.js .part-selection button svg {
  position: absolute;
  top: 50%;
  -ms-transform: translate(0, -50%);
  -webkit-transform: translate(0, -50%);
  transform: translate(0, -50%);
  max-height: 1em;
  max-width: 1em;
  right: 1em;
  fill: #999999;
  transform-origin: 50% 22.5%;
}

.js .part-selection button.close-state svg {
  transform: rotate(180deg);
}

.js .film-parts-large {
  -webkit-transition: all 0.35s ease-in-out;
  -ms-transition: all 0.35s ease-in-out;
  transition: all 0.35s ease-in-out;
  padding: .25em .35em;
  width: 100%;
  position: absolute;
  right: 0;
  top: 4.05em;
  position: absolute;
  z-index: 1;
  overflow: hidden;
  visibility: hidden;
  max-height: 0;
}

.js .film-parts-large.open {
  max-height: 20em;
  visibility: visible;
}

.js .film-parts-large a {
  -webkit-transition: background 0.5s ease-in-out;
  -ms-transition: background 0.5s ease-in-out;
  transition: background 0.5s ease-in-out;
  background: white;
  padding: .25em 1em;
  width: 100%;
  color: #434343;
  border: 0.0625em solid #999999;
}

.js .film-parts-large a span {
  display: block;
  font-size: .777em;
  color: #4872b4;
}

.js .film-parts-large a:hover {
  background: #e6e6e6;
}

.js .film-parts-large a:hover span {
  color: #4872b4;
}

.js .film-parts-large a.active {
  background: #e6e6e6;
  cursor: default;
}

.js .film-parts-large a.active span {
  color: #4872b4;
}

.js .film-parts-large li:not(:last-of-type) a {
  border-bottom: none;
}

@media (min-width: 68.75em) {
  .js .film-parts-large {
    top: 4.35em;
    padding: .25em .35em;
  }
}

.js .tab-mobile-toggle {
  background: transparent;
  padding: 0.75em 1.5em;
  text-align: center;
  display: inline-block;
  color: white;
  border-color: white;
  border-width: 0.0625em;
  border-style: solid;
  text-align: left;
  display: inline-block;
  position: relative;
  height: 3.8175em;
  width: calc(100% - .65em);
  margin: .3em;
  font-size: 1.125em;
  text-transform: uppercase;
}

.js .tab-mobile-toggle * {
  vertical-align: middle;
}

.js .tab-mobile-toggle.mutiple-episodes {
  margin: 0 .3em .3em .3em;
}

.js .tab-mobile-toggle span {
  display: inline-block;
  margin-right: 1.5em;
  padding-bottom: .15em;
}

.js .tab-mobile-toggle:hover, .js .tab-mobile-toggle:focus, .js .tab-mobile-toggle:active {
  border: .0625em solid .0625em;
}

.js .tab-mobile-toggle svg {
  position: absolute;
  top: 50%;
  -ms-transform: translate(0, -50%);
  -webkit-transform: translate(0, -50%);
  transform: translate(0, -50%);
  max-height: 1em;
  max-width: 1em;
  right: 1em;
  fill: white;
  transform-origin: 50% 22.5%;
}

.js .tab-mobile-toggle.close-state svg {
  transform: rotate(180deg);
}

@media (min-width: 81.25em) {
  .js .tab-mobile-toggle {
    display: none;
  }
}

.js .info-tabs .tab-list.menu {
  visibility: hidden;
  overflow: hidden;
  max-height: 0;
  width: 100%;
  -webkit-transition: all 0.35s ease-in-out;
  -ms-transition: all 0.35s ease-in-out;
  transition: all 0.35s ease-in-out;
}

.js .info-tabs .tab-list.menu.open {
  visibility: visible;
  max-height: 20em;
}

@media (min-width: 81.25em) {
  .js .info-tabs .tab-list.menu {
    visibility: visible;
    max-height: inherit;
  }
}

.js .tab-panel {
  -webkit-animation-duration: 0.5s;
  animation-duration: 0.5s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  margin-top: 1.5em;
  display: none;
}

.js .tab-panel.default {
  display: block;
}

.js .tab-panel.open {
  display: block;
  -webkit-animation-name: fadeIn;
  animation-name: fadeIn;
}

@media (min-width: 81.25em) {
  .js .tab-panel {
    max-width: 65.25em;
  }
}

.film-shop-links {
  margin: 3.75em 0;
  clear: both;
}

.film-shop-links img {
  max-width: 6.25em;
}

.film-shop-links * {
  vertical-align: middle;
}

.film-shop-links a {
  display: inline-block;
}

.film-shop-links ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
}

.film-shop-links ul li {
  list-style: none;
}

.film-shop-links ul dd {
  margin: 0;
}

.film-shop-links ul li {
  display: inline-block;
}

.film-shop-links ul li:not(:first-of-type) {
  margin-left: 1em;
}

.film-funders {
  margin-bottom: 3.75em;
  text-align: center;
}

.film-funders * {
  vertical-align: middle;
}

.film-funders a {
  display: inline-block;
}

.film-funders img {
  max-width: 10em;
}

.film-funders ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
}

.film-funders ul li {
  list-style: none;
}

.film-funders ul dd {
  margin: 0;
}

.film-funders ul li {
  display: inline-block;
  margin-bottom: 1em;
}

.film-funders ul li:not(:first-of-type) {
  margin-left: 1em;
}

@media (min-width: 68.75em) {
  .film-funders {
    text-align: left;
  }
}

.film-title {
  margin-bottom: 0;
}

.film-title .passport-icon {
  max-width: 1.15em;
  max-height: 1.15em;
  padding-right: .25em;
}

.premiere-date {
  color: #4872b4;
}

.tagline {
  font-weight: 700;
  display: block;
  font-size: 1.25em;
  color: #999999;
  text-transform: uppercase;
}

.feature-listings:after {
  display: table;
  clear: both;
  content: '';
}

.feature-listings:before {
  display: table;
  clear: both;
  content: '';
}

.feature-list:after {
  display: table;
  clear: both;
  content: '';
}

.feature-list:before {
  display: table;
  clear: both;
  content: '';
}

.feature-list li {
  margin-bottom: 3em;
}

@media (min-width: 68.75em) {
  .feature-list li {
    width: 31.53846%;
    float: left;
    margin-right: 2.5641%;
  }
  .feature-list li:nth-child(3n) {
    float: right;
    margin-right: 0;
  }
  .feature-list li:nth-child(3n+1) {
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-child(5) {
    width: 65.64103%;
    float: left;
    margin-right: 2.5641%;
    float: right;
    margin-right: 0;
  }
  .feature-list li:nth-of-type(6) {
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-of-type(7) {
    clear: none;
  }
  .feature-list li:nth-of-type(8) {
    float: right;
    margin-right: 0;
    margin-right: 2.5641%;
    clear: none;
  }
  .feature-list li:nth-of-type(9) {
    width: 65.64103%;
    float: left;
    margin-right: 2.5641%;
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-of-type(10) {
    float: right;
    margin-right: 0;
    clear: none;
  }
  .feature-list li:nth-of-type(11) {
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-of-type(12) {
    float: left;
  }
  .feature-list li:nth-of-type(13) {
    float: right;
    margin-right: 0;
    clear: none;
  }
  .feature-list li:nth-of-type(14) {
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-of-type(15) {
    width: 65.64103%;
    float: left;
    margin-right: 2.5641%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 81.25em) {
  .feature-list li {
    width: 32.20339%;
    float: left;
    margin-right: 1.69492%;
  }
  .feature-list li:nth-child(3n) {
    float: right;
    margin-right: 0;
  }
  .feature-list li:nth-child(3n+1) {
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-child(5) {
    width: 66.10169%;
    float: left;
    margin-right: 1.69492%;
    float: right;
    margin-right: 0;
  }
  .feature-list li:nth-of-type(6) {
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-of-type(7) {
    clear: none;
  }
  .feature-list li:nth-of-type(8) {
    float: right;
    margin-right: 0;
    margin-right: 1.69492%;
    clear: none;
  }
  .feature-list li:nth-of-type(9) {
    width: 66.10169%;
    float: left;
    margin-right: 1.69492%;
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-of-type(10) {
    float: right;
    margin-right: 0;
    clear: none;
  }
  .feature-list li:nth-of-type(11) {
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-of-type(12) {
    float: left;
  }
  .feature-list li:nth-of-type(13) {
    float: right;
    margin-right: 0;
    clear: none;
  }
  .feature-list li:nth-of-type(14) {
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-of-type(15) {
    width: 66.10169%;
    float: left;
    margin-right: 1.69492%;
    float: right;
    margin-right: 0;
  }
}

.features-paginated li {
  margin-bottom: 3em;
}

@media (min-width: 68.75em) {
  .features-paginated li {
    width: 31.53846%;
    float: left;
  }
  .features-paginated li:nth-child(3n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .features-paginated li:nth-child(3n + 2) {
    margin-left: 34.10256%;
    margin-right: -100%;
    clear: none;
  }
  .features-paginated li:nth-child(3n + 3) {
    margin-left: 68.20513%;
    margin-right: -100%;
    clear: none;
  }
}

@media (min-width: 81.25em) {
  .features-paginated li {
    width: 32.20339%;
    float: left;
  }
  .features-paginated li:nth-child(3n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .features-paginated li:nth-child(3n + 2) {
    margin-left: 33.89831%;
    margin-right: -100%;
    clear: none;
  }
  .features-paginated li:nth-child(3n + 3) {
    margin-left: 67.79661%;
    margin-right: -100%;
    clear: none;
  }
}

.feature .overline:after {
  display: table;
  clear: both;
  content: '';
}

.feature .overline:before {
  display: table;
  clear: both;
  content: '';
}

.feature .overline .zeta {
  display: block;
}

.feature .overline + h4 {
  margin-top: -.65em;
}

.feature .overline .intro-content {
  max-width: 45em;
  margin: 0 auto;
}

.feature .overline .intro {
  margin: 1em 0 0 0;
  font-size: 1.25em;
}

.feature .overline .byline {
  margin-top: 1.5em;
  color: #777777;
  font-weight: 700;
  vertical-align: middle;
}

.feature .overline .byline + .social-sharing {
  margin-top: 0.75em;
}

@media (min-width: 40.625em) {
  .feature .overline .byline + .social-sharing {
    margin-top: 1.8em;
  }
}

@media (min-width: 40.625em) {
  .feature .overline .byline {
    display: inline-block;
    margin-right: 2.25em;
  }
}

.feature .overline .social-sharing {
  display: none;
  color: #777777;
  font-weight: 700;
  margin-top: 1.5em;
  vertical-align: middle;
}

.feature .overline .social-sharing span {
  display: inline-block;
  margin-top: .015em;
}

.feature .overline .social-sharing ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
  display: inline-block;
  vertical-align: middle;
  height: 1.95em;
}

.feature .overline .social-sharing ul li {
  list-style: none;
}

.feature .overline .social-sharing ul dd {
  margin: 0;
}

.feature .overline .social-sharing li {
  display: inline-block;
  padding: 0;
  margin: 0;
  position: relative;
  width: 1.95em;
  height: 1.95em;
  margin-right: .1em;
}

.feature .overline .social-sharing li:first-of-type {
  margin-left: .25em;
}

.feature .overline .social-sharing li .copy-url-container {
  background: #eaa700;
  padding: 1em;
  font-weight: 400;
  font-size: 1em;
  color: white;
}

.feature .overline .social-sharing li .copy-url-container label {
  display: inline-block;
  margin-bottom: .25em;
  font-size: .95em;
}

.feature .overline .social-sharing li .copy-url-container textarea {
  vertical-align: middle;
  max-width: 100%;
}

.feature .overline .social-sharing li button {
  border: none;
  background: none;
  box-shadow: none;
  padding: 0;
}

.feature .overline .social-sharing li button:hover, .feature .overline .social-sharing li button:focus, .feature .overline .social-sharing li button:active {
  box-shadow: none;
  border: none;
}

.feature .overline .social-sharing li a, .feature .overline .social-sharing li button {
  display: inline-block;
  width: 100%;
  height: 100%;
  padding: .1em;
}

.feature .overline .social-sharing li svg {
  overflow: visible;
}

.feature .overline .social-sharing li svg .color {
  fill: white;
}

.feature .overline .social-sharing li svg .facebook {
  fill: #4073b7;
}

.feature .overline .social-sharing li svg .twitter {
  fill: #28a9e0;
}

.feature .overline .social-sharing li svg .mailto {
  fill: #8db729;
}

.feature .overline .social-sharing li svg .copy {
  fill: #eaa700;
}

.feature .overline .social-sharing li:before {
  display: none;
}

@media (min-width: 68.75em) {
  .feature .overline .intro-content {
    max-width: inherit;
    width: 61.53846%;
    float: left;
    margin-right: 2.5641%;
  }
  .feature .overline .ad-block {
    text-align: right;
    width: 35.89744%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 81.25em) {
  .feature .overline .intro-content {
    width: 70.33898%;
    float: left;
    margin-right: 1.69492%;
  }
  .feature .overline .ad-block {
    width: 27.9661%;
    float: right;
    margin-right: 0;
  }
}

.feature .feature-content {
  max-width: 44.53125em;
  margin: 0 auto;
}

@media only screen and (min-width: 57.8125em) {
  .feature .center.large-media img {
    max-width: inherit;
    width: 57.8125em;
    margin-left: -6.640625em;
  }
}

@media (min-width: 68.75em) {
  .feature .right.medium-media {
    max-width: inherit;
    margin-right: -5em;
  }
}

@media (min-width: 68.75em) {
  .feature .left.medium-media {
    max-width: inherit;
    margin-left: -5em;
  }
}

.js .feature .overline .social-sharing {
  display: block;
}

@media (min-width: 40.625em) {
  .js .feature .overline .social-sharing {
    display: inline-block;
  }
}

.js .feature .overline .copy-url-container {
  position: absolute;
  -webkit-transition: all 0.35s ease-in-out;
  -ms-transition: all 0.35s ease-in-out;
  transition: all 0.35s ease-in-out;
  top: -6em;
  width: 15em;
  left: -10em;
  opacity: 0;
  z-index: -1;
}

.js .feature .overline .copy-url-container.open {
  opacity: 1;
  z-index: 1;
}

.js .feature .overline .copy-url-container button {
  position: absolute;
  right: 1em;
  top: .65em;
  width: 1.5em;
  height: 1.5em;
  padding: 0;
}

.js .feature .overline .copy-url-container button svg {
  width: 1.24em;
  height: 1.24em;
  fill: white;
}

@media (min-width: 68.75em) {
  .js .feature .overline .copy-url-container {
    width: 24em;
  }
  .js .feature .overline .copy-url-container textarea {
    width: calc(100% - 7em);
  }
}

@media (min-width: 68.75em) {
  .js .feature .ad-block.desktop {
    padding: 0 0 1.5em 0;
    margin-top: -1.5em;
  }
}

.search-results ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
}

.search-results ul li {
  list-style: none;
}

.search-results ul dd {
  margin: 0;
}

.search-results ul li {
  margin-bottom: 3em;
}

.search-results ul li:after {
  display: table;
  clear: both;
  content: '';
}

.search-results ul li:before {
  display: table;
  clear: both;
  content: '';
}

@media (min-width: 81.25em) {
  .search-results ul li {
    margin-bottom: 1.5em;
  }
}

@media (min-width: 40.625em) {
  .search-results .image {
    width: 34.21053%;
    float: left;
    margin-right: 5.26316%;
  }
}

@media (min-width: 68.75em) {
  .search-results .image {
    width: 23.07692%;
    float: left;
    margin-right: 2.5641%;
  }
}

@media (min-width: 81.25em) {
  .search-results .image {
    width: 19.49153%;
    float: left;
    margin-right: 1.69492%;
  }
}

.search-results .description h3 {
  margin-bottom: 0;
}

.search-results .description p {
  margin-bottom: 0.75em;
}

@media (min-width: 40.625em) {
  .search-results .description {
    width: 60.52632%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 68.75em) {
  .search-results .description {
    width: 48.71795%;
    float: left;
    margin-right: 2.5641%;
  }
}

@media (min-width: 81.25em) {
  .search-results .description {
    width: 53.38983%;
    float: left;
    margin-right: 1.69492%;
  }
  .search-results .description p {
    margin-bottom: 1.5em;
  }
}

.newsletter-dialog {
  display: none;
}

.js .newsletter-dialog {
  display: block;
}

.newsletter-dialog.general {
  background-color: rgba(0, 0, 0, 0.85);
  color: white;
  position: fixed;
  height: 100vh;
  width: 100%;
  z-index: 10002;
  top: 0;
  left: 0;
  text-align: center;
}

.newsletter-dialog.general:after {
  content: "";
  display: block;
  width: 100%;
  height: 100vh;
  background: url("../images/bg-triangle-footer.png");
  background-size: 11.75em 11.125em;
  color: #4872b4;
  position: relative;
  z-index: 50;
}

@media screen and (min-width: 68.75em) and (min-height: 37.5em) {
  .newsletter-dialog.general:after {
    margin-top: 12.5em;
  }
}

.newsletter-dialog.general.dismissed {
  -webkit-animation-duration: 0.35s;
  animation-duration: 0.35s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  animation-name: slideOutDown;
}

.newsletter-dialog.general[aria-hidden="true"] {
  display: none;
}

.newsletter-dialog.general div[role="dialog"] {
  overflow-y: scroll;
  max-height: 80vh;
}

@media screen and (min-height: 37.5em) {
  .newsletter-dialog.general div[role="dialog"] {
    max-height: inherit;
    overflow: visible;
  }
}

.newsletter-dialog.general div[role="document"] {
  max-width: 50em;
  margin: 1em auto 0 auto;
  width: 95%;
  position: relative;
}

@media screen and (min-width: 68.75em) and (min-height: 37.5em) {
  .newsletter-dialog.general div[role="document"] {
    margin-top: 0;
    top: 12.5vh;
  }
}

.newsletter-dialog.general .gamma {
  color: white;
}

@media (min-width: 68.75em) {
  .newsletter-dialog.general .gamma {
    font-size: 2.25em;
  }
}

.newsletter-dialog.general .dimsiss {
  border: none;
  background: none;
  box-shadow: none;
  position: absolute;
  right: 0;
  top: -2.5em;
  display: inline-block;
  border-radius: 100%;
}

.newsletter-dialog.general .dimsiss:hover, .newsletter-dialog.general .dimsiss:focus, .newsletter-dialog.general .dimsiss:active {
  box-shadow: none;
  border: none;
}

.newsletter-dialog.general .dimsiss svg {
  -webkit-transition: fill 0.5s ease-in-out;
  -ms-transition: fill 0.5s ease-in-out;
  transition: fill 0.5s ease-in-out;
  width: 2em;
  height: 2em;
  fill: white;
  display: block;
}

.newsletter-dialog.general .dimsiss:hover svg {
  fill: #f3ad00;
}

.newsletter-dialog.general h1 {
  margin: 1.5em 0 0.5em 0;
  text-transform: uppercase;
  line-height: 1;
}

@media (min-width: 68.75em) {
  .newsletter-dialog.general h1 {
    margin-top: 2em;
  }
}

.newsletter-dialog.general h1 .logo-type {
  max-width: 13em;
  max-height: 0.95em;
}

.newsletter-dialog.general h1 span {
  font-size: 0.75em;
}

@media (min-width: 68.75em) {
  .newsletter-dialog.general h1 span {
    font-size: 1.2em;
  }
}

.newsletter-dialog.general .email-signup-form {
  margin-top: 1.5em;
  padding-bottom: 1.5em;
}

.newsletter-dialog.general .email-signup-form button[type="submit"] {
  padding-right: 1.5em;
  background: #f3ad00;
  color: #243757;
  margin-top: 1.5em;
  display: block;
  width: 100%;
}

.newsletter-dialog.general .email-signup-form button[type="submit"]:before {
  content: none;
}

.newsletter-dialog.general .email-signup-form button[type="submit"]:hover {
  background: #da9b00;
}

@media (min-width: 68.75em) {
  .newsletter-dialog.general .email-signup-form button[type="submit"] {
    display: inline-block;
    width: inherit;
  }
  .newsletter-dialog.general .email-signup-form button[type="submit"]:before {
    content: "";
  }
}

.newsletter-dialog.general .email-signup-form .note {
  display: block;
  font-size: 1em;
  text-align: center;
}

@media (min-width: 68.75em) {
  .newsletter-dialog.general .email-signup-form .note {
    font-size: 1.25em;
  }
}

@media (min-width: 68.75em) {
  .newsletter-dialog.general .email-signup-form .email-field,
  .newsletter-dialog.general .email-signup-form .zip-code-field {
    float: left;
  }
  .newsletter-dialog.general .email-signup-form .email-field {
    width: 55%;
  }
  .newsletter-dialog.general .email-signup-form .zip-code-field {
    width: 44%;
    margin-left: 1%;
  }
}

.newsletter-dialog.vote {
  background-color: rgba(0, 0, 0, 0.85);
  color: white;
  position: fixed;
  height: 100vh;
  width: 100%;
  z-index: 10002;
  top: 0;
  left: 0;
  text-align: center;
}

.newsletter-dialog.vote.dismissed {
  -webkit-animation-duration: 0.35s;
  animation-duration: 0.35s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  animation-name: slideOutDown;
}

.newsletter-dialog.vote[aria-hidden="true"] {
  display: none;
}

.newsletter-dialog.vote div[role="dialog"] {
  overflow-y: scroll;
  max-height: 90vh;
  margin-top: 4.5vh;
}

@media screen and (min-height: 750vh) {
  .newsletter-dialog.vote div[role="dialog"] {
    max-height: inherit;
    overflow: visible;
  }
}

.newsletter-dialog.vote div[role="document"] {
  max-width: 600px;
  margin: 6vh auto 0;
  width: 95%;
  position: relative;
  border: 10px solid #fcc320;
  background-color: #3c225e;
}

@media screen and (min-width: 68.75em) and (min-height: 750px) {
  .newsletter-dialog.vote div[role="document"] {
    margin-top: 0;
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
  }
}

.newsletter-dialog.vote .gamma {
  color: #ebe3d7;
  font-weight: 400;
}

@media (max-width: 500px) {
  .newsletter-dialog.vote .gamma {
    font-size: 20px;
  }
}

@media (min-width: 68.75em) {
  .newsletter-dialog.vote .gamma {
    font-size: 30px;
  }
}

.newsletter-dialog.vote .dimsiss {
  border: none;
  background: none;
  box-shadow: none;
  position: absolute;
  display: inline-block;
  border-radius: 100%;
  right: -0.5em;
  top: -3em;
}

.newsletter-dialog.vote .dimsiss:hover, .newsletter-dialog.vote .dimsiss:focus, .newsletter-dialog.vote .dimsiss:active {
  box-shadow: none;
  border: none;
}

.newsletter-dialog.vote .dimsiss svg {
  -webkit-transition: fill 0.5s ease-in-out;
  -ms-transition: fill 0.5s ease-in-out;
  transition: fill 0.5s ease-in-out;
  width: 2em;
  height: 2em;
  fill: #fcc320;
  display: block;
}

@media (min-width: 675px) {
  .newsletter-dialog.vote .dimsiss {
    right: -2.5em;
    top: -2.5em;
  }
}

.newsletter-dialog.vote #newsletter-dialog-title {
  margin: 0 0 0.5em 0;
  text-transform: uppercase;
  line-height: 1;
  font-size: 25px;
  color: #ebe3d7;
}

.newsletter-dialog.vote #newsletter-dialog-title .logo-type {
  max-width: 8em;
  max-height: 0.92em;
}

.newsletter-dialog.vote span.under {
  display: block;
  margin: 5px auto;
  font-size: 24px;
  font-family: "Muli", sans-serif;
  color: #fcc320;
  font-weight: 500;
  text-transform: uppercase;
}

.newsletter-dialog.vote .vote-image {
  position: relative;
  max-width: 600px;
  width: 100%;
  margin: 0;
  padding: 0;
  height: auto;
}

@media (max-width: 500px) {
  .newsletter-dialog.vote .vote-image {
    background: url(../images/vote_image_header.jpg) no-repeat center center;
    background-size: cover;
    height: 150px;
  }
  .newsletter-dialog.vote .vote-image img {
    display: none;
  }
}

.newsletter-dialog.vote .title-wrapper {
  background-color: #3c225e;
  position: relative;
  display: block;
  padding: 10px;
  margin: -87px auto 0;
  height: 87px;
  width: 100%;
}

@media (min-width: 650px) {
  .newsletter-dialog.vote .title-wrapper {
    width: 70%;
  }
}

@media (max-width: 500px) {
  .newsletter-dialog.vote .title-wrapper {
    margin-top: 0;
  }
}

.newsletter-dialog.vote .title-wrapper .vote-headline {
  background: url(../images/title_the-vote.png) no-repeat center center;
  background-size: contain;
  max-width: 300px;
  width: 100%;
  height: 57px;
  display: block;
  margin: 0 auto 15px;
  text-indent: -99999px;
}

@media (max-width: 500px) {
  .newsletter-dialog.vote .title-wrapper .vote-headline {
    max-width: 80%;
  }
}

.newsletter-dialog.vote .email-signup-form {
  padding: 20px 40px;
}

.newsletter-dialog.vote .email-signup-form button[type="submit"] {
  padding-right: 1.5em;
  background: #f3ad00;
  color: #243757;
  margin-top: 1.5em;
  display: block;
  width: 100%;
  cursor: pointer;
}

.newsletter-dialog.vote .email-signup-form button[type="submit"]:hover {
  background: #da9b00;
}

@media (min-width: 68.75em) {
  .newsletter-dialog.vote .email-signup-form button[type="submit"] {
    display: inline-block;
    width: inherit;
  }
  .newsletter-dialog.vote .email-signup-form button[type="submit"]:before {
    content: "";
  }
}

.newsletter-dialog.vote .email-signup-form button[type="submit"]:before {
  box-shadow: none !important;
}

.newsletter-dialog.vote .email-signup-form .note {
  display: block;
  font-size: 20px;
  color: #ebe3d7;
  text-align: center;
}

@media (max-width: 650px) {
  .newsletter-dialog.vote .email-signup-form .note {
    font-size: 14px;
  }
}

@media (min-width: 40.625em) {
  .newsletter-dialog.vote .email-signup-form .email-field,
  .newsletter-dialog.vote .email-signup-form .zip-code-field {
    float: left;
  }
  .newsletter-dialog.vote .email-signup-form .email-field {
    width: 55%;
  }
  .newsletter-dialog.vote .email-signup-form .zip-code-field {
    width: 44%;
    margin-left: 1%;
  }
}

#sticky-header {
  width: 100%;
  -webkit-transform: translate3d(0px, 0px, 0px);
  transform: translate3d(0px, 0px, 0px);
}

.sticky #sticky-header {
  top: 0;
  position: fixed;
  -webkit-animation-duration: 0.5s;
  animation-duration: 0.5s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  -webkit-animation-name: slideInDown;
  animation-name: slideInDown;
}

.site-header ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
}

.site-header ul li {
  list-style: none;
}

.site-header ul dd {
  margin: 0;
}

.site-header .secondary {
  background: #333;
  text-align: center;
  color: white;
}

.site-header .secondary:after {
  display: table;
  clear: both;
  content: '';
}

.site-header .secondary:before {
  display: table;
  clear: both;
  content: '';
}

.site-header .secondary * {
  vertical-align: middle;
}

.site-header .secondary .title {
  display: block;
  margin-bottom: 0.75em;
}

.site-header .secondary .header-social {
  display: none;
}

.site-header .secondary .header-social .social-list {
  width: 70%;
  margin: 0 auto;
}

.site-header .secondary .header-social .social-list a {
  display: block;
}

.site-header .secondary .header-social .social-list a:hover svg .background {
  fill: black;
}

.site-header .secondary .header-social:after {
  display: table;
  clear: both;
  content: '';
}

.site-header .secondary .header-social:before {
  display: table;
  clear: both;
  content: '';
}

@media (min-width: 40.625em) {
  .site-header .secondary .header-social {
    width: 47.36842%;
    float: left;
    margin-right: 5.26316%;
    display: block;
    margin-top: .75em;
  }
}

@media (min-width: 68.75em) {
  .site-header .secondary .header-social {
    width: 40.67797%;
    float: left;
    margin-right: 1.69492%;
    margin-top: 0;
    text-align: left;
  }
  .site-header .secondary .header-social .title {
    display: inline-block;
    margin-bottom: 0;
    font-size: .8125em;
  }
  .site-header .secondary .header-social .social-list {
    width: auto;
    display: inline-block;
  }
}

.site-header .secondary .header-sponsors {
  margin-top: 0.75em;
  margin-bottom: 0.75em;
}

.site-header .secondary .header-sponsors ul {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  -ms-flex-wrap: wrap;
  flex-wrap: wrap;
  line-height: 1;
}

.site-header .secondary .header-sponsors ul:after {
  display: table;
  clear: both;
  content: '';
}

.site-header .secondary .header-sponsors ul:before {
  display: table;
  clear: both;
  content: '';
}

.site-header .secondary .header-sponsors li {
  display: inline-block;
  margin: .25em .5em;
}

.site-header .secondary .header-sponsors a {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
}

.site-header .secondary .header-sponsors .title {
  margin-bottom: .25em;
}

.site-header .secondary .header-sponsors img {
  max-height: 3.125em;
  max-width: 7.375em;
}

@media (min-width: 40.625em) {
  .site-header .secondary .header-sponsors {
    width: 47.36842%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 68.75em) {
  .site-header .secondary .header-sponsors {
    width: 57.62712%;
    float: right;
    margin-right: 0;
    margin-top: 0;
    margin-bottom: 0;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: end;
    -ms-flex-pack: end;
    justify-content: flex-end;
    -webkit-box-align: center;
    -ms-flex-align: center;
    align-items: center;
  }
  .site-header .secondary .header-sponsors .title {
    display: inline-block;
    font-size: .8125em;
    vertical-align: middle;
    margin-bottom: 0;
  }
  .site-header .secondary .header-sponsors .sponsor {
    display: inline-block;
  }
}

@media (min-width: 81.25em) {
  .site-header .secondary .header-sponsors img {
    max-height: 3.125em;
    max-width: 8.375em;
  }
}

@media (min-width: 68.75em) {
  .site-header .secondary .grid {
    margin-top: .5em;
    margin-bottom: .5em;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
    -ms-flex-align: center;
    align-items: center;
  }
}

.site-header .primary {
  background: #174189;
  position: relative;
  z-index: 10;
}

.site-header .primary .grid {
  position: relative;
}

.site-header .primary .header-logo {
  position: relative;
  margin: 0;
  line-height: 0;
  width: 72.22222%;
  float: left;
  margin-right: 11.11111%;
}

.site-header .primary .header-logo a {
  display: block;
  padding: .45em;
}

.site-header .primary .header-logo a svg {
  max-height: .5em;
}

.site-header .primary .header-logo a svg .type {
  fill: white;
}

@media (min-width: 40.625em) {
  .site-header .primary .header-logo a svg {
    max-height: .75em;
  }
}

.site-header .primary .header-logo .logo-type {
  display: inline-block;
  max-width: 100%;
}

@media (min-width: 40.625em) {
  .site-header .primary .header-logo {
    width: 73.68421%;
    float: left;
    margin-right: 5.26316%;
  }
}

@media (min-width: 68.75em) {
  .site-header .primary .header-logo {
    width: 23.07692%;
    float: left;
    margin-right: 2.5641%;
    padding-top: .2em;
  }
}

@media (min-width: 81.25em) {
  .site-header .primary .header-logo {
    padding-top: 0;
    width: 32.20339%;
    float: left;
    margin-right: 1.69492%;
  }
  .site-header .primary .header-logo a {
    padding: .55em .45em .45em .45em;
  }
  .site-header .primary .header-logo a svg {
    max-height: 1em;
  }
}

.site-header .primary .main-nav-toggle {
  border: none;
  background: none;
  box-shadow: none;
  display: none;
  position: absolute;
  top: 0;
  right: 5%;
  width: 2.75em;
  height: 2.75em;
  overflow: hidden;
  padding: .5em;
  text-align: center;
}

.site-header .primary .main-nav-toggle:hover, .site-header .primary .main-nav-toggle:focus, .site-header .primary .main-nav-toggle:active {
  box-shadow: none;
  border: none;
}

.site-header .primary .main-nav-toggle svg {
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  display: inline-block;
  width: 1.5em;
}

.site-header .primary .main-nav-toggle .one, .site-header .primary .main-nav-toggle .two, .site-header .primary .main-nav-toggle .three {
  -webkit-transition: all .35s linear;
  transition: all .35s linear;
  -webkit-transform: rotate(0deg) scale(1);
  transform: rotate(0deg) scale(1);
  -webkit-transform-origin: 0 50%;
  transform-origin: 0 50%;
  fill: white;
}

.site-header .primary .main-nav-toggle.close-state .one {
  -webkit-transform: rotateZ(-45deg) scale(0.95);
  transform: rotateZ(-45deg) scale(0.95);
  -webkit-transform-origin: 11.5em 5em;
  transform-origin: 11.5em 5em;
}

.site-header .primary .main-nav-toggle.close-state .two {
  -webkit-transform: translateY(-25em);
  transform: translateY(-25em);
}

.site-header .primary .main-nav-toggle.close-state .three {
  -webkit-transform: rotateZ(45deg) scale(0.95);
  transform: rotateZ(45deg) scale(0.95);
  -webkit-transform-origin: 11.5em 5em;
  transform-origin: 11.5em 5em;
}

@media (min-width: 40.625em) {
  .site-header .primary .main-nav-toggle {
    width: 3.3em;
    height: 3.3em;
  }
}

.site-header .primary .dropdown-menu {
  clear: both;
}

@media (min-width: 68.75em) {
  .site-header .primary .dropdown-menu {
    width: 74.35897%;
    float: right;
    margin-right: 0;
    clear: none;
  }
}

@media (min-width: 81.25em) {
  .site-header .primary .dropdown-menu {
    width: 66.10169%;
    float: right;
    margin-right: 0;
  }
}

.site-header .primary .header-main-navigation {
  font-size: 1.125em;
  font-family: 'Josefin Sans', sans-serif;
  text-transform: uppercase;
  margin-bottom: 1.5em;
}

@media (min-width: 68.75em) {
  .site-header .primary .header-main-navigation {
    width: 61.2069%;
    float: left;
    margin-right: 3.44828%;
    clear: none;
    margin-bottom: 0;
  }
}

@media (min-width: 81.25em) {
  .site-header .primary .header-main-navigation {
    width: 61.53846%;
    float: left;
    margin-right: 2.5641%;
  }
}

@media (min-width: 68.75em) {
  .site-header .primary .header-main-navigation ul {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
  }
}

.site-header .primary .header-main-navigation ul li {
  border-bottom: 1px solid #777777;
}

.site-header .primary .header-main-navigation ul li a {
  text-decoration: none;
  display: block;
  padding: 1.1em 1em .9em 1em;
  color: white;
  position: relative;
}

.site-header .primary .header-main-navigation ul li a:hover {
  text-decoration: none;
}

.site-header .primary .header-main-navigation ul li a:active {
  text-decoration: none;
}

.site-header .primary .header-main-navigation ul li a:visited {
  text-decoration: none;
}

.site-header .primary .header-main-navigation ul li a:focus {
  text-decoration: none;
}

.site-header .primary .header-main-navigation ul li a:after {
  -webkit-transition: background 0.5s ease-in-out;
  -ms-transition: background 0.5s ease-in-out;
  transition: background 0.5s ease-in-out;
  width: 100%;
  height: .3333em;
  content: '';
  display: block;
  position: absolute;
  bottom: 0;
  left: 0;
}

.site-header .primary .header-main-navigation ul li a:hover:after, .site-header .primary .header-main-navigation ul li a.active:after {
  background: #f3ad00;
}

@media (min-width: 68.75em) {
  .site-header .primary .header-main-navigation ul li {
    text-align: center;
    display: inline-block;
    border-bottom: none;
    flex-grow: 1;
  }
}

.site-header .primary .search {
  position: relative;
  font-size: 1.125em;
  margin-bottom: 1.5em;
}

.site-header .primary .search .search-input {
  display: inline-block;
  height: 2.25em;
  padding: 0 0 0 1em;
  width: 100%;
  border: 1px solid #777777;
  padding-right: 2.5em;
}

.site-header .primary .search .search-button {
  border: none;
  background: none;
  box-shadow: none;
  position: absolute;
  top: .15em;
  right: .45em;
  display: inline-block;
  height: 2em;
  width: 2em;
  padding: .15em;
  background: white;
}

.site-header .primary .search .search-button:hover, .site-header .primary .search .search-button:focus, .site-header .primary .search .search-button:active {
  box-shadow: none;
  border: none;
}

@media (min-width: 68.75em) {
  .site-header .primary .search {
    width: 22.41379%;
    float: left;
    margin-right: 3.44828%;
    margin-top: .7em;
    margin-bottom: 0;
  }
}

@media (min-width: 81.25em) {
  .site-header .primary .search {
    width: 23.07692%;
    float: left;
    margin-right: 2.5641%;
  }
}

.site-header .shop {
  margin-bottom: 1.5em;
  display: block;
  padding: .5em .5em .5em 1em;
  border-bottom: 1px solid #777777;
}

.site-header .shop svg {
  height: 2.5em;
  width: 2.5em;
  fill: white;
}

.site-header .shop svg path {
  -webkit-transition: fill 0.25s ease-in-out;
  -ms-transition: fill 0.25s ease-in-out;
  transition: fill 0.25s ease-in-out;
}

.site-header .shop:hover svg path {
  fill: #f3ad00;
}

@media (min-width: 68.75em) {
  .site-header .shop {
    width: 9.48276%;
    float: right;
    margin-right: 0;
    border: none;
    padding: 0;
    display: inline-block;
    text-align: center;
    margin-top: .75em;
    margin-bottom: 0;
  }
}

@media (min-width: 81.25em) {
  .site-header .shop {
    width: 10.25641%;
    float: right;
    margin-right: 0;
  }
}

.js .site-header .primary .main-nav-toggle {
  display: inline-block;
}

@media (min-width: 68.75em) {
  .js .site-header .primary .main-nav-toggle {
    display: none;
  }
}

.js .js-dropdown-menu {
  visibility: hidden;
  overflow: hidden;
  max-height: 0;
  -webkit-transition: all 0.35s ease-in-out;
  -ms-transition: all 0.35s ease-in-out;
  transition: all 0.35s ease-in-out;
}

@media (min-width: 68.75em) {
  .js .js-dropdown-menu {
    visibility: visible;
    max-height: inherit;
  }
}

.js .js-dropdown-menu.open {
  visibility: visible;
  max-height: 35em;
}

.js .header-main-navigation.open + .header-search.open {
  margin-top: 1.5em;
}

.cms-ready .primary.fixed {
  position: relative;
}

.site-footer ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
  margin-bottom: 1.5em;
}

.site-footer ul li {
  list-style: none;
}

.site-footer ul dd {
  margin: 0;
}

.site-footer .credit-heading {
  font-size: 1em;
  color: #4872b4;
}

.footer-links {
  padding: 0 0 0.75em 0;
  background: url("../images/bg-triangle-footer.png");
  background-size: 11.75em 11.125em;
  color: #4872b4;
}

.footer-links:before {
  display: block;
  content: '';
  background-image: url("../images/bg-american-flag.jpg");
  background-repeat: no-repeat;
  background-position: center;
  padding-bottom: 6.5%;
  background-size: cover;
  margin-bottom: 4.5em;
}

.footer-links a {
  display: inline-block;
  color: white;
  text-transform: uppercase;
}

.footer-links a:hover {
  color: white;
}

.footer-links ul li {
  margin-bottom: 0.75em;
}

@media (min-width: 81.25em) {
  .footer-links ul li {
    margin-bottom: 1.5em;
  }
}

@media screen and (max-width: 95.625em) and (orientation: portrait) {
  .footer-links:before {
    padding-bottom: 15%;
  }
}

@media (min-width: 40.625em) {
  .footer-navigation {
    width: 47.36842%;
    float: left;
    margin-right: 5.26316%;
    min-height: 15em;
  }
  .footer-navigation ul {
    -moz-column-count: 2;
    -webkit-column-count: 2;
    column-count: 2;
  }
  .footer-navigation ul:after {
    display: table;
    clear: both;
    content: '';
  }
  .footer-navigation ul:before {
    display: table;
    clear: both;
    content: '';
  }
}

@media (min-width: 68.75em) {
  .footer-navigation {
    width: 48.71795%;
    float: left;
    margin-right: 2.5641%;
  }
}

@media (min-width: 81.25em) {
  .footer-navigation {
    width: 57.62712%;
    float: left;
    margin-right: 1.69492%;
  }
  .footer-navigation ul {
    -moz-column-count: 3;
    -webkit-column-count: 3;
    column-count: 3;
  }
}

.footer-production-by {
  margin-bottom: 1.5em;
}

.footer-production-by .wgbh {
  fill: white;
  width: 6em;
  max-height: 3em;
}

.footer-production-by ul {
  margin-top: 1.5em;
}

@media (min-width: 40.625em) {
  .footer-production-by {
    width: 47.36842%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 68.75em) {
  .footer-production-by {
    width: 48.71795%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 81.25em) {
  .footer-production-by {
    width: 19.49153%;
    float: left;
    margin-right: 1.69492%;
  }
}

.footer-funding {
  color: white;
}

.footer-funding ul li {
  margin-bottom: 1.5em;
}

.footer-funding svg {
  width: 12em;
  max-height: 12em;
}

.footer-funding svg * {
  fill: white;
}

@media (min-width: 40.625em) {
  .footer-funding {
    width: 47.36842%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 68.75em) {
  .footer-funding {
    width: 48.71795%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 81.25em) {
  .footer-funding {
    width: 19.49153%;
    float: right;
    margin-right: 0;
  }
}

.footer-copyright {
  display: inline-block;
  margin-bottom: 1.5em;
}

.footer-copyright span {
  display: block;
}

@media (min-width: 40.625em) {
  .footer-copyright {
    width: 47.36842%;
    float: left;
    margin-right: 5.26316%;
    clear: both;
    padding-top: 2.75vw;
    margin-bottom: 0;
  }
}

@media (min-width: 68.75em) {
  .footer-copyright {
    width: 48.71795%;
    float: left;
    margin-right: 2.5641%;
  }
}

@media (min-width: 81.25em) {
  .footer-copyright {
    padding-top: 2.925vw;
    width: 32.20339%;
    float: left;
    margin-right: 1.69492%;
  }
}

.footer-logo-type {
  display: block;
  font-size: 4vw;
  line-height: 1.275;
}

.footer-logo-type svg {
  fill: #243757;
  max-height: 3.875em;
}

@media (min-width: 40.625em) {
  .footer-logo-type {
    width: 47.36842%;
    float: right;
    margin-right: 0;
    text-align: center;
  }
}

@media (min-width: 68.75em) {
  .footer-logo-type {
    width: 48.71795%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 81.25em) {
  .footer-logo-type {
    width: 66.10169%;
    float: right;
    margin-right: 0;
    font-size: 3.5vw;
  }
}

.connect-social {
  background-image: url("../images/bg-triangle-newsletter.png");
  background-size: 11.75em 11.125em;
  color: white;
  margin-bottom: 4.5em;
  overflow-x: hidden;
}

.connect-social h3 {
  color: white;
}

.connect-social .email-signup {
  text-align: center;
  padding: 1.5em 0;
  overflow: hidden;
}

.connect-social .email-signup h3 {
  margin-bottom: 0.769em;
}

.connect-social .email-signup .email-signup-form .note {
  -webkit-box-ordinal-group: 2;
  -ms-flex-order: 1;
  order: 1;
}

.connect-social .email-signup.vote .headline {
  padding: 0 10% 0 0;
  width: 100%;
}

.connect-social .email-signup.vote .headline .vote-headline {
  background: url(../images/title_the-vote.png) no-repeat center center;
  background-size: contain;
  max-width: 300px;
  width: 100%;
  height: 57px;
  display: block;
  margin: 0 auto;
  text-indent: -99999px;
}

@media (max-width: 500px) {
  .connect-social .email-signup.vote .headline .vote-headline {
    max-width: 80%;
    margin: 0;
  }
}

.connect-social .email-signup .headline {
  width: 100%;
  padding: 0 10%;
}

@media (min-width: 40.625em) {
  .connect-social .email-signup {
    width: 47.36842%;
    float: left;
    margin-right: 5.26316%;
    position: relative;
  }
  .connect-social .email-signup .email-signup-form {
    width: 80%;
    margin: 0 auto;
  }
}

@media (min-width: 68.75em) {
  .connect-social .email-signup {
    width: 48.71795%;
    float: left;
    margin-right: 2.5641%;
  }
}

@media (min-width: 81.25em) {
  .connect-social .email-signup {
    width: 57.62712%;
    float: left;
    margin-right: 1.69492%;
  }
  .connect-social .email-signup.vote h3 {
    text-align: center;
    margin-bottom: 15px;
  }
  .connect-social .email-signup h3 {
    text-align: left;
    margin-bottom: 15px;
  }
  .connect-social .email-signup .email-signup-form {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
    flex-wrap: wrap;
    width: 100%;
    padding-right: 10%;
  }
  .connect-social .email-signup .email-signup-form .email-field {
    float: left;
    display: inline-block;
    margin-bottom: 0;
    margin-right: 1%;
    margin-left: 0;
    width: 45%;
  }
  .connect-social .email-signup .email-signup-form .zip-code-field {
    float: left;
    display: inline-block;
    margin-bottom: 0;
    width: 30%;
  }
  .connect-social .email-signup .email-signup-form button[type="submit"] {
    width: 24%;
    display: inline-block;
  }
  .connect-social .email-signup .email-signup-form .note {
    width: 75%;
  }
}

@media (min-width: 95.625em) {
  .connect-social .email-signup .email-signup-form button[type="submit"] {
    width: 19%;
  }
}

.connect-social .footer-social-links {
  text-align: center;
  padding: 3em 0;
  background: #243757;
  width: 110%;
  margin-left: -5%;
}

.connect-social .footer-social-links .social-list {
  margin-bottom: 0;
  width: 70%;
  margin: 0 auto;
}

.connect-social .footer-social-links .social-list a {
  width: 3em;
  height: 3em;
}

.connect-social .footer-social-links .social-list a:hover svg .background {
  fill: #835d00;
}

.connect-social .footer-social-links .social-list svg {
  width: 100%;
  height: 100%;
}

.connect-social .footer-social-links .social-list svg .background {
  fill: #f3ad00;
}

.connect-social .footer-social-links .hashtag {
  display: block;
}

@media (min-width: 40.625em) {
  .connect-social .footer-social-links {
    width: 47.36842%;
    float: right;
    margin-right: 0;
    position: relative;
    padding-left: 5.625%;
    margin-left: inherit;
  }
  .connect-social .footer-social-links:before {
    content: "";
    position: absolute;
    background: white;
    height: 100%;
    top: 0;
    right: 100%;
    width: calc(5.26316% * 2);
  }
  .connect-social .footer-social-links:after {
    content: "";
    position: absolute;
    height: 100%;
    width: 11.25%;
    background: #243757;
    top: 0;
    left: 100%;
  }
  .connect-social .footer-social-links .social-list {
    width: 90%;
  }
}

@media (min-width: 68.75em) {
  .connect-social .footer-social-links {
    width: 48.71795%;
    float: right;
    margin-right: 0;
  }
  .connect-social .footer-social-links .social-list {
    display: inline-block;
    width: auto;
  }
  .connect-social .footer-social-links:before {
    width: 5.26316%;
  }
}

@media (min-width: 81.25em) {
  .connect-social .footer-social-links {
    width: 40.67797%;
    float: right;
    margin-right: 0;
    padding-left: 0;
  }
  .connect-social .footer-social-links:after {
    width: 50%;
  }
  .connect-social .footer-social-links:before {
    width: 4%;
    right: 100%;
  }
}

@media (min-width: 95.625em) {
  .connect-social .footer-social-links:after {
    width: calc((100vw - 1400px) / 2);
  }
}

@media (min-width: 40.625em) {
  .connect-social .grid {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
  }
}

.ad-block {
  max-height: 0;
  padding: 0;
  visibility: hidden;
  line-height: 0;
}

.js .ad-block {
  -webkit-transition: all 0.35s ease-in-out;
  -ms-transition: all 0.35s ease-in-out;
  transition: all 0.35s ease-in-out;
  position: relative;
  text-align: center;
}

.js .ad-block.open.ad-side-interior:before, .js .ad-block.open.ad-side-interior:after {
  background: none;
}

.js .ad-block.open {
  padding: 1.5em 0 3em;
  max-height: 25em;
  visibility: visible;
  z-index: inherit;
  line-height: inherit;
}

.js .ad-block.open .ad {
  display: inline-block;
}

.js .ad-block.open:before, .js .ad-block.open:after {
  content: '';
  position: absolute;
  height: 100%;
  width: 100%;
  top: 0;
  left: 0;
}

.js .ad-block.open:before {
  background: url("../images/bg-deco-circle.png");
  background-size: 18em 18em;
  z-index: -2;
}

.js .ad-block.open:after {
  z-index: -1;
  background: rgba(227, 227, 227, 0.5);
}

.js .ad-block.open.footer-ad {
  padding-top: 2.25em;
  padding-bottom: 2.625em;
  margin-bottom: 4.5em;
}

.js .ad-block .ad {
  margin: 0 auto;
  position: relative;
  display: inline-block;
  display: none;
}

.js .ad-block .ad:after {
  display: table;
  clear: both;
  content: '';
}

.js .ad-block .ad:before {
  display: table;
  clear: both;
  content: '';
}

.js .ad-block .ad div {
  clear: both;
}

.js .ad-block .ad span, .js .ad-block .ad a {
  font-size: .75em;
  float: left;
}

.js .ad-block .ad a {
  float: right;
  color: #174189;
}

.js .ad-block .ad button {
  border: none;
  background: none;
  box-shadow: none;
  background: #777777;
  width: 1.5em;
  height: 1.5em;
  position: absolute;
  top: 1.25em;
  right: 0;
}

.js .ad-block .ad button:hover, .js .ad-block .ad button:focus, .js .ad-block .ad button:active {
  box-shadow: none;
  border: none;
}

.js .ad-block .ad button svg {
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  width: 75%;
  height: 75%;
}

@media (min-width: 68.75em) {
  .js .ad-block .ad button {
    width: 2em;
    height: 2em;
  }
}

.shop-ad {
  background: white;
  text-align: center;
  padding-top: 4.5em;
  padding-bottom: 4.5em;
}

.shop-ad a {
  display: inline-block;
  position: relative;
}

.shop-ad a.mobile {
  background-image: url("../images/amex_shop_mobile.jpg");
  background-repeat: no-repeat;
  width: 20em;
  height: 6.25em;
}

.shop-ad a.desktop {
  background-image: url("../images/amex_shop_desktop.jpg");
  background-repeat: no-repeat;
  width: 75em;
  height: 9.375em;
}

.connect-social + .shop-ad {
  padding-top: 0;
}

@media (min-width: 68.75em) {
  .ad-interior-content {
    width: 61.53846%;
    float: left;
    margin-right: 2.5641%;
  }
}

@media (min-width: 81.25em) {
  .ad-interior-content {
    width: 66.10169%;
    float: left;
    margin-right: 1.69492%;
  }
}

@media (min-width: 68.75em) {
  .ad-side-interior {
    margin-top: 1.5em;
    width: 35.89744%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 81.25em) {
  .ad-side-interior {
    width: 32.20339%;
    float: right;
    margin-right: 0;
  }
}

.collection-detail-hero-item {
  margin-bottom: 3em;
}

.collection-detail-hero-item img {
  width: 100%;
}

:-webkit-full-screen-ancestor:not(iframe) .pbs-cleanslate, :-webkit-full-screen-ancestor:not(iframe) .site-header, :-webkit-full-screen-ancestor:not(iframe) .ad-block, :-webkit-full-screen-ancestor:not(iframe) .cms, :-webkit-full-screen-ancestor:not(iframe) .teaser-item, :-webkit-full-screen-ancestor:not(iframe) .site-footer,
:-webkit-full-screen-ancestor:not(iframe) .film-sub-nav, :-webkit-full-screen-ancestor:not(iframe) .Wallop-buttonPrevious, :-webkit-full-screen-ancestor:not(iframe) .Wallop-buttonNext, :-webkit-full-screen-ancestor:not(iframe) .accordion-toggle, :-webkit-full-screen-ancestor:not(iframe) .tab-panel, :-webkit-full-screen-ancestor:not(iframe) .full-screen {
  display: none !important;
}

body {
  overflow-x: hidden;
}

body.fixed {
  position: fixed;
  left: 0;
  top: 0;
  width: 100%;
}

iframe {
  background: #999999;
}

img {
  max-width: 100%;
}

a {
  -webkit-transition: color 0.3s ease-in-out;
  -ms-transition: color 0.3s ease-in-out;
  transition: color 0.3s ease-in-out;
  color: #bb0b0e;
  text-decoration: none;
  font-weight: 700;
}

a:hover {
  color: #8c0007;
  text-decoration: underline;
}

.call-to-action {
  -webkit-transition: all 0.5s ease-in-out;
  -ms-transition: all 0.5s ease-in-out;
  transition: all 0.5s ease-in-out;
  background: #bb0b0e;
  color: white;
  border-radius: .4375em;
  font-weight: 700;
  text-transform: uppercase;
  font-size: 1.125em;
  padding: 1em 3.5em;
  position: relative;
  top: 0;
}

.call-to-action:hover {
  color: white;
  background: #a30a0c;
  text-decoration: none;
}

.call-to-action:active {
  top: .2777777778em;
}

figure {
  margin: 0;
}

figcaption, .caption {
  font-size: .85em;
  color: #999999;
  font-style: italic;
}

figcaption p, .caption p {
  margin: 0;
}

.caption h4, .caption .delta {
  margin: .25em 0;
  font-style: normal;
}

q {
  display: block;
  color: #999999;
  font-size: 1.15em;
  margin: 1.5em 5%;
  position: relative;
}

q:before {
  content: '';
  position: absolute;
  height: 110%;
  width: .5em;
  background: #999999;
  left: -1.5em;
  position: absolute;
  top: 50%;
  -ms-transform: translate(0, -50%);
  -webkit-transform: translate(0, -50%);
  transform: translate(0, -50%);
}

@media (min-width: 68.75em) {
  q {
    margin-left: 10%;
    margin-right: 10%;
  }
}

cite {
  display: block;
  font-size: 1.25em;
  margin: 1.5em 5%;
  color: #999999;
}

@media (min-width: 68.75em) {
  cite {
    margin-left: 10%;
    margin-right: 10%;
    position: relative;
  }
  cite:before {
    content: '';
    position: absolute;
    display: inline-block;
    top: 0;
    left: -3.5em;
    background: url("../images/quote.svg") no-repeat;
    background-size: 2.5em;
    width: 2.5em;
    height: 2.5em;
  }
}

.jump-link:before {
  display: block;
  content: "";
  height: 6em;
  margin: -6em 0 0;
}

.jump-link.site-footer:before {
  height: 9em;
  margin: -9em 0 0;
}

.cove-wrapper {
  margin-bottom: 1.5em;
}

.cove-container:before {
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  z-index: 3;
  color: white;
  content: 'Video Requires Javascript';
}

.js .cove-container:before {
  content: none;
}

.cove-container {
  position: relative;
  height: 0;
  padding-bottom: 56.25%;
  background: transparent;
  -webkit-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  -webkit-animation-name: fadeIn;
  animation-name: fadeIn;
}

.cove-container iframe {
  background: transparent;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 2;
}

.grid {
  max-width: 87.5em;
  margin-left: auto;
  margin-right: auto;
  padding: 0 5%;
}

.grid:after {
  content: " ";
  display: block;
  clear: both;
}

.grid:after {
  display: table;
  clear: both;
  content: '';
}

.grid:before {
  display: table;
  clear: both;
  content: '';
}

@media (min-width: 95.625em) {
  .grid {
    padding: 0;
  }
}

.grid.full {
  max-width: 100%;
  padding: 0;
}

.plugin-item-block:after {
  display: table;
  clear: both;
  content: '';
}

.plugin-item-block:before {
  display: table;
  clear: both;
  content: '';
}

.page {
  margin-top: 3em;
  margin-bottom: 3em;
}

.page:after {
  display: table;
  clear: both;
  content: '';
}

.page:before {
  display: table;
  clear: both;
  content: '';
}

.right-arrow {
  fill: white;
  max-width: 2em;
  max-height: 2em;
}

.passport-icon {
  vertical-align: middle;
  margin-top: -.15em;
  max-width: 1.25em;
  max-height: 1.25em;
}

.related-feature-list {
  clear: both;
  margin-bottom: 3em;
  margin-top: 3em;
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5jc3MiLCJzb3VyY2VzIjpbIm1haW4uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvX2JyZWFrcG9pbnQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fc2V0dGluZ3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fY29udGV4dC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19oZWxwZXJzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX3BhcnNlcnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL19xdWVyeS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3NpbmdsZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvc2luZ2xlL19kZWZhdWx0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fZG91YmxlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQtcGFpci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvZG91YmxlL19kb3VibGUtc3RyaW5nLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL190cmlwbGUuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3RyaXBsZS9fZGVmYXVsdC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3Jlc29sdXRpb24vX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fbm8tcXVlcnkuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fcmVzcG9uZC10by5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19sZWdhY3ktc2V0dGluZ3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3MvX3N1c3kuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9fc3VzeS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L19zdS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L191dGlsaXRpZXMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fc2V0dGluZ3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fdmFsaWRhdGlvbi5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L19ncmlkLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19mbG9hdC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fc2hhcmVkLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19zdXBwb3J0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3N1cHBvcnQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcHJlZml4LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2JhY2tncm91bmQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fYm94LXNpemluZy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19yZW0uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fY2xlYXJmaXguc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19pbnNwZWN0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fb3V0cHV0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fZGlyZWN0aW9uLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fYmFja2dyb3VuZC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2NvbnRhaW5lci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX21hcmdpbnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19wYWRkaW5nLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19jb250YWluZXIuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX3NwYW4uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2VuZC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9faXNvbGF0ZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3NldHRpbmdzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fdmFsaWRhdGlvbi5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2dyaWRzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYm94LXNpemluZy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2NvbnRleHQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19iYWNrZ3JvdW5kLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fY29udGFpbmVyLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fc3Bhbi5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2d1dHRlcnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19pc29sYXRlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ2FsbGVyeS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3Jvd3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19tYXJnaW5zLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fcGFkZGluZy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JsZWVkLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYnJlYWtwb2ludC1wbHVnaW4uc2NzcyIsIl9ub3JtYWxpemUuc2NzcyIsIl9jb25maWcuc2NzcyIsIl9taXhpbnMuc2NzcyIsIl9hbmltYXRpb25zLnNjc3MiLCJfdHlwb2dyYXBoeS5zY3NzIiwiX2dyaWRIZWxwZXJzLnNjc3MiLCJfc29jaWFsLnNjc3MiLCJfdGVhc2VySXRlbS5zY3NzIiwiX3BsYWNlaG9sZGVycy5zY3NzIiwiX2Nhcm91c2VsLnNjc3MiLCJfYWNjb3JkaW9ucy5zY3NzIiwiX2ZpbHRlcnMuc2NzcyIsIl9yZWxhdGVkRmlsbXMuc2NzcyIsIl9uZXdzbGV0dGVyRm9ybS5zY3NzIiwiX2hvbWVQYWdlSGVyby5zY3NzIiwiX3BhZ2luYXRpb24uc2NzcyIsIl9maWxtTGlzdC5zY3NzIiwiX2ZpbG1EZXRhaWwuc2NzcyIsIl9mZWF0dXJlTGlzdGluZ3Muc2NzcyIsIl9mZWF0dXJlRGV0YWlsLnNjc3MiLCJfc2VhcmNoUmVzdWx0cy5zY3NzIiwiX25ld3NsZXR0ZXJNb2RhbC5zY3NzIiwiX2hlYWRlci5zY3NzIiwiX2Zvb3Rlci5zY3NzIiwiX2Nvbm5lY3Quc2NzcyIsIl9hZHMuc2NzcyIsIl9zaGFtZS5zY3NzIiwiX2dsb2JhbEdlbmVyYWwuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvL2Jhc2Ugc3R1ZmZcbkBpbXBvcnQgXCJicmVha3BvaW50XCI7XG5AaW1wb3J0IFwic3VzeVwiO1xuQGltcG9ydCBcIm5vcm1hbGl6ZVwiO1xuQGltcG9ydCBcImNvbmZpZ1wiO1xuQGltcG9ydCBcIm1peGluc1wiO1xuQGltcG9ydCBcImFuaW1hdGlvbnNcIjtcbkBpbXBvcnQgXCJ0eXBvZ3JhcGh5XCI7XG5AaW1wb3J0IFwiZ3JpZEhlbHBlcnNcIjtcblxuLy8gc21hbGwgcmV1c2FibGUgY29tcG9uZW50c1xuQGltcG9ydCBcInNvY2lhbFwiO1xuQGltcG9ydCBcInRlYXNlckl0ZW1cIjtcbkBpbXBvcnQgXCJwbGFjZWhvbGRlcnNcIjtcbkBpbXBvcnQgXCJjYXJvdXNlbFwiO1xuQGltcG9ydCBcImFjY29yZGlvbnNcIjtcbkBpbXBvcnQgXCJmaWx0ZXJzXCI7XG5AaW1wb3J0IFwicmVsYXRlZEZpbG1zXCI7XG5AaW1wb3J0IFwibmV3c2xldHRlckZvcm1cIjtcbkBpbXBvcnQgXCJob21lUGFnZUhlcm9cIjtcbkBpbXBvcnQgXCJwYWdpbmF0aW9uXCI7XG5cbi8vIHBhZ2VzXG5AaW1wb3J0IFwiZmlsbUxpc3RcIjtcbkBpbXBvcnQgXCJmaWxtRGV0YWlsXCI7XG5AaW1wb3J0IFwiZmVhdHVyZUxpc3RpbmdzXCI7XG5AaW1wb3J0IFwiZmVhdHVyZURldGFpbFwiO1xuQGltcG9ydCBcInNlYXJjaFJlc3VsdHNcIjtcblxuLy8gaGlnaCBsZXZlbCBjb21wb25lbnRzXG5AaW1wb3J0IFwibmV3c2xldHRlck1vZGFsXCI7XG5AaW1wb3J0IFwiaGVhZGVyXCI7XG5AaW1wb3J0IFwiZm9vdGVyXCI7XG5AaW1wb3J0IFwiY29ubmVjdFwiO1xuQGltcG9ydCBcImFkc1wiO1xuXG4vL3NoYW1lXG5AaW1wb3J0IFwic2hhbWVcIjtcblxuLy9nZW5lcmFsIGdsb2JhbFxuQGltcG9ydCBcImdsb2JhbEdlbmVyYWxcIjsiLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIERlZmF1bHQgVmFyaWFibGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRCcmVha3BvaW50LVNldHRpbmdzOiAoXG4gICdkZWZhdWx0IG1lZGlhJzogYWxsLFxuICAnZGVmYXVsdCBmZWF0dXJlJzogbWluLXdpZHRoLFxuICAnZGVmYXVsdCBwYWlyJzogd2lkdGgsXG5cbiAgJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJzogZmFsc2UsXG4gICd0byBlbXMnOiBmYWxzZSxcbiAgJ3RyYW5zZm9ybSByZXNvbHV0aW9ucyc6IHRydWUsXG5cbiAgJ25vIHF1ZXJpZXMnOiBmYWxzZSxcbiAgJ25vIHF1ZXJ5IGZhbGxiYWNrcyc6IGZhbHNlLFxuXG4gICdiYXNlIGZvbnQgc2l6ZSc6IDE2cHgsXG5cbiAgJ2xlZ2FjeSBzeW50YXgnOiBmYWxzZVxuKTtcblxuJGJyZWFrcG9pbnQ6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcImJyZWFrcG9pbnQvc2V0dGluZ3NcIjtcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvY29udGV4dCc7XG5AaW1wb3J0ICdicmVha3BvaW50L2hlbHBlcnMnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9wYXJzZXJzJztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvbm8tcXVlcnknO1xuXG5AaW1wb3J0ICdicmVha3BvaW50L3Jlc3BvbmQtdG8nO1xuXG5AaW1wb3J0IFwiYnJlYWtwb2ludC9sZWdhY3ktc2V0dGluZ3NcIjtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IE1peGluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuQG1peGluIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkbm8tcXVlcnk6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIGxlZ2FjeS1zZXR0aW5ncy13YXJuaW5nO1xuXG4gIC8vIFJlc2V0IGNvbnRleHRzXG4gIEBpbmNsdWRlIHByaXZhdGUtYnJlYWtwb2ludC1yZXNldC1jb250ZXh0cygpO1xuXG4gICRicmVha3BvaW50OiBicmVha3BvaW50KCRxdWVyeSwgZmFsc2UpO1xuXG4gICRxdWVyeS1zdHJpbmc6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdxdWVyeScpO1xuICAkcXVlcnktZmFsbGJhY2s6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdmYWxsYmFjaycpO1xuXG4gICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdjb250ZXh0IGhvbGRlcicpICFnbG9iYWw7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdxdWVyeSBjb3VudCcpICFnbG9iYWw7XG5cbiAgLy8gQWxsb3cgZm9yIGFuIGFzLW5lZWRlZCBvdmVycmlkZSBvciB1c2FnZSBvZiBubyBxdWVyeSBmYWxsYmFjay5cbiAgQGlmICRuby1xdWVyeSAhPSBmYWxzZSB7XG4gICAgJHF1ZXJ5LWZhbGxiYWNrOiAkbm8tcXVlcnk7XG4gIH1cblxuICBAaWYgJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlIHtcbiAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgnbm8tcXVlcnknLCAkcXVlcnktZmFsbGJhY2spO1xuICB9XG5cbiAgLy8gUHJpbnQgT3V0IFF1ZXJ5IFN0cmluZ1xuICBAaWYgbm90IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykge1xuICAgIEBtZWRpYSAjeyRxdWVyeS1zdHJpbmd9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykgIT0gZmFsc2Ugb3IgYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJpZXMnKSA9PSB0cnVlIHtcblxuICAgICR0eXBlOiB0eXBlLW9mKGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSk7XG4gICAgJHByaW50OiBmYWxzZTtcblxuICAgIEBpZiAoJHR5cGUgPT0gJ2Jvb2wnKSB7XG4gICAgICAkcHJpbnQ6IHRydWU7XG4gICAgfVxuICAgIEBlbHNlIGlmICgkdHlwZSA9PSAnc3RyaW5nJykge1xuICAgICAgQGlmICRxdWVyeS1mYWxsYmFjayA9PSBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgICAgICAkcHJpbnQ6IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICgkdHlwZSA9PSAnbGlzdCcpIHtcbiAgICAgIEBlYWNoICR3cmFwcGVyIGluIGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSB7XG4gICAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgPT0gJHdyYXBwZXIge1xuICAgICAgICAgICRwcmludDogdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFdyaXRlIEZhbGxiYWNrXG4gICAgQGlmICgkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2UpIGFuZCAoJHByaW50ID09IHRydWUpIHtcbiAgICAgICR0eXBlLWZhbGxiYWNrOiB0eXBlLW9mKCRxdWVyeS1mYWxsYmFjayk7XG5cbiAgICAgIEBpZiAoJHR5cGUtZmFsbGJhY2sgIT0gJ2Jvb2wnKSB7XG4gICAgICAgICN7JHF1ZXJ5LWZhbGxiYWNrfSAmIHtcbiAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMoKTtcbn1cblxuXG5AbWl4aW4gbXEoJHF1ZXJ5LCAkbm8tcXVlcnk6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBIYXMgU2V0dGluZ1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1oYXMoJHNldHRpbmcpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50LCAkc2V0dGluZykge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdldCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1nZXQoJHNldHRpbmcpIHtcbiAgQGlmIGJyZWFrcG9pbnQtaGFzKCRzZXR0aW5nKSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRicmVha3BvaW50LCAkc2V0dGluZyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkQnJlYWtwb2ludC1TZXR0aW5ncywgJHNldHRpbmcpO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpZiAoc3RyLWluZGV4KCRzZXR0aW5nLCAnLScpIG9yIHN0ci1pbmRleCgkc2V0dGluZywgJ18nKSkgYW5kIHN0ci1pbmRleCgkc2V0dGluZywgJyAnKSA9PSBudWxsIHtcbiAgICBAd2FybiBcIldvcmRzIGluIEJyZWFrcG9pbnQgc2V0dGluZ3Mgc2hvdWxkIGJlIHNlcGFyYXRlZCBieSBzcGFjZXMsIG5vdCBkYXNoZXMgb3IgdW5kZXJzY29yZXMuIFBsZWFzZSByZXBsYWNlIGRhc2hlcyBhbmQgdW5kZXJzY29yZXMgYmV0d2VlbiB3b3JkcyB3aXRoIHNwYWNlcy4gU2V0dGluZ3Mgd2lsbCBub3Qgd29yayBhcyBleHBlY3RlZCB1bnRpbCBjaGFuZ2VkLlwiO1xuICB9XG4gICRicmVha3BvaW50OiBtYXAtbWVyZ2UoJGJyZWFrcG9pbnQsICgkc2V0dGluZzogJHZhbHVlKSkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICAkYnJlYWtwb2ludC1jaGFuZ2U6IGJyZWFrcG9pbnQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gYnJlYWtwb2ludC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIGJrcHQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5AbWl4aW4gYmtwdC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZW1vdmUgU2V0dGluZ1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MuLi4pIHtcbiAgQGlmIGxlbmd0aCgkc2V0dGluZ3MpID09IDEge1xuICAgICRzZXR0aW5nczogbnRoKCRzZXR0aW5ncywgMSk7XG4gIH1cblxuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICRicmVha3BvaW50OiBtYXAtcmVtb3ZlKCRicmVha3BvaW50LCAkc2V0dGluZykgIWdsb2JhbDtcbiAgfVxuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncy4uLikge1xuICAkYnJlYWtwb2ludC1yZXNldDogYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MpO1xufVxuXG5AbWl4aW4gYmtwdC1yZXNldCgkc2V0dGluZ3MuLi4pIHtcbiAgJGJyZWFrcG9pbnQtcmVzZXQ6IGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzKTtcbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFByaXZhdGUgQnJlYWtwb2ludCBWYXJpYWJsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCk7XG4kcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgSGFzIENvbnRleHRcbi8vIFJldHVybnMgd2hldGhlciBvciBub3QgeW91IGFyZSBpbnNpZGUgYSBCcmVha3BvaW50IHF1ZXJ5XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWhhcy1jb250ZXh0KCkge1xuICBAaWYgbGVuZ3RoKCRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IEdldCBDb250ZXh0XG4vLyAkZmVhdHVyZTogSW5wdXQgZmVhdHVyZSB0byBnZXQgaXQncyBjdXJyZW50IE1RIGNvbnRleHQuIFJldHVybnMgZmFsc2UgaWYgbm8gY29udGV4dFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1nZXQtY29udGV4dCgkZmVhdHVyZSkge1xuICBAaWYgbWFwLWhhcy1rZXkoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpIHtcbiAgICAkZ2V0OiBtYXAtZ2V0KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKTtcbiAgICAvLyBTcGVjaWFsIGhhbmRsaW5nIG9mIG5vLXF1ZXJ5IGZyb20gZ2V0IHNpZGUgc28gL2ZhbHNlLyBwcmVwZW5kcyBhcmVuJ3QgcmV0dXJuZWRcbiAgICBAaWYgJGZlYXR1cmUgPT0gJ25vLXF1ZXJ5JyB7XG4gICAgICBAaWYgdHlwZS1vZigkZ2V0KSA9PSAnbGlzdCcgYW5kIGxlbmd0aCgkZ2V0KSA+IDEgYW5kIG50aCgkZ2V0LCAxKSA9PSBmYWxzZSB7XG4gICAgICAgICRnZXQ6IG50aCgkZ2V0LCBsZW5ndGgoJGdldCkpO1xuICAgICAgfVxuICAgIH1cbiAgICBAcmV0dXJuICRnZXQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiBicmVha3BvaW50LWhhcy1jb250ZXh0KCkgYW5kICRmZWF0dXJlID09ICdtZWRpYScge1xuICAgICAgQHJldHVybiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFByaXZhdGUgZnVuY3Rpb24gdG8gc2V0IGNvbnRleHRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJHZhbHVlKSB7XG4gIEBpZiAkdmFsdWUgPT0gJ21vbm9jaHJvbWUnIHtcbiAgICAkZmVhdHVyZTogJ21vbm9jaHJvbWUnO1xuICB9XG5cbiAgJGN1cnJlbnQ6IG1hcC1nZXQoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpO1xuICBAaWYgJGN1cnJlbnQgYW5kIGxlbmd0aCgkY3VycmVudCkgPT0gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgQHdhcm4gXCJZb3UgaGF2ZSBhbHJlYWR5IHF1ZXJpZWQgYWdhaW5zdCBgI3skZmVhdHVyZX1gLiBVbmV4cGVjdGVkIHRoaW5ncyBtYXkgaGFwcGVuIGlmIHlvdSBxdWVyeSBhZ2FpbnN0IHRoZSBzYW1lIGZlYXR1cmUgbW9yZSB0aGFuIG9uY2UgaW4gdGhlIHNhbWUgYGFuZGAgcXVlcnkuIEJyZWFrcG9pbnQgaXMgb3ZlcndyaXRpbmcgdGhlIGN1cnJlbnQgY29udGV4dCB3aXRoIGAjeyR2YWx1ZX1gXCI7XG4gIH1cblxuICBAaWYgbm90IG1hcC1oYXMta2V5KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKSB7XG4gICAgJHYtaG9sZGVyOiAoKTtcbiAgICBAZm9yICRpIGZyb20gMSB0byAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICAgIEBpZiAkZmVhdHVyZSA9PSAnbWVkaWEnIHtcbiAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgJHZhbHVlKTtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtbWVyZ2UoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgKCRmZWF0dXJlOiAkdi1ob2xkZXIpKSAhZ2xvYmFsO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkdi1ob2xkZXI6IG1hcC1nZXQoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpO1xuICAgICRsZW5ndGg6IGxlbmd0aCgkdi1ob2xkZXIpO1xuICAgIEBmb3IgJGkgZnJvbSAkbGVuZ3RoIHRvICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQgLSAxIHtcbiAgICAgIEBpZiAkZmVhdHVyZSA9PSAnbWVkaWEnIHtcbiAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgJHZhbHVlKTtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtbWVyZ2UoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgKCRmZWF0dXJlOiAkdi1ob2xkZXIpKSAhZ2xvYmFsO1xuICB9XG5cbiAgQHJldHVybiB0cnVlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFByaXZhdGUgZnVuY3Rpb24gdG8gcmVzZXQgY29udGV4dFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gcHJpdmF0ZS1icmVha3BvaW50LXJlc2V0LWNvbnRleHRzIHtcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCkgIWdsb2JhbDtcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZ2xvYmFsO1xufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29udmVydHMgdGhlIGlucHV0IHZhbHVlIHRvIEJhc2UgRU1zXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXRvLWJhc2UtZW0oJHZhbHVlKSB7XG4gICR2YWx1ZS11bml0OiB1bml0KCR2YWx1ZSk7XG5cbiAgLy8gV2lsbCBjb252ZXJ0IHJlbGF0aXZlIEVNcyBpbnRvIHJvb3QgRU1zLlxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykgYW5kIHR5cGUtb2YoYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykpID09ICdudW1iZXInIGFuZCAkdmFsdWUtdW5pdCA9PSAnZW0nIHtcbiAgICAkYmFzZS11bml0OiB1bml0KGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpKTtcblxuICAgIEBpZiAkYmFzZS11bml0ID09ICdweCcgb3IgJGJhc2UtdW5pdCA9PSAnJScgb3IgJGJhc2UtdW5pdCA9PSAnZW0nIG9yICRiYXNlLXVuaXQgPT0gJ3B0JyB7XG4gICAgICBAcmV0dXJuIGJhc2UtY29udmVyc2lvbigkdmFsdWUpIC8gYmFzZS1jb252ZXJzaW9uKGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpKSAqIDFlbTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gJyN7YnJlYWtwb2ludC1nZXQoXFwnYmFzZSBmb250IHNpemVcXCcpfSBpcyBub3Qgc2V0IGluIHZhbGlkIHVuaXRzIGZvciBmb250IHNpemUhJztcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGJhc2UtY29udmVyc2lvbigkdmFsdWUpO1xuICB9XG59XG5cbkBmdW5jdGlvbiBiYXNlLWNvbnZlcnNpb24oJHZhbHVlKSB7XG4gICR1bml0OiB1bml0KCR2YWx1ZSk7XG5cbiAgQGlmICR1bml0ID09ICdweCcge1xuICAgIEByZXR1cm4gJHZhbHVlIC8gMTZweCAqIDFlbTtcbiAgfVxuICBAZWxzZSBpZiAkdW5pdCA9PSAnJScge1xuICAgIEByZXR1cm4gJHZhbHVlIC8gMTAwJSAqIDFlbTtcbiAgfVxuICBAZWxzZSBpZiAkdW5pdCA9PSAnZW0nIHtcbiAgICBAcmV0dXJuICR2YWx1ZTtcbiAgfVxuICBAZWxzZSBpZiAkdW5pdCA9PSAncHQnIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIDEycHQgKiAxZW07XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHZhbHVlO1xuLy8gICAgQHdhcm4gJ0V2ZXJ5dGhpbmcgaXMgdGVycmlibGUhIFdoYXQgaGF2ZSB5b3UgZG9uZT8hJztcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBjYW4gaGF2ZSBhIG1pbi9tYXggcGFpclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1taW4tbWF4LWZlYXR1cmVzOiAnY29sb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yLWluZGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS1hc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS1oZWlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS13aWR0aCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb25vY2hyb21lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXNvbHV0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aWR0aCc7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LW1pbi1tYXgoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJGl0ZW0gaW4gJGJyZWFrcG9pbnQtbWluLW1heC1mZWF0dXJlcyB7XG4gICAgQGlmICRmZWF0dXJlID09ICRpdGVtIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgY2FuIGhhdmUgYSBzdHJpbmcgdmFsdWVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtc3RyaW5nLWZlYXR1cmVzOiAgJ29yaWVudGF0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzY2FuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2UtYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsdW1pbm9zaXR5JztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtc3RyaW5nLXZhbHVlKCRmZWF0dXJlKSB7XG4gIEBlYWNoICRpdGVtIGluICRicmVha3BvaW50LXN0cmluZy1mZWF0dXJlcyB7XG4gICAgQGlmIGJyZWFrcG9pbnQtbWluLW1heCgkaXRlbSkge1xuICAgICAgQGlmICRmZWF0dXJlID09ICdtaW4tI3skaXRlbX0nIG9yICRmZWF0dXJlID09ICdtYXgtI3skaXRlbX0nIHtcbiAgICAgICAgQHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSBpZiAkZmVhdHVyZSA9PSAkaXRlbSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGlzIGEgbWVkaWEgdHlwZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1tZWRpYS10eXBlczogICdhbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnYnJhaWxsZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdlbWJvc3NlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdoYW5kaGVsZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdwcmludCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9qZWN0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NjcmVlbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdzcGVlY2gnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAndHR5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R2JztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaXMtbWVkaWEoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJG1lZGlhIGluICRicmVha3BvaW50LW1lZGlhLXR5cGVzIHtcbiAgICBAaWYgKCRmZWF0dXJlID09ICRtZWRpYSkgb3IgKCRmZWF0dXJlID09ICdub3QgI3skbWVkaWF9Jykgb3IgKCRmZWF0dXJlID09ICdvbmx5ICN7JG1lZGlhfScpIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBjYW4gc3RhbmQgYWxvbmVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZy1mZWF0dXJlczogJ2NvbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvci1pbmRleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3JpZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9ub2Nocm9tZSc7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJGl0ZW0gaW4gJGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZy1mZWF0dXJlcyB7XG4gICAgQGlmICRmZWF0dXJlID09ICRpdGVtIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaXMtcmVzb2x1dGlvbigkZmVhdHVyZSkge1xuICAkcmVzb2x1dGlvbnM6ICdkZXZpY2UtcGl4ZWwtcmF0aW8nLCAnZHByJztcblxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycpIHtcbiAgICAkcmVzb2x1dGlvbnM6IGFwcGVuZCgkcmVzb2x1dGlvbnMsICdyZXNvbHV0aW9uJyk7XG4gIH1cblxuICBAZWFjaCAkcmVzbyBpbiAkcmVzb2x1dGlvbnMge1xuICAgIEBpZiBpbmRleCgkZmVhdHVyZSwgJHJlc28pIG9yIGluZGV4KCRmZWF0dXJlLCAnbWluLSN7JHJlc299Jykgb3IgaW5kZXgoJGZlYXR1cmUsICdtYXgtI3skcmVzb30nKSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBmYWxzZTtcbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBhcnNlciBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInBhcnNlcnMvcXVlcnlcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL3NpbmdsZVwiO1xuQGltcG9ydCBcInBhcnNlcnMvZG91YmxlXCI7XG5AaW1wb3J0IFwicGFyc2Vycy90cmlwbGVcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL3Jlc29sdXRpb25cIjtcblxuJE1lbW8tRXhpc3RzOiBmdW5jdGlvbi1leGlzdHMobWVtby1nZXQpIGFuZCBmdW5jdGlvbi1leGlzdHMobWVtby1zZXQpO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgRnVuY3Rpb25cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkY29udGV4dHMuLi4pIHtcbiAgJHJ1bjogdHJ1ZTtcbiAgJHJldHVybjogKCk7XG5cbiAgLy8gR3JhYiB0aGUgTWVtbyBPdXRwdXQgaWYgTWVtb2l6YXRpb24gY2FuIGJlIGEgdGhpbmdcbiAgQGlmICRNZW1vLUV4aXN0cyB7XG4gICAgJHJldHVybjogbWVtby1nZXQoYnJlYWtwb2ludCwgYnJlYWtwb2ludCAkcXVlcnkgJGNvbnRleHRzKTtcblxuICAgIEBpZiAkcmV0dXJuICE9IG51bGwge1xuICAgICAgJHJ1bjogZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgQGlmIG5vdCAkTWVtby1FeGlzdHMgb3IgJHJ1biB7XG4gICAgLy8gSW50ZXJuYWwgVmFyaWFibGVzXG4gICAgJHF1ZXJ5LXN0cmluZzogJyc7XG4gICAgJHF1ZXJ5LWZhbGxiYWNrOiBmYWxzZTtcbiAgICAkcmV0dXJuOiAoKTtcblxuICAgIC8vIFJlc2VydmUgR2xvYmFsIFByaXZhdGUgQnJlYWtwb2ludCBDb250ZXh0XG4gICAgJGhvbGRlci1jb250ZXh0OiAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyO1xuICAgICRob2xkZXItcXVlcnktY291bnQ6ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ7XG5cbiAgICAvLyBSZXNldCBHbG9iYWwgUHJpdmF0ZSBCcmVha3BvaW50IENvbnRleHRcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKSAhZ2xvYmFsO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWdsb2JhbDtcblxuXG4gICAgLy8gVGVzdCB0byBzZWUgaWYgaXQncyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0XG4gICAgJG9yLWxpc3Q6IGlmKGxpc3Qtc2VwYXJhdG9yKCRxdWVyeSkgPT0gJ2NvbW1hJywgdHJ1ZSwgZmFsc2UpO1xuXG5cbiAgICBAaWYgKCRvci1saXN0ID09IGZhbHNlIGFuZCBicmVha3BvaW50LWdldCgnbGVnYWN5IHN5bnRheCcpID09IGZhbHNlKSB7XG4gICAgICAkcXVlcnktc3RyaW5nOiBicmVha3BvaW50LXBhcnNlKCRxdWVyeSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRsZW5ndGg6IGxlbmd0aCgkcXVlcnkpO1xuXG4gICAgICAkbGFzdDogbnRoKCRxdWVyeSwgJGxlbmd0aCk7XG4gICAgICAkcXVlcnktZmFsbGJhY2s6IGJyZWFrcG9pbnQtbm8tcXVlcnkoJGxhc3QpO1xuXG4gICAgICBAaWYgKCRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSkge1xuICAgICAgICAkbGVuZ3RoOiAkbGVuZ3RoIC0gMTtcbiAgICAgIH1cblxuICAgICAgQGlmIChicmVha3BvaW50LWdldCgnbGVnYWN5IHN5bnRheCcpID09IHRydWUpIHtcbiAgICAgICAgJG1xOiAoKTtcblxuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICAgICAgICRtcTogYXBwZW5kKCRtcSwgbnRoKCRxdWVyeSwgJGkpLCBjb21tYSk7XG4gICAgICAgIH1cblxuICAgICAgICAkcXVlcnktc3RyaW5nOiBicmVha3BvaW50LXBhcnNlKCRtcSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRxdWVyeS1zdHJpbmc6ICcnO1xuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICAgICAgICRxdWVyeS1zdHJpbmc6ICRxdWVyeS1zdHJpbmcgKyBpZigkaSA9PSAxLCAnJywgJywgJykgKyBicmVha3BvaW50LXBhcnNlKG50aCgkcXVlcnksICRpKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkcmV0dXJuOiAoJ3F1ZXJ5JzogJHF1ZXJ5LXN0cmluZyxcbiAgICAgICAgJ2ZhbGxiYWNrJzogJHF1ZXJ5LWZhbGxiYWNrLFxuICAgICAgICAnY29udGV4dCBob2xkZXInOiAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLFxuICAgICAgICAncXVlcnkgY291bnQnOiAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50XG4gICAgKTtcbiAgICBAaWYgbGVuZ3RoKCRjb250ZXh0cykgPiAwIGFuZCBudGgoJGNvbnRleHRzLCAxKSAhPSBmYWxzZSB7XG4gICAgICBAaWYgJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlIHtcbiAgICAgICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJ25vLXF1ZXJ5JywgJHF1ZXJ5LWZhbGxiYWNrKTtcbiAgICAgIH1cbiAgICAgICRjb250ZXh0LW1hcDogKCk7XG4gICAgICBAZWFjaCAkY29udGV4dCBpbiAkY29udGV4dHMge1xuICAgICAgICAkY29udGV4dC1tYXA6IG1hcC1tZXJnZSgkY29udGV4dC1tYXAsICgkY29udGV4dDogYnJlYWtwb2ludC1nZXQtY29udGV4dCgkY29udGV4dCkpKTtcbiAgICAgIH1cbiAgICAgICRyZXR1cm46IG1hcC1tZXJnZSgkcmV0dXJuLCAoY29udGV4dDogJGNvbnRleHQtbWFwKSk7XG4gICAgfVxuXG4gICAgLy8gUmVzZXQgR2xvYmFsIFByaXZhdGUgQnJlYWtwb2ludCBDb250ZXh0XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCkgIWdsb2JhbDtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFnbG9iYWw7XG5cbiAgICBAaWYgJE1lbW8tRXhpc3RzIHtcbiAgICAgICRob2xkZXI6IG1lbW8tc2V0KGJyZWFrcG9pbnQsIGJyZWFrcG9pbnQgJHF1ZXJ5ICRjb250ZXh0cywgJHJldHVybik7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdlbmVyYWwgQnJlYWtwb2ludCBQYXJzZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UoJHF1ZXJ5KSB7XG4gIC8vIEluY3JlYXNlIG51bWJlciBvZiAnYW5kJyBxdWVyaWVzXG4gICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQgKyAxICFnbG9iYWw7XG5cbiAgLy8gU2V0IHVwIE1lZGlhIFR5cGVcbiAgJHF1ZXJ5LXByaW50OiAnJztcblxuICAkZm9yY2UtYWxsOiAoKGJyZWFrcG9pbnQtZ2V0KCdmb3JjZSBhbGwgbWVkaWEgdHlwZScpID09IHRydWUpIGFuZCAoYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSA9PSAnYWxsJykpO1xuICAkZW1wdHktbWVkaWE6IHRydWU7XG4gIEBpZiAoJGZvcmNlLWFsbCA9PSB0cnVlKSBvciAoYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSAhPSAnYWxsJykge1xuICAgIC8vIEZvcmNlIHRoZSBwcmludCBvZiB0aGUgZGVmYXVsdCBtZWRpYSB0eXBlIGlmIChmb3JjZSBhbGwgaXMgdHJ1ZSBhbmQgZGVmYXVsdCBtZWRpYSB0eXBlIGlzIGFsbCkgb3IgKGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBub3QgYWxsKVxuICAgICRxdWVyeS1wcmludDogYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKTtcbiAgICAkZW1wdHktbWVkaWE6IGZhbHNlO1xuICB9XG5cblxuICAkcXVlcnktcmVzb2x1dGlvbjogZmFsc2U7XG5cbiAgJHF1ZXJ5LWhvbGRlcjogYnJlYWtwb2ludC1wYXJzZS1xdWVyeSgkcXVlcnkpO1xuXG5cblxuICAvLyBMb29wIG92ZXIgZWFjaCBwYXJzZWQgb3V0IHF1ZXJ5IGFuZCB3cml0ZSBpdCB0byAkcXVlcnktcHJpbnRcbiAgJGZpcnN0OiB0cnVlO1xuXG4gIEBlYWNoICRmZWF0dXJlIGluICRxdWVyeS1ob2xkZXIge1xuICAgICRsZW5ndGg6IGxlbmd0aCgkZmVhdHVyZSk7XG5cbiAgICAvLyBQYXJzZSBhIHNpbmdsZSBmZWF0dXJlXG4gICAgQGlmICgkbGVuZ3RoID09IDEpIHtcbiAgICAgIC8vIEZlYXR1cmUgaXMgY3VycmVudGx5IGEgbGlzdCwgZ3JhYiB0aGUgYWN0dWFsIHZhbHVlXG4gICAgICAkZmVhdHVyZTogbnRoKCRmZWF0dXJlLCAxKTtcblxuICAgICAgLy8gTWVkaWEgVHlwZSBtdXN0IGJ5IGNvbnZlbnRpb24gYmUgdGhlIGZpcnN0IGl0ZW0sIHNvIGl0J3Mgc2FmZSB0byBmbGF0IG92ZXJyaWRlICRxdWVyeS1wcmludCwgd2hpY2ggcmlnaHQgbm93IHNob3VsZCBvbmx5IGJlIHRoZSBkZWZhdWx0IG1lZGlhIHR5cGVcbiAgICAgIEBpZiAoYnJlYWtwb2ludC1pcy1tZWRpYSgkZmVhdHVyZSkpIHtcbiAgICAgICAgQGlmICgkZm9yY2UtYWxsID09IHRydWUpIG9yICgkZmVhdHVyZSAhPSAnYWxsJykge1xuICAgICAgICAgIC8vIEZvcmNlIHRoZSBwcmludCBvZiB0aGUgZGVmYXVsdCBtZWRpYSB0eXBlIGlmIChmb3JjZSBhbGwgaXMgdHJ1ZSBhbmQgZGVmYXVsdCBtZWRpYSB0eXBlIGlzIGFsbCkgb3IgKGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBub3QgYWxsKVxuICAgICAgICAgICRxdWVyeS1wcmludDogJGZlYXR1cmU7XG4gICAgICAgICAgJGVtcHR5LW1lZGlhOiBmYWxzZTtcblxuICAgICAgICAgIC8vIFNldCBDb250ZXh0XG4gICAgICAgICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWVkaWEsICRxdWVyeS1wcmludCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBQYXJzZSBhIGRvdWJsZSBmZWF0dXJlXG4gICAgQGVsc2UgaWYgKCRsZW5ndGggPT0gMikge1xuICAgICAgQGlmIChicmVha3BvaW50LWlzLXJlc29sdXRpb24oJGZlYXR1cmUpICE9IGZhbHNlKSB7XG4gICAgICAgICRxdWVyeS1yZXNvbHV0aW9uOiAkZmVhdHVyZTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHBhcnNlZDogbnVsbDtcbiAgICAgICAgLy8gSWYgaXQncyBhIHN0cmluZy9udW1iZXIgcGFpcixcbiAgICAgICAgLy8gd2UgY2hlY2sgdG8gc2VlIGlmIG9uZSBpcyBhIHNpbmdsZS1zdHJpbmcgdmFsdWUsXG4gICAgICAgIC8vIHRoZW4gd2UgcGFyc2UgaXQgYXMgYSBub3JtYWwgZG91YmxlXG4gICAgICAgICRhbHBoYTogbnRoKCRmZWF0dXJlLCAxKTtcbiAgICAgICAgJGJldGE6IG50aCgkZmVhdHVyZSwgMik7XG4gICAgICAgIEBpZiBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJGFscGhhKSBvciBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJGJldGEpIHtcbiAgICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkYWxwaGEsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkYmV0YSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kb3VibGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBQYXJzZSBhIHRyaXBsZSBmZWF0dXJlXG4gICAgQGVsc2UgaWYgKCRsZW5ndGggPT0gMykge1xuICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS10cmlwbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgfVxuXG4gIH1cblxuICBAaWYgKCRxdWVyeS1yZXNvbHV0aW9uICE9IGZhbHNlKSB7XG4gICAgJHF1ZXJ5LXByaW50OiBicmVha3BvaW50LWJ1aWxkLXJlc29sdXRpb24oJHF1ZXJ5LXByaW50LCAkcXVlcnktcmVzb2x1dGlvbiwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICB9XG5cbiAgLy8gTG9vcCB0aHJvdWdoIGVhY2ggZmVhdHVyZSB0aGF0J3MgYmVlbiBkZXRlY3RlZCBzbyBmYXIgYW5kIGFwcGVuZCAnZmFsc2UnIHRvIHRoZSB0aGUgdmFsdWUgbGlzdCB0byBpbmNyZW1lbnQgdGhlaXIgY291bnRlcnNcbiAgQGVhY2ggJGYsICR2IGluICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIge1xuICAgICR2LWhvbGRlcjogJHY7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCR2LWhvbGRlcik7XG4gICAgQGlmIGxlbmd0aCgkdi1ob2xkZXIpIDwgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgICBAZm9yICRpIGZyb20gJGxlbmd0aCB0byAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICAgICAgQGlmICRmID09ICdtZWRpYScge1xuICAgICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSk7XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1tZXJnZSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAoJGY6ICR2LWhvbGRlcikpICFnbG9iYWw7XG4gIH1cblxuICBAcmV0dXJuICRxdWVyeS1wcmludDtcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXF1ZXJ5KCRxdWVyeSkge1xuICAvLyBQYXJzZSBmZWF0dXJlcyBvdXQgb2YgYW4gaW5kaXZpZHVhbCBxdWVyeVxuICAkZmVhdHVyZS1ob2xkZXI6ICgpO1xuICAkcXVlcnktaG9sZGVyOiAoKTtcbiAgJGxlbmd0aDogbGVuZ3RoKCRxdWVyeSk7XG5cbiAgQGlmICRsZW5ndGggPT0gMiB7XG4gICAgLy8gSWYgd2UndmUgZ290IGEgc3RyaW5nL251bWJlciwgbnVtYmVyL3N0cmluZywgY2hlY2sgdG8gc2VlIGlmIGl0J3MgYSB2YWxpZCBzdHJpbmcvbnVtYmVyIHBhaXIgb3IgdHdvIHNpbmdsZXNcbiAgICBAaWYgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdzdHJpbmcnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnbnVtYmVyJykgb3IgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdudW1iZXInIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnc3RyaW5nJykge1xuXG4gICAgICAkbnVtYmVyOiAnJztcbiAgICAgICR2YWx1ZTogJyc7XG5cbiAgICAgIEBpZiB0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnc3RyaW5nJyB7XG4gICAgICAgICRudW1iZXI6IG50aCgkcXVlcnksIDIpO1xuICAgICAgICAkdmFsdWU6IG50aCgkcXVlcnksIDEpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkbnVtYmVyOiBudGgoJHF1ZXJ5LCAxKTtcbiAgICAgICAgJHZhbHVlOiBudGgoJHF1ZXJ5LCAyKTtcbiAgICAgIH1cblxuICAgICAgLy8gSWYgdGhlIHN0cmluZyB2YWx1ZSBjYW4gYmUgYSBzaW5nbGUgdmFsdWUsIGNoZWNrIHRvIHNlZSBpZiB0aGUgbnVtYmVyIHBhc3NlZCBpbiBpcyBhIHZhbGlkIGlucHV0IGZvciBzYWlkIHNpbmdsZSB2YWx1ZS4gRm9ydHVuYXRlbHksIGFsbCBjdXJyZW50IHNpbmdsZS12YWx1ZSBvcHRpb25zIG9ubHkgYWNjZXB0IHVuaXRsZXNzIG51bWJlcnMsIHNvIHRoaXMgY2hlY2sgaXMgZWFzeS5cbiAgICAgIEBpZiBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJHZhbHVlKSB7XG4gICAgICAgIEBpZiB1bml0bGVzcygkbnVtYmVyKSB7XG4gICAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQoJHZhbHVlLCAkbnVtYmVyLCBzcGFjZSk7XG4gICAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gSWYgdGhlIHN0cmluZyBpcyBhIG1lZGlhIHR5cGUsIHNwbGl0IHRoZSBxdWVyeVxuICAgICAgQGlmIGJyZWFrcG9pbnQtaXMtbWVkaWEoJHZhbHVlKSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCBudGgoJHF1ZXJ5LCAxKSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCBudGgoJHF1ZXJ5LCAyKSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICAgIC8vIElmIGl0J3Mgbm90IGEgc2luZ2xlIGZlYXR1cmUsIHdlJ3JlIGp1c3QgZ29pbmcgdG8gYXNzdW1lIGl0J3MgYSBwcm9wZXIgc3RyaW5nL3ZhbHVlIHBhaXIsIGFuZCByb2xsIHdpdGggaXQuXG4gICAgICBAZWxzZSB7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKCR2YWx1ZSwgJG51bWJlciwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cblxuICAgIH1cbiAgICAvLyBJZiB0aGV5J3JlIGJvdGggbnVtYmVycywgd2UgYXNzdW1lIGl0J3MgYSBkb3VibGUgYW5kIHJvbGwgd2l0aCB0aGF0XG4gICAgQGVsc2UgaWYgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdudW1iZXInIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnbnVtYmVyJykge1xuICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMSksIG50aCgkcXVlcnksIDIpLCBzcGFjZSk7XG4gICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgfVxuICAgIC8vIElmIHRoZXkncmUgYm90aCBzdHJpbmdzIGFuZCBuZWl0aGVyIGFyZSBzaW5nbGVzLCB3ZSByb2xsIHdpdGggdGhhdC5cbiAgICBAZWxzZSBpZiAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ3N0cmluZycgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdzdHJpbmcnKSB7XG4gICAgICBAaWYgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAxKSkgYW5kIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMikpIHtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMSksIG50aCgkcXVlcnksIDIpLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkbGVuZ3RoID09IDMge1xuICAgIC8vIElmIHdlJ3ZlIGdvdCB0aHJlZSBpdGVtcyBhbmQgbm9uZSBpcyBhIGxpc3QsIHdlIGNoZWNrIHRvIHNlZVxuICAgIEBpZiB0eXBlLW9mKG50aCgkcXVlcnksIDEpKSAhPSAnbGlzdCcgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpICE9ICdsaXN0JyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAzKSkgIT0gJ2xpc3QnIHtcbiAgICAgIC8vIElmIG5vbmUgb2YgdGhlIGl0ZW1zIGFyZSBzaW5nbGUgc3RyaW5nIHZhbHVlcyBhbmQgbm9uZSBvZiB0aGUgdmFsdWVzIGFyZSBtZWRpYSB2YWx1ZXMsIHdlJ3JlIGdvb2QuXG4gICAgICBAaWYgKG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMSkpIGFuZCBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDIpKSBhbmQgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAzKSkpIGFuZCAgKChub3QgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAxKSkgYW5kIG5vdCBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDIpKSBhbmQgbm90IGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMykpKSkge1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAxKSwgbnRoKCRxdWVyeSwgMiksIHNwYWNlKTtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQoJGZlYXR1cmUtaG9sZGVyLCBudGgoJHF1ZXJ5LCAzKSwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICAgIC8vIGxldCdzIGNoZWNrIHRvIHNlZSBpZiB0aGUgZmlyc3QgaXRlbSBpcyBhIG1lZGlhIHR5cGVcbiAgICAgIEBlbHNlIGlmIGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMSkpIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsIG50aCgkcXVlcnksIDEpKTtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMiksIG50aCgkcXVlcnksIDMpLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgaXQncyBhIHNpbmdsZSBpdGVtLCBvciBpZiBpdCdzIG5vdCBhIHNwZWNpYWwgY2FzZSBkb3VibGUgb3IgdHJpcGxlLCB3ZSBjYW4gc2ltcGx5IHJldHVybiB0aGUgcXVlcnkuXG4gIEByZXR1cm4gJHF1ZXJ5O1xufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJzaW5nbGUvZGVmYXVsdFwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRwYXJzZWQ6ICcnO1xuICAkbGVhZGVyOiAnJztcbiAgLy8gSWYgd2UncmUgZm9yY2luZ1xuICBAaWYgbm90ICgkZW1wdHktbWVkaWEpIG9yIG5vdCAoJGZpcnN0KSB7XG4gICAgJGxlYWRlcjogJ2FuZCAnO1xuICB9XG5cbiAgLy8gSWYgaXQncyBhIHNpbmdsZSBmZWF0dXJlIHRoYXQgY2FuIHN0YW5kIGFsb25lLCB3ZSBsZXQgaXRcbiAgQGlmIChicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJGZlYXR1cmUpKSB7XG4gICAgJHBhcnNlZDogJGZlYXR1cmU7XG4gICAgLy8gU2V0IENvbnRleHRcbiAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJGZlYXR1cmUpO1xuICB9XG4gIC8vIElmIGl0J3Mgbm90IGEgc3RhbmQgYWxvbmUgZmVhdHVyZSwgd2UgcGFzcyBpdCBvZmYgdG8gdGhlIGRlZmF1bHQgaGFuZGxlci5cbiAgQGVsc2Uge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdCgkZmVhdHVyZSk7XG4gIH1cblxuICBAcmV0dXJuICRsZWFkZXIgKyAnKCcgKyAkcGFyc2VkICsgJyknO1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdCgkZmVhdHVyZSkge1xuICAkZGVmYXVsdDogYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgZmVhdHVyZScpO1xuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRkZWZhdWx0LCAkZmVhdHVyZSk7XG5cbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkgYW5kICh0eXBlLW9mKCRmZWF0dXJlKSA9PSAnbnVtYmVyJykge1xuICAgIEByZXR1cm4gJyN7JGRlZmF1bHR9OiAje2JyZWFrcG9pbnQtdG8tYmFzZS1lbSgkZmVhdHVyZSl9JztcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAnI3skZGVmYXVsdH06ICN7JGZlYXR1cmV9JztcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJkb3VibGUvZGVmYXVsdC1wYWlyXCI7XG5AaW1wb3J0IFwiZG91YmxlL2RvdWJsZS1zdHJpbmdcIjtcbkBpbXBvcnQgXCJkb3VibGUvZGVmYXVsdFwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kb3VibGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRwYXJzZWQ6ICcnO1xuICAkbGVhZGVyOiAnJztcbiAgLy8gSWYgd2UncmUgZm9yY2luZ1xuICBAaWYgbm90ICgkZW1wdHktbWVkaWEpIG9yIG5vdCAoJGZpcnN0KSB7XG4gICAgJGxlYWRlcjogJ2FuZCAnO1xuICB9XG5cbiAgJGZpcnN0OiBudGgoJGZlYXR1cmUsIDEpO1xuICAkc2Vjb25kOiBudGgoJGZlYXR1cmUsIDIpO1xuXG4gIC8vIElmIHdlJ3ZlIGdvdCB0d28gbnVtYmVycywgd2Uga25vdyB3ZSBuZWVkIHRvIHVzZSB0aGUgZGVmYXVsdCBwYWlyIGJlY2F1c2UgdGhlcmUgYXJlIG5vIG1lZGlhIHF1ZXJpZXMgdGhhdCBoYXMgYSBtZWRpYSBmZWF0dXJlIHRoYXQgaXMgYSBudW1iZXJcbiAgQGlmIHR5cGUtb2YoJGZpcnN0KSA9PSAnbnVtYmVyJyBhbmQgdHlwZS1vZigkc2Vjb25kKSA9PSAnbnVtYmVyJyB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0LXBhaXIoJGZpcnN0LCAkc2Vjb25kKTtcbiAgfVxuICAvLyBJZiB0aGV5IGFyZSBib3RoIHN0cmluZ3MsIHdlIHNlbmQgaXQgdGhyb3VnaCB0aGUgc3RyaW5nIHBhcnNlclxuICBAZWxzZSBpZiB0eXBlLW9mKCRmaXJzdCkgPT0gJ3N0cmluZycgYW5kIHR5cGUtb2YoJHNlY29uZCkgPT0gJ3N0cmluZycge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLXN0cmluZygkZmlyc3QsICRzZWNvbmQpO1xuICB9XG4gIC8vIElmIGl0J3MgYSBzdHJpbmcvbnVtYmVyIHBhaXIsIHdlIHBhcnNlIGl0IGFzIGEgbm9ybWFsIGRvdWJsZVxuICBAZWxzZSB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtZGVmYXVsdCgkZmlyc3QsICRzZWNvbmQpO1xuICB9XG5cbiAgQHJldHVybiAkbGVhZGVyICsgJHBhcnNlZDtcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQtcGFpcigkZmlyc3QsICRzZWNvbmQpIHtcbiAgJGRlZmF1bHQ6IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IHBhaXInKTtcbiAgJG1pbjogJyc7XG4gICRtYXg6ICcnO1xuXG4gIC8vIFNvcnQgaW50byBtaW4gYW5kIG1heFxuICAkbWluOiBtaW4oJGZpcnN0LCAkc2Vjb25kKTtcbiAgJG1heDogbWF4KCRmaXJzdCwgJHNlY29uZCk7XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWluLSN7JGRlZmF1bHR9LCAkbWluKTtcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWF4LSN7JGRlZmF1bHR9LCAkbWF4KTtcblxuICAvLyBNYWtlIHRoZW0gRU1zIGlmIG5lZWQgYmVcbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkge1xuICAgICRtaW46IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWluKTtcbiAgICAkbWF4OiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1heCk7XG4gIH1cblxuICBAcmV0dXJuICcobWluLSN7JGRlZmF1bHR9OiAjeyRtaW59KSBhbmQgKG1heC0jeyRkZWZhdWx0fTogI3skbWF4fSknO1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLXN0cmluZygkZmlyc3QsICRzZWNvbmQpIHtcbiAgJGZlYXR1cmU6ICcnO1xuICAkdmFsdWU6ICcnO1xuXG4gIC8vIFRlc3QgdG8gc2VlIHdoaWNoIGlzIHRoZSBmZWF0dXJlIGFuZCB3aGljaCBpcyB0aGUgdmFsdWVcbiAgQGlmIChicmVha3BvaW50LXN0cmluZy12YWx1ZSgkZmlyc3QpID09IHRydWUpIHtcbiAgICAkZmVhdHVyZTogJGZpcnN0O1xuICAgICR2YWx1ZTogJHNlY29uZDtcbiAgfVxuICBAZWxzZSBpZiAoYnJlYWtwb2ludC1zdHJpbmctdmFsdWUoJHNlY29uZCkgPT0gdHJ1ZSkge1xuICAgICRmZWF0dXJlOiAkc2Vjb25kO1xuICAgICR2YWx1ZTogJGZpcnN0O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIk5laXRoZXIgI3skZmlyc3R9IG5vciAjeyRzZWNvbmR9IGlzIGEgdmFsaWQgbWVkaWEgcXVlcnkgbmFtZS5cIjtcbiAgfVxuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkdmFsdWUpO1xuXG4gIEByZXR1cm4gJygjeyRmZWF0dXJlfTogI3skdmFsdWV9KSc7XG59IiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLWRlZmF1bHQoJGZpcnN0LCAkc2Vjb25kKSB7XG4gICRmZWF0dXJlOiAnJztcbiAgJHZhbHVlOiAnJztcblxuICBAaWYgdHlwZS1vZigkZmlyc3QpID09ICdzdHJpbmcnIHtcbiAgICAkZmVhdHVyZTogJGZpcnN0O1xuICAgICR2YWx1ZTogJHNlY29uZDtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGZlYXR1cmU6ICRzZWNvbmQ7XG4gICAgJHZhbHVlOiAkZmlyc3Q7XG4gIH1cblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJHZhbHVlKTtcblxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSB7XG4gICAgJHZhbHVlOiBicmVha3BvaW50LXRvLWJhc2UtZW0oJHZhbHVlKTtcbiAgfVxuXG4gIEByZXR1cm4gJygjeyRmZWF0dXJlfTogI3skdmFsdWV9KSdcbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwidHJpcGxlL2RlZmF1bHRcIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkcGFyc2VkOiAnJztcbiAgJGxlYWRlcjogJyc7XG5cbiAgLy8gSWYgd2UncmUgZm9yY2luZ1xuICBAaWYgbm90ICgkZW1wdHktbWVkaWEpIG9yIG5vdCAoJGZpcnN0KSB7XG4gICAgJGxlYWRlcjogJ2FuZCAnO1xuICB9XG5cbiAgLy8gc2VwYXJhdGUgdGhlIHN0cmluZyBmZWF0dXJlcyBmcm9tIHRoZSB2YWx1ZSBudW1iZXJzXG4gICRzdHJpbmc6IG51bGw7XG4gICRudW1iZXJzOiBudWxsO1xuICBAZWFjaCAkdmFsIGluICRmZWF0dXJlIHtcbiAgICBAaWYgdHlwZS1vZigkdmFsKSA9PSBzdHJpbmcge1xuICAgICAgJHN0cmluZzogJHZhbDtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGlmIHR5cGUtb2YoJG51bWJlcnMpID09ICdudWxsJyB7XG4gICAgICAgICRudW1iZXJzOiAkdmFsO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkbnVtYmVyczogYXBwZW5kKCRudW1iZXJzLCAkdmFsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXRyaXBsZS1kZWZhdWx0KCRzdHJpbmcsIG50aCgkbnVtYmVycywgMSksIG50aCgkbnVtYmVycywgMikpO1xuXG4gIEByZXR1cm4gJGxlYWRlciArICRwYXJzZWQ7XG5cbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXRyaXBsZS1kZWZhdWx0KCRmZWF0dXJlLCAkZmlyc3QsICRzZWNvbmQpIHtcblxuICAvLyBTb3J0IGludG8gbWluIGFuZCBtYXhcbiAgJG1pbjogbWluKCRmaXJzdCwgJHNlY29uZCk7XG4gICRtYXg6IG1heCgkZmlyc3QsICRzZWNvbmQpO1xuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1pbi0jeyRmZWF0dXJlfSwgJG1pbik7XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1heC0jeyRmZWF0dXJlfSwgJG1heCk7XG5cbiAgLy8gTWFrZSB0aGVtIEVNcyBpZiBuZWVkIGJlXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIHtcbiAgICAkbWluOiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1pbik7XG4gICAgJG1heDogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtYXgpO1xuICB9XG5cbiAgQHJldHVybiAnKG1pbi0jeyRmZWF0dXJlfTogI3skbWlufSkgYW5kIChtYXgtI3skZmVhdHVyZX06ICN7JG1heH0pJztcbn1cbiIsIkBpbXBvcnQgXCJyZXNvbHV0aW9uL3Jlc29sdXRpb25cIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtYnVpbGQtcmVzb2x1dGlvbigkcXVlcnktcHJpbnQsICRxdWVyeS1yZXNvbHV0aW9uLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkbGVhZGVyOiAnJztcbiAgLy8gSWYgd2UncmUgZm9yY2luZ1xuICBAaWYgbm90ICgkZW1wdHktbWVkaWEpIG9yIG5vdCAoJGZpcnN0KSB7XG4gICAgJGxlYWRlcjogJ2FuZCAnO1xuICB9XG5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnKSBhbmQgJHF1ZXJ5LXJlc29sdXRpb24ge1xuICAgICRyZXNvbHV0aW9uczogYnJlYWtwb2ludC1tYWtlLXJlc29sdXRpb25zKCRxdWVyeS1yZXNvbHV0aW9uKTtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJHJlc29sdXRpb25zKTtcbiAgICAkcXVlcnktaG9sZGVyOiAnJztcblxuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgICAkcXVlcnk6ICcjeyRxdWVyeS1wcmludH0gI3skbGVhZGVyfSN7bnRoKCRyZXNvbHV0aW9ucywgJGkpfSc7XG4gICAgICBAaWYgJGkgPT0gMSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6ICRxdWVyeTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogJyN7JHF1ZXJ5LWhvbGRlcn0sICN7JHF1ZXJ5fSc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBSZXR1cm4gd2l0aCBhdHRhY2hlZCByZXNvbHV0aW9uXG4gICAgQHJldHVybiAkcXVlcnktcHJpbnQ7XG4gIH1cbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LW1ha2UtcmVzb2x1dGlvbnMoJHJlc29sdXRpb24pIHtcbiAgJGxlbmd0aDogbGVuZ3RoKCRyZXNvbHV0aW9uKTtcblxuICAkb3V0cHV0OiAoKTtcblxuICBAaWYgJGxlbmd0aCA9PSAyIHtcbiAgICAkZmVhdHVyZTogJyc7XG4gICAgJHZhbHVlOiAnJztcblxuICAgIC8vIEZpbmQgd2hpY2ggaXMgbnVtYmVyXG4gICAgQGlmIHR5cGUtb2YobnRoKCRyZXNvbHV0aW9uLCAxKSkgPT0gJ251bWJlcicge1xuICAgICAgJHZhbHVlOiBudGgoJHJlc29sdXRpb24sIDEpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkdmFsdWU6IG50aCgkcmVzb2x1dGlvbiwgMik7XG4gICAgfVxuXG4gICAgLy8gRGV0ZXJtaW5lIG1pbi9tYXgvc3RhbmRhcmRcbiAgICBAaWYgaW5kZXgoJHJlc29sdXRpb24sICdtaW4tcmVzb2x1dGlvbicpIHtcbiAgICAgICRmZWF0dXJlOiAnbWluLSc7XG4gICAgfVxuICAgIEBlbHNlIGlmIGluZGV4KCRyZXNvbHV0aW9uLCAnbWF4LXJlc29sdXRpb24nKSB7XG4gICAgICAkZmVhdHVyZTogJ21heC0nO1xuICAgIH1cblxuICAgICRzdGFuZGFyZDogJygjeyRmZWF0dXJlfXJlc29sdXRpb246ICN7JHZhbHVlfSknO1xuXG4gICAgLy8gSWYgd2UncmUgbm90IGRlYWxpbmcgd2l0aCBkcHB4LFxuICAgIEBpZiB1bml0KCR2YWx1ZSkgIT0gJ2RwcHgnIHtcbiAgICAgICRiYXNlOiA5NmRwaTtcbiAgICAgIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ2RwY20nIHtcbiAgICAgICAgJGJhc2U6IDI0My44NGRwY207XG4gICAgICB9XG4gICAgICAvLyBXcml0ZSBvdXQgZmVhdHVyZSB0ZXN0c1xuICAgICAgJHdlYmtpdDogJyc7XG4gICAgICAkbW96OiAnJztcbiAgICAgICR3ZWJraXQ6ICcoLXdlYmtpdC0jeyRmZWF0dXJlfWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAkYmFzZX0pJztcbiAgICAgICRtb3o6ICcoI3skZmVhdHVyZX0tbW96LWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAkYmFzZX0pJztcbiAgICAgIC8vIEFwcGVuZCB0byBvdXRwdXRcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkc3RhbmRhcmQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkd2Via2l0LCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJG1veiwgc3BhY2UpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkd2Via2l0OiAnJztcbiAgICAgICRtb3o6ICcnO1xuICAgICAgJHdlYmtpdDogJygtd2Via2l0LSN7JGZlYXR1cmV9ZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvIDFkcHB4fSknO1xuICAgICAgJG1vejogJygjeyRmZWF0dXJlfS1tb3otZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvIDFkcHB4fSknO1xuICAgICAgJGZhbGxiYWNrOiAnKCN7JGZlYXR1cmV9cmVzb2x1dGlvbjogI3skdmFsdWUgLyAxZHBweCAqIDk2ZHBpfSknO1xuICAgICAgLy8gQXBwZW5kIHRvIG91dHB1dFxuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRzdGFuZGFyZCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICR3ZWJraXQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkbW96LCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJGZhbGxiYWNrLCBzcGFjZSk7XG4gICAgfVxuXG4gIH1cblxuICBAcmV0dXJuICRvdXRwdXQ7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1uby1xdWVyeSgkcXVlcnkpIHtcbiAgQGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSAnbGlzdCcge1xuICAgICRrZXl3b3JkOiBudGgoJHF1ZXJ5LCAxKTtcblxuICAgIEBpZiB0eXBlLW9mKCRrZXl3b3JkKSA9PSAnc3RyaW5nJyBhbmQgKCRrZXl3b3JkID09ICduby1xdWVyeScgb3IgJGtleXdvcmQgPT0gJ25vIHF1ZXJ5JyBvciAka2V5d29yZCA9PSAnZmFsbGJhY2snKSB7XG4gICAgICBAcmV0dXJuIG50aCgkcXVlcnksIDIpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEZWZhdWx0IHRoZSBCcmVha3BvaW50cyB2YXJpYWJsZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludHM6ICgpICFkZWZhdWx0O1xuJEJSRUFLUE9JTlRTOiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXNwb25kLXRvIEFQSSBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gcmVzcG9uZC10bygkY29udGV4dCwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaWYgbGVuZ3RoKCRicmVha3BvaW50cykgPiAwIGFuZCBsZW5ndGgoJEJSRUFLUE9JTlRTKSA9PSAwIHtcbiAgICBAd2FybiBcIkluIG9yZGVyIHRvIGF2b2lkIHZhcmlhYmxlIG5hbWVzcGFjZSBjb2xsaXNpb25zLCB3ZSBoYXZlIHVwZGF0ZWQgdGhlIHdheSB0byBhZGQgYnJlYWtwb2ludHMgZm9yIHJlc3BvbmQtdG8uIFBsZWFzZSBjaGFuZ2UgYWxsIGluc3RhbmNlcyBvZiBgJGJyZWFrcG9pbnRzOiBhZGQtYnJlYWtwb2ludCgpYCB0byBgQGluY2x1ZGUgYWRkLWJyZWFrcG9pbnQoKWAuIFRoZSBgYWRkLWJyZWFrcG9pbnQoKWAgZnVuY3Rpb24gd2lsbCBiZSBkZXByZWNhdGVkIGluIGEgZnV0dXJlIHJlbGVhc2UuXCI7XG4gICAgJEJSRUFLUE9JTlRTOiAkYnJlYWtwb2ludHMgIWdsb2JhbDtcbiAgICAkYnJlYWtwb2ludHM6ICgpICFnbG9iYWw7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkQlJFQUtQT0lOVFMpICE9ICdtYXAnIHtcbiAgICAvLyBKdXN0IGluIGNhc2Ugc29tZW9uZSB3cml0ZXMgZ2liYmVyaXNoIHRvIHRoZSAkYnJlYWtwb2ludHMgdmFyaWFibGUuXG4gICAgQHdhcm4gXCJZb3VyIGJyZWFrcG9pbnRzIGFyZW4ndCBhIG1hcCEgYHJlc3BvbmQtdG9gIGV4cGVjdHMgYSBtYXAuIFBsZWFzZSBjaGVjayB0aGUgdmFsdWUgb2YgJEJSRUFLUE9JTlRTIHZhcmlhYmxlLlwiO1xuICAgIEBjb250ZW50O1xuICB9XG4gIEBlbHNlIGlmIG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJGNvbnRleHQpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1hcC1nZXQoJEJSRUFLUE9JTlRTLCAkY29udGV4dCksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmIG5vdCBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRjb250ZXh0KSB7XG4gICAgQHdhcm4gXCJgI3skY29udGV4dH1gIGlzbid0IGEgZGVmaW5lZCBicmVha3BvaW50ISBQbGVhc2UgYWRkIGl0IHVzaW5nIGAkYnJlYWtwb2ludHM6IGFkZC1icmVha3BvaW50KGAjeyRjb250ZXh0fWAsICR2YWx1ZSk7YFwiO1xuICAgIEBjb250ZW50O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIllvdSBoYXZlbid0IGNyZWF0ZWQgYW55IGJyZWFrcG9pbnRzIHlldCEgTWFrZSBzb21lIGFscmVhZHkhIGBAaW5jbHVkZSBhZGQtYnJlYWtwb2ludCgkbmFtZSwgJGJrcHQpYFwiO1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQWRkIEJyZWFrcG9pbnQgdG8gQnJlYWtwb2ludHNcbi8vIFRPRE86IFJlbW92ZSBmdW5jdGlvbiBpbiBuZXh0IHJlbGVhc2Vcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGFkZC1icmVha3BvaW50KCRuYW1lLCAkYmtwdCwgJG92ZXJ3cml0ZTogZmFsc2UpIHtcbiAgJG91dHB1dDogKCRuYW1lOiAkYmtwdCk7XG5cbiAgQGlmIGxlbmd0aCgkYnJlYWtwb2ludHMpID09IDAge1xuICAgIEByZXR1cm4gJG91dHB1dDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJG5hbWUpIGFuZCAkb3ZlcndyaXRlICE9IHRydWUge1xuICAgICAgQHdhcm4gXCJZb3UgYWxyZWFkeSBoYXZlIGEgYnJlYWtwb2ludCBuYW1lZCBgI3skbmFtZX1gLCBwbGVhc2UgY2hvb3NlIGFub3RoZXIgYnJlYWtwb2ludCBuYW1lLCBvciBwYXNzIGluIGAkb3ZlcndyaXRlOiB0cnVlYCB0byBvdmVyd3JpdGUgdGhlIHByZXZpb3VzIGJyZWFrcG9pbnQuXCI7XG4gICAgICBAcmV0dXJuICRicmVha3BvaW50cztcbiAgICB9XG4gICAgQGVsc2UgaWYgbm90IG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJG5hbWUpIG9yICRvdmVyd3JpdGUgPT0gdHJ1ZSB7XG4gICAgICBAcmV0dXJuIG1hcC1tZXJnZSgkYnJlYWtwb2ludHMsICRvdXRwdXQpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gYWRkLWJyZWFrcG9pbnQoJG5hbWUsICRia3B0LCAkb3ZlcndyaXRlOiBmYWxzZSkge1xuICAkb3V0cHV0OiAoJG5hbWU6ICRia3B0KTtcblxuICBAaWYgbGVuZ3RoKCRCUkVBS1BPSU5UUykgPT0gMCB7XG4gICAgJEJSRUFLUE9JTlRTOiAkb3V0cHV0ICFnbG9iYWw7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRuYW1lKSBhbmQgJG92ZXJ3cml0ZSAhPSB0cnVlIHtcbiAgICAgIEB3YXJuIFwiWW91IGFscmVhZHkgaGF2ZSBhIGJyZWFrcG9pbnQgbmFtZWQgYCN7JG5hbWV9YCwgcGxlYXNlIGNob29zZSBhbm90aGVyIGJyZWFrcG9pbnQgbmFtZSwgb3IgcGFzcyBpbiBgJG92ZXJ3cml0ZTogdHJ1ZWAgdG8gb3ZlcndyaXRlIHRoZSBwcmV2aW91cyBicmVha3BvaW50LlwiO1xuICAgICAgJEJSRUFLUE9JTlRTOiAkQlJFQUtQT0lOVFMgIWdsb2JhbDtcbiAgICB9XG4gICAgQGVsc2UgaWYgbm90IG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJG5hbWUpIG9yICRvdmVyd3JpdGUgPT0gdHJ1ZSB7XG4gICAgICAkQlJFQUtQT0lOVFM6IG1hcC1tZXJnZSgkQlJFQUtQT0lOVFMsICRvdXRwdXQpICFnbG9iYWw7XG4gICAgfVxuICB9XG59XG5cbkBmdW5jdGlvbiBnZXQtYnJlYWtwb2ludCgkbmFtZTogZmFsc2UpIHtcbiAgQGlmICRuYW1lID09IGZhbHNlIHtcbiAgICBAcmV0dXJuICRCUkVBS1BPSU5UUztcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRCUkVBS1BPSU5UUywgJG5hbWUpO1xuICB9XG59XG4iLCJAbWl4aW4gbGVnYWN5LXNldHRpbmdzLXdhcm5pbmcge1xuICAkbGVnYWN5VmFyczogKFxuICAgICdkZWZhdWx0LW1lZGlhJzogJ2RlZmF1bHQgbWVkaWEnLFxuICAgICdkZWZhdWx0LWZlYXR1cmUnOiAnZGVmYXVsdCBmZWF0dXJlJyxcbiAgICAnZm9yY2UtbWVkaWEtYWxsJzogJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJyxcbiAgICAndG8tZW1zJzogJ3RvIGVtcycsXG4gICAgJ3Jlc29sdXRpb25zJzogJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycsXG4gICAgJ25vLXF1ZXJpZXMnOiAnbm8gcXVlcmllcycsXG4gICAgJ25vLXF1ZXJ5LWZhbGxiYWNrcyc6ICdubyBxdWVyeSBmYWxsYmFja3MnLFxuICAgICdiYXNlLWZvbnQtc2l6ZSc6ICdiYXNlIGZvbnQgc2l6ZScsXG4gICAgJ2xlZ2FjeS1zeW50YXgnOiAnbGVnYWN5IHN5bnRheCdcbiAgKTtcblxuICBAZWFjaCAkbGVnYWN5LCAkbmV3IGluICRsZWdhY3lWYXJzIHtcbiAgICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC0nICsgJGxlZ2FjeSkge1xuICAgICAgQHdhcm4gXCJJbiBvcmRlciB0byBhdm9pZCB2YXJpYWJsZSBuYW1zcGFjZSBjb2xsaXNpb25zLCB3ZSBoYXZlIHVwZGF0ZWQgdGhlIHdheSB0byBjaGFuZ2Ugc2V0dGluZ3MgZm9yIEJyZWFrcG9pbnQuIFBsZWFzZSBjaGFuZ2UgYWxsIGluc3RhbmNlcyBvZiBgJGJyZWFrcG9pbnQtI3skbGVnYWN5fToge3tzZXR0aW5nfX1gIHRvIGBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnI3skbmV3fScsIHt7c2V0dGluZ319KWAuIFZhcmlhYmxlIHNldHRpbmdzLCBhcyB3ZWxsIGFzIHRoaXMgd2FybmluZyB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS5cIlxuICAgIH1cbiAgfTtcblxuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gSGFuZCBjb3JyZWN0IGVhY2ggc2V0dGluZ1xuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtZGVmYXVsdC1tZWRpYScpIGFuZCAkYnJlYWtwb2ludC1kZWZhdWx0LW1lZGlhICE9IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdkZWZhdWx0IG1lZGlhJywgJGJyZWFrcG9pbnQtZGVmYXVsdC1tZWRpYSk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtZGVmYXVsdC1mZWF0dXJlJykgYW5kICRicmVha3BvaW50LWRlZmF1bHQtZmVhdHVyZSAhPSBicmVha3BvaW50LWdldCgnZGVmYXVsdCBmZWF0dXJlJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdkZWZhdWx0IGZlYXR1cmUnLCAkYnJlYWtwb2ludC1kZWZhdWx0LWZlYXR1cmUpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWZvcmNlLW1lZGlhLWFsbCcpIGFuZCAkYnJlYWtwb2ludC1mb3JjZS1tZWRpYS1hbGwgIT0gYnJlYWtwb2ludC1nZXQoJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdmb3JjZSBhbGwgbWVkaWEgdHlwZScsICRicmVha3BvaW50LWZvcmNlLW1lZGlhLWFsbCk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtdG8tZW1zJykgYW5kICRicmVha3BvaW50LXRvLWVtcyAhPSBicmVha3BvaW50LWdldCgndG8gZW1zJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCd0byBlbXMnLCAkYnJlYWtwb2ludC10by1lbXMpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LXJlc29sdXRpb25zJykgYW5kICRicmVha3BvaW50LXJlc29sdXRpb25zICE9IGJyZWFrcG9pbnQtZ2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycsICRicmVha3BvaW50LXJlc29sdXRpb25zKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1uby1xdWVyaWVzJykgYW5kICRicmVha3BvaW50LW5vLXF1ZXJpZXMgIT0gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJpZXMnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ25vIHF1ZXJpZXMnLCAkYnJlYWtwb2ludC1uby1xdWVyaWVzKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3MnKSBhbmQgJGJyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzICE9IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycsICRicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrcyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtYmFzZS1mb250LXNpemUnKSBhbmQgJGJyZWFrcG9pbnQtYmFzZS1mb250LXNpemUgIT0gYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdiYXNlIGZvbnQgc2l6ZScsICRicmVha3BvaW50LWJhc2UtZm9udC1zaXplKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1sZWdhY3ktc3ludGF4JykgYW5kICRicmVha3BvaW50LWxlZ2FjeS1zeW50YXggIT0gYnJlYWtwb2ludC1nZXQoJ2xlZ2FjeSBzeW50YXgnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2xlZ2FjeSBzeW50YXgnLCAkYnJlYWtwb2ludC1sZWdhY3ktc3ludGF4KTtcbiAgfVxufSIsIi8vIFN1c3lcbi8vID09PT1cblxuQGltcG9ydCAnc3VzeS9sYW5ndWFnZS9zdXN5JztcbiIsIi8vIFN1c3kgTmV4dCBTeW50YXhcbi8vID09PT09PT09PT09PT09PT1cblxuJHN1c3ktdmVyc2lvbjogMi4xO1xuXG5AaW1wb3J0IFwiLi4vc3VcIjtcbkBpbXBvcnQgXCIuLi9vdXRwdXQvZmxvYXRcIjtcblxuQGltcG9ydCBcInN1c3kvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJzdXN5L3ZhbGlkYXRpb25cIjtcbkBpbXBvcnQgXCJzdXN5L2dyaWRzXCI7XG5AaW1wb3J0IFwic3VzeS9ib3gtc2l6aW5nXCI7XG5AaW1wb3J0IFwic3VzeS9jb250ZXh0XCI7XG5AaW1wb3J0IFwic3VzeS9iYWNrZ3JvdW5kXCI7XG5AaW1wb3J0IFwic3VzeS9jb250YWluZXJcIjtcbkBpbXBvcnQgXCJzdXN5L3NwYW5cIjtcbkBpbXBvcnQgXCJzdXN5L2d1dHRlcnNcIjtcbkBpbXBvcnQgXCJzdXN5L2lzb2xhdGVcIjtcbkBpbXBvcnQgXCJzdXN5L2dhbGxlcnlcIjtcbkBpbXBvcnQgXCJzdXN5L3Jvd3NcIjtcbkBpbXBvcnQgXCJzdXN5L21hcmdpbnNcIjtcbkBpbXBvcnQgXCJzdXN5L3BhZGRpbmdcIjtcbkBpbXBvcnQgXCJzdXN5L2JsZWVkXCI7XG5AaW1wb3J0IFwic3VzeS9icmVha3BvaW50LXBsdWdpblwiO1xuIiwiLy8gU3Vcbi8vID09XG5cbkBpbXBvcnQgXCJzdS91dGlsaXRpZXNcIjtcbkBpbXBvcnQgXCJzdS9zZXR0aW5nc1wiO1xuQGltcG9ydCBcInN1L3ZhbGlkYXRpb25cIjtcbkBpbXBvcnQgXCJzdS9ncmlkXCI7XG4iLCIvLyBNYXAgRnVuY3Rpb25zXG4vLyA9PT09PT09PT09PT09XG5cblxuLy8gVHJ1bmNhdGUgTGlzdFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gLSBSZXR1cm4gYSBsaXN0LCB0cnVuY2F0ZWQgdG8gYSBnaXZlbiBsZW5ndGhcbkBmdW5jdGlvbiBfc3VzeS10cnVuY2F0ZS1saXN0KFxuICAkbGlzdCxcbiAgJGxlbmd0aFxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIGxlbmd0aCgkbGlzdCkge1xuICAgICRfcmV0dXJuOiBpZigkaSA8PSAkbGVuZ3RoLCBhcHBlbmQoJF9yZXR1cm4sIG50aCgkbGlzdCwgJGkpKSwgJF9yZXR1cm4pO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIEdldFxuLy8gLS0tLS0tLS1cbi8vIC0gUmV0dXJuIGEgdmFsdWUgZGVlcCBpbiBuZXN0ZWQgbWFwc1xuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtZ2V0KFxuICAkbWFwLFxuICAka2V5cy4uLlxuKSB7XG4gICRfcmV0dXJuOiAkbWFwO1xuXG4gIEBlYWNoICRrZXkgaW4gJGtleXMge1xuICAgIEBpZiB0eXBlLW9mKCRfcmV0dXJuKSA9PSBtYXAge1xuICAgICAgJF9yZXR1cm46IG1hcC1nZXQoJF9yZXR1cm4sICRrZXkpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBTZXRcbi8vIC0tLS0tLS0tXG4vLyAtIFNldCBhIHZhbHVlIGRlZXAgaW4gbmVzdGVkIG1hcHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLXNldChcbiAgJG1hcCxcbiAgJGtleXMtdmFsdWUuLi5cbikge1xuICAkX3ZhbHVlOiBudGgoJGtleXMtdmFsdWUsIC0xKTtcbiAgJF9rZXlzOiBfc3VzeS10cnVuY2F0ZS1saXN0KCRrZXlzLXZhbHVlLCBsZW5ndGgoJGtleXMtdmFsdWUpIC0gMSk7XG4gICRfbGVuZ3RoOiBsZW5ndGgoJF9rZXlzKTtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJF9sZW5ndGgge1xuICAgICRfbjogMCAtICRpO1xuICAgICRfbGV2ZWw6IF9zdXN5LXRydW5jYXRlLWxpc3QoJF9rZXlzLCAkX2xlbmd0aCArICRfbik7XG4gICAgJF9sZXZlbDogX3N1c3ktZGVlcC1nZXQoJG1hcCwgJF9sZXZlbC4uLik7XG4gICAgJF9tZXJnZTogbnRoKCRfa2V5cywgJF9uKTtcbiAgICAkX21lcmdlOiAoJF9tZXJnZTogJF92YWx1ZSk7XG4gICAgJF9yZXR1cm46IGlmKCRfbGV2ZWwsIG1hcC1tZXJnZSgkX2xldmVsLCAkX21lcmdlKSwgJF9tZXJnZSk7XG4gICAgJF92YWx1ZTogJF9yZXR1cm47XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgTWVyZ2Vcbi8vIC0tLS0tLS0tLS1cbi8vIFJldHVybiAyIG9iamVjdHMgb2YgYW55IGRlcHRoLCBtZXJnZWRcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLW1lcmdlKFxuICAkbWFwMSxcbiAgJG1hcDJcbikge1xuXG4gIEBpZiB0eXBlLW9mKCRtYXAxKSAhPSBtYXAgb3IgdHlwZS1vZigkbWFwMikgIT0gbWFwIHtcbiAgICAkbWFwMTogJG1hcDI7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkbWFwMiB7XG4gICAgICAkX25ldzogKCRrZXk6IF9zdXN5X2RlZXAtbWVyZ2UobWFwLWdldCgkbWFwMSwgJGtleSksICR2YWx1ZSkpO1xuICAgICAgJG1hcDE6IG1hcC1tZXJnZSgkbWFwMSwgJF9uZXcpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJG1hcDE7XG59XG5cblxuLy8gRGVlcCBIYXMtS2V5XG4vLyAtLS0tLS0tLS0tLS1cbi8vIC0gUmV0dXJuIHRydWUgaWYgYSBkZWVwIGtleSBleGlzdHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLWhhcy1rZXkoXG4gICRtYXAsXG4gICRrZXlzLi4uXG4pIHtcbiAgJF9yZXR1cm46IG51bGw7XG4gICRfc3RvcDogZmFsc2U7XG5cbiAgQGVhY2ggJGtleSBpbiAka2V5cyB7XG4gICAgQGlmIG5vdCgkX3N0b3ApIHtcbiAgICAgICRfcmV0dXJuOiBtYXAtaGFzLWtleSgkbWFwLCAka2V5KTtcbiAgICB9XG5cbiAgICBAaWYgJF9yZXR1cm4ge1xuICAgICAgJG1hcDogbWFwLWdldCgkbWFwLCAka2V5KTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfc3RvcDogdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gU2V0dGluZ3Ncbi8vID09PT09PT09XG5cbi8vIFZlcnNpb25cbi8vIC0tLS0tLS1cbiRzdS12ZXJzaW9uOiAxLjE7XG5cblxuLy8gRGVmYXVsdCBTZXR0aW5nc1xuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogVGhlIGJhc2ljIHNldHRpbmdzXG4kc3VzeS1kZWZhdWx0czogKFxuICBjb2x1bW5zOiA0LFxuICBndXR0ZXJzOiAuMjUsXG4pO1xuXG5cbi8vIFVzZXIgU2V0dGluZ3Ncbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gRGVmaW5lIHRoZSAkc3VzeSB2YXJpYWJsZSB3aXRoIGEgbWFwIG9mIHlvdXIgb3duIHNldHRpbmdzLlxuLy8gLSBTZXQgRUlUSEVSICRjb2x1bW4td2lkdGggT1IgJGNvbnRhaW5lclxuLy8gLSBVc2UgJGNvbHVtbi13aWR0aCBmb3Igc3RhdGljIGxheW91dHNcbiRzdXN5OiAoKSAhZGVmYXVsdDtcblxuXG4vLyBTdXN5IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBQUklWQVRFOiBBZGQgZGVmYXVsdHMgdG8gU3VzeVxuQG1peGluIHN1c3ktZGVmYXVsdHMoXG4gICRkZWZhdWx0c1xuKSB7XG4gICRzdXN5LWRlZmF1bHRzOiBtYXAtbWVyZ2UoJHN1c3ktZGVmYXVsdHMsICRkZWZhdWx0cykgIWdsb2JhbDtcbn1cblxuXG4vLyBTdXN5IFNldFxuLy8gLS0tLS0tLS1cbi8vIENoYW5nZSBvbmUgc2V0dGluZ1xuLy8gLSAka2V5ICAgOiBzZXR0aW5nIG5hbWVcbi8vIC0gJHZhbHVlIDogc2V0dGluZyB2YWx1ZVxuQG1peGluIHN1c3ktc2V0KFxuICAka2V5LXZhbHVlLi4uXG4pIHtcbiAgJHN1c3k6IF9zdXN5LWRlZXAtc2V0KCRzdXN5LCAka2V5LXZhbHVlLi4uKSAhZ2xvYmFsO1xufVxuXG5cbi8vIFN1c3kgR2V0XG4vLyAtLS0tLS0tLVxuLy8gUmV0dXJuIG9uZSBzZXR0aW5nIGZyb20gYSBncmlkXG4vLyAtICRrZXkgICAgIDogPGtleXdvcmQ+XG4vLyAtICRsYXlvdXQgIDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIHN1c3ktZ2V0KFxuICAka2V5LFxuICAkbGF5b3V0OiBtYXAtbWVyZ2UoJHN1c3ktZGVmYXVsdHMsICRzdXN5KVxuKSB7XG4gICRsYXlvdXQ6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gICRfb3B0aW9uczogJGxheW91dCAkc3VzeSAkc3VzeS1kZWZhdWx0cztcbiAgJF9icmVhazogZmFsc2U7XG4gICRfcmV0dXJuOiBudWxsO1xuXG4gIEBlYWNoICRvcHQgaW4gJF9vcHRpb25zIHtcbiAgICBAaWYgdHlwZS1vZigkb3B0KSA9PSBtYXAgYW5kIG5vdCgkX2JyZWFrKSB7XG4gICAgICAkX2tleXNldDogX3N1c3ktZGVlcC1oYXMta2V5KCRvcHQsICRrZXkuLi4pO1xuICAgICAgQGlmICRfa2V5c2V0IHtcbiAgICAgICAgJF9yZXR1cm46IF9zdXN5LWRlZXAtZ2V0KCRvcHQsICRrZXkuLi4pO1xuICAgICAgICAkX2JyZWFrOiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBNYXRoIFZhbGlkYXRpb25cbi8vID09PT09PT09PT09PT09PVxuXG5cbi8vIFZhbGlkIENvbHVtbnNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIHRoYXQgYSBjb2x1bW4gc2V0dGluZyBpcyB2YWxpZC5cbkBmdW5jdGlvbiB2YWxpZC1jb2x1bW5zKFxuICAkY29sdW1ucyxcbiAgJHNpbGVudDogZmFsc2Vcbikge1xuICAkdHlwZTogdHlwZS1vZigkY29sdW1ucyk7XG4gICRyZXR1cm46IG51bGw7XG5cbiAgQGlmICR0eXBlID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGNvbHVtbnMpIHtcbiAgICAkcmV0dXJuOiAkY29sdW1ucztcbiAgfSBAZWxzZSBpZiAkdHlwZSA9PSBsaXN0IHtcbiAgICAkZmFpbDogbnVsbDtcbiAgICBAZWFjaCAkY29sIGluICRjb2x1bW5zIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRjb2wpID09IG51bWJlciB7XG4gICAgICAgICRmYWlsOiAkZmFpbCBvciBpZih1bml0bGVzcygkY29sKSwgbnVsbCwgdHJ1ZSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJGZhaWw6IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgICRyZXR1cm46IGlmKCRmYWlsLCAkcmV0dXJuLCAkY29sdW1ucyk7XG4gIH1cblxuICBAaWYgJHJldHVybiAhPSAkY29sdW1ucyBhbmQgbm90KCRzaWxlbnQpIHtcbiAgICAkcmV0dXJuOiBudWxsO1xuICAgICR3YXJuOiAnJGNvbHVtbnMgbXVzdCBiZSBhIHVuaXRsZXNzIG51bWJlciBvciBsaXN0IG9mIHVuaXRsZXNzIG51bWJlcnMuJztcbiAgICBAd2FybiAkd2FybiArICcgQ3VycmVudCB2YWx1ZSBbI3skdHlwZX1dOiAjeyRjb2x1bW5zfSc7XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG5cblxuLy8gVmFsaWQgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgdGhhdCBhIGd1dHRlciBzZXR0aW5nIGlzIHZhbGlkLlxuQGZ1bmN0aW9uIHZhbGlkLWd1dHRlcnMoXG4gICRndXR0ZXJzLFxuICAkc2lsZW50OiBmYWxzZVxuKSB7XG4gICR0eXBlOiB0eXBlLW9mKCRndXR0ZXJzKTtcbiAgJHJldHVybjogbnVsbDtcblxuICBAaWYgJHR5cGUgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkZ3V0dGVycykge1xuICAgICRyZXR1cm46ICRndXR0ZXJzO1xuICB9IEBlbHNlIGlmIG5vdCgkc2lsZW50KSB7XG4gICAgJHdhcm46ICckZ3V0dGVycyBtdXN0IGJlIGEgdW5pdGxlc3MgbnVtYmVyLic7XG4gICAgQHdhcm4gJHdhcm4gKyAnIEN1cnJlbnQgdmFsdWUgWyN7JHR5cGV9XTogI3skZ3V0dGVyc30nO1xuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuIiwiLy8gQ29sdW1uIG1hdGhcbi8vID09PT09PT09PT09XG5cblxuLy8gSXMgU3ltbWV0cmljYWxcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm5zIHRydWUgaWYgYSBncmlkIGlzIHN5bW1ldHJpY2FsLlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuQGZ1bmN0aW9uIGlzLXN5bW1ldHJpY2FsKFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gIEByZXR1cm4gaWYodHlwZS1vZigkY29sdW1ucykgPT0gbnVtYmVyLCAkY29sdW1ucywgbnVsbCk7XG59XG5cblxuLy8gU3VzeSBDb3VudFxuLy8gLS0tLS0tLS0tLVxuLy8gRmluZCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgaW4gYSBnaXZlbiBsYXlvdXRcbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBzdXN5LWNvdW50KFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gIEByZXR1cm4gaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpIG9yIGxlbmd0aCgkY29sdW1ucyk7XG59XG5cblxuLy8gU3VzeSBTdW1cbi8vIC0tLS0tLS0tXG4vLyBGaW5kIHRoZSB0b3RhbCBzdW0gb2YgY29sdW1uLXVuaXRzIGluIGEgbGF5b3V0XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG4vLyAtIFskZ3V0dGVyc10gICA6IDxyYXRpbz5cbi8vIC0gWyRzcHJlYWRdICAgIDogZmFsc2UvbmFycm93IHwgd2lkZSB8IHdpZGVyXG5AZnVuY3Rpb24gc3VzeS1zdW0oXG4gICRjb2x1bW5zICA6IHN1c3ktZ2V0KGNvbHVtbnMpLFxuICAkZ3V0dGVycyAgOiBzdXN5LWdldChndXR0ZXJzKSxcbiAgJHNwcmVhZCAgIDogZmFsc2Vcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRndXR0ZXJzOiB2YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcblxuICAkc3ByZWFkOiBpZigkc3ByZWFkID09IHdpZGUsIDAsIGlmKCRzcHJlYWQgPT0gd2lkZXIsIDEsIC0xKSk7XG4gICRndXR0ZXItc3VtOiAoc3VzeS1jb3VudCgkY29sdW1ucykgKyAkc3ByZWFkKSAqICRndXR0ZXJzO1xuICAkY29sdW1uLXN1bTogaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpO1xuXG4gIEBpZiBub3QoJGNvbHVtbi1zdW0pIHtcbiAgICBAZWFjaCAkY29sdW1uIGluICRjb2x1bW5zIHtcbiAgICAgICRjb2x1bW4tc3VtOiAoJGNvbHVtbi1zdW0gb3IgMCkgKyAkY29sdW1uO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGNvbHVtbi1zdW0gKyAkZ3V0dGVyLXN1bTtcbn1cblxuXG4vLyBTdXN5IFNsaWNlXG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBzdWJzZXQgb2YgY29sdW1ucyBhdCBhIGdpdmVuIGxvY2F0aW9uLlxuLy8gLSAkc3BhbiAgICAgICAgOiA8bnVtYmVyPlxuLy8gLSAkbG9jYXRpb24gICAgOiA8bnVtYmVyPlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuQGZ1bmN0aW9uIHN1c3ktc2xpY2UoXG4gICRzcGFuLFxuICAkbG9jYXRpb24sXG4gICRjb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zKVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgJHN1Yi1jb2x1bW5zOiAkc3BhbjtcblxuICBAaWYgbm90KGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKSkge1xuICAgICRsb2NhdGlvbjogJGxvY2F0aW9uIG9yIDE7XG4gICAgJHN1Yi1jb2x1bW5zOiAoKTtcbiAgICBAZm9yICRpIGZyb20gJGxvY2F0aW9uIHRvICgkbG9jYXRpb24gKyAkc3Bhbikge1xuICAgICAgJHN1Yi1jb2x1bW5zOiBhcHBlbmQoJHN1Yi1jb2x1bW5zLCBudGgoJGNvbHVtbnMsICRpKSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkc3ViLWNvbHVtbnM7XG59XG5cblxuLy8gU3VzeVxuLy8gLS0tLVxuLy8gRmluZCB0aGUgc3VtIG9mIGEgY29sdW1uLXNwYW4uXG4vLyAtICRzcGFuICAgICAgICA6IDxudW1iZXI+XG4vLyAtICRsb2NhdGlvbiAgICA6IDxudW1iZXI+XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG4vLyAtIFskZ3V0dGVyc10gICA6IDxyYXRpbz5cbi8vIC0gWyRzcHJlYWRdICAgIDogZmFsc2UvbmFycm93IHwgd2lkZSB8IHdpZGVyXG5AZnVuY3Rpb24gc3VzeShcbiAgJHNwYW4sXG4gICRsb2NhdGlvbiAgICAgOiBmYWxzZSxcbiAgJGNvbHVtbnMgICAgICA6IHN1c3ktZ2V0KGNvbHVtbnMpLFxuICAkZ3V0dGVycyAgICAgIDogc3VzeS1nZXQoZ3V0dGVycyksXG4gICRzcHJlYWQgICAgICAgOiBmYWxzZVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgJGd1dHRlcnM6IHZhbGlkLWd1dHRlcnMoJGd1dHRlcnMpO1xuICAkc3Bhbjogc3VzeS1zbGljZSgkc3BhbiwgJGxvY2F0aW9uLCAkY29sdW1ucyk7XG5cbiAgQHJldHVybiBzdXN5LXN1bSgkc3BhbiwgJGd1dHRlcnMsICRzcHJlYWQpO1xufVxuIiwiLy8gRmxvYXQgQVBJXG4vLyA9PT09PT09PT1cblxuQGltcG9ydCBcInNoYXJlZFwiO1xuXG5AaW1wb3J0IFwiZmxvYXQvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwiZmxvYXQvc3BhblwiO1xuQGltcG9ydCBcImZsb2F0L2VuZFwiO1xuQGltcG9ydCBcImZsb2F0L2lzb2xhdGVcIjtcbiIsIi8vIFNoYXJlZCBBUElcbi8vID09PT09PT09PT1cblxuQGltcG9ydCBcInN1cHBvcnRcIjtcblxuQGltcG9ydCBcInNoYXJlZC9pbnNwZWN0XCI7XG5AaW1wb3J0IFwic2hhcmVkL291dHB1dFwiO1xuQGltcG9ydCBcInNoYXJlZC9kaXJlY3Rpb25cIjtcbkBpbXBvcnQgXCJzaGFyZWQvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInNoYXJlZC9jb250YWluZXJcIjtcbkBpbXBvcnQgXCJzaGFyZWQvbWFyZ2luc1wiO1xuQGltcG9ydCBcInNoYXJlZC9wYWRkaW5nXCI7XG5cblxuXG4iLCIvLyBTdXN5IEJyb3dzZXIgU3VwcG9ydFxuLy8gPT09PT09PT09PT09PT09PT09PT1cblxuQGltcG9ydCBcInN1cHBvcnQvc3VwcG9ydFwiO1xuQGltcG9ydCBcInN1cHBvcnQvcHJlZml4XCI7XG5AaW1wb3J0IFwic3VwcG9ydC9iYWNrZ3JvdW5kXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9ib3gtc2l6aW5nXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9yZW1cIjtcbkBpbXBvcnQgXCJzdXBwb3J0L2NsZWFyZml4XCI7XG4iLCIvLyBCcm93c2VyIFN1cHBvcnRcbi8vID09PT09PT09PT09PT09PVxuXG4vLyBTdXN5IFN1cHBvcnQgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIHVzZS1jdXN0b206IChcbiAgICBjbGVhcmZpeDogZmFsc2UsXG4gICAgYmFja2dyb3VuZC1pbWFnZTogdHJ1ZSxcbiAgICBiYWNrZ3JvdW5kLW9wdGlvbnM6IGZhbHNlLFxuICAgIGJyZWFrcG9pbnQ6IHRydWUsXG4gICAgYm94LXNpemluZzogdHJ1ZSxcbiAgICByZW06IHRydWUsXG4gICksXG4pKTtcblxuXG4vLyBTdXN5IFN1cHBvcnQgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlbmQgcHJvcGVydHktdmFsdWUgcGFpcnMgdG8gdGhlIHByb3BlciBzdXBwb3J0IG1vZHVsZXMuXG4vLyAtICRwcm9wICA6IDxjc3MgcHJvcGVydHk+XG4vLyAtICR2YWwgICA6IDxjc3MgdmFsdWU+XG5AbWl4aW4gc3VzeS1zdXBwb3J0KFxuICAkcHJvcCxcbiAgJHZhbFxuKSB7XG4gIC8vIEJhY2tncm91bmQgU3VwcG9ydFxuICBAaWYgJHByb3AgPT0gYmFja2dyb3VuZC1pbWFnZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLWltYWdlKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtc2l6ZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLXNpemUoJHZhbCk7XG4gIH0gQGVsc2UgaWYgJHByb3AgPT0gYmFja2dyb3VuZC1vcmlnaW4ge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1vcmlnaW4oJHZhbCk7XG4gIH0gQGVsc2UgaWYgJHByb3AgPT0gYmFja2dyb3VuZC1jbGlwIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtY2xpcCgkdmFsKTtcbiAgfVxuXG4gIC8vIEJveC1TaXppbmcgU3VwcG9ydFxuICBAZWxzZSBpZiAkcHJvcCA9PSBib3gtc2l6aW5nIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJveC1zaXppbmcoJHZhbCk7XG4gIH1cblxuICAvLyBSZW0gU3VwcG9ydFxuICBAZWxzZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1yZW0oJHByb3AsICR2YWwpO1xuICB9XG59XG5cblxuLy8gU3VzeSBTdXBwb3J0IFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3Igc3VwcG9ydCBvZiBhIGZlYXR1cmUuXG4vLyAtICRmZWF0dXJlICAgICAgIDogPHN0cmluZz5cbi8vICAgICAgICAgICAgICAgICAgICAtIGUuZyBcInJlbVwiIG9yIFwiYm94LXNpemluZ1wiXG4vLyAtICRyZXF1aXJlbWVudHMgIDogPG1hcD5cbi8vICAgICAgICAgICAgICAgICAgICAtIGUuZyAodmFyaWFibGU6IHJlbS13aXRoLXB4LWZhbGxiYWNrLCBtaXhpbjogcmVtKVxuLy8gLSAkd2FybiAgICAgICAgICA6IDxib29sPlxuQGZ1bmN0aW9uIHN1c3ktc3VwcG9ydChcbiAgJGZlYXR1cmUsXG4gICRyZXF1aXJlbWVudHM6ICgpLFxuICAkd2FybjogdHJ1ZVxuKSB7XG4gICRfc3VwcG9ydDogc3VzeS1nZXQodXNlLWN1c3RvbSAkZmVhdHVyZSk7XG5cbiAgQGlmICRfc3VwcG9ydCB7XG4gICAgJF9mYWlsOiBmYWxzZTtcblxuICAgIEBlYWNoICRfdHlwZSwgJF9yZXEgaW4gJHJlcXVpcmVtZW50cyB7XG4gICAgICBAZWFjaCAkX2kgaW4gJF9yZXEge1xuXG4gICAgICAgICRfcGFzcyA6IG51bGw7XG5cbiAgICAgICAgLy8gc2FzcyAzLjUgb3IgZ3JlYXRlclxuICAgICAgICBAaWYgZnVuY3Rpb24tZXhpc3RzKCdnZXQtZnVuY3Rpb24nKSB7XG4gICAgICAgICAgJF9wYXNzOiBjYWxsKGdldC1mdW5jdGlvbih1bnF1b3RlKFwiI3skX3R5cGV9LWV4aXN0c1wiKSksICRfaSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gc2FzcyAzLjQgb3IgbGVzc1xuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgJF9wYXNzOiBjYWxsKHVucXVvdGUoXCIjeyRfdHlwZX0tZXhpc3RzXCIpLCAkX2kpO1xuICAgICAgICB9XG5cbiAgICAgICAgQGlmIG5vdCgkX3Bhc3MpIHtcbiAgICAgICAgICAkX2ZhaWw6IHRydWU7XG4gICAgICAgICAgQGlmICR3YXJuIHtcbiAgICAgICAgICAgIEB3YXJuIFwiWW91IHJlcXVlc3RlZCBjdXN0b20gc3VwcG9ydCBvZiAjeyRmZWF0dXJlfSwgYnV0IHRoZSAjeyRfaX0gI3skX3R5cGV9IGlzIG5vdCBhdmFpbGFibGUuXCI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9zdXBwb3J0OiBpZigkX2ZhaWwsIGZhbHNlLCAkX3N1cHBvcnQpO1xuICB9XG5cbiAgQHJldHVybiAkX3N1cHBvcnQ7XG59XG4iLCIvLyBTdXN5IFByZWZpeFxuLy8gPT09PT09PT09PT1cblxuLy8gUHJlZml4XG4vLyAtLS0tLS1cbi8vIE91dHB1dCBzaW1wbGUgcHJlZml4ZWQgcHJvcGVydGllcy5cbi8vIC0gJHByb3AgICAgICA6IDxjc3MgcHJvcGVydHk+XG4vLyAtICR2YWwgICAgICAgOiA8Y3NzIHZhbHVlPlxuLy8gLSBbJHByZWZpeF0gIDogPGJyb3dzZXIgcHJlZml4IGxpc3Q+XG5AbWl4aW4gc3VzeS1wcmVmaXgoXG4gICRwcm9wLFxuICAkdmFsLFxuICAkcHJlZml4OiBvZmZpY2lhbFxuKSB7XG4gIEBlYWNoICRmaXggaW4gJHByZWZpeCB7XG4gICAgJGZpeDogaWYoJGZpeCA9PSBvZmZpY2lhbCBvciBub3QoJGZpeCksICRwcm9wLCAnLSN7JGZpeH0tI3skcHJvcH0nKTtcbiAgICBAaW5jbHVkZSBzdXN5LXJlbSgkZml4LCAkdmFsKTtcbiAgfVxufVxuIiwiLy8gQmFja2dyb3VuZCBQcm9wZXJ0aWVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIEltYWdlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLWltYWdlPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1pbWFnZShcbiAgJGltYWdlXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLWltYWdlLCAobWl4aW46IGJhY2tncm91bmQtaW1hZ2UpLCAkd2FybjogZmFsc2UpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWltYWdlKCRpbWFnZS4uLik7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6ICRpbWFnZTtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgU2l6ZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1zaXplPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1zaXplKFxuICAkc2l6ZVxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtc2l6ZSkpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLXNpemUoJHNpemUpO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRzaXplO1xuICB9XG59XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBPcmlnaW5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLW9yaWdpbj5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtb3JpZ2luKFxuICAkb3JpZ2luXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1vcmlnaW4pKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1vcmlnaW4oJG9yaWdpbik7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtb3JpZ2luOiAkb3JpZ2luO1xuICB9XG59XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBDbGlwXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtY2xpcD5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtY2xpcChcbiAgJGNsaXBcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLWNsaXApKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1jbGlwKCRjbGlwKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1jbGlwOiAkY2xpcDtcbiAgfVxufVxuIiwiLy8gQm94IFNpemluZ1xuLy8gPT09PT09PT09PVxuXG4vLyBCb3ggU2l6aW5nXG4vLyAtLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJG1vZGVsOiA8Ym94LXNpemluZz5cbkBtaXhpbiBzdXN5LWJveC1zaXppbmcoXG4gICRtb2RlbDogY29udGVudC1ib3hcbikge1xuICBAaWYgJG1vZGVsIHtcbiAgICBAaWYgc3VzeS1zdXBwb3J0KGJveC1zaXppbmcsIChtaXhpbjogYm94LXNpemluZyksICR3YXJuOiBmYWxzZSkge1xuICAgICAgQGluY2x1ZGUgYm94LXNpemluZygkbW9kZWwpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHByZWZpeDogKG1veiwgd2Via2l0LCBvZmZpY2lhbCk7XG4gICAgICBAaW5jbHVkZSBzdXN5LXByZWZpeChib3gtc2l6aW5nLCAkbW9kZWwsICRwcmVmaXgpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gcmVtIFN1cHBvcnRcbi8vID09PT09PT09PT09XG5cbi8vIHJlbVxuLy8gLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3Igb3V0cHV0IGRpcmVjdGx5LlxuLy8gLSAkcHJvcCAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgOiA8Y3NzIHZhbHVlPlxuQG1peGluIHN1c3ktcmVtKFxuICAkcHJvcCxcbiAgJHZhbFxuKSB7XG4gICRfcmVxczogKFxuICAgIHZhcmlhYmxlOiByaHl0aG0tdW5pdCByZW0td2l0aC1weC1mYWxsYmFjayxcbiAgICBtaXhpbjogcmVtLFxuICApO1xuICBAaWYgc3VzeS1zdXBwb3J0KHJlbSwgJF9yZXFzLCAkd2FybjogZmFsc2UpIGFuZCAkcmh5dGhtLXVuaXQgPT0gcmVtIHtcbiAgICBAaW5jbHVkZSByZW0oJHByb3AsICR2YWwpO1xuICB9IEBlbHNlIHtcbiAgICAjeyRwcm9wfTogJHZhbDtcbiAgfVxufVxuIiwiLy8gU3VzeSBGYWxsYmFjayBDbGVhcmZpeFxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG5cbi8vIENsZWFyZml4XG4vLyAtLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG5AbWl4aW4gc3VzeS1jbGVhcmZpeCB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoY2xlYXJmaXgsIChtaXhpbjogY2xlYXJmaXgpKSB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIH0gQGVsc2Uge1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCIgXCI7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRGVidWdnaW5nXG4vLyA9PT09PT09PT1cblxuLy8gU3VzeSBJbnNwZWN0XG4vLyAtLS0tLS0tLS0tLS1cbi8vIE91dHB1dCBhcmd1bWVudHMgcGFzc2VkIHRvIGEgaW5zcGVjdC5cbi8vIC0gJG1peGluICA6IDxzdXN5IG1peGluPlxuLy8gLSAkaW5zcGVjICAgOiA8bWl4aW4gYXJndW1lbnRzPlxuXG5AbWl4aW4gc3VzeS1pbnNwZWN0KFxuICAkbWl4aW4sXG4gICRpbnNwZWN0XG4pIHtcbiAgJHNob3c6IGZhbHNlO1xuXG4gIEBlYWNoICRpdGVtIGluICRpbnNwZWN0IHtcbiAgICBAaWYgaW5kZXgoJGl0ZW0sIGluc3BlY3QpIHtcbiAgICAgICRzaG93OiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkc2hvdyBvciBzdXN5LWdldChkZWJ1ZyBpbnNwZWN0KSB7XG4gICAgLXN1c3ktI3skbWl4aW59OiBpbnNwZWN0KCRpbnNwZWN0KTtcbiAgfVxufVxuIiwiLy8gT3V0cHV0XG4vLyA9PT09PT1cblxuLy8gT3V0cHV0XG4vLyAtLS0tLS1cbi8vIE91dHB1dCBDU1Mgd2l0aCBwcm9wZXIgYnJvd3NlciBzdXBwb3J0LlxuLy8gLSAkc3R5bGVzICA6IDxtYXAgb2YgY3NzIHByb3BlcnR5LXZhbHVlIHBhaXJzPlxuQG1peGluIG91dHB1dChcbiAgJHN0eWxlc1xuKSB7XG4gIEBlYWNoICRwcm9wLCAkdmFsIGluICRzdHlsZXMge1xuICAgIEBpbmNsdWRlIHN1c3ktc3VwcG9ydCgkcHJvcCwgJHZhbCk7XG4gIH1cbn1cbiIsIi8vIERpcmVjdGlvbiBIZWxwZXJzXG4vLyA9PT09PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEZsb3cgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgZmxvdzogbHRyLFxuKSk7XG5cbi8vIEdldCBEaXJlY3Rpb25cbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgJ2Zyb20nIG9yICd0bycgZGlyZWN0aW9uIG9mIGEgbHRyIG9yIHJ0bCBmbG93LlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuLy8gLSBbJGtleV0gICA6IGZyb20gfCB0b1xuQGZ1bmN0aW9uIGdldC1kaXJlY3Rpb24oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KSxcbiAgJGtleTogZnJvbVxuKSB7XG4gICRyZXR1cm46IGlmKCRmbG93ID09IHJ0bCwgKGZyb206IHJpZ2h0LCB0bzogbGVmdCksIChmcm9tOiBsZWZ0LCB0bzogcmlnaHQpKTtcbiAgQHJldHVybiBtYXAtZ2V0KCRyZXR1cm4sICRrZXkpO1xufVxuXG4vLyBUb1xuLy8gLS1cbi8vIFJldHVybiB0aGUgJ3RvJyBkaXJlY3Rpb24gb2YgYSBmbG93XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AZnVuY3Rpb24gdG8oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gIEByZXR1cm4gZ2V0LWRpcmVjdGlvbigkZmxvdywgdG8pO1xufVxuXG4vLyBGcm9tXG4vLyAtLS0tXG4vLyBSZXR1cm4gdGhlICdmcm9tJyBkaXJlY3Rpb24gb2YgYSBmbG93XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AZnVuY3Rpb24gZnJvbShcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgQHJldHVybiBnZXQtZGlyZWN0aW9uKCRmbG93LCBmcm9tKTtcbn1cbiIsIi8vIEdyaWQgQmFja2dyb3VuZCBBUElcbi8vID09PT09PT09PT09PT09PT09PT1cbi8vIC0gU3ViLXBpeGVsIHJvdW5kaW5nIGNhbiBsZWFkIHRvIHNldmVyYWwgcGl4ZWxzIHZhcmlhdGlvbiBiZXR3ZWVuIGJyb3dzZXJzLlxuXG4vLyBHcmlkIEJhY2tncm91bmQgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRpbWFnZTogYmFja2dyb3VuZC1pbWFnZVxuLy8gLSAkc2l6ZTogYmFja2dyb3VuZC1zaXplXG4vLyAtICRjbGlwOiBiYWNrZ3JvdW5kLWNsaXBcbi8vIC0gWyRmbG93XTogbHRyIHwgcnRsXG5AbWl4aW4gYmFja2dyb3VuZC1ncmlkLW91dHB1dCAoXG4gICRpbWFnZSxcbiAgJHNpemU6IG51bGwsXG4gICRjbGlwOiBudWxsLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkb3V0cHV0OiAoXG4gICAgYmFja2dyb3VuZC1pbWFnZTogJGltYWdlLFxuICAgIGJhY2tncm91bmQtc2l6ZTogJHNpemUsXG4gICAgYmFja2dyb3VuZC1vcmlnaW46ICRjbGlwLFxuICAgIGJhY2tncm91bmQtY2xpcDogJGNsaXAsXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogZnJvbSgkZmxvdykgdG9wLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIFNoYXJlZCBDb250YWluZXIgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09PVxuXG4vLyBDb250YWluZXIgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFskd2lkdGhdICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGp1c3RpZnldICAgICAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0XG4vLyAtIFskbWF0aF0gICAgICAgICAgOiBmbHVpZCB8IHN0YXRpY1xuQG1peGluIGNvbnRhaW5lci1vdXRwdXQoXG4gICR3aWR0aCxcbiAgJGp1c3RpZnk6IGF1dG8gYXV0byxcbiAgJHByb3BlcnR5OiBtYXgtd2lkdGhcbikge1xuICAkb3V0cHV0OiAoXG4gICAgI3skcHJvcGVydHl9OiAkd2lkdGggb3IgMTAwJSxcbiAgICBtYXJnaW4tbGVmdDogbnRoKCRqdXN0aWZ5LCAxKSxcbiAgICBtYXJnaW4tcmlnaHQ6IG50aCgkanVzdGlmeSwgMiksXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gTWFyZ2lucyBBUElcbi8vID09PT09PT09PT09XG5cbi8vIE1hcmdpbiBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gJGJlZm9yZSAgOiA8bGVuZ3RoPlxuLy8gLSAkYWZ0ZXIgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gbWFyZ2luLW91dHB1dChcbiAgJGJlZm9yZSxcbiAgJGFmdGVyLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG86IHRvKCRmbG93KTtcbiAgJGZyb206IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBtYXJnaW4tI3skZnJvbX06ICRiZWZvcmUsXG4gICAgbWFyZ2luLSN7JHRvfTogJGFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIFBhZGRpbmcgQVBJXG4vLyA9PT09PT09PT09PVxuXG4vLyBQYWRkaW5nIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGJlZm9yZSAgOiA8bGVuZ3RoPlxuLy8gLSAkYWZ0ZXIgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gcGFkZGluZy1vdXRwdXQoXG4gICRiZWZvcmUsXG4gICRhZnRlcixcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgcGFkZGluZy0jeyRmcm9tfTogJGJlZm9yZSxcbiAgICBwYWRkaW5nLSN7JHRvfTogJGFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IENvbnRhaW5lciBBUElcbi8vID09PT09PT09PT09PT09PT09PT1cblxuLy8gRmxvYXQgQ29udGFpbmVyXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIC0gWyR3aWR0aF0gICAgICAgICA6IDxsZW5ndGg+XG4vLyAtIFskanVzdGlmeV0gICAgICAgOiBsZWZ0IHwgY2VudGVyIHwgcmlnaHRcbi8vIC0gWyRtYXRoXSAgIDogZmx1aWQgfCBzdGF0aWNcbkBtaXhpbiBmbG9hdC1jb250YWluZXIoXG4gICR3aWR0aCxcbiAgJGp1c3RpZnk6IGF1dG8gYXV0byxcbiAgJHByb3BlcnR5OiBtYXgtd2lkdGhcbikge1xuICBAaW5jbHVkZSBzdXN5LWNsZWFyZml4O1xuICBAaW5jbHVkZSBjb250YWluZXItb3V0cHV0KCR3aWR0aCwgJGp1c3RpZnksICRwcm9wZXJ0eSk7XG59XG4iLCIvLyBGbG9hdCBTcGFuIEFQSVxuLy8gPT09PT09PT09PT09PT1cblxuLy8gRmxvYXQgU3BhbiBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICR3aWR0aCAgICAgICAgICAgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvYXRdICAgICAgICAgICA6IGZyb20gfCB0b1xuLy8gLSBbJG1hcmdpbi1iZWZvcmVdICAgOiA8bGVuZ3RoPlxuLy8gLSBbJG1hcmdpbi1hZnRlcl0gICAgOiA8bGVuZ3RoPlxuLy8gLSBbJHBhZGRpbmctYmVmb3JlXSAgOiA8bGVuZ3RoPlxuLy8gLSBbJHBhZGRpbmctYWZ0ZXJdICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICAgICAgICAgICAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1zcGFuLW91dHB1dChcbiAgJHdpZHRoLFxuICAkZmxvYXQgICAgICAgICAgICA6IGZyb20sXG4gICRtYXJnaW4tYmVmb3JlICAgIDogbnVsbCxcbiAgJG1hcmdpbi1hZnRlciAgICAgOiBudWxsLFxuICAkcGFkZGluZy1iZWZvcmUgICA6IG51bGwsXG4gICRwYWRkaW5nLWFmdGVyICAgIDogbnVsbCxcbiAgJGZsb3cgICAgICAgICAgICAgOiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0byAgICAgOiB0bygkZmxvdyk7XG4gICRmcm9tICAgOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgd2lkdGg6ICR3aWR0aCxcbiAgICBmbG9hdDogaWYoJGZsb2F0ID09IHRvLCAkdG8sIG51bGwpIG9yIGlmKCRmbG9hdCA9PSBmcm9tLCAkZnJvbSwgbnVsbCksXG4gICAgbWFyZ2luLSN7JGZyb219OiAkbWFyZ2luLWJlZm9yZSxcbiAgICBtYXJnaW4tI3skdG99OiAkbWFyZ2luLWFmdGVyLFxuICAgIHBhZGRpbmctI3skZnJvbX06ICRwYWRkaW5nLWJlZm9yZSxcbiAgICBwYWRkaW5nLSN7JHRvfTogJHBhZGRpbmctYWZ0ZXIsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgRW5kcyBBUElcbi8vID09PT09PT09PT09PT09XG5cbi8vIFN1c3kgRW5kIERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgbGFzdC1mbG93OiB0byxcbikpO1xuXG4vLyBGbG9hdCBMYXN0XG4vLyAtLS0tLS0tLS0tXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtbGFzdChcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpLFxuICAkbGFzdC1mbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBsYXN0LWZsb3cpLFxuICAkbWFyZ2luOiAwXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb2F0OiBpZigkbGFzdC1mbG93ID09IHRvLCAkdG8sIG51bGwpLFxuICAgIG1hcmdpbi0jeyR0b306ICRtYXJnaW4sXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuXG4vLyBGbG9hdCBGaXJzdFxuLy8gLS0tLS0tLS0tLS1cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1maXJzdChcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJG91dHB1dDogKFxuICAgIG1hcmdpbi0je2Zyb20oJGZsb3cpfTogMCxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBJc29sYXRpb24gQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG5cbi8vIElzb2xhdGUgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkcHVzaCAgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gaXNvbGF0ZS1vdXRwdXQoXG4gICRwdXNoLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG86IHRvKCRmbG93KTtcbiAgJGZyb206IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG9hdDogJGZyb20sXG4gICAgbWFyZ2luLSN7JGZyb219OiAkcHVzaCxcbiAgICBtYXJnaW4tI3skdG99OiAtMTAwJSxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBTdXN5IFNldHRpbmdzXG4vLyA9PT09PT09PT09PT09XG5cbi8vIFN1c3kgTGFuZ3VhZ2UgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGNvbnRhaW5lcjogYXV0byxcbiAgbWF0aDogZmx1aWQsXG4gIG91dHB1dDogZmxvYXQsXG4gIGNvbnRhaW5lci1wb3NpdGlvbjogY2VudGVyLFxuICBndXR0ZXItcG9zaXRpb246IGFmdGVyLFxuICBnbG9iYWwtYm94LXNpemluZzogY29udGVudC1ib3gsXG4gIGRlYnVnOiAoXG4gICAgaW1hZ2U6IGhpZGUsXG4gICAgY29sb3I6IHJnYmEoIzY2ZiwgLjI1KSxcbiAgICBvdXRwdXQ6IGJhY2tncm91bmQsXG4gICAgdG9nZ2xlOiB0b3AgcmlnaHQsXG4gICksXG4pKTtcblxuXG4vLyBWYWxpZCBLZXl3b3JkIFZhbHVlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURTogRE9OVCdUIFRPVUNIXG4kc3VzeS1rZXl3b3JkczogKFxuICBjb250YWluZXI6IGF1dG8sXG4gIG1hdGg6IHN0YXRpYyBmbHVpZCxcbiAgb3V0cHV0OiBpc29sYXRlIGZsb2F0LFxuICBjb250YWluZXItcG9zaXRpb246IGxlZnQgY2VudGVyIHJpZ2h0LFxuICBmbG93OiBsdHIgcnRsLFxuICBndXR0ZXItcG9zaXRpb246IGJlZm9yZSBhZnRlciBzcGxpdCBpbnNpZGUgaW5zaWRlLXN0YXRpYyxcbiAgYm94LXNpemluZzogYm9yZGVyLWJveCBjb250ZW50LWJveCxcbiAgc3BhbjogZnVsbCxcbiAgZWRnZTogZmlyc3QgYWxwaGEgbGFzdCBvbWVnYSBmdWxsLFxuICBzcHJlYWQ6IG5hcnJvdyB3aWRlIHdpZGVyLFxuICBndXR0ZXItb3ZlcnJpZGU6IG5vLWd1dHRlcnMgbm8tZ3V0dGVyLFxuICByb2xlOiBuZXN0LFxuICBjbGVhcjogYnJlYWsgbm9icmVhayxcbiAgZGVidWcgaW1hZ2U6IHNob3cgaGlkZSBzaG93LWNvbHVtbnMgc2hvdy1iYXNlbGluZSxcbiAgZGVidWcgb3V0cHV0OiBiYWNrZ3JvdW5kIG92ZXJsYXksXG4pO1xuXG5cbi8vIFBhcnNlIFN1c3kgS2V5d29yZHMgYW5kIE1hcHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1zZXR0aW5ncyhcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgQGVhY2ggJGl0ZW0gaW4gJHNob3J0IHtcbiAgICAgIC8vIHN0cmluZ3NcbiAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBzdHJpbmcge1xuICAgICAgICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJHN1c3kta2V5d29yZHMge1xuICAgICAgICAgIEBpZiBpbmRleCgkdmFsdWUsICRpdGVtKSB7XG4gICAgICAgICAgICAkX2tleS12YWx1ZTogYXBwZW5kKCRrZXksICRpdGVtKTtcbiAgICAgICAgICAgICRfcmV0dXJuOiBfc3VzeS1kZWVwLXNldCgkX3JldHVybiwgJF9rZXktdmFsdWUuLi4pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgLy8gbWFwc1xuICAgICAgfSBAZWxzZSBpZiB0eXBlLW9mKCRpdGVtKSA9PSBtYXAge1xuICAgICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAkaXRlbSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBDb2x1bW5zICYgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1sYXlvdXQoXG4gICRzaG9ydFxuKSB7XG4gICRfcmV0dXJuOiAoKTtcbiAgJF9jb2x1bW5zOiAoKTtcbiAgJF9ndXR0ZXJzOiBudWxsO1xuXG4gIEBpZiBub3QodW5pdGxlc3MobnRoKG50aCgkc2hvcnQsIDEpLCAxKSkpIHtcbiAgICAkX2d1dHRlcnM6IG50aCgkc2hvcnQsIDEpO1xuICB9IEBlbHNlIHtcbiAgICAkX2NvbHVtbnM6IChjb2x1bW5zOiBudGgoJHNob3J0LCAxKSk7XG4gICAgJF9ndXR0ZXJzOiBpZihsZW5ndGgoJHNob3J0KSA+IDEsIG50aCgkc2hvcnQsIDIpLCAkX2d1dHRlcnMpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJF9ndXR0ZXJzKSA9PSBsaXN0IGFuZCBsZW5ndGgoJF9ndXR0ZXJzKSA+IDAge1xuICAgICRfZ3V0dGVyczogKFxuICAgICAgZ3V0dGVyczogbnRoKCRfZ3V0dGVycywgMikgLyBudGgoJF9ndXR0ZXJzLCAxKSxcbiAgICAgIGNvbHVtbi13aWR0aDogbnRoKCRfZ3V0dGVycywgMSksXG4gICAgKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9ndXR0ZXJzOiBpZigkX2d1dHRlcnMsIChndXR0ZXJzOiAkX2d1dHRlcnMpLCAoKSk7XG4gIH1cblxuICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2NvbHVtbnMpO1xuICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2d1dHRlcnMpO1xuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgR3JpZC9Db250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1ncmlkKFxuICAkc2hvcnQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm46IHBhcnNlLXNldHRpbmdzKCRzaG9ydCk7XG4gICRfbGF5b3V0OiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgQGVhY2ggJGl0ZW0gaW4gJHNob3J0IHtcbiAgICAgIC8vIG51bWJlciBvciBsaXN0XG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbnVtYmVyIG9yIHR5cGUtb2YoJGl0ZW0pID09IGxpc3Qge1xuICAgICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbGlzdCBvciB1bml0bGVzcygkaXRlbSkge1xuICAgICAgICAgICRfbGF5b3V0OiBhcHBlbmQoJF9sYXlvdXQsICRpdGVtKTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGNvbnRhaW5lcjogJGl0ZW0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRfbGF5b3V0OiBpZihsZW5ndGgoJF9sYXlvdXQpID4gMCwgcGFyc2UtbGF5b3V0KCRfbGF5b3V0KSwgJF9sYXlvdXQpO1xuICB9XG5cbiAgQHJldHVybiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRfbGF5b3V0KTtcbn1cblxuXG4vLyBQYXJzZSBTcGFuXG4vLyAtLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2Utc3BhbihcbiAgJHNob3J0LFxuICAka2V5OiBzcGFuXG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBpZiB0eXBlLW9mKCRzaG9ydCkgPT0gbWFwIHtcbiAgICAkX3JldHVybjogJHNob3J0O1xuICB9IEBlbHNlIHtcbiAgICAkX2F0OiBpbmRleCgkc2hvcnQsIGF0KTtcblxuICAgIEBpZiAkX2F0IHtcbiAgICAgICRfbG9jaTogJF9hdCArIDE7XG4gICAgICAkX2xvY2F0aW9uOiBudGgoJHNob3J0LCAkX2xvY2kpO1xuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGxvY2F0aW9uOiAkX2xvY2F0aW9uKSk7XG4gICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2F0LCBudWxsKTtcbiAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfbG9jaSwgbnVsbCk7XG4gICAgfVxuXG4gICAgJF9pOiAxO1xuICAgICRfc3BhbjogKCk7XG5cbiAgICBAd2hpbGUgJF9pIDw9IGxlbmd0aCgkc2hvcnQpIHtcbiAgICAgICRfdGhpczogbnRoKCRzaG9ydCwgJF9pKTtcblxuICAgICAgQGlmIHR5cGUtb2YoJF90aGlzKSA9PSBudW1iZXIge1xuICAgICAgICAkX3NwYW46IGFwcGVuZCgkX3NwYW4sICRfdGhpcyk7XG4gICAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfaSwgbnVsbCk7XG4gICAgICB9IEBlbHNlIGlmICRfdGhpcyA9PSBvZiB7XG4gICAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfaSwgbnVsbCk7XG4gICAgICAgICRfaTogbGVuZ3RoKCRzaG9ydCkgKyAxO1xuICAgICAgfVxuXG4gICAgICAkX2k6ICRfaSArIDE7XG4gICAgfVxuXG4gICAgQGlmIGxlbmd0aCgkX3NwYW4pID4gMCB7XG4gICAgICAkX3NwYW46IGlmKGxlbmd0aCgkX3NwYW4pID09IDEsIG50aCgkX3NwYW4sIDEpLCAkX3NwYW4pO1xuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKCRrZXk6ICRfc3BhbikpO1xuICAgIH1cblxuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIHBhcnNlLWdyaWQoJHNob3J0KSk7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1ndXR0ZXJzKFxuICAkc2hvcnQ6ICRzdXN5XG4pIHtcbiAgJF9ndXR0ZXJzOiBwYXJzZS1zcGFuKCRzaG9ydCwgZ3V0dGVyLW92ZXJyaWRlKTtcbiAgJF9zcGFuOiBzdXN5LWdldChndXR0ZXItb3ZlcnJpZGUsICRfZ3V0dGVycyk7XG5cbiAgQGlmICRfc3BhbiBhbmQgbm90KG1hcC1nZXQoJF9ndXR0ZXJzLCBjb2x1bW5zKSkge1xuICAgICRfY29udGV4dDogKCk7XG4gICAgJF9uZXc6ICgpO1xuXG4gICAgQGVhY2ggJGl0ZW0gaW4gJF9zcGFuIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRpdGVtKSB7XG4gICAgICAgICRfY29udGV4dDogYXBwZW5kKCRfY29udGV4dCwgJGl0ZW0pO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRfbmV3OiBhcHBlbmQoJF9uZXcsICRpdGVtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX2NvbnRleHQ6IHBhcnNlLWdyaWQoJF9jb250ZXh0KTtcbiAgICAkX25ldzogaWYobGVuZ3RoKCRfbmV3KSA9PSAwLCBudWxsLCAkX25ldyk7XG4gICAgJF9uZXc6IGlmKGxlbmd0aCgkX25ldykgPT0gMSwgbnRoKCRfbmV3LCAxKSwgJF9uZXcpO1xuICAgICRfbmV3OiAoZ3V0dGVyLW92ZXJyaWRlOiBpZigkX25ldyAhPSAkX3NwYW4sICRfbmV3LCAkX3NwYW4pKTtcblxuICAgICRfZ3V0dGVyczogbWFwLW1lcmdlKCRfZ3V0dGVycywgJF9uZXcpO1xuICAgICRfZ3V0dGVyczogbWFwLW1lcmdlKCRfZ3V0dGVycywgJF9jb250ZXh0KTtcbiAgfVxuXG4gIEByZXR1cm4gJF9ndXR0ZXJzO1xufVxuIiwiLy8gVmFsaWRhdGlvblxuLy8gPT09PT09PT09PVxuXG5cbi8vIFZhbGlkYXRlIENvbHVtbiBNYXRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHZhbGlkLWNvbHVtbi1tYXRoKFxuICAkbWF0aCxcbiAgJGNvbHVtbi13aWR0aFxuKSB7XG4gIEBpZiAkbWF0aCA9PSBzdGF0aWMgYW5kIG5vdCgkY29sdW1uLXdpZHRoKSB7XG4gICAgQGVycm9yICdTdGF0aWMgbWF0aCByZXF1aXJlcyBhIHZhbGlkIGNvbHVtbi13aWR0aCBzZXR0aW5nLic7XG4gIH1cblxuICBAcmV0dXJuICRjb2x1bW4td2lkdGg7XG59XG4iLCIvLyBHcmlkIFN5bnRheFxuLy8gPT09PT09PT09PT1cblxuXG4vLyBMYXlvdXRcbi8vIC0tLS0tLVxuLy8gU2V0IGEgbmV3IGxheW91dCB1c2luZyBhIHNob3J0aGFuZFxuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQG1peGluIGxheW91dChcbiAgJGxheW91dCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICA6ICRsYXlvdXQ7XG4gICRzdXN5ICAgICA6IF9nZXQtbGF5b3V0KCRsYXlvdXQsICRjbGVhbikgIWdsb2JhbDtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QobGF5b3V0LCAkaW5zcGVjdCk7XG59XG5cblxuLy8gVXNlIEdyaWRcbi8vIC0tLS0tLS0tXG4vLyBVc2UgYW4gYXJiaXRyYXJ5IGxheW91dCBmb3IgYSBzZWN0aW9uIG9mIGNvZGVcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBtaXhpbiB3aXRoLWxheW91dChcbiAgJGxheW91dCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICA6ICRsYXlvdXQ7XG4gICRvbGQgICAgICA6ICRzdXN5O1xuICAkc3VzeSAgICAgOiBfZ2V0LWxheW91dCgkbGF5b3V0LCAkY2xlYW4pICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHdpdGgtbGF5b3V0LCAkaW5zcGVjdCk7XG5cbiAgQGNvbnRlbnQ7XG5cbiAgJHN1c3k6ICRvbGQgIWdsb2JhbDtcbn1cblxuXG4vLyBMYXlvdXRcbi8vIC0tLS0tLVxuLy8gUmV0dXJuIGEgcGFyc2VkIGxheW91dCBtYXAgYmFzZWQgb24gc2hvcnRoYW5kIHN5bnRheFxuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gbGF5b3V0KFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gIEByZXR1cm4gcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbn1cblxuXG4vLyBHZXQgTGF5b3V0XG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBuZXcgbGF5b3V0IGJhc2VkIG9uIGN1cnJlbnQgYW5kIGdpdmVuIHNldHRpbmdzXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AZnVuY3Rpb24gX2dldC1sYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkbGF5b3V0OiBsYXlvdXQoJGxheW91dCk7XG4gIEByZXR1cm4gaWYoJGNsZWFuLCAkbGF5b3V0LCBfc3VzeS1kZWVwLW1lcmdlKCRzdXN5LCAkbGF5b3V0KSk7XG59XG4iLCIvLyBTdXN5IEJveCBTaXppbmdcbi8vID09PT09PT09PT09PT09PT09XG5cbi8vIEdsb2JhbCBCb3ggU2l6aW5nXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgYm94IG1vZGVsIGdsb2JhbGx5IG9uIGFsbCBlbGVtZW50cy5cbi8vIC0gWyRib3hdOiBib3JkZXItYm94IHwgY29udGVudC1ib3hcbi8vIC0gWyRpbmhlcml0XTogdHJ1ZSB8IGZhbHNlXG5AbWl4aW4gZ2xvYmFsLWJveC1zaXppbmcoXG4gICRib3g6IHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSxcbiAgJGluaGVyaXQ6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3Q6ICRib3g7XG5cbiAgQGlmICRpbmhlcml0IHtcbiAgICBAYXQtcm9vdCB7XG4gICAgICAgaHRtbCB7IEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpOyB9XG4gICAgICAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIgeyBib3gtc2l6aW5nOiBpbmhlcml0OyB9XG4gICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIgeyBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTsgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGdsb2JhbC1ib3gtc2l6aW5nLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHVwZGF0ZS1ib3gtbW9kZWwoJGJveCk7XG59XG5cbi8vIEJvcmRlciBCb3ggU2l6aW5nXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gQSBsZWdhY3kgc2hvcnRjdXQuLi5cbi8vIC0gWyRpbmhlcml0XTogdHJ1ZSB8IGZhbHNlXG5AbWl4aW4gYm9yZGVyLWJveC1zaXppbmcoXG4gICRpbmhlcml0OiBmYWxzZVxuKSB7XG4gIEBpbmNsdWRlIGdsb2JhbC1ib3gtc2l6aW5nKGJvcmRlci1ib3gsICRpbmhlcml0KTtcbn1cblxuLy8gVXBkYXRlIEJveCBNb2RlbFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogVXBkYXRlcyBnbG9iYWwgYm94IG1vZGVsIHNldHRpbmdcbkBtaXhpbiB1cGRhdGUtYm94LW1vZGVsKFxuICAkYm94XG4pIHtcbiAgQGlmICRib3ggIT0gc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpIHtcbiAgQGluY2x1ZGUgc3VzeS1zZXQoZ2xvYmFsLWJveC1zaXppbmcsICRib3gpO1xuICB9XG59XG4iLCIvLyBDb250ZXh0IFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gTmVzdGVkIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBzdWJzZXQgZ3JpZCBmb3IgbmVzdGVkIGNvbnRleHQuXG4vLyAtICRjb250ZXh0ICAgOiA8c3Bhbj5cbkBmdW5jdGlvbiBuZXN0ZWQoXG4gICRjb250ZXh0XG4pIHtcbiAgJGNvbnRleHQgICAgOiBwYXJzZS1zcGFuKCRjb250ZXh0KTtcbiAgJHNwYW4gICAgICAgOiBzdXN5LWdldChzcGFuLCAkY29udGV4dCk7XG4gICRsb2NhdGlvbiAgIDogZ2V0LWxvY2F0aW9uKCRjb250ZXh0KTtcbiAgJGNvbHVtbnMgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBzdXN5LXNsaWNlKCRzcGFuLCAkbG9jYXRpb24sICRjb2x1bW5zKTtcbn1cblxuLy8gTmVzdGVkIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBVc2UgYSBzdWJzZXQgZ3JpZCBmb3IgYSBuZXN0ZWQgY29udGV4dFxuLy8gLSAkY29udGV4dCAgIDogPHNwYW4+XG4vLyAtIEBjb250ZW50ICAgOiA8Y29udGVudD5cbkBtaXhpbiBuZXN0ZWQoXG4gICRjb250ZXh0XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLXNwYW4oJGNvbnRleHQpO1xuICAkb2xkICAgICAgOiBzdXN5LWdldChjb2x1bW5zKTtcbiAgJHN1c3kgICAgIDogbWFwLW1lcmdlKCRzdXN5LCAoY29sdW1uczogbmVzdGVkKCRjb250ZXh0KSkpICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KG5lc3RlZCwgJGluc3BlY3QpO1xuICBAY29udGVudDtcblxuICAkc3VzeSAgICAgOiBtYXAtbWVyZ2UoJHN1c3ksIChjb2x1bW5zOiAkb2xkKSkgIWdsb2JhbDtcbn1cbiIsIi8vIEJhY2tncm91bmQgR3JpZCBTeW50YXhcbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzOiBmYWxzZTtcblxuXG4vLyBTaG93IEdyaWQvc1xuLy8gLS0tLS0tLS0tLS1cbi8vIFNob3cgZ3JpZCBvbiBhbnkgZWxlbWVudCB1c2luZyBlaXRoZXIgYmFja2dyb3VuZCBvciBvdmVybGF5LlxuLy8gLSBbJGdyaWRdICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBzaG93LWdyaWQoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0OiAkZ3JpZDtcbiAgJF9vdXRwdXQ6IGRlYnVnLWdldChvdXRwdXQsICRncmlkKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc2hvdy1ncmlkLCAkaW5zcGVjdCk7XG4gIEBpZiAkX291dHB1dCA9PSBvdmVybGF5IGFuZCBzdXN5LWdldChkZWJ1ZyBpbWFnZSwgJGdyaWQpICE9IGhpZGUge1xuICAgIEBpbmNsdWRlIG92ZXJsYXktZ3JpZCgkZ3JpZCk7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtZ3JpZCgkZ3JpZCk7XG4gIH1cbn1cblxuQG1peGluIHNob3ctZ3JpZHMoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIHNob3ctZ3JpZCgkZ3JpZCk7XG59XG5cbi8vIEJhY2tncm91bmQgR3JpZFxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBTaG93IGEgZ3JpZCBiYWNrZ3JvdW5kIG9uIGFueSBlbGVtZW50LlxuLy8gLSBbJGdyaWRdICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBiYWNrZ3JvdW5kLWdyaWQoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRncmlkO1xuICAkX291dHB1dCAgOiBnZXQtYmFja2dyb3VuZCgkZ3JpZCk7XG5cbiAgQGlmIGxlbmd0aCgkX291dHB1dCkgPiAwIHtcbiAgICAkX2Zsb3c6IHN1c3ktZ2V0KGZsb3csICRncmlkKTtcblxuICAgICRfaW1hZ2U6ICgpO1xuICAgIEBlYWNoICRuYW1lLCAkbGF5ZXIgaW4gbWFwLWdldCgkX291dHB1dCwgaW1hZ2UpIHtcbiAgICAgICRfZGlyZWN0aW9uOiBpZigkbmFtZSA9PSBiYXNlbGluZSwgdG8gYm90dG9tLCB0byB0bygkX2Zsb3cpKTtcbiAgICAgICRfaW1hZ2U6IGFwcGVuZCgkX2ltYWdlLCBsaW5lYXItZ3JhZGllbnQoJF9kaXJlY3Rpb24sICRsYXllciksIGNvbW1hKTtcbiAgICB9XG4gICAgJF9vdXRwdXQ6IG1hcC1tZXJnZSgkX291dHB1dCwgKGltYWdlOiAkX2ltYWdlKSk7XG5cbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQtb3V0cHV0KCRfb3V0cHV0Li4uKTtcbiAgICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoYmFja2dyb3VuZC1ncmlkLCAkaW5zcGVjdCk7XG4gIH1cbn1cblxuXG4vLyBPdmVybGF5IEdyaWRcbi8vIC0tLS0tLS0tLS0tLVxuLy8gR2VuZXJhdGUgYW4gaWNvbiB0byB0cmlnZ2VyIGdyaWQtb3ZlcmxheXMgb24gYW55IGdpdmVuIGVsZW1lbnRzLlxuLy8gJGdyaWRzLi4uICA6IDxzZWxlY3Rvcj4gWzxzZXR0aW5ncz5dIFssIDxzZWxlY3Rvcj5dKlxuQG1peGluIG92ZXJsYXktZ3JpZCAoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gIEBpZiBub3QoJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzKSB7XG4gICAgQGF0LXJvb3QgaGVhZCB7IEBpbmNsdWRlIG92ZXJsYXktaGVhZCgkZ3JpZCk7IH1cbiAgICBAYXQtcm9vdCBoZWFkOmJlZm9yZSB7IEBpbmNsdWRlIG92ZXJsYXktdHJpZ2dlcjsgfVxuICAgIEBhdC1yb290IGhlYWQ6aG92ZXIgeyBAaW5jbHVkZSBvdmVybGF5LXRyaWdnZXItaG92ZXI7IH1cbiAgICAkc3VzeS1vdmVybGF5LWdyaWQtaGVhZC1leGlzdHM6IHRydWUgIWdsb2JhbDtcbiAgfVxuXG4gIGhlYWQ6aG92ZXIgfiAmLFxuICBoZWFkOmhvdmVyIH4gYm9keSAmIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgJjpiZWZvcmUge1xuICAgICAgQGluY2x1ZGUgZ3JpZC1vdmVybGF5LWJhc2U7XG4gICAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQoJGdyaWQpO1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFtQcml2YXRlXSBPdmVybGF5IFRyaWdnZXJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBtaXhpbiBvdmVybGF5LXRyaWdnZXIge1xuICBjb250ZW50OiBcInx8fFwiO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogNXB4IDEwcHg7XG4gIGZvbnQ6IHtcbiAgICBmYW1pbHk6IHNhbnMtc2VyaWY7XG4gICAgc2l6ZTogMTZweDtcbiAgICB3ZWlnaHQ6IGJvbGQ7XG4gIH1cbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBUcmlnZ2VyIEhvdmVyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AbWl4aW4gb3ZlcmxheS10cmlnZ2VyLWhvdmVyIHtcbiAgYmFja2dyb3VuZDogcmdiYSh3aGl0ZSwgLjUpO1xuICBjb2xvcjogcmVkO1xufVxuXG5cbi8vIFtQcml2YXRlXSBPdmVybGF5IEhlYWRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIDxoZWFkPiBzdHlsZXMgdG8gY3JlYXRlIGdyaWQgb3ZlcmxheSB0b2dnbGVcbkBtaXhpbiBvdmVybGF5LWhlYWQgKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkX3RvZ2dsZTogZGVidWctZ2V0KHRvZ2dsZSwgJGdyaWQpO1xuICAkX2hvcno6IG51bGw7XG4gICRfdmVydDogbnVsbDtcblxuICBAZWFjaCAkc2lkZSBpbiAkX3RvZ2dsZSB7XG4gICAgJF9ob3J6OiBpZigkc2lkZSA9PSBsZWZ0IG9yICRzaWRlID09IHJpZ2h0LCAkc2lkZSwgJF9ob3J6KTtcbiAgICAkX3ZlcnQ6IGlmKCRzaWRlID09IHRvcCBvciAkc2lkZSA9PSBib3R0b20sICRzaWRlLCAkX3ZlcnQpO1xuICB9XG5cbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgI3skX2hvcnp9OiAxMHB4O1xuICAjeyRfdmVydH06IDEwcHg7XG4gIHotaW5kZXg6IDk5OTtcbiAgY29sb3I6ICMzMzM7XG4gIGJhY2tncm91bmQ6IHJnYmEod2hpdGUsIC4yNSk7XG59XG5cblxuLy8gW1ByaXZhdGVdIEdyaWQgT3ZlcmxheSBCYXNlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEJhc2Ugc3R5bGVzIGZvciBnZW5lcmF0aW5nIGEgZ3JpZCBvdmVybGF5XG5AbWl4aW4gZ3JpZC1vdmVybGF5LWJhc2UoKSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICBjb250ZW50OiBcIiBcIjtcbiAgei1pbmRleDogOTk4O1xufVxuXG5cbi8vIEdldCBTeW1tZXRyaWNhbCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPG1hcD5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZC1zeW0oXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgICAgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfZ3V0dGVycyAgICAgICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRncmlkKTtcbiAgJF9jb2x1bW4td2lkdGggIDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkZ3JpZCk7XG4gICRfbWF0aCAgICAgICAgICA6IHN1c3ktZ2V0KG1hdGgsICRncmlkKTtcblxuICAkX2NvbG9yICAgICAgICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX3RyYW5zICAgICAgICAgOiB0cmFuc3BhcmVudDtcbiAgJF9saWdodCAgICAgICAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuXG4gICRfZW5kICAgICAgICAgICA6IDEgKyAkX2d1dHRlcnM7XG4gICRfYWZ0ZXIgICAgICAgICA6IHBlcmNlbnRhZ2UoMS8kX2VuZCk7XG4gICRfc3RvcHMgICAgICAgICA6ICgpO1xuICAkX3NpemUgICAgICAgICAgOiBzcGFuKDEgJGdyaWQgd2lkZSk7XG5cbiAgQGlmIGlzLWluc2lkZSgkZ3JpZCkge1xuICAgICRfc3RvcHM6ICRfY29sb3IsICRfbGlnaHQ7XG4gIH0gQGVsc2UgaWYgaXMtc3BsaXQoJGdyaWQpIHtcbiAgICAkX3NwbGl0OiAkX2d1dHRlcnMvMjtcbiAgICAkX2JlZm9yZTogcGVyY2VudGFnZSgkX3NwbGl0LyRfZW5kKTtcbiAgICAkX2FmdGVyOiBwZXJjZW50YWdlKCgxICsgJF9zcGxpdCkvJF9lbmQpO1xuICAgICRfc3RvcHM6ICRfdHJhbnMgJF9iZWZvcmUsICRfY29sb3IgJF9iZWZvcmUsICRfbGlnaHQgJF9hZnRlciwgJF90cmFucyAkX2FmdGVyO1xuICB9IEBlbHNlIHtcbiAgICAkX3N0b3BzOiAkX2NvbG9yLCAkX2xpZ2h0ICRfYWZ0ZXIsICRfdHJhbnMgJF9hZnRlcjtcbiAgfVxuXG4gIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAkX3NpemU6IHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpICogJF9lbmQ7XG4gIH1cblxuICAkX291dHB1dDogKFxuICAgIGltYWdlOiAoY29sdW1uczogJF9zdG9wcyksXG4gICAgc2l6ZTogJF9zaXplLFxuICApO1xuXG4gIEByZXR1cm4gJF9vdXRwdXQ7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBJbnNpZGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0taW5zaWRlKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgQGlmICRsb2NhdGlvbiA9PSAxIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yLCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkc3RhcnQ6IHBhcnNlLXNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICAgJHN0YXJ0OiBnZXQtaXNvbGF0aW9uKCRzdGFydCk7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciAkc3RhcnQsIGNvbW1hKTtcbiAgICB9XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF9lbmQ6IHBhcnNlLXNwYW4oMSBhdCAoJGxvY2F0aW9uICsgMSkgJGdyaWQpO1xuICAgICAgJF9lbmQ6IGdldC1pc29sYXRpb24oJF9lbmQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQgJF9lbmQsIGNvbW1hKTtcbiAgICB9XG5cbiAgICAkX3N0b3BzOiBqb2luKCRfc3RvcHMsICR0aGlzLXN0b3AsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdG9wcztcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIFNwbGl0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0tc3BsaXQoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAkX2NvbG9yICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX2xpZ2h0ICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICAkc3RhcnQ6IHBhcnNlLXNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCB0cmFuc3BhcmVudCAkc3RhcnQsIGNvbW1hKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciAkc3RhcnQsIGNvbW1hKTtcblxuICAgICRfZW5kOiAkc3RhcnQgKyBzcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCAkX2VuZCwgY29tbWEpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCB0cmFuc3BhcmVudCAkX2VuZCwgY29tbWEpO1xuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBPdXRzaWRlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYXN5bS1vdXRzaWRlKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3RyYW5zICAgOiB0cmFuc3BhcmVudDtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG4gICAgfVxuXG4gICAgQGlmICRsb2NhdGlvbiA9PSBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRndXR0ZXI6IGdldC1zcGFuLXdpZHRoKGZpcnN0ICRsb2NhdGlvbiAkZ3JpZCk7XG5cbiAgICAgICRfZW5kOiBwYXJzZS1zcGFuKDEgYXQgKCRsb2NhdGlvbiArIDEpICRncmlkKTtcbiAgICAgICRfZW5kOiBnZXQtaXNvbGF0aW9uKCRfZW5kKTtcblxuICAgICAgJGd1dHRlcjogJF9saWdodCAkZ3V0dGVyLCAkX3RyYW5zICRndXR0ZXIsICRfdHJhbnMgJF9lbmQ7XG4gICAgICAkdGhpcy1zdG9wOiBqb2luKCR0aGlzLXN0b3AsICRndXR0ZXIsIGNvbW1hKTtcbiAgICB9XG5cbiAgICAkX3N0b3BzOiBqb2luKCRfc3RvcHMsICR0aGlzLXN0b3AsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdG9wcztcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIEJhY2tncm91bmRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kLWFzeW0oXG4gICRncmlkXG4pIHtcbiAgJF9zdG9wczogKCk7XG5cbiAgQGlmIGlzLWluc2lkZSgkZ3JpZCkge1xuICAgICRfc3RvcHM6IGdldC1hc3ltLWluc2lkZSgkZ3JpZCk7XG4gIH0gQGVsc2UgaWYgaXMtc3BsaXQoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1zcGxpdCgkZ3JpZCk7XG4gIH0gQGVsc2Uge1xuICAgICRfc3RvcHM6IGdldC1hc3ltLW91dHNpZGUoJGdyaWQpO1xuICB9XG5cbiAgQHJldHVybiAoaW1hZ2U6IChjb2x1bW5zOiAkX3N0b3BzKSk7XG59XG5cblxuLy8gR2V0IEJhY2tncm91bmRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfc2hvdyAgICA6IHN1c3ktZ2V0KGRlYnVnIGltYWdlLCAkZ3JpZCk7XG4gICRfcmV0dXJuICA6ICgpO1xuXG4gIEBpZiAkX3Nob3cgYW5kICRfc2hvdyAhPSAnaGlkZScge1xuICAgICRfY29sdW1uczogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICAgQGlmICRfc2hvdyAhPSAnc2hvdy1iYXNlbGluZScge1xuICAgICAgJF9zeW06IGlzLXN5bW1ldHJpY2FsKCRfY29sdW1ucyk7XG4gICAgICAkX3JldHVybjogaWYoJF9zeW0sIGdldC1iYWNrZ3JvdW5kLXN5bSgkZ3JpZCksIGdldC1iYWNrZ3JvdW5kLWFzeW0oJGdyaWQpKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjbGlwOiBjb250ZW50LWJveCkpO1xuICAgIH1cblxuICAgIEBpZiAkX3Nob3cgIT0gJ3Nob3ctY29sdW1ucydcbiAgICAgIGFuZCBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKGJhc2UtbGluZS1oZWlnaHQpXG4gICAgICBhbmQgdHlwZS1vZigkYmFzZS1saW5lLWhlaWdodCkgPT0gJ251bWJlcidcbiAgICAgIGFuZCBub3QgdW5pdGxlc3MoJGJhc2UtbGluZS1oZWlnaHQpIHtcbiAgICAgICRfY29sb3I6IHZhcmlhYmxlLWV4aXN0cygnZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWNvbG9yJyk7XG4gICAgICAkX2NvbG9yOiBpZigkX2NvbG9yLCAkZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWNvbG9yLCAjMDAwKTtcblxuICAgICAgJF9pbWFnZTogbWFwLWdldCgkX3JldHVybiwgaW1hZ2UpO1xuICAgICAgJF9zaXplOiBtYXAtZ2V0KCRfcmV0dXJuLCBzaXplKTtcbiAgICAgICRfYmFzZWxpbmU6IChiYXNlbGluZTogKCRfY29sb3IgMXB4LCB0cmFuc3BhcmVudCAxcHgpKTtcbiAgICAgICRfYmFzZWxpbmUtc2l6ZTogMTAwJSAkYmFzZS1saW5lLWhlaWdodDtcblxuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKFxuICAgICAgICBpbWFnZTogaWYoJF9pbWFnZSwgbWFwLW1lcmdlKCRfaW1hZ2UsICRfYmFzZWxpbmUpLCAkX2Jhc2VsaW5lKSxcbiAgICAgICAgc2l6ZTogaWYoJF9zaXplLCAoJF9zaXplLCAkX2Jhc2VsaW5lLXNpemUpLCAkX2Jhc2VsaW5lLXNpemUpLFxuICAgICAgKSk7XG5cbiAgICAgIEBpZiAkX3Nob3cgPT0gJ3Nob3cnIHtcbiAgICAgICAgJF9jbGlwOiBtYXAtZ2V0KCRfcmV0dXJuLCBjbGlwKTtcbiAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGNsaXA6IGpvaW4oJF9jbGlwLCBib3JkZXItYm94LCBjb21tYSkpKTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIGlmICRfc2hvdyA9PSAnc2hvdy1iYXNlbGluZScge1xuICAgICAgQHdhcm4gJ1BsZWFzZSBwcm92aWRlIGEgJGJhc2UtbGluZS1oZWlnaHQgd2l0aCB0aGUgZGVzaXJlZCBoZWlnaHQgYW5kIHVuaXRzJztcbiAgICB9XG4gIH1cblxuICBAaWYgbWFwLWdldCgkX3JldHVybiwgaW1hZ2UpIHtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoZmxvdzogc3VzeS1nZXQoZmxvdywgJGdyaWQpKSk7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIEdldCBEZWJ1Z1xuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHZhbHVlIG9mIGEgZGVidWcgc2V0dGluZ1xuLy8gLSAka2V5OiA8c2V0dGluZz5cbkBmdW5jdGlvbiBkZWJ1Zy1nZXQoXG4gICRrZXksXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRrZXk6IGpvaW4oZGVidWcsICRrZXksIHNwYWNlKTtcbiAgQHJldHVybiBzdXN5LWdldCgka2V5LCAkZ3JpZCk7XG59XG4iLCIvLyBDb250YWluZXIgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cbi8vIENvbnRhaW5lciBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgY29udGFpbmVyIGVsZW1lbnRcbi8vIC0gWyRsYXlvdXRdICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBjb250YWluZXIoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgICAgOiAkbGF5b3V0O1xuICAkbGF5b3V0ICAgICA6IHBhcnNlLWdyaWQoJGxheW91dCk7XG5cbiAgJF93aWR0aCAgICAgOiBnZXQtY29udGFpbmVyLXdpZHRoKCRsYXlvdXQpO1xuICAkX2p1c3RpZnkgICA6IHBhcnNlLWNvbnRhaW5lci1wb3NpdGlvbihzdXN5LWdldChjb250YWluZXItcG9zaXRpb24sICRsYXlvdXQpKTtcbiAgJF9wcm9wZXJ0eSAgOiBpZihzdXN5LWdldChtYXRoLCAkbGF5b3V0KSA9PSBzdGF0aWMsIHdpZHRoLCBtYXgtd2lkdGgpO1xuXG4gICRfYm94ICAgICAgIDogc3VzeS1nZXQoYm94LXNpemluZywgJGxheW91dCk7XG5cbiAgQGlmICRfYm94IHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRfYm94KSk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoY29udGFpbmVyLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIGZsb2F0LWNvbnRhaW5lcigkX3dpZHRoLCAkX2p1c3RpZnksICRfcHJvcGVydHkpO1xuICBAaW5jbHVkZSBzaG93LWdyaWQoJGxheW91dCk7XG59XG5cbi8vIENvbnRhaW5lciBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGNvbnRhaW5lciB3aWR0aFxuLy8gLSBbJGxheW91dF0gIDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGNvbnRhaW5lcihcbiAgJGxheW91dDogJHN1c3lcbikge1xuICAkbGF5b3V0OiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICBAcmV0dXJuIGdldC1jb250YWluZXItd2lkdGgoJGxheW91dCk7XG59XG5cbi8vIEdldCBDb250YWluZXIgV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSB0aGUgY29udGFpbmVyIHdpZHRoXG4vLyAtIFskbGF5b3V0XTogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1jb250YWluZXItd2lkdGgoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGxheW91dCAgICAgICAgIDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgJF93aWR0aCAgICAgICAgIDogc3VzeS1nZXQoY29udGFpbmVyLCAkbGF5b3V0KTtcbiAgJF9jb2x1bW4td2lkdGggIDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkbGF5b3V0KTtcbiAgJF9tYXRoICAgICAgICAgIDogc3VzeS1nZXQobWF0aCwgJGxheW91dCk7XG5cbiAgQGlmIG5vdCgkX3dpZHRoKSBvciAkX3dpZHRoID09IGF1dG8ge1xuICAgIEBpZiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKSB7XG4gICAgICAkX2NvbHVtbnMgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRsYXlvdXQpO1xuICAgICAgJF9ndXR0ZXJzICAgOiBzdXN5LWdldChndXR0ZXJzLCAkbGF5b3V0KTtcbiAgICAgICRfc3ByZWFkICAgIDogaWYoaXMtc3BsaXQoJGxheW91dCksIHdpZGUsIG5hcnJvdyk7XG4gICAgICAkX3dpZHRoICAgICA6IHN1c3ktc3VtKCRfY29sdW1ucywgJF9ndXR0ZXJzLCAkX3NwcmVhZCkgKiAkX2NvbHVtbi13aWR0aDtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfd2lkdGg6IDEwMCU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3dpZHRoO1xufVxuXG4vLyBQYXJzZSBDb250YWluZXIgUG9zaXRpb25cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUGFyc2UgdGhlICRjb250YWluZXItcG9zaXRpb24gaW50byBtYXJnaW4gdmFsdWVzLlxuLy8gLSBbJGp1c3RpZnldICAgOiBsZWZ0IHwgY2VudGVyIHwgcmlnaHQgfCA8bGVuZ3RoPiBbPGxlbmd0aD5dXG5AZnVuY3Rpb24gcGFyc2UtY29udGFpbmVyLXBvc2l0aW9uKFxuICAkanVzdGlmeTogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgY29udGFpbmVyLXBvc2l0aW9uKVxuKSB7XG4gICRfcmV0dXJuOiBpZigkanVzdGlmeSA9PSBsZWZ0LCAwLCBhdXRvKSBpZigkanVzdGlmeSA9PSByaWdodCwgMCwgYXV0byk7XG5cbiAgQGlmIG5vdChpbmRleChsZWZ0IHJpZ2h0IGNlbnRlciwgJGp1c3RpZnkpKSB7XG4gICAgJF9yZXR1cm46IG50aCgkanVzdGlmeSwgMSk7XG4gICAgJF9yZXR1cm46ICRfcmV0dXJuIGlmKGxlbmd0aCgkanVzdGlmeSkgPiAxLCBudGgoJGp1c3RpZnksIDIpLCAkX3JldHVybik7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gU3BhbiBTeW50YXhcbi8vID09PT09PT09PT09XG5cbi8vIFNwYW4gW21peGluXVxuLy8gLS0tLS0tLS0tLS0tXG4vLyBTZXQgYSBzcGFubmluZyBlbGVtZW50IHVzaW5nIHNob3J0aGFuZCBzeW50YXguXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHNwYW4oXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3Q6ICRzcGFuO1xuICAkc3BhbjogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRvdXRwdXQ6IHNwYW4tbWF0aCgkc3Bhbik7XG4gICRuZXN0aW5nOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRjbGVhcjogc3VzeS1nZXQoY2xlYXIsICRzcGFuKTtcblxuICAkYm94OiBzdXN5LWdldChib3gtc2l6aW5nLCAkc3Bhbik7XG4gICRjb250ZW50LWJveDogaWYoc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpICE9ICdib3JkZXItYm94JywgdHJ1ZSwgZmFsc2UpO1xuICAkYm94OiAkYm94IG9yIGlmKGlzLWluc2lkZSgkc3BhbikgYW5kICRjb250ZW50LWJveCwgYm9yZGVyLWJveCwgbnVsbCk7XG5cbiAgQGlmICRjbGVhciA9PSBicmVhayB7XG4gICAgQGluY2x1ZGUgYnJlYWs7XG4gIH0gQGVsc2UgaWYgJGNsZWFyID09IG5vYnJlYWsge1xuICAgIEBpbmNsdWRlIG5vYnJlYWs7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3BhbiwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTtcbiAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgQGlmIHZhbGlkLWNvbHVtbnMoJG5lc3RpbmcsIHNpbGVudCkge1xuICAgIEBpbmNsdWRlIG5lc3RlZCgkc3BhbikgeyBAY29udGVudDsgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBTcGFuIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSB3aWR0aCBvZiBhIHNwYW4uXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQGZ1bmN0aW9uIHNwYW4oXG4gICRzcGFuXG4pIHtcbiAgQHJldHVybiBnZXQtc3Bhbi13aWR0aCgkc3Bhbik7XG59XG5cbi8vIFNwYW4gTWF0aFxuLy8gLS0tLS0tLS0tXG4vLyBHZXQgYWxsIHRoZSBzcGFuIHJlc3VsdHMuXG4vLyAtICRzcGFuOiA8bWFwPlxuQGZ1bmN0aW9uIHNwYW4tbWF0aChcbiAgJHNwYW5cbikge1xuICAkbmVzdCAgICAgICAgICAgICA6IGlmKHN1c3ktZ2V0KHJvbGUsICRzcGFuKSA9PSBuZXN0LCB0cnVlLCBmYWxzZSk7XG4gICRzcGxpdC1uZXN0ICAgICAgIDogaWYoaXMtc3BsaXQoJHNwYW4pIGFuZCAkbmVzdCwgdHJ1ZSwgZmFsc2UpO1xuICAkZWRnZSAgICAgICAgICAgICA6IGdldC1lZGdlKCRzcGFuKTtcbiAgJGxvY2F0aW9uICAgICAgICAgOiBnZXQtbG9jYXRpb24oJHNwYW4pO1xuXG4gICRmbG9hdCAgICAgICAgICAgIDogZnJvbTtcbiAgJHBhZGRpbmctYmVmb3JlICAgOiBudWxsO1xuICAkcGFkZGluZy1hZnRlciAgICA6IG51bGw7XG4gICRtYXJnaW4tYmVmb3JlICAgIDogbnVsbDtcbiAgJG1hcmdpbi1hZnRlciAgICAgOiBudWxsO1xuXG4gIC8vIGNhbGN1bGF0ZSB3aWR0aHNcbiAgJHNwcmVhZDogaW5kZXgobWFwLXZhbHVlcygkc3BhbiksIHNwcmVhZCk7XG4gICRzcGFuOiBpZigkc3BsaXQtbmVzdCBhbmQgbm90KCRzcHJlYWQpLCBtYXAtbWVyZ2UoJHNwYW4sIChzcHJlYWQ6IHdpZGUpKSwgJHNwYW4pO1xuICAkd2lkdGg6IGdldC1zcGFuLXdpZHRoKCRzcGFuKTtcbiAgJGd1dHRlcnM6IGdldC1ndXR0ZXJzKCRzcGFuKTtcblxuICAvLyBhcHBseSBndXR0ZXJzXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICBAaWYgbm90KHN1c3ktZ2V0KHJvbGUsICRzcGFuKSkge1xuICAgICAgJHBhZGRpbmctYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpO1xuICAgICAgJHBhZGRpbmctYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBpZiBub3QoJHNwbGl0LW5lc3QpIHtcbiAgICAgICRtYXJnaW4tYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpO1xuICAgICAgJG1hcmdpbi1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHNwZWNpYWwgbWFyZ2luIGhhbmRsaW5nXG4gIEBpZiBzdXN5LWdldChvdXRwdXQsICRzcGFuKSA9PSBpc29sYXRlIGFuZCAkbG9jYXRpb24ge1xuICAgICRtYXJnaW4tYmVmb3JlOiBnZXQtaXNvbGF0aW9uKCRzcGFuKTtcbiAgICAkbWFyZ2luLWFmdGVyOiAtMTAwJTtcbiAgfSBAZWxzZSBpZiAkZWRnZSB7XG4gICAgJGlzLXNwbGl0OiBpcy1zcGxpdCgkc3Bhbik7XG4gICAgJHBvczogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3Bhbik7XG5cbiAgICBAaWYgJGVkZ2UgPT0gbGFzdCB7XG4gICAgICAkZmxvYXQ6IHN1c3ktZ2V0KGxhc3QtZmxvdywgJHNwYW4pO1xuICAgIH1cblxuICAgIEBpZiBub3QoJGlzLXNwbGl0KSB7XG4gICAgICBAaWYgJGVkZ2UgPT0gZnVsbCBvciAoJGVkZ2UgPT0gZmlyc3QgYW5kICRwb3MgPT0gYmVmb3JlKSB7XG4gICAgICAgICRtYXJnaW4tYmVmb3JlOiAwO1xuICAgICAgfVxuICAgICAgQGlmICRlZGdlID09IGZ1bGwgb3IgKCRlZGdlID09IGxhc3QgYW5kICRwb3MgPT0gYWZ0ZXIpIHtcbiAgICAgICAgJG1hcmdpbi1hZnRlcjogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgfVxuXG4gIEByZXR1cm4gKFxuICAgIHdpZHRoICAgICAgICAgICA6ICR3aWR0aCxcbiAgICBmbG9hdCAgICAgICAgICAgOiAkZmxvYXQsXG4gICAgbWFyZ2luLWJlZm9yZSAgIDogJG1hcmdpbi1iZWZvcmUsXG4gICAgbWFyZ2luLWFmdGVyICAgIDogJG1hcmdpbi1hZnRlcixcbiAgICBwYWRkaW5nLWJlZm9yZSAgOiAkcGFkZGluZy1iZWZvcmUsXG4gICAgcGFkZGluZy1hZnRlciAgIDogJHBhZGRpbmctYWZ0ZXIsXG4gICAgZmxvdyAgICAgICAgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pLFxuICApO1xufVxuXG4vLyBHZXQgU3BhbiBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBzcGFuIHdpZHRoLlxuLy8gLSAkc3BhbjogPG1hcD5cbkBmdW5jdGlvbiBnZXQtc3Bhbi13aWR0aChcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcblxuICAkbiAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRsb2NhdGlvbiA6IGdldC1sb2NhdGlvbigkc3Bhbik7XG4gICRjb2x1bW5zICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKTtcbiAgJGd1dHRlcnMgIDogc3VzeS1nZXQoZ3V0dGVycywgJHNwYW4pO1xuICAkc3ByZWFkICAgOiBzdXN5LWdldChzcHJlYWQsICRzcGFuKTtcblxuICAkY29udGV4dCAgOiBudWxsO1xuICAkc3Bhbi1zdW0gOiBudWxsO1xuICAkd2lkdGggICAgOiBudWxsO1xuXG4gIEBpZiAkbiA9PSAnZnVsbCcge1xuICAgICRwb3M6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pO1xuICAgICRyb2xlOiBzdXN5LWdldChyb2xlLCAkc3Bhbik7XG4gICAgJG46IGlmKCRwb3MgPT0gc3BsaXQgYW5kICRyb2xlICE9IG5lc3QsIHN1c3ktY291bnQoJGNvbHVtbnMpLCAxMDAlKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRuKSAhPSBudW1iZXIge1xuICAgIEB3YXJuIFwiKCN7dHlwZS1vZigkbil9KSAjeyRufSBpcyBub3QgYSB2YWxpZCBzcGFuLlwiO1xuICB9IEBlbHNlIGlmIHVuaXRsZXNzKCRuKSB7XG4gICAgJGNvbnRleHQ6IHN1c3ktc3VtKCRjb2x1bW5zLCAkZ3V0dGVycywgaWYoaXMtc3BsaXQoJHNwYW4pLCB3aWRlLCBuYXJyb3cpKTtcbiAgICAkc3ByZWFkOiBpZihpcy1pbnNpZGUoJHNwYW4pLCAkc3ByZWFkIG9yIHdpZGUsICRzcHJlYWQpO1xuICAgICRzcGFuLXN1bTogc3VzeSgkbiwgJGxvY2F0aW9uLCAkY29sdW1ucywgJGd1dHRlcnMsICRzcHJlYWQpO1xuXG4gICAgJF9tYXRoOiBzdXN5LWdldChtYXRoLCAkc3Bhbik7XG4gICAgJF9jb2x1bW4td2lkdGg6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJHNwYW4pO1xuICAgIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAgICR3aWR0aDogJHNwYW4tc3VtICogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkd2lkdGg6IHBlcmNlbnRhZ2UoJHNwYW4tc3VtIC8gJGNvbnRleHQpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJHdpZHRoOiAkbjtcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoO1xufVxuIiwiLy8gR3V0dGVyIFN5bnRheFxuLy8gPT09PT09PT09PT09PVxuXG5cbi8vIEd1dHRlcnNcbi8vIC0tLS0tLS1cbi8vIFNldCBndXR0ZXJzIG9uIGFuIGVsZW1lbnQuXG4vLyAtIFskc3Bhbl0gICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBndXR0ZXJzKFxuICAkc3BhbjogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogcGFyc2UtZ3V0dGVycygkc3Bhbik7XG4gICRfZ3V0dGVycyA6IGdldC1ndXR0ZXJzKCRzcGFuKTtcblxuICAkX291dHB1dDogKFxuICAgIGJlZm9yZTogbWFwLWdldCgkX2d1dHRlcnMsIGJlZm9yZSksXG4gICAgYWZ0ZXI6IG1hcC1nZXQoJF9ndXR0ZXJzLCBhZnRlciksXG4gICAgZmxvdzogc3VzeS1nZXQoZmxvdywgJHNwYW4pLFxuICApO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChndXR0ZXJzLCAkaW5zcGVjdCk7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KCRfb3V0cHV0Li4uKTtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkX291dHB1dC4uLik7XG4gIH1cbn1cblxuQG1peGluIGd1dHRlcihcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgZ3V0dGVycygkc3Bhbik7XG59XG5cblxuLy8gR3V0dGVyXG4vLyAtLS0tLS1cbi8vIFJldHVybiB0aGUgd2lkdGggb2YgYSBndXR0ZXIuXG4vLyAtIFskc3Bhbl0gICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBndXR0ZXIoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gICRzcGFuOiBwYXJzZS1ndXR0ZXJzKCRzcGFuKTtcblxuICAkX2d1dHRlcnM6IGdldC1ndXR0ZXJzKCRzcGFuKTtcbiAgJF9ndXR0ZXJzOiBtYXAtZ2V0KCRfZ3V0dGVycywgYmVmb3JlKSBvciBtYXAtZ2V0KCRfZ3V0dGVycywgYWZ0ZXIpO1xuXG4gIEByZXR1cm4gJF9ndXR0ZXJzO1xufVxuXG5AZnVuY3Rpb24gZ3V0dGVycyhcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgQHJldHVybiBndXR0ZXIoJHNwYW4pO1xufVxuXG5cbi8vIEdldCBHdXR0ZXIgV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBndXR0ZXIgd2lkdGguXG4vLyAtIFskY29udGV4dF06IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGdldC1ndXR0ZXItd2lkdGgoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRjb250ZXh0ICA6IHBhcnNlLWd1dHRlcnMoJGNvbnRleHQpO1xuXG4gICRfZ3V0dGVycyA6IHN1c3ktZ2V0KGd1dHRlcnMsICRjb250ZXh0KTtcbiAgJF9ndXR0ZXIgIDogc3VzeS1nZXQoZ3V0dGVyLW92ZXJyaWRlLCAkY29udGV4dCk7XG5cbiAgQGlmICRfZ3V0dGVycyBhbmQgKCRfZ3V0dGVycyA+IDApIGFuZCBub3QoJF9ndXR0ZXIpIHtcbiAgICAkX2NvbHVtbi13aWR0aDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkY29udGV4dCk7XG4gICAgJF9tYXRoOiBndXR0ZXItbWF0aCgkY29udGV4dCk7XG4gICAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICAgJF9ndXR0ZXI6ICRfZ3V0dGVycyAqIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGNvbnRleHQpO1xuICAgICAgJF9zcHJlYWQgIDogaWYoaXMtc3BsaXQoJGNvbnRleHQpLCB3aWRlLCBzdXN5LWdldChzcHJlYWQsICRjb250ZXh0KSk7XG4gICAgICAkX2d1dHRlciAgOiBwZXJjZW50YWdlKCRfZ3V0dGVycyAvIHN1c3ktc3VtKCRfY29sdW1ucywgJF9ndXR0ZXJzLCAkX3NwcmVhZCkpO1xuICAgIH1cbiAgfVxuXG4gICRfZ3V0dGVyOiBpZigkX2d1dHRlciA9PSAnbm8tZ3V0dGVycycgb3IgJF9ndXR0ZXIgPT0gJ25vLWd1dHRlcicsIG51bGwsICRfZ3V0dGVyKTtcblxuICBAcmV0dXJuICRfZ3V0dGVyO1xufVxuXG5cbi8vIEdldCBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGJlZm9yZSBhbmQgYWZ0ZXIgZ3V0dGVyIHZhbHVlcy5cbi8vIC0gWyRjb250ZXh0XTogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ2V0LWd1dHRlcnMoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRjb250ZXh0ICAgICAgICAgICAgOiBwYXJzZS1ndXR0ZXJzKCRjb250ZXh0KTtcblxuICAkX2d1dHRlci1wb3NpdGlvbiAgIDogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG4gICRfZ3V0dGVyICAgICAgICAgICAgOiBnZXQtZ3V0dGVyLXdpZHRoKCRjb250ZXh0KTtcblxuICAkX3JldHVybiAgICAgICAgICAgIDogKGJlZm9yZTogbnVsbCwgYWZ0ZXI6IG51bGwpO1xuXG4gIEBpZiBpcy1zcGxpdCgkY29udGV4dCkgYW5kICRfZ3V0dGVyIHtcbiAgICAkX2d1dHRlcjogJF9ndXR0ZXIgLyAyO1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChiZWZvcmU6ICRfZ3V0dGVyLCBhZnRlcjogJF9ndXR0ZXIpKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKCRfZ3V0dGVyLXBvc2l0aW9uOiAkX2d1dHRlcikpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBJcyBJbnNpZGVcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGd1dHRlcnMgYXJlIGluc2lkZS5cbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBpcy1pbnNpZGUoXG4gICRjb250ZXh0XG4pIHtcbiAgJF9pbnNpZGU6IGluc2lkZSBpbnNpZGUtc3RhdGljO1xuICAkX2d1dHRlci1wb3NpdGlvbjogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBpZihpbmRleCgkX2luc2lkZSwgJF9ndXR0ZXItcG9zaXRpb24pLCB0cnVlLCBmYWxzZSk7XG59XG5cblxuLy8gSXMgU3BsaXRcbi8vIC0tLS0tLS0tXG4vLyBSZXR1cm5zIHRydWUgaWYgZ3V0dGVycyBhcmUgc3BsaXQuXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gaXMtc3BsaXQoXG4gICRjb250ZXh0XG4pIHtcbiAgJF9zcGxpdDogc3BsaXQgaW5zaWRlIGluc2lkZS1zdGF0aWM7XG4gICRfZ3V0dGVyLXBvc2l0aW9uOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcblxuICBAcmV0dXJuIGlmKGluZGV4KCRfc3BsaXQsICRfZ3V0dGVyLXBvc2l0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xufVxuXG5cbi8vIEd1dHRlciBNYXRoXG4vLyAtLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSBtYXRoIHRvIHVzZSBmb3IgZ3V0dGVyIGNhbGN1bGF0aW9uc1xuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGd1dHRlci1tYXRoKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkX3JldHVybiAgOiBzdXN5LWdldChtYXRoLCAkY29udGV4dCk7XG4gICRfcmV0dXJuICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpID09IGluc2lkZS1zdGF0aWMsIHN0YXRpYywgJF9yZXR1cm4pO1xuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBJc29sYXRpb24gU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cblxuLy8gSXNvbGF0ZSBbTWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBpc29sYXRpb24gYXMgYW4gb3ZlcnJpZGUuXG4vLyAtICRsb2NhdGlvbjogPHNwYW4+XG5AbWl4aW4gaXNvbGF0ZShcbiAgJGlzb2xhdGU6IDFcbikge1xuICAkaW5zcGVjdDogJGlzb2xhdGU7XG5cbiAgJG91dHB1dDogKFxuICAgIHB1c2g6IGlzb2xhdGUoJGlzb2xhdGUpLFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRpc29sYXRlKSxcbiAgKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoaXNvbGF0ZSwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBpc29sYXRlLW91dHB1dCgkb3V0cHV0Li4uKTtcbn1cblxuXG4vLyBJc29sYXRlIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGFuIGlzb2xhdGlvbiBvZmZzZXQgd2lkdGguXG4vLyAtICRsb2NhdGlvbjogPHNwYW4+XG5AZnVuY3Rpb24gaXNvbGF0ZShcbiAgJGlzb2xhdGU6IDFcbikge1xuICAkaXNvbGF0ZTogcGFyc2Utc3BhbigkaXNvbGF0ZSk7XG4gICRpc29sYXRpb246IHN1c3ktZ2V0KHNwYW4sICRpc29sYXRlKTtcblxuICBAaWYgJGlzb2xhdGlvbiBhbmQgbm90KGdldC1sb2NhdGlvbigkaXNvbGF0ZSkpIHtcbiAgICAkbmV3OiAoXG4gICAgICBzcGFuOiBudWxsLFxuICAgICAgbG9jYXRpb246ICRpc29sYXRpb24sXG4gICAgKTtcbiAgICAkaXNvbGF0ZTogbWFwLW1lcmdlKCRpc29sYXRlLCAkbmV3KTtcbiAgfVxuXG4gIEByZXR1cm4gZ2V0LWlzb2xhdGlvbigkaXNvbGF0ZSk7XG59XG5cblxuLy8gR2V0IElzb2xhdGlvblxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSBpc29sYXRpb24gb2Zmc2V0IHdpZHRoXG4vLyAtICRpbnB1dDogPG1hcD5cbkBmdW5jdGlvbiBnZXQtaXNvbGF0aW9uKFxuICAkaW5wdXRcbikge1xuICAkbG9jYXRpb24gICA6IGdldC1sb2NhdGlvbigkaW5wdXQpO1xuICAkY29sdW1ucyAgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRpbnB1dCk7XG4gICR3aWR0aCAgICAgIDogbnVsbDtcblxuICBAaWYgdHlwZS1vZigkbG9jYXRpb24pID09IG51bWJlciBhbmQgbm90KHVuaXRsZXNzKCRsb2NhdGlvbikpIHtcbiAgICAkd2lkdGg6ICRsb2NhdGlvbjtcbiAgfSBAZWxzZSBpZiAkbG9jYXRpb24ge1xuICAgICRwdXNoOiAkbG9jYXRpb24gLSAxO1xuICAgIEBpZiAkcHVzaCA+IDAge1xuICAgICAgJHB1c2g6IG1hcC1tZXJnZSgkaW5wdXQsIChcbiAgICAgICAgc3BhbjogJHB1c2gsXG4gICAgICAgIGxvY2F0aW9uOiAxLFxuICAgICAgICBzcHJlYWQ6IHdpZGUsXG4gICAgICApKTtcbiAgICAgICR3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHB1c2gpO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRpbnB1dCkgPT0gc3BsaXRcbiAgICAgIGFuZCBzdXN5LWdldChndXR0ZXJzLCAkaW5wdXQpID4gMCB7XG4gICAgJHdpZHRoOiBpZigkd2lkdGggPT0gbnVsbCwgZ3V0dGVycygkaW5wdXQpLCAkd2lkdGggKyBndXR0ZXJzKCRpbnB1dCkpO1xuICB9XG5cbiAgQHJldHVybiAkd2lkdGggb3IgMDtcbn1cbiIsIi8vIEdhbGxlcnkgU3ludGF4XG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBHYWxsZXJ5XG4vLyAtLS0tLS0tXG4vLyBDcmVhdGUgYW4gaXNvbGF0ZWQgZ2FsbGVyeVxuLy8gLSAkc3BhbiAgICAgICAgOiA8c3Bhbj5cbi8vIC0gWyRzZWxlY3Rvcl0gIDogY2hpbGQgfCBvZi10eXBlXG5AbWl4aW4gZ2FsbGVyeShcbiAgJHNwYW4sXG4gICRzZWxlY3RvcjogY2hpbGRcbikge1xuICAkaW5zcGVjdCAgICA6ICRzcGFuO1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkc3BhbiAgICAgICA6IG1hcC1tZXJnZSgkc3BhbiwgKGxvY2F0aW9uOiAxKSk7XG5cbiAgJG4gICAgICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGNvbHVtbnMgICAgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKTtcbiAgJGNvbnRleHQgICAgICA6IHN1c3ktY291bnQoJGNvbHVtbnMpO1xuICAkZmxvdyAgICAgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuXG4gICRpbnNpZGUgICAgICAgOiBpcy1pbnNpZGUoJHNwYW4pO1xuICAkZnJvbSAgICAgICAgIDogZnJvbSgkZmxvdyk7XG4gICRsaW5lICAgICAgICAgOiBmbG9vcigkY29udGV4dCAvICRuKTtcbiAgJHN5bW1ldHJpY2FsICA6IGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKTtcblxuICAkb3V0cHV0OiAoXG4gICAgd2lkdGggICAgICAgICAgICAgOiBudWxsLFxuICAgIGZsb2F0ICAgICAgICAgICAgIDogZnJvbSxcbiAgICBtYXJnaW4tYmVmb3JlICAgICA6IG51bGwsXG4gICAgbWFyZ2luLWFmdGVyICAgICAgOiBudWxsLFxuICAgIHBhZGRpbmctYmVmb3JlICAgIDogbnVsbCxcbiAgICBwYWRkaW5nLWFmdGVyICAgICA6IG51bGwsXG4gICAgZmxvdyAgICAgICAgICAgICAgOiAkZmxvdyxcbiAgKTtcblxuICBAaWYgJGluc2lkZSB7XG4gICAgJGd1dHRlcnM6IGdldC1ndXR0ZXJzKCRzcGFuKTtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoJG91dHB1dCwgKFxuICAgICAgcGFkZGluZy1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSksXG4gICAgICBwYWRkaW5nLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlciksXG4gICAgKSk7XG4gIH1cblxuICBAaWYgJHN5bW1ldHJpY2FsIHtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoJG91dHB1dCwgKHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkc3BhbikpKTtcbiAgfVxuXG4gICRib3ggICAgICAgICAgOiBzdXN5LWdldChib3gtc2l6aW5nLCAkc3Bhbik7XG4gICRnbG9iYWwtYm94ICAgOiBpZihzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgPT0gJ2JvcmRlci1ib3gnLCB0cnVlLCBmYWxzZSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGdhbGxlcnksICRpbnNwZWN0KTtcblxuICAvLyBDb2xsZWN0aXZlIE91dHB1dFxuICBAaWYgJGJveCA9PSBib3JkZXItYm94IG9yICgkaW5zaWRlIGFuZCBub3QoJGJveCkgYW5kIG5vdCgkZ2xvYmFsLWJveCkpIHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6IGJvcmRlci1ib3gpKTtcbiAgfSBAZWxzZSBpZiAkYm94ID09IGNvbnRlbnQtYm94IHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6IGNvbnRlbnQtYm94KSk7XG4gIH1cblxuICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICAvLyBJbmRpdmlkdWFsIExvb3BcbiAgQGZvciAkaXRlbSBmcm9tIDEgdGhyb3VnaCAkbGluZSB7XG4gICAgJG50aDogJyN7JGxpbmV9biArICN7JGl0ZW19JztcbiAgICAmOm50aC0jeyRzZWxlY3Rvcn0oI3skbnRofSkge1xuICAgICAgLy8gSW5kaXZpZHVhbCBQcmVwXG4gICAgICAkb3V0cHV0OiAoXG4gICAgICAgIHdpZHRoICAgICAgICAgICAgIDogaWYoJHN5bW1ldHJpY2FsLCBudWxsLCBnZXQtc3Bhbi13aWR0aCgkc3BhbikpLFxuICAgICAgICBmbG9hdCAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgIG1hcmdpbi1iZWZvcmUgICAgIDogZ2V0LWlzb2xhdGlvbigkc3BhbiksXG4gICAgICAgIG1hcmdpbi1hZnRlciAgICAgIDogLTEwMCUsXG4gICAgICAgIHBhZGRpbmctYmVmb3JlICAgIDogbnVsbCxcbiAgICAgICAgcGFkZGluZy1hZnRlciAgICAgOiBudWxsLFxuICAgICAgICBmbG93ICAgICAgICAgICAgICA6ICRmbG93LFxuICAgICAgKTtcblxuICAgICAgLy8gSW5kaXZpZHVhbCBPdXRwdXRcbiAgICAgIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gICAgICBAaWYgZ2V0LWVkZ2UoJHNwYW4pID09IGZpcnN0IHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWs7XG4gICAgICAgIEBpbmNsdWRlIGZpcnN0KCRzcGFuKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBAaW5jbHVkZSBub2JyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBJbmRpdmlkdWFsIExvY2F0aW9uIEluY3JlbWVudFxuICAgICAgJGxvY2F0aW9uOiBnZXQtbG9jYXRpb24oJHNwYW4pICsgJG47XG4gICAgICAkbG9jYXRpb246IGlmKCRsb2NhdGlvbiA+ICRjb250ZXh0LCAxLCAkbG9jYXRpb24pO1xuICAgICAgJHNwYW46IG1hcC1tZXJnZSgkc3BhbiwgKGxvY2F0aW9uOiAkbG9jYXRpb24pKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIFJvdyBTdGFydCAmIEVuZFxuLy8gPT09PT09PT09PT09PT09XG5cbi8vIEJyZWFrXG4vLyAtLS0tLVxuLy8gQXBwbHkgdG8gYW55IGVsZW1lbnQgdGhhdCBzaG91bGQgZm9yY2UgYSBsaW5lIGJyZWFrLlxuQG1peGluIGJyZWFrIHtcbiAgQGluY2x1ZGUgb3V0cHV0KChjbGVhcjogYm90aCkpO1xufVxuXG5cbi8vIE5vQnJlYWtcbi8vIC0tLS0tLS1cbi8vIENhbmNlbCB0aGUgYnJlYWsoKSBlZmZlY3QsIGUuZy4gd2hlbiB1c2luZyBtZWRpYSBxdWVyaWVzLlxuQG1peGluIG5vYnJlYWsge1xuICBAaW5jbHVkZSBvdXRwdXQoKGNsZWFyOiBub25lKSk7XG59XG5cblxuLy8gRnVsbFxuLy8gLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8bGF5b3V0IHNob3J0aGFuZD5cbkBtaXhpbiBmdWxsKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCA6ICRjb250ZXh0O1xuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZnVsbCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBzcGFuKGZ1bGwgb2YgcGFyc2UtZ3JpZCgkY29udGV4dCkgYnJlYWspO1xufVxuXG5cbi8vIEZpcnN0XG4vLyAtLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8c2V0dGluZ3M+XG5AbWl4aW4gZmlyc3QoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1ncmlkKCRjb250ZXh0KTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJGNvbnRleHQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChmaXJzdCwgJGluc3BlY3QpO1xuICBAaWYgbm90KGlzLXNwbGl0KCRjb250ZXh0KSkge1xuICAgIEBpbmNsdWRlIGZsb2F0LWZpcnN0KCRmbG93KTtcbiAgfVxufVxuXG5AbWl4aW4gYWxwaGEoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGZpcnN0KCRjb250ZXh0KTtcbn1cblxuXG4vLyBMYXN0XG4vLyAtLS0tXG4vLyAtIFskY29udGV4dF06IDxzZXR0aW5ncz5cbkBtaXhpbiBsYXN0KFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3JpZCgkY29udGV4dCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGxhc3QsICRpbnNwZWN0KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvdzogc3VzeS1nZXQoZmxvdywgJGNvbnRleHQpLFxuICAgIGxhc3QtZmxvdzogc3VzeS1nZXQobGFzdC1mbG93LCAkY29udGV4dCksXG4gICAgbWFyZ2luOiBpZihpcy1zcGxpdCgkY29udGV4dCksIG51bGwsIDApLFxuICApO1xuXG4gIEBpbmNsdWRlIGZsb2F0LWxhc3QoJG91dHB1dC4uLik7XG59XG5cbkBtaXhpbiBvbWVnYShcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgbGFzdCgkY29udGV4dCk7XG59XG5cblxuLy8gR2V0IEVkZ2Vcbi8vIC0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgZWRnZSB2YWx1ZSBiYXNlZCBvbiBsb2NhdGlvbiwgaWYgcG9zc2libGVcbkBmdW5jdGlvbiBnZXQtZWRnZShcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkZWRnZSAgICAgICA6IHN1c3ktZ2V0KGVkZ2UsICRzcGFuKTtcblxuICBAaWYgbm90KCRlZGdlKSB7XG4gICAgJGNvdW50OiBzdXN5LWNvdW50KHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKSk7XG4gICAgJGxvY2F0aW9uOiBzdXN5LWdldChsb2NhdGlvbiwgJHNwYW4pO1xuICAgICRuOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG5cbiAgICAkbnVtYmVyOiBpZih0eXBlLW9mKCRsb2NhdGlvbikgPT0gbnVtYmVyLCB0cnVlLCBmYWxzZSk7XG4gICAgJGluZGV4OiBpZigkbnVtYmVyIGFuZCB1bml0bGVzcygkbG9jYXRpb24pLCB0cnVlLCBmYWxzZSk7XG5cbiAgICBAaWYgJG4gPT0gJGNvdW50IHtcbiAgICAgICRlZGdlOiBmdWxsO1xuICAgIH0gQGVsc2UgaWYgJGxvY2F0aW9uIGFuZCAkbiBhbmQgJGluZGV4IHtcbiAgICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAgICRlZGdlOiBpZigkbiA9PSAkY291bnQsIGZ1bGwsIGZpcnN0KTtcbiAgICAgIH0gQGVsc2UgaWYgJGxvY2F0aW9uICsgJG4gLSAxID09ICRjb3VudCB7XG4gICAgICAgICRlZGdlOiBsYXN0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpZiAkZWRnZSA9PSBhbHBoYSBvciAkZWRnZSA9PSBvbWVnYSB7XG4gICAgJGVkZ2U6IGlmKCRlZGdlID09IGFscGhhLCBmaXJzdCwgbGFzdCk7XG4gIH1cblxuICBAcmV0dXJuICRlZGdlO1xufVxuXG5cbi8vIEdldCBMb2NhdGlvblxuLy8gLS0tLS0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgbG9jYXRpb24gdmFsdWUgYmFzZWQgb24gZWRnZSwgaWYgcG9zc2libGVcbkBmdW5jdGlvbiBnZXQtbG9jYXRpb24oXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJGxvY2F0aW9uICAgOiBzdXN5LWdldChsb2NhdGlvbiwgJHNwYW4pO1xuICAkZWRnZSAgICAgICA6IGdldC1lZGdlKCRzcGFuKTtcbiAgJG4gICAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG5cbiAgQGlmICRlZGdlIGFuZCBub3QoJGxvY2F0aW9uKSBhbmQgdHlwZS1vZigkbikgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkbikge1xuICAgIEBpZiAkZWRnZSA9PSBmaXJzdCB7XG4gICAgICAkbG9jYXRpb246IDE7XG4gICAgfSBAZWxzZSBpZiAkZWRnZSA9PSBsYXN0IHtcbiAgICAgICRsb2NhdGlvbjogc3VzeS1jb3VudChzdXN5LWdldChjb2x1bW5zLCAkc3BhbikpIC0gJG4gKyAxO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGxvY2F0aW9uXG59XG4iLCIvLyBNYXJnaW4gU3ludGF4XG4vLyA9PT09PT09PT09PT09XG5cbi8vIFByZVxuLy8gLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHJlKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0OiAkc3BhbjtcbiAgJHNwYW4gICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkc3BsaXQgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJGd1dHRlciA6IGd1dHRlcigkc3Bhbik7XG4gICRzcGFuICAgOiBzcGFuKCRzcGFuKTtcbiAgJHdpZHRoICA6IGlmKCRzcGxpdCBhbmQgJGd1dHRlciwgJHNwYW4gKyAkZ3V0dGVyLCAkc3Bhbik7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHByZSwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCR3aWR0aCwgbnVsbCwgJGZsb3cpO1xufVxuXG4vLyBQb3N0XG4vLyAtLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwb3N0KFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkc3BsaXQgICAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKSA9PSBzcGxpdCwgdHJ1ZSwgZmFsc2UpO1xuICAkd2lkdGggICAgOiBpZigkc3BsaXQsIHNwYW4oJHNwYW4pICsgZ3V0dGVyKCRzcGFuKSwgc3Bhbigkc3BhbikpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwb3N0LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQobnVsbCwgJHdpZHRoLCAkZmxvdyk7XG59XG5cbi8vIFB1c2hcbi8vIC0tLS1cbi8vIFNpbXBsZSBzeW5vbnltbiBmb3IgcHJlLlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwdXNoKFxuICAkc3BhblxuKSB7XG4gIEBpbmNsdWRlIHByZSgkc3Bhbik7XG59XG5cbi8vIFB1bGxcbi8vIC0tLS1cbi8vIEFkZCBuZWdhdGl2ZSBzcGFubmluZy1tYXJnaW5zIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwdWxsKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkc3BsaXQgICAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKSA9PSBzcGxpdCwgdHJ1ZSwgZmFsc2UpO1xuICAkd2lkdGggICAgOiBpZigkc3BsaXQsIDAgLSBzcGFuKCRzcGFuKSArIGd1dHRlcigkc3BhbiksIDAgLSBzcGFuKCRzcGFuKSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHB1bGwsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gU3F1aXNoXG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1tYXJnaW5zIGJlZm9yZSBhbmQgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHByZSAgICAgOiA8c3Bhbj5cbi8vIC0gWyRwb3N0XSAgOiA8c3Bhbj5cbkBtaXhpbiBzcXVpc2goXG4gICRwcmUsXG4gICRwb3N0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICAgICAgOiAoJHByZSwgJHBvc3QpO1xuICAkcHJlICAgICAgICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwcmUpKTtcblxuICBAaWYgJHBvc3Qge1xuICAgICRwb3N0OiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHBvc3QpKTtcbiAgfSBAZWxzZSB7XG4gICAgJHNwYW46IHN1c3ktZ2V0KHNwYW4sICRwcmUpO1xuICAgIEBpZiBsZW5ndGgoJHNwYW4pID4gMSB7XG4gICAgICAkcHJlOiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMSkpKTtcbiAgICAgICRwb3N0OiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMikpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwb3N0OiAkcHJlO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzcXVpc2gsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcHJlKCRwcmUpO1xuICBAaW5jbHVkZSBwb3N0KCRwb3N0KTtcbn1cbiIsIi8vIFBhZGRpbmcgU3ludGF4XG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBQcmVmaXhcbi8vIC0tLS0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHByZWZpeChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHdpZHRoICAgIDogc3Bhbigkc3Bhbik7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgICRndXR0ZXI6IGd1dHRlcigkc3Bhbik7XG4gICAgJHdpZHRoOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCR3aWR0aCwgJGd1dHRlciksICR3aWR0aCArICRndXR0ZXIsICR3aWR0aCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocHJlZml4LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KCR3aWR0aCwgbnVsbCwgJGZsb3cpO1xufVxuXG4vLyBTdWZmaXhcbi8vIC0tLS0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gc3VmZml4KFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkd2lkdGggICAgOiBzcGFuKCRzcGFuKTtcblxuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgJGd1dHRlcjogZ3V0dGVyKCRzcGFuKTtcbiAgICAkd2lkdGg6IGlmKCRndXR0ZXIgYW5kIGNvbXBhcmFibGUoJHdpZHRoLCAkZ3V0dGVyKSwgJHdpZHRoICsgJGd1dHRlciwgJHdpZHRoKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzdWZmaXgsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcGFkZGluZy1vdXRwdXQobnVsbCwgJHdpZHRoLCAkZmxvdyk7XG59XG5cbi8vIFBhZFxuLy8gLS0tXG4vLyBBZGQgc3Bhbm5pbmctcGFkZGluZyBiZWZvcmUgYW5kIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRwcmUgICAgIDogPHNwYW4+XG4vLyAtIFskcG9zdF0gIDogPHNwYW4+XG5AbWl4aW4gcGFkKFxuICAkcHJlLFxuICAkcG9zdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAoJHByZSwgJHBvc3QpO1xuICAkcHJlICAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHByZSkpO1xuXG4gIEBpZiAkcG9zdCB7XG4gICAgJHBvc3Q6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcG9zdCkpO1xuICB9IEBlbHNlIHtcbiAgICAkc3Bhbjogc3VzeS1nZXQoc3BhbiwgJHByZSk7XG4gICAgQGlmIGxlbmd0aCgkc3BhbikgPiAxIHtcbiAgICAgICRwcmU6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAxKSkpO1xuICAgICAgJHBvc3Q6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAyKSkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHBvc3Q6ICRwcmU7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHBhZCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwcmVmaXgoJHByZSk7XG4gIEBpbmNsdWRlIHN1ZmZpeCgkcG9zdCk7XG5cbn1cbiIsIi8vIEJsZWVkIFN5bnRheFxuLy8gPT09PT09PT09PT09XG5cbi8vIEJsZWVkXG4vLyAtLS0tLVxuLy8gQWRkIG5lZ2F0aXZlIG1hcmdpbnMsIGFuZCBlcXVhbCBwb3NpdGl2ZSBwYWRkaW5nIHRvIGNyZWF0ZSBibGVlZC5cbi8vIC0gJGJsZWVkICA6IDxzcGFuPlxuQG1peGluIGJsZWVkKFxuICAkYmxlZWQ6IDAgZ3V0dGVyKClcbikge1xuICAkaW5zcGVjdCAgOiAkYmxlZWQ7XG4gICRvdXRwdXQgICA6IGdldC1ibGVlZCgkYmxlZWQpO1xuXG4gIEBpZiBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgIT0gY29udGVudC1ib3gge1xuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgoYm94LXNpemluZzogY29udGVudC1ib3gpLCAkb3V0cHV0KTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChibGVlZCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG5cblxuLy8gQmxlZWQteFxuLy8gLS0tLS0tLVxuLy8gU2hvcnRjdXQgZm9yIGhvcml6b250YWwgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZC14KFxuICAkYmxlZWQ6IGd1dHRlcigpXG4pIHtcbiAgJGJsZWVkICA6IHBhcnNlLXNwYW4oJGJsZWVkKTtcbiAgJHRyYmwgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG5cbiAgQGlmIGxlbmd0aCgkdHJibCkgPT0gMSB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogMCBudGgoJHRyYmwsIDEpKSk7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCR0cmJsKSA9PSAyIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiAwIG50aCgkdHJibCwgMikgMCBudGgoJHRyYmwsIDEpKSk7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuICdibGVlZC14IG9ubHkgdGFrZXMgMiBsZW5ndGhzLCBidXQgI3tsZW5ndGgoJHRyYmwpfSB3ZXJlIHBhc3NlZC4nO1xuICB9XG5cbiAgQGluY2x1ZGUgYmxlZWQoJGJsZWVkKTtcbn1cblxuXG4vLyBCbGVlZC15XG4vLyAtLS0tLS0tXG4vLyBTaG9ydGN1dCBmb3IgdmVydGljYWwgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZC15KFxuICAkYmxlZWQ6IGlmKGZ1bmN0aW9uLWV4aXN0cyhyaHl0aG0pLCByaHl0aG0oMSksIDFlbSlcbikge1xuICAkYmxlZWQgIDogcGFyc2Utc3BhbigkYmxlZWQpO1xuICAkdHJibCAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcblxuICBAaWYgbGVuZ3RoKCR0cmJsKSA9PSAxIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiBudGgoJHRyYmwsIDEpIDApKTtcbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHRyYmwpID09IDIge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IG50aCgkdHJibCwgMSkgMCBudGgoJHRyYmwsIDIpIDApKTtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gJ2JsZWVkLXkgb25seSB0YWtlcyAyIGxlbmd0aHMsIGJ1dCAje2xlbmd0aCgkdHJibCl9IHdlcmUgcGFzc2VkLic7XG4gIH1cblxuICBAaW5jbHVkZSBibGVlZCgkYmxlZWQpO1xufVxuXG5cbi8vIEdldCBCbGVlZFxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gYmxlZWQgb3V0cHV0IHZhbHVlc1xuLy8gLSAkYmxlZWQ6IDxzcGFuPlxuQGZ1bmN0aW9uIGdldC1ibGVlZChcbiAgJGJsZWVkXG4pIHtcbiAgJGJsZWVkICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRibGVlZCkpO1xuICAkdHJibCAgICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuICAkc2hvcnQgICAgOiBudWxsO1xuICAkb3V0cHV0ICAgOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIGxlbmd0aCgkdHJibCkge1xuICAgICR0aGlzOiBudGgoJHRyYmwsICRpKTtcbiAgICAkbmV3OiAoKTtcbiAgICAkbWFyZ2luOiBudWxsO1xuICAgICRwYWRkaW5nOiBudWxsO1xuICAgICRwYWRkaW5nLXg6IG51bGw7XG5cbiAgICBAaWYgJHRoaXMgPiAwIHtcbiAgICAgICR0aGlzOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogJHRoaXMpKTtcbiAgICAgICRtYXJnaW46IHNwYW4oJHRoaXMpO1xuICAgICAgJHBhZGRpbmc6ICRtYXJnaW47XG4gICAgICAkcGFkZGluZy14OiAkcGFkZGluZztcbiAgICB9XG5cbiAgICBAaWYgJG1hcmdpbiBhbmQgJG1hcmdpbiA+IDAge1xuICAgICAgJG1hcmdpbjogLSAkbWFyZ2luO1xuXG4gICAgICBAaWYgaXMtaW5zaWRlKCR0aGlzKSB7XG4gICAgICAgICRndXR0ZXI6IGd1dHRlcigkdGhpcyk7XG4gICAgICAgICRqb2luOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCRwYWRkaW5nLCAkZ3V0dGVyKSwgdHJ1ZSwgZmFsc2UpO1xuICAgICAgICAkcGFkZGluZy14OiBpZigkam9pbiBhbmQgJHBhZGRpbmcgPiAwLCAkcGFkZGluZyArICRndXR0ZXIsICRwYWRkaW5nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgJGkgPT0gMSB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZyxcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14LFxuICAgICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcsXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gMiB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteCxcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSAzIHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDQge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoJG91dHB1dCwgJG5ldyk7XG4gIH1cblxuICBAZWFjaCAkcHJvcCwgJHZhbHVlIGluICRvdXRwdXQge1xuICAgICRvdXRwdXQ6IGlmKCR2YWx1ZSA9PSAwLCBtYXAtbWVyZ2UoJG91dHB1dCwgKCRwcm9wOiBudWxsKSksICRvdXRwdXQpO1xuICB9XG5cbiAgQHJldHVybiBibGVlZC1zaG9ydGhhbmQoJG91dHB1dCk7XG59XG5cbi8vIEJsZWVkIFNob3J0aGFuZFxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBDb252ZXJ0IGJsZWVkIG91dHB1dCBpbnRvIHNob3J0aGFuZCB3aGVuIHBvc3NpYmxlLlxuLy8gLSAkYmxlZWQ6IDxvdXRwdXQgbWFwPlxuQGZ1bmN0aW9uIGJsZWVkLXNob3J0aGFuZChcbiAgJGJsZWVkXG4pIHtcbiAgJG1hcmdpbjogKCk7XG4gICRwYWRkaW5nOiAoKTtcbiAgJHJldHVybjogKCk7XG5cbiAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRibGVlZCB7XG4gICAgQGlmIHN0ci1pbmRleCgka2V5LCBtYXJnaW4pIHtcbiAgICAgICRtYXJnaW46IG1hcC1tZXJnZSgkbWFyZ2luLCAoJGtleTogJHZhbHVlKSk7XG4gICAgfSBAZWxzZSBpZiBzdHItaW5kZXgoJGtleSwgcGFkZGluZykgPiAwIHtcbiAgICAgICRwYWRkaW5nOiBtYXAtbWVyZ2UoJHBhZGRpbmcsICgka2V5OiAkdmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICAkcHJvcHM6IChcbiAgICBtYXJnaW46ICRtYXJnaW4sXG4gICAgcGFkZGluZzogJHBhZGRpbmcsXG4gICk7XG5cbiAgQGVhY2ggJG5hbWUsICRtYXAgaW4gJHByb3BzIHtcbiAgICAkZm91cjogaWYobGVuZ3RoKG1hcC1rZXlzKCRtYXApKSA9PSA0LCB0cnVlLCBmYWxzZSk7XG4gICAgJG51bGw6IGlmKGluZGV4KG1hcC12YWx1ZXMoJG1hcCksIG51bGwpLCB0cnVlLCBmYWxzZSk7XG5cbiAgICBAaWYgJGZvdXIgYW5kIG5vdCgkbnVsbCkge1xuICAgICAgJHRvcDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tdG9wJyk7XG4gICAgICAkcmlnaHQ6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LXJpZ2h0Jyk7XG4gICAgICAkYm90dG9tOiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1ib3R0b20nKTtcbiAgICAgICRsZWZ0OiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1sZWZ0Jyk7XG5cbiAgICAgICR0YjogaWYoJHRvcCA9PSAkYm90dG9tLCAkdG9wLCBudWxsKTtcbiAgICAgICRybDogaWYoJHJpZ2h0ID09ICRsZWZ0LCAkcmlnaHQsIG51bGwpO1xuICAgICAgJGFsbDogaWYoJHRiID09ICRybCwgJHRiLCBudWxsKTtcblxuICAgICAgJG5ldzogaWYoJGFsbCwgJGFsbCwgbnVsbCk7XG5cbiAgICAgIEBpZiBub3QoJG5ldykge1xuICAgICAgICBAaWYgJHRiIGFuZCAkcmwge1xuICAgICAgICAgICRuZXc6ICR0YiAkcmw7XG4gICAgICAgIH0gQGVsc2UgaWYgJHJsIHtcbiAgICAgICAgICAkbmV3OiAkdG9wICRybCAkYm90dG9tO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAkbmV3OiAkdG9wICRyaWdodCAkYm90dG9tICRsZWZ0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICRyZXR1cm46IG1hcC1tZXJnZSgkcmV0dXJuLCAoJG5hbWU6ICRuZXcpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRyZXR1cm46IG1hcC1tZXJnZSgkcmV0dXJuLCAkbWFwKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG4iLCIvLyBCcmVha3BvaW50IEludGVncmF0aW9uXG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cbiRzdXN5LW1lZGlhOiAoKSAhZGVmYXVsdDtcbiRzdXN5LW1lZGlhLWZhbGxiYWNrOiBmYWxzZSAhZGVmYXVsdDtcblxuJF9zdXN5LW1lZGlhLWNvbnRleHQ6ICgpO1xuXG5cbi8vIFN1c3kgQnJlYWtwb2ludFxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGFuZ2UgZ3JpZHMgYXQgZGlmZmVyZW50IG1lZGlhIHF1ZXJ5IGJyZWFrcG9pbnRzLlxuLy8gLSAkcXVlcnkgICAgIDogPG1pbi13aWR0aD4gWzxtYXgtd2lkdGg+XSB8IDxwcm9wZXJ0eT4gPHZhbHVlPiB8IDxtYXA+XG4vLyAtICRsYXlvdXQgICAgOiA8c2V0dGluZ3M+XG4vLyAtICRuby1xdWVyeSAgOiA8Ym9vbGVhbj4gfCA8c2VsZWN0b3I+XG5AbWl4aW4gc3VzeS1icmVha3BvaW50KFxuICAkcXVlcnksXG4gICRsYXlvdXQ6IGZhbHNlLFxuICAkbm8tcXVlcnk6ICRzdXN5LW1lZGlhLWZhbGxiYWNrXG4pIHtcbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1yb3V0ZXIoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICBAaWYgJGxheW91dCB7XG4gICAgICBAaW5jbHVkZSB3aXRoLWxheW91dCgkbGF5b3V0KSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cblxuLy8gU3VzeSBNZWRpYVxuLy8gLS0tLS0tLS0tLVxuLy8gLSAkcXVlcnk6IDxtaW4td2lkdGg+IFs8bWF4LXdpZHRoPl0gfCA8cHJvcGVydHk+IDx2YWx1ZT5cbi8vIC0gJG5vLXF1ZXJ5OiA8Ym9vbGVhbj4gfCA8c2VsZWN0b3I+XG5AbWl4aW4gc3VzeS1tZWRpYShcbiAgJHF1ZXJ5LFxuICAkbm8tcXVlcnk6ICRzdXN5LW1lZGlhLWZhbGxiYWNrXG4pIHtcbiAgJG9sZC1jb250ZXh0OiAkX3N1c3ktbWVkaWEtY29udGV4dDtcbiAgJG5hbWU6IGlmKG1hcC1oYXMta2V5KCRzdXN5LW1lZGlhLCAkcXVlcnkpLCAkcXVlcnksIG51bGwpO1xuICAkcXVlcnk6IHN1c3ktZ2V0LW1lZGlhKCRxdWVyeSk7XG4gICRxdWVyeTogc3VzeS1wYXJzZS1tZWRpYSgkcXVlcnkpO1xuXG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtY29udGV4dCgkcXVlcnksICRuYW1lKTtcblxuICBAaWYgJG5vLXF1ZXJ5IGFuZCB0eXBlLW9mKCRuby1xdWVyeSkgIT0gc3RyaW5nIHtcbiAgICBAY29udGVudDtcbiAgfSBAZWxzZSB7XG4gICAgQG1lZGlhICN7c3VzeS1yZW5kZXItbWVkaWEoJHF1ZXJ5KX0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgQGlmIHR5cGUtb2YoJG5vLXF1ZXJ5KSA9PSBzdHJpbmcge1xuICAgICAgI3skbm8tcXVlcnl9ICYge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LW1lZGlhLWNvbnRleHQoJG9sZC1jb250ZXh0LCAkY2xlYW46IHRydWUpO1xufVxuXG5cbi8vIE1lZGlhIFJvdXRlclxuLy8gLS0tLS0tLS0tLS0tXG4vLyBSb3V0IG1lZGlhIGFyZ3VtZW50cyB0byB0aGUgY29ycmVjdCBtaXhpbi5cbkBtaXhpbiBzdXN5LW1lZGlhLXJvdXRlcihcbiAgJHF1ZXJ5LFxuICAkbm8tcXVlcnk6ICRzdXN5LW1lZGlhLWZhbGxiYWNrXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChicmVha3BvaW50LCAobWl4aW46IGJyZWFrcG9pbnQpLCAkd2FybjogZmFsc2UpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktbWVkaWEoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFVwZGF0ZSBDb250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBTZXQgdGhlIG5ldyBtZWRpYSBjb250ZXh0XG5AbWl4aW4gc3VzeS1tZWRpYS1jb250ZXh0KFxuICAkcXVlcnksXG4gICRuYW1lOiBudWxsLFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJHF1ZXJ5OiBtYXAtbWVyZ2UoKG5hbWU6ICRuYW1lKSwgJHF1ZXJ5KTtcblxuICBAaWYgJGNsZWFuIHtcbiAgICAkX3N1c3ktbWVkaWEtY29udGV4dDogJHF1ZXJ5ICFnbG9iYWw7XG4gIH0gQGVsc2Uge1xuICAgICRfc3VzeS1tZWRpYS1jb250ZXh0OiBtYXAtbWVyZ2UoJF9zdXN5LW1lZGlhLWNvbnRleHQsICRxdWVyeSkgIWdsb2JhbDtcbiAgfVxufVxuXG5cbi8vIE1lZGlhIENvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgZnVsbCBtZWRpYSBjb250ZXh0LCBvciBhIHNpbmdsZSBtZWRpYSBwcm9wZXJ0eSAoZS5nLiBtaW4td2lkdGgpXG5AZnVuY3Rpb24gc3VzeS1tZWRpYS1jb250ZXh0KFxuICAkcHJvcGVydHk6IGZhbHNlXG4pIHtcbiAgQGlmICRwcm9wZXJ0eSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRfc3VzeS1tZWRpYS1jb250ZXh0LCAkcHJvcGVydHkpO1xuICB9IEBlbHNlIHtcbiAgICBAcmV0dXJuICRfc3VzeS1tZWRpYS1jb250ZXh0O1xuICB9XG59XG5cblxuLy8gR2V0IE1lZGlhXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybiBhIG5hbWVkIG1lZGlhLXF1ZXJ5IGZyb20gJHN1c3ktbWVkaWEuXG4vLyAtICRuYW1lOiA8a2V5PlxuQGZ1bmN0aW9uIHN1c3ktZ2V0LW1lZGlhKFxuICAkbmFtZVxuKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkc3VzeS1tZWRpYSwgJG5hbWUpIHtcbiAgICAkbWFwLXZhbHVlOiBtYXAtZ2V0KCRzdXN5LW1lZGlhLCAkbmFtZSk7XG4gICAgQGlmICgkbmFtZSA9PSAkbWFwLXZhbHVlKSB7XG4gICAgICAkbmFtZTogJG1hcC12YWx1ZTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRuYW1lOiBzdXN5LWdldC1tZWRpYSgkbWFwLXZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRuYW1lO1xufVxuXG5cbi8vIFJlbmRlciBNZWRpYVxuLy8gLS0tLS0tLS0tLS0tXG4vLyBCdWlsZCBhIG1lZGlhLXF1ZXJ5IHN0cmluZyBmcm9tIHZhcmlvdXMgbWVkaWEgc2V0dGluZ3NcbkBmdW5jdGlvbiBzdXN5LXJlbmRlci1tZWRpYShcbiAgJHF1ZXJ5XG4pIHtcbiAgJG91dHB1dDogbnVsbDtcbiAgQGVhY2ggJHByb3BlcnR5LCAkdmFsdWUgaW4gJHF1ZXJ5IHtcbiAgICAkc3RyaW5nOiBudWxsO1xuXG4gICAgQGlmICRwcm9wZXJ0eSA9PSBtZWRpYSB7XG4gICAgICAkc3RyaW5nOiAkdmFsdWU7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkc3RyaW5nOiAnKCN7JHByb3BlcnR5fTogI3skdmFsdWV9KSc7XG4gICAgfVxuXG4gICAgJG91dHB1dDogaWYoJG91dHB1dCwgJyN7JG91dHB1dH0gYW5kICN7JHN0cmluZ30nLCAkc3RyaW5nKTtcbiAgfVxuXG4gIEByZXR1cm4gJG91dHB1dDtcbn1cblxuXG4vLyBQYXJzZSBNZWRpYVxuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiBwYXJzZWQgbWVkaWEtcXVlcnkgc2V0dGluZ3MgYmFzZWQgb24gc2hvcnRoYW5kXG5AZnVuY3Rpb24gc3VzeS1wYXJzZS1tZWRpYShcbiAgJHF1ZXJ5XG4pIHtcbiAgJG1xOiBudWxsO1xuICBAaWYgdHlwZS1vZigkcXVlcnkpID09IG1hcCB7XG4gICAgJG1xOiAkcXVlcnk7XG4gIH0gQGVsc2UgaWYgdHlwZS1vZigkcXVlcnkpID09IG51bWJlciB7XG4gICAgJG1xOiAobWluLXdpZHRoOiAkcXVlcnkpO1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBsaXN0IGFuZCBsZW5ndGgoJHF1ZXJ5KSA9PSAyIHtcbiAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gbnVtYmVyIHtcbiAgICAgICRtcTogKFxuICAgICAgICBtaW4td2lkdGg6IG1pbigkcXVlcnkuLi4pLFxuICAgICAgICBtYXgtd2lkdGg6IG1heCgkcXVlcnkuLi4pLFxuICAgICAgKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRtcTogKG50aCgkcXVlcnksIDEpOiBudGgoJHF1ZXJ5LCAyKSk7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAkbXE6IChtZWRpYTogJyN7JHF1ZXJ5fScpO1xuICB9XG5cbiAgQHJldHVybiAkbXE7XG59XG4iLCIvKiEgbm9ybWFsaXplLmNzcyB2NC4xLjEgfCBNSVQgTGljZW5zZSB8IGdpdGh1Yi5jb20vbmVjb2xhcy9ub3JtYWxpemUuY3NzICovXG5cbi8qKlxuICogMS4gQ2hhbmdlIHRoZSBkZWZhdWx0IGZvbnQgZmFtaWx5IGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxuICogMi4gUHJldmVudCBhZGp1c3RtZW50cyBvZiBmb250IHNpemUgYWZ0ZXIgb3JpZW50YXRpb24gY2hhbmdlcyBpbiBJRSBhbmQgaU9TLlxuICovXG5cbmh0bWwge1xuICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsgLyogMSAqL1xuICAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLyogMiAqL1xuICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8qIDIgKi9cbn1cblxuXG4vKiBhcHBseSBhIG5hdHVyYWwgYm94IGxheW91dCBtb2RlbCB0byBhbGwgZWxlbWVudHMsIGJ1dCBhbGxvd2luZyBjb21wb25lbnRzIHRvIGNoYW5nZSAqL1xuaHRtbCB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4qLCAqOmJlZm9yZSwgKjphZnRlciB7XG4gIGJveC1zaXppbmc6IGluaGVyaXQ7XG59XG5cblxuLyoqXG4gKiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBhbGwgYnJvd3NlcnMgKG9waW5pb25hdGVkKS5cbiAqL1xuXG5ib2R5IHtcbiAgbWFyZ2luOiAwO1xufVxuXG4vKiBIVE1MNSBkaXNwbGF5IGRlZmluaXRpb25zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDktLlxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gRWRnZSwgSUUsIGFuZCBGaXJlZm94LlxuICogMi4gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUuXG4gKi9cblxuYXJ0aWNsZSxcbmFzaWRlLFxuZGV0YWlscywgLyogMSAqL1xuZmlnY2FwdGlvbixcbmZpZ3VyZSxcbmZvb3RlcixcbmhlYWRlcixcbm1haW4sIC8qIDIgKi9cbm1lbnUsXG5uYXYsXG5zZWN0aW9uLFxuc3VtbWFyeSB7IC8qIDEgKi9cbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgOS0uXG4gKi9cblxuYXVkaW8sXG5jYW52YXMsXG5wcm9ncmVzcyxcbnZpZGVvIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIGlPUyA0LTcuXG4gKi9cblxuYXVkaW86bm90KFtjb250cm9sc10pIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgaGVpZ2h0OiAwO1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCB2ZXJ0aWNhbCBhbGlnbm1lbnQgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXG4gKi9cblxucHJvZ3Jlc3Mge1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgMTAtLlxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUuXG4gKi9cblxudGVtcGxhdGUsIC8qIDEgKi9cbltoaWRkZW5dIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLyogTGlua3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogMS4gUmVtb3ZlIHRoZSBncmF5IGJhY2tncm91bmQgb24gYWN0aXZlIGxpbmtzIGluIElFIDEwLlxuICogMi4gUmVtb3ZlIGdhcHMgaW4gbGlua3MgdW5kZXJsaW5lIGluIGlPUyA4KyBhbmQgU2FmYXJpIDgrLlxuICovXG5cbmEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgLyogMSAqL1xuICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbi1za2lwOiBvYmplY3RzOyAvKiAyICovXG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBvdXRsaW5lIG9uIGZvY3VzZWQgbGlua3Mgd2hlbiB0aGV5IGFyZSBhbHNvIGFjdGl2ZSBvciBob3ZlcmVkXG4gKiBpbiBhbGwgYnJvd3NlcnMgKG9waW5pb25hdGVkKS5cbiAqL1xuXG5hOmFjdGl2ZSxcbmE6aG92ZXIge1xuICBvdXRsaW5lLXdpZHRoOiAwO1xufVxuXG4vKiBUZXh0LWxldmVsIHNlbWFudGljc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiAxLiBSZW1vdmUgdGhlIGJvdHRvbSBib3JkZXIgaW4gRmlyZWZveCAzOS0uXG4gKiAyLiBBZGQgdGhlIGNvcnJlY3QgdGV4dCBkZWNvcmF0aW9uIGluIENocm9tZSwgRWRnZSwgSUUsIE9wZXJhLCBhbmQgU2FmYXJpLlxuICovXG5cbmFiYnJbdGl0bGVdIHtcbiAgYm9yZGVyLWJvdHRvbTogbm9uZTsgLyogMSAqL1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgLyogMiAqL1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBQcmV2ZW50IHRoZSBkdXBsaWNhdGUgYXBwbGljYXRpb24gb2YgYGJvbGRlcmAgYnkgdGhlIG5leHQgcnVsZSBpbiBTYWZhcmkgNi5cbiAqL1xuXG5iLFxuc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7XG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgd2VpZ2h0IGluIENocm9tZSwgRWRnZSwgYW5kIFNhZmFyaS5cbiAqL1xuXG5iLFxuc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGRlcjtcbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZm9udCBzdHlsZSBpbiBBbmRyb2lkIDQuMy0uXG4gKi9cblxuZGZuIHtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG4vKipcbiAqIENvcnJlY3QgdGhlIGZvbnQgc2l6ZSBhbmQgbWFyZ2luIG9uIGBoMWAgZWxlbWVudHMgd2l0aGluIGBzZWN0aW9uYCBhbmRcbiAqIGBhcnRpY2xlYCBjb250ZXh0cyBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBTYWZhcmkuXG4gKi9cblxuaDEge1xuICBmb250LXNpemU6IDJlbTtcbiAgbWFyZ2luOiAwLjY3ZW0gMDtcbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgYmFja2dyb3VuZCBhbmQgY29sb3IgaW4gSUUgOS0uXG4gKi9cblxubWFyayB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjA7XG4gIGNvbG9yOiAjMDAwO1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbnNtYWxsIHtcbiAgZm9udC1zaXplOiA4MCU7XG59XG5cbi8qKlxuICogUHJldmVudCBgc3ViYCBhbmQgYHN1cGAgZWxlbWVudHMgZnJvbSBhZmZlY3RpbmcgdGhlIGxpbmUgaGVpZ2h0IGluXG4gKiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuc3ViLFxuc3VwIHtcbiAgZm9udC1zaXplOiA3NSU7XG4gIGxpbmUtaGVpZ2h0OiAwO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuc3ViIHtcbiAgYm90dG9tOiAtMC4yNWVtO1xufVxuXG5zdXAge1xuICB0b3A6IC0wLjVlbTtcbn1cblxuLyogRW1iZWRkZWQgY29udGVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGJvcmRlciBvbiBpbWFnZXMgaW5zaWRlIGxpbmtzIGluIElFIDEwLS5cbiAqL1xuXG5pbWcge1xuICBib3JkZXItc3R5bGU6IG5vbmU7XG59XG5cbi8qKlxuICogSGlkZSB0aGUgb3ZlcmZsb3cgaW4gSUUuXG4gKi9cblxuc3ZnOm5vdCg6cm9vdCkge1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4vKiBHcm91cGluZyBjb250ZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIGluaGVyaXRhbmNlIGFuZCBzY2FsaW5nIG9mIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gKiAyLiBDb3JyZWN0IHRoZSBvZGQgYGVtYCBmb250IHNpemluZyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuY29kZSxcbmtiZCxcbnByZSxcbnNhbXAge1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7IC8qIDEgKi9cbiAgZm9udC1zaXplOiAxZW07IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgbWFyZ2luIGluIElFIDguXG4gKi9cblxuZmlndXJlIHtcbiAgbWFyZ2luOiAxZW0gNDBweDtcbn1cblxuLyoqXG4gKiAxLiBBZGQgdGhlIGNvcnJlY3QgYm94IHNpemluZyBpbiBGaXJlZm94LlxuICogMi4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZSBhbmQgSUUuXG4gKi9cblxuaHIge1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsgLyogMSAqL1xuICBoZWlnaHQ6IDA7IC8qIDEgKi9cbiAgb3ZlcmZsb3c6IHZpc2libGU7IC8qIDIgKi9cbn1cblxuLyogRm9ybXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogMS4gQ2hhbmdlIGZvbnQgcHJvcGVydGllcyB0byBgaW5oZXJpdGAgaW4gYWxsIGJyb3dzZXJzIChvcGluaW9uYXRlZCkuXG4gKiAyLiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBGaXJlZm94IGFuZCBTYWZhcmkuXG4gKi9cblxuYnV0dG9uLFxuaW5wdXQsXG5zZWxlY3QsXG50ZXh0YXJlYSB7XG4gIGZvbnQ6IGluaGVyaXQ7IC8qIDEgKi9cbiAgbWFyZ2luOiAwOyAvKiAyICovXG59XG5cbi8qKlxuICogUmVzdG9yZSB0aGUgZm9udCB3ZWlnaHQgdW5zZXQgYnkgdGhlIHByZXZpb3VzIHJ1bGUuXG4gKi9cblxub3B0Z3JvdXAge1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLyoqXG4gKiBTaG93IHRoZSBvdmVyZmxvdyBpbiBJRS5cbiAqIDEuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UuXG4gKi9cbmJ1dHRvbixcbmlucHV0IHsgLyogMSAqL1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEVkZ2UsIEZpcmVmb3gsIGFuZCBJRS5cbiAqIDEuIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRmlyZWZveC5cbiAqL1xuXG5idXR0b24sXG5zZWxlY3QgeyAvKiAxICovXG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xufVxuXG4vKipcbiAqIDEuIFByZXZlbnQgYSBXZWJLaXQgYnVnIHdoZXJlICgyKSBkZXN0cm95cyBuYXRpdmUgYGF1ZGlvYCBhbmQgYHZpZGVvYFxuICogICAgY29udHJvbHMgaW4gQW5kcm9pZCA0LlxuICogMi4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbiAqL1xuXG5idXR0b24sXG5odG1sIFt0eXBlPVwiYnV0dG9uXCJdLCAvKiAxICovXG5bdHlwZT1cInJlc2V0XCJdLFxuW3R5cGU9XCJzdWJtaXRcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLyogMiAqL1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgaW5uZXIgYm9yZGVyIGFuZCBwYWRkaW5nIGluIEZpcmVmb3guXG4gKi9cblxuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJidXR0b25cIl06Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cInJlc2V0XCJdOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJzdWJtaXRcIl06Oi1tb3otZm9jdXMtaW5uZXIge1xuICBib3JkZXItc3R5bGU6IG5vbmU7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi8qKlxuICogUmVzdG9yZSB0aGUgZm9jdXMgc3R5bGVzIHVuc2V0IGJ5IHRoZSBwcmV2aW91cyBydWxlLlxuICovXG5cbmJ1dHRvbjotbW96LWZvY3VzcmluZyxcblt0eXBlPVwiYnV0dG9uXCJdOi1tb3otZm9jdXNyaW5nLFxuW3R5cGU9XCJyZXNldFwiXTotbW96LWZvY3VzcmluZyxcblt0eXBlPVwic3VibWl0XCJdOi1tb3otZm9jdXNyaW5nIHtcbiAgb3V0bGluZTogMXB4IGRvdHRlZCBCdXR0b25UZXh0O1xufVxuXG4vKipcbiAqIENoYW5nZSB0aGUgYm9yZGVyLCBtYXJnaW4sIGFuZCBwYWRkaW5nIGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxuICovXG5cbmZpZWxkc2V0IHtcbiAgYm9yZGVyOiAxcHggc29saWQgI2MwYzBjMDtcbiAgbWFyZ2luOiAwIDJweDtcbiAgcGFkZGluZzogMC4zNWVtIDAuNjI1ZW0gMC43NWVtO1xufVxuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIHRleHQgd3JhcHBpbmcgaW4gRWRnZSBhbmQgSUUuXG4gKiAyLiBDb3JyZWN0IHRoZSBjb2xvciBpbmhlcml0YW5jZSBmcm9tIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gSUUuXG4gKiAzLiBSZW1vdmUgdGhlIHBhZGRpbmcgc28gZGV2ZWxvcGVycyBhcmUgbm90IGNhdWdodCBvdXQgd2hlbiB0aGV5IHplcm8gb3V0XG4gKiAgICBgZmllbGRzZXRgIGVsZW1lbnRzIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5sZWdlbmQge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiAxICovXG4gIGNvbG9yOiBpbmhlcml0OyAvKiAyICovXG4gIGRpc3BsYXk6IHRhYmxlOyAvKiAxICovXG4gIG1heC13aWR0aDogMTAwJTsgLyogMSAqL1xuICBwYWRkaW5nOiAwOyAvKiAzICovXG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7IC8qIDEgKi9cbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGRlZmF1bHQgdmVydGljYWwgc2Nyb2xsYmFyIGluIElFLlxuICovXG5cbnRleHRhcmVhIHtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG5cbi8qKlxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gSUUgMTAtLlxuICogMi4gUmVtb3ZlIHRoZSBwYWRkaW5nIGluIElFIDEwLS5cbiAqL1xuXG5bdHlwZT1cImNoZWNrYm94XCJdLFxuW3R5cGU9XCJyYWRpb1wiXSB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8qIDEgKi9cbiAgcGFkZGluZzogMDsgLyogMiAqL1xufVxuXG4vKipcbiAqIENvcnJlY3QgdGhlIGN1cnNvciBzdHlsZSBvZiBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBidXR0b25zIGluIENocm9tZS5cbiAqL1xuXG5bdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcblt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIG9kZCBhcHBlYXJhbmNlIGluIENocm9tZSBhbmQgU2FmYXJpLlxuICogMi4gQ29ycmVjdCB0aGUgb3V0bGluZSBzdHlsZSBpbiBTYWZhcmkuXG4gKi9cblxuW3R5cGU9XCJzZWFyY2hcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsgLyogMSAqL1xuICBvdXRsaW5lLW9mZnNldDogLTJweDsgLyogMiAqL1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgaW5uZXIgcGFkZGluZyBhbmQgY2FuY2VsIGJ1dHRvbnMgaW4gQ2hyb21lIGFuZCBTYWZhcmkgb24gT1MgWC5cbiAqL1xuXG5bdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbixcblt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xufVxuXG4vKipcbiAqIENvcnJlY3QgdGhlIHRleHQgc3R5bGUgb2YgcGxhY2Vob2xkZXJzIGluIENocm9tZSwgRWRnZSwgYW5kIFNhZmFyaS5cbiAqL1xuXG46Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xuICBjb2xvcjogaW5oZXJpdDtcbiAgb3BhY2l0eTogMC41NDtcbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuICogMi4gQ2hhbmdlIGZvbnQgcHJvcGVydGllcyB0byBgaW5oZXJpdGAgaW4gU2FmYXJpLlxuICovXG5cbjo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLyogMSAqL1xuICBmb250OiBpbmhlcml0OyAvKiAyICovXG59XG5cbi8qKlxuICogIHJlbW92ZSBpb3Mgc3R5bGluZy4gT25seSB1c2Ugb24gYnV0dG9ucyBhbmQgc2VhcmNoIGlucHV0c1xuICovXG5idXR0b24sIFt0eXBlPVwic2VhcmNoXCJdLCBbdHlwZT1cImJ1dHRvblwiXSB7IFxuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6MDtcbiAgcGFkZGluZzowO1xufVxuXG5pbnB1dFt0eXBlPVwibnVtYmVyXCJdIHtcbiAgLW1vei1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XG59XG5cbmlucHV0W3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG5pbnB1dFt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICBtYXJnaW46IDA7XG59XG4iLCIvLyBjb2xvcnNcbiRjcmltc29uOiM4YzAwMDc7XG4kcmVkOiNiYjBiMGU7XG4keWVsbG93OiNmM2FkMDA7XG4kbXVzdGFyZDojODM1ZDAwO1xuJGJsdWU6IzE3NDE4OTsgXG4kZGFya0JsdWU6IzEwMzA2NjtcbiRuYXZ5OiMyNDM3NTc7XG4kY29ybmZsb3dlcjojNDg3MmI0O1xuJGNoYXJjb2FsOiM0MzQzNDM7XG4kZ3JheTojNzc3Nzc3O1xuJG1lZEdyYXk6Izk5OTk5OTtcbiRkYXJrR3JheTojMzMzO1xuJHdhcm1HcmF5OiNlYmViZWI7XG4kZG92ZTojZTZlNmU2O1xuJG92ZXJsYXk6I2UzZTNlMztcblxuXG4vLyBjaGFzaW5nIHRoZSBtb29uXG4kY2hhc2luZ0JsdWU6ICMwMDNmYTY7XG4kY2hhc2luZ0hlYXRoZXI6ICNkNmQ2ZDY7XG4kY2hhc2luZ0Nvcm5mbG93ZXI6ICMyNjdkZmU7XG4kY2hhc2luZ1NsYXRlOiAjMWMxYzFjO1xuJGNoYXNpbmdHcmF5OiM1YjViNWI7XG4kbm90SW5TdHlsZ3VpZGVCdXRJblN0eWxndWlkZTojMjQyNDI0O1xuJGNoYXNpbmdXdGZCbGFjazojMTAxMDEwO1xuXG5cbi8vIGJyZWFrcG9pbnRzXG4vLyA2NTBweFxuJHNjcmVlbi1zbS1taW46NDAuNjI1ZW07XG4vLyAxMTAwcHhcbiRzY3JlZW4tbWQtbWluOjY4Ljc1ZW07XG4vLyAxMzAwcHhcbiRzY3JlZW4tbGctbWluOjgxLjI1ZW07XG4vLyAxNTMwcHhcbiRzY3JlZW4tamItbWluOjk1LjYyNWVtO1xuXG4vLyB2ZXJ0aWNhbCByaHl0aG0gdmFyLiB1c2VkIHRvIGJyZWFrIHVwIHNlY3Rpb25zIGJhc2VkIG9uIGEgc2NhbGVcbiR2LXJoeXRobToxLjVlbTtcblxuLy8gc3VzeSBiYXNlIGNvbmZpZyBmb3Igc21hbGxlciBzY3JlZW5zXG4vLyBncmlkIGNoYW5nZXMgYmFzZWQgb24gd3JhcHBlciBjbGFzcyBkZWZpbmVkIGluIGN1c3RvbS5zY3NzXG4kc3VzeTogKFxuICBjb2x1bW5zOigyKSxcbiAgY29udGFpbmVyOjg3LjVlbSxcbiAgbWF0aDogZmx1aWQsXG4gIG91dHB1dDogZmxvYXQsXG4gIC8vIGRlYnVnOihpbWFnZTpzaG93KVxuKTtcblxuJG1hcC1zbTogKFxuICBjb2x1bW5zOig0KSxcbik7XG5cbiRtYXAtbWQ6IChcbiAgY29sdW1uczooOCksXG4pO1xuXG4kbWFwLWxnOiAoXG4gIGNvbHVtbnM6KDEyKSxcbik7XG5cbi8vIGdyaWRcbkBtaXhpbiBncmlkKCkge1xuICBAaW5jbHVkZSBjb250YWluZXIoKTtcbiAgQGluY2x1ZGUgY2xlYXJmaXgoKTtcbiAgcGFkZGluZzowIDUlO1xuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICBAaW5jbHVkZSBzaG93LWdyaWQoNCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICBAaW5jbHVkZSBzaG93LWdyaWQoOCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICBAaW5jbHVkZSBzaG93LWdyaWQoMTIpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tamItbWluKSB7XG4gICAgcGFkZGluZzowO1xuICB9XG59IiwiIC8vIGNsZWFyIGZpeGluXG5AbWl4aW4gY2xlYXJmaXgge1xuICAmOmFmdGVyIHtcbiAgICBkaXNwbGF5OnRhYmxlO1xuICAgIGNsZWFyOmJvdGg7XG4gICAgY29udGVudDonJztcbiAgfVxuICAmOmJlZm9yZSB7XG4gICAgZGlzcGxheTp0YWJsZTtcbiAgICBjbGVhcjpib3RoO1xuICAgIGNvbnRlbnQ6Jyc7XG4gIH1cbn1cbi8vIHBhcmVudCBzaG91bGQgYmUgc2V0IHRvIHJlbGF0aXZlXG4vLyBodHRwczovL2Nzcy10cmlja3MuY29tL3NuaXBwZXRzL3Nhc3MvY2VudGVyaW5nLW1peGluL1xuQG1peGluIGNlbnRlcigkaG9yaXpvbnRhbDogdHJ1ZSwgJHZlcnRpY2FsOiB0cnVlKSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgQGlmICgkaG9yaXpvbnRhbCBhbmQgJHZlcnRpY2FsKSB7XG4gICAgdG9wOiA1MCU7XG4gICAgbGVmdDogNTAlO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuXG4gIH0gQGVsc2UgaWYgKCRob3Jpem9udGFsKSB7XG4gICAgbGVmdDogNTAlO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMCk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAwKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIDApO1xuICB9IEBlbHNlIGlmICgkdmVydGljYWwpIHtcbiAgICB0b3A6IDUwJTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTp0cmFuc2xhdGUoMCwgLTUwJSk7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDAsIC01MCUpO1xuICAgICAgICAgICAgdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLCAtNTAlKTtcbiAgfVxufVxuXG4vLyB0cmFuc2l0aW9uc1xuQG1peGluIHRyYW5zaXRpb24oJHRyYW5zaXRpb24tcHJvcGVydHksICR0cmFuc2l0aW9uLXRpbWUsICRtZXRob2QpIHtcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiR0cmFuc2l0aW9uLXByb3BlcnR5ICR0cmFuc2l0aW9uLXRpbWUgJG1ldGhvZDtcbiAgICAgIC1tcy10cmFuc2l0aW9uOiR0cmFuc2l0aW9uLXByb3BlcnR5ICR0cmFuc2l0aW9uLXRpbWUgJG1ldGhvZDtcbiAgICAgICAgICB0cmFuc2l0aW9uOiR0cmFuc2l0aW9uLXByb3BlcnR5ICR0cmFuc2l0aW9uLXRpbWUgJG1ldGhvZDtcbn1cblxuLy8gZ3JhZGllbnRzXG5AbWl4aW4gbGluZWFyLWdyYWRpZW50KCRmcm9tQ29sb3IsICR0b0NvbG9yKSB7XG4gIGJhY2tncm91bmQtY29sb3I6JHRvQ29sb3I7IC8qIEZhbGxiYWNrIENvbG9yICovXG4gIGJhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgZnJvbSgkZnJvbUNvbG9yKSwgdG8oJHRvQ29sb3IpKTsgLyogU2FmNCssIENocm9tZSAqL1xuICBiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgJGZyb21Db2xvciwgJHRvQ29sb3IpOyAvKiBDaHJvbWUgMTArLCBTYWY1LjErLCBpT1MgNSsgKi9cbiAgYmFja2dyb3VuZC1pbWFnZTogICAtbW96LWxpbmVhci1ncmFkaWVudCh0b3AsICRmcm9tQ29sb3IsICR0b0NvbG9yKTsgLyogRkYzLjYgKi9cbiAgYmFja2dyb3VuZC1pbWFnZTogICAgLW1zLWxpbmVhci1ncmFkaWVudCh0b3AsICRmcm9tQ29sb3IsICR0b0NvbG9yKTsgLyogSUUxMCAqL1xuICBiYWNrZ3JvdW5kLWltYWdlOiAgICAgLW8tbGluZWFyLWdyYWRpZW50KHRvcCwgJGZyb21Db2xvciwgJHRvQ29sb3IpOyAvKiBPcGVyYSAxMS4xMCsgKi9cbiAgYmFja2dyb3VuZC1pbWFnZTogICAgICAgIGxpbmVhci1ncmFkaWVudCh0b3AsICRmcm9tQ29sb3IsICR0b0NvbG9yKTtcblxuICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChHcmFkaWVudFR5cGU9MCxTdGFydENvbG9yU3RyPScjeyRmcm9tQ29sb3J9JywgRW5kQ29sb3JTdHI9JyN7JHRvQ29sb3J9Jyk7XG59XG5cbi8vIHBsYWluIGxpc3RzXG5AbWl4aW4gcGxhaW4tbGlzdCB7XG4gIG1hcmdpbi1yaWdodDowO1xuICBtYXJnaW4tdG9wOjA7XG4gIG1hcmdpbi1sZWZ0OjA7XG4gIG1hcmdpbi1ib3R0b206MDtcbiAgcGFkZGluZzowO1xuICBsaSB7XG4gICAgbGlzdC1zdHlsZTpub25lO1xuICB9XG4gIGRkIHtcbiAgICBtYXJnaW46MDtcbiAgfVxufVxuXG5AbWl4aW4gcGxhaW4tYnV0dG9uIHtcbiAgYm9yZGVyOm5vbmU7XG4gIGJhY2tncm91bmQ6bm9uZTtcbiAgYm94LXNoYWRvdzpub25lO1xuICAmOmhvdmVyLCAmOmZvY3VzLCAmOmFjdGl2ZSB7XG4gICAgYm94LXNoYWRvdzpub25lO1xuICAgIGJvcmRlcjpub25lO1xuICB9XG59XG5cbkBtaXhpbiBidXR0b24oJGJhY2tncm91bmQ6bnVsbCwgJGNvbG9yOm51bGwpIHtcbiAgKiB7XG4gICAgdmVydGljYWwtYWxpZ246bWlkZGxlO1xuICB9XG4gIHBhZGRpbmc6JHYtcmh5dGhtLzIgJHYtcmh5dGhtO1xuICB0ZXh0LWFsaWduOmNlbnRlcjtcbiAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gIGNvbG9yOiN7JGNvbG9yfTtcbiAgYmFja2dyb3VuZC1jb2xvcjojeyRiYWNrZ3JvdW5kfTtcbiAgYm9yZGVyOjA7XG59XG5cbkBtaXhpbiBib3JkZXItYnV0dG9uKCRib3JkZXJDb2xvcjpudWxsLCAkYm9yZGVyV2lkdGg6bnVsbCwgJGNvbG9yOm51bGwpIHtcbiAgKiB7XG4gICAgdmVydGljYWwtYWxpZ246bWlkZGxlO1xuICB9XG4gIGJhY2tncm91bmQ6dHJhbnNwYXJlbnQ7XG4gIHBhZGRpbmc6JHYtcmh5dGhtLzIgJHYtcmh5dGhtO1xuICB0ZXh0LWFsaWduOmNlbnRlcjtcbiAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gIGNvbG9yOiN7JGNvbG9yfTtcbiAgYm9yZGVyLWNvbG9yOiN7JGJvcmRlckNvbG9yfTtcbiAgYm9yZGVyLXdpZHRoOiN7JGJvcmRlcldpZHRofTtcbiAgYm9yZGVyLXN0eWxlOnNvbGlkO1xufVxuXG5AbWl4aW4gYXJyb3ctYnV0dG9uKCRjb2xvcikge1xuICBwYWRkaW5nLXJpZ2h0OjNlbTtcbiAgcG9zaXRpb246cmVsYXRpdmU7XG4gIHN2ZyB7XG4gICAgQGluY2x1ZGUgY2VudGVyKGZhbHNlLCB0cnVlKTtcbiAgICBmaWxsOiRjb2xvcjtcbiAgICByaWdodDoxZW07XG4gICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgd2lkdGg6MWVtO1xuICAgIGhlaWdodDoxZW07XG4gIH1cbiAgLy8gcmVxdWlyZXMgdGhpcyBzdmcgYXMgYSBjaGlsZFxuICAvLyAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNTUgMTAxXCI+XG4gIC8vICAgPHBhdGggZD1cIk03LjQ1IDEwMEwwIDkyLjEgMzkuNTUgNTAgMCA4LjE4IDcuNDUgMGw0Ny4xIDUwXCIvPlxuICAvLyA8L3N2Zz5cbn1cblxuLy8gbGluayByZXNldFxuQG1peGluIGxpbmstcmVzZXQge1xuICB0ZXh0LWRlY29yYXRpb246bm9uZTtcbiAgJjpob3ZlciB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOm5vbmU7XG4gIH1cbiAgJjphY3RpdmUge1xuICAgIHRleHQtZGVjb3JhdGlvbjpub25lO1xuICB9XG4gICY6dmlzaXRlZCB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOm5vbmU7XG4gIH1cbiAgJjpmb2N1cyB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOm5vbmU7XG4gIH1cbn1cblxuLy8gbG9uZyBzaGFkb3cgZ2VuZXJhdG9yXG4vLyBodHRwOi8vY29kZXBlbi5pby9tYXhha29obGVyL3Blbi9tQXhIelxuQG1peGluIGxvbmctc2hhZG93KCR0eXBlLCAkY29sb3IsICRsZW5ndGgsICRmYWRlb3V0OiB0cnVlLCAkc2tldzogZmFsc2UsICRkaXJlY3Rpb246IHJpZ2h0KXtcbiAgJHNoYWRvdzogJyc7XG4gIEBpZiAkc2tldyA9PSBmYWxzZSBvciAkdHlwZSA9PSB0ZXh0e1xuICAgIEBpZiAkZGlyZWN0aW9uID09IHJpZ2h0IHtcbiAgICAgIEBmb3IgJGkgZnJvbSAwIHRvICRsZW5ndGggLSAxIHtcbiAgICAgICAgJHNoYWRvdzogJHNoYWRvdyArICRpICsgJ3B4ICcgKyAkaSArICdweCAwICcgKyAkY29sb3IgKyAnLCc7XG4gICAgICB9XG4gICAgfVxuICAgIEBpZiAkZGlyZWN0aW9uID09IGxlZnQge1xuICAgICAgQGZvciAkaSBmcm9tIDAgdG8gJGxlbmd0aCAtIDEge1xuICAgICAgICAkc2hhZG93OiAkc2hhZG93ICsgJGkgKiAtMSArICdweCAnICsgJGkgKyAncHggMCAnICsgJGNvbG9yICsgJywnO1xuICAgICAgIH1cbiAgICAgIH1cbiAgICAgfVxuICAgICAgICBcbiAgIEBpZiAkZmFkZW91dCA9PSB0cnVle1xuICAgIEBmb3IgJGkgZnJvbSAxIHRvICRsZW5ndGggLSAxIHtcbiAgICAgIEBpZiAkdHlwZSA9PSB0ZXh0IG9yICRza2V3ID09IGZhbHNle1xuICAgICAgICBAaWYgJGRpcmVjdGlvbiA9PSByaWdodHtcbiAgICAgICAgICAkc2hhZG93OiAkc2hhZG93ICsgJGkgKyAncHggJyArICRpICsgJ3B4IDAgJyArICAgICAgIHJnYmEoJGNvbG9yLCAxIC0gJGkgLyAkbGVuZ3RoKSArICcsJztcbiAgICAgICAgfVxuICAgICAgICBAaWYgJGRpcmVjdGlvbiA9PSBsZWZ0e1xuICAgICAgICAgICRzaGFkb3c6ICRzaGFkb3cgKyAkaSAqIC0xICsgJ3B4ICcgKyAkaSArICdweCAwICcgKyAgICAgICByZ2JhKCRjb2xvciwgMSAtICRpIC8gJGxlbmd0aCkgKyAnLCc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBpZiAoJHR5cGUgPT0gYm94KSBhbmQgJHNrZXcgPT0gdHJ1ZXtcbiAgICAgICAgQGlmICRkaXJlY3Rpb24gPT0gcmlnaHQge1xuICAgICAgICAgICRzaGFkb3c6ICRzaGFkb3cgKyAkaSArICdweCAnICsgJGkgKyAncHggMCAnICsgJGkgKiAuMiArICdweCAnICsgcmdiYSgkY29sb3IsIDEgLSAkaSAvICRsZW5ndGgpICsgJywnO1xuICAgICAgICB9XG4gICAgICAgIEBpZiAkZGlyZWN0aW9uID09IGxlZnQge1xuICAgICAgICAgICRzaGFkb3c6ICRzaGFkb3cgKyAkaSAqIC0xICsgJ3B4ICcgKyAkaSArICdweCAwICcgKyAkaSAqIC4yICsgJ3B4ICcgKyByZ2JhKCRjb2xvciwgMSAtICRpIC8gJGxlbmd0aCkgKyAnLCc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgfVxuICAkc2hhZG93OiAkc2hhZG93ICsgJGxlbmd0aCArICdweCAnICsgJGxlbmd0aCArICdweCAwICcgKyByZ2JhKCRjb2xvciwgMCk7XG4gfVxuIEBpZiAkZmFkZW91dCA9PSBmYWxzZXtcbiAgIEBpZiAkc2tldyA9PSB0cnVlIGFuZCAoICR0eXBlID09IGJveCApe1xuICAgICBAZm9yICRpIGZyb20gMCB0byAkbGVuZ3RoIC0gMSB7XG4gICAgICAgICAgICAkc2hhZG93OiAkc2hhZG93ICsgJGkgKyAncHggJyArICRpICsgJ3B4IDAgJyArICRpICogLjEgKyAncHggJyArICRjb2xvciArICcsJztcbiAgICAgIH1cbiAgIH1cbiAgICAkc2hhZG93OiAkc2hhZG93ICsgJGxlbmd0aCArICdweCAnICsgJGxlbmd0aCArICdweCAwICcgKyByZ2JhKDAsMCwwLDApO1xuIH1cbiAkc2hhZG93OiB1bnF1b3RlKCRzaGFkb3cpO1xuICBAaWYgJHR5cGUgPT0gJ2JveCcge2JveC1zaGFkb3c6ICRzaGFkb3c7fVxuICBAaWYgJHR5cGUgPT0gJ3RleHQnIHt0ZXh0LXNoYWRvdzogJHNoYWRvdzt9XG59XG5cbi8vIGFzc2l0aXZlIHRleHQuIG5vdCBhIG1peGluIGJ1dCBhbiBpbXBvcnRhbnQgdXRpbGl0eSBjbGFzc1xuLmFzc2lzdGl2ZS10ZXh0IHtcbiAgY2xpcDogcmVjdCgxcHgsIDFweCwgMXB4LCAxcHgpO1xuICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgaGVpZ2h0OiAxcHg7XG4gIHdpZHRoOiAxcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5hc3Npc3RpdmUtdGV4dDpob3ZlciwgLmFzc2lzdGl2ZS10ZXh0OmFjdGl2ZSwgLmFzc2lzdGl2ZS10ZXh0OmZvY3VzIHtcbiAgZm9udC1zaXplOi44NzVlbTtcbiAgZm9udC13ZWlnaHQ6Ym9sZDtcbiAgbGluZS1oZWlnaHQ6bm9ybWFsO1xuICB6LWluZGV4OjEwMDAwMDtcbiAgdG9wOjVweDtcbiAgbGVmdDo1cHg7XG4gIGRpc3BsYXk6YmxvY2s7XG4gIGNsaXA6YXV0byAhaW1wb3J0YW50O1xuICB3aWR0aDphdXRvO1xuICBoZWlnaHQ6YXV0bztcbiAgcGFkZGluZzoxNXB4IDIzcHggMTRweDtcbiAgdGV4dC1kZWNvcmF0aW9uOm5vbmU7XG4gIGNvbG9yOiMyMTc1OWI7XG4gIGJvcmRlci1yYWRpdXM6M3B4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiNmMWYxZjE7XG4gIGJveC1zaGFkb3c6MCAwIDJweCAycHggcmdiYSgwLCAwLCAwLCAuNik7XG59XG5cbi5oaWRlIHtcbiAgZGlzcGxheTpub25lO1xufVxuXG5cbkBtaXhpbiBmbGV4IHtcbiAgZGlzcGxheTotd2Via2l0LWJveDtcbiAgZGlzcGxheTotbXMtZmxleGJveDtcbiAgZGlzcGxheTpmbGV4O1xufVxuXG5AbWl4aW4gZmxleC13cmFwIHtcbiAgLW1zLWZsZXgtd3JhcDogd3JhcDtcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG5AbWl4aW4gZmxleC1hbGlnbi1jZW50ZXIge1xuICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xuICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG5AbWl4aW4gZmxleC1hbGlnbi1lbmQge1xuICAtd2Via2l0LWJveC1hbGlnbjogZW5kO1xuICAgICAtbXMtZmxleC1hbGlnbjogZW5kO1xuICAgICAgICBhbGlnbi1pdGVtczogZW5kO1xufVxuXG5AbWl4aW4gZmxleC1qdXN0aWZ5LWVuZCB7XG4gIC13ZWJraXQtYm94LXBhY2s6IGVuZDtcbiAgICAgLW1zLWZsZXgtcGFjazogZW5kO1xuICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsgXG59XG5cbkBtaXhpbiBmbGV4LWp1c3RpZnktc3RhcnQge1xuIC13ZWJraXQtYm94LXBhY2s6IHN0YXJ0O1xuICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7IFxufVxuXG5AbWl4aW4gZmxleC1qdXN0aWZ5LWNlbnRlciB7XG4gIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjtcbiAgICAgLW1zLWZsZXgtcGFjazogY2VudGVyO1xuICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IFxufVxuIiwiQG1peGluIGFuaW1hdGVkKCRkdXIpIHtcbiAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246ICRkdXI7XG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogJGR1cjtcbiAgLXdlYmtpdC1hbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xuICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgZmFkZUluIHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuXG4gIHRvIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgZmFkZUluIHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuXG4gIHRvIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG5cbkBtaXhpbiBmYWRlSW4ge1xuICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmYWRlSW47XG4gIGFuaW1hdGlvbi1uYW1lOiBmYWRlSW47XG59XG5cbkBtaXhpbiBmYWRlSW5TdGFydGVkIHtcbiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmFkZUluU3RhcnRlZDtcbiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVJblN0YXJ0ZWQ7XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBmYWRlT3V0IHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gIHRvIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgZmFkZU91dCB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxufVxuXG5AbWl4aW4gZmFkZU91dCB7XG4gIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZhZGVPdXQ7XG4gIGFuaW1hdGlvbi1uYW1lOiBmYWRlT3V0O1xufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGVJbkxlZnQge1xuICBmcm9tIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIH1cblxuICB0byB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBzbGlkZUluTGVmdCB7XG4gIGZyb20ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgfVxuXG4gIHRvIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxufVxuXG5AbWl4aW4gc2xpZGVJbkxlZnQge1xuICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBzbGlkZUluTGVmdDtcbiAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlSW5MZWZ0O1xufVxuXG5cbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZUluUmlnaHQge1xuICBmcm9tIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG5cbiAgdG8ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgc2xpZGVJblJpZ2h0IHtcbiAgZnJvbSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgfVxuXG4gIHRvIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxufVxuXG5AbWl4aW4gc2xpZGVJblJpZ2h0IHtcbiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogc2xpZGVJblJpZ2h0O1xuICBhbmltYXRpb24tbmFtZTogc2xpZGVJblJpZ2h0O1xufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGVPdXRSaWdodCB7XG4gIGZyb20ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG5cbiAgdG8ge1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlT3V0UmlnaHQge1xuICBmcm9tIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxuXG4gIHRvIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gIH1cbn1cblxuQG1peGluIHNsaWRlT3V0UmlnaHQge1xuICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBzbGlkZU91dFJpZ2h0O1xuICBhbmltYXRpb24tbmFtZTogc2xpZGVPdXRSaWdodDtcbn1cblxuQGtleWZyYW1lcyBzbGlkZU91dERvd24ge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG5cbiAgdG8ge1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDEwMCUsIDApO1xuICB9XG59XG5cbkBtaXhpbiBzbGlkZU91dERvd24ge1xuICBhbmltYXRpb24tbmFtZTogc2xpZGVPdXREb3duO1xufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlT3V0RG93biB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cblxuICB0byB7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMTAwJSwgMCk7XG4gIH1cbn1cblxuLnNsaWRlT3V0RG93biB7XG4gIGFuaW1hdGlvbi1uYW1lOiBzbGlkZU91dERvd247XG59XG5cbkBrZXlmcmFtZXMgc2xpZGVPdXRMZWZ0IHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxuXG4gIHRvIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gIH1cbn1cblxuLnNsaWRlT3V0TGVmdCB7XG4gIGFuaW1hdGlvbi1uYW1lOiBzbGlkZU91dExlZnQ7XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZUluRG93biB7XG4gIGZyb20ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMTAwJSwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMTAwJSwgMCk7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgfVxuXG4gIHRvIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlSW5Eb3duIHtcbiAgZnJvbSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0xMDAlLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0xMDAlLCAwKTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG5cbiAgdG8ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG59XG5cbkBtaXhpbiBzbGlkZUluRG93biB7XG4gIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHNsaWRlSW5Eb3duO1xuICBhbmltYXRpb24tbmFtZTogc2xpZGVJbkRvd247XG59XG5cblxuQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlSW5VcCB7XG4gIGZyb20ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAxMDAlLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDEwMCUsIDApO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIH1cblxuICB0byB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBzbGlkZUluVXAge1xuICBmcm9tIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMTAwJSwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAxMDAlLCAwKTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG5cbiAgdG8ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG59XG5cbkBtaXhpbiBzbGlkZUluVXAge1xuICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBzbGlkZUluVXA7XG4gIGFuaW1hdGlvbi1uYW1lOiBzbGlkZUluVXA7XG59XG5cblxuQC13ZWJraXQta2V5ZnJhbWVzIGJvdW5jZSB7XG4gIDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG4gIFxuICA1MCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAzMHB4LCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDMwcHgsIDApO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIH1cblxuICAxMDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgYm91bmNlIHtcbiAgMCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIH1cbiAgXG4gIDUwJSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDMwcHgsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMzBweCwgMCk7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIH1cbn1cblxuQG1peGluIGJvdW5jZSB7XG4gIC13ZWJraXQtYW5pbWF0aW9uOiBib3VuY2UgM3MgaW5maW5pdGU7XG4gICAgICAgICAgYW5pbWF0aW9uOiBib3VuY2UgM3MgaW5maW5pdGU7XG59XG5cbi8vIGNoYXNpbmcgbW9vbiBhbmltYXRpb25zXG4vLyBhbmltYXRpb25zIGxhc3QgMzBzZWNvbmRzXG4vLyBsYXN0IDEuNXNlY29uZHMgb2YgYW5pbWF0aW9uIGlzIHRyYW5zZm9ybSBiYWNrdG8gb3JpZ2luYWwgc3RhdGVcbkAtd2Via2l0LWtleWZyYW1lcyBNb29uSW1hZ2VBbmltYXRpb24ge1xuICAwJSB7XG4gICAgb3BhY2l0eTogLjE1O1xuICB9XG5cbiAgNzUlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIFxuICA4NSUge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cblxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAuMTU7XG4gIH1cblxufVxuXG5Aa2V5ZnJhbWVzIE1vb25JbWFnZUFuaW1hdGlvbiB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAuMTU7XG4gIH1cblxuICA3NSUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgXG4gIDg1JSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuXG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IC4xNTtcbiAgfVxufVxuXG5AbWl4aW4gTW9vbkltYWdlQW5pbWF0aW9uIHtcbiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogTW9vbkltYWdlQW5pbWF0aW9uO1xuICAgICAgICAgIGFuaW1hdGlvbi1uYW1lOiBNb29uSW1hZ2VBbmltYXRpb247XG4gIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZTtcbiAgICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OmluZmluaXRlOyAgXG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBNb29uR3JhZGllbnRSaXNlIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgfVxuXG4gIDg1JSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgTW9vbkdyYWRpZW50UmlzZSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gIH1cblxuICA4NSUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgfVxufVxuXG5AbWl4aW4gTW9vbkdyYWRpZW50UmlzZSB7XG4gIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IE1vb25HcmFkaWVudFJpc2U7XG4gICAgICAgICAgYW5pbWF0aW9uLW5hbWU6IE1vb25HcmFkaWVudFJpc2U7XG4gIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZTtcbiAgICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OmluZmluaXRlOyAgXG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBNb29uVHlwZVJldmVhbCB7XG4gIDAlIHtcbiAgICBsZXR0ZXItc3BhY2luZzppbmhlcml0O1xuICB9XG5cbiAgODUlIHtcbiAgICBsZXR0ZXItc3BhY2luZzouMTVlbTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIGxldHRlci1zcGFjaW5nOi4xNWVtO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgTW9vblR5cGVSZXZlYWwge1xuICAwJSB7XG4gICAgbGV0dGVyLXNwYWNpbmc6aW5oZXJpdDtcbiAgfVxuICBcbiAgODUlIHtcbiAgICBsZXR0ZXItc3BhY2luZzouMTVlbTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIGxldHRlci1zcGFjaW5nOi4xNWVtO1xuICB9XG59XG5cblxuQG1peGluIE1vb25UeXBlUmV2ZWFsIHtcbiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogTW9vblR5cGVSZXZlYWw7XG4gICAgICAgICAgYW5pbWF0aW9uLW5hbWU6IE1vb25UeXBlUmV2ZWFsO1xuICAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6aW5maW5pdGU7XG4gICAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZTsgIFxufVxuXG5cblxuXG5cbiIsIi8vIGZvbnQtZmFtaWx5OiAnSm9zZWZpbiBTYW5zJywgc2Fucy1zZXJpZjtcbi8vIGZvbnQtZmFtaWx5OiAnTXVsaScsIHNhbnMtc2VyaWY7XG4vLyBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJywgc2VyaWY7XG5cbi8vIGJvZHkgYmFzZVxuYm9keSB7XG4gIGZvbnQtZmFtaWx5OiAnTXVsaScsICdUcmVidWNoZXQgTVMnLCBzYW5zLXNlcmlmO1xuICBsaW5lLWhlaWdodDogMS42MjU7XG4gIGZvbnQtc2l6ZToxZW07XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgICAtbW96LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbn1cbi8vIGJhc2UgaGVhZGluZyBzdHlsaW5nXG5oMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCAuYWxwaGEsIC5iZXRhLCAuZ2FtbWEsIC5kZWx0YSwgLmVwc2lsb24sIC56ZXRhIHtcbiAgbWFyZ2luLXRvcDowO1xuICBmb250LXdlaWdodDo3MDA7XG59XG4vLyBoMSBpcyB1c2VkIGZvciB0aGUgc2l0ZSBsb2dvIG9ubHkgZm9yIHBhZ2UgaGVhZGluZ3Mgb3IgY3JlYXRpbmcgdG9wIGxldmVsIHNlY3Rpb25zXG4vLyB1c2UgaDIgb3IgLmJldGFcbi5hbHBoYSB7XG4gIGNvbG9yOiRjaGFyY29hbDtcbiAgZm9udC1zaXplOjIuMjVlbTtcbiAgbGluZS1oZWlnaHQ6MS4wNTtcbiAgJjpiZWZvcmUge1xuICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgY29udGVudDonJztcbiAgICBoZWlnaHQ6LjE2NjZlbTtcbiAgICB3aWR0aDo0LjE2NzdlbTtcbiAgICBiYWNrZ3JvdW5kOiR5ZWxsb3c7XG4gICAgbWFyZ2luLWJvdHRvbTouMzVlbTtcbiAgfVxuICAmOmFmdGVyIHtcbiAgICBkaXNwbGF5Om5vbmU7XG4gIH1cbn1cblxuaDIsIC5iZXRhIHtcbiAgY29sb3I6JGNoYXJjb2FsO1xuICBmb250LXNpemU6MmVtO1xuICBtYXJnaW4tYm90dG9tOi41ZW07XG4gIGxpbmUtaGVpZ2h0OjEuMDYyNTtcbiAgJjphZnRlciB7XG4gICAgbWFyZ2luLXRvcDouNGVtO1xuICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgY29udGVudDonJztcbiAgICBoZWlnaHQ6LjE4NzVlbTtcbiAgICB3aWR0aDozLjEyNWVtO1xuICAgIGJhY2tncm91bmQ6JHllbGxvdztcbiAgfVxufVxuXG4vLyBhbHRlcm5hdGUgbGV2ZWwgdHdvIGhlYWRpbmdcbi5wcmVtaWVyZS1kYXRlIHtcbiAgY29sb3I6JGdyYXk7XG4gIGZvbnQtc2l6ZToyZW07XG4gIG1hcmdpbi1ib3R0b206LjVlbTtcbiAgbGluZS1oZWlnaHQ6MS4wNjI1O1xufVxuXG4ub3ZlcmxpbmUge1xuICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobTtcbiAgaDEsIC5hbHBoYXtcbiAgICBsaW5lLWhlaWdodDoxLjA1O1xuICAgIG1hcmdpbi1ib3R0b206LjJlbTtcbiAgICAmOmJlZm9yZSB7XG4gICAgICBkaXNwbGF5Om5vbmU7XG4gICAgfVxuICB9XG4gICY6YmVmb3JlIHtcbiAgICBtYXJnaW4tdG9wOi40ZW07XG4gICAgbWFyZ2luLWJvdHRvbTouNzVlbTtcbiAgICBkaXNwbGF5OmJsb2NrO1xuICAgIGNvbnRlbnQ6Jyc7XG4gICAgaGVpZ2h0Oi4zNzVlbTtcbiAgICB3aWR0aDo5LjM3NWVtO1xuICAgIGJhY2tncm91bmQ6JHllbGxvdztcbiAgfVxufVxuXG4vLyBoZWFkaW5nIGFuaW1hdGlvblxuLmpzIHtcbiAgLmFscGhhLCAgaDIsIC5iZXRhLCAub3ZlcmxpbmUge1xuICAgICY6YmVmb3JlLCAmOmFmdGVyIHtcbiAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24od2lkdGgsIC43NXMsIGVhc2UtaW4tb3V0KTtcbiAgICAgIHdpZHRoOjA7XG4gICAgfVxuICB9XG4gIC5vdmVybGluZSB7XG4gICAgJi5hbmltYXRlIHtcbiAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgd2lkdGg6OS4zNzVlbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLmFscGhhLCBoMi5hbHBoYSB7XG4gICAgJi5hbmltYXRlIHtcbiAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgd2lkdGg6NC4xNjc3ZW07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGgyLCAuYmV0YSB7XG4gICAgJi5hbmltYXRlIHtcbiAgICAgICY6YWZ0ZXIge1xuICAgICAgICB3aWR0aDozLjEyNWVtO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5oMywgLmdhbW1hIHtcbiAgbGluZS1oZWlnaHQ6MS4yNTtcbiAgY29sb3I6JGNoYXJjb2FsO1xuICBmb250LXNpemU6MS42MjVlbTtcbn1cblxuaDQsIC5kZWx0YSB7XG4gIGNvbG9yOiRtZWRHcmF5O1xuICBmb250LXNpemU6MS41ZW07XG4gIGxpbmUtaGVpZ2h0OjEuMDc7XG59XG5cbmg1LCAuZXBpc2xvbiB7XG4gIGNvbG9yOmJsYWNrO1xuICBmb250LXNpemU6MS4zNzVlbTtcbiAgbGluZS1oZWlnaHQ6MS4wODtcbn0gXG5cbmg2LCAuemV0YSB7XG4gIGNvbG9yOiRncmF5O1xuICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJywgc2VyaWY7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGZvbnQtc2l6ZTouODc1ZW07XG4gIGxldHRlci1zcGFjaW5nOi4wNzE0ZW07XG59XG5cbi8vIGNvcHkgYW5kIGxpc3RzXG5wIHtcbiAgbWFyZ2luOjAgMCAxLjY2NjY2N2VtO1xuICBmb250LXNpemU6MS4xMjVlbTtcbiAgJjplbXB0eSB7XG4gICAgZGlzcGxheTpub25lO1xuICB9XG59XG5cbi8vIHRhcmdldGluZyBwbHVnaW4gY29udGFpbmVyIGNsYXNzIGluY2x1ZGVkIG9uIGZlYXR1cmUtZGV0YWlsLCB1dGlpbHR5IHBhZ2UgYW5kIDQwNCB0ZW1wbGF0ZVxuLy8gcHJldmVudHMgY29sbGlzaW9ucyB3aXRoIGxpc3RzIHNpdGUgd2lkZVxuLnBsdWdpbi1jb250YWluZXIge1xuICBcbiAgb2wsIHVsIHtcbiAgIGZvbnQtc2l6ZToxLjEyNWVtO1xuICAgIG1hcmdpbjowIDAgMS42NjY2NjdlbTtcbiAgICBwYWRkaW5nLWxlZnQ6MS41ZW07XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICBwYWRkaW5nLWxlZnQ6Mi41ZW07XG4gICAgfVxuICAgIGxpIHtcbiAgICAgIG1hcmdpbi1ib3R0b206MWVtO1xuICAgIH1cbiAgfVxuICBvbCB7XG4gICAgcGFkZGluZy1sZWZ0OjJlbTtcbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgIHBhZGRpbmctbGVmdDozZW07XG4gICAgfVxuICB9XG4gIHVsIHtcbiAgICBsaXN0LXN0eWxlOm5vbmU7XG4gICAgbGkge1xuICAgICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgICBwYWRkaW5nLWxlZnQ6LjVlbTtcbiAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgIHBvc2l0aW9uOmFic29sdXRlO1xuICAgICAgICB0b3A6MDtcbiAgICAgICAgbGVmdDotLjVlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6MS41O1xuICAgICAgICBjb250ZW50OidcXDIwMjInO1xuICAgICAgICBjb2xvcjokeWVsbG93O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBcbn1cbiIsIi50d28tdXAge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgbGkge1xuICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtKjI7XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgbGkge1xuICAgICAgQGluY2x1ZGUgZ2FsbGVyeSgyIG9mIDQpO1xuICAgIH1cbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICBsaSB7XG4gICAgICBAaW5jbHVkZSBnYWxsZXJ5KDQgb2YgOCk7XG4gICAgfVxuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgIGxpIHtcbiAgICAgIEBpbmNsdWRlIGdhbGxlcnkoNiBvZiAxMik7XG4gICAgfVxuICB9XG59XG5cbi50aHJlZS11cCB7XG4gIEBpbmNsdWRlIGNsZWFyZml4O1xuICBsaSB7XG4gICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0qMjtcbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICBsaSB7XG4gICAgICBAaW5jbHVkZSBnYWxsZXJ5KDIgb2YgNCk7XG4gICAgfVxuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgIGxpIHtcbiAgICAgIEBpbmNsdWRlIGdhbGxlcnkoMi42NjYgb2YgOCk7XG4gICAgfVxuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgIGxpIHtcbiAgICAgIEBpbmNsdWRlIGdhbGxlcnkoNCBvZiAxMik7XG4gICAgfVxuICB9XG59IiwiLnNvY2lhbC1saXN0IHtcbiAgZGlzcGxheTotd2Via2l0LWJveDtcbiAgZGlzcGxheTotbXMtZmxleGJveDtcbiAgZGlzcGxheTpmbGV4O1xuICB0ZXh0LWFsaWduOmNlbnRlcjsgIFxuICBhIHtcbiAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICB3aWR0aDoyZW07XG4gICAgaGVpZ2h0OjJlbTtcbiAgICBzdmcge1xuICAgICAgcGF0aCB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oZmlsbCwgLjNzLCBlYXNlLWluLW91dCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGxpIHtcbiAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICBwYWRkaW5nOjAgLjI1ZW07XG4gICAgdGV4dC1hbGlnbjpjZW50ZXI7XG4gICAgLXdlYmtpdC1ib3gtZmxleDogMTtcbiAgIC1tcy1mbGV4LXBvc2l0aXZlOiAxO1xuICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gIH1cbiAgc3ZnIHtcbiAgICAuYmFja2dyb3VuZCB7XG4gICAgICBmaWxsOiRncmF5OyAgICBcbiAgICB9XG4gICAgLmNvbG9yIHtcbiAgICAgIGZpbGw6d2hpdGU7XG4gICAgfVxuICB9XG59IiwiLnRlYXNlci1saXN0IHtcbiAgQGluY2x1ZGUgcGxhaW4tbGlzdDtcbn1cblxuLnRlYXNlci1pdGVtIHtcbiAgZmlndXJlIHtcbiAgICBtYXJnaW46MCAwICR2LXJoeXRobS8yO1xuICAgIHBvc2l0aW9uOnJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgcGFkZGluZy1ib3R0b206NTYuMjUlO1xuICAgIGEge1xuICAgICAgZGlzcGxheTpibG9jaztcbiAgICAgIHdpZHRoOjEwMCU7XG4gICAgICBoZWlnaHQ6MTAwJTtcbiAgICB9XG4gICAgaW1nICB7XG4gICAgICBAaW5jbHVkZSBjZW50ZXI7XG4gICAgICBkaXNwbGF5OmJsb2NrO1xuICAgICAgd2lkdGg6MTAwJTtcbiAgICB9XG4gIH1cbiAgcCB7XG4gICAgbWFyZ2luLWJvdHRvbTowO1xuICB9XG4gIGgzIHtcbiAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobS80O1xuICAgIC5wYXNzcG9ydC1pY29uIHtcbiAgICAgIG1heC13aWR0aDoxZW07XG4gICAgICBtYXgtaGVpZ2h0OjFlbTtcbiAgICB9XG4gIH1cbiAgLnpldGEge1xuICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtLzQ7XG4gICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gIH1cbiAgLmljb24ge1xuICAgIHBvc2l0aW9uOmFic29sdXRlO1xuICAgIGJvdHRvbTowO1xuICAgIGxlZnQ6MDtcbiAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICB3aWR0aDozLjEyNWVtO1xuICAgIGhlaWdodDozLjEyNWVtO1xuICAgIGJhY2tncm91bmQ6cmdiYSgkYmx1ZSwgLjc1KTtcbiAgICBpbWcge1xuICAgICAgQGluY2x1ZGUgY2VudGVyO1xuICAgICAgbWF4LXdpZHRoOjEuNTYyNWVtO1xuICAgICAgbWF4LWhlaWdodDoxLjU2MjVlbTtcbiAgICAgIHdpZHRoOmF1dG87XG4gICAgICBoZWlnaHQ6YXV0bztcbiAgICB9XG4gIH1cbn1cblxuLmNvbGxlY3Rpb24taXRlbSB7XG4gIGZpZ3VyZSB7XG4gICAgcGFkZGluZy1ib3R0b206MjcuNSU7XG4gIH1cbn1cblxuLmpzIHtcbiAgLnRlYXNlci1pdGVtIHtcbiAgICAmLnNsaWRlLWluLWl0ZW0ge1xuICAgICAgQGluY2x1ZGUgYW5pbWF0ZWQoLjVzKTtcbiAgICAgIEBpbmNsdWRlIHNsaWRlSW5VcDtcbiAgICB9XG4gICAgJi5oaWRkZW4taXRlbSB7XG4gICAgICBkaXNwbGF5Om5vbmU7XG4gICAgfVxuICB9XG59IiwiLy8gR2VuZXJpYyBTdHlsaW5nIGZvciBwbGFjZWhvbGRlcnMuIExheW91dCBjYW4gYmUgZm91bmQgaW4gZ3JpZCBoZWxwZXJzXG4ucGx1Z2luLWJsb2NrLCAucGx1Z2luLWxpc3QtYmxvY2sge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuXG4gICAgbWFyZ2luLWJvdHRvbTogJHYtcmh5dGhtICogMjtcbn1cblxuLnBsdWdpbi1ibG9jayB7XG4gICAgaDMge1xuICAgICAgICBib3JkZXItYm90dG9tOiAwLjA2MjVlbSBzb2xpZCAkbWVkR3JheTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJHYtcmh5dGhtO1xuICAgIH1cbn1cblxuLnBsdWdpbi1jb250YWluZXIge1xuICAgIGgzIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJHYtcmh5dGhtIC8gODtcbiAgICB9XG59XG5cbi5wbHVnaW4tbGlzdC1ibG9jayB7XG4gICAgdWwge1xuICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgICAgQGluY2x1ZGUgcGxhaW4tbGlzdDtcbiAgICB9XG59XG5cbi5hbHBoYSB7XG4gICAgJiArIC5wbHVnaW4tYmxvY2ssICYgKyAucGx1Z2luLWxpc3QtYmxvY2sge1xuICAgICAgICBtYXJnaW4tdG9wOiAkdi1yaHl0aG0gKiAyO1xuICAgIH1cbn1cblxuLnBsdWdpbi1jb250YWluZXIge1xuICAgIGZpZ3VyZSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEuNWVtO1xuXG4gICAgICAgIGltZyB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuXG4gICAgICAgICYuY2VudGVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgbWFyZ2luOiAxNXB4IGF1dG87XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIGphbmt5IG92ZXJpZGUgb2YgZGphbmdvIGlubGluZSBzdHlsaW5nIGZvciBmbG9hdGluZyBzdHVmZlxuKltzdHlsZSo9XCJmbG9hdDogbGVmdFwiXSwgLmxlZnQge1xuICAgIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luOiAwIGF1dG8gKCR2LXJoeXRobSAqIDEuNSkgYXV0bztcblxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICBkaXNwbGF5OiBpbmhlcml0O1xuICAgICAgICBmbG9hdDogbGVmdCAhaW1wb3J0YW50O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6ICR2LXJoeXRobTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogKCR2LXJoeXRobSAvIDIpICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4qW3N0eWxlKj1cImZsb2F0OiByaWdodFwiXSwgLnJpZ2h0IHtcbiAgICBmbG9hdDogbm9uZSAhaW1wb3J0YW50O1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hcmdpbjogMCBhdXRvICgkdi1yaHl0aG0gKiAxLjUpIGF1dG87XG5cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgZGlzcGxheTogaW5oZXJpdDtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkdi1yaHl0aG07XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICgkdi1yaHl0aG0gLyAyKSAhaW1wb3J0YW50O1xuICAgIH1cbn1cblxuLmNlbnRlciB7XG4gICAgbWFyZ2luLWJvdHRvbTogJHYtcmh5dGhtO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn0iLCIvKipcbiAqIHdhbGxvcC5jc3NcbiAqXG4gKiBAZmlsZW92ZXJ2aWV3IERlZmF1bHQgc3R5bGVzIGZvciB3YWxsb3Ag4oCTIHJlY29tbWVuZGVkXG4gKlxuICogQGF1dGhvciBQZWRybyBEdWFydGVcbiAqIEBhdXRob3IgaHR0cDovL3BlZHJvZHVhcnRlLm1lL3dhbGxvcFxuICovXG5cbi5jYXJvdXNlbC1jb250YWluZXIge1xuICAqOmZvY3VzIHtcbiAgICBvdXRsaW5lOi4xMjVlbSBzb2xpZCAkeWVsbG93O1xuICB9XG5cbiAgLmZ1bGwtc2NyZWVuLCAuc2xpZGVzLXBhZ2luYXRpb24ge1xuICAgIGRpc3BsYXk6bm9uZTtcbiAgfVxuICAuV2FsbG9wLWxpc3Qge1xuICAgIGRpc3BsYXk6Z3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgyNTBweCwgMWZyICkpO1xuICAgIGdyaWQtZ2FwOjNweDtcbiAgICBwYWRkaW5nOjA7XG4gICAgLldhbGxvcC1pdGVtIHtcbiAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgZGlzcGxheTpub25lO1xuICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgIHdpZHRoOjE1MCU7XG4gICAgICBtYXJnaW4tbGVmdDotMjUlO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1qYi1taW4sICRtYXAtbGcpIHtcbiAgICAgIHdpZHRoOjIwMCU7XG4gICAgICBtYXJnaW4tbGVmdDotNTAlO1xuICAgIH1cbiAgfVxufVxuXG4uanMge1xuICAgIC8vIGFkZGVkIHRvIGZvciBleGl0IGFuaW1hdGlvbnNcbiAgICAuY2Fyb3VzZWwtY29udGFpbmVyIHtcbiAgICAgIG92ZXJmbG93OmhpZGRlbjtcbiAgICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtKjI7XG4gICAgICBiYWNrZ3JvdW5kOmJsYWNrO1xuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgIHBhZGRpbmctdG9wOjFlbTtcbiAgICAgIH1cbiAgICAgIC5zbGlkZXMtcGFnaW5hdGlvbiB7XG4gICAgICAgIGRpc3BsYXk6aW5oZXJpdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuV2FsbG9wLWxpc3Qge1xuICAgICAgd2lkdGg6aW5oZXJpdDtcbiAgICB9XG5cbiAgICAuY2Fyb3VzZWwge1xuICAgICAgJi5leHBhbmRlZCB7XG4gICAgICAgIC5zbGlkZXMtcGFnaW5hdGlvbiwgLmZ1bGwtc2NyZWVuIHtcbiAgICAgICAgICBkaXNwbGF5Om5vbmU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgIC5wbHVnaW4tY29udGFpbmVyIHtcbiAgICAuV2FsbG9wIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIEBpbmNsdWRlIGFuaW1hdGVkKC40NXMpO1xuICAgICAgJi5lbnRlcmluZy1mdWxsc2NyZWVuIHtcbiAgICAgICAgQGluY2x1ZGUgc2xpZGVJbkRvd247XG4gICAgICB9XG4gICAgICAmLmV4aXRpbmctZnVsbHNjcmVlbiB7XG4gICAgICAgIEBpbmNsdWRlIHNsaWRlT3V0RG93bjtcbiAgICAgIH1cbiAgICAgICYuZW50ZXJpbmctYmFjayB7XG4gICAgICAgIEBpbmNsdWRlIGZhZGVJbjtcbiAgICAgIH1cbiAgICAgICYudmlld2luZy1mdWxsIHtcbiAgICAgICAgcG9zaXRpb246Zml4ZWQ7XG4gICAgICAgIGhlaWdodDoxMDAlO1xuICAgICAgICB3aWR0aDoxMDAlO1xuICAgICAgICBsZWZ0OjA7XG4gICAgICAgIHRvcDowO1xuICAgICAgICB6LWluZGV4OjIxNDc0ODM2NDc7XG4gICAgICAgIGJhY2tncm91bmQ6YmxhY2s7XG4gICAgICAgIGJ1dHRvbiB7XG4gICAgICAgICAgei1pbmRleDoxOyAgICAgICAgICBcbiAgICAgICAgfVxuICAgICAgICAuc2xpZGVzLXBhZ2luYXRpb24ge1xuICAgICAgICAgIHJpZ2h0OjIwJTtcbiAgICAgICAgICB0b3A6Y2FsYyg3NXZoICsgMWVtKTtcbiAgICAgICAgfVxuICAgICAgICAuZnVsbC1zY3JlZW4ge1xuICAgICAgICAgIGxlZnQ6MjAlO1xuICAgICAgICAgIHRvcDpjYWxjKDc1dmggKyAxLjE1ZW0pO1xuICAgICAgICB9XG4gICAgICAgIC5XYWxsb3AtaXRlbSB7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbTpub25lO1xuICAgICAgICAgIGNvbG9yOndoaXRlO1xuICAgICAgICAgIGJhY2tncm91bmQ6dHJhbnNwYXJlbnQ7XG4gICAgICAgICAgaGVpZ2h0OjEwMCU7XG4gICAgICAgICAgd2lkdGg6MTAwJTsgICAgICAgICAgXG4gICAgICAgICAgJi5XYWxsb3AtaXRlbS0tY3VycmVudCB7XG4gICAgICAgICAgICBmaWd1cmUge1xuICAgICAgICAgICAgICBtYXJnaW46MCBhdXRvO1xuICAgICAgICAgICAgICB3aWR0aDo2MCU7XG4gICAgICAgICAgICAgIC5tZWRpYS1jb250YWluZXIge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIGhlaWdodDo3NXZoO1xuICAgICAgICAgICAgICAgIHdpZHRoOjEwMCU7XG4gICAgICAgICAgICAgICAgcGFkZGluZy10b3A6MWVtO1xuICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIGZpZ2NhcHRpb24ge1xuICAgICAgICAgICAgICAgIG1hcmdpbjozZW0gYXV0byAwIGF1dG87XG4gICAgICAgICAgICAgICAgcGFkZGluZzowOyBcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6NjB2dztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAuc2VlLW1vcmUge1xuICAgICAgICAgICAgICAgIGxlZnQ6Y2FsYygyMCUgLSAuNDVlbSk7XG4gICAgICAgICAgICAgICAgdG9wOmNhbGMoNzV2aCArIDcuNzVlbSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLmhpZGUtbW9yZSB7XG4gICAgICAgICAgICAgICAgcmlnaHQ6MjAlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICYubG9uZy1jYXB0aW9uIHtcbiAgICAgICAgICAgICAgICAmLmV4cGFuZGVkIHtcbiAgICAgICAgICAgICAgICAgIGZpZ2NhcHRpb24ge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDozZW07XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qXG4gICAgVGhpcyBlbGVtZW50IGdyb3VwcyBhbGwgdGhlIGl0ZW1zLCBidXQgbm90IHRoZSBidXR0b25zXG4gICAgSXQncyBhIHJlY29tbWVuZGF0aW9uIGJ1dCBpdCdzIHZlcnkgbGlrZWx5XG4gICAgeW91J2xsIHdhbnQgdG8gaGlkZSBhbnkgb3ZlcmZsb3cgZnJvbSB0aGUgaXRlbXNcbiAgICBFc3BlY2lhbGx5IHdoZW4gZG9pbmcgYW5pbWF0aW9ucyBzdWNoIGFzIHNjYWxlXG4gICAqL1xuXG4gIC5wbHVnaW4tY29udGFpbmVyIHtcbiAgICAuV2FsbG9wLWxpc3Qge1xuICAgICAgQGluY2x1ZGUgcGxhaW4tbGlzdDtcbiAgICAgIGRpc3BsYXk6aW5oZXJpdDtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgfVxuICB9XG5cbiAgLypcbiAgICBUaGlzIGlzIHRoZSBpdGVtIGVsZW1lbnRcbiAgICBCeSBkZWZhdWx0LCB0aGV5IGFyZSBhbGwgaGlkZGVuIGFuZFxuICAgIHBvc2l0aW9uZWQgYWJzb2x1dGVcbiAgICBJIHJlY29tbWVuZCBhbHdheXMgaGF2aW5nIC5XYWxsb3AtaXRlbS0tY3VycmVudFxuICAgIGluIHlvdXIgbWFya3VwIGJ5IGRlZmF1bHQgKHByb2JhYmx5IG9uIHRoZSBmaXJzdCBlbGVtZW50KVxuICAgKi9cblxuICAucGx1Z2luLWNvbnRhaW5lciB7XG4gICAgLldhbGxvcC1pdGVtIHtcbiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMDtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIHBhZGRpbmctbGVmdDowO1xuICAgICAgbWFyZ2luLWJvdHRvbTowO1xuICAgICAgY29sb3I6d2hpdGU7XG4gICAgICAubWVkaWEtY29udGFpbmVyIHtcbiAgICAgICAgZGlzcGxheTpibG9jaztcbiAgICAgICAgaGVpZ2h0OjI0ZW07XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgaGVpZ2h0OjMyLjgxMjVlbTtcbiAgICAgICAgfVxuICAgICAgICBpbWcge1xuICAgICAgICAgIEBpbmNsdWRlIGNlbnRlcjtcbiAgICAgICAgICBtYXgtaGVpZ2h0OjEwMCU7XG4gICAgICAgICAgbWF4LXdpZHRoOjkwJTtcbiAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgIG1heC13aWR0aDoxMDAlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaDQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOi4yNWVtO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBcbiAgLmNhcm91c2VsLWl0ZW0tY2FwdGlvbiB7XG4gICAgcGFkZGluZzouNWVtICR2LXJoeXRobTtcbiAgICB0ZXh0LWFsaWduOmxlZnQ7XG4gIH1cblxuICAvKlxuICAgIFRoaXMgaXMgdGhlIGN1cnJlbnQgaXRlbSBlbGVtZW50XG4gICAgQWxsIHdlIGRvIGhlcmUsIGlzIG1ha2UgaXQgdmlzaWJsZSBhZ2FpbiByZXNldFxuICAgIHRoZSBwb3NpdGlvbiB0byBzdGF0aWMuIENvdWxkIGFsc28gYmUgcmVsYXRpdmVcbiAgICovXG5cbiAgLnBsdWdpbi1jb250YWluZXIge1xuICAgIC5XYWxsb3AtaXRlbS0tY3VycmVudCB7XG4gICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgdGV4dC1hbGlnbjpjZW50ZXI7XG4gICAgICBmaWd1cmV7XG4gICAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgICB3aWR0aDoxMDAlO1xuICAgICAgICAmLmxvbmctY2FwdGlvbiB7XG4gICAgICAgICAgLmhpZGUtbW9yZSwgLnNlZS1tb3JlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6bm9uZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgZmlnY2FwdGlvbiB7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24obWF4LWhlaWdodCwgMXMsIGVhc2UtaW4tb3V0KTtcbiAgICAgICAgICAgICAgbWF4LWhlaWdodDoxNWVtO1xuICAgICAgICAgICAgICBvdmVyZmxvdzpoaWRkZW47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwIHtcbiAgICAgICAgICAgICAgbWF4LWhlaWdodDo0LjVlbTtcbiAgICAgICAgICAgICAgbWluLWhlaWdodDo0LjVlbTtcbiAgICAgICAgICAgICAgb3ZlcmZsb3c6aGlkZGVuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLnNlZS1tb3JlIHtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgcGxhaW4tYnV0dG9uO1xuICAgICAgICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGNvbG9yLCAuM3MsIGVhc2UtaW4tb3V0KTtcbiAgICAgICAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgIGNvbG9yOiRyZWQ7XG4gICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgbGVmdDpjYWxjKDUlIC0gLjQ1ZW0pO1xuICAgICAgICAgICAgICB0b3A6NDAuMjVlbTtcbiAgICAgICAgICAgICAgcGFkZGluZzowIC40NWVtO1xuICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBjb2xvcjokeWVsbG93O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuaGlkZS1tb3JlIHtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgcGxhaW4tYnV0dG9uO1xuICAgICAgICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGFsbCwgLjNzLCBlYXNlLWluLW91dCk7XG4gICAgICAgICAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICBvcGFjaXR5OjA7XG4gICAgICAgICAgICAgIHdpZHRoOjJlbTtcbiAgICAgICAgICAgICAgaGVpZ2h0OjJlbTtcbiAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICByaWdodDo1JTtcbiAgICAgICAgICAgICAgei1pbmRleDoxO1xuICAgICAgICAgICAgICBkaXNwbGF5Om5vbmU7XG4gICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICAgICAgICBmaWxsOiR5ZWxsb3c7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihmaWxsLCAuM3MsIGVhc2UtaW4tb3V0KTtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBjZW50ZXI7XG4gICAgICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6bm9uZTtcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6MWVtO1xuICAgICAgICAgICAgICAgIG1heC1oZWlnaHQ6MWVtO1xuICAgICAgICAgICAgICAgIGZpbGw6d2hpdGU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYuZXhwYW5kZWQge1xuICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogOC41NWVtO1xuICAgICAgICAgICAgICBmaWdjYXB0aW9uIHtcbiAgICAgICAgICAgICAgICBtYXgtaGVpZ2h0OjEwMCU7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6JHYtcmh5dGhtKjIgNSUgJHYtcmh5dGhtIDUlO1xuICAgICAgICAgICAgICAgIG1heC13aWR0aDppbmhlcml0O1xuICAgICAgICAgICAgICAgIGJvdHRvbTowO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHAge1xuICAgICAgICAgICAgICAgIG1heC1oZWlnaHQ6aW5oZXJpdDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAuaGlkZS1tb3JlIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAuc2VlLW1vcmUge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6bm9uZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gXG4gICAgICAgIH1cbiAgICAgICAgaW1nIHtcbiAgICAgICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaDQge1xuICAgICAgICBjb2xvcjp3aGl0ZTtcbiAgICAgIH1cbiAgICAgIGZpZ2NhcHRpb24sIC5jYXB0aW9uIHtcbiAgICAgICAgcGFkZGluZzokdi1yaHl0aG0gMCAwIDA7XG4gICAgICAgIGJhY2tncm91bmQ6cmdiYShibGFjaywgLjc1KTtcbiAgICAgICAgdGV4dC1hbGlnbjpsZWZ0O1xuICAgICAgICBjb2xvcjp3aGl0ZTtcbiAgICAgICAgZm9udC1zdHlsZTpub3JtYWw7XG4gICAgICAgIG1heC13aWR0aDo5MCU7XG4gICAgICAgIG1hcmdpbjoxLjVlbSBhdXRvIDAgYXV0bztcbiAgICAgICAgcCB7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTouNTVlbTtcbiAgICAgICAgfVxuICAgICAgICBzcGFuIHtcbiAgICAgICAgICBoZWlnaHQ6YXV0bztcbiAgICAgICAgICBkaXNwbGF5OmJsb2NrO1xuICAgICAgICAgIG1hcmdpbi10b3A6JHYtcmh5dGhtKjI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuV2FsbG9wLWJ1dHRvblByZXZpb3VzLCAuV2FsbG9wLWJ1dHRvbk5leHQge1xuICAgIEBpbmNsdWRlIHBsYWluLWJ1dHRvbjtcbiAgICBzdmcge1xuICAgICAgaGVpZ2h0OjFlbTtcbiAgICAgIHdpZHRoOjFlbTtcbiAgICAgIHBhdGgge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGZpbGwsIC4zcywgZWFzZS1pbi1vdXQpO1xuICAgICAgICBmaWxsOndoaXRlO1xuICAgICAgICBvcGFjaXR5Oi44NTtcbiAgICAgIH1cbiAgICB9XG4gICAgJjpob3ZlciB7XG4gICAgICBzdmcge1xuICAgICAgICBwYXRoIHtcbiAgICAgICAgICBmaWxsOiR5ZWxsb3c7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgXG4gIC5mdWxsLXNjcmVlbiB7XG4gICAgQGluY2x1ZGUgYnV0dG9uKG51bGwsICRtZWRHcmF5KTtcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGNvbG9yLCAuM3MsIGVhc2UtaW4tb3V0KTtcbiAgICBiYWNrZ3JvdW5kOm5vbmU7XG4gICAgcGFkZGluZzouM2VtIC40NWVtIC41ZW0gLjQ1ZW07XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBmb250LXdlaWdodDo3MDA7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDozNy41ZW07XG4gICAgbGVmdDo1JTtcbiAgICBkaXNwbGF5Om5vbmU7XG4gICAgbGluZS1oZWlnaHQ6MDtcbiAgICB6LWluZGV4OjE7XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICB9XG4gICAgLmZ1bGwtc2NyZWVuLWljb24ge1xuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihmaWxsLCAuM3MsIGVhc2UtaW4tb3V0KTtcbiAgICAgIGZpbGw6d2hpdGU7XG4gICAgICB3aWR0aDoxLjI1ZW07XG4gICAgICBoZWlnaHQ6MS4yNWVtO1xuICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICBtYXJnaW4tcmlnaHQ6MC41ZW07XG4gICAgICBtYXJnaW4tYm90dG9tOiAtLjA1ZW07XG4gICAgfVxuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6JHllbGxvdztcbiAgICAgIC5mdWxsLXNjcmVlbi1pY29uIHtcbiAgICAgICAgZmlsbDokeWVsbG93OyAgICAgICAgXG4gICAgICB9XG4gICAgfVxuICB9XG4gIFxuICAuc2xpZGVzLXBhZ2luYXRpb24ge1xuICAgIG1hcmdpbjowO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6MjcuNzVlbTtcbiAgICByaWdodDo1JTtcbiAgICBmb250LXdlaWdodDo3MDA7XG4gICAgei1pbmRleDoxO1xuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgdG9wOjM3Ljc1ZW07XG4gICAgfVxuICAgIC5jb3VudCB7XG4gICAgICBjb2xvcjokbWVkR3JheTtcbiAgICAgIGZsb2F0OmxlZnQ7XG4gICAgICBtYXJnaW46LS4wNWVtIDFlbSAwIDA7XG4gICAgfVxuICAgIGJ1dHRvbiB7XG4gICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgICY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICAgIG1hcmdpbi1yaWdodDouNzVlbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLnBsdWdpbi1jb250YWluZXIge1xuICAgIC52aWRlby1nYWxsZXJ5IHtcbiAgICAgICBtYXgtd2lkdGg6NDRlbTtcbiAgICAgICBtYXJnaW46MCBhdXRvO1xuICAgICAgLnNsaWRlcy1wYWdpbmF0aW9uLCAuZnVsbC1zY3JlZW4ge1xuICAgICAgICB0b3A6LjVlbTtcbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgdG9wOjIzLjc1ZW07XG4gICAgICAgIH1cbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgICAgdG9wOjI1Ljc1ZW07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC5mdWxsLXNjcmVlbiB7XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgIGxlZnQ6Y2FsYyg1JSAtIC40NWVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLmNhcHRpb24ge1xuICAgICAgICBwYWRkaW5nOjA7XG4gICAgICAgIG1hcmdpbjowIGF1dG87XG4gICAgICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtO1xuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICBtYXJnaW4tdG9wOiR2LXJoeXRobSoyLjU7XG4gICAgICAgIH1cblxuICAgICAgfVxuICAgICAgLmNvdmUtY29udGFpbmVyIHtcbiAgICAgICAgbWFyZ2luLXRvcDokdi1yaHl0aG0qMS41O1xuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICBtYXJnaW4tdG9wOjA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICYudmlld2luZy1mdWxsIHtcbiAgICAgICAgbWF4LXdpZHRoOjEwMCU7XG4gICAgICAgIC5zbGlkZXMtcGFnaW5hdGlvbiB7XG4gICAgICAgICAgcmlnaHQ6Y2FsYyg1MCUgLSAyM2VtKTtcbiAgICAgICAgICB0b3A6MjhlbTtcbiAgICAgICAgfVxuICAgICAgICAuZnVsbC1zY3JlZW4ge1xuICAgICAgICAgIGxlZnQ6Y2FsYyg1MCUgLSAyM2VtKTtcbiAgICAgICAgICB0b3A6MjhlbTtcbiAgICAgICAgfVxuICAgICAgICAuV2FsbG9wLWl0ZW0tLWN1cnJlbnQuV2FsbG9wLWl0ZW0ge1xuICAgICAgICAgIGhlaWdodDoxMDB2aDtcbiAgICAgICAgfVxuICAgICAgICAuY292ZS13cmFwcGVyIHtcbiAgICAgICAgICB3aWR0aDo0MGVtO1xuICAgICAgICAgIG1hcmdpbjokdi1yaHl0aG0gYXV0byAwIGF1dG87XG4gICAgICAgIH1cbiAgICAgICAgLmNvdmUtY29udGFpbmVyIHtcbiAgICAgICAgICBtYXJnaW46MDtcbiAgICAgICAgfVxuICAgICAgICAuY2FwdGlvbiB7XG4gICAgICAgICAgbWF4LXdpZHRoOjEwMCU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiB3YWxsb3AtLXNsaWRlLmNzc1xuICpcbiAqIEBmaWxlb3ZlcnZpZXcgU2xpZGUgYW5pbWF0aW9uIGZvciB3YWxsb3BcbiAqXG4gKiBAYXV0aG9yIFBlZHJvIER1YXJ0ZVxuICogQGF1dGhvciBodHRwOi8vcGVkcm9kdWFydGUubWUvd2FsbG9wXG4gKi9cblxuLyogdGhlIDEwbXMgYW5pbWF0aW9uLWRlbGF5IGZpeGVkIHNvbWUgd2VpcmQgcmVuZGVyaW5nIGlzc3VlcyB3aXRoIGlQaG9uZSAqL1xuLldhbGxvcC0tc2xpZGUgLldhbGxvcC1pdGVtLS1zaG93UHJldmlvdXMge1xuICAtd2Via2l0LWFuaW1hdGlvbjogc2xpZGVGcm9tTGVmdCAzNTBtcyAxMG1zIGxpbmVhciBib3RoO1xuICAtbW96LWFuaW1hdGlvbjogc2xpZGVGcm9tTGVmdCAzNTBtcyAxMG1zIGxpbmVhciBib3RoO1xuICAtbXMtYW5pbWF0aW9uOiBzbGlkZUZyb21MZWZ0IDM1MG1zIDEwbXMgbGluZWFyIGJvdGg7XG4gIGFuaW1hdGlvbjogc2xpZGVGcm9tTGVmdCAzNTBtcyAxMG1zIGxpbmVhciBib3RoO1xufVxuXG4uV2FsbG9wLS1zbGlkZSAuV2FsbG9wLWl0ZW0tLXNob3dOZXh0IHtcbiAgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlRnJvbVJpZ2h0IDM1MG1zIDEwbXMgbGluZWFyIGJvdGg7XG4gIC1tb3otYW5pbWF0aW9uOiBzbGlkZUZyb21SaWdodCAzNTBtcyAxMG1zIGxpbmVhciBib3RoO1xuICAtbXMtYW5pbWF0aW9uOiBzbGlkZUZyb21SaWdodCAzNTBtcyAxMG1zIGxpbmVhciBib3RoO1xuICBhbmltYXRpb246IHNsaWRlRnJvbVJpZ2h0IDM1MG1zIDEwbXMgbGluZWFyIGJvdGg7XG59XG5cbi5XYWxsb3AtLXNsaWRlIC5XYWxsb3AtaXRlbS0taGlkZVByZXZpb3VzLFxuLldhbGxvcC0tc2xpZGUgLldhbGxvcC1pdGVtLS1oaWRlTmV4dCB7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG59XG5cbi5XYWxsb3AtLXNsaWRlIC5XYWxsb3AtaXRlbS0taGlkZVByZXZpb3VzIHtcbiAgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlVG9MZWZ0IDM1MG1zIDEwbXMgbGluZWFyIGJvdGg7XG4gIC1tb3otYW5pbWF0aW9uOiBzbGlkZVRvTGVmdCAzNTBtcyAxMG1zIGxpbmVhciBib3RoO1xuICAtbXMtYW5pbWF0aW9uOiBzbGlkZVRvTGVmdCAzNTBtcyAxMG1zIGxpbmVhciBib3RoO1xuICBhbmltYXRpb246IHNsaWRlVG9MZWZ0IDM1MG1zIDEwbXMgbGluZWFyIGJvdGg7XG59XG5cbi5XYWxsb3AtLXNsaWRlIC5XYWxsb3AtaXRlbS0taGlkZU5leHQge1xuICAtd2Via2l0LWFuaW1hdGlvbjogc2xpZGVUb1JpZ2h0IDM1MG1zIDEwbXMgbGluZWFyIGJvdGg7XG4gIC1tb3otYW5pbWF0aW9uOiBzbGlkZVRvUmlnaHQgMzUwbXMgMTBtcyBsaW5lYXIgYm90aDtcbiAgLW1zLWFuaW1hdGlvbjogc2xpZGVUb1JpZ2h0IDM1MG1zIDEwbXMgbGluZWFyIGJvdGg7XG4gIGFuaW1hdGlvbjogc2xpZGVUb1JpZ2h0IDM1MG1zIDEwbXMgbGluZWFyIGJvdGg7XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZUZyb21MZWZ0IHtcbiAgMCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gIH1cbn1cblxuQC1tb3ota2V5ZnJhbWVzIHNsaWRlRnJvbUxlZnQge1xuICAwJSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgfVxufVxuXG5ALW1zLWtleWZyYW1lcyBzbGlkZUZyb21MZWZ0IHtcbiAgMCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBzbGlkZUZyb21MZWZ0IHtcbiAgMCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gIH1cbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlRnJvbVJpZ2h0IHtcbiAgMCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgfVxufVxuXG5ALW1vei1rZXlmcmFtZXMgc2xpZGVGcm9tUmlnaHQge1xuICAwJSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICB9XG59XG5cbkAtbXMta2V5ZnJhbWVzIHNsaWRlRnJvbVJpZ2h0IHtcbiAgMCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlRnJvbVJpZ2h0IHtcbiAgMCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgfVxufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGVUb0xlZnQge1xuICA5OSUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gIH1cbn1cblxuQC1tb3ota2V5ZnJhbWVzIHNsaWRlVG9MZWZ0IHtcbiAgOTklIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICB9XG59XG5cbkAtbXMta2V5ZnJhbWVzIHNsaWRlVG9MZWZ0IHtcbiAgOTklIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgc2xpZGVUb0xlZnQge1xuICA5OSUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gIH1cbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlVG9SaWdodCB7XG4gIDk5JSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICB9XG59XG5cbkAtbW96LWtleWZyYW1lcyBzbGlkZVRvUmlnaHQge1xuICA5OSUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgfVxufVxuXG5ALW1zLWtleWZyYW1lcyBzbGlkZVRvUmlnaHQge1xuICA5OSUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlVG9SaWdodCB7XG4gIDk5JSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICB9XG59XG4iLCIuYWNjb3JkaW9uLXRvZ2dsZSB7XG4gIGRpc3BsYXk6bm9uZTtcbn1cblxuLmpzIHtcbiAgLmFjY29yZGlvbi10b2dnbGUge1xuICAgIGJvcmRlcjpub25lO1xuICAgIGJhY2tncm91bmQ6bm9uZTtcbiAgICBkaXNwbGF5OmJsb2NrO1xuICAgIHdpZHRoOjEwMCU7XG4gICAgdGV4dC1hbGlnbjpsZWZ0O1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgY29sb3I6JHJlZDtcbiAgICBmb250LXNpemU6MS4yNWVtO1xuICAgIGZvbnQtd2VpZ2h0OjcwMDtcbiAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobTtcbiAgICBwYWRkaW5nLWJvdHRvbTokdi1yaHl0aG0vMztcbiAgICBib3JkZXItYm90dG9tOi4xMjVlbSBzb2xpZCAkbWVkR3JheTtcbiAgICAqIHtcbiAgICAgIHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcbiAgICB9XG4gICAgJjpob3ZlciB7XG4gICAgICBib3JkZXItYm90dG9tOi4xMjVlbSBzb2xpZCAkbWVkR3JheTtcbiAgICB9XG4gICAgc3ZnIHtcbiAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgbWFyZ2luLXRvcDotLjE1ZW07XG4gICAgICBoZWlnaHQ6Ljc1ZW07XG4gICAgICB3aWR0aDouNzVlbTtcbiAgICAgIGZpbGw6JHJlZDtcbiAgICB9XG4gICAgLnZlcnRpY2FsIHtcbiAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24odHJhbnNmb3JtLCAuMjVzLCBlYXNlLWluLW91dCk7XG4gICAgICAtbXMtdHJhbnNmb3JtLW9yaWdpbjpjZW50ZXI7XG4gICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjpjZW50ZXI7XG4gICAgfVxuICAgICYub3BlbiB7XG4gICAgIC52ZXJ0aWNhbCB7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlWSgwKTsgXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWSgwKTtcbiAgICAgfVxuICAgIH1cbiAgfVxuICAuYWNjb3JkaW9uLWNvbnRlbnQge1xuICAgIGRpc3BsYXk6bm9uZTtcbiAgICAmLm9wZW4ge1xuICAgICAgZGlzcGxheTpibG9jaztcbiAgICB9XG4gIH1cbn0iLCIuZmlsdGVycyB7XG4gIEBpbmNsdWRlIGNsZWFyZml4O1xuICBiYWNrZ3JvdW5kOiNkMGRiZWQ7XG4gIHBhZGRpbmc6JHYtcmh5dGhtO1xuICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobTtcbiAgcG9zaXRpb246cmVsYXRpdmU7XG4gIGZpZWxkc2V0IHtcbiAgICBwYWRkaW5nOjA7XG4gICAgbWFyZ2luOjA7XG4gICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG07XG4gICAgYm9yZGVyOm5vbmU7XG4gICAgaW5wdXRbdHlwZT0ncmFkaW8nXSB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBsZWZ0OiAtOTk5OXB4O1xuICAgICAgJjpjaGVja2VkICsgbGFiZWwge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiRjb3JuZmxvd2VyO1xuICAgICAgICBjb2xvcjp3aGl0ZTtcbiAgICAgICAgYm9yZGVyOi4xMjVlbSBzb2xpZCAkY29ybmZsb3dlcjtcbiAgICAgIH1cbiAgICAgICY6Zm9jdXMgKyBsYWJlbCB7XG4gICAgICAgIGJvcmRlcjouMTI1ZW0gc29saWQgJHllbGxvdztcbiAgICAgIH1cbiAgICB9XG4gICAgbGFiZWwge1xuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihhbGwsIC4zNXMsIGVhc2UtaW4tb3V0KTtcbiAgICAgIGJhY2tncm91bmQ6d2hpdGU7XG4gICAgICBwYWRkaW5nOi4yZW0gMS41ZW07XG4gICAgICBmb250LXdlaWdodDo3MDA7XG4gICAgICBjb2xvcjokY29ybmZsb3dlcjtcbiAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgYm9yZGVyOi4xMjVlbSBzb2xpZCB3aGl0ZTtcbiAgICAgICY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6MS4yNWVtIDAgMCAxLjI1ZW07XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6MS4xNWVtO1xuICAgICAgfVxuICAgICAgJjpsYXN0LW9mLXR5cGUge1xuICAgICAgICBib3JkZXItcmFkaXVzOjAgMS4yNWVtIDEuMjVlbSAwO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6MS4xNWVtO1xuICAgICAgfVxuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgIHdpZHRoOjEyLjgxMjVlbTtcbiAgICAgICAgdGV4dC1hbGlnbjpjZW50ZXI7XG4gICAgICB9XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICBtYXJnaW4tYm90dG9tOjA7XG4gICAgICBtYXJnaW4tcmlnaHQ6JHYtcmh5dGhtLzI7XG4gICAgfVxuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMjMuNzVlbSkge1xuICAgICAgZm9udC1zaXplOjMuODV2dztcbiAgICB9XG4gIH1cblxuICAubGFiZWwge1xuICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtLzI7XG4gICAgZm9udC13ZWlnaHQ6NzAwO1xuICAgIGNvbG9yOiM0MzQzNDM7XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICBtYXJnaW4tYm90dG9tOjA7XG4gICAgICBtYXJnaW4tcmlnaHQ6JHYtcmh5dGhtLzQ7ICAgICAgXG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgbWFyZ2luLXJpZ2h0OiR2LXJoeXRobS8yOyAgXG4gICAgfVxuICB9XG5cbiAgLnN0eWxlZC1zZWxlY3Qge1xuICAgIGJhY2tncm91bmQ6d2hpdGU7XG4gICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgd2lkdGg6MTAwJTtcbiAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobS8yO1xuICAgICAgYm9yZGVyOi4xMjVlbSBzb2xpZCB3aGl0ZTtcbiAgICAmLmZvY3VzZWQge1xuICAgICAgYm9yZGVyOi4xMjVlbSBzb2xpZCAkeWVsbG93O1xuICAgICAgJjphZnRlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjokeWVsbG93ICR5ZWxsb3cgJHllbGxvdyAkY29ybmZsb3dlcjtcbiAgICAgIH1cbiAgICB9XG4gICAgJjphZnRlciB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6LS4xMjVlbTtcbiAgICAgIHJpZ2h0Oi0uMTI1ZW07XG4gICAgICBjb250ZW50OicnO1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaWRYUm1MVGdpUHo0OGMzWm5JSFpsY25OcGIyNDlJakV1TVNJZ2FXUTlJa3hoZVdWeVh6RWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmVHeHBibXM5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZlR3hwYm1zaUlIZzlJakJ3ZUNJZ2VUMGlNSEI0SWlCMmFXVjNRbTk0UFNJd0lEQWdOREFnTkRBaUlITjBlV3hsUFNKbGJtRmliR1V0WW1GamEyZHliM1Z1WkRwdVpYY2dNQ0F3SURRd0lEUXdPeUlnZUcxc09uTndZV05sUFNKd2NtVnpaWEoyWlNJK1BITjBlV3hsSUhSNWNHVTlJblJsZUhRdlkzTnpJajR1YzNRd2UyWnBiR3c2SXpRNE56SkNORHQ5TG5OME1YdG1hV3hzT2lOR1JrWkdSa1k3ZlR3dmMzUjViR1UrUEhKbFkzUWdZMnhoYzNNOUluTjBNQ0lnZDJsa2RHZzlJalF3SWlCb1pXbG5hSFE5SWpRd0lpOCtQSEJoZEdnZ1kyeGhjM005SW5OME1TSWdaRDBpVFRFeUxqTXNNVGRzTnk0M0xEY3VOMnczTGpjdE55NDNiQzB4TGpjdE1TNDRiQzAxTGprc05td3ROUzQ1TFRaTU1USXVNeXd4TjNvaUx6NDhMM04yWno0PSk7XG4gICAgICBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7XG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiRjb3JuZmxvd2VyO1xuICAgICAgaGVpZ2h0OmNhbGMoMTAwJSArIC4yNWVtKTtcbiAgICAgIHdpZHRoOjIuNDllbTtcbiAgICAgIHBvaW50ZXItZXZlbnRzOm5vbmU7XG4gICAgICBib3JkZXI6LjEyNWVtIHNvbGlkICRjb3JuZmxvd2VyO1xuICAgICAgYm9yZGVyLWxlZnQ6bm9uZTtcbiAgICB9XG4gICAgJjpiZWZvcmUge1xuICAgICAgQGluY2x1ZGUgY2VudGVyKGZhbHNlLCB0cnVlKTtcbiAgICAgIHJpZ2h0OjA7XG4gICAgICBjb250ZW50OicnO1xuICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlO1xuICAgICAgaGVpZ2h0OjEwMCU7ICBcbiAgICAgIHdpZHRoOjUuMjVlbSBcXDk7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgd2lkdGg6aW5oZXJpdDtcbiAgICAgIG1hcmdpbjowO1xuICAgICAgbWFyZ2luLXJpZ2h0OiR2LXJoeXRobS8yO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgIG1hcmdpbi1yaWdodDokdi1yaHl0aG07XG4gICAgfSAgICBcbiAgfVxuXG4gIHNlbGVjdCB7XG4gICAgcGFkZGluZzouMmVtIC43NWVtIC4xOWVtIC43NWVtO1xuICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOjEwMCU7XG4gICAgZm9udC13ZWlnaHQ6NzAwO1xuICAgIGNvbG9yOiRjb3JuZmxvd2VyO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6MDtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBiYWNrZ3JvdW5kOm5vbmU7XG4gICAgcGFkZGluZy1yaWdodDo0ZW07XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIH1cbiAgXG4gIC8qIENBVVRJT046IElFIGhhY2tlcnkgYWhlYWQgKi9cbiAgc2VsZWN0OjotbXMtZXhwYW5kIHsgXG4gICAgZGlzcGxheTogbm9uZTsgLyogcmVtb3ZlIGRlZmF1bHQgYXJyb3cgb24gaWUxMCBhbmQgaWUxMSAqL1xuICB9XG5cbiAgLnNvcnRpbmcge1xuICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOjEwMCU7XG4gICAgLnN0eWxlZC1zZWxlY3Qge1xuICAgICAgbWFyZ2luLXJpZ2h0OjA7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgd2lkdGg6aW5oZXJpdDtcbiAgICAgIGZsb2F0OnJpZ2h0O1xuICAgIH1cbiAgfVxuICBcbiAgLnN1Ym1pdCB7XG4gICAgY2xlYXI6Ym90aDtcbiAgICBtYXJnaW4tdG9wOiR2LXJoeXRobTtcbiAgICBpbnB1dFt0eXBlPSdzdWJtaXQnXSB7XG4gICAgICBwYWRkaW5nOi4yNWVtIC41ZW07XG4gICAgfVxuICB9XG4gIFxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICBmb3JtIHtcbiAgICAgICoge1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgIGZvbnQtc2l6ZToxLjA2MjVlbTtcbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1qYi1taW4sICRtYXAtbGcpIHtcbiAgICBmb250LXNpemU6MS4xMjVlbTtcbiAgfVxufVxuXG5cbi8vIGxvYWRpbmdcbi5maWx0ZXItdGFyZ2V0IHtcbiAgJi5sb2FkaW5nIHtcbiAgICBAaW5jbHVkZSBhbmltYXRlZCguMzVzKTtcbiAgICBAaW5jbHVkZSBmYWRlSW47IFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvcGFjaXR5OjA7XG4gICAgJjpiZWZvcmUge1xuICAgICAgY29udGVudDonTG9hZGluZy4uLic7XG4gICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHdpZHRoOjEwMCU7XG4gICAgICBoZWlnaHQ6MTAwJTtcbiAgICAgIHRleHQtYWxpZ246Y2VudGVyO1xuICAgICAgdG9wOjA7XG4gICAgICBsZWZ0OjA7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlO1xuICAgICAgY29sb3I6IzQzNDM0MztcbiAgICAgIGZvbnQtd2VpZ2h0OjcwMDtcbiAgICAgIHRleHQtYWxpZ246Y2VudGVyO1xuICAgICAgZm9udC1zaXplOjEuMjVlbTtcbiAgICAgIHBhZGRpbmc6JHYtcmh5dGhtO1xuICAgICAgei1pbmRleDo5O1xuICAgICAgb3BhY2l0eToxO1xuICAgIH1cbiAgfVxuICAmLmxvYWRlZCB7XG4gICAgdWwge1xuICAgICAgQGluY2x1ZGUgYW5pbWF0ZWQoLjVzKTtcbiAgICAgIEBpbmNsdWRlIHNsaWRlSW5VcDtcbiAgICB9XG4gIH1cbn1cblxuLy8gcmVtb3ZlIHN1Ym1pdCB3aGVuIGphdmFzY3JpcHQgaXMgZW5hYmxlZFxuLmpzIHtcbiAgLmZpbHRlcnMge1xuICAgIHNlbGVjdCB7XG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgb3V0bGluZTpub25lO1xuICAgICAgfVxuICAgIH1cbiAgICAuc3VibWl0IHtcbiAgICAgIGRpc3BsYXk6bm9uZSBcbiAgICB9XG4gIH1cbn0iLCIucmVsYXRlZC1maWxtcyB7XG4gIG1hcmdpbjokdi1yaHl0aG0qMiAwO1xuICBpbWcge1xuICAgIHdpZHRoOjEwMCU7XG4gIH1cbiAgdWwge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgIEBpbmNsdWRlIHBsYWluLWxpc3Q7XG4gICAgbGkge1xuICAgICAgQGluY2x1ZGUgZ2FsbGVyeSgxIG9mIDIpO1xuICAgICAgbWFyZ2luLWJvdHRvbTpndXR0ZXIoKTtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICBsaSB7XG4gICAgICAgIEBpbmNsdWRlIGdhbGxlcnkoMS4zMyk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtKjI7XG4gICAgICB9XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgbGkge1xuICAgICAgICBAaW5jbHVkZSBnYWxsZXJ5KDIuNjY2IG9mIDgpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOmd1dHRlcigpO1xuICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgIGxpIHtcbiAgICAgICAgQGluY2x1ZGUgZ2FsbGVyeSgyLjQgb2YgMTIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSIsIi5lbWFpbC1zaWdudXAtZm9ybSB7XG4gIGlucHV0LCBidXR0b24ge1xuICAgIGZvbnQtZmFtaWx5OiAnUm9ib3RvIFNsYWInLCBzZXJpZjtcbiAgICBwYWRkaW5nOiR2LXJoeXRobS8yICR2LXJoeXRobTtcbiAgfVxuICAuZW1haWwtZmllbGQge1xuICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0vMjtcbiAgICB3aWR0aDoxMDAlO1xuICAgIGJvcmRlcjoxcHggc29saWQgJGdyYXk7XG4gICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICB9XG4gIH1cbiAgLnppcC1jb2RlLWZpZWxkIHtcbiAgICAgZGlzcGxheTpibG9jaztcbiAgICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0vMjtcbiAgICAgd2lkdGg6MTAwJTtcbiAgICAgYm9yZGVyOjFweCBzb2xpZCAkZ3JheTtcbiAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgfVxuICAubm90ZSB7XG4gICAgZGlzcGxheTpibG9jaztcbiAgICB3aWR0aDoxMDAlO1xuICAgIHRleHQtYWxpZ246bGVmdDtcbiAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobS8yO1xuICAgIGZvbnQtc2l6ZTouODVlbTtcbiAgICBtYXJnaW4tdG9wOiR2LXJoeXRobS8yO1xuICB9XG4gIGJ1dHRvblt0eXBlPSdzdWJtaXQnXSB7XG4gICAgQGluY2x1ZGUgcGxhaW4tYnV0dG9uO1xuICAgIEBpbmNsdWRlIGJ1dHRvbigkbmF2eSwgd2hpdGUpO1xuICAgIEBpbmNsdWRlIGFycm93LWJ1dHRvbih3aGl0ZSk7XG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbihiYWNrZ3JvdW5kLCAuM3MsIGVhc2UtaW4tb3V0KTtcbiAgICB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7XG4gICAgd2lkdGg6OWVtO1xuICAgIHotaW5kZXg6MjtcbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6ZGFya2VuKCRuYXZ5LCA1JSk7XG4gICAgfVxuICAgICY6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6Jyc7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB3aWR0aDoxMDAlO1xuICAgICAgaGVpZ2h0OjEwMCU7XG4gICAgICBwb3NpdGlvbjphYnNvbHV0ZTtcbiAgICAgIHRvcDowO1xuICAgICAgbGVmdDowO1xuICAgICAgei1pbmRleDotMTtcbiAgICAgIEBpbmNsdWRlIGxvbmctc2hhZG93KGJveCwgJG5hdnksIDIwMCwgZmFsc2UsIGZhbHNlLCByaWdodCk7XG4gICAgICBvcGFjaXR5Oi4zNTtcbiAgICB9XG4gIH1cbn0iLCIvLyBIb21lIFBhZ2UgSGVybyBDb21wb25lbnRcbi5ob21lcGFnZS1oZXJvLWl0ZW0ge1xuICAgbWFyZ2luLXRvcDokdi1yaHl0aG07XG4gICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobTtcbiAgLy8gYWxsIGNvbnRlbnQgaW5zaWRlIGlzIGR5bmFtaWMuIHRoZXJlIGlzIGEgY2hhbmNlIGl0IGNvdWxkIGJlIGVtcHR5XG4gICY6ZW1wdHkge1xuICAgIGRpc3BsYXk6bm9uZTtcbiAgfVxuICBpbWcge1xuICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgd2lkdGg6MTAwJTtcbiAgICAmLmJsYWNrQW5kV2hpdGUge1xuICAgICAgLXdlYmtpdC1maWx0ZXI6Z3JheXNjYWxlKDEpO1xuICAgICAgICAgICAgICBmaWx0ZXI6Z3JheXNjYWxlKDEpO1xuICAgIH1cbiAgfVxuICAudGl0bGUge1xuICAgIHBhZGRpbmc6JHYtcmh5dGhtLzIgJHYtcmh5dGhtO1xuICAgIGJhY2tncm91bmQ6I2FjMGIwZTtcbiAgICBjb2xvcjp3aGl0ZTtcbiAgICBmbG9hdDpub25lICFpbXBvcnRhbnQ7XG4gICAgbWFyZ2luLWJvdHRvbTowICFpbXBvcnRhbnQ7XG4gICAgLnpldGEge1xuICAgICAgY29sb3I6d2hpdGU7XG4gICAgICBkaXNwbGF5OmJsb2NrO1xuICAgICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG07XG4gICAgfVxuICAgICYucmlnaHQge1xuICAgICAgbWFyZ2luLWxlZnQ6MCAhaW1wb3J0YW50O1xuICAgIH1cbiAgICAmLmxlZnQge1xuICAgICAgbWFyZ2luLXJpZ2h0OjAgIWltcG9ydGFudDtcbiAgICB9XG4gICAgLmFscGhhIHtcbiAgICAgIHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtcbiAgICAgIGZvbnQtZmFtaWx5OiAnSm9zZWZpbiBTYW5zJywgc2Fucy1zZXJpZjtcbiAgICAgIGNvbG9yOndoaXRlO1xuICAgICAgZm9udC1zaXplOjJlbTtcbiAgICAgIG1hcmdpbi1ib3R0b206MDtcbiAgICAgIGxpbmUtaGVpZ2h0OjEuMjtcbiAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgZGlzcGxheTpub25lO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAud2F0Y2gge1xuICAgIEBpbmNsdWRlIGxpbmstcmVzZXQ7XG4gICAgQGluY2x1ZGUgYm9yZGVyLWJ1dHRvbih3aGl0ZSwgLjA2MjVlbSwgd2hpdGUpO1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYmFja2dyb3VuZCwgLjNzLCBlYXNlLWluLW91dCk7XG4gICAgQGluY2x1ZGUgYXJyb3ctYnV0dG9uKHdoaXRlKTtcbiAgICAmLnpldGEge1xuICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICBmb250LXNpemU6MWVtO1xuICAgIH1cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6cmdiYSh3aGl0ZSwgLjUpO1xuICAgIH1cbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICAudGl0bGUge1xuICAgICAgQGluY2x1ZGUgc3Bhbig0KTtcbiAgICAgIHBvc2l0aW9uOmFic29sdXRlO1xuICAgICAgbGVmdDowO1xuICAgICAgYm90dG9tOjE1JTtcbiAgICAgIHBhZGRpbmc6JHYtcmh5dGhtICR2LXJoeXRobSoyO1xuICAgICAgYmFja2dyb3VuZDpub25lO1xuICAgICAgJi5sZWZ0IHtcbiAgICAgICAgbGVmdDowO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6MDtcbiAgICAgIH1cbiAgICAgICYucmlnaHQge1xuICAgICAgICByaWdodDowO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6MDtcbiAgICAgICAgbGVmdDppbmhlcml0O1xuICAgICAgfVxuICAgICAgLmFscGhhIHtcbiAgICAgICAgZm9udC1zaXplOjNlbTtcbiAgICAgIH1cbiAgICAgICoge1xuICAgICAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICAgICAgei1pbmRleDozO1xuICAgICAgfVxuICAgICAgJjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6Jyc7XG4gICAgICAgIHBvc2l0aW9uOmFic29sdXRlO1xuICAgICAgICBoZWlnaHQ6MTAwJTtcbiAgICAgICAgd2lkdGg6MTAwJTtcbiAgICAgICAgdG9wOjA7XG4gICAgICAgIGxlZnQ6MDtcbiAgICAgICAgQHN1cHBvcnRzKG1peC1ibGVuZC1tb2RlOiBtdWx0aXBseSkge1xuICAgICAgICAgIGJhY2tncm91bmQ6cmdiYSh3aGl0ZSwgLjIpO1xuICAgICAgICB9XG4gICAgICAgIHotaW5kZXg6MTtcbiAgICAgIH1cbiAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZDpyZ2JhKGJsYWNrLCAuNik7XG4gICAgICAgIGNvbnRlbnQ6Jyc7XG4gICAgICAgIHBvc2l0aW9uOmFic29sdXRlO1xuICAgICAgICBoZWlnaHQ6MTAwJTtcbiAgICAgICAgd2lkdGg6MTAwJTtcbiAgICAgICAgdG9wOjA7XG4gICAgICAgIGxlZnQ6MDtcbiAgICAgICAgQHN1cHBvcnRzKG1peC1ibGVuZC1tb2RlOiBtdWx0aXBseSkge1xuICAgICAgICAgIGJhY2tncm91bmQ6KCNkOTAwMDIpO1xuICAgICAgICAgIG1peC1ibGVuZC1tb2RlOiBtdWx0aXBseTtcbiAgICAgICAgfVxuICAgICAgICB6LWluZGV4OjI7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgIC50aXRsZSB7XG4gICAgICBAaW5jbHVkZSBzcGFuKDUpO1xuICAgIH1cbiAgfVxufSIsIi8vIGRlZmF1bHQgcGFnaW5hdGlvblxuLnBhZ2luYXRpb24ge1xuICBtYXJnaW46JHYtcmh5dGhtKjIgMDtcbiAgdGV4dC1hbGlnbjpjZW50ZXI7XG4gIC5sb2FkLW1vcmUge1xuICAgIGRpc3BsYXk6bm9uZTtcbiAgfVxuICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgIG1hcmdpbjokdi1yaHl0aG0qMyAwO1xuICAgIC50aXRsZSB7XG4gICAgICBAaW5jbHVkZSBzcGFuKDUpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBhamF4IHBhZ2luYXRpb25cbi5qcyB7XG4gIC5wYWdpbmF0aW9uIHtcbiAgICAubG9hZC1tb3JlIHtcbiAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgQGluY2x1ZGUgYnV0dG9uKCRyZWQsIHdoaXRlKTtcbiAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYmFja2dyb3VuZCwgLjM1cywgZWFzZS1pbi1vdXQpO1xuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6JGNyaW1zb247XG4gICAgICB9XG4gICAgfVxuICAgIC5wYWdlLW51bWJlcnMge1xuICAgICAgZGlzcGxheTpub25lO1xuICAgIH1cbiAgfVxufVxuXG4ubm8tcmVzdWx0cyB7XG4gIGZvbnQtd2VpZ2h0OjcwMDtcbiAgdGV4dC1hbGlnbjpjZW50ZXI7XG4gIGZvbnQtd2VpZ2h0OjEuMjVlbTtcbiAgcGFkZGluZzokdi1yaHl0aG07XG4gIGNvbG9yOiM0MzQzNDM7XG4gICYuZXJyb3Ige1xuICAgIGNvbG9yOiRyZWQ7XG4gICAgYiB7XG4gICAgICBkaXNwbGF5OmJsb2NrO1xuICAgIH1cbiAgfVxufVxuXG4uYXBwZW5kZWQtaXRlbSB7XG4gIEBpbmNsdWRlIGFuaW1hdGVkKC41cyk7XG4gIEBpbmNsdWRlIHNsaWRlSW5VcDtcbn1cbiIsIi5maWxtLWxpc3RpbmdzIHtcbiAgdWwge1xuICAgIEBpbmNsdWRlIHBsYWluLWxpc3Q7XG4gICAgbGkge1xuICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobSoyO1xuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtO1xuICAgICAgfSAgICBcbiAgICB9XG4gIH1cbiAgLmltYWdlIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgIEBpbmNsdWRlIHNwYW4oMS41IGZpcnN0KTtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICBAaW5jbHVkZSBzcGFuKDQgZmlyc3QpO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgIEBpbmNsdWRlIHNwYW4oNiBmaXJzdCk7XG4gICAgfSAgICBcbiAgfVxuICAuZGVzY3JpcHRpb24ge1xuICAgIGgzIHtcbiAgICAgIG1hcmdpbi1ib3R0b206MDtcbiAgICB9XG4gICAgLnpldGEge1xuICAgICAgZGlzcGxheTpibG9jaztcbiAgICAgIG1hcmdpbi10b3A6JHYtcmh5dGhtLzQ7XG4gICAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobS8yO1xuICAgIH1cbiAgICBwIHtcbiAgICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtLzI7XG4gICAgfVxuICAgIC5wYXJ0cyB7XG4gICAgICBjb2xvcjokZ3JheTtcbiAgICAgIGZvbnQtd2VpZ2h0OjcwMDtcbiAgICAgIGEge1xuICAgICAgICAmOm5vdCg6bGFzdC1vZi10eXBlKSB7XG4gICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBjb250ZW50Oid8JztcbiAgICAgICAgICAgIGNvbG9yOiRtZWRHcmF5O1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6NDAwO1xuICAgICAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDouNDM3NWVtO1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0Oi4zMTI1ZW07XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICBAaW5jbHVkZSBzcGFuKDIuNSBsYXN0KTtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICBAaW5jbHVkZSBzcGFuKDQgbGFzdCk7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgQGluY2x1ZGUgc3Bhbig2IGxhc3QpO1xuICAgICAgcCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtO1xuICAgICAgfVxuICAgIH0gIFxuICB9XG59IiwiLy8gZmlsbSBEZXRhaWwgSGVybyBDb21wb25lbnRcbi5maWxtLWRldGFpbC1oZXJvLWl0ZW0ge1xuICBtYXJnaW46MDtcbiAgbWFyZ2luLXRvcDokdi1yaHl0aG0qMjtcbiAgaW1nIHtcbiAgICBkaXNwbGF5OmJsb2NrO1xuICAgIHdpZHRoOjEwMCU7XG4gIH1cbiAgLnRpdGxlIHtcbiAgICBwYWRkaW5nOiR2LXJoeXRobS8yICR2LXJoeXRobSAxZW0gJHYtcmh5dGhtO1xuICAgIGJhY2tncm91bmQ6I2FjMGIwZTtcbiAgICBjb2xvcjp3aGl0ZTtcbiAgICBmbG9hdDpub25lICFpbXBvcnRhbnQ7XG4gICAgbWFyZ2luLWJvdHRvbTowICFpbXBvcnRhbnQ7XG4gICAgJi5yaWdodCB7XG4gICAgICBtYXJnaW4tbGVmdDowICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgICYubGVmdCB7XG4gICAgICBtYXJnaW4tcmlnaHQ6MCAhaW1wb3J0YW50O1xuICAgIH1cbiAgICAuYWxwaGEge1xuICAgICAgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO1xuICAgICAgZm9udC1mYW1pbHk6ICdKb3NlZmluIFNhbnMnLCBzYW5zLXNlcmlmO1xuICAgICAgY29sb3I6d2hpdGU7XG4gICAgICBmb250LXNpemU6MmVtO1xuICAgICAgbWFyZ2luLWJvdHRvbTowO1xuICAgICAgbGluZS1oZWlnaHQ6MS4yO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwYWRkaW5nLXRvcDouMjVlbTtcbiAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgZGlzcGxheTpub25lO1xuICAgICAgfVxuICAgIH1cbiAgICAuemV0YSB7XG4gICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgIGNvbG9yOndoaXRlO1xuICAgICAgbWFyZ2luLWJvdHRvbTouNWVtO1xuICAgIH1cbiAgICAudW5kZXJsaW5lIHtcbiAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgZm9udC1zaXplOjR2dztcbiAgICAgIGZvbnQtd2VpZ2h0OjcwMDtcbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICBmb250LXNpemU6MS41ZW07XG4gICAgICB9XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgLnpldGEge1xuICAgICAgICBtYXJnaW4tYm90dG9tOjEuNWVtO1xuICAgICAgfVxuICAgICAgLnVuZGVybGluZSB7XG4gICAgICAgIG1hcmdpbi10b3A6LjVlbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAub3ZlcmxheSB7XG4gICAgZm9udC1zaXplOjN2dztcbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgIGZvbnQtc2l6ZTppbmhlcml0O1xuICAgIH1cbiAgfVxuICAud2F0Y2gtbGluayB7XG4gICAgQGluY2x1ZGUgbGluay1yZXNldDtcbiAgICBkaXNwbGF5OmJsb2NrO1xuICAgIHBvc2l0aW9uOnJlbGF0aXZlO1xuICAgIGZvbnQtc2l6ZTozdnc7XG4gICAgLmFscGhhIHtcbiAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oY29sb3IsIC4zNXMsIGVhc2UtaW4tb3V0KTtcbiAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgICAgJjpiZWZvcmUge1xuICAgICAgICBkaXNwbGF5Om5vbmU7XG4gICAgICB9XG4gICAgICAudGl0bGUtY29weSB7XG4gICAgICAgIGZsb2F0OmxlZnQ7XG4gICAgICAgIHdpZHRoOmNhbGMoMTAwJSAtIDJlbSk7XG4gICAgICAgIHBhZGRpbmctdG9wOi4xMjVlbTtcbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihhbGwsIC4zcywgZWFzZS1pbi1vdXQpO1xuICAgICAgICAgIGNvbnRlbnQ6Jyc7XG4gICAgICAgICAgcG9zaXRpb246YWJzb2x1dGU7XG4gICAgICAgICAgYm90dG9tOjA7XG4gICAgICAgICAgbGVmdDowO1xuICAgICAgICAgIGJhY2tncm91bmQ6d2hpdGU7XG4gICAgICAgICAgaGVpZ2h0OjFweDtcbiAgICAgICAgICB3aWR0aDoxMDAlO1xuICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZVgoMCk7XG4gICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAucGxheS1pY29uIHtcbiAgICAgICAgbWF4LWhlaWdodDoxLjI1ZW07XG4gICAgICAgIG1heC13aWR0aDoxLjI1ZW07XG4gICAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgICBmbG9hdDpsZWZ0O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6LjVlbTtcbiAgICAgICAgcGF0aCB7XG4gICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihmaWxsLCAuMzVzLCBlYXNlLWluLW91dCk7XG4gICAgICAgICAgZmlsbDp3aGl0ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAmOmhvdmVyIHtcbiAgICAgIC50aXRsZS1jb3B5IHtcbiAgICAgICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgICAgLW1zLXRyYW5zZm9ybTogc2NhbGVYKDEpO1xuICAgICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCgxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgIGZvbnQtc2l6ZTppbmhlcml0O1xuICAgIH1cbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICAudGl0bGUge1xuICAgICAgcG9zaXRpb246YWJzb2x1dGU7XG4gICAgICBib3R0b206MTUlO1xuICAgICAgcGFkZGluZzokdi1yaHl0aG0gJHYtcmh5dGhtKjEuMjU7XG4gICAgICBiYWNrZ3JvdW5kOm5vbmU7XG4gICAgICAmLmxlZnQge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDQuNSk7XG4gICAgICAgIGxlZnQ6MDtcbiAgICAgICAgcGFkZGluZy1yaWdodDouMjVlbTtcbiAgICAgIH1cbiAgICAgICYucmlnaHQge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDQuNSBsYXN0KTtcbiAgICAgICAgcmlnaHQ6MDtcbiAgICAgICAgcGFkZGluZy1yaWdodDouMjVlbTtcbiAgICAgIH1cbiAgICAgIC5hbHBoYSB7XG4gICAgICAgIGZvbnQtc2l6ZTozZW07XG4gICAgICB9XG4gICAgICAqIHtcbiAgICAgICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgICAgIHotaW5kZXg6MztcbiAgICAgIH1cbiAgICAgICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OicnO1xuICAgICAgICBwb3NpdGlvbjphYnNvbHV0ZTtcbiAgICAgICAgaGVpZ2h0OjEwMCU7XG4gICAgICAgIHdpZHRoOjEwMCU7XG4gICAgICAgIHRvcDowO1xuICAgICAgICBsZWZ0OjA7XG4gICAgICAgIEBzdXBwb3J0cyhtaXgtYmxlbmQtbW9kZTogbXVsdGlwbHkpIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOnJnYmEod2hpdGUsIC4yKTtcbiAgICAgICAgfVxuICAgICAgICB6LWluZGV4OjE7XG4gICAgICB9XG4gICAgICAmOmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQ6cmdiYShibGFjaywgLjYpO1xuICAgICAgICBjb250ZW50OicnO1xuICAgICAgICBwb3NpdGlvbjphYnNvbHV0ZTtcbiAgICAgICAgaGVpZ2h0OjEwMCU7XG4gICAgICAgIHdpZHRoOjEwMCU7XG4gICAgICAgIHRvcDowO1xuICAgICAgICBsZWZ0OjA7XG4gICAgICAgIEBzdXBwb3J0cyhtaXgtYmxlbmQtbW9kZTogbXVsdGlwbHkpIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOigjZDkwMDAyKTtcbiAgICAgICAgICBtaXgtYmxlbmQtbW9kZTogbXVsdGlwbHk7XG4gICAgICAgIH1cbiAgICAgICAgei1pbmRleDoyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAudGl0bGUge1xuICAgICAgJi5sZWZ0IHtcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig1Ljc1KTtcbiAgICAgICAgbGVmdDowO1xuICAgICAgfVxuICAgICAgJi5yaWdodCB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oNS43NSBsYXN0KTtcbiAgICAgICAgcmlnaHQ6MDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tamItbWluLCAkbWFwLWxnKSB7XG4gICAgLnRpdGxlIHtcbiAgICAgICYubGVmdCB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oNSk7XG4gICAgICB9XG4gICAgICAmLnJpZ2h0IHtcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig1IGxhc3QpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvLyBzcGFjaW5nIGFkanVzdG1lbnRzIGRlcGVuZGluZyBvbiBwcmVzZW5jZSBvZiBjb250ZW50XG4gIC53YXRjaC1saW5rICArIC56ZXRhIHtcbiAgICBtYXJnaW4tdG9wOjEuNWVtO1xuICB9XG4gIC50aXRsZS1jb3B5ICArIC56ZXRhIHtcbiAgICBtYXJnaW4tdG9wOjEuNWVtO1xuICB9XG4gIC56ZXRhICsgLndhdGNoLWxpbmsge1xuICAgIC5hbHBoYSB7XG4gICAgICBwYWRkaW5nLXRvcDowO1xuICAgIH1cbiAgfVxufVxuXG5cblxuLy8gYmFzZSBzdHlsaW5nIGZvciBmaWxtIGRldGFpbCBuYXYgZm9yIHRhYnMgYW5kIGNvdmUgbGlua3Ncbi5maWxtLXN1Yi1uYXYge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgYmFja2dyb3VuZDokYmx1ZTtcbiAgY29sb3I6d2hpdGU7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oYmFja2dyb3VuZCwgLjNzLCBlYXNlLWluLW91dCk7XG4gIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtO1xuICBhIHtcbiAgICBAaW5jbHVkZSBsaW5rLXJlc2V0O1xuICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgIGNvbG9yOndoaXRlO1xuICAgIHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtcbiAgICBmb250LXNpemU6MS4xMjVlbTtcbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOndoaXRlO1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOm5vbmU7XG4gICAgfVxuICB9XG4gIHVsIHtcbiAgICBAaW5jbHVkZSBwbGFpbi1saXN0O1xuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtKjI7XG4gIH1cbn1cbi8vIGhpZGUgamF2YXNjcmlwdCBkZXBlbmRlbnQgcGFydHNcbi5maWxtLXBhcnRzLCAudGFiLW1vYmlsZS10b2dnbGUgIHtcbiAgZGlzcGxheTpub25lO1xufVxuXG4vLyBkZXNrdG9wIGxheW91dCBmb3IgZmlsbSBzdWIgbmF2aWdhdGlvbnNcbi5maWxtLXBhcnRzIHtcbiAgcG9zaXRpb246cmVsYXRpdmU7XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgIEBpbmNsdWRlIHNwYW4oMy41IGxhc3QpXG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tamItbWluLCAkbWFwLWxnKSB7XG4gICAgQGluY2x1ZGUgc3BhbigzIGxhc3QpXG4gIH1cbn1cblxuLmluZm8tdGFicyB7XG4gIC50YWItbGluayB7XG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbihiYWNrZ3JvdW5kLCAuNXMsIGVhc2UtaW4tb3V0KTtcbiAgICBwYWRkaW5nOi41NjI1ZW0gMWVtO1xuICAgIHdpZHRoOjEwMCU7XG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiRkYXJrQmx1ZTtcbiAgICB9XG4gICAgJi5hY3RpdmUge1xuICAgICAgYmFja2dyb3VuZDokZGFya0JsdWU7XG4gICAgICBjdXJzb3I6ZGVmYXVsdDtcbiAgICB9XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgLnRhYi1saXN0IHtcbiAgICAgIGRpc3BsYXk6LXdlYmtpdC1ib3g7XG4gICAgICBkaXNwbGF5Oi1tcy1mbGV4Ym94O1xuICAgICAgZGlzcGxheTpmbGV4O1xuICAgICAgbGkge1xuICAgICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgICAgYSB7XG4gICAgICAgICAgcGFkZGluZzoxLjNlbSAxLjVlbTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICBAaW5jbHVkZSBzcGFuKDguNSBmaXJzdCk7XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tamItbWluLCAkbWFwLWxnKSB7XG4gICAgQGluY2x1ZGUgc3Bhbig5IGZpcnN0KTtcbiAgfVxufVxuXG4vLyB0YWIgY29udGVudCBkZWZhdWx0XG4udGFiLXBhbmVsIHtcbiAgLnRhYi1wYW5lbC10aXRsZSB7XG4gICAgbWFyZ2luLWJvdHRvbTouMjVlbTtcbiAgfVxuICAucGFydC1jb250ZW50IHtcbiAgICBtYXJnaW4tdG9wOjNlbTtcbiAgfVxuXG4gIC5iaW8ge1xuICAgIGZpZ3VyZSB7XG4gICAgICB0ZXh0LWFsaWduOmNlbnRlcjtcbiAgICAgIG1hcmdpbjowIGF1dG87XG4gICAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobTtcbiAgICAgIHNwYW4ge1xuICAgICAgICBoZWlnaHQ6NzV2dztcbiAgICAgICAgd2lkdGg6NzV2dztcbiAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgIHBvc2l0aW9uOnJlbGF0aXZlO1xuICAgICAgICBvdmVyZmxvdzpoaWRkZW47XG4gICAgICAgIGJvcmRlci1yYWRpdXM6NTAlO1xuICAgICAgfVxuICAgICAgaW1nIHtcbiAgICAgICAgQGluY2x1ZGUgY2VudGVyO1xuICAgICAgICBvYmplY3QtZml0OmNvdmVyO1xuICAgICAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICAgICAgICBtaW4td2lkdGg6IDEwMCU7XG4gICAgICB9XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgZmlndXJlIHtcbiAgICAgICAgc3BhbiB7XG4gICAgICAgICAgd2lkdGg6MTBlbTtcbiAgICAgICAgICBoZWlnaHQ6MTBlbTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgIGZpZ3VyZSwgLmJpby1jb250ZW50IHtcbiAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICB9XG4gICAgICBmaWd1cmUge1xuICAgICAgICB3aWR0aDozMCU7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOnRvcDtcbiAgICAgICAgc3BhbiB7XG4gICAgICAgICAgd2lkdGg6MTIuNWVtO1xuICAgICAgICAgIGhlaWdodDoxMi41ZW07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC5iaW8tY29udGVudCB7XG4gICAgICAgIHdpZHRoOjY1JTtcbiAgICAgIH1cbiAgICAgIEBzdXBwb3J0cyhkaXNwbGF5OmdyaWQpIHtcbiAgICAgICAgZmlndXJlLCAuYmlvLWNvbnRlbnQge1xuICAgICAgICAgIHdpZHRoOmF1dG87XG4gICAgICAgICAgdmVydGljYWwtYWxpZ246aW5oZXJpdDtcbiAgICAgICAgfVxuICAgICAgICBmaWd1cmUge1xuICAgICAgICAgIGFsaWduLWNvbnRlbnQ6Y2VudGVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBkaXNwbGF5OmdyaWQ7XG4gICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6Mi41ZnIgNGZyO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgIGZpZ3VyZSB7XG4gICAgICAgIHNwYW4ge1xuICAgICAgICAgIHdpZHRoOjE1ZW07XG4gICAgICAgICAgaGVpZ2h0OjE1ZW07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tamItbWluLCAkbWFwLWxnKSB7XG4gICAgICBmaWd1cmUge1xuICAgICAgICBzcGFuIHtcbiAgICAgICAgICB3aWR0aDoyMGVtO1xuICAgICAgICAgIGhlaWdodDoyMGVtO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnBkZi1saW5rcyB7XG4gICAgc3Ryb25nIHtcbiAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgbWFyZ2luLXJpZ2h0Oi41ZW07XG4gICAgfVxuICAgIC5wYXJ0LWRvd25sb2FkIHtcbiAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgJjpub3QoOmxhc3Qtb2YtdHlwZSkge1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICBjb250ZW50Oid8JztcbiAgICAgICAgICBjb2xvcjokbWVkR3JheTtcbiAgICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICBtYXJnaW4tbGVmdDogLjQzNzVlbTtcbiAgICAgICAgICBtYXJnaW4tcmlnaHQ6IC4zMTI1ZW07XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgICAgdmVydGljYWwtYWxpZ246IHRleHQtdG9wO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC5zaW5nbGUtZG93bmxvYWQge1xuICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgIEBpbmNsdWRlIHNwYW4oMyk7XG4gICAgZmxvYXQ6bm9uZTtcbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICBAaW5jbHVkZSBzcGFuKDYpO1xuICAgIGZsb2F0Om5vbmU7XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgbWF4LXdpZHRoOjY1LjI1ZW07XG4gIH1cbn1cblxuLnJlbGF0ZWQtZmVhdHVyZS1saXN0IHtcbiAgLmZpbHRlcnMge1xuICAgIC5sYWJlbCB7XG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6LTQuMTg3NWVtO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3JtIHtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIGZpZWxkc2V0IGxhYmVsIHtcbiAgICAgICAgd2lkdGg6MTAwJTtcbiAgICAgICAgJjpmaXJzdC1vZi10eXBlIHtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOjA7XG4gICAgICAgIH1cbiAgICAgICAgJjpsYXN0LW9mLXR5cGUge1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6MDtcbiAgICAgICAgfVxuICAgICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ1LjMxMjVlbSkge1xuICAgICAgICAgIHdpZHRoOjcuNWVtO1xuICAgICAgICAgICY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOjEuMjVlbSAwIDAgMS4yNWVtO1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDoxLjE1ZW07XG4gICAgICAgICAgfVxuICAgICAgICAgICY6bGFzdC1vZi10eXBlIHtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6MCAxLjI1ZW0gMS4yNWVtIDA7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6MS4xNWVtO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICB3aWR0aDoxMGVtO1xuICAgICAgICB9XG4gICAgICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMjMuNzVlbSkge1xuICAgICAgICAgIGZvbnQtc2l6ZTo0Ljg1dnc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gZW5oYW5jZWQgdmVyc2lvbnMgb2YgZmlsbSBzdWJuYXZzIGFuZCB0YWIgY29udGVudFxuLmpzIHtcbiAgLy8gYWxsIGNvdmUgc3R1ZmYgaXMgamF2YXNjcmlwdCBkZXBlbmRlbnQgc28gb25seSBzaG93IGl0IGlmXG4gIC8vIEphdmFTY3JpcHQgaXMgYXZhaWxhYmxlXG4gIC5maWxtLXBhcnRzICB7XG4gICAgZGlzcGxheTpibG9jaztcbiAgfVxuICAucGFydC1zZWxlY3Rpb24ge1xuICAgIGZvbnQtc2l6ZToxLjEyNWVtO1xuICAgIHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtcbiAgICBkaXNwbGF5OmJsb2NrO1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgIG1hcmdpbjouMjVlbSAuM2VtO1xuICAgIC5pbnN0cnVjdGlvbiB7XG4gICAgICBkaXNwbGF5Om5vbmU7XG4gICAgfVxuICAgIGJ1dHRvbiB7XG4gICAgICBoZWlnaHQ6My44MTc1ZW07XG4gICAgICB3aWR0aDoxMDAlO1xuICAgICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgICB6LWluZGV4OjI7XG4gICAgICBiYWNrZ3JvdW5kOndoaXRlO1xuICAgICAgdGV4dC1hbGlnbjpsZWZ0O1xuICAgICAgYm9yZGVyOi4wNjI1ZW0gc29saWQgJG1lZEdyYXk7XG4gICAgICBib3JkZXItYm90dG9tOm5vbmU7XG4gICAgICBwYWRkaW5nOi4yNWVtIDFlbTtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICBjb2xvcjokY2hhcmNvYWw7XG4gICAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICAgIC5wYXJ0IHtcbiAgICAgICAgd2lkdGg6Y2FsYygxMDAlIC0gMWVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6NzAwO1xuICAgICAgICBzcGFuIHtcbiAgICAgICAgICBkaXNwbGF5OmJsb2NrO1xuICAgICAgICAgIGZvbnQtc2l6ZTouNzc3ZW07XG4gICAgICAgICAgY29sb3I6JGNvcm5mbG93ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHN2ZyB7XG4gICAgICAgIEBpbmNsdWRlIGNlbnRlcihmYWxzZSwgdHJ1ZSk7XG4gICAgICAgIG1heC1oZWlnaHQ6MWVtO1xuICAgICAgICBtYXgtd2lkdGg6MWVtO1xuICAgICAgICByaWdodDoxZW07XG4gICAgICAgIGZpbGw6JG1lZEdyYXk7XG4gICAgICAgIHRyYW5zZm9ybS1vcmlnaW46NTAlIDIyLjUlO1xuICAgICAgfVxuICAgICAgJi5jbG9zZS1zdGF0ZSB7XG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcblxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmZpbG0tcGFydHMtbGFyZ2Uge1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYWxsLCAuMzVzLCBlYXNlLWluLW91dCk7XG4gICAgcGFkZGluZzouMjVlbSAuMzVlbTtcbiAgICB3aWR0aDoxMDAlO1xuICAgIHBvc2l0aW9uOmFic29sdXRlO1xuICAgIHJpZ2h0OjA7XG4gICAgdG9wOjQuMDVlbTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgei1pbmRleDoxO1xuICAgIG92ZXJmbG93OmhpZGRlbjtcbiAgICB2aXNpYmlsaXR5OmhpZGRlbjtcbiAgICBtYXgtaGVpZ2h0OjA7XG4gICAgJi5vcGVuIHtcbiAgICAgIG1heC1oZWlnaHQ6MjBlbTtcbiAgICAgIHZpc2liaWxpdHk6dmlzaWJsZTtcbiAgICB9XG4gICAgYSB7XG4gICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGJhY2tncm91bmQsIC41cywgZWFzZS1pbi1vdXQpO1xuICAgICAgYmFja2dyb3VuZDp3aGl0ZTtcbiAgICAgIHBhZGRpbmc6LjI1ZW0gMWVtO1xuICAgICAgd2lkdGg6MTAwJTtcbiAgICAgIGNvbG9yOiRjaGFyY29hbDtcbiAgICAgIGJvcmRlcjouMDYyNWVtIHNvbGlkICRtZWRHcmF5O1xuICAgICAgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgICAgIGZvbnQtc2l6ZTouNzc3ZW07XG4gICAgICAgIGNvbG9yOiRjb3JuZmxvd2VyO1xuICAgICAgfVxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6JGRvdmU7XG4gICAgICAgIHNwYW4ge1xuICAgICAgICAgIGNvbG9yOiRjb3JuZmxvd2VyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAmLmFjdGl2ZSB7XG4gICAgICAgIGJhY2tncm91bmQ6JGRvdmU7XG4gICAgICAgIGN1cnNvcjpkZWZhdWx0O1xuICAgICAgICBzcGFuIHtcbiAgICAgICAgICBjb2xvcjokY29ybmZsb3dlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBsaSB7XG4gICAgICAmOm5vdCg6bGFzdC1vZi10eXBlKSB7XG4gICAgICAgIGEge1xuICAgICAgICAgIGJvcmRlci1ib3R0b206bm9uZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgIHRvcDo0LjM1ZW07XG4gICAgICBwYWRkaW5nOi4yNWVtIC4zNWVtO1xuICAgIH1cbiAgfVxuICAudGFiLW1vYmlsZS10b2dnbGUge1xuICAgIEBpbmNsdWRlIGJvcmRlci1idXR0b24od2hpdGUsIC4wNjI1ZW0sIHdoaXRlKTtcbiAgICB0ZXh0LWFsaWduOmxlZnQ7XG4gICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgaGVpZ2h0OjMuODE3NWVtO1xuICAgIHdpZHRoOmNhbGMoMTAwJSAtIC42NWVtKTtcbiAgICBtYXJnaW46LjNlbTtcbiAgICBmb250LXNpemU6IDEuMTI1ZW07XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAmLm11dGlwbGUtZXBpc29kZXMge1xuICAgICAgbWFyZ2luOjAgLjNlbSAuM2VtIC4zZW07XG5cbiAgICB9XG4gICAgc3BhbiB7XG4gICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgIG1hcmdpbi1yaWdodDoxLjVlbTtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAuMTVlbTtcbiAgICB9XG4gICAgJjpob3ZlciwgJjpmb2N1cywgJjphY3RpdmUge1xuICAgICAgYm9yZGVyOi4wNjI1ZW0gc29saWQgLjA2MjVlbTtcbiAgICB9XG4gICAgc3ZnIHtcbiAgICAgIEBpbmNsdWRlIGNlbnRlcihmYWxzZSwgdHJ1ZSk7XG4gICAgICBtYXgtaGVpZ2h0OjFlbTtcbiAgICAgIG1heC13aWR0aDoxZW07XG4gICAgICByaWdodDoxZW07XG4gICAgICBmaWxsOndoaXRlO1xuICAgICAgdHJhbnNmb3JtLW9yaWdpbjo1MCUgMjIuNSU7XG4gICAgfVxuICAgICYuY2xvc2Utc3RhdGUge1xuICAgICAgc3ZnIHtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcblxuICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgIGRpc3BsYXk6bm9uZTtcbiAgICB9XG4gIH1cblxuICAuaW5mby10YWJzIHtcbiAgICAudGFiLWxpc3QubWVudSB7XG4gICAgICB2aXNpYmlsaXR5OmhpZGRlbjtcbiAgICAgIG92ZXJmbG93OmhpZGRlbjtcbiAgICAgIG1heC1oZWlnaHQ6MDtcbiAgICAgIHdpZHRoOjEwMCU7XG4gICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGFsbCwgLjM1cywgZWFzZS1pbi1vdXQpO1xuICAgICAgJi5vcGVuIHtcbiAgICAgICAgdmlzaWJpbGl0eTp2aXNpYmxlO1xuICAgICAgICBtYXgtaGVpZ2h0OjIwZW07XG4gICAgICB9XG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgdmlzaWJpbGl0eTp2aXNpYmxlO1xuICAgICAgICBtYXgtaGVpZ2h0OmluaGVyaXQ7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8vIHRhYiBjb250ZW50XG4gIC50YWItcGFuZWwge1xuICAgIEBpbmNsdWRlIGFuaW1hdGVkKC41cyk7XG4gICAgbWFyZ2luLXRvcDokdi1yaHl0aG07XG4gICAgZGlzcGxheTpub25lO1xuICAgICYuZGVmYXVsdCB7XG4gICAgICBkaXNwbGF5OmJsb2NrO1xuICAgIH1cbiAgICAmLm9wZW4ge1xuICAgICAgZGlzcGxheTpibG9jaztcbiAgICAgIEBpbmNsdWRlIGZhZGVJbjtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICBtYXgtd2lkdGg6NjUuMjVlbTtcbiAgICB9XG4gIH1cbn1cblxuXG4uZmlsbS1zaG9wLWxpbmtzICB7XG4gIG1hcmdpbjokdi1yaHl0aG0qMi41IDA7XG4gIGNsZWFyOmJvdGg7XG4gIGltZyB7XG4gICAgbWF4LXdpZHRoOjYuMjVlbTtcbiAgfVxuICAqIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB9XG4gIGEge1xuICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICB9XG4gIHVsIHtcbiAgICBAaW5jbHVkZSBwbGFpbi1saXN0O1xuICAgIGxpIHtcbiAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgJjpub3QoOmZpcnN0LW9mLXR5cGUpIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6MWVtO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4uZmlsbS1mdW5kZXJzIHtcbiAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0qMi41O1xuICB0ZXh0LWFsaWduOmNlbnRlcjtcbiAgKiB7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgfVxuICBhIHtcbiAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgfVxuICBpbWcge1xuICAgIG1heC13aWR0aDoxMGVtO1xuICB9XG4gIHVsIHtcbiAgICBAaW5jbHVkZSBwbGFpbi1saXN0O1xuICAgIGxpIHtcbiAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgbWFyZ2luLWJvdHRvbToxZW07XG4gICAgICAmOm5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xuICAgICAgICBtYXJnaW4tbGVmdDoxZW07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgIHRleHQtYWxpZ246bGVmdDtcbiAgfVxufVxuXG4uZmlsbS10aXRsZSB7XG4gIG1hcmdpbi1ib3R0b206MDtcbiAgLnBhc3Nwb3J0LWljb24ge1xuICAgIG1heC13aWR0aDoxLjE1ZW07XG4gICAgbWF4LWhlaWdodDoxLjE1ZW07XG4gICAgcGFkZGluZy1yaWdodDouMjVlbTtcbiAgfVxufVxuXG4ucHJlbWllcmUtZGF0ZSB7XG4gIGNvbG9yOiRjb3JuZmxvd2VyO1xufVxuXG4udGFnbGluZSB7XG4gIGZvbnQtd2VpZ2h0OjcwMDtcbiAgZGlzcGxheTpibG9jaztcbiAgZm9udC1zaXplOiAxLjI1ZW07XG4gIGNvbG9yOiRtZWRHcmF5O1xuICB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7XG59IiwiLmZlYXR1cmUtbGlzdGluZ3Mge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbn1cblxuLmZlYXR1cmUtbGlzdCB7XG4gIEBpbmNsdWRlIGNsZWFyZml4O1xuICBsaSB7XG4gICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0qMjtcbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICBsaSB7XG4gICAgICBAaW5jbHVkZSBzcGFuKDIuNjYpO1xuICAgICAgJjpudGgtY2hpbGQoM24pIHtcbiAgICAgICAgQGluY2x1ZGUgbGFzdDtcbiAgICAgIH1cbiAgICAgICY6bnRoLWNoaWxkKDNuKzEpIHtcbiAgICAgICAgQGluY2x1ZGUgZmlyc3Q7XG4gICAgICAgIGNsZWFyOmJvdGg7XG4gICAgICB9XG4gICAgICAmOm50aC1jaGlsZCg1KXtcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig1LjMyKTtcbiAgICAgICAgQGluY2x1ZGUgbGFzdDtcbiAgICAgIH1cbiAgICAgICY6bnRoLW9mLXR5cGUoNikge1xuICAgICAgICBAaW5jbHVkZSBmaXJzdDtcbiAgICAgICAgY2xlYXI6Ym90aDtcbiAgICAgIH1cbiAgICAgICY6bnRoLW9mLXR5cGUoNykge1xuICAgICAgICBjbGVhcjpub25lO1xuICAgICAgfVxuICAgICAgJjpudGgtb2YtdHlwZSg4KSB7XG4gICAgICAgIEBpbmNsdWRlIGxhc3Q7XG4gICAgICAgIG1hcmdpbi1yaWdodDpndXR0ZXIoKTtcbiAgICAgICAgY2xlYXI6bm9uZTtcbiAgICAgIH1cbiAgICAgICY6bnRoLW9mLXR5cGUoOSkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDUuMzIpO1xuICAgICAgICBAaW5jbHVkZSBmaXJzdDtcbiAgICAgICAgY2xlYXI6Ym90aDtcbiAgICAgIH1cbiAgICAgICY6bnRoLW9mLXR5cGUoMTApIHtcbiAgICAgICAgQGluY2x1ZGUgbGFzdDtcbiAgICAgICAgY2xlYXI6bm9uZTtcbiAgICAgIH1cbiAgICAgICY6bnRoLW9mLXR5cGUoMTEpIHtcbiAgICAgICAgQGluY2x1ZGUgZmlyc3Q7XG4gICAgICAgIGNsZWFyOmJvdGg7XG4gICAgICB9XG4gICAgICAmOm50aC1vZi10eXBlKDEyKSB7XG4gICAgICAgIGZsb2F0OmxlZnQ7XG4gICAgICB9XG4gICAgICAmOm50aC1vZi10eXBlKDEzKSB7XG4gICAgICAgIEBpbmNsdWRlIGxhc3Q7XG4gICAgICAgIGNsZWFyOm5vbmU7XG4gICAgICB9XG4gICAgICAmOm50aC1vZi10eXBlKDE0KSB7XG4gICAgICAgIEBpbmNsdWRlIGZpcnN0O1xuICAgICAgICBjbGVhcjpib3RoO1xuICAgICAgfVxuICAgICAgJjpudGgtb2YtdHlwZSgxNSkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDUuMzIpO1xuICAgICAgICBAaW5jbHVkZSBsYXN0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICBsaSB7XG4gICAgICBAaW5jbHVkZSBzcGFuKDQpO1xuICAgICAgJjpudGgtY2hpbGQoM24pIHtcbiAgICAgICAgQGluY2x1ZGUgbGFzdDtcbiAgICAgIH1cbiAgICAgICY6bnRoLWNoaWxkKDNuKzEpIHtcbiAgICAgICAgQGluY2x1ZGUgZmlyc3Q7XG4gICAgICAgIGNsZWFyOmJvdGg7XG4gICAgICB9XG4gICAgICAmOm50aC1jaGlsZCg1KXtcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig4KTtcbiAgICAgICAgQGluY2x1ZGUgbGFzdDtcbiAgICAgIH1cbiAgICAgICY6bnRoLW9mLXR5cGUoNikge1xuICAgICAgICBAaW5jbHVkZSBmaXJzdDtcbiAgICAgICAgY2xlYXI6Ym90aDtcbiAgICAgIH1cbiAgICAgICY6bnRoLW9mLXR5cGUoNykge1xuICAgICAgICBjbGVhcjpub25lO1xuICAgICAgfVxuICAgICAgJjpudGgtb2YtdHlwZSg4KSB7XG4gICAgICAgIEBpbmNsdWRlIGxhc3Q7XG4gICAgICAgIG1hcmdpbi1yaWdodDpndXR0ZXIoKTtcbiAgICAgICAgY2xlYXI6bm9uZTtcbiAgICAgIH1cbiAgICAgICY6bnRoLW9mLXR5cGUoOSkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDgpO1xuICAgICAgICBAaW5jbHVkZSBmaXJzdDtcbiAgICAgICAgY2xlYXI6Ym90aDtcbiAgICAgIH1cbiAgICAgICY6bnRoLW9mLXR5cGUoMTApIHtcbiAgICAgICAgQGluY2x1ZGUgbGFzdDtcbiAgICAgICAgY2xlYXI6bm9uZTtcbiAgICAgIH1cbiAgICAgICY6bnRoLW9mLXR5cGUoMTEpIHtcbiAgICAgICAgQGluY2x1ZGUgZmlyc3Q7XG4gICAgICAgIGNsZWFyOmJvdGg7XG4gICAgICB9XG4gICAgICAmOm50aC1vZi10eXBlKDEyKSB7XG4gICAgICAgIGZsb2F0OmxlZnQ7XG4gICAgICB9XG4gICAgICAmOm50aC1vZi10eXBlKDEzKSB7XG4gICAgICAgIEBpbmNsdWRlIGxhc3Q7XG4gICAgICAgIGNsZWFyOm5vbmU7XG4gICAgICB9XG4gICAgICAmOm50aC1vZi10eXBlKDE0KSB7XG4gICAgICAgIEBpbmNsdWRlIGZpcnN0O1xuICAgICAgICBjbGVhcjpib3RoO1xuICAgICAgfVxuICAgICAgJjpudGgtb2YtdHlwZSgxNSkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDgpO1xuICAgICAgICBAaW5jbHVkZSBsYXN0O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuLmZlYXR1cmVzLXBhZ2luYXRlZCB7XG4gIGxpIHtcbiAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobSoyO1xuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgIGxpIHtcbiAgICAgIEBpbmNsdWRlIGdhbGxlcnkoMi42Nik7XG4gICAgfVxuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgIGxpIHtcbiAgICAgIEBpbmNsdWRlIGdhbGxlcnkoNCk7XG4gICAgfVxuICB9XG59IiwiXG4uZmVhdHVyZSB7XG4gIC5vdmVybGluZSB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgLnpldGEge1xuICAgICAgZGlzcGxheTpibG9jaztcbiAgICB9XG4gICAgKyBoNCB7XG4gICAgICBtYXJnaW4tdG9wOi0uNjVlbTtcbiAgICB9XG4gICAgLmludHJvLWNvbnRlbnQge1xuICAgICAgbWF4LXdpZHRoOjQ1ZW07XG4gICAgICBtYXJnaW46MCBhdXRvOyAgICAgIFxuICAgIH1cbiAgICAuaW50cm8ge1xuICAgICAgbWFyZ2luOiR2LXJoeXRobS8xLjUgMCAwIDA7XG4gICAgICBmb250LXNpemU6MS4yNWVtO1xuICAgIH1cbiAgICAuYnlsaW5lIHtcbiAgICAgIG1hcmdpbi10b3A6JHYtcmh5dGhtO1xuICAgICAgY29sb3I6JGdyYXk7XG4gICAgICBmb250LXdlaWdodDo3MDA7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7XG4gICAgICAmICsgLnNvY2lhbC1zaGFyaW5nIHtcbiAgICAgICAgIG1hcmdpbi10b3A6JHYtcmh5dGhtLzI7XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICAgIG1hcmdpbi10b3A6JHYtcmh5dGhtKjEuMjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6JHYtcmh5dGhtKjEuNTtcbiAgICAgIH1cbiAgICB9XG4gICAgLnNvY2lhbC1zaGFyaW5nIHtcbiAgICAgIC8vIGhpZGUgZm9yIG5vbmUgamF2YXNjcmlwdCBjcGFibGUgYnJvd3NlcnNcbiAgICAgIGRpc3BsYXk6bm9uZTtcbiAgICAgIGNvbG9yOiRncmF5O1xuICAgICAgZm9udC13ZWlnaHQ6NzAwO1xuICAgICAgbWFyZ2luLXRvcDokdi1yaHl0aG07XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7XG4gICAgICBzcGFuIHtcbiAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgIG1hcmdpbi10b3A6LjAxNWVtO1xuICAgICAgfVxuICAgICAgdWwge1xuICAgICAgICBAaW5jbHVkZSBwbGFpbi1saXN0O1xuICAgICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgICAgdmVydGljYWwtYWxpZ246bWlkZGxlO1xuICAgICAgICBoZWlnaHQ6MS45NWVtO1xuICAgICAgfVxuICAgICAgbGkge1xuICAgICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgICAgcGFkZGluZzowO1xuICAgICAgICBtYXJnaW46MDtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB3aWR0aDoxLjk1ZW07XG4gICAgICAgIGhlaWdodDoxLjk1ZW07XG4gICAgICAgIG1hcmdpbi1yaWdodDouMWVtO1xuICAgICAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICAgIG1hcmdpbi1sZWZ0Oi4yNWVtO1xuICAgICAgICB9XG4gICAgICAgIC5jb3B5LXVybC1jb250YWluZXIge1xuICAgICAgICAgIGJhY2tncm91bmQ6I2VhYTcwMDtcbiAgICAgICAgICBwYWRkaW5nOjFlbTtcbiAgICAgICAgICBmb250LXdlaWdodDo0MDA7XG4gICAgICAgICAgZm9udC1zaXplOjFlbTtcbiAgICAgICAgICBjb2xvcjp3aGl0ZTtcbiAgICAgICAgICBsYWJlbCB7XG4gICAgICAgICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206LjI1ZW07XG4gICAgICAgICAgICBmb250LXNpemU6Ljk1ZW07XG4gICAgICAgICAgfVxuICAgICAgICAgIHRleHRhcmVhIHtcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcbiAgICAgICAgICAgIG1heC13aWR0aDoxMDAlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBidXR0b24ge1xuICAgICAgICAgIEBpbmNsdWRlIHBsYWluLWJ1dHRvbjtcbiAgICAgICAgICBwYWRkaW5nOjA7XG4gICAgICAgIH1cbiAgICAgICAgYSwgYnV0dG9uIHtcbiAgICAgICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgICAgICB3aWR0aDoxMDAlO1xuICAgICAgICAgIGhlaWdodDoxMDAlO1xuICAgICAgICAgIHBhZGRpbmc6LjFlbTtcbiAgICAgICAgfVxuICAgICAgICBzdmcge1xuICAgICAgICAgIG92ZXJmbG93OnZpc2libGU7XG4gICAgICAgICAgLmNvbG9yIHtcbiAgICAgICAgICAgIGZpbGw6d2hpdGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIC5mYWNlYm9vayB7XG4gICAgICAgICAgICBmaWxsOiM0MDczYjc7XG4gICAgICAgICAgfVxuICAgICAgICAgIC50d2l0dGVyIHtcbiAgICAgICAgICAgIGZpbGw6IzI4YTllMDtcbiAgICAgICAgICB9XG4gICAgICAgICAgLm1haWx0byB7XG4gICAgICAgICAgICBmaWxsOiM4ZGI3Mjk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC5jb3B5IHtcbiAgICAgICAgICAgIGZpbGw6I2VhYTcwMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgIGRpc3BsYXk6bm9uZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgIC5pbnRyby1jb250ZW50IHtcbiAgICAgICAgbWF4LXdpZHRoOmluaGVyaXQ7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oNSBmaXJzdCk7XG4gICAgICB9XG4gICAgICAuYWQtYmxvY2sge1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgQGluY2x1ZGUgc3BhbigzIGxhc3QpO1xuICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgIC5pbnRyby1jb250ZW50IHtcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig4LjUgZmlyc3QpO1xuICAgICAgfVxuICAgICAgLmFkLWJsb2NrIHtcbiAgICAgICAgIEBpbmNsdWRlIHNwYW4oMy41IGxhc3QpO1xuICAgICAgfSAgICAgIFxuICAgIH1cbiAgfVxuICAvLyB0ZXh0IGJsb2NrIHN0eWxpbmdcbiAgLmZlYXR1cmUtY29udGVudCB7XG4gICAgbWF4LXdpZHRoOjQ0LjUzMTI1ZW07XG4gICAgbWFyZ2luOjAgYXV0bztcbiAgfVxuICAvLyBtZWRpYSBlbGVtZW50IHN0dWZmcyBmb3IgZmVhdHVyZXMgb25seVxuICAuY2VudGVyIHtcbiAgICAmLmxhcmdlLW1lZGlhIHtcbiAgICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTcuODEyNWVtKSB7XG4gICAgICAgIGltZyB7XG4gICAgICAgICAgbWF4LXdpZHRoOmluaGVyaXQ7XG4gICAgICAgICAgd2lkdGg6NTcuODEyNWVtO1xuICAgICAgICAgIG1hcmdpbi1sZWZ0Oi02LjY0MDYyNWVtO1xuICAgICAgICAgIFxuICAgICAgICAgIC8vIGZ1bGwgd2lkdGggaW1hZ2UgbGVhdmUgaGVyZVxuICAgICAgICAgIC8vIHdpZHRoOiAxMDB2dztcbiAgICAgICAgICAvLyBtYXJnaW4tbGVmdDpjYWxjKC01MHZ3ICsgMjIuMjY1NjI1ZW0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC5yaWdodCB7XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAmLm1lZGl1bS1tZWRpYSB7XG4gICAgICAgIG1heC13aWR0aDppbmhlcml0O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6LTVlbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLmxlZnQge1xuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgJi5tZWRpdW0tbWVkaWEge1xuICAgICAgICBtYXgtd2lkdGg6aW5oZXJpdDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6LTVlbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLmpzIHtcbiAgLmZlYXR1cmUge1xuICAgIC5vdmVybGluZSB7XG4gICAgICAuc29jaWFsLXNoYXJpbmcge1xuICAgICAgICBkaXNwbGF5OmJsb2NrO1xuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLmNvcHktdXJsLWNvbnRhaW5lciB7XG4gICAgICAgIHBvc2l0aW9uOmFic29sdXRlO1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGFsbCwgLjM1cywgZWFzZS1pbi1vdXQpO1xuICAgICAgICB0b3A6LTZlbTtcbiAgICAgICAgd2lkdGg6MTVlbTtcbiAgICAgICAgbGVmdDotMTBlbTtcbiAgICAgICAgb3BhY2l0eTowO1xuICAgICAgICB6LWluZGV4Oi0xO1xuICAgICAgICAmLm9wZW4ge1xuICAgICAgICAgIG9wYWNpdHk6MTtcbiAgICAgICAgICB6LWluZGV4OjE7XG4gICAgICAgIH1cbiAgICAgICAgYnV0dG9uIHtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgcmlnaHQ6MWVtO1xuICAgICAgICAgIHRvcDouNjVlbTtcbiAgICAgICAgICB3aWR0aDoxLjVlbTtcbiAgICAgICAgICBoZWlnaHQ6MS41ZW07XG4gICAgICAgICAgcGFkZGluZzowO1xuICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICB3aWR0aDoxLjI0ZW07XG4gICAgICAgICAgICBoZWlnaHQ6MS4yNGVtO1xuICAgICAgICAgICAgZmlsbDp3aGl0ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgd2lkdGg6MjRlbTtcbiAgICAgICAgICB0ZXh0YXJlYSB7XG4gICAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gN2VtKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gIFxuICAgICAgfVxuICAgIH1cbiAgICAvLyBwYWRkaW5nIGFuZCBtYXJnaW4gYWRqdXN0bWVudHNcbiAgICAuYWQtYmxvY2sge1xuICAgICAgJi5kZXNrdG9wIHtcbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgcGFkZGluZzowIDAgJHYtcmh5dGhtIDA7XG4gICAgICAgICAgbWFyZ2luLXRvcDotJHYtcmh5dGhtOyAgICAgICAgXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn0iLCIuc2VhcmNoLXJlc3VsdHMge1xuICB1bCB7XG4gICAgQGluY2x1ZGUgcGxhaW4tbGlzdDtcbiAgICBsaSB7XG4gICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtKjI7XG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG07XG4gICAgICB9ICAgIFxuICAgIH1cbiAgfVxuICAuaW1hZ2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgQGluY2x1ZGUgc3BhbigxLjUgZmlyc3QpO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgIEBpbmNsdWRlIHNwYW4oMiBmaXJzdCk7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgQGluY2x1ZGUgc3BhbigyLjUgZmlyc3QpO1xuICAgIH0gICAgXG4gIH1cbiAgLmRlc2NyaXB0aW9uIHtcbiAgICBoMyB7XG4gICAgICBtYXJnaW4tYm90dG9tOjA7XG4gICAgfVxuICAgIHAge1xuICAgICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0vMjtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICBAaW5jbHVkZSBzcGFuKDIuNSBsYXN0KTtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICBAaW5jbHVkZSBzcGFuKDQpO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgIEBpbmNsdWRlIHNwYW4oNi41KTtcbiAgICAgIHAge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobTtcbiAgICAgIH1cbiAgICB9ICBcbiAgfVxufSIsIi8vIGVuc3VyZSBtb2RhbCBpcyBub3Qgc2hvd24gd2hlbiBqcyBpcyBub3QgcHJlc2VudFxuLm5ld3NsZXR0ZXItZGlhbG9nIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4vLyBzaG93IGl0IHdoZW4gaXQgaXNcbi5qcyAubmV3c2xldHRlci1kaWFsb2cge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4ubmV3c2xldHRlci1kaWFsb2cuZ2VuZXJhbCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYShibGFjaywgMC44NSk7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBoZWlnaHQ6IDEwMHZoO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHotaW5kZXg6IDEwMDAyO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgICAgIGJhY2tncm91bmQ6IHVybChcIi4uL2ltYWdlcy9iZy10cmlhbmdsZS1mb290ZXIucG5nXCIpO1xuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDExLjc1ZW0gMTEuMTI1ZW07XG4gICAgICAgIGNvbG9yOiAkY29ybmZsb3dlcjtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB6LWluZGV4OiA1MDtcbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJHNjcmVlbi1tZC1taW4pIGFuZCAobWluLWhlaWdodDogMzcuNWVtKSB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAxMi41ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLmRpc21pc3NlZCB7XG4gICAgICAgIEBpbmNsdWRlIGFuaW1hdGVkKDAuMzVzKTtcbiAgICAgICAgQGluY2x1ZGUgc2xpZGVPdXREb3duO1xuICAgIH1cblxuICAgICZbYXJpYS1oaWRkZW49XCJ0cnVlXCJdIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICBkaXZbcm9sZT1cImRpYWxvZ1wiXSB7XG4gICAgICAgIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgICAgICAgbWF4LWhlaWdodDogODB2aDtcbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi1oZWlnaHQ6IDM3LjVlbSkge1xuICAgICAgICAgICAgbWF4LWhlaWdodDogaW5oZXJpdDtcbiAgICAgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGl2W3JvbGU9XCJkb2N1bWVudFwiXSB7XG4gICAgICAgIG1heC13aWR0aDogNTBlbTtcbiAgICAgICAgbWFyZ2luOiAxZW0gYXV0byAwIGF1dG87XG4gICAgICAgIHdpZHRoOiA5NSU7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJHNjcmVlbi1tZC1taW4pIGFuZCAobWluLWhlaWdodDogMzcuNWVtKSB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICAgICAgdG9wOiAxMi41dmg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZ2FtbWEge1xuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgZm9udC1zaXplOiAyLjI1ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZGltc2lzcyB7XG4gICAgICAgIEBpbmNsdWRlIHBsYWluLWJ1dHRvbjtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgdG9wOiAtMi41ZW07XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTAwJTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihmaWxsLCAwLjVzLCBlYXNlLWluLW91dCk7XG4gICAgICAgICAgICB3aWR0aDogMmVtO1xuICAgICAgICAgICAgaGVpZ2h0OiAyZW07XG4gICAgICAgICAgICBmaWxsOiB3aGl0ZTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICBmaWxsOiAkeWVsbG93O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaDEge1xuICAgICAgICBtYXJnaW46IDEuNWVtIDAgMC41ZW0gMDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMmVtO1xuICAgICAgICB9XG4gICAgICAgIC5sb2dvLXR5cGUge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxM2VtO1xuICAgICAgICAgICAgbWF4LWhlaWdodDogMC45NWVtO1xuICAgICAgICB9XG4gICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgZm9udC1zaXplOiAwLjc1ZW07XG4gICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuMmVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmVtYWlsLXNpZ251cC1mb3JtIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMS41ZW07XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAxLjVlbTtcblxuICAgICAgICBidXR0b25bdHlwZT1cInN1Ym1pdFwiXSB7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxLjVlbTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICR5ZWxsb3c7XG4gICAgICAgICAgICBjb2xvcjogJG5hdnk7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAxLjVlbTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBub25lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBkYXJrZW4oJHllbGxvdywgNSUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgd2lkdGg6IGluaGVyaXQ7XG4gICAgICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5ub3RlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxZW07XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuMjVlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgLmVtYWlsLWZpZWxkLFxuICAgICAgICAgICAgLnppcC1jb2RlLWZpZWxkIHtcbiAgICAgICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5lbWFpbC1maWVsZCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDU1JTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC56aXAtY29kZS1maWVsZCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDQ0JTtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMSU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5uZXdzbGV0dGVyLWRpYWxvZy52b3RlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKGJsYWNrLCAwLjg1KTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGhlaWdodDogMTAwdmg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgei1pbmRleDogMTAwMDI7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgJi5kaXNtaXNzZWQge1xuICAgICAgICBAaW5jbHVkZSBhbmltYXRlZCgwLjM1cyk7XG4gICAgICAgIEBpbmNsdWRlIHNsaWRlT3V0RG93bjtcbiAgICB9XG5cbiAgICAmW2FyaWEtaGlkZGVuPVwidHJ1ZVwiXSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgZGl2W3JvbGU9XCJkaWFsb2dcIl0ge1xuICAgICAgICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gICAgICAgIG1heC1oZWlnaHQ6IDkwdmg7XG4gICAgICAgIG1hcmdpbi10b3A6IDQuNXZoO1xuXG4gICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4taGVpZ2h0OiA3NTB2aCkge1xuICAgICAgICAgICAgbWF4LWhlaWdodDogaW5oZXJpdDtcbiAgICAgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGl2W3JvbGU9XCJkb2N1bWVudFwiXSB7XG4gICAgICAgIG1heC13aWR0aDogNjAwcHg7XG4gICAgICAgIG1hcmdpbjogNnZoIGF1dG8gMDtcbiAgICAgICAgd2lkdGg6IDk1JTtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBib3JkZXI6IDEwcHggc29saWQgI2ZjYzMyMDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzNjMjI1ZTtcblxuICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkc2NyZWVuLW1kLW1pbikgYW5kIChtaW4taGVpZ2h0OiA3NTBweCkge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgICAgIHRvcDogNTAlO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZ2FtbWEge1xuICAgICAgICBjb2xvcjogI2ViZTNkNztcbiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcblxuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNTAwcHgpIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgZm9udC1zaXplOiAzMHB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRpbXNpc3Mge1xuICAgICAgICBAaW5jbHVkZSBwbGFpbi1idXR0b247XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMDAlO1xuICAgICAgICByaWdodDogLTAuNWVtO1xuICAgICAgICB0b3A6IC0zZW07XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oZmlsbCwgMC41cywgZWFzZS1pbi1vdXQpO1xuICAgICAgICAgICAgd2lkdGg6IDJlbTtcbiAgICAgICAgICAgIGhlaWdodDogMmVtO1xuICAgICAgICAgICAgZmlsbDogI2ZjYzMyMDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG5cbiAgICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDY3NXB4KSB7XG4gICAgICAgICAgICByaWdodDogLTIuNWVtO1xuICAgICAgICAgICAgdG9wOiAtMi41ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAjbmV3c2xldHRlci1kaWFsb2ctdGl0bGUge1xuICAgICAgICBtYXJnaW46IDAgMCAwLjVlbSAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgZm9udC1zaXplOiAyNXB4O1xuICAgICAgICBjb2xvcjogI2ViZTNkNztcblxuICAgICAgICAubG9nby10eXBlIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogOGVtO1xuICAgICAgICAgICAgbWF4LWhlaWdodDogMC45MmVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3Bhbi51bmRlciB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW46IDVweCBhdXRvO1xuICAgICAgICBmb250LXNpemU6IDI0cHg7XG4gICAgICAgIGZvbnQtZmFtaWx5OiBcIk11bGlcIiwgc2Fucy1zZXJpZjtcbiAgICAgICAgY29sb3I6ICNmY2MzMjA7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgfVxuXG4gICAgLnZvdGUtaW1hZ2Uge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG1heC13aWR0aDogNjAwcHg7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGhlaWdodDogYXV0bztcblxuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNTAwcHgpIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHVybCguLi9pbWFnZXMvdm90ZV9pbWFnZV9oZWFkZXIuanBnKSBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjtcbiAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgICAgICAgICBoZWlnaHQ6IDE1MHB4O1xuICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnRpdGxlLXdyYXBwZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2MyMjVlO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwYWRkaW5nOiAxMHB4O1xuICAgICAgICBtYXJnaW46IC04N3B4IGF1dG8gMDtcbiAgICAgICAgaGVpZ2h0OiA4N3B4O1xuICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogNjUwcHgpIHtcbiAgICAgICAgICAgIHdpZHRoOiA3MCU7XG4gICAgICAgIH1cblxuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNTAwcHgpIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAudm90ZS1oZWFkbGluZSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1hZ2VzL3RpdGxlX3RoZS12b3RlLnBuZykgbm8tcmVwZWF0IGNlbnRlciBjZW50ZXI7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDMwMHB4O1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBoZWlnaHQ6IDU3cHg7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvIDE1cHg7XG4gICAgICAgICAgICB0ZXh0LWluZGVudDogLTk5OTk5cHg7XG5cbiAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA1MDBweCkge1xuICAgICAgICAgICAgICAgIG1heC13aWR0aDogODAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmVtYWlsLXNpZ251cC1mb3JtIHtcbiAgICAgICAgcGFkZGluZzogMjBweCA0MHB4O1xuXG4gICAgICAgIGJ1dHRvblt0eXBlPVwic3VibWl0XCJdIHtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDEuNWVtO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJHllbGxvdztcbiAgICAgICAgICAgIGNvbG9yOiAkbmF2eTtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDEuNWVtO1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogZGFya2VuKCR5ZWxsb3csIDUlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIHdpZHRoOiBpbmhlcml0O1xuICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubm90ZSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgICAgIGNvbG9yOiAjZWJlM2Q3O1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNjUwcHgpIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgIC5lbWFpbC1maWVsZCxcbiAgICAgICAgICAgIC56aXAtY29kZS1maWVsZCB7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuZW1haWwtZmllbGQge1xuICAgICAgICAgICAgICAgIHdpZHRoOiA1NSU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuemlwLWNvZGUtZmllbGQge1xuICAgICAgICAgICAgICAgIHdpZHRoOiA0NCU7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDElO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLy8geGZpeGVkIHBvc2l0aW9uIHN0YXRlcyBmb3IgaGVhZGVyXG4jc3RpY2t5LWhlYWRlciB7XG4gIHdpZHRoOjEwMCU7XG4gIC13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDBweCwwcHgsMHB4KTtcbiAgICAgICAgICB0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMHB4LDBweCwwcHgpO1xufVxuXG4uc3RpY2t5ICNzdGlja3ktaGVhZGVyIHtcbiAgdG9wOjA7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgQGluY2x1ZGUgYW5pbWF0ZWQoLjVzKTtcbiAgQGluY2x1ZGUgc2xpZGVJbkRvd247XG59XG5cbi5zaXRlLWhlYWRlcntcbiAgLy8gcmVzZXRzIGJyb3dzZXIgc3R5bGluZyBmb3IgYWxsIGxpc3RzIGluc2lkZSB0aGUgaGVhZGVyXG4gIHVsIHtcbiAgICBAaW5jbHVkZSBwbGFpbi1saXN0O1xuICB9XG4gIC5zZWNvbmRhcnkge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgIGJhY2tncm91bmQ6JGRhcmtHcmF5O1xuICAgIHRleHQtYWxpZ246Y2VudGVyO1xuICAgIGNvbG9yOndoaXRlO1xuICAgICp7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7XG4gICAgfVxuICAgIC50aXRsZSB7XG4gICAgICBkaXNwbGF5OmJsb2NrO1xuICAgICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0vMjtcbiAgICB9XG4gICAgLmhlYWRlci1zb2NpYWwge1xuICAgICAgZGlzcGxheTpub25lO1xuICAgICAgLnNvY2lhbC1saXN0IHtcbiAgICAgICAgd2lkdGg6NzAlO1xuICAgICAgICBtYXJnaW46MCBhdXRvO1xuICAgICAgICBhIHtcbiAgICAgICAgICBkaXNwbGF5OmJsb2NrO1xuICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgLmJhY2tncm91bmQge1xuICAgICAgICAgICAgICAgIGZpbGw6YmxhY2s7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oMiBvZiA0IGZpcnN0KTtcbiAgICAgICAgZGlzcGxheTpibG9jaztcbiAgICAgICAgbWFyZ2luLXRvcDouNzVlbTtcbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDUgb2YgMTIgZmlyc3QpO1xuICAgICAgICBtYXJnaW4tdG9wOjA7XG4gICAgICAgIHRleHQtYWxpZ246bGVmdDtcbiAgICAgICAgLnRpdGxlIHtcbiAgICAgICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOjA7XG4gICAgICAgICAgZm9udC1zaXplOi44MTI1ZW07XG4gICAgICAgIH1cbiAgICAgICAgLnNvY2lhbC1saXN0IHtcbiAgICAgICAgICB3aWR0aDphdXRvO1xuICAgICAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC5oZWFkZXItc3BvbnNvcnMge1xuICAgICAgdWwge1xuICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgICAgZGlzcGxheTotd2Via2l0LWJveDtcbiAgICAgICAgZGlzcGxheTotbXMtZmxleGJveDtcbiAgICAgICAgZGlzcGxheTpmbGV4O1xuICAgICAgICAtd2Via2l0LWJveC1wYWNrOmNlbnRlcjtcbiAgICAgICAgICAtbXMtZmxleC1wYWNrOmNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OmNlbnRlcjtcbiAgICAgICAgLXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyO1xuICAgICAgICAgICAtbXMtZmxleC1hbGlnbjpjZW50ZXI7XG4gICAgICAgICAgICAgIGFsaWduLWl0ZW1zOmNlbnRlcjtcbiAgICAgICAgLW1zLWZsZXgtd3JhcDp3cmFwO1xuICAgICAgICAgICAgZmxleC13cmFwOndyYXA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OjE7ICAgICAgICAgICAgICAgIFxuICAgICAgfVxuICAgICAgbWFyZ2luLXRvcDokdi1yaHl0aG0vMjtcbiAgICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtLzI7XG4gICAgICBsaSB7XG4gICAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgICBtYXJnaW46LjI1ZW0gLjVlbTtcbiAgICAgIH1cbiAgICAgIGEge1xuICAgICAgICBkaXNwbGF5Oi13ZWJraXQtYm94O1xuICAgICAgICBkaXNwbGF5Oi1tcy1mbGV4Ym94O1xuICAgICAgICBkaXNwbGF5OmZsZXg7XG4gICAgICAgIC13ZWJraXQtYm94LXBhY2s6Y2VudGVyO1xuICAgICAgICAgIC1tcy1mbGV4LXBhY2s6Y2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO1xuICAgICAgICAtd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7XG4gICAgICAgICAgIC1tcy1mbGV4LWFsaWduOmNlbnRlcjtcbiAgICAgICAgICAgICAgYWxpZ24taXRlbXM6Y2VudGVyOyAgICAgICAgXG4gICAgICB9XG4gICAgICAudGl0bGUge1xuICAgICAgICBtYXJnaW4tYm90dG9tOi4yNWVtO1xuICAgICAgfVxuICAgICAgaW1nIHtcbiAgICAgICAgbWF4LWhlaWdodDozLjEyNWVtO1xuICAgICAgICBtYXgtd2lkdGg6Ny4zNzVlbTtcbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDIgb2YgNCBsYXN0KTtcbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgIEBpbmNsdWRlIHNwYW4oNyBvZiAxMiBsYXN0KTtcbiAgICAgICAgICBtYXJnaW4tdG9wOjA7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTowO1xuICAgICAgICAgIGRpc3BsYXk6LXdlYmtpdC1ib3g7XG4gICAgICAgICAgZGlzcGxheTotbXMtZmxleGJveDtcbiAgICAgICAgICBkaXNwbGF5OmZsZXg7XG4gICAgICAgICAtd2Via2l0LWJveC1wYWNrOmVuZDtcbiAgICAgICAgICAgIC1tcy1mbGV4LXBhY2s6ZW5kO1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDpmbGV4LWVuZDtcbiAgICAgICAgICAtd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7XG4gICAgICAgICAgICAgLW1zLWZsZXgtYWxpZ246Y2VudGVyO1xuICAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczpjZW50ZXI7XG4gICAgICAgIC50aXRsZSB7XG4gICAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgICAgZm9udC1zaXplOi44MTI1ZW07XG4gICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOjA7XG4gICAgICAgIH1cbiAgICAgICAgLnNwb25zb3Ige1xuICAgICAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgaW1nIHtcbiAgICAgICAgICBtYXgtaGVpZ2h0OjMuMTI1ZW07XG4gICAgICAgICAgbWF4LXdpZHRoOjguMzc1ZW07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAuZ3JpZCB7XG4gICAgICAgIG1hcmdpbi10b3A6LjVlbTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTouNWVtO1xuICAgICAgICBkaXNwbGF5Oi13ZWJraXQtYm94O1xuICAgICAgICBkaXNwbGF5Oi1tcy1mbGV4Ym94O1xuICAgICAgICBkaXNwbGF5OmZsZXg7XG4gICAgICAgIC13ZWJraXQtYm94LWFsaWduOmNlbnRlcjtcbiAgICAgICAgICAgLW1zLWZsZXgtYWxpZ246Y2VudGVyO1xuICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6Y2VudGVyOyAgICAgICAgXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnByaW1hcnkge1xuICAgIGJhY2tncm91bmQ6JGJsdWU7XG4gICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgei1pbmRleDoxMDtcbiAgICAuZ3JpZCB7XG4gICAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICB9XG4gICAgLmhlYWRlci1sb2dvIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIG1hcmdpbjowO1xuICAgICAgbGluZS1oZWlnaHQ6MDtcbiAgICAgIGEge1xuICAgICAgICBkaXNwbGF5OmJsb2NrO1xuICAgICAgICBwYWRkaW5nOi40NWVtO1xuICAgICAgICBzdmcge1xuICAgICAgICAgIG1heC1oZWlnaHQ6LjVlbTtcbiAgICAgICAgICAudHlwZSB7XG4gICAgICAgICAgICBmaWxsOndoaXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6Ljc1ZW07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICAubG9nby10eXBlIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBtYXgtd2lkdGg6MTAwJTtcbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIHNwYW4oMS41IGZpcnN0KTtcblxuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oMyBmaXJzdCk7XG4gICAgICB9XG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgQGluY2x1ZGUgc3BhbigyIGZpcnN0KTtcbiAgICAgICAgcGFkZGluZy10b3A6LjJlbTtcbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICBwYWRkaW5nLXRvcDowO1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDQgZmlyc3QpO1xuICAgICAgICBhIHtcbiAgICAgICAgICBwYWRkaW5nOi41NWVtIC40NWVtIC40NWVtIC40NWVtO1xuICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICBtYXgtaGVpZ2h0OjFlbTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gYmFzZSBzdHlsaW5nIGZvciBtYWluIG5hdmlnYXRpb25cbiAgICAubWFpbi1uYXYtdG9nZ2xlIHtcbiAgICAgIEBpbmNsdWRlIHBsYWluLWJ1dHRvbjtcbiAgICAgIGRpc3BsYXk6bm9uZTtcbiAgICAgIHBvc2l0aW9uOmFic29sdXRlO1xuICAgICAgdG9wOjA7XG4gICAgICByaWdodDo1JTtcbiAgICAgIHdpZHRoOjIuNzVlbTtcbiAgICAgIGhlaWdodDoyLjc1ZW07XG4gICAgICBvdmVyZmxvdzpoaWRkZW47XG4gICAgICBwYWRkaW5nOi41ZW07XG4gICAgICB0ZXh0LWFsaWduOmNlbnRlcjtcbiAgICAgIHN2ZyB7XG4gICAgICAgIEBpbmNsdWRlIGNlbnRlcjtcbiAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgIHdpZHRoOjEuNWVtO1xuICAgICAgfVxuICAgICAgLm9uZSwgLnR3bywgLnRocmVlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuMzVzIGxpbmVhcjtcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOmFsbCAuMzVzIGxpbmVhcjtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDBkZWcpIHNjYWxlKDEpO1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTpyb3RhdGUoMGRlZykgc2NhbGUoMSk7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjowIDUwJTtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOjAgNTAlO1xuICAgICAgICAgICAgICAgIGZpbGw6d2hpdGU7XG4gICAgICB9XG4gICAgICAmLmNsb3NlLXN0YXRlIHtcbiAgICAgICAgLm9uZSB7XG4gICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlWigtNDVkZWcpIHNjYWxlKC45NSk7XG4gICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06cm90YXRlWigtNDVkZWcpIHNjYWxlKC45NSk7XG4gICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjExLjVlbSA1ZW07XG4gICAgICAgICAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOjExLjVlbSA1ZW07XG4gICAgICAgIH1cbiAgICAgICAgLnR3byB7XG4gICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMjVlbSk7XG4gICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMjVlbSk7XG4gICAgICAgIH1cbiAgICAgICAgLnRocmVlIHtcbiAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGVaKDQ1ZGVnKSBzY2FsZSguOTUpO1xuICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOnJvdGF0ZVooNDVkZWcpIHNjYWxlKC45NSk7XG4gICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjExLjVlbSA1ZW07XG4gICAgICAgICAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOjExLjVlbSA1ZW07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICB3aWR0aDozLjNlbTtcbiAgICAgICAgaGVpZ2h0OjMuM2VtO1xuICAgICAgfVxuICAgIH1cbiAgICAuZHJvcGRvd24tbWVudSB7XG4gICAgICBjbGVhcjpib3RoO1xuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oNiBsYXN0KTtcbiAgICAgICAgY2xlYXI6bm9uZTtcbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDggbGFzdCk7XG4gICAgICB9XG4gICAgfVxuICAgIC5oZWFkZXItbWFpbi1uYXZpZ2F0aW9uIHtcbiAgICAgIGZvbnQtc2l6ZToxLjEyNWVtO1xuICAgICAgZm9udC1mYW1pbHk6ICdKb3NlZmluIFNhbnMnLCBzYW5zLXNlcmlmO1xuICAgICAgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO1xuICAgICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG07XG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgQGluY2x1ZGUgc3BhbigzLjc1IG9mIDYpO1xuICAgICAgICBjbGVhcjpub25lO1xuICAgICAgICBtYXJnaW4tYm90dG9tOjA7XG4gICAgICB9XG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig1IG9mIDgpO1xuICAgICAgfVxuICAgICAgdWwge1xuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICBkaXNwbGF5Oi13ZWJraXQtYm94O1xuICAgICAgICAgIGRpc3BsYXk6LW1zLWZsZXhib3g7XG4gICAgICAgICAgZGlzcGxheTpmbGV4OyBcbiAgICAgICAgfVxuICAgICAgICBsaSB7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbToxcHggc29saWQgJGdyYXk7XG4gICAgICAgICAgYSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBsaW5rLXJlc2V0O1xuICAgICAgICAgICAgZGlzcGxheTpibG9jaztcbiAgICAgICAgICAgIHBhZGRpbmc6MS4xZW0gMWVtIC45ZW0gMWVtO1xuICAgICAgICAgICAgY29sb3I6d2hpdGU7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihiYWNrZ3JvdW5kLCAuNXMsIGVhc2UtaW4tb3V0KTtcbiAgICAgICAgICAgICAgd2lkdGg6MTAwJTtcbiAgICAgICAgICAgICAgaGVpZ2h0Oi4zMzMzZW07XG4gICAgICAgICAgICAgIGNvbnRlbnQ6Jyc7XG4gICAgICAgICAgICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgICAgICAgICAgIHBvc2l0aW9uOmFic29sdXRlO1xuICAgICAgICAgICAgICBib3R0b206MDtcbiAgICAgICAgICAgICAgbGVmdDowO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJjpob3ZlciwgJi5hY3RpdmUge1xuICAgICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiR5ZWxsb3c7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOmNlbnRlcjtcbiAgICAgICAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTpub25lO1xuICAgICAgICAgICAgZmxleC1ncm93OjE7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIC5zZWFyY2gge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgZm9udC1zaXplOjEuMTI1ZW07XG4gICAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobTtcbiAgICAgIC5zZWFyY2gtaW5wdXQgIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBoZWlnaHQ6Mi4yNWVtO1xuICAgICAgICBwYWRkaW5nOjAgMCAwIDFlbTtcbiAgICAgICAgd2lkdGg6MTAwJTtcbiAgICAgICAgYm9yZGVyOjFweCBzb2xpZCAkZ3JheTtcbiAgICAgICAgcGFkZGluZy1yaWdodDoyLjVlbTtcbiAgICAgIH1cbiAgICAgIC5zZWFyY2gtYnV0dG9uIHtcbiAgICAgICAgQGluY2x1ZGUgcGxhaW4tYnV0dG9uO1xuICAgICAgICBwb3NpdGlvbjphYnNvbHV0ZTtcbiAgICAgICAgdG9wOi4xNWVtO1xuICAgICAgICByaWdodDouNDVlbTtcbiAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgIGhlaWdodDoyZW07XG4gICAgICAgIHdpZHRoOjJlbTtcbiAgICAgICAgcGFkZGluZzouMTVlbTtcbiAgICAgICAgYmFja2dyb3VuZDp3aGl0ZTtcbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDEuNSBvZiA2KTtcbiAgICAgICAgbWFyZ2luLXRvcDouN2VtO1xuICAgICAgICBtYXJnaW4tYm90dG9tOjA7XG4gICAgICB9XG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgQGluY2x1ZGUgc3BhbigyIG9mIDgpO1xuICAgICAgfSBcbiAgICB9XG4gIH1cbiAgLnNob3Age1xuICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtO1xuICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgcGFkZGluZzouNWVtIC41ZW0gLjVlbSAxZW07XG4gICAgYm9yZGVyLWJvdHRvbToxcHggc29saWQgJGdyYXk7XG4gICAgc3ZnIHtcbiAgICAgIGhlaWdodDoyLjVlbTtcbiAgICAgIHdpZHRoOjIuNWVtO1xuICAgICAgZmlsbDp3aGl0ZTtcbiAgICAgIHBhdGgge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGZpbGwsIC4yNXMsIGVhc2UtaW4tb3V0KVxuICAgICAgfVxuICAgIH1cbiAgICAmOmhvdmVyIHtcbiAgICAgIHN2ZyB7XG4gICAgICAgIHBhdGgge1xuICAgICAgICAgIGZpbGw6JHllbGxvdztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgIEBpbmNsdWRlIHNwYW4oLjc1IG9mIDYgbGFzdCk7XG4gICAgICBib3JkZXI6bm9uZTtcbiAgICAgIHBhZGRpbmc6MDtcbiAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgdGV4dC1hbGlnbjpjZW50ZXI7XG4gICAgICBtYXJnaW4tdG9wOi43NWVtO1xuICAgICAgbWFyZ2luLWJvdHRvbTowO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgIEBpbmNsdWRlIHNwYW4oMSBvZiA4IGxhc3QpO1xuICAgIH1cbiAgfVxufVxuXG5cblxuLy8gZW5oYW5jZWQgc3R5bGVzIGZvciBoZWFkZXIgKEphdmFTY3JpcHQgU3VjY2Vzcylcbi5qcyB7XG4gIC8vIHNob3cgbWFpbiBuYXYgdG9nZ2xlIHdpdGggSlNcbiAgLnNpdGUtaGVhZGVyIHtcbiAgICAucHJpbWFyeSB7XG4gICAgICAubWFpbi1uYXYtdG9nZ2xlIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICBkaXNwbGF5Om5vbmU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLy8gaGlkaW5nIGFuZCBzaG93IG9mIGRyb3AgZG93biBtZW51IHdpdGggSlNcbiAgLmpzLWRyb3Bkb3duLW1lbnUge1xuICAgICAgdmlzaWJpbGl0eTpoaWRkZW47XG4gICAgICBvdmVyZmxvdzpoaWRkZW47XG4gICAgICBtYXgtaGVpZ2h0OjA7XG4gICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGFsbCwgLjM1cywgZWFzZS1pbi1vdXQpO1xuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgIHZpc2liaWxpdHk6dmlzaWJsZTtcbiAgICAgICAgbWF4LWhlaWdodDppbmhlcml0O1xuICAgICAgfVxuICAgICYub3BlbiB7XG4gICAgICB2aXNpYmlsaXR5OnZpc2libGU7XG4gICAgICBtYXgtaGVpZ2h0OjM1ZW07XG4gICAgfVxuICB9XG4gIC5oZWFkZXItbWFpbi1uYXZpZ2F0aW9uLm9wZW4gKyAuaGVhZGVyLXNlYXJjaC5vcGVuIHtcbiAgICBtYXJnaW4tdG9wOiR2LXJoeXRobTtcbiAgfVxufVxuXG4vLyBkbyBub3QgaGF2ZSBmaXhlZCBmdW5jdGlvbmFsaXR5IG9mIGxvZ2dlZCBpblxuLmNtcy1yZWFkeSB7XG4gIC5wcmltYXJ5IHtcbiAgICAmLmZpeGVkIHtcbiAgICAgIHBvc2l0aW9uOnJlbGF0aXZlO1xuICAgIH1cbiAgfVxufVxuIiwiLnNpdGUtZm9vdGVyIHtcbiAgdWwge1xuICAgIEBpbmNsdWRlIHBsYWluLWxpc3Q7XG4gICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG07XG4gIH1cbiAgLmNyZWRpdC1oZWFkaW5nIHtcbiAgICBmb250LXNpemU6MWVtO1xuICAgIGNvbG9yOiRjb3JuZmxvd2VyO1xuICB9XG59XG5cbi5mb290ZXItbGlua3Mge1xuICBwYWRkaW5nOjAgMCAkdi1yaHl0aG0vMiAwO1xuICBiYWNrZ3JvdW5kOnVybCgnLi4vaW1hZ2VzL2JnLXRyaWFuZ2xlLWZvb3Rlci5wbmcnKTtcbiAgYmFja2dyb3VuZC1zaXplOjExLjc1ZW0gMTEuMTI1ZW07XG4gIGNvbG9yOiRjb3JuZmxvd2VyO1xuICAmOmJlZm9yZSB7XG4gICAgZGlzcGxheTpibG9jaztcbiAgICBjb250ZW50OicnO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6dXJsKCcuLi9pbWFnZXMvYmctYW1lcmljYW4tZmxhZy5qcGcnKTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246Y2VudGVyO1xuICAgIHBhZGRpbmctYm90dG9tOjYuNSU7XG4gICAgYmFja2dyb3VuZC1zaXplOmNvdmVyO1xuICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtKjM7XG4gIH1cbiAgYSB7XG4gICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgY29sb3I6d2hpdGU7XG4gICAgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO1xuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6d2hpdGU7XG4gICAgfVxuICB9XG4gIHVsIHtcbiAgICBsaSB7XG4gICAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobS8yO1xuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiRzY3JlZW4tamItbWluICkgYW5kIChvcmllbnRhdGlvbjpwb3J0cmFpdCkge1xuICAuZm9vdGVyLWxpbmtzIHtcbiAgICAmOmJlZm9yZSB7XG4gICAgICBwYWRkaW5nLWJvdHRvbToxNSU7XG4gICAgfVxuICB9XG59XG5cbi5mb290ZXItbmF2aWdhdGlvbiB7XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgIEBpbmNsdWRlIHNwYW4oMiBmaXJzdCk7XG4gICAgbWluLWhlaWdodDoxNWVtO1xuICAgIHVsIHtcbiAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgICAgICAgLW1vei1jb2x1bW4tY291bnQ6IDI7XG4gICAgICAtd2Via2l0LWNvbHVtbi1jb3VudDogMjtcbiAgICAgICAgICAgICAgY29sdW1uLWNvdW50OiAyO1xuICAgIH1cbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICBAaW5jbHVkZSBzcGFuKDQgZmlyc3QpO1xuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgIEBpbmNsdWRlIHNwYW4oNyBmaXJzdCk7XG4gICAgdWwge1xuICAgICAgICAgLW1vei1jb2x1bW4tY291bnQ6IDM7XG4gICAgICAtd2Via2l0LWNvbHVtbi1jb3VudDogMztcbiAgICAgICAgICAgICAgY29sdW1uLWNvdW50OiAzO1xuICAgIH1cbiAgfVxufVxuLmZvb3Rlci1wcm9kdWN0aW9uLWJ5IHtcbiAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG07XG4gIC53Z2JoIHtcbiAgICBmaWxsOndoaXRlO1xuICAgIHdpZHRoOjZlbTtcbiAgICBtYXgtaGVpZ2h0OjNlbTtcbiAgfVxuICB1bCB7XG4gICAgbWFyZ2luLXRvcDokdi1yaHl0aG07XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgQGluY2x1ZGUgc3BhbigyIGxhc3QpO1xuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgIEBpbmNsdWRlIHNwYW4oNCBsYXN0KTtcbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICBAaW5jbHVkZSBzcGFuKDIuNSk7XG4gIH1cbn1cbi5mb290ZXItZnVuZGluZyB7XG4gIHVsIHtcbiAgICBsaSB7XG4gICAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobTtcbiAgICB9XG4gIH1cbiAgY29sb3I6d2hpdGU7XG4gIC8vIC5jcGIge1xuICAvLyAgICoge1xuICAvLyAgICAgZmlsbDp3aGl0ZTtcbiAgLy8gICB9XG4gIC8vICAgd2lkdGg6N2VtO1xuICAvLyAgIG1heC1oZWlnaHQ6NGVtO1xuICAvLyB9XG4gIHN2ZyB7XG4gICAgd2lkdGg6MTJlbTtcbiAgICBtYXgtaGVpZ2h0OjEyZW07XG4gICAgKiB7XG4gICAgICBmaWxsOndoaXRlO1xuICAgIH1cbiAgfVxuICBhIHtcbiAgICAvLyB3aWR0aDoxMDAlO1xuICAgIC8vIGhlaWdodDoxMDAlO1xuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgIEBpbmNsdWRlIHNwYW4oMiBsYXN0KTtcbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICBAaW5jbHVkZSBzcGFuKDQgbGFzdCk7XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgQGluY2x1ZGUgc3BhbigyLjUgbGFzdCk7XG4gIH1cbn1cbi5mb290ZXItY29weXJpZ2h0IHtcbiAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtO1xuICBzcGFuIHtcbiAgICBkaXNwbGF5OmJsb2NrO1xuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgIEBpbmNsdWRlIHNwYW4oMiBmaXJzdCk7XG4gICAgY2xlYXI6Ym90aDtcbiAgICBwYWRkaW5nLXRvcDoyLjc1dnc7XG4gICAgbWFyZ2luLWJvdHRvbTowO1xuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgIEBpbmNsdWRlIHNwYW4oNCBmaXJzdCk7XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgcGFkZGluZy10b3A6Mi45MjV2dztcbiAgICBAaW5jbHVkZSBzcGFuKDQgZmlyc3QpO1xuICB9XG59XG4uZm9vdGVyLWxvZ28tdHlwZSB7XG4gIGRpc3BsYXk6YmxvY2s7XG4gIGZvbnQtc2l6ZTo0dnc7XG4gIGxpbmUtaGVpZ2h0OjEuMjc1O1xuICBzdmcge1xuICAgIGZpbGw6JG5hdnk7XG4gICAgbWF4LWhlaWdodDogMy44NzVlbTtcbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICBAaW5jbHVkZSBzcGFuKDIgbGFzdCk7XG4gICAgdGV4dC1hbGlnbjpjZW50ZXI7XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgQGluY2x1ZGUgc3Bhbig0IGxhc3QpO1xuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgIEBpbmNsdWRlIHNwYW4oOCBsYXN0KTtcbiAgICBmb250LXNpemU6My41dnc7XG4gIH1cbn0iLCIuY29ubmVjdC1zb2NpYWwge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2ltYWdlcy9iZy10cmlhbmdsZS1uZXdzbGV0dGVyLnBuZ1wiKTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDExLjc1ZW0gMTEuMTI1ZW07XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIG1hcmdpbi1ib3R0b206ICR2LXJoeXRobSAqIDM7XG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgIGgzIHtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgIH1cbiAgICAuZW1haWwtc2lnbnVwIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiAkdi1yaHl0aG0gMDtcbiAgICAgICAgaDMge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC43NjllbTtcbiAgICAgICAgfVxuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgICAgIC5lbWFpbC1zaWdudXAtZm9ybSB7XG4gICAgICAgICAgICAubm90ZSB7XG4gICAgICAgICAgICAgICAgLy8gZmxleCBib3ggb3ZlcmlkZSBmb3Igc291cmNlIG9yZGVyIGluIGNvbm5lY3Qgc2VjdGlvblxuICAgICAgICAgICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDI7XG4gICAgICAgICAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDE7XG4gICAgICAgICAgICAgICAgb3JkZXI6IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLnZvdGUgLmhlYWRsaW5lIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAgMTAlIDAgMDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgICAgICAudm90ZS1oZWFkbGluZSB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdXJsKC4uL2ltYWdlcy90aXRsZV90aGUtdm90ZS5wbmcpIG5vLXJlcGVhdCBjZW50ZXIgY2VudGVyO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDMwMHB4O1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogNTdweDtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgICAgICAgICB0ZXh0LWluZGVudDogLTk5OTk5cHg7XG5cbiAgICAgICAgICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNTAwcHgpIHtcbiAgICAgICAgICAgICAgICAgICAgbWF4LXdpZHRoOiA4MCU7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuaGVhZGxpbmUge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBwYWRkaW5nOiAwIDEwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICAgICAgQGluY2x1ZGUgc3BhbigyIGZpcnN0KTtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIC5lbWFpbC1zaWdudXAtZm9ybSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDgwJTtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHNwYW4oNCBmaXJzdCk7XG4gICAgICAgIH1cbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBzcGFuKDcgZmlyc3QpO1xuXG4gICAgICAgICAgICAmLnZvdGUgaDMge1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBoMyB7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuZW1haWwtc2lnbnVwLWZvcm0ge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgLW1zLWZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMTAlO1xuICAgICAgICAgICAgICAgIC5lbWFpbC1maWVsZCB7XG4gICAgICAgICAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMSU7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogNDUlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAuemlwLWNvZGUtZmllbGQge1xuICAgICAgICAgICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMzAlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBidXR0b25bdHlwZT1cInN1Ym1pdFwiXSB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAyNCU7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLm5vdGUge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogNzUlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1qYi1taW4pIHtcbiAgICAgICAgICAgIC5lbWFpbC1zaWdudXAtZm9ybSB7XG4gICAgICAgICAgICAgICAgYnV0dG9uW3R5cGU9XCJzdWJtaXRcIl0ge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTklO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAuZm9vdGVyLXNvY2lhbC1saW5rcyB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogJHYtcmh5dGhtICogMiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiAkbmF2eTtcbiAgICAgICAgd2lkdGg6IDExMCU7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAtNSU7XG4gICAgICAgIC5zb2NpYWwtbGlzdCB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgd2lkdGg6IDcwJTtcbiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDNlbTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDNlbTtcbiAgICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC5iYWNrZ3JvdW5kIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiAkbXVzdGFyZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIC5iYWNrZ3JvdW5kIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsbDogJHllbGxvdztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLmhhc2h0YWcge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBzcGFuKDIgbGFzdCk7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDUuNjI1JTtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBpbmhlcml0O1xuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgd2lkdGg6IGNhbGMoNS4yNjMxNiUgKiAyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTEuMjUlO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRuYXZ5O1xuICAgICAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgICAgICBsZWZ0OiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLnNvY2lhbC1saXN0IHtcbiAgICAgICAgICAgICAgICB3aWR0aDogOTAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgQGluY2x1ZGUgc3Bhbig0IGxhc3QpO1xuICAgICAgICAgICAgLnNvY2lhbC1saXN0IHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDUuMjYzMTYlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICAgICAgQGluY2x1ZGUgc3Bhbig1IGxhc3QpO1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDUwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogNCU7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tamItbWluKSB7XG4gICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICAvLyBtYWdpY1xuICAgICAgICAgICAgICAgIHdpZHRoOiBjYWxjKCgxMDB2dyAtIDE0MDBweCkgLyAyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAuZ3JpZCB7XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgICAgICAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvLyBubyBqcyBhZCBibG9jayBzaG93IG5vdGhpbmdcbi5hZC1ibG9jayB7XG4gIG1heC1oZWlnaHQ6MDtcbiAgcGFkZGluZzowO1xuICB2aXNpYmlsaXR5OmhpZGRlbjtcbiAgbGluZS1oZWlnaHQ6MDtcbn1cbiBcbi5qcyB7XG4gIC5hZC1ibG9jayB7XG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbihhbGwsIC4zNXMsIGVhc2UtaW4tb3V0KTtcbiAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICB0ZXh0LWFsaWduOmNlbnRlcjtcbiAgICAmLm9wZW4uYWQtc2lkZS1pbnRlcmlvciB7XG4gICAgICAmOmJlZm9yZSwgJjphZnRlciB7XG4gICAgICAgIGJhY2tncm91bmQ6bm9uZTtcbiAgICAgIH1cbiAgICB9XG4gICAgJi5vcGVuIHtcbiAgICAgIHBhZGRpbmc6JHYtcmh5dGhtIDAgJHYtcmh5dGhtKjI7XG4gICAgICBtYXgtaGVpZ2h0OjI1ZW07XG4gICAgICB2aXNpYmlsaXR5OnZpc2libGU7XG4gICAgICB6LWluZGV4OmluaGVyaXQ7XG4gICAgICBsaW5lLWhlaWdodDppbmhlcml0O1xuICAgICAgLmFkIHtcbiAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICB9XG4gICAgICAmOmJlZm9yZSwgJjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6Jyc7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaGVpZ2h0OjEwMCU7XG4gICAgICAgIHdpZHRoOjEwMCU7XG4gICAgICAgIHRvcDowO1xuICAgICAgICBsZWZ0OjA7XG4gICAgICB9XG4gICAgICAmOmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQ6dXJsKCcuLi9pbWFnZXMvYmctZGVjby1jaXJjbGUucG5nJyk7XG4gICAgICAgIGJhY2tncm91bmQtc2l6ZToxOGVtIDE4ZW07XG4gICAgICAgIHotaW5kZXg6LTI7XG4gICAgICB9XG4gICAgICAmOmFmdGVyIHtcbiAgICAgICAgei1pbmRleDotMTtcbiAgICAgICAgYmFja2dyb3VuZDpyZ2JhKCRvdmVybGF5LCAuNSk7XG5cbiAgICAgIH1cbiAgICAgICYuZm9vdGVyLWFkIHtcbiAgICAgICAgcGFkZGluZy10b3A6JHYtcmh5dGhtKjEuNTtcbiAgICAgICAgcGFkZGluZy1ib3R0b206JHYtcmh5dGhtKjEuNzU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206NC41ZW07XG4gICAgICB9XG4gICAgfVxuICAgIC5hZCB7XG4gICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgIG1hcmdpbjowIGF1dG87XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgIGRpc3BsYXk6bm9uZTtcbiAgICAgIGRpdiB7XG4gICAgICAgIGNsZWFyOmJvdGg7ICBcbiAgICAgIH1cbiAgICAgIHNwYW4sIGEge1xuICAgICAgICBmb250LXNpemU6Ljc1ZW07XG4gICAgICAgIGZsb2F0OmxlZnQ7XG4gICAgICB9XG4gICAgICBhIHtcbiAgICAgICAgZmxvYXQ6cmlnaHQ7XG4gICAgICAgIGNvbG9yOiRibHVlO1xuICAgICAgfSBcbiAgICAgIGJ1dHRvbiB7XG4gICAgICAgIEBpbmNsdWRlIHBsYWluLWJ1dHRvbjtcbiAgICAgICAgYmFja2dyb3VuZDokZ3JheTtcbiAgICAgICAgd2lkdGg6MS41ZW07XG4gICAgICAgIGhlaWdodDoxLjVlbTtcbiAgICAgICAgcG9zaXRpb246YWJzb2x1dGU7XG4gICAgICAgIHRvcDoxLjI1ZW07XG4gICAgICAgIHJpZ2h0OjA7XG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgQGluY2x1ZGUgY2VudGVyO1xuICAgICAgICAgIHdpZHRoOjc1JTtcbiAgICAgICAgICBoZWlnaHQ6NzUlO1xuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgIHdpZHRoOjJlbTtcbiAgICAgICAgICBoZWlnaHQ6MmVtO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi5zaG9wLWFkIHtcbiAgYmFja2dyb3VuZDp3aGl0ZTtcbiAgdGV4dC1hbGlnbjpjZW50ZXI7XG4gIHBhZGRpbmctdG9wOiR2LXJoeXRobSozO1xuICBwYWRkaW5nLWJvdHRvbTokdi1yaHl0aG0qMztcbiAgYSAge1xuICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgIHBvc2l0aW9uOnJlbGF0aXZlO1xuICAgICYubW9iaWxlIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6dXJsKCcuLi9pbWFnZXMvYW1leF9zaG9wX21vYmlsZS5qcGcnKTtcbiAgICAgIGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtcbiAgICAgIHdpZHRoOjIwZW07XG4gICAgICBoZWlnaHQ6Ni4yNWVtO1xuICAgIH1cbiAgICAmLmRlc2t0b3Age1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTp1cmwoJy4uL2ltYWdlcy9hbWV4X3Nob3BfZGVza3RvcC5qcGcnKTtcbiAgICAgIGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtcbiAgICAgIHdpZHRoOjc1ZW07XG4gICAgICBoZWlnaHQ6OS4zNzVlbTtcbiAgICB9ICAgIFxuICB9XG59XG5cbi8vIGFkanVzdCBtYXJnaW4gZm9yIHNob3AgYWQgaWYgYm90dG9tIGJhbm5lciBkb2VzIG5vdCBleGlzdFxuLmNvbm5lY3Qtc29jaWFsIHtcbiAgJiArIC5zaG9wLWFkICB7XG4gICAgcGFkZGluZy10b3A6MDtcbiAgfVxufVxuXG4vLyBsYXlvdXQgZm9yIFwic2lkZWJhciBhZFwiXG4uYWQtaW50ZXJpb3ItY29udGVudCB7XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgIEBpbmNsdWRlIHNwYW4oNSBmaXJzdCk7XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgQGluY2x1ZGUgc3Bhbig4IGZpcnN0KTtcbiAgfVxufVxuXG4uYWQtc2lkZS1pbnRlcmlvciB7XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgIG1hcmdpbi10b3A6JHYtcmh5dGhtO1xuICAgIEBpbmNsdWRlIHNwYW4oMyBsYXN0KTtcbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICBAaW5jbHVkZSBzcGFuKDQgbGFzdCk7XG4gIH1cbn0iLCIvLyBtb3ZlIHRoZXNlcyEhIVxuLy8gZGVsZXRlIHRoZXNlICEhXG5cbi8vIGNvbGxlY3Rpb25zIGN1cnJlbnRseSBoZWF2aWx5IGJvcnJvd3MgZnJvbSBvdGhlciB0aGluZ3Ncbi5jb2xsZWN0aW9uLWRldGFpbC1oZXJvLWl0ZW17XG4gIG1hcmdpbi1ib3R0b206ICR2LXJoeXRobSoyO1xuICBpbWcge1xuICAgIHdpZHRoOjEwMCU7XG4gIH1cbn1cblxuXG5cblxuIiwiOi13ZWJraXQtZnVsbC1zY3JlZW4tYW5jZXN0b3I6bm90KGlmcmFtZSl7XG4gIC5wYnMtY2xlYW5zbGF0ZSwgLnNpdGUtaGVhZGVyLCAuYWQtYmxvY2ssIC5jbXMsIC50ZWFzZXItaXRlbSwgLnNpdGUtZm9vdGVyLCBcbiAgLmZpbG0tc3ViLW5hdiwgLldhbGxvcC1idXR0b25QcmV2aW91cywgLldhbGxvcC1idXR0b25OZXh0LCAuYWNjb3JkaW9uLXRvZ2dsZSwgLnRhYi1wYW5lbCwgLmZ1bGwtc2NyZWVuIHtcbiAgICBkaXNwbGF5Om5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuYm9keSB7XG4gIG92ZXJmbG93LXg6aGlkZGVuO1xuICAvLyBzdGF0ZSBydWxlcyBmb3IgYm9keSB3aGVuIG1vZGFsIGlzIG9wZW5cbiAgJi5maXhlZCB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGxlZnQ6MDtcbiAgICB0b3A6MDtcbiAgICB3aWR0aDoxMDAlO1xuICB9XG59XG5cbmlmcmFtZSB7XG4gIGJhY2tncm91bmQ6JG1lZEdyYXk7XG59XG5cbmltZyB7XG4gIG1heC13aWR0aDoxMDAlO1xufVxuXG5hIHtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbihjb2xvciwgLjNzLCBlYXNlLWluLW91dCk7XG4gIGNvbG9yOiRyZWQ7XG4gIHRleHQtZGVjb3JhdGlvbjpub25lO1xuICBmb250LXdlaWdodDo3MDA7XG4gICY6aG92ZXIge1xuICAgIGNvbG9yOiRjcmltc29uO1xuICAgIHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7XG4gIH1cbn1cblxuLmNhbGwtdG8tYWN0aW9uIHtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbihhbGwsIC41cywgZWFzZS1pbi1vdXQpO1xuICBiYWNrZ3JvdW5kOiRyZWQ7XG4gIGNvbG9yOndoaXRlO1xuICBib3JkZXItcmFkaXVzOi40Mzc1ZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtcbiAgZm9udC1zaXplOjEuMTI1ZW07XG4gIHBhZGRpbmc6MWVtIDMuNWVtO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRvcDogMDtcbiAgJjpob3ZlciB7XG4gICAgY29sb3I6d2hpdGU7XG4gICAgYmFja2dyb3VuZDpkYXJrZW4oJHJlZCwgNSUpO1xuICAgIHRleHQtZGVjb3JhdGlvbjpub25lO1xuICB9XG4gICY6YWN0aXZlIHtcbiAgICB0b3A6LjI3Nzc3Nzc3NzhlbTtcbiAgfVxufVxuXG5maWd1cmUge1xuICBtYXJnaW46MDtcbn1cblxuZmlnY2FwdGlvbiwgLmNhcHRpb24ge1xuICBmb250LXNpemU6Ljg1ZW07XG4gIGNvbG9yOiRtZWRHcmF5O1xuICBmb250LXN0eWxlOml0YWxpYztcbiAgcCB7XG4gICAgbWFyZ2luOjA7XG4gIH1cbn1cblxuLmNhcHRpb24ge1xuICBoNCwgLmRlbHRhIHtcbiAgICBtYXJnaW46LjI1ZW0gMDtcbiAgICBmb250LXN0eWxlOm5vcm1hbDtcbiAgfVxufVxuXG5xIHtcbiAgZGlzcGxheTpibG9jaztcbiAgY29sb3I6JG1lZEdyYXk7XG4gIGZvbnQtc2l6ZToxLjE1ZW07XG4gIG1hcmdpbjokdi1yaHl0aG0gNSU7XG4gIHBvc2l0aW9uOnJlbGF0aXZlO1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDonJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgaGVpZ2h0OjExMCU7XG4gICAgd2lkdGg6LjVlbTtcbiAgICBiYWNrZ3JvdW5kOiRtZWRHcmF5O1xuICAgIGxlZnQ6LTEuNWVtO1xuICAgIEBpbmNsdWRlIGNlbnRlcihmYWxzZSwgdHJ1ZSk7XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgbWFyZ2luLWxlZnQ6MTAlO1xuICAgIG1hcmdpbi1yaWdodDoxMCU7XG4gIH1cbn1cblxuY2l0ZSB7XG4gIGRpc3BsYXk6YmxvY2s7XG4gIGZvbnQtc2l6ZToxLjI1ZW07XG4gIG1hcmdpbjokdi1yaHl0aG0gNSU7XG4gIGNvbG9yOiRtZWRHcmF5O1xuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICBtYXJnaW4tbGVmdDoxMCU7XG4gICAgbWFyZ2luLXJpZ2h0OjEwJTtcbiAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICAmOmJlZm9yZSB7XG4gICAgICBjb250ZW50OicnO1xuICAgICAgcG9zaXRpb246YWJzb2x1dGU7XG4gICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgIHRvcDowO1xuICAgICAgbGVmdDotMy41ZW07XG4gICAgICBiYWNrZ3JvdW5kOnVybCgnLi4vaW1hZ2VzL3F1b3RlLnN2ZycpIG5vLXJlcGVhdDtcbiAgICAgIGJhY2tncm91bmQtc2l6ZToyLjVlbTtcbiAgICAgIHdpZHRoOjIuNWVtO1xuICAgICAgaGVpZ2h0OjIuNWVtO1xuICAgIH1cbiAgfVxufVxuXG4uanVtcC1saW5rIHtcbiAgJjpiZWZvcmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgaGVpZ2h0OiA2ZW07XG4gICAgbWFyZ2luOi02ZW0gMCAwO1xuICB9XG4gICYuc2l0ZS1mb290ZXIge1xuICAgICY6YmVmb3JlIHtcbiAgICAgIGhlaWdodDogOWVtO1xuICAgICAgbWFyZ2luOi05ZW0gMCAwO1xuICAgIH1cbiAgfVxufVxuXG4vLyBjb3ZlIHN0dWZmXG4uY292ZS13cmFwcGVyIHtcbiAgbWFyZ2luLWJvdHRvbToxLjVlbTtcbn1cblxuLmNvdmUtY29udGFpbmVyIHtcbiAgJjpiZWZvcmUge1xuICAgIEBpbmNsdWRlIGNlbnRlcjtcbiAgICB6LWluZGV4OiAzO1xuICAgIGNvbG9yOndoaXRlO1xuICAgIGNvbnRlbnQ6J1ZpZGVvIFJlcXVpcmVzIEphdmFzY3JpcHQnXG4gIH1cbn1cblxuLmpzIHtcbiAgLmNvdmUtY29udGFpbmVyIHtcbiAgICAmOmJlZm9yZSB7XG4gICAgICBjb250ZW50Om5vbmVcbiAgICB9XG4gIH1cbn1cblxuLmNvdmUtY29udGFpbmVyIHtcbiAgcG9zaXRpb246cmVsYXRpdmU7XG4gIGhlaWdodDogMDtcbiAgcGFkZGluZy1ib3R0b206NTYuMjUlO1xuICBiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O1xuICBAaW5jbHVkZSBhbmltYXRlZCgxcyk7XG4gIEBpbmNsdWRlIGZhZGVJbjtcbiAgaWZyYW1lIHtcbiAgICBiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgei1pbmRleDoyO1xuICB9XG59XG5cbi5ncmlkIHtcbiAgQGluY2x1ZGUgZ3JpZDtcbn1cblxuLmdyaWQuZnVsbCB7XG4gIG1heC13aWR0aDoxMDAlO1xuICBwYWRkaW5nOjA7XG59XG5cbi5wbHVnaW4taXRlbS1ibG9jayB7XG4gIEBpbmNsdWRlIGNsZWFyZml4O1xufVxuXG4vLyBnZW5lcmljIHNwYWNpbmcgZm9yIHN0YW5kYXJkIHBhZ2UgIFxuLnBhZ2Uge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgbWFyZ2luLXRvcDokdi1yaHl0aG0qMjtcbiAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0qMjtcbn1cblxuLnJpZ2h0LWFycm93IHtcbiAgZmlsbDp3aGl0ZTtcbiAgbWF4LXdpZHRoOjJlbTtcbiAgbWF4LWhlaWdodDoyZW07XG59XG5cbi5wYXNzcG9ydC1pY29uIHtcbiAgdmVydGljYWwtYWxpZ246bWlkZGxlO1xuICBtYXJnaW4tdG9wOi0uMTVlbTtcbiAgbWF4LXdpZHRoOjEuMjVlbTtcbiAgbWF4LWhlaWdodDoxLjI1ZW07XG59XG5cbi5yZWxhdGVkLWZlYXR1cmUtbGlzdCB7XG4gIGNsZWFyOmJvdGg7XG4gIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtKjI7XG4gIG1hcmdpbi10b3A6JHYtcmh5dGhtKjI7XG59Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QStEQUEsNEVBQTRFO0FBRTVFOzs7R0FHRztBQUVILEFBQUEsSUFBSSxDQUFDO0VBQ0gsV0FBVyxFQUFFLFVBQVU7RUFBRSxPQUFPO0VBQ2hDLG9CQUFvQixFQUFFLElBQUk7RUFBRSxPQUFPO0VBQ25DLHdCQUF3QixFQUFFLElBQUk7RUFBRSxPQUFPO0NBQ3hDOztBQUdELHlGQUF5RjtBQUN6RixBQUFBLElBQUksQ0FBQztFQUNILFVBQVUsRUFBRSxVQUFVO0NBQ3ZCOztBQUNELEFBQUEsQ0FBQyxFQUFFLENBQUMsQUFBQSxPQUFPLEVBQUUsQ0FBQyxBQUFBLE1BQU0sQ0FBQztFQUNuQixVQUFVLEVBQUUsT0FBTztDQUNwQjs7QUFHRDs7R0FFRztBQUVILEFBQUEsSUFBSSxDQUFDO0VBQ0gsTUFBTSxFQUFFLENBQUM7Q0FDVjs7QUFFRDtnRkFDZ0Y7QUFFaEY7Ozs7R0FJRztBQUVILEFBQUEsT0FBTztBQUNQLEtBQUs7QUFDTCxPQUFPO0FBQ1AsVUFBVTtBQUNWLE1BQU07QUFDTixNQUFNO0FBQ04sTUFBTTtBQUNOLElBQUk7QUFDSixJQUFJO0FBQ0osR0FBRztBQUNILE9BQU87QUFDUCxPQUFPLENBQUM7RUFBRSxPQUFPO0VBQ2YsT0FBTyxFQUFFLEtBQUs7Q0FDZjs7QUFFRDs7R0FFRztBQUVILEFBQUEsS0FBSztBQUNMLE1BQU07QUFDTixRQUFRO0FBQ1IsS0FBSyxDQUFDO0VBQ0osT0FBTyxFQUFFLFlBQVk7Q0FDdEI7O0FBRUQ7O0dBRUc7QUFFSCxBQUFBLEtBQUssQUFBQSxJQUFLLEVBQUEsQUFBQSxRQUFDLEFBQUEsR0FBVztFQUNwQixPQUFPLEVBQUUsSUFBSTtFQUNiLE1BQU0s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 */
