/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */
/* Document
   ========================================================================== */
/**
 * 1. Correct the line height in all browsers.
 * 2. Prevent adjustments of font size after orientation changes in
 *    IE on Windows Phone and in iOS.
 */
html {
  line-height: 1.15;
  /* 1 */
  -ms-text-size-adjust: 100%;
  /* 2 */
  -webkit-text-size-adjust: 100%;
  /* 2 */ }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

sub {
  bottom: -0.25em; }

sup {
  top: -0.5em; }

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

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

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

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

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

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

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

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

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

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

/**
 * Correct the padding in Firefox.
 */
fieldset {
  padding: 0.35em 0.75em 0.625em; }

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

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

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

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

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

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

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

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

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

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

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

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

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

body {
  font-family: "Muli", sans-serif;
  letter-spacing: 0.0075em;
  overflow-x: hidden;
  font-size: 17px;
  color: #333;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale; }

p {
  line-height: 25px; }
  @media only screen and (min-width: 1600px) {
    p {
      line-height: 30px; } }

a {
  text-decoration: none;
  color: #fafafa; }

li {
  font-family: "Muli", sans-serif;
  line-height: 20px; }

h1, h2, h3, h4, h5, h6 {
  font-family: "Merriweather", serif;
  line-height: 1.3em;
  letter-spacing: .01em; }

ul {
  list-style-type: none;
  padding: 0; }

.nav-style {
  transition: all 0.2s ease-in-out; }
  .nav-style:hover {
    color: #333;
    transform: translateY(-0.09em);
    opacity: 0.8; }
  .nav-style:visited {
    color: #fafafa; }
    .nav-style:visited:active {
      color: #333; }

::selection {
  background-color: #d687b1;
  color: #fafafa; }

hr {
  border: 0;
  height: 2px;
  background-image: linear-gradient(to right, #FEAC5E, #d687b1, #C779D0, #4BC0C8); }

@keyframes fade {
  0% {
    transform: scale(1); }
  50% {
    opacity: 0.7; }
  100% {
    transform: rotate(360deg) scale(2);
    opacity: 1; } }

@keyframes hover {
  from {
    transform: translateY(0.2em); }
  to {
    color: translateY(-0.2em); } }

@keyframes spinmerightround {
  0% {
    color: #d687b1;
    transform: rotate(0deg); }
  100% {
    color: #663399;
    transform: rotate(720deg); } }

nav {
  background: #FEAC5E;
  /* fallback for old browsers */
  background: -webkit-linear-gradient(to right, #4BC0C8, #C779D0, #FEAC5E);
  /* Chrome 10-25, Safari 5.1-6 */
  background: linear-gradient(to right, #4BC0C8, #C779D0, #FEAC5E);
  /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */
  height: 60px;
  position: relative;
  width: 100%;
  z-index: 1;
  -webkit-transition: .13s all;
  transition: .13s all;
  box-shadow: 1px 1px 1px 1px #ddd; }

.left {
  font-size: 1.6em;
  -webkit-text-stroke-width: .5px;
  font-family: "Karla", sans-serif;
  transform: skewX(-3deg); }
  .left .bud {
    color: #ea4944; }
  .left .green {
    color: #326d32; }

@media only screen and (max-width: 550px) {
  .left {
    display: none; } }

nav,
nav ul {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  justify-content: center;
  align-items: center; }

nav ul {
  height: 100%;
  width: 95%; }

nav ul li {
  list-style: none;
  margin-right: 20px; }

nav li:first-child {
  margin-right: auto; }

@media screen and (min-width: 550px) {
  .home {
    display: none; } }

.mainNav:hover {
  color: #d687b1;
  background-color: red;
  opacity: .1; }

.contact-button, .form-button, .more-work-wrapper .more-work, .project-links a {
  background-color: #fafafa;
  padding: 10px 15px;
  border-radius: 20px;
  color: #333;
  transition: 0.3s all ease-in-out; }
  .contact-button:hover, .form-button:hover, .more-work-wrapper .more-work:hover, .project-links a:hover {
    box-shadow: 0 2px 10px -1px #cc8400;
    background-color: #fff6e6; }

.form-button, .more-work-wrapper .more-work, .project-links a {
  font-family: "Muli", sans-serif;
  display: flex;
  align-items: center;
  justify-content: center;
  border: none;
  text-align: center;
  border-radius: 25px;
  background-color: #663399;
  color: #fafafa;
  font-weight: bold;
  padding: 15px 40px;
  margin: 0 auto;
  cursor: pointer;
  outline: none;
  transition: 0.3s all ease-in-out; }
  .form-button:hover, .more-work-wrapper .more-work:hover, .project-links a:hover {
    background-color: #402060;
    box-shadow: 0 3px 10px -1px #663399;
    opacity: 0.9;
    color: #fafafa; }
  .form-button:active, .more-work-wrapper .more-work:active, .project-links a:active {
    transform: translateY(0.1em);
    box-shadow: 0 3px 10px -1px #663399; }

.more-work-wrapper {
  padding: 20px; }
  .more-work-wrapper .more-work {
    margin: 0 auto;
    color: white;
    background-color: #663399; }
    @media only screen and (min-width: 1600px) {
      .more-work-wrapper .more-work {
        width: 225px;
        padding: 20px 25px; } }
    .more-work-wrapper .more-work:hover {
      background-color: #8040bf;
      box-shadow: 0 2px 10px -1px #4d2673; }

.project-links a {
  padding: 10px;
  margin: 0 3px;
  width: 120px;
  color: #fafafa !important;
  font-size: 0.9em;
  background-color: #663399; }
  @media only screen and (min-width: 1600px) {
    .project-links a {
      font-size: 0.8em;
      padding: 15px;
      width: 50%; } }
  .project-links a:hover {
    background-color: #8040bf;
    box-shadow: 0 2px 10px -1px #4d2673; }

body {
  background-color: #fafafa; }

.welcome {
  background: whitesmoke;
  width: 100vw;
  height: 50%;
  position: absolute;
  z-index: -1;
  -webkit-transform: skew(0deg, -7deg);
  transform: skew(0deg, -7deg);
  padding: 26vh 0;
  margin-top: -150px;
  overflow: hidden; }
  .welcome .welcome-content {
    padding-top: 130px;
    margin: 0 auto;
    width: 70%;
    -webkit-transform: skew(0deg, 7deg);
    transform: skew(0deg, 7deg); }
  .welcome h1 {
    font-size: 3.6em; }
    @media only screen and (max-width: 550px) {
      .welcome h1 {
        font-size: 2.5em; } }
    @media only screen and (min-width: 1600px) {
      .welcome h1 {
        font-size: 5em; } }

canvas {
  transform: skew(0deg, 7deg);
  top: 0;
  left: 0;
  opacity: .5;
  position: absolute; }

.more-button {
  height: 85vh;
  display: flex;
  justify-content: center;
  align-items: flex-end; }
  .more-button .fa {
    font-size: 2em;
    color: #b3b3b3;
    animation: hover 750ms infinite alternate ease-in-out; }

.footer-icons {
  display: flex; }
  .footer-icons ul {
    width: 200px;
    list-style-type: none;
    position: absolute;
    bottom: 0;
    right: 0;
    display: flex;
    justify-content: space-between;
    margin-right: 2.5%;
    padding: 10px; }
    @media only screen and (max-width: 550px) {
      .footer-icons ul {
        flex-direction: column;
        align-items: flex-end;
        margin-right: 5%; } }
    .footer-icons ul li {
      margin: 0;
      font-size: 1.7em;
      line-height: 1.2em; }
    .footer-icons ul:last-child {
      padding-right: 0; }
    .footer-icons ul a, .footer-icons ul li {
      color: #663399; }
      .footer-icons ul a:hover, .footer-icons ul li:hover {
        animation: spinmerightround 550ms 1 forwards ease-in-out;
        opacity: 0.8; }

.content-wrapper {
  margin: 15px;
  padding: 20px;
  border-radius: 3px;
  background-color: #b38cd9;
  box-shadow: 10px 10px #424a6d; }
  .content-wrapper form {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: space-around; }
    .content-wrapper form .search-input {
      width: 50%;
      margin-left: auto;
      margin-right: auto;
      margin-bottom: 20px;
      border: 1px solid #292929;
      text-align: center;
      padding: 5px 10px;
      border-radius: 3px; }
    .content-wrapper form label {
      margin-top: 5%;
      color: #663399;
      background-color: #424a6d;
      box-shadow: 4px 5px #663399;
      border-radius: 4px;
      padding: 2%;
      font-family: "Muli", sans-serif;
      font-size: 2em;
      width: 70%;
      margin-right: auto;
      margin-left: auto; }
    .content-wrapper form input[type=text] {
      color: #424a6d;
      border: 3px solid #663399;
      font-size: 18px;
      background-color: #fafafa; }
      .content-wrapper form input[type=text]:focus {
        border: 3px solid #424a6d;
        border-bottom: #424a6d;
        box-shadow: none;
        background-color: #a679d2;
        color: #2f344d; }
    .content-wrapper form button {
      background: none;
      border: none;
      color: #424a6d;
      font-size: 40px;
      transition: all 0.4s ease-in-out; }
      .content-wrapper form button:focus, .content-wrapper form button:active, .content-wrapper form button:hover {
        outline: none;
        transform: scale(1.2);
        color: #663399;
        cursor: pointer; }

input::placeholder {
  color: #333; }

input:not([type]):focus:not([readonly]), input[type=text]:not(.browser-default):focus:not([readonly]) {
  border-bottom: 3px solid #424a6d;
  box-shadow: none; }

.result {
  padding: 5%; }
  .result li {
    line-height: 28px; }
  .result hr {
    border-top: 7px solid #424a6d;
    border-bottom: 3px solid #663399; }

#about {
  height: 100%;
  max-width: 960px;
  padding: 100px 0;
  margin: 10vh auto 0 auto;
  display: flex;
  flex-direction: column;
  justify-content: center; }
  @media only screen and (max-width: 800px) {
    #about {
      margin: 0 auto; } }
  @media only screen and (min-width: 1600px) {
    #about {
      max-width: 1300px;
      font-size: 1.3em; } }
  #about h2 {
    font-size: 2.2em;
    margin-bottom: 0; }
  #about h4 {
    font-size: .925em; }
  #about a {
    color: #663399;
    transition: 0.3s all ease-in-out; }
    #about a:hover {
      color: #d687b1; }
  @media only screen and (max-width: 800px) {
    #about {
      margin: 0 auto; } }
  #about .about-info {
    width: calc(100% - 40px);
    float: left;
    margin-left: 20px;
    max-height: 300px; }
    @media only screen and (max-width: 800px) {
      #about .about-info h2 {
        font-size: 1.2em; }
      #about .about-info h4 {
        font-size: 0.9em; } }
    #about .about-info .about-info-right {
      width: calc(25% - 25px);
      float: left;
      margin-left: 20px; }
      #about .about-info .about-info-right .image-wrapper .photo {
        max-width: 100%; }
      @media only screen and (max-width: 550px) {
        #about .about-info .about-info-right {
          width: calc(100% - 40px);
          float: left;
          margin-left: 20px;
          display: flex;
          justify-content: center; }
          #about .about-info .about-info-right img {
            width: 200px;
            height: 200px; } }
    #about .about-info .about-info-left {
      width: calc(75% - 35px);
      float: left;
      margin-left: 20px; }
      @media only screen and (max-width: 550px) {
        #about .about-info .about-info-left {
          width: calc(100% - 40px);
          float: left;
          margin-left: 20px; } }
  #about .col-wrapper {
    width: calc(100% - 40px);
    float: left;
    margin-left: 20px;
    display: flex;
    justify-content: space-between; }
    @media only screen and (max-width: 550px) {
      #about .col-wrapper {
        margin: 180px auto 0 auto;
        flex-direction: column; } }
    @media only screen and (max-width: 550px) {
      #about .col-wrapper .remove {
        margin-top: 50px; } }
    #about .col-wrapper .col {
      width: calc(33.33333% - 26.66667px);
      float: left;
      margin-left: 20px; }
      #about .col-wrapper .col strong {
        text-align: center;
        font-size: 1.1em;
        font-family: "Merriweather", serif; }
        #about .col-wrapper .col strong .col-img {
          margin-top: 3%;
          margin-bottom: -5px;
          width: 30px;
          transition: 0.3s all ease-in-out; }
          #about .col-wrapper .col strong .col-img:hover {
            transform: scale(1.05); }
      #about .col-wrapper .col ul {
        padding: 0; }
        #about .col-wrapper .col ul li {
          margin-bottom: 10px;
          list-style-type: none;
          padding: 0;
          font-size: 0.9em; }
      @media only screen and (max-width: 550px) {
        #about .col-wrapper .col {
          width: calc(100% - 40px);
          float: left;
          margin-left: 20px;
          margin-top: 10vh; } }
      @media only screen and (max-width: 800px) {
        #about .col-wrapper .col {
          width: calc(100% - 40px);
          float: left;
          margin-left: 20px;
          margin-top: 7vh; } }

#work {
  height: 100%;
  padding: 50px 0;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column; }
  @media only screen and (max-width: 800px) {
    #work {
      margin: 0 auto;
      padding: 0; } }
  @media only screen and (min-width: 1600px) {
    #work {
      font-size: 1.3em; } }
  #work .work-wrapper {
    max-width: 960px;
    margin: 0 auto; }
  #work h2 {
    font-size: 2em;
    text-align: center; }
  #work .work-container {
    margin: 0 auto;
    max-width: 960px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    width: 100%; }
    @media only screen and (min-width: 1600px) {
      #work .work-container .work-grid {
        width: 1300px;
        margin: 0 50%; } }
    #work .work-container .work-grid .project {
      padding-bottom: 1%;
      position: relative;
      top: 0;
      left: 0;
      transition: 0.3s all ease-in-out; }
      #work .work-container .work-grid .project:hover {
        transform: scale(1.0105);
        cursor: pointer;
        opacity: 0.85; }
      #work .work-container .work-grid .project img {
        width: 90%;
        display: block;
        margin: 0 auto;
        transition: 0.3s all ease-in-out; }
        @media only screen and (min-width: 1600px) {
          #work .work-container .work-grid .project img {
            width: 95%; } }
        #work .work-container .work-grid .project img:hover {
          box-shadow: 1px 1px 12px 1px #ccc; }
      #work .work-container .work-grid .project .responsive-image {
        max-width: 97%; }

@media screen and (min-width: 400px) {
  .work-grid {
    display: flex;
    flex-wrap: wrap;
    flex-direction: row;
    margin: 0 auto; }
  .project {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: center; } }

@media screen and (min-width: 550px) {
  .work-grid {
    width: 100%; }
    .work-grid .project {
      width: calc(100% / 2);
      margin: 0 auto; } }

@media screen and (min-width: 800px) {
  .work-grid {
    width: 100%; }
    .work-grid .project {
      width: calc(100% / 3); } }

.middle {
  transition: .5s ease-in-out;
  opacity: 0;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%); }

.project:hover .middle {
  opacity: 0.9;
  cursor: pointer; }

.project-text {
  background-color: #663399;
  color: white;
  font-size: .8em;
  padding: 10px 20px;
  border-radius: 20px; }

#contact-me {
  background: #FEAC5E;
  /* fallback for old browsers */
  background: -webkit-linear-gradient(to right, #4BC0C8, #C779D0, #FEAC5E);
  /* Chrome 10-25, Safari 5.1-6 */
  background: linear-gradient(to right, #4BC0C8, #C779D0, #FEAC5E);
  /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */
  height: 100%;
  padding: 100px 0;
  display: flex;
  justify-content: center;
  color: #fafafa; }
  #contact-me .contact-wrapper {
    width: calc(100% - 40px);
    float: left;
    margin-left: 20px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    max-width: 960px;
    margin: 0 auto; }
    @media only screen and (min-width: 1600px) {
      #contact-me .contact-wrapper {
        width: 1300px;
        font-size: 1.3em; } }
    #contact-me .contact-wrapper .bottom-icons {
      width: 200px; }
      #contact-me .contact-wrapper .bottom-icons ul {
        display: flex;
        justify-content: space-between;
        list-style-type: none;
        padding: 0; }
        #contact-me .contact-wrapper .bottom-icons ul li {
          margin: 0;
          padding: 0;
          font-size: 25px;
          transition: 0.3s all ease-in-out; }
          #contact-me .contact-wrapper .bottom-icons ul li a {
            color: #663399; }
          #contact-me .contact-wrapper .bottom-icons ul li:hover {
            opacity: 0.7;
            transform: translateY(-0.1em); }
    #contact-me .contact-wrapper h2 {
      font-size: 2em;
      text-align: center; }
    #contact-me .contact-wrapper p {
      text-align: center;
      font-size: 1.2em;
      width: 70%;
      max-width: 800px;
      margin: 0; }
    #contact-me .contact-wrapper form {
      margin: 0 auto;
      width: 60%; }
      @media only screen and (max-width: 800px) {
        #contact-me .contact-wrapper form {
          width: 80%; } }
      #contact-me .contact-wrapper form input, #contact-me .contact-wrapper form textarea {
        padding: 7px 5px;
        width: 95%;
        display: block;
        margin: 15px auto;
        border: 2px solid transparent;
        border-radius: 10px;
        outline: none;
        transition: 0.3s all ease-in-out; }
        #contact-me .contact-wrapper form input:focus, #contact-me .contact-wrapper form textarea:focus {
          border: 2px solid #663399;
          opacity: 0.8; }
      #contact-me .contact-wrapper form input {
        height: 25px; }
      #contact-me .contact-wrapper form input[type=text], #contact-me .contact-wrapper form input[type=email] {
        font-family: "Muli", sans-serif;
        font-size: 0.8em;
        letter-spacing: 0.0075em; }
      #contact-me .contact-wrapper form textarea {
        height: 100px;
        color: #333;
        font-family: "Muli", sans-serif;
        font-size: 0.8em;
        letter-spacing: 0.0075em; }

textarea::-webkit-input-placeholder {
  color: #333; }

textarea:-moz-placeholder {
  /* Firefox 18- */
  color: #333; }

textarea::-moz-placeholder {
  /* Firefox 19+ */
  color: #333; }

textarea:-ms-input-placeholder {
  color: #333; }

.next-prev-wrapper {
  margin: 25px auto 0 auto;
  display: flex;
  justify-content: flex-end;
  max-width: 960px;
  height: 100%; }
  @media only screen and (min-width: 1600px) {
    .next-prev-wrapper {
      max-width: 1300px;
      font-size: 1.3em; } }
  @media only screen and (max-width: 800px) {
    .next-prev-wrapper {
      justify-content: center; } }
  .next-prev-wrapper a {
    font-weight: bold;
    color: #663399;
    transition: 0.3s all ease-in-out; }
    .next-prev-wrapper a:hover {
      color: #4BC0C8; }
  .next-prev-wrapper .next-prev {
    display: flex;
    justify-content: space-between;
    width: 250px;
    margin-right: 50px;
    font-size: 0.8em; }
    .next-prev-wrapper .next-prev span {
      color: #4BC0C8; }
    @media only screen and (max-width: 800px) {
      .next-prev-wrapper .next-prev {
        margin-right: 0; } }
    @media only screen and (min-width: 1600px) {
      .next-prev-wrapper .next-prev {
        font-size: .675em; } }

#project {
  height: 100%;
  max-width: 960px;
  margin: 25px auto 0 auto;
  display: flex;
  flex-direction: column;
  justify-content: center; }
  @media only screen and (max-width: 800px) {
    #project {
      margin: 20px auto; } }
  @media only screen and (min-width: 1600px) {
    #project {
      max-width: 1300px;
      font-size: 1.3em; } }
  #project .project-wrapper {
    width: calc(100% - 40px);
    float: left;
    margin-left: 20px; }
    #project .project-wrapper h2, #project .project-wrapper h3 {
      margin-top: 0; }
    #project .project-wrapper h2, #project .project-wrapper h4 {
      margin-bottom: 0; }
    #project .project-wrapper h3 {
      font-size: 1.25em; }
    #project .project-wrapper h4 {
      font-size: 1.2em; }
    #project .project-wrapper h5 {
      font-size: 17px;
      margin-bottom: 0; }
    #project .project-wrapper a {
      color: #663399;
      transition: 0.3s all ease-in-out;
      font-weight: bold; }
      #project .project-wrapper a:hover {
        color: #4BC0C8; }
    #project .project-wrapper .project-left {
      margin-bottom: 50px;
      width: calc(75% - 35px);
      float: left;
      margin-left: 20px; }
      #project .project-wrapper .project-left h2, #project .project-wrapper .project-left h3 {
        text-align: center; }
      #project .project-wrapper .project-left h2 {
        font-size: 2.5em;
        color: #663399; }
      #project .project-wrapper .project-left .main-img {
        width: 100%; }
      #project .project-wrapper .project-left .secondary-img {
        width: 90%;
        margin: 0 5%; }
      #project .project-wrapper .project-left .main-img, #project .project-wrapper .project-left .secondary-img {
        transition: 0.3s all ease-in-out; }
        #project .project-wrapper .project-left .main-img:hover, #project .project-wrapper .project-left .secondary-img:hover {
          box-shadow: 1px 1px 12px 1px #ccc; }
      #project .project-wrapper .project-left .project-links {
        width: 260px;
        display: flex;
        justify-content: center;
        margin: 20px auto 0 auto; }
      #project .project-wrapper .project-left .highlight {
        font-weight: bold;
        font-size: 18px; }
      #project .project-wrapper .project-left .fa-check-circle {
        color: green; }
      @media only screen and (max-width: 800px) {
        #project .project-wrapper .project-left {
          width: calc(100% - 40px);
          float: left;
          margin-left: 20px; } }
    #project .project-wrapper .project-right {
      width: calc(25% - 25px);
      float: left;
      margin-left: 20px; }
      @media only screen and (max-width: 800px) {
        #project .project-wrapper .project-right {
          width: calc(100% - 40px);
          float: left;
          margin-left: 20px; } }
      #project .project-wrapper .project-right h3 {
        margin-bottom: -5px; }
      #project .project-wrapper .project-right ul li {
        color: #666;
        font-size: 0.85em;
        line-height: 1.4em; }
        #project .project-wrapper .project-right ul li a {
          font-weight: bold;
          color: #663399;
          transition: 0.3s all ease-in-out; }
          #project .project-wrapper .project-right ul li a:hover {
            color: #4BC0C8; }
      @media only screen and (max-width: 800px) {
        #project .project-wrapper .project-right .project-col {
          width: calc(33.33333% - 26.66667px);
          float: left;
          margin-left: 20px; } }
      @media only screen and (max-width: 550px) {
        #project .project-wrapper .project-right .project-col {
          width: calc(100% - 40px);
          float: left;
          margin-left: 20px;
          margin: 0; } }

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGVzLmNzcyIsInNvdXJjZXMiOlsic3R5bGVzLnNjc3MiLCJ2ZW5kb3JzL19tYWluLnNjc3MiLCJ2ZW5kb3JzL2JvdXJib24vX2JvdXJib24uc2NzcyIsInZlbmRvcnMvYm91cmJvbi9ib3VyYm9uL2hlbHBlcnMvX2J1dHRvbnMtbGlzdC5zY3NzIiwidmVuZG9ycy9ib3VyYm9uL2JvdXJib24vaGVscGVycy9fc2NhbGVzLnNjc3MiLCJ2ZW5kb3JzL2JvdXJib24vYm91cmJvbi9oZWxwZXJzL190ZXh0LWlucHV0cy1saXN0LnNjc3MiLCJ2ZW5kb3JzL2JvdXJib24vYm91cmJvbi9zZXR0aW5ncy9fc2V0dGluZ3Muc2NzcyIsInZlbmRvcnMvYm91cmJvbi9ib3VyYm9uL3ZhbGlkYXRvcnMvX2NvbnRhaW5zLnNjc3MiLCJ2ZW5kb3JzL2JvdXJib24vYm91cmJvbi92YWxpZGF0b3JzL19jb250YWlucy1mYWxzeS5zY3NzIiwidmVuZG9ycy9ib3VyYm9uL2JvdXJib24vdmFsaWRhdG9ycy9faXMtY29sb3Iuc2NzcyIsInZlbmRvcnMvYm91cmJvbi9ib3VyYm9uL3ZhbGlkYXRvcnMvX2lzLWxlbmd0aC5zY3NzIiwidmVuZG9ycy9ib3VyYm9uL2JvdXJib24vdmFsaWRhdG9ycy9faXMtbnVtYmVyLnNjc3MiLCJ2ZW5kb3JzL2JvdXJib24vYm91cmJvbi92YWxpZGF0b3JzL19pcy1zaXplLnNjc3MiLCJ2ZW5kb3JzL2JvdXJib24vYm91cmJvbi91dGlsaXRpZXMvX2Fzc2lnbi1pbnB1dHMuc2NzcyIsInZlbmRvcnMvYm91cmJvbi9ib3VyYm9uL3V0aWxpdGllcy9fY29tcGFjdC1zaG9ydGhhbmQuc2NzcyIsInZlbmRvcnMvYm91cmJvbi9ib3VyYm9uL3V0aWxpdGllcy9fZGlyZWN0aW9uYWwtcHJvcGVydHkuc2NzcyIsInZlbmRvcnMvYm91cmJvbi9ib3VyYm9uL3V0aWxpdGllcy9fZm9udC1zb3VyY2UtZGVjbGFyYXRpb24uc2NzcyIsInZlbmRvcnMvYm91cmJvbi9ib3VyYm9uL3V0aWxpdGllcy9fZ2FtbWEuc2NzcyIsInZlbmRvcnMvYm91cmJvbi9ib3VyYm9uL3V0aWxpdGllcy9fbGlnaHRuZXNzLnNjc3MiLCJ2ZW5kb3JzL2JvdXJib24vYm91cmJvbi91dGlsaXRpZXMvX2NvbnRyYXN0LXJhdGlvLnNjc3MiLCJ2ZW5kb3JzL2JvdXJib24vYm91cmJvbi91dGlsaXRpZXMvX3JldHJpZXZlLWJvdXJib24tc2V0dGluZy5zY3NzIiwidmVuZG9ycy9ib3VyYm9uL2JvdXJib24vdXRpbGl0aWVzL191bnBhY2stc2hvcnRoYW5kLnNjc3MiLCJ2ZW5kb3JzL2JvdXJib24vYm91cmJvbi9saWJyYXJ5L19ib3JkZXItY29sb3Iuc2NzcyIsInZlbmRvcnMvYm91cmJvbi9ib3VyYm9uL2xpYnJhcnkvX2JvcmRlci1yYWRpdXMuc2NzcyIsInZlbmRvcnMvYm91cmJvbi9ib3VyYm9uL2xpYnJhcnkvX2JvcmRlci1zdHlsZS5zY3NzIiwidmVuZG9ycy9ib3VyYm9uL2JvdXJib24vbGlicmFyeS9fYm9yZGVyLXdpZHRoLnNjc3MiLCJ2ZW5kb3JzL2JvdXJib24vYm91cmJvbi9saWJyYXJ5L19idXR0b25zLnNjc3MiLCJ2ZW5kb3JzL2JvdXJib24vYm91cmJvbi9saWJyYXJ5L19jbGVhcmZpeC5zY3NzIiwidmVuZG9ycy9ib3VyYm9uL2JvdXJib24vbGlicmFyeS9fY29udHJhc3Qtc3dpdGNoLnNjc3MiLCJ2ZW5kb3JzL2JvdXJib24vYm91cmJvbi9saWJyYXJ5L19lbGxpcHNpcy5zY3NzIiwidmVuZG9ycy9ib3VyYm9uL2JvdXJib24vbGlicmFyeS9fZm9udC1mYWNlLnNjc3MiLCJ2ZW5kb3JzL2JvdXJib24vYm91cmJvbi9saWJyYXJ5L19mb250LXN0YWNrcy5zY3NzIiwidmVuZG9ycy9ib3VyYm9uL2JvdXJib24vbGlicmFyeS9faGlkZS10ZXh0LnNjc3MiLCJ2ZW5kb3JzL2JvdXJib24vYm91cmJvbi9saWJyYXJ5L19oaWRlLXZpc3VhbGx5LnNjc3MiLCJ2ZW5kb3JzL2JvdXJib24vYm91cmJvbi9saWJyYXJ5L19tYXJnaW4uc2NzcyIsInZlbmRvcnMvYm91cmJvbi9ib3VyYm9uL2xpYnJhcnkvX21vZHVsYXItc2NhbGUuc2NzcyIsInZlbmRvcnMvYm91cmJvbi9ib3VyYm9uL2xpYnJhcnkvX292ZXJmbG93LXdyYXAuc2NzcyIsInZlbmRvcnMvYm91cmJvbi9ib3VyYm9uL2xpYnJhcnkvX3BhZGRpbmcuc2NzcyIsInZlbmRvcnMvYm91cmJvbi9ib3VyYm9uL2xpYnJhcnkvX3Bvc2l0aW9uLnNjc3MiLCJ2ZW5kb3JzL2JvdXJib24vYm91cmJvbi9saWJyYXJ5L19wcmVmaXhlci5zY3NzIiwidmVuZG9ycy9ib3VyYm9uL2JvdXJib24vbGlicmFyeS9fc2hhZGUuc2NzcyIsInZlbmRvcnMvYm91cmJvbi9ib3VyYm9uL2xpYnJhcnkvX3NpemUuc2NzcyIsInZlbmRvcnMvYm91cmJvbi9ib3VyYm9uL2xpYnJhcnkvX3N0cmlwLXVuaXQuc2NzcyIsInZlbmRvcnMvYm91cmJvbi9ib3VyYm9uL2xpYnJhcnkvX3RleHQtaW5wdXRzLnNjc3MiLCJ2ZW5kb3JzL2JvdXJib24vYm91cmJvbi9saWJyYXJ5L190aW1pbmctZnVuY3Rpb25zLnNjc3MiLCJ2ZW5kb3JzL2JvdXJib24vYm91cmJvbi9saWJyYXJ5L190aW50LnNjc3MiLCJ2ZW5kb3JzL2JvdXJib24vYm91cmJvbi9saWJyYXJ5L190cmlhbmdsZS5zY3NzIiwidmVuZG9ycy9ib3VyYm9uL2JvdXJib24vbGlicmFyeS9fdmFsdWUtcHJlZml4ZXIuc2NzcyIsInZlbmRvcnMvbmVhdC9fbmVhdC5zY3NzIiwidmVuZG9ycy9uZWF0L25lYXQvc2V0dGluZ3MvX3NldHRpbmdzLnNjc3MiLCJ2ZW5kb3JzL25lYXQvbmVhdC9mdW5jdGlvbnMvX3JldHJpZXZlLW5lYXQtc2V0dGluZ3Muc2NzcyIsInZlbmRvcnMvbmVhdC9uZWF0L2Z1bmN0aW9ucy9fbmVhdC1jb2x1bW4tZGVmYXVsdC5zY3NzIiwidmVuZG9ycy9uZWF0L25lYXQvZnVuY3Rpb25zL19uZWF0LWNvbHVtbi13aWR0aC5zY3NzIiwidmVuZG9ycy9uZWF0L25lYXQvZnVuY3Rpb25zL19uZWF0LWNvbHVtbi1yYXRpby5zY3NzIiwidmVuZG9ycy9uZWF0L25lYXQvZnVuY3Rpb25zL19uZWF0LWZsb2F0LWRpcmVjdGlvbi5zY3NzIiwidmVuZG9ycy9uZWF0L25lYXQvZnVuY3Rpb25zL19uZWF0LW1lcmdlLWRlZmF1bHRzLnNjc3MiLCJ2ZW5kb3JzL25lYXQvbmVhdC9mdW5jdGlvbnMvX25lYXQtb3Bwb3NpdGUtZGlyZWN0aW9uLnNjc3MiLCJ2ZW5kb3JzL25lYXQvbmVhdC9mdW5jdGlvbnMvX25lYXQtcGFyc2UtY29sdW1ucy5zY3NzIiwidmVuZG9ycy9uZWF0L25lYXQvZnVuY3Rpb25zL19uZWF0LXBhcnNlLW1lZGlhLnNjc3MiLCJ2ZW5kb3JzL25lYXQvbmVhdC9mdW5jdGlvbnMvX25lYXQtYXBwZW5kLWdyaWQtdmlzdWFsLnNjc3MiLCJ2ZW5kb3JzL25lYXQvbmVhdC9taXhpbnMvX2dyaWQtY29sbGFwc2Uuc2NzcyIsInZlbmRvcnMvbmVhdC9uZWF0L21peGlucy9fZ3JpZC1jb2x1bW4uc2NzcyIsInZlbmRvcnMvbmVhdC9uZWF0L21peGlucy9fZ3JpZC1jb250YWluZXIuc2NzcyIsInZlbmRvcnMvbmVhdC9uZWF0L21peGlucy9fZ3JpZC1tZWRpYS5zY3NzIiwidmVuZG9ycy9uZWF0L25lYXQvbWl4aW5zL19ncmlkLXB1c2guc2NzcyIsInZlbmRvcnMvbmVhdC9uZWF0L21peGlucy9fZ3JpZC1zaGlmdC5zY3NzIiwidmVuZG9ycy9uZWF0L25lYXQvbWl4aW5zL19ncmlkLXZpc3VhbC5zY3NzIiwiYWJzdHJhY3RzL19tYWluLnNjc3MiLCJhYnN0cmFjdHMvX2Z1bmN0aW9ucy5zY3NzIiwiYWJzdHJhY3RzL19taXhpbnMuc2NzcyIsImFic3RyYWN0cy9fdmFyaWFibGVzLnNjc3MiLCJiYXNlL19tYWluLnNjc3MiLCJiYXNlL19yZXNldC5zY3NzIiwiYmFzZS9fdHlwb2dyYXBoeS5zY3NzIiwiYmFzZS9fZ2xvYmFsLnNjc3MiLCJiYXNlL19rZXlmcmFtZXMuc2NzcyIsImNvbXBvbmVudHMvX21haW4uc2NzcyIsImNvbXBvbmVudHMvX2hlYWRlci5zY3NzIiwiY29tcG9uZW50cy9fYnV0dG9ucy5zY3NzIiwiY29tcG9uZW50cy9fY29udGFpbmVyLnNjc3MiLCJsYXlvdXQvX21haW4uc2NzcyIsImxheW91dC9fYmFja2dyb3VuZC5zY3NzIiwibGF5b3V0L19oZXJvLnNjc3MiLCJsYXlvdXQvX2NvbnRlbnQuc2NzcyIsInBhZ2VzL19tYWluLnNjc3MiLCJwYWdlcy9fYWJvdXQuc2NzcyIsInBhZ2VzL193b3JrLnNjc3MiLCJwYWdlcy9fY29udGFjdC5zY3NzIiwicGFnZXMvX3Byb2plY3QtZGV0YWlsLnNjc3MiLCJ0aGVtZXMvX21haW4uc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0IFwidmVuZG9ycy9tYWluXCI7XG5AaW1wb3J0IFwiYWJzdHJhY3RzL21haW5cIjtcbkBpbXBvcnQgXCJiYXNlL21haW5cIjtcbkBpbXBvcnQgXCJjb21wb25lbnRzL21haW5cIjtcbkBpbXBvcnQgXCJsYXlvdXQvbWFpblwiO1xuQGltcG9ydCBcInBhZ2VzL21haW5cIjtcbkBpbXBvcnQgXCJ0aGVtZXMvbWFpblwiO1xuIiwiQGltcG9ydCAnYm91cmJvbi9ib3VyYm9uJztcbkBpbXBvcnQgJ25lYXQvbmVhdCc7XG4iLCIvLyBCb3VyYm9uIDUuMC4wLWJldGEuN1xuLy8gaHR0cDovL2JvdXJib24uaW9cbi8vIENvcHlyaWdodCAyMDExIHRob3VnaHRib3QsIGluYy5cbi8vIE1JVCBMaWNlbnNlXG5cbkBpbXBvcnQgXCJib3VyYm9uL2hlbHBlcnMvYnV0dG9ucy1saXN0XCI7XG5AaW1wb3J0IFwiYm91cmJvbi9oZWxwZXJzL3NjYWxlc1wiO1xuQGltcG9ydCBcImJvdXJib24vaGVscGVycy90ZXh0LWlucHV0cy1saXN0XCI7XG5cbkBpbXBvcnQgXCJib3VyYm9uL3NldHRpbmdzL3NldHRpbmdzXCI7XG5cbkBpbXBvcnQgXCJib3VyYm9uL3ZhbGlkYXRvcnMvY29udGFpbnNcIjtcbkBpbXBvcnQgXCJib3VyYm9uL3ZhbGlkYXRvcnMvY29udGFpbnMtZmFsc3lcIjtcbkBpbXBvcnQgXCJib3VyYm9uL3ZhbGlkYXRvcnMvaXMtY29sb3JcIjtcbkBpbXBvcnQgXCJib3VyYm9uL3ZhbGlkYXRvcnMvaXMtbGVuZ3RoXCI7XG5AaW1wb3J0IFwiYm91cmJvbi92YWxpZGF0b3JzL2lzLW51bWJlclwiO1xuQGltcG9ydCBcImJvdXJib24vdmFsaWRhdG9ycy9pcy1zaXplXCI7XG5cbkBpbXBvcnQgXCJib3VyYm9uL3V0aWxpdGllcy9hc3NpZ24taW5wdXRzXCI7XG5AaW1wb3J0IFwiYm91cmJvbi91dGlsaXRpZXMvY29tcGFjdC1zaG9ydGhhbmRcIjtcbkBpbXBvcnQgXCJib3VyYm9uL3V0aWxpdGllcy9kaXJlY3Rpb25hbC1wcm9wZXJ0eVwiO1xuQGltcG9ydCBcImJvdXJib24vdXRpbGl0aWVzL2ZvbnQtc291cmNlLWRlY2xhcmF0aW9uXCI7XG5AaW1wb3J0IFwiYm91cmJvbi91dGlsaXRpZXMvZ2FtbWFcIjtcbkBpbXBvcnQgXCJib3VyYm9uL3V0aWxpdGllcy9saWdodG5lc3NcIjtcbkBpbXBvcnQgXCJib3VyYm9uL3V0aWxpdGllcy9jb250cmFzdC1yYXRpb1wiO1xuQGltcG9ydCBcImJvdXJib24vdXRpbGl0aWVzL3JldHJpZXZlLWJvdXJib24tc2V0dGluZ1wiO1xuQGltcG9ydCBcImJvdXJib24vdXRpbGl0aWVzL3VucGFjay1zaG9ydGhhbmRcIjtcblxuQGltcG9ydCBcImJvdXJib24vbGlicmFyeS9ib3JkZXItY29sb3JcIjtcbkBpbXBvcnQgXCJib3VyYm9uL2xpYnJhcnkvYm9yZGVyLXJhZGl1c1wiO1xuQGltcG9ydCBcImJvdXJib24vbGlicmFyeS9ib3JkZXItc3R5bGVcIjtcbkBpbXBvcnQgXCJib3VyYm9uL2xpYnJhcnkvYm9yZGVyLXdpZHRoXCI7XG5AaW1wb3J0IFwiYm91cmJvbi9saWJyYXJ5L2J1dHRvbnNcIjtcbkBpbXBvcnQgXCJib3VyYm9uL2xpYnJhcnkvY2xlYXJmaXhcIjtcbkBpbXBvcnQgXCJib3VyYm9uL2xpYnJhcnkvY29udHJhc3Qtc3dpdGNoXCI7XG5AaW1wb3J0IFwiYm91cmJvbi9saWJyYXJ5L2VsbGlwc2lzXCI7XG5AaW1wb3J0IFwiYm91cmJvbi9saWJyYXJ5L2ZvbnQtZmFjZVwiO1xuQGltcG9ydCBcImJvdXJib24vbGlicmFyeS9mb250LXN0YWNrc1wiO1xuQGltcG9ydCBcImJvdXJib24vbGlicmFyeS9oaWRlLXRleHRcIjtcbkBpbXBvcnQgXCJib3VyYm9uL2xpYnJhcnkvaGlkZS12aXN1YWxseVwiO1xuQGltcG9ydCBcImJvdXJib24vbGlicmFyeS9tYXJnaW5cIjtcbkBpbXBvcnQgXCJib3VyYm9uL2xpYnJhcnkvbW9kdWxhci1zY2FsZVwiO1xuQGltcG9ydCBcImJvdXJib24vbGlicmFyeS9vdmVyZmxvdy13cmFwXCI7XG5AaW1wb3J0IFwiYm91cmJvbi9saWJyYXJ5L3BhZGRpbmdcIjtcbkBpbXBvcnQgXCJib3VyYm9uL2xpYnJhcnkvcG9zaXRpb25cIjtcbkBpbXBvcnQgXCJib3VyYm9uL2xpYnJhcnkvcHJlZml4ZXJcIjtcbkBpbXBvcnQgXCJib3VyYm9uL2xpYnJhcnkvc2hhZGVcIjtcbkBpbXBvcnQgXCJib3VyYm9uL2xpYnJhcnkvc2l6ZVwiO1xuQGltcG9ydCBcImJvdXJib24vbGlicmFyeS9zdHJpcC11bml0XCI7XG5AaW1wb3J0IFwiYm91cmJvbi9saWJyYXJ5L3RleHQtaW5wdXRzXCI7XG5AaW1wb3J0IFwiYm91cmJvbi9saWJyYXJ5L3RpbWluZy1mdW5jdGlvbnNcIjtcbkBpbXBvcnQgXCJib3VyYm9uL2xpYnJhcnkvdGludFwiO1xuQGltcG9ydCBcImJvdXJib24vbGlicmFyeS90cmlhbmdsZVwiO1xuQGltcG9ydCBcImJvdXJib24vbGlicmFyeS92YWx1ZS1wcmVmaXhlclwiO1xuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gQSBsaXN0IG9mIGFsbCBIVE1MIGJ1dHRvbiBlbGVtZW50cy5cbi8vL1xuLy8vIEB0eXBlIGxpc3Rcbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuXG4kX2J1dHRvbnMtbGlzdDogKFxuICBcImJ1dHRvblwiLFxuICBcIlt0eXBlPSdidXR0b24nXVwiLFxuICBcIlt0eXBlPSdyZXNldCddXCIsXG4gIFwiW3R5cGU9J3N1Ym1pdCddXCIsXG4pO1xuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8vXG4vLy8gUHJlLWRlZmluZWQgc2NhbGVzIGZvciB1c2Ugd2l0aCB0aGUgYG1vZHVsYXItc2NhbGVgIGZ1bmN0aW9uLlxuLy8vXG4vLy8gQHR5cGUgbnVtYmVyICh1bml0bGVzcylcbi8vL1xuLy8vIEBzZWUge2Z1bmN0aW9ufSBtb2R1bGFyLXNjYWxlXG4vLy8vXG5cbiRtaW5vci1zZWNvbmQ6ICAgICAxLjA2NztcbiRtYWpvci1zZWNvbmQ6ICAgICAxLjEyNTtcbiRtaW5vci10aGlyZDogICAgICAxLjI7XG4kbWFqb3ItdGhpcmQ6ICAgICAgMS4yNTtcbiRwZXJmZWN0LWZvdXJ0aDogICAxLjMzMztcbiRhdWdtZW50ZWQtZm91cnRoOiAxLjQxNDtcbiRwZXJmZWN0LWZpZnRoOiAgICAxLjU7XG4kbWlub3Itc2l4dGg6ICAgICAgMS42O1xuJGdvbGRlbjogICAgICAgICAgIDEuNjE4O1xuJG1ham9yLXNpeHRoOiAgICAgIDEuNjY3O1xuJG1pbm9yLXNldmVudGg6ICAgIDEuNzc4O1xuJG1ham9yLXNldmVudGg6ICAgIDEuODc1O1xuJG9jdGF2ZTogICAgICAgICAgIDI7XG4kbWFqb3ItdGVudGg6ICAgICAgMi41O1xuJG1ham9yLWVsZXZlbnRoOiAgIDIuNjY3O1xuJG1ham9yLXR3ZWxmdGg6ICAgIDM7XG4kZG91YmxlLW9jdGF2ZTogICAgNDtcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIEEgbGlzdCBvZiBhbGwgX3RleHQtYmFzZWRfIEhUTUwgaW5wdXRzLlxuLy8vXG4vLy8gQHR5cGUgbGlzdFxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5cbiRfdGV4dC1pbnB1dHMtbGlzdDogKFxuICBcIlt0eXBlPSdjb2xvciddXCIsXG4gIFwiW3R5cGU9J2RhdGUnXVwiLFxuICBcIlt0eXBlPSdkYXRldGltZSddXCIsXG4gIFwiW3R5cGU9J2RhdGV0aW1lLWxvY2FsJ11cIixcbiAgXCJbdHlwZT0nZW1haWwnXVwiLFxuICBcIlt0eXBlPSdtb250aCddXCIsXG4gIFwiW3R5cGU9J251bWJlciddXCIsXG4gIFwiW3R5cGU9J3Bhc3N3b3JkJ11cIixcbiAgXCJbdHlwZT0nc2VhcmNoJ11cIixcbiAgXCJbdHlwZT0ndGVsJ11cIixcbiAgXCJbdHlwZT0ndGV4dCddXCIsXG4gIFwiW3R5cGU9J3RpbWUnXVwiLFxuICBcIlt0eXBlPSd1cmwnXVwiLFxuICBcIlt0eXBlPSd3ZWVrJ11cIixcbiAgXCJpbnB1dDpub3QoW3R5cGVdKVwiLFxuICBcInRleHRhcmVhXCIsXG4pO1xuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gRGVmYXVsdCBnbG9iYWwgQm91cmJvbiBzZXR0aW5ncy4gVmFsdWVzIGluIHRoaXMgbWFwIGFyZSBvdmVyd3JpdHRlbiBieSBhbnlcbi8vLyB2YWx1ZXMgc2V0IGluIHRoZSBgJGJvdXJib25gIG1hcC5cbi8vL1xuLy8vIEB0eXBlIG1hcFxuLy8vXG4vLy8gQHByb3BlcnR5IHtjb2xvcn0gY29udHJhc3Qtc3dpdGNoLWRhcmstY29sb3IgWyMwMDBdXG4vLy8gICBHbG9iYWwgZGFyayBjb2xvciBmb3IgdGhlIGBjb250cmFzdC1zd2l0Y2hgIGZ1bmN0aW9uLlxuLy8vXG4vLy8gQHByb3BlcnR5IHtjb2xvcn0gY29udHJhc3Qtc3dpdGNoLWxpZ2h0LWNvbG9yIFsjZmZmXVxuLy8vICAgR2xvYmFsIGxpZ2h0IGNvbG9yIGZvciB0aGUgYGNvbnRyYXN0LXN3aXRjaGAgZnVuY3Rpb24uXG4vLy9cbi8vLyBAcHJvcGVydHkge2xpc3R9IGdsb2JhbC1mb250LWZpbGUtZm9ybWF0cyBbKFwidHRmXCIsIFwid29mZjJcIiwgXCJ3b2ZmXCIpXVxuLy8vICAgR2xvYmFsIGZvbnQgZmlsZSBmb3JtYXRzIGZvciB0aGUgYGZvbnQtZmFjZWAgbWl4aW4uXG4vLy9cbi8vLyBAcHJvcGVydHkge251bWJlciAod2l0aCB1bml0KX0gbW9kdWxhci1zY2FsZS1iYXNlIFsxZW1dXG4vLy8gICBHbG9iYWwgYmFzZSB2YWx1ZSBmb3IgdGhlIGBtb2R1bGFyLXNjYWxlYCBmdW5jdGlvbi5cbi8vL1xuLy8vIEBwcm9wZXJ0eSB7bnVtYmVyICh1bml0bGVzcyl9IG1vZHVsYXItc2NhbGUtcmF0aW8gWyRtYWpvci10aGlyZCAoMS4yNSldXG4vLy8gICBHbG9iYWwgYmFzZSByYXRpbyBmb3IgdGhlIGBtb2R1bGFyLXNjYWxlYCBmdW5jdGlvbi5cbi8vL1xuLy8vIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gcmFpbHMtYXNzZXQtcGlwZWxpbmUgW2ZhbHNlXVxuLy8vICAgU2V0IHRoaXMgdG8gYHRydWVgIHdoZW4gdXNpbmcgdGhlIFJhaWxzIEFzc2V0IFBpcGVsaW5lIGFuZCBCb3VyYm9uIHdpbGxcbi8vLyAgIHdyaXRlIGFzc2V0IHBhdGhzIHVzaW5nXG4vLy8gICBbc2Fzcy1yYWlsc+KAmSBhc3NldCBoZWxwZXJzXShodHRwczovL2dpdGh1Yi5jb20vcmFpbHMvc2Fzcy1yYWlscyNhc3NldC1oZWxwZXJzKS5cbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuXG4kX2JvdXJib24tZGVmYXVsdHM6IChcbiAgXCJjb250cmFzdC1zd2l0Y2gtZGFyay1jb2xvclwiOiAjMDAwLFxuICBcImNvbnRyYXN0LXN3aXRjaC1saWdodC1jb2xvclwiOiAjZmZmLFxuICBcImdsb2JhbC1mb250LWZpbGUtZm9ybWF0c1wiOiAoXCJ0dGZcIiwgXCJ3b2ZmMlwiLCBcIndvZmZcIiksXG4gIFwibW9kdWxhci1zY2FsZS1iYXNlXCI6IDFlbSxcbiAgXCJtb2R1bGFyLXNjYWxlLXJhdGlvXCI6ICRtYWpvci10aGlyZCxcbiAgXCJyYWlscy1hc3NldC1waXBlbGluZVwiOiBmYWxzZSxcbik7XG5cbi8vLyBHbG9iYWwgQm91cmJvbiBzZXR0aW5ncy5cbi8vL1xuLy8vIEBuYW1lIFNldHRpbmdzXG4vLy9cbi8vLyBAdHlwZSBtYXBcbi8vL1xuLy8vIEBwcm9wZXJ0eSB7Y29sb3J9IGNvbnRyYXN0LXN3aXRjaC1kYXJrLWNvbG9yIFsjMDAwXVxuLy8vICAgR2xvYmFsIGRhcmsgY29sb3IgZm9yIHRoZSBgY29udHJhc3Qtc3dpdGNoYCBmdW5jdGlvbi5cbi8vL1xuLy8vIEBwcm9wZXJ0eSB7Y29sb3J9IGNvbnRyYXN0LXN3aXRjaC1saWdodC1jb2xvciBbI2ZmZl1cbi8vLyAgIEdsb2JhbCBsaWdodCBjb2xvciBmb3IgdGhlIGBjb250cmFzdC1zd2l0Y2hgIGZ1bmN0aW9uLlxuLy8vXG4vLy8gQHByb3BlcnR5IHtsaXN0fSBnbG9iYWwtZm9udC1maWxlLWZvcm1hdHMgWyhcInR0ZlwiLCBcIndvZmYyXCIsIFwid29mZlwiKV1cbi8vLyAgIEdsb2JhbCBmb250IGZpbGUgZm9ybWF0cyBmb3IgdGhlIGBmb250LWZhY2VgIG1peGluLlxuLy8vXG4vLy8gQHByb3BlcnR5IHtudW1iZXIgKHdpdGggdW5pdCl9IG1vZHVsYXItc2NhbGUtYmFzZSBbMWVtXVxuLy8vICAgR2xvYmFsIGJhc2UgdmFsdWUgZm9yIHRoZSBgbW9kdWxhci1zY2FsZWAgZnVuY3Rpb24uXG4vLy9cbi8vLyBAcHJvcGVydHkge251bWJlciAodW5pdGxlc3MpfSBtb2R1bGFyLXNjYWxlLXJhdGlvIFskbWFqb3ItdGhpcmQgKDEuMjUpXVxuLy8vICAgR2xvYmFsIGJhc2UgcmF0aW8gZm9yIHRoZSBgbW9kdWxhci1zY2FsZWAgZnVuY3Rpb24uXG4vLy9cbi8vLyBAcHJvcGVydHkge2Jvb2xlYW59IHJhaWxzLWFzc2V0LXBpcGVsaW5lIFtmYWxzZV1cbi8vLyAgIFNldCB0aGlzIHRvIGB0cnVlYCB3aGVuIHVzaW5nIHRoZSBSYWlscyBBc3NldCBQaXBlbGluZSBhbmQgQm91cmJvbiB3aWxsXG4vLy8gICB3cml0ZSBhc3NldCBwYXRocyB1c2luZ1xuLy8vICAgW3Nhc3MtcmFpbHPigJkgYXNzZXQgaGVscGVyc10oaHR0cHM6Ly9naXRodWIuY29tL3JhaWxzL3Nhc3MtcmFpbHMjYXNzZXQtaGVscGVycykuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICAkYm91cmJvbjogKFxuLy8vICAgICBcImNvbnRyYXN0LXN3aXRjaC1kYXJrLWNvbG9yXCI6ICMwMDAsXG4vLy8gICAgIFwiY29udHJhc3Qtc3dpdGNoLWxpZ2h0LWNvbG9yXCI6ICNmZmYsXG4vLy8gICAgIFwiZ2xvYmFsLWZvbnQtZmlsZS1mb3JtYXRzXCI6IChcInR0ZlwiLCBcIndvZmYyXCIsIFwid29mZlwiKSxcbi8vLyAgICAgXCJtb2R1bGFyLXNjYWxlLWJhc2VcIjogMWVtLFxuLy8vICAgICBcIm1vZHVsYXItc2NhbGUtcmF0aW9cIjogJG1ham9yLXRoaXJkLFxuLy8vICAgICBcInJhaWxzLWFzc2V0LXBpcGVsaW5lXCI6IGZhbHNlLFxuLy8vICAgKTtcblxuJGJvdXJib246ICgpICFkZWZhdWx0O1xuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gQ2hlY2tzIGlmIGEgbGlzdCBjb250YWlucyBhIHZhbHVlKHMpLlxuLy8vXG4vLy8gQGFyZ3VtZW50IHtsaXN0fSAkbGlzdFxuLy8vICAgVGhlIGxpc3QgdG8gY2hlY2sgYWdhaW5zdC5cbi8vL1xuLy8vIEBhcmd1bWVudCB7bGlzdH0gJHZhbHVlc1xuLy8vICAgQSBzaW5nbGUgdmFsdWUgb3IgbGlzdCBvZiB2YWx1ZXMgdG8gY2hlY2sgZm9yLlxuLy8vXG4vLy8gQHJldHVybiB7Ym9vbGVhbn1cbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuXG5AZnVuY3Rpb24gX2NvbnRhaW5zKFxuICAgICRsaXN0LFxuICAgICR2YWx1ZXMuLi5cbiAgKSB7XG5cbiAgQGVhY2ggJHZhbHVlIGluICR2YWx1ZXMge1xuICAgIEBpZiB0eXBlLW9mKGluZGV4KCRsaXN0LCAkdmFsdWUpKSAhPSBcIm51bWJlclwiIHtcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiB0cnVlO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gQ2hlY2tzIGlmIGEgbGlzdCBkb2VzIG5vdCBjb250YWluIGFueSB2YWx1ZXMuXG4vLy9cbi8vLyBAYXJndW1lbnQge2xpc3R9ICRsaXN0XG4vLy8gICBUaGUgbGlzdCB0byBjaGVjayBhZ2FpbnN0LlxuLy8vXG4vLy8gQHJldHVybiB7Ym9vbGVhbn1cbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuXG5AZnVuY3Rpb24gX2NvbnRhaW5zLWZhbHN5KCRsaXN0KSB7XG4gIEBlYWNoICRpdGVtIGluICRsaXN0IHtcbiAgICBAaWYgbm90ICRpdGVtIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIGZhbHNlO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gQ2hlY2tzIGZvciBhIHZhbGlkIENTUyBjb2xvci5cbi8vL1xuLy8vIEBhcmd1bWVudCB7c3RyaW5nfSAkY29sb3Jcbi8vL1xuLy8vIEByZXR1cm4ge2Jvb2xlYW59XG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcblxuQGZ1bmN0aW9uIF9pcy1jb2xvcigkY29sb3IpIHtcbiAgQHJldHVybiAodHlwZS1vZigkY29sb3IpID09IGNvbG9yKSBvciAoJGNvbG9yID09IFwiY3VycmVudENvbG9yXCIpO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gQ2hlY2tzIGZvciBhIHZhbGlkIENTUyBsZW5ndGguXG4vLy9cbi8vLyBAYXJndW1lbnQge3N0cmluZ30gJHZhbHVlXG4vLy9cbi8vLyBAcmV0dXJuIHtib29sZWFufVxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5cbkBmdW5jdGlvbiBfaXMtbGVuZ3RoKCR2YWx1ZSkge1xuICBAcmV0dXJuIHR5cGUtb2YoJHZhbHVlKSAhPSBcIm51bGxcIiBhbmQgKHN0ci1zbGljZSgkdmFsdWUgKyBcIlwiLCAxLCA0KSA9PSBcImNhbGNcIlxuICAgICAgIG9yIGluZGV4KGF1dG8gaW5oZXJpdCBpbml0aWFsIDAsICR2YWx1ZSlcbiAgICAgICBvciAodHlwZS1vZigkdmFsdWUpID09IFwibnVtYmVyXCIgYW5kIG5vdCh1bml0bGVzcygkdmFsdWUpKSkpO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gQ2hlY2tzIGZvciBhIHZhbGlkIG51bWJlci5cbi8vL1xuLy8vIEBhcmd1bWVudCB7bnVtYmVyfSAkdmFsdWVcbi8vL1xuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gX2NvbnRhaW5zXG4vLy9cbi8vLyBAcmV0dXJuIHtib29sZWFufVxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5cbkBmdW5jdGlvbiBfaXMtbnVtYmVyKCR2YWx1ZSkge1xuICBAcmV0dXJuIF9jb250YWlucyhcIjBcIiBcIjFcIiBcIjJcIiBcIjNcIiBcIjRcIiBcIjVcIiBcIjZcIiBcIjdcIiBcIjhcIiBcIjlcIiAwIDEgMiAzIDQgNSA2IDcgOCA5LCAkdmFsdWUpO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gQ2hlY2tzIGZvciBhIHZhbGlkIENTUyBzaXplLlxuLy8vXG4vLy8gQGFyZ3VtZW50IHtzdHJpbmd9ICR2YWx1ZVxuLy8vXG4vLy8gQHJldHVybiB7Ym9vbGVhbn1cbi8vL1xuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gX2NvbnRhaW5zXG4vLy9cbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IF9pcy1sZW5ndGhcbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuXG5AZnVuY3Rpb24gX2lzLXNpemUoJHZhbHVlKSB7XG4gIEByZXR1cm4gX2lzLWxlbmd0aCgkdmFsdWUpXG4gICAgICAgICAgb3IgX2NvbnRhaW5zKFwiZmlsbFwiIFwiZml0LWNvbnRlbnRcIiBcIm1pbi1jb250ZW50XCIgXCJtYXgtY29udGVudFwiLCAkdmFsdWUpO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gQXBwZW5kIHBzZXVkby1jbGFzc2VzIHRvIGEgc2VsZWN0b3IocykuXG4vLy9cbi8vLyBAYXJndW1lbnQge2xpc3QgfCBzdHJpbmd9ICRpbnB1dHNcbi8vLyAgIEEgc2VsZWN0b3IsIG9yIGxpc3Qgb2Ygc2VsZWN0b3JzLCB0byBhcHBseSB0aGUgcHNldWRvLWNsYXNzIHRvLlxuLy8vXG4vLy8gQGFyZ3VtZW50IHtwc2V1ZG8tY2xhc3N9ICRwc2V1ZG8gW251bGxdXG4vLy8gICBUaGUgcHNldWRvLWNsYXNzIHRvIGJlIGFwcGVuZGVkLlxuLy8vXG4vLy8gQHJldHVybiB7bGlzdH1cbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuXG5AZnVuY3Rpb24gX2Fzc2lnbi1pbnB1dHMoXG4gICAgJGlucHV0cyxcbiAgICAkcHNldWRvOiBudWxsXG4gICkge1xuXG4gICRsaXN0OiAoKTtcblxuICBAZWFjaCAkaW5wdXQgaW4gJGlucHV0cyB7XG4gICAgJGlucHV0OiB1bnF1b3RlKCRpbnB1dCk7XG4gICAgJGlucHV0OiBpZigkcHNldWRvLCAkaW5wdXQgKyBcIjpcIiArICRwc2V1ZG8sICRpbnB1dCk7XG4gICAgJGxpc3Q6IGFwcGVuZCgkbGlzdCwgJGlucHV0LCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRsaXN0O1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLyBzY3NzLWxpbnQ6ZGlzYWJsZSBFbHNlUGxhY2VtZW50XG5cbi8vLyBUcmFuc2Zvcm1zIHNob3J0aGFuZCB0byBpdHMgc2hvcnRlc3QgcG9zc2libGUgZm9ybS5cbi8vL1xuLy8vIEBhcmd1bWVudCB7bGlzdH0gJHZhbHVlc1xuLy8vICAgTGlzdCBvZiBkaXJlY3Rpb25hbCB2YWx1ZXMuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICAkdmFsdWVzOiBfY29tcGFjdC1zaG9ydGhhbmQoMTBweCAyMHB4IDEwcHggMjBweCk7XG4vLy9cbi8vLyAgIC8vIE91dHB1dFxuLy8vICAgJHZhbHVlczogMTBweCAyMHB4O1xuLy8vXG4vLy8gQHJldHVybiB7bGlzdH1cbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuXG5AZnVuY3Rpb24gX2NvbXBhY3Qtc2hvcnRoYW5kKCR2YWx1ZXMpIHtcbiAgJG91dHB1dDogbnVsbDtcblxuICAkYTogbnRoKCR2YWx1ZXMsIDEpO1xuICAkYjogaWYobGVuZ3RoKCR2YWx1ZXMpIDwgMiwgJGEsIG50aCgkdmFsdWVzLCAyKSk7XG4gICRjOiBpZihsZW5ndGgoJHZhbHVlcykgPCAzLCAkYSwgbnRoKCR2YWx1ZXMsIDMpKTtcbiAgJGQ6IGlmKGxlbmd0aCgkdmFsdWVzKSA8IDIsICRhLCBudGgoJHZhbHVlcywgaWYobGVuZ3RoKCR2YWx1ZXMpIDwgNCwgMiwgNCkpKTtcblxuICBAaWYgJGEgPT0gMCB7ICRhOiAwOyB9XG4gIEBpZiAkYiA9PSAwIHsgJGI6IDA7IH1cbiAgQGlmICRjID09IDAgeyAkYzogMDsgfVxuICBAaWYgJGQgPT0gMCB7ICRkOiAwOyB9XG5cbiAgQGlmICRhID09ICRiIGFuZCAkYSA9PSAkYyBhbmQgJGEgPT0gJGQgeyAkb3V0cHV0OiAkYTsgICAgICAgICAgfVxuICBAZWxzZSBpZiAkYSA9PSAkYyBhbmQgJGIgPT0gJGQgICAgICAgICB7ICRvdXRwdXQ6ICRhICRiOyAgICAgICB9XG4gIEBlbHNlIGlmICRiID09ICRkICAgICAgICAgICAgICAgICAgICAgIHsgJG91dHB1dDogJGEgJGIgJGM7ICAgIH1cbiAgQGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAkb3V0cHV0OiAkYSAkYiAkYyAkZDsgfVxuXG4gIEByZXR1cm4gJG91dHB1dDtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8gc2Nzcy1saW50OmRpc2FibGUgU3BhY2VBcm91bmRPcGVyYXRvclxuXG4vLy8gQnVpbGRzIGRpcmVjdGlvbmFsIHByb3BlcnRpZXMgYnkgcGFyc2luZyBDU1Mgc2hvcnRoYW5kIHZhbHVlcy4gRm9yIGV4YW1wbGUsXG4vLy8gYSB2YWx1ZSBvZiBgMTBweCBudWxsYCB3aWxsIG91dHB1dCB0b3AgYW5kIGJvdHRvbSBkaXJlY3Rpb25hbCBwcm9wZXJ0aWVzLFxuLy8vIGJ1dCB0aGUgYG51bGxgIHNraXBzIGxlZnQgYW5kIHJpZ2h0IGZyb20gYmVpbmcgb3V0cHV0LlxuLy8vXG4vLy8gQGFyZ3VtZW50IHtzdHJpbmd9ICRwcm9wZXJ0eVxuLy8vICAgQmFzZSBwcm9wZXJ0eS5cbi8vL1xuLy8vIEBhcmd1bWVudCB7c3RyaW5nfSAkc3VmZml4XG4vLy8gICBTdWZmaXggdG8gYXBwZW5kLiBVc2UgYG51bGxgIHRvIG9taXQuXG4vLy9cbi8vLyBAYXJndW1lbnQge2xpc3R9ICR2YWx1ZXNcbi8vLyAgIExpc3Qgb2YgdmFsdWVzIHRvIHNldCBmb3IgdGhlIHByb3BlcnR5LlxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBfZGlyZWN0aW9uYWwtcHJvcGVydHkoYm9yZGVyLCB3aWR0aCwgbnVsbCA1cHgpO1xuLy8vICAgfVxuLy8vXG4vLy8gICAvLyBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGJvcmRlci1yaWdodC13aWR0aDogNXB4O1xuLy8vICAgICBib3JkZXItbGVmdC13aWR0aDogNXB4O1xuLy8vICAgfVxuLy8vXG4vLy8gQHJlcXVpcmUge2Z1bmN0aW9ufSBfY29tcGFjdC1zaG9ydGhhbmRcbi8vL1xuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gX2NvbnRhaW5zLWZhbHN5XG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcblxuQG1peGluIF9kaXJlY3Rpb25hbC1wcm9wZXJ0eShcbiAgICAkcHJvcGVydHksXG4gICAgJHN1ZmZpeCxcbiAgICAkdmFsdWVzXG4gICkge1xuXG4gICR0b3A6ICAgICRwcm9wZXJ0eSArIFwiLXRvcFwiICAgICsgaWYoJHN1ZmZpeCwgXCItI3skc3VmZml4fVwiLCBcIlwiKTtcbiAgJGJvdHRvbTogJHByb3BlcnR5ICsgXCItYm90dG9tXCIgKyBpZigkc3VmZml4LCBcIi0jeyRzdWZmaXh9XCIsIFwiXCIpO1xuICAkbGVmdDogICAkcHJvcGVydHkgKyBcIi1sZWZ0XCIgICArIGlmKCRzdWZmaXgsIFwiLSN7JHN1ZmZpeH1cIiwgXCJcIik7XG4gICRyaWdodDogICRwcm9wZXJ0eSArIFwiLXJpZ2h0XCIgICsgaWYoJHN1ZmZpeCwgXCItI3skc3VmZml4fVwiLCBcIlwiKTtcbiAgJGFsbDogICAgJHByb3BlcnR5ICsgICAgICAgICAgICAgaWYoJHN1ZmZpeCwgXCItI3skc3VmZml4fVwiLCBcIlwiKTtcblxuICAkdmFsdWVzOiBfY29tcGFjdC1zaG9ydGhhbmQoJHZhbHVlcyk7XG5cbiAgQGlmIF9jb250YWlucy1mYWxzeSgkdmFsdWVzKSB7XG4gICAgQGlmIG50aCgkdmFsdWVzLCAxKSB7ICN7JHRvcH06IG50aCgkdmFsdWVzLCAxKTsgfVxuXG4gICAgQGlmIGxlbmd0aCgkdmFsdWVzKSA9PSAxIHtcbiAgICAgIEBpZiBudGgoJHZhbHVlcywgMSkgeyAjeyRyaWdodH06IG50aCgkdmFsdWVzLCAxKTsgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgQGlmIG50aCgkdmFsdWVzLCAyKSB7ICN7JHJpZ2h0fTogbnRoKCR2YWx1ZXMsIDIpOyB9XG4gICAgfVxuXG4gICAgQGlmIGxlbmd0aCgkdmFsdWVzKSA9PSAyIHtcbiAgICAgIEBpZiBudGgoJHZhbHVlcywgMSkgeyAjeyRib3R0b219OiBudGgoJHZhbHVlcywgMSk7IH1cbiAgICAgIEBpZiBudGgoJHZhbHVlcywgMikgeyAjeyRsZWZ0fTogbnRoKCR2YWx1ZXMsIDIpOyB9XG4gICAgfSBAZWxzZSBpZiBsZW5ndGgoJHZhbHVlcykgPT0gMyB7XG4gICAgICBAaWYgbnRoKCR2YWx1ZXMsIDMpIHsgI3skYm90dG9tfTogbnRoKCR2YWx1ZXMsIDMpOyB9XG4gICAgICBAaWYgbnRoKCR2YWx1ZXMsIDIpIHsgI3skbGVmdH06IG50aCgkdmFsdWVzLCAyKTsgfVxuICAgIH0gQGVsc2UgaWYgbGVuZ3RoKCR2YWx1ZXMpID09IDQge1xuICAgICAgQGlmIG50aCgkdmFsdWVzLCAzKSB7ICN7JGJvdHRvbX06IG50aCgkdmFsdWVzLCAzKTsgfVxuICAgICAgQGlmIG50aCgkdmFsdWVzLCA0KSB7ICN7JGxlZnR9OiBudGgoJHZhbHVlcywgNCk7IH1cbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICN7JGFsbH06ICR2YWx1ZXM7XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIEJ1aWxkcyB0aGUgYHNyY2AgbGlzdCBmb3IgYW4gYEBmb250LWZhY2VgIGRlY2xhcmF0aW9uLlxuLy8vXG4vLy8gQGxpbmsgaHR0cHM6Ly9nb28uZ2wvUnUxYktQXG4vLy9cbi8vLyBAYXJndW1lbnQge3N0cmluZ30gJGZvbnQtZmFtaWx5XG4vLy9cbi8vLyBAYXJndW1lbnQge3N0cmluZ30gJGZpbGUtcGF0aFxuLy8vXG4vLy8gQGFyZ3VtZW50IHtib29sZWFufSAkYXNzZXQtcGlwZWxpbmVcbi8vL1xuLy8vIEBhcmd1bWVudCB7bGlzdH0gJGZpbGUtZm9ybWF0c1xuLy8vXG4vLy8gQHJldHVybiB7bGlzdH1cbi8vL1xuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gX2NvbnRhaW5zXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcblxuQGZ1bmN0aW9uIF9mb250LXNvdXJjZS1kZWNsYXJhdGlvbihcbiAgICAkZm9udC1mYW1pbHksXG4gICAgJGZpbGUtcGF0aCxcbiAgICAkYXNzZXQtcGlwZWxpbmUsXG4gICAgJGZpbGUtZm9ybWF0c1xuICApIHtcblxuICAkc3JjOiAoKTtcblxuICAkZm9ybWF0cy1tYXA6IChcbiAgICBlb3Q6ICAgXCIjeyRmaWxlLXBhdGh9LmVvdD8jaWVmaXhcIiBmb3JtYXQoXCJlbWJlZGRlZC1vcGVudHlwZVwiKSxcbiAgICB3b2ZmMjogXCIjeyRmaWxlLXBhdGh9LndvZmYyXCIgZm9ybWF0KFwid29mZjJcIiksXG4gICAgd29mZjogIFwiI3skZmlsZS1wYXRofS53b2ZmXCIgZm9ybWF0KFwid29mZlwiKSxcbiAgICB0dGY6ICAgXCIjeyRmaWxlLXBhdGh9LnR0ZlwiIGZvcm1hdChcInRydWV0eXBlXCIpLFxuICAgIHN2ZzogICBcIiN7JGZpbGUtcGF0aH0uc3ZnIyN7JGZvbnQtZmFtaWx5fVwiIGZvcm1hdChcInN2Z1wiKSxcbiAgKTtcblxuICBAZWFjaCAka2V5LCAkdmFsdWVzIGluICRmb3JtYXRzLW1hcCB7XG4gICAgQGlmIF9jb250YWlucygkZmlsZS1mb3JtYXRzLCAka2V5KSB7XG4gICAgICAkZmlsZS1wYXRoOiBudGgoJHZhbHVlcywgMSk7XG4gICAgICAkZm9udC1mb3JtYXQ6IG50aCgkdmFsdWVzLCAyKTtcblxuICAgICAgQGlmICRhc3NldC1waXBlbGluZSA9PSB0cnVlIHtcbiAgICAgICAgJHNyYzogYXBwZW5kKCRzcmMsIGZvbnQtdXJsKCRmaWxlLXBhdGgpICRmb250LWZvcm1hdCwgY29tbWEpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRzcmM6IGFwcGVuZCgkc3JjLCB1cmwoJGZpbGUtcGF0aCkgJGZvbnQtZm9ybWF0LCBjb21tYSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkc3JjO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUGVyZm9ybXMgZ2FtbWEgY29ycmVjdGlvbiBvbiBhIHNpbmdsZSBjb2xvciBjaGFubmVsLlxuLy8vXG4vLy8gTm90ZSB0aGF0IFNhc3MgZG9lcyBub3QgaGF2ZSBhIGBwb3coKWAgZnVuY3Rpb24sIHNvIHRoZSBjYWxjdWxhdGlvblxuLy8vIGlzIGFwcHJveGltYXRlLlxuLy8vXG4vLy8gQGFyZ3VtZW50IHtudW1iZXIgKDAtMSl9ICRjaGFubmVsXG4vLy9cbi8vLyBAcmV0dXJuIHtudW1iZXIgKDAtMSl9XG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcblxuQGZ1bmN0aW9uIF9nYW1tYSgkY2hhbm5lbCkge1xuICBAaWYgJGNoYW5uZWwgPCAwLjAzOTI4IHtcbiAgICBAcmV0dXJuICRjaGFubmVsIC8gMTIuOTI7XG4gIH0gQGVsc2Uge1xuICAgICRjOiAoJGNoYW5uZWwgKyAwLjA1NSkgLyAxLjA1NTtcbiAgICBAcmV0dXJuICgxMzMgKiAkYyAqICRjICogJGMgKyAxNTUgKiAkYyAqICRjKSAvIDI4ODtcbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUHJvZ3JhbWF0aWNhbGx5IGRldGVybWluZXMgdGhlIGxpZ2h0bmVzcyBvZiBhIGNvbG9yLlxuLy8vXG4vLy8gQGFyZ3VtZW50IHtjb2xvciAoaGV4KX0gJGhleC1jb2xvclxuLy8vXG4vLy8gQHJldHVybiB7bnVtYmVyICgwLTEpfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgX2xpZ2h0bmVzcygkY29sb3IpXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcblxuQGZ1bmN0aW9uIF9saWdodG5lc3MoJGhleC1jb2xvcikge1xuICAkLWxvY2FsLXJlZC1yYXc6IHJlZChyZ2JhKCRoZXgtY29sb3IsIDEpKTtcbiAgJC1sb2NhbC1ncmVlbi1yYXc6IGdyZWVuKHJnYmEoJGhleC1jb2xvciwgMSkpO1xuICAkLWxvY2FsLWJsdWUtcmF3OiBibHVlKHJnYmEoJGhleC1jb2xvciwgMSkpO1xuXG4gICQtbG9jYWwtcmVkOiBfZ2FtbWEoJC1sb2NhbC1yZWQtcmF3IC8gMjU1KTtcbiAgJC1sb2NhbC1ncmVlbjogX2dhbW1hKCQtbG9jYWwtZ3JlZW4tcmF3IC8gMjU1KTtcbiAgJC1sb2NhbC1ibHVlOiBfZ2FtbWEoJC1sb2NhbC1ibHVlLXJhdyAvIDI1NSk7XG5cbiAgQHJldHVybiAkLWxvY2FsLXJlZCAqIDAuMjEyNiArICQtbG9jYWwtZ3JlZW4gKiAwLjcxNTIgKyAkLWxvY2FsLWJsdWUgKiAwLjA3MjI7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBQcm9ncmFtYXRpY2FsbHkgZGV0ZXJtaW5lcyB0aGUgY29udHJhc3QgcmF0aW8gYmV0d2VlbiB0d28gY29sb3JzLlxuLy8vXG4vLy8gTm90ZSB0aGF0IHRoZSBhbHBoYSBjaGFubmVsIGlzIGlnbm9yZWQuXG4vLy9cbi8vLyBAbGluayBodHRwczovL2dvby5nbC81NGh0TFZcbi8vL1xuLy8vIEBhcmd1bWVudCB7Y29sb3IgKGhleCl9ICRjb2xvci0xXG4vLy9cbi8vLyBAYXJndW1lbnQge2NvbG9yIChoZXgpfSAkY29sb3ItMlxuLy8vXG4vLy8gQHJldHVybiB7bnVtYmVyICgxLTIxKX1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgIF9jb250cmFzdC1yYXRpbyhibGFjaywgd2hpdGUpXG4vLy9cbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IF9saWdodG5lc3Ncbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuXG5AZnVuY3Rpb24gX2NvbnRyYXN0LXJhdGlvKCRjb2xvci0xLCAkY29sb3ItMikge1xuICAkLWxvY2FsLWxpZ2h0bmVzcy0xOiBfbGlnaHRuZXNzKCRjb2xvci0xKSArIDAuMDU7XG4gICQtbG9jYWwtbGlnaHRuZXNzLTI6IF9saWdodG5lc3MoJGNvbG9yLTIpICsgMC4wNTtcblxuICBAaWYgJC1sb2NhbC1saWdodG5lc3MtMSA+ICQtbG9jYWwtbGlnaHRuZXNzLTIge1xuICAgIEByZXR1cm4gJC1sb2NhbC1saWdodG5lc3MtMSAvICQtbG9jYWwtbGlnaHRuZXNzLTI7XG4gIH0gQGVsc2Uge1xuICAgIEByZXR1cm4gJC1sb2NhbC1saWdodG5lc3MtMiAvICQtbG9jYWwtbGlnaHRuZXNzLTE7XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFJldHVybiBhIEJvdXJib24gc2V0dGluZy5cbi8vL1xuLy8vIEBhcmd1bWVudCB7c3RyaW5nfSAkc2V0dGluZ1xuLy8vXG4vLy8gQHJldHVybiB7Ym9vbGVhbiB8IGNvbG9yIHwgbGlzdCB8IG51bWJlciB8IHN0cmluZ31cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgIF9yZXRyaWV2ZS1ib3VyYm9uLXNldHRpbmcocmFpbHMtYXNzZXQtcGlwZWxpbmUpXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcblxuQGZ1bmN0aW9uIF9yZXRyaWV2ZS1ib3VyYm9uLXNldHRpbmcoJHNldHRpbmcpIHtcbiAgQHJldHVybiBtYXAtZ2V0KG1hcC1tZXJnZSgkX2JvdXJib24tZGVmYXVsdHMsICRib3VyYm9uKSwgJHNldHRpbmcpO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gVHJhbnNmb3JtcyBzaG9ydGhhbmQgdGhhdCBjYW4gcmFuZ2UgZnJvbSAxLXRvLTQgdmFsdWVzIHRvIGJlIDQgdmFsdWVzLlxuLy8vXG4vLy8gQGFyZ3VtZW50IHtsaXN0fSAkc2hvcnRoYW5kXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIG1hcmdpbjogX3VucGFjay1zaG9ydGhhbmQoMWVtIDJlbSk7XG4vLy8gICB9XG4vLy9cbi8vLyAgIC8vIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgbWFyZ2luOiAxZW0gMmVtIDFlbSAyZW07XG4vLy8gICB9XG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcblxuQGZ1bmN0aW9uIF91bnBhY2stc2hvcnRoYW5kKCRzaG9ydGhhbmQpIHtcbiAgQGlmIGxlbmd0aCgkc2hvcnRoYW5kKSA9PSAxIHtcbiAgICBAcmV0dXJuIG50aCgkc2hvcnRoYW5kLCAxKSBudGgoJHNob3J0aGFuZCwgMSkgbnRoKCRzaG9ydGhhbmQsIDEpIG50aCgkc2hvcnRoYW5kLCAxKTtcbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHNob3J0aGFuZCkgPT0gMiB7XG4gICAgQHJldHVybiBudGgoJHNob3J0aGFuZCwgMSkgbnRoKCRzaG9ydGhhbmQsIDIpIG50aCgkc2hvcnRoYW5kLCAxKSBudGgoJHNob3J0aGFuZCwgMik7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCRzaG9ydGhhbmQpID09IDMge1xuICAgIEByZXR1cm4gbnRoKCRzaG9ydGhhbmQsIDEpIG50aCgkc2hvcnRoYW5kLCAyKSBudGgoJHNob3J0aGFuZCwgMykgbnRoKCRzaG9ydGhhbmQsIDIpO1xuICB9IEBlbHNlIHtcbiAgICBAcmV0dXJuICRzaG9ydGhhbmQ7XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFByb3ZpZGVzIGEgY29uY2lzZSwgb25lLWxpbmUgbWV0aG9kIGZvciBzZXR0aW5nIGBib3JkZXItY29sb3JgIG9uIHNwZWNpZmljXG4vLy8gZWRnZXMgb2YgYSBib3guIFVzZSBhIGBudWxsYCB2YWx1ZSB0byDigJxza2lw4oCdIGVkZ2VzIG9mIHRoZSBib3ggd2l0aCBzdGFuZGFyZFxuLy8vIENTUyBzaG9ydGhhbmQuXG4vLy9cbi8vLyBAYXJndW1lbnQge2xpc3R9ICR2YWx1ZXNcbi8vLyAgIExpc3Qgb2YgY29sb3JzOyBhY2NlcHRzIENTUyBzaG9ydGhhbmQuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIGJvcmRlci1jb2xvcigjYTYwYjU1ICM3NmNkOWMgbnVsbCAjZThhZTFhKTtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLy8gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBib3JkZXItbGVmdC1jb2xvcjogI2U4YWUxYTtcbi8vLyAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjNzZjZDljO1xuLy8vICAgICBib3JkZXItdG9wLWNvbG9yOiAjYTYwYjU1O1xuLy8vICAgfVxuLy8vXG4vLy8gQHJlcXVpcmUge21peGlufSBfZGlyZWN0aW9uYWwtcHJvcGVydHlcblxuQG1peGluIGJvcmRlci1jb2xvcigkdmFsdWVzKSB7XG4gIEBpbmNsdWRlIF9kaXJlY3Rpb25hbC1wcm9wZXJ0eShib3JkZXIsIGNvbG9yLCAkdmFsdWVzKTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFByb3ZpZGVzIGEgY29uY2lzZSwgb25lLWxpbmUgbWV0aG9kIGZvciBzZXR0aW5nIGBib3JkZXItcmFkaXVzYCBvbiBib3RoIHRoZVxuLy8vIHRvcC1sZWZ0IGFuZCB0b3AtcmlnaHQgb2YgYSBib3guXG4vLy9cbi8vLyBAYXJndW1lbnQge251bWJlciAod2l0aCB1bml0KX0gJHJhZGlpXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIGJvcmRlci10b3AtcmFkaXVzKDRweCk7XG4vLy8gICB9XG4vLy9cbi8vLyAgIC8vIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4O1xuLy8vICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4O1xuLy8vICAgfVxuXG5AbWl4aW4gYm9yZGVyLXRvcC1yYWRpdXMoJHJhZGlpKSB7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6ICRyYWRpaTtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6ICRyYWRpaTtcbn1cblxuLy8vIFByb3ZpZGVzIGEgY29uY2lzZSwgb25lLWxpbmUgbWV0aG9kIGZvciBzZXR0aW5nIGBib3JkZXItcmFkaXVzYCBvbiBib3RoIHRoZVxuLy8vIHRvcC1yaWdodCBhbmQgYm90dG9tLXJpZ2h0IG9mIGEgYm94LlxuLy8vXG4vLy8gQGFyZ3VtZW50IHtudW1iZXIgKHdpdGggdW5pdCl9ICRyYWRpaVxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBib3JkZXItcmlnaHQtcmFkaXVzKDNweCk7XG4vLy8gICB9XG4vLy9cbi8vLyAgIC8vIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDNweDtcbi8vLyAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDNweDtcbi8vLyAgIH1cblxuQG1peGluIGJvcmRlci1yaWdodC1yYWRpdXMoJHJhZGlpKSB7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAkcmFkaWk7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAkcmFkaWk7XG59XG5cbi8vLyBQcm92aWRlcyBhIGNvbmNpc2UsIG9uZS1saW5lIG1ldGhvZCBmb3Igc2V0dGluZyBgYm9yZGVyLXJhZGl1c2Agb24gYm90aCB0aGVcbi8vLyBib3R0b20tbGVmdCBhbmQgYm90dG9tLXJpZ2h0IG9mIGEgYm94LlxuLy8vXG4vLy8gQGFyZ3VtZW50IHtudW1iZXIgKHdpdGggdW5pdCl9ICRyYWRpaVxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBib3JkZXItYm90dG9tLXJhZGl1cygycHgpO1xuLy8vICAgfVxuLy8vXG4vLy8gICAvLyBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDJweDtcbi8vLyAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDJweDtcbi8vLyAgIH1cblxuQG1peGluIGJvcmRlci1ib3R0b20tcmFkaXVzKCRyYWRpaSkge1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAkcmFkaWk7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAkcmFkaWk7XG59XG5cbi8vLyBQcm92aWRlcyBhIGNvbmNpc2UsIG9uZS1saW5lIG1ldGhvZCBmb3Igc2V0dGluZyBgYm9yZGVyLXJhZGl1c2Agb24gYm90aCB0aGVcbi8vLyB0b3AtbGVmdCBhbmQgYm90dG9tLWxlZnQgb2YgYSBib3guXG4vLy9cbi8vLyBAYXJndW1lbnQge251bWJlciAod2l0aCB1bml0KX0gJHJhZGlpXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIGJvcmRlci1sZWZ0LXJhZGl1cygxcHgpO1xuLy8vICAgfVxuLy8vXG4vLy8gICAvLyBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDFweDtcbi8vLyAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMXB4O1xuLy8vICAgfVxuXG5AbWl4aW4gYm9yZGVyLWxlZnQtcmFkaXVzKCRyYWRpaSkge1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAkcmFkaWk7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6ICRyYWRpaTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFByb3ZpZGVzIGEgY29uY2lzZSwgb25lLWxpbmUgbWV0aG9kIGZvciBzZXR0aW5nIGBib3JkZXItc3R5bGVgIG9uIHNwZWNpZmljXG4vLy8gZWRnZXMgb2YgYSBib3guIFVzZSBhIGBudWxsYCB2YWx1ZSB0byDigJxza2lw4oCdIGVkZ2VzIG9mIHRoZSBib3ggd2l0aCBzdGFuZGFyZFxuLy8vIENTUyBzaG9ydGhhbmQuXG4vLy9cbi8vLyBAYXJndW1lbnQge2xpc3R9ICR2YWx1ZXNcbi8vLyAgIExpc3Qgb2YgYm9yZGVyIHN0eWxlczsgYWNjZXB0cyBDU1Mgc2hvcnRoYW5kLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBib3JkZXItc3R5bGUoZGFzaGVkIG51bGwgc29saWQpO1xuLy8vICAgfVxuLy8vXG4vLy8gICAvLyBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkO1xuLy8vICAgICBib3JkZXItdG9wLXN0eWxlOiBkYXNoZWQ7XG4vLy8gICB9XG4vLy9cbi8vLyBAcmVxdWlyZSB7bWl4aW59IF9kaXJlY3Rpb25hbC1wcm9wZXJ0eVxuXG5AbWl4aW4gYm9yZGVyLXN0eWxlKCR2YWx1ZXMpIHtcbiAgQGluY2x1ZGUgX2RpcmVjdGlvbmFsLXByb3BlcnR5KGJvcmRlciwgc3R5bGUsICR2YWx1ZXMpO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUHJvdmlkZXMgYSBjb25jaXNlLCBvbmUtbGluZSBtZXRob2QgZm9yIHNldHRpbmcgYGJvcmRlci13aWR0aGAgb24gc3BlY2lmaWNcbi8vLyBlZGdlcyBvZiBhIGJveC4gVXNlIGEgYG51bGxgIHZhbHVlIHRvIOKAnHNraXDigJ0gZWRnZXMgb2YgdGhlIGJveCB3aXRoIHN0YW5kYXJkXG4vLy8gQ1NTIHNob3J0aGFuZC5cbi8vL1xuLy8vIEBhcmd1bWVudCB7bGlzdH0gJHZhbHVlc1xuLy8vICAgTGlzdCBvZiBib3JkZXIgd2lkdGhzOyBhY2NlcHRzIENTUyBzaG9ydGhhbmQuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIGJvcmRlci13aWR0aCgxZW0gbnVsbCAyMHB4KTtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLy8gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAyMHB4O1xuLy8vICAgICBib3JkZXItdG9wLXdpZHRoOiAxZW07XG4vLy8gICB9XG4vLy9cbi8vLyBAcmVxdWlyZSB7bWl4aW59IF9kaXJlY3Rpb25hbC1wcm9wZXJ0eVxuXG5AbWl4aW4gYm9yZGVyLXdpZHRoKCR2YWx1ZXMpIHtcbiAgQGluY2x1ZGUgX2RpcmVjdGlvbmFsLXByb3BlcnR5KGJvcmRlciwgd2lkdGgsICR2YWx1ZXMpO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8vXG4vLy8gQHR5cGUgbGlzdFxuLy8vXG4vLy8gQHJlcXVpcmUge2Z1bmN0aW9ufSBfYXNzaWduLWlucHV0c1xuLy8vXG4vLy8gQHJlcXVpcmUge3ZhcmlhYmxlfSAkX2J1dHRvbnMtbGlzdFxuLy8vL1xuXG4vLy8gQSBsaXN0IG9mIGFsbCBIVE1MIGJ1dHRvbiBlbGVtZW50cy4gUGxlYXNlIG5vdGUgdGhhdCB5b3UgbXVzdCBpbnRlcnBvbGF0ZVxuLy8vIHRoZSB2YXJpYWJsZSAoYCN7fWApIHRvIHVzZSBpdCBhcyBhIHNlbGVjdG9yLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgI3skYWxsLWJ1dHRvbnN9IHtcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YwMDtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLy8gQ1NTIE91dHB1dFxuLy8vICAgYnV0dG9uLFxuLy8vICAgW3R5cGU9J2J1dHRvbiddLFxuLy8vICAgW3R5cGU9J3Jlc2V0J10sXG4vLy8gICBbdHlwZT0nc3VibWl0J10ge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjAwO1xuLy8vICAgfVxuXG4kYWxsLWJ1dHRvbnM6IF9hc3NpZ24taW5wdXRzKCRfYnV0dG9ucy1saXN0KTtcblxuLy8vIEEgbGlzdCBvZiBhbGwgSFRNTCBidXR0b24gZWxlbWVudHMgd2l0aCB0aGUgYDphY3RpdmVgIHBzZXVkby1jbGFzcyBhcHBsaWVkLlxuLy8vIFBsZWFzZSBub3RlIHRoYXQgeW91IG11c3QgaW50ZXJwb2xhdGUgdGhlIHZhcmlhYmxlIChgI3t9YCkgdG8gdXNlIGl0IGFzIGFcbi8vLyBzZWxlY3Rvci5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgICN7JGFsbC1idXR0b25zLWFjdGl2ZX0ge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBmO1xuLy8vICAgfVxuLy8vXG4vLy8gICAvLyBDU1MgT3V0cHV0XG4vLy8gICBidXR0b246YWN0aXZlLFxuLy8vICAgW3R5cGU9J2J1dHRvbiddOmFjdGl2ZSxcbi8vLyAgIFt0eXBlPSdyZXNldCddOmFjdGl2ZSxcbi8vLyAgIFt0eXBlPSdzdWJtaXQnXTphY3RpdmUge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBmO1xuLy8vICAgfVxuXG4kYWxsLWJ1dHRvbnMtYWN0aXZlOiBfYXNzaWduLWlucHV0cygkX2J1dHRvbnMtbGlzdCwgYWN0aXZlKTtcblxuLy8vIEEgbGlzdCBvZiBhbGwgSFRNTCBidXR0b24gZWxlbWVudHMgd2l0aCB0aGUgYDpmb2N1c2AgcHNldWRvLWNsYXNzIGFwcGxpZWQuXG4vLy8gUGxlYXNlIG5vdGUgdGhhdCB5b3UgbXVzdCBpbnRlcnBvbGF0ZSB0aGUgdmFyaWFibGUgKGAje31gKSB0byB1c2UgaXQgYXMgYVxuLy8vIHNlbGVjdG9yLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgI3skYWxsLWJ1dHRvbnMtZm9jdXN9IHtcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogIzBmMDtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLy8gQ1NTIE91dHB1dFxuLy8vICAgYnV0dG9uOmZvY3VzLFxuLy8vICAgW3R5cGU9J2J1dHRvbiddOmZvY3VzLFxuLy8vICAgW3R5cGU9J3Jlc2V0J106Zm9jdXMsXG4vLy8gICBbdHlwZT0nc3VibWl0J106Zm9jdXMge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMGYwO1xuLy8vICAgfVxuXG4kYWxsLWJ1dHRvbnMtZm9jdXM6IF9hc3NpZ24taW5wdXRzKCRfYnV0dG9ucy1saXN0LCBmb2N1cyk7XG5cbi8vLyBBIGxpc3Qgb2YgYWxsIEhUTUwgYnV0dG9uIGVsZW1lbnRzIHdpdGggdGhlIGA6aG92ZXJgIHBzZXVkby1jbGFzcyBhcHBsaWVkLlxuLy8vIFBsZWFzZSBub3RlIHRoYXQgeW91IG11c3QgaW50ZXJwb2xhdGUgdGhlIHZhcmlhYmxlIChgI3t9YCkgdG8gdXNlIGl0IGFzIGFcbi8vLyBzZWxlY3Rvci5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgICN7JGFsbC1idXR0b25zLWhvdmVyfSB7XG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICMwZjA7XG4vLy8gICB9XG4vLy9cbi8vLyAgIC8vIENTUyBPdXRwdXRcbi8vLyAgIGJ1dHRvbjpob3Zlcixcbi8vLyAgIFt0eXBlPSdidXR0b24nXTpob3Zlcixcbi8vLyAgIFt0eXBlPSdyZXNldCddOmhvdmVyLFxuLy8vICAgW3R5cGU9J3N1Ym1pdCddOmhvdmVyIHtcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogIzBmMDtcbi8vLyAgIH1cblxuJGFsbC1idXR0b25zLWhvdmVyOiBfYXNzaWduLWlucHV0cygkX2J1dHRvbnMtbGlzdCwgaG92ZXIpO1xuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUHJvdmlkZXMgYW4gZWFzeSB3YXkgdG8gaW5jbHVkZSBhIGNsZWFyZml4IGZvciBjb250YWluaW5nIGZsb2F0cy5cbi8vL1xuLy8vIEBsaW5rIGh0dHBzOi8vZ29vLmdsL3lQNWhpWlxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLy8gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQ6OmFmdGVyIHtcbi8vLyAgICAgY2xlYXI6IGJvdGg7XG4vLy8gICAgIGNvbnRlbnQ6IFwiXCI7XG4vLy8gICAgIGRpc3BsYXk6IGJsb2NrO1xuLy8vICAgfVxuXG5AbWl4aW4gY2xlYXJmaXgge1xuICAmOjphZnRlciB7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gU3dpdGNoZXMgYmV0d2VlbiB0d28gY29sb3JzIGJhc2VkIG9uIHRoZSBjb250cmFzdCB0byBhbm90aGVyIGNvbG9yLiBJdOKAmXNcbi8vLyBsaWtlIGEgW3Rlcm5hcnkgb3BlcmF0b3JdIGZvciBjb2xvciBjb250cmFzdCBhbmQgY2FuIGJlIHVzZWZ1bCBmb3IgYnVpbGRpbmdcbi8vLyBhIGJ1dHRvbiBzeXN0ZW0uXG4vLy9cbi8vLyBUaGUgY2FsY3VsYXRpb24gb2YgdGhlIGNvbnRyYXN0IHJhdGlvIGlzIGJhc2VkIG9uIHRoZSBbV0NBRyAyLjBcbi8vLyBzcGVjaWZpY2F0aW9uXS4gSG93ZXZlciwgd2UgY2Fubm90IGd1YXJhbnRlZSBmdWxsIGNvbXBsaWFuY2UsIHRob3VnaCBhbGwgb2Zcbi8vLyBvdXIgbWFudWFsIHRlc3RpbmcgcGFzc2VkLlxuLy8vXG4vLy8gICBbdGVybmFyeSBvcGVyYXRvcl06IGh0dHBzOi8vZ29vLmdsL2NjZkxxaVxuLy8vICAgW1dDQUcgMi4wIHNwZWNpZmljYXRpb25dOiBodHRwczovL2dvby5nbC96aFF1WUFcbi8vL1xuLy8vIEBhcmd1bWVudCB7Y29sb3J9ICRiYXNlLWNvbG9yXG4vLy8gICBUaGUgY29sb3IgdG8gZXZhbHVhdGUgbGlnaHRuZXNzIGFnYWluc3QuXG4vLy9cbi8vLyBAYXJndW1lbnQge2NvbG9yfSAkZGFyay1jb2xvciBbIzAwMF1cbi8vLyAgIFRoZSBjb2xvciB0byBiZSBvdXRwdXQgd2hlbiBgJGJhc2UtY29sb3JgIGlzIGxpZ2h0LiBDYW4gYWxzbyBiZSBzZXRcbi8vLyAgIGdsb2JhbGx5IHVzaW5nIHRoZSBgY29udHJhc3Qtc3dpdGNoLWRhcmstY29sb3JgIGtleSBpbiB0aGVcbi8vLyAgIEJvdXJib24gc2V0dGluZ3MuXG4vLy9cbi8vLyBAYXJndW1lbnQge2NvbG9yfSAkbGlnaHQtY29sb3IgWyNmZmZdXG4vLy8gICBUaGUgY29sb3IgdG8gYmUgb3V0cHV0IHdoZW4gYCRiYXNlLWNvbG9yYCBpcyBkYXJrLiBDYW4gYWxzbyBiZSBzZXRcbi8vLyAgIGdsb2JhbGx5IHVzaW5nIHRoZSBgY29udHJhc3Qtc3dpdGNoLWxpZ2h0LWNvbG9yYCBrZXkgaW4gdGhlXG4vLy8gICBCb3VyYm9uIHNldHRpbmdzLlxuLy8vXG4vLy8gQHJldHVybiB7Y29sb3J9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGNvbG9yOiBjb250cmFzdC1zd2l0Y2goI2JhZTZlNik7XG4vLy8gICB9XG4vLy9cbi8vLyAgIC8vIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgY29sb3I6ICMwMDA7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgICRidXR0b24tY29sb3I6ICMyZDcyZDk7XG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICRidXR0b24tY29sb3I7XG4vLy8gICAgIGNvbG9yOiBjb250cmFzdC1zd2l0Y2goJGJ1dHRvbi1jb2xvciwgIzIyMiwgI2VlZSk7XG4vLy8gICB9XG4vLy9cbi8vLyAgIC8vIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogIzJkNzJkOTtcbi8vLyAgICAgY29sb3I6ICNlZWU7XG4vLy8gICB9XG4vLy9cbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IF9yZXRyaWV2ZS1ib3VyYm9uLXNldHRpbmdcbi8vL1xuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gX2lzLWNvbG9yXG4vLy9cbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IF9jb250cmFzdC1yYXRpb1xuLy8vXG4vLy8gQHNpbmNlIDUuMC4wXG5cbkBmdW5jdGlvbiBjb250cmFzdC1zd2l0Y2goXG4gICAgJGJhc2UtY29sb3IsXG4gICAgJGRhcmstY29sb3I6IF9yZXRyaWV2ZS1ib3VyYm9uLXNldHRpbmcoXCJjb250cmFzdC1zd2l0Y2gtZGFyay1jb2xvclwiKSxcbiAgICAkbGlnaHQtY29sb3I6IF9yZXRyaWV2ZS1ib3VyYm9uLXNldHRpbmcoXCJjb250cmFzdC1zd2l0Y2gtbGlnaHQtY29sb3JcIilcbiAgKSB7XG5cbiAgQGlmIG5vdCBfaXMtY29sb3IoJGJhc2UtY29sb3IpIHtcbiAgICBAZXJyb3IgXCJgI3skYmFzZS1jb2xvcn1gIGlzIG5vdCBhIHZhbGlkIGNvbG9yIGZvciB0aGUgYCRiYXNlLWNvbG9yYCBcIiArXG4gICAgICAgICAgIFwiYXJndW1lbnQgaW4gdGhlIGBjb250cmFzdC1zd2l0Y2hgIGZ1bmN0aW9uLlwiO1xuICB9IEBlbHNlIGlmIG5vdCBfaXMtY29sb3IoJGRhcmstY29sb3IpIHtcbiAgICBAZXJyb3IgXCJgI3skZGFyay1jb2xvcn1gIGlzIG5vdCBhIHZhbGlkIGNvbG9yIGZvciB0aGUgYCRkYXJrLWNvbG9yYCBcIiArXG4gICAgICAgICAgIFwiYXJndW1lbnQgaW4gdGhlIGBjb250cmFzdC1zd2l0Y2hgIGZ1bmN0aW9uLlwiO1xuICB9IEBlbHNlIGlmIG5vdCBfaXMtY29sb3IoJGxpZ2h0LWNvbG9yKSB7XG4gICAgQGVycm9yIFwiYCN7JGxpZ2h0LWNvbG9yfWAgaXMgbm90IGEgdmFsaWQgY29sb3IgZm9yIHRoZSBgJGxpZ2h0LWNvbG9yYCBcIiArXG4gICAgICAgICAgIFwiYXJndW1lbnQgaW4gdGhlIGBjb250cmFzdC1zd2l0Y2hgIGZ1bmN0aW9uLlwiO1xuICB9IEBlbHNlIHtcbiAgICAkLWNvbnRyYXN0LXRvLWRhcms6IF9jb250cmFzdC1yYXRpbygkYmFzZS1jb2xvciwgJGRhcmstY29sb3IpO1xuICAgICQtY29udHJhc3QtdG8tbGlnaHQ6IF9jb250cmFzdC1yYXRpbygkYmFzZS1jb2xvciwgJGxpZ2h0LWNvbG9yKTtcbiAgICAkLXByZWZlci1kYXJrOiAkLWNvbnRyYXN0LXRvLWRhcmsgPj0gJC1jb250cmFzdC10by1saWdodDtcblxuICAgIEByZXR1cm4gaWYoJC1wcmVmZXItZGFyaywgJGRhcmstY29sb3IsICRsaWdodC1jb2xvcik7XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFRydW5jYXRlcyB0ZXh0IGFuZCBhZGRzIGFuIGVsbGlwc2lzIHRvIHJlcHJlc2VudCBvdmVyZmxvdy5cbi8vL1xuLy8vIEBhcmd1bWVudCB7bnVtYmVyfSAkd2lkdGggWzEwMCVdXG4vLy8gICBUaGUgYG1heC13aWR0aGAgZm9yIHRoZSBzdHJpbmcgdG8gcmVzcGVjdCBiZWZvcmUgYmVpbmcgdHJ1bmNhdGVkLlxuLy8vXG4vLy8gQGFyZ3VtZW50IHtzdHJpbmd9ICRkaXNwbGF5IFtpbmxpbmUtYmxvY2tdXG4vLy8gICBTZXRzIHRoZSBkaXNwbGF5LXZhbHVlIG9mIHRoZSBlbGVtZW50LlxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBlbGxpcHNpcztcbi8vLyAgIH1cbi8vL1xuLy8vICAgLy8gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4vLy8gICAgIG1heC13aWR0aDogMTAwJTtcbi8vLyAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbi8vLyAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4vLy8gICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4vLy8gICAgIHdvcmQtd3JhcDogbm9ybWFsO1xuLy8vICAgfVxuXG5AbWl4aW4gZWxsaXBzaXMoXG4gICAgJHdpZHRoOiAxMDAlLFxuICAgICRkaXNwbGF5OiBpbmxpbmUtYmxvY2tcbiAgKSB7XG5cbiAgZGlzcGxheTogJGRpc3BsYXk7XG4gIG1heC13aWR0aDogJHdpZHRoO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgd29yZC13cmFwOiBub3JtYWw7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBHZW5lcmF0ZXMgYW4gYEBmb250LWZhY2VgIGRlY2xhcmF0aW9uLiBZb3UgY2FuIGNob29zZSB0aGUgc3BlY2lmaWMgZmlsZVxuLy8vIGZvcm1hdHMgeW91IG5lZWQgdG8gb3V0cHV0OyB0aGUgbWl4aW4gc3VwcG9ydHMgYGVvdGAsIGB0dGZgLCBgc3ZnYCwgYHdvZmYyYFxuLy8vIGFuZCBgd29mZmAuIFRoZSBtaXhpbiBhbHNvIHN1cHBvcnRzIHVzYWdlIHdpdGggdGhlIFJhaWxzIEFzc2V0IFBpcGVsaW5lLFxuLy8vIHdoaWNoIHlvdSBjYW4gZW5hYmxlIHBlciB1c2UsIG9yIGdsb2JhbGx5IGluIHRoZSBgJGJvdXJib24oKWAgc2V0dGluZ3MuXG4vLy9cbi8vLyBAYXJndW1lbnQge3N0cmluZ30gJGZvbnQtZmFtaWx5XG4vLy9cbi8vLyBAYXJndW1lbnQge3N0cmluZ30gJGZpbGUtcGF0aFxuLy8vXG4vLy8gQGFyZ3VtZW50IHtzdHJpbmd9ICRhc3NldC1waXBlbGluZSBbZmFsc2VdXG4vLy8gICBTZXQgdG8gYHRydWVgIGlmIHlvdeKAmXJlIHVzaW5nIHRoZSBSYWlscyBBc3NldCBQaXBlbGluZSAocGxhY2UgdGhlIGZvbnRzXG4vLy8gICBpbiBgYXBwL2Fzc2V0cy9mb250cy9gKS4gQ2FuIGFsc28gYmUgc2V0IGdsb2JhbGx5IHVzaW5nIHRoZVxuLy8vICAgYHJhaWxzLWFzc2V0LXBpcGVsaW5lYCBrZXkgaW4gdGhlIEJvdXJib24gc2V0dGluZ3MuXG4vLy9cbi8vLyBAYXJndW1lbnQge3N0cmluZyB8IGxpc3R9ICRmaWxlLWZvcm1hdHMgWyhcInR0ZlwiLCBcIndvZmYyXCIsIFwid29mZlwiKV1cbi8vLyAgIExpc3Qgb2YgdGhlIGZvbnQgZmlsZSBmb3JtYXRzIHRvIGluY2x1ZGUuIENhbiBhbHNvIGJlIHNldCBnbG9iYWxseSB1c2luZ1xuLy8vICAgdGhlIGBnbG9iYWwtZm9udC1maWxlLWZvcm1hdHNgIGtleSBpbiB0aGUgQm91cmJvbiBzZXR0aW5ncy5cbi8vL1xuLy8vIEBjb250ZW50XG4vLy8gICBBbnkgYWRkaXRpb25hbCBDU1MgcHJvcGVydGllcyB0aGF0IGFyZSBpbmNsdWRlZCBpbiB0aGUgYEBpbmNsdWRlYFxuLy8vICAgZGlyZWN0aXZlIHdpbGwgYmUgb3V0cHV0IHdpdGhpbiB0aGUgYEBmb250LWZhY2VgIGRlY2xhcmF0aW9uLCBlLmcuIHlvdSBjYW5cbi8vLyAgIHBhc3MgaW4gYGZvbnQtd2VpZ2h0YCwgYGZvbnQtc3R5bGVgIGFuZC9vciBgdW5pY29kZS1yYW5nZWAuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICBAaW5jbHVkZSBmb250LWZhY2UoXG4vLy8gICAgICAgXCJzb3VyY2Utc2Fucy1wcm9cIixcbi8vLyAgICAgICBcImZvbnRzL3NvdXJjZS1zYW5zLXByby1yZWd1bGFyXCIsXG4vLy8gICAgICAgKFwid29mZjJcIiwgXCJ3b2ZmXCIpXG4vLy8gICAgICkge1xuLy8vICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4vLy8gICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4vLy8gICB9XG4vLy9cbi8vLyAgIC8vIENTUyBPdXRwdXRcbi8vLyAgIEBmb250LWZhY2Uge1xuLy8vICAgICBmb250LWZhbWlseTogXCJzb3VyY2Utc2Fucy1wcm9cIjtcbi8vLyAgICAgc3JjOiB1cmwoXCJmb250cy9zb3VyY2Utc2Fucy1wcm8tcmVndWxhci53b2ZmMlwiKSBmb3JtYXQoXCJ3b2ZmMlwiKSxcbi8vLyAgICAgICAgICB1cmwoXCJmb250cy9zb3VyY2Utc2Fucy1wcm8tcmVndWxhci53b2ZmXCIpIGZvcm1hdChcIndvZmZcIik7XG4vLy8gICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbi8vLyAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gX2ZvbnQtc291cmNlLWRlY2xhcmF0aW9uXG4vLy9cbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IF9yZXRyaWV2ZS1ib3VyYm9uLXNldHRpbmdcblxuQG1peGluIGZvbnQtZmFjZShcbiAgICAkZm9udC1mYW1pbHksXG4gICAgJGZpbGUtcGF0aCxcbiAgICAkZmlsZS1mb3JtYXRzOiBfcmV0cmlldmUtYm91cmJvbi1zZXR0aW5nKFwiZ2xvYmFsLWZvbnQtZmlsZS1mb3JtYXRzXCIpLFxuICAgICRhc3NldC1waXBlbGluZTogX3JldHJpZXZlLWJvdXJib24tc2V0dGluZyhcInJhaWxzLWFzc2V0LXBpcGVsaW5lXCIpXG4gICkge1xuXG4gIEBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHk7XG4gICAgc3JjOiBfZm9udC1zb3VyY2UtZGVjbGFyYXRpb24oXG4gICAgICAkZm9udC1mYW1pbHksXG4gICAgICAkZmlsZS1wYXRoLFxuICAgICAgJGFzc2V0LXBpcGVsaW5lLFxuICAgICAgJGZpbGUtZm9ybWF0c1xuICAgICk7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIEEgdmFyaWFibGUgdGhhdCBvdXRwdXRzIGEgSGVsdmV0aWNhIGZvbnQgc3RhY2suXG4vLy9cbi8vLyBAbGluayBodHRwczovL2dvby5nbC91U0p2WmVcbi8vL1xuLy8vIEB0eXBlIGxpc3Rcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgZm9udC1mYW1pbHk6ICRmb250LXN0YWNrLWhlbHZldGljYTtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLy8gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBmb250LWZhbWlseTogXCJIZWx2ZXRpY2EgTmV1ZVwiLCBcIkhlbHZldGljYVwiLCBcIkFyaWFsXCIsIHNhbnMtc2VyaWY7XG4vLy8gICB9XG5cbiRmb250LXN0YWNrLWhlbHZldGljYTogKFxuICBcIkhlbHZldGljYSBOZXVlXCIsXG4gIFwiSGVsdmV0aWNhXCIsXG4gIFwiQXJpYWxcIixcbiAgc2Fucy1zZXJpZixcbik7XG5cbi8vLyBBIHZhcmlhYmxlIHRoYXQgb3V0cHV0cyBhIEx1Y2lkYSBHcmFuZGUgZm9udCBzdGFjay5cbi8vL1xuLy8vIEBsaW5rIGh0dHBzOi8vZ29vLmdsL1I1VXlZRVxuLy8vXG4vLy8gQHR5cGUgbGlzdFxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBmb250LWZhbWlseTogJGZvbnQtc3RhY2stbHVjaWRhLWdyYW5kZTtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLy8gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBmb250LWZhbWlseTogXCJMdWNpZGEgR3JhbmRlXCIsIFwiTHVjaWRhIFNhbnMgVW5pY29kZVwiLCBcIkdlbmV2YVwiLCBcIlZlcmRhbmFcIiwgc2Fucy1zZXJpZjtcbi8vLyAgIH1cblxuJGZvbnQtc3RhY2stbHVjaWRhLWdyYW5kZTogKFxuICBcIkx1Y2lkYSBHcmFuZGVcIixcbiAgXCJMdWNpZGEgU2FucyBVbmljb2RlXCIsXG4gIFwiR2VuZXZhXCIsXG4gIFwiVmVyZGFuYVwiLFxuICBzYW5zLXNlcmlmLFxuKTtcblxuLy8vIEEgdmFyaWFibGUgdGhhdCBvdXRwdXRzIGEgVmVyZGFuYSBmb250IHN0YWNrLlxuLy8vXG4vLy8gQGxpbmsgaHR0cHM6Ly9nb28uZ2wveUdYV1NTXG4vLy9cbi8vLyBAdHlwZSBsaXN0XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGZvbnQtZmFtaWx5OiAkZm9udC1zdGFjay12ZXJkYW5hO1xuLy8vICAgfVxuLy8vXG4vLy8gICAvLyBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGZvbnQtZmFtaWx5OiBcIlZlcmRhbmFcIiwgXCJHZW5ldmFcIiwgc2Fucy1zZXJpZjtcbi8vLyAgIH1cblxuJGZvbnQtc3RhY2stdmVyZGFuYTogKFxuICBcIlZlcmRhbmFcIixcbiAgXCJHZW5ldmFcIixcbiAgc2Fucy1zZXJpZixcbik7XG5cbi8vLyBBIHZhcmlhYmxlIHRoYXQgb3V0cHV0cyBhIHN5c3RlbSBmb250IHN0YWNrLlxuLy8vXG4vLy8gQGxpbmsgaHR0cHM6Ly9nb28uZ2wvTEhSWklmXG4vLy9cbi8vLyBAdHlwZSBsaXN0XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGZvbnQtZmFtaWx5OiAkZm9udC1zdGFjay1zeXN0ZW07XG4vLy8gICB9XG4vLy9cbi8vLyAgIC8vIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXCJBdmVuaXIgTmV4dFwiLCBcIkF2ZW5pclwiLCBcIlNlZ29lIFVJXCIsIFwiTHVjaWRhIEdyYW5kZVwiLCBcIkhlbHZldGljYSBOZXVlXCIsIFwiSGVsdmV0aWNhXCIsIFwiRmlyYSBTYW5zXCIsIFwiUm9ib3RvXCIsIFwiTm90b1wiLCBcIkRyb2lkIFNhbnNcIiwgXCJDYW50YXJlbGxcIiwgXCJPeHlnZW5cIiwgXCJVYnVudHVcIiwgXCJGcmFua2xpbiBHb3RoaWMgTWVkaXVtXCIsIFwiQ2VudHVyeSBHb3RoaWNcIiwgXCJMaWJlcmF0aW9uIFNhbnNcIiwgc2Fucy1zZXJpZjtcbi8vLyAgIH1cblxuJGZvbnQtc3RhY2stc3lzdGVtOiAoXG4gIC1hcHBsZS1zeXN0ZW0sXG4gIEJsaW5rTWFjU3lzdGVtRm9udCxcbiAgXCJBdmVuaXIgTmV4dFwiLFxuICBcIkF2ZW5pclwiLFxuICBcIlNlZ29lIFVJXCIsXG4gIFwiTHVjaWRhIEdyYW5kZVwiLFxuICBcIkhlbHZldGljYSBOZXVlXCIsXG4gIFwiSGVsdmV0aWNhXCIsXG4gIFwiRmlyYSBTYW5zXCIsXG4gIFwiUm9ib3RvXCIsXG4gIFwiTm90b1wiLFxuICBcIkRyb2lkIFNhbnNcIixcbiAgXCJDYW50YXJlbGxcIixcbiAgXCJPeHlnZW5cIixcbiAgXCJVYnVudHVcIixcbiAgXCJGcmFua2xpbiBHb3RoaWMgTWVkaXVtXCIsXG4gIFwiQ2VudHVyeSBHb3RoaWNcIixcbiAgXCJMaWJlcmF0aW9uIFNhbnNcIixcbiAgc2Fucy1zZXJpZixcbik7XG5cbi8vLyBBIHZhcmlhYmxlIHRoYXQgb3V0cHV0cyBhIEdhcmFtb25kIGZvbnQgc3RhY2suXG4vLy9cbi8vLyBAbGluayBodHRwczovL2dvby5nbC9RUUZFa1Zcbi8vL1xuLy8vIEB0eXBlIGxpc3Rcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgZm9udC1mYW1pbHk6ICRmb250LXN0YWNrLWdhcmFtb25kO1xuLy8vICAgfVxuLy8vXG4vLy8gICAvLyBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGZvbnQtZmFtaWx5OiBcIkdhcmFtb25kXCIsIFwiQmFza2VydmlsbGVcIiwgXCJCYXNrZXJ2aWxsZSBPbGQgRmFjZVwiLCBcIkhvZWZsZXIgVGV4dFwiLCBcIlRpbWVzIE5ldyBSb21hblwiLCBzZXJpZjtcbi8vLyAgIH1cblxuJGZvbnQtc3RhY2stZ2FyYW1vbmQ6IChcbiAgXCJHYXJhbW9uZFwiLFxuICBcIkJhc2tlcnZpbGxlXCIsXG4gIFwiQmFza2VydmlsbGUgT2xkIEZhY2VcIixcbiAgXCJIb2VmbGVyIFRleHRcIixcbiAgXCJUaW1lcyBOZXcgUm9tYW5cIixcbiAgc2VyaWYsXG4pO1xuXG4vLy8gQSB2YXJpYWJsZSB0aGF0IG91dHB1dHMgYSBHZW9yZ2lhIGZvbnQgc3RhY2suXG4vLy9cbi8vLyBAbGluayBodHRwczovL2dvby5nbC93dHpWUHlcbi8vL1xuLy8vIEB0eXBlIGxpc3Rcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgZm9udC1mYW1pbHk6ICRmb250LXN0YWNrLWdlb3JnaWE7XG4vLy8gICB9XG4vLy9cbi8vLyAgIC8vIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgZm9udC1mYW1pbHk6IFwiR2VvcmdpYVwiLCBcIlRpbWVzXCIsIFwiVGltZXMgTmV3IFJvbWFuXCIsIHNlcmlmO1xuLy8vICAgfVxuXG4kZm9udC1zdGFjay1nZW9yZ2lhOiAoXG4gIFwiR2VvcmdpYVwiLFxuICBcIlRpbWVzXCIsXG4gIFwiVGltZXMgTmV3IFJvbWFuXCIsXG4gIHNlcmlmLFxuKTtcblxuLy8vIEEgdmFyaWFibGUgdGhhdCBvdXRwdXRzIGEgSG9lZmxlciBUZXh0IGZvbnQgc3RhY2suXG4vLy9cbi8vLyBAbGluayBodHRwczovL2dvby5nbC9uN1U3enhcbi8vL1xuLy8vIEB0eXBlIGxpc3Rcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgZm9udC1mYW1pbHk6ICRmb250LXN0YWNrLWhvZWZsZXItdGV4dDtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLy8gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBmb250LWZhbWlseTogXCJIb2VmbGVyIFRleHRcIiwgXCJCYXNrZXJ2aWxsZSBPbGQgRmFjZVwiLCBcIkdhcmFtb25kXCIsIFwiVGltZXMgTmV3IFJvbWFuXCIsIHNlcmlmO1xuLy8vICAgfVxuXG4kZm9udC1zdGFjay1ob2VmbGVyLXRleHQ6IChcbiAgXCJIb2VmbGVyIFRleHRcIixcbiAgXCJCYXNrZXJ2aWxsZSBPbGQgRmFjZVwiLFxuICBcIkdhcmFtb25kXCIsXG4gIFwiVGltZXMgTmV3IFJvbWFuXCIsXG4gIHNlcmlmLFxuKTtcblxuLy8vIEEgdmFyaWFibGUgdGhhdCBvdXRwdXRzIGEgQ29uc29sYXMgZm9udCBzdGFjay5cbi8vL1xuLy8vIEBsaW5rIGh0dHBzOi8vZ29vLmdsL2lLcnRxdlxuLy8vXG4vLy8gQHR5cGUgbGlzdFxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBmb250LWZhbWlseTogJGZvbnQtc3RhY2stY29uc29sYXM7XG4vLy8gICB9XG4vLy9cbi8vLyAgIC8vIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgZm9udC1mYW1pbHk6IFwiQ29uc29sYXNcIiwgXCJtb25hY29cIiwgbW9ub3NwYWNlO1xuLy8vICAgfVxuXG4kZm9udC1zdGFjay1jb25zb2xhczogKFxuICBcIkNvbnNvbGFzXCIsXG4gIFwibW9uYWNvXCIsXG4gIG1vbm9zcGFjZSxcbik7XG5cbi8vLyBBIHZhcmlhYmxlIHRoYXQgb3V0cHV0cyBhIENvdXJpZXIgTmV3IGZvbnQgc3RhY2suXG4vLy9cbi8vLyBAbGluayBodHRwczovL2dvby5nbC9iSGZXTVBcbi8vL1xuLy8vIEB0eXBlIGxpc3Rcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgZm9udC1mYW1pbHk6ICRmb250LXN0YWNrLWNvdXJpZXItbmV3O1xuLy8vICAgfVxuLy8vXG4vLy8gICAvLyBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGZvbnQtZmFtaWx5OiBcIkNvdXJpZXIgTmV3XCIsIFwiQ291cmllclwiLCBcIkx1Y2lkYSBTYW5zIFR5cGV3cml0ZXJcIiwgXCJMdWNpZGEgVHlwZXdyaXRlclwiLCBtb25vc3BhY2U7XG4vLy8gICB9XG5cbiRmb250LXN0YWNrLWNvdXJpZXItbmV3OiAoXG4gIFwiQ291cmllciBOZXdcIixcbiAgXCJDb3VyaWVyXCIsXG4gIFwiTHVjaWRhIFNhbnMgVHlwZXdyaXRlclwiLFxuICBcIkx1Y2lkYSBUeXBld3JpdGVyXCIsXG4gIG1vbm9zcGFjZSxcbik7XG5cbi8vLyBBIHZhcmlhYmxlIHRoYXQgb3V0cHV0cyBhIE1vbmFjbyBmb250IHN0YWNrLlxuLy8vXG4vLy8gQGxpbmsgaHR0cHM6Ly9nb28uZ2wvOVBnS0RPXG4vLy9cbi8vLyBAdHlwZSBsaXN0XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGZvbnQtZmFtaWx5OiAkZm9udC1zdGFjay1tb25hY287XG4vLy8gICB9XG4vLy9cbi8vLyAgIC8vIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgZm9udC1mYW1pbHk6IFwiTW9uYWNvXCIsIFwiQ29uc29sYXNcIiwgXCJMdWNpZGEgQ29uc29sZVwiLCBtb25vc3BhY2U7XG4vLy8gICB9XG5cbiRmb250LXN0YWNrLW1vbmFjbzogKFxuICBcIk1vbmFjb1wiLFxuICBcIkNvbnNvbGFzXCIsXG4gIFwiTHVjaWRhIENvbnNvbGVcIixcbiAgbW9ub3NwYWNlLFxuKTtcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIEhpZGVzIHRoZSB0ZXh0IGluIGFuIGVsZW1lbnQsIGNvbW1vbmx5IHVzZWQgdG8gc2hvdyBhbiBpbWFnZSBpbnN0ZWFkLiBTb21lXG4vLy8gZWxlbWVudHMgd2lsbCBuZWVkIGJsb2NrLWxldmVsIHN0eWxlcyBhcHBsaWVkLlxuLy8vXG4vLy8gQGxpbmsgaHR0cHM6Ly9nb28uZ2wvRXZMUkl1XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIGhpZGUtdGV4dDtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLy8gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBvdmVyZmxvdzogaGlkZGVuO1xuLy8vICAgICB0ZXh0LWluZGVudDogMTAxJTtcbi8vLyAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbi8vLyAgIH1cblxuQG1peGluIGhpZGUtdGV4dCB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtaW5kZW50OiAxMDElO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gSGlkZXMgYW4gZWxlbWVudCB2aXN1YWxseSB3aGlsZSBzdGlsbCBhbGxvd2luZyB0aGUgY29udGVudCB0byBiZSBhY2Nlc3NpYmxlXG4vLy8gdG8gYXNzaXN0aXZlIHRlY2hub2xvZ3ksIGUuZy4gc2NyZWVuIHJlYWRlcnMuIFBhc3NpbmcgYHVuaGlkZWAgd2lsbCByZXZlcnNlXG4vLy8gdGhlIGFmZmVjdHMgb2YgdGhlIGhpZGluZywgd2hpY2ggaXMgaGFuZHkgZm9yIHNob3dpbmcgdGhlIGVsZW1lbnQgb24gZm9jdXMsXG4vLy8gZm9yIGV4YW1wbGUuXG4vLy9cbi8vLyBAbGluayBodHRwczovL2dvby5nbC9WZjFUR25cbi8vL1xuLy8vIEBhcmd1bWVudCB7c3RyaW5nfSAkdG9nZ2xlIFtoaWRlXVxuLy8vICAgQWNjZXB0cyBgaGlkZWAgb3IgYHVuaGlkZWAuIGB1bmhpZGVgIHJldmVyc2VzIHRoZSBhZmZlY3RzIG9mIGBoaWRlYC5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgaGlkZS12aXN1YWxseTtcbi8vL1xuLy8vICAgICAmOmFjdGl2ZSxcbi8vLyAgICAgJjpmb2N1cyB7XG4vLy8gICAgICAgQGluY2x1ZGUgaGlkZS12aXN1YWxseSh1bmhpZGUpO1xuLy8vICAgICB9XG4vLy8gICB9XG4vLy9cbi8vLyAgIC8vIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgYm9yZGVyOiAwO1xuLy8vICAgICBjbGlwOiByZWN0KDFweCwgMXB4LCAxcHgsIDFweCk7XG4vLy8gICAgIGNsaXAtcGF0aDogY2lyY2xlKDElIGF0IDElIDElKTtcbi8vLyAgICAgaGVpZ2h0OiAxcHg7XG4vLy8gICAgIG92ZXJmbG93OiBoaWRkZW47XG4vLy8gICAgIHBhZGRpbmc6IDA7XG4vLy8gICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbi8vLyAgICAgd2lkdGg6IDFweDtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLmhpZGUtdmlzdWFsbHk6YWN0aXZlLFxuLy8vICAgLmhpZGUtdmlzdWFsbHk6Zm9jdXMge1xuLy8vICAgICBjbGlwOiBhdXRvO1xuLy8vICAgICBjbGlwLXBhdGg6IG5vbmU7XG4vLy8gICAgIGhlaWdodDogYXV0bztcbi8vLyAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4vLy8gICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4vLy8gICAgIHdpZHRoOiBhdXRvO1xuLy8vICAgfVxuLy8vXG4vLy8gQHNpbmNlIDUuMC4wXG5cbkBtaXhpbiBoaWRlLXZpc3VhbGx5KCR0b2dnbGU6IGhpZGUpIHtcbiAgQGlmICR0b2dnbGUgPT0gXCJoaWRlXCIge1xuICAgIGJvcmRlcjogMDtcbiAgICBjbGlwOiByZWN0KDFweCwgMXB4LCAxcHgsIDFweCk7XG4gICAgY2xpcC1wYXRoOiBjaXJjbGUoMSUgYXQgMSUgMSUpO1xuICAgIGhlaWdodDogMXB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgcGFkZGluZzogMDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB3aWR0aDogMXB4O1xuICB9IEBlbHNlIGlmICR0b2dnbGUgPT0gXCJ1bmhpZGVcIiB7XG4gICAgY2xpcDogYXV0bztcbiAgICBjbGlwLXBhdGg6IG5vbmU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgd2hpdGUtc3BhY2U6IGluaGVyaXQ7XG4gICAgd2lkdGg6IGF1dG87XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFByb3ZpZGVzIGEgY29uY2lzZSwgb25lLWxpbmUgbWV0aG9kIGZvciBzZXR0aW5nIGBtYXJnaW5gIG9uIHNwZWNpZmljIGVkZ2VzXG4vLy8gb2YgYSBib3guIFVzZSBhIGBudWxsYCB2YWx1ZSB0byDigJxza2lw4oCdIGVkZ2VzIG9mIHRoZSBib3ggd2l0aCBzdGFuZGFyZFxuLy8vIENTUyBzaG9ydGhhbmQuXG4vLy9cbi8vLyBAYXJndW1lbnQge2xpc3R9ICR2YWx1ZXNcbi8vLyAgIExpc3Qgb2YgbWFyZ2luIHZhbHVlczsgYWNjZXB0cyBDU1Mgc2hvcnRoYW5kLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBtYXJnaW4obnVsbCBhdXRvKTtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLy8gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBtYXJnaW4tbGVmdDogYXV0bztcbi8vLyAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBtYXJnaW4oMTBweCAzZW0gMjB2aCBudWxsKTtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLy8gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBtYXJnaW4tYm90dG9tOiAyMHZoO1xuLy8vICAgICBtYXJnaW4tcmlnaHQ6IDNlbTtcbi8vLyAgICAgbWFyZ2luLXRvcDogMTBweDtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXF1aXJlIHttaXhpbn0gX2RpcmVjdGlvbmFsLXByb3BlcnR5XG5cbkBtaXhpbiBtYXJnaW4oJHZhbHVlcykge1xuICBAaW5jbHVkZSBfZGlyZWN0aW9uYWwtcHJvcGVydHkobWFyZ2luLCBudWxsLCAkdmFsdWVzKTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIEluY3JlbWVudHMgdXAgb3IgZG93biBhIGRlZmluZWQgc2NhbGUgYW5kIHJldHVybnMgYW4gYWRqdXN0ZWQgdmFsdWUuIFRoaXNcbi8vLyBoZWxwcyBlc3RhYmxpc2ggY29uc2lzdGVudCBtZWFzdXJlbWVudHMgYW5kIHNwYWNpYWwgcmVsYXRpb25zaGlwcyB0aHJvdWdob3V0XG4vLy8geW91ciBwcm9qZWN0LiBXZSBwcm92aWRlIGEgbGlzdCBvZiBjb21tb25seSB1c2VkIHNjYWxlcyBhc1xuLy8vIFtwcmUtZGVmaW5lZCB2YXJpYWJsZXNdW3NjYWxlc10uXG4vLy9cbi8vLyBbc2NhbGVzXTogaHR0cHM6Ly9naXRodWIuY29tL3Rob3VnaHRib3QvYm91cmJvbi9ibG9iL21hc3Rlci9jb3JlL2JvdXJib24vc2V0dGluZ3MvX3NjYWxlcy5zY3NzXG4vLy9cbi8vLyBAYXJndW1lbnQge251bWJlciAodW5pdGxlc3MpfSAkaW5jcmVtZW50XG4vLy8gICBIb3cgbWFueSBzdGVwcyB0byBpbmNyZW1lbnQgdXAgb3IgZG93biB0aGUgc2NhbGUuXG4vLy9cbi8vLyBAYXJndW1lbnQge251bWJlciAod2l0aCB1bml0KSB8IGxpc3R9ICR2YWx1ZSBbMWVtXVxuLy8vICAgVGhlIGJhc2UgdmFsdWUgdGhlIHNjYWxlIHN0YXJ0cyBhdC4gQ2FuIGFsc28gYmUgc2V0IGdsb2JhbGx5IHVzaW5nIHRoZVxuLy8vICAgYG1vZHVsYXItc2NhbGUtYmFzZWAga2V5IGluIHRoZSBCb3VyYm9uIHNldHRpbmdzLlxuLy8vXG4vLy8gQGFyZ3VtZW50IHtudW1iZXIgKHVuaXRsZXNzKX0gJHJhdGlvIFsxLjI1XVxuLy8vICAgVGhlIHJhdGlvIHRoZSBzY2FsZSBpcyBidWlsdCBvbi4gQ2FuIGFsc28gYmUgc2V0IGdsb2JhbGx5IHVzaW5nIHRoZVxuLy8vICAgYG1vZHVsYXItc2NhbGUtcmF0aW9gIGtleSBpbiB0aGUgQm91cmJvbiBzZXR0aW5ncy5cbi8vL1xuLy8vIEByZXR1cm4ge251bWJlciAod2l0aCB1bml0KX1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgZm9udC1zaXplOiBtb2R1bGFyLXNjYWxlKDIpO1xuLy8vICAgfVxuLy8vXG4vLy8gICAvLyBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGZvbnQtc2l6ZTogMS41NjI1ZW07XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIG1hcmdpbi1yaWdodDogbW9kdWxhci1zY2FsZSgzLCAyZW0pO1xuLy8vICAgfVxuLy8vXG4vLy8gICAvLyBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIG1hcmdpbi1yaWdodDogMy45MDYyNWVtO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBmb250LXNpemU6IG1vZHVsYXItc2NhbGUoMywgMWVtIDEuNmVtLCAkbWFqb3Itc2V2ZW50aCk7XG4vLy8gICB9XG4vLy9cbi8vLyAgIC8vIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgZm9udC1zaXplOiAzZW07XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICAvLyBHbG9iYWxseSBjaGFuZ2UgdGhlIGJhc2UgcmF0aW9cbi8vLyAgICRib3VyYm9uOiAoXG4vLy8gICAgIFwibW9kdWxhci1zY2FsZS1yYXRpb1wiOiAxLjIsXG4vLy8gICApO1xuLy8vXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGZvbnQtc2l6ZTogbW9kdWxhci1zY2FsZSgzKTtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLy8gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBmb250LXNpemU6IDEuNzI4ZW07XG4vLy8gICB9XG4vLy9cbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IF9yZXRyaWV2ZS1ib3VyYm9uLXNldHRpbmdcblxuQGZ1bmN0aW9uIG1vZHVsYXItc2NhbGUoXG4gICAgJGluY3JlbWVudCxcbiAgICAkdmFsdWU6IF9yZXRyaWV2ZS1ib3VyYm9uLXNldHRpbmcoXCJtb2R1bGFyLXNjYWxlLWJhc2VcIiksXG4gICAgJHJhdGlvOiBfcmV0cmlldmUtYm91cmJvbi1zZXR0aW5nKFwibW9kdWxhci1zY2FsZS1yYXRpb1wiKVxuICApIHtcblxuICAkdjE6IG50aCgkdmFsdWUsIDEpO1xuICAkdjI6IG50aCgkdmFsdWUsIGxlbmd0aCgkdmFsdWUpKTtcbiAgJHZhbHVlOiAkdjE7XG5cbiAgLy8gc2NhbGUgJHYyIHRvIGp1c3QgYWJvdmUgJHYxXG4gIEB3aGlsZSAkdjIgPiAkdjEge1xuICAgICR2MjogKCR2MiAvICRyYXRpbyk7IC8vIHdpbGwgYmUgb2ZmLWJ5LTFcbiAgfVxuICBAd2hpbGUgJHYyIDwgJHYxIHtcbiAgICAkdjI6ICgkdjIgKiAkcmF0aW8pOyAvLyB3aWxsIGZpeCBvZmYtYnktMVxuICB9XG5cbiAgLy8gY2hlY2sgQUZURVIgc2NhbGluZyAkdjIgdG8gcHJldmVudCBkb3VibGUtY291bnRpbmcgY29ybmVyLWNhc2VcbiAgJGRvdWJsZS1zdHJhbmRlZDogJHYyID4gJHYxO1xuXG4gIEBpZiAkaW5jcmVtZW50ID4gMCB7XG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkaW5jcmVtZW50IHtcbiAgICAgIEBpZiAkZG91YmxlLXN0cmFuZGVkIGFuZCAoJHYxICogJHJhdGlvKSA+ICR2MiB7XG4gICAgICAgICR2YWx1ZTogJHYyO1xuICAgICAgICAkdjI6ICgkdjIgKiAkcmF0aW8pO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICR2MTogKCR2MSAqICRyYXRpbyk7XG4gICAgICAgICR2YWx1ZTogJHYxO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpZiAkaW5jcmVtZW50IDwgMCB7XG4gICAgLy8gYWRqdXN0ICR2MiB0byBqdXN0IGJlbG93ICR2MVxuICAgIEBpZiAkZG91YmxlLXN0cmFuZGVkIHtcbiAgICAgICR2MjogKCR2MiAvICRyYXRpbyk7XG4gICAgfVxuXG4gICAgQGZvciAkaSBmcm9tICRpbmNyZW1lbnQgdGhyb3VnaCAtMSB7XG4gICAgICBAaWYgJGRvdWJsZS1zdHJhbmRlZCBhbmQgKCR2MSAvICRyYXRpbykgPCAkdjIge1xuICAgICAgICAkdmFsdWU6ICR2MjtcbiAgICAgICAgJHYyOiAoJHYyIC8gJHJhdGlvKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkdjE6ICgkdjEgLyAkcmF0aW8pO1xuICAgICAgICAkdmFsdWU6ICR2MTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICR2YWx1ZTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIE91dHB1dHMgdGhlIGBvdmVyZmxvdy13cmFwYCBwcm9wZXJ0eSBhbmQgaXRzIGxlZ2FjeSBuYW1lIGB3b3JkLXdyYXBgIHRvXG4vLy8gc3VwcG9ydCBicm93c2VycyB0aGF0IGRvIG5vdCB5ZXQgdXNlIGBvdmVyZmxvdy13cmFwYC5cbi8vL1xuLy8vIEBhcmd1bWVudCB7c3RyaW5nfSAkd3JhcCBbYnJlYWstd29yZF1cbi8vLyAgIEFjY2VwdGVkIENTUyB2YWx1ZXMgYXJlIGBub3JtYWxgLCBgYnJlYWstd29yZGAsIGBpbmhlcml0YCwgYGluaXRpYWxgLFxuLy8vICAgb3IgYHVuc2V0YC5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgIC53cmFwcGVyIHtcbi8vLyAgICAgQGluY2x1ZGUgb3ZlcmZsb3ctd3JhcDtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLy8gQ1NTIE91dHB1dFxuLy8vICAgLndyYXBwZXIge1xuLy8vICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4vLy8gICAgIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG4vLy8gICB9XG5cbkBtaXhpbiBvdmVyZmxvdy13cmFwKCR3cmFwOiBicmVhay13b3JkKSB7XG4gIHdvcmQtd3JhcDogJHdyYXA7XG4gIG92ZXJmbG93LXdyYXA6ICR3cmFwO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUHJvdmlkZXMgYSBjb25jaXNlIG1ldGhvZCBmb3IgdGFyZ2V0aW5nIGBwYWRkaW5nYCBvbiBzcGVjaWZpYyBzaWRlcyBvZiBhXG4vLy8gYm94LiBVc2UgYSBgbnVsbGAgdmFsdWUgdG8g4oCcc2tpcOKAnSBhIHNpZGUuXG4vLy9cbi8vLyBAYXJndW1lbnQge2xpc3R9ICR2YWx1ZXNcbi8vLyAgIExpc3Qgb2YgcGFkZGluZyB2YWx1ZXM7IGFjY2VwdHMgQ1NTIHNob3J0aGFuZC5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgIC5lbGVtZW50LW9uZSB7XG4vLy8gICAgIEBpbmNsdWRlIHBhZGRpbmcobnVsbCAxcmVtKTtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLy8gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQtb25lIHtcbi8vLyAgICAgcGFkZGluZy1sZWZ0OiAxcmVtO1xuLy8vICAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgLmVsZW1lbnQtdHdvIHtcbi8vLyAgICAgQGluY2x1ZGUgcGFkZGluZygxMHZoIG51bGwgMTBweCA1JSk7XG4vLy8gICB9XG4vLy9cbi8vLyAgIC8vIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50LXR3byB7XG4vLy8gICAgIHBhZGRpbmctYm90dG9tOiAxMHB4O1xuLy8vICAgICBwYWRkaW5nLWxlZnQ6IDUlO1xuLy8vICAgICBwYWRkaW5nLXRvcDogMTB2aDtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXF1aXJlIHttaXhpbn0gX2RpcmVjdGlvbmFsLXByb3BlcnR5XG5cbkBtaXhpbiBwYWRkaW5nKCR2YWx1ZXMpIHtcbiAgQGluY2x1ZGUgX2RpcmVjdGlvbmFsLXByb3BlcnR5KHBhZGRpbmcsIG51bGwsICR2YWx1ZXMpO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUHJvdmlkZXMgYSBjb25jaXNlLCBvbmUtbGluZSBtZXRob2QgZm9yIHNldHRpbmcgYW4gZWxlbWVudOKAmXMgcG9zaXRpb25pbmdcbi8vLyBwcm9wZXJ0aWVzOiBgcG9zaXRpb25gLCBgdG9wYCwgYHJpZ2h0YCwgYGJvdHRvbWAgYW5kIGBsZWZ0YC4gVXNlIGEgYG51bGxgXG4vLy8gdmFsdWUgdG8g4oCcc2tpcOKAnSBhbiBlZGdlIG9mIHRoZSBib3guXG4vLy9cbi8vLyBAYXJndW1lbnQge3N0cmluZ30gJHBvc2l0aW9uXG4vLy8gICBBIENTUyBwb3NpdGlvbiB2YWx1ZS5cbi8vL1xuLy8vIEBhcmd1bWVudCB7bGlzdH0gJGJveC1lZGdlLXZhbHVlc1xuLy8vICAgTGlzdCBvZiBsZW5ndGhzOyBhY2NlcHRzIENTUyBzaG9ydGhhbmQuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIHBvc2l0aW9uKHJlbGF0aXZlLCAwIG51bGwgbnVsbCAxMGVtKTtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLy8gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBsZWZ0OiAxMGVtO1xuLy8vICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4vLy8gICAgIHRvcDogMDtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgcG9zaXRpb24oYWJzb2x1dGUsIDApO1xuLy8vICAgfVxuLy8vXG4vLy8gICAvLyBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbi8vLyAgICAgdG9wOiAwO1xuLy8vICAgICByaWdodDogMDtcbi8vLyAgICAgYm90dG9tOiAwO1xuLy8vICAgICBsZWZ0OiAwO1xuLy8vICAgfVxuLy8vXG4vLy8gQHJlcXVpcmUge2Z1bmN0aW9ufSBfaXMtbGVuZ3RoXG4vLy9cbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IF91bnBhY2stc2hvcnRoYW5kXG5cbkBtaXhpbiBwb3NpdGlvbihcbiAgICAkcG9zaXRpb24sXG4gICAgJGJveC1lZGdlLXZhbHVlc1xuICApIHtcblxuICAkYm94LWVkZ2UtdmFsdWVzOiBfdW5wYWNrLXNob3J0aGFuZCgkYm94LWVkZ2UtdmFsdWVzKTtcblxuICAkb2Zmc2V0czogKFxuICAgIHRvcDogICAgbnRoKCRib3gtZWRnZS12YWx1ZXMsIDEpLFxuICAgIHJpZ2h0OiAgbnRoKCRib3gtZWRnZS12YWx1ZXMsIDIpLFxuICAgIGJvdHRvbTogbnRoKCRib3gtZWRnZS12YWx1ZXMsIDMpLFxuICAgIGxlZnQ6ICAgbnRoKCRib3gtZWRnZS12YWx1ZXMsIDQpLFxuICApO1xuXG4gIHBvc2l0aW9uOiAkcG9zaXRpb247XG5cbiAgQGVhY2ggJG9mZnNldCwgJHZhbHVlIGluICRvZmZzZXRzIHtcbiAgICBAaWYgX2lzLWxlbmd0aCgkdmFsdWUpIHtcbiAgICAgICN7JG9mZnNldH06ICR2YWx1ZTtcbiAgICB9XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIEdlbmVyYXRlcyB2ZW5kb3IgcHJlZml4ZXMuXG4vLy9cbi8vLyBAYXJndW1lbnQge3N0cmluZ30gJHByb3BlcnR5XG4vLy8gICBQcm9wZXJ0eSB0byBwcmVmaXguXG4vLy9cbi8vLyBAYXJndW1lbnQge3N0cmluZ30gJHZhbHVlXG4vLy8gICBWYWx1ZSB0byB1c2UuXG4vLy9cbi8vLyBAYXJndW1lbnQge2xpc3R9ICRwcmVmaXhlc1xuLy8vICAgVmVuZG9yIHByZWZpeGVzIHRvIG91dHB1dC5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgcHJlZml4ZXIoYXBwZWFyYW5jZSwgbm9uZSwgKFwid2Via2l0XCIsIFwibW96XCIpKTtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLy8gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4vLy8gICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcbi8vLyAgICAgYXBwZWFyYW5jZTogbm9uZTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBhdXRob3IgSHVnbyBHaXJhdWRlbFxuXG5AbWl4aW4gcHJlZml4ZXIoXG4gICAgJHByb3BlcnR5LFxuICAgICR2YWx1ZSxcbiAgICAkcHJlZml4ZXM6ICgpXG4gICkge1xuXG4gIEBlYWNoICRwcmVmaXggaW4gJHByZWZpeGVzIHtcbiAgICAje1wiLVwiICsgJHByZWZpeCArIFwiLVwiICsgJHByb3BlcnR5fTogJHZhbHVlO1xuICB9XG4gICN7JHByb3BlcnR5fTogJHZhbHVlO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gTWl4ZXMgYSBjb2xvciB3aXRoIGJsYWNrLlxuLy8vXG4vLy8gQGFyZ3VtZW50IHtjb2xvcn0gJGNvbG9yXG4vLy9cbi8vLyBAYXJndW1lbnQge251bWJlciAocGVyY2VudGFnZSl9ICRwZXJjZW50XG4vLy8gICBUaGUgYW1vdW50IG9mIGJsYWNrIHRvIGJlIG1peGVkIGluLlxuLy8vXG4vLy8gQHJldHVybiB7Y29sb3J9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6IHNoYWRlKCNmZmJiNTIsIDYwJSk7XG4vLy8gICB9XG4vLy9cbi8vLyAgIC8vIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogIzY2NGEyMDtcbi8vLyAgIH1cblxuQGZ1bmN0aW9uIHNoYWRlKFxuICAgICRjb2xvcixcbiAgICAkcGVyY2VudFxuICApIHtcblxuICBAaWYgbm90IF9pcy1jb2xvcigkY29sb3IpIHtcbiAgICBAZXJyb3IgXCJgI3skY29sb3J9YCBpcyBub3QgYSB2YWxpZCBjb2xvciBmb3IgdGhlIGAkY29sb3JgIGFyZ3VtZW50IGluIFwiICtcbiAgICAgICAgICAgXCJ0aGUgYHNoYWRlYCBtaXhpbi5cIjtcbiAgfSBAZWxzZSB7XG4gICAgQHJldHVybiBtaXgoIzAwMCwgJGNvbG9yLCAkcGVyY2VudCk7XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFNldHMgdGhlIGB3aWR0aGAgYW5kIGBoZWlnaHRgIG9mIHRoZSBlbGVtZW50IGluIG9uZSBzdGF0ZW1lbnQuXG4vLy9cbi8vLyBAYXJndW1lbnQge251bWJlciAod2l0aCB1bml0KSB8IHN0cmluZ30gJHdpZHRoXG4vLy9cbi8vLyBAYXJndW1lbnQge251bWJlciAod2l0aCB1bml0KSB8IHN0cmluZ30gJGhlaWdodCBbJHdpZHRoXVxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgLmZpcnN0LWVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBzaXplKDJlbSk7XG4vLy8gICB9XG4vLy9cbi8vLyAgIC8vIENTUyBPdXRwdXRcbi8vLyAgIC5maXJzdC1lbGVtZW50IHtcbi8vLyAgICAgd2lkdGg6IDJlbTtcbi8vLyAgICAgaGVpZ2h0OiAyZW07XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICAuc2Vjb25kLWVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBzaXplKGF1dG8sIDEwZW0pO1xuLy8vICAgfVxuLy8vXG4vLy8gICAvLyBDU1MgT3V0cHV0XG4vLy8gICAuc2Vjb25kLWVsZW1lbnQge1xuLy8vICAgICB3aWR0aDogYXV0bztcbi8vLyAgICAgaGVpZ2h0OiAxMGVtO1xuLy8vICAgfVxuLy8vXG4vLy8gQHJlcXVpcmUge2Z1bmN0aW9ufSBfaXMtc2l6ZVxuXG5AbWl4aW4gc2l6ZShcbiAgICAkd2lkdGgsXG4gICAgJGhlaWdodDogJHdpZHRoXG4gICkge1xuXG4gIEBpZiBfaXMtc2l6ZSgkaGVpZ2h0KSB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICB9IEBlbHNlIHtcbiAgICBAZXJyb3IgXCJgI3skaGVpZ2h0fWAgaXMgbm90IGEgdmFsaWQgbGVuZ3RoIGZvciB0aGUgYCRoZWlnaHRgIGFyZ3VtZW50IFwiICtcbiAgICAgICAgICAgXCJpbiB0aGUgYHNpemVgIG1peGluLlwiO1xuICB9XG5cbiAgQGlmIF9pcy1zaXplKCR3aWR0aCkge1xuICAgIHdpZHRoOiAkd2lkdGg7XG4gIH0gQGVsc2Uge1xuICAgIEBlcnJvciBcImAjeyR3aWR0aH1gIGlzIG5vdCBhIHZhbGlkIGxlbmd0aCBmb3IgdGhlIGAkd2lkdGhgIGFyZ3VtZW50IFwiICtcbiAgICAgICAgICAgXCJpbiB0aGUgYHNpemVgIG1peGluLlwiO1xuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBTdHJpcHMgdGhlIHVuaXQgZnJvbSBhIG51bWJlci5cbi8vL1xuLy8vIEBhcmd1bWVudCB7bnVtYmVyfSAkdmFsdWVcbi8vL1xuLy8vIEByZXR1cm4ge251bWJlciAodW5pdGxlc3MpfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgJGRpbWVuc2lvbjogc3RyaXAtdW5pdCgxMGVtKTtcbi8vL1xuLy8vICAgLy8gT3V0cHV0XG4vLy8gICAkZGltZW5zaW9uOiAxMDtcblxuQGZ1bmN0aW9uIHN0cmlwLXVuaXQoJHZhbHVlKSB7XG4gIEByZXR1cm4gKCR2YWx1ZSAvICgkdmFsdWUgKiAwICsgMSkpO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8vXG4vLy8gQHR5cGUgbGlzdFxuLy8vXG4vLy8gQHJlcXVpcmUge2Z1bmN0aW9ufSBfYXNzaWduLWlucHV0c1xuLy8vXG4vLy8gQHJlcXVpcmUge3ZhcmlhYmxlfSAkX3RleHQtaW5wdXRzLWxpc3Rcbi8vLy9cblxuLy8vIEEgbGlzdCBvZiBhbGwgX3RleHQtYmFzZWRfIEhUTUwgaW5wdXRzLiBQbGVhc2Ugbm90ZSB0aGF0IHlvdSBtdXN0XG4vLy8gaW50ZXJwb2xhdGUgdGhlIHZhcmlhYmxlIChgI3t9YCkgdG8gdXNlIGl0IGFzIGEgc2VsZWN0b3IuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICAjeyRhbGwtdGV4dC1pbnB1dHN9IHtcbi8vLyAgICAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcbi8vLyAgIH1cbi8vL1xuLy8vICAgLy8gQ1NTIE91dHB1dFxuLy8vICAgW3R5cGU9J2NvbG9yJ10sXG4vLy8gICBbdHlwZT0nZGF0ZSddLFxuLy8vICAgW3R5cGU9J2RhdGV0aW1lJ10sXG4vLy8gICBbdHlwZT0nZGF0ZXRpbWUtbG9jYWwnXSxcbi8vLyAgIFt0eXBlPSdlbWFpbCddLFxuLy8vICAgW3R5cGU9J21vbnRoJ10sXG4vLy8gICBbdHlwZT0nbnVtYmVyJ10sXG4vLy8gICBbdHlwZT0ncGFzc3dvcmQnXSxcbi8vLyAgIFt0eXBlPSdzZWFyY2gnXSxcbi8vLyAgIFt0eXBlPSd0ZWwnXSxcbi8vLyAgIFt0eXBlPSd0ZXh0J10sXG4vLy8gICBbdHlwZT0ndGltZSddLFxuLy8vICAgW3R5cGU9J3VybCddLFxuLy8vICAgW3R5cGU9J3dlZWsnXSxcbi8vLyAgIGlucHV0Om5vdChbdHlwZV0pLFxuLy8vICAgdGV4dGFyZWEge1xuLy8vICAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xuLy8vICAgfVxuXG4kYWxsLXRleHQtaW5wdXRzOiBfYXNzaWduLWlucHV0cygkX3RleHQtaW5wdXRzLWxpc3QpO1xuXG4vLy8gQSBsaXN0IG9mIGFsbCBfdGV4dC1iYXNlZF8gSFRNTCBpbnB1dHMgd2l0aCB0aGUgYDphY3RpdmVgIHBzZXVkby1jbGFzc1xuLy8vIGFwcGxpZWQuIFBsZWFzZSBub3RlIHRoYXQgeW91IG11c3QgaW50ZXJwb2xhdGUgdGhlIHZhcmlhYmxlIChgI3t9YCkgdG8gdXNlXG4vLy8gaXQgYXMgYSBzZWxlY3Rvci5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgICN7JGFsbC10ZXh0LWlucHV0cy1hY3RpdmV9IHtcbi8vLyAgICAgYm9yZGVyOiAxcHggc29saWQgI2FhYTtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLy8gQ1NTIE91dHB1dFxuLy8vICAgW3R5cGU9J2NvbG9yJ106YWN0aXZlLFxuLy8vICAgW3R5cGU9J2RhdGUnXTphY3RpdmUsXG4vLy8gICBbdHlwZT0nZGF0ZXRpbWUnXTphY3RpdmUsXG4vLy8gICBbdHlwZT0nZGF0ZXRpbWUtbG9jYWwnXTphY3RpdmUsXG4vLy8gICBbdHlwZT0nZW1haWwnXTphY3RpdmUsXG4vLy8gICBbdHlwZT0nbW9udGgnXTphY3RpdmUsXG4vLy8gICBbdHlwZT0nbnVtYmVyJ106YWN0aXZlLFxuLy8vICAgW3R5cGU9J3Bhc3N3b3JkJ106YWN0aXZlLFxuLy8vICAgW3R5cGU9J3NlYXJjaCddOmFjdGl2ZSxcbi8vLyAgIFt0eXBlPSd0ZWwnXTphY3RpdmUsXG4vLy8gICBbdHlwZT0ndGV4dCddOmFjdGl2ZSxcbi8vLyAgIFt0eXBlPSd0aW1lJ106YWN0aXZlLFxuLy8vICAgW3R5cGU9J3VybCddOmFjdGl2ZSxcbi8vLyAgIFt0eXBlPSd3ZWVrJ106YWN0aXZlLFxuLy8vICAgaW5wdXQ6bm90KFt0eXBlXSk6YWN0aXZlLFxuLy8vICAgdGV4dGFyZWE6YWN0aXZlIHtcbi8vLyAgICAgYm9yZGVyOiAxcHggc29saWQgI2FhYTtcbi8vLyAgIH1cblxuJGFsbC10ZXh0LWlucHV0cy1hY3RpdmU6IF9hc3NpZ24taW5wdXRzKCRfdGV4dC1pbnB1dHMtbGlzdCwgYWN0aXZlKTtcblxuLy8vIEEgbGlzdCBvZiBhbGwgX3RleHQtYmFzZWRfIEhUTUwgaW5wdXRzIHdpdGggdGhlIGA6Zm9jdXNgIHBzZXVkby1jbGFzc1xuLy8vIGFwcGxpZWQuIFBsZWFzZSBub3RlIHRoYXQgeW91IG11c3QgaW50ZXJwb2xhdGUgdGhlIHZhcmlhYmxlIChgI3t9YCkgdG8gdXNlXG4vLy8gaXQgYXMgYSBzZWxlY3Rvci5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgICN7JGFsbC10ZXh0LWlucHV0cy1mb2N1c30ge1xuLy8vICAgICBib3JkZXI6IDFweCBzb2xpZCAjMTU2NWMwO1xuLy8vICAgfVxuLy8vXG4vLy8gICAvLyBDU1MgT3V0cHV0XG4vLy8gICBbdHlwZT0nY29sb3InXTpmb2N1cyxcbi8vLyAgIFt0eXBlPSdkYXRlJ106Zm9jdXMsXG4vLy8gICBbdHlwZT0nZGF0ZXRpbWUnXTpmb2N1cyxcbi8vLyAgIFt0eXBlPSdkYXRldGltZS1sb2NhbCddOmZvY3VzLFxuLy8vICAgW3R5cGU9J2VtYWlsJ106Zm9jdXMsXG4vLy8gICBbdHlwZT0nbW9udGgnXTpmb2N1cyxcbi8vLyAgIFt0eXBlPSdudW1iZXInXTpmb2N1cyxcbi8vLyAgIFt0eXBlPSdwYXNzd29yZCddOmZvY3VzLFxuLy8vICAgW3R5cGU9J3NlYXJjaCddOmZvY3VzLFxuLy8vICAgW3R5cGU9J3RlbCddOmZvY3VzLFxuLy8vICAgW3R5cGU9J3RleHQnXTpmb2N1cyxcbi8vLyAgIFt0eXBlPSd0aW1lJ106Zm9jdXMsXG4vLy8gICBbdHlwZT0ndXJsJ106Zm9jdXMsXG4vLy8gICBbdHlwZT0nd2VlayddOmZvY3VzLFxuLy8vICAgaW5wdXQ6bm90KFt0eXBlXSk6Zm9jdXMsXG4vLy8gICB0ZXh0YXJlYTpmb2N1cyB7XG4vLy8gICAgIGJvcmRlcjogMXB4IHNvbGlkICMxNTY1YzA7XG4vLy8gICB9XG5cbiRhbGwtdGV4dC1pbnB1dHMtZm9jdXM6IF9hc3NpZ24taW5wdXRzKCRfdGV4dC1pbnB1dHMtbGlzdCwgZm9jdXMpO1xuXG4vLy8gQSBsaXN0IG9mIGFsbCBfdGV4dC1iYXNlZF8gSFRNTCBpbnB1dHMgd2l0aCB0aGUgYDpob3ZlcmAgcHNldWRvLWNsYXNzXG4vLy8gYXBwbGllZC4gUGxlYXNlIG5vdGUgdGhhdCB5b3UgbXVzdCBpbnRlcnBvbGF0ZSB0aGUgdmFyaWFibGUgKGAje31gKSB0byB1c2Vcbi8vLyBpdCBhcyBhIHNlbGVjdG9yLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgI3skYWxsLXRleHQtaW5wdXRzLWhvdmVyfSB7XG4vLy8gICAgIGJvcmRlcjogMXB4IHNvbGlkICNhYWE7XG4vLy8gICB9XG4vLy9cbi8vLyAgIC8vIENTUyBPdXRwdXRcbi8vLyAgIFt0eXBlPSdjb2xvciddOmhvdmVyLFxuLy8vICAgW3R5cGU9J2RhdGUnXTpob3Zlcixcbi8vLyAgIFt0eXBlPSdkYXRldGltZSddOmhvdmVyLFxuLy8vICAgW3R5cGU9J2RhdGV0aW1lLWxvY2FsJ106aG92ZXIsXG4vLy8gICBbdHlwZT0nZW1haWwnXTpob3Zlcixcbi8vLyAgIFt0eXBlPSdtb250aCddOmhvdmVyLFxuLy8vICAgW3R5cGU9J251bWJlciddOmhvdmVyLFxuLy8vICAgW3R5cGU9J3Bhc3N3b3JkJ106aG92ZXIsXG4vLy8gICBbdHlwZT0nc2VhcmNoJ106aG92ZXIsXG4vLy8gICBbdHlwZT0ndGVsJ106aG92ZXIsXG4vLy8gICBbdHlwZT0ndGV4dCddOmhvdmVyLFxuLy8vICAgW3R5cGU9J3RpbWUnXTpob3Zlcixcbi8vLyAgIFt0eXBlPSd1cmwnXTpob3Zlcixcbi8vLyAgIFt0eXBlPSd3ZWVrJ106aG92ZXIsXG4vLy8gICBpbnB1dDpub3QoW3R5cGVdKTpob3Zlcixcbi8vLyAgIHRleHRhcmVhOmhvdmVyIHtcbi8vLyAgICAgYm9yZGVyOiAxcHggc29saWQgI2FhYTtcbi8vLyAgIH1cblxuJGFsbC10ZXh0LWlucHV0cy1ob3ZlcjogX2Fzc2lnbi1pbnB1dHMoJF90ZXh0LWlucHV0cy1saXN0LCBob3Zlcik7XG5cbi8vLyBBIGxpc3Qgb2YgYWxsIF90ZXh0LWJhc2VkXyBIVE1MIGlucHV0cyB3aXRoIHRoZSBgOmludmFsaWRgIHBzZXVkby1jbGFzc1xuLy8vIGFwcGxpZWQuIFBsZWFzZSBub3RlIHRoYXQgeW91IG11c3QgaW50ZXJwb2xhdGUgdGhlIHZhcmlhYmxlIChgI3t9YCkgdG8gdXNlXG4vLy8gaXQgYXMgYSBzZWxlY3Rvci5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgICN7JGFsbC10ZXh0LWlucHV0cy1pbnZhbGlkfSB7XG4vLy8gICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMGY7XG4vLy8gICB9XG4vLy9cbi8vLyAgIC8vIENTUyBPdXRwdXRcbi8vLyAgIFt0eXBlPSdjb2xvciddOmludmFsaWQsXG4vLy8gICBbdHlwZT0nZGF0ZSddOmludmFsaWQsXG4vLy8gICBbdHlwZT0nZGF0ZXRpbWUnXTppbnZhbGlkLFxuLy8vICAgW3R5cGU9J2RhdGV0aW1lLWxvY2FsJ106aW52YWxpZCxcbi8vLyAgIFt0eXBlPSdlbWFpbCddOmludmFsaWQsXG4vLy8gICBbdHlwZT0nbW9udGgnXTppbnZhbGlkLFxuLy8vICAgW3R5cGU9J251bWJlciddOmludmFsaWQsXG4vLy8gICBbdHlwZT0ncGFzc3dvcmQnXTppbnZhbGlkLFxuLy8vICAgW3R5cGU9J3NlYXJjaCddOmludmFsaWQsXG4vLy8gICBbdHlwZT0ndGVsJ106aW52YWxpZCxcbi8vLyAgIFt0eXBlPSd0ZXh0J106aW52YWxpZCxcbi8vLyAgIFt0eXBlPSd0aW1lJ106aW52YWxpZCxcbi8vLyAgIFt0eXBlPSd1cmwnXTppbnZhbGlkLFxuLy8vICAgW3R5cGU9J3dlZWsnXTppbnZhbGlkLFxuLy8vICAgaW5wdXQ6bm90KFt0eXBlXSk6aW52YWxpZCxcbi8vLyAgIHRleHRhcmVhOmludmFsaWQge1xuLy8vICAgICBib3JkZXI6IDFweCBzb2xpZCAjMDBmO1xuLy8vICAgfVxuXG4kYWxsLXRleHQtaW5wdXRzLWludmFsaWQ6IF9hc3NpZ24taW5wdXRzKCRfdGV4dC1pbnB1dHMtbGlzdCwgaW52YWxpZCk7XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vIHNjc3MtbGludDpkaXNhYmxlIFNwYWNlQWZ0ZXJDb21tYSwgVW5uZWNlc3NhcnlNYW50aXNzYSwgVHJhaWxpbmdaZXJvXG5cbi8vLy9cbi8vLyBDU1MgY3ViaWMtYmV6aWVyIHRpbWluZyBmdW5jdGlvbnMuXG4vLy9cbi8vLyBAbGluayBodHRwczovL2dvby5nbC9wOHU2U0tcbi8vL1xuLy8vIEB0eXBlIHN0cmluZ1xuLy8vL1xuXG4kZWFzZS1pbi1xdWFkOiAgICAgIGN1YmljLWJlemllcigwLjU1MCwgIDAuMDg1LCAwLjY4MCwgMC41MzApO1xuJGVhc2UtaW4tY3ViaWM6ICAgICBjdWJpYy1iZXppZXIoMC41NTAsICAwLjA1NSwgMC42NzUsIDAuMTkwKTtcbiRlYXNlLWluLXF1YXJ0OiAgICAgY3ViaWMtYmV6aWVyKDAuODk1LCAgMC4wMzAsIDAuNjg1LCAwLjIyMCk7XG4kZWFzZS1pbi1xdWludDogICAgIGN1YmljLWJlemllcigwLjc1NSwgIDAuMDUwLCAwLjg1NSwgMC4wNjApO1xuJGVhc2UtaW4tc2luZTogICAgICBjdWJpYy1iZXppZXIoMC40NzAsICAwLjAwMCwgMC43NDUsIDAuNzE1KTtcbiRlYXNlLWluLWV4cG86ICAgICAgY3ViaWMtYmV6aWVyKDAuOTUwLCAgMC4wNTAsIDAuNzk1LCAwLjAzNSk7XG4kZWFzZS1pbi1jaXJjOiAgICAgIGN1YmljLWJlemllcigwLjYwMCwgIDAuMDQwLCAwLjk4MCwgMC4zMzUpO1xuJGVhc2UtaW4tYmFjazogICAgICBjdWJpYy1iZXppZXIoMC42MDAsIC0wLjI4MCwgMC43MzUsIDAuMDQ1KTtcblxuJGVhc2Utb3V0LXF1YWQ6ICAgICBjdWJpYy1iZXppZXIoMC4yNTAsICAwLjQ2MCwgMC40NTAsIDAuOTQwKTtcbiRlYXNlLW91dC1jdWJpYzogICAgY3ViaWMtYmV6aWVyKDAuMjE1LCAgMC42MTAsIDAuMzU1LCAxLjAwMCk7XG4kZWFzZS1vdXQtcXVhcnQ6ICAgIGN1YmljLWJlemllcigwLjE2NSwgIDAuODQwLCAwLjQ0MCwgMS4wMDApO1xuJGVhc2Utb3V0LXF1aW50OiAgICBjdWJpYy1iZXppZXIoMC4yMzAsICAxLjAwMCwgMC4zMjAsIDEuMDAwKTtcbiRlYXNlLW91dC1zaW5lOiAgICAgY3ViaWMtYmV6aWVyKDAuMzkwLCAgMC41NzUsIDAuNTY1LCAxLjAwMCk7XG4kZWFzZS1vdXQtZXhwbzogICAgIGN1YmljLWJlemllcigwLjE5MCwgIDEuMDAwLCAwLjIyMCwgMS4wMDApO1xuJGVhc2Utb3V0LWNpcmM6ICAgICBjdWJpYy1iZXppZXIoMC4wNzUsICAwLjgyMCwgMC4xNjUsIDEuMDAwKTtcbiRlYXNlLW91dC1iYWNrOiAgICAgY3ViaWMtYmV6aWVyKDAuMTc1LCAgMC44ODUsIDAuMzIwLCAxLjI3NSk7XG5cbiRlYXNlLWluLW91dC1xdWFkOiAgY3ViaWMtYmV6aWVyKDAuNDU1LCAgMC4wMzAsIDAuNTE1LCAwLjk1NSk7XG4kZWFzZS1pbi1vdXQtY3ViaWM6IGN1YmljLWJlemllcigwLjY0NSwgIDAuMDQ1LCAwLjM1NSwgMS4wMDApO1xuJGVhc2UtaW4tb3V0LXF1YXJ0OiBjdWJpYy1iZXppZXIoMC43NzAsICAwLjAwMCwgMC4xNzUsIDEuMDAwKTtcbiRlYXNlLWluLW91dC1xdWludDogY3ViaWMtYmV6aWVyKDAuODYwLCAgMC4wMDAsIDAuMDcwLCAxLjAwMCk7XG4kZWFzZS1pbi1vdXQtc2luZTogIGN1YmljLWJlemllcigwLjQ0NSwgIDAuMDUwLCAwLjU1MCwgMC45NTApO1xuJGVhc2UtaW4tb3V0LWV4cG86ICBjdWJpYy1iZXppZXIoMS4wMDAsICAwLjAwMCwgMC4wMDAsIDEuMDAwKTtcbiRlYXNlLWluLW91dC1jaXJjOiAgY3ViaWMtYmV6aWVyKDAuNzg1LCAgMC4xMzUsIDAuMTUwLCAwLjg2MCk7XG4kZWFzZS1pbi1vdXQtYmFjazogIGN1YmljLWJlemllcigwLjY4MCwgLTAuNTUwLCAwLjI2NSwgMS41NTApO1xuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gTWl4ZXMgYSBjb2xvciB3aXRoIHdoaXRlLlxuLy8vXG4vLy8gQGFyZ3VtZW50IHtjb2xvcn0gJGNvbG9yXG4vLy9cbi8vLyBAYXJndW1lbnQge251bWJlciAocGVyY2VudGFnZSl9ICRwZXJjZW50XG4vLy8gICBUaGUgYW1vdW50IG9mIHdoaXRlIHRvIGJlIG1peGVkIGluLlxuLy8vXG4vLy8gQHJldHVybiB7Y29sb3J9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6IHRpbnQoIzZlY2FhNiwgNDAlKTtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLy8gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYThkZmM5O1xuLy8vICAgfVxuXG5AZnVuY3Rpb24gdGludChcbiAgICAkY29sb3IsXG4gICAgJHBlcmNlbnRcbiAgKSB7XG5cbiAgQGlmIG5vdCBfaXMtY29sb3IoJGNvbG9yKSB7XG4gICAgQGVycm9yIFwiYCN7JGNvbG9yfWAgaXMgbm90IGEgdmFsaWQgY29sb3IgZm9yIHRoZSBgJGNvbG9yYCBhcmd1bWVudCBpbiBcIiArXG4gICAgICAgICAgIFwidGhlIGB0aW50YCBtaXhpbi5cIjtcbiAgfSBAZWxzZSB7XG4gICAgQHJldHVybiBtaXgoI2ZmZiwgJGNvbG9yLCAkcGVyY2VudCk7XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIEdlbmVyYXRlcyBhIHRyaWFuZ2xlIHBvaW50aW5nIGluIGEgc3BlY2lmaWVkIGRpcmVjdGlvbi5cbi8vL1xuLy8vIEBhcmd1bWVudCB7c3RyaW5nfSAkZGlyZWN0aW9uIFt1cF1cbi8vLyAgIFRoZSBkaXJlY3Rpb24gdGhlIHRyaWFuZ2xlIHNob3VsZCBwb2ludC4gQWNjZXB0cyBgdXBgLCBgdXAtcmlnaHRgLFxuLy8vICAgYHJpZ2h0YCwgYGRvd24tcmlnaHRgLCBgZG93bmAsIGBkb3duLWxlZnRgLCBgbGVmdGAgb3IgYHVwLWxlZnRgLlxuLy8vXG4vLy8gQGFyZ3VtZW50IHtjb2xvcn0gJGNvbG9yIFtjdXJyZW50Q29sb3JdXG4vLy8gICBDb2xvciBvZiB0aGUgdHJpYW5nbGUuXG4vLy9cbi8vLyBAYXJndW1lbnQge251bWJlciAod2l0aCB1bml0KX0gJHdpZHRoIFsxcmVtXVxuLy8vICAgV2lkdGggb2YgdGhlIHRyaWFuZ2xlLlxuLy8vXG4vLy8gQGFyZ3VtZW50IHtudW1iZXIgKHdpdGggdW5pdCl9ICRoZWlnaHQgWygkd2lkdGggLyAyKV1cbi8vLyAgIEhlaWdodCBvZiB0aGUgdHJpYW5nbGUuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgICY6OmJlZm9yZSB7XG4vLy8gICAgICAgQGluY2x1ZGUgdHJpYW5nbGUodXAsICNiMjVjOWMsIDJyZW0pO1xuLy8vICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4vLy8gICAgIH1cbi8vLyAgIH1cbi8vL1xuLy8vICAgLy8gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQ6OmJlZm9yZSB7XG4vLy8gICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4vLy8gICAgIGhlaWdodDogMDtcbi8vLyAgICAgd2lkdGg6IDA7XG4vLy8gICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgI2IyNWM5YyB0cmFuc3BhcmVudDtcbi8vLyAgICAgYm9yZGVyLXdpZHRoOiAwIDFyZW0gMXJlbTtcbi8vLyAgICAgY29udGVudDogXCJcIjtcbi8vLyAgIH1cblxuQG1peGluIHRyaWFuZ2xlKFxuICAgICRkaXJlY3Rpb246IHVwLFxuICAgICRjb2xvcjogY3VycmVudENvbG9yLFxuICAgICR3aWR0aDogMXJlbSxcbiAgICAkaGVpZ2h0OiAoJHdpZHRoIC8gMilcbiAgKSB7XG4gIEBpZiBub3QgaW5kZXgoXG4gICAgICBcInVwXCIgXCJ1cC1yaWdodFwiIFwicmlnaHRcIiBcImRvd24tcmlnaHRcIiBcImRvd25cIiBcImRvd24tbGVmdFwiIFwibGVmdFwiIFwidXAtbGVmdFwiLFxuICAgICAgJGRpcmVjdGlvblxuICAgICkge1xuICAgIEBlcnJvciBcIkRpcmVjdGlvbiBtdXN0IGJlIGB1cGAsIGB1cC1yaWdodGAsIGByaWdodGAsIGBkb3duLXJpZ2h0YCwgXCIgK1xuICAgICAgICAgICBcImBkb3duYCwgYGRvd24tbGVmdGAsIGBsZWZ0YCBvciBgdXAtbGVmdGAuXCI7XG4gIH0gQGVsc2UgaWYgbm90IF9pcy1jb2xvcigkY29sb3IpIHtcbiAgICBAZXJyb3IgXCJgI3skY29sb3J9YCBpcyBub3QgYSB2YWxpZCBjb2xvciBmb3IgdGhlIGAkY29sb3JgIGFyZ3VtZW50IGluIFwiICtcbiAgICAgICAgICAgXCJ0aGUgYHRyaWFuZ2xlYCBtaXhpbi5cIjtcbiAgfSBAZWxzZSB7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICBoZWlnaHQ6IDA7XG4gICAgd2lkdGg6IDA7XG5cbiAgICBAaWYgJGRpcmVjdGlvbiA9PSBcInVwXCIge1xuICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAkY29sb3I7XG4gICAgICBib3JkZXItd2lkdGg6IDAgKCR3aWR0aCAvIDIpICRoZWlnaHQ7XG4gICAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09IFwidXAtcmlnaHRcIiB7XG4gICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICRjb2xvciB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlci13aWR0aDogMCAkd2lkdGggJHdpZHRoIDA7XG4gICAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09IFwicmlnaHRcIiB7XG4gICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICRjb2xvcjtcbiAgICAgIGJvcmRlci13aWR0aDogKCRoZWlnaHQgLyAyKSAwICgkaGVpZ2h0IC8gMikgJHdpZHRoO1xuICAgIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBcImRvd24tcmlnaHRcIiB7XG4gICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICRjb2xvcjtcbiAgICAgIGJvcmRlci13aWR0aDogMCAwICR3aWR0aCAkd2lkdGg7XG4gICAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09IFwiZG93blwiIHtcbiAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLXdpZHRoOiAkaGVpZ2h0ICgkd2lkdGggLyAyKSAwO1xuICAgIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBcImRvd24tbGVmdFwiIHtcbiAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgJGNvbG9yO1xuICAgICAgYm9yZGVyLXdpZHRoOiAkd2lkdGggMCAwICR3aWR0aDtcbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gXCJsZWZ0XCIge1xuICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCAkY29sb3IgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItd2lkdGg6ICgkaGVpZ2h0IC8gMikgJHdpZHRoICgkaGVpZ2h0IC8gMikgMDtcbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gXCJ1cC1sZWZ0XCIge1xuICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3IgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItd2lkdGg6ICR3aWR0aCAkd2lkdGggMCAwO1xuICAgIH1cbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gR2VuZXJhdGVzIHZlbmRvciBwcmVmaXhlcyBmb3IgdmFsdWVzLlxuLy8vXG4vLy8gQGFyZ3VtZW50IHtzdHJpbmd9ICRwcm9wZXJ0eVxuLy8vICAgUHJvcGVydHkgdG8gdXNlLlxuLy8vXG4vLy8gQGFyZ3VtZW50IHtzdHJpbmd9ICR2YWx1ZVxuLy8vICAgVmFsdWUgdG8gcHJlZml4LlxuLy8vXG4vLy8gQGFyZ3VtZW50IHtsaXN0fSAkcHJlZml4ZXNcbi8vLyAgIFZlbmRvciBwcmVmaXhlcyB0byBvdXRwdXQuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIHZhbHVlLXByZWZpeGVyKGN1cnNvciwgZ3JhYiwgKFwid2Via2l0XCIsIFwibW96XCIpKTtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLy8gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBjdXJzb3I6IC13ZWJraXQtZ3JhYjtcbi8vLyAgICAgY3Vyc29yOiAtbW96LWdyYWI7XG4vLy8gICAgIGN1cnNvcjogZ3JhYjtcbi8vLyAgIH1cbi8vL1xuLy8vIEBhdXRob3IgTWF0dGhldyBUb2JpYXN6XG5cbkBtaXhpbiB2YWx1ZS1wcmVmaXhlcihcbiAgICAkcHJvcGVydHksXG4gICAgJHZhbHVlLFxuICAgICRwcmVmaXhlczogKClcbiAgKSB7XG5cbiAgQGVhY2ggJHByZWZpeCBpbiAkcHJlZml4ZXMge1xuICAgICN7JHByb3BlcnR5fTogI3tcIi1cIiArICRwcmVmaXggKyBcIi1cIiArICR2YWx1ZX07XG4gIH1cbiAgI3skcHJvcGVydHl9OiAkdmFsdWU7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG4vLyBOZWF0IDIuMC4wXG4vLyBodHRwOi8vbmVhdC5ib3VyYm9uLmlvXG4vLyBDb3B5cmlnaHQgMjAxMiB0aG91Z2h0Ym90LCBpbmMuXG4vLyBNSVQgTGljZW5zZVxuXG5AaW1wb3J0IFwibmVhdC9zZXR0aW5ncy9zZXR0aW5nc1wiO1xuXG5AaW1wb3J0IFwibmVhdC9mdW5jdGlvbnMvcmV0cmlldmUtbmVhdC1zZXR0aW5nc1wiO1xuQGltcG9ydCBcIm5lYXQvZnVuY3Rpb25zL25lYXQtY29sdW1uLWRlZmF1bHRcIjtcbkBpbXBvcnQgXCJuZWF0L2Z1bmN0aW9ucy9uZWF0LWNvbHVtbi13aWR0aFwiO1xuQGltcG9ydCBcIm5lYXQvZnVuY3Rpb25zL25lYXQtY29sdW1uLXJhdGlvXCI7XG5AaW1wb3J0IFwibmVhdC9mdW5jdGlvbnMvbmVhdC1mbG9hdC1kaXJlY3Rpb25cIjtcbkBpbXBvcnQgXCJuZWF0L2Z1bmN0aW9ucy9uZWF0LW1lcmdlLWRlZmF1bHRzXCI7XG5AaW1wb3J0IFwibmVhdC9mdW5jdGlvbnMvbmVhdC1vcHBvc2l0ZS1kaXJlY3Rpb25cIjtcbkBpbXBvcnQgXCJuZWF0L2Z1bmN0aW9ucy9uZWF0LXBhcnNlLWNvbHVtbnNcIjtcbkBpbXBvcnQgXCJuZWF0L2Z1bmN0aW9ucy9uZWF0LXBhcnNlLW1lZGlhXCI7XG5AaW1wb3J0IFwibmVhdC9mdW5jdGlvbnMvbmVhdC1hcHBlbmQtZ3JpZC12aXN1YWxcIjtcblxuQGltcG9ydCBcIm5lYXQvbWl4aW5zL2dyaWQtY29sbGFwc2VcIjtcbkBpbXBvcnQgXCJuZWF0L21peGlucy9ncmlkLWNvbHVtblwiO1xuQGltcG9ydCBcIm5lYXQvbWl4aW5zL2dyaWQtY29udGFpbmVyXCI7XG5AaW1wb3J0IFwibmVhdC9taXhpbnMvZ3JpZC1tZWRpYVwiO1xuQGltcG9ydCBcIm5lYXQvbWl4aW5zL2dyaWQtcHVzaFwiO1xuQGltcG9ydCBcIm5lYXQvbWl4aW5zL2dyaWQtc2hpZnRcIjtcbkBpbXBvcnQgXCJuZWF0L21peGlucy9ncmlkLXZpc3VhbFwiO1xuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuLy8vIFRoaXMgdmFyaWFibGUgaXMgYSBzYXNzIG1hcCB0aGF0IG92ZXJyaWRlcyBOZWF0J3MgZGVmYXVsdCBncmlkIHNldHRpbmdzLlxuLy8vIFVzZSB0aGlzIHRvIGRlZmluZSB5b3VyIHByb2plY3QncyBncmlkIHByb3BlcnRpZXMgaW5jbHV0aW5nIGd1dHRlcnMgYW5kXG4vLy8gdG90YWwgY29sdW1uIGNvdW50LlxuLy8vXG4vLy8gQHR5cGUgbWFwXG4vLy9cbi8vLyBAZ3JvdXAgc2V0dGluZ3Ncbi8vL1xuLy8vIEBuYW1lIE5lYXQgZ3JpZFxuLy8vXG4vLy8gQHByb3BlcnR5IHtudW1iZXIgKHVuaXRsZXNzKX0gY29sdW1ucyBbMTJdXG4vLy8gICBEZWZhdWx0IG51bWJlciBvZiB0aGUgdG90YWwgZ3JpZCBjb2x1bW5zLlxuLy8vXG4vLy8gQHByb3BlcnR5IHtudW1iZXIgKHdpdGggdW5pdCl9IGd1dHRlciBbMjBweF1cbi8vLyAgIERlZmF1bHQgZ3JpZCBndXR0ZXIgd2lkdGggYmV0d2VlbiBjb2x1bW5zLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgJG5lYXQtZ3JpZDogKFxuLy8vICAgICBjb2x1bW5zOiAxMixcbi8vLyAgICAgZ3V0dGVyOiAyMHB4LFxuLy8vICAgKTtcblxuJG5lYXQtZ3JpZDogKCkgIWRlZmF1bHQ7XG5cbi8vLyBJZiB5b3UgbmVlZCBtdWx0aXBsZSBncmlkcyBpbiBhIHNpbmdsZSBwcm9qZWN0LCB5b3UgY2FuIGRvXG4vLy8gdGhpcyBieSBkZWZpbmluZyBhIG5ldyBtYXAgc3RvcmVkIHdpdGhpbiBhIHZhcmlhYmxlIG9mIHlvdXIgY2hvb3NpbmcuIFRoaXNcbi8vLyB2YXJpYWJsZSBjYW4gdGhlbiBiZSBwYXNzZWQgZGlyZWN0bHkgaW4gdG8gYW55IG9mIE5lYXQncyBtaXhpbnMgbGlrZVxuLy8vIFtgZ3JpZC1jb2x1bW4oMTIsICRteS1jdXN0b20tZ3JpZClgXSgjZ3JpZC1jb2x1bW4pLlxuLy8vXG4vLy8gQ3VzdG9tIGdyaWRzIGFyZSBlc3BlY2lhbGx5IHVzZWZ1bCB3aXRoIFtgZ3JpZC1tZWRpYWBdKCNncmlkLW1lZGlhKS4gQnlcbi8vLyBkZWZpbmluZyBhIGBtZWRpYWAgYXR0cmlidXRlIHdpdGhpbiB5b3VyIGN1c3RvbSBncmlkLCB5b3UgYXJlIGFibGUgdG8gZWFzaWx5XG4vLy8gZGVmaW5lIGd1dHRlciB3aWR0aCBhbmQgdG90YWwgY29sdW1uIGNvdW50IGFzIHdlbGwgdGhlIGJyZWFrcG9pbnQgYXQgd2hpY2hcbi8vLyB0aGV5IHNob3VsZCBhY3RpdmF0ZS5cbi8vL1xuLy8vIEB0eXBlIG1hcFxuLy8vXG4vLy8gQGdyb3VwIHNldHRpbmdzXG4vLy9cbi8vLyBAbmFtZSBDdXN0b20gZ3JpZHNcbi8vL1xuLy8vIEBwcm9wZXJ0eSB7bnVtYmVyICh1bml0bGVzcyl9IGNvbHVtbnMgWzEyXVxuLy8vICAgTnVtYmVyIG9mIHRoZSB0b3RhbCBncmlkIGNvbHVtbnMuXG4vLy9cbi8vLyBAcHJvcGVydHkge251bWJlciAod2l0aCB1bml0KX0gZ3V0dGVyIFsyMHB4XVxuLy8vICAgR3JpZCBndXR0ZXIgd2lkdGggYmV0d2VlbiBjb2x1bW5zLlxuLy8vXG4vLy8gQHByb3BlcnR5IHtudW1iZXIgKHdpdGggdW5pdCkgfCBzdHJpbmcgfCBudWxsfSBtZWRpYSBbbnVsbF1cbi8vLyAgIFRoZSBgQG1lZGlhYCBkZWZpbml0aW9uIHRoYXQgaXMgdXNlZCBieSB0aGUgW2BncmlkLW1lZGlhYF0oI2dyaWQtbWVkaWEpXG4vLy8gICBtaXhpbiB0byBkZXRpcm1pbmUgdGhlIG1lZGlhIHByb3BlcnRpZXMuXG4vLy9cbi8vLyBAcHJvcGVydHkge2NvbG9yfSBjb2xvciBbbnVsbF1cbi8vLyAgIFRoZSBjb2xvciB1c2VkIGJ5IFtgZ3JpZC12aXN1YWxgXSgjZ3JpZC12aXN1YWwpIHRvIGNyZWF0ZSB0aGUgZ3VpZGVzLlxuLy8vXG4vLy8gQHByb3BlcnR5IHtzdHJpbmd9IGRpcmVjdGlvbiBbbHRyXVxuLy8vICAgVGhlIGZsb2F0IGRpcmVjdGlvbiB1c2VkIHRocm91Z2hvdXQgdGhlIGdyaWQuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICAkbXktY3VzdG9tLWdyaWQ6IChcbi8vLyAgICAgY29sdW1uczogMTIsXG4vLy8gICAgIGd1dHRlcjogMjBweCxcbi8vLyAgICAgbWVkaWE6IDEyMDBweCxcbi8vLyAgICAgY29sb3I6IHJnYmEoIzAwZDRmZiwgMC4yNSksXG4vLy8gICAgIGRpcmVjdGlvbjogbHRyLFxuLy8vICAgKTtcbi8vL1xuLy8vICAgJG90aGVyLWN1c3RvbS1ncmlkLWZvci1wcmludDogKFxuLy8vICAgICBjb2x1bW5zOiAxNCxcbi8vLyAgICAgZ3V0dGVyOiAxLjVyZW0sXG4vLy8gICAgIG1lZGlhOiBwcmludCxcbi8vLyAgICk7XG4vLy9cblxuJG5lYXQtY3VzdG9tLWdyaWQ6ICgpICFkZWZhdWx0O1xuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuLy8vIFRoaXMgZnVuY3Rpb24gcmVjaXZlcyBhIGdyaWQgbWFwIGFuZCBtZXJnZXMgaXQgd2l0aCBOZWF0J3MgZGVmYXVscy5cbi8vLyBJdCB0aGVuIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSB0aGF0IGhhcyBiZWVuIHBhc3NlZCB0byBpdC5cbi8vL1xuLy8vIEBhcmd1bWVudCB7bWFwfSAkZ3JpZFxuLy8vXG4vLy8gQGFyZ3VtZW50IHtzdHJpbmd9ICRzZXR0aW5nXG4vLy9cbi8vLyBAcmV0dXJuIHtib29sZWFuIHwgY29sb3IgfCBsaXN0IHwgbnVtYmVyIHwgc3RyaW5nfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgX3JldHJpZXZlLW5lYXQtc2V0dGluZygkbmVhdC1ncmlkLCBjb2x1bW5zKVxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5cbkBmdW5jdGlvbiBfcmV0cmlldmUtbmVhdC1zZXR0aW5nKCRncmlkLCAkc2V0dGluZykge1xuICAkX2dyaWQtc2V0dGluZ3M6IG1hcC1tZXJnZShfbmVhdC1tZXJnZS1kZWZhdWx0cygkbmVhdC1ncmlkKSwgJGdyaWQpO1xuICBAcmV0dXJuIG1hcC1nZXQoJF9ncmlkLXNldHRpbmdzLCAkc2V0dGluZyk7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG4vLy8gRGV0ZXJtaW5lIGlmIGEgY29sdW1uIGNvdW50IGhhcyBiZWVuIGdpdmVuLlxuLy8vIElmIG5vIGNvbHVtbnMgaGF2ZSBiZWVuIGdpdmVuIHJldHVybiB0aGUgZ3JpZCdzIHRvdGFsIGNvbHVtbiBjb3VudC5cbi8vL1xuLy8vIEBhcmd1bWVudCB7bWFwfSAkZ3JpZFxuLy8vXG4vLy8gQGFyZ3VtZW50IHtudW1iZXIgKHVuaXRsZXNzKSB8IG51bGx9ICRjb2x1bW5zXG4vLy9cbi8vLyBAcmV0dXJuIHtudW1iZXJ9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICBfbmVhdC1jb2x1bW4tZGVmYXVsdCgkbmVhdC1ncmlkLCA0KVxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5cbkBmdW5jdGlvbiBfbmVhdC1jb2x1bW4tZGVmYXVsdCgkZ3JpZCwgJGNvbHVtbnMpIHtcbiAgQGlmICRjb2x1bW5zID09IG51bGwge1xuICAgICRfZ3JpZC1jb2x1bW5zOiBfcmV0cmlldmUtbmVhdC1zZXR0aW5nKCRncmlkLCBjb2x1bW5zKTtcbiAgICBAcmV0dXJuICRfZ3JpZC1jb2x1bW5zO1xuICB9IEBlbHNlIHtcbiAgICBAcmV0dXJuICRjb2x1bW5zO1xuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG4vLy8gUmV0dXJuIGEgY2FsdWxhdGVkIGNvbHVtbiB3aWR0aCB0aGF0IGNhbiB0aGVuIGJlIHBhc3NlZCBpbiB0byBhIGBjYWxjKClgLlxuLy8vXG4vLy8gQGFyZ3VtZW50IHttYXB9ICRncmlkXG4vLy9cbi8vLyBAYXJndW1lbnQge251bWJlcn0gJGNvbHVtbnNcbi8vL1xuLy8vIEByZXR1cm4ge3N0cmluZ31cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgIF9uZWF0LWNvbHVtbi13aWR0aCgkbmVhdC1ncmlkLCA0KVxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5cbkBmdW5jdGlvbiBfbmVhdC1jb2x1bW4td2lkdGgoJGdyaWQsICRjb2x1bW5zKSB7XG4gICRfY29sdW1uLXJhdGlvOiBfbmVhdC1jb2x1bW4tcmF0aW8oJGdyaWQsICRjb2x1bW5zKTtcbiAgJF9ndXR0ZXI6IF9yZXRyaWV2ZS1uZWF0LXNldHRpbmcoJGdyaWQsIGd1dHRlcik7XG5cbiAgQGlmICRfZ3V0dGVyID09IDAge1xuICAgIEByZXR1cm4gdW5xdW90ZShcIiN7cGVyY2VudGFnZSgkX2NvbHVtbi1yYXRpbyl9XCIpO1xuICB9IEBlbHNlIHtcbiAgICAkX2d1dHRlci1hZmZvcmRhbmNlOiAkX2d1dHRlciArICgkX2d1dHRlciAqICRfY29sdW1uLXJhdGlvKTtcbiAgICBAcmV0dXJuIHVucXVvdGUoXCIje3BlcmNlbnRhZ2UoJF9jb2x1bW4tcmF0aW8pfSAtICN7JF9ndXR0ZXItYWZmb3JkYW5jZX1cIik7XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcbi8vLyBEZXRlcm1pbmUgdGhlIHJhdGlvIG9mIGAkY29sdW1uc2AgdG8gdGhlIHRvdGFsIGNvbHVtbiBjb3VudC5cbi8vLyBJZiBgJGNvbHVtbnNgIGlzIG1vcmUgdGhhbiBvbmUgdmFsdWUsIHRoZXkgYXJlIGhhbmRlZCB0b1xuLy8vIGBfbmVhdC1wYXJzZS1jb2x1bW5zKClgIHdoaWNoIHdpbGwgZGV0aXJtaW5lIHRoZSB0b3RhbCBjb2x1bW5zIGFuZCB1c2UgdGhpc1xuLy8vIHZhbHVlIGluc3RlYWQgb2YgYHRvdGFsLWNvbHVtbnNgLlxuLy8vXG4vLy8gQGFyZ3VtZW50IHttYXB9ICRncmlkXG4vLy9cbi8vLyBAYXJndW1lbnQge251bWJlciB8IGxpc3R9ICRjb2x1bW5zXG4vLy9cbi8vLyBAcmV0dXJuIHtudW1iZXJ9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICBfbmVhdC1jb2x1bW4tcmF0aW8oJGdyaWQsIDMpXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcblxuQGZ1bmN0aW9uIF9uZWF0LWNvbHVtbi1yYXRpbygkZ3JpZCwgJGNvbHVtbnMpIHtcbiAgQGlmIGxlbmd0aCgkY29sdW1ucykgPiAxIHtcbiAgICBAcmV0dXJuIG50aCgkY29sdW1ucywgMSkgLyBfbmVhdC1wYXJzZS1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgfSBAZWxzZSBpZiAkY29sdW1ucyB7XG4gICAgQHJldHVybiAkY29sdW1ucyAvIF9yZXRyaWV2ZS1uZWF0LXNldHRpbmcoJGdyaWQsIGNvbHVtbnMpO1xuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG4vLy8gUmV0dXJuIHRoZSBmbG9hdCBkaXJlY3Rpb24gb2YgdGhlIGdyaWQuXG4vLy9cbi8vLyBAYXJndW1lbnQge21hcH0gJGdyaWRcbi8vL1xuLy8vIEByZXR1cm4ge3N0cmluZ31cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgIF9uZWF0LWZsb2F0LWRpcmVjdGlvbigkbmVhdC1ncmlkKVxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5cbkBmdW5jdGlvbiBfbmVhdC1mbG9hdC1kaXJlY3Rpb24oJGdyaWQpIHtcbiAgJF9kaXJlY3Rpb246IF9yZXRyaWV2ZS1uZWF0LXNldHRpbmcoJGdyaWQsIGRpcmVjdGlvbik7XG4gICRfZmxvYXQtZGlyZWN0aW9uOiBudWxsO1xuICBAaWYgJF9kaXJlY3Rpb24gPT0gXCJsdHJcIiB7XG4gICAgICAkX2Zsb2F0LWRpcmVjdGlvbjogbGVmdDtcbiAgfSBAZWxzZSBpZiAkX2RpcmVjdGlvbiA9PSBcInJ0bFwiIHtcbiAgICAkX2Zsb2F0LWRpcmVjdGlvbjogcmlnaHQ7XG4gIH1cbiAgQHJldHVybiAkX2Zsb2F0LWRpcmVjdGlvbjtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcbi8vLyBBcHBseSBOZWF0J3MgZGVmYXVsdCBwcm9wZXJ0aWVzIHRvIHVuZGVmaW5lZCB2YWx1ZXMgd2l0aGluIGEgbWFwLlxuLy8vXG4vLy8gQGFyZ3VtZW50IHttYXB9ICRncmlkXG4vLy9cbi8vLyBAcmV0dXJuIHttYXB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICBfcmV0cmlldmUtbmVhdC1zZXR0aW5nKCRuZWF0LWdyaWQpXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcblxuQGZ1bmN0aW9uIF9uZWF0LW1lcmdlLWRlZmF1bHRzKCRncmlkKSB7XG4gICRfbWVyZ2VkLWdyaWQ6IG1hcC1tZXJnZSgoXG4gICAgY29sdW1uczogMTIsXG4gICAgZ3V0dGVyOiAyMHB4LFxuICAgIG1lZGlhOiBudWxsLFxuICAgIGNvbG9yOiByZ2JhKCMwMGQ0ZmYsIDAuMjUpLFxuICAgIGRpcmVjdGlvbjogbHRyLFxuICApLCAkZ3JpZCk7XG5cbiAgQHJldHVybiAkX21lcmdlZC1ncmlkO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuLy8vIFJldHVybiB0aGUgb3Bwb2l0ZSBvZiB0aGUgZmxvYXQgZGlyZWN0aW9uIG9mIHRoZSBncmlkLlxuLy8vXG4vLy8gQGFyZ3VtZW50IHttYXB9ICRncmlkXG4vLy9cbi8vLyBAcmV0dXJuIHtzdHJpbmd9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICBfbmVhdC1vcHBvc2l0ZS1kaXJlY3Rpb24oJG5lYXQtZ3JpZClcbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuXG5AZnVuY3Rpb24gX25lYXQtb3Bwb3NpdGUtZGlyZWN0aW9uKCRncmlkKSB7XG4gICRfZGlyZWN0aW9uOiBfcmV0cmlldmUtbmVhdC1zZXR0aW5nKCRncmlkLCBkaXJlY3Rpb24pO1xuICAkX2Zsb2F0LWRpcmVjdGlvbjogbnVsbDtcbiAgQGlmICRfZGlyZWN0aW9uID09IFwibHRyXCIge1xuICAgICAgJF9mbG9hdC1kaXJlY3Rpb246IHJpZ2h0O1xuICB9IEBlbHNlIGlmICRfZGlyZWN0aW9uID09IFwicnRsXCIge1xuICAgICRfZmxvYXQtZGlyZWN0aW9uOiBsZWZ0O1xuICB9XG4gIEByZXR1cm4gJF9mbG9hdC1kaXJlY3Rpb247XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG4vLy8gUGFyc2UgYSBjb2x1bW4gY291bnQgbGlrZSBgMyBvZiA1YCBhbmQgcmV0dXIgdGhlIHRvdGFsIGNvbG91bW4gY291bnQuXG4vLy8gVGhpcyBpcyB0byBhbGxvdyBhIHNob3J0aGFuZCBmb3IgY3VzdG9tIGdyaWRzIHdpdGhvdXQgdXNpbmcgYSBzZXR0aW5ncyBtYXAuXG4vLy9cbi8vL1xuLy8vIEBhcmd1bWVudCB7bGlzdH0gJHNwYW5cbi8vL1xuLy8vIEByZXR1cm4ge251bWJlcn1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgIF9uZWF0LXBhcnNlLWNvbHVtbnMoMyBvZiA1KVxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5cbkBmdW5jdGlvbiBfbmVhdC1wYXJzZS1jb2x1bW5zKCRzcGFuKSB7XG4gIEBpZiBsZW5ndGgoJHNwYW4pID09IDMge1xuICAgICRfdG90YWwtY29sdW1uczogbnRoKCRzcGFuLCAzKTtcbiAgICBAcmV0dXJuICRfdG90YWwtY29sdW1ucztcbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHNwYW4pID09IDIgb3IgaWYgbGVuZ3RoKCRzcGFuKSA+PSAzIHtcbiAgICBAZXJyb3IgXCJgJGNvbHVtbmAgc2hvdWxkIGNvbnRhaW4gMiB2YWx1ZXMsIHNlcGVyYXRlZCBieSBhbiBgb2ZgXCI7XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcbi8vLyBQYXJzZSBtZWRpYSB0eXBlcy4gSWYgdGhlIHByb3BlcnR5IGlzIGEgc3RyaW5nIHRoZW4gcmV0dXJuIGl0LCBvdGhlcndpc2Vcbi8vLyBhc3N1bWUgc2NyZWVuIGFuZCBtaW4td2lkdGguXG4vLy9cbi8vLyBAYXJndW1lbnQge3N0cmluZyB8IG51bWJlciAod2l0aCB1bml0KX0gJG1lZGlhXG4vLy9cbi8vLyBAcmV0dXJuIHtudW1iZXJ9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICBfbmVhdC1wYXJzZS1tZWRpYSgkZ3JpZCwgMTAwMHB4KVxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5cbkBmdW5jdGlvbiBfbmVhdC1wYXJzZS1tZWRpYSgkbWVkaWEpIHtcbiAgQGlmIHR5cGUtb2YoJG1lZGlhKSA9PSBudW1iZXIge1xuICAgIEByZXR1cm4gXCJvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogI3skbWVkaWF9KVwiO1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJG1lZGlhKSA9PSBzdHJpbmcge1xuICAgIEByZXR1cm4gXCIjeyRtZWRpYX1cIjtcbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuLy8vIEFwcGVuZCBhdHRyaWJ1dGVzIHRvIGEgdGhlIGAkX2dyaWQtdmlzdWFsYCB2YXJpYWJsZSBpbiBgZ3JpZC12aXN1YWxgIG1peGluXG4vLy9cbi8vLyBAYXJndW1lbnQge21hcH0gJGdyaWRcbi8vL1xuLy8vIEBhcmd1bWVudCB7bnVtYmVyICh1bml0bGVzcykgfCBudWxsfSAkY29sdW1uc1xuLy8vXG4vLy8gQHJldHVybiB7bnVtYmVyfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgX25lYXQtY29sdW1uLWRlZmF1bHQoJG5lYXQtZ3JpZCwgNClcbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuXG5AZnVuY3Rpb24gX25lYXQtYXBwZW5kLWdyaWQtdmlzdWFsKCRncmlkLXZpc3VhbC1saXN0LCAkYXR0cmlidXRlcykge1xuICBAZWFjaCAkYXR0cmlidXRlIGluICRhdHRyaWJ1dGVzIHtcbiAgICAkZ3JpZC12aXN1YWwtbGlzdDogYXBwZW5kKCRncmlkLXZpc3VhbC1saXN0LCAkYXR0cmlidXRlLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRncmlkLXZpc3VhbC1saXN0O1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuLy8vIENyZWF0ZXMgY29sbGFwc2VkIGdyaWQgb2JqZWN0IHRoYXQgY29uc3VtZXMgdGhlIGd1dHRlcnMgb2YgaXRzIGNvbnRhaW5lcixcbi8vLyBmb3IgdXNlIGluIG5lc3RlZCBsYXlvdXRzLlxuLy8vXG4vLy8gQGdyb3VwIGZlYXR1cmVzXG4vLy9cbi8vLyBAbmFtZSBHcmlkIGNvbGxhcHNlXG4vLy9cbi8vLyBAYXJndW1lbnQge21hcH0gJGdyaWQgWyRuZWF0LWdyaWRdXG4vLy8gICBUaGUgZ3JpZCB0byBiZSB1c2VkIHRvIGdlbmVyYXRlIHRoZSBjb2xsYXBzZWQgY29udGFpbmVyLlxuLy8vICAgQnkgZGVmYXVsdCwgdGhlIGdsb2JhbCBgJG5lYXQtZ3JpZGAgd2lsbCBiZSB1c2VkLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBncmlkLWNvbGxhcHNlO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGZsb2F0OiBsZWZ0O1xuLy8vICAgICBtYXJnaW4tbGVmdDogLTIwcHg7XG4vLy8gICAgIG1hcmdpbi1yaWdodDogLTIwcHg7XG4vLy8gICAgIHdpZHRoOiBjYWxjKDEwMCUgKyA0MHB4KTtcbi8vLyAgIH1cblxuQG1peGluIGdyaWQtY29sbGFwc2UoJGdyaWQ6ICRuZWF0LWdyaWQpIHtcbiAgJF9ncmlkLWd1dHRlcjogX3JldHJpZXZlLW5lYXQtc2V0dGluZygkZ3JpZCwgZ3V0dGVyKTtcblxuICBAaWYgdW5pdCgkX2dyaWQtZ3V0dGVyKSA9PSBcIiVcIiB7XG4gICAgQHdhcm4gXCJgZ3JpZC1jb2xsYXBzZWAgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBwZXJjZW50YWdlIGJhc2VkIGd1dHRlcnMuXCI7XG4gIH1cblxuICBtYXJnaW4tI3tfbmVhdC1mbG9hdC1kaXJlY3Rpb24oJGdyaWQpfTogLSgkX2dyaWQtZ3V0dGVyKTtcbiAgbWFyZ2luLSN7X25lYXQtb3Bwb3NpdGUtZGlyZWN0aW9uKCRncmlkKX06IC0oJF9ncmlkLWd1dHRlcik7XG4gIHdpZHRoOiBjYWxjKDEwMCUgKyAjeygkX2dyaWQtZ3V0dGVyICogMil9KTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcbi8vLyBDcmVhdGVzIGEgZ3JpZCBjb2x1bW4gb2YgcmVxdWVzdGVkIHNpemUuXG4vLy9cbi8vLyBAZ3JvdXAgZmVhdHVyZXNcbi8vL1xuLy8vIEBuYW1lIEdyaWQgY29sdW1uXG4vLy9cbi8vLyBAYXJndW1lbnQge251bWJlciAodW5pdGxlc3MpfSAkY29sdW1ucyBbbnVsbF1cbi8vLyAgIFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgYW4gZWxlbWVudCBzaG91bGQgc3BhbiBiYXNlZCBvbiB0aGUgdG90YWxcbi8vLyAgIGNvbHVtbnMgb2YgdGhlIGdyaWQuXG4vLy9cbi8vLyAgIFRoaXMgY2FuIGFsc28gYmUgZGVmaW5lZCBpbiBhIHNob3J0aGFuZCBzeW50YXh0IHdoaWNoIGFsc28gY29udGFpbnMgdGhlXG4vLy8gICB0b3RhbCBjb2x1bW4gY291bnQgc3VjaCBhcyBgMyBvZiA1YC5cbi8vL1xuLy8vIEBhcmd1bWVudCB7bWFwfSAkZ3JpZCBbJG5lYXQtZ3JpZF1cbi8vLyAgIFRoZSBncmlkIHRvIGJlIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGNvbHVtbi5cbi8vLyAgIEJ5IGRlZmF1bHQsIHRoZSBnbG9iYWwgYCRuZWF0LWdyaWRgIHdpbGwgYmUgdXNlZC5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4oMyk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3Ncbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgd2lkdGg6IGNhbGMoMjUlIC0gMjVweCk7XG4vLy8gICAgIGZsb2F0OiBsZWZ0O1xuLy8vICAgICBtYXJnaW4tbGVmdDogMjBweDtcbi8vLyAgIH1cblxuQG1peGluIGdyaWQtY29sdW1uKCRjb2x1bW5zOiBudWxsLCAkZ3JpZDogJG5lYXQtZ3JpZCkge1xuICAkY29sdW1uczogX25lYXQtY29sdW1uLWRlZmF1bHQoJGdyaWQsICRjb2x1bW5zKTtcbiAgJF9ncmlkLWNvbHVtbnM6IF9yZXRyaWV2ZS1uZWF0LXNldHRpbmcoJGdyaWQsIGNvbHVtbnMpO1xuICAkX2dyaWQtZ3V0dGVyOiBfcmV0cmlldmUtbmVhdC1zZXR0aW5nKCRncmlkLCBndXR0ZXIpO1xuXG4gIHdpZHRoOiBjYWxjKCN7X25lYXQtY29sdW1uLXdpZHRoKCRncmlkLCAkY29sdW1ucyl9KTtcbiAgZmxvYXQ6IF9uZWF0LWZsb2F0LWRpcmVjdGlvbigkZ3JpZCk7XG4gIG1hcmdpbi0je19uZWF0LWZsb2F0LWRpcmVjdGlvbigkZ3JpZCl9OiAkX2dyaWQtZ3V0dGVyO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuLy8vIENyZWF0ZXMgYSBncmlkIGNvbnRhaW5lciB3aXRoIGNsZWFyZml4LlxuLy8vXG4vLy8gQGdyb3VwIGZlYXR1cmVzXG4vLy9cbi8vLyBAbmFtZSBHcmlkIGNvbnRhaW5lclxuLy8vXG4vLy8gQGFyZ3VtZW50IHttYXB9ICRncmlkIFskbmVhdC1ncmlkXVxuLy8vICAgVGhlIGdyaWQgdG8gYmUgdXNlZCB0byBnZW5lcmF0ZSB0aGUgY29udGFpbmVyLlxuLy8vICAgQnkgZGVmYXVsdCwgdGhlIGdsb2JhbCBgJG5lYXQtZ3JpZGAgd2lsbCBiZSB1c2VkLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBncmlkLWNvbnRhaW5lcjtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzc1xuLy8vICAgLmVsZW1lbnQ6OmFmdGVyIHtcbi8vLyAgICAgY2xlYXI6IGJvdGg7XG4vLy8gICAgIGNvbnRlbnQ6IFwiXCI7XG4vLy8gICAgIGRpc3BsYXk6IGJsb2NrO1xuLy8vICAgfVxuXG5AbWl4aW4gZ3JpZC1jb250YWluZXIoJGdyaWQ6ICRuZWF0LWdyaWQpIHtcbiAgJjo6YWZ0ZXIge1xuICAgIGNsZWFyOiBib3RoO1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcbi8vLyBgZ3JpZC1tZWRpYWAgYWxsb3dzIHlvdSB0byBjaGFuZ2UgeW91ciBsYXlvdXQgYmFzZWQgb24gYSBtZWRpYSBxdWVyeS5cbi8vLyBGb3IgZXhhbXBsZSwgYW4gb2JqZWN0IGNhbiBzcGFuIDMgY29sdW1ucyBvbiBzbWFsbCBzY3JlZW5zIGFuZCA2IGNvbHVtbnNcbi8vLyBvbiBsYXJnZSBzY3JlZW5zLlxuLy8vXG4vLy8gWW91IGNhbiB0YWtlIHRoaXMgYSBzdGVwIGZ1cnRoZXIgYW5kIHNldCBkaWZmZXJlbnQgZ3JpZCBhdHRyaWJ1dGVzIGxpa2Vcbi8vLyBndXR0ZXIgc2l6ZSBhbmQgdG90YWwgY29sdW1uIGNvdW50IGZvciBlYWNoIG1lZGlhIHF1ZXJ5LiBTbywgZm9yIGV4YW1wbGUsXG4vLy8geW91IGNhbiBoYXZlIGEgYDFyZW1gIGd1dHRlciBvbiBzbWFsbCBzY3JlZW5zLCBhbmQgYSBgMnJlbWAgZ3V0dGVyIG9uIGxhcmdlXG4vLy8gc2NyZWVucy5cbi8vL1xuLy8vIEBncm91cCBmZWF0dXJlc1xuLy8vXG4vLy8gQG5hbWUgR3JpZCBtZWRpYVxuLy8vXG4vLy8gQGFyZ3VtZW50IHttYXB9ICRncmlkXG4vLy8gICBUaGUgZ3JpZCB0byBiZSB1c2VkIHdpdGhpbiB0aGUgc2NvcGUgb2YgdGhlIGJsb2NrLlxuLy8vICAgVGhpcyBncmlkIHNob3VsZCBpbmNsdWRlIHRoZSBgbWVkaWFgIHByb3BlcnR5IHRvIGRldGVybWluZSB0aGUgZXhwcmVzc2lvblxuLy8vICAgZm9yIHRoZSBtZWRpYSBxdWVyeS5cbi8vL1xuLy8vIEBjb250ZW50XG4vLy8gICBHcmlkIG1lZGlhIHdpbGwgdGVtcG9yYXJpbHkgdGhlIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGdyaWQgd2l0aCB0aGVcbi8vLyAgIGF0dHJpYnV0ZXMgb2YgdGhlIGN1c3RvbSBncmlkLiBUaGlzIGNoYW5nZSBpcyBzY29wZWQgdG8gd2l0aGluIHRoZSBtaXhpblxuLy8vICAgYmxvY2ssIGFuZCBvbmNlIHRoZSBtaXhpbiBoYXMgZW5kZWQgdGhlIGRlZmF1bHQgZ3JpZCB3aWxsIHJldmVydCB0byBpdHNcbi8vLyAgIG9yaWdpbmFsIHN0YXRlIGFzIGRlZmluZWQgYnkgYCRuZWF0LWdyaWRgLiBUaGlzIGFsbG93cyBmb3IgZGlmZmVyZW50XG4vLy8gICBndXR0ZXIgd2lkdGggYW5kIGNvbHVtbiBjb3VudCBiYXNlZCBvbiBzY3JlZW4gc2l6ZSBvciBvdGhlciBwcm9wZXJ0aWVzLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgJGN1c3RvbS1uZWF0LWdyaWQ6IChcbi8vLyAgICAgY29sdW1uczogMTIsXG4vLy8gICAgIGd1dHRlcjogNTBweCxcbi8vLyAgICAgbWVkaWE6IDEwMDBweCxcbi8vLyAgICk7XG4vLy9cbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4oMyk7XG4vLy9cbi8vLyAgICAgQGluY2x1ZGUgZ3JpZC1tZWRpYSgkY3VzdG9tLW5lYXQtZ3JpZCl7XG4vLy8gICAgICAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4oNik7XG4vLy8gICAgIH1cbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzc1xuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICB3aWR0aDogY2FsYygyNSUgLSAyNXB4KTtcbi8vLyAgICAgZmxvYXQ6IGxlZnQ7XG4vLy8gICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xuLy8vICAgfVxuLy8vXG4vLy8gICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMDBweCkge1xuLy8vICAgICAuZWxlbWVudCB7XG4vLy8gICAgICAgd2lkdGg6IGNhbGMoNTAlIC0gNzVweCk7XG4vLy8gICAgICAgZmxvYXQ6IGxlZnQ7XG4vLy8gICAgICAgbWFyZ2luLWxlZnQ6IDUwcHg7XG4vLy8gICAgIH1cbi8vLyAgIH1cblxuQG1peGluIGdyaWQtbWVkaWEoJGdyaWQpIHtcbiAgJF9tZWRpYTogX3JldHJpZXZlLW5lYXQtc2V0dGluZygkZ3JpZCwgbWVkaWEpO1xuICAkX3F1ZXJ5OiBfbmVhdC1wYXJzZS1tZWRpYSgkX21lZGlhKTtcblxuICBAbWVkaWEgI3skX3F1ZXJ5fSB7XG4gICAgJF9kZWZhdWx0LW5lYXQtZ3JpZDogJG5lYXQtZ3JpZDtcbiAgICAkbmVhdC1ncmlkOiBtYXAtbWVyZ2UoJG5lYXQtZ3JpZCwgJGdyaWQpICFnbG9iYWw7XG4gICAgQGNvbnRlbnQ7XG4gICAgJG5lYXQtZ3JpZDogJF9kZWZhdWx0LW5lYXQtZ3JpZCAhZ2xvYmFsO1xuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG4vLy8gUHVzaCBvciBwdWxsIGEgZ3JpZCBjb2x1bW4gYnkgbWFuaXB1bGF0aW5nIGl0cyBsZWZ0IG1hcmdpbi5cbi8vL1xuLy8vIEBncm91cCBmZWF0dXJlc1xuLy8vXG4vLy8gQG5hbWUgR3JpZCBwdXNoXG4vLy9cbi8vLyBAYXJndW1lbnQge251bWJlciAodW5pdGxlc3MpfSAkcHVzaCBbZmFsc2VdXG4vLy8gICBUaGUgbnVtYmVyIG9mIGNvbHVtbnMgdG8gcHVzaCB0aGUgY29sdW1uLlxuLy8vXG4vLy8gQGFyZ3VtZW50IHttYXB9ICRncmlkIFskbmVhdC1ncmlkXVxuLy8vICAgVGhlIGdyaWQgdG8gYmUgdXNlZCB0byBkZXRpcm1pbmUgaG93IGZhciB0byBwdXNoIHRoZSBjb2x1bW4uXG4vLy8gICBCeSBkZWZhdWx0LCB0aGUgZ2xvYmFsIGAkbmVhdC1ncmlkYCB3aWxsIGJlIHVzZWQuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIGdyaWQtcHVzaCgzKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzc1xuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBtYXJnaW4tbGVmdDogY2FsYygyNSUgLSAyNXB4ICsgNDBweCk7XG4vLy8gICB9XG5cbkBtaXhpbiBncmlkLXB1c2goJHB1c2g6IGZhbHNlLCAkZ3JpZDogJG5lYXQtZ3JpZCkge1xuICAkX2dyaWQtY29sdW1uczogX3JldHJpZXZlLW5lYXQtc2V0dGluZygkZ3JpZCwgY29sdW1ucyk7XG4gICRfZ3JpZC1ndXR0ZXI6IF9yZXRyaWV2ZS1uZWF0LXNldHRpbmcoJGdyaWQsIGd1dHRlcik7XG5cbiAgQGlmICRwdXNoIHtcbiAgICAkX2d1dHRlci1hZmZvcmRhbmNlOiAkX2dyaWQtZ3V0dGVyICogMjtcbiAgICAkX21hcmdpbi12YWx1ZTogY2FsYygje19uZWF0LWNvbHVtbi13aWR0aCgkZ3JpZCwgJHB1c2gpfSArICN7JF9ndXR0ZXItYWZmb3JkYW5jZX0pO1xuICAgIG1hcmdpbi0je19uZWF0LWZsb2F0LWRpcmVjdGlvbigkZ3JpZCl9OiAkX21hcmdpbi12YWx1ZTtcbiAgfSBAZWxzZSB7XG4gICAgJF9tYXJnaW4tdmFsdWU6IF9yZXRyaWV2ZS1uZWF0LXNldHRpbmcoJGdyaWQsIGd1dHRlcik7XG4gICAgbWFyZ2luLSN7X25lYXQtZmxvYXQtZGlyZWN0aW9uKCRncmlkKX06ICRfbWFyZ2luLXZhbHVlO1xuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG4vLy8gU2hpZnQgY29sdW1ucyBhbmQgcmVvcmRlciB0aGVtIHdpdGhpbiB0aGVpciBjb250YWluZXIgdXNpbmcgcmVsYXRpdmVcbi8vLyBwb3NpdGlvbmluZy5cbi8vL1xuLy8vIEBncm91cCBmZWF0dXJlc1xuLy8vXG4vLy8gQG5hbWUgR3JpZCBzaGlmdFxuLy8vXG4vLy8gQGFyZ3VtZW50IHtudW1iZXIgKHVuaXRsZXNzKX0gJHNoaWZ0IFtmYWxzZV1cbi8vLyAgIFRoZSBudW1iZXIgb2YgY29sdW1ucyB0byBzaGlmdCB0aGUgY29sdW1uLlxuLy8vXG4vLy8gQGFyZ3VtZW50IHttYXB9ICRncmlkIFskbmVhdC1ncmlkXVxuLy8vICAgVGhlIGdyaWQgdG8gYmUgdXNlZCB0byBkZXRpcm1pbmUgaG93IGZhciB0byBzaGlmdCB0aGUgY29sdW1uLlxuLy8vICAgQnkgZGVmYXVsdCwgdGhlIGdsb2JhbCBgJG5lYXQtZ3JpZGAgd2lsbCBiZSB1c2VkLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBncmlkLXNoaWZ0KDMpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGxlZnQ6IGNhbGMoMjUlIC0gMjVweCArIDIwcHgpO1xuLy8vICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4vLy8gICB9XG5cbkBtaXhpbiBncmlkLXNoaWZ0KCRzaGlmdDogZmFsc2UsICRncmlkOiAkbmVhdC1ncmlkKSB7XG4gIEBpZiAkc2hpZnQge1xuICAgICRfc2hpZnQtdmFsdWU6IGNhbGMoI3tfbmVhdC1jb2x1bW4td2lkdGgoJGdyaWQsICRzaGlmdCl9ICsgI3tfcmV0cmlldmUtbmVhdC1zZXR0aW5nKCRncmlkLCBndXR0ZXIpfSk7XG4gICAgI3tfbmVhdC1mbG9hdC1kaXJlY3Rpb24oJGdyaWQpfTogJF9zaGlmdC12YWx1ZTtcbiAgfSBAZWxzZSB7XG4gICAgI3tfbmVhdC1mbG9hdC1kaXJlY3Rpb24oJGdyaWQpfTogYXV0bztcbiAgfVxuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcbi8vLyBDcmVhdGVzIGEgc2VyaWVzIG9mIGd1aWRlIGxpbmVzIHVzaW5nIHRoZSBgYmFja2dyb3VuZC1pbWFnZWAgcHJvcGVydHkgb24gYVxuLy8vIGdyaWQgY29udGFpbmVyIHRvIHZpc3VhbGlzZSB0aGUgY29sdW1ucyBhbmQgZ3V0dGVycyBvZiB0aGUgZ3JpZC5cbi8vL1xuLy8vIEBncm91cCBmZWF0dXJlc1xuLy8vXG4vLy8gQG5hbWUgR3JpZCB2aXN1YWxcbi8vL1xuLy8vIEBhcmd1bWVudCB7Y29sb3J9ICRjb2xvclxuLy8vICAgVGhlIGNvbG9yIG9mIHRoZSBndWlkZSBsaW5lcyBjcmVhdGVkLlxuLy8vXG4vLy8gQGFyZ3VtZW50IHttYXB9ICRncmlkIFskbmVhdC1ncmlkXVxuLy8vICAgVGhlIGdyaWQgdXNlZCB0byBkZXRlcm1pbmUgdGhlIGd1aWRlc1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBncmlkLXZpc3VhbDtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzc1xuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoIOKApiApIDtcbi8vLyAgIH1cblxuQG1peGluIGdyaWQtdmlzdWFsKCRjb2xvcjogbnVsbCwgJGdyaWQ6ICRuZWF0LWdyaWQpIHtcbiAgQGlmIG5vdCAkY29sb3Ige1xuICAgICRjb2xvcjogX3JldHJpZXZlLW5lYXQtc2V0dGluZygkZ3JpZCwgY29sb3IpO1xuICB9XG5cbiAgJF9ncmlkLWNvbHVtbnM6IF9yZXRyaWV2ZS1uZWF0LXNldHRpbmcoJGdyaWQsIGNvbHVtbnMpO1xuICAkX2dyaWQtZ3V0dGVyOiBfcmV0cmlldmUtbmVhdC1zZXR0aW5nKCRncmlkLCBndXR0ZXIpO1xuICAkX2dyaWQtdmlzdWFsLW9iamVjdDogKCkgIWRlZmF1bHQ7XG4gICRfZ3JpZC12aXN1YWw6XG4gICAgJGNvbG9yLFxuICAgICRjb2xvciAkX2dyaWQtZ3V0dGVyLFxuICAgIHRyYW5zcGFyZW50ICRfZ3JpZC1ndXR0ZXIsXG4gIDtcblxuICBAZm9yICRpIGZyb20gMSB0byAkX2dyaWQtY29sdW1ucyB7XG4gICAgJF9ncmlkLXZpc3VhbC1sb2NhbDogKFxuICAgICAgI3skaX06IFwiI3tfbmVhdC1jb2x1bW4td2lkdGgoJGdyaWQsICRpKX0gKyAjeyRfZ3JpZC1ndXR0ZXJ9XCIsXG4gICAgKTtcblxuICAgICRfZ3JpZC12aXN1YWwtb2JqZWN0OiBtYXAtbWVyZ2UoJF9ncmlkLXZpc3VhbC1vYmplY3QsICRfZ3JpZC12aXN1YWwtbG9jYWwpO1xuICB9XG5cbiAgQGVhY2ggJHN0b3AsICRsb2NhdGlvbiBpbiAkX2dyaWQtdmlzdWFsLW9iamVjdCB7XG4gICAgJF9ncmlkLXZpc3VhbC1sb29wLWxpc3Q6XG4gICAgICB0cmFuc3BhcmVudCBjYWxjKCN7JGxvY2F0aW9ufSksXG4gICAgICAkY29sb3IgY2FsYygjeyRsb2NhdGlvbn0pLFxuICAgICAgJGNvbG9yIGNhbGMoI3skbG9jYXRpb259ICsgI3skX2dyaWQtZ3V0dGVyfSksXG4gICAgICB0cmFuc3BhcmVudCBjYWxjKCN7JGxvY2F0aW9ufSArICN7JF9ncmlkLWd1dHRlcn0pLFxuICAgIDtcblxuICAgICRfZ3JpZC12aXN1YWw6IF9uZWF0LWFwcGVuZC1ncmlkLXZpc3VhbCgkX2dyaWQtdmlzdWFsLCAkX2dyaWQtdmlzdWFsLWxvb3AtbGlzdCk7XG4gIH1cblxuICAkX2dyaWQtdmlzdWFsLWxvb3AtbGlzdDpcbiAgICAgIHRyYW5zcGFyZW50IGNhbGMoMTAwJSAtICN7JF9ncmlkLWd1dHRlcn0pLFxuICAgICAgJGNvbG9yIGNhbGMoMTAwJSAtICN7JF9ncmlkLWd1dHRlcn0pLFxuICAgICAgJGNvbG9yIGNhbGMoMTAwJSksXG4gIDtcblxuICAkX2dyaWQtdmlzdWFsOiBfbmVhdC1hcHBlbmQtZ3JpZC12aXN1YWwoJF9ncmlkLXZpc3VhbCwgJF9ncmlkLXZpc3VhbC1sb29wLWxpc3QpO1xuXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJF9ncmlkLXZpc3VhbCk7XG59XG4iLCJAaW1wb3J0IFwiZnVuY3Rpb25zXCI7XG5AaW1wb3J0IFwibWl4aW5zXCI7XG5AaW1wb3J0IFwidmFyaWFibGVzXCI7XG4iLCIiLCIvL01peGluc1xuXG4vL01peGluIGZvciBzbGlnaHRseSBtb3ZpbmcgdXAgdGV4dCBvbiB0aGUgWSBheGlzXG5AbWl4aW4gbnVkZ2UoKSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtLjA5ZW0pO1xuICBvcGFjaXR5OiAwLjg7XG59XG5cbi8vIEJyZWFrcG9pbnRzXG5cbi8vQnJlYWtwb2ludHNcblxuQG1peGluIHhzLWJyZWFrcG9pbnQge1xuICBAbWVkaWEgI3skeHMtYnB9IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gc21hbGwtYnJlYWtwb2ludCB7XG4gIEBtZWRpYSAjeyRzbWFsbC1icH0ge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBtZWRpdW0tYnJlYWtwb2ludCB7XG4gIEBtZWRpYSAjeyRtZWRpdW0tYnB9IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gbGFyZ2UtYnJlYWtwb2ludCB7XG4gIEBtZWRpYSAjeyRsYXJnZS1icH0ge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvLyBDb2xvcnNcbiR3aGl0ZTogI2ZhZmFmYTsgLy8gV2hpdGVpc2hcbiRibGFjazogIzMzMzsgLy8gQmxhY2tpc2hcbiRoZWFkbGluZTogIzQyNGE2ZDsgLy8gRGFyayBibHVlXG4kYWNjZW50OiAjNjYzMzk5O1xuJG9yYW5nZTogI0ZFQUM1RTtcbiRibHVlOiAjNEJDMEM4O1xuJHBpbms6ICNkNjg3YjE7XG4kcHVycGxlOiAjQzc3OUQwO1xuJGdyYXk6ICNjY2M7XG5cbi8vUm9zZSBpbiBoZWFkZXJcbiRidWQ6ICNlYTQ5NDQ7XG4kc3RlbTogIzMyNmQzMjtcbi8vLy8vLy8vLy8vLy8vL1xuXG4vLyBGb250c1xuJGhlYWRlcjogJ01lcnJpd2VhdGhlcicsIHNlcmlmO1xuJHByaW1hcnk6ICdNdWxpJywgc2Fucy1zZXJpZjtcbiRyb3NlOiAnS2FybGEnLCBzYW5zLXNlcmlmO1xuLy8vLy8vLy8vLy8vLy8vXG5cbi8vIENvaGVzaXZlIHN0eWxpbmdcbiR0cmFuc2l0aW9uOiAwLjNzIGFsbCBlYXNlLWluLW91dDtcbiRyYWRpdXM6IDEwcHg7XG4kbGV0dGVyLXNwYWNpbmc6IC4wMDc1ZW07XG4kYm94LXNoYWRvdzogMXB4IDFweCAxMnB4IDFweCAkZ3JheTtcbi8vLy8vLy8vLy8vLy8vL1xuXG4vLyBCcmVha3BvaW50c1xuJHhzLWJwOiBcIm9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1NTBweClcIjtcbiRzbWFsbC1icDogXCJvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogODAwcHgpXCI7XG4kbWVkaXVtLWJwOiBcIm9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5NThweClcIjtcbiRsYXJnZS1icDogXCJvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTYwMHB4KVwiO1xuXG4vLyBTdHlsZXMgZm9yICRsYXJnZS1icFxuXG4vL1dpZHRoIG9mIGNvbnRhaW5lcnMgZm9yICRsYXJnZS1icFxuJGxnLWNvbnRhaW5lcjogMTMwMHB4O1xuJGxnLWZvbnQ6IDEuM2VtO1xuIiwiQGltcG9ydCBcInJlc2V0XCI7XG5AaW1wb3J0IFwidHlwb2dyYXBoeVwiO1xuQGltcG9ydCBcImdsb2JhbFwiO1xuQGltcG9ydCBcImtleWZyYW1lc1wiO1xuIiwiLyohIG5vcm1hbGl6ZS5jc3MgdjcuMC4wIHwgTUlUIExpY2Vuc2UgfCBnaXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzcyAqL1xuXG4vKiBEb2N1bWVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBsaW5lIGhlaWdodCBpbiBhbGwgYnJvd3NlcnMuXG4gKiAyLiBQcmV2ZW50IGFkanVzdG1lbnRzIG9mIGZvbnQgc2l6ZSBhZnRlciBvcmllbnRhdGlvbiBjaGFuZ2VzIGluXG4gKiAgICBJRSBvbiBXaW5kb3dzIFBob25lIGFuZCBpbiBpT1MuXG4gKi9cblxuaHRtbCB7XG4gIGxpbmUtaGVpZ2h0OiAxLjE1OyAvKiAxICovXG4gIC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAyICovXG4gIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLyogMiAqL1xufVxuXG4vKiBTZWN0aW9uc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBhbGwgYnJvd3NlcnMgKG9waW5pb25hdGVkKS5cbiAqL1xuXG5ib2R5IHtcbiAgbWFyZ2luOiAwO1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDktLlxuICovXG5cbmFydGljbGUsXG5hc2lkZSxcbmZvb3RlcixcbmhlYWRlcixcbm5hdixcbnNlY3Rpb24ge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLyoqXG4gKiBDb3JyZWN0IHRoZSBmb250IHNpemUgYW5kIG1hcmdpbiBvbiBgaDFgIGVsZW1lbnRzIHdpdGhpbiBgc2VjdGlvbmAgYW5kXG4gKiBgYXJ0aWNsZWAgY29udGV4dHMgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgU2FmYXJpLlxuICovXG5cbmgxIHtcbiAgZm9udC1zaXplOiAyZW07XG4gIG1hcmdpbjogMC42N2VtIDA7XG59XG5cbi8qIEdyb3VwaW5nIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgOS0uXG4gKiAxLiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRS5cbiAqL1xuXG5maWdjYXB0aW9uLFxuZmlndXJlLFxubWFpbiB7IC8qIDEgKi9cbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IG1hcmdpbiBpbiBJRSA4LlxuICovXG5cbmZpZ3VyZSB7XG4gIG1hcmdpbjogMWVtIDQwcHg7XG59XG5cbi8qKlxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gRmlyZWZveC5cbiAqIDIuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UgYW5kIElFLlxuICovXG5cbmhyIHtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7IC8qIDEgKi9cbiAgaGVpZ2h0OiAwOyAvKiAxICovXG4gIG92ZXJmbG93OiB2aXNpYmxlOyAvKiAyICovXG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5wcmUge1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7IC8qIDEgKi9cbiAgZm9udC1zaXplOiAxZW07IC8qIDIgKi9cbn1cblxuLyogVGV4dC1sZXZlbCBzZW1hbnRpY3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogMS4gUmVtb3ZlIHRoZSBncmF5IGJhY2tncm91bmQgb24gYWN0aXZlIGxpbmtzIGluIElFIDEwLlxuICogMi4gUmVtb3ZlIGdhcHMgaW4gbGlua3MgdW5kZXJsaW5lIGluIGlPUyA4KyBhbmQgU2FmYXJpIDgrLlxuICovXG5cbmEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgLyogMSAqL1xuICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbi1za2lwOiBvYmplY3RzOyAvKiAyICovXG59XG5cbi8qKlxuICogMS4gUmVtb3ZlIHRoZSBib3R0b20gYm9yZGVyIGluIENocm9tZSA1Ny0gYW5kIEZpcmVmb3ggMzktLlxuICogMi4gQWRkIHRoZSBjb3JyZWN0IHRleHQgZGVjb3JhdGlvbiBpbiBDaHJvbWUsIEVkZ2UsIElFLCBPcGVyYSwgYW5kIFNhZmFyaS5cbiAqL1xuXG5hYmJyW3RpdGxlXSB7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7IC8qIDEgKi9cbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IC8qIDIgKi9cbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkOyAvKiAyICovXG59XG5cbi8qKlxuICogUHJldmVudCB0aGUgZHVwbGljYXRlIGFwcGxpY2F0aW9uIG9mIGBib2xkZXJgIGJ5IHRoZSBuZXh0IHJ1bGUgaW4gU2FmYXJpIDYuXG4gKi9cblxuYixcbnN0cm9uZyB7XG4gIGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBmb250IHdlaWdodCBpbiBDaHJvbWUsIEVkZ2UsIGFuZCBTYWZhcmkuXG4gKi9cblxuYixcbnN0cm9uZyB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkZXI7XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5jb2RlLFxua2JkLFxuc2FtcCB7XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTsgLyogMSAqL1xuICBmb250LXNpemU6IDFlbTsgLyogMiAqL1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBmb250IHN0eWxlIGluIEFuZHJvaWQgNC4zLS5cbiAqL1xuXG5kZm4ge1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGJhY2tncm91bmQgYW5kIGNvbG9yIGluIElFIDktLlxuICovXG5cbm1hcmsge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmYwO1xuICBjb2xvcjogIzAwMDtcbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5zbWFsbCB7XG4gIGZvbnQtc2l6ZTogODAlO1xufVxuXG4vKipcbiAqIFByZXZlbnQgYHN1YmAgYW5kIGBzdXBgIGVsZW1lbnRzIGZyb20gYWZmZWN0aW5nIHRoZSBsaW5lIGhlaWdodCBpblxuICogYWxsIGJyb3dzZXJzLlxuICovXG5cbnN1YixcbnN1cCB7XG4gIGZvbnQtc2l6ZTogNzUlO1xuICBsaW5lLWhlaWdodDogMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbnN1YiB7XG4gIGJvdHRvbTogLTAuMjVlbTtcbn1cblxuc3VwIHtcbiAgdG9wOiAtMC41ZW07XG59XG5cbi8qIEVtYmVkZGVkIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgOS0uXG4gKi9cblxuYXVkaW8sXG52aWRlbyB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBpT1MgNC03LlxuICovXG5cbmF1ZGlvOm5vdChbY29udHJvbHNdKSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGhlaWdodDogMDtcbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGJvcmRlciBvbiBpbWFnZXMgaW5zaWRlIGxpbmtzIGluIElFIDEwLS5cbiAqL1xuXG5pbWcge1xuICBib3JkZXItc3R5bGU6IG5vbmU7XG59XG5cbi8qKlxuICogSGlkZSB0aGUgb3ZlcmZsb3cgaW4gSUUuXG4gKi9cblxuc3ZnOm5vdCg6cm9vdCkge1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4vKiBGb3Jtc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiAxLiBDaGFuZ2UgdGhlIGZvbnQgc3R5bGVzIGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxuICogMi4gUmVtb3ZlIHRoZSBtYXJnaW4gaW4gRmlyZWZveCBhbmQgU2FmYXJpLlxuICovXG5cbmJ1dHRvbixcbmlucHV0LFxub3B0Z3JvdXAsXG5zZWxlY3QsXG50ZXh0YXJlYSB7XG4gIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyAvKiAxICovXG4gIGZvbnQtc2l6ZTogMTAwJTsgLyogMSAqL1xuICBsaW5lLWhlaWdodDogMS4xNTsgLyogMSAqL1xuICBtYXJnaW46IDA7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBTaG93IHRoZSBvdmVyZmxvdyBpbiBJRS5cbiAqIDEuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UuXG4gKi9cblxuYnV0dG9uLFxuaW5wdXQgeyAvKiAxICovXG4gIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRWRnZSwgRmlyZWZveCwgYW5kIElFLlxuICogMS4gUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBGaXJlZm94LlxuICovXG5cbmJ1dHRvbixcbnNlbGVjdCB7IC8qIDEgKi9cbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG59XG5cbi8qKlxuICogMS4gUHJldmVudCBhIFdlYktpdCBidWcgd2hlcmUgKDIpIGRlc3Ryb3lzIG5hdGl2ZSBgYXVkaW9gIGFuZCBgdmlkZW9gXG4gKiAgICBjb250cm9scyBpbiBBbmRyb2lkIDQuXG4gKiAyLiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuICovXG5cbmJ1dHRvbixcbmh0bWwgW3R5cGU9XCJidXR0b25cIl0sIC8qIDEgKi9cblt0eXBlPVwicmVzZXRcIl0sXG5bdHlwZT1cInN1Ym1pdFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvKiAyICovXG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBpbm5lciBib3JkZXIgYW5kIHBhZGRpbmcgaW4gRmlyZWZveC5cbiAqL1xuXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cImJ1dHRvblwiXTo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwicmVzZXRcIl06Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cInN1Ym1pdFwiXTo6LW1vei1mb2N1cy1pbm5lciB7XG4gIGJvcmRlci1zdHlsZTogbm9uZTtcbiAgcGFkZGluZzogMDtcbn1cblxuLyoqXG4gKiBSZXN0b3JlIHRoZSBmb2N1cyBzdHlsZXMgdW5zZXQgYnkgdGhlIHByZXZpb3VzIHJ1bGUuXG4gKi9cblxuYnV0dG9uOi1tb3otZm9jdXNyaW5nLFxuW3R5cGU9XCJidXR0b25cIl06LW1vei1mb2N1c3JpbmcsXG5bdHlwZT1cInJlc2V0XCJdOi1tb3otZm9jdXNyaW5nLFxuW3R5cGU9XCJzdWJtaXRcIl06LW1vei1mb2N1c3Jpbmcge1xuICBvdXRsaW5lOiAxcHggZG90dGVkIEJ1dHRvblRleHQ7XG59XG5cbi8qKlxuICogQ29ycmVjdCB0aGUgcGFkZGluZyBpbiBGaXJlZm94LlxuICovXG5cbmZpZWxkc2V0IHtcbiAgcGFkZGluZzogMC4zNWVtIDAuNzVlbSAwLjYyNWVtO1xufVxuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIHRleHQgd3JhcHBpbmcgaW4gRWRnZSBhbmQgSUUuXG4gKiAyLiBDb3JyZWN0IHRoZSBjb2xvciBpbmhlcml0YW5jZSBmcm9tIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gSUUuXG4gKiAzLiBSZW1vdmUgdGhlIHBhZGRpbmcgc28gZGV2ZWxvcGVycyBhcmUgbm90IGNhdWdodCBvdXQgd2hlbiB0aGV5IHplcm8gb3V0XG4gKiAgICBgZmllbGRzZXRgIGVsZW1lbnRzIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5sZWdlbmQge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiAxICovXG4gIGNvbG9yOiBpbmhlcml0OyAvKiAyICovXG4gIGRpc3BsYXk6IHRhYmxlOyAvKiAxICovXG4gIG1heC13aWR0aDogMTAwJTsgLyogMSAqL1xuICBwYWRkaW5nOiAwOyAvKiAzICovXG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7IC8qIDEgKi9cbn1cblxuLyoqXG4gKiAxLiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSA5LS5cbiAqIDIuIEFkZCB0aGUgY29ycmVjdCB2ZXJ0aWNhbCBhbGlnbm1lbnQgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXG4gKi9cblxucHJvZ3Jlc3Mge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IC8qIDEgKi9cbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyAvKiAyICovXG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBkZWZhdWx0IHZlcnRpY2FsIHNjcm9sbGJhciBpbiBJRS5cbiAqL1xuXG50ZXh0YXJlYSB7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuXG4vKipcbiAqIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIElFIDEwLS5cbiAqIDIuIFJlbW92ZSB0aGUgcGFkZGluZyBpbiBJRSAxMC0uXG4gKi9cblxuW3R5cGU9XCJjaGVja2JveFwiXSxcblt0eXBlPVwicmFkaW9cIl0ge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiAxICovXG4gIHBhZGRpbmc6IDA7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBDb3JyZWN0IHRoZSBjdXJzb3Igc3R5bGUgb2YgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgYnV0dG9ucyBpbiBDaHJvbWUuXG4gKi9cblxuW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG5bdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gIGhlaWdodDogYXV0bztcbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBvZGQgYXBwZWFyYW5jZSBpbiBDaHJvbWUgYW5kIFNhZmFyaS5cbiAqIDIuIENvcnJlY3QgdGhlIG91dGxpbmUgc3R5bGUgaW4gU2FmYXJpLlxuICovXG5cblt0eXBlPVwic2VhcmNoXCJdIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7IC8qIDEgKi9cbiAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGlubmVyIHBhZGRpbmcgYW5kIGNhbmNlbCBidXR0b25zIGluIENocm9tZSBhbmQgU2FmYXJpIG9uIG1hY09TLlxuICovXG5cblt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLFxuW3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbiAqIDIuIENoYW5nZSBmb250IHByb3BlcnRpZXMgdG8gYGluaGVyaXRgIGluIFNhZmFyaS5cbiAqL1xuXG46Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247IC8qIDEgKi9cbiAgZm9udDogaW5oZXJpdDsgLyogMiAqL1xufVxuXG4vKiBJbnRlcmFjdGl2ZVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLypcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDktLlxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gRWRnZSwgSUUsIGFuZCBGaXJlZm94LlxuICovXG5cbmRldGFpbHMsIC8qIDEgKi9cbm1lbnUge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLypcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5zdW1tYXJ5IHtcbiAgZGlzcGxheTogbGlzdC1pdGVtO1xufVxuXG4vKiBTY3JpcHRpbmdcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgOS0uXG4gKi9cblxuY2FudmFzIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFLlxuICovXG5cbnRlbXBsYXRlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLyogSGlkZGVuXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDEwLS5cbiAqL1xuXG5baGlkZGVuXSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4iLCIvLyBHbG9iYWwgdHlwb2dyYXBoeVxuXG5cbmJvZHkge1xuICBmb250LWZhbWlseTogJHByaW1hcnk7XG4gIGxldHRlci1zcGFjaW5nOiAkbGV0dGVyLXNwYWNpbmc7XG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgZm9udC1zaXplOiAxN3B4O1xuICBjb2xvcjogJGJsYWNrO1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbn1cblxucCB7XG4gIGxpbmUtaGVpZ2h0OiAyNXB4O1xuICBAaW5jbHVkZSBsYXJnZS1icmVha3BvaW50IHtcbiAgICBsaW5lLWhlaWdodDogMzBweDtcbiAgfVxufVxuXG5hIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogJHdoaXRlO1xufVxuXG5saSB7XG4gIGZvbnQtZmFtaWx5OiAkcHJpbWFyeTtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG59XG5cbmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYge1xuICBmb250LWZhbWlseTogJGhlYWRlcjtcbiAgbGluZS1oZWlnaHQ6IDEuM2VtO1xuICBsZXR0ZXItc3BhY2luZzogLjAxZW07XG59XG5cbnVsIHtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBwYWRkaW5nOiAwO1xufVxuXG4vLyBOYXZpZ2F0aW9uXG4ubmF2LXN0eWxlXG4gIHtcbiAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQ7XG4gICY6aG92ZXIge1xuICAgIGNvbG9yOiAjMzMzO1xuICAgIEBpbmNsdWRlIG51ZGdlO1xuICB9XG4gICY6dmlzaXRlZCB7XG4gICAgY29sb3I6ICR3aGl0ZTtcbiAgJjphY3RpdmUge1xuICAgIGNvbG9yOiAjMzMzO1xuICB9XG4gfVxufVxuIiwiOjpzZWxlY3Rpb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkcGluaztcbiAgY29sb3I6ICR3aGl0ZTtcbn1cblxuaHIge1xuICAgYm9yZGVyOiAwO1xuICAgaGVpZ2h0OiAycHg7XG4gICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICRvcmFuZ2UsICRwaW5rLCAkcHVycGxlLCAkYmx1ZSk7XG59XG4iLCIvLyBGcm9tIGhlcm8uc2NzcywgY2FudmFzIHJvdGF0aW9uXG5Aa2V5ZnJhbWVzIGZhZGUge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgfVxuXG4gIDUwJSB7XG4gICAgb3BhY2l0eTogMC43O1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZykgc2NhbGUoMik7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuXG4vLyBGcm9tIGhlcm8uc2NzcywgZG93biBidXR0b24gKGN1cnJlbnRseSBub3QgaW4gdXNlKVxuQGtleWZyYW1lcyBob3ZlciB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwLjJlbSk7XG4gIH1cbiAgdG8ge1xuICAgIGNvbG9yOiB0cmFuc2xhdGVZKC0wLjJlbSk7XG4gIH1cbn1cblxuLy8gRnJvbSBoZXJvLnNjc3MsIHNwaW4gZWZmZWN0IG9uIHNvY2lhbCBtZWRpYSBpY29uc1xuQGtleWZyYW1lcyBzcGlubWVyaWdodHJvdW5kIHtcbiAgMCUge1xuICAgIGNvbG9yOiAkcGluaztcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgfVxuICAxMDAlIHtcbiAgICBjb2xvcjogJGFjY2VudDtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg3MjBkZWcpO1xuICB9XG59XG4iLCJAaW1wb3J0IFwiaGVhZGVyXCI7XG5AaW1wb3J0IFwiYnV0dG9uc1wiO1xuQGltcG9ydCBcImNvbnRhaW5lclwiO1xuIiwibmF2IHtcbiAgYmFja2dyb3VuZDogI0ZFQUM1RTsgIC8qIGZhbGxiYWNrIGZvciBvbGQgYnJvd3NlcnMgKi9cbiAgYmFja2dyb3VuZDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICM0QkMwQzgsICNDNzc5RDAsICNGRUFDNUUpOyAgLyogQ2hyb21lIDEwLTI1LCBTYWZhcmkgNS4xLTYgKi9cbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAjNEJDMEM4LCAjQzc3OUQwLCAjRkVBQzVFKTsgLyogVzNDLCBJRSAxMCsvIEVkZ2UsIEZpcmVmb3ggMTYrLCBDaHJvbWUgMjYrLCBPcGVyYSAxMissIFNhZmFyaSA3KyAqL1xuICBoZWlnaHQ6IDYwcHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIHotaW5kZXg6IDE7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogLjEzcyBhbGw7XG4gIHRyYW5zaXRpb246IC4xM3MgYWxsO1xuICBib3gtc2hhZG93OiAxcHggMXB4IDFweCAxcHggI2RkZDtcbiAgfVxuICAubGVmdCB7XG4gICAgZm9udC1zaXplOiAxLjZlbTtcbiAgICAtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoOiAuNXB4O1xuICAgIGZvbnQtZmFtaWx5OiAkcm9zZTtcbiAgICB0cmFuc2Zvcm06IHNrZXdYKC0zZGVnKTtcbiAgICAuYnVkIHtcbiAgICAgIGNvbG9yOiAkYnVkO1xuICAgIH1cbiAgICAuZ3JlZW4ge1xuICAgICAgY29sb3I6ICRzdGVtO1xuICAgIH1cbiAgfVxuICBAaW5jbHVkZSB4cy1icmVha3BvaW50IHtcbiAgICAubGVmdCB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxubmF2LFxubmF2IHVsIHtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIGRpc3BsYXk6IC13ZWJraXQtZmxleDtcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG5uYXYgdWwge1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiA5NSU7XG59XG5cbm5hdiB1bCBsaSB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIG1hcmdpbi1yaWdodDogMjBweDtcbiAgJjpob3ZlciB7XG4gIH1cbn1cblxubmF2IGxpOmZpcnN0LWNoaWxkIHtcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xufVxuXG4vLyBTcGVjaWFsIG1lZGlhIHF1ZXJ5IGZvciBIb21lIGxpbmsgb24gc21hbGwgc2NyZWVuc1xuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1NTBweCkge1xuICAuaG9tZSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4ubWFpbk5hdiB7XG4gICY6aG92ZXIge1xuICAgIGNvbG9yOiAkcGluaztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7XG4gICAgb3BhY2l0eTogLjE7XG4gIH1cbn1cbiIsIi8vIENvbnRhY3QgbGluayBpbiBoZWFkZXJcbi5jb250YWN0LWJ1dHRvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbiAgcGFkZGluZzogMTBweCAxNXB4O1xuICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICBjb2xvcjogJGJsYWNrO1xuICB0cmFuc2l0aW9uOiAwLjNzIGFsbCBlYXNlLWluLW91dDtcbiAgJjpob3ZlciB7XG4gICAgYm94LXNoYWRvdzogMCAycHggMTBweCAtMXB4IGRhcmtlbihvcmFuZ2UsIDEwJSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRlbihvcmFuZ2UsIDQ1JSk7XG4gIH1cbn1cblxuLy8gQ29udGFjdCBmb3JtIGJ1dHRvblxuLmZvcm0tYnV0dG9uIHtcbiAgQGV4dGVuZCAuY29udGFjdC1idXR0b247XG4gIGZvbnQtZmFtaWx5OiAkcHJpbWFyeTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGJvcmRlcjogbm9uZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBib3JkZXItcmFkaXVzOiAyNXB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWNjZW50O1xuICBjb2xvcjogJHdoaXRlO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgcGFkZGluZzogMTVweCA0MHB4O1xuICBtYXJnaW46IDAgYXV0bztcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBvdXRsaW5lOiBub25lO1xuICB0cmFuc2l0aW9uOiAkdHJhbnNpdGlvbjtcbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogZGFya2VuKCRhY2NlbnQsIDE1JSk7XG4gICAgYm94LXNoYWRvdzogMCAzcHggMTBweCAtMXB4ICRhY2NlbnQ7XG4gICAgb3BhY2l0eTogMC45O1xuICAgIGNvbG9yOiAkd2hpdGU7XG4gIH1cbiAgJjphY3RpdmUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSguMWVtKTtcbiAgICBib3gtc2hhZG93OiAwIDNweCAxMHB4IC0xcHggJGFjY2VudDtcbiAgfVxufVxuXG4vLyBcIlZpZXcgbW9yZSB3b3JrIG9uIEdpdEh1YlwiIGJ1dHRvbiBpbiB3b3JrIHNlY3Rpb25cblxuLm1vcmUtd29yay13cmFwcGVyIHtcbiAgcGFkZGluZzogMjBweDtcbiAgLm1vcmUtd29yayB7XG4gICAgQGV4dGVuZCAuZm9ybS1idXR0b247XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRhY2NlbnQ7XG4gICAgQGluY2x1ZGUgbGFyZ2UtYnJlYWtwb2ludCB7XG4gICAgICB3aWR0aDogMjI1cHg7XG4gICAgICBwYWRkaW5nOiAyMHB4IDI1cHg7XG4gICAgfVxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRlbigkYWNjZW50LCAxMCUpO1xuICAgICAgYm94LXNoYWRvdzogMCAycHggMTBweCAtMXB4IGRhcmtlbigkYWNjZW50LCAxMCUpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBQcm9qZWN0IGRldGFpbCBidXR0b25zXG5cbi5wcm9qZWN0LWxpbmtzIHtcbiAgYSB7XG4gICAgQGV4dGVuZCAuZm9ybS1idXR0b247XG4gICAgcGFkZGluZzogMTBweDtcbiAgICBtYXJnaW46IDAgM3B4O1xuICAgIHdpZHRoOiAxMjBweDtcbiAgICBjb2xvcjogJHdoaXRlICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiAwLjllbTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWNjZW50O1xuICAgIEBpbmNsdWRlIGxhcmdlLWJyZWFrcG9pbnQge1xuICAgICAgZm9udC1zaXplOiAwLjhlbTtcbiAgICAgIHBhZGRpbmc6IDE1cHg7XG4gICAgICB3aWR0aDogNTAlO1xuICAgIH1cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRlbigkYWNjZW50LCAxMCUpO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDEwcHggLTFweCBkYXJrZW4oJGFjY2VudCwgMTAlKTtcbiAgICB9XG4gIH1cbn1cbiIsIiIsIkBpbXBvcnQgXCJiYWNrZ3JvdW5kXCI7XG5AaW1wb3J0IFwiaGVyb1wiO1xuQGltcG9ydCBcImNvbnRlbnRcIjtcbiIsImJvZHkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG59XG4iLCIud2VsY29tZSB7XG4gIGJhY2tncm91bmQ6IGxpZ2h0ZW4oZ3JheSwgNDYlKTtcbiAgd2lkdGg6IDEwMHZ3O1xuICBoZWlnaHQ6IDUwJTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAtMTtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHNrZXcoMGRlZywgLTdkZWcpO1xuICB0cmFuc2Zvcm06IHNrZXcoMGRlZywgLTdkZWcpO1xuICBwYWRkaW5nOiAyNnZoIDA7XG4gIG1hcmdpbi10b3A6IC0xNTBweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgLndlbGNvbWUtY29udGVudCB7XG4gICAgcGFkZGluZy10b3A6IDEzMHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHdpZHRoOiA3MCU7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHNrZXcoMGRlZywgN2RlZyk7XG4gICAgdHJhbnNmb3JtOiBza2V3KDBkZWcsIDdkZWcpO1xuICB9XG4gIGgxIHtcbiAgICBmb250LXNpemU6IDMuNmVtO1xuICAgIEBpbmNsdWRlIHhzLWJyZWFrcG9pbnQge1xuICAgICAgZm9udC1zaXplOiAyLjVlbTtcbiAgICB9XG4gICAgQGluY2x1ZGUgbGFyZ2UtYnJlYWtwb2ludCB7XG4gICAgICBmb250LXNpemU6IDVlbTtcbiAgICB9XG4gIH1cbn1cbmNhbnZhcyB7XG4gIHRyYW5zZm9ybTogc2tldygwZGVnLCA3ZGVnKTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBvcGFjaXR5OiAuNTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xufVxuXG4ubW9yZS1idXR0b24ge1xuICBoZWlnaHQ6IDg1dmg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gIC5mYSB7XG4gICAgZm9udC1zaXplOiAyZW07XG4gICAgY29sb3I6IGxpZ2h0ZW4oZ3JheSwgMjAlKTtcbiAgICBhbmltYXRpb246IGhvdmVyIDc1MG1zIGluZmluaXRlIGFsdGVybmF0ZSBlYXNlLWluLW91dDtcbiAgfVxufVxuXG4gIC5mb290ZXItaWNvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgdWwge1xuICAgICAgd2lkdGg6IDIwMHB4O1xuICAgICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgYm90dG9tOiAwO1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAyLjUlO1xuICAgICAgcGFkZGluZzogMTBweDtcbiAgICAgIEBpbmNsdWRlIHhzLWJyZWFrcG9pbnQge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgICAgIG1hcmdpbi1yaWdodDogNSU7XG4gICAgICAgIH1cbiAgICAgIGxpIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBmb250LXNpemU6IDEuN2VtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yZW07XG4gICAgICB9XG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgICAgfVxuICAgICAgYSwgbGkge1xuICAgICAgICBjb2xvcjogJGFjY2VudDtcbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgYW5pbWF0aW9uOiBzcGlubWVyaWdodHJvdW5kIDU1MG1zIDEgZm9yd2FyZHMgZWFzZS1pbi1vdXQ7XG4gICAgICAgICAgb3BhY2l0eTogMC44O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4iLCIuY29udGVudC13cmFwcGVyIHtcbiAgbWFyZ2luOiAxNXB4O1xuICBwYWRkaW5nOiAyMHB4O1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0ZW4oJGFjY2VudCwgMzAlKTtcbiAgYm94LXNoYWRvdzogMTBweCAxMHB4ICRoZWFkbGluZTtcbiAgZm9ybSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBzcGFjZS1hcm91bmQ7XG4gICAgLnNlYXJjaC1pbnB1dCB7XG4gICAgICB3aWR0aDogNTAlO1xuICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgIzI5MjkyOTtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIHBhZGRpbmc6IDVweCAxMHB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIH1cbiAgICBsYWJlbCB7XG4gICAgICBtYXJnaW4tdG9wOiA1JTtcbiAgICAgIGNvbG9yOiAkYWNjZW50O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGhlYWRsaW5lO1xuICAgICAgYm94LXNoYWRvdzogNHB4IDVweCAkYWNjZW50O1xuICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgcGFkZGluZzogMiU7XG4gICAgICBmb250LWZhbWlseTogJHByaW1hcnk7XG4gICAgICBmb250LXNpemU6IDJlbTtcbiAgICAgIHdpZHRoOiA3MCU7XG4gICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICB9XG4gICAgaW5wdXRbdHlwZT10ZXh0XSB7XG4gICAgICBjb2xvcjogJGhlYWRsaW5lO1xuICAgICAgYm9yZGVyOiAzcHggc29saWQgJGFjY2VudDtcbiAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbiAgICAgICY6Zm9jdXMge1xuICAgICAgICBib3JkZXI6IDNweCBzb2xpZCAkaGVhZGxpbmU7XG4gICAgICAgIGJvcmRlci1ib3R0b206ICRoZWFkbGluZTtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRlbigkYWNjZW50LCAyNSUpO1xuICAgICAgICBjb2xvcjogZGFya2VuKCRoZWFkbGluZSwgMTAlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgYnV0dG9uIHtcbiAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICBib3JkZXI6IG5vbmU7XG4gICAgICBjb2xvcjogJGhlYWRsaW5lO1xuICAgICAgZm9udC1zaXplOiA0MHB4O1xuICAgICAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZS1pbi1vdXQ7XG4gICAgICAmOmZvY3VzLCAmOmFjdGl2ZSwgJjpob3ZlciB7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4yKTtcbiAgICAgICAgY29sb3I6ICRhY2NlbnQ7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuaW5wdXQ6OnBsYWNlaG9sZGVyIHtcbiAgY29sb3I6ICRibGFjaztcbn1cblxuaW5wdXQ6bm90KFt0eXBlXSk6Zm9jdXM6bm90KFtyZWFkb25seV0pLCBpbnB1dFt0eXBlPXRleHRdOm5vdCguYnJvd3Nlci1kZWZhdWx0KTpmb2N1czpub3QoW3JlYWRvbmx5XSl7XG4gIGJvcmRlci1ib3R0b206IDNweCBzb2xpZCAkaGVhZGxpbmU7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG59XG5cblxuLnJlc3VsdCB7XG4gIHBhZGRpbmc6IDUlO1xuICBsaSB7XG4gICAgbGluZS1oZWlnaHQ6IDI4cHg7XG4gIH1cbiAgaHIge1xuICAgIGJvcmRlci10b3A6IDdweCBzb2xpZCAkaGVhZGxpbmU7XG5cdCAgYm9yZGVyLWJvdHRvbTogM3B4IHNvbGlkICRhY2NlbnQ7XG4gIH1cbn1cbiIsIkBpbXBvcnQgXCJhYm91dFwiO1xuQGltcG9ydCBcIndvcmtcIjtcbkBpbXBvcnQgXCJjb250YWN0XCI7XG5AaW1wb3J0IFwicHJvamVjdC1kZXRhaWxcIjtcbiIsIiAgI2Fib3V0IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiA5NjBweDtcbiAgICBwYWRkaW5nOiAxMDBweCAwO1xuICAgIG1hcmdpbjogMTB2aCBhdXRvIDAgYXV0bztcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgQGluY2x1ZGUgc21hbGwtYnJlYWtwb2ludCB7XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG4gICAgQGluY2x1ZGUgbGFyZ2UtYnJlYWtwb2ludCB7XG4gICAgICBtYXgtd2lkdGg6ICRsZy1jb250YWluZXI7XG4gICAgICBmb250LXNpemU6ICRsZy1mb250O1xuICAgIH1cbiAgICBoMiB7XG4gICAgICBmb250LXNpemU6IDIuMmVtO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG4gICAgaDQge1xuICAgICAgZm9udC1zaXplOiAuOTI1ZW07XG4gICAgfVxuICAgIGEge1xuICAgICAgY29sb3I6ICRhY2NlbnQ7XG4gICAgICB0cmFuc2l0aW9uOiAkdHJhbnNpdGlvbjtcbiAgICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogJHBpbms7XG4gICAgICB9XG4gICAgfVxuICAgIEBpbmNsdWRlIHNtYWxsLWJyZWFrcG9pbnQge1xuICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgfVxuICAgIC5hYm91dC1pbmZvIHtcbiAgICAgIEBpbmNsdWRlIGdyaWQtY29sdW1uKDEyKTtcbiAgICAgIG1heC1oZWlnaHQ6IDMwMHB4O1xuICAgICAgQGluY2x1ZGUgc21hbGwtYnJlYWtwb2ludCB7XG4gICAgICAgIGgyIHtcbiAgICAgICAgICBmb250LXNpemU6IDEuMmVtO1xuICAgICAgICB9XG4gICAgICAgIGg0IHtcbiAgICAgICAgICBmb250LXNpemU6IDAuOWVtO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAuYWJvdXQtaW5mby1yaWdodCB7XG4gICAgICAgIEBpbmNsdWRlIGdyaWQtY29sdW1uKDMpO1xuICAgICAgICAuaW1hZ2Utd3JhcHBlciB7XG4gICAgICAgICAgLnBob3RvIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGluY2x1ZGUgeHMtYnJlYWtwb2ludCB7XG4gICAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4oMTIpO1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIHdpZHRoOiAyMDBweDtcbiAgICAgICAgICAgIGhlaWdodDogMjAwcHg7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICAuYWJvdXQtaW5mby1sZWZ0IHtcbiAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4oOSk7XG4gICAgICAgIEBpbmNsdWRlIHhzLWJyZWFrcG9pbnQge1xuICAgICAgICAgIEBpbmNsdWRlIGdyaWQtY29sdW1uKDEyKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgfVxuICAgIC5jb2wtd3JhcHBlciB7XG4gICAgICBAaW5jbHVkZSBncmlkLWNvbHVtbigxMik7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgQGluY2x1ZGUgbWVkaXVtLWJyZWFrcG9pbnQge1xuICAgICAgfVxuICAgICAgQGluY2x1ZGUgeHMtYnJlYWtwb2ludCB7XG4gICAgICAgIG1hcmdpbjogMTgwcHggYXV0byAwIGF1dG87XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICB9XG4gICAgICAucmVtb3ZlIHtcbiAgICAgICAgQGluY2x1ZGUgeHMtYnJlYWtwb2ludCB7XG4gICAgICAgICAgbWFyZ2luLXRvcDogNTBweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLmNvbCB7XG4gICAgICAgIEBpbmNsdWRlIGdyaWQtY29sdW1uKDQpO1xuICAgICAgICBzdHJvbmcge1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICBmb250LXNpemU6IDEuMWVtO1xuICAgICAgICAgIGZvbnQtZmFtaWx5OiAkaGVhZGVyO1xuICAgICAgICAgIC5jb2wtaW1nIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDMlO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogLTVweDtcbiAgICAgICAgICAgIHdpZHRoOiAzMHB4O1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogJHRyYW5zaXRpb247XG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjA1KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdWwge1xuICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgbGkge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICBmb250LXNpemU6IDAuOWVtO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSB4cy1icmVha3BvaW50IHtcbiAgICAgICAgICBAaW5jbHVkZSBncmlkLWNvbHVtbigxMik7XG4gICAgICAgICAgbWFyZ2luLXRvcDogMTB2aDtcbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBzbWFsbC1icmVha3BvaW50IHtcbiAgICAgICAgICBAaW5jbHVkZSBncmlkLWNvbHVtbigxMik7XG4gICAgICAgICAgbWFyZ2luLXRvcDogN3ZoO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4iLCIjd29yayB7XG4gIGhlaWdodDogMTAwJTtcbiAgcGFkZGluZzogNTBweCAwO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgQGluY2x1ZGUgc21hbGwtYnJlYWtwb2ludCB7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgcGFkZGluZzogMDtcbiAgfVxuICBAaW5jbHVkZSBsYXJnZS1icmVha3BvaW50IHtcbiAgICBmb250LXNpemU6ICRsZy1mb250O1xuICB9XG4gIC53b3JrLXdyYXBwZXIge1xuICAgIG1heC13aWR0aDogOTYwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gIH1cbiAgaDIge1xuICAgIGZvbnQtc2l6ZTogMmVtO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxuICAud29yay1jb250YWluZXIge1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIG1heC13aWR0aDogOTYwcHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgLndvcmstZ3JpZCB7XG4gICAgICBAaW5jbHVkZSBsYXJnZS1icmVha3BvaW50IHtcbiAgICAgICAgd2lkdGg6ICRsZy1jb250YWluZXI7XG4gICAgICAgIG1hcmdpbjogMCA1MCU7XG4gICAgICB9XG4gICAgICAucHJvamVjdCB7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAxJTtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHRyYW5zaXRpb246ICR0cmFuc2l0aW9uO1xuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDEwNSk7XG4gICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgIG9wYWNpdHk6IDAuODU7XG4gICAgICAgIH1cbiAgICAgICAgaW1nIHtcbiAgICAgICAgICB3aWR0aDogOTAlO1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICAgIHRyYW5zaXRpb246ICR0cmFuc2l0aW9uO1xuICAgICAgICAgIEBpbmNsdWRlIGxhcmdlLWJyZWFrcG9pbnQge1xuICAgICAgICAgICAgd2lkdGg6IDk1JTtcbiAgICAgICAgICB9XG4gICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAkYm94LXNoYWRvdztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLnJlc3BvbnNpdmUtaW1hZ2Uge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiA5NyU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gU3BlY2lhbCBNZWRpYSBRdWVyaWVzIGZvciBXb3JrIFByb2plY3RzXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0MDBweCkge1xuICAud29yay1ncmlkIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICB9XG4gIC5wcm9qZWN0IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIH1cbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTUwcHgpIHtcbiAgLndvcmstZ3JpZCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgLnByb2plY3Qge1xuICAgICAgd2lkdGg6IGNhbGMoMTAwJSAvIDIpO1xuICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgfVxuICB9XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDgwMHB4KSB7XG4gIC53b3JrLWdyaWQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIC5wcm9qZWN0IHtcbiAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLyAzKTtcbiAgICB9XG4gIH1cbn1cbi8vXG4ubWlkZGxlIHtcbiAgdHJhbnNpdGlvbjogLjVzIGVhc2UtaW4tb3V0O1xuICBvcGFjaXR5OiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG59XG5cbi5wcm9qZWN0OmhvdmVyIC5taWRkbGUge1xuICBvcGFjaXR5OiAwLjk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLnByb2plY3QtdGV4dCB7XG5iYWNrZ3JvdW5kLWNvbG9yOiAkYWNjZW50O1xuY29sb3I6IHdoaXRlO1xuZm9udC1zaXplOiAuOGVtO1xucGFkZGluZzogMTBweCAyMHB4O1xuYm9yZGVyLXJhZGl1czogIDIwcHg7XG59XG4iLCIjY29udGFjdC1tZSB7XG4gIGJhY2tncm91bmQ6ICNGRUFDNUU7ICAvKiBmYWxsYmFjayBmb3Igb2xkIGJyb3dzZXJzICovXG4gIGJhY2tncm91bmQ6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAjNEJDMEM4LCAjQzc3OUQwLCAjRkVBQzVFKTsgIC8qIENocm9tZSAxMC0yNSwgU2FmYXJpIDUuMS02ICovXG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgIzRCQzBDOCwgI0M3NzlEMCwgI0ZFQUM1RSk7IC8qIFczQywgSUUgMTArLyBFZGdlLCBGaXJlZm94IDE2KywgQ2hyb21lIDI2KywgT3BlcmEgMTIrLCBTYWZhcmkgNysgKi9cbiAgaGVpZ2h0OiAxMDAlO1xuICBwYWRkaW5nOiAxMDBweCAwO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgY29sb3I6ICR3aGl0ZTtcblxuICAuY29udGFjdC13cmFwcGVyIHtcbiAgICBAaW5jbHVkZSBncmlkLWNvbHVtbigxMik7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgbWF4LXdpZHRoOiA5NjBweDtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBAaW5jbHVkZSBsYXJnZS1icmVha3BvaW50IHtcbiAgICAgIHdpZHRoOiAkbGctY29udGFpbmVyO1xuICAgICAgZm9udC1zaXplOiAkbGctZm9udDtcbiAgICB9XG4gICAgLmJvdHRvbS1pY29ucyB7XG4gICAgICB3aWR0aDogMjAwcHg7XG4gICAgICB1bCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBsaSB7XG4gICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgZm9udC1zaXplOiAyNXB4O1xuICAgICAgICAgIHRyYW5zaXRpb246ICR0cmFuc2l0aW9uO1xuICAgICAgICAgIGEge1xuICAgICAgICAgICAgY29sb3I6ICRhY2NlbnQ7XG4gICAgICAgICAgfVxuICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgb3BhY2l0eTogMC43O1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0uMWVtKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaDIge1xuICAgICAgZm9udC1zaXplOiAyZW07XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuICAgIHAge1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgZm9udC1zaXplOiAxLjJlbTtcbiAgICAgIHdpZHRoOiA3MCU7XG4gICAgICBtYXgtd2lkdGg6IDgwMHB4O1xuICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbiAgICBmb3JtIHtcbiAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgd2lkdGg6IDYwJTtcbiAgICAgIEBpbmNsdWRlIHNtYWxsLWJyZWFrcG9pbnQge1xuICAgICAgICB3aWR0aDogODAlO1xuICAgICAgfVxuICAgICAgaW5wdXQsIHRleHRhcmVhIHtcbiAgICAgICAgcGFkZGluZzogN3B4IDVweDtcbiAgICAgICAgd2lkdGg6IDk1JTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbjogMTVweCBhdXRvO1xuICAgICAgICBib3JkZXI6IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHJhZGl1cztcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgdHJhbnNpdGlvbjogJHRyYW5zaXRpb247XG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkICRhY2NlbnQ7XG4gICAgICAgICAgb3BhY2l0eTogMC44O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpbnB1dCB7XG4gICAgICAgIGhlaWdodDogMjVweDtcbiAgICAgIH1cbiAgICAgIGlucHV0W3R5cGU9dGV4dF0sIGlucHV0W3R5cGU9ZW1haWxdIHtcbiAgICAgICAgZm9udC1mYW1pbHk6ICRwcmltYXJ5O1xuICAgICAgICBmb250LXNpemU6IDAuOGVtO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogJGxldHRlci1zcGFjaW5nO1xuICAgICAgfVxuICAgICAgdGV4dGFyZWEge1xuICAgICAgICBoZWlnaHQ6IDEwMHB4O1xuICAgICAgICBjb2xvcjogJGJsYWNrO1xuICAgICAgICBmb250LWZhbWlseTogJHByaW1hcnk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44ZW07XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAkbGV0dGVyLXNwYWNpbmc7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIFRleHRhcmVhIHBsYWNlaG9sZGVyIGNvbG9yXG50ZXh0YXJlYTo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XG5jb2xvcjogJGJsYWNrO1xufVxuXG50ZXh0YXJlYTotbW96LXBsYWNlaG9sZGVyIHsgLyogRmlyZWZveCAxOC0gKi9cbmNvbG9yOiAkYmxhY2s7XG59XG5cbnRleHRhcmVhOjotbW96LXBsYWNlaG9sZGVyIHsgIC8qIEZpcmVmb3ggMTkrICovXG5jb2xvcjogJGJsYWNrO1xufVxuXG50ZXh0YXJlYTotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xuY29sb3I6ICRibGFjaztcbn1cbiIsIi5uZXh0LXByZXYtd3JhcHBlciB7XG4gIG1hcmdpbjogMjVweCBhdXRvIDAgYXV0bztcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgbWF4LXdpZHRoOiA5NjBweDtcbiAgaGVpZ2h0OiAxMDAlO1xuICBAaW5jbHVkZSBsYXJnZS1icmVha3BvaW50IHtcbiAgICBtYXgtd2lkdGg6ICRsZy1jb250YWluZXI7XG4gICAgZm9udC1zaXplOiAkbGctZm9udDtcbiAgfVxuICBAaW5jbHVkZSBzbWFsbC1icmVha3BvaW50IHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxuICBhIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBjb2xvcjogJGFjY2VudDtcbiAgICB0cmFuc2l0aW9uOiAkdHJhbnNpdGlvbjtcbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAkYmx1ZTtcbiAgICB9XG4gIH1cbiAgLm5leHQtcHJldiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgd2lkdGg6IDI1MHB4O1xuICAgIG1hcmdpbi1yaWdodDogNTBweDtcbiAgICBmb250LXNpemU6IDAuOGVtO1xuICAgIHNwYW4ge1xuICAgICAgY29sb3I6ICRibHVlO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzbWFsbC1icmVha3BvaW50IHtcbiAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICB9XG4gICAgQGluY2x1ZGUgbGFyZ2UtYnJlYWtwb2ludCB7XG4gICAgICBmb250LXNpemU6IC42NzVlbTtcbiAgICB9XG4gIH1cbn1cblxuI3Byb2plY3Qge1xuICBoZWlnaHQ6IDEwMCU7XG4gIG1heC13aWR0aDogOTYwcHg7XG4gIG1hcmdpbjogMjVweCBhdXRvIDAgYXV0bztcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIEBpbmNsdWRlIHNtYWxsLWJyZWFrcG9pbnQge1xuICAgIG1hcmdpbjogMjBweCBhdXRvO1xuICB9XG4gIEBpbmNsdWRlIGxhcmdlLWJyZWFrcG9pbnQge1xuICAgIG1heC13aWR0aDogJGxnLWNvbnRhaW5lcjtcbiAgICBmb250LXNpemU6ICRsZy1mb250O1xuICB9XG4gIC5wcm9qZWN0LXdyYXBwZXIge1xuICAgIGgyLCBoMyB7XG4gICAgICBtYXJnaW4tdG9wOiAwO1xuICAgIH1cbiAgICBoMiwgaDQge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG4gICAgaDMge1xuICAgICAgZm9udC1zaXplOiAxLjI1ZW07XG4gICAgfVxuICAgIGg0IHtcbiAgICAgIGZvbnQtc2l6ZTogMS4yZW07XG4gICAgfVxuICAgIGg1IHtcbiAgICAgIGZvbnQtc2l6ZTogMTdweDtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuICAgIGEge1xuICAgICAgY29sb3I6ICRhY2NlbnQ7XG4gICAgICB0cmFuc2l0aW9uOiAkdHJhbnNpdGlvbjtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiAkYmx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4oMTIpO1xuICAgIC5wcm9qZWN0LWxlZnQge1xuICAgICAgbWFyZ2luLWJvdHRvbTogNTBweDtcbiAgICAgIEBpbmNsdWRlIGdyaWQtY29sdW1uICg5KTtcbiAgICAgIGgyLCBoMyB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIH1cbiAgICAgIGgyIHtcbiAgICAgICAgZm9udC1zaXplOiAyLjVlbTtcbiAgICAgICAgY29sb3I6ICRhY2NlbnQ7XG4gICAgICB9XG4gICAgICAubWFpbi1pbWcge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cbiAgICAgIC5zZWNvbmRhcnktaW1nIHtcbiAgICAgICAgd2lkdGg6IDkwJTtcbiAgICAgICAgbWFyZ2luOiAwIDUlO1xuICAgICAgfVxuICAgICAgLm1haW4taW1nLCAuc2Vjb25kYXJ5LWltZyB7XG4gICAgICAgIHRyYW5zaXRpb246ICR0cmFuc2l0aW9uO1xuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICBib3gtc2hhZG93OiAkYm94LXNoYWRvdztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLnByb2plY3QtbGlua3Mge1xuICAgICAgICB3aWR0aDogMjYwcHg7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBtYXJnaW46IDIwcHggYXV0byAwIGF1dG87XG5cbiAgICAgIH1cbiAgICAgIC5oaWdobGlnaHQge1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgfVxuXG4gICAgICAuZmEtY2hlY2stY2lyY2xlIHtcbiAgICAgICAgY29sb3I6IGdyZWVuO1xuICAgICAgfVxuICAgICAgQGluY2x1ZGUgc21hbGwtYnJlYWtwb2ludCB7XG4gICAgICAgIEBpbmNsdWRlIGdyaWQtY29sdW1uKDEyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLnByb2plY3QtcmlnaHQge1xuICAgICAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4gKDMpO1xuICAgICAgQGluY2x1ZGUgc21hbGwtYnJlYWtwb2ludCB7XG4gICAgICAgIEBpbmNsdWRlIGdyaWQtY29sdW1uICgxMik7XG4gICAgICB9XG4gICAgICBoMyB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IC01cHg7XG4gICAgICAgIH1cbiAgICAgIHVsIHtcbiAgICAgICAgbGkge1xuICAgICAgICAgIGNvbG9yOiAjNjY2O1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC44NWVtO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjRlbTtcbiAgICAgICAgICBhIHtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgY29sb3I6ICRhY2NlbnQ7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiAkdHJhbnNpdGlvbjtcbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICBjb2xvcjogJGJsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSAvLyBhXG4gICAgICAgIH0gLy8gbGlcbiAgICAgIH0gLy8gdWxcbiAgICAgIC5wcm9qZWN0LWNvbCB7XG4gICAgICBAaW5jbHVkZSBzbWFsbC1icmVha3BvaW50IHtcbiAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4gKDQpO1xuICAgICAgICB9XG4gICAgICBAaW5jbHVkZSB4cy1icmVha3BvaW50IHtcbiAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4gKDEyKTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB9XG4gICAgICB9IC8vIFByb2plY3QtY29sXG4gICAgfSAvLyBQcm9qZWN0IHJpZ2h0XG4gIH1cbn1cbiIsIiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQXdFQUEsNEVBQTRFO0FBRTVFO2dGQUNnRjtBQUVoRjs7OztHQUlHO0FBRUgsQUFBQSxJQUFJLENBQUM7RUFDSCxXQUFXLEVBQUUsSUFBSTtFQUFFLE9BQU87RUFDMUIsb0JBQW9CLEVBQUUsSUFBSTtFQUFFLE9BQU87RUFDbkMsd0JBQXdCLEVBQUUsSUFBSTtFQUFFLE9BQU8sRUFDeEM7O0FBRUQ7Z0ZBQ2dGO0FBRWhGOztHQUVHO0FBRUgsQUFBQSxJQUFJLENBQUM7RUFDSCxNQUFNLEVBQUUsQ0FBQyxHQUNWOztBQUVEOztHQUVHO0FBRUgsQUFBQSxPQUFPO0FBQ1AsS0FBSztBQUNMLE1BQU07QUFDTixNQUFNO0FBQ04sR0FBRztBQUNILE9BQU8sQ0FBQztFQUNOLE9BQU8sRUFBRSxLQUFLLEdBQ2Y7O0FBRUQ7OztHQUdHO0FBRUgsQUFBQSxFQUFFLENBQUM7RUFDRCxTQUFTLEVBQUUsR0FBRztFQUNkLE1BQU0sRUFBRSxRQUFRLEdBQ2pCOztBQUVEO2dGQUNnRjtBQUVoRjs7O0dBR0c7QUFFSCxBQUFBLFVBQVU7QUFDVixNQUFNO0FBQ04sSUFBSSxDQUFDO0VBQUUsT0FBTztFQUNaLE9BQU8sRUFBRSxLQUFLLEdBQ2Y7O0FBRUQ7O0dBRUc7QUFFSCxBQUFBLE1BQU0sQ0FBQztFQUNMLE1BQU0sRUFBRSxRQUFRLEdBQ2pCOztBQUVEOzs7R0FHRztBQUVILEFBQUEsRUFBRSxDQUFDO0VBQ0QsVUFBVSxF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 */
