@charset "UTF-8";
/* Colors */
/* even rows in list or tables, subtle shade of $c-bg-high */
/* Primary: blue */
/* text over primary background */
/* Secondary: green */
/* text over secondary background */
/* Accent: orange */
/* text over accent background */
/* Brag: gold */
/* Number drawn on the streak wings. Dark ink reads against the gold; dark themes
   (dark, cohenchess, transp) override this pair with metallic silver. */
/* Same bevel again, for browsers that take the gradient-clip path. */
/* text over brag background */
/* Error: red */
/* text over brag background */
/* Good: green */
/* Warn: orange */
/* Bad: red */
/* Heart: red */
/* Fancy: pink */
/* text over brag background */
/* Borders */
/* Shadows */
/* even rows in list or tables, subtle shade of $c-bg-high */
/* Primary: blue */
/* Secondary: green */
/* Brag: gold */
/* Number drawn on the streak wings: silver with a highlight above and a shade
   below, so it reads as brushed metal rather than flat grey. Gradient text is not
   an option - background-clip:text paints almost nothing inside the flex-container
   pseudo that draws this number. cohenchess and transp @import this file. */
/* The shine treatment clips the gradient to the glyphs, and a text-shadow would
   paint over that clipped background - so the same bevel is expressed as a filter. */
/* Fancy: pink */
/* Good: green */
/* Warn: orange */
/* Bad: red */
/* Common imports for all CSS modules */
/* Widths */
/* Heights */
/* Orientations */
/* Capabilities */
/* Aliases */
/* Uniboard: keep the same page layout across pages */
/* when the width is appropriate for col1, but landscape prevents it */
.slist thead, .mchat__tab, .mchat__messages a:not(.user-link), .tour__main__header .time, .tour__actor-info .stats td:last-child, .tour__actor-info .sublist th {
  font-family: 'Roboto', Sans-Serif;
}

/* text printed directly on the page background deserves special treatment (transp theme) */
.chat__members {
  color: #999999;
}

.slist thead, .tour__controls, .tour__actor-info .stats h2 {
  background: linear-gradient(to bottom, #3c3934, #33312e 100%);
}

.fbt {
  background: none;
  border: none;
  outline: none;
  color: #bababa;
  align-items: normal;
}

.mchat__tab input {
  -webkit-appearance: none;
  background: #161512;
  border: 1px solid #3c3934;
  display: inline-block;
  padding: 0.5em;
}

.mchat__tab input:checked {
  background: #3b5c16;
  border-color: #4f7a1d;
}

.context-streamer, .mchat__tab, .tour__meta section .setup {
  white-space: nowrap;
  overflow: hidden;
}

.mchat__tab span, .tour__standing .player .name, .tour__player-info .pairings td:nth-child(2) {
  white-space: nowrap;
}

.mchat__messages, .tour__meta .description {
  overflow-wrap: break-word;
  word-break: break-word;
}

.mchat__tab span, .tour__standing .player .name, .tour__player-info .pairings td:nth-child(2), .podium > div, .tour__duels strong {
  overflow: hidden;
  text-overflow: ellipsis;
}

.tour__controls .pager {
  /* extends %flex-wrap */
  display: flex;
  flex-flow: row wrap;
  align-items: center;
}

.context-streamer, .chat__members__number, .tour__meta section[data-icon], .tour__featured .mini-game__player, .tour__board .mini-game__player, .tour__main__header, .tour__standing .player .user-link {
  display: flex;
  flex-flow: row nowrap;
  align-items: center;
}

.tour__featured .mini-game__user .user-link, .tour__controls, .tour__duels line {
  /* extends %flex-center */
  display: flex;
  flex-flow: row wrap;
  align-items: center;
  justify-content: space-between;
}

.mchat, .mchat__content, .tour__side, .tour__featured, .tour__board, .tour__main__header .clock-created, .tour__ur-playing, .tour__stats, .tour__duels a, .tour__actor-info .stats {
  display: flex;
  flex-flow: column;
}

.mchat__tab input, .mchat, .tour__meta, .tour__board, .tour__actor-info, .tour__stats, .tour__meta .tour__prize, .tour__duels .rank {
  border-radius: 3px;
}

.mchat, .tour__meta, .tour__board, .tour__actor-info {
  overflow: hidden;
  /* helps with clipping background into border-radius */
}

.mchat__tab {
  border-radius: 3px 3px 0 0;
}

.context-streamer {
  border-radius: 0 0 3px 3px;
}

.tour__stats, .mchat, .tour__meta, .tour__board, .tour__actor-info, .context-streamer, .tour__controls {
  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
}

.fbt {
  text-transform: uppercase;
  line-height: 1.5;
  transition: all 150ms;
}

@media (hover: hover) {
  .fbt:hover:not(.disabled):not([disabled]) {
    background: #537c23;
    color: #fff;
  }
}

.fbt.active {
  background: #629924 !important;
  color: #fff;
}

.fbt.disabled, .fbt[disabled] {
  opacity: 0.5;
  cursor: default;
}

@keyframes bar-glider-anim {
  0% {
    transform: translateX(-1300px);
  }
  100% {
    transform: translateX(2100px);
  }
}

.bar-glider {
  position: relative;
  overflow: hidden;
}

.bar-glider::after {
  content: '';
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  width: 70px;
  background: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.3));
  animation: bar-glider-anim 3s linear infinite;
}

.slist {
  width: 100%;
  border-bottom: 1px solid #404040;
}

.slist thead th {
  border-top: 1px solid #404040;
  border-bottom: 1px solid #404040;
  padding: 0.5rem 0.8rem;
}

.slist thead th.large {
  font-size: 1.2rem;
}

.slist td {
  padding: 1rem;
}

.slist td .label {
  font-family: monospace;
  font-size: 0.8rem;
}

.slist tbody tr:nth-child(even) {
  background: #302e2c;
}

.slist td:first-child,
.slist th:first-child {
  padding-left: 1.5rem;
}

.slist-pad td:first-child,
.slist-pad th:first-child {
  padding-left: var(--box-padding);
}

.slist-pad td:last-child,
.slist-pad th:last-child {
  padding-right: var(--box-padding);
}

.slist-invert tbody tr:nth-child(odd) {
  background: #302e2c;
}

.slist-invert tbody tr:nth-child(even) {
  background: none;
}

.pull-quote {
  margin: 0 auto;
}

.pull-quote p {
  color: #bababa;
  position: relative;
  margin: 0 0.7em;
  padding: 1em 0;
  border: 1px solid #404040;
  border-width: 1px 0;
  font-style: italic;
  font-size: 1.1rem;
}

.pull-quote p:after {
  content: '';
  position: absolute;
  bottom: -9px;
  left: 42px;
  width: 15px;
  height: 15px;
  background: #262421;
  border-left: 2px solid #404040;
  border-bottom: 1px solid #404040;
  transform: skew(45deg) rotate(-45deg);
}

.pull-quote.long p {
  font-size: 1rem;
}

.pull-quote footer {
  margin: 10px;
  line-height: 20px;
  text-align: right;
}

.pull-quote footer:before {
  content: '\2014\2009';
}

.fire-trophy {
  text-shadow: 0 0.008em 0.127em #fefcc9, 0.055em -0.066em 0.2em #feec85, -0.111em -0.127em 0.272em #ffae34, 0.111em -0.272em 0.411em #ec760c, -0.111em -0.456em 0.416em #cd4606, 0 -0.533em 0.577em #973716, 0.055em -0.55em 0.533em #451b0e;
}

@keyframes fire-trophy {
  0% {
    text-shadow: 0 0.008em 0.127em #fefcc9, 0.055em -0.066em 0.2em #feec85, -0.111em -0.127em 0.272em #ffae34, 0.111em -0.272em 0.411em #ec760c, -0.111em -0.456em 0.416em #cd4606, 0 -0.533em 0.577em #973716, 0.055em -0.55em 0.533em #451b0e;
  }
  100% {
    text-shadow: 0 0 0.111em #fefcc9, 0.055em -0.055em 0.166em #fefcc9, -0.111em -0.111em 0.222em #feec85, 0.122em -0.233em 0.333em #ffae34, -0.122em -0.322em 0.277em #ec760c, 0 -0.456em 0.444em #cd4606, 0.055em -0.5em 0.444em #973716;
  }
}

.fire-trophy {
  color: #bababa;
  font-size: 90px;
  display: block;
}

.fire-trophy:hover {
  animation: fire-trophy 1.5s ease-in-out infinite alternate;
}

.color-icon.white::before {
  content: '';
}

.color-icon.black::before {
  content: '';
}

.color-icon.random::before {
  content: '';
}

.context-streamers {
  max-height: 20vh;
  overflow-y: auto;
}

.context-streamer {
  height: 2.2em;
  color: #fff !important;
  background: #44641d;
  transition: all 150ms;
}

.context-streamer::before {
  font-size: 1.3em;
  margin-left: 0.4em;
}

.context-streamer:hover {
  background: #537e20;
}

.podium-wrap {
  position: relative;
  padding-bottom: 20px;
}

.podium-wrap #confetti {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  opacity: 1;
  transition: opacity 25s;
}

.podium-wrap #confetti.faded {
  opacity: 0;
}

.podium {
  position: relative;
  z-index: 2;
}

.podium > div {
  display: inline-block;
  text-align: center;
  overflow: visible;
}

.podium > div.lame {
  opacity: 0.5;
}

.podium > div.lame .user-link {
  text-decoration: line-through;
  font-weight: normal;
}

.podium > div.lame .trophy {
  opacity: 0.3;
  filter: grayscale(100%) contrast(10%);
}

.podium .first {
  width: 33%;
  font-size: 1.6em;
}

.podium .second {
  font-size: 1.3em;
  width: 33%;
}

.podium .third {
  font-size: 1.2em;
  width: 33%;
}

.podium .trophy {
  margin: 0 auto 0.5em auto;
  background: center / contain no-repeat;
}

.podium .first .trophy {
  position: relative;
  height: 9em;
  width: 9em;
  background-image: url("../images/trophy/lichess-massive.svg");
  isolation: isolate;
}

.podium .first .trophy::after {
  content: '';
  position: absolute;
  inset: 0;
  background: center / contain no-repeat;
  background-image: url("../images/trophy/lichess-massive.svg");
  pointer-events: none;
  z-index: 3;
}

.podium .trophy-mascot {
  position: absolute;
  top: -0.05em;
  left: 50%;
  width: 9.6em;
  height: 10.2em;
  transform: translateX(-50%);
  overflow: visible;
  pointer-events: auto;
  z-index: 2;
  cursor: pointer;
}

.podium .trophy-mascot__sprite {
  position: absolute;
  left: 50%;
  bottom: -0.1em;
  transform: translateX(-50%) translateY(-5em);
  will-change: transform;
}

.podium .trophy-mascot__sprite--companion {
  transform: translateX(-50%) translateY(-6em);
}

.podium .trophy-mascot__sprite--popping {
  animation: trophy-mascot-pop 6.4s ease-out 0.8s forwards;
}

.podium .trophy-mascot__sprite--companion.trophy-mascot__sprite--popping {
  animation: trophy-mascot-pop-companion 6.4s ease-out 0.8s forwards;
}

.podium .trophy-mascot__video {
  display: block;
  width: 12.3em;
  height: auto;
}

@keyframes trophy-mascot-pop {
  0% {
    transform: translateX(-50%) translateY(-5em);
  }
  100% {
    transform: translateX(-50%) translateY(-8.2em);
  }
}

@keyframes trophy-mascot-pop-companion {
  0% {
    transform: translateX(-50%) translateY(-6em);
  }
  100% {
    transform: translateX(-50%) translateY(-9.2em);
  }
}

.podium .second .trophy {
  height: 9em;
  width: 7em;
  background-image: url("../images/trophy/lichess-silver-1.svg");
}

.podium .third .trophy {
  height: 7em;
  width: 7em;
  background-image: url("../images/trophy/lichess-bronze-2.svg");
}

@media (max-width: 499px) {
  .podium .trophy {
    display: none;
  }
}

.podium .user-link {
  font-weight: bold;
  letter-spacing: -1px;
}

.podium .stats {
  margin: 0.5em auto 0 auto;
  font-size: 0.7em;
}

.podium .stats th {
  letter-spacing: -1px;
  text-align: left;
}

.podium .stats td {
  font-weight: bold;
  padding-left: 5px;
  text-align: right;
}

.podium .third .stats {
  font-size: 0.8em;
}

.now-playing {
  display: grid;
  --np-min-width: 200px;
  grid-template-columns: repeat(auto-fill, minmax(var(--np-min-width), 1fr));
}

@media (max-width: 499px) {
  .now-playing {
    --np-min-width: 50%;
  }
}

.now-playing > a {
  color: #bababa;
  padding: 0.3em;
}

.now-playing .indicator {
  color: #d64f00;
  margin-top: -3px;
  display: block;
}

.now-playing cg-board {
  box-shadow: none;
}

body::-webkit-scrollbar,
body::-webkit-scrollbar-corner {
  width: 0.5rem;
  background: #262421;
}

body::-webkit-scrollbar-thumb {
  background: #4d4d4d;
}

body::-webkit-scrollbar-thumb:hover,
body::-webkit-scrollbar-thumb:active {
  background: #6b6b6b;
}

.mchat__tabs {
  flex: 0 0 auto;
  display: flex;
}

.mchat__tab {
  flex: 1 1 auto;
  text-align: center;
  padding: 0.4em 10px;
  cursor: pointer;
  color: #999999;
  transition: all 150ms;
}

.mchat__tab:hover {
  background: #412b1c;
}

.mchat__tab-active {
  color: #bababa;
  background: #262421 !important;
}

.mchat__tab input {
  cursor: pointer;
  display: none;
}

.mchat__tab-active input {
  display: block;
}

.mchat__tab:last-child {
  border-right: none;
}

.mchat-optional .mchat__tab.discussion {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.chat__members {
  font-size: 0.9em;
  height: 100%;
  overflow: hidden;
}

.chat__members__inner {
  display: flex;
  align-items: flex-start;
}

.chat__members__number {
  margin-right: 1ch;
}

.chat__members__number::before {
  font-size: 1em;
  color: #999999;
  margin-right: 0.2ch;
}

.mchat__messages {
  flex: 1 1 auto;
  max-height: 50vh;
  overflow-y: auto;
  overflow-x: hidden;
  cursor: initial;
  font-size: 0.9em;
}

@media (min-width: 1260px) {
  .mchat__messages {
    max-height: none;
  }
}

.mchat__messages li {
  position: relative;
  padding: 0.5em 5px 0.5em 10px;
  line-height: 1.2em;
  overflow-y: hidden;
  user-select: text;
}

.mchat__messages li.me {
  border-left: 3px solid #4f7a1d;
  padding-left: 7px;
}

.mchat__messages li.host {
  background-color: rgba(79, 122, 29, 0.4);
}

.mchat__messages .deleted {
  opacity: 0.5;
}

.mchat__messages .system {
  display: block;
  opacity: 0.8;
  font-style: italic;
  font-size: 0.9em;
  margin-left: 0;
  text-align: center;
}

.mchat__messages .announcement {
  display: block;
  font-size: 1.1em;
  margin-left: 0;
  text-align: center;
  font-weight: bold;
}

.mchat__messages .color,
.mchat__messages .user-link {
  font-weight: bold;
  padding: 0;
  color: #999999;
  letter-spacing: -1px;
  padding-right: 0.4em;
  max-width: 110px;
  text-overflow: ellipsis;
  display: inline-block;
  vertical-align: bottom;
}

.mchat__messages line.patron {
  font-size: 1.1em;
  width: 1.2em;
  text-align: left;
  color: #bf811d;
}

.mchat__messages .utitle {
  margin-right: 3px;
}

.mchat__messages i {
  display: none;
  position: absolute;
  top: 5px;
  right: 0;
  cursor: pointer;
  margin-right: 3px;
  padding: 1px 5px;
  opacity: 0.7;
  color: #d64f00;
}

.mchat__messages i:hover {
  opacity: 1;
}

.mchat__messages li:hover i {
  display: block;
  text-shadow: 0 0 2px #262421, 0 0 5px #262421, 0 0 10px #262421;
}

.mchat__messages li.me i {
  display: none !important;
}

.mchat__say {
  flex: 0 0 auto;
  border: 0;
  border-top: 1px solid #404040;
  border-radius: 0;
  padding: 3px 20px 3px 4px;
}

@media (hover: none) {
  .mchat__say {
    font-size: 16px;
  }
}

.mchat__say.whisper {
  color: #629924;
  font-weight: bold;
  font-style: italic;
}

@keyframes palantir-glowing {
  40% {
    background: none;
  }
  50% {
    background: #384722;
  }
  60% {
    background: #2b455d;
  }
  70% {
    background: none;
  }
}

.palantir {
  flex: 0 1 auto;
  animation: palantir-glowing 1.5s ease-in-out infinite;
  border-radius: 0 3px 0 0;
}

.palantir-slot {
  animation: none;
  opacity: 0.6;
}

.palantir-slot:hover {
  opacity: 1;
}

.palantir-off {
  animation: none;
}

.palantir-on {
  background: #629924;
  color: #fff;
  animation: none;
}

.palantir-on:hover {
  background: #cc3333 !important;
  color: #fff !important;
}

.palantir::after {
  top: 1px;
  left: 0;
  right: auto;
  background: none;
  box-shadow: none;
}

.mchat {
  grid-area: chat;
  justify-content: stretch;
  min-height: 15em;
}

.mchat__content {
  background: #262421;
  flex: 1 1 auto;
  overflow: hidden;
}

.mchat__content.note textarea {
  font-size: 0.9em;
  flex-grow: 1;
  border: none;
  background-color: transparent;
  line-height: 1.7em;
  outline: none;
  resize: none;
}

@media (hover: none) {
  .mchat__content.note textarea {
    font-size: 16px;
  }
}

@media (min-width: 800px) {
  #main-wrap {
    --main-max-width: auto;
  }
}

.tour__outer_main {
  position: relative;
}

.tour__outer_main #confetti {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  opacity: 1;
  transition: opacity 4s;
}

.tour__outer_main #confetti.faded {
  opacity: 0;
}

.tour {
  display: grid;
  grid-template-areas: 'main' 'side' 'uchat' 'table';
  grid-gap: 2vmin;
}

.tour__side {
  grid-area: side;
}

.tour__table, .tour__stats, .tour__player {
  grid-area: table;
}

.tour__table {
  position: relative;
  overflow: visible;
}

.tour__main {
  grid-area: main;
}

.tour .chat__members {
  grid-area: uchat;
}

@media (min-width: 800px) {
  .tour {
    grid-template-columns: minmax(500px, calc( 100vh * 0.9 - calc(var(--site-header-height) + var(--site-header-margin)) - 3rem)) minmax(240px, 400px);
    grid-template-rows: calc(100vh - calc(var(--site-header-height) + var(--site-header-margin)) - 2vmin - 3rem) min-content;
    grid-template-areas: 'main  side' 'main  uchat' 'table table';
  }
  .tour__table {
    display: flex;
  }
  .tour__table > * {
    flex: 0 0 50%;
  }
  .tour .mchat__messages {
    max-height: inherit;
  }
}

@media (min-width: 1260px) {
  .tour {
    grid-template-columns: minmax(230px, 20vw) minmax(500px, calc( 100vh * 0.9 - calc(var(--site-header-height) + var(--site-header-margin)) - 3rem)) minmax(240px, 400px);
    grid-template-rows: calc(100vh - calc(var(--site-header-height) + var(--site-header-margin)) - 2vmin - 3rem) auto;
    grid-template-areas: 'side  main table' 'uchat main table';
  }
  .tour__table {
    flex-flow: column;
  }
  .tour__table > * {
    flex: inherit;
  }
}

.mascot {
  width: 400px;
  height: 260px;
  position: relative;
  overflow: hidden;
  pointer-events: auto;
  /* REMOVE this: animation: none !important; */
}

.tour-mascot-featured-dock,
#tour-mascot-mount {
  position: relative;
  overflow: visible;
  min-height: 232px;
  width: 100%;
  z-index: 90;
}

.tour-mascot-featured-dock .mascot-bottom,
#tour-mascot-mount .mascot-bottom {
  position: relative;
  top: 0;
  z-index: 91;
}

.tour-mascot-featured-dock .mascot,
#tour-mascot-mount .mascot {
  position: relative;
  width: 100%;
  height: 232px;
  overflow: visible;
  z-index: 92;
}

.tour-mascot-featured-dock .mascot-sprite,
#tour-mascot-mount .mascot-sprite {
  position: absolute;
  top: -8px;
  bottom: auto;
  left: 0;
  z-index: 93;
  animation: none;
}

/* wrapper that moves left/right */
.mascot-sprite {
  position: absolute;
  left: 0;
  top: 0;
  will-change: transform;
  cursor: grab;
  /* ✅ pacing by default - use left instead of transform */
  animation: mascotPace 6s linear infinite alternate;
  /* ✅ pause animation when chasing */
}

.mascot-sprite.mascot--chasing {
  animation-play-state: paused !important;
}

.mascot--dragging .mascot-sprite {
  cursor: grabbing;
  animation: none !important;
}

.mascot.mascot--free-drag {
  position: fixed !important;
  left: 0;
  top: 0;
  width: 100vw !important;
  height: 100vh !important;
  overflow: visible !important;
  z-index: 2147483646 !important;
  pointer-events: none !important;
}

.mascot.mascot--free-drag .mascot-sprite {
  pointer-events: auto;
  z-index: 2147483647;
  animation: none !important;
}

/* do NOT animate the video; JS flips it */
.mascot-video {
  display: block;
  width: 280px;
  height: auto;
  will-change: transform;
}

/* Hat overlay — positioned to match Spine/C01/Hat.png rendered on the capy's head.
 * Base canvas: 788x504 → CSS 280px wide (scale 0.3553).
 * Hat content bbox in frame: top=220 left=333 (yellow pixels). Cropped PNG is 77x66px.
 * CSS: top = 220*(280/788) ≈ 78px, left = 333*(280/788) ≈ 118px, width = 77*(280/788) ≈ 27px */
.mascot-hat {
  position: absolute;
  width: 27px;
  top: 78px;
  left: 118px;
  pointer-events: none;
  transform-origin: center center;
  will-change: transform;
}

.mascot--paused .mascot-sprite {
  animation-play-state: paused !important;
}

@keyframes mascotPace {
  from {
    left: 0;
  }
  to {
    left: calc(400px - 280px);
  }
}

.mascot-bubble {
  position: absolute;
  left: 50%;
  top: 0px;
  transform: translateX(-50%);
  display: none;
  padding: 6px 10px;
  border-radius: 12px;
  font-size: 14px;
  line-height: 1;
  background: rgba(255, 255, 255, 0.95);
  border: 1px solid rgba(0, 0, 0, 0.15);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
  white-space: nowrap;
  pointer-events: none;
  z-index: 2;
}

.mascot-bubble::after {
  content: '';
  position: absolute;
  left: 50%;
  bottom: -6px;
  transform: translateX(-50%) rotate(45deg);
  width: 10px;
  height: 10px;
  background: rgba(255, 255, 255, 0.95);
  border-left: 1px solid rgba(0, 0, 0, 0.15);
  border-bottom: 1px solid rgba(0, 0, 0, 0.15);
}

.capy-park-wrap {
  grid-column: 1 / -1;
  position: relative;
  padding-top: 140px;
}

.capy-park-wrap__sign {
  position: absolute;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
  z-index: 20;
  pointer-events: none;
  overflow: visible;
}

.capy-park-wrap__sign img {
  width: 406px;
  display: block;
  filter: drop-shadow(0 6px 18px rgba(0, 0, 0, 0.85));
}

.capy-playground {
  position: relative;
  height: 660px;
  background: linear-gradient(180deg, #1a3a0a 0%, #2e5c12 45%, #3d7a18 100%);
  overflow: hidden;
  border-radius: 8px;
}

@media (orientation: portrait) and (max-width: 767px) {
  .capy-playground {
    height: 800px;
  }
}

.capy-playground__fence::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 64px;
  pointer-events: none;
  z-index: 10;
  background-image: url("/assets/images/playground/fence-h-sm.png");
  background-repeat: repeat-x;
  background-size: auto 100%;
  background-position: left top;
  -webkit-mask-image: linear-gradient(to right, black 0, black calc(50% - 144px), transparent calc(50% - 144px), transparent calc(50% + 144px), black calc(50% + 144px), black 100%);
  mask-image: linear-gradient(to right, black 0, black calc(50% - 144px), transparent calc(50% - 144px), transparent calc(50% + 144px), black calc(50% + 144px), black 100%);
}

.capy-playground__fence::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 64px;
  pointer-events: none;
  z-index: 10;
  background-image: url("/assets/images/playground/fence-h-sm.png");
  background-repeat: repeat-x;
  background-size: auto 100%;
  background-position: left bottom;
}

.capy-playground__fence {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 10;
}

.capy-playground__fence-left {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  width: 64px;
  pointer-events: none;
  z-index: 11;
  background-image: url("/assets/images/playground/fence-v.png");
  background-repeat: repeat-y;
  background-size: 100% auto;
  background-position: left top;
  transform: scaleX(-1);
}

.capy-playground__fence-right {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  width: 64px;
  pointer-events: none;
  z-index: 11;
  background-image: url("/assets/images/playground/fence-v.png");
  background-repeat: repeat-y;
  background-size: 100% auto;
  background-position: left top;
}

.capy-playground__post {
  display: block;
  position: absolute;
  width: 80px;
  height: 80px;
  pointer-events: none;
  z-index: 12;
  background-image: url("/assets/images/playground/fence-post.png");
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}

.capy-playground__post--tl {
  top: -8px;
  left: -8px;
}

.capy-playground__post--tr {
  top: -8px;
  right: -8px;
}

.capy-playground__post--bl {
  bottom: -8px;
  left: -8px;
}

.capy-playground__post--br {
  bottom: -8px;
  right: -8px;
}

.capy-playground__ball {
  background: radial-gradient(circle at 38% 32%, #ff9a9a 0%, #ee2222 45%, #990000 100%);
  box-shadow: 2px 4px 10px rgba(0, 0, 0, 0.5), inset -3px -3px 8px rgba(0, 0, 0, 0.3), inset 3px 3px 8px rgba(255, 200, 200, 0.4);
}

.playground-page {
  padding: 0;
  max-width: none;
  width: 100%;
  box-sizing: border-box;
  grid-column: 1 / -1;
}

.playground-page .capy-park-wrap--standalone .capy-playground {
  height: auto;
  min-height: 500px;
  border-radius: 0;
  border-left: none;
  border-right: none;
  background: none;
}

.capy-chessboard {
  position: absolute;
  top: 64px;
  left: 64px;
  right: 64px;
  bottom: 64px;
  display: grid;
  grid-template-columns: repeat(8, 1fr);
  grid-template-rows: repeat(8, 1fr);
  pointer-events: none;
  z-index: 0;
}

.capy-chessboard__sq--light {
  background: #f0d9b5;
}

.capy-chessboard__sq--dark {
  background: #b58863;
}

.capy-playground__hotkeys {
  position: absolute;
  top: 8px;
  right: 14px;
  z-index: 25;
  display: flex;
  flex-direction: column;
  gap: 3px;
  pointer-events: none;
  user-select: none;
}

.capy-playground__hotkeys__row {
  display: flex;
  align-items: center;
  gap: 6px;
  color: #fff;
  font-size: 11px;
  font-family: sans-serif;
  text-shadow: 0 1px 3px rgba(0, 0, 0, 0.7);
}

.capy-playground__hotkeys__row kbd {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 18px;
  height: 18px;
  padding: 0 4px;
  background: rgba(255, 255, 255, 0.15);
  border: 1px solid rgba(255, 255, 255, 0.4);
  border-radius: 3px;
  font-size: 11px;
  font-weight: bold;
  color: #fff;
  font-family: sans-serif;
}

.capy-bubble {
  position: absolute;
  bottom: 100%;
  left: 50%;
  transform: translateX(-50%);
  pointer-events: none;
  z-index: 20;
  display: flex;
  flex-direction: column;
  align-items: center;
  opacity: 0;
  transition: opacity 0.18s ease;
  white-space: nowrap;
  margin-bottom: 2px;
}

.capy-bubble--visible {
  opacity: 1;
}

.capy-bubble__text {
  background: #fff;
  color: #333;
  border: 2px solid #bbb;
  border-radius: 14px;
  padding: 4px 10px;
  font-size: 12px;
  font-weight: bold;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.35);
  line-height: 1.4;
}

.capy-bubble__trail {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  margin-top: 3px;
}

.capy-bubble__trail span {
  border-radius: 50%;
  background: #fff;
  border: 1.5px solid #bbb;
  display: block;
}

.capy-bubble__trail span:nth-child(1) {
  width: 7px;
  height: 7px;
}

.capy-bubble__trail span:nth-child(2) {
  width: 5px;
  height: 5px;
}

.capy-bubble__trail span:nth-child(3) {
  width: 3px;
  height: 3px;
}

.tour__side .mchat {
  flex: 1 1 7em;
  margin-top: 2vmin;
}

@media (min-width: 800px) {
  .tour__side .mchat {
    min-height: inherit;
  }
}

.tour__meta {
  background: #262421;
  padding: 1.2vmin 2vmin;
}

.tour__meta section {
  margin-bottom: 2vmin;
}

.tour__meta section::before {
  font-size: 3rem;
  margin-right: 4%;
}

.tour__meta section p {
  margin: 0;
}

.tour__meta section time {
  opacity: 1;
}

.tour__meta section .defender::before {
  font-size: 1.6em;
  vertical-align: -0.26em;
  margin: 0 0.15em 0 -0.15em;
}

.tour__meta section.conditions::before {
  opacity: 0.7;
}

.tour__meta section.conditions.accepted,
.tour__meta section.conditions .accepted {
  color: #629924;
}

.tour__meta section.conditions.refused,
.tour__meta section.conditions .refused {
  color: #cc3333;
}

.tour__meta section.conditions .condition:first-child.accepted::after,
.tour__meta section.conditions .condition + .condition.accepted::after {
  content: '\a0\2713';
}

.tour__meta section.conditions .condition:first-child.refused::after,
.tour__meta section.conditions .condition + .condition.refused::after {
  content: '\a0\2718';
}

.tour__meta .description {
  max-height: 20vh;
  overflow-y: auto;
}

.tour__meta .tour__prize {
  padding: 1em 2vmin;
  background: #302e2c;
  margin-bottom: 1em;
  font-size: 0.9em;
}

.chat__members {
  overflow: visible;
  /* fixes invisible spectators on firefox, col2 */
}

@media (max-width: 799px) and (orientation: portrait) {
  .chat__members {
    margin: 0 2vmin;
  }
}

.tour__featured .mini-game__player i {
  flex: 0 0 auto;
}

.tour__featured .mini-game__player i::before {
  color: #d64f00;
  margin-right: 5px;
}

.tour__featured .mini-game__user {
  display: flex;
}

.tour__featured .mini-game__user strong {
  text-align: center;
  margin-right: 1ch;
}

.tour__featured .mini-game__user .user-link {
  flex: 1 1 100%;
  margin-right: 1em;
}

.tour__boards {
  margin: 2vmin 0;
  grid-gap: 1ch;
  --np-min-width: 200px;
}

.tour__board .mini-game__player {
  padding: 0.2em;
}

.tour__board .mini-game__user {
  display: flex;
}

.tour__board .mini-game__user strong {
  text-align: center;
  margin-right: 1ch;
}

.tour__main__header {
  position: relative;
  z-index: 1;
  min-height: 7em;
  padding: 0 3vmin;
}

.tour__main__header h1 {
  font-size: 2.2rem;
  flex: 9 1 auto;
  margin: 0;
  overflow: hidden;
}

.tour__main__header h1 a {
  /* GM wikipedia */
  color: #8cacca;
}

.tour__main__header h1 a:hover {
  color: #3692e7;
}

.tour__main__header img {
  flex: 0 0 60px;
  display: block;
  width: 60px;
  height: 60px;
  padding: 6px;
}

.tour__main__header .img {
  margin-right: 1rem;
}

.tour__main__header i::before {
  font-size: 2.2rem;
}

.tour-shed .tour__main__header h1 {
  letter-spacing: 2px;
}

.tour-shed-weekly .tour__main__header i::before {
  font-size: 35px;
}

.tour-shed-monthly .tour__main__header i::before,
.tour-shed-weekend .tour__main__header i::before {
  font-size: 40px;
}

.tour-shed-yearly .tour__main__header i::before {
  font-size: 45px;
}

.tour-shed-weekend .tour__main__header h1,
.tour-shed-yearly .tour__main__header h1 {
  letter-spacing: 3px;
}

.tour__main__header .clock {
  flex: 0 0 auto;
  font-weight: bold;
  color: #999999;
}

.tour__main__header .clock-created {
  text-align: right;
}

.tour-sched .tour__main__header h1,
.tour-sched .tour__main__header .img {
  color: #bf811d;
}

.tour__main-finished .tour__main__header h1 {
  text-align: center;
}

.tour-sched-marathon .tour__main-finished .tour__main__header h1 {
  padding-left: 0;
}

.tour__main__header .time {
  font-size: 1.5em;
  margin-left: 0.2em;
}

.tour__main__header .shy {
  line-height: 20px;
  font-size: 0.9em;
  font-weight: bold;
  text-transform: uppercase;
  opacity: 0.6;
  white-space: nowrap;
}

.tour-sched-marathon .tour__main__header h1 {
  color: #4166a0 !important;
  padding-left: 90px;
  letter-spacing: 2px;
}

.tour-sched-marathon .tour__main__header .fire-trophy {
  position: absolute;
  top: 0;
  left: 10px;
  width: 70px;
  height: 80px;
  opacity: 0.7;
  transition: 1s;
  font-family: 'lichess';
  filter: hue-rotate(190deg);
}

.tour-sched-marathon .tour__main__header .fire-trophy:hover {
  opacity: 1;
}

.tour-sched-shield .tour__main__header h1 {
  padding-left: 90px;
  letter-spacing: 2px;
}

.tour-sched-shield .tour__main__header h1 .shield-trophy {
  position: absolute;
  top: -8px;
  left: 12px;
  display: block;
  width: 67px;
  height: 80px;
  background: url(../images/trophy/shield-gold.png) no-repeat;
  background-size: contain;
  font-family: 'lichess';
  font-size: 40px;
  line-height: 80px;
  text-align: center;
  color: #333 !important;
  text-shadow: 0 0 6px #fff;
}

.tour__notice {
  color: #fff;
  background: #629924;
  text-align: center;
  padding: 0.5em 0;
  opacity: 0.8;
}

.tour__notice.closed {
  background: #3692e7;
}

.tour__ur-playing {
  text-align: center;
  font-size: 1.5em;
  position: relative;
}

.tour__ur-playing::before, .tour__ur-playing::after {
  content: '';
  font-size: 2rem;
  position: absolute;
  top: 30px;
}

.tour__ur-playing::before {
  left: 30px;
}

.tour__ur-playing::after {
  right: 30px;
}

.tour__controls {
  padding: 0 0px;
  position: relative;
}

.tour__controls .fbt {
  padding: 0.6em 0.8em;
  text-transform: uppercase;
  line-height: 1.3;
}

@media (min-width: 500px) {
  .tour__controls .fbt {
    padding: 0.6em 1em;
  }
}

@keyframes tour-delay {
  0% {
    width: 0%;
  }
  100% {
    width: 100%;
  }
}

.tour__controls .delay {
  background: rgba(117, 153, 0, 0.5);
  width: 0%;
}

.tour__controls .delay button {
  opacity: 0.7;
  color: #999999;
  mix-blend-mode: luminosity;
}

.tour__controls .highlight {
  position: absolute;
  right: 5px;
  top: -3px;
  padding: 8px 20px;
  border-radius: 8px;
  color: #fff;
  text-decoration: none;
  background: #82bf56;
  border-bottom: 5px solid #759900;
  text-shadow: 0 -1px #759900;
  transition: all 0.1s;
  transform: translate(0px, 0px);
}

.tour__controls .highlight:hover {
  filter: brightness(1.06);
}

.tour__controls .highlight:active {
  transform: translate(0px, 5px);
  border-bottom-width: 1px;
  text-shadow: 0 0 #759900;
  filter: brightness(1);
}

.tour__controls .spinner {
  margin: 0;
  width: 1.5em;
  height: 1.5em;
  margin-right: 0.7em;
}

.tour__controls .pager {
  user-select: none;
}

.tour__controls .pager .page {
  margin: 0 3px;
  white-space: nowrap;
}

.tour__controls .pager input {
  border: none;
  background: rgba(98, 153, 36, 0.2);
}

.tour__controls .pager .search,
.tour__controls .pager input {
  height: 100%;
}

.tour__standing {
  border: none;
}

.tour__standing .player {
  padding-left: 0px;
  padding-right: 0px;
}

.tour__standing .player .name {
  display: inline-block;
  padding-right: 5px;
  max-width: 140px;
}

.tour__standing .user-link.long {
  letter-spacing: -0.7px;
}

.tour__standing .user-link .rating {
  font-style: italic;
  font-size: 0.8em;
}

.tour__standing tr.long .user-link .rating {
  display: block;
  padding-left: 0px;
}

.tour__standing tr {
  transition: all 150ms;
  user-select: none;
}

.tour__standing .loading tbody {
  opacity: 0.6;
  transition: opacity 0.3s;
}

.tour__standing:not(.created):not(.loading) tbody tr:hover {
  background: #2b455d;
  cursor: pointer;
}

.tour__standing tr.me td:first-child {
  background: linear-gradient(to right, #507623 0px, #507623 5px, rgba(0, 0, 0, 0) 5px, rgba(0, 0, 0, 0) 100%);
}

.tour__standing tr.active td:last-child {
  background: linear-gradient(to left, #3171ac 0px, #3171ac 5px, rgba(0, 0, 0, 0) 5px, rgba(0, 0, 0, 0) 100%);
}

.tour__standing td.rank {
  padding: 1em 0.5em 1em 10px;
  width: 1px;
  /* helps keeping it as small as possible */
}

.tour__standing td.rank i {
  opacity: 0.4;
  font-size: 0.8em;
}

.tour__standing .sheet {
  text-align: right;
  padding-right: 0;
  padding-left: 0;
  letter-spacing: 0.1em;
}

.tour__standing .sheet > * {
  display: inline-block;
}

.tour__standing .sheet score {
  opacity: 0.7;
}

.tour__standing tr.long .sheet {
  font-size: 0.9rem;
  letter-spacing: 0.06em;
}

.tour__standing tr.xlong .sheet {
  font-size: 0.85rem;
  letter-spacing: 0.04em;
}

.tour__standing double {
  color: #bf811d;
  /* font-weight: bold; */
}

.tour__standing streak {
  color: #629924;
  /* font-weight: bold; */
}

.tour__standing .total {
  text-align: right;
  font-weight: bold;
  padding-right: 2vmin;
}

.tour__stats {
  background: #262421;
  padding: 1.7em 0;
  align-self: flex-start;
}

.tour__stats h2 {
  font-size: 1.5em;
  margin-bottom: 1em;
  text-align: center;
}

.tour__stats table {
  margin: auto;
}

.tour__stats td {
  font-weight: bold;
  padding-left: 1em;
  text-align: right;
  line-height: 2em;
}

.tour__stats__links {
  margin: 2em auto 0 auto;
}

.tour__stats__links a {
  display: block;
  margin: 0.5em 0;
}

.tour__duels {
  margin: 2vmin 0 0 0;
}

@media (min-width: 800px) {
  .tour__duels {
    margin: 0 0 0 2vmin;
  }
}

@media (min-width: 1260px) {
  .tour__duels {
    margin: 2vmin 0 0 0;
  }
}

.tour__duels h2 {
  font-size: 1.5em;
  margin-bottom: 0.2em;
  text-transform: uppercase;
  letter-spacing: 2px;
}

.tour__duels a {
  color: #bababa;
  padding: 0.5em 0.7em;
  white-space: nowrap;
  line-height: 1.9em;
  border-top: 1px solid #272625;
  transition: all 150ms;
}

.tour__duels a:hover {
  background: #1d2e3d;
}

.tour__duels strong {
  font-size: 1.2em;
  color: #999999;
  display: block;
  max-width: 60%;
}

.tour__duels .rank {
  padding: 0.1em 0.5em;
  background: #302e2c;
}

.tour__duels .b .utitle,
.tour__duels .b .rank {
  margin-right: 0.3em;
}

.tour__duels .a .utitle,
.tour__duels .a .rank {
  margin-left: 0.3em;
}

.tour__actor-info {
  background: #262421;
  position: relative;
  align-self: flex-start;
}

.tour__actor-info .spinner {
  margin: 5em auto;
}

.tour__actor-info .close {
  position: absolute;
  top: 4px;
  right: 5px;
  opacity: 0.6;
  transition: all 150ms;
  color: #cc3333;
}

.tour__actor-info .close:hover {
  opacity: 1;
}

.tour__actor-info .stats {
  justify-content: center;
}

.tour__actor-info .stats h2 {
  font-size: 1.4em;
  padding: 0.6rem 1rem;
  border-bottom: 1px solid #404040;
}

.tour__actor-info .stats table {
  margin: 1em auto;
}

.tour__actor-info .stats td {
  font-weight: bold;
  padding-left: 10px;
  text-align: right;
  line-height: 1.8em;
}

.tour__actor-info .sublist {
  width: 100%;
}

.tour__actor-info .sublist tr {
  cursor: pointer;
  transition: background-color 150ms;
}

.tour__actor-info .sublist tr:nth-child(odd) {
  background: #302e2c;
}

.tour__actor-info .sublist tr:hover {
  background: #282f35;
}

.tour__actor-info .sublist th,
.tour__actor-info .sublist td {
  padding: 0.3em;
}

.tour__actor-info .sublist th {
  padding-left: 7px;
}

.tour__player-info .pairings {
  width: 100%;
}

.tour__player-info .pairings tr {
  cursor: pointer;
  transition: background-color 150ms;
}

.tour__player-info .pairings tr:nth-child(odd) {
  background: #302e2c;
}

.tour__player-info .pairings tr:hover {
  background: #282f35;
}

.tour__player-info .pairings th,
.tour__player-info .pairings td {
  padding: 0.3em;
}

.tour__player-info .pairings th {
  border-left: 3px solid transparent;
  transition: all 150ms;
}

.tour__player-info .pairings tr:hover th {
  border-color: #bababa;
}

.tour__player-info .pairings tr.win:hover th {
  border-color: #629924;
}

.tour__player-info .pairings tr.loss:hover th {
  border-color: #cc3333;
}

.tour__player-info .pairings td:nth-child(2) {
  max-width: 200px;
}

.tour__player-info .pairings td:last-child {
  font-weight: bold;
  opacity: 0.8;
}

.tour__player-info .pairings tr.win td:last-child {
  color: #629924;
  opacity: 1;
}

.tour__player-info .pairings tr.loss td:last-child {
  color: #cc3333;
  opacity: 1;
}

.tour__player-info .color-icon {
  opacity: 0.6;
}

.tour__team-info .players {
  width: 100%;
}

.tour__team-info .players tr {
  cursor: pointer;
  transition: background-color 150ms;
}

.tour__team-info .players tr:nth-child(odd) {
  background: #302e2c;
}

.tour__team-info .players tr:hover {
  background: #282f35;
}

.tour__team-info .players th,
.tour__team-info .players td {
  padding: 0.3em 1em;
}

.tour__team-info .players td:last-child {
  text-align: right;
}

.tour__team-info .players .rating {
  font-style: italic;
  font-size: 0.8em;
}

.tour__team-info .players .leader::before {
  color: #bf811d;
  margin-right: 0.15em;
}

.tour .pull-quote {
  margin-top: 30px;
  width: 300px;
}

.tour .box.created {
  padding-bottom: 2em;
  /* as quote margin */
}

.tour__faq {
  padding: 4em var(--box-padding);
  display: none;
}

@media (min-width: 800px) {
  .tour__faq {
    display: block;
  }
}

.tour__faq h2 {
  margin: 1.5em 0 0.5em 0;
}

/* temp hack */
.tour-id-teSmrRnx .podium .trophy {
  transform: rotate(180deg);
}

@keyframes tour-goat-run-ltr {
  from {
    transform: translateX(-200px) translateY(-50%);
  }
  to {
    transform: translateX(calc(100vw + 200px)) translateY(-50%);
  }
}

@keyframes tour-goat-run-rtl {
  from {
    transform: translateX(calc(100vw + 200px)) translateY(-50%);
  }
  to {
    transform: translateX(-200px) translateY(-50%);
  }
}

@keyframes tour-goat-fly-ltr {
  0% {
    transform: translateX(-200px) translateY(-50%) rotate(0deg);
  }
  45% {
    transform: translateX(45vw) translateY(-50%) rotate(-4deg);
    animation-timing-function: cubic-bezier(0.4, 0, 0.9, 0.45);
  }
  100% {
    transform: translateX(calc(100vw + 600px)) translateY(calc(-50% - 38vh)) rotate(-12deg);
  }
}

@keyframes tour-goat-fly-rtl {
  0% {
    transform: translateX(calc(100vw + 260px)) translateY(calc(-50% - 34vh)) rotate(10deg);
    animation-timing-function: cubic-bezier(0.3, 0.5, 0.5, 1);
  }
  40% {
    transform: translateX(58vw) translateY(-50%) rotate(0deg);
    animation-timing-function: linear;
  }
  100% {
    transform: translateX(-420px) translateY(-50%) rotate(0deg);
  }
}

@keyframes tour-goat-wing-flap-near {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(-16deg);
  }
}

@keyframes tour-goat-wing-flap-far {
  from {
    transform: scaleX(-1) rotate(0deg);
  }
  to {
    transform: scaleX(-1) rotate(-16deg);
  }
}

.tour__goat-run {
  position: fixed;
  top: 50%;
  left: 0;
  z-index: 9999;
  pointer-events: none;
}

.tour__goat-run--ltr {
  animation: tour-goat-run-ltr 4.5s linear forwards;
}

.tour__goat-run--rtl {
  animation: tour-goat-run-rtl 4.5s linear forwards;
}

.tour__goat-run--winged.tour__goat-run--ltr {
  animation-name: tour-goat-fly-ltr;
}

.tour__goat-run--winged.tour__goat-run--rtl {
  animation-name: tour-goat-fly-rtl;
}

.tour__goat-run__img {
  height: 143px;
  display: block;
  position: relative;
  z-index: 1;
}

.tour__goat-run__img--flipped {
  transform: scaleX(-1);
}

.tour__goat-run__wings {
  position: absolute;
  inset: 0;
}

.tour__goat-run__wing {
  position: absolute;
  bottom: 50%;
  right: 50%;
  font-family: 'lichess';
  font-style: normal;
  font-weight: normal;
  font-size: 86px;
  line-height: 1;
  color: #e8bd3c;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.45);
  transform-origin: 94% 62%;
  animation: tour-goat-wing-flap-near 0.22s ease-in-out infinite alternate;
}

.tour__goat-run__wing--far {
  animation-name: tour-goat-wing-flap-far;
  opacity: 0.85;
}

.tour__goat-run__icon {
  display: none;
}

.goat-icon {
  height: 18px;
  vertical-align: middle;
  margin-left: 4px;
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG91cm5hbWVudC9jc3MvYnVpbGQvdG91cm5hbWVudC5zaG93LmRhcmsuY3NzIiwic291cmNlcyI6WyJ0b3VybmFtZW50L2Nzcy9idWlsZC90b3VybmFtZW50LnNob3cuZGFyay5zY3NzIiwiY29tbW9uL2Nzcy90aGVtZS9fZGFyay5zY3NzIiwiY29tbW9uL2Nzcy90aGVtZS9fZGVmYXVsdC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fZnVuY3Rpb25zLnNjc3MiLCJ0b3VybmFtZW50L2Nzcy9idWlsZC9fdG91cm5hbWVudC5zaG93LnNjc3MiLCJjb21tb24vY3NzL19wbHVnaW4uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvX2JyZWFrcG9pbnQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fc2V0dGluZ3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fY29udGV4dC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19oZWxwZXJzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX3BhcnNlcnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL19xdWVyeS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3NpbmdsZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvc2luZ2xlL19kZWZhdWx0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fZG91YmxlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQtcGFpci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvZG91YmxlL19kb3VibGUtc3RyaW5nLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL190cmlwbGUuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3RyaXBsZS9fZGVmYXVsdC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3Jlc29sdXRpb24vX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fbm8tcXVlcnkuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fcmVzcG9uZC10by5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19sZWdhY3ktc2V0dGluZ3Muc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX2FsbC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fei1pbmRleC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fbWVkaWEtcXVlcmllcy5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fdmFyaWFibGVzLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L191bmlib2FyZC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fbWl4aW5zLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19leHRlbmRzLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19mbGV4LnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19ib3guc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX2ZsdWlkLXNpemUuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19mYnQuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19iYXItZ2xpZGVyLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fc2xpc3Quc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19xdW90ZS5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX2ZpcmUtdHJvcGh5LnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fY29sb3ItaWNvbi5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX2NvbnRleHQtc3RyZWFtZXIuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19wb2RpdW0uc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19ub3ctcGxheWluZy5zY3NzIiwiY2hhdC9jc3MvX2NoYXQuc2NzcyIsImNvbW1vbi9jc3MvYmFzZS9fc2Nyb2xsYmFyLnNjc3MiLCJjaGF0L2Nzcy9fdGFiLnNjc3MiLCJjaGF0L2Nzcy9fbWVtYmVycy5zY3NzIiwiY2hhdC9jc3MvX2Rpc2N1c3Npb24uc2NzcyIsImNoYXQvY3NzL19wYWxhbnRpci5zY3NzIiwidG91cm5hbWVudC9jc3MvX3Nob3cuc2NzcyIsInRvdXJuYW1lbnQvY3NzL19sYXlvdXQuc2NzcyIsInRvdXJuYW1lbnQvY3NzL19zaWRlLnNjc3MiLCJ0b3VybmFtZW50L2Nzcy9fZmVhdHVyZWQuc2NzcyIsInRvdXJuYW1lbnQvY3NzL19ib2FyZHMuc2NzcyIsInRvdXJuYW1lbnQvY3NzL19hcHAtaGVhZGVyLnNjc3MiLCJ0b3VybmFtZW50L2Nzcy9fYXBwLW5vdGljZS5zY3NzIiwidG91cm5hbWVudC9jc3MvX2FwcC1jb250cm9sLnNjc3MiLCJ0b3VybmFtZW50L2Nzcy9fYXBwLXN0YW5kaW5nLnNjc3MiLCJ0b3VybmFtZW50L2Nzcy9fc3RhdHMuc2NzcyIsInRvdXJuYW1lbnQvY3NzL19kdWVsLnNjc3MiLCJ0b3VybmFtZW50L2Nzcy9fYWN0b3ItaW5mby5zY3NzIiwidG91cm5hbWVudC9jc3MvX3BsYXllci1pbmZvLnNjc3MiLCJ0b3VybmFtZW50L2Nzcy9fdGVhbS1pbmZvLnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy90aGVtZS9kYXJrJztcbkBpbXBvcnQgJ3RvdXJuYW1lbnQuc2hvdyc7XG4iLCJAaW1wb3J0ICdkZWZhdWx0JztcblxuJHRoZW1lOiAnZGFyayc7XG4kY29sb3Itc2NoZW1lOiAnZGFyayc7XG4kdGhlbWUtbGlnaHQ6IGZhbHNlO1xuJHRoZW1lLWRhcms6IHRydWU7XG5cbkBmdW5jdGlvbiBjLWRpbW1lcigkY29sb3IsICR3ZWlnaHQ6IDIwJSkge1xuICBAcmV0dXJuIG1peCgjMDAwLCAkY29sb3IsICR3ZWlnaHQpO1xufVxuXG5AZnVuY3Rpb24gYy1jbGVhcmVyKCRjb2xvciwgJHdlaWdodDogMjAlKSB7XG4gIEByZXR1cm4gbWl4KCNmZmYsICRjb2xvciwgJHdlaWdodCk7XG59XG5cbiRjLWJnLXBhZ2U6IGhzbCgkYy1zaXRlLWh1ZSwgMTAlLCA4JSk7XG4kYy1iZy1oaWdoOiBoc2woJGMtc2l0ZS1odWUsIDclLCAxNCUpO1xuJGMtYmctbG93OiBoc2woJGMtc2l0ZS1odWUsIDclLCAyMiUpO1xuXG4vKiBldmVuIHJvd3MgaW4gbGlzdCBvciB0YWJsZXMsIHN1YnRsZSBzaGFkZSBvZiAkYy1iZy1oaWdoICovXG4kYy1iZy16ZWJyYTogaHNsKCRjLXNpdGUtaHVlLCA1JSwgMTglKTtcbiRjLWJnLXplYnJhMjogaHNsKCRjLXNpdGUtaHVlLCA1JSwgMjMlKTtcblxuJGMtYm9keS1ncmFkaWVudDogaHNsKCRjLXNpdGUtaHVlLCAxMiUsIDE2JSk7XG5cbiRjLWZvbnQ6IGhzbCgwLCAwJSwgNzMlKTtcbiRjLWZvbnQtZGltOiBjLWxpZ2h0KCRjLWZvbnQsIDYwJSk7XG4kYy1mb250LWRpbW1lcjogYy1saWdodCgkYy1mb250LCA0MiUpO1xuJGMtZm9udC1jbGVhcjogYy1saWdodCgkYy1mb250LCA4MCUpO1xuJGMtZm9udC1jbGVhcmVyOiBjLWxpZ2h0KCRjLWZvbnQsIDg5JSk7XG4kYy1zaGFkZTogYy1saWdodCgkYy1mb250LCAzMCUpO1xuJGMtZm9udC1wYWdlOiAkYy1mb250LWRpbTtcblxuLyogUHJpbWFyeTogYmx1ZSAqL1xuJGMtcHJpbWFyeTogaHNsKDIwOSwgNzklLCA1NiUpO1xuJGMtcHJpbWFyeS1kaW06IGMtZGltbWVyKCRjLXByaW1hcnksIDE1JSk7XG4kYy1wcmltYXJ5LWNsZWFyOiBjLWNsZWFyZXIoJGMtcHJpbWFyeSk7XG5cbi8qIFNlY29uZGFyeTogZ3JlZW4gKi9cbiRjLXNlY29uZGFyeTogaHNsKDg4LCA2MiUsIDM3JSk7XG4kYy1zZWNvbmRhcnktZGltOiBjLWRpbW1lcigkYy1zZWNvbmRhcnkpO1xuJGMtc2Vjb25kYXJ5LWRpbW1lcjogYy1kaW1tZXIoJGMtc2Vjb25kYXJ5LCA0MCUpO1xuXG4vKiBCcmFnOiBnb2xkICovXG4kYy1icmFnOiBoc2woMzcsIDc0JSwgNDMlKTtcblxuLyogTnVtYmVyIGRyYXduIG9uIHRoZSBzdHJlYWsgd2luZ3M6IHNpbHZlciB3aXRoIGEgaGlnaGxpZ2h0IGFib3ZlIGFuZCBhIHNoYWRlXG4gICBiZWxvdywgc28gaXQgcmVhZHMgYXMgYnJ1c2hlZCBtZXRhbCByYXRoZXIgdGhhbiBmbGF0IGdyZXkuIEdyYWRpZW50IHRleHQgaXMgbm90XG4gICBhbiBvcHRpb24gLSBiYWNrZ3JvdW5kLWNsaXA6dGV4dCBwYWludHMgYWxtb3N0IG5vdGhpbmcgaW5zaWRlIHRoZSBmbGV4LWNvbnRhaW5lclxuICAgcHNldWRvIHRoYXQgZHJhd3MgdGhpcyBudW1iZXIuIGNvaGVuY2hlc3MgYW5kIHRyYW5zcCBAaW1wb3J0IHRoaXMgZmlsZS4gKi9cbiRjLXN0cmVhazogI2Q1ZDlkZjtcbiRjLXN0cmVhay1zaGFkb3c6IDAgLTAuNXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkyKSwgMCAwLjdweCAwLjM1cHggcmdiYSgwLCAwLCAwLCAwLjgpO1xuLyogVGhlIHNoaW5lIHRyZWF0bWVudCBjbGlwcyB0aGUgZ3JhZGllbnQgdG8gdGhlIGdseXBocywgYW5kIGEgdGV4dC1zaGFkb3cgd291bGRcbiAgIHBhaW50IG92ZXIgdGhhdCBjbGlwcGVkIGJhY2tncm91bmQgLSBzbyB0aGUgc2FtZSBiZXZlbCBpcyBleHByZXNzZWQgYXMgYSBmaWx0ZXIuICovXG4kYy1zdHJlYWstZmlsdGVyOiBkcm9wLXNoYWRvdygwIC0wLjQ1cHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSkpIGRyb3Atc2hhZG93KDAgMC41cHggMC40cHggcmdiYSgwLCAwLCAwLCAwLjc1KSk7XG5cbi8qIEZhbmN5OiBwaW5rICovXG4kYy1mYW5jeTogaHNsKDI5NCwgNjIlLCA0OCUpO1xuXG4vKiBHb29kOiBncmVlbiAqL1xuJGMtZ29vZDogJGMtc2Vjb25kYXJ5O1xuJGMtZ29vZC1vdmVyOiAkYy1zZWNvbmRhcnktb3ZlcjtcblxuLyogV2Fybjogb3JhbmdlICovXG4kYy13YXJuOiAkYy1icmFnO1xuJGMtd2Fybi1vdmVyOiAkYy1icmFnLW92ZXI7XG5cbi8qIEJhZDogcmVkICovXG4kYy1iYWQ6ICRjLWVycm9yO1xuJGMtYmFkLW92ZXI6ICRjLWVycm9yLW92ZXI7XG5cbiRjLWxpbms6ICRjLXByaW1hcnk7XG4kYy1saW5rLWRpbTogJGMtcHJpbWFyeS1kaW07XG4kYy1saW5rLWNsZWFyOiAkYy1wcmltYXJ5LWNsZWFyO1xuJGMtbGluay1ob3ZlcjogYy1jbGVhcmVyKHNhdHVyYXRlKCRjLXByaW1hcnksIDEwMCUpLCAyNSUpO1xuXG4kYy1iZy1ib3g6ICRjLWJnLWhpZ2g7XG4kYy1iZy1ib3gtb3BhcXVlOiAkYy1iZy1ib3g7XG4kYy1iZy1pbnB1dDogYy1saWdodCgkYy1iZy1wYWdlLCAxMyUpO1xuXG4kYy1iZy1wb3B1cDogJGMtYmctbG93O1xuJGMtcG9wdXA6ICRjLWZvbnQtY2xlYXI7XG5cbiRjLWJnLWhlYWRlci1kcm9wZG93bjogJGMtYmctcG9wdXA7XG4kYy1oZWFkZXItZHJvcGRvd246ICRjLXBvcHVwO1xuXG4kYy1ib3Q6ICRjLWZhbmN5O1xuXG4kYy1wYWdlLWlucHV0OiAkYy1iZy1ib3g7XG5cbiRjLWJvcmRlcjogaHNsKDAsIDAlLCAyNSUpO1xuJGMtYm9yZGVyLXBhZ2U6IGhzbCgwLCAwJSwgMjIlKTtcbiRib3JkZXI6ICRib3JkZXItd2lkdGggJGJvcmRlci1zdHlsZSAkYy1ib3JkZXI7XG5cbiRjLWZvbnQtc2hhZG93OiBibGFjaztcbiR0ZXh0LXNoYWRvdzogbm9uZTtcblxuQG1peGluIG1ldGFsLWJnIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgaHNsKCRjLXNpdGUtaHVlLCA3JSwgMjIpLCBoc2woJGMtc2l0ZS1odWUsIDUlLCAxOSkgMTAwJSk7XG59XG5cbkBtaXhpbiBtZXRhbCB7XG4gIEBpbmNsdWRlIG1ldGFsLWJnO1xufVxuXG5AbWl4aW4gbWV0YWwtaG92ZXIge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBoc2woJGMtc2l0ZS1odWUsIDclLCAyNSksIGhzbCgkYy1zaXRlLWh1ZSwgNSUsIDIyKSAxMDAlKTtcbiAgY29sb3I6ICRjLWZvbnQtY2xlYXI7XG59XG5cbkBtaXhpbiBwYWdlLW1ldGFsIHtcbiAgQGluY2x1ZGUgbWV0YWw7XG59XG5cbkBtaXhpbiBwYWdlLW1ldGFsLWhvdmVyIHtcbiAgQGluY2x1ZGUgbWV0YWwtaG92ZXI7XG59XG5cbkBtaXhpbiB0aGVtZS1zdHlsZSB7XG59XG4iLCJAaW1wb3J0ICcuLi9hYnN0cmFjdC9mdW5jdGlvbnMnO1xuXG4vKiBDb2xvcnMgKi9cblxuQGZ1bmN0aW9uIGMtZGltbWVyKCRjb2xvciwgJHdlaWdodDogMTclKSB7XG4gIEByZXR1cm4gbWl4KCNmZmYsICRjb2xvciwgJHdlaWdodCk7XG59XG5cbkBmdW5jdGlvbiBjLWNsZWFyZXIoJGNvbG9yLCAkd2VpZ2h0OiAxNyUpIHtcbiAgQHJldHVybiBtaXgoIzAwMCwgJGNvbG9yLCAkd2VpZ2h0KTtcbn1cblxuJGMtc2l0ZS1odWU6IDM3O1xuXG4kYy1iZy1wYWdlOiBoc2woJGMtc2l0ZS1odWUsIDEwJSwgOTIlKTtcblxuLy8gaHNsKDIxMCwgMTclLCA5NSUpXG4kYy1iZy1oaWdoOiBoc2woMCwgMCUsIDEwMCUpO1xuJGMtYmctbG93OiBoc2woMCwgMCUsIDg5JSk7XG5cbi8qIGV2ZW4gcm93cyBpbiBsaXN0IG9yIHRhYmxlcywgc3VidGxlIHNoYWRlIG9mICRjLWJnLWhpZ2ggKi9cbiRjLWJnLXplYnJhOiBoc2woJGMtc2l0ZS1odWUsIDEyJSwgOTYuNSUpO1xuJGMtYmctemVicmEyOiBoc2woJGMtc2l0ZS1odWUsIDEyJSwgOTIlKTtcblxuJGMtYm9keS1ncmFkaWVudDogaHNsKCRjLXNpdGUtaHVlLCAxMiUsIDg0JSk7XG5cbiRjLWZvbnQ6IGhzbCgwLCAwJSwgMzAlKTtcbiRjLWZvbnQtZGltOiBjLWxpZ2h0KCRjLWZvbnQsIDQ3JSk7XG4kYy1mb250LWRpbW1lcjogYy1saWdodCgkYy1mb250LCA3MCUpO1xuJGMtZm9udC1jbGVhcjogYy1saWdodCgkYy1mb250LCAxMiUpO1xuJGMtZm9udC1jbGVhcmVyOiBjLWxpZ2h0KCRjLWZvbnQsIDAlKTtcbiRjLXNoYWRlOiBjLWRpbW1lcigkYy1mb250LCA4MCUpO1xuJGMtZm9udC1wYWdlOiBjLWxpZ2h0KCRjLWZvbnQsIDM3JSk7XG5cbi8qIFByaW1hcnk6IGJsdWUgKi9cbiRjLXByaW1hcnk6IGhzbCgyMDksIDc3JSwgNDYlKTtcbiRjLXByaW1hcnktZGltOiBjLWRpbW1lcigkYy1wcmltYXJ5KTtcbiRjLXByaW1hcnktY2xlYXI6IGMtY2xlYXJlcigkYy1wcmltYXJ5KTtcbiRjLXByaW1hcnktb3ZlcjogI2ZmZjtcblxuLyogdGV4dCBvdmVyIHByaW1hcnkgYmFja2dyb3VuZCAqL1xuXG4vKiBTZWNvbmRhcnk6IGdyZWVuICovXG4kYy1zZWNvbmRhcnk6IGhzbCg4OCwgNjIlLCAzNyUpO1xuJGMtc2Vjb25kYXJ5LWRpbTogYy1kaW1tZXIoJGMtc2Vjb25kYXJ5KTtcbiRjLXNlY29uZGFyeS1kaW1tZXI6IGMtZGltbWVyKCRjLXNlY29uZGFyeSwgNDAlKTtcbiRjLXNlY29uZGFyeS1vdmVyOiAjZmZmO1xuXG4vKiB0ZXh0IG92ZXIgc2Vjb25kYXJ5IGJhY2tncm91bmQgKi9cblxuLyogQWNjZW50OiBvcmFuZ2UgKi9cbiRjLWFjY2VudDogaHNsKDIyLCAxMDAlLCA0MiUpO1xuJGMtYWNjZW50LWRpbTogYy1kaW1tZXIoJGMtYWNjZW50KTtcbiRjLWFjY2VudC1jbGVhcjogYy1jbGVhcmVyKCRjLWFjY2VudCk7XG4kYy1hY2NlbnQtb3ZlcjogI2ZmZjtcblxuLyogdGV4dCBvdmVyIGFjY2VudCBiYWNrZ3JvdW5kICovXG5cbi8qIEJyYWc6IGdvbGQgKi9cbiRjLWJyYWc6IGhzbCgzNywgNzQlLCA0OCUpO1xuJGMtYnJhZy1vdmVyOiAjZmZmO1xuXG4vKiBOdW1iZXIgZHJhd24gb24gdGhlIHN0cmVhayB3aW5ncy4gRGFyayBpbmsgcmVhZHMgYWdhaW5zdCB0aGUgZ29sZDsgZGFyayB0aGVtZXNcbiAgIChkYXJrLCBjb2hlbmNoZXNzLCB0cmFuc3ApIG92ZXJyaWRlIHRoaXMgcGFpciB3aXRoIG1ldGFsbGljIHNpbHZlci4gKi9cbiRjLXN0cmVhazogIzAwMDtcbiRjLXN0cmVhay1zaGFkb3c6IG5vbmU7XG4vKiBTYW1lIGJldmVsIGFnYWluLCBmb3IgYnJvd3NlcnMgdGhhdCB0YWtlIHRoZSBncmFkaWVudC1jbGlwIHBhdGguICovXG4kYy1zdHJlYWstZmlsdGVyOiBub25lO1xuXG4vKiB0ZXh0IG92ZXIgYnJhZyBiYWNrZ3JvdW5kICovXG5cbi8qIEVycm9yOiByZWQgKi9cbiRjLXJlZDogaHNsKDAsIDYwJSwgNTAlKTtcbiRjLWVycm9yOiAkYy1yZWQ7XG4kYy1lcnJvci1vdmVyOiAjZmZmO1xuXG4vKiB0ZXh0IG92ZXIgYnJhZyBiYWNrZ3JvdW5kICovXG5cbi8qIEdvb2Q6IGdyZWVuICovXG4kYy1nb29kOiAkYy1zZWNvbmRhcnk7XG4kYy1nb29kLW92ZXI6ICRjLXNlY29uZGFyeS1vdmVyO1xuXG4vKiBXYXJuOiBvcmFuZ2UgKi9cbiRjLXdhcm46ICRjLWJyYWc7XG4kYy13YXJuLW92ZXI6ICRjLWJyYWctb3ZlcjtcblxuLyogQmFkOiByZWQgKi9cbiRjLWJhZDogJGMtZXJyb3I7XG4kYy1iYWQtb3ZlcjogJGMtZXJyb3Itb3ZlcjtcblxuLyogSGVhcnQ6IHJlZCAqL1xuJGMtaGVhcnQ6ICRjLWVycm9yO1xuJGMtaGVhcnQtb3ZlcjogJGMtZXJyb3Itb3ZlcjtcblxuLyogRmFuY3k6IHBpbmsgKi9cbiRjLWZhbmN5OiBoc2woMjk0LCA2MSUsIDYyJSk7XG4kYy1mYW5jeS1vdmVyOiB3aGl0ZTtcblxuLyogdGV4dCBvdmVyIGJyYWcgYmFja2dyb3VuZCAqL1xuXG4kYy1saW5rOiAkYy1wcmltYXJ5O1xuJGMtbGluay1kaW06ICRjLXByaW1hcnktZGltO1xuJGMtbGluay1jbGVhcjogJGMtcHJpbWFyeS1jbGVhcjtcbiRjLWxpbmstaG92ZXI6IGMtY2xlYXJlcihzYXR1cmF0ZSgkYy1wcmltYXJ5LCAxMDAlKSwgMzUlKTtcbiRjLWxpbmstb3ZlcjogJGMtcHJpbWFyeS1vdmVyO1xuXG4kYy1iZy1ib3g6ICRjLWJnLWhpZ2g7XG4kYy1iZy1ib3gtb3BhcXVlOiAkYy1iZy1ib3g7XG4kYy1iZy1pbnB1dDogYy1saWdodCgkYy1iZy1wYWdlLCA5OCUpO1xuXG4kYy1ib3JkZXI6IGhzbCgwLCAwJSwgODUlKTtcbiRjLWJvcmRlci1wYWdlOiBoc2woMCwgMCUsIDgwJSk7XG5cbiRjLXBhZ2UtbWFzazogaHNsYSgwLCAwLCAwJSwgMC42KTtcblxuJGMtYmctcG9wdXA6ICRjLWJnLWhpZ2g7XG4kYy1wb3B1cDogJGMtZm9udDtcblxuJGMtYmctaGVhZGVyLWRyb3Bkb3duOiAkYy1iZy1wb3B1cDtcbiRjLWhlYWRlci1kcm9wZG93bjogJGMtcG9wdXA7XG5cbiRjLWZvbnQtc2hhZG93OiB3aGl0ZTtcbiR0ZXh0LXNoYWRvdzogMCAxcHggMCAkYy1mb250LXNoYWRvdztcblxuJGMtYm90OiAkYy1mYW5jeTtcblxuJGMtcGFnZS1pbnB1dDogJGMtYmctbG93O1xuXG4vKiBCb3JkZXJzICovXG5cbiRib3JkZXItd2lkdGg6IDFweDtcbiRib3JkZXItc3R5bGU6IHNvbGlkO1xuJGJvcmRlcjogJGJvcmRlci13aWR0aCAkYm9yZGVyLXN0eWxlICRjLWJvcmRlcjtcblxuLyogU2hhZG93cyAqL1xuXG4kYm94LXNoYWRvdzogMCAycHggMnB4IDAgcmdiYSgwLCAwLCAwLCAwLjE0KSwgMCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwIDFweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xuXG4vLyAkYm94LXNoYWRvdzogMCAycHggMnB4IDAgcmdiYSgwLDAsMCwuMTU3KTtcbiIsIkBmdW5jdGlvbiBjLWxpZ2h0KCRjb2xvciwgJHZhbHVlKSB7XG4gIEByZXR1cm4gY2hhbmdlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJHZhbHVlKTtcbn1cblxuQGZ1bmN0aW9uIGltZy11cmwoJHBhdGgpIHtcbiAgQHJldHVybiB1cmwoJyN7JGltZy1wYXRofS8jeyRwYXRofScpO1xufVxuIiwiQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy9wbHVnaW4nO1xuQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy9jb21wb25lbnQvZmJ0JztcbkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L2Jhci1nbGlkZXInO1xuQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy9jb21wb25lbnQvc2xpc3QnO1xuQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy9jb21wb25lbnQvcXVvdGUnO1xuQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy9jb21wb25lbnQvZmlyZS10cm9waHknO1xuQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy9jb21wb25lbnQvY29sb3ItaWNvbic7XG5AaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9jb250ZXh0LXN0cmVhbWVyJztcbkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L3BvZGl1bSc7XG5AaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9ub3ctcGxheWluZyc7XG5AaW1wb3J0ICcuLi8uLi8uLi9jaGF0L2Nzcy9jaGF0JztcbkBpbXBvcnQgJy4uL3Nob3cnO1xuIiwiLyogQ29tbW9uIGltcG9ydHMgZm9yIGFsbCBDU1MgbW9kdWxlcyAqL1xuXG5AaW1wb3J0ICcuLi8uLi8uLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQnO1xuXG5AaW1wb3J0ICdhYnN0cmFjdC9hbGwnO1xuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEZWZhdWx0IFZhcmlhYmxlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kQnJlYWtwb2ludC1TZXR0aW5nczogKFxuICAnZGVmYXVsdCBtZWRpYSc6IGFsbCxcbiAgJ2RlZmF1bHQgZmVhdHVyZSc6IG1pbi13aWR0aCxcbiAgJ2RlZmF1bHQgcGFpcic6IHdpZHRoLFxuXG4gICdmb3JjZSBhbGwgbWVkaWEgdHlwZSc6IGZhbHNlLFxuICAndG8gZW1zJzogZmFsc2UsXG4gICd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnOiB0cnVlLFxuXG4gICdubyBxdWVyaWVzJzogZmFsc2UsXG4gICdubyBxdWVyeSBmYWxsYmFja3MnOiBmYWxzZSxcblxuICAnYmFzZSBmb250IHNpemUnOiAxNnB4LFxuXG4gICdsZWdhY3kgc3ludGF4JzogZmFsc2Vcbik7XG5cbiRicmVha3BvaW50OiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJicmVha3BvaW50L3NldHRpbmdzXCI7XG5AaW1wb3J0ICdicmVha3BvaW50L2NvbnRleHQnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9oZWxwZXJzJztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvcGFyc2Vycyc7XG5AaW1wb3J0ICdicmVha3BvaW50L25vLXF1ZXJ5JztcblxuQGltcG9ydCAnYnJlYWtwb2ludC9yZXNwb25kLXRvJztcblxuQGltcG9ydCBcImJyZWFrcG9pbnQvbGVnYWN5LXNldHRpbmdzXCI7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaW5jbHVkZSBsZWdhY3ktc2V0dGluZ3Mtd2FybmluZztcblxuICAvLyBSZXNldCBjb250ZXh0c1xuICBAaW5jbHVkZSBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMoKTtcblxuICAkYnJlYWtwb2ludDogYnJlYWtwb2ludCgkcXVlcnksIGZhbHNlKTtcblxuICAkcXVlcnktc3RyaW5nOiBtYXAtZ2V0KCRicmVha3BvaW50LCAncXVlcnknKTtcbiAgJHF1ZXJ5LWZhbGxiYWNrOiBtYXAtZ2V0KCRicmVha3BvaW50LCAnZmFsbGJhY2snKTtcblxuICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtZ2V0KCRicmVha3BvaW50LCAnY29udGV4dCBob2xkZXInKSAhZ2xvYmFsO1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiBtYXAtZ2V0KCRicmVha3BvaW50LCAncXVlcnkgY291bnQnKSAhZ2xvYmFsO1xuXG4gIC8vIEFsbG93IGZvciBhbiBhcy1uZWVkZWQgb3ZlcnJpZGUgb3IgdXNhZ2Ugb2Ygbm8gcXVlcnkgZmFsbGJhY2suXG4gIEBpZiAkbm8tcXVlcnkgIT0gZmFsc2Uge1xuICAgICRxdWVyeS1mYWxsYmFjazogJG5vLXF1ZXJ5O1xuICB9XG5cbiAgQGlmICRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSB7XG4gICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJ25vLXF1ZXJ5JywgJHF1ZXJ5LWZhbGxiYWNrKTtcbiAgfVxuXG4gIC8vIFByaW50IE91dCBRdWVyeSBTdHJpbmdcbiAgQGlmIG5vdCBicmVha3BvaW50LWdldCgnbm8gcXVlcmllcycpIHtcbiAgICBAbWVkaWEgI3skcXVlcnktc3RyaW5nfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpICE9IGZhbHNlIG9yIGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykgPT0gdHJ1ZSB7XG5cbiAgICAkdHlwZTogdHlwZS1vZihicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykpO1xuICAgICRwcmludDogZmFsc2U7XG5cbiAgICBAaWYgKCR0eXBlID09ICdib29sJykge1xuICAgICAgJHByaW50OiB0cnVlO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoJHR5cGUgPT0gJ3N0cmluZycpIHtcbiAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgPT0gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpIHtcbiAgICAgICAgJHByaW50OiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSBpZiAoJHR5cGUgPT0gJ2xpc3QnKSB7XG4gICAgICBAZWFjaCAkd3JhcHBlciBpbiBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgICAgICBAaWYgJHF1ZXJ5LWZhbGxiYWNrID09ICR3cmFwcGVyIHtcbiAgICAgICAgICAkcHJpbnQ6IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBXcml0ZSBGYWxsYmFja1xuICAgIEBpZiAoJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlKSBhbmQgKCRwcmludCA9PSB0cnVlKSB7XG4gICAgICAkdHlwZS1mYWxsYmFjazogdHlwZS1vZigkcXVlcnktZmFsbGJhY2spO1xuXG4gICAgICBAaWYgKCR0eXBlLWZhbGxiYWNrICE9ICdib29sJykge1xuICAgICAgICAjeyRxdWVyeS1mYWxsYmFja30gJiB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgcHJpdmF0ZS1icmVha3BvaW50LXJlc2V0LWNvbnRleHRzKCk7XG59XG5cblxuQG1peGluIG1xKCRxdWVyeSwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSGFzIFNldHRpbmdcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaGFzKCRzZXR0aW5nKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludCwgJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtZ2V0KCRzZXR0aW5nKSB7XG4gIEBpZiBicmVha3BvaW50LWhhcygkc2V0dGluZykge1xuICAgIEByZXR1cm4gbWFwLWdldCgkYnJlYWtwb2ludCwgJHNldHRpbmcpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJEJyZWFrcG9pbnQtU2V0dGluZ3MsICRzZXR0aW5nKTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaWYgKHN0ci1pbmRleCgkc2V0dGluZywgJy0nKSBvciBzdHItaW5kZXgoJHNldHRpbmcsICdfJykpIGFuZCBzdHItaW5kZXgoJHNldHRpbmcsICcgJykgPT0gbnVsbCB7XG4gICAgQHdhcm4gXCJXb3JkcyBpbiBCcmVha3BvaW50IHNldHRpbmdzIHNob3VsZCBiZSBzZXBhcmF0ZWQgYnkgc3BhY2VzLCBub3QgZGFzaGVzIG9yIHVuZGVyc2NvcmVzLiBQbGVhc2UgcmVwbGFjZSBkYXNoZXMgYW5kIHVuZGVyc2NvcmVzIGJldHdlZW4gd29yZHMgd2l0aCBzcGFjZXMuIFNldHRpbmdzIHdpbGwgbm90IHdvcmsgYXMgZXhwZWN0ZWQgdW50aWwgY2hhbmdlZC5cIjtcbiAgfVxuICAkYnJlYWtwb2ludDogbWFwLW1lcmdlKCRicmVha3BvaW50LCAoJHNldHRpbmc6ICR2YWx1ZSkpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJGJyZWFrcG9pbnQtY2hhbmdlOiBicmVha3BvaW50LXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIGJyZWFrcG9pbnQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiBia3B0LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuQG1peGluIGJrcHQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmVtb3ZlIFNldHRpbmdcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJHNldHRpbmdzKSA9PSAxIHtcbiAgICAkc2V0dGluZ3M6IG50aCgkc2V0dGluZ3MsIDEpO1xuICB9XG5cbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkYnJlYWtwb2ludDogbWFwLXJlbW92ZSgkYnJlYWtwb2ludCwgJHNldHRpbmcpICFnbG9iYWw7XG4gIH1cbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MuLi4pIHtcbiAgJGJyZWFrcG9pbnQtcmVzZXQ6IGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzKTtcbn1cblxuQG1peGluIGJrcHQtcmVzZXQoJHNldHRpbmdzLi4uKSB7XG4gICRicmVha3BvaW50LXJlc2V0OiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncyk7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIEJyZWFrcG9pbnQgVmFyaWFibGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpO1xuJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IEhhcyBDb250ZXh0XG4vLyBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHlvdSBhcmUgaW5zaWRlIGEgQnJlYWtwb2ludCBxdWVyeVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1oYXMtY29udGV4dCgpIHtcbiAgQGlmIGxlbmd0aCgkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50KSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBHZXQgQ29udGV4dFxuLy8gJGZlYXR1cmU6IElucHV0IGZlYXR1cmUgdG8gZ2V0IGl0J3MgY3VycmVudCBNUSBjb250ZXh0LiBSZXR1cm5zIGZhbHNlIGlmIG5vIGNvbnRleHRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtZ2V0LWNvbnRleHQoJGZlYXR1cmUpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKSB7XG4gICAgJGdldDogbWFwLWdldCgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSk7XG4gICAgLy8gU3BlY2lhbCBoYW5kbGluZyBvZiBuby1xdWVyeSBmcm9tIGdldCBzaWRlIHNvIC9mYWxzZS8gcHJlcGVuZHMgYXJlbid0IHJldHVybmVkXG4gICAgQGlmICRmZWF0dXJlID09ICduby1xdWVyeScge1xuICAgICAgQGlmIHR5cGUtb2YoJGdldCkgPT0gJ2xpc3QnIGFuZCBsZW5ndGgoJGdldCkgPiAxIGFuZCBudGgoJGdldCwgMSkgPT0gZmFsc2Uge1xuICAgICAgICAkZ2V0OiBudGgoJGdldCwgbGVuZ3RoKCRnZXQpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQHJldHVybiAkZ2V0O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgYnJlYWtwb2ludC1oYXMtY29udGV4dCgpIGFuZCAkZmVhdHVyZSA9PSAnbWVkaWEnIHtcbiAgICAgIEByZXR1cm4gYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIGZ1bmN0aW9uIHRvIHNldCBjb250ZXh0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICR2YWx1ZSkge1xuICBAaWYgJHZhbHVlID09ICdtb25vY2hyb21lJyB7XG4gICAgJGZlYXR1cmU6ICdtb25vY2hyb21lJztcbiAgfVxuXG4gICRjdXJyZW50OiBtYXAtZ2V0KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKTtcbiAgQGlmICRjdXJyZW50IGFuZCBsZW5ndGgoJGN1cnJlbnQpID09ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgIEB3YXJuIFwiWW91IGhhdmUgYWxyZWFkeSBxdWVyaWVkIGFnYWluc3QgYCN7JGZlYXR1cmV9YC4gVW5leHBlY3RlZCB0aGluZ3MgbWF5IGhhcHBlbiBpZiB5b3UgcXVlcnkgYWdhaW5zdCB0aGUgc2FtZSBmZWF0dXJlIG1vcmUgdGhhbiBvbmNlIGluIHRoZSBzYW1lIGBhbmRgIHF1ZXJ5LiBCcmVha3BvaW50IGlzIG92ZXJ3cml0aW5nIHRoZSBjdXJyZW50IGNvbnRleHQgd2l0aCBgI3skdmFsdWV9YFwiO1xuICB9XG5cbiAgQGlmIG5vdCBtYXAtaGFzLWtleSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSkge1xuICAgICR2LWhvbGRlcjogKCk7XG4gICAgQGZvciAkaSBmcm9tIDEgdG8gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgICBAaWYgJGZlYXR1cmUgPT0gJ21lZGlhJyB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsICR2YWx1ZSk7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLW1lcmdlKCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICgkZmVhdHVyZTogJHYtaG9sZGVyKSkgIWdsb2JhbDtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHYtaG9sZGVyOiBtYXAtZ2V0KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKTtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJHYtaG9sZGVyKTtcbiAgICBAZm9yICRpIGZyb20gJGxlbmd0aCB0byAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IC0gMSB7XG4gICAgICBAaWYgJGZlYXR1cmUgPT0gJ21lZGlhJyB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsICR2YWx1ZSk7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLW1lcmdlKCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICgkZmVhdHVyZTogJHYtaG9sZGVyKSkgIWdsb2JhbDtcbiAgfVxuXG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIGZ1bmN0aW9uIHRvIHJlc2V0IGNvbnRleHRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHByaXZhdGUtYnJlYWtwb2ludC1yZXNldC1jb250ZXh0cyB7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpICFnbG9iYWw7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWdsb2JhbDtcbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbnZlcnRzIHRoZSBpbnB1dCB2YWx1ZSB0byBCYXNlIEVNc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC10by1iYXNlLWVtKCR2YWx1ZSkge1xuICAkdmFsdWUtdW5pdDogdW5pdCgkdmFsdWUpO1xuXG4gIC8vIFdpbGwgY29udmVydCByZWxhdGl2ZSBFTXMgaW50byByb290IEVNcy5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpIGFuZCB0eXBlLW9mKGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpKSA9PSAnbnVtYmVyJyBhbmQgJHZhbHVlLXVuaXQgPT0gJ2VtJyB7XG4gICAgJGJhc2UtdW5pdDogdW5pdChicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSk7XG5cbiAgICBAaWYgJGJhc2UtdW5pdCA9PSAncHgnIG9yICRiYXNlLXVuaXQgPT0gJyUnIG9yICRiYXNlLXVuaXQgPT0gJ2VtJyBvciAkYmFzZS11bml0ID09ICdwdCcge1xuICAgICAgQHJldHVybiBiYXNlLWNvbnZlcnNpb24oJHZhbHVlKSAvIGJhc2UtY29udmVyc2lvbihicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSkgKiAxZW07XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICcje2JyZWFrcG9pbnQtZ2V0KFxcJ2Jhc2UgZm9udCBzaXplXFwnKX0gaXMgbm90IHNldCBpbiB2YWxpZCB1bml0cyBmb3IgZm9udCBzaXplISc7XG4gICAgICBAcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBiYXNlLWNvbnZlcnNpb24oJHZhbHVlKTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gYmFzZS1jb252ZXJzaW9uKCR2YWx1ZSkge1xuICAkdW5pdDogdW5pdCgkdmFsdWUpO1xuXG4gIEBpZiAkdW5pdCA9PSAncHgnIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIDE2cHggKiAxZW07XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJyUnIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIDEwMCUgKiAxZW07XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJ2VtJyB7XG4gICAgQHJldHVybiAkdmFsdWU7XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJ3B0JyB7XG4gICAgQHJldHVybiAkdmFsdWUgLyAxMnB0ICogMWVtO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICR2YWx1ZTtcbi8vICAgIEB3YXJuICdFdmVyeXRoaW5nIGlzIHRlcnJpYmxlISBXaGF0IGhhdmUgeW91IGRvbmU/ISc7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgY2FuIGhhdmUgYSBtaW4vbWF4IHBhaXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtbWluLW1heC1mZWF0dXJlczogJ2NvbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvci1pbmRleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2UtYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2UtaGVpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2Utd2lkdGgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9ub2Nocm9tZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVzb2x1dGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2lkdGgnO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4tbWF4KCRmZWF0dXJlKSB7XG4gIEBlYWNoICRpdGVtIGluICRicmVha3BvaW50LW1pbi1tYXgtZmVhdHVyZXMge1xuICAgIEBpZiAkZmVhdHVyZSA9PSAkaXRlbSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGNhbiBoYXZlIGEgc3RyaW5nIHZhbHVlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LXN0cmluZy1mZWF0dXJlczogICdvcmllbnRhdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NhbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLWFzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbHVtaW5vc2l0eSc7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXN0cmluZy12YWx1ZSgkZmVhdHVyZSkge1xuICBAZWFjaCAkaXRlbSBpbiAkYnJlYWtwb2ludC1zdHJpbmctZmVhdHVyZXMge1xuICAgIEBpZiBicmVha3BvaW50LW1pbi1tYXgoJGl0ZW0pIHtcbiAgICAgIEBpZiAkZmVhdHVyZSA9PSAnbWluLSN7JGl0ZW19JyBvciAkZmVhdHVyZSA9PSAnbWF4LSN7JGl0ZW19JyB7XG4gICAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2UgaWYgJGZlYXR1cmUgPT0gJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBpcyBhIG1lZGlhIHR5cGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtbWVkaWEtdHlwZXM6ICAnYWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JyYWlsbGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnZW1ib3NzZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFuZGhlbGQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAncHJpbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvamVjdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdzY3JlZW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnc3BlZWNoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R0eScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICd0dic7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LWlzLW1lZGlhKCRmZWF0dXJlKSB7XG4gIEBlYWNoICRtZWRpYSBpbiAkYnJlYWtwb2ludC1tZWRpYS10eXBlcyB7XG4gICAgQGlmICgkZmVhdHVyZSA9PSAkbWVkaWEpIG9yICgkZmVhdHVyZSA9PSAnbm90ICN7JG1lZGlhfScpIG9yICgkZmVhdHVyZSA9PSAnb25seSAjeyRtZWRpYX0nKSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgY2FuIHN0YW5kIGFsb25lXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LXNpbmdsZS1zdHJpbmctZmVhdHVyZXM6ICdjb2xvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3ItaW5kZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dyaWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vbm9jaHJvbWUnO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRmZWF0dXJlKSB7XG4gIEBlYWNoICRpdGVtIGluICRicmVha3BvaW50LXNpbmdsZS1zdHJpbmctZmVhdHVyZXMge1xuICAgIEBpZiAkZmVhdHVyZSA9PSAkaXRlbSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWlzLXJlc29sdXRpb24oJGZlYXR1cmUpIHtcbiAgJHJlc29sdXRpb25zOiAnZGV2aWNlLXBpeGVsLXJhdGlvJywgJ2Rwcic7XG5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnKSB7XG4gICAgJHJlc29sdXRpb25zOiBhcHBlbmQoJHJlc29sdXRpb25zLCAncmVzb2x1dGlvbicpO1xuICB9XG5cbiAgQGVhY2ggJHJlc28gaW4gJHJlc29sdXRpb25zIHtcbiAgICBAaWYgaW5kZXgoJGZlYXR1cmUsICRyZXNvKSBvciBpbmRleCgkZmVhdHVyZSwgJ21pbi0jeyRyZXNvfScpIG9yIGluZGV4KCRmZWF0dXJlLCAnbWF4LSN7JHJlc299Jykge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gZmFsc2U7XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQYXJzZXIgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJwYXJzZXJzL3F1ZXJ5XCI7XG5AaW1wb3J0IFwicGFyc2Vycy9zaW5nbGVcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL2RvdWJsZVwiO1xuQGltcG9ydCBcInBhcnNlcnMvdHJpcGxlXCI7XG5AaW1wb3J0IFwicGFyc2Vycy9yZXNvbHV0aW9uXCI7XG5cbiRNZW1vLUV4aXN0czogZnVuY3Rpb24tZXhpc3RzKG1lbW8tZ2V0KSBhbmQgZnVuY3Rpb24tZXhpc3RzKG1lbW8tc2V0KTtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IEZ1bmN0aW9uXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50KCRxdWVyeSwgJGNvbnRleHRzLi4uKSB7XG4gICRydW46IHRydWU7XG4gICRyZXR1cm46ICgpO1xuXG4gIC8vIEdyYWIgdGhlIE1lbW8gT3V0cHV0IGlmIE1lbW9pemF0aW9uIGNhbiBiZSBhIHRoaW5nXG4gIEBpZiAkTWVtby1FeGlzdHMge1xuICAgICRyZXR1cm46IG1lbW8tZ2V0KGJyZWFrcG9pbnQsIGJyZWFrcG9pbnQgJHF1ZXJ5ICRjb250ZXh0cyk7XG5cbiAgICBAaWYgJHJldHVybiAhPSBudWxsIHtcbiAgICAgICRydW46IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBub3QgJE1lbW8tRXhpc3RzIG9yICRydW4ge1xuICAgIC8vIEludGVybmFsIFZhcmlhYmxlc1xuICAgICRxdWVyeS1zdHJpbmc6ICcnO1xuICAgICRxdWVyeS1mYWxsYmFjazogZmFsc2U7XG4gICAgJHJldHVybjogKCk7XG5cbiAgICAvLyBSZXNlcnZlIEdsb2JhbCBQcml2YXRlIEJyZWFrcG9pbnQgQ29udGV4dFxuICAgICRob2xkZXItY29udGV4dDogJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjtcbiAgICAkaG9sZGVyLXF1ZXJ5LWNvdW50OiAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50O1xuXG4gICAgLy8gUmVzZXQgR2xvYmFsIFByaXZhdGUgQnJlYWtwb2ludCBDb250ZXh0XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCkgIWdsb2JhbDtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFnbG9iYWw7XG5cblxuICAgIC8vIFRlc3QgdG8gc2VlIGlmIGl0J3MgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdFxuICAgICRvci1saXN0OiBpZihsaXN0LXNlcGFyYXRvcigkcXVlcnkpID09ICdjb21tYScsIHRydWUsIGZhbHNlKTtcblxuXG4gICAgQGlmICgkb3ItbGlzdCA9PSBmYWxzZSBhbmQgYnJlYWtwb2ludC1nZXQoJ2xlZ2FjeSBzeW50YXgnKSA9PSBmYWxzZSkge1xuICAgICAgJHF1ZXJ5LXN0cmluZzogYnJlYWtwb2ludC1wYXJzZSgkcXVlcnkpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkbGVuZ3RoOiBsZW5ndGgoJHF1ZXJ5KTtcblxuICAgICAgJGxhc3Q6IG50aCgkcXVlcnksICRsZW5ndGgpO1xuICAgICAgJHF1ZXJ5LWZhbGxiYWNrOiBicmVha3BvaW50LW5vLXF1ZXJ5KCRsYXN0KTtcblxuICAgICAgQGlmICgkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2UpIHtcbiAgICAgICAgJGxlbmd0aDogJGxlbmd0aCAtIDE7XG4gICAgICB9XG5cbiAgICAgIEBpZiAoYnJlYWtwb2ludC1nZXQoJ2xlZ2FjeSBzeW50YXgnKSA9PSB0cnVlKSB7XG4gICAgICAgICRtcTogKCk7XG5cbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAgICAgICAkbXE6IGFwcGVuZCgkbXEsIG50aCgkcXVlcnksICRpKSwgY29tbWEpO1xuICAgICAgICB9XG5cbiAgICAgICAgJHF1ZXJ5LXN0cmluZzogYnJlYWtwb2ludC1wYXJzZSgkbXEpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcXVlcnktc3RyaW5nOiAnJztcbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAgICAgICAkcXVlcnktc3RyaW5nOiAkcXVlcnktc3RyaW5nICsgaWYoJGkgPT0gMSwgJycsICcsICcpICsgYnJlYWtwb2ludC1wYXJzZShudGgoJHF1ZXJ5LCAkaSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJHJldHVybjogKCdxdWVyeSc6ICRxdWVyeS1zdHJpbmcsXG4gICAgICAgICdmYWxsYmFjayc6ICRxdWVyeS1mYWxsYmFjayxcbiAgICAgICAgJ2NvbnRleHQgaG9sZGVyJzogJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcixcbiAgICAgICAgJ3F1ZXJ5IGNvdW50JzogJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudFxuICAgICk7XG4gICAgQGlmIGxlbmd0aCgkY29udGV4dHMpID4gMCBhbmQgbnRoKCRjb250ZXh0cywgMSkgIT0gZmFsc2Uge1xuICAgICAgQGlmICRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSB7XG4gICAgICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCduby1xdWVyeScsICRxdWVyeS1mYWxsYmFjayk7XG4gICAgICB9XG4gICAgICAkY29udGV4dC1tYXA6ICgpO1xuICAgICAgQGVhY2ggJGNvbnRleHQgaW4gJGNvbnRleHRzIHtcbiAgICAgICAgJGNvbnRleHQtbWFwOiBtYXAtbWVyZ2UoJGNvbnRleHQtbWFwLCAoJGNvbnRleHQ6IGJyZWFrcG9pbnQtZ2V0LWNvbnRleHQoJGNvbnRleHQpKSk7XG4gICAgICB9XG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgKGNvbnRleHQ6ICRjb250ZXh0LW1hcCkpO1xuICAgIH1cblxuICAgIC8vIFJlc2V0IEdsb2JhbCBQcml2YXRlIEJyZWFrcG9pbnQgQ29udGV4dFxuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpICFnbG9iYWw7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZ2xvYmFsO1xuXG4gICAgQGlmICRNZW1vLUV4aXN0cyB7XG4gICAgICAkaG9sZGVyOiBtZW1vLXNldChicmVha3BvaW50LCBicmVha3BvaW50ICRxdWVyeSAkY29udGV4dHMsICRyZXR1cm4pO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZW5lcmFsIEJyZWFrcG9pbnQgUGFyc2VyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlKCRxdWVyeSkge1xuICAvLyBJbmNyZWFzZSBudW1iZXIgb2YgJ2FuZCcgcXVlcmllc1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50ICsgMSAhZ2xvYmFsO1xuXG4gIC8vIFNldCB1cCBNZWRpYSBUeXBlXG4gICRxdWVyeS1wcmludDogJyc7XG5cbiAgJGZvcmNlLWFsbDogKChicmVha3BvaW50LWdldCgnZm9yY2UgYWxsIG1lZGlhIHR5cGUnKSA9PSB0cnVlKSBhbmQgKGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykgPT0gJ2FsbCcpKTtcbiAgJGVtcHR5LW1lZGlhOiB0cnVlO1xuICBAaWYgKCRmb3JjZS1hbGwgPT0gdHJ1ZSkgb3IgKGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykgIT0gJ2FsbCcpIHtcbiAgICAvLyBGb3JjZSB0aGUgcHJpbnQgb2YgdGhlIGRlZmF1bHQgbWVkaWEgdHlwZSBpZiAoZm9yY2UgYWxsIGlzIHRydWUgYW5kIGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBhbGwpIG9yIChkZWZhdWx0IG1lZGlhIHR5cGUgaXMgbm90IGFsbClcbiAgICAkcXVlcnktcHJpbnQ6IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJyk7XG4gICAgJGVtcHR5LW1lZGlhOiBmYWxzZTtcbiAgfVxuXG5cbiAgJHF1ZXJ5LXJlc29sdXRpb246IGZhbHNlO1xuXG4gICRxdWVyeS1ob2xkZXI6IGJyZWFrcG9pbnQtcGFyc2UtcXVlcnkoJHF1ZXJ5KTtcblxuXG5cbiAgLy8gTG9vcCBvdmVyIGVhY2ggcGFyc2VkIG91dCBxdWVyeSBhbmQgd3JpdGUgaXQgdG8gJHF1ZXJ5LXByaW50XG4gICRmaXJzdDogdHJ1ZTtcblxuICBAZWFjaCAkZmVhdHVyZSBpbiAkcXVlcnktaG9sZGVyIHtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJGZlYXR1cmUpO1xuXG4gICAgLy8gUGFyc2UgYSBzaW5nbGUgZmVhdHVyZVxuICAgIEBpZiAoJGxlbmd0aCA9PSAxKSB7XG4gICAgICAvLyBGZWF0dXJlIGlzIGN1cnJlbnRseSBhIGxpc3QsIGdyYWIgdGhlIGFjdHVhbCB2YWx1ZVxuICAgICAgJGZlYXR1cmU6IG50aCgkZmVhdHVyZSwgMSk7XG5cbiAgICAgIC8vIE1lZGlhIFR5cGUgbXVzdCBieSBjb252ZW50aW9uIGJlIHRoZSBmaXJzdCBpdGVtLCBzbyBpdCdzIHNhZmUgdG8gZmxhdCBvdmVycmlkZSAkcXVlcnktcHJpbnQsIHdoaWNoIHJpZ2h0IG5vdyBzaG91bGQgb25seSBiZSB0aGUgZGVmYXVsdCBtZWRpYSB0eXBlXG4gICAgICBAaWYgKGJyZWFrcG9pbnQtaXMtbWVkaWEoJGZlYXR1cmUpKSB7XG4gICAgICAgIEBpZiAoJGZvcmNlLWFsbCA9PSB0cnVlKSBvciAoJGZlYXR1cmUgIT0gJ2FsbCcpIHtcbiAgICAgICAgICAvLyBGb3JjZSB0aGUgcHJpbnQgb2YgdGhlIGRlZmF1bHQgbWVkaWEgdHlwZSBpZiAoZm9yY2UgYWxsIGlzIHRydWUgYW5kIGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBhbGwpIG9yIChkZWZhdWx0IG1lZGlhIHR5cGUgaXMgbm90IGFsbClcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICRmZWF0dXJlO1xuICAgICAgICAgICRlbXB0eS1tZWRpYTogZmFsc2U7XG5cbiAgICAgICAgICAvLyBTZXQgQ29udGV4dFxuICAgICAgICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1lZGlhLCAkcXVlcnktcHJpbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUGFyc2UgYSBkb3VibGUgZmVhdHVyZVxuICAgIEBlbHNlIGlmICgkbGVuZ3RoID09IDIpIHtcbiAgICAgIEBpZiAoYnJlYWtwb2ludC1pcy1yZXNvbHV0aW9uKCRmZWF0dXJlKSAhPSBmYWxzZSkge1xuICAgICAgICAkcXVlcnktcmVzb2x1dGlvbjogJGZlYXR1cmU7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRwYXJzZWQ6IG51bGw7XG4gICAgICAgIC8vIElmIGl0J3MgYSBzdHJpbmcvbnVtYmVyIHBhaXIsXG4gICAgICAgIC8vIHdlIGNoZWNrIHRvIHNlZSBpZiBvbmUgaXMgYSBzaW5nbGUtc3RyaW5nIHZhbHVlLFxuICAgICAgICAvLyB0aGVuIHdlIHBhcnNlIGl0IGFzIGEgbm9ybWFsIGRvdWJsZVxuICAgICAgICAkYWxwaGE6IG50aCgkZmVhdHVyZSwgMSk7XG4gICAgICAgICRiZXRhOiBudGgoJGZlYXR1cmUsIDIpO1xuICAgICAgICBAaWYgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRhbHBoYSkgb3IgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRiZXRhKSB7XG4gICAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGFscGhhLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGJldGEsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUGFyc2UgYSB0cmlwbGUgZmVhdHVyZVxuICAgIEBlbHNlIGlmICgkbGVuZ3RoID09IDMpIHtcbiAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgIH1cblxuICB9XG5cbiAgQGlmICgkcXVlcnktcmVzb2x1dGlvbiAhPSBmYWxzZSkge1xuICAgICRxdWVyeS1wcmludDogYnJlYWtwb2ludC1idWlsZC1yZXNvbHV0aW9uKCRxdWVyeS1wcmludCwgJHF1ZXJ5LXJlc29sdXRpb24sICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgfVxuXG4gIC8vIExvb3AgdGhyb3VnaCBlYWNoIGZlYXR1cmUgdGhhdCdzIGJlZW4gZGV0ZWN0ZWQgc28gZmFyIGFuZCBhcHBlbmQgJ2ZhbHNlJyB0byB0aGUgdGhlIHZhbHVlIGxpc3QgdG8gaW5jcmVtZW50IHRoZWlyIGNvdW50ZXJzXG4gIEBlYWNoICRmLCAkdiBpbiAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyIHtcbiAgICAkdi1ob2xkZXI6ICR2O1xuICAgICRsZW5ndGg6IGxlbmd0aCgkdi1ob2xkZXIpO1xuICAgIEBpZiBsZW5ndGgoJHYtaG9sZGVyKSA8ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgICAgQGZvciAkaSBmcm9tICRsZW5ndGggdG8gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgICAgIEBpZiAkZiA9PSAnbWVkaWEnIHtcbiAgICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykpO1xuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtbWVyZ2UoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgKCRmOiAkdi1ob2xkZXIpKSAhZ2xvYmFsO1xuICB9XG5cbiAgQHJldHVybiAkcXVlcnktcHJpbnQ7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1xdWVyeSgkcXVlcnkpIHtcbiAgLy8gUGFyc2UgZmVhdHVyZXMgb3V0IG9mIGFuIGluZGl2aWR1YWwgcXVlcnlcbiAgJGZlYXR1cmUtaG9sZGVyOiAoKTtcbiAgJHF1ZXJ5LWhvbGRlcjogKCk7XG4gICRsZW5ndGg6IGxlbmd0aCgkcXVlcnkpO1xuXG4gIEBpZiAkbGVuZ3RoID09IDIge1xuICAgIC8vIElmIHdlJ3ZlIGdvdCBhIHN0cmluZy9udW1iZXIsIG51bWJlci9zdHJpbmcsIGNoZWNrIHRvIHNlZSBpZiBpdCdzIGEgdmFsaWQgc3RyaW5nL251bWJlciBwYWlyIG9yIHR3byBzaW5nbGVzXG4gICAgQGlmICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnc3RyaW5nJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ251bWJlcicpIG9yICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnbnVtYmVyJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ3N0cmluZycpIHtcblxuICAgICAgJG51bWJlcjogJyc7XG4gICAgICAkdmFsdWU6ICcnO1xuXG4gICAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ3N0cmluZycge1xuICAgICAgICAkbnVtYmVyOiBudGgoJHF1ZXJ5LCAyKTtcbiAgICAgICAgJHZhbHVlOiBudGgoJHF1ZXJ5LCAxKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJG51bWJlcjogbnRoKCRxdWVyeSwgMSk7XG4gICAgICAgICR2YWx1ZTogbnRoKCRxdWVyeSwgMik7XG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoZSBzdHJpbmcgdmFsdWUgY2FuIGJlIGEgc2luZ2xlIHZhbHVlLCBjaGVjayB0byBzZWUgaWYgdGhlIG51bWJlciBwYXNzZWQgaW4gaXMgYSB2YWxpZCBpbnB1dCBmb3Igc2FpZCBzaW5nbGUgdmFsdWUuIEZvcnR1bmF0ZWx5LCBhbGwgY3VycmVudCBzaW5nbGUtdmFsdWUgb3B0aW9ucyBvbmx5IGFjY2VwdCB1bml0bGVzcyBudW1iZXJzLCBzbyB0aGlzIGNoZWNrIGlzIGVhc3kuXG4gICAgICBAaWYgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCR2YWx1ZSkge1xuICAgICAgICBAaWYgdW5pdGxlc3MoJG51bWJlcikge1xuICAgICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKCR2YWx1ZSwgJG51bWJlciwgc3BhY2UpO1xuICAgICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIElmIHRoZSBzdHJpbmcgaXMgYSBtZWRpYSB0eXBlLCBzcGxpdCB0aGUgcXVlcnlcbiAgICAgIEBpZiBicmVha3BvaW50LWlzLW1lZGlhKCR2YWx1ZSkge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgbnRoKCRxdWVyeSwgMSkpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgbnRoKCRxdWVyeSwgMikpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgICAvLyBJZiBpdCdzIG5vdCBhIHNpbmdsZSBmZWF0dXJlLCB3ZSdyZSBqdXN0IGdvaW5nIHRvIGFzc3VtZSBpdCdzIGEgcHJvcGVyIHN0cmluZy92YWx1ZSBwYWlyLCBhbmQgcm9sbCB3aXRoIGl0LlxuICAgICAgQGVsc2Uge1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZCgkdmFsdWUsICRudW1iZXIsIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG5cbiAgICB9XG4gICAgLy8gSWYgdGhleSdyZSBib3RoIG51bWJlcnMsIHdlIGFzc3VtZSBpdCdzIGEgZG91YmxlIGFuZCByb2xsIHdpdGggdGhhdFxuICAgIEBlbHNlIGlmICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnbnVtYmVyJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ251bWJlcicpIHtcbiAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDEpLCBudGgoJHF1ZXJ5LCAyKSwgc3BhY2UpO1xuICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgIH1cbiAgICAvLyBJZiB0aGV5J3JlIGJvdGggc3RyaW5ncyBhbmQgbmVpdGhlciBhcmUgc2luZ2xlcywgd2Ugcm9sbCB3aXRoIHRoYXQuXG4gICAgQGVsc2UgaWYgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdzdHJpbmcnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnc3RyaW5nJykge1xuICAgICAgQGlmIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMSkpIGFuZCBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDIpKSB7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDEpLCBudGgoJHF1ZXJ5LCAyKSwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJGxlbmd0aCA9PSAzIHtcbiAgICAvLyBJZiB3ZSd2ZSBnb3QgdGhyZWUgaXRlbXMgYW5kIG5vbmUgaXMgYSBsaXN0LCB3ZSBjaGVjayB0byBzZWVcbiAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgIT0gJ2xpc3QnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSAhPSAnbGlzdCcgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMykpICE9ICdsaXN0JyB7XG4gICAgICAvLyBJZiBub25lIG9mIHRoZSBpdGVtcyBhcmUgc2luZ2xlIHN0cmluZyB2YWx1ZXMgYW5kIG5vbmUgb2YgdGhlIHZhbHVlcyBhcmUgbWVkaWEgdmFsdWVzLCB3ZSdyZSBnb29kLlxuICAgICAgQGlmIChub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDEpKSBhbmQgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAyKSkgYW5kIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMykpKSBhbmQgICgobm90IGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMSkpIGFuZCBub3QgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAyKSkgYW5kIG5vdCBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDMpKSkpIHtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMSksIG50aCgkcXVlcnksIDIpLCBzcGFjZSk7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKCRmZWF0dXJlLWhvbGRlciwgbnRoKCRxdWVyeSwgMyksIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgICAvLyBsZXQncyBjaGVjayB0byBzZWUgaWYgdGhlIGZpcnN0IGl0ZW0gaXMgYSBtZWRpYSB0eXBlXG4gICAgICBAZWxzZSBpZiBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDEpKSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCBudGgoJHF1ZXJ5LCAxKSk7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDIpLCBudGgoJHF1ZXJ5LCAzKSwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIElmIGl0J3MgYSBzaW5nbGUgaXRlbSwgb3IgaWYgaXQncyBub3QgYSBzcGVjaWFsIGNhc2UgZG91YmxlIG9yIHRyaXBsZSwgd2UgY2FuIHNpbXBseSByZXR1cm4gdGhlIHF1ZXJ5LlxuICBAcmV0dXJuICRxdWVyeTtcbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwic2luZ2xlL2RlZmF1bHRcIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkcGFyc2VkOiAnJztcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIC8vIElmIGl0J3MgYSBzaW5nbGUgZmVhdHVyZSB0aGF0IGNhbiBzdGFuZCBhbG9uZSwgd2UgbGV0IGl0XG4gIEBpZiAoYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRmZWF0dXJlKSkge1xuICAgICRwYXJzZWQ6ICRmZWF0dXJlO1xuICAgIC8vIFNldCBDb250ZXh0XG4gICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICRmZWF0dXJlKTtcbiAgfVxuICAvLyBJZiBpdCdzIG5vdCBhIHN0YW5kIGFsb25lIGZlYXR1cmUsIHdlIHBhc3MgaXQgb2ZmIHRvIHRoZSBkZWZhdWx0IGhhbmRsZXIuXG4gIEBlbHNlIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQoJGZlYXR1cmUpO1xuICB9XG5cbiAgQHJldHVybiAkbGVhZGVyICsgJygnICsgJHBhcnNlZCArICcpJztcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQoJGZlYXR1cmUpIHtcbiAgJGRlZmF1bHQ6IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IGZlYXR1cmUnKTtcblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZGVmYXVsdCwgJGZlYXR1cmUpO1xuXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIGFuZCAodHlwZS1vZigkZmVhdHVyZSkgPT0gJ251bWJlcicpIHtcbiAgICBAcmV0dXJuICcjeyRkZWZhdWx0fTogI3ticmVha3BvaW50LXRvLWJhc2UtZW0oJGZlYXR1cmUpfSc7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJyN7JGRlZmF1bHR9OiAjeyRmZWF0dXJlfSc7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwiZG91YmxlL2RlZmF1bHQtcGFpclwiO1xuQGltcG9ydCBcImRvdWJsZS9kb3VibGUtc3RyaW5nXCI7XG5AaW1wb3J0IFwiZG91YmxlL2RlZmF1bHRcIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkcGFyc2VkOiAnJztcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gICRmaXJzdDogbnRoKCRmZWF0dXJlLCAxKTtcbiAgJHNlY29uZDogbnRoKCRmZWF0dXJlLCAyKTtcblxuICAvLyBJZiB3ZSd2ZSBnb3QgdHdvIG51bWJlcnMsIHdlIGtub3cgd2UgbmVlZCB0byB1c2UgdGhlIGRlZmF1bHQgcGFpciBiZWNhdXNlIHRoZXJlIGFyZSBubyBtZWRpYSBxdWVyaWVzIHRoYXQgaGFzIGEgbWVkaWEgZmVhdHVyZSB0aGF0IGlzIGEgbnVtYmVyXG4gIEBpZiB0eXBlLW9mKCRmaXJzdCkgPT0gJ251bWJlcicgYW5kIHR5cGUtb2YoJHNlY29uZCkgPT0gJ251bWJlcicge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdC1wYWlyKCRmaXJzdCwgJHNlY29uZCk7XG4gIH1cbiAgLy8gSWYgdGhleSBhcmUgYm90aCBzdHJpbmdzLCB3ZSBzZW5kIGl0IHRocm91Z2ggdGhlIHN0cmluZyBwYXJzZXJcbiAgQGVsc2UgaWYgdHlwZS1vZigkZmlyc3QpID09ICdzdHJpbmcnIGFuZCB0eXBlLW9mKCRzZWNvbmQpID09ICdzdHJpbmcnIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1zdHJpbmcoJGZpcnN0LCAkc2Vjb25kKTtcbiAgfVxuICAvLyBJZiBpdCdzIGEgc3RyaW5nL251bWJlciBwYWlyLCB3ZSBwYXJzZSBpdCBhcyBhIG5vcm1hbCBkb3VibGVcbiAgQGVsc2Uge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLWRlZmF1bHQoJGZpcnN0LCAkc2Vjb25kKTtcbiAgfVxuXG4gIEByZXR1cm4gJGxlYWRlciArICRwYXJzZWQ7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0LXBhaXIoJGZpcnN0LCAkc2Vjb25kKSB7XG4gICRkZWZhdWx0OiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBwYWlyJyk7XG4gICRtaW46ICcnO1xuICAkbWF4OiAnJztcblxuICAvLyBTb3J0IGludG8gbWluIGFuZCBtYXhcbiAgJG1pbjogbWluKCRmaXJzdCwgJHNlY29uZCk7XG4gICRtYXg6IG1heCgkZmlyc3QsICRzZWNvbmQpO1xuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1pbi0jeyRkZWZhdWx0fSwgJG1pbik7XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1heC0jeyRkZWZhdWx0fSwgJG1heCk7XG5cbiAgLy8gTWFrZSB0aGVtIEVNcyBpZiBuZWVkIGJlXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIHtcbiAgICAkbWluOiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1pbik7XG4gICAgJG1heDogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtYXgpO1xuICB9XG5cbiAgQHJldHVybiAnKG1pbi0jeyRkZWZhdWx0fTogI3skbWlufSkgYW5kIChtYXgtI3skZGVmYXVsdH06ICN7JG1heH0pJztcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1zdHJpbmcoJGZpcnN0LCAkc2Vjb25kKSB7XG4gICRmZWF0dXJlOiAnJztcbiAgJHZhbHVlOiAnJztcblxuICAvLyBUZXN0IHRvIHNlZSB3aGljaCBpcyB0aGUgZmVhdHVyZSBhbmQgd2hpY2ggaXMgdGhlIHZhbHVlXG4gIEBpZiAoYnJlYWtwb2ludC1zdHJpbmctdmFsdWUoJGZpcnN0KSA9PSB0cnVlKSB7XG4gICAgJGZlYXR1cmU6ICRmaXJzdDtcbiAgICAkdmFsdWU6ICRzZWNvbmQ7XG4gIH1cbiAgQGVsc2UgaWYgKGJyZWFrcG9pbnQtc3RyaW5nLXZhbHVlKCRzZWNvbmQpID09IHRydWUpIHtcbiAgICAkZmVhdHVyZTogJHNlY29uZDtcbiAgICAkdmFsdWU6ICRmaXJzdDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHdhcm4gXCJOZWl0aGVyICN7JGZpcnN0fSBub3IgI3skc2Vjb25kfSBpcyBhIHZhbGlkIG1lZGlhIHF1ZXJ5IG5hbWUuXCI7XG4gIH1cblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJHZhbHVlKTtcblxuICBAcmV0dXJuICcoI3skZmVhdHVyZX06ICN7JHZhbHVlfSknO1xufSIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1kZWZhdWx0KCRmaXJzdCwgJHNlY29uZCkge1xuICAkZmVhdHVyZTogJyc7XG4gICR2YWx1ZTogJyc7XG5cbiAgQGlmIHR5cGUtb2YoJGZpcnN0KSA9PSAnc3RyaW5nJyB7XG4gICAgJGZlYXR1cmU6ICRmaXJzdDtcbiAgICAkdmFsdWU6ICRzZWNvbmQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRmZWF0dXJlOiAkc2Vjb25kO1xuICAgICR2YWx1ZTogJGZpcnN0O1xuICB9XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICR2YWx1ZSk7XG5cbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkge1xuICAgICR2YWx1ZTogYnJlYWtwb2ludC10by1iYXNlLWVtKCR2YWx1ZSk7XG4gIH1cblxuICBAcmV0dXJuICcoI3skZmVhdHVyZX06ICN7JHZhbHVlfSknXG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInRyaXBsZS9kZWZhdWx0XCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXRyaXBsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJHBhcnNlZDogJyc7XG4gICRsZWFkZXI6ICcnO1xuXG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIC8vIHNlcGFyYXRlIHRoZSBzdHJpbmcgZmVhdHVyZXMgZnJvbSB0aGUgdmFsdWUgbnVtYmVyc1xuICAkc3RyaW5nOiBudWxsO1xuICAkbnVtYmVyczogbnVsbDtcbiAgQGVhY2ggJHZhbCBpbiAkZmVhdHVyZSB7XG4gICAgQGlmIHR5cGUtb2YoJHZhbCkgPT0gc3RyaW5nIHtcbiAgICAgICRzdHJpbmc6ICR2YWw7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRudW1iZXJzKSA9PSAnbnVsbCcge1xuICAgICAgICAkbnVtYmVyczogJHZhbDtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJG51bWJlcnM6IGFwcGVuZCgkbnVtYmVycywgJHZhbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS10cmlwbGUtZGVmYXVsdCgkc3RyaW5nLCBudGgoJG51bWJlcnMsIDEpLCBudGgoJG51bWJlcnMsIDIpKTtcblxuICBAcmV0dXJuICRsZWFkZXIgKyAkcGFyc2VkO1xuXG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS10cmlwbGUtZGVmYXVsdCgkZmVhdHVyZSwgJGZpcnN0LCAkc2Vjb25kKSB7XG5cbiAgLy8gU29ydCBpbnRvIG1pbiBhbmQgbWF4XG4gICRtaW46IG1pbigkZmlyc3QsICRzZWNvbmQpO1xuICAkbWF4OiBtYXgoJGZpcnN0LCAkc2Vjb25kKTtcblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtaW4tI3skZmVhdHVyZX0sICRtaW4pO1xuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtYXgtI3skZmVhdHVyZX0sICRtYXgpO1xuXG4gIC8vIE1ha2UgdGhlbSBFTXMgaWYgbmVlZCBiZVxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSB7XG4gICAgJG1pbjogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtaW4pO1xuICAgICRtYXg6IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWF4KTtcbiAgfVxuXG4gIEByZXR1cm4gJyhtaW4tI3skZmVhdHVyZX06ICN7JG1pbn0pIGFuZCAobWF4LSN7JGZlYXR1cmV9OiAjeyRtYXh9KSc7XG59XG4iLCJAaW1wb3J0IFwicmVzb2x1dGlvbi9yZXNvbHV0aW9uXCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LWJ1aWxkLXJlc29sdXRpb24oJHF1ZXJ5LXByaW50LCAkcXVlcnktcmVzb2x1dGlvbiwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIEBpZiBicmVha3BvaW50LWdldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJykgYW5kICRxdWVyeS1yZXNvbHV0aW9uIHtcbiAgICAkcmVzb2x1dGlvbnM6IGJyZWFrcG9pbnQtbWFrZS1yZXNvbHV0aW9ucygkcXVlcnktcmVzb2x1dGlvbik7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCRyZXNvbHV0aW9ucyk7XG4gICAgJHF1ZXJ5LWhvbGRlcjogJyc7XG5cbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICAgJHF1ZXJ5OiAnI3skcXVlcnktcHJpbnR9ICN7JGxlYWRlcn0je250aCgkcmVzb2x1dGlvbnMsICRpKX0nO1xuICAgICAgQGlmICRpID09IDEge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiAkcXVlcnk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6ICcjeyRxdWVyeS1ob2xkZXJ9LCAjeyRxdWVyeX0nO1xuICAgICAgfVxuICAgIH1cblxuICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gUmV0dXJuIHdpdGggYXR0YWNoZWQgcmVzb2x1dGlvblxuICAgIEByZXR1cm4gJHF1ZXJ5LXByaW50O1xuICB9XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1tYWtlLXJlc29sdXRpb25zKCRyZXNvbHV0aW9uKSB7XG4gICRsZW5ndGg6IGxlbmd0aCgkcmVzb2x1dGlvbik7XG5cbiAgJG91dHB1dDogKCk7XG5cbiAgQGlmICRsZW5ndGggPT0gMiB7XG4gICAgJGZlYXR1cmU6ICcnO1xuICAgICR2YWx1ZTogJyc7XG5cbiAgICAvLyBGaW5kIHdoaWNoIGlzIG51bWJlclxuICAgIEBpZiB0eXBlLW9mKG50aCgkcmVzb2x1dGlvbiwgMSkpID09ICdudW1iZXInIHtcbiAgICAgICR2YWx1ZTogbnRoKCRyZXNvbHV0aW9uLCAxKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJHZhbHVlOiBudGgoJHJlc29sdXRpb24sIDIpO1xuICAgIH1cblxuICAgIC8vIERldGVybWluZSBtaW4vbWF4L3N0YW5kYXJkXG4gICAgQGlmIGluZGV4KCRyZXNvbHV0aW9uLCAnbWluLXJlc29sdXRpb24nKSB7XG4gICAgICAkZmVhdHVyZTogJ21pbi0nO1xuICAgIH1cbiAgICBAZWxzZSBpZiBpbmRleCgkcmVzb2x1dGlvbiwgJ21heC1yZXNvbHV0aW9uJykge1xuICAgICAgJGZlYXR1cmU6ICdtYXgtJztcbiAgICB9XG5cbiAgICAkc3RhbmRhcmQ6ICcoI3skZmVhdHVyZX1yZXNvbHV0aW9uOiAjeyR2YWx1ZX0pJztcblxuICAgIC8vIElmIHdlJ3JlIG5vdCBkZWFsaW5nIHdpdGggZHBweCxcbiAgICBAaWYgdW5pdCgkdmFsdWUpICE9ICdkcHB4JyB7XG4gICAgICAkYmFzZTogOTZkcGk7XG4gICAgICBAaWYgdW5pdCgkdmFsdWUpID09ICdkcGNtJyB7XG4gICAgICAgICRiYXNlOiAyNDMuODRkcGNtO1xuICAgICAgfVxuICAgICAgLy8gV3JpdGUgb3V0IGZlYXR1cmUgdGVzdHNcbiAgICAgICR3ZWJraXQ6ICcnO1xuICAgICAgJG1vejogJyc7XG4gICAgICAkd2Via2l0OiAnKC13ZWJraXQtI3skZmVhdHVyZX1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gJGJhc2V9KSc7XG4gICAgICAkbW96OiAnKCN7JGZlYXR1cmV9LW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gJGJhc2V9KSc7XG4gICAgICAvLyBBcHBlbmQgdG8gb3V0cHV0XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHN0YW5kYXJkLCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHdlYmtpdCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRtb3osIHNwYWNlKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJHdlYmtpdDogJyc7XG4gICAgICAkbW96OiAnJztcbiAgICAgICR3ZWJraXQ6ICcoLXdlYmtpdC0jeyRmZWF0dXJlfWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAxZHBweH0pJztcbiAgICAgICRtb3o6ICcoI3skZmVhdHVyZX0tbW96LWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAxZHBweH0pJztcbiAgICAgICRmYWxsYmFjazogJygjeyRmZWF0dXJlfXJlc29sdXRpb246ICN7JHZhbHVlIC8gMWRwcHggKiA5NmRwaX0pJztcbiAgICAgIC8vIEFwcGVuZCB0byBvdXRwdXRcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkc3RhbmRhcmQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkd2Via2l0LCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJG1veiwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRmYWxsYmFjaywgc3BhY2UpO1xuICAgIH1cblxuICB9XG5cbiAgQHJldHVybiAkb3V0cHV0O1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbm8tcXVlcnkoJHF1ZXJ5KSB7XG4gIEBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gJ2xpc3QnIHtcbiAgICAka2V5d29yZDogbnRoKCRxdWVyeSwgMSk7XG5cbiAgICBAaWYgdHlwZS1vZigka2V5d29yZCkgPT0gJ3N0cmluZycgYW5kICgka2V5d29yZCA9PSAnbm8tcXVlcnknIG9yICRrZXl3b3JkID09ICdubyBxdWVyeScgb3IgJGtleXdvcmQgPT0gJ2ZhbGxiYWNrJykge1xuICAgICAgQHJldHVybiBudGgoJHF1ZXJ5LCAyKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRGVmYXVsdCB0aGUgQnJlYWtwb2ludHMgdmFyaWFibGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnRzOiAoKSAhZGVmYXVsdDtcbiRCUkVBS1BPSU5UUzogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmVzcG9uZC10byBBUEkgTWl4aW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHJlc3BvbmQtdG8oJGNvbnRleHQsICRuby1xdWVyeTogZmFsc2UpIHtcbiAgQGlmIGxlbmd0aCgkYnJlYWtwb2ludHMpID4gMCBhbmQgbGVuZ3RoKCRCUkVBS1BPSU5UUykgPT0gMCB7XG4gICAgQHdhcm4gXCJJbiBvcmRlciB0byBhdm9pZCB2YXJpYWJsZSBuYW1lc3BhY2UgY29sbGlzaW9ucywgd2UgaGF2ZSB1cGRhdGVkIHRoZSB3YXkgdG8gYWRkIGJyZWFrcG9pbnRzIGZvciByZXNwb25kLXRvLiBQbGVhc2UgY2hhbmdlIGFsbCBpbnN0YW5jZXMgb2YgYCRicmVha3BvaW50czogYWRkLWJyZWFrcG9pbnQoKWAgdG8gYEBpbmNsdWRlIGFkZC1icmVha3BvaW50KClgLiBUaGUgYGFkZC1icmVha3BvaW50KClgIGZ1bmN0aW9uIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLlwiO1xuICAgICRCUkVBS1BPSU5UUzogJGJyZWFrcG9pbnRzICFnbG9iYWw7XG4gICAgJGJyZWFrcG9pbnRzOiAoKSAhZ2xvYmFsO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJEJSRUFLUE9JTlRTKSAhPSAnbWFwJyB7XG4gICAgLy8gSnVzdCBpbiBjYXNlIHNvbWVvbmUgd3JpdGVzIGdpYmJlcmlzaCB0byB0aGUgJGJyZWFrcG9pbnRzIHZhcmlhYmxlLlxuICAgIEB3YXJuIFwiWW91ciBicmVha3BvaW50cyBhcmVuJ3QgYSBtYXAhIGByZXNwb25kLXRvYCBleHBlY3RzIGEgbWFwLiBQbGVhc2UgY2hlY2sgdGhlIHZhbHVlIG9mICRCUkVBS1BPSU5UUyB2YXJpYWJsZS5cIjtcbiAgICBAY29udGVudDtcbiAgfVxuICBAZWxzZSBpZiBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRjb250ZXh0KSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtYXAtZ2V0KCRCUkVBS1BPSU5UUywgJGNvbnRleHQpLCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSBpZiBub3QgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkY29udGV4dCkge1xuICAgIEB3YXJuIFwiYCN7JGNvbnRleHR9YCBpc24ndCBhIGRlZmluZWQgYnJlYWtwb2ludCEgUGxlYXNlIGFkZCBpdCB1c2luZyBgJGJyZWFrcG9pbnRzOiBhZGQtYnJlYWtwb2ludChgI3skY29udGV4dH1gLCAkdmFsdWUpO2BcIjtcbiAgICBAY29udGVudDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHdhcm4gXCJZb3UgaGF2ZW4ndCBjcmVhdGVkIGFueSBicmVha3BvaW50cyB5ZXQhIE1ha2Ugc29tZSBhbHJlYWR5ISBgQGluY2x1ZGUgYWRkLWJyZWFrcG9pbnQoJG5hbWUsICRia3B0KWBcIjtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFkZCBCcmVha3BvaW50IHRvIEJyZWFrcG9pbnRzXG4vLyBUT0RPOiBSZW1vdmUgZnVuY3Rpb24gaW4gbmV4dCByZWxlYXNlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBhZGQtYnJlYWtwb2ludCgkbmFtZSwgJGJrcHQsICRvdmVyd3JpdGU6IGZhbHNlKSB7XG4gICRvdXRwdXQ6ICgkbmFtZTogJGJrcHQpO1xuXG4gIEBpZiBsZW5ndGgoJGJyZWFrcG9pbnRzKSA9PSAwIHtcbiAgICBAcmV0dXJuICRvdXRwdXQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRuYW1lKSBhbmQgJG92ZXJ3cml0ZSAhPSB0cnVlIHtcbiAgICAgIEB3YXJuIFwiWW91IGFscmVhZHkgaGF2ZSBhIGJyZWFrcG9pbnQgbmFtZWQgYCN7JG5hbWV9YCwgcGxlYXNlIGNob29zZSBhbm90aGVyIGJyZWFrcG9pbnQgbmFtZSwgb3IgcGFzcyBpbiBgJG92ZXJ3cml0ZTogdHJ1ZWAgdG8gb3ZlcndyaXRlIHRoZSBwcmV2aW91cyBicmVha3BvaW50LlwiO1xuICAgICAgQHJldHVybiAkYnJlYWtwb2ludHM7XG4gICAgfVxuICAgIEBlbHNlIGlmIG5vdCBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRuYW1lKSBvciAkb3ZlcndyaXRlID09IHRydWUge1xuICAgICAgQHJldHVybiBtYXAtbWVyZ2UoJGJyZWFrcG9pbnRzLCAkb3V0cHV0KTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGFkZC1icmVha3BvaW50KCRuYW1lLCAkYmtwdCwgJG92ZXJ3cml0ZTogZmFsc2UpIHtcbiAgJG91dHB1dDogKCRuYW1lOiAkYmtwdCk7XG5cbiAgQGlmIGxlbmd0aCgkQlJFQUtQT0lOVFMpID09IDAge1xuICAgICRCUkVBS1BPSU5UUzogJG91dHB1dCAhZ2xvYmFsO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkbmFtZSkgYW5kICRvdmVyd3JpdGUgIT0gdHJ1ZSB7XG4gICAgICBAd2FybiBcIllvdSBhbHJlYWR5IGhhdmUgYSBicmVha3BvaW50IG5hbWVkIGAjeyRuYW1lfWAsIHBsZWFzZSBjaG9vc2UgYW5vdGhlciBicmVha3BvaW50IG5hbWUsIG9yIHBhc3MgaW4gYCRvdmVyd3JpdGU6IHRydWVgIHRvIG92ZXJ3cml0ZSB0aGUgcHJldmlvdXMgYnJlYWtwb2ludC5cIjtcbiAgICAgICRCUkVBS1BPSU5UUzogJEJSRUFLUE9JTlRTICFnbG9iYWw7XG4gICAgfVxuICAgIEBlbHNlIGlmIG5vdCBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRuYW1lKSBvciAkb3ZlcndyaXRlID09IHRydWUge1xuICAgICAgJEJSRUFLUE9JTlRTOiBtYXAtbWVyZ2UoJEJSRUFLUE9JTlRTLCAkb3V0cHV0KSAhZ2xvYmFsO1xuICAgIH1cbiAgfVxufVxuXG5AZnVuY3Rpb24gZ2V0LWJyZWFrcG9pbnQoJG5hbWU6IGZhbHNlKSB7XG4gIEBpZiAkbmFtZSA9PSBmYWxzZSB7XG4gICAgQHJldHVybiAkQlJFQUtQT0lOVFM7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkQlJFQUtQT0lOVFMsICRuYW1lKTtcbiAgfVxufVxuIiwiQG1peGluIGxlZ2FjeS1zZXR0aW5ncy13YXJuaW5nIHtcbiAgJGxlZ2FjeVZhcnM6IChcbiAgICAnZGVmYXVsdC1tZWRpYSc6ICdkZWZhdWx0IG1lZGlhJyxcbiAgICAnZGVmYXVsdC1mZWF0dXJlJzogJ2RlZmF1bHQgZmVhdHVyZScsXG4gICAgJ2ZvcmNlLW1lZGlhLWFsbCc6ICdmb3JjZSBhbGwgbWVkaWEgdHlwZScsXG4gICAgJ3RvLWVtcyc6ICd0byBlbXMnLFxuICAgICdyZXNvbHV0aW9ucyc6ICd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnLFxuICAgICduby1xdWVyaWVzJzogJ25vIHF1ZXJpZXMnLFxuICAgICduby1xdWVyeS1mYWxsYmFja3MnOiAnbm8gcXVlcnkgZmFsbGJhY2tzJyxcbiAgICAnYmFzZS1mb250LXNpemUnOiAnYmFzZSBmb250IHNpemUnLFxuICAgICdsZWdhY3ktc3ludGF4JzogJ2xlZ2FjeSBzeW50YXgnXG4gICk7XG5cbiAgQGVhY2ggJGxlZ2FjeSwgJG5ldyBpbiAkbGVnYWN5VmFycyB7XG4gICAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtJyArICRsZWdhY3kpIHtcbiAgICAgIEB3YXJuIFwiSW4gb3JkZXIgdG8gYXZvaWQgdmFyaWFibGUgbmFtc3BhY2UgY29sbGlzaW9ucywgd2UgaGF2ZSB1cGRhdGVkIHRoZSB3YXkgdG8gY2hhbmdlIHNldHRpbmdzIGZvciBCcmVha3BvaW50LiBQbGVhc2UgY2hhbmdlIGFsbCBpbnN0YW5jZXMgb2YgYCRicmVha3BvaW50LSN7JGxlZ2FjeX06IHt7c2V0dGluZ319YCB0byBgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJyN7JG5ld30nLCB7e3NldHRpbmd9fSlgLiBWYXJpYWJsZSBzZXR0aW5ncywgYXMgd2VsbCBhcyB0aGlzIHdhcm5pbmcgd2lsbCBiZSBkZXByZWNhdGVkIGluIGEgZnV0dXJlIHJlbGVhc2UuXCJcbiAgICB9XG4gIH07XG5cbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIEhhbmQgY29ycmVjdCBlYWNoIHNldHRpbmdcbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWRlZmF1bHQtbWVkaWEnKSBhbmQgJGJyZWFrcG9pbnQtZGVmYXVsdC1tZWRpYSAhPSBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZGVmYXVsdCBtZWRpYScsICRicmVha3BvaW50LWRlZmF1bHQtbWVkaWEpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWRlZmF1bHQtZmVhdHVyZScpIGFuZCAkYnJlYWtwb2ludC1kZWZhdWx0LWZlYXR1cmUgIT0gYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgZmVhdHVyZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZGVmYXVsdCBmZWF0dXJlJywgJGJyZWFrcG9pbnQtZGVmYXVsdC1mZWF0dXJlKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1mb3JjZS1tZWRpYS1hbGwnKSBhbmQgJGJyZWFrcG9pbnQtZm9yY2UtbWVkaWEtYWxsICE9IGJyZWFrcG9pbnQtZ2V0KCdmb3JjZSBhbGwgbWVkaWEgdHlwZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZm9yY2UgYWxsIG1lZGlhIHR5cGUnLCAkYnJlYWtwb2ludC1mb3JjZS1tZWRpYS1hbGwpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LXRvLWVtcycpIGFuZCAkYnJlYWtwb2ludC10by1lbXMgIT0gYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgndG8gZW1zJywgJGJyZWFrcG9pbnQtdG8tZW1zKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1yZXNvbHV0aW9ucycpIGFuZCAkYnJlYWtwb2ludC1yZXNvbHV0aW9ucyAhPSBicmVha3BvaW50LWdldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnLCAkYnJlYWtwb2ludC1yZXNvbHV0aW9ucyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbm8tcXVlcmllcycpIGFuZCAkYnJlYWtwb2ludC1uby1xdWVyaWVzICE9IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdubyBxdWVyaWVzJywgJGJyZWFrcG9pbnQtbm8tcXVlcmllcyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzJykgYW5kICRicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrcyAhPSBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdubyBxdWVyeSBmYWxsYmFja3MnLCAkYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3MpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWJhc2UtZm9udC1zaXplJykgYW5kICRicmVha3BvaW50LWJhc2UtZm9udC1zaXplICE9IGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnYmFzZSBmb250IHNpemUnLCAkYnJlYWtwb2ludC1iYXNlLWZvbnQtc2l6ZSk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbGVnYWN5LXN5bnRheCcpIGFuZCAkYnJlYWtwb2ludC1sZWdhY3ktc3ludGF4ICE9IGJyZWFrcG9pbnQtZ2V0KCdsZWdhY3kgc3ludGF4Jykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdsZWdhY3kgc3ludGF4JywgJGJyZWFrcG9pbnQtbGVnYWN5LXN5bnRheCk7XG4gIH1cbn0iLCJAaW1wb3J0ICdmdW5jdGlvbnMnO1xuQGltcG9ydCAnei1pbmRleCc7XG5AaW1wb3J0ICdtZWRpYS1xdWVyaWVzJztcbkBpbXBvcnQgJ3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICd1bmlib2FyZCc7XG5AaW1wb3J0ICdtaXhpbnMnO1xuQGltcG9ydCAnZXh0ZW5kcyc7XG5AaW1wb3J0ICdmbGV4JztcbkBpbXBvcnQgJ2JveCc7XG5AaW1wb3J0ICdmbHVpZC1zaXplJztcbiIsIi8vLyBaLWluZGV4ZXMgbWFwLCBnYXRoZXJpbmcgYWxsIFogbGF5ZXJzIG9mIHRoZSBhcHBsaWNhdGlvblxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEB0eXBlIE1hcFxuLy8vIEBwcm9wIHtTdHJpbmd9IGtleSAtIExheWVy4oCZcyBuYW1lXG4vLy8gQHByb3Age051bWJlcn0gdmFsdWUgLSBaIHZhbHVlIG1hcHBlZCB0byB0aGUga2V5XG4kei1pbmRleGVzOiAoXG4gICdjZ19fcHJvbW90aW9uJzogMjA1LFxuICAnY2dfX3BpZWNlLmRyYWdnaW5nJzogMjA0LFxuICAnY2dfX2JvYXJkLm92ZXJsYXknOiAxMDAsXG4gICdjZ19fcGllY2UuYW5pbSc6IDMsXG4gICdjZ19fc3ZnLmNnLXNoYXBlcyc6IDIsXG4gICdjZ19fc3ZnLmNnLWN1c3RvbS1zdmdzJzogNCxcbiAgJ2NnX19waWVjZSc6IDIsXG4gICdjZ19fcGllY2UuZmFkaW5nJzogMSxcbiAgJ3Bvd2VydGlwJzogMTIwLFxuICAnY29tcGxldGUnOiAxMTIsXG4gICdpbnF1aXJ5JzogMTExLFxuICAnemVuLXRvZ2dsZSc6IDExMCxcbiAgJ21vZGFsJzogMTEwLFxuICAnbXNlbGVjdCc6IDExMCxcbiAgJ3RvcG5hdic6IDExMCxcbiAgJ2Z1bGxzY3JlZW4tbWFzayc6IDEwOSxcbiAgJ2Ryb3Bkb3duJzogMTA4LFxuICAnY29udGV4dC1tZW51JzogMTA3LFxuICAnc2l0ZS1oZWFkZXInOiAxMDYsXG4gICdyZWNvbm5lY3RpbmcnOiAxMDUsXG4gICd0b3VyLXJlbWluZGVyJzogMTA0LFxuICAnbXotbWVudSc6IDQsXG4gICdhYm92ZS1saW5rLW92ZXJsYXknOiAzLFxuICAnZnJpZW5kLWJveCc6IDIsXG4gICdsaW5rLW92ZXJsYXknOiAyLFxuICAnZ2FtZS1ib29rbWFyayc6IDIsXG4gICdzdWJuYXYtc2lkZSc6IDIsXG4gICdkZWZhdWx0JzogMCxcbik7XG5cbi8vLyBHZXQgYSB6LWluZGV4IHZhbHVlIGZyb20gYSBsYXllciBuYW1lXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGxheWVyIC0gTGF5ZXLigJlzIG5hbWVcbi8vLyBAcmV0dXJuIHtOdW1iZXJ9XG4vLy8gQHJlcXVpcmUgJHotaW5kZXhlc1xuQGZ1bmN0aW9uIHooJGxheWVyKSB7XG4gIEByZXR1cm4gbWFwLWdldCgkei1pbmRleGVzLCAkbGF5ZXIpO1xufVxuIiwiLyogV2lkdGhzICovXG5cbiRtcS14eC1zbWFsbDogbWluLXdpZHRoIDUwMHB4O1xuJG1xLXgtc21hbGw6IG1pbi13aWR0aCA2NTBweDtcbiRtcS1zbWFsbDogbWluLXdpZHRoIDgwMHB4O1xuJG1xLW1lZGl1bTogbWluLXdpZHRoIDk4MHB4O1xuJG1xLWxhcmdlOiBtaW4td2lkdGggMTEyMHB4O1xuJG1xLXgtbGFyZ2U6IG1pbi13aWR0aCAxMjYwcHg7XG5cbiRtcS1ub3QteHgtc21hbGw6IG1heC13aWR0aCA0OTlweDtcbiRtcS1ub3QteC1zbWFsbDogbWF4LXdpZHRoIDY0OXB4O1xuJG1xLW5vdC1zbWFsbDogbWF4LXdpZHRoIDc5OXB4O1xuJG1xLW5vdC1tZWRpdW06IG1heC13aWR0aCA5NzlweDtcbiRtcS1ub3QtbGFyZ2U6IG1heC13aWR0aCAxMTE5cHg7XG4kbXEtbm90LXgtbGFyZ2U6IG1heC13aWR0aCAxMjU5cHg7XG5cbi8qIEhlaWdodHMgKi9cblxuJG1xLXgtc2hvcnQ6IG1pbi1oZWlnaHQgNDAwcHg7XG4kbXEtc2hvcnQ6IG1pbi1oZWlnaHQgNTAwcHg7XG4kbXEtdGFsbDogbWluLWhlaWdodCA2MDBweDtcbiRtcS14LXRhbGw6IG1pbi1oZWlnaHQgNzAwcHg7XG5cbiRtcS1ub3QteC1zaG9ydDogbWF4LWhlaWdodCAzOTlweDtcblxuLyogT3JpZW50YXRpb25zICovXG5cbiRtcS1wb3J0cmFpdDogb3JpZW50YXRpb24gcG9ydHJhaXQ7XG4kbXEtbGFuZHNjYXBlOiBvcmllbnRhdGlvbiBsYW5kc2NhcGU7XG5cbi8qIENhcGFiaWxpdGllcyAqL1xuXG4kbXEtaG92ZXIteWVzOiAnaG92ZXI6IGhvdmVyJztcbiRtcS1ob3Zlci1ubzogaG92ZXIgbm9uZTtcblxuLyogQWxpYXNlcyAqL1xuXG4kbXEtbWFpbi1tYXJnaW46ICRtcS1zbWFsbDtcblxuJG1xLXRvcG5hdi12aXNpYmxlOiAkbXEtbWVkaXVtO1xuJG1xLXRvcG5hdi1oaWRkZW46ICRtcS1ub3QtbWVkaXVtO1xuXG4kbXEtc2l0ZS1oZWFkZXItdGFsbDogJG1xLXRhbGw7XG5cbiRtcS1zdWJuYXYtdG9wOiAkbXEtbm90LXNtYWxsO1xuJG1xLXN1Ym5hdi1zaWRlOiAkbXEtc21hbGw7XG5cbiRtcS16b29tLWVuYWJsZWQ6ICRtcS1zbWFsbCAkbXEtc2hvcnQ7XG4iLCIkZGVidWc6IGZhbHNlO1xuXG4kZm9udC1wYXRoOiAnLi4vZm9udCc7XG4kaW1nLXBhdGg6ICcuLi9pbWFnZXMnO1xuXG4kdmlld3BvcnQtbWluLXdpZHRoOiAzMjBweDtcblxuJGJsb2NrLWdhcDogMnZtaW47XG4kYmxvY2stZ2FwLWhhbGY6IDF2bWluO1xuXG4kYmxvY2stZ2FwLWg6IDJ2aDtcbiRibG9jay1nYXAtdzogMnZ3O1xuJGJsb2NrLWdhcC13LWhhbGY6IDF2dztcblxuJGJveC1yYWRpdXMtc2l6ZTogM3B4O1xuXG4kc2l0ZS1oZWFkZXItdGFsbC1oZWlnaHQ6IDYwcHg7XG4kc2l0ZS1oZWFkZXItc2hvcnQtaGVpZ2h0OiA0MHB4O1xuXG4kdHJhbnNpdGlvbi1kdXJhdGlvbjogMTUwbXM7XG5cbiRtYWluLW1heC13aWR0aDogMTMwMHB4ICFkZWZhdWx0O1xuXG4kbWFpbi1tYXJnaW46IHZhcigtLW1haW4tbWFyZ2luKTtcbiRzaXRlLWhlYWRlci1oZWlnaHQ6IHZhcigtLXNpdGUtaGVhZGVyLWhlaWdodCk7XG5cbiRzaXRlLWhlYWRlci1tYXJnaW46IHZhcigtLXNpdGUtaGVhZGVyLW1hcmdpbik7XG5cbiRzaXRlLWhlYWRlci1vdXRlci1oZWlnaHQ6IGNhbGMoI3skc2l0ZS1oZWFkZXItaGVpZ2h0fSArICN7JHNpdGUtaGVhZGVyLW1hcmdpbn0pO1xuIiwiLyogVW5pYm9hcmQ6IGtlZXAgdGhlIHNhbWUgcGFnZSBsYXlvdXQgYWNyb3NzIHBhZ2VzICovXG5cbiRtcS1ib2FyZC1yZXNpemFibGU6ICRtcS1zbWFsbDtcbiRtcS1jb2wxLXVuaWJvYXJkOiAkbXEtbm90LXNtYWxsICRtcS1wb3J0cmFpdDtcbiRtcS1jb2wyLXVuaWJvYXJkOiAkbXEtc21hbGwsICRtcS1sYW5kc2NhcGU7XG4kbXEtY29sMy11bmlib2FyZDogJG1xLXgtbGFyZ2U7XG5cbi8qIHdoZW4gdGhlIHdpZHRoIGlzIGFwcHJvcHJpYXRlIGZvciBjb2wxLCBidXQgbGFuZHNjYXBlIHByZXZlbnRzIGl0ICovXG4kbXEtY29sMi11bmlib2FyZC1zcXVlZXplOiAkbXEtbm90LXNtYWxsICRtcS1sYW5kc2NhcGU7XG5cbiRjb2wzLXVuaWJvYXJkLXNpZGU6IG1pbm1heCgyMzBweCwgMjB2dyk7XG4kY29sMy11bmlib2FyZC10YWJsZTogbWlubWF4KDI0MHB4LCA0MDBweCk7XG4kY29sMy11bmlib2FyZC1jb250cm9sczogM3JlbTtcblxuJGNvbDMtdW5pYm9hcmQtbWluLXdpZHRoOiBjYWxjKDcwdm1pbiAqIHZhcigtLWJvYXJkLXNjYWxlKSk7XG4kY29sMy11bmlib2FyZC1tYXgtd2lkdGg6IGNhbGMoMTAwdmggKiB2YXIoLS1ib2FyZC1zY2FsZSkgLSAjeyRzaXRlLWhlYWRlci1vdXRlci1oZWlnaHR9IC0gI3skY29sMy11bmlib2FyZC1jb250cm9sc30pO1xuJGNvbDMtdW5pYm9hcmQtd2lkdGg6IG1pbm1heCgkY29sMy11bmlib2FyZC1taW4td2lkdGgsICRjb2wzLXVuaWJvYXJkLW1heC13aWR0aCk7XG5cbiRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtc2NhbGU6IDAuOTtcblxuLy8gem9vbTogODUlXG4kY29sMy11bmlib2FyZC1kZWZhdWx0LW1pbi13aWR0aDogNTAwcHg7XG4kY29sMy11bmlib2FyZC1kZWZhdWx0LW1heC13aWR0aDogY2FsYyhcbiAgMTAwdmggKiAjeyRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtc2NhbGV9IC0gI3skc2l0ZS1oZWFkZXItb3V0ZXItaGVpZ2h0fSAtICN7JGNvbDMtdW5pYm9hcmQtY29udHJvbHN9XG4pO1xuJGNvbDMtdW5pYm9hcmQtZGVmYXVsdC13aWR0aDogbWlubWF4KCN7JGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1taW4td2lkdGh9LCAjeyRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtbWF4LXdpZHRofSk7XG5cbiRjb2wyLXVuaWJvYXJkLXRhYmxlOiAkY29sMy11bmlib2FyZC10YWJsZTtcbiRjb2wyLXVuaWJvYXJkLWNvbnRyb2xzOiAkY29sMy11bmlib2FyZC1jb250cm9scztcbiRjb2wyLXVuaWJvYXJkLXdpZHRoOiAkY29sMy11bmlib2FyZC13aWR0aDtcbiRjb2wyLXVuaWJvYXJkLWRlZmF1bHQtd2lkdGg6ICRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtd2lkdGg7XG5cbiRjb2wyLXVuaWJvYXJkLXNxdWVlemUtdGFibGU6IG1pbm1heCgyMDBweCwgMjQwcHgpO1xuJGNvbDItdW5pYm9hcmQtc3F1ZWV6ZS13aWR0aDogbWlubWF4KGNhbGMoNTV2bWluKSwgY2FsYygxMDB2aCAtICN7JHNpdGUtaGVhZGVyLW91dGVyLWhlaWdodH0gLSAjeyRibG9jay1nYXB9KSk7XG5cbiRjb2wxLXVuaWJvYXJkLWNvbnRyb2xzOiA1cmVtO1xuIiwiQG1peGluIGJveC1yYWRpdXMge1xuICBib3JkZXItcmFkaXVzOiAkYm94LXJhZGl1cy1zaXplO1xufVxuXG5AbWl4aW4gYm94LXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6ICRib3gtc2hhZG93O1xufVxuXG5AbWl4aW4gYm94LW5lYXQge1xuICBAaW5jbHVkZSBib3gtcmFkaXVzO1xuICBAaW5jbHVkZSBib3gtc2hhZG93O1xufVxuXG5AbWl4aW4gZGVidWctem9vbS1pbnB1dCB7XG4gICN6b29tLWlucHV0IHtcbiAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtem9vbS1lbmFibGVkKSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIGJvdHRvbTogM3B4O1xuICAgICAgcmlnaHQ6IDNweDtcbiAgICAgIHdpZHRoOiAxMHZ3O1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHJhbnNpdGlvbigkcHJvcDogYWxsLCAkZHVyOiAkdHJhbnNpdGlvbi1kdXJhdGlvbikge1xuICB0cmFuc2l0aW9uOiAkcHJvcCAkZHVyO1xufVxuXG5AbWl4aW4gaG92ZXJmbG93IHtcbiAgb3ZlcmZsb3cteTogYXV0bztcblxuICBAbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuICAgICY6bm90KDpob3Zlcikge1xuICAgICAgc2Nyb2xsYmFyLXdpZHRoOiBub25lO1xuXG4gICAgICAmOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBoaWRlIHtcbiAgZGlzcGxheTogbm9uZTtcblxuICAuYmxpbmQtbW9kZSAmIHtcbiAgICBkaXNwbGF5OiBpbmhlcml0O1xuICB9XG59XG5cbkBtaXhpbiBlbGxpcHNpcyB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuXG5AbWl4aW4gY3Jvc3N0YWJsZS1sYXJnZSB7XG4gIC5jcm9zc3RhYmxlX191c2VycyB7XG4gICAgZmxleDogNyAxIGF1dG87XG4gIH1cbn1cblxuQG1peGluIGNyb3NzdGFibGUtc21hbGwge1xuICAuY3Jvc3N0YWJsZV9fdXNlcnMge1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICB9XG59XG5cbkBtaXhpbiBib2R5LWZpeGVkLXNjcm9sbCB7XG4gIGJvZHkge1xuICAgIC8qIHByZXZlbnRzIHNjcm9sbCBiYXIgZmxpY2tlciB3aGVuIGRyYWdnaW5nIGEgcGllY2Ugb3V0ICovXG4gICAgb3ZlcmZsb3cteTogc2Nyb2xsO1xuICB9XG59XG4iLCIlYmFzZS1mb250LWZhbGxiYWNrIHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIFNhbnMnLCBTYW5zLVNlcmlmO1xufVxuXG4lYmFzZS1mb250IHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIFNhbnMnLCBTYW5zLVNlcmlmO1xufVxuXG4lcm9ib3RvIHtcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nLCBTYW5zLVNlcmlmO1xufVxuXG4lcm9ib3RvLWZhdCB7XG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJywgU2Fucy1TZXJpZjtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuJWNoZXNzLWZvbnQge1xuICBmb250LWZhbWlseTogJ05vdG8gQ2hlc3MnLCAnTm90byBTYW5zJztcbn1cblxuJXNhbiB7XG4gIEBleHRlbmQgJWNoZXNzLWZvbnQ7XG5cbiAgLnBpZWNlLWxldHRlciAmIHtcbiAgICBAZXh0ZW5kICViYXNlLWZvbnQ7XG4gIH1cblxuICBkcmF3IHtcbiAgICBAZXh0ZW5kICVyb2JvdG87XG4gICAgbWFyZ2luLWxlZnQ6IDFjaDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICB9XG59XG5cbi8qIHRleHQgcHJpbnRlZCBkaXJlY3RseSBvbiB0aGUgcGFnZSBiYWNrZ3JvdW5kIGRlc2VydmVzIHNwZWNpYWwgdHJlYXRtZW50ICh0cmFuc3AgdGhlbWUpICovXG4lcGFnZS1mb250IHtcbiAgY29sb3I6ICRjLWZvbnQtcGFnZTtcbn1cblxuJXBhZ2UtdGV4dCB7XG4gIEBleHRlbmQgJXBhZ2UtZm9udCwgJXBhZ2UtdGV4dC1zaGFkb3cgIW9wdGlvbmFsO1xufVxuXG4lcGFnZS1saW5rIHtcbiAgQGV4dGVuZCAlcGFnZS1saW5rLWZvbnQgIW9wdGlvbmFsO1xuXG4gIEBleHRlbmQgJXBhZ2UtdGV4dC1zaGFkb3cgIW9wdGlvbmFsO1xufVxuXG4lbWV0YWwge1xuICBAaW5jbHVkZSBtZXRhbDtcbn1cblxuJW1ldGFsLWhvdmVyIHtcbiAgQGluY2x1ZGUgbWV0YWwtaG92ZXI7XG59XG5cbiVwYWdlLW1ldGFsIHtcbiAgQGluY2x1ZGUgcGFnZS1tZXRhbDtcbn1cblxuJXBhZ2UtbWV0YWwtaG92ZXIge1xuICBAaW5jbHVkZSBwYWdlLW1ldGFsO1xufVxuXG4lbWV0YWwtYmcge1xuICBAaW5jbHVkZSBtZXRhbC1iZztcbn1cblxuJWFjdGl2ZS1pbnNldC1zaGFkb3cge1xuICBib3gtc2hhZG93OiAwIDNweCA0cHggaHNsYSgwLCAwLCAwLCAwLjE1KSBpbnNldDtcbn1cblxuJWFjdGl2ZSB7XG4gIEBleHRlbmQgJWFjdGl2ZS1pbnNldC1zaGFkb3c7XG5cbiAgYmFja2dyb3VuZDogJGMtYWNjZW50O1xuICBjb2xvcjogI2ZmZjtcbiAgdGV4dC1zaGFkb3c6IDAgMXB4IDFweCBibGFjayAhaW1wb3J0YW50O1xufVxuXG4lYWN0aXZlLWhvdmVyIHtcbiAgYmFja2dyb3VuZDogbWl4KHdoaXRlLCAkYy1hY2NlbnQsIDIwJSk7XG59XG5cbiVhY3RpdmUtc29mdCB7XG4gIEBleHRlbmQgJWFjdGl2ZS1pbnNldC1zaGFkb3c7XG5cbiAgYmFja2dyb3VuZDogJGMtc2hhZGU7XG4gIGNvbG9yOiAkYy1mb250LWNsZWFyZXI7XG4gIHRleHQtc2hhZG93OiAxcHggMXB4IDFweCAkYy1mb250LXNoYWRvdyAhaW1wb3J0YW50O1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuJWRyb3Bkb3duLXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IC0xcHggNXB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMyk7XG59XG5cbiVwb3B1cC1zaGFkb3cge1xuICBib3gtc2hhZG93OiAwIDE0cHggMjhweCByZ2JhKDAsIDAsIDAsIDAuMjUpLCAwIDEwcHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMjIpO1xufVxuXG4lYnV0dG9uLXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IDAgMnB4IDVweCAwIGhzbGEoMCwgMCwgMCUsIDAuMjI1KTtcbn1cblxuJWJ1dHRvbi1yYWlzZWQtc2hhZG93IHtcbiAgYm94LXNoYWRvdzogMCA0cHggMTBweCAwcHggaHNsYSgwLCAwLCAwLCAwLjIyNSk7XG59XG5cbiVidXR0b24tbm9uZSB7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgb3V0bGluZTogbm9uZTtcbiAgY29sb3I6ICRjLWZvbnQ7XG4gIGFsaWduLWl0ZW1zOiBub3JtYWw7XG59XG5cbiVjaGVja2JveCB7XG4gIEBleHRlbmQgJWJveC1yYWRpdXM7XG5cbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICBiYWNrZ3JvdW5kOiAkYy1iZy1wYWdlO1xuICBib3JkZXI6IDFweCBzb2xpZCAkYy1iZy1sb3c7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZzogMC41ZW07XG5cbiAgJjpjaGVja2VkIHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1zZWNvbmRhcnktZGltbWVyO1xuICAgIGJvcmRlci1jb2xvcjogJGMtc2Vjb25kYXJ5LWRpbTtcbiAgfVxufVxuXG4lZm9jdXMtc2hhZG93IHtcbiAgYm94LXNoYWRvdzogMCAwIDEycHggJGMtZm9udC1kaW07XG59XG5cbiV6YWxnb3ZlcmZsb3cge1xuICAvLyBtaXRpZ2F0ZSB6YWxnbyB0ZXh0XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbiVub3dyYXAtaGlkZGVuIHtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuJW5vd3JhcC1lbGxpcHNpcyB7XG4gIEBleHRlbmQgJWVsbGlwc2lzO1xuXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbiVib3gtcGFkZGluZyB7XG4gIHBhZGRpbmc6IDV2aCB2YXIoLS1ib3gtcGFkZGluZyk7XG59XG5cbiVib3gtcGFkZGluZy1ob3JpeiB7XG4gIHBhZGRpbmc6IDAgdmFyKC0tYm94LXBhZGRpbmcpO1xufVxuXG4lYnJlYWstd29yZCB7XG4gIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG59XG5cbiVicmVhay13b3JkLWhhcmQge1xuICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xuICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG5cbiAgLyogc3VwcG9ydDogZmlyZWZveCAqL1xuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xufVxuXG4lYnJlYWstbm9wZSB7XG4gIG92ZXJmbG93LXdyYXA6IG5vcm1hbDtcbiAgd29yZC1icmVhazogbm9ybWFsO1xufVxuXG4lZWxsaXBzaXMge1xuICBAaW5jbHVkZSBlbGxpcHNpcztcbn1cblxuJXNxdWFyZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGhlaWdodDogMDtcbiAgcGFkZGluZy1ib3R0b206IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4ldmlkZW8ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IDA7XG4gIHBhZGRpbmctYm90dG9tOiA1Ni4yNSU7XG5cbiAgLyogMTYvOSAqL1xuICAvLyBwYWRkaW5nLWJvdHRvbTogNzUlOyAvKiA0LzMgKi9cbiAgd2lkdGg6IDEwMCU7XG5cbiAgPiAqIHtcbiAgICBAZXh0ZW5kICVhYnMtMTAwO1xuXG4gICAgYm9yZGVyOiBub25lO1xuICB9XG59XG5cbiVnYW1lLWVtYmVkIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtbm90LXh4LXNtYWxsKSB7XG4gICAgcGFkZGluZy1ib3R0b206IDE2MCU7XG4gIH1cbn1cblxuJWRhdGEtaWNvbiB7XG4gIGZvbnQtc2l6ZTogMS4yZW07XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGZvbnQtZmFtaWx5OiAnbGljaGVzcyc7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gIGNvbnRlbnQ6IGF0dHIoZGF0YS1pY29uKTtcbiAgb3BhY2l0eTogMC45O1xufVxuXG4lZGF0YS1pY29uLXRvcCB7XG4gICY6OmJlZm9yZSB7XG4gICAgdmVydGljYWwtYWxpZ246IHRleHQtdG9wO1xuICB9XG59XG5cbiVmdWxsc2NyZWVuLW1hc2sge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgYmFja2dyb3VuZDogJGMtcGFnZS1tYXNrO1xuICB6LWluZGV4OiB6KCdmdWxsc2NyZWVuLW1hc2snKTtcbn1cblxuJWxpbmstb3ZlcmxheSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB6LWluZGV4OiB6KCdsaW5rLW92ZXJsYXknKTtcbn1cblxuJWFicy0xMDAge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbiVkb3VibGUtdGFwIHtcbiAgLy8gcHJldmVudCBpUGFkIHNhZmFyaSBmcm9tIHpvb21pbmcgaW4gb24gZG91YmxlIHRhcFxuICB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjtcbn1cbiIsIiVmbGV4LXdyYXAge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xufVxuXG4lZmxleC1jZW50ZXIge1xuICAvKiBleHRlbmRzICVmbGV4LXdyYXAgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuJWZsZXgtY2VudGVyLW5vd3JhcCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuJWZsZXgtYmV0d2VlbiB7XG4gIC8qIGV4dGVuZHMgJWZsZXgtY2VudGVyICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cblxuJWZsZXgtYmV0d2Vlbi1ub3dyYXAge1xuICAvKiBleHRlbmRzICVmbGV4LWNlbnRlciAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cblxuJWZsZXgtYmV0d2Vlbi1zdHJldGNoIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbn1cblxuJWZsZXgtYXJvdW5kIHtcbiAgLyogZXh0ZW5kcyAlZmxleC1jZW50ZXIgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG59XG5cbiVmbGV4LWNvbHVtbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogY29sdW1uO1xufVxuIiwiJWJveC1yYWRpdXMge1xuICBAaW5jbHVkZSBib3gtcmFkaXVzO1xufVxuXG4lYm94LXJhZGl1cy1mb3JjZSB7XG4gIEBleHRlbmQgJWJveC1yYWRpdXM7XG5cbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAvKiBoZWxwcyB3aXRoIGNsaXBwaW5nIGJhY2tncm91bmQgaW50byBib3JkZXItcmFkaXVzICovXG59XG5cbiVib3gtcmFkaXVzLWxlZnQge1xuICBib3JkZXItcmFkaXVzOiAkYm94LXJhZGl1cy1zaXplIDAgMCAkYm94LXJhZGl1cy1zaXplO1xufVxuXG4lYm94LXJhZGl1cy1yaWdodCB7XG4gIGJvcmRlci1yYWRpdXM6IDAgJGJveC1yYWRpdXMtc2l6ZSAkYm94LXJhZGl1cy1zaXplIDA7XG59XG5cbiVib3gtcmFkaXVzLXRvcCB7XG4gIGJvcmRlci1yYWRpdXM6ICRib3gtcmFkaXVzLXNpemUgJGJveC1yYWRpdXMtc2l6ZSAwIDA7XG59XG5cbiVib3gtcmFkaXVzLWJvdHRvbSB7XG4gIGJvcmRlci1yYWRpdXM6IDAgMCAkYm94LXJhZGl1cy1zaXplICRib3gtcmFkaXVzLXNpemU7XG59XG5cbiVib3gtcmFkaXVzLXRvcC1sZWZ0IHtcbiAgYm9yZGVyLXJhZGl1czogJGJveC1yYWRpdXMtc2l6ZSAwIDAgMDtcbn1cblxuJWJveC1yYWRpdXMtdG9wLXJpZ2h0IHtcbiAgYm9yZGVyLXJhZGl1czogMCAkYm94LXJhZGl1cy1zaXplIDAgMDtcbn1cblxuJWJveC1zaGFkb3cge1xuICBAaW5jbHVkZSBib3gtc2hhZG93O1xufVxuXG4lYm94LW5lYXQge1xuICBAZXh0ZW5kICVib3gtc2hhZG93LCAlYm94LXJhZGl1cztcbn1cblxuJWJveC1uZWF0LXRvcCB7XG4gIEBleHRlbmQgJWJveC1zaGFkb3csICVib3gtcmFkaXVzLXRvcDtcbn1cblxuJWJveC1uZWF0LWZvcmNlIHtcbiAgQGV4dGVuZCAlYm94LXNoYWRvdywgJWJveC1yYWRpdXMtZm9yY2U7XG59XG4iLCIkdnAtbWluLXdpZHRoOiAzMjBweCAhZGVmYXVsdDtcbiR2cC1tYXgtd2lkdGg6IDEyMDBweCAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIHN0cmlwLXVuaXQoJHZhbHVlKSB7XG4gIEByZXR1cm4gJHZhbHVlIC8gKCR2YWx1ZSAqIDAgKyAxKTtcbn1cblxuQG1peGluIGZsdWlkLXNpemUoJHByb3AsICRtaW4tc2l6ZSwgJG1heC1zaXplLCAkbWluLXZ3OiAkdnAtbWluLXdpZHRoLCAkbWF4LXZ3OiAkdnAtbWF4LXdpZHRoKSB7XG4gICR1MTogdW5pdCgkbWluLXZ3KTtcbiAgJHUyOiB1bml0KCRtYXgtdncpO1xuICAkdTM6IHVuaXQoJG1pbi1zaXplKTtcbiAgJHU0OiB1bml0KCRtYXgtc2l6ZSk7XG5cbiAgQGlmICR1MSA9PSAkdTIgYW5kICR1MSA9PSAkdTMgYW5kICR1MSA9PSAkdTQge1xuICAgICYge1xuICAgICAgI3skcHJvcH06ICRtaW4tc2l6ZTtcblxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4tdncpIHtcbiAgICAgICAgI3skcHJvcH06IGNhbGMoXG4gICAgICAgICAgI3skbWluLXNpemV9ICsgI3tzdHJpcC11bml0KCRtYXgtc2l6ZSAtICRtaW4tc2l6ZSl9ICpcbiAgICAgICAgICAgICgoMTAwdncgLSAjeyRtaW4tdnd9KSAvICN7c3RyaXAtdW5pdCgkbWF4LXZ3IC0gJG1pbi12dyl9KVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1heC12dykge1xuICAgICAgICAjeyRwcm9wfTogJG1heC1zaXplO1xuICAgICAgfVxuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGVycm9yIFwiZmx1aWQtc2l6ZSByZXF1aXJlcyB0aGF0IGFsbCB2YWx1ZXMgaGF2ZSB0aGUgc2FtZSB1bml0XCI7XG4gIH1cbn1cbiIsIi5mYnQge1xuICBAZXh0ZW5kICVidXR0b24tbm9uZTtcblxuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBsaW5lLWhlaWdodDogMS41O1xuXG4gIEBpbmNsdWRlIHRyYW5zaXRpb247XG5cbiAgQG1lZGlhIChob3ZlcjogaG92ZXIpIHtcbiAgICAmOmhvdmVyOm5vdCguZGlzYWJsZWQpOm5vdChbZGlzYWJsZWRdKSB7XG4gICAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtc2Vjb25kYXJ5LCAkYy1iZy1ib3gsIDc1JSk7XG4gICAgICBjb2xvcjogI2ZmZjtcbiAgICB9XG4gIH1cblxuICAmLmFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZDogJGMtc2Vjb25kYXJ5ICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICNmZmY7XG4gIH1cblxuICAmLmRpc2FibGVkLFxuICAmW2Rpc2FibGVkXSB7XG4gICAgb3BhY2l0eTogMC41O1xuICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgfVxufVxuIiwiQGtleWZyYW1lcyBiYXItZ2xpZGVyLWFuaW0ge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMzAwcHgpO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIxMDBweCk7XG4gIH1cbn1cblxuLmJhci1nbGlkZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgJjo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDcwcHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDApLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMykpO1xuICAgIGFuaW1hdGlvbjogYmFyLWdsaWRlci1hbmltIDNzIGxpbmVhciBpbmZpbml0ZTtcbiAgfVxufVxuIiwiLnNsaXN0IHtcbiAgd2lkdGg6IDEwMCU7XG4gIGJvcmRlci1ib3R0b206ICRib3JkZXI7XG5cbiAgdGhlYWQge1xuICAgIEBleHRlbmQgJW1ldGFsLCAlcm9ib3RvO1xuXG4gICAgdGgge1xuICAgICAgYm9yZGVyLXRvcDogJGJvcmRlcjtcbiAgICAgIGJvcmRlci1ib3R0b206ICRib3JkZXI7XG4gICAgICBwYWRkaW5nOiAwLjVyZW0gMC44cmVtO1xuICAgIH1cblxuICAgIHRoLmxhcmdlIHtcbiAgICAgIGZvbnQtc2l6ZTogMS4ycmVtO1xuICAgIH1cbiAgfVxuXG4gIHRkIHtcbiAgICBwYWRkaW5nOiAxcmVtO1xuXG4gICAgLmxhYmVsIHtcbiAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XG4gICAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICB9XG4gIH1cblxuICB0Ym9keSB0cjpudGgtY2hpbGQoZXZlbikge1xuICAgIGJhY2tncm91bmQ6ICRjLWJnLXplYnJhO1xuICB9XG5cbiAgdGQ6Zmlyc3QtY2hpbGQsXG4gIHRoOmZpcnN0LWNoaWxkIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDEuNXJlbTtcbiAgfVxuXG4gICYtcGFkIHtcbiAgICB0ZDpmaXJzdC1jaGlsZCxcbiAgICB0aDpmaXJzdC1jaGlsZCB7XG4gICAgICBwYWRkaW5nLWxlZnQ6IHZhcigtLWJveC1wYWRkaW5nKTtcbiAgICB9XG5cbiAgICB0ZDpsYXN0LWNoaWxkLFxuICAgIHRoOmxhc3QtY2hpbGQge1xuICAgICAgcGFkZGluZy1yaWdodDogdmFyKC0tYm94LXBhZGRpbmcpO1xuICAgIH1cbiAgfVxuXG4gICYtaW52ZXJ0IHtcbiAgICB0Ym9keSB0cjpudGgtY2hpbGQob2RkKSB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTtcbiAgICB9XG5cbiAgICB0Ym9keSB0cjpudGgtY2hpbGQoZXZlbikge1xuICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICB9XG4gIH1cbn1cbiIsIi5wdWxsLXF1b3RlIHtcbiAgbWFyZ2luOiAwIGF1dG87XG5cbiAgcCB7XG4gICAgY29sb3I6ICRjLWZvbnQ7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1hcmdpbjogMCAwLjdlbTtcbiAgICBwYWRkaW5nOiAxZW0gMDtcbiAgICBib3JkZXI6ICRib3JkZXI7XG4gICAgYm9yZGVyLXdpZHRoOiAxcHggMDtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgZm9udC1zaXplOiAxLjFyZW07XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgYm90dG9tOiAtOXB4O1xuICAgICAgbGVmdDogNDJweDtcbiAgICAgIHdpZHRoOiAxNXB4O1xuICAgICAgaGVpZ2h0OiAxNXB4O1xuICAgICAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICAgICAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAkYy1ib3JkZXI7XG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGMtYm9yZGVyO1xuICAgICAgdHJhbnNmb3JtOiBza2V3KDQ1ZGVnKSByb3RhdGUoLTQ1ZGVnKTtcbiAgICB9XG4gIH1cblxuICAmLmxvbmcgcCB7XG4gICAgZm9udC1zaXplOiAxcmVtO1xuICB9XG5cbiAgZm9vdGVyIHtcbiAgICBtYXJnaW46IDEwcHg7XG4gICAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG5cbiAgICAmOmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAnXFwyMDE0XFwyMDA5JztcbiAgICB9XG4gIH1cbn1cbiIsIiVmaXJlLXRyb3BoeS1zaGFkb3cge1xuICB0ZXh0LXNoYWRvdzogMCAwLjAwOGVtIDAuMTI3ZW0gI2ZlZmNjOSwgMC4wNTVlbSAtMC4wNjZlbSAwLjJlbSAjZmVlYzg1LCAtMC4xMTFlbSAtMC4xMjdlbSAwLjI3MmVtICNmZmFlMzQsXG4gICAgMC4xMTFlbSAtMC4yNzJlbSAwLjQxMWVtICNlYzc2MGMsIC0wLjExMWVtIC0wLjQ1NmVtIDAuNDE2ZW0gI2NkNDYwNiwgMCAtMC41MzNlbSAwLjU3N2VtICM5NzM3MTYsXG4gICAgMC4wNTVlbSAtMC41NWVtIDAuNTMzZW0gIzQ1MWIwZTtcbn1cblxuQGtleWZyYW1lcyBmaXJlLXRyb3BoeSB7XG4gIDAlIHtcbiAgICB0ZXh0LXNoYWRvdzogMCAwLjAwOGVtIDAuMTI3ZW0gI2ZlZmNjOSwgMC4wNTVlbSAtMC4wNjZlbSAwLjJlbSAjZmVlYzg1LCAtMC4xMTFlbSAtMC4xMjdlbSAwLjI3MmVtICNmZmFlMzQsXG4gICAgICAwLjExMWVtIC0wLjI3MmVtIDAuNDExZW0gI2VjNzYwYywgLTAuMTExZW0gLTAuNDU2ZW0gMC40MTZlbSAjY2Q0NjA2LCAwIC0wLjUzM2VtIDAuNTc3ZW0gIzk3MzcxNixcbiAgICAgIDAuMDU1ZW0gLTAuNTVlbSAwLjUzM2VtICM0NTFiMGU7XG4gIH1cblxuICAxMDAlIHtcbiAgICB0ZXh0LXNoYWRvdzogMCAwIDAuMTExZW0gI2ZlZmNjOSwgMC4wNTVlbSAtMC4wNTVlbSAwLjE2NmVtICNmZWZjYzksIC0wLjExMWVtIC0wLjExMWVtIDAuMjIyZW0gI2ZlZWM4NSxcbiAgICAgIDAuMTIyZW0gLTAuMjMzZW0gMC4zMzNlbSAjZmZhZTM0LCAtMC4xMjJlbSAtMC4zMjJlbSAwLjI3N2VtICNlYzc2MGMsIDAgLTAuNDU2ZW0gMC40NDRlbSAjY2Q0NjA2LFxuICAgICAgMC4wNTVlbSAtMC41ZW0gMC40NDRlbSAjOTczNzE2O1xuICB9XG59XG5cbi5maXJlLXRyb3BoeSB7XG4gIEBleHRlbmQgJWZpcmUtdHJvcGh5LXNoYWRvdztcblxuICBjb2xvcjogJGMtZm9udDtcbiAgZm9udC1zaXplOiA5MHB4O1xuICBkaXNwbGF5OiBibG9jaztcblxuICAmOmhvdmVyIHtcbiAgICBhbmltYXRpb246IGZpcmUtdHJvcGh5IDEuNXMgZWFzZS1pbi1vdXQgaW5maW5pdGUgYWx0ZXJuYXRlO1xuICB9XG59XG4iLCIuY29sb3ItaWNvbiB7XG4gIEBpZiAkdGhlbWUtbGlnaHQge1xuICAgICYud2hpdGU6OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAn7oC+JztcbiAgICB9XG5cbiAgICAmLmJsYWNrOjpiZWZvcmUge1xuICAgICAgY29udGVudDogJ+6AvSc7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAmLndoaXRlOjpiZWZvcmUge1xuICAgICAgY29udGVudDogJ+6AvSc7XG4gICAgfVxuXG4gICAgJi5ibGFjazo6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICfugL4nO1xuICAgIH1cbiAgfVxuXG4gICYucmFuZG9tOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICfugZ8nO1xuICB9XG59XG4iLCIuY29udGV4dC1zdHJlYW1lcnMge1xuICBtYXgtaGVpZ2h0OiAyMHZoO1xuICBvdmVyZmxvdy15OiBhdXRvO1xufVxuXG4uY29udGV4dC1zdHJlYW1lciB7XG4gIEBleHRlbmQgJW5vd3JhcC1oaWRkZW4sICVib3gtcmFkaXVzLWJvdHRvbSwgJWJveC1zaGFkb3csICVmbGV4LWNlbnRlci1ub3dyYXA7XG5cbiAgaGVpZ2h0OiAyLjJlbTtcbiAgY29sb3I6ICRjLXNlY29uZGFyeS1vdmVyICFpbXBvcnRhbnQ7XG4gIGJhY2tncm91bmQ6IG1peCgkYy1zZWNvbmRhcnksICRjLWJnLXBhZ2UsIDYwJSk7XG5cbiAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcblxuICAmOjpiZWZvcmUge1xuICAgIGZvbnQtc2l6ZTogMS4zZW07XG4gICAgbWFyZ2luLWxlZnQ6IDAuNGVtO1xuICB9XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogbWl4KCRjLXNlY29uZGFyeSwgJGMtYmctcGFnZSwgODAlKTtcbiAgfVxufVxuIiwiLnBvZGl1bS13cmFwIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nLWJvdHRvbTogMjBweDtcblxuICAjY29uZmV0dGkge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAyNXM7XG5cbiAgICAmLmZhZGVkIHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICB9XG59XG5cbi5wb2RpdW0ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDI7XG5cbiAgPiBkaXYge1xuICAgIEBleHRlbmQgJWVsbGlwc2lzO1xuXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcblxuICAgICYubGFtZSB7XG4gICAgICBvcGFjaXR5OiAwLjU7XG4gICAgICAudXNlci1saW5rIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICB9XG4gICAgICAudHJvcGh5IHtcbiAgICAgICAgb3BhY2l0eTogMC4zO1xuICAgICAgICBmaWx0ZXI6IGdyYXlzY2FsZSgxMDAlKSBjb250cmFzdCgxMCUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5maXJzdCB7XG4gICAgLy8gc2FtZSB3aWR0aCB0byBmaXQgaW4gbXVsdGlwbGUgZmlyc3QgcGxhY2VzXG4gICAgd2lkdGg6IDMzJTtcbiAgICBmb250LXNpemU6IDEuNmVtO1xuICB9XG5cbiAgLnNlY29uZCB7XG4gICAgZm9udC1zaXplOiAxLjNlbTtcbiAgICB3aWR0aDogMzMlO1xuICB9XG5cbiAgLnRoaXJkIHtcbiAgICBmb250LXNpemU6IDEuMmVtO1xuICAgIHdpZHRoOiAzMyU7XG4gIH1cblxuICAudHJvcGh5IHtcbiAgICBtYXJnaW46IDAgYXV0byAwLjVlbSBhdXRvO1xuICAgIGJhY2tncm91bmQ6IGNlbnRlciAvIGNvbnRhaW4gbm8tcmVwZWF0O1xuICB9XG5cbiAgLmZpcnN0IC50cm9waHkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBoZWlnaHQ6IDllbTtcbiAgICB3aWR0aDogOWVtO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGltZy11cmwoJ3Ryb3BoeS9saWNoZXNzLW1hc3NpdmUuc3ZnJyk7XG4gICAgaXNvbGF0aW9uOiBpc29sYXRlO1xuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBpbnNldDogMDtcbiAgICAgIGJhY2tncm91bmQ6IGNlbnRlciAvIGNvbnRhaW4gbm8tcmVwZWF0O1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogaW1nLXVybCgndHJvcGh5L2xpY2hlc3MtbWFzc2l2ZS5zdmcnKTtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgei1pbmRleDogMztcbiAgICB9XG4gIH1cblxuICAudHJvcGh5LW1hc2NvdCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogLTAuMDVlbTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgd2lkdGg6IDkuNmVtO1xuICAgIGhlaWdodDogMTAuMmVtO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgICB6LWluZGV4OiAyO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gIC50cm9waHktbWFzY290X19zcHJpdGUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgYm90dG9tOiAtMC4xZW07XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoLTVlbSk7XG4gICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcbiAgfVxuXG4gIC50cm9waHktbWFzY290X19zcHJpdGUtLWNvbXBhbmlvbiB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoLTZlbSk7XG4gIH1cblxuICAudHJvcGh5LW1hc2NvdF9fc3ByaXRlLS1wb3BwaW5nIHtcbiAgICBhbmltYXRpb246IHRyb3BoeS1tYXNjb3QtcG9wIDYuNHMgZWFzZS1vdXQgMC44cyBmb3J3YXJkcztcbiAgfVxuXG4gIC50cm9waHktbWFzY290X19zcHJpdGUtLWNvbXBhbmlvbi50cm9waHktbWFzY290X19zcHJpdGUtLXBvcHBpbmcge1xuICAgIGFuaW1hdGlvbjogdHJvcGh5LW1hc2NvdC1wb3AtY29tcGFuaW9uIDYuNHMgZWFzZS1vdXQgMC44cyBmb3J3YXJkcztcbiAgfVxuXG4gIC50cm9waHktbWFzY290X192aWRlbyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEyLjNlbTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cblxuICBAa2V5ZnJhbWVzIHRyb3BoeS1tYXNjb3QtcG9wIHtcbiAgICAwJSB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgtNWVtKTtcbiAgICB9XG5cbiAgICAxMDAlIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKC04LjJlbSk7XG4gICAgfVxuICB9XG5cbiAgQGtleWZyYW1lcyB0cm9waHktbWFzY290LXBvcC1jb21wYW5pb24ge1xuICAgIDAlIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKC02ZW0pO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoLTkuMmVtKTtcbiAgICB9XG4gIH1cblxuICAuc2Vjb25kIC50cm9waHkge1xuICAgIGhlaWdodDogOWVtO1xuICAgIHdpZHRoOiA3ZW07XG4gICAgYmFja2dyb3VuZC1pbWFnZTogaW1nLXVybCgndHJvcGh5L2xpY2hlc3Mtc2lsdmVyLTEuc3ZnJyk7XG4gIH1cblxuICAudGhpcmQgLnRyb3BoeSB7XG4gICAgaGVpZ2h0OiA3ZW07XG4gICAgd2lkdGg6IDdlbTtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbWctdXJsKCd0cm9waHkvbGljaGVzcy1icm9uemUtMi5zdmcnKTtcbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLW5vdC14eC1zbWFsbCkge1xuICAgIC50cm9waHkge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICAudXNlci1saW5rIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBsZXR0ZXItc3BhY2luZzogLTFweDtcbiAgfVxuXG4gIC5zdGF0cyB7XG4gICAgbWFyZ2luOiAwLjVlbSBhdXRvIDAgYXV0bztcbiAgICBmb250LXNpemU6IDAuN2VtO1xuXG4gICAgdGgge1xuICAgICAgbGV0dGVyLXNwYWNpbmc6IC0xcHg7XG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIH1cblxuICAgIHRkIHtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgcGFkZGluZy1sZWZ0OiA1cHg7XG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB9XG4gIH1cblxuICAudGhpcmQgLnN0YXRzIHtcbiAgICBmb250LXNpemU6IDAuOGVtO1xuICB9XG59XG4iLCIubm93LXBsYXlpbmcge1xuICBkaXNwbGF5OiBncmlkO1xuICAtLW5wLW1pbi13aWR0aDogMjAwcHg7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtbm90LXh4LXNtYWxsKSB7XG4gICAgLS1ucC1taW4td2lkdGg6IDUwJTtcbiAgfVxuXG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KHZhcigtLW5wLW1pbi13aWR0aCksIDFmcikpO1xuXG4gID4gYSB7XG4gICAgY29sb3I6ICRjLWZvbnQ7XG4gICAgcGFkZGluZzogMC4zZW07XG4gIH1cblxuICAuaW5kaWNhdG9yIHtcbiAgICBjb2xvcjogJGMtYWNjZW50O1xuICAgIG1hcmdpbi10b3A6IC0zcHg7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICBjZy1ib2FyZCB7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgfVxufVxuIiwiQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy9iYXNlL3Njcm9sbGJhcic7XG5cbkBpbXBvcnQgJ3RhYic7XG5AaW1wb3J0ICdtZW1iZXJzJztcbkBpbXBvcnQgJ2Rpc2N1c3Npb24nO1xuQGltcG9ydCAncGFsYW50aXInO1xuXG4ubWNoYXQge1xuICBAZXh0ZW5kICVib3gtbmVhdC1mb3JjZSwgJWZsZXgtY29sdW1uO1xuXG4gIGdyaWQtYXJlYTogY2hhdDtcbiAganVzdGlmeS1jb250ZW50OiBzdHJldGNoO1xuXG4gICZfX2NvbnRlbnQge1xuICAgIEBleHRlbmQgJWZsZXgtY29sdW1uO1xuXG4gICAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAmLm5vdGUgdGV4dGFyZWEge1xuICAgICAgZm9udC1zaXplOiAwLjllbTtcbiAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgbGluZS1oZWlnaHQ6IDEuN2VtO1xuICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgIHJlc2l6ZTogbm9uZTtcblxuICAgICAgLy8gUHJldmVudCBTYWZhcmkgaU9TIGF1dG8tem9vbSB3aGVuIGZvY3VzZWQgKHRyaWdnZXJlZCB3aGVuIGZvbnQtc2l6ZSA8IDE2cHgpXG4gICAgICBAbWVkaWEgKGhvdmVyOiBub25lKSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBtaW4taGVpZ2h0OiAxNWVtO1xufVxuIiwiYm9keTo6LXdlYmtpdC1zY3JvbGxiYXIsXG5ib2R5Ojotd2Via2l0LXNjcm9sbGJhci1jb3JuZXIge1xuICB3aWR0aDogMC41cmVtO1xuICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG59XG5cbmJvZHk6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgYmFja2dyb3VuZDogJGMtc2hhZGU7XG59XG5cbmJvZHk6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyLFxuYm9keTo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6YWN0aXZlIHtcbiAgYmFja2dyb3VuZDogJGMtZm9udC1kaW1tZXI7XG59XG4iLCIubWNoYXQge1xuICAmX190YWJzIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9XG5cbiAgJl9fdGFiIHtcbiAgICBAZXh0ZW5kICVyb2JvdG8sICVub3dyYXAtaGlkZGVuLCAlYm94LXJhZGl1cy10b3A7XG5cbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcGFkZGluZzogMC40ZW0gMTBweDtcblxuICAgIC8vIGJhY2tncm91bmQ6ICRjLXNoYWRlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBjb2xvcjogJGMtZm9udC1wYWdlO1xuXG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogbWl4KCRjLWFjY2VudCwgJGMtYmctYm94LCAxNSUpO1xuICAgIH1cblxuICAgICYtYWN0aXZlIHtcbiAgICAgIGNvbG9yOiAkYy1mb250O1xuICAgICAgYmFja2dyb3VuZDogJGMtYmctYm94ICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgaW5wdXQge1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgZGlzcGxheTogbm9uZTtcblxuICAgICAgQGV4dGVuZCAlY2hlY2tib3g7XG4gICAgfVxuXG4gICAgJi1hY3RpdmUgaW5wdXQge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgc3BhbiB7XG4gICAgICBAZXh0ZW5kICVub3dyYXAtZWxsaXBzaXM7XG4gICAgfVxuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIGJvcmRlci1yaWdodDogbm9uZTtcbiAgICB9XG4gIH1cblxuICAmLW9wdGlvbmFsIC5tY2hhdF9fdGFiLmRpc2N1c3Npb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cbn1cbiIsIi5jaGF0X19tZW1iZXJzIHtcbiAgQGV4dGVuZCAlcGFnZS10ZXh0O1xuXG4gIGZvbnQtc2l6ZTogMC45ZW07XG5cbiAgLy8gbWluLWhlaWdodDogNWVtO1xuICAvLyBtYXgtaGVpZ2h0OiA5ZW07XG4gIGhlaWdodDogMTAwJTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAmX19pbm5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgfVxuXG4gICZfX251bWJlciB7XG4gICAgQGV4dGVuZCAlZmxleC1jZW50ZXItbm93cmFwO1xuICAgIG1hcmdpbi1yaWdodDogMWNoO1xuICAgICY6OmJlZm9yZSB7XG4gICAgICBmb250LXNpemU6IDFlbTtcbiAgICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgICAgIG1hcmdpbi1yaWdodDogMC4yY2g7XG4gICAgfVxuICB9XG59XG4iLCIubWNoYXQge1xuICAmX19tZXNzYWdlcyB7XG4gICAgQGV4dGVuZCAlYnJlYWstd29yZDtcblxuICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgIG1heC1oZWlnaHQ6IDUwdmg7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wzLXVuaWJvYXJkKSB7XG4gICAgICBtYXgtaGVpZ2h0OiBub25lO1xuICAgIH1cblxuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgIGN1cnNvcjogaW5pdGlhbDtcbiAgICBmb250LXNpemU6IDAuOWVtO1xuXG4gICAgbGkge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgcGFkZGluZzogMC41ZW0gNXB4IDAuNWVtIDEwcHg7XG4gICAgICBsaW5lLWhlaWdodDogMS4yZW07XG4gICAgICBvdmVyZmxvdy15OiBoaWRkZW47XG4gICAgICB1c2VyLXNlbGVjdDogdGV4dDtcblxuICAgICAgJi5tZSB7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgJGMtc2Vjb25kYXJ5LWRpbTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiA3cHg7XG4gICAgICB9XG5cbiAgICAgICYuaG9zdCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJGMtc2Vjb25kYXJ5LWRpbSwgMC40KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuZGVsZXRlZCB7XG4gICAgICBvcGFjaXR5OiAwLjU7XG4gICAgfVxuXG4gICAgLnN5c3RlbSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIG9wYWNpdHk6IDAuODtcbiAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgIGZvbnQtc2l6ZTogMC45ZW07XG4gICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cbiAgICAuYW5ub3VuY2VtZW50IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgZm9udC1zaXplOiAxLjFlbTtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgfVxuXG4gICAgLmNvbG9yLFxuICAgIC51c2VyLWxpbmsge1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgICAgY29sb3I6ICRjLWZvbnQtZGltO1xuICAgICAgbGV0dGVyLXNwYWNpbmc6IC0xcHg7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAwLjRlbTtcbiAgICAgIG1heC13aWR0aDogMTEwcHg7XG4gICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207XG4gICAgfVxuXG4gICAgbGluZS5wYXRyb24ge1xuICAgICAgZm9udC1zaXplOiAxLjFlbTtcbiAgICAgIHdpZHRoOiAxLjJlbTtcbiAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICBjb2xvcjogJGMtYnJhZztcbiAgICB9XG5cbiAgICAudXRpdGxlIHtcbiAgICAgIG1hcmdpbi1yaWdodDogM3B4O1xuICAgIH1cblxuICAgIGE6bm90KC51c2VyLWxpbmspIHtcbiAgICAgIEBleHRlbmQgJXJvYm90bztcbiAgICB9XG5cbiAgICBpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDVweDtcbiAgICAgIHJpZ2h0OiAwO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAzcHg7XG4gICAgICBwYWRkaW5nOiAxcHggNXB4O1xuICAgICAgb3BhY2l0eTogMC43O1xuICAgICAgY29sb3I6ICRjLWFjY2VudDtcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGk6aG92ZXIgaSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHRleHQtc2hhZG93OiAwIDAgMnB4ICRjLWJnLWJveCwgMCAwIDVweCAkYy1iZy1ib3gsIDAgMCAxMHB4ICRjLWJnLWJveDtcbiAgICB9XG5cbiAgICBsaS5tZSBpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICAmX19zYXkge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIGJvcmRlcjogMDtcbiAgICBib3JkZXItdG9wOiAkYm9yZGVyO1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgcGFkZGluZzogM3B4IDIwcHggM3B4IDRweDtcblxuICAgIC8vIFByZXZlbnQgU2FmYXJpIGlPUyBhdXRvLXpvb20gd2hlbiBpbnB1dCBpcyBmb2N1c2VkICh0cmlnZ2VyZWQgd2hlbiBmb250LXNpemUgPCAxNnB4KVxuICAgIEBtZWRpYSAoaG92ZXI6IG5vbmUpIHtcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICB9XG5cbiAgICAmLndoaXNwZXIge1xuICAgICAgY29sb3I6ICRjLWdvb2Q7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICB9XG4gIH1cbn1cbiIsIkBrZXlmcmFtZXMgcGFsYW50aXItZ2xvd2luZyB7XG4gIDQwJSB7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgfVxuXG4gIDUwJSB7XG4gICAgYmFja2dyb3VuZDogbWl4KCRjLXNlY29uZGFyeSwgJGMtYmctYm94LCAzMCUpO1xuICB9XG5cbiAgNjAlIHtcbiAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtcHJpbWFyeSwgJGMtYmctYm94LCAzMCUpO1xuICB9XG5cbiAgNzAlIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICB9XG59XG5cbi5wYWxhbnRpciB7XG4gIGZsZXg6IDAgMSBhdXRvO1xuICBhbmltYXRpb246IHBhbGFudGlyLWdsb3dpbmcgMS41cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgYm9yZGVyLXJhZGl1czogMCAzcHggMCAwO1xuXG4gICYtc2xvdCB7XG4gICAgYW5pbWF0aW9uOiBub25lO1xuICAgIG9wYWNpdHk6IDAuNjtcblxuICAgICY6aG92ZXIge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gIH1cblxuICAmLW9mZiB7XG4gICAgYW5pbWF0aW9uOiBub25lO1xuICB9XG5cbiAgJi1vbiB7XG4gICAgYmFja2dyb3VuZDogJGMtZ29vZDtcbiAgICBjb2xvcjogJGMtZ29vZC1vdmVyO1xuICAgIGFuaW1hdGlvbjogbm9uZTtcblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogJGMtYmFkICFpbXBvcnRhbnQ7XG4gICAgICBjb2xvcjogJGMtYmFkLW92ZXIgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICAmOjphZnRlciB7XG4gICAgdG9wOiAxcHg7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogYXV0bztcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gIH1cbn1cbiIsIiRtcS1jb2wxOiAkbXEtY29sMS11bmlib2FyZDtcbiRtcS1jb2wyOiAkbXEtc21hbGw7XG4kbXEtY29sMzogJG1xLWNvbDMtdW5pYm9hcmQ7XG5cbkBpbXBvcnQgJ2xheW91dCc7XG5AaW1wb3J0ICdzaWRlJztcbkBpbXBvcnQgJ2ZlYXR1cmVkJztcbkBpbXBvcnQgJ2JvYXJkcyc7XG5AaW1wb3J0ICdhcHAtaGVhZGVyJztcbkBpbXBvcnQgJ2FwcC1ub3RpY2UnO1xuQGltcG9ydCAnYXBwLWNvbnRyb2wnO1xuQGltcG9ydCAnYXBwLXN0YW5kaW5nJztcbkBpbXBvcnQgJ3N0YXRzJztcbkBpbXBvcnQgJ2R1ZWwnO1xuQGltcG9ydCAnYWN0b3ItaW5mbyc7XG5AaW1wb3J0ICdwbGF5ZXItaW5mbyc7XG5AaW1wb3J0ICd0ZWFtLWluZm8nO1xuXG4udG91ciB7XG4gIC5wdWxsLXF1b3RlIHtcbiAgICBtYXJnaW4tdG9wOiAzMHB4O1xuICAgIHdpZHRoOiAzMDBweDtcbiAgfVxuXG4gIC5ib3guY3JlYXRlZCB7XG4gICAgcGFkZGluZy1ib3R0b206IDJlbTtcblxuICAgIC8qIGFzIHF1b3RlIG1hcmdpbiAqL1xuICB9XG59XG5cbi50b3VyX19mYXEge1xuICBwYWRkaW5nOiA0ZW0gdmFyKC0tYm94LXBhZGRpbmcpO1xuICBkaXNwbGF5OiBub25lO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDIpIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gIGgyIHtcbiAgICBtYXJnaW46IDEuNWVtIDAgMC41ZW0gMDtcbiAgfVxufVxuXG4vKiB0ZW1wIGhhY2sgKi9cbi50b3VyLWlkLXRlU21yUm54IC5wb2RpdW0gLnRyb3BoeSB7XG4gIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG59XG5cbi8vIEdvYXQgcnVuIGFuaW1hdGlvbjogdHJpZ2dlcmVkIHdoZW4gdGhlIGxvY2FsIHBsYXllciBiZWF0cyB0aGUgaGlnaGVzdC1yYXRlZCBwbGF5ZXJcbkBrZXlmcmFtZXMgdG91ci1nb2F0LXJ1bi1sdHIge1xuICBmcm9tIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0yMDBweCkgdHJhbnNsYXRlWSgtNTAlKTsgfVxuICB0byAgIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGNhbGMoMTAwdncgKyAyMDBweCkpIHRyYW5zbGF0ZVkoLTUwJSk7IH1cbn1cblxuQGtleWZyYW1lcyB0b3VyLWdvYXQtcnVuLXJ0bCB7XG4gIGZyb20geyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoY2FsYygxMDB2dyArIDIwMHB4KSkgdHJhbnNsYXRlWSgtNTAlKTsgfVxuICB0byAgIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0yMDBweCkgdHJhbnNsYXRlWSgtNTAlKTsgfVxufVxuXG4vLyBXaW5nZWQgZ29hdCwgbGVnIDE6IHJ1bnMgNDUlIG9mIHRoZSB3YXkgYWNyb3NzLCB0aGVuIGNsaW1icyBhd2F5IGFuZCBsZWF2ZXNcbi8vIHRocm91Z2ggdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIHNjcmVlbiBhdCBhIHNoYWxsb3cgYW5nbGUuXG5Aa2V5ZnJhbWVzIHRvdXItZ29hdC1mbHktbHRyIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMjAwcHgpIHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKDBkZWcpO1xuICB9XG4gIDQ1JSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDQ1dncpIHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKC00ZGVnKTtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjksIDAuNDUpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWChjYWxjKDEwMHZ3ICsgNjAwcHgpKSB0cmFuc2xhdGVZKGNhbGMoLTUwJSAtIDM4dmgpKSByb3RhdGUoLTEyZGVnKTtcbiAgfVxufVxuXG4vLyBXaW5nZWQgZ29hdCwgbGVnIDI6IGZsaWVzIGJhY2sgaW4gZnJvbSB0aGUgcmlnaHQgc2lkZSwgdG91Y2hlcyBkb3duIG9uIHRoZVxuLy8gZ3JvdW5kIGFuZCBydW5zIG9mZiB0aGUgbGVmdCBzaWRlIG9mIHRoZSBzY3JlZW4uXG5Aa2V5ZnJhbWVzIHRvdXItZ29hdC1mbHktcnRsIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWChjYWxjKDEwMHZ3ICsgMjYwcHgpKSB0cmFuc2xhdGVZKGNhbGMoLTUwJSAtIDM0dmgpKSByb3RhdGUoMTBkZWcpO1xuICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjMsIDAuNSwgMC41LCAxKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg1OHZ3KSB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSgwZGVnKTtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC00MjBweCkgdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUoMGRlZyk7XG4gIH1cbn1cblxuQGtleWZyYW1lcyB0b3VyLWdvYXQtd2luZy1mbGFwLW5lYXIge1xuICBmcm9tIHsgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH1cbiAgdG8gICB7IHRyYW5zZm9ybTogcm90YXRlKC0xNmRlZyk7IH1cbn1cblxuQGtleWZyYW1lcyB0b3VyLWdvYXQtd2luZy1mbGFwLWZhciB7XG4gIGZyb20geyB0cmFuc2Zvcm06IHNjYWxlWCgtMSkgcm90YXRlKDBkZWcpOyB9XG4gIHRvICAgeyB0cmFuc2Zvcm06IHNjYWxlWCgtMSkgcm90YXRlKC0xNmRlZyk7IH1cbn1cblxuLnRvdXJfX2dvYXQtcnVuIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDUwJTtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogOTk5OTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgJi0tbHRyIHsgYW5pbWF0aW9uOiB0b3VyLWdvYXQtcnVuLWx0ciA0LjVzIGxpbmVhciBmb3J3YXJkczsgfVxuICAmLS1ydGwgeyBhbmltYXRpb246IHRvdXItZ29hdC1ydW4tcnRsIDQuNXMgbGluZWFyIGZvcndhcmRzOyB9XG4gICYtLXdpbmdlZC50b3VyX19nb2F0LXJ1bi0tbHRyIHsgYW5pbWF0aW9uLW5hbWU6IHRvdXItZ29hdC1mbHktbHRyOyB9XG4gICYtLXdpbmdlZC50b3VyX19nb2F0LXJ1bi0tcnRsIHsgYW5pbWF0aW9uLW5hbWU6IHRvdXItZ29hdC1mbHktcnRsOyB9XG5cbiAgJl9faW1nIHtcbiAgICBoZWlnaHQ6IDE0M3B4O1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAxO1xuICAgICYtLWZsaXBwZWQgeyB0cmFuc2Zvcm06IHNjYWxlWCgtMSk7IH1cbiAgfVxuXG4gIC8vIHdpbmdzIHNpdCBiZWhpbmQgdGhlIGdvYXQgc3ByaXRlLCBhbmNob3JlZCBvbiBpdHMgYmFjay4gVGhleSBhcmUgdGhlIHNhbWVcbiAgLy8gd2luZyBzeW1ib2wgdGhlIGFyZW5hIHN0YW5kaW5ncyBkcmF3IG5leHQgdG8gYSBwbGF5ZXIgb24gYSB3aW4gc3RyZWFrLlxuICAmX193aW5ncyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGluc2V0OiAwO1xuICB9XG5cbiAgJl9fd2luZyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvdHRvbTogNTAlO1xuICAgIHJpZ2h0OiA1MCU7XG4gICAgZm9udC1mYW1pbHk6ICdsaWNoZXNzJztcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LXNpemU6IDg2cHg7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgY29sb3I6ICNlOGJkM2M7XG4gICAgdGV4dC1zaGFkb3c6IDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuNDUpO1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IDk0JSA2MiU7XG4gICAgYW5pbWF0aW9uOiB0b3VyLWdvYXQtd2luZy1mbGFwLW5lYXIgMC4yMnMgZWFzZS1pbi1vdXQgaW5maW5pdGUgYWx0ZXJuYXRlO1xuXG4gICAgJi0tZmFyIHtcbiAgICAgIGFuaW1hdGlvbi1uYW1lOiB0b3VyLWdvYXQtd2luZy1mbGFwLWZhcjtcbiAgICAgIG9wYWNpdHk6IDAuODU7XG4gICAgfVxuICB9XG5cbiAgJl9faWNvbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4uZ29hdC1pY29uIHtcbiAgaGVpZ2h0OiAxOHB4O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBtYXJnaW4tbGVmdDogNHB4O1xufVxuIiwiQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMikge1xuICAjbWFpbi13cmFwIHtcbiAgICAtLW1haW4tbWF4LXdpZHRoOiBhdXRvO1xuICB9XG59XG5cbi50b3VyX19vdXRlcl9tYWluIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICNjb25mZXR0aSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDRzO1xuXG4gICAgJi5mYWRlZCB7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgfVxufVxuXG4kY2hhdC1vcHRpbWFsLXNpemU6IGNhbGMoMTAwdmggLSAjeyRzaXRlLWhlYWRlci1vdXRlci1oZWlnaHR9IC0gI3skYmxvY2stZ2FwfSAtIDNyZW0pO1xuXG4udG91ciB7XG4gIGRpc3BsYXk6IGdyaWQ7XG5cbiAgJl9fc2lkZSB7XG4gICAgZ3JpZC1hcmVhOiBzaWRlO1xuICB9XG5cbiAgJl9fdGFibGUsXG4gICZfX3N0YXRzLFxuICAmX19wbGF5ZXIge1xuICAgIGdyaWQtYXJlYTogdGFibGU7XG4gIH1cblxuICAmX190YWJsZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICB9XG5cbiAgJl9fbWFpbiB7XG4gICAgZ3JpZC1hcmVhOiBtYWluO1xuICB9XG5cbiAgLmNoYXRfX21lbWJlcnMge1xuICAgIGdyaWQtYXJlYTogdWNoYXQ7XG4gIH1cblxuICBncmlkLXRlbXBsYXRlLWFyZWFzOiAnbWFpbicgJ3NpZGUnICd1Y2hhdCcgJ3RhYmxlJztcbiAgZ3JpZC1nYXA6ICRibG9jay1nYXA7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMikge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogJGNvbDItdW5pYm9hcmQtZGVmYXVsdC13aWR0aCAkY29sMi11bmlib2FyZC10YWJsZTtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6ICRjaGF0LW9wdGltYWwtc2l6ZSBtaW4tY29udGVudDtcbiAgICBncmlkLXRlbXBsYXRlLWFyZWFzOiAnbWFpbiAgc2lkZScgJ21haW4gIHVjaGF0JyAndGFibGUgdGFibGUnO1xuXG4gICAgJl9fdGFibGUge1xuICAgICAgZGlzcGxheTogZmxleDtcblxuICAgICAgPiAqIHtcbiAgICAgICAgZmxleDogMCAwIDUwJTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubWNoYXRfX21lc3NhZ2VzIHtcbiAgICAgIG1heC1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMykge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogJGNvbDMtdW5pYm9hcmQtc2lkZSAkY29sMy11bmlib2FyZC1kZWZhdWx0LXdpZHRoICRjb2wzLXVuaWJvYXJkLXRhYmxlO1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogJGNoYXQtb3B0aW1hbC1zaXplIGF1dG87XG4gICAgZ3JpZC10ZW1wbGF0ZS1hcmVhczogJ3NpZGUgIG1haW4gdGFibGUnICd1Y2hhdCBtYWluIHRhYmxlJztcblxuICAgICZfX3RhYmxlIHtcbiAgICAgIGZsZXgtZmxvdzogY29sdW1uO1xuXG4gICAgICA+ICoge1xuICAgICAgICBmbGV4OiBpbmhlcml0O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4ubWFzY290IHtcbiAgd2lkdGg6IDQwMHB4O1xuICBoZWlnaHQ6IDI2MHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICAvKiBSRU1PVkUgdGhpczogYW5pbWF0aW9uOiBub25lICFpbXBvcnRhbnQ7ICovXG59XG5cbi50b3VyLW1hc2NvdC1mZWF0dXJlZC1kb2NrLFxuI3RvdXItbWFzY290LW1vdW50IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgbWluLWhlaWdodDogMjMycHg7XG4gIHdpZHRoOiAxMDAlO1xuICB6LWluZGV4OiA5MDtcbn1cblxuLnRvdXItbWFzY290LWZlYXR1cmVkLWRvY2sgLm1hc2NvdC1ib3R0b20sXG4jdG91ci1tYXNjb3QtbW91bnQgLm1hc2NvdC1ib3R0b20ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRvcDogMDtcbiAgei1pbmRleDogOTE7XG59XG5cbi50b3VyLW1hc2NvdC1mZWF0dXJlZC1kb2NrIC5tYXNjb3QsXG4jdG91ci1tYXNjb3QtbW91bnQgLm1hc2NvdCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMjMycHg7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xuICB6LWluZGV4OiA5Mjtcbn1cblxuLnRvdXItbWFzY290LWZlYXR1cmVkLWRvY2sgLm1hc2NvdC1zcHJpdGUsXG4jdG91ci1tYXNjb3QtbW91bnQgLm1hc2NvdC1zcHJpdGUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogLThweDtcbiAgYm90dG9tOiBhdXRvO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiA5MztcbiAgYW5pbWF0aW9uOiBub25lO1xufVxuXG4vKiB3cmFwcGVyIHRoYXQgbW92ZXMgbGVmdC9yaWdodCAqL1xuLm1hc2NvdC1zcHJpdGUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcbiAgY3Vyc29yOiBncmFiO1xuXG4gIC8qIOKchSBwYWNpbmcgYnkgZGVmYXVsdCAtIHVzZSBsZWZ0IGluc3RlYWQgb2YgdHJhbnNmb3JtICovXG4gIGFuaW1hdGlvbjogbWFzY290UGFjZSA2cyBsaW5lYXIgaW5maW5pdGUgYWx0ZXJuYXRlO1xuXG4gIC8qIOKchSBwYXVzZSBhbmltYXRpb24gd2hlbiBjaGFzaW5nICovXG4gICYubWFzY290LS1jaGFzaW5nIHtcbiAgICBhbmltYXRpb24tcGxheS1zdGF0ZTogcGF1c2VkICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLm1hc2NvdC0tZHJhZ2dpbmcgLm1hc2NvdC1zcHJpdGUge1xuICBjdXJzb3I6IGdyYWJiaW5nO1xuICBhbmltYXRpb246IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLm1hc2NvdC5tYXNjb3QtLWZyZWUtZHJhZyB7XG4gIHBvc2l0aW9uOiBmaXhlZCAhaW1wb3J0YW50O1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIHdpZHRoOiAxMDB2dyAhaW1wb3J0YW50O1xuICBoZWlnaHQ6IDEwMHZoICFpbXBvcnRhbnQ7XG4gIG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gIHotaW5kZXg6IDIxNDc0ODM2NDYgIWltcG9ydGFudDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLm1hc2NvdC5tYXNjb3QtLWZyZWUtZHJhZyAubWFzY290LXNwcml0ZSB7XG4gIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICB6LWluZGV4OiAyMTQ3NDgzNjQ3O1xuICBhbmltYXRpb246IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLyogZG8gTk9UIGFuaW1hdGUgdGhlIHZpZGVvOyBKUyBmbGlwcyBpdCAqL1xuLm1hc2NvdC12aWRlbyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMjgwcHg7XG4gIGhlaWdodDogYXV0bztcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcbn1cblxuLyogSGF0IG92ZXJsYXkg4oCUIHBvc2l0aW9uZWQgdG8gbWF0Y2ggU3BpbmUvQzAxL0hhdC5wbmcgcmVuZGVyZWQgb24gdGhlIGNhcHkncyBoZWFkLlxuICogQmFzZSBjYW52YXM6IDc4OHg1MDQg4oaSIENTUyAyODBweCB3aWRlIChzY2FsZSAwLjM1NTMpLlxuICogSGF0IGNvbnRlbnQgYmJveCBpbiBmcmFtZTogdG9wPTIyMCBsZWZ0PTMzMyAoeWVsbG93IHBpeGVscykuIENyb3BwZWQgUE5HIGlzIDc3eDY2cHguXG4gKiBDU1M6IHRvcCA9IDIyMCooMjgwLzc4OCkg4omIIDc4cHgsIGxlZnQgPSAzMzMqKDI4MC83ODgpIOKJiCAxMThweCwgd2lkdGggPSA3NyooMjgwLzc4OCkg4omIIDI3cHggKi9cbi5tYXNjb3QtaGF0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMjdweDtcbiAgdG9wOiA3OHB4O1xuICBsZWZ0OiAxMThweDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7XG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XG59XG5cbi5tYXNjb3QtLXBhdXNlZCAubWFzY290LXNwcml0ZSB7IGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBwYXVzZWQgIWltcG9ydGFudDsgfVxuXG5Aa2V5ZnJhbWVzIG1hc2NvdFBhY2Uge1xuICBmcm9tIHsgbGVmdDogMDsgfVxuICB0byAgIHsgbGVmdDogY2FsYyg0MDBweCAtIDI4MHB4KTsgfVxufVxuXG4ubWFzY290LWJ1YmJsZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogNTAlO1xuICB0b3A6IDBweDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICBkaXNwbGF5OiBub25lO1xuXG4gIHBhZGRpbmc6IDZweCAxMHB4O1xuICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTUpO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsMCwwLDAuMTUpO1xuICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLDAsMCwwLjEyKTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHotaW5kZXg6IDI7XG59XG5cbi5tYXNjb3QtYnViYmxlOjphZnRlciB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDUwJTtcbiAgYm90dG9tOiAtNnB4O1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgcm90YXRlKDQ1ZGVnKTtcbiAgd2lkdGg6IDEwcHg7XG4gIGhlaWdodDogMTBweDtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk1KTtcbiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCByZ2JhKDAsMCwwLDAuMTUpO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgwLDAsMCwwLjE1KTtcbn1cblxuLy8g4pSA4pSAIENhcHliYXJhIFBhcmsgKGZpbmlzaGVkIHRvdXJuYW1lbnQsIG91dHNpZGUgdGhlIG1haW4gYm94KSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi5jYXB5LXBhcmstd3JhcCB7XG4gIGdyaWQtY29sdW1uOiAxIC8gLTE7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZy10b3A6IDE0MHB4OyAvLyBzcGFjZSBhYm92ZSBwbGF5Z3JvdW5kIGZvciBzaWduIHRvIHByb3RydWRlXG5cbiAgJl9fc2lnbiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgIHotaW5kZXg6IDIwO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuXG4gICAgaW1nIHtcbiAgICAgIHdpZHRoOiA0MDZweDtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDZweCAxOHB4IHJnYmEoMCwwLDAsLjg1KSk7XG4gICAgfVxuICB9XG59XG5cbi5jYXB5LXBsYXlncm91bmQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGhlaWdodDogNjYwcHg7XG5cbiAgQG1lZGlhIChvcmllbnRhdGlvbjogcG9ydHJhaXQpIGFuZCAobWF4LXdpZHRoOiA3NjdweCkge1xuICAgIGhlaWdodDogODAwcHg7XG4gIH1cbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgIzFhM2EwYSAwJSwgIzJlNWMxMiA0NSUsICMzZDdhMTggMTAwJSk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcblxuICAvLyBUb3AgZmVuY2U6IHdvb2RlbiBzcHJpdGUgdGlsZSDigJQgZnVsbCB3aWR0aDsgY29ybmVyIHBvc3RzIGNvdmVyIHRoZSBlbmRzXG4gICZfX2ZlbmNlOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7IGxlZnQ6IDA7IHJpZ2h0OiAwO1xuICAgIGhlaWdodDogNjRweDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB6LWluZGV4OiAxMDtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy9hc3NldHMvaW1hZ2VzL3BsYXlncm91bmQvZmVuY2UtaC1zbS5wbmcnKTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XG4gICAgYmFja2dyb3VuZC1zaXplOiBhdXRvIDEwMCU7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdCB0b3A7XG4gICAgLy8gQ3V0b3V0IGZvciB0aGUgZW50cmFuY2Ugc2lnbiDigJQgMjg4cHggZ2FwIGNlbnRyZWQgKHBpbGxhciBvdXRlciBlZGdlcyBhdCDCsTE0NHB4KVxuICAgIC13ZWJraXQtbWFzay1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LFxuICAgICAgYmxhY2sgMCwgYmxhY2sgY2FsYyg1MCUgLSAxNDRweCksXG4gICAgICB0cmFuc3BhcmVudCBjYWxjKDUwJSAtIDE0NHB4KSwgdHJhbnNwYXJlbnQgY2FsYyg1MCUgKyAxNDRweCksXG4gICAgICBibGFjayBjYWxjKDUwJSArIDE0NHB4KSwgYmxhY2sgMTAwJVxuICAgICk7XG4gICAgbWFzay1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LFxuICAgICAgYmxhY2sgMCwgYmxhY2sgY2FsYyg1MCUgLSAxNDRweCksXG4gICAgICB0cmFuc3BhcmVudCBjYWxjKDUwJSAtIDE0NHB4KSwgdHJhbnNwYXJlbnQgY2FsYyg1MCUgKyAxNDRweCksXG4gICAgICBibGFjayBjYWxjKDUwJSArIDE0NHB4KSwgYmxhY2sgMTAwJVxuICAgICk7XG4gIH1cblxuICAvLyBCb3R0b20gZmVuY2U6IHdvb2RlbiBzcHJpdGUgdGlsZSDigJQgZnVsbCB3aWR0aDsgY29ybmVyIHBvc3RzIGNvdmVyIHRoZSBlbmRzXG4gICZfX2ZlbmNlOjphZnRlciB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvdHRvbTogMDsgbGVmdDogMDsgcmlnaHQ6IDA7XG4gICAgaGVpZ2h0OiA2NHB4O1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIHotaW5kZXg6IDEwO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnL2Fzc2V0cy9pbWFnZXMvcGxheWdyb3VuZC9mZW5jZS1oLXNtLnBuZycpO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGF1dG8gMTAwJTtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IGJvdHRvbTtcbiAgfVxuXG4gICZfX2ZlbmNlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgaW5zZXQ6IDA7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgei1pbmRleDogMTA7XG4gIH1cblxuICAvLyBMZWZ0IGZlbmNlOiB2ZXJ0aWNhbCBzcHJpdGUg4oCUIGZ1bGwgaGVpZ2h0IGluY2x1ZGluZyBjb3JuZXJzLCBzaXRzIG92ZXIgdG9wL2JvdHRvbSBmZW5jZXNcbiAgJl9fZmVuY2UtbGVmdCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDsgbGVmdDogMDsgYm90dG9tOiAwO1xuICAgIHdpZHRoOiA2NHB4O1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIHotaW5kZXg6IDExO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnL2Fzc2V0cy9pbWFnZXMvcGxheWdyb3VuZC9mZW5jZS12LnBuZycpO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgYXV0bztcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IHRvcDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWCgtMSk7IC8vIG1pcnJvciBzbyBwb3N0IHRpcHMgcG9pbnQgb3V0d2FyZCAobGVmdClcbiAgfVxuXG4gIC8vIFJpZ2h0IGZlbmNlOiBzYW1lIHRpbGUgdW4tbWlycm9yZWQg4oCUIHBvc3QgdGlwcyBwb2ludCBvdXR3YXJkIChyaWdodClcbiAgJl9fZmVuY2UtcmlnaHQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7IHJpZ2h0OiAwOyBib3R0b206IDA7XG4gICAgd2lkdGg6IDY0cHg7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgei1pbmRleDogMTE7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcvYXNzZXRzL2ltYWdlcy9wbGF5Z3JvdW5kL2ZlbmNlLXYucG5nJyk7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC15O1xuICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJSBhdXRvO1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQgdG9wO1xuICB9XG5cbiAgLy8gQ29ybmVyIHBvc3RzIOKAlCByb3BlLXdyYXBwZWQgbG9nIHBvc3QgYXQgZWFjaCBjb3JuZXIsIGFib3ZlIGFsbCBmZW5jZSB0aWxlcy5cbiAgLy8gODDDlzgwcHggKDE2cHggbGFyZ2VyIHRoYW4gNjRweCBmZW5jZSB6b25lKSBzbyB0aGUgcG9zdCBvdmVybGFwcyBib3RoIGZlbmNlIHRpbGVcbiAgLy8gZW5kcyB3aXRoIG1hcmdpbjsgbmVnYXRpdmUgb2Zmc2V0IG9mIDhweCBjZW50ZXJzIGl0IG9uIHRoZSBjb3JuZXIgYW5kIGNsaXBzIGNsZWFubHlcbiAgLy8gdmlhIHRoZSBwbGF5Z3JvdW5kJ3Mgb3ZlcmZsb3c6aGlkZGVuLiBiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlciBzaG93cyB0aGUgd2lkZXN0XG4gIC8vIHJvcGUtd3JhcHBlZCBzZWN0aW9uLCB3aGljaCBpcyBmdWxseSBvcGFxdWUgd2l0aCBubyBlZGdlIHRyYW5zcGFyZW5jeS5cbiAgJl9fcG9zdCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiA4MHB4O1xuICAgIGhlaWdodDogODBweDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB6LWluZGV4OiAxMjtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy9hc3NldHMvaW1hZ2VzL3BsYXlncm91bmQvZmVuY2UtcG9zdC5wbmcnKTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICYtLXRsIHsgdG9wOiAtOHB4OyBsZWZ0OiAtOHB4OyB9XG4gICAgJi0tdHIgeyB0b3A6IC04cHg7IHJpZ2h0OiAtOHB4OyB9XG4gICAgJi0tYmwgeyBib3R0b206IC04cHg7IGxlZnQ6IC04cHg7IH1cbiAgICAmLS1iciB7IGJvdHRvbTogLThweDsgcmlnaHQ6IC04cHg7IH1cbiAgfVxuXG4gIC8vIFJlZCBiYWxsXG4gICZfX2JhbGwge1xuICAgIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMzglIDMyJSxcbiAgICAgICNmZjlhOWEgMCUsICNlZTIyMjIgNDUlLCAjOTkwMDAwIDEwMCVcbiAgICApO1xuICAgIGJveC1zaGFkb3c6XG4gICAgICAycHggNHB4IDEwcHggcmdiYSgwLDAsMCwuNSksXG4gICAgICBpbnNldCAtM3B4IC0zcHggOHB4IHJnYmEoMCwwLDAsLjMpLFxuICAgICAgaW5zZXQgM3B4IDNweCA4cHggcmdiYSgyNTUsMjAwLDIwMCwuNCk7XG4gIH1cbn1cblxuLy8g4pSA4pSAIFN0YW5kYWxvbmUgZnVsbC1wYWdlIHBsYXlncm91bmQgKEdFVCAvcGxheWdyb3VuZCkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4ucGxheWdyb3VuZC1wYWdlIHtcbiAgcGFkZGluZzogMDtcbiAgbWF4LXdpZHRoOiBub25lO1xuICB3aWR0aDogMTAwJTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgZ3JpZC1jb2x1bW46IDEgLyAtMTsgLy8gc3BhbiBhbGwgNSBncmlkIGNvbHVtbnMgc28gd2UgZ2V0IGZ1bGwgdmlld3BvcnQgd2lkdGhcblxuICAuY2FweS1wYXJrLXdyYXAtLXN0YW5kYWxvbmUge1xuICAgIC5jYXB5LXBsYXlncm91bmQge1xuICAgICAgaGVpZ2h0OiBhdXRvOyAvLyBvdmVycmlkZSBiYXNlIGhlaWdodDo2NjBweCBzbyBhc3BlY3QtcmF0aW86MS8xIChzZXQgaW5saW5lKSBkZXRlcm1pbmVzIHRoZSBoZWlnaHRcbiAgICAgIG1pbi1oZWlnaHQ6IDUwMHB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgIGJvcmRlci1sZWZ0OiBub25lO1xuICAgICAgYm9yZGVyLXJpZ2h0OiBub25lO1xuICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICB9XG4gIH1cbn1cblxuLy8gOMOXOCBjaGVzcyBib2FyZCDigJQgZmlsbHMgdGhlIGZ1bGwgZmVuY2UtdG8tZmVuY2UgaW50ZXJpb3Igb2YgdGhlIChub3cgc3F1YXJlKSBjb250YWluZXJcbi5jYXB5LWNoZXNzYm9hcmQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNjRweDsgbGVmdDogNjRweDsgcmlnaHQ6IDY0cHg7IGJvdHRvbTogNjRweDtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoOCwgMWZyKTtcbiAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiByZXBlYXQoOCwgMWZyKTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHotaW5kZXg6IDA7XG5cbiAgJl9fc3EtLWxpZ2h0IHsgYmFja2dyb3VuZDogI2YwZDliNTsgfVxuICAmX19zcS0tZGFyayAgeyBiYWNrZ3JvdW5kOiAjYjU4ODYzOyB9XG59XG5cbi8vIFRob3VnaHQgYnViYmxlIHNob3duIHdoZW4gY2FweSBhY3RpdmF0ZXMgYSBtb3ZlbWVudCBtb2RlXG4uY2FweS1wbGF5Z3JvdW5kX19ob3RrZXlzIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDhweDtcbiAgcmlnaHQ6IDE0cHg7XG4gIHotaW5kZXg6IDI1O1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDNweDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuXG4gICZfX3JvdyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogNnB4O1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjtcbiAgICB0ZXh0LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwwLDAsMC43KTtcblxuICAgIGtiZCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIG1pbi13aWR0aDogMThweDtcbiAgICAgIGhlaWdodDogMThweDtcbiAgICAgIHBhZGRpbmc6IDAgNHB4O1xuICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjE1KTtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC40KTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgY29sb3I6ICNmZmY7XG4gICAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjtcbiAgICB9XG4gIH1cbn1cblxuLmNhcHktYnViYmxlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDEwMCU7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMjA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC4xOHMgZWFzZTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgbWFyZ2luLWJvdHRvbTogMnB4O1xuXG4gICYtLXZpc2libGUgeyBvcGFjaXR5OiAxOyB9XG5cbiAgJl9fdGV4dCB7XG4gICAgYmFja2dyb3VuZDogI2ZmZjtcbiAgICBjb2xvcjogIzMzMztcbiAgICBib3JkZXI6IDJweCBzb2xpZCAjYmJiO1xuICAgIGJvcmRlci1yYWRpdXM6IDE0cHg7XG4gICAgcGFkZGluZzogNHB4IDEwcHg7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsMCwwLDAuMzUpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gIH1cblxuICAvLyBUaHJlZSBkZWNyZWFzaW5nIGRvdHMg4oCUIHRob3VnaHQgdHJhaWwgdG93YXJkIHRoZSBjYXB5XG4gICZfX3RyYWlsIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDJweDtcbiAgICBtYXJnaW4tdG9wOiAzcHg7XG5cbiAgICBzcGFuIHtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIGJhY2tncm91bmQ6ICNmZmY7XG4gICAgICBib3JkZXI6IDEuNXB4IHNvbGlkICNiYmI7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gICAgc3BhbjpudGgtY2hpbGQoMSkgeyB3aWR0aDogN3B4OyBoZWlnaHQ6IDdweDsgfVxuICAgIHNwYW46bnRoLWNoaWxkKDIpIHsgd2lkdGg6IDVweDsgaGVpZ2h0OiA1cHg7IH1cbiAgICBzcGFuOm50aC1jaGlsZCgzKSB7IHdpZHRoOiAzcHg7IGhlaWdodDogM3B4OyB9XG4gIH1cbn1cbiIsIi50b3VyX19zaWRlIHtcbiAgQGV4dGVuZCAlZmxleC1jb2x1bW47XG5cbiAgLm1jaGF0IHtcbiAgICBmbGV4OiAxIDEgN2VtO1xuICAgIG1hcmdpbi10b3A6ICRibG9jay1nYXA7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wyKSB7XG4gICAgICBtaW4taGVpZ2h0OiBpbmhlcml0O1xuICAgIH1cbiAgfVxufVxuXG4udG91cl9fbWV0YSB7XG4gIEBleHRlbmQgJWJveC1uZWF0LWZvcmNlO1xuXG4gIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbiAgcGFkZGluZzogI3skYmxvY2stZ2FwICogMC42fSAkYmxvY2stZ2FwO1xuXG4gIHNlY3Rpb24ge1xuICAgIG1hcmdpbi1ib3R0b206ICRibG9jay1nYXA7XG5cbiAgICAmW2RhdGEtaWNvbl0ge1xuICAgICAgQGV4dGVuZCAlZmxleC1jZW50ZXItbm93cmFwO1xuICAgIH1cblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBmb250LXNpemU6IDNyZW07XG4gICAgICBtYXJnaW4tcmlnaHQ6IDQlO1xuICAgIH1cblxuICAgIHAge1xuICAgICAgbWFyZ2luOiAwO1xuICAgIH1cblxuICAgIC5zZXR1cCB7XG4gICAgICBAZXh0ZW5kICVub3dyYXAtaGlkZGVuO1xuICAgIH1cblxuICAgIHRpbWUge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG5cbiAgICAuZGVmZW5kZXI6OmJlZm9yZSB7XG4gICAgICBmb250LXNpemU6IDEuNmVtO1xuICAgICAgdmVydGljYWwtYWxpZ246IC0wLjI2ZW07XG4gICAgICBtYXJnaW46IDAgMC4xNWVtIDAgLTAuMTVlbTtcbiAgICB9XG5cbiAgICAmLmNvbmRpdGlvbnMge1xuICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgb3BhY2l0eTogMC43O1xuICAgICAgfVxuXG4gICAgICAmLmFjY2VwdGVkLFxuICAgICAgLmFjY2VwdGVkIHtcbiAgICAgICAgY29sb3I6ICRjLWdvb2Q7XG4gICAgICB9XG5cbiAgICAgICYucmVmdXNlZCxcbiAgICAgIC5yZWZ1c2VkIHtcbiAgICAgICAgY29sb3I6ICRjLWJhZDtcbiAgICAgIH1cblxuICAgICAgLmNvbmRpdGlvbjpmaXJzdC1jaGlsZCxcbiAgICAgIC5jb25kaXRpb24gKyAuY29uZGl0aW9uIHtcbiAgICAgICAgJi5hY2NlcHRlZDo6YWZ0ZXIge1xuICAgICAgICAgIGNvbnRlbnQ6ICdcXGEwXFwyNzEzJztcbiAgICAgICAgfVxuXG4gICAgICAgICYucmVmdXNlZDo6YWZ0ZXIge1xuICAgICAgICAgIGNvbnRlbnQ6ICdcXGEwXFwyNzE4JztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5kZXNjcmlwdGlvbiB7XG4gICAgQGV4dGVuZCAlYnJlYWstd29yZDtcblxuICAgIG1heC1oZWlnaHQ6IDIwdmg7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgfVxuXG4gIC50b3VyX19wcml6ZSB7XG4gICAgQGV4dGVuZCAlYm94LXJhZGl1cztcblxuICAgIHBhZGRpbmc6IDFlbSAydm1pbjtcbiAgICBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTtcbiAgICBtYXJnaW4tYm90dG9tOiAxZW07XG4gICAgZm9udC1zaXplOiAwLjllbTtcbiAgfVxufVxuXG4uY2hhdF9fbWVtYmVycyB7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xuXG4gIC8qIGZpeGVzIGludmlzaWJsZSBzcGVjdGF0b3JzIG9uIGZpcmVmb3gsIGNvbDIgKi9cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMSkge1xuICAgIG1hcmdpbjogMCAkYmxvY2stZ2FwO1xuICB9XG59XG4iLCIudG91cl9fZmVhdHVyZWQge1xuICBAZXh0ZW5kICVmbGV4LWNvbHVtbjtcblxuICAubWluaS1nYW1lX19wbGF5ZXIge1xuICAgIEBleHRlbmQgJWZsZXgtY2VudGVyLW5vd3JhcDtcblxuICAgICYgaSB7XG4gICAgICBmbGV4OiAwIDAgYXV0bztcblxuICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgY29sb3I6ICRjLWFjY2VudDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1pbmktZ2FtZV9fdXNlciB7XG4gICAgZGlzcGxheTogZmxleDtcblxuICAgIHN0cm9uZyB7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDFjaDtcbiAgICB9XG5cbiAgICAudXNlci1saW5rIHtcbiAgICAgIEBleHRlbmQgJWZsZXgtYmV0d2VlbjtcblxuICAgICAgZmxleDogMSAxIDEwMCU7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDFlbTtcbiAgICB9XG4gIH1cbn1cbiIsIi50b3VyX19ib2FyZHMge1xuICBtYXJnaW46ICRibG9jay1nYXAgMDtcbiAgZ3JpZC1nYXA6IDFjaDtcbiAgLS1ucC1taW4td2lkdGg6IDIwMHB4O1xufVxuXG4udG91cl9fYm9hcmQge1xuICBAZXh0ZW5kICVib3gtbmVhdC1mb3JjZSwgJWZsZXgtY29sdW1uO1xuXG4gIC5taW5pLWdhbWVfX3BsYXllciB7XG4gICAgQGV4dGVuZCAlZmxleC1jZW50ZXItbm93cmFwO1xuXG4gICAgcGFkZGluZzogMC4yZW07XG4gIH1cblxuICAubWluaS1nYW1lX191c2VyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgc3Ryb25nIHtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIG1hcmdpbi1yaWdodDogMWNoO1xuICAgIH1cbiAgfVxufVxuIiwiLnRvdXJfX21haW5fX2hlYWRlciB7XG4gIEBleHRlbmQgJWZsZXgtY2VudGVyLW5vd3JhcDtcblxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIG1pbi1oZWlnaHQ6IDdlbTtcbiAgcGFkZGluZzogMCAjeyRibG9jay1nYXAgKiAxLjV9O1xuXG4gIGgxIHtcbiAgICBmb250LXNpemU6IDIuMnJlbTtcbiAgICBmbGV4OiA5IDEgYXV0bztcbiAgICBtYXJnaW46IDA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgIGEge1xuICAgICAgLyogR00gd2lraXBlZGlhICovXG4gICAgICBjb2xvcjogbWl4KCRjLWxpbmssICRjLWZvbnQsIDM1JSk7XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogJGMtbGluaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpbWcge1xuICAgIGZsZXg6IDAgMCA2MHB4O1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiA2MHB4O1xuICAgIGhlaWdodDogNjBweDtcbiAgICBwYWRkaW5nOiA2cHg7XG4gIH1cblxuICAuaW1nIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDFyZW07XG4gIH1cblxuICBpOjpiZWZvcmUge1xuICAgIGZvbnQtc2l6ZTogMi4ycmVtO1xuICB9XG5cbiAgLnRvdXItc2hlZCAmIGgxIHtcbiAgICBsZXR0ZXItc3BhY2luZzogMnB4O1xuICB9XG5cbiAgLnRvdXItc2hlZC13ZWVrbHkgJiBpOjpiZWZvcmUge1xuICAgIGZvbnQtc2l6ZTogMzVweDtcbiAgfVxuXG4gIC50b3VyLXNoZWQtbW9udGhseSAmIGk6OmJlZm9yZSxcbiAgLnRvdXItc2hlZC13ZWVrZW5kICYgaTo6YmVmb3JlIHtcbiAgICBmb250LXNpemU6IDQwcHg7XG4gIH1cblxuICAudG91ci1zaGVkLXllYXJseSAmIGk6OmJlZm9yZSB7XG4gICAgZm9udC1zaXplOiA0NXB4O1xuICB9XG5cbiAgLnRvdXItc2hlZC13ZWVrZW5kICYgaDEsXG4gIC50b3VyLXNoZWQteWVhcmx5ICYgaDEge1xuICAgIGxldHRlci1zcGFjaW5nOiAzcHg7XG4gIH1cblxuICAuY2xvY2sge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGNvbG9yOiAkYy1mb250LWRpbTtcblxuICAgICYtY3JlYXRlZCB7XG4gICAgICBAZXh0ZW5kICVmbGV4LWNvbHVtbjtcblxuICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxuICB9XG5cbiAgLnRvdXItc2NoZWQgJiBoMSxcbiAgLnRvdXItc2NoZWQgJiAuaW1nIHtcbiAgICBjb2xvcjogJGMtYnJhZztcbiAgfVxuXG4gIC50b3VyX19tYWluLWZpbmlzaGVkICYgaDEge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgIC50b3VyLXNjaGVkLW1hcmF0aG9uICYge1xuICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgIH1cbiAgfVxuXG4gIC50aW1lIHtcbiAgICBAZXh0ZW5kICVyb2JvdG87XG5cbiAgICBmb250LXNpemU6IDEuNWVtO1xuICAgIG1hcmdpbi1sZWZ0OiAwLjJlbTtcbiAgfVxuXG4gIC5zaHkge1xuICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICAgIGZvbnQtc2l6ZTogMC45ZW07XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBvcGFjaXR5OiAwLjY7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgfVxuXG4gIC50b3VyLXNjaGVkLW1hcmF0aG9uICYgaDEge1xuICAgIGNvbG9yOiAjNDE2NmEwICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZy1sZWZ0OiA5MHB4O1xuICAgIGxldHRlci1zcGFjaW5nOiAycHg7XG4gIH1cblxuICAudG91ci1zY2hlZC1tYXJhdGhvbiAmIC5maXJlLXRyb3BoeSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAxMHB4O1xuICAgIHdpZHRoOiA3MHB4O1xuICAgIGhlaWdodDogODBweDtcbiAgICBvcGFjaXR5OiAwLjc7XG4gICAgdHJhbnNpdGlvbjogMXM7XG4gICAgZm9udC1mYW1pbHk6ICdsaWNoZXNzJztcbiAgICBmaWx0ZXI6IGh1ZS1yb3RhdGUoMTkwZGVnKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gIH1cblxuICAudG91ci1zY2hlZC1zaGllbGQgJiB7XG4gICAgaDEge1xuICAgICAgcGFkZGluZy1sZWZ0OiA5MHB4O1xuICAgICAgbGV0dGVyLXNwYWNpbmc6IDJweDtcblxuICAgICAgLnNoaWVsZC10cm9waHkge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogLThweDtcbiAgICAgICAgbGVmdDogMTJweDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiA2N3B4O1xuICAgICAgICBoZWlnaHQ6IDgwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHVybCguLi9pbWFnZXMvdHJvcGh5L3NoaWVsZC1nb2xkLnBuZykgbm8tcmVwZWF0O1xuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG4gICAgICAgIGZvbnQtZmFtaWx5OiAnbGljaGVzcyc7XG4gICAgICAgIGZvbnQtc2l6ZTogNDBweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDgwcHg7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgY29sb3I6ICMzMzMgIWltcG9ydGFudDtcbiAgICAgICAgdGV4dC1zaGFkb3c6IDAgMCA2cHggI2ZmZjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi50b3VyX19ub3RpY2Uge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZDogJGMtZ29vZDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nOiAwLjVlbSAwO1xuICBvcGFjaXR5OiAwLjg7XG5cbiAgJi5jbG9zZWQge1xuICAgIGJhY2tncm91bmQ6ICRjLXByaW1hcnk7XG4gIH1cbn1cblxuLnRvdXJfX3VyLXBsYXlpbmcge1xuICBAZXh0ZW5kICVmbGV4LWNvbHVtbjtcblxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMS41ZW07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAmOjpiZWZvcmUsXG4gICY6OmFmdGVyIHtcbiAgICBjb250ZW50OiAn7oGIJztcbiAgICBmb250LXNpemU6IDJyZW07XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMzBweDtcbiAgfVxuXG4gICY6OmJlZm9yZSB7XG4gICAgbGVmdDogMzBweDtcbiAgfVxuXG4gICY6OmFmdGVyIHtcbiAgICByaWdodDogMzBweDtcbiAgfVxufVxuIiwiLnRvdXJfX2NvbnRyb2xzIHtcbiAgQGV4dGVuZCAlbWV0YWwsICVmbGV4LWJldHdlZW4sICVib3gtc2hhZG93O1xuXG4gIHBhZGRpbmc6IDAgMHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLmZidCB7XG4gICAgcGFkZGluZzogMC42ZW0gMC44ZW07XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS14eC1zbWFsbCkge1xuICAgICAgcGFkZGluZzogMC42ZW0gMWVtO1xuICAgIH1cblxuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGluZS1oZWlnaHQ6IDEuMztcbiAgfVxuXG4gIEBrZXlmcmFtZXMgdG91ci1kZWxheSB7XG4gICAgMCUge1xuICAgICAgd2lkdGg6IDAlO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuICB9XG5cbiAgLmRlbGF5IHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDExNywgMTUzLCAwLCAwLjUpO1xuICAgIHdpZHRoOiAwJTtcblxuICAgIGJ1dHRvbiB7XG4gICAgICBvcGFjaXR5OiAwLjc7XG4gICAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gICAgICBtaXgtYmxlbmQtbW9kZTogbHVtaW5vc2l0eTtcbiAgICB9XG4gIH1cblxuICAuaGlnaGxpZ2h0IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IDVweDtcbiAgICB0b3A6IC0zcHg7XG4gICAgcGFkZGluZzogOHB4IDIwcHg7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiAjODJiZjU2O1xuICAgIGJvcmRlci1ib3R0b206IDVweCBzb2xpZCAjNzU5OTAwO1xuICAgIHRleHQtc2hhZG93OiAwIC0xcHggIzc1OTkwMDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4xcztcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwcHgsIDBweCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGZpbHRlcjogYnJpZ2h0bmVzcygxLjA2KTtcbiAgICB9XG5cbiAgICAmOmFjdGl2ZSB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwcHgsIDVweCk7XG4gICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7XG4gICAgICB0ZXh0LXNoYWRvdzogMCAwICM3NTk5MDA7XG4gICAgICBmaWx0ZXI6IGJyaWdodG5lc3MoMSk7XG4gICAgfVxuICB9XG5cbiAgLnNwaW5uZXIge1xuICAgIG1hcmdpbjogMDtcbiAgICB3aWR0aDogMS41ZW07XG4gICAgaGVpZ2h0OiAxLjVlbTtcbiAgICBtYXJnaW4tcmlnaHQ6IDAuN2VtO1xuICB9XG5cbiAgLnBhZ2VyIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNlbnRlcjtcblxuICAgIHVzZXItc2VsZWN0OiBub25lO1xuXG4gICAgLnBhZ2Uge1xuICAgICAgbWFyZ2luOiAwIDNweDtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgfVxuXG4gICAgaW5wdXQge1xuICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgYmFja2dyb3VuZDogZmFkZS1vdXQoJGMtc2Vjb25kYXJ5LCAwLjgpO1xuICAgIH1cblxuICAgIC5zZWFyY2gsXG4gICAgaW5wdXQge1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIH1cbiAgfVxufVxuIiwiLnRvdXJfX3N0YW5kaW5nIHtcbiAgYm9yZGVyOiBub25lO1xuXG4gIC5wbGF5ZXIge1xuICAgIHBhZGRpbmctbGVmdDogMHB4O1xuICAgIHBhZGRpbmctcmlnaHQ6IDBweDtcblxuICAgIC51c2VyLWxpbmsge1xuICAgICAgQGV4dGVuZCAlZmxleC1jZW50ZXItbm93cmFwO1xuICAgIH1cblxuICAgIC5uYW1lIHtcbiAgICAgIEBleHRlbmQgJW5vd3JhcC1lbGxpcHNpcztcblxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgcGFkZGluZy1yaWdodDogNXB4O1xuICAgICAgbWF4LXdpZHRoOiAxNDBweDtcbiAgICB9XG4gIH1cblxuICAudXNlci1saW5rLmxvbmcge1xuICAgIGxldHRlci1zcGFjaW5nOiAtMC43cHg7XG4gIH1cblxuICAudXNlci1saW5rIC5yYXRpbmcge1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICBmb250LXNpemU6IDAuOGVtO1xuICB9XG5cbiAgdHIubG9uZyAudXNlci1saW5rIC5yYXRpbmcge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmctbGVmdDogMHB4O1xuICB9XG5cbiAgdHIge1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb247XG5cbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgfVxuXG4gIC5sb2FkaW5nIHRib2R5IHtcbiAgICBvcGFjaXR5OiAwLjY7XG5cbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKG9wYWNpdHksIDAuM3MpO1xuICB9XG5cbiAgJjpub3QoLmNyZWF0ZWQpOm5vdCgubG9hZGluZykgdGJvZHkgdHI6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IG1peCgkYy1wcmltYXJ5LCAkYy1iZy1ib3gsIDMwJSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG5cbiAgdHIubWUgdGQ6Zmlyc3QtY2hpbGQge1xuICAgICRjLW1lLWJvcmRlcjogbWl4KCRjLXNlY29uZGFyeSwgJGMtYmctYm94LCA3MCUpO1xuXG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KFxuICAgICAgdG8gcmlnaHQsXG4gICAgICAkYy1tZS1ib3JkZXIgMHB4LFxuICAgICAgJGMtbWUtYm9yZGVyIDVweCxcbiAgICAgIHJnYmEoMCwgMCwgMCwgMCkgNXB4LFxuICAgICAgcmdiYSgwLCAwLCAwLCAwKSAxMDAlXG4gICAgKTtcbiAgfVxuXG4gIHRyLmFjdGl2ZSB0ZDpsYXN0LWNoaWxkIHtcbiAgICAkYy1hY3RpdmUtYm9yZGVyOiBtaXgoJGMtcHJpbWFyeSwgJGMtYmctYm94LCA3MCUpO1xuXG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KFxuICAgICAgdG8gbGVmdCxcbiAgICAgICRjLWFjdGl2ZS1ib3JkZXIgMHB4LFxuICAgICAgJGMtYWN0aXZlLWJvcmRlciA1cHgsXG4gICAgICByZ2JhKDAsIDAsIDAsIDApIDVweCxcbiAgICAgIHJnYmEoMCwgMCwgMCwgMCkgMTAwJVxuICAgICk7XG4gIH1cblxuICB0ZC5yYW5rIHtcbiAgICBwYWRkaW5nOiAxZW0gMC41ZW0gMWVtIDEwcHg7XG4gICAgd2lkdGg6IDFweDtcblxuICAgIC8qIGhlbHBzIGtlZXBpbmcgaXQgYXMgc21hbGwgYXMgcG9zc2libGUgKi9cbiAgICBpIHtcbiAgICAgIG9wYWNpdHk6IDAuNDtcbiAgICAgIGZvbnQtc2l6ZTogMC44ZW07XG4gICAgfVxuICB9XG5cbiAgLnNoZWV0IHtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4xZW07XG5cbiAgICAmID4gKiB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgfVxuXG4gICAgc2NvcmUge1xuICAgICAgb3BhY2l0eTogMC43O1xuICAgIH1cbiAgfVxuXG4gIHRyLmxvbmcgLnNoZWV0IHtcbiAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuICB9XG5cbiAgdHIueGxvbmcgLnNoZWV0IHtcbiAgICBmb250LXNpemU6IDAuODVyZW07XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcbiAgfVxuXG4gIGRvdWJsZSB7XG4gICAgY29sb3I6ICRjLWJyYWc7XG5cbiAgICAvKiBmb250LXdlaWdodDogYm9sZDsgKi9cbiAgfVxuXG4gIHN0cmVhayB7XG4gICAgY29sb3I6ICRjLXNlY29uZGFyeTtcblxuICAgIC8qIGZvbnQtd2VpZ2h0OiBib2xkOyAqL1xuICB9XG5cbiAgLnRvdGFsIHtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAkYmxvY2stZ2FwO1xuICB9XG59XG4iLCIudG91cl9fc3RhdHMge1xuICBAZXh0ZW5kICVmbGV4LWNvbHVtbiwgJWJveC1uZWF0O1xuXG4gIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbiAgcGFkZGluZzogMS43ZW0gMDtcbiAgYWxpZ24tc2VsZjogZmxleC1zdGFydDtcblxuICBoMiB7XG4gICAgZm9udC1zaXplOiAxLjVlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxZW07XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG5cbiAgdGFibGUge1xuICAgIG1hcmdpbjogYXV0bztcbiAgfVxuXG4gIHRkIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBwYWRkaW5nLWxlZnQ6IDFlbTtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICBsaW5lLWhlaWdodDogMmVtO1xuICB9XG5cbiAgJl9fbGlua3Mge1xuICAgIG1hcmdpbjogMmVtIGF1dG8gMCBhdXRvO1xuICAgIGEge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBtYXJnaW46IDAuNWVtIDA7XG4gICAgfVxuICB9XG59XG4iLCIudG91cl9fZHVlbHMge1xuICBAZXh0ZW5kICVwYWdlLXRleHQtc2hhZG93ICFvcHRpb25hbDtcblxuICBtYXJnaW46ICRibG9jay1nYXAgMCAwIDA7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMikge1xuICAgIG1hcmdpbjogMCAwIDAgJGJsb2NrLWdhcDtcbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDMpIHtcbiAgICBtYXJnaW46ICRibG9jay1nYXAgMCAwIDA7XG4gIH1cblxuICBoMiB7XG4gICAgZm9udC1zaXplOiAxLjVlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjJlbTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAycHg7XG4gIH1cblxuICBhIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNvbHVtbjtcblxuICAgIGNvbG9yOiAkYy1mb250O1xuICAgIHBhZGRpbmc6IDAuNWVtIDAuN2VtO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgbGluZS1oZWlnaHQ6IDEuOWVtO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCBtaXgoJGMtYmctcGFnZSwgJGMtYm9yZGVyLXBhZ2UsIDUwJSk7XG5cbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtbGluaywgJGMtYmctcGFnZSwgMjAlKTtcbiAgICB9XG4gIH1cblxuICBsaW5lIHtcbiAgICBAZXh0ZW5kICVmbGV4LWJldHdlZW47XG4gIH1cblxuICBzdHJvbmcge1xuICAgIEBleHRlbmQgJWVsbGlwc2lzO1xuXG4gICAgZm9udC1zaXplOiAxLjJlbTtcbiAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWF4LXdpZHRoOiA2MCU7XG4gIH1cblxuICAucmFuayB7XG4gICAgQGV4dGVuZCAlYm94LXJhZGl1cztcblxuICAgIHBhZGRpbmc6IDAuMWVtIDAuNWVtO1xuICAgIGJhY2tncm91bmQ6ICRjLWJnLXplYnJhO1xuICB9XG5cbiAgLmIgLnV0aXRsZSxcbiAgLmIgLnJhbmsge1xuICAgIG1hcmdpbi1yaWdodDogMC4zZW07XG4gIH1cblxuICAuYSAudXRpdGxlLFxuICAuYSAucmFuayB7XG4gICAgbWFyZ2luLWxlZnQ6IDAuM2VtO1xuICB9XG59XG4iLCIudG91cl9fYWN0b3ItaW5mbyB7XG4gIEBleHRlbmQgJWJveC1uZWF0LWZvcmNlO1xuXG4gIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xuXG4gIC5zcGlubmVyIHtcbiAgICBtYXJnaW46IDVlbSBhdXRvO1xuICB9XG5cbiAgLmNsb3NlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA0cHg7XG4gICAgcmlnaHQ6IDVweDtcbiAgICBvcGFjaXR5OiAwLjY7XG5cbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uO1xuXG4gICAgY29sb3I6ICRjLXJlZDtcblxuICAgICY6aG92ZXIge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gIH1cblxuICAuc3RhdHMge1xuICAgIEBleHRlbmQgJWZsZXgtY29sdW1uO1xuXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgICBoMiB7XG4gICAgICBAZXh0ZW5kICVtZXRhbDtcblxuICAgICAgZm9udC1zaXplOiAxLjRlbTtcbiAgICAgIHBhZGRpbmc6IDAuNnJlbSAxcmVtO1xuICAgICAgYm9yZGVyLWJvdHRvbTogJGJvcmRlcjtcbiAgICB9XG5cbiAgICB0YWJsZSB7XG4gICAgICBtYXJnaW46IDFlbSBhdXRvO1xuICAgIH1cblxuICAgIHRkIHtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICBsaW5lLWhlaWdodDogMS44ZW07XG5cbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIEBleHRlbmQgJXJvYm90bztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuc3VibGlzdCB7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICB0ciB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYmFja2dyb3VuZC1jb2xvcik7XG5cbiAgICAgICY6bnRoLWNoaWxkKG9kZCkge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTtcbiAgICAgIH1cblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IG1peCgkYy1saW5rLCAkYy1iZy1ib3gsIDEwJSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGgsXG4gICAgdGQge1xuICAgICAgcGFkZGluZzogMC4zZW07XG4gICAgfVxuXG4gICAgdGgge1xuICAgICAgQGV4dGVuZCAlcm9ib3RvO1xuXG4gICAgICBwYWRkaW5nLWxlZnQ6IDdweDtcbiAgICB9XG4gIH1cbn1cbiIsIi50b3VyX19wbGF5ZXItaW5mbyB7XG4gIC5wYWlyaW5ncyB7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICB0ciB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYmFja2dyb3VuZC1jb2xvcik7XG5cbiAgICAgICY6bnRoLWNoaWxkKG9kZCkge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTtcbiAgICAgIH1cblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IG1peCgkYy1saW5rLCAkYy1iZy1ib3gsIDEwJSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGgsXG4gICAgdGQge1xuICAgICAgcGFkZGluZzogMC4zZW07XG4gICAgfVxuXG4gICAgdGgge1xuICAgICAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCB0cmFuc3BhcmVudDtcblxuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcbiAgICB9XG5cbiAgICB0cjpob3ZlciB0aCB7XG4gICAgICBib3JkZXItY29sb3I6ICRjLWZvbnQ7XG4gICAgfVxuXG4gICAgdHIud2luOmhvdmVyIHRoIHtcbiAgICAgIGJvcmRlci1jb2xvcjogJGMtZ29vZDtcbiAgICB9XG5cbiAgICB0ci5sb3NzOmhvdmVyIHRoIHtcbiAgICAgIGJvcmRlci1jb2xvcjogJGMtYmFkO1xuICAgIH1cblxuICAgIHRkOm50aC1jaGlsZCgyKSB7XG4gICAgICBAZXh0ZW5kICVub3dyYXAtZWxsaXBzaXM7XG5cbiAgICAgIG1heC13aWR0aDogMjAwcHg7XG4gICAgfVxuXG4gICAgdGQ6bGFzdC1jaGlsZCB7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIG9wYWNpdHk6IDAuODtcbiAgICB9XG5cbiAgICB0ci53aW4gdGQ6bGFzdC1jaGlsZCB7XG4gICAgICBjb2xvcjogJGMtZ29vZDtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuXG4gICAgdHIubG9zcyB0ZDpsYXN0LWNoaWxkIHtcbiAgICAgIGNvbG9yOiAkYy1iYWQ7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgfVxuXG4gIC5jb2xvci1pY29uIHtcbiAgICBvcGFjaXR5OiAwLjY7XG4gIH1cbn1cbiIsIi50b3VyX190ZWFtLWluZm8ge1xuICAucGxheWVycyB7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICB0ciB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYmFja2dyb3VuZC1jb2xvcik7XG5cbiAgICAgICY6bnRoLWNoaWxkKG9kZCkge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTtcbiAgICAgIH1cblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IG1peCgkYy1saW5rLCAkYy1iZy1ib3gsIDEwJSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGgsXG4gICAgdGQge1xuICAgICAgcGFkZGluZzogMC4zZW0gMWVtO1xuICAgIH1cblxuICAgIHRkOmxhc3QtY2hpbGQge1xuICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxuXG4gICAgLnJhdGluZyB7XG4gICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICBmb250LXNpemU6IDAuOGVtO1xuICAgIH1cblxuICAgIC5sZWFkZXIge1xuICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgY29sb3I6ICRjLWJyYWc7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMC4xNWVtO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUVFQSxZQUFZO0FBa0JaLDZEQUE2RDtBQWM3RCxtQkFBbUI7QUFNbkIsa0NBQWtDO0FBRWxDLHNCQUFzQjtBQU10QixvQ0FBb0M7QUFFcEMsb0JBQW9CO0FBTXBCLGlDQUFpQztBQUVqQyxnQkFBZ0I7QUFJaEI7eUVBQ3lFO0FBR3pFLHNFQUFzRTtBQUd0RSwrQkFBK0I7QUFFL0IsZ0JBQWdCO0FBS2hCLCtCQUErQjtBQUUvQixpQkFBaUI7QUFJakIsa0JBQWtCO0FBSWxCLGNBQWM7QUFJZCxnQkFBZ0I7QUFJaEIsaUJBQWlCO0FBSWpCLCtCQUErQjtBQThCL0IsYUFBYTtBQU1iLGFBQWE7QURuSGIsNkRBQTZEO0FBYzdELG1CQUFtQjtBQUtuQixzQkFBc0I7QUFLdEIsZ0JBQWdCO0FBR2hCOzs7NkVBRzZFO0FBRzdFO3NGQUNzRjtBQUd0RixpQkFBaUI7QUFHakIsaUJBQWlCO0FBSWpCLGtCQUFrQjtBQUlsQixjQUFjO0FJbkVkLHdDQUF3QztBc0JBeEMsWUFBWTtBQWdCWixhQUFhO0FBU2Isa0JBQWtCO0FBS2xCLGtCQUFrQjtBQUtsQixhQUFhO0FFbkNiLHNEQUFzRDtBQU90RCx1RUFBdUU7QVFQdkUsQU5RQSxNTVJNLENBSUosS0FBSyxF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 */
