@charset "UTF-8";

/* =============================================================================
 * LoginPro — UI/UX 2026 (area autenticata: dashboard, gestione app, liste)
 * -----------------------------------------------------------------------------
 * Polish moderno e theme-aware sopra main.css/main_usa.css esistenti: aurora in
 * dark, superfici arrotondate, sidebar/header/tabelle/bottoni rifiniti, hover
 * fluidi. Stesso linguaggio di DatiPro 2026 e della login, ora ricondotto alla
 * palette blu istituzionale in entrambi i temi. Token --dp-* condivisi.
 * Caricato SOLO nei layout autenticati (main, main_noheader, main_404), mai
 * sulle pagine di login (che usano login2026.css). Sorgente: resources/sass/app2026.scss.
 * ============================================================================= */

:root {
  --dp-bg: #F3F7FC;
  --dp-surface: #ffffff;
  --dp-text: #465D82;
  --dp-text-title: #162D49;
  --dp-border: #DCECF9;
  --dp-brand: #0086C9;
  --dp-brand-rgb: 0, 134, 201;
  --dp-navy: #162D49;
  --dp-navy-rgb: 22, 45, 73;
  --dp-card: #203D60;
  --dp-card-rgb: 32, 61, 96;
  --dp-slate: #465D82;
  --dp-muted: #BDCFE7;
  --dp-highlight: #8BB6F1;
  --dp-highlight-rgb: 139, 182, 241;
  --dp-button-start: #315CC4;
  --dp-button-end: #2676BD;
  --dp-accent-readable: #0086C9;
  --dp-accent: #0086C9;
  --dp-accent-strong: #0086C9;
  --dp-accent-strong-rgb: 0, 134, 201;
  --dp-danger: #f05050;
  --dp-success: #22b700;
  --dp-radius-sm: 8px;
  --dp-radius: 12px;
  --dp-radius-lg: 16px;
  --dp-radius-pill: 999px;
  --dp-shadow-sm: 0 1px 2px rgba(20, 35, 60, .06), 0 1px 3px rgba(20, 35, 60, .10);
  --dp-shadow: 0 8px 24px rgba(20, 35, 60, .10), 0 3px 10px rgba(20, 35, 60, .06);
  --dp-shadow-lg: 0 24px 56px rgba(20, 35, 60, .16);
  --dp-transition: 170ms cubic-bezier(.4, 0, .2, 1);
  --dp-transition-slow: 280ms cubic-bezier(.4, 0, .2, 1);
  --dp-aurora-1: rgba(0, 134, 201, .14);
  --dp-aurora-2: rgba(139, 182, 241, .12);
  --dp-aurora-3: rgba(0, 134, 201, .10);
  --dp-aurora-4: rgba(0, 134, 201, .08);
  --dp-canvas: #F3F7FC;
}

html[data-theme=dark] {
  --dp-bg: #162D49;
  --dp-surface: #203D60;
  --dp-text: #BDCFE7;
  --dp-text-title: #8BB6F1;
  --dp-border: #465D82;
  --dp-accent-readable: #8BB6F1;
  --dp-accent: #0086C9;
  --dp-accent-strong: #0086C9;
  --dp-accent-strong-rgb: 0, 134, 201;
  --dp-danger: #f05050;
  --dp-success: #22b700;
  --dp-shadow-sm: 0 1px 2px rgba(0, 0, 0, .35), 0 1px 3px rgba(0, 0, 0, .30);
  --dp-shadow: 0 14px 38px rgba(0, 0, 0, .45), 0 6px 16px rgba(0, 0, 0, .30);
  --dp-shadow-lg: 0 32px 70px rgba(0, 0, 0, .55);
  --dp-aurora-1: rgba(0, 134, 201, .50);
  --dp-aurora-2: rgba(0, 134, 201, .40);
  --dp-aurora-3: rgba(0, 134, 201, .38);
  --dp-aurora-4: rgba(0, 134, 201, .36);
  --dp-canvas: #162D49;
}

/* Loader condiviso LoginPro/DatiPro: un solo linguaggio visivo per area
 * autenticata, login e azioni che richiedono una nuova pagina. */

#onloadwaitingpopup {
  position: fixed !important;
  inset: 0;
  z-index: 99999;
  display: flex !important;
  width: auto;
  height: auto;
  align-items: center;
  justify-content: center;
  pointer-events: all;
  background: radial-gradient(520px 360px at 50% 42%, rgba(var(--dp-accent-strong-rgb), 0.16), transparent 72%), rgba(243, 247, 252, 0.76);
  backdrop-filter: blur(5px);
  opacity: 0;
  animation: dpPageLoaderEnter 0.18s ease 0.14s forwards;
  transition: opacity 0.18s ease, visibility 0.18s ease;
}

#onloadwaitingpopup.is-active {
  animation-delay: 0s;
}

#onloadwaitingpopup.is-leaving {
  pointer-events: none;
  opacity: 0;
  animation: none;
}

.dp-page-loader__surface {
  display: inline-flex;
  min-width: 132px;
  align-items: center;
  gap: 12px;
  padding: 13px 17px;
  border: 1px solid rgba(var(--dp-accent-strong-rgb), 0.2);
  border-radius: var(--dp-radius-lg);
  color: var(--dp-navy);
  background: rgba(255, 255, 255, 0.94);
  box-shadow: 0 14px 42px rgba(38, 56, 74, 0.18);
}

.dp-page-loader__ring {
  display: block;
  flex: 0 0 30px;
  width: 30px;
  height: 30px;
  box-sizing: border-box;
  border: 3px solid rgba(var(--dp-accent-strong-rgb), 0.18);
  border-top-color: var(--dp-accent-strong);
  border-radius: 50%;
  animation: dpPageLoaderSpin 0.78s linear infinite;
}

.dp-page-loader__label {
  font-size: 13px;
  font-weight: 650;
  letter-spacing: 0.01em;
}

.dp-inline-spinner,
.fa-spinner.fa-spin,
.fa-spinner.fa-pulse {
  display: inline-block !important;
  flex: 0 0 1em;
  width: 1em !important;
  height: 1em !important;
  box-sizing: border-box;
  border: 2px solid currentColor;
  border-right-color: transparent;
  border-radius: 50%;
  vertical-align: -0.12em;
  animation: dpPageLoaderSpin 0.72s linear infinite !important;
}

.fa-spinner.fa-spin::before,
.fa-spinner.fa-pulse::before {
  content: "" !important;
}

html[data-theme=dark] #onloadwaitingpopup {
  background: radial-gradient(520px 360px at 50% 42%, rgba(var(--dp-accent-strong-rgb), 0.18), transparent 72%), rgba(22, 45, 73, 0.74);
}

html[data-theme=dark] .dp-page-loader__surface {
  color: #BDCFE7;
  background: rgba(32, 61, 96, 0.95);
  box-shadow: 0 16px 46px rgba(0, 0, 0, 0.32);
}

@keyframes dpPageLoaderEnter {
  to {
    opacity: 1;
  }
}

@keyframes dpPageLoaderSpin {
  to {
    transform: rotate(360deg);
  }
}

@media (prefers-reduced-motion: reduce) {
  #onloadwaitingpopup {
    opacity: 1;
    animation: none;
    transition: none;
  }

  #onloadwaitingpopup.is-leaving {
    opacity: 0;
  }

  .dp-page-loader__ring,
  .dp-inline-spinner,
  .fa-spinner.fa-spin,
  .fa-spinner.fa-pulse {
    animation: none !important;
  }
}

/* ----------------------------------------------------------------------------
 * Canvas + aurora (solo dark = firma del tema scuro)
 * -------------------------------------------------------------------------- */

html[data-theme=dark] {
  background: var(--dp-canvas);
}

html[data-theme=dark] body.omega__body {
  background: transparent !important;
}

body.omega__body,
.c-wrapper,
.c-body,
.c-main,
.omega__main,
.omega__containerbody,
.omega__containerfluid,
#ui-view {
  transition: background-color var(--dp-transition-slow), color var(--dp-transition);
}

html[data-theme=dark] .c-wrapper,
html[data-theme=dark] .c-body,
html[data-theme=dark] .c-main,
html[data-theme=dark] .omega__main,
html[data-theme=dark] .omega__containerbody,
html[data-theme=dark] .omega__containerfluid,
html[data-theme=dark] #ui-view {
  background: transparent !important;
}

html[data-theme=dark] .omega__containerfluid {
  min-height: calc(100vh - 116px);
}

html[data-theme=dark] body.omega__body::before {
  content: "";
  position: fixed;
  inset: -25%;
  z-index: -1;
  pointer-events: none;
  background: radial-gradient(58% 55% at 14% 16%, var(--dp-aurora-1), transparent 66%), radial-gradient(55% 52% at 88% 20%, var(--dp-aurora-2), transparent 66%), radial-gradient(60% 58% at 52% 104%, var(--dp-aurora-3), transparent 70%), radial-gradient(50% 48% at 80% 80%, var(--dp-aurora-4), transparent 70%);
  animation: dpAppAurora 24s ease-in-out infinite alternate;
  will-change: transform;
}

@keyframes dpAppAurora {
  0% {
    transform: translate3d(-6%, -5%, 0) scale(1.06) rotate(-2deg);
  }

  50% {
    transform: translate3d(5%, 4%, 0) scale(1.16) rotate(4deg);
  }

  100% {
    transform: translate3d(8%, 7%, 0) scale(1.2) rotate(8deg);
  }
}

@media (prefers-reduced-motion: reduce) {
  html[data-theme=dark] body.omega__body::before {
    animation: none;
  }
}

/* ----------------------------------------------------------------------------
 * Header
 * -------------------------------------------------------------------------- */

.omega__header {
  box-shadow: var(--dp-shadow-sm);
  transition: background var(--dp-transition), border-color var(--dp-transition);
}

html[data-theme=dark] .omega__header {
  background: linear-gradient(180deg, rgba(var(--dp-brand-rgb), 0.1), rgba(var(--dp-brand-rgb), 0.04)), var(--dp-card) !important;
  border-bottom: 1px solid rgba(var(--dp-brand-rgb), 0.24) !important;
}

/* Profilo utente — dropdown moderno, fluido e theme-aware */

.omega__settingslist {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  min-height: 70px;
}

.omega__settingsitem.nav-item.dropdown {
  position: relative;
  display: inline-flex;
  align-items: center;
}

.omega__settingsitem--profile.omega__settingsitem--profile {
  min-height: 70px;
}

.omega__settingslink.omega__settingslink {
  position: relative;
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 38px;
  height: auto;
  line-height: 1.2;
  margin-right: 10px;
  padding: 7px 12px;
  color: var(--dp-text-title) !important;
  border: 1px solid transparent;
  border-radius: var(--dp-radius-pill);
  background: transparent;
  text-decoration: none;
  transition: background-color var(--dp-transition), border-color var(--dp-transition), color var(--dp-transition), box-shadow var(--dp-transition), transform var(--dp-transition);
}

.omega__settingslink.omega__settingslink:hover,
.omega__settingslink.omega__settingslink:focus,
.omega__settingsitem.show > .omega__settingslink.omega__settingslink {
  color: var(--dp-accent-readable) !important;
  background: rgba(var(--dp-accent-strong-rgb), 0.08);
  border-color: rgba(var(--dp-accent-strong-rgb), 0.2);
  box-shadow: 0 8px 20px rgba(var(--dp-accent-strong-rgb), 0.14);
  transform: translateY(-1px);
}

.omega__settingslink--profile.omega__settingslink--profile {
  display: grid !important;
  grid-template-columns: 26px minmax(0, auto);
  grid-template-rows: auto auto;
  align-items: center;
  -moz-column-gap: 7px;
       column-gap: 7px;
  row-gap: 2px;
  min-height: 48px;
  padding: 7px 12px 7px 10px;
  transform: translateY(5px);
}

.omega__settingslink--profile.omega__settingslink--profile:hover,
.omega__settingslink--profile.omega__settingslink--profile:focus,
.omega__settingsitem.show > .omega__settingslink--profile.omega__settingslink--profile {
  transform: translateY(4px);
}

.omega__settingsicon.omega__settingsicon {
  color: currentColor !important;
  font-size: 21px;
  filter: drop-shadow(0 0 0 rgba(var(--dp-accent-strong-rgb), 0));
  transition: transform var(--dp-transition), filter var(--dp-transition);
}

.omega__settingslink--profile .omega__settingsicon.omega__settingsicon {
  grid-column: 1;
  grid-row: 1/span 2;
  align-self: center;
  justify-self: center;
  transform: translateY(1px);
}

.omega__settingslink:hover .omega__settingsicon,
.omega__settingsitem.show > .omega__settingslink .omega__settingsicon {
  transform: translateY(-1px) scale(1.05);
  filter: drop-shadow(0 0 8px rgba(var(--dp-accent-strong-rgb), 0.32));
}

.omega__settingslink--profile:hover .omega__settingsicon,
.omega__settingsitem.show > .omega__settingslink--profile .omega__settingsicon {
  transform: translateY(0) scale(1.05);
}

.omega__login__name__users.omega__login__name__users {
  grid-column: 2;
  grid-row: 1;
  display: block !important;
  min-width: 0;
  max-width: 120px;
  margin-left: 0 !important;
  color: currentColor !important;
  font-weight: 600;
  line-height: 1.12;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.omega__setting__whois.omega__setting__whois {
  position: static !important;
  grid-column: 2;
  grid-row: 2;
  display: block;
  width: auto;
  min-width: 0;
  line-height: 1.08;
  color: var(--dp-danger) !important;
  font-size: 11px;
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.omega__settingsdropdow.omega__settingsdropdow {
  position: absolute;
  top: calc(100% + 8px) !important;
  right: 0 !important;
  left: auto !important;
  width: -moz-max-content;
  width: max-content;
  min-width: 230px;
  max-width: min(300px, 100vw - 28px);
  padding: 7px;
  overflow: hidden;
  color: var(--dp-text);
  border: 1px solid rgba(var(--dp-accent-strong-rgb), 0.18);
  border-radius: var(--dp-radius) !important;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.96), rgba(255, 255, 255, 0.9)), var(--dp-surface) !important;
  box-shadow: 0 18px 42px rgba(20, 35, 60, 0.16), 0 4px 12px rgba(20, 35, 60, 0.08);
  transform-origin: 90% top;
  transform: none !important;
  animation: dpProfileMenuIn 0.18s cubic-bezier(0.2, 0.8, 0.2, 1) both;
  backdrop-filter: blur(16px) saturate(1.06);
}

.omega__settingsdropdow.omega__settingsdropdow::before {
  content: "";
  position: absolute;
  inset: 0 0 auto;
  height: 3px;
  background: linear-gradient(90deg, var(--dp-button-start), var(--dp-button-end));
  opacity: 0.92;
}

.omega__settingsdropdow__link.omega__settingsdropdow__link {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  min-height: 42px;
  margin: 2px 0;
  padding: 10px 42px 10px 13px;
  color: var(--dp-text-title) !important;
  border: 1px solid transparent;
  border-radius: var(--dp-radius-sm);
  background: transparent !important;
  line-height: 1.25;
  overflow: hidden;
  transition: background-color var(--dp-transition), border-color var(--dp-transition), color var(--dp-transition), transform var(--dp-transition), box-shadow var(--dp-transition);
}

.omega__settingsdropdow__link.omega__settingsdropdow__link::before {
  content: "";
  position: absolute;
  inset: 6px auto 6px 0;
  width: 3px;
  border-radius: var(--dp-radius-pill);
  background: var(--dp-accent-strong);
  transform: scaleY(0);
  opacity: 0;
  transition: transform var(--dp-transition), opacity var(--dp-transition);
}

.omega__settingsdropdow__link.omega__settingsdropdow__link:hover,
.omega__settingsdropdow__link.omega__settingsdropdow__link:focus,
.omega__settingsdropdow__link.omega__settingsdropdow__link.active {
  color: var(--dp-accent-readable) !important;
  background: rgba(var(--dp-accent-strong-rgb), 0.1) !important;
  border-color: rgba(var(--dp-accent-strong-rgb), 0.18);
  box-shadow: inset 0 0 0 1px rgba(var(--dp-accent-strong-rgb), 0.04);
  transform: translateX(2px);
}

.omega__settingsdropdow__link:hover::before,
.omega__settingsdropdow__link:focus::before,
.omega__settingsdropdow__link.active::before {
  opacity: 1;
  transform: scaleY(1);
}

.omega__settingsdropdow__text {
  display: block;
  margin-right: 22px;
  font-weight: 500;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.omega__settingsdropdow__icon.omega__settingsdropdow__icon {
  top: 50%;
  right: 13px;
  color: currentColor !important;
  font-size: 15px;
  transform: translateY(-50%);
  transition: transform var(--dp-transition), filter var(--dp-transition);
}

.omega__settingsdropdow__link:hover .omega__settingsdropdow__icon,
.omega__settingsdropdow__link:focus .omega__settingsdropdow__icon {
  transform: translateY(-50%) scale(1.08);
  filter: drop-shadow(0 0 7px rgba(var(--dp-accent-strong-rgb), 0.35));
}

html[data-theme=dark] .omega__settingslink.omega__settingslink {
  color: rgba(234, 240, 247, 0.86) !important;
}

html[data-theme=dark] .omega__settingslink.omega__settingslink:hover,
html[data-theme=dark] .omega__settingslink.omega__settingslink:focus,
html[data-theme=dark] .omega__settingsitem.show > .omega__settingslink.omega__settingslink {
  color: var(--dp-accent-readable) !important;
  background: rgba(0, 134, 201, 0.1);
  border-color: rgba(0, 134, 201, 0.24);
  box-shadow: 0 10px 24px rgba(0, 134, 201, 0.1);
}

html[data-theme=dark] .omega__settingsdropdow.omega__settingsdropdow {
  border-color: rgba(0, 134, 201, 0.25);
  background: radial-gradient(90% 120% at 10% 0%, rgba(0, 134, 201, 0.18), transparent 54%), radial-gradient(90% 120% at 100% 100%, rgba(0, 134, 201, 0.14), transparent 58%), rgba(32, 61, 96, 0.88) !important;
  box-shadow: 0 22px 48px rgba(0, 0, 0, 0.36), inset 0 1px 0 rgba(255, 255, 255, 0.05);
}

html[data-theme=dark] .omega__settingsdropdow.omega__settingsdropdow::after {
  content: "";
  position: absolute;
  inset: -45%;
  pointer-events: none;
  background: radial-gradient(36% 42% at 18% 22%, rgba(0, 134, 201, 0.26), transparent 70%), radial-gradient(34% 40% at 84% 78%, rgba(0, 134, 201, 0.2), transparent 72%);
  filter: blur(10px);
  opacity: 0.78;
  animation: dpProfileMenuAurora 18s ease-in-out infinite alternate;
}

html[data-theme=dark] .omega__settingsdropdow__link.omega__settingsdropdow__link {
  color: rgba(234, 240, 247, 0.88) !important;
}

html[data-theme=dark] .omega__settingsdropdow__link.omega__settingsdropdow__link:hover,
html[data-theme=dark] .omega__settingsdropdow__link.omega__settingsdropdow__link:focus,
html[data-theme=dark] .omega__settingsdropdow__link.omega__settingsdropdow__link.active {
  color: var(--dp-accent-readable) !important;
  background: rgba(0, 134, 201, 0.12) !important;
  border-color: rgba(0, 134, 201, 0.2);
}

@keyframes dpProfileMenuIn {
  from {
    opacity: 0;
    clip-path: inset(0 0 100% 0 round var(--dp-radius));
  }

  to {
    opacity: 1;
    clip-path: inset(0 0 0 0 round var(--dp-radius));
  }
}

@keyframes dpProfileMenuAurora {
  from {
    transform: translate3d(-5%, -4%, 0) scale(1.04) rotate(-4deg);
  }

  to {
    transform: translate3d(5%, 6%, 0) scale(1.14) rotate(5deg);
  }
}

@media (prefers-reduced-motion: reduce) {
  .omega__settingsdropdow.omega__settingsdropdow {
    animation: none;
  }

  html[data-theme=dark] .omega__settingsdropdow.omega__settingsdropdow::after {
    animation: none;
  }
}

/* ----------------------------------------------------------------------------
 * Toggle tema sole/luna — animato e fluido (stesso CSS della piattaforma DatiPro)
 * -------------------------------------------------------------------------- */

.omega__changetheme.omega__changetheme {
  display: inline-flex !important;
  flex-direction: row !important;
  flex-wrap: nowrap !important;
  align-items: center;
  gap: 2px;
  padding: 0;
  margin: 0;
  width: auto;
  background: transparent;
  border: 0;
  box-shadow: none;
  vertical-align: middle;
}

.omega__changetheme__link.omega__changetheme__link {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  width: 34px;
  min-width: 34px;
  height: 34px;
  padding: 0;
  margin: 0;
  border: 0;
  border-radius: var(--dp-radius-pill);
  background: transparent;
  box-shadow: none;
  color: var(--dp-text);
  line-height: 1;
  opacity: 0.75;
  cursor: pointer;
  transition: color var(--dp-transition), opacity var(--dp-transition), transform var(--dp-transition), filter var(--dp-transition);
}

.omega__changetheme__link.omega__changetheme__link .omega__changetheme__icon {
  margin: 0;
  /* Nessuno scostamento: il link e' gia' centrato in flex, cosi' sole e luna
   * stanno sulla stessa linea delle altre voci della barra. */
  padding: 0;
  font-size: 25px;
  line-height: 1;
  transform: none;
  transition: transform 0.3s ease, filter 0.3s ease;
}

.omega__changetheme__link.omega__changetheme__link:hover {
  opacity: 1;
  transform: translateY(-1px);
}

/* Il sole e' un disegno nostro (cerchio + raggi dritti, solo contorno come la
 * luna): il glifo di Font Awesome sembrava un ingranaggio. Essendo un svg la
 * misura si da' con width/height, non con font-size. */

.omega__changetheme__link.omega__changetheme__link .omega__changetheme__icon--sun {
  width: 24px;
  height: 24px;
  padding: 0;
  overflow: visible;
}

/* SOLE (light): il glifo del sole è otticamente più piccolo della luna → 26px per
 * bilanciarlo (come in DatiPro). Fix "icona sole più piccola nel light". */

.omega__changetheme__link.omega__changetheme__link[href*=light] .omega__changetheme__icon {
  font-size: 26px;
}

/* SOLE (light): icona colorata + bagliore, rotazione fluida */

.omega__changetheme__link.omega__changetheme__link[href*=light]:hover {
  color: var(--dp-accent-readable);
}

.omega__changetheme__link.omega__changetheme__link[href*=light]:hover .omega__changetheme__icon {
  transform: rotate(35deg) scale(1.08);
}

.omega__changetheme__link.omega__changetheme__link[href*=light].active {
  opacity: 1;
  color: var(--dp-accent-readable);
}

.omega__changetheme__link.omega__changetheme__link[href*=light].active .omega__changetheme__icon {
  filter: drop-shadow(0 0 7px rgba(0, 134, 201, 0.7));
}

/* LUNA (dark): icona celeste con bagliore. La falce riempie piu' spazio del sole
 * a parita' di corpo: due punti in meno e le due icone si leggono uguali. */

.omega__changetheme__link.omega__changetheme__link[href*=dark] .omega__changetheme__icon {
  font-size: 21px;
}

.omega__changetheme__link.omega__changetheme__link[href*=dark]:hover {
  color: var(--dp-highlight);
}

.omega__changetheme__link.omega__changetheme__link[href*=dark]:hover .omega__changetheme__icon {
  transform: rotate(-18deg) scale(1.08);
}

.omega__changetheme__link.omega__changetheme__link[href*=dark].active {
  opacity: 1;
  color: var(--dp-highlight);
}

.omega__changetheme__link.omega__changetheme__link[href*=dark].active .omega__changetheme__icon {
  filter: drop-shadow(0 0 6px rgba(150, 205, 255, 0.9));
}

/* ----------------------------------------------------------------------------
 * Brand/logo sidebar — aurora animata dietro al logo (come la piattaforma)
 * -------------------------------------------------------------------------- */

.omega__sidebar .omega__brand {
  position: relative;
  overflow: hidden;
  width: 100%;
  /* [2026] Altezza = header (70px) così il bordo inferiore del logo è allineato
   * con la riga dell'header (prima 82px → disallineato). */
  height: 70px;
  min-height: 70px;
  display: inline-block;
  padding: 12px 0 11px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
  background: var(--dp-navy) !important;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.09);
  backdrop-filter: none;
  transition: background-color var(--dp-transition);
  isolation: isolate;
}

html[data-theme=dark] .omega__sidebar .omega__brand {
  background: var(--dp-navy) !important;
  box-shadow: none;
}

/* Aurora blu dietro al logo (GPU), mantenendo movimento e leggibilita'. */

.omega__sidebar .omega__brand::before {
  content: "";
  position: absolute;
  inset: -45%;
  z-index: 0;
  pointer-events: none;
  background: radial-gradient(38% 52% at 20% 28%, rgba(var(--dp-brand-rgb), 0.72), transparent 70%), radial-gradient(42% 48% at 82% 22%, rgba(var(--dp-highlight-rgb), 0.48), transparent 72%), radial-gradient(48% 58% at 68% 88%, rgba(49, 92, 196, 0.44), transparent 72%), radial-gradient(44% 54% at 8% 86%, rgba(38, 118, 189, 0.42), transparent 70%);
  filter: blur(8px) saturate(1.18);
  will-change: transform, filter;
  animation: dpLogoAurora 18s ease-in-out infinite alternate, dpLogoHue 24s linear infinite;
}

/* Nel tema scuro le stesse tinte sono piu' contenute. */

html[data-theme=dark] .omega__sidebar .omega__brand::before {
  background: radial-gradient(38% 52% at 20% 28%, rgba(var(--dp-brand-rgb), 0.48), transparent 70%), radial-gradient(42% 48% at 82% 22%, rgba(var(--dp-highlight-rgb), 0.34), transparent 72%), radial-gradient(48% 58% at 68% 88%, rgba(49, 92, 196, 0.36), transparent 72%), radial-gradient(44% 54% at 8% 86%, rgba(38, 118, 189, 0.34), transparent 70%);
  filter: blur(8px) saturate(1.12);
  animation: dpLogoAurora 19s ease-in-out infinite alternate;
}

@keyframes dpLogoHue {
  0% {
    filter: blur(8px) saturate(1.18) hue-rotate(-6deg);
  }

  50% {
    filter: blur(8px) saturate(1.26) hue-rotate(22deg);
  }

  100% {
    filter: blur(8px) saturate(1.18) hue-rotate(-6deg);
  }
}

/* Sheen diagonale che attraversa lentamente il blocco */

.omega__sidebar .omega__brand::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background: linear-gradient(115deg, transparent 38%, rgba(255, 255, 255, 0.1) 50%, transparent 62%);
  transform: translateX(-120%);
  animation: dpLogoSheen 7s ease-in-out 1.2s infinite;
}

/* Logo e payoff sopra agli strati animati */

.omega__sidebar .omega__brand .omega__logo,
.omega__sidebar .omega__brand .omega__logo__usa,
.omega__sidebar .omega__brand .omega__logo__payoff {
  position: relative;
  z-index: 2;
}

.omega__sidebar .omega__brand .omega__logo__payoff {
  color: rgba(255, 255, 255, 0.86) !important;
  text-shadow: 0 1px 8px rgba(0, 0, 0, 0.22);
}

@keyframes dpLogoAurora {
  0% {
    transform: translate3d(-6%, -4%, 0) scale(1.06) rotate(0deg);
  }

  50% {
    transform: translate3d(5%, 4%, 0) scale(1.16) rotate(7deg);
  }

  100% {
    transform: translate3d(-3%, 6%, 0) scale(1.09) rotate(-6deg);
  }
}

@keyframes dpLogoSheen {
  0% {
    transform: translateX(-120%);
  }

  18% {
    transform: translateX(120%);
  }

  100% {
    transform: translateX(120%);
  }
}

@media (prefers-reduced-motion: reduce) {
  .omega__sidebar .omega__brand::before {
    animation: none;
  }

  .omega__sidebar .omega__brand::after {
    display: none;
  }
}

.omega__sidebar .omega__brand:hover,
.omega__sidebar .omega__brand.active {
  background: var(--dp-card) !important;
}

html[data-theme=dark] .omega__sidebar .omega__brand:hover,
html[data-theme=dark] .omega__sidebar .omega__brand.active {
  background: var(--dp-card) !important;
}

.omega__sidebar .omega__brand:hover::before,
.omega__sidebar .omega__brand.active::before {
  filter: blur(8px) saturate(1.3) brightness(1.12);
  animation-duration: 14s;
}

.omega__sidebar .omega__brand .omega__logo--black {
  display: none !important;
}

.omega__sidebar .omega__brand .omega__logo--white {
  display: block !important;
}

/* ----------------------------------------------------------------------------
 * Sidebar — active/hover moderni a tema
 * -------------------------------------------------------------------------- */

.omega__sidebar.omega__sidebar {
  background: rgba(var(--dp-navy-rgb), 0.78) !important;
  border-right: 1px solid rgba(255, 255, 255, 0.1);
  box-shadow: 10px 0 30px rgba(9, 40, 68, 0.2);
  overflow: hidden;
  isolation: isolate;
  /* NB: niente `position` qui (la sidebar è già posizionata dal tema): impostarla
   * la toglierebbe dal fixed e sposterebbe il contenuto. */
  transition: width var(--dp-transition-slow), transform var(--dp-transition-slow), box-shadow var(--dp-transition-slow);
}

html[data-theme=dark] .omega__sidebar.omega__sidebar {
  background: rgba(var(--dp-navy-rgb), 0.78) !important;
  border-right: 1px solid rgba(255, 255, 255, 0.08);
  box-shadow: 10px 0 30px rgba(22, 45, 73, 0.18);
}

/* Sotto i 992px il menu si apre sopra la pagina: con il 78% si leggerebbe il
 * contenuto attraverso le voci. La trasparenza resta da 992px in su. */

@media (max-width: 991.98px) {
  .omega__sidebar.omega__sidebar,
  html[data-theme=dark] .omega__sidebar.omega__sidebar {
    background: var(--dp-navy) !important;
  }
}

/* Aurora morbida blu dietro a logo e menu. */

.omega__sidebar.omega__sidebar::before {
  content: "";
  position: absolute;
  inset: -20%;
  z-index: 0;
  pointer-events: none;
  background: radial-gradient(40% 30% at 16% 10%, rgba(var(--dp-brand-rgb), 0.24), transparent 70%), radial-gradient(42% 32% at 88% 24%, rgba(var(--dp-highlight-rgb), 0.2), transparent 72%), radial-gradient(46% 36% at 28% 62%, rgba(49, 92, 196, 0.18), transparent 74%), radial-gradient(44% 34% at 84% 86%, rgba(38, 118, 189, 0.18), transparent 72%);
  filter: blur(38px) saturate(1.1);
  will-change: transform;
  animation: dpSidebarAurora 30s ease-in-out infinite alternate;
}

html[data-theme=dark] .omega__sidebar.omega__sidebar::before {
  display: none;
}

.omega__sidebar.omega__sidebar > * {
  position: relative;
  z-index: 1;
}

@keyframes dpSidebarAurora {
  0% {
    transform: translate3d(-4%, -3%, 0) scale(1.05) rotate(0deg);
  }

  50% {
    transform: translate3d(4%, 3%, 0) scale(1.12) rotate(4deg);
  }

  100% {
    transform: translate3d(-2%, 5%, 0) scale(1.08) rotate(-3deg);
  }
}

@media (prefers-reduced-motion: reduce) {
  .omega__sidebar.omega__sidebar::before {
    animation: none;
  }
}

.omega__sidebar__nav.omega__sidebar__nav,
.omega__sidebar .c-sidebar-nav {
  padding: 10px 8px 18px;
}

.omega__sidebar__navlink.omega__sidebar__navlink,
.omega__sidebar .c-sidebar-nav-link {
  position: relative;
  display: flex;
  align-items: center;
  min-height: 44px;
  gap: 11px;
  margin: 2px 0;
  padding: 10px 12px;
  border: 1px solid transparent;
  border-radius: 12px;
  color: rgba(255, 255, 255, 0.72);
  background: transparent;
  box-shadow: none;
  transition: background-color var(--dp-transition), border-color var(--dp-transition), color var(--dp-transition), box-shadow var(--dp-transition), transform var(--dp-transition);
}

.omega__sidebar__navlink.omega__sidebar__navlink:hover,
.omega__sidebar__navlink.omega__sidebar__navlink:focus,
.omega__sidebar .c-sidebar-nav-link:hover,
.omega__sidebar .c-sidebar-nav-link:focus {
  color: #fff;
  background: rgba(255, 255, 255, 0.08);
  border-color: rgba(255, 255, 255, 0.08);
  box-shadow: 0 8px 18px rgba(0, 0, 0, 0.16);
  transform: translateX(2px);
}

.omega__sidebar__navlink.omega__sidebar__navlink:focus-visible {
  outline: 2px solid rgba(var(--dp-accent-strong-rgb), 0.85);
  outline-offset: 2px;
}

.omega__sidebar__active.omega__sidebar__active,
.omega__sidebar__navlink.omega__sidebar__active,
.omega__sidebar .c-sidebar-nav-link.c-active,
.omega__sidebar__navdropdown.open > .omega__sidebar__dropdown__toggle,
.omega__sidebar__navdropdown.c-show > .omega__sidebar__dropdown__toggle {
  color: #fff !important;
  background: linear-gradient(135deg, rgba(0, 134, 201, 0.24), rgba(var(--dp-accent-strong-rgb), 0.22)) !important;
  border-left: 1px solid rgba(255, 255, 255, 0.14);
  border-color: rgba(255, 255, 255, 0.14) !important;
  box-shadow: inset 3px 0 0 var(--dp-accent-strong), 0 10px 22px rgba(var(--dp-accent-strong-rgb), 0.16);
}

.omega__sidebar__navicon {
  width: 30px;
  min-width: 30px;
  height: 30px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin: 0;
  border-radius: 10px;
  color: rgba(255, 255, 255, 0.72);
  background: rgba(255, 255, 255, 0.07);
  transition: background-color var(--dp-transition), color var(--dp-transition), transform var(--dp-transition);
}

.omega__sidebar__navlink:hover .omega__sidebar__navicon,
.omega__sidebar__navlink:focus .omega__sidebar__navicon,
.omega__sidebar__active .omega__sidebar__navicon,
.omega__sidebar__navdropdown.open > .omega__sidebar__dropdown__toggle .omega__sidebar__navicon,
.omega__sidebar__navdropdown.c-show > .omega__sidebar__dropdown__toggle .omega__sidebar__navicon {
  color: #fff;
  background: rgba(var(--dp-accent-strong-rgb), 0.2);
  transform: translateY(-1px);
}

.omega__sidebar__navtext,
.omega__sidebar__navtext__dropdown {
  min-width: 0;
  margin-left: 0;
  line-height: 1.25;
  overflow-wrap: anywhere;
}

.omega__sidebar__navtext {
  font-weight: 600;
}

.omega__sidebar__navtext__dropdown {
  color: inherit;
  font-size: 13px;
}

.omega__sidebar__navicon--dx {
  margin-left: auto;
  float: none;
  color: rgba(255, 255, 255, 0.42);
  transition: color var(--dp-transition), transform var(--dp-transition);
}

.omega__sidebar__navlink:hover .omega__sidebar__navicon--dx,
.omega__sidebar__active .omega__sidebar__navicon--dx {
  color: rgba(255, 255, 255, 0.86);
  transform: translateX(2px);
}

.omega__nav__dropdownitems {
  margin: 4px 0 8px 15px;
  padding: 4px 0 4px 10px;
  border-left: 1px solid rgba(255, 255, 255, 0.09);
}

html:not([dir=rtl]) .omega__nav__dropdownitems .omega__sidebar__navlink {
  min-height: 38px;
  padding: 8px 10px;
}

.omega__nav__dropdownitems .omega__sidebar__navlink:hover,
.omega__nav__dropdownitems .omega__sidebar__navlink:focus {
  box-shadow: none;
  transform: none;
}

/* ----------------------------------------------------------------------------
 * Titolo pagina + breadcrumb
 * -------------------------------------------------------------------------- */

.omega__content__header {
  animation: dpFadeUp 0.5s backwards;
}

.omega__content__title,
.title__h1 {
  color: var(--dp-text-title) !important;
  font-weight: 700;
}

.omega__content__button {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px;
  animation: dpFadeUp 0.55s 0.04s backwards;
}

.omega__breadcrumb,
.breadcrumb {
  padding: 10px 12px;
  background: rgba(255, 255, 255, 0.58) !important;
  border: 1px solid var(--dp-border);
  border-radius: var(--dp-radius);
  box-shadow: var(--dp-shadow-sm);
}

.omega__breadcrumb a,
.breadcrumb a {
  color: var(--dp-accent-readable);
  font-weight: 600;
}

.omega__breadcrumb .breadcrumb-item.active,
.breadcrumb .breadcrumb-item.active {
  color: var(--dp-accent-readable);
  font-weight: 600;
}

html[data-theme=dark] .omega__breadcrumb,
html[data-theme=dark] .breadcrumb {
  background: rgba(32, 61, 96, 0.6) !important;
  border-color: rgba(0, 134, 201, 0.22);
  box-shadow: 0 10px 26px rgba(0, 0, 0, 0.18);
}

/* ----------------------------------------------------------------------------
 * Card app dashboard (.omega__blockdashboard)
 * -------------------------------------------------------------------------- */

.omega__blockdashboard {
  border: 1px solid var(--dp-border) !important;
  border-radius: var(--dp-radius-lg) !important;
  box-shadow: var(--dp-shadow-sm);
  overflow: visible;
  transition: transform var(--dp-transition), box-shadow var(--dp-transition), border-color var(--dp-transition);
  animation: dpFadeUp 0.5s backwards;
}

.omega__blockdashboard::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  /* segue gli angoli arrotondati della card */
  pointer-events: none;
  /* barra accento solo nei primi 3px in alto: ritagliata dagli angoli tondi */
  background: linear-gradient(90deg, var(--dp-button-start), var(--dp-button-end)) top/100% 3px no-repeat;
  opacity: 0.85;
}

.omega__blockdashboard:hover {
  z-index: 20;
  transform: translateY(-4px);
  box-shadow: var(--dp-shadow);
  border-color: var(--dp-accent-strong) !important;
}

.omega__blockdashboard:focus-within {
  z-index: 30;
}

html[data-theme=dark] .omega__blockdashboard {
  background-image: radial-gradient(120% 120% at 0% 0%, rgba(0, 134, 201, 0.12), transparent 46%), radial-gradient(120% 120% at 100% 100%, rgba(0, 134, 201, 0.1), transparent 52%);
  background-repeat: no-repeat;
}

html[data-theme=dark] .omega__blockdashboard:hover {
  border-color: rgba(0, 134, 201, 0.55) !important;
  box-shadow: 0 16px 34px rgba(0, 0, 0, 0.34), 0 0 0 1px rgba(0, 134, 201, 0.24);
}

.omega__blockdashboard__icon {
  color: var(--dp-accent-readable);
}

.omega__blockdashboard__icon__img,
.omega__blockdashboard__header .fa-4x {
  color: var(--dp-accent-readable);
  opacity: 0.9;
  transition: transform var(--dp-transition);
}

.omega__blockdashboard:hover .omega__blockdashboard__icon__img,
.omega__blockdashboard:hover .omega__blockdashboard__header .fa-4x {
  transform: translateY(-2px) scale(1.04);
}

.omega__blockdashboard__title {
  color: var(--dp-text-title);
  font-weight: 700;
}

.omega__blockdashboard__token {
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 12px;
  color: var(--dp-text);
  background: var(--dp-bg);
  border: 1px solid var(--dp-border);
  border-radius: var(--dp-radius-sm);
  padding: 6px 10px;
}

.omega__blockdashboard__setting {
  top: 14px;
  right: 14px;
  z-index: 4;
}

.omega__blockdashboard__setting__dropdown {
  position: relative;
}

.omega__blockdashboard__setting__dropdown.show {
  z-index: 40;
}

.omega__blockdashboard__setting > a,
.omega__blockdashboard__setting__dropdown__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  color: var(--dp-text);
  border: 1px solid transparent;
  border-radius: var(--dp-radius-pill);
  background: rgba(255, 255, 255, 0.66);
  transition: color var(--dp-transition), background-color var(--dp-transition), border-color var(--dp-transition), box-shadow var(--dp-transition), transform var(--dp-transition);
}

.omega__blockdashboard__setting > a:hover,
.omega__blockdashboard__setting__dropdown.show .omega__blockdashboard__setting__dropdown__btn,
.omega__blockdashboard__setting__dropdown__btn:hover,
.omega__blockdashboard__setting__dropdown__btn:focus {
  color: var(--dp-accent-readable);
  background: rgba(var(--dp-accent-strong-rgb), 0.1);
  border-color: rgba(var(--dp-accent-strong-rgb), 0.2);
  box-shadow: 0 8px 20px rgba(var(--dp-accent-strong-rgb), 0.14);
  transform: translateY(-1px);
}

.omega__blockdashboard__setting__dropdown .dropdown-menu {
  top: calc(100% + 7px) !important;
  right: 0 !important;
  left: auto !important;
  transform: none !important;
  min-width: 172px;
  max-width: min(190px, 100vw - 32px);
  padding: 7px;
  overflow: hidden;
  color: var(--dp-text);
  border: 1px solid rgba(var(--dp-accent-strong-rgb), 0.18) !important;
  border-radius: var(--dp-radius) !important;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.97), rgba(255, 255, 255, 0.92)), var(--dp-surface) !important;
  box-shadow: 0 18px 42px rgba(20, 35, 60, 0.16), 0 4px 12px rgba(20, 35, 60, 0.08);
  transform-origin: 90% top;
  animation: dpCardMenuIn 140ms cubic-bezier(0.2, 0.8, 0.2, 1) both;
  backdrop-filter: blur(16px) saturate(1.06);
}

.omega__blockdashboard__setting__dropdown .dropdown-menu::before {
  content: "";
  position: absolute;
  inset: 0 0 auto;
  height: 3px;
  background: linear-gradient(90deg, var(--dp-button-start), var(--dp-button-end));
}

.omega__blockdashboard__setting__dropdown .dropdown-item {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  min-height: 34px;
  margin: 2px 0;
  padding: 7px 10px;
  color: var(--dp-text-title) !important;
  border: 1px solid transparent;
  border-radius: var(--dp-radius-sm);
  background: transparent !important;
  line-height: 1.22;
  white-space: normal;
  font-size: 12px;
  transition: background-color var(--dp-transition), border-color var(--dp-transition), color var(--dp-transition), transform var(--dp-transition);
}

.omega__blockdashboard__setting__dropdown .dropdown-item:hover,
.omega__blockdashboard__setting__dropdown .dropdown-item:focus {
  color: var(--dp-accent-readable) !important;
  background: rgba(var(--dp-accent-strong-rgb), 0.1) !important;
  border-color: rgba(var(--dp-accent-strong-rgb), 0.18);
  transform: translateX(2px);
}

html[data-theme=dark] .omega__blockdashboard__setting > a,
html[data-theme=dark] .omega__blockdashboard__setting__dropdown__btn {
  color: rgba(234, 240, 247, 0.82);
  background: rgba(22, 45, 73, 0.56);
}

html[data-theme=dark] .omega__blockdashboard__setting > a:hover,
html[data-theme=dark] .omega__blockdashboard__setting__dropdown.show .omega__blockdashboard__setting__dropdown__btn,
html[data-theme=dark] .omega__blockdashboard__setting__dropdown__btn:hover,
html[data-theme=dark] .omega__blockdashboard__setting__dropdown__btn:focus {
  color: var(--dp-accent-readable);
  background: rgba(0, 134, 201, 0.12);
  border-color: rgba(0, 134, 201, 0.24);
}

html[data-theme=dark] .omega__blockdashboard__setting__dropdown .dropdown-menu {
  border-color: rgba(0, 134, 201, 0.24) !important;
  background: radial-gradient(90% 120% at 8% 0%, rgba(0, 134, 201, 0.17), transparent 56%), radial-gradient(90% 120% at 100% 100%, rgba(0, 134, 201, 0.15), transparent 60%), rgba(32, 61, 96, 0.92) !important;
  box-shadow: 0 22px 48px rgba(0, 0, 0, 0.36), inset 0 1px 0 rgba(255, 255, 255, 0.05);
}

html[data-theme=dark] .omega__blockdashboard__setting__dropdown .dropdown-item {
  color: rgba(234, 240, 247, 0.88) !important;
}

html[data-theme=dark] .omega__blockdashboard__setting__dropdown .dropdown-item:hover,
html[data-theme=dark] .omega__blockdashboard__setting__dropdown .dropdown-item:focus {
  color: var(--dp-accent-readable) !important;
  background: rgba(0, 134, 201, 0.12) !important;
  border-color: rgba(0, 134, 201, 0.2);
}

@keyframes dpCardMenuIn {
  from {
    opacity: 0;
    transform: translate3d(0, -6px, 0) scale(0.98);
  }

  to {
    opacity: 1;
    transform: translate3d(0, 0, 0) scale(1);
  }
}

/* ----------------------------------------------------------------------------
 * Blocchi contenuto / form / pagine errore
 * -------------------------------------------------------------------------- */

.omega__blockform,
.page__alert,
.card {
  position: relative;
  overflow: hidden;
  color: var(--dp-text);
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.92), rgba(255, 255, 255, 0.82)), var(--dp-surface) !important;
  border: 1px solid var(--dp-border) !important;
  border-radius: var(--dp-radius-lg) !important;
  box-shadow: var(--dp-shadow);
  /* Fill-mode "backwards" e non "both": con "both" l'ultimo keyframe resta
     applicato per sempre e il blocco conserva un transform: da lì diventa il
     contenitore dei modali «position: fixed» al suo interno, che finiscono
     sotto il velo di Bootstrap e non si possono più compilare. */
  animation: dpFadeUp 0.55s 0.08s backwards;
}

.omega__blockform::before,
.page__alert::before,
.card::before {
  content: "";
  position: absolute;
  inset: 0 0 auto;
  height: 3px;
  background: linear-gradient(90deg, var(--dp-button-start), var(--dp-button-end));
  opacity: 0.86;
}

.omega__blockform__header {
  border-bottom: 1px solid var(--dp-border);
  background: linear-gradient(180deg, rgba(var(--dp-accent-strong-rgb), 0.05), transparent);
}

.omega__blockform__title {
  color: var(--dp-text-title) !important;
  font-weight: 700;
}

.omega__blockform__body {
  position: relative;
  z-index: 1;
}

html[data-theme=dark] .omega__blockform,
html[data-theme=dark] .page__alert,
html[data-theme=dark] .card {
  background: radial-gradient(120% 120% at 4% 0%, rgba(0, 134, 201, 0.14), transparent 46%), radial-gradient(110% 120% at 100% 100%, rgba(0, 134, 201, 0.13), transparent 54%), rgba(9, 32, 56, 0.78) !important;
  border-color: rgba(0, 134, 201, 0.24) !important;
  box-shadow: 0 18px 42px rgba(0, 0, 0, 0.34), inset 0 1px 0 rgba(255, 255, 255, 0.05);
  /* Niente backdrop-filter qui: intrappolerebbe i modali interni come il
     transform di cui sopra. Lo sfondo e' gia' opaco a sufficienza. */
}

html[data-theme=dark] .omega__blockform__header {
  border-color: rgba(0, 134, 201, 0.2);
  background: linear-gradient(180deg, rgba(0, 134, 201, 0.09), rgba(255, 255, 255, 0));
}

.group__limit {
  margin-bottom: 18px;
}

.group__limit .omega__form__label {
  min-height: 22px;
  color: var(--dp-text-title);
  font-weight: 650;
  line-height: 1.25;
}

.omega__permission__title__l2,
.omega__permission__title__l3 {
  color: var(--dp-text-title);
  font-weight: 700;
}

.omega__permission__content {
  padding-top: 6px;
}

.omega__checkbox__label {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 28px;
  color: var(--dp-text);
}

.omega__checkbox__label .check {
  border-color: var(--dp-border);
  transition: background-color var(--dp-transition), border-color var(--dp-transition), box-shadow var(--dp-transition);
}

.omega__checkbox input:checked + .check {
  background: linear-gradient(135deg, var(--dp-button-start), var(--dp-button-end));
  border-color: transparent;
  box-shadow: 0 6px 14px rgba(var(--dp-accent-strong-rgb), 0.24);
}

html[data-theme=dark] .group__limit .omega__form__label,
html[data-theme=dark] .omega__permission__title__l2,
html[data-theme=dark] .omega__permission__title__l3 {
  color: #8BB6F1;
}

html[data-theme=dark] .omega__checkbox__label {
  color: rgba(234, 240, 247, 0.82);
}

/* ----------------------------------------------------------------------------
 * Tabelle (.tableomega / .table)
 * -------------------------------------------------------------------------- */

.tableomega,
table.tableomega,
.table {
  border-collapse: separate !important;
  border-spacing: 0 8px !important;
  color: var(--dp-text);
  margin-bottom: 0;
}

.tableomega thead th,
.table thead th {
  color: var(--dp-accent-readable);
  font-size: 12px;
  font-weight: 700;
  /* [2026] intestazioni NON in maiuscolo, come nelle liste DatiPro */
  text-transform: none;
  letter-spacing: 0;
  border-bottom: 1px solid var(--dp-border) !important;
  background: transparent !important;
  padding: 14px 12px !important;
}

.tableomega.tableomega.tableomega thead > tr > th.sorting,
.tableomega.tableomega.tableomega thead > tr > th.sorting_asc,
.tableomega.tableomega.tableomega thead > tr > th.sorting_desc,
table.dataTable thead > tr > th.sorting,
table.dataTable thead > tr > th.sorting_asc,
table.dataTable thead > tr > th.sorting_desc {
  padding-left: 12px !important;
  padding-right: 36px !important;
}

.tableomega.tableomega.tableomega thead > tr > th.sorting::before,
.tableomega.tableomega.tableomega thead > tr > th.sorting_asc::before,
.tableomega.tableomega.tableomega thead > tr > th.sorting_desc::before,
table.dataTable thead .sorting::before,
table.dataTable thead .sorting_asc::before,
table.dataTable thead .sorting_desc::before {
  left: auto !important;
  right: 18px !important;
  bottom: 50% !important;
  transform: translateY(12%);
}

.tableomega.tableomega.tableomega thead > tr > th.sorting::after,
.tableomega.tableomega.tableomega thead > tr > th.sorting_asc::after,
.tableomega.tableomega.tableomega thead > tr > th.sorting_desc::after,
table.dataTable thead .sorting::after,
table.dataTable thead .sorting_asc::after,
table.dataTable thead .sorting_desc::after {
  left: auto !important;
  right: 10px !important;
  bottom: 50% !important;
  transform: translateY(12%);
}

.tableomega tbody tr,
.table tbody tr {
  background: transparent !important;
  transition: background-color var(--dp-transition), transform var(--dp-transition), box-shadow var(--dp-transition);
}

.tableomega tbody tr:hover,
.table tbody tr:hover {
  background: rgba(var(--dp-accent-strong-rgb), 0.07) !important;
  transform: translateY(-1px);
}

.tableomega tbody td,
.table tbody td {
  border-top: 0 !important;
  vertical-align: middle;
  padding: 13px 12px !important;
  background: rgba(255, 255, 255, 0.72);
  border-bottom: 1px solid rgba(226, 230, 238, 0.66);
}

.tableomega tbody td:first-child,
.table tbody td:first-child {
  border-top-left-radius: var(--dp-radius-sm);
  border-bottom-left-radius: var(--dp-radius-sm);
}

.tableomega tbody td:last-child,
.table tbody td:last-child {
  border-top-right-radius: var(--dp-radius-sm);
  border-bottom-right-radius: var(--dp-radius-sm);
}

.table-striped tbody tr:nth-of-type(odd),
.table-striped tbody tr:nth-of-type(even) {
  background-color: transparent !important;
}

.tableomega tbody tr:hover td,
.table tbody tr:hover td {
  background: rgba(var(--dp-accent-strong-rgb), 0.1) !important;
  border-color: rgba(var(--dp-accent-strong-rgb), 0.16);
}

html[data-theme=dark] .tableomega thead th,
html[data-theme=dark] .table thead th {
  border-color: rgba(0, 134, 201, 0.18) !important;
}

html[data-theme=dark] .tableomega tbody td,
html[data-theme=dark] .table tbody td {
  color: var(--dp-muted);
  background: rgba(22, 45, 73, 0.58) !important;
  border-bottom-color: rgba(0, 134, 201, 0.08);
}

html[data-theme=dark] .tableomega tbody tr:hover td,
html[data-theme=dark] .table tbody tr:hover td {
  background: rgba(0, 134, 201, 0.1) !important;
  border-color: rgba(0, 134, 201, 0.2);
  box-shadow: inset 0 0 0 1px rgba(0, 134, 201, 0.05);
}

.dataTables_wrapper {
  color: var(--dp-text);
}

.dataTables_wrapper .dataTables_length,
.dataTables_wrapper .dataTables_filter,
.dataTables_wrapper .dataTables_info {
  color: var(--dp-text) !important;
}

.dataTables_wrapper .dataTables_length select,
.dataTables_wrapper .dataTables_filter input {
  min-height: 36px;
  color: var(--dp-text-title);
  background: var(--dp-surface) !important;
  border: 1px solid var(--dp-border) !important;
  border-radius: var(--dp-radius-sm) !important;
  box-shadow: inset 0 1px 2px rgba(20, 35, 60, 0.04);
  transition: border-color var(--dp-transition), box-shadow var(--dp-transition), background-color var(--dp-transition);
}

/* [2026] Box "Visualizza N elementi" compatto come in DatiPro (non a piena larghezza). */

.dataTables_wrapper .dataTables_length select {
  width: auto !important;
  min-width: 130px;
  max-width: 200px;
  display: inline-block;
}

.dataTables_wrapper .dataTables_length select:focus,
.dataTables_wrapper .dataTables_filter input:focus {
  border-color: var(--dp-accent-strong) !important;
  box-shadow: 0 0 0 3px rgba(var(--dp-accent-strong-rgb), 0.15);
  outline: none;
}

html[data-theme=dark] .dataTables_wrapper .dataTables_length select,
html[data-theme=dark] .dataTables_wrapper .dataTables_filter input {
  color: var(--dp-text);
  background: rgba(22, 45, 73, 0.72) !important;
  border-color: rgba(0, 134, 201, 0.22) !important;
}

html[data-theme=dark] .dataTables_wrapper .dataTables_length select option {
  color: var(--dp-text);
  background: #162D49;
}

/* ----------------------------------------------------------------------------
 * Barra di ricerca DataTables con LENTE + X (come DatiPro). I due bottoni sono
 * iniettati dal JS del tema (dpAddTableSearchButtons); qui lo stile theme-aware.
 * -------------------------------------------------------------------------- */

.dataTables_wrapper .dataTables_filter:has(.omega__table__btn__search) {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: nowrap;
  min-height: 38px;
}

.dataTables_wrapper .dataTables_filter:has(.omega__table__btn__search) label {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  min-width: 0;
  margin: 0;
  white-space: nowrap;
}

.dataTables_wrapper .dataTables_filter:has(.omega__table__btn__search) input[type=search] {
  box-sizing: border-box;
  height: 38px !important;
  min-height: 38px !important;
  margin: 0 !important;
  border-right: 0 !important;
  border-radius: var(--dp-radius-sm) 0 0 var(--dp-radius-sm) !important;
}

.dataTables_wrapper .dataTables_filter .omega__table__btn__search,
.dataTables_wrapper .dataTables_filter .omega__table__btn__clear {
  box-sizing: border-box;
  flex: 0 0 38px;
  width: 38px;
  min-width: 38px;
  height: 38px;
  min-height: 38px;
  margin: 0;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--dp-border);
  transition: background-color var(--dp-transition), color var(--dp-transition), box-shadow var(--dp-transition);
}

.dataTables_wrapper .dataTables_filter .omega__table__btn__search {
  border-radius: 0;
  border-left: 0;
  background: var(--dp-accent-strong);
  border-color: var(--dp-accent-strong);
  color: #fff;
}

.dataTables_wrapper .dataTables_filter .omega__table__btn__clear {
  border-left: 0;
  border-radius: 0 var(--dp-radius-sm) var(--dp-radius-sm) 0;
  background: rgba(var(--dp-accent-strong-rgb), 0.08);
  color: var(--dp-accent-readable);
}

.dataTables_wrapper .dataTables_filter .omega__table__btn__search:hover,
.dataTables_wrapper .dataTables_filter .omega__table__btn__search:focus-visible {
  filter: brightness(1.06);
  box-shadow: 0 5px 12px rgba(var(--dp-accent-strong-rgb), 0.22);
}

.dataTables_wrapper .dataTables_filter .omega__table__btn__clear:hover,
.dataTables_wrapper .dataTables_filter .omega__table__btn__clear:focus-visible {
  background: rgba(var(--dp-accent-strong-rgb), 0.16);
}

/* ----------------------------------------------------------------------------
 * Liste con icone di azione a destra (`.tableomega`, incl. datatables e il Vue
 * passport-clients): la colonna marcata `.dp-col-grow` assorbe lo spazio libero,
 * così le colonne icona restano strette e le icone si affiancano uniformi (come in
 * DatiPro). Icone centrate, padding ridotto. Fix "icone non allineate".
 * -------------------------------------------------------------------------- */

table.tableomega th.dp-col-grow,
table.tableomega td.dp-col-grow {
  width: 100% !important;
}

table.tableomega th.no-sort.row-width2,
table.tableomega td:has(> .action-link) {
  white-space: nowrap;
  text-align: center;
  padding-left: 2px !important;
  padding-right: 2px !important;
}

table.tableomega td .action-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.tableomega__icon {
  transition: transform var(--dp-transition), color var(--dp-transition);
}

.tableomega__icon:hover {
  transform: scale(1.15);
}

.tableomega__icon--blue {
  color: var(--dp-accent-readable) !important;
}

.tableomega__icon--red:hover {
  color: var(--dp-danger) !important;
}

.dataTables_wrapper .dataTables_paginate,
div.dataTables_wrapper div.dataTables_paginate {
  padding-top: 12px;
}

.dataTables_wrapper .pagination,
.dataTables_paginate .pagination {
  gap: 6px;
  justify-content: flex-end;
}

.dataTables_wrapper .page-link,
.dataTables_paginate .page-link,
.dataTables_paginate .paginate_button {
  min-width: 38px;
  min-height: 34px;
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  padding: 7px 12px !important;
  /* [2026] come DatiPro: pill rettangolare (radius-sm) + peso 600 */
  border-radius: var(--dp-radius-sm) !important;
  border: 1px solid var(--dp-border) !important;
  color: var(--dp-text-title) !important;
  background: var(--dp-surface) !important;
  font-weight: 600;
  box-shadow: var(--dp-shadow-sm);
  transition: background-color var(--dp-transition), border-color var(--dp-transition), color var(--dp-transition), box-shadow var(--dp-transition), transform var(--dp-transition);
}

.dataTables_wrapper .page-link:hover,
.dataTables_paginate .page-link:hover,
.dataTables_paginate .paginate_button:hover {
  color: #fff !important;
  background: linear-gradient(135deg, var(--dp-button-start), var(--dp-button-end)) !important;
  border-color: rgba(var(--dp-accent-strong-rgb), 0.52) !important;
  box-shadow: 0 8px 18px rgba(var(--dp-accent-strong-rgb), 0.24);
  transform: translateY(-1px);
}

.dataTables_wrapper .page-item.active .page-link,
.dataTables_paginate .page-item.active .page-link,
.dataTables_paginate .paginate_button.current {
  color: #fff !important;
  background: linear-gradient(135deg, var(--dp-button-start), var(--dp-button-end)) !important;
  border-color: rgba(var(--dp-accent-strong-rgb), 0.6) !important;
  box-shadow: 0 8px 18px rgba(var(--dp-accent-strong-rgb), 0.26);
}

.dataTables_wrapper .page-item.disabled .page-link,
.dataTables_paginate .page-item.disabled .page-link,
.dataTables_paginate .paginate_button.disabled {
  opacity: 0.48;
  box-shadow: none;
  transform: none;
}

.dataTables_wrapper .pagination .page-item,
.dataTables_paginate .pagination .page-item,
.dataTables_paginate .paginate_button.page-item {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  padding: 0 !important;
  min-width: 0 !important;
  min-height: 0 !important;
}

.omega__footer.omega__footer {
  color: var(--dp-slate) !important;
  background: linear-gradient(90deg, #F3F7FC, #E5EFFA) !important;
}

.omega__footer.omega__footer span,
.omega__footer.omega__footer a {
  color: var(--dp-accent-readable) !important;
}

.omega__footer.omega__footer a {
  font-weight: 600;
  transition: color var(--dp-transition), text-shadow var(--dp-transition);
}

.omega__footer.omega__footer a:hover,
.omega__footer.omega__footer a:focus {
  color: #315CC4 !important;
  text-decoration: none;
}

html[data-theme=dark] .omega__footer.omega__footer {
  color: var(--dp-muted) !important;
  background: linear-gradient(90deg, var(--dp-card), var(--dp-navy)) !important;
}

html[data-theme=dark] .omega__footer.omega__footer span,
html[data-theme=dark] .omega__footer.omega__footer a {
  color: var(--dp-highlight) !important;
}

/* ----------------------------------------------------------------------------
 * Bottoni
 * -------------------------------------------------------------------------- */

.btn {
  transition: background-color var(--dp-transition), border-color var(--dp-transition), color var(--dp-transition), box-shadow var(--dp-transition), transform var(--dp-transition), filter var(--dp-transition);
}

.omega__btn__bluelight,
.omega__btn__add,
.omega__btn__add__link {
  color: #fff !important;
  background: linear-gradient(135deg, var(--dp-button-start), var(--dp-button-end)) !important;
  border: 1px solid transparent !important;
  box-shadow: 0 6px 16px rgba(var(--dp-accent-strong-rgb), 0.26);
}

.btn.omega__btn__add {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  padding: 0 !important;
}

.btn.omega__btn__add:hover {
  background: transparent !important;
  box-shadow: none !important;
  transform: none !important;
  filter: none !important;
}

.omega__btn__add .omega__btn__add__link {
  border-radius: var(--dp-radius);
}

.omega__btn__bluelight:hover,
.omega__btn__add:hover,
.omega__btn__add:hover .omega__btn__add__link {
  transform: translateY(-2px);
  filter: brightness(1.04);
  box-shadow: 0 10px 24px rgba(var(--dp-accent-strong-rgb), 0.38);
  color: #fff !important;
}

/* Il gradiente blu usa sempre testo bianco, anche nel tema scuro. */

html[data-theme=dark] .omega__btn__bluelight:hover,
html[data-theme=dark] .omega__btn__bluelight:hover .color--white,
html[data-theme=dark] .omega__btn__bluelight:hover *,
html[data-theme=dark] .omega__btn__add:hover,
html[data-theme=dark] .omega__btn__add:hover .omega__btn__add__link,
html[data-theme=dark] .omega__btn__add:hover .omega__btn__add__link *,
html[data-theme=dark] .omega__btn__add:hover .color--white {
  color: #FFFFFF !important;
}

.omega__btn__bluelight:active,
.omega__btn__add:active {
  transform: translateY(0);
}

html:not([data-theme=dark]) .omega__btn__bluelight,
html:not([data-theme=dark]) .omega__btn__add__link {
  background: linear-gradient(135deg, var(--dp-button-start), var(--dp-button-end)) !important;
  border: 1px solid rgba(0, 134, 201, 0.45) !important;
  box-shadow: 0 6px 16px rgba(0, 134, 201, 0.18);
}

html:not([data-theme=dark]) .omega__btn__bluelight:hover,
html:not([data-theme=dark]) .omega__btn__add:hover .omega__btn__add__link {
  background: linear-gradient(135deg, var(--dp-button-start), var(--dp-button-end)) !important;
  border-color: rgba(38, 118, 189, 0.8) !important;
  box-shadow: 0 10px 24px rgba(0, 134, 201, 0.26) !important;
  /* Stessa sfumatura del riposo: il passaggio si sente con una schiarita. */
  filter: brightness(1.08);
}

.omega__btn__white {
  color: var(--dp-text-title) !important;
  background: var(--dp-surface) !important;
  border: 1px solid var(--dp-border) !important;
  box-shadow: var(--dp-shadow-sm);
}

.omega__btn__white:hover {
  transform: translateY(-1px);
  color: var(--dp-accent-readable) !important;
  border-color: var(--dp-accent-strong) !important;
  background: rgba(var(--dp-accent-strong-rgb), 0.06) !important;
}

/* "Torna indietro": outline istituzionale e riempimento blu all'hover. */

.buttongoback,
.omega__btn__back,
.omega__btn__goback {
  color: var(--dp-accent-readable) !important;
  background: transparent !important;
  border: 1px solid rgba(0, 134, 201, 0.4) !important;
  box-shadow: none !important;
}

.buttongoback *,
.omega__btn__back *,
.omega__btn__goback * {
  color: inherit !important;
}

.buttongoback:hover,
.omega__btn__back:hover,
.omega__btn__goback:hover {
  transform: translateY(-1px);
  color: #fff !important;
  background: linear-gradient(135deg, var(--dp-button-start), var(--dp-button-end)) !important;
  border-color: rgba(38, 118, 189, 0.8) !important;
  box-shadow: 0 10px 24px rgba(0, 134, 201, 0.24) !important;
}

html[data-theme=dark] .buttongoback,
html[data-theme=dark] .omega__btn__back,
html[data-theme=dark] .omega__btn__goback {
  color: var(--dp-highlight) !important;
  border-color: rgba(var(--dp-highlight-rgb), 0.45) !important;
}

html[data-theme=dark] .buttongoback:hover,
html[data-theme=dark] .omega__btn__back:hover,
html[data-theme=dark] .omega__btn__goback:hover {
  color: #FFFFFF !important;
  background: linear-gradient(135deg, var(--dp-button-start), var(--dp-button-end)) !important;
  border-color: rgba(0, 134, 201, 0.8) !important;
  box-shadow: 0 10px 24px rgba(var(--dp-brand-rgb), 0.28) !important;
}

.omega__btn__goback__icon,
.omega__btn__add__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.omega__btn__add__link,
.omega__btn__goback {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 36px;
  text-decoration: none !important;
}

/* ----------------------------------------------------------------------------
 * Rounding generale + form + modali (coerenza 2026)
 * -------------------------------------------------------------------------- */

.card,
.omega__blockform,
.modal-content,
.dropdown-menu {
  border-radius: var(--dp-radius) !important;
}

.btn,
.form-control,
.custom-select,
.omega__form__input {
  border-radius: var(--dp-radius-sm) !important;
}

.omega__form__input:focus,
.form-control:focus {
  border-color: var(--dp-accent-strong);
  box-shadow: 0 0 0 3px rgba(var(--dp-accent-strong-rgb), 0.15);
}

.modal-content {
  border: 1px solid var(--dp-border) !important;
  box-shadow: var(--dp-shadow-lg);
}

.page__alert {
  max-width: 760px;
  margin: 48px auto;
  padding: 18px;
}

.page__alert__content__img {
  padding-bottom: 12px;
  border-bottom: 1px solid var(--dp-border);
  text-align: center;
}

.page__alert__img {
  max-width: 280px;
  height: auto;
}

.page__alert__content {
  padding-top: 18px;
}

@media (max-width: 767.98px) {
  .omega__content__button {
    align-items: stretch;
    gap: 8px;
  }

  .omega__content__button .btn,
  .omega__content__button .omega__btn__add {
    width: 100%;
  }

  .omega__blockform__body {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  .dataTables_wrapper .dataTables_length,
  .dataTables_wrapper .dataTables_filter {
    text-align: left !important;
  }

  .dataTables_wrapper .dataTables_filter input {
    width: 100%;
    margin-left: 0;
    margin-top: 6px;
  }
}

/* search/select toolbar */

.search.omega__form__input,
.omega__select.form-control {
  transition: border-color var(--dp-transition), box-shadow var(--dp-transition);
}

@keyframes dpFadeUp {
  from {
    opacity: 0;
    transform: translateY(8px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* ----------------------------------------------------------------------------
 * [2026] Tick checkbox + hover opzioni a tema (LIGHT viola / DARK blu istituzionale).
 * Specificita' alta (html body ...) per battere main.css/main_usa.css che
 * vengono caricati DOPO app2026.css e coloravano il check di blu.
 * -------------------------------------------------------------------------- */

html body .omega__checkbox input[type=checkbox]:checked + span.check,
html body .omega__checkbox input:checked + .check {
  background: linear-gradient(135deg, var(--dp-button-start), var(--dp-button-end));
  border: 1px solid transparent;
  box-shadow: 0 6px 14px rgba(var(--dp-accent-strong-rgb), 0.24);
}

html body .omega__checkbox input[type=checkbox]:checked + span.check i,
html body .omega__checkbox input[type=checkbox]:checked + span.check svg {
  color: #fff;
}

/* Hover riga/opzione selezionabile: una sola tinta d'accento su tutta la riga.
 * Prima si coloravano sia il contenitore (.omega__checkbox, largo quanto la
 * colonna) sia l'etichetta interna (larga quanto il testo): le due tinte si
 * sommavano e dietro al testo compariva un secondo rettangolo piu' carico.
 * Ora il contenitore resta trasparente e l'etichetta occupa tutta la riga:
 * la tinta e' una, arrotondata, e tutta la riga e' cliccabile. */

html body .omega__checkbox,
html body .omega__checkbox:hover,
html body .omega__artcheckbox:hover {
  background: transparent;
}

html body .omega__checkbox .omega__checkbox__label {
  display: flex;
  /* Il margine negativo compensa il padding: la casella resta allineata
     all'etichetta del gruppo e la tinta sborda appena nella colonna. */
  width: calc(100% + 16px);
  margin: 0 -8px;
  padding: 4px 8px;
  border-radius: var(--dp-radius-sm, 8px);
  cursor: pointer;
  transition: background-color var(--dp-transition), color var(--dp-transition);
}

html body .omega__checkbox .omega__checkbox__label:hover {
  background: rgba(var(--dp-accent-strong-rgb), 0.08);
}

html[data-theme=dark] body .omega__checkbox .omega__checkbox__label:hover {
  background: rgba(var(--dp-accent-strong-rgb), 0.12);
}

/* Sulla casella, al passaggio, solo un bordo d'accento e un alone leggero. */

html body .omega__checkbox .omega__checkbox__label:hover input:not(:checked) + span.check {
  border-color: rgba(var(--dp-accent-strong-rgb), 0.6);
  box-shadow: 0 0 0 3px rgba(var(--dp-accent-strong-rgb), 0.12);
}

/* Da tastiera la casella (invisibile) deve comunque mostrare il fuoco. */

html body .omega__checkbox input[type=checkbox]:focus-visible + span.check {
  box-shadow: 0 0 0 3px rgba(var(--dp-accent-strong-rgb), 0.3);
}

/* --------------------------------------------------------------------------
 * Toast (toastr): di default opacity .8 -> si legge male sopra il contenuto.
 * Lo rendiamo opaco a riposo (come lo stato :hover), cosi' e' subito leggibile.
 * NB: niente !important sull'opacity, altrimenti l'animazione di fadeOut di
 * toastr (che anima l'opacity inline) non riesce a nascondere il toast e questo
 * resterebbe finche' non lo si clicca.
 * -------------------------------------------------------------------------- */

#toast-container > div {
  opacity: 1;
  box-shadow: 0 0 12px #000 !important;
}

/* ==========================================================================
 * [2026] COERENZA AGGIUNTIVA (audit): textarea, bottoni form, interno modali,
 * label, classi legacy Bootstrap. Tutto theme-aware via token.
 * ========================================================================== */

/* --- TEXTAREA (era senza stile) ------------------------------------------- */

.omega__form__textarea,
.omega__form textarea,
textarea.form-control {
  color: var(--dp-text-title);
  background: var(--dp-surface);
  border: 1px solid var(--dp-border);
  border-radius: var(--dp-radius-sm);
  padding: 10px 12px;
  min-height: 90px;
  box-shadow: inset 0 1px 2px rgba(20, 35, 60, 0.04);
  transition: border-color var(--dp-transition), box-shadow var(--dp-transition), background-color var(--dp-transition);
}

.omega__form__textarea:focus,
.omega__form textarea:focus,
textarea.form-control:focus {
  border-color: var(--dp-accent-strong);
  box-shadow: 0 0 0 3px rgba(var(--dp-accent-strong-rgb), 0.15);
  outline: none;
}

html[data-theme=dark] .omega__form__textarea,
html[data-theme=dark] .omega__form textarea,
html[data-theme=dark] textarea.form-control {
  color: var(--dp-text);
  background: rgba(22, 45, 73, 0.72);
  border-color: rgba(0, 134, 201, 0.22);
}

/* --- BOTTONI form non coperti --------------------------------------------- */

/* PRIMARI (Salva, Seleziona tutti): riempimento accent, come "Aggiungi". */

.omega__btn__save,
.omega__btn__select {
  color: #fff !important;
  background: linear-gradient(135deg, var(--dp-button-start), var(--dp-button-end)) !important;
  border: 1px solid transparent !important;
  box-shadow: 0 6px 16px rgba(var(--dp-accent-strong-rgb), 0.26);
  transition: background-color var(--dp-transition), box-shadow var(--dp-transition), transform var(--dp-transition), filter var(--dp-transition), color var(--dp-transition);
}

.omega__btn__save:hover,
.omega__btn__select:hover {
  transform: translateY(-1px);
  filter: brightness(1.04);
  box-shadow: 0 10px 24px rgba(var(--dp-accent-strong-rgb), 0.38);
  color: #fff !important;
}

html[data-theme=dark] .omega__btn__save:hover,
html[data-theme=dark] .omega__btn__save:hover *,
html[data-theme=dark] .omega__btn__select:hover,
html[data-theme=dark] .omega__btn__select:hover * {
  color: #FFFFFF !important;
}

/* SECONDARI (Annulla, Deseleziona, Duplica): outline accent, hover che riempie. */

.omega__btn__annul,
.omega__btn__deselect,
.omega__btn__duplicate {
  color: var(--dp-accent-readable) !important;
  background: transparent !important;
  border: 1px solid rgba(0, 134, 201, 0.4) !important;
  box-shadow: none !important;
  transition: background-color var(--dp-transition), box-shadow var(--dp-transition), transform var(--dp-transition), border-color var(--dp-transition), color var(--dp-transition);
}

.omega__btn__annul *,
.omega__btn__deselect *,
.omega__btn__duplicate * {
  color: inherit !important;
}

.omega__btn__annul:hover,
.omega__btn__deselect:hover,
.omega__btn__duplicate:hover {
  transform: translateY(-1px);
  color: #fff !important;
  background: linear-gradient(135deg, var(--dp-button-start), var(--dp-button-end)) !important;
  border-color: rgba(38, 118, 189, 0.8) !important;
  box-shadow: 0 10px 24px rgba(0, 134, 201, 0.24) !important;
}

html[data-theme=dark] .omega__btn__annul,
html[data-theme=dark] .omega__btn__deselect,
html[data-theme=dark] .omega__btn__duplicate {
  color: var(--dp-highlight) !important;
  border-color: rgba(var(--dp-highlight-rgb), 0.45) !important;
}

html[data-theme=dark] .omega__btn__annul:hover,
html[data-theme=dark] .omega__btn__deselect:hover,
html[data-theme=dark] .omega__btn__duplicate:hover {
  color: #FFFFFF !important;
  background: linear-gradient(135deg, var(--dp-button-start), var(--dp-button-end)) !important;
  border-color: rgba(0, 134, 201, 0.8) !important;
  box-shadow: 0 10px 24px rgba(var(--dp-brand-rgb), 0.28) !important;
}

/* DISTRUTTIVI (Elimina): rosso moderno. */

.omega__btn__delete,
.modal__danger__btn {
  color: #fff !important;
  background: linear-gradient(135deg, #f0506e, #ff7a90) !important;
  border: 1px solid rgba(240, 80, 110, 0.5) !important;
  box-shadow: 0 6px 16px rgba(240, 80, 110, 0.18);
  transition: background-color var(--dp-transition), box-shadow var(--dp-transition), transform var(--dp-transition), filter var(--dp-transition);
}

.omega__btn__delete *,
.modal__danger__btn * {
  color: #fff !important;
}

.omega__btn__delete:hover,
.modal__danger__btn:hover {
  transform: translateY(-1px);
  filter: brightness(1.04);
  box-shadow: 0 10px 24px rgba(240, 80, 110, 0.26) !important;
}

/* --- LABEL dei form -------------------------------------------------------- */

.omega__form__label {
  color: var(--dp-text-title);
  font-weight: 600;
}

/* --- INTERNO MODALI (era solo .modal-content) ----------------------------- */

.modal-header,
.modal-body,
.modal-footer {
  background: var(--dp-surface);
  border-color: var(--dp-border) !important;
}

.modal-title,
.generic__modal__title {
  color: var(--dp-text-title);
  font-weight: 700;
}

.modal .close {
  color: var(--dp-text);
  opacity: 0.7;
  text-shadow: none;
  transition: color var(--dp-transition), opacity var(--dp-transition);
}

.modal .close:hover {
  opacity: 1;
  color: var(--dp-accent-readable);
}

/* --- LEGACY Bootstrap non coperto ----------------------------------------- */

.help-block {
  color: var(--dp-text);
  opacity: 0.7;
  font-size: 12px;
}

.list-group-item {
  background: var(--dp-surface);
  border-color: var(--dp-border) !important;
  color: var(--dp-text-title);
}

.input-group-text {
  background: var(--dp-bg);
  border-color: var(--dp-border) !important;
  color: var(--dp-text);
}

.bkg--blue {
  background: var(--dp-accent-strong) !important;
}

.color--white {
  color: #fff;
}

/* --- TABS (permessi utente): barra sottolineata moderna, theme-aware -------- */

.omega__tabsnav.nav-tabs {
  border-bottom: 1px solid var(--dp-border);
  gap: 4px;
}

.omega__tabsnav__link,
.omega__tabsnav .nav-link {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 16px;
  margin-bottom: -1px;
  border: 0 !important;
  border-radius: var(--dp-radius-sm) var(--dp-radius-sm) 0 0;
  color: var(--dp-text);
  background: transparent !important;
  font-weight: 600;
  transition: color var(--dp-transition), background-color var(--dp-transition);
}

.omega__tabsnav__link:hover,
.omega__tabsnav .nav-link:hover {
  color: var(--dp-accent-readable);
  background: rgba(var(--dp-accent-strong-rgb), 0.06) !important;
}

.omega__tabsnav__link.active,
.omega__tabsnav .nav-link.active {
  color: var(--dp-accent-readable) !important;
  background: transparent !important;
}

.omega__tabsnav__link.active::after,
.omega__tabsnav .nav-link.active::after {
  content: "";
  position: absolute;
  left: 8px;
  right: 8px;
  bottom: 0;
  height: 2px;
  background: var(--dp-accent-strong);
  border-radius: 2px;
}

/* ----------------------------------------------------------------------------
 * [2026] Barra footer: Salva / Salva e rimani / Annulla / Elimina / Duplica
 * Stesse pill arrotondate di DatiPro (_ui2026.scss). Serve una regola dedicata
 * perche' btn_save e btn_save_stay sono <input> SENZA classe .btn: il rounding
 * generale piu' sopra non li raggiunge e restavano al border-radius 2px del
 * tema base ($btn-border-radius), cioe' rettangolari.
 * -------------------------------------------------------------------------- */

.footer__datesave__btn .omega__btn__fixed {
  box-sizing: border-box;
  height: 40px;
  min-height: 40px;
  padding: 9px 22px;
  border-radius: var(--dp-radius-pill) !important;
  border-width: 1px;
  font-size: 14px;
  font-weight: 600;
  line-height: 1.2;
  transition: transform var(--dp-transition), box-shadow var(--dp-transition), background-color var(--dp-transition), border-color var(--dp-transition), filter var(--dp-transition);
}

.footer__datesave__btn .omega__btn__fixed:hover {
  transform: translateY(-1px);
  box-shadow: var(--dp-shadow-sm);
  filter: brightness(1.04);
}

.footer__datesave__btn .omega__btn__fixed:active {
  transform: translateY(0);
  box-shadow: none;
}

.footer__datesave__btn .omega__btn__fixed:focus-visible {
  outline: 2px solid var(--dp-accent-strong);
  outline-offset: 2px;
}

/* Tendine di scelta (Select2) a tema: vedi public/js/select2026.js. */

/* ============================================================================
 * LoginPro — UI/UX 2026: tendine di scelta (Select2) a tema.
 *
 * Le tendine native non si possono portare nel tema: la lista aperta la
 * disegna il sistema operativo (angoli vivi, voce evidenziata in azzurro, riga
 * vuota in cima) e il CSS non la raggiunge. public/js/select2026.js le
 * sostituisce con Select2; qui prendono la forma, lo sfondo e l'accento degli
 * altri campi, usando la palette blu istituzionale in entrambi i temi.
 *
 * Stessa impostazione di DatiPro (_select-fluid.scss), con i colori dei campi
 * di LoginPro: il campo chiuso deve essere indistinguibile da un .form-control.
 *
 * Il foglio di Select2 arriva da cdnjs PRIMA di app2026.css (layouts/main), ma
 * dove la specificita' pareggia resta `!important`: se un giorno l'ordine dei
 * fogli cambia, vince comunque il tema.
 * ========================================================================== */

:root {
  --dp-select-field: #ffffff;
  --dp-select-field-border: #DCECF9;
  --dp-select-field-text: #465D82;
  --dp-select-surface: #ffffff;
  --dp-select-border: rgba(70, 93, 130, .18);
  --dp-select-hover: rgba(var(--dp-accent-strong-rgb), .10);
  --dp-select-hover-text: var(--dp-text-title);
  --dp-select-selected: rgba(var(--dp-accent-strong-rgb), .16);
  --dp-select-selected-text: var(--dp-accent-readable);
  --dp-select-shadow: 0 10px 28px rgba(var(--dp-navy-rgb), .12);
}

html[data-theme=dark] {
  --dp-select-field: #162D49;
  --dp-select-field-border: #465D82;
  --dp-select-field-text: #BDCFE7;
  --dp-select-surface: #203D60;
  --dp-select-border: rgba(70, 93, 130, .24);
  --dp-select-hover: rgba(var(--dp-accent-strong-rgb), .14);
  --dp-select-hover-text: #8BB6F1;
  --dp-select-selected: rgba(var(--dp-accent-strong-rgb), .20);
  --dp-select-shadow: 0 10px 28px rgba(0, 0, 0, .38);
}

.select2-container--default .select2-selection--single {
  display: flex;
  align-items: center;
  height: auto;
  min-height: 35px;
  border: 1px solid var(--dp-select-field-border) !important;
  border-radius: var(--dp-radius-sm) !important;
  background-color: var(--dp-select-field) !important;
  outline: none;
  transition: border-color var(--dp-transition), box-shadow var(--dp-transition);
}

.select2-container--default .select2-selection--single .select2-selection__rendered {
  flex: 1 1 auto;
  min-width: 0;
  padding-left: 12px;
  padding-right: 30px;
  color: var(--dp-select-field-text) !important;
  font-size: 14px;
  line-height: 33px;
}

.select2-container--default .select2-selection--single .select2-selection__arrow {
  top: 0;
  right: 6px;
  height: 33px;
}

.select2-container--default .select2-selection--single .select2-selection__arrow b {
  border-color: var(--dp-text) transparent transparent transparent;
  transition: border-color var(--dp-transition);
}

.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b {
  border-color: transparent transparent var(--dp-accent-strong) transparent;
}

.select2-container--default.select2-container--focus .select2-selection--single,
.select2-container--default.select2-container--open .select2-selection--single {
  border-color: var(--dp-accent-strong) !important;
  box-shadow: 0 0 0 3px rgba(var(--dp-accent-strong-rgb), 0.15);
}

.select2-container--open .select2-selection--single,
.select2-container--open .select2-selection--multiple {
  border-radius: var(--dp-radius-sm) !important;
}

.select2-container--default .select2-selection--single .select2-selection__placeholder {
  color: var(--dp-text);
  opacity: 0.6;
}

.select2-container--default .select2-selection--single .select2-selection__clear {
  margin-right: 4px;
  padding: 0 4px;
  border-radius: var(--dp-radius-sm);
  color: var(--dp-text);
  font-weight: 400;
  font-size: 16px;
  opacity: 0.7;
  transition: color var(--dp-transition), opacity var(--dp-transition), background-color var(--dp-transition);
}

.select2-container--default .select2-selection--single .select2-selection__clear:hover {
  color: var(--dp-accent-readable);
  background-color: var(--dp-select-hover);
  opacity: 1;
}

.select2-container--default.select2-container--disabled .select2-selection--single {
  cursor: not-allowed;
  opacity: 0.6;
}

.select2-dropdown.select2-dropdown {
  overflow: hidden;
  border: 1px solid var(--dp-select-border) !important;
  border-radius: var(--dp-radius) !important;
  background-color: var(--dp-select-surface) !important;
  box-shadow: var(--dp-select-shadow);
}

.select2-dropdown--below.select2-dropdown--below {
  margin-top: 4px;
}

.select2-dropdown--above.select2-dropdown--above {
  margin-top: -4px;
}

.select2-search--dropdown.select2-search--dropdown {
  padding: 8px;
}

.select2-search--dropdown .select2-search__field {
  padding: 7px 10px !important;
  border: 1px solid var(--dp-select-field-border) !important;
  border-radius: var(--dp-radius-sm) !important;
  background-color: var(--dp-select-field) !important;
  color: var(--dp-select-field-text) !important;
  font-size: 14px;
  transition: border-color var(--dp-transition), box-shadow var(--dp-transition);
}

.select2-search--dropdown .select2-search__field:focus {
  outline: none;
  border-color: var(--dp-accent-strong) !important;
  box-shadow: 0 0 0 3px rgba(var(--dp-accent-strong-rgb), 0.14);
}

.select2-results {
  padding-bottom: 4px;
}

.select2-results__options {
  max-height: 288px !important;
  padding: 4px 0 !important;
  scrollbar-width: thin;
  scrollbar-color: rgba(var(--dp-accent-strong-rgb), 0.45) transparent;
}

.select2-results__options::-webkit-scrollbar {
  width: 8px;
}

.select2-results__options::-webkit-scrollbar-track {
  background: transparent;
}

.select2-results__options::-webkit-scrollbar-thumb {
  border: 2px solid transparent;
  border-radius: var(--dp-radius-pill);
  background-clip: padding-box;
  background-color: rgba(var(--dp-accent-strong-rgb), 0.45);
}

.select2-results__option {
  margin: 1px 4px;
  padding: 7px 10px !important;
  border-radius: var(--dp-radius-sm);
  color: var(--dp-select-field-text);
  font-size: 14px;
  transition: background-color var(--dp-transition), color var(--dp-transition);
}

.select2-container--default .select2-results__option--highlighted[aria-selected],
.select2-container--classic .select2-results__option--highlighted[aria-selected] {
  background-color: var(--dp-select-hover) !important;
  color: var(--dp-select-hover-text) !important;
}

.select2-results__option[aria-selected=true],
.select2-container--default .select2-results__option--highlighted[aria-selected=true],
.select2-container--classic .select2-results__option--highlighted[aria-selected=true] {
  box-shadow: inset 3px 0 0 var(--dp-accent-strong);
  color: var(--dp-select-selected-text) !important;
  font-weight: 600;
}

.select2-container--default .select2-results__option[aria-selected=true]:not(.select2-results__option--highlighted) {
  background-color: var(--dp-select-selected) !important;
}

.select2-results__message {
  padding: 8px 12px;
  color: var(--dp-text);
  opacity: 0.75;
}


/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvc2Fzcy9hcHAyMDI2LnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL3Nhc3MvX2xvYWRpbmcyMDI2LnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL3Nhc3MvX3NlbGVjdDIwMjYuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFBQTs7Ozs7Ozs7O21GQVdrRjs7QUFBbEY7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtDQURKOztBQUlBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7Q0FISjs7QUN6RUE7a0VENEVpRTs7QUMxRWpFO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtDRDJFSjs7QUN4RUE7RUFDSTtDRDJFSjs7QUN4RUE7RUFDSTtFQUNBO0VBQ0E7Q0QyRUo7O0FDeEVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7Q0QyRUo7O0FDeEVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0NEMkVKOztBQ3hFQTtFQUNJO0VBQ0E7RUFDQTtDRDJFSjs7QUN2RUE7OztFQUdJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0NEMEVKOztBQ3ZFQTs7RUFFSTtDRDBFSjs7QUN2RUE7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RTMxRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7Q0Y4MUVKOztBRTMxRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtDRjgxRUo7O0FFMzFFQTtFQUNJO0VBQ0E7RUFDQTtDRjgxRUo7O0FFMzFFQTtFQUNJO0VBQ0E7Q0Y4MUVKOztBRTMxRUE7RUFDSTtDRjgxRUo7O0FFMTFFQTs7RUFFSTtFQUNBO0NGNjFFSjs7QUV4MUVBOztFQUVJO0NGMjFFSjs7QUV2MUVBO0VBQ0k7RUFDQTtDRjAxRUo7O0FFdDFFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7Q0Z5MUVKOztBRXYxRUk7RUFDSTtFQUNBO0VBQ0E7Q0YwMUVSOztBRXIxRUE7RUFDSTtFQUNBO0NGdzFFSjs7QUVwMUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtDRnUxRUo7O0FFbjFFQTtFQUFtRDtDRnUxRW5EOztBRXQxRUE7RUFBbUQ7Q0YwMUVuRDs7QUV2MUVBO0VBQ0k7Q0YwMUVKOztBRXYxRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtDRjAxRUo7O0FFeDFFSTtFQUNJO0VBQ0E7RUFDQTtDRjIxRVI7O0FFbjFFQTtFQUNJO0NGczFFSjs7QUVuMUVBO0VBQ0k7RUFDQTtFQUdBO0VBQ0E7Q0ZvMUVKOztBRWwxRUk7RUFDSTtDRnExRVI7O0FFbDFFSTtFQUNJO0NGcTFFUjs7QUVsMUVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7Q0ZxMUVSOztBRWoxRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7Q0ZvMUVKOztBRWgxRUE7O0VBRUk7RUFDQTtDRm0xRUo7O0FFNzBFQTs7O0VBR0k7RUFDQTtFQUNBO0NGZzFFSjs7QUU3MEVBO0VBQ0k7Q0ZnMUVKOztBRTUwRUE7RUFDSTtFQUNBO0VBQ0E7Q0YrMEVKIiwiZmlsZSI6Ii9jc3MvYXBwMjAyNi5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogTG9naW5Qcm8g4oCUIFVJL1VYIDIwMjYgKGFyZWEgYXV0ZW50aWNhdGE6IGRhc2hib2FyZCwgZ2VzdGlvbmUgYXBwLCBsaXN0ZSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBQb2xpc2ggbW9kZXJubyBlIHRoZW1lLWF3YXJlIHNvcHJhIG1haW4uY3NzL21haW5fdXNhLmNzcyBlc2lzdGVudGk6IGF1cm9yYSBpblxuICogZGFyaywgc3VwZXJmaWNpIGFycm90b25kYXRlLCBzaWRlYmFyL2hlYWRlci90YWJlbGxlL2JvdHRvbmkgcmlmaW5pdGksIGhvdmVyXG4gKiBmbHVpZGkuIFN0ZXNzbyBsaW5ndWFnZ2lvIGRpIERhdGlQcm8gMjAyNiBlIGRlbGxhIGxvZ2luLCBvcmEgcmljb25kb3R0byBhbGxhXG4gKiBwYWxldHRlIGJsdSBpc3RpdHV6aW9uYWxlIGluIGVudHJhbWJpIGkgdGVtaS4gVG9rZW4gLS1kcC0qIGNvbmRpdmlzaS5cbiAqIENhcmljYXRvIFNPTE8gbmVpIGxheW91dCBhdXRlbnRpY2F0aSAobWFpbiwgbWFpbl9ub2hlYWRlciwgbWFpbl80MDQpLCBtYWlcbiAqIHN1bGxlIHBhZ2luZSBkaSBsb2dpbiAoY2hlIHVzYW5vIGxvZ2luMjAyNi5jc3MpLiBTb3JnZW50ZTogcmVzb3VyY2VzL3Nhc3MvYXBwMjAyNi5zY3NzLlxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuOnJvb3Qge1xuICAgIC0tZHAtYmc6ICAgICAgICAgICAgI0YzRjdGQztcbiAgICAtLWRwLXN1cmZhY2U6ICAgICAgICNmZmZmZmY7XG4gICAgLS1kcC10ZXh0OiAgICAgICAgICAjNDY1RDgyO1xuICAgIC0tZHAtdGV4dC10aXRsZTogICAgIzE2MkQ0OTtcbiAgICAtLWRwLWJvcmRlcjogICAgICAgICNEQ0VDRjk7XG4gICAgLS1kcC1icmFuZDogICAgICAgICAjMDA4NkM5O1xuICAgIC0tZHAtYnJhbmQtcmdiOiAgICAgMCwgMTM0LCAyMDE7XG4gICAgLS1kcC1uYXZ5OiAgICAgICAgICAjMTYyRDQ5O1xuICAgIC0tZHAtbmF2eS1yZ2I6ICAgICAgMjIsIDQ1LCA3MztcbiAgICAtLWRwLWNhcmQ6ICAgICAgICAgICMyMDNENjA7XG4gICAgLS1kcC1jYXJkLXJnYjogICAgICAzMiwgNjEsIDk2O1xuICAgIC0tZHAtc2xhdGU6ICAgICAgICAgIzQ2NUQ4MjtcbiAgICAtLWRwLW11dGVkOiAgICAgICAgICNCRENGRTc7XG4gICAgLS1kcC1oaWdobGlnaHQ6ICAgICAjOEJCNkYxO1xuICAgIC0tZHAtaGlnaGxpZ2h0LXJnYjogMTM5LCAxODIsIDI0MTtcbiAgICAtLWRwLWJ1dHRvbi1zdGFydDogICMzMTVDQzQ7XG4gICAgLS1kcC1idXR0b24tZW5kOiAgICAjMjY3NkJEO1xuICAgIC0tZHAtYWNjZW50LXJlYWRhYmxlOiAjMDA4NkM5O1xuICAgIC0tZHAtYWNjZW50OiAgICAgICAgIzAwODZDOTtcbiAgICAtLWRwLWFjY2VudC1zdHJvbmc6ICMwMDg2Qzk7XG4gICAgLS1kcC1hY2NlbnQtc3Ryb25nLXJnYjogMCwgMTM0LCAyMDE7XG4gICAgLS1kcC1kYW5nZXI6ICAgICAgICAjZjA1MDUwO1xuICAgIC0tZHAtc3VjY2VzczogICAgICAgIzIyYjcwMDtcblxuICAgIC0tZHAtcmFkaXVzLXNtOiAgIDhweDtcbiAgICAtLWRwLXJhZGl1czogICAgICAxMnB4O1xuICAgIC0tZHAtcmFkaXVzLWxnOiAgIDE2cHg7XG4gICAgLS1kcC1yYWRpdXMtcGlsbDogOTk5cHg7XG5cbiAgICAtLWRwLXNoYWRvdy1zbTogMCAxcHggMnB4IHJnYmEoMjAsIDM1LCA2MCwgLjA2KSwgMCAxcHggM3B4IHJnYmEoMjAsIDM1LCA2MCwgLjEwKTtcbiAgICAtLWRwLXNoYWRvdzogICAgMCA4cHggMjRweCByZ2JhKDIwLCAzNSwgNjAsIC4xMCksIDAgM3B4IDEwcHggcmdiYSgyMCwgMzUsIDYwLCAuMDYpO1xuICAgIC0tZHAtc2hhZG93LWxnOiAwIDI0cHggNTZweCByZ2JhKDIwLCAzNSwgNjAsIC4xNik7XG5cbiAgICAtLWRwLXRyYW5zaXRpb246ICAgICAgMTcwbXMgY3ViaWMtYmV6aWVyKC40LCAwLCAuMiwgMSk7XG4gICAgLS1kcC10cmFuc2l0aW9uLXNsb3c6IDI4MG1zIGN1YmljLWJlemllciguNCwgMCwgLjIsIDEpO1xuXG4gICAgLS1kcC1hdXJvcmEtMTogcmdiYSgwLCAxMzQsIDIwMSwgLjE0KTtcbiAgICAtLWRwLWF1cm9yYS0yOiByZ2JhKDEzOSwgMTgyLCAyNDEsIC4xMik7XG4gICAgLS1kcC1hdXJvcmEtMzogcmdiYSgwLCAxMzQsIDIwMSwgLjEwKTtcbiAgICAtLWRwLWF1cm9yYS00OiByZ2JhKDAsIDEzNCwgMjAxLCAuMDgpO1xuICAgIC0tZHAtY2FudmFzOiAgICNGM0Y3RkM7XG59XG5cbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0ge1xuICAgIC0tZHAtYmc6ICAgICAgICAgICAgIzE2MkQ0OTtcbiAgICAtLWRwLXN1cmZhY2U6ICAgICAgICMyMDNENjA7XG4gICAgLS1kcC10ZXh0OiAgICAgICAgICAjQkRDRkU3O1xuICAgIC0tZHAtdGV4dC10aXRsZTogICAgIzhCQjZGMTtcbiAgICAtLWRwLWJvcmRlcjogICAgICAgICM0NjVEODI7XG4gICAgLS1kcC1hY2NlbnQtcmVhZGFibGU6ICM4QkI2RjE7XG4gICAgLS1kcC1hY2NlbnQ6ICAgICAgICAjMDA4NkM5O1xuICAgIC0tZHAtYWNjZW50LXN0cm9uZzogIzAwODZDOTtcbiAgICAtLWRwLWFjY2VudC1zdHJvbmctcmdiOiAwLCAxMzQsIDIwMTtcbiAgICAtLWRwLWRhbmdlcjogICAgICAgICNmMDUwNTA7XG4gICAgLS1kcC1zdWNjZXNzOiAgICAgICAjMjJiNzAwO1xuXG4gICAgLS1kcC1zaGFkb3ctc206IDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIC4zNSksIDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIC4zMCk7XG4gICAgLS1kcC1zaGFkb3c6ICAgIDAgMTRweCAzOHB4IHJnYmEoMCwgMCwgMCwgLjQ1KSwgMCA2cHggMTZweCByZ2JhKDAsIDAsIDAsIC4zMCk7XG4gICAgLS1kcC1zaGFkb3ctbGc6IDAgMzJweCA3MHB4IHJnYmEoMCwgMCwgMCwgLjU1KTtcblxuICAgIC0tZHAtYXVyb3JhLTE6IHJnYmEoMCwgMTM0LCAyMDEsIC41MCk7XG4gICAgLS1kcC1hdXJvcmEtMjogcmdiYSgwLCAxMzQsIDIwMSwgLjQwKTtcbiAgICAtLWRwLWF1cm9yYS0zOiByZ2JhKDAsIDEzNCwgMjAxLCAuMzgpO1xuICAgIC0tZHAtYXVyb3JhLTQ6IHJnYmEoMCwgMTM0LCAyMDEsIC4zNik7XG4gICAgLS1kcC1jYW52YXM6ICAgIzE2MkQ0OTtcbn1cblxuQGltcG9ydCAnbG9hZGluZzIwMjYnO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBDYW52YXMgKyBhdXJvcmEgKHNvbG8gZGFyayA9IGZpcm1hIGRlbCB0ZW1hIHNjdXJvKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0geyBiYWNrZ3JvdW5kOiB2YXIoLS1kcC1jYW52YXMpOyB9XG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIGJvZHkub21lZ2FfX2JvZHkgeyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OyB9XG5cbmJvZHkub21lZ2FfX2JvZHksXG4uYy13cmFwcGVyLFxuLmMtYm9keSxcbi5jLW1haW4sXG4ub21lZ2FfX21haW4sXG4ub21lZ2FfX2NvbnRhaW5lcmJvZHksXG4ub21lZ2FfX2NvbnRhaW5lcmZsdWlkLFxuI3VpLXZpZXcge1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tZHAtdHJhbnNpdGlvbi1zbG93KSwgY29sb3IgdmFyKC0tZHAtdHJhbnNpdGlvbik7XG59XG5cbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLmMtd3JhcHBlcixcbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLmMtYm9keSxcbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLmMtbWFpbixcbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLm9tZWdhX19tYWluLFxuaHRtbFtkYXRhLXRoZW1lPVwiZGFya1wiXSAub21lZ2FfX2NvbnRhaW5lcmJvZHksXG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5vbWVnYV9fY29udGFpbmVyZmx1aWQsXG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdICN1aS12aWV3IHtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xufVxuXG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5vbWVnYV9fY29udGFpbmVyZmx1aWQge1xuICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggLSAxMTZweCk7XG59XG5cbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gYm9keS5vbWVnYV9fYm9keTo6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBpbnNldDogLTI1JTtcbiAgICB6LWluZGV4OiAtMTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOlxuICAgICAgICByYWRpYWwtZ3JhZGllbnQoNTglIDU1JSBhdCAxNCUgMTYlLCB2YXIoLS1kcC1hdXJvcmEtMSksIHRyYW5zcGFyZW50IDY2JSksXG4gICAgICAgIHJhZGlhbC1ncmFkaWVudCg1NSUgNTIlIGF0IDg4JSAyMCUsIHZhcigtLWRwLWF1cm9yYS0yKSwgdHJhbnNwYXJlbnQgNjYlKSxcbiAgICAgICAgcmFkaWFsLWdyYWRpZW50KDYwJSA1OCUgYXQgNTIlIDEwNCUsIHZhcigtLWRwLWF1cm9yYS0zKSwgdHJhbnNwYXJlbnQgNzAlKSxcbiAgICAgICAgcmFkaWFsLWdyYWRpZW50KDUwJSA0OCUgYXQgODAlIDgwJSwgdmFyKC0tZHAtYXVyb3JhLTQpLCB0cmFuc3BhcmVudCA3MCUpO1xuICAgIGFuaW1hdGlvbjogZHBBcHBBdXJvcmEgMjRzIGVhc2UtaW4tb3V0IGluZmluaXRlIGFsdGVybmF0ZTtcbiAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xufVxuQGtleWZyYW1lcyBkcEFwcEF1cm9yYSB7XG4gICAgMCUgICB7IHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTYlLCAtNSUsIDApIHNjYWxlKDEuMDYpIHJvdGF0ZSgtMmRlZyk7IH1cbiAgICA1MCUgIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCg1JSwgNCUsIDApICAgc2NhbGUoMS4xNikgcm90YXRlKDRkZWcpOyB9XG4gICAgMTAwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoOCUsIDclLCAwKSAgIHNjYWxlKDEuMjApIHJvdGF0ZSg4ZGVnKTsgfVxufVxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgICBodG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIGJvZHkub21lZ2FfX2JvZHk6OmJlZm9yZSB7IGFuaW1hdGlvbjogbm9uZTsgfVxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBIZWFkZXJcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4ub21lZ2FfX2hlYWRlciB7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tZHAtc2hhZG93LXNtKTtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLWRwLXRyYW5zaXRpb24pLCBib3JkZXItY29sb3IgdmFyKC0tZHAtdHJhbnNpdGlvbik7XG59XG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5vbWVnYV9faGVhZGVyIHtcbiAgICBiYWNrZ3JvdW5kOlxuICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCByZ2JhKHZhcigtLWRwLWJyYW5kLXJnYiksIC4xMCksIHJnYmEodmFyKC0tZHAtYnJhbmQtcmdiKSwgLjA0KSksXG4gICAgICAgIHZhcigtLWRwLWNhcmQpICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEodmFyKC0tZHAtYnJhbmQtcmdiKSwgLjI0KSAhaW1wb3J0YW50O1xufVxuXG4vKiBQcm9maWxvIHV0ZW50ZSDigJQgZHJvcGRvd24gbW9kZXJubywgZmx1aWRvIGUgdGhlbWUtYXdhcmUgKi9cbi5vbWVnYV9fc2V0dGluZ3NsaXN0IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMTBweDtcbiAgICBtaW4taGVpZ2h0OiA3MHB4O1xufVxuLm9tZWdhX19zZXR0aW5nc2l0ZW0ubmF2LWl0ZW0uZHJvcGRvd24ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuLm9tZWdhX19zZXR0aW5nc2l0ZW0tLXByb2ZpbGUub21lZ2FfX3NldHRpbmdzaXRlbS0tcHJvZmlsZSB7XG4gICAgbWluLWhlaWdodDogNzBweDtcbn1cbi5vbWVnYV9fc2V0dGluZ3NsaW5rLm9tZWdhX19zZXR0aW5nc2xpbmsge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZ2FwOiA4cHg7XG4gICAgbWluLWhlaWdodDogMzhweDtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgcGFkZGluZzogN3B4IDEycHg7XG4gICAgY29sb3I6IHZhcigtLWRwLXRleHQtdGl0bGUpICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tZHAtcmFkaXVzLXBpbGwpO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLWRwLXRyYW5zaXRpb24pLCBib3JkZXItY29sb3IgdmFyKC0tZHAtdHJhbnNpdGlvbiksXG4gICAgICAgICAgICAgICAgY29sb3IgdmFyKC0tZHAtdHJhbnNpdGlvbiksIGJveC1zaGFkb3cgdmFyKC0tZHAtdHJhbnNpdGlvbiksIHRyYW5zZm9ybSB2YXIoLS1kcC10cmFuc2l0aW9uKTtcbn1cbi5vbWVnYV9fc2V0dGluZ3NsaW5rLm9tZWdhX19zZXR0aW5nc2xpbms6aG92ZXIsXG4ub21lZ2FfX3NldHRpbmdzbGluay5vbWVnYV9fc2V0dGluZ3NsaW5rOmZvY3VzLFxuLm9tZWdhX19zZXR0aW5nc2l0ZW0uc2hvdyA+IC5vbWVnYV9fc2V0dGluZ3NsaW5rLm9tZWdhX19zZXR0aW5nc2xpbmsge1xuICAgIGNvbG9yOiB2YXIoLS1kcC1hY2NlbnQtcmVhZGFibGUpICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1kcC1hY2NlbnQtc3Ryb25nLXJnYiksIC4wOCk7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWRwLWFjY2VudC1zdHJvbmctcmdiKSwgLjIwKTtcbiAgICBib3gtc2hhZG93OiAwIDhweCAyMHB4IHJnYmEodmFyKC0tZHAtYWNjZW50LXN0cm9uZy1yZ2IpLCAuMTQpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbn1cbi5vbWVnYV9fc2V0dGluZ3NsaW5rLS1wcm9maWxlLm9tZWdhX19zZXR0aW5nc2xpbmstLXByb2ZpbGUge1xuICAgIGRpc3BsYXk6IGdyaWQgIWltcG9ydGFudDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDI2cHggbWlubWF4KDAsIGF1dG8pO1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byBhdXRvO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgY29sdW1uLWdhcDogN3B4O1xuICAgIHJvdy1nYXA6IDJweDtcbiAgICBtaW4taGVpZ2h0OiA0OHB4O1xuICAgIHBhZGRpbmc6IDdweCAxMnB4IDdweCAxMHB4O1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg1cHgpO1xufVxuLm9tZWdhX19zZXR0aW5nc2xpbmstLXByb2ZpbGUub21lZ2FfX3NldHRpbmdzbGluay0tcHJvZmlsZTpob3Zlcixcbi5vbWVnYV9fc2V0dGluZ3NsaW5rLS1wcm9maWxlLm9tZWdhX19zZXR0aW5nc2xpbmstLXByb2ZpbGU6Zm9jdXMsXG4ub21lZ2FfX3NldHRpbmdzaXRlbS5zaG93ID4gLm9tZWdhX19zZXR0aW5nc2xpbmstLXByb2ZpbGUub21lZ2FfX3NldHRpbmdzbGluay0tcHJvZmlsZSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDRweCk7XG59XG4ub21lZ2FfX3NldHRpbmdzaWNvbi5vbWVnYV9fc2V0dGluZ3NpY29uIHtcbiAgICBjb2xvcjogY3VycmVudENvbG9yICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiAyMXB4O1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMCAwIDAgcmdiYSh2YXIoLS1kcC1hY2NlbnQtc3Ryb25nLXJnYiksIDApKTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tZHAtdHJhbnNpdGlvbiksIGZpbHRlciB2YXIoLS1kcC10cmFuc2l0aW9uKTtcbn1cbi5vbWVnYV9fc2V0dGluZ3NsaW5rLS1wcm9maWxlIC5vbWVnYV9fc2V0dGluZ3NpY29uLm9tZWdhX19zZXR0aW5nc2ljb24ge1xuICAgIGdyaWQtY29sdW1uOiAxO1xuICAgIGdyaWQtcm93OiAxIC8gc3BhbiAyO1xuICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LXNlbGY6IGNlbnRlcjtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMXB4KTtcbn1cbi5vbWVnYV9fc2V0dGluZ3NsaW5rOmhvdmVyIC5vbWVnYV9fc2V0dGluZ3NpY29uLFxuLm9tZWdhX19zZXR0aW5nc2l0ZW0uc2hvdyA+IC5vbWVnYV9fc2V0dGluZ3NsaW5rIC5vbWVnYV9fc2V0dGluZ3NpY29uIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCkgc2NhbGUoMS4wNSk7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAgOHB4IHJnYmEodmFyKC0tZHAtYWNjZW50LXN0cm9uZy1yZ2IpLCAuMzIpKTtcbn1cbi5vbWVnYV9fc2V0dGluZ3NsaW5rLS1wcm9maWxlOmhvdmVyIC5vbWVnYV9fc2V0dGluZ3NpY29uLFxuLm9tZWdhX19zZXR0aW5nc2l0ZW0uc2hvdyA+IC5vbWVnYV9fc2V0dGluZ3NsaW5rLS1wcm9maWxlIC5vbWVnYV9fc2V0dGluZ3NpY29uIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMS4wNSk7XG59XG4ub21lZ2FfX2xvZ2luX19uYW1lX191c2Vycy5vbWVnYV9fbG9naW5fX25hbWVfX3VzZXJzIHtcbiAgICBncmlkLWNvbHVtbjogMjtcbiAgICBncmlkLXJvdzogMTtcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgIG1pbi13aWR0aDogMDtcbiAgICBtYXgtd2lkdGg6IDEyMHB4O1xuICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6IGN1cnJlbnRDb2xvciAhaW1wb3J0YW50O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuMTI7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuLm9tZWdhX19zZXR0aW5nX193aG9pcy5vbWVnYV9fc2V0dGluZ19fd2hvaXMge1xuICAgIHBvc2l0aW9uOiBzdGF0aWMgIWltcG9ydGFudDtcbiAgICBncmlkLWNvbHVtbjogMjtcbiAgICBncmlkLXJvdzogMjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogYXV0bztcbiAgICBtaW4td2lkdGg6IDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuMDg7XG4gICAgY29sb3I6IHZhcigtLWRwLWRhbmdlcikgIWltcG9ydGFudDtcbiAgICBmb250LXNpemU6IDExcHg7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG59XG5cbi5vbWVnYV9fc2V0dGluZ3Nkcm9wZG93Lm9tZWdhX19zZXR0aW5nc2Ryb3Bkb3cge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IGNhbGMoMTAwJSArIDhweCkgIWltcG9ydGFudDtcbiAgICByaWdodDogMCAhaW1wb3J0YW50O1xuICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICB3aWR0aDogbWF4LWNvbnRlbnQ7XG4gICAgbWluLXdpZHRoOiAyMzBweDtcbiAgICBtYXgtd2lkdGg6IG1pbigzMDBweCwgY2FsYygxMDB2dyAtIDI4cHgpKTtcbiAgICBwYWRkaW5nOiA3cHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBjb2xvcjogdmFyKC0tZHAtdGV4dCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1kcC1hY2NlbnQtc3Ryb25nLXJnYiksIC4xOCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tZHAtcmFkaXVzKSAhaW1wb3J0YW50O1xuICAgIGJhY2tncm91bmQ6XG4gICAgICAgIGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjk2KSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAuOTApKSxcbiAgICAgICAgdmFyKC0tZHAtc3VyZmFjZSkgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiAwIDE4cHggNDJweCByZ2JhKDIwLCAzNSwgNjAsIC4xNiksIDAgNHB4IDEycHggcmdiYSgyMCwgMzUsIDYwLCAuMDgpO1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IDkwJSB0b3A7XG4gICAgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7XG4gICAgYW5pbWF0aW9uOiBkcFByb2ZpbGVNZW51SW4gLjE4cyBjdWJpYy1iZXppZXIoLjIsIC44LCAuMiwgMSkgYm90aDtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTZweCkgc2F0dXJhdGUoMS4wNik7XG59XG4ub21lZ2FfX3NldHRpbmdzZHJvcGRvdy5vbWVnYV9fc2V0dGluZ3Nkcm9wZG93OjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGluc2V0OiAwIDAgYXV0bztcbiAgICBoZWlnaHQ6IDNweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHZhcigtLWRwLWJ1dHRvbi1zdGFydCksIHZhcigtLWRwLWJ1dHRvbi1lbmQpKTtcbiAgICBvcGFjaXR5OiAuOTI7XG59XG4ub21lZ2FfX3NldHRpbmdzZHJvcGRvd19fbGluay5vbWVnYV9fc2V0dGluZ3Nkcm9wZG93X19saW5rIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgbWluLWhlaWdodDogNDJweDtcbiAgICBtYXJnaW46IDJweCAwO1xuICAgIHBhZGRpbmc6IDEwcHggNDJweCAxMHB4IDEzcHg7XG4gICAgY29sb3I6IHZhcigtLWRwLXRleHQtdGl0bGUpICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tZHAtcmFkaXVzLXNtKTtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI1O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS1kcC10cmFuc2l0aW9uKSwgYm9yZGVyLWNvbG9yIHZhcigtLWRwLXRyYW5zaXRpb24pLFxuICAgICAgICAgICAgICAgIGNvbG9yIHZhcigtLWRwLXRyYW5zaXRpb24pLCB0cmFuc2Zvcm0gdmFyKC0tZHAtdHJhbnNpdGlvbiksIGJveC1zaGFkb3cgdmFyKC0tZHAtdHJhbnNpdGlvbik7XG59XG4ub21lZ2FfX3NldHRpbmdzZHJvcGRvd19fbGluay5vbWVnYV9fc2V0dGluZ3Nkcm9wZG93X19saW5rOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGluc2V0OiA2cHggYXV0byA2cHggMDtcbiAgICB3aWR0aDogM3B4O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWRwLXJhZGl1cy1waWxsKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kcC1hY2NlbnQtc3Ryb25nKTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgwKTtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS1kcC10cmFuc2l0aW9uKSwgb3BhY2l0eSB2YXIoLS1kcC10cmFuc2l0aW9uKTtcbn1cbi5vbWVnYV9fc2V0dGluZ3Nkcm9wZG93X19saW5rLm9tZWdhX19zZXR0aW5nc2Ryb3Bkb3dfX2xpbms6aG92ZXIsXG4ub21lZ2FfX3NldHRpbmdzZHJvcGRvd19fbGluay5vbWVnYV9fc2V0dGluZ3Nkcm9wZG93X19saW5rOmZvY3VzLFxuLm9tZWdhX19zZXR0aW5nc2Ryb3Bkb3dfX2xpbmsub21lZ2FfX3NldHRpbmdzZHJvcGRvd19fbGluay5hY3RpdmUge1xuICAgIGNvbG9yOiB2YXIoLS1kcC1hY2NlbnQtcmVhZGFibGUpICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1kcC1hY2NlbnQtc3Ryb25nLXJnYiksIC4xMCkgIWltcG9ydGFudDtcbiAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tZHAtYWNjZW50LXN0cm9uZy1yZ2IpLCAuMTgpO1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCByZ2JhKHZhcigtLWRwLWFjY2VudC1zdHJvbmctcmdiKSwgLjA0KTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMnB4KTtcbn1cbi5vbWVnYV9fc2V0dGluZ3Nkcm9wZG93X19saW5rOmhvdmVyOjpiZWZvcmUsXG4ub21lZ2FfX3NldHRpbmdzZHJvcGRvd19fbGluazpmb2N1czo6YmVmb3JlLFxuLm9tZWdhX19zZXR0aW5nc2Ryb3Bkb3dfX2xpbmsuYWN0aXZlOjpiZWZvcmUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG59XG4ub21lZ2FfX3NldHRpbmdzZHJvcGRvd19fdGV4dCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luLXJpZ2h0OiAyMnB4O1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuLm9tZWdhX19zZXR0aW5nc2Ryb3Bkb3dfX2ljb24ub21lZ2FfX3NldHRpbmdzZHJvcGRvd19faWNvbiB7XG4gICAgdG9wOiA1MCU7XG4gICAgcmlnaHQ6IDEzcHg7XG4gICAgY29sb3I6IGN1cnJlbnRDb2xvciAhaW1wb3J0YW50O1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLWRwLXRyYW5zaXRpb24pLCBmaWx0ZXIgdmFyKC0tZHAtdHJhbnNpdGlvbik7XG59XG4ub21lZ2FfX3NldHRpbmdzZHJvcGRvd19fbGluazpob3ZlciAub21lZ2FfX3NldHRpbmdzZHJvcGRvd19faWNvbixcbi5vbWVnYV9fc2V0dGluZ3Nkcm9wZG93X19saW5rOmZvY3VzIC5vbWVnYV9fc2V0dGluZ3Nkcm9wZG93X19pY29uIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgc2NhbGUoMS4wOCk7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAgN3B4IHJnYmEodmFyKC0tZHAtYWNjZW50LXN0cm9uZy1yZ2IpLCAuMzUpKTtcbn1cblxuaHRtbFtkYXRhLXRoZW1lPVwiZGFya1wiXSAub21lZ2FfX3NldHRpbmdzbGluay5vbWVnYV9fc2V0dGluZ3NsaW5rIHtcbiAgICBjb2xvcjogcmdiYSgyMzQsIDI0MCwgMjQ3LCAuODYpICFpbXBvcnRhbnQ7XG59XG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5vbWVnYV9fc2V0dGluZ3NsaW5rLm9tZWdhX19zZXR0aW5nc2xpbms6aG92ZXIsXG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5vbWVnYV9fc2V0dGluZ3NsaW5rLm9tZWdhX19zZXR0aW5nc2xpbms6Zm9jdXMsXG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5vbWVnYV9fc2V0dGluZ3NpdGVtLnNob3cgPiAub21lZ2FfX3NldHRpbmdzbGluay5vbWVnYV9fc2V0dGluZ3NsaW5rIHtcbiAgICBjb2xvcjogdmFyKC0tZHAtYWNjZW50LXJlYWRhYmxlKSAhaW1wb3J0YW50O1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMTM0LCAyMDEsIC4xMCk7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDEzNCwgMjAxLCAuMjQpO1xuICAgIGJveC1zaGFkb3c6IDAgMTBweCAyNHB4IHJnYmEoMCwgMTM0LCAyMDEsIC4xMCk7XG59XG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5vbWVnYV9fc2V0dGluZ3Nkcm9wZG93Lm9tZWdhX19zZXR0aW5nc2Ryb3Bkb3cge1xuICAgIGJvcmRlci1jb2xvcjogcmdiYSgwLCAxMzQsIDIwMSwgLjI1KTtcbiAgICBiYWNrZ3JvdW5kOlxuICAgICAgICByYWRpYWwtZ3JhZGllbnQoOTAlIDEyMCUgYXQgMTAlIDAlLCByZ2JhKDAsIDEzNCwgMjAxLCAuMTgpLCB0cmFuc3BhcmVudCA1NCUpLFxuICAgICAgICByYWRpYWwtZ3JhZGllbnQoOTAlIDEyMCUgYXQgMTAwJSAxMDAlLCByZ2JhKDAsIDEzNCwgMjAxLCAuMTQpLCB0cmFuc3BhcmVudCA1OCUpLFxuICAgICAgICByZ2JhKDMyLCA2MSwgOTYsIC44OCkgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiAwIDIycHggNDhweCByZ2JhKDAsIDAsIDAsIC4zNiksIGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAuMDUpO1xufVxuaHRtbFtkYXRhLXRoZW1lPVwiZGFya1wiXSAub21lZ2FfX3NldHRpbmdzZHJvcGRvdy5vbWVnYV9fc2V0dGluZ3Nkcm9wZG93OjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgaW5zZXQ6IC00NSU7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgYmFja2dyb3VuZDpcbiAgICAgICAgcmFkaWFsLWdyYWRpZW50KDM2JSA0MiUgYXQgMTglIDIyJSwgcmdiYSgwLCAxMzQsIDIwMSwgLjI2KSwgdHJhbnNwYXJlbnQgNzAlKSxcbiAgICAgICAgcmFkaWFsLWdyYWRpZW50KDM0JSA0MCUgYXQgODQlIDc4JSwgcmdiYSgwLCAxMzQsIDIwMSwgLjIwKSwgdHJhbnNwYXJlbnQgNzIlKTtcbiAgICBmaWx0ZXI6IGJsdXIoMTBweCk7XG4gICAgb3BhY2l0eTogLjc4O1xuICAgIGFuaW1hdGlvbjogZHBQcm9maWxlTWVudUF1cm9yYSAxOHMgZWFzZS1pbi1vdXQgaW5maW5pdGUgYWx0ZXJuYXRlO1xufVxuaHRtbFtkYXRhLXRoZW1lPVwiZGFya1wiXSAub21lZ2FfX3NldHRpbmdzZHJvcGRvd19fbGluay5vbWVnYV9fc2V0dGluZ3Nkcm9wZG93X19saW5rIHtcbiAgICBjb2xvcjogcmdiYSgyMzQsIDI0MCwgMjQ3LCAuODgpICFpbXBvcnRhbnQ7XG59XG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5vbWVnYV9fc2V0dGluZ3Nkcm9wZG93X19saW5rLm9tZWdhX19zZXR0aW5nc2Ryb3Bkb3dfX2xpbms6aG92ZXIsXG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5vbWVnYV9fc2V0dGluZ3Nkcm9wZG93X19saW5rLm9tZWdhX19zZXR0aW5nc2Ryb3Bkb3dfX2xpbms6Zm9jdXMsXG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5vbWVnYV9fc2V0dGluZ3Nkcm9wZG93X19saW5rLm9tZWdhX19zZXR0aW5nc2Ryb3Bkb3dfX2xpbmsuYWN0aXZlIHtcbiAgICBjb2xvcjogdmFyKC0tZHAtYWNjZW50LXJlYWRhYmxlKSAhaW1wb3J0YW50O1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMTM0LCAyMDEsIC4xMikgIWltcG9ydGFudDtcbiAgICBib3JkZXItY29sb3I6IHJnYmEoMCwgMTM0LCAyMDEsIC4yMCk7XG59XG5cbkBrZXlmcmFtZXMgZHBQcm9maWxlTWVudUluIHtcbiAgICBmcm9tIHsgb3BhY2l0eTogMDsgY2xpcC1wYXRoOiBpbnNldCgwIDAgMTAwJSAwIHJvdW5kIHZhcigtLWRwLXJhZGl1cykpOyB9XG4gICAgdG8gICB7IG9wYWNpdHk6IDE7IGNsaXAtcGF0aDogaW5zZXQoMCAwIDAgMCByb3VuZCB2YXIoLS1kcC1yYWRpdXMpKTsgfVxufVxuQGtleWZyYW1lcyBkcFByb2ZpbGVNZW51QXVyb3JhIHtcbiAgICBmcm9tIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNSUsIC00JSwgMCkgc2NhbGUoMS4wNCkgcm90YXRlKC00ZGVnKTsgfVxuICAgIHRvICAgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDUlLCA2JSwgMCkgc2NhbGUoMS4xNCkgcm90YXRlKDVkZWcpOyB9XG59XG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAgIC5vbWVnYV9fc2V0dGluZ3Nkcm9wZG93Lm9tZWdhX19zZXR0aW5nc2Ryb3Bkb3cgeyBhbmltYXRpb246IG5vbmU7IH1cbiAgICBodG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5vbWVnYV9fc2V0dGluZ3Nkcm9wZG93Lm9tZWdhX19zZXR0aW5nc2Ryb3Bkb3c6OmFmdGVyIHsgYW5pbWF0aW9uOiBub25lOyB9XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFRvZ2dsZSB0ZW1hIHNvbGUvbHVuYSDigJQgYW5pbWF0byBlIGZsdWlkbyAoc3Rlc3NvIENTUyBkZWxsYSBwaWF0dGFmb3JtYSBEYXRpUHJvKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi5vbWVnYV9fY2hhbmdldGhlbWUub21lZ2FfX2NoYW5nZXRoZW1lIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDtcbiAgICBmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAycHg7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiAwO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cbi5vbWVnYV9fY2hhbmdldGhlbWVfX2xpbmsub21lZ2FfX2NoYW5nZXRoZW1lX19saW5rIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDM0cHg7XG4gICAgbWluLXdpZHRoOiAzNHB4O1xuICAgIGhlaWdodDogMzRweDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBib3JkZXI6IDA7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tZHAtcmFkaXVzLXBpbGwpO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgY29sb3I6IHZhcigtLWRwLXRleHQpO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIG9wYWNpdHk6IC43NTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tZHAtdHJhbnNpdGlvbiksIG9wYWNpdHkgdmFyKC0tZHAtdHJhbnNpdGlvbiksXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtIHZhcigtLWRwLXRyYW5zaXRpb24pLCBmaWx0ZXIgdmFyKC0tZHAtdHJhbnNpdGlvbik7XG59XG4ub21lZ2FfX2NoYW5nZXRoZW1lX19saW5rLm9tZWdhX19jaGFuZ2V0aGVtZV9fbGluayAub21lZ2FfX2NoYW5nZXRoZW1lX19pY29uIHtcbiAgICBtYXJnaW46IDA7XG4gICAgLyogTmVzc3VubyBzY29zdGFtZW50bzogaWwgbGluayBlJyBnaWEnIGNlbnRyYXRvIGluIGZsZXgsIGNvc2knIHNvbGUgZSBsdW5hXG4gICAgICogc3Rhbm5vIHN1bGxhIHN0ZXNzYSBsaW5lYSBkZWxsZSBhbHRyZSB2b2NpIGRlbGxhIGJhcnJhLiAqL1xuICAgIHBhZGRpbmc6IDA7XG4gICAgZm9udC1zaXplOiAyNXB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjNzIGVhc2UsIGZpbHRlciAuM3MgZWFzZTtcbn1cbi5vbWVnYV9fY2hhbmdldGhlbWVfX2xpbmsub21lZ2FfX2NoYW5nZXRoZW1lX19saW5rOmhvdmVyIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbn1cbi8qIElsIHNvbGUgZScgdW4gZGlzZWdubyBub3N0cm8gKGNlcmNoaW8gKyByYWdnaSBkcml0dGksIHNvbG8gY29udG9ybm8gY29tZSBsYVxuICogbHVuYSk6IGlsIGdsaWZvIGRpIEZvbnQgQXdlc29tZSBzZW1icmF2YSB1biBpbmdyYW5hZ2dpby4gRXNzZW5kbyB1biBzdmcgbGFcbiAqIG1pc3VyYSBzaSBkYScgY29uIHdpZHRoL2hlaWdodCwgbm9uIGNvbiBmb250LXNpemUuICovXG4ub21lZ2FfX2NoYW5nZXRoZW1lX19saW5rLm9tZWdhX19jaGFuZ2V0aGVtZV9fbGluayAub21lZ2FfX2NoYW5nZXRoZW1lX19pY29uLS1zdW4geyB3aWR0aDogMjRweDsgaGVpZ2h0OiAyNHB4OyBwYWRkaW5nOiAwOyBvdmVyZmxvdzogdmlzaWJsZTsgfVxuXG4vKiBTT0xFIChsaWdodCk6IGlsIGdsaWZvIGRlbCBzb2xlIMOoIG90dGljYW1lbnRlIHBpw7kgcGljY29sbyBkZWxsYSBsdW5hIOKGkiAyNnB4IHBlclxuICogYmlsYW5jaWFybG8gKGNvbWUgaW4gRGF0aVBybykuIEZpeCBcImljb25hIHNvbGUgcGnDuSBwaWNjb2xhIG5lbCBsaWdodFwiLiAqL1xuLm9tZWdhX19jaGFuZ2V0aGVtZV9fbGluay5vbWVnYV9fY2hhbmdldGhlbWVfX2xpbmtbaHJlZio9XCJsaWdodFwiXSAub21lZ2FfX2NoYW5nZXRoZW1lX19pY29uIHsgZm9udC1zaXplOiAyNnB4OyB9XG4vKiBTT0xFIChsaWdodCk6IGljb25hIGNvbG9yYXRhICsgYmFnbGlvcmUsIHJvdGF6aW9uZSBmbHVpZGEgKi9cbi5vbWVnYV9fY2hhbmdldGhlbWVfX2xpbmsub21lZ2FfX2NoYW5nZXRoZW1lX19saW5rW2hyZWYqPVwibGlnaHRcIl06aG92ZXIgeyBjb2xvcjogdmFyKC0tZHAtYWNjZW50LXJlYWRhYmxlKTsgfVxuLm9tZWdhX19jaGFuZ2V0aGVtZV9fbGluay5vbWVnYV9fY2hhbmdldGhlbWVfX2xpbmtbaHJlZio9XCJsaWdodFwiXTpob3ZlciAub21lZ2FfX2NoYW5nZXRoZW1lX19pY29uIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNWRlZykgc2NhbGUoMS4wOCk7XG59XG4ub21lZ2FfX2NoYW5nZXRoZW1lX19saW5rLm9tZWdhX19jaGFuZ2V0aGVtZV9fbGlua1tocmVmKj1cImxpZ2h0XCJdLmFjdGl2ZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBjb2xvcjogdmFyKC0tZHAtYWNjZW50LXJlYWRhYmxlKTtcbn1cbi5vbWVnYV9fY2hhbmdldGhlbWVfX2xpbmsub21lZ2FfX2NoYW5nZXRoZW1lX19saW5rW2hyZWYqPVwibGlnaHRcIl0uYWN0aXZlIC5vbWVnYV9fY2hhbmdldGhlbWVfX2ljb24ge1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMCAwIDdweCByZ2JhKDAsIDEzNCwgMjAxLCAuNykpO1xufVxuLyogTFVOQSAoZGFyayk6IGljb25hIGNlbGVzdGUgY29uIGJhZ2xpb3JlLiBMYSBmYWxjZSByaWVtcGllIHBpdScgc3BhemlvIGRlbCBzb2xlXG4gKiBhIHBhcml0YScgZGkgY29ycG86IGR1ZSBwdW50aSBpbiBtZW5vIGUgbGUgZHVlIGljb25lIHNpIGxlZ2dvbm8gdWd1YWxpLiAqL1xuLm9tZWdhX19jaGFuZ2V0aGVtZV9fbGluay5vbWVnYV9fY2hhbmdldGhlbWVfX2xpbmtbaHJlZio9XCJkYXJrXCJdIC5vbWVnYV9fY2hhbmdldGhlbWVfX2ljb24geyBmb250LXNpemU6IDIxcHg7IH1cbi5vbWVnYV9fY2hhbmdldGhlbWVfX2xpbmsub21lZ2FfX2NoYW5nZXRoZW1lX19saW5rW2hyZWYqPVwiZGFya1wiXTpob3ZlciB7IGNvbG9yOiB2YXIoLS1kcC1oaWdobGlnaHQpOyB9XG4ub21lZ2FfX2NoYW5nZXRoZW1lX19saW5rLm9tZWdhX19jaGFuZ2V0aGVtZV9fbGlua1tocmVmKj1cImRhcmtcIl06aG92ZXIgLm9tZWdhX19jaGFuZ2V0aGVtZV9faWNvbiB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoLTE4ZGVnKSBzY2FsZSgxLjA4KTtcbn1cbi5vbWVnYV9fY2hhbmdldGhlbWVfX2xpbmsub21lZ2FfX2NoYW5nZXRoZW1lX19saW5rW2hyZWYqPVwiZGFya1wiXS5hY3RpdmUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgY29sb3I6IHZhcigtLWRwLWhpZ2hsaWdodCk7XG59XG4ub21lZ2FfX2NoYW5nZXRoZW1lX19saW5rLm9tZWdhX19jaGFuZ2V0aGVtZV9fbGlua1tocmVmKj1cImRhcmtcIl0uYWN0aXZlIC5vbWVnYV9fY2hhbmdldGhlbWVfX2ljb24ge1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMCAwIDZweCByZ2JhKDE1MCwgMjA1LCAyNTUsIC45KSk7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJyYW5kL2xvZ28gc2lkZWJhciDigJQgYXVyb3JhIGFuaW1hdGEgZGlldHJvIGFsIGxvZ28gKGNvbWUgbGEgcGlhdHRhZm9ybWEpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLm9tZWdhX19zaWRlYmFyIC5vbWVnYV9fYnJhbmQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIC8qIFsyMDI2XSBBbHRlenphID0gaGVhZGVyICg3MHB4KSBjb3PDrCBpbCBib3JkbyBpbmZlcmlvcmUgZGVsIGxvZ28gw6ggYWxsaW5lYXRvXG4gICAgICogY29uIGxhIHJpZ2EgZGVsbCdoZWFkZXIgKHByaW1hIDgycHgg4oaSIGRpc2FsbGluZWF0bykuICovXG4gICAgaGVpZ2h0OiA3MHB4O1xuICAgIG1pbi1oZWlnaHQ6IDcwcHg7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHBhZGRpbmc6IDEycHggMCAxMXB4O1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIC4xMCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tZHAtbmF2eSkgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjA5KTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS1kcC10cmFuc2l0aW9uKTtcbiAgICBpc29sYXRpb246IGlzb2xhdGU7XG59XG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5vbWVnYV9fc2lkZWJhciAub21lZ2FfX2JyYW5kIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kcC1uYXZ5KSAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG59XG4vKiBBdXJvcmEgYmx1IGRpZXRybyBhbCBsb2dvIChHUFUpLCBtYW50ZW5lbmRvIG1vdmltZW50byBlIGxlZ2dpYmlsaXRhJy4gKi9cbi5vbWVnYV9fc2lkZWJhciAub21lZ2FfX2JyYW5kOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGluc2V0OiAtNDUlO1xuICAgIHotaW5kZXg6IDA7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgYmFja2dyb3VuZDpcbiAgICAgICAgcmFkaWFsLWdyYWRpZW50KDM4JSA1MiUgYXQgMjAlIDI4JSwgcmdiYSh2YXIoLS1kcC1icmFuZC1yZ2IpLCAuNzIpLCB0cmFuc3BhcmVudCA3MCUpLFxuICAgICAgICByYWRpYWwtZ3JhZGllbnQoNDIlIDQ4JSBhdCA4MiUgMjIlLCByZ2JhKHZhcigtLWRwLWhpZ2hsaWdodC1yZ2IpLCAuNDgpLCB0cmFuc3BhcmVudCA3MiUpLFxuICAgICAgICByYWRpYWwtZ3JhZGllbnQoNDglIDU4JSBhdCA2OCUgODglLCByZ2JhKDQ5LCA5MiwgMTk2LCAuNDQpLCB0cmFuc3BhcmVudCA3MiUpLFxuICAgICAgICByYWRpYWwtZ3JhZGllbnQoNDQlIDU0JSBhdCA4JSA4NiUsIHJnYmEoMzgsIDExOCwgMTg5LCAuNDIpLCB0cmFuc3BhcmVudCA3MCUpO1xuICAgIGZpbHRlcjogYmx1cig4cHgpIHNhdHVyYXRlKDEuMTgpO1xuICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm0sIGZpbHRlcjtcbiAgICBhbmltYXRpb246IGRwTG9nb0F1cm9yYSAxOHMgZWFzZS1pbi1vdXQgaW5maW5pdGUgYWx0ZXJuYXRlLFxuICAgICAgICAgICAgICAgZHBMb2dvSHVlIDI0cyBsaW5lYXIgaW5maW5pdGU7XG59XG4vKiBOZWwgdGVtYSBzY3VybyBsZSBzdGVzc2UgdGludGUgc29ubyBwaXUnIGNvbnRlbnV0ZS4gKi9cbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLm9tZWdhX19zaWRlYmFyIC5vbWVnYV9fYnJhbmQ6OmJlZm9yZSB7XG4gICAgYmFja2dyb3VuZDpcbiAgICAgICAgcmFkaWFsLWdyYWRpZW50KDM4JSA1MiUgYXQgMjAlIDI4JSwgcmdiYSh2YXIoLS1kcC1icmFuZC1yZ2IpLCAuNDgpLCB0cmFuc3BhcmVudCA3MCUpLFxuICAgICAgICByYWRpYWwtZ3JhZGllbnQoNDIlIDQ4JSBhdCA4MiUgMjIlLCByZ2JhKHZhcigtLWRwLWhpZ2hsaWdodC1yZ2IpLCAuMzQpLCB0cmFuc3BhcmVudCA3MiUpLFxuICAgICAgICByYWRpYWwtZ3JhZGllbnQoNDglIDU4JSBhdCA2OCUgODglLCByZ2JhKDQ5LCA5MiwgMTk2LCAuMzYpLCB0cmFuc3BhcmVudCA3MiUpLFxuICAgICAgICByYWRpYWwtZ3JhZGllbnQoNDQlIDU0JSBhdCA4JSA4NiUsIHJnYmEoMzgsIDExOCwgMTg5LCAuMzQpLCB0cmFuc3BhcmVudCA3MCUpO1xuICAgIGZpbHRlcjogYmx1cig4cHgpIHNhdHVyYXRlKDEuMTIpO1xuICAgIGFuaW1hdGlvbjogZHBMb2dvQXVyb3JhIDE5cyBlYXNlLWluLW91dCBpbmZpbml0ZSBhbHRlcm5hdGU7XG59XG5Aa2V5ZnJhbWVzIGRwTG9nb0h1ZSB7XG4gICAgMCUgICB7IGZpbHRlcjogYmx1cig4cHgpIHNhdHVyYXRlKDEuMTgpIGh1ZS1yb3RhdGUoLTZkZWcpOyB9XG4gICAgNTAlICB7IGZpbHRlcjogYmx1cig4cHgpIHNhdHVyYXRlKDEuMjYpIGh1ZS1yb3RhdGUoMjJkZWcpOyB9XG4gICAgMTAwJSB7IGZpbHRlcjogYmx1cig4cHgpIHNhdHVyYXRlKDEuMTgpIGh1ZS1yb3RhdGUoLTZkZWcpOyB9XG59XG4vKiBTaGVlbiBkaWFnb25hbGUgY2hlIGF0dHJhdmVyc2EgbGVudGFtZW50ZSBpbCBibG9jY28gKi9cbi5vbWVnYV9fc2lkZWJhciAub21lZ2FfX2JyYW5kOjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgaW5zZXQ6IDA7XG4gICAgei1pbmRleDogMTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTE1ZGVnLCB0cmFuc3BhcmVudCAzOCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjEwKSA1MCUsIHRyYW5zcGFyZW50IDYyJSk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMjAlKTtcbiAgICBhbmltYXRpb246IGRwTG9nb1NoZWVuIDdzIGVhc2UtaW4tb3V0IDEuMnMgaW5maW5pdGU7XG59XG4vKiBMb2dvIGUgcGF5b2ZmIHNvcHJhIGFnbGkgc3RyYXRpIGFuaW1hdGkgKi9cbi5vbWVnYV9fc2lkZWJhciAub21lZ2FfX2JyYW5kIC5vbWVnYV9fbG9nbyxcbi5vbWVnYV9fc2lkZWJhciAub21lZ2FfX2JyYW5kIC5vbWVnYV9fbG9nb19fdXNhLFxuLm9tZWdhX19zaWRlYmFyIC5vbWVnYV9fYnJhbmQgLm9tZWdhX19sb2dvX19wYXlvZmYge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAyO1xufVxuLm9tZWdhX19zaWRlYmFyIC5vbWVnYV9fYnJhbmQgLm9tZWdhX19sb2dvX19wYXlvZmYge1xuICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC44NikgIWltcG9ydGFudDtcbiAgICB0ZXh0LXNoYWRvdzogMCAxcHggOHB4IHJnYmEoMCwgMCwgMCwgLjIyKTtcbn1cbkBrZXlmcmFtZXMgZHBMb2dvQXVyb3JhIHtcbiAgICAwJSAgIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNiUsIC00JSwgMCkgc2NhbGUoMS4wNikgcm90YXRlKDBkZWcpOyB9XG4gICAgNTAlICB7IHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoNSUsIDQlLCAwKSAgIHNjYWxlKDEuMTYpIHJvdGF0ZSg3ZGVnKTsgfVxuICAgIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0zJSwgNiUsIDApICBzY2FsZSgxLjA5KSByb3RhdGUoLTZkZWcpOyB9XG59XG5Aa2V5ZnJhbWVzIGRwTG9nb1NoZWVuIHtcbiAgICAwJSAgIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMjAlKTsgfVxuICAgIDE4JSAgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTIwJSk7IH1cbiAgICAxMDAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEyMCUpOyB9XG59XG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAgIC5vbWVnYV9fc2lkZWJhciAub21lZ2FfX2JyYW5kOjpiZWZvcmUgeyBhbmltYXRpb246IG5vbmU7IH1cbiAgICAub21lZ2FfX3NpZGViYXIgLm9tZWdhX19icmFuZDo6YWZ0ZXIgeyBkaXNwbGF5OiBub25lOyB9XG59XG4ub21lZ2FfX3NpZGViYXIgLm9tZWdhX19icmFuZDpob3Zlcixcbi5vbWVnYV9fc2lkZWJhciAub21lZ2FfX2JyYW5kLmFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tZHAtY2FyZCkgIWltcG9ydGFudDtcbn1cbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLm9tZWdhX19zaWRlYmFyIC5vbWVnYV9fYnJhbmQ6aG92ZXIsXG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5vbWVnYV9fc2lkZWJhciAub21lZ2FfX2JyYW5kLmFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tZHAtY2FyZCkgIWltcG9ydGFudDtcbn1cbi5vbWVnYV9fc2lkZWJhciAub21lZ2FfX2JyYW5kOmhvdmVyOjpiZWZvcmUsXG4ub21lZ2FfX3NpZGViYXIgLm9tZWdhX19icmFuZC5hY3RpdmU6OmJlZm9yZSB7XG4gICAgZmlsdGVyOiBibHVyKDhweCkgc2F0dXJhdGUoMS4zKSBicmlnaHRuZXNzKDEuMTIpO1xuICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMTRzO1xufVxuLm9tZWdhX19zaWRlYmFyIC5vbWVnYV9fYnJhbmQgLm9tZWdhX19sb2dvLS1ibGFjayB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfVxuLm9tZWdhX19zaWRlYmFyIC5vbWVnYV9fYnJhbmQgLm9tZWdhX19sb2dvLS13aGl0ZSB7IGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2lkZWJhciDigJQgYWN0aXZlL2hvdmVyIG1vZGVybmkgYSB0ZW1hXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLm9tZWdhX19zaWRlYmFyLm9tZWdhX19zaWRlYmFyIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWRwLW5hdnktcmdiKSwgLjc4KSAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjEwKTtcbiAgICBib3gtc2hhZG93OiAxMHB4IDAgMzBweCByZ2JhKDksIDQwLCA2OCwgLjIwKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGlzb2xhdGlvbjogaXNvbGF0ZTtcbiAgICAvKiBOQjogbmllbnRlIGBwb3NpdGlvbmAgcXVpIChsYSBzaWRlYmFyIMOoIGdpw6AgcG9zaXppb25hdGEgZGFsIHRlbWEpOiBpbXBvc3RhcmxhXG4gICAgICogbGEgdG9nbGllcmViYmUgZGFsIGZpeGVkIGUgc3Bvc3RlcmViYmUgaWwgY29udGVudXRvLiAqL1xuICAgIHRyYW5zaXRpb246IHdpZHRoIHZhcigtLWRwLXRyYW5zaXRpb24tc2xvdyksIHRyYW5zZm9ybSB2YXIoLS1kcC10cmFuc2l0aW9uLXNsb3cpLCBib3gtc2hhZG93IHZhcigtLWRwLXRyYW5zaXRpb24tc2xvdyk7XG59XG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5vbWVnYV9fc2lkZWJhci5vbWVnYV9fc2lkZWJhciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1kcC1uYXZ5LXJnYiksIC43OCkgIWltcG9ydGFudDtcbiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIC4wOCk7XG4gICAgYm94LXNoYWRvdzogMTBweCAwIDMwcHggcmdiYSgyMiwgNDUsIDczLCAuMTgpO1xufVxuLyogU290dG8gaSA5OTJweCBpbCBtZW51IHNpIGFwcmUgc29wcmEgbGEgcGFnaW5hOiBjb24gaWwgNzglIHNpIGxlZ2dlcmViYmUgaWxcbiAqIGNvbnRlbnV0byBhdHRyYXZlcnNvIGxlIHZvY2kuIExhIHRyYXNwYXJlbnphIHJlc3RhIGRhIDk5MnB4IGluIHN1LiAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7XG4gICAgLm9tZWdhX19zaWRlYmFyLm9tZWdhX19zaWRlYmFyLFxuICAgIGh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLm9tZWdhX19zaWRlYmFyLm9tZWdhX19zaWRlYmFyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZHAtbmF2eSkgIWltcG9ydGFudDtcbiAgICB9XG59XG4vKiBBdXJvcmEgbW9yYmlkYSBibHUgZGlldHJvIGEgbG9nbyBlIG1lbnUuICovXG4ub21lZ2FfX3NpZGViYXIub21lZ2FfX3NpZGViYXI6OmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgaW5zZXQ6IC0yMCU7XG4gICAgei1pbmRleDogMDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOlxuICAgICAgICByYWRpYWwtZ3JhZGllbnQoNDAlIDMwJSBhdCAxNiUgMTAlLCByZ2JhKHZhcigtLWRwLWJyYW5kLXJnYiksIC4yNCksIHRyYW5zcGFyZW50IDcwJSksXG4gICAgICAgIHJhZGlhbC1ncmFkaWVudCg0MiUgMzIlIGF0IDg4JSAyNCUsIHJnYmEodmFyKC0tZHAtaGlnaGxpZ2h0LXJnYiksIC4yMCksIHRyYW5zcGFyZW50IDcyJSksXG4gICAgICAgIHJhZGlhbC1ncmFkaWVudCg0NiUgMzYlIGF0IDI4JSA2MiUsIHJnYmEoNDksIDkyLCAxOTYsIC4xOCksIHRyYW5zcGFyZW50IDc0JSksXG4gICAgICAgIHJhZGlhbC1ncmFkaWVudCg0NCUgMzQlIGF0IDg0JSA4NiUsIHJnYmEoMzgsIDExOCwgMTg5LCAuMTgpLCB0cmFuc3BhcmVudCA3MiUpO1xuICAgIGZpbHRlcjogYmx1cigzOHB4KSBzYXR1cmF0ZSgxLjEpO1xuICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XG4gICAgYW5pbWF0aW9uOiBkcFNpZGViYXJBdXJvcmEgMzBzIGVhc2UtaW4tb3V0IGluZmluaXRlIGFsdGVybmF0ZTtcbn1cbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLm9tZWdhX19zaWRlYmFyLm9tZWdhX19zaWRlYmFyOjpiZWZvcmUgeyBkaXNwbGF5OiBub25lOyB9XG4ub21lZ2FfX3NpZGViYXIub21lZ2FfX3NpZGViYXIgPiAqIHsgcG9zaXRpb246IHJlbGF0aXZlOyB6LWluZGV4OiAxOyB9XG5Aa2V5ZnJhbWVzIGRwU2lkZWJhckF1cm9yYSB7XG4gICAgMCUgICB7IHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTQlLCAtMyUsIDApIHNjYWxlKDEuMDUpIHJvdGF0ZSgwZGVnKTsgfVxuICAgIDUwJSAgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDQlLCAzJSwgMCkgc2NhbGUoMS4xMikgcm90YXRlKDRkZWcpOyB9XG4gICAgMTAwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTIlLCA1JSwgMCkgc2NhbGUoMS4wOCkgcm90YXRlKC0zZGVnKTsgfVxufVxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgICAub21lZ2FfX3NpZGViYXIub21lZ2FfX3NpZGViYXI6OmJlZm9yZSB7IGFuaW1hdGlvbjogbm9uZTsgfVxufVxuLm9tZWdhX19zaWRlYmFyX19uYXYub21lZ2FfX3NpZGViYXJfX25hdixcbi5vbWVnYV9fc2lkZWJhciAuYy1zaWRlYmFyLW5hdiB7XG4gICAgcGFkZGluZzogMTBweCA4cHggMThweDtcbn1cbi5vbWVnYV9fc2lkZWJhcl9fbmF2bGluay5vbWVnYV9fc2lkZWJhcl9fbmF2bGluayxcbi5vbWVnYV9fc2lkZWJhciAuYy1zaWRlYmFyLW5hdi1saW5rIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIG1pbi1oZWlnaHQ6IDQ0cHg7XG4gICAgZ2FwOiAxMXB4O1xuICAgIG1hcmdpbjogMnB4IDA7XG4gICAgcGFkZGluZzogMTBweCAxMnB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjcyKTtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tZHAtdHJhbnNpdGlvbiksXG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yIHZhcigtLWRwLXRyYW5zaXRpb24pLFxuICAgICAgICAgICAgICAgIGNvbG9yIHZhcigtLWRwLXRyYW5zaXRpb24pLFxuICAgICAgICAgICAgICAgIGJveC1zaGFkb3cgdmFyKC0tZHAtdHJhbnNpdGlvbiksXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtIHZhcigtLWRwLXRyYW5zaXRpb24pO1xufVxuLm9tZWdhX19zaWRlYmFyX19uYXZsaW5rLm9tZWdhX19zaWRlYmFyX19uYXZsaW5rOmhvdmVyLFxuLm9tZWdhX19zaWRlYmFyX19uYXZsaW5rLm9tZWdhX19zaWRlYmFyX19uYXZsaW5rOmZvY3VzLFxuLm9tZWdhX19zaWRlYmFyIC5jLXNpZGViYXItbmF2LWxpbms6aG92ZXIsXG4ub21lZ2FfX3NpZGViYXIgLmMtc2lkZWJhci1uYXYtbGluazpmb2N1cyB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAuMDgpO1xuICAgIGJvcmRlci1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuMDgpO1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDE4cHggcmdiYSgwLCAwLCAwLCAuMTYpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgycHgpO1xufVxuLm9tZWdhX19zaWRlYmFyX19uYXZsaW5rLm9tZWdhX19zaWRlYmFyX19uYXZsaW5rOmZvY3VzLXZpc2libGUge1xuICAgIG91dGxpbmU6IDJweCBzb2xpZCByZ2JhKHZhcigtLWRwLWFjY2VudC1zdHJvbmctcmdiKSwgLjg1KTtcbiAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xufVxuLm9tZWdhX19zaWRlYmFyX19hY3RpdmUub21lZ2FfX3NpZGViYXJfX2FjdGl2ZSxcbi5vbWVnYV9fc2lkZWJhcl9fbmF2bGluay5vbWVnYV9fc2lkZWJhcl9fYWN0aXZlLFxuLm9tZWdhX19zaWRlYmFyIC5jLXNpZGViYXItbmF2LWxpbmsuYy1hY3RpdmUsXG4ub21lZ2FfX3NpZGViYXJfX25hdmRyb3Bkb3duLm9wZW4gPiAub21lZ2FfX3NpZGViYXJfX2Ryb3Bkb3duX190b2dnbGUsXG4ub21lZ2FfX3NpZGViYXJfX25hdmRyb3Bkb3duLmMtc2hvdyA+IC5vbWVnYV9fc2lkZWJhcl9fZHJvcGRvd25fX3RvZ2dsZSB7XG4gICAgY29sb3I6ICNmZmYgIWltcG9ydGFudDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDAsIDEzNCwgMjAxLCAuMjQpLCByZ2JhKHZhcigtLWRwLWFjY2VudC1zdHJvbmctcmdiKSwgLjIyKSkgIWltcG9ydGFudDtcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjE0KTtcbiAgICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjE0KSAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDNweCAwIDAgdmFyKC0tZHAtYWNjZW50LXN0cm9uZyksIDAgMTBweCAyMnB4IHJnYmEodmFyKC0tZHAtYWNjZW50LXN0cm9uZy1yZ2IpLCAuMTYpO1xufVxuLm9tZWdhX19zaWRlYmFyX19uYXZpY29uIHtcbiAgICB3aWR0aDogMzBweDtcbiAgICBtaW4td2lkdGg6IDMwcHg7XG4gICAgaGVpZ2h0OiAzMHB4O1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgbWFyZ2luOiAwO1xuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjcyKTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC4wNyk7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS1kcC10cmFuc2l0aW9uKSwgY29sb3IgdmFyKC0tZHAtdHJhbnNpdGlvbiksIHRyYW5zZm9ybSB2YXIoLS1kcC10cmFuc2l0aW9uKTtcbn1cbi5vbWVnYV9fc2lkZWJhcl9fbmF2bGluazpob3ZlciAub21lZ2FfX3NpZGViYXJfX25hdmljb24sXG4ub21lZ2FfX3NpZGViYXJfX25hdmxpbms6Zm9jdXMgLm9tZWdhX19zaWRlYmFyX19uYXZpY29uLFxuLm9tZWdhX19zaWRlYmFyX19hY3RpdmUgLm9tZWdhX19zaWRlYmFyX19uYXZpY29uLFxuLm9tZWdhX19zaWRlYmFyX19uYXZkcm9wZG93bi5vcGVuID4gLm9tZWdhX19zaWRlYmFyX19kcm9wZG93bl9fdG9nZ2xlIC5vbWVnYV9fc2lkZWJhcl9fbmF2aWNvbixcbi5vbWVnYV9fc2lkZWJhcl9fbmF2ZHJvcGRvd24uYy1zaG93ID4gLm9tZWdhX19zaWRlYmFyX19kcm9wZG93bl9fdG9nZ2xlIC5vbWVnYV9fc2lkZWJhcl9fbmF2aWNvbiB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1kcC1hY2NlbnQtc3Ryb25nLXJnYiksIC4yKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG59XG4ub21lZ2FfX3NpZGViYXJfX25hdnRleHQsXG4ub21lZ2FfX3NpZGViYXJfX25hdnRleHRfX2Ryb3Bkb3duIHtcbiAgICBtaW4td2lkdGg6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjU7XG4gICAgb3ZlcmZsb3ctd3JhcDogYW55d2hlcmU7XG59XG4ub21lZ2FfX3NpZGViYXJfX25hdnRleHQgeyBmb250LXdlaWdodDogNjAwOyB9XG4ub21lZ2FfX3NpZGViYXJfX25hdnRleHRfX2Ryb3Bkb3duIHtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBmb250LXNpemU6IDEzcHg7XG59XG4ub21lZ2FfX3NpZGViYXJfX25hdmljb24tLWR4IHtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBmbG9hdDogbm9uZTtcbiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuNDIpO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLWRwLXRyYW5zaXRpb24pLCB0cmFuc2Zvcm0gdmFyKC0tZHAtdHJhbnNpdGlvbik7XG59XG4ub21lZ2FfX3NpZGViYXJfX25hdmxpbms6aG92ZXIgLm9tZWdhX19zaWRlYmFyX19uYXZpY29uLS1keCxcbi5vbWVnYV9fc2lkZWJhcl9fYWN0aXZlIC5vbWVnYV9fc2lkZWJhcl9fbmF2aWNvbi0tZHgge1xuICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC44Nik7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDJweCk7XG59XG4ub21lZ2FfX25hdl9fZHJvcGRvd25pdGVtcyB7XG4gICAgbWFyZ2luOiA0cHggMCA4cHggMTVweDtcbiAgICBwYWRkaW5nOiA0cHggMCA0cHggMTBweDtcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjA5KTtcbn1cbmh0bWw6bm90KFtkaXI9XCJydGxcIl0pIC5vbWVnYV9fbmF2X19kcm9wZG93bml0ZW1zIC5vbWVnYV9fc2lkZWJhcl9fbmF2bGluayB7XG4gICAgbWluLWhlaWdodDogMzhweDtcbiAgICBwYWRkaW5nOiA4cHggMTBweDtcbn1cbi5vbWVnYV9fbmF2X19kcm9wZG93bml0ZW1zIC5vbWVnYV9fc2lkZWJhcl9fbmF2bGluazpob3Zlcixcbi5vbWVnYV9fbmF2X19kcm9wZG93bml0ZW1zIC5vbWVnYV9fc2lkZWJhcl9fbmF2bGluazpmb2N1cyB7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFRpdG9sbyBwYWdpbmEgKyBicmVhZGNydW1iXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLm9tZWdhX19jb250ZW50X19oZWFkZXIgeyBhbmltYXRpb246IGRwRmFkZVVwIC41cyBiYWNrd2FyZHM7IH1cbi5vbWVnYV9fY29udGVudF9fdGl0bGUsXG4udGl0bGVfX2gxIHtcbiAgICBjb2xvcjogdmFyKC0tZHAtdGV4dC10aXRsZSkgIWltcG9ydGFudDtcbiAgICBmb250LXdlaWdodDogNzAwO1xufVxuLm9tZWdhX19jb250ZW50X19idXR0b24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgZ2FwOiAxMnB4O1xuICAgIGFuaW1hdGlvbjogZHBGYWRlVXAgLjU1cyAuMDRzIGJhY2t3YXJkcztcbn1cbi5vbWVnYV9fYnJlYWRjcnVtYixcbi5icmVhZGNydW1iIHtcbiAgICBwYWRkaW5nOiAxMHB4IDEycHg7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAuNTgpICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZHAtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1kcC1yYWRpdXMpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLWRwLXNoYWRvdy1zbSk7XG59XG4ub21lZ2FfX2JyZWFkY3J1bWIgYSxcbi5icmVhZGNydW1iIGEgeyBjb2xvcjogdmFyKC0tZHAtYWNjZW50LXJlYWRhYmxlKTsgZm9udC13ZWlnaHQ6IDYwMDsgfVxuLm9tZWdhX19icmVhZGNydW1iIC5icmVhZGNydW1iLWl0ZW0uYWN0aXZlLFxuLmJyZWFkY3J1bWIgLmJyZWFkY3J1bWItaXRlbS5hY3RpdmUgeyBjb2xvcjogdmFyKC0tZHAtYWNjZW50LXJlYWRhYmxlKTsgZm9udC13ZWlnaHQ6IDYwMDsgfVxuaHRtbFtkYXRhLXRoZW1lPVwiZGFya1wiXSAub21lZ2FfX2JyZWFkY3J1bWIsXG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5icmVhZGNydW1iIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDMyLCA2MSwgOTYsIC42MCkgIWltcG9ydGFudDtcbiAgICBib3JkZXItY29sb3I6IHJnYmEoMCwgMTM0LCAyMDEsIC4yMik7XG4gICAgYm94LXNoYWRvdzogMCAxMHB4IDI2cHggcmdiYSgwLCAwLCAwLCAuMTgpO1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBDYXJkIGFwcCBkYXNoYm9hcmQgKC5vbWVnYV9fYmxvY2tkYXNoYm9hcmQpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLm9tZWdhX19ibG9ja2Rhc2hib2FyZCB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZHAtYm9yZGVyKSAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWRwLXJhZGl1cy1sZykgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1kcC1zaGFkb3ctc20pO1xuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS1kcC10cmFuc2l0aW9uKSwgYm94LXNoYWRvdyB2YXIoLS1kcC10cmFuc2l0aW9uKSxcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3IgdmFyKC0tZHAtdHJhbnNpdGlvbik7XG4gICAgYW5pbWF0aW9uOiBkcEZhZGVVcCAuNXMgYmFja3dhcmRzO1xufVxuLm9tZWdhX19ibG9ja2Rhc2hib2FyZDo6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBpbnNldDogMDtcbiAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0OyAvKiBzZWd1ZSBnbGkgYW5nb2xpIGFycm90b25kYXRpIGRlbGxhIGNhcmQgKi9cbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAvKiBiYXJyYSBhY2NlbnRvIHNvbG8gbmVpIHByaW1pIDNweCBpbiBhbHRvOiByaXRhZ2xpYXRhIGRhZ2xpIGFuZ29saSB0b25kaSAqL1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdmFyKC0tZHAtYnV0dG9uLXN0YXJ0KSwgdmFyKC0tZHAtYnV0dG9uLWVuZCkpIHRvcCAvIDEwMCUgM3B4IG5vLXJlcGVhdDtcbiAgICBvcGFjaXR5OiAuODU7XG59XG4ub21lZ2FfX2Jsb2NrZGFzaGJvYXJkOmhvdmVyIHtcbiAgICB6LWluZGV4OiAyMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTRweCk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tZHAtc2hhZG93KTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWRwLWFjY2VudC1zdHJvbmcpICFpbXBvcnRhbnQ7XG59XG4ub21lZ2FfX2Jsb2NrZGFzaGJvYXJkOmZvY3VzLXdpdGhpbiB7XG4gICAgei1pbmRleDogMzA7XG59XG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5vbWVnYV9fYmxvY2tkYXNoYm9hcmQge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6XG4gICAgICAgIHJhZGlhbC1ncmFkaWVudCgxMjAlIDEyMCUgYXQgMCUgMCUsIHJnYmEoMCwgMTM0LCAyMDEsIC4xMiksIHRyYW5zcGFyZW50IDQ2JSksXG4gICAgICAgIHJhZGlhbC1ncmFkaWVudCgxMjAlIDEyMCUgYXQgMTAwJSAxMDAlLCByZ2JhKDAsIDEzNCwgMjAxLCAuMTApLCB0cmFuc3BhcmVudCA1MiUpO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG59XG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5vbWVnYV9fYmxvY2tkYXNoYm9hcmQ6aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogcmdiYSgwLCAxMzQsIDIwMSwgLjU1KSAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IDAgMTZweCAzNHB4IHJnYmEoMCwgMCwgMCwgLjM0KSwgMCAwIDAgMXB4IHJnYmEoMCwgMTM0LCAyMDEsIC4yNCk7XG59XG4ub21lZ2FfX2Jsb2NrZGFzaGJvYXJkX19pY29uIHsgY29sb3I6IHZhcigtLWRwLWFjY2VudC1yZWFkYWJsZSk7IH1cbi5vbWVnYV9fYmxvY2tkYXNoYm9hcmRfX2ljb25fX2ltZyxcbi5vbWVnYV9fYmxvY2tkYXNoYm9hcmRfX2hlYWRlciAuZmEtNHgge1xuICAgIGNvbG9yOiB2YXIoLS1kcC1hY2NlbnQtcmVhZGFibGUpO1xuICAgIG9wYWNpdHk6IC45O1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS1kcC10cmFuc2l0aW9uKTtcbn1cbi5vbWVnYV9fYmxvY2tkYXNoYm9hcmQ6aG92ZXIgLm9tZWdhX19ibG9ja2Rhc2hib2FyZF9faWNvbl9faW1nLFxuLm9tZWdhX19ibG9ja2Rhc2hib2FyZDpob3ZlciAub21lZ2FfX2Jsb2NrZGFzaGJvYXJkX19oZWFkZXIgLmZhLTR4IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCkgc2NhbGUoMS4wNCk7XG59XG4ub21lZ2FfX2Jsb2NrZGFzaGJvYXJkX190aXRsZSB7IGNvbG9yOiB2YXIoLS1kcC10ZXh0LXRpdGxlKTsgZm9udC13ZWlnaHQ6IDcwMDsgfVxuLm9tZWdhX19ibG9ja2Rhc2hib2FyZF9fdG9rZW4ge1xuICAgIGZvbnQtZmFtaWx5OiB1aS1tb25vc3BhY2UsIFNGTW9uby1SZWd1bGFyLCBNZW5sbywgbW9ub3NwYWNlO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBjb2xvcjogdmFyKC0tZHAtdGV4dCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tZHAtYmcpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWRwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tZHAtcmFkaXVzLXNtKTtcbiAgICBwYWRkaW5nOiA2cHggMTBweDtcbn1cbi5vbWVnYV9fYmxvY2tkYXNoYm9hcmRfX3NldHRpbmcge1xuICAgIHRvcDogMTRweDtcbiAgICByaWdodDogMTRweDtcbiAgICB6LWluZGV4OiA0O1xufVxuLm9tZWdhX19ibG9ja2Rhc2hib2FyZF9fc2V0dGluZ19fZHJvcGRvd24ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5vbWVnYV9fYmxvY2tkYXNoYm9hcmRfX3NldHRpbmdfX2Ryb3Bkb3duLnNob3cge1xuICAgIHotaW5kZXg6IDQwO1xufVxuLm9tZWdhX19ibG9ja2Rhc2hib2FyZF9fc2V0dGluZyA+IGEsXG4ub21lZ2FfX2Jsb2NrZGFzaGJvYXJkX19zZXR0aW5nX19kcm9wZG93bl9fYnRuIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAzMnB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICBjb2xvcjogdmFyKC0tZHAtdGV4dCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tZHAtcmFkaXVzLXBpbGwpO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjY2KTtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1kcC10cmFuc2l0aW9uKSwgYmFja2dyb3VuZC1jb2xvciB2YXIoLS1kcC10cmFuc2l0aW9uKSxcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3IgdmFyKC0tZHAtdHJhbnNpdGlvbiksIGJveC1zaGFkb3cgdmFyKC0tZHAtdHJhbnNpdGlvbiksXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtIHZhcigtLWRwLXRyYW5zaXRpb24pO1xufVxuLm9tZWdhX19ibG9ja2Rhc2hib2FyZF9fc2V0dGluZyA+IGE6aG92ZXIsXG4ub21lZ2FfX2Jsb2NrZGFzaGJvYXJkX19zZXR0aW5nX19kcm9wZG93bi5zaG93IC5vbWVnYV9fYmxvY2tkYXNoYm9hcmRfX3NldHRpbmdfX2Ryb3Bkb3duX19idG4sXG4ub21lZ2FfX2Jsb2NrZGFzaGJvYXJkX19zZXR0aW5nX19kcm9wZG93bl9fYnRuOmhvdmVyLFxuLm9tZWdhX19ibG9ja2Rhc2hib2FyZF9fc2V0dGluZ19fZHJvcGRvd25fX2J0bjpmb2N1cyB7XG4gICAgY29sb3I6IHZhcigtLWRwLWFjY2VudC1yZWFkYWJsZSk7XG4gICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1kcC1hY2NlbnQtc3Ryb25nLXJnYiksIC4xMCk7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWRwLWFjY2VudC1zdHJvbmctcmdiKSwgLjIwKTtcbiAgICBib3gtc2hhZG93OiAwIDhweCAyMHB4IHJnYmEodmFyKC0tZHAtYWNjZW50LXN0cm9uZy1yZ2IpLCAuMTQpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbn1cbi5vbWVnYV9fYmxvY2tkYXNoYm9hcmRfX3NldHRpbmdfX2Ryb3Bkb3duIC5kcm9wZG93bi1tZW51IHtcbiAgICB0b3A6IGNhbGMoMTAwJSArIDdweCkgIWltcG9ydGFudDtcbiAgICByaWdodDogMCAhaW1wb3J0YW50O1xuICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDtcbiAgICBtaW4td2lkdGg6IDE3MnB4O1xuICAgIG1heC13aWR0aDogbWluKDE5MHB4LCBjYWxjKDEwMHZ3IC0gMzJweCkpO1xuICAgIHBhZGRpbmc6IDdweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGNvbG9yOiB2YXIoLS1kcC10ZXh0KTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWRwLWFjY2VudC1zdHJvbmctcmdiKSwgLjE4KSAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWRwLXJhZGl1cykgIWltcG9ydGFudDtcbiAgICBiYWNrZ3JvdW5kOlxuICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIC45NyksIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjkyKSksXG4gICAgICAgIHZhcigtLWRwLXN1cmZhY2UpICFpbXBvcnRhbnQ7XG4gICAgYm94LXNoYWRvdzogMCAxOHB4IDQycHggcmdiYSgyMCwgMzUsIDYwLCAuMTYpLCAwIDRweCAxMnB4IHJnYmEoMjAsIDM1LCA2MCwgLjA4KTtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiA5MCUgdG9wO1xuICAgIGFuaW1hdGlvbjogZHBDYXJkTWVudUluIDE0MG1zIGN1YmljLWJlemllciguMiwgLjgsIC4yLCAxKSBib3RoO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxNnB4KSBzYXR1cmF0ZSgxLjA2KTtcbn1cbi5vbWVnYV9fYmxvY2tkYXNoYm9hcmRfX3NldHRpbmdfX2Ryb3Bkb3duIC5kcm9wZG93bi1tZW51OjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGluc2V0OiAwIDAgYXV0bztcbiAgICBoZWlnaHQ6IDNweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHZhcigtLWRwLWJ1dHRvbi1zdGFydCksIHZhcigtLWRwLWJ1dHRvbi1lbmQpKTtcbn1cbi5vbWVnYV9fYmxvY2tkYXNoYm9hcmRfX3NldHRpbmdfX2Ryb3Bkb3duIC5kcm9wZG93bi1pdGVtIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgbWluLWhlaWdodDogMzRweDtcbiAgICBtYXJnaW46IDJweCAwO1xuICAgIHBhZGRpbmc6IDdweCAxMHB4O1xuICAgIGNvbG9yOiB2YXIoLS1kcC10ZXh0LXRpdGxlKSAhaW1wb3J0YW50O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWRwLXJhZGl1cy1zbSk7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICBsaW5lLWhlaWdodDogMS4yMjtcbiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLWRwLXRyYW5zaXRpb24pLCBib3JkZXItY29sb3IgdmFyKC0tZHAtdHJhbnNpdGlvbiksXG4gICAgICAgICAgICAgICAgY29sb3IgdmFyKC0tZHAtdHJhbnNpdGlvbiksIHRyYW5zZm9ybSB2YXIoLS1kcC10cmFuc2l0aW9uKTtcbn1cbi5vbWVnYV9fYmxvY2tkYXNoYm9hcmRfX3NldHRpbmdfX2Ryb3Bkb3duIC5kcm9wZG93bi1pdGVtOmhvdmVyLFxuLm9tZWdhX19ibG9ja2Rhc2hib2FyZF9fc2V0dGluZ19fZHJvcGRvd24gLmRyb3Bkb3duLWl0ZW06Zm9jdXMge1xuICAgIGNvbG9yOiB2YXIoLS1kcC1hY2NlbnQtcmVhZGFibGUpICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1kcC1hY2NlbnQtc3Ryb25nLXJnYiksIC4xMCkgIWltcG9ydGFudDtcbiAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tZHAtYWNjZW50LXN0cm9uZy1yZ2IpLCAuMTgpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgycHgpO1xufVxuaHRtbFtkYXRhLXRoZW1lPVwiZGFya1wiXSAub21lZ2FfX2Jsb2NrZGFzaGJvYXJkX19zZXR0aW5nID4gYSxcbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLm9tZWdhX19ibG9ja2Rhc2hib2FyZF9fc2V0dGluZ19fZHJvcGRvd25fX2J0biB7XG4gICAgY29sb3I6IHJnYmEoMjM0LCAyNDAsIDI0NywgLjgyKTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDIyLCA0NSwgNzMsIC41Nik7XG59XG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5vbWVnYV9fYmxvY2tkYXNoYm9hcmRfX3NldHRpbmcgPiBhOmhvdmVyLFxuaHRtbFtkYXRhLXRoZW1lPVwiZGFya1wiXSAub21lZ2FfX2Jsb2NrZGFzaGJvYXJkX19zZXR0aW5nX19kcm9wZG93bi5zaG93IC5vbWVnYV9fYmxvY2tkYXNoYm9hcmRfX3NldHRpbmdfX2Ryb3Bkb3duX19idG4sXG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5vbWVnYV9fYmxvY2tkYXNoYm9hcmRfX3NldHRpbmdfX2Ryb3Bkb3duX19idG46aG92ZXIsXG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5vbWVnYV9fYmxvY2tkYXNoYm9hcmRfX3NldHRpbmdfX2Ryb3Bkb3duX19idG46Zm9jdXMge1xuICAgIGNvbG9yOiB2YXIoLS1kcC1hY2NlbnQtcmVhZGFibGUpO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMTM0LCAyMDEsIC4xMik7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDEzNCwgMjAxLCAuMjQpO1xufVxuaHRtbFtkYXRhLXRoZW1lPVwiZGFya1wiXSAub21lZ2FfX2Jsb2NrZGFzaGJvYXJkX19zZXR0aW5nX19kcm9wZG93biAuZHJvcGRvd24tbWVudSB7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDEzNCwgMjAxLCAuMjQpICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZDpcbiAgICAgICAgcmFkaWFsLWdyYWRpZW50KDkwJSAxMjAlIGF0IDglIDAlLCByZ2JhKDAsIDEzNCwgMjAxLCAuMTcpLCB0cmFuc3BhcmVudCA1NiUpLFxuICAgICAgICByYWRpYWwtZ3JhZGllbnQoOTAlIDEyMCUgYXQgMTAwJSAxMDAlLCByZ2JhKDAsIDEzNCwgMjAxLCAuMTUpLCB0cmFuc3BhcmVudCA2MCUpLFxuICAgICAgICByZ2JhKDMyLCA2MSwgOTYsIC45MikgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiAwIDIycHggNDhweCByZ2JhKDAsIDAsIDAsIC4zNiksIGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAuMDUpO1xufVxuaHRtbFtkYXRhLXRoZW1lPVwiZGFya1wiXSAub21lZ2FfX2Jsb2NrZGFzaGJvYXJkX19zZXR0aW5nX19kcm9wZG93biAuZHJvcGRvd24taXRlbSB7XG4gICAgY29sb3I6IHJnYmEoMjM0LCAyNDAsIDI0NywgLjg4KSAhaW1wb3J0YW50O1xufVxuaHRtbFtkYXRhLXRoZW1lPVwiZGFya1wiXSAub21lZ2FfX2Jsb2NrZGFzaGJvYXJkX19zZXR0aW5nX19kcm9wZG93biAuZHJvcGRvd24taXRlbTpob3Zlcixcbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLm9tZWdhX19ibG9ja2Rhc2hib2FyZF9fc2V0dGluZ19fZHJvcGRvd24gLmRyb3Bkb3duLWl0ZW06Zm9jdXMge1xuICAgIGNvbG9yOiB2YXIoLS1kcC1hY2NlbnQtcmVhZGFibGUpICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAxMzQsIDIwMSwgLjEyKSAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1jb2xvcjogcmdiYSgwLCAxMzQsIDIwMSwgLjIwKTtcbn1cbkBrZXlmcmFtZXMgZHBDYXJkTWVudUluIHtcbiAgICBmcm9tIHsgb3BhY2l0eTogMDsgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtNnB4LCAwKSBzY2FsZSguOTgpOyB9XG4gICAgdG8gICB7IG9wYWNpdHk6IDE7IHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCkgc2NhbGUoMSk7IH1cbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQmxvY2NoaSBjb250ZW51dG8gLyBmb3JtIC8gcGFnaW5lIGVycm9yZVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi5vbWVnYV9fYmxvY2tmb3JtLFxuLnBhZ2VfX2FsZXJ0LFxuLmNhcmQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGNvbG9yOiB2YXIoLS1kcC10ZXh0KTtcbiAgICBiYWNrZ3JvdW5kOlxuICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIC45MiksIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjgyKSksXG4gICAgICAgIHZhcigtLWRwLXN1cmZhY2UpICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZHAtYm9yZGVyKSAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWRwLXJhZGl1cy1sZykgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1kcC1zaGFkb3cpO1xuICAgIC8qIEZpbGwtbW9kZSBcImJhY2t3YXJkc1wiIGUgbm9uIFwiYm90aFwiOiBjb24gXCJib3RoXCIgbCd1bHRpbW8ga2V5ZnJhbWUgcmVzdGFcbiAgICAgICBhcHBsaWNhdG8gcGVyIHNlbXByZSBlIGlsIGJsb2NjbyBjb25zZXJ2YSB1biB0cmFuc2Zvcm06IGRhIGzDrCBkaXZlbnRhIGlsXG4gICAgICAgY29udGVuaXRvcmUgZGVpIG1vZGFsaSDCq3Bvc2l0aW9uOiBmaXhlZMK7IGFsIHN1byBpbnRlcm5vLCBjaGUgZmluaXNjb25vXG4gICAgICAgc290dG8gaWwgdmVsbyBkaSBCb290c3RyYXAgZSBub24gc2kgcG9zc29ubyBwacO5IGNvbXBpbGFyZS4gKi9cbiAgICBhbmltYXRpb246IGRwRmFkZVVwIC41NXMgLjA4cyBiYWNrd2FyZHM7XG59XG4ub21lZ2FfX2Jsb2NrZm9ybTo6YmVmb3JlLFxuLnBhZ2VfX2FsZXJ0OjpiZWZvcmUsXG4uY2FyZDo6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBpbnNldDogMCAwIGF1dG87XG4gICAgaGVpZ2h0OiAzcHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB2YXIoLS1kcC1idXR0b24tc3RhcnQpLCB2YXIoLS1kcC1idXR0b24tZW5kKSk7XG4gICAgb3BhY2l0eTogLjg2O1xufVxuLm9tZWdhX19ibG9ja2Zvcm1fX2hlYWRlciB7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWRwLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgcmdiYSh2YXIoLS1kcC1hY2NlbnQtc3Ryb25nLXJnYiksIC4wNSksIHRyYW5zcGFyZW50KTtcbn1cbi5vbWVnYV9fYmxvY2tmb3JtX190aXRsZSB7XG4gICAgY29sb3I6IHZhcigtLWRwLXRleHQtdGl0bGUpICFpbXBvcnRhbnQ7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbn1cbi5vbWVnYV9fYmxvY2tmb3JtX19ib2R5IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMTtcbn1cbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLm9tZWdhX19ibG9ja2Zvcm0sXG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5wYWdlX19hbGVydCxcbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLmNhcmQge1xuICAgIGJhY2tncm91bmQ6XG4gICAgICAgIHJhZGlhbC1ncmFkaWVudCgxMjAlIDEyMCUgYXQgNCUgMCUsIHJnYmEoMCwgMTM0LCAyMDEsIC4xNCksIHRyYW5zcGFyZW50IDQ2JSksXG4gICAgICAgIHJhZGlhbC1ncmFkaWVudCgxMTAlIDEyMCUgYXQgMTAwJSAxMDAlLCByZ2JhKDAsIDEzNCwgMjAxLCAuMTMpLCB0cmFuc3BhcmVudCA1NCUpLFxuICAgICAgICByZ2JhKDksIDMyLCA1NiwgLjc4KSAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1jb2xvcjogcmdiYSgwLCAxMzQsIDIwMSwgLjI0KSAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IDAgMThweCA0MnB4IHJnYmEoMCwgMCwgMCwgLjM0KSwgaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIC4wNSk7XG4gICAgLyogTmllbnRlIGJhY2tkcm9wLWZpbHRlciBxdWk6IGludHJhcHBvbGVyZWJiZSBpIG1vZGFsaSBpbnRlcm5pIGNvbWUgaWxcbiAgICAgICB0cmFuc2Zvcm0gZGkgY3VpIHNvcHJhLiBMbyBzZm9uZG8gZScgZ2lhJyBvcGFjbyBhIHN1ZmZpY2llbnphLiAqL1xufVxuaHRtbFtkYXRhLXRoZW1lPVwiZGFya1wiXSAub21lZ2FfX2Jsb2NrZm9ybV9faGVhZGVyIHtcbiAgICBib3JkZXItY29sb3I6IHJnYmEoMCwgMTM0LCAyMDEsIC4yMCk7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgcmdiYSgwLCAxMzQsIDIwMSwgLjA5KSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSk7XG59XG4uZ3JvdXBfX2xpbWl0IHtcbiAgICBtYXJnaW4tYm90dG9tOiAxOHB4O1xufVxuLmdyb3VwX19saW1pdCAub21lZ2FfX2Zvcm1fX2xhYmVsIHtcbiAgICBtaW4taGVpZ2h0OiAyMnB4O1xuICAgIGNvbG9yOiB2YXIoLS1kcC10ZXh0LXRpdGxlKTtcbiAgICBmb250LXdlaWdodDogNjUwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI1O1xufVxuLm9tZWdhX19wZXJtaXNzaW9uX190aXRsZV9fbDIsXG4ub21lZ2FfX3Blcm1pc3Npb25fX3RpdGxlX19sMyB7XG4gICAgY29sb3I6IHZhcigtLWRwLXRleHQtdGl0bGUpO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG59XG4ub21lZ2FfX3Blcm1pc3Npb25fX2NvbnRlbnQge1xuICAgIHBhZGRpbmctdG9wOiA2cHg7XG59XG4ub21lZ2FfX2NoZWNrYm94X19sYWJlbCB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDhweDtcbiAgICBtaW4taGVpZ2h0OiAyOHB4O1xuICAgIGNvbG9yOiB2YXIoLS1kcC10ZXh0KTtcbn1cbi5vbWVnYV9fY2hlY2tib3hfX2xhYmVsIC5jaGVjayB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1kcC1ib3JkZXIpO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tZHAtdHJhbnNpdGlvbiksIGJvcmRlci1jb2xvciB2YXIoLS1kcC10cmFuc2l0aW9uKSxcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93IHZhcigtLWRwLXRyYW5zaXRpb24pO1xufVxuLm9tZWdhX19jaGVja2JveCBpbnB1dDpjaGVja2VkICsgLmNoZWNrIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1kcC1idXR0b24tc3RhcnQpLCB2YXIoLS1kcC1idXR0b24tZW5kKSk7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3gtc2hhZG93OiAwIDZweCAxNHB4IHJnYmEodmFyKC0tZHAtYWNjZW50LXN0cm9uZy1yZ2IpLCAuMjQpO1xufVxuaHRtbFtkYXRhLXRoZW1lPVwiZGFya1wiXSAuZ3JvdXBfX2xpbWl0IC5vbWVnYV9fZm9ybV9fbGFiZWwsXG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5vbWVnYV9fcGVybWlzc2lvbl9fdGl0bGVfX2wyLFxuaHRtbFtkYXRhLXRoZW1lPVwiZGFya1wiXSAub21lZ2FfX3Blcm1pc3Npb25fX3RpdGxlX19sMyB7XG4gICAgY29sb3I6ICM4QkI2RjE7XG59XG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5vbWVnYV9fY2hlY2tib3hfX2xhYmVsIHtcbiAgICBjb2xvcjogcmdiYSgyMzQsIDI0MCwgMjQ3LCAuODIpO1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBUYWJlbGxlICgudGFibGVvbWVnYSAvIC50YWJsZSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4udGFibGVvbWVnYSxcbnRhYmxlLnRhYmxlb21lZ2EsXG4udGFibGUge1xuICAgIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGUgIWltcG9ydGFudDtcbiAgICBib3JkZXItc3BhY2luZzogMCA4cHggIWltcG9ydGFudDtcbiAgICBjb2xvcjogdmFyKC0tZHAtdGV4dCk7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cbi50YWJsZW9tZWdhIHRoZWFkIHRoLFxuLnRhYmxlIHRoZWFkIHRoIHtcbiAgICBjb2xvcjogdmFyKC0tZHAtYWNjZW50LXJlYWRhYmxlKTtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAvKiBbMjAyNl0gaW50ZXN0YXppb25pIE5PTiBpbiBtYWl1c2NvbG8sIGNvbWUgbmVsbGUgbGlzdGUgRGF0aVBybyAqL1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgIGxldHRlci1zcGFjaW5nOiAwO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1kcC1ib3JkZXIpICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICBwYWRkaW5nOiAxNHB4IDEycHggIWltcG9ydGFudDtcbn1cbi50YWJsZW9tZWdhLnRhYmxlb21lZ2EudGFibGVvbWVnYSB0aGVhZCA+IHRyID4gdGguc29ydGluZyxcbi50YWJsZW9tZWdhLnRhYmxlb21lZ2EudGFibGVvbWVnYSB0aGVhZCA+IHRyID4gdGguc29ydGluZ19hc2MsXG4udGFibGVvbWVnYS50YWJsZW9tZWdhLnRhYmxlb21lZ2EgdGhlYWQgPiB0ciA+IHRoLnNvcnRpbmdfZGVzYyxcbnRhYmxlLmRhdGFUYWJsZSB0aGVhZCA+IHRyID4gdGguc29ydGluZyxcbnRhYmxlLmRhdGFUYWJsZSB0aGVhZCA+IHRyID4gdGguc29ydGluZ19hc2MsXG50YWJsZS5kYXRhVGFibGUgdGhlYWQgPiB0ciA+IHRoLnNvcnRpbmdfZGVzYyB7XG4gICAgcGFkZGluZy1sZWZ0OiAxMnB4ICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZy1yaWdodDogMzZweCAhaW1wb3J0YW50O1xufVxuLnRhYmxlb21lZ2EudGFibGVvbWVnYS50YWJsZW9tZWdhIHRoZWFkID4gdHIgPiB0aC5zb3J0aW5nOjpiZWZvcmUsXG4udGFibGVvbWVnYS50YWJsZW9tZWdhLnRhYmxlb21lZ2EgdGhlYWQgPiB0ciA+IHRoLnNvcnRpbmdfYXNjOjpiZWZvcmUsXG4udGFibGVvbWVnYS50YWJsZW9tZWdhLnRhYmxlb21lZ2EgdGhlYWQgPiB0ciA+IHRoLnNvcnRpbmdfZGVzYzo6YmVmb3JlLFxudGFibGUuZGF0YVRhYmxlIHRoZWFkIC5zb3J0aW5nOjpiZWZvcmUsXG50YWJsZS5kYXRhVGFibGUgdGhlYWQgLnNvcnRpbmdfYXNjOjpiZWZvcmUsXG50YWJsZS5kYXRhVGFibGUgdGhlYWQgLnNvcnRpbmdfZGVzYzo6YmVmb3JlIHtcbiAgICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IDE4cHggIWltcG9ydGFudDtcbiAgICBib3R0b206IDUwJSAhaW1wb3J0YW50O1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMiUpO1xufVxuLnRhYmxlb21lZ2EudGFibGVvbWVnYS50YWJsZW9tZWdhIHRoZWFkID4gdHIgPiB0aC5zb3J0aW5nOjphZnRlcixcbi50YWJsZW9tZWdhLnRhYmxlb21lZ2EudGFibGVvbWVnYSB0aGVhZCA+IHRyID4gdGguc29ydGluZ19hc2M6OmFmdGVyLFxuLnRhYmxlb21lZ2EudGFibGVvbWVnYS50YWJsZW9tZWdhIHRoZWFkID4gdHIgPiB0aC5zb3J0aW5nX2Rlc2M6OmFmdGVyLFxudGFibGUuZGF0YVRhYmxlIHRoZWFkIC5zb3J0aW5nOjphZnRlcixcbnRhYmxlLmRhdGFUYWJsZSB0aGVhZCAuc29ydGluZ19hc2M6OmFmdGVyLFxudGFibGUuZGF0YVRhYmxlIHRoZWFkIC5zb3J0aW5nX2Rlc2M6OmFmdGVyIHtcbiAgICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IDEwcHggIWltcG9ydGFudDtcbiAgICBib3R0b206IDUwJSAhaW1wb3J0YW50O1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMiUpO1xufVxuLnRhYmxlb21lZ2EgdGJvZHkgdHIsXG4udGFibGUgdGJvZHkgdHIge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS1kcC10cmFuc2l0aW9uKSwgdHJhbnNmb3JtIHZhcigtLWRwLXRyYW5zaXRpb24pLCBib3gtc2hhZG93IHZhcigtLWRwLXRyYW5zaXRpb24pO1xufVxuLnRhYmxlb21lZ2EgdGJvZHkgdHI6aG92ZXIsXG4udGFibGUgdGJvZHkgdHI6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tZHAtYWNjZW50LXN0cm9uZy1yZ2IpLCAuMDcpICFpbXBvcnRhbnQ7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xufVxuLnRhYmxlb21lZ2EgdGJvZHkgdGQsXG4udGFibGUgdGJvZHkgdGQge1xuICAgIGJvcmRlci10b3A6IDAgIWltcG9ydGFudDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIHBhZGRpbmc6IDEzcHggMTJweCAhaW1wb3J0YW50O1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjcyKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgyMjYsIDIzMCwgMjM4LCAuNjYpO1xufVxuLnRhYmxlb21lZ2EgdGJvZHkgdGQ6Zmlyc3QtY2hpbGQsXG4udGFibGUgdGJvZHkgdGQ6Zmlyc3QtY2hpbGQge1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IHZhcigtLWRwLXJhZGl1cy1zbSk7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogdmFyKC0tZHAtcmFkaXVzLXNtKTtcbn1cbi50YWJsZW9tZWdhIHRib2R5IHRkOmxhc3QtY2hpbGQsXG4udGFibGUgdGJvZHkgdGQ6bGFzdC1jaGlsZCB7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IHZhcigtLWRwLXJhZGl1cy1zbSk7XG4gICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IHZhcigtLWRwLXJhZGl1cy1zbSk7XG59XG4udGFibGUtc3RyaXBlZCB0Ym9keSB0cjpudGgtb2YtdHlwZShvZGQpLFxuLnRhYmxlLXN0cmlwZWQgdGJvZHkgdHI6bnRoLW9mLXR5cGUoZXZlbikge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG59XG4udGFibGVvbWVnYSB0Ym9keSB0cjpob3ZlciB0ZCxcbi50YWJsZSB0Ym9keSB0cjpob3ZlciB0ZCB7XG4gICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1kcC1hY2NlbnQtc3Ryb25nLXJnYiksIC4xMCkgIWltcG9ydGFudDtcbiAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tZHAtYWNjZW50LXN0cm9uZy1yZ2IpLCAuMTYpO1xufVxuaHRtbFtkYXRhLXRoZW1lPVwiZGFya1wiXSAudGFibGVvbWVnYSB0aGVhZCB0aCxcbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLnRhYmxlIHRoZWFkIHRoIHtcbiAgICBib3JkZXItY29sb3I6IHJnYmEoMCwgMTM0LCAyMDEsIC4xOCkgIWltcG9ydGFudDtcbn1cbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLnRhYmxlb21lZ2EgdGJvZHkgdGQsXG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC50YWJsZSB0Ym9keSB0ZCB7XG4gICAgY29sb3I6IHZhcigtLWRwLW11dGVkKTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDIyLCA0NSwgNzMsIC41OCkgIWltcG9ydGFudDtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiByZ2JhKDAsIDEzNCwgMjAxLCAuMDgpO1xufVxuaHRtbFtkYXRhLXRoZW1lPVwiZGFya1wiXSAudGFibGVvbWVnYSB0Ym9keSB0cjpob3ZlciB0ZCxcbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLnRhYmxlIHRib2R5IHRyOmhvdmVyIHRkIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDEzNCwgMjAxLCAuMTApICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDEzNCwgMjAxLCAuMjApO1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCByZ2JhKDAsIDEzNCwgMjAxLCAuMDUpO1xufVxuXG4uZGF0YVRhYmxlc193cmFwcGVyIHtcbiAgICBjb2xvcjogdmFyKC0tZHAtdGV4dCk7XG59XG4uZGF0YVRhYmxlc193cmFwcGVyIC5kYXRhVGFibGVzX2xlbmd0aCxcbi5kYXRhVGFibGVzX3dyYXBwZXIgLmRhdGFUYWJsZXNfZmlsdGVyLFxuLmRhdGFUYWJsZXNfd3JhcHBlciAuZGF0YVRhYmxlc19pbmZvIHtcbiAgICBjb2xvcjogdmFyKC0tZHAtdGV4dCkgIWltcG9ydGFudDtcbn1cbi5kYXRhVGFibGVzX3dyYXBwZXIgLmRhdGFUYWJsZXNfbGVuZ3RoIHNlbGVjdCxcbi5kYXRhVGFibGVzX3dyYXBwZXIgLmRhdGFUYWJsZXNfZmlsdGVyIGlucHV0IHtcbiAgICBtaW4taGVpZ2h0OiAzNnB4O1xuICAgIGNvbG9yOiB2YXIoLS1kcC10ZXh0LXRpdGxlKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kcC1zdXJmYWNlKSAhaW1wb3J0YW50O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWRwLWJvcmRlcikgIWltcG9ydGFudDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1kcC1yYWRpdXMtc20pICFpbXBvcnRhbnQ7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMnB4IHJnYmEoMjAsIDM1LCA2MCwgLjA0KTtcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tZHAtdHJhbnNpdGlvbiksIGJveC1zaGFkb3cgdmFyKC0tZHAtdHJhbnNpdGlvbiksIGJhY2tncm91bmQtY29sb3IgdmFyKC0tZHAtdHJhbnNpdGlvbik7XG59XG4vKiBbMjAyNl0gQm94IFwiVmlzdWFsaXp6YSBOIGVsZW1lbnRpXCIgY29tcGF0dG8gY29tZSBpbiBEYXRpUHJvIChub24gYSBwaWVuYSBsYXJnaGV6emEpLiAqL1xuLmRhdGFUYWJsZXNfd3JhcHBlciAuZGF0YVRhYmxlc19sZW5ndGggc2VsZWN0IHtcbiAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50O1xuICAgIG1pbi13aWR0aDogMTMwcHg7XG4gICAgbWF4LXdpZHRoOiAyMDBweDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4uZGF0YVRhYmxlc193cmFwcGVyIC5kYXRhVGFibGVzX2xlbmd0aCBzZWxlY3Q6Zm9jdXMsXG4uZGF0YVRhYmxlc193cmFwcGVyIC5kYXRhVGFibGVzX2ZpbHRlciBpbnB1dDpmb2N1cyB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1kcC1hY2NlbnQtc3Ryb25nKSAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKHZhcigtLWRwLWFjY2VudC1zdHJvbmctcmdiKSwgLjE1KTtcbiAgICBvdXRsaW5lOiBub25lO1xufVxuaHRtbFtkYXRhLXRoZW1lPVwiZGFya1wiXSAuZGF0YVRhYmxlc193cmFwcGVyIC5kYXRhVGFibGVzX2xlbmd0aCBzZWxlY3QsXG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5kYXRhVGFibGVzX3dyYXBwZXIgLmRhdGFUYWJsZXNfZmlsdGVyIGlucHV0IHtcbiAgICBjb2xvcjogdmFyKC0tZHAtdGV4dCk7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyMiwgNDUsIDczLCAuNzIpICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDEzNCwgMjAxLCAuMjIpICFpbXBvcnRhbnQ7XG59XG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5kYXRhVGFibGVzX3dyYXBwZXIgLmRhdGFUYWJsZXNfbGVuZ3RoIHNlbGVjdCBvcHRpb24ge1xuICAgIGNvbG9yOiB2YXIoLS1kcC10ZXh0KTtcbiAgICBiYWNrZ3JvdW5kOiAjMTYyRDQ5O1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCYXJyYSBkaSByaWNlcmNhIERhdGFUYWJsZXMgY29uIExFTlRFICsgWCAoY29tZSBEYXRpUHJvKS4gSSBkdWUgYm90dG9uaSBzb25vXG4gKiBpbmlldHRhdGkgZGFsIEpTIGRlbCB0ZW1hIChkcEFkZFRhYmxlU2VhcmNoQnV0dG9ucyk7IHF1aSBsbyBzdGlsZSB0aGVtZS1hd2FyZS5cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4uZGF0YVRhYmxlc193cmFwcGVyIC5kYXRhVGFibGVzX2ZpbHRlcjpoYXMoLm9tZWdhX190YWJsZV9fYnRuX19zZWFyY2gpIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICBtaW4taGVpZ2h0OiAzOHB4O1xufVxuLmRhdGFUYWJsZXNfd3JhcHBlciAuZGF0YVRhYmxlc19maWx0ZXI6aGFzKC5vbWVnYV9fdGFibGVfX2J0bl9fc2VhcmNoKSBsYWJlbCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgbWluLXdpZHRoOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuLmRhdGFUYWJsZXNfd3JhcHBlciAuZGF0YVRhYmxlc19maWx0ZXI6aGFzKC5vbWVnYV9fdGFibGVfX2J0bl9fc2VhcmNoKSBpbnB1dFt0eXBlPVwic2VhcmNoXCJdIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGhlaWdodDogMzhweCAhaW1wb3J0YW50O1xuICAgIG1pbi1oZWlnaHQ6IDM4cHggIWltcG9ydGFudDtcbiAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgICBib3JkZXItcmlnaHQ6IDAgIWltcG9ydGFudDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1kcC1yYWRpdXMtc20pIDAgMCB2YXIoLS1kcC1yYWRpdXMtc20pICFpbXBvcnRhbnQ7XG59XG4uZGF0YVRhYmxlc193cmFwcGVyIC5kYXRhVGFibGVzX2ZpbHRlciAub21lZ2FfX3RhYmxlX19idG5fX3NlYXJjaCxcbi5kYXRhVGFibGVzX3dyYXBwZXIgLmRhdGFUYWJsZXNfZmlsdGVyIC5vbWVnYV9fdGFibGVfX2J0bl9fY2xlYXIge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgZmxleDogMCAwIDM4cHg7XG4gICAgd2lkdGg6IDM4cHg7XG4gICAgbWluLXdpZHRoOiAzOHB4O1xuICAgIGhlaWdodDogMzhweDtcbiAgICBtaW4taGVpZ2h0OiAzOHB4O1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZHAtYm9yZGVyKTtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLWRwLXRyYW5zaXRpb24pLCBjb2xvciB2YXIoLS1kcC10cmFuc2l0aW9uKSwgYm94LXNoYWRvdyB2YXIoLS1kcC10cmFuc2l0aW9uKTtcbn1cbi5kYXRhVGFibGVzX3dyYXBwZXIgLmRhdGFUYWJsZXNfZmlsdGVyIC5vbWVnYV9fdGFibGVfX2J0bl9fc2VhcmNoIHtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgIGJvcmRlci1sZWZ0OiAwO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWRwLWFjY2VudC1zdHJvbmcpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZHAtYWNjZW50LXN0cm9uZyk7XG4gICAgY29sb3I6ICNmZmY7XG59XG4uZGF0YVRhYmxlc193cmFwcGVyIC5kYXRhVGFibGVzX2ZpbHRlciAub21lZ2FfX3RhYmxlX19idG5fX2NsZWFyIHtcbiAgICBib3JkZXItbGVmdDogMDtcbiAgICBib3JkZXItcmFkaXVzOiAwIHZhcigtLWRwLXJhZGl1cy1zbSkgdmFyKC0tZHAtcmFkaXVzLXNtKSAwO1xuICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tZHAtYWNjZW50LXN0cm9uZy1yZ2IpLCAuMDgpO1xuICAgIGNvbG9yOiB2YXIoLS1kcC1hY2NlbnQtcmVhZGFibGUpO1xufVxuLmRhdGFUYWJsZXNfd3JhcHBlciAuZGF0YVRhYmxlc19maWx0ZXIgLm9tZWdhX190YWJsZV9fYnRuX19zZWFyY2g6aG92ZXIsXG4uZGF0YVRhYmxlc193cmFwcGVyIC5kYXRhVGFibGVzX2ZpbHRlciAub21lZ2FfX3RhYmxlX19idG5fX3NlYXJjaDpmb2N1cy12aXNpYmxlIHtcbiAgICBmaWx0ZXI6IGJyaWdodG5lc3MoMS4wNik7XG4gICAgYm94LXNoYWRvdzogMCA1cHggMTJweCByZ2JhKHZhcigtLWRwLWFjY2VudC1zdHJvbmctcmdiKSwgLjIyKTtcbn1cbi5kYXRhVGFibGVzX3dyYXBwZXIgLmRhdGFUYWJsZXNfZmlsdGVyIC5vbWVnYV9fdGFibGVfX2J0bl9fY2xlYXI6aG92ZXIsXG4uZGF0YVRhYmxlc193cmFwcGVyIC5kYXRhVGFibGVzX2ZpbHRlciAub21lZ2FfX3RhYmxlX19idG5fX2NsZWFyOmZvY3VzLXZpc2libGUge1xuICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tZHAtYWNjZW50LXN0cm9uZy1yZ2IpLCAuMTYpO1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBMaXN0ZSBjb24gaWNvbmUgZGkgYXppb25lIGEgZGVzdHJhIChgLnRhYmxlb21lZ2FgLCBpbmNsLiBkYXRhdGFibGVzIGUgaWwgVnVlXG4gKiBwYXNzcG9ydC1jbGllbnRzKTogbGEgY29sb25uYSBtYXJjYXRhIGAuZHAtY29sLWdyb3dgIGFzc29yYmUgbG8gc3BhemlvIGxpYmVybyxcbiAqIGNvc8OsIGxlIGNvbG9ubmUgaWNvbmEgcmVzdGFubyBzdHJldHRlIGUgbGUgaWNvbmUgc2kgYWZmaWFuY2FubyB1bmlmb3JtaSAoY29tZSBpblxuICogRGF0aVBybykuIEljb25lIGNlbnRyYXRlLCBwYWRkaW5nIHJpZG90dG8uIEZpeCBcImljb25lIG5vbiBhbGxpbmVhdGVcIi5cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG50YWJsZS50YWJsZW9tZWdhIHRoLmRwLWNvbC1ncm93LFxudGFibGUudGFibGVvbWVnYSB0ZC5kcC1jb2wtZ3JvdyB7XG4gICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbn1cbnRhYmxlLnRhYmxlb21lZ2EgdGgubm8tc29ydC5yb3ctd2lkdGgyLFxudGFibGUudGFibGVvbWVnYSB0ZDpoYXMoPiAuYWN0aW9uLWxpbmspIHtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBwYWRkaW5nLWxlZnQ6IDJweCAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmctcmlnaHQ6IDJweCAhaW1wb3J0YW50O1xufVxudGFibGUudGFibGVvbWVnYSB0ZCAuYWN0aW9uLWxpbmsge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi50YWJsZW9tZWdhX19pY29uIHtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tZHAtdHJhbnNpdGlvbiksIGNvbG9yIHZhcigtLWRwLXRyYW5zaXRpb24pO1xufVxuLnRhYmxlb21lZ2FfX2ljb246aG92ZXIgeyB0cmFuc2Zvcm06IHNjYWxlKDEuMTUpOyB9XG4udGFibGVvbWVnYV9faWNvbi0tYmx1ZSB7IGNvbG9yOiB2YXIoLS1kcC1hY2NlbnQtcmVhZGFibGUpICFpbXBvcnRhbnQ7IH1cbi50YWJsZW9tZWdhX19pY29uLS1yZWQ6aG92ZXIgeyBjb2xvcjogdmFyKC0tZHAtZGFuZ2VyKSAhaW1wb3J0YW50OyB9XG5cbi5kYXRhVGFibGVzX3dyYXBwZXIgLmRhdGFUYWJsZXNfcGFnaW5hdGUsXG5kaXYuZGF0YVRhYmxlc193cmFwcGVyIGRpdi5kYXRhVGFibGVzX3BhZ2luYXRlIHtcbiAgICBwYWRkaW5nLXRvcDogMTJweDtcbn1cbi5kYXRhVGFibGVzX3dyYXBwZXIgLnBhZ2luYXRpb24sXG4uZGF0YVRhYmxlc19wYWdpbmF0ZSAucGFnaW5hdGlvbiB7XG4gICAgZ2FwOiA2cHg7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbn1cbi5kYXRhVGFibGVzX3dyYXBwZXIgLnBhZ2UtbGluayxcbi5kYXRhVGFibGVzX3BhZ2luYXRlIC5wYWdlLWxpbmssXG4uZGF0YVRhYmxlc19wYWdpbmF0ZSAucGFnaW5hdGVfYnV0dG9uIHtcbiAgICBtaW4td2lkdGg6IDM4cHg7XG4gICAgbWluLWhlaWdodDogMzRweDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZzogN3B4IDEycHggIWltcG9ydGFudDtcbiAgICAvKiBbMjAyNl0gY29tZSBEYXRpUHJvOiBwaWxsIHJldHRhbmdvbGFyZSAocmFkaXVzLXNtKSArIHBlc28gNjAwICovXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tZHAtcmFkaXVzLXNtKSAhaW1wb3J0YW50O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWRwLWJvcmRlcikgIWltcG9ydGFudDtcbiAgICBjb2xvcjogdmFyKC0tZHAtdGV4dC10aXRsZSkgIWltcG9ydGFudDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kcC1zdXJmYWNlKSAhaW1wb3J0YW50O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tZHAtc2hhZG93LXNtKTtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLWRwLXRyYW5zaXRpb24pLCBib3JkZXItY29sb3IgdmFyKC0tZHAtdHJhbnNpdGlvbiksXG4gICAgICAgICAgICAgICAgY29sb3IgdmFyKC0tZHAtdHJhbnNpdGlvbiksIGJveC1zaGFkb3cgdmFyKC0tZHAtdHJhbnNpdGlvbiksIHRyYW5zZm9ybSB2YXIoLS1kcC10cmFuc2l0aW9uKTtcbn1cbi5kYXRhVGFibGVzX3dyYXBwZXIgLnBhZ2UtbGluazpob3Zlcixcbi5kYXRhVGFibGVzX3BhZ2luYXRlIC5wYWdlLWxpbms6aG92ZXIsXG4uZGF0YVRhYmxlc19wYWdpbmF0ZSAucGFnaW5hdGVfYnV0dG9uOmhvdmVyIHtcbiAgICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWRwLWJ1dHRvbi1zdGFydCksIHZhcigtLWRwLWJ1dHRvbi1lbmQpKSAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1kcC1hY2NlbnQtc3Ryb25nLXJnYiksIC41MikgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiAwIDhweCAxOHB4IHJnYmEodmFyKC0tZHAtYWNjZW50LXN0cm9uZy1yZ2IpLCAuMjQpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbn1cbi5kYXRhVGFibGVzX3dyYXBwZXIgLnBhZ2UtaXRlbS5hY3RpdmUgLnBhZ2UtbGluayxcbi5kYXRhVGFibGVzX3BhZ2luYXRlIC5wYWdlLWl0ZW0uYWN0aXZlIC5wYWdlLWxpbmssXG4uZGF0YVRhYmxlc19wYWdpbmF0ZSAucGFnaW5hdGVfYnV0dG9uLmN1cnJlbnQge1xuICAgIGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tZHAtYnV0dG9uLXN0YXJ0KSwgdmFyKC0tZHAtYnV0dG9uLWVuZCkpICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWRwLWFjY2VudC1zdHJvbmctcmdiKSwgLjYwKSAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDE4cHggcmdiYSh2YXIoLS1kcC1hY2NlbnQtc3Ryb25nLXJnYiksIC4yNik7XG59XG4uZGF0YVRhYmxlc193cmFwcGVyIC5wYWdlLWl0ZW0uZGlzYWJsZWQgLnBhZ2UtbGluayxcbi5kYXRhVGFibGVzX3BhZ2luYXRlIC5wYWdlLWl0ZW0uZGlzYWJsZWQgLnBhZ2UtbGluayxcbi5kYXRhVGFibGVzX3BhZ2luYXRlIC5wYWdpbmF0ZV9idXR0b24uZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IC40ODtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbn1cblxuLy8gRml4IFwiZG9wcGlvIGJvcmRvL3N0cmF0b1wiOiBpbCB3cmFwcGVyIDxsaT4gKC5wYWdlLWl0ZW0gLyAucGFnaW5hdGVfYnV0dG9uKSBOT05cbi8vIGRldmUgYXZlcmUgc2ZvbmRvL2JvcmRvL29tYnJhIOKAlCByZXN0YSBzb2xvIGlsIC5wYWdlLWxpbmsgaW50ZXJubyAoY29tZSBkYXRpcHJvKS5cbi5kYXRhVGFibGVzX3dyYXBwZXIgLnBhZ2luYXRpb24gLnBhZ2UtaXRlbSxcbi5kYXRhVGFibGVzX3BhZ2luYXRlIC5wYWdpbmF0aW9uIC5wYWdlLWl0ZW0sXG4uZGF0YVRhYmxlc19wYWdpbmF0ZSAucGFnaW5hdGVfYnV0dG9uLnBhZ2UtaXRlbSB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICBib3JkZXI6IDAgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgIG1pbi13aWR0aDogMCAhaW1wb3J0YW50O1xuICAgIG1pbi1oZWlnaHQ6IDAgIWltcG9ydGFudDtcbn1cblxuLm9tZWdhX19mb290ZXIub21lZ2FfX2Zvb3RlciB7XG4gICAgY29sb3I6IHZhcigtLWRwLXNsYXRlKSAhaW1wb3J0YW50O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgI0YzRjdGQywgI0U1RUZGQSkgIWltcG9ydGFudDtcbn1cbi5vbWVnYV9fZm9vdGVyLm9tZWdhX19mb290ZXIgc3Bhbixcbi5vbWVnYV9fZm9vdGVyLm9tZWdhX19mb290ZXIgYSB7XG4gICAgY29sb3I6IHZhcigtLWRwLWFjY2VudC1yZWFkYWJsZSkgIWltcG9ydGFudDtcbn1cbi5vbWVnYV9fZm9vdGVyLm9tZWdhX19mb290ZXIgYSB7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1kcC10cmFuc2l0aW9uKSwgdGV4dC1zaGFkb3cgdmFyKC0tZHAtdHJhbnNpdGlvbik7XG59XG4ub21lZ2FfX2Zvb3Rlci5vbWVnYV9fZm9vdGVyIGE6aG92ZXIsXG4ub21lZ2FfX2Zvb3Rlci5vbWVnYV9fZm9vdGVyIGE6Zm9jdXMge1xuICAgIGNvbG9yOiAjMzE1Q0M0ICFpbXBvcnRhbnQ7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuaHRtbFtkYXRhLXRoZW1lPVwiZGFya1wiXSAub21lZ2FfX2Zvb3Rlci5vbWVnYV9fZm9vdGVyIHtcbiAgICBjb2xvcjogdmFyKC0tZHAtbXV0ZWQpICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB2YXIoLS1kcC1jYXJkKSwgdmFyKC0tZHAtbmF2eSkpICFpbXBvcnRhbnQ7XG59XG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5vbWVnYV9fZm9vdGVyLm9tZWdhX19mb290ZXIgc3Bhbixcbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLm9tZWdhX19mb290ZXIub21lZ2FfX2Zvb3RlciBhIHtcbiAgICBjb2xvcjogdmFyKC0tZHAtaGlnaGxpZ2h0KSAhaW1wb3J0YW50O1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb3R0b25pXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLmJ0biB7IHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tZHAtdHJhbnNpdGlvbiksIGJvcmRlci1jb2xvciB2YXIoLS1kcC10cmFuc2l0aW9uKSxcbiAgICAgICAgICAgICAgICAgICBjb2xvciB2YXIoLS1kcC10cmFuc2l0aW9uKSwgYm94LXNoYWRvdyB2YXIoLS1kcC10cmFuc2l0aW9uKSxcbiAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm0gdmFyKC0tZHAtdHJhbnNpdGlvbiksIGZpbHRlciB2YXIoLS1kcC10cmFuc2l0aW9uKTsgfVxuXG4ub21lZ2FfX2J0bl9fYmx1ZWxpZ2h0LFxuLm9tZWdhX19idG5fX2FkZCxcbi5vbWVnYV9fYnRuX19hZGRfX2xpbmsge1xuICAgIGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tZHAtYnV0dG9uLXN0YXJ0KSwgdmFyKC0tZHAtYnV0dG9uLWVuZCkpICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiAwIDZweCAxNnB4IHJnYmEodmFyKC0tZHAtYWNjZW50LXN0cm9uZy1yZ2IpLCAuMjYpO1xufVxuLy8gRml4IGRvcHBpbyBzZm9uZG86IGlsIHdyYXBwZXIgLm9tZWdhX19idG5fX2FkZCAoZGl2LmJ0bikgw6ggU09MTyBjb250ZW5pdG9yZTsgaWwgcGlsbFxuLy8gdmlzaWJpbGUgw6ggaWwgbGluayBpbnRlcm5vIC5vbWVnYV9fYnRuX19hZGRfX2xpbmsuIFNlbnphIHF1ZXN0bywgd3JhcHBlciBlIGxpbmtcbi8vIGF2ZXZhbm8gZW50cmFtYmkgaWwgZ3JhZGllbnRlIOKGkiB1biByZXR0YW5nb2xvIHNwdW50YXZhIGRpZXRybyBpbCBib3R0b25lIGFycm90b25kYXRvXG4vLyAoZXMuIFwiQWdnaXVuZ2kgVXRlbnRlXCIpLiBJbCB3cmFwcGVyIHJlc3RhIHRyYXNwYXJlbnRlIGluIG9nbmkgc3RhdG8uXG4uYnRuLm9tZWdhX19idG5fX2FkZCB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICBib3JkZXI6IDAgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgICY6aG92ZXIgeyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OyBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7IHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50OyBmaWx0ZXI6IG5vbmUgIWltcG9ydGFudDsgfVxufVxuLy8gSWwgcmFkaXVzIHN0YXZhIHN1bCB3cmFwcGVyIC5idG4gKG9yYSB0cmFzcGFyZW50ZSk6IGxvIHJpcG9ydGlhbW8gc3VsIHBpbGwgaW50ZXJuby5cbi5vbWVnYV9fYnRuX19hZGQgLm9tZWdhX19idG5fX2FkZF9fbGluayB7IGJvcmRlci1yYWRpdXM6IHZhcigtLWRwLXJhZGl1cyk7IH1cbi5vbWVnYV9fYnRuX19ibHVlbGlnaHQ6aG92ZXIsXG4ub21lZ2FfX2J0bl9fYWRkOmhvdmVyLFxuLm9tZWdhX19idG5fX2FkZDpob3ZlciAub21lZ2FfX2J0bl9fYWRkX19saW5rIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgZmlsdGVyOiBicmlnaHRuZXNzKDEuMDQpO1xuICAgIGJveC1zaGFkb3c6IDAgMTBweCAyNHB4IHJnYmEodmFyKC0tZHAtYWNjZW50LXN0cm9uZy1yZ2IpLCAuMzgpO1xuICAgIGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XG59XG4vKiBJbCBncmFkaWVudGUgYmx1IHVzYSBzZW1wcmUgdGVzdG8gYmlhbmNvLCBhbmNoZSBuZWwgdGVtYSBzY3Vyby4gKi9cbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLm9tZWdhX19idG5fX2JsdWVsaWdodDpob3Zlcixcbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLm9tZWdhX19idG5fX2JsdWVsaWdodDpob3ZlciAuY29sb3ItLXdoaXRlLFxuaHRtbFtkYXRhLXRoZW1lPVwiZGFya1wiXSAub21lZ2FfX2J0bl9fYmx1ZWxpZ2h0OmhvdmVyICosXG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5vbWVnYV9fYnRuX19hZGQ6aG92ZXIsXG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5vbWVnYV9fYnRuX19hZGQ6aG92ZXIgLm9tZWdhX19idG5fX2FkZF9fbGluayxcbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLm9tZWdhX19idG5fX2FkZDpob3ZlciAub21lZ2FfX2J0bl9fYWRkX19saW5rICosXG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5vbWVnYV9fYnRuX19hZGQ6aG92ZXIgLmNvbG9yLS13aGl0ZSB7XG4gICAgY29sb3I6ICNGRkZGRkYgIWltcG9ydGFudDtcbn1cbi5vbWVnYV9fYnRuX19ibHVlbGlnaHQ6YWN0aXZlLFxuLm9tZWdhX19idG5fX2FkZDphY3RpdmUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH1cblxuaHRtbDpub3QoW2RhdGEtdGhlbWU9XCJkYXJrXCJdKSAub21lZ2FfX2J0bl9fYmx1ZWxpZ2h0LFxuaHRtbDpub3QoW2RhdGEtdGhlbWU9XCJkYXJrXCJdKSAub21lZ2FfX2J0bl9fYWRkX19saW5rIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1kcC1idXR0b24tc3RhcnQpLCB2YXIoLS1kcC1idXR0b24tZW5kKSkgIWltcG9ydGFudDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDEzNCwgMjAxLCAuNDUpICFpbXBvcnRhbnQ7XG4gICAgYm94LXNoYWRvdzogMCA2cHggMTZweCByZ2JhKDAsIDEzNCwgMjAxLCAuMTgpO1xufVxuaHRtbDpub3QoW2RhdGEtdGhlbWU9XCJkYXJrXCJdKSAub21lZ2FfX2J0bl9fYmx1ZWxpZ2h0OmhvdmVyLFxuaHRtbDpub3QoW2RhdGEtdGhlbWU9XCJkYXJrXCJdKSAub21lZ2FfX2J0bl9fYWRkOmhvdmVyIC5vbWVnYV9fYnRuX19hZGRfX2xpbmsge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWRwLWJ1dHRvbi1zdGFydCksIHZhcigtLWRwLWJ1dHRvbi1lbmQpKSAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1jb2xvcjogcmdiYSgzOCwgMTE4LCAxODksIC44KSAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IDAgMTBweCAyNHB4IHJnYmEoMCwgMTM0LCAyMDEsIC4yNikgIWltcG9ydGFudDtcbiAgICAvKiBTdGVzc2Egc2Z1bWF0dXJhIGRlbCByaXBvc286IGlsIHBhc3NhZ2dpbyBzaSBzZW50ZSBjb24gdW5hIHNjaGlhcml0YS4gKi9cbiAgICBmaWx0ZXI6IGJyaWdodG5lc3MoMS4wOCk7XG59XG5cbi5vbWVnYV9fYnRuX193aGl0ZSB7XG4gICAgY29sb3I6IHZhcigtLWRwLXRleHQtdGl0bGUpICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tZHAtc3VyZmFjZSkgIWltcG9ydGFudDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1kcC1ib3JkZXIpICFpbXBvcnRhbnQ7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tZHAtc2hhZG93LXNtKTtcbn1cbi5vbWVnYV9fYnRuX193aGl0ZTpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgIGNvbG9yOiB2YXIoLS1kcC1hY2NlbnQtcmVhZGFibGUpICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1kcC1hY2NlbnQtc3Ryb25nKSAhaW1wb3J0YW50O1xuICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tZHAtYWNjZW50LXN0cm9uZy1yZ2IpLCAuMDYpICFpbXBvcnRhbnQ7XG59XG4vKiBcIlRvcm5hIGluZGlldHJvXCI6IG91dGxpbmUgaXN0aXR1emlvbmFsZSBlIHJpZW1waW1lbnRvIGJsdSBhbGwnaG92ZXIuICovXG4uYnV0dG9uZ29iYWNrLFxuLm9tZWdhX19idG5fX2JhY2ssXG4ub21lZ2FfX2J0bl9fZ29iYWNrIHtcbiAgICBjb2xvcjogdmFyKC0tZHAtYWNjZW50LXJlYWRhYmxlKSAhaW1wb3J0YW50O1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAxMzQsIDIwMSwgLjQwKSAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbn1cbi5idXR0b25nb2JhY2sgKixcbi5vbWVnYV9fYnRuX19iYWNrICosXG4ub21lZ2FfX2J0bl9fZ29iYWNrICogeyBjb2xvcjogaW5oZXJpdCAhaW1wb3J0YW50OyB9XG4uYnV0dG9uZ29iYWNrOmhvdmVyLFxuLm9tZWdhX19idG5fX2JhY2s6aG92ZXIsXG4ub21lZ2FfX2J0bl9fZ29iYWNrOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgY29sb3I6ICNmZmYgIWltcG9ydGFudDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1kcC1idXR0b24tc3RhcnQpLCB2YXIoLS1kcC1idXR0b24tZW5kKSkgIWltcG9ydGFudDtcbiAgICBib3JkZXItY29sb3I6IHJnYmEoMzgsIDExOCwgMTg5LCAuOCkgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiAwIDEwcHggMjRweCByZ2JhKDAsIDEzNCwgMjAxLCAuMjQpICFpbXBvcnRhbnQ7XG59XG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5idXR0b25nb2JhY2ssXG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5vbWVnYV9fYnRuX19iYWNrLFxuaHRtbFtkYXRhLXRoZW1lPVwiZGFya1wiXSAub21lZ2FfX2J0bl9fZ29iYWNrIHtcbiAgICBjb2xvcjogdmFyKC0tZHAtaGlnaGxpZ2h0KSAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1kcC1oaWdobGlnaHQtcmdiKSwgLjQ1KSAhaW1wb3J0YW50O1xufVxuaHRtbFtkYXRhLXRoZW1lPVwiZGFya1wiXSAuYnV0dG9uZ29iYWNrOmhvdmVyLFxuaHRtbFtkYXRhLXRoZW1lPVwiZGFya1wiXSAub21lZ2FfX2J0bl9fYmFjazpob3Zlcixcbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLm9tZWdhX19idG5fX2dvYmFjazpob3ZlciB7XG4gICAgY29sb3I6ICNGRkZGRkYgIWltcG9ydGFudDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1kcC1idXR0b24tc3RhcnQpLCB2YXIoLS1kcC1idXR0b24tZW5kKSkgIWltcG9ydGFudDtcbiAgICBib3JkZXItY29sb3I6IHJnYmEoMCwgMTM0LCAyMDEsIC44KSAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IDAgMTBweCAyNHB4IHJnYmEodmFyKC0tZHAtYnJhbmQtcmdiKSwgLjI4KSAhaW1wb3J0YW50O1xufVxuLm9tZWdhX19idG5fX2dvYmFja19faWNvbixcbi5vbWVnYV9fYnRuX19hZGRfX2ljb24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG4ub21lZ2FfX2J0bl9fYWRkX19saW5rLFxuLm9tZWdhX19idG5fX2dvYmFjayB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGdhcDogOHB4O1xuICAgIG1pbi1oZWlnaHQ6IDM2cHg7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFJvdW5kaW5nIGdlbmVyYWxlICsgZm9ybSArIG1vZGFsaSAoY29lcmVuemEgMjAyNilcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4uY2FyZCxcbi5vbWVnYV9fYmxvY2tmb3JtLFxuLm1vZGFsLWNvbnRlbnQsXG4uZHJvcGRvd24tbWVudSB7IGJvcmRlci1yYWRpdXM6IHZhcigtLWRwLXJhZGl1cykgIWltcG9ydGFudDsgfVxuXG4uYnRuLFxuLmZvcm0tY29udHJvbCxcbi5jdXN0b20tc2VsZWN0LFxuLm9tZWdhX19mb3JtX19pbnB1dCB7IGJvcmRlci1yYWRpdXM6IHZhcigtLWRwLXJhZGl1cy1zbSkgIWltcG9ydGFudDsgfVxuXG4ub21lZ2FfX2Zvcm1fX2lucHV0OmZvY3VzLFxuLmZvcm0tY29udHJvbDpmb2N1cyB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1kcC1hY2NlbnQtc3Ryb25nKTtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSh2YXIoLS1kcC1hY2NlbnQtc3Ryb25nLXJnYiksIC4xNSk7XG59XG5cbi5tb2RhbC1jb250ZW50IHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1kcC1ib3JkZXIpICFpbXBvcnRhbnQ7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tZHAtc2hhZG93LWxnKTtcbn1cblxuLnBhZ2VfX2FsZXJ0IHtcbiAgICBtYXgtd2lkdGg6IDc2MHB4O1xuICAgIG1hcmdpbjogNDhweCBhdXRvO1xuICAgIHBhZGRpbmc6IDE4cHg7XG59XG4ucGFnZV9fYWxlcnRfX2NvbnRlbnRfX2ltZyB7XG4gICAgcGFkZGluZy1ib3R0b206IDEycHg7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWRwLWJvcmRlcik7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLnBhZ2VfX2FsZXJ0X19pbWcge1xuICAgIG1heC13aWR0aDogMjgwcHg7XG4gICAgaGVpZ2h0OiBhdXRvO1xufVxuLnBhZ2VfX2FsZXJ0X19jb250ZW50IHtcbiAgICBwYWRkaW5nLXRvcDogMThweDtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7XG4gICAgLm9tZWdhX19jb250ZW50X19idXR0b24ge1xuICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgfVxuICAgIC5vbWVnYV9fY29udGVudF9fYnV0dG9uIC5idG4sXG4gICAgLm9tZWdhX19jb250ZW50X19idXR0b24gLm9tZWdhX19idG5fX2FkZCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbiAgICAub21lZ2FfX2Jsb2NrZm9ybV9fYm9keSB7XG4gICAgICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgICB9XG4gICAgLmRhdGFUYWJsZXNfd3JhcHBlciAuZGF0YVRhYmxlc19sZW5ndGgsXG4gICAgLmRhdGFUYWJsZXNfd3JhcHBlciAuZGF0YVRhYmxlc19maWx0ZXIge1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIC5kYXRhVGFibGVzX3dyYXBwZXIgLmRhdGFUYWJsZXNfZmlsdGVyIGlucHV0IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICBtYXJnaW4tdG9wOiA2cHg7XG4gICAgfVxufVxuXG4vKiBzZWFyY2gvc2VsZWN0IHRvb2xiYXIgKi9cbi5zZWFyY2gub21lZ2FfX2Zvcm1fX2lucHV0LFxuLm9tZWdhX19zZWxlY3QuZm9ybS1jb250cm9sIHtcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tZHAtdHJhbnNpdGlvbiksIGJveC1zaGFkb3cgdmFyKC0tZHAtdHJhbnNpdGlvbik7XG59XG5cbkBrZXlmcmFtZXMgZHBGYWRlVXAge1xuICAgIGZyb20geyBvcGFjaXR5OiAwOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoOHB4KTsgfVxuICAgIHRvICAgeyBvcGFjaXR5OiAxOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH1cbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogWzIwMjZdIFRpY2sgY2hlY2tib3ggKyBob3ZlciBvcHppb25pIGEgdGVtYSAoTElHSFQgdmlvbGEgLyBEQVJLIGJsdSBpc3RpdHV6aW9uYWxlKS5cbiAqIFNwZWNpZmljaXRhJyBhbHRhIChodG1sIGJvZHkgLi4uKSBwZXIgYmF0dGVyZSBtYWluLmNzcy9tYWluX3VzYS5jc3MgY2hlXG4gKiB2ZW5nb25vIGNhcmljYXRpIERPUE8gYXBwMjAyNi5jc3MgZSBjb2xvcmF2YW5vIGlsIGNoZWNrIGRpIGJsdS5cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5odG1sIGJvZHkgLm9tZWdhX19jaGVja2JveCBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl06Y2hlY2tlZCArIHNwYW4uY2hlY2ssXG5odG1sIGJvZHkgLm9tZWdhX19jaGVja2JveCBpbnB1dDpjaGVja2VkICsgLmNoZWNrIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1kcC1idXR0b24tc3RhcnQpLCB2YXIoLS1kcC1idXR0b24tZW5kKSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgYm94LXNoYWRvdzogMCA2cHggMTRweCByZ2JhKHZhcigtLWRwLWFjY2VudC1zdHJvbmctcmdiKSwgLjI0KTtcbn1cbmh0bWwgYm9keSAub21lZ2FfX2NoZWNrYm94IGlucHV0W3R5cGU9XCJjaGVja2JveFwiXTpjaGVja2VkICsgc3Bhbi5jaGVjayBpLFxuaHRtbCBib2R5IC5vbWVnYV9fY2hlY2tib3ggaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdOmNoZWNrZWQgKyBzcGFuLmNoZWNrIHN2ZyB7XG4gICAgY29sb3I6ICNmZmY7XG59XG4vKiBIb3ZlciByaWdhL29wemlvbmUgc2VsZXppb25hYmlsZTogdW5hIHNvbGEgdGludGEgZCdhY2NlbnRvIHN1IHR1dHRhIGxhIHJpZ2EuXG4gKiBQcmltYSBzaSBjb2xvcmF2YW5vIHNpYSBpbCBjb250ZW5pdG9yZSAoLm9tZWdhX19jaGVja2JveCwgbGFyZ28gcXVhbnRvIGxhXG4gKiBjb2xvbm5hKSBzaWEgbCdldGljaGV0dGEgaW50ZXJuYSAobGFyZ2EgcXVhbnRvIGlsIHRlc3RvKTogbGUgZHVlIHRpbnRlIHNpXG4gKiBzb21tYXZhbm8gZSBkaWV0cm8gYWwgdGVzdG8gY29tcGFyaXZhIHVuIHNlY29uZG8gcmV0dGFuZ29sbyBwaXUnIGNhcmljby5cbiAqIE9yYSBpbCBjb250ZW5pdG9yZSByZXN0YSB0cmFzcGFyZW50ZSBlIGwnZXRpY2hldHRhIG9jY3VwYSB0dXR0YSBsYSByaWdhOlxuICogbGEgdGludGEgZScgdW5hLCBhcnJvdG9uZGF0YSwgZSB0dXR0YSBsYSByaWdhIGUnIGNsaWNjYWJpbGUuICovXG5odG1sIGJvZHkgLm9tZWdhX19jaGVja2JveCxcbmh0bWwgYm9keSAub21lZ2FfX2NoZWNrYm94OmhvdmVyLFxuaHRtbCBib2R5IC5vbWVnYV9fYXJ0Y2hlY2tib3g6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xufVxuaHRtbCBib2R5IC5vbWVnYV9fY2hlY2tib3ggLm9tZWdhX19jaGVja2JveF9fbGFiZWwge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgLyogSWwgbWFyZ2luZSBuZWdhdGl2byBjb21wZW5zYSBpbCBwYWRkaW5nOiBsYSBjYXNlbGxhIHJlc3RhIGFsbGluZWF0YVxuICAgICAgIGFsbCdldGljaGV0dGEgZGVsIGdydXBwbyBlIGxhIHRpbnRhIHNib3JkYSBhcHBlbmEgbmVsbGEgY29sb25uYS4gKi9cbiAgICB3aWR0aDogY2FsYygxMDAlICsgMTZweCk7XG4gICAgbWFyZ2luOiAwIC04cHg7XG4gICAgcGFkZGluZzogNHB4IDhweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1kcC1yYWRpdXMtc20sIDhweCk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tZHAtdHJhbnNpdGlvbiksIGNvbG9yIHZhcigtLWRwLXRyYW5zaXRpb24pO1xufVxuaHRtbCBib2R5IC5vbWVnYV9fY2hlY2tib3ggLm9tZWdhX19jaGVja2JveF9fbGFiZWw6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tZHAtYWNjZW50LXN0cm9uZy1yZ2IpLCAuMDgpO1xufVxuaHRtbFtkYXRhLXRoZW1lPVwiZGFya1wiXSBib2R5IC5vbWVnYV9fY2hlY2tib3ggLm9tZWdhX19jaGVja2JveF9fbGFiZWw6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tZHAtYWNjZW50LXN0cm9uZy1yZ2IpLCAuMTIpO1xufVxuLyogU3VsbGEgY2FzZWxsYSwgYWwgcGFzc2FnZ2lvLCBzb2xvIHVuIGJvcmRvIGQnYWNjZW50byBlIHVuIGFsb25lIGxlZ2dlcm8uICovXG5odG1sIGJvZHkgLm9tZWdhX19jaGVja2JveCAub21lZ2FfX2NoZWNrYm94X19sYWJlbDpob3ZlciBpbnB1dDpub3QoOmNoZWNrZWQpICsgc3Bhbi5jaGVjayB7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWRwLWFjY2VudC1zdHJvbmctcmdiKSwgLjYwKTtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSh2YXIoLS1kcC1hY2NlbnQtc3Ryb25nLXJnYiksIC4xMik7XG59XG4vKiBEYSB0YXN0aWVyYSBsYSBjYXNlbGxhIChpbnZpc2liaWxlKSBkZXZlIGNvbXVucXVlIG1vc3RyYXJlIGlsIGZ1b2NvLiAqL1xuaHRtbCBib2R5IC5vbWVnYV9fY2hlY2tib3ggaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdOmZvY3VzLXZpc2libGUgKyBzcGFuLmNoZWNrIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSh2YXIoLS1kcC1hY2NlbnQtc3Ryb25nLXJnYiksIC4zMCk7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBUb2FzdCAodG9hc3RyKTogZGkgZGVmYXVsdCBvcGFjaXR5IC44IC0+IHNpIGxlZ2dlIG1hbGUgc29wcmEgaWwgY29udGVudXRvLlxuICogTG8gcmVuZGlhbW8gb3BhY28gYSByaXBvc28gKGNvbWUgbG8gc3RhdG8gOmhvdmVyKSwgY29zaScgZScgc3ViaXRvIGxlZ2dpYmlsZS5cbiAqIE5COiBuaWVudGUgIWltcG9ydGFudCBzdWxsJ29wYWNpdHksIGFsdHJpbWVudGkgbCdhbmltYXppb25lIGRpIGZhZGVPdXQgZGlcbiAqIHRvYXN0ciAoY2hlIGFuaW1hIGwnb3BhY2l0eSBpbmxpbmUpIG5vbiByaWVzY2UgYSBuYXNjb25kZXJlIGlsIHRvYXN0IGUgcXVlc3RvXG4gKiByZXN0ZXJlYmJlIGZpbmNoZScgbm9uIGxvIHNpIGNsaWNjYS5cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4jdG9hc3QtY29udGFpbmVyID4gZGl2IHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIGJveC1zaGFkb3c6IDAgMCAxMnB4ICMwMDAgIWltcG9ydGFudDtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIFsyMDI2XSBDT0VSRU5aQSBBR0dJVU5USVZBIChhdWRpdCk6IHRleHRhcmVhLCBib3R0b25pIGZvcm0sIGludGVybm8gbW9kYWxpLFxuICogbGFiZWwsIGNsYXNzaSBsZWdhY3kgQm9vdHN0cmFwLiBUdXR0byB0aGVtZS1hd2FyZSB2aWEgdG9rZW4uXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiAtLS0gVEVYVEFSRUEgKGVyYSBzZW56YSBzdGlsZSkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLm9tZWdhX19mb3JtX190ZXh0YXJlYSxcbi5vbWVnYV9fZm9ybSB0ZXh0YXJlYSxcbnRleHRhcmVhLmZvcm0tY29udHJvbCB7XG4gICAgY29sb3I6IHZhcigtLWRwLXRleHQtdGl0bGUpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWRwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWRwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tZHAtcmFkaXVzLXNtKTtcbiAgICBwYWRkaW5nOiAxMHB4IDEycHg7XG4gICAgbWluLWhlaWdodDogOTBweDtcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAycHggcmdiYSgyMCwgMzUsIDYwLCAuMDQpO1xuICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS1kcC10cmFuc2l0aW9uKSwgYm94LXNoYWRvdyB2YXIoLS1kcC10cmFuc2l0aW9uKSwgYmFja2dyb3VuZC1jb2xvciB2YXIoLS1kcC10cmFuc2l0aW9uKTtcbn1cbi5vbWVnYV9fZm9ybV9fdGV4dGFyZWE6Zm9jdXMsXG4ub21lZ2FfX2Zvcm0gdGV4dGFyZWE6Zm9jdXMsXG50ZXh0YXJlYS5mb3JtLWNvbnRyb2w6Zm9jdXMge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZHAtYWNjZW50LXN0cm9uZyk7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEodmFyKC0tZHAtYWNjZW50LXN0cm9uZy1yZ2IpLCAuMTUpO1xuICAgIG91dGxpbmU6IG5vbmU7XG59XG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5vbWVnYV9fZm9ybV9fdGV4dGFyZWEsXG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5vbWVnYV9fZm9ybSB0ZXh0YXJlYSxcbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gdGV4dGFyZWEuZm9ybS1jb250cm9sIHtcbiAgICBjb2xvcjogdmFyKC0tZHAtdGV4dCk7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyMiwgNDUsIDczLCAuNzIpO1xuICAgIGJvcmRlci1jb2xvcjogcmdiYSgwLCAxMzQsIDIwMSwgLjIyKTtcbn1cblxuLyogLS0tIEJPVFRPTkkgZm9ybSBub24gY29wZXJ0aSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qIFBSSU1BUkkgKFNhbHZhLCBTZWxlemlvbmEgdHV0dGkpOiByaWVtcGltZW50byBhY2NlbnQsIGNvbWUgXCJBZ2dpdW5naVwiLiAqL1xuLm9tZWdhX19idG5fX3NhdmUsXG4ub21lZ2FfX2J0bl9fc2VsZWN0IHtcbiAgICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWRwLWJ1dHRvbi1zdGFydCksIHZhcigtLWRwLWJ1dHRvbi1lbmQpKSAhaW1wb3J0YW50O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgYm94LXNoYWRvdzogMCA2cHggMTZweCByZ2JhKHZhcigtLWRwLWFjY2VudC1zdHJvbmctcmdiKSwgLjI2KTtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLWRwLXRyYW5zaXRpb24pLCBib3gtc2hhZG93IHZhcigtLWRwLXRyYW5zaXRpb24pLFxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybSB2YXIoLS1kcC10cmFuc2l0aW9uKSwgZmlsdGVyIHZhcigtLWRwLXRyYW5zaXRpb24pLCBjb2xvciB2YXIoLS1kcC10cmFuc2l0aW9uKTtcbn1cbi5vbWVnYV9fYnRuX19zYXZlOmhvdmVyLFxuLm9tZWdhX19idG5fX3NlbGVjdDpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgIGZpbHRlcjogYnJpZ2h0bmVzcygxLjA0KTtcbiAgICBib3gtc2hhZG93OiAwIDEwcHggMjRweCByZ2JhKHZhcigtLWRwLWFjY2VudC1zdHJvbmctcmdiKSwgLjM4KTtcbiAgICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xufVxuaHRtbFtkYXRhLXRoZW1lPVwiZGFya1wiXSAub21lZ2FfX2J0bl9fc2F2ZTpob3Zlcixcbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLm9tZWdhX19idG5fX3NhdmU6aG92ZXIgKixcbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLm9tZWdhX19idG5fX3NlbGVjdDpob3Zlcixcbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLm9tZWdhX19idG5fX3NlbGVjdDpob3ZlciAqIHsgY29sb3I6ICNGRkZGRkYgIWltcG9ydGFudDsgfVxuXG4vKiBTRUNPTkRBUkkgKEFubnVsbGEsIERlc2VsZXppb25hLCBEdXBsaWNhKTogb3V0bGluZSBhY2NlbnQsIGhvdmVyIGNoZSByaWVtcGllLiAqL1xuLm9tZWdhX19idG5fX2FubnVsLFxuLm9tZWdhX19idG5fX2Rlc2VsZWN0LFxuLm9tZWdhX19idG5fX2R1cGxpY2F0ZSB7XG4gICAgY29sb3I6IHZhcigtLWRwLWFjY2VudC1yZWFkYWJsZSkgIWltcG9ydGFudDtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMTM0LCAyMDEsIC40MCkgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS1kcC10cmFuc2l0aW9uKSwgYm94LXNoYWRvdyB2YXIoLS1kcC10cmFuc2l0aW9uKSxcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm0gdmFyKC0tZHAtdHJhbnNpdGlvbiksIGJvcmRlci1jb2xvciB2YXIoLS1kcC10cmFuc2l0aW9uKSwgY29sb3IgdmFyKC0tZHAtdHJhbnNpdGlvbik7XG59XG4ub21lZ2FfX2J0bl9fYW5udWwgKixcbi5vbWVnYV9fYnRuX19kZXNlbGVjdCAqLFxuLm9tZWdhX19idG5fX2R1cGxpY2F0ZSAqIHsgY29sb3I6IGluaGVyaXQgIWltcG9ydGFudDsgfVxuLm9tZWdhX19idG5fX2FubnVsOmhvdmVyLFxuLm9tZWdhX19idG5fX2Rlc2VsZWN0OmhvdmVyLFxuLm9tZWdhX19idG5fX2R1cGxpY2F0ZTpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgIGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tZHAtYnV0dG9uLXN0YXJ0KSwgdmFyKC0tZHAtYnV0dG9uLWVuZCkpICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDM4LCAxMTgsIDE4OSwgLjgpICFpbXBvcnRhbnQ7XG4gICAgYm94LXNoYWRvdzogMCAxMHB4IDI0cHggcmdiYSgwLCAxMzQsIDIwMSwgLjI0KSAhaW1wb3J0YW50O1xufVxuaHRtbFtkYXRhLXRoZW1lPVwiZGFya1wiXSAub21lZ2FfX2J0bl9fYW5udWwsXG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5vbWVnYV9fYnRuX19kZXNlbGVjdCxcbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLm9tZWdhX19idG5fX2R1cGxpY2F0ZSB7XG4gICAgY29sb3I6IHZhcigtLWRwLWhpZ2hsaWdodCkgIWltcG9ydGFudDtcbiAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tZHAtaGlnaGxpZ2h0LXJnYiksIC40NSkgIWltcG9ydGFudDtcbn1cbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLm9tZWdhX19idG5fX2FubnVsOmhvdmVyLFxuaHRtbFtkYXRhLXRoZW1lPVwiZGFya1wiXSAub21lZ2FfX2J0bl9fZGVzZWxlY3Q6aG92ZXIsXG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5vbWVnYV9fYnRuX19kdXBsaWNhdGU6aG92ZXIge1xuICAgIGNvbG9yOiAjRkZGRkZGICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tZHAtYnV0dG9uLXN0YXJ0KSwgdmFyKC0tZHAtYnV0dG9uLWVuZCkpICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDEzNCwgMjAxLCAuOCkgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiAwIDEwcHggMjRweCByZ2JhKHZhcigtLWRwLWJyYW5kLXJnYiksIC4yOCkgIWltcG9ydGFudDtcbn1cblxuLyogRElTVFJVVFRJVkkgKEVsaW1pbmEpOiByb3NzbyBtb2Rlcm5vLiAqL1xuLm9tZWdhX19idG5fX2RlbGV0ZSxcbi5tb2RhbF9fZGFuZ2VyX19idG4ge1xuICAgIGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI2YwNTA2ZSwgI2ZmN2E5MCkgIWltcG9ydGFudDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI0MCwgODAsIDExMCwgLjUpICFpbXBvcnRhbnQ7XG4gICAgYm94LXNoYWRvdzogMCA2cHggMTZweCByZ2JhKDI0MCwgODAsIDExMCwgLjE4KTtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLWRwLXRyYW5zaXRpb24pLCBib3gtc2hhZG93IHZhcigtLWRwLXRyYW5zaXRpb24pLFxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybSB2YXIoLS1kcC10cmFuc2l0aW9uKSwgZmlsdGVyIHZhcigtLWRwLXRyYW5zaXRpb24pO1xufVxuLm9tZWdhX19idG5fX2RlbGV0ZSAqLFxuLm1vZGFsX19kYW5nZXJfX2J0biAqIHsgY29sb3I6ICNmZmYgIWltcG9ydGFudDsgfVxuLm9tZWdhX19idG5fX2RlbGV0ZTpob3Zlcixcbi5tb2RhbF9fZGFuZ2VyX19idG46aG92ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbiAgICBmaWx0ZXI6IGJyaWdodG5lc3MoMS4wNCk7XG4gICAgYm94LXNoYWRvdzogMCAxMHB4IDI0cHggcmdiYSgyNDAsIDgwLCAxMTAsIC4yNikgIWltcG9ydGFudDtcbn1cblxuLyogLS0tIExBQkVMIGRlaSBmb3JtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4ub21lZ2FfX2Zvcm1fX2xhYmVsIHtcbiAgICBjb2xvcjogdmFyKC0tZHAtdGV4dC10aXRsZSk7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLyogLS0tIElOVEVSTk8gTU9EQUxJIChlcmEgc29sbyAubW9kYWwtY29udGVudCkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi5tb2RhbC1oZWFkZXIsXG4ubW9kYWwtYm9keSxcbi5tb2RhbC1mb290ZXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWRwLXN1cmZhY2UpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZHAtYm9yZGVyKSAhaW1wb3J0YW50O1xufVxuLm1vZGFsLXRpdGxlLFxuLmdlbmVyaWNfX21vZGFsX190aXRsZSB7XG4gICAgY29sb3I6IHZhcigtLWRwLXRleHQtdGl0bGUpO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG59XG4ubW9kYWwgLmNsb3NlIHtcbiAgICBjb2xvcjogdmFyKC0tZHAtdGV4dCk7XG4gICAgb3BhY2l0eTogLjc7XG4gICAgdGV4dC1zaGFkb3c6IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tZHAtdHJhbnNpdGlvbiksIG9wYWNpdHkgdmFyKC0tZHAtdHJhbnNpdGlvbik7XG59XG4ubW9kYWwgLmNsb3NlOmhvdmVyIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIGNvbG9yOiB2YXIoLS1kcC1hY2NlbnQtcmVhZGFibGUpO1xufVxuXG4vKiAtLS0gTEVHQUNZIEJvb3RzdHJhcCBub24gY29wZXJ0byAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLmhlbHAtYmxvY2sge1xuICAgIGNvbG9yOiB2YXIoLS1kcC10ZXh0KTtcbiAgICBvcGFjaXR5OiAuNztcbiAgICBmb250LXNpemU6IDEycHg7XG59XG4ubGlzdC1ncm91cC1pdGVtIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kcC1zdXJmYWNlKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWRwLWJvcmRlcikgIWltcG9ydGFudDtcbiAgICBjb2xvcjogdmFyKC0tZHAtdGV4dC10aXRsZSk7XG59XG4uaW5wdXQtZ3JvdXAtdGV4dCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tZHAtYmcpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZHAtYm9yZGVyKSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiB2YXIoLS1kcC10ZXh0KTtcbn1cbi5ia2ctLWJsdWUgeyBiYWNrZ3JvdW5kOiB2YXIoLS1kcC1hY2NlbnQtc3Ryb25nKSAhaW1wb3J0YW50OyB9XG4uY29sb3ItLXdoaXRlIHsgY29sb3I6ICNmZmY7IH1cblxuLyogLS0tIFRBQlMgKHBlcm1lc3NpIHV0ZW50ZSk6IGJhcnJhIHNvdHRvbGluZWF0YSBtb2Rlcm5hLCB0aGVtZS1hd2FyZSAtLS0tLS0tLSAqL1xuLm9tZWdhX190YWJzbmF2Lm5hdi10YWJzIHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tZHAtYm9yZGVyKTtcbiAgICBnYXA6IDRweDtcbn1cbi5vbWVnYV9fdGFic25hdl9fbGluayxcbi5vbWVnYV9fdGFic25hdiAubmF2LWxpbmsge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogOHB4O1xuICAgIHBhZGRpbmc6IDEwcHggMTZweDtcbiAgICBtYXJnaW4tYm90dG9tOiAtMXB4O1xuICAgIGJvcmRlcjogMCAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWRwLXJhZGl1cy1zbSkgdmFyKC0tZHAtcmFkaXVzLXNtKSAwIDA7XG4gICAgY29sb3I6IHZhcigtLWRwLXRleHQpO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1kcC10cmFuc2l0aW9uKSwgYmFja2dyb3VuZC1jb2xvciB2YXIoLS1kcC10cmFuc2l0aW9uKTtcbn1cbi5vbWVnYV9fdGFic25hdl9fbGluazpob3Zlcixcbi5vbWVnYV9fdGFic25hdiAubmF2LWxpbms6aG92ZXIge1xuICAgIGNvbG9yOiB2YXIoLS1kcC1hY2NlbnQtcmVhZGFibGUpO1xuICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tZHAtYWNjZW50LXN0cm9uZy1yZ2IpLCAuMDYpICFpbXBvcnRhbnQ7XG59XG4ub21lZ2FfX3RhYnNuYXZfX2xpbmsuYWN0aXZlLFxuLm9tZWdhX190YWJzbmF2IC5uYXYtbGluay5hY3RpdmUge1xuICAgIGNvbG9yOiB2YXIoLS1kcC1hY2NlbnQtcmVhZGFibGUpICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbn1cbi5vbWVnYV9fdGFic25hdl9fbGluay5hY3RpdmU6OmFmdGVyLFxuLm9tZWdhX190YWJzbmF2IC5uYXYtbGluay5hY3RpdmU6OmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiA4cHg7XG4gICAgcmlnaHQ6IDhweDtcbiAgICBib3R0b206IDA7XG4gICAgaGVpZ2h0OiAycHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tZHAtYWNjZW50LXN0cm9uZyk7XG4gICAgYm9yZGVyLXJhZGl1czogMnB4O1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBbMjAyNl0gQmFycmEgZm9vdGVyOiBTYWx2YSAvIFNhbHZhIGUgcmltYW5pIC8gQW5udWxsYSAvIEVsaW1pbmEgLyBEdXBsaWNhXG4gKiBTdGVzc2UgcGlsbCBhcnJvdG9uZGF0ZSBkaSBEYXRpUHJvIChfdWkyMDI2LnNjc3MpLiBTZXJ2ZSB1bmEgcmVnb2xhIGRlZGljYXRhXG4gKiBwZXJjaGUnIGJ0bl9zYXZlIGUgYnRuX3NhdmVfc3RheSBzb25vIDxpbnB1dD4gU0VOWkEgY2xhc3NlIC5idG46IGlsIHJvdW5kaW5nXG4gKiBnZW5lcmFsZSBwaXUnIHNvcHJhIG5vbiBsaSByYWdnaXVuZ2UgZSByZXN0YXZhbm8gYWwgYm9yZGVyLXJhZGl1cyAycHggZGVsXG4gKiB0ZW1hIGJhc2UgKCRidG4tYm9yZGVyLXJhZGl1cyksIGNpb2UnIHJldHRhbmdvbGFyaS5cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4uZm9vdGVyX19kYXRlc2F2ZV9fYnRuIC5vbWVnYV9fYnRuX19maXhlZCB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgbWluLWhlaWdodDogNDBweDtcbiAgICBwYWRkaW5nOiA5cHggMjJweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1kcC1yYWRpdXMtcGlsbCkgIWltcG9ydGFudDtcbiAgICBib3JkZXItd2lkdGg6IDFweDtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS1kcC10cmFuc2l0aW9uKSxcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93IHZhcigtLWRwLXRyYW5zaXRpb24pLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgdmFyKC0tZHAtdHJhbnNpdGlvbiksXG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yIHZhcigtLWRwLXRyYW5zaXRpb24pLFxuICAgICAgICAgICAgICAgIGZpbHRlciB2YXIoLS1kcC10cmFuc2l0aW9uKTtcbn1cbi5mb290ZXJfX2RhdGVzYXZlX19idG4gLm9tZWdhX19idG5fX2ZpeGVkOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tZHAtc2hhZG93LXNtKTtcbiAgICBmaWx0ZXI6IGJyaWdodG5lc3MoMS4wNCk7XG59XG4uZm9vdGVyX19kYXRlc2F2ZV9fYnRuIC5vbWVnYV9fYnRuX19maXhlZDphY3RpdmUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICBib3gtc2hhZG93OiBub25lO1xufVxuLmZvb3Rlcl9fZGF0ZXNhdmVfX2J0biAub21lZ2FfX2J0bl9fZml4ZWQ6Zm9jdXMtdmlzaWJsZSB7XG4gICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWRwLWFjY2VudC1zdHJvbmcpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG59XG5cbi8qIFRlbmRpbmUgZGkgc2NlbHRhIChTZWxlY3QyKSBhIHRlbWE6IHZlZGkgcHVibGljL2pzL3NlbGVjdDIwMjYuanMuICovXG5AaW1wb3J0ICdzZWxlY3QyMDI2JztcbiIsIi8qIExvYWRlciBjb25kaXZpc28gTG9naW5Qcm8vRGF0aVBybzogdW4gc29sbyBsaW5ndWFnZ2lvIHZpc2l2byBwZXIgYXJlYVxuICogYXV0ZW50aWNhdGEsIGxvZ2luIGUgYXppb25pIGNoZSByaWNoaWVkb25vIHVuYSBudW92YSBwYWdpbmEuICovXG4jb25sb2Fkd2FpdGluZ3BvcHVwIHtcbiAgICBwb3NpdGlvbjogZml4ZWQgIWltcG9ydGFudDtcbiAgICBpbnNldDogMDtcbiAgICB6LWluZGV4OiA5OTk5OTtcbiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcG9pbnRlci1ldmVudHM6IGFsbDtcbiAgICBiYWNrZ3JvdW5kOlxuICAgICAgICByYWRpYWwtZ3JhZGllbnQoNTIwcHggMzYwcHggYXQgNTAlIDQyJSwgcmdiYSh2YXIoLS1kcC1hY2NlbnQtc3Ryb25nLXJnYiksIC4xNiksIHRyYW5zcGFyZW50IDcyJSksXG4gICAgICAgIHJnYmEoMjQzLCAyNDcsIDI1MiwgLjc2KTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoNXB4KTtcbiAgICBvcGFjaXR5OiAwO1xuICAgIGFuaW1hdGlvbjogZHBQYWdlTG9hZGVyRW50ZXIgLjE4cyBlYXNlIC4xNHMgZm9yd2FyZHM7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMThzIGVhc2UsIHZpc2liaWxpdHkgLjE4cyBlYXNlO1xufVxuXG4jb25sb2Fkd2FpdGluZ3BvcHVwLmlzLWFjdGl2ZSB7XG4gICAgYW5pbWF0aW9uLWRlbGF5OiAwcztcbn1cblxuI29ubG9hZHdhaXRpbmdwb3B1cC5pcy1sZWF2aW5nIHtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBvcGFjaXR5OiAwO1xuICAgIGFuaW1hdGlvbjogbm9uZTtcbn1cblxuLmRwLXBhZ2UtbG9hZGVyX19zdXJmYWNlIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBtaW4td2lkdGg6IDEzMnB4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAxMnB4O1xuICAgIHBhZGRpbmc6IDEzcHggMTdweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWRwLWFjY2VudC1zdHJvbmctcmdiKSwgLjIwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1kcC1yYWRpdXMtbGcpO1xuICAgIGNvbG9yOiB2YXIoLS1kcC1uYXZ5KTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC45NCk7XG4gICAgYm94LXNoYWRvdzogMCAxNHB4IDQycHggcmdiYSgzOCwgNTYsIDc0LCAuMTgpO1xufVxuXG4uZHAtcGFnZS1sb2FkZXJfX3Jpbmcge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZsZXg6IDAgMCAzMHB4O1xuICAgIHdpZHRoOiAzMHB4O1xuICAgIGhlaWdodDogMzBweDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGJvcmRlcjogM3B4IHNvbGlkIHJnYmEodmFyKC0tZHAtYWNjZW50LXN0cm9uZy1yZ2IpLCAuMTgpO1xuICAgIGJvcmRlci10b3AtY29sb3I6IHZhcigtLWRwLWFjY2VudC1zdHJvbmcpO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBhbmltYXRpb246IGRwUGFnZUxvYWRlclNwaW4gLjc4cyBsaW5lYXIgaW5maW5pdGU7XG59XG5cbi5kcC1wYWdlLWxvYWRlcl9fbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBmb250LXdlaWdodDogNjUwO1xuICAgIGxldHRlci1zcGFjaW5nOiAuMDFlbTtcbn1cblxuLy8gQ29tcGF0aWJpbGl0YScgY29uIGdsaSBzdGF0aSBkaSBhdHRlc2EgcGljY29saSBnaWEnIHByZXNlbnRpIG8gZnV0dXJpLlxuLmRwLWlubGluZS1zcGlubmVyLFxuLmZhLXNwaW5uZXIuZmEtc3Bpbixcbi5mYS1zcGlubmVyLmZhLXB1bHNlIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDtcbiAgICBmbGV4OiAwIDAgMWVtO1xuICAgIHdpZHRoOiAxZW0gIWltcG9ydGFudDtcbiAgICBoZWlnaHQ6IDFlbSAhaW1wb3J0YW50O1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgYm9yZGVyOiAycHggc29saWQgY3VycmVudENvbG9yO1xuICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIHZlcnRpY2FsLWFsaWduOiAtLjEyZW07XG4gICAgYW5pbWF0aW9uOiBkcFBhZ2VMb2FkZXJTcGluIC43MnMgbGluZWFyIGluZmluaXRlICFpbXBvcnRhbnQ7XG59XG5cbi5mYS1zcGlubmVyLmZhLXNwaW46OmJlZm9yZSxcbi5mYS1zcGlubmVyLmZhLXB1bHNlOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnICFpbXBvcnRhbnQ7XG59XG5cbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gI29ubG9hZHdhaXRpbmdwb3B1cCB7XG4gICAgYmFja2dyb3VuZDpcbiAgICAgICAgcmFkaWFsLWdyYWRpZW50KDUyMHB4IDM2MHB4IGF0IDUwJSA0MiUsIHJnYmEodmFyKC0tZHAtYWNjZW50LXN0cm9uZy1yZ2IpLCAuMTgpLCB0cmFuc3BhcmVudCA3MiUpLFxuICAgICAgICByZ2JhKDIyLCA0NSwgNzMsIC43NCk7XG59XG5cbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLmRwLXBhZ2UtbG9hZGVyX19zdXJmYWNlIHtcbiAgICBjb2xvcjogI0JEQ0ZFNztcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDMyLCA2MSwgOTYsIC45NSk7XG4gICAgYm94LXNoYWRvdzogMCAxNnB4IDQ2cHggcmdiYSgwLCAwLCAwLCAuMzIpO1xufVxuXG5Aa2V5ZnJhbWVzIGRwUGFnZUxvYWRlckVudGVyIHtcbiAgICB0byB7IG9wYWNpdHk6IDE7IH1cbn1cblxuQGtleWZyYW1lcyBkcFBhZ2VMb2FkZXJTcGluIHtcbiAgICB0byB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH1cbn1cblxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgICAjb25sb2Fkd2FpdGluZ3BvcHVwIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgYW5pbWF0aW9uOiBub25lO1xuICAgICAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgIH1cblxuICAgICNvbmxvYWR3YWl0aW5ncG9wdXAuaXMtbGVhdmluZyB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuXG4gICAgLmRwLXBhZ2UtbG9hZGVyX19yaW5nLFxuICAgIC5kcC1pbmxpbmUtc3Bpbm5lcixcbiAgICAuZmEtc3Bpbm5lci5mYS1zcGluLFxuICAgIC5mYS1zcGlubmVyLmZhLXB1bHNlIHtcbiAgICAgICAgYW5pbWF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogTG9naW5Qcm8g4oCUIFVJL1VYIDIwMjY6IHRlbmRpbmUgZGkgc2NlbHRhIChTZWxlY3QyKSBhIHRlbWEuXG4gKlxuICogTGUgdGVuZGluZSBuYXRpdmUgbm9uIHNpIHBvc3Nvbm8gcG9ydGFyZSBuZWwgdGVtYTogbGEgbGlzdGEgYXBlcnRhIGxhXG4gKiBkaXNlZ25hIGlsIHNpc3RlbWEgb3BlcmF0aXZvIChhbmdvbGkgdml2aSwgdm9jZSBldmlkZW56aWF0YSBpbiBhenp1cnJvLCByaWdhXG4gKiB2dW90YSBpbiBjaW1hKSBlIGlsIENTUyBub24gbGEgcmFnZ2l1bmdlLiBwdWJsaWMvanMvc2VsZWN0MjAyNi5qcyBsZVxuICogc29zdGl0dWlzY2UgY29uIFNlbGVjdDI7IHF1aSBwcmVuZG9ubyBsYSBmb3JtYSwgbG8gc2ZvbmRvIGUgbCdhY2NlbnRvIGRlZ2xpXG4gKiBhbHRyaSBjYW1waSwgdXNhbmRvIGxhIHBhbGV0dGUgYmx1IGlzdGl0dXppb25hbGUgaW4gZW50cmFtYmkgaSB0ZW1pLlxuICpcbiAqIFN0ZXNzYSBpbXBvc3RhemlvbmUgZGkgRGF0aVBybyAoX3NlbGVjdC1mbHVpZC5zY3NzKSwgY29uIGkgY29sb3JpIGRlaSBjYW1waVxuICogZGkgTG9naW5Qcm86IGlsIGNhbXBvIGNoaXVzbyBkZXZlIGVzc2VyZSBpbmRpc3Rpbmd1aWJpbGUgZGEgdW4gLmZvcm0tY29udHJvbC5cbiAqXG4gKiBJbCBmb2dsaW8gZGkgU2VsZWN0MiBhcnJpdmEgZGEgY2RuanMgUFJJTUEgZGkgYXBwMjAyNi5jc3MgKGxheW91dHMvbWFpbiksIG1hXG4gKiBkb3ZlIGxhIHNwZWNpZmljaXRhJyBwYXJlZ2dpYSByZXN0YSBgIWltcG9ydGFudGA6IHNlIHVuIGdpb3JubyBsJ29yZGluZSBkZWlcbiAqIGZvZ2xpIGNhbWJpYSwgdmluY2UgY29tdW5xdWUgaWwgdGVtYS5cbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbjpyb290IHtcbiAgICAvLyBDYW1wbyBjaGl1c28gZSBjYXNlbGxhIGRpIHJpY2VyY2E6IGdsaSBzdGVzc2kgdmFsb3JpIGRlaSAuZm9ybS1jb250cm9sXG4gICAgLy8gZGVsIHRlbWEgY2hpYXJvIChtYWluLmNzcyksIG5vbiBpbCBiaWFuY28vZ3JpZ2lvIGRpIFNlbGVjdDIuXG4gICAgLS1kcC1zZWxlY3QtZmllbGQ6ICNmZmZmZmY7XG4gICAgLS1kcC1zZWxlY3QtZmllbGQtYm9yZGVyOiAjRENFQ0Y5O1xuICAgIC0tZHAtc2VsZWN0LWZpZWxkLXRleHQ6ICM0NjVEODI7XG4gICAgLS1kcC1zZWxlY3Qtc3VyZmFjZTogI2ZmZmZmZjtcbiAgICAtLWRwLXNlbGVjdC1ib3JkZXI6IHJnYmEoNzAsIDkzLCAxMzAsIC4xOCk7XG4gICAgLy8gUGFzc2FnZ2lvIGRlbCBwdW50YXRvcmUgbGVnZ2Vybywgdm9jZSBjb3JyZW50ZSBwaXUnIG1hcmNhdGEgZSBjb2wgdGFnbGlvXG4gICAgLy8gZGVsbCdhY2NlbnRvOiBnbGkgc3Rlc3NpIHJhcHBvcnRpIGRlbGxlIHZvY2kgZGVsIG1lbnUuXG4gICAgLS1kcC1zZWxlY3QtaG92ZXI6IHJnYmEodmFyKC0tZHAtYWNjZW50LXN0cm9uZy1yZ2IpLCAuMTApO1xuICAgIC0tZHAtc2VsZWN0LWhvdmVyLXRleHQ6IHZhcigtLWRwLXRleHQtdGl0bGUpO1xuICAgIC0tZHAtc2VsZWN0LXNlbGVjdGVkOiByZ2JhKHZhcigtLWRwLWFjY2VudC1zdHJvbmctcmdiKSwgLjE2KTtcbiAgICAtLWRwLXNlbGVjdC1zZWxlY3RlZC10ZXh0OiB2YXIoLS1kcC1hY2NlbnQtcmVhZGFibGUpO1xuICAgIC0tZHAtc2VsZWN0LXNoYWRvdzogMCAxMHB4IDI4cHggcmdiYSh2YXIoLS1kcC1uYXZ5LXJnYiksIC4xMik7XG59XG5cbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0ge1xuICAgIC8vIEkgY2FtcGkgZGVsIHRlbWEgc2N1cm8gdmVuZ29ubyBkYSBtYWluX3VzYS5jc3MgKCRpbnB1dC1iZywgJGJsdWUzLWRhdGFwcm8pLlxuICAgIC0tZHAtc2VsZWN0LWZpZWxkOiAjMTYyRDQ5O1xuICAgIC0tZHAtc2VsZWN0LWZpZWxkLWJvcmRlcjogIzQ2NUQ4MjtcbiAgICAtLWRwLXNlbGVjdC1maWVsZC10ZXh0OiAjQkRDRkU3O1xuICAgIC8vIElsIHBhbm5lbGxvIGUnIHVuIGdyYWRpbm8gcGl1JyBjaGlhcm8gZGVsbGEgcGFnaW5hIGJsdTogc2kgc3RhY2NhIGludmVjZVxuICAgIC8vIGRpIGNvbmZvbmRlcnNpIGNvbiBsbyBzZm9uZG8uXG4gICAgLS1kcC1zZWxlY3Qtc3VyZmFjZTogIzIwM0Q2MDtcbiAgICAtLWRwLXNlbGVjdC1ib3JkZXI6IHJnYmEoNzAsIDkzLCAxMzAsIC4yNCk7XG4gICAgLS1kcC1zZWxlY3QtaG92ZXI6IHJnYmEodmFyKC0tZHAtYWNjZW50LXN0cm9uZy1yZ2IpLCAuMTQpO1xuICAgIC0tZHAtc2VsZWN0LWhvdmVyLXRleHQ6ICM4QkI2RjE7XG4gICAgLS1kcC1zZWxlY3Qtc2VsZWN0ZWQ6IHJnYmEodmFyKC0tZHAtYWNjZW50LXN0cm9uZy1yZ2IpLCAuMjApO1xuICAgIC0tZHAtc2VsZWN0LXNoYWRvdzogMCAxMHB4IDI4cHggcmdiYSgwLCAwLCAwLCAuMzgpO1xufVxuXG4vLyAtLS0gY2FtcG8gY2hpdXNvIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0IC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIG1pbi1oZWlnaHQ6IDM1cHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZHAtc2VsZWN0LWZpZWxkLWJvcmRlcikgIWltcG9ydGFudDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1kcC1yYWRpdXMtc20pICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZHAtc2VsZWN0LWZpZWxkKSAhaW1wb3J0YW50O1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLWRwLXRyYW5zaXRpb24pLCBib3gtc2hhZG93IHZhcigtLWRwLXRyYW5zaXRpb24pO1xufVxuXG4uc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCB7XG4gICAgZmxleDogMSAxIGF1dG87XG4gICAgbWluLXdpZHRoOiAwO1xuICAgIHBhZGRpbmctbGVmdDogMTJweDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAzMHB4O1xuICAgIGNvbG9yOiB2YXIoLS1kcC1zZWxlY3QtZmllbGQtdGV4dCkgIWltcG9ydGFudDtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgbGluZS1oZWlnaHQ6IDMzcHg7XG59XG5cbi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX2Fycm93IHtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDZweDtcbiAgICBoZWlnaHQ6IDMzcHg7XG59XG5cbi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX2Fycm93IGIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZHAtdGV4dCkgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLWRwLXRyYW5zaXRpb24pO1xufVxuXG4uc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQuc2VsZWN0Mi1jb250YWluZXItLW9wZW4gLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgLnNlbGVjdDItc2VsZWN0aW9uX19hcnJvdyBiIHtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHZhcigtLWRwLWFjY2VudC1zdHJvbmcpIHRyYW5zcGFyZW50O1xufVxuXG4vLyBJbCBmdW9jbyBlIGwnYXBlcnR1cmEgaGFubm8gbCdhbmVsbG8gZGVsbCdhY2NlbnRvLCBjb21lIGkgLmZvcm0tY29udHJvbC5cbi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdC5zZWxlY3QyLWNvbnRhaW5lci0tZm9jdXMgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUsXG4uc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQuc2VsZWN0Mi1jb250YWluZXItLW9wZW4gLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZHAtYWNjZW50LXN0cm9uZykgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSh2YXIoLS1kcC1hY2NlbnQtc3Ryb25nLXJnYiksIC4xNSk7XG59XG5cbi8vIFNlbGVjdDIgc3F1YWRyYSBnbGkgYW5nb2xpIGJhc3NpIGRlbCBjYW1wbyBxdWFuZG8gbGEgdGVuZGluYSBlJyBhcGVydGEsIHBlclxuLy8gYXR0YWNjYXJjZWxhIHNvdHRvLiBMYSBub3N0cmEgdGVuZGluYSBlJyBzdGFjY2F0YTogaWwgY2FtcG8gcmVzdGEgYXJyb3RvbmRhdG8uXG4uc2VsZWN0Mi1jb250YWluZXItLW9wZW4gLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUsXG4uc2VsZWN0Mi1jb250YWluZXItLW9wZW4gLnNlbGVjdDItc2VsZWN0aW9uLS1tdWx0aXBsZSB7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tZHAtcmFkaXVzLXNtKSAhaW1wb3J0YW50O1xufVxuXG4vLyBMYSB2b2NlIHZ1b3RhIChuZXNzdW4gdmFsb3JlKSBub24gaGEgdGVzdG86IGlsIGNhbXBvIHJlc3RhIHZ1b3RvIGNvbWUgcHJpbWEuXG4uc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgLnNlbGVjdDItc2VsZWN0aW9uX19wbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHZhcigtLWRwLXRleHQpO1xuICAgIG9wYWNpdHk6IC42O1xufVxuXG4vLyBMYSBjcm9jZXR0YSBjaGUgcmlwb3J0YSBpbCBjYW1wbyBhIHZ1b3RvOiBkaXNjcmV0YSwgYWNjZW50byBhbCBwYXNzYWdnaW8uXG4uc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgLnNlbGVjdDItc2VsZWN0aW9uX19jbGVhciB7XG4gICAgbWFyZ2luLXJpZ2h0OiA0cHg7XG4gICAgcGFkZGluZzogMCA0cHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tZHAtcmFkaXVzLXNtKTtcbiAgICBjb2xvcjogdmFyKC0tZHAtdGV4dCk7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgb3BhY2l0eTogLjc7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tZHAtdHJhbnNpdGlvbiksIG9wYWNpdHkgdmFyKC0tZHAtdHJhbnNpdGlvbiksIGJhY2tncm91bmQtY29sb3IgdmFyKC0tZHAtdHJhbnNpdGlvbik7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWRwLWFjY2VudC1yZWFkYWJsZSk7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWRwLXNlbGVjdC1ob3Zlcik7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxufVxuXG4vLyBDYW1wbyBkaXNhYmlsaXRhdG8gKGVzLiBsaW1pdGUgbGVnYXRvIGEgdW4gcGVybWVzc28gbm9uIGNvbmNlc3NvKS5cbi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdC5zZWxlY3QyLWNvbnRhaW5lci0tZGlzYWJsZWQgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUge1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgb3BhY2l0eTogLjY7XG59XG5cbi8vIC0tLSBwYW5uZWxsbyBhcGVydG8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4uc2VsZWN0Mi1kcm9wZG93bi5zZWxlY3QyLWRyb3Bkb3duIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWRwLXNlbGVjdC1ib3JkZXIpICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tZHAtcmFkaXVzKSAhaW1wb3J0YW50O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWRwLXNlbGVjdC1zdXJmYWNlKSAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IHZhcigtLWRwLXNlbGVjdC1zaGFkb3cpO1xufVxuXG4vLyBTdGFjY2F0YSBkYWwgY2FtcG86IHNpIGxlZ2dlIGNvbWUgdW4gcGFubmVsbG8gY2hlIGdhbGxlZ2dpYS5cbi5zZWxlY3QyLWRyb3Bkb3duLS1iZWxvdy5zZWxlY3QyLWRyb3Bkb3duLS1iZWxvdyB7IG1hcmdpbi10b3A6IDRweDsgfVxuLnNlbGVjdDItZHJvcGRvd24tLWFib3ZlLnNlbGVjdDItZHJvcGRvd24tLWFib3ZlIHsgbWFyZ2luLXRvcDogLTRweDsgfVxuXG4vLyAtLS0gcmljZXJjYSBkZW50cm8gbGEgdGVuZGluYSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4uc2VsZWN0Mi1zZWFyY2gtLWRyb3Bkb3duLnNlbGVjdDItc2VhcmNoLS1kcm9wZG93biB7XG4gICAgcGFkZGluZzogOHB4O1xufVxuXG4uc2VsZWN0Mi1zZWFyY2gtLWRyb3Bkb3duIC5zZWxlY3QyLXNlYXJjaF9fZmllbGQge1xuICAgIHBhZGRpbmc6IDdweCAxMHB4ICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZHAtc2VsZWN0LWZpZWxkLWJvcmRlcikgIWltcG9ydGFudDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1kcC1yYWRpdXMtc20pICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZHAtc2VsZWN0LWZpZWxkKSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiB2YXIoLS1kcC1zZWxlY3QtZmllbGQtdGV4dCkgIWltcG9ydGFudDtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLWRwLXRyYW5zaXRpb24pLCBib3gtc2hhZG93IHZhcigtLWRwLXRyYW5zaXRpb24pO1xuXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZHAtYWNjZW50LXN0cm9uZykgIWltcG9ydGFudDtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEodmFyKC0tZHAtYWNjZW50LXN0cm9uZy1yZ2IpLCAuMTQpO1xuICAgIH1cbn1cblxuLy8gLS0tIHZvY2kgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8gVW4gZmlsbyBkaSByZXNwaXJvIHNvdHRvOiBzZW56YSwgbCd1bHRpbWEgdm9jZSBhcnJpdmF2YSBhIGZpbG8gZGVsIGJvcmRvIGUgaWxcbi8vIHBhbm5lbGxvIHNlbWJyYXZhIHRhZ2xpYXRvLlxuLnNlbGVjdDItcmVzdWx0cyB7XG4gICAgcGFkZGluZy1ib3R0b206IDRweDtcbn1cblxuLnNlbGVjdDItcmVzdWx0c19fb3B0aW9ucyB7XG4gICAgbWF4LWhlaWdodDogMjg4cHggIWltcG9ydGFudDtcbiAgICBwYWRkaW5nOiA0cHggMCAhaW1wb3J0YW50O1xuICAgIC8vIEJhcnJhIGRpIHNjb3JyaW1lbnRvIHNvdHRpbGUgZSBuZWwgY29sb3JlIGRlbGwnYWNjZW50bzogcXVlbGxhIGRpIHNpc3RlbWFcbiAgICAvLyBlJyBsYXJnYSBlIHNiYXR0ZSBjb250cm8gbCdhbmdvbG8gYXJyb3RvbmRhdG8gZGVsIHBhbm5lbGxvLlxuICAgIHNjcm9sbGJhci13aWR0aDogdGhpbjtcbiAgICBzY3JvbGxiYXItY29sb3I6IHJnYmEodmFyKC0tZHAtYWNjZW50LXN0cm9uZy1yZ2IpLCAuNDUpIHRyYW5zcGFyZW50O1xuXG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgICB3aWR0aDogOHB4O1xuICAgIH1cblxuICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgfVxuXG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgICAgICBib3JkZXI6IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tZHAtcmFkaXVzLXBpbGwpO1xuICAgICAgICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWRwLWFjY2VudC1zdHJvbmctcmdiKSwgLjQ1KTtcbiAgICB9XG59XG5cbi5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbiB7XG4gICAgbWFyZ2luOiAxcHggNHB4O1xuICAgIHBhZGRpbmc6IDdweCAxMHB4ICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tZHAtcmFkaXVzLXNtKTtcbiAgICBjb2xvcjogdmFyKC0tZHAtc2VsZWN0LWZpZWxkLXRleHQpO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLWRwLXRyYW5zaXRpb24pLCBjb2xvciB2YXIoLS1kcC10cmFuc2l0aW9uKTtcbn1cblxuLy8gVm9jZSBzb3R0byBhbCBwdW50YXRvcmU6IGwnYWNjZW50byBkZWwgdGVtYSBhbCBwb3N0byBkZWxsJ2F6enVycm8gZGkgU2VsZWN0Mi5cbi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLWhpZ2hsaWdodGVkW2FyaWEtc2VsZWN0ZWRdLFxuLnNlbGVjdDItY29udGFpbmVyLS1jbGFzc2ljIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0taGlnaGxpZ2h0ZWRbYXJpYS1zZWxlY3RlZF0ge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWRwLXNlbGVjdC1ob3ZlcikgIWltcG9ydGFudDtcbiAgICBjb2xvcjogdmFyKC0tZHAtc2VsZWN0LWhvdmVyLXRleHQpICFpbXBvcnRhbnQ7XG59XG5cbi8vIFZvY2UgZ2lhJyBzY2VsdGE6IHRhZ2xpbyBkZWxsJ2FjY2VudG8gZSB0ZXN0byBjb2xvcmF0by4gU3RhIERPUE8gaWwgcGFzc2FnZ2lvXG4vLyBkZWwgcHVudGF0b3JlIHBlcmNoZScgYWxsJ2FwZXJ0dXJhIGxhIHZvY2UgY29ycmVudGUgZScgYW5jaGUgcXVlbGxhXG4vLyBldmlkZW56aWF0YSwgZSBkZXZlIHJlc3RhcmUgcmljb25vc2NpYmlsZS5cbi5zZWxlY3QyLXJlc3VsdHNfX29wdGlvblthcmlhLXNlbGVjdGVkPVwidHJ1ZVwiXSxcbi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLWhpZ2hsaWdodGVkW2FyaWEtc2VsZWN0ZWQ9XCJ0cnVlXCJdLFxuLnNlbGVjdDItY29udGFpbmVyLS1jbGFzc2ljIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0taGlnaGxpZ2h0ZWRbYXJpYS1zZWxlY3RlZD1cInRydWVcIl0ge1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDNweCAwIDAgdmFyKC0tZHAtYWNjZW50LXN0cm9uZyk7XG4gICAgY29sb3I6IHZhcigtLWRwLXNlbGVjdC1zZWxlY3RlZC10ZXh0KSAhaW1wb3J0YW50O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb25bYXJpYS1zZWxlY3RlZD1cInRydWVcIl06bm90KC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0taGlnaGxpZ2h0ZWQpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1kcC1zZWxlY3Qtc2VsZWN0ZWQpICFpbXBvcnRhbnQ7XG59XG5cbi8vIFwiTmVzc3VuIHJpc3VsdGF0b1wiIG5vbiBlJyB1bmEgdm9jZSBkYSBzY2VnbGllcmUuXG4uc2VsZWN0Mi1yZXN1bHRzX19tZXNzYWdlIHtcbiAgICBwYWRkaW5nOiA4cHggMTJweDtcbiAgICBjb2xvcjogdmFyKC0tZHAtdGV4dCk7XG4gICAgb3BhY2l0eTogLjc1O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==*/