@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. Correct the line height in all browsers.
 * 3. Prevent adjustments of font size after orientation changes in IE and iOS.
 */
html {
  font-family: sans-serif;
  /* 1 */
  line-height: 1.15;
  /* 2 */
  -ms-text-size-adjust: 100%;
  /* 3 */
  -webkit-text-size-adjust: 100%;
  /* 3 */
}

/**
 * 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,
optgroup,
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 */
}

@font-face {
  font-family: "SFGZSansBlack";
  font-weight: 800;
  font-style: normal;
  src: url("../Fonts/Helvetica/2B6D49_0_0.eot");
  src: url("../Fonts/Helvetica/2B6D49_0_0.eot?#iefix") format("embedded-opentype"), url("../Fonts/Helvetica/2B6D49_0_0.woff") format("woff"), url("../Fonts/Helvetica/2B6D49_0_0.ttf") format("truetype");
}

/* ICONS */
html {
  font-size: 17px;
  line-height: 1.4;
  font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
  font-weight: normal;
  font-style: normal;
  color: #0f0f0f;
}

@media screen and (max-width: 1024px) {
  html {
    font-size: 13.6px;
  }
}

a {
  color: #0f0f0f;
  text-decoration: none;
}

a:hover {
  color: #cb2e26;
}

.random01 a:hover {
  color: #2d5199;
}

.random02 a:hover {
  color: #cb2e26;
}

.random03 a:hover {
  color: #50afa7;
}

.random04 a:hover {
  color: #d53064;
}

.random05 a:hover {
  color: #2d5199;
}

.random06 a:hover {
  color: #cb2e26;
}

.random07 a:hover {
  color: #50afa7;
}

.random08 a:hover {
  color: #d53064;
}

.random09 a:hover {
  color: #2d5199;
}

.random10 a:hover {
  color: #cb2e26;
}

.random11 a:hover {
  color: #50afa7;
}

.random12 a:hover {
  color: #d53064;
}

.random13 a:hover {
  color: #2d5199;
}

.random14 a:hover {
  color: #cb2e26;
}

.random15 a:hover {
  color: #50afa7;
}

.random16 a:hover {
  color: #d53064;
}

.random17 a:hover {
  color: #2d5199;
}

.random18 a:hover {
  color: #cb2e26;
}

.random19 a:hover {
  color: #50afa7;
}

.random20 a:hover {
  color: #d53064;
}

b, strong, span.strong {
  font-family: SFGZSansBlack, sans-serif;
  font-weight: 800;
}

ul {
  padding-left: 0;
  margin-top: 0.4em;
  margin-bottom: 0.4em;
}

p {
  font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
  font-weight: normal;
  font-style: normal;
}

h1, h3 {
  font-family: SFGZSansBlack, sans-serif;
  font-weight: 800;
}

p {
  font-size: 1rem;
  margin-top: 0.7em;
  margin-bottom: 0.8em;
}

h1,
h2,
h3 {
  margin-top: 0.25em;
  margin-bottom: 0.1rem;
  line-height: 1.1;
}

h1 {
  font-size: 2rem;
}

h2 {
  font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
  font-weight: normal;
  font-style: normal;
  font-size: 2rem;
}

h3 {
  margin-top: 1em;
  font-size: 1rem;
}

h1 + h2 {
  margin-top: 0;
}

h3 + p,
h3 + ul {
  margin-top: 0;
}

h1 + p,
h2 + p,
h2 + h3 {
  margin-top: 2.5rem;
}

hr {
  height: 0.15rem;
  background-color: white;
  border: none;
  border-bottom: black solid 0.15rem;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.7em;
}

h4, h5, h6, h7, h8 {
  color: lime;
}

table {
  border-collapse: collapse;
  width: 100%;
  margin: 0.4em 0;
}

table th,
table th p {
  font-family: SFGZSansBlack, sans-serif;
  font-weight: 800;
}

table th p,
table tr p {
  margin: 0;
  padding: 0;
}

table tr:first-child {
  border-top-width: 0.1rem;
  border-top-style: solid;
  border-top-color: #0f0f0f;
}

table tr {
  border-bottom-width: 0.1rem;
  border-bottom-style: solid;
  border-bottom-color: #0f0f0f;
}

.widthError {
  position: fixed;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  width: 100;
  height: 100%;
  background-color: red;
}

@media (min-width: 1130px) {
  .widthError {
    display: none;
  }
}

input,
select,
textarea,
button {
  box-sizing: border-box;
  width: 100%;
  font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
  font-weight: normal;
  font-style: normal;
}

button {
  box-shadow: none;
  background-color: #e0e0e0;
  border-color: #c6c6c6;
  border-style: solid;
  border-width: 0.1rem;
  font-family: SFGZSansBlack, sans-serif;
  font-weight: 800;
  cursor: pointer;
}

button:hover {
  background-color: #c6c6c6;
}

.header {
  position: relative;
  margin: 0 30px;
  z-index: 4;
  max-width: 1130px;
}

@media screen and (max-width: 768px) {
  .header {
    margin-left: 0;
    margin-right: 0;
  }
}

.neos-backend .header {
  display: none;
}

.header-lion {
  width: 103px;
  height: 138px;
  position: fixed;
  left: 30px;
  top: 20px;
  z-index: 999;
}

.header-lion img {
  width: 100%;
  height: 100%;
}

.header-logo {
  display: block;
  width: 27px;
  height: 27px;
  position: fixed;
  top: 75px;
  left: 143px;
  z-index: 5;
  transform: translateZ(0);
}

@media screen and (max-width: 768px) {
  .header-logo {
    display: none;
  }
}

.header-logo img {
  width: 100%;
  height: 100%;
}

.header-logo img.header-logo-desktop {
  display: inline;
}

@media screen and (max-width: 768px) {
  .header-lion, .header-logo {
    display: none;
  }
}

.header-navigation-wrap {
  top: auto;
  left: auto;
  height: auto;
  margin: 70px 0 0 148px;
  position: static;
}

@media screen and (max-width: 768px) {
  .header-navigation-wrap {
    margin-left: 0;
    margin-right: 0;
  }
}

.neos-backend .header-navigation-wrap {
  margin-left: 1rem;
}

.header-navigation-wrap .meta, .header-navigation-wrap .menu {
  font-family: SFGZSansBlack, sans-serif;
  font-weight: 800;
}

.header-navigation-wrap .meta:after, .header-navigation-wrap .menu:after {
  content: "";
  display: table;
  clear: both;
}

.header-navigation-wrap .meta ul, .header-navigation-wrap .menu ul {
  list-style: none;
  margin: 0;
}

@media screen and (min-width: 1024px) {
  .header-navigation-wrap .meta ul, .header-navigation-wrap .menu ul {
    padding: 0;
  }
}

.header-navigation-wrap .meta li, .header-navigation-wrap .menu li {
  margin: 0 0.75em 0 0;
}

.header-navigation-wrap .meta li.current a,
.header-navigation-wrap .meta li.active > a, .header-navigation-wrap .menu li.current a,
.header-navigation-wrap .menu li.active > a {
  color: #8f8f8f;
}

@media screen and (max-width: 768px) {
  .header-navigation-wrap .meta li.normal > a, .header-navigation-wrap .menu li.normal > a {
    color: black;
  }
}

@media screen and (min-width: 768px) {
  .header-navigation-wrap .meta li, .header-navigation-wrap .menu li {
    float: left;
  }
}

.header-navigation-wrap .meta {
  font-size: 1.15rem;
  top: -1.5em;
  left: auto;
  margin-left: 0.15em;
  position: absolute;
}

.header-navigation-wrap .header-name {
  margin: 0;
  padding-bottom: 0;
  font-size: 2.3rem;
}

.header-navigation-wrap .menu1 {
  font-size: 1.65rem;
}

.header-navigation-wrap .menu2 {
  font-size: 1.15rem;
  padding-top: 0.2rem;
  padding-bottom: 1.6rem;
  line-height: 1.2;
}

.header-navigation-wrap .menu2 ul li {
  margin: 0;
}

.header-navigation-wrap .menu2 ul li:after {
  content: "–";
  display: inline-block;
  margin-right: 0.35em;
  padding-right: 0.1em;
  padding-left: 0.1em;
}

.header-navigation-wrap .menu2 ul li:last-child:after {
  content: "";
}

@media screen and (max-width: 768px) {
  .header-navigation-wrap .meta,
  .header-navigation-wrap .menu1,
  .header-navigation-wrap .menu2,
  .header-navigation-wrap .header-name {
    display: none;
  }
}

.content {
  box-sizing: border-box;
  width: 100%;
  max-width: 1130px;
  padding-left: 180px;
}

@media screen and (max-width: 768px) {
  .content {
    padding: 2%;
  }
}

.neos-backend .content {
  padding-left: 1rem;
  padding-right: 1rem;
  padding-top: 2rem;
}

.content a {
  padding-bottom: 0.05em;
  border-bottom: black solid 0.15em;
}

.content a.noLine {
  padding-bottom: 0;
  border-bottom: none;
}

.content .doUderline {
  padding-bottom: 0;
  border-bottom: none;
}

.content a.noUnderline,
.content h1 a,
.content h2 a {
  padding-bottom: 0;
  border-bottom: none;
}

.content a[href^="http"]:before {
  content: "\2060";
  padding-left: 1em;
  height: 1em;
  background-size: 60%;
  background-image: url("../Assets/Images/icon_external-link.svg");
  background-repeat: no-repeat;
  background-position: center center;
}

.content ul {
  list-style: none;
}

.content li {
  position: relative;
  padding-left: 0.8em;
}

.content li:before {
  content: "– ";
  position: absolute;
  left: 0;
  top: 0;
}

.content-inner {
  max-width: 100%;
  margin-left: auto;
  margin-right: auto;
}

.content-inner:after {
  content: " ";
  display: block;
  clear: both;
}

.content-inner .content_main {
  margin-bottom: 2rem;
}

@media screen and (min-width: 768px) {
  .content-inner .content_main {
    width: 74.28571%;
    float: left;
    margin-right: 2.85714%;
  }
  .content-inner .content_extra {
    width: 22.85714%;
    float: right;
    margin-right: 0;
  }
}

.wide .content-inner .content_main {
  width: 100%;
  float: left;
  margin-left: 0;
  margin-right: 0;
}

.course .content-inner .content_main {
  width: 100%;
  float: left;
  margin-left: 0;
  margin-right: 0;
}

.course .content-inner .content_main .course-root {
  max-width: 100%;
  margin-left: auto;
  margin-right: auto;
}

.course .content-inner .content_main .course-root:after {
  content: " ";
  display: block;
  clear: both;
}

@media screen and (min-width: 768px) {
  .course .content-inner .content_main .course-root .course-course {
    width: 74.28571%;
    float: left;
    margin-right: 2.85714%;
  }
  .course .content-inner .content_main .course-root .course-execution {
    width: 22.85714%;
    float: right;
    margin-right: 0;
    word-wrap: break-word;
  }
}

.wide .content-inner .content_extra,
.course .content-inner .content_extra {
  display: none;
}

.content-inner .menu3 {
  padding-bottom: 3rem;
  word-wrap: break-word;
  padding-left: 0.4em;
  padding-right: 0.4em;
}

.content-inner .menu3 ul {
  margin: 0;
}

.content-inner .menu3 li {
  float: none;
}

.neos-backend .content-inner {
  width: 100%;
}

.signalwerk-sfgz-onecolumn.columns-mobileonly {
  display: none;
}

@media screen and (max-width: 768px) {
  .signalwerk-sfgz-onecolumn.columns-mobileonly {
    display: block;
  }
}

.neos-backend .signalwerk-sfgz-onecolumn.columns-mobileonly {
  display: block;
}

.column {
  max-width: 100%;
  margin-left: auto;
  margin-right: auto;
}

.column:after {
  content: " ";
  display: block;
  clear: both;
}

.columns-masonry .news-item__gutter {
  width: 2.85714%;
}

.columns-masonry .news-item__sizer,
.columns-masonry .news-item {
  width: 48.57143%;
}

@media screen and (max-width: 768px) {
  .columns-masonry .news-item__sizer,
  .columns-masonry .news-item {
    width: 100%;
  }
}

.news-item {
  position: relative;
  padding-bottom: 1rem;
  font-size: 1.15rem;
  transition: opacity 300ms;
}

.news-item p {
  font-size: 1.15rem;
}

.news-item a {
  color: black;
}

.news-item a h1, .news-item a h2 {
  border-bottom: transparent solid 0.1em;
  transition: border-bottom 400ms ease;
  padding-top: 0.1em;
  line-height: 1.1;
  padding-bottom: 0em;
  display: inline;
  position: relative;
}

@media screen and (max-width: 768px) {
  .news-item a h1, .news-item a h2 {
    border-bottom: black solid 0.1em;
  }
}

.news-item a h1:after, .news-item a h2:after {
  clear: both;
  display: block;
  content: "";
  width: 100%;
}

.news-item a:hover h1, .news-item a:hover h2 {
  border-bottom: #cb2e26 solid 0.1em;
  color: #cb2e26;
}

.random01 .news-item a:hover h1, .random01 .news-item a:hover h2 {
  color: #2d5199;
  border-bottom-color: #2d5199;
}

.random02 .news-item a:hover h1, .random02 .news-item a:hover h2 {
  color: #cb2e26;
  border-bottom-color: #cb2e26;
}

.random03 .news-item a:hover h1, .random03 .news-item a:hover h2 {
  color: #50afa7;
  border-bottom-color: #50afa7;
}

.random04 .news-item a:hover h1, .random04 .news-item a:hover h2 {
  color: #d53064;
  border-bottom-color: #d53064;
}

.random05 .news-item a:hover h1, .random05 .news-item a:hover h2 {
  color: #2d5199;
  border-bottom-color: #2d5199;
}

.random06 .news-item a:hover h1, .random06 .news-item a:hover h2 {
  color: #cb2e26;
  border-bottom-color: #cb2e26;
}

.random07 .news-item a:hover h1, .random07 .news-item a:hover h2 {
  color: #50afa7;
  border-bottom-color: #50afa7;
}

.random08 .news-item a:hover h1, .random08 .news-item a:hover h2 {
  color: #d53064;
  border-bottom-color: #d53064;
}

.random09 .news-item a:hover h1, .random09 .news-item a:hover h2 {
  color: #2d5199;
  border-bottom-color: #2d5199;
}

.random10 .news-item a:hover h1, .random10 .news-item a:hover h2 {
  color: #cb2e26;
  border-bottom-color: #cb2e26;
}

.random11 .news-item a:hover h1, .random11 .news-item a:hover h2 {
  color: #50afa7;
  border-bottom-color: #50afa7;
}

.random12 .news-item a:hover h1, .random12 .news-item a:hover h2 {
  color: #d53064;
  border-bottom-color: #d53064;
}

.random13 .news-item a:hover h1, .random13 .news-item a:hover h2 {
  color: #2d5199;
  border-bottom-color: #2d5199;
}

.random14 .news-item a:hover h1, .random14 .news-item a:hover h2 {
  color: #cb2e26;
  border-bottom-color: #cb2e26;
}

.random15 .news-item a:hover h1, .random15 .news-item a:hover h2 {
  color: #50afa7;
  border-bottom-color: #50afa7;
}

.random16 .news-item a:hover h1, .random16 .news-item a:hover h2 {
  color: #d53064;
  border-bottom-color: #d53064;
}

.random17 .news-item a:hover h1, .random17 .news-item a:hover h2 {
  color: #2d5199;
  border-bottom-color: #2d5199;
}

.random18 .news-item a:hover h1, .random18 .news-item a:hover h2 {
  color: #cb2e26;
  border-bottom-color: #cb2e26;
}

.random19 .news-item a:hover h1, .random19 .news-item a:hover h2 {
  color: #50afa7;
  border-bottom-color: #50afa7;
}

.random20 .news-item a:hover h1, .random20 .news-item a:hover h2 {
  color: #d53064;
  border-bottom-color: #d53064;
}

.news-item a:hover .teaser-image {
  opacity: 0.65;
}

.news-item a[href^="http"]:before {
  display: none;
}

.news-item--image-loaded {
  opacity: 1;
}

.news-item__date {
  font-family: SFGZSansBlack, sans-serif;
  font-weight: 800;
  margin-top: 0;
}

.news-item__text {
  padding-top: 0.5rem;
}

.news-item__text p {
  margin-top: 0;
}

.news-item .teaser-image {
  position: relative;
}

.news-item .teaser-image:after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-size: contain;
  background-repeat: no-repeat;
  background-position: left bottom;
}

.news-item .teaser-image.background01:after {
  background-image: url("../Assets/Images/logo/generated/small/background01_s.svg");
}

.news-item .teaser-image.background02:after {
  background-image: url("../Assets/Images/logo/generated/small/background02_s.svg");
}

.news-item .teaser-image.background03:after {
  background-image: url("../Assets/Images/logo/generated/small/background03_s.svg");
}

.news-item .teaser-image.background04:after {
  background-image: url("../Assets/Images/logo/generated/small/background04_s.svg");
}

.news-item .teaser-image.background05:after {
  background-image: url("../Assets/Images/logo/generated/small/background05_s.svg");
}

.news-item .teaser-image.background06:after {
  background-image: url("../Assets/Images/logo/generated/small/background06_s.svg");
}

.news-item .teaser-image.background07:after {
  background-image: url("../Assets/Images/logo/generated/small/background07_s.svg");
}

.news-item .teaser-image.background08:after {
  background-image: url("../Assets/Images/logo/generated/small/background08_s.svg");
}

.news-item .teaser-image.background09:after {
  background-image: url("../Assets/Images/logo/generated/small/background09_s.svg");
}

.news-item .teaser-image.background10:after {
  background-image: url("../Assets/Images/logo/generated/small/background10_s.svg");
}

.news-item .teaser-image.background11:after {
  background-image: url("../Assets/Images/logo/generated/small/background11_s.svg");
}

.news-item .teaser-image.background12:after {
  background-image: url("../Assets/Images/logo/generated/small/background12_s.svg");
}

.news-item .teaser-image.background13:after {
  background-image: url("../Assets/Images/logo/generated/small/background13_s.svg");
}

.news-item .teaser-image.background14:after {
  background-image: url("../Assets/Images/logo/generated/small/background14_s.svg");
}

.news-item .teaser-image.background15:after {
  background-image: url("../Assets/Images/logo/generated/small/background15_s.svg");
}

.news-item .teaser-image.background16:after {
  background-image: url("../Assets/Images/logo/generated/small/background16_s.svg");
}

.news-item .teaser-image.background17:after {
  background-image: url("../Assets/Images/logo/generated/small/background17_s.svg");
}

.news-item .teaser-image.background18:after {
  background-image: url("../Assets/Images/logo/generated/small/background18_s.svg");
}

.news-item .teaser-image.background19:after {
  background-image: url("../Assets/Images/logo/generated/small/background19_s.svg");
}

.news-item .teaser-image.background20:after {
  background-image: url("../Assets/Images/logo/generated/small/background20_s.svg");
}

.news-item .teaser-image img {
  display: block;
  position: relative;
  width: 100%;
  height: auto;
}

.neos-nodetypes-headline,
.neos-nodetypes-menu,
.neos-nodetypes-text,
.signalwerk-sfgz-contactitem,
.signalwerk-sfgz-contactview,
.signalwerk-sfgz-course,
.signalwerk-sfgz-courseview,
.signalwerk-sfgz-foldout,
.signalwerk-sfgz-newsview {
  background-color: white;
  overflow: auto;
  padding-left: 0.4em;
  padding-right: 0.4em;
}

.ajax.neos-contentcollection > .signalwerk-sfgz-contactview,
.ajax.neos-contentcollection > .signalwerk-sfgz-courseview,
.ajax.neos-contentcollection > .signalwerk-sfgz-newsview {
  padding: 0;
}

.dl-gallery-gallery {
  padding: 0;
  margin-bottom: 0.4em;
  background-color: white;
}

.signalwerk-sfgz-vimeo,
.signalwerk-sfgz-youtube {
  padding: 0.4em 0;
}

.neos-nodetypes-image figure {
  margin: 0;
}

.neos-nodetypes-image img {
  max-width: 100%;
  width: auto;
  height: auto;
}

.signalwerk-sfgz-upload {
  background-color: white;
  padding: 0.4em;
}

.signalwerk-sfgz-upload > .Upload-item > a:before {
  display: none;
}

.uploadIcon:before {
  content: "\2060";
  padding-left: 1em;
  height: 1em;
  background-size: 60%;
  background-image: url("../Assets/Images/icon_document.svg");
  background-repeat: no-repeat;
  background-position: center center;
}

.signalwerk-sfgz-space {
  background-color: white;
  padding: 0.4em;
}

.navigation--mobile {
  box-sizing: border-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-align: center;
      align-items: center;
  position: fixed;
  top: -70px;
  left: 0;
  height: 70px;
  width: 100%;
  max-width: 100vw;
  z-index: 5;
  background-color: white;
  border-bottom-color: #acacac;
  border-bottom-style: solid;
  border-bottom-width: 0.15rem;
  color: black;
  transition: transform 200ms ease;
}

@media screen and (max-width: 768px) {
  .navigation--mobile {
    transform: translateY(100%);
  }
}

.navigation__logos {
  width: 85px;
  height: 70px;
  padding: 10px;
  padding-right: 0;
  box-sizing: border-box;
}

.navigation__lion--mobile {
  height: 100%;
  margin-right: 10px;
}

.navigation__flag--mobile {
  display: inline-block;
  height: 20px;
  margin-bottom: 13px;
}

.navigation__toggle-btn {
  -webkit-appearance: none;
  width: 100%;
  height: 100%;
  color: inherit;
  background-color: inherit;
  border: none;
}

.navigation__toggle-btn:hover {
  background-color: inherit;
}

.navigation__toggle-btn:focus {
  border: none;
  outline: none;
}

.navigation__toggle {
  box-sizing: border-box;
  display: block;
  -ms-flex-positive: 1;
      flex-grow: 1;
  height: 100%;
  padding-left: 0;
  padding-top: 5px;
  font-size: 22px;
  font-family: SFGZSansBlack, sans-serif;
  font-weight: 800;
  color: inherit;
  background-color: #ffffff;
  padding-right: 60px;
  position: relative;
}

.navigation__toggle:after {
  content: " ";
  position: absolute;
  right: 22px;
  top: 22px;
  width: 25px;
  height: 25px;
  background-repeat: no-repeat;
  background-size: 100%;
  background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="rgb(0, 0, 0)"><rect y="0" width="100%" height="20%" rx="5%" ry="5%" /><rect y="40%" width="100%" height="20%" rx="5%" ry="5%" /><rect y="80%" width="100%" height="20%" rx="5%" ry="5%" /></svg>');
}

.navigation__content {
  position: absolute;
  display: block;
  top: 70px;
  left: 0;
  right: 0;
  z-index: -1;
  padding-left: 85px;
  background-color: white;
  border-bottom-color: #acacac;
  border-bottom-style: solid;
  border-bottom-width: 0.15rem;
  transform: translateY(-100%);
  transition: transform 200ms ease;
}

.navigation__content--open {
  transform: translateY(0);
}

.menu1--mobile {
  font-size: 22px;
  font-family: SFGZSansBlack, sans-serif;
  font-weight: 800;
}

.menu1--mobile ul {
  padding-left: 0;
}

.menu1--mobile li {
  list-style: none;
}

.menu1--mobile a {
  color: inherit;
}

.menu2--mobile {
  background-color: white;
  font-size: 16px;
  line-height: 1.25;
  font-size: 1rem;
  line-height: 1.6;
  display: none;
}

.menu2--mobile > nav {
  padding: 1rem 0 0.75rem 85px;
}

@media screen and (max-width: 768px) {
  .menu2--mobile {
    display: block;
  }
}

.menu2--mobile a {
  color: inherit;
}

.menu2--mobile .normal > ul {
  overflow: hidden;
  height: 0;
}

.menu2--mobile li,
.menu2--mobile ul {
  padding-top: 0.15rem;
  padding-bottom: 0.15rem;
}

@media screen and (max-width: 768px) {
  .menu2--mobile li,
  .menu2--mobile ul {
    float: none;
    padding-left: 0;
  }
}

.menu2--mobile li > ul {
  padding-left: 20px;
}

.current a {
  color: #8f8f8f;
  border-bottom-color: #8f8f8f;
}

@media screen and (max-width: 768px) {
  .menu3 {
    display: none;
  }
}

.menuSiblings {
  display: none;
}

.hideL3 .menu3 {
  display: none;
}

.showSiblings .menu3 {
  display: none;
}

.showSiblings .menuSiblings {
  display: block;
}

.foldout-wrapper {
  overflow: hidden;
}

.foldout-content {
  transition: transform .5s;
  transform: translateY(-100%);
  overflow: hidden;
  height: 0;
}

.foldout-content.show, .neos-backend .foldout-content {
  transform: translateY(0);
  height: auto;
}

.foldout-title:hover {
  cursor: pointer;
}

.foldout-title h3 {
  position: relative;
}

.foldout-title h3 div {
  display: inline-block;
}

.foldout-title h3:before {
  position: absolute;
  top: -0.3rem;
  content: '';
  display: inline-block;
  position: relative;
  left: 0.375em;
  top: 0.375em;
  border: 0.75em solid transparent;
  border-left-color: #000;
  margin-right: 0.5rem;
}

.foldout-title.active h3:before {
  left: 0;
  top: 0.8em;
  border-color: #000 transparent transparent;
}

.youtube__root {
  position: relative;
  padding-bottom: 55%;
  padding-top: 15px;
  margin-bottom: 1.5em;
  height: 0;
  overflow: hidden;
}

.youtube__root iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

.contact-item__wrapper {
  padding-bottom: 1rem;
  background-color: white;
}

.contact-item__wrapper p.compact {
  padding: 0;
  margin: 0;
}

.contact-item__wrapper + h3 {
  display: none;
}

.course-root h3.button {
  text-transform: uppercase;
  letter-spacing: 0.1em;
  padding-bottom: 0.15em;
  border-bottom: black solid 0.15em;
  display: inline-block;
  margin-bottom: 1rem;
}

.course-root .course-complete {
  opacity: 0.3;
}

.vimeo__root {
  position: relative;
  padding-bottom: 55%;
  padding-top: 15px;
  margin-bottom: 1.5em;
  height: 0;
  overflow: hidden;
}

.vimeo__root iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

body {
  background-repeat: repeat-y;
  background-size: 100% auto;
}

body.random01 {
  background-image: url("../Assets/Images/logo/generated/anim/background01.svg");
}

body.random02 {
  background-image: url("../Assets/Images/logo/generated/anim/background02.svg");
}

body.random03 {
  background-image: url("../Assets/Images/logo/generated/anim/background03.svg");
}

body.random04 {
  background-image: url("../Assets/Images/logo/generated/anim/background04.svg");
}

body.random05 {
  background-image: url("../Assets/Images/logo/generated/anim/background05.svg");
}

body.random06 {
  background-image: url("../Assets/Images/logo/generated/anim/background06.svg");
}

body.random07 {
  background-image: url("../Assets/Images/logo/generated/anim/background07.svg");
}

body.random08 {
  background-image: url("../Assets/Images/logo/generated/anim/background08.svg");
}

body.random09 {
  background-image: url("../Assets/Images/logo/generated/anim/background09.svg");
}

body.random10 {
  background-image: url("../Assets/Images/logo/generated/anim/background10.svg");
}

body.random11 {
  background-image: url("../Assets/Images/logo/generated/anim/background11.svg");
}

body.random12 {
  background-image: url("../Assets/Images/logo/generated/anim/background12.svg");
}

body.random13 {
  background-image: url("../Assets/Images/logo/generated/anim/background13.svg");
}

body.random14 {
  background-image: url("../Assets/Images/logo/generated/anim/background14.svg");
}

body.random15 {
  background-image: url("../Assets/Images/logo/generated/anim/background15.svg");
}

body.random16 {
  background-image: url("../Assets/Images/logo/generated/anim/background16.svg");
}

body.random17 {
  background-image: url("../Assets/Images/logo/generated/anim/background17.svg");
}

body.random18 {
  background-image: url("../Assets/Images/logo/generated/anim/background18.svg");
}

body.random19 {
  background-image: url("../Assets/Images/logo/generated/anim/background19.svg");
}

body.random20 {
  background-image: url("../Assets/Images/logo/generated/anim/background20.svg");
}

body.noBackground:not(.no-animation) {
  position: relative;
  background: none;
}

body.noBackground:not(.no-animation):after {
  pointer-events: none;
  content: "";
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  background-repeat: no-repeat;
}

body.noBackground.no-animation {
  background: none;
}

body.noBackground.no-animation:after {
  content: none;
}

body.noBackground.random01:not(.no-animation):after {
  background-image: url("../Assets/Images/logo/generated/disappear/background01_d.svg");
}

body.noBackground.random02:not(.no-animation):after {
  background-image: url("../Assets/Images/logo/generated/disappear/background02_d.svg");
}

body.noBackground.random03:not(.no-animation):after {
  background-image: url("../Assets/Images/logo/generated/disappear/background03_d.svg");
}

body.noBackground.random04:not(.no-animation):after {
  background-image: url("../Assets/Images/logo/generated/disappear/background04_d.svg");
}

body.noBackground.random05:not(.no-animation):after {
  background-image: url("../Assets/Images/logo/generated/disappear/background05_d.svg");
}

body.noBackground.random06:not(.no-animation):after {
  background-image: url("../Assets/Images/logo/generated/disappear/background06_d.svg");
}

body.noBackground.random07:not(.no-animation):after {
  background-image: url("../Assets/Images/logo/generated/disappear/background07_d.svg");
}

body.noBackground.random08:not(.no-animation):after {
  background-image: url("../Assets/Images/logo/generated/disappear/background08_d.svg");
}

body.noBackground.random09:not(.no-animation):after {
  background-image: url("../Assets/Images/logo/generated/disappear/background09_d.svg");
}

body.noBackground.random10:not(.no-animation):after {
  background-image: url("../Assets/Images/logo/generated/disappear/background10_d.svg");
}

body.noBackground.random11:not(.no-animation):after {
  background-image: url("../Assets/Images/logo/generated/disappear/background11_d.svg");
}

body.noBackground.random12:not(.no-animation):after {
  background-image: url("../Assets/Images/logo/generated/disappear/background12_d.svg");
}

body.noBackground.random13:not(.no-animation):after {
  background-image: url("../Assets/Images/logo/generated/disappear/background13_d.svg");
}

body.noBackground.random14:not(.no-animation):after {
  background-image: url("../Assets/Images/logo/generated/disappear/background14_d.svg");
}

body.noBackground.random15:not(.no-animation):after {
  background-image: url("../Assets/Images/logo/generated/disappear/background15_d.svg");
}

body.noBackground.random16:not(.no-animation):after {
  background-image: url("../Assets/Images/logo/generated/disappear/background16_d.svg");
}

body.noBackground.random17:not(.no-animation):after {
  background-image: url("../Assets/Images/logo/generated/disappear/background17_d.svg");
}

body.noBackground.random18:not(.no-animation):after {
  background-image: url("../Assets/Images/logo/generated/disappear/background18_d.svg");
}

body.noBackground.random19:not(.no-animation):after {
  background-image: url("../Assets/Images/logo/generated/disappear/background19_d.svg");
}

body.noBackground.random20:not(.no-animation):after {
  background-image: url("../Assets/Images/logo/generated/disappear/background20_d.svg");
}

body .dl-gallery-gallery a[href^="http"]:before {
  display: none;
}

body .dl-gallery-gallery .row.dl-gallery .item.dl-gallery {
  -ms-flex-negative: 0;
      flex-shrink: 0;
  width: 4.525%;
  margin-right: 0.5%;
  margin-bottom: 0.5rem;
}

body .dl-gallery-gallery .row.dl-gallery .item.dl-gallery:nth-child(4n + 4) {
  margin-right: 0.5%;
}

body .dl-gallery-gallery .row.dl-gallery .item.dl-gallery:nth-child(20n + 20) {
  margin-right: 0;
}

.courseview-enroll .course-form fieldset {
  width: 100%;
  border: none;
  padding: 0;
  margin: 0;
}

.courseview-enroll .course-form span.required {
  color: red;
}

.courseview-enroll .course-form .form-group {
  max-width: 100%;
  margin-left: auto;
  margin-right: auto;
  padding-bottom: 0.5rem;
}

.courseview-enroll .course-form .form-group:after {
  content: " ";
  display: block;
  clear: both;
}

.courseview-enroll .course-form .form-group label {
  width: 30.76923%;
  float: left;
  margin-right: 3.84615%;
}

.courseview-enroll .course-form .form-group .input {
  width: 65.38462%;
  float: right;
  margin-right: 0;
  max-width: 100%;
  margin-left: auto;
  margin-right: auto;
}

.courseview-enroll .course-form .form-group .input:after {
  content: " ";
  display: block;
  clear: both;
}

.courseview-enroll .course-form .form-group .input #contact-form-Strasse,
.courseview-enroll .course-form .form-group .input #contact-form-bill-Strasse {
  width: 82.35294%;
  float: left;
  margin-right: 5.88235%;
}

.courseview-enroll .course-form .form-group .input #contact-form-StrasseNr,
.courseview-enroll .course-form .form-group .input #contact-form-bill-StrasseNr {
  width: 11.76471%;
  float: right;
  margin-right: 0;
}

.courseview-enroll .course-form .form-group .input label.error {
  font-size: 0.8rem;
  color: red;
}

.courseview-enroll .course-form .switch-right-left .form-group label {
  width: 65.38462%;
  float: right;
  margin-right: 0;
}

.courseview-enroll .course-form .switch-right-left .form-group .input {
  width: 30.76923%;
  float: left;
  margin-right: 3.84615%;
  max-width: 100%;
  margin-left: auto;
  margin-right: auto;
  text-align: right;
}

.courseview-enroll .course-form .switch-right-left .form-group .input:after {
  content: " ";
  display: block;
  clear: both;
}

.courseview-enroll .course-form .switch-right-left .form-group .input input[type='radio'],
.courseview-enroll .course-form .switch-right-left .form-group .input input[type='checkbox'] {
  right: 0;
  width: auto;
}

.courseview-list .noResult.hidden {
  display: none;
}

.courseview-listeitem {
  max-width: 100%;
  margin-left: auto;
  margin-right: auto;
}

.courseview-listeitem:after {
  content: " ";
  display: block;
  clear: both;
}

.courseview-listeitem__nr {
  width: 14.28571%;
  float: left;
  margin-right: 2.85714%;
}

.courseview-listeitem__nr p {
  padding-top: 0.3rem;
}

.courseview-listeitem__title {
  width: 48.57143%;
  float: left;
  margin-right: 2.85714%;
}

.courseview-listeitem__date {
  width: 31.42857%;
  float: right;
  margin-right: 0;
}

.courseview-listeitem__date p {
  padding-top: 0.3rem;
}

.courseview-listeitem--root.hidden {
  display: none;
}

.courseview-filter h3 {
  font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
  font-weight: normal;
  font-style: normal;
  padding-bottom: 0.05em;
  border-bottom: black solid 0.15em;
  margin-top: 1em;
  margin-bottom: 0.6em;
}

.courseview-filter .category {
  max-width: 100%;
  margin-left: auto;
  margin-right: auto;
}

.courseview-filter .category:after {
  content: " ";
  display: block;
  clear: both;
}

.courseview-filter .category .angebot {
  width: 48.57143%;
  float: left;
  margin-right: 2.85714%;
}

.courseview-filter .category .beruf {
  width: 48.57143%;
  float: right;
  margin-right: 0;
}

.courseview-filter .starttime {
  max-width: 100%;
  margin-left: auto;
  margin-right: auto;
}

.courseview-filter .starttime:after {
  content: " ";
  display: block;
  clear: both;
}

.courseview-filter .starttime .day {
  width: 48.57143%;
  float: left;
  margin-right: 2.85714%;
}

.courseview-filter .starttime .month {
  width: 48.57143%;
  float: right;
  margin-right: 0;
}

.courseview-filter .category {
  font-family: SFGZSansBlack, sans-serif;
  font-weight: 800;
}

.courseview-filter .category label {
  display: block;
  position: relative;
  padding-left: 0.8em;
  cursor: pointer;
}

.courseview-filter .category label:before {
  content: "– ";
  position: absolute;
  left: 0;
  top: 0;
}

.courseview-filter .category input[type="radio"] {
  display: none;
}

.courseview-filter input[type="radio"]:checked + label {
  color: #cb2e26;
}

.courseview-filter #filter-form-submit .txt {
  display: block;
}

.courseview-filter #filter-form-submit .wait {
  display: none;
}

.courseview-filter #filter-form-submit.button-submitting {
  cursor: not-allowed;
  pointer-events: none;
  opacity: 0.6;
}

.courseview-filter #filter-form-submit.button-submitting .txt {
  display: none;
}

.courseview-filter #filter-form-submit.button-submitting .wait {
  display: block;
}

.newsview-filter h3 {
  font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
  font-weight: normal;
  font-style: normal;
  padding-bottom: 0.05em;
  border-bottom: black solid 0.15em;
  margin-top: 1em;
  margin-bottom: 0.6em;
}

.newsview-filter .category {
  max-width: 100%;
  margin-left: auto;
  margin-right: auto;
}

.newsview-filter .category:after {
  content: " ";
  display: block;
  clear: both;
}

.newsview-filter .category .events {
  width: 48.57143%;
  float: left;
  margin-right: 2.85714%;
}

.newsview-filter .category .day {
  width: 48.57143%;
  float: right;
  margin-right: 0;
}

.newsview-filter .category {
  font-family: SFGZSansBlack, sans-serif;
  font-weight: 800;
}

.newsview-filter .category label {
  display: block;
  position: relative;
  padding-left: 0.8em;
  cursor: pointer;
}

.newsview-filter .category label:before {
  content: "– ";
  position: absolute;
  left: 0;
  top: 0;
}

.newsview-filter .category input[type="radio"] {
  display: none;
}

.newsview-filter input[type="radio"]:checked + label {
  color: #cb2e26;
}

.newsview-filter #filter-form-submit .txt {
  display: block;
}

.newsview-filter #filter-form-submit .wait {
  display: none;
}

.newsview-filter #filter-form-submit.button-submitting {
  cursor: not-allowed;
  pointer-events: none;
  opacity: 0.6;
}

.newsview-filter #filter-form-submit.button-submitting .txt {
  display: none;
}

.newsview-filter #filter-form-submit.button-submitting .wait {
  display: block;
}

.signalwerk-sfgz-newsview .teaser-content {
  max-width: 100%;
  margin-left: auto;
  margin-right: auto;
}

.signalwerk-sfgz-newsview .teaser-content:after {
  content: " ";
  display: block;
  clear: both;
}

.signalwerk-sfgz-newsview .teaser-content .teaser-image {
  width: 31.42857%;
  float: right;
  margin-right: 0;
}

.signalwerk-sfgz-newsview .teaser-content .teaser-text {
  width: 65.71429%;
  float: left;
  margin-right: 2.85714%;
}

.contactview-filter h3 {
  font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
  font-weight: normal;
  font-style: normal;
  padding-bottom: 0.05em;
  border-bottom: black solid 0.15em;
  margin-top: 1em;
  margin-bottom: 0.6em;
}

.contactview-filter .category {
  max-width: 100%;
  margin-left: auto;
  margin-right: auto;
}

.contactview-filter .category:after {
  content: " ";
  display: block;
  clear: both;
}

.contactview-filter .category .organisations {
  width: 48.57143%;
  float: left;
  margin-right: 2.85714%;
}

.contactview-filter .category .functions {
  width: 48.57143%;
  float: right;
  margin-right: 0;
}

.contactview-filter .category {
  font-family: SFGZSansBlack, sans-serif;
  font-weight: 800;
}

.contactview-filter .category label {
  display: block;
  position: relative;
  padding-left: 0.8em;
  cursor: pointer;
}

.contactview-filter .category label:before {
  content: "– ";
  position: absolute;
  left: 0;
  top: 0;
}

.contactview-filter .category input[type="radio"] {
  display: none;
}

.contactview-filter input[type="radio"]:checked + label {
  color: #cb2e26;
}

.contactview-filter #filter-form-submit .txt {
  display: block;
}

.contactview-filter #filter-form-submit .wait {
  display: none;
}

.contactview-filter #filter-form-submit.button-submitting {
  cursor: not-allowed;
  pointer-events: none;
  opacity: 0.6;
}

.contactview-filter #filter-form-submit.button-submitting .txt {
  display: none;
}

.contactview-filter #filter-form-submit.button-submitting .wait {
  display: block;
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsd2Vyay5jc3MiLCJzb3VyY2VzIjpbInNpZ25hbHdlcmsuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9ub3JtYWxpemUuY3NzL25vcm1hbGl6ZS5jc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL19zdXN5LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2UvX3N1c3kuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9fc3Uuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fdXRpbGl0aWVzLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX3NldHRpbmdzLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX3ZhbGlkYXRpb24uc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fZ3JpZC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fZmxvYXQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvX3NoYXJlZC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fc3VwcG9ydC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19zdXBwb3J0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3ByZWZpeC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19iYWNrZ3JvdW5kLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2JveC1zaXppbmcuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcmVtLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2NsZWFyZml4LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9faW5zcGVjdC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX291dHB1dC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2RpcmVjdGlvbi5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2JhY2tncm91bmQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19jb250YWluZXIuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19tYXJnaW5zLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fcGFkZGluZy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9fY29udGFpbmVyLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19zcGFuLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19lbmQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2lzb2xhdGUuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19zZXR0aW5ncy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3ZhbGlkYXRpb24uc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ncmlkcy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JveC1zaXppbmcuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19jb250ZXh0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYmFja2dyb3VuZC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2NvbnRhaW5lci5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3NwYW4uc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ndXR0ZXJzLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9faXNvbGF0ZS5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2dhbGxlcnkuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19yb3dzLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fbWFyZ2lucy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3BhZGRpbmcuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ibGVlZC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JyZWFrcG9pbnQtcGx1Z2luLnNjc3MiLCJzaWduYWx3ZXJrL3ZhcmlhYmxlcy5zY3NzIiwic2lnbmFsd2Vyay9taXhpbnMuc2NzcyIsInNpZ25hbHdlcmsvbWVkaWFxdWVyeS5zY3NzIiwic2lnbmFsd2Vyay90eXBvZ3JhcGh5LnNjc3MiLCJzaWduYWx3ZXJrL2NvbXBvbmVudHMvaHRtbC5zY3NzIiwic2lnbmFsd2Vyay9jb21wb25lbnRzL2hlYWRlci5zY3NzIiwic2lnbmFsd2Vyay9jb21wb25lbnRzL2NvbnRlbnQuc2NzcyIsInNpZ25hbHdlcmsvY29tcG9uZW50cy9vbmVDb2x1bW4uc2NzcyIsInNpZ25hbHdlcmsvY29tcG9uZW50cy9uZXdzSXRlbS5zY3NzIiwic2lnbmFsd2Vyay9jb21wb25lbnRzL25lb3Mtbm9kZXR5cGVzLnNjc3MiLCJzaWduYWx3ZXJrL2NvbXBvbmVudHMvdXBsb2FkLnNjc3MiLCJzaWduYWx3ZXJrL2NvbXBvbmVudHMvc3BhY2Uuc2NzcyIsInNpZ25hbHdlcmsvY29tcG9uZW50cy9uYXZpZ2F0aW9uLnNjc3MiLCJzaWduYWx3ZXJrL2NvbXBvbmVudHMvZm9sZG91dC5zY3NzIiwic2lnbmFsd2Vyay9jb21wb25lbnRzL3lvdXR1YmUuc2NzcyIsInNpZ25hbHdlcmsvY29tcG9uZW50cy9jb250YWN0SXRlbS5zY3NzIiwic2lnbmFsd2Vyay9jb21wb25lbnRzL2NvdXJzZS5zY3NzIiwic2lnbmFsd2Vyay9jb21wb25lbnRzL3ZpbWVvLnNjc3MiLCJzaWduYWx3ZXJrL2NvbXBvbmVudHMvYmFja2dyb3VuZC5zY3NzIiwic2lnbmFsd2Vyay9jb21wb25lbnRzL0luUGxhY2VHYWxsZXJ5LnNjc3MiLCJzaWduYWx3ZXJrL2NvbXBvbmVudHMvX2ZpbHRlci5zY3NzIiwic2lnbmFsd2Vyay9jb21wb25lbnRzL2NvdXJzZXZpZXcuc2NzcyIsInNpZ25hbHdlcmsvY29tcG9uZW50cy9jb3Vyc2V2aWV3LWVucm9sbC5zY3NzIiwic2lnbmFsd2Vyay9jb21wb25lbnRzL2NvdXJzZXZpZXctbGlzdC5zY3NzIiwic2lnbmFsd2Vyay9jb21wb25lbnRzL2NvdXJzZXZpZXctZmlsdGVyLnNjc3MiLCJzaWduYWx3ZXJrL2NvbXBvbmVudHMvbmV3c3ZpZXcuc2NzcyIsInNpZ25hbHdlcmsvY29tcG9uZW50cy9uZXdzdmlldy1maWx0ZXIuc2NzcyIsInNpZ25hbHdlcmsvY29tcG9uZW50cy9jb250YWN0dmlldy5zY3NzIiwic2lnbmFsd2Vyay9jb21wb25lbnRzL2NvbnRhY3R2aWV3LWZpbHRlci5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIlxuQGltcG9ydCAnLi4vLi4vLi4vbm9kZV9tb2R1bGVzL25vcm1hbGl6ZS5jc3Mvbm9ybWFsaXplJztcbkBpbXBvcnQgXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3lcIjtcblxuQGltcG9ydCAnLi9zaWduYWx3ZXJrL3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICcuL3NpZ25hbHdlcmsvbWVkaWFxdWVyeSc7XG5AaW1wb3J0ICcuL3NpZ25hbHdlcmsvbWl4aW5zJztcblxuLy8gaW5jbHVkZSBjb21wb25lbnRzXG5AaW1wb3J0ICcuL3NpZ25hbHdlcmsvdHlwb2dyYXBoeSc7XG5AaW1wb3J0ICcuL3NpZ25hbHdlcmsvY29tcG9uZW50cy9odG1sJztcbkBpbXBvcnQgJy4vc2lnbmFsd2Vyay9jb21wb25lbnRzL2hlYWRlcic7XG5AaW1wb3J0ICcuL3NpZ25hbHdlcmsvY29tcG9uZW50cy9jb250ZW50JztcbkBpbXBvcnQgJy4vc2lnbmFsd2Vyay9jb21wb25lbnRzL29uZUNvbHVtbic7XG5AaW1wb3J0ICcuL3NpZ25hbHdlcmsvY29tcG9uZW50cy9uZXdzSXRlbSc7XG5AaW1wb3J0ICcuL3NpZ25hbHdlcmsvY29tcG9uZW50cy9uZW9zLW5vZGV0eXBlcyc7XG5AaW1wb3J0ICcuL3NpZ25hbHdlcmsvY29tcG9uZW50cy91cGxvYWQnO1xuQGltcG9ydCAnLi9zaWduYWx3ZXJrL2NvbXBvbmVudHMvc3BhY2UnO1xuQGltcG9ydCAnLi9zaWduYWx3ZXJrL2NvbXBvbmVudHMvbmF2aWdhdGlvbic7XG5AaW1wb3J0ICcuL3NpZ25hbHdlcmsvY29tcG9uZW50cy9mb2xkb3V0JztcbkBpbXBvcnQgJy4vc2lnbmFsd2Vyay9jb21wb25lbnRzL3lvdXR1YmUnO1xuQGltcG9ydCAnLi9zaWduYWx3ZXJrL2NvbXBvbmVudHMvY29udGFjdEl0ZW0nO1xuQGltcG9ydCAnLi9zaWduYWx3ZXJrL2NvbXBvbmVudHMvY291cnNlJztcbkBpbXBvcnQgJy4vc2lnbmFsd2Vyay9jb21wb25lbnRzL3ZpbWVvJztcbkBpbXBvcnQgJy4vc2lnbmFsd2Vyay9jb21wb25lbnRzL2JhY2tncm91bmQnO1xuQGltcG9ydCAnLi9zaWduYWx3ZXJrL2NvbXBvbmVudHMvSW5QbGFjZUdhbGxlcnknO1xuXG5AaW1wb3J0ICcuL3NpZ25hbHdlcmsvY29tcG9uZW50cy9fZmlsdGVyJztcbkBpbXBvcnQgJy4vc2lnbmFsd2Vyay9jb21wb25lbnRzL2NvdXJzZXZpZXcnO1xuQGltcG9ydCAnLi9zaWduYWx3ZXJrL2NvbXBvbmVudHMvbmV3c3ZpZXcnO1xuQGltcG9ydCAnLi9zaWduYWx3ZXJrL2NvbXBvbmVudHMvY29udGFjdHZpZXcnO1xuIiwiLyohIG5vcm1hbGl6ZS5jc3MgdjQuMS4xIHwgTUlUIExpY2Vuc2UgfCBnaXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzcyAqL1xuXG4vKipcbiAqIDEuIENoYW5nZSB0aGUgZGVmYXVsdCBmb250IGZhbWlseSBpbiBhbGwgYnJvd3NlcnMgKG9waW5pb25hdGVkKS5cbiAqIDIuIENvcnJlY3QgdGhlIGxpbmUgaGVpZ2h0IGluIGFsbCBicm93c2Vycy5cbiAqIDMuIFByZXZlbnQgYWRqdXN0bWVudHMgb2YgZm9udCBzaXplIGFmdGVyIG9yaWVudGF0aW9uIGNoYW5nZXMgaW4gSUUgYW5kIGlPUy5cbiAqL1xuXG5odG1sIHtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7IC8qIDEgKi9cbiAgbGluZS1oZWlnaHQ6IDEuMTU7IC8qIDIgKi9cbiAgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8qIDMgKi9cbiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAzICovXG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBtYXJnaW4gaW4gYWxsIGJyb3dzZXJzIChvcGluaW9uYXRlZCkuXG4gKi9cblxuYm9keSB7XG4gIG1hcmdpbjogMDtcbn1cblxuLyogSFRNTDUgZGlzcGxheSBkZWZpbml0aW9uc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSA5LS5cbiAqIDEuIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIEVkZ2UsIElFLCBhbmQgRmlyZWZveC5cbiAqIDIuIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFLlxuICovXG5cbmFydGljbGUsXG5hc2lkZSxcbmRldGFpbHMsIC8qIDEgKi9cbmZpZ2NhcHRpb24sXG5maWd1cmUsXG5mb290ZXIsXG5oZWFkZXIsXG5tYWluLCAvKiAyICovXG5tZW51LFxubmF2LFxuc2VjdGlvbixcbnN1bW1hcnkgeyAvKiAxICovXG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDktLlxuICovXG5cbmF1ZGlvLFxuY2FudmFzLFxucHJvZ3Jlc3MsXG52aWRlbyB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBpT1MgNC03LlxuICovXG5cbmF1ZGlvOm5vdChbY29udHJvbHNdKSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGhlaWdodDogMDtcbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgdmVydGljYWwgYWxpZ25tZW50IGluIENocm9tZSwgRmlyZWZveCwgYW5kIE9wZXJhLlxuICovXG5cbnByb2dyZXNzIHtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDEwLS5cbiAqIDEuIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFLlxuICovXG5cbnRlbXBsYXRlLCAvKiAxICovXG5baGlkZGVuXSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi8qIExpbmtzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIDEuIFJlbW92ZSB0aGUgZ3JheSBiYWNrZ3JvdW5kIG9uIGFjdGl2ZSBsaW5rcyBpbiBJRSAxMC5cbiAqIDIuIFJlbW92ZSBnYXBzIGluIGxpbmtzIHVuZGVybGluZSBpbiBpT1MgOCsgYW5kIFNhZmFyaSA4Ky5cbiAqL1xuXG5hIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IC8qIDEgKi9cbiAgLXdlYmtpdC10ZXh0LWRlY29yYXRpb24tc2tpcDogb2JqZWN0czsgLyogMiAqL1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgb3V0bGluZSBvbiBmb2N1c2VkIGxpbmtzIHdoZW4gdGhleSBhcmUgYWxzbyBhY3RpdmUgb3IgaG92ZXJlZFxuICogaW4gYWxsIGJyb3dzZXJzIChvcGluaW9uYXRlZCkuXG4gKi9cblxuYTphY3RpdmUsXG5hOmhvdmVyIHtcbiAgb3V0bGluZS13aWR0aDogMDtcbn1cblxuLyogVGV4dC1sZXZlbCBzZW1hbnRpY3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogMS4gUmVtb3ZlIHRoZSBib3R0b20gYm9yZGVyIGluIEZpcmVmb3ggMzktLlxuICogMi4gQWRkIHRoZSBjb3JyZWN0IHRleHQgZGVjb3JhdGlvbiBpbiBDaHJvbWUsIEVkZ2UsIElFLCBPcGVyYSwgYW5kIFNhZmFyaS5cbiAqL1xuXG5hYmJyW3RpdGxlXSB7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7IC8qIDEgKi9cbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IC8qIDIgKi9cbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkOyAvKiAyICovXG59XG5cbi8qKlxuICogUHJldmVudCB0aGUgZHVwbGljYXRlIGFwcGxpY2F0aW9uIG9mIGBib2xkZXJgIGJ5IHRoZSBuZXh0IHJ1bGUgaW4gU2FmYXJpIDYuXG4gKi9cblxuYixcbnN0cm9uZyB7XG4gIGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBmb250IHdlaWdodCBpbiBDaHJvbWUsIEVkZ2UsIGFuZCBTYWZhcmkuXG4gKi9cblxuYixcbnN0cm9uZyB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkZXI7XG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgc3R5bGUgaW4gQW5kcm9pZCA0LjMtLlxuICovXG5cbmRmbiB7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLyoqXG4gKiBDb3JyZWN0IHRoZSBmb250IHNpemUgYW5kIG1hcmdpbiBvbiBgaDFgIGVsZW1lbnRzIHdpdGhpbiBgc2VjdGlvbmAgYW5kXG4gKiBgYXJ0aWNsZWAgY29udGV4dHMgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgU2FmYXJpLlxuICovXG5cbmgxIHtcbiAgZm9udC1zaXplOiAyZW07XG4gIG1hcmdpbjogMC42N2VtIDA7XG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGJhY2tncm91bmQgYW5kIGNvbG9yIGluIElFIDktLlxuICovXG5cbm1hcmsge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmYwO1xuICBjb2xvcjogIzAwMDtcbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5zbWFsbCB7XG4gIGZvbnQtc2l6ZTogODAlO1xufVxuXG4vKipcbiAqIFByZXZlbnQgYHN1YmAgYW5kIGBzdXBgIGVsZW1lbnRzIGZyb20gYWZmZWN0aW5nIHRoZSBsaW5lIGhlaWdodCBpblxuICogYWxsIGJyb3dzZXJzLlxuICovXG5cbnN1YixcbnN1cCB7XG4gIGZvbnQtc2l6ZTogNzUlO1xuICBsaW5lLWhlaWdodDogMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbnN1YiB7XG4gIGJvdHRvbTogLTAuMjVlbTtcbn1cblxuc3VwIHtcbiAgdG9wOiAtMC41ZW07XG59XG5cbi8qIEVtYmVkZGVkIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogUmVtb3ZlIHRoZSBib3JkZXIgb24gaW1hZ2VzIGluc2lkZSBsaW5rcyBpbiBJRSAxMC0uXG4gKi9cblxuaW1nIHtcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xufVxuXG4vKipcbiAqIEhpZGUgdGhlIG92ZXJmbG93IGluIElFLlxuICovXG5cbnN2Zzpub3QoOnJvb3QpIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLyogR3JvdXBpbmcgY29udGVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBpbmhlcml0YW5jZSBhbmQgc2NhbGluZyBvZiBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICogMi4gQ29ycmVjdCB0aGUgb2RkIGBlbWAgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbmNvZGUsXG5rYmQsXG5wcmUsXG5zYW1wIHtcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlOyAvKiAxICovXG4gIGZvbnQtc2l6ZTogMWVtOyAvKiAyICovXG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IG1hcmdpbiBpbiBJRSA4LlxuICovXG5cbmZpZ3VyZSB7XG4gIG1hcmdpbjogMWVtIDQwcHg7XG59XG5cbi8qKlxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gRmlyZWZveC5cbiAqIDIuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UgYW5kIElFLlxuICovXG5cbmhyIHtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7IC8qIDEgKi9cbiAgaGVpZ2h0OiAwOyAvKiAxICovXG4gIG92ZXJmbG93OiB2aXNpYmxlOyAvKiAyICovXG59XG5cbi8qIEZvcm1zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIDEuIENoYW5nZSBmb250IHByb3BlcnRpZXMgdG8gYGluaGVyaXRgIGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxuICogMi4gUmVtb3ZlIHRoZSBtYXJnaW4gaW4gRmlyZWZveCBhbmQgU2FmYXJpLlxuICovXG5cbmJ1dHRvbixcbmlucHV0LFxub3B0Z3JvdXAsXG5zZWxlY3QsXG50ZXh0YXJlYSB7XG4gIGZvbnQ6IGluaGVyaXQ7IC8qIDEgKi9cbiAgbWFyZ2luOiAwOyAvKiAyICovXG59XG5cbi8qKlxuICogUmVzdG9yZSB0aGUgZm9udCB3ZWlnaHQgdW5zZXQgYnkgdGhlIHByZXZpb3VzIHJ1bGUuXG4gKi9cblxub3B0Z3JvdXAge1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLyoqXG4gKiBTaG93IHRoZSBvdmVyZmxvdyBpbiBJRS5cbiAqIDEuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UuXG4gKi9cblxuYnV0dG9uLFxuaW5wdXQgeyAvKiAxICovXG4gIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRWRnZSwgRmlyZWZveCwgYW5kIElFLlxuICogMS4gUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBGaXJlZm94LlxuICovXG5cbmJ1dHRvbixcbnNlbGVjdCB7IC8qIDEgKi9cbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG59XG5cbi8qKlxuICogMS4gUHJldmVudCBhIFdlYktpdCBidWcgd2hlcmUgKDIpIGRlc3Ryb3lzIG5hdGl2ZSBgYXVkaW9gIGFuZCBgdmlkZW9gXG4gKiAgICBjb250cm9scyBpbiBBbmRyb2lkIDQuXG4gKiAyLiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuICovXG5cbmJ1dHRvbixcbmh0bWwgW3R5cGU9XCJidXR0b25cIl0sIC8qIDEgKi9cblt0eXBlPVwicmVzZXRcIl0sXG5bdHlwZT1cInN1Ym1pdFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvKiAyICovXG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBpbm5lciBib3JkZXIgYW5kIHBhZGRpbmcgaW4gRmlyZWZveC5cbiAqL1xuXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cImJ1dHRvblwiXTo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwicmVzZXRcIl06Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cInN1Ym1pdFwiXTo6LW1vei1mb2N1cy1pbm5lciB7XG4gIGJvcmRlci1zdHlsZTogbm9uZTtcbiAgcGFkZGluZzogMDtcbn1cblxuLyoqXG4gKiBSZXN0b3JlIHRoZSBmb2N1cyBzdHlsZXMgdW5zZXQgYnkgdGhlIHByZXZpb3VzIHJ1bGUuXG4gKi9cblxuYnV0dG9uOi1tb3otZm9jdXNyaW5nLFxuW3R5cGU9XCJidXR0b25cIl06LW1vei1mb2N1c3JpbmcsXG5bdHlwZT1cInJlc2V0XCJdOi1tb3otZm9jdXNyaW5nLFxuW3R5cGU9XCJzdWJtaXRcIl06LW1vei1mb2N1c3Jpbmcge1xuICBvdXRsaW5lOiAxcHggZG90dGVkIEJ1dHRvblRleHQ7XG59XG5cbi8qKlxuICogQ2hhbmdlIHRoZSBib3JkZXIsIG1hcmdpbiwgYW5kIHBhZGRpbmcgaW4gYWxsIGJyb3dzZXJzIChvcGluaW9uYXRlZCkuXG4gKi9cblxuZmllbGRzZXQge1xuICBib3JkZXI6IDFweCBzb2xpZCAjYzBjMGMwO1xuICBtYXJnaW46IDAgMnB4O1xuICBwYWRkaW5nOiAwLjM1ZW0gMC42MjVlbSAwLjc1ZW07XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgdGV4dCB3cmFwcGluZyBpbiBFZGdlIGFuZCBJRS5cbiAqIDIuIENvcnJlY3QgdGhlIGNvbG9yIGluaGVyaXRhbmNlIGZyb20gYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBJRS5cbiAqIDMuIFJlbW92ZSB0aGUgcGFkZGluZyBzbyBkZXZlbG9wZXJzIGFyZSBub3QgY2F1Z2h0IG91dCB3aGVuIHRoZXkgemVybyBvdXRcbiAqICAgIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbmxlZ2VuZCB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8qIDEgKi9cbiAgY29sb3I6IGluaGVyaXQ7IC8qIDIgKi9cbiAgZGlzcGxheTogdGFibGU7IC8qIDEgKi9cbiAgbWF4LXdpZHRoOiAxMDAlOyAvKiAxICovXG4gIHBhZGRpbmc6IDA7IC8qIDMgKi9cbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDsgLyogMSAqL1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgZGVmYXVsdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgaW4gSUUuXG4gKi9cblxudGV4dGFyZWEge1xuICBvdmVyZmxvdzogYXV0bztcbn1cblxuLyoqXG4gKiAxLiBBZGQgdGhlIGNvcnJlY3QgYm94IHNpemluZyBpbiBJRSAxMC0uXG4gKiAyLiBSZW1vdmUgdGhlIHBhZGRpbmcgaW4gSUUgMTAtLlxuICovXG5cblt0eXBlPVwiY2hlY2tib3hcIl0sXG5bdHlwZT1cInJhZGlvXCJdIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLyogMSAqL1xuICBwYWRkaW5nOiAwOyAvKiAyICovXG59XG5cbi8qKlxuICogQ29ycmVjdCB0aGUgY3Vyc29yIHN0eWxlIG9mIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGJ1dHRvbnMgaW4gQ2hyb21lLlxuICovXG5cblt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICBoZWlnaHQ6IGF1dG87XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgb2RkIGFwcGVhcmFuY2UgaW4gQ2hyb21lIGFuZCBTYWZhcmkuXG4gKiAyLiBDb3JyZWN0IHRoZSBvdXRsaW5lIHN0eWxlIGluIFNhZmFyaS5cbiAqL1xuXG5bdHlwZT1cInNlYXJjaFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkOyAvKiAxICovXG4gIG91dGxpbmUtb2Zmc2V0OiAtMnB4OyAvKiAyICovXG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBpbm5lciBwYWRkaW5nIGFuZCBjYW5jZWwgYnV0dG9ucyBpbiBDaHJvbWUgYW5kIFNhZmFyaSBvbiBPUyBYLlxuICovXG5cblt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLFxuW3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG59XG5cbi8qKlxuICogQ29ycmVjdCB0aGUgdGV4dCBzdHlsZSBvZiBwbGFjZWhvbGRlcnMgaW4gQ2hyb21lLCBFZGdlLCBhbmQgU2FmYXJpLlxuICovXG5cbjo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XG4gIGNvbG9yOiBpbmhlcml0O1xuICBvcGFjaXR5OiAwLjU0O1xufVxuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXG4gKiAyLiBDaGFuZ2UgZm9udCBwcm9wZXJ0aWVzIHRvIGBpbmhlcml0YCBpbiBTYWZhcmkuXG4gKi9cblxuOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvKiAxICovXG4gIGZvbnQ6IGluaGVyaXQ7IC8qIDIgKi9cbn1cbiIsIi8vIFN1c3lcbi8vID09PT1cblxuQGltcG9ydCAnc3VzeS9sYW5ndWFnZS9zdXN5JztcbiIsIi8vIFN1c3kgTmV4dCBTeW50YXhcbi8vID09PT09PT09PT09PT09PT1cblxuJHN1c3ktdmVyc2lvbjogMi4xO1xuXG5AaW1wb3J0IFwiLi4vc3VcIjtcbkBpbXBvcnQgXCIuLi9vdXRwdXQvZmxvYXRcIjtcblxuQGltcG9ydCBcInN1c3kvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJzdXN5L3ZhbGlkYXRpb25cIjtcbkBpbXBvcnQgXCJzdXN5L2dyaWRzXCI7XG5AaW1wb3J0IFwic3VzeS9ib3gtc2l6aW5nXCI7XG5AaW1wb3J0IFwic3VzeS9jb250ZXh0XCI7XG5AaW1wb3J0IFwic3VzeS9iYWNrZ3JvdW5kXCI7XG5AaW1wb3J0IFwic3VzeS9jb250YWluZXJcIjtcbkBpbXBvcnQgXCJzdXN5L3NwYW5cIjtcbkBpbXBvcnQgXCJzdXN5L2d1dHRlcnNcIjtcbkBpbXBvcnQgXCJzdXN5L2lzb2xhdGVcIjtcbkBpbXBvcnQgXCJzdXN5L2dhbGxlcnlcIjtcbkBpbXBvcnQgXCJzdXN5L3Jvd3NcIjtcbkBpbXBvcnQgXCJzdXN5L21hcmdpbnNcIjtcbkBpbXBvcnQgXCJzdXN5L3BhZGRpbmdcIjtcbkBpbXBvcnQgXCJzdXN5L2JsZWVkXCI7XG5AaW1wb3J0IFwic3VzeS9icmVha3BvaW50LXBsdWdpblwiO1xuIiwiLy8gU3Vcbi8vID09XG5cbkBpbXBvcnQgXCJzdS91dGlsaXRpZXNcIjtcbkBpbXBvcnQgXCJzdS9zZXR0aW5nc1wiO1xuQGltcG9ydCBcInN1L3ZhbGlkYXRpb25cIjtcbkBpbXBvcnQgXCJzdS9ncmlkXCI7XG4iLCIvLyBNYXAgRnVuY3Rpb25zXG4vLyA9PT09PT09PT09PT09XG5cblxuLy8gVHJ1bmNhdGUgTGlzdFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gLSBSZXR1cm4gYSBsaXN0LCB0cnVuY2F0ZWQgdG8gYSBnaXZlbiBsZW5ndGhcbkBmdW5jdGlvbiBfc3VzeS10cnVuY2F0ZS1saXN0KFxuICAkbGlzdCxcbiAgJGxlbmd0aFxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIGxlbmd0aCgkbGlzdCkge1xuICAgICRfcmV0dXJuOiBpZigkaSA8PSAkbGVuZ3RoLCBhcHBlbmQoJF9yZXR1cm4sIG50aCgkbGlzdCwgJGkpKSwgJF9yZXR1cm4pO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIEdldFxuLy8gLS0tLS0tLS1cbi8vIC0gUmV0dXJuIGEgdmFsdWUgZGVlcCBpbiBuZXN0ZWQgbWFwc1xuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtZ2V0KFxuICAkbWFwLFxuICAka2V5cy4uLlxuKSB7XG4gICRfcmV0dXJuOiAkbWFwO1xuXG4gIEBlYWNoICRrZXkgaW4gJGtleXMge1xuICAgIEBpZiB0eXBlLW9mKCRfcmV0dXJuKSA9PSBtYXAge1xuICAgICAgJF9yZXR1cm46IG1hcC1nZXQoJF9yZXR1cm4sICRrZXkpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBTZXRcbi8vIC0tLS0tLS0tXG4vLyAtIFNldCBhIHZhbHVlIGRlZXAgaW4gbmVzdGVkIG1hcHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLXNldChcbiAgJG1hcCxcbiAgJGtleXMtdmFsdWUuLi5cbikge1xuICAkX3ZhbHVlOiBudGgoJGtleXMtdmFsdWUsIC0xKTtcbiAgJF9rZXlzOiBfc3VzeS10cnVuY2F0ZS1saXN0KCRrZXlzLXZhbHVlLCBsZW5ndGgoJGtleXMtdmFsdWUpIC0gMSk7XG4gICRfbGVuZ3RoOiBsZW5ndGgoJF9rZXlzKTtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJF9sZW5ndGgge1xuICAgICRfbjogMCAtICRpO1xuICAgICRfbGV2ZWw6IF9zdXN5LXRydW5jYXRlLWxpc3QoJF9rZXlzLCAkX2xlbmd0aCArICRfbik7XG4gICAgJF9sZXZlbDogX3N1c3ktZGVlcC1nZXQoJG1hcCwgJF9sZXZlbC4uLik7XG4gICAgJF9tZXJnZTogbnRoKCRfa2V5cywgJF9uKTtcbiAgICAkX21lcmdlOiAoJF9tZXJnZTogJF92YWx1ZSk7XG4gICAgJF9yZXR1cm46IGlmKCRfbGV2ZWwsIG1hcC1tZXJnZSgkX2xldmVsLCAkX21lcmdlKSwgJF9tZXJnZSk7XG4gICAgJF92YWx1ZTogJF9yZXR1cm47XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgTWVyZ2Vcbi8vIC0tLS0tLS0tLS1cbi8vIFJldHVybiAyIG9iamVjdHMgb2YgYW55IGRlcHRoLCBtZXJnZWRcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLW1lcmdlKFxuICAkbWFwMSxcbiAgJG1hcDJcbikge1xuXG4gIEBpZiB0eXBlLW9mKCRtYXAxKSAhPSBtYXAgb3IgdHlwZS1vZigkbWFwMikgIT0gbWFwIHtcbiAgICAkbWFwMTogJG1hcDI7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkbWFwMiB7XG4gICAgICAkX25ldzogKCRrZXk6IF9zdXN5X2RlZXAtbWVyZ2UobWFwLWdldCgkbWFwMSwgJGtleSksICR2YWx1ZSkpO1xuICAgICAgJG1hcDE6IG1hcC1tZXJnZSgkbWFwMSwgJF9uZXcpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJG1hcDE7XG59XG5cblxuLy8gRGVlcCBIYXMtS2V5XG4vLyAtLS0tLS0tLS0tLS1cbi8vIC0gUmV0dXJuIHRydWUgaWYgYSBkZWVwIGtleSBleGlzdHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLWhhcy1rZXkoXG4gICRtYXAsXG4gICRrZXlzLi4uXG4pIHtcbiAgJF9yZXR1cm46IG51bGw7XG4gICRfc3RvcDogZmFsc2U7XG5cbiAgQGVhY2ggJGtleSBpbiAka2V5cyB7XG4gICAgQGlmIG5vdCgkX3N0b3ApIHtcbiAgICAgICRfcmV0dXJuOiBtYXAtaGFzLWtleSgkbWFwLCAka2V5KTtcbiAgICB9XG5cbiAgICBAaWYgJF9yZXR1cm4ge1xuICAgICAgJG1hcDogbWFwLWdldCgkbWFwLCAka2V5KTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfc3RvcDogdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gU2V0dGluZ3Ncbi8vID09PT09PT09XG5cbi8vIFZlcnNpb25cbi8vIC0tLS0tLS1cbiRzdS12ZXJzaW9uOiAxLjE7XG5cblxuLy8gRGVmYXVsdCBTZXR0aW5nc1xuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogVGhlIGJhc2ljIHNldHRpbmdzXG4kc3VzeS1kZWZhdWx0czogKFxuICBjb2x1bW5zOiA0LFxuICBndXR0ZXJzOiAuMjUsXG4pO1xuXG5cbi8vIFVzZXIgU2V0dGluZ3Ncbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gRGVmaW5lIHRoZSAkc3VzeSB2YXJpYWJsZSB3aXRoIGEgbWFwIG9mIHlvdXIgb3duIHNldHRpbmdzLlxuLy8gLSBTZXQgRUlUSEVSICRjb2x1bW4td2lkdGggT1IgJGNvbnRhaW5lclxuLy8gLSBVc2UgJGNvbHVtbi13aWR0aCBmb3Igc3RhdGljIGxheW91dHNcbiRzdXN5OiAoKSAhZGVmYXVsdDtcblxuXG4vLyBTdXN5IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBQUklWQVRFOiBBZGQgZGVmYXVsdHMgdG8gU3VzeVxuQG1peGluIHN1c3ktZGVmYXVsdHMoXG4gICRkZWZhdWx0c1xuKSB7XG4gICRzdXN5LWRlZmF1bHRzOiBtYXAtbWVyZ2UoJHN1c3ktZGVmYXVsdHMsICRkZWZhdWx0cykgIWdsb2JhbDtcbn1cblxuXG4vLyBTdXN5IFNldFxuLy8gLS0tLS0tLS1cbi8vIENoYW5nZSBvbmUgc2V0dGluZ1xuLy8gLSAka2V5ICAgOiBzZXR0aW5nIG5hbWVcbi8vIC0gJHZhbHVlIDogc2V0dGluZyB2YWx1ZVxuQG1peGluIHN1c3ktc2V0KFxuICAka2V5LXZhbHVlLi4uXG4pIHtcbiAgJHN1c3k6IF9zdXN5LWRlZXAtc2V0KCRzdXN5LCAka2V5LXZhbHVlLi4uKSAhZ2xvYmFsO1xufVxuXG5cbi8vIFN1c3kgR2V0XG4vLyAtLS0tLS0tLVxuLy8gUmV0dXJuIG9uZSBzZXR0aW5nIGZyb20gYSBncmlkXG4vLyAtICRrZXkgICAgIDogPGtleXdvcmQ+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+XG5AbWl4aW4gc3VzeS1tZWRpYShcbiAgJHF1ZXJ5LFxuICAkbm8tcXVlcnk6ICRzdXN5LW1lZGlhLWZhbGxiYWNrXG4pIHtcbiAgJG9sZC1jb250ZXh0OiAkX3N1c3ktbWVkaWEtY29udGV4dDtcbiAgJG5hbWU6IGlmKG1hcC1oYXMta2V5KCRzdXN5LW1lZGlhLCAkcXVlcnkpLCAkcXVlcnksIG51bGwpO1xuICAkcXVlcnk6IHN1c3ktZ2V0LW1lZGlhKCRxdWVyeSk7XG4gICRxdWVyeTogc3VzeS1wYXJzZS1tZWRpYSgkcXVlcnkpO1xuXG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtY29udGV4dCgkcXVlcnksICRuYW1lKTtcblxuICBAaWYgJG5vLXF1ZXJ5IGFuZCB0eXBlLW9mKCRuby1xdWVyeSkgIT0gc3RyaW5nIHtcbiAgICBAY29udGVudDtcbiAgfSBAZWxzZSB7XG4gICAgQG1lZGlhICN7c3VzeS1yZW5kZXItbWVkaWEoJHF1ZXJ5KX0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgQGlmIHR5cGUtb2YoJG5vLXF1ZXJ5KSA9PSBzdHJpbmcge1xuICAgICAgI3skbm8tcXVlcnl9ICYge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LW1lZGlhLWNvbnRleHQoJG9sZC1jb250ZXh0LCAkY2xlYW46IHRydWUpO1xufVxuXG5cbi8vIE1lZGlhIFJvdXRlclxuLy8gLS0tLS0tLS0tLS0tXG4vLyBSb3V0IG1lZGlhIGFyZ3VtZW50cyB0byB0aGUgY29ycmVjdCBtaXhpbi5cbkBtaXhpbiBzdXN5LW1lZGlhLXJvdXRlcihcbiAgJHF1ZXJ5LFxuICAkbm8tcXVlcnk6ICRzdXN5LW1lZGlhLWZhbGxiYWNrXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChicmVha3BvaW50LCAobWl4aW46IGJyZWFrcG9pbnQpLCAkd2FybjogZmFsc2UpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktbWVkaWEoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFVwZGF0ZSBDb250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBTZXQgdGhlIG5ldyBtZWRpYSBjb250ZXh0XG5AbWl4aW4gc3VzeS1tZWRpYS1jb250ZXh0KFxuICAkcXVlcnksXG4gICRuYW1lOiBudWxsLFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJHF1ZXJ5OiBtYXAtbWVyZ2UoKG5hbWU6ICRuYW1lKSwgJHF1ZXJ5KTtcblxuICBAaWYgJGNsZWFuIHtcbiAgICAkX3N1c3ktbWVkaWEtY29udGV4dDogJHF1ZXJ5ICFnbG9iYWw7XG4gIH0gQGVsc2Uge1xuICAgICRfc3VzeS1tZWRpYS1jb250ZXh0OiBtYXAtbWVyZ2UoJF9zdXN5LW1lZGlhLWNvbnRleHQsICRxdWVyeSkgIWdsb2JhbDtcbiAgfVxufVxuXG5cbi8vIE1lZGlhIENvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgZnVsbCBtZWRpYSBjb250ZXh0LCBvciBhIHNpbmdsZSBtZWRpYSBwcm9wZXJ0eSAoZS5nLiBtaW4td2lkdGgpXG5AZnVuY3Rpb24gc3VzeS1tZWRpYS1jb250ZXh0KFxuICAkcHJvcGVydHk6IGZhbHNlXG4pIHtcbiAgQGlmICRwcm9wZXJ0eSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRfc3VzeS1tZWRpYS1jb250ZXh0LCAkcHJvcGVydHkpO1xuICB9IEBlbHNlIHtcbiAgICBAcmV0dXJuICRfc3VzeS1tZWRpYS1jb250ZXh0O1xuICB9XG59XG5cblxuLy8gR2V0IE1lZGlhXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybiBhIG5hbWVkIG1lZGlhLXF1ZXJ5IGZyb20gJHN1c3ktbWVkaWEuXG4vLyAtICRuYW1lOiA8a2V5PlxuQGZ1bmN0aW9uIHN1c3ktZ2V0LW1lZGlhKFxuICAkbmFtZVxuKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkc3VzeS1tZWRpYSwgJG5hbWUpIHtcbiAgICAkbWFwLXZhbHVlOiBtYXAtZ2V0KCRzdXN5LW1lZGlhLCAkbmFtZSk7XG4gICAgQGlmICgkbmFtZSA9PSAkbWFwLXZhbHVlKSB7XG4gICAgICAkbmFtZTogJG1hcC12YWx1ZTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRuYW1lOiBzdXN5LWdldC1tZWRpYSgkbWFwLXZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRuYW1lO1xufVxuXG5cbi8vIFJlbmRlciBNZWRpYVxuLy8gLS0tLS0tLS0tLS0tXG4vLyBCdWlsZCBhIG1lZGlhLXF1ZXJ5IHN0cmluZyBmcm9tIHZhcmlvdXMgbWVkaWEgc2V0dGluZ3NcbkBmdW5jdGlvbiBzdXN5LXJlbmRlci1tZWRpYShcbiAgJHF1ZXJ5XG4pIHtcbiAgJG91dHB1dDogbnVsbDtcbiAgQGVhY2ggJHByb3BlcnR5LCAkdmFsdWUgaW4gJHF1ZXJ5IHtcbiAgICAkc3RyaW5nOiBudWxsO1xuXG4gICAgQGlmICRwcm9wZXJ0eSA9PSBtZWRpYSB7XG4gICAgICAkc3RyaW5nOiAkdmFsdWU7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkc3RyaW5nOiAnKCN7JHByb3BlcnR5fTogI3skdmFsdWV9KSc7XG4gICAgfVxuXG4gICAgJG91dHB1dDogaWYoJG91dHB1dCwgJyN7JG91dHB1dH0gYW5kICN7JHN0cmluZ30nLCAkc3RyaW5nKTtcbiAgfVxuXG4gIEByZXR1cm4gJG91dHB1dDtcbn1cblxuXG4vLyBQYXJzZSBNZWRpYVxuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiBwYXJzZWQgbWVkaWEtcXVlcnkgc2V0dGluZ3MgYmFzZWQgb24gc2hvcnRoYW5kXG5AZnVuY3Rpb24gc3VzeS1wYXJzZS1tZWRpYShcbiAgJHF1ZXJ5XG4pIHtcbiAgJG1xOiBudWxsO1xuICBAaWYgdHlwZS1vZigkcXVlcnkpID09IG1hcCB7XG4gICAgJG1xOiAkcXVlcnk7XG4gIH0gQGVsc2UgaWYgdHlwZS1vZigkcXVlcnkpID09IG51bWJlciB7XG4gICAgJG1xOiAobWluLXdpZHRoOiAkcXVlcnkpO1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBsaXN0IGFuZCBsZW5ndGgoJHF1ZXJ5KSA9PSAyIHtcbiAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gbnVtYmVyIHtcbiAgICAgICRtcTogKFxuICAgICAgICBtaW4td2lkdGg6IG1pbigkcXVlcnkuLi4pLFxuICAgICAgICBtYXgtd2lkdGg6IG1heCgkcXVlcnkuLi4pLFxuICAgICAgKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRtcTogKG50aCgkcXVlcnksIDEpOiBudGgoJHF1ZXJ5LCAyKSk7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAkbXE6IChtZWRpYTogJyN7JHF1ZXJ5fScpO1xuICB9XG5cbiAgQHJldHVybiAkbXE7XG59XG4iLCJAaW1wb3J0IFwiLi9taXhpbnNcIjtcblxuLy8gYXJlIHdlIGluIGRlYnVnIG1vZGU/XG4kZGVidWc6IHRydWUgIWRlZmF1bHQ7XG4kZGVidWc6IGZhbHNlO1xuXG4kc3VzeVNldHVwOiAoXG4gIGNvbHVtbnM6IDEyLFxuICBndXR0ZXJzOiAxLzIsXG4gIG1hdGg6IGZsdWlkLFxuICBvdXRwdXQ6IGZsb2F0LFxuKTtcblxuQGlmICRkZWJ1ZyA9PSB0cnVlIHtcbiAgJHN1c3k6IG1hcC1tZXJnZSgkc3VzeVNldHVwLCAoZGVidWc6IChpbWFnZTogc2hvdykpKTtcbn1cbkBlbHNlIHtcbiAgJHN1c3k6IG1hcC1tZXJnZSgkc3VzeVNldHVwLCAoKSk7XG59XG5cblxuLy8gQ29sb3JzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJGNXaGl0ZTogICAgICAgICAgICAjZmZmZmZmICA7XG4kY1RleHQ6ICAgICAgICAgICAgIGRhcmtlbigkY1doaXRlLCA5NCUpO1xuJGNHcmV5LS1saWdodDogICAgICBkYXJrZW4oJGNXaGl0ZSwgNiUpO1xuJGNHcmV5LS1kYXJrOiAgICAgICBkYXJrZW4oJGNXaGl0ZSwgODAlKTtcblxuJGNMaW5rOiAgICAgICAgICAgICAkY1RleHQ7XG4kY0xpbmtJc0FjdGl2ZTogICAgIGxpZ2h0ZW4oJGNUZXh0LCA1MCUpO1xuJGNMaW5rSG92ZXI6ICAgICAgICAjY2IyZTI2O1xuXG5cbiRjTGlua0hvdmVyMDE6ICMyZDUxOTk7XG4kY0xpbmtIb3ZlcjAyOiAjY2IyZTI2O1xuJGNMaW5rSG92ZXIwMzogIzUwYWZhNztcbiRjTGlua0hvdmVyMDQ6ICNkNTMwNjQ7XG4kY0xpbmtIb3ZlcjA1OiAjMmQ1MTk5O1xuJGNMaW5rSG92ZXIwNjogI2NiMmUyNjtcbiRjTGlua0hvdmVyMDc6ICM1MGFmYTc7XG4kY0xpbmtIb3ZlcjA4OiAjZDUzMDY0O1xuJGNMaW5rSG92ZXIwOTogIzJkNTE5OTtcbiRjTGlua0hvdmVyMTA6ICNjYjJlMjY7XG4kY0xpbmtIb3ZlcjExOiAjNTBhZmE3O1xuJGNMaW5rSG92ZXIxMjogI2Q1MzA2NDtcbiRjTGlua0hvdmVyMTM6ICMyZDUxOTk7XG4kY0xpbmtIb3ZlcjE0OiAjY2IyZTI2O1xuJGNMaW5rSG92ZXIxNTogIzUwYWZhNztcbiRjTGlua0hvdmVyMTY6ICNkNTMwNjQ7XG4kY0xpbmtIb3ZlcjE3OiAjMmQ1MTk5O1xuJGNMaW5rSG92ZXIxODogI2NiMmUyNjtcbiRjTGlua0hvdmVyMTk6ICM1MGFmYTc7XG4kY0xpbmtIb3ZlcjIwOiAjZDUzMDY0O1xuXG5cblxuXG4kY0JhY2tncm91bmRDb2xvcjogICRjV2hpdGU7XG5cblxuLy8gVHlwb2dyYXBoeVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXG4kZm9udC1uYW1lOiAoXG4gIHNhbnNibGFjazogJ1NGR1pTYW5zQmxhY2snXG4pO1xuXG4kZm9udC1mYW1pbHk6IChcbiAgc2FuczogI3tIZWx2ZXRpY2EgTmV1ZSxIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZn0sXG4gIHNhbnNibGFjazogI3ttYXAtZ2V0KCRmb250LW5hbWUsIHNhbnNibGFjayksIHNhbnMtc2VyaWZ9XG4pO1xuXG4kZm9udC13ZWlnaHQtYm9sZDogKFxuICBzYW5zOiA3MDAsXG4gIHNhbnNibGFjazo4MDBcbik7XG5cbiRmb250RmFjdG9yczogKFxuICBiYXNlOiAxN3B4LFxuICBwOiAxcmVtLFxuICBoMTogMnJlbSxcbiAgaDI6IDJyZW0sXG4gIGgzOiAxcmVtLFxuKTtcblxuJGZvbnRGYWN0b3JzTWVudTogKFxuICBtZXRhOiAxLjE1cmVtLFxuICBuYW1lOiAyLjNyZW0sXG4gIEwxOiAxLjY1cmVtLFxuICBMMjogMS4xNXJlbSxcbik7XG5cbiRmb250RmFjdG9yc01lbnVNb2JpbGU6IChcbiAgbWV0YTogMS4xNXJlbSxcbiAgbmFtZTogMi4zcmVtLFxuICBMMTogMS42NXJlbSxcbiAgTDI6IDFyZW0sXG4pO1xuXG5cbi8vIExheW91dFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuJG1heC13aWR0aDogMTEzMHB4O1xuXG5cblxuLy8gdGhlIHNwYWNpbmcgZm9yIHRoZSB3aGl0ZSBjdWJlcyBvbiB0aGUgYmFja2dyb3VuZFxuJHNwYWNlQXJyb3VuZENvbnRlbnQ6IDAuNGVtO1xuIiwiLy8gdXNhZ2U6IEBpbmNsdWRlIGZvbnQ7XG4vLyBjaGVjayBodHRwczovL2dvb2dsZS13ZWJmb250cy1oZWxwZXIuaGVyb2t1YXBwLmNvbS9cbkBtaXhpbiBmb250ZGVmKCRmb250UGF0aCwgJGZvbnRWZXJzaW9uOlwiMS4wLjBcIikge1xuICBzcmM6ICB1cmwoJyN7JGZvbnRQYXRofS5lb3Q/dj0jeyRmb250VmVyc2lvbn0nKTtcbiAgc3JjOiAgdXJsKCcjeyRmb250UGF0aH0uZW90PyNpZWZpeCZ2PSN7JGZvbnRWZXJzaW9ufScpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSxcbiAgdXJsKCcjeyRmb250UGF0aH0ud29mZjI/dj0jeyRmb250VmVyc2lvbn0nKSBmb3JtYXQoJ3dvZmYyJyksXG4gIHVybCgnI3skZm9udFBhdGh9LndvZmY/dj0jeyRmb250VmVyc2lvbn0nKSBmb3JtYXQoJ3dvZmYnKVxufVxuXG5AbWl4aW4gZm9udCgkZm9udDpzYW5zKSB7XG4gIGZvbnQtZmFtaWx5OiBtYXAtZ2V0KCRmb250LWZhbWlseSwgJGZvbnQpO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG59XG5cbkBtaXhpbiBmb250LWJvbGQoJGZvbnQ6c2Fucykge1xuICBmb250LWZhbWlseTogbWFwLWdldCgkZm9udC1mYW1pbHksICRmb250KTtcbiAgZm9udC13ZWlnaHQ6IG1hcC1nZXQoJGZvbnQtd2VpZ2h0LWJvbGQsICRmb250KTtcbn1cblxuQG1peGluIGZvbnRVcHBlcmNhc2Uge1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBsZXR0ZXItc3BhY2luZzogMC4xNWVtO1xufVxuXG5AbWl4aW4gZ3JpZC1jb2x1bW4tZ3JhZGllbnQoJHZhbHVlcy4uLikge1xuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICN7JHZhbHVlc30pO1xufVxuXG5cbkBmdW5jdGlvbiBncmFkaWVudC1zdG9wcygkZ3JpZC1jb2x1bW5zKSB7XG4gICR0cmFuc3BhcmVudDogcmdiYSgwLDAsMCwwKTtcbiAgJGNvbG9yOiByZ2JhKDI1NSwwLDAsMC4wNyk7XG5cbiAgJGNvbHVtbi1vZmZzZXQ6IDA7XG5cbiAgJHZhbHVlczogKCRjb2xvciAwKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbHVtbnMge1xuXG4gICAgQGlmICRpICE9ICRncmlkLWNvbHVtbnMgIHtcbiAgICAgICRjb2x1bW4tb2Zmc2V0OiAkY29sdW1uLW9mZnNldCArIHNwYW4oMSk7XG4gICAgICAkdmFsdWVzOiBhcHBlbmQoJHZhbHVlcywgJGNvbG9yICRjb2x1bW4tb2Zmc2V0LCBjb21tYSk7XG4gICAgICAkdmFsdWVzOiBhcHBlbmQoJHZhbHVlcywgJHRyYW5zcGFyZW50ICRjb2x1bW4tb2Zmc2V0LCBjb21tYSk7XG4gICAgICAkY29sdW1uLW9mZnNldDogJGNvbHVtbi1vZmZzZXQgKyBndXR0ZXIoKTtcbiAgICAgICR2YWx1ZXM6IGFwcGVuZCgkdmFsdWVzLCAkdHJhbnNwYXJlbnQgJGNvbHVtbi1vZmZzZXQsIGNvbW1hKTtcbiAgICAgICR2YWx1ZXM6IGFwcGVuZCgkdmFsdWVzLCAkY29sb3IgJGNvbHVtbi1vZmZzZXQsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRjb2x1bW4tb2Zmc2V0OiAkY29sdW1uLW9mZnNldCArIHNwYW4oMSk7XG4gICAgICAkdmFsdWVzOiBhcHBlbmQoJHZhbHVlcywgJGNvbG9yICRjb2x1bW4tb2Zmc2V0LCBjb21tYSk7XG4gICAgICAkdmFsdWVzOiBhcHBlbmQoJHZhbHVlcywgJHRyYW5zcGFyZW50ICRjb2x1bW4tb2Zmc2V0LCBjb21tYSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkdmFsdWVzO1xufVxuXG5cblxuQG1peGluIGNsZWFyZml4KCkge1xuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGNsZWFyOiBib3RoO1xuICB9XG59XG5cbkBtaXhpbiBzaENvbnRhaW5lcigkYXJnLi4uKSB7XG5cbiAgQGluY2x1ZGUgY29udGFpbmVyKCRhcmcpO1xuXG4gIEBpZiAkZGVidWcgPT0gdHJ1ZSB7XG4gICAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tZ3JhZGllbnQoZ3JhZGllbnQtc3RvcHMoMTIpKTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IHNwYW4obGFzdCAxMik7XG4gIH1cbn1cblxuQG1peGluIGFycm93LWdlbmVyYWwoJGlubmVyc2VsZWN0b3IsICRzaXplKSB7XG4gIGhlaWdodDogJHNpemUqMjtcbiAgd2lkdGg6ICRzaXplKjI7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgLy8gdG9wOjUwJTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLiN7JGlubmVyc2VsZWN0b3J9IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7O1xuICAgIGhlaWdodDogJHNpemU7XG4gICAgd2lkdGg6ICRzaXplO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtaXgoJGNDb3Jwb3JhdGVCbHVlLCB0cmFuc3BhcmVudCwgNzUpO1xuICAgICY6aG92ZXJ7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtaXgoJGNUaGVtZUdyZWVuLCB0cmFuc3BhcmVudCwgNzUpO1xuICAgIH1cblxuICAgIG1hcmdpbi10b3A6ICgkc2l6ZS8yKSouOTsgLy8gYSBsaXR0bGUgYml0IGhpZ2h0ZXJcblxuICAgICY6OmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBoZWlnaHQ6ICRzaXplO1xuICAgICAgd2lkdGg6ICRzaXplO1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcuLi9pbWFnZXMvc2xpZGVyLWFycm93LXNoLnN2ZycpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gYXJyb3ctcHJldigkaW5uZXJzZWxlY3RvciwgJHNpemUpIHtcbiAgQGluY2x1ZGUgYXJyb3ctZ2VuZXJhbCgkaW5uZXJzZWxlY3RvciwgJHNpemUpO1xuICAuI3skaW5uZXJzZWxlY3Rvcn0ge1xuICAgIGxlZnQ6IDA7XG4gICAgJjo6YWZ0ZXIge1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gYXJyb3ctbmV4dCgkaW5uZXJzZWxlY3RvciwgJHNpemUpIHtcbiAgQGluY2x1ZGUgYXJyb3ctZ2VuZXJhbCgkaW5uZXJzZWxlY3RvciwgJHNpemUpO1xuICAuI3skaW5uZXJzZWxlY3Rvcn0ge1xuICAgIHJpZ2h0OiAwO1xuICAgICY6OmFmdGVyIHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7O1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaW5saW5lLWljb24oJGZpbGVuYW1lLCAkc2l6ZSkge1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXDIwNjBcIjtcbiAgICBwYWRkaW5nLWxlZnQ6IDFlbTtcbiAgICBoZWlnaHQ6IDFlbTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRzaXplO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL0Fzc2V0cy9JbWFnZXMvXCIgKyAkZmlsZW5hbWUpO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjtcbiAgfVxufVxuIiwiLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vICRWYXJpYWJsZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTdXBwb3J0c1xuLy8gQG1lZGlhIG1pbi13aWR0aFxuLy8gQG1lZGlhIG1heC13aWR0aFxuLy8gQG1lZGlhIG1pbi13aWR0aCBhbmQgbWF4LXdpZHRoXG4kdmlld3BvcnQtaW5jcmVtZW50OiAwLjFweDsgLy8gY3VzdG9taXplIHRvIHN1aXRlXG5cblxuLy8gV2lkZS1EZXNrdG9wXG4kd2lkZS1kZXNrdG9wOiAxMjQwcHg7IC8vIGN1c3RvbWl6ZSB0byBzdWl0ZVxuJHByZS13aWRlLWRlc2t0b3A6ICR3aWRlLWRlc2t0b3AgLSAkdmlld3BvcnQtaW5jcmVtZW50O1xuXG4vLyBEZXNrdG9wXG4kZGVza3RvcDogMTAyNHB4OyAvLyBjdXN0b21pemUgdG8gc3VpdGVcbiRwcmUtZGVza3RvcDogJGRlc2t0b3AgLSAkdmlld3BvcnQtaW5jcmVtZW50O1xuLy8gVGFibGV0XG4kdGFibGV0OiA3NjhweDsgLy8gY3VzdG9taXplIHRvIHN1aXRlXG4kcHJlLXRhYmxldDogJHRhYmxldCAtICR2aWV3cG9ydC1pbmNyZW1lbnQ7XG4vLyBtb2JpbGVcbiRtb2JpbGU6IDU2MHB4OyAvLyBjdXN0b21pemUgdG8gc3VpdGVcbiRwb3N0LW1vYmlsZTogJG1vYmlsZSArICR2aWV3cG9ydC1pbmNyZW1lbnQ7XG4vLyBDb25zdHJhaW50c1xuJG1pbjogbWluLXdpZHRoO1xuJG1heDogbWF4LXdpZHRoO1xuQG1peGluIG1lZGlhUXVlcnkoJGNvbnN0cmFpbnQsICR2aWV3cG9ydDEsICR2aWV3cG9ydDI6IG51bGwpIHtcbiAgICAgQGlmICRjb25zdHJhaW50ID09ICRtaW57XG4gICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kICgkbWluOiAkdmlld3BvcnQxKSB7XG4gICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgQGVsc2UgaWYgJGNvbnN0cmFpbnQgPT0gJG1heCB7XG4gICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAoJG1heDogJHZpZXdwb3J0MSl7XG4gICAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAoJG1pbjogJHZpZXdwb3J0MSkgYW5kICgkbWF4OiAkdmlld3BvcnQyKXtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiQGltcG9ydCAnLi92YXJpYWJsZXMnO1xuXG4vLyBGb250XG4vLyBjaGVjayBodHRwczovL2dvb2dsZS13ZWJmb250cy1oZWxwZXIuaGVyb2t1YXBwLmNvbS9cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBAZm9udC1mYWNlIHtcbi8vICAgZm9udC1mYW1pbHk6IG1hcC1nZXQoJGZvbnQtbmFtZSwgc2Fucyk7XG4vLyAgIEBpbmNsdWRlIGZvbnRkZWYoJy4uL0ZvbnRzL2Ryb2lkLXNhbnMtdjYtbGF0aW4vZHJvaWQtc2Fucy12Ni1sYXRpbi1yZWd1bGFyJyk7XG4vLyAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4vLyAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbi8vIH1cbi8vXG4vLyBAZm9udC1mYWNlIHtcbi8vICAgZm9udC1mYW1pbHk6IG1hcC1nZXQoJGZvbnQtbmFtZSwgc2Fucyk7XG4vLyAgIGZvbnQtd2VpZ2h0OiBtYXAtZ2V0KCRmb250LXdlaWdodC1ib2xkLCBzYW5zKTtcbi8vICAgZm9udC1zdHlsZTogbm9ybWFsO1xuLy8gICBAaW5jbHVkZSBmb250ZGVmKCcuLi9Gb250cy9kcm9pZC1zYW5zLXY2LWxhdGluL2Ryb2lkLXNhbnMtdjYtbGF0aW4tNzAwJyk7XG4vLyB9XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogbWFwLWdldCgkZm9udC1uYW1lLCBzYW5zYmxhY2spO1xuICBmb250LXdlaWdodDogbWFwLWdldCgkZm9udC13ZWlnaHQtYm9sZCwgc2Fuc2JsYWNrKTtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBzcmM6IHVybCgnLi4vRm9udHMvSGVsdmV0aWNhLzJCNkQ0OV8wXzAuZW90Jyk7XG4gIHNyYzogdXJsKCcuLi9Gb250cy9IZWx2ZXRpY2EvMkI2RDQ5XzBfMC5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLCB1cmwoJy4uL0ZvbnRzL0hlbHZldGljYS8yQjZENDlfMF8wLndvZmYnKSBmb3JtYXQoJ3dvZmYnKSwgdXJsKCcuLi9Gb250cy9IZWx2ZXRpY2EvMkI2RDQ5XzBfMC50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyk7XG59XG5cbi8qIElDT05TICovXG5cbi8vIEBmb250LWZhY2Uge1xuLy8gICAgIGZvbnQtZmFtaWx5OiAnaWNvbW9vbic7XG4vLyAgICAgc3JjOiAgdXJsKCcuLi9Gb250cy9IZWx2ZXRpY2EvaWNvbW9vbi5lb3Q/MnFjZDF0Jyk7XG4vLyAgICAgc3JjOiAgdXJsKCcuLi9Gb250cy9IZWx2ZXRpY2EvaWNvbW9vbi5lb3Q/MnFjZDF0I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLFxuLy8gICAgIHVybCgnLi4vRm9udHMvSGVsdmV0aWNhL2ljb21vb24udHRmPzJxY2QxdCcpIGZvcm1hdCgndHJ1ZXR5cGUnKSxcbi8vICAgICB1cmwoJy4uL0ZvbnRzL0hlbHZldGljYS9pY29tb29uLndvZmY/MnFjZDF0JykgZm9ybWF0KCd3b2ZmJyksXG4vLyAgICAgdXJsKCcuLi9Gb250cy9IZWx2ZXRpY2EvaWNvbW9vbi5zdmc/MnFjZDF0I01CQS1TdHlsZWd1aWRlJykgZm9ybWF0KCdzdmcnKTtcbi8vICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuLy8gICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbi8vIH1cbiIsIkBpbXBvcnQgJy4uL3ZhcmlhYmxlcyc7XG5cbmh0bWwge1xuICBmb250LXNpemU6IG1hcC1nZXQoJGZvbnRGYWN0b3JzLCBiYXNlKTtcbiAgQGluY2x1ZGUgbWVkaWFRdWVyeSgkbWF4LCAkZGVza3RvcCkge1xuICAgIGZvbnQtc2l6ZTogbWFwLWdldCgkZm9udEZhY3RvcnMsIGJhc2UpICogMC44O1xuICB9XG4gIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gIEBpbmNsdWRlIGZvbnQoc2Fucyk7XG4gIGNvbG9yOiAkY1RleHQ7XG59XG5cbmEge1xuICBjb2xvcjogJGNMaW5rO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgJjpob3ZlciB7XG4gICAgY29sb3I6ICRjTGlua0hvdmVyO1xuXG4gICAgLnJhbmRvbTAxICYgeyBjb2xvcjogJGNMaW5rSG92ZXIwMTsgfVxuICAgIC5yYW5kb20wMiAmIHsgY29sb3I6ICRjTGlua0hvdmVyMDI7IH1cbiAgICAucmFuZG9tMDMgJiB7IGNvbG9yOiAkY0xpbmtIb3ZlcjAzOyB9XG4gICAgLnJhbmRvbTA0ICYgeyBjb2xvcjogJGNMaW5rSG92ZXIwNDsgfVxuICAgIC5yYW5kb20wNSAmIHsgY29sb3I6ICRjTGlua0hvdmVyMDU7IH1cbiAgICAucmFuZG9tMDYgJiB7IGNvbG9yOiAkY0xpbmtIb3ZlcjA2OyB9XG4gICAgLnJhbmRvbTA3ICYgeyBjb2xvcjogJGNMaW5rSG92ZXIwNzsgfVxuICAgIC5yYW5kb20wOCAmIHsgY29sb3I6ICRjTGlua0hvdmVyMDg7IH1cbiAgICAucmFuZG9tMDkgJiB7IGNvbG9yOiAkY0xpbmtIb3ZlcjA5OyB9XG4gICAgLnJhbmRvbTEwICYgeyBjb2xvcjogJGNMaW5rSG92ZXIxMDsgfVxuICAgIC5yYW5kb20xMSAmIHsgY29sb3I6ICRjTGlua0hvdmVyMTE7IH1cbiAgICAucmFuZG9tMTIgJiB7IGNvbG9yOiAkY0xpbmtIb3ZlcjEyOyB9XG4gICAgLnJhbmRvbTEzICYgeyBjb2xvcjogJGNMaW5rSG92ZXIxMzsgfVxuICAgIC5yYW5kb20xNCAmIHsgY29sb3I6ICRjTGlua0hvdmVyMTQ7IH1cbiAgICAucmFuZG9tMTUgJiB7IGNvbG9yOiAkY0xpbmtIb3ZlcjE1OyB9XG4gICAgLnJhbmRvbTE2ICYgeyBjb2xvcjogJGNMaW5rSG92ZXIxNjsgfVxuICAgIC5yYW5kb20xNyAmIHsgY29sb3I6ICRjTGlua0hvdmVyMTc7IH1cbiAgICAucmFuZG9tMTggJiB7IGNvbG9yOiAkY0xpbmtIb3ZlcjE4OyB9XG4gICAgLnJhbmRvbTE5ICYgeyBjb2xvcjogJGNMaW5rSG92ZXIxOTsgfVxuICAgIC5yYW5kb20yMCAmIHsgY29sb3I6ICRjTGlua0hvdmVyMjA7IH1cbiAgfVxufVxuXG5cblxuYiwgc3Ryb25nLCBzcGFuLnN0cm9uZyB7XG4gIEBpbmNsdWRlIGZvbnQtYm9sZChzYW5zYmxhY2spO1xufVxuXG51bCB7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgbWFyZ2luLXRvcDogMC40ZW07XG4gIG1hcmdpbi1ib3R0b206IDAuNGVtO1xufVxuXG5wIHtcbiAgQGluY2x1ZGUgZm9udChzYW5zKTtcbn1cblxuaDEsIGgze1xuICBAaW5jbHVkZSBmb250LWJvbGQoc2Fuc2JsYWNrKTtcbn1cblxucCB7XG4gIGZvbnQtc2l6ZTogbWFwLWdldCgkZm9udEZhY3RvcnMsIHApO1xuICBtYXJnaW4tdG9wOiAwLjdlbTtcbiAgbWFyZ2luLWJvdHRvbTogMC44ZW07XG59XG5cbmgxLFxuaDIsXG5oMyB7XG4gIG1hcmdpbi10b3A6IDAuMjVlbTtcbiAgbWFyZ2luLWJvdHRvbTogMC4xcmVtO1xuICBsaW5lLWhlaWdodDogMS4xO1xufVxuXG5oMSB7XG4gIGZvbnQtc2l6ZTogbWFwLWdldCgkZm9udEZhY3RvcnMsIGgxKTtcbn1cblxuaDIge1xuICBAaW5jbHVkZSBmb250KHNhbnMpO1xuICBmb250LXNpemU6IG1hcC1nZXQoJGZvbnRGYWN0b3JzLCBoMik7XG59XG5cbmgzIHtcbiAgbWFyZ2luLXRvcDogMWVtO1xuICBmb250LXNpemU6IG1hcC1nZXQoJGZvbnRGYWN0b3JzLCBoMyk7XG59XG4vLyBubyBtYXJnaW4gdG9wIG9mIGgyIGlmIGZvbGxvd2luZyBhZnRlciBoMVxuaDEgKyBoMiB7XG4gIG1hcmdpbi10b3A6IDA7XG59XG4vLyBubyBtYXJnaW4gYmV0d2VlbiBoMyBhbmQgcFxuaDMgKyBwLFxuaDMgKyB1bCB7XG4gIG1hcmdpbi10b3A6IDA7XG59XG5cbmgxICsgcCxcbmgyICsgcCxcbmgyICsgaDMge1xuICAgIG1hcmdpbi10b3A6IDIuNXJlbTtcbn1cblxuaHIge1xuICBoZWlnaHQ6IDAuMTVyZW07XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci1ib3R0b206IGJsYWNrIHNvbGlkIDAuMTVyZW07XG59XG5cbnAge1xuICBtYXJnaW4tdG9wOiAwLjVlbTtcbiAgbWFyZ2luLWJvdHRvbTogMC43ZW07XG59XG4vLyBlcnJvciEgd2Ugb25seSB1c2UgMS01XG5oNCwgaDUsIGg2LCBoNywgaDgge1xuICBjb2xvcjogbGltZTtcbn1cblxudGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luOiAkc3BhY2VBcnJvdW5kQ29udGVudCAwO1xufVxuLy8gc2V0IHRoZSBoZWFkZXIgYWx3YXlzIHRvIGJvbGRcbnRhYmxlIHRoLFxudGFibGUgdGggcCB7XG4gIEBpbmNsdWRlIGZvbnQtYm9sZChzYW5zYmxhY2spO1xufVxuLy8gbm8gZXh0cmEgc3BhY2UgaW4gcC10YWdzIGluIHRhYmxlXG50YWJsZSB0aCBwLFxudGFibGUgdHIgcCB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbn1cbi8vIGZpcnN0IGxpbmUgYSBib3JkZXIgb24gdG9wXG50YWJsZSB0cjpmaXJzdC1jaGlsZCB7XG4gIGJvcmRlci10b3Atd2lkdGg6IDAuMXJlbTtcbiAgYm9yZGVyLXRvcC1zdHlsZTogc29saWQ7XG4gIGJvcmRlci10b3AtY29sb3I6ICRjVGV4dDtcbn1cbi8vIGFsbCB0aGUgb3RoZXIgbGluZXMgYSBib3JkZXIgb24gYm90dG9tXG50YWJsZSB0ciB7XG4gIGJvcmRlci1ib3R0b20td2lkdGg6IDAuMXJlbTtcbiAgYm9yZGVyLWJvdHRvbS1zdHlsZTogc29saWQ7XG4gIGJvcmRlci1ib3R0b20tY29sb3I6ICRjVGV4dDtcbn1cblxuLndpZHRoRXJyb3Ige1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgd2lkdGg6IDEwMDtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7XG4gIEBtZWRpYSAobWluLXdpZHRoOiAxMTMwcHgpIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cblxuaW5wdXQsXG5zZWxlY3QsXG50ZXh0YXJlYSxcbmJ1dHRvbiB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHdpZHRoOiAxMDAlO1xuICBAaW5jbHVkZSBmb250KHNhbnMpO1xufVxuXG5idXR0b24ge1xuICBib3gtc2hhZG93OiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjI0LCAyMjQsIDIyNCk7XG5cbiAgYm9yZGVyLWNvbG9yOiByZ2IoMTk4LCAxOTgsIDE5OCk7XG4gIGJvcmRlci1zdHlsZTogc29saWQ7XG4gIGJvcmRlci13aWR0aDogMC4xcmVtO1xuICBAaW5jbHVkZSBmb250LWJvbGQoc2Fuc2JsYWNrKTtcblxuICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE5OCwgMTk4LCAxOTgpO1xuICB9XG59XG4iLCJAaW1wb3J0ICcuLi92YXJpYWJsZXMnO1xuXG4uaGVhZGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAvLyBoZWlnaHQ6IDE0MHB4O1xuICBtYXJnaW46IDAgMzBweDtcblxuICBAaW5jbHVkZSBtZWRpYVF1ZXJ5KCRtYXgsICR0YWJsZXQpIHtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cblxuICAubmVvcy1iYWNrZW5kICYge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgei1pbmRleDogNDtcbiAgbWF4LXdpZHRoOiAxMTMwcHg7XG5cbiAgJi1saW9uIHtcbiAgICB3aWR0aDogMTAzcHg7XG4gICAgaGVpZ2h0OiAxMzhweDtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgbGVmdDogMzBweDtcbiAgICB0b3A6IDIwcHg7XG4gICAgei1pbmRleDogOTk5O1xuICAgIC8vIGRpc3BsYXk6IG5vbmU7XG4gICAgaW1nIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gICYtbG9nbyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDI3cHg7XG4gICAgaGVpZ2h0OiAyN3B4O1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDc1cHg7XG4gICAgbGVmdDogMTQzcHg7XG4gICAgei1pbmRleDogNTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7XG5cbiAgICBAaW5jbHVkZSBtZWRpYVF1ZXJ5KCRtYXgsICR0YWJsZXQpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgaW1nIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIH1cblxuICAgIGltZy5oZWFkZXItbG9nby1kZXNrdG9wIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBtZWRpYVF1ZXJ5ICgkbWF4LCAkdGFibGV0KSB7XG4gICAgJi1saW9uLFxuICAgICYtbG9nbyB7IGRpc3BsYXk6IG5vbmU7IH1cbiAgfVxuXG5cbiAgJi1uYXZpZ2F0aW9uLXdyYXAge1xuICAgIC8vIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAvLyB0b3A6IDcycHg7XG4gICAgLy8gbGVmdDogMTQ4cHg7XG4gICAgLy8gcmlnaHQ6IDA7XG4gICAgdG9wOiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIG1hcmdpbjogNzBweCAwIDAgMTQ4cHg7XG5cbiAgICBAaW5jbHVkZSBtZWRpYVF1ZXJ5KCRtYXgsICR0YWJsZXQpIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgIH1cblxuICAgIC5uZW9zLWJhY2tlbmQgJiB7XG4gICAgICBtYXJnaW4tbGVmdDogMXJlbTtcbiAgICB9XG4gICAgcG9zaXRpb246IHN0YXRpYztcbiAgICAvLyBmb250LWZhbWlseTogSGVsdmV0aWNhTmV1ZUxUU3RkLUJsayxIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjtcbiAgICAvLyB6LWluZGV4OiAzO1xuICAgIC8vIGNvbG9yOiAjMDAwO1xuICAgIC5tZXRhLCAubWVudSB7XG4gICAgICBAaW5jbHVkZSBmb250LWJvbGQoc2Fuc2JsYWNrKTtcbiAgICAgIEBpbmNsdWRlIGNsZWFyZml4KCk7XG5cbiAgICAgIHVsIHtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgbWFyZ2luOiAwO1xuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhUXVlcnkoJG1pbiwgJGRlc2t0b3ApIHtcbiAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGxpIHtcbiAgICAgICAgJi5jdXJyZW50IGEsXG4gICAgICAgICYuYWN0aXZlID4gYSB7XG4gICAgICAgICAgY29sb3I6ICRjTGlua0lzQWN0aXZlO1xuICAgICAgICB9XG4gICAgICAgICYubm9ybWFsID4gYSB7XG4gICAgICAgICAgQGluY2x1ZGUgbWVkaWFRdWVyeSAoJG1heCwgJHRhYmxldCkge1xuICAgICAgICAgICAgY29sb3I6ICBibGFjaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIG1hcmdpbjogMCAwLjc1ZW0gMCAwO1xuICAgICAgICBAaW5jbHVkZSBtZWRpYVF1ZXJ5KCRtaW4sICR0YWJsZXQpIHtcbiAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgfVxuICAgICAgfVxuXG5cblxuXG5cbiAgICB9XG5cbiAgICAubWV0YSB7XG4gICAgICBmb250LXNpemU6IG1hcC1nZXQoJGZvbnRGYWN0b3JzTWVudSwgbWV0YSk7XG4gICAgICB0b3A6IC0xLjVlbTtcbiAgICAgIGxlZnQ6IGF1dG87XG4gICAgICBtYXJnaW4tbGVmdDogMC4xNWVtO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIH1cblxuICAgIC5oZWFkZXItbmFtZSB7XG4gICAgICAvLyBtYXJnaW46IDAgMCAtMC4zZW07XG4gICAgICBtYXJnaW46IDA7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICAgIGZvbnQtc2l6ZTogbWFwLWdldCgkZm9udEZhY3RvcnNNZW51LCBuYW1lKTtcbiAgICB9XG5cbiAgICAubWVudTEge1xuICAgICAgZm9udC1zaXplOiBtYXAtZ2V0KCRmb250RmFjdG9yc01lbnUsIEwxKTtcblxuICAgIH1cblxuICAgIC5tZW51MiB7XG4gICAgICBmb250LXNpemU6IG1hcC1nZXQoJGZvbnRGYWN0b3JzTWVudSwgTDIpO1xuICAgICAgcGFkZGluZy10b3A6IDAuMnJlbTtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAxLjZyZW07XG4gICAgICBsaW5lLWhlaWdodDogMS4yO1xuXG4gICAgICAvLyBAaW5jbHVkZSBzcGFuKGZpcnN0IDkgb2YgMTIpO1xuICAgICAgdWwge1xuICAgICAgICBsaSB7XG4gICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgbGk6YWZ0ZXIge1xuICAgICAgICAgIGNvbnRlbnQ6IFwi4oCTXCI7XG4gICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgIG1hcmdpbi1yaWdodDogMC4zNWVtOyAvLyBrZWVwIHRoYXQgdG8gY29tcGVuc2F0ZSBzcGFjZVxuICAgICAgICAgIC8vIG9ubHkgY2hhbmdlIGhlcmVcbiAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwLjFlbTtcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDAuMWVtO1xuICAgICAgICB9XG5cbiAgICAgICAgbGk6bGFzdC1jaGlsZDphZnRlciB7XG4gICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIG1lZGlhUXVlcnkgKCRtYXgsICR0YWJsZXQpIHtcbiAgICAgIC5tZXRhLFxuICAgICAgLm1lbnUxLFxuICAgICAgLm1lbnUyLFxuICAgICAgLmhlYWRlci1uYW1lIHsgZGlzcGxheTogbm9uZTsgfVxuICAgIH1cbiAgfVxufVxuIiwiQGltcG9ydCAnLi4vdmFyaWFibGVzJztcblxuLmNvbnRlbnQge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAkbWF4LXdpZHRoO1xuICBwYWRkaW5nLWxlZnQ6IDE4MHB4O1xuXG4gIEBpbmNsdWRlIG1lZGlhUXVlcnkoJG1heCwgJHRhYmxldCkge1xuICAgIHBhZGRpbmc6IDIlO1xuICB9O1xuXG4gIC5uZW9zLWJhY2tlbmQgJiB7XG4gICAgcGFkZGluZy1sZWZ0OiAxcmVtO1xuICAgIHBhZGRpbmctcmlnaHQ6IDFyZW07XG4gICAgcGFkZGluZy10b3A6IDJyZW07XG4gIH1cblxuICBhIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMC4wNWVtO1xuICAgIGJvcmRlci1ib3R0b206IGJsYWNrIHNvbGlkIDAuMTVlbTtcbiAgfVxuICBhLm5vTGluZSB7XG4gICAgcGFkZGluZy1ib3R0b206IDA7XG4gICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgfVxuICAuZG9VZGVybGluZSB7XG4gICAgcGFkZGluZy1ib3R0b206IDA7XG4gICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgfVxuXG4gIGEubm9VbmRlcmxpbmUsXG4gIGgxIGEsXG4gIGgyIGEge1xuICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gIH1cbiAgYVtocmVmXj1cImh0dHBcIl0ge1xuICAgIEBpbmNsdWRlIGlubGluZS1pY29uKCdpY29uX2V4dGVybmFsLWxpbmsuc3ZnJywgNjAlKTtcbiAgfVxuXG4gIHVsIHtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICB9XG5cbiAgbGkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuOGVtO1xuXG4gICAgJjpiZWZvcmUge1xuICAgICAgY29udGVudDogXCLigJMgXCI7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgdG9wOiAwO1xuICAgIH1cbiAgfVxuXG4gICYtaW5uZXIge1xuICAgIC8vIHdpZHRoOiAxMDAlO1xuICAgIEBpbmNsdWRlIGNvbnRhaW5lcigxMik7XG5cbiAgICAuY29udGVudF9tYWluIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDJyZW07XG4gICAgfVxuXG5cbiAgICBAaW5jbHVkZSBtZWRpYVF1ZXJ5KCRtaW4sICR0YWJsZXQpIHtcbiAgICAgIC5jb250ZW50X21haW4ge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKGZpcnN0IDkgb2YgMTIpO1xuICAgICAgfVxuXG4gICAgICAuY29udGVudF9leHRyYSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4obGFzdCAzIG9mIDEyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBmb3IgY291cnNlXG4gICAgLndpZGUgJiAuY29udGVudF9tYWluICB7XG4gICAgICBAaW5jbHVkZSBzcGFuKDEyIG9mIDEyKTtcbiAgICB9XG4gICAgICBcbiAgICAvLyBmb3IgY291cnNlXG4gICAgLmNvdXJzZSAmIC5jb250ZW50X21haW4gIHtcbiAgICAgIEBpbmNsdWRlIHNwYW4oMTIgb2YgMTIpO1xuXG4gICAgICAuY291cnNlLXJvb3R7XG4gICAgICAgIEBpbmNsdWRlIGNvbnRhaW5lcigxMik7XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWFRdWVyeSgkbWluLCAkdGFibGV0KSB7XG4gICAgICAgICAgLmNvdXJzZS1jb3Vyc2Uge1xuICAgICAgICAgICAgQGluY2x1ZGUgc3BhbihmaXJzdCA5IG9mIDEyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLmNvdXJzZS1leGVjdXRpb24ge1xuICAgICAgICAgICAgQGluY2x1ZGUgc3BhbihsYXN0IDMgb2YgMTIpO1xuICAgICAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC53aWRlICYgLmNvbnRlbnRfZXh0cmEsXG4gICAgLmNvdXJzZSAmIC5jb250ZW50X2V4dHJhIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG5cbiAgICAubWVudTMge1xuICAgICAgcGFkZGluZy1ib3R0b206IDNyZW07XG4gICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRzcGFjZUFycm91bmRDb250ZW50O1xuICAgICAgcGFkZGluZy1yaWdodDogJHNwYWNlQXJyb3VuZENvbnRlbnQ7XG5cbiAgICAgIHVsIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgfVxuXG4gICAgICBsaSB7XG4gICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5uZW9zLWJhY2tlbmQgJiB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG4gIH1cbn1cbiIsIi5zaWduYWx3ZXJrLXNmZ3otb25lY29sdW1uIHtcbiAgJi5jb2x1bW5zLW1vYmlsZW9ubHkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgQGluY2x1ZGUgbWVkaWFRdWVyeSgkbWF4LCAkdGFibGV0KSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICAubmVvcy1iYWNrZW5kICYge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICB9XG59IiwiQGltcG9ydCAnLi4vdmFyaWFibGVzJztcblxuLmNvbHVtbiB7XG4gIEBpbmNsdWRlIGNvbnRhaW5lcigxMik7XG59XG5cbi5jb2x1bW5zLW1hc29ucnkge1xuXG4gIC5uZXdzLWl0ZW1fX2d1dHRlciB7XG4gICAgd2lkdGg6IGd1dHRlcigxMik7XG4gIH1cblxuICAubmV3cy1pdGVtX19zaXplcixcbiAgLm5ld3MtaXRlbSB7XG4gICAgd2lkdGg6IHNwYW4oNiBvZiAxMik7XG5cbiAgICBAaW5jbHVkZSBtZWRpYVF1ZXJ5KCRtYXgsICR0YWJsZXQpIHtcbiAgICAgIHdpZHRoOiBzcGFuKDEyIG9mIDEyKTtcbiAgICB9XG4gIH1cbn1cblxuLm5ld3MtaXRlbSB7XG5cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nLWJvdHRvbTogMXJlbTtcbiAgZm9udC1zaXplOiAxLjE1cmVtO1xuICBwIHtcbiAgICBmb250LXNpemU6IDEuMTVyZW07XG4gIH1cblxuICBhIHtcbiAgICBjb2xvcjogYmxhY2s7XG4gICAgaDEsIGgyIHtcbiAgICAgIGJvcmRlci1ib3R0b206IHRyYW5zcGFyZW50IHNvbGlkIDAuMWVtO1xuICAgICAgdHJhbnNpdGlvbjogYm9yZGVyLWJvdHRvbSA0MDBtcyBlYXNlO1xuICAgICAgcGFkZGluZy10b3A6IDAuMWVtO1xuICAgICAgbGluZS1oZWlnaHQ6IDEuMTtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAwZW07XG4gICAgICAvLyBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgLy8gdHJhbnNpdGlvbjogY29sb3IgNTAwbXMgZWFzZSwgYm9yZGVyLWJvdHRvbSA0MDBtcyBlYXNlO1xuXG4gICAgICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICBAaW5jbHVkZSBtZWRpYVF1ZXJ5KCRtYXgsICR0YWJsZXQpIHtcbiAgICAgICAgICBib3JkZXItYm90dG9tOiBibGFjayBzb2xpZCAwLjFlbTtcbiAgICAgICAgfVxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgY2xlYXI6IGJvdGg7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcblxuICAgICAgaDEsIGgyIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogJGNMaW5rSG92ZXIgc29saWQgMC4xZW07XG4gICAgICAgIGNvbG9yOiAkY0xpbmtIb3ZlcjtcblxuICAgICAgICAucmFuZG9tMDEgJiB7IGNvbG9yOiAkY0xpbmtIb3ZlcjAxOyBib3JkZXItYm90dG9tLWNvbG9yOiAkY0xpbmtIb3ZlcjAxO31cbiAgICAgICAgLnJhbmRvbTAyICYgeyBjb2xvcjogJGNMaW5rSG92ZXIwMjsgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNMaW5rSG92ZXIwMjt9XG4gICAgICAgIC5yYW5kb20wMyAmIHsgY29sb3I6ICRjTGlua0hvdmVyMDM7IGJvcmRlci1ib3R0b20tY29sb3I6ICRjTGlua0hvdmVyMDM7fVxuICAgICAgICAucmFuZG9tMDQgJiB7IGNvbG9yOiAkY0xpbmtIb3ZlcjA0OyBib3JkZXItYm90dG9tLWNvbG9yOiAkY0xpbmtIb3ZlcjA0O31cbiAgICAgICAgLnJhbmRvbTA1ICYgeyBjb2xvcjogJGNMaW5rSG92ZXIwNTsgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNMaW5rSG92ZXIwNTt9XG4gICAgICAgIC5yYW5kb20wNiAmIHsgY29sb3I6ICRjTGlua0hvdmVyMDY7IGJvcmRlci1ib3R0b20tY29sb3I6ICRjTGlua0hvdmVyMDY7fVxuICAgICAgICAucmFuZG9tMDcgJiB7IGNvbG9yOiAkY0xpbmtIb3ZlcjA3OyBib3JkZXItYm90dG9tLWNvbG9yOiAkY0xpbmtIb3ZlcjA3O31cbiAgICAgICAgLnJhbmRvbTA4ICYgeyBjb2xvcjogJGNMaW5rSG92ZXIwODsgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNMaW5rSG92ZXIwODt9XG4gICAgICAgIC5yYW5kb20wOSAmIHsgY29sb3I6ICRjTGlua0hvdmVyMDk7IGJvcmRlci1ib3R0b20tY29sb3I6ICRjTGlua0hvdmVyMDk7fVxuICAgICAgICAucmFuZG9tMTAgJiB7IGNvbG9yOiAkY0xpbmtIb3ZlcjEwOyBib3JkZXItYm90dG9tLWNvbG9yOiAkY0xpbmtIb3ZlcjEwO31cbiAgICAgICAgLnJhbmRvbTExICYgeyBjb2xvcjogJGNMaW5rSG92ZXIxMTsgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNMaW5rSG92ZXIxMTt9XG4gICAgICAgIC5yYW5kb20xMiAmIHsgY29sb3I6ICRjTGlua0hvdmVyMTI7IGJvcmRlci1ib3R0b20tY29sb3I6ICRjTGlua0hvdmVyMTI7fVxuICAgICAgICAucmFuZG9tMTMgJiB7IGNvbG9yOiAkY0xpbmtIb3ZlcjEzOyBib3JkZXItYm90dG9tLWNvbG9yOiAkY0xpbmtIb3ZlcjEzO31cbiAgICAgICAgLnJhbmRvbTE0ICYgeyBjb2xvcjogJGNMaW5rSG92ZXIxNDsgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNMaW5rSG92ZXIxNDt9XG4gICAgICAgIC5yYW5kb20xNSAmIHsgY29sb3I6ICRjTGlua0hvdmVyMTU7IGJvcmRlci1ib3R0b20tY29sb3I6ICRjTGlua0hvdmVyMTU7fVxuICAgICAgICAucmFuZG9tMTYgJiB7IGNvbG9yOiAkY0xpbmtIb3ZlcjE2OyBib3JkZXItYm90dG9tLWNvbG9yOiAkY0xpbmtIb3ZlcjE2O31cbiAgICAgICAgLnJhbmRvbTE3ICYgeyBjb2xvcjogJGNMaW5rSG92ZXIxNzsgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNMaW5rSG92ZXIxNzt9XG4gICAgICAgIC5yYW5kb20xOCAmIHsgY29sb3I6ICRjTGlua0hvdmVyMTg7IGJvcmRlci1ib3R0b20tY29sb3I6ICRjTGlua0hvdmVyMTg7fVxuICAgICAgICAucmFuZG9tMTkgJiB7IGNvbG9yOiAkY0xpbmtIb3ZlcjE5OyBib3JkZXItYm90dG9tLWNvbG9yOiAkY0xpbmtIb3ZlcjE5O31cbiAgICAgICAgLnJhbmRvbTIwICYgeyBjb2xvcjogJGNMaW5rSG92ZXIyMDsgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNMaW5rSG92ZXIyMDt9XG4gICAgICB9XG5cbiAgICAgIC50ZWFzZXItaW1hZ2Uge1xuICAgICAgICBvcGFjaXR5OiAwLjY1O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIG5vIHNwZWNpYWwgaWNvbnMgZm9yIGV4dGVybmFsIGxpbmtzXG4gICAgJltocmVmXj1cImh0dHBcIl06YmVmb3JlIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gIH1cblxuXG5cbiAgLy8gLm5lb3MtYmFja2VuZCAmIHtcbiAgLy8gICAmOmhvdmVyIHtcbiAgLy8gICAgIC50ZWFzZXItaW1hZ2UsXG4gIC8vICAgICAubmV3cy1pdGVtX19kYXRlLFxuICAvLyAgICAgLm5ld3MtaXRlbV9fdGl0bGUsXG4gIC8vICAgICAubmV3cy1pdGVtX190ZXh0IHtcbiAgLy8gICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgLy8gICAgIH1cbiAgLy8gICB9XG4gIC8vXG4gIC8vIH1cblxuICAvLyBvcGFjaXR5OiAwO1xuICAvLyAubmVvcy1iYWNrZW5kICYge1xuICAvLyAgIG9wYWNpdHk6IDE7XG4gIC8vIH1cblxuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDMwMG1zO1xuICAmLS1pbWFnZS1sb2FkZWQgeyBvcGFjaXR5OiAxOyB9XG5cbiAgJl9fZGF0ZSB7XG4gICAgQGluY2x1ZGUgZm9udC1ib2xkKHNhbnNibGFjayk7XG5cbiAgICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cbiAgJl9fdGl0bGUge1xuXG4gIH1cbiAgJl9fdGV4dCB7XG4gICAgcGFkZGluZy10b3A6IDAuNXJlbTtcbiAgICBwIHtcbiAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgfVxuICB9XG4gIC50ZWFzZXItaW1hZ2Uge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDowO1xuICAgICAgbGVmdDogMDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgLy8gYmFja2dyb3VuZDogdXJsKCcuLi9Bc3NldHMvSW1hZ2VzL292ZXJsYXkuc3ZnJyk7XG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG4gICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdCBib3R0b207XG4gICAgfVxuXG5cbiAgICAkYmFja2dyb3VuZFVSTDonLi4vQXNzZXRzL0ltYWdlcy9sb2dvL2dlbmVyYXRlZC9zbWFsbC9iYWNrZ3JvdW5kJztcblxuICAgICYuYmFja2dyb3VuZDAxOmFmdGVyIHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyN7JGJhY2tncm91bmRVUkx9MDFfcy5zdmcnKX07XG4gICAgJi5iYWNrZ3JvdW5kMDI6YWZ0ZXIge2JhY2tncm91bmQtaW1hZ2U6IHVybCgnI3skYmFja2dyb3VuZFVSTH0wMl9zLnN2ZycpfTtcbiAgICAmLmJhY2tncm91bmQwMzphZnRlciB7YmFja2dyb3VuZC1pbWFnZTogdXJsKCcjeyRiYWNrZ3JvdW5kVVJMfTAzX3Muc3ZnJyl9O1xuICAgICYuYmFja2dyb3VuZDA0OmFmdGVyIHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyN7JGJhY2tncm91bmRVUkx9MDRfcy5zdmcnKX07XG4gICAgJi5iYWNrZ3JvdW5kMDU6YWZ0ZXIge2JhY2tncm91bmQtaW1hZ2U6IHVybCgnI3skYmFja2dyb3VuZFVSTH0wNV9zLnN2ZycpfTtcbiAgICAmLmJhY2tncm91bmQwNjphZnRlciB7YmFja2dyb3VuZC1pbWFnZTogdXJsKCcjeyRiYWNrZ3JvdW5kVVJMfTA2X3Muc3ZnJyl9O1xuICAgICYuYmFja2dyb3VuZDA3OmFmdGVyIHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyN7JGJhY2tncm91bmRVUkx9MDdfcy5zdmcnKX07XG4gICAgJi5iYWNrZ3JvdW5kMDg6YWZ0ZXIge2JhY2tncm91bmQtaW1hZ2U6IHVybCgnI3skYmFja2dyb3VuZFVSTH0wOF9zLnN2ZycpfTtcbiAgICAmLmJhY2tncm91bmQwOTphZnRlciB7YmFja2dyb3VuZC1pbWFnZTogdXJsKCcjeyRiYWNrZ3JvdW5kVVJMfTA5X3Muc3ZnJyl9O1xuICAgICYuYmFja2dyb3VuZDEwOmFmdGVyIHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyN7JGJhY2tncm91bmRVUkx9MTBfcy5zdmcnKX07XG4gICAgJi5iYWNrZ3JvdW5kMTE6YWZ0ZXIge2JhY2tncm91bmQtaW1hZ2U6IHVybCgnI3skYmFja2dyb3VuZFVSTH0xMV9zLnN2ZycpfTtcbiAgICAmLmJhY2tncm91bmQxMjphZnRlciB7YmFja2dyb3VuZC1pbWFnZTogdXJsKCcjeyRiYWNrZ3JvdW5kVVJMfTEyX3Muc3ZnJyl9O1xuICAgICYuYmFja2dyb3VuZDEzOmFmdGVyIHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyN7JGJhY2tncm91bmRVUkx9MTNfcy5zdmcnKX07XG4gICAgJi5iYWNrZ3JvdW5kMTQ6YWZ0ZXIge2JhY2tncm91bmQtaW1hZ2U6IHVybCgnI3skYmFja2dyb3VuZFVSTH0xNF9zLnN2ZycpfTtcbiAgICAmLmJhY2tncm91bmQxNTphZnRlciB7YmFja2dyb3VuZC1pbWFnZTogdXJsKCcjeyRiYWNrZ3JvdW5kVVJMfTE1X3Muc3ZnJyl9O1xuICAgICYuYmFja2dyb3VuZDE2OmFmdGVyIHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyN7JGJhY2tncm91bmRVUkx9MTZfcy5zdmcnKX07XG4gICAgJi5iYWNrZ3JvdW5kMTc6YWZ0ZXIge2JhY2tncm91bmQtaW1hZ2U6IHVybCgnI3skYmFja2dyb3VuZFVSTH0xN19zLnN2ZycpfTtcbiAgICAmLmJhY2tncm91bmQxODphZnRlciB7YmFja2dyb3VuZC1pbWFnZTogdXJsKCcjeyRiYWNrZ3JvdW5kVVJMfTE4X3Muc3ZnJyl9O1xuICAgICYuYmFja2dyb3VuZDE5OmFmdGVyIHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyN7JGJhY2tncm91bmRVUkx9MTlfcy5zdmcnKX07XG4gICAgJi5iYWNrZ3JvdW5kMjA6YWZ0ZXIge2JhY2tncm91bmQtaW1hZ2U6IHVybCgnI3skYmFja2dyb3VuZFVSTH0yMF9zLnN2ZycpfTtcblxuXG5cbiAgICBpbWcge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgIH1cblxuICB9XG5cbn1cblxuXG4uc2lnbmFsd2Vyay1zZmd6LW5ld3NpdGVtIHtcblxuXG59XG4iLCIubmVvcy1ub2RldHlwZXMtaGVhZGxpbmUsXG4ubmVvcy1ub2RldHlwZXMtbWVudSxcbi5uZW9zLW5vZGV0eXBlcy10ZXh0LFxuLnNpZ25hbHdlcmstc2Znei1jb250YWN0aXRlbSxcbi5zaWduYWx3ZXJrLXNmZ3otY29udGFjdHZpZXcsXG4uc2lnbmFsd2Vyay1zZmd6LWNvdXJzZSxcbi5zaWduYWx3ZXJrLXNmZ3otY291cnNldmlldyxcbi5zaWduYWx3ZXJrLXNmZ3otZm9sZG91dCxcbi5zaWduYWx3ZXJrLXNmZ3otbmV3c3ZpZXcge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIHBhZGRpbmctbGVmdDogJHNwYWNlQXJyb3VuZENvbnRlbnQ7XG4gIHBhZGRpbmctcmlnaHQ6ICRzcGFjZUFycm91bmRDb250ZW50O1xufVxuLy8gbm8gYWRkaXRpb25hbCBwYWRkaW5nIGlmIGl0J3MgYWpheCBsb2FkZWRcbi5hamF4Lm5lb3MtY29udGVudGNvbGxlY3Rpb24gPiAuc2lnbmFsd2Vyay1zZmd6LWNvbnRhY3R2aWV3LFxuLmFqYXgubmVvcy1jb250ZW50Y29sbGVjdGlvbiA+IC5zaWduYWx3ZXJrLXNmZ3otY291cnNldmlldyxcbi5hamF4Lm5lb3MtY29udGVudGNvbGxlY3Rpb24gPiAuc2lnbmFsd2Vyay1zZmd6LW5ld3N2aWV3IHtcbiAgcGFkZGluZzogMDtcbn1cblxuLmRsLWdhbGxlcnktZ2FsbGVyeSB7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbi1ib3R0b206ICRzcGFjZUFycm91bmRDb250ZW50O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbn1cblxuLnNpZ25hbHdlcmstc2Znei12aW1lbyxcbi5zaWduYWx3ZXJrLXNmZ3oteW91dHViZSB7XG4gIHBhZGRpbmc6ICRzcGFjZUFycm91bmRDb250ZW50IDA7XG59XG5cbi5uZW9zLW5vZGV0eXBlcy1pbWFnZSB7XG4gIC8vIHBhZGRpbmc6ICRzcGFjZUFycm91bmRDb250ZW50O1xuICBmaWd1cmUge1xuICAgIG1hcmdpbjogMDtcbiAgfVxuXG4gIGltZyB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIGhlaWdodDogYXV0bztcbiAgfVxufSIsIi5zaWduYWx3ZXJrLXNmZ3otdXBsb2FkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIHBhZGRpbmc6ICRzcGFjZUFycm91bmRDb250ZW50O1xuICAvLyBnZXQgcmlkIG9mIGV4dGVybmFsIGxpbmsgaWNvblxuICA+IC5VcGxvYWQtaXRlbSA+IGE6YmVmb3JlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi51cGxvYWRJY29uIHtcbiAgQGluY2x1ZGUgaW5saW5lLWljb24oICdpY29uX2RvY3VtZW50LnN2ZycsIDYwJSk7XG59IiwiLnNpZ25hbHdlcmstc2Znei1zcGFjZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBwYWRkaW5nOiAkc3BhY2VBcnJvdW5kQ29udGVudDtcbn0iLCIkbW9iaWxlLW5hdi0tcGFkZGluZzogMTBweDtcbiRtb2JpbGUtbmF2LS1oZWlnaHQ6IDcwcHg7XG4kbW9iaWxlLW5hdi0tbG9nby13aWR0aDogODVweDtcbiRmb250LXNpemUtLWxhcmdlOiAyMnB4O1xuJGNvbG9yLS1saWdodDogJGNXaGl0ZTtcbiRjb2xvci0tZ3JheTogcmdiKDE3MiwxNzIsMTcyKTtcbiRjb2xvci0tZGFyazogYmxhY2s7XG5cbi5uYXZpZ2F0aW9uIHtcbiAgJi0tbW9iaWxlIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAtJG1vYmlsZS1uYXYtLWhlaWdodDtcbiAgICBsZWZ0OiAwO1xuICAgIGhlaWdodDogJG1vYmlsZS1uYXYtLWhlaWdodDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXgtd2lkdGg6IDEwMHZ3O1xuICAgIHotaW5kZXg6IDU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yLS1ncmF5O1xuICAgIGJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDAuMTVyZW07XG4gICAgY29sb3I6ICRjb2xvci0tZGFyaztcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMjAwbXMgZWFzZTtcbiAgICBAaW5jbHVkZSBtZWRpYVF1ZXJ5KCRtYXgsICR0YWJsZXQpIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgICB9O1xuICB9XG5cbiAgJl9fbG9nb3Mge1xuICAgIHdpZHRoOiAkbW9iaWxlLW5hdi0tbG9nby13aWR0aDtcbiAgICBoZWlnaHQ6ICRtb2JpbGUtbmF2LS1oZWlnaHQ7XG4gICAgcGFkZGluZzogJG1vYmlsZS1uYXYtLXBhZGRpbmc7XG4gICAgLy8gYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgcGFkZGluZy1yaWdodDogMDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG5cbiAgJl9fbGlvbi0tbW9iaWxlIHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luLXJpZ2h0OiAkbW9iaWxlLW5hdi0tcGFkZGluZztcbiAgfVxuXG4gICZfX2ZsYWctLW1vYmlsZSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGhlaWdodDogMjBweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxM3B4O1xuICB9XG5cbiAgJl9fdG9nZ2xlLWJ0biB7XG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xuICAgIH1cblxuICAgICY6Zm9jdXMge1xuICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgb3V0bGluZTogbm9uZTtcbiAgICB9XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgfVxuXG4gICZfX3RvZ2dsZSB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmbGV4LWdyb3c6IDE7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICBwYWRkaW5nLXRvcDogNXB4O1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS0tbGFyZ2U7XG4gICAgQGluY2x1ZGUgZm9udC1ib2xkKHNhbnNibGFjayk7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLS1saWdodDtcbiAgICBwYWRkaW5nLXJpZ2h0OiA2MHB4O1xuICAgIC8vIGJhY2tncm91bmQtcG9zaXRpb246IHRvcCByaWdodCAxMHB4O1xuICAgIC8vIGJhY2tncm91bmQtc2l6ZTogNjBweCA2MHB4O1xuICAgIC8vIHJlcGVhdDpuby1yZXBlYXQ7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIiBcIjtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHJpZ2h0OiAyMnB4O1xuICAgICAgdG9wOiAyMnB4O1xuICAgICAgd2lkdGg6IDI1cHg7XG4gICAgICBoZWlnaHQ6IDI1cHg7XG4gICAgICAvLyBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkO1xuICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgIC8vIGJhY2tncm91bmQtcG9zaXRpb246NTAlIDE2MCU7XG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IDEwMCU7XG4gICAgICBiYWNrZ3JvdW5kOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJyZ2IoMCwgMCwgMClcIj48cmVjdCB5PVwiMFwiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjIwJVwiIHJ4PVwiNSVcIiByeT1cIjUlXCIgLz48cmVjdCB5PVwiNDAlXCIgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMjAlXCIgcng9XCI1JVwiIHJ5PVwiNSVcIiAvPjxyZWN0IHk9XCI4MCVcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIyMCVcIiByeD1cIjUlXCIgcnk9XCI1JVwiIC8+PC9zdmc+Jyk7XG4gICAgICAvLyBiYWNrZ3JvdW5kOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJyZ2IoMCwgMCwgMClcIj48cmVjdCB5PVwiMFwiIHdpZHRoPVwiMTAwcHhcIiBoZWlnaHQ9XCIyMHB4XCIgcng9XCI1cHhcIiByeT1cIjVweFwiIC8+PHJlY3QgeT1cIjQwcHhcIiB3aWR0aD1cIjEwMHB4XCIgaGVpZ2h0PVwiMjBweFwiIHJ4PVwiNXB4XCIgcnk9XCI1cHhcIiAvPjxyZWN0IHk9XCI4MHB4XCIgd2lkdGg9XCIxMDBweFwiIGhlaWdodD1cIjIwcHhcIiByeD1cIjVweFwiIHJ5PVwiNXB4XCIgLz48L3N2Zz4nKTtcbiAgICB9XG4gIH1cblxuICAmX19jb250ZW50IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgdG9wOiAkbW9iaWxlLW5hdi0taGVpZ2h0O1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgei1pbmRleDogLTE7XG4gICAgcGFkZGluZy1sZWZ0OiAkbW9iaWxlLW5hdi0tbG9nby13aWR0aDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3ItLWdyYXk7XG4gICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMC4xNXJlbTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAyMDBtcyBlYXNlO1xuXG4gICAgJi0tb3BlbiB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgfVxuICB9XG59XG5cbi5tZW51IHtcbiAgJjEtLW1vYmlsZSB7XG4gICAgZm9udC1zaXplOiAkZm9udC1zaXplLS1sYXJnZTtcbiAgICBAaW5jbHVkZSBmb250LWJvbGQoc2Fuc2JsYWNrKTtcblxuICAgIHVsIHtcbiAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICB9XG5cbiAgICBsaSB7XG4gICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIH1cblxuICAgIGEge1xuICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgfVxuICB9XG5cbiAgJjItLW1vYmlsZSB7XG4gICAgPiBuYXYge1xuICAgICAgcGFkZGluZzogMXJlbSAwIDAuNzVyZW0gJG1vYmlsZS1uYXYtLWxvZ28td2lkdGg7XG4gICAgfVxuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICBsaW5lLWhlaWdodDogMS4yNTtcbiAgICBmb250LXNpemU6IG1hcC1nZXQoJGZvbnRGYWN0b3JzTWVudU1vYmlsZSwgTDIpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjY7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBAaW5jbHVkZSBtZWRpYVF1ZXJ5ICgkbWF4LCAkdGFibGV0KSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICBhIHtcbiAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIH1cblxuICAgIC5ub3JtYWwgPiB1bCB7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgaGVpZ2h0OiAwO1xuICAgIH1cblxuICAgIGxpLFxuICAgIHVsIHtcbiAgICAgIHBhZGRpbmctdG9wOiAwLjE1cmVtO1xuICAgICAgcGFkZGluZy1ib3R0b206IDAuMTVyZW07XG4gICAgICBAaW5jbHVkZSBtZWRpYVF1ZXJ5KCRtYXgsICR0YWJsZXQpIHtcbiAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsaSA+IHVsIHtcbiAgICAgIHBhZGRpbmctbGVmdDogMjBweDtcbiAgICB9XG4gIH1cbn1cblxuLmN1cnJlbnQgYSB7XG4gIGNvbG9yOiAkY0xpbmtJc0FjdGl2ZTtcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNMaW5rSXNBY3RpdmU7XG59XG5cbi5tZW51MyB7XG4gIEBpbmNsdWRlIG1lZGlhUXVlcnkoJG1heCwgJHRhYmxldCkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgLy8gYmFja2dyb3VuZDogd2hpdGU7XG4gICAgLy8gcGFkZGluZy10b3A6IDAuNXJlbTtcbiAgICAvLyBtYXJnaW4tdG9wOiAydnc7XG4gIH07XG59XG5cbi5tZW51U2libGluZ3Mge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4uaGlkZUwzIHtcbiAgJiAubWVudTMge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuLnNob3dTaWJsaW5ncyB7XG4gICYgLm1lbnUzIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgJiAubWVudVNpYmxpbmdzIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxufSIsIkBpbXBvcnQgJy4uL3ZhcmlhYmxlcyc7XG5cbi8vIHNlZVxuLy8gaHR0cHM6Ly9jb2RlcGVuLmlvL2VjaG96b25lL3Blbi9Md0pDRFxuLy8gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vcGxhc3RpY2JyYWluLzM5ODM5NDJcblxuJGFycm93U2l6ZTogMS41ZW07XG5cbi5mb2xkb3V0LXdyYXBwZXIge1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uZm9sZG91dC1jb250ZW50IHtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC41cztcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgaGVpZ2h0OiAwO1xuXG4gICYuc2hvdywgLm5lb3MtYmFja2VuZCAmIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG59XG5cbi5mb2xkb3V0LXRpdGxlIHtcblxuICAmOmhvdmVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbiAgaDMge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIGRpdiB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgfVxuICAgICY6YmVmb3JlIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogLTAuM3JlbTtcbiAgICAgIGNvbnRlbnQ6Jyc7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBsZWZ0OiAkYXJyb3dTaXplIC8gNDtcbiAgICAgIHRvcDogJGFycm93U2l6ZSAvIDQ7XG4gICAgICBib3JkZXI6ICRhcnJvd1NpemUgLyAyIHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICMwMDA7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDAuNXJlbTtcbiAgICB9XG4gIH1cblxuICAvLyAmLmFjdGl2ZSB7XG4gIC8vICAgLm1vcmUge1xuICAvLyAgICAgZGlzcGxheTogbm9uZTtcbiAgLy8gICB9XG4gIC8vIH1cbiAgJi5hY3RpdmUgaDM6YmVmb3JlIHtcbiAgICBsZWZ0OiAwO1xuICAgIHRvcDogMC44ZW07XG4gICAgLy8gdG9wOiAkYXJyb3dTaXplIC8gNDtcbiAgICBib3JkZXItY29sb3I6ICMwMDAgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG4gIH1cbn1cbiIsIi55b3V0dWJlX19yb290IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nLWJvdHRvbTogNTUlO1xuICBwYWRkaW5nLXRvcDogMTVweDtcbiAgbWFyZ2luLWJvdHRvbTogMS41ZW07XG4gIGhlaWdodDogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICBpZnJhbWUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gIH1cbn0iLCIuY29udGFjdC1pdGVtIHtcbiAgJl9fd3JhcHBlciB7XG4gICAgcGFkZGluZy1ib3R0b206IDFyZW07XG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgcC5jb21wYWN0IHtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxuXG4gICAgKyBoMyB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxufVxuIiwiLmNvdXJzZS1yb290IHtcbiAgLy8gYSB7XG4gIC8vICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgLy9cbiAgLy8gfVxuICBoMy5idXR0b24ge1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMWVtO1xuXG4gICAgcGFkZGluZy1ib3R0b206IDAuMTVlbTtcbiAgICBib3JkZXItYm90dG9tOiBibGFjayBzb2xpZCAwLjE1ZW07XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG4gIH1cbiAgLmNvdXJzZS1jb21wbGV0ZSB7XG4gICAgb3BhY2l0eTogMC4zO1xuICB9XG59XG4iLCIudmltZW9fX3Jvb3Qge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHBhZGRpbmctYm90dG9tOiA1NSU7XG4gIHBhZGRpbmctdG9wOiAxNXB4O1xuICBtYXJnaW4tYm90dG9tOiAxLjVlbTtcbiAgaGVpZ2h0OiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gIGlmcmFtZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxufSIsIiRiYWNrZ3JvdW5kVVJMOicuLi9Bc3NldHMvSW1hZ2VzL2xvZ28vZ2VuZXJhdGVkL2FuaW0vYmFja2dyb3VuZCc7XG4kYmFja2dyb3VuZFVSTGRpc2FwcGVhcjonLi4vQXNzZXRzL0ltYWdlcy9sb2dvL2dlbmVyYXRlZC9kaXNhcHBlYXIvYmFja2dyb3VuZCc7XG5cblxuYm9keSB7XG4gIC8vIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnI3skYmFja2dyb3VuZFVSTH0wMS5zdmcnKTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC15O1xuICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgYXV0bztcblxuICAmLnJhbmRvbTAxIHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyN7JGJhY2tncm91bmRVUkx9MDEuc3ZnJyl9O1xuICAmLnJhbmRvbTAyIHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyN7JGJhY2tncm91bmRVUkx9MDIuc3ZnJyl9O1xuICAmLnJhbmRvbTAzIHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyN7JGJhY2tncm91bmRVUkx9MDMuc3ZnJyl9O1xuICAmLnJhbmRvbTA0IHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyN7JGJhY2tncm91bmRVUkx9MDQuc3ZnJyl9O1xuICAmLnJhbmRvbTA1IHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyN7JGJhY2tncm91bmRVUkx9MDUuc3ZnJyl9O1xuICAmLnJhbmRvbTA2IHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyN7JGJhY2tncm91bmRVUkx9MDYuc3ZnJyl9O1xuICAmLnJhbmRvbTA3IHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyN7JGJhY2tncm91bmRVUkx9MDcuc3ZnJyl9O1xuICAmLnJhbmRvbTA4IHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyN7JGJhY2tncm91bmRVUkx9MDguc3ZnJyl9O1xuICAmLnJhbmRvbTA5IHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyN7JGJhY2tncm91bmRVUkx9MDkuc3ZnJyl9O1xuICAmLnJhbmRvbTEwIHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyN7JGJhY2tncm91bmRVUkx9MTAuc3ZnJyl9O1xuICAmLnJhbmRvbTExIHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyN7JGJhY2tncm91bmRVUkx9MTEuc3ZnJyl9O1xuICAmLnJhbmRvbTEyIHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyN7JGJhY2tncm91bmRVUkx9MTIuc3ZnJyl9O1xuICAmLnJhbmRvbTEzIHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyN7JGJhY2tncm91bmRVUkx9MTMuc3ZnJyl9O1xuICAmLnJhbmRvbTE0IHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyN7JGJhY2tncm91bmRVUkx9MTQuc3ZnJyl9O1xuICAmLnJhbmRvbTE1IHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyN7JGJhY2tncm91bmRVUkx9MTUuc3ZnJyl9O1xuICAmLnJhbmRvbTE2IHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyN7JGJhY2tncm91bmRVUkx9MTYuc3ZnJyl9O1xuICAmLnJhbmRvbTE3IHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyN7JGJhY2tncm91bmRVUkx9MTcuc3ZnJyl9O1xuICAmLnJhbmRvbTE4IHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyN7JGJhY2tncm91bmRVUkx9MTguc3ZnJyl9O1xuICAmLnJhbmRvbTE5IHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyN7JGJhY2tncm91bmRVUkx9MTkuc3ZnJyl9O1xuICAmLnJhbmRvbTIwIHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyN7JGJhY2tncm91bmRVUkx9MjAuc3ZnJyl9O1xufVxuXG5ib2R5Lm5vQmFja2dyb3VuZCB7XG5cbiAgJjpub3QoLm5vLWFuaW1hdGlvbikge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuXG4gICAgJjphZnRlciB7XG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDA7XG4gICAgICByaWdodDogMDtcbiAgICAgIGJvdHRvbTogMDtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIH1cbiAgfVxuXG4gICYubm8tYW5pbWF0aW9uIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICY6YWZ0ZXIgeyBjb250ZW50OiBub25lOyB9XG4gIH1cbn1cblxuXG5ib2R5Lm5vQmFja2dyb3VuZC5yYW5kb20wMTpub3QoLm5vLWFuaW1hdGlvbik6YWZ0ZXIge2JhY2tncm91bmQtaW1hZ2U6IHVybCgnI3skYmFja2dyb3VuZFVSTGRpc2FwcGVhcn0wMV9kLnN2ZycpfTtcbmJvZHkubm9CYWNrZ3JvdW5kLnJhbmRvbTAyOm5vdCgubm8tYW5pbWF0aW9uKTphZnRlciB7YmFja2dyb3VuZC1pbWFnZTogdXJsKCcjeyRiYWNrZ3JvdW5kVVJMZGlzYXBwZWFyfTAyX2Quc3ZnJyl9O1xuYm9keS5ub0JhY2tncm91bmQucmFuZG9tMDM6bm90KC5uby1hbmltYXRpb24pOmFmdGVyIHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyN7JGJhY2tncm91bmRVUkxkaXNhcHBlYXJ9MDNfZC5zdmcnKX07XG5ib2R5Lm5vQmFja2dyb3VuZC5yYW5kb20wNDpub3QoLm5vLWFuaW1hdGlvbik6YWZ0ZXIge2JhY2tncm91bmQtaW1hZ2U6IHVybCgnI3skYmFja2dyb3VuZFVSTGRpc2FwcGVhcn0wNF9kLnN2ZycpfTtcbmJvZHkubm9CYWNrZ3JvdW5kLnJhbmRvbTA1Om5vdCgubm8tYW5pbWF0aW9uKTphZnRlciB7YmFja2dyb3VuZC1pbWFnZTogdXJsKCcjeyRiYWNrZ3JvdW5kVVJMZGlzYXBwZWFyfTA1X2Quc3ZnJyl9O1xuYm9keS5ub0JhY2tncm91bmQucmFuZG9tMDY6bm90KC5uby1hbmltYXRpb24pOmFmdGVyIHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyN7JGJhY2tncm91bmRVUkxkaXNhcHBlYXJ9MDZfZC5zdmcnKX07XG5ib2R5Lm5vQmFja2dyb3VuZC5yYW5kb20wNzpub3QoLm5vLWFuaW1hdGlvbik6YWZ0ZXIge2JhY2tncm91bmQtaW1hZ2U6IHVybCgnI3skYmFja2dyb3VuZFVSTGRpc2FwcGVhcn0wN19kLnN2ZycpfTtcbmJvZHkubm9CYWNrZ3JvdW5kLnJhbmRvbTA4Om5vdCgubm8tYW5pbWF0aW9uKTphZnRlciB7YmFja2dyb3VuZC1pbWFnZTogdXJsKCcjeyRiYWNrZ3JvdW5kVVJMZGlzYXBwZWFyfTA4X2Quc3ZnJyl9O1xuYm9keS5ub0JhY2tncm91bmQucmFuZG9tMDk6bm90KC5uby1hbmltYXRpb24pOmFmdGVyIHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyN7JGJhY2tncm91bmRVUkxkaXNhcHBlYXJ9MDlfZC5zdmcnKX07XG5ib2R5Lm5vQmFja2dyb3VuZC5yYW5kb20xMDpub3QoLm5vLWFuaW1hdGlvbik6YWZ0ZXIge2JhY2tncm91bmQtaW1hZ2U6IHVybCgnI3skYmFja2dyb3VuZFVSTGRpc2FwcGVhcn0xMF9kLnN2ZycpfTtcbmJvZHkubm9CYWNrZ3JvdW5kLnJhbmRvbTExOm5vdCgubm8tYW5pbWF0aW9uKTphZnRlciB7YmFja2dyb3VuZC1pbWFnZTogdXJsKCcjeyRiYWNrZ3JvdW5kVVJMZGlzYXBwZWFyfTExX2Quc3ZnJyl9O1xuYm9keS5ub0JhY2tncm91bmQucmFuZG9tMTI6bm90KC5uby1hbmltYXRpb24pOmFmdGVyIHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyN7JGJhY2tncm91bmRVUkxkaXNhcHBlYXJ9MTJfZC5zdmcnKX07XG5ib2R5Lm5vQmFja2dyb3VuZC5yYW5kb20xMzpub3QoLm5vLWFuaW1hdGlvbik6YWZ0ZXIge2JhY2tncm91bmQtaW1hZ2U6IHVybCgnI3skYmFja2dyb3VuZFVSTGRpc2FwcGVhcn0xM19kLnN2ZycpfTtcbmJvZHkubm9CYWNrZ3JvdW5kLnJhbmRvbTE0Om5vdCgubm8tYW5pbWF0aW9uKTphZnRlciB7YmFja2dyb3VuZC1pbWFnZTogdXJsKCcjeyRiYWNrZ3JvdW5kVVJMZGlzYXBwZWFyfTE0X2Quc3ZnJyl9O1xuYm9keS5ub0JhY2tncm91bmQucmFuZG9tMTU6bm90KC5uby1hbmltYXRpb24pOmFmdGVyIHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyN7JGJhY2tncm91bmRVUkxkaXNhcHBlYXJ9MTVfZC5zdmcnKX07XG5ib2R5Lm5vQmFja2dyb3VuZC5yYW5kb20xNjpub3QoLm5vLWFuaW1hdGlvbik6YWZ0ZXIge2JhY2tncm91bmQtaW1hZ2U6IHVybCgnI3skYmFja2dyb3VuZFVSTGRpc2FwcGVhcn0xNl9kLnN2ZycpfTtcbmJvZHkubm9CYWNrZ3JvdW5kLnJhbmRvbTE3Om5vdCgubm8tYW5pbWF0aW9uKTphZnRlciB7YmFja2dyb3VuZC1pbWFnZTogdXJsKCcjeyRiYWNrZ3JvdW5kVVJMZGlzYXBwZWFyfTE3X2Quc3ZnJyl9O1xuYm9keS5ub0JhY2tncm91bmQucmFuZG9tMTg6bm90KC5uby1hbmltYXRpb24pOmFmdGVyIHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyN7JGJhY2tncm91bmRVUkxkaXNhcHBlYXJ9MThfZC5zdmcnKX07XG5ib2R5Lm5vQmFja2dyb3VuZC5yYW5kb20xOTpub3QoLm5vLWFuaW1hdGlvbik6YWZ0ZXIge2JhY2tncm91bmQtaW1hZ2U6IHVybCgnI3skYmFja2dyb3VuZFVSTGRpc2FwcGVhcn0xOV9kLnN2ZycpfTtcbmJvZHkubm9CYWNrZ3JvdW5kLnJhbmRvbTIwOm5vdCgubm8tYW5pbWF0aW9uKTphZnRlciB7YmFja2dyb3VuZC1pbWFnZTogdXJsKCcjeyRiYWNrZ3JvdW5kVVJMZGlzYXBwZWFyfTIwX2Quc3ZnJyl9O1xuIiwiXG4kY2xpY2tTaXplOiAzcmVtO1xuXG5ib2R5IC5kbC1nYWxsZXJ5LWdhbGxlcnkge1xuXG4gIGFbaHJlZl49XCJodHRwXCJdOmJlZm9yZSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC5yb3cuZGwtZ2FsbGVyeSB7XG4gICAgJGltZ0NvdW50OiAyMDtcbiAgICAkZ2FwOiAwLjUlO1xuXG4gICAgLml0ZW0uZGwtZ2FsbGVyeSB7XG5cbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIHdpZHRoOiAoKDEwMCUgLSAoJGdhcCAqICgkaW1nQ291bnQgLSAxKSkpIC8gJGltZ0NvdW50KTtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAkZ2FwO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG4gICAgICAgIC8vIHJlc2V0IHRoZSBkZWZhdWx0XG4gICAgICAgICY6bnRoLWNoaWxkKDRuICsgNCkge1xuICAgICAgICAgIG1hcmdpbi1yaWdodDogJGdhcDtcbiAgICAgICAgfVxuICAgICAgICAmOm50aC1jaGlsZCgjeyRpbWdDb3VudH1uICsgI3skaW1nQ291bnR9KSB7XG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJAbWl4aW4gZmlsdGVySGVhZGVyKCkge1xuICBoMyB7XG4gICAgQGluY2x1ZGUgZm9udChzYW5zKTtcbiAgICBwYWRkaW5nLWJvdHRvbTogMC4wNWVtO1xuICAgIGJvcmRlci1ib3R0b206IGJsYWNrIHNvbGlkIDAuMTVlbTtcbiAgICBtYXJnaW4tdG9wOiAxZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMC42ZW07XG4gIH1cbn1cblxuQG1peGluIGZpbHRlckNhdGVnb3J5KCkge1xuICAuY2F0ZWdvcnkge1xuICAgIEBpbmNsdWRlIGZvbnQtYm9sZChzYW5zYmxhY2spO1xuXG4gICAgbGFiZWwge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDAuOGVtO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAmOmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6IFwi4oCTIFwiO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHRvcDogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpbnB1dFt0eXBlPVwicmFkaW9cIl0ge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICBpbnB1dFt0eXBlPVwicmFkaW9cIl06Y2hlY2tlZCtsYWJlbCB7XG4gICAgY29sb3I6ICRjTGlua0hvdmVyO1xuICB9XG59XG5AbWl4aW4gZmlsdGVyU3VibWl0KCkge1xuICAjZmlsdGVyLWZvcm0tc3VibWl0IHtcbiAgICAudHh0IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIC53YWl0IHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgJi5idXR0b24tc3VibWl0dGluZyB7XG4gICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICBvcGFjaXR5OiAwLjY7XG4gICAgICAudHh0IHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cbiAgICAgIC53YWl0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJAaW1wb3J0ICcuL2NvdXJzZXZpZXctZW5yb2xsJztcbkBpbXBvcnQgJy4vY291cnNldmlldy1saXN0JztcbkBpbXBvcnQgJy4vY291cnNldmlldy1maWx0ZXInO1xuIiwiLmNvdXJzZXZpZXctZW5yb2xsIHtcblxuICAuY291cnNlLWZvcm0ge1xuICAgIGZpZWxkc2V0IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cblxuICAgIHNwYW4ucmVxdWlyZWQge1xuICAgICAgY29sb3I6IHJlZDtcbiAgICB9XG5cbiAgICAuZm9ybS1ncm91cCB7XG4gICAgICBAaW5jbHVkZSBjb250YWluZXIoOSk7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogMC41cmVtO1xuXG4gICAgICBsYWJlbCB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oZmlyc3QgMyBvZiA5KTtcbiAgICAgIH1cblxuICAgICAgLmlucHV0IHtcbiAgICAgICAgQGluY2x1ZGUgc3BhbihsYXN0IDYgb2YgOSk7XG4gICAgICAgIEBpbmNsdWRlIGNvbnRhaW5lcig2KTtcblxuICAgICAgICAjY29udGFjdC1mb3JtLVN0cmFzc2UsXG4gICAgICAgICNjb250YWN0LWZvcm0tYmlsbC1TdHJhc3NlIHtcbiAgICAgICAgICBAaW5jbHVkZSBzcGFuKGZpcnN0IDUgb2YgNik7XG4gICAgICAgIH1cbiAgICAgICAgI2NvbnRhY3QtZm9ybS1TdHJhc3NlTnIsXG4gICAgICAgICNjb250YWN0LWZvcm0tYmlsbC1TdHJhc3NlTnIge1xuICAgICAgICAgIEBpbmNsdWRlIHNwYW4obGFzdCAxIG9mIDYpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGFiZWwuZXJyb3Ige1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgICAgICAgIGNvbG9yOiByZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cblxuICAgIC5zd2l0Y2gtcmlnaHQtbGVmdCAuZm9ybS1ncm91cCB7XG4gICAgICBsYWJlbCB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4obGFzdCA2IG9mIDkpO1xuICAgICAgfVxuICAgICAgLmlucHV0IHtcbiAgICAgICAgQGluY2x1ZGUgc3BhbihmaXJzdCAzIG9mIDkpO1xuICAgICAgICBAaW5jbHVkZSBjb250YWluZXIoMyk7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICBpbnB1dFt0eXBlPSdyYWRpbyddLFxuICAgICAgICBpbnB1dFt0eXBlPSdjaGVja2JveCddIHtcbiAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiXG4uY291cnNldmlldy1saXN0IHtcbiAgLm5vUmVzdWx0LmhpZGRlbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4uY291cnNldmlldy1saXN0ZWl0ZW0ge1xuICBAaW5jbHVkZSBjb250YWluZXIoMTIpO1xuXG5cbiAgJl9fbnIge1xuICAgIEBpbmNsdWRlIHNwYW4oMiBvZiAxMik7XG4gICAgcCB7XG4gICAgICBwYWRkaW5nLXRvcDogMC4zcmVtO1xuICAgIH1cbiAgfVxuXG4gICZfX3RpdGxlIHtcbiAgICBAaW5jbHVkZSBzcGFuKDYgb2YgMTIpO1xuICB9XG5cbiAgJl9fZGF0ZSB7XG4gICAgQGluY2x1ZGUgc3BhbihsYXN0IDQgb2YgMTIpO1xuICAgIHAge1xuICAgICAgcGFkZGluZy10b3A6IDAuM3JlbTtcbiAgICB9XG4gIH1cblxuICAmLS1yb290LmhpZGRlbiB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG4iLCIuY291cnNldmlldy1maWx0ZXIge1xuXG4gIEBpbmNsdWRlIGZpbHRlckhlYWRlcigpO1xuXG4gIC5jYXRlZ29yeSB7XG4gICAgQGluY2x1ZGUgY29udGFpbmVyKDEyKTtcbiAgICAuYW5nZWJvdCB7XG4gICAgICBAaW5jbHVkZSBzcGFuKGZpcnN0IDYgb2YgMTIpO1xuICAgIH1cbiAgICAuYmVydWYge1xuICAgICAgQGluY2x1ZGUgc3BhbihsYXN0IDYgb2YgMTIpO1xuICAgIH1cbiAgfVxuXG4gIC5zdGFydHRpbWUge1xuICAgIEBpbmNsdWRlIGNvbnRhaW5lcigxMik7XG4gICAgLmRheSB7XG4gICAgICBAaW5jbHVkZSBzcGFuKGZpcnN0IDYgb2YgMTIpO1xuICAgIH1cbiAgICAubW9udGgge1xuICAgICAgQGluY2x1ZGUgc3BhbihsYXN0IDYgb2YgMTIpO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIGZpbHRlckNhdGVnb3J5KCk7XG4gIEBpbmNsdWRlIGZpbHRlclN1Ym1pdCgpO1xuXG5cbn1cbiIsIi8vIEBpbXBvcnQgJy4vbmV3c3ZpZXctbGlzdCc7XG5AaW1wb3J0ICcuL25ld3N2aWV3LWZpbHRlcic7XG5cbi5zaWduYWx3ZXJrLXNmZ3otbmV3c3ZpZXcge1xuICAudGVhc2VyLWNvbnRlbnQge1xuICAgIEBpbmNsdWRlIGNvbnRhaW5lcigxMik7XG5cbiAgICAudGVhc2VyLWltYWdlIHtcbiAgICAgIEBpbmNsdWRlIHNwYW4obGFzdCA0IG9mIDEyKTtcbiAgICB9XG5cbiAgICAudGVhc2VyLXRleHQge1xuICAgICAgQGluY2x1ZGUgc3BhbihmaXJzdCA4IG9mIDEyKTtcbiAgICB9XG4gIH1cbn0iLCIubmV3c3ZpZXctZmlsdGVyIHtcbiAgQGluY2x1ZGUgZmlsdGVySGVhZGVyKCk7XG5cbiAgLmNhdGVnb3J5IHtcbiAgICBAaW5jbHVkZSBjb250YWluZXIoMTIpO1xuXG4gICAgLmV2ZW50cyB7XG4gICAgICBAaW5jbHVkZSBzcGFuKGZpcnN0IDYgb2YgMTIpO1xuICAgIH1cblxuICAgIC5kYXkge1xuICAgICAgQGluY2x1ZGUgc3BhbihsYXN0IDYgb2YgMTIpO1xuICAgIH1cbiAgfVxuICBAaW5jbHVkZSBmaWx0ZXJDYXRlZ29yeSgpO1xuICBAaW5jbHVkZSBmaWx0ZXJTdWJtaXQoKTtcbn0iLCIvLyBAaW1wb3J0ICcuL25ld3N2aWV3LWxpc3QnO1xuQGltcG9ydCAnLi9jb250YWN0dmlldy1maWx0ZXInO1xuIiwiLmNvbnRhY3R2aWV3LWZpbHRlciB7XG5cbiAgQGluY2x1ZGUgZmlsdGVySGVhZGVyKCk7XG5cbiAgLmNhdGVnb3J5IHtcbiAgICBAaW5jbHVkZSBjb250YWluZXIoMTIpO1xuICAgIC5vcmdhbmlzYXRpb25zIHtcbiAgICAgIEBpbmNsdWRlIHNwYW4oZmlyc3QgNiBvZiAxMik7XG4gICAgfVxuICAgIC5mdW5jdGlvbnMge1xuICAgICAgQGluY2x1ZGUgc3BhbihsYXN0IDYgb2YgMTIpO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIGZpbHRlckNhdGVnb3J5KCk7XG4gIEBpbmNsdWRlIGZpbHRlclN1Ym1pdCgpO1xuXG59XG4iXSwibWFwcGluZ3MiOiI7QUNBQSw0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YUFBYSxDQUFDLE1BQU0sQ0FBQztFQUFDLGdCQUFnQixFQUFFLG1FQUFHO0NBQXdDOztBQUNsSCxBQUE2QyxJQUF6QyxBQUFBLGFBQWEsQUFBQSxTQUFTLEFBQUEsSUFBSyxDQUFBLEFBQUEsYUFBYSxDQUFDLE1BQU0sQ0FBQztFQUFDLGdCQUFnQixFQUFFLG1FQUFHO0NBQXdDOztBQUNsSCxBQUE2QyxJQUF6QyxBQUFBLGFBQWEsQUFBQSxTQUFTLEFBQUEsSUFBSyxDQUFBLEFBQUEsYUFBYSxDQUFDLE1BQU0sQ0FBQztFQUFDLGdCQUFnQixFQUFFLG1FQUFHO0NBQXdDOztBQUNsSCxBQUE2QyxJQUF6QyxBQUFBLGFBQWEsQUFBQSxTQUFTLEFBQUEsSUFBSyxDQUFBLEFBQUEsYUFBYSxDQUFDLE1BQU0sQ0FBQztFQUFDLGdCQUFnQixFQUFFLG1FQUFHO0NBQXdDOztBQUNsSCxBQUE2QyxJQUF6QyxBQUFBLGFBQWEsQUFBQSxTQUFTLEFBQUEsSUFBSyxDQUFBLEFBQUEsYUFBYSxDQUFDLE1BQU0sQ0FBQztFQUFDLGdCQUFnQixFQUFFLG1FQUFHO0NBQXdDOztBQUNsSCxBQUE2QyxJQUF6QyxBQUFBLGFBQWEsQUFBQSxTQUFTLEFBQUEsSUFBSyxDQUFBLEFBQUEsYUFBYSxDQUFDLE1BQU0sQ0FBQztFQUFDLGdCQUFnQixFQUFFLG1FQUFHO0NBQXdDOztBQUNsSCxBQUE2QyxJQUF6QyxBQUFBLGFBQWEsQUFBQSxTQUFTLEFBQUEsSUFBSyxDQUFBLEFBQUEsYUFBYSxDQUFDLE1BQU0sQ0FBQztFQUFDLGdCQUFnQixFQUFFLG1FQUFHO0NBQXdDOztBQUNsSCxBQUE2QyxJQUF6QyxBQUFBLGFBQWEsQUFBQSxTQUFTLEFBQUEsSUFBSyxDQUFBLEFBQUEsYUFBYSxDQUFDLE1BQU0sQ0FBQztFQUFDLGdCQUFnQixFQUFFLG1FQUFHO0NBQXdDOztBQUNsSCxBQUE2QyxJQUF6QyxBQUFBLGFBQWEsQUFBQSxTQUFTLEFBQUEsSUFBSyxDQUFBLEFBQUEsYUFBYSxDQUFDLE1BQU0sQ0FBQztFQUFDLGdCQUFnQixFQUFFLG1FQUFHO0NBQXdDOztBQUNsSCxBQUE2QyxJQUF6QyxBQUFBLGFBQWEsQUFBQSxTQUFTLEFBQUEsSUFBSyxDQUFBLEFBQUEsYUFBYSxDQUFDLE1BQU0sQ0FBQztFQUFDLGdCQUFnQixFQUFFLG1FQUFHO0NBQXdDOztBQUNsSCxBQUE2QyxJQUF6QyxBQUFBLGFBQWEsQUFBQSxTQUFTLEFBQUEsSUFBSyxDQUFBLEFBQUEsYUFBYSxDQUFDLE1BQU0sQ0FBQztFQUFDLGdCQUFnQixFQUFFLG1FQUFHO0NBQXdDOztBQUNsSCxBQUE2QyxJQUF6QyxBQUFBLGFBQWEsQUFBQSxTQUFTLEFBQUEsSUFBSyxDQUFBLEFBQUEsYUFBYSxDQUFDLE1BQU0sQ0FBQztFQUFDLGdCQUFnQixFQUFFLG1FQUFHO0NBQXdDOztBQUNsSCxBQUE2QyxJQUF6QyxBQUFBLGFBQWEsQUFBQSxTQUFTLEFBQUEsSUFBSyxDQUFBLEFBQUEsYUFBYSxDQUFDLE1BQU0sQ0FBQztFQUFDLGdCQUFnQixFQUFFLG1FQUFHO0NBQXdDOztBQUNsSCxBQUE2QyxJQUF6QyxBQUFBLGFBQWEsQUFBQSxTQUFTLEFBQUEsSUFBSyxDQUFBLEFBQUEsYUFBYSxDQUFDLE1BQU0sQ0FBQztFQUFDLGdCQUFnQixFQUFFLG1FQUFHO0NBQXdDOztBQUNsSCxBQUE2QyxJQUF6QyxBQUFBLGFBQWEsQUFBQSxTQUFTLEFBQUEsSUFBSyxDQUFBLEFBQUEsYUFBYSxDQUFDLE1BQU0sQ0FBQztFQUFDLGdCQUFnQixFQUFFLG1FQUFHO0NBQXdDOztBQUNsSCxBQUE2QyxJQUF6QyxBQUFBLGFBQWEsQUFBQSxTQUFTLEFBQUEsSUFBSyxDQUFBLEFBQUEsYUFBYSxDQUFDLE1BQU0sQ0FBQztFQUFDLGdCQUFnQixFQUFFLG1FQUFHO0NBQXdDOztBQUNsSCxBQUE2QyxJQUF6QyxBQUFBLGFBQWEsQUFBQSxTQUFTLEFBQUEsSUFBSyxDQUFBLEFBQUEsYUFBYSxDQUFDLE1BQU0sQ0FBQztFQUFDLGdCQUFnQixFQUFFLG1FQUFHO0NBQXdDOztBQUNsSCxBQUE2QyxJQUF6QyxBQUFB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 */
