/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
/**
 * 1. Set default font family to sans-serif.
 * 2. Prevent iOS and IE text size adjust after device orientation change,
 *    without disabling user zoom.
 */
html {
  font-family: sans-serif;
  /* 1 */
  -ms-text-size-adjust: 100%;
  /* 2 */
  -webkit-text-size-adjust: 100%;
  /* 2 */ }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

sup {
  top: -0.5em; }

sub {
  bottom: -0.25em; }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/**
 * Define consistent border, margin, and padding.
 */
fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em; }

/**
 * 1. Correct `color` not being inherited in IE 8/9/10/11.
 * 2. Remove padding so people aren't caught out if they zero out fieldsets.
 */
legend {
  border: 0;
  /* 1 */
  padding: 0;
  /* 2 */ }

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

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

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

td,
th {
  padding: 0; }

/* maps to choose from
  ============================= */
/*$colors-nico : (
        primary-color-dark:   #C2185B,
        primary-color:        #E91E63,
        primary-color-light:  #F8BBD0,
        primary-color-text:   #FFFFFF,
        accent-color:         #9E9E9E,
        primary-text-color:   #212121,
        secondary-text-color: #727272,
        divider-color:        #B6B6B6
);*/
/*$colors-nico : (
        primary-color-dark:   #0288D1,
        primary-color:        #03A9F4,
        primary-color-light:  #B3E5FC,
        primary-color-text:   #FFFFFF,
        accent-color:         #009688,
        primary-text-color:   #212121,
        secondary-text-color: #727272,
        divider-color:        #B6B6B6
);*/
/* opacity map
  ============================= */
/* background: color-nico(color);
  ============================= */
/* color-darker() / color-lighter()
  ============================= */
/* color-opa(color, .x);
  ============================= */
/* =====================================
  end
===================================== */
h1 {
  letter-spacing: -1px;
  font-size: 1em;
  line-height: 1.25em; }
  @media screen and (min-width: 320px) {
    h1 {
      font-size: 1.5em; } }
  @media screen and (min-width: 375px) {
    h1 {
      font-size: 2em; } }
  @media screen and (min-width: 768px) {
    h1 {
      font-size: 2.5em; } }
  @media screen and (min-width: 1200px) {
    h1 {
      font-size: 3em; } }
  @media screen and (min-width: 1200px) {
    h1 {
      line-height: 1.5em; } }

.main-h1 {
  margin: 0; }

@keyframes giggle {
  0% {
    color: #00bcd4; }
  50% {
    color: #00d3ee; }
  100% {
    color: #00bcd4; } }

.sidebar-h1 {
  position: relative;
  padding-left: 35px;
  color: #727272;
  font-size: 1.7em; }
  .sidebar-h1:before {
    position: absolute;
    left: -10px;
    color: #00BCD4;
    font-family: icomoon;
    font-size: 1.5em;
    content: '\e902';
    animation: giggle 3s infinite ease-in-out; }

h2 {
  font-size: 1.625em;
  line-height: 1.15385em; }
  @media screen and (min-width: 320px) {
    h2 {
      font-size: 1.625em; } }
  @media screen and (min-width: 375px) {
    h2 {
      font-size: 1.5em; } }
  @media screen and (min-width: 768px) {
    h2 {
      font-size: 2em; } }
  @media screen and (min-width: 1200px) {
    h2 {
      font-size: 2em; } }
  @media screen and (min-width: 320px) {
    h2 {
      line-height: 1.15385em; } }
  @media screen and (min-width: 375px) {
    h2 {
      line-height: 1.25em; } }

.sidebar-h2 {
  font-size: 1.6em; }

h3 {
  font-size: 1.625em;
  line-height: 1.13636em; }
  @media screen and (min-width: 320px) {
    h3 {
      font-size: 1.625em; } }
  @media screen and (min-width: 375px) {
    h3 {
      font-size: 1.375em; } }
  @media screen and (min-width: 768px) {
    h3 {
      font-size: 1.75em; } }
  @media screen and (min-width: 1200px) {
    h3 {
      font-size: 1.75em; } }
  @media screen and (min-width: 320px) {
    h3 {
      line-height: 1.13636em; } }
  @media screen and (min-width: 375px) {
    h3 {
      line-height: 1.25em; } }

h4 {
  font-size: 1.625em;
  line-height: 1.11111em; }
  @media screen and (min-width: 320px) {
    h4 {
      line-height: 1.11111em; } }
  @media screen and (min-width: 375px) {
    h4 {
      line-height: 1.22222em; } }

h5,
h6 {
  font-size: 1em; }

/* paragraphes
  ============================= */
p {
  font-family: "Lora", serif;
  font-weight: 400;
  line-height: 1.25em; }
  @media screen and (min-width: 320px) {
    p {
      line-height: 1.25em; } }
  @media screen and (min-width: 375px) {
    p {
      line-height: 1.125em; } }
  @media screen and (min-width: 768px) {
    p {
      line-height: 1.375em; } }

h1,
h2,
h3,
h4,
h5,
h6 {
  color: #212121;
  font-family: "Open Sans", sans-serif; }

.subtitle {
  margin-top: 0;
  color: #727272;
  font-size: 1.2em;
  text-transform: uppercase; }

.liste li {
  position: relative;
  padding-bottom: .5em;
  padding-left: 10px;
  font-family: "Lora", serif;
  line-height: 1.4em;
  list-style-type: none; }
  .liste li:before {
    position: absolute;
    top: 1px;
    left: -10px;
    margin-right: .5em;
    color: #00BCD4;
    font-family: icomoon;
    content: '\e900'; }

blockquote,
p.quote {
  position: relative;
  margin: 2em 0;
  padding: .5em 1em;
  color: #553c32;
  font-family: "Lora", serif;
  font-size: 1.2em;
  font-style: italic;
  line-height: 30px;
  text-align: center; }
  blockquote:before, blockquote:after,
  p.quote:before,
  p.quote:after {
    display: block;
    position: absolute;
    width: 100%;
    height: 2px;
    background: linear-gradient(to right, #fff 10%, #00BCD4 50%, #fff 90%);
    content: ''; }
  blockquote:before,
  p.quote:before {
    top: -.4em; }
  blockquote:after,
  p.quote:after {
    bottom: -.4em; }

.grayquote {
  text-align: left;
  font-size: 1em;
  border-left: 3px solid #B6B6B6; }
  .grayquote:before, .grayquote:after {
    display: none; }

.citation {
  width: 400px;
  margin-bottom: 4em; }
  .citation:before, .citation:after {
    position: absolute;
    top: 0;
    background: none;
    color: #7a7a7a;
    font-family: icomoon;
    font-size: .8em;
    text-align: center;
    vertical-align: super; }
  .citation:before {
    right: 50%;
    content: '\e905'; }
  .citation:after {
    left: 50%;
    content: '\e904'; }

cite {
  position: relative;
  padding: 4px 6px;
  background: rgba(242, 242, 242, 0.5);
  color: inherit; }
  cite:before, cite:after {
    color: #4d4d4d;
    font-family: icomoon;
    font-size: 5px;
    vertical-align: super; }
  cite:before {
    padding-right: 4px;
    content: '\e905'; }
  cite:after {
    padding-left: 4px;
    content: '\e904'; }

.auteur-citation {
  position: absolute;
  right: 20px;
  top: 40px;
  background: none;
  font-style: normal;
  font-size: .8em; }
  .auteur-citation:before, .auteur-citation:after {
    content: ''; }

.text-link {
  transition: all .3s;
  border-bottom: 2px dotted #00BCD4;
  color: #5D4037;
  text-decoration: none; }
  .text-link:hover {
    opacity: .8; }

.fn {
  margin-top: 3em;
  padding: .5em 2em;
  border: 1px solid #dadada;
  border-top-left-radius: 20px;
  border-bottom-right-radius: 20px;
  font-size: .9em;
  font-style: italic; }
  .fn li {
    font-family: "Lora", serif; }

.footnote {
  color: inherit;
  text-decoration: none; }
  .footnote:after {
    margin-left: 2px;
    color: #00BCD4;
    font-size: .5em;
    font-weight: 700;
    text-decoration: underline;
    content: '1';
    cursor: pointer;
    vertical-align: super; }

.mail-de-contact::after {
  padding-left: .5em;
  color: currentColor;
  font-family: "Lora", serif;
  content: 'grassomariejosee@orange.fr'; }

.question {
  display: inline-block;
  padding: 2em 2.5em;
  background: RGBA(255, 234, 13, 0.7);
  font-size: 1.2em;
  font-weight: 700;
  text-transform: uppercase; }

p.intro:first-of-type:first-letter {
  font-size: 1.8em; }

.encart {
  background: #795548;
  padding: 5.26316%;
  color: #fff;
  border-radius: 10px;
  outline: 1px dashed #fff;
  outline-offset: -1em;
  margin-top: 2em; }
  .encart h2, .encart blockquote {
    color: #fff; }

.simple-blockquote {
  overflow: auto;
  box-shadow: -7px 0px 0px rgba(215, 204, 200, 0.5);
  text-align: start;
  margin-left: 1em; }
  .simple-blockquote:after, .simple-blockquote:before {
    display: none; }
  .simple-blockquote footer {
    margin-top: 1em;
    position: relative;
    left: 50%; }

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

/* breakpoints
  ============================= */
.has-curled-shadow {
  position: relative;
  background: #f3f0ef;
  padding: 1em 2em;
  border: 1px solid #eee;
  font-size: 1.1em; }
  .has-curled-shadow:before, .has-curled-shadow:after {
    position: absolute;
    top: 80%;
    bottom: 15px;
    left: 10px;
    width: 50%;
    max-width: 300px;
    transform: rotate(-3deg);
    background: #777;
    box-shadow: 0 15px 10px #777;
    content: '';
    z-index: -1; }
  .has-curled-shadow:after {
    right: 10px;
    left: auto;
    transform: rotate(3deg); }

.button-rect {
  display: inline-block;
  background: #00BCD4;
  padding: .8em 1.2em;
  border-radius: 4px;
  color: #fff;
  font-family: "Open Sans", sans-serif;
  text-decoration: none;
  box-shadow: 4px 4px 4px -4px #777;
  margin-right: 1em;
  margin-bottom: 1em;
  transition: all .3s; }
  .button-rect:hover {
    background: #0096aa; }

.buttons-div {
  margin-top: 5em; }

.buttons-div p {
  font-size: 1.3em; }

.button-nav {
  float: right;
  margin-right: 1em;
  margin-top: .3em;
  display: inline-block;
  height: 3.5rem;
  width: 3.5rem;
  background-color: transparent;
  background-image: linear-gradient(to right, #fff, #fff), linear-gradient(to right, #fff, #fff), linear-gradient(to right, #fff, #fff);
  background-position: center top, center, center bottom;
  background-repeat: no-repeat;
  background-size: 100% 28%;
  color: #333;
  padding: 0;
  outline: 0;
  border: 0;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: .25s;
  transition-property: transform, background-position;
  will-change: transform, background-position; }
  @media (min-width: 48em) {
    .button-nav {
      display: none; } }

.icon-envelop:before,
.icon-phone-outgoing:before {
  padding-right: 5px;
  color: #00BCD4; }

span[itemprop='name'] {
  padding-bottom: 1em;
  color: #00BCD4; }

span[itemprop] {
  font-family: "Lora", serif; }

span[itemprop='name'],
span[itemprop='address'],
span[itemprop='streetAddress'],
span[itemprop='telephone'] {
  display: block; }

span[itemprop='postalCode'] {
  padding-right: 10px; }

span[itemprop='telephone'] {
  padding-top: 1em; }

th,
td,
caption {
  height: 50px; }

caption,
td {
  font-family: "Lora", serif; }

.table-tarifs {
  min-width: 200px;
  max-width: 300px;
  margin: 0 auto;
  border: 5px solid #5D4037;
  background: #eee; }
  .table-tarifs caption {
    background: #5D4037;
    color: #fff;
    font-weight: 700;
    line-height: 50px; }
  .table-tarifs th {
    background: #795548;
    color: #fff;
    font-family: "Open Sans", sans-serif; }
  .table-tarifs td {
    background: #00BCD4;
    color: #fff;
    font-family: "Open Sans", sans-serif;
    font-size: 1.7em;
    text-align: center; }

.table-professions {
  margin: 3em auto; }
  @media (min-width: 48em) {
    .table-professions {
      min-width: 500px; } }
  .table-professions caption {
    background: #D7CCC8;
    line-height: 50px;
    font-size: 1.1em;
    font-weight: 700; }
  .table-professions th {
    background: #5D4037;
    color: #eee;
    font-weight: 400;
    border-right: 1px solid #fff; }
  .table-professions td {
    text-align: center;
    background: #f2eeed;
    border: 1px solid #fff;
    font-size: 1.1em; }

.home-top {
  padding-left: 1%;
  padding-right: 1%; }
  @media (min-width: 64em) {
    .home-top {
      padding-left: 7%;
      padding-right: 7%; } }
  @media (min-width: 90em) {
    .home-top {
      padding-left: 15%;
      padding-right: 15%; } }

.h1-home,
.h2-home {
  text-align: center; }

.h1-home {
  margin-top: 0; }

.h2-home {
  padding-bottom: 1.5em;
  color: #727272; }

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

.home-thumbnails {
  margin-top: 2em; }

.home-thumbnail {
  margin: 4em 0;
  border-top-left-radius: 5px;
  border-top-right-radius: 5px; }
  @media (min-width: 64em) {
    .home-thumbnail {
      display: -ms-flexbox;
      display: flex;
      min-height: 500px;
      -ms-flex-direction: column;
          flex-direction: column;
      -ms-flex-pack: justify;
          justify-content: space-between; } }
  @media (min-width: 75em) {
    .home-thumbnail {
      min-height: 450px; } }
  .home-thumbnail:first-of-type {
    background: url("images/troubles.jpg") no-repeat top center;
    background-size: 370px 100px; }
  .home-thumbnail:nth-of-type(2) {
    background: url("images/psychotherapies.jpg") no-repeat top center;
    background-size: 370px 100px; }
  .home-thumbnail:nth-of-type(3) {
    background: url("images/psychologue.jpg") no-repeat top center;
    background-size: 370px 100px; }
  .home-thumbnail:nth-of-type(4) {
    background: url("images/emdr.png") no-repeat top center;
    background-size: 370px 100px; }
  .home-thumbnail:nth-of-type(5) {
    background: url("images/cabinet.jpg") no-repeat top center;
    background-size: 370px 100px; }
  .home-thumbnail:nth-of-type(6) {
    position: relative;
    background: url("images/qui.png") no-repeat top center;
    background-size: 370px 100px; }

.home-thumbnail h2 {
  width: 260px;
  margin: 0 auto 1em;
  padding-bottom: 1em;
  background: rgba(0, 0, 0, 0.5);
  color: #e3e3e3;
  text-align: center; }
  @media (min-width: 48em) {
    .home-thumbnail h2 {
      margin-top: 140px;
      padding-bottom: 0;
      background: none;
      color: #727272; } }
  @media (min-width: 64em) {
    .home-thumbnail h2 {
      -ms-flex: 1 0 20%;
          flex: 1 0 20%; } }
  @media (min-width: 75em) {
    .home-thumbnail h2 {
      width: auto; } }

.home-thumbnail__text {
  margin-top: 90px; }
  @media (min-width: 64em) {
    .home-thumbnail__text {
      margin-top: 0;
      -ms-flex: 5 0 50%;
          flex: 5 0 50%; } }

.home-thumbnail a {
  display: block;
  position: relative;
  width: auto;
  margin: 0 30%;
  padding-top: 2em;
  color: #006165;
  font-family: "Open Sans", sans-serif;
  font-size: 1.1em;
  font-weight: 700; }
  @media (min-width: 64em) {
    .home-thumbnail a {
      margin: auto 0 0 0;
      -ms-flex: 0 1 40%;
          flex: 0 1 40%;
      -ms-flex-item-align: center;
          align-self: center; } }
  .home-thumbnail a:before {
    display: block;
    position: absolute;
    top: 5px;
    left: -58px;
    width: 50px;
    height: 50px;
    background: url("images/link-arrow.svg");
    content: ''; }

.site-footer {
  clear: both;
  overflow: auto;
  background: #5D4037;
  border-top: 4px solid #00BCD4; }
  @media (min-width: 48em) {
    .site-footer {
      height: 22em; } }

.footer-container {
  max-width: 1440px;
  margin-left: auto;
  margin-right: auto;
  padding-left: 1.69492%;
  padding-right: 1.69492%;
  position: relative; }
  .footer-container:after {
    content: " ";
    display: block;
    clear: both; }

.footer-container h4,
.footer-container p,
.footer-container span {
  color: #af9991; }

.footer-container h4 {
  font-weight: 100; }

@media (min-width: 48em) {
  .footer-sitemap,
  .footer-infos,
  .footer-contact {
    width: 23.72881%;
    float: left;
    margin-right: 1.69492%; } }

.footer-adeli,
.footer-legal p {
  font-family: "Open Sans", sans-serif;
  font-size: 1em; }

@media (min-width: 48em) {
  .footer-adeli {
    width: 23.72881%;
    float: right;
    margin-right: 0; } }

.footer-legal {
  clear: left;
  position: relative;
  top: 2em; }

.footer-nav {
  padding-left: 0; }
  .footer-nav li {
    list-style-type: none;
    padding-bottom: 4px; }
    .footer-nav li a {
      color: #af9991;
      transition: color .3s; }
      .footer-nav li a:hover {
        opacity: .6; }

span[itemprop="postalCode"] {
  float: left;
  padding-right: 4px; }

span[itemprop='telephone'] {
  font-size: 1.2em; }

span[itemprop] {
  display: block;
  padding-bottom: 4px; }

.site-header {
  height: 4em;
  background: #5D4037; }

.site-header-container {
  max-width: 1440px;
  margin-left: auto;
  margin-right: auto; }
  .site-header-container:after {
    content: " ";
    display: block;
    clear: both; }

.nom {
  float: left;
  color: #FFFFFF;
  font-family: "Open Sans", sans-serif;
  font-weight: 600;
  line-height: 4em; }
  @media (min-width: 48em) {
    .nom {
      margin-left: .5em; } }
  @media (min-width: 64em) {
    .nom {
      margin-left: 2em; } }

.main-nav {
  position: relative;
  float: right; }
  @media (min-width: 48em) {
    .main-nav {
      margin-right: .5em; } }
  @media (min-width: 64em) {
    .main-nav {
      margin-right: 1em; } }

.main-nav__ul {
  position: absolute;
  right: -9999px;
  margin: 0;
  background: #000;
  z-index: 100; }
  .main-nav__ul--open {
    width: 260px;
    right: -70px; }
    .main-nav__ul--open .icon-home {
      display: block;
      margin: 0 auto; }
  @media (min-width: 48em) {
    .main-nav__ul {
      position: relative;
      right: 0;
      background: none; } }

.main-nav ul li {
  position: relative;
  line-height: 4em;
  list-style-type: none; }
  @media (min-width: 48em) {
    .main-nav ul li {
      display: inline-block;
      padding-right: .2em; } }
  @media (min-width: 64em) {
    .main-nav ul li {
      padding-right: 1.9em; } }

.main-nav ul li a {
  transition: color .3s;
  color: #D7CCC8;
  font-family: "Open Sans", sans-serif;
  font-weight: 600;
  text-decoration: none;
  font-size: .8em; }
  @media (min-width: 64em) {
    .main-nav ul li a {
      font-size: 1em; } }
  .main-nav ul li a:hover {
    color: #c9bbb6; }

.main-nav ul ul {
  position: absolute;
  top: 64px;
  left: 9999px;
  width: 235px;
  height: 0;
  padding-left: 0;
  background: #4a332c;
  z-index: 100; }
  .main-nav ul ul li {
    display: block;
    transition: all .3s ease-in;
    text-align: left;
    opacity: 0; }
    .main-nav ul ul li:hover {
      background: #795548; }
  .main-nav ul ul a {
    display: block;
    padding-left: 1em; }

.dropdown {
  transition: height .15s ease-in; }

#has-dropdown::after {
  padding-left: 4px;
  color: #D7CCC8;
  font-family: icomoon;
  content: '\e903'; }

#has-dropdown:hover .dropdown {
  left: -4px; }
  #has-dropdown:hover .dropdown li {
    background: #4a332c;
    opacity: 1; }
    #has-dropdown:hover .dropdown li:hover {
      background: #795548; }

.icon-home {
  width: 30px;
  height: 30px; }

.home-svg {
  position: absolute;
  top: 5px;
  left: -15px; }

@media (min-width: 48em) {
  .hero {
    height: 32em;
    position: relative;
    max-width: 1440px;
    margin: 0 auto;
    background: url("./images/book-home.jpg") no-repeat center bottom/cover; } }

.site-header--fixed {
  position: fixed;
  top: 0;
  right: 0;
  left: 0;
  transition: all .4s;
  background: rgba(121, 85, 72, 0.9);
  z-index: 100; }

@media (min-width: 48em) {
  .page-aside {
    min-height: 100vh;
    margin-top: 1.69492%;
    padding: 0 1.69492%;
    background: rgba(215, 204, 200, 0.2);
    width: 32.20339%;
    float: right;
    margin-right: 0; } }

body {
  background: #D7CCC8;
  overflow-x: hidden; }

.page-wrapper {
  background: #fff;
  max-width: 1440px;
  margin-left: auto;
  margin-right: auto; }
  .page-wrapper:after {
    content: " ";
    display: block;
    clear: both; }

.main-content,
.page-main {
  position: relative;
  min-height: calc(100vh - 22em);
  padding: 1.69492%; }

@media (min-width: 48em) {
  .page-main {
    width: 66.10169%;
    float: left;
    margin-right: 1.69492%; } }

.full-page-intro {
  position: relative;
  width: 500px;
  margin: 0 auto;
  z-index: 1; }

@media (min-width: 48em) {
  .page-main-no-sb {
    margin-top: 1.69492%;
    padding: 1.69492%; } }

.page-half-left,
.page-half-right {
  padding: 1.69492%; }
  .page-half-left h2,
  .page-half-right h2 {
    text-align: center; }

@media (min-width: 64em) {
  .page-half-left {
    width: 49.15254%;
    float: left;
    margin-right: 1.69492%; } }

@media (min-width: 64em) {
  .page-half-right {
    width: 49.15254%;
    float: right;
    margin-right: 0; } }

img {
  width: 100%;
  height: auto; }

.page-image {
  display: block;
  width: auto;
  height: auto;
  margin: 10% 15%;
  border: 20px solid #D7CCC8;
  outline: 10px solid rgba(0, 0, 0, 0.6); }
  @media (min-width: 48em) {
    .page-image {
      margin: 5% 30%; } }
  .page-image img {
    display: block; }
  @media (min-width: 48em) {
    .page-image-large {
      margin: 5% 20%; } }
  .page-image--sidebar {
    margin: 2em 5%; }

.img-comment {
  width: auto;
  height: auto;
  margin: 0 25%;
  padding: 1em 1.5em;
  background: #f2eeed;
  background: #666666;
  outline: 5px solid #DBCBC8;
  outline-offset: -10px;
  color: #efe8e7;
  text-align: center; }
  .img-comment--sidebar {
    margin: 1em 0; }
  .img-comment cite {
    padding: 1.69492%;
    text-align: center;
    display: block;
    background: rgba(121, 85, 72, 0.1); }
    .img-comment cite:before, .img-comment cite:after {
      display: none; }

.planphoto {
  margin: 3em 0;
  padding: 1.69492%;
  background: #D7CCC8;
  overflow: auto; }
  @media (min-width: 48em) {
    .planphoto img:first-of-type {
      width: 49.15254%;
      float: left;
      margin-right: 1.69492%; } }
  @media (min-width: 48em) {
    .planphoto img:last-of-type {
      width: 49.15254%;
      float: right;
      margin-right: 0; } }

.has-border {
  margin-top: 1.69492%;
  border: 1px solid #eee; }

.page-one-third {
  padding: 1.69492%; }
  @media (min-width: 64em) {
    .page-one-third {
      width: 32.20339%;
      float: left;
      margin-right: 1.69492%; } }

.page-one-third-last {
  padding: 1.69492%; }
  @media (min-width: 64em) {
    .page-one-third-last {
      width: 32.20339%;
      float: right;
      margin-right: 0; } }

.break {
  clear: both; }

.gallery {
  overflow: auto; }

.gallery .bloc-gallery {
  padding: 1.69492%; }
  @media (min-width: 48em) {
    .gallery .bloc-gallery {
      width: 49.15254%;
      float: left; }
      .gallery .bloc-gallery:nth-child(2n + 1) {
        margin-left: 0;
        margin-right: -100%;
        clear: both;
        margin-left: 0; }
      .gallery .bloc-gallery:nth-child(2n + 2) {
        margin-left: 50.84746%;
        margin-right: -100%;
        clear: none; } }
  @media (min-width: 75em) {
    .gallery .bloc-gallery {
      width: 49.15254%;
      float: left; }
      .gallery .bloc-gallery:nth-child(2n + 1) {
        margin-left: 0;
        margin-right: -100%;
        clear: both;
        margin-left: 0; }
      .gallery .bloc-gallery:nth-child(2n + 2) {
        margin-left: 50.84746%;
        margin-right: -100%;
        clear: none; } }

#ytplayer {
  margin: 4em auto;
  display: block; }

.lorem {
  color: orange;
  font-weight: 700; }

.anim-mot {
  display: none;
  position: absolute;
  min-width: 150px;
  max-width: 200px;
  padding: 10px 15px;
  border: 3px solid #aacb77;
  border-radius: 4px;
  background: #2ba1aa;
  color: #fefefe;
  font-family: "Open Sans", sans-serif;
  font-size: 1.2em;
  font-weight: 700;
  letter-spacing: 1px;
  text-align: center; }
  @media (min-width: 48em) {
    .anim-mot {
      display: block; } }

.page-main-svg {
  margin: 4em 0 4em; }
  .page-main-svg svg {
    display: block;
    margin: 0 auto; }

#svg-footprints {
  display: block;
  width: 300px;
  margin: 0 auto; }

.foot {
  opacity: 0;
  fill: #00bcd7; }

#trauma-coeur {
  width: 145px; }

#coeur {
  fill: none;
  stroke: red;
  stroke-width: 3px; }

#pansement,
.pansement-point {
  opacity: 0; }

#pansement {
  stroke: none;
  fill: #00BCD4; }

.pansement-point {
  fill: #0096aa; }

#douleur-chronique {
  width: 200px; }

.aiguille {
  opacity: 0; }

.buttons {
  width: 280px;
  margin: 0 auto; }

.play-gsap-button,
.play-gsap-button-2,
.relancer {
  display: inline-block;
  width: 120px;
  margin: 0 auto 3em;
  padding: 5px;
  transition: opacity .3s;
  color: #fff;
  font-family: "Open Sans", sans-serif;
  font-weight: 100;
  text-transform: uppercase;
  cursor: pointer; }
  .play-gsap-button:hover,
  .play-gsap-button-2:hover,
  .relancer:hover {
    opacity: .8; }

.play-gsap-button,
.play-gsap-button-2 {
  background: linear-gradient(to bottom, #00BCD4, #4dd0e1); }

.relancer {
  background: linear-gradient(to top, #00BCD4, #4dd0e1); }

.svg-graph {
  position: relative;
  width: 500px;
  margin: 0 auto; }

.hommes {
  position: absolute;
  bottom: 87px;
  width: 25px;
  background: #4f7e8c; }
  .hommes-1 {
    left: 91px; }
  .hommes-2 {
    left: 163px; }
  .hommes-3 {
    left: 234px; }
  .hommes-4 {
    left: 306px; }
  .hommes-5 {
    left: 375px; }

.femmes {
  position: absolute;
  bottom: 87px;
  width: 25px;
  background: #db89b4; }
  .femmes-1 {
    left: 66px; }
  .femmes-2 {
    left: 138px; }
  .femmes-3 {
    left: 209px; }
  .femmes-4 {
    left: 281px; }
  .femmes-5 {
    left: 350px; }

.alco {
  position: absolute;
  bottom: 65px;
  padding-top: 1em;
  width: 55px;
  height: 40px;
  color: #fff;
  text-align: center; }
  .alco-0 {
    left: 100px;
    background: #A15A3E; }
  .alco-1 {
    left: 155px;
    background: #0F891E; }
  .alco-2 {
    left: 210px;
    background: #FF0000; }
  .alco-3 {
    left: 265px;
    background: #0067A0; }
  .alco-4 {
    left: 320px;
    background: #CF28C5; }

@font-face {
  font-family: 'icomoon';
  src: url("fonts/icomoon.eot?3p76n4");
  src: url("fonts/icomoon.eot?3p76n4#iefix") format("embedded-opentype"), url("fonts/icomoon.woff2?3p76n4") format("woff2"), url("fonts/icomoon.ttf?3p76n4") format("truetype"), url("fonts/icomoon.woff?3p76n4") format("woff"), url("fonts/icomoon.svg?3p76n4#icomoon") format("svg");
  font-weight: normal;
  font-style: normal; }

i {
  /* use !important to prevent issues with browser extensions that change fonts */
  font-family: 'icomoon' !important;
  speak: none;
  font-style: normal;
  font-weight: normal;
  font-variant: normal;
  text-transform: none;
  line-height: 1;
  /* Better Font Rendering =========== */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale; }

.icon-envelop:before {
  content: "\e906"; }

.icon-phone-outgoing:before {
  content: "\e907"; }

.icon-quotes-right:before {
  content: "\e904"; }

.icon-quotes-left:before {
  content: "\e905"; }

.icon-triangle-down:before {
  content: "\e903"; }

.icon-info:before {
  content: "\e902"; }

.icon-arrow-circle-right:before {
  content: "\e900"; }

.icon-home:before {
  content: "\e901"; }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJhc2UvX3Jlc2V0LnNjc3MiLCJtYWluLmNzcyIsImJhc2UvX2NvbG9ycy5zY3NzIiwiYmFzZS9fdHlwb2dyYXBoeS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2d1dHRlcnMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ib3gtc2l6aW5nLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3JlbS5zY3NzIiwiY29uZmlnL19icmVha3BvaW50cy5zY3NzIiwiY29tcG9uZW50cy9fYnV0dG9ucy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JyZWFrcG9pbnQtcGx1Z2luLnNjc3MiLCJjb21wb25lbnRzL19pY29ucy5zY3NzIiwiY29tcG9uZW50cy9fc2NoZW1hb3JnLnNjc3MiLCJjb21wb25lbnRzL190YWJsZXMuc2NzcyIsInBhZ2VzL19ob21lLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fc3Bhbi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2RpcmVjdGlvbi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2lzb2xhdGUuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19nYWxsZXJ5LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fcm93cy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9fZW5kLnNjc3MiLCJwYXJ0aWFscy9fZm9vdGVyLnNjc3MiLCJjb25maWcvX3N1c3kuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19jb250YWluZXIuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fY2xlYXJmaXguc2NzcyIsInBhcnRpYWxzL19oZWFkZXIuc2NzcyIsInBhcnRpYWxzL19zaWRlYmFyLnNjc3MiLCJwYXJ0aWFscy9fbWFpbi1jb250ZW50LnNjc3MiLCJkZWJ1Zy1kZW1vL19kZWJ1Zy5zY3NzIiwiYW5pbWF0aW9ucy9fZ3NhcC5zY3NzIiwidmVuZG9yL19pY29tb29uLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNEVBQTRFO0FBRTVFOzs7O0dBSUc7QUFFSDtFQUNFLHdCQUF3QjtFQUFFLE9BQU87RUFDakMsMkJBQTJCO0VBQUUsT0FBTztFQUNwQywrQkFBK0I7RUFBRSxPQUFPLEVBQ3pDOztBQUVEOztHQUVHO0FBRUg7RUFDRSxVQUFVLEVBQ1g7O0FBRUQ7Z0ZBQ2dGO0FBRWhGOzs7OztHQUtHO0FBRUg7Ozs7Ozs7Ozs7Ozs7RUFhRSxlQUFlLEVBQ2hCOztBQUVEOzs7R0FHRztBQUVIOzs7O0VBSUUsc0JBQXNCO0VBQUUsT0FBTztFQUMvQix5QkFBeUI7RUFBRSxPQUFPLEVBQ25DOztBQUVEOzs7R0FHRztBQUVIO0VBQ0UsY0FBYztFQUNkLFVBQVUsRUFDWDs7QUFFRDs7O0dBR0c7QUNOSDs7RURVRSxjQUFjLEVBQ2Y7O0FBRUQ7Z0ZBQ2dGO0FBRWhGOztHQUVHO0FBRUg7RUFDRSw4QkFBOEIsRUFDL0I7O0FBRUQ7OztHQUdHO0FBRUg7O0VBRUUsV0FBVyxFQUNaOztBQUVEO2dGQUNnRjtBQUVoRjs7R0FFRztBQUVIO0VBQ0UsMEJBQTBCLEVBQzNCOztBQUVEOztHQUVHO0FBRUg7O0VBRUUsa0JBQWtCLEVBQ25COztBQUVEOztHQUVHO0FBRUg7RUFDRSxtQkFBbUIsRUFDcEI7O0FBRUQ7OztH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QlEsWUFBVztJQUNYLG9CQUFvQixFQUN2QjtFQXJCTDtJQXVCUSxZQUFXO0lBRVgsb0JBQW9CLEVBQ3ZCO0VBMUJMO0lBNEJRLFlBQVc7SUFFWCxvQkFBb0IsRUFDdkI7O0FDbE1MO0VBQ0UsdUJBQXVCO0VBQ3ZCLHFDQUFXO0VBQ1gsc1JBSThDO0VBQzlDLG9CQUFvQjtFQUNwQixtQkFBbUIsRUFBQTs7QUFHckI7RUFDRSxnRkFBZ0Y7RUFDaEYsa0NBQWtDO0VBQ2xDLFlBQVk7RUFDWixtQkFBbUI7RUFDbkIsb0JBQW9CO0VBQ3BCLHFCQUFxQjtFQUNyQixxQkFBcUI7RUFDckIsZUFBZTtFQUVmLHVDQUF1QztFQUN2QyxvQ0FBb0M7RUFDcEMsbUNBQW1DLEVBQ3BDOztBQUVEO0VBQ0UsaUJBQWlCLEVBQ2xCOztBQUNEO0VBQ0UsaUJBQWlCLEVBQ2xCOztBQUNEO0VBQ0UsaUJBQWlCLEVBQ2xCOztBQUNEO0VBQ0UsaUJBQWlCLEVBQ2xCOztBQUNEO0VBQ0UsaUJBQWlCLEVBQ2xCOztBQUNEO0VBQ0UsaUJBQWlCLEVBQ2xCOztBQUNEO0VBQ0UsaUJBQWlCLEVBQ2xCOztBQUNEO0VBQ0UsaUJBQWlCLEVBQ2xCIiwiZmlsZSI6Im1haW4uY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyohIG5vcm1hbGl6ZS5jc3MgdjMuMC4zIHwgTUlUIExpY2Vuc2UgfCBnaXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzcyAqL1xuXG4vKipcbiAqIDEuIFNldCBkZWZhdWx0IGZvbnQgZmFtaWx5IHRvIHNhbnMtc2VyaWYuXG4gKiAyLiBQcmV2ZW50IGlPUyBhbmQgSUUgdGV4dCBzaXplIGFkanVzdCBhZnRlciBkZXZpY2Ugb3JpZW50YXRpb24gY2hhbmdlLFxuICogICAgd2l0aG91dCBkaXNhYmxpbmcgdXNlciB6b29tLlxuICovXG5cbmh0bWwge1xuICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsgLyogMSAqL1xuICAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLyogMiAqL1xuICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBSZW1vdmUgZGVmYXVsdCBtYXJnaW4uXG4gKi9cblxuYm9keSB7XG4gIG1hcmdpbjogMDtcbn1cblxuLyogSFRNTDUgZGlzcGxheSBkZWZpbml0aW9uc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBDb3JyZWN0IGBibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBmb3IgYW55IEhUTUw1IGVsZW1lbnQgaW4gSUUgOC85LlxuICogQ29ycmVjdCBgYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgZm9yIGBkZXRhaWxzYCBvciBgc3VtbWFyeWAgaW4gSUUgMTAvMTFcbiAqIGFuZCBGaXJlZm94LlxuICogQ29ycmVjdCBgYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgZm9yIGBtYWluYCBpbiBJRSAxMS5cbiAqL1xuXG5hcnRpY2xlLFxuYXNpZGUsXG5kZXRhaWxzLFxuZmlnY2FwdGlvbixcbmZpZ3VyZSxcbmZvb3RlcixcbmhlYWRlcixcbmhncm91cCxcbm1haW4sXG5tZW51LFxubmF2LFxuc2VjdGlvbixcbnN1bW1hcnkge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IGBpbmxpbmUtYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgaW4gSUUgOC85LlxuICogMi4gTm9ybWFsaXplIHZlcnRpY2FsIGFsaWdubWVudCBvZiBgcHJvZ3Jlc3NgIGluIENocm9tZSwgRmlyZWZveCwgYW5kIE9wZXJhLlxuICovXG5cbmF1ZGlvLFxuY2FudmFzLFxucHJvZ3Jlc3MsXG52aWRlbyB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jazsgLyogMSAqL1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBQcmV2ZW50IG1vZGVybiBicm93c2VycyBmcm9tIGRpc3BsYXlpbmcgYGF1ZGlvYCB3aXRob3V0IGNvbnRyb2xzLlxuICogUmVtb3ZlIGV4Y2VzcyBoZWlnaHQgaW4gaU9TIDUgZGV2aWNlcy5cbiAqL1xuXG5hdWRpbzpub3QoW2NvbnRyb2xzXSkge1xuICBkaXNwbGF5OiBub25lO1xuICBoZWlnaHQ6IDA7XG59XG5cbi8qKlxuICogQWRkcmVzcyBgW2hpZGRlbl1gIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gSUUgOC85LzEwLlxuICogSGlkZSB0aGUgYHRlbXBsYXRlYCBlbGVtZW50IGluIElFIDgvOS8xMC8xMSwgU2FmYXJpLCBhbmQgRmlyZWZveCA8IDIyLlxuICovXG5cbltoaWRkZW5dLFxudGVtcGxhdGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4vKiBMaW5rc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGdyYXkgYmFja2dyb3VuZCBjb2xvciBmcm9tIGFjdGl2ZSBsaW5rcyBpbiBJRSAxMC5cbiAqL1xuXG5hIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi8qKlxuICogSW1wcm92ZSByZWFkYWJpbGl0eSBvZiBmb2N1c2VkIGVsZW1lbnRzIHdoZW4gdGhleSBhcmUgYWxzbyBpbiBhblxuICogYWN0aXZlL2hvdmVyIHN0YXRlLlxuICovXG5cbmE6YWN0aXZlLFxuYTpob3ZlciB7XG4gIG91dGxpbmU6IDA7XG59XG5cbi8qIFRleHQtbGV2ZWwgc2VtYW50aWNzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBJRSA4LzkvMTAvMTEsIFNhZmFyaSwgYW5kIENocm9tZS5cbiAqL1xuXG5hYmJyW3RpdGxlXSB7XG4gIGJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQ7XG59XG5cbi8qKlxuICogQWRkcmVzcyBzdHlsZSBzZXQgdG8gYGJvbGRlcmAgaW4gRmlyZWZveCA0KywgU2FmYXJpLCBhbmQgQ2hyb21lLlxuICovXG5cbmIsXG5zdHJvbmcge1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLyoqXG4gKiBBZGRyZXNzIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gU2FmYXJpIGFuZCBDaHJvbWUuXG4gKi9cblxuZGZuIHtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG4vKipcbiAqIEFkZHJlc3MgdmFyaWFibGUgYGgxYCBmb250LXNpemUgYW5kIG1hcmdpbiB3aXRoaW4gYHNlY3Rpb25gIGFuZCBgYXJ0aWNsZWBcbiAqIGNvbnRleHRzIGluIEZpcmVmb3ggNCssIFNhZmFyaSwgYW5kIENocm9tZS5cbiAqL1xuXG5oMSB7XG4gIGZvbnQtc2l6ZTogMmVtO1xuICBtYXJnaW46IDAuNjdlbSAwO1xufVxuXG4vKipcbiAqIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBJRSA4LzkuXG4gKi9cblxubWFyayB7XG4gIGJhY2tncm91bmQ6ICNmZjA7XG4gIGNvbG9yOiAjMDAwO1xufVxuXG4vKipcbiAqIEFkZHJlc3MgaW5jb25zaXN0ZW50IGFuZCB2YXJpYWJsZSBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbnNtYWxsIHtcbiAgZm9udC1zaXplOiA4MCU7XG59XG5cbi8qKlxuICogUHJldmVudCBgc3ViYCBhbmQgYHN1cGAgYWZmZWN0aW5nIGBsaW5lLWhlaWdodGAgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbnN1YixcbnN1cCB7XG4gIGZvbnQtc2l6ZTogNzUlO1xuICBsaW5lLWhlaWdodDogMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbnN1cCB7XG4gIHRvcDogLTAuNWVtO1xufVxuXG5zdWIge1xuICBib3R0b206IC0wLjI1ZW07XG59XG5cbi8qIEVtYmVkZGVkIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogUmVtb3ZlIGJvcmRlciB3aGVuIGluc2lkZSBgYWAgZWxlbWVudCBpbiBJRSA4LzkvMTAuXG4gKi9cblxuaW1nIHtcbiAgYm9yZGVyOiAwO1xufVxuXG4vKipcbiAqIENvcnJlY3Qgb3ZlcmZsb3cgbm90IGhpZGRlbiBpbiBJRSA5LzEwLzExLlxuICovXG5cbnN2Zzpub3QoOnJvb3QpIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLyogR3JvdXBpbmcgY29udGVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBBZGRyZXNzIG1hcmdpbiBub3QgcHJlc2VudCBpbiBJRSA4LzkgYW5kIFNhZmFyaS5cbiAqL1xuXG5maWd1cmUge1xuICBtYXJnaW46IDFlbSA0MHB4O1xufVxuXG4vKipcbiAqIEFkZHJlc3MgZGlmZmVyZW5jZXMgYmV0d2VlbiBGaXJlZm94IGFuZCBvdGhlciBicm93c2Vycy5cbiAqL1xuXG5ociB7XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICBoZWlnaHQ6IDA7XG59XG5cbi8qKlxuICogQ29udGFpbiBvdmVyZmxvdyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxucHJlIHtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG5cbi8qKlxuICogQWRkcmVzcyBvZGQgYGVtYC11bml0IGZvbnQgc2l6ZSByZW5kZXJpbmcgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbmNvZGUsXG5rYmQsXG5wcmUsXG5zYW1wIHtcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlO1xuICBmb250LXNpemU6IDFlbTtcbn1cblxuLyogRm9ybXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogS25vd24gbGltaXRhdGlvbjogYnkgZGVmYXVsdCwgQ2hyb21lIGFuZCBTYWZhcmkgb24gT1MgWCBhbGxvdyB2ZXJ5IGxpbWl0ZWRcbiAqIHN0eWxpbmcgb2YgYHNlbGVjdGAsIHVubGVzcyBhIGBib3JkZXJgIHByb3BlcnR5IGlzIHNldC5cbiAqL1xuXG4vKipcbiAqIDEuIENvcnJlY3QgY29sb3Igbm90IGJlaW5nIGluaGVyaXRlZC5cbiAqICAgIEtub3duIGlzc3VlOiBhZmZlY3RzIGNvbG9yIG9mIGRpc2FibGVkIGVsZW1lbnRzLlxuICogMi4gQ29ycmVjdCBmb250IHByb3BlcnRpZXMgbm90IGJlaW5nIGluaGVyaXRlZC5cbiAqIDMuIEFkZHJlc3MgbWFyZ2lucyBzZXQgZGlmZmVyZW50bHkgaW4gRmlyZWZveCA0KywgU2FmYXJpLCBhbmQgQ2hyb21lLlxuICovXG5cbmJ1dHRvbixcbmlucHV0LFxub3B0Z3JvdXAsXG5zZWxlY3QsXG50ZXh0YXJlYSB7XG4gIGNvbG9yOiBpbmhlcml0OyAvKiAxICovXG4gIGZvbnQ6IGluaGVyaXQ7IC8qIDIgKi9cbiAgbWFyZ2luOiAwOyAvKiAzICovXG59XG5cbi8qKlxuICogQWRkcmVzcyBgb3ZlcmZsb3dgIHNldCB0byBgaGlkZGVuYCBpbiBJRSA4LzkvMTAvMTEuXG4gKi9cblxuYnV0dG9uIHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG5cbi8qKlxuICogQWRkcmVzcyBpbmNvbnNpc3RlbnQgYHRleHQtdHJhbnNmb3JtYCBpbmhlcml0YW5jZSBmb3IgYGJ1dHRvbmAgYW5kIGBzZWxlY3RgLlxuICogQWxsIG90aGVyIGZvcm0gY29udHJvbCBlbGVtZW50cyBkbyBub3QgaW5oZXJpdCBgdGV4dC10cmFuc2Zvcm1gIHZhbHVlcy5cbiAqIENvcnJlY3QgYGJ1dHRvbmAgc3R5bGUgaW5oZXJpdGFuY2UgaW4gRmlyZWZveCwgSUUgOC85LzEwLzExLCBhbmQgT3BlcmEuXG4gKiBDb3JyZWN0IGBzZWxlY3RgIHN0eWxlIGluaGVyaXRhbmNlIGluIEZpcmVmb3guXG4gKi9cblxuYnV0dG9uLFxuc2VsZWN0IHtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG59XG5cbi8qKlxuICogMS4gQXZvaWQgdGhlIFdlYktpdCBidWcgaW4gQW5kcm9pZCA0LjAuKiB3aGVyZSAoMikgZGVzdHJveXMgbmF0aXZlIGBhdWRpb2BcbiAqICAgIGFuZCBgdmlkZW9gIGNvbnRyb2xzLlxuICogMi4gQ29ycmVjdCBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIGBpbnB1dGAgdHlwZXMgaW4gaU9TLlxuICogMy4gSW1wcm92ZSB1c2FiaWxpdHkgYW5kIGNvbnNpc3RlbmN5IG9mIGN1cnNvciBzdHlsZSBiZXR3ZWVuIGltYWdlLXR5cGVcbiAqICAgIGBpbnB1dGAgYW5kIG90aGVycy5cbiAqL1xuXG5idXR0b24sXG5odG1sIGlucHV0W3R5cGU9XCJidXR0b25cIl0sIC8qIDEgKi9cbmlucHV0W3R5cGU9XCJyZXNldFwiXSxcbmlucHV0W3R5cGU9XCJzdWJtaXRcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLyogMiAqL1xuICBjdXJzb3I6IHBvaW50ZXI7IC8qIDMgKi9cbn1cblxuLyoqXG4gKiBSZS1zZXQgZGVmYXVsdCBjdXJzb3IgZm9yIGRpc2FibGVkIGVsZW1lbnRzLlxuICovXG5cbmJ1dHRvbltkaXNhYmxlZF0sXG5odG1sIGlucHV0W2Rpc2FibGVkXSB7XG4gIGN1cnNvcjogZGVmYXVsdDtcbn1cblxuLyoqXG4gKiBSZW1vdmUgaW5uZXIgcGFkZGluZyBhbmQgYm9yZGVyIGluIEZpcmVmb3ggNCsuXG4gKi9cblxuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuaW5wdXQ6Oi1tb3otZm9jdXMtaW5uZXIge1xuICBib3JkZXI6IDA7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi8qKlxuICogQWRkcmVzcyBGaXJlZm94IDQrIHNldHRpbmcgYGxpbmUtaGVpZ2h0YCBvbiBgaW5wdXRgIHVzaW5nIGAhaW1wb3J0YW50YCBpblxuICogdGhlIFVBIHN0eWxlc2hlZXQuXG4gKi9cblxuaW5wdXQge1xuICBsaW5lLWhlaWdodDogbm9ybWFsO1xufVxuXG4vKipcbiAqIEl0J3MgcmVjb21tZW5kZWQgdGhhdCB5b3UgZG9uJ3QgYXR0ZW1wdCB0byBzdHlsZSB0aGVzZSBlbGVtZW50cy5cbiAqIEZpcmVmb3gncyBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IHJlc3BlY3QgYm94LXNpemluZywgcGFkZGluZywgb3Igd2lkdGguXG4gKlxuICogMS4gQWRkcmVzcyBib3ggc2l6aW5nIHNldCB0byBgY29udGVudC1ib3hgIGluIElFIDgvOS8xMC5cbiAqIDIuIFJlbW92ZSBleGNlc3MgcGFkZGluZyBpbiBJRSA4LzkvMTAuXG4gKi9cblxuaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdLFxuaW5wdXRbdHlwZT1cInJhZGlvXCJdIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLyogMSAqL1xuICBwYWRkaW5nOiAwOyAvKiAyICovXG59XG5cbi8qKlxuICogRml4IHRoZSBjdXJzb3Igc3R5bGUgZm9yIENocm9tZSdzIGluY3JlbWVudC9kZWNyZW1lbnQgYnV0dG9ucy4gRm9yIGNlcnRhaW5cbiAqIGBmb250LXNpemVgIHZhbHVlcyBvZiB0aGUgYGlucHV0YCwgaXQgY2F1c2VzIHRoZSBjdXJzb3Igc3R5bGUgb2YgdGhlXG4gKiBkZWNyZW1lbnQgYnV0dG9uIHRvIGNoYW5nZSBmcm9tIGBkZWZhdWx0YCB0byBgdGV4dGAuXG4gKi9cblxuaW5wdXRbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcbmlucHV0W3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICBoZWlnaHQ6IGF1dG87XG59XG5cbi8qKlxuICogMS4gQWRkcmVzcyBgYXBwZWFyYW5jZWAgc2V0IHRvIGBzZWFyY2hmaWVsZGAgaW4gU2FmYXJpIGFuZCBDaHJvbWUuXG4gKiAyLiBBZGRyZXNzIGBib3gtc2l6aW5nYCBzZXQgdG8gYGJvcmRlci1ib3hgIGluIFNhZmFyaSBhbmQgQ2hyb21lLlxuICovXG5cbmlucHV0W3R5cGU9XCJzZWFyY2hcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsgLyogMSAqL1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsgLyogMiAqL1xufVxuXG4vKipcbiAqIFJlbW92ZSBpbm5lciBwYWRkaW5nIGFuZCBzZWFyY2ggY2FuY2VsIGJ1dHRvbiBpbiBTYWZhcmkgYW5kIENocm9tZSBvbiBPUyBYLlxuICogU2FmYXJpIChidXQgbm90IENocm9tZSkgY2xpcHMgdGhlIGNhbmNlbCBidXR0b24gd2hlbiB0aGUgc2VhcmNoIGlucHV0IGhhc1xuICogcGFkZGluZyAoYW5kIGB0ZXh0ZmllbGRgIGFwcGVhcmFuY2UpLlxuICovXG5cbmlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xufVxuXG4vKipcbiAqIERlZmluZSBjb25zaXN0ZW50IGJvcmRlciwgbWFyZ2luLCBhbmQgcGFkZGluZy5cbiAqL1xuXG5maWVsZHNldCB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNjMGMwYzA7XG4gIG1hcmdpbjogMCAycHg7XG4gIHBhZGRpbmc6IDAuMzVlbSAwLjYyNWVtIDAuNzVlbTtcbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IGBjb2xvcmAgbm90IGJlaW5nIGluaGVyaXRlZCBpbiBJRSA4LzkvMTAvMTEuXG4gKiAyLiBSZW1vdmUgcGFkZGluZyBzbyBwZW9wbGUgYXJlbid0IGNhdWdodCBvdXQgaWYgdGhleSB6ZXJvIG91dCBmaWVsZHNldHMuXG4gKi9cblxubGVnZW5kIHtcbiAgYm9yZGVyOiAwOyAvKiAxICovXG4gIHBhZGRpbmc6IDA7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBSZW1vdmUgZGVmYXVsdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgaW4gSUUgOC85LzEwLzExLlxuICovXG5cbnRleHRhcmVhIHtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG5cbi8qKlxuICogRG9uJ3QgaW5oZXJpdCB0aGUgYGZvbnQtd2VpZ2h0YCAoYXBwbGllZCBieSBhIHJ1bGUgYWJvdmUpLlxuICogTk9URTogdGhlIGRlZmF1bHQgY2Fubm90IHNhZmVseSBiZSBjaGFuZ2VkIGluIENocm9tZSBhbmQgU2FmYXJpIG9uIE9TIFguXG4gKi9cblxub3B0Z3JvdXAge1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLyogVGFibGVzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIFJlbW92ZSBtb3N0IHNwYWNpbmcgYmV0d2VlbiB0YWJsZSBjZWxscy5cbiAqL1xuXG50YWJsZSB7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gIGJvcmRlci1zcGFjaW5nOiAwO1xufVxuXG50ZCxcbnRoIHtcbiAgcGFkZGluZzogMDtcbn1cbiIsIi8qISBub3JtYWxpemUuY3NzIHYzLjAuMyB8IE1JVCBMaWNlbnNlIHwgZ2l0aHViLmNvbS9uZWNvbGFzL25vcm1hbGl6ZS5jc3MgKi9cbi8qKlxuICogMS4gU2V0IGRlZmF1bHQgZm9udCBmYW1pbHkgdG8gc2Fucy1zZXJpZi5cbiAqIDIuIFByZXZlbnQgaU9TIGFuZCBJRSB0ZXh0IHNpemUgYWRqdXN0IGFmdGVyIGRldmljZSBvcmllbnRhdGlvbiBjaGFuZ2UsXG4gKiAgICB3aXRob3V0IGRpc2FibGluZyB1c2VyIHpvb20uXG4gKi9cbmh0bWwge1xuICBmb250LWZhbWlseTogc2Fucy1zZXJpZjtcbiAgLyogMSAqL1xuICAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTtcbiAgLyogMiAqL1xuICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7XG4gIC8qIDIgKi8gfVxuXG4vKipcbiAqIFJlbW92ZSBkZWZhdWx0IG1hcmdpbi5cbiAqL1xuYm9keSB7XG4gIG1hcmdpbjogMDsgfVxuXG4vKiBIVE1MNSBkaXNwbGF5IGRlZmluaXRpb25zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBDb3JyZWN0IGBibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBmb3IgYW55IEhUTUw1IGVsZW1lbnQgaW4gSUUgOC85LlxuICogQ29ycmVjdCBgYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgZm9yIGBkZXRhaWxzYCBvciBgc3VtbWFyeWAgaW4gSUUgMTAvMTFcbiAqIGFuZCBGaXJlZm94LlxuICogQ29ycmVjdCBgYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgZm9yIGBtYWluYCBpbiBJRSAxMS5cbiAqL1xuYXJ0aWNsZSxcbmFzaWRlLFxuZGV0YWlscyxcbmZpZ2NhcHRpb24sXG5maWd1cmUsXG5mb290ZXIsXG5oZWFkZXIsXG5oZ3JvdXAsXG5tYWluLFxubWVudSxcbm5hdixcbnNlY3Rpb24sXG5zdW1tYXJ5IHtcbiAgZGlzcGxheTogYmxvY2s7IH1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IGBpbmxpbmUtYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgaW4gSUUgOC85LlxuICogMi4gTm9ybWFsaXplIHZlcnRpY2FsIGFsaWdubWVudCBvZiBgcHJvZ3Jlc3NgIGluIENocm9tZSwgRmlyZWZveCwgYW5kIE9wZXJhLlxuICovXG5hdWRpbyxcbmNhbnZhcyxcbnByb2dyZXNzLFxudmlkZW8ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIC8qIDEgKi9cbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuICAvKiAyICovIH1cblxuLyoqXG4gKiBQcmV2ZW50IG1vZGVybiBicm93c2VycyBmcm9tIGRpc3BsYXlpbmcgYGF1ZGlvYCB3aXRob3V0IGNvbnRyb2xzLlxuICogUmVtb3ZlIGV4Y2VzcyBoZWlnaHQgaW4gaU9TIDUgZGV2aWNlcy5cbiAqL1xuYXVkaW86bm90KFtjb250cm9sc10pIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgaGVpZ2h0OiAwOyB9XG5cbi8qKlxuICogQWRkcmVzcyBgW2hpZGRlbl1gIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gSUUgOC85LzEwLlxuICogSGlkZSB0aGUgYHRlbXBsYXRlYCBlbGVtZW50IGluIElFIDgvOS8xMC8xMSwgU2FmYXJpLCBhbmQgRmlyZWZveCA8IDIyLlxuICovXG5baGlkZGVuXSxcbnRlbXBsYXRlIHtcbiAgZGlzcGxheTogbm9uZTsgfVxuXG4vKiBMaW5rc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogUmVtb3ZlIHRoZSBncmF5IGJhY2tncm91bmQgY29sb3IgZnJvbSBhY3RpdmUgbGlua3MgaW4gSUUgMTAuXG4gKi9cbmEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuXG4vKipcbiAqIEltcHJvdmUgcmVhZGFiaWxpdHkgb2YgZm9jdXNlZCBlbGVtZW50cyB3aGVuIHRoZXkgYXJlIGFsc28gaW4gYW5cbiAqIGFjdGl2ZS9ob3ZlciBzdGF0ZS5cbiAqL1xuYTphY3RpdmUsXG5hOmhvdmVyIHtcbiAgb3V0bGluZTogMDsgfVxuXG4vKiBUZXh0LWxldmVsIHNlbWFudGljc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS8xMC8xMSwgU2FmYXJpLCBhbmQgQ2hyb21lLlxuICovXG5hYmJyW3RpdGxlXSB7XG4gIGJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQ7IH1cblxuLyoqXG4gKiBBZGRyZXNzIHN0eWxlIHNldCB0byBgYm9sZGVyYCBpbiBGaXJlZm94IDQrLCBTYWZhcmksIGFuZCBDaHJvbWUuXG4gKi9cbmIsXG5zdHJvbmcge1xuICBmb250LXdlaWdodDogYm9sZDsgfVxuXG4vKipcbiAqIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBTYWZhcmkgYW5kIENocm9tZS5cbiAqL1xuZGZuIHtcbiAgZm9udC1zdHlsZTogaXRhbGljOyB9XG5cbi8qKlxuICogQWRkcmVzcyB2YXJpYWJsZSBgaDFgIGZvbnQtc2l6ZSBhbmQgbWFyZ2luIHdpdGhpbiBgc2VjdGlvbmAgYW5kIGBhcnRpY2xlYFxuICogY29udGV4dHMgaW4gRmlyZWZveCA0KywgU2FmYXJpLCBhbmQgQ2hyb21lLlxuICovXG5oMSB7XG4gIGZvbnQtc2l6ZTogMmVtO1xuICBtYXJnaW46IDAuNjdlbSAwOyB9XG5cbi8qKlxuICogQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS5cbiAqL1xubWFyayB7XG4gIGJhY2tncm91bmQ6ICNmZjA7XG4gIGNvbG9yOiAjMDAwOyB9XG5cbi8qKlxuICogQWRkcmVzcyBpbmNvbnNpc3RlbnQgYW5kIHZhcmlhYmxlIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cbnNtYWxsIHtcbiAgZm9udC1zaXplOiA4MCU7IH1cblxuLyoqXG4gKiBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBhZmZlY3RpbmcgYGxpbmUtaGVpZ2h0YCBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cbnN1YixcbnN1cCB7XG4gIGZvbnQtc2l6ZTogNzUlO1xuICBsaW5lLWhlaWdodDogMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IH1cblxuc3VwIHtcbiAgdG9wOiAtMC41ZW07IH1cblxuc3ViIHtcbiAgYm90dG9tOiAtMC4yNWVtOyB9XG5cbi8qIEVtYmVkZGVkIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIFJlbW92ZSBib3JkZXIgd2hlbiBpbnNpZGUgYGFgIGVsZW1lbnQgaW4gSUUgOC85LzEwLlxuICovXG5pbWcge1xuICBib3JkZXI6IDA7IH1cblxuLyoqXG4gKiBDb3JyZWN0IG92ZXJmbG93IG5vdCBoaWRkZW4gaW4gSUUgOS8xMC8xMS5cbiAqL1xuc3ZnOm5vdCg6cm9vdCkge1xuICBvdmVyZmxvdzogaGlkZGVuOyB9XG5cbi8qIEdyb3VwaW5nIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIEFkZHJlc3MgbWFyZ2luIG5vdCBwcmVzZW50IGluIElFIDgvOSBhbmQgU2FmYXJpLlxuICovXG5maWd1cmUge1xuICBtYXJnaW46IDFlbSA0MHB4OyB9XG5cbi8qKlxuICogQWRkcmVzcyBkaWZmZXJlbmNlcyBiZXR3ZWVuIEZpcmVmb3ggYW5kIG90aGVyIGJyb3dzZXJzLlxuICovXG5ociB7XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICBoZWlnaHQ6IDA7IH1cblxuLyoqXG4gKiBDb250YWluIG92ZXJmbG93IGluIGFsbCBicm93c2Vycy5cbiAqL1xucHJlIHtcbiAgb3ZlcmZsb3c6IGF1dG87IH1cblxuLyoqXG4gKiBBZGRyZXNzIG9kZCBgZW1gLXVuaXQgZm9udCBzaXplIHJlbmRlcmluZyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cbmNvZGUsXG5rYmQsXG5wcmUsXG5zYW1wIHtcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlO1xuICBmb250LXNpemU6IDFlbTsgfVxuXG4vKiBGb3Jtc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogS25vd24gbGltaXRhdGlvbjogYnkgZGVmYXVsdCwgQ2hyb21lIGFuZCBTYWZhcmkgb24gT1MgWCBhbGxvdyB2ZXJ5IGxpbWl0ZWRcbiAqIHN0eWxpbmcgb2YgYHNlbGVjdGAsIHVubGVzcyBhIGBib3JkZXJgIHByb3BlcnR5IGlzIHNldC5cbiAqL1xuLyoqXG4gKiAxLiBDb3JyZWN0IGNvbG9yIG5vdCBiZWluZyBpbmhlcml0ZWQuXG4gKiAgICBLbm93biBpc3N1ZTogYWZmZWN0cyBjb2xvciBvZiBkaXNhYmxlZCBlbGVtZW50cy5cbiAqIDIuIENvcnJlY3QgZm9udCBwcm9wZXJ0aWVzIG5vdCBiZWluZyBpbmhlcml0ZWQuXG4gKiAzLiBBZGRyZXNzIG1hcmdpbnMgc2V0IGRpZmZlcmVudGx5IGluIEZpcmVmb3ggNCssIFNhZmFyaSwgYW5kIENocm9tZS5cbiAqL1xuYnV0dG9uLFxuaW5wdXQsXG5vcHRncm91cCxcbnNlbGVjdCxcbnRleHRhcmVhIHtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIC8qIDEgKi9cbiAgZm9udDogaW5oZXJpdDtcbiAgLyogMiAqL1xuICBtYXJnaW46IDA7XG4gIC8qIDMgKi8gfVxuXG4vKipcbiAqIEFkZHJlc3MgYG92ZXJmbG93YCBzZXQgdG8gYGhpZGRlbmAgaW4gSUUgOC85LzEwLzExLlxuICovXG5idXR0b24ge1xuICBvdmVyZmxvdzogdmlzaWJsZTsgfVxuXG4vKipcbiAqIEFkZHJlc3MgaW5jb25zaXN0ZW50IGB0ZXh0LXRyYW5zZm9ybWAgaW5oZXJpdGFuY2UgZm9yIGBidXR0b25gIGFuZCBgc2VsZWN0YC5cbiAqIEFsbCBvdGhlciBmb3JtIGNvbnRyb2wgZWxlbWVudHMgZG8gbm90IGluaGVyaXQgYHRleHQtdHJhbnNmb3JtYCB2YWx1ZXMuXG4gKiBDb3JyZWN0IGBidXR0b25gIHN0eWxlIGluaGVyaXRhbmNlIGluIEZpcmVmb3gsIElFIDgvOS8xMC8xMSwgYW5kIE9wZXJhLlxuICogQ29ycmVjdCBgc2VsZWN0YCBzdHlsZSBpbmhlcml0YW5jZSBpbiBGaXJlZm94LlxuICovXG5idXR0b24sXG5zZWxlY3Qge1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgfVxuXG4vKipcbiAqIDEuIEF2b2lkIHRoZSBXZWJLaXQgYnVnIGluIEFuZHJvaWQgNC4wLiogd2hlcmUgKDIpIGRlc3Ryb3lzIG5hdGl2ZSBgYXVkaW9gXG4gKiAgICBhbmQgYHZpZGVvYCBjb250cm9scy5cbiAqIDIuIENvcnJlY3QgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSBgaW5wdXRgIHR5cGVzIGluIGlPUy5cbiAqIDMuIEltcHJvdmUgdXNhYmlsaXR5IGFuZCBjb25zaXN0ZW5jeSBvZiBjdXJzb3Igc3R5bGUgYmV0d2VlbiBpbWFnZS10eXBlXG4gKiAgICBgaW5wdXRgIGFuZCBvdGhlcnMuXG4gKi9cbmJ1dHRvbixcbmh0bWwgaW5wdXRbdHlwZT1cImJ1dHRvblwiXSxcbmlucHV0W3R5cGU9XCJyZXNldFwiXSxcbmlucHV0W3R5cGU9XCJzdWJtaXRcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcbiAgLyogMiAqL1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIC8qIDMgKi8gfVxuXG4vKipcbiAqIFJlLXNldCBkZWZhdWx0IGN1cnNvciBmb3IgZGlzYWJsZWQgZWxlbWVudHMuXG4gKi9cbmJ1dHRvbltkaXNhYmxlZF0sXG5odG1sIGlucHV0W2Rpc2FibGVkXSB7XG4gIGN1cnNvcjogZGVmYXVsdDsgfVxuXG4vKipcbiAqIFJlbW92ZSBpbm5lciBwYWRkaW5nIGFuZCBib3JkZXIgaW4gRmlyZWZveCA0Ky5cbiAqL1xuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuaW5wdXQ6Oi1tb3otZm9jdXMtaW5uZXIge1xuICBib3JkZXI6IDA7XG4gIHBhZGRpbmc6IDA7IH1cblxuLyoqXG4gKiBBZGRyZXNzIEZpcmVmb3ggNCsgc2V0dGluZyBgbGluZS1oZWlnaHRgIG9uIGBpbnB1dGAgdXNpbmcgYCFpbXBvcnRhbnRgIGluXG4gKiB0aGUgVUEgc3R5bGVzaGVldC5cbiAqL1xuaW5wdXQge1xuICBsaW5lLWhlaWdodDogbm9ybWFsOyB9XG5cbi8qKlxuICogSXQncyByZWNvbW1lbmRlZCB0aGF0IHlvdSBkb24ndCBhdHRlbXB0IHRvIHN0eWxlIHRoZXNlIGVsZW1lbnRzLlxuICogRmlyZWZveCdzIGltcGxlbWVudGF0aW9uIGRvZXNuJ3QgcmVzcGVjdCBib3gtc2l6aW5nLCBwYWRkaW5nLCBvciB3aWR0aC5cbiAqXG4gKiAxLiBBZGRyZXNzIGJveCBzaXppbmcgc2V0IHRvIGBjb250ZW50LWJveGAgaW4gSUUgOC85LzEwLlxuICogMi4gUmVtb3ZlIGV4Y2VzcyBwYWRkaW5nIGluIElFIDgvOS8xMC5cbiAqL1xuaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdLFxuaW5wdXRbdHlwZT1cInJhZGlvXCJdIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLyogMSAqL1xuICBwYWRkaW5nOiAwO1xuICAvKiAyICovIH1cblxuLyoqXG4gKiBGaXggdGhlIGN1cnNvciBzdHlsZSBmb3IgQ2hyb21lJ3MgaW5jcmVtZW50L2RlY3JlbWVudCBidXR0b25zLiBGb3IgY2VydGFpblxuICogYGZvbnQtc2l6ZWAgdmFsdWVzIG9mIHRoZSBgaW5wdXRgLCBpdCBjYXVzZXMgdGhlIGN1cnNvciBzdHlsZSBvZiB0aGVcbiAqIGRlY3JlbWVudCBidXR0b24gdG8gY2hhbmdlIGZyb20gYGRlZmF1bHRgIHRvIGB0ZXh0YC5cbiAqL1xuaW5wdXRbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcbmlucHV0W3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICBoZWlnaHQ6IGF1dG87IH1cblxuLyoqXG4gKiAxLiBBZGRyZXNzIGBhcHBlYXJhbmNlYCBzZXQgdG8gYHNlYXJjaGZpZWxkYCBpbiBTYWZhcmkgYW5kIENocm9tZS5cbiAqIDIuIEFkZHJlc3MgYGJveC1zaXppbmdgIHNldCB0byBgYm9yZGVyLWJveGAgaW4gU2FmYXJpIGFuZCBDaHJvbWUuXG4gKi9cbmlucHV0W3R5cGU9XCJzZWFyY2hcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDtcbiAgLyogMSAqL1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgLyogMiAqLyB9XG5cbi8qKlxuICogUmVtb3ZlIGlubmVyIHBhZGRpbmcgYW5kIHNlYXJjaCBjYW5jZWwgYnV0dG9uIGluIFNhZmFyaSBhbmQgQ2hyb21lIG9uIE9TIFguXG4gKiBTYWZhcmkgKGJ1dCBub3QgQ2hyb21lKSBjbGlwcyB0aGUgY2FuY2VsIGJ1dHRvbiB3aGVuIHRoZSBzZWFyY2ggaW5wdXQgaGFzXG4gKiBwYWRkaW5nIChhbmQgYHRleHRmaWVsZGAgYXBwZWFyYW5jZSkuXG4gKi9cbmlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOyB9XG5cbi8qKlxuICogRGVmaW5lIGNvbnNpc3RlbnQgYm9yZGVyLCBtYXJnaW4sIGFuZCBwYWRkaW5nLlxuICovXG5maWVsZHNldCB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNjMGMwYzA7XG4gIG1hcmdpbjogMCAycHg7XG4gIHBhZGRpbmc6IDAuMzVlbSAwLjYyNWVtIDAuNzVlbTsgfVxuXG4vKipcbiAqIDEuIENvcnJlY3QgYGNvbG9yYCBub3QgYmVpbmcgaW5oZXJpdGVkIGluIElFIDgvOS8xMC8xMS5cbiAqIDIuIFJlbW92ZSBwYWRkaW5nIHNvIHBlb3BsZSBhcmVuJ3QgY2F1Z2h0IG91dCBpZiB0aGV5IHplcm8gb3V0IGZpZWxkc2V0cy5cbiAqL1xubGVnZW5kIHtcbiAgYm9yZGVyOiAwO1xuICAvKiAxICovXG4gIHBhZGRpbmc6IDA7XG4gIC8qIDIgKi8gfVxuXG4vKipcbiAqIFJlbW92ZSBkZWZhdWx0IHZlcnRpY2FsIHNjcm9sbGJhciBpbiBJRSA4LzkvMTAvMTEuXG4gKi9cbnRleHRhcmVhIHtcbiAgb3ZlcmZsb3c6IGF1dG87IH1cblxuLyoqXG4gKiBEb24ndCBpbmhlcml0IHRoZSBgZm9udC13ZWlnaHRgIChhcHBsaWVkIGJ5IGEgcnVsZSBhYm92ZSkuXG4gKiBOT1RFOiB0aGUgZGVmYXVsdCBjYW5ub3Qgc2FmZWx5IGJlIGNoYW5nZWQgaW4gQ2hyb21lIGFuZCBTYWZhcmkgb24gT1MgWC5cbiAqL1xub3B0Z3JvdXAge1xuICBmb250LXdlaWdodDogYm9sZDsgfVxuXG4vKiBUYWJsZXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIFJlbW92ZSBtb3N0IHNwYWNpbmcgYmV0d2VlbiB0YWJsZSBjZWxscy5cbiAqL1xudGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDsgfVxuXG50ZCxcbnRoIHtcbiAgcGFkZGluZzogMDsgfVxuXG4vKiBtYXBzIHRvIGNob29zZSBmcm9tXG4gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiRjb2xvcnMtbmljbyA6IChcbiAgICAgICAgcHJpbWFyeS1jb2xvci1kYXJrOiAgICNDMjE4NUIsXG4gICAgICAgIHByaW1hcnktY29sb3I6ICAgICAgICAjRTkxRTYzLFxuICAgICAgICBwcmltYXJ5LWNvbG9yLWxpZ2h0OiAgI0Y4QkJEMCxcbiAgICAgICAgcHJpbWFyeS1jb2xvci10ZXh0OiAgICNGRkZGRkYsXG4gICAgICAgIGFjY2VudC1jb2xvcjogICAgICAgICAjOUU5RTlFLFxuICAgICAgICBwcmltYXJ5LXRleHQtY29sb3I6ICAgIzIxMjEyMSxcbiAgICAgICAgc2Vjb25kYXJ5LXRleHQtY29sb3I6ICM3MjcyNzIsXG4gICAgICAgIGRpdmlkZXItY29sb3I6ICAgICAgICAjQjZCNkI2XG4pOyovXG4vKiRjb2xvcnMtbmljbyA6IChcbiAgICAgICAgcHJpbWFyeS1jb2xvci1kYXJrOiAgICMwMjg4RDEsXG4gICAgICAgIHByaW1hcnktY29sb3I6ICAgICAgICAjMDNBOUY0LFxuICAgICAgICBwcmltYXJ5LWNvbG9yLWxpZ2h0OiAgI0IzRTVGQyxcbiAgICAgICAgcHJpbWFyeS1jb2xvci10ZXh0OiAgICNGRkZGRkYsXG4gICAgICAgIGFjY2VudC1jb2xvcjogICAgICAgICAjMDA5Njg4LFxuICAgICAgICBwcmltYXJ5LXRleHQtY29sb3I6ICAgIzIxMjEyMSxcbiAgICAgICAgc2Vjb25kYXJ5LXRleHQtY29sb3I6ICM3MjcyNzIsXG4gICAgICAgIGRpdmlkZXItY29sb3I6ICAgICAgICAjQjZCNkI2XG4pOyovXG4vKiBvcGFjaXR5IG1hcFxuICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogYmFja2dyb3VuZDogY29sb3Itbmljbyhjb2xvcik7XG4gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiBjb2xvci1kYXJrZXIoKSAvIGNvbG9yLWxpZ2h0ZXIoKVxuICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogY29sb3Itb3BhKGNvbG9yLCAueCk7XG4gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIGVuZFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuaDEge1xuICBsZXR0ZXItc3BhY2luZzogLTFweDtcbiAgZm9udC1zaXplOiAxZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjI1ZW07IH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMzIwcHgpIHtcbiAgICBoMSB7XG4gICAgICBmb250LXNpemU6IDEuNWVtOyB9IH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMzc1cHgpIHtcbiAgICBoMSB7XG4gICAgICBmb250LXNpemU6IDJlbTsgfSB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gICAgaDEge1xuICAgICAgZm9udC1zaXplOiAyLjVlbTsgfSB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAgIGgxIHtcbiAgICAgIGZvbnQtc2l6ZTogM2VtOyB9IH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gICAgaDEge1xuICAgICAgbGluZS1oZWlnaHQ6IDEuNWVtOyB9IH1cblxuLm1haW4taDEge1xuICBtYXJnaW46IDA7IH1cblxuQGtleWZyYW1lcyBnaWdnbGUge1xuICAwJSB7XG4gICAgY29sb3I6ICMwMGJjZDQ7IH1cbiAgNTAlIHtcbiAgICBjb2xvcjogIzAwZDNlZTsgfVxuICAxMDAlIHtcbiAgICBjb2xvcjogIzAwYmNkNDsgfSB9XG5cbi5zaWRlYmFyLWgxIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nLWxlZnQ6IDM1cHg7XG4gIGNvbG9yOiAjNzI3MjcyO1xuICBmb250LXNpemU6IDEuN2VtOyB9XG4gIC5zaWRlYmFyLWgxOmJlZm9yZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IC0xMHB4O1xuICAgIGNvbG9yOiAjMDBCQ0Q0O1xuICAgIGZvbnQtZmFtaWx5OiBpY29tb29uO1xuICAgIGZvbnQtc2l6ZTogMS41ZW07XG4gICAgY29udGVudDogJ1xcZTkwMic7XG4gICAgYW5pbWF0aW9uOiBnaWdnbGUgM3MgaW5maW5pdGUgZWFzZS1pbi1vdXQ7IH1cblxuaDIge1xuICBmb250LXNpemU6IDEuNjI1ZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjE1Mzg1ZW07IH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMzIwcHgpIHtcbiAgICBoMiB7XG4gICAgICBmb250LXNpemU6IDEuNjI1ZW07IH0gfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAzNzVweCkge1xuICAgIGgyIHtcbiAgICAgIGZvbnQtc2l6ZTogMS41ZW07IH0gfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkge1xuICAgIGgyIHtcbiAgICAgIGZvbnQtc2l6ZTogMmVtOyB9IH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gICAgaDIge1xuICAgICAgZm9udC1zaXplOiAyZW07IH0gfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAzMjBweCkge1xuICAgIGgyIHtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjE1Mzg1ZW07IH0gfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAzNzVweCkge1xuICAgIGgyIHtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjI1ZW07IH0gfVxuXG4uc2lkZWJhci1oMiB7XG4gIGZvbnQtc2l6ZTogMS42ZW07IH1cblxuaDMge1xuICBmb250LXNpemU6IDEuNjI1ZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjEzNjM2ZW07IH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMzIwcHgpIHtcbiAgICBoMyB7XG4gICAgICBmb250LXNpemU6IDEuNjI1ZW07IH0gfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAzNzVweCkge1xuICAgIGgzIHtcbiAgICAgIGZvbnQtc2l6ZTogMS4zNzVlbTsgfSB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gICAgaDMge1xuICAgICAgZm9udC1zaXplOiAxLjc1ZW07IH0gfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgICBoMyB7XG4gICAgICBmb250LXNpemU6IDEuNzVlbTsgfSB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDMyMHB4KSB7XG4gICAgaDMge1xuICAgICAgbGluZS1oZWlnaHQ6IDEuMTM2MzZlbTsgfSB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDM3NXB4KSB7XG4gICAgaDMge1xuICAgICAgbGluZS1oZWlnaHQ6IDEuMjVlbTsgfSB9XG5cbmg0IHtcbiAgZm9udC1zaXplOiAxLjYyNWVtO1xuICBsaW5lLWhlaWdodDogMS4xMTExMWVtOyB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDMyMHB4KSB7XG4gICAgaDQge1xuICAgICAgbGluZS1oZWlnaHQ6IDEuMTExMTFlbTsgfSB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDM3NXB4KSB7XG4gICAgaDQge1xuICAgICAgbGluZS1oZWlnaHQ6IDEuMjIyMjJlbTsgfSB9XG5cbmg1LFxuaDYge1xuICBmb250LXNpemU6IDFlbTsgfVxuXG4vKiBwYXJhZ3JhcGhlc1xuICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xucCB7XG4gIGZvbnQtZmFtaWx5OiBcIkxvcmFcIiwgc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGxpbmUtaGVpZ2h0OiAxLjI1ZW07IH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMzIwcHgpIHtcbiAgICBwIHtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjI1ZW07IH0gfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAzNzVweCkge1xuICAgIHAge1xuICAgICAgbGluZS1oZWlnaHQ6IDEuMTI1ZW07IH0gfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkge1xuICAgIHAge1xuICAgICAgbGluZS1oZWlnaHQ6IDEuMzc1ZW07IH0gfVxuXG5oMSxcbmgyLFxuaDMsXG5oNCxcbmg1LFxuaDYge1xuICBjb2xvcjogIzIxMjEyMTtcbiAgZm9udC1mYW1pbHk6IFwiT3BlbiBTYW5zXCIsIHNhbnMtc2VyaWY7IH1cblxuLnN1YnRpdGxlIHtcbiAgbWFyZ2luLXRvcDogMDtcbiAgY29sb3I6ICM3MjcyNzI7XG4gIGZvbnQtc2l6ZTogMS4yZW07XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH1cblxuLmxpc3RlIGxpIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nLWJvdHRvbTogLjVlbTtcbiAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICBmb250LWZhbWlseTogXCJMb3JhXCIsIHNlcmlmO1xuICBsaW5lLWhlaWdodDogMS40ZW07XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsgfVxuICAubGlzdGUgbGk6YmVmb3JlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAxcHg7XG4gICAgbGVmdDogLTEwcHg7XG4gICAgbWFyZ2luLXJpZ2h0OiAuNWVtO1xuICAgIGNvbG9yOiAjMDBCQ0Q0O1xuICAgIGZvbnQtZmFtaWx5OiBpY29tb29uO1xuICAgIGNvbnRlbnQ6ICdcXGU5MDAnOyB9XG5cbmJsb2NrcXVvdGUsXG5wLnF1b3RlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW46IDJlbSAwO1xuICBwYWRkaW5nOiAuNWVtIDFlbTtcbiAgY29sb3I6ICM1NTNjMzI7XG4gIGZvbnQtZmFtaWx5OiBcIkxvcmFcIiwgc2VyaWY7XG4gIGZvbnQtc2l6ZTogMS4yZW07XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgbGluZS1oZWlnaHQ6IDMwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjsgfVxuICBibG9ja3F1b3RlOmJlZm9yZSwgYmxvY2txdW90ZTphZnRlcixcbiAgcC5xdW90ZTpiZWZvcmUsXG4gIHAucXVvdGU6YWZ0ZXIge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDJweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICNmZmYgMTAlLCAjMDBCQ0Q0IDUwJSwgI2ZmZiA5MCUpO1xuICAgIGNvbnRlbnQ6ICcnOyB9XG4gIGJsb2NrcXVvdGU6YmVmb3JlLFxuICBwLnF1b3RlOmJlZm9yZSB7XG4gICAgdG9wOiAtLjRlbTsgfVxuICBibG9ja3F1b3RlOmFmdGVyLFxuICBwLnF1b3RlOmFmdGVyIHtcbiAgICBib3R0b206IC0uNGVtOyB9XG5cbi5ncmF5cXVvdGUge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBmb250LXNpemU6IDFlbTtcbiAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCAjQjZCNkI2OyB9XG4gIC5ncmF5cXVvdGU6YmVmb3JlLCAuZ3JheXF1b3RlOmFmdGVyIHtcbiAgICBkaXNwbGF5OiBub25lOyB9XG5cbi5jaXRhdGlvbiB7XG4gIHdpZHRoOiA0MDBweDtcbiAgbWFyZ2luLWJvdHRvbTogNGVtOyB9XG4gIC5jaXRhdGlvbjpiZWZvcmUsIC5jaXRhdGlvbjphZnRlciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGNvbG9yOiAjN2E3YTdhO1xuICAgIGZvbnQtZmFtaWx5OiBpY29tb29uO1xuICAgIGZvbnQtc2l6ZTogLjhlbTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdmVydGljYWwtYWxpZ246IHN1cGVyOyB9XG4gIC5jaXRhdGlvbjpiZWZvcmUge1xuICAgIHJpZ2h0OiA1MCU7XG4gICAgY29udGVudDogJ1xcZTkwNSc7IH1cbiAgLmNpdGF0aW9uOmFmdGVyIHtcbiAgICBsZWZ0OiA1MCU7XG4gICAgY29udGVudDogJ1xcZTkwNCc7IH1cblxuY2l0ZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZzogNHB4IDZweDtcbiAgYmFja2dyb3VuZDogcmdiYSgyNDIsIDI0MiwgMjQyLCAwLjUpO1xuICBjb2xvcjogaW5oZXJpdDsgfVxuICBjaXRlOmJlZm9yZSwgY2l0ZTphZnRlciB7XG4gICAgY29sb3I6ICM0ZDRkNGQ7XG4gICAgZm9udC1mYW1pbHk6IGljb21vb247XG4gICAgZm9udC1zaXplOiA1cHg7XG4gICAgdmVydGljYWwtYWxpZ246IHN1cGVyOyB9XG4gIGNpdGU6YmVmb3JlIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiA0cHg7XG4gICAgY29udGVudDogJ1xcZTkwNSc7IH1cbiAgY2l0ZTphZnRlciB7XG4gICAgcGFkZGluZy1sZWZ0OiA0cHg7XG4gICAgY29udGVudDogJ1xcZTkwNCc7IH1cblxuLmF1dGV1ci1jaXRhdGlvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDIwcHg7XG4gIHRvcDogNDBweDtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXNpemU6IC44ZW07IH1cbiAgLmF1dGV1ci1jaXRhdGlvbjpiZWZvcmUsIC5hdXRldXItY2l0YXRpb246YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnOyB9XG5cbi50ZXh0LWxpbmsge1xuICB0cmFuc2l0aW9uOiBhbGwgLjNzO1xuICBib3JkZXItYm90dG9tOiAycHggZG90dGVkICMwMEJDRDQ7XG4gIGNvbG9yOiAjNUQ0MDM3O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH1cbiAgLnRleHQtbGluazpob3ZlciB7XG4gICAgb3BhY2l0eTogLjg7IH1cblxuLmZuIHtcbiAgbWFyZ2luLXRvcDogM2VtO1xuICBwYWRkaW5nOiAuNWVtIDJlbTtcbiAgYm9yZGVyOiAxcHggc29saWQgI2RhZGFkYTtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMjBweDtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDIwcHg7XG4gIGZvbnQtc2l6ZTogLjllbTtcbiAgZm9udC1zdHlsZTogaXRhbGljOyB9XG4gIC5mbiBsaSB7XG4gICAgZm9udC1mYW1pbHk6IFwiTG9yYVwiLCBzZXJpZjsgfVxuXG4uZm9vdG5vdGUge1xuICBjb2xvcjogaW5oZXJpdDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9XG4gIC5mb290bm90ZTphZnRlciB7XG4gICAgbWFyZ2luLWxlZnQ6IDJweDtcbiAgICBjb2xvcjogIzAwQkNENDtcbiAgICBmb250LXNpemU6IC41ZW07XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICBjb250ZW50OiAnMSc7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHZlcnRpY2FsLWFsaWduOiBzdXBlcjsgfVxuXG4ubWFpbC1kZS1jb250YWN0OjphZnRlciB7XG4gIHBhZGRpbmctbGVmdDogLjVlbTtcbiAgY29sb3I6IGN1cnJlbnRDb2xvcjtcbiAgZm9udC1mYW1pbHk6IFwiTG9yYVwiLCBzZXJpZjtcbiAgY29udGVudDogJ2dyYXNzb21hcmllam9zZWVAb3JhbmdlLmZyJzsgfVxuXG4ucXVlc3Rpb24ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmc6IDJlbSAyLjVlbTtcbiAgYmFja2dyb3VuZDogUkdCQSgyNTUsIDIzNCwgMTMsIDAuNyk7XG4gIGZvbnQtc2l6ZTogMS4yZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH1cblxucC5pbnRybzpmaXJzdC1vZi10eXBlOmZpcnN0LWxldHRlciB7XG4gIGZvbnQtc2l6ZTogMS44ZW07IH1cblxuLmVuY2FydCB7XG4gIGJhY2tncm91bmQ6ICM3OTU1NDg7XG4gIHBhZGRpbmc6IDUuMjYzMTYlO1xuICBjb2xvcjogI2ZmZjtcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgb3V0bGluZTogMXB4IGRhc2hlZCAjZmZmO1xuICBvdXRsaW5lLW9mZnNldDogLTFlbTtcbiAgbWFyZ2luLXRvcDogMmVtOyB9XG4gIC5lbmNhcnQgaDIsIC5lbmNhcnQgYmxvY2txdW90ZSB7XG4gICAgY29sb3I6ICNmZmY7IH1cblxuLnNpbXBsZS1ibG9ja3F1b3RlIHtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIGJveC1zaGFkb3c6IC03cHggMHB4IDBweCByZ2JhKDIxNSwgMjA0LCAyMDAsIDAuNSk7XG4gIHRleHQtYWxpZ246IHN0YXJ0O1xuICBtYXJnaW4tbGVmdDogMWVtOyB9XG4gIC5zaW1wbGUtYmxvY2txdW90ZTphZnRlciwgLnNpbXBsZS1ibG9ja3F1b3RlOmJlZm9yZSB7XG4gICAgZGlzcGxheTogbm9uZTsgfVxuICAuc2ltcGxlLWJsb2NrcXVvdGUgZm9vdGVyIHtcbiAgICBtYXJnaW4tdG9wOiAxZW07XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGxlZnQ6IDUwJTsgfVxuXG4qLCAqOmJlZm9yZSwgKjphZnRlciB7XG4gIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9XG5cbi8qIGJyZWFrcG9pbnRzXG4gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uaGFzLWN1cmxlZC1zaGFkb3cge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJhY2tncm91bmQ6ICNmM2YwZWY7XG4gIHBhZGRpbmc6IDFlbSAyZW07XG4gIGJvcmRlcjogMXB4IHNvbGlkICNlZWU7XG4gIGZvbnQtc2l6ZTogMS4xZW07IH1cbiAgLmhhcy1jdXJsZWQtc2hhZG93OmJlZm9yZSwgLmhhcy1jdXJsZWQtc2hhZG93OmFmdGVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA4MCU7XG4gICAgYm90dG9tOiAxNXB4O1xuICAgIGxlZnQ6IDEwcHg7XG4gICAgd2lkdGg6IDUwJTtcbiAgICBtYXgtd2lkdGg6IDMwMHB4O1xuICAgIHRyYW5zZm9ybTogcm90YXRlKC0zZGVnKTtcbiAgICBiYWNrZ3JvdW5kOiAjNzc3O1xuICAgIGJveC1zaGFkb3c6IDAgMTVweCAxMHB4ICM3Nzc7XG4gICAgY29udGVudDogJyc7XG4gICAgei1pbmRleDogLTE7IH1cbiAgLmhhcy1jdXJsZWQtc2hhZG93OmFmdGVyIHtcbiAgICByaWdodDogMTBweDtcbiAgICBsZWZ0OiBhdXRvO1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDNkZWcpOyB9XG5cbi5idXR0b24tcmVjdCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgYmFja2dyb3VuZDogIzAwQkNENDtcbiAgcGFkZGluZzogLjhlbSAxLjJlbTtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBjb2xvcjogI2ZmZjtcbiAgZm9udC1mYW1pbHk6IFwiT3BlbiBTYW5zXCIsIHNhbnMtc2VyaWY7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgYm94LXNoYWRvdzogNHB4IDRweCA0cHggLTRweCAjNzc3O1xuICBtYXJnaW4tcmlnaHQ6IDFlbTtcbiAgbWFyZ2luLWJvdHRvbTogMWVtO1xuICB0cmFuc2l0aW9uOiBhbGwgLjNzOyB9XG4gIC5idXR0b24tcmVjdDpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogIzAwOTZhYTsgfVxuXG4uYnV0dG9ucy1kaXYge1xuICBtYXJnaW4tdG9wOiA1ZW07IH1cblxuLmJ1dHRvbnMtZGl2IHAge1xuICBmb250LXNpemU6IDEuM2VtOyB9XG5cbi5idXR0b24tbmF2IHtcbiAgZmxvYXQ6IHJpZ2h0O1xuICBtYXJnaW4tcmlnaHQ6IDFlbTtcbiAgbWFyZ2luLXRvcDogLjNlbTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBoZWlnaHQ6IDMuNXJlbTtcbiAgd2lkdGg6IDMuNXJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgI2ZmZiwgI2ZmZiksIGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgI2ZmZiwgI2ZmZiksIGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgI2ZmZiwgI2ZmZik7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciB0b3AsIGNlbnRlciwgY2VudGVyIGJvdHRvbTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1zaXplOiAxMDAlIDI4JTtcbiAgY29sb3I6ICMzMzM7XG4gIHBhZGRpbmc6IDA7XG4gIG91dGxpbmU6IDA7XG4gIGJvcmRlcjogMDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICB0cmFuc2l0aW9uOiAuMjVzO1xuICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm0sIGJhY2tncm91bmQtcG9zaXRpb247XG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm0sIGJhY2tncm91bmQtcG9zaXRpb247IH1cbiAgQG1lZGlhIChtaW4td2lkdGg6IDQ4ZW0pIHtcbiAgICAuYnV0dG9uLW5hdiB7XG4gICAgICBkaXNwbGF5OiBub25lOyB9IH1cblxuLmljb24tZW52ZWxvcDpiZWZvcmUsXG4uaWNvbi1waG9uZS1vdXRnb2luZzpiZWZvcmUge1xuICBwYWRkaW5nLXJpZ2h0OiA1cHg7XG4gIGNvbG9yOiAjMDBCQ0Q0OyB9XG5cbnNwYW5baXRlbXByb3A9J25hbWUnXSB7XG4gIHBhZGRpbmctYm90dG9tOiAxZW07XG4gIGNvbG9yOiAjMDBCQ0Q0OyB9XG5cbnNwYW5baXRlbXByb3BdIHtcbiAgZm9udC1mYW1pbHk6IFwiTG9yYVwiLCBzZXJpZjsgfVxuXG5zcGFuW2l0ZW1wcm9wPSduYW1lJ10sXG5zcGFuW2l0ZW1wcm9wPSdhZGRyZXNzJ10sXG5zcGFuW2l0ZW1wcm9wPSdzdHJlZXRBZGRyZXNzJ10sXG5zcGFuW2l0ZW1wcm9wPSd0ZWxlcGhvbmUnXSB7XG4gIGRpc3BsYXk6IGJsb2NrOyB9XG5cbnNwYW5baXRlbXByb3A9J3Bvc3RhbENvZGUnXSB7XG4gIHBhZGRpbmctcmlnaHQ6IDEwcHg7IH1cblxuc3BhbltpdGVtcHJvcD0ndGVsZXBob25lJ10ge1xuICBwYWRkaW5nLXRvcDogMWVtOyB9XG5cbnRoLFxudGQsXG5jYXB0aW9uIHtcbiAgaGVpZ2h0OiA1MHB4OyB9XG5cbmNhcHRpb24sXG50ZCB7XG4gIGZvbnQtZmFtaWx5OiBcIkxvcmFcIiwgc2VyaWY7IH1cblxuLnRhYmxlLXRhcmlmcyB7XG4gIG1pbi13aWR0aDogMjAwcHg7XG4gIG1heC13aWR0aDogMzAwcHg7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBib3JkZXI6IDVweCBzb2xpZCAjNUQ0MDM3O1xuICBiYWNrZ3JvdW5kOiAjZWVlOyB9XG4gIC50YWJsZS10YXJpZnMgY2FwdGlvbiB7XG4gICAgYmFja2dyb3VuZDogIzVENDAzNztcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGxpbmUtaGVpZ2h0OiA1MHB4OyB9XG4gIC50YWJsZS10YXJpZnMgdGgge1xuICAgIGJhY2tncm91bmQ6ICM3OTU1NDg7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgZm9udC1mYW1pbHk6IFwiT3BlbiBTYW5zXCIsIHNhbnMtc2VyaWY7IH1cbiAgLnRhYmxlLXRhcmlmcyB0ZCB7XG4gICAgYmFja2dyb3VuZDogIzAwQkNENDtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBmb250LWZhbWlseTogXCJPcGVuIFNhbnNcIiwgc2Fucy1zZXJpZjtcbiAgICBmb250LXNpemU6IDEuN2VtO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjsgfVxuXG4udGFibGUtcHJvZmVzc2lvbnMge1xuICBtYXJnaW46IDNlbSBhdXRvOyB9XG4gIEBtZWRpYSAobWluLXdpZHRoOiA0OGVtKSB7XG4gICAgLnRhYmxlLXByb2Zlc3Npb25zIHtcbiAgICAgIG1pbi13aWR0aDogNTAwcHg7IH0gfVxuICAudGFibGUtcHJvZmVzc2lvbnMgY2FwdGlvbiB7XG4gICAgYmFja2dyb3VuZDogI0Q3Q0NDODtcbiAgICBsaW5lLWhlaWdodDogNTBweDtcbiAgICBmb250LXNpemU6IDEuMWVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7IH1cbiAgLnRhYmxlLXByb2Zlc3Npb25zIHRoIHtcbiAgICBiYWNrZ3JvdW5kOiAjNUQ0MDM3O1xuICAgIGNvbG9yOiAjZWVlO1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2ZmZjsgfVxuICAudGFibGUtcHJvZmVzc2lvbnMgdGQge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kOiAjZjJlZWVkO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNmZmY7XG4gICAgZm9udC1zaXplOiAxLjFlbTsgfVxuXG4uaG9tZS10b3Age1xuICBwYWRkaW5nLWxlZnQ6IDElO1xuICBwYWRkaW5nLXJpZ2h0OiAxJTsgfVxuICBAbWVkaWEgKG1pbi13aWR0aDogNjRlbSkge1xuICAgIC5ob21lLXRvcCB7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDclO1xuICAgICAgcGFkZGluZy1yaWdodDogNyU7IH0gfVxuICBAbWVkaWEgKG1pbi13aWR0aDogOTBlbSkge1xuICAgIC5ob21lLXRvcCB7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDE1JTtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDE1JTsgfSB9XG5cbi5oMS1ob21lLFxuLmgyLWhvbWUge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cblxuLmgxLWhvbWUge1xuICBtYXJnaW4tdG9wOiAwOyB9XG5cbi5oMi1ob21lIHtcbiAgcGFkZGluZy1ib3R0b206IDEuNWVtO1xuICBjb2xvcjogIzcyNzI3MjsgfVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNDhlbSkge1xuICAuaG9tZS10aHVtYm5haWxzIC5ob21lLXRodW1ibmFpbCB7XG4gICAgd2lkdGg6IDMyLjIwMzM5JTtcbiAgICBmbG9hdDogbGVmdDsgfVxuICAgIC5ob21lLXRodW1ibmFpbHMgLmhvbWUtdGh1bWJuYWlsOm50aC1jaGlsZCgzbiArIDEpIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAtMTAwJTtcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgICAgbWFyZ2luLWxlZnQ6IDA7IH1cbiAgICAuaG9tZS10aHVtYm5haWxzIC5ob21lLXRodW1ibmFpbDpudGgtY2hpbGQoM24gKyAyKSB7XG4gICAgICBtYXJnaW4tbGVmdDogMzMuODk4MzElO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAtMTAwJTtcbiAgICAgIGNsZWFyOiBub25lOyB9XG4gICAgLmhvbWUtdGh1bWJuYWlscyAuaG9tZS10aHVtYm5haWw6bnRoLWNoaWxkKDNuICsgMykge1xuICAgICAgbWFyZ2luLWxlZnQ6IDY3Ljc5NjYxJTtcbiAgICAgIG1hcmdpbi1yaWdodDogLTEwMCU7XG4gICAgICBjbGVhcjogbm9uZTsgfSB9XG5cbi5ob21lLXRodW1ibmFpbHMge1xuICBtYXJnaW4tdG9wOiAyZW07IH1cblxuLmhvbWUtdGh1bWJuYWlsIHtcbiAgbWFyZ2luOiA0ZW0gMDtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNXB4O1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNXB4OyB9XG4gIEBtZWRpYSAobWluLXdpZHRoOiA2NGVtKSB7XG4gICAgLmhvbWUtdGh1bWJuYWlsIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBtaW4taGVpZ2h0OiA1MDBweDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IH0gfVxuICBAbWVkaWEgKG1pbi13aWR0aDogNzVlbSkge1xuICAgIC5ob21lLXRodW1ibmFpbCB7XG4gICAgICBtaW4taGVpZ2h0OiA0NTBweDsgfSB9XG4gIC5ob21lLXRodW1ibmFpbDpmaXJzdC1vZi10eXBlIHtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoXCJpbWFnZXMvdHJvdWJsZXMuanBnXCIpIG5vLXJlcGVhdCB0b3AgY2VudGVyO1xuICAgIGJhY2tncm91bmQtc2l6ZTogMzcwcHggMTAwcHg7IH1cbiAgLmhvbWUtdGh1bWJuYWlsOm50aC1vZi10eXBlKDIpIHtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoXCJpbWFnZXMvcHN5Y2hvdGhlcmFwaWVzLmpwZ1wiKSBuby1yZXBlYXQgdG9wIGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDM3MHB4IDEwMHB4OyB9XG4gIC5ob21lLXRodW1ibmFpbDpudGgtb2YtdHlwZSgzKSB7XG4gICAgYmFja2dyb3VuZDogdXJsKFwiaW1hZ2VzL3BzeWNob2xvZ3VlLmpwZ1wiKSBuby1yZXBlYXQgdG9wIGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDM3MHB4IDEwMHB4OyB9XG4gIC5ob21lLXRodW1ibmFpbDpudGgtb2YtdHlwZSg0KSB7XG4gICAgYmFja2dyb3VuZDogdXJsKFwiaW1hZ2VzL2VtZHIucG5nXCIpIG5vLXJlcGVhdCB0b3AgY2VudGVyO1xuICAgIGJhY2tncm91bmQtc2l6ZTogMzcwcHggMTAwcHg7IH1cbiAgLmhvbWUtdGh1bWJuYWlsOm50aC1vZi10eXBlKDUpIHtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoXCJpbWFnZXMvY2FiaW5ldC5qcGdcIikgbm8tcmVwZWF0IHRvcCBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1zaXplOiAzNzBweCAxMDBweDsgfVxuICAuaG9tZS10aHVtYm5haWw6bnRoLW9mLXR5cGUoNikge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoXCJpbWFnZXMvcXVpLnBuZ1wiKSBuby1yZXBlYXQgdG9wIGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDM3MHB4IDEwMHB4OyB9XG5cbi5ob21lLXRodW1ibmFpbCBoMiB7XG4gIHdpZHRoOiAyNjBweDtcbiAgbWFyZ2luOiAwIGF1dG8gMWVtO1xuICBwYWRkaW5nLWJvdHRvbTogMWVtO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gIGNvbG9yOiAjZTNlM2UzO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cbiAgQG1lZGlhIChtaW4td2lkdGg6IDQ4ZW0pIHtcbiAgICAuaG9tZS10aHVtYm5haWwgaDIge1xuICAgICAgbWFyZ2luLXRvcDogMTQwcHg7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICBjb2xvcjogIzcyNzI3MjsgfSB9XG4gIEBtZWRpYSAobWluLXdpZHRoOiA2NGVtKSB7XG4gICAgLmhvbWUtdGh1bWJuYWlsIGgyIHtcbiAgICAgIGZsZXg6IDEgMCAyMCU7IH0gfVxuICBAbWVkaWEgKG1pbi13aWR0aDogNzVlbSkge1xuICAgIC5ob21lLXRodW1ibmFpbCBoMiB7XG4gICAgICB3aWR0aDogYXV0bzsgfSB9XG5cbi5ob21lLXRodW1ibmFpbF9fdGV4dCB7XG4gIG1hcmdpbi10b3A6IDkwcHg7IH1cbiAgQG1lZGlhIChtaW4td2lkdGg6IDY0ZW0pIHtcbiAgICAuaG9tZS10aHVtYm5haWxfX3RleHQge1xuICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgIGZsZXg6IDUgMCA1MCU7IH0gfVxuXG4uaG9tZS10aHVtYm5haWwgYSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiBhdXRvO1xuICBtYXJnaW46IDAgMzAlO1xuICBwYWRkaW5nLXRvcDogMmVtO1xuICBjb2xvcjogIzAwNjE2NTtcbiAgZm9udC1mYW1pbHk6IFwiT3BlbiBTYW5zXCIsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMS4xZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7IH1cbiAgQG1lZGlhIChtaW4td2lkdGg6IDY0ZW0pIHtcbiAgICAuaG9tZS10aHVtYm5haWwgYSB7XG4gICAgICBtYXJnaW46IGF1dG8gMCAwIDA7XG4gICAgICBmbGV4OiAwIDEgNDAlO1xuICAgICAgYWxpZ24tc2VsZjogY2VudGVyOyB9IH1cbiAgLmhvbWUtdGh1bWJuYWlsIGE6YmVmb3JlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA1cHg7XG4gICAgbGVmdDogLTU4cHg7XG4gICAgd2lkdGg6IDUwcHg7XG4gICAgaGVpZ2h0OiA1MHB4O1xuICAgIGJhY2tncm91bmQ6IHVybChcImltYWdlcy9saW5rLWFycm93LnN2Z1wiKTtcbiAgICBjb250ZW50OiAnJzsgfVxuXG4uc2l0ZS1mb290ZXIge1xuICBjbGVhcjogYm90aDtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIGJhY2tncm91bmQ6ICM1RDQwMzc7XG4gIGJvcmRlci10b3A6IDRweCBzb2xpZCAjMDBCQ0Q0OyB9XG4gIEBtZWRpYSAobWluLXdpZHRoOiA0OGVtKSB7XG4gICAgLnNpdGUtZm9vdGVyIHtcbiAgICAgIGhlaWdodDogMjJlbTsgfSB9XG5cbi5mb290ZXItY29udGFpbmVyIHtcbiAgbWF4LXdpZHRoOiAxNDQwcHg7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIHBhZGRpbmctbGVmdDogMS42OTQ5MiU7XG4gIHBhZGRpbmctcmlnaHQ6IDEuNjk0OTIlO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cbiAgLmZvb3Rlci1jb250YWluZXI6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGNsZWFyOiBib3RoOyB9XG5cbi5mb290ZXItY29udGFpbmVyIGg0LFxuLmZvb3Rlci1jb250YWluZXIgcCxcbi5mb290ZXItY29udGFpbmVyIHNwYW4ge1xuICBjb2xvcjogI2FmOTk5MTsgfVxuXG4uZm9vdGVyLWNvbnRhaW5lciBoNCB7XG4gIGZvbnQtd2VpZ2h0OiAxMDA7IH1cblxuQG1lZGlhIChtaW4td2lkdGg6IDQ4ZW0pIHtcbiAgLmZvb3Rlci1zaXRlbWFwLFxuICAuZm9vdGVyLWluZm9zLFxuICAuZm9vdGVyLWNvbnRhY3Qge1xuICAgIHdpZHRoOiAyMy43Mjg4MSU7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAxLjY5NDkyJTsgfSB9XG5cbi5mb290ZXItYWRlbGksXG4uZm9vdGVyLWxlZ2FsIHAge1xuICBmb250LWZhbWlseTogXCJPcGVuIFNhbnNcIiwgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxZW07IH1cblxuQG1lZGlhIChtaW4td2lkdGg6IDQ4ZW0pIHtcbiAgLmZvb3Rlci1hZGVsaSB7XG4gICAgd2lkdGg6IDIzLjcyODgxJTtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAwOyB9IH1cblxuLmZvb3Rlci1sZWdhbCB7XG4gIGNsZWFyOiBsZWZ0O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRvcDogMmVtOyB9XG5cbi5mb290ZXItbmF2IHtcbiAgcGFkZGluZy1sZWZ0OiAwOyB9XG4gIC5mb290ZXItbmF2IGxpIHtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICAgcGFkZGluZy1ib3R0b206IDRweDsgfVxuICAgIC5mb290ZXItbmF2IGxpIGEge1xuICAgICAgY29sb3I6ICNhZjk5OTE7XG4gICAgICB0cmFuc2l0aW9uOiBjb2xvciAuM3M7IH1cbiAgICAgIC5mb290ZXItbmF2IGxpIGE6aG92ZXIge1xuICAgICAgICBvcGFjaXR5OiAuNjsgfVxuXG5zcGFuW2l0ZW1wcm9wPVwicG9zdGFsQ29kZVwiXSB7XG4gIGZsb2F0OiBsZWZ0O1xuICBwYWRkaW5nLXJpZ2h0OiA0cHg7IH1cblxuc3BhbltpdGVtcHJvcD0ndGVsZXBob25lJ10ge1xuICBmb250LXNpemU6IDEuMmVtOyB9XG5cbnNwYW5baXRlbXByb3BdIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmctYm90dG9tOiA0cHg7IH1cblxuLnNpdGUtaGVhZGVyIHtcbiAgaGVpZ2h0OiA0ZW07XG4gIGJhY2tncm91bmQ6ICM1RDQwMzc7IH1cblxuLnNpdGUtaGVhZGVyLWNvbnRhaW5lciB7XG4gIG1heC13aWR0aDogMTQ0MHB4O1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvOyB9XG4gIC5zaXRlLWhlYWRlci1jb250YWluZXI6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGNsZWFyOiBib3RoOyB9XG5cbi5ub20ge1xuICBmbG9hdDogbGVmdDtcbiAgY29sb3I6ICNGRkZGRkY7XG4gIGZvbnQtZmFtaWx5OiBcIk9wZW4gU2Fuc1wiLCBzYW5zLXNlcmlmO1xuICBmb250LXdlaWdodDogNjAwO1xuICBsaW5lLWhlaWdodDogNGVtOyB9XG4gIEBtZWRpYSAobWluLXdpZHRoOiA0OGVtKSB7XG4gICAgLm5vbSB7XG4gICAgICBtYXJnaW4tbGVmdDogLjVlbTsgfSB9XG4gIEBtZWRpYSAobWluLXdpZHRoOiA2NGVtKSB7XG4gICAgLm5vbSB7XG4gICAgICBtYXJnaW4tbGVmdDogMmVtOyB9IH1cblxuLm1haW4tbmF2IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBmbG9hdDogcmlnaHQ7IH1cbiAgQG1lZGlhIChtaW4td2lkdGg6IDQ4ZW0pIHtcbiAgICAubWFpbi1uYXYge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAuNWVtOyB9IH1cbiAgQG1lZGlhIChtaW4td2lkdGg6IDY0ZW0pIHtcbiAgICAubWFpbi1uYXYge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAxZW07IH0gfVxuXG4ubWFpbi1uYXZfX3VsIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogLTk5OTlweDtcbiAgbWFyZ2luOiAwO1xuICBiYWNrZ3JvdW5kOiAjMDAwO1xuICB6LWluZGV4OiAxMDA7IH1cbiAgLm1haW4tbmF2X191bC0tb3BlbiB7XG4gICAgd2lkdGg6IDI2MHB4O1xuICAgIHJpZ2h0OiAtNzBweDsgfVxuICAgIC5tYWluLW5hdl9fdWwtLW9wZW4gLmljb24taG9tZSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIG1hcmdpbjogMCBhdXRvOyB9XG4gIEBtZWRpYSAobWluLXdpZHRoOiA0OGVtKSB7XG4gICAgLm1haW4tbmF2X191bCB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICByaWdodDogMDtcbiAgICAgIGJhY2tncm91bmQ6IG5vbmU7IH0gfVxuXG4ubWFpbi1uYXYgdWwgbGkge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGxpbmUtaGVpZ2h0OiA0ZW07XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsgfVxuICBAbWVkaWEgKG1pbi13aWR0aDogNDhlbSkge1xuICAgIC5tYWluLW5hdiB1bCBsaSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAuMmVtOyB9IH1cbiAgQG1lZGlhIChtaW4td2lkdGg6IDY0ZW0pIHtcbiAgICAubWFpbi1uYXYgdWwgbGkge1xuICAgICAgcGFkZGluZy1yaWdodDogMS45ZW07IH0gfVxuXG4ubWFpbi1uYXYgdWwgbGkgYSB7XG4gIHRyYW5zaXRpb246IGNvbG9yIC4zcztcbiAgY29sb3I6ICNEN0NDQzg7XG4gIGZvbnQtZmFtaWx5OiBcIk9wZW4gU2Fuc1wiLCBzYW5zLXNlcmlmO1xuICBmb250LXdlaWdodDogNjAwO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGZvbnQtc2l6ZTogLjhlbTsgfVxuICBAbWVkaWEgKG1pbi13aWR0aDogNjRlbSkge1xuICAgIC5tYWluLW5hdiB1bCBsaSBhIHtcbiAgICAgIGZvbnQtc2l6ZTogMWVtOyB9IH1cbiAgLm1haW4tbmF2IHVsIGxpIGE6aG92ZXIge1xuICAgIGNvbG9yOiAjYzliYmI2OyB9XG5cbi5tYWluLW5hdiB1bCB1bCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA2NHB4O1xuICBsZWZ0OiA5OTk5cHg7XG4gIHdpZHRoOiAyMzVweDtcbiAgaGVpZ2h0OiAwO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIGJhY2tncm91bmQ6ICM0YTMzMmM7XG4gIHotaW5kZXg6IDEwMDsgfVxuICAubWFpbi1uYXYgdWwgdWwgbGkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHRyYW5zaXRpb246IGFsbCAuM3MgZWFzZS1pbjtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIG9wYWNpdHk6IDA7IH1cbiAgICAubWFpbi1uYXYgdWwgdWwgbGk6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogIzc5NTU0ODsgfVxuICAubWFpbi1uYXYgdWwgdWwgYSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZy1sZWZ0OiAxZW07IH1cblxuLmRyb3Bkb3duIHtcbiAgdHJhbnNpdGlvbjogaGVpZ2h0IC4xNXMgZWFzZS1pbjsgfVxuXG4jaGFzLWRyb3Bkb3duOjphZnRlciB7XG4gIHBhZGRpbmctbGVmdDogNHB4O1xuICBjb2xvcjogI0Q3Q0NDODtcbiAgZm9udC1mYW1pbHk6IGljb21vb247XG4gIGNvbnRlbnQ6ICdcXGU5MDMnOyB9XG5cbiNoYXMtZHJvcGRvd246aG92ZXIgLmRyb3Bkb3duIHtcbiAgbGVmdDogLTRweDsgfVxuICAjaGFzLWRyb3Bkb3duOmhvdmVyIC5kcm9wZG93biBsaSB7XG4gICAgYmFja2dyb3VuZDogIzRhMzMyYztcbiAgICBvcGFjaXR5OiAxOyB9XG4gICAgI2hhcy1kcm9wZG93bjpob3ZlciAuZHJvcGRvd24gbGk6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogIzc5NTU0ODsgfVxuXG4uaWNvbi1ob21lIHtcbiAgd2lkdGg6IDMwcHg7XG4gIGhlaWdodDogMzBweDsgfVxuXG4uaG9tZS1zdmcge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNXB4O1xuICBsZWZ0OiAtMTVweDsgfVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNDhlbSkge1xuICAuaGVybyB7XG4gICAgaGVpZ2h0OiAzMmVtO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBtYXgtd2lkdGg6IDE0NDBweDtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBiYWNrZ3JvdW5kOiB1cmwoXCIuL2ltYWdlcy9ib29rLWhvbWUuanBnXCIpIG5vLXJlcGVhdCBjZW50ZXIgYm90dG9tL2NvdmVyOyB9IH1cblxuLnNpdGUtaGVhZGVyLS1maXhlZCB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgbGVmdDogMDtcbiAgdHJhbnNpdGlvbjogYWxsIC40cztcbiAgYmFja2dyb3VuZDogcmdiYSgxMjEsIDg1LCA3MiwgMC45KTtcbiAgei1pbmRleDogMTAwOyB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA0OGVtKSB7XG4gIC5wYWdlLWFzaWRlIHtcbiAgICBtaW4taGVpZ2h0OiAxMDB2aDtcbiAgICBtYXJnaW4tdG9wOiAxLjY5NDkyJTtcbiAgICBwYWRkaW5nOiAwIDEuNjk0OTIlO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjE1LCAyMDQsIDIwMCwgMC4yKTtcbiAgICB3aWR0aDogMzIuMjAzMzklO1xuICAgIGZsb2F0OiByaWdodDtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7IH0gfVxuXG5ib2R5IHtcbiAgYmFja2dyb3VuZDogI0Q3Q0NDODtcbiAgb3ZlcmZsb3cteDogaGlkZGVuOyB9XG5cbi5wYWdlLXdyYXBwZXIge1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xuICBtYXgtd2lkdGg6IDE0NDBweDtcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIG1hcmdpbi1yaWdodDogYXV0bzsgfVxuICAucGFnZS13cmFwcGVyOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIiBcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBjbGVhcjogYm90aDsgfVxuXG4ubWFpbi1jb250ZW50LFxuLnBhZ2UtbWFpbiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWluLWhlaWdodDogY2FsYygxMDB2aCAtIDIyZW0pO1xuICBwYWRkaW5nOiAxLjY5NDkyJTsgfVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNDhlbSkge1xuICAucGFnZS1tYWluIHtcbiAgICB3aWR0aDogNjYuMTAxNjklO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbi1yaWdodDogMS42OTQ5MiU7IH0gfVxuXG4uZnVsbC1wYWdlLWludHJvIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogNTAwcHg7XG4gIG1hcmdpbjogMCBhdXRvO1xuICB6LWluZGV4OiAxOyB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA0OGVtKSB7XG4gIC5wYWdlLW1haW4tbm8tc2Ige1xuICAgIG1hcmdpbi10b3A6IDEuNjk0OTIlO1xuICAgIHBhZGRpbmc6IDEuNjk0OTIlOyB9IH1cblxuLnBhZ2UtaGFsZi1sZWZ0LFxuLnBhZ2UtaGFsZi1yaWdodCB7XG4gIHBhZGRpbmc6IDEuNjk0OTIlOyB9XG4gIC5wYWdlLWhhbGYtbGVmdCBoMixcbiAgLnBhZ2UtaGFsZi1yaWdodCBoMiB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyOyB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NGVtKSB7XG4gIC5wYWdlLWhhbGYtbGVmdCB7XG4gICAgd2lkdGg6IDQ5LjE1MjU0JTtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tcmlnaHQ6IDEuNjk0OTIlOyB9IH1cblxuQG1lZGlhIChtaW4td2lkdGg6IDY0ZW0pIHtcbiAgLnBhZ2UtaGFsZi1yaWdodCB7XG4gICAgd2lkdGg6IDQ5LjE1MjU0JTtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAwOyB9IH1cblxuaW1nIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogYXV0bzsgfVxuXG4ucGFnZS1pbWFnZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogYXV0bztcbiAgaGVpZ2h0OiBhdXRvO1xuICBtYXJnaW46IDEwJSAxNSU7XG4gIGJvcmRlcjogMjBweCBzb2xpZCAjRDdDQ0M4O1xuICBvdXRsaW5lOiAxMHB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC42KTsgfVxuICBAbWVkaWEgKG1pbi13aWR0aDogNDhlbSkge1xuICAgIC5wYWdlLWltYWdlIHtcbiAgICAgIG1hcmdpbjogNSUgMzAlOyB9IH1cbiAgLnBhZ2UtaW1hZ2UgaW1nIHtcbiAgICBkaXNwbGF5OiBibG9jazsgfVxuICBAbWVkaWEgKG1pbi13aWR0aDogNDhlbSkge1xuICAgIC5wYWdlLWltYWdlLWxhcmdlIHtcbiAgICAgIG1hcmdpbjogNSUgMjAlOyB9IH1cbiAgLnBhZ2UtaW1hZ2UtLXNpZGViYXIge1xuICAgIG1hcmdpbjogMmVtIDUlOyB9XG5cbi5pbWctY29tbWVudCB7XG4gIHdpZHRoOiBhdXRvO1xuICBoZWlnaHQ6IGF1dG87XG4gIG1hcmdpbjogMCAyNSU7XG4gIHBhZGRpbmc6IDFlbSAxLjVlbTtcbiAgYmFja2dyb3VuZDogI2YyZWVlZDtcbiAgYmFja2dyb3VuZDogIzY2NjY2NjtcbiAgb3V0bGluZTogNXB4IHNvbGlkICNEQkNCQzg7XG4gIG91dGxpbmUtb2Zmc2V0OiAtMTBweDtcbiAgY29sb3I6ICNlZmU4ZTc7XG4gIHRleHQtYWxpZ246IGNlbnRlcjsgfVxuICAuaW1nLWNvbW1lbnQtLXNpZGViYXIge1xuICAgIG1hcmdpbjogMWVtIDA7IH1cbiAgLmltZy1jb21tZW50IGNpdGUge1xuICAgIHBhZGRpbmc6IDEuNjk0OTIlO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDEyMSwgODUsIDcyLCAwLjEpOyB9XG4gICAgLmltZy1jb21tZW50IGNpdGU6YmVmb3JlLCAuaW1nLWNvbW1lbnQgY2l0ZTphZnRlciB7XG4gICAgICBkaXNwbGF5OiBub25lOyB9XG5cbi5wbGFucGhvdG8ge1xuICBtYXJnaW46IDNlbSAwO1xuICBwYWRkaW5nOiAxLjY5NDkyJTtcbiAgYmFja2dyb3VuZDogI0Q3Q0NDODtcbiAgb3ZlcmZsb3c6IGF1dG87IH1cbiAgQG1lZGlhIChtaW4td2lkdGg6IDQ4ZW0pIHtcbiAgICAucGxhbnBob3RvIGltZzpmaXJzdC1vZi10eXBlIHtcbiAgICAgIHdpZHRoOiA0OS4xNTI1NCU7XG4gICAgICBmbG9hdDogbGVmdDtcbiAgICAgIG1hcmdpbi1yaWdodDogMS42OTQ5MiU7IH0gfVxuICBAbWVkaWEgKG1pbi13aWR0aDogNDhlbSkge1xuICAgIC5wbGFucGhvdG8gaW1nOmxhc3Qtb2YtdHlwZSB7XG4gICAgICB3aWR0aDogNDkuMTUyNTQlO1xuICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgbWFyZ2luLXJpZ2h0OiAwOyB9IH1cblxuLmhhcy1ib3JkZXIge1xuICBtYXJnaW4tdG9wOiAxLjY5NDkyJTtcbiAgYm9yZGVyOiAxcHggc29saWQgI2VlZTsgfVxuXG4ucGFnZS1vbmUtdGhpcmQge1xuICBwYWRkaW5nOiAxLjY5NDkyJTsgfVxuICBAbWVkaWEgKG1pbi13aWR0aDogNjRlbSkge1xuICAgIC5wYWdlLW9uZS10aGlyZCB7XG4gICAgICB3aWR0aDogMzIuMjAzMzklO1xuICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDEuNjk0OTIlOyB9IH1cblxuLnBhZ2Utb25lLXRoaXJkLWxhc3Qge1xuICBwYWRkaW5nOiAxLjY5NDkyJTsgfVxuICBAbWVkaWEgKG1pbi13aWR0aDogNjRlbSkge1xuICAgIC5wYWdlLW9uZS10aGlyZC1sYXN0IHtcbiAgICAgIHdpZHRoOiAzMi4yMDMzOSU7XG4gICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7IH0gfVxuXG4uYnJlYWsge1xuICBjbGVhcjogYm90aDsgfVxuXG4uZ2FsbGVyeSB7XG4gIG92ZXJmbG93OiBhdXRvOyB9XG5cbi5nYWxsZXJ5IC5ibG9jLWdhbGxlcnkge1xuICBwYWRkaW5nOiAxLjY5NDkyJTsgfVxuICBAbWVkaWEgKG1pbi13aWR0aDogNDhlbSkge1xuICAgIC5nYWxsZXJ5IC5ibG9jLWdhbGxlcnkge1xuICAgICAgd2lkdGg6IDQ5LjE1MjU0JTtcbiAgICAgIGZsb2F0OiBsZWZ0OyB9XG4gICAgICAuZ2FsbGVyeSAuYmxvYy1nYWxsZXJ5Om50aC1jaGlsZCgybiArIDEpIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgIG1hcmdpbi1yaWdodDogLTEwMCU7XG4gICAgICAgIGNsZWFyOiBib3RoO1xuICAgICAgICBtYXJnaW4tbGVmdDogMDsgfVxuICAgICAgLmdhbGxlcnkgLmJsb2MtZ2FsbGVyeTpudGgtY2hpbGQoMm4gKyAyKSB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiA1MC44NDc0NiU7XG4gICAgICAgIG1hcmdpbi1yaWdodDogLTEwMCU7XG4gICAgICAgIGNsZWFyOiBub25lOyB9IH1cbiAgQG1lZGlhIChtaW4td2lkdGg6IDc1ZW0pIHtcbiAgICAuZ2FsbGVyeSAuYmxvYy1nYWxsZXJ5IHtcbiAgICAgIHdpZHRoOiA0OS4xNTI1NCU7XG4gICAgICBmbG9hdDogbGVmdDsgfVxuICAgICAgLmdhbGxlcnkgLmJsb2MtZ2FsbGVyeTpudGgtY2hpbGQoMm4gKyAxKSB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IC0xMDAlO1xuICAgICAgICBjbGVhcjogYm90aDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7IH1cbiAgICAgIC5nYWxsZXJ5IC5ibG9jLWdhbGxlcnk6bnRoLWNoaWxkKDJuICsgMikge1xuICAgICAgICBtYXJnaW4tbGVmdDogNTAuODQ3NDYlO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IC0xMDAlO1xuICAgICAgICBjbGVhcjogbm9uZTsgfSB9XG5cbiN5dHBsYXllciB7XG4gIG1hcmdpbjogNGVtIGF1dG87XG4gIGRpc3BsYXk6IGJsb2NrOyB9XG5cbi5sb3JlbSB7XG4gIGNvbG9yOiBvcmFuZ2U7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7IH1cblxuLmFuaW0tbW90IHtcbiAgZGlzcGxheTogbm9uZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBtaW4td2lkdGg6IDE1MHB4O1xuICBtYXgtd2lkdGg6IDIwMHB4O1xuICBwYWRkaW5nOiAxMHB4IDE1cHg7XG4gIGJvcmRlcjogM3B4IHNvbGlkICNhYWNiNzc7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgYmFja2dyb3VuZDogIzJiYTFhYTtcbiAgY29sb3I6ICNmZWZlZmU7XG4gIGZvbnQtZmFtaWx5OiBcIk9wZW4gU2Fuc1wiLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDEuMmVtO1xuICBmb250LXdlaWdodDogNzAwO1xuICBsZXR0ZXItc3BhY2luZzogMXB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cbiAgQG1lZGlhIChtaW4td2lkdGg6IDQ4ZW0pIHtcbiAgICAuYW5pbS1tb3Qge1xuICAgICAgZGlzcGxheTogYmxvY2s7IH0gfVxuXG4ucGFnZS1tYWluLXN2ZyB7XG4gIG1hcmdpbjogNGVtIDAgNGVtOyB9XG4gIC5wYWdlLW1haW4tc3ZnIHN2ZyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luOiAwIGF1dG87IH1cblxuI3N2Zy1mb290cHJpbnRzIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAzMDBweDtcbiAgbWFyZ2luOiAwIGF1dG87IH1cblxuLmZvb3Qge1xuICBvcGFjaXR5OiAwO1xuICBmaWxsOiAjMDBiY2Q3OyB9XG5cbiN0cmF1bWEtY29ldXIge1xuICB3aWR0aDogMTQ1cHg7IH1cblxuI2NvZXVyIHtcbiAgZmlsbDogbm9uZTtcbiAgc3Ryb2tlOiByZWQ7XG4gIHN0cm9rZS13aWR0aDogM3B4OyB9XG5cbiNwYW5zZW1lbnQsXG4ucGFuc2VtZW50LXBvaW50IHtcbiAgb3BhY2l0eTogMDsgfVxuXG4jcGFuc2VtZW50IHtcbiAgc3Ryb2tlOiBub25lO1xuICBmaWxsOiAjMDBCQ0Q0OyB9XG5cbi5wYW5zZW1lbnQtcG9pbnQge1xuICBmaWxsOiAjMDA5NmFhOyB9XG5cbiNkb3VsZXVyLWNocm9uaXF1ZSB7XG4gIHdpZHRoOiAyMDBweDsgfVxuXG4uYWlndWlsbGUge1xuICBvcGFjaXR5OiAwOyB9XG5cbi5idXR0b25zIHtcbiAgd2lkdGg6IDI4MHB4O1xuICBtYXJnaW46IDAgYXV0bzsgfVxuXG4ucGxheS1nc2FwLWJ1dHRvbixcbi5wbGF5LWdzYXAtYnV0dG9uLTIsXG4ucmVsYW5jZXIge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAxMjBweDtcbiAgbWFyZ2luOiAwIGF1dG8gM2VtO1xuICBwYWRkaW5nOiA1cHg7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgLjNzO1xuICBjb2xvcjogI2ZmZjtcbiAgZm9udC1mYW1pbHk6IFwiT3BlbiBTYW5zXCIsIHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiAxMDA7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGN1cnNvcjogcG9pbnRlcjsgfVxuICAucGxheS1nc2FwLWJ1dHRvbjpob3ZlcixcbiAgLnBsYXktZ3NhcC1idXR0b24tMjpob3ZlcixcbiAgLnJlbGFuY2VyOmhvdmVyIHtcbiAgICBvcGFjaXR5OiAuODsgfVxuXG4ucGxheS1nc2FwLWJ1dHRvbixcbi5wbGF5LWdzYXAtYnV0dG9uLTIge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjMDBCQ0Q0LCAjNGRkMGUxKTsgfVxuXG4ucmVsYW5jZXIge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCAjMDBCQ0Q0LCAjNGRkMGUxKTsgfVxuXG4uc3ZnLWdyYXBoIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogNTAwcHg7XG4gIG1hcmdpbjogMCBhdXRvOyB9XG5cbi5ob21tZXMge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogODdweDtcbiAgd2lkdGg6IDI1cHg7XG4gIGJhY2tncm91bmQ6ICM0ZjdlOGM7IH1cbiAgLmhvbW1lcy0xIHtcbiAgICBsZWZ0OiA5MXB4OyB9XG4gIC5ob21tZXMtMiB7XG4gICAgbGVmdDogMTYzcHg7IH1cbiAgLmhvbW1lcy0zIHtcbiAgICBsZWZ0OiAyMzRweDsgfVxuICAuaG9tbWVzLTQge1xuICAgIGxlZnQ6IDMwNnB4OyB9XG4gIC5ob21tZXMtNSB7XG4gICAgbGVmdDogMzc1cHg7IH1cblxuLmZlbW1lcyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiA4N3B4O1xuICB3aWR0aDogMjVweDtcbiAgYmFja2dyb3VuZDogI2RiODliNDsgfVxuICAuZmVtbWVzLTEge1xuICAgIGxlZnQ6IDY2cHg7IH1cbiAgLmZlbW1lcy0yIHtcbiAgICBsZWZ0OiAxMzhweDsgfVxuICAuZmVtbWVzLTMge1xuICAgIGxlZnQ6IDIwOXB4OyB9XG4gIC5mZW1tZXMtNCB7XG4gICAgbGVmdDogMjgxcHg7IH1cbiAgLmZlbW1lcy01IHtcbiAgICBsZWZ0OiAzNTBweDsgfVxuXG4uYWxjbyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiA2NXB4O1xuICBwYWRkaW5nLXRvcDogMWVtO1xuICB3aWR0aDogNTVweDtcbiAgaGVpZ2h0OiA0MHB4O1xuICBjb2xvcjogI2ZmZjtcbiAgdGV4dC1hbGlnbjogY2VudGVyOyB9XG4gIC5hbGNvLTAge1xuICAgIGxlZnQ6IDEwMHB4O1xuICAgIGJhY2tncm91bmQ6ICNBMTVBM0U7IH1cbiAgLmFsY28tMSB7XG4gICAgbGVmdDogMTU1cHg7XG4gICAgYmFja2dyb3VuZDogIzBGODkxRTsgfVxuICAuYWxjby0yIHtcbiAgICBsZWZ0OiAyMTBweDtcbiAgICBiYWNrZ3JvdW5kOiAjRkYwMDAwOyB9XG4gIC5hbGNvLTMge1xuICAgIGxlZnQ6IDI2NXB4O1xuICAgIGJhY2tncm91bmQ6ICMwMDY3QTA7IH1cbiAgLmFsY28tNCB7XG4gICAgbGVmdDogMzIwcHg7XG4gICAgYmFja2dyb3VuZDogI0NGMjhDNTsgfVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdpY29tb29uJztcbiAgc3JjOiB1cmwoXCJmb250cy9pY29tb29uLmVvdD8zcDc2bjRcIik7XG4gIHNyYzogdXJsKFwiZm9udHMvaWNvbW9vbi5lb3Q/M3A3Nm40I2llZml4XCIpIGZvcm1hdChcImVtYmVkZGVkLW9wZW50eXBlXCIpLCB1cmwoXCJmb250cy9pY29tb29uLndvZmYyPzNwNzZuNFwiKSBmb3JtYXQoXCJ3b2ZmMlwiKSwgdXJsKFwiZm9udHMvaWNvbW9vbi50dGY/M3A3Nm40XCIpIGZvcm1hdChcInRydWV0eXBlXCIpLCB1cmwoXCJmb250cy9pY29tb29uLndvZmY/M3A3Nm40XCIpIGZvcm1hdChcIndvZmZcIiksIHVybChcImZvbnRzL2ljb21vb24uc3ZnPzNwNzZuNCNpY29tb29uXCIpIGZvcm1hdChcInN2Z1wiKTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zdHlsZTogbm9ybWFsOyB9XG5cbmkge1xuICAvKiB1c2UgIWltcG9ydGFudCB0byBwcmV2ZW50IGlzc3VlcyB3aXRoIGJyb3dzZXIgZXh0ZW5zaW9ucyB0aGF0IGNoYW5nZSBmb250cyAqL1xuICBmb250LWZhbWlseTogJ2ljb21vb24nICFpbXBvcnRhbnQ7XG4gIHNwZWFrOiBub25lO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtdmFyaWFudDogbm9ybWFsO1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIC8qIEJldHRlciBGb250IFJlbmRlcmluZyA9PT09PT09PT09PSAqL1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsgfVxuXG4uaWNvbi1lbnZlbG9wOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxlOTA2XCI7IH1cblxuLmljb24tcGhvbmUtb3V0Z29pbmc6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGU5MDdcIjsgfVxuXG4uaWNvbi1xdW90ZXMtcmlnaHQ6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGU5MDRcIjsgfVxuXG4uaWNvbi1xdW90ZXMtbGVmdDpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZTkwNVwiOyB9XG5cbi5pY29uLXRyaWFuZ2xlLWRvd246YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGU5MDNcIjsgfVxuXG4uaWNvbi1pbmZvOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxlOTAyXCI7IH1cblxuLmljb24tYXJyb3ctY2lyY2xlLXJpZ2h0OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxlOTAwXCI7IH1cblxuLmljb24taG9tZTpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZTkwMVwiOyB9XG4iLCIvKiBtYXBzIHRvIGNob29zZSBmcm9tXG4gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiRjb2xvcnMtbmljbyA6IChcbiAgICAgICAgcHJpbWFyeS1jb2xvci1kYXJrOiAgICM1RDQwMzcsXG4gICAgICAgIHByaW1hcnktY29sb3I6ICAgICAgICAjNzk1NTQ4LFxuICAgICAgICBwcmltYXJ5LWNvbG9yLWxpZ2h0OiAgI0Q3Q0NDOCxcbiAgICAgICAgcHJpbWFyeS1jb2xvci10ZXh0OiAgICNGRkZGRkYsXG4gICAgICAgIGFjY2VudC1jb2xvcjogICAgICAgICAjMDBCQ0Q0LFxuICAgICAgICBwcmltYXJ5LXRleHQtY29sb3I6ICAgIzIxMjEyMSxcbiAgICAgICAgc2Vjb25kYXJ5LXRleHQtY29sb3I6ICM3MjcyNzIsXG4gICAgICAgIGRpdmlkZXItY29sb3I6ICAgICAgICAjQjZCNkI2LFxuICAgICAgICBibGV1LWNhbmFyZDogIzAwNjE2NVxuKTtcblxuLyokY29sb3JzLW5pY28gOiAoXG4gICAgICAgIHByaW1hcnktY29sb3ItZGFyazogICAjQzIxODVCLFxuICAgICAgICBwcmltYXJ5LWNvbG9yOiAgICAgICAgI0U5MUU2MyxcbiAgICAgICAgcHJpbWFyeS1jb2xvci1saWdodDogICNGOEJCRDAsXG4gICAgICAgIHByaW1hcnktY29sb3ItdGV4dDogICAjRkZGRkZGLFxuICAgICAgICBhY2NlbnQtY29sb3I6ICAgICAgICAgIzlFOUU5RSxcbiAgICAgICAgcHJpbWFyeS10ZXh0LWNvbG9yOiAgICMyMTIxMjEsXG4gICAgICAgIHNlY29uZGFyeS10ZXh0LWNvbG9yOiAjNzI3MjcyLFxuICAgICAgICBkaXZpZGVyLWNvbG9yOiAgICAgICAgI0I2QjZCNlxuKTsqL1xuXG4vKiRjb2xvcnMtbmljbyA6IChcbiAgICAgICAgcHJpbWFyeS1jb2xvci1kYXJrOiAgICMwMjg4RDEsXG4gICAgICAgIHByaW1hcnktY29sb3I6ICAgICAgICAjMDNBOUY0LFxuICAgICAgICBwcmltYXJ5LWNvbG9yLWxpZ2h0OiAgI0IzRTVGQyxcbiAgICAgICAgcHJpbWFyeS1jb2xvci10ZXh0OiAgICNGRkZGRkYsXG4gICAgICAgIGFjY2VudC1jb2xvcjogICAgICAgICAjMDA5Njg4LFxuICAgICAgICBwcmltYXJ5LXRleHQtY29sb3I6ICAgIzIxMjEyMSxcbiAgICAgICAgc2Vjb25kYXJ5LXRleHQtY29sb3I6ICM3MjcyNzIsXG4gICAgICAgIGRpdmlkZXItY29sb3I6ICAgICAgICAjQjZCNkI2XG4pOyovXG5cblxuLyogb3BhY2l0eSBtYXBcbiAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbiRuaWNvLW9wYWNpdHkgOiAoXG4gICAgICAgICcuMSc6IC4xLFxuICAgICAgICAnLjInOiAuMixcbiAgICAgICAgJy4zJzogLjMsXG4gICAgICAgICcuNCc6IC40LFxuICAgICAgICAnLjUnOiAuNSxcbiAgICAgICAgJy42JzogLjYsXG4gICAgICAgICcuNyc6IC43LFxuICAgICAgICAnLjgnOiAuOCxcbiAgICAgICAgJy45JzogLjksXG4pO1xuLyogYmFja2dyb3VuZDogY29sb3Itbmljbyhjb2xvcik7XG4gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5AZnVuY3Rpb24gY29sb3IoJGtleTogJ2Nvb2wnKSB7XG4gIEByZXR1cm4gbWFwLWdldCgkY29sb3JzLW5pY28sICRrZXkpO1xufVxuXG4vLyB2YXJpYWJsZSBxdWkgZMOpY291bGUgZGUgbGEgZm9uY3Rpb25cbiRjb2xvci1kYXJrLXRleHQ6IGNvbG9yKCdkYXJrLXRleHQnKTtcbiRjb2xvci1saWdodC10ZXh0OiBjb2xvcignbGlnaHQtdGV4dCcpO1xuJGNvbG9yLWJhY2tncm91bmQ6IGNvbG9yKCdiYWNrZ3JvdW5kJyk7XG4kY29sb3ItY29vbCA6IGNvbG9yKCdjb29sJyk7XG4kY29sb3ItbmF2IDogY29sb3IoJ25hdicpO1xuJGNvbG9yLWxpZ2h0IDogY29sb3IoJ2xpZ2h0Jyk7XG4kY29sb3ItYnV0dG9uIDogY29sb3IoJ2J1dHRvbicpO1xuXG4vKiBjb2xvci1kYXJrZXIoKSAvIGNvbG9yLWxpZ2h0ZXIoKVxuICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuQGZ1bmN0aW9uIGNvbG9yLWRhcmtlcigkY29sb3ItY29vbCwgJGxldmVsOiAwKSB7XG4gICRjb2xvci10aW50LXBlcmNlbnRhZ2UgOiAxMCU7XG4gICRjb2xvci10by10aW50IDogY29sb3IoJGNvbG9yLWNvb2wpO1xuICAkY29sb3ItdGludCA6ICMwMDA7XG5cbiAgQHJldHVybiBtaXgoJGNvbG9yLXRpbnQsICRjb2xvci10by10aW50LCAkY29sb3ItdGludC1wZXJjZW50YWdlICogJGxldmVsKTtcbn1cblxuQGZ1bmN0aW9uIGNvbG9yLWxpZ2h0ZXIoJGNvbG9yLWNvb2wsICRsZXZlbDogMCkge1xuICAkY29sb3ItdGludC1wZXJjZW50YWdlIDogMTAlO1xuICAkY29sb3ItdG8tdGludCA6IGNvbG9yKCRjb2xvci1jb29sKTtcbiAgJGNvbG9yLXRpbnQgOiAjZmZmO1xuXG4gIEByZXR1cm4gbWl4KCRjb2xvci10aW50LCAkY29sb3ItdG8tdGludCwgJGNvbG9yLXRpbnQtcGVyY2VudGFnZSAqICRsZXZlbCk7XG59XG5cbi8qIGNvbG9yLW9wYShjb2xvciwgLngpO1xuICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuQGZ1bmN0aW9uIGNvbG9yLW9wYSgkbmFtZTogJ2Nvb2wnLCAkb3BhY2l0eTogMCkge1xuICAkY29sb3IgOiBjb2xvcigkbmFtZSk7XG5cbiAgLy8gR2V0IHRoZSBuYW1lZCBvcGFjaXR5IGxldmVsLCBpZiBpdCBleGlzdHNcbiAgQGlmIG1hcF9oYXNfa2V5KCRuaWNvLW9wYWNpdHksICRvcGFjaXR5KSB7XG4gICAgJG9wYWNpdHkgOiBtYXAtZ2V0KCRuaWNvLW9wYWNpdHksICRvcGFjaXR5KTtcbiAgfVxuXG4gIC8vIFVzZSByZ2JhKCkgdG8gbWFuaXB1bGF0ZSB0aGUgY29sb3IncyBhbHBoYSBsZXZlbFxuICBAcmV0dXJuIHJnYmEoJGNvbG9yLCAkb3BhY2l0eSk7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgZW5kXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4iLCIkc2Fucy1zZXJpZiA6J09wZW4gU2FucycsIHNhbnMtc2VyaWY7XG4kc2VyaWYgOidMb3JhJywgc2VyaWY7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBGT05ULVNJWkUgTUFQXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJGgxLWZ6IDooXG4gICAgICAgIG51bGwgOiAxZW0sXG4gICAgICAgIDMyMHB4IDogMS41ZW0sXG4gICAgICAgIDM3NXB4IDogMmVtLFxuICAgICAgICA3NjhweCA6IDIuNWVtLFxuICAgICAgICAxMjAwcHggOiAzZW1cbik7XG5cbiRoMi1meiA6KFxuICAgICAgICBudWxsIDogMS42MjVlbSxcbiAgICAgICAgMzIwcHggOiAxLjYyNWVtLFxuICAgICAgICAzNzVweCA6IDEuNWVtLFxuICAgICAgICA3NjhweCA6IDJlbSxcbiAgICAgICAgMTIwMHB4IDogMmVtXG4pO1xuXG4kaDMtZnogOihcbiAgICAgICAgbnVsbCA6IDEuNjI1ZW0sXG4gICAgICAgIDMyMHB4IDogMS42MjVlbSxcbiAgICAgICAgMzc1cHggOiAxLjM3NWVtLFxuICAgICAgICA3NjhweCA6IDEuNzVlbSxcbiAgICAgICAgMTIwMHB4IDogMS43NWVtXG4pO1xuXG4kaDQtZnogOihcbiAgICAgICAgbnVsbCA6IDEuNjI1ZW1cbik7XG5cbiRoNS1meiA6KFxuICAgICAgICBudWxsIDogMWVtXG4pO1xuXG5AbWl4aW4gZnooJGZzLW1hcCkge1xuICBAZWFjaCAkZnMtYnJlYWtwb2ludCwgJGZzLWZvbnQtc2l6ZSBpbiAkZnMtbWFwIHtcbiAgICBAaWYgJGZzLWJyZWFrcG9pbnQgPT0gbnVsbCB7XG4gICAgICBmb250LXNpemUgOiRmcy1mb250LXNpemU7XG4gICAgfSBAZWxzZSB7XG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZChtaW4td2lkdGggOiRmcy1icmVha3BvaW50KSB7XG4gICAgICAgIGZvbnQtc2l6ZSA6JGZzLWZvbnQtc2l6ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIExJTkUtSEVJR0hUIE1BUFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiRwLWxoIDooXG4gICAgICAgIG51bGwgOiAxLjI1ZW0sXG4gICAgICAgIDMyMHB4IDogMS4yNWVtLFxuICAgICAgICAzNzVweCA6IDEuMTI1ZW0sXG4gICAgICAgIDc2OHB4IDogMS4zNzVlbVxuKTtcblxuJGgxLWxoIDooXG4gICAgICAgIG51bGwgOiAxLjI1ZW0sXG4gICAgICAgIDEyMDBweCA6IDEuNTBlbVxuKTtcblxuJGgyLWxoIDooXG4gICAgICAgIG51bGwgOiAxLjE1Mzg0NjE1ZW0sXG4gICAgICAgIDMyMHB4IDogMS4xNTM4NDYxNWVtLFxuICAgICAgICAzNzVweCA6IDEuMjVlbVxuKTtcblxuJGgzLWxoIDooXG4gICAgICAgIG51bGwgOiAxLjEzNjM2MzY0ZW0sXG4gICAgICAgIDMyMHB4IDogMS4xMzYzNjM2NGVtLFxuICAgICAgICAzNzVweCA6IDEuMjVlbVxuKTtcblxuJGg0LWxoIDooXG4gICAgICAgIG51bGwgOiAxLjExMTExMTExZW0sXG4gICAgICAgIDMyMHB4IDogMS4xMTExMTExMWVtLFxuICAgICAgICAzNzVweCA6IDEuMjIyMjIyMjJlbVxuKTtcblxuQG1peGluIGxoKCRsaC1tYXApIHtcbiAgQGVhY2ggJGxoLWJyZWFrcG9pbnQsICRsaCBpbiAkbGgtbWFwIHtcbiAgICBAaWYgJGxoLWJyZWFrcG9pbnQgPT0gbnVsbCB7XG4gICAgICBsaW5lLWhlaWdodCA6JGxoO1xuICAgIH0gQGVsc2Uge1xuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQobWluLXdpZHRoIDokbGgtYnJlYWtwb2ludCkge1xuICAgICAgICBsaW5lLWhlaWdodCA6JGxoO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gSEVBREVSU1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmgxIHtcbiAgbGV0dGVyLXNwYWNpbmcgOi0xcHg7XG4gIEBpbmNsdWRlIGZ6KCRoMS1meik7XG4gIEBpbmNsdWRlIGxoKCRoMS1saCk7XG59XG5cbi5tYWluLWgxIHtcbiAgbWFyZ2luIDowO1xufVxuXG5Aa2V5ZnJhbWVzIGdpZ2dsZSB7XG4gIDAlIHtcbiAgICBjb2xvciA6IzAwYmNkNDtcbiAgfVxuICA1MCUge1xuICAgIGNvbG9yIDpsaWdodGVuKCMwMGJjZDQsIDUpO1xuICB9XG4gIDEwMCUge1xuICAgIGNvbG9yIDojMDBiY2Q0O1xuICB9XG59XG5cbi5zaWRlYmFyLWgxIHtcbiAgcG9zaXRpb24gICAgIDpyZWxhdGl2ZTtcbiAgcGFkZGluZy1sZWZ0IDozNXB4O1xuICBjb2xvciAgICAgICAgOmNvbG9yKHNlY29uZGFyeS10ZXh0LWNvbG9yKTtcbiAgZm9udC1zaXplICAgIDoxLjdlbTtcblxuICAmOmJlZm9yZSB7XG4gICAgcG9zaXRpb24gICAgOmFic29sdXRlO1xuICAgIGxlZnQgICAgICAgIDotMTBweDtcbiAgICBjb2xvciAgICAgICA6Y29sb3IoYWNjZW50LWNvbG9yKTtcbiAgICBmb250LWZhbWlseSA6aWNvbW9vbjtcbiAgICBmb250LXNpemUgICA6MS41ZW07XG4gICAgY29udGVudCAgICAgOidcXGU5MDInO1xuICAgIGFuaW1hdGlvbiAgIDpnaWdnbGUgM3MgaW5maW5pdGUgZWFzZS1pbi1vdXQ7XG4gIH1cbn1cblxuaDIge1xuICBAaW5jbHVkZSBmeigkaDItZnopO1xuICBAaW5jbHVkZSBsaCgkaDItbGgpO1xufVxuXG4uc2lkZWJhci1oMiB7XG4gIGZvbnQtc2l6ZSA6MS42ZW07XG59XG5cbmgzIHtcbiAgQGluY2x1ZGUgZnooJGgzLWZ6KTtcbiAgQGluY2x1ZGUgbGgoJGgzLWxoKTtcbn1cblxuaDQge1xuICBAaW5jbHVkZSBmeigkaDQtZnopO1xuICBAaW5jbHVkZSBsaCgkaDQtbGgpO1xufVxuXG5oNSxcbmg2IHtcbiAgQGluY2x1ZGUgZnooJGg1LWZ6KTtcbn1cblxuLyogcGFyYWdyYXBoZXNcbiAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbnAge1xuICBmb250LWZhbWlseSA6JHNlcmlmO1xuICBmb250LXdlaWdodCA6NDAwO1xuICBAaW5jbHVkZSBsaCgkcC1saCk7XG59XG5cbmgxLFxuaDIsXG5oMyxcbmg0LFxuaDUsXG5oNiB7XG4gIGNvbG9yICAgICAgIDpjb2xvcihwcmltYXJ5LXRleHQtY29sb3IpO1xuICBmb250LWZhbWlseSA6JHNhbnMtc2VyaWY7XG59XG5cbi5zdWJ0aXRsZSB7XG4gIG1hcmdpbi10b3AgICAgIDowO1xuICBjb2xvciAgICAgICAgICA6Y29sb3Ioc2Vjb25kYXJ5LXRleHQtY29sb3IpO1xuICBmb250LXNpemUgICAgICA6MS4yZW07XG4gIHRleHQtdHJhbnNmb3JtIDp1cHBlcmNhc2U7XG59XG5cbi8vIExpc3Rlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLmxpc3RlIGxpIHtcbiAgcG9zaXRpb24gICAgICAgIDpyZWxhdGl2ZTtcbiAgcGFkZGluZy1ib3R0b20gIDouNWVtO1xuICBwYWRkaW5nLWxlZnQgICAgOjEwcHg7XG4gIGZvbnQtZmFtaWx5ICAgICA6JHNlcmlmO1xuICBsaW5lLWhlaWdodCAgICAgOjEuNGVtO1xuICBsaXN0LXN0eWxlLXR5cGUgOm5vbmU7XG5cbiAgJjpiZWZvcmUge1xuICAgIHBvc2l0aW9uICAgICA6YWJzb2x1dGU7XG4gICAgdG9wICAgICAgICAgIDoxcHg7XG4gICAgbGVmdCAgICAgICAgIDotMTBweDtcbiAgICBtYXJnaW4tcmlnaHQgOi41ZW07XG4gICAgY29sb3IgICAgICAgIDpjb2xvcihhY2NlbnQtY29sb3IpO1xuICAgIGZvbnQtZmFtaWx5ICA6aWNvbW9vbjtcbiAgICBjb250ZW50ICAgICAgOidcXGU5MDAnO1xuICB9XG59XG5cbi8vIFF1b3Rlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmJsb2NrcXVvdGUsXG5wLnF1b3RlIHtcbiAgcG9zaXRpb24gICAgOnJlbGF0aXZlO1xuICBtYXJnaW4gICAgICA6MmVtIDA7XG4gIHBhZGRpbmcgICAgIDouNWVtIDFlbTtcbiAgY29sb3IgICAgICAgOmNvbG9yLWRhcmtlcihwcmltYXJ5LWNvbG9yLCAzKTtcbiAgZm9udC1mYW1pbHkgOiRzZXJpZjtcbiAgZm9udC1zaXplICAgOjEuMmVtO1xuICBmb250LXN0eWxlICA6aXRhbGljO1xuICBsaW5lLWhlaWdodCA6MzBweDtcbiAgdGV4dC1hbGlnbiAgOmNlbnRlcjtcblxuICAmOmJlZm9yZSxcbiAgJjphZnRlciB7XG4gICAgZGlzcGxheSAgICA6YmxvY2s7XG4gICAgcG9zaXRpb24gICA6YWJzb2x1dGU7XG4gICAgd2lkdGggICAgICA6MTAwJTtcbiAgICBoZWlnaHQgICAgIDoycHg7XG4gICAgYmFja2dyb3VuZCA6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAjZmZmIDEwJSwgY29sb3IoYWNjZW50LWNvbG9yKSA1MCUsICNmZmYgOTAlKTtcbiAgICBjb250ZW50ICAgIDonJztcbiAgfVxuICAmOmJlZm9yZSB7XG4gICAgdG9wIDotLjRlbTtcbiAgfVxuICAmOmFmdGVyIHtcbiAgICBib3R0b20gOi0uNGVtO1xuICB9XG59XG5cbi5ncmF5cXVvdGUge1xuICB0ZXh0LWFsaWduIDpsZWZ0O1xuICBmb250LXNpemUgOjFlbTtcbiAgYm9yZGVyLWxlZnQgOiAzcHggc29saWQgY29sb3IoZGl2aWRlci1jb2xvcik7XG4gICY6YmVmb3JlLFxuICAmOmFmdGVyIHtcbiAgICBkaXNwbGF5IDpub25lO1xuICB9XG59XG5cbi5jaXRhdGlvbiB7XG4gIHdpZHRoICA6NDAwcHg7XG4gIG1hcmdpbi1ib3R0b206IDRlbTtcblxuICAmOmJlZm9yZSxcbiAgJjphZnRlciB7XG4gICAgcG9zaXRpb24gICAgICAgOmFic29sdXRlO1xuICAgIHRvcCAgICAgICAgICAgIDowO1xuICAgIGJhY2tncm91bmQgICAgIDpub25lO1xuICAgIGNvbG9yICAgICAgICAgIDpjb2xvci1saWdodGVyKHByaW1hcnktdGV4dC1jb2xvciwgNCk7XG4gICAgZm9udC1mYW1pbHkgICAgOmljb21vb247XG4gICAgZm9udC1zaXplICAgICAgOi44ZW07XG4gICAgdGV4dC1hbGlnbiAgICAgOmNlbnRlcjtcbiAgICB2ZXJ0aWNhbC1hbGlnbiA6c3VwZXI7XG4gIH1cbiAgJjpiZWZvcmUge1xuICAgIHJpZ2h0ICAgOjUwJTtcbiAgICBjb250ZW50IDonXFxlOTA1JztcbiAgfVxuXG4gICY6YWZ0ZXIge1xuICAgIGxlZnQgICAgOjUwJTtcbiAgICBjb250ZW50IDonXFxlOTA0JztcbiAgfVxufVxuXG5jaXRlIHtcbiAgcG9zaXRpb24gICAgOnJlbGF0aXZlO1xuICBwYWRkaW5nICAgICA6NHB4IDZweDtcbiAgYmFja2dyb3VuZCAgOmhzbGEoMCwgMCUsIDk1JSwgLjUpO1xuICBjb2xvciAgICAgICA6aW5oZXJpdDtcblxuICAmOmJlZm9yZSxcbiAgJjphZnRlciB7XG4gICAgY29sb3IgICAgICAgICAgOmNvbG9yLWxpZ2h0ZXIocHJpbWFyeS10ZXh0LWNvbG9yLCAyKTtcbiAgICBmb250LWZhbWlseSAgICA6aWNvbW9vbjtcbiAgICBmb250LXNpemUgICAgICA6NXB4O1xuICAgIHZlcnRpY2FsLWFsaWduIDpzdXBlcjtcbiAgfVxuICAmOmJlZm9yZSB7XG4gICAgcGFkZGluZy1yaWdodCA6NHB4O1xuICAgIGNvbnRlbnQgICAgICAgOidcXGU5MDUnO1xuICB9XG5cbiAgJjphZnRlciB7XG4gICAgcGFkZGluZy1sZWZ0IDo0cHg7XG4gICAgY29udGVudCAgICAgIDonXFxlOTA0JztcbiAgfVxufVxuXG4uYXV0ZXVyLWNpdGF0aW9uIHtcbiAgcG9zaXRpb24gOmFic29sdXRlO1xuICByaWdodCA6MjBweDtcbiAgdG9wIDogNDBweDtcbiAgYmFja2dyb3VuZCA6bm9uZTtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXNpemUgOi44ZW07XG4gICY6YmVmb3JlLFxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgfVxufVxuXG4vLyBMaWVuc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi50ZXh0LWxpbmsge1xuICB0cmFuc2l0aW9uICAgICAgOmFsbCAuM3M7XG4gIGJvcmRlci1ib3R0b20gICA6MnB4IGRvdHRlZCBjb2xvcihhY2NlbnQtY29sb3IpO1xuICBjb2xvciAgICAgICAgICAgOmNvbG9yKHByaW1hcnktY29sb3ItZGFyayk7XG4gIHRleHQtZGVjb3JhdGlvbiA6bm9uZTtcblxuICAmOmhvdmVyIHtcbiAgICBvcGFjaXR5IDouODtcbiAgfVxufVxuXG4uZm4ge1xuICBtYXJnaW4tdG9wICAgICAgICAgICAgICAgICA6M2VtO1xuICBwYWRkaW5nICAgICAgICAgICAgICAgICAgICA6LjVlbSAyZW07XG4gIGJvcmRlciAgICAgICAgICAgICAgICAgICAgIDoxcHggc29saWQgI2RhZGFkYTtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cyAgICAgOjIwcHg7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzIDoyMHB4O1xuICBmb250LXNpemUgICAgICAgICAgICAgICAgICA6LjllbTtcbiAgZm9udC1zdHlsZSAgICAgICAgICAgICAgICAgOml0YWxpYztcbiAgbGkge1xuICAgIGZvbnQtZmFtaWx5IDokc2VyaWY7XG4gIH1cbn1cblxuLmZvb3Rub3RlIHtcbiAgY29sb3IgICAgICAgICAgIDppbmhlcml0O1xuICB0ZXh0LWRlY29yYXRpb24gOm5vbmU7XG4gICY6YWZ0ZXIge1xuICAgIG1hcmdpbi1sZWZ0ICAgICA6MnB4O1xuICAgIGNvbG9yICAgICAgICAgICA6Y29sb3IoYWNjZW50LWNvbG9yKTtcbiAgICBmb250LXNpemUgICAgICAgOi41ZW07XG4gICAgZm9udC13ZWlnaHQgICAgIDo3MDA7XG4gICAgdGV4dC1kZWNvcmF0aW9uIDp1bmRlcmxpbmU7XG4gICAgY29udGVudCAgICAgICAgIDonMSc7XG4gICAgY3Vyc29yICAgICAgICAgIDpwb2ludGVyO1xuICAgIHZlcnRpY2FsLWFsaWduICA6c3VwZXI7XG4gIH1cbn1cblxuLm1haWwtZGUtY29udGFjdDo6YWZ0ZXIge1xuICBwYWRkaW5nLWxlZnQgOi41ZW07XG4gIGNvbG9yICAgICAgICA6Y3VycmVudENvbG9yO1xuICBmb250LWZhbWlseSAgOiRzZXJpZjtcbiAgY29udGVudCAgICAgIDonZ3Jhc3NvbWFyaWVqb3NlZUBvcmFuZ2UuZnInO1xufVxuXG4ucXVlc3Rpb24ge1xuICBkaXNwbGF5ICAgICAgICA6aW5saW5lLWJsb2NrO1xuICBwYWRkaW5nICAgICAgICA6MmVtIDIuNWVtO1xuICBiYWNrZ3JvdW5kICAgICA6UkdCQSgyNTUsIDIzNCwgMTMsIC43KTtcbiAgZm9udC1zaXplICAgICAgOjEuMmVtO1xuICBmb250LXdlaWdodCAgICA6NzAwO1xuICB0ZXh0LXRyYW5zZm9ybSA6dXBwZXJjYXNlO1xufVxuXG5wLmludHJvIHtcbiAgJjpmaXJzdC1vZi10eXBlIHtcbiAgICAmOmZpcnN0LWxldHRlciB7XG4gICAgICBmb250LXNpemU6IDEuOGVtO1xuICAgIH1cbiAgfSAgICBcbn1cblxuLmVuY2FydCB7XG4gIGJhY2tncm91bmQ6IGNvbG9yKHByaW1hcnktY29sb3IpO1xuICBwYWRkaW5nOiBndXR0ZXIoKTtcbiAgY29sb3I6ICNmZmY7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gIG91dGxpbmU6IDFweCBkYXNoZWQgI2ZmZjtcbiAgb3V0bGluZS1vZmZzZXQ6IC0xZW07XG4gIG1hcmdpbi10b3A6IDJlbTtcblxuICBoMiwgYmxvY2txdW90ZSB7XG4gICAgY29sb3I6ICNmZmY7XG4gIH1cbn1cblxuLnNpbXBsZS1ibG9ja3F1b3RlIHtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gICY6YWZ0ZXIsXG4gICY6YmVmb3JlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIGJveC1zaGFkb3c6ICAtN3B4IDBweCAwcHggIGNvbG9yLW9wYShwcmltYXJ5LWNvbG9yLWxpZ2h0LCAuNSk7XG4gIHRleHQtYWxpZ246IHN0YXJ0O1xuICBtYXJnaW4tbGVmdDogMWVtO1xuXG4gIGZvb3RlciB7XG4gICAgbWFyZ2luLXRvcDogMWVtO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBsZWZ0OiA1MCU7XG4gIH1cbn1cblxuIiwiLy8gR3V0dGVyIFN5bnRheFxuLy8gPT09PT09PT09PT09PVxuXG5cbi8vIEd1dHRlcnNcbi8vIC0tLS0tLS1cbi8vIFNldCBndXR0ZXJzIG9uIGFuIGVsZW1lbnQuXG4vLyAtIFskc3Bhbl0gICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBndXR0ZXJzKFxuICAkc3BhbjogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogcGFyc2UtZ3V0dGVycygkc3Bhbik7XG4gICRfZ3V0dGVycyA6IGdldC1ndXR0ZXJzKCRzcGFuKTtcblxuICAkX291dHB1dDogKFxuICAgIGJlZm9yZTogbWFwLWdldCgkX2d1dHRlcnMsIGJlZm9yZSksXG4gICAgYWZ0ZXI6IG1hcC1nZXQoJF9ndXR0ZXJzLCBhZnRlciksXG4gICAgZmxvdzogc3VzeS1nZXQoZmxvdywgJHNwYW4pLFxuICApO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChndXR0ZXJzLCAkaW5zcGVjdCk7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KCRfb3V0cHV0Li4uKTtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkX291dHB1dC4uLik7XG4gIH1cbn1cblxuQG1peGluIGd1dHRlcihcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgZ3V0dGVycygkc3Bhbik7XG59XG5cblxuLy8gR3V0dGVyXG4vLyAtLS0tLS1cbi8vIFJldHVybiB0aGUgd2lkdGggb2YgYSBndXR0ZXIuXG4vLyAtIFskc3Bhbl0gICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBndXR0ZXIoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gICRzcGFuOiBwYXJzZS1ndXR0ZXJzKCRzcGFuKTtcblxuICAkX2d1dHRlcnM6IGdldC1ndXR0ZXJzKCRzcGFuKTtcbiAgJF9ndXR0ZXJzOiBtYXAtZ2V0KCRfZ3V0dGVycywgYmVmb3JlKSBvciBtYXAtZ2V0KCRfZ3V0dGVycywgYWZ0ZXIpO1xuXG4gIEByZXR1cm4gJF9ndXR0ZXJzO1xufVxuXG5AZnVuY3Rpb24gZ3V0dGVycyhcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgQHJldHVybiBndXR0ZXIoJHNwYW4pO1xufVxuXG5cbi8vIEdldCBHdXR0ZXIgV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBndXR0ZXIgd2lkdGguXG4vLyAtIFskY29udGV4dF06IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGdldC1ndXR0ZXItd2lkdGgoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRjb250ZXh0ICA6IHBhcnNlLWd1dHRlcnMoJGNvbnRleHQpO1xuXG4gICRfZ3V0dGVycyA6IHN1c3ktZ2V0KGd1dHRlcnMsICRjb250ZXh0KTtcbiAgJF9ndXR0ZXIgIDogc3VzeS1nZXQoZ3V0dGVyLW92ZXJyaWRlLCAkY29udGV4dCk7XG5cbiAgQGlmICRfZ3V0dGVycyBhbmQgKCRfZ3V0dGVycyA+IDApIGFuZCBub3QoJF9ndXR0ZXIpIHtcbiAgICAkX2NvbHVtbi13aWR0aDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkY29udGV4dCk7XG4gICAgJF9tYXRoOiBndXR0ZXItbWF0aCgkY29udGV4dCk7XG4gICAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICAgJF9ndXR0ZXI6ICRfZ3V0dGVycyAqIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGNvbnRleHQpO1xuICAgICAgJF9zcHJlYWQgIDogaWYoaXMtc3BsaXQoJGNvbnRleHQpLCB3aWRlLCBzdXN5LWdldChzcHJlYWQsICRjb250ZXh0KSk7XG4gICAgICAkX2d1dHRlciAgOiBwZXJjZW50YWdlKCRfZ3V0dGVycyAvIHN1c3ktc3VtKCRfY29sdW1ucywgJF9ndXR0ZXJzLCAkX3NwcmVhZCkpO1xuICAgIH1cbiAgfVxuXG4gICRfZ3V0dGVyOiBpZigkX2d1dHRlciA9PSAnbm8tZ3V0dGVycycgb3IgJF9ndXR0ZXIgPT0gJ25vLWd1dHRlcicsIG51bGwsICRfZ3V0dGVyKTtcblxuICBAcmV0dXJuICRfZ3V0dGVyO1xufVxuXG5cbi8vIEdldCBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGJlZm9yZSBhbmQgYWZ0ZXIgZ3V0dGVyIHZhbHVlcy5cbi8vIC0gWyRjb250ZXh0XTogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ2V0LWd1dHRlcnMoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRjb250ZXh0ICAgICAgICAgICAgOiBwYXJzZS1ndXR0ZXJzKCRjb250ZXh0KTtcblxuICAkX2d1dHRlci1wb3NpdGlvbiAgIDogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG4gICRfZ3V0dGVyICAgICAgICAgICAgOiBnZXQtZ3V0dGVyLXdpZHRoKCRjb250ZXh0KTtcblxuICAkX3JldHVybiAgICAgICAgICAgIDogKGJlZm9yZTogbnVsbCwgYWZ0ZXI6IG51bGwpO1xuXG4gIEBpZiBpcy1zcGxpdCgkY29udGV4dCkgYW5kICRfZ3V0dGVyIHtcbiAgICAkX2d1dHRlcjogJF9ndXR0ZXIgLyAyO1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChiZWZvcmU6ICRfZ3V0dGVyLCBhZnRlcjogJF9ndXR0ZXIpKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKCRfZ3V0dGVyLXBvc2l0aW9uOiAkX2d1dHRlcikpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBJcyBJbnNpZGVcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGd1dHRlcnMgYXJlIGluc2lkZS5cbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBpcy1pbnNpZGUoXG4gICRjb250ZXh0XG4pIHtcbiAgJF9pbnNpZGU6IGluc2lkZSBpbnNpZGUtc3RhdGljO1xuICAkX2d1dHRlci1wb3NpdGlvbjogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBpZihpbmRleCgkX2luc2lkZSwgJF9ndXR0ZXItcG9zaXRpb24pLCB0cnVlLCBmYWxzZSk7XG59XG5cblxuLy8gSXMgU3BsaXRcbi8vIC0tLS0tLS0tXG4vLyBSZXR1cm5zIHRydWUgaWYgZ3V0dGVycyBhcmUgc3BsaXQuXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gaXMtc3BsaXQoXG4gICRjb250ZXh0XG4pIHtcbiAgJF9zcGxpdDogc3BsaXQgaW5zaWRlIGluc2lkZS1zdGF0aWM7XG4gICRfZ3V0dGVyLXBvc2l0aW9uOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcblxuICBAcmV0dXJuIGlmKGluZGV4KCRfc3BsaXQsICRfZ3V0dGVyLXBvc2l0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xufVxuXG5cbi8vIEd1dHRlciBNYXRoXG4vLyAtLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSBtYXRoIHRvIHVzZSBmb3IgZ3V0dGVyIGNhbGN1bGF0aW9uc1xuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGd1dHRlci1tYXRoKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkX3JldHVybiAgOiBzdXN5LWdldChtYXRoLCAkY29udGV4dCk7XG4gICRfcmV0dXJuICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpID09IGluc2lkZS1zdGF0aWMsIHN0YXRpYywgJF9yZXR1cm4pO1xuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBTdXN5IEJveCBTaXppbmdcbi8vID09PT09PT09PT09PT09PT09XG5cbi8vIEdsb2JhbCBCb3ggU2l6aW5nXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgYm94IG1vZGVsIGdsb2JhbGx5IG9uIGFsbCBlbGVtZW50cy5cbi8vIC0gWyRib3hdOiBib3JkZXItYm94IHwgY29udGVudC1ib3hcbi8vIC0gWyRpbmhlcml0XTogdHJ1ZSB8IGZhbHNlXG5AbWl4aW4gZ2xvYmFsLWJveC1zaXppbmcoXG4gICRib3g6IHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSxcbiAgJGluaGVyaXQ6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3Q6ICRib3g7XG5cbiAgQGlmICRpbmhlcml0IHtcbiAgICBAYXQtcm9vdCB7XG4gICAgICAgaHRtbCB7IEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpOyB9XG4gICAgICAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIgeyBib3gtc2l6aW5nOiBpbmhlcml0OyB9XG4gICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIgeyBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTsgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGdsb2JhbC1ib3gtc2l6aW5nLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHVwZGF0ZS1ib3gtbW9kZWwoJGJveCk7XG59XG5cbi8vIEJvcmRlciBCb3ggU2l6aW5nXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gQSBsZWdhY3kgc2hvcnRjdXQuLi5cbi8vIC0gWyRpbmhlcml0XTogdHJ1ZSB8IGZhbHNlXG5AbWl4aW4gYm9yZGVyLWJveC1zaXppbmcoXG4gICRpbmhlcml0OiBmYWxzZVxuKSB7XG4gIEBpbmNsdWRlIGdsb2JhbC1ib3gtc2l6aW5nKGJvcmRlci1ib3gsICRpbmhlcml0KTtcbn1cblxuLy8gVXBkYXRlIEJveCBNb2RlbFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogVXBkYXRlcyBnbG9iYWwgYm94IG1vZGVsIHNldHRpbmdcbkBtaXhpbiB1cGRhdGUtYm94LW1vZGVsKFxuICAkYm94XG4pIHtcbiAgQGlmICRib3ggIT0gc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpIHtcbiAgQGluY2x1ZGUgc3VzeS1zZXQoZ2xvYmFsLWJveC1zaXppbmcsICRib3gpO1xuICB9XG59XG4iLCIvLyByZW0gU3VwcG9ydFxuLy8gPT09PT09PT09PT1cblxuLy8gcmVtXG4vLyAtLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBvdXRwdXQgZGlyZWN0bHkuXG4vLyAtICRwcm9wICA6IDxjc3MgcHJvcGVydHk+XG4vLyAtICR2YWwgICA6IDxjc3MgdmFsdWU+XG5AbWl4aW4gc3VzeS1yZW0oXG4gICRwcm9wLFxuICAkdmFsXG4pIHtcbiAgJF9yZXFzOiAoXG4gICAgdmFyaWFibGU6IHJoeXRobS11bml0IHJlbS13aXRoLXB4LWZhbGxiYWNrLFxuICAgIG1peGluOiByZW0sXG4gICk7XG4gIEBpZiBzdXN5LXN1cHBvcnQocmVtLCAkX3JlcXMsICR3YXJuOiBmYWxzZSkgYW5kICRyaHl0aG0tdW5pdCA9PSByZW0ge1xuICAgIEBpbmNsdWRlIHJlbSgkcHJvcCwgJHZhbCk7XG4gIH0gQGVsc2Uge1xuICAgICN7JHByb3B9OiAkdmFsO1xuICB9XG59XG4iLCIvKiBicmVha3BvaW50c1xuICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuJHBob25lOiBlbSgzMjBweCk7IC8vIGxhcmdldXIgbWluaVxuJHBob25lLWxhcmdlOiBlbSgzNzVweCk7IC8vIGlwaG9uZSA2IHBsdXNcbiR0YWJsZXQtcG9ydHJhaXQ6IGVtKDc2OHB4KTtcbiR0YWJsZXQtcGF5c2FnZTogZW0oMTAyNHB4KTtcbiRkZXNrdG9wOiBlbSgxMjAwcHgpO1xuJG1hY2Jvb2s6IGVtKDE0NDBweCk7XG4kZGVza3RvcC1sYXJnZTogZW0oMTYwMHB4KTtcblxuIiwiLmhhcy1jdXJsZWQtc2hhZG93IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBiYWNrZ3JvdW5kOiBjb2xvci1saWdodGVyKHByaW1hcnktY29sb3ItbGlnaHQsIDcpO1xuICBwYWRkaW5nOiAxZW0gMmVtO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZWVlO1xuICBmb250LXNpemU6IDEuMWVtO1xuICBcbiAgJjpiZWZvcmUsXG4gICY6YWZ0ZXIge1xuICAgIHBvc2l0aW9uICAgOmFic29sdXRlO1xuICAgIHRvcCAgICAgICAgOjgwJTtcbiAgICBib3R0b20gICAgIDoxNXB4O1xuICAgIGxlZnQgICAgICAgOjEwcHg7XG4gICAgd2lkdGggICAgICA6NTAlO1xuICAgIG1heC13aWR0aCAgOjMwMHB4O1xuICAgIHRyYW5zZm9ybSAgOnJvdGF0ZSgtM2RlZyk7XG4gICAgYmFja2dyb3VuZCA6Izc3NztcbiAgICBib3gtc2hhZG93IDowIDE1cHggMTBweCAjNzc3O1xuICAgIGNvbnRlbnQgICAgOicnO1xuICAgIHotaW5kZXggICAgOi0xO1xuICB9XG5cbiAgJjphZnRlciB7XG4gICAgcmlnaHQgICAgIDoxMHB4O1xuICAgIGxlZnQgICAgICA6YXV0bztcbiAgICB0cmFuc2Zvcm0gOnJvdGF0ZSgzZGVnKTtcbiAgfVxufVxuXG4uYnV0dG9uLXJlY3Qge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGJhY2tncm91bmQ6IGNvbG9yKGFjY2VudC1jb2xvcik7XG4gIHBhZGRpbmc6IC44ZW0gMS4yZW07XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgY29sb3I6ICNmZmY7XG4gIGZvbnQtZmFtaWx5OiAkc2Fucy1zZXJpZjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBib3gtc2hhZG93OiA0cHggNHB4IDRweCAtNHB4ICM3Nzc7XG4gIG1hcmdpbi1yaWdodDogMWVtO1xuICBtYXJnaW4tYm90dG9tOiAxZW07XG4gIHRyYW5zaXRpb246IGFsbCAuM3M7XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogY29sb3ItZGFya2VyKGFjY2VudC1jb2xvciwgMik7XG4gIH1cbn1cbi5idXR0b25zLWRpdiB7XG4gIG1hcmdpbi10b3A6IDVlbTtcbn1cbi5idXR0b25zLWRpdiBwIHtcbiAgZm9udC1zaXplOiAxLjNlbTtcbn1cblxuLmJ1dHRvbi1uYXYge1xuICBmbG9hdDogcmlnaHQ7XG4gIG1hcmdpbi1yaWdodDogMWVtO1xuICBtYXJnaW4tdG9wOiAuM2VtO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGhlaWdodDogMy41cmVtO1xuICB3aWR0aDogMy41cmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAjZmZmLCAjZmZmKSwgbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAjZmZmLCAjZmZmKSwgbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAjZmZmLCAjZmZmKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIHRvcCwgY2VudGVyLCBjZW50ZXIgYm90dG9tO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMjglO1xuICBjb2xvcjogIzMzMztcbiAgcGFkZGluZzogMDtcbiAgb3V0bGluZTogMDtcbiAgYm9yZGVyOiAwO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTtcbiAgdHJhbnNpdGlvbjogLjI1cztcbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtLCBiYWNrZ3JvdW5kLXBvc2l0aW9uO1xuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtLCBiYWNrZ3JvdW5kLXBvc2l0aW9uO1xuXG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkdGFibGV0LXBvcnRyYWl0KSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICB9IiwiLy8gQnJlYWtwb2ludCBJbnRlZ3JhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG4kc3VzeS1tZWRpYTogKCkgIWRlZmF1bHQ7XG4kc3VzeS1tZWRpYS1mYWxsYmFjazogZmFsc2UgIWRlZmF1bHQ7XG5cbiRfc3VzeS1tZWRpYS1jb250ZXh0OiAoKTtcblxuXG4vLyBTdXN5IEJyZWFrcG9pbnRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hhbmdlIGdyaWRzIGF0IGRpZmZlcmVudCBtZWRpYSBxdWVyeSBicmVha3BvaW50cy5cbi8vIC0gJHF1ZXJ5ICAgICA6IDxtaW4td2lkdGg+IFs8bWF4LXdpZHRoPl0gfCA8cHJvcGVydHk+IDx2YWx1ZT4gfCA8bWFwPlxuLy8gLSAkbGF5b3V0ICAgIDogPHNldHRpbmdzPlxuLy8gLSAkbm8tcXVlcnkgIDogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktYnJlYWtwb2ludChcbiAgJHF1ZXJ5LFxuICAkbGF5b3V0OiBmYWxzZSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtcm91dGVyKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGlmICRsYXlvdXQge1xuICAgICAgQGluY2x1ZGUgd2l0aC1sYXlvdXQoJGxheW91dCkge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFN1c3kgTWVkaWFcbi8vIC0tLS0tLS0tLS1cbi8vIC0gJHF1ZXJ5OiA8bWluLXdpZHRoPiBbPG1heC13aWR0aD5dIHwgPHByb3BlcnR5PiA8dmFsdWU+XG4vLyAtICRuby1xdWVyeTogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktbWVkaWEoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gICRvbGQtY29udGV4dDogJF9zdXN5LW1lZGlhLWNvbnRleHQ7XG4gICRuYW1lOiBpZihtYXAtaGFzLWtleSgkc3VzeS1tZWRpYSwgJHF1ZXJ5KSwgJHF1ZXJ5LCBudWxsKTtcbiAgJHF1ZXJ5OiBzdXN5LWdldC1tZWRpYSgkcXVlcnkpO1xuICAkcXVlcnk6IHN1c3ktcGFyc2UtbWVkaWEoJHF1ZXJ5KTtcblxuICBAaW5jbHVkZSBzdXN5LW1lZGlhLWNvbnRleHQoJHF1ZXJ5LCAkbmFtZSk7XG5cbiAgQGlmICRuby1xdWVyeSBhbmQgdHlwZS1vZigkbm8tcXVlcnkpICE9IHN0cmluZyB7XG4gICAgQGNvbnRlbnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBtZWRpYSAje3N1c3ktcmVuZGVyLW1lZGlhKCRxdWVyeSl9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgIEBpZiB0eXBlLW9mKCRuby1xdWVyeSkgPT0gc3RyaW5nIHtcbiAgICAgICN7JG5vLXF1ZXJ5fSAmIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1jb250ZXh0KCRvbGQtY29udGV4dCwgJGNsZWFuOiB0cnVlKTtcbn1cblxuXG4vLyBNZWRpYSBSb3V0ZXJcbi8vIC0tLS0tLS0tLS0tLVxuLy8gUm91dCBtZWRpYSBhcmd1bWVudHMgdG8gdGhlIGNvcnJlY3QgbWl4aW4uXG5AbWl4aW4gc3VzeS1tZWRpYS1yb3V0ZXIoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYnJlYWtwb2ludCwgKG1peGluOiBicmVha3BvaW50KSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBzdXN5LW1lZGlhKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBVcGRhdGUgQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gU2V0IHRoZSBuZXcgbWVkaWEgY29udGV4dFxuQG1peGluIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHF1ZXJ5LFxuICAkbmFtZTogbnVsbCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRxdWVyeTogbWFwLW1lcmdlKChuYW1lOiAkbmFtZSksICRxdWVyeSk7XG5cbiAgQGlmICRjbGVhbiB7XG4gICAgJF9zdXN5LW1lZGlhLWNvbnRleHQ6ICRxdWVyeSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkX3N1c3ktbWVkaWEtY29udGV4dDogbWFwLW1lcmdlKCRfc3VzeS1tZWRpYS1jb250ZXh0LCAkcXVlcnkpICFnbG9iYWw7XG4gIH1cbn1cblxuXG4vLyBNZWRpYSBDb250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIGZ1bGwgbWVkaWEgY29udGV4dCwgb3IgYSBzaW5nbGUgbWVkaWEgcHJvcGVydHkgKGUuZy4gbWluLXdpZHRoKVxuQGZ1bmN0aW9uIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHByb3BlcnR5OiBmYWxzZVxuKSB7XG4gIEBpZiAkcHJvcGVydHkge1xuICAgIEByZXR1cm4gbWFwLWdldCgkX3N1c3ktbWVkaWEtY29udGV4dCwgJHByb3BlcnR5KTtcbiAgfSBAZWxzZSB7XG4gICAgQHJldHVybiAkX3N1c3ktbWVkaWEtY29udGV4dDtcbiAgfVxufVxuXG5cbi8vIEdldCBNZWRpYVxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBuYW1lZCBtZWRpYS1xdWVyeSBmcm9tICRzdXN5LW1lZGlhLlxuLy8gLSAkbmFtZTogPGtleT5cbkBmdW5jdGlvbiBzdXN5LWdldC1tZWRpYShcbiAgJG5hbWVcbikge1xuICBAaWYgbWFwLWhhcy1rZXkoJHN1c3ktbWVkaWEsICRuYW1lKSB7XG4gICAgJG1hcC12YWx1ZTogbWFwLWdldCgkc3VzeS1tZWRpYSwgJG5hbWUpO1xuICAgIEBpZiAoJG5hbWUgPT0gJG1hcC12YWx1ZSkge1xuICAgICAgJG5hbWU6ICRtYXAtdmFsdWU7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbmFtZTogc3VzeS1nZXQtbWVkaWEoJG1hcC12YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbmFtZTtcbn1cblxuXG4vLyBSZW5kZXIgTWVkaWFcbi8vIC0tLS0tLS0tLS0tLVxuLy8gQnVpbGQgYSBtZWRpYS1xdWVyeSBzdHJpbmcgZnJvbSB2YXJpb3VzIG1lZGlhIHNldHRpbmdzXG5AZnVuY3Rpb24gc3VzeS1yZW5kZXItbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRvdXRwdXQ6IG51bGw7XG4gIEBlYWNoICRwcm9wZXJ0eSwgJHZhbHVlIGluICRxdWVyeSB7XG4gICAgJHN0cmluZzogbnVsbDtcblxuICAgIEBpZiAkcHJvcGVydHkgPT0gbWVkaWEge1xuICAgICAgJHN0cmluZzogJHZhbHVlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0cmluZzogJygjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSknO1xuICAgIH1cblxuICAgICRvdXRwdXQ6IGlmKCRvdXRwdXQsICcjeyRvdXRwdXR9IGFuZCAjeyRzdHJpbmd9JywgJHN0cmluZyk7XG4gIH1cblxuICBAcmV0dXJuICRvdXRwdXQ7XG59XG5cblxuLy8gUGFyc2UgTWVkaWFcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gcGFyc2VkIG1lZGlhLXF1ZXJ5IHNldHRpbmdzIGJhc2VkIG9uIHNob3J0aGFuZFxuQGZ1bmN0aW9uIHN1c3ktcGFyc2UtbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRtcTogbnVsbDtcbiAgQGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBtYXAge1xuICAgICRtcTogJHF1ZXJ5O1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBudW1iZXIge1xuICAgICRtcTogKG1pbi13aWR0aDogJHF1ZXJ5KTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbGlzdCBhbmQgbGVuZ3RoKCRxdWVyeSkgPT0gMiB7XG4gICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09IG51bWJlciB7XG4gICAgICAkbXE6IChcbiAgICAgICAgbWluLXdpZHRoOiBtaW4oJHF1ZXJ5Li4uKSxcbiAgICAgICAgbWF4LXdpZHRoOiBtYXgoJHF1ZXJ5Li4uKSxcbiAgICAgICk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbXE6IChudGgoJHF1ZXJ5LCAxKTogbnRoKCRxdWVyeSwgMikpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJG1xOiAobWVkaWE6ICcjeyRxdWVyeX0nKTtcbiAgfVxuXG4gIEByZXR1cm4gJG1xO1xufVxuIiwiLmljb24tZW52ZWxvcCAsXG4uaWNvbi1waG9uZS1vdXRnb2luZyB7XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiA1cHg7XG4gICAgICAgIGNvbG9yOiBjb2xvcihhY2NlbnQtY29sb3IpO1xuICAgIH1cbn1cbiIsInNwYW5baXRlbXByb3A9J25hbWUnXSB7XG4gICAgcGFkZGluZy1ib3R0b206IDFlbTtcbiAgICBjb2xvcjogY29sb3IoYWNjZW50LWNvbG9yKTtcbn1cblxuc3BhbltpdGVtcHJvcF0ge1xuICAgIGZvbnQtZmFtaWx5OiAkc2VyaWY7XG59XG5cbnNwYW5baXRlbXByb3A9J25hbWUnXSAsXG5zcGFuW2l0ZW1wcm9wPSdhZGRyZXNzJ10gLFxuc3BhbltpdGVtcHJvcD0nc3RyZWV0QWRkcmVzcyddICxcbnNwYW5baXRlbXByb3A9J3RlbGVwaG9uZSddIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbn1cblxuc3BhbltpdGVtcHJvcD0ncG9zdGFsQ29kZSddIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4O1xufVxuXG5zcGFuW2l0ZW1wcm9wPSd0ZWxlcGhvbmUnXSB7XG4gICAgcGFkZGluZy10b3A6IDFlbTtcbn1cbiIsInRoICxcbnRkICxcbmNhcHRpb24ge1xuICAgIGhlaWdodDogNTBweDtcbn1cblxuY2FwdGlvbiAsXG50ZCB7XG4gICAgZm9udC1mYW1pbHk6ICRzZXJpZjtcbn1cbi50YWJsZS10YXJpZnMge1xuICAgIG1pbi13aWR0aDogMjAwcHg7XG4gICAgbWF4LXdpZHRoOiAzMDBweDtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBib3JkZXI6IDVweCBzb2xpZCBjb2xvcihwcmltYXJ5LWNvbG9yLWRhcmspO1xuICAgIGJhY2tncm91bmQ6ICNlZWU7XG4gICAgY2FwdGlvbiB7XG4gICAgICAgIGJhY2tncm91bmQ6IGNvbG9yKHByaW1hcnktY29sb3ItZGFyayk7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBsaW5lLWhlaWdodDogNTBweDtcbiAgICB9XG4gICAgdGgge1xuICAgICAgICBiYWNrZ3JvdW5kOiBjb2xvcihwcmltYXJ5LWNvbG9yKTtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAkc2Fucy1zZXJpZjtcbiAgICB9XG4gICAgdGQge1xuICAgICAgICBiYWNrZ3JvdW5kOiBjb2xvcihhY2NlbnQtY29sb3IpO1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgZm9udC1mYW1pbHk6ICRzYW5zLXNlcmlmO1xuICAgICAgICBmb250LXNpemU6IDEuN2VtO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxufVxuXG4udGFibGUtcHJvZmVzc2lvbnMge1xuICAgIG1hcmdpbjogM2VtIGF1dG87XG4gICAgXG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCR0YWJsZXQtcG9ydHJhaXQpIHtcbiAgICBtaW4td2lkdGg6IDUwMHB4O1xuICAgICAgICBcbiAgICB9XG5cbiAgICBjYXB0aW9uIHtcbiAgICAgICAgYmFja2dyb3VuZDogY29sb3IocHJpbWFyeS1jb2xvci1saWdodCk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiA1MHB4O1xuICAgICAgICBmb250LXNpemU6IDEuMWVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgIH1cblxuICAgIHRoIHtcbiAgICAgICAgYmFja2dyb3VuZDogY29sb3IocHJpbWFyeS1jb2xvci1kYXJrKTtcbiAgICAgICAgY29sb3I6ICNlZWU7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNmZmY7XG4gICAgfVxuICAgIHRkIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBiYWNrZ3JvdW5kOiBjb2xvci1saWdodGVyKHByaW1hcnktY29sb3IsIDkpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZmZmO1xuICAgICAgICBmb250LXNpemU6IDEuMWVtO1xuICAgIH1cbn1cblxuXG5cblxuIiwiLmhvbWUtdG9wIHtcbiAgICBAaW5jbHVkZSBwYWQoMSUpO1xuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkdGFibGV0LXBheXNhZ2UpIHtcbiAgICAgICAgQGluY2x1ZGUgcGFkKDclKTtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRtYWNib29rKSB7XG4gICAgICAgIEBpbmNsdWRlIHBhZCgxNSUpO1xuICAgIH1cbn1cblxuLmgxLWhvbWUgLFxuLmgyLWhvbWUge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLmgxLWhvbWUge1xuICAgIG1hcmdpbi10b3A6IDA7XG59XG5cbi5oMi1ob21lIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMS41ZW07XG4gICAgY29sb3I6IGNvbG9yKHNlY29uZGFyeS10ZXh0LWNvbG9yKTtcbn1cblxuLmhvbWUtdGh1bWJuYWlscyAuaG9tZS10aHVtYm5haWwge1xuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkdGFibGV0LXBvcnRyYWl0KSB7XG4gICAgICAgIEBpbmNsdWRlIGdhbGxlcnkoNCk7XG4gICAgfVxufVxuXG4uaG9tZS10aHVtYm5haWxzIHtcbiAgICBtYXJnaW4tdG9wOiAyZW07XG59XG5cbi5ob21lLXRodW1ibmFpbCB7XG4gICAgbWFyZ2luOiA0ZW0gMDtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA1cHg7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDVweDtcblxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkdGFibGV0LXBheXNhZ2UpIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgbWluLWhlaWdodDogNTAwcHg7XG5cbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJGRlc2t0b3ApIHtcbiAgICAgICAgbWluLWhlaWdodDogNDUwcHg7XG4gICAgfVxuICAgICY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHVybCgnaW1hZ2VzL3Ryb3VibGVzLmpwZycpIG5vLXJlcGVhdCB0b3AgY2VudGVyO1xuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDM3MHB4IDEwMHB4O1xuICAgIH1cbiAgICAmOm50aC1vZi10eXBlKDIpIHtcbiAgICAgICAgYmFja2dyb3VuZDogdXJsKCdpbWFnZXMvcHN5Y2hvdGhlcmFwaWVzLmpwZycpIG5vLXJlcGVhdCB0b3AgY2VudGVyO1xuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDM3MHB4IDEwMHB4O1xuICAgIH1cbiAgICAmOm50aC1vZi10eXBlKDMpIHtcbiAgICAgICAgYmFja2dyb3VuZDogdXJsKCdpbWFnZXMvcHN5Y2hvbG9ndWUuanBnJykgbm8tcmVwZWF0IHRvcCBjZW50ZXI7XG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogMzcwcHggMTAwcHg7XG4gICAgfVxuICAgICY6bnRoLW9mLXR5cGUoNCkge1xuICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoJ2ltYWdlcy9lbWRyLnBuZycpIG5vLXJlcGVhdCB0b3AgY2VudGVyO1xuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDM3MHB4IDEwMHB4O1xuICAgIH1cbiAgICAmOm50aC1vZi10eXBlKDUpIHtcbiAgICAgICAgYmFja2dyb3VuZDogdXJsKCdpbWFnZXMvY2FiaW5ldC5qcGcnKSBuby1yZXBlYXQgdG9wIGNlbnRlcjtcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiAzNzBweCAxMDBweDtcbiAgICB9XG4gICAgJjpudGgtb2YtdHlwZSg2KSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgYmFja2dyb3VuZDogdXJsKCdpbWFnZXMvcXVpLnBuZycpIG5vLXJlcGVhdCB0b3AgY2VudGVyO1xuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDM3MHB4IDEwMHB4O1xuICAgIH1cbn1cblxuLmhvbWUtdGh1bWJuYWlsIGgyIHtcbiAgICB3aWR0aDogMjYwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG8gMWVtO1xuICAgIHBhZGRpbmctYm90dG9tOiAxZW07XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAuNSk7XG4gICAgY29sb3I6IGNvbG9yLWxpZ2h0ZXIoc2Vjb25kYXJ5LXRleHQtY29sb3IsIDgpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkdGFibGV0LXBvcnRyYWl0KSB7XG4gICAgICAgIG1hcmdpbi10b3A6IDE0MHB4O1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgICAgY29sb3I6IGNvbG9yKHNlY29uZGFyeS10ZXh0LWNvbG9yKTtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCR0YWJsZXQtcGF5c2FnZSkge1xuICAgICAgICBmbGV4OiAxIDAgMjAlO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJGRlc2t0b3ApIHtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgfVxufVxuXG4uaG9tZS10aHVtYm5haWxfX3RleHQge1xuICAgIG1hcmdpbi10b3A6IDkwcHg7XG5cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHRhYmxldC1wYXlzYWdlKSB7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG5cbiAgICAgICAgZmxleDogNSAwIDUwJTtcbiAgICB9XG59XG5cbi5ob21lLXRodW1ibmFpbCBhIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgbWFyZ2luOiAwIDMwJTtcbiAgICBwYWRkaW5nLXRvcDogMmVtO1xuICAgIGNvbG9yOiAjMDA2MTY1O1xuICAgIGZvbnQtZmFtaWx5OiAkc2Fucy1zZXJpZjtcbiAgICBmb250LXNpemU6IDEuMWVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG5cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHRhYmxldC1wYXlzYWdlKSB7XG4gICAgICAgIG1hcmdpbjogYXV0byAwIDAgMDtcbiAgICAgICAgLy9iYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIC4zKTtcblxuICAgICAgICBmbGV4OiAwIDEgNDAlO1xuICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAgfVxuICAgICY6YmVmb3JlIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiA1cHg7XG4gICAgICAgIGxlZnQ6IC01OHB4O1xuICAgICAgICB3aWR0aDogNTBweDtcbiAgICAgICAgaGVpZ2h0OiA1MHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoJ2ltYWdlcy9saW5rLWFycm93LnN2ZycpO1xuICAgICAgICBjb250ZW50OiAnJztcblxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHRhYmxldC1wYXlzYWdlKSB7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvLyBTcGFuIFN5bnRheFxuLy8gPT09PT09PT09PT1cblxuLy8gU3BhbiBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS1cbi8vIFNldCBhIHNwYW5uaW5nIGVsZW1lbnQgdXNpbmcgc2hvcnRoYW5kIHN5bnRheC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gc3BhbihcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdDogJHNwYW47XG4gICRzcGFuOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJG91dHB1dDogc3Bhbi1tYXRoKCRzcGFuKTtcbiAgJG5lc3Rpbmc6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGNsZWFyOiBzdXN5LWdldChjbGVhciwgJHNwYW4pO1xuXG4gICRib3g6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRzcGFuKTtcbiAgJGNvbnRlbnQtYm94OiBpZihzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgIT0gJ2JvcmRlci1ib3gnLCB0cnVlLCBmYWxzZSk7XG4gICRib3g6ICRib3ggb3IgaWYoaXMtaW5zaWRlKCRzcGFuKSBhbmQgJGNvbnRlbnQtYm94LCBib3JkZXItYm94LCBudWxsKTtcblxuICBAaWYgJGNsZWFyID09IGJyZWFrIHtcbiAgICBAaW5jbHVkZSBicmVhaztcbiAgfSBAZWxzZSBpZiAkY2xlYXIgPT0gbm9icmVhayB7XG4gICAgQGluY2x1ZGUgbm9icmVhaztcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzcGFuLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpO1xuICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICBAaWYgdmFsaWQtY29sdW1ucygkbmVzdGluZywgc2lsZW50KSB7XG4gICAgQGluY2x1ZGUgbmVzdGVkKCRzcGFuKSB7IEBjb250ZW50OyB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIFNwYW4gW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgc3Bhbi5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AZnVuY3Rpb24gc3BhbihcbiAgJHNwYW5cbikge1xuICBAcmV0dXJuIGdldC1zcGFuLXdpZHRoKCRzcGFuKTtcbn1cblxuLy8gU3BhbiBNYXRoXG4vLyAtLS0tLS0tLS1cbi8vIEdldCBhbGwgdGhlIHNwYW4gcmVzdWx0cy5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gc3Bhbi1tYXRoKFxuICAkc3BhblxuKSB7XG4gICRuZXN0ICAgICAgICAgICAgIDogaWYoc3VzeS1nZXQocm9sZSwgJHNwYW4pID09IG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJHNwbGl0LW5lc3QgICAgICAgOiBpZihpcy1zcGxpdCgkc3BhbikgYW5kICRuZXN0LCB0cnVlLCBmYWxzZSk7XG4gICRlZGdlICAgICAgICAgICAgIDogZ2V0LWVkZ2UoJHNwYW4pO1xuICAkbG9jYXRpb24gICAgICAgICA6IGdldC1sb2NhdGlvbigkc3Bhbik7XG5cbiAgJGZsb2F0ICAgICAgICAgICAgOiBmcm9tO1xuICAkcGFkZGluZy1iZWZvcmUgICA6IG51bGw7XG4gICRwYWRkaW5nLWFmdGVyICAgIDogbnVsbDtcbiAgJG1hcmdpbi1iZWZvcmUgICAgOiBudWxsO1xuICAkbWFyZ2luLWFmdGVyICAgICA6IG51bGw7XG5cbiAgLy8gY2FsY3VsYXRlIHdpZHRoc1xuICAkc3ByZWFkOiBpbmRleChtYXAtdmFsdWVzKCRzcGFuKSwgc3ByZWFkKTtcbiAgJHNwYW46IGlmKCRzcGxpdC1uZXN0IGFuZCBub3QoJHNwcmVhZCksIG1hcC1tZXJnZSgkc3BhbiwgKHNwcmVhZDogd2lkZSkpLCAkc3Bhbik7XG4gICR3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xuICAkZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuXG4gIC8vIGFwcGx5IGd1dHRlcnNcbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgIEBpZiBub3Qoc3VzeS1nZXQocm9sZSwgJHNwYW4pKSB7XG4gICAgICAkcGFkZGluZy1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSk7XG4gICAgICAkcGFkZGluZy1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGlmIG5vdCgkc3BsaXQtbmVzdCkge1xuICAgICAgJG1hcmdpbi1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSk7XG4gICAgICAkbWFyZ2luLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9XG5cbiAgLy8gc3BlY2lhbCBtYXJnaW4gaGFuZGxpbmdcbiAgQGlmIHN1c3ktZ2V0KG91dHB1dCwgJHNwYW4pID09IGlzb2xhdGUgYW5kICRsb2NhdGlvbiB7XG4gICAgJG1hcmdpbi1iZWZvcmU6IGdldC1pc29sYXRpb24oJHNwYW4pO1xuICAgICRtYXJnaW4tYWZ0ZXI6IC0xMDAlO1xuICB9IEBlbHNlIGlmICRlZGdlIHtcbiAgICAkaXMtc3BsaXQ6IGlzLXNwbGl0KCRzcGFuKTtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcblxuICAgIEBpZiAkZWRnZSA9PSBsYXN0IHtcbiAgICAgICRmbG9hdDogc3VzeS1nZXQobGFzdC1mbG93LCAkc3Bhbik7XG4gICAgfVxuXG4gICAgQGlmIG5vdCgkaXMtc3BsaXQpIHtcbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBmaXJzdCBhbmQgJHBvcyA9PSBiZWZvcmUpIHtcbiAgICAgICAgJG1hcmdpbi1iZWZvcmU6IDA7XG4gICAgICB9XG4gICAgICBAaWYgJGVkZ2UgPT0gZnVsbCBvciAoJGVkZ2UgPT0gbGFzdCBhbmQgJHBvcyA9PSBhZnRlcikge1xuICAgICAgICAkbWFyZ2luLWFmdGVyOiAwO1xuICAgICAgfVxuICAgIH1cblxuICB9XG5cbiAgQHJldHVybiAoXG4gICAgd2lkdGggICAgICAgICAgIDogJHdpZHRoLFxuICAgIGZsb2F0ICAgICAgICAgICA6ICRmbG9hdCxcbiAgICBtYXJnaW4tYmVmb3JlICAgOiAkbWFyZ2luLWJlZm9yZSxcbiAgICBtYXJnaW4tYWZ0ZXIgICAgOiAkbWFyZ2luLWFmdGVyLFxuICAgIHBhZGRpbmctYmVmb3JlICA6ICRwYWRkaW5nLWJlZm9yZSxcbiAgICBwYWRkaW5nLWFmdGVyICAgOiAkcGFkZGluZy1hZnRlcixcbiAgICBmbG93ICAgICAgICAgICAgOiBzdXN5LWdldChmbG93LCAkc3BhbiksXG4gICk7XG59XG5cbi8vIEdldCBTcGFuIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHNwYW4gd2lkdGguXG4vLyAtICRzcGFuOiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1zcGFuLXdpZHRoKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuXG4gICRuICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGxvY2F0aW9uIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcbiAgJGNvbHVtbnMgIDogc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pO1xuICAkZ3V0dGVycyAgOiBzdXN5LWdldChndXR0ZXJzLCAkc3Bhbik7XG4gICRzcHJlYWQgICA6IHN1c3ktZ2V0KHNwcmVhZCwgJHNwYW4pO1xuXG4gICRjb250ZXh0ICA6IG51bGw7XG4gICRzcGFuLXN1bSA6IG51bGw7XG4gICR3aWR0aCAgICA6IG51bGw7XG5cbiAgQGlmICRuID09ICdmdWxsJyB7XG4gICAgJHBvczogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3Bhbik7XG4gICAgJHJvbGU6IHN1c3ktZ2V0KHJvbGUsICRzcGFuKTtcbiAgICAkbjogaWYoJHBvcyA9PSBzcGxpdCBhbmQgJHJvbGUgIT0gbmVzdCwgc3VzeS1jb3VudCgkY29sdW1ucyksIDEwMCUpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJG4pICE9IG51bWJlciB7XG4gICAgQHdhcm4gXCIoI3t0eXBlLW9mKCRuKX0pICN7JG59IGlzIG5vdCBhIHZhbGlkIHNwYW4uXCI7XG4gIH0gQGVsc2UgaWYgdW5pdGxlc3MoJG4pIHtcbiAgICAkY29udGV4dDogc3VzeS1zdW0oJGNvbHVtbnMsICRndXR0ZXJzLCBpZihpcy1zcGxpdCgkc3BhbiksIHdpZGUsIG5hcnJvdykpO1xuICAgICRzcHJlYWQ6IGlmKGlzLWluc2lkZSgkc3BhbiksICRzcHJlYWQgb3Igd2lkZSwgJHNwcmVhZCk7XG4gICAgJHNwYW4tc3VtOiBzdXN5KCRuLCAkbG9jYXRpb24sICRjb2x1bW5zLCAkZ3V0dGVycywgJHNwcmVhZCk7XG5cbiAgICAkX21hdGg6IHN1c3ktZ2V0KG1hdGgsICRzcGFuKTtcbiAgICAkX2NvbHVtbi13aWR0aDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkc3Bhbik7XG4gICAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICAgJHdpZHRoOiAkc3Bhbi1zdW0gKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICR3aWR0aDogcGVyY2VudGFnZSgkc3Bhbi1zdW0gLyAkY29udGV4dCk7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAkd2lkdGg6ICRuO1xuICB9XG5cbiAgQHJldHVybiAkd2lkdGg7XG59XG4iLCIvLyBEaXJlY3Rpb24gSGVscGVyc1xuLy8gPT09PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBGbG93IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGZsb3c6IGx0cixcbikpO1xuXG4vLyBHZXQgRGlyZWN0aW9uXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlICdmcm9tJyBvciAndG8nIGRpcmVjdGlvbiBvZiBhIGx0ciBvciBydGwgZmxvdy5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbi8vIC0gWyRrZXldICAgOiBmcm9tIHwgdG9cbkBmdW5jdGlvbiBnZXQtZGlyZWN0aW9uKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdyksXG4gICRrZXk6IGZyb21cbikge1xuICAkcmV0dXJuOiBpZigkZmxvdyA9PSBydGwsIChmcm9tOiByaWdodCwgdG86IGxlZnQpLCAoZnJvbTogbGVmdCwgdG86IHJpZ2h0KSk7XG4gIEByZXR1cm4gbWFwLWdldCgkcmV0dXJuLCAka2V5KTtcbn1cblxuLy8gVG9cbi8vIC0tXG4vLyBSZXR1cm4gdGhlICd0bycgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIHRvKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICBAcmV0dXJuIGdldC1kaXJlY3Rpb24oJGZsb3csIHRvKTtcbn1cblxuLy8gRnJvbVxuLy8gLS0tLVxuLy8gUmV0dXJuIHRoZSAnZnJvbScgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIGZyb20oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gIEByZXR1cm4gZ2V0LWRpcmVjdGlvbigkZmxvdywgZnJvbSk7XG59XG4iLCIvLyBJc29sYXRpb24gU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cblxuLy8gSXNvbGF0ZSBbTWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBpc29sYXRpb24gYXMgYW4gb3ZlcnJpZGUuXG4vLyAtICRsb2NhdGlvbjogPHNwYW4+XG5AbWl4aW4gaXNvbGF0ZShcbiAgJGlzb2xhdGU6IDFcbikge1xuICAkaW5zcGVjdDogJGlzb2xhdGU7XG5cbiAgJG91dHB1dDogKFxuICAgIHB1c2g6IGlzb2xhdGUoJGlzb2xhdGUpLFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRpc29sYXRlKSxcbiAgKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoaXNvbGF0ZSwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBpc29sYXRlLW91dHB1dCgkb3V0cHV0Li4uKTtcbn1cblxuXG4vLyBJc29sYXRlIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGFuIGlzb2xhdGlvbiBvZmZzZXQgd2lkdGguXG4vLyAtICRsb2NhdGlvbjogPHNwYW4+XG5AZnVuY3Rpb24gaXNvbGF0ZShcbiAgJGlzb2xhdGU6IDFcbikge1xuICAkaXNvbGF0ZTogcGFyc2Utc3BhbigkaXNvbGF0ZSk7XG4gICRpc29sYXRpb246IHN1c3ktZ2V0KHNwYW4sICRpc29sYXRlKTtcblxuICBAaWYgJGlzb2xhdGlvbiBhbmQgbm90KGdldC1sb2NhdGlvbigkaXNvbGF0ZSkpIHtcbiAgICAkbmV3OiAoXG4gICAgICBzcGFuOiBudWxsLFxuICAgICAgbG9jYXRpb246ICRpc29sYXRpb24sXG4gICAgKTtcbiAgICAkaXNvbGF0ZTogbWFwLW1lcmdlKCRpc29sYXRlLCAkbmV3KTtcbiAgfVxuXG4gIEByZXR1cm4gZ2V0LWlzb2xhdGlvbigkaXNvbGF0ZSk7XG59XG5cblxuLy8gR2V0IElzb2xhdGlvblxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSBpc29sYXRpb24gb2Zmc2V0IHdpZHRoXG4vLyAtICRpbnB1dDogPG1hcD5cbkBmdW5jdGlvbiBnZXQtaXNvbGF0aW9uKFxuICAkaW5wdXRcbikge1xuICAkbG9jYXRpb24gICA6IGdldC1sb2NhdGlvbigkaW5wdXQpO1xuICAkY29sdW1ucyAgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRpbnB1dCk7XG4gICR3aWR0aCAgICAgIDogbnVsbDtcblxuICBAaWYgdHlwZS1vZigkbG9jYXRpb24pID09IG51bWJlciBhbmQgbm90KHVuaXRsZXNzKCRsb2NhdGlvbikpIHtcbiAgICAkd2lkdGg6ICRsb2NhdGlvbjtcbiAgfSBAZWxzZSBpZiAkbG9jYXRpb24ge1xuICAgICRwdXNoOiAkbG9jYXRpb24gLSAxO1xuICAgIEBpZiAkcHVzaCA+IDAge1xuICAgICAgJHB1c2g6IG1hcC1tZXJnZSgkaW5wdXQsIChcbiAgICAgICAgc3BhbjogJHB1c2gsXG4gICAgICAgIGxvY2F0aW9uOiAxLFxuICAgICAgICBzcHJlYWQ6IHdpZGUsXG4gICAgICApKTtcbiAgICAgICR3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHB1c2gpO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRpbnB1dCkgPT0gc3BsaXRcbiAgICAgIGFuZCBzdXN5LWdldChndXR0ZXJzLCAkaW5wdXQpID4gMCB7XG4gICAgJHdpZHRoOiBpZigkd2lkdGggPT0gbnVsbCwgZ3V0dGVycygkaW5wdXQpLCAkd2lkdGggKyBndXR0ZXJzKCRpbnB1dCkpO1xuICB9XG5cbiAgQHJldHVybiAkd2lkdGggb3IgMDtcbn1cbiIsIi8vIEdhbGxlcnkgU3ludGF4XG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBHYWxsZXJ5XG4vLyAtLS0tLS0tXG4vLyBDcmVhdGUgYW4gaXNvbGF0ZWQgZ2FsbGVyeVxuLy8gLSAkc3BhbiAgICAgICAgOiA8c3Bhbj5cbi8vIC0gWyRzZWxlY3Rvcl0gIDogY2hpbGQgfCBvZi10eXBlXG5AbWl4aW4gZ2FsbGVyeShcbiAgJHNwYW4sXG4gICRzZWxlY3RvcjogY2hpbGRcbikge1xuICAkaW5zcGVjdCAgICA6ICRzcGFuO1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkc3BhbiAgICAgICA6IG1hcC1tZXJnZSgkc3BhbiwgKGxvY2F0aW9uOiAxKSk7XG5cbiAgJG4gICAgICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGNvbHVtbnMgICAgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKTtcbiAgJGNvbnRleHQgICAgICA6IHN1c3ktY291bnQoJGNvbHVtbnMpO1xuICAkZmxvdyAgICAgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuXG4gICRpbnNpZGUgICAgICAgOiBpcy1pbnNpZGUoJHNwYW4pO1xuICAkZnJvbSAgICAgICAgIDogZnJvbSgkZmxvdyk7XG4gICRsaW5lICAgICAgICAgOiBmbG9vcigkY29udGV4dCAvICRuKTtcbiAgJHN5bW1ldHJpY2FsICA6IGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKTtcblxuICAkb3V0cHV0OiAoXG4gICAgd2lkdGggICAgICAgICAgICAgOiBudWxsLFxuICAgIGZsb2F0ICAgICAgICAgICAgIDogZnJvbSxcbiAgICBtYXJnaW4tYmVmb3JlICAgICA6IG51bGwsXG4gICAgbWFyZ2luLWFmdGVyICAgICAgOiBudWxsLFxuICAgIHBhZGRpbmctYmVmb3JlICAgIDogbnVsbCxcbiAgICBwYWRkaW5nLWFmdGVyICAgICA6IG51bGwsXG4gICAgZmxvdyAgICAgICAgICAgICAgOiAkZmxvdyxcbiAgKTtcblxuICBAaWYgJGluc2lkZSB7XG4gICAgJGd1dHRlcnM6IGdldC1ndXR0ZXJzKCRzcGFuKTtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoJG91dHB1dCwgKFxuICAgICAgcGFkZGluZy1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSksXG4gICAgICBwYWRkaW5nLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlciksXG4gICAgKSk7XG4gIH1cblxuICBAaWYgJHN5bW1ldHJpY2FsIHtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoJG91dHB1dCwgKHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkc3BhbikpKTtcbiAgfVxuXG4gICRib3ggICAgICAgICAgOiBzdXN5LWdldChib3gtc2l6aW5nLCAkc3Bhbik7XG4gICRnbG9iYWwtYm94ICAgOiBpZihzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgPT0gJ2JvcmRlci1ib3gnLCB0cnVlLCBmYWxzZSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGdhbGxlcnksICRpbnNwZWN0KTtcblxuICAvLyBDb2xsZWN0aXZlIE91dHB1dFxuICBAaWYgJGJveCA9PSBib3JkZXItYm94IG9yICgkaW5zaWRlIGFuZCBub3QoJGJveCkgYW5kIG5vdCgkZ2xvYmFsLWJveCkpIHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6IGJvcmRlci1ib3gpKTtcbiAgfSBAZWxzZSBpZiAkYm94ID09IGNvbnRlbnQtYm94IHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6IGNvbnRlbnQtYm94KSk7XG4gIH1cblxuICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICAvLyBJbmRpdmlkdWFsIExvb3BcbiAgQGZvciAkaXRlbSBmcm9tIDEgdGhyb3VnaCAkbGluZSB7XG4gICAgJG50aDogJyN7JGxpbmV9biArICN7JGl0ZW19JztcbiAgICAmOm50aC0jeyRzZWxlY3Rvcn0oI3skbnRofSkge1xuICAgICAgLy8gSW5kaXZpZHVhbCBQcmVwXG4gICAgICAkb3V0cHV0OiAoXG4gICAgICAgIHdpZHRoICAgICAgICAgICAgIDogaWYoJHN5bW1ldHJpY2FsLCBudWxsLCBnZXQtc3Bhbi13aWR0aCgkc3BhbikpLFxuICAgICAgICBmbG9hdCAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgIG1hcmdpbi1iZWZvcmUgICAgIDogZ2V0LWlzb2xhdGlvbigkc3BhbiksXG4gICAgICAgIG1hcmdpbi1hZnRlciAgICAgIDogLTEwMCUsXG4gICAgICAgIHBhZGRpbmctYmVmb3JlICAgIDogbnVsbCxcbiAgICAgICAgcGFkZGluZy1hZnRlciAgICAgOiBudWxsLFxuICAgICAgICBmbG93ICAgICAgICAgICAgICA6ICRmbG93LFxuICAgICAgKTtcblxuICAgICAgLy8gSW5kaXZpZHVhbCBPdXRwdXRcbiAgICAgIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gICAgICBAaWYgZ2V0LWVkZ2UoJHNwYW4pID09IGZpcnN0IHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWs7XG4gICAgICAgIEBpbmNsdWRlIGZpcnN0KCRzcGFuKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBAaW5jbHVkZSBub2JyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBJbmRpdmlkdWFsIExvY2F0aW9uIEluY3JlbWVudFxuICAgICAgJGxvY2F0aW9uOiBnZXQtbG9jYXRpb24oJHNwYW4pICsgJG47XG4gICAgICAkbG9jYXRpb246IGlmKCRsb2NhdGlvbiA+ICRjb250ZXh0LCAxLCAkbG9jYXRpb24pO1xuICAgICAgJHNwYW46IG1hcC1tZXJnZSgkc3BhbiwgKGxvY2F0aW9uOiAkbG9jYXRpb24pKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIFJvdyBTdGFydCAmIEVuZFxuLy8gPT09PT09PT09PT09PT09XG5cbi8vIEJyZWFrXG4vLyAtLS0tLVxuLy8gQXBwbHkgdG8gYW55IGVsZW1lbnQgdGhhdCBzaG91bGQgZm9yY2UgYSBsaW5lIGJyZWFrLlxuQG1peGluIGJyZWFrIHtcbiAgQGluY2x1ZGUgb3V0cHV0KChjbGVhcjogYm90aCkpO1xufVxuXG5cbi8vIE5vQnJlYWtcbi8vIC0tLS0tLS1cbi8vIENhbmNlbCB0aGUgYnJlYWsoKSBlZmZlY3QsIGUuZy4gd2hlbiB1c2luZyBtZWRpYSBxdWVyaWVzLlxuQG1peGluIG5vYnJlYWsge1xuICBAaW5jbHVkZSBvdXRwdXQoKGNsZWFyOiBub25lKSk7XG59XG5cblxuLy8gRnVsbFxuLy8gLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8bGF5b3V0IHNob3J0aGFuZD5cbkBtaXhpbiBmdWxsKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCA6ICRjb250ZXh0O1xuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZnVsbCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBzcGFuKGZ1bGwgb2YgcGFyc2UtZ3JpZCgkY29udGV4dCkgYnJlYWspO1xufVxuXG5cbi8vIEZpcnN0XG4vLyAtLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8c2V0dGluZ3M+XG5AbWl4aW4gZmlyc3QoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1ncmlkKCRjb250ZXh0KTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJGNvbnRleHQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChmaXJzdCwgJGluc3BlY3QpO1xuICBAaWYgbm90KGlzLXNwbGl0KCRjb250ZXh0KSkge1xuICAgIEBpbmNsdWRlIGZsb2F0LWZpcnN0KCRmbG93KTtcbiAgfVxufVxuXG5AbWl4aW4gYWxwaGEoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGZpcnN0KCRjb250ZXh0KTtcbn1cblxuXG4vLyBMYXN0XG4vLyAtLS0tXG4vLyAtIFskY29udGV4dF06IDxzZXR0aW5ncz5cbkBtaXhpbiBsYXN0KFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3JpZCgkY29udGV4dCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGxhc3QsICRpbnNwZWN0KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvdzogc3VzeS1nZXQoZmxvdywgJGNvbnRleHQpLFxuICAgIGxhc3QtZmxvdzogc3VzeS1nZXQobGFzdC1mbG93LCAkY29udGV4dCksXG4gICAgbWFyZ2luOiBpZihpcy1zcGxpdCgkY29udGV4dCksIG51bGwsIDApLFxuICApO1xuXG4gIEBpbmNsdWRlIGZsb2F0LWxhc3QoJG91dHB1dC4uLik7XG59XG5cbkBtaXhpbiBvbWVnYShcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgbGFzdCgkY29udGV4dCk7XG59XG5cblxuLy8gR2V0IEVkZ2Vcbi8vIC0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgZWRnZSB2YWx1ZSBiYXNlZCBvbiBsb2NhdGlvbiwgaWYgcG9zc2libGVcbkBmdW5jdGlvbiBnZXQtZWRnZShcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkZWRnZSAgICAgICA6IHN1c3ktZ2V0KGVkZ2UsICRzcGFuKTtcblxuICBAaWYgbm90KCRlZGdlKSB7XG4gICAgJGNvdW50OiBzdXN5LWNvdW50KHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKSk7XG4gICAgJGxvY2F0aW9uOiBzdXN5LWdldChsb2NhdGlvbiwgJHNwYW4pO1xuICAgICRuOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG5cbiAgICAkbnVtYmVyOiBpZih0eXBlLW9mKCRsb2NhdGlvbikgPT0gbnVtYmVyLCB0cnVlLCBmYWxzZSk7XG4gICAgJGluZGV4OiBpZigkbnVtYmVyIGFuZCB1bml0bGVzcygkbG9jYXRpb24pLCB0cnVlLCBmYWxzZSk7XG5cbiAgICBAaWYgJG4gPT0gJGNvdW50IHtcbiAgICAgICRlZGdlOiBmdWxsO1xuICAgIH0gQGVsc2UgaWYgJGxvY2F0aW9uIGFuZCAkbiBhbmQgJGluZGV4IHtcbiAgICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAgICRlZGdlOiBpZigkbiA9PSAkY291bnQsIGZ1bGwsIGZpcnN0KTtcbiAgICAgIH0gQGVsc2UgaWYgJGxvY2F0aW9uICsgJG4gLSAxID09ICRjb3VudCB7XG4gICAgICAgICRlZGdlOiBsYXN0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpZiAkZWRnZSA9PSBhbHBoYSBvciAkZWRnZSA9PSBvbWVnYSB7XG4gICAgJGVkZ2U6IGlmKCRlZGdlID09IGFscGhhLCBmaXJzdCwgbGFzdCk7XG4gIH1cblxuICBAcmV0dXJuICRlZGdlO1xufVxuXG5cbi8vIEdldCBMb2NhdGlvblxuLy8gLS0tLS0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgbG9jYXRpb24gdmFsdWUgYmFzZWQgb24gZWRnZSwgaWYgcG9zc2libGVcbkBmdW5jdGlvbiBnZXQtbG9jYXRpb24oXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJGxvY2F0aW9uICAgOiBzdXN5LWdldChsb2NhdGlvbiwgJHNwYW4pO1xuICAkZWRnZSAgICAgICA6IGdldC1lZGdlKCRzcGFuKTtcbiAgJG4gICAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG5cbiAgQGlmICRlZGdlIGFuZCBub3QoJGxvY2F0aW9uKSBhbmQgdHlwZS1vZigkbikgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkbikge1xuICAgIEBpZiAkZWRnZSA9PSBmaXJzdCB7XG4gICAgICAkbG9jYXRpb246IDE7XG4gICAgfSBAZWxzZSBpZiAkZWRnZSA9PSBsYXN0IHtcbiAgICAgICRsb2NhdGlvbjogc3VzeS1jb3VudChzdXN5LWdldChjb2x1bW5zLCAkc3BhbikpIC0gJG4gKyAxO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGxvY2F0aW9uXG59XG4iLCIvLyBGbG9hdCBFbmRzIEFQSVxuLy8gPT09PT09PT09PT09PT1cblxuLy8gU3VzeSBFbmQgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBsYXN0LWZsb3c6IHRvLFxuKSk7XG5cbi8vIEZsb2F0IExhc3Rcbi8vIC0tLS0tLS0tLS1cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1sYXN0KFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdyksXG4gICRsYXN0LWZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGxhc3QtZmxvdyksXG4gICRtYXJnaW46IDBcbikge1xuICAkdG86IHRvKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvYXQ6IGlmKCRsYXN0LWZsb3cgPT0gdG8sICR0bywgbnVsbCksXG4gICAgbWFyZ2luLSN7JHRvfTogJG1hcmdpbixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG5cbi8vIEZsb2F0IEZpcnN0XG4vLyAtLS0tLS0tLS0tLVxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LWZpcnN0KFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkb3V0cHV0OiAoXG4gICAgbWFyZ2luLSN7ZnJvbSgkZmxvdyl9OiAwLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi5zaXRlLWZvb3RlciB7XG4gIGNsZWFyOiBib3RoO1xuXG4gIG92ZXJmbG93IDphdXRvO1xuICBiYWNrZ3JvdW5kIDogY29sb3IocHJpbWFyeS1jb2xvci1kYXJrKTtcbiAgYm9yZGVyLXRvcCA6IDRweCBzb2xpZCBjb2xvcihhY2NlbnQtY29sb3IpO1xuXG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkdGFibGV0LXBvcnRyYWl0KSB7XG4gICAgaGVpZ2h0IDoyMmVtO1xuICB9XG59XG5cbi5mb290ZXItY29udGFpbmVyIHtcbiAgQGluY2x1ZGUgY29udGFpbmVyKCk7XG4gIEBpbmNsdWRlIHBhZChndXR0ZXIoKSk7XG4gIHBvc2l0aW9uIDpyZWxhdGl2ZTtcbn1cblxuLmZvb3Rlci1jb250YWluZXIgaDQsXG4uZm9vdGVyLWNvbnRhaW5lciBwLFxuLmZvb3Rlci1jb250YWluZXIgc3BhbiB7XG4gIGNvbG9yOiBjb2xvci1saWdodGVyKHByaW1hcnktY29sb3IsIDQpO1xufVxuXG4uZm9vdGVyLWNvbnRhaW5lciBoNCB7XG4gIGZvbnQtd2VpZ2h0IDoxMDA7XG59XG5cbi5mb290ZXItc2l0ZW1hcCxcbi5mb290ZXItaW5mb3MsXG4uZm9vdGVyLWNvbnRhY3Qge1xuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHRhYmxldC1wb3J0cmFpdCkge1xuICAgIEBpbmNsdWRlIHNwYW4oMyk7XG4gIH1cbn1cbi5mb290ZXItYWRlbGksXG4uZm9vdGVyLWxlZ2FsIHAge1xuICBmb250LWZhbWlseSA6ICRzYW5zLXNlcmlmO1xuICBmb250LXNpemUgOjFlbTtcbn1cbi5mb290ZXItYWRlbGkge1xuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHRhYmxldC1wb3J0cmFpdCkge1xuICAgIEBpbmNsdWRlIHNwYW4oMyBsYXN0KTtcbiAgfVxufVxuXG4uZm9vdGVyLWxlZ2FsIHtcbiAgY2xlYXI6IGxlZnQ7XG4gIHBvc2l0aW9uIDpyZWxhdGl2ZTtcbiAgdG9wOiAyZW07XG59XG5cbi5mb290ZXItbmF2IHtcbiAgcGFkZGluZy1sZWZ0IDowO1xuXG4gIGxpIHtcbiAgICBsaXN0LXN0eWxlLXR5cGUgOm5vbmU7XG4gICAgcGFkZGluZy1ib3R0b20gOjRweDtcbiAgICBhIHtcbiAgICAgIGNvbG9yOiBjb2xvci1saWdodGVyKHByaW1hcnktY29sb3IsIDQpO1xuICAgICAgdHJhbnNpdGlvbjogY29sb3IgLjNzO1xuICAgICAgJjpob3ZlciB7XG4gICAgICAgIG9wYWNpdHk6IC42O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5zcGFuW2l0ZW1wcm9wPVwicG9zdGFsQ29kZVwiXSB7XG4gIGZsb2F0IDpsZWZ0O1xuICBwYWRkaW5nLXJpZ2h0IDo0cHg7XG59XG5cbnNwYW5baXRlbXByb3A9J3RlbGVwaG9uZSddIHtcbiAgZm9udC1zaXplIDoxLjJlbTtcbn1cblxuc3BhbltpdGVtcHJvcF0ge1xuICBkaXNwbGF5IDpibG9jaztcbiAgcGFkZGluZy1ib3R0b20gOjRweDtcbn0iLCIkc3VzeTogKFxuICAgICAgICBjb250YWluZXI6IDE0NDBweCxcbiAgICAgICAgY29sdW1uczogMTIsXG4gICAgICAgIGd1dHRlcnM6IDEvNCxcbiAgICAgICAgY29sdW1uLXdpZHRoOiBmYWxzZSxcbiAgICAgICAgZ2xvYmFsLWJveC1zaXppbmc6IGNvbnRlbnQtYm94LFxuICAgICAgICBkZWJ1ZzogKFxuICAgICAgICAgICAgICAgIGltYWdlOiBoaWRlLFxuICAgICAgICAgICAgICAgIGNvbG9yOiByZ2JhKCNmZjRiNTQsIC40KSxcbiAgICAgICAgICAgICAgICBvdXRwdXQ6IGJhY2tncm91bmQsXG4gICAgICAgICAgICAgICAgdG9nZ2xlOiB0b3AgcmlnaHQsXG4gICAgICAgICksXG4gICAgICAgIHVzZS1jdXN0b206IChcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtb3B0aW9uczogZmFsc2UsXG4gICAgICAgICAgICAgICAgYm94LXNpemluZzogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjbGVhcmZpeDogZmFsc2UsXG4gICAgICAgICAgICAgICAgcmVtOiB0cnVlLFxuICAgICAgICApXG4pO1xuXG5AaW5jbHVkZSBib3JkZXItYm94LXNpemluZzsiLCIvLyBDb250YWluZXIgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cbi8vIENvbnRhaW5lciBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgY29udGFpbmVyIGVsZW1lbnRcbi8vIC0gWyRsYXlvdXRdICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBjb250YWluZXIoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgICAgOiAkbGF5b3V0O1xuICAkbGF5b3V0ICAgICA6IHBhcnNlLWdyaWQoJGxheW91dCk7XG5cbiAgJF93aWR0aCAgICAgOiBnZXQtY29udGFpbmVyLXdpZHRoKCRsYXlvdXQpO1xuICAkX2p1c3RpZnkgICA6IHBhcnNlLWNvbnRhaW5lci1wb3NpdGlvbihzdXN5LWdldChjb250YWluZXItcG9zaXRpb24sICRsYXlvdXQpKTtcbiAgJF9wcm9wZXJ0eSAgOiBpZihzdXN5LWdldChtYXRoLCAkbGF5b3V0KSA9PSBzdGF0aWMsIHdpZHRoLCBtYXgtd2lkdGgpO1xuXG4gICRfYm94ICAgICAgIDogc3VzeS1nZXQoYm94LXNpemluZywgJGxheW91dCk7XG5cbiAgQGlmICRfYm94IHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRfYm94KSk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoY29udGFpbmVyLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIGZsb2F0LWNvbnRhaW5lcigkX3dpZHRoLCAkX2p1c3RpZnksICRfcHJvcGVydHkpO1xuICBAaW5jbHVkZSBzaG93LWdyaWQoJGxheW91dCk7XG59XG5cbi8vIENvbnRhaW5lciBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGNvbnRhaW5lciB3aWR0aFxuLy8gLSBbJGxheW91dF0gIDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGNvbnRhaW5lcihcbiAgJGxheW91dDogJHN1c3lcbikge1xuICAkbGF5b3V0OiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICBAcmV0dXJuIGdldC1jb250YWluZXItd2lkdGgoJGxheW91dCk7XG59XG5cbi8vIEdldCBDb250YWluZXIgV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSB0aGUgY29udGFpbmVyIHdpZHRoXG4vLyAtIFskbGF5b3V0XTogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1jb250YWluZXItd2lkdGgoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGxheW91dCAgICAgICAgIDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgJF93aWR0aCAgICAgICAgIDogc3VzeS1nZXQoY29udGFpbmVyLCAkbGF5b3V0KTtcbiAgJF9jb2x1bW4td2lkdGggIDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkbGF5b3V0KTtcbiAgJF9tYXRoICAgICAgICAgIDogc3VzeS1nZXQobWF0aCwgJGxheW91dCk7XG5cbiAgQGlmIG5vdCgkX3dpZHRoKSBvciAkX3dpZHRoID09IGF1dG8ge1xuICAgIEBpZiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKSB7XG4gICAgICAkX2NvbHVtbnMgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRsYXlvdXQpO1xuICAgICAgJF9ndXR0ZXJzICAgOiBzdXN5LWdldChndXR0ZXJzLCAkbGF5b3V0KTtcbiAgICAgICRfc3ByZWFkICAgIDogaWYoaXMtc3BsaXQoJGxheW91dCksIHdpZGUsIG5hcnJvdyk7XG4gICAgICAkX3dpZHRoICAgICA6IHN1c3ktc3VtKCRfY29sdW1ucywgJF9ndXR0ZXJzLCAkX3NwcmVhZCkgKiAkX2NvbHVtbi13aWR0aDtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfd2lkdGg6IDEwMCU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3dpZHRoO1xufVxuXG4vLyBQYXJzZSBDb250YWluZXIgUG9zaXRpb25cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUGFyc2UgdGhlICRjb250YWluZXItcG9zaXRpb24gaW50byBtYXJnaW4gdmFsdWVzLlxuLy8gLSBbJGp1c3RpZnldICAgOiBsZWZ0IHwgY2VudGVyIHwgcmlnaHQgfCA8bGVuZ3RoPiBbPGxlbmd0aD5dXG5AZnVuY3Rpb24gcGFyc2UtY29udGFpbmVyLXBvc2l0aW9uKFxuICAkanVzdGlmeTogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgY29udGFpbmVyLXBvc2l0aW9uKVxuKSB7XG4gICRfcmV0dXJuOiBpZigkanVzdGlmeSA9PSBsZWZ0LCAwLCBhdXRvKSBpZigkanVzdGlmeSA9PSByaWdodCwgMCwgYXV0byk7XG5cbiAgQGlmIG5vdChpbmRleChsZWZ0IHJpZ2h0IGNlbnRlciwgJGp1c3RpZnkpKSB7XG4gICAgJF9yZXR1cm46IG50aCgkanVzdGlmeSwgMSk7XG4gICAgJF9yZXR1cm46ICRfcmV0dXJuIGlmKGxlbmd0aCgkanVzdGlmeSkgPiAxLCBudGgoJGp1c3RpZnksIDIpLCAkX3JldHVybik7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gU3VzeSBGYWxsYmFjayBDbGVhcmZpeFxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG5cbi8vIENsZWFyZml4XG4vLyAtLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG5AbWl4aW4gc3VzeS1jbGVhcmZpeCB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoY2xlYXJmaXgsIChtaXhpbjogY2xlYXJmaXgpKSB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIH0gQGVsc2Uge1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCIgXCI7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENPTlRBSU5FUlxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi5zaXRlLWhlYWRlciB7XG4gICAgaGVpZ2h0OiA0ZW07XG4gICAgYmFja2dyb3VuZDogY29sb3IocHJpbWFyeS1jb2xvci1kYXJrKTtcbn1cblxuLnNpdGUtaGVhZGVyLWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgY29udGFpbmVyKCk7XG59XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gTk9NXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLm5vbSB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgY29sb3I6IGNvbG9yKHByaW1hcnktY29sb3ItdGV4dCk7XG4gICAgZm9udC1mYW1pbHk6ICRzYW5zLXNlcmlmO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgbGluZS1oZWlnaHQ6IDRlbTtcblxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkdGFibGV0LXBvcnRyYWl0KSB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAuNWVtO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHRhYmxldC1wYXlzYWdlKSB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAyZW07XG4gICAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gTkFWSUdBVElPTlxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi5tYWluLW5hdiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGZsb2F0OiByaWdodDtcblxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkdGFibGV0LXBvcnRyYWl0KSB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogLjVlbTtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCR0YWJsZXQtcGF5c2FnZSkge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDFlbTtcbiAgICB9XG59XG5cbi5tYWluLW5hdl9fdWwge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogLTk5OTlweDtcbiAgICBtYXJnaW46IDA7XG4gICAgYmFja2dyb3VuZDogIzAwMDtcbiAgICB6LWluZGV4OiAxMDA7XG5cbiAgICAmLS1vcGVuIHtcbiAgICAgICAgd2lkdGg6IDI2MHB4O1xuICAgICAgICByaWdodDogLTcwcHg7XG4gICAgICAgIFxuXG4gICAgICAgIC5pY29uLWhvbWUge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkdGFibGV0LXBvcnRyYWl0KSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgfVxufVxuXG4ubWFpbi1uYXYgdWwgbGkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBsaW5lLWhlaWdodDogNGVtO1xuXG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCR0YWJsZXQtcG9ydHJhaXQpIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAuMmVtO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHRhYmxldC1wYXlzYWdlKSB7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDEuOWVtO1xuICAgIH1cblxuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbn1cblxuLm1haW4tbmF2IHVsIGxpIGEge1xuICAgIHRyYW5zaXRpb246IGNvbG9yIC4zcztcbiAgICBjb2xvcjogY29sb3IocHJpbWFyeS1jb2xvci1saWdodCk7XG4gICAgZm9udC1mYW1pbHk6ICRzYW5zLXNlcmlmO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGZvbnQtc2l6ZTogLjhlbTtcblxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkdGFibGV0LXBheXNhZ2UpIHtcbiAgICAgICAgZm9udC1zaXplOiAxZW07XG4gICAgfVxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogY29sb3ItbGlnaHRlcihwcmltYXJ5LWNvbG9yLCA2KTtcbiAgICB9XG59XG5cbi5tYWluLW5hdiB1bCB1bCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNjRweDtcbiAgICBsZWZ0OiA5OTk5cHg7XG4gICAgd2lkdGg6IDIzNXB4O1xuICAgIGhlaWdodDogMDtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgYmFja2dyb3VuZDogY29sb3ItZGFya2VyKHByaW1hcnktY29sb3ItZGFyaywgMik7XG4gICAgei1pbmRleDogMTAwO1xuICAgIGxpIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAuM3MgZWFzZS1pbjtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBjb2xvcihwcmltYXJ5LWNvbG9yKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMWVtO1xuICAgIH1cbn1cblxuLmRyb3Bkb3duIHtcbiAgICB0cmFuc2l0aW9uOiBoZWlnaHQgLjE1cyBlYXNlLWluO1xufVxuXG4jaGFzLWRyb3Bkb3duOjphZnRlciB7XG4gICAgcGFkZGluZy1sZWZ0OiA0cHg7XG4gICAgY29sb3I6IGNvbG9yKHByaW1hcnktY29sb3ItbGlnaHQpO1xuICAgIGZvbnQtZmFtaWx5OiBpY29tb29uO1xuICAgIGNvbnRlbnQ6ICdcXGU5MDMnO1xufVxuXG4jaGFzLWRyb3Bkb3duOmhvdmVyIC5kcm9wZG93biB7XG4gICAgbGVmdDogLTRweDtcbiAgIFxuICAgIGxpIHtcbiAgICAgICAgYmFja2dyb3VuZDogY29sb3ItZGFya2VyKHByaW1hcnktY29sb3ItZGFyaywgMik7XG4gICAgICAgIG9wYWNpdHk6IDE7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBjb2xvcihwcmltYXJ5LWNvbG9yKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmljb24taG9tZSB7XG4gICAgd2lkdGg6IDMwcHg7XG4gICAgaGVpZ2h0OiAzMHB4O1xufVxuXG4uaG9tZS1zdmcge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDVweDtcbiAgICBsZWZ0OiAtMTVweDtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEhFUk9cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4uaGVybyB7XG4gICAgXG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCR0YWJsZXQtcG9ydHJhaXQpIHtcbiAgICBoZWlnaHQ6IDMyZW07XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1heC13aWR0aDogMTQ0MHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIGJhY2tncm91bmQ6IHVybCgnLi9pbWFnZXMvYm9vay1ob21lLmpwZycpIG5vLXJlcGVhdCBjZW50ZXIgYm90dG9tIC8gY292ZXI7XG4gICAgfVxufVxuXG5cbi5zaXRlLWhlYWRlci0tZml4ZWQge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgbGVmdDogMDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgLjRzO1xuICAgIGJhY2tncm91bmQ6IGNvbG9yLW9wYShwcmltYXJ5LWNvbG9yLCAuOSk7XG4gICAgei1pbmRleDogMTAwO1xufVxuIiwiLnBhZ2UtYXNpZGUge1xuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkdGFibGV0LXBvcnRyYWl0KSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDEwMHZoO1xuICAgICAgICBtYXJnaW4tdG9wOiBndXR0ZXIoKTtcbiAgICAgICAgcGFkZGluZzogMCBndXR0ZXIoKTtcbiAgICAgICAgYmFja2dyb3VuZDogY29sb3Itb3BhKHByaW1hcnktY29sb3ItbGlnaHQsIC4yKTtcblxuICAgICAgICBAaW5jbHVkZSBzcGFuKDQgbGFzdCk7XG4gICAgfVxufVxuIiwiYm9keSB7XG4gICAgYmFja2dyb3VuZDogY29sb3IocHJpbWFyeS1jb2xvci1saWdodCk7XG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xufVxuXG4ucGFnZS13cmFwcGVyIHtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xuICAgIEBpbmNsdWRlIGNvbnRhaW5lcigpO1xufVxuXG4ubWFpbi1jb250ZW50ICxcbi5wYWdlLW1haW4ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoIC0gMjJlbSk7IC8vIHN0aWNreSBmb290ZXIgaGVhZGVyICsgZm9vdGVyIGhlaWdodFxuICAgIHBhZGRpbmc6IGd1dHRlcigpO1xufVxuXG4ucGFnZS1tYWluIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHRhYmxldC1wb3J0cmFpdCkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDgpO1xuICAgIH1cbn1cblxuLmZ1bGwtcGFnZS1pbnRybyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHdpZHRoOiA1MDBweDtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICB6LWluZGV4OiAxOztcbn1cblxuLnBhZ2UtbWFpbi1uby1zYiB7XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCR0YWJsZXQtcG9ydHJhaXQpIHtcbiAgICAgICAgbWFyZ2luLXRvcDogZ3V0dGVyKCk7XG4gICAgICAgIHBhZGRpbmc6IGd1dHRlcigpO1xuICAgIH1cbn1cblxuLnBhZ2UtaGFsZi1sZWZ0ICxcbi5wYWdlLWhhbGYtcmlnaHQge1xuICAgIHBhZGRpbmc6IGd1dHRlcigpO1xuICAgIGgyIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cbn1cblxuLnBhZ2UtaGFsZi1sZWZ0IHtcbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHRhYmxldC1wYXlzYWdlKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oNik7XG4gICAgfVxufVxuXG4ucGFnZS1oYWxmLXJpZ2h0IHtcbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHRhYmxldC1wYXlzYWdlKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oNiBsYXN0KTtcbiAgICB9XG59XG5cbmltZyB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xufVxuXG4ucGFnZS1pbWFnZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIG1hcmdpbjogMTAlIDE1JTtcbiAgICBib3JkZXI6IDIwcHggc29saWQgY29sb3IocHJpbWFyeS1jb2xvci1saWdodCk7XG4gICAgb3V0bGluZTogMTBweCBzb2xpZCByZ2JhKDAsIDAsIDAsIC42KTtcblxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkdGFibGV0LXBvcnRyYWl0KSB7XG4gICAgICAgIG1hcmdpbjogNSUgMzAlO1xuICAgIH1cbiAgICBpbWcge1xuICAgICAgICBkaXNwbGF5OiBibG9jazsgLy8gaW1wb3J0YW50IHBvdXIgbGUgZ2FwIGQnMXB4IGVuIGJhcyAhXG4gICAgfVxuICAgICYtbGFyZ2Uge1xuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHRhYmxldC1wb3J0cmFpdCkge1xuICAgICAgICAgICAgbWFyZ2luOiA1JSAyMCU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLS1zaWRlYmFyIHtcbiAgICAgIG1hcmdpbjogMmVtIDUlO1xuICAgIH1cbn1cblxuLmltZy1jb21tZW50IHtcbiAgICB3aWR0aDogYXV0bztcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgbWFyZ2luOiAwIDI1JTtcbiAgICBwYWRkaW5nOiAxZW0gMS41ZW07XG4gICAgYmFja2dyb3VuZDogY29sb3ItbGlnaHRlcihwcmltYXJ5LWNvbG9yLCA5KTtcbiAgICBiYWNrZ3JvdW5kOiAjNjY2NjY2O1xuICAgIG91dGxpbmU6IDVweCBzb2xpZCAjREJDQkM4O1xuICAgIG91dGxpbmUtb2Zmc2V0OiAtMTBweDtcbiAgICBjb2xvcjogbGlnaHRlbigjREJDQkM4LCAxMCk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgJi0tc2lkZWJhciB7XG4gICAgICBtYXJnaW46IDFlbSAwO1xuICAgIH1cbiAgICBcbiAgICBjaXRlIHtcbiAgICAgICAgcGFkZGluZzogZ3V0dGVyKCk7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGJhY2tncm91bmQ6IGNvbG9yLW9wYShwcmltYXJ5LWNvbG9yLCAuMSk7XG4gICAgICAgICY6YmVmb3JlICxcbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ucGxhbnBob3RvIHtcbiAgICBtYXJnaW46IDNlbSAwO1xuICAgIHBhZGRpbmc6IGd1dHRlcigpO1xuICAgIGJhY2tncm91bmQ6IGNvbG9yKHByaW1hcnktY29sb3ItbGlnaHQpO1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIGltZyB7XG4gICAgICAgICY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHRhYmxldC1wb3J0cmFpdCkge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHNwYW4oNik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgJjpsYXN0LW9mLXR5cGUge1xuICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCR0YWJsZXQtcG9ydHJhaXQpIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBzcGFuKDYgbGFzdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5oYXMtYm9yZGVyIHtcbiAgICBtYXJnaW4tdG9wOiBndXR0ZXIoKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZWVlO1xufVxuXG4ucGFnZS1vbmUtdGhpcmQge1xuICAgIHBhZGRpbmc6IGd1dHRlcigpO1xuXG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCR0YWJsZXQtcGF5c2FnZSkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDQpO1xuICAgIH1cbn1cblxuLnBhZ2Utb25lLXRoaXJkLWxhc3Qge1xuICAgIHBhZGRpbmc6IGd1dHRlcigpO1xuXG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCR0YWJsZXQtcGF5c2FnZSkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDQgbGFzdCk7XG4gICAgfVxufVxuXG4uYnJlYWsge1xuICAgIEBpbmNsdWRlIGJyZWFrO1xufVxuXG4uZ2FsbGVyeSB7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG59XG5cbi5nYWxsZXJ5IC5ibG9jLWdhbGxlcnkge1xuICAgIHBhZGRpbmc6IGd1dHRlcigpO1xuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkdGFibGV0LXBvcnRyYWl0KSB7XG4gICAgICAgIEBpbmNsdWRlIGdhbGxlcnkoNik7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRkZXNrdG9wKSB7XG4gICAgICAgIEBpbmNsdWRlIGdhbGxlcnkoNik7XG4gICAgfVxufVxuXG4jeXRwbGF5ZXIge1xuICAgIG1hcmdpbjogNGVtIGF1dG87XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG4iLCIubG9yZW0ge1xuXHRjb2xvcjogb3JhbmdlO1xuXHRmb250LXdlaWdodDogNzAwO1xufSIsIi5hbmltLW1vdCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbWluLXdpZHRoOiAxNTBweDtcbiAgICBtYXgtd2lkdGg6IDIwMHB4O1xuICAgIHBhZGRpbmc6IDEwcHggMTVweDtcbiAgICBib3JkZXI6IDNweCBzb2xpZCAjYWFjYjc3O1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBiYWNrZ3JvdW5kOiAjMmJhMWFhO1xuICAgIGNvbG9yOiAjZmVmZWZlO1xuICAgIGZvbnQtZmFtaWx5OiAkc2Fucy1zZXJpZjtcbiAgICBmb250LXNpemU6IDEuMmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDFweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHRhYmxldC1wb3J0cmFpdCkge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG59XG4vLyBzdmcgY29udGFpbnRlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi5wYWdlLW1haW4tc3ZnIHtcbiAgICBtYXJnaW46IDRlbSAwIDRlbTtcbiAgICBzdmcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgfVxufVxuXG4vLyBGb290cHJpbnRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuI3N2Zy1mb290cHJpbnRzIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMzAwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG59XG4uZm9vdCB7XG4gICAgb3BhY2l0eTogMDtcblxuICAgIGZpbGw6ICMwMGJjZDc7XG59XG5cbi8vIFRyYXVtYVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiN0cmF1bWEtY29ldXIge1xuICAgIHdpZHRoOiAxNDVweDtcbn1cblxuI2NvZXVyIHtcbiAgICBmaWxsOiBub25lO1xuICAgIHN0cm9rZTogcmVkO1xuICAgIHN0cm9rZS13aWR0aDogM3B4O1xufVxuXG4jcGFuc2VtZW50ICxcbi5wYW5zZW1lbnQtcG9pbnQge1xuICAgIG9wYWNpdHk6IDA7XG59XG5cbiNwYW5zZW1lbnQge1xuICAgIHN0cm9rZTogbm9uZTtcbiAgICBmaWxsOiBjb2xvcihhY2NlbnQtY29sb3IpO1xufVxuXG4ucGFuc2VtZW50LXBvaW50IHtcbiAgICBmaWxsOiBjb2xvci1kYXJrZXIoYWNjZW50LWNvbG9yLCAyKTtcbn1cblxuLy8gRG91bGV1clxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiNkb3VsZXVyLWNocm9uaXF1ZSB7XG4gICAgd2lkdGg6IDIwMHB4O1xufVxuXG4uYWlndWlsbGUge1xuICAgIG9wYWNpdHk6IDA7XG59XG5cbi5idXR0b25zIHtcbiAgICB3aWR0aDogMjgwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG59XG5cbi5wbGF5LWdzYXAtYnV0dG9uLFxuLnBsYXktZ3NhcC1idXR0b24tMixcbi5yZWxhbmNlciB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOiAxMjBweDtcbiAgICBtYXJnaW46IDAgYXV0byAzZW07XG4gICAgcGFkZGluZzogNXB4O1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgLjNzO1xuICAgIFxuICAgIGNvbG9yOiAjZmZmO1xuICAgIGZvbnQtZmFtaWx5OiAkc2Fucy1zZXJpZjtcbiAgICBmb250LXdlaWdodDogMTAwO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICY6aG92ZXIge1xuICAgICAgICBvcGFjaXR5OiAuODtcbiAgICB9XG59XG5cbi5wbGF5LWdzYXAtYnV0dG9uLFxuLnBsYXktZ3NhcC1idXR0b24tMiB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgY29sb3IoYWNjZW50LWNvbG9yKSwgY29sb3ItbGlnaHRlcihhY2NlbnQtY29sb3IsIDMpKTtcbn1cblxuLnJlbGFuY2VyIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCBjb2xvcihhY2NlbnQtY29sb3IpLCBjb2xvci1saWdodGVyKGFjY2VudC1jb2xvciwgMykpO1xufVxuLnN2Zy1ncmFwaCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHdpZHRoOiA1MDBweDtcbiAgICBtYXJnaW46IDAgYXV0bztcbn1cblxuJGhmLXdpZHRoOiAyNXB4O1xuXG4uaG9tbWVzIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiA4N3B4O1xuICAgIHdpZHRoOiAkaGYtd2lkdGg7XG4gICAgYmFja2dyb3VuZDogIzRmN2U4YztcbiAgICAmLTEge1xuICAgICAgICBsZWZ0OiA2NnB4ICsgJGhmLXdpZHRoO1xuICAgIH1cbiAgICAmLTIge1xuICAgICAgICBsZWZ0OiAxMzhweCArICRoZi13aWR0aDtcbiAgICB9XG4gICAgJi0zIHtcbiAgICAgICAgbGVmdDogMjA5cHggKyAkaGYtd2lkdGg7XG4gICAgfVxuICAgICYtNCB7XG4gICAgICAgIGxlZnQ6IDI4MXB4ICsgJGhmLXdpZHRoO1xuICAgIH1cbiAgICAmLTUge1xuICAgICAgICBsZWZ0OiAzNTBweCArICRoZi13aWR0aDtcbiAgICB9XG59XG5cbi5mZW1tZXMge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IDg3cHg7XG4gICAgd2lkdGg6ICRoZi13aWR0aDtcbiAgICBiYWNrZ3JvdW5kOiAjZGI4OWI0O1xuICAgICYtMSB7XG4gICAgICAgIGxlZnQ6IDY2cHg7XG4gICAgfVxuICAgICYtMiB7XG4gICAgICAgIGxlZnQ6IDEzOHB4O1xuICAgIH1cbiAgICAmLTMge1xuICAgICAgICBsZWZ0OiAyMDlweDtcbiAgICB9XG4gICAgJi00IHtcbiAgICAgICAgbGVmdDogMjgxcHg7XG4gICAgfVxuICAgICYtNSB7XG4gICAgICAgIGxlZnQ6IDM1MHB4O1xuICAgIH1cbn1cbiRhbGNvLXdpZHRoOiA1NXB4O1xuLmFsY28ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IDY1cHg7XG4gICAgcGFkZGluZy10b3A6IDFlbTtcbiAgICB3aWR0aDogJGFsY28td2lkdGg7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICYtMCB7XG4gICAgICAgIGxlZnQ6IDEwMHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiAjQTE1QTNFO1xuXG4gICAgfVxuICAgICYtMSB7XG4gICAgICAgIGxlZnQ6IDEwMHB4ICsgJGFsY28td2lkdGg7XG4gICAgICAgIGJhY2tncm91bmQ6ICMwRjg5MUU7XG4gICAgfVxuICAgICYtMiB7XG4gICAgICAgIGxlZnQ6IDEwMHB4ICsgKCRhbGNvLXdpZHRoICogMik7XG4gICAgICAgIGJhY2tncm91bmQ6ICNGRjAwMDA7XG4gICAgfVxuICAgICYtMyB7XG4gICAgICAgIGxlZnQ6IDEwMHB4ICsgKCRhbGNvLXdpZHRoICogMyk7XG4gICAgICBcbiAgICAgICAgYmFja2dyb3VuZDogIzAwNjdBMDtcbiAgICB9XG4gICAgJi00IHtcbiAgICAgICAgbGVmdDogMTAwcHggKyAoJGFsY28td2lkdGggKiA0KTtcbiAgICBcbiAgICAgICAgYmFja2dyb3VuZDogI0NGMjhDNTtcbiAgICB9XG59XG4iLCJAZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdpY29tb29uJztcbiAgc3JjOiAgICB1cmwoJ2ZvbnRzL2ljb21vb24uZW90PzNwNzZuNCcpO1xuICBzcmM6ICAgIHVybCgnZm9udHMvaWNvbW9vbi5lb3Q/M3A3Nm40I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLFxuICB1cmwoJ2ZvbnRzL2ljb21vb24ud29mZjI/M3A3Nm40JykgZm9ybWF0KCd3b2ZmMicpLFxuICB1cmwoJ2ZvbnRzL2ljb21vb24udHRmPzNwNzZuNCcpIGZvcm1hdCgndHJ1ZXR5cGUnKSxcbiAgdXJsKCdmb250cy9pY29tb29uLndvZmY/M3A3Nm40JykgZm9ybWF0KCd3b2ZmJyksXG4gIHVybCgnZm9udHMvaWNvbW9vbi5zdmc/M3A3Nm40I2ljb21vb24nKSBmb3JtYXQoJ3N2ZycpO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG59XG5cbmkge1xuICAvKiB1c2UgIWltcG9ydGFudCB0byBwcmV2ZW50IGlzc3VlcyB3aXRoIGJyb3dzZXIgZXh0ZW5zaW9ucyB0aGF0IGNoYW5nZSBmb250cyAqL1xuICBmb250LWZhbWlseTogJ2ljb21vb24nICFpbXBvcnRhbnQ7XG4gIHNwZWFrOiBub25lO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtdmFyaWFudDogbm9ybWFsO1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgbGluZS1oZWlnaHQ6IDE7XG5cbiAgLyogQmV0dGVyIEZvbnQgUmVuZGVyaW5nID09PT09PT09PT09ICovXG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xufVxuXG4uaWNvbi1lbnZlbG9wOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxlOTA2XCI7XG59XG4uaWNvbi1waG9uZS1vdXRnb2luZzpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZTkwN1wiO1xufVxuLmljb24tcXVvdGVzLXJpZ2h0OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxlOTA0XCI7XG59XG4uaWNvbi1xdW90ZXMtbGVmdDpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZTkwNVwiO1xufVxuLmljb24tdHJpYW5nbGUtZG93bjpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZTkwM1wiO1xufVxuLmljb24taW5mbzpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZTkwMlwiO1xufVxuLmljb24tYXJyb3ctY2lyY2xlLXJpZ2h0OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxlOTAwXCI7XG59XG4uaWNvbi1ob21lOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxlOTAxXCI7XG59XG5cbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ== */
