/* 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 */
/* Fancy: pink */
/* text over brag background */
/* Borders */
/* Shadows */
/* Custom */
/* Common imports for all CSS modules */
/* Widths */
/* Heights */
/* Orientations */
/* Capabilities */
/* Aliases */
/* Uniboard: keep the same page layout accross pages */
/* when the width is appropriate for col1, but landscape prevents it */
/* atm only chrome supports min-content, max-content */
.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';
}

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

.slist thead, .swiss__controls, .swiss__player-info .stats h2 {
  background: linear-gradient(to bottom, whitesmoke 0%, #ededed 100%);
  text-shadow: 0 1px 0 white;
}

#trainer group.radio input:checked + label {
  background: #0456bc;
}

.fbt {
  background: none;
  border: none;
  outline: none;
  color: #4d4d4d;
}

.mchat__tab input {
  -webkit-appearance: none;
  background: white;
  border: 1px solid #e3e3e3;
  display: inline-block;
  padding: .5em;
}

.mchat__tab input:checked {
  background: #0456bc;
  border-color: #0456bc;
}

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

.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__player-info .stats {
  display: flex;
  flex-flow: column;
}

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

.swiss__stats, .mchat, .swiss__meta, .swiss__board, .swiss__player-info, .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: #ed1c24;
    color: #fff;
  }
}

.fbt.active {
  background: #bd111f !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 #d9d9d9;
}

.slist thead th {
  border-top: 1px solid #d9d9d9;
  border-bottom: 1px solid #d9d9d9;
  padding: .5rem .8rem;
}

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

.slist td {
  padding: 1rem;
}

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

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

.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: #f7f6f5;
}

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

.pull-quote {
  margin: 0 auto;
}

.pull-quote p {
  color: #4d4d4d;
  position: relative;
  margin: 0 .7em;
  padding: 1em 0;
  border: 1px solid #d9d9d9;
  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: white;
  border-left: 2px solid #d9d9d9;
  border-bottom: 1px solid #d9d9d9;
  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: "K";
}

.color-icon.black::before {
  content: "J";
}

.color-icon.random::before {
  content: "l";
}

.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: #4d4d4d;
  padding: .3em;
}

.now-playing .indicator {
  color: #bd111f;
  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 > div {
  display: inline-block;
  text-align: center;
}

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

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

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

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

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

.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: .5em auto 0 auto;
  font-size: .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: .8em;
}

body ::-webkit-scrollbar,
body ::-webkit-scrollbar-corner {
  width: .5rem;
  background: white;
}

body ::-webkit-scrollbar-thumb {
  background: #dbdbdb;
}

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

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

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

.mchat__tab:hover {
  background: #f5dbdd;
}

.mchat__tab-active {
  color: #4d4d4d;
  background: white !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: .9em;
  height: 100%;
  overflow: hidden;
}

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

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

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

.mchat__messages .deleted {
  opacity: 0.5;
}

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

.mchat__messages .color,
.mchat__messages .user-link {
  font-weight: bold;
  padding: 0;
  color: #787878;
  letter-spacing: -1px;
  margin-right: .4em;
}

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

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

.mchat__messages i:hover {
  opacity: 1;
}

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

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

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

@keyframes palantir-glowing {
  40% {
    background: none;
  }
  50% {
    background: #d0e0bd;
  }
  60% {
    background: #ebb8bc;
  }
  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: .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: white;
  flex: 1 1 auto;
  overflow: hidden;
}

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

@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__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;
  background: #faebeb;
  border: 1px solid #cc3333;
  margin-bottom: 1em;
  font-size: .9em;
}

.swiss__meta {
  background: white;
  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 .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: .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: #74383d;
}

.swiss__main__header h1 a:hover {
  color: #bd111f;
}

.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: #787878;
}

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

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

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

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

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

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

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

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

.swiss__notice.closed {
  background: #bd111f;
}

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

.swiss__ur-playing::before, .swiss__ur-playing::after {
  content: 'U';
  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: .6em .8em;
  text-transform: uppercase;
  line-height: 1.3;
}

@media (min-width: 500px) {
  .swiss__controls .fbt {
    padding: .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: .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,
.swiss__controls .pager .twitter-typeahead {
  height: 100%;
}

.swiss__controls .search .tt-menu .spinner {
  float: none;
  margin: 10px auto;
}

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

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

.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: .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: #f5dbdd;
  cursor: pointer;
}

.swiss__standing tr.me td:first-child {
  background: linear-gradient(to right, #91b766 0px, #91b766 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, #d15862 0px, #d15862 5px, rgba(0, 0, 0, 0) 5px, rgba(0, 0, 0, 0) 100%);
}

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

.swiss__standing td.rank i {
  opacity: .4;
  font-size: .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: #bd111f;
}

.swiss__standing .pairings .ongoing:hover {
  background: #e8acb1;
}

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

.swiss__standing .pairings .win:hover {
  background: #c8dbb2;
}

.swiss__standing .pairings .loss {
  color: #e08585;
}

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

.swiss__standing .pairings .draw {
  color: #e2b163;
}

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

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

.swiss__standing .pairings absent {
  color: #e08585;
}

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

.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: white;
  padding: 1.7em 0;
  align-self: flex-start;
}

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

.swiss__stats table {
  margin: auto;
}

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

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

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

.swiss__player-info .close {
  position: absolute;
  top: 4px;
  right: 5px;
  opacity: .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: .6rem 1rem;
  border-bottom: 1px solid #d9d9d9;
}

.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: #f7f6f5;
}

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

.swiss__player-info .sublist th, .swiss__player-info .sublist td {
  padding: .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: #f7f6f5;
}

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

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

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

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

.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: .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: #b3b3b3;
  text-align: center;
  text-transform: capitalize;
}

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

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

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

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpc3MvY3NzL2J1aWxkL3N3aXNzLnNob3cubGlnaHQuY3NzIiwic291cmNlcyI6WyJzd2lzcy9jc3MvYnVpbGQvc3dpc3Muc2hvdy5saWdodC5zY3NzIiwiY29tbW9uL2Nzcy90aGVtZS9fbGlnaHQuc2NzcyIsImNvbW1vbi9jc3MvdGhlbWUvX2RlZmF1bHQuc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX2Z1bmN0aW9ucy5zY3NzIiwic3dpc3MvY3NzL2J1aWxkL19zd2lzcy5zaG93LnNjc3MiLCJjb21tb24vY3NzL19wbHVnaW4uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvX2JyZWFrcG9pbnQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fc2V0dGluZ3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fY29udGV4dC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19oZWxwZXJzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX3BhcnNlcnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL19xdWVyeS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3NpbmdsZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvc2luZ2xlL19kZWZhdWx0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fZG91YmxlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQtcGFpci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvZG91YmxlL19kb3VibGUtc3RyaW5nLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL190cmlwbGUuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3RyaXBsZS9fZGVmYXVsdC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3Jlc29sdXRpb24vX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fbm8tcXVlcnkuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fcmVzcG9uZC10by5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19sZWdhY3ktc2V0dGluZ3Muc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX2FsbC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fei1pbmRleC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fbWVkaWEtcXVlcmllcy5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fdmFyaWFibGVzLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L191bmlib2FyZC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fbWl4aW5zLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19leHRlbmRzLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19mbGV4LnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19ib3guc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX2ZsdWlkLXNpemUuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19mYnQuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19iYXItZ2xpZGVyLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fc2xpc3Quc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19xdW90ZS5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX2NvbG9yLWljb24uc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19ub3ctcGxheWluZy5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX3BvZGl1bS5zY3NzIiwiY2hhdC9jc3MvX2NoYXQuc2NzcyIsImNvbW1vbi9jc3MvYmFzZS9fc2Nyb2xsYmFyLnNjc3MiLCJjaGF0L2Nzcy9fdGFiLnNjc3MiLCJjaGF0L2Nzcy9fbWVtYmVycy5zY3NzIiwiY2hhdC9jc3MvX2Rpc2N1c3Npb24uc2NzcyIsImNoYXQvY3NzL19wYWxhbnRpci5zY3NzIiwic3dpc3MvY3NzL19zaG93LnNjc3MiLCJzd2lzcy9jc3MvX2xheW91dC5zY3NzIiwic3dpc3MvY3NzL19zaWRlLnNjc3MiLCJzd2lzcy9jc3MvX2JvYXJkcy5zY3NzIiwic3dpc3MvY3NzL19hcHAtaGVhZGVyLnNjc3MiLCJzd2lzcy9jc3MvX2FwcC1ub3RpY2Uuc2NzcyIsInN3aXNzL2Nzcy9fYXBwLWNvbnRyb2wuc2NzcyIsInN3aXNzL2Nzcy9fYXBwLXN0YW5kaW5nLnNjc3MiLCJzd2lzcy9jc3MvX3N0YXRzLnNjc3MiLCJzd2lzcy9jc3MvX3BsYXllci1pbmZvLnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCBcIi4uLy4uLy4uL2NvbW1vbi9jc3MvdGhlbWUvbGlnaHRcIjtcbkBpbXBvcnQgXCJzd2lzcy5zaG93XCI7XG4iLCJAaW1wb3J0IFwiZGVmYXVsdFwiO1xuXG4kdGhlbWU6IFwibGlnaHRcIjtcbiR0aGVtZS1saWdodDogdHJ1ZTtcbiR0aGVtZS1kYXJrOiBmYWxzZTtcblxuJGMtYmctcGFnZTogaHNsKDAsIDAlLCAxMDAlKTtcbiRjLWJnLXBhZ2UtaW1nOiB1cmwoLi4vaW1hZ2VzL21vc2Nvdy1jaGVzc19wYXR0ZXJuX2xpZ2h0X2FuZ2xlZC0wMS5wbmcpO1xuJGMtYmctcGFnZS1iczogMTAlO1xuXG5AbWl4aW4gbWV0YWwtYmcge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBoc2woMCwgMCwgOTYpIDAlLCBoc2woMCwgMCwgOTMpIDEwMCUpO1xufVxuXG5AbWl4aW4gbWV0YWwge1xuICBAaW5jbHVkZSBtZXRhbC1iZztcblxuICB0ZXh0LXNoYWRvdzogJHRleHQtc2hhZG93O1xufVxuXG5AbWl4aW4gbWV0YWwtaG92ZXIge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBoc2woMCwgMCwgOTgpIDAlLCBoc2woMCwgMCwgOTUpIDEwMCUpO1xuICB0ZXh0LXNoYWRvdzogJHRleHQtc2hhZG93O1xufVxuXG5AbWl4aW4gcGFnZS1tZXRhbCB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIG1peCgkYy1saW5rLCBoc2woMCwgMCUsIDEwMCUpLCAyMCUpIDAlLCBtaXgoJGMtbGluaywgaHNsKDAsIDAlLCA5NCUpLCAyMCUpIDEwMCUpO1xuICB0ZXh0LXNoYWRvdzogJHRleHQtc2hhZG93O1xufVxuXG5AbWl4aW4gcGFnZS1tZXRhbC1ob3ZlciB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIG1peCgkYy1saW5rLCAjZmZmLCAyNSUpIDAlLCBtaXgoJGMtbGluaywgYy1saWdodCgkYy1iZy1wYWdlLCA5MCUpLCAyNSUpIDEwMCUpO1xuICB0ZXh0LXNoYWRvdzogJHRleHQtc2hhZG93O1xufVxuXG5AbWl4aW4gdGhlbWUtc3R5bGUge31cbiIsIkBpbXBvcnQgXCIuLi9hYnN0cmFjdC9mdW5jdGlvbnNcIjtcblxuLyogQ29sb3JzICovXG5cbkBmdW5jdGlvbiBjLWRpbW1lcigkY29sb3IsICR3ZWlnaHQ6IDE3JSkge1xuICBAcmV0dXJuIG1peCgjZmZmLCAkY29sb3IsICR3ZWlnaHQpO1xufVxuXG5AZnVuY3Rpb24gYy1jbGVhcmVyKCRjb2xvciwgJHdlaWdodDogMTclKSB7XG4gIEByZXR1cm4gbWl4KCMwMDAsICRjb2xvciwgJHdlaWdodCk7XG59XG5cbiRjLXNpdGUtaHVlOiAzNztcblxuJGMtYmctcGFnZTogaHNsKCRjLXNpdGUtaHVlLCAxMCUsIDkyJSk7XG5cbiRjLWJnLXBhZ2UtaW1nOiBub25lO1xuJGMtYmctcGFnZS1iczogYXV0bztcblxuLy8gaHNsKDIxMCwgMTclLCA5NSUpXG4kYy1iZy1oaWdoOiBoc2woMCwgMCUsIDEwMCUpO1xuJGMtYmctbG93OiBoc2woMCwgMCUsIDg5JSk7XG5cbi8qIGV2ZW4gcm93cyBpbiBsaXN0IG9yIHRhYmxlcywgc3VidGxlIHNoYWRlIG9mICRjLWJnLWhpZ2ggKi9cbiRjLWJnLXplYnJhOiBoc2woJGMtc2l0ZS1odWUsIDEyJSwgOTYuNSUpO1xuJGMtYmctemVicmEyOiBoc2woJGMtc2l0ZS1odWUsIDEyJSwgOTIlKTtcblxuJGMtYm9keS1ncmFkaWVudDogaHNsKCRjLXNpdGUtaHVlLCAxMiUsIDg0JSk7XG5cbiRjLWZvbnQ6IGhzbCgwLCAwJSwgMzAlKTtcbiRjLWZvbnQtZGltOiBjLWxpZ2h0KCRjLWZvbnQsIDQ3JSk7XG4kYy1mb250LWRpbW1lcjogYy1saWdodCgkYy1mb250LCA3MCUpO1xuJGMtZm9udC1jbGVhcjogYy1saWdodCgkYy1mb250LCAxMiUpO1xuJGMtZm9udC1jbGVhcmVyOiBjLWxpZ2h0KCRjLWZvbnQsIDAlKTtcbiRjLXNoYWRlOiBjLWRpbW1lcigkYy1mb250LCA4MCUpO1xuJGMtZm9udC1wYWdlOiBjLWxpZ2h0KCRjLWZvbnQsIDM3JSk7XG5cbi8qIFByaW1hcnk6IGJsdWUgKi9cbiRjLXByaW1hcnk6ICNiZDExMWY7XG4kYy1wcmltYXJ5LWRpbTogYy1kaW1tZXIoJGMtcHJpbWFyeSk7XG4kYy1wcmltYXJ5LWNsZWFyOiBjLWNsZWFyZXIoJGMtcHJpbWFyeSk7XG4kYy1wcmltYXJ5LW92ZXI6ICNmZmY7XG5cbi8qIHRleHQgb3ZlciBwcmltYXJ5IGJhY2tncm91bmQgKi9cblxuLyogU2Vjb25kYXJ5OiBncmVlbiAqL1xuJGMtc2Vjb25kYXJ5OiBoc2woODgsIDYyJSwgMzclKTtcbiRjLXNlY29uZGFyeS1kaW06IGMtZGltbWVyKCRjLXNlY29uZGFyeSk7XG4kYy1zZWNvbmRhcnktZGltbWVyOiBjLWRpbW1lcigkYy1zZWNvbmRhcnksIDQwJSk7XG4kYy1zZWNvbmRhcnktb3ZlcjogI2ZmZjtcblxuLyogdGV4dCBvdmVyIHNlY29uZGFyeSBiYWNrZ3JvdW5kICovXG5cbi8qIEFjY2VudDogb3JhbmdlICovXG4kYy1hY2NlbnQ6ICNiZDExMWY7XG4kYy1hY2NlbnQtZGltOiBjLWRpbW1lcigkYy1hY2NlbnQpO1xuJGMtYWNjZW50LWNsZWFyOiBjLWNsZWFyZXIoJGMtYWNjZW50KTtcbiRjLWFjY2VudC1vdmVyOiAjZmZmO1xuXG4vKiB0ZXh0IG92ZXIgYWNjZW50IGJhY2tncm91bmQgKi9cblxuLyogQnJhZzogZ29sZCAqL1xuJGMtYnJhZzogaHNsKDM3LCA3NCUsIDQ4JSk7XG4kYy1icmFnLW92ZXI6ICNmZmY7XG5cbi8qIHRleHQgb3ZlciBicmFnIGJhY2tncm91bmQgKi9cblxuLyogRXJyb3I6IHJlZCAqL1xuJGMtcmVkOiBoc2woMCwgNjAlLCA1MCUpO1xuJGMtZXJyb3I6ICRjLXJlZDtcbiRjLWVycm9yLW92ZXI6ICNmZmY7XG5cbi8qIHRleHQgb3ZlciBicmFnIGJhY2tncm91bmQgKi9cblxuLyogR29vZDogZ3JlZW4gKi9cbiRjLWdvb2Q6ICRjLXNlY29uZGFyeTtcbiRjLWdvb2Qtb3ZlcjogJGMtc2Vjb25kYXJ5LW92ZXI7XG5cbi8qIFdhcm46IG9yYW5nZSAqL1xuJGMtd2FybjogJGMtYnJhZztcbiRjLXdhcm4tb3ZlcjogJGMtYnJhZy1vdmVyO1xuXG4vKiBCYWQ6IHJlZCAqL1xuJGMtYmFkOiAkYy1lcnJvcjtcbiRjLWJhZC1vdmVyOiAkYy1lcnJvci1vdmVyO1xuXG4vKiBGYW5jeTogcGluayAqL1xuJGMtZmFuY3k6IGhzbCgyOTQsIDYxJSwgNjIlKTtcbiRjLWZhbmN5LW92ZXI6IHdoaXRlO1xuXG4vKiB0ZXh0IG92ZXIgYnJhZyBiYWNrZ3JvdW5kICovXG5cbiRjLWxpbms6ICRjLXByaW1hcnk7XG4kYy1saW5rLWRpbTogJGMtcHJpbWFyeS1kaW07XG4kYy1saW5rLWNsZWFyOiAkYy1wcmltYXJ5LWNsZWFyO1xuJGMtbGluay1ob3ZlcjogYy1jbGVhcmVyKHNhdHVyYXRlKCRjLXByaW1hcnksIDEwMCUpLCAzNSUpO1xuJGMtbGluay1vdmVyOiAkYy1wcmltYXJ5LW92ZXI7XG5cbiRjLWJnLWJveDogJGMtYmctaGlnaDtcbiRjLWJnLWJveC1vcGFxdWU6ICRjLWJnLWJveDtcbiRjLWJnLWlucHV0OiBjLWxpZ2h0KCRjLWJnLXBhZ2UsIDk4JSk7XG5cbiRjLWJvcmRlcjogaHNsKDAsIDAlLCA4NSUpO1xuJGMtYm9yZGVyLXBhZ2U6IGhzbCgwLCAwJSwgODAlKTtcblxuJGMtcGFnZS1tYXNrOiBoc2xhKDAsIDAsIDAlLCAwLjYpO1xuXG4kYy1iZy1wb3B1cDogJGMtYmctaGlnaDtcbiRjLXBvcHVwOiAkYy1mb250O1xuXG4kYy1iZy1oZWFkZXItZHJvcGRvd246ICRjLWJnLXBvcHVwO1xuJGMtaGVhZGVyLWRyb3Bkb3duOiAkYy1wb3B1cDtcblxuJGMtZm9udC1zaGFkb3c6IHdoaXRlO1xuJHRleHQtc2hhZG93OiAwIDFweCAwICRjLWZvbnQtc2hhZG93O1xuXG4kYy1ib3Q6ICRjLWZhbmN5O1xuXG4kYy1wYWdlLWlucHV0OiAkYy1iZy1sb3c7XG5cbi8qIEJvcmRlcnMgKi9cblxuJGJvcmRlci13aWR0aDogMXB4O1xuJGJvcmRlci1zdHlsZTogc29saWQ7XG4kYm9yZGVyOiAkYm9yZGVyLXdpZHRoICRib3JkZXItc3R5bGUgJGMtYm9yZGVyO1xuXG4vKiBTaGFkb3dzICovXG5cbiRib3gtc2hhZG93OiAwIDJweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksIDAgMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4xMik7XG5cbi8vICRib3gtc2hhZG93OiAwIDJweCAycHggMCByZ2JhKDAsMCwwLC4xNTcpO1xuXG4vKiBDdXN0b20gKi9cbiR3YXJuaW5nLWljb24tY29sb3I6IGhzbCg0NCwgMTAwJSwgNDYlKTtcbiIsIkBmdW5jdGlvbiBjLWxpZ2h0KCRjb2xvciwgJHZhbHVlKSB7XG4gIEByZXR1cm4gY2hhbmdlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJHZhbHVlKTtcbn1cblxuQGZ1bmN0aW9uIGltZy11cmwoJHBhdGgpIHtcbiAgQHJldHVybiB1cmwoXCIjeyRpbWctcGF0aH0vI3skcGF0aH1cIik7XG59XG4iLCJAaW1wb3J0IFwiLi4vLi4vLi4vY29tbW9uL2Nzcy9wbHVnaW5cIjtcbkBpbXBvcnQgXCIuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9mYnRcIjtcbkBpbXBvcnQgXCIuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9iYXItZ2xpZGVyXCI7XG5AaW1wb3J0IFwiLi4vLi4vLi4vY29tbW9uL2Nzcy9jb21wb25lbnQvc2xpc3RcIjtcbkBpbXBvcnQgXCIuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9xdW90ZVwiO1xuQGltcG9ydCBcIi4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L2NvbG9yLWljb25cIjtcbkBpbXBvcnQgXCIuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9ub3ctcGxheWluZ1wiO1xuQGltcG9ydCBcIi4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L3BvZGl1bVwiO1xuQGltcG9ydCBcIi4uLy4uLy4uL2NoYXQvY3NzL2NoYXRcIjtcbkBpbXBvcnQgXCIuLi9zaG93XCI7XG4iLCIvKiBDb21tb24gaW1wb3J0cyBmb3IgYWxsIENTUyBtb2R1bGVzICovXG5cbkBpbXBvcnQgXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnRcIjtcblxuQGltcG9ydCBcImFic3RyYWN0L2FsbFwiO1xuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEZWZhdWx0IFZhcmlhYmxlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kQnJlYWtwb2ludC1TZXR0aW5nczogKFxuICAnZGVmYXVsdCBtZWRpYSc6IGFsbCxcbiAgJ2RlZmF1bHQgZmVhdHVyZSc6IG1pbi13aWR0aCxcbiAgJ2RlZmF1bHQgcGFpcic6IHdpZHRoLFxuXG4gICdmb3JjZSBhbGwgbWVkaWEgdHlwZSc6IGZhbHNlLFxuICAndG8gZW1zJzogZmFsc2UsXG4gICd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnOiB0cnVlLFxuXG4gICdubyBxdWVyaWVzJzogZmFsc2UsXG4gICdubyBxdWVyeSBmYWxsYmFja3MnOiBmYWxzZSxcblxuICAnYmFzZSBmb250IHNpemUnOiAxNnB4LFxuXG4gICdsZWdhY3kgc3ludGF4JzogZmFsc2Vcbik7XG5cbiRicmVha3BvaW50OiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJicmVha3BvaW50L3NldHRpbmdzXCI7XG5AaW1wb3J0ICdicmVha3BvaW50L2NvbnRleHQnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9oZWxwZXJzJztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvcGFyc2Vycyc7XG5AaW1wb3J0ICdicmVha3BvaW50L25vLXF1ZXJ5JztcblxuQGltcG9ydCAnYnJlYWtwb2ludC9yZXNwb25kLXRvJztcblxuQGltcG9ydCBcImJyZWFrcG9pbnQvbGVnYWN5LXNldHRpbmdzXCI7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaW5jbHVkZSBsZWdhY3ktc2V0dGluZ3Mtd2FybmluZztcblxuICAvLyBSZXNldCBjb250ZXh0c1xuICBAaW5jbHVkZSBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMoKTtcblxuICAkYnJlYWtwb2ludDogYnJlYWtwb2ludCgkcXVlcnksIGZhbHNlKTtcblxuICAkcXVlcnktc3RyaW5nOiBtYXAtZ2V0KCRicmVha3BvaW50LCAncXVlcnknKTtcbiAgJHF1ZXJ5LWZhbGxiYWNrOiBtYXAtZ2V0KCRicmVha3BvaW50LCAnZmFsbGJhY2snKTtcblxuICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtZ2V0KCRicmVha3BvaW50LCAnY29udGV4dCBob2xkZXInKSAhZ2xvYmFsO1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiBtYXAtZ2V0KCRicmVha3BvaW50LCAncXVlcnkgY291bnQnKSAhZ2xvYmFsO1xuXG4gIC8vIEFsbG93IGZvciBhbiBhcy1uZWVkZWQgb3ZlcnJpZGUgb3IgdXNhZ2Ugb2Ygbm8gcXVlcnkgZmFsbGJhY2suXG4gIEBpZiAkbm8tcXVlcnkgIT0gZmFsc2Uge1xuICAgICRxdWVyeS1mYWxsYmFjazogJG5vLXF1ZXJ5O1xuICB9XG5cbiAgQGlmICRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSB7XG4gICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJ25vLXF1ZXJ5JywgJHF1ZXJ5LWZhbGxiYWNrKTtcbiAgfVxuXG4gIC8vIFByaW50IE91dCBRdWVyeSBTdHJpbmdcbiAgQGlmIG5vdCBicmVha3BvaW50LWdldCgnbm8gcXVlcmllcycpIHtcbiAgICBAbWVkaWEgI3skcXVlcnktc3RyaW5nfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpICE9IGZhbHNlIG9yIGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykgPT0gdHJ1ZSB7XG5cbiAgICAkdHlwZTogdHlwZS1vZihicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykpO1xuICAgICRwcmludDogZmFsc2U7XG5cbiAgICBAaWYgKCR0eXBlID09ICdib29sJykge1xuICAgICAgJHByaW50OiB0cnVlO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoJHR5cGUgPT0gJ3N0cmluZycpIHtcbiAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgPT0gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpIHtcbiAgICAgICAgJHByaW50OiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSBpZiAoJHR5cGUgPT0gJ2xpc3QnKSB7XG4gICAgICBAZWFjaCAkd3JhcHBlciBpbiBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgICAgICBAaWYgJHF1ZXJ5LWZhbGxiYWNrID09ICR3cmFwcGVyIHtcbiAgICAgICAgICAkcHJpbnQ6IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBXcml0ZSBGYWxsYmFja1xuICAgIEBpZiAoJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlKSBhbmQgKCRwcmludCA9PSB0cnVlKSB7XG4gICAgICAkdHlwZS1mYWxsYmFjazogdHlwZS1vZigkcXVlcnktZmFsbGJhY2spO1xuXG4gICAgICBAaWYgKCR0eXBlLWZhbGxiYWNrICE9ICdib29sJykge1xuICAgICAgICAjeyRxdWVyeS1mYWxsYmFja30gJiB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgcHJpdmF0ZS1icmVha3BvaW50LXJlc2V0LWNvbnRleHRzKCk7XG59XG5cblxuQG1peGluIG1xKCRxdWVyeSwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSGFzIFNldHRpbmdcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaGFzKCRzZXR0aW5nKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludCwgJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtZ2V0KCRzZXR0aW5nKSB7XG4gIEBpZiBicmVha3BvaW50LWhhcygkc2V0dGluZykge1xuICAgIEByZXR1cm4gbWFwLWdldCgkYnJlYWtwb2ludCwgJHNldHRpbmcpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJEJyZWFrcG9pbnQtU2V0dGluZ3MsICRzZXR0aW5nKTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaWYgKHN0ci1pbmRleCgkc2V0dGluZywgJy0nKSBvciBzdHItaW5kZXgoJHNldHRpbmcsICdfJykpIGFuZCBzdHItaW5kZXgoJHNldHRpbmcsICcgJykgPT0gbnVsbCB7XG4gICAgQHdhcm4gXCJXb3JkcyBpbiBCcmVha3BvaW50IHNldHRpbmdzIHNob3VsZCBiZSBzZXBhcmF0ZWQgYnkgc3BhY2VzLCBub3QgZGFzaGVzIG9yIHVuZGVyc2NvcmVzLiBQbGVhc2UgcmVwbGFjZSBkYXNoZXMgYW5kIHVuZGVyc2NvcmVzIGJldHdlZW4gd29yZHMgd2l0aCBzcGFjZXMuIFNldHRpbmdzIHdpbGwgbm90IHdvcmsgYXMgZXhwZWN0ZWQgdW50aWwgY2hhbmdlZC5cIjtcbiAgfVxuICAkYnJlYWtwb2ludDogbWFwLW1lcmdlKCRicmVha3BvaW50LCAoJHNldHRpbmc6ICR2YWx1ZSkpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJGJyZWFrcG9pbnQtY2hhbmdlOiBicmVha3BvaW50LXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIGJyZWFrcG9pbnQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiBia3B0LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuQG1peGluIGJrcHQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmVtb3ZlIFNldHRpbmdcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJHNldHRpbmdzKSA9PSAxIHtcbiAgICAkc2V0dGluZ3M6IG50aCgkc2V0dGluZ3MsIDEpO1xuICB9XG5cbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkYnJlYWtwb2ludDogbWFwLXJlbW92ZSgkYnJlYWtwb2ludCwgJHNldHRpbmcpICFnbG9iYWw7XG4gIH1cbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MuLi4pIHtcbiAgJGJyZWFrcG9pbnQtcmVzZXQ6IGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzKTtcbn1cblxuQG1peGluIGJrcHQtcmVzZXQoJHNldHRpbmdzLi4uKSB7XG4gICRicmVha3BvaW50LXJlc2V0OiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncyk7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIEJyZWFrcG9pbnQgVmFyaWFibGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpO1xuJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IEhhcyBDb250ZXh0XG4vLyBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHlvdSBhcmUgaW5zaWRlIGEgQnJlYWtwb2ludCBxdWVyeVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1oYXMtY29udGV4dCgpIHtcbiAgQGlmIGxlbmd0aCgkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50KSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBHZXQgQ29udGV4dFxuLy8gJGZlYXR1cmU6IElucHV0IGZlYXR1cmUgdG8gZ2V0IGl0J3MgY3VycmVudCBNUSBjb250ZXh0LiBSZXR1cm5zIGZhbHNlIGlmIG5vIGNvbnRleHRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtZ2V0LWNvbnRleHQoJGZlYXR1cmUpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKSB7XG4gICAgJGdldDogbWFwLWdldCgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSk7XG4gICAgLy8gU3BlY2lhbCBoYW5kbGluZyBvZiBuby1xdWVyeSBmcm9tIGdldCBzaWRlIHNvIC9mYWxzZS8gcHJlcGVuZHMgYXJlbid0IHJldHVybmVkXG4gICAgQGlmICRmZWF0dXJlID09ICduby1xdWVyeScge1xuICAgICAgQGlmIHR5cGUtb2YoJGdldCkgPT0gJ2xpc3QnIGFuZCBsZW5ndGgoJGdldCkgPiAxIGFuZCBudGgoJGdldCwgMSkgPT0gZmFsc2Uge1xuICAgICAgICAkZ2V0OiBudGgoJGdldCwgbGVuZ3RoKCRnZXQpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQHJldHVybiAkZ2V0O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgYnJlYWtwb2ludC1oYXMtY29udGV4dCgpIGFuZCAkZmVhdHVyZSA9PSAnbWVkaWEnIHtcbiAgICAgIEByZXR1cm4gYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIGZ1bmN0aW9uIHRvIHNldCBjb250ZXh0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICR2YWx1ZSkge1xuICBAaWYgJHZhbHVlID09ICdtb25vY2hyb21lJyB7XG4gICAgJGZlYXR1cmU6ICdtb25vY2hyb21lJztcbiAgfVxuXG4gICRjdXJyZW50OiBtYXAtZ2V0KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKTtcbiAgQGlmICRjdXJyZW50IGFuZCBsZW5ndGgoJGN1cnJlbnQpID09ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgIEB3YXJuIFwiWW91IGhhdmUgYWxyZWFkeSBxdWVyaWVkIGFnYWluc3QgYCN7JGZlYXR1cmV9YC4gVW5leHBlY3RlZCB0aGluZ3MgbWF5IGhhcHBlbiBpZiB5b3UgcXVlcnkgYWdhaW5zdCB0aGUgc2FtZSBmZWF0dXJlIG1vcmUgdGhhbiBvbmNlIGluIHRoZSBzYW1lIGBhbmRgIHF1ZXJ5LiBCcmVha3BvaW50IGlzIG92ZXJ3cml0aW5nIHRoZSBjdXJyZW50IGNvbnRleHQgd2l0aCBgI3skdmFsdWV9YFwiO1xuICB9XG5cbiAgQGlmIG5vdCBtYXAtaGFzLWtleSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSkge1xuICAgICR2LWhvbGRlcjogKCk7XG4gICAgQGZvciAkaSBmcm9tIDEgdG8gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgICBAaWYgJGZlYXR1cmUgPT0gJ21lZGlhJyB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsICR2YWx1ZSk7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLW1lcmdlKCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICgkZmVhdHVyZTogJHYtaG9sZGVyKSkgIWdsb2JhbDtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHYtaG9sZGVyOiBtYXAtZ2V0KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKTtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJHYtaG9sZGVyKTtcbiAgICBAZm9yICRpIGZyb20gJGxlbmd0aCB0byAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IC0gMSB7XG4gICAgICBAaWYgJGZlYXR1cmUgPT0gJ21lZGlhJyB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsICR2YWx1ZSk7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLW1lcmdlKCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICgkZmVhdHVyZTogJHYtaG9sZGVyKSkgIWdsb2JhbDtcbiAgfVxuXG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIGZ1bmN0aW9uIHRvIHJlc2V0IGNvbnRleHRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHByaXZhdGUtYnJlYWtwb2ludC1yZXNldC1jb250ZXh0cyB7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpICFnbG9iYWw7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWdsb2JhbDtcbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbnZlcnRzIHRoZSBpbnB1dCB2YWx1ZSB0byBCYXNlIEVNc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC10by1iYXNlLWVtKCR2YWx1ZSkge1xuICAkdmFsdWUtdW5pdDogdW5pdCgkdmFsdWUpO1xuXG4gIC8vIFdpbGwgY29udmVydCByZWxhdGl2ZSBFTXMgaW50byByb290IEVNcy5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpIGFuZCB0eXBlLW9mKGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpKSA9PSAnbnVtYmVyJyBhbmQgJHZhbHVlLXVuaXQgPT0gJ2VtJyB7XG4gICAgJGJhc2UtdW5pdDogdW5pdChicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSk7XG5cbiAgICBAaWYgJGJhc2UtdW5pdCA9PSAncHgnIG9yICRiYXNlLXVuaXQgPT0gJyUnIG9yICRiYXNlLXVuaXQgPT0gJ2VtJyBvciAkYmFzZS11bml0ID09ICdwdCcge1xuICAgICAgQHJldHVybiBiYXNlLWNvbnZlcnNpb24oJHZhbHVlKSAvIGJhc2UtY29udmVyc2lvbihicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSkgKiAxZW07XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICcje2JyZWFrcG9pbnQtZ2V0KFxcJ2Jhc2UgZm9udCBzaXplXFwnKX0gaXMgbm90IHNldCBpbiB2YWxpZCB1bml0cyBmb3IgZm9udCBzaXplISc7XG4gICAgICBAcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBiYXNlLWNvbnZlcnNpb24oJHZhbHVlKTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gYmFzZS1jb252ZXJzaW9uKCR2YWx1ZSkge1xuICAkdW5pdDogdW5pdCgkdmFsdWUpO1xuXG4gIEBpZiAkdW5pdCA9PSAncHgnIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIDE2cHggKiAxZW07XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJyUnIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIDEwMCUgKiAxZW07XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJ2VtJyB7XG4gICAgQHJldHVybiAkdmFsdWU7XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJ3B0JyB7XG4gICAgQHJldHVybiAkdmFsdWUgLyAxMnB0ICogMWVtO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICR2YWx1ZTtcbi8vICAgIEB3YXJuICdFdmVyeXRoaW5nIGlzIHRlcnJpYmxlISBXaGF0IGhhdmUgeW91IGRvbmU/ISc7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgY2FuIGhhdmUgYSBtaW4vbWF4IHBhaXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtbWluLW1heC1mZWF0dXJlczogJ2NvbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvci1pbmRleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2UtYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2UtaGVpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2Utd2lkdGgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9ub2Nocm9tZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVzb2x1dGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2lkdGgnO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4tbWF4KCRmZWF0dXJlKSB7XG4gIEBlYWNoICRpdGVtIGluICRicmVha3BvaW50LW1pbi1tYXgtZmVhdHVyZXMge1xuICAgIEBpZiAkZmVhdHVyZSA9PSAkaXRlbSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGNhbiBoYXZlIGEgc3RyaW5nIHZhbHVlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LXN0cmluZy1mZWF0dXJlczogICdvcmllbnRhdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NhbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLWFzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbHVtaW5vc2l0eSc7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXN0cmluZy12YWx1ZSgkZmVhdHVyZSkge1xuICBAZWFjaCAkaXRlbSBpbiAkYnJlYWtwb2ludC1zdHJpbmctZmVhdHVyZXMge1xuICAgIEBpZiBicmVha3BvaW50LW1pbi1tYXgoJGl0ZW0pIHtcbiAgICAgIEBpZiAkZmVhdHVyZSA9PSAnbWluLSN7JGl0ZW19JyBvciAkZmVhdHVyZSA9PSAnbWF4LSN7JGl0ZW19JyB7XG4gICAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2UgaWYgJGZlYXR1cmUgPT0gJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBpcyBhIG1lZGlhIHR5cGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtbWVkaWEtdHlwZXM6ICAnYWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JyYWlsbGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnZW1ib3NzZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFuZGhlbGQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAncHJpbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvamVjdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdzY3JlZW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnc3BlZWNoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R0eScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICd0dic7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LWlzLW1lZGlhKCRmZWF0dXJlKSB7XG4gIEBlYWNoICRtZWRpYSBpbiAkYnJlYWtwb2ludC1tZWRpYS10eXBlcyB7XG4gICAgQGlmICgkZmVhdHVyZSA9PSAkbWVkaWEpIG9yICgkZmVhdHVyZSA9PSAnbm90ICN7JG1lZGlhfScpIG9yICgkZmVhdHVyZSA9PSAnb25seSAjeyRtZWRpYX0nKSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgY2FuIHN0YW5kIGFsb25lXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LXNpbmdsZS1zdHJpbmctZmVhdHVyZXM6ICdjb2xvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3ItaW5kZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dyaWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vbm9jaHJvbWUnO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRmZWF0dXJlKSB7XG4gIEBlYWNoICRpdGVtIGluICRicmVha3BvaW50LXNpbmdsZS1zdHJpbmctZmVhdHVyZXMge1xuICAgIEBpZiAkZmVhdHVyZSA9PSAkaXRlbSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWlzLXJlc29sdXRpb24oJGZlYXR1cmUpIHtcbiAgJHJlc29sdXRpb25zOiAnZGV2aWNlLXBpeGVsLXJhdGlvJywgJ2Rwcic7XG5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnKSB7XG4gICAgJHJlc29sdXRpb25zOiBhcHBlbmQoJHJlc29sdXRpb25zLCAncmVzb2x1dGlvbicpO1xuICB9XG5cbiAgQGVhY2ggJHJlc28gaW4gJHJlc29sdXRpb25zIHtcbiAgICBAaWYgaW5kZXgoJGZlYXR1cmUsICRyZXNvKSBvciBpbmRleCgkZmVhdHVyZSwgJ21pbi0jeyRyZXNvfScpIG9yIGluZGV4KCRmZWF0dXJlLCAnbWF4LSN7JHJlc299Jykge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gZmFsc2U7XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQYXJzZXIgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJwYXJzZXJzL3F1ZXJ5XCI7XG5AaW1wb3J0IFwicGFyc2Vycy9zaW5nbGVcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL2RvdWJsZVwiO1xuQGltcG9ydCBcInBhcnNlcnMvdHJpcGxlXCI7XG5AaW1wb3J0IFwicGFyc2Vycy9yZXNvbHV0aW9uXCI7XG5cbiRNZW1vLUV4aXN0czogZnVuY3Rpb24tZXhpc3RzKG1lbW8tZ2V0KSBhbmQgZnVuY3Rpb24tZXhpc3RzKG1lbW8tc2V0KTtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IEZ1bmN0aW9uXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50KCRxdWVyeSwgJGNvbnRleHRzLi4uKSB7XG4gICRydW46IHRydWU7XG4gICRyZXR1cm46ICgpO1xuXG4gIC8vIEdyYWIgdGhlIE1lbW8gT3V0cHV0IGlmIE1lbW9pemF0aW9uIGNhbiBiZSBhIHRoaW5nXG4gIEBpZiAkTWVtby1FeGlzdHMge1xuICAgICRyZXR1cm46IG1lbW8tZ2V0KGJyZWFrcG9pbnQsIGJyZWFrcG9pbnQgJHF1ZXJ5ICRjb250ZXh0cyk7XG5cbiAgICBAaWYgJHJldHVybiAhPSBudWxsIHtcbiAgICAgICRydW46IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBub3QgJE1lbW8tRXhpc3RzIG9yICRydW4ge1xuICAgIC8vIEludGVybmFsIFZhcmlhYmxlc1xuICAgICRxdWVyeS1zdHJpbmc6ICcnO1xuICAgICRxdWVyeS1mYWxsYmFjazogZmFsc2U7XG4gICAgJHJldHVybjogKCk7XG5cbiAgICAvLyBSZXNlcnZlIEdsb2JhbCBQcml2YXRlIEJyZWFrcG9pbnQgQ29udGV4dFxuICAgICRob2xkZXItY29udGV4dDogJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjtcbiAgICAkaG9sZGVyLXF1ZXJ5LWNvdW50OiAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50O1xuXG4gICAgLy8gUmVzZXQgR2xvYmFsIFByaXZhdGUgQnJlYWtwb2ludCBDb250ZXh0XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCkgIWdsb2JhbDtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFnbG9iYWw7XG5cblxuICAgIC8vIFRlc3QgdG8gc2VlIGlmIGl0J3MgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdFxuICAgICRvci1saXN0OiBpZihsaXN0LXNlcGFyYXRvcigkcXVlcnkpID09ICdjb21tYScsIHRydWUsIGZhbHNlKTtcblxuXG4gICAgQGlmICgkb3ItbGlzdCA9PSBmYWxzZSBhbmQgYnJlYWtwb2ludC1nZXQoJ2xlZ2FjeSBzeW50YXgnKSA9PSBmYWxzZSkge1xuICAgICAgJHF1ZXJ5LXN0cmluZzogYnJlYWtwb2ludC1wYXJzZSgkcXVlcnkpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkbGVuZ3RoOiBsZW5ndGgoJHF1ZXJ5KTtcblxuICAgICAgJGxhc3Q6IG50aCgkcXVlcnksICRsZW5ndGgpO1xuICAgICAgJHF1ZXJ5LWZhbGxiYWNrOiBicmVha3BvaW50LW5vLXF1ZXJ5KCRsYXN0KTtcblxuICAgICAgQGlmICgkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2UpIHtcbiAgICAgICAgJGxlbmd0aDogJGxlbmd0aCAtIDE7XG4gICAgICB9XG5cbiAgICAgIEBpZiAoYnJlYWtwb2ludC1nZXQoJ2xlZ2FjeSBzeW50YXgnKSA9PSB0cnVlKSB7XG4gICAgICAgICRtcTogKCk7XG5cbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAgICAgICAkbXE6IGFwcGVuZCgkbXEsIG50aCgkcXVlcnksICRpKSwgY29tbWEpO1xuICAgICAgICB9XG5cbiAgICAgICAgJHF1ZXJ5LXN0cmluZzogYnJlYWtwb2ludC1wYXJzZSgkbXEpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcXVlcnktc3RyaW5nOiAnJztcbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAgICAgICAkcXVlcnktc3RyaW5nOiAkcXVlcnktc3RyaW5nICsgaWYoJGkgPT0gMSwgJycsICcsICcpICsgYnJlYWtwb2ludC1wYXJzZShudGgoJHF1ZXJ5LCAkaSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJHJldHVybjogKCdxdWVyeSc6ICRxdWVyeS1zdHJpbmcsXG4gICAgICAgICdmYWxsYmFjayc6ICRxdWVyeS1mYWxsYmFjayxcbiAgICAgICAgJ2NvbnRleHQgaG9sZGVyJzogJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcixcbiAgICAgICAgJ3F1ZXJ5IGNvdW50JzogJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudFxuICAgICk7XG4gICAgQGlmIGxlbmd0aCgkY29udGV4dHMpID4gMCBhbmQgbnRoKCRjb250ZXh0cywgMSkgIT0gZmFsc2Uge1xuICAgICAgQGlmICRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSB7XG4gICAgICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCduby1xdWVyeScsICRxdWVyeS1mYWxsYmFjayk7XG4gICAgICB9XG4gICAgICAkY29udGV4dC1tYXA6ICgpO1xuICAgICAgQGVhY2ggJGNvbnRleHQgaW4gJGNvbnRleHRzIHtcbiAgICAgICAgJGNvbnRleHQtbWFwOiBtYXAtbWVyZ2UoJGNvbnRleHQtbWFwLCAoJGNvbnRleHQ6IGJyZWFrcG9pbnQtZ2V0LWNvbnRleHQoJGNvbnRleHQpKSk7XG4gICAgICB9XG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgKGNvbnRleHQ6ICRjb250ZXh0LW1hcCkpO1xuICAgIH1cblxuICAgIC8vIFJlc2V0IEdsb2JhbCBQcml2YXRlIEJyZWFrcG9pbnQgQ29udGV4dFxuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpICFnbG9iYWw7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZ2xvYmFsO1xuXG4gICAgQGlmICRNZW1vLUV4aXN0cyB7XG4gICAgICAkaG9sZGVyOiBtZW1vLXNldChicmVha3BvaW50LCBicmVha3BvaW50ICRxdWVyeSAkY29udGV4dHMsICRyZXR1cm4pO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZW5lcmFsIEJyZWFrcG9pbnQgUGFyc2VyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlKCRxdWVyeSkge1xuICAvLyBJbmNyZWFzZSBudW1iZXIgb2YgJ2FuZCcgcXVlcmllc1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50ICsgMSAhZ2xvYmFsO1xuXG4gIC8vIFNldCB1cCBNZWRpYSBUeXBlXG4gICRxdWVyeS1wcmludDogJyc7XG5cbiAgJGZvcmNlLWFsbDogKChicmVha3BvaW50LWdldCgnZm9yY2UgYWxsIG1lZGlhIHR5cGUnKSA9PSB0cnVlKSBhbmQgKGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykgPT0gJ2FsbCcpKTtcbiAgJGVtcHR5LW1lZGlhOiB0cnVlO1xuICBAaWYgKCRmb3JjZS1hbGwgPT0gdHJ1ZSkgb3IgKGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykgIT0gJ2FsbCcpIHtcbiAgICAvLyBGb3JjZSB0aGUgcHJpbnQgb2YgdGhlIGRlZmF1bHQgbWVkaWEgdHlwZSBpZiAoZm9yY2UgYWxsIGlzIHRydWUgYW5kIGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBhbGwpIG9yIChkZWZhdWx0IG1lZGlhIHR5cGUgaXMgbm90IGFsbClcbiAgICAkcXVlcnktcHJpbnQ6IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJyk7XG4gICAgJGVtcHR5LW1lZGlhOiBmYWxzZTtcbiAgfVxuXG5cbiAgJHF1ZXJ5LXJlc29sdXRpb246IGZhbHNlO1xuXG4gICRxdWVyeS1ob2xkZXI6IGJyZWFrcG9pbnQtcGFyc2UtcXVlcnkoJHF1ZXJ5KTtcblxuXG5cbiAgLy8gTG9vcCBvdmVyIGVhY2ggcGFyc2VkIG91dCBxdWVyeSBhbmQgd3JpdGUgaXQgdG8gJHF1ZXJ5LXByaW50XG4gICRmaXJzdDogdHJ1ZTtcblxuICBAZWFjaCAkZmVhdHVyZSBpbiAkcXVlcnktaG9sZGVyIHtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJGZlYXR1cmUpO1xuXG4gICAgLy8gUGFyc2UgYSBzaW5nbGUgZmVhdHVyZVxuICAgIEBpZiAoJGxlbmd0aCA9PSAxKSB7XG4gICAgICAvLyBGZWF0dXJlIGlzIGN1cnJlbnRseSBhIGxpc3QsIGdyYWIgdGhlIGFjdHVhbCB2YWx1ZVxuICAgICAgJGZlYXR1cmU6IG50aCgkZmVhdHVyZSwgMSk7XG5cbiAgICAgIC8vIE1lZGlhIFR5cGUgbXVzdCBieSBjb252ZW50aW9uIGJlIHRoZSBmaXJzdCBpdGVtLCBzbyBpdCdzIHNhZmUgdG8gZmxhdCBvdmVycmlkZSAkcXVlcnktcHJpbnQsIHdoaWNoIHJpZ2h0IG5vdyBzaG91bGQgb25seSBiZSB0aGUgZGVmYXVsdCBtZWRpYSB0eXBlXG4gICAgICBAaWYgKGJyZWFrcG9pbnQtaXMtbWVkaWEoJGZlYXR1cmUpKSB7XG4gICAgICAgIEBpZiAoJGZvcmNlLWFsbCA9PSB0cnVlKSBvciAoJGZlYXR1cmUgIT0gJ2FsbCcpIHtcbiAgICAgICAgICAvLyBGb3JjZSB0aGUgcHJpbnQgb2YgdGhlIGRlZmF1bHQgbWVkaWEgdHlwZSBpZiAoZm9yY2UgYWxsIGlzIHRydWUgYW5kIGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBhbGwpIG9yIChkZWZhdWx0IG1lZGlhIHR5cGUgaXMgbm90IGFsbClcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICRmZWF0dXJlO1xuICAgICAgICAgICRlbXB0eS1tZWRpYTogZmFsc2U7XG5cbiAgICAgICAgICAvLyBTZXQgQ29udGV4dFxuICAgICAgICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1lZGlhLCAkcXVlcnktcHJpbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUGFyc2UgYSBkb3VibGUgZmVhdHVyZVxuICAgIEBlbHNlIGlmICgkbGVuZ3RoID09IDIpIHtcbiAgICAgIEBpZiAoYnJlYWtwb2ludC1pcy1yZXNvbHV0aW9uKCRmZWF0dXJlKSAhPSBmYWxzZSkge1xuICAgICAgICAkcXVlcnktcmVzb2x1dGlvbjogJGZlYXR1cmU7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRwYXJzZWQ6IG51bGw7XG4gICAgICAgIC8vIElmIGl0J3MgYSBzdHJpbmcvbnVtYmVyIHBhaXIsXG4gICAgICAgIC8vIHdlIGNoZWNrIHRvIHNlZSBpZiBvbmUgaXMgYSBzaW5nbGUtc3RyaW5nIHZhbHVlLFxuICAgICAgICAvLyB0aGVuIHdlIHBhcnNlIGl0IGFzIGEgbm9ybWFsIGRvdWJsZVxuICAgICAgICAkYWxwaGE6IG50aCgkZmVhdHVyZSwgMSk7XG4gICAgICAgICRiZXRhOiBudGgoJGZlYXR1cmUsIDIpO1xuICAgICAgICBAaWYgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRhbHBoYSkgb3IgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRiZXRhKSB7XG4gICAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGFscGhhLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGJldGEsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUGFyc2UgYSB0cmlwbGUgZmVhdHVyZVxuICAgIEBlbHNlIGlmICgkbGVuZ3RoID09IDMpIHtcbiAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgIH1cblxuICB9XG5cbiAgQGlmICgkcXVlcnktcmVzb2x1dGlvbiAhPSBmYWxzZSkge1xuICAgICRxdWVyeS1wcmludDogYnJlYWtwb2ludC1idWlsZC1yZXNvbHV0aW9uKCRxdWVyeS1wcmludCwgJHF1ZXJ5LXJlc29sdXRpb24sICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgfVxuXG4gIC8vIExvb3AgdGhyb3VnaCBlYWNoIGZlYXR1cmUgdGhhdCdzIGJlZW4gZGV0ZWN0ZWQgc28gZmFyIGFuZCBhcHBlbmQgJ2ZhbHNlJyB0byB0aGUgdGhlIHZhbHVlIGxpc3QgdG8gaW5jcmVtZW50IHRoZWlyIGNvdW50ZXJzXG4gIEBlYWNoICRmLCAkdiBpbiAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyIHtcbiAgICAkdi1ob2xkZXI6ICR2O1xuICAgICRsZW5ndGg6IGxlbmd0aCgkdi1ob2xkZXIpO1xuICAgIEBpZiBsZW5ndGgoJHYtaG9sZGVyKSA8ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgICAgQGZvciAkaSBmcm9tICRsZW5ndGggdG8gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgICAgIEBpZiAkZiA9PSAnbWVkaWEnIHtcbiAgICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykpO1xuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtbWVyZ2UoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgKCRmOiAkdi1ob2xkZXIpKSAhZ2xvYmFsO1xuICB9XG5cbiAgQHJldHVybiAkcXVlcnktcHJpbnQ7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1xdWVyeSgkcXVlcnkpIHtcbiAgLy8gUGFyc2UgZmVhdHVyZXMgb3V0IG9mIGFuIGluZGl2aWR1YWwgcXVlcnlcbiAgJGZlYXR1cmUtaG9sZGVyOiAoKTtcbiAgJHF1ZXJ5LWhvbGRlcjogKCk7XG4gICRsZW5ndGg6IGxlbmd0aCgkcXVlcnkpO1xuXG4gIEBpZiAkbGVuZ3RoID09IDIge1xuICAgIC8vIElmIHdlJ3ZlIGdvdCBhIHN0cmluZy9udW1iZXIsIG51bWJlci9zdHJpbmcsIGNoZWNrIHRvIHNlZSBpZiBpdCdzIGEgdmFsaWQgc3RyaW5nL251bWJlciBwYWlyIG9yIHR3byBzaW5nbGVzXG4gICAgQGlmICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnc3RyaW5nJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ251bWJlcicpIG9yICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnbnVtYmVyJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ3N0cmluZycpIHtcblxuICAgICAgJG51bWJlcjogJyc7XG4gICAgICAkdmFsdWU6ICcnO1xuXG4gICAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ3N0cmluZycge1xuICAgICAgICAkbnVtYmVyOiBudGgoJHF1ZXJ5LCAyKTtcbiAgICAgICAgJHZhbHVlOiBudGgoJHF1ZXJ5LCAxKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJG51bWJlcjogbnRoKCRxdWVyeSwgMSk7XG4gICAgICAgICR2YWx1ZTogbnRoKCRxdWVyeSwgMik7XG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoZSBzdHJpbmcgdmFsdWUgY2FuIGJlIGEgc2luZ2xlIHZhbHVlLCBjaGVjayB0byBzZWUgaWYgdGhlIG51bWJlciBwYXNzZWQgaW4gaXMgYSB2YWxpZCBpbnB1dCBmb3Igc2FpZCBzaW5nbGUgdmFsdWUuIEZvcnR1bmF0ZWx5LCBhbGwgY3VycmVudCBzaW5nbGUtdmFsdWUgb3B0aW9ucyBvbmx5IGFjY2VwdCB1bml0bGVzcyBudW1iZXJzLCBzbyB0aGlzIGNoZWNrIGlzIGVhc3kuXG4gICAgICBAaWYgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCR2YWx1ZSkge1xuICAgICAgICBAaWYgdW5pdGxlc3MoJG51bWJlcikge1xuICAgICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKCR2YWx1ZSwgJG51bWJlciwgc3BhY2UpO1xuICAgICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIElmIHRoZSBzdHJpbmcgaXMgYSBtZWRpYSB0eXBlLCBzcGxpdCB0aGUgcXVlcnlcbiAgICAgIEBpZiBicmVha3BvaW50LWlzLW1lZGlhKCR2YWx1ZSkge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgbnRoKCRxdWVyeSwgMSkpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgbnRoKCRxdWVyeSwgMikpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgICAvLyBJZiBpdCdzIG5vdCBhIHNpbmdsZSBmZWF0dXJlLCB3ZSdyZSBqdXN0IGdvaW5nIHRvIGFzc3VtZSBpdCdzIGEgcHJvcGVyIHN0cmluZy92YWx1ZSBwYWlyLCBhbmQgcm9sbCB3aXRoIGl0LlxuICAgICAgQGVsc2Uge1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZCgkdmFsdWUsICRudW1iZXIsIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG5cbiAgICB9XG4gICAgLy8gSWYgdGhleSdyZSBib3RoIG51bWJlcnMsIHdlIGFzc3VtZSBpdCdzIGEgZG91YmxlIGFuZCByb2xsIHdpdGggdGhhdFxuICAgIEBlbHNlIGlmICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnbnVtYmVyJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ251bWJlcicpIHtcbiAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDEpLCBudGgoJHF1ZXJ5LCAyKSwgc3BhY2UpO1xuICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgIH1cbiAgICAvLyBJZiB0aGV5J3JlIGJvdGggc3RyaW5ncyBhbmQgbmVpdGhlciBhcmUgc2luZ2xlcywgd2Ugcm9sbCB3aXRoIHRoYXQuXG4gICAgQGVsc2UgaWYgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdzdHJpbmcnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnc3RyaW5nJykge1xuICAgICAgQGlmIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMSkpIGFuZCBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDIpKSB7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDEpLCBudGgoJHF1ZXJ5LCAyKSwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJGxlbmd0aCA9PSAzIHtcbiAgICAvLyBJZiB3ZSd2ZSBnb3QgdGhyZWUgaXRlbXMgYW5kIG5vbmUgaXMgYSBsaXN0LCB3ZSBjaGVjayB0byBzZWVcbiAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgIT0gJ2xpc3QnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSAhPSAnbGlzdCcgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMykpICE9ICdsaXN0JyB7XG4gICAgICAvLyBJZiBub25lIG9mIHRoZSBpdGVtcyBhcmUgc2luZ2xlIHN0cmluZyB2YWx1ZXMgYW5kIG5vbmUgb2YgdGhlIHZhbHVlcyBhcmUgbWVkaWEgdmFsdWVzLCB3ZSdyZSBnb29kLlxuICAgICAgQGlmIChub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDEpKSBhbmQgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAyKSkgYW5kIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMykpKSBhbmQgICgobm90IGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMSkpIGFuZCBub3QgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAyKSkgYW5kIG5vdCBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDMpKSkpIHtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMSksIG50aCgkcXVlcnksIDIpLCBzcGFjZSk7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKCRmZWF0dXJlLWhvbGRlciwgbnRoKCRxdWVyeSwgMyksIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgICAvLyBsZXQncyBjaGVjayB0byBzZWUgaWYgdGhlIGZpcnN0IGl0ZW0gaXMgYSBtZWRpYSB0eXBlXG4gICAgICBAZWxzZSBpZiBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDEpKSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCBudGgoJHF1ZXJ5LCAxKSk7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDIpLCBudGgoJHF1ZXJ5LCAzKSwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIElmIGl0J3MgYSBzaW5nbGUgaXRlbSwgb3IgaWYgaXQncyBub3QgYSBzcGVjaWFsIGNhc2UgZG91YmxlIG9yIHRyaXBsZSwgd2UgY2FuIHNpbXBseSByZXR1cm4gdGhlIHF1ZXJ5LlxuICBAcmV0dXJuICRxdWVyeTtcbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwic2luZ2xlL2RlZmF1bHRcIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkcGFyc2VkOiAnJztcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIC8vIElmIGl0J3MgYSBzaW5nbGUgZmVhdHVyZSB0aGF0IGNhbiBzdGFuZCBhbG9uZSwgd2UgbGV0IGl0XG4gIEBpZiAoYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRmZWF0dXJlKSkge1xuICAgICRwYXJzZWQ6ICRmZWF0dXJlO1xuICAgIC8vIFNldCBDb250ZXh0XG4gICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICRmZWF0dXJlKTtcbiAgfVxuICAvLyBJZiBpdCdzIG5vdCBhIHN0YW5kIGFsb25lIGZlYXR1cmUsIHdlIHBhc3MgaXQgb2ZmIHRvIHRoZSBkZWZhdWx0IGhhbmRsZXIuXG4gIEBlbHNlIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQoJGZlYXR1cmUpO1xuICB9XG5cbiAgQHJldHVybiAkbGVhZGVyICsgJygnICsgJHBhcnNlZCArICcpJztcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQoJGZlYXR1cmUpIHtcbiAgJGRlZmF1bHQ6IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IGZlYXR1cmUnKTtcblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZGVmYXVsdCwgJGZlYXR1cmUpO1xuXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIGFuZCAodHlwZS1vZigkZmVhdHVyZSkgPT0gJ251bWJlcicpIHtcbiAgICBAcmV0dXJuICcjeyRkZWZhdWx0fTogI3ticmVha3BvaW50LXRvLWJhc2UtZW0oJGZlYXR1cmUpfSc7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJyN7JGRlZmF1bHR9OiAjeyRmZWF0dXJlfSc7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwiZG91YmxlL2RlZmF1bHQtcGFpclwiO1xuQGltcG9ydCBcImRvdWJsZS9kb3VibGUtc3RyaW5nXCI7XG5AaW1wb3J0IFwiZG91YmxlL2RlZmF1bHRcIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkcGFyc2VkOiAnJztcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gICRmaXJzdDogbnRoKCRmZWF0dXJlLCAxKTtcbiAgJHNlY29uZDogbnRoKCRmZWF0dXJlLCAyKTtcblxuICAvLyBJZiB3ZSd2ZSBnb3QgdHdvIG51bWJlcnMsIHdlIGtub3cgd2UgbmVlZCB0byB1c2UgdGhlIGRlZmF1bHQgcGFpciBiZWNhdXNlIHRoZXJlIGFyZSBubyBtZWRpYSBxdWVyaWVzIHRoYXQgaGFzIGEgbWVkaWEgZmVhdHVyZSB0aGF0IGlzIGEgbnVtYmVyXG4gIEBpZiB0eXBlLW9mKCRmaXJzdCkgPT0gJ251bWJlcicgYW5kIHR5cGUtb2YoJHNlY29uZCkgPT0gJ251bWJlcicge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdC1wYWlyKCRmaXJzdCwgJHNlY29uZCk7XG4gIH1cbiAgLy8gSWYgdGhleSBhcmUgYm90aCBzdHJpbmdzLCB3ZSBzZW5kIGl0IHRocm91Z2ggdGhlIHN0cmluZyBwYXJzZXJcbiAgQGVsc2UgaWYgdHlwZS1vZigkZmlyc3QpID09ICdzdHJpbmcnIGFuZCB0eXBlLW9mKCRzZWNvbmQpID09ICdzdHJpbmcnIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1zdHJpbmcoJGZpcnN0LCAkc2Vjb25kKTtcbiAgfVxuICAvLyBJZiBpdCdzIGEgc3RyaW5nL251bWJlciBwYWlyLCB3ZSBwYXJzZSBpdCBhcyBhIG5vcm1hbCBkb3VibGVcbiAgQGVsc2Uge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLWRlZmF1bHQoJGZpcnN0LCAkc2Vjb25kKTtcbiAgfVxuXG4gIEByZXR1cm4gJGxlYWRlciArICRwYXJzZWQ7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0LXBhaXIoJGZpcnN0LCAkc2Vjb25kKSB7XG4gICRkZWZhdWx0OiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBwYWlyJyk7XG4gICRtaW46ICcnO1xuICAkbWF4OiAnJztcblxuICAvLyBTb3J0IGludG8gbWluIGFuZCBtYXhcbiAgJG1pbjogbWluKCRmaXJzdCwgJHNlY29uZCk7XG4gICRtYXg6IG1heCgkZmlyc3QsICRzZWNvbmQpO1xuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1pbi0jeyRkZWZhdWx0fSwgJG1pbik7XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1heC0jeyRkZWZhdWx0fSwgJG1heCk7XG5cbiAgLy8gTWFrZSB0aGVtIEVNcyBpZiBuZWVkIGJlXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIHtcbiAgICAkbWluOiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1pbik7XG4gICAgJG1heDogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtYXgpO1xuICB9XG5cbiAgQHJldHVybiAnKG1pbi0jeyRkZWZhdWx0fTogI3skbWlufSkgYW5kIChtYXgtI3skZGVmYXVsdH06ICN7JG1heH0pJztcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1zdHJpbmcoJGZpcnN0LCAkc2Vjb25kKSB7XG4gICRmZWF0dXJlOiAnJztcbiAgJHZhbHVlOiAnJztcblxuICAvLyBUZXN0IHRvIHNlZSB3aGljaCBpcyB0aGUgZmVhdHVyZSBhbmQgd2hpY2ggaXMgdGhlIHZhbHVlXG4gIEBpZiAoYnJlYWtwb2ludC1zdHJpbmctdmFsdWUoJGZpcnN0KSA9PSB0cnVlKSB7XG4gICAgJGZlYXR1cmU6ICRmaXJzdDtcbiAgICAkdmFsdWU6ICRzZWNvbmQ7XG4gIH1cbiAgQGVsc2UgaWYgKGJyZWFrcG9pbnQtc3RyaW5nLXZhbHVlKCRzZWNvbmQpID09IHRydWUpIHtcbiAgICAkZmVhdHVyZTogJHNlY29uZDtcbiAgICAkdmFsdWU6ICRmaXJzdDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHdhcm4gXCJOZWl0aGVyICN7JGZpcnN0fSBub3IgI3skc2Vjb25kfSBpcyBhIHZhbGlkIG1lZGlhIHF1ZXJ5IG5hbWUuXCI7XG4gIH1cblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJHZhbHVlKTtcblxuICBAcmV0dXJuICcoI3skZmVhdHVyZX06ICN7JHZhbHVlfSknO1xufSIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1kZWZhdWx0KCRmaXJzdCwgJHNlY29uZCkge1xuICAkZmVhdHVyZTogJyc7XG4gICR2YWx1ZTogJyc7XG5cbiAgQGlmIHR5cGUtb2YoJGZpcnN0KSA9PSAnc3RyaW5nJyB7XG4gICAgJGZlYXR1cmU6ICRmaXJzdDtcbiAgICAkdmFsdWU6ICRzZWNvbmQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRmZWF0dXJlOiAkc2Vjb25kO1xuICAgICR2YWx1ZTogJGZpcnN0O1xuICB9XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICR2YWx1ZSk7XG5cbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkge1xuICAgICR2YWx1ZTogYnJlYWtwb2ludC10by1iYXNlLWVtKCR2YWx1ZSk7XG4gIH1cblxuICBAcmV0dXJuICcoI3skZmVhdHVyZX06ICN7JHZhbHVlfSknXG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInRyaXBsZS9kZWZhdWx0XCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXRyaXBsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJHBhcnNlZDogJyc7XG4gICRsZWFkZXI6ICcnO1xuXG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIC8vIHNlcGFyYXRlIHRoZSBzdHJpbmcgZmVhdHVyZXMgZnJvbSB0aGUgdmFsdWUgbnVtYmVyc1xuICAkc3RyaW5nOiBudWxsO1xuICAkbnVtYmVyczogbnVsbDtcbiAgQGVhY2ggJHZhbCBpbiAkZmVhdHVyZSB7XG4gICAgQGlmIHR5cGUtb2YoJHZhbCkgPT0gc3RyaW5nIHtcbiAgICAgICRzdHJpbmc6ICR2YWw7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRudW1iZXJzKSA9PSAnbnVsbCcge1xuICAgICAgICAkbnVtYmVyczogJHZhbDtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJG51bWJlcnM6IGFwcGVuZCgkbnVtYmVycywgJHZhbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS10cmlwbGUtZGVmYXVsdCgkc3RyaW5nLCBudGgoJG51bWJlcnMsIDEpLCBudGgoJG51bWJlcnMsIDIpKTtcblxuICBAcmV0dXJuICRsZWFkZXIgKyAkcGFyc2VkO1xuXG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS10cmlwbGUtZGVmYXVsdCgkZmVhdHVyZSwgJGZpcnN0LCAkc2Vjb25kKSB7XG5cbiAgLy8gU29ydCBpbnRvIG1pbiBhbmQgbWF4XG4gICRtaW46IG1pbigkZmlyc3QsICRzZWNvbmQpO1xuICAkbWF4OiBtYXgoJGZpcnN0LCAkc2Vjb25kKTtcblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtaW4tI3skZmVhdHVyZX0sICRtaW4pO1xuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtYXgtI3skZmVhdHVyZX0sICRtYXgpO1xuXG4gIC8vIE1ha2UgdGhlbSBFTXMgaWYgbmVlZCBiZVxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSB7XG4gICAgJG1pbjogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtaW4pO1xuICAgICRtYXg6IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWF4KTtcbiAgfVxuXG4gIEByZXR1cm4gJyhtaW4tI3skZmVhdHVyZX06ICN7JG1pbn0pIGFuZCAobWF4LSN7JGZlYXR1cmV9OiAjeyRtYXh9KSc7XG59XG4iLCJAaW1wb3J0IFwicmVzb2x1dGlvbi9yZXNvbHV0aW9uXCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LWJ1aWxkLXJlc29sdXRpb24oJHF1ZXJ5LXByaW50LCAkcXVlcnktcmVzb2x1dGlvbiwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIEBpZiBicmVha3BvaW50LWdldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJykgYW5kICRxdWVyeS1yZXNvbHV0aW9uIHtcbiAgICAkcmVzb2x1dGlvbnM6IGJyZWFrcG9pbnQtbWFrZS1yZXNvbHV0aW9ucygkcXVlcnktcmVzb2x1dGlvbik7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCRyZXNvbHV0aW9ucyk7XG4gICAgJHF1ZXJ5LWhvbGRlcjogJyc7XG5cbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICAgJHF1ZXJ5OiAnI3skcXVlcnktcHJpbnR9ICN7JGxlYWRlcn0je250aCgkcmVzb2x1dGlvbnMsICRpKX0nO1xuICAgICAgQGlmICRpID09IDEge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiAkcXVlcnk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6ICcjeyRxdWVyeS1ob2xkZXJ9LCAjeyRxdWVyeX0nO1xuICAgICAgfVxuICAgIH1cblxuICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gUmV0dXJuIHdpdGggYXR0YWNoZWQgcmVzb2x1dGlvblxuICAgIEByZXR1cm4gJHF1ZXJ5LXByaW50O1xuICB9XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1tYWtlLXJlc29sdXRpb25zKCRyZXNvbHV0aW9uKSB7XG4gICRsZW5ndGg6IGxlbmd0aCgkcmVzb2x1dGlvbik7XG5cbiAgJG91dHB1dDogKCk7XG5cbiAgQGlmICRsZW5ndGggPT0gMiB7XG4gICAgJGZlYXR1cmU6ICcnO1xuICAgICR2YWx1ZTogJyc7XG5cbiAgICAvLyBGaW5kIHdoaWNoIGlzIG51bWJlclxuICAgIEBpZiB0eXBlLW9mKG50aCgkcmVzb2x1dGlvbiwgMSkpID09ICdudW1iZXInIHtcbiAgICAgICR2YWx1ZTogbnRoKCRyZXNvbHV0aW9uLCAxKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJHZhbHVlOiBudGgoJHJlc29sdXRpb24sIDIpO1xuICAgIH1cblxuICAgIC8vIERldGVybWluZSBtaW4vbWF4L3N0YW5kYXJkXG4gICAgQGlmIGluZGV4KCRyZXNvbHV0aW9uLCAnbWluLXJlc29sdXRpb24nKSB7XG4gICAgICAkZmVhdHVyZTogJ21pbi0nO1xuICAgIH1cbiAgICBAZWxzZSBpZiBpbmRleCgkcmVzb2x1dGlvbiwgJ21heC1yZXNvbHV0aW9uJykge1xuICAgICAgJGZlYXR1cmU6ICdtYXgtJztcbiAgICB9XG5cbiAgICAkc3RhbmRhcmQ6ICcoI3skZmVhdHVyZX1yZXNvbHV0aW9uOiAjeyR2YWx1ZX0pJztcblxuICAgIC8vIElmIHdlJ3JlIG5vdCBkZWFsaW5nIHdpdGggZHBweCxcbiAgICBAaWYgdW5pdCgkdmFsdWUpICE9ICdkcHB4JyB7XG4gICAgICAkYmFzZTogOTZkcGk7XG4gICAgICBAaWYgdW5pdCgkdmFsdWUpID09ICdkcGNtJyB7XG4gICAgICAgICRiYXNlOiAyNDMuODRkcGNtO1xuICAgICAgfVxuICAgICAgLy8gV3JpdGUgb3V0IGZlYXR1cmUgdGVzdHNcbiAgICAgICR3ZWJraXQ6ICcnO1xuICAgICAgJG1vejogJyc7XG4gICAgICAkd2Via2l0OiAnKC13ZWJraXQtI3skZmVhdHVyZX1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gJGJhc2V9KSc7XG4gICAgICAkbW96OiAnKCN7JGZlYXR1cmV9LW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gJGJhc2V9KSc7XG4gICAgICAvLyBBcHBlbmQgdG8gb3V0cHV0XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHN0YW5kYXJkLCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHdlYmtpdCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRtb3osIHNwYWNlKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJHdlYmtpdDogJyc7XG4gICAgICAkbW96OiAnJztcbiAgICAgICR3ZWJraXQ6ICcoLXdlYmtpdC0jeyRmZWF0dXJlfWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAxZHBweH0pJztcbiAgICAgICRtb3o6ICcoI3skZmVhdHVyZX0tbW96LWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAxZHBweH0pJztcbiAgICAgICRmYWxsYmFjazogJygjeyRmZWF0dXJlfXJlc29sdXRpb246ICN7JHZhbHVlIC8gMWRwcHggKiA5NmRwaX0pJztcbiAgICAgIC8vIEFwcGVuZCB0byBvdXRwdXRcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkc3RhbmRhcmQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkd2Via2l0LCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJG1veiwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRmYWxsYmFjaywgc3BhY2UpO1xuICAgIH1cblxuICB9XG5cbiAgQHJldHVybiAkb3V0cHV0O1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbm8tcXVlcnkoJHF1ZXJ5KSB7XG4gIEBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gJ2xpc3QnIHtcbiAgICAka2V5d29yZDogbnRoKCRxdWVyeSwgMSk7XG5cbiAgICBAaWYgdHlwZS1vZigka2V5d29yZCkgPT0gJ3N0cmluZycgYW5kICgka2V5d29yZCA9PSAnbm8tcXVlcnknIG9yICRrZXl3b3JkID09ICdubyBxdWVyeScgb3IgJGtleXdvcmQgPT0gJ2ZhbGxiYWNrJykge1xuICAgICAgQHJldHVybiBudGgoJHF1ZXJ5LCAyKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRGVmYXVsdCB0aGUgQnJlYWtwb2ludHMgdmFyaWFibGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnRzOiAoKSAhZGVmYXVsdDtcbiRCUkVBS1BPSU5UUzogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmVzcG9uZC10byBBUEkgTWl4aW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHJlc3BvbmQtdG8oJGNvbnRleHQsICRuby1xdWVyeTogZmFsc2UpIHtcbiAgQGlmIGxlbmd0aCgkYnJlYWtwb2ludHMpID4gMCBhbmQgbGVuZ3RoKCRCUkVBS1BPSU5UUykgPT0gMCB7XG4gICAgQHdhcm4gXCJJbiBvcmRlciB0byBhdm9pZCB2YXJpYWJsZSBuYW1lc3BhY2UgY29sbGlzaW9ucywgd2UgaGF2ZSB1cGRhdGVkIHRoZSB3YXkgdG8gYWRkIGJyZWFrcG9pbnRzIGZvciByZXNwb25kLXRvLiBQbGVhc2UgY2hhbmdlIGFsbCBpbnN0YW5jZXMgb2YgYCRicmVha3BvaW50czogYWRkLWJyZWFrcG9pbnQoKWAgdG8gYEBpbmNsdWRlIGFkZC1icmVha3BvaW50KClgLiBUaGUgYGFkZC1icmVha3BvaW50KClgIGZ1bmN0aW9uIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLlwiO1xuICAgICRCUkVBS1BPSU5UUzogJGJyZWFrcG9pbnRzICFnbG9iYWw7XG4gICAgJGJyZWFrcG9pbnRzOiAoKSAhZ2xvYmFsO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJEJSRUFLUE9JTlRTKSAhPSAnbWFwJyB7XG4gICAgLy8gSnVzdCBpbiBjYXNlIHNvbWVvbmUgd3JpdGVzIGdpYmJlcmlzaCB0byB0aGUgJGJyZWFrcG9pbnRzIHZhcmlhYmxlLlxuICAgIEB3YXJuIFwiWW91ciBicmVha3BvaW50cyBhcmVuJ3QgYSBtYXAhIGByZXNwb25kLXRvYCBleHBlY3RzIGEgbWFwLiBQbGVhc2UgY2hlY2sgdGhlIHZhbHVlIG9mICRCUkVBS1BPSU5UUyB2YXJpYWJsZS5cIjtcbiAgICBAY29udGVudDtcbiAgfVxuICBAZWxzZSBpZiBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRjb250ZXh0KSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtYXAtZ2V0KCRCUkVBS1BPSU5UUywgJGNvbnRleHQpLCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSBpZiBub3QgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkY29udGV4dCkge1xuICAgIEB3YXJuIFwiYCN7JGNvbnRleHR9YCBpc24ndCBhIGRlZmluZWQgYnJlYWtwb2ludCEgUGxlYXNlIGFkZCBpdCB1c2luZyBgJGJyZWFrcG9pbnRzOiBhZGQtYnJlYWtwb2ludChgI3skY29udGV4dH1gLCAkdmFsdWUpO2BcIjtcbiAgICBAY29udGVudDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHdhcm4gXCJZb3UgaGF2ZW4ndCBjcmVhdGVkIGFueSBicmVha3BvaW50cyB5ZXQhIE1ha2Ugc29tZSBhbHJlYWR5ISBgQGluY2x1ZGUgYWRkLWJyZWFrcG9pbnQoJG5hbWUsICRia3B0KWBcIjtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFkZCBCcmVha3BvaW50IHRvIEJyZWFrcG9pbnRzXG4vLyBUT0RPOiBSZW1vdmUgZnVuY3Rpb24gaW4gbmV4dCByZWxlYXNlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBhZGQtYnJlYWtwb2ludCgkbmFtZSwgJGJrcHQsICRvdmVyd3JpdGU6IGZhbHNlKSB7XG4gICRvdXRwdXQ6ICgkbmFtZTogJGJrcHQpO1xuXG4gIEBpZiBsZW5ndGgoJGJyZWFrcG9pbnRzKSA9PSAwIHtcbiAgICBAcmV0dXJuICRvdXRwdXQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRuYW1lKSBhbmQgJG92ZXJ3cml0ZSAhPSB0cnVlIHtcbiAgICAgIEB3YXJuIFwiWW91IGFscmVhZHkgaGF2ZSBhIGJyZWFrcG9pbnQgbmFtZWQgYCN7JG5hbWV9YCwgcGxlYXNlIGNob29zZSBhbm90aGVyIGJyZWFrcG9pbnQgbmFtZSwgb3IgcGFzcyBpbiBgJG92ZXJ3cml0ZTogdHJ1ZWAgdG8gb3ZlcndyaXRlIHRoZSBwcmV2aW91cyBicmVha3BvaW50LlwiO1xuICAgICAgQHJldHVybiAkYnJlYWtwb2ludHM7XG4gICAgfVxuICAgIEBlbHNlIGlmIG5vdCBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRuYW1lKSBvciAkb3ZlcndyaXRlID09IHRydWUge1xuICAgICAgQHJldHVybiBtYXAtbWVyZ2UoJGJyZWFrcG9pbnRzLCAkb3V0cHV0KTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGFkZC1icmVha3BvaW50KCRuYW1lLCAkYmtwdCwgJG92ZXJ3cml0ZTogZmFsc2UpIHtcbiAgJG91dHB1dDogKCRuYW1lOiAkYmtwdCk7XG5cbiAgQGlmIGxlbmd0aCgkQlJFQUtQT0lOVFMpID09IDAge1xuICAgICRCUkVBS1BPSU5UUzogJG91dHB1dCAhZ2xvYmFsO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkbmFtZSkgYW5kICRvdmVyd3JpdGUgIT0gdHJ1ZSB7XG4gICAgICBAd2FybiBcIllvdSBhbHJlYWR5IGhhdmUgYSBicmVha3BvaW50IG5hbWVkIGAjeyRuYW1lfWAsIHBsZWFzZSBjaG9vc2UgYW5vdGhlciBicmVha3BvaW50IG5hbWUsIG9yIHBhc3MgaW4gYCRvdmVyd3JpdGU6IHRydWVgIHRvIG92ZXJ3cml0ZSB0aGUgcHJldmlvdXMgYnJlYWtwb2ludC5cIjtcbiAgICAgICRCUkVBS1BPSU5UUzogJEJSRUFLUE9JTlRTICFnbG9iYWw7XG4gICAgfVxuICAgIEBlbHNlIGlmIG5vdCBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRuYW1lKSBvciAkb3ZlcndyaXRlID09IHRydWUge1xuICAgICAgJEJSRUFLUE9JTlRTOiBtYXAtbWVyZ2UoJEJSRUFLUE9JTlRTLCAkb3V0cHV0KSAhZ2xvYmFsO1xuICAgIH1cbiAgfVxufVxuXG5AZnVuY3Rpb24gZ2V0LWJyZWFrcG9pbnQoJG5hbWU6IGZhbHNlKSB7XG4gIEBpZiAkbmFtZSA9PSBmYWxzZSB7XG4gICAgQHJldHVybiAkQlJFQUtQT0lOVFM7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkQlJFQUtQT0lOVFMsICRuYW1lKTtcbiAgfVxufVxuIiwiQG1peGluIGxlZ2FjeS1zZXR0aW5ncy13YXJuaW5nIHtcbiAgJGxlZ2FjeVZhcnM6IChcbiAgICAnZGVmYXVsdC1tZWRpYSc6ICdkZWZhdWx0IG1lZGlhJyxcbiAgICAnZGVmYXVsdC1mZWF0dXJlJzogJ2RlZmF1bHQgZmVhdHVyZScsXG4gICAgJ2ZvcmNlLW1lZGlhLWFsbCc6ICdmb3JjZSBhbGwgbWVkaWEgdHlwZScsXG4gICAgJ3RvLWVtcyc6ICd0byBlbXMnLFxuICAgICdyZXNvbHV0aW9ucyc6ICd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnLFxuICAgICduby1xdWVyaWVzJzogJ25vIHF1ZXJpZXMnLFxuICAgICduby1xdWVyeS1mYWxsYmFja3MnOiAnbm8gcXVlcnkgZmFsbGJhY2tzJyxcbiAgICAnYmFzZS1mb250LXNpemUnOiAnYmFzZSBmb250IHNpemUnLFxuICAgICdsZWdhY3ktc3ludGF4JzogJ2xlZ2FjeSBzeW50YXgnXG4gICk7XG5cbiAgQGVhY2ggJGxlZ2FjeSwgJG5ldyBpbiAkbGVnYWN5VmFycyB7XG4gICAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtJyArICRsZWdhY3kpIHtcbiAgICAgIEB3YXJuIFwiSW4gb3JkZXIgdG8gYXZvaWQgdmFyaWFibGUgbmFtc3BhY2UgY29sbGlzaW9ucywgd2UgaGF2ZSB1cGRhdGVkIHRoZSB3YXkgdG8gY2hhbmdlIHNldHRpbmdzIGZvciBCcmVha3BvaW50LiBQbGVhc2UgY2hhbmdlIGFsbCBpbnN0YW5jZXMgb2YgYCRicmVha3BvaW50LSN7JGxlZ2FjeX06IHt7c2V0dGluZ319YCB0byBgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJyN7JG5ld30nLCB7e3NldHRpbmd9fSlgLiBWYXJpYWJsZSBzZXR0aW5ncywgYXMgd2VsbCBhcyB0aGlzIHdhcm5pbmcgd2lsbCBiZSBkZXByZWNhdGVkIGluIGEgZnV0dXJlIHJlbGVhc2UuXCJcbiAgICB9XG4gIH07XG5cbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIEhhbmQgY29ycmVjdCBlYWNoIHNldHRpbmdcbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWRlZmF1bHQtbWVkaWEnKSBhbmQgJGJyZWFrcG9pbnQtZGVmYXVsdC1tZWRpYSAhPSBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZGVmYXVsdCBtZWRpYScsICRicmVha3BvaW50LWRlZmF1bHQtbWVkaWEpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWRlZmF1bHQtZmVhdHVyZScpIGFuZCAkYnJlYWtwb2ludC1kZWZhdWx0LWZlYXR1cmUgIT0gYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgZmVhdHVyZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZGVmYXVsdCBmZWF0dXJlJywgJGJyZWFrcG9pbnQtZGVmYXVsdC1mZWF0dXJlKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1mb3JjZS1tZWRpYS1hbGwnKSBhbmQgJGJyZWFrcG9pbnQtZm9yY2UtbWVkaWEtYWxsICE9IGJyZWFrcG9pbnQtZ2V0KCdmb3JjZSBhbGwgbWVkaWEgdHlwZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZm9yY2UgYWxsIG1lZGlhIHR5cGUnLCAkYnJlYWtwb2ludC1mb3JjZS1tZWRpYS1hbGwpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LXRvLWVtcycpIGFuZCAkYnJlYWtwb2ludC10by1lbXMgIT0gYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgndG8gZW1zJywgJGJyZWFrcG9pbnQtdG8tZW1zKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1yZXNvbHV0aW9ucycpIGFuZCAkYnJlYWtwb2ludC1yZXNvbHV0aW9ucyAhPSBicmVha3BvaW50LWdldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnLCAkYnJlYWtwb2ludC1yZXNvbHV0aW9ucyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbm8tcXVlcmllcycpIGFuZCAkYnJlYWtwb2ludC1uby1xdWVyaWVzICE9IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdubyBxdWVyaWVzJywgJGJyZWFrcG9pbnQtbm8tcXVlcmllcyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzJykgYW5kICRicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrcyAhPSBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdubyBxdWVyeSBmYWxsYmFja3MnLCAkYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3MpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWJhc2UtZm9udC1zaXplJykgYW5kICRicmVha3BvaW50LWJhc2UtZm9udC1zaXplICE9IGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnYmFzZSBmb250IHNpemUnLCAkYnJlYWtwb2ludC1iYXNlLWZvbnQtc2l6ZSk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbGVnYWN5LXN5bnRheCcpIGFuZCAkYnJlYWtwb2ludC1sZWdhY3ktc3ludGF4ICE9IGJyZWFrcG9pbnQtZ2V0KCdsZWdhY3kgc3ludGF4Jykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdsZWdhY3kgc3ludGF4JywgJGJyZWFrcG9pbnQtbGVnYWN5LXN5bnRheCk7XG4gIH1cbn0iLCJAaW1wb3J0IFwiZnVuY3Rpb25zXCI7XG5AaW1wb3J0IFwiei1pbmRleFwiO1xuQGltcG9ydCBcIm1lZGlhLXF1ZXJpZXNcIjtcbkBpbXBvcnQgXCJ2YXJpYWJsZXNcIjtcbkBpbXBvcnQgXCJ1bmlib2FyZFwiO1xuQGltcG9ydCBcIm1peGluc1wiO1xuQGltcG9ydCBcImV4dGVuZHNcIjtcbkBpbXBvcnQgXCJmbGV4XCI7XG5AaW1wb3J0IFwiYm94XCI7XG5AaW1wb3J0IFwiZmx1aWQtc2l6ZVwiO1xuIiwiLy8vIFotaW5kZXhlcyBtYXAsIGdhdGhlcmluZyBhbGwgWiBsYXllcnMgb2YgdGhlIGFwcGxpY2F0aW9uXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8gQHR5cGUgTWFwXG4vLy8gQHByb3Age1N0cmluZ30ga2V5IC0gTGF5ZXLigJlzIG5hbWVcbi8vLyBAcHJvcCB7TnVtYmVyfSB2YWx1ZSAtIFogdmFsdWUgbWFwcGVkIHRvIHRoZSBrZXlcbiR6LWluZGV4ZXM6IChcImNnX19wcm9tb3Rpb25cIjogMjA1LCBcImNnX19waWVjZS5kcmFnZ2luZ1wiOiAyMDQsIFwiY2dfX3BpZWNlLmFuaW1cIjogMywgXCJjZ19fc3ZnXCI6IDIsIFwiY2dfX3BpZWNlXCI6IDIsIFwiY2dfX3BpZWNlLmZhZGluZ1wiOiAxLCBcInBvd2VydGlwXCI6IDEyMCwgXCJpbnF1aXJ5XCI6IDExMSwgXCJ6ZW4tdG9nZ2xlXCI6IDExMCwgXCJtb2RhbFwiOiAxMTAsIFwibXNlbGVjdFwiOiAxMTAsIFwidG9wbmF2XCI6IDExMCwgXCJmdWxsc2NyZWVuLW1hc2tcIjogMTA5LCBcImRyb3Bkb3duXCI6IDEwOCwgXCJjb250ZXh0LW1lbnVcIjogMTA3LCBcInNpdGUtaGVhZGVyXCI6IDEwNiwgXCJyZWNvbm5lY3RpbmdcIjogMTA1LCBcInRvdXItcmVtaW5kZXJcIjogMTA0LCBcIm5hZy1jaXJjbGVcIjogMTAzLCBcIm16LW1lbnVcIjogNCwgXCJhYm92ZS1saW5rLW92ZXJsYXlcIjogMywgXCJmcmllbmQtYm94XCI6IDIsIFwibGluay1vdmVybGF5XCI6IDIsIFwiZ2FtZS1ib29rbWFya1wiOiAyLCBcInN1Ym5hdi1zaWRlXCI6IDIsIFwiZGVmYXVsdFwiOiAwKTtcblxuLy8vIEdldCBhIHotaW5kZXggdmFsdWUgZnJvbSBhIGxheWVyIG5hbWVcbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbGF5ZXIgLSBMYXllcuKAmXMgbmFtZVxuLy8vIEByZXR1cm4ge051bWJlcn1cbi8vLyBAcmVxdWlyZSAkei1pbmRleGVzXG5AZnVuY3Rpb24geigkbGF5ZXIpIHtcbiAgQHJldHVybiBtYXAtZ2V0KCR6LWluZGV4ZXMsICRsYXllcik7XG59XG4iLCIvKiBXaWR0aHMgKi9cblxuJG1xLXh4LXNtYWxsOiBtaW4td2lkdGggNTAwcHg7XG4kbXEteC1zbWFsbDogbWluLXdpZHRoIDY1MHB4O1xuJG1xLXNtYWxsOiBtaW4td2lkdGggODAwcHg7XG4kbXEtbWVkaXVtOiBtaW4td2lkdGggOTgwcHg7XG4kbXEtbGFyZ2U6IG1pbi13aWR0aCAxMTIwcHg7XG4kbXEteC1sYXJnZTogbWluLXdpZHRoIDEyNjBweDtcblxuJG1xLW5vdC14eC1zbWFsbDogbWF4LXdpZHRoIDQ5OXB4O1xuJG1xLW5vdC14LXNtYWxsOiBtYXgtd2lkdGggNjQ5cHg7XG4kbXEtbm90LXNtYWxsOiBtYXgtd2lkdGggNzk5cHg7XG4kbXEtbm90LW1lZGl1bTogbWF4LXdpZHRoIDk3OXB4O1xuJG1xLW5vdC14LWxhcmdlOiBtYXgtd2lkdGggMTI1OXB4O1xuXG4vKiBIZWlnaHRzICovXG5cbiRtcS14LXNob3J0OiBtaW4taGVpZ2h0IDQwMHB4O1xuJG1xLXNob3J0OiBtaW4taGVpZ2h0IDUwMHB4O1xuJG1xLXRhbGw6IG1pbi1oZWlnaHQgNjAwcHg7XG4kbXEteC10YWxsOiBtaW4taGVpZ2h0IDcwMHB4O1xuXG4kbXEtbm90LXgtc2hvcnQ6IG1heC1oZWlnaHQgMzk5cHg7XG5cbi8qIE9yaWVudGF0aW9ucyAqL1xuXG4kbXEtcG9ydHJhaXQ6IG9yaWVudGF0aW9uIHBvcnRyYWl0O1xuJG1xLWxhbmRzY2FwZTogb3JpZW50YXRpb24gbGFuZHNjYXBlO1xuXG4vKiBDYXBhYmlsaXRpZXMgKi9cblxuJG1xLWhvdmVyLXllczogXCJob3ZlcjogaG92ZXJcIjtcbiRtcS1ob3Zlci1ubzogaG92ZXIgbm9uZTtcblxuLyogQWxpYXNlcyAqL1xuXG4kbXEtbWFpbi1tYXJnaW46ICRtcS1zbWFsbDtcblxuJG1xLXRvcG5hdi12aXNpYmxlOiAkbXEtbWVkaXVtO1xuJG1xLXRvcG5hdi1oaWRkZW46ICRtcS1ub3QtbWVkaXVtO1xuXG4kbXEtc2l0ZS1oZWFkZXItdGFsbDogJG1xLXRhbGw7XG5cbiRtcS1zdWJuYXYtdG9wOiAkbXEtbm90LXNtYWxsO1xuJG1xLXN1Ym5hdi1zaWRlOiAkbXEtc21hbGw7XG5cbiRtcS16b29tLWVuYWJsZWQ6ICRtcS1zbWFsbCAkbXEtc2hvcnQ7XG4iLCIkZGVidWc6IGZhbHNlO1xuXG4kZm9udC1wYXRoOiBcIi4uL2ZvbnRcIjtcbiRpbWctcGF0aDogXCIuLi9pbWFnZXNcIjtcblxuJHZpZXdwb3J0LW1pbi13aWR0aDogMzIwcHg7XG5cbiRibG9jay1nYXA6IDJ2bWluO1xuJGJsb2NrLWdhcC1oYWxmOiAxdm1pbjtcblxuJGJsb2NrLWdhcC1oOiAydmg7XG4kYmxvY2stZ2FwLXc6IDJ2dztcbiRibG9jay1nYXAtdy1oYWxmOiAxdnc7XG5cbiRib3gtcmFkaXVzLXNpemU6IDNweDtcblxuJHNpdGUtaGVhZGVyLXRhbGwtaGVpZ2h0OiA2MHB4O1xuJHNpdGUtaGVhZGVyLXNob3J0LWhlaWdodDogNDBweDtcblxuJHRyYW5zaXRpb24tZHVyYXRpb246IDE1MG1zO1xuXG4kbWFpbi1tYXgtd2lkdGg6IDEzMDBweCAhZGVmYXVsdDtcblxuJG1haW4tbWFyZ2luOiB2YXIoLS1tYWluLW1hcmdpbik7XG4kc2l0ZS1oZWFkZXItaGVpZ2h0OiB2YXIoLS1zaXRlLWhlYWRlci1oZWlnaHQpO1xuXG4kc2l0ZS1oZWFkZXItbWFyZ2luOiB2YXIoLS1zaXRlLWhlYWRlci1tYXJnaW4pO1xuXG4kc2l0ZS1oZWFkZXItb3V0ZXItaGVpZ2h0OiBjYWxjKCN7JHNpdGUtaGVhZGVyLWhlaWdodH0gKyAjeyRzaXRlLWhlYWRlci1tYXJnaW59KTtcbiIsIi8qIFVuaWJvYXJkOiBrZWVwIHRoZSBzYW1lIHBhZ2UgbGF5b3V0IGFjY3Jvc3MgcGFnZXMgKi9cblxuJG1xLWJvYXJkLXJlc2l6YWJsZTogJG1xLXNtYWxsO1xuJG1xLWNvbDEtdW5pYm9hcmQ6ICRtcS1ub3Qtc21hbGwgJG1xLXBvcnRyYWl0O1xuJG1xLWNvbDItdW5pYm9hcmQ6ICRtcS1zbWFsbCwgJG1xLWxhbmRzY2FwZTtcbiRtcS1jb2wzLXVuaWJvYXJkOiAkbXEteC1sYXJnZTtcblxuLyogd2hlbiB0aGUgd2lkdGggaXMgYXBwcm9wcmlhdGUgZm9yIGNvbDEsIGJ1dCBsYW5kc2NhcGUgcHJldmVudHMgaXQgKi9cbiRtcS1jb2wyLXVuaWJvYXJkLXNxdWVlemU6ICRtcS1ub3Qtc21hbGwgJG1xLWxhbmRzY2FwZTtcblxuJGNvbDMtdW5pYm9hcmQtc2lkZTogbWlubWF4KDIzMHB4LCAyMHZ3KTtcbiRjb2wzLXVuaWJvYXJkLXRhYmxlOiBtaW5tYXgoMjQwcHgsIDQwMHB4KTtcbiRjb2wzLXVuaWJvYXJkLWNvbnRyb2xzOiAzcmVtO1xuXG4kY29sMy11bmlib2FyZC1taW4td2lkdGg6IGNhbGMoNzB2bWluICogdmFyKC0tYm9hcmQtc2NhbGUpKTtcbiRjb2wzLXVuaWJvYXJkLW1heC13aWR0aDogY2FsYygxMDB2aCAqIHZhcigtLWJvYXJkLXNjYWxlKSAtICN7JHNpdGUtaGVhZGVyLW91dGVyLWhlaWdodH0gLSAjeyRjb2wzLXVuaWJvYXJkLWNvbnRyb2xzfSk7XG4kY29sMy11bmlib2FyZC13aWR0aDogbWlubWF4KCRjb2wzLXVuaWJvYXJkLW1pbi13aWR0aCwgJGNvbDMtdW5pYm9hcmQtbWF4LXdpZHRoKTtcblxuJGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1zY2FsZTogMC45O1xuXG4vLyB6b29tOiA4NSVcbiRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtbWluLXdpZHRoOiA1MDBweDtcbiRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtbWF4LXdpZHRoOiBjYWxjKDEwMHZoICogI3skY29sMy11bmlib2FyZC1kZWZhdWx0LXNjYWxlfSAtICN7JHNpdGUtaGVhZGVyLW91dGVyLWhlaWdodH0gLSAjeyRjb2wzLXVuaWJvYXJkLWNvbnRyb2xzfSk7XG4kY29sMy11bmlib2FyZC1kZWZhdWx0LXdpZHRoOiBtaW5tYXgoI3skY29sMy11bmlib2FyZC1kZWZhdWx0LW1pbi13aWR0aH0sICN7JGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1tYXgtd2lkdGh9KTtcblxuJGNvbDItdW5pYm9hcmQtdGFibGU6ICRjb2wzLXVuaWJvYXJkLXRhYmxlO1xuJGNvbDItdW5pYm9hcmQtY29udHJvbHM6ICRjb2wzLXVuaWJvYXJkLWNvbnRyb2xzO1xuJGNvbDItdW5pYm9hcmQtd2lkdGg6ICRjb2wzLXVuaWJvYXJkLXdpZHRoO1xuJGNvbDItdW5pYm9hcmQtZGVmYXVsdC13aWR0aDogJGNvbDMtdW5pYm9hcmQtZGVmYXVsdC13aWR0aDtcblxuJGNvbDItdW5pYm9hcmQtc3F1ZWV6ZS10YWJsZTogbWlubWF4KDIwMHB4LCAyNDBweCk7XG4kY29sMi11bmlib2FyZC1zcXVlZXplLXdpZHRoOiBtaW5tYXgoY2FsYyg1NXZtaW4pLCBjYWxjKDEwMHZoIC0gI3skc2l0ZS1oZWFkZXItb3V0ZXItaGVpZ2h0fSAtICN7JGJsb2NrLWdhcH0pKTtcblxuJGNvbDEtdW5pYm9hcmQtY29udHJvbHM6ICRjb2wyLXVuaWJvYXJkLWNvbnRyb2xzO1xuIiwiQG1peGluIGJveC1yYWRpdXMge1xuICBib3JkZXItcmFkaXVzOiAkYm94LXJhZGl1cy1zaXplO1xufVxuXG5AbWl4aW4gYm94LXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6ICRib3gtc2hhZG93O1xufVxuXG5AbWl4aW4gYm94LW5lYXQge1xuICBAaW5jbHVkZSBib3gtcmFkaXVzO1xuICBAaW5jbHVkZSBib3gtc2hhZG93O1xufVxuXG5AbWl4aW4gZGVidWctem9vbS1pbnB1dCB7XG4gICN6b29tLWlucHV0IHtcbiAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtem9vbS1lbmFibGVkKSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIGJvdHRvbTogM3B4O1xuICAgICAgcmlnaHQ6IDNweDtcbiAgICAgIHdpZHRoOiAxMHZ3O1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHJhbnNpdGlvbigkcHJvcDogYWxsLCAkZHVyOiAkdHJhbnNpdGlvbi1kdXJhdGlvbikge1xuICB0cmFuc2l0aW9uOiAkcHJvcCAkZHVyO1xufVxuXG5AbWl4aW4gaG92ZXJmbG93IHtcbiAgb3ZlcmZsb3cteTogYXV0bztcblxuICBAbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBoaWRlIHtcbiAgZGlzcGxheTogbm9uZTtcblxuICAuYmxpbmQtbW9kZSAmIHtcbiAgICBkaXNwbGF5OiBpbmhlcml0O1xuICB9XG59XG5cbkBtaXhpbiBlbGxpcHNpcyB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuXG5AbWl4aW4gY3Jvc3N0YWJsZS1sYXJnZSB7XG4gIC5jcm9zc3RhYmxlX191c2VycyB7XG4gICAgZmxleDogNyAxIGF1dG87XG4gIH1cbn1cblxuQG1peGluIGNyb3NzdGFibGUtc21hbGwge1xuICAuY3Jvc3N0YWJsZV9fdXNlcnMge1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICB9XG59XG5cbi8qIGF0bSBvbmx5IGNocm9tZSBzdXBwb3J0cyBtaW4tY29udGVudCwgbWF4LWNvbnRlbnQgKi9cbkBtaXhpbiBwcm9wZXItZ3JpZCB7XG4gIEBzdXBwb3J0cyAoaGVpZ2h0OiBtYXgtY29udGVudCkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBib2R5LWZpeGVkLXNjcm9sbCB7XG4gIGJvZHkge1xuICAgIC8qIHByZXZlbnRzIHNjcm9sbCBiYXIgZmxpY2tlciB3aGVuIGRyYWdnaW5nIGEgcGllY2Ugb3V0ICovXG4gICAgb3ZlcmZsb3cteTogc2Nyb2xsO1xuICB9XG59XG4iLCIlYmFzZS1mb250LWZhbGxiYWNrIHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIFNhbnMnLCBTYW5zLVNlcmlmO1xufVxuXG4lYmFzZS1mb250IHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIFNhbnMnO1xufVxuXG4lcm9ib3RvIHtcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xufVxuXG4lcm9ib3RvLWZhdCB7XG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuJWNoZXNzLWZvbnQge1xuICBmb250LWZhbWlseTogJ05vdG8gQ2hlc3MnLCAnTm90byBTYW5zJztcbn1cblxuJXNhbiB7XG4gIEBleHRlbmQgJWNoZXNzLWZvbnQ7XG5cbiAgLnBpZWNlLWxldHRlciAmIHtcbiAgICBAZXh0ZW5kICViYXNlLWZvbnQ7XG4gIH1cbn1cblxuLyogdGV4dCBwcmludGVkIGRpcmVjdGx5IG9uIHRoZSBwYWdlIGJhY2tncm91bmQgZGVzZXJ2ZXMgc3BlY2lhbCB0cmVhdG1lbnQgKHRyYW5zcCB0aGVtZSkgKi9cbiVwYWdlLWZvbnQge1xuICBjb2xvcjogJGMtZm9udC1wYWdlO1xufVxuXG4lcGFnZS10ZXh0IHtcbiAgQGV4dGVuZCAlcGFnZS1mb250LCAlcGFnZS10ZXh0LXNoYWRvdyAhb3B0aW9uYWw7XG59XG5cbiVwYWdlLWxpbmsge1xuICBAZXh0ZW5kICVwYWdlLWxpbmstZm9udCAhb3B0aW9uYWw7XG5cbiAgQGV4dGVuZCAlcGFnZS10ZXh0LXNoYWRvdyAhb3B0aW9uYWw7XG59XG5cbiVtZXRhbCB7XG4gIEBpbmNsdWRlIG1ldGFsO1xufVxuXG4lbWV0YWwtaG92ZXIge1xuICBAaW5jbHVkZSBtZXRhbC1ob3Zlcjtcbn1cblxuJXBhZ2UtbWV0YWwge1xuICBAaW5jbHVkZSBwYWdlLW1ldGFsO1xufVxuXG4lcGFnZS1tZXRhbC1ob3ZlciB7XG4gIEBpbmNsdWRlIHBhZ2UtbWV0YWw7XG59XG5cbiVtZXRhbC1iZyB7XG4gIEBpbmNsdWRlIG1ldGFsLWJnO1xufVxuXG4lYWN0aXZlLWluc2V0LXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IDAgM3B4IDRweCBoc2xhKDAsIDAsIDAsIDAuMTUpIGluc2V0O1xufVxuXG4lYWN0aXZlIHtcbiAgQGV4dGVuZCAlYWN0aXZlLWluc2V0LXNoYWRvdztcblxuICBiYWNrZ3JvdW5kOiAjYmQxMTFmO1xuICBjb2xvcjogI2ZmZjtcbiAgdGV4dC1zaGFkb3c6IDFweCAxcHggMXB4IHdoaXRlICFpbXBvcnRhbnQ7XG59XG5cbiN0cmFpbmVyIGdyb3VwLnJhZGlvIGlucHV0OmNoZWNrZWQgKyBsYWJlbHtcbiAgYmFja2dyb3VuZDogIzA0NTZiYztcbn1cblxuJWFjdGl2ZS1ob3ZlciB7XG4gIGJhY2tncm91bmQ6IG1peCh3aGl0ZSwgJGMtYWNjZW50LCAyMCUpO1xufVxuXG4lYWN0aXZlLXNvZnQge1xuICBAZXh0ZW5kICVhY3RpdmUtaW5zZXQtc2hhZG93O1xuXG4gIGJhY2tncm91bmQ6ICMwNDU2YmM7XG4gIGNvbG9yOiAjZmZmZmZmO1xuICB0ZXh0LXNoYWRvdzogMXB4IDFweCAxcHggJGMtZm9udC1zaGFkb3cgIWltcG9ydGFudDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbiVkcm9wZG93bi1zaGFkb3cge1xuICBib3gtc2hhZG93OiAtMXB4IDVweCA2cHggcmdiYSgwLCAwLCAwLCAwLjMpO1xufVxuXG4lcG9wdXAtc2hhZG93IHtcbiAgYm94LXNoYWRvdzogMCAxNHB4IDI4cHggcmdiYSgwLCAwLCAwLCAwLjI1KSwgMCAxMHB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjIyKTtcbn1cblxuJWJ1dHRvbi1zaGFkb3cge1xuICBib3gtc2hhZG93OiAwIDJweCA1cHggMCBoc2xhKDAsIDAsIDAlLCAwLjIyNSk7XG59XG5cbiVidXR0b24tcmFpc2VkLXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDEwcHggMHB4IGhzbGEoMCwgMCwgMCwgMC4yMjUpO1xufVxuXG4lYnV0dG9uLW5vbmUge1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICBib3JkZXI6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGNvbG9yOiAkYy1mb250O1xufVxuXG4lY2hlY2tib3gge1xuICBAZXh0ZW5kICVib3gtcmFkaXVzO1xuXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgYmFja2dyb3VuZDogJGMtYmctcGFnZTtcbiAgYm9yZGVyOiAxcHggc29saWQgJGMtYmctbG93O1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmc6IC41ZW07XG5cbiAgJjpjaGVja2VkIHtcbiAgICBiYWNrZ3JvdW5kOiAjMDQ1NmJjO1xuICAgIGJvcmRlci1jb2xvcjogIzA0NTZiYztcbiAgfVxufVxuXG4lZm9jdXMtc2hhZG93IHtcbiAgYm94LXNoYWRvdzogMCAwIDEycHggJGMtZm9udC1kaW07XG59XG5cbiVub3dyYXAtaGlkZGVuIHtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuJW5vd3JhcC1lbGxpcHNpcyB7XG4gIEBleHRlbmQgJWVsbGlwc2lzO1xuXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbiVib3gtcGFkZGluZyB7XG4gIHBhZGRpbmc6IDV2aCB2YXIoLS1ib3gtcGFkZGluZyk7XG59XG5cbiVib3gtcGFkZGluZy1ob3JpeiB7XG4gIHBhZGRpbmc6IDAgdmFyKC0tYm94LXBhZGRpbmcpO1xufVxuXG4lYnJlYWstd29yZCB7XG4gIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG59XG5cbiVicmVhay13b3JkLWhhcmQge1xuICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xuICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG5cbiAgLyogc3VwcG9ydDogZmlyZWZveCAqL1xuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xufVxuXG4lYnJlYWstbm9wZSB7XG4gIG92ZXJmbG93LXdyYXA6IG5vcm1hbDtcbiAgd29yZC1icmVhazogbm9ybWFsO1xufVxuXG4lZWxsaXBzaXMge1xuICBAaW5jbHVkZSBlbGxpcHNpcztcbn1cblxuJXNxdWFyZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGhlaWdodDogMDtcbiAgcGFkZGluZy1ib3R0b206IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4ldmlkZW8ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IDA7XG4gIHBhZGRpbmctYm90dG9tOiA1Ni4yNSU7XG5cbiAgLyogMTYvOSAqL1xuICAvLyBwYWRkaW5nLWJvdHRvbTogNzUlOyAvKiA0LzMgKi9cbiAgd2lkdGg6IDEwMCU7XG5cbiAgPiAqIHtcbiAgICBAZXh0ZW5kICVhYnMtMTAwO1xuXG4gICAgYm9yZGVyOiBub25lO1xuICB9XG59XG5cbiVkYXRhLWljb24ge1xuICBmb250LXNpemU6IDEuMmVtO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBmb250LWZhbWlseTogJ2xpY2hlc3MnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICBzcGVhazogbm9uZTtcbiAgY29udGVudDogYXR0cihkYXRhLWljb24pO1xuICBvcGFjaXR5OiAwLjk7XG59XG5cbiVkYXRhLWljb24tdG9wIHtcbiAgJjo6YmVmb3JlIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC10b3A7XG4gIH1cbn1cblxuJWZ1bGxzY3JlZW4tbWFzayB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICBiYWNrZ3JvdW5kOiAkYy1wYWdlLW1hc2s7XG4gIHotaW5kZXg6IHooXCJmdWxsc2NyZWVuLW1hc2tcIik7XG59XG5cbiVsaW5rLW92ZXJsYXkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgei1pbmRleDogeihcImxpbmstb3ZlcmxheVwiKTtcbn1cblxuJWFicy0xMDAge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG4iLCIlZmxleC13cmFwIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcbn1cblxuJWZsZXgtY2VudGVyIHtcbiAgLyogZXh0ZW5kcyAlZmxleC13cmFwICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbiVmbGV4LWNlbnRlci1ub3dyYXAge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbiVmbGV4LWJldHdlZW4ge1xuICAvKiBleHRlbmRzICVmbGV4LWNlbnRlciAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG59XG5cbiVmbGV4LWJldHdlZW4tbm93cmFwIHtcbiAgLyogZXh0ZW5kcyAlZmxleC1jZW50ZXIgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG59XG5cbiVmbGV4LWJldHdlZW4tc3RyZXRjaCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG59XG5cbiVmbGV4LWFyb3VuZCB7XG4gIC8qIGV4dGVuZHMgJWZsZXgtY2VudGVyICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xufVxuXG4lZmxleC1jb2x1bW4ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IGNvbHVtbjtcbn1cbiIsIiVib3gtcmFkaXVzIHtcbiAgQGluY2x1ZGUgYm94LXJhZGl1cztcbn1cblxuJWJveC1yYWRpdXMtZm9yY2Uge1xuICBAZXh0ZW5kICVib3gtcmFkaXVzO1xuXG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgLyogaGVscHMgd2l0aCBjbGlwcGluZyBiYWNrZ3JvdW5kIGludG8gYm9yZGVyLXJhZGl1cyAqL1xufVxuXG4lYm94LXJhZGl1cy1sZWZ0IHtcbiAgYm9yZGVyLXJhZGl1czogJGJveC1yYWRpdXMtc2l6ZSAwIDAgJGJveC1yYWRpdXMtc2l6ZTtcbn1cblxuJWJveC1yYWRpdXMtcmlnaHQge1xuICBib3JkZXItcmFkaXVzOiAwICRib3gtcmFkaXVzLXNpemUgJGJveC1yYWRpdXMtc2l6ZSAwO1xufVxuXG4lYm94LXJhZGl1cy10b3Age1xuICBib3JkZXItcmFkaXVzOiAkYm94LXJhZGl1cy1zaXplICRib3gtcmFkaXVzLXNpemUgMCAwO1xufVxuXG4lYm94LXJhZGl1cy1ib3R0b20ge1xuICBib3JkZXItcmFkaXVzOiAwIDAgJGJveC1yYWRpdXMtc2l6ZSAkYm94LXJhZGl1cy1zaXplO1xufVxuXG4lYm94LXJhZGl1cy10b3AtbGVmdCB7XG4gIGJvcmRlci1yYWRpdXM6ICRib3gtcmFkaXVzLXNpemUgMCAwIDA7XG59XG5cbiVib3gtcmFkaXVzLXRvcC1yaWdodCB7XG4gIGJvcmRlci1yYWRpdXM6IDAgJGJveC1yYWRpdXMtc2l6ZSAwIDA7XG59XG5cbiVib3gtc2hhZG93IHtcbiAgQGluY2x1ZGUgYm94LXNoYWRvdztcbn1cblxuJWJveC1uZWF0IHtcbiAgQGV4dGVuZCAlYm94LXNoYWRvdywgJWJveC1yYWRpdXM7XG59XG5cbiVib3gtbmVhdC10b3Age1xuICBAZXh0ZW5kICVib3gtc2hhZG93LCAlYm94LXJhZGl1cy10b3A7XG59XG5cbiVib3gtbmVhdC1mb3JjZSB7XG4gIEBleHRlbmQgJWJveC1zaGFkb3csICVib3gtcmFkaXVzLWZvcmNlO1xufVxuIiwiJHZwLW1pbi13aWR0aDogMzIwcHggIWRlZmF1bHQ7XG4kdnAtbWF4LXdpZHRoOiAxMjAwcHggIWRlZmF1bHQ7XG5cbkBmdW5jdGlvbiBzdHJpcC11bml0KCR2YWx1ZSkge1xuICBAcmV0dXJuICR2YWx1ZSAvICgkdmFsdWUgKiAwICsgMSk7XG59XG5cbkBtaXhpbiBmbHVpZC1zaXplKCRwcm9wLCAkbWluLXNpemUsICRtYXgtc2l6ZSwgJG1pbi12dzogJHZwLW1pbi13aWR0aCwgJG1heC12dzogJHZwLW1heC13aWR0aCkge1xuICAkdTE6IHVuaXQoJG1pbi12dyk7XG4gICR1MjogdW5pdCgkbWF4LXZ3KTtcbiAgJHUzOiB1bml0KCRtaW4tc2l6ZSk7XG4gICR1NDogdW5pdCgkbWF4LXNpemUpO1xuXG4gIEBpZiAkdTEgPT0gJHUyIGFuZCAkdTEgPT0gJHUzIGFuZCAkdTEgPT0gJHU0IHtcbiAgICAmIHtcbiAgICAgICN7JHByb3B9OiAkbWluLXNpemU7XG5cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluLXZ3KSB7XG4gICAgICAgICN7JHByb3B9OiBjYWxjKCN7JG1pbi1zaXplfSArICN7c3RyaXAtdW5pdCgkbWF4LXNpemUgLSAkbWluLXNpemUpfSAqICgoMTAwdncgLSAjeyRtaW4tdnd9KSAvICN7c3RyaXAtdW5pdCgkbWF4LXZ3IC0gJG1pbi12dyl9KSk7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWF4LXZ3KSB7XG4gICAgICAgICN7JHByb3B9OiAkbWF4LXNpemU7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAZXJyb3IgXCJmbHVpZC1zaXplIHJlcXVpcmVzIHRoYXQgYWxsIHZhbHVlcyBoYXZlIHRoZSBzYW1lIHVuaXRcIjtcbiAgfVxufVxuIiwiLmZidCB7XG4gIEBleHRlbmQgJWJ1dHRvbi1ub25lO1xuXG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG5cbiAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcblxuICBAbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuICAgICY6aG92ZXI6bm90KC5kaXNhYmxlZCk6bm90KFtkaXNhYmxlZF0pIHtcbiAgICAgIGJhY2tncm91bmQ6ICNlZDFjMjQ7XG4gICAgICBjb2xvcjogI2ZmZjtcbiAgICB9XG4gIH1cblxuICAmLmFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZDogI2JkMTExZiAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiAjZmZmO1xuICB9XG5cbiAgJi5kaXNhYmxlZCxcbiAgJltkaXNhYmxlZF0ge1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gIH1cbn1cbiIsIkBrZXlmcmFtZXMgYmFyLWdsaWRlci1hbmltIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTMwMHB4KTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMTAwcHgpO1xuICB9XG59XG5cbi5iYXItZ2xpZGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICY6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiA3MHB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpKTtcbiAgICBhbmltYXRpb246IGJhci1nbGlkZXItYW5pbSAzcyBsaW5lYXIgaW5maW5pdGU7XG4gIH1cbn1cbiIsIi5zbGlzdCB7XG4gIHdpZHRoOiAxMDAlO1xuICBib3JkZXItYm90dG9tOiAkYm9yZGVyO1xuXG4gIHRoZWFkIHtcbiAgICBAZXh0ZW5kICVtZXRhbCwgJXJvYm90bztcblxuICAgIHRoIHtcbiAgICAgIGJvcmRlci10b3A6ICRib3JkZXI7XG4gICAgICBib3JkZXItYm90dG9tOiAkYm9yZGVyO1xuICAgICAgcGFkZGluZzogLjVyZW0gLjhyZW07XG4gICAgfVxuXG4gICAgdGgubGFyZ2Uge1xuICAgICAgZm9udC1zaXplOiAxLjJyZW07XG4gICAgfVxuICB9XG5cbiAgdGQge1xuICAgIHBhZGRpbmc6IDFyZW07XG5cbiAgICAubGFiZWwge1xuICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTtcbiAgICAgIGZvbnQtc2l6ZTogLjhyZW07XG4gICAgfVxuICB9XG5cbiAgdGJvZHkgdHI6bnRoLWNoaWxkKGV2ZW4pIHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTtcbiAgfVxuXG4gIHRkOmZpcnN0LWNoaWxkLFxuICB0aDpmaXJzdC1jaGlsZCB7XG4gICAgcGFkZGluZy1sZWZ0OiAxLjVyZW07XG4gIH1cblxuICAmLXBhZCB7XG4gICAgdGQ6Zmlyc3QtY2hpbGQsXG4gICAgdGg6Zmlyc3QtY2hpbGQge1xuICAgICAgcGFkZGluZy1sZWZ0OiB2YXIoLS1ib3gtcGFkZGluZyk7XG4gICAgfVxuXG4gICAgdGQ6bGFzdC1jaGlsZCxcbiAgICB0aDpsYXN0LWNoaWxkIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IHZhcigtLWJveC1wYWRkaW5nKTtcbiAgICB9XG4gIH1cblxuICAmLWludmVydCB7XG4gICAgdGJvZHkgdHI6bnRoLWNoaWxkKG9kZCkge1xuICAgICAgYmFja2dyb3VuZDogJGMtYmctemVicmE7XG4gICAgfVxuXG4gICAgdGJvZHkgdHI6bnRoLWNoaWxkKGV2ZW4pIHtcbiAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgfVxuICB9XG59XG4iLCIucHVsbC1xdW90ZSB7XG4gIG1hcmdpbjogMCBhdXRvO1xuXG4gIHAge1xuICAgIGNvbG9yOiAkYy1mb250O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBtYXJnaW46IDAgLjdlbTtcbiAgICBwYWRkaW5nOiAxZW0gMDtcbiAgICBib3JkZXI6ICRib3JkZXI7XG4gICAgYm9yZGVyLXdpZHRoOiAxcHggMDtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgZm9udC1zaXplOiAxLjFyZW07XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgYm90dG9tOiAtOXB4O1xuICAgICAgbGVmdDogNDJweDtcbiAgICAgIHdpZHRoOiAxNXB4O1xuICAgICAgaGVpZ2h0OiAxNXB4O1xuICAgICAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICAgICAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAkYy1ib3JkZXI7XG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGMtYm9yZGVyO1xuICAgICAgdHJhbnNmb3JtOiBza2V3KDQ1ZGVnKSByb3RhdGUoLTQ1ZGVnKTtcbiAgICB9XG4gIH1cblxuICAmLmxvbmcgcCB7XG4gICAgZm9udC1zaXplOiAxcmVtO1xuICB9XG5cbiAgZm9vdGVyIHtcbiAgICBtYXJnaW46IDEwcHg7XG4gICAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG5cbiAgICAmOmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAnXFwyMDE0XFwyMDA5JztcbiAgICB9XG4gIH1cbn1cbiIsIi5jb2xvci1pY29uIHtcbiAgQGlmICR0aGVtZS1saWdodCB7XG4gICAgJi53aGl0ZTo6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6IFwiS1wiO1xuICAgIH1cblxuICAgICYuYmxhY2s6OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBcIkpcIjtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICYud2hpdGU6OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBcIkpcIjtcbiAgICB9XG5cbiAgICAmLmJsYWNrOjpiZWZvcmUge1xuICAgICAgY29udGVudDogXCJLXCI7XG4gICAgfVxuICB9XG5cbiAgJi5yYW5kb206OmJlZm9yZSB7XG4gICAgY29udGVudDogXCJsXCI7XG4gIH1cbn1cbiIsIi5ub3ctcGxheWluZyB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIC0tbnAtbWluLXdpZHRoOiAyMDBweDtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1ub3QteHgtc21hbGwpIHtcbiAgICAtLW5wLW1pbi13aWR0aDogNTAlO1xuICB9XG5cblxuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCh2YXIoLS1ucC1taW4td2lkdGgpLCAxZnIpKTtcblxuICA+IGEge1xuICAgIGNvbG9yOiAkYy1mb250O1xuICAgIHBhZGRpbmc6IC4zZW07XG4gIH1cblxuICAuaW5kaWNhdG9yIHtcbiAgICBjb2xvcjogJGMtYWNjZW50O1xuICAgIG1hcmdpbi10b3A6IC0zcHg7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICBjZy1ib2FyZCB7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgfVxufVxuIiwiLnBvZGl1bS13cmFwIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nLWJvdHRvbTogMjBweDtcblxuICAjY29uZmV0dGkge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAyNXM7XG5cbiAgICAmLmZhZGVkIHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICB9XG59XG5cbi5wb2RpdW0ge1xuICA+IGRpdiB7XG4gICAgQGV4dGVuZCAlZWxsaXBzaXM7XG5cbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG5cbiAgLmZpcnN0IHtcbiAgICB3aWR0aDogNDQlO1xuICAgIGZvbnQtc2l6ZTogMS42ZW07XG4gIH1cblxuICAuc2Vjb25kIHtcbiAgICBmb250LXNpemU6IDEuM2VtO1xuICAgIHdpZHRoOiAyOSU7XG4gIH1cblxuICAudGhpcmQge1xuICAgIGZvbnQtc2l6ZTogMS4yZW07XG4gICAgd2lkdGg6IDI3JTtcbiAgfVxuXG4gIC50cm9waHkge1xuICAgIG1hcmdpbjogMCBhdXRvIC41ZW0gYXV0bztcbiAgICBiYWNrZ3JvdW5kOiBjZW50ZXIgLyBjb250YWluIG5vLXJlcGVhdDtcbiAgfVxuXG4gIC5maXJzdCAudHJvcGh5IHtcbiAgICBoZWlnaHQ6IDllbTtcbiAgICB3aWR0aDogOWVtO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGltZy11cmwoXCJ0cm9waHkvbGljaGVzcy1tYXNzaXZlLnN2Z1wiKTtcbiAgfVxuXG4gIC5zZWNvbmQgLnRyb3BoeSB7XG4gICAgaGVpZ2h0OiA5ZW07XG4gICAgd2lkdGg6IDdlbTtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbWctdXJsKFwidHJvcGh5L2xpY2hlc3Mtc2lsdmVyLTEuc3ZnXCIpO1xuICB9XG5cbiAgLnRoaXJkIC50cm9waHkge1xuICAgIGhlaWdodDogN2VtO1xuICAgIHdpZHRoOiA3ZW07XG4gICAgYmFja2dyb3VuZC1pbWFnZTogaW1nLXVybChcInRyb3BoeS9saWNoZXNzLWJyb256ZS0yLnN2Z1wiKTtcbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLW5vdC14eC1zbWFsbCkge1xuICAgIC50cm9waHkge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuXG4gIC51c2VyLWxpbmsge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGxldHRlci1zcGFjaW5nOiAtMXB4O1xuICB9XG5cbiAgLnN0YXRzIHtcbiAgICBtYXJnaW46IC41ZW0gYXV0byAwIGF1dG87XG4gICAgZm9udC1zaXplOiAuN2VtO1xuXG4gICAgdGgge1xuICAgICAgbGV0dGVyLXNwYWNpbmc6IC0xcHg7XG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIH1cblxuICAgIHRkIHtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgcGFkZGluZy1sZWZ0OiA1cHg7XG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB9XG4gIH1cblxuICAudGhpcmQgLnN0YXRzIHtcbiAgICBmb250LXNpemU6IC44ZW07XG4gIH1cbn1cbiIsIkBpbXBvcnQgXCIuLi8uLi8uLi9jb21tb24vY3NzL2Jhc2Uvc2Nyb2xsYmFyXCI7XG5cbkBpbXBvcnQgXCJ0YWJcIjtcbkBpbXBvcnQgXCJtZW1iZXJzXCI7XG5AaW1wb3J0IFwiZGlzY3Vzc2lvblwiO1xuQGltcG9ydCBcInBhbGFudGlyXCI7XG5cbi5tY2hhdCB7XG4gIEBleHRlbmQgJWJveC1uZWF0LWZvcmNlLCAlZmxleC1jb2x1bW47XG5cbiAgZ3JpZC1hcmVhOiBjaGF0O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHN0cmV0Y2g7XG5cbiAgJl9fY29udGVudCB7XG4gICAgQGV4dGVuZCAlZmxleC1jb2x1bW47XG5cbiAgICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG4gICAgZmxleDogMSAxIGF1dG87XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICYubm90ZSB0ZXh0YXJlYSB7XG4gICAgICBmb250LXNpemU6IC45ZW07XG4gICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICBib3JkZXI6IG5vbmU7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjdlbTtcbiAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICByZXNpemU6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgbWluLWhlaWdodDogMTVlbTtcbn1cbiIsImJvZHkgOjotd2Via2l0LXNjcm9sbGJhcixcbmJvZHkgOjotd2Via2l0LXNjcm9sbGJhci1jb3JuZXIge1xuICB3aWR0aDogLjVyZW07XG4gIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbn1cblxuYm9keSA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgYmFja2dyb3VuZDogJGMtc2hhZGU7XG59XG5cbmJvZHkgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlcixcbmJvZHkgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjphY3RpdmUge1xuICBiYWNrZ3JvdW5kOiAkYy1mb250LWRpbW1lcjtcbn1cbiIsIi5tY2hhdCB7XG4gICZfX3RhYnMge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gIH1cblxuICAmX190YWIge1xuICAgIEBleHRlbmQgJXJvYm90bywgJW5vd3JhcC1oaWRkZW4sICVib3gtcmFkaXVzLXRvcDtcblxuICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAuNGVtIDEwcHg7XG5cbiAgICAvLyBiYWNrZ3JvdW5kOiAkYy1zaGFkZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgY29sb3I6ICRjLWZvbnQtcGFnZTtcblxuICAgIEBpbmNsdWRlIHRyYW5zaXRpb247XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6IG1peCgkYy1hY2NlbnQsICRjLWJnLWJveCwgMTUlKTtcbiAgICB9XG5cbiAgICAmLWFjdGl2ZSB7XG4gICAgICBjb2xvcjogJGMtZm9udDtcbiAgICAgIGJhY2tncm91bmQ6ICRjLWJnLWJveCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIGlucHV0IHtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAgIEBleHRlbmQgJWNoZWNrYm94O1xuICAgIH1cblxuICAgICYtYWN0aXZlIGlucHV0IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIHNwYW4ge1xuICAgICAgQGV4dGVuZCAlbm93cmFwLWVsbGlwc2lzO1xuICAgIH1cblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBib3JkZXItcmlnaHQ6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgJi1vcHRpb25hbCAubWNoYXRfX3RhYi5kaXNjdXNzaW9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG59XG4iLCIuY2hhdF9fbWVtYmVycyB7XG4gIEBleHRlbmQgJXBhZ2UtdGV4dDtcblxuICBmb250LXNpemU6IC45ZW07XG5cbiAgLy8gbWluLWhlaWdodDogNWVtO1xuICAvLyBtYXgtaGVpZ2h0OiA5ZW07XG4gIGhlaWdodDogMTAwJTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbiIsIi5tY2hhdCB7XG4gICZfX21lc3NhZ2VzIHtcbiAgICBAZXh0ZW5kICVicmVhay13b3JkO1xuXG4gICAgZmxleDogMSAxIGF1dG87XG4gICAgbWF4LWhlaWdodDogNTB2aDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDMtdW5pYm9hcmQpIHtcbiAgICAgIG1heC1oZWlnaHQ6IG5vbmU7XG4gICAgfVxuXG5cbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICBjdXJzb3I6IGluaXRpYWw7XG4gICAgZm9udC1zaXplOiAuOWVtO1xuXG4gICAgbGkge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgcGFkZGluZzogLjVlbSAwIC41ZW0gMTBweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjJlbTtcbiAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcbiAgICAgIHVzZXItc2VsZWN0OiB0ZXh0O1xuICAgIH1cblxuICAgIC5kZWxldGVkIHtcbiAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICB9XG5cbiAgICAuc3lzdGVtIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgb3BhY2l0eTogMC44O1xuICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgZm9udC1zaXplOiAuOWVtO1xuICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmNvbG9yLFxuICAgIC51c2VyLWxpbmsge1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgICAgY29sb3I6ICRjLWZvbnQtZGltO1xuICAgICAgbGV0dGVyLXNwYWNpbmc6IC0xcHg7XG4gICAgICBtYXJnaW4tcmlnaHQ6IC40ZW07XG4gICAgfVxuXG4gICAgLnV0aXRsZSB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDNweDtcbiAgICB9XG5cbiAgICBhOm5vdCgudXNlci1saW5rKSB7XG4gICAgICBAZXh0ZW5kICVyb2JvdG87XG4gICAgfVxuXG4gICAgaSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiA1cHg7XG4gICAgICByaWdodDogMDtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIG1hcmdpbi1yaWdodDogM3B4O1xuICAgICAgcGFkZGluZzogNHB4IDVweDtcbiAgICAgIG9wYWNpdHk6IDAuNztcbiAgICAgIGNvbG9yOiAkYy1hY2NlbnQ7XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxpOmhvdmVyIGkge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB0ZXh0LXNoYWRvdzogMCAwIDJweCAkYy1iZy1ib3gsIDAgMCA1cHggJGMtYmctYm94LCAwIDAgMTBweCAkYy1iZy1ib3g7XG4gICAgfVxuICB9XG5cbiAgJl9fc2F5IHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBib3JkZXI6IDA7XG4gICAgYm9yZGVyLXRvcDogJGJvcmRlcjtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgIHBhZGRpbmc6IDNweCAyMHB4IDNweCA0cHg7XG5cbiAgICAmLndoaXNwZXIge1xuICAgICAgY29sb3I6ICRjLWdvb2Q7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICB9XG4gIH1cbn1cbiIsIkBrZXlmcmFtZXMgcGFsYW50aXItZ2xvd2luZyB7XG4gIDQwJSB7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgfVxuXG4gIDUwJSB7XG4gICAgYmFja2dyb3VuZDogbWl4KCRjLXNlY29uZGFyeSwgJGMtYmctYm94LCAzMCUpO1xuICB9XG5cbiAgNjAlIHtcbiAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtcHJpbWFyeSwgJGMtYmctYm94LCAzMCUpO1xuICB9XG5cbiAgNzAlIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICB9XG59XG5cbi5wYWxhbnRpciB7XG4gIGZsZXg6IDAgMSBhdXRvO1xuICBhbmltYXRpb246IHBhbGFudGlyLWdsb3dpbmcgMS41cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgYm9yZGVyLXJhZGl1czogMCAzcHggMCAwO1xuXG4gICYtc2xvdCB7XG4gICAgYW5pbWF0aW9uOiBub25lO1xuICAgIG9wYWNpdHk6IC42O1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgfVxuXG4gICYtb2ZmIHtcbiAgICBhbmltYXRpb246IG5vbmU7XG4gIH1cblxuICAmLW9uIHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1nb29kO1xuICAgIGNvbG9yOiAkYy1nb29kLW92ZXI7XG4gICAgYW5pbWF0aW9uOiBub25lO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iYWQgIWltcG9ydGFudDtcbiAgICAgIGNvbG9yOiAkYy1iYWQtb3ZlciAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuXG4gICY6OmFmdGVyIHtcbiAgICB0b3A6IDFweDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiBhdXRvO1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgfVxufVxuIiwiJG1xLWNvbDE6ICRtcS1jb2wxLXVuaWJvYXJkO1xuJG1xLWNvbDI6ICRtcS1zbWFsbDtcbiRtcS1jb2wzOiAkbXEtY29sMy11bmlib2FyZDtcblxuQGltcG9ydCBcImxheW91dFwiO1xuQGltcG9ydCBcInNpZGVcIjtcbkBpbXBvcnQgXCJib2FyZHNcIjtcbkBpbXBvcnQgXCJhcHAtaGVhZGVyXCI7XG5AaW1wb3J0IFwiYXBwLW5vdGljZVwiO1xuQGltcG9ydCBcImFwcC1jb250cm9sXCI7XG5AaW1wb3J0IFwiYXBwLXN0YW5kaW5nXCI7XG5AaW1wb3J0IFwic3RhdHNcIjtcbkBpbXBvcnQgXCJwbGF5ZXItaW5mb1wiO1xuXG4uc3dpc3Mge1xuICAucHVsbC1xdW90ZSB7XG4gICAgbWFyZ2luLXRvcDogMzBweDtcbiAgICB3aWR0aDogMzAwcHg7XG4gIH1cblxuICAmX19tYWluLWNyZWF0ZWQge1xuICAgIHBhZGRpbmctYm90dG9tOiAyZW07XG5cbiAgICAvKiBhcyBxdW90ZSBtYXJnaW4gKi9cbiAgfVxufVxuIiwiQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMikge1xuICAjbWFpbi13cmFwIHtcbiAgICAtLW1haW4tbWF4LXdpZHRoOiBhdXRvO1xuICB9XG59XG5cblxuJGNoYXQtb3B0aW1hbC1zaXplOiBjYWxjKDEwMHZoIC0gI3skc2l0ZS1oZWFkZXItb3V0ZXItaGVpZ2h0fSAtICN7JGJsb2NrLWdhcH0gLSAzcmVtKTtcblxuLnN3aXNzIHtcbiAgZGlzcGxheTogZ3JpZDtcblxuICAmX19zaWRlIHtcbiAgICBncmlkLWFyZWE6IHNpZGU7XG4gIH1cblxuICAmX190YWJsZSB7XG4gICAgZ3JpZC1hcmVhOiB0YWJsZTtcbiAgfVxuXG4gICZfX21haW4ge1xuICAgIGdyaWQtYXJlYTogbWFpbjtcbiAgfVxuXG4gIC5jaGF0X19tZW1iZXJzIHtcbiAgICBncmlkLWFyZWE6IHVjaGF0O1xuICB9XG5cbiAgLnN3aXNzX19ib2FyZF9fdG9wIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgZ3JpZC10ZW1wbGF0ZS1hcmVhczogJ21haW4nICdzaWRlJyAndWNoYXQnICd0YWJsZSc7XG4gIGdyaWQtZ2FwOiAkYmxvY2stZ2FwO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDIpIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6ICRjb2wyLXVuaWJvYXJkLWRlZmF1bHQtd2lkdGggJGNvbDItdW5pYm9hcmQtdGFibGU7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAkY2hhdC1vcHRpbWFsLXNpemUgbWluLWNvbnRlbnQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1hcmVhczogJ21haW4gIHNpZGUnICdtYWluICB1Y2hhdCcgJ3RhYmxlIHRhYmxlJztcblxuICAgIC5tY2hhdF9fbWVzc2FnZXMge1xuICAgICAgbWF4LWhlaWdodDogaW5oZXJpdDtcbiAgICB9XG4gIH1cblxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDMpIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6ICRjb2wzLXVuaWJvYXJkLXNpZGUgJGNvbDMtdW5pYm9hcmQtZGVmYXVsdC13aWR0aCAkY29sMy11bmlib2FyZC10YWJsZTtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6ICRjaGF0LW9wdGltYWwtc2l6ZSBhdXRvO1xuICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6ICdzaWRlICBtYWluIHRhYmxlJyAndWNoYXQgbWFpbiB0YWJsZSc7XG5cbiAgICAuc3dpc3NfX2JvYXJkX190b3Age1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICB9XG59XG4iLCIuc3dpc3NfX3NpZGUge1xuICBAZXh0ZW5kICVmbGV4LWNvbHVtbjtcblxuICAubWNoYXQge1xuICAgIGZsZXg6IDEgMSA3ZW07XG4gICAgbWFyZ2luLXRvcDogJGJsb2NrLWdhcDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDIpIHtcbiAgICAgIG1pbi1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgfVxuICB9XG5cbiAgLnRvdXJfX3ByaXplIHtcbiAgICBAZXh0ZW5kICVib3gtcmFkaXVzO1xuXG4gICAgcGFkZGluZzogMWVtO1xuICAgIGJhY2tncm91bmQ6IG1peCgkYy1lcnJvciwgJGMtYmctYm94LCAxMCUpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRjLWVycm9yO1xuICAgIG1hcmdpbi1ib3R0b206IDFlbTtcbiAgICBmb250LXNpemU6IC45ZW07XG4gIH1cbn1cblxuLnN3aXNzX19tZXRhIHtcbiAgQGV4dGVuZCAlYm94LW5lYXQtZm9yY2U7XG5cbiAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICBwYWRkaW5nOiAjeyRibG9jay1nYXAgKiAwLjZ9ICRibG9jay1nYXA7XG5cbiAgc2VjdGlvbiB7XG4gICAgbWFyZ2luLWJvdHRvbTogJGJsb2NrLWdhcDtcblxuICAgICZbZGF0YS1pY29uXSB7XG4gICAgICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXA7XG4gICAgfVxuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGZvbnQtc2l6ZTogM3JlbTtcbiAgICAgIG1hcmdpbi1yaWdodDogNCU7XG4gICAgfVxuXG4gICAgcCB7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxuXG4gICAgLnNldHVwIHtcbiAgICAgIEBleHRlbmQgJW5vd3JhcC1oaWRkZW47XG4gICAgfVxuXG4gICAgdGltZSB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgfVxuXG4gIC5kZXNjcmlwdGlvbiB7XG4gICAgQGV4dGVuZCAlYnJlYWstd29yZDtcblxuICAgIG1heC1oZWlnaHQ6IDIwdmg7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgfVxufVxuXG4uY2hhdF9fbWVtYmVycyB7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xuXG4gIC8qIGZpeGVzIGludmlzaWJsZSBzcGVjdGF0b3JzIG9uIGZpcmVmb3gsIGNvbDIgKi9cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMSkge1xuICAgIG1hcmdpbjogMCAkYmxvY2stZ2FwO1xuICB9XG59XG4iLCIuc3dpc3NfX2JvYXJkcyB7XG4gIG1hcmdpbjogJGJsb2NrLWdhcCAwO1xuICBncmlkLWdhcDogMWNoO1xuICAtLW5wLW1pbi13aWR0aDogMjAwcHg7XG59XG5cbi5zd2lzc19fYm9hcmQge1xuICBAZXh0ZW5kICVib3gtbmVhdC1mb3JjZSwgJWZsZXgtY29sdW1uO1xuXG4gIC5taW5pLWdhbWVfX3BsYXllciB7XG4gICAgQGV4dGVuZCAlZmxleC1jZW50ZXItbm93cmFwO1xuXG4gICAgcGFkZGluZzogLjJlbTtcbiAgfVxuXG4gIC5taW5pLWdhbWVfX3VzZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG5cbiAgICBzdHJvbmcge1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAxY2g7XG4gICAgfVxuICB9XG59XG4iLCIuc3dpc3NfX21haW5fX2hlYWRlciB7XG4gIEBleHRlbmQgJWZsZXgtY2VudGVyLW5vd3JhcDtcblxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1pbi1oZWlnaHQ6IDdlbTtcbiAgcGFkZGluZzogMCAjeyRibG9jay1nYXAgKiAxLjV9O1xuXG4gIGgxIHtcbiAgICBmb250LXNpemU6IDIuMnJlbTtcbiAgICBmbGV4OiA5IDEgYXV0bztcbiAgICBtYXJnaW46IDA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgIGEge1xuICAgICAgLyogR00gd2lraXBlZGlhICovXG4gICAgICBjb2xvcjogbWl4KCRjLWxpbmssICRjLWZvbnQsIDM1JSk7XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogJGMtbGluaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpbWcge1xuICAgIGZsZXg6IDAgMCA2MHB4O1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiA2MHB4O1xuICAgIGhlaWdodDogNjBweDtcbiAgICBwYWRkaW5nOiA2cHg7XG4gIH1cblxuICAuaW1nIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDFyZW07XG4gIH1cblxuICBpOjpiZWZvcmUge1xuICAgIGZvbnQtc2l6ZTogMi4ycmVtO1xuICB9XG5cbiAgLmNsb2NrIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBjb2xvcjogJGMtZm9udC1kaW07XG5cbiAgICAmLWNyZWF0ZWQge1xuICAgICAgQGV4dGVuZCAlZmxleC1jb2x1bW47XG5cbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIC5vbmdvaW5nIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXA7XG5cbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBjb2xvcjogJGMtZm9udC1kaW07XG5cbiAgICAuc2h5IHtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gICAgfVxuXG4gICAgLm5iIHtcbiAgICAgIEBleHRlbmQgJXJvYm90bztcblxuICAgICAgY29sb3I6ICRjLWJyYWc7XG4gICAgICBmbGV4OiAxIDEgMTAwJTtcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgZm9udC1zaXplOiAyLjhlbTtcbiAgICAgIG1hcmdpbi1yaWdodDogLjVlbTtcbiAgICB9XG4gIH1cblxuICAuc3dpc3NfX21haW4tZmluaXNoZWQgJiBoMSB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG5cbiAgLnRpbWUge1xuICAgIEBleHRlbmQgJXJvYm90bztcblxuICAgIGNvbG9yOiAkYy1icmFnO1xuICAgIGZvbnQtc2l6ZTogMS43ZW07XG4gICAgbWFyZ2luLWxlZnQ6IC4yZW07XG4gIH1cblxuICAuc2h5IHtcbiAgICBsaW5lLWhlaWdodDogMjBweDtcbiAgICBmb250LXNpemU6IC45ZW07XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBvcGFjaXR5OiAwLjY7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgfVxufVxuIiwiLnN3aXNzX19ub3RpY2Uge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZDogJGMtZ29vZDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nOiAuNWVtIDA7XG4gIG9wYWNpdHk6IDAuODtcblxuICAmLmNsb3NlZCB7XG4gICAgYmFja2dyb3VuZDogJGMtcHJpbWFyeTtcbiAgfVxufVxuXG4uc3dpc3NfX3VyLXBsYXlpbmcge1xuICBAZXh0ZW5kICVmbGV4LWNvbHVtbjtcblxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMS41ZW07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAmOjpiZWZvcmUsXG4gICY6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnVSc7XG4gICAgZm9udC1zaXplOiAycmVtO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDMwcHg7XG4gIH1cblxuICAmOjpiZWZvcmUge1xuICAgIGxlZnQ6IDMwcHg7XG4gIH1cblxuICAmOjphZnRlciB7XG4gICAgcmlnaHQ6IDMwcHg7XG4gIH1cbn1cbiIsIi5zd2lzc19fY29udHJvbHMge1xuICBAZXh0ZW5kICVtZXRhbCwgJWZsZXgtYmV0d2VlbiwgJWJveC1zaGFkb3c7XG5cbiAgcGFkZGluZzogMCAwcHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAuZmJ0IHtcbiAgICBwYWRkaW5nOiAuNmVtIC44ZW07XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS14eC1zbWFsbCkge1xuICAgICAgcGFkZGluZzogLjZlbSAxZW07XG4gICAgfVxuXG5cbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjM7XG4gIH1cblxuICAuaGlnaGxpZ2h0IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IDVweDtcbiAgICB0b3A6IC0zcHg7XG4gICAgcGFkZGluZzogOHB4IDIwcHg7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGNvbG9yOiAjRkZGO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiAjODJCRjU2O1xuICAgIGJvcmRlci1ib3R0b206IDVweCBzb2xpZCAjNzU5OTAwO1xuICAgIHRleHQtc2hhZG93OiAwIC0xcHggIzc1OTkwMDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4xcztcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwcHgsIDBweCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGZpbHRlcjogYnJpZ2h0bmVzcygxLjA2KTtcbiAgICB9XG5cbiAgICAmOmFjdGl2ZSB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwcHgsIDVweCk7XG4gICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7XG4gICAgICB0ZXh0LXNoYWRvdzogMCAwICM3NTk5MDA7XG4gICAgICBmaWx0ZXI6IGJyaWdodG5lc3MoMSk7XG4gICAgfVxuICB9XG5cbiAgLnNwaW5uZXIge1xuICAgIG1hcmdpbjogMDtcbiAgICB3aWR0aDogMS41ZW07XG4gICAgaGVpZ2h0OiAxLjVlbTtcbiAgICBtYXJnaW4tcmlnaHQ6IC43ZW07XG4gIH1cblxuICAucGFnZXIge1xuICAgIEBleHRlbmQgJWZsZXgtY2VudGVyO1xuXG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG5cbiAgICAucGFnZSB7XG4gICAgICBtYXJnaW46IDAgM3B4O1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB9XG5cbiAgICBpbnB1dCB7XG4gICAgICBib3JkZXI6IG5vbmU7XG4gICAgICBiYWNrZ3JvdW5kOiBmYWRlLW91dCgkYy1zZWNvbmRhcnksIDAuOCk7XG4gICAgfVxuXG4gICAgLnNlYXJjaCxcbiAgICBpbnB1dCxcbiAgICAudHdpdHRlci10eXBlYWhlYWQge1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIC5zZWFyY2ggLnR0LW1lbnUgLnNwaW5uZXIge1xuICAgIGZsb2F0OiBub25lO1xuICAgIG1hcmdpbjogMTBweCBhdXRvO1xuICB9XG59XG5cbi5zY2hlZHVsZS1uZXh0LXJvdW5kIHtcbiAgQGV4dGVuZCAlZmxleC1jZW50ZXI7XG5cbiAgcGFkZGluZzogMWVtIDA7XG5cbiAgJi5yZXF1aXJlZCB7XG4gICAgYmFja2dyb3VuZDogJGMtYWNjZW50O1xuICB9XG5cbiAgaW5wdXQge1xuICAgIG1hcmdpbjogYXV0bztcbiAgfVxufVxuIiwiLnN3aXNzX19zdGFuZGluZyB7XG4gIGJvcmRlcjogbm9uZTtcblxuICAucGxheWVyIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDBweDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwcHg7XG5cbiAgICAubmFtZSB7XG4gICAgICBAZXh0ZW5kICVub3dyYXAtZWxsaXBzaXM7XG5cbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiA1cHg7XG4gICAgICBtYXgtd2lkdGg6IDE0MHB4O1xuICAgIH1cbiAgfVxuXG4gIC51c2VyLWxpbmsubG9uZyB7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjdweDtcbiAgfVxuXG4gIC51c2VyLWxpbmsgLnJhdGluZyB7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIGZvbnQtc2l6ZTogLjhlbTtcbiAgfVxuXG4gIHRyIHtcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uO1xuXG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIH1cblxuICAubG9hZGluZyB0Ym9keSB7XG4gICAgb3BhY2l0eTogMC42O1xuXG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbihvcGFjaXR5LCAwLjNzKTtcbiAgfVxuXG4gICY6bm90KC5jcmVhdGVkKTpub3QoLmxvYWRpbmcpIHRib2R5IHRyOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtcHJpbWFyeSwgJGMtYmctYm94LCAxNSUpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gIHRyLm1lIHRkOmZpcnN0LWNoaWxkIHtcbiAgICAkYy1tZS1ib3JkZXI6IG1peCgkYy1zZWNvbmRhcnksICRjLWJnLWJveCwgNzAlKTtcblxuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJGMtbWUtYm9yZGVyIDBweCwgJGMtbWUtYm9yZGVyIDVweCwgcmdiYSgwLCAwLCAwLCAwKSA1cHgsIHJnYmEoMCwgMCwgMCwgMCkgMTAwJSk7XG4gIH1cblxuICB0ci5hY3RpdmUgdGQ6bGFzdC1jaGlsZCB7XG4gICAgJGMtYWN0aXZlLWJvcmRlcjogbWl4KCRjLXByaW1hcnksICRjLWJnLWJveCwgNzAlKTtcblxuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCAkYy1hY3RpdmUtYm9yZGVyIDBweCwgJGMtYWN0aXZlLWJvcmRlciA1cHgsIHJnYmEoMCwgMCwgMCwgMCkgNXB4LCByZ2JhKDAsIDAsIDAsIDApIDEwMCUpO1xuICB9XG5cbiAgdGQucmFuayB7XG4gICAgQGV4dGVuZCAlcm9ib3RvO1xuXG4gICAgcGFkZGluZzogMWVtIC41ZW0gMWVtIDEwcHg7XG4gICAgd2lkdGg6IDFweDtcblxuICAgIC8qIGhlbHBzIGtlZXBpbmcgaXQgYXMgc21hbGwgYXMgcG9zc2libGUgKi9cbiAgICBpIHtcbiAgICAgIG9wYWNpdHk6IC40O1xuICAgICAgZm9udC1zaXplOiAuOGVtO1xuICAgIH1cbiAgfVxuXG4gIC5wYWlyaW5ncyB7XG4gICAgcGFkZGluZzogMDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB3aWR0aDogMTAwJTtcblxuICAgIGRpdiB7XG4gICAgICBAZXh0ZW5kICVmbGV4LWNlbnRlcjtcblxuICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgICAgbWluLWhlaWdodDogMy41ZW07XG5cbiAgICAgICYgPiAqIHtcbiAgICAgICAgQGV4dGVuZCAlZmxleC1jZW50ZXI7XG5cbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGZsZXg6IDAgMCAyZW07XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAub25nb2luZyB7XG4gICAgICBjb2xvcjogJGMtbGluaztcblxuICAgICAgLy8gYmFja2dyb3VuZDogbWl4KCRjLWxpbmssICRjLWJnLWJveCwgMTUlKTtcbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtbGluaywgJGMtYmctYm94LCAzNSUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC53aW4ge1xuICAgICAgY29sb3I6ICRjLWdvb2Q7XG5cbiAgICAgIC8vIGJhY2tncm91bmQ6IG1peCgkYy1nb29kLCAkYy1iZy1ib3gsIDE1JSk7XG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogbWl4KCRjLWdvb2QsICRjLWJnLWJveCwgMzUlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubG9zcyB7XG4gICAgICBjb2xvcjogbWl4KCRjLWJhZCwgJGMtYmctYm94LCA2MCUpO1xuXG4gICAgICAvLyBiYWNrZ3JvdW5kOiBtaXgoJGMtYmFkLCAkYy1iZy1ib3gsIDEwJSk7XG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogbWl4KCRjLWJhZCwgJGMtYmctYm94LCAyMCUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5kcmF3IHtcbiAgICAgIGNvbG9yOiBtaXgoJGMtYnJhZywgJGMtYmctYm94LCA3MCk7XG4gICAgfVxuXG4gICAgYnllIHtcbiAgICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgICB9XG5cbiAgICBsYXRlIHtcbiAgICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgICB9XG5cbiAgICBhYnNlbnQge1xuICAgICAgY29sb3I6IG1peCgkYy1iYWQsICRjLWJnLWJveCwgNjAlKTtcbiAgICB9XG5cbiAgICByIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAxcHggZG90dGVkICRjLWJvcmRlcjtcbiAgICB9XG4gIH1cblxuICAucG9pbnRzIHtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgfVxuXG4gIC50aWVCcmVhayB7XG4gICAgQGV4dGVuZCAlcm9ib3RvO1xuXG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgcGFkZGluZy1yaWdodDogJGJsb2NrLWdhcDtcbiAgfVxuXG4gICYubG9uZyB7XG4gICAgLnVzZXItbGluayAucmF0aW5nIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcGFkZGluZy1sZWZ0OiAwcHg7XG4gICAgfVxuXG4gICAgLnBhaXJpbmdzIGRpdiA+ICoge1xuICAgICAgZmxleDogMCAwIDEuNWVtO1xuICAgIH1cbiAgfVxuXG4gICYueGxvbmcgJiB7XG4gICAgLnBhaXJpbmdzIGRpdiA+ICoge1xuICAgICAgZmxleDogMCAwIDEuM2VtO1xuICAgIH1cbiAgfVxufVxuIiwiLnN3aXNzX19zdGF0cyB7XG4gIEBleHRlbmQgJWJveC1uZWF0O1xuXG4gIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbiAgcGFkZGluZzogMS43ZW0gMDtcbiAgYWxpZ24tc2VsZjogZmxleC1zdGFydDtcblxuICBoMiB7XG4gICAgZm9udC1zaXplOiAxLjVlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxZW07XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG5cbiAgdGFibGUge1xuICAgIG1hcmdpbjogYXV0bztcbiAgfVxuXG4gIHRkIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBwYWRkaW5nLWxlZnQ6IDFlbTtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICBsaW5lLWhlaWdodDogMmVtO1xuICB9XG59XG4iLCIuc3dpc3NfX3BsYXllci1pbmZvIHtcbiAgQGV4dGVuZCAlYm94LW5lYXQtZm9yY2U7XG5cbiAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7XG5cbiAgLnNwaW5uZXIge1xuICAgIG1hcmdpbjogNWVtIGF1dG87XG4gIH1cblxuICAuY2xvc2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDRweDtcbiAgICByaWdodDogNXB4O1xuICAgIG9wYWNpdHk6IC42O1xuXG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcblxuICAgIGNvbG9yOiAkYy1yZWQ7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9XG5cbiAgLnN0YXRzIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNvbHVtbjtcblxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gICAgaDIge1xuICAgICAgQGV4dGVuZCAlbWV0YWw7XG5cbiAgICAgIGZvbnQtc2l6ZTogMS40ZW07XG4gICAgICBwYWRkaW5nOiAuNnJlbSAxcmVtO1xuICAgICAgYm9yZGVyLWJvdHRvbTogJGJvcmRlcjtcbiAgICB9XG5cbiAgICB0YWJsZSB7XG4gICAgICBtYXJnaW46IDFlbSBhdXRvO1xuICAgIH1cblxuICAgIHRkIHtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICBsaW5lLWhlaWdodDogMS44ZW07XG5cbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIEBleHRlbmQgJXJvYm90bztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuc3VibGlzdCB7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICB0ciB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYmFja2dyb3VuZC1jb2xvcik7XG5cbiAgICAgICY6bnRoLWNoaWxkKG9kZCkge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTtcbiAgICAgIH1cblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IG1peCgkYy1saW5rLCAkYy1iZy1ib3gsIDEwJSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGgsIHRkIHtcbiAgICAgIHBhZGRpbmc6IC4zZW07XG4gICAgfVxuXG4gICAgdGgge1xuICAgICAgQGV4dGVuZCAlcm9ib3RvO1xuXG4gICAgICBwYWRkaW5nLWxlZnQ6IDdweDtcbiAgICB9XG4gIH1cblxuICAucGFpcmluZ3Mge1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgdHIge1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGJhY2tncm91bmQtY29sb3IpO1xuXG4gICAgICAmOm50aC1jaGlsZChvZGQpIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGMtYmctemVicmE7XG4gICAgICB9XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtbGluaywgJGMtYmctYm94LCAxMCUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoLCB0ZCB7XG4gICAgICBwYWRkaW5nOiAuM2VtO1xuICAgIH1cblxuICAgIHRoIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgdHJhbnNwYXJlbnQ7XG5cbiAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb247XG4gICAgfVxuXG4gICAgdHI6aG92ZXIgdGgge1xuICAgICAgYm9yZGVyLWNvbG9yOiAkYy1mb250LWRpbW1lcjtcbiAgICB9XG5cbiAgICB0ci53aW46aG92ZXIgdGgge1xuICAgICAgYm9yZGVyLWNvbG9yOiAkYy1nb29kO1xuICAgIH1cblxuICAgIHRyLmxvc3M6aG92ZXIgdGgge1xuICAgICAgYm9yZGVyLWNvbG9yOiAkYy1iYWQ7XG4gICAgfVxuXG4gICAgdGQ6bnRoLWNoaWxkKDIpIHtcbiAgICAgIEBleHRlbmQgJW5vd3JhcC1lbGxpcHNpcztcblxuICAgICAgbWF4LXdpZHRoOiAyMDBweDtcbiAgICB9XG5cbiAgICB0ZDpsYXN0LWNoaWxkIHtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgb3BhY2l0eTogLjg7XG4gICAgfVxuXG4gICAgdHIud2luIHRkOmxhc3QtY2hpbGQge1xuICAgICAgY29sb3I6ICRjLWdvb2Q7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cblxuICAgIHRyLmxvc3MgdGQ6bGFzdC1jaGlsZCB7XG4gICAgICBjb2xvcjogJGMtYmFkO1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG5cbiAgICAub3V0Y29tZSB7XG4gICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICBjb2xvcjogJGMtZm9udC1kaW1tZXI7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgICB9XG4gIH1cblxu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 */
