@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%);
}

#modal-wrap {
  box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22);
}

.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, .tour__team-standing .team team, .tour__team-standing .players {
  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;
}

#modal-overlay {
  position: fixed;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  background: rgba(0, 0, 0, 0.6);
  z-index: 109;
}

.tour__controls .pager, #modal-overlay {
  /* 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, #modal-wrap {
  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, #modal-wrap {
  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, #modal-wrap .close:hover {
  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;
}

#modal-overlay {
  justify-content: center;
}

#modal-wrap {
  background: #262421;
  position: relative;
  text-align: center;
  max-width: 100vw;
  max-height: 96vh;
}

#modal-wrap > div {
  overflow: hidden;
  overflow-y: auto;
  padding: 2rem;
}

#modal-wrap .close {
  color: #bababa;
  position: absolute;
  font-size: 16px;
  line-height: 28px;
  width: 32px;
  height: 32px;
  cursor: pointer;
  top: 0;
  right: 0;
  background: none;
}

@media (min-width: 800px) {
  #modal-wrap .close {
    top: -12px;
    right: -12px;
    background: #3c3934;
    border-radius: 50%;
  }
}

#modal-wrap .close:hover {
  background: #cc3333;
  color: #fff;
}

team {
  padding: 1px 5px;
  font-size: 0.8em;
  font-weight: bold;
  color: #bf811d;
}

team.ttc-0 {
  color: #a42eff;
}

team.ttc-1 {
  color: #5757ff;
}

team.ttc-2 {
  color: #008000;
}

team.ttc-3 {
  color: #b22222;
}

team.ttc-4 {
  color: #ec7a51;
}

team.ttc-5 {
  color: #9acd32;
}

team.ttc-6 {
  color: #ff4500;
}

team.ttc-7 {
  color: #2e8b57;
}

team.ttc-8 {
  color: #daa520;
}

team.ttc-9 {
  color: #d27e1e;
}

.tour__player-info team {
  margin: 1rem auto 0 auto;
  padding: 0.15rem 0.8rem;
  font-size: 1em;
  cursor: pointer;
}

.tour__standing .rating {
  padding-right: 5px;
}

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

.tour__team-standing tbody tr:nth-child(even) {
  background: #262421;
}

.tour__team-standing .team {
  cursor: pointer;
}

.tour__team-standing .team:hover {
  color: #3692e7;
}

.tour__team-standing .team team {
  font-size: 1rem;
}

.tour__team-standing .players {
  color: #999999;
}

.tour__team-standing score {
  font-weight: bold;
  padding: 0 2px;
  cursor: pointer;
}

.tour__team-standing score:hover {
  color: #bf811d;
}

.tour__team-standing score.top username {
  font-weight: normal;
}

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

.tour__team-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__main .tour__team-standing tr:hover {
  background: #2b455d !important;
}

.tour__team-standing td {
  padding: 1rem 0.5rem;
}

.tour__team-standing .more-teams {
  padding: 0 !important;
}

.tour__team-standing .more-teams a {
  padding: 1rem 0;
  display: block;
  text-align: center;
}

.tour__team-standing--full td {
  padding: 2rem 1rem;
}

.tour__team-standing--full td.team {
  color: #bf811d;
  font-weight: bold;
}

.team-battle__list a {
  display: block;
}

.team-battle__choice button {
  width: 100%;
  margin-top: 1rem;
}

.tour__duels team {
  line-height: normal;
}

.team-picker ul {
  text-align: left;
  font-size: 1.1em;
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG91cm5hbWVudC9jc3MvYnVpbGQvdG91cm5hbWVudC5zaG93LnRlYW0tYmF0dGxlLmRhcmsuY3NzIiwic291cmNlcyI6WyJ0b3VybmFtZW50L2Nzcy9idWlsZC90b3VybmFtZW50LnNob3cudGVhbS1iYXR0bGUuZGFyay5zY3NzIiwiY29tbW9uL2Nzcy90aGVtZS9fZGFyay5zY3NzIiwiY29tbW9uL2Nzcy90aGVtZS9fZGVmYXVsdC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fZnVuY3Rpb25zLnNjc3MiLCJ0b3VybmFtZW50L2Nzcy9idWlsZC9fdG91cm5hbWVudC5zaG93LnRlYW0tYmF0dGxlLnNjc3MiLCJ0b3VybmFtZW50L2Nzcy9idWlsZC9fdG91cm5hbWVudC5zaG93LnNjc3MiLCJjb21tb24vY3NzL19wbHVnaW4uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvX2JyZWFrcG9pbnQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fc2V0dGluZ3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fY29udGV4dC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19oZWxwZXJzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX3BhcnNlcnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL19xdWVyeS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3NpbmdsZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvc2luZ2xlL19kZWZhdWx0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fZG91YmxlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQtcGFpci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvZG91YmxlL19kb3VibGUtc3RyaW5nLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL190cmlwbGUuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3RyaXBsZS9fZGVmYXVsdC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3Jlc29sdXRpb24vX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fbm8tcXVlcnkuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fcmVzcG9uZC10by5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19sZWdhY3ktc2V0dGluZ3Muc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX2FsbC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fei1pbmRleC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fbWVkaWEtcXVlcmllcy5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fdmFyaWFibGVzLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L191bmlib2FyZC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fbWl4aW5zLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19leHRlbmRzLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19mbGV4LnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19ib3guc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX2ZsdWlkLXNpemUuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19mYnQuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19iYXItZ2xpZGVyLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fc2xpc3Quc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19xdW90ZS5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX2ZpcmUtdHJvcGh5LnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fY29sb3ItaWNvbi5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX2NvbnRleHQtc3RyZWFtZXIuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19wb2RpdW0uc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19ub3ctcGxheWluZy5zY3NzIiwiY2hhdC9jc3MvX2NoYXQuc2NzcyIsImNvbW1vbi9jc3MvYmFzZS9fc2Nyb2xsYmFyLnNjc3MiLCJjaGF0L2Nzcy9fdGFiLnNjc3MiLCJjaGF0L2Nzcy9fbWVtYmVycy5zY3NzIiwiY2hhdC9jc3MvX2Rpc2N1c3Npb24uc2NzcyIsImNoYXQvY3NzL19wYWxhbnRpci5zY3NzIiwidG91cm5hbWVudC9jc3MvX3Nob3cuc2NzcyIsInRvdXJuYW1lbnQvY3NzL19sYXlvdXQuc2NzcyIsInRvdXJuYW1lbnQvY3NzL19zaWRlLnNjc3MiLCJ0b3VybmFtZW50L2Nzcy9fZmVhdHVyZWQuc2NzcyIsInRvdXJuYW1lbnQvY3NzL19ib2FyZHMuc2NzcyIsInRvdXJuYW1lbnQvY3NzL19hcHAtaGVhZGVyLnNjc3MiLCJ0b3VybmFtZW50L2Nzcy9fYXBwLW5vdGljZS5zY3NzIiwidG91cm5hbWVudC9jc3MvX2FwcC1jb250cm9sLnNjc3MiLCJ0b3VybmFtZW50L2Nzcy9fYXBwLXN0YW5kaW5nLnNjc3MiLCJ0b3VybmFtZW50L2Nzcy9fc3RhdHMuc2NzcyIsInRvdXJuYW1lbnQvY3NzL19kdWVsLnNjc3MiLCJ0b3VybmFtZW50L2Nzcy9fYWN0b3ItaW5mby5zY3NzIiwidG91cm5hbWVudC9jc3MvX3BsYXllci1pbmZvLnNjc3MiLCJ0b3VybmFtZW50L2Nzcy9fdGVhbS1pbmZvLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fbW9kYWwuc2NzcyIsInRvdXJuYW1lbnQvY3NzL190ZWFtLWJhdHRsZS5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvdGhlbWUvZGFyayc7XG5AaW1wb3J0ICd0b3VybmFtZW50LnNob3cudGVhbS1iYXR0bGUnO1xuIiwiQGltcG9ydCAnZGVmYXVsdCc7XG5cbiR0aGVtZTogJ2RhcmsnO1xuJGNvbG9yLXNjaGVtZTogJ2RhcmsnO1xuJHRoZW1lLWxpZ2h0OiBmYWxzZTtcbiR0aGVtZS1kYXJrOiB0cnVlO1xuXG5AZnVuY3Rpb24gYy1kaW1tZXIoJGNvbG9yLCAkd2VpZ2h0OiAyMCUpIHtcbiAgQHJldHVybiBtaXgoIzAwMCwgJGNvbG9yLCAkd2VpZ2h0KTtcbn1cblxuQGZ1bmN0aW9uIGMtY2xlYXJlcigkY29sb3IsICR3ZWlnaHQ6IDIwJSkge1xuICBAcmV0dXJuIG1peCgjZmZmLCAkY29sb3IsICR3ZWlnaHQpO1xufVxuXG4kYy1iZy1wYWdlOiBoc2woJGMtc2l0ZS1odWUsIDEwJSwgOCUpO1xuJGMtYmctaGlnaDogaHNsKCRjLXNpdGUtaHVlLCA3JSwgMTQlKTtcbiRjLWJnLWxvdzogaHNsKCRjLXNpdGUtaHVlLCA3JSwgMjIlKTtcblxuLyogZXZlbiByb3dzIGluIGxpc3Qgb3IgdGFibGVzLCBzdWJ0bGUgc2hhZGUgb2YgJGMtYmctaGlnaCAqL1xuJGMtYmctemVicmE6IGhzbCgkYy1zaXRlLWh1ZSwgNSUsIDE4JSk7XG4kYy1iZy16ZWJyYTI6IGhzbCgkYy1zaXRlLWh1ZSwgNSUsIDIzJSk7XG5cbiRjLWJvZHktZ3JhZGllbnQ6IGhzbCgkYy1zaXRlLWh1ZSwgMTIlLCAxNiUpO1xuXG4kYy1mb250OiBoc2woMCwgMCUsIDczJSk7XG4kYy1mb250LWRpbTogYy1saWdodCgkYy1mb250LCA2MCUpO1xuJGMtZm9udC1kaW1tZXI6IGMtbGlnaHQoJGMtZm9udCwgNDIlKTtcbiRjLWZvbnQtY2xlYXI6IGMtbGlnaHQoJGMtZm9udCwgODAlKTtcbiRjLWZvbnQtY2xlYXJlcjogYy1saWdodCgkYy1mb250LCA4OSUpO1xuJGMtc2hhZGU6IGMtbGlnaHQoJGMtZm9udCwgMzAlKTtcbiRjLWZvbnQtcGFnZTogJGMtZm9udC1kaW07XG5cbi8qIFByaW1hcnk6IGJsdWUgKi9cbiRjLXByaW1hcnk6IGhzbCgyMDksIDc5JSwgNTYlKTtcbiRjLXByaW1hcnktZGltOiBjLWRpbW1lcigkYy1wcmltYXJ5LCAxNSUpO1xuJGMtcHJpbWFyeS1jbGVhcjogYy1jbGVhcmVyKCRjLXByaW1hcnkpO1xuXG4vKiBTZWNvbmRhcnk6IGdyZWVuICovXG4kYy1zZWNvbmRhcnk6IGhzbCg4OCwgNjIlLCAzNyUpO1xuJGMtc2Vjb25kYXJ5LWRpbTogYy1kaW1tZXIoJGMtc2Vjb25kYXJ5KTtcbiRjLXNlY29uZGFyeS1kaW1tZXI6IGMtZGltbWVyKCRjLXNlY29uZGFyeSwgNDAlKTtcblxuLyogQnJhZzogZ29sZCAqL1xuJGMtYnJhZzogaHNsKDM3LCA3NCUsIDQzJSk7XG5cbi8qIE51bWJlciBkcmF3biBvbiB0aGUgc3RyZWFrIHdpbmdzOiBzaWx2ZXIgd2l0aCBhIGhpZ2hsaWdodCBhYm92ZSBhbmQgYSBzaGFkZVxuICAgYmVsb3csIHNvIGl0IHJlYWRzIGFzIGJydXNoZWQgbWV0YWwgcmF0aGVyIHRoYW4gZmxhdCBncmV5LiBHcmFkaWVudCB0ZXh0IGlzIG5vdFxuICAgYW4gb3B0aW9uIC0gYmFja2dyb3VuZC1jbGlwOnRleHQgcGFpbnRzIGFsbW9zdCBub3RoaW5nIGluc2lkZSB0aGUgZmxleC1jb250YWluZXJcbiAgIHBzZXVkbyB0aGF0IGRyYXdzIHRoaXMgbnVtYmVyLiBjb2hlbmNoZXNzIGFuZCB0cmFuc3AgQGltcG9ydCB0aGlzIGZpbGUuICovXG4kYy1zdHJlYWs6ICNkNWQ5ZGY7XG4kYy1zdHJlYWstc2hhZG93OiAwIC0wLjVweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45MiksIDAgMC43cHggMC4zNXB4IHJnYmEoMCwgMCwgMCwgMC44KTtcbi8qIFRoZSBzaGluZSB0cmVhdG1lbnQgY2xpcHMgdGhlIGdyYWRpZW50IHRvIHRoZSBnbHlwaHMsIGFuZCBhIHRleHQtc2hhZG93IHdvdWxkXG4gICBwYWludCBvdmVyIHRoYXQgY2xpcHBlZCBiYWNrZ3JvdW5kIC0gc28gdGhlIHNhbWUgYmV2ZWwgaXMgZXhwcmVzc2VkIGFzIGEgZmlsdGVyLiAqL1xuJGMtc3RyZWFrLWZpbHRlcjogZHJvcC1zaGFkb3coMCAtMC40NXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpKSBkcm9wLXNoYWRvdygwIDAuNXB4IDAuNHB4IHJnYmEoMCwgMCwgMCwgMC43NSkpO1xuXG4vKiBGYW5jeTogcGluayAqL1xuJGMtZmFuY3k6IGhzbCgyOTQsIDYyJSwgNDglKTtcblxuLyogR29vZDogZ3JlZW4gKi9cbiRjLWdvb2Q6ICRjLXNlY29uZGFyeTtcbiRjLWdvb2Qtb3ZlcjogJGMtc2Vjb25kYXJ5LW92ZXI7XG5cbi8qIFdhcm46IG9yYW5nZSAqL1xuJGMtd2FybjogJGMtYnJhZztcbiRjLXdhcm4tb3ZlcjogJGMtYnJhZy1vdmVyO1xuXG4vKiBCYWQ6IHJlZCAqL1xuJGMtYmFkOiAkYy1lcnJvcjtcbiRjLWJhZC1vdmVyOiAkYy1lcnJvci1vdmVyO1xuXG4kYy1saW5rOiAkYy1wcmltYXJ5O1xuJGMtbGluay1kaW06ICRjLXByaW1hcnktZGltO1xuJGMtbGluay1jbGVhcjogJGMtcHJpbWFyeS1jbGVhcjtcbiRjLWxpbmstaG92ZXI6IGMtY2xlYXJlcihzYXR1cmF0ZSgkYy1wcmltYXJ5LCAxMDAlKSwgMjUlKTtcblxuJGMtYmctYm94OiAkYy1iZy1oaWdoO1xuJGMtYmctYm94LW9wYXF1ZTogJGMtYmctYm94O1xuJGMtYmctaW5wdXQ6IGMtbGlnaHQoJGMtYmctcGFnZSwgMTMlKTtcblxuJGMtYmctcG9wdXA6ICRjLWJnLWxvdztcbiRjLXBvcHVwOiAkYy1mb250LWNsZWFyO1xuXG4kYy1iZy1oZWFkZXItZHJvcGRvd246ICRjLWJnLXBvcHVwO1xuJGMtaGVhZGVyLWRyb3Bkb3duOiAkYy1wb3B1cDtcblxuJGMtYm90OiAkYy1mYW5jeTtcblxuJGMtcGFnZS1pbnB1dDogJGMtYmctYm94O1xuXG4kYy1ib3JkZXI6IGhzbCgwLCAwJSwgMjUlKTtcbiRjLWJvcmRlci1wYWdlOiBoc2woMCwgMCUsIDIyJSk7XG4kYm9yZGVyOiAkYm9yZGVyLXdpZHRoICRib3JkZXItc3R5bGUgJGMtYm9yZGVyO1xuXG4kYy1mb250LXNoYWRvdzogYmxhY2s7XG4kdGV4dC1zaGFkb3c6IG5vbmU7XG5cbkBtaXhpbiBtZXRhbC1iZyB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIGhzbCgkYy1zaXRlLWh1ZSwgNyUsIDIyKSwgaHNsKCRjLXNpdGUtaHVlLCA1JSwgMTkpIDEwMCUpO1xufVxuXG5AbWl4aW4gbWV0YWwge1xuICBAaW5jbHVkZSBtZXRhbC1iZztcbn1cblxuQG1peGluIG1ldGFsLWhvdmVyIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgaHNsKCRjLXNpdGUtaHVlLCA3JSwgMjUpLCBoc2woJGMtc2l0ZS1odWUsIDUlLCAyMikgMTAwJSk7XG4gIGNvbG9yOiAkYy1mb250LWNsZWFyO1xufVxuXG5AbWl4aW4gcGFnZS1tZXRhbCB7XG4gIEBpbmNsdWRlIG1ldGFsO1xufVxuXG5AbWl4aW4gcGFnZS1tZXRhbC1ob3ZlciB7XG4gIEBpbmNsdWRlIG1ldGFsLWhvdmVyO1xufVxuXG5AbWl4aW4gdGhlbWUtc3R5bGUge1xufVxuIiwiQGltcG9ydCAnLi4vYWJzdHJhY3QvZnVuY3Rpb25zJztcblxuLyogQ29sb3JzICovXG5cbkBmdW5jdGlvbiBjLWRpbW1lcigkY29sb3IsICR3ZWlnaHQ6IDE3JSkge1xuICBAcmV0dXJuIG1peCgjZmZmLCAkY29sb3IsICR3ZWlnaHQpO1xufVxuXG5AZnVuY3Rpb24gYy1jbGVhcmVyKCRjb2xvciwgJHdlaWdodDogMTclKSB7XG4gIEByZXR1cm4gbWl4KCMwMDAsICRjb2xvciwgJHdlaWdodCk7XG59XG5cbiRjLXNpdGUtaHVlOiAzNztcblxuJGMtYmctcGFnZTogaHNsKCRjLXNpdGUtaHVlLCAxMCUsIDkyJSk7XG5cbi8vIGhzbCgyMTAsIDE3JSwgOTUlKVxuJGMtYmctaGlnaDogaHNsKDAsIDAlLCAxMDAlKTtcbiRjLWJnLWxvdzogaHNsKDAsIDAlLCA4OSUpO1xuXG4vKiBldmVuIHJvd3MgaW4gbGlzdCBvciB0YWJsZXMsIHN1YnRsZSBzaGFkZSBvZiAkYy1iZy1oaWdoICovXG4kYy1iZy16ZWJyYTogaHNsKCRjLXNpdGUtaHVlLCAxMiUsIDk2LjUlKTtcbiRjLWJnLXplYnJhMjogaHNsKCRjLXNpdGUtaHVlLCAxMiUsIDkyJSk7XG5cbiRjLWJvZHktZ3JhZGllbnQ6IGhzbCgkYy1zaXRlLWh1ZSwgMTIlLCA4NCUpO1xuXG4kYy1mb250OiBoc2woMCwgMCUsIDMwJSk7XG4kYy1mb250LWRpbTogYy1saWdodCgkYy1mb250LCA0NyUpO1xuJGMtZm9udC1kaW1tZXI6IGMtbGlnaHQoJGMtZm9udCwgNzAlKTtcbiRjLWZvbnQtY2xlYXI6IGMtbGlnaHQoJGMtZm9udCwgMTIlKTtcbiRjLWZvbnQtY2xlYXJlcjogYy1saWdodCgkYy1mb250LCAwJSk7XG4kYy1zaGFkZTogYy1kaW1tZXIoJGMtZm9udCwgODAlKTtcbiRjLWZvbnQtcGFnZTogYy1saWdodCgkYy1mb250LCAzNyUpO1xuXG4vKiBQcmltYXJ5OiBibHVlICovXG4kYy1wcmltYXJ5OiBoc2woMjA5LCA3NyUsIDQ2JSk7XG4kYy1wcmltYXJ5LWRpbTogYy1kaW1tZXIoJGMtcHJpbWFyeSk7XG4kYy1wcmltYXJ5LWNsZWFyOiBjLWNsZWFyZXIoJGMtcHJpbWFyeSk7XG4kYy1wcmltYXJ5LW92ZXI6ICNmZmY7XG5cbi8qIHRleHQgb3ZlciBwcmltYXJ5IGJhY2tncm91bmQgKi9cblxuLyogU2Vjb25kYXJ5OiBncmVlbiAqL1xuJGMtc2Vjb25kYXJ5OiBoc2woODgsIDYyJSwgMzclKTtcbiRjLXNlY29uZGFyeS1kaW06IGMtZGltbWVyKCRjLXNlY29uZGFyeSk7XG4kYy1zZWNvbmRhcnktZGltbWVyOiBjLWRpbW1lcigkYy1zZWNvbmRhcnksIDQwJSk7XG4kYy1zZWNvbmRhcnktb3ZlcjogI2ZmZjtcblxuLyogdGV4dCBvdmVyIHNlY29uZGFyeSBiYWNrZ3JvdW5kICovXG5cbi8qIEFjY2VudDogb3JhbmdlICovXG4kYy1hY2NlbnQ6IGhzbCgyMiwgMTAwJSwgNDIlKTtcbiRjLWFjY2VudC1kaW06IGMtZGltbWVyKCRjLWFjY2VudCk7XG4kYy1hY2NlbnQtY2xlYXI6IGMtY2xlYXJlcigkYy1hY2NlbnQpO1xuJGMtYWNjZW50LW92ZXI6ICNmZmY7XG5cbi8qIHRleHQgb3ZlciBhY2NlbnQgYmFja2dyb3VuZCAqL1xuXG4vKiBCcmFnOiBnb2xkICovXG4kYy1icmFnOiBoc2woMzcsIDc0JSwgNDglKTtcbiRjLWJyYWctb3ZlcjogI2ZmZjtcblxuLyogTnVtYmVyIGRyYXduIG9uIHRoZSBzdHJlYWsgd2luZ3MuIERhcmsgaW5rIHJlYWRzIGFnYWluc3QgdGhlIGdvbGQ7IGRhcmsgdGhlbWVzXG4gICAoZGFyaywgY29oZW5jaGVzcywgdHJhbnNwKSBvdmVycmlkZSB0aGlzIHBhaXIgd2l0aCBtZXRhbGxpYyBzaWx2ZXIuICovXG4kYy1zdHJlYWs6ICMwMDA7XG4kYy1zdHJlYWstc2hhZG93OiBub25lO1xuLyogU2FtZSBiZXZlbCBhZ2FpbiwgZm9yIGJyb3dzZXJzIHRoYXQgdGFrZSB0aGUgZ3JhZGllbnQtY2xpcCBwYXRoLiAqL1xuJGMtc3RyZWFrLWZpbHRlcjogbm9uZTtcblxuLyogdGV4dCBvdmVyIGJyYWcgYmFja2dyb3VuZCAqL1xuXG4vKiBFcnJvcjogcmVkICovXG4kYy1yZWQ6IGhzbCgwLCA2MCUsIDUwJSk7XG4kYy1lcnJvcjogJGMtcmVkO1xuJGMtZXJyb3Itb3ZlcjogI2ZmZjtcblxuLyogdGV4dCBvdmVyIGJyYWcgYmFja2dyb3VuZCAqL1xuXG4vKiBHb29kOiBncmVlbiAqL1xuJGMtZ29vZDogJGMtc2Vjb25kYXJ5O1xuJGMtZ29vZC1vdmVyOiAkYy1zZWNvbmRhcnktb3ZlcjtcblxuLyogV2Fybjogb3JhbmdlICovXG4kYy13YXJuOiAkYy1icmFnO1xuJGMtd2Fybi1vdmVyOiAkYy1icmFnLW92ZXI7XG5cbi8qIEJhZDogcmVkICovXG4kYy1iYWQ6ICRjLWVycm9yO1xuJGMtYmFkLW92ZXI6ICRjLWVycm9yLW92ZXI7XG5cbi8qIEhlYXJ0OiByZWQgKi9cbiRjLWhlYXJ0OiAkYy1lcnJvcjtcbiRjLWhlYXJ0LW92ZXI6ICRjLWVycm9yLW92ZXI7XG5cbi8qIEZhbmN5OiBwaW5rICovXG4kYy1mYW5jeTogaHNsKDI5NCwgNjElLCA2MiUpO1xuJGMtZmFuY3ktb3Zlcjogd2hpdGU7XG5cbi8qIHRleHQgb3ZlciBicmFnIGJhY2tncm91bmQgKi9cblxuJGMtbGluazogJGMtcHJpbWFyeTtcbiRjLWxpbmstZGltOiAkYy1wcmltYXJ5LWRpbTtcbiRjLWxpbmstY2xlYXI6ICRjLXByaW1hcnktY2xlYXI7XG4kYy1saW5rLWhvdmVyOiBjLWNsZWFyZXIoc2F0dXJhdGUoJGMtcHJpbWFyeSwgMTAwJSksIDM1JSk7XG4kYy1saW5rLW92ZXI6ICRjLXByaW1hcnktb3ZlcjtcblxuJGMtYmctYm94OiAkYy1iZy1oaWdoO1xuJGMtYmctYm94LW9wYXF1ZTogJGMtYmctYm94O1xuJGMtYmctaW5wdXQ6IGMtbGlnaHQoJGMtYmctcGFnZSwgOTglKTtcblxuJGMtYm9yZGVyOiBoc2woMCwgMCUsIDg1JSk7XG4kYy1ib3JkZXItcGFnZTogaHNsKDAsIDAlLCA4MCUpO1xuXG4kYy1wYWdlLW1hc2s6IGhzbGEoMCwgMCwgMCUsIDAuNik7XG5cbiRjLWJnLXBvcHVwOiAkYy1iZy1oaWdoO1xuJGMtcG9wdXA6ICRjLWZvbnQ7XG5cbiRjLWJnLWhlYWRlci1kcm9wZG93bjogJGMtYmctcG9wdXA7XG4kYy1oZWFkZXItZHJvcGRvd246ICRjLXBvcHVwO1xuXG4kYy1mb250LXNoYWRvdzogd2hpdGU7XG4kdGV4dC1zaGFkb3c6IDAgMXB4IDAgJGMtZm9udC1zaGFkb3c7XG5cbiRjLWJvdDogJGMtZmFuY3k7XG5cbiRjLXBhZ2UtaW5wdXQ6ICRjLWJnLWxvdztcblxuLyogQm9yZGVycyAqL1xuXG4kYm9yZGVyLXdpZHRoOiAxcHg7XG4kYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiRib3JkZXI6ICRib3JkZXItd2lkdGggJGJvcmRlci1zdHlsZSAkYy1ib3JkZXI7XG5cbi8qIFNoYWRvd3MgKi9cblxuJGJveC1zaGFkb3c6IDAgMnB4IDJweCAwIHJnYmEoMCwgMCwgMCwgMC4xNCksIDAgM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMCAxcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKTtcblxuLy8gJGJveC1zaGFkb3c6IDAgMnB4IDJweCAwIHJnYmEoMCwwLDAsLjE1Nyk7XG4iLCJAZnVuY3Rpb24gYy1saWdodCgkY29sb3IsICR2YWx1ZSkge1xuICBAcmV0dXJuIGNoYW5nZS1jb2xvcigkY29sb3IsICRsaWdodG5lc3M6ICR2YWx1ZSk7XG59XG5cbkBmdW5jdGlvbiBpbWctdXJsKCRwYXRoKSB7XG4gIEByZXR1cm4gdXJsKCcjeyRpbWctcGF0aH0vI3skcGF0aH0nKTtcbn1cbiIsIkBpbXBvcnQgJ3RvdXJuYW1lbnQuc2hvdyc7XG5AaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9tb2RhbCc7XG5AaW1wb3J0ICcuLi90ZWFtLWJhdHRsZSc7XG4iLCJAaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL3BsdWdpbic7XG5AaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9mYnQnO1xuQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy9jb21wb25lbnQvYmFyLWdsaWRlcic7XG5AaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9zbGlzdCc7XG5AaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9xdW90ZSc7XG5AaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9maXJlLXRyb3BoeSc7XG5AaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9jb2xvci1pY29uJztcbkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L2NvbnRleHQtc3RyZWFtZXInO1xuQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy9jb21wb25lbnQvcG9kaXVtJztcbkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L25vdy1wbGF5aW5nJztcbkBpbXBvcnQgJy4uLy4uLy4uL2NoYXQvY3NzL2NoYXQnO1xuQGltcG9ydCAnLi4vc2hvdyc7XG4iLCIvKiBDb21tb24gaW1wb3J0cyBmb3IgYWxsIENTUyBtb2R1bGVzICovXG5cbkBpbXBvcnQgJy4uLy4uLy4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludCc7XG5cbkBpbXBvcnQgJ2Fic3RyYWN0L2FsbCc7XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIERlZmF1bHQgVmFyaWFibGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRCcmVha3BvaW50LVNldHRpbmdzOiAoXG4gICdkZWZhdWx0IG1lZGlhJzogYWxsLFxuICAnZGVmYXVsdCBmZWF0dXJlJzogbWluLXdpZHRoLFxuICAnZGVmYXVsdCBwYWlyJzogd2lkdGgsXG5cbiAgJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJzogZmFsc2UsXG4gICd0byBlbXMnOiBmYWxzZSxcbiAgJ3RyYW5zZm9ybSByZXNvbHV0aW9ucyc6IHRydWUsXG5cbiAgJ25vIHF1ZXJpZXMnOiBmYWxzZSxcbiAgJ25vIHF1ZXJ5IGZhbGxiYWNrcyc6IGZhbHNlLFxuXG4gICdiYXNlIGZvbnQgc2l6ZSc6IDE2cHgsXG5cbiAgJ2xlZ2FjeSBzeW50YXgnOiBmYWxzZVxuKTtcblxuJGJyZWFrcG9pbnQ6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcImJyZWFrcG9pbnQvc2V0dGluZ3NcIjtcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvY29udGV4dCc7XG5AaW1wb3J0ICdicmVha3BvaW50L2hlbHBlcnMnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9wYXJzZXJzJztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvbm8tcXVlcnknO1xuXG5AaW1wb3J0ICdicmVha3BvaW50L3Jlc3BvbmQtdG8nO1xuXG5AaW1wb3J0IFwiYnJlYWtwb2ludC9sZWdhY3ktc2V0dGluZ3NcIjtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IE1peGluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuQG1peGluIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkbm8tcXVlcnk6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIGxlZ2FjeS1zZXR0aW5ncy13YXJuaW5nO1xuXG4gIC8vIFJlc2V0IGNvbnRleHRzXG4gIEBpbmNsdWRlIHByaXZhdGUtYnJlYWtwb2ludC1yZXNldC1jb250ZXh0cygpO1xuXG4gICRicmVha3BvaW50OiBicmVha3BvaW50KCRxdWVyeSwgZmFsc2UpO1xuXG4gICRxdWVyeS1zdHJpbmc6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdxdWVyeScpO1xuICAkcXVlcnktZmFsbGJhY2s6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdmYWxsYmFjaycpO1xuXG4gICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdjb250ZXh0IGhvbGRlcicpICFnbG9iYWw7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdxdWVyeSBjb3VudCcpICFnbG9iYWw7XG5cbiAgLy8gQWxsb3cgZm9yIGFuIGFzLW5lZWRlZCBvdmVycmlkZSBvciB1c2FnZSBvZiBubyBxdWVyeSBmYWxsYmFjay5cbiAgQGlmICRuby1xdWVyeSAhPSBmYWxzZSB7XG4gICAgJHF1ZXJ5LWZhbGxiYWNrOiAkbm8tcXVlcnk7XG4gIH1cblxuICBAaWYgJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlIHtcbiAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgnbm8tcXVlcnknLCAkcXVlcnktZmFsbGJhY2spO1xuICB9XG5cbiAgLy8gUHJpbnQgT3V0IFF1ZXJ5IFN0cmluZ1xuICBAaWYgbm90IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykge1xuICAgIEBtZWRpYSAjeyRxdWVyeS1zdHJpbmd9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykgIT0gZmFsc2Ugb3IgYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJpZXMnKSA9PSB0cnVlIHtcblxuICAgICR0eXBlOiB0eXBlLW9mKGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSk7XG4gICAgJHByaW50OiBmYWxzZTtcblxuICAgIEBpZiAoJHR5cGUgPT0gJ2Jvb2wnKSB7XG4gICAgICAkcHJpbnQ6IHRydWU7XG4gICAgfVxuICAgIEBlbHNlIGlmICgkdHlwZSA9PSAnc3RyaW5nJykge1xuICAgICAgQGlmICRxdWVyeS1mYWxsYmFjayA9PSBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgICAgICAkcHJpbnQ6IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICgkdHlwZSA9PSAnbGlzdCcpIHtcbiAgICAgIEBlYWNoICR3cmFwcGVyIGluIGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSB7XG4gICAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgPT0gJHdyYXBwZXIge1xuICAgICAgICAgICRwcmludDogdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFdyaXRlIEZhbGxiYWNrXG4gICAgQGlmICgkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2UpIGFuZCAoJHByaW50ID09IHRydWUpIHtcbiAgICAgICR0eXBlLWZhbGxiYWNrOiB0eXBlLW9mKCRxdWVyeS1mYWxsYmFjayk7XG5cbiAgICAgIEBpZiAoJHR5cGUtZmFsbGJhY2sgIT0gJ2Jvb2wnKSB7XG4gICAgICAgICN7JHF1ZXJ5LWZhbGxiYWNrfSAmIHtcbiAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMoKTtcbn1cblxuXG5AbWl4aW4gbXEoJHF1ZXJ5LCAkbm8tcXVlcnk6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBIYXMgU2V0dGluZ1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1oYXMoJHNldHRpbmcpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50LCAkc2V0dGluZykge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdldCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1nZXQoJHNldHRpbmcpIHtcbiAgQGlmIGJyZWFrcG9pbnQtaGFzKCRzZXR0aW5nKSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRicmVha3BvaW50LCAkc2V0dGluZyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkQnJlYWtwb2ludC1TZXR0aW5ncywgJHNldHRpbmcpO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpZiAoc3RyLWluZGV4KCRzZXR0aW5nLCAnLScpIG9yIHN0ci1pbmRleCgkc2V0dGluZywgJ18nKSkgYW5kIHN0ci1pbmRleCgkc2V0dGluZywgJyAnKSA9PSBudWxsIHtcbiAgICBAd2FybiBcIldvcmRzIGluIEJyZWFrcG9pbnQgc2V0dGluZ3Mgc2hvdWxkIGJlIHNlcGFyYXRlZCBieSBzcGFjZXMsIG5vdCBkYXNoZXMgb3IgdW5kZXJzY29yZXMuIFBsZWFzZSByZXBsYWNlIGRhc2hlcyBhbmQgdW5kZXJzY29yZXMgYmV0d2VlbiB3b3JkcyB3aXRoIHNwYWNlcy4gU2V0dGluZ3Mgd2lsbCBub3Qgd29yayBhcyBleHBlY3RlZCB1bnRpbCBjaGFuZ2VkLlwiO1xuICB9XG4gICRicmVha3BvaW50OiBtYXAtbWVyZ2UoJGJyZWFrcG9pbnQsICgkc2V0dGluZzogJHZhbHVlKSkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICAkYnJlYWtwb2ludC1jaGFuZ2U6IGJyZWFrcG9pbnQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gYnJlYWtwb2ludC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIGJrcHQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5AbWl4aW4gYmtwdC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZW1vdmUgU2V0dGluZ1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MuLi4pIHtcbiAgQGlmIGxlbmd0aCgkc2V0dGluZ3MpID09IDEge1xuICAgICRzZXR0aW5nczogbnRoKCRzZXR0aW5ncywgMSk7XG4gIH1cblxuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICRicmVha3BvaW50OiBtYXAtcmVtb3ZlKCRicmVha3BvaW50LCAkc2V0dGluZykgIWdsb2JhbDtcbiAgfVxuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncy4uLikge1xuICAkYnJlYWtwb2ludC1yZXNldDogYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MpO1xufVxuXG5AbWl4aW4gYmtwdC1yZXNldCgkc2V0dGluZ3MuLi4pIHtcbiAgJGJyZWFrcG9pbnQtcmVzZXQ6IGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzKTtcbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFByaXZhdGUgQnJlYWtwb2ludCBWYXJpYWJsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCk7XG4kcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgSGFzIENvbnRleHRcbi8vIFJldHVybnMgd2hldGhlciBvciBub3QgeW91IGFyZSBpbnNpZGUgYSBCcmVha3BvaW50IHF1ZXJ5XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWhhcy1jb250ZXh0KCkge1xuICBAaWYgbGVuZ3RoKCRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IEdldCBDb250ZXh0XG4vLyAkZmVhdHVyZTogSW5wdXQgZmVhdHVyZSB0byBnZXQgaXQncyBjdXJyZW50IE1RIGNvbnRleHQuIFJldHVybnMgZmFsc2UgaWYgbm8gY29udGV4dFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1nZXQtY29udGV4dCgkZmVhdHVyZSkge1xuICBAaWYgbWFwLWhhcy1rZXkoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpIHtcbiAgICAkZ2V0OiBtYXAtZ2V0KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKTtcbiAgICAvLyBTcGVjaWFsIGhhbmRsaW5nIG9mIG5vLXF1ZXJ5IGZyb20gZ2V0IHNpZGUgc28gL2ZhbHNlLyBwcmVwZW5kcyBhcmVuJ3QgcmV0dXJuZWRcbiAgICBAaWYgJGZlYXR1cmUgPT0gJ25vLXF1ZXJ5JyB7XG4gICAgICBAaWYgdHlwZS1vZigkZ2V0KSA9PSAnbGlzdCcgYW5kIGxlbmd0aCgkZ2V0KSA+IDEgYW5kIG50aCgkZ2V0LCAxKSA9PSBmYWxzZSB7XG4gICAgICAgICRnZXQ6IG50aCgkZ2V0LCBsZW5ndGgoJGdldCkpO1xuICAgICAgfVxuICAgIH1cbiAgICBAcmV0dXJuICRnZXQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiBicmVha3BvaW50LWhhcy1jb250ZXh0KCkgYW5kICRmZWF0dXJlID09ICdtZWRpYScge1xuICAgICAgQHJldHVybiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFByaXZhdGUgZnVuY3Rpb24gdG8gc2V0IGNvbnRleHRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJHZhbHVlKSB7XG4gIEBpZiAkdmFsdWUgPT0gJ21vbm9jaHJvbWUnIHtcbiAgICAkZmVhdHVyZTogJ21vbm9jaHJvbWUnO1xuICB9XG5cbiAgJGN1cnJlbnQ6IG1hcC1nZXQoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpO1xuICBAaWYgJGN1cnJlbnQgYW5kIGxlbmd0aCgkY3VycmVudCkgPT0gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgQHdhcm4gXCJZb3UgaGF2ZSBhbHJlYWR5IHF1ZXJpZWQgYWdhaW5zdCBgI3skZmVhdHVyZX1gLiBVbmV4cGVjdGVkIHRoaW5ncyBtYXkgaGFwcGVuIGlmIHlvdSBxdWVyeSBhZ2FpbnN0IHRoZSBzYW1lIGZlYXR1cmUgbW9yZSB0aGFuIG9uY2UgaW4gdGhlIHNhbWUgYGFuZGAgcXVlcnkuIEJyZWFrcG9pbnQgaXMgb3ZlcndyaXRpbmcgdGhlIGN1cnJlbnQgY29udGV4dCB3aXRoIGAjeyR2YWx1ZX1gXCI7XG4gIH1cblxuICBAaWYgbm90IG1hcC1oYXMta2V5KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKSB7XG4gICAgJHYtaG9sZGVyOiAoKTtcbiAgICBAZm9yICRpIGZyb20gMSB0byAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICAgIEBpZiAkZmVhdHVyZSA9PSAnbWVkaWEnIHtcbiAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgJHZhbHVlKTtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtbWVyZ2UoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgKCRmZWF0dXJlOiAkdi1ob2xkZXIpKSAhZ2xvYmFsO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkdi1ob2xkZXI6IG1hcC1nZXQoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpO1xuICAgICRsZW5ndGg6IGxlbmd0aCgkdi1ob2xkZXIpO1xuICAgIEBmb3IgJGkgZnJvbSAkbGVuZ3RoIHRvICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQgLSAxIHtcbiAgICAgIEBpZiAkZmVhdHVyZSA9PSAnbWVkaWEnIHtcbiAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgJHZhbHVlKTtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtbWVyZ2UoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgKCRmZWF0dXJlOiAkdi1ob2xkZXIpKSAhZ2xvYmFsO1xuICB9XG5cbiAgQHJldHVybiB0cnVlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFByaXZhdGUgZnVuY3Rpb24gdG8gcmVzZXQgY29udGV4dFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gcHJpdmF0ZS1icmVha3BvaW50LXJlc2V0LWNvbnRleHRzIHtcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCkgIWdsb2JhbDtcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZ2xvYmFsO1xufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29udmVydHMgdGhlIGlucHV0IHZhbHVlIHRvIEJhc2UgRU1zXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXRvLWJhc2UtZW0oJHZhbHVlKSB7XG4gICR2YWx1ZS11bml0OiB1bml0KCR2YWx1ZSk7XG5cbiAgLy8gV2lsbCBjb252ZXJ0IHJlbGF0aXZlIEVNcyBpbnRvIHJvb3QgRU1zLlxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykgYW5kIHR5cGUtb2YoYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykpID09ICdudW1iZXInIGFuZCAkdmFsdWUtdW5pdCA9PSAnZW0nIHtcbiAgICAkYmFzZS11bml0OiB1bml0KGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpKTtcblxuICAgIEBpZiAkYmFzZS11bml0ID09ICdweCcgb3IgJGJhc2UtdW5pdCA9PSAnJScgb3IgJGJhc2UtdW5pdCA9PSAnZW0nIG9yICRiYXNlLXVuaXQgPT0gJ3B0JyB7XG4gICAgICBAcmV0dXJuIGJhc2UtY29udmVyc2lvbigkdmFsdWUpIC8gYmFzZS1jb252ZXJzaW9uKGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpKSAqIDFlbTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gJyN7YnJlYWtwb2ludC1nZXQoXFwnYmFzZSBmb250IHNpemVcXCcpfSBpcyBub3Qgc2V0IGluIHZhbGlkIHVuaXRzIGZvciBmb250IHNpemUhJztcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGJhc2UtY29udmVyc2lvbigkdmFsdWUpO1xuICB9XG59XG5cbkBmdW5jdGlvbiBiYXNlLWNvbnZlcnNpb24oJHZhbHVlKSB7XG4gICR1bml0OiB1bml0KCR2YWx1ZSk7XG5cbiAgQGlmICR1bml0ID09ICdweCcge1xuICAgIEByZXR1cm4gJHZhbHVlIC8gMTZweCAqIDFlbTtcbiAgfVxuICBAZWxzZSBpZiAkdW5pdCA9PSAnJScge1xuICAgIEByZXR1cm4gJHZhbHVlIC8gMTAwJSAqIDFlbTtcbiAgfVxuICBAZWxzZSBpZiAkdW5pdCA9PSAnZW0nIHtcbiAgICBAcmV0dXJuICR2YWx1ZTtcbiAgfVxuICBAZWxzZSBpZiAkdW5pdCA9PSAncHQnIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIDEycHQgKiAxZW07XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHZhbHVlO1xuLy8gICAgQHdhcm4gJ0V2ZXJ5dGhpbmcgaXMgdGVycmlibGUhIFdoYXQgaGF2ZSB5b3UgZG9uZT8hJztcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBjYW4gaGF2ZSBhIG1pbi9tYXggcGFpclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1taW4tbWF4LWZlYXR1cmVzOiAnY29sb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yLWluZGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS1hc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS1oZWlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS13aWR0aCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb25vY2hyb21lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXNvbHV0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aWR0aCc7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LW1pbi1tYXgoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJGl0ZW0gaW4gJGJyZWFrcG9pbnQtbWluLW1heC1mZWF0dXJlcyB7XG4gICAgQGlmICRmZWF0dXJlID09ICRpdGVtIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgY2FuIGhhdmUgYSBzdHJpbmcgdmFsdWVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtc3RyaW5nLWZlYXR1cmVzOiAgJ29yaWVudGF0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzY2FuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2UtYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsdW1pbm9zaXR5JztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtc3RyaW5nLXZhbHVlKCRmZWF0dXJlKSB7XG4gIEBlYWNoICRpdGVtIGluICRicmVha3BvaW50LXN0cmluZy1mZWF0dXJlcyB7XG4gICAgQGlmIGJyZWFrcG9pbnQtbWluLW1heCgkaXRlbSkge1xuICAgICAgQGlmICRmZWF0dXJlID09ICdtaW4tI3skaXRlbX0nIG9yICRmZWF0dXJlID09ICdtYXgtI3skaXRlbX0nIHtcbiAgICAgICAgQHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSBpZiAkZmVhdHVyZSA9PSAkaXRlbSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGlzIGEgbWVkaWEgdHlwZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1tZWRpYS10eXBlczogICdhbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnYnJhaWxsZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdlbWJvc3NlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdoYW5kaGVsZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdwcmludCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9qZWN0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NjcmVlbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdzcGVlY2gnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAndHR5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R2JztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaXMtbWVkaWEoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJG1lZGlhIGluICRicmVha3BvaW50LW1lZGlhLXR5cGVzIHtcbiAgICBAaWYgKCRmZWF0dXJlID09ICRtZWRpYSkgb3IgKCRmZWF0dXJlID09ICdub3QgI3skbWVkaWF9Jykgb3IgKCRmZWF0dXJlID09ICdvbmx5ICN7JG1lZGlhfScpIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBjYW4gc3RhbmQgYWxvbmVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZy1mZWF0dXJlczogJ2NvbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvci1pbmRleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3JpZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9ub2Nocm9tZSc7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJGl0ZW0gaW4gJGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZy1mZWF0dXJlcyB7XG4gICAgQGlmICRmZWF0dXJlID09ICRpdGVtIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaXMtcmVzb2x1dGlvbigkZmVhdHVyZSkge1xuICAkcmVzb2x1dGlvbnM6ICdkZXZpY2UtcGl4ZWwtcmF0aW8nLCAnZHByJztcblxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycpIHtcbiAgICAkcmVzb2x1dGlvbnM6IGFwcGVuZCgkcmVzb2x1dGlvbnMsICdyZXNvbHV0aW9uJyk7XG4gIH1cblxuICBAZWFjaCAkcmVzbyBpbiAkcmVzb2x1dGlvbnMge1xuICAgIEBpZiBpbmRleCgkZmVhdHVyZSwgJHJlc28pIG9yIGluZGV4KCRmZWF0dXJlLCAnbWluLSN7JHJlc299Jykgb3IgaW5kZXgoJGZlYXR1cmUsICdtYXgtI3skcmVzb30nKSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBmYWxzZTtcbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBhcnNlciBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInBhcnNlcnMvcXVlcnlcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL3NpbmdsZVwiO1xuQGltcG9ydCBcInBhcnNlcnMvZG91YmxlXCI7XG5AaW1wb3J0IFwicGFyc2Vycy90cmlwbGVcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL3Jlc29sdXRpb25cIjtcblxuJE1lbW8tRXhpc3RzOiBmdW5jdGlvbi1leGlzdHMobWVtby1nZXQpIGFuZCBmdW5jdGlvbi1leGlzdHMobWVtby1zZXQpO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgRnVuY3Rpb25cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkY29udGV4dHMuLi4pIHtcbiAgJHJ1bjogdHJ1ZTtcbiAgJHJldHVybjogKCk7XG5cbiAgLy8gR3JhYiB0aGUgTWVtbyBPdXRwdXQgaWYgTWVtb2l6YXRpb24gY2FuIGJlIGEgdGhpbmdcbiAgQGlmICRNZW1vLUV4aXN0cyB7XG4gICAgJHJldHVybjogbWVtby1nZXQoYnJlYWtwb2ludCwgYnJlYWtwb2ludCAkcXVlcnkgJGNvbnRleHRzKTtcblxuICAgIEBpZiAkcmV0dXJuICE9IG51bGwge1xuICAgICAgJHJ1bjogZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgQGlmIG5vdCAkTWVtby1FeGlzdHMgb3IgJHJ1biB7XG4gICAgLy8gSW50ZXJuYWwgVmFyaWFibGVzXG4gICAgJHF1ZXJ5LXN0cmluZzogJyc7XG4gICAgJHF1ZXJ5LWZhbGxiYWNrOiBmYWxzZTtcbiAgICAkcmV0dXJuOiAoKTtcblxuICAgIC8vIFJlc2VydmUgR2xvYmFsIFByaXZhdGUgQnJlYWtwb2ludCBDb250ZXh0XG4gICAgJGhvbGRlci1jb250ZXh0OiAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyO1xuICAgICRob2xkZXItcXVlcnktY291bnQ6ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ7XG5cbiAgICAvLyBSZXNldCBHbG9iYWwgUHJpdmF0ZSBCcmVha3BvaW50IENvbnRleHRcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKSAhZ2xvYmFsO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWdsb2JhbDtcblxuXG4gICAgLy8gVGVzdCB0byBzZWUgaWYgaXQncyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0XG4gICAgJG9yLWxpc3Q6IGlmKGxpc3Qtc2VwYXJhdG9yKCRxdWVyeSkgPT0gJ2NvbW1hJywgdHJ1ZSwgZmFsc2UpO1xuXG5cbiAgICBAaWYgKCRvci1saXN0ID09IGZhbHNlIGFuZCBicmVha3BvaW50LWdldCgnbGVnYWN5IHN5bnRheCcpID09IGZhbHNlKSB7XG4gICAgICAkcXVlcnktc3RyaW5nOiBicmVha3BvaW50LXBhcnNlKCRxdWVyeSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRsZW5ndGg6IGxlbmd0aCgkcXVlcnkpO1xuXG4gICAgICAkbGFzdDogbnRoKCRxdWVyeSwgJGxlbmd0aCk7XG4gICAgICAkcXVlcnktZmFsbGJhY2s6IGJyZWFrcG9pbnQtbm8tcXVlcnkoJGxhc3QpO1xuXG4gICAgICBAaWYgKCRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSkge1xuICAgICAgICAkbGVuZ3RoOiAkbGVuZ3RoIC0gMTtcbiAgICAgIH1cblxuICAgICAgQGlmIChicmVha3BvaW50LWdldCgnbGVnYWN5IHN5bnRheCcpID09IHRydWUpIHtcbiAgICAgICAgJG1xOiAoKTtcblxuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICAgICAgICRtcTogYXBwZW5kKCRtcSwgbnRoKCRxdWVyeSwgJGkpLCBjb21tYSk7XG4gICAgICAgIH1cblxuICAgICAgICAkcXVlcnktc3RyaW5nOiBicmVha3BvaW50LXBhcnNlKCRtcSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRxdWVyeS1zdHJpbmc6ICcnO1xuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICAgICAgICRxdWVyeS1zdHJpbmc6ICRxdWVyeS1zdHJpbmcgKyBpZigkaSA9PSAxLCAnJywgJywgJykgKyBicmVha3BvaW50LXBhcnNlKG50aCgkcXVlcnksICRpKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkcmV0dXJuOiAoJ3F1ZXJ5JzogJHF1ZXJ5LXN0cmluZyxcbiAgICAgICAgJ2ZhbGxiYWNrJzogJHF1ZXJ5LWZhbGxiYWNrLFxuICAgICAgICAnY29udGV4dCBob2xkZXInOiAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLFxuICAgICAgICAncXVlcnkgY291bnQnOiAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50XG4gICAgKTtcbiAgICBAaWYgbGVuZ3RoKCRjb250ZXh0cykgPiAwIGFuZCBudGgoJGNvbnRleHRzLCAxKSAhPSBmYWxzZSB7XG4gICAgICBAaWYgJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlIHtcbiAgICAgICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJ25vLXF1ZXJ5JywgJHF1ZXJ5LWZhbGxiYWNrKTtcbiAgICAgIH1cbiAgICAgICRjb250ZXh0LW1hcDogKCk7XG4gICAgICBAZWFjaCAkY29udGV4dCBpbiAkY29udGV4dHMge1xuICAgICAgICAkY29udGV4dC1tYXA6IG1hcC1tZXJnZSgkY29udGV4dC1tYXAsICgkY29udGV4dDogYnJlYWtwb2ludC1nZXQtY29udGV4dCgkY29udGV4dCkpKTtcbiAgICAgIH1cbiAgICAgICRyZXR1cm46IG1hcC1tZXJnZSgkcmV0dXJuLCAoY29udGV4dDogJGNvbnRleHQtbWFwKSk7XG4gICAgfVxuXG4gICAgLy8gUmVzZXQgR2xvYmFsIFByaXZhdGUgQnJlYWtwb2ludCBDb250ZXh0XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCkgIWdsb2JhbDtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFnbG9iYWw7XG5cbiAgICBAaWYgJE1lbW8tRXhpc3RzIHtcbiAgICAgICRob2xkZXI6IG1lbW8tc2V0KGJyZWFrcG9pbnQsIGJyZWFrcG9pbnQgJHF1ZXJ5ICRjb250ZXh0cywgJHJldHVybik7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdlbmVyYWwgQnJlYWtwb2ludCBQYXJzZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UoJHF1ZXJ5KSB7XG4gIC8vIEluY3JlYXNlIG51bWJlciBvZiAnYW5kJyBxdWVyaWVzXG4gICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQgKyAxICFnbG9iYWw7XG5cbiAgLy8gU2V0IHVwIE1lZGlhIFR5cGVcbiAgJHF1ZXJ5LXByaW50OiAnJztcblxuICAkZm9yY2UtYWxsOiAoKGJyZWFrcG9pbnQtZ2V0KCdmb3JjZSBhbGwgbWVkaWEgdHlwZScpID09IHRydWUpIGFuZCAoYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSA9PSAnYWxsJykpO1xuICAkZW1wdHktbWVkaWE6IHRydWU7XG4gIEBpZiAoJGZvcmNlLWFsbCA9PSB0cnVlKSBvciAoYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSAhPSAnYWxsJykge1xuICAgIC8vIEZvcmNlIHRoZSBwcmludCBvZiB0aGUgZGVmYXVsdCBtZWRpYSB0eXBlIGlmIChmb3JjZSBhbGwgaXMgdHJ1ZSBhbmQgZGVmYXVsdCBtZWRpYSB0eXBlIGlzIGFsbCkgb3IgKGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBub3QgYWxsKVxuICAgICRxdWVyeS1wcmludDogYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKTtcbiAgICAkZW1wdHktbWVkaWE6IGZhbHNlO1xuICB9XG5cblxuICAkcXVlcnktcmVzb2x1dGlvbjogZmFsc2U7XG5cbiAgJHF1ZXJ5LWhvbGRlcjogYnJlYWtwb2ludC1wYXJzZS1xdWVyeSgkcXVlcnkpO1xuXG5cblxuICAvLyBMb29wIG92ZXIgZWFjaCBwYXJzZWQgb3V0IHF1ZXJ5IGFuZCB3cml0ZSBpdCB0byAkcXVlcnktcHJpbnRcbiAgJGZpcnN0OiB0cnVlO1xuXG4gIEBlYWNoICRmZWF0dXJlIGluICRxdWVyeS1ob2xkZXIge1xuICAgICRsZW5ndGg6IGxlbmd0aCgkZmVhdHVyZSk7XG5cbiAgICAvLyBQYXJzZSBhIHNpbmdsZSBmZWF0dXJlXG4gICAgQGlmICgkbGVuZ3RoID09IDEpIHtcbiAgICAgIC8vIEZlYXR1cmUgaXMgY3VycmVudGx5IGEgbGlzdCwgZ3JhYiB0aGUgYWN0dWFsIHZhbHVlXG4gICAgICAkZmVhdHVyZTogbnRoKCRmZWF0dXJlLCAxKTtcblxuICAgICAgLy8gTWVkaWEgVHlwZSBtdXN0IGJ5IGNvbnZlbnRpb24gYmUgdGhlIGZpcnN0IGl0ZW0sIHNvIGl0J3Mgc2FmZSB0byBmbGF0IG92ZXJyaWRlICRxdWVyeS1wcmludCwgd2hpY2ggcmlnaHQgbm93IHNob3VsZCBvbmx5IGJlIHRoZSBkZWZhdWx0IG1lZGlhIHR5cGVcbiAgICAgIEBpZiAoYnJlYWtwb2ludC1pcy1tZWRpYSgkZmVhdHVyZSkpIHtcbiAgICAgICAgQGlmICgkZm9yY2UtYWxsID09IHRydWUpIG9yICgkZmVhdHVyZSAhPSAnYWxsJykge1xuICAgICAgICAgIC8vIEZvcmNlIHRoZSBwcmludCBvZiB0aGUgZGVmYXVsdCBtZWRpYSB0eXBlIGlmIChmb3JjZSBhbGwgaXMgdHJ1ZSBhbmQgZGVmYXVsdCBtZWRpYSB0eXBlIGlzIGFsbCkgb3IgKGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBub3QgYWxsKVxuICAgICAgICAgICRxdWVyeS1wcmludDogJGZlYXR1cmU7XG4gICAgICAgICAgJGVtcHR5LW1lZGlhOiBmYWxzZTtcblxuICAgICAgICAgIC8vIFNldCBDb250ZXh0XG4gICAgICAgICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWVkaWEsICRxdWVyeS1wcmludCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBQYXJzZSBhIGRvdWJsZSBmZWF0dXJlXG4gICAgQGVsc2UgaWYgKCRsZW5ndGggPT0gMikge1xuICAgICAgQGlmIChicmVha3BvaW50LWlzLXJlc29sdXRpb24oJGZlYXR1cmUpICE9IGZhbHNlKSB7XG4gICAgICAgICRxdWVyeS1yZXNvbHV0aW9uOiAkZmVhdHVyZTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHBhcnNlZDogbnVsbDtcbiAgICAgICAgLy8gSWYgaXQncyBhIHN0cmluZy9udW1iZXIgcGFpcixcbiAgICAgICAgLy8gd2UgY2hlY2sgdG8gc2VlIGlmIG9uZSBpcyBhIHNpbmdsZS1zdHJpbmcgdmFsdWUsXG4gICAgICAgIC8vIHRoZW4gd2UgcGFyc2UgaXQgYXMgYSBub3JtYWwgZG91YmxlXG4gICAgICAgICRhbHBoYTogbnRoKCRmZWF0dXJlLCAxKTtcbiAgICAgICAgJGJldGE6IG50aCgkZmVhdHVyZSwgMik7XG4gICAgICAgIEBpZiBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJGFscGhhKSBvciBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJGJldGEpIHtcbiAgICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkYWxwaGEsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkYmV0YSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kb3VibGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBQYXJzZSBhIHRyaXBsZSBmZWF0dXJlXG4gICAgQGVsc2UgaWYgKCRsZW5ndGggPT0gMykge1xuICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS10cmlwbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgfVxuXG4gIH1cblxuICBAaWYgKCRxdWVyeS1yZXNvbHV0aW9uICE9IGZhbHNlKSB7XG4gICAgJHF1ZXJ5LXByaW50OiBicmVha3BvaW50LWJ1aWxkLXJlc29sdXRpb24oJHF1ZXJ5LXByaW50LCAkcXVlcnktcmVzb2x1dGlvbiwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICB9XG5cbiAgLy8gTG9vcCB0aHJvdWdoIGVhY2ggZmVhdHVyZSB0aGF0J3MgYmVlbiBkZXRlY3RlZCBzbyBmYXIgYW5kIGFwcGVuZCAnZmFsc2UnIHRvIHRoZSB0aGUgdmFsdWUgbGlzdCB0byBpbmNyZW1lbnQgdGhlaXIgY291bnRlcnNcbiAgQGVhY2ggJGYsICR2IGluICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIge1xuICAgICR2LWhvbGRlcjogJHY7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCR2LWhvbGRlcik7XG4gICAgQGlmIGxlbmd0aCgkdi1ob2xkZXIpIDwgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgICBAZm9yICRpIGZyb20gJGxlbmd0aCB0byAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICAgICAgQGlmICRmID09ICdtZWRpYScge1xuICAgICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSk7XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1tZXJnZSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAoJGY6ICR2LWhvbGRlcikpICFnbG9iYWw7XG4gIH1cblxuICBAcmV0dXJuICRxdWVyeS1wcmludDtcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXF1ZXJ5KCRxdWVyeSkge1xuICAvLyBQYXJzZSBmZWF0dXJlcyBvdXQgb2YgYW4gaW5kaXZpZHVhbCBxdWVyeVxuICAkZmVhdHVyZS1ob2xkZXI6ICgpO1xuICAkcXVlcnktaG9sZGVyOiAoKTtcbiAgJGxlbmd0aDogbGVuZ3RoKCRxdWVyeSk7XG5cbiAgQGlmICRsZW5ndGggPT0gMiB7XG4gICAgLy8gSWYgd2UndmUgZ290IGEgc3RyaW5nL251bWJlciwgbnVtYmVyL3N0cmluZywgY2hlY2sgdG8gc2VlIGlmIGl0J3MgYSB2YWxpZCBzdHJpbmcvbnVtYmVyIHBhaXIgb3IgdHdvIHNpbmdsZXNcbiAgICBAaWYgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdzdHJpbmcnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnbnVtYmVyJykgb3IgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdudW1iZXInIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnc3RyaW5nJykge1xuXG4gICAgICAkbnVtYmVyOiAnJztcbiAgICAgICR2YWx1ZTogJyc7XG5cbiAgICAgIEBpZiB0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnc3RyaW5nJyB7XG4gICAgICAgICRudW1iZXI6IG50aCgkcXVlcnksIDIpO1xuICAgICAgICAkdmFsdWU6IG50aCgkcXVlcnksIDEpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkbnVtYmVyOiBudGgoJHF1ZXJ5LCAxKTtcbiAgICAgICAgJHZhbHVlOiBudGgoJHF1ZXJ5LCAyKTtcbiAgICAgIH1cblxuICAgICAgLy8gSWYgdGhlIHN0cmluZyB2YWx1ZSBjYW4gYmUgYSBzaW5nbGUgdmFsdWUsIGNoZWNrIHRvIHNlZSBpZiB0aGUgbnVtYmVyIHBhc3NlZCBpbiBpcyBhIHZhbGlkIGlucHV0IGZvciBzYWlkIHNpbmdsZSB2YWx1ZS4gRm9ydHVuYXRlbHksIGFsbCBjdXJyZW50IHNpbmdsZS12YWx1ZSBvcHRpb25zIG9ubHkgYWNjZXB0IHVuaXRsZXNzIG51bWJlcnMsIHNvIHRoaXMgY2hlY2sgaXMgZWFzeS5cbiAgICAgIEBpZiBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJHZhbHVlKSB7XG4gICAgICAgIEBpZiB1bml0bGVzcygkbnVtYmVyKSB7XG4gICAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQoJHZhbHVlLCAkbnVtYmVyLCBzcGFjZSk7XG4gICAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gSWYgdGhlIHN0cmluZyBpcyBhIG1lZGlhIHR5cGUsIHNwbGl0IHRoZSBxdWVyeVxuICAgICAgQGlmIGJyZWFrcG9pbnQtaXMtbWVkaWEoJHZhbHVlKSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCBudGgoJHF1ZXJ5LCAxKSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCBudGgoJHF1ZXJ5LCAyKSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICAgIC8vIElmIGl0J3Mgbm90IGEgc2luZ2xlIGZlYXR1cmUsIHdlJ3JlIGp1c3QgZ29pbmcgdG8gYXNzdW1lIGl0J3MgYSBwcm9wZXIgc3RyaW5nL3ZhbHVlIHBhaXIsIGFuZCByb2xsIHdpdGggaXQuXG4gICAgICBAZWxzZSB7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKCR2YWx1ZSwgJG51bWJlciwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cblxuICAgIH1cbiAgICAvLyBJZiB0aGV5J3JlIGJvdGggbnVtYmVycywgd2UgYXNzdW1lIGl0J3MgYSBkb3VibGUgYW5kIHJvbGwgd2l0aCB0aGF0XG4gICAgQGVsc2UgaWYgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdudW1iZXInIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnbnVtYmVyJykge1xuICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMSksIG50aCgkcXVlcnksIDIpLCBzcGFjZSk7XG4gICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgfVxuICAgIC8vIElmIHRoZXkncmUgYm90aCBzdHJpbmdzIGFuZCBuZWl0aGVyIGFyZSBzaW5nbGVzLCB3ZSByb2xsIHdpdGggdGhhdC5cbiAgICBAZWxzZSBpZiAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ3N0cmluZycgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdzdHJpbmcnKSB7XG4gICAgICBAaWYgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAxKSkgYW5kIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMikpIHtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMSksIG50aCgkcXVlcnksIDIpLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkbGVuZ3RoID09IDMge1xuICAgIC8vIElmIHdlJ3ZlIGdvdCB0aHJlZSBpdGVtcyBhbmQgbm9uZSBpcyBhIGxpc3QsIHdlIGNoZWNrIHRvIHNlZVxuICAgIEBpZiB0eXBlLW9mKG50aCgkcXVlcnksIDEpKSAhPSAnbGlzdCcgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpICE9ICdsaXN0JyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAzKSkgIT0gJ2xpc3QnIHtcbiAgICAgIC8vIElmIG5vbmUgb2YgdGhlIGl0ZW1zIGFyZSBzaW5nbGUgc3RyaW5nIHZhbHVlcyBhbmQgbm9uZSBvZiB0aGUgdmFsdWVzIGFyZSBtZWRpYSB2YWx1ZXMsIHdlJ3JlIGdvb2QuXG4gICAgICBAaWYgKG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMSkpIGFuZCBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDIpKSBhbmQgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAzKSkpIGFuZCAgKChub3QgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAxKSkgYW5kIG5vdCBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDIpKSBhbmQgbm90IGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMykpKSkge1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAxKSwgbnRoKCRxdWVyeSwgMiksIHNwYWNlKTtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQoJGZlYXR1cmUtaG9sZGVyLCBudGgoJHF1ZXJ5LCAzKSwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICAgIC8vIGxldCdzIGNoZWNrIHRvIHNlZSBpZiB0aGUgZmlyc3QgaXRlbSBpcyBhIG1lZGlhIHR5cGVcbiAgICAgIEBlbHNlIGlmIGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMSkpIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsIG50aCgkcXVlcnksIDEpKTtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMiksIG50aCgkcXVlcnksIDMpLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgaXQncyBhIHNpbmdsZSBpdGVtLCBvciBpZiBpdCdzIG5vdCBhIHNwZWNpYWwgY2FzZSBkb3VibGUgb3IgdHJpcGxlLCB3ZSBjYW4gc2ltcGx5IHJldHVybiB0aGUgcXVlcnkuXG4gIEByZXR1cm4gJHF1ZXJ5O1xufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJzaW5nbGUvZGVmYXVsdFwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRwYXJzZWQ6ICcnO1xuICAkbGVhZGVyOiAnJztcbiAgLy8gSWYgd2UncmUgZm9yY2luZ1xuICBAaWYgbm90ICgkZW1wdHktbWVkaWEpIG9yIG5vdCAoJGZpcnN0KSB7XG4gICAgJGxlYWRlcjogJ2FuZCAnO1xuICB9XG5cbiAgLy8gSWYgaXQncyBhIHNpbmdsZSBmZWF0dXJlIHRoYXQgY2FuIHN0YW5kIGFsb25lLCB3ZSBsZXQgaXRcbiAgQGlmIChicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJGZlYXR1cmUpKSB7XG4gICAgJHBhcnNlZDogJGZlYXR1cmU7XG4gICAgLy8gU2V0IENvbnRleHRcbiAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJGZlYXR1cmUpO1xuICB9XG4gIC8vIElmIGl0J3Mgbm90IGEgc3RhbmQgYWxvbmUgZmVhdHVyZSwgd2UgcGFzcyBpdCBvZmYgdG8gdGhlIGRlZmF1bHQgaGFuZGxlci5cbiAgQGVsc2Uge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdCgkZmVhdHVyZSk7XG4gIH1cblxuICBAcmV0dXJuICRsZWFkZXIgKyAnKCcgKyAkcGFyc2VkICsgJyknO1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdCgkZmVhdHVyZSkge1xuICAkZGVmYXVsdDogYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgZmVhdHVyZScpO1xuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRkZWZhdWx0LCAkZmVhdHVyZSk7XG5cbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkgYW5kICh0eXBlLW9mKCRmZWF0dXJlKSA9PSAnbnVtYmVyJykge1xuICAgIEByZXR1cm4gJyN7JGRlZmF1bHR9OiAje2JyZWFrcG9pbnQtdG8tYmFzZS1lbSgkZmVhdHVyZSl9JztcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAnI3skZGVmYXVsdH06ICN7JGZlYXR1cmV9JztcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJkb3VibGUvZGVmYXVsdC1wYWlyXCI7XG5AaW1wb3J0IFwiZG91YmxlL2RvdWJsZS1zdHJpbmdcIjtcbkBpbXBvcnQgXCJkb3VibGUvZGVmYXVsdFwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kb3VibGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRwYXJzZWQ6ICcnO1xuICAkbGVhZGVyOiAnJztcbiAgLy8gSWYgd2UncmUgZm9yY2luZ1xuICBAaWYgbm90ICgkZW1wdHktbWVkaWEpIG9yIG5vdCAoJGZpcnN0KSB7XG4gICAgJGxlYWRlcjogJ2FuZCAnO1xuICB9XG5cbiAgJGZpcnN0OiBudGgoJGZlYXR1cmUsIDEpO1xuICAkc2Vjb25kOiBudGgoJGZlYXR1cmUsIDIpO1xuXG4gIC8vIElmIHdlJ3ZlIGdvdCB0d28gbnVtYmVycywgd2Uga25vdyB3ZSBuZWVkIHRvIHVzZSB0aGUgZGVmYXVsdCBwYWlyIGJlY2F1c2UgdGhlcmUgYXJlIG5vIG1lZGlhIHF1ZXJpZXMgdGhhdCBoYXMgYSBtZWRpYSBmZWF0dXJlIHRoYXQgaXMgYSBudW1iZXJcbiAgQGlmIHR5cGUtb2YoJGZpcnN0KSA9PSAnbnVtYmVyJyBhbmQgdHlwZS1vZigkc2Vjb25kKSA9PSAnbnVtYmVyJyB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0LXBhaXIoJGZpcnN0LCAkc2Vjb25kKTtcbiAgfVxuICAvLyBJZiB0aGV5IGFyZSBib3RoIHN0cmluZ3MsIHdlIHNlbmQgaXQgdGhyb3VnaCB0aGUgc3RyaW5nIHBhcnNlclxuICBAZWxzZSBpZiB0eXBlLW9mKCRmaXJzdCkgPT0gJ3N0cmluZycgYW5kIHR5cGUtb2YoJHNlY29uZCkgPT0gJ3N0cmluZycge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLXN0cmluZygkZmlyc3QsICRzZWNvbmQpO1xuICB9XG4gIC8vIElmIGl0J3MgYSBzdHJpbmcvbnVtYmVyIHBhaXIsIHdlIHBhcnNlIGl0IGFzIGEgbm9ybWFsIGRvdWJsZVxuICBAZWxzZSB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtZGVmYXVsdCgkZmlyc3QsICRzZWNvbmQpO1xuICB9XG5cbiAgQHJldHVybiAkbGVhZGVyICsgJHBhcnNlZDtcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQtcGFpcigkZmlyc3QsICRzZWNvbmQpIHtcbiAgJGRlZmF1bHQ6IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IHBhaXInKTtcbiAgJG1pbjogJyc7XG4gICRtYXg6ICcnO1xuXG4gIC8vIFNvcnQgaW50byBtaW4gYW5kIG1heFxuICAkbWluOiBtaW4oJGZpcnN0LCAkc2Vjb25kKTtcbiAgJG1heDogbWF4KCRmaXJzdCwgJHNlY29uZCk7XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWluLSN7JGRlZmF1bHR9LCAkbWluKTtcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWF4LSN7JGRlZmF1bHR9LCAkbWF4KTtcblxuICAvLyBNYWtlIHRoZW0gRU1zIGlmIG5lZWQgYmVcbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkge1xuICAgICRtaW46IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWluKTtcbiAgICAkbWF4OiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1heCk7XG4gIH1cblxuICBAcmV0dXJuICcobWluLSN7JGRlZmF1bHR9OiAjeyRtaW59KSBhbmQgKG1heC0jeyRkZWZhdWx0fTogI3skbWF4fSknO1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLXN0cmluZygkZmlyc3QsICRzZWNvbmQpIHtcbiAgJGZlYXR1cmU6ICcnO1xuICAkdmFsdWU6ICcnO1xuXG4gIC8vIFRlc3QgdG8gc2VlIHdoaWNoIGlzIHRoZSBmZWF0dXJlIGFuZCB3aGljaCBpcyB0aGUgdmFsdWVcbiAgQGlmIChicmVha3BvaW50LXN0cmluZy12YWx1ZSgkZmlyc3QpID09IHRydWUpIHtcbiAgICAkZmVhdHVyZTogJGZpcnN0O1xuICAgICR2YWx1ZTogJHNlY29uZDtcbiAgfVxuICBAZWxzZSBpZiAoYnJlYWtwb2ludC1zdHJpbmctdmFsdWUoJHNlY29uZCkgPT0gdHJ1ZSkge1xuICAgICRmZWF0dXJlOiAkc2Vjb25kO1xuICAgICR2YWx1ZTogJGZpcnN0O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIk5laXRoZXIgI3skZmlyc3R9IG5vciAjeyRzZWNvbmR9IGlzIGEgdmFsaWQgbWVkaWEgcXVlcnkgbmFtZS5cIjtcbiAgfVxuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkdmFsdWUpO1xuXG4gIEByZXR1cm4gJygjeyRmZWF0dXJlfTogI3skdmFsdWV9KSc7XG59IiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLWRlZmF1bHQoJGZpcnN0LCAkc2Vjb25kKSB7XG4gICRmZWF0dXJlOiAnJztcbiAgJHZhbHVlOiAnJztcblxuICBAaWYgdHlwZS1vZigkZmlyc3QpID09ICdzdHJpbmcnIHtcbiAgICAkZmVhdHVyZTogJGZpcnN0O1xuICAgICR2YWx1ZTogJHNlY29uZDtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGZlYXR1cmU6ICRzZWNvbmQ7XG4gICAgJHZhbHVlOiAkZmlyc3Q7XG4gIH1cblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJHZhbHVlKTtcblxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSB7XG4gICAgJHZhbHVlOiBicmVha3BvaW50LXRvLWJhc2UtZW0oJHZhbHVlKTtcbiAgfVxuXG4gIEByZXR1cm4gJygjeyRmZWF0dXJlfTogI3skdmFsdWV9KSdcbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwidHJpcGxlL2RlZmF1bHRcIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkcGFyc2VkOiAnJztcbiAgJGxlYWRlcjogJyc7XG5cbiAgLy8gSWYgd2UncmUgZm9yY2luZ1xuICBAaWYgbm90ICgkZW1wdHktbWVkaWEpIG9yIG5vdCAoJGZpcnN0KSB7XG4gICAgJGxlYWRlcjogJ2FuZCAnO1xuICB9XG5cbiAgLy8gc2VwYXJhdGUgdGhlIHN0cmluZyBmZWF0dXJlcyBmcm9tIHRoZSB2YWx1ZSBudW1iZXJzXG4gICRzdHJpbmc6IG51bGw7XG4gICRudW1iZXJzOiBudWxsO1xuICBAZWFjaCAkdmFsIGluICRmZWF0dXJlIHtcbiAgICBAaWYgdHlwZS1vZigkdmFsKSA9PSBzdHJpbmcge1xuICAgICAgJHN0cmluZzogJHZhbDtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGlmIHR5cGUtb2YoJG51bWJlcnMpID09ICdudWxsJyB7XG4gICAgICAgICRudW1iZXJzOiAkdmFsO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkbnVtYmVyczogYXBwZW5kKCRudW1iZXJzLCAkdmFsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXRyaXBsZS1kZWZhdWx0KCRzdHJpbmcsIG50aCgkbnVtYmVycywgMSksIG50aCgkbnVtYmVycywgMikpO1xuXG4gIEByZXR1cm4gJGxlYWRlciArICRwYXJzZWQ7XG5cbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXRyaXBsZS1kZWZhdWx0KCRmZWF0dXJlLCAkZmlyc3QsICRzZWNvbmQpIHtcblxuICAvLyBTb3J0IGludG8gbWluIGFuZCBtYXhcbiAgJG1pbjogbWluKCRmaXJzdCwgJHNlY29uZCk7XG4gICRtYXg6IG1heCgkZmlyc3QsICRzZWNvbmQpO1xuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1pbi0jeyRmZWF0dXJlfSwgJG1pbik7XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1heC0jeyRmZWF0dXJlfSwgJG1heCk7XG5cbiAgLy8gTWFrZSB0aGVtIEVNcyBpZiBuZWVkIGJlXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIHtcbiAgICAkbWluOiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1pbik7XG4gICAgJG1heDogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtYXgpO1xuICB9XG5cbiAgQHJldHVybiAnKG1pbi0jeyRmZWF0dXJlfTogI3skbWlufSkgYW5kIChtYXgtI3skZmVhdHVyZX06ICN7JG1heH0pJztcbn1cbiIsIkBpbXBvcnQgXCJyZXNvbHV0aW9uL3Jlc29sdXRpb25cIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtYnVpbGQtcmVzb2x1dGlvbigkcXVlcnktcHJpbnQsICRxdWVyeS1yZXNvbHV0aW9uLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkbGVhZGVyOiAnJztcbiAgLy8gSWYgd2UncmUgZm9yY2luZ1xuICBAaWYgbm90ICgkZW1wdHktbWVkaWEpIG9yIG5vdCAoJGZpcnN0KSB7XG4gICAgJGxlYWRlcjogJ2FuZCAnO1xuICB9XG5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnKSBhbmQgJHF1ZXJ5LXJlc29sdXRpb24ge1xuICAgICRyZXNvbHV0aW9uczogYnJlYWtwb2ludC1tYWtlLXJlc29sdXRpb25zKCRxdWVyeS1yZXNvbHV0aW9uKTtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJHJlc29sdXRpb25zKTtcbiAgICAkcXVlcnktaG9sZGVyOiAnJztcblxuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgICAkcXVlcnk6ICcjeyRxdWVyeS1wcmludH0gI3skbGVhZGVyfSN7bnRoKCRyZXNvbHV0aW9ucywgJGkpfSc7XG4gICAgICBAaWYgJGkgPT0gMSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6ICRxdWVyeTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogJyN7JHF1ZXJ5LWhvbGRlcn0sICN7JHF1ZXJ5fSc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBSZXR1cm4gd2l0aCBhdHRhY2hlZCByZXNvbHV0aW9uXG4gICAgQHJldHVybiAkcXVlcnktcHJpbnQ7XG4gIH1cbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LW1ha2UtcmVzb2x1dGlvbnMoJHJlc29sdXRpb24pIHtcbiAgJGxlbmd0aDogbGVuZ3RoKCRyZXNvbHV0aW9uKTtcblxuICAkb3V0cHV0OiAoKTtcblxuICBAaWYgJGxlbmd0aCA9PSAyIHtcbiAgICAkZmVhdHVyZTogJyc7XG4gICAgJHZhbHVlOiAnJztcblxuICAgIC8vIEZpbmQgd2hpY2ggaXMgbnVtYmVyXG4gICAgQGlmIHR5cGUtb2YobnRoKCRyZXNvbHV0aW9uLCAxKSkgPT0gJ251bWJlcicge1xuICAgICAgJHZhbHVlOiBudGgoJHJlc29sdXRpb24sIDEpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkdmFsdWU6IG50aCgkcmVzb2x1dGlvbiwgMik7XG4gICAgfVxuXG4gICAgLy8gRGV0ZXJtaW5lIG1pbi9tYXgvc3RhbmRhcmRcbiAgICBAaWYgaW5kZXgoJHJlc29sdXRpb24sICdtaW4tcmVzb2x1dGlvbicpIHtcbiAgICAgICRmZWF0dXJlOiAnbWluLSc7XG4gICAgfVxuICAgIEBlbHNlIGlmIGluZGV4KCRyZXNvbHV0aW9uLCAnbWF4LXJlc29sdXRpb24nKSB7XG4gICAgICAkZmVhdHVyZTogJ21heC0nO1xuICAgIH1cblxuICAgICRzdGFuZGFyZDogJygjeyRmZWF0dXJlfXJlc29sdXRpb246ICN7JHZhbHVlfSknO1xuXG4gICAgLy8gSWYgd2UncmUgbm90IGRlYWxpbmcgd2l0aCBkcHB4LFxuICAgIEBpZiB1bml0KCR2YWx1ZSkgIT0gJ2RwcHgnIHtcbiAgICAgICRiYXNlOiA5NmRwaTtcbiAgICAgIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ2RwY20nIHtcbiAgICAgICAgJGJhc2U6IDI0My44NGRwY207XG4gICAgICB9XG4gICAgICAvLyBXcml0ZSBvdXQgZmVhdHVyZSB0ZXN0c1xuICAgICAgJHdlYmtpdDogJyc7XG4gICAgICAkbW96OiAnJztcbiAgICAgICR3ZWJraXQ6ICcoLXdlYmtpdC0jeyRmZWF0dXJlfWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAkYmFzZX0pJztcbiAgICAgICRtb3o6ICcoI3skZmVhdHVyZX0tbW96LWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAkYmFzZX0pJztcbiAgICAgIC8vIEFwcGVuZCB0byBvdXRwdXRcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkc3RhbmRhcmQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkd2Via2l0LCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJG1veiwgc3BhY2UpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkd2Via2l0OiAnJztcbiAgICAgICRtb3o6ICcnO1xuICAgICAgJHdlYmtpdDogJygtd2Via2l0LSN7JGZlYXR1cmV9ZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvIDFkcHB4fSknO1xuICAgICAgJG1vejogJygjeyRmZWF0dXJlfS1tb3otZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvIDFkcHB4fSknO1xuICAgICAgJGZhbGxiYWNrOiAnKCN7JGZlYXR1cmV9cmVzb2x1dGlvbjogI3skdmFsdWUgLyAxZHBweCAqIDk2ZHBpfSknO1xuICAgICAgLy8gQXBwZW5kIHRvIG91dHB1dFxuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRzdGFuZGFyZCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICR3ZWJraXQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkbW96LCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJGZhbGxiYWNrLCBzcGFjZSk7XG4gICAgfVxuXG4gIH1cblxuICBAcmV0dXJuICRvdXRwdXQ7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1uby1xdWVyeSgkcXVlcnkpIHtcbiAgQGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSAnbGlzdCcge1xuICAgICRrZXl3b3JkOiBudGgoJHF1ZXJ5LCAxKTtcblxuICAgIEBpZiB0eXBlLW9mKCRrZXl3b3JkKSA9PSAnc3RyaW5nJyBhbmQgKCRrZXl3b3JkID09ICduby1xdWVyeScgb3IgJGtleXdvcmQgPT0gJ25vIHF1ZXJ5JyBvciAka2V5d29yZCA9PSAnZmFsbGJhY2snKSB7XG4gICAgICBAcmV0dXJuIG50aCgkcXVlcnksIDIpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEZWZhdWx0IHRoZSBCcmVha3BvaW50cyB2YXJpYWJsZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludHM6ICgpICFkZWZhdWx0O1xuJEJSRUFLUE9JTlRTOiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXNwb25kLXRvIEFQSSBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gcmVzcG9uZC10bygkY29udGV4dCwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaWYgbGVuZ3RoKCRicmVha3BvaW50cykgPiAwIGFuZCBsZW5ndGgoJEJSRUFLUE9JTlRTKSA9PSAwIHtcbiAgICBAd2FybiBcIkluIG9yZGVyIHRvIGF2b2lkIHZhcmlhYmxlIG5hbWVzcGFjZSBjb2xsaXNpb25zLCB3ZSBoYXZlIHVwZGF0ZWQgdGhlIHdheSB0byBhZGQgYnJlYWtwb2ludHMgZm9yIHJlc3BvbmQtdG8uIFBsZWFzZSBjaGFuZ2UgYWxsIGluc3RhbmNlcyBvZiBgJGJyZWFrcG9pbnRzOiBhZGQtYnJlYWtwb2ludCgpYCB0byBgQGluY2x1ZGUgYWRkLWJyZWFrcG9pbnQoKWAuIFRoZSBgYWRkLWJyZWFrcG9pbnQoKWAgZnVuY3Rpb24gd2lsbCBiZSBkZXByZWNhdGVkIGluIGEgZnV0dXJlIHJlbGVhc2UuXCI7XG4gICAgJEJSRUFLUE9JTlRTOiAkYnJlYWtwb2ludHMgIWdsb2JhbDtcbiAgICAkYnJlYWtwb2ludHM6ICgpICFnbG9iYWw7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkQlJFQUtQT0lOVFMpICE9ICdtYXAnIHtcbiAgICAvLyBKdXN0IGluIGNhc2Ugc29tZW9uZSB3cml0ZXMgZ2liYmVyaXNoIHRvIHRoZSAkYnJlYWtwb2ludHMgdmFyaWFibGUuXG4gICAgQHdhcm4gXCJZb3VyIGJyZWFrcG9pbnRzIGFyZW4ndCBhIG1hcCEgYHJlc3BvbmQtdG9gIGV4cGVjdHMgYSBtYXAuIFBsZWFzZSBjaGVjayB0aGUgdmFsdWUgb2YgJEJSRUFLUE9JTlRTIHZhcmlhYmxlLlwiO1xuICAgIEBjb250ZW50O1xuICB9XG4gIEBlbHNlIGlmIG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJGNvbnRleHQpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1hcC1nZXQoJEJSRUFLUE9JTlRTLCAkY29udGV4dCksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmIG5vdCBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRjb250ZXh0KSB7XG4gICAgQHdhcm4gXCJgI3skY29udGV4dH1gIGlzbid0IGEgZGVmaW5lZCBicmVha3BvaW50ISBQbGVhc2UgYWRkIGl0IHVzaW5nIGAkYnJlYWtwb2ludHM6IGFkZC1icmVha3BvaW50KGAjeyRjb250ZXh0fWAsICR2YWx1ZSk7YFwiO1xuICAgIEBjb250ZW50O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIllvdSBoYXZlbid0IGNyZWF0ZWQgYW55IGJyZWFrcG9pbnRzIHlldCEgTWFrZSBzb21lIGFscmVhZHkhIGBAaW5jbHVkZSBhZGQtYnJlYWtwb2ludCgkbmFtZSwgJGJrcHQpYFwiO1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQWRkIEJyZWFrcG9pbnQgdG8gQnJlYWtwb2ludHNcbi8vIFRPRE86IFJlbW92ZSBmdW5jdGlvbiBpbiBuZXh0IHJlbGVhc2Vcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGFkZC1icmVha3BvaW50KCRuYW1lLCAkYmtwdCwgJG92ZXJ3cml0ZTogZmFsc2UpIHtcbiAgJG91dHB1dDogKCRuYW1lOiAkYmtwdCk7XG5cbiAgQGlmIGxlbmd0aCgkYnJlYWtwb2ludHMpID09IDAge1xuICAgIEByZXR1cm4gJG91dHB1dDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJG5hbWUpIGFuZCAkb3ZlcndyaXRlICE9IHRydWUge1xuICAgICAgQHdhcm4gXCJZb3UgYWxyZWFkeSBoYXZlIGEgYnJlYWtwb2ludCBuYW1lZCBgI3skbmFtZX1gLCBwbGVhc2UgY2hvb3NlIGFub3RoZXIgYnJlYWtwb2ludCBuYW1lLCBvciBwYXNzIGluIGAkb3ZlcndyaXRlOiB0cnVlYCB0byBvdmVyd3JpdGUgdGhlIHByZXZpb3VzIGJyZWFrcG9pbnQuXCI7XG4gICAgICBAcmV0dXJuICRicmVha3BvaW50cztcbiAgICB9XG4gICAgQGVsc2UgaWYgbm90IG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJG5hbWUpIG9yICRvdmVyd3JpdGUgPT0gdHJ1ZSB7XG4gICAgICBAcmV0dXJuIG1hcC1tZXJnZSgkYnJlYWtwb2ludHMsICRvdXRwdXQpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gYWRkLWJyZWFrcG9pbnQoJG5hbWUsICRia3B0LCAkb3ZlcndyaXRlOiBmYWxzZSkge1xuICAkb3V0cHV0OiAoJG5hbWU6ICRia3B0KTtcblxuICBAaWYgbGVuZ3RoKCRCUkVBS1BPSU5UUykgPT0gMCB7XG4gICAgJEJSRUFLUE9JTlRTOiAkb3V0cHV0ICFnbG9iYWw7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRuYW1lKSBhbmQgJG92ZXJ3cml0ZSAhPSB0cnVlIHtcbiAgICAgIEB3YXJuIFwiWW91IGFscmVhZHkgaGF2ZSBhIGJyZWFrcG9pbnQgbmFtZWQgYCN7JG5hbWV9YCwgcGxlYXNlIGNob29zZSBhbm90aGVyIGJyZWFrcG9pbnQgbmFtZSwgb3IgcGFzcyBpbiBgJG92ZXJ3cml0ZTogdHJ1ZWAgdG8gb3ZlcndyaXRlIHRoZSBwcmV2aW91cyBicmVha3BvaW50LlwiO1xuICAgICAgJEJSRUFLUE9JTlRTOiAkQlJFQUtQT0lOVFMgIWdsb2JhbDtcbiAgICB9XG4gICAgQGVsc2UgaWYgbm90IG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJG5hbWUpIG9yICRvdmVyd3JpdGUgPT0gdHJ1ZSB7XG4gICAgICAkQlJFQUtQT0lOVFM6IG1hcC1tZXJnZSgkQlJFQUtQT0lOVFMsICRvdXRwdXQpICFnbG9iYWw7XG4gICAgfVxuICB9XG59XG5cbkBmdW5jdGlvbiBnZXQtYnJlYWtwb2ludCgkbmFtZTogZmFsc2UpIHtcbiAgQGlmICRuYW1lID09IGZhbHNlIHtcbiAgICBAcmV0dXJuICRCUkVBS1BPSU5UUztcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRCUkVBS1BPSU5UUywgJG5hbWUpO1xuICB9XG59XG4iLCJAbWl4aW4gbGVnYWN5LXNldHRpbmdzLXdhcm5pbmcge1xuICAkbGVnYWN5VmFyczogKFxuICAgICdkZWZhdWx0LW1lZGlhJzogJ2RlZmF1bHQgbWVkaWEnLFxuICAgICdkZWZhdWx0LWZlYXR1cmUnOiAnZGVmYXVsdCBmZWF0dXJlJyxcbiAgICAnZm9yY2UtbWVkaWEtYWxsJzogJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJyxcbiAgICAndG8tZW1zJzogJ3RvIGVtcycsXG4gICAgJ3Jlc29sdXRpb25zJzogJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycsXG4gICAgJ25vLXF1ZXJpZXMnOiAnbm8gcXVlcmllcycsXG4gICAgJ25vLXF1ZXJ5LWZhbGxiYWNrcyc6ICdubyBxdWVyeSBmYWxsYmFja3MnLFxuICAgICdiYXNlLWZvbnQtc2l6ZSc6ICdiYXNlIGZvbnQgc2l6ZScsXG4gICAgJ2xlZ2FjeS1zeW50YXgnOiAnbGVnYWN5IHN5bnRheCdcbiAgKTtcblxuICBAZWFjaCAkbGVnYWN5LCAkbmV3IGluICRsZWdhY3lWYXJzIHtcbiAgICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC0nICsgJGxlZ2FjeSkge1xuICAgICAgQHdhcm4gXCJJbiBvcmRlciB0byBhdm9pZCB2YXJpYWJsZSBuYW1zcGFjZSBjb2xsaXNpb25zLCB3ZSBoYXZlIHVwZGF0ZWQgdGhlIHdheSB0byBjaGFuZ2Ugc2V0dGluZ3MgZm9yIEJyZWFrcG9pbnQuIFBsZWFzZSBjaGFuZ2UgYWxsIGluc3RhbmNlcyBvZiBgJGJyZWFrcG9pbnQtI3skbGVnYWN5fToge3tzZXR0aW5nfX1gIHRvIGBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnI3skbmV3fScsIHt7c2V0dGluZ319KWAuIFZhcmlhYmxlIHNldHRpbmdzLCBhcyB3ZWxsIGFzIHRoaXMgd2FybmluZyB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS5cIlxuICAgIH1cbiAgfTtcblxuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gSGFuZCBjb3JyZWN0IGVhY2ggc2V0dGluZ1xuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtZGVmYXVsdC1tZWRpYScpIGFuZCAkYnJlYWtwb2ludC1kZWZhdWx0LW1lZGlhICE9IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdkZWZhdWx0IG1lZGlhJywgJGJyZWFrcG9pbnQtZGVmYXVsdC1tZWRpYSk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtZGVmYXVsdC1mZWF0dXJlJykgYW5kICRicmVha3BvaW50LWRlZmF1bHQtZmVhdHVyZSAhPSBicmVha3BvaW50LWdldCgnZGVmYXVsdCBmZWF0dXJlJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdkZWZhdWx0IGZlYXR1cmUnLCAkYnJlYWtwb2ludC1kZWZhdWx0LWZlYXR1cmUpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWZvcmNlLW1lZGlhLWFsbCcpIGFuZCAkYnJlYWtwb2ludC1mb3JjZS1tZWRpYS1hbGwgIT0gYnJlYWtwb2ludC1nZXQoJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdmb3JjZSBhbGwgbWVkaWEgdHlwZScsICRicmVha3BvaW50LWZvcmNlLW1lZGlhLWFsbCk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtdG8tZW1zJykgYW5kICRicmVha3BvaW50LXRvLWVtcyAhPSBicmVha3BvaW50LWdldCgndG8gZW1zJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCd0byBlbXMnLCAkYnJlYWtwb2ludC10by1lbXMpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LXJlc29sdXRpb25zJykgYW5kICRicmVha3BvaW50LXJlc29sdXRpb25zICE9IGJyZWFrcG9pbnQtZ2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycsICRicmVha3BvaW50LXJlc29sdXRpb25zKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1uby1xdWVyaWVzJykgYW5kICRicmVha3BvaW50LW5vLXF1ZXJpZXMgIT0gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJpZXMnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ25vIHF1ZXJpZXMnLCAkYnJlYWtwb2ludC1uby1xdWVyaWVzKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3MnKSBhbmQgJGJyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzICE9IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycsICRicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrcyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtYmFzZS1mb250LXNpemUnKSBhbmQgJGJyZWFrcG9pbnQtYmFzZS1mb250LXNpemUgIT0gYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdiYXNlIGZvbnQgc2l6ZScsICRicmVha3BvaW50LWJhc2UtZm9udC1zaXplKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1sZWdhY3ktc3ludGF4JykgYW5kICRicmVha3BvaW50LWxlZ2FjeS1zeW50YXggIT0gYnJlYWtwb2ludC1nZXQoJ2xlZ2FjeSBzeW50YXgnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2xlZ2FjeSBzeW50YXgnLCAkYnJlYWtwb2ludC1sZWdhY3ktc3ludGF4KTtcbiAgfVxufSIsIkBpbXBvcnQgJ2Z1bmN0aW9ucyc7XG5AaW1wb3J0ICd6LWluZGV4JztcbkBpbXBvcnQgJ21lZGlhLXF1ZXJpZXMnO1xuQGltcG9ydCAndmFyaWFibGVzJztcbkBpbXBvcnQgJ3VuaWJvYXJkJztcbkBpbXBvcnQgJ21peGlucyc7XG5AaW1wb3J0ICdleHRlbmRzJztcbkBpbXBvcnQgJ2ZsZXgnO1xuQGltcG9ydCAnYm94JztcbkBpbXBvcnQgJ2ZsdWlkLXNpemUnO1xuIiwiLy8vIFotaW5kZXhlcyBtYXAsIGdhdGhlcmluZyBhbGwgWiBsYXllcnMgb2YgdGhlIGFwcGxpY2F0aW9uXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8gQHR5cGUgTWFwXG4vLy8gQHByb3Age1N0cmluZ30ga2V5IC0gTGF5ZXLigJlzIG5hbWVcbi8vLyBAcHJvcCB7TnVtYmVyfSB2YWx1ZSAtIFogdmFsdWUgbWFwcGVkIHRvIHRoZSBrZXlcbiR6LWluZGV4ZXM6IChcbiAgJ2NnX19wcm9tb3Rpb24nOiAyMDUsXG4gICdjZ19fcGllY2UuZHJhZ2dpbmcnOiAyMDQsXG4gICdjZ19fYm9hcmQub3ZlcmxheSc6IDEwMCxcbiAgJ2NnX19waWVjZS5hbmltJzogMyxcbiAgJ2NnX19zdmcuY2ctc2hhcGVzJzogMixcbiAgJ2NnX19zdmcuY2ctY3VzdG9tLXN2Z3MnOiA0LFxuICAnY2dfX3BpZWNlJzogMixcbiAgJ2NnX19waWVjZS5mYWRpbmcnOiAxLFxuICAncG93ZXJ0aXAnOiAxMjAsXG4gICdjb21wbGV0ZSc6IDExMixcbiAgJ2lucXVpcnknOiAxMTEsXG4gICd6ZW4tdG9nZ2xlJzogMTEwLFxuICAnbW9kYWwnOiAxMTAsXG4gICdtc2VsZWN0JzogMTEwLFxuICAndG9wbmF2JzogMTEwLFxuICAnZnVsbHNjcmVlbi1tYXNrJzogMTA5LFxuICAnZHJvcGRvd24nOiAxMDgsXG4gICdjb250ZXh0LW1lbnUnOiAxMDcsXG4gICdzaXRlLWhlYWRlcic6IDEwNixcbiAgJ3JlY29ubmVjdGluZyc6IDEwNSxcbiAgJ3RvdXItcmVtaW5kZXInOiAxMDQsXG4gICdtei1tZW51JzogNCxcbiAgJ2Fib3ZlLWxpbmstb3ZlcmxheSc6IDMsXG4gICdmcmllbmQtYm94JzogMixcbiAgJ2xpbmstb3ZlcmxheSc6IDIsXG4gICdnYW1lLWJvb2ttYXJrJzogMixcbiAgJ3N1Ym5hdi1zaWRlJzogMixcbiAgJ2RlZmF1bHQnOiAwLFxuKTtcblxuLy8vIEdldCBhIHotaW5kZXggdmFsdWUgZnJvbSBhIGxheWVyIG5hbWVcbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbGF5ZXIgLSBMYXllcuKAmXMgbmFtZVxuLy8vIEByZXR1cm4ge051bWJlcn1cbi8vLyBAcmVxdWlyZSAkei1pbmRleGVzXG5AZnVuY3Rpb24geigkbGF5ZXIpIHtcbiAgQHJldHVybiBtYXAtZ2V0KCR6LWluZGV4ZXMsICRsYXllcik7XG59XG4iLCIvKiBXaWR0aHMgKi9cblxuJG1xLXh4LXNtYWxsOiBtaW4td2lkdGggNTAwcHg7XG4kbXEteC1zbWFsbDogbWluLXdpZHRoIDY1MHB4O1xuJG1xLXNtYWxsOiBtaW4td2lkdGggODAwcHg7XG4kbXEtbWVkaXVtOiBtaW4td2lkdGggOTgwcHg7XG4kbXEtbGFyZ2U6IG1pbi13aWR0aCAxMTIwcHg7XG4kbXEteC1sYXJnZTogbWluLXdpZHRoIDEyNjBweDtcblxuJG1xLW5vdC14eC1zbWFsbDogbWF4LXdpZHRoIDQ5OXB4O1xuJG1xLW5vdC14LXNtYWxsOiBtYXgtd2lkdGggNjQ5cHg7XG4kbXEtbm90LXNtYWxsOiBtYXgtd2lkdGggNzk5cHg7XG4kbXEtbm90LW1lZGl1bTogbWF4LXdpZHRoIDk3OXB4O1xuJG1xLW5vdC1sYXJnZTogbWF4LXdpZHRoIDExMTlweDtcbiRtcS1ub3QteC1sYXJnZTogbWF4LXdpZHRoIDEyNTlweDtcblxuLyogSGVpZ2h0cyAqL1xuXG4kbXEteC1zaG9ydDogbWluLWhlaWdodCA0MDBweDtcbiRtcS1zaG9ydDogbWluLWhlaWdodCA1MDBweDtcbiRtcS10YWxsOiBtaW4taGVpZ2h0IDYwMHB4O1xuJG1xLXgtdGFsbDogbWluLWhlaWdodCA3MDBweDtcblxuJG1xLW5vdC14LXNob3J0OiBtYXgtaGVpZ2h0IDM5OXB4O1xuXG4vKiBPcmllbnRhdGlvbnMgKi9cblxuJG1xLXBvcnRyYWl0OiBvcmllbnRhdGlvbiBwb3J0cmFpdDtcbiRtcS1sYW5kc2NhcGU6IG9yaWVudGF0aW9uIGxhbmRzY2FwZTtcblxuLyogQ2FwYWJpbGl0aWVzICovXG5cbiRtcS1ob3Zlci15ZXM6ICdob3ZlcjogaG92ZXInO1xuJG1xLWhvdmVyLW5vOiBob3ZlciBub25lO1xuXG4vKiBBbGlhc2VzICovXG5cbiRtcS1tYWluLW1hcmdpbjogJG1xLXNtYWxsO1xuXG4kbXEtdG9wbmF2LXZpc2libGU6ICRtcS1tZWRpdW07XG4kbXEtdG9wbmF2LWhpZGRlbjogJG1xLW5vdC1tZWRpdW07XG5cbiRtcS1zaXRlLWhlYWRlci10YWxsOiAkbXEtdGFsbDtcblxuJG1xLXN1Ym5hdi10b3A6ICRtcS1ub3Qtc21hbGw7XG4kbXEtc3VibmF2LXNpZGU6ICRtcS1zbWFsbDtcblxuJG1xLXpvb20tZW5hYmxlZDogJG1xLXNtYWxsICRtcS1zaG9ydDtcbiIsIiRkZWJ1ZzogZmFsc2U7XG5cbiRmb250LXBhdGg6ICcuLi9mb250JztcbiRpbWctcGF0aDogJy4uL2ltYWdlcyc7XG5cbiR2aWV3cG9ydC1taW4td2lkdGg6IDMyMHB4O1xuXG4kYmxvY2stZ2FwOiAydm1pbjtcbiRibG9jay1nYXAtaGFsZjogMXZtaW47XG5cbiRibG9jay1nYXAtaDogMnZoO1xuJGJsb2NrLWdhcC13OiAydnc7XG4kYmxvY2stZ2FwLXctaGFsZjogMXZ3O1xuXG4kYm94LXJhZGl1cy1zaXplOiAzcHg7XG5cbiRzaXRlLWhlYWRlci10YWxsLWhlaWdodDogNjBweDtcbiRzaXRlLWhlYWRlci1zaG9ydC1oZWlnaHQ6IDQwcHg7XG5cbiR0cmFuc2l0aW9uLWR1cmF0aW9uOiAxNTBtcztcblxuJG1haW4tbWF4LXdpZHRoOiAxMzAwcHggIWRlZmF1bHQ7XG5cbiRtYWluLW1hcmdpbjogdmFyKC0tbWFpbi1tYXJnaW4pO1xuJHNpdGUtaGVhZGVyLWhlaWdodDogdmFyKC0tc2l0ZS1oZWFkZXItaGVpZ2h0KTtcblxuJHNpdGUtaGVhZGVyLW1hcmdpbjogdmFyKC0tc2l0ZS1oZWFkZXItbWFyZ2luKTtcblxuJHNpdGUtaGVhZGVyLW91dGVyLWhlaWdodDogY2FsYygjeyRzaXRlLWhlYWRlci1oZWlnaHR9ICsgI3skc2l0ZS1oZWFkZXItbWFyZ2lufSk7XG4iLCIvKiBVbmlib2FyZDoga2VlcCB0aGUgc2FtZSBwYWdlIGxheW91dCBhY3Jvc3MgcGFnZXMgKi9cblxuJG1xLWJvYXJkLXJlc2l6YWJsZTogJG1xLXNtYWxsO1xuJG1xLWNvbDEtdW5pYm9hcmQ6ICRtcS1ub3Qtc21hbGwgJG1xLXBvcnRyYWl0O1xuJG1xLWNvbDItdW5pYm9hcmQ6ICRtcS1zbWFsbCwgJG1xLWxhbmRzY2FwZTtcbiRtcS1jb2wzLXVuaWJvYXJkOiAkbXEteC1sYXJnZTtcblxuLyogd2hlbiB0aGUgd2lkdGggaXMgYXBwcm9wcmlhdGUgZm9yIGNvbDEsIGJ1dCBsYW5kc2NhcGUgcHJldmVudHMgaXQgKi9cbiRtcS1jb2wyLXVuaWJvYXJkLXNxdWVlemU6ICRtcS1ub3Qtc21hbGwgJG1xLWxhbmRzY2FwZTtcblxuJGNvbDMtdW5pYm9hcmQtc2lkZTogbWlubWF4KDIzMHB4LCAyMHZ3KTtcbiRjb2wzLXVuaWJvYXJkLXRhYmxlOiBtaW5tYXgoMjQwcHgsIDQwMHB4KTtcbiRjb2wzLXVuaWJvYXJkLWNvbnRyb2xzOiAzcmVtO1xuXG4kY29sMy11bmlib2FyZC1taW4td2lkdGg6IGNhbGMoNzB2bWluICogdmFyKC0tYm9hcmQtc2NhbGUpKTtcbiRjb2wzLXVuaWJvYXJkLW1heC13aWR0aDogY2FsYygxMDB2aCAqIHZhcigtLWJvYXJkLXNjYWxlKSAtICN7JHNpdGUtaGVhZGVyLW91dGVyLWhlaWdodH0gLSAjeyRjb2wzLXVuaWJvYXJkLWNvbnRyb2xzfSk7XG4kY29sMy11bmlib2FyZC13aWR0aDogbWlubWF4KCRjb2wzLXVuaWJvYXJkLW1pbi13aWR0aCwgJGNvbDMtdW5pYm9hcmQtbWF4LXdpZHRoKTtcblxuJGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1zY2FsZTogMC45O1xuXG4vLyB6b29tOiA4NSVcbiRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtbWluLXdpZHRoOiA1MDBweDtcbiRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtbWF4LXdpZHRoOiBjYWxjKFxuICAxMDB2aCAqICN7JGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1zY2FsZX0gLSAjeyRzaXRlLWhlYWRlci1vdXRlci1oZWlnaHR9IC0gI3skY29sMy11bmlib2FyZC1jb250cm9sc31cbik7XG4kY29sMy11bmlib2FyZC1kZWZhdWx0LXdpZHRoOiBtaW5tYXgoI3skY29sMy11bmlib2FyZC1kZWZhdWx0LW1pbi13aWR0aH0sICN7JGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1tYXgtd2lkdGh9KTtcblxuJGNvbDItdW5pYm9hcmQtdGFibGU6ICRjb2wzLXVuaWJvYXJkLXRhYmxlO1xuJGNvbDItdW5pYm9hcmQtY29udHJvbHM6ICRjb2wzLXVuaWJvYXJkLWNvbnRyb2xzO1xuJGNvbDItdW5pYm9hcmQtd2lkdGg6ICRjb2wzLXVuaWJvYXJkLXdpZHRoO1xuJGNvbDItdW5pYm9hcmQtZGVmYXVsdC13aWR0aDogJGNvbDMtdW5pYm9hcmQtZGVmYXVsdC13aWR0aDtcblxuJGNvbDItdW5pYm9hcmQtc3F1ZWV6ZS10YWJsZTogbWlubWF4KDIwMHB4LCAyNDBweCk7XG4kY29sMi11bmlib2FyZC1zcXVlZXplLXdpZHRoOiBtaW5tYXgoY2FsYyg1NXZtaW4pLCBjYWxjKDEwMHZoIC0gI3skc2l0ZS1oZWFkZXItb3V0ZXItaGVpZ2h0fSAtICN7JGJsb2NrLWdhcH0pKTtcblxuJGNvbDEtdW5pYm9hcmQtY29udHJvbHM6IDVyZW07XG4iLCJAbWl4aW4gYm94LXJhZGl1cyB7XG4gIGJvcmRlci1yYWRpdXM6ICRib3gtcmFkaXVzLXNpemU7XG59XG5cbkBtaXhpbiBib3gtc2hhZG93IHtcbiAgYm94LXNoYWRvdzogJGJveC1zaGFkb3c7XG59XG5cbkBtaXhpbiBib3gtbmVhdCB7XG4gIEBpbmNsdWRlIGJveC1yYWRpdXM7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3c7XG59XG5cbkBtaXhpbiBkZWJ1Zy16b29tLWlucHV0IHtcbiAgI3pvb20taW5wdXQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS16b29tLWVuYWJsZWQpIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgYm90dG9tOiAzcHg7XG4gICAgICByaWdodDogM3B4O1xuICAgICAgd2lkdGg6IDEwdnc7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0cmFuc2l0aW9uKCRwcm9wOiBhbGwsICRkdXI6ICR0cmFuc2l0aW9uLWR1cmF0aW9uKSB7XG4gIHRyYW5zaXRpb246ICRwcm9wICRkdXI7XG59XG5cbkBtaXhpbiBob3ZlcmZsb3cge1xuICBvdmVyZmxvdy15OiBhdXRvO1xuXG4gIEBtZWRpYSAoaG92ZXI6IGhvdmVyKSB7XG4gICAgJjpub3QoOmhvdmVyKSB7XG4gICAgICBzY3JvbGxiYXItd2lkdGg6IG5vbmU7XG5cbiAgICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGhpZGUge1xuICBkaXNwbGF5OiBub25lO1xuXG4gIC5ibGluZC1tb2RlICYge1xuICAgIGRpc3BsYXk6IGluaGVyaXQ7XG4gIH1cbn1cblxuQG1peGluIGVsbGlwc2lzIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG59XG5cbkBtaXhpbiBjcm9zc3RhYmxlLWxhcmdlIHtcbiAgLmNyb3NzdGFibGVfX3VzZXJzIHtcbiAgICBmbGV4OiA3IDEgYXV0bztcbiAgfVxufVxuXG5AbWl4aW4gY3Jvc3N0YWJsZS1zbWFsbCB7XG4gIC5jcm9zc3RhYmxlX191c2VycyB7XG4gICAgZmxleDogMSAxIGF1dG87XG4gIH1cbn1cblxuQG1peGluIGJvZHktZml4ZWQtc2Nyb2xsIHtcbiAgYm9keSB7XG4gICAgLyogcHJldmVudHMgc2Nyb2xsIGJhciBmbGlja2VyIHdoZW4gZHJhZ2dpbmcgYSBwaWVjZSBvdXQgKi9cbiAgICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gIH1cbn1cbiIsIiViYXNlLWZvbnQtZmFsbGJhY2sge1xuICBmb250LWZhbWlseTogJ05vdG8gU2FucycsIFNhbnMtU2VyaWY7XG59XG5cbiViYXNlLWZvbnQge1xuICBmb250LWZhbWlseTogJ05vdG8gU2FucycsIFNhbnMtU2VyaWY7XG59XG5cbiVyb2JvdG8ge1xuICBmb250LWZhbWlseTogJ1JvYm90bycsIFNhbnMtU2VyaWY7XG59XG5cbiVyb2JvdG8tZmF0IHtcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nLCBTYW5zLVNlcmlmO1xuICBmb250LXdlaWdodDogNjAwO1xufVxuXG4lY2hlc3MtZm9udCB7XG4gIGZvbnQtZmFtaWx5OiAnTm90byBDaGVzcycsICdOb3RvIFNhbnMnO1xufVxuXG4lc2FuIHtcbiAgQGV4dGVuZCAlY2hlc3MtZm9udDtcblxuICAucGllY2UtbGV0dGVyICYge1xuICAgIEBleHRlbmQgJWJhc2UtZm9udDtcbiAgfVxuXG4gIGRyYXcge1xuICAgIEBleHRlbmQgJXJvYm90bztcbiAgICBtYXJnaW4tbGVmdDogMWNoO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIH1cbn1cblxuLyogdGV4dCBwcmludGVkIGRpcmVjdGx5IG9uIHRoZSBwYWdlIGJhY2tncm91bmQgZGVzZXJ2ZXMgc3BlY2lhbCB0cmVhdG1lbnQgKHRyYW5zcCB0aGVtZSkgKi9cbiVwYWdlLWZvbnQge1xuICBjb2xvcjogJGMtZm9udC1wYWdlO1xufVxuXG4lcGFnZS10ZXh0IHtcbiAgQGV4dGVuZCAlcGFnZS1mb250LCAlcGFnZS10ZXh0LXNoYWRvdyAhb3B0aW9uYWw7XG59XG5cbiVwYWdlLWxpbmsge1xuICBAZXh0ZW5kICVwYWdlLWxpbmstZm9udCAhb3B0aW9uYWw7XG5cbiAgQGV4dGVuZCAlcGFnZS10ZXh0LXNoYWRvdyAhb3B0aW9uYWw7XG59XG5cbiVtZXRhbCB7XG4gIEBpbmNsdWRlIG1ldGFsO1xufVxuXG4lbWV0YWwtaG92ZXIge1xuICBAaW5jbHVkZSBtZXRhbC1ob3Zlcjtcbn1cblxuJXBhZ2UtbWV0YWwge1xuICBAaW5jbHVkZSBwYWdlLW1ldGFsO1xufVxuXG4lcGFnZS1tZXRhbC1ob3ZlciB7XG4gIEBpbmNsdWRlIHBhZ2UtbWV0YWw7XG59XG5cbiVtZXRhbC1iZyB7XG4gIEBpbmNsdWRlIG1ldGFsLWJnO1xufVxuXG4lYWN0aXZlLWluc2V0LXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IDAgM3B4IDRweCBoc2xhKDAsIDAsIDAsIDAuMTUpIGluc2V0O1xufVxuXG4lYWN0aXZlIHtcbiAgQGV4dGVuZCAlYWN0aXZlLWluc2V0LXNoYWRvdztcblxuICBiYWNrZ3JvdW5kOiAkYy1hY2NlbnQ7XG4gIGNvbG9yOiAjZmZmO1xuICB0ZXh0LXNoYWRvdzogMCAxcHggMXB4IGJsYWNrICFpbXBvcnRhbnQ7XG59XG5cbiVhY3RpdmUtaG92ZXIge1xuICBiYWNrZ3JvdW5kOiBtaXgod2hpdGUsICRjLWFjY2VudCwgMjAlKTtcbn1cblxuJWFjdGl2ZS1zb2Z0IHtcbiAgQGV4dGVuZCAlYWN0aXZlLWluc2V0LXNoYWRvdztcblxuICBiYWNrZ3JvdW5kOiAkYy1zaGFkZTtcbiAgY29sb3I6ICRjLWZvbnQtY2xlYXJlcjtcbiAgdGV4dC1zaGFkb3c6IDFweCAxcHggMXB4ICRjLWZvbnQtc2hhZG93ICFpbXBvcnRhbnQ7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4lZHJvcGRvd24tc2hhZG93IHtcbiAgYm94LXNoYWRvdzogLTFweCA1cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4zKTtcbn1cblxuJXBvcHVwLXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IDAgMTRweCAyOHB4IHJnYmEoMCwgMCwgMCwgMC4yNSksIDAgMTBweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4yMik7XG59XG5cbiVidXR0b24tc2hhZG93IHtcbiAgYm94LXNoYWRvdzogMCAycHggNXB4IDAgaHNsYSgwLCAwLCAwJSwgMC4yMjUpO1xufVxuXG4lYnV0dG9uLXJhaXNlZC1zaGFkb3cge1xuICBib3gtc2hhZG93OiAwIDRweCAxMHB4IDBweCBoc2xhKDAsIDAsIDAsIDAuMjI1KTtcbn1cblxuJWJ1dHRvbi1ub25lIHtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBjb2xvcjogJGMtZm9udDtcbiAgYWxpZ24taXRlbXM6IG5vcm1hbDtcbn1cblxuJWNoZWNrYm94IHtcbiAgQGV4dGVuZCAlYm94LXJhZGl1cztcblxuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIGJhY2tncm91bmQ6ICRjLWJnLXBhZ2U7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRjLWJnLWxvdztcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nOiAwLjVlbTtcblxuICAmOmNoZWNrZWQge1xuICAgIGJhY2tncm91bmQ6ICRjLXNlY29uZGFyeS1kaW1tZXI7XG4gICAgYm9yZGVyLWNvbG9yOiAkYy1zZWNvbmRhcnktZGltO1xuICB9XG59XG5cbiVmb2N1cy1zaGFkb3cge1xuICBib3gtc2hhZG93OiAwIDAgMTJweCAkYy1mb250LWRpbTtcbn1cblxuJXphbGdvdmVyZmxvdyB7XG4gIC8vIG1pdGlnYXRlIHphbGdvIHRleHRcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuJW5vd3JhcC1oaWRkZW4ge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4lbm93cmFwLWVsbGlwc2lzIHtcbiAgQGV4dGVuZCAlZWxsaXBzaXM7XG5cbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuJWJveC1wYWRkaW5nIHtcbiAgcGFkZGluZzogNXZoIHZhcigtLWJveC1wYWRkaW5nKTtcbn1cblxuJWJveC1wYWRkaW5nLWhvcml6IHtcbiAgcGFkZGluZzogMCB2YXIoLS1ib3gtcGFkZGluZyk7XG59XG5cbiVicmVhay13b3JkIHtcbiAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcbn1cblxuJWJyZWFrLXdvcmQtaGFyZCB7XG4gIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG4gIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcblxuICAvKiBzdXBwb3J0OiBmaXJlZm94ICovXG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG59XG5cbiVicmVhay1ub3BlIHtcbiAgb3ZlcmZsb3ctd3JhcDogbm9ybWFsO1xuICB3b3JkLWJyZWFrOiBub3JtYWw7XG59XG5cbiVlbGxpcHNpcyB7XG4gIEBpbmNsdWRlIGVsbGlwc2lzO1xufVxuXG4lc3F1YXJlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiAwO1xuICBwYWRkaW5nLWJvdHRvbTogMTAwJTtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbiV2aWRlbyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGhlaWdodDogMDtcbiAgcGFkZGluZy1ib3R0b206IDU2LjI1JTtcblxuICAvKiAxNi85ICovXG4gIC8vIHBhZGRpbmctYm90dG9tOiA3NSU7IC8qIDQvMyAqL1xuICB3aWR0aDogMTAwJTtcblxuICA+ICoge1xuICAgIEBleHRlbmQgJWFicy0xMDA7XG5cbiAgICBib3JkZXI6IG5vbmU7XG4gIH1cbn1cblxuJWdhbWUtZW1iZWQge1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1ub3QteHgtc21hbGwpIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMTYwJTtcbiAgfVxufVxuXG4lZGF0YS1pY29uIHtcbiAgZm9udC1zaXplOiAxLjJlbTtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgZm9udC1mYW1pbHk6ICdsaWNoZXNzJztcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgY29udGVudDogYXR0cihkYXRhLWljb24pO1xuICBvcGFjaXR5OiAwLjk7XG59XG5cbiVkYXRhLWljb24tdG9wIHtcbiAgJjo6YmVmb3JlIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC10b3A7XG4gIH1cbn1cblxuJWZ1bGxzY3JlZW4tbWFzayB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICBiYWNrZ3JvdW5kOiAkYy1wYWdlLW1hc2s7XG4gIHotaW5kZXg6IHooJ2Z1bGxzY3JlZW4tbWFzaycpO1xufVxuXG4lbGluay1vdmVybGF5IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHotaW5kZXg6IHooJ2xpbmstb3ZlcmxheScpO1xufVxuXG4lYWJzLTEwMCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbn1cblxuJWRvdWJsZS10YXAge1xuICAvLyBwcmV2ZW50IGlQYWQgc2FmYXJpIGZyb20gem9vbWluZyBpbiBvbiBkb3VibGUgdGFwXG4gIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xufVxuIiwiJWZsZXgtd3JhcCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XG59XG5cbiVmbGV4LWNlbnRlciB7XG4gIC8qIGV4dGVuZHMgJWZsZXgtd3JhcCAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4lZmxleC1jZW50ZXItbm93cmFwIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4lZmxleC1iZXR3ZWVuIHtcbiAgLyogZXh0ZW5kcyAlZmxleC1jZW50ZXIgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuXG4lZmxleC1iZXR3ZWVuLW5vd3JhcCB7XG4gIC8qIGV4dGVuZHMgJWZsZXgtY2VudGVyICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuXG4lZmxleC1iZXR3ZWVuLXN0cmV0Y2gge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xufVxuXG4lZmxleC1hcm91bmQge1xuICAvKiBleHRlbmRzICVmbGV4LWNlbnRlciAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbn1cblxuJWZsZXgtY29sdW1uIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiBjb2x1bW47XG59XG4iLCIlYm94LXJhZGl1cyB7XG4gIEBpbmNsdWRlIGJveC1yYWRpdXM7XG59XG5cbiVib3gtcmFkaXVzLWZvcmNlIHtcbiAgQGV4dGVuZCAlYm94LXJhZGl1cztcblxuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gIC8qIGhlbHBzIHdpdGggY2xpcHBpbmcgYmFja2dyb3VuZCBpbnRvIGJvcmRlci1yYWRpdXMgKi9cbn1cblxuJWJveC1yYWRpdXMtbGVmdCB7XG4gIGJvcmRlci1yYWRpdXM6ICRib3gtcmFkaXVzLXNpemUgMCAwICRib3gtcmFkaXVzLXNpemU7XG59XG5cbiVib3gtcmFkaXVzLXJpZ2h0IHtcbiAgYm9yZGVyLXJhZGl1czogMCAkYm94LXJhZGl1cy1zaXplICRib3gtcmFkaXVzLXNpemUgMDtcbn1cblxuJWJveC1yYWRpdXMtdG9wIHtcbiAgYm9yZGVyLXJhZGl1czogJGJveC1yYWRpdXMtc2l6ZSAkYm94LXJhZGl1cy1zaXplIDAgMDtcbn1cblxuJWJveC1yYWRpdXMtYm90dG9tIHtcbiAgYm9yZGVyLXJhZGl1czogMCAwICRib3gtcmFkaXVzLXNpemUgJGJveC1yYWRpdXMtc2l6ZTtcbn1cblxuJWJveC1yYWRpdXMtdG9wLWxlZnQge1xuICBib3JkZXItcmFkaXVzOiAkYm94LXJhZGl1cy1zaXplIDAgMCAwO1xufVxuXG4lYm94LXJhZGl1cy10b3AtcmlnaHQge1xuICBib3JkZXItcmFkaXVzOiAwICRib3gtcmFkaXVzLXNpemUgMCAwO1xufVxuXG4lYm94LXNoYWRvdyB7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3c7XG59XG5cbiVib3gtbmVhdCB7XG4gIEBleHRlbmQgJWJveC1zaGFkb3csICVib3gtcmFkaXVzO1xufVxuXG4lYm94LW5lYXQtdG9wIHtcbiAgQGV4dGVuZCAlYm94LXNoYWRvdywgJWJveC1yYWRpdXMtdG9wO1xufVxuXG4lYm94LW5lYXQtZm9yY2Uge1xuICBAZXh0ZW5kICVib3gtc2hhZG93LCAlYm94LXJhZGl1cy1mb3JjZTtcbn1cbiIsIiR2cC1taW4td2lkdGg6IDMyMHB4ICFkZWZhdWx0O1xuJHZwLW1heC13aWR0aDogMTIwMHB4ICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gc3RyaXAtdW5pdCgkdmFsdWUpIHtcbiAgQHJldHVybiAkdmFsdWUgLyAoJHZhbHVlICogMCArIDEpO1xufVxuXG5AbWl4aW4gZmx1aWQtc2l6ZSgkcHJvcCwgJG1pbi1zaXplLCAkbWF4LXNpemUsICRtaW4tdnc6ICR2cC1taW4td2lkdGgsICRtYXgtdnc6ICR2cC1tYXgtd2lkdGgpIHtcbiAgJHUxOiB1bml0KCRtaW4tdncpO1xuICAkdTI6IHVuaXQoJG1heC12dyk7XG4gICR1MzogdW5pdCgkbWluLXNpemUpO1xuICAkdTQ6IHVuaXQoJG1heC1zaXplKTtcblxuICBAaWYgJHUxID09ICR1MiBhbmQgJHUxID09ICR1MyBhbmQgJHUxID09ICR1NCB7XG4gICAgJiB7XG4gICAgICAjeyRwcm9wfTogJG1pbi1zaXplO1xuXG4gICAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbi12dykge1xuICAgICAgICAjeyRwcm9wfTogY2FsYyhcbiAgICAgICAgICAjeyRtaW4tc2l6ZX0gKyAje3N0cmlwLXVuaXQoJG1heC1zaXplIC0gJG1pbi1zaXplKX0gKlxuICAgICAgICAgICAgKCgxMDB2dyAtICN7JG1pbi12d30pIC8gI3tzdHJpcC11bml0KCRtYXgtdncgLSAkbWluLXZ3KX0pXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWF4LXZ3KSB7XG4gICAgICAgICN7JHByb3B9OiAkbWF4LXNpemU7XG4gICAgICB9XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAZXJyb3IgXCJmbHVpZC1zaXplIHJlcXVpcmVzIHRoYXQgYWxsIHZhbHVlcyBoYXZlIHRoZSBzYW1lIHVuaXRcIjtcbiAgfVxufVxuIiwiLmZidCB7XG4gIEBleHRlbmQgJWJ1dHRvbi1ub25lO1xuXG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG5cbiAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcblxuICBAbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuICAgICY6aG92ZXI6bm90KC5kaXNhYmxlZCk6bm90KFtkaXNhYmxlZF0pIHtcbiAgICAgIGJhY2tncm91bmQ6IG1peCgkYy1zZWNvbmRhcnksICRjLWJnLWJveCwgNzUlKTtcbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgIH1cbiAgfVxuXG4gICYuYWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1zZWNvbmRhcnkgIWltcG9ydGFudDtcbiAgICBjb2xvcjogI2ZmZjtcbiAgfVxuXG4gICYuZGlzYWJsZWQsXG4gICZbZGlzYWJsZWRdIHtcbiAgICBvcGFjaXR5OiAwLjU7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xuICB9XG59XG4iLCJAa2V5ZnJhbWVzIGJhci1nbGlkZXItYW5pbSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEzMDBweCk7XG4gIH1cblxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjEwMHB4KTtcbiAgfVxufVxuXG4uYmFyLWdsaWRlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAmOjphZnRlciB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogNzBweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMCksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKSk7XG4gICAgYW5pbWF0aW9uOiBiYXItZ2xpZGVyLWFuaW0gM3MgbGluZWFyIGluZmluaXRlO1xuICB9XG59XG4iLCIuc2xpc3Qge1xuICB3aWR0aDogMTAwJTtcbiAgYm9yZGVyLWJvdHRvbTogJGJvcmRlcjtcblxuICB0aGVhZCB7XG4gICAgQGV4dGVuZCAlbWV0YWwsICVyb2JvdG87XG5cbiAgICB0aCB7XG4gICAgICBib3JkZXItdG9wOiAkYm9yZGVyO1xuICAgICAgYm9yZGVyLWJvdHRvbTogJGJvcmRlcjtcbiAgICAgIHBhZGRpbmc6IDAuNXJlbSAwLjhyZW07XG4gICAgfVxuXG4gICAgdGgubGFyZ2Uge1xuICAgICAgZm9udC1zaXplOiAxLjJyZW07XG4gICAgfVxuICB9XG5cbiAgdGQge1xuICAgIHBhZGRpbmc6IDFyZW07XG5cbiAgICAubGFiZWwge1xuICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTtcbiAgICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgIH1cbiAgfVxuXG4gIHRib2R5IHRyOm50aC1jaGlsZChldmVuKSB7XG4gICAgYmFja2dyb3VuZDogJGMtYmctemVicmE7XG4gIH1cblxuICB0ZDpmaXJzdC1jaGlsZCxcbiAgdGg6Zmlyc3QtY2hpbGQge1xuICAgIHBhZGRpbmctbGVmdDogMS41cmVtO1xuICB9XG5cbiAgJi1wYWQge1xuICAgIHRkOmZpcnN0LWNoaWxkLFxuICAgIHRoOmZpcnN0LWNoaWxkIHtcbiAgICAgIHBhZGRpbmctbGVmdDogdmFyKC0tYm94LXBhZGRpbmcpO1xuICAgIH1cblxuICAgIHRkOmxhc3QtY2hpbGQsXG4gICAgdGg6bGFzdC1jaGlsZCB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1ib3gtcGFkZGluZyk7XG4gICAgfVxuICB9XG5cbiAgJi1pbnZlcnQge1xuICAgIHRib2R5IHRyOm50aC1jaGlsZChvZGQpIHtcbiAgICAgIGJhY2tncm91bmQ6ICRjLWJnLXplYnJhO1xuICAgIH1cblxuICAgIHRib2R5IHRyOm50aC1jaGlsZChldmVuKSB7XG4gICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIH1cbiAgfVxufVxuIiwiLnB1bGwtcXVvdGUge1xuICBtYXJnaW46IDAgYXV0bztcblxuICBwIHtcbiAgICBjb2xvcjogJGMtZm9udDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWFyZ2luOiAwIDAuN2VtO1xuICAgIHBhZGRpbmc6IDFlbSAwO1xuICAgIGJvcmRlcjogJGJvcmRlcjtcbiAgICBib3JkZXItd2lkdGg6IDFweCAwO1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICBmb250LXNpemU6IDEuMXJlbTtcblxuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBib3R0b206IC05cHg7XG4gICAgICBsZWZ0OiA0MnB4O1xuICAgICAgd2lkdGg6IDE1cHg7XG4gICAgICBoZWlnaHQ6IDE1cHg7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG4gICAgICBib3JkZXItbGVmdDogMnB4IHNvbGlkICRjLWJvcmRlcjtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYy1ib3JkZXI7XG4gICAgICB0cmFuc2Zvcm06IHNrZXcoNDVkZWcpIHJvdGF0ZSgtNDVkZWcpO1xuICAgIH1cbiAgfVxuXG4gICYubG9uZyBwIHtcbiAgICBmb250LXNpemU6IDFyZW07XG4gIH1cblxuICBmb290ZXIge1xuICAgIG1hcmdpbjogMTBweDtcbiAgICBsaW5lLWhlaWdodDogMjBweDtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcblxuICAgICY6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICdcXDIwMTRcXDIwMDknO1xuICAgIH1cbiAgfVxufVxuIiwiJWZpcmUtdHJvcGh5LXNoYWRvdyB7XG4gIHRleHQtc2hhZG93OiAwIDAuMDA4ZW0gMC4xMjdlbSAjZmVmY2M5LCAwLjA1NWVtIC0wLjA2NmVtIDAuMmVtICNmZWVjODUsIC0wLjExMWVtIC0wLjEyN2VtIDAuMjcyZW0gI2ZmYWUzNCxcbiAgICAwLjExMWVtIC0wLjI3MmVtIDAuNDExZW0gI2VjNzYwYywgLTAuMTExZW0gLTAuNDU2ZW0gMC40MTZlbSAjY2Q0NjA2LCAwIC0wLjUzM2VtIDAuNTc3ZW0gIzk3MzcxNixcbiAgICAwLjA1NWVtIC0wLjU1ZW0gMC41MzNlbSAjNDUxYjBlO1xufVxuXG5Aa2V5ZnJhbWVzIGZpcmUtdHJvcGh5IHtcbiAgMCUge1xuICAgIHRleHQtc2hhZG93OiAwIDAuMDA4ZW0gMC4xMjdlbSAjZmVmY2M5LCAwLjA1NWVtIC0wLjA2NmVtIDAuMmVtICNmZWVjODUsIC0wLjExMWVtIC0wLjEyN2VtIDAuMjcyZW0gI2ZmYWUzNCxcbiAgICAgIDAuMTExZW0gLTAuMjcyZW0gMC40MTFlbSAjZWM3NjBjLCAtMC4xMTFlbSAtMC40NTZlbSAwLjQxNmVtICNjZDQ2MDYsIDAgLTAuNTMzZW0gMC41NzdlbSAjOTczNzE2LFxuICAgICAgMC4wNTVlbSAtMC41NWVtIDAuNTMzZW0gIzQ1MWIwZTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIHRleHQtc2hhZG93OiAwIDAgMC4xMTFlbSAjZmVmY2M5LCAwLjA1NWVtIC0wLjA1NWVtIDAuMTY2ZW0gI2ZlZmNjOSwgLTAuMTExZW0gLTAuMTExZW0gMC4yMjJlbSAjZmVlYzg1LFxuICAgICAgMC4xMjJlbSAtMC4yMzNlbSAwLjMzM2VtICNmZmFlMzQsIC0wLjEyMmVtIC0wLjMyMmVtIDAuMjc3ZW0gI2VjNzYwYywgMCAtMC40NTZlbSAwLjQ0NGVtICNjZDQ2MDYsXG4gICAgICAwLjA1NWVtIC0wLjVlbSAwLjQ0NGVtICM5NzM3MTY7XG4gIH1cbn1cblxuLmZpcmUtdHJvcGh5IHtcbiAgQGV4dGVuZCAlZmlyZS10cm9waHktc2hhZG93O1xuXG4gIGNvbG9yOiAkYy1mb250O1xuICBmb250LXNpemU6IDkwcHg7XG4gIGRpc3BsYXk6IGJsb2NrO1xuXG4gICY6aG92ZXIge1xuICAgIGFuaW1hdGlvbjogZmlyZS10cm9waHkgMS41cyBlYXNlLWluLW91dCBpbmZpbml0ZSBhbHRlcm5hdGU7XG4gIH1cbn1cbiIsIi5jb2xvci1pY29uIHtcbiAgQGlmICR0aGVtZS1saWdodCB7XG4gICAgJi53aGl0ZTo6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICfugL4nO1xuICAgIH1cblxuICAgICYuYmxhY2s6OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAn7oC9JztcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICYud2hpdGU6OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAn7oC9JztcbiAgICB9XG5cbiAgICAmLmJsYWNrOjpiZWZvcmUge1xuICAgICAgY29udGVudDogJ+6Avic7XG4gICAgfVxuICB9XG5cbiAgJi5yYW5kb206OmJlZm9yZSB7XG4gICAgY29udGVudDogJ+6Bnyc7XG4gIH1cbn1cbiIsIi5jb250ZXh0LXN0cmVhbWVycyB7XG4gIG1heC1oZWlnaHQ6IDIwdmg7XG4gIG92ZXJmbG93LXk6IGF1dG87XG59XG5cbi5jb250ZXh0LXN0cmVhbWVyIHtcbiAgQGV4dGVuZCAlbm93cmFwLWhpZGRlbiwgJWJveC1yYWRpdXMtYm90dG9tLCAlYm94LXNoYWRvdywgJWZsZXgtY2VudGVyLW5vd3JhcDtcblxuICBoZWlnaHQ6IDIuMmVtO1xuICBjb2xvcjogJGMtc2Vjb25kYXJ5LW92ZXIgIWltcG9ydGFudDtcbiAgYmFja2dyb3VuZDogbWl4KCRjLXNlY29uZGFyeSwgJGMtYmctcGFnZSwgNjAlKTtcblxuICBAaW5jbHVkZSB0cmFuc2l0aW9uO1xuXG4gICY6OmJlZm9yZSB7XG4gICAgZm9udC1zaXplOiAxLjNlbTtcbiAgICBtYXJnaW4tbGVmdDogMC40ZW07XG4gIH1cblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtc2Vjb25kYXJ5LCAkYy1iZy1wYWdlLCA4MCUpO1xuICB9XG59XG4iLCIucG9kaXVtLXdyYXAge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHBhZGRpbmctYm90dG9tOiAyMHB4O1xuXG4gICNjb25mZXR0aSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDI1cztcblxuICAgICYuZmFkZWQge1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gIH1cbn1cblxuLnBvZGl1bSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMjtcblxuICA+IGRpdiB7XG4gICAgQGV4dGVuZCAlZWxsaXBzaXM7XG5cbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuXG4gICAgJi5sYW1lIHtcbiAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICAgIC51c2VyLWxpbmsge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgIH1cbiAgICAgIC50cm9waHkge1xuICAgICAgICBvcGFjaXR5OiAwLjM7XG4gICAgICAgIGZpbHRlcjogZ3JheXNjYWxlKDEwMCUpIGNvbnRyYXN0KDEwJSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmZpcnN0IHtcbiAgICAvLyBzYW1lIHdpZHRoIHRvIGZpdCBpbiBtdWx0aXBsZSBmaXJzdCBwbGFjZXNcbiAgICB3aWR0aDogMzMlO1xuICAgIGZvbnQtc2l6ZTogMS42ZW07XG4gIH1cblxuICAuc2Vjb25kIHtcbiAgICBmb250LXNpemU6IDEuM2VtO1xuICAgIHdpZHRoOiAzMyU7XG4gIH1cblxuICAudGhpcmQge1xuICAgIGZvbnQtc2l6ZTogMS4yZW07XG4gICAgd2lkdGg6IDMzJTtcbiAgfVxuXG4gIC50cm9waHkge1xuICAgIG1hcmdpbjogMCBhdXRvIDAuNWVtIGF1dG87XG4gICAgYmFja2dyb3VuZDogY2VudGVyIC8gY29udGFpbiBuby1yZXBlYXQ7XG4gIH1cblxuICAuZmlyc3QgLnRyb3BoeSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGhlaWdodDogOWVtO1xuICAgIHdpZHRoOiA5ZW07XG4gICAgYmFja2dyb3VuZC1pbWFnZTogaW1nLXVybCgndHJvcGh5L2xpY2hlc3MtbWFzc2l2ZS5zdmcnKTtcbiAgICBpc29sYXRpb246IGlzb2xhdGU7XG5cbiAgICAmOjphZnRlciB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGluc2V0OiAwO1xuICAgICAgYmFja2dyb3VuZDogY2VudGVyIC8gY29udGFpbiBuby1yZXBlYXQ7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbWctdXJsKCd0cm9waHkvbGljaGVzcy1tYXNzaXZlLnN2ZycpO1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB6LWluZGV4OiAzO1xuICAgIH1cbiAgfVxuXG4gIC50cm9waHktbWFzY290IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAtMC4wNWVtO1xuICAgIGxlZnQ6IDUwJTtcbiAgICB3aWR0aDogOS42ZW07XG4gICAgaGVpZ2h0OiAxMC4yZW07XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICAgIHotaW5kZXg6IDI7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG5cbiAgLnRyb3BoeS1tYXNjb3RfX3Nwcml0ZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBib3R0b206IC0wLjFlbTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgtNWVtKTtcbiAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xuICB9XG5cbiAgLnRyb3BoeS1tYXNjb3RfX3Nwcml0ZS0tY29tcGFuaW9uIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgtNmVtKTtcbiAgfVxuXG4gIC50cm9waHktbWFzY290X19zcHJpdGUtLXBvcHBpbmcge1xuICAgIGFuaW1hdGlvbjogdHJvcGh5LW1hc2NvdC1wb3AgNi40cyBlYXNlLW91dCAwLjhzIGZvcndhcmRzO1xuICB9XG5cbiAgLnRyb3BoeS1tYXNjb3RfX3Nwcml0ZS0tY29tcGFuaW9uLnRyb3BoeS1tYXNjb3RfX3Nwcml0ZS0tcG9wcGluZyB7XG4gICAgYW5pbWF0aW9uOiB0cm9waHktbWFzY290LXBvcC1jb21wYW5pb24gNi40cyBlYXNlLW91dCAwLjhzIGZvcndhcmRzO1xuICB9XG5cbiAgLnRyb3BoeS1tYXNjb3RfX3ZpZGVvIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTIuM2VtO1xuICAgIGhlaWdodDogYXV0bztcbiAgfVxuXG4gIEBrZXlmcmFtZXMgdHJvcGh5LW1hc2NvdC1wb3Age1xuICAgIDAlIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKC01ZW0pO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoLTguMmVtKTtcbiAgICB9XG4gIH1cblxuICBAa2V5ZnJhbWVzIHRyb3BoeS1tYXNjb3QtcG9wLWNvbXBhbmlvbiB7XG4gICAgMCUge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoLTZlbSk7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgtOS4yZW0pO1xuICAgIH1cbiAgfVxuXG4gIC5zZWNvbmQgLnRyb3BoeSB7XG4gICAgaGVpZ2h0OiA5ZW07XG4gICAgd2lkdGg6IDdlbTtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbWctdXJsKCd0cm9waHkvbGljaGVzcy1zaWx2ZXItMS5zdmcnKTtcbiAgfVxuXG4gIC50aGlyZCAudHJvcGh5IHtcbiAgICBoZWlnaHQ6IDdlbTtcbiAgICB3aWR0aDogN2VtO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGltZy11cmwoJ3Ryb3BoeS9saWNoZXNzLWJyb256ZS0yLnN2ZycpO1xuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtbm90LXh4LXNtYWxsKSB7XG4gICAgLnRyb3BoeSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gIC51c2VyLWxpbmsge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGxldHRlci1zcGFjaW5nOiAtMXB4O1xuICB9XG5cbiAgLnN0YXRzIHtcbiAgICBtYXJnaW46IDAuNWVtIGF1dG8gMCBhdXRvO1xuICAgIGZvbnQtc2l6ZTogMC43ZW07XG5cbiAgICB0aCB7XG4gICAgICBsZXR0ZXItc3BhY2luZzogLTFweDtcbiAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgfVxuXG4gICAgdGQge1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDVweDtcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIC50aGlyZCAuc3RhdHMge1xuICAgIGZvbnQtc2l6ZTogMC44ZW07XG4gIH1cbn1cbiIsIi5ub3ctcGxheWluZyB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIC0tbnAtbWluLXdpZHRoOiAyMDBweDtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1ub3QteHgtc21hbGwpIHtcbiAgICAtLW5wLW1pbi13aWR0aDogNTAlO1xuICB9XG5cbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maWxsLCBtaW5tYXgodmFyKC0tbnAtbWluLXdpZHRoKSwgMWZyKSk7XG5cbiAgPiBhIHtcbiAgICBjb2xvcjogJGMtZm9udDtcbiAgICBwYWRkaW5nOiAwLjNlbTtcbiAgfVxuXG4gIC5pbmRpY2F0b3Ige1xuICAgIGNvbG9yOiAkYy1hY2NlbnQ7XG4gICAgbWFyZ2luLXRvcDogLTNweDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gIGNnLWJvYXJkIHtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICB9XG59XG4iLCJAaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL2Jhc2Uvc2Nyb2xsYmFyJztcblxuQGltcG9ydCAndGFiJztcbkBpbXBvcnQgJ21lbWJlcnMnO1xuQGltcG9ydCAnZGlzY3Vzc2lvbic7XG5AaW1wb3J0ICdwYWxhbnRpcic7XG5cbi5tY2hhdCB7XG4gIEBleHRlbmQgJWJveC1uZWF0LWZvcmNlLCAlZmxleC1jb2x1bW47XG5cbiAgZ3JpZC1hcmVhOiBjaGF0O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHN0cmV0Y2g7XG5cbiAgJl9fY29udGVudCB7XG4gICAgQGV4dGVuZCAlZmxleC1jb2x1bW47XG5cbiAgICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG4gICAgZmxleDogMSAxIGF1dG87XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICYubm90ZSB0ZXh0YXJlYSB7XG4gICAgICBmb250LXNpemU6IDAuOWVtO1xuICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBsaW5lLWhlaWdodDogMS43ZW07XG4gICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgcmVzaXplOiBub25lO1xuXG4gICAgICAvLyBQcmV2ZW50IFNhZmFyaSBpT1MgYXV0by16b29tIHdoZW4gZm9jdXNlZCAodHJpZ2dlcmVkIHdoZW4gZm9udC1zaXplIDwgMTZweClcbiAgICAgIEBtZWRpYSAoaG92ZXI6IG5vbmUpIHtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG1pbi1oZWlnaHQ6IDE1ZW07XG59XG4iLCJib2R5Ojotd2Via2l0LXNjcm9sbGJhcixcbmJvZHk6Oi13ZWJraXQtc2Nyb2xsYmFyLWNvcm5lciB7XG4gIHdpZHRoOiAwLjVyZW07XG4gIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbn1cblxuYm9keTo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICBiYWNrZ3JvdW5kOiAkYy1zaGFkZTtcbn1cblxuYm9keTo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIsXG5ib2R5Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYjphY3RpdmUge1xuICBiYWNrZ3JvdW5kOiAkYy1mb250LWRpbW1lcjtcbn1cbiIsIi5tY2hhdCB7XG4gICZfX3RhYnMge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gIH1cblxuICAmX190YWIge1xuICAgIEBleHRlbmQgJXJvYm90bywgJW5vd3JhcC1oaWRkZW4sICVib3gtcmFkaXVzLXRvcDtcblxuICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAwLjRlbSAxMHB4O1xuXG4gICAgLy8gYmFja2dyb3VuZDogJGMtc2hhZGU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGNvbG9yOiAkYy1mb250LXBhZ2U7XG5cbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtYWNjZW50LCAkYy1iZy1ib3gsIDE1JSk7XG4gICAgfVxuXG4gICAgJi1hY3RpdmUge1xuICAgICAgY29sb3I6ICRjLWZvbnQ7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3ggIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBpbnB1dCB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgICBAZXh0ZW5kICVjaGVja2JveDtcbiAgICB9XG5cbiAgICAmLWFjdGl2ZSBpbnB1dCB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICBzcGFuIHtcbiAgICAgIEBleHRlbmQgJW5vd3JhcC1lbGxpcHNpcztcbiAgICB9XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgYm9yZGVyLXJpZ2h0OiBub25lO1xuICAgIH1cbiAgfVxuXG4gICYtb3B0aW9uYWwgLm1jaGF0X190YWIuZGlzY3Vzc2lvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxufVxuIiwiLmNoYXRfX21lbWJlcnMge1xuICBAZXh0ZW5kICVwYWdlLXRleHQ7XG5cbiAgZm9udC1zaXplOiAwLjllbTtcblxuICAvLyBtaW4taGVpZ2h0OiA1ZW07XG4gIC8vIG1heC1oZWlnaHQ6IDllbTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICZfX2lubmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICB9XG5cbiAgJl9fbnVtYmVyIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXA7XG4gICAgbWFyZ2luLXJpZ2h0OiAxY2g7XG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGZvbnQtc2l6ZTogMWVtO1xuICAgICAgY29sb3I6ICRjLWZvbnQtZGltO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAwLjJjaDtcbiAgICB9XG4gIH1cbn1cbiIsIi5tY2hhdCB7XG4gICZfX21lc3NhZ2VzIHtcbiAgICBAZXh0ZW5kICVicmVhay13b3JkO1xuXG4gICAgZmxleDogMSAxIGF1dG87XG4gICAgbWF4LWhlaWdodDogNTB2aDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDMtdW5pYm9hcmQpIHtcbiAgICAgIG1heC1oZWlnaHQ6IG5vbmU7XG4gICAgfVxuXG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgY3Vyc29yOiBpbml0aWFsO1xuICAgIGZvbnQtc2l6ZTogMC45ZW07XG5cbiAgICBsaSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBwYWRkaW5nOiAwLjVlbSA1cHggMC41ZW0gMTBweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjJlbTtcbiAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcbiAgICAgIHVzZXItc2VsZWN0OiB0ZXh0O1xuXG4gICAgICAmLm1lIHtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCAkYy1zZWNvbmRhcnktZGltO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDdweDtcbiAgICAgIH1cblxuICAgICAgJi5ob3N0IHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgkYy1zZWNvbmRhcnktZGltLCAwLjQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5kZWxldGVkIHtcbiAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICB9XG5cbiAgICAuc3lzdGVtIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgb3BhY2l0eTogMC44O1xuICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgZm9udC1zaXplOiAwLjllbTtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cblxuICAgIC5hbm5vdW5jZW1lbnQge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBmb250LXNpemU6IDEuMWVtO1xuICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB9XG5cbiAgICAuY29sb3IsXG4gICAgLnVzZXItbGluayB7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gICAgICBsZXR0ZXItc3BhY2luZzogLTFweDtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDAuNGVtO1xuICAgICAgbWF4LXdpZHRoOiAxMTBweDtcbiAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTtcbiAgICB9XG5cbiAgICBsaW5lLnBhdHJvbiB7XG4gICAgICBmb250LXNpemU6IDEuMWVtO1xuICAgICAgd2lkdGg6IDEuMmVtO1xuICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIGNvbG9yOiAkYy1icmFnO1xuICAgIH1cblxuICAgIC51dGl0bGUge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAzcHg7XG4gICAgfVxuXG4gICAgYTpub3QoLnVzZXItbGluaykge1xuICAgICAgQGV4dGVuZCAlcm9ib3RvO1xuICAgIH1cblxuICAgIGkge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogNXB4O1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDNweDtcbiAgICAgIHBhZGRpbmc6IDFweCA1cHg7XG4gICAgICBvcGFjaXR5OiAwLjc7XG4gICAgICBjb2xvcjogJGMtYWNjZW50O1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsaTpob3ZlciBpIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgdGV4dC1zaGFkb3c6IDAgMCAycHggJGMtYmctYm94LCAwIDAgNXB4ICRjLWJnLWJveCwgMCAwIDEwcHggJGMtYmctYm94O1xuICAgIH1cblxuICAgIGxpLm1lIGkge1xuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuXG4gICZfX3NheSB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgYm9yZGVyOiAwO1xuICAgIGJvcmRlci10b3A6ICRib3JkZXI7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICBwYWRkaW5nOiAzcHggMjBweCAzcHggNHB4O1xuXG4gICAgLy8gUHJldmVudCBTYWZhcmkgaU9TIGF1dG8tem9vbSB3aGVuIGlucHV0IGlzIGZvY3VzZWQgKHRyaWdnZXJlZCB3aGVuIGZvbnQtc2l6ZSA8IDE2cHgpXG4gICAgQG1lZGlhIChob3Zlcjogbm9uZSkge1xuICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgIH1cblxuICAgICYud2hpc3BlciB7XG4gICAgICBjb2xvcjogJGMtZ29vZDtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIH1cbiAgfVxufVxuIiwiQGtleWZyYW1lcyBwYWxhbnRpci1nbG93aW5nIHtcbiAgNDAlIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICB9XG5cbiAgNTAlIHtcbiAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtc2Vjb25kYXJ5LCAkYy1iZy1ib3gsIDMwJSk7XG4gIH1cblxuICA2MCUge1xuICAgIGJhY2tncm91bmQ6IG1peCgkYy1wcmltYXJ5LCAkYy1iZy1ib3gsIDMwJSk7XG4gIH1cblxuICA3MCUge1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gIH1cbn1cblxuLnBhbGFudGlyIHtcbiAgZmxleDogMCAxIGF1dG87XG4gIGFuaW1hdGlvbjogcGFsYW50aXItZ2xvd2luZyAxLjVzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICBib3JkZXItcmFkaXVzOiAwIDNweCAwIDA7XG5cbiAgJi1zbG90IHtcbiAgICBhbmltYXRpb246IG5vbmU7XG4gICAgb3BhY2l0eTogMC42O1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgfVxuXG4gICYtb2ZmIHtcbiAgICBhbmltYXRpb246IG5vbmU7XG4gIH1cblxuICAmLW9uIHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1nb29kO1xuICAgIGNvbG9yOiAkYy1nb29kLW92ZXI7XG4gICAgYW5pbWF0aW9uOiBub25lO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iYWQgIWltcG9ydGFudDtcbiAgICAgIGNvbG9yOiAkYy1iYWQtb3ZlciAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuXG4gICY6OmFmdGVyIHtcbiAgICB0b3A6IDFweDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiBhdXRvO1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgfVxufVxuIiwiJG1xLWNvbDE6ICRtcS1jb2wxLXVuaWJvYXJkO1xuJG1xLWNvbDI6ICRtcS1zbWFsbDtcbiRtcS1jb2wzOiAkbXEtY29sMy11bmlib2FyZDtcblxuQGltcG9ydCAnbGF5b3V0JztcbkBpbXBvcnQgJ3NpZGUnO1xuQGltcG9ydCAnZmVhdHVyZWQnO1xuQGltcG9ydCAnYm9hcmRzJztcbkBpbXBvcnQgJ2FwcC1oZWFkZXInO1xuQGltcG9ydCAnYXBwLW5vdGljZSc7XG5AaW1wb3J0ICdhcHAtY29udHJvbCc7XG5AaW1wb3J0ICdhcHAtc3RhbmRpbmcnO1xuQGltcG9ydCAnc3RhdHMnO1xuQGltcG9ydCAnZHVlbCc7XG5AaW1wb3J0ICdhY3Rvci1pbmZvJztcbkBpbXBvcnQgJ3BsYXllci1pbmZvJztcbkBpbXBvcnQgJ3RlYW0taW5mbyc7XG5cbi50b3VyIHtcbiAgLnB1bGwtcXVvdGUge1xuICAgIG1hcmdpbi10b3A6IDMwcHg7XG4gICAgd2lkdGg6IDMwMHB4O1xuICB9XG5cbiAgLmJveC5jcmVhdGVkIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMmVtO1xuXG4gICAgLyogYXMgcXVvdGUgbWFyZ2luICovXG4gIH1cbn1cblxuLnRvdXJfX2ZhcSB7XG4gIHBhZGRpbmc6IDRlbSB2YXIoLS1ib3gtcGFkZGluZyk7XG4gIGRpc3BsYXk6IG5vbmU7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMikge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgaDIge1xuICAgIG1hcmdpbjogMS41ZW0gMCAwLjVlbSAwO1xuICB9XG59XG5cbi8qIHRlbXAgaGFjayAqL1xuLnRvdXItaWQtdGVTbXJSbnggLnBvZGl1bSAudHJvcGh5IHtcbiAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbn1cblxuLy8gR29hdCBydW4gYW5pbWF0aW9uOiB0cmlnZ2VyZWQgd2hlbiB0aGUgbG9jYWwgcGxheWVyIGJlYXRzIHRoZSBoaWdoZXN0LXJhdGVkIHBsYXllclxuQGtleWZyYW1lcyB0b3VyLWdvYXQtcnVuLWx0ciB7XG4gIGZyb20geyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwMHB4KSB0cmFuc2xhdGVZKC01MCUpOyB9XG4gIHRvICAgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoY2FsYygxMDB2dyArIDIwMHB4KSkgdHJhbnNsYXRlWSgtNTAlKTsgfVxufVxuXG5Aa2V5ZnJhbWVzIHRvdXItZ29hdC1ydW4tcnRsIHtcbiAgZnJvbSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWChjYWxjKDEwMHZ3ICsgMjAwcHgpKSB0cmFuc2xhdGVZKC01MCUpOyB9XG4gIHRvICAgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwMHB4KSB0cmFuc2xhdGVZKC01MCUpOyB9XG59XG5cbi8vIFdpbmdlZCBnb2F0LCBsZWcgMTogcnVucyA0NSUgb2YgdGhlIHdheSBhY3Jvc3MsIHRoZW4gY2xpbWJzIGF3YXkgYW5kIGxlYXZlc1xuLy8gdGhyb3VnaCB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgc2NyZWVuIGF0IGEgc2hhbGxvdyBhbmdsZS5cbkBrZXlmcmFtZXMgdG91ci1nb2F0LWZseS1sdHIge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0yMDBweCkgdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUoMGRlZyk7XG4gIH1cbiAgNDUlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNDV2dykgdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUoLTRkZWcpO1xuICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuOSwgMC40NSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGNhbGMoMTAwdncgKyA2MDBweCkpIHRyYW5zbGF0ZVkoY2FsYygtNTAlIC0gMzh2aCkpIHJvdGF0ZSgtMTJkZWcpO1xuICB9XG59XG5cbi8vIFdpbmdlZCBnb2F0LCBsZWcgMjogZmxpZXMgYmFjayBpbiBmcm9tIHRoZSByaWdodCBzaWRlLCB0b3VjaGVzIGRvd24gb24gdGhlXG4vLyBncm91bmQgYW5kIHJ1bnMgb2ZmIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIHNjcmVlbi5cbkBrZXlmcmFtZXMgdG91ci1nb2F0LWZseS1ydGwge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGNhbGMoMTAwdncgKyAyNjBweCkpIHRyYW5zbGF0ZVkoY2FsYygtNTAlIC0gMzR2aCkpIHJvdGF0ZSgxMGRlZyk7XG4gICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMywgMC41LCAwLjUsIDEpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDU4dncpIHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKDBkZWcpO1xuICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTQyMHB4KSB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSgwZGVnKTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIHRvdXItZ29hdC13aW5nLWZsYXAtbmVhciB7XG4gIGZyb20geyB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfVxuICB0byAgIHsgdHJhbnNmb3JtOiByb3RhdGUoLTE2ZGVnKTsgfVxufVxuXG5Aa2V5ZnJhbWVzIHRvdXItZ29hdC13aW5nLWZsYXAtZmFyIHtcbiAgZnJvbSB7IHRyYW5zZm9ybTogc2NhbGVYKC0xKSByb3RhdGUoMGRlZyk7IH1cbiAgdG8gICB7IHRyYW5zZm9ybTogc2NhbGVYKC0xKSByb3RhdGUoLTE2ZGVnKTsgfVxufVxuXG4udG91cl9fZ29hdC1ydW4ge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiA5OTk5O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICAmLS1sdHIgeyBhbmltYXRpb246IHRvdXItZ29hdC1ydW4tbHRyIDQuNXMgbGluZWFyIGZvcndhcmRzOyB9XG4gICYtLXJ0bCB7IGFuaW1hdGlvbjogdG91ci1nb2F0LXJ1bi1ydGwgNC41cyBsaW5lYXIgZm9yd2FyZHM7IH1cbiAgJi0td2luZ2VkLnRvdXJfX2dvYXQtcnVuLS1sdHIgeyBhbmltYXRpb24tbmFtZTogdG91ci1nb2F0LWZseS1sdHI7IH1cbiAgJi0td2luZ2VkLnRvdXJfX2dvYXQtcnVuLS1ydGwgeyBhbmltYXRpb24tbmFtZTogdG91ci1nb2F0LWZseS1ydGw7IH1cblxuICAmX19pbWcge1xuICAgIGhlaWdodDogMTQzcHg7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDE7XG4gICAgJi0tZmxpcHBlZCB7IHRyYW5zZm9ybTogc2NhbGVYKC0xKTsgfVxuICB9XG5cbiAgLy8gd2luZ3Mgc2l0IGJlaGluZCB0aGUgZ29hdCBzcHJpdGUsIGFuY2hvcmVkIG9uIGl0cyBiYWNrLiBUaGV5IGFyZSB0aGUgc2FtZVxuICAvLyB3aW5nIHN5bWJvbCB0aGUgYXJlbmEgc3RhbmRpbmdzIGRyYXcgbmV4dCB0byBhIHBsYXllciBvbiBhIHdpbiBzdHJlYWsuXG4gICZfX3dpbmdzIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgaW5zZXQ6IDA7XG4gIH1cblxuICAmX193aW5nIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiA1MCU7XG4gICAgcmlnaHQ6IDUwJTtcbiAgICBmb250LWZhbWlseTogJ2xpY2hlc3MnO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtc2l6ZTogODZweDtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICBjb2xvcjogI2U4YmQzYztcbiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC40NSk7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogOTQlIDYyJTtcbiAgICBhbmltYXRpb246IHRvdXItZ29hdC13aW5nLWZsYXAtbmVhciAwLjIycyBlYXNlLWluLW91dCBpbmZpbml0ZSBhbHRlcm5hdGU7XG5cbiAgICAmLS1mYXIge1xuICAgICAgYW5pbWF0aW9uLW5hbWU6IHRvdXItZ29hdC13aW5nLWZsYXAtZmFyO1xuICAgICAgb3BhY2l0eTogMC44NTtcbiAgICB9XG4gIH1cblxuICAmX19pY29uIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi5nb2F0LWljb24ge1xuICBoZWlnaHQ6IDE4cHg7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIG1hcmdpbi1sZWZ0OiA0cHg7XG59XG4iLCJAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wyKSB7XG4gICNtYWluLXdyYXAge1xuICAgIC0tbWFpbi1tYXgtd2lkdGg6IGF1dG87XG4gIH1cbn1cblxuLnRvdXJfX291dGVyX21haW4ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgI2NvbmZldHRpIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgNHM7XG5cbiAgICAmLmZhZGVkIHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICB9XG59XG5cbiRjaGF0LW9wdGltYWwtc2l6ZTogY2FsYygxMDB2aCAtICN7JHNpdGUtaGVhZGVyLW91dGVyLWhlaWdodH0gLSAjeyRibG9jay1nYXB9IC0gM3JlbSk7XG5cbi50b3VyIHtcbiAgZGlzcGxheTogZ3JpZDtcblxuICAmX19zaWRlIHtcbiAgICBncmlkLWFyZWE6IHNpZGU7XG4gIH1cblxuICAmX190YWJsZSxcbiAgJl9fc3RhdHMsXG4gICZfX3BsYXllciB7XG4gICAgZ3JpZC1hcmVhOiB0YWJsZTtcbiAgfVxuXG4gICZfX3RhYmxlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIH1cblxuICAmX19tYWluIHtcbiAgICBncmlkLWFyZWE6IG1haW47XG4gIH1cblxuICAuY2hhdF9fbWVtYmVycyB7XG4gICAgZ3JpZC1hcmVhOiB1Y2hhdDtcbiAgfVxuXG4gIGdyaWQtdGVtcGxhdGUtYXJlYXM6ICdtYWluJyAnc2lkZScgJ3VjaGF0JyAndGFibGUnO1xuICBncmlkLWdhcDogJGJsb2NrLWdhcDtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wyKSB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAkY29sMi11bmlib2FyZC1kZWZhdWx0LXdpZHRoICRjb2wyLXVuaWJvYXJkLXRhYmxlO1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogJGNoYXQtb3B0aW1hbC1zaXplIG1pbi1jb250ZW50O1xuICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6ICdtYWluICBzaWRlJyAnbWFpbiAgdWNoYXQnICd0YWJsZSB0YWJsZSc7XG5cbiAgICAmX190YWJsZSB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgICA+ICoge1xuICAgICAgICBmbGV4OiAwIDAgNTAlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tY2hhdF9fbWVzc2FnZXMge1xuICAgICAgbWF4LWhlaWdodDogaW5oZXJpdDtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wzKSB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAkY29sMy11bmlib2FyZC1zaWRlICRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtd2lkdGggJGNvbDMtdW5pYm9hcmQtdGFibGU7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAkY2hhdC1vcHRpbWFsLXNpemUgYXV0bztcbiAgICBncmlkLXRlbXBsYXRlLWFyZWFzOiAnc2lkZSAgbWFpbiB0YWJsZScgJ3VjaGF0IG1haW4gdGFibGUnO1xuXG4gICAgJl9fdGFibGUge1xuICAgICAgZmxleC1mbG93OiBjb2x1bW47XG5cbiAgICAgID4gKiB7XG4gICAgICAgIGZsZXg6IGluaGVyaXQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi5tYXNjb3Qge1xuICB3aWR0aDogNDAwcHg7XG4gIGhlaWdodDogMjYwcHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gIC8qIFJFTU9WRSB0aGlzOiBhbmltYXRpb246IG5vbmUgIWltcG9ydGFudDsgKi9cbn1cblxuLnRvdXItbWFzY290LWZlYXR1cmVkLWRvY2ssXG4jdG91ci1tYXNjb3QtbW91bnQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xuICBtaW4taGVpZ2h0OiAyMzJweDtcbiAgd2lkdGg6IDEwMCU7XG4gIHotaW5kZXg6IDkwO1xufVxuXG4udG91ci1tYXNjb3QtZmVhdHVyZWQtZG9jayAubWFzY290LWJvdHRvbSxcbiN0b3VyLW1hc2NvdC1tb3VudCAubWFzY290LWJvdHRvbSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdG9wOiAwO1xuICB6LWluZGV4OiA5MTtcbn1cblxuLnRvdXItbWFzY290LWZlYXR1cmVkLWRvY2sgLm1hc2NvdCxcbiN0b3VyLW1hc2NvdC1tb3VudCAubWFzY290IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAyMzJweDtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIHotaW5kZXg6IDkyO1xufVxuXG4udG91ci1tYXNjb3QtZmVhdHVyZWQtZG9jayAubWFzY290LXNwcml0ZSxcbiN0b3VyLW1hc2NvdC1tb3VudCAubWFzY290LXNwcml0ZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAtOHB4O1xuICBib3R0b206IGF1dG87XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6IDkzO1xuICBhbmltYXRpb246IG5vbmU7XG59XG5cbi8qIHdyYXBwZXIgdGhhdCBtb3ZlcyBsZWZ0L3JpZ2h0ICovXG4ubWFzY290LXNwcml0ZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xuICBjdXJzb3I6IGdyYWI7XG5cbiAgLyog4pyFIHBhY2luZyBieSBkZWZhdWx0IC0gdXNlIGxlZnQgaW5zdGVhZCBvZiB0cmFuc2Zvcm0gKi9cbiAgYW5pbWF0aW9uOiBtYXNjb3RQYWNlIDZzIGxpbmVhciBpbmZpbml0ZSBhbHRlcm5hdGU7XG5cbiAgLyog4pyFIHBhdXNlIGFuaW1hdGlvbiB3aGVuIGNoYXNpbmcgKi9cbiAgJi5tYXNjb3QtLWNoYXNpbmcge1xuICAgIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBwYXVzZWQgIWltcG9ydGFudDtcbiAgfVxufVxuXG4ubWFzY290LS1kcmFnZ2luZyAubWFzY290LXNwcml0ZSB7XG4gIGN1cnNvcjogZ3JhYmJpbmc7XG4gIGFuaW1hdGlvbjogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4ubWFzY290Lm1hc2NvdC0tZnJlZS1kcmFnIHtcbiAgcG9zaXRpb246IGZpeGVkICFpbXBvcnRhbnQ7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7XG4gIGhlaWdodDogMTAwdmggIWltcG9ydGFudDtcbiAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDtcbiAgei1pbmRleDogMjE0NzQ4MzY0NiAhaW1wb3J0YW50O1xuICBwb2ludGVyLWV2ZW50czogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4ubWFzY290Lm1hc2NvdC0tZnJlZS1kcmFnIC5tYXNjb3Qtc3ByaXRlIHtcbiAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gIHotaW5kZXg6IDIxNDc0ODM2NDc7XG4gIGFuaW1hdGlvbjogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4vKiBkbyBOT1QgYW5pbWF0ZSB0aGUgdmlkZW87IEpTIGZsaXBzIGl0ICovXG4ubWFzY290LXZpZGVvIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAyODBweDtcbiAgaGVpZ2h0OiBhdXRvO1xuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xufVxuXG4vKiBIYXQgb3ZlcmxheSDigJQgcG9zaXRpb25lZCB0byBtYXRjaCBTcGluZS9DMDEvSGF0LnBuZyByZW5kZXJlZCBvbiB0aGUgY2FweSdzIGhlYWQuXG4gKiBCYXNlIGNhbnZhczogNzg4eDUwNCDihpIgQ1NTIDI4MHB4IHdpZGUgKHNjYWxlIDAuMzU1MykuXG4gKiBIYXQgY29udGVudCBiYm94IGluIGZyYW1lOiB0b3A9MjIwIGxlZnQ9MzMzICh5ZWxsb3cgcGl4ZWxzKS4gQ3JvcHBlZCBQTkcgaXMgNzd4NjZweC5cbiAqIENTUzogdG9wID0gMjIwKigyODAvNzg4KSDiiYggNzhweCwgbGVmdCA9IDMzMyooMjgwLzc4OCkg4omIIDExOHB4LCB3aWR0aCA9IDc3KigyODAvNzg4KSDiiYggMjdweCAqL1xuLm1hc2NvdC1oYXQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAyN3B4O1xuICB0b3A6IDc4cHg7XG4gIGxlZnQ6IDExOHB4O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjtcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcbn1cblxuLm1hc2NvdC0tcGF1c2VkIC5tYXNjb3Qtc3ByaXRlIHsgYW5pbWF0aW9uLXBsYXktc3RhdGU6IHBhdXNlZCAhaW1wb3J0YW50OyB9XG5cbkBrZXlmcmFtZXMgbWFzY290UGFjZSB7XG4gIGZyb20geyBsZWZ0OiAwOyB9XG4gIHRvICAgeyBsZWZ0OiBjYWxjKDQwMHB4IC0gMjgwcHgpOyB9XG59XG5cbi5tYXNjb3QtYnViYmxlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiA1MCU7XG4gIHRvcDogMHB4O1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIGRpc3BsYXk6IG5vbmU7XG5cbiAgcGFkZGluZzogNnB4IDEwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45NSk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwwLDAsMC4xNSk7XG4gIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsMCwwLDAuMTIpO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMjtcbn1cblxuLm1hc2NvdC1idWJibGU6OmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogNTAlO1xuICBib3R0b206IC02cHg7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSByb3RhdGUoNDVkZWcpO1xuICB3aWR0aDogMTBweDtcbiAgaGVpZ2h0OiAxMHB4O1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTUpO1xuICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHJnYmEoMCwwLDAsMC4xNSk7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDAsMCwwLDAuMTUpO1xufVxuXG4vLyDilIDilIAgQ2FweWJhcmEgUGFyayAoZmluaXNoZWQgdG91cm5hbWVudCwgb3V0c2lkZSB0aGUgbWFpbiBib3gpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLmNhcHktcGFyay13cmFwIHtcbiAgZ3JpZC1jb2x1bW46IDEgLyAtMTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nLXRvcDogMTQwcHg7IC8vIHNwYWNlIGFib3ZlIHBsYXlncm91bmQgZm9yIHNpZ24gdG8gcHJvdHJ1ZGVcblxuICAmX19zaWduIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgei1pbmRleDogMjA7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG5cbiAgICBpbWcge1xuICAgICAgd2lkdGg6IDQwNnB4O1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgNnB4IDE4cHggcmdiYSgwLDAsMCwuODUpKTtcbiAgICB9XG4gIH1cbn1cblxuLmNhcHktcGxheWdyb3VuZCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiA2NjBweDtcblxuICBAbWVkaWEgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCkgYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gICAgaGVpZ2h0OiA4MDBweDtcbiAgfVxuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCAjMWEzYTBhIDAlLCAjMmU1YzEyIDQ1JSwgIzNkN2ExOCAxMDAlKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuXG4gIC8vIFRvcCBmZW5jZTogd29vZGVuIHNwcml0ZSB0aWxlIOKAlCBmdWxsIHdpZHRoOyBjb3JuZXIgcG9zdHMgY292ZXIgdGhlIGVuZHNcbiAgJl9fZmVuY2U6OmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDsgbGVmdDogMDsgcmlnaHQ6IDA7XG4gICAgaGVpZ2h0OiA2NHB4O1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIHotaW5kZXg6IDEwO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnL2Fzc2V0cy9pbWFnZXMvcGxheWdyb3VuZC9mZW5jZS1oLXNtLnBuZycpO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGF1dG8gMTAwJTtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IHRvcDtcbiAgICAvLyBDdXRvdXQgZm9yIHRoZSBlbnRyYW5jZSBzaWduIOKAlCAyODhweCBnYXAgY2VudHJlZCAocGlsbGFyIG91dGVyIGVkZ2VzIGF0IMKxMTQ0cHgpXG4gICAgLXdlYmtpdC1tYXNrLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsXG4gICAgICBibGFjayAwLCBibGFjayBjYWxjKDUwJSAtIDE0NHB4KSxcbiAgICAgIHRyYW5zcGFyZW50IGNhbGMoNTAlIC0gMTQ0cHgpLCB0cmFuc3BhcmVudCBjYWxjKDUwJSArIDE0NHB4KSxcbiAgICAgIGJsYWNrIGNhbGMoNTAlICsgMTQ0cHgpLCBibGFjayAxMDAlXG4gICAgKTtcbiAgICBtYXNrLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsXG4gICAgICBibGFjayAwLCBibGFjayBjYWxjKDUwJSAtIDE0NHB4KSxcbiAgICAgIHRyYW5zcGFyZW50IGNhbGMoNTAlIC0gMTQ0cHgpLCB0cmFuc3BhcmVudCBjYWxjKDUwJSArIDE0NHB4KSxcbiAgICAgIGJsYWNrIGNhbGMoNTAlICsgMTQ0cHgpLCBibGFjayAxMDAlXG4gICAgKTtcbiAgfVxuXG4gIC8vIEJvdHRvbSBmZW5jZTogd29vZGVuIHNwcml0ZSB0aWxlIOKAlCBmdWxsIHdpZHRoOyBjb3JuZXIgcG9zdHMgY292ZXIgdGhlIGVuZHNcbiAgJl9fZmVuY2U6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiAwOyBsZWZ0OiAwOyByaWdodDogMDtcbiAgICBoZWlnaHQ6IDY0cHg7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgei1pbmRleDogMTA7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcvYXNzZXRzL2ltYWdlcy9wbGF5Z3JvdW5kL2ZlbmNlLWgtc20ucG5nJyk7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14O1xuICAgIGJhY2tncm91bmQtc2l6ZTogYXV0byAxMDAlO1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQgYm90dG9tO1xuICB9XG5cbiAgJl9fZmVuY2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBpbnNldDogMDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB6LWluZGV4OiAxMDtcbiAgfVxuXG4gIC8vIExlZnQgZmVuY2U6IHZlcnRpY2FsIHNwcml0ZSDigJQgZnVsbCBoZWlnaHQgaW5jbHVkaW5nIGNvcm5lcnMsIHNpdHMgb3ZlciB0b3AvYm90dG9tIGZlbmNlc1xuICAmX19mZW5jZS1sZWZ0IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwOyBsZWZ0OiAwOyBib3R0b206IDA7XG4gICAgd2lkdGg6IDY0cHg7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgei1pbmRleDogMTE7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcvYXNzZXRzL2ltYWdlcy9wbGF5Z3JvdW5kL2ZlbmNlLXYucG5nJyk7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC15O1xuICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJSBhdXRvO1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQgdG9wO1xuICAgIHRyYW5zZm9ybTogc2NhbGVYKC0xKTsgLy8gbWlycm9yIHNvIHBvc3QgdGlwcyBwb2ludCBvdXR3YXJkIChsZWZ0KVxuICB9XG5cbiAgLy8gUmlnaHQgZmVuY2U6IHNhbWUgdGlsZSB1bi1taXJyb3JlZCDigJQgcG9zdCB0aXBzIHBvaW50IG91dHdhcmQgKHJpZ2h0KVxuICAmX19mZW5jZS1yaWdodCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDsgcmlnaHQ6IDA7IGJvdHRvbTogMDtcbiAgICB3aWR0aDogNjRweDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB6LWluZGV4OiAxMTtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy9hc3NldHMvaW1hZ2VzL3BsYXlncm91bmQvZmVuY2Utdi5wbmcnKTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXk7XG4gICAgYmFja2dyb3VuZC1zaXplOiAxMDAlIGF1dG87XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdCB0b3A7XG4gIH1cblxuICAvLyBDb3JuZXIgcG9zdHMg4oCUIHJvcGUtd3JhcHBlZCBsb2cgcG9zdCBhdCBlYWNoIGNvcm5lciwgYWJvdmUgYWxsIGZlbmNlIHRpbGVzLlxuICAvLyA4MMOXODBweCAoMTZweCBsYXJnZXIgdGhhbiA2NHB4IGZlbmNlIHpvbmUpIHNvIHRoZSBwb3N0IG92ZXJsYXBzIGJvdGggZmVuY2UgdGlsZVxuICAvLyBlbmRzIHdpdGggbWFyZ2luOyBuZWdhdGl2ZSBvZmZzZXQgb2YgOHB4IGNlbnRlcnMgaXQgb24gdGhlIGNvcm5lciBhbmQgY2xpcHMgY2xlYW5seVxuICAvLyB2aWEgdGhlIHBsYXlncm91bmQncyBvdmVyZmxvdzpoaWRkZW4uIGJhY2tncm91bmQtcG9zaXRpb246Y2VudGVyIHNob3dzIHRoZSB3aWRlc3RcbiAgLy8gcm9wZS13cmFwcGVkIHNlY3Rpb24sIHdoaWNoIGlzIGZ1bGx5IG9wYXF1ZSB3aXRoIG5vIGVkZ2UgdHJhbnNwYXJlbmN5LlxuICAmX19wb3N0IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDgwcHg7XG4gICAgaGVpZ2h0OiA4MHB4O1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIHotaW5kZXg6IDEyO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnL2Fzc2V0cy9pbWFnZXMvcGxheWdyb3VuZC9mZW5jZS1wb3N0LnBuZycpO1xuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgJi0tdGwgeyB0b3A6IC04cHg7IGxlZnQ6IC04cHg7IH1cbiAgICAmLS10ciB7IHRvcDogLThweDsgcmlnaHQ6IC04cHg7IH1cbiAgICAmLS1ibCB7IGJvdHRvbTogLThweDsgbGVmdDogLThweDsgfVxuICAgICYtLWJyIHsgYm90dG9tOiAtOHB4OyByaWdodDogLThweDsgfVxuICB9XG5cbiAgLy8gUmVkIGJhbGxcbiAgJl9fYmFsbCB7XG4gICAgYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzOCUgMzIlLFxuICAgICAgI2ZmOWE5YSAwJSwgI2VlMjIyMiA0NSUsICM5OTAwMDAgMTAwJVxuICAgICk7XG4gICAgYm94LXNoYWRvdzpcbiAgICAgIDJweCA0cHggMTBweCByZ2JhKDAsMCwwLC41KSxcbiAgICAgIGluc2V0IC0zcHggLTNweCA4cHggcmdiYSgwLDAsMCwuMyksXG4gICAgICBpbnNldCAzcHggM3B4IDhweCByZ2JhKDI1NSwyMDAsMjAwLC40KTtcbiAgfVxufVxuXG4vLyDilIDilIAgU3RhbmRhbG9uZSBmdWxsLXBhZ2UgcGxheWdyb3VuZCAoR0VUIC9wbGF5Z3JvdW5kKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi5wbGF5Z3JvdW5kLXBhZ2Uge1xuICBwYWRkaW5nOiAwO1xuICBtYXgtd2lkdGg6IG5vbmU7XG4gIHdpZHRoOiAxMDAlO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBncmlkLWNvbHVtbjogMSAvIC0xOyAvLyBzcGFuIGFsbCA1IGdyaWQgY29sdW1ucyBzbyB3ZSBnZXQgZnVsbCB2aWV3cG9ydCB3aWR0aFxuXG4gIC5jYXB5LXBhcmstd3JhcC0tc3RhbmRhbG9uZSB7XG4gICAgLmNhcHktcGxheWdyb3VuZCB7XG4gICAgICBoZWlnaHQ6IGF1dG87IC8vIG92ZXJyaWRlIGJhc2UgaGVpZ2h0OjY2MHB4IHNvIGFzcGVjdC1yYXRpbzoxLzEgKHNldCBpbmxpbmUpIGRldGVybWluZXMgdGhlIGhlaWdodFxuICAgICAgbWluLWhlaWdodDogNTAwcHg7XG4gICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgYm9yZGVyLWxlZnQ6IG5vbmU7XG4gICAgICBib3JkZXItcmlnaHQ6IG5vbmU7XG4gICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIH1cbiAgfVxufVxuXG4vLyA4w5c4IGNoZXNzIGJvYXJkIOKAlCBmaWxscyB0aGUgZnVsbCBmZW5jZS10by1mZW5jZSBpbnRlcmlvciBvZiB0aGUgKG5vdyBzcXVhcmUpIGNvbnRhaW5lclxuLmNhcHktY2hlc3Nib2FyZCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA2NHB4OyBsZWZ0OiA2NHB4OyByaWdodDogNjRweDsgYm90dG9tOiA2NHB4O1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg4LCAxZnIpO1xuICBncmlkLXRlbXBsYXRlLXJvd3M6IHJlcGVhdCg4LCAxZnIpO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMDtcblxuICAmX19zcS0tbGlnaHQgeyBiYWNrZ3JvdW5kOiAjZjBkOWI1OyB9XG4gICZfX3NxLS1kYXJrICB7IGJhY2tncm91bmQ6ICNiNTg4NjM7IH1cbn1cblxuLy8gVGhvdWdodCBidWJibGUgc2hvd24gd2hlbiBjYXB5IGFjdGl2YXRlcyBhIG1vdmVtZW50IG1vZGVcbi5jYXB5LXBsYXlncm91bmRfX2hvdGtleXMge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogOHB4O1xuICByaWdodDogMTRweDtcbiAgei1pbmRleDogMjU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogM3B4O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG5cbiAgJl9fcm93IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiA2cHg7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgZm9udC1zaXplOiAxMXB4O1xuICAgIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO1xuICAgIHRleHQtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLDAsMCwwLjcpO1xuXG4gICAga2JkIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgbWluLXdpZHRoOiAxOHB4O1xuICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgICAgcGFkZGluZzogMCA0cHg7XG4gICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuMTUpO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjQpO1xuICAgICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgICAgZm9udC1zaXplOiAxMXB4O1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICBjb2xvcjogI2ZmZjtcbiAgICAgIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO1xuICAgIH1cbiAgfVxufVxuXG4uY2FweS1idWJibGUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogMTAwJTtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB6LWluZGV4OiAyMDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjE4cyBlYXNlO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBtYXJnaW4tYm90dG9tOiAycHg7XG5cbiAgJi0tdmlzaWJsZSB7IG9wYWNpdHk6IDE7IH1cblxuICAmX190ZXh0IHtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xuICAgIGNvbG9yOiAjMzMzO1xuICAgIGJvcmRlcjogMnB4IHNvbGlkICNiYmI7XG4gICAgYm9yZGVyLXJhZGl1czogMTRweDtcbiAgICBwYWRkaW5nOiA0cHggMTBweDtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwwLDAsMC4zNSk7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgfVxuXG4gIC8vIFRocmVlIGRlY3JlYXNpbmcgZG90cyDigJQgdGhvdWdodCB0cmFpbCB0b3dhcmQgdGhlIGNhcHlcbiAgJl9fdHJhaWwge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMnB4O1xuICAgIG1hcmdpbi10b3A6IDNweDtcblxuICAgIHNwYW4ge1xuICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgYmFja2dyb3VuZDogI2ZmZjtcbiAgICAgIGJvcmRlcjogMS41cHggc29saWQgI2JiYjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgICBzcGFuOm50aC1jaGlsZCgxKSB7IHdpZHRoOiA3cHg7IGhlaWdodDogN3B4OyB9XG4gICAgc3BhbjpudGgtY2hpbGQoMikgeyB3aWR0aDogNXB4OyBoZWlnaHQ6IDVweDsgfVxuICAgIHNwYW46bnRoLWNoaWxkKDMpIHsgd2lkdGg6IDNweDsgaGVpZ2h0OiAzcHg7IH1cbiAgfVxufVxuIiwiLnRvdXJfX3NpZGUge1xuICBAZXh0ZW5kICVmbGV4LWNvbHVtbjtcblxuICAubWNoYXQge1xuICAgIGZsZXg6IDEgMSA3ZW07XG4gICAgbWFyZ2luLXRvcDogJGJsb2NrLWdhcDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDIpIHtcbiAgICAgIG1pbi1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgfVxuICB9XG59XG5cbi50b3VyX19tZXRhIHtcbiAgQGV4dGVuZCAlYm94LW5lYXQtZm9yY2U7XG5cbiAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICBwYWRkaW5nOiAjeyRibG9jay1nYXAgKiAwLjZ9ICRibG9jay1nYXA7XG5cbiAgc2VjdGlvbiB7XG4gICAgbWFyZ2luLWJvdHRvbTogJGJsb2NrLWdhcDtcblxuICAgICZbZGF0YS1pY29uXSB7XG4gICAgICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXA7XG4gICAgfVxuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGZvbnQtc2l6ZTogM3JlbTtcbiAgICAgIG1hcmdpbi1yaWdodDogNCU7XG4gICAgfVxuXG4gICAgcCB7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxuXG4gICAgLnNldHVwIHtcbiAgICAgIEBleHRlbmQgJW5vd3JhcC1oaWRkZW47XG4gICAgfVxuXG4gICAgdGltZSB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cblxuICAgIC5kZWZlbmRlcjo6YmVmb3JlIHtcbiAgICAgIGZvbnQtc2l6ZTogMS42ZW07XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogLTAuMjZlbTtcbiAgICAgIG1hcmdpbjogMCAwLjE1ZW0gMCAtMC4xNWVtO1xuICAgIH1cblxuICAgICYuY29uZGl0aW9ucyB7XG4gICAgICAmOjpiZWZvcmUge1xuICAgICAgICBvcGFjaXR5OiAwLjc7XG4gICAgICB9XG5cbiAgICAgICYuYWNjZXB0ZWQsXG4gICAgICAuYWNjZXB0ZWQge1xuICAgICAgICBjb2xvcjogJGMtZ29vZDtcbiAgICAgIH1cblxuICAgICAgJi5yZWZ1c2VkLFxuICAgICAgLnJlZnVzZWQge1xuICAgICAgICBjb2xvcjogJGMtYmFkO1xuICAgICAgfVxuXG4gICAgICAuY29uZGl0aW9uOmZpcnN0LWNoaWxkLFxuICAgICAgLmNvbmRpdGlvbiArIC5jb25kaXRpb24ge1xuICAgICAgICAmLmFjY2VwdGVkOjphZnRlciB7XG4gICAgICAgICAgY29udGVudDogJ1xcYTBcXDI3MTMnO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5yZWZ1c2VkOjphZnRlciB7XG4gICAgICAgICAgY29udGVudDogJ1xcYTBcXDI3MTgnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmRlc2NyaXB0aW9uIHtcbiAgICBAZXh0ZW5kICVicmVhay13b3JkO1xuXG4gICAgbWF4LWhlaWdodDogMjB2aDtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICB9XG5cbiAgLnRvdXJfX3ByaXplIHtcbiAgICBAZXh0ZW5kICVib3gtcmFkaXVzO1xuXG4gICAgcGFkZGluZzogMWVtIDJ2bWluO1xuICAgIGJhY2tncm91bmQ6ICRjLWJnLXplYnJhO1xuICAgIG1hcmdpbi1ib3R0b206IDFlbTtcbiAgICBmb250LXNpemU6IDAuOWVtO1xuICB9XG59XG5cbi5jaGF0X19tZW1iZXJzIHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG5cbiAgLyogZml4ZXMgaW52aXNpYmxlIHNwZWN0YXRvcnMgb24gZmlyZWZveCwgY29sMiAqL1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wxKSB7XG4gICAgbWFyZ2luOiAwICRibG9jay1nYXA7XG4gIH1cbn1cbiIsIi50b3VyX19mZWF0dXJlZCB7XG4gIEBleHRlbmQgJWZsZXgtY29sdW1uO1xuXG4gIC5taW5pLWdhbWVfX3BsYXllciB7XG4gICAgQGV4dGVuZCAlZmxleC1jZW50ZXItbm93cmFwO1xuXG4gICAgJiBpIHtcbiAgICAgIGZsZXg6IDAgMCBhdXRvO1xuXG4gICAgICAmOjpiZWZvcmUge1xuICAgICAgICBjb2xvcjogJGMtYWNjZW50O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubWluaS1nYW1lX191c2VyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgc3Ryb25nIHtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIG1hcmdpbi1yaWdodDogMWNoO1xuICAgIH1cblxuICAgIC51c2VyLWxpbmsge1xuICAgICAgQGV4dGVuZCAlZmxleC1iZXR3ZWVuO1xuXG4gICAgICBmbGV4OiAxIDEgMTAwJTtcbiAgICAgIG1hcmdpbi1yaWdodDogMWVtO1xuICAgIH1cbiAgfVxufVxuIiwiLnRvdXJfX2JvYXJkcyB7XG4gIG1hcmdpbjogJGJsb2NrLWdhcCAwO1xuICBncmlkLWdhcDogMWNoO1xuICAtLW5wLW1pbi13aWR0aDogMjAwcHg7XG59XG5cbi50b3VyX19ib2FyZCB7XG4gIEBleHRlbmQgJWJveC1uZWF0LWZvcmNlLCAlZmxleC1jb2x1bW47XG5cbiAgLm1pbmktZ2FtZV9fcGxheWVyIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXA7XG5cbiAgICBwYWRkaW5nOiAwLjJlbTtcbiAgfVxuXG4gIC5taW5pLWdhbWVfX3VzZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG5cbiAgICBzdHJvbmcge1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAxY2g7XG4gICAgfVxuICB9XG59XG4iLCIudG91cl9fbWFpbl9faGVhZGVyIHtcbiAgQGV4dGVuZCAlZmxleC1jZW50ZXItbm93cmFwO1xuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgbWluLWhlaWdodDogN2VtO1xuICBwYWRkaW5nOiAwICN7JGJsb2NrLWdhcCAqIDEuNX07XG5cbiAgaDEge1xuICAgIGZvbnQtc2l6ZTogMi4ycmVtO1xuICAgIGZsZXg6IDkgMSBhdXRvO1xuICAgIG1hcmdpbjogMDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgYSB7XG4gICAgICAvKiBHTSB3aWtpcGVkaWEgKi9cbiAgICAgIGNvbG9yOiBtaXgoJGMtbGluaywgJGMtZm9udCwgMzUlKTtcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiAkYy1saW5rO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGltZyB7XG4gICAgZmxleDogMCAwIDYwcHg7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDYwcHg7XG4gICAgaGVpZ2h0OiA2MHB4O1xuICAgIHBhZGRpbmc6IDZweDtcbiAgfVxuXG4gIC5pbWcge1xuICAgIG1hcmdpbi1yaWdodDogMXJlbTtcbiAgfVxuXG4gIGk6OmJlZm9yZSB7XG4gICAgZm9udC1zaXplOiAyLjJyZW07XG4gIH1cblxuICAudG91ci1zaGVkICYgaDEge1xuICAgIGxldHRlci1zcGFjaW5nOiAycHg7XG4gIH1cblxuICAudG91ci1zaGVkLXdlZWtseSAmIGk6OmJlZm9yZSB7XG4gICAgZm9udC1zaXplOiAzNXB4O1xuICB9XG5cbiAgLnRvdXItc2hlZC1tb250aGx5ICYgaTo6YmVmb3JlLFxuICAudG91ci1zaGVkLXdlZWtlbmQgJiBpOjpiZWZvcmUge1xuICAgIGZvbnQtc2l6ZTogNDBweDtcbiAgfVxuXG4gIC50b3VyLXNoZWQteWVhcmx5ICYgaTo6YmVmb3JlIHtcbiAgICBmb250LXNpemU6IDQ1cHg7XG4gIH1cblxuICAudG91ci1zaGVkLXdlZWtlbmQgJiBoMSxcbiAgLnRvdXItc2hlZC15ZWFybHkgJiBoMSB7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDNweDtcbiAgfVxuXG4gIC5jbG9jayB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgY29sb3I6ICRjLWZvbnQtZGltO1xuXG4gICAgJi1jcmVhdGVkIHtcbiAgICAgIEBleHRlbmQgJWZsZXgtY29sdW1uO1xuXG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB9XG4gIH1cblxuICAudG91ci1zY2hlZCAmIGgxLFxuICAudG91ci1zY2hlZCAmIC5pbWcge1xuICAgIGNvbG9yOiAkYy1icmFnO1xuICB9XG5cbiAgLnRvdXJfX21haW4tZmluaXNoZWQgJiBoMSB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgLnRvdXItc2NoZWQtbWFyYXRob24gJiB7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgfVxuICB9XG5cbiAgLnRpbWUge1xuICAgIEBleHRlbmQgJXJvYm90bztcblxuICAgIGZvbnQtc2l6ZTogMS41ZW07XG4gICAgbWFyZ2luLWxlZnQ6IDAuMmVtO1xuICB9XG5cbiAgLnNoeSB7XG4gICAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gICAgZm9udC1zaXplOiAwLjllbTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIG9wYWNpdHk6IDAuNjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB9XG5cbiAgLnRvdXItc2NoZWQtbWFyYXRob24gJiBoMSB7XG4gICAgY29sb3I6ICM0MTY2YTAgIWltcG9ydGFudDtcbiAgICBwYWRkaW5nLWxlZnQ6IDkwcHg7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDJweDtcbiAgfVxuXG4gIC50b3VyLXNjaGVkLW1hcmF0aG9uICYgLmZpcmUtdHJvcGh5IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDEwcHg7XG4gICAgd2lkdGg6IDcwcHg7XG4gICAgaGVpZ2h0OiA4MHB4O1xuICAgIG9wYWNpdHk6IDAuNztcbiAgICB0cmFuc2l0aW9uOiAxcztcbiAgICBmb250LWZhbWlseTogJ2xpY2hlc3MnO1xuICAgIGZpbHRlcjogaHVlLXJvdGF0ZSgxOTBkZWcpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgfVxuXG4gIC50b3VyLXNjaGVkLXNoaWVsZCAmIHtcbiAgICBoMSB7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDkwcHg7XG4gICAgICBsZXR0ZXItc3BhY2luZzogMnB4O1xuXG4gICAgICAuc2hpZWxkLXRyb3BoeSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAtOHB4O1xuICAgICAgICBsZWZ0OiAxMnB4O1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDY3cHg7XG4gICAgICAgIGhlaWdodDogODBweDtcbiAgICAgICAgYmFja2dyb3VuZDogdXJsKC4uL2ltYWdlcy90cm9waHkvc2hpZWxkLWdvbGQucG5nKSBuby1yZXBlYXQ7XG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcbiAgICAgICAgZm9udC1mYW1pbHk6ICdsaWNoZXNzJztcbiAgICAgICAgZm9udC1zaXplOiA0MHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogODBweDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBjb2xvcjogIzMzMyAhaW1wb3J0YW50O1xuICAgICAgICB0ZXh0LXNoYWRvdzogMCAwIDZweCAjZmZmO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLnRvdXJfX25vdGljZSB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kOiAkYy1nb29kO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDAuNWVtIDA7XG4gIG9wYWNpdHk6IDAuODtcblxuICAmLmNsb3NlZCB7XG4gICAgYmFja2dyb3VuZDogJGMtcHJpbWFyeTtcbiAgfVxufVxuXG4udG91cl9fdXItcGxheWluZyB7XG4gIEBleHRlbmQgJWZsZXgtY29sdW1uO1xuXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZm9udC1zaXplOiAxLjVlbTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICY6OmJlZm9yZSxcbiAgJjo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICfugYgnO1xuICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAzMHB4O1xuICB9XG5cbiAgJjo6YmVmb3JlIHtcbiAgICBsZWZ0OiAzMHB4O1xuICB9XG5cbiAgJjo6YWZ0ZXIge1xuICAgIHJpZ2h0OiAzMHB4O1xuICB9XG59XG4iLCIudG91cl9fY29udHJvbHMge1xuICBAZXh0ZW5kICVtZXRhbCwgJWZsZXgtYmV0d2VlbiwgJWJveC1zaGFkb3c7XG5cbiAgcGFkZGluZzogMCAwcHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAuZmJ0IHtcbiAgICBwYWRkaW5nOiAwLjZlbSAwLjhlbTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXh4LXNtYWxsKSB7XG4gICAgICBwYWRkaW5nOiAwLjZlbSAxZW07XG4gICAgfVxuXG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsaW5lLWhlaWdodDogMS4zO1xuICB9XG5cbiAgQGtleWZyYW1lcyB0b3VyLWRlbGF5IHtcbiAgICAwJSB7XG4gICAgICB3aWR0aDogMCU7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG4gIH1cblxuICAuZGVsYXkge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTE3LCAxNTMsIDAsIDAuNSk7XG4gICAgd2lkdGg6IDAlO1xuXG4gICAgYnV0dG9uIHtcbiAgICAgIG9wYWNpdHk6IDAuNztcbiAgICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgICAgIG1peC1ibGVuZC1tb2RlOiBsdW1pbm9zaXR5O1xuICAgIH1cbiAgfVxuXG4gIC5oaWdobGlnaHQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogNXB4O1xuICAgIHRvcDogLTNweDtcbiAgICBwYWRkaW5nOiA4cHggMjBweDtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGJhY2tncm91bmQ6ICM4MmJmNTY7XG4gICAgYm9yZGVyLWJvdHRvbTogNXB4IHNvbGlkICM3NTk5MDA7XG4gICAgdGV4dC1zaGFkb3c6IDAgLTFweCAjNzU5OTAwO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjFzO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDBweCwgMHB4KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgZmlsdGVyOiBicmlnaHRuZXNzKDEuMDYpO1xuICAgIH1cblxuICAgICY6YWN0aXZlIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDBweCwgNXB4KTtcbiAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDFweDtcbiAgICAgIHRleHQtc2hhZG93OiAwIDAgIzc1OTkwMDtcbiAgICAgIGZpbHRlcjogYnJpZ2h0bmVzcygxKTtcbiAgICB9XG4gIH1cblxuICAuc3Bpbm5lciB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHdpZHRoOiAxLjVlbTtcbiAgICBoZWlnaHQ6IDEuNWVtO1xuICAgIG1hcmdpbi1yaWdodDogMC43ZW07XG4gIH1cblxuICAucGFnZXIge1xuICAgIEBleHRlbmQgJWZsZXgtY2VudGVyO1xuXG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG5cbiAgICAucGFnZSB7XG4gICAgICBtYXJnaW46IDAgM3B4O1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB9XG5cbiAgICBpbnB1dCB7XG4gICAgICBib3JkZXI6IG5vbmU7XG4gICAgICBiYWNrZ3JvdW5kOiBmYWRlLW91dCgkYy1zZWNvbmRhcnksIDAuOCk7XG4gICAgfVxuXG4gICAgLnNlYXJjaCxcbiAgICBpbnB1dCB7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgfVxuICB9XG59XG4iLCIudG91cl9fc3RhbmRpbmcge1xuICBib3JkZXI6IG5vbmU7XG5cbiAgLnBsYXllciB7XG4gICAgcGFkZGluZy1sZWZ0OiAwcHg7XG4gICAgcGFkZGluZy1yaWdodDogMHB4O1xuXG4gICAgLnVzZXItbGluayB7XG4gICAgICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXA7XG4gICAgfVxuXG4gICAgLm5hbWUge1xuICAgICAgQGV4dGVuZCAlbm93cmFwLWVsbGlwc2lzO1xuXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiA1cHg7XG4gICAgICBtYXgtd2lkdGg6IDE0MHB4O1xuICAgIH1cbiAgfVxuXG4gIC51c2VyLWxpbmsubG9uZyB7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjdweDtcbiAgfVxuXG4gIC51c2VyLWxpbmsgLnJhdGluZyB7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIGZvbnQtc2l6ZTogMC44ZW07XG4gIH1cblxuICB0ci5sb25nIC51c2VyLWxpbmsgLnJhdGluZyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZy1sZWZ0OiAwcHg7XG4gIH1cblxuICB0ciB7XG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcblxuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICB9XG5cbiAgLmxvYWRpbmcgdGJvZHkge1xuICAgIG9wYWNpdHk6IDAuNjtcblxuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24ob3BhY2l0eSwgMC4zcyk7XG4gIH1cblxuICAmOm5vdCguY3JlYXRlZCk6bm90KC5sb2FkaW5nKSB0Ym9keSB0cjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogbWl4KCRjLXByaW1hcnksICRjLWJnLWJveCwgMzAlKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cblxuICB0ci5tZSB0ZDpmaXJzdC1jaGlsZCB7XG4gICAgJGMtbWUtYm9yZGVyOiBtaXgoJGMtc2Vjb25kYXJ5LCAkYy1iZy1ib3gsIDcwJSk7XG5cbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoXG4gICAgICB0byByaWdodCxcbiAgICAgICRjLW1lLWJvcmRlciAwcHgsXG4gICAgICAkYy1tZS1ib3JkZXIgNXB4LFxuICAgICAgcmdiYSgwLCAwLCAwLCAwKSA1cHgsXG4gICAgICByZ2JhKDAsIDAsIDAsIDApIDEwMCVcbiAgICApO1xuICB9XG5cbiAgdHIuYWN0aXZlIHRkOmxhc3QtY2hpbGQge1xuICAgICRjLWFjdGl2ZS1ib3JkZXI6IG1peCgkYy1wcmltYXJ5LCAkYy1iZy1ib3gsIDcwJSk7XG5cbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoXG4gICAgICB0byBsZWZ0LFxuICAgICAgJGMtYWN0aXZlLWJvcmRlciAwcHgsXG4gICAgICAkYy1hY3RpdmUtYm9yZGVyIDVweCxcbiAgICAgIHJnYmEoMCwgMCwgMCwgMCkgNXB4LFxuICAgICAgcmdiYSgwLCAwLCAwLCAwKSAxMDAlXG4gICAgKTtcbiAgfVxuXG4gIHRkLnJhbmsge1xuICAgIHBhZGRpbmc6IDFlbSAwLjVlbSAxZW0gMTBweDtcbiAgICB3aWR0aDogMXB4O1xuXG4gICAgLyogaGVscHMga2VlcGluZyBpdCBhcyBzbWFsbCBhcyBwb3NzaWJsZSAqL1xuICAgIGkge1xuICAgICAgb3BhY2l0eTogMC40O1xuICAgICAgZm9udC1zaXplOiAwLjhlbTtcbiAgICB9XG4gIH1cblxuICAuc2hlZXQge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjFlbTtcblxuICAgICYgPiAqIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB9XG5cbiAgICBzY29yZSB7XG4gICAgICBvcGFjaXR5OiAwLjc7XG4gICAgfVxuICB9XG5cbiAgdHIubG9uZyAuc2hlZXQge1xuICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG4gIH1cblxuICB0ci54bG9uZyAuc2hlZXQge1xuICAgIGZvbnQtc2l6ZTogMC44NXJlbTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuICB9XG5cbiAgZG91YmxlIHtcbiAgICBjb2xvcjogJGMtYnJhZztcblxuICAgIC8qIGZvbnQtd2VpZ2h0OiBib2xkOyAqL1xuICB9XG5cbiAgc3RyZWFrIHtcbiAgICBjb2xvcjogJGMtc2Vjb25kYXJ5O1xuXG4gICAgLyogZm9udC13ZWlnaHQ6IGJvbGQ7ICovXG4gIH1cblxuICAudG90YWwge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIHBhZGRpbmctcmlnaHQ6ICRibG9jay1nYXA7XG4gIH1cbn1cbiIsIi50b3VyX19zdGF0cyB7XG4gIEBleHRlbmQgJWZsZXgtY29sdW1uLCAlYm94LW5lYXQ7XG5cbiAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICBwYWRkaW5nOiAxLjdlbSAwO1xuICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xuXG4gIGgyIHtcbiAgICBmb250LXNpemU6IDEuNWVtO1xuICAgIG1hcmdpbi1ib3R0b206IDFlbTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cblxuICB0YWJsZSB7XG4gICAgbWFyZ2luOiBhdXRvO1xuICB9XG5cbiAgdGQge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIHBhZGRpbmctbGVmdDogMWVtO1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIGxpbmUtaGVpZ2h0OiAyZW07XG4gIH1cblxuICAmX19saW5rcyB7XG4gICAgbWFyZ2luOiAyZW0gYXV0byAwIGF1dG87XG4gICAgYSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIG1hcmdpbjogMC41ZW0gMDtcbiAgICB9XG4gIH1cbn1cbiIsIi50b3VyX19kdWVscyB7XG4gIEBleHRlbmQgJXBhZ2UtdGV4dC1zaGFkb3cgIW9wdGlvbmFsO1xuXG4gIG1hcmdpbjogJGJsb2NrLWdhcCAwIDAgMDtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wyKSB7XG4gICAgbWFyZ2luOiAwIDAgMCAkYmxvY2stZ2FwO1xuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMykge1xuICAgIG1hcmdpbjogJGJsb2NrLWdhcCAwIDAgMDtcbiAgfVxuXG4gIGgyIHtcbiAgICBmb250LXNpemU6IDEuNWVtO1xuICAgIG1hcmdpbi1ib3R0b206IDAuMmVtO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDJweDtcbiAgfVxuXG4gIGEge1xuICAgIEBleHRlbmQgJWZsZXgtY29sdW1uO1xuXG4gICAgY29sb3I6ICRjLWZvbnQ7XG4gICAgcGFkZGluZzogMC41ZW0gMC43ZW07XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBsaW5lLWhlaWdodDogMS45ZW07XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIG1peCgkYy1iZy1wYWdlLCAkYy1ib3JkZXItcGFnZSwgNTAlKTtcblxuICAgIEBpbmNsdWRlIHRyYW5zaXRpb247XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6IG1peCgkYy1saW5rLCAkYy1iZy1wYWdlLCAyMCUpO1xuICAgIH1cbiAgfVxuXG4gIGxpbmUge1xuICAgIEBleHRlbmQgJWZsZXgtYmV0d2VlbjtcbiAgfVxuXG4gIHN0cm9uZyB7XG4gICAgQGV4dGVuZCAlZWxsaXBzaXM7XG5cbiAgICBmb250LXNpemU6IDEuMmVtO1xuICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXgtd2lkdGg6IDYwJTtcbiAgfVxuXG4gIC5yYW5rIHtcbiAgICBAZXh0ZW5kICVib3gtcmFkaXVzO1xuXG4gICAgcGFkZGluZzogMC4xZW0gMC41ZW07XG4gICAgYmFja2dyb3VuZDogJGMtYmctemVicmE7XG4gIH1cblxuICAuYiAudXRpdGxlLFxuICAuYiAucmFuayB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwLjNlbTtcbiAgfVxuXG4gIC5hIC51dGl0bGUsXG4gIC5hIC5yYW5rIHtcbiAgICBtYXJnaW4tbGVmdDogMC4zZW07XG4gIH1cbn1cbiIsIi50b3VyX19hY3Rvci1pbmZvIHtcbiAgQGV4dGVuZCAlYm94LW5lYXQtZm9yY2U7XG5cbiAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7XG5cbiAgLnNwaW5uZXIge1xuICAgIG1hcmdpbjogNWVtIGF1dG87XG4gIH1cblxuICAuY2xvc2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDRweDtcbiAgICByaWdodDogNXB4O1xuICAgIG9wYWNpdHk6IDAuNjtcblxuICAgIEBpbmNsdWRlIHRyYW5zaXRpb247XG5cbiAgICBjb2xvcjogJGMtcmVkO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgfVxuXG4gIC5zdGF0cyB7XG4gICAgQGV4dGVuZCAlZmxleC1jb2x1bW47XG5cbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICAgIGgyIHtcbiAgICAgIEBleHRlbmQgJW1ldGFsO1xuXG4gICAgICBmb250LXNpemU6IDEuNGVtO1xuICAgICAgcGFkZGluZzogMC42cmVtIDFyZW07XG4gICAgICBib3JkZXItYm90dG9tOiAkYm9yZGVyO1xuICAgIH1cblxuICAgIHRhYmxlIHtcbiAgICAgIG1hcmdpbjogMWVtIGF1dG87XG4gICAgfVxuXG4gICAgdGQge1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjhlbTtcblxuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgQGV4dGVuZCAlcm9ib3RvO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5zdWJsaXN0IHtcbiAgICB3aWR0aDogMTAwJTtcblxuICAgIHRyIHtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihiYWNrZ3JvdW5kLWNvbG9yKTtcblxuICAgICAgJjpudGgtY2hpbGQob2RkKSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjLWJnLXplYnJhO1xuICAgICAgfVxuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogbWl4KCRjLWxpbmssICRjLWJnLWJveCwgMTAlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aCxcbiAgICB0ZCB7XG4gICAgICBwYWRkaW5nOiAwLjNlbTtcbiAgICB9XG5cbiAgICB0aCB7XG4gICAgICBAZXh0ZW5kICVyb2JvdG87XG5cbiAgICAgIHBhZGRpbmctbGVmdDogN3B4O1xuICAgIH1cbiAgfVxufVxuIiwiLnRvdXJfX3BsYXllci1pbmZvIHtcbiAgLnBhaXJpbmdzIHtcbiAgICB3aWR0aDogMTAwJTtcblxuICAgIHRyIHtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihiYWNrZ3JvdW5kLWNvbG9yKTtcblxuICAgICAgJjpudGgtY2hpbGQob2RkKSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjLWJnLXplYnJhO1xuICAgICAgfVxuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogbWl4KCRjLWxpbmssICRjLWJnLWJveCwgMTAlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aCxcbiAgICB0ZCB7XG4gICAgICBwYWRkaW5nOiAwLjNlbTtcbiAgICB9XG5cbiAgICB0aCB7XG4gICAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkIHRyYW5zcGFyZW50O1xuXG4gICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uO1xuICAgIH1cblxuICAgIHRyOmhvdmVyIHRoIHtcbiAgICAgIGJvcmRlci1jb2xvcjogJGMtZm9udDtcbiAgICB9XG5cbiAgICB0ci53aW46aG92ZXIgdGgge1xuICAgICAgYm9yZGVyLWNvbG9yOiAkYy1nb29kO1xuICAgIH1cblxuICAgIHRyLmxvc3M6aG92ZXIgdGgge1xuICAgICAgYm9yZGVyLWNvbG9yOiAkYy1iYWQ7XG4gICAgfVxuXG4gICAgdGQ6bnRoLWNoaWxkKDIpIHtcbiAgICAgIEBleHRlbmQgJW5vd3JhcC1lbGxpcHNpcztcblxuICAgICAgbWF4LXdpZHRoOiAyMDBweDtcbiAgICB9XG5cbiAgICB0ZDpsYXN0LWNoaWxkIHtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgb3BhY2l0eTogMC44O1xuICAgIH1cblxuICAgIHRyLndpbiB0ZDpsYXN0LWNoaWxkIHtcbiAgICAgIGNvbG9yOiAkYy1nb29kO1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG5cbiAgICB0ci5sb3NzIHRkOmxhc3QtY2hpbGQge1xuICAgICAgY29sb3I6ICRjLWJhZDtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9XG5cbiAgLmNvbG9yLWljb24ge1xuICAgIG9wYWNpdHk6IDAuNjtcbiAgfVxufVxuIiwiLnRvdXJfX3RlYW0taW5mbyB7XG4gIC5wbGF5ZXJzIHtcbiAgICB3aWR0aDogMTAwJTtcblxuICAgIHRyIHtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihiYWNrZ3JvdW5kLWNvbG9yKTtcblxuICAgICAgJjpudGgtY2hpbGQob2RkKSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjLWJnLXplYnJhO1xuICAgICAgfVxuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogbWl4KCRjLWxpbmssICRjLWJnLWJveCwgMTAlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aCxcbiAgICB0ZCB7XG4gICAgICBwYWRkaW5nOiAwLjNlbSAxZW07XG4gICAgfVxuXG4gICAgdGQ6bGFzdC1jaGlsZCB7XG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB9XG5cbiAgICAucmF0aW5nIHtcbiAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgIGZvbnQtc2l6ZTogMC44ZW07XG4gICAgfVxuXG4gICAgLmxlYWRlciB7XG4gICAgICAmOjpiZWZvcmUge1xuICAgICAgICBjb2xvcjogJGMtYnJhZztcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwLjE1ZW07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIjbW9kYWwge1xuICAmLW92ZXJsYXkge1xuICAgIEBleHRlbmQgJWZ1bGxzY3JlZW4tbWFzaywgJWZsZXgtY2VudGVyO1xuXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIH1cblxuICAmLXdyYXAge1xuICAgIEBleHRlbmQgJWJveC1yYWRpdXMsICVwb3B1cC1zaGFkb3csICVmbGV4LWNvbHVtbjtcblxuICAgIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1heC13aWR0aDogMTAwdnc7XG4gICAgbWF4LWhlaWdodDogOTZ2aDtcblxuICAgID4gZGl2IHtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgcGFkZGluZzogMnJlbTtcbiAgICB9XG5cbiAgICAuY2xvc2Uge1xuICAgICAgY29sb3I6ICRjLWZvbnQ7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICBsaW5lLWhlaWdodDogMjhweDtcbiAgICAgIHdpZHRoOiAzMnB4O1xuICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgdG9wOiAwO1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICBiYWNrZ3JvdW5kOiBub25lO1xuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1zbWFsbCkge1xuICAgICAgICB0b3A6IC0xMnB4O1xuICAgICAgICByaWdodDogLTEycHg7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjLWJnLXBvcHVwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmNsb3NlOmhvdmVyIHtcbiAgICAgIEBleHRlbmQgJWJveC1zaGFkb3c7XG5cbiAgICAgIGJhY2tncm91bmQ6ICRjLWJhZDtcbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgIH1cbiAgfVxufVxuIiwiJHRlYW0tY29sb3JzOiAoXG4gIDA6IGhzbCgyNzQsIDEwMCUsIDU5JSksXG4gIDE6IGhzbCgyNDAsIDEwMCUsIDY3JSksXG4gIDI6ICMwMDgwMDAsXG4gIDM6ICNiMjIyMjIsXG4gIDQ6IGhzbCgxNiwgODAlLCA2MiUpLFxuICA1OiAjOWFjZDMyLFxuICA2OiAjZmY0NTAwLFxuICA3OiAjMmU4YjU3LFxuICA4OiAjZGFhNTIwLFxuICA5OiBoc2woMzIsIDc1JSwgNDclKSxcbik7XG5cbnRlYW0ge1xuICBwYWRkaW5nOiAxcHggNXB4O1xuICBmb250LXNpemU6IDAuOGVtO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgY29sb3I6ICRjLWJyYWc7XG59XG5cbkBlYWNoICRpbmRleCwgJGNvbG9yIGluICR0ZWFtLWNvbG9ycyB7XG4gIHRlYW0udHRjLSN7JGluZGV4fSB7XG4gICAgY29sb3I6ICN7JGNvbG9yfTtcbiAgfVxufVxuXG4udG91cl9fcGxheWVyLWluZm8gdGVhbSB7XG4gIG1hcmdpbjogMXJlbSBhdXRvIDAgYXV0bztcbiAgcGFkZGluZzogMC4xNXJlbSAwLjhyZW07XG4gIGZvbnQtc2l6ZTogMWVtO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi50b3VyX19zdGFuZGluZyB7XG4gIC5yYXRpbmcge1xuICAgIHBhZGRpbmctcmlnaHQ6IDVweDtcbiAgfVxufVxuXG4udG91cl9fdGVhbS1zdGFuZGluZyB7XG4gIHRib2R5IHRyIHtcbiAgICAmOm50aC1jaGlsZChvZGQpIHtcbiAgICAgIGJhY2tncm91bmQ6ICRjLWJnLXplYnJhO1xuICAgIH1cblxuICAgICY6bnRoLWNoaWxkKGV2ZW4pIHtcbiAgICAgIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbiAgICB9XG4gIH1cblxuICAudGVhbSB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBjb2xvcjogJGMtbGluaztcbiAgICB9XG5cbiAgICB0ZWFtIHtcbiAgICAgIEBleHRlbmQgJWJyZWFrLXdvcmQ7XG5cbiAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICB9XG4gIH1cblxuICAucGxheWVycyB7XG4gICAgQGV4dGVuZCAlYnJlYWstd29yZDtcblxuICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgfVxuXG4gIHNjb3JlIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBwYWRkaW5nOiAwIDJweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAkYy1icmFnO1xuICAgIH1cblxuICAgICYudG9wIHtcbiAgICAgIHVzZXJuYW1lIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAudG90YWwge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIHBhZGRpbmctcmlnaHQ6ICRibG9jay1nYXA7XG4gIH1cblxuICB0ci5hY3RpdmUgdGQ6bGFzdC1jaGlsZCB7XG4gICAgJGMtYWN0aXZlLWJvcmRlcjogbWl4KCRjLXByaW1hcnksICRjLWJnLWJveCwgNzAlKTtcblxuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChcbiAgICAgIHRvIGxlZnQsXG4gICAgICAkYy1hY3RpdmUtYm9yZGVyIDBweCxcbiAgICAgICRjLWFjdGl2ZS1ib3JkZXIgNXB4LFxuICAgICAgcmdiYSgwLCAwLCAwLCAwKSA1cHgsXG4gICAgICByZ2JhKDAsIDAsIDAsIDApIDEwMCVcbiAgICApO1xuICB9XG5cbiAgLnRvdXJfX21haW4gJiB0cjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogbWl4KCRjLXByaW1hcnksICRjLWJnLWJveCwgMzAlKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgdGQge1xuICAgIHBhZGRpbmc6IDFyZW0gMC41cmVtO1xuICB9XG5cbiAgLm1vcmUtdGVhbXMge1xuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcblxuICAgIGEge1xuICAgICAgcGFkZGluZzogMXJlbSAwO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuICB9XG5cbiAgJi0tZnVsbCB7XG4gICAgdGQge1xuICAgICAgcGFkZGluZzogMnJlbSAxcmVtO1xuXG4gICAgICAmLnRlYW0ge1xuICAgICAgICBjb2xvcjogJGMtYnJhZztcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi50ZWFtLWJhdHRsZSB7XG4gICZfX2xpc3Qge1xuICAgIGEge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICB9XG59XG5cbi50ZWFtLWJhdHRsZV9fY2hvaWNlIHtcbiAgYnV0dG9uIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW4tdG9wOiAxcmVtO1xuICB9XG59XG5cbi50b3VyX19kdWVscyB0ZWFtIHtcbiAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcbn1cblxuLnRlYW0tcGlja2VyIHtcbiAgdWwge1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgZm9udC1zaXplOiAxLjFlbTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUVFQSxZQUFZO0FBa0JaLDZEQUE2RDtBQWM3RCxtQkFBbUI7QUFNbkIsa0NBQWtDO0FBRWxDLHNCQUFzQjtBQU10QixvQ0FBb0M7QUFFcEMsb0JBQW9CO0FBTXBCLGlDQUFpQztBQUVqQyxnQkFBZ0I7QUFJaEI7eUVBQ3lFO0FBR3pFLHNFQUFzRTtBQUd0RSwrQkFBK0I7QUFFL0IsZ0JBQWdCO0FBS2hCLCtCQUErQjtBQUUvQixpQkFBaUI7QUFJakIsa0JBQWtCO0FBSWxCLGNBQWM7QUFJZCxnQkFBZ0I7QUFJaEIsaUJBQWlCO0FBSWpCLCtCQUErQjtBQThCL0IsYUFBYTtBQU1iLGFBQWE7QURuSGIsNkRBQTZEO0FBYzdELG1CQUFtQjtBQUtuQixzQkFBc0I7QUFLdEIsZ0JBQWdCO0FBR2hCOzs7NkVBRzZFO0FBRzdFO3NGQUNzRjtBQUd0RixpQkFBaUI7QUFHakIsaUJBQWlCO0FBSWpCLGtCQUFrQjtBQUlsQixjQUFjO0FLbkVkLHdDQUF3QztBc0JBeEMsWUFBWTtBQWdCWixhQUFhO0FBU2Isa0JBQWtCO0FBS2xCLGtCQUFrQjtBQUtsQixhQUFhO0FFbkNiLHNEQUFzRDtBQU90RCx1RUFBdUU7QVFQdkUsQU5RQSxNTVJNLENBSUosS0FBSyxFU0VKLFdBQUssRUVMTCxnQkFBVSxDQTZFVCxDQUFDLEFBQUEsSUFBSyxDQUFBLFVBQVUsR085RXBCLG1CQUFtQixDQXVGakIsS0FBSyxFTXZGUCxpQkFBaUIsQ0EwQmYsTUFB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 */
