@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 */
/* 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 */
/* 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), .swiss__main__header .ongoing .nb, .swiss__main__header .time, .swiss__standing td.rank, .swiss__standing .tieBreak, .swiss__player-info .stats td:last-child, .swiss__player-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, .swiss__controls, .swiss__player-info .stats h2 {
  background: linear-gradient(to bottom, #3c3934, #33312e 100%);
}

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

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

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

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

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

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

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

.swiss__controls .pager, .schedule-next-round, .swiss__standing .pairings div, .swiss__standing .pairings div > * {
  /* extends %flex-wrap */
  display: flex;
  flex-flow: row wrap;
  align-items: center;
}

.context-streamer, .chat__members__number, .swiss__meta section[data-icon], .swiss__board .mini-game__player, .swiss__main__header, .swiss__main__header .ongoing {
  display: flex;
  flex-flow: row nowrap;
  align-items: center;
}

.swiss__controls {
  /* extends %flex-center */
  display: flex;
  flex-flow: row wrap;
  align-items: center;
  justify-content: space-between;
}

.mchat, .mchat__content, .swiss__side, .swiss__board, .swiss__main__header .clock-created, .swiss__ur-playing, .swiss__stats, .swiss__player-info .stats {
  display: flex;
  flex-flow: column;
}

.mchat__tab input, .mchat, .swiss__meta, .swiss__board, .swiss__player-info, .swiss__stats, .pagination a,
.pagination span, .swiss__side .tour__prize {
  border-radius: 3px;
}

.mchat, .swiss__meta, .swiss__board, .swiss__player-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;
}

.swiss__stats, .mchat, .swiss__meta, .swiss__board, .swiss__player-info, .context-streamer, .swiss__controls {
  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
}

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

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

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

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

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

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

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

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

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

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

.slist td {
  padding: 1rem;
}

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

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

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

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

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

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

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

.pull-quote {
  margin: 0 auto;
}

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

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

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

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

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

.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;
}

.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;
}

.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;
}

.pagination {
  color: #6b6b6b;
  display: flex;
}

.pagination a,
.pagination span {
  width: 2rem;
  height: 2rem;
  margin: 0 0.1rem;
  display: flex;
  justify-content: center;
  align-items: center;
}

.pagination span {
  color: #6b6b6b;
}

.pagination a:hover {
  background: #282f35;
}

.pagination .current {
  background: #3692e7;
  color: #fff;
}

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;
  }
}

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

.swiss__side {
  grid-area: side;
}

.swiss__table {
  grid-area: table;
}

.swiss__main {
  grid-area: main;
}

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

.swiss .swiss__board__top {
  display: none;
}

@media (min-width: 800px) {
  .swiss {
    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';
  }
  .swiss .mchat__messages {
    max-height: inherit;
  }
}

@media (min-width: 1260px) {
  .swiss {
    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';
  }
  .swiss .swiss__board__top {
    display: block;
  }
}

/* ── Swiss Mascot Styles ───────────────────────────────────────────────────── */
.mascot {
  width: 400px;
  height: 260px;
  position: relative;
  overflow: hidden;
  pointer-events: auto;
}

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

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

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

.swiss-mascot-featured-dock .mascot-sprite,
#swiss-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;
  animation: mascotPace 6s linear infinite alternate;
}

.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;
}

.mascot-video {
  display: block;
  width: 280px;
  height: auto;
  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);
}

/* ── End Swiss Mascot Styles ───────────────────────────────────────────────── */
.swiss__side .mchat {
  flex: 1 1 7em;
  margin-top: 2vmin;
}

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

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

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

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

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

.swiss__meta section p {
  margin: 0;
}

.swiss__meta section time {
  opacity: 1;
}

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

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

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

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

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

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

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

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

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

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

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

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

.swiss__main__header {
  position: relative;
  min-height: 7em;
  padding: 0 3vmin;
}

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

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

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

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

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

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

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

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

.swiss__main__header .ongoing {
  flex: 0 0 auto;
  font-weight: bold;
  color: #999999;
}

.swiss__main__header .ongoing .shy {
  white-space: normal;
}

.swiss__main__header .ongoing .nb {
  color: #bf811d;
  flex: 1 1 100%;
  text-align: right;
  font-size: 2.8em;
  margin-right: 0.5em;
}

.swiss__main-finished .swiss__main__header h1 {
  text-align: center;
}

.swiss__main__header .time {
  color: #bf811d;
  font-size: 1.7em;
  margin-left: 0.2em;
}

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

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

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

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

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

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

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

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

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

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

.swiss__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);
}

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

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

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

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

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

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

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

.schedule-next-round {
  padding: 1em 0;
}

.schedule-next-round.required {
  background: #d64f00;
}

.schedule-next-round input {
  margin: auto;
}

.swiss__standing {
  border: none;
}

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

.swiss__standing .player .name {
  display: inline-block;
  vertical-align: middle;
  padding-right: 5px;
  max-width: 140px;
}

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

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

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

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

.swiss__standing:not(.created):not(.loading) tbody tr:hover {
  background: #29353f;
  cursor: pointer;
}

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

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

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

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

.swiss__standing .pairings {
  padding: 0;
  font-weight: bold;
  width: 100%;
}

.swiss__standing .pairings div {
  justify-content: flex-end;
  align-items: stretch;
  min-height: 3.5em;
}

.swiss__standing .pairings div > * {
  justify-content: center;
  flex: 0 0 2em;
  text-align: center;
}

.swiss__standing .pairings .ongoing {
  color: #3692e7;
}

.swiss__standing .pairings .ongoing:hover {
  background: #2c4b67;
}

.swiss__standing .pairings .win {
  color: #629924;
}

.swiss__standing .pairings .win:hover {
  background: #3b4d22;
}

.swiss__standing .pairings .loss {
  color: #8a2d2c;
}

.swiss__standing .pairings .loss:hover {
  background: #472725;
}

.swiss__standing .pairings .draw {
  color: #91651e;
}

.swiss__standing .pairings bye {
  color: #999999;
}

.swiss__standing .pairings late {
  color: #999999;
}

.swiss__standing .pairings absent {
  color: #8a2d2c;
}

.swiss__standing .pairings r {
  border-left: 1px dotted #404040;
}

.swiss__standing .points {
  text-align: right;
  font-weight: bold;
}

.swiss__standing .tieBreak {
  text-align: right;
  padding-right: 2vmin;
}

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

.swiss__standing.long .pairings div > * {
  flex: 0 0 1.5em;
}

.swiss__standing.xlong .swiss__standing .pairings div > * {
  flex: 0 0 1.3em;
}

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

.swiss__stats h2 {
  font-size: 1.5em;
  margin-bottom: 2rem;
  text-align: center;
}

.swiss__stats table {
  margin: auto;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.swiss__player-info .pairings tr:hover th {
  border-color: #6b6b6b;
}

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

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

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

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

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

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

.swiss__player-info .pairings .outcome {
  font-style: italic;
  color: #6b6b6b;
  text-align: center;
  text-transform: capitalize;
}

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

.pagination {
  margin-left: var(--box-padding);
}

.pagination--top {
  padding-bottom: 1em;
  border-bottom: 1px solid #404040;
}

.pagination--bottom {
  padding: 1em 0;
}

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

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

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpc3MvY3NzL2J1aWxkL3N3aXNzLnNob3cuZGFyay5jc3MiLCJzb3VyY2VzIjpbInN3aXNzL2Nzcy9idWlsZC9zd2lzcy5zaG93LmRhcmsuc2NzcyIsImNvbW1vbi9jc3MvdGhlbWUvX2Rhcmsuc2NzcyIsImNvbW1vbi9jc3MvdGhlbWUvX2RlZmF1bHQuc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX2Z1bmN0aW9ucy5zY3NzIiwic3dpc3MvY3NzL2J1aWxkL19zd2lzcy5zaG93LnNjc3MiLCJjb21tb24vY3NzL19wbHVnaW4uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvX2JyZWFrcG9pbnQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fc2V0dGluZ3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fY29udGV4dC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19oZWxwZXJzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX3BhcnNlcnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL19xdWVyeS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3NpbmdsZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvc2luZ2xlL19kZWZhdWx0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fZG91YmxlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQtcGFpci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvZG91YmxlL19kb3VibGUtc3RyaW5nLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL190cmlwbGUuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3RyaXBsZS9fZGVmYXVsdC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3Jlc29sdXRpb24vX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fbm8tcXVlcnkuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fcmVzcG9uZC10by5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19sZWdhY3ktc2V0dGluZ3Muc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX2FsbC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fei1pbmRleC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fbWVkaWEtcXVlcmllcy5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fdmFyaWFibGVzLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L191bmlib2FyZC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fbWl4aW5zLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19leHRlbmRzLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19mbGV4LnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19ib3guc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX2ZsdWlkLXNpemUuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19mYnQuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19iYXItZ2xpZGVyLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fc2xpc3Quc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19xdW90ZS5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX2NvbG9yLWljb24uc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19jb250ZXh0LXN0cmVhbWVyLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fbm93LXBsYXlpbmcuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19wb2RpdW0uc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19wYWdpbmF0aW9uLnNjc3MiLCJjaGF0L2Nzcy9fY2hhdC5zY3NzIiwiY29tbW9uL2Nzcy9iYXNlL19zY3JvbGxiYXIuc2NzcyIsImNoYXQvY3NzL190YWIuc2NzcyIsImNoYXQvY3NzL19tZW1iZXJzLnNjc3MiLCJjaGF0L2Nzcy9fZGlzY3Vzc2lvbi5zY3NzIiwiY2hhdC9jc3MvX3BhbGFudGlyLnNjc3MiLCJzd2lzcy9jc3MvX3Nob3cuc2NzcyIsInN3aXNzL2Nzcy9fbGF5b3V0LnNjc3MiLCJzd2lzcy9jc3MvX3NpZGUuc2NzcyIsInN3aXNzL2Nzcy9fYm9hcmRzLnNjc3MiLCJzd2lzcy9jc3MvX2FwcC1oZWFkZXIuc2NzcyIsInN3aXNzL2Nzcy9fYXBwLW5vdGljZS5zY3NzIiwic3dpc3MvY3NzL19hcHAtY29udHJvbC5zY3NzIiwic3dpc3MvY3NzL19hcHAtc3RhbmRpbmcuc2NzcyIsInN3aXNzL2Nzcy9fc3RhdHMuc2NzcyIsInN3aXNzL2Nzcy9fcGxheWVyLWluZm8uc2NzcyIsInN3aXNzL2Nzcy9fcm91bmQtcGFpcmluZ3Muc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL3RoZW1lL2RhcmsnO1xuQGltcG9ydCAnc3dpc3Muc2hvdyc7XG4iLCJAaW1wb3J0ICdkZWZhdWx0JztcblxuJHRoZW1lOiAnZGFyayc7XG4kY29sb3Itc2NoZW1lOiAnZGFyayc7XG4kdGhlbWUtbGlnaHQ6IGZhbHNlO1xuJHRoZW1lLWRhcms6IHRydWU7XG5cbkBmdW5jdGlvbiBjLWRpbW1lcigkY29sb3IsICR3ZWlnaHQ6IDIwJSkge1xuICBAcmV0dXJuIG1peCgjMDAwLCAkY29sb3IsICR3ZWlnaHQpO1xufVxuXG5AZnVuY3Rpb24gYy1jbGVhcmVyKCRjb2xvciwgJHdlaWdodDogMjAlKSB7XG4gIEByZXR1cm4gbWl4KCNmZmYsICRjb2xvciwgJHdlaWdodCk7XG59XG5cbiRjLWJnLXBhZ2U6IGhzbCgkYy1zaXRlLWh1ZSwgMTAlLCA4JSk7XG4kYy1iZy1oaWdoOiBoc2woJGMtc2l0ZS1odWUsIDclLCAxNCUpO1xuJGMtYmctbG93OiBoc2woJGMtc2l0ZS1odWUsIDclLCAyMiUpO1xuXG4vKiBldmVuIHJvd3MgaW4gbGlzdCBvciB0YWJsZXMsIHN1YnRsZSBzaGFkZSBvZiAkYy1iZy1oaWdoICovXG4kYy1iZy16ZWJyYTogaHNsKCRjLXNpdGUtaHVlLCA1JSwgMTglKTtcbiRjLWJnLXplYnJhMjogaHNsKCRjLXNpdGUtaHVlLCA1JSwgMjMlKTtcblxuJGMtYm9keS1ncmFkaWVudDogaHNsKCRjLXNpdGUtaHVlLCAxMiUsIDE2JSk7XG5cbiRjLWZvbnQ6IGhzbCgwLCAwJSwgNzMlKTtcbiRjLWZvbnQtZGltOiBjLWxpZ2h0KCRjLWZvbnQsIDYwJSk7XG4kYy1mb250LWRpbW1lcjogYy1saWdodCgkYy1mb250LCA0MiUpO1xuJGMtZm9udC1jbGVhcjogYy1saWdodCgkYy1mb250LCA4MCUpO1xuJGMtZm9udC1jbGVhcmVyOiBjLWxpZ2h0KCRjLWZvbnQsIDg5JSk7XG4kYy1zaGFkZTogYy1saWdodCgkYy1mb250LCAzMCUpO1xuJGMtZm9udC1wYWdlOiAkYy1mb250LWRpbTtcblxuLyogUHJpbWFyeTogYmx1ZSAqL1xuJGMtcHJpbWFyeTogaHNsKDIwOSwgNzklLCA1NiUpO1xuJGMtcHJpbWFyeS1kaW06IGMtZGltbWVyKCRjLXByaW1hcnksIDE1JSk7XG4kYy1wcmltYXJ5LWNsZWFyOiBjLWNsZWFyZXIoJGMtcHJpbWFyeSk7XG5cbi8qIFNlY29uZGFyeTogZ3JlZW4gKi9cbiRjLXNlY29uZGFyeTogaHNsKDg4LCA2MiUsIDM3JSk7XG4kYy1zZWNvbmRhcnktZGltOiBjLWRpbW1lcigkYy1zZWNvbmRhcnkpO1xuJGMtc2Vjb25kYXJ5LWRpbW1lcjogYy1kaW1tZXIoJGMtc2Vjb25kYXJ5LCA0MCUpO1xuXG4vKiBCcmFnOiBnb2xkICovXG4kYy1icmFnOiBoc2woMzcsIDc0JSwgNDMlKTtcblxuLyogRmFuY3k6IHBpbmsgKi9cbiRjLWZhbmN5OiBoc2woMjk0LCA2MiUsIDQ4JSk7XG5cbi8qIEdvb2Q6IGdyZWVuICovXG4kYy1nb29kOiAkYy1zZWNvbmRhcnk7XG4kYy1nb29kLW92ZXI6ICRjLXNlY29uZGFyeS1vdmVyO1xuXG4vKiBXYXJuOiBvcmFuZ2UgKi9cbiRjLXdhcm46ICRjLWJyYWc7XG4kYy13YXJuLW92ZXI6ICRjLWJyYWctb3ZlcjtcblxuLyogQmFkOiByZWQgKi9cbiRjLWJhZDogJGMtZXJyb3I7XG4kYy1iYWQtb3ZlcjogJGMtZXJyb3Itb3ZlcjtcblxuJGMtbGluazogJGMtcHJpbWFyeTtcbiRjLWxpbmstZGltOiAkYy1wcmltYXJ5LWRpbTtcbiRjLWxpbmstY2xlYXI6ICRjLXByaW1hcnktY2xlYXI7XG4kYy1saW5rLWhvdmVyOiBjLWNsZWFyZXIoc2F0dXJhdGUoJGMtcHJpbWFyeSwgMTAwJSksIDI1JSk7XG5cbiRjLWJnLWJveDogJGMtYmctaGlnaDtcbiRjLWJnLWJveC1vcGFxdWU6ICRjLWJnLWJveDtcbiRjLWJnLWlucHV0OiBjLWxpZ2h0KCRjLWJnLXBhZ2UsIDEzJSk7XG5cbiRjLWJnLXBvcHVwOiAkYy1iZy1sb3c7XG4kYy1wb3B1cDogJGMtZm9udC1jbGVhcjtcblxuJGMtYmctaGVhZGVyLWRyb3Bkb3duOiAkYy1iZy1wb3B1cDtcbiRjLWhlYWRlci1kcm9wZG93bjogJGMtcG9wdXA7XG5cbiRjLWJvdDogJGMtZmFuY3k7XG5cbiRjLXBhZ2UtaW5wdXQ6ICRjLWJnLWJveDtcblxuJGMtYm9yZGVyOiBoc2woMCwgMCUsIDI1JSk7XG4kYy1ib3JkZXItcGFnZTogaHNsKDAsIDAlLCAyMiUpO1xuJGJvcmRlcjogJGJvcmRlci13aWR0aCAkYm9yZGVyLXN0eWxlICRjLWJvcmRlcjtcblxuJGMtZm9udC1zaGFkb3c6IGJsYWNrO1xuJHRleHQtc2hhZG93OiBub25lO1xuXG5AbWl4aW4gbWV0YWwtYmcge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBoc2woJGMtc2l0ZS1odWUsIDclLCAyMiksIGhzbCgkYy1zaXRlLWh1ZSwgNSUsIDE5KSAxMDAlKTtcbn1cblxuQG1peGluIG1ldGFsIHtcbiAgQGluY2x1ZGUgbWV0YWwtYmc7XG59XG5cbkBtaXhpbiBtZXRhbC1ob3ZlciB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIGhzbCgkYy1zaXRlLWh1ZSwgNyUsIDI1KSwgaHNsKCRjLXNpdGUtaHVlLCA1JSwgMjIpIDEwMCUpO1xuICBjb2xvcjogJGMtZm9udC1jbGVhcjtcbn1cblxuQG1peGluIHBhZ2UtbWV0YWwge1xuICBAaW5jbHVkZSBtZXRhbDtcbn1cblxuQG1peGluIHBhZ2UtbWV0YWwtaG92ZXIge1xuICBAaW5jbHVkZSBtZXRhbC1ob3Zlcjtcbn1cblxuQG1peGluIHRoZW1lLXN0eWxlIHtcbn1cbiIsIkBpbXBvcnQgJy4uL2Fic3RyYWN0L2Z1bmN0aW9ucyc7XG5cbi8qIENvbG9ycyAqL1xuXG5AZnVuY3Rpb24gYy1kaW1tZXIoJGNvbG9yLCAkd2VpZ2h0OiAxNyUpIHtcbiAgQHJldHVybiBtaXgoI2ZmZiwgJGNvbG9yLCAkd2VpZ2h0KTtcbn1cblxuQGZ1bmN0aW9uIGMtY2xlYXJlcigkY29sb3IsICR3ZWlnaHQ6IDE3JSkge1xuICBAcmV0dXJuIG1peCgjMDAwLCAkY29sb3IsICR3ZWlnaHQpO1xufVxuXG4kYy1zaXRlLWh1ZTogMzc7XG5cbiRjLWJnLXBhZ2U6IGhzbCgkYy1zaXRlLWh1ZSwgMTAlLCA5MiUpO1xuXG4vLyBoc2woMjEwLCAxNyUsIDk1JSlcbiRjLWJnLWhpZ2g6IGhzbCgwLCAwJSwgMTAwJSk7XG4kYy1iZy1sb3c6IGhzbCgwLCAwJSwgODklKTtcblxuLyogZXZlbiByb3dzIGluIGxpc3Qgb3IgdGFibGVzLCBzdWJ0bGUgc2hhZGUgb2YgJGMtYmctaGlnaCAqL1xuJGMtYmctemVicmE6IGhzbCgkYy1zaXRlLWh1ZSwgMTIlLCA5Ni41JSk7XG4kYy1iZy16ZWJyYTI6IGhzbCgkYy1zaXRlLWh1ZSwgMTIlLCA5MiUpO1xuXG4kYy1ib2R5LWdyYWRpZW50OiBoc2woJGMtc2l0ZS1odWUsIDEyJSwgODQlKTtcblxuJGMtZm9udDogaHNsKDAsIDAlLCAzMCUpO1xuJGMtZm9udC1kaW06IGMtbGlnaHQoJGMtZm9udCwgNDclKTtcbiRjLWZvbnQtZGltbWVyOiBjLWxpZ2h0KCRjLWZvbnQsIDcwJSk7XG4kYy1mb250LWNsZWFyOiBjLWxpZ2h0KCRjLWZvbnQsIDEyJSk7XG4kYy1mb250LWNsZWFyZXI6IGMtbGlnaHQoJGMtZm9udCwgMCUpO1xuJGMtc2hhZGU6IGMtZGltbWVyKCRjLWZvbnQsIDgwJSk7XG4kYy1mb250LXBhZ2U6IGMtbGlnaHQoJGMtZm9udCwgMzclKTtcblxuLyogUHJpbWFyeTogYmx1ZSAqL1xuJGMtcHJpbWFyeTogaHNsKDIwOSwgNzclLCA0NiUpO1xuJGMtcHJpbWFyeS1kaW06IGMtZGltbWVyKCRjLXByaW1hcnkpO1xuJGMtcHJpbWFyeS1jbGVhcjogYy1jbGVhcmVyKCRjLXByaW1hcnkpO1xuJGMtcHJpbWFyeS1vdmVyOiAjZmZmO1xuXG4vKiB0ZXh0IG92ZXIgcHJpbWFyeSBiYWNrZ3JvdW5kICovXG5cbi8qIFNlY29uZGFyeTogZ3JlZW4gKi9cbiRjLXNlY29uZGFyeTogaHNsKDg4LCA2MiUsIDM3JSk7XG4kYy1zZWNvbmRhcnktZGltOiBjLWRpbW1lcigkYy1zZWNvbmRhcnkpO1xuJGMtc2Vjb25kYXJ5LWRpbW1lcjogYy1kaW1tZXIoJGMtc2Vjb25kYXJ5LCA0MCUpO1xuJGMtc2Vjb25kYXJ5LW92ZXI6ICNmZmY7XG5cbi8qIHRleHQgb3ZlciBzZWNvbmRhcnkgYmFja2dyb3VuZCAqL1xuXG4vKiBBY2NlbnQ6IG9yYW5nZSAqL1xuJGMtYWNjZW50OiBoc2woMjIsIDEwMCUsIDQyJSk7XG4kYy1hY2NlbnQtZGltOiBjLWRpbW1lcigkYy1hY2NlbnQpO1xuJGMtYWNjZW50LWNsZWFyOiBjLWNsZWFyZXIoJGMtYWNjZW50KTtcbiRjLWFjY2VudC1vdmVyOiAjZmZmO1xuXG4vKiB0ZXh0IG92ZXIgYWNjZW50IGJhY2tncm91bmQgKi9cblxuLyogQnJhZzogZ29sZCAqL1xuJGMtYnJhZzogaHNsKDM3LCA3NCUsIDQ4JSk7XG4kYy1icmFnLW92ZXI6ICNmZmY7XG5cbi8qIHRleHQgb3ZlciBicmFnIGJhY2tncm91bmQgKi9cblxuLyogRXJyb3I6IHJlZCAqL1xuJGMtcmVkOiBoc2woMCwgNjAlLCA1MCUpO1xuJGMtZXJyb3I6ICRjLXJlZDtcbiRjLWVycm9yLW92ZXI6ICNmZmY7XG5cbi8qIHRleHQgb3ZlciBicmFnIGJhY2tncm91bmQgKi9cblxuLyogR29vZDogZ3JlZW4gKi9cbiRjLWdvb2Q6ICRjLXNlY29uZGFyeTtcbiRjLWdvb2Qtb3ZlcjogJGMtc2Vjb25kYXJ5LW92ZXI7XG5cbi8qIFdhcm46IG9yYW5nZSAqL1xuJGMtd2FybjogJGMtYnJhZztcbiRjLXdhcm4tb3ZlcjogJGMtYnJhZy1vdmVyO1xuXG4vKiBCYWQ6IHJlZCAqL1xuJGMtYmFkOiAkYy1lcnJvcjtcbiRjLWJhZC1vdmVyOiAkYy1lcnJvci1vdmVyO1xuXG4vKiBIZWFydDogcmVkICovXG4kYy1oZWFydDogJGMtZXJyb3I7XG4kYy1oZWFydC1vdmVyOiAkYy1lcnJvci1vdmVyO1xuXG4vKiBGYW5jeTogcGluayAqL1xuJGMtZmFuY3k6IGhzbCgyOTQsIDYxJSwgNjIlKTtcbiRjLWZhbmN5LW92ZXI6IHdoaXRlO1xuXG4vKiB0ZXh0IG92ZXIgYnJhZyBiYWNrZ3JvdW5kICovXG5cbiRjLWxpbms6ICRjLXByaW1hcnk7XG4kYy1saW5rLWRpbTogJGMtcHJpbWFyeS1kaW07XG4kYy1saW5rLWNsZWFyOiAkYy1wcmltYXJ5LWNsZWFyO1xuJGMtbGluay1ob3ZlcjogYy1jbGVhcmVyKHNhdHVyYXRlKCRjLXByaW1hcnksIDEwMCUpLCAzNSUpO1xuJGMtbGluay1vdmVyOiAkYy1wcmltYXJ5LW92ZXI7XG5cbiRjLWJnLWJveDogJGMtYmctaGlnaDtcbiRjLWJnLWJveC1vcGFxdWU6ICRjLWJnLWJveDtcbiRjLWJnLWlucHV0OiBjLWxpZ2h0KCRjLWJnLXBhZ2UsIDk4JSk7XG5cbiRjLWJvcmRlcjogaHNsKDAsIDAlLCA4NSUpO1xuJGMtYm9yZGVyLXBhZ2U6IGhzbCgwLCAwJSwgODAlKTtcblxuJGMtcGFnZS1tYXNrOiBoc2xhKDAsIDAsIDAlLCAwLjYpO1xuXG4kYy1iZy1wb3B1cDogJGMtYmctaGlnaDtcbiRjLXBvcHVwOiAkYy1mb250O1xuXG4kYy1iZy1oZWFkZXItZHJvcGRvd246ICRjLWJnLXBvcHVwO1xuJGMtaGVhZGVyLWRyb3Bkb3duOiAkYy1wb3B1cDtcblxuJGMtZm9udC1zaGFkb3c6IHdoaXRlO1xuJHRleHQtc2hhZG93OiAwIDFweCAwICRjLWZvbnQtc2hhZG93O1xuXG4kYy1ib3Q6ICRjLWZhbmN5O1xuXG4kYy1wYWdlLWlucHV0OiAkYy1iZy1sb3c7XG5cbi8qIEJvcmRlcnMgKi9cblxuJGJvcmRlci13aWR0aDogMXB4O1xuJGJvcmRlci1zdHlsZTogc29saWQ7XG4kYm9yZGVyOiAkYm9yZGVyLXdpZHRoICRib3JkZXItc3R5bGUgJGMtYm9yZGVyO1xuXG4vKiBTaGFkb3dzICovXG5cbiRib3gtc2hhZG93OiAwIDJweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksIDAgMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4xMik7XG5cbi8vICRib3gtc2hhZG93OiAwIDJweCAycHggMCByZ2JhKDAsMCwwLC4xNTcpO1xuIiwiQGZ1bmN0aW9uIGMtbGlnaHQoJGNvbG9yLCAkdmFsdWUpIHtcbiAgQHJldHVybiBjaGFuZ2UtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAkdmFsdWUpO1xufVxuXG5AZnVuY3Rpb24gaW1nLXVybCgkcGF0aCkge1xuICBAcmV0dXJuIHVybCgnI3skaW1nLXBhdGh9LyN7JHBhdGh9Jyk7XG59XG4iLCJAaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL3BsdWdpbic7XG5AaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9mYnQnO1xuQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy9jb21wb25lbnQvYmFyLWdsaWRlcic7XG5AaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9zbGlzdCc7XG5AaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9xdW90ZSc7XG5AaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9jb2xvci1pY29uJztcbkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L2NvbnRleHQtc3RyZWFtZXInO1xuQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy9jb21wb25lbnQvbm93LXBsYXlpbmcnO1xuQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy9jb21wb25lbnQvcG9kaXVtJztcbkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L3BhZ2luYXRpb24nO1xuQGltcG9ydCAnLi4vLi4vLi4vY2hhdC9jc3MvY2hhdCc7XG5AaW1wb3J0ICcuLi9zaG93JztcbiIsIi8qIENvbW1vbiBpbXBvcnRzIGZvciBhbGwgQ1NTIG1vZHVsZXMgKi9cblxuQGltcG9ydCAnLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50JztcblxuQGltcG9ydCAnYWJzdHJhY3QvYWxsJztcbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRGVmYXVsdCBWYXJpYWJsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJEJyZWFrcG9pbnQtU2V0dGluZ3M6IChcbiAgJ2RlZmF1bHQgbWVkaWEnOiBhbGwsXG4gICdkZWZhdWx0IGZlYXR1cmUnOiBtaW4td2lkdGgsXG4gICdkZWZhdWx0IHBhaXInOiB3aWR0aCxcblxuICAnZm9yY2UgYWxsIG1lZGlhIHR5cGUnOiBmYWxzZSxcbiAgJ3RvIGVtcyc6IGZhbHNlLFxuICAndHJhbnNmb3JtIHJlc29sdXRpb25zJzogdHJ1ZSxcblxuICAnbm8gcXVlcmllcyc6IGZhbHNlLFxuICAnbm8gcXVlcnkgZmFsbGJhY2tzJzogZmFsc2UsXG5cbiAgJ2Jhc2UgZm9udCBzaXplJzogMTZweCxcblxuICAnbGVnYWN5IHN5bnRheCc6IGZhbHNlXG4pO1xuXG4kYnJlYWtwb2ludDogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwiYnJlYWtwb2ludC9zZXR0aW5nc1wiO1xuQGltcG9ydCAnYnJlYWtwb2ludC9jb250ZXh0JztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvaGVscGVycyc7XG5AaW1wb3J0ICdicmVha3BvaW50L3BhcnNlcnMnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9uby1xdWVyeSc7XG5cbkBpbXBvcnQgJ2JyZWFrcG9pbnQvcmVzcG9uZC10byc7XG5cbkBpbXBvcnQgXCJicmVha3BvaW50L2xlZ2FjeS1zZXR0aW5nc1wiO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgTWl4aW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5AbWl4aW4gYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeTogZmFsc2UpIHtcbiAgQGluY2x1ZGUgbGVnYWN5LXNldHRpbmdzLXdhcm5pbmc7XG5cbiAgLy8gUmVzZXQgY29udGV4dHNcbiAgQGluY2x1ZGUgcHJpdmF0ZS1icmVha3BvaW50LXJlc2V0LWNvbnRleHRzKCk7XG5cbiAgJGJyZWFrcG9pbnQ6IGJyZWFrcG9pbnQoJHF1ZXJ5LCBmYWxzZSk7XG5cbiAgJHF1ZXJ5LXN0cmluZzogbWFwLWdldCgkYnJlYWtwb2ludCwgJ3F1ZXJ5Jyk7XG4gICRxdWVyeS1mYWxsYmFjazogbWFwLWdldCgkYnJlYWtwb2ludCwgJ2ZhbGxiYWNrJyk7XG5cbiAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLWdldCgkYnJlYWtwb2ludCwgJ2NvbnRleHQgaG9sZGVyJykgIWdsb2JhbDtcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogbWFwLWdldCgkYnJlYWtwb2ludCwgJ3F1ZXJ5IGNvdW50JykgIWdsb2JhbDtcblxuICAvLyBBbGxvdyBmb3IgYW4gYXMtbmVlZGVkIG92ZXJyaWRlIG9yIHVzYWdlIG9mIG5vIHF1ZXJ5IGZhbGxiYWNrLlxuICBAaWYgJG5vLXF1ZXJ5ICE9IGZhbHNlIHtcbiAgICAkcXVlcnktZmFsbGJhY2s6ICRuby1xdWVyeTtcbiAgfVxuXG4gIEBpZiAkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2Uge1xuICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCduby1xdWVyeScsICRxdWVyeS1mYWxsYmFjayk7XG4gIH1cblxuICAvLyBQcmludCBPdXQgUXVlcnkgU3RyaW5nXG4gIEBpZiBub3QgYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJpZXMnKSB7XG4gICAgQG1lZGlhICN7JHF1ZXJ5LXN0cmluZ30ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSAhPSBmYWxzZSBvciBicmVha3BvaW50LWdldCgnbm8gcXVlcmllcycpID09IHRydWUge1xuXG4gICAgJHR5cGU6IHR5cGUtb2YoYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpKTtcbiAgICAkcHJpbnQ6IGZhbHNlO1xuXG4gICAgQGlmICgkdHlwZSA9PSAnYm9vbCcpIHtcbiAgICAgICRwcmludDogdHJ1ZTtcbiAgICB9XG4gICAgQGVsc2UgaWYgKCR0eXBlID09ICdzdHJpbmcnKSB7XG4gICAgICBAaWYgJHF1ZXJ5LWZhbGxiYWNrID09IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSB7XG4gICAgICAgICRwcmludDogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2UgaWYgKCR0eXBlID09ICdsaXN0Jykge1xuICAgICAgQGVhY2ggJHdyYXBwZXIgaW4gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpIHtcbiAgICAgICAgQGlmICRxdWVyeS1mYWxsYmFjayA9PSAkd3JhcHBlciB7XG4gICAgICAgICAgJHByaW50OiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gV3JpdGUgRmFsbGJhY2tcbiAgICBAaWYgKCRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSkgYW5kICgkcHJpbnQgPT0gdHJ1ZSkge1xuICAgICAgJHR5cGUtZmFsbGJhY2s6IHR5cGUtb2YoJHF1ZXJ5LWZhbGxiYWNrKTtcblxuICAgICAgQGlmICgkdHlwZS1mYWxsYmFjayAhPSAnYm9vbCcpIHtcbiAgICAgICAgI3skcXVlcnktZmFsbGJhY2t9ICYge1xuICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHByaXZhdGUtYnJlYWtwb2ludC1yZXNldC1jb250ZXh0cygpO1xufVxuXG5cbkBtaXhpbiBtcSgkcXVlcnksICRuby1xdWVyeTogZmFsc2UpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEhhcyBTZXR0aW5nXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWhhcygkc2V0dGluZykge1xuICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnQsICRzZXR0aW5nKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2V0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWdldCgkc2V0dGluZykge1xuICBAaWYgYnJlYWtwb2ludC1oYXMoJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJGJyZWFrcG9pbnQsICRzZXR0aW5nKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRCcmVha3BvaW50LVNldHRpbmdzLCAkc2V0dGluZyk7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGlmIChzdHItaW5kZXgoJHNldHRpbmcsICctJykgb3Igc3RyLWluZGV4KCRzZXR0aW5nLCAnXycpKSBhbmQgc3RyLWluZGV4KCRzZXR0aW5nLCAnICcpID09IG51bGwge1xuICAgIEB3YXJuIFwiV29yZHMgaW4gQnJlYWtwb2ludCBzZXR0aW5ncyBzaG91bGQgYmUgc2VwYXJhdGVkIGJ5IHNwYWNlcywgbm90IGRhc2hlcyBvciB1bmRlcnNjb3Jlcy4gUGxlYXNlIHJlcGxhY2UgZGFzaGVzIGFuZCB1bmRlcnNjb3JlcyBiZXR3ZWVuIHdvcmRzIHdpdGggc3BhY2VzLiBTZXR0aW5ncyB3aWxsIG5vdCB3b3JrIGFzIGV4cGVjdGVkIHVudGlsIGNoYW5nZWQuXCI7XG4gIH1cbiAgJGJyZWFrcG9pbnQ6IG1hcC1tZXJnZSgkYnJlYWtwb2ludCwgKCRzZXR0aW5nOiAkdmFsdWUpKSAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gICRicmVha3BvaW50LWNoYW5nZTogYnJlYWtwb2ludC1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiBicmVha3BvaW50LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gYmtwdC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKTtcbn1cbkBtaXhpbiBia3B0LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJlbW92ZSBTZXR0aW5nXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncy4uLikge1xuICBAaWYgbGVuZ3RoKCRzZXR0aW5ncykgPT0gMSB7XG4gICAgJHNldHRpbmdzOiBudGgoJHNldHRpbmdzLCAxKTtcbiAgfVxuXG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJGJyZWFrcG9pbnQ6IG1hcC1yZW1vdmUoJGJyZWFrcG9pbnQsICRzZXR0aW5nKSAhZ2xvYmFsO1xuICB9XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzLi4uKSB7XG4gICRicmVha3BvaW50LXJlc2V0OiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncyk7XG59XG5cbkBtaXhpbiBia3B0LXJlc2V0KCRzZXR0aW5ncy4uLikge1xuICAkYnJlYWtwb2ludC1yZXNldDogYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MpO1xufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUHJpdmF0ZSBCcmVha3BvaW50IFZhcmlhYmxlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKTtcbiRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBIYXMgQ29udGV4dFxuLy8gUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB5b3UgYXJlIGluc2lkZSBhIEJyZWFrcG9pbnQgcXVlcnlcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaGFzLWNvbnRleHQoKSB7XG4gIEBpZiBsZW5ndGgoJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCkge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgR2V0IENvbnRleHRcbi8vICRmZWF0dXJlOiBJbnB1dCBmZWF0dXJlIHRvIGdldCBpdCdzIGN1cnJlbnQgTVEgY29udGV4dC4gUmV0dXJucyBmYWxzZSBpZiBubyBjb250ZXh0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWdldC1jb250ZXh0KCRmZWF0dXJlKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSkge1xuICAgICRnZXQ6IG1hcC1nZXQoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpO1xuICAgIC8vIFNwZWNpYWwgaGFuZGxpbmcgb2Ygbm8tcXVlcnkgZnJvbSBnZXQgc2lkZSBzbyAvZmFsc2UvIHByZXBlbmRzIGFyZW4ndCByZXR1cm5lZFxuICAgIEBpZiAkZmVhdHVyZSA9PSAnbm8tcXVlcnknIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRnZXQpID09ICdsaXN0JyBhbmQgbGVuZ3RoKCRnZXQpID4gMSBhbmQgbnRoKCRnZXQsIDEpID09IGZhbHNlIHtcbiAgICAgICAgJGdldDogbnRoKCRnZXQsIGxlbmd0aCgkZ2V0KSk7XG4gICAgICB9XG4gICAgfVxuICAgIEByZXR1cm4gJGdldDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIGJyZWFrcG9pbnQtaGFzLWNvbnRleHQoKSBhbmQgJGZlYXR1cmUgPT0gJ21lZGlhJyB7XG4gICAgICBAcmV0dXJuIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJyk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUHJpdmF0ZSBmdW5jdGlvbiB0byBzZXQgY29udGV4dFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkdmFsdWUpIHtcbiAgQGlmICR2YWx1ZSA9PSAnbW9ub2Nocm9tZScge1xuICAgICRmZWF0dXJlOiAnbW9ub2Nocm9tZSc7XG4gIH1cblxuICAkY3VycmVudDogbWFwLWdldCgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSk7XG4gIEBpZiAkY3VycmVudCBhbmQgbGVuZ3RoKCRjdXJyZW50KSA9PSAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICBAd2FybiBcIllvdSBoYXZlIGFscmVhZHkgcXVlcmllZCBhZ2FpbnN0IGAjeyRmZWF0dXJlfWAuIFVuZXhwZWN0ZWQgdGhpbmdzIG1heSBoYXBwZW4gaWYgeW91IHF1ZXJ5IGFnYWluc3QgdGhlIHNhbWUgZmVhdHVyZSBtb3JlIHRoYW4gb25jZSBpbiB0aGUgc2FtZSBgYW5kYCBxdWVyeS4gQnJlYWtwb2ludCBpcyBvdmVyd3JpdGluZyB0aGUgY3VycmVudCBjb250ZXh0IHdpdGggYCN7JHZhbHVlfWBcIjtcbiAgfVxuXG4gIEBpZiBub3QgbWFwLWhhcy1rZXkoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpIHtcbiAgICAkdi1ob2xkZXI6ICgpO1xuICAgIEBmb3IgJGkgZnJvbSAxIHRvICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgICAgQGlmICRmZWF0dXJlID09ICdtZWRpYScge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCAkdmFsdWUpO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1tZXJnZSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAoJGZlYXR1cmU6ICR2LWhvbGRlcikpICFnbG9iYWw7XG4gIH1cbiAgQGVsc2Uge1xuICAgICR2LWhvbGRlcjogbWFwLWdldCgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSk7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCR2LWhvbGRlcik7XG4gICAgQGZvciAkaSBmcm9tICRsZW5ndGggdG8gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCAtIDEge1xuICAgICAgQGlmICRmZWF0dXJlID09ICdtZWRpYScge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCAkdmFsdWUpO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1tZXJnZSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAoJGZlYXR1cmU6ICR2LWhvbGRlcikpICFnbG9iYWw7XG4gIH1cblxuICBAcmV0dXJuIHRydWU7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUHJpdmF0ZSBmdW5jdGlvbiB0byByZXNldCBjb250ZXh0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMge1xuICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKSAhZ2xvYmFsO1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFnbG9iYWw7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb252ZXJ0cyB0aGUgaW5wdXQgdmFsdWUgdG8gQmFzZSBFTXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkdmFsdWUpIHtcbiAgJHZhbHVlLXVuaXQ6IHVuaXQoJHZhbHVlKTtcblxuICAvLyBXaWxsIGNvbnZlcnQgcmVsYXRpdmUgRU1zIGludG8gcm9vdCBFTXMuXG4gIEBpZiBicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSBhbmQgdHlwZS1vZihicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSkgPT0gJ251bWJlcicgYW5kICR2YWx1ZS11bml0ID09ICdlbScge1xuICAgICRiYXNlLXVuaXQ6IHVuaXQoYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykpO1xuXG4gICAgQGlmICRiYXNlLXVuaXQgPT0gJ3B4JyBvciAkYmFzZS11bml0ID09ICclJyBvciAkYmFzZS11bml0ID09ICdlbScgb3IgJGJhc2UtdW5pdCA9PSAncHQnIHtcbiAgICAgIEByZXR1cm4gYmFzZS1jb252ZXJzaW9uKCR2YWx1ZSkgLyBiYXNlLWNvbnZlcnNpb24oYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykpICogMWVtO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiAnI3ticmVha3BvaW50LWdldChcXCdiYXNlIGZvbnQgc2l6ZVxcJyl9IGlzIG5vdCBzZXQgaW4gdmFsaWQgdW5pdHMgZm9yIGZvbnQgc2l6ZSEnO1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gYmFzZS1jb252ZXJzaW9uKCR2YWx1ZSk7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGJhc2UtY29udmVyc2lvbigkdmFsdWUpIHtcbiAgJHVuaXQ6IHVuaXQoJHZhbHVlKTtcblxuICBAaWYgJHVuaXQgPT0gJ3B4JyB7XG4gICAgQHJldHVybiAkdmFsdWUgLyAxNnB4ICogMWVtO1xuICB9XG4gIEBlbHNlIGlmICR1bml0ID09ICclJyB7XG4gICAgQHJldHVybiAkdmFsdWUgLyAxMDAlICogMWVtO1xuICB9XG4gIEBlbHNlIGlmICR1bml0ID09ICdlbScge1xuICAgIEByZXR1cm4gJHZhbHVlO1xuICB9XG4gIEBlbHNlIGlmICR1bml0ID09ICdwdCcge1xuICAgIEByZXR1cm4gJHZhbHVlIC8gMTJwdCAqIDFlbTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkdmFsdWU7XG4vLyAgICBAd2FybiAnRXZlcnl0aGluZyBpcyB0ZXJyaWJsZSEgV2hhdCBoYXZlIHlvdSBkb25lPyEnO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGNhbiBoYXZlIGEgbWluL21heCBwYWlyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LW1pbi1tYXgtZmVhdHVyZXM6ICdjb2xvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3ItaW5kZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLWFzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLWhlaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLXdpZHRoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vbm9jaHJvbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jlc29sdXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWluLW1heCgkZmVhdHVyZSkge1xuICBAZWFjaCAkaXRlbSBpbiAkYnJlYWtwb2ludC1taW4tbWF4LWZlYXR1cmVzIHtcbiAgICBAaWYgJGZlYXR1cmUgPT0gJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBjYW4gaGF2ZSBhIHN0cmluZyB2YWx1ZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1zdHJpbmctZmVhdHVyZXM6ICAnb3JpZW50YXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NjYW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS1hc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2x1bWlub3NpdHknO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1zdHJpbmctdmFsdWUoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJGl0ZW0gaW4gJGJyZWFrcG9pbnQtc3RyaW5nLWZlYXR1cmVzIHtcbiAgICBAaWYgYnJlYWtwb2ludC1taW4tbWF4KCRpdGVtKSB7XG4gICAgICBAaWYgJGZlYXR1cmUgPT0gJ21pbi0jeyRpdGVtfScgb3IgJGZlYXR1cmUgPT0gJ21heC0jeyRpdGVtfScge1xuICAgICAgICBAcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICRmZWF0dXJlID09ICRpdGVtIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgaXMgYSBtZWRpYSB0eXBlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LW1lZGlhLXR5cGVzOiAgJ2FsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdicmFpbGxlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VtYm9zc2VkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hhbmRoZWxkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByaW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2plY3Rpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NyZWVuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NwZWVjaCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICd0dHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAndHYnO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pcy1tZWRpYSgkZmVhdHVyZSkge1xuICBAZWFjaCAkbWVkaWEgaW4gJGJyZWFrcG9pbnQtbWVkaWEtdHlwZXMge1xuICAgIEBpZiAoJGZlYXR1cmUgPT0gJG1lZGlhKSBvciAoJGZlYXR1cmUgPT0gJ25vdCAjeyRtZWRpYX0nKSBvciAoJGZlYXR1cmUgPT0gJ29ubHkgI3skbWVkaWF9Jykge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGNhbiBzdGFuZCBhbG9uZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nLWZlYXR1cmVzOiAnY29sb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yLWluZGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdncmlkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb25vY2hyb21lJztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkZmVhdHVyZSkge1xuICBAZWFjaCAkaXRlbSBpbiAkYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nLWZlYXR1cmVzIHtcbiAgICBAaWYgJGZlYXR1cmUgPT0gJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pcy1yZXNvbHV0aW9uKCRmZWF0dXJlKSB7XG4gICRyZXNvbHV0aW9uczogJ2RldmljZS1waXhlbC1yYXRpbycsICdkcHInO1xuXG4gIEBpZiBicmVha3BvaW50LWdldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJykge1xuICAgICRyZXNvbHV0aW9uczogYXBwZW5kKCRyZXNvbHV0aW9ucywgJ3Jlc29sdXRpb24nKTtcbiAgfVxuXG4gIEBlYWNoICRyZXNvIGluICRyZXNvbHV0aW9ucyB7XG4gICAgQGlmIGluZGV4KCRmZWF0dXJlLCAkcmVzbykgb3IgaW5kZXgoJGZlYXR1cmUsICdtaW4tI3skcmVzb30nKSBvciBpbmRleCgkZmVhdHVyZSwgJ21heC0jeyRyZXNvfScpIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIGZhbHNlO1xufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGFyc2VyIFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwicGFyc2Vycy9xdWVyeVwiO1xuQGltcG9ydCBcInBhcnNlcnMvc2luZ2xlXCI7XG5AaW1wb3J0IFwicGFyc2Vycy9kb3VibGVcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL3RyaXBsZVwiO1xuQGltcG9ydCBcInBhcnNlcnMvcmVzb2x1dGlvblwiO1xuXG4kTWVtby1FeGlzdHM6IGZ1bmN0aW9uLWV4aXN0cyhtZW1vLWdldCkgYW5kIGZ1bmN0aW9uLWV4aXN0cyhtZW1vLXNldCk7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBGdW5jdGlvblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludCgkcXVlcnksICRjb250ZXh0cy4uLikge1xuICAkcnVuOiB0cnVlO1xuICAkcmV0dXJuOiAoKTtcblxuICAvLyBHcmFiIHRoZSBNZW1vIE91dHB1dCBpZiBNZW1vaXphdGlvbiBjYW4gYmUgYSB0aGluZ1xuICBAaWYgJE1lbW8tRXhpc3RzIHtcbiAgICAkcmV0dXJuOiBtZW1vLWdldChicmVha3BvaW50LCBicmVha3BvaW50ICRxdWVyeSAkY29udGV4dHMpO1xuXG4gICAgQGlmICRyZXR1cm4gIT0gbnVsbCB7XG4gICAgICAkcnVuOiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBAaWYgbm90ICRNZW1vLUV4aXN0cyBvciAkcnVuIHtcbiAgICAvLyBJbnRlcm5hbCBWYXJpYWJsZXNcbiAgICAkcXVlcnktc3RyaW5nOiAnJztcbiAgICAkcXVlcnktZmFsbGJhY2s6IGZhbHNlO1xuICAgICRyZXR1cm46ICgpO1xuXG4gICAgLy8gUmVzZXJ2ZSBHbG9iYWwgUHJpdmF0ZSBCcmVha3BvaW50IENvbnRleHRcbiAgICAkaG9sZGVyLWNvbnRleHQ6ICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI7XG4gICAgJGhvbGRlci1xdWVyeS1jb3VudDogJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDtcblxuICAgIC8vIFJlc2V0IEdsb2JhbCBQcml2YXRlIEJyZWFrcG9pbnQgQ29udGV4dFxuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpICFnbG9iYWw7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZ2xvYmFsO1xuXG5cbiAgICAvLyBUZXN0IHRvIHNlZSBpZiBpdCdzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3RcbiAgICAkb3ItbGlzdDogaWYobGlzdC1zZXBhcmF0b3IoJHF1ZXJ5KSA9PSAnY29tbWEnLCB0cnVlLCBmYWxzZSk7XG5cblxuICAgIEBpZiAoJG9yLWxpc3QgPT0gZmFsc2UgYW5kIGJyZWFrcG9pbnQtZ2V0KCdsZWdhY3kgc3ludGF4JykgPT0gZmFsc2UpIHtcbiAgICAgICRxdWVyeS1zdHJpbmc6IGJyZWFrcG9pbnQtcGFyc2UoJHF1ZXJ5KTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJGxlbmd0aDogbGVuZ3RoKCRxdWVyeSk7XG5cbiAgICAgICRsYXN0OiBudGgoJHF1ZXJ5LCAkbGVuZ3RoKTtcbiAgICAgICRxdWVyeS1mYWxsYmFjazogYnJlYWtwb2ludC1uby1xdWVyeSgkbGFzdCk7XG5cbiAgICAgIEBpZiAoJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlKSB7XG4gICAgICAgICRsZW5ndGg6ICRsZW5ndGggLSAxO1xuICAgICAgfVxuXG4gICAgICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCdsZWdhY3kgc3ludGF4JykgPT0gdHJ1ZSkge1xuICAgICAgICAkbXE6ICgpO1xuXG4gICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgICAgICAgJG1xOiBhcHBlbmQoJG1xLCBudGgoJHF1ZXJ5LCAkaSksIGNvbW1hKTtcbiAgICAgICAgfVxuXG4gICAgICAgICRxdWVyeS1zdHJpbmc6IGJyZWFrcG9pbnQtcGFyc2UoJG1xKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHF1ZXJ5LXN0cmluZzogJyc7XG4gICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgICAgICAgJHF1ZXJ5LXN0cmluZzogJHF1ZXJ5LXN0cmluZyArIGlmKCRpID09IDEsICcnLCAnLCAnKSArIGJyZWFrcG9pbnQtcGFyc2UobnRoKCRxdWVyeSwgJGkpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRyZXR1cm46ICgncXVlcnknOiAkcXVlcnktc3RyaW5nLFxuICAgICAgICAnZmFsbGJhY2snOiAkcXVlcnktZmFsbGJhY2ssXG4gICAgICAgICdjb250ZXh0IGhvbGRlcic6ICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsXG4gICAgICAgICdxdWVyeSBjb3VudCc6ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnRcbiAgICApO1xuICAgIEBpZiBsZW5ndGgoJGNvbnRleHRzKSA+IDAgYW5kIG50aCgkY29udGV4dHMsIDEpICE9IGZhbHNlIHtcbiAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2Uge1xuICAgICAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgnbm8tcXVlcnknLCAkcXVlcnktZmFsbGJhY2spO1xuICAgICAgfVxuICAgICAgJGNvbnRleHQtbWFwOiAoKTtcbiAgICAgIEBlYWNoICRjb250ZXh0IGluICRjb250ZXh0cyB7XG4gICAgICAgICRjb250ZXh0LW1hcDogbWFwLW1lcmdlKCRjb250ZXh0LW1hcCwgKCRjb250ZXh0OiBicmVha3BvaW50LWdldC1jb250ZXh0KCRjb250ZXh0KSkpO1xuICAgICAgfVxuICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sIChjb250ZXh0OiAkY29udGV4dC1tYXApKTtcbiAgICB9XG5cbiAgICAvLyBSZXNldCBHbG9iYWwgUHJpdmF0ZSBCcmVha3BvaW50IENvbnRleHRcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKSAhZ2xvYmFsO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWdsb2JhbDtcblxuICAgIEBpZiAkTWVtby1FeGlzdHMge1xuICAgICAgJGhvbGRlcjogbWVtby1zZXQoYnJlYWtwb2ludCwgYnJlYWtwb2ludCAkcXVlcnkgJGNvbnRleHRzLCAkcmV0dXJuKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2VuZXJhbCBCcmVha3BvaW50IFBhcnNlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZSgkcXVlcnkpIHtcbiAgLy8gSW5jcmVhc2UgbnVtYmVyIG9mICdhbmQnIHF1ZXJpZXNcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCArIDEgIWdsb2JhbDtcblxuICAvLyBTZXQgdXAgTWVkaWEgVHlwZVxuICAkcXVlcnktcHJpbnQ6ICcnO1xuXG4gICRmb3JjZS1hbGw6ICgoYnJlYWtwb2ludC1nZXQoJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJykgPT0gdHJ1ZSkgYW5kIChicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpID09ICdhbGwnKSk7XG4gICRlbXB0eS1tZWRpYTogdHJ1ZTtcbiAgQGlmICgkZm9yY2UtYWxsID09IHRydWUpIG9yIChicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpICE9ICdhbGwnKSB7XG4gICAgLy8gRm9yY2UgdGhlIHByaW50IG9mIHRoZSBkZWZhdWx0IG1lZGlhIHR5cGUgaWYgKGZvcmNlIGFsbCBpcyB0cnVlIGFuZCBkZWZhdWx0IG1lZGlhIHR5cGUgaXMgYWxsKSBvciAoZGVmYXVsdCBtZWRpYSB0eXBlIGlzIG5vdCBhbGwpXG4gICAgJHF1ZXJ5LXByaW50OiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpO1xuICAgICRlbXB0eS1tZWRpYTogZmFsc2U7XG4gIH1cblxuXG4gICRxdWVyeS1yZXNvbHV0aW9uOiBmYWxzZTtcblxuICAkcXVlcnktaG9sZGVyOiBicmVha3BvaW50LXBhcnNlLXF1ZXJ5KCRxdWVyeSk7XG5cblxuXG4gIC8vIExvb3Agb3ZlciBlYWNoIHBhcnNlZCBvdXQgcXVlcnkgYW5kIHdyaXRlIGl0IHRvICRxdWVyeS1wcmludFxuICAkZmlyc3Q6IHRydWU7XG5cbiAgQGVhY2ggJGZlYXR1cmUgaW4gJHF1ZXJ5LWhvbGRlciB7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCRmZWF0dXJlKTtcblxuICAgIC8vIFBhcnNlIGEgc2luZ2xlIGZlYXR1cmVcbiAgICBAaWYgKCRsZW5ndGggPT0gMSkge1xuICAgICAgLy8gRmVhdHVyZSBpcyBjdXJyZW50bHkgYSBsaXN0LCBncmFiIHRoZSBhY3R1YWwgdmFsdWVcbiAgICAgICRmZWF0dXJlOiBudGgoJGZlYXR1cmUsIDEpO1xuXG4gICAgICAvLyBNZWRpYSBUeXBlIG11c3QgYnkgY29udmVudGlvbiBiZSB0aGUgZmlyc3QgaXRlbSwgc28gaXQncyBzYWZlIHRvIGZsYXQgb3ZlcnJpZGUgJHF1ZXJ5LXByaW50LCB3aGljaCByaWdodCBub3cgc2hvdWxkIG9ubHkgYmUgdGhlIGRlZmF1bHQgbWVkaWEgdHlwZVxuICAgICAgQGlmIChicmVha3BvaW50LWlzLW1lZGlhKCRmZWF0dXJlKSkge1xuICAgICAgICBAaWYgKCRmb3JjZS1hbGwgPT0gdHJ1ZSkgb3IgKCRmZWF0dXJlICE9ICdhbGwnKSB7XG4gICAgICAgICAgLy8gRm9yY2UgdGhlIHByaW50IG9mIHRoZSBkZWZhdWx0IG1lZGlhIHR5cGUgaWYgKGZvcmNlIGFsbCBpcyB0cnVlIGFuZCBkZWZhdWx0IG1lZGlhIHR5cGUgaXMgYWxsKSBvciAoZGVmYXVsdCBtZWRpYSB0eXBlIGlzIG5vdCBhbGwpXG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAkZmVhdHVyZTtcbiAgICAgICAgICAkZW1wdHktbWVkaWE6IGZhbHNlO1xuXG4gICAgICAgICAgLy8gU2V0IENvbnRleHRcbiAgICAgICAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtZWRpYSwgJHF1ZXJ5LXByaW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFBhcnNlIGEgZG91YmxlIGZlYXR1cmVcbiAgICBAZWxzZSBpZiAoJGxlbmd0aCA9PSAyKSB7XG4gICAgICBAaWYgKGJyZWFrcG9pbnQtaXMtcmVzb2x1dGlvbigkZmVhdHVyZSkgIT0gZmFsc2UpIHtcbiAgICAgICAgJHF1ZXJ5LXJlc29sdXRpb246ICRmZWF0dXJlO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcGFyc2VkOiBudWxsO1xuICAgICAgICAvLyBJZiBpdCdzIGEgc3RyaW5nL251bWJlciBwYWlyLFxuICAgICAgICAvLyB3ZSBjaGVjayB0byBzZWUgaWYgb25lIGlzIGEgc2luZ2xlLXN0cmluZyB2YWx1ZSxcbiAgICAgICAgLy8gdGhlbiB3ZSBwYXJzZSBpdCBhcyBhIG5vcm1hbCBkb3VibGVcbiAgICAgICAgJGFscGhhOiBudGgoJGZlYXR1cmUsIDEpO1xuICAgICAgICAkYmV0YTogbnRoKCRmZWF0dXJlLCAyKTtcbiAgICAgICAgQGlmIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkYWxwaGEpIG9yIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkYmV0YSkge1xuICAgICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRhbHBoYSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRiZXRhLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRvdWJsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFBhcnNlIGEgdHJpcGxlIGZlYXR1cmVcbiAgICBAZWxzZSBpZiAoJGxlbmd0aCA9PSAzKSB7XG4gICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXRyaXBsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICB9XG5cbiAgfVxuXG4gIEBpZiAoJHF1ZXJ5LXJlc29sdXRpb24gIT0gZmFsc2UpIHtcbiAgICAkcXVlcnktcHJpbnQ6IGJyZWFrcG9pbnQtYnVpbGQtcmVzb2x1dGlvbigkcXVlcnktcHJpbnQsICRxdWVyeS1yZXNvbHV0aW9uLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gIH1cblxuICAvLyBMb29wIHRocm91Z2ggZWFjaCBmZWF0dXJlIHRoYXQncyBiZWVuIGRldGVjdGVkIHNvIGZhciBhbmQgYXBwZW5kICdmYWxzZScgdG8gdGhlIHRoZSB2YWx1ZSBsaXN0IHRvIGluY3JlbWVudCB0aGVpciBjb3VudGVyc1xuICBAZWFjaCAkZiwgJHYgaW4gJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciB7XG4gICAgJHYtaG9sZGVyOiAkdjtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJHYtaG9sZGVyKTtcbiAgICBAaWYgbGVuZ3RoKCR2LWhvbGRlcikgPCAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICAgIEBmb3IgJGkgZnJvbSAkbGVuZ3RoIHRvICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgICAgICBAaWYgJGYgPT0gJ21lZGlhJyB7XG4gICAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpKTtcbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLW1lcmdlKCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICgkZjogJHYtaG9sZGVyKSkgIWdsb2JhbDtcbiAgfVxuXG4gIEByZXR1cm4gJHF1ZXJ5LXByaW50O1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtcXVlcnkoJHF1ZXJ5KSB7XG4gIC8vIFBhcnNlIGZlYXR1cmVzIG91dCBvZiBhbiBpbmRpdmlkdWFsIHF1ZXJ5XG4gICRmZWF0dXJlLWhvbGRlcjogKCk7XG4gICRxdWVyeS1ob2xkZXI6ICgpO1xuICAkbGVuZ3RoOiBsZW5ndGgoJHF1ZXJ5KTtcblxuICBAaWYgJGxlbmd0aCA9PSAyIHtcbiAgICAvLyBJZiB3ZSd2ZSBnb3QgYSBzdHJpbmcvbnVtYmVyLCBudW1iZXIvc3RyaW5nLCBjaGVjayB0byBzZWUgaWYgaXQncyBhIHZhbGlkIHN0cmluZy9udW1iZXIgcGFpciBvciB0d28gc2luZ2xlc1xuICAgIEBpZiAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ3N0cmluZycgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdudW1iZXInKSBvciAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ251bWJlcicgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdzdHJpbmcnKSB7XG5cbiAgICAgICRudW1iZXI6ICcnO1xuICAgICAgJHZhbHVlOiAnJztcblxuICAgICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdzdHJpbmcnIHtcbiAgICAgICAgJG51bWJlcjogbnRoKCRxdWVyeSwgMik7XG4gICAgICAgICR2YWx1ZTogbnRoKCRxdWVyeSwgMSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRudW1iZXI6IG50aCgkcXVlcnksIDEpO1xuICAgICAgICAkdmFsdWU6IG50aCgkcXVlcnksIDIpO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiB0aGUgc3RyaW5nIHZhbHVlIGNhbiBiZSBhIHNpbmdsZSB2YWx1ZSwgY2hlY2sgdG8gc2VlIGlmIHRoZSBudW1iZXIgcGFzc2VkIGluIGlzIGEgdmFsaWQgaW5wdXQgZm9yIHNhaWQgc2luZ2xlIHZhbHVlLiBGb3J0dW5hdGVseSwgYWxsIGN1cnJlbnQgc2luZ2xlLXZhbHVlIG9wdGlvbnMgb25seSBhY2NlcHQgdW5pdGxlc3MgbnVtYmVycywgc28gdGhpcyBjaGVjayBpcyBlYXN5LlxuICAgICAgQGlmIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkdmFsdWUpIHtcbiAgICAgICAgQGlmIHVuaXRsZXNzKCRudW1iZXIpIHtcbiAgICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZCgkdmFsdWUsICRudW1iZXIsIHNwYWNlKTtcbiAgICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBJZiB0aGUgc3RyaW5nIGlzIGEgbWVkaWEgdHlwZSwgc3BsaXQgdGhlIHF1ZXJ5XG4gICAgICBAaWYgYnJlYWtwb2ludC1pcy1tZWRpYSgkdmFsdWUpIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsIG50aCgkcXVlcnksIDEpKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsIG50aCgkcXVlcnksIDIpKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgICAgLy8gSWYgaXQncyBub3QgYSBzaW5nbGUgZmVhdHVyZSwgd2UncmUganVzdCBnb2luZyB0byBhc3N1bWUgaXQncyBhIHByb3BlciBzdHJpbmcvdmFsdWUgcGFpciwgYW5kIHJvbGwgd2l0aCBpdC5cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQoJHZhbHVlLCAkbnVtYmVyLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuXG4gICAgfVxuICAgIC8vIElmIHRoZXkncmUgYm90aCBudW1iZXJzLCB3ZSBhc3N1bWUgaXQncyBhIGRvdWJsZSBhbmQgcm9sbCB3aXRoIHRoYXRcbiAgICBAZWxzZSBpZiAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ251bWJlcicgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdudW1iZXInKSB7XG4gICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAxKSwgbnRoKCRxdWVyeSwgMiksIHNwYWNlKTtcbiAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICB9XG4gICAgLy8gSWYgdGhleSdyZSBib3RoIHN0cmluZ3MgYW5kIG5laXRoZXIgYXJlIHNpbmdsZXMsIHdlIHJvbGwgd2l0aCB0aGF0LlxuICAgIEBlbHNlIGlmICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnc3RyaW5nJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ3N0cmluZycpIHtcbiAgICAgIEBpZiBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDEpKSBhbmQgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAyKSkge1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAxKSwgbnRoKCRxdWVyeSwgMiksIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRsZW5ndGggPT0gMyB7XG4gICAgLy8gSWYgd2UndmUgZ290IHRocmVlIGl0ZW1zIGFuZCBub25lIGlzIGEgbGlzdCwgd2UgY2hlY2sgdG8gc2VlXG4gICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpICE9ICdsaXN0JyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgIT0gJ2xpc3QnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDMpKSAhPSAnbGlzdCcge1xuICAgICAgLy8gSWYgbm9uZSBvZiB0aGUgaXRlbXMgYXJlIHNpbmdsZSBzdHJpbmcgdmFsdWVzIGFuZCBub25lIG9mIHRoZSB2YWx1ZXMgYXJlIG1lZGlhIHZhbHVlcywgd2UncmUgZ29vZC5cbiAgICAgIEBpZiAobm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAxKSkgYW5kIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMikpIGFuZCBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDMpKSkgYW5kICAoKG5vdCBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDEpKSBhbmQgbm90IGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMikpIGFuZCBub3QgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAzKSkpKSB7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDEpLCBudGgoJHF1ZXJ5LCAyKSwgc3BhY2UpO1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZCgkZmVhdHVyZS1ob2xkZXIsIG50aCgkcXVlcnksIDMpLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgICAgLy8gbGV0J3MgY2hlY2sgdG8gc2VlIGlmIHRoZSBmaXJzdCBpdGVtIGlzIGEgbWVkaWEgdHlwZVxuICAgICAgQGVsc2UgaWYgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAxKSkge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgbnRoKCRxdWVyeSwgMSkpO1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAyKSwgbnRoKCRxdWVyeSwgMyksIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlcik7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBJZiBpdCdzIGEgc2luZ2xlIGl0ZW0sIG9yIGlmIGl0J3Mgbm90IGEgc3BlY2lhbCBjYXNlIGRvdWJsZSBvciB0cmlwbGUsIHdlIGNhbiBzaW1wbHkgcmV0dXJuIHRoZSBxdWVyeS5cbiAgQHJldHVybiAkcXVlcnk7XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInNpbmdsZS9kZWZhdWx0XCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJHBhcnNlZDogJyc7XG4gICRsZWFkZXI6ICcnO1xuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICAvLyBJZiBpdCdzIGEgc2luZ2xlIGZlYXR1cmUgdGhhdCBjYW4gc3RhbmQgYWxvbmUsIHdlIGxldCBpdFxuICBAaWYgKGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkZmVhdHVyZSkpIHtcbiAgICAkcGFyc2VkOiAkZmVhdHVyZTtcbiAgICAvLyBTZXQgQ29udGV4dFxuICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkZmVhdHVyZSk7XG4gIH1cbiAgLy8gSWYgaXQncyBub3QgYSBzdGFuZCBhbG9uZSBmZWF0dXJlLCB3ZSBwYXNzIGl0IG9mZiB0byB0aGUgZGVmYXVsdCBoYW5kbGVyLlxuICBAZWxzZSB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0KCRmZWF0dXJlKTtcbiAgfVxuXG4gIEByZXR1cm4gJGxlYWRlciArICcoJyArICRwYXJzZWQgKyAnKSc7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0KCRmZWF0dXJlKSB7XG4gICRkZWZhdWx0OiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBmZWF0dXJlJyk7XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGRlZmF1bHQsICRmZWF0dXJlKTtcblxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSBhbmQgKHR5cGUtb2YoJGZlYXR1cmUpID09ICdudW1iZXInKSB7XG4gICAgQHJldHVybiAnI3skZGVmYXVsdH06ICN7YnJlYWtwb2ludC10by1iYXNlLWVtKCRmZWF0dXJlKX0nO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICcjeyRkZWZhdWx0fTogI3skZmVhdHVyZX0nO1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcImRvdWJsZS9kZWZhdWx0LXBhaXJcIjtcbkBpbXBvcnQgXCJkb3VibGUvZG91YmxlLXN0cmluZ1wiO1xuQGltcG9ydCBcImRvdWJsZS9kZWZhdWx0XCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRvdWJsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJHBhcnNlZDogJyc7XG4gICRsZWFkZXI6ICcnO1xuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICAkZmlyc3Q6IG50aCgkZmVhdHVyZSwgMSk7XG4gICRzZWNvbmQ6IG50aCgkZmVhdHVyZSwgMik7XG5cbiAgLy8gSWYgd2UndmUgZ290IHR3byBudW1iZXJzLCB3ZSBrbm93IHdlIG5lZWQgdG8gdXNlIHRoZSBkZWZhdWx0IHBhaXIgYmVjYXVzZSB0aGVyZSBhcmUgbm8gbWVkaWEgcXVlcmllcyB0aGF0IGhhcyBhIG1lZGlhIGZlYXR1cmUgdGhhdCBpcyBhIG51bWJlclxuICBAaWYgdHlwZS1vZigkZmlyc3QpID09ICdudW1iZXInIGFuZCB0eXBlLW9mKCRzZWNvbmQpID09ICdudW1iZXInIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQtcGFpcigkZmlyc3QsICRzZWNvbmQpO1xuICB9XG4gIC8vIElmIHRoZXkgYXJlIGJvdGggc3RyaW5ncywgd2Ugc2VuZCBpdCB0aHJvdWdoIHRoZSBzdHJpbmcgcGFyc2VyXG4gIEBlbHNlIGlmIHR5cGUtb2YoJGZpcnN0KSA9PSAnc3RyaW5nJyBhbmQgdHlwZS1vZigkc2Vjb25kKSA9PSAnc3RyaW5nJyB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtc3RyaW5nKCRmaXJzdCwgJHNlY29uZCk7XG4gIH1cbiAgLy8gSWYgaXQncyBhIHN0cmluZy9udW1iZXIgcGFpciwgd2UgcGFyc2UgaXQgYXMgYSBub3JtYWwgZG91YmxlXG4gIEBlbHNlIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1kZWZhdWx0KCRmaXJzdCwgJHNlY29uZCk7XG4gIH1cblxuICBAcmV0dXJuICRsZWFkZXIgKyAkcGFyc2VkO1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdC1wYWlyKCRmaXJzdCwgJHNlY29uZCkge1xuICAkZGVmYXVsdDogYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgcGFpcicpO1xuICAkbWluOiAnJztcbiAgJG1heDogJyc7XG5cbiAgLy8gU29ydCBpbnRvIG1pbiBhbmQgbWF4XG4gICRtaW46IG1pbigkZmlyc3QsICRzZWNvbmQpO1xuICAkbWF4OiBtYXgoJGZpcnN0LCAkc2Vjb25kKTtcblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtaW4tI3skZGVmYXVsdH0sICRtaW4pO1xuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtYXgtI3skZGVmYXVsdH0sICRtYXgpO1xuXG4gIC8vIE1ha2UgdGhlbSBFTXMgaWYgbmVlZCBiZVxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSB7XG4gICAgJG1pbjogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtaW4pO1xuICAgICRtYXg6IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWF4KTtcbiAgfVxuXG4gIEByZXR1cm4gJyhtaW4tI3skZGVmYXVsdH06ICN7JG1pbn0pIGFuZCAobWF4LSN7JGRlZmF1bHR9OiAjeyRtYXh9KSc7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtc3RyaW5nKCRmaXJzdCwgJHNlY29uZCkge1xuICAkZmVhdHVyZTogJyc7XG4gICR2YWx1ZTogJyc7XG5cbiAgLy8gVGVzdCB0byBzZWUgd2hpY2ggaXMgdGhlIGZlYXR1cmUgYW5kIHdoaWNoIGlzIHRoZSB2YWx1ZVxuICBAaWYgKGJyZWFrcG9pbnQtc3RyaW5nLXZhbHVlKCRmaXJzdCkgPT0gdHJ1ZSkge1xuICAgICRmZWF0dXJlOiAkZmlyc3Q7XG4gICAgJHZhbHVlOiAkc2Vjb25kO1xuICB9XG4gIEBlbHNlIGlmIChicmVha3BvaW50LXN0cmluZy12YWx1ZSgkc2Vjb25kKSA9PSB0cnVlKSB7XG4gICAgJGZlYXR1cmU6ICRzZWNvbmQ7XG4gICAgJHZhbHVlOiAkZmlyc3Q7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEB3YXJuIFwiTmVpdGhlciAjeyRmaXJzdH0gbm9yICN7JHNlY29uZH0gaXMgYSB2YWxpZCBtZWRpYSBxdWVyeSBuYW1lLlwiO1xuICB9XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICR2YWx1ZSk7XG5cbiAgQHJldHVybiAnKCN7JGZlYXR1cmV9OiAjeyR2YWx1ZX0pJztcbn0iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtZGVmYXVsdCgkZmlyc3QsICRzZWNvbmQpIHtcbiAgJGZlYXR1cmU6ICcnO1xuICAkdmFsdWU6ICcnO1xuXG4gIEBpZiB0eXBlLW9mKCRmaXJzdCkgPT0gJ3N0cmluZycge1xuICAgICRmZWF0dXJlOiAkZmlyc3Q7XG4gICAgJHZhbHVlOiAkc2Vjb25kO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkZmVhdHVyZTogJHNlY29uZDtcbiAgICAkdmFsdWU6ICRmaXJzdDtcbiAgfVxuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkdmFsdWUpO1xuXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIHtcbiAgICAkdmFsdWU6IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkdmFsdWUpO1xuICB9XG5cbiAgQHJldHVybiAnKCN7JGZlYXR1cmV9OiAjeyR2YWx1ZX0pJ1xufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0cmlwbGUvZGVmYXVsdFwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS10cmlwbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRwYXJzZWQ6ICcnO1xuICAkbGVhZGVyOiAnJztcblxuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICAvLyBzZXBhcmF0ZSB0aGUgc3RyaW5nIGZlYXR1cmVzIGZyb20gdGhlIHZhbHVlIG51bWJlcnNcbiAgJHN0cmluZzogbnVsbDtcbiAgJG51bWJlcnM6IG51bGw7XG4gIEBlYWNoICR2YWwgaW4gJGZlYXR1cmUge1xuICAgIEBpZiB0eXBlLW9mKCR2YWwpID09IHN0cmluZyB7XG4gICAgICAkc3RyaW5nOiAkdmFsO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgdHlwZS1vZigkbnVtYmVycykgPT0gJ251bGwnIHtcbiAgICAgICAgJG51bWJlcnM6ICR2YWw7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRudW1iZXJzOiBhcHBlbmQoJG51bWJlcnMsICR2YWwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlLWRlZmF1bHQoJHN0cmluZywgbnRoKCRudW1iZXJzLCAxKSwgbnRoKCRudW1iZXJzLCAyKSk7XG5cbiAgQHJldHVybiAkbGVhZGVyICsgJHBhcnNlZDtcblxufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlLWRlZmF1bHQoJGZlYXR1cmUsICRmaXJzdCwgJHNlY29uZCkge1xuXG4gIC8vIFNvcnQgaW50byBtaW4gYW5kIG1heFxuICAkbWluOiBtaW4oJGZpcnN0LCAkc2Vjb25kKTtcbiAgJG1heDogbWF4KCRmaXJzdCwgJHNlY29uZCk7XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWluLSN7JGZlYXR1cmV9LCAkbWluKTtcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWF4LSN7JGZlYXR1cmV9LCAkbWF4KTtcblxuICAvLyBNYWtlIHRoZW0gRU1zIGlmIG5lZWQgYmVcbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkge1xuICAgICRtaW46IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWluKTtcbiAgICAkbWF4OiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1heCk7XG4gIH1cblxuICBAcmV0dXJuICcobWluLSN7JGZlYXR1cmV9OiAjeyRtaW59KSBhbmQgKG1heC0jeyRmZWF0dXJlfTogI3skbWF4fSknO1xufVxuIiwiQGltcG9ydCBcInJlc29sdXRpb24vcmVzb2x1dGlvblwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1idWlsZC1yZXNvbHV0aW9uKCRxdWVyeS1wcmludCwgJHF1ZXJ5LXJlc29sdXRpb24sICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRsZWFkZXI6ICcnO1xuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycpIGFuZCAkcXVlcnktcmVzb2x1dGlvbiB7XG4gICAgJHJlc29sdXRpb25zOiBicmVha3BvaW50LW1ha2UtcmVzb2x1dGlvbnMoJHF1ZXJ5LXJlc29sdXRpb24pO1xuICAgICRsZW5ndGg6IGxlbmd0aCgkcmVzb2x1dGlvbnMpO1xuICAgICRxdWVyeS1ob2xkZXI6ICcnO1xuXG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAgICRxdWVyeTogJyN7JHF1ZXJ5LXByaW50fSAjeyRsZWFkZXJ9I3tudGgoJHJlc29sdXRpb25zLCAkaSl9JztcbiAgICAgIEBpZiAkaSA9PSAxIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogJHF1ZXJ5O1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiAnI3skcXVlcnktaG9sZGVyfSwgI3skcXVlcnl9JztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIFJldHVybiB3aXRoIGF0dGFjaGVkIHJlc29sdXRpb25cbiAgICBAcmV0dXJuICRxdWVyeS1wcmludDtcbiAgfVxufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWFrZS1yZXNvbHV0aW9ucygkcmVzb2x1dGlvbikge1xuICAkbGVuZ3RoOiBsZW5ndGgoJHJlc29sdXRpb24pO1xuXG4gICRvdXRwdXQ6ICgpO1xuXG4gIEBpZiAkbGVuZ3RoID09IDIge1xuICAgICRmZWF0dXJlOiAnJztcbiAgICAkdmFsdWU6ICcnO1xuXG4gICAgLy8gRmluZCB3aGljaCBpcyBudW1iZXJcbiAgICBAaWYgdHlwZS1vZihudGgoJHJlc29sdXRpb24sIDEpKSA9PSAnbnVtYmVyJyB7XG4gICAgICAkdmFsdWU6IG50aCgkcmVzb2x1dGlvbiwgMSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICR2YWx1ZTogbnRoKCRyZXNvbHV0aW9uLCAyKTtcbiAgICB9XG5cbiAgICAvLyBEZXRlcm1pbmUgbWluL21heC9zdGFuZGFyZFxuICAgIEBpZiBpbmRleCgkcmVzb2x1dGlvbiwgJ21pbi1yZXNvbHV0aW9uJykge1xuICAgICAgJGZlYXR1cmU6ICdtaW4tJztcbiAgICB9XG4gICAgQGVsc2UgaWYgaW5kZXgoJHJlc29sdXRpb24sICdtYXgtcmVzb2x1dGlvbicpIHtcbiAgICAgICRmZWF0dXJlOiAnbWF4LSc7XG4gICAgfVxuXG4gICAgJHN0YW5kYXJkOiAnKCN7JGZlYXR1cmV9cmVzb2x1dGlvbjogI3skdmFsdWV9KSc7XG5cbiAgICAvLyBJZiB3ZSdyZSBub3QgZGVhbGluZyB3aXRoIGRwcHgsXG4gICAgQGlmIHVuaXQoJHZhbHVlKSAhPSAnZHBweCcge1xuICAgICAgJGJhc2U6IDk2ZHBpO1xuICAgICAgQGlmIHVuaXQoJHZhbHVlKSA9PSAnZHBjbScge1xuICAgICAgICAkYmFzZTogMjQzLjg0ZHBjbTtcbiAgICAgIH1cbiAgICAgIC8vIFdyaXRlIG91dCBmZWF0dXJlIHRlc3RzXG4gICAgICAkd2Via2l0OiAnJztcbiAgICAgICRtb3o6ICcnO1xuICAgICAgJHdlYmtpdDogJygtd2Via2l0LSN7JGZlYXR1cmV9ZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvICRiYXNlfSknO1xuICAgICAgJG1vejogJygjeyRmZWF0dXJlfS1tb3otZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvICRiYXNlfSknO1xuICAgICAgLy8gQXBwZW5kIHRvIG91dHB1dFxuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRzdGFuZGFyZCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICR3ZWJraXQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkbW96LCBzcGFjZSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICR3ZWJraXQ6ICcnO1xuICAgICAgJG1vejogJyc7XG4gICAgICAkd2Via2l0OiAnKC13ZWJraXQtI3skZmVhdHVyZX1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gMWRwcHh9KSc7XG4gICAgICAkbW96OiAnKCN7JGZlYXR1cmV9LW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gMWRwcHh9KSc7XG4gICAgICAkZmFsbGJhY2s6ICcoI3skZmVhdHVyZX1yZXNvbHV0aW9uOiAjeyR2YWx1ZSAvIDFkcHB4ICogOTZkcGl9KSc7XG4gICAgICAvLyBBcHBlbmQgdG8gb3V0cHV0XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHN0YW5kYXJkLCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHdlYmtpdCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRtb3osIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkZmFsbGJhY2ssIHNwYWNlKTtcbiAgICB9XG5cbiAgfVxuXG4gIEByZXR1cm4gJG91dHB1dDtcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LW5vLXF1ZXJ5KCRxdWVyeSkge1xuICBAaWYgdHlwZS1vZigkcXVlcnkpID09ICdsaXN0JyB7XG4gICAgJGtleXdvcmQ6IG50aCgkcXVlcnksIDEpO1xuXG4gICAgQGlmIHR5cGUtb2YoJGtleXdvcmQpID09ICdzdHJpbmcnIGFuZCAoJGtleXdvcmQgPT0gJ25vLXF1ZXJ5JyBvciAka2V5d29yZCA9PSAnbm8gcXVlcnknIG9yICRrZXl3b3JkID09ICdmYWxsYmFjaycpIHtcbiAgICAgIEByZXR1cm4gbnRoKCRxdWVyeSwgMik7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIERlZmF1bHQgdGhlIEJyZWFrcG9pbnRzIHZhcmlhYmxlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50czogKCkgIWRlZmF1bHQ7XG4kQlJFQUtQT0lOVFM6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJlc3BvbmQtdG8gQVBJIE1peGluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiByZXNwb25kLXRvKCRjb250ZXh0LCAkbm8tcXVlcnk6IGZhbHNlKSB7XG4gIEBpZiBsZW5ndGgoJGJyZWFrcG9pbnRzKSA+IDAgYW5kIGxlbmd0aCgkQlJFQUtQT0lOVFMpID09IDAge1xuICAgIEB3YXJuIFwiSW4gb3JkZXIgdG8gYXZvaWQgdmFyaWFibGUgbmFtZXNwYWNlIGNvbGxpc2lvbnMsIHdlIGhhdmUgdXBkYXRlZCB0aGUgd2F5IHRvIGFkZCBicmVha3BvaW50cyBmb3IgcmVzcG9uZC10by4gUGxlYXNlIGNoYW5nZSBhbGwgaW5zdGFuY2VzIG9mIGAkYnJlYWtwb2ludHM6IGFkZC1icmVha3BvaW50KClgIHRvIGBAaW5jbHVkZSBhZGQtYnJlYWtwb2ludCgpYC4gVGhlIGBhZGQtYnJlYWtwb2ludCgpYCBmdW5jdGlvbiB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS5cIjtcbiAgICAkQlJFQUtQT0lOVFM6ICRicmVha3BvaW50cyAhZ2xvYmFsO1xuICAgICRicmVha3BvaW50czogKCkgIWdsb2JhbDtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRCUkVBS1BPSU5UUykgIT0gJ21hcCcge1xuICAgIC8vIEp1c3QgaW4gY2FzZSBzb21lb25lIHdyaXRlcyBnaWJiZXJpc2ggdG8gdGhlICRicmVha3BvaW50cyB2YXJpYWJsZS5cbiAgICBAd2FybiBcIllvdXIgYnJlYWtwb2ludHMgYXJlbid0IGEgbWFwISBgcmVzcG9uZC10b2AgZXhwZWN0cyBhIG1hcC4gUGxlYXNlIGNoZWNrIHRoZSB2YWx1ZSBvZiAkQlJFQUtQT0lOVFMgdmFyaWFibGUuXCI7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQGVsc2UgaWYgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkY29udGV4dCkge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWFwLWdldCgkQlJFQUtQT0lOVFMsICRjb250ZXh0KSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgbm90IG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJGNvbnRleHQpIHtcbiAgICBAd2FybiBcImAjeyRjb250ZXh0fWAgaXNuJ3QgYSBkZWZpbmVkIGJyZWFrcG9pbnQhIFBsZWFzZSBhZGQgaXQgdXNpbmcgYCRicmVha3BvaW50czogYWRkLWJyZWFrcG9pbnQoYCN7JGNvbnRleHR9YCwgJHZhbHVlKTtgXCI7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEB3YXJuIFwiWW91IGhhdmVuJ3QgY3JlYXRlZCBhbnkgYnJlYWtwb2ludHMgeWV0ISBNYWtlIHNvbWUgYWxyZWFkeSEgYEBpbmNsdWRlIGFkZC1icmVha3BvaW50KCRuYW1lLCAkYmtwdClgXCI7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBBZGQgQnJlYWtwb2ludCB0byBCcmVha3BvaW50c1xuLy8gVE9ETzogUmVtb3ZlIGZ1bmN0aW9uIGluIG5leHQgcmVsZWFzZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYWRkLWJyZWFrcG9pbnQoJG5hbWUsICRia3B0LCAkb3ZlcndyaXRlOiBmYWxzZSkge1xuICAkb3V0cHV0OiAoJG5hbWU6ICRia3B0KTtcblxuICBAaWYgbGVuZ3RoKCRicmVha3BvaW50cykgPT0gMCB7XG4gICAgQHJldHVybiAkb3V0cHV0O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkbmFtZSkgYW5kICRvdmVyd3JpdGUgIT0gdHJ1ZSB7XG4gICAgICBAd2FybiBcIllvdSBhbHJlYWR5IGhhdmUgYSBicmVha3BvaW50IG5hbWVkIGAjeyRuYW1lfWAsIHBsZWFzZSBjaG9vc2UgYW5vdGhlciBicmVha3BvaW50IG5hbWUsIG9yIHBhc3MgaW4gYCRvdmVyd3JpdGU6IHRydWVgIHRvIG92ZXJ3cml0ZSB0aGUgcHJldmlvdXMgYnJlYWtwb2ludC5cIjtcbiAgICAgIEByZXR1cm4gJGJyZWFrcG9pbnRzO1xuICAgIH1cbiAgICBAZWxzZSBpZiBub3QgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkbmFtZSkgb3IgJG92ZXJ3cml0ZSA9PSB0cnVlIHtcbiAgICAgIEByZXR1cm4gbWFwLW1lcmdlKCRicmVha3BvaW50cywgJG91dHB1dCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBhZGQtYnJlYWtwb2ludCgkbmFtZSwgJGJrcHQsICRvdmVyd3JpdGU6IGZhbHNlKSB7XG4gICRvdXRwdXQ6ICgkbmFtZTogJGJrcHQpO1xuXG4gIEBpZiBsZW5ndGgoJEJSRUFLUE9JTlRTKSA9PSAwIHtcbiAgICAkQlJFQUtQT0lOVFM6ICRvdXRwdXQgIWdsb2JhbDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJG5hbWUpIGFuZCAkb3ZlcndyaXRlICE9IHRydWUge1xuICAgICAgQHdhcm4gXCJZb3UgYWxyZWFkeSBoYXZlIGEgYnJlYWtwb2ludCBuYW1lZCBgI3skbmFtZX1gLCBwbGVhc2UgY2hvb3NlIGFub3RoZXIgYnJlYWtwb2ludCBuYW1lLCBvciBwYXNzIGluIGAkb3ZlcndyaXRlOiB0cnVlYCB0byBvdmVyd3JpdGUgdGhlIHByZXZpb3VzIGJyZWFrcG9pbnQuXCI7XG4gICAgICAkQlJFQUtQT0lOVFM6ICRCUkVBS1BPSU5UUyAhZ2xvYmFsO1xuICAgIH1cbiAgICBAZWxzZSBpZiBub3QgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkbmFtZSkgb3IgJG92ZXJ3cml0ZSA9PSB0cnVlIHtcbiAgICAgICRCUkVBS1BPSU5UUzogbWFwLW1lcmdlKCRCUkVBS1BPSU5UUywgJG91dHB1dCkgIWdsb2JhbDtcbiAgICB9XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGdldC1icmVha3BvaW50KCRuYW1lOiBmYWxzZSkge1xuICBAaWYgJG5hbWUgPT0gZmFsc2Uge1xuICAgIEByZXR1cm4gJEJSRUFLUE9JTlRTO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJEJSRUFLUE9JTlRTLCAkbmFtZSk7XG4gIH1cbn1cbiIsIkBtaXhpbiBsZWdhY3ktc2V0dGluZ3Mtd2FybmluZyB7XG4gICRsZWdhY3lWYXJzOiAoXG4gICAgJ2RlZmF1bHQtbWVkaWEnOiAnZGVmYXVsdCBtZWRpYScsXG4gICAgJ2RlZmF1bHQtZmVhdHVyZSc6ICdkZWZhdWx0IGZlYXR1cmUnLFxuICAgICdmb3JjZS1tZWRpYS1hbGwnOiAnZm9yY2UgYWxsIG1lZGlhIHR5cGUnLFxuICAgICd0by1lbXMnOiAndG8gZW1zJyxcbiAgICAncmVzb2x1dGlvbnMnOiAndHJhbnNmb3JtIHJlc29sdXRpb25zJyxcbiAgICAnbm8tcXVlcmllcyc6ICdubyBxdWVyaWVzJyxcbiAgICAnbm8tcXVlcnktZmFsbGJhY2tzJzogJ25vIHF1ZXJ5IGZhbGxiYWNrcycsXG4gICAgJ2Jhc2UtZm9udC1zaXplJzogJ2Jhc2UgZm9udCBzaXplJyxcbiAgICAnbGVnYWN5LXN5bnRheCc6ICdsZWdhY3kgc3ludGF4J1xuICApO1xuXG4gIEBlYWNoICRsZWdhY3ksICRuZXcgaW4gJGxlZ2FjeVZhcnMge1xuICAgIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LScgKyAkbGVnYWN5KSB7XG4gICAgICBAd2FybiBcIkluIG9yZGVyIHRvIGF2b2lkIHZhcmlhYmxlIG5hbXNwYWNlIGNvbGxpc2lvbnMsIHdlIGhhdmUgdXBkYXRlZCB0aGUgd2F5IHRvIGNoYW5nZSBzZXR0aW5ncyBmb3IgQnJlYWtwb2ludC4gUGxlYXNlIGNoYW5nZSBhbGwgaW5zdGFuY2VzIG9mIGAkYnJlYWtwb2ludC0jeyRsZWdhY3l9OiB7e3NldHRpbmd9fWAgdG8gYEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCcjeyRuZXd9Jywge3tzZXR0aW5nfX0pYC4gVmFyaWFibGUgc2V0dGluZ3MsIGFzIHdlbGwgYXMgdGhpcyB3YXJuaW5nIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLlwiXG4gICAgfVxuICB9O1xuXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLyBIYW5kIGNvcnJlY3QgZWFjaCBzZXR0aW5nXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1kZWZhdWx0LW1lZGlhJykgYW5kICRicmVha3BvaW50LWRlZmF1bHQtbWVkaWEgIT0gYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2RlZmF1bHQgbWVkaWEnLCAkYnJlYWtwb2ludC1kZWZhdWx0LW1lZGlhKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1kZWZhdWx0LWZlYXR1cmUnKSBhbmQgJGJyZWFrcG9pbnQtZGVmYXVsdC1mZWF0dXJlICE9IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IGZlYXR1cmUnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2RlZmF1bHQgZmVhdHVyZScsICRicmVha3BvaW50LWRlZmF1bHQtZmVhdHVyZSk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtZm9yY2UtbWVkaWEtYWxsJykgYW5kICRicmVha3BvaW50LWZvcmNlLW1lZGlhLWFsbCAhPSBicmVha3BvaW50LWdldCgnZm9yY2UgYWxsIG1lZGlhIHR5cGUnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJywgJGJyZWFrcG9pbnQtZm9yY2UtbWVkaWEtYWxsKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC10by1lbXMnKSBhbmQgJGJyZWFrcG9pbnQtdG8tZW1zICE9IGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ3RvIGVtcycsICRicmVha3BvaW50LXRvLWVtcyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtcmVzb2x1dGlvbnMnKSBhbmQgJGJyZWFrcG9pbnQtcmVzb2x1dGlvbnMgIT0gYnJlYWtwb2ludC1nZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJywgJGJyZWFrcG9pbnQtcmVzb2x1dGlvbnMpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LW5vLXF1ZXJpZXMnKSBhbmQgJGJyZWFrcG9pbnQtbm8tcXVlcmllcyAhPSBicmVha3BvaW50LWdldCgnbm8gcXVlcmllcycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnbm8gcXVlcmllcycsICRicmVha3BvaW50LW5vLXF1ZXJpZXMpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrcycpIGFuZCAkYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3MgIT0gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnbm8gcXVlcnkgZmFsbGJhY2tzJywgJGJyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1iYXNlLWZvbnQtc2l6ZScpIGFuZCAkYnJlYWtwb2ludC1iYXNlLWZvbnQtc2l6ZSAhPSBicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2Jhc2UgZm9udCBzaXplJywgJGJyZWFrcG9pbnQtYmFzZS1mb250LXNpemUpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWxlZ2FjeS1zeW50YXgnKSBhbmQgJGJyZWFrcG9pbnQtbGVnYWN5LXN5bnRheCAhPSBicmVha3BvaW50LWdldCgnbGVnYWN5IHN5bnRheCcpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnbGVnYWN5IHN5bnRheCcsICRicmVha3BvaW50LWxlZ2FjeS1zeW50YXgpO1xuICB9XG59IiwiQGltcG9ydCAnZnVuY3Rpb25zJztcbkBpbXBvcnQgJ3otaW5kZXgnO1xuQGltcG9ydCAnbWVkaWEtcXVlcmllcyc7XG5AaW1wb3J0ICd2YXJpYWJsZXMnO1xuQGltcG9ydCAndW5pYm9hcmQnO1xuQGltcG9ydCAnbWl4aW5zJztcbkBpbXBvcnQgJ2V4dGVuZHMnO1xuQGltcG9ydCAnZmxleCc7XG5AaW1wb3J0ICdib3gnO1xuQGltcG9ydCAnZmx1aWQtc2l6ZSc7XG4iLCIvLy8gWi1pbmRleGVzIG1hcCwgZ2F0aGVyaW5nIGFsbCBaIGxheWVycyBvZiB0aGUgYXBwbGljYXRpb25cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLyBAdHlwZSBNYXBcbi8vLyBAcHJvcCB7U3RyaW5nfSBrZXkgLSBMYXllcuKAmXMgbmFtZVxuLy8vIEBwcm9wIHtOdW1iZXJ9IHZhbHVlIC0gWiB2YWx1ZSBtYXBwZWQgdG8gdGhlIGtleVxuJHotaW5kZXhlczogKFxuICAnY2dfX3Byb21vdGlvbic6IDIwNSxcbiAgJ2NnX19waWVjZS5kcmFnZ2luZyc6IDIwNCxcbiAgJ2NnX19ib2FyZC5vdmVybGF5JzogMTAwLFxuICAnY2dfX3BpZWNlLmFuaW0nOiAzLFxuICAnY2dfX3N2Zy5jZy1zaGFwZXMnOiAyLFxuICAnY2dfX3N2Zy5jZy1jdXN0b20tc3Zncyc6IDQsXG4gICdjZ19fcGllY2UnOiAyLFxuICAnY2dfX3BpZWNlLmZhZGluZyc6IDEsXG4gICdwb3dlcnRpcCc6IDEyMCxcbiAgJ2NvbXBsZXRlJzogMTEyLFxuICAnaW5xdWlyeSc6IDExMSxcbiAgJ3plbi10b2dnbGUnOiAxMTAsXG4gICdtb2RhbCc6IDExMCxcbiAgJ21zZWxlY3QnOiAxMTAsXG4gICd0b3BuYXYnOiAxMTAsXG4gICdmdWxsc2NyZWVuLW1hc2snOiAxMDksXG4gICdkcm9wZG93bic6IDEwOCxcbiAgJ2NvbnRleHQtbWVudSc6IDEwNyxcbiAgJ3NpdGUtaGVhZGVyJzogMTA2LFxuICAncmVjb25uZWN0aW5nJzogMTA1LFxuICAndG91ci1yZW1pbmRlcic6IDEwNCxcbiAgJ216LW1lbnUnOiA0LFxuICAnYWJvdmUtbGluay1vdmVybGF5JzogMyxcbiAgJ2ZyaWVuZC1ib3gnOiAyLFxuICAnbGluay1vdmVybGF5JzogMixcbiAgJ2dhbWUtYm9va21hcmsnOiAyLFxuICAnc3VibmF2LXNpZGUnOiAyLFxuICAnZGVmYXVsdCc6IDAsXG4pO1xuXG4vLy8gR2V0IGEgei1pbmRleCB2YWx1ZSBmcm9tIGEgbGF5ZXIgbmFtZVxuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRsYXllciAtIExheWVy4oCZcyBuYW1lXG4vLy8gQHJldHVybiB7TnVtYmVyfVxuLy8vIEByZXF1aXJlICR6LWluZGV4ZXNcbkBmdW5jdGlvbiB6KCRsYXllcikge1xuICBAcmV0dXJuIG1hcC1nZXQoJHotaW5kZXhlcywgJGxheWVyKTtcbn1cbiIsIi8qIFdpZHRocyAqL1xuXG4kbXEteHgtc21hbGw6IG1pbi13aWR0aCA1MDBweDtcbiRtcS14LXNtYWxsOiBtaW4td2lkdGggNjUwcHg7XG4kbXEtc21hbGw6IG1pbi13aWR0aCA4MDBweDtcbiRtcS1tZWRpdW06IG1pbi13aWR0aCA5ODBweDtcbiRtcS1sYXJnZTogbWluLXdpZHRoIDExMjBweDtcbiRtcS14LWxhcmdlOiBtaW4td2lkdGggMTI2MHB4O1xuXG4kbXEtbm90LXh4LXNtYWxsOiBtYXgtd2lkdGggNDk5cHg7XG4kbXEtbm90LXgtc21hbGw6IG1heC13aWR0aCA2NDlweDtcbiRtcS1ub3Qtc21hbGw6IG1heC13aWR0aCA3OTlweDtcbiRtcS1ub3QtbWVkaXVtOiBtYXgtd2lkdGggOTc5cHg7XG4kbXEtbm90LWxhcmdlOiBtYXgtd2lkdGggMTExOXB4O1xuJG1xLW5vdC14LWxhcmdlOiBtYXgtd2lkdGggMTI1OXB4O1xuXG4vKiBIZWlnaHRzICovXG5cbiRtcS14LXNob3J0OiBtaW4taGVpZ2h0IDQwMHB4O1xuJG1xLXNob3J0OiBtaW4taGVpZ2h0IDUwMHB4O1xuJG1xLXRhbGw6IG1pbi1oZWlnaHQgNjAwcHg7XG4kbXEteC10YWxsOiBtaW4taGVpZ2h0IDcwMHB4O1xuXG4kbXEtbm90LXgtc2hvcnQ6IG1heC1oZWlnaHQgMzk5cHg7XG5cbi8qIE9yaWVudGF0aW9ucyAqL1xuXG4kbXEtcG9ydHJhaXQ6IG9yaWVudGF0aW9uIHBvcnRyYWl0O1xuJG1xLWxhbmRzY2FwZTogb3JpZW50YXRpb24gbGFuZHNjYXBlO1xuXG4vKiBDYXBhYmlsaXRpZXMgKi9cblxuJG1xLWhvdmVyLXllczogJ2hvdmVyOiBob3Zlcic7XG4kbXEtaG92ZXItbm86IGhvdmVyIG5vbmU7XG5cbi8qIEFsaWFzZXMgKi9cblxuJG1xLW1haW4tbWFyZ2luOiAkbXEtc21hbGw7XG5cbiRtcS10b3BuYXYtdmlzaWJsZTogJG1xLW1lZGl1bTtcbiRtcS10b3BuYXYtaGlkZGVuOiAkbXEtbm90LW1lZGl1bTtcblxuJG1xLXNpdGUtaGVhZGVyLXRhbGw6ICRtcS10YWxsO1xuXG4kbXEtc3VibmF2LXRvcDogJG1xLW5vdC1zbWFsbDtcbiRtcS1zdWJuYXYtc2lkZTogJG1xLXNtYWxsO1xuXG4kbXEtem9vbS1lbmFibGVkOiAkbXEtc21hbGwgJG1xLXNob3J0O1xuIiwiJGRlYnVnOiBmYWxzZTtcblxuJGZvbnQtcGF0aDogJy4uL2ZvbnQnO1xuJGltZy1wYXRoOiAnLi4vaW1hZ2VzJztcblxuJHZpZXdwb3J0LW1pbi13aWR0aDogMzIwcHg7XG5cbiRibG9jay1nYXA6IDJ2bWluO1xuJGJsb2NrLWdhcC1oYWxmOiAxdm1pbjtcblxuJGJsb2NrLWdhcC1oOiAydmg7XG4kYmxvY2stZ2FwLXc6IDJ2dztcbiRibG9jay1nYXAtdy1oYWxmOiAxdnc7XG5cbiRib3gtcmFkaXVzLXNpemU6IDNweDtcblxuJHNpdGUtaGVhZGVyLXRhbGwtaGVpZ2h0OiA2MHB4O1xuJHNpdGUtaGVhZGVyLXNob3J0LWhlaWdodDogNDBweDtcblxuJHRyYW5zaXRpb24tZHVyYXRpb246IDE1MG1zO1xuXG4kbWFpbi1tYXgtd2lkdGg6IDEzMDBweCAhZGVmYXVsdDtcblxuJG1haW4tbWFyZ2luOiB2YXIoLS1tYWluLW1hcmdpbik7XG4kc2l0ZS1oZWFkZXItaGVpZ2h0OiB2YXIoLS1zaXRlLWhlYWRlci1oZWlnaHQpO1xuXG4kc2l0ZS1oZWFkZXItbWFyZ2luOiB2YXIoLS1zaXRlLWhlYWRlci1tYXJnaW4pO1xuXG4kc2l0ZS1oZWFkZXItb3V0ZXItaGVpZ2h0OiBjYWxjKCN7JHNpdGUtaGVhZGVyLWhlaWdodH0gKyAjeyRzaXRlLWhlYWRlci1tYXJnaW59KTtcbiIsIi8qIFVuaWJvYXJkOiBrZWVwIHRoZSBzYW1lIHBhZ2UgbGF5b3V0IGFjcm9zcyBwYWdlcyAqL1xuXG4kbXEtYm9hcmQtcmVzaXphYmxlOiAkbXEtc21hbGw7XG4kbXEtY29sMS11bmlib2FyZDogJG1xLW5vdC1zbWFsbCAkbXEtcG9ydHJhaXQ7XG4kbXEtY29sMi11bmlib2FyZDogJG1xLXNtYWxsLCAkbXEtbGFuZHNjYXBlO1xuJG1xLWNvbDMtdW5pYm9hcmQ6ICRtcS14LWxhcmdlO1xuXG4vKiB3aGVuIHRoZSB3aWR0aCBpcyBhcHByb3ByaWF0ZSBmb3IgY29sMSwgYnV0IGxhbmRzY2FwZSBwcmV2ZW50cyBpdCAqL1xuJG1xLWNvbDItdW5pYm9hcmQtc3F1ZWV6ZTogJG1xLW5vdC1zbWFsbCAkbXEtbGFuZHNjYXBlO1xuXG4kY29sMy11bmlib2FyZC1zaWRlOiBtaW5tYXgoMjMwcHgsIDIwdncpO1xuJGNvbDMtdW5pYm9hcmQtdGFibGU6IG1pbm1heCgyNDBweCwgNDAwcHgpO1xuJGNvbDMtdW5pYm9hcmQtY29udHJvbHM6IDNyZW07XG5cbiRjb2wzLXVuaWJvYXJkLW1pbi13aWR0aDogY2FsYyg3MHZtaW4gKiB2YXIoLS1ib2FyZC1zY2FsZSkpO1xuJGNvbDMtdW5pYm9hcmQtbWF4LXdpZHRoOiBjYWxjKDEwMHZoICogdmFyKC0tYm9hcmQtc2NhbGUpIC0gI3skc2l0ZS1oZWFkZXItb3V0ZXItaGVpZ2h0fSAtICN7JGNvbDMtdW5pYm9hcmQtY29udHJvbHN9KTtcbiRjb2wzLXVuaWJvYXJkLXdpZHRoOiBtaW5tYXgoJGNvbDMtdW5pYm9hcmQtbWluLXdpZHRoLCAkY29sMy11bmlib2FyZC1tYXgtd2lkdGgpO1xuXG4kY29sMy11bmlib2FyZC1kZWZhdWx0LXNjYWxlOiAwLjk7XG5cbi8vIHpvb206IDg1JVxuJGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1taW4td2lkdGg6IDUwMHB4O1xuJGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1tYXgtd2lkdGg6IGNhbGMoXG4gIDEwMHZoICogI3skY29sMy11bmlib2FyZC1kZWZhdWx0LXNjYWxlfSAtICN7JHNpdGUtaGVhZGVyLW91dGVyLWhlaWdodH0gLSAjeyRjb2wzLXVuaWJvYXJkLWNvbnRyb2xzfVxuKTtcbiRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtd2lkdGg6IG1pbm1heCgjeyRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtbWluLXdpZHRofSwgI3skY29sMy11bmlib2FyZC1kZWZhdWx0LW1heC13aWR0aH0pO1xuXG4kY29sMi11bmlib2FyZC10YWJsZTogJGNvbDMtdW5pYm9hcmQtdGFibGU7XG4kY29sMi11bmlib2FyZC1jb250cm9sczogJGNvbDMtdW5pYm9hcmQtY29udHJvbHM7XG4kY29sMi11bmlib2FyZC13aWR0aDogJGNvbDMtdW5pYm9hcmQtd2lkdGg7XG4kY29sMi11bmlib2FyZC1kZWZhdWx0LXdpZHRoOiAkY29sMy11bmlib2FyZC1kZWZhdWx0LXdpZHRoO1xuXG4kY29sMi11bmlib2FyZC1zcXVlZXplLXRhYmxlOiBtaW5tYXgoMjAwcHgsIDI0MHB4KTtcbiRjb2wyLXVuaWJvYXJkLXNxdWVlemUtd2lkdGg6IG1pbm1heChjYWxjKDU1dm1pbiksIGNhbGMoMTAwdmggLSAjeyRzaXRlLWhlYWRlci1vdXRlci1oZWlnaHR9IC0gI3skYmxvY2stZ2FwfSkpO1xuXG4kY29sMS11bmlib2FyZC1jb250cm9sczogNXJlbTtcbiIsIkBtaXhpbiBib3gtcmFkaXVzIHtcbiAgYm9yZGVyLXJhZGl1czogJGJveC1yYWRpdXMtc2l6ZTtcbn1cblxuQG1peGluIGJveC1zaGFkb3cge1xuICBib3gtc2hhZG93OiAkYm94LXNoYWRvdztcbn1cblxuQG1peGluIGJveC1uZWF0IHtcbiAgQGluY2x1ZGUgYm94LXJhZGl1cztcbiAgQGluY2x1ZGUgYm94LXNoYWRvdztcbn1cblxuQG1peGluIGRlYnVnLXpvb20taW5wdXQge1xuICAjem9vbS1pbnB1dCB7XG4gICAgZGlzcGxheTogbm9uZTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXpvb20tZW5hYmxlZCkge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICBib3R0b206IDNweDtcbiAgICAgIHJpZ2h0OiAzcHg7XG4gICAgICB3aWR0aDogMTB2dztcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHRyYW5zaXRpb24oJHByb3A6IGFsbCwgJGR1cjogJHRyYW5zaXRpb24tZHVyYXRpb24pIHtcbiAgdHJhbnNpdGlvbjogJHByb3AgJGR1cjtcbn1cblxuQG1peGluIGhvdmVyZmxvdyB7XG4gIG92ZXJmbG93LXk6IGF1dG87XG5cbiAgQG1lZGlhIChob3ZlcjogaG92ZXIpIHtcbiAgICAmOm5vdCg6aG92ZXIpIHtcbiAgICAgIHNjcm9sbGJhci13aWR0aDogbm9uZTtcblxuICAgICAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaGlkZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG5cbiAgLmJsaW5kLW1vZGUgJiB7XG4gICAgZGlzcGxheTogaW5oZXJpdDtcbiAgfVxufVxuXG5AbWl4aW4gZWxsaXBzaXMge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbn1cblxuQG1peGluIGNyb3NzdGFibGUtbGFyZ2Uge1xuICAuY3Jvc3N0YWJsZV9fdXNlcnMge1xuICAgIGZsZXg6IDcgMSBhdXRvO1xuICB9XG59XG5cbkBtaXhpbiBjcm9zc3RhYmxlLXNtYWxsIHtcbiAgLmNyb3NzdGFibGVfX3VzZXJzIHtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgfVxufVxuXG5AbWl4aW4gYm9keS1maXhlZC1zY3JvbGwge1xuICBib2R5IHtcbiAgICAvKiBwcmV2ZW50cyBzY3JvbGwgYmFyIGZsaWNrZXIgd2hlbiBkcmFnZ2luZyBhIHBpZWNlIG91dCAqL1xuICAgIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgfVxufVxuIiwiJWJhc2UtZm9udC1mYWxsYmFjayB7XG4gIGZvbnQtZmFtaWx5OiAnTm90byBTYW5zJywgU2Fucy1TZXJpZjtcbn1cblxuJWJhc2UtZm9udCB7XG4gIGZvbnQtZmFtaWx5OiAnTm90byBTYW5zJywgU2Fucy1TZXJpZjtcbn1cblxuJXJvYm90byB7XG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJywgU2Fucy1TZXJpZjtcbn1cblxuJXJvYm90by1mYXQge1xuICBmb250LWZhbWlseTogJ1JvYm90bycsIFNhbnMtU2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbiVjaGVzcy1mb250IHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIENoZXNzJywgJ05vdG8gU2Fucyc7XG59XG5cbiVzYW4ge1xuICBAZXh0ZW5kICVjaGVzcy1mb250O1xuXG4gIC5waWVjZS1sZXR0ZXIgJiB7XG4gICAgQGV4dGVuZCAlYmFzZS1mb250O1xuICB9XG5cbiAgZHJhdyB7XG4gICAgQGV4dGVuZCAlcm9ib3RvO1xuICAgIG1hcmdpbi1sZWZ0OiAxY2g7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgfVxufVxuXG4vKiB0ZXh0IHByaW50ZWQgZGlyZWN0bHkgb24gdGhlIHBhZ2UgYmFja2dyb3VuZCBkZXNlcnZlcyBzcGVjaWFsIHRyZWF0bWVudCAodHJhbnNwIHRoZW1lKSAqL1xuJXBhZ2UtZm9udCB7XG4gIGNvbG9yOiAkYy1mb250LXBhZ2U7XG59XG5cbiVwYWdlLXRleHQge1xuICBAZXh0ZW5kICVwYWdlLWZvbnQsICVwYWdlLXRleHQtc2hhZG93ICFvcHRpb25hbDtcbn1cblxuJXBhZ2UtbGluayB7XG4gIEBleHRlbmQgJXBhZ2UtbGluay1mb250ICFvcHRpb25hbDtcblxuICBAZXh0ZW5kICVwYWdlLXRleHQtc2hhZG93ICFvcHRpb25hbDtcbn1cblxuJW1ldGFsIHtcbiAgQGluY2x1ZGUgbWV0YWw7XG59XG5cbiVtZXRhbC1ob3ZlciB7XG4gIEBpbmNsdWRlIG1ldGFsLWhvdmVyO1xufVxuXG4lcGFnZS1tZXRhbCB7XG4gIEBpbmNsdWRlIHBhZ2UtbWV0YWw7XG59XG5cbiVwYWdlLW1ldGFsLWhvdmVyIHtcbiAgQGluY2x1ZGUgcGFnZS1tZXRhbDtcbn1cblxuJW1ldGFsLWJnIHtcbiAgQGluY2x1ZGUgbWV0YWwtYmc7XG59XG5cbiVhY3RpdmUtaW5zZXQtc2hhZG93IHtcbiAgYm94LXNoYWRvdzogMCAzcHggNHB4IGhzbGEoMCwgMCwgMCwgMC4xNSkgaW5zZXQ7XG59XG5cbiVhY3RpdmUge1xuICBAZXh0ZW5kICVhY3RpdmUtaW5zZXQtc2hhZG93O1xuXG4gIGJhY2tncm91bmQ6ICRjLWFjY2VudDtcbiAgY29sb3I6ICNmZmY7XG4gIHRleHQtc2hhZG93OiAwIDFweCAxcHggYmxhY2sgIWltcG9ydGFudDtcbn1cblxuJWFjdGl2ZS1ob3ZlciB7XG4gIGJhY2tncm91bmQ6IG1peCh3aGl0ZSwgJGMtYWNjZW50LCAyMCUpO1xufVxuXG4lYWN0aXZlLXNvZnQge1xuICBAZXh0ZW5kICVhY3RpdmUtaW5zZXQtc2hhZG93O1xuXG4gIGJhY2tncm91bmQ6ICRjLXNoYWRlO1xuICBjb2xvcjogJGMtZm9udC1jbGVhcmVyO1xuICB0ZXh0LXNoYWRvdzogMXB4IDFweCAxcHggJGMtZm9udC1zaGFkb3cgIWltcG9ydGFudDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbiVkcm9wZG93bi1zaGFkb3cge1xuICBib3gtc2hhZG93OiAtMXB4IDVweCA2cHggcmdiYSgwLCAwLCAwLCAwLjMpO1xufVxuXG4lcG9wdXAtc2hhZG93IHtcbiAgYm94LXNoYWRvdzogMCAxNHB4IDI4cHggcmdiYSgwLCAwLCAwLCAwLjI1KSwgMCAxMHB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjIyKTtcbn1cblxuJWJ1dHRvbi1zaGFkb3cge1xuICBib3gtc2hhZG93OiAwIDJweCA1cHggMCBoc2xhKDAsIDAsIDAlLCAwLjIyNSk7XG59XG5cbiVidXR0b24tcmFpc2VkLXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDEwcHggMHB4IGhzbGEoMCwgMCwgMCwgMC4yMjUpO1xufVxuXG4lYnV0dG9uLW5vbmUge1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICBib3JkZXI6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGNvbG9yOiAkYy1mb250O1xuICBhbGlnbi1pdGVtczogbm9ybWFsO1xufVxuXG4lY2hlY2tib3gge1xuICBAZXh0ZW5kICVib3gtcmFkaXVzO1xuXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgYmFja2dyb3VuZDogJGMtYmctcGFnZTtcbiAgYm9yZGVyOiAxcHggc29saWQgJGMtYmctbG93O1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmc6IDAuNWVtO1xuXG4gICY6Y2hlY2tlZCB7XG4gICAgYmFja2dyb3VuZDogJGMtc2Vjb25kYXJ5LWRpbW1lcjtcbiAgICBib3JkZXItY29sb3I6ICRjLXNlY29uZGFyeS1kaW07XG4gIH1cbn1cblxuJWZvY3VzLXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IDAgMCAxMnB4ICRjLWZvbnQtZGltO1xufVxuXG4lemFsZ292ZXJmbG93IHtcbiAgLy8gbWl0aWdhdGUgemFsZ28gdGV4dFxuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4lbm93cmFwLWhpZGRlbiB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbiVub3dyYXAtZWxsaXBzaXMge1xuICBAZXh0ZW5kICVlbGxpcHNpcztcblxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4lYm94LXBhZGRpbmcge1xuICBwYWRkaW5nOiA1dmggdmFyKC0tYm94LXBhZGRpbmcpO1xufVxuXG4lYm94LXBhZGRpbmctaG9yaXoge1xuICBwYWRkaW5nOiAwIHZhcigtLWJveC1wYWRkaW5nKTtcbn1cblxuJWJyZWFrLXdvcmQge1xuICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xufVxuXG4lYnJlYWstd29yZC1oYXJkIHtcbiAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbiAgd29yZC1icmVhazogYnJlYWstYWxsO1xuXG4gIC8qIHN1cHBvcnQ6IGZpcmVmb3ggKi9cbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcbn1cblxuJWJyZWFrLW5vcGUge1xuICBvdmVyZmxvdy13cmFwOiBub3JtYWw7XG4gIHdvcmQtYnJlYWs6IG5vcm1hbDtcbn1cblxuJWVsbGlwc2lzIHtcbiAgQGluY2x1ZGUgZWxsaXBzaXM7XG59XG5cbiVzcXVhcmUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IDA7XG4gIHBhZGRpbmctYm90dG9tOiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbn1cblxuJXZpZGVvIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiAwO1xuICBwYWRkaW5nLWJvdHRvbTogNTYuMjUlO1xuXG4gIC8qIDE2LzkgKi9cbiAgLy8gcGFkZGluZy1ib3R0b206IDc1JTsgLyogNC8zICovXG4gIHdpZHRoOiAxMDAlO1xuXG4gID4gKiB7XG4gICAgQGV4dGVuZCAlYWJzLTEwMDtcblxuICAgIGJvcmRlcjogbm9uZTtcbiAgfVxufVxuXG4lZ2FtZS1lbWJlZCB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLW5vdC14eC1zbWFsbCkge1xuICAgIHBhZGRpbmctYm90dG9tOiAxNjAlO1xuICB9XG59XG5cbiVkYXRhLWljb24ge1xuICBmb250LXNpemU6IDEuMmVtO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBmb250LWZhbWlseTogJ2xpY2hlc3MnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICBzcGVhazogbm9uZTtcbiAgY29udGVudDogYXR0cihkYXRhLWljb24pO1xuICBvcGFjaXR5OiAwLjk7XG59XG5cbiVkYXRhLWljb24tdG9wIHtcbiAgJjo6YmVmb3JlIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC10b3A7XG4gIH1cbn1cblxuJWZ1bGxzY3JlZW4tbWFzayB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICBiYWNrZ3JvdW5kOiAkYy1wYWdlLW1hc2s7XG4gIHotaW5kZXg6IHooJ2Z1bGxzY3JlZW4tbWFzaycpO1xufVxuXG4lbGluay1vdmVybGF5IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHotaW5kZXg6IHooJ2xpbmstb3ZlcmxheScpO1xufVxuXG4lYWJzLTEwMCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbn1cblxuJWRvdWJsZS10YXAge1xuICAvLyBwcmV2ZW50IGlQYWQgc2FmYXJpIGZyb20gem9vbWluZyBpbiBvbiBkb3VibGUgdGFwXG4gIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xufVxuIiwiJWZsZXgtd3JhcCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XG59XG5cbiVmbGV4LWNlbnRlciB7XG4gIC8qIGV4dGVuZHMgJWZsZXgtd3JhcCAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4lZmxleC1jZW50ZXItbm93cmFwIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4lZmxleC1iZXR3ZWVuIHtcbiAgLyogZXh0ZW5kcyAlZmxleC1jZW50ZXIgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuXG4lZmxleC1iZXR3ZWVuLW5vd3JhcCB7XG4gIC8qIGV4dGVuZHMgJWZsZXgtY2VudGVyICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuXG4lZmxleC1iZXR3ZWVuLXN0cmV0Y2gge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xufVxuXG4lZmxleC1hcm91bmQge1xuICAvKiBleHRlbmRzICVmbGV4LWNlbnRlciAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbn1cblxuJWZsZXgtY29sdW1uIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiBjb2x1bW47XG59XG4iLCIlYm94LXJhZGl1cyB7XG4gIEBpbmNsdWRlIGJveC1yYWRpdXM7XG59XG5cbiVib3gtcmFkaXVzLWZvcmNlIHtcbiAgQGV4dGVuZCAlYm94LXJhZGl1cztcblxuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gIC8qIGhlbHBzIHdpdGggY2xpcHBpbmcgYmFja2dyb3VuZCBpbnRvIGJvcmRlci1yYWRpdXMgKi9cbn1cblxuJWJveC1yYWRpdXMtbGVmdCB7XG4gIGJvcmRlci1yYWRpdXM6ICRib3gtcmFkaXVzLXNpemUgMCAwICRib3gtcmFkaXVzLXNpemU7XG59XG5cbiVib3gtcmFkaXVzLXJpZ2h0IHtcbiAgYm9yZGVyLXJhZGl1czogMCAkYm94LXJhZGl1cy1zaXplICRib3gtcmFkaXVzLXNpemUgMDtcbn1cblxuJWJveC1yYWRpdXMtdG9wIHtcbiAgYm9yZGVyLXJhZGl1czogJGJveC1yYWRpdXMtc2l6ZSAkYm94LXJhZGl1cy1zaXplIDAgMDtcbn1cblxuJWJveC1yYWRpdXMtYm90dG9tIHtcbiAgYm9yZGVyLXJhZGl1czogMCAwICRib3gtcmFkaXVzLXNpemUgJGJveC1yYWRpdXMtc2l6ZTtcbn1cblxuJWJveC1yYWRpdXMtdG9wLWxlZnQge1xuICBib3JkZXItcmFkaXVzOiAkYm94LXJhZGl1cy1zaXplIDAgMCAwO1xufVxuXG4lYm94LXJhZGl1cy10b3AtcmlnaHQge1xuICBib3JkZXItcmFkaXVzOiAwICRib3gtcmFkaXVzLXNpemUgMCAwO1xufVxuXG4lYm94LXNoYWRvdyB7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3c7XG59XG5cbiVib3gtbmVhdCB7XG4gIEBleHRlbmQgJWJveC1zaGFkb3csICVib3gtcmFkaXVzO1xufVxuXG4lYm94LW5lYXQtdG9wIHtcbiAgQGV4dGVuZCAlYm94LXNoYWRvdywgJWJveC1yYWRpdXMtdG9wO1xufVxuXG4lYm94LW5lYXQtZm9yY2Uge1xuICBAZXh0ZW5kICVib3gtc2hhZG93LCAlYm94LXJhZGl1cy1mb3JjZTtcbn1cbiIsIiR2cC1taW4td2lkdGg6IDMyMHB4ICFkZWZhdWx0O1xuJHZwLW1heC13aWR0aDogMTIwMHB4ICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gc3RyaXAtdW5pdCgkdmFsdWUpIHtcbiAgQHJldHVybiAkdmFsdWUgLyAoJHZhbHVlICogMCArIDEpO1xufVxuXG5AbWl4aW4gZmx1aWQtc2l6ZSgkcHJvcCwgJG1pbi1zaXplLCAkbWF4LXNpemUsICRtaW4tdnc6ICR2cC1taW4td2lkdGgsICRtYXgtdnc6ICR2cC1tYXgtd2lkdGgpIHtcbiAgJHUxOiB1bml0KCRtaW4tdncpO1xuICAkdTI6IHVuaXQoJG1heC12dyk7XG4gICR1MzogdW5pdCgkbWluLXNpemUpO1xuICAkdTQ6IHVuaXQoJG1heC1zaXplKTtcblxuICBAaWYgJHUxID09ICR1MiBhbmQgJHUxID09ICR1MyBhbmQgJHUxID09ICR1NCB7XG4gICAgJiB7XG4gICAgICAjeyRwcm9wfTogJG1pbi1zaXplO1xuXG4gICAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbi12dykge1xuICAgICAgICAjeyRwcm9wfTogY2FsYyhcbiAgICAgICAgICAjeyRtaW4tc2l6ZX0gKyAje3N0cmlwLXVuaXQoJG1heC1zaXplIC0gJG1pbi1zaXplKX0gKlxuICAgICAgICAgICAgKCgxMDB2dyAtICN7JG1pbi12d30pIC8gI3tzdHJpcC11bml0KCRtYXgtdncgLSAkbWluLXZ3KX0pXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWF4LXZ3KSB7XG4gICAgICAgICN7JHByb3B9OiAkbWF4LXNpemU7XG4gICAgICB9XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAZXJyb3IgXCJmbHVpZC1zaXplIHJlcXVpcmVzIHRoYXQgYWxsIHZhbHVlcyBoYXZlIHRoZSBzYW1lIHVuaXRcIjtcbiAgfVxufVxuIiwiLmZidCB7XG4gIEBleHRlbmQgJWJ1dHRvbi1ub25lO1xuXG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG5cbiAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcblxuICBAbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuICAgICY6aG92ZXI6bm90KC5kaXNhYmxlZCk6bm90KFtkaXNhYmxlZF0pIHtcbiAgICAgIGJhY2tncm91bmQ6IG1peCgkYy1zZWNvbmRhcnksICRjLWJnLWJveCwgNzUlKTtcbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgIH1cbiAgfVxuXG4gICYuYWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1zZWNvbmRhcnkgIWltcG9ydGFudDtcbiAgICBjb2xvcjogI2ZmZjtcbiAgfVxuXG4gICYuZGlzYWJsZWQsXG4gICZbZGlzYWJsZWRdIHtcbiAgICBvcGFjaXR5OiAwLjU7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xuICB9XG59XG4iLCJAa2V5ZnJhbWVzIGJhci1nbGlkZXItYW5pbSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEzMDBweCk7XG4gIH1cblxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjEwMHB4KTtcbiAgfVxufVxuXG4uYmFyLWdsaWRlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAmOjphZnRlciB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogNzBweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMCksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKSk7XG4gICAgYW5pbWF0aW9uOiBiYXItZ2xpZGVyLWFuaW0gM3MgbGluZWFyIGluZmluaXRlO1xuICB9XG59XG4iLCIuc2xpc3Qge1xuICB3aWR0aDogMTAwJTtcbiAgYm9yZGVyLWJvdHRvbTogJGJvcmRlcjtcblxuICB0aGVhZCB7XG4gICAgQGV4dGVuZCAlbWV0YWwsICVyb2JvdG87XG5cbiAgICB0aCB7XG4gICAgICBib3JkZXItdG9wOiAkYm9yZGVyO1xuICAgICAgYm9yZGVyLWJvdHRvbTogJGJvcmRlcjtcbiAgICAgIHBhZGRpbmc6IDAuNXJlbSAwLjhyZW07XG4gICAgfVxuXG4gICAgdGgubGFyZ2Uge1xuICAgICAgZm9udC1zaXplOiAxLjJyZW07XG4gICAgfVxuICB9XG5cbiAgdGQge1xuICAgIHBhZGRpbmc6IDFyZW07XG5cbiAgICAubGFiZWwge1xuICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTtcbiAgICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgIH1cbiAgfVxuXG4gIHRib2R5IHRyOm50aC1jaGlsZChldmVuKSB7XG4gICAgYmFja2dyb3VuZDogJGMtYmctemVicmE7XG4gIH1cblxuICB0ZDpmaXJzdC1jaGlsZCxcbiAgdGg6Zmlyc3QtY2hpbGQge1xuICAgIHBhZGRpbmctbGVmdDogMS41cmVtO1xuICB9XG5cbiAgJi1wYWQge1xuICAgIHRkOmZpcnN0LWNoaWxkLFxuICAgIHRoOmZpcnN0LWNoaWxkIHtcbiAgICAgIHBhZGRpbmctbGVmdDogdmFyKC0tYm94LXBhZGRpbmcpO1xuICAgIH1cblxuICAgIHRkOmxhc3QtY2hpbGQsXG4gICAgdGg6bGFzdC1jaGlsZCB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1ib3gtcGFkZGluZyk7XG4gICAgfVxuICB9XG5cbiAgJi1pbnZlcnQge1xuICAgIHRib2R5IHRyOm50aC1jaGlsZChvZGQpIHtcbiAgICAgIGJhY2tncm91bmQ6ICRjLWJnLXplYnJhO1xuICAgIH1cblxuICAgIHRib2R5IHRyOm50aC1jaGlsZChldmVuKSB7XG4gICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIH1cbiAgfVxufVxuIiwiLnB1bGwtcXVvdGUge1xuICBtYXJnaW46IDAgYXV0bztcblxuICBwIHtcbiAgICBjb2xvcjogJGMtZm9udDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWFyZ2luOiAwIDAuN2VtO1xuICAgIHBhZGRpbmc6IDFlbSAwO1xuICAgIGJvcmRlcjogJGJvcmRlcjtcbiAgICBib3JkZXItd2lkdGg6IDFweCAwO1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICBmb250LXNpemU6IDEuMXJlbTtcblxuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBib3R0b206IC05cHg7XG4gICAgICBsZWZ0OiA0MnB4O1xuICAgICAgd2lkdGg6IDE1cHg7XG4gICAgICBoZWlnaHQ6IDE1cHg7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG4gICAgICBib3JkZXItbGVmdDogMnB4IHNvbGlkICRjLWJvcmRlcjtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYy1ib3JkZXI7XG4gICAgICB0cmFuc2Zvcm06IHNrZXcoNDVkZWcpIHJvdGF0ZSgtNDVkZWcpO1xuICAgIH1cbiAgfVxuXG4gICYubG9uZyBwIHtcbiAgICBmb250LXNpemU6IDFyZW07XG4gIH1cblxuICBmb290ZXIge1xuICAgIG1hcmdpbjogMTBweDtcbiAgICBsaW5lLWhlaWdodDogMjBweDtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcblxuICAgICY6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICdcXDIwMTRcXDIwMDknO1xuICAgIH1cbiAgfVxufVxuIiwiLmNvbG9yLWljb24ge1xuICBAaWYgJHRoZW1lLWxpZ2h0IHtcbiAgICAmLndoaXRlOjpiZWZvcmUge1xuICAgICAgY29udGVudDogJ+6Avic7XG4gICAgfVxuXG4gICAgJi5ibGFjazo6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICfugL0nO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJi53aGl0ZTo6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICfugL0nO1xuICAgIH1cblxuICAgICYuYmxhY2s6OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAn7oC+JztcbiAgICB9XG4gIH1cblxuICAmLnJhbmRvbTo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAn7oGfJztcbiAgfVxufVxuIiwiLmNvbnRleHQtc3RyZWFtZXJzIHtcbiAgbWF4LWhlaWdodDogMjB2aDtcbiAgb3ZlcmZsb3cteTogYXV0bztcbn1cblxuLmNvbnRleHQtc3RyZWFtZXIge1xuICBAZXh0ZW5kICVub3dyYXAtaGlkZGVuLCAlYm94LXJhZGl1cy1ib3R0b20sICVib3gtc2hhZG93LCAlZmxleC1jZW50ZXItbm93cmFwO1xuXG4gIGhlaWdodDogMi4yZW07XG4gIGNvbG9yOiAkYy1zZWNvbmRhcnktb3ZlciAhaW1wb3J0YW50O1xuICBiYWNrZ3JvdW5kOiBtaXgoJGMtc2Vjb25kYXJ5LCAkYy1iZy1wYWdlLCA2MCUpO1xuXG4gIEBpbmNsdWRlIHRyYW5zaXRpb247XG5cbiAgJjo6YmVmb3JlIHtcbiAgICBmb250LXNpemU6IDEuM2VtO1xuICAgIG1hcmdpbi1sZWZ0OiAwLjRlbTtcbiAgfVxuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IG1peCgkYy1zZWNvbmRhcnksICRjLWJnLXBhZ2UsIDgwJSk7XG4gIH1cbn1cbiIsIi5ub3ctcGxheWluZyB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIC0tbnAtbWluLXdpZHRoOiAyMDBweDtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1ub3QteHgtc21hbGwpIHtcbiAgICAtLW5wLW1pbi13aWR0aDogNTAlO1xuICB9XG5cbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maWxsLCBtaW5tYXgodmFyKC0tbnAtbWluLXdpZHRoKSwgMWZyKSk7XG5cbiAgPiBhIHtcbiAgICBjb2xvcjogJGMtZm9udDtcbiAgICBwYWRkaW5nOiAwLjNlbTtcbiAgfVxuXG4gIC5pbmRpY2F0b3Ige1xuICAgIGNvbG9yOiAkYy1hY2NlbnQ7XG4gICAgbWFyZ2luLXRvcDogLTNweDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gIGNnLWJvYXJkIHtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICB9XG59XG4iLCIucG9kaXVtLXdyYXAge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHBhZGRpbmctYm90dG9tOiAyMHB4O1xuXG4gICNjb25mZXR0aSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDI1cztcblxuICAgICYuZmFkZWQge1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gIH1cbn1cblxuLnBvZGl1bSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMjtcblxuICA+IGRpdiB7XG4gICAgQGV4dGVuZCAlZWxsaXBzaXM7XG5cbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuXG4gICAgJi5sYW1lIHtcbiAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICAgIC51c2VyLWxpbmsge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgIH1cbiAgICAgIC50cm9waHkge1xuICAgICAgICBvcGFjaXR5OiAwLjM7XG4gICAgICAgIGZpbHRlcjogZ3JheXNjYWxlKDEwMCUpIGNvbnRyYXN0KDEwJSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmZpcnN0IHtcbiAgICAvLyBzYW1lIHdpZHRoIHRvIGZpdCBpbiBtdWx0aXBsZSBmaXJzdCBwbGFjZXNcbiAgICB3aWR0aDogMzMlO1xuICAgIGZvbnQtc2l6ZTogMS42ZW07XG4gIH1cblxuICAuc2Vjb25kIHtcbiAgICBmb250LXNpemU6IDEuM2VtO1xuICAgIHdpZHRoOiAzMyU7XG4gIH1cblxuICAudGhpcmQge1xuICAgIGZvbnQtc2l6ZTogMS4yZW07XG4gICAgd2lkdGg6IDMzJTtcbiAgfVxuXG4gIC50cm9waHkge1xuICAgIG1hcmdpbjogMCBhdXRvIDAuNWVtIGF1dG87XG4gICAgYmFja2dyb3VuZDogY2VudGVyIC8gY29udGFpbiBuby1yZXBlYXQ7XG4gIH1cblxuICAuZmlyc3QgLnRyb3BoeSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGhlaWdodDogOWVtO1xuICAgIHdpZHRoOiA5ZW07XG4gICAgYmFja2dyb3VuZC1pbWFnZTogaW1nLXVybCgndHJvcGh5L2xpY2hlc3MtbWFzc2l2ZS5zdmcnKTtcbiAgICBpc29sYXRpb246IGlzb2xhdGU7XG5cbiAgICAmOjphZnRlciB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGluc2V0OiAwO1xuICAgICAgYmFja2dyb3VuZDogY2VudGVyIC8gY29udGFpbiBuby1yZXBlYXQ7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbWctdXJsKCd0cm9waHkvbGljaGVzcy1tYXNzaXZlLnN2ZycpO1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB6LWluZGV4OiAzO1xuICAgIH1cbiAgfVxuXG4gIC50cm9waHktbWFzY290IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAtMC4wNWVtO1xuICAgIGxlZnQ6IDUwJTtcbiAgICB3aWR0aDogOS42ZW07XG4gICAgaGVpZ2h0OiAxMC4yZW07XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICAgIHotaW5kZXg6IDI7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG5cbiAgLnRyb3BoeS1tYXNjb3RfX3Nwcml0ZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBib3R0b206IC0wLjFlbTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgtNWVtKTtcbiAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xuICB9XG5cbiAgLnRyb3BoeS1tYXNjb3RfX3Nwcml0ZS0tY29tcGFuaW9uIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgtNmVtKTtcbiAgfVxuXG4gIC50cm9waHktbWFzY290X19zcHJpdGUtLXBvcHBpbmcge1xuICAgIGFuaW1hdGlvbjogdHJvcGh5LW1hc2NvdC1wb3AgNi40cyBlYXNlLW91dCAwLjhzIGZvcndhcmRzO1xuICB9XG5cbiAgLnRyb3BoeS1tYXNjb3RfX3Nwcml0ZS0tY29tcGFuaW9uLnRyb3BoeS1tYXNjb3RfX3Nwcml0ZS0tcG9wcGluZyB7XG4gICAgYW5pbWF0aW9uOiB0cm9waHktbWFzY290LXBvcC1jb21wYW5pb24gNi40cyBlYXNlLW91dCAwLjhzIGZvcndhcmRzO1xuICB9XG5cbiAgLnRyb3BoeS1tYXNjb3RfX3ZpZGVvIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTIuM2VtO1xuICAgIGhlaWdodDogYXV0bztcbiAgfVxuXG4gIEBrZXlmcmFtZXMgdHJvcGh5LW1hc2NvdC1wb3Age1xuICAgIDAlIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKC01ZW0pO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoLTguMmVtKTtcbiAgICB9XG4gIH1cblxuICBAa2V5ZnJhbWVzIHRyb3BoeS1tYXNjb3QtcG9wLWNvbXBhbmlvbiB7XG4gICAgMCUge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoLTZlbSk7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgtOS4yZW0pO1xuICAgIH1cbiAgfVxuXG4gIC5zZWNvbmQgLnRyb3BoeSB7XG4gICAgaGVpZ2h0OiA5ZW07XG4gICAgd2lkdGg6IDdlbTtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbWctdXJsKCd0cm9waHkvbGljaGVzcy1zaWx2ZXItMS5zdmcnKTtcbiAgfVxuXG4gIC50aGlyZCAudHJvcGh5IHtcbiAgICBoZWlnaHQ6IDdlbTtcbiAgICB3aWR0aDogN2VtO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGltZy11cmwoJ3Ryb3BoeS9saWNoZXNzLWJyb256ZS0yLnN2ZycpO1xuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtbm90LXh4LXNtYWxsKSB7XG4gICAgLnRyb3BoeSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gIC51c2VyLWxpbmsge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGxldHRlci1zcGFjaW5nOiAtMXB4O1xuICB9XG5cbiAgLnN0YXRzIHtcbiAgICBtYXJnaW46IDAuNWVtIGF1dG8gMCBhdXRvO1xuICAgIGZvbnQtc2l6ZTogMC43ZW07XG5cbiAgICB0aCB7XG4gICAgICBsZXR0ZXItc3BhY2luZzogLTFweDtcbiAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgfVxuXG4gICAgdGQge1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDVweDtcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIC50aGlyZCAuc3RhdHMge1xuICAgIGZvbnQtc2l6ZTogMC44ZW07XG4gIH1cbn1cbiIsIi5wYWdpbmF0aW9uIHtcbiAgY29sb3I6ICRjLWZvbnQtZGltbWVyO1xuICBkaXNwbGF5OiBmbGV4O1xuXG4gIGEsXG4gIHNwYW4ge1xuICAgIHdpZHRoOiAycmVtO1xuICAgIGhlaWdodDogMnJlbTtcblxuICAgIEBleHRlbmQgJWJveC1yYWRpdXM7XG5cbiAgICBtYXJnaW46IDAgMC4xcmVtO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxuXG4gIHNwYW4ge1xuICAgIGNvbG9yOiAkYy1mb250LWRpbW1lcjtcbiAgfVxuXG4gIGE6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IG1peCgkYy1wcmltYXJ5LCAkYy1iZy1ib3gsIDEwKTtcbiAgfVxuXG4gIC5jdXJyZW50IHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1wcmltYXJ5O1xuICAgIGNvbG9yOiAkYy1wcmltYXJ5LW92ZXI7XG4gIH1cbn1cbiIsIkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvYmFzZS9zY3JvbGxiYXInO1xuXG5AaW1wb3J0ICd0YWInO1xuQGltcG9ydCAnbWVtYmVycyc7XG5AaW1wb3J0ICdkaXNjdXNzaW9uJztcbkBpbXBvcnQgJ3BhbGFudGlyJztcblxuLm1jaGF0IHtcbiAgQGV4dGVuZCAlYm94LW5lYXQtZm9yY2UsICVmbGV4LWNvbHVtbjtcblxuICBncmlkLWFyZWE6IGNoYXQ7XG4gIGp1c3RpZnktY29udGVudDogc3RyZXRjaDtcblxuICAmX19jb250ZW50IHtcbiAgICBAZXh0ZW5kICVmbGV4LWNvbHVtbjtcblxuICAgIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgJi5ub3RlIHRleHRhcmVhIHtcbiAgICAgIGZvbnQtc2l6ZTogMC45ZW07XG4gICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICBib3JkZXI6IG5vbmU7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjdlbTtcbiAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICByZXNpemU6IG5vbmU7XG5cbiAgICAgIC8vIFByZXZlbnQgU2FmYXJpIGlPUyBhdXRvLXpvb20gd2hlbiBmb2N1c2VkICh0cmlnZ2VyZWQgd2hlbiBmb250LXNpemUgPCAxNnB4KVxuICAgICAgQG1lZGlhIChob3Zlcjogbm9uZSkge1xuICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbWluLWhlaWdodDogMTVlbTtcbn1cbiIsImJvZHkgOjotd2Via2l0LXNjcm9sbGJhcixcbmJvZHkgOjotd2Via2l0LXNjcm9sbGJhci1jb3JuZXIge1xuICB3aWR0aDogMC41cmVtO1xuICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG59XG5cbmJvZHkgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gIGJhY2tncm91bmQ6ICRjLXNoYWRlO1xufVxuXG5ib2R5IDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIsXG5ib2R5IDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6YWN0aXZlIHtcbiAgYmFja2dyb3VuZDogJGMtZm9udC1kaW1tZXI7XG59XG4iLCIubWNoYXQge1xuICAmX190YWJzIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9XG5cbiAgJl9fdGFiIHtcbiAgICBAZXh0ZW5kICVyb2JvdG8sICVub3dyYXAtaGlkZGVuLCAlYm94LXJhZGl1cy10b3A7XG5cbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcGFkZGluZzogMC40ZW0gMTBweDtcblxuICAgIC8vIGJhY2tncm91bmQ6ICRjLXNoYWRlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBjb2xvcjogJGMtZm9udC1wYWdlO1xuXG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogbWl4KCRjLWFjY2VudCwgJGMtYmctYm94LCAxNSUpO1xuICAgIH1cblxuICAgICYtYWN0aXZlIHtcbiAgICAgIGNvbG9yOiAkYy1mb250O1xuICAgICAgYmFja2dyb3VuZDogJGMtYmctYm94ICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgaW5wdXQge1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgZGlzcGxheTogbm9uZTtcblxuICAgICAgQGV4dGVuZCAlY2hlY2tib3g7XG4gICAgfVxuXG4gICAgJi1hY3RpdmUgaW5wdXQge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgc3BhbiB7XG4gICAgICBAZXh0ZW5kICVub3dyYXAtZWxsaXBzaXM7XG4gICAgfVxuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIGJvcmRlci1yaWdodDogbm9uZTtcbiAgICB9XG4gIH1cblxuICAmLW9wdGlvbmFsIC5tY2hhdF9fdGFiLmRpc2N1c3Npb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cbn1cbiIsIi5jaGF0X19tZW1iZXJzIHtcbiAgQGV4dGVuZCAlcGFnZS10ZXh0O1xuXG4gIGZvbnQtc2l6ZTogMC45ZW07XG5cbiAgLy8gbWluLWhlaWdodDogNWVtO1xuICAvLyBtYXgtaGVpZ2h0OiA5ZW07XG4gIGhlaWdodDogMTAwJTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAmX19pbm5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgfVxuXG4gICZfX251bWJlciB7XG4gICAgQGV4dGVuZCAlZmxleC1jZW50ZXItbm93cmFwO1xuICAgIG1hcmdpbi1yaWdodDogMWNoO1xuICAgICY6OmJlZm9yZSB7XG4gICAgICBmb250LXNpemU6IDFlbTtcbiAgICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgICAgIG1hcmdpbi1yaWdodDogMC4yY2g7XG4gICAgfVxuICB9XG59XG4iLCIubWNoYXQge1xuICAmX19tZXNzYWdlcyB7XG4gICAgQGV4dGVuZCAlYnJlYWstd29yZDtcblxuICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgIG1heC1oZWlnaHQ6IDUwdmg7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wzLXVuaWJvYXJkKSB7XG4gICAgICBtYXgtaGVpZ2h0OiBub25lO1xuICAgIH1cblxuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgIGN1cnNvcjogaW5pdGlhbDtcbiAgICBmb250LXNpemU6IDAuOWVtO1xuXG4gICAgbGkge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgcGFkZGluZzogMC41ZW0gNXB4IDAuNWVtIDEwcHg7XG4gICAgICBsaW5lLWhlaWdodDogMS4yZW07XG4gICAgICBvdmVyZmxvdy15OiBoaWRkZW47XG4gICAgICB1c2VyLXNlbGVjdDogdGV4dDtcblxuICAgICAgJi5tZSB7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgJGMtc2Vjb25kYXJ5LWRpbTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiA3cHg7XG4gICAgICB9XG5cbiAgICAgICYuaG9zdCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJGMtc2Vjb25kYXJ5LWRpbSwgMC40KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuZGVsZXRlZCB7XG4gICAgICBvcGFjaXR5OiAwLjU7XG4gICAgfVxuXG4gICAgLnN5c3RlbSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIG9wYWNpdHk6IDAuODtcbiAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgIGZvbnQtc2l6ZTogMC45ZW07XG4gICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cbiAgICAuYW5ub3VuY2VtZW50IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgZm9udC1zaXplOiAxLjFlbTtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgfVxuXG4gICAgLmNvbG9yLFxuICAgIC51c2VyLWxpbmsge1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgICAgY29sb3I6ICRjLWZvbnQtZGltO1xuICAgICAgbGV0dGVyLXNwYWNpbmc6IC0xcHg7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAwLjRlbTtcbiAgICAgIG1heC13aWR0aDogMTEwcHg7XG4gICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207XG4gICAgfVxuXG4gICAgbGluZS5wYXRyb24ge1xuICAgICAgZm9udC1zaXplOiAxLjFlbTtcbiAgICAgIHdpZHRoOiAxLjJlbTtcbiAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICBjb2xvcjogJGMtYnJhZztcbiAgICB9XG5cbiAgICAudXRpdGxlIHtcbiAgICAgIG1hcmdpbi1yaWdodDogM3B4O1xuICAgIH1cblxuICAgIGE6bm90KC51c2VyLWxpbmspIHtcbiAgICAgIEBleHRlbmQgJXJvYm90bztcbiAgICB9XG5cbiAgICBpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDVweDtcbiAgICAgIHJpZ2h0OiAwO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAzcHg7XG4gICAgICBwYWRkaW5nOiAxcHggNXB4O1xuICAgICAgb3BhY2l0eTogMC43O1xuICAgICAgY29sb3I6ICRjLWFjY2VudDtcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGk6aG92ZXIgaSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHRleHQtc2hhZG93OiAwIDAgMnB4ICRjLWJnLWJveCwgMCAwIDVweCAkYy1iZy1ib3gsIDAgMCAxMHB4ICRjLWJnLWJveDtcbiAgICB9XG5cbiAgICBsaS5tZSBpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICAmX19zYXkge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIGJvcmRlcjogMDtcbiAgICBib3JkZXItdG9wOiAkYm9yZGVyO1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgcGFkZGluZzogM3B4IDIwcHggM3B4IDRweDtcblxuICAgIC8vIFByZXZlbnQgU2FmYXJpIGlPUyBhdXRvLXpvb20gd2hlbiBpbnB1dCBpcyBmb2N1c2VkICh0cmlnZ2VyZWQgd2hlbiBmb250LXNpemUgPCAxNnB4KVxuICAgIEBtZWRpYSAoaG92ZXI6IG5vbmUpIHtcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICB9XG5cbiAgICAmLndoaXNwZXIge1xuICAgICAgY29sb3I6ICRjLWdvb2Q7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICB9XG4gIH1cbn1cbiIsIkBrZXlmcmFtZXMgcGFsYW50aXItZ2xvd2luZyB7XG4gIDQwJSB7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgfVxuXG4gIDUwJSB7XG4gICAgYmFja2dyb3VuZDogbWl4KCRjLXNlY29uZGFyeSwgJGMtYmctYm94LCAzMCUpO1xuICB9XG5cbiAgNjAlIHtcbiAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtcHJpbWFyeSwgJGMtYmctYm94LCAzMCUpO1xuICB9XG5cbiAgNzAlIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICB9XG59XG5cbi5wYWxhbnRpciB7XG4gIGZsZXg6IDAgMSBhdXRvO1xuICBhbmltYXRpb246IHBhbGFudGlyLWdsb3dpbmcgMS41cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgYm9yZGVyLXJhZGl1czogMCAzcHggMCAwO1xuXG4gICYtc2xvdCB7XG4gICAgYW5pbWF0aW9uOiBub25lO1xuICAgIG9wYWNpdHk6IDAuNjtcblxuICAgICY6aG92ZXIge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gIH1cblxuICAmLW9mZiB7XG4gICAgYW5pbWF0aW9uOiBub25lO1xuICB9XG5cbiAgJi1vbiB7XG4gICAgYmFja2dyb3VuZDogJGMtZ29vZDtcbiAgICBjb2xvcjogJGMtZ29vZC1vdmVyO1xuICAgIGFuaW1hdGlvbjogbm9uZTtcblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogJGMtYmFkICFpbXBvcnRhbnQ7XG4gICAgICBjb2xvcjogJGMtYmFkLW92ZXIgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICAmOjphZnRlciB7XG4gICAgdG9wOiAxcHg7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogYXV0bztcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gIH1cbn1cbiIsIiRtcS1jb2wxOiAkbXEtY29sMS11bmlib2FyZDtcbiRtcS1jb2wyOiAkbXEtc21hbGw7XG4kbXEtY29sMzogJG1xLWNvbDMtdW5pYm9hcmQ7XG5cbkBpbXBvcnQgJ2xheW91dCc7XG5AaW1wb3J0ICdzaWRlJztcbkBpbXBvcnQgJ2JvYXJkcyc7XG5AaW1wb3J0ICdhcHAtaGVhZGVyJztcbkBpbXBvcnQgJ2FwcC1ub3RpY2UnO1xuQGltcG9ydCAnYXBwLWNvbnRyb2wnO1xuQGltcG9ydCAnYXBwLXN0YW5kaW5nJztcbkBpbXBvcnQgJ3N0YXRzJztcbkBpbXBvcnQgJ3BsYXllci1pbmZvJztcbkBpbXBvcnQgJ3JvdW5kLXBhaXJpbmdzJztcblxuLnN3aXNzIHtcbiAgLnB1bGwtcXVvdGUge1xuICAgIG1hcmdpbi10b3A6IDMwcHg7XG4gICAgd2lkdGg6IDMwMHB4O1xuICB9XG5cbiAgJl9fbWFpbi1jcmVhdGVkIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMmVtO1xuXG4gICAgLyogYXMgcXVvdGUgbWFyZ2luICovXG4gIH1cbn1cbiIsIkBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDIpIHtcbiAgI21haW4td3JhcCB7XG4gICAgLS1tYWluLW1heC13aWR0aDogYXV0bztcbiAgfVxufVxuXG4kY2hhdC1vcHRpbWFsLXNpemU6IGNhbGMoMTAwdmggLSAjeyRzaXRlLWhlYWRlci1vdXRlci1oZWlnaHR9IC0gI3skYmxvY2stZ2FwfSAtIDNyZW0pO1xuXG4uc3dpc3Mge1xuICBkaXNwbGF5OiBncmlkO1xuXG4gICZfX3NpZGUge1xuICAgIGdyaWQtYXJlYTogc2lkZTtcbiAgfVxuXG4gICZfX3RhYmxlIHtcbiAgICBncmlkLWFyZWE6IHRhYmxlO1xuICB9XG5cbiAgJl9fbWFpbiB7XG4gICAgZ3JpZC1hcmVhOiBtYWluO1xuICB9XG5cbiAgLmNoYXRfX21lbWJlcnMge1xuICAgIGdyaWQtYXJlYTogdWNoYXQ7XG4gIH1cblxuICAuc3dpc3NfX2JvYXJkX190b3Age1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICBncmlkLXRlbXBsYXRlLWFyZWFzOiAnbWFpbicgJ3NpZGUnICd1Y2hhdCcgJ3RhYmxlJztcbiAgZ3JpZC1nYXA6ICRibG9jay1nYXA7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMikge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogJGNvbDItdW5pYm9hcmQtZGVmYXVsdC13aWR0aCAkY29sMi11bmlib2FyZC10YWJsZTtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6ICRjaGF0LW9wdGltYWwtc2l6ZSBtaW4tY29udGVudDtcbiAgICBncmlkLXRlbXBsYXRlLWFyZWFzOiAnbWFpbiAgc2lkZScgJ21haW4gIHVjaGF0JyAndGFibGUgdGFibGUnO1xuXG4gICAgLm1jaGF0X19tZXNzYWdlcyB7XG4gICAgICBtYXgtaGVpZ2h0OiBpbmhlcml0O1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDMpIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6ICRjb2wzLXVuaWJvYXJkLXNpZGUgJGNvbDMtdW5pYm9hcmQtZGVmYXVsdC13aWR0aCAkY29sMy11bmlib2FyZC10YWJsZTtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6ICRjaGF0LW9wdGltYWwtc2l6ZSBhdXRvO1xuICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6ICdzaWRlICBtYWluIHRhYmxlJyAndWNoYXQgbWFpbiB0YWJsZSc7XG5cbiAgICAuc3dpc3NfX2JvYXJkX190b3Age1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICB9XG59XG5cbi8qIOKUgOKUgCBTd2lzcyBNYXNjb3QgU3R5bGVzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuXG4ubWFzY290IHtcbiAgd2lkdGg6IDQwMHB4O1xuICBoZWlnaHQ6IDI2MHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xufVxuXG4uc3dpc3MtbWFzY290LWZlYXR1cmVkLWRvY2ssXG4jc3dpc3MtbWFzY290LW1vdW50IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgbWluLWhlaWdodDogMjMycHg7XG4gIHdpZHRoOiAxMDAlO1xuICB6LWluZGV4OiA5MDtcbn1cblxuLnN3aXNzLW1hc2NvdC1mZWF0dXJlZC1kb2NrIC5tYXNjb3QtYm90dG9tLFxuI3N3aXNzLW1hc2NvdC1tb3VudCAubWFzY290LWJvdHRvbSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdG9wOiAwO1xuICB6LWluZGV4OiA5MTtcbn1cblxuLnN3aXNzLW1hc2NvdC1mZWF0dXJlZC1kb2NrIC5tYXNjb3QsXG4jc3dpc3MtbWFzY290LW1vdW50IC5tYXNjb3Qge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDIzMnB4O1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgei1pbmRleDogOTI7XG59XG5cbi5zd2lzcy1tYXNjb3QtZmVhdHVyZWQtZG9jayAubWFzY290LXNwcml0ZSxcbiNzd2lzcy1tYXNjb3QtbW91bnQgLm1hc2NvdC1zcHJpdGUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogLThweDtcbiAgYm90dG9tOiBhdXRvO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiA5MztcbiAgYW5pbWF0aW9uOiBub25lO1xufVxuXG4vKiB3cmFwcGVyIHRoYXQgbW92ZXMgbGVmdC9yaWdodCAqL1xuLm1hc2NvdC1zcHJpdGUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcbiAgY3Vyc29yOiBncmFiO1xuICBhbmltYXRpb246IG1hc2NvdFBhY2UgNnMgbGluZWFyIGluZmluaXRlIGFsdGVybmF0ZTtcblxuICAmLm1hc2NvdC0tY2hhc2luZyB7XG4gICAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IHBhdXNlZCAhaW1wb3J0YW50O1xuICB9XG59XG5cbi5tYXNjb3QtLWRyYWdnaW5nIC5tYXNjb3Qtc3ByaXRlIHtcbiAgY3Vyc29yOiBncmFiYmluZztcbiAgYW5pbWF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi5tYXNjb3QubWFzY290LS1mcmVlLWRyYWcge1xuICBwb3NpdGlvbjogZml4ZWQgIWltcG9ydGFudDtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICB3aWR0aDogMTAwdncgIWltcG9ydGFudDtcbiAgaGVpZ2h0OiAxMDB2aCAhaW1wb3J0YW50O1xuICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuICB6LWluZGV4OiAyMTQ3NDgzNjQ2ICFpbXBvcnRhbnQ7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi5tYXNjb3QubWFzY290LS1mcmVlLWRyYWcgLm1hc2NvdC1zcHJpdGUge1xuICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgei1pbmRleDogMjE0NzQ4MzY0NztcbiAgYW5pbWF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi5tYXNjb3QtdmlkZW8ge1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDI4MHB4O1xuICBoZWlnaHQ6IGF1dG87XG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XG59XG5cbi5tYXNjb3QtLXBhdXNlZCAubWFzY290LXNwcml0ZSB7IGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBwYXVzZWQgIWltcG9ydGFudDsgfVxuXG5Aa2V5ZnJhbWVzIG1hc2NvdFBhY2Uge1xuICBmcm9tIHsgbGVmdDogMDsgfVxuICB0byAgIHsgbGVmdDogY2FsYyg0MDBweCAtIDI4MHB4KTsgfVxufVxuXG4ubWFzY290LWJ1YmJsZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogNTAlO1xuICB0b3A6IDBweDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICBkaXNwbGF5OiBub25lO1xuICBwYWRkaW5nOiA2cHggMTBweDtcbiAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMTtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk1KTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLDAsMCwwLjE1KTtcbiAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwwLDAsMC4xMik7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB6LWluZGV4OiAyO1xufVxuXG4ubWFzY290LWJ1YmJsZTo6YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiA1MCU7XG4gIGJvdHRvbTogLTZweDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHJvdGF0ZSg0NWRlZyk7XG4gIHdpZHRoOiAxMHB4O1xuICBoZWlnaHQ6IDEwcHg7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45NSk7XG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgcmdiYSgwLDAsMCwwLjE1KTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMCwwLDAsMC4xNSk7XG59XG5cbi8qIOKUgOKUgCBFbmQgU3dpc3MgTWFzY290IFN0eWxlcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cbiIsIi5zd2lzc19fc2lkZSB7XG4gIEBleHRlbmQgJWZsZXgtY29sdW1uO1xuXG4gIC5tY2hhdCB7XG4gICAgZmxleDogMSAxIDdlbTtcbiAgICBtYXJnaW4tdG9wOiAkYmxvY2stZ2FwO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMikge1xuICAgICAgbWluLWhlaWdodDogaW5oZXJpdDtcbiAgICB9XG4gIH1cblxuICAudG91cl9fcHJpemUge1xuICAgIEBleHRlbmQgJWJveC1yYWRpdXM7XG5cbiAgICBwYWRkaW5nOiAxZW0gMnZtaW47XG4gICAgYmFja2dyb3VuZDogJGMtYmctemVicmE7XG4gICAgbWFyZ2luLWJvdHRvbTogMWVtO1xuICAgIGZvbnQtc2l6ZTogMC45ZW07XG4gIH1cbn1cblxuLnN3aXNzX19tZXRhIHtcbiAgQGV4dGVuZCAlYm94LW5lYXQtZm9yY2U7XG5cbiAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICBwYWRkaW5nOiAjeyRibG9jay1nYXAgKiAwLjZ9ICRibG9jay1nYXA7XG5cbiAgc2VjdGlvbiB7XG4gICAgbWFyZ2luLWJvdHRvbTogJGJsb2NrLWdhcDtcblxuICAgICZbZGF0YS1pY29uXSB7XG4gICAgICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXA7XG4gICAgfVxuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGZvbnQtc2l6ZTogM3JlbTtcbiAgICAgIG1hcmdpbi1yaWdodDogNCU7XG4gICAgfVxuXG4gICAgcCB7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxuXG4gICAgLnNldHVwIHtcbiAgICAgIEBleHRlbmQgJW5vd3JhcC1oaWRkZW47XG4gICAgfVxuXG4gICAgdGltZSB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cblxuICAgICYuY29uZGl0aW9ucyB7XG4gICAgICAmOjpiZWZvcmUge1xuICAgICAgICBvcGFjaXR5OiAwLjc7XG4gICAgICB9XG5cbiAgICAgICYuYWNjZXB0ZWQsXG4gICAgICAuYWNjZXB0ZWQge1xuICAgICAgICBjb2xvcjogJGMtZ29vZDtcbiAgICAgIH1cblxuICAgICAgJi5yZWZ1c2VkLFxuICAgICAgLnJlZnVzZWQge1xuICAgICAgICBjb2xvcjogJGMtYmFkO1xuICAgICAgfVxuXG4gICAgICAuY29uZGl0aW9uOmZpcnN0LWNoaWxkLFxuICAgICAgLmNvbmRpdGlvbiArIC5jb25kaXRpb24ge1xuICAgICAgICAmLmFjY2VwdGVkOjphZnRlciB7XG4gICAgICAgICAgY29udGVudDogJ1xcYTBcXDI3MTMnO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5yZWZ1c2VkOjphZnRlciB7XG4gICAgICAgICAgY29udGVudDogJ1xcYTBcXDI3MTgnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmRlc2NyaXB0aW9uIHtcbiAgICBAZXh0ZW5kICVicmVhay13b3JkO1xuXG4gICAgbWF4LWhlaWdodDogMjB2aDtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICB9XG59XG5cbi5jaGF0X19tZW1iZXJzIHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG5cbiAgLyogZml4ZXMgaW52aXNpYmxlIHNwZWN0YXRvcnMgb24gZmlyZWZveCwgY29sMiAqL1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wxKSB7XG4gICAgbWFyZ2luOiAwICRibG9jay1nYXA7XG4gIH1cbn1cbiIsIi5zd2lzc19fYm9hcmRzIHtcbiAgbWFyZ2luOiAkYmxvY2stZ2FwIDA7XG4gIGdyaWQtZ2FwOiAxY2g7XG4gIC0tbnAtbWluLXdpZHRoOiAyMDBweDtcbn1cblxuLnN3aXNzX19ib2FyZCB7XG4gIEBleHRlbmQgJWJveC1uZWF0LWZvcmNlLCAlZmxleC1jb2x1bW47XG5cbiAgLm1pbmktZ2FtZV9fcGxheWVyIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXA7XG5cbiAgICBwYWRkaW5nOiAwLjJlbTtcbiAgfVxuXG4gIC5taW5pLWdhbWVfX3VzZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG5cbiAgICBzdHJvbmcge1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAxY2g7XG4gICAgfVxuICB9XG59XG4iLCIuc3dpc3NfX21haW5fX2hlYWRlciB7XG4gIEBleHRlbmQgJWZsZXgtY2VudGVyLW5vd3JhcDtcblxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1pbi1oZWlnaHQ6IDdlbTtcbiAgcGFkZGluZzogMCAjeyRibG9jay1nYXAgKiAxLjV9O1xuXG4gIGgxIHtcbiAgICBmb250LXNpemU6IDIuMnJlbTtcbiAgICBmbGV4OiA5IDEgYXV0bztcbiAgICBtYXJnaW46IDA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgIGEge1xuICAgICAgLyogR00gd2lraXBlZGlhICovXG4gICAgICBjb2xvcjogbWl4KCRjLWxpbmssICRjLWZvbnQsIDM1JSk7XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogJGMtbGluaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpbWcge1xuICAgIGZsZXg6IDAgMCA2MHB4O1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiA2MHB4O1xuICAgIGhlaWdodDogNjBweDtcbiAgICBwYWRkaW5nOiA2cHg7XG4gIH1cblxuICAuaW1nIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDFyZW07XG4gIH1cblxuICBpOjpiZWZvcmUge1xuICAgIGZvbnQtc2l6ZTogMi4ycmVtO1xuICB9XG5cbiAgLmNsb2NrIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBjb2xvcjogJGMtZm9udC1kaW07XG5cbiAgICAmLWNyZWF0ZWQge1xuICAgICAgQGV4dGVuZCAlZmxleC1jb2x1bW47XG5cbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIC5vbmdvaW5nIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXA7XG5cbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBjb2xvcjogJGMtZm9udC1kaW07XG5cbiAgICAuc2h5IHtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gICAgfVxuXG4gICAgLm5iIHtcbiAgICAgIEBleHRlbmQgJXJvYm90bztcblxuICAgICAgY29sb3I6ICRjLWJyYWc7XG4gICAgICBmbGV4OiAxIDEgMTAwJTtcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgZm9udC1zaXplOiAyLjhlbTtcbiAgICAgIG1hcmdpbi1yaWdodDogMC41ZW07XG4gICAgfVxuICB9XG5cbiAgLnN3aXNzX19tYWluLWZpbmlzaGVkICYgaDEge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxuXG4gIC50aW1lIHtcbiAgICBAZXh0ZW5kICVyb2JvdG87XG5cbiAgICBjb2xvcjogJGMtYnJhZztcbiAgICBmb250LXNpemU6IDEuN2VtO1xuICAgIG1hcmdpbi1sZWZ0OiAwLjJlbTtcbiAgfVxuXG4gIC5zaHkge1xuICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICAgIGZvbnQtc2l6ZTogMC45ZW07XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBvcGFjaXR5OiAwLjY7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgfVxufVxuIiwiLnN3aXNzX19ub3RpY2Uge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZDogJGMtZ29vZDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nOiAwLjVlbSAwO1xuICBvcGFjaXR5OiAwLjg7XG5cbiAgJi5jbG9zZWQge1xuICAgIGJhY2tncm91bmQ6ICRjLXByaW1hcnk7XG4gIH1cbn1cblxuLnN3aXNzX191ci1wbGF5aW5nIHtcbiAgQGV4dGVuZCAlZmxleC1jb2x1bW47XG5cbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXNpemU6IDEuNWVtO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgJjo6YmVmb3JlLFxuICAmOjphZnRlciB7XG4gICAgY29udGVudDogJ+6BiCc7XG4gICAgZm9udC1zaXplOiAycmVtO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDMwcHg7XG4gIH1cblxuICAmOjpiZWZvcmUge1xuICAgIGxlZnQ6IDMwcHg7XG4gIH1cblxuICAmOjphZnRlciB7XG4gICAgcmlnaHQ6IDMwcHg7XG4gIH1cbn1cbiIsIi5zd2lzc19fY29udHJvbHMge1xuICBAZXh0ZW5kICVtZXRhbCwgJWZsZXgtYmV0d2VlbiwgJWJveC1zaGFkb3c7XG5cbiAgcGFkZGluZzogMCAwcHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAuZmJ0IHtcbiAgICBwYWRkaW5nOiAwLjZlbSAwLjhlbTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXh4LXNtYWxsKSB7XG4gICAgICBwYWRkaW5nOiAwLjZlbSAxZW07XG4gICAgfVxuXG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsaW5lLWhlaWdodDogMS4zO1xuICB9XG5cbiAgLmhpZ2hsaWdodCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiA1cHg7XG4gICAgdG9wOiAtM3B4O1xuICAgIHBhZGRpbmc6IDhweCAyMHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYmFja2dyb3VuZDogIzgyYmY1NjtcbiAgICBib3JkZXItYm90dG9tOiA1cHggc29saWQgIzc1OTkwMDtcbiAgICB0ZXh0LXNoYWRvdzogMCAtMXB4ICM3NTk5MDA7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMXM7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMHB4LCAwcHgpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBmaWx0ZXI6IGJyaWdodG5lc3MoMS4wNik7XG4gICAgfVxuXG4gICAgJjphY3RpdmUge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMHB4LCA1cHgpO1xuICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4O1xuICAgICAgdGV4dC1zaGFkb3c6IDAgMCAjNzU5OTAwO1xuICAgICAgZmlsdGVyOiBicmlnaHRuZXNzKDEpO1xuICAgIH1cbiAgfVxuXG4gIC5zcGlubmVyIHtcbiAgICBtYXJnaW46IDA7XG4gICAgd2lkdGg6IDEuNWVtO1xuICAgIGhlaWdodDogMS41ZW07XG4gICAgbWFyZ2luLXJpZ2h0OiAwLjdlbTtcbiAgfVxuXG4gIC5wYWdlciB7XG4gICAgQGV4dGVuZCAlZmxleC1jZW50ZXI7XG5cbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcblxuICAgIC5wYWdlIHtcbiAgICAgIG1hcmdpbjogMCAzcHg7XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cblxuICAgIGlucHV0IHtcbiAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgIGJhY2tncm91bmQ6IGZhZGUtb3V0KCRjLXNlY29uZGFyeSwgMC44KTtcbiAgICB9XG5cbiAgICAuc2VhcmNoLFxuICAgIGlucHV0IHtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG4gIH1cbn1cblxuLnNjaGVkdWxlLW5leHQtcm91bmQge1xuICBAZXh0ZW5kICVmbGV4LWNlbnRlcjtcblxuICBwYWRkaW5nOiAxZW0gMDtcblxuICAmLnJlcXVpcmVkIHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1hY2NlbnQ7XG4gIH1cblxuICBpbnB1dCB7XG4gICAgbWFyZ2luOiBhdXRvO1xuICB9XG59XG4iLCIuc3dpc3NfX3N0YW5kaW5nIHtcbiAgYm9yZGVyOiBub25lO1xuXG4gIC5wbGF5ZXIge1xuICAgIHBhZGRpbmctbGVmdDogMHB4O1xuICAgIHBhZGRpbmctcmlnaHQ6IDBweDtcblxuICAgIC5uYW1lIHtcbiAgICAgIEBleHRlbmQgJW5vd3JhcC1lbGxpcHNpcztcblxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDVweDtcbiAgICAgIG1heC13aWR0aDogMTQwcHg7XG4gICAgfVxuICB9XG5cbiAgLnVzZXItbGluay5sb25nIHtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuN3B4O1xuICB9XG5cbiAgLnVzZXItbGluayAucmF0aW5nIHtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgZm9udC1zaXplOiAwLjhlbTtcbiAgfVxuXG4gIHRyIHtcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uO1xuXG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIH1cblxuICAubG9hZGluZyB0Ym9keSB7XG4gICAgb3BhY2l0eTogMC42O1xuXG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbihvcGFjaXR5LCAwLjNzKTtcbiAgfVxuXG4gICY6bm90KC5jcmVhdGVkKTpub3QoLmxvYWRpbmcpIHRib2R5IHRyOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtcHJpbWFyeSwgJGMtYmctYm94LCAxNSUpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gIHRyLm1lIHRkOmZpcnN0LWNoaWxkIHtcbiAgICAkYy1tZS1ib3JkZXI6IG1peCgkYy1zZWNvbmRhcnksICRjLWJnLWJveCwgNzAlKTtcblxuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChcbiAgICAgIHRvIHJpZ2h0LFxuICAgICAgJGMtbWUtYm9yZGVyIDBweCxcbiAgICAgICRjLW1lLWJvcmRlciA1cHgsXG4gICAgICByZ2JhKDAsIDAsIDAsIDApIDVweCxcbiAgICAgIHJnYmEoMCwgMCwgMCwgMCkgMTAwJVxuICAgICk7XG4gIH1cblxuICB0ci5hY3RpdmUgdGQ6bGFzdC1jaGlsZCB7XG4gICAgJGMtYWN0aXZlLWJvcmRlcjogbWl4KCRjLXByaW1hcnksICRjLWJnLWJveCwgNzAlKTtcblxuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChcbiAgICAgIHRvIGxlZnQsXG4gICAgICAkYy1hY3RpdmUtYm9yZGVyIDBweCxcbiAgICAgICRjLWFjdGl2ZS1ib3JkZXIgNXB4LFxuICAgICAgcmdiYSgwLCAwLCAwLCAwKSA1cHgsXG4gICAgICByZ2JhKDAsIDAsIDAsIDApIDEwMCVcbiAgICApO1xuICB9XG5cbiAgdGQucmFuayB7XG4gICAgQGV4dGVuZCAlcm9ib3RvO1xuXG4gICAgcGFkZGluZzogMWVtIDAuNWVtIDFlbSAxMHB4O1xuICAgIHdpZHRoOiAxcHg7XG5cbiAgICAvKiBoZWxwcyBrZWVwaW5nIGl0IGFzIHNtYWxsIGFzIHBvc3NpYmxlICovXG4gICAgaSB7XG4gICAgICBvcGFjaXR5OiAwLjQ7XG4gICAgICBmb250LXNpemU6IDAuOGVtO1xuICAgIH1cbiAgfVxuXG4gIC5wYWlyaW5ncyB7XG4gICAgcGFkZGluZzogMDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB3aWR0aDogMTAwJTtcblxuICAgIGRpdiB7XG4gICAgICBAZXh0ZW5kICVmbGV4LWNlbnRlcjtcblxuICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgICAgbWluLWhlaWdodDogMy41ZW07XG5cbiAgICAgICYgPiAqIHtcbiAgICAgICAgQGV4dGVuZCAlZmxleC1jZW50ZXI7XG5cbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGZsZXg6IDAgMCAyZW07XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAub25nb2luZyB7XG4gICAgICBjb2xvcjogJGMtbGluaztcblxuICAgICAgLy8gYmFja2dyb3VuZDogbWl4KCRjLWxpbmssICRjLWJnLWJveCwgMTUlKTtcbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtbGluaywgJGMtYmctYm94LCAzNSUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC53aW4ge1xuICAgICAgY29sb3I6ICRjLWdvb2Q7XG5cbiAgICAgIC8vIGJhY2tncm91bmQ6IG1peCgkYy1nb29kLCAkYy1iZy1ib3gsIDE1JSk7XG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogbWl4KCRjLWdvb2QsICRjLWJnLWJveCwgMzUlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubG9zcyB7XG4gICAgICBjb2xvcjogbWl4KCRjLWJhZCwgJGMtYmctYm94LCA2MCUpO1xuXG4gICAgICAvLyBiYWNrZ3JvdW5kOiBtaXgoJGMtYmFkLCAkYy1iZy1ib3gsIDEwJSk7XG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogbWl4KCRjLWJhZCwgJGMtYmctYm94LCAyMCUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5kcmF3IHtcbiAgICAgIGNvbG9yOiBtaXgoJGMtYnJhZywgJGMtYmctYm94LCA3MCk7XG4gICAgfVxuXG4gICAgYnllIHtcbiAgICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgICB9XG5cbiAgICBsYXRlIHtcbiAgICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgICB9XG5cbiAgICBhYnNlbnQge1xuICAgICAgY29sb3I6IG1peCgkYy1iYWQsICRjLWJnLWJveCwgNjAlKTtcbiAgICB9XG5cbiAgICByIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAxcHggZG90dGVkICRjLWJvcmRlcjtcbiAgICB9XG4gIH1cblxuICAucG9pbnRzIHtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgfVxuXG4gIC50aWVCcmVhayB7XG4gICAgQGV4dGVuZCAlcm9ib3RvO1xuXG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgcGFkZGluZy1yaWdodDogJGJsb2NrLWdhcDtcbiAgfVxuXG4gICYubG9uZyB7XG4gICAgLnVzZXItbGluayAucmF0aW5nIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcGFkZGluZy1sZWZ0OiAwcHg7XG4gICAgfVxuXG4gICAgLnBhaXJpbmdzIGRpdiA+ICoge1xuICAgICAgZmxleDogMCAwIDEuNWVtO1xuICAgIH1cbiAgfVxuXG4gICYueGxvbmcgJiB7XG4gICAgLnBhaXJpbmdzIGRpdiA+ICoge1xuICAgICAgZmxleDogMCAwIDEuM2VtO1xuICAgIH1cbiAgfVxufVxuIiwiLnN3aXNzX19zdGF0cyB7XG4gIEBleHRlbmQgJWZsZXgtY29sdW1uLCAlYm94LW5lYXQ7XG5cbiAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICBwYWRkaW5nOiAxLjdlbSAwO1xuICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xuXG4gIGgyIHtcbiAgICBmb250LXNpemU6IDEuNWVtO1xuICAgIG1hcmdpbi1ib3R0b206IDJyZW07XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG5cbiAgdGFibGUge1xuICAgIG1hcmdpbjogYXV0bztcbiAgfVxuXG4gIHRkIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBwYWRkaW5nLWxlZnQ6IDFlbTtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICBsaW5lLWhlaWdodDogMmVtO1xuICB9XG5cbiAgJl9fbGlua3Mge1xuICAgIG1hcmdpbjogMmVtIGF1dG8gMCBhdXRvO1xuICAgIGEge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBtYXJnaW46IDAuNWVtIDA7XG4gICAgfVxuICB9XG59XG4iLCIuc3dpc3NfX3BsYXllci1pbmZvIHtcbiAgQGV4dGVuZCAlYm94LW5lYXQtZm9yY2U7XG5cbiAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7XG5cbiAgLnNwaW5uZXIge1xuICAgIG1hcmdpbjogNWVtIGF1dG87XG4gIH1cblxuICAuY2xvc2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDRweDtcbiAgICByaWdodDogNXB4O1xuICAgIG9wYWNpdHk6IDAuNjtcblxuICAgIEBpbmNsdWRlIHRyYW5zaXRpb247XG5cbiAgICBjb2xvcjogJGMtcmVkO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgfVxuXG4gIC5zdGF0cyB7XG4gICAgQGV4dGVuZCAlZmxleC1jb2x1bW47XG5cbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICAgIGgyIHtcbiAgICAgIEBleHRlbmQgJW1ldGFsO1xuXG4gICAgICBmb250LXNpemU6IDEuNGVtO1xuICAgICAgcGFkZGluZzogMC42cmVtIDFyZW07XG4gICAgICBib3JkZXItYm90dG9tOiAkYm9yZGVyO1xuICAgIH1cblxuICAgIHRhYmxlIHtcbiAgICAgIG1hcmdpbjogMWVtIGF1dG87XG4gICAgfVxuXG4gICAgdGQge1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjhlbTtcblxuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgQGV4dGVuZCAlcm9ib3RvO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5zdWJsaXN0IHtcbiAgICB3aWR0aDogMTAwJTtcblxuICAgIHRyIHtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihiYWNrZ3JvdW5kLWNvbG9yKTtcblxuICAgICAgJjpudGgtY2hpbGQob2RkKSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjLWJnLXplYnJhO1xuICAgICAgfVxuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogbWl4KCRjLWxpbmssICRjLWJnLWJveCwgMTAlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aCxcbiAgICB0ZCB7XG4gICAgICBwYWRkaW5nOiAwLjNlbTtcbiAgICB9XG5cbiAgICB0aCB7XG4gICAgICBAZXh0ZW5kICVyb2JvdG87XG5cbiAgICAgIHBhZGRpbmctbGVmdDogN3B4O1xuICAgIH1cbiAgfVxuXG4gIC5wYWlyaW5ncyB7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICB0ciB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYmFja2dyb3VuZC1jb2xvcik7XG5cbiAgICAgICY6bnRoLWNoaWxkKG9kZCkge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTtcbiAgICAgIH1cblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IG1peCgkYy1saW5rLCAkYy1iZy1ib3gsIDEwJSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGgsXG4gICAgdGQge1xuICAgICAgcGFkZGluZzogMC4zZW07XG4gICAgfVxuXG4gICAgdGgge1xuICAgICAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCB0cmFuc3BhcmVudDtcblxuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcbiAgICB9XG5cbiAgICB0cjpob3ZlciB0aCB7XG4gICAgICBib3JkZXItY29sb3I6ICRjLWZvbnQtZGltbWVyO1xuICAgIH1cblxuICAgIHRyLndpbjpob3ZlciB0aCB7XG4gICAgICBib3JkZXItY29sb3I6ICRjLWdvb2Q7XG4gICAgfVxuXG4gICAgdHIubG9zczpob3ZlciB0aCB7XG4gICAgICBib3JkZXItY29sb3I6ICRjLWJhZDtcbiAgICB9XG5cbiAgICB0ZDpudGgtY2hpbGQoMikge1xuICAgICAgQGV4dGVuZCAlbm93cmFwLWVsbGlwc2lzO1xuXG4gICAgICBtYXgtd2lkdGg6IDIwMHB4O1xuICAgIH1cblxuICAgIHRkOmxhc3QtY2hpbGQge1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICBvcGFjaXR5OiAwLjg7XG4gICAgfVxuXG4gICAgdHIud2luIHRkOmxhc3QtY2hpbGQge1xuICAgICAgY29sb3I6ICRjLWdvb2Q7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cblxuICAgIHRyLmxvc3MgdGQ6bGFzdC1jaGlsZCB7XG4gICAgICBjb2xvcjogJGMtYmFkO1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG5cbiAgICAub3V0Y29tZSB7XG4gICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICBjb2xvcjogJGMtZm9udC1kaW1tZXI7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgICB9XG4gIH1cblxuICAuY29sb3ItaWNvbiB7XG4gICAgb3BhY2l0eTogMC42O1xuICB9XG59XG4iLCIucGFnaW5hdGlvbiB7XG4gIG1hcmdpbi1sZWZ0OiB2YXIoLS1ib3gtcGFkZGluZyk7XG4gICYtLXRvcCB7XG4gICAgcGFkZGluZy1ib3R0b206IDFlbTtcbiAgICBib3JkZXItYm90dG9tOiAkYm9yZGVyO1xuICB9XG4gICYtLWJvdHRvbSB7XG4gICAgcGFkZGluZzogMWVtIDA7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FFRUEsWUFBWTtBQWtCWiw2REFBNkQ7QUFj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 */
