@charset "UTF-8";
/************/
/*  Shades  */
/************/
/*
@mixin heading($fs, $color: $heading-color-default, $lh: $heading-line-height, $ls: $heading-letter-spacing-default) {
  font-size: $fs;
  color: $color;

  font-family: $heading-font-family;
  text-transform: $heading-text-transform;
  letter-spacing: $ls;
  font-weight: $heading-font-weight;
  line-height: $lh;

  text-wrap: balance;
}
*/
@font-face {
  font-family: "Ophian";
  src: url("../fonts/Ophian-Regular-webfont.woff2") format("woff2"), url("../fonts/Ophian-Regular-webfont.woff") format("woff"), url("../fonts/Ophian-Regular-webfont.ttf") format("truetype");
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Ophian";
  src: url("../fonts/Ophian-Bold-webfont.woff2") format("woff2"), url("../fonts/Ophian-Bold-webfont.woff") format("woff"), url("../fonts/Ophian-Bold-webfont.ttf") format("truetype");
  font-weight: bold;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Ophian";
  src: url("../fonts/Ophian-Italic-webfont.woff2") format("woff2"), url("../fonts/Ophian-Italic-webfont.woff") format("woff"), url("../fonts/Ophian-Italic-webfont.ttf") format("truetype");
  font-weight: normal;
  font-style: italic;
  font-display: swap;
}
@font-face {
  font-family: "Ophian";
  src: url("../fonts/Ophian-BoldItalic-webfont.woff2") format("woff2"), url("../fonts/Ophian-BoldItalic-webfont.woff") format("woff"), url("../fonts/Ophian-BoldItalic-webfont.ttf") format("truetype");
  font-weight: bold;
  font-style: italic;
  font-display: swap;
}
*,
*::before,
*::after {
  box-sizing: border-box;
}

* {
  margin: 0;
  padding: 0;
  font: inherit;
}

img,
picture,
svg {
  display: block;
  max-width: 100%;
}

textarea {
  resize: vertical;
}

html {
  scroll-behavior: smooth;
  scroll-padding-block: 2rem;
}

body {
  font-family: "Petrona", serif;
  font-size: var(--fs-0);
  line-height: 1.4;
  font-weight: 400;
  font-optical-sizing: auto;
  letter-spacing: -0.01em;
  background-color: var(--accent-light);
  color: var(--text);
}

main {
  overflow-x: clip;
}

b,
strong {
  font-weight: bold;
}

em {
  font-style: italic;
}

ul,
ol {
  list-style: none;
}

hr {
  border: none;
  border-bottom: 1px solid var(--border);
}

:root {
  accent-color: var(--secondary);
}

:focus:not(:focus-visible) {
  outline: none;
}

:focus-visible {
  outline: 1px dotted var(--secondary);
  outline-offset: 0.375em;
}

::selection {
  background: var(--accent);
  color: var(--text);
}

/* Static arrow icon (same shape as .button__arrow): */
.arrow {
  position: relative;
  display: inline-block;
  height: 0.5em;
  width: 1em;
}
.arrow:before {
  content: "";
  position: absolute;
  top: 50%;
  left: 0;
  right: 0.2em;
  height: 1px;
  transform: translateY(-50%);
  background-color: currentColor;
}
.arrow:after {
  content: "";
  position: absolute;
  inset: 0;
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 17 8' fill='none'%3E%3Cpath d='M11 0C11 2 15 4 15 4C15 4 11 6 11 8' stroke='%23CB333B'/%3E%3C/svg%3E");
  mask-size: contain;
  mask-position: center right;
  mask-repeat: no-repeat;
  background-color: currentColor;
}

/*********************************************/
/*

// WPML unwanted banner
.otgs-development-site-front-end {
  display: none;
  background-color: red !important;
}
*/
.fancybox__container {
  z-index: 99999;
}

:root {
  --ff-base: Petrona, serif;
  --ff-heading: Ophian, Petrona, Georgia, serif;
  --gutter: 1rem;
  --fa-li-margin: 1.6em;
  --white: white;
  --black: black;
  --primary: #512F2E;
  --primary-dark: #281B1B;
  --secondary: #CB333B;
  --accent: #F1E6B2;
  --accent-light: #FDFBF2;
  --text: #3D3131;
  --border: #DBDBDB;
  --success: #00A86B;
  --error: #E71346;
  --info: #FFB340;
  --greyscale-950: hsl(0, 0%, 93%);
  --greyscale-900: hsl(0, 0%, 88%);
  --greyscale-850: hsl(0, 0%, 83%);
  --greyscale-800: hsl(0, 0%, 78%);
  --greyscale-750: hsl(0, 0%, 73%);
  --greyscale-700: hsl(0, 0%, 68%);
  --greyscale-650: hsl(0, 0%, 63%);
  --greyscale-600: hsl(0, 0%, 58%);
  --greyscale-550: hsl(0, 0%, 53%);
  --greyscale-500: hsl(0, 0%, 48%);
  --greyscale-450: hsl(0, 0%, 43%);
  --greyscale-400: hsl(0, 0%, 38%);
  --greyscale-350: hsl(0, 0%, 33%);
  --greyscale-300: hsl(0, 0%, 28%);
  --greyscale-250: hsl(0, 0%, 23%);
  --greyscale-200: hsl(0, 0%, 18%);
  --greyscale-150: hsl(0, 0%, 13%);
  --greyscale-100: hsl(0, 0%, 8%);
  --greyscale-50: hsl(0, 0%, 3%);
  /* @link https://utopia.fyi/type/calculator/?c=600,16,1.25,1440,16,1.333,3,1,&s=0.75|0.5|0.25,1.5|2|3|4|6,s-l&g=s,l,xl,12 */
  --fs--2: clamp(0.64rem, 0.8515rem + -0.273vw, 0.7901rem);
  --fs--1: clamp(0.8rem, 0.9253rem + -0.1616vw, 0.8889rem);
  --fs-0: clamp(1rem, 1rem + 0vw, 1rem);
  --fs-1: clamp(1.125rem, 1.0739rem + 0.2273vw, 1.25rem);
  --fs-2: clamp(1.2656rem, 1.1442rem + 0.5398vw, 1.5625rem);
  --fs-3: clamp(1.4238rem, 1.2073rem + 0.9624vw, 1.9531rem);
  --fs-4: clamp(1.6018rem, 1.2583rem + 1.5265vw, 2.4414rem);
  --fs-5: clamp(1.802rem, 1.2908rem + 2.2722vw, 3.0518rem);
  --fs-6: clamp(2.0273rem, 1.2961rem + 3.2498vw, 3.8147rem);
  /* @link https://utopia.fyi/space/calculator?c=320,16,1.2,1440,16,1.25,5,2,&s=0.5,1.5|2.5|3.5|5|6.5,2xs-l|2xl-5xl|2xl-4xl|l-3xl&g=s,l,xl,NaN */
  --2xs: clamp(0.5rem, 0.5rem + 0vw, 0.5rem);
  --xs: clamp(0.25rem, 0.25rem + 0vw, 0.25rem);
  --s: clamp(1rem, 1rem + 0vw, 1rem);
  --m: clamp(1.5rem, 1.5rem + 0vw, 1.5rem);
  --l: clamp(2.5rem, 2.5rem + 0vw, 2.5rem);
  --xl: clamp(3.5rem, 3.5rem + 0vw, 3.5rem);
  --2xl: clamp(5rem, 5rem + 0vw, 5rem);
  --3xl: clamp(7.5rem, 7.5rem + 0vw, 7.5rem);
  --2xs-xs: clamp(0.25rem, 0.6786rem + -0.4762vw, 0.5rem);
  --xs-s: clamp(0.25rem, -0.2857rem + 1.4286vw, 1rem);
  --s-m: clamp(1rem, 0.6429rem + 0.9524vw, 1.5rem);
  --m-l: clamp(1.5rem, 0.7857rem + 1.9048vw, 2.5rem);
  --l-xl: clamp(2.5rem, 1.7857rem + 1.9048vw, 3.5rem);
  --xl-2xl: clamp(3.5rem, 2.4286rem + 2.8571vw, 5rem);
  --2xl-3xl: clamp(5rem, 3.2143rem + 4.7619vw, 7.5rem);
}
@media screen and (min-width: 62rem) {
  :root {
    --gutter: var(--gutter, var(--s));
  }
}

.container {
  --padding: clamp(max(1rem, env(safe-area-inset-left)), 4vw, 1.5rem) * 2;
  --max-width: 85rem;
  width: min(100% - var(--padding, calc(clamp(max(1rem, env(safe-area-inset-left)), 4vw, 1.5rem) * 2)), var(--max-width, 85rem));
  margin-inline: auto;
  /* --max-widths: see _sizes.scss */
}
.container--narrow {
  --max-width: 43.75rem;
}
.container--wide {
  --max-width: 95rem;
}

/* .region must be before margin and padding */
.region {
  padding-block: var(--2xl-3xl);
}

.m-2xs {
  margin: clamp(0.5rem, 0.5rem + 0vw, 0.5rem);
}
.my-start-2xs {
  margin-block-start: clamp(0.5rem, 0.5rem + 0vw, 0.5rem);
}
.my-end-2xs {
  margin-block-end: clamp(0.5rem, 0.5rem + 0vw, 0.5rem);
}
.my-2xs {
  margin-block: clamp(0.5rem, 0.5rem + 0vw, 0.5rem);
}
.mx-start-2xs {
  margin-inline-start: clamp(0.5rem, 0.5rem + 0vw, 0.5rem);
}
.mx-end-2xs {
  margin-inline-end: clamp(0.5rem, 0.5rem + 0vw, 0.5rem);
}
.mx-2xs {
  margin-inline: clamp(0.5rem, 0.5rem + 0vw, 0.5rem);
}

.p-2xs {
  padding: clamp(0.5rem, 0.5rem + 0vw, 0.5rem);
}
.py-start-2xs {
  padding-block-start: clamp(0.5rem, 0.5rem + 0vw, 0.5rem);
}
.py-end-2xs {
  padding-block-end: clamp(0.5rem, 0.5rem + 0vw, 0.5rem);
}
.py-2xs {
  padding-block: clamp(0.5rem, 0.5rem + 0vw, 0.5rem);
}
.px-start-2xs {
  padding-inline-start: clamp(0.5rem, 0.5rem + 0vw, 0.5rem);
}
.px-end-2xs {
  padding-inline-end: clamp(0.5rem, 0.5rem + 0vw, 0.5rem);
}
.px-2xs {
  padding-inline: clamp(0.5rem, 0.5rem + 0vw, 0.5rem);
}

.m-xs {
  margin: clamp(0.25rem, 0.25rem + 0vw, 0.25rem);
}
.my-start-xs {
  margin-block-start: clamp(0.25rem, 0.25rem + 0vw, 0.25rem);
}
.my-end-xs {
  margin-block-end: clamp(0.25rem, 0.25rem + 0vw, 0.25rem);
}
.my-xs {
  margin-block: clamp(0.25rem, 0.25rem + 0vw, 0.25rem);
}
.mx-start-xs {
  margin-inline-start: clamp(0.25rem, 0.25rem + 0vw, 0.25rem);
}
.mx-end-xs {
  margin-inline-end: clamp(0.25rem, 0.25rem + 0vw, 0.25rem);
}
.mx-xs {
  margin-inline: clamp(0.25rem, 0.25rem + 0vw, 0.25rem);
}

.p-xs {
  padding: clamp(0.25rem, 0.25rem + 0vw, 0.25rem);
}
.py-start-xs {
  padding-block-start: clamp(0.25rem, 0.25rem + 0vw, 0.25rem);
}
.py-end-xs {
  padding-block-end: clamp(0.25rem, 0.25rem + 0vw, 0.25rem);
}
.py-xs {
  padding-block: clamp(0.25rem, 0.25rem + 0vw, 0.25rem);
}
.px-start-xs {
  padding-inline-start: clamp(0.25rem, 0.25rem + 0vw, 0.25rem);
}
.px-end-xs {
  padding-inline-end: clamp(0.25rem, 0.25rem + 0vw, 0.25rem);
}
.px-xs {
  padding-inline: clamp(0.25rem, 0.25rem + 0vw, 0.25rem);
}

.m-s {
  margin: clamp(1rem, 1rem + 0vw, 1rem);
}
.my-start-s {
  margin-block-start: clamp(1rem, 1rem + 0vw, 1rem);
}
.my-end-s {
  margin-block-end: clamp(1rem, 1rem + 0vw, 1rem);
}
.my-s {
  margin-block: clamp(1rem, 1rem + 0vw, 1rem);
}
.mx-start-s {
  margin-inline-start: clamp(1rem, 1rem + 0vw, 1rem);
}
.mx-end-s {
  margin-inline-end: clamp(1rem, 1rem + 0vw, 1rem);
}
.mx-s {
  margin-inline: clamp(1rem, 1rem + 0vw, 1rem);
}

.p-s {
  padding: clamp(1rem, 1rem + 0vw, 1rem);
}
.py-start-s {
  padding-block-start: clamp(1rem, 1rem + 0vw, 1rem);
}
.py-end-s {
  padding-block-end: clamp(1rem, 1rem + 0vw, 1rem);
}
.py-s {
  padding-block: clamp(1rem, 1rem + 0vw, 1rem);
}
.px-start-s {
  padding-inline-start: clamp(1rem, 1rem + 0vw, 1rem);
}
.px-end-s {
  padding-inline-end: clamp(1rem, 1rem + 0vw, 1rem);
}
.px-s {
  padding-inline: clamp(1rem, 1rem + 0vw, 1rem);
}

.m-m {
  margin: clamp(1.5rem, 1.5rem + 0vw, 1.5rem);
}
.my-start-m {
  margin-block-start: clamp(1.5rem, 1.5rem + 0vw, 1.5rem);
}
.my-end-m {
  margin-block-end: clamp(1.5rem, 1.5rem + 0vw, 1.5rem);
}
.my-m {
  margin-block: clamp(1.5rem, 1.5rem + 0vw, 1.5rem);
}
.mx-start-m {
  margin-inline-start: clamp(1.5rem, 1.5rem + 0vw, 1.5rem);
}
.mx-end-m {
  margin-inline-end: clamp(1.5rem, 1.5rem + 0vw, 1.5rem);
}
.mx-m {
  margin-inline: clamp(1.5rem, 1.5rem + 0vw, 1.5rem);
}

.p-m {
  padding: clamp(1.5rem, 1.5rem + 0vw, 1.5rem);
}
.py-start-m {
  padding-block-start: clamp(1.5rem, 1.5rem + 0vw, 1.5rem);
}
.py-end-m {
  padding-block-end: clamp(1.5rem, 1.5rem + 0vw, 1.5rem);
}
.py-m {
  padding-block: clamp(1.5rem, 1.5rem + 0vw, 1.5rem);
}
.px-start-m {
  padding-inline-start: clamp(1.5rem, 1.5rem + 0vw, 1.5rem);
}
.px-end-m {
  padding-inline-end: clamp(1.5rem, 1.5rem + 0vw, 1.5rem);
}
.px-m {
  padding-inline: clamp(1.5rem, 1.5rem + 0vw, 1.5rem);
}

.m-l {
  margin: clamp(2.5rem, 2.5rem + 0vw, 2.5rem);
}
.my-start-l {
  margin-block-start: clamp(2.5rem, 2.5rem + 0vw, 2.5rem);
}
.my-end-l {
  margin-block-end: clamp(2.5rem, 2.5rem + 0vw, 2.5rem);
}
.my-l {
  margin-block: clamp(2.5rem, 2.5rem + 0vw, 2.5rem);
}
.mx-start-l {
  margin-inline-start: clamp(2.5rem, 2.5rem + 0vw, 2.5rem);
}
.mx-end-l {
  margin-inline-end: clamp(2.5rem, 2.5rem + 0vw, 2.5rem);
}
.mx-l {
  margin-inline: clamp(2.5rem, 2.5rem + 0vw, 2.5rem);
}

.p-l {
  padding: clamp(2.5rem, 2.5rem + 0vw, 2.5rem);
}
.py-start-l {
  padding-block-start: clamp(2.5rem, 2.5rem + 0vw, 2.5rem);
}
.py-end-l {
  padding-block-end: clamp(2.5rem, 2.5rem + 0vw, 2.5rem);
}
.py-l {
  padding-block: clamp(2.5rem, 2.5rem + 0vw, 2.5rem);
}
.px-start-l {
  padding-inline-start: clamp(2.5rem, 2.5rem + 0vw, 2.5rem);
}
.px-end-l {
  padding-inline-end: clamp(2.5rem, 2.5rem + 0vw, 2.5rem);
}
.px-l {
  padding-inline: clamp(2.5rem, 2.5rem + 0vw, 2.5rem);
}

.m-xl {
  margin: clamp(3.5rem, 3.5rem + 0vw, 3.5rem);
}
.my-start-xl {
  margin-block-start: clamp(3.5rem, 3.5rem + 0vw, 3.5rem);
}
.my-end-xl {
  margin-block-end: clamp(3.5rem, 3.5rem + 0vw, 3.5rem);
}
.my-xl {
  margin-block: clamp(3.5rem, 3.5rem + 0vw, 3.5rem);
}
.mx-start-xl {
  margin-inline-start: clamp(3.5rem, 3.5rem + 0vw, 3.5rem);
}
.mx-end-xl {
  margin-inline-end: clamp(3.5rem, 3.5rem + 0vw, 3.5rem);
}
.mx-xl {
  margin-inline: clamp(3.5rem, 3.5rem + 0vw, 3.5rem);
}

.p-xl {
  padding: clamp(3.5rem, 3.5rem + 0vw, 3.5rem);
}
.py-start-xl {
  padding-block-start: clamp(3.5rem, 3.5rem + 0vw, 3.5rem);
}
.py-end-xl {
  padding-block-end: clamp(3.5rem, 3.5rem + 0vw, 3.5rem);
}
.py-xl {
  padding-block: clamp(3.5rem, 3.5rem + 0vw, 3.5rem);
}
.px-start-xl {
  padding-inline-start: clamp(3.5rem, 3.5rem + 0vw, 3.5rem);
}
.px-end-xl {
  padding-inline-end: clamp(3.5rem, 3.5rem + 0vw, 3.5rem);
}
.px-xl {
  padding-inline: clamp(3.5rem, 3.5rem + 0vw, 3.5rem);
}

.m-2xl {
  margin: clamp(5rem, 5rem + 0vw, 5rem);
}
.my-start-2xl {
  margin-block-start: clamp(5rem, 5rem + 0vw, 5rem);
}
.my-end-2xl {
  margin-block-end: clamp(5rem, 5rem + 0vw, 5rem);
}
.my-2xl {
  margin-block: clamp(5rem, 5rem + 0vw, 5rem);
}
.mx-start-2xl {
  margin-inline-start: clamp(5rem, 5rem + 0vw, 5rem);
}
.mx-end-2xl {
  margin-inline-end: clamp(5rem, 5rem + 0vw, 5rem);
}
.mx-2xl {
  margin-inline: clamp(5rem, 5rem + 0vw, 5rem);
}

.p-2xl {
  padding: clamp(5rem, 5rem + 0vw, 5rem);
}
.py-start-2xl {
  padding-block-start: clamp(5rem, 5rem + 0vw, 5rem);
}
.py-end-2xl {
  padding-block-end: clamp(5rem, 5rem + 0vw, 5rem);
}
.py-2xl {
  padding-block: clamp(5rem, 5rem + 0vw, 5rem);
}
.px-start-2xl {
  padding-inline-start: clamp(5rem, 5rem + 0vw, 5rem);
}
.px-end-2xl {
  padding-inline-end: clamp(5rem, 5rem + 0vw, 5rem);
}
.px-2xl {
  padding-inline: clamp(5rem, 5rem + 0vw, 5rem);
}

.m-3xl {
  margin: clamp(7.5rem, 7.5rem + 0vw, 7.5rem);
}
.my-start-3xl {
  margin-block-start: clamp(7.5rem, 7.5rem + 0vw, 7.5rem);
}
.my-end-3xl {
  margin-block-end: clamp(7.5rem, 7.5rem + 0vw, 7.5rem);
}
.my-3xl {
  margin-block: clamp(7.5rem, 7.5rem + 0vw, 7.5rem);
}
.mx-start-3xl {
  margin-inline-start: clamp(7.5rem, 7.5rem + 0vw, 7.5rem);
}
.mx-end-3xl {
  margin-inline-end: clamp(7.5rem, 7.5rem + 0vw, 7.5rem);
}
.mx-3xl {
  margin-inline: clamp(7.5rem, 7.5rem + 0vw, 7.5rem);
}

.p-3xl {
  padding: clamp(7.5rem, 7.5rem + 0vw, 7.5rem);
}
.py-start-3xl {
  padding-block-start: clamp(7.5rem, 7.5rem + 0vw, 7.5rem);
}
.py-end-3xl {
  padding-block-end: clamp(7.5rem, 7.5rem + 0vw, 7.5rem);
}
.py-3xl {
  padding-block: clamp(7.5rem, 7.5rem + 0vw, 7.5rem);
}
.px-start-3xl {
  padding-inline-start: clamp(7.5rem, 7.5rem + 0vw, 7.5rem);
}
.px-end-3xl {
  padding-inline-end: clamp(7.5rem, 7.5rem + 0vw, 7.5rem);
}
.px-3xl {
  padding-inline: clamp(7.5rem, 7.5rem + 0vw, 7.5rem);
}

.m-auto {
  margin: auto;
}
.my-start-auto {
  margin-block-start: auto;
}
.my-end-auto {
  margin-block-end: auto;
}
.my-auto {
  margin-block: auto;
}
.mx-start-auto {
  margin-inline-start: auto;
}
.mx-end-auto {
  margin-inline-end: auto;
}
.mx-auto {
  margin-inline: auto;
}

.p-auto {
  padding: auto;
}
.py-start-auto {
  padding-block-start: auto;
}
.py-end-auto {
  padding-block-end: auto;
}
.py-auto {
  padding-block: auto;
}
.px-start-auto {
  padding-inline-start: auto;
}
.px-end-auto {
  padding-inline-end: auto;
}
.px-auto {
  padding-inline: auto;
}

/* the simple approach */
.m-r0 {
  margin: 0rem;
}
.my-start-r0 {
  margin-block-start: 0rem;
}
.my-end-r0 {
  margin-block-end: 0rem;
}
.my-r0 {
  margin-block: 0rem;
}
.mx-start-r0 {
  margin-inline-start: 0rem;
}
.mx-end-r0 {
  margin-inline-end: 0rem;
}
.mx-r0 {
  margin-inline: 0rem;
}

.p-r0 {
  padding: 0rem;
}
.py-start-r0 {
  padding-block-start: 0rem;
}
.py-end-r0 {
  padding-block-end: 0rem;
}
.py-r0 {
  padding-block: 0rem;
}
.px-start-r0 {
  padding-inline-start: 0rem;
}
.px-end-r0 {
  padding-inline-end: 0rem;
}
.px-r0 {
  padding-inline: 0rem;
}

.m-r025 {
  margin: 0.25rem;
}
.my-start-r025 {
  margin-block-start: 0.25rem;
}
.my-end-r025 {
  margin-block-end: 0.25rem;
}
.my-r025 {
  margin-block: 0.25rem;
}
.mx-start-r025 {
  margin-inline-start: 0.25rem;
}
.mx-end-r025 {
  margin-inline-end: 0.25rem;
}
.mx-r025 {
  margin-inline: 0.25rem;
}

.p-r025 {
  padding: 0.25rem;
}
.py-start-r025 {
  padding-block-start: 0.25rem;
}
.py-end-r025 {
  padding-block-end: 0.25rem;
}
.py-r025 {
  padding-block: 0.25rem;
}
.px-start-r025 {
  padding-inline-start: 0.25rem;
}
.px-end-r025 {
  padding-inline-end: 0.25rem;
}
.px-r025 {
  padding-inline: 0.25rem;
}

.m-r05 {
  margin: 0.5rem;
}
.my-start-r05 {
  margin-block-start: 0.5rem;
}
.my-end-r05 {
  margin-block-end: 0.5rem;
}
.my-r05 {
  margin-block: 0.5rem;
}
.mx-start-r05 {
  margin-inline-start: 0.5rem;
}
.mx-end-r05 {
  margin-inline-end: 0.5rem;
}
.mx-r05 {
  margin-inline: 0.5rem;
}

.p-r05 {
  padding: 0.5rem;
}
.py-start-r05 {
  padding-block-start: 0.5rem;
}
.py-end-r05 {
  padding-block-end: 0.5rem;
}
.py-r05 {
  padding-block: 0.5rem;
}
.px-start-r05 {
  padding-inline-start: 0.5rem;
}
.px-end-r05 {
  padding-inline-end: 0.5rem;
}
.px-r05 {
  padding-inline: 0.5rem;
}

.m-r075 {
  margin: 0.75rem;
}
.my-start-r075 {
  margin-block-start: 0.75rem;
}
.my-end-r075 {
  margin-block-end: 0.75rem;
}
.my-r075 {
  margin-block: 0.75rem;
}
.mx-start-r075 {
  margin-inline-start: 0.75rem;
}
.mx-end-r075 {
  margin-inline-end: 0.75rem;
}
.mx-r075 {
  margin-inline: 0.75rem;
}

.p-r075 {
  padding: 0.75rem;
}
.py-start-r075 {
  padding-block-start: 0.75rem;
}
.py-end-r075 {
  padding-block-end: 0.75rem;
}
.py-r075 {
  padding-block: 0.75rem;
}
.px-start-r075 {
  padding-inline-start: 0.75rem;
}
.px-end-r075 {
  padding-inline-end: 0.75rem;
}
.px-r075 {
  padding-inline: 0.75rem;
}

.m-r1 {
  margin: 1rem;
}
.my-start-r1 {
  margin-block-start: 1rem;
}
.my-end-r1 {
  margin-block-end: 1rem;
}
.my-r1 {
  margin-block: 1rem;
}
.mx-start-r1 {
  margin-inline-start: 1rem;
}
.mx-end-r1 {
  margin-inline-end: 1rem;
}
.mx-r1 {
  margin-inline: 1rem;
}

.p-r1 {
  padding: 1rem;
}
.py-start-r1 {
  padding-block-start: 1rem;
}
.py-end-r1 {
  padding-block-end: 1rem;
}
.py-r1 {
  padding-block: 1rem;
}
.px-start-r1 {
  padding-inline-start: 1rem;
}
.px-end-r1 {
  padding-inline-end: 1rem;
}
.px-r1 {
  padding-inline: 1rem;
}

.m-r125 {
  margin: 1.25rem;
}
.my-start-r125 {
  margin-block-start: 1.25rem;
}
.my-end-r125 {
  margin-block-end: 1.25rem;
}
.my-r125 {
  margin-block: 1.25rem;
}
.mx-start-r125 {
  margin-inline-start: 1.25rem;
}
.mx-end-r125 {
  margin-inline-end: 1.25rem;
}
.mx-r125 {
  margin-inline: 1.25rem;
}

.p-r125 {
  padding: 1.25rem;
}
.py-start-r125 {
  padding-block-start: 1.25rem;
}
.py-end-r125 {
  padding-block-end: 1.25rem;
}
.py-r125 {
  padding-block: 1.25rem;
}
.px-start-r125 {
  padding-inline-start: 1.25rem;
}
.px-end-r125 {
  padding-inline-end: 1.25rem;
}
.px-r125 {
  padding-inline: 1.25rem;
}

.m-r15 {
  margin: 1.5rem;
}
.my-start-r15 {
  margin-block-start: 1.5rem;
}
.my-end-r15 {
  margin-block-end: 1.5rem;
}
.my-r15 {
  margin-block: 1.5rem;
}
.mx-start-r15 {
  margin-inline-start: 1.5rem;
}
.mx-end-r15 {
  margin-inline-end: 1.5rem;
}
.mx-r15 {
  margin-inline: 1.5rem;
}

.p-r15 {
  padding: 1.5rem;
}
.py-start-r15 {
  padding-block-start: 1.5rem;
}
.py-end-r15 {
  padding-block-end: 1.5rem;
}
.py-r15 {
  padding-block: 1.5rem;
}
.px-start-r15 {
  padding-inline-start: 1.5rem;
}
.px-end-r15 {
  padding-inline-end: 1.5rem;
}
.px-r15 {
  padding-inline: 1.5rem;
}

.m-r175 {
  margin: 1.75rem;
}
.my-start-r175 {
  margin-block-start: 1.75rem;
}
.my-end-r175 {
  margin-block-end: 1.75rem;
}
.my-r175 {
  margin-block: 1.75rem;
}
.mx-start-r175 {
  margin-inline-start: 1.75rem;
}
.mx-end-r175 {
  margin-inline-end: 1.75rem;
}
.mx-r175 {
  margin-inline: 1.75rem;
}

.p-r175 {
  padding: 1.75rem;
}
.py-start-r175 {
  padding-block-start: 1.75rem;
}
.py-end-r175 {
  padding-block-end: 1.75rem;
}
.py-r175 {
  padding-block: 1.75rem;
}
.px-start-r175 {
  padding-inline-start: 1.75rem;
}
.px-end-r175 {
  padding-inline-end: 1.75rem;
}
.px-r175 {
  padding-inline: 1.75rem;
}

.m-r2 {
  margin: 2rem;
}
.my-start-r2 {
  margin-block-start: 2rem;
}
.my-end-r2 {
  margin-block-end: 2rem;
}
.my-r2 {
  margin-block: 2rem;
}
.mx-start-r2 {
  margin-inline-start: 2rem;
}
.mx-end-r2 {
  margin-inline-end: 2rem;
}
.mx-r2 {
  margin-inline: 2rem;
}

.p-r2 {
  padding: 2rem;
}
.py-start-r2 {
  padding-block-start: 2rem;
}
.py-end-r2 {
  padding-block-end: 2rem;
}
.py-r2 {
  padding-block: 2rem;
}
.px-start-r2 {
  padding-inline-start: 2rem;
}
.px-end-r2 {
  padding-inline-end: 2rem;
}
.px-r2 {
  padding-inline: 2rem;
}

.m-r25 {
  margin: 2.5rem;
}
.my-start-r25 {
  margin-block-start: 2.5rem;
}
.my-end-r25 {
  margin-block-end: 2.5rem;
}
.my-r25 {
  margin-block: 2.5rem;
}
.mx-start-r25 {
  margin-inline-start: 2.5rem;
}
.mx-end-r25 {
  margin-inline-end: 2.5rem;
}
.mx-r25 {
  margin-inline: 2.5rem;
}

.p-r25 {
  padding: 2.5rem;
}
.py-start-r25 {
  padding-block-start: 2.5rem;
}
.py-end-r25 {
  padding-block-end: 2.5rem;
}
.py-r25 {
  padding-block: 2.5rem;
}
.px-start-r25 {
  padding-inline-start: 2.5rem;
}
.px-end-r25 {
  padding-inline-end: 2.5rem;
}
.px-r25 {
  padding-inline: 2.5rem;
}

.m-r3 {
  margin: 3rem;
}
.my-start-r3 {
  margin-block-start: 3rem;
}
.my-end-r3 {
  margin-block-end: 3rem;
}
.my-r3 {
  margin-block: 3rem;
}
.mx-start-r3 {
  margin-inline-start: 3rem;
}
.mx-end-r3 {
  margin-inline-end: 3rem;
}
.mx-r3 {
  margin-inline: 3rem;
}

.p-r3 {
  padding: 3rem;
}
.py-start-r3 {
  padding-block-start: 3rem;
}
.py-end-r3 {
  padding-block-end: 3rem;
}
.py-r3 {
  padding-block: 3rem;
}
.px-start-r3 {
  padding-inline-start: 3rem;
}
.px-end-r3 {
  padding-inline-end: 3rem;
}
.px-r3 {
  padding-inline: 3rem;
}

.m-r4 {
  margin: 4rem;
}
.my-start-r4 {
  margin-block-start: 4rem;
}
.my-end-r4 {
  margin-block-end: 4rem;
}
.my-r4 {
  margin-block: 4rem;
}
.mx-start-r4 {
  margin-inline-start: 4rem;
}
.mx-end-r4 {
  margin-inline-end: 4rem;
}
.mx-r4 {
  margin-inline: 4rem;
}

.p-r4 {
  padding: 4rem;
}
.py-start-r4 {
  padding-block-start: 4rem;
}
.py-end-r4 {
  padding-block-end: 4rem;
}
.py-r4 {
  padding-block: 4rem;
}
.px-start-r4 {
  padding-inline-start: 4rem;
}
.px-end-r4 {
  padding-inline-end: 4rem;
}
.px-r4 {
  padding-inline: 4rem;
}

.m-r5 {
  margin: 5rem;
}
.my-start-r5 {
  margin-block-start: 5rem;
}
.my-end-r5 {
  margin-block-end: 5rem;
}
.my-r5 {
  margin-block: 5rem;
}
.mx-start-r5 {
  margin-inline-start: 5rem;
}
.mx-end-r5 {
  margin-inline-end: 5rem;
}
.mx-r5 {
  margin-inline: 5rem;
}

.p-r5 {
  padding: 5rem;
}
.py-start-r5 {
  padding-block-start: 5rem;
}
.py-end-r5 {
  padding-block-end: 5rem;
}
.py-r5 {
  padding-block: 5rem;
}
.px-start-r5 {
  padding-inline-start: 5rem;
}
.px-end-r5 {
  padding-inline-end: 5rem;
}
.px-r5 {
  padding-inline: 5rem;
}

.m-r6 {
  margin: 6rem;
}
.my-start-r6 {
  margin-block-start: 6rem;
}
.my-end-r6 {
  margin-block-end: 6rem;
}
.my-r6 {
  margin-block: 6rem;
}
.mx-start-r6 {
  margin-inline-start: 6rem;
}
.mx-end-r6 {
  margin-inline-end: 6rem;
}
.mx-r6 {
  margin-inline: 6rem;
}

.p-r6 {
  padding: 6rem;
}
.py-start-r6 {
  padding-block-start: 6rem;
}
.py-end-r6 {
  padding-block-end: 6rem;
}
.py-r6 {
  padding-block: 6rem;
}
.px-start-r6 {
  padding-inline-start: 6rem;
}
.px-end-r6 {
  padding-inline-end: 6rem;
}
.px-r6 {
  padding-inline: 6rem;
}

.m-r8 {
  margin: 8rem;
}
.my-start-r8 {
  margin-block-start: 8rem;
}
.my-end-r8 {
  margin-block-end: 8rem;
}
.my-r8 {
  margin-block: 8rem;
}
.mx-start-r8 {
  margin-inline-start: 8rem;
}
.mx-end-r8 {
  margin-inline-end: 8rem;
}
.mx-r8 {
  margin-inline: 8rem;
}

.p-r8 {
  padding: 8rem;
}
.py-start-r8 {
  padding-block-start: 8rem;
}
.py-end-r8 {
  padding-block-end: 8rem;
}
.py-r8 {
  padding-block: 8rem;
}
.px-start-r8 {
  padding-inline-start: 8rem;
}
.px-end-r8 {
  padding-inline-end: 8rem;
}
.px-r8 {
  padding-inline: 8rem;
}

.m-r10 {
  margin: 10rem;
}
.my-start-r10 {
  margin-block-start: 10rem;
}
.my-end-r10 {
  margin-block-end: 10rem;
}
.my-r10 {
  margin-block: 10rem;
}
.mx-start-r10 {
  margin-inline-start: 10rem;
}
.mx-end-r10 {
  margin-inline-end: 10rem;
}
.mx-r10 {
  margin-inline: 10rem;
}

.p-r10 {
  padding: 10rem;
}
.py-start-r10 {
  padding-block-start: 10rem;
}
.py-end-r10 {
  padding-block-end: 10rem;
}
.py-r10 {
  padding-block: 10rem;
}
.px-start-r10 {
  padding-inline-start: 10rem;
}
.px-end-r10 {
  padding-inline-end: 10rem;
}
.px-r10 {
  padding-inline: 10rem;
}

.grid {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: var(--l);
}
.grid[gap-size=r0] {
  gap: 0rem;
}
.grid[gap-size=r025] {
  gap: 0.25rem;
}
.grid[gap-size=r05] {
  gap: 0.5rem;
}
.grid[gap-size=r075] {
  gap: 0.75rem;
}
.grid[gap-size=r1] {
  gap: 1rem;
}
.grid[gap-size=r125] {
  gap: 1.25rem;
}
.grid[gap-size=r15] {
  gap: 1.5rem;
}
.grid[gap-size=r175] {
  gap: 1.75rem;
}
.grid[gap-size=r2] {
  gap: 2rem;
}
.grid[gap-size=r25] {
  gap: 2.5rem;
}
.grid[gap-size=r3] {
  gap: 3rem;
}
.grid[gap-size=r4] {
  gap: 4rem;
}
.grid[gap-size=r5] {
  gap: 5rem;
}
.grid[gap-size=r6] {
  gap: 6rem;
}
.grid[gap-size=r8] {
  gap: 8rem;
}
.grid[gap-size=r10] {
  gap: 10rem;
}
.grid[columns="2"] {
  grid-template-columns: repeat(2, 1fr);
}
.grid[columns="3"] {
  grid-template-columns: repeat(3, 1fr);
}
.grid[columns="4"] {
  grid-template-columns: repeat(4, 1fr);
}
.grid[columns="5"] {
  grid-template-columns: repeat(5, 1fr);
}
.grid[columns="7/5"] {
  grid-template-columns: 7fr 5fr;
}
.grid[columns="5/7"] {
  grid-template-columns: 5fr 7fr;
}
.grid[columns="5/3"] {
  grid-template-columns: 5fr 3fr;
}
.grid[columns="3/5"] {
  grid-template-columns: 3fr 5fr;
}
.grid[columns="1/3"] {
  grid-template-columns: 1fr 3fr;
}
.grid[columns="3/1"] {
  grid-template-columns: 3fr 1fr;
}
.grid[columns="1/4"] {
  grid-template-columns: 1fr 4fr;
}
.grid[columns="4/1"] {
  grid-template-columns: 4fr 1fr;
}
.grid[columns="1/2"] {
  grid-template-columns: 1fr 2fr;
}
.grid[columns="2/1"] {
  grid-template-columns: 2fr 1fr;
}
@media screen and (max-width: 45rem) {
  .grid[columns][responsive] {
    grid-template-columns: 1fr;
  }
}
@media screen and (max-width: 62rem) {
  .grid[columns][responsive=medium] {
    grid-template-columns: 1fr;
  }
}
@media screen and (max-width: 45rem) {
  .grid[columns][responsive][reverse] {
    display: flex;
    flex-direction: column-reverse;
    align-items: stretch;
  }
}
@media screen and (max-width: 62rem) {
  .grid[columns][responsive=medium][reverse] {
    display: flex;
    flex-direction: column-reverse;
    align-items: stretch;
  }
}
.grid[align-items=center] {
  align-items: center;
}
.grid[align-items=end] {
  align-items: end;
}

.flex {
  display: flex;
  gap: 1rem;
}
.flex[data-gap-size="2xs"] {
  gap: clamp(0.5rem, 0.5rem + 0vw, 0.5rem);
}
.flex[data-gap-size=xs] {
  gap: clamp(0.25rem, 0.25rem + 0vw, 0.25rem);
}
.flex[data-gap-size=s] {
  gap: clamp(1rem, 1rem + 0vw, 1rem);
}
.flex[data-gap-size=m] {
  gap: clamp(1.5rem, 1.5rem + 0vw, 1.5rem);
}
.flex[data-gap-size=l] {
  gap: clamp(2.5rem, 2.5rem + 0vw, 2.5rem);
}
.flex[data-gap-size=xl] {
  gap: clamp(3.5rem, 3.5rem + 0vw, 3.5rem);
}
.flex[data-gap-size="2xl"] {
  gap: clamp(5rem, 5rem + 0vw, 5rem);
}
.flex[data-gap-size="3xl"] {
  gap: clamp(7.5rem, 7.5rem + 0vw, 7.5rem);
}
.flex[data-gap-size="0"] {
  gap: 0;
}
.flex[direction=row] {
  flex-direction: row;
}
.flex[direction=row-reverse] {
  flex-direction: row-reverse;
}
.flex[direction=column] {
  flex-direction: column;
}
.flex[direction=column-reverse] {
  flex-direction: column-reverse;
}
.flex[align-items=start] {
  align-items: start;
}
.flex[align-items=center] {
  align-items: center;
}
.flex[align-items=end] {
  align-items: end;
}
.flex[align-items=stretch] {
  align-items: stretch;
}
.flex[justify-content=start] {
  justify-content: start;
}
.flex[justify-content=center] {
  justify-content: center;
}
.flex[justify-content=end] {
  justify-content: end;
}
.flex[justify-content=space-between] {
  justify-content: space-between;
}
.flex[justify-content=space-around] {
  justify-content: space-around;
}
.flex[justify-content=space-evenly] {
  justify-content: space-evenly;
}
.flex[wrap] {
  flex-wrap: wrap;
}
.flex[wrap=reverse] {
  flex-wrap: wrap-reverse;
}
@media screen and (max-width: 62rem) {
  .flex[responsive] {
    flex-direction: column;
  }
}

body.modal-open {
  overflow: hidden;
}
body.modal-open header,
body.modal-open main,
body.modal-open footer {
  filter: blur(5px);
}

.modal {
  position: fixed;
  z-index: 1000;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.5);
  overflow: hidden;
  justify-content: center;
  align-items: center;
  display: none;
}
.modal.active {
  display: flex;
}
.modal__inner {
  background-color: var(--white);
  margin: auto;
  padding: 0;
  border-radius: 0.5rem;
  width: 80%;
  max-width: 800px;
  position: relative;
  overflow: hidden;
  box-shadow: 0 0 40px rgba(0, 0, 0, 0.3);
}
.modal__close {
  position: absolute;
  top: 0;
  right: 0;
  width: 36px;
  height: 36px;
  line-height: 36px;
  text-align: center;
  font-size: 1.3rem;
  cursor: pointer;
  color: var(--greyscale-500);
}
.modal__close:hover {
  color: var(--greyscale-800);
}

.loader dotlottie-player {
  margin: 100px auto 0;
  width: 150px;
  height: 150px;
}

.notification {
  border-radius: 100px;
  padding: 1rem;
  text-align: center;
}
.notification.error {
  color: red;
  background-color: rgba(255, 0, 0, 0.2);
}

.code {
  background: black;
  color: white;
  font-family: monospace;
  padding: 1rem;
  font-size: var(--fs--2);
}

.swatches-grid {
  display: flex;
  gap: 0.5rem;
}

.swatch {
  width: 8rem;
  height: 8rem;
  display: flex;
  align-items: center;
  justify-content: center;
}
.swatch__inner {
  font-size: var(--fs--2);
  color: white;
  text-align: center;
  line-height: 1.2em;
}

/* General */
h1,
h2,
h3,
h4,
h5,
h6 {
  font-weight: 400;
  text-wrap: balance;
}

.balance {
  text-wrap: balance;
}

.heading-1, .wysiwyg h1, .wysiwyg .heading-1,
.heading-2,
.wysiwyg h2,
.wysiwyg .heading-2,
.heading-3,
.woocommerce-account .woocommerce-MyAccount h2:not(.cta *),
.woocommerce-account .woocommerce-MyAccountLogin h2:not(.cta *),
.wysiwyg h3,
.wysiwyg .heading-3,
.heading-4,
.wysiwyg h4,
.wysiwyg .heading-4,
.heading-5,
.wysiwyg h5,
.wysiwyg .heading-5,
.heading-6,
.wysiwyg h6,
.wysiwyg .heading-6 {
  position: relative;
  line-height: 1.1;
  font-family: "Ophian", "Petrona", Georgia, serif;
  font-weight: 700;
  letter-spacing: -0.03em;
}

.heading-1, .wysiwyg h1, .wysiwyg .heading-1 {
  font-size: var(--fs-6);
}

.heading-2, .wysiwyg h2, .wysiwyg .heading-2 {
  font-size: var(--fs-4);
}

.heading-3, .woocommerce-account .woocommerce-MyAccount h2:not(.cta *),
.woocommerce-account .woocommerce-MyAccountLogin h2:not(.cta *), .wysiwyg h3, .wysiwyg .heading-3 {
  font-size: var(--fs-3);
}

.heading-4, .wysiwyg h4, .wysiwyg .heading-4 {
  font-size: var(--fs-2);
}

.heading-5, .wysiwyg h5, .wysiwyg .heading-5 {
  font-size: var(--fs-1);
}

.heading-6, .wysiwyg h6, .wysiwyg .heading-6 {
  font-size: var(--fs-0);
}

a {
  text-underline-offset: 0.125em;
}
a, a:active, a:visited {
  color: inherit;
  text-decoration: none;
}
a:hover, a:focus {
  color: var(--secondary);
}

/* General */
.button-group {
  display: flex;
  gap: 0.5rem 1rem;
  flex-wrap: wrap;
}

/* Second branch ties woocommerce.css's `.woocommerce a.button` (0-2-1) so the
   theme's button skin wins on WooCommerce pages (loop/cart/checkout). */
.button, .woocommerce-account .woocommerce-MyAccount button[type=submit],
.woocommerce-account .woocommerce-MyAccountLogin button[type=submit], .woocommerce-account .woocommerce-Address a.edit, .woocommerce-account .woocommerce-orders-table .woocommerce-button,
.woocommerce-account .woocommerce-MyAccount-content .woocommerce-Button, a.wp-element-button,
.woocommerce :is(a, button, input).button,
.woocommerce .woocommerce-account .woocommerce-orders-table .woocommerce-button:is(a, button, input),
.woocommerce-account .woocommerce-orders-table .woocommerce .woocommerce-button:is(a, button, input),
.woocommerce .woocommerce-account .woocommerce-MyAccount-content .woocommerce-Button:is(a, button, input),
.woocommerce-account .woocommerce-MyAccount-content .woocommerce .woocommerce-Button:is(a, button, input) {
  display: inline-flex;
  justify-content: center;
  align-items: center;
  gap: 0.5rem;
  font-weight: normal;
  text-align: center;
  text-decoration: none !important;
  border-radius: 0;
  padding: 0.65rem 1.25rem;
  cursor: pointer;
  transition: all 0.3s ease;
  /* Animating arrow icon: */
}
.button.button--primary, .woocommerce-account .woocommerce-MyAccount button.button--primary[type=submit],
.woocommerce-account .woocommerce-MyAccountLogin button.button--primary[type=submit], .woocommerce-account .woocommerce-Address a.button--primary.edit, .woocommerce-account .woocommerce-orders-table .button--primary.woocommerce-button,
.woocommerce-account .woocommerce-MyAccount-content .button--primary.woocommerce-Button, a.button--primary.wp-element-button,
.woocommerce :is(a, button, input).button.button--primary {
  color: var(--accent-light);
  background-color: var(--primary);
  border: 1px solid var(--primary);
}
.button.button--primary:hover, .woocommerce-account .woocommerce-MyAccount button.button--primary[type=submit]:hover,
.woocommerce-account .woocommerce-MyAccountLogin button.button--primary[type=submit]:hover, .woocommerce-account .woocommerce-Address a.button--primary.edit:hover, .woocommerce-account .woocommerce-orders-table .button--primary.woocommerce-button:hover,
.woocommerce-account .woocommerce-MyAccount-content .button--primary.woocommerce-Button:hover, a.button--primary.wp-element-button:hover, .button.button--primary:focus, .woocommerce-account .woocommerce-MyAccount button.button--primary[type=submit]:focus,
.woocommerce-account .woocommerce-MyAccountLogin button.button--primary[type=submit]:focus, .woocommerce-account .woocommerce-Address a.button--primary.edit:focus, .woocommerce-account .woocommerce-orders-table .button--primary.woocommerce-button:focus,
.woocommerce-account .woocommerce-MyAccount-content .button--primary.woocommerce-Button:focus, a.button--primary.wp-element-button:focus,
.woocommerce :is(a, button, input).button.button--primary:hover,
.woocommerce :is(a, button, input).button.button--primary:focus {
  color: var(--primary);
  background-color: transparent;
  border-color: var(--primary);
}
.button.button--secondary, .woocommerce-account .woocommerce-Address a.button--secondary.edit, .woocommerce-account .woocommerce-orders-table .button--secondary.woocommerce-button,
.woocommerce-account .woocommerce-MyAccount-content .button--secondary.woocommerce-Button, .woocommerce-account .woocommerce-MyAccount button[type=submit],
.woocommerce-account .woocommerce-MyAccountLogin button[type=submit], .woocommerce-account .woocommerce-orders-table .button.woocommerce-button, .woocommerce-account .woocommerce-Address .woocommerce-orders-table a.edit.woocommerce-button, .woocommerce-account .woocommerce-orders-table .woocommerce-Address a.edit.woocommerce-button, .woocommerce-account .woocommerce-orders-table .woocommerce-button,
.woocommerce-account .woocommerce-MyAccount-content .woocommerce-orders-table .woocommerce-Button.woocommerce-button,
.woocommerce-account .woocommerce-orders-table .woocommerce-MyAccount-content .woocommerce-Button.woocommerce-button, .woocommerce-account .woocommerce-orders-table a.wp-element-button.woocommerce-button,
.woocommerce-account .woocommerce-MyAccount-content .button.woocommerce-Button,
.woocommerce-account .woocommerce-Address .woocommerce-MyAccount-content a.edit.woocommerce-Button,
.woocommerce-account .woocommerce-MyAccount-content .woocommerce-Address a.edit.woocommerce-Button,
.woocommerce-account .woocommerce-MyAccount-content .woocommerce-Button,
.woocommerce-account .woocommerce-MyAccount-content a.wp-element-button.woocommerce-Button, .woocommerce-account .woocommerce-Address a.edit.wp-element-button, a.wp-element-button,
.woocommerce :is(a, button, input).button.button--secondary,
.woocommerce .woocommerce-account .woocommerce-orders-table .woocommerce-button:is(a, button, input),
.woocommerce-account .woocommerce-orders-table .woocommerce .woocommerce-button:is(a, button, input),
.woocommerce .woocommerce-account .woocommerce-MyAccount-content .woocommerce-Button:is(a, button, input),
.woocommerce-account .woocommerce-MyAccount-content .woocommerce .woocommerce-Button:is(a, button, input) {
  color: var(--white);
  background-color: var(--secondary);
  border: 1px solid var(--secondary);
}
.button.button--secondary:hover, .woocommerce-account .woocommerce-Address a.button--secondary.edit:hover, .woocommerce-account .woocommerce-MyAccount button[type=submit]:hover,
.woocommerce-account .woocommerce-MyAccountLogin button[type=submit]:hover, .woocommerce-account .woocommerce-orders-table .woocommerce-button:hover,
.woocommerce-account .woocommerce-MyAccount-content .woocommerce-Button:hover, .woocommerce-account .woocommerce-Address a.edit.wp-element-button:hover, a.wp-element-button:hover, .button.button--secondary:focus, .woocommerce-account .woocommerce-Address a.button--secondary.edit:focus, .woocommerce-account .woocommerce-MyAccount button[type=submit]:focus,
.woocommerce-account .woocommerce-MyAccountLogin button[type=submit]:focus, .woocommerce-account .woocommerce-orders-table .woocommerce-button:focus,
.woocommerce-account .woocommerce-MyAccount-content .woocommerce-Button:focus, .woocommerce-account .woocommerce-Address a.edit.wp-element-button:focus, a.wp-element-button:focus,
.woocommerce :is(a, button, input).button.button--secondary:hover,
.woocommerce :is(a, button, input).button.button--secondary:focus {
  color: var(--secondary);
  background-color: transparent;
  border-color: var(--secondary);
}
.button.button--outline, .woocommerce-account .woocommerce-MyAccount button.button--outline[type=submit],
.woocommerce-account .woocommerce-MyAccountLogin button.button--outline[type=submit], .woocommerce-account .woocommerce-orders-table .button--outline.woocommerce-button,
.woocommerce-account .woocommerce-MyAccount-content .button--outline.woocommerce-Button, a.button--outline.wp-element-button, .woocommerce-account .woocommerce-Address a.edit,
.woocommerce :is(a, button, input).button.button--outline {
  color: var(--secondary);
  background-color: transparent;
  border: 1px solid currentColor;
}
.button.button--outline:hover, .woocommerce-account .woocommerce-MyAccount button.button--outline[type=submit]:hover,
.woocommerce-account .woocommerce-MyAccountLogin button.button--outline[type=submit]:hover, .woocommerce-account .woocommerce-orders-table .button--outline.woocommerce-button:hover,
.woocommerce-account .woocommerce-MyAccount-content .button--outline.woocommerce-Button:hover, a.button--outline.wp-element-button:hover, .woocommerce-account .woocommerce-Address a.edit:hover, .button.button--outline:focus, .woocommerce-account .woocommerce-MyAccount button.button--outline[type=submit]:focus,
.woocommerce-account .woocommerce-MyAccountLogin button.button--outline[type=submit]:focus, .woocommerce-account .woocommerce-orders-table .button--outline.woocommerce-button:focus,
.woocommerce-account .woocommerce-MyAccount-content .button--outline.woocommerce-Button:focus, a.button--outline.wp-element-button:focus, .woocommerce-account .woocommerce-Address a.edit:focus,
.woocommerce :is(a, button, input).button.button--outline:hover,
.woocommerce :is(a, button, input).button.button--outline:focus {
  color: var(--white);
  background-color: var(--secondary);
  border-color: var(--secondary);
}
.button.button--plain, .woocommerce-account .woocommerce-MyAccount button.button--plain[type=submit],
.woocommerce-account .woocommerce-MyAccountLogin button.button--plain[type=submit], .woocommerce-account .woocommerce-Address a.button--plain.edit, .woocommerce-account .woocommerce-orders-table .button--plain.woocommerce-button,
.woocommerce-account .woocommerce-MyAccount-content .button--plain.woocommerce-Button, a.button--plain.wp-element-button,
.woocommerce :is(a, button, input).button.button--plain {
  background: none;
  padding: 0.25rem 0;
  font-style: italic;
  color: inherit;
}
.button.button--underline, .woocommerce-account .woocommerce-MyAccount button.button--underline[type=submit],
.woocommerce-account .woocommerce-MyAccountLogin button.button--underline[type=submit], .woocommerce-account .woocommerce-Address a.button--underline.edit, .woocommerce-account .woocommerce-orders-table .button--underline.woocommerce-button,
.woocommerce-account .woocommerce-MyAccount-content .button--underline.woocommerce-Button, a.button--underline.wp-element-button,
.woocommerce :is(a, button, input).button.button--underline {
  padding: 0.5rem 0;
  color: var(--accent);
  border-bottom: 1px solid currentColor;
}
.button .button__arrow, .woocommerce-account .woocommerce-MyAccount button[type=submit] .button__arrow,
.woocommerce-account .woocommerce-MyAccountLogin button[type=submit] .button__arrow, .woocommerce-account .woocommerce-Address a.edit .button__arrow, .woocommerce-account .woocommerce-orders-table .woocommerce-button .button__arrow,
.woocommerce-account .woocommerce-MyAccount-content .woocommerce-Button .button__arrow, a.wp-element-button .button__arrow,
.woocommerce :is(a, button, input).button .button__arrow {
  --_width: 1.375em;
  --_extension: 0.375em;
  --_width-extended: calc(var(--_width) + var(--_extension));
  --_scale: calc(var(--_width-extended) / var(--_width));
  --_transition: 0.3s ease;
  position: relative;
  height: 0.625em;
  width: var(--_width);
}
.button .button__arrow:before, .woocommerce-account .woocommerce-MyAccount button[type=submit] .button__arrow:before,
.woocommerce-account .woocommerce-MyAccountLogin button[type=submit] .button__arrow:before, .woocommerce-account .woocommerce-Address a.edit .button__arrow:before, .woocommerce-account .woocommerce-orders-table .woocommerce-button .button__arrow:before,
.woocommerce-account .woocommerce-MyAccount-content .woocommerce-Button .button__arrow:before, a.wp-element-button .button__arrow:before,
.woocommerce :is(a, button, input).button .button__arrow:before {
  content: "";
  position: absolute;
  top: 50%;
  left: 0;
  right: 0.2em;
  height: 1px;
  transform: translateY(-50%);
  transform-origin: center left;
  background-color: currentColor;
  transition: scale var(--_transition);
}
.button .button__arrow:after, .woocommerce-account .woocommerce-MyAccount button[type=submit] .button__arrow:after,
.woocommerce-account .woocommerce-MyAccountLogin button[type=submit] .button__arrow:after, .woocommerce-account .woocommerce-Address a.edit .button__arrow:after, .woocommerce-account .woocommerce-orders-table .woocommerce-button .button__arrow:after,
.woocommerce-account .woocommerce-MyAccount-content .woocommerce-Button .button__arrow:after, a.wp-element-button .button__arrow:after,
.woocommerce :is(a, button, input).button .button__arrow:after {
  content: "";
  position: absolute;
  inset: 0;
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 17 8' fill='none'%3E%3Cpath d='M11 0C11 2 15 4 15 4C15 4 11 6 11 8' stroke='%23CB333B'/%3E%3C/svg%3E");
  mask-size: contain;
  mask-position: center right;
  mask-repeat: no-repeat;
  background-color: currentColor;
  transition: translate var(--_transition);
}
.button:hover .button__arrow:before, .woocommerce-account .woocommerce-MyAccount button[type=submit]:hover .button__arrow:before,
.woocommerce-account .woocommerce-MyAccountLogin button[type=submit]:hover .button__arrow:before, .woocommerce-account .woocommerce-Address a.edit:hover .button__arrow:before, .woocommerce-account .woocommerce-orders-table .woocommerce-button:hover .button__arrow:before,
.woocommerce-account .woocommerce-MyAccount-content .woocommerce-Button:hover .button__arrow:before, a.wp-element-button:hover .button__arrow:before, .button:focus .button__arrow:before, .woocommerce-account .woocommerce-MyAccount button[type=submit]:focus .button__arrow:before,
.woocommerce-account .woocommerce-MyAccountLogin button[type=submit]:focus .button__arrow:before, .woocommerce-account .woocommerce-Address a.edit:focus .button__arrow:before, .woocommerce-account .woocommerce-orders-table .woocommerce-button:focus .button__arrow:before,
.woocommerce-account .woocommerce-MyAccount-content .woocommerce-Button:focus .button__arrow:before, a.wp-element-button:focus .button__arrow:before,
.woocommerce :is(a, button, input).button:hover .button__arrow:before,
.woocommerce :is(a, button, input).button:focus .button__arrow:before {
  scale: var(--_scale) 1;
}
.button:hover .button__arrow:after, .woocommerce-account .woocommerce-MyAccount button[type=submit]:hover .button__arrow:after,
.woocommerce-account .woocommerce-MyAccountLogin button[type=submit]:hover .button__arrow:after, .woocommerce-account .woocommerce-Address a.edit:hover .button__arrow:after, .woocommerce-account .woocommerce-orders-table .woocommerce-button:hover .button__arrow:after,
.woocommerce-account .woocommerce-MyAccount-content .woocommerce-Button:hover .button__arrow:after, a.wp-element-button:hover .button__arrow:after, .button:focus .button__arrow:after, .woocommerce-account .woocommerce-MyAccount button[type=submit]:focus .button__arrow:after,
.woocommerce-account .woocommerce-MyAccountLogin button[type=submit]:focus .button__arrow:after, .woocommerce-account .woocommerce-Address a.edit:focus .button__arrow:after, .woocommerce-account .woocommerce-orders-table .woocommerce-button:focus .button__arrow:after,
.woocommerce-account .woocommerce-MyAccount-content .woocommerce-Button:focus .button__arrow:after, a.wp-element-button:focus .button__arrow:after,
.woocommerce :is(a, button, input).button:hover .button__arrow:after,
.woocommerce :is(a, button, input).button:focus .button__arrow:after {
  translate: var(--_extension) 0;
}

.wysiwyg > * {
  margin-block-start: 0.75em;
  margin-block-end: 0.5em;
}
.wysiwyg > :first-child {
  margin-block-start: 0;
}
.wysiwyg > :last-child {
  margin-block-end: 0;
}
.wysiwyg b,
.wysiwyg strong {
  font-weight: bold;
}
.wysiwyg i,
.wysiwyg em {
  font-style: italic;
}
.wysiwyg ol,
.wysiwyg ul {
  list-style: revert;
  padding-inline-start: 1.5em;
}
.wysiwyg ol li:not(:last-child),
.wysiwyg ul li:not(:last-child) {
  margin-block-end: 0.5em;
}
.wysiwyg ol {
  list-style: none;
  padding-inline-start: 2.5em;
}
.wysiwyg ol > li {
  position: relative;
}
.wysiwyg ol > li::before {
  content: counter(list-item, decimal-leading-zero);
  position: absolute;
  inset-inline-start: -1.5625em;
  inset-block-start: 0;
  color: var(--primary);
  font-family: "Petrona", serif;
  font-size: 1.25em;
  font-weight: 600;
  line-height: inherit;
  font-variant-numeric: tabular-nums;
  color: var(--secondary);
  opacity: 0.5;
}
.wysiwyg iframe,
.wysiwyg figure,
.wysiwyg img {
  display: block;
  margin-block: 1em;
}
.wysiwyg table {
  border-collapse: collapse;
  margin-block: 1em;
}
.wysiwyg table td {
  padding: 0.25rem 0.75rem;
}
.wysiwyg a {
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-decoration-style: dotted;
  transition: text-underline-offset 0.2s ease;
}
.wysiwyg a:hover, .wysiwyg a:focus {
  text-underline-offset: 0.25em;
}

.form {
  /* Container class to layout form fields in a 2-column grid */
  /* Layout a form fields and its label horizontally */
}
.form__grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 8rem;
}
.form__grid__column {
  display: flex;
  flex-direction: column;
  gap: 2rem;
}
@media screen and (max-width: 62rem) {
  .form__grid {
    gap: 4rem;
  }
}
@media screen and (max-width: 45rem) {
  .form__grid {
    grid-template-columns: 1fr;
    gap: 2rem;
  }
}
.form__inline {
  display: flex;
  gap: 0.5rem;
  align-items: baseline;
}
.form__label, .woocommerce-account .woocommerce-MyAccount label,
.woocommerce-account .woocommerce-MyAccountLogin label {
  display: block;
  font-size: 0.85em;
  font-weight: 400;
}
.form__label:has(~ input[required])::after, .woocommerce-account .woocommerce-MyAccount label:has(~ input[required])::after,
.woocommerce-account .woocommerce-MyAccountLogin label:has(~ input[required])::after {
  content: "*";
}
.form__label a, .woocommerce-account .woocommerce-MyAccount label a,
.woocommerce-account .woocommerce-MyAccountLogin label a {
  color: var(--accent);
  text-decoration: underline;
}
.form__control, .woocommerce-account .woocommerce-MyAccount input:not([type=hidden], [type=submit]),
.woocommerce-account .woocommerce-MyAccount textarea,
.woocommerce-account .woocommerce-MyAccountLogin input:not([type=hidden], [type=submit]),
.woocommerce-account .woocommerce-MyAccountLogin textarea, .woocommerce-account .woocommerce-MyAccount select,
.woocommerce-account .woocommerce-MyAccount .select2-selection,
.woocommerce-account .woocommerce-MyAccountLogin select,
.woocommerce-account .woocommerce-MyAccountLogin .select2-selection {
  display: block;
  width: 100%;
  padding: 0.5rem 0;
  font-size: 1.25em;
  line-height: 1;
  background: none;
  border: none;
  border-bottom: 1px solid currentColor;
}
.form__control[type=radio], .woocommerce-account .woocommerce-MyAccount input[type=radio]:not([type=hidden], [type=submit]),
.woocommerce-account .woocommerce-MyAccount textarea[type=radio],
.woocommerce-account .woocommerce-MyAccountLogin input[type=radio]:not([type=hidden], [type=submit]),
.woocommerce-account .woocommerce-MyAccountLogin textarea[type=radio], .woocommerce-account .woocommerce-MyAccount select[type=radio],
.woocommerce-account .woocommerce-MyAccount [type=radio].select2-selection,
.woocommerce-account .woocommerce-MyAccountLogin select[type=radio],
.woocommerce-account .woocommerce-MyAccountLogin [type=radio].select2-selection, .form__control[type=checkbox], .woocommerce-account .woocommerce-MyAccount input[type=checkbox]:not([type=hidden], [type=submit]),
.woocommerce-account .woocommerce-MyAccount textarea[type=checkbox],
.woocommerce-account .woocommerce-MyAccountLogin input[type=checkbox]:not([type=hidden], [type=submit]),
.woocommerce-account .woocommerce-MyAccountLogin textarea[type=checkbox], .woocommerce-account .woocommerce-MyAccount select[type=checkbox],
.woocommerce-account .woocommerce-MyAccount [type=checkbox].select2-selection,
.woocommerce-account .woocommerce-MyAccountLogin select[type=checkbox],
.woocommerce-account .woocommerce-MyAccountLogin [type=checkbox].select2-selection {
  width: 1em;
  height: 1em;
  aspect-ratio: 1;
  margin-top: -0.05em;
  vertical-align: top;
  color: inherit;
  background-color: transparent;
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
  border: 1px solid currentColor;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  -webkit-print-color-adjust: exact;
  color-adjust: exact;
}
.form__control[type=radio], .woocommerce-account .woocommerce-MyAccount input[type=radio]:not([type=hidden], [type=submit]),
.woocommerce-account .woocommerce-MyAccount textarea[type=radio],
.woocommerce-account .woocommerce-MyAccountLogin input[type=radio]:not([type=hidden], [type=submit]),
.woocommerce-account .woocommerce-MyAccountLogin textarea[type=radio], .woocommerce-account .woocommerce-MyAccount select[type=radio],
.woocommerce-account .woocommerce-MyAccount [type=radio].select2-selection,
.woocommerce-account .woocommerce-MyAccountLogin select[type=radio],
.woocommerce-account .woocommerce-MyAccountLogin [type=radio].select2-selection {
  border-radius: 50%;
}
.form__control[type=radio]:checked, .woocommerce-account .woocommerce-MyAccount input[type=radio]:checked:not([type=hidden], [type=submit]),
.woocommerce-account .woocommerce-MyAccount textarea[type=radio]:checked,
.woocommerce-account .woocommerce-MyAccountLogin input[type=radio]:checked:not([type=hidden], [type=submit]),
.woocommerce-account .woocommerce-MyAccountLogin textarea[type=radio]:checked, .woocommerce-account .woocommerce-MyAccount select[type=radio]:checked,
.woocommerce-account .woocommerce-MyAccount [type=radio].select2-selection:checked,
.woocommerce-account .woocommerce-MyAccountLogin select[type=radio]:checked,
.woocommerce-account .woocommerce-MyAccountLogin [type=radio].select2-selection:checked {
  border-color: var(--secondary);
  background-color: var(--secondary);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath fill='%23fff' d='M413.5 92L133.5 372l-99-99c-4.7-4.7-12.3-4.7-17 0L6.2 284.3c-4.7 4.7-4.7 12.3 0 17l118.8 118.8c4.7 4.7 12.3 4.7 17 0l299.8-299.8c4.7-4.7 4.7-12.3 0-17l-11.3-11.3c-4.7-4.7-12.3-4.7-17 0z'/%3E%3C/svg%3E");
  background-size: 60%;
}
.form__control[type=checkbox]:checked, .woocommerce-account .woocommerce-MyAccount input[type=checkbox]:checked:not([type=hidden], [type=submit]),
.woocommerce-account .woocommerce-MyAccount textarea[type=checkbox]:checked,
.woocommerce-account .woocommerce-MyAccountLogin input[type=checkbox]:checked:not([type=hidden], [type=submit]),
.woocommerce-account .woocommerce-MyAccountLogin textarea[type=checkbox]:checked, .woocommerce-account .woocommerce-MyAccount select[type=checkbox]:checked,
.woocommerce-account .woocommerce-MyAccount [type=checkbox].select2-selection:checked,
.woocommerce-account .woocommerce-MyAccountLogin select[type=checkbox]:checked,
.woocommerce-account .woocommerce-MyAccountLogin [type=checkbox].select2-selection:checked {
  border-color: var(--secondary);
  background-color: var(--secondary);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath fill='%23fff' d='M413.5 92L133.5 372l-99-99c-4.7-4.7-12.3-4.7-17 0L6.2 284.3c-4.7 4.7-4.7 12.3 0 17l118.8 118.8c4.7 4.7 12.3 4.7 17 0l299.8-299.8c4.7-4.7 4.7-12.3 0-17l-11.3-11.3c-4.7-4.7-12.3-4.7-17 0z'/%3E%3C/svg%3E");
  background-size: 60%;
}

/* Main components */
.navbar {
  position: relative;
  font-family: "Geist", sans-serif;
  font-size: 0.8125rem;
  font-style: normal;
  font-weight: 600;
  line-height: 1;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}
.navbar__inner {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1.25rem;
  padding: 1rem 0;
}
.navbar__inner .branding {
  flex: 0 0 auto;
  margin-inline-end: auto;
}
.navbar__inner .branding img {
  height: clamp(5rem, 3.875rem + 4.5vw, 7.25rem);
  width: auto;
}
.navbar__menu nav {
  text-align: center;
  font-weight: 600;
}
.navbar__menu nav ul {
  display: flex;
  justify-content: end;
  flex-wrap: wrap;
  gap: 0.5rem 1rem;
}
.navbar__menu nav ul li {
  position: relative;
  transition: all 0.25s ease;
}
.navbar__menu nav ul li:after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0.5rem;
  right: 0.5rem;
  height: 0.75px;
  background-color: currentColor;
  opacity: 0;
  transform: translate(0, 0.375rem);
  transform-origin: center;
  transition: inherit;
}
.navbar__menu nav ul li:hover, .navbar__menu nav ul li:active, .navbar__menu nav ul li:focus-within {
  color: var(--secondary);
}
.navbar__menu nav ul li:hover:after, .navbar__menu nav ul li:active:after, .navbar__menu nav ul li:focus-within:after {
  transform: translate(0, 0);
  opacity: 1;
}
.navbar__menu nav ul li.current-menu-item:after {
  transform: translate(0, 0);
  opacity: 1;
}
.navbar__menu nav ul li a {
  display: block;
  padding: 0.25rem 0.5rem;
  white-space: nowrap;
  transition: inherit;
}
@media screen and (max-width: 62rem) {
  .navbar__menu {
    order: 99;
  }
  .navbar__menu nav {
    display: none;
    opacity: 0;
    font-weight: 400;
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    width: 100%;
    padding-bottom: 1rem;
    background-color: var(--accent-light);
    border-bottom: 0.25rem solid var(--secondary);
    box-shadow: 0 1rem 1rem rgba(0, 0, 0, 0.2);
    z-index: 10;
    transition: all 0.25s ease;
    transition-behavior: allow-discrete;
  }
  .navbar__menu nav ul {
    display: flex;
    flex-direction: column;
    gap: 0;
  }
  .navbar__menu nav ul li:after {
    content: none !important;
  }
  .navbar__menu nav ul li.current-menu-item {
    background-color: var(--accent);
  }
  .navbar__menu nav ul li.current-menu-item a {
    color: var(--text) !important;
  }
  .navbar__menu nav ul li a {
    display: block;
    padding: 1rem 2rem;
    transition: all 0.1s ease;
  }
  .navbar__menu .navbar__toggle[aria-expanded=true] ~ nav {
    display: block;
    opacity: 1;
  }
  @starting-style {
    .navbar__menu .navbar__toggle[aria-expanded=true] ~ nav {
      opacity: 0;
    }
  }
}
.navbar__toggle {
  appearance: none;
  color: inherit;
  background: none;
  border: none;
  padding: 0;
  display: grid;
  place-items: center;
  text-align: center;
  font-size: 2rem;
  line-height: 1;
  cursor: pointer;
}
.navbar__toggle > * {
  grid-area: 1/1;
  width: 1em;
}
.navbar__toggle .navbar__toggle__open {
  display: block;
}
.navbar__toggle .navbar__toggle__close {
  display: none;
}
.navbar__toggle[aria-expanded=true] .navbar__toggle__open {
  display: none;
}
.navbar__toggle[aria-expanded=true] .navbar__toggle__close {
  display: block;
}
@media screen and (min-width: 62rem) {
  .navbar__toggle {
    display: none;
  }
}
.navbar__icon {
  flex: 0 0 auto;
  font-size: 1.25rem;
  line-height: 1;
  color: inherit;
  transition: color 0.25s ease;
}
@media screen and (max-width: 62rem) {
  .navbar__icon {
    font-size: 1.5rem;
  }
}
.navbar__icon:hover, .navbar__icon:focus-visible {
  color: var(--secondary);
}
.navbar__cart {
  flex: 0 0 auto;
  order: 6;
  position: relative;
  display: grid;
  place-items: center;
}
.navbar__cart__count {
  position: absolute;
  top: -0.75em;
  inset-inline-end: -0.75em;
  min-width: 1.5em;
  padding: 0.25em 0.35em;
  border-radius: 999px;
  background-color: var(--secondary);
  color: var(--white);
  font-size: 0.5em;
  font-weight: 700;
  line-height: 1;
  text-align: center;
  letter-spacing: 0;
}
.navbar__cart__count.is-empty {
  display: none;
}
.navbar__account {
  order: 5;
}
.navbar__actions {
  display: flex;
  align-items: center;
  gap: 1.5rem;
}
.navbar__actions .button {
  white-space: nowrap;
}
@media screen and (max-width: 62rem) {
  .navbar__actions {
    font-size: var(--fs--2);
    margin-left: auto;
    gap: 1rem;
  }
  .navbar__actions .button {
    padding-inline: 1rem;
  }
}

.language-switcher {
  position: relative;
  text-align: center;
  font-size: 0.85rem;
  display: flex;
  align-items: center;
}
@media screen and (min-width: 62rem) {
  .language-switcher {
    gap: 0.25em;
  }
}
.language-switcher img {
  display: none;
}
.language-switcher a {
  padding: 0.25rem;
  color: inherit;
  text-transform: uppercase;
  text-decoration: none;
}
.language-switcher a:hover, .language-switcher a:focus {
  font-weight: bold;
  color: var(--accent);
}
.language-switcher .languages-dropdown {
  display: none;
  position: absolute;
  top: 100%;
  z-index: 99;
  flex-direction: column;
}
.language-switcher .languages-dropdown a {
  padding-right: 1.5rem;
}
.language-switcher:hover .languages-dropdown, .language-switcher:focus-within .languages-dropdown {
  display: flex;
}
.language-switcher:hover i, .language-switcher:focus-within i {
  transform: scaleY(-1);
}

.footer {
  color: var(--white);
  background-color: var(--primary);
}
.footer__inner {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 3.5rem 1.75rem;
  padding: 5rem 0;
}
@media screen and (max-width: 62rem) {
  .footer__inner {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media screen and (max-width: 45rem) {
  .footer__inner {
    display: flex;
    flex-direction: column;
  }
}
.footer__info {
  grid-column: span 3;
  font-variant-numeric: oldstyle-nums proportional-nums;
}
@media screen and (max-width: 62rem) {
  .footer__info {
    grid-column: span 2;
  }
}
.footer__shops {
  grid-column: span 2;
}
.footer__logo {
  height: 4.875rem;
  width: auto;
  flex: 0 0 auto;
}
.footer__column {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}
.footer__menu {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.footer__menu li {
  display: flex;
  align-items: baseline;
  gap: 0.75rem;
}
.footer__menu li i:first-child {
  flex: 0 0 1.125rem;
  text-align: center;
}
.footer a {
  color: inherit;
  text-decoration: none;
}
.footer a:hover, .footer a:focus {
  text-decoration: underline;
}

.colofon {
  padding: 0.625rem 0;
  font-size: 0.8rem;
  color: var(--white);
  background: var(--primary-dark);
}
@media screen and (max-width: 62rem) {
  .colofon {
    padding: 1.25rem 0 1rem;
  }
}
.colofon__menu {
  display: flex;
  align-items: center;
  gap: 0.5rem 1rem;
  flex-wrap: wrap;
}
@media screen and (max-width: 62rem) {
  .colofon__menu {
    flex-direction: column;
    align-items: start;
    gap: 0.5rem 0.75rem;
  }
}
.colofon .menu-item {
  position: relative;
  display: flex;
  gap: inherit;
  justify-content: center;
  align-items: center;
  white-space: nowrap;
}
.colofon .menu-item:first-child {
  margin-inline-end: auto;
}
.colofon .menu-item:last-child {
  margin-inline-start: auto;
}
.colofon .menu-item:not(:first-child, :last-child, :has(+ :last-child)):after {
  content: "|";
  pointer-events: none;
}
@media screen and (max-width: 62rem) {
  .colofon .menu-item {
    margin: 0 !important;
  }
  .colofon .menu-item:after {
    content: none !important;
  }
}
.colofon a:hover, .colofon a:focus {
  color: var(--accent);
}

.props {
  display: flex;
  align-items: center;
  gap: 0.75rem !important;
}
.props a {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-style: italic;
}
.props a .props__text {
  align-items: center;
  white-space: nowrap;
}
.props a .props__logo {
  max-width: 100px;
}
.props a .props__logo svg {
  width: 100%;
  height: 34px;
  fill: currentColor;
}

.slick-slider .slick-track {
  display: flex;
}
.slick-slider .slick-slide {
  position: relative;
  display: flex;
  height: auto;
}
.slick-slider .slick-slide > div, .slick-slider .slick-slide > div > div {
  height: 100%;
}

.simple-carousel {
  display: grid !important; /* Fix for compatibility of Slick within a grid column */
}
.simple-carousel .slick-list {
  margin-right: -2rem;
}
.simple-carousel .slick-slide {
  margin-right: 2rem;
}

.hero-carousel__dots {
  margin-bottom: 1rem;
}
.hero-carousel__slider .slick-list {
  overflow: visible !important;
}
.hero-carousel__slider .slick-slide {
  margin-right: 2rem;
}

/* Dots */
.slick-dots {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  width: 100%;
  padding: 0;
  margin: 0;
  list-style: none;
}
.slick-dots li {
  position: relative;
  display: block;
  width: auto;
  height: 1rem;
  padding: 0;
  cursor: pointer;
}
.slick-dots li button {
  font-size: 0;
  line-height: 0;
  display: block;
  width: 0.75rem;
  height: 0.75rem;
  cursor: pointer;
  color: transparent;
  border: 0;
  outline: none;
  background-color: var(--primary);
  opacity: 0.15;
  transition: opacity 0.2s ease-in-out, background-color 0.2s ease-in-out;
}
.slick-dots li button:hover, .slick-dots li button:focus {
  outline: none;
  opacity: 1;
  background-color: var(--secondary);
}
.slick-dots li.slick-active button {
  opacity: 1;
}

/* Pages*/
.section-404 {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2rem;
  padding: 6rem 2rem;
  text-align: center;
}
.section-404__mark {
  font-family: "Ophian", "Petrona", Georgia, serif;
  font-size: clamp(8rem, 6rem + 8vw, 12rem);
  font-weight: 900;
  line-height: 1;
  opacity: 0.2;
}

/* Sections / components */
.hero .woocommerce-breadcrumb {
  color: var(--primary);
  font-size: var(--fs--1);
}
.hero__intro {
  max-width: 80ch;
}

.hero--home .hero__inner {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-template-rows: 1fr auto;
  gap: 1rem;
  grid-template-areas: "content content image image" "promo promo image image";
}
@media screen and (max-width: 62rem) {
  .hero--home .hero__inner {
    grid-template-columns: repeat(2, 1fr);
    grid-template-rows: auto;
    grid-template-areas: "content content" "image image" "promo promo";
  }
}
@media screen and (max-width: 45rem) {
  .hero--home .hero__inner {
    grid-template-columns: 1fr;
    grid-template-rows: auto;
    grid-template-areas: "image" "content" "promo";
    gap: 1rem;
  }
}
.hero--home .hero__content {
  grid-area: content;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 1.25rem;
  padding-block: 3.5rem 2.5rem;
  text-wrap: balance;
}
@media screen and (max-width: 62rem) {
  .hero--home .hero__content {
    padding-block: 1.5rem;
  }
}
.hero--home .hero__image {
  grid-area: image;
  position: relative;
}
.hero--home .hero__image img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
@media screen and (max-width: 62rem) {
  .hero--home .hero__image {
    aspect-ratio: 16/9;
  }
}
.hero--home .hero > .cta {
  grid-area: promo;
}

.cta {
  display: grid;
  grid-template-areas: "content label" "disclaimer label";
  grid-template-columns: 1fr auto;
  grid-template-rows: 1fr auto;
  gap: 0.75rem;
  position: relative;
  aspect-ratio: 1/1;
  z-index: 0;
}
.cta--promo {
  padding: 1.5rem;
  color: var(--white);
  background-color: var(--secondary);
}
.cta--promo .cta__title:has(b) {
  line-height: 0.9125;
  font-weight: 300;
}
.cta--coffee {
  padding: 1.5rem;
  color: var(--white);
  background-color: var(--primary);
}
.cta__content {
  grid-area: content;
  text-wrap: balance;
}
.cta__title {
  font-variant-numeric: oldstyle-nums proportional-nums ordinal;
  font-feature-settings: "dlig" on, "rvrn" on;
}
.cta__label {
  grid-area: label;
  text-align: right;
  writing-mode: vertical-rl;
  text-orientation: mixed;
  font-size: 0.875rem;
  font-family: "Geist";
  font-weight: 300;
  line-height: 1;
  letter-spacing: 0.0975rem;
  text-transform: uppercase;
}
.cta__disclaimer {
  grid-area: disclaimer;
  text-wrap: balance;
  font-size: 0.875rem;
  margin-top: auto;
  padding-right: 1rem;
}
.cta__image {
  pointer-events: none;
  overflow: hidden;
  position: absolute;
  top: 60%;
  bottom: 0;
  left: 2.5rem;
  right: 2.5rem;
  z-index: -1;
}
.cta__image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top center;
}

.machines {
  /* Archive: sticky term + description | machines of that term */
}
.machines__overview {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(24rem, 100%), 1fr));
  grid-auto-rows: 1fr auto auto;
  gap: 3rem 2rem;
}
.machines__overview__item {
  position: relative;
  grid-row: span 3;
  display: grid;
  grid-template-columns: 2fr 5fr;
  grid-template-rows: subgrid;
  grid-template-areas: "image title" "image text" "image button";
  gap: 0.5rem 1rem;
  /* Larger click target */
}
.machines__overview__item__image {
  grid-area: image;
  align-self: end;
}
.machines__overview__item__image img {
  width: 100%;
  height: auto;
  max-height: 12rem;
  object-fit: contain;
}
.machines__overview__item__title {
  grid-area: title;
  align-self: end;
}
.machines__overview__item__text {
  grid-area: text;
}
.machines__overview__item .button-wrapper {
  grid-area: button;
}
.machines__overview__item .button:before {
  content: "";
  position: absolute;
  inset: 0;
}
.machines__loop {
  display: flex;
  flex-direction: column;
  gap: 2.5rem;
}
.machines__loop hr {
  border-bottom: 1px dotted var(--secondary);
  opacity: 0.5;
}
.machines__loop__item {
  position: relative;
  display: grid;
  grid-template-columns: 2fr 5fr;
  gap: 1rem 1.5rem;
}
.machines__loop__item__image img {
  width: 100%;
  height: auto;
  max-height: 12rem;
  object-fit: contain;
}
.machines__files {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
  gap: 0.375rem 1.5rem;
}
.machines__files a {
  display: flex;
  justify-content: start;
  text-align: left;
  align-items: baseline;
}
.machines__group {
  display: flex;
  flex-direction: column;
  gap: var(--l);
}
@media screen and (min-width: 62rem) {
  .machines__group {
    flex-direction: row;
    align-items: flex-start;
    gap: 0;
  }
}
@media screen and (min-width: 62rem) {
  .machines__group__aside {
    position: sticky;
    inset-block-start: 2rem;
    flex: 0 0 min(30rem, 38%);
    padding-inline-end: clamp(2rem, 4vw, 4rem);
  }
}
.machines__group__content {
  flex: 1;
}
@media screen and (min-width: 62rem) {
  .machines__group__content {
    align-self: stretch;
    padding-inline-start: clamp(2rem, 4vw, 4rem);
    border-inline-start: 1px solid var(--border);
  }
}

.map {
  position: relative;
  isolation: isolate;
  overflow: hidden;
}
.map__data {
  display: none;
}
.map__canvas {
  width: 100%;
  height: clamp(24rem, 60vh, 40rem);
  background-color: var(--border);
}
.map .gm-style .gm-style-iw-c {
  padding: 0;
  overflow: hidden;
  border-radius: 0.5rem;
  background-color: var(--accent-light);
  box-shadow: 0 0.75rem 2rem rgba(0, 0, 0, 0.25);
}
.map .gm-style .gm-style-iw,
.map .gm-style .gm-style-iw-d {
  overflow: hidden !important;
  padding: 0 !important;
}
.map .gm-style .gm-style-iw-tc::after {
  background-color: var(--accent-light);
}
.map .gm-style .gm-style-iw-chr {
  position: relative;
  display: flex;
  background-color: var(--primary);
}
.map .gm-style .gm-style-iw-c[data-type=shop] .gm-style-iw-chr {
  background-color: var(--secondary);
}
.map .gm-style .gm-style-iw-chr > button {
  z-index: 1;
}
.map .gm-style .gm-style-iw-chr > button span {
  background-color: var(--accent-light) !important;
}
.map__legend {
  position: absolute;
  right: var(--s);
  bottom: var(--s);
  z-index: 2;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  margin: 0;
  padding: 0.75rem 1rem;
  list-style: none;
  background-color: var(--accent-light);
  border-radius: 0.5rem;
  box-shadow: 0 0.5rem 1.25rem rgba(0, 0, 0, 0.2);
}
.map__legend__item {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.875rem;
  line-height: 1;
  color: var(--text);
}
.map__legend__marker {
  flex-shrink: 0;
  width: 0.875rem;
  height: 0.875rem;
  border-radius: 50%;
  background-color: var(--greyscale-500);
}
.map__legend__item[data-type=location] .map__legend__marker {
  background-color: var(--primary);
}
.map__legend__item[data-type=shop] .map__legend__marker {
  background-color: var(--secondary);
}
.map__card {
  --_pad: 1.125rem;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  min-width: 12rem;
  max-width: 16rem;
  padding: var(--_pad);
  font-family: "Petrona", serif;
}
.map__card__label {
  position: absolute;
  top: 0;
  left: 1rem;
  height: 48px;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  color: white;
  font-family: "Geist", sans-serif;
}
.map__card__title {
  margin: 0;
  font-family: "Ophian", "Petrona", Georgia, serif;
  font-weight: 700;
  font-size: 1.125rem;
  line-height: 1.2;
  color: var(--primary);
}
.map__card__address {
  margin: 0;
  font-size: 0.875rem;
  color: var(--text);
}
.map__card__link {
  align-self: flex-start;
  margin-top: 0.25rem;
  font-size: 0.875rem;
}
.map.has-error .map__canvas {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 2rem;
  text-align: center;
}
.map.has-error .map__canvas::after {
  content: attr(data-error);
  color: var(--primary);
  font-size: 0.875rem;
}

.contact-details {
  display: grid;
  gap: 0.375em;
  font-style: normal;
  /* Day | hours */
}
.contact-details__item {
  display: grid;
  grid-template-columns: 1em 1fr;
  column-gap: 0.625em;
  align-items: baseline;
  margin: 0;
  overflow-wrap: anywhere;
}
.contact-details__item i {
  text-align: center;
  color: var(--primary);
  font-size: 0.875em;
}
.contact-details hr {
  margin-block: 0.5rem;
  border-bottom: 1px dashed var(--secondary);
  opacity: 0.5;
}
.contact-details__hours {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 0.2em 1em;
  margin: 0;
}
.contact-details__hours dt::first-letter {
  text-transform: uppercase;
}
.contact-details__hours dd {
  margin: 0;
}
.contact-details__hours hr {
  grid-column: 1/-1;
  border-bottom: 1px dotted var(--border);
  margin-block: 0;
}
.contact-details__hours hr:last-child {
  display: none;
}
a.contact-details__item {
  text-decoration: none;
}
a.contact-details__item:hover span, a.contact-details__item:focus-visible span {
  text-decoration: underline;
}

.notices {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 0.5em 1.5em;
  padding: 0.875rem 1.5rem;
  color: var(--white);
  background-color: var(--primary);
  border-radius: 0.375rem;
}
@media screen and (max-width: 62rem) {
  .notices {
    flex-direction: column;
  }
  .notices__separator {
    display: none;
  }
}
.notices__item {
  display: flex;
  align-items: baseline;
  gap: 0.5em;
  margin: 0;
  font-weight: 500;
  break-inside: avoid;
}
.notices__item i {
  font-style: normal;
}
.notices__item small {
  font-weight: 300;
  font-size: 0.75em;
}
.notices:has(+ *) {
  margin-bottom: 2.5rem;
}
.notices:not(:first-child) {
  margin-top: 1.5rem;
}

.fc-text .container > * {
  max-width: 72ch;
}

.fc-quote__inner {
  padding-inline-start: 1.5rem;
  border-inline-start: 4px solid var(--secondary);
}
.fc-quote__text {
  font-size: var(--fs-3);
  font-style: italic;
  text-wrap: balance;
}
.fc-quote__author {
  margin-block-start: 0.75rem;
  color: var(--greyscale-600);
}

.fc-badge__inner {
  display: flex;
  align-items: center;
  gap: 1.5rem;
  max-width: 50ch;
  padding: 0.875rem 1.5rem;
  color: var(--white);
  background-color: var(--primary);
  border-radius: 0.375rem;
}
.fc-badge__inner a:hover, .fc-badge__inner a:focus {
  color: var(--accent);
}
.fc-badge__logo {
  height: 6rem;
  flex: 0 0 auto;
}
.fc-badge__logo img {
  width: auto;
  object-fit: contain;
}

.fc-embed iframe,
.fc-embed video,
.fc-embed img {
  display: block;
  max-width: 100%;
}
.fc-embed iframe {
  width: 100%;
  height: auto;
  border: none;
}

.fc-image-gallery__slider {
  display: grid !important; /* Fix for Slick living inside a grid/flex column */
  margin: 0;
  padding: 0;
  list-style: none;
}
.fc-image-gallery__slider .slick-list {
  min-width: 0; /* Fix for Slick overflow issue inside a grid */
  overflow: visible !important;
  margin-inline: -0.5rem;
  padding-right: 3rem; /* peek the next image */
}
@media screen and (max-width: 45rem) {
  .fc-image-gallery__slider .slick-list {
    padding-right: 18%;
  }
}
.fc-image-gallery__slider .slick-slide {
  margin-inline: 0.5rem;
}
.fc-image-gallery__slide .image-wrapper {
  display: block;
  overflow: hidden;
}
.fc-image-gallery__dots {
  display: flex;
  margin-top: 2rem;
}
.fc-image-gallery__dots:empty {
  display: none;
}

/* Woocommerce */
.woocommerce-page {
  --wp--preset--font-size--small: 15px;
}

.woocommerce-product-attributes-item__label {
  text-align: left;
}
.woocommerce-product-attributes-item th, .woocommerce-product-attributes-item td {
  background: none !important;
}

.wc-block-cart__empty-cart__title.with-empty-cart-icon {
  font-size: var(--fs-2);
  font-weight: 500;
}
.wc-block-cart__empty-cart__title.with-empty-cart-icon:before {
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='576' height='512' viewBox='0 0 576 512'%3E%3Ctitle%3Ecart-shopping%3C/title%3E%3Cg fill='%23212121'%3E%3Cpath d='M16 0C7.2 0 0 7.2 0 16s7.2 16 16 16l37.9 0c7.6 0 14.2 5.3 15.7 12.8l58.9 288c6.1 29.8 32.3 51.2 62.7 51.2L496 384c8.8 0 16-7.2 16-16s-7.2-16-16-16l-304.8 0c-15.2 0-28.3-10.7-31.4-25.6L152 288l314.6 0c29.4 0 55-20 62.1-48.5L570.6 71.8c5-20.2-10.2-39.8-31-39.8L99.1 32C92.5 13 74.4 0 53.9 0L16 0zm90.1 64l433.4 0L497.6 231.8C494 246 481.2 256 466.5 256l-321.1 0L106.1 64zM168 456a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm80 0a56 56 0 1 0 -112 0 56 56 0 1 0 112 0zm200-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0 80a56 56 0 1 0 0-112 56 56 0 1 0 0 112z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E");
  mask-size: contain;
  mask-position: center;
  mask-repeat: no-repeat;
  background-color: currentColor;
  margin: 1em auto 2em;
  height: 4rem;
}

.wc-block-checkout .wc-block-components-local-pickup-select .wc-block-components-radio-control__label {
  font-weight: bold;
}
.wc-block-checkout .wc-block-checkout__terms a {
  text-decoration: underline;
}
.wc-block-checkout__sidebar .wc-block-components-product-name {
  flex-grow: 0;
}

.wc-block-components-product-details {
  font-style: italic;
}
.wc-block-components-product-metadata__description {
  display: none;
}

.wooac-popup .wooac-action {
  display: flex;
  gap: 0.5rem;
  flex-wrap: wrap;
  margin-inline: 0;
}
.wooac-popup .wooac-action a {
  margin-inline: 0;
}

.wpcpo-total {
  display: none;
}

/**
 * Shared WooCommerce product-card look (woocommerce/content-product.php),
 * used by the shop grid (_shop.scss), related/up-sell lists and the home-page
 * slider (_product-slider.scss). Context files only add layout/behaviour.
 *
 * The `.woocommerce …` branch is there to outrank woocommerce.css on the shop;
 * the bare `ul.products …` branch covers the slider (outside any .woocommerce).
 */
/* Kill woocommerce.css's float clearfix — the pseudo-boxes become phantom grid cells. */
.woocommerce ul.products::before,
.woocommerce ul.products::after,
ul.products::before,
ul.products::after {
  content: none;
}

.woocommerce ul.products li.product,
ul.products li.product {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  margin: 0;
  text-align: left;
  /* Hover-capable devices: reveal the add-to-cart on hover / keyboard focus only.
     Touch devices always show it (the slider adds its own off-slide override). */
}
.woocommerce ul.products li.product a.woocommerce-loop-product__link,
ul.products li.product a.woocommerce-loop-product__link { /* `a` to outrank woocommerce.css's `a.woocommerce-loop-product__link { display: block }` */
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  color: inherit;
  text-decoration: none;
}
.woocommerce ul.products li.product a.woocommerce-loop-product__link img,
ul.products li.product a.woocommerce-loop-product__link img {
  width: 100%;
  height: auto;
  aspect-ratio: 1;
  margin: 0; /* woocommerce.css sets 0 0 1em */
  object-fit: contain;
}
.woocommerce ul.products li.product .woocommerce-loop-product__title,
ul.products li.product .woocommerce-loop-product__title {
  padding: 0;
  font-family: "Ophian", "Petrona", Georgia, serif;
  font-size: var(--fs-1);
  font-weight: 700;
  letter-spacing: -0.0125rem;
  color: var(--primary-dark);
}
.woocommerce ul.products li.product .price,
ul.products li.product .price {
  display: block;
  margin: 0; /* woocommerce.css sets margin-bottom: .5em */
  font-family: "Geist", sans-serif;
  font-variant-numeric: lining-nums tabular-nums;
  color: var(--primary);
  /* Nudge up to tighten the gap under the title inside the track. */
  transform: translateY(-0.5rem);
}
@media screen and (max-width: 45rem) {
  .woocommerce ul.products li.product .price,
  ul.products li.product .price {
    font-size: var(--fs--1);
  }
}
.woocommerce ul.products li.product .product-tags,
ul.products li.product .product-tags {
  position: absolute;
  inset-block-start: 0;
  inset-inline-start: 0;
  z-index: 1;
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem;
  margin: 0;
  padding: 0;
  list-style: none;
}
.woocommerce ul.products li.product .product-tags:before, .woocommerce ul.products li.product .product-tags:after,
ul.products li.product .product-tags:before,
ul.products li.product .product-tags:after {
  content: none;
}
.woocommerce ul.products li.product .product-tags__tag,
ul.products li.product .product-tags__tag {
  padding: 0.125rem 0.5rem;
  font-family: "Geist", sans-serif;
  font-size: var(--fs--1);
  line-height: 1.4;
  background: var(--accent);
  color: var(--primary-dark);
}
.woocommerce ul.products li.product .onsale,
ul.products li.product .onsale {
  position: absolute;
  inset-block-start: 0;
  inset-inline-end: 0;
  padding: 0.125rem 0.5rem;
  background: var(--secondary);
  color: var(--white);
}
.woocommerce ul.products li.product .loop-add-to-cart,
ul.products li.product .loop-add-to-cart {
  position: relative;
  margin-top: 0.75rem;
  transition: opacity 0.25s ease-in-out;
  /* WooCommerce's AJAX "View cart" link */
}
.woocommerce ul.products li.product .loop-add-to-cart a.added_to_cart,
ul.products li.product .loop-add-to-cart a.added_to_cart {
  position: absolute;
  inset-block-start: calc(100% + 0.25rem);
  inset-inline-start: 0;
  opacity: 0;
}
.woocommerce ul.products li.product .loop-add-to-cart .button,
ul.products li.product .loop-add-to-cart .button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin: 0 !important;
  white-space: nowrap;
  padding-inline: 0.5rem;
}
@media (hover: hover) {
  .woocommerce ul.products li.product .loop-add-to-cart:not(:has(.added_to_cart)),
  ul.products li.product .loop-add-to-cart:not(:has(.added_to_cart)) {
    opacity: 0;
  }
  .woocommerce ul.products li.product:hover .loop-add-to-cart, .woocommerce ul.products li.product:focus-within .loop-add-to-cart,
  ul.products li.product:hover .loop-add-to-cart,
  ul.products li.product:focus-within .loop-add-to-cart {
    opacity: 1;
  }
}

.wpcpo-options {
  display: flex;
  flex-direction: column;
  align-items: start;
  gap: 1rem;
  margin-bottom: 1.5rem;
}
.wpcpo-options .form-row {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  padding: 0 !important;
}
.wpcpo-options .wpcpo-option {
  display: flex;
  flex-direction: column;
  gap: 0.375rem;
}
.wpcpo-options .wpcpo-option label {
  font-size: var(--fs-1);
  display: flex;
  align-items: baseline;
  gap: 0.5rem;
  cursor: pointer;
  line-height: 1.15 !important;
  padding: 0.5rem 1rem;
  border: 1px solid rgba(0, 0, 0, 0.1);
  border-radius: 99px;
  outline-offset: 0.25rem;
}
.wpcpo-options .wpcpo-option label input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}
.wpcpo-options .wpcpo-option label:before {
  display: inline-block;
  width: 1rem;
  font-size: 1rem;
  font-weight: 300;
  font-family: "Font Awesome 6 Pro";
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  display: var(--fa-display, inline-block);
  font-style: normal;
  font-variant: normal;
  line-height: 1;
  text-rendering: auto;
}
.wpcpo-options .wpcpo-option label:has(input[value=bonen]):before {
  content: "\e13f";
}
.wpcpo-options .wpcpo-option label:has(input[value=gemalen]):before {
  content: "\e002";
}
.wpcpo-options .wpcpo-option label:has(input:checked) {
  color: var(--secondary);
  border-color: var(--secondary);
}
.wpcpo-options .wpcpo-option label:has(input:focus-visible) {
  outline: 1px dotted var(--secondary);
}
.wpcpo-options .wpcpo-option label > span:has(.label-price:empty) {
  display: none;
}
.wpcpo-options .wpcpo-option.wpcpo-has-error {
  outline: 1px dashed transparent;
  outline-offset: 0.5rem;
  border-radius: 0.5rem;
}
.wpcpo-options .wpcpo-option.wpcpo-has-error label {
  color: inherit;
}
.wpcpo-options .wpcpo-option.wpcpo-has-error .wpcpo-option-name {
  color: var(--wpcpo-error);
}
.wpcpo-options .wpcpo-option.wpcpo-flash {
  transition: outline-color 1s ease-in-out;
  animation: wpcpo-error-flash 1s ease-in-out 2;
}

.single_add_to_cart_button.wpcpo-disabled {
  pointer-events: auto !important;
}

@keyframes wpcpo-error-flash {
  0%, 100% {
    outline-color: transparent;
  }
  50% {
    outline-color: var(--wpcpo-error);
  }
}
/**
 * Shop archive + single product layout.
 * Wrappers: lib/woocommerce/functions.php (_themename_woocommerce_wrapper_start)
 * Templates: woocommerce/archive-product.php, woocommerce/single-product.php
 *
 * The product-card look is shared — see _product.scss. This file only handles
 * the archive chrome (header, ordering, grid, pagination) and the single view.
 */
.shop {
  /* Breadcrumb + products header, full width above the sidebar/grid */
  /* Sidebar + grid layout (wrappers: lib/woocommerce/functions.php) */
  /* Archive header (woocommerce/loop/header.php) — spacing handled by .shop__head */
  /* Product grid (woocommerce/loop/loop-start.php) */
  /* Pagination (woocommerce_pagination) */
}
.shop .shop__head {
  margin-bottom: clamp(2rem, 5vw, 3.5rem);
}
.shop .woocommerce-breadcrumb {
  color: var(--primary);
  font-size: var(--fs--1);
  margin-block: clamp(1rem, 0.5rem + 2vw, 2rem);
}
.shop .shop__layout {
  /* Below `medium` the filter is position:fixed (see .shop-filter), so the
     sidebar collapses to nothing and the grid gives way to normal flow. */
}
@media screen and (min-width: 62rem) {
  .shop .shop__layout {
    display: grid;
    grid-template-columns: 1fr 3fr;
    gap: clamp(2rem, 5vw, 4rem);
    align-items: start;
  }
}
@media screen and (min-width: 62rem) {
  .shop .shop__sidebar {
    position: sticky;
    inset-block-start: 2rem;
  }
}
.shop .woocommerce-products-header {
  margin: 0;
}
.shop .woocommerce-products-header__title {
  margin: 0;
  font-family: "Ophian", "Petrona", Georgia, serif;
  color: var(--primary-dark);
}
.shop ul.products {
  --products-grid-size: 14rem;
  display: grid;
  grid-template-columns: repeat(2, 1fr); /* 2-up on mobile */
  gap: 1.5rem 1rem;
  margin: 0;
  padding: 0;
  list-style: none;
}
@media screen and (min-width: 45rem) {
  .shop ul.products {
    grid-template-columns: repeat(auto-fill, minmax(min(var(--products-grid-size), 100%), 1fr));
    gap: 3rem 2rem;
  }
}
@media screen and (max-width: 45rem) {
  .shop ul.products .loop-add-to-cart {
    font-size: 0.75rem;
  }
  .shop ul.products .loop-add-to-cart .button {
    padding: 0.25rem 0.5rem;
    font-size: 0.625rem;
  }
}
.shop .woocommerce-pagination {
  margin-block-start: 3rem;
}
.shop .woocommerce-pagination ul {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin: 0;
  padding: 0;
  border: none !important;
  list-style: none;
}
.shop .woocommerce-pagination ul li {
  border: none !important;
}
.shop .woocommerce-pagination a,
.shop .woocommerce-pagination span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.5rem;
  padding: 0.5rem;
  text-decoration: none;
  background: transparent !important;
}
.shop .woocommerce-pagination a:hover, .shop .woocommerce-pagination a:focus,
.shop .woocommerce-pagination span:hover,
.shop .woocommerce-pagination span:focus {
  color: var(--secondary) !important;
}
.shop .woocommerce-pagination .current {
  font-weight: 700;
  color: var(--secondary) !important;
}

/* Single product (woocommerce/content-single-product.php) */
.single-product {
  /* Tabs render as plain stacked sections, not a JS tab switcher — see
     woocommerce/single-product/tabs/tabs.php. */
  /* Tabs + related products sit full-width under the two columns */
}
.single-product div.product {
  display: grid;
  grid-template-columns: 3fr 5fr;
  gap: 3rem;
}
@media screen and (max-width: 62rem) {
  .single-product div.product {
    display: flex;
    flex-direction: column;
    gap: 2rem;
  }
}
.single-product .woocommerce-product-gallery {
  grid-row: span 2;
  position: relative;
  max-width: 100%;
}
.single-product .woocommerce-product-gallery img {
  width: 100%;
  height: auto;
}
.single-product .summary {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  /* Tags above the title (lib/woocommerce/functions.php) — same pill look as
     the card (_product.scss), but in normal flow instead of over the image. */
}
.single-product .summary .product-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem;
  margin: 0;
  padding: 0;
  list-style: none;
}
.single-product .summary .product-tags:before, .single-product .summary .product-tags:after {
  content: none;
}
.single-product .summary .product-tags__tag {
  padding: 0.125rem 0.5rem;
  font-family: "Geist", sans-serif;
  font-size: var(--fs--1);
  line-height: 1.4;
  background: var(--accent);
  color: var(--primary-dark);
}
.single-product .summary .product_title {
  margin: 0;
  font-family: "Ophian", "Petrona", Georgia, serif;
  color: var(--primary-dark);
}
.single-product .summary .price {
  font-family: "Geist", sans-serif;
  font-size: var(--fs-2);
  font-variant-numeric: lining-nums tabular-nums;
  color: var(--primary) !important;
  /* Nudge up to tighten the gap under the title inside the track. */
  transform: translateY(-0.75rem);
}
.single-product .summary form.cart {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin: 0.5rem 0;
}
.single-product .summary form.cart.variations_form {
  flex-direction: column;
}
.single-product .summary form.cart.variations_form .woocommerce-variation-add-to-cart {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}
.single-product .summary form.cart:before, .single-product .summary form.cart:after {
  content: none !important;
}
.single-product .summary form.cart .button {
  float: none !important;
  vertical-align: unset !important;
}
.single-product .product-sections {
  grid-row: 2;
  grid-column: 2;
  display: flex;
  flex-direction: column;
  gap: 2rem;
}
.single-product .product-sections__section h2 {
  font-family: "Ophian", "Petrona", Georgia, serif;
  color: var(--primary-dark);
}
.single-product .related.products,
.single-product .up-sells.products {
  grid-column: 1/-1;
  margin-top: 2rem;
}
.single-product .related.products h2,
.single-product .up-sells.products h2 {
  font-family: "Ophian", "Petrona", Georgia, serif;
  color: var(--primary-dark);
}
.single-product .related.products ul.products,
.single-product .up-sells.products ul.products {
  --products-grid-size: 16rem;
  margin: 1.5rem 0 0;
  padding: 0;
}

/**
* Shop sidebar filter (woocommerce/functions.php: _themename_shop_category_filter).
* Two groups — product categories (hierarchical, children nested in
* .shop-filter__sublist) and product tags (flat).
* Collapsible <details>: pinned near the bottom of the viewport as a floating
* "Filters" panel on mobile, a plain sidebar block from `medium` up (where
* src/assets/js/components/shop-filter.js forces it open + non-interactive).
*/
.shop-filter {
  /* "Filters wissen" reset — only rendered on a filtered (term archive) view */
  /* Nested child categories */
}
.shop-filter__toggle {
  display: flex;
  align-items: center;
  gap: 0.625rem;
  margin: 0 0 1.5rem;
  cursor: pointer;
  list-style: none; /* hide default disclosure triangle (FF) */
}
.shop-filter__toggle::-webkit-details-marker {
  display: none; /* …and Chrome/Safari */
}
.shop-filter__icon {
  font-size: var(--fs-0);
  color: var(--primary);
}
.shop-filter__title {
  font-family: "Ophian", "Petrona", Georgia, serif;
  font-size: var(--fs-1);
  color: var(--primary-dark);
}
.shop-filter__body {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
}
.shop-filter__clear {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  align-self: start;
  font-size: var(--fs--1);
  color: var(--secondary) !important;
  text-decoration: none !important;
  border-bottom: 1px solid transparent;
}
.shop-filter__clear:hover, .shop-filter__clear:focus-visible {
  border-bottom: 1px solid currentColor;
}
.shop-filter__group-title {
  display: inline-block;
  margin: 0 0 0.5rem;
  padding: 0.125em 0.375em;
  font-family: "Geist", sans-serif;
  font-size: var(--fs--1);
  line-height: 1.4;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--primary);
  background: var(--accent);
}
@media screen and (max-width: 62rem) {
  .shop-filter__group-title {
    font-size: var(--fs--2);
  }
}
.shop-filter__list, .shop-filter__sublist {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  margin: 0;
  padding: 0;
  list-style: none;
}
.shop-filter__list {
  padding-left: 0.25rem;
}
.shop-filter__sublist {
  margin-block: 0.25rem 0.5rem;
  padding-inline-start: 0.875rem;
  border-inline-start: 1px solid var(--border);
}
.shop-filter__sublist .shop-filter__link {
  font-size: 0.875em;
}
.shop-filter__link {
  display: flex;
  gap: 1rem;
  justify-content: space-between;
  align-items: baseline;
  padding: 0.25rem 0;
  color: var(--primary);
  text-decoration: none;
}
.shop-filter__link:hover, .shop-filter__link:focus-visible {
  color: var(--secondary);
}
.shop-filter__link[aria-current] {
  font-weight: 700;
  color: var(--primary-dark);
}
.shop-filter__count {
  font-family: "Geist", sans-serif;
  font-size: var(--fs--1);
  font-variant-numeric: lining-nums tabular-nums;
  color: var(--primary);
}
@media screen and (max-width: 62rem) {
  .shop-filter {
    position: fixed;
    z-index: 50;
    inset-inline: 1rem;
    inset-block-end: 1rem;
  }
  .shop-filter__disclosure {
    display: flex;
    flex-direction: column-reverse; /* body expands upward, above the toggle */
    overflow: hidden;
    background: var(--accent-light);
    border: 1px solid var(--border);
    border-radius: 0.75rem;
    box-shadow: 0 0.5rem 1.5rem rgba(0, 0, 0, 0.15);
    /* Animate expand/collapse via the content's height (needs
       interpolate-size to transition to/from `auto`). */
    interpolate-size: allow-keywords;
  }
  .shop-filter__disclosure::details-content {
    block-size: 0;
    overflow: hidden;
    transition: block-size 0.3s ease, content-visibility 0.3s ease allow-discrete;
  }
  .shop-filter__disclosure[open]::details-content {
    block-size: auto;
  }
}
@media screen and (max-width: 62rem) and (prefers-reduced-motion: reduce) {
  .shop-filter__disclosure::details-content {
    transition: none;
  }
}
@media screen and (max-width: 62rem) {
  .shop-filter__toggle {
    margin: 0;
    padding: 0.875rem 1.25rem;
    /* chevron */
  }
  .shop-filter__toggle::after {
    content: "";
    margin-inline-start: auto;
    width: 0.5rem;
    height: 0.5rem;
    border-right: 2px solid currentColor;
    border-bottom: 2px solid currentColor;
    transform: translateY(-2px) rotate(45deg);
    transition: transform 0.2s ease;
  }
  .shop-filter__disclosure[open] .shop-filter__toggle {
    border-top: 1px solid var(--border);
  }
  .shop-filter__disclosure[open] .shop-filter__toggle::after {
    transform: translateY(2px) rotate(225deg);
  }
  .shop-filter__body {
    gap: 1.25rem;
    max-height: 50vh;
    overflow-y: auto;
    padding: 0.875rem 1.25rem 1rem;
  }
}

._themename-package-size {
  white-space: nowrap;
  font-size: x-small;
}

/**
 * Slick carousel of WooCommerce product cards.
 * Markup: template-parts/components/product-slider.php + woocommerce/content-product.php
 * Init:   src/assets/js/components/carousel.js (.js-product-slider)
 *
 * The card look — including the hover-reveal add-to-cart — lives in _product.scss.
 * This file only adds the carousel track, the peek/spacing, and the touch-device
 * override that keys the reveal off Slick's in-view slides.
 */
.product-slider {
  display: grid !important; /* Fix for Slick living inside a grid/flex column */
  margin: 0;
  padding: 0;
  list-style: none;
}
.product-slider .slick-list {
  min-width: 0; /* Fix for Slick overflow issue inside a grid */
  overflow: visible !important;
  margin-inline: -1rem;
  padding-right: 3rem; /* peek the next card */
}
@media screen and (max-width: 45rem) {
  .product-slider .slick-list {
    padding-right: 18%;
  }
}
.product-slider .slick-slide {
  height: auto;
  margin-inline: 1rem;
}
@media (hover: none) {
  .product-slider .slick-initialized .slick-slide:not(.slick-active) .loop-add-to-cart {
    opacity: 0;
  }
}

/* Footer row under the slider: Slick dots (left) + link to the shop (right). */
.product-slider__footer {
  margin-top: 2rem;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 2rem;
}
@media screen and (max-width: 45rem) {
  .product-slider__footer {
    flex-direction: column;
    justify-content: flex-start;
  }
}
.product-slider__footer .product-slider__dots {
  display: flex;
}
.product-slider__footer .product-slider__dots:empty {
  display: none;
}

/**
 * "- 1 +" quantity stepper on the WooCommerce loop product cards
 * (woocommerce/loop/add-to-cart.php) and the single product page
 * (woocommerce/global/quantity-input.php).
 * Behaviour: src/assets/js/components/quantity.js
 */
.loop-add-to-cart {
  display: flex;
  gap: 0.5rem;
  align-items: stretch;
}
.loop-add-to-cart .button {
  flex: 1;
}

.quantity-stepper {
  display: inline-flex;
  align-items: stretch;
  border: 1px solid var(--border);
}
.quantity-stepper__button {
  display: inline-flex;
  justify-content: center;
  align-items: center;
  width: 2em;
  aspect-ratio: 1;
  padding: 0;
  font-size: 1.125em;
  line-height: 1;
  cursor: pointer;
  color: var(--primary);
  background: none;
  border: 0;
  transition: background-color 0.2s ease;
}
.quantity-stepper__button:hover, .quantity-stepper__button:focus-visible {
  background-color: var(--accent-light);
}
@media screen and (max-width: 45rem) {
  .quantity-stepper__button {
    width: 1.5em;
  }
}
.quantity-stepper__input {
  width: 2.5rem;
  aspect-ratio: 1;
  padding: 0.25rem 0;
  font: inherit;
  text-align: center;
  color: var(--text);
  background: none;
  border: 0;
  border-inline: 1px solid var(--border);
  appearance: textfield;
  -moz-appearance: textfield;
}
.quantity-stepper__input::-webkit-outer-spin-button, .quantity-stepper__input::-webkit-inner-spin-button {
  margin: 0;
  -webkit-appearance: none;
}
.quantity-stepper__input:focus-visible {
  outline: 2px solid var(--primary);
  outline-offset: -2px;
}
@media screen and (max-width: 45rem) {
  .quantity-stepper__input {
    width: 1.5em;
  }
}

/**
 * Single product page: WooCommerce renders the stepper as its `.quantity`
 * wrapper inside `form.cart`. Override woocommerce.css's float and the fixed
 * `.qty` width so it matches the loop stepper.
 */
.woocommerce div.product form.cart .quantity-stepper {
  float: none !important;
  margin: 0 !important;
}
.woocommerce div.product form.cart .quantity-stepper .quantity-stepper__input {
  width: 2.5rem;
}
@media screen and (max-width: 45rem) {
  .woocommerce div.product form.cart .quantity-stepper .quantity-stepper__input {
    width: 2em;
  }
}

/* General */
.woocommerce-account .woocommerce-MyAccount {
  display: grid;
  grid-template-columns: 1fr 3fr;
  gap: 4rem;
}
@media screen and (max-width: 62rem) {
  .woocommerce-account .woocommerce-MyAccount {
    grid-template-columns: 1fr;
    gap: 2rem;
  }
}
.woocommerce-account .woocommerce-MyAccountLogin {
  max-width: 62ch;
  margin-inline: auto;
}
.woocommerce-account .woocommerce-MyAccountLogin:has(> .col2-set) {
  max-width: none;
}
.woocommerce-account .woocommerce-MyAccount,
.woocommerce-account .woocommerce-MyAccountLogin {
  min-height: 40vh;
}
.woocommerce-account .woocommerce-MyAccount h2:not(.cta *),
.woocommerce-account .woocommerce-MyAccountLogin h2:not(.cta *) {
  margin-bottom: 1.5rem;
}
.woocommerce-account .woocommerce-MyAccount form,
.woocommerce-account .woocommerce-MyAccount .woocommerce-address-fields__field-wrapper,
.woocommerce-account .woocommerce-MyAccountLogin form,
.woocommerce-account .woocommerce-MyAccountLogin .woocommerce-address-fields__field-wrapper {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
}
.woocommerce-account .woocommerce-MyAccount :has(> .form-row-first),
.woocommerce-account .woocommerce-MyAccountLogin :has(> .form-row-first) {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.5rem;
}
.woocommerce-account .woocommerce-MyAccount :has(> .form-row-first) > :not(.form-row-first, .form-row-last),
.woocommerce-account .woocommerce-MyAccountLogin :has(> .form-row-first) > :not(.form-row-first, .form-row-last) {
  grid-column: 1/-1;
}
@media screen and (max-width: 45rem) {
  .woocommerce-account .woocommerce-MyAccount :has(> .form-row-first),
  .woocommerce-account .woocommerce-MyAccountLogin :has(> .form-row-first) {
    grid-template-columns: 1fr;
  }
}
.woocommerce-account .woocommerce-MyAccount .form-row,
.woocommerce-account .woocommerce-MyAccountLogin .form-row {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  margin: 0;
}
.woocommerce-account .woocommerce-MyAccount .clear,
.woocommerce-account .woocommerce-MyAccountLogin .clear {
  display: none;
}
.woocommerce-account .woocommerce-MyAccount label:has(.required)::after,
.woocommerce-account .woocommerce-MyAccountLogin label:has(.required)::after {
  content: none !important;
}
.woocommerce-account .woocommerce-MyAccount select,
.woocommerce-account .woocommerce-MyAccount .select2-selection,
.woocommerce-account .woocommerce-MyAccountLogin select,
.woocommerce-account .woocommerce-MyAccountLogin .select2-selection {
  height: auto;
}
.woocommerce-account .woocommerce-MyAccount fieldset,
.woocommerce-account .woocommerce-MyAccountLogin fieldset {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  padding: 1.5rem;
  border: 1px solid var(--border);
}
.woocommerce-account .woocommerce-MyAccount fieldset legend,
.woocommerce-account .woocommerce-MyAccountLogin fieldset legend {
  padding-inline: 0.5rem;
}
.woocommerce-account .woocommerce-MyAccount button[type=submit],
.woocommerce-account .woocommerce-MyAccountLogin button[type=submit] {
  align-self: start;
}
.woocommerce-account .woocommerce-MyAccount-navigation ul {
  list-style: none;
  padding: 0;
  margin: 0;
  border-top: 1px solid var(--border);
}
.woocommerce-account .woocommerce-MyAccount-navigation li {
  margin: 0 !important;
  border-bottom: 1px solid var(--border);
}
.woocommerce-account .woocommerce-MyAccount-navigation a {
  display: flex;
  align-items: center;
  gap: 1rem;
  padding: 0.75rem 0.25rem;
  text-decoration: none !important;
}
.woocommerce-account .woocommerce-MyAccount-navigation a:before {
  width: 1.25em;
  text-align: center;
  opacity: 0.6;
  font-family: "Font Awesome 6 Pro";
  font-weight: 300;
  font-style: normal;
  line-height: 1;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  transition: opacity 0.3s ease;
}
.woocommerce-account .woocommerce-MyAccount-navigation a:hover:before {
  opacity: 1;
}
.woocommerce-account .woocommerce-MyAccount-navigation .is-active a {
  color: var(--secondary);
  font-weight: 700;
}
.woocommerce-account .woocommerce-MyAccount-navigation .is-active a:before {
  opacity: 1;
}
.woocommerce-account .woocommerce-MyAccount-navigation .woocommerce-MyAccount-navigation-link--dashboard a:before {
  content: "\f624";
}
.woocommerce-account .woocommerce-MyAccount-navigation .woocommerce-MyAccount-navigation-link--orders a:before {
  content: "\f466";
}
.woocommerce-account .woocommerce-MyAccount-navigation .woocommerce-MyAccount-navigation-link--edit-address a:before {
  content: "\f3c5";
}
.woocommerce-account .woocommerce-MyAccount-navigation .woocommerce-MyAccount-navigation-link--payment-methods a:before {
  content: "\f09d";
}
.woocommerce-account .woocommerce-MyAccount-navigation .woocommerce-MyAccount-navigation-link--edit-account a:before {
  content: "\f007";
}
.woocommerce-account .woocommerce-MyAccount-navigation .woocommerce-MyAccount-navigation-link--vat-number a:before {
  content: "\f570";
}
.woocommerce-account .woocommerce-MyAccount-navigation .woocommerce-MyAccount-navigation-link--customer-logout a:before {
  content: "\f2f5";
}
.woocommerce-account .account-ctas {
  display: grid;
  grid-template-columns: repeat(auto-fill, min(20rem, 100%));
  gap: 1.5rem;
  margin-top: 2.5rem;
}
@media screen and (max-width: 45rem) {
  .woocommerce-account .account-ctas {
    display: flex;
    flex-direction: column;
  }
}
.woocommerce-account .woocommerce-Addresses {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 2.5rem;
}
@media screen and (max-width: 45rem) {
  .woocommerce-account .woocommerce-Addresses {
    grid-template-columns: 1fr;
  }
}
.woocommerce-account .woocommerce-Address {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}
.woocommerce-account .woocommerce-Address-title {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}
.woocommerce-account .woocommerce-Address-title h2 {
  margin: 0;
}
.woocommerce-account .woocommerce-Address a.edit {
  align-self: start;
}
.woocommerce-account .woocommerce-customer-details address {
  font-style: normal;
  line-height: 1.5;
}
.woocommerce-account mark {
  background: none;
  color: inherit;
  font-weight: 700;
}
.woocommerce-account .woocommerce-notices-wrapper:empty {
  display: none;
}
.woocommerce-account wc-order-attribution-inputs {
  display: none;
}

.woocommerce-account .col2-set {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 4rem;
}
.woocommerce-account .col2-set > * {
  width: auto !important;
  float: none !important;
}
@media screen and (max-width: 62rem) {
  .woocommerce-account .col2-set {
    grid-template-columns: 1fr;
  }
}

.woocommerce-form__label-for-checkbox {
  display: flex !important;
  align-items: center;
  gap: 0.5rem;
}

.woocommerce-privacy-policy-text {
  font-size: var(--fs--1);
}
.woocommerce-privacy-policy-text a {
  text-decoration: underline;
}

.password-input {
  position: relative;
  display: block;
}
.password-input .show-password-input {
  position: absolute;
  right: 0;
  bottom: 0.5rem;
}

.woocommerce-LostPassword {
  margin: 0;
}
.woocommerce-LostPassword a {
  text-decoration: underline;
}

/* Content types */
.shops__loop {
  display: grid;
  gap: 2rem;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  align-items: stretch;
}
.shops__item {
  display: grid;
  grid-template-rows: auto 1fr;
}
.shops__item:target {
  outline: 1px dotted transparent;
  outline-offset: 0.5rem;
  animation: shops-target-flash 1s ease-in-out 2;
}
.shops__item__image {
  grid-row: 1;
  grid-column: 1/-1;
}
.shops__item__content {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  border: 1px dotted var(--border);
  border-top: none;
  padding: 1rem;
}
.shops__item__title {
  grid-row: 1;
  grid-column: 1/-1;
  align-self: end;
  justify-self: start;
  padding: 0.75rem 1rem;
  margin: 0.375rem;
  min-width: 40%;
  background-color: var(--accent-light);
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  font-size: 1.25rem;
  font-family: "Ophian", "Petrona", Georgia, serif;
  font-weight: bold;
  line-height: 1.25;
}
.shops__item__title span {
  display: flex;
  flex-direction: column;
}
.shops__item__title small {
  font-size: 0.8em;
  color: var(--secondary);
}

@keyframes shops-target-flash {
  0%, 100% {
    outline-color: transparent;
  }
  50% {
    outline-color: var(--secondary);
  }
}
.locations {
  /* Region: sticky title | cities, split by a vertical line */
  /* Cities fill a 1 / 2 / 3 column grid. A city spans as many columns as it has
     locations (max: full row), and its list repeats those columns with the same
     gap so every location lines up with the outer grid. */
}
@media screen and (max-width: 62rem) {
  .locations__heading {
    position: sticky;
    top: 1rem;
    isolation: isolate;
    z-index: 2;
  }
  .locations__heading:before {
    content: "";
    position: absolute;
    inset: -1rem -50vw -0.5rem;
    background-color: var(--accent-light);
    z-index: -1;
  }
}
.locations__loop {
  display: grid;
  gap: 3rem;
}
.locations__loop__separator:first-child {
  display: none;
}
@media screen and (min-width: 62rem) {
  .locations__loop__separator {
    display: none;
  }
}
.locations__region {
  display: grid;
  gap: var(--l);
}
@media screen and (min-width: 62rem) {
  .locations__region {
    grid-template-columns: 15rem 1fr;
    column-gap: 0;
    align-items: start;
  }
}
@media screen and (min-width: 62rem) {
  .locations__region__title {
    position: sticky;
    inset-block-start: 2rem;
    padding-inline-end: clamp(2rem, 4vw, 4rem);
  }
}
.locations__cities {
  --locations-col-gap: 1.75rem;
  display: grid;
  gap: 3rem var(--locations-col-gap);
}
@media screen and (min-width: 35rem) {
  .locations__cities {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media screen and (min-width: 75rem) {
  .locations__cities {
    grid-template-columns: repeat(3, 1fr);
  }
}
@media screen and (min-width: 62rem) {
  .locations__cities {
    align-self: stretch;
    padding-inline-start: clamp(2rem, 4vw, 4rem);
    border-inline-start: 1px solid var(--border);
  }
}
.locations__city {
  display: grid;
  align-content: start;
  row-gap: 0.5rem;
}
@media screen and (min-width: 35rem) {
  .locations__city:has(.locations__list > :nth-child(2)) {
    grid-column: span 2;
  }
  .locations__city:has(.locations__list > :nth-child(2)) .locations__list {
    grid-template-columns: repeat(2, 1fr);
  }
  .locations__city:has(.locations__list > :nth-child(3)) {
    grid-column: 1/-1;
  }
}
@media screen and (min-width: 75rem) {
  .locations__city:has(.locations__list > :nth-child(3)) .locations__list {
    grid-template-columns: repeat(3, 1fr);
  }
}
.locations__city__title {
  font-family: "Geist", sans-serif;
  font-size: 0.75rem;
  text-transform: uppercase;
  color: var(--secondary);
  display: flex;
  align-items: center;
  gap: 0.5rem;
}
.locations__city__title::after {
  content: "";
  display: block;
  border-bottom: 1px dotted var(--secondary);
  opacity: 0.5;
  flex: 1;
}
.locations__list {
  display: grid;
  gap: 1.5rem var(--locations-col-gap);
}
.locations__item {
  display: grid;
  align-content: start;
  gap: 0.5rem;
}
.locations__item__title {
  font-size: 1.125rem;
}

:where(.flow) > :where(:not(:first-child)) {
  margin-top: var(--s);
}

:where(.flow[flow-size=r0]) > :where(:not(:first-child)) {
  margin-top: 0rem;
}

:where(.flow[flow-size=r025]) > :where(:not(:first-child)) {
  margin-top: 0.25rem;
}

:where(.flow[flow-size=r05]) > :where(:not(:first-child)) {
  margin-top: 0.5rem;
}

:where(.flow[flow-size=r075]) > :where(:not(:first-child)) {
  margin-top: 0.75rem;
}

:where(.flow[flow-size=r1]) > :where(:not(:first-child)) {
  margin-top: 1rem;
}

:where(.flow[flow-size=r125]) > :where(:not(:first-child)) {
  margin-top: 1.25rem;
}

:where(.flow[flow-size=r15]) > :where(:not(:first-child)) {
  margin-top: 1.5rem;
}

:where(.flow[flow-size=r175]) > :where(:not(:first-child)) {
  margin-top: 1.75rem;
}

:where(.flow[flow-size=r2]) > :where(:not(:first-child)) {
  margin-top: 2rem;
}

:where(.flow[flow-size=r25]) > :where(:not(:first-child)) {
  margin-top: 2.5rem;
}

:where(.flow[flow-size=r3]) > :where(:not(:first-child)) {
  margin-top: 3rem;
}

:where(.flow[flow-size=r4]) > :where(:not(:first-child)) {
  margin-top: 4rem;
}

:where(.flow[flow-size=r5]) > :where(:not(:first-child)) {
  margin-top: 5rem;
}

:where(.flow[flow-size=r6]) > :where(:not(:first-child)) {
  margin-top: 6rem;
}

:where(.flow[flow-size=r8]) > :where(:not(:first-child)) {
  margin-top: 8rem;
}

:where(.flow[flow-size=r10]) > :where(:not(:first-child)) {
  margin-top: 10rem;
}

@media screen and (min-width: 35rem) {
  .hidden-from-xsmall {
    display: none !important;
  }
}
@media screen and (max-width: 35rem) {
  .hidden-until-xsmall {
    display: none !important;
  }
}
@media screen and (min-width: 45rem) {
  .hidden-from-small {
    display: none !important;
  }
}
@media screen and (max-width: 45rem) {
  .hidden-until-small {
    display: none !important;
  }
}
@media screen and (min-width: 62rem) {
  .hidden-from-medium {
    display: none !important;
  }
}
@media screen and (max-width: 62rem) {
  .hidden-until-medium {
    display: none !important;
  }
}
@media screen and (min-width: 75rem) {
  .hidden-from-large {
    display: none !important;
  }
}
@media screen and (max-width: 75rem) {
  .hidden-until-large {
    display: none !important;
  }
}
@media screen and (min-width: 88rem) {
  .hidden-from-xlarge {
    display: none !important;
  }
}
@media screen and (max-width: 88rem) {
  .hidden-until-xlarge {
    display: none !important;
  }
}
.hidden {
  display: none !important;
}

.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}

.clr-greyscale-950 {
  color: hsl(0, 0%, 93%);
}

.bg-greyscale-950 {
  background-color: hsl(0, 0%, 93%);
}

.clr-greyscale-900 {
  color: hsl(0, 0%, 88%);
}

.bg-greyscale-900 {
  background-color: hsl(0, 0%, 88%);
}

.clr-greyscale-850 {
  color: hsl(0, 0%, 83%);
}

.bg-greyscale-850 {
  background-color: hsl(0, 0%, 83%);
}

.clr-greyscale-800 {
  color: hsl(0, 0%, 78%);
}

.bg-greyscale-800 {
  background-color: hsl(0, 0%, 78%);
}

.clr-greyscale-750 {
  color: hsl(0, 0%, 73%);
}

.bg-greyscale-750 {
  background-color: hsl(0, 0%, 73%);
}

.clr-greyscale-700 {
  color: hsl(0, 0%, 68%);
}

.bg-greyscale-700 {
  background-color: hsl(0, 0%, 68%);
}

.clr-greyscale-650 {
  color: hsl(0, 0%, 63%);
}

.bg-greyscale-650 {
  background-color: hsl(0, 0%, 63%);
}

.clr-greyscale-600 {
  color: hsl(0, 0%, 58%);
}

.bg-greyscale-600 {
  background-color: hsl(0, 0%, 58%);
}

.clr-greyscale-550 {
  color: hsl(0, 0%, 53%);
}

.bg-greyscale-550 {
  background-color: hsl(0, 0%, 53%);
}

.clr-greyscale-500 {
  color: hsl(0, 0%, 48%);
}

.bg-greyscale-500 {
  background-color: hsl(0, 0%, 48%);
}

.clr-greyscale-450 {
  color: hsl(0, 0%, 43%);
}

.bg-greyscale-450 {
  background-color: hsl(0, 0%, 43%);
}

.clr-greyscale-400 {
  color: hsl(0, 0%, 38%);
}

.bg-greyscale-400 {
  background-color: hsl(0, 0%, 38%);
}

.clr-greyscale-350 {
  color: hsl(0, 0%, 33%);
}

.bg-greyscale-350 {
  background-color: hsl(0, 0%, 33%);
}

.clr-greyscale-300 {
  color: hsl(0, 0%, 28%);
}

.bg-greyscale-300 {
  background-color: hsl(0, 0%, 28%);
}

.clr-greyscale-250 {
  color: hsl(0, 0%, 23%);
}

.bg-greyscale-250 {
  background-color: hsl(0, 0%, 23%);
}

.clr-greyscale-200 {
  color: hsl(0, 0%, 18%);
}

.bg-greyscale-200 {
  background-color: hsl(0, 0%, 18%);
}

.clr-greyscale-150 {
  color: hsl(0, 0%, 13%);
}

.bg-greyscale-150 {
  background-color: hsl(0, 0%, 13%);
}

.clr-greyscale-100 {
  color: hsl(0, 0%, 8%);
}

.bg-greyscale-100 {
  background-color: hsl(0, 0%, 8%);
}

.clr-greyscale-50 {
  color: hsl(0, 0%, 3%);
}

.bg-greyscale-50 {
  background-color: hsl(0, 0%, 3%);
}

.clr-white {
  color: white;
}

.bg-white {
  background-color: white;
}

.clr-black {
  color: black;
}

.bg-black {
  background-color: black;
}

.clr-primary {
  color: #512F2E;
}

.bg-primary {
  background-color: #512F2E;
}

.clr-primary-dark {
  color: #281B1B;
}

.bg-primary-dark {
  background-color: #281B1B;
}

.clr-secondary {
  color: #CB333B;
}

.bg-secondary {
  background-color: #CB333B;
}

.clr-accent {
  color: #F1E6B2;
}

.bg-accent {
  background-color: #F1E6B2;
}

.clr-accent-light {
  color: #FDFBF2;
}

.bg-accent-light {
  background-color: #FDFBF2;
}

.clr-text {
  color: #3D3131;
}

.bg-text {
  background-color: #3D3131;
}

.clr-border {
  color: #DBDBDB;
}

.bg-border {
  background-color: #DBDBDB;
}

.clr-success {
  color: #00A86B;
}

.bg-success {
  background-color: #00A86B;
}

.clr-error {
  color: #E71346;
}

.bg-error {
  background-color: #E71346;
}

.clr-info {
  color: #FFB340;
}

.bg-info {
  background-color: #FFB340;
}

/*
@include colorAlias('primary', 'light', 'primary', '80');
@include colorAlias('primary', 'default', 'primary', '50');
@include colorAlias('primary', 'deep', 'primary', '25');
@include colorAlias('primary', 'dark', 'primary', '10');

@include colorAlias('accent-1', 'default', 'accent-1', '50');
@include colorAlias('accent-1', 'light', 'accent-1', '85');

@include colorAlias('desaturated', 'soft', 'desaturated', '75');
@include colorAlias('desaturated', 'default', 'desaturated', '50');
@include colorAlias('desaturated', 'deep', 'desaturated', '25');
*/
.fs--2 {
  font-size: clamp(0.64rem, 0.8515rem + -0.273vw, 0.7901rem);
}

.fs--1 {
  font-size: clamp(0.8rem, 0.9253rem + -0.1616vw, 0.8889rem);
}

.fs-0 {
  font-size: clamp(1rem, 1rem + 0vw, 1rem);
}

.fs-1 {
  font-size: clamp(1.125rem, 1.0739rem + 0.2273vw, 1.25rem);
}

.fs-2 {
  font-size: clamp(1.2656rem, 1.1442rem + 0.5398vw, 1.5625rem);
}

.fs-3 {
  font-size: clamp(1.4238rem, 1.2073rem + 0.9624vw, 1.9531rem);
}

.fs-4 {
  font-size: clamp(1.6018rem, 1.2583rem + 1.5265vw, 2.4414rem);
}

.fs-5 {
  font-size: clamp(1.802rem, 1.2908rem + 2.2722vw, 3.0518rem);
}

.fs-6 {
  font-size: clamp(2.0273rem, 1.2961rem + 3.2498vw, 3.8147rem);
}

.ff-base {
  font-family: "Petrona", serif;
}

.ff-display {
  font-family: "Ophian", "Petrona", Georgia, serif;
}

.ff-accent {
  font-family: "Geist", sans-serif;
}

.uppercase {
  text-transform: uppercase;
}

.lowercase {
  text-transform: lowercase;
}

.underline {
  text-decoration: underline !important;
}

.fw-bold {
  font-weight: bold;
}

.fs-italic {
  font-style: italic;
}

.limit-width-45 {
  max-width: 45rem;
}
.limit-width-45 p {
  max-width: 45rem;
}

.limit-width-50 {
  max-width: 50rem;
}
.limit-width-50 p {
  max-width: 50rem;
}

.limit-width-55 {
  max-width: 55rem;
}
.limit-width-55 p {
  max-width: 55rem;
}

.limit-width-60 {
  max-width: 60rem;
}
.limit-width-60 p {
  max-width: 60rem;
}

.limit-width-65 {
  max-width: 65rem;
}
.limit-width-65 p {
  max-width: 65rem;
}

.limit-width-70 {
  max-width: 70rem;
}
.limit-width-70 p {
  max-width: 70rem;
}

.text-left,
.text-start {
  text-align: left;
}

.text-center {
  text-align: center;
}
.text-center p,
.text-center li {
  margin-inline: auto;
}

.text-right,
.text-end {
  text-align: right;
  margin-inline-start: auto;
  margin-inline-end: 0;
}

.image-wrapper.centered {
  margin-left: auto;
  margin-right: auto;
}
.image-wrapper img {
  object-fit: cover;
  width: 100%;
  height: 100%;
}
.image-wrapper.icon {
  width: 100px;
  height: 100px;
}
.image-wrapper.icon img {
  object-fit: contain;
}
.image-wrapper[aspect-ratio="16/9"] {
  aspect-ratio: 16/9;
}
.image-wrapper[aspect-ratio="9/16"] {
  aspect-ratio: 9/16;
}
.image-wrapper[aspect-ratio="3/4"] {
  aspect-ratio: 3/4;
}
.image-wrapper[aspect-ratio="4/3"] {
  aspect-ratio: 4/3;
}
.image-wrapper[aspect-ratio="5/3"] {
  aspect-ratio: 5/3;
}
.image-wrapper[aspect-ratio="3/5"] {
  aspect-ratio: 3/5;
}
.image-wrapper[aspect-ratio="3/2"] {
  aspect-ratio: 3/2;
}
.image-wrapper[aspect-ratio="2/3"] {
  aspect-ratio: 2/3;
}
.image-wrapper[aspect-ratio="1/1"] {
  aspect-ratio: 1/1;
}
.image-wrapper[aspect-ratio="1/1"] img {
  aspect-ratio: 1/1;
}

/*
 * This utility class is meant to be set on the loop level (the parent container of the looping items).
 *
 * Set the following variables on the container to customize the loop-separators:
 *   --gap (will calculate the appropriate separator distance, defaults to 4rem)
 *   --separator-color (will set the separator color, defaults to $color-border)
 */
.loop-separators > *, .loop-separators--horizontal > * {
  position: relative;
}
.loop-separators > :not(:last-child):after, .loop-separators.slick-slider .slick-slide:after {
  content: "";
  position: absolute;
  top: 0;
  right: calc(var(--gap, 4rem) / -2);
  height: 100%;
  width: 0.5px;
  background-color: var(--separator-color, var(--border));
}
.loop-separators--horizontal > :not(:last-child):after {
  content: "";
  position: absolute;
  bottom: calc(var(--gap, 4rem) / -2);
  right: 0;
  width: 100%;
  height: 0.5px;
  background-color: var(--separator-color, var(--border));
}
@media screen and (min-width: 62rem) {
  .loop-separators > :nth-child(3n):after {
    display: none;
  }
}
@media screen and (max-width: 62rem) {
  .loop-separators > :nth-child(2n):after {
    display: none;
  }
}
@media screen and (max-width: 45rem) {
  .loop-separators > :nth-child(1n):after {
    display: none;
  }
}
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFic3RyYWN0cy9fY29sb3JzLnNjc3MiLCJhYnN0cmFjdHMvX21peGlucy5zY3NzIiwiYmFzZS9fZm9udC1mYWNlLnNjc3MiLCJhYnN0cmFjdHMvX3R5cG9ncmFwaHkuc2NzcyIsImJhc2UvX3Jlc2V0LnNjc3MiLCJiYXNlL19nZW5lcmFsLnNjc3MiLCJiYXNlL19mcmFtZXdvcmsuc2NzcyIsImJhc2UvX3Jvb3Quc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy91dG9waWEtY29yZS1zY3NzL3NyYy91dG9waWEuc2NzcyIsImxheW91dC9fY29udGFpbmVyLnNjc3MiLCJ1dGlsaXRpZXMvX3NwYWNpbmcuc2NzcyIsImFic3RyYWN0cy9fc2l6ZXMuc2NzcyIsImxheW91dC9fZ3JpZC5zY3NzIiwibGF5b3V0L19mbGV4LnNjc3MiLCJsaWIvX21vZGFsLnNjc3MiLCJsaWIvX25vdGlmaWNhdGlvbi5zY3NzIiwibGliL19jb2RlLnNjc3MiLCJsaWIvX3N3YXRjaC5zY3NzIiwiY29tcG9uZW50cy9faW5kZXguc2NzcyIsImNvbXBvbmVudHMvX3R5cG9ncmFwaHkuc2NzcyIsImNvbXBvbmVudHMvX2J1dHRvbnMuc2NzcyIsImNvbXBvbmVudHMvX3d5c2l3eWcuc2NzcyIsImNvbXBvbmVudHMvX2Zvcm1zLnNjc3MiLCJjb21wb25lbnRzL19uYXZiYXIuc2NzcyIsImNvbXBvbmVudHMvX2xhbmd1YWdlLXN3aXRjaGVyLnNjc3MiLCJjb21wb25lbnRzL19mb290ZXIuc2NzcyIsImNvbXBvbmVudHMvX3Byb3BzLnNjc3MiLCJjb21wb25lbnRzL19jYXJvdXNlbC5zY3NzIiwiY29tcG9uZW50cy9fNDA0LnNjc3MiLCJjb21wb25lbnRzL19oZXJvLnNjc3MiLCJjb21wb25lbnRzL19jdGEuc2NzcyIsImNvbXBvbmVudHMvX21hY2hpbmVzLnNjc3MiLCJjb21wb25lbnRzL19tYXAuc2NzcyIsImNvbXBvbmVudHMvX2NvbnRhY3QtZGV0YWlscy5zY3NzIiwiY29tcG9uZW50cy9fbm90aWNlcy5zY3NzIiwiY29tcG9uZW50cy9fZmxleGlibGUtY29udGVudC5zY3NzIiwiY29tcG9uZW50cy9fd29vY29tbWVyY2Uuc2NzcyIsImNvbXBvbmVudHMvX3Byb2R1Y3Quc2NzcyIsImNvbXBvbmVudHMvX3Byb2R1Y3Qtb3B0aW9ucy5zY3NzIiwiY29tcG9uZW50cy9fc2hvcC5zY3NzIiwiY29tcG9uZW50cy9fc2hvcC1maWx0ZXIuc2NzcyIsImNvbXBvbmVudHMvX3BhY2thZ2Utc2l6ZS5zY3NzIiwiY29tcG9uZW50cy9fcHJvZHVjdC1zbGlkZXIuc2NzcyIsImNvbXBvbmVudHMvX3F1YW50aXR5LXN0ZXBwZXIuc2NzcyIsImNvbXBvbmVudHMvX2FjY291bnQuc2NzcyIsImNvbXBvbmVudHMvX3Nob3BzLnNjc3MiLCJjb21wb25lbnRzL19sb2NhdGlvbnMuc2NzcyIsInV0aWxpdGllcy9fZmxvdy5zY3NzIiwidXRpbGl0aWVzL19oaWRkZW4uc2NzcyIsInV0aWxpdGllcy9fY29sb3JzLnNjc3MiLCJ1dGlsaXRpZXMvX3R5cG9ncmFwaHkuc2NzcyIsInV0aWxpdGllcy9fdGV4dC1hbGlnbi5zY3NzIiwidXRpbGl0aWVzL19pbWFnZS13cmFwcGVyLnNjc3MiLCJ1dGlsaXRpZXMvX2xvb3Atc2VwYXJhdG9ycy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFpREE7QUFDQTtBQUNBO0FDMkJBO0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FDNUVBO0VBQ0UsYUNFa0I7RUREbEI7RUFHQTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRSxhQ1JrQjtFRFNsQjtFQUdBO0VBQ0E7RUFDQTs7QUFHRjtFQUNFLGFDbEJrQjtFRG1CbEI7RUFHQTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRSxhQzVCa0I7RUQ2QmxCO0VBR0E7RUFDQTtFQUNBOztBRXZDRjtBQUFBO0FBQUE7RUFHRTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0FBQUE7QUFBQTtFQUdFO0VBQ0E7OztBQUdGO0VBQ0U7OztBQ2xCRjtFQUNFO0VBQ0E7OztBQUdGO0VBQ0UsYUZEaUI7RUVFakIsV0YrQ1k7RUU5Q1o7RUFDQTtFQUNBO0VBQ0E7RUFDQSxrQkwwQm1CO0VLekJuQixPTDBCVzs7O0FLdkJiO0VBQ0U7OztBQUdGO0FBQUE7RUFFRTs7O0FBR0Y7RUFDRTs7O0FBR0Y7QUFBQTtFQUVFOzs7QUFHRjtFQUNFO0VBQ0E7OztBQUlGO0VBQ0UsY0xMZ0I7OztBS1FsQjtFQUNFOzs7QUFFRjtFQUNFO0VBQ0E7OztBQUVGO0VBQ0UsWUxmYTtFS2dCYixPTGRXOzs7QUttQmI7QUFDQTtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQ2xGSjtBQUNBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVNBO0VBQ0U7OztBQ1ZGO0VBQ0U7RUFDQTtFQUVBO0VBRUE7RUFHRTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFLRTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUlKO0VDc09FO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBRHZORjtFQ29PRTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBU0U7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7O0FQdlFGO0VNUEo7SUFnREk7Ozs7QUVqREo7RUFDRTtFQUNBO0VSeUZBO0VBQ0E7QVF2RkE7O0FBRUE7RUFDRTs7QUFFRjtFQUNFOzs7QUNYSjtBQUNBO0VBQ0UsZUMyQ2E7OztBRGJYO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7OztBQUtGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7OztBQTNDRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOzs7QUFLRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOzs7QUEzQ0Y7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7O0FBS0Y7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7O0FBM0NGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7OztBQUtGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7OztBQTNDRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOzs7QUFLRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOzs7QUEzQ0Y7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7O0FBS0Y7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7O0FBM0NGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7OztBQUtGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7OztBQTNDRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOzs7QUFLRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOzs7QUEzQ0Y7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7O0FBS0Y7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7O0FBS047QUF1Qkk7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7O0FBS0Y7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7O0FBM0NGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7OztBQUtGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7OztBQTNDRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOzs7QUFLRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOzs7QUEzQ0Y7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7O0FBS0Y7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7O0FBM0NGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7OztBQUtGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7OztBQTNDRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOzs7QUFLRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOzs7QUEzQ0Y7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7O0FBS0Y7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7O0FBM0NGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7OztBQUtGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7OztBQTNDRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOzs7QUFLRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOzs7QUEzQ0Y7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7O0FBS0Y7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7O0FBM0NGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7OztBQUtGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7OztBQTNDRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOzs7QUFLRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOzs7QUEzQ0Y7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7O0FBS0Y7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7O0FBM0NGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7OztBQUtGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7OztBQTNDRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOzs7QUFLRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOzs7QUEzQ0Y7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7O0FBS0Y7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7O0FFaElOO0VBQ0U7RUFDQTtFQUNBLEtEYU87O0FDVEw7RUFDRSxLRndEaUI7O0FFekRuQjtFQUNFLEtGd0RpQjs7QUV6RG5CO0VBQ0UsS0Z3RGlCOztBRXpEbkI7RUFDRSxLRndEaUI7O0FFekRuQjtFQUNFLEtGd0RpQjs7QUV6RG5CO0VBQ0UsS0Z3RGlCOztBRXpEbkI7RUFDRSxLRndEaUI7O0FFekRuQjtFQUNFLEtGd0RpQjs7QUV6RG5CO0VBQ0UsS0Z3RGlCOztBRXpEbkI7RUFDRSxLRndEaUI7O0FFekRuQjtFQUNFLEtGd0RpQjs7QUV6RG5CO0VBQ0UsS0Z3RGlCOztBRXpEbkI7RUFDRSxLRndEaUI7O0FFekRuQjtFQUNFLEtGd0RpQjs7QUV6RG5CO0VBQ0UsS0Z3RGlCOztBRXpEbkI7RUFDRSxLRndEaUI7O0FFbERuQjtFQUNFOztBQURGO0VBQ0U7O0FBREY7RUFDRTs7QUFERjtFQUNFOztBQURGO0VBQ0U7O0FBREY7RUFDRTs7QUFERjtFQUNFOztBQURGO0VBQ0U7O0FBREY7RUFDRTs7QUFERjtFQUNFOztBQURGO0VBQ0U7O0FBREY7RUFDRTs7QUFERjtFQUNFOztBQURGO0VBQ0U7O0FYTkY7RVdXRjtJQUVJOzs7QVhiRjtFV2dCRjtJQUVJOzs7QVhsQkY7RVd1QkY7SUFFSTtJQUNBO0lBQ0E7OztBWDNCRjtFVzhCRjtJQUVJO0lBQ0E7SUFDQTs7O0FBS0o7RUFDRTs7QUFFRjtFQUNFOzs7QUN0RUo7RUFDRTtFQUNBLEtGc0RPOztBRWpESDtFQUNFOztBQURGO0VBQ0U7O0FBREY7RUFDRTs7QUFERjtFQUNFOztBQURGO0VBQ0U7O0FBREY7RUFDRTs7QUFERjtFQUNFOztBQURGO0VBQ0U7O0FBS047RUFDRTs7QUFLQTtFQUNFLGdCQUZVOztBQUNaO0VBQ0UsZ0JBRlU7O0FBQ1o7RUFDRSxnQkFGVTs7QUFDWjtFQUNFLGdCQUZVOztBQVFaO0VBQ0UsYUFGWTs7QUFDZDtFQUNFLGFBRlk7O0FBQ2Q7RUFDRSxhQUZZOztBQUNkO0VBQ0UsYUFGWTs7QUFVZDtFQUNFLGlCQUhDOztBQUVIO0VBQ0UsaUJBSEM7O0FBRUg7RUFDRSxpQkFIQzs7QUFFSDtFQUNFLGlCQUhDOztBQUVIO0VBQ0UsaUJBSEM7O0FBRUg7RUFDRSxpQkFIQzs7QUFRTDtFQUNFOztBQUVGO0VBQ0U7O0FabEJBO0VZc0JGO0lBRUk7Ozs7QUNwRE47RUFDRTs7QUFDQTtBQUFBO0FBQUE7RUFHRTs7O0FBSUo7RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFOztBQUVGO0VBQ0Usa0JkRVU7RWNEVjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsT2RzRGtCOztBY3JEbEI7RUFDRSxPZDhDZ0I7OztBY3hDcEI7RUFDRTtFQUNBO0VBQ0E7OztBQzdESjtFQUNFO0VBQ0E7RUFDQTs7QUFDQTtFQUNFO0VBQ0E7OztBQ05KO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQSxXYitDYTs7O0FjcERmO0VBQ0U7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUNBO0VBQ0UsV2R3Q1c7RWN2Q1g7RUFDQTtFQUNBOzs7QUNqQko7QUNFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7RUFNRTtFQUNBOzs7QUFFRjtFQUNFOzs7QUFHRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7RUFNRTtFQUNBO0VBQ0EsYWhCZG9CO0VnQmVwQjtFQUNBOzs7QUFHRjtFQUNFLFdoQmlDWTs7O0FnQi9CZDtFQUNFLFdoQjRCWTs7O0FnQjFCZDtBQUFBO0VBQ0UsV2hCd0JZOzs7QWdCdEJkO0VBQ0UsV2hCb0JZOzs7QWdCbEJkO0VBQ0UsV2hCZ0JZOzs7QWdCZGQ7RUFDRSxXaEJZWTs7O0FnQlRkO0VBQ0U7O0FBRUE7RUFHRTtFQUNBOztBQUdGO0VBQ0UsT25CcEJjOzs7QWtCdENsQjtBRUVBO0VBQ0U7RUFDQTtFQUNBOzs7QUFHRjtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtFQUVFO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7QUF1REE7O0FBckRBO0FBQUE7QUFBQTtBQUFBO0VBQ0UsT3BCYWlCO0VvQlpqQixrQnBCUVk7RW9CUFo7O0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7RUFFRSxPcEJHVTtFb0JGVjtFQUNBLGNwQkNVOztBb0JHZDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7RUFDRSxPcEJOVTtFb0JPVixrQnBCSGM7RW9CSWQ7O0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7RUFFRSxPcEJSWTtFb0JTWjtFQUNBLGNwQlZZOztBb0JjaEI7QUFBQTtBQUFBO0FBQUE7RUFDRSxPcEJmYztFb0JnQmQ7RUFDQTs7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtFQUVFLE9wQnpCUTtFb0IwQlIsa0JwQnRCWTtFb0J1QlosY3BCdkJZOztBb0IyQmhCO0FBQUE7QUFBQTtBQUFBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7O0FBR0Y7QUFBQTtBQUFBO0FBQUE7RUFDRTtFQUNBLE9wQm5DVztFb0JvQ1g7O0FBTUY7QUFBQTtBQUFBO0FBQUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBOztBQUVBO0FBQUE7QUFBQTtBQUFBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7O0FBRUY7QUFBQTtBQUFBO0FBQUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7O0FBTUY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7RUFDRTs7QUFFRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtFQUNFOzs7QUNsRko7RUFDRTtFQUNBOztBQUVGO0VBQ0U7O0FBRUY7RUFDRTs7QUFHRjtBQUFBO0VBRUU7O0FBRUY7QUFBQTtFQUVFOztBQUdGO0FBQUE7RUFFRTtFQUNBOztBQUVBO0FBQUE7RUFDRTs7QUFJSjtFQUNFO0VBQ0E7O0FBRUE7RUFDRTs7QUFHQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsT3JCbERRO0VxQm1EUixhbEJoRlc7RWtCaUZYO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsT3JCdERVO0VxQnVEVjs7QUFLTjtBQUFBO0FBQUE7RUFHRTtFQUNBOztBQUdGO0VBQ0U7RUFDQTs7QUFFQTtFQUNFOztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTs7O0FDdkhOO0FBRUM7QUFzQkE7O0FBckJBO0VBQ0M7RUFDQTtFQUNBOztBQUVBO0VBQ0M7RUFDQTtFQUNBOztBckJpQkM7RXFCekJIO0lBWUU7OztBckJhQztFcUJ6Qkg7SUFlRTtJQUNBOzs7QUFNRjtFQUNDO0VBQ0E7RUFDQTs7QUFHRDtBQUFBO0VBQ0M7RUFDQTtFQUNBOztBQUVBO0FBQUE7RUFDQzs7QUFHRDtBQUFBO0VBQ0MsT3RCSlk7RXNCS1o7O0FBSUY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7RUFDQztFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0VBRUM7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7RUFDQzs7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtFQUNDLGN0QjdDYztFc0I4Q2Qsa0J0QjlDYztFc0IrQ2Q7RUFDQTs7QUFLRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtFQUNDLGN0QnREYztFc0J1RGQsa0J0QnZEYztFc0J3RGQ7RUFDQTs7O0FKekZKO0FLSkE7RUFDRTtFQUVBLGFwQkdtQjtFb0JGbkI7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7O0FBRUE7RUFDRTtFQUNBOztBQU9KO0VBQ0U7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0U7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0Y7RUFHRSxPdkIxQk07O0F1QjRCTjtFQUNFO0VBQ0E7O0FBS0Y7RUFDRTtFQUNBOztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7O0F0QnJEUjtFc0JDRjtJQTJESTs7RUFFQTtJQUNFO0lBQ0E7SUFDQTtJQUVBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBLGtCdkIvRGE7SXVCZ0ViO0lBQ0E7SUFDQTtJQUVBO0lBQ0E7O0VBRUE7SUFDRTtJQUNBO0lBQ0E7O0VBR0U7SUFDRTs7RUFHRjtJQUNFLGtCdkJuRkM7O0V1QnFGRDtJQUNFOztFQUlKO0lBQ0U7SUFDQTtJQUNBOztFQU1SO0lBQ0U7SUFDQTs7RUFFQTtJQUpGO01BS0k7Ozs7QUFNUjtFQUdFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTtFQUNBOztBQUdGO0VBQ0U7O0FBRUY7RUFDRTs7QUFJQTtFQUNFOztBQUVGO0VBQ0U7O0F0QjNLSjtFc0IwSUY7SUFzQ0k7OztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QXRCdEtBO0VzQmlLRjtJQVFJOzs7QUFHRjtFQUVFLE92QnRLWTs7QXVCMEtoQjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxrQnZCeExZO0V1QnlMWixPdkI3TFE7RXVCOExSO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTs7QUFLTjtFQUNFOztBQUlGO0VBQ0U7RUFDQTtFQUNBOztBQUVBO0VBQ0U7O0F0QnpORjtFc0JtTkY7SUFVSSxXcEJyTVM7SW9Cc01UO0lBQ0E7O0VBRUE7SUFDRTs7OztBQzlQUjtFQUNFO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7O0F2QkdFO0V1QlRKO0lBU0k7OztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0EsT3hCYVM7O0F3QlRiO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFFQTs7QUFFQTtFQUNFOztBQUtGO0VBQ0U7O0FBRUY7RUFDRTs7O0FDOUNOO0VBQ0MsT3pCK0JhO0V5QjlCYixrQnpCZ0NlOztBeUI5QmY7RUFDQztFQUNBO0VBQ0E7RUFDQTs7QXhCb0JFO0V3QnhCSDtJQU9FOzs7QXhCaUJDO0V3QnhCSDtJQVVFO0lBQ0E7OztBQUlGO0VBQ0M7RUFDQTs7QXhCT0U7RXdCVEg7SUFLRTs7O0FBSUY7RUFDQzs7QUFJRDtFQUNDO0VBQ0E7RUFDQTs7QUFHRDtFQUNDO0VBQ0E7RUFDQTs7QUFHRDtFQUNDO0VBQ0E7RUFDQTs7QUFFQTtFQUNDO0VBQ0E7RUFDQTs7QUFFQTtFQUNDO0VBQ0E7O0FBS0g7RUFDQztFQUNBOztBQUVBO0VBQ0M7OztBQU1IO0VBQ0M7RUFDQTtFQUNBLE96QjVDYTtFeUI2Q2IsWXpCMUNvQjs7QUNQakI7RXdCNkNKO0lBT0U7OztBQUdEO0VBQ0M7RUFDQTtFQUNBO0VBQ0E7O0F4QjNERTtFd0J1REg7SUFPRTtJQUNBO0lBQ0E7OztBQUlGO0VBQ0M7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0M7O0FBRUQ7RUFDQzs7QUFLQTtFQUNDO0VBQ0E7O0F4QnZGQTtFd0JvRUg7SUF3QkU7O0VBRUE7SUFDQzs7O0FBTUY7RUFDQyxPekI3Rlk7OztBMEJyQ2Y7RUFFRTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7RUFFQTs7QUFFQTtFQUNFO0VBQ0E7O0FBRUY7RUFDRTs7QUFDQTtFQUNFO0VBQ0E7RUFDQTs7O0FDbkJQO0VBQ0M7O0FBRUQ7RUFDQztFQUNBO0VBQ0E7O0FBRUE7RUFFQzs7O0FBS0g7RUFDQzs7QUFFQTtFQUNDOztBQUdEO0VBQ0M7OztBQUtEO0VBQ0M7O0FBR0E7RUFDQzs7QUFFRDtFQUNDOzs7QUFPSDtBQUVBO0VBQ0k7RUFDSDtFQUNBO0VBRUc7RUFDQTtFQUNBO0VBRUE7O0FBRUg7RUFDQztFQUVBO0VBRUE7RUFDQTtFQUNBO0VBRUE7O0FBRUE7RUFDQztFQUNBO0VBRUE7RUFFQTtFQUNBO0VBRUE7RUFFQTtFQUNBO0VBQ0E7RUFDQSxrQjNCbERhO0UyQm1EYjtFQUVBOztBQUVBO0VBRUM7RUFDQTtFQUNBLGtCM0J6RGM7O0EyQjZEaEI7RUFDQzs7O0FUdkZIO0FVVkE7RUFDQztFQUNHO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUg7RUFDQyxhekJIb0I7RXlCSXBCO0VBQ0E7RUFDQTtFQUNBOzs7QVZBRjtBV1pDO0VBQ0MsTzdCK0JjO0U2QjlCZCxXMUJpRGE7O0EwQjlDZDtFQUNDOzs7QUFNQTtFQUNDO0VBQ0E7RUFDQTtFQUNBO0VBQ0EscUJBQ0M7O0E1QlFBO0U0QmRGO0lBVUU7SUFDQTtJQUNBLHFCQUNDOzs7QTVCQ0Q7RTRCZEY7SUFrQkU7SUFDQTtJQUNBLHFCQUNDO0lBR0Q7OztBQUlGO0VBQ0M7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7O0E1QnZCQztFNEJjRjtJQVlFOzs7QUFJRjtFQUNDO0VBRUE7O0FBRUE7RUFDQztFQUNBO0VBQ0E7RUFDQTtFQUNBOztBNUJ4Q0E7RTRCOEJGO0lBY0U7OztBQUlGO0VBQ0M7OztBQzVFSDtFQUdDO0VBQ0EscUJBQ0M7RUFFRDtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7O0FBRUE7RUFDQztFQUNBLE85QmNZO0U4QmJaLGtCOUJpQmdCOztBOEJmaEI7RUFDQztFQUNBOztBQUlGO0VBQ0M7RUFDQSxPOUJHWTtFOEJGWixrQjlCSWM7O0E4QkFmO0VBQ0M7RUFDQTs7QUFHRDtFQUNDO0VBQ0E7O0FBR0Q7RUFDQztFQUVBO0VBQ0E7RUFDQTtFQUVBO0VBQ0EsYTNCbERpQjtFMkJtRGpCO0VBQ0E7RUFDQTtFQUNBOztBQUdEO0VBQ0M7RUFFQTtFQUNBO0VBQ0E7RUFDQTs7QUFHRDtFQUNDO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDQztFQUNBO0VBQ0E7RUFDQTs7O0FDbEZIO0FBOEZDOztBQTVGQTtFQUNDO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0M7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBLHFCQUNDO0VBR0Q7QUF3QkE7O0FBdEJBO0VBQ0M7RUFDQTs7QUFFQTtFQUNDO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBQ0M7RUFDQTs7QUFFRDtFQUNDOztBQUVEO0VBQ0M7O0FBSUQ7RUFDQztFQUNBO0VBQ0E7O0FBTUg7RUFDQztFQUNBO0VBQ0E7O0FBRUE7RUFDQztFQUNBOztBQUdEO0VBQ0M7RUFFQTtFQUNBO0VBQ0E7O0FBR0M7RUFDQztFQUNBO0VBQ0E7RUFDQTs7QUFNSjtFQUNDO0VBQ0E7RUFDQTs7QUFFQTtFQUNDO0VBQ0E7RUFDQTtFQUNBOztBQUtGO0VBQ0M7RUFDQTtFQUNBLEtwQmhFTzs7QVYxQkw7RThCdUZIO0lBTUU7SUFDQTtJQUNBOzs7QTlCL0ZDO0U4QmtHRjtJQUVFO0lBQ0E7SUFDQTtJQUNBOzs7QUFJRjtFQUNDOztBOUI1R0M7RThCMkdGO0lBSUU7SUFDQTtJQUNBOzs7O0FDMUhKO0VBR0M7RUFDQTtFQUNBOztBQUVBO0VBQ0M7O0FBR0Q7RUFDQztFQUNBO0VBQ0Esa0JoQzBCYTs7QWdDcEJkO0VBQ0M7RUFDQTtFQUNBO0VBQ0Esa0JoQ2NtQjtFZ0NibkI7O0FBR0Q7QUFBQTtFQUVDO0VBQ0E7O0FBR0Q7RUFDQyxrQmhDR21COztBZ0NDcEI7RUFDQztFQUNBO0VBQ0Esa0JoQ1JjOztBZ0NVZjtFQUNDLGtCaENUZ0I7O0FnQ2FqQjtFQUNDOztBQUVBO0VBQ0M7O0FBTUY7RUFDQztFQUNBLE9yQjVCTztFcUI2QlAsUXJCN0JPO0VxQjhCUDtFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBLGtCaENsQ21CO0VnQ21DbkI7RUFDQTs7QUFFQTtFQUNDO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxPaEMzQ1U7O0FnQzhDWDtFQUNDO0VBQ0E7RUFDQTtFQUNBO0VBQ0Esa0JoQ2NtQjs7QWdDWHBCO0VBQ0Msa0JoQzVEYTs7QWdDK0RkO0VBQ0Msa0JoQzlEZTs7QWdDb0VqQjtFQUNDO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsYTdCNUdpQjs7QTZCOEdqQjtFQUNDO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQSxhN0J2SGtCOztBNkIwSG5CO0VBQ0M7RUFDQSxhN0IzSG1CO0U2QjRIbkI7RUFDQTtFQUNBO0VBQ0EsT2hDcEdhOztBZ0N1R2Q7RUFDQztFQUNBO0VBQ0EsT2hDckdVOztBZ0N3R1g7RUFDQztFQUNBO0VBQ0E7O0FBTUY7RUFDQztFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0M7RUFDQSxPaEMvSGE7RWdDZ0liOzs7QUNsS0g7RUFDQztFQUNBO0VBQ0E7QUF1QkE7O0FBckJBO0VBQ0M7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0M7RUFDQSxPakNtQmE7RWlDbEJiOztBQUlGO0VBQ0M7RUFDQTtFQUNBOztBQUlEO0VBQ0M7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDQzs7QUFFRDtFQUNDOztBQUVEO0VBQ0M7RUFDQTtFQUNBOztBQUVBO0VBQ0M7O0FBS007RUFDUjs7QUFFQTtFQUVDOzs7QUN2REg7RUFDQztFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFFQSxPbEN1QmE7RWtDdEJiLGtCbEN3QmU7RWtDdkJmOztBakNpQkc7RWlDNUJKO0lBY0U7O0VBRUE7SUFDQzs7O0FBSUY7RUFDQztFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7O0FBRUE7RUFDQzs7QUFHRDtFQUNDO0VBQ0E7O0FBS0Y7RUFDQzs7QUFFRDtFQUNDOzs7QUMzQ0Q7RUFDQzs7O0FBS0Q7RUFDQztFQUNBOztBQUdEO0VBQ0MsV2hDMkNZO0VnQzFDWjtFQUNBOztBQUdEO0VBQ0M7RUFDQSxPbkNpRm9COzs7QW1DNUVyQjtFQUNDO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQSxPbkNEWTtFbUNFWjtFQUNBOztBQUdDO0VBQ0MsT25DRlc7O0FtQ09kO0VBQ0M7RUFDQTs7QUFFQTtFQUNDO0VBQ0E7OztBQU1GO0FBQUE7QUFBQTtFQUdDO0VBQ0E7O0FBR0Q7RUFDQztFQUNBO0VBQ0E7OztBQU1EO0VBQ0M7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDQztFQUNBO0VBQ0E7RUFDQTs7QWxDdERDO0VrQ2tERjtJQU9FOzs7QUFJRjtFQUNDOztBQUlGO0VBQ0M7RUFDQTs7QUFHRDtFQUNDO0VBQ0E7O0FBRUE7RUFDQzs7O0FqQmpGSDtBa0J0QkE7RUFDQzs7O0FBVUE7RUFDQzs7QUFFRDtFQUNDOzs7QUFNRjtFQUNDLFdqQ2lDYTtFaUNoQ2I7O0FBRUE7RUFDQztFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBT0E7RUFDQzs7QUFLRDtFQUNDOztBQUtEO0VBQ0M7OztBQU9GO0VBQ0M7O0FBRUQ7RUFDQzs7O0FBUUE7RUFDQztFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNDOzs7QUFVSjtFQUNDOzs7QUMxRkQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7RUFJQzs7O0FBR0Q7QUFBQTtFQUVDO0VBRUE7RUFDQTtFQUNBO0VBRUE7RUFDQTtBQWdIQTtBQUFBOztBQTlHQTtBQUFBO0VBQ0M7RUFDQTtFQUNBO0VBRUE7RUFDQTs7QUFFQTtBQUFBO0VBQ0M7RUFDQTtFQUNBO0VBQ0E7RUFFQTs7QUFJRjtBQUFBO0VBQ0M7RUFFQSxhbEMxQ29CO0VrQzJDcEIsV2xDS1k7RWtDSlo7RUFDQTtFQUNBLE9yQ2xCbUI7O0FxQ3FCcEI7QUFBQTtFQUNDO0VBQ0E7RUFFQSxhbEN0RG1CO0VrQ3VEbkI7RUFFRyxPckM3Qlc7QXFDK0JkO0VBQ0E7O0FwQ3RDRTtFb0M0Qkg7QUFBQTtJQWFFLFdsQ2hCWTs7O0FrQ29CZDtBQUFBO0VBQ0M7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7O0FBRUE7QUFBQTtBQUFBO0VBRUM7O0FBSUY7QUFBQTtFQUNDO0VBRUEsYWxDMUZtQjtFa0MyRm5CLFdsQzVDYTtFa0M2Q2I7RUFFQSxZckMvRGE7RXFDZ0ViLE9yQ2xFbUI7O0FxQ3FFcEI7QUFBQTtFQUNDO0VBQ0E7RUFDQTtFQUVBO0VBRUEsWXJDM0VnQjtFcUM0RWhCLE9yQ2hGWTs7QXFDbUZiO0FBQUE7RUFDQztFQUNBO0VBQ0E7QUFFQTs7QUFDQTtBQUFBO0VBQ0M7RUFDQTtFQUNBO0VBQ0E7O0FBR0Q7QUFBQTtFQUNDO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFNRjtFQUNDO0FBQUE7SUFDQzs7RUFHRDtBQUFBO0FBQUE7SUFFQzs7OztBQ25KSDtFQUNDO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDQztFQUNBO0VBQ0E7RUFDQTs7QUFFRDtFQUNDO0VBQ0E7RUFDQTs7QUFFQTtFQUNDLFduQ29DVztFbUNuQ1g7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0M7RUFDQTtFQUNBOztBQUVEO0VBQ0M7RUFDQTtFQUNBO0VBQ0E7RUFFQSxhbkNsQ2dCO0VtQ21DaEI7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUQ7RUFDQzs7QUFFRDtFQUNDOztBQUVEO0VBQ0MsT3RDdEJjO0VzQ3VCZCxjdEN2QmM7O0FzQ3lCZjtFQUNDOztBQUdEO0VBQ0M7O0FBSUY7RUFDQztFQUNBO0VBQ0E7O0FBRUE7RUFDQzs7QUFFRDtFQUNDOztBQUdGO0VBQ0M7RUFDQTs7O0FBTUg7RUFDQzs7O0FBR0Q7RUFDQztJQUNDOztFQUVEO0lBQ0M7OztBQ25HRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBU0E7QUFFQztBQVdBO0FBbUJBO0FBV0E7QUErQkE7O0FBdkVBO0VBQ0M7O0FBR0Q7RUFDQyxPdkNpQmM7RXVDaEJkLFdwQ21DYTtFb0NsQ2I7O0FBSUQ7QUFPQztBQUFBOztBdENyQkU7RXNDY0g7SUFFRTtJQUNBO0lBQ0E7SUFDQTs7O0F0Q25CQztFc0N5Qkg7SUFFRTtJQUNBOzs7QUFLRjtFQUNDOztBQUdEO0VBQ0M7RUFDQSxhcEN6Q29CO0VvQzBDcEIsT3ZDZG1COztBdUNrQnBCO0VBQ0M7RUFFQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBRUE7O0F0Q3RERTtFc0M0Q0g7SUFhRTtJQUNBOzs7QXRDdkNDO0VzQzJDRjtJQUVFOztFQUVBO0lBQ0M7SUFDQTs7O0FBT0o7RUFDQzs7QUFFQTtFQUNDO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFFQTtFQUNBOztBQUVBO0VBQ0M7O0FBSUY7QUFBQTtFQUVDO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFFQTtFQUNBOztBQUVBO0FBQUE7QUFBQTtFQUNDOztBQUlGO0VBQ0M7RUFDQTs7O0FBS0g7QUFDQTtBQXdHQztBQUFBO0FBa0JBOztBQXhIQTtFQUNDO0VBQ0E7RUFDQTs7QXRDekdFO0VzQ3NHSDtJQU1FO0lBQ0E7SUFDQTs7O0FBSUY7RUFDQztFQUVBO0VBQ0E7O0FBRUE7RUFDQztFQUNBOztBQUlGO0VBQ0M7RUFDQTtFQUNBO0FBRUE7QUFBQTs7QUFFQTtFQUNDO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTs7QUFFQTtFQUVDOztBQUlGO0VBQ0M7RUFFQSxhcEM3S2tCO0VvQzhLbEIsV3BDL0hZO0VvQ2dJWjtFQUVBLFl2Q2xKWTtFdUNtSlosT3ZDckprQjs7QXVDd0puQjtFQUNDO0VBQ0EsYXBDdExtQjtFb0N1TG5CLE92QzNKa0I7O0F1QzhKbkI7RUFDQyxhcEM1TGtCO0VvQzZMbEIsV3BDM0lXO0VvQzRJWDtFQUNBO0FBRUE7RUFDQTs7QUFHRDtFQUNDO0VBQ0E7RUFDQTtFQUVBOztBQUVBO0VBQ0M7O0FBRUE7RUFDQztFQUNBO0VBQ0E7O0FBSUY7RUFFQzs7QUFHRDtFQUNDO0VBQ0E7O0FBT0g7RUFDQztFQUNBO0VBRUE7RUFDQTtFQUNBOztBQUlBO0VBQ0MsYXBDOU9tQjtFb0MrT25CLE92Q25Oa0I7O0F1Q3dOcEI7QUFBQTtFQUVDO0VBQ0E7O0FBR0Q7QUFBQTtFQUVDLGFwQzVQb0I7RW9DNlBwQixPdkNqT21COztBdUNvT3BCO0FBQUE7RUFFQztFQUVBO0VBQ0E7OztBQzVRRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBU0E7QUFrQ0M7QUFvREE7O0FBbkZBO0VBQ0M7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBOztBQUVBO0VBQ0M7O0FBSUY7RUFDQyxXckMyQlk7RXFDMUJaLE94Q01jOztBd0NIZjtFQUNDLGFyQ3pCb0I7RXFDMEJwQixXckNzQlk7RXFDckJaLE94Q0NtQjs7QXdDRXBCO0VBQ0M7RUFDQTtFQUNBOztBQUlEO0VBQ0M7RUFDQTtFQUNBO0VBQ0E7RUFFQSxXckNHYTtFcUNGYjtFQUNBO0VBQ0E7O0FBRUE7RUFFQzs7QUFJRjtFQUNDO0VBQ0E7RUFDQTtFQUVBLGFyQzVEbUI7RXFDNkRuQixXckNkYTtFcUNlYjtFQUNBO0VBQ0E7RUFDQSxPeENyQ2M7RXdDc0NkOztBdkM1Q0U7RXVDaUNIO0lBY0UsV3JDdkJZOzs7QXFDMkJkO0VBRUM7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUVBOztBQUdEO0VBQ0M7O0FBSUQ7RUFDQztFQUNBO0VBQ0E7O0FBRUE7RUFDQzs7QUFJRjtFQUNDO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFFQSxPeENoRmM7RXdDaUZkOztBQUVBO0VBRUMsT3hDbkZlOztBd0NzRmhCO0VBQ0M7RUFDQSxPeEN6RmtCOztBd0M2RnBCO0VBQ0MsYXJDM0htQjtFcUM0SG5CLFdyQzdFYTtFcUM4RWI7RUFDQSxPeENsR2M7O0FDTlo7RXVDbkJKO0lBK0hFO0lBQ0E7SUFDQTtJQUNBOztFQUVBO0lBQ0M7SUFDQTtJQUNBO0lBRUEsWXhDNUdrQjtJd0M2R2xCO0lBQ0E7SUFDQTtBQUVBO0FBQUE7SUFFQTs7RUFFQTtJQUNDO0lBQ0E7SUFDQSxZQUNDOztFQUlGO0lBQ0M7OztBQUdEO0VBQ0M7SUFDQzs7O0F2QzdJRDtFdUNrSkY7SUFDQztJQUNBO0FBRUE7O0VBQ0E7SUFDQztJQUNBO0lBRUE7SUFDQTtJQUVBO0lBQ0E7SUFFQTtJQUNBOztFQUlGO0lBQ0M7O0VBRUE7SUFDQzs7RUFJRjtJQUNDO0lBRUE7SUFDQTtJQUVBOzs7O0FDaE5IO0VBQ0M7RUFDRzs7O0FDRko7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBVUE7RUFDQztFQUVBO0VBQ0E7RUFFQTs7QUFFQTtFQUNDO0VBQ0E7RUFFQTtFQUVBOztBekNJRTtFeUNWSDtJQVNFOzs7QUFJRjtFQUNDO0VBQ0E7O0FBTUQ7RUFDQztJQUNDOzs7O0FBS0g7QUFDQTtFQUNDO0VBRUE7RUFDQTtFQUNBO0VBQ0E7O0F6Q3pCRztFeUNtQko7SUFTRTtJQUNBOzs7QUFHRDtFQUVDOztBQUVBO0VBQ0M7OztBQ2pFSDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFPQTtFQUNDO0VBQ0E7RUFDQTs7QUFFQTtFQUNDOzs7QUFJRjtFQUNDO0VBQ0E7RUFFQTs7QUFFQTtFQUNDO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFFQTtFQUNBLE8zQ0ZjO0UyQ0dkO0VBQ0E7RUFFQTs7QUFFQTtFQUVDLGtCM0NOa0I7O0FDVmpCO0UwQ0xIO0lBeUJFOzs7QUFJRjtFQUNDO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFFQSxPM0NyQlc7RTJDc0JYO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7O0FBRUE7RUFFQztFQUNBOztBQUdEO0VBQ0M7RUFDQTs7QTFDaERDO0UwQ3dCSDtJQTRCRTs7OztBQUtIO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFLQTtFQUNDO0VBQ0E7O0FBRUE7RUFDQzs7QTFDbkVFO0UwQ2tFSDtJQUlFOzs7O0F6QnBHSDtBMEJPQztFQUNDO0VBQ0E7RUFDQTs7QTNDb0JFO0UyQ3ZCSDtJQU1FO0lBQ0E7OztBQUlGO0VBQ0M7RUFDQTs7QUFFQTtFQUNDOztBQUlGO0FBQUE7RUFFQzs7QUFFQTtBQUFBO0VBRUM7O0FBR0Q7QUFBQTtBQUFBO0FBQUE7RUFFQztFQUNBO0VBQ0E7O0FBSUQ7QUFBQTtFQUNDO0VBQ0E7RUFDQTs7QUFFQTtBQUFBO0VBQ0M7O0EzQ3BCQTtFMkNjRjtBQUFBO0lBVUU7OztBQUlGO0FBQUE7RUFDQztFQUNBO0VBQ0E7RUFDQTs7QUFFRDtBQUFBO0VBQ0M7O0FBT0E7QUFBQTtFQUNDOztBQU9GO0FBQUE7QUFBQTtBQUFBO0VBR0M7O0FBR0Q7QUFBQTtFQUNDO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7QUFBQTtFQUNDOztBQUlGO0FBQUE7RUFHQzs7QUFNRDtFQUNDO0VBQ0E7RUFDQTtFQUNBOztBQUdEO0VBQ0M7RUFDQTs7QUFHRDtFQUNDO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDQztFQUNBO0VBQ0E7RUFDQSxhekN4SGdCO0V5Q3lIaEI7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdEO0VBQ0M7O0FBSUY7RUFDQyxPNUMzR2U7RTRDNEdmLGF6Q3BJZ0I7O0F5Q3NJaEI7RUFDQzs7QUFLRDtFQUF3Qjs7QUFDeEI7RUFBcUI7O0FBQ3JCO0VBQTJCOztBQUMzQjtFQUE4Qjs7QUFDOUI7RUFBMkI7O0FBQzNCO0VBQXlCOztBQUN6QjtFQUE4Qjs7QUFLaEM7RUFDQztFQUNBO0VBQ0E7RUFDQTs7QTNDM0lFO0UyQ3VJSDtJQU9FO0lBQ0E7OztBQUtGO0VBQ0M7RUFDQTtFQUNBOztBM0N2SkU7RTJDb0pIO0lBTUU7OztBQUdGO0VBQ0M7RUFDQTtFQUNBOztBQUVBO0VBQ0M7RUFDQTtFQUNBOztBQUVBO0VBQ0M7O0FBSUY7RUFHQzs7QUFXRjtFQUNDO0VBQ0EsYXpDbE1rQjs7QXlDc01uQjtFQUNDO0VBQ0E7RUFDQSxhekNuTmlCOztBeUNzTmxCO0VBQ0M7O0FBR0Q7RUFDQzs7O0FBS0Y7RUFDQztFQUNBO0VBQ0E7O0FBRUE7RUFDQztFQUNBOztBM0N2TkU7RTJDZ05KO0lBV0U7Ozs7QUFJRjtFQUNDO0VBQ0E7RUFDQTs7O0FBR0Q7RUFDQyxXekM3TWM7O0F5QytNZDtFQUNDOzs7QUFJRjtFQUNDO0VBQ0E7O0FBRUE7RUFDQztFQUNBO0VBQ0E7OztBQUlGO0VBQ0M7O0FBRUE7RUFDQzs7O0ExQnJQRjtBMkJsQ0M7RUFDQztFQUNBO0VBQ0E7RUFDQTs7QUFHRDtFQUNDO0VBQ0E7O0FBR0E7RUFDQztFQUNBO0VBQ0E7O0FBR0Q7RUFDQztFQUNBOztBQUdEO0VBQ0M7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdEO0VBQ0M7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxrQjdDSGtCO0U2Q0lsQjtFQUVBO0VBQ0EsYTFDdENtQjtFMEN1Q25CO0VBQ0E7O0FBRUE7RUFDQztFQUNBOztBQUdEO0VBQ0M7RUFDQSxPN0NwQmM7OztBNkMwQmxCO0VBQ0M7SUFDQzs7RUFFRDtJQUNDLGU3Qy9CZ0I7OztBOENwQ2xCO0FBaUNDO0FBcUJBO0FBQUE7QUFBQTs7QTdDMUJHO0U2QzNCSDtJQUVFO0lBQ0E7SUFDQTtJQUNBOztFQUVBO0lBQ0M7SUFDQTtJQUNBO0lBQ0E7SUFDQTs7O0FBTUg7RUFDQztFQUNBOztBQUdDO0VBQ0M7O0E3Q2hCQTtFNkNjRjtJQUtFOzs7QUFNSDtFQUNDO0VBQ0EsS25DRE87O0FWMUJMO0U2Q3lCSDtJQUtFO0lBQ0E7SUFDQTs7O0E3Q2hDQztFNkNtQ0Y7SUFFRTtJQUNBO0lBQ0E7OztBQVNIO0VBQ0M7RUFFQTtFQUNBOztBN0NwREU7RTZDZ0RIO0lBT0U7OztBN0N2REM7RTZDZ0RIO0lBVUU7OztBN0MxREM7RTZDZ0RIO0lBY0U7SUFDQTtJQUNBOzs7QUFJRjtFQUlDO0VBQ0E7RUFDQTs7QTdDMUVFO0U2QzZFRDtJQUNDOztFQUVBO0lBQ0M7O0VBSUY7SUFDQzs7O0E3Q3RGQTtFNkMyRkQ7SUFDQzs7O0FBSUY7RUFDQyxhM0NwR2tCO0UyQ3FHbEI7RUFDQTtFQUNBLE85Q3pFZTtFOEMyRWY7RUFDQTtFQUNBOztBQUVBO0VBQ0M7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFLSDtFQUNDO0VBQ0E7O0FBR0Q7RUFDQztFQUNBO0VBQ0E7O0FBRUE7RUFDQzs7O0FDbklEO0VBQ0UsWXBDMkJLOzs7QW9DckJMO0VBQ0UsWXJDc0VpQjs7O0FxQ3ZFbkI7RUFDRSxZckNzRWlCOzs7QXFDdkVuQjtFQUNFLFlyQ3NFaUI7OztBcUN2RW5CO0VBQ0UsWXJDc0VpQjs7O0FxQ3ZFbkI7RUFDRSxZckNzRWlCOzs7QXFDdkVuQjtFQUNFLFlyQ3NFaUI7OztBcUN2RW5CO0VBQ0UsWXJDc0VpQjs7O0FxQ3ZFbkI7RUFDRSxZckNzRWlCOzs7QXFDdkVuQjtFQUNFLFlyQ3NFaUI7OztBcUN2RW5CO0VBQ0UsWXJDc0VpQjs7O0FxQ3ZFbkI7RUFDRSxZckNzRWlCOzs7QXFDdkVuQjtFQUNFLFlyQ3NFaUI7OztBcUN2RW5CO0VBQ0UsWXJDc0VpQjs7O0FxQ3ZFbkI7RUFDRSxZckNzRWlCOzs7QXFDdkVuQjtFQUNFLFlyQ3NFaUI7OztBcUN2RW5CO0VBQ0UsWXJDc0VpQjs7O0FUMUVuQjtFK0NQQTtJQUNFOzs7QS9DeUJGO0UrQ3BCQTtJQUNFOzs7QS9DQUY7RStDUEE7SUFDRTs7O0EvQ3lCRjtFK0NwQkE7SUFDRTs7O0EvQ0FGO0UrQ1BBO0lBQ0U7OztBL0N5QkY7RStDcEJBO0lBQ0U7OztBL0NBRjtFK0NQQTtJQUNFOzs7QS9DeUJGO0UrQ3BCQTtJQUNFOzs7QS9DQUY7RStDUEE7SUFDRTs7O0EvQ3lCRjtFK0NwQkE7SUFDRTs7O0FBS047RUFDRTs7O0FBSUY7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUN6QkU7RUFDRSxPakRvRUc7OztBaURsRUw7RUFDRSxrQmpEaUVHOzs7QWlEckVMO0VBQ0UsT2pEb0VHOzs7QWlEbEVMO0VBQ0Usa0JqRGlFRzs7O0FpRHJFTDtFQUNFLE9qRG9FRzs7O0FpRGxFTDtFQUNFLGtCakRpRUc7OztBaURyRUw7RUFDRSxPakRvRUc7OztBaURsRUw7RUFDRSxrQmpEaUVHOzs7QWlEckVMO0VBQ0UsT2pEb0VHOzs7QWlEbEVMO0VBQ0Usa0JqRGlFRzs7O0FpRHJFTDtFQUNFLE9qRG9FRzs7O0FpRGxFTDtFQUNFLGtCakRpRUc7OztBaURyRUw7RUFDRSxPakRvRUc7OztBaURsRUw7RUFDRSxrQmpEaUVHOzs7QWlEckVMO0VBQ0UsT2pEb0VHOzs7QWlEbEVMO0VBQ0Usa0JqRGlFRzs7O0FpRHJFTDtFQUNFLE9qRG9FRzs7O0FpRGxFTDtFQUNFLGtCakRpRUc7OztBaURyRUw7RUFDRSxPakRvRUc7OztBaURsRUw7RUFDRSxrQmpEaUVHOzs7QWlEckVMO0VBQ0UsT2pEb0VHOzs7QWlEbEVMO0VBQ0Usa0JqRGlFRzs7O0FpRHJFTDtFQUNFLE9qRG9FRzs7O0FpRGxFTDtFQUNFLGtCakRpRUc7OztBaURyRUw7RUFDRSxPakRvRUc7OztBaURsRUw7RUFDRSxrQmpEaUVHOzs7QWlEckVMO0VBQ0UsT2pEb0VHOzs7QWlEbEVMO0VBQ0Usa0JqRGlFRzs7O0FpRHJFTDtFQUNFLE9qRG9FRzs7O0FpRGxFTDtFQUNFLGtCakRpRUc7OztBaURyRUw7RUFDRSxPakRvRUc7OztBaURsRUw7RUFDRSxrQmpEaUVHOzs7QWlEckVMO0VBQ0UsT2pEb0VHOzs7QWlEbEVMO0VBQ0Usa0JqRGlFRzs7O0FpRHJFTDtFQUNFLE9qRG9FRzs7O0FpRGxFTDtFQUNFLGtCakRpRUc7OztBaURyRUw7RUFDRSxPakRvRUc7OztBaURsRUw7RUFDRSxrQmpEaUVHOzs7QWlEM0RQO0VBQ0UsT2pEQ1k7OztBaURDZDtFQUNFLGtCakRGWTs7O0FpREZkO0VBQ0UsT2pEQ1k7OztBaURDZDtFQUNFLGtCakRGWTs7O0FpREZkO0VBQ0UsT2pEQ1k7OztBaURDZDtFQUNFLGtCakRGWTs7O0FpREZkO0VBQ0UsT2pEQ1k7OztBaURDZDtFQUNFLGtCakRGWTs7O0FpREZkO0VBQ0UsT2pEQ1k7OztBaURDZDtFQUNFLGtCakRGWTs7O0FpREZkO0VBQ0UsT2pEQ1k7OztBaURDZDtFQUNFLGtCakRGWTs7O0FpREZkO0VBQ0UsT2pEQ1k7OztBaURDZDtFQUNFLGtCakRGWTs7O0FpREZkO0VBQ0UsT2pEQ1k7OztBaURDZDtFQUNFLGtCakRGWTs7O0FpREZkO0VBQ0UsT2pEQ1k7OztBaURDZDtFQUNFLGtCakRGWTs7O0FpREZkO0VBQ0UsT2pEQ1k7OztBaURDZDtFQUNFLGtCakRGWTs7O0FpREZkO0VBQ0UsT2pEQ1k7OztBaURDZDtFQUNFLGtCakRGWTs7O0FpREZkO0VBQ0UsT2pEQ1k7OztBaURDZDtFQUNFLGtCakRGWTs7O0FpRGVoQjtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUN2QkU7RUFDRTs7O0FBREY7RUFDRTs7O0FBREY7RUFDRTs7O0FBREY7RUFDRTs7O0FBREY7RUFDRTs7O0FBREY7RUFDRTs7O0FBREY7RUFDRTs7O0FBREY7RUFDRTs7O0FBREY7RUFDRTs7O0FBSUo7RUFDRSxhL0NQaUI7OztBK0NTbkI7RUFDRSxhL0NSb0I7OztBK0NVdEI7RUFDRSxhL0NabUI7OztBK0NlckI7RUFDRTs7O0FBR0Y7RUFDRTs7O0FBR0Y7RUFDRTs7O0FBR0Y7RUFDRTs7O0FBRUY7RUFDRTs7O0FBS0U7RUFDRTs7QUFDQTtFQUNFOzs7QUFISjtFQUNFOztBQUNBO0VBQ0U7OztBQUhKO0VBQ0U7O0FBQ0E7RUFDRTs7O0FBSEo7RUFDRTs7QUFDQTtFQUNFOzs7QUFISjtFQUNFOztBQUNBO0VBQ0U7OztBQUhKO0VBQ0U7O0FBQ0E7RUFDRTs7O0FDL0NSO0FBQUE7RUFFRTs7O0FBR0Y7RUFDRTs7QUFFQTtBQUFBO0VBRUU7OztBQUlKO0FBQUE7RUFFRTtFQUNBO0VBQ0E7OztBQ0hBO0VBQ0U7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7O0FBQ0E7RUFDRTs7QUFNRjtFQUNFOztBQURGO0VBQ0U7O0FBREY7RUFDRTs7QUFERjtFQUNFOztBQURGO0VBQ0U7O0FBREY7RUFDRTs7QUFERjtFQUNFOztBQURGO0VBQ0U7O0FBREY7RUFDRTs7QUFJSjtFQUNFOzs7QUN2Q0o7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFVQztFQUVDOztBQUdEO0VBRUM7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0Q7RUFDQztFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QXBEekJFO0VvRDZCRjtJQUNDOzs7QXBEWEM7RW9EZUY7SUFDQzs7O0FwRGhCQztFb0RvQkY7SUFDQyIsImZpbGUiOiJtYWluLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIiRfY2xyLXdoaXRlOiB3aGl0ZTtcclxuJF9jbHItYmxhY2s6IGJsYWNrO1xyXG5cclxuJF9jbHItcHJpbWFyeTogIzUxMkYyRTtcclxuJF9jbHItcHJpbWFyeS1kYXJrOiAjMjgxQjFCO1xyXG4kX2Nsci1zZWNvbmRhcnk6ICNDQjMzM0I7XHJcbiRfY2xyLWFjY2VudDogI0YxRTZCMjtcclxuJF9jbHItYWNjZW50LWxpZ2h0OiAjRkRGQkYyO1xyXG5cclxuJF9jbHItdGV4dDogIzNEMzEzMTtcclxuJF9jbHItYm9yZGVyOiAjREJEQkRCO1xyXG5cclxuJF9jbHItc3VjY2VzczogIzAwQTg2QjtcclxuJF9jbHItZXJyb3I6ICNFNzEzNDY7XHJcbiRfY2xyLWluZm86ICNGRkIzNDA7XHJcblxyXG4kc2ltcGxlLWNvbG9yczogKFxyXG5cdFwid2hpdGVcIjogJF9jbHItd2hpdGUsIFxyXG5cdFwiYmxhY2tcIjogJF9jbHItYmxhY2ssXHJcblxyXG5cdFwicHJpbWFyeVwiOiAkX2Nsci1wcmltYXJ5LFxyXG5cdFwicHJpbWFyeS1kYXJrXCI6ICRfY2xyLXByaW1hcnktZGFyayxcclxuXHRcInNlY29uZGFyeVwiOiAkX2Nsci1zZWNvbmRhcnksXHJcblx0XCJhY2NlbnRcIjogJF9jbHItYWNjZW50LFxyXG5cdFwiYWNjZW50LWxpZ2h0XCI6ICRfY2xyLWFjY2VudC1saWdodCxcclxuXHJcblx0XCJ0ZXh0XCI6ICRfY2xyLXRleHQsXHJcblx0XCJib3JkZXJcIjogJF9jbHItYm9yZGVyLFxyXG5cclxuXHRcInN1Y2Nlc3NcIjogJF9jbHItc3VjY2VzcyxcclxuXHRcImVycm9yXCI6ICRfY2xyLWVycm9yLFxyXG5cdFwiaW5mb1wiOiAkX2Nsci1pbmZvLFxyXG4pO1xyXG5cclxuJGNvbG9yLXdoaXRlOiB2YXIoLS13aGl0ZSk7XHJcbiRjb2xvci1ibGFjazogdmFyKC0tYmxhY2spO1xyXG4kY29sb3ItcHJpbWFyeTogdmFyKC0tcHJpbWFyeSk7XHJcbiRjb2xvci1wcmltYXJ5LWRhcms6IHZhcigtLXByaW1hcnktZGFyayk7XHJcbiRjb2xvci1zZWNvbmRhcnk6IHZhcigtLXNlY29uZGFyeSk7XHJcbiRjb2xvci1hY2NlbnQ6IHZhcigtLWFjY2VudCk7XHJcbiRjb2xvci1hY2NlbnQtbGlnaHQ6IHZhcigtLWFjY2VudC1saWdodCk7IFxyXG4kY29sb3ItdGV4dDogdmFyKC0tdGV4dCk7XHJcbiRjb2xvci1ib3JkZXI6IHZhcigtLWJvcmRlcik7XHJcbiRjb2xvci1zdWNjZXNzOiB2YXIoLS1zdWNjZXNzKTtcclxuJGNvbG9yLWVycm9yOiB2YXIoLS1lcnJvcik7XHJcbiRjb2xvci1pbmZvOiB2YXIoLS1pbmZvKTtcclxuXHJcblxyXG5cclxuLyoqKioqKioqKioqKi9cclxuLyogIFNoYWRlcyAgKi9cclxuLyoqKioqKioqKioqKi9cclxuXHJcbiRfY2xyLWdyZXlzY2FsZS05NTA6IGhzbGEoMCwgMCUsIDkzJSwgMSk7XHJcbiRfY2xyLWdyZXlzY2FsZS05MDA6IGhzbGEoMCwgMCUsIDg4JSwgMSk7XHJcbiRfY2xyLWdyZXlzY2FsZS04NTA6IGhzbGEoMCwgMCUsIDgzJSwgMSk7XHJcbiRfY2xyLWdyZXlzY2FsZS04MDA6IGhzbGEoMCwgMCUsIDc4JSwgMSk7XHJcbiRfY2xyLWdyZXlzY2FsZS03NTA6IGhzbGEoMCwgMCUsIDczJSwgMSk7XHJcbiRfY2xyLWdyZXlzY2FsZS03MDA6IGhzbGEoMCwgMCUsIDY4JSwgMSk7XHJcbiRfY2xyLWdyZXlzY2FsZS02NTA6IGhzbGEoMCwgMCUsIDYzJSwgMSk7XHJcbiRfY2xyLWdyZXlzY2FsZS02MDA6IGhzbGEoMCwgMCUsIDU4JSwgMSk7XHJcbiRfY2xyLWdyZXlzY2FsZS01NTA6IGhzbGEoMCwgMCUsIDUzJSwgMSk7XHJcbiRfY2xyLWdyZXlzY2FsZS01MDA6IGhzbGEoMCwgMCUsIDQ4JSwgMSk7XHJcbiRfY2xyLWdyZXlzY2FsZS00NTA6IGhzbGEoMCwgMCUsIDQzJSwgMSk7XHJcbiRfY2xyLWdyZXlzY2FsZS00MDA6IGhzbGEoMCwgMCUsIDM4JSwgMSk7XHJcbiRfY2xyLWdyZXlzY2FsZS0zNTA6IGhzbGEoMCwgMCUsIDMzJSwgMSk7XHJcbiRfY2xyLWdyZXlzY2FsZS0zMDA6IGhzbGEoMCwgMCUsIDI4JSwgMSk7XHJcbiRfY2xyLWdyZXlzY2FsZS0yNTA6IGhzbGEoMCwgMCUsIDIzJSwgMSk7XHJcbiRfY2xyLWdyZXlzY2FsZS0yMDA6IGhzbGEoMCwgMCUsIDE4JSwgMSk7XHJcbiRfY2xyLWdyZXlzY2FsZS0xNTA6IGhzbGEoMCwgMCUsIDEzJSwgMSk7XHJcbiRfY2xyLWdyZXlzY2FsZS0xMDA6IGhzbGEoMCwgMCUsIDglLCAxKTtcclxuJF9jbHItZ3JleXNjYWxlLTUwOiBoc2xhKDAsIDAlLCAzJSwgMSk7XHJcblxyXG4kY29sb3JzOiAoXHJcbiBncmV5c2NhbGU6IChcclxuICA5NTA6ICRfY2xyLWdyZXlzY2FsZS05NTAsXHJcbiAgOTAwOiAkX2Nsci1ncmV5c2NhbGUtOTAwLFxyXG4gIDg1MDogJF9jbHItZ3JleXNjYWxlLTg1MCxcclxuICA4MDA6ICRfY2xyLWdyZXlzY2FsZS04MDAsXHJcbiAgNzUwOiAkX2Nsci1ncmV5c2NhbGUtNzUwLFxyXG4gIDcwMDogJF9jbHItZ3JleXNjYWxlLTcwMCxcclxuICA2NTA6ICRfY2xyLWdyZXlzY2FsZS02NTAsXHJcbiAgNjAwOiAkX2Nsci1ncmV5c2NhbGUtNjAwLFxyXG4gIDU1MDogJF9jbHItZ3JleXNjYWxlLTU1MCxcclxuICA1MDA6ICRfY2xyLWdyZXlzY2FsZS01MDAsXHJcbiAgNDUwOiAkX2Nsci1ncmV5c2NhbGUtNDUwLFxyXG4gIDQwMDogJF9jbHItZ3JleXNjYWxlLTQwMCxcclxuICAzNTA6ICRfY2xyLWdyZXlzY2FsZS0zNTAsXHJcbiAgMzAwOiAkX2Nsci1ncmV5c2NhbGUtMzAwLFxyXG4gIDI1MDogJF9jbHItZ3JleXNjYWxlLTI1MCxcclxuICAyMDA6ICRfY2xyLWdyZXlzY2FsZS0yMDAsXHJcbiAgMTUwOiAkX2Nsci1ncmV5c2NhbGUtMTUwLFxyXG4gIDEwMDogJF9jbHItZ3JleXNjYWxlLTEwMCxcclxuICA1MDogJF9jbHItZ3JleXNjYWxlLTUwLFxyXG4gKSxcclxuKTtcclxuXHJcbiRjb2xvci1ncmV5c2NhbGUtOTUwOiB2YXIoLS1ncmV5c2NhbGUtOTUwKTtcclxuJGNvbG9yLWdyZXlzY2FsZS05MDA6IHZhcigtLWdyZXlzY2FsZS05MDApO1xyXG4kY29sb3ItZ3JleXNjYWxlLTg1MDogdmFyKC0tZ3JleXNjYWxlLTg1MCk7XHJcbiRjb2xvci1ncmV5c2NhbGUtODAwOiB2YXIoLS1ncmV5c2NhbGUtODAwKTtcclxuJGNvbG9yLWdyZXlzY2FsZS03NTA6IHZhcigtLWdyZXlzY2FsZS03NTApO1xyXG4kY29sb3ItZ3JleXNjYWxlLTcwMDogdmFyKC0tZ3JleXNjYWxlLTcwMCk7XHJcbiRjb2xvci1ncmV5c2NhbGUtNjUwOiB2YXIoLS1ncmV5c2NhbGUtNjUwKTtcclxuJGNvbG9yLWdyZXlzY2FsZS02MDA6IHZhcigtLWdyZXlzY2FsZS02MDApO1xyXG4kY29sb3ItZ3JleXNjYWxlLTU1MDogdmFyKC0tZ3JleXNjYWxlLTU1MCk7XHJcbiRjb2xvci1ncmV5c2NhbGUtNTAwOiB2YXIoLS1ncmV5c2NhbGUtNTAwKTtcclxuJGNvbG9yLWdyZXlzY2FsZS00NTA6IHZhcigtLWdyZXlzY2FsZS00NTApO1xyXG4kY29sb3ItZ3JleXNjYWxlLTQwMDogdmFyKC0tZ3JleXNjYWxlLTQwMCk7XHJcbiRjb2xvci1ncmV5c2NhbGUtMzUwOiB2YXIoLS1ncmV5c2NhbGUtMzUwKTtcclxuJGNvbG9yLWdyZXlzY2FsZS0zMDA6IHZhcigtLWdyZXlzY2FsZS0zMDApO1xyXG4kY29sb3ItZ3JleXNjYWxlLTI1MDogdmFyKC0tZ3JleXNjYWxlLTI1MCk7XHJcbiRjb2xvci1ncmV5c2NhbGUtMjAwOiB2YXIoLS1ncmV5c2NhbGUtMjAwKTtcclxuJGNvbG9yLWdyZXlzY2FsZS0xNTA6IHZhcigtLWdyZXlzY2FsZS0xNTApO1xyXG4kY29sb3ItZ3JleXNjYWxlLTEwMDogdmFyKC0tZ3JleXNjYWxlLTEwMCk7XHJcbiRjb2xvci1ncmV5c2NhbGUtNTA6IHZhcigtLWdyZXlzY2FsZS01MCk7IiwiQHVzZSAnc2FzczptZXRhJztcclxuQHVzZSAnc2FzczptYXRoJztcclxuQHVzZSAnc2FzczptYXAnO1xyXG5AdXNlICdzaXplcycgYXMgKjtcclxuQHVzZSAnYnJlYWtwb2ludHMnIGFzICo7XHJcbkB1c2UgJ3Rva2VucycgYXMgKjtcclxuXHJcblxyXG5AbWl4aW4gbXEoJHNpemUpIHtcclxuICBAaWYgbWFwLmhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkc2l6ZSkge1xyXG4gICAgJGJyZWFrcG9pbnQ6IG1hcC5nZXQoJGJyZWFrcG9pbnRzLCAkc2l6ZSk7XHJcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkYnJlYWtwb2ludCkge1xyXG4gICAgICBAY29udGVudDtcclxuICAgIH1cclxuICB9IEBlbHNlIGlmIG1ldGEudHlwZS1vZigkc2l6ZSkgPT0gbnVtYmVyIHtcclxuICAgIEBpZiBtYXRoLmlzLXVuaXRsZXNzKCRzaXplKSB7XHJcbiAgICAgIEBlcnJvciAnd2hlbiB1c2luZyBhIG51bWJlciB3aXRoIEBtcSgpIG1ha2Ugc3VyZSB0byBpbmNsdWRlIGEgdW5pdCc7XHJcbiAgICB9IEBlbHNlIHtcclxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJHNpemUpIHtcclxuICAgICAgICBAY29udGVudDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0gQGVsc2Uge1xyXG4gICAgQGVycm9yICd0aGUga2V5d29yZCAjeyRzaXplfSBpcyBub3QgaW4gdGhlICRicmVha3BvaW50cyBtYXAnO1xyXG4gIH1cclxufVxyXG5cclxuQG1peGluIG1xVW50aWwoJHNpemUpIHtcclxuICBAaWYgbWFwLmhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkc2l6ZSkge1xyXG4gICAgJGJyZWFrcG9pbnQ6IG1hcC5nZXQoJGJyZWFrcG9pbnRzLCAkc2l6ZSk7XHJcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWtwb2ludCkge1xyXG4gICAgICBAY29udGVudDtcclxuICAgIH1cclxuICB9IEBlbHNlIGlmIG1ldGEudHlwZS1vZigkc2l6ZSkgPT0gbnVtYmVyIHtcclxuICAgIEBpZiBtYXRoLmlzLXVuaXRsZXNzKCRzaXplKSB7XHJcbiAgICAgIEBlcnJvciAnd2hlbiB1c2luZyBhIG51bWJlciB3aXRoIEBtcSgpIG1ha2Ugc3VyZSB0byBpbmNsdWRlIGEgdW5pdCc7XHJcbiAgICB9IEBlbHNlIHtcclxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJHNpemUpIHtcclxuICAgICAgICBAY29udGVudDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0gQGVsc2Uge1xyXG4gICAgQGVycm9yICd0aGUga2V5d29yZCAjeyRzaXplfSBpcyBub3QgaW4gdGhlICRicmVha3BvaW50cyBtYXAnO1xyXG4gIH1cclxufVxyXG5cclxuQG1peGluIG1xRnJvbVVudGlsKCRmcm9tU2l6ZSwgJHVudGlsU2l6ZSkge1xyXG4gIEBpZiBtYXAuaGFzLWtleSgkYnJlYWtwb2ludHMsICRmcm9tU2l6ZSkgYW5kIG1hcC5oYXMta2V5KCRicmVha3BvaW50cywgJHVudGlsU2l6ZSkge1xyXG4gICAgJGZyb21CcmVha3BvaW50OiBtYXAuZ2V0KCRicmVha3BvaW50cywgJGZyb21TaXplKTtcclxuICAgICR1bnRpbEJyZWFrcG9pbnQ6IG1hcC5nZXQoJGJyZWFrcG9pbnRzLCAkdW50aWxTaXplKTtcclxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRmcm9tQnJlYWtwb2ludCkgYW5kIChtYXgtd2lkdGg6ICR1bnRpbEJyZWFrcG9pbnQpIHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcbiAgfSBAZWxzZSB7XHJcbiAgICBAZXJyb3IgJ3RoZSBrZXl3b3JkcyAjeyRmcm9tU2l6ZX0gYW5kICN7JHVudGlsU2l6ZX0gYXJlIG5vdCBpbiB0aGUgJGJyZWFrcG9pbnRzIG1hcCc7XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gcG9zKCRwb3MsICR0OiBudWxsLCAkcjogbnVsbCwgJGI6IG51bGwsICRsOiBudWxsKSB7XHJcbiAgcG9zaXRpb246ICRwb3M7XHJcbiAgdG9wOiAkdDtcclxuICByaWdodDogJHI7XHJcbiAgYm90dG9tOiAkYjtcclxuICBsZWZ0OiAkbDtcclxufVxyXG5cclxuQG1peGluIGFic29sdXRlKCRhcmdzLi4uKSB7XHJcbiAgQGluY2x1ZGUgcG9zKGFic29sdXRlLCAkYXJncy4uLik7XHJcbn1cclxuXHJcbkBtaXhpbiByZWxhdGl2ZSgkYXJncy4uLikge1xyXG4gIEBpbmNsdWRlIHBvcyhyZWxhdGl2ZSwgJGFyZ3MuLi4pO1xyXG59XHJcblxyXG5AbWl4aW4gZml4ZWQoJGFyZ3MuLi4pIHtcclxuICBAaW5jbHVkZSBwb3MoZml4ZWQsICRhcmdzLi4uKTtcclxufVxyXG5cclxuLypcclxuQG1peGluIGhlYWRpbmcoJGZzLCAkY29sb3I6ICRoZWFkaW5nLWNvbG9yLWRlZmF1bHQsICRsaDogJGhlYWRpbmctbGluZS1oZWlnaHQsICRsczogJGhlYWRpbmctbGV0dGVyLXNwYWNpbmctZGVmYXVsdCkge1xyXG4gIGZvbnQtc2l6ZTogJGZzO1xyXG4gIGNvbG9yOiAkY29sb3I7XHJcblxyXG4gIGZvbnQtZmFtaWx5OiAkaGVhZGluZy1mb250LWZhbWlseTtcclxuICB0ZXh0LXRyYW5zZm9ybTogJGhlYWRpbmctdGV4dC10cmFuc2Zvcm07XHJcbiAgbGV0dGVyLXNwYWNpbmc6ICRscztcclxuICBmb250LXdlaWdodDogJGhlYWRpbmctZm9udC13ZWlnaHQ7XHJcbiAgbGluZS1oZWlnaHQ6ICRsaDtcclxuXHJcbiAgdGV4dC13cmFwOiBiYWxhbmNlO1xyXG59XHJcbiovXHJcblxyXG5AbWl4aW4gY29udGFpbmVyKCRwYWRkaW5nOiBjYWxjKCN7JGNvbnRhaW5lci1pbmxpbmUtcGFkZGluZ30gKiAyKSwgJG1heC13aWR0aDogJGNvbnRhaW5lci1tYXgtd2lkdGgpIHtcclxuICB3aWR0aDogbWluKDEwMCUgLSB2YXIoLS1wYWRkaW5nLCAkcGFkZGluZyksIHZhcigtLW1heC13aWR0aCwgJG1heC13aWR0aCkpO1xyXG4gIG1hcmdpbi1pbmxpbmU6IGF1dG87XHJcbn1cclxuXHJcbkBtaXhpbiBkZWNvcmF0aW9ucygkbWFwLCAkcG9zaXRpb24pIHtcclxuICBjb250ZW50OiAnJztcclxuXHJcbiAgQGVhY2ggJHBzZXVkbywgJGNvbnRlbnQgaW4gbWFwLmdldCgkbWFwLCAkcG9zaXRpb24pIHtcclxuICAgICY6OiN7JHBzZXVkb30ge1xyXG4gICAgICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJGNvbnRlbnQge1xyXG4gICAgICAgICN7JGtleX06ICN7JHZhbHVlfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCJAdXNlICcuLi9hYnN0cmFjdHMnIGFzICo7XHJcblxyXG5AZm9udC1mYWNlIHtcclxuICBmb250LWZhbWlseTogJGZvbnQtZmFjZS1kaXNwbGF5O1xyXG4gIHNyYzogdXJsKCcuLi9mb250cy9PcGhpYW4tUmVndWxhci13ZWJmb250LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpLFxyXG4gICAgdXJsKCcuLi9mb250cy9PcGhpYW4tUmVndWxhci13ZWJmb250LndvZmYnKSBmb3JtYXQoJ3dvZmYnKSxcclxuICAgIHVybCgnLi4vZm9udHMvT3BoaWFuLVJlZ3VsYXItd2ViZm9udC50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyk7XHJcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuICBmb250LXN0eWxlOiBub3JtYWw7XHJcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xyXG59XHJcblxyXG5AZm9udC1mYWNlIHtcclxuICBmb250LWZhbWlseTogJGZvbnQtZmFjZS1kaXNwbGF5O1xyXG4gIHNyYzogdXJsKCcuLi9mb250cy9PcGhpYW4tQm9sZC13ZWJmb250LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpLFxyXG4gICAgdXJsKCcuLi9mb250cy9PcGhpYW4tQm9sZC13ZWJmb250LndvZmYnKSBmb3JtYXQoJ3dvZmYnKSxcclxuICAgIHVybCgnLi4vZm9udHMvT3BoaWFuLUJvbGQtd2ViZm9udC50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyk7XHJcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xyXG4gIGZvbnQtZGlzcGxheTogc3dhcDtcclxufVxyXG5cclxuQGZvbnQtZmFjZSB7XHJcbiAgZm9udC1mYW1pbHk6ICRmb250LWZhY2UtZGlzcGxheTtcclxuICBzcmM6IHVybCgnLi4vZm9udHMvT3BoaWFuLUl0YWxpYy13ZWJmb250LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpLFxyXG4gICAgdXJsKCcuLi9mb250cy9PcGhpYW4tSXRhbGljLXdlYmZvbnQud29mZicpIGZvcm1hdCgnd29mZicpLFxyXG4gICAgdXJsKCcuLi9mb250cy9PcGhpYW4tSXRhbGljLXdlYmZvbnQudHRmJykgZm9ybWF0KCd0cnVldHlwZScpO1xyXG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XHJcbiAgZm9udC1zdHlsZTogaXRhbGljO1xyXG4gIGZvbnQtZGlzcGxheTogc3dhcDtcclxufVxyXG5cclxuQGZvbnQtZmFjZSB7XHJcbiAgZm9udC1mYW1pbHk6ICRmb250LWZhY2UtZGlzcGxheTtcclxuICBzcmM6IHVybCgnLi4vZm9udHMvT3BoaWFuLUJvbGRJdGFsaWMtd2ViZm9udC53b2ZmMicpIGZvcm1hdCgnd29mZjInKSxcclxuICAgIHVybCgnLi4vZm9udHMvT3BoaWFuLUJvbGRJdGFsaWMtd2ViZm9udC53b2ZmJykgZm9ybWF0KCd3b2ZmJyksXHJcbiAgICB1cmwoJy4uL2ZvbnRzL09waGlhbi1Cb2xkSXRhbGljLXdlYmZvbnQudHRmJykgZm9ybWF0KCd0cnVldHlwZScpO1xyXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcclxuICBmb250LWRpc3BsYXk6IHN3YXA7XHJcbn0iLCJAdXNlICdzYXNzOm1hcCc7XHJcbkB1c2UgJ25vZGVfbW9kdWxlcy91dG9waWEtY29yZS1zY3NzL3NyYy91dG9waWEnIGFzIHV0b3BpYTtcclxuXHJcbiRmb250LWZhY2UtYmFzZTogJ1BldHJvbmEnO1xyXG4kZm9udC1mYWNlLWFjY2VudDogJ0dlaXN0JztcclxuJGZvbnQtZmFjZS1kaXNwbGF5OiAnT3BoaWFuJzsgLy8gcmVwbGFjZW1lbnQgZm9yICdPcHRpbWEnLCB3aGljaCBpcyBleHBlbnNpdmVcclxuXHJcbiRmb250LWZhbWlseS1iYXNlOiAkZm9udC1mYWNlLWJhc2UsIHNlcmlmO1xyXG4kZm9udC1mYW1pbHktYWNjZW50OiAkZm9udC1mYWNlLWFjY2VudCwgc2Fucy1zZXJpZjtcclxuJGZvbnQtZmFtaWx5LWRpc3BsYXk6ICRmb250LWZhY2UtZGlzcGxheSwgJGZvbnQtZmFjZS1iYXNlLCBHZW9yZ2lhLCBzZXJpZjtcclxuJGZvbnQtZmFtaWx5LWljb25zOiAnRm9udCBBd2Vzb21lIDYgUHJvJztcclxuXHJcbiRmb250LXdlaWdodC1kZWZhdWx0OiA0MDA7XHJcbiRmb250LXdlaWdodC1tZWRpdW06IDUwMDtcclxuJGZvbnQtd2VpZ2h0LWJvbGQ6IDcwMDtcclxuXHJcbiRsZXR0ZXItc3BhY2luZy0wOiAwO1xyXG4vLyAkbGV0dGVyLXNwYWNpbmctdGlnaHQ6ICRfbHMtdGlnaHQ7XHJcbi8vICRsZXR0ZXItc3BhY2luZy1sb29zZTogJF9scy1sb29zZTtcclxuXHJcbiRsaW5lLWhlaWdodC0wOiAwO1xyXG4kbGluZS1oZWlnaHQtMTogMTtcclxuJGxpbmUtaGVpZ2h0LXRpZ2h0OiAxLjE7XHJcbiRsaW5lLWhlaWdodC1iYXNlOiAxLjI7XHJcbiRsaW5lLWhlaWdodC1sb29zZTogMS41O1xyXG5cclxuJHR5cGUtbWF4LXdpZHRoOiA4MGNoO1xyXG5cclxuLy8gJGZvbnQtZmVhdHVyZS1iYXNlOiAkX2ZmZWF0dXJlX2Jhc2U7XHJcbi8vICRmb250LWZlYXR1cmUtZGlzcGxheTogJF9mZmVhdHVyZV9kaXNwbGF5O1xyXG4vLyAkZm9udC1mZWF0dXJlLWFsdDogJF9mZmVhdHVyZV9hbHQ7XHJcblxyXG4kZm9udC1zaXplczogKFxyXG4gICdtaW5XaWR0aCc6IDM2MCxcclxuICAnbWF4V2lkdGgnOiAxMjQwLFxyXG4gICdtaW5Gb250U2l6ZSc6IDE2LFxyXG4gICdtYXhGb250U2l6ZSc6IDE2LFxyXG4gICdtaW5UeXBlU2NhbGUnOiAxLjEyNSxcclxuICAnbWF4VHlwZVNjYWxlJzogMS4yNSxcclxuICAncG9zaXRpdmVTdGVwcyc6IDYsXHJcbiAgJ25lZ2F0aXZlU3RlcHMnOiAyLFxyXG4pO1xyXG5cclxuJHR5cGVTY2FsZTogdXRvcGlhLmNhbGN1bGF0ZVR5cGVTY2FsZSgoXHJcbiAgXCJtaW5XaWR0aFwiOiBtYXAuZ2V0KCRmb250LXNpemVzLCBcIm1pbldpZHRoXCIpLFxyXG4gIFwibWF4V2lkdGhcIjogbWFwLmdldCgkZm9udC1zaXplcywgXCJtYXhXaWR0aFwiKSxcclxuICBcIm1pbkZvbnRTaXplXCI6IG1hcC5nZXQoJGZvbnQtc2l6ZXMsIFwibWluRm9udFNpemVcIiksXHJcbiAgXCJtYXhGb250U2l6ZVwiOiBtYXAuZ2V0KCRmb250LXNpemVzLCBcIm1heEZvbnRTaXplXCIpLFxyXG4gIFwibWluVHlwZVNjYWxlXCI6IG1hcC5nZXQoJGZvbnQtc2l6ZXMsIFwibWluVHlwZVNjYWxlXCIpLFxyXG4gIFwibWF4VHlwZVNjYWxlXCI6IG1hcC5nZXQoJGZvbnQtc2l6ZXMsIFwibWF4VHlwZVNjYWxlXCIpLFxyXG4gIFwicG9zaXRpdmVTdGVwc1wiOiBtYXAuZ2V0KCRmb250LXNpemVzLCBcInBvc2l0aXZlU3RlcHNcIiksXHJcbiAgXCJuZWdhdGl2ZVN0ZXBzXCI6IG1hcC5nZXQoJGZvbnQtc2l6ZXMsIFwibmVnYXRpdmVTdGVwc1wiKSxcclxuKSk7XHJcblxyXG4kZm9udC1zaXplLS0yOiB2YXIoLS1mcy0tMik7XHJcbiRmb250LXNpemUtLTE6IHZhcigtLWZzLS0xKTtcclxuJGZvbnQtc2l6ZS0wOiB2YXIoLS1mcy0wKTtcclxuJGZvbnQtc2l6ZS0xOiB2YXIoLS1mcy0xKTtcclxuJGZvbnQtc2l6ZS0yOiB2YXIoLS1mcy0yKTtcclxuJGZvbnQtc2l6ZS0zOiB2YXIoLS1mcy0zKTtcclxuJGZvbnQtc2l6ZS00OiB2YXIoLS1mcy00KTtcclxuJGZvbnQtc2l6ZS01OiB2YXIoLS1mcy01KTtcclxuJGZvbnQtc2l6ZS02OiB2YXIoLS1mcy02KTsiLCIqLFxyXG4qOjpiZWZvcmUsXHJcbio6OmFmdGVyIHtcclxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG59XHJcblxyXG4qIHtcclxuICBtYXJnaW46IDA7XHJcbiAgcGFkZGluZzogMDtcclxuICBmb250OiBpbmhlcml0O1xyXG59XHJcblxyXG5pbWcsXHJcbnBpY3R1cmUsXHJcbnN2ZyB7XHJcbiAgZGlzcGxheTogYmxvY2s7XHJcbiAgbWF4LXdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG50ZXh0YXJlYSB7XHJcbiAgcmVzaXplOiB2ZXJ0aWNhbDtcclxufSIsIkB1c2UgJy4uL2Fic3RyYWN0cycgYXMgKjtcclxuXHJcbmh0bWwge1xyXG4gIHNjcm9sbC1iZWhhdmlvcjogc21vb3RoO1xyXG4gIHNjcm9sbC1wYWRkaW5nLWJsb2NrOiAycmVtO1xyXG59XHJcblxyXG5ib2R5IHtcclxuICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LWJhc2U7XHJcbiAgZm9udC1zaXplOiAkZm9udC1zaXplLTA7XHJcbiAgbGluZS1oZWlnaHQ6IDEuNDtcclxuICBmb250LXdlaWdodDogNDAwO1xyXG4gIGZvbnQtb3B0aWNhbC1zaXppbmc6IGF1dG87XHJcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWFjY2VudC1saWdodDtcclxuICBjb2xvcjogJGNvbG9yLXRleHQ7XHJcbn1cclxuXHJcbm1haW4ge1xyXG4gIG92ZXJmbG93LXg6IGNsaXA7XHJcbn1cclxuXHJcbmIsXHJcbnN0cm9uZyB7XHJcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbn1cclxuXHJcbmVtIHtcclxuICBmb250LXN0eWxlOiBpdGFsaWM7XHJcbn1cclxuXHJcbnVsLFxyXG5vbCB7XHJcbiAgbGlzdC1zdHlsZTogbm9uZTtcclxufVxyXG5cclxuaHIge1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGNvbG9yLWJvcmRlcjtcclxufVxyXG5cclxuXHJcbjpyb290IHtcclxuICBhY2NlbnQtY29sb3I6ICRjb2xvci1zZWNvbmRhcnk7XHJcbn1cclxuXHJcbjpmb2N1czpub3QoOmZvY3VzLXZpc2libGUpIHtcclxuICBvdXRsaW5lOiBub25lO1xyXG59XHJcbjpmb2N1cy12aXNpYmxlIHtcclxuICBvdXRsaW5lOiAxcHggZG90dGVkICRjb2xvci1zZWNvbmRhcnk7XHJcbiAgb3V0bGluZS1vZmZzZXQ6IC4zNzVlbTtcclxufVxyXG46OnNlbGVjdGlvbiB7XHJcbiAgYmFja2dyb3VuZDogJGNvbG9yLWFjY2VudDtcclxuICBjb2xvcjogJGNvbG9yLXRleHQ7XHJcbn1cclxuXHJcblxyXG5cclxuLyogU3RhdGljIGFycm93IGljb24gKHNhbWUgc2hhcGUgYXMgLmJ1dHRvbl9fYXJyb3cpOiAqL1xyXG4uYXJyb3cge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgaGVpZ2h0OiAuNWVtO1xyXG4gIHdpZHRoOiAxZW07XHJcblxyXG4gICY6YmVmb3JlIHtcclxuICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiA1MCU7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgcmlnaHQ6IDAuMmVtO1xyXG4gICAgaGVpZ2h0OiAxcHg7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBjdXJyZW50Q29sb3I7XHJcbiAgfVxyXG4gICY6YWZ0ZXIge1xyXG4gICAgY29udGVudDogJyc7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICBpbnNldDogMDtcclxuICAgIG1hc2staW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMTcgOCcgZmlsbD0nbm9uZSclM0UlM0NwYXRoIGQ9J00xMSAwQzExIDIgMTUgNCAxNSA0QzE1IDQgMTEgNiAxMSA4JyBzdHJva2U9JyUyM0NCMzMzQicvJTNFJTNDL3N2ZyUzRVwiKTtcclxuICAgIG1hc2stc2l6ZTogY29udGFpbjtcclxuICAgIG1hc2stcG9zaXRpb246IGNlbnRlciByaWdodDtcclxuICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBjdXJyZW50Q29sb3I7XHJcbiAgfVxyXG59IiwiQHVzZSAnLi4vYWJzdHJhY3RzJyBhcyAqO1xyXG5cclxuLy8gR0xPQkFMIEZSQU1FV09SSyBTVFVGRiAoYWx3YXlzIGluIHRoZW1lISlcclxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuLypcclxuXHJcbi8vIFdQTUwgdW53YW50ZWQgYmFubmVyXHJcbi5vdGdzLWRldmVsb3BtZW50LXNpdGUtZnJvbnQtZW5kIHtcclxuICBkaXNwbGF5OiBub25lO1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHJlZCAhaW1wb3J0YW50O1xyXG59XHJcbiovXHJcblxyXG4uZmFuY3lib3hfX2NvbnRhaW5lciB7XHJcbiAgei1pbmRleDogOTk5OTk7XHJcbn1cclxuIiwiQHVzZSAnc2FzczptYXAnO1xyXG5AdXNlICcuLi9hYnN0cmFjdHMnIGFzICo7XHJcbkB1c2UgJ25vZGVfbW9kdWxlcy91dG9waWEtY29yZS1zY3NzL3NyYy91dG9waWEnIGFzIHV0b3BpYTtcclxuXHJcbjpyb290IHtcclxuICAtLWZmLWJhc2U6ICN7JGZvbnQtZmFtaWx5LWJhc2V9O1xyXG4gIC0tZmYtaGVhZGluZzogI3skZm9udC1mYW1pbHktZGlzcGxheX07XHJcblxyXG4gIC0tZ3V0dGVyOiAjeyRndXR0ZXJ9O1xyXG5cclxuICAtLWZhLWxpLW1hcmdpbjogMS42ZW07XHJcblxyXG4gIEBlYWNoICRjb2xvciwgJHZhbHVlIGluICRzaW1wbGUtY29sb3JzIHtcclxuICAgIC0tI3skY29sb3J9OiAjeyR2YWx1ZX07XHJcbiAgfVxyXG4gIFxyXG4gIEBlYWNoICRjb2xvciwgJHNoYWRlLW1hcCBpbiAkY29sb3JzIHtcclxuICAgIEBlYWNoICRzaGFkZSwgJHZhbHVlIGluICRzaGFkZS1tYXAge1xyXG4gICAgICAtLSN7JGNvbG9yfS0jeyRzaGFkZX06ICN7JHZhbHVlfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qIEBsaW5rIGh0dHBzOi8vdXRvcGlhLmZ5aS90eXBlL2NhbGN1bGF0b3IvP2M9NjAwLDE2LDEuMjUsMTQ0MCwxNiwxLjMzMywzLDEsJnM9MC43NXwwLjV8MC4yNSwxLjV8MnwzfDR8NixzLWwmZz1zLGwseGwsMTIgKi9cclxuICBAaW5jbHVkZSB1dG9waWEuZ2VuZXJhdGVUeXBlU2NhbGUoXHJcbiAgICAoXHJcbiAgICAgICdtaW5XaWR0aCc6IG1hcC5nZXQoJGZvbnQtc2l6ZXMsICdtaW5XaWR0aCcpLFxyXG4gICAgICAnbWF4V2lkdGgnOiBtYXAuZ2V0KCRmb250LXNpemVzLCAnbWF4V2lkdGgnKSxcclxuICAgICAgJ21pbkZvbnRTaXplJzogbWFwLmdldCgkZm9udC1zaXplcywgJ21pbkZvbnRTaXplJyksXHJcbiAgICAgICdtYXhGb250U2l6ZSc6IG1hcC5nZXQoJGZvbnQtc2l6ZXMsICdtYXhGb250U2l6ZScpLFxyXG4gICAgICAnbWluVHlwZVNjYWxlJzogbWFwLmdldCgkZm9udC1zaXplcywgJ21pblR5cGVTY2FsZScpLFxyXG4gICAgICAnbWF4VHlwZVNjYWxlJzogbWFwLmdldCgkZm9udC1zaXplcywgJ21heFR5cGVTY2FsZScpLFxyXG4gICAgICAncG9zaXRpdmVTdGVwcyc6IG1hcC5nZXQoJGZvbnQtc2l6ZXMsICdwb3NpdGl2ZVN0ZXBzJyksXHJcbiAgICAgICduZWdhdGl2ZVN0ZXBzJzogbWFwLmdldCgkZm9udC1zaXplcywgJ25lZ2F0aXZlU3RlcHMnKSxcclxuICAgICAgJ3ByZWZpeCc6ICdmcy0nLFxyXG4gICAgKVxyXG4gICk7XHJcblxyXG4gIC8qIEBsaW5rIGh0dHBzOi8vdXRvcGlhLmZ5aS9zcGFjZS9jYWxjdWxhdG9yP2M9MzIwLDE2LDEuMiwxNDQwLDE2LDEuMjUsNSwyLCZzPTAuNSwxLjV8Mi41fDMuNXw1fDYuNSwyeHMtbHwyeGwtNXhsfDJ4bC00eGx8bC0zeGwmZz1zLGwseGwsTmFOICovXHJcbiAgQGluY2x1ZGUgdXRvcGlhLmdlbmVyYXRlU3BhY2VTY2FsZShcclxuICAgIChcclxuICAgICAgJ21pbldpZHRoJzogbWFwLmdldCgkc2l6ZXMsICdtaW5XaWR0aCcpLFxyXG4gICAgICAnbWF4V2lkdGgnOiBtYXAuZ2V0KCRzaXplcywgJ21heFdpZHRoJyksXHJcbiAgICAgICdtaW5TaXplJzogbWFwLmdldCgkc2l6ZXMsICdtaW5TaXplJyksXHJcbiAgICAgICdtYXhTaXplJzogbWFwLmdldCgkc2l6ZXMsICdtYXhTaXplJyksXHJcbiAgICAgICdwb3NpdGl2ZVN0ZXBzJzogbWFwLmdldCgkc2l6ZXMsICdwb3NpdGl2ZVN0ZXBzJyksXHJcbiAgICAgICduZWdhdGl2ZVN0ZXBzJzogbWFwLmdldCgkc2l6ZXMsICduZWdhdGl2ZVN0ZXBzJyksXHJcbiAgICAgICdjdXN0b21TaXplcyc6IG1hcC5nZXQoJHNpemVzLCAnY3VzdG9tU2l6ZXMnKSxcclxuICAgICAgJ3ByZWZpeCc6ICcnLFxyXG4gICAgKVxyXG4gICk7XHJcblxyXG4gIEBpbmNsdWRlIG1xKG1lZGl1bSkge1xyXG4gICAgLS1ndXR0ZXI6IHZhcigtLWd1dHRlciwgI3skc2l6ZS1zfSk7XHJcbiAgfVxyXG59XHJcbiIsIkB1c2UgXCJzYXNzOmxpc3RcIjtcbkB1c2UgXCJzYXNzOm1ldGFcIjtcbkB1c2UgXCJzYXNzOm1hcFwiO1xuQHVzZSBcInNhc3M6bWF0aFwiO1xuQHVzZSBcInNhc3M6c3RyaW5nXCI7XG5AdXNlICcuL2hlbHBlcnMuc2Nzcyc7XG5cbi8vIFNpbmd1bGFyIGNsYW1wXG5cbkBmdW5jdGlvbiBjYWxjdWxhdGVDbGFtcCgkcGFyYW1zKSB7XG4gICR1bml0OiAwLjA2MjVyZW07XG4gIEBpZiAobWFwLmdldCgkcGFyYW1zLCBcInVzZVB4XCIpKSB7XG4gICAgJHVuaXQ6IDFweDtcbiAgfVxuXG4gICRyZWxhdGl2ZVVuaXQ6IDF2dztcbiAgQGlmIChtYXAuZ2V0KCRwYXJhbXMsIFwicmVsYXRpdmVUb1wiKSA9PSBcImNvbnRhaW5lclwiKSB7XG4gICAgJHJlbGF0aXZlVW5pdDogMWNxaTtcbiAgfVxuICBAaWYgKG1hcC5nZXQoJHBhcmFtcywgXCJyZWxhdGl2ZVRvXCIpID09IFwidmlld3BvcnRcIikge1xuICAgICRyZWxhdGl2ZVVuaXQ6IDF2aTtcbiAgfVxuXG4gICRpc05lZ2F0aXZlOiBtYXAuZ2V0KCRwYXJhbXMsIFwibWluU2l6ZVwiKSA+IG1hcC5nZXQoJHBhcmFtcywgXCJtYXhTaXplXCIpO1xuICAkbWluOiBtYXAuZ2V0KCRwYXJhbXMsIFwibWluU2l6ZVwiKTtcbiAgJG1heDogbWFwLmdldCgkcGFyYW1zLCBcIm1heFNpemVcIik7XG5cbiAgQGlmICgkaXNOZWdhdGl2ZSkge1xuICAgICRtaW46IG1hcC5nZXQoJHBhcmFtcywgXCJtYXhTaXplXCIpO1xuICAgICRtYXg6IG1hcC5nZXQoJHBhcmFtcywgXCJtaW5TaXplXCIpXG4gIH1cblxuICAkc2xvcGU6IG1hdGguZGl2KChtYXAuZ2V0KCRwYXJhbXMsIFwibWF4U2l6ZVwiKSAtIG1hcC5nZXQoJHBhcmFtcywgXCJtaW5TaXplXCIpKSwgKG1hcC5nZXQoJHBhcmFtcywgXCJtYXhXaWR0aFwiKSAtIG1hcC5nZXQoJHBhcmFtcywgXCJtaW5XaWR0aFwiKSkpO1xuICAkaW50ZXJzZWN0aW9uOiAoLTEgKiBtYXAuZ2V0KCRwYXJhbXMsIFwibWluV2lkdGhcIikpICogJHNsb3BlICsgbWFwLmdldCgkcGFyYW1zLCBcIm1pblNpemVcIik7XG4gIEByZXR1cm4gXCJjbGFtcCgje2hlbHBlcnMucm91bmRWYWx1ZSgkbWluICogJHVuaXQpfSwgI3toZWxwZXJzLnJvdW5kVmFsdWUoJGludGVyc2VjdGlvbiAqICR1bml0KX0gKyAje2hlbHBlcnMucm91bmRWYWx1ZSgkc2xvcGUgKiAxMDApICogJHJlbGF0aXZlVW5pdH0sICN7aGVscGVycy5yb3VuZFZhbHVlKCRtYXggKiAkdW5pdCl9KVwiO1xufVxuXG4vLyBUeXBlXG5cbkBmdW5jdGlvbiBjYWxjdWxhdGVUeXBlU2l6ZSgkY29uZmlnLCAkdmlld3BvcnQsICRzdGVwKSB7XG4gICRzY2FsZTogaGVscGVycy5yYW5nZShtYXAuZ2V0KCRjb25maWcsICdtaW5XaWR0aCcpLCBtYXAuZ2V0KCRjb25maWcsICdtYXhXaWR0aCcpLCBtYXAuZ2V0KCRjb25maWcsICdtaW5UeXBlU2NhbGUnKSwgbWFwLmdldCgkY29uZmlnLCAnbWF4VHlwZVNjYWxlJyksICR2aWV3cG9ydCk7XG4gICRmb250U2l6ZTogaGVscGVycy5yYW5nZShtYXAuZ2V0KCRjb25maWcsICdtaW5XaWR0aCcpLCBtYXAuZ2V0KCRjb25maWcsICdtYXhXaWR0aCcpLCBtYXAuZ2V0KCRjb25maWcsICdtaW5Gb250U2l6ZScpLCBtYXAuZ2V0KCRjb25maWcsICdtYXhGb250U2l6ZScpLCAkdmlld3BvcnQpO1xuICBAcmV0dXJuICRmb250U2l6ZSAqIG1hdGgucG93KCRzY2FsZSwgJHN0ZXApO1xufVxuXG5AZnVuY3Rpb24gY2FsY3VsYXRlVHlwZVN0ZXAoJGNvbmZpZywgJHN0ZXApIHtcbiAgJG1pblNpemU6IGNhbGN1bGF0ZVR5cGVTaXplKCRjb25maWcsIG1hcC5nZXQoJGNvbmZpZywgJ21pbldpZHRoJyksICRzdGVwKTtcbiAgJG1heFNpemU6IGNhbGN1bGF0ZVR5cGVTaXplKCRjb25maWcsIG1hcC5nZXQoJGNvbmZpZywgJ21heFdpZHRoJyksICRzdGVwKTtcblxuICBAcmV0dXJuIChcbiAgICBcInN0ZXBcIjogJHN0ZXAsXG4gICAgXCJtaW5TaXplXCI6ICRtaW5TaXplLFxuICAgIFwibWF4U2l6ZVwiOiAkbWF4U2l6ZSxcbiAgICBcImNsYW1wXCI6IGNhbGN1bGF0ZUNsYW1wKChcbiAgICAgIFwibWluV2lkdGhcIjogbWFwLmdldCgkY29uZmlnLCBcIm1pbldpZHRoXCIpLFxuICAgICAgXCJtYXhXaWR0aFwiOiBtYXAuZ2V0KCRjb25maWcsIFwibWF4V2lkdGhcIiksXG4gICAgICBcIm1pblNpemVcIjogJG1pblNpemUsXG4gICAgICBcIm1heFNpemVcIjogJG1heFNpemUsXG4gICAgICBcInJlbGF0aXZlVG9cIjogbWFwLmdldCgkY29uZmlnLCBcInJlbGF0aXZlVG9cIilcbiAgICApKVxuICApO1xufVxuXG5AZnVuY3Rpb24gY2FsY3VsYXRlVHlwZVNjYWxlKCRjb25maWcpIHtcbiAgJHN0ZXBzOiBoZWxwZXJzLm5ld0xpc3QoY2FsY3VsYXRlVHlwZVN0ZXAoJGNvbmZpZywgMCkpO1xuXG4gICRwb3NpdGl2ZVN0ZXBzOiBoZWxwZXJzLmdldERlZmF1bHQoJGNvbmZpZywgXCJwb3NpdGl2ZVN0ZXBzXCIsIDApO1xuICBAaWYgKCRwb3NpdGl2ZVN0ZXBzICE9IDApIHtcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRwb3NpdGl2ZVN0ZXBzIHtcbiAgICAgICRzdGVwczogbGlzdC5hcHBlbmQoJHN0ZXBzLCBjYWxjdWxhdGVUeXBlU3RlcCgkY29uZmlnLCAkaSkpO1xuICAgIH1cbiAgfVxuXG4gICRuZWdhdGl2ZVN0ZXBzOiBoZWxwZXJzLmdldERlZmF1bHQoJGNvbmZpZywgXCJuZWdhdGl2ZVN0ZXBzXCIsIDApO1xuICBAaWYgKCRuZWdhdGl2ZVN0ZXBzICE9IDApIHtcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRuZWdhdGl2ZVN0ZXBzIHtcbiAgICAgICRzdGVwczogaGVscGVycy5wcmVwZW5kKCRzdGVwcywgY2FsY3VsYXRlVHlwZVN0ZXAoJGNvbmZpZywgLTEgKiAkaSkpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHN0ZXBzO1xufVxuXG4vLyBTcGFjZVxuXG5AZnVuY3Rpb24gY2FsY3VsYXRlU3BhY2VTaXplKCRjb25maWcsICRtdWx0aXBsaWVyLCAkc3RlcCkge1xuICAkbWluU2l6ZTogbWF0aC5yb3VuZChtYXAuZ2V0KCRjb25maWcsIFwibWluU2l6ZVwiKSAqICRtdWx0aXBsaWVyKTtcbiAgJG1heFNpemU6IG1hdGgucm91bmQobWFwLmdldCgkY29uZmlnLCBcIm1heFNpemVcIikgKiAkbXVsdGlwbGllcik7XG5cbiAgJGxhYmVsOiAncyc7XG4gIEBpZiAoJHN0ZXAgPT0gMSkge1xuICAgICRsYWJlbDogJ20nO1xuICB9IEBlbHNlIGlmICgkc3RlcCA9PSAyKSB7XG4gICAgJGxhYmVsOiAnbCc7XG4gIH0gQGVsc2UgaWYgKCRzdGVwID09IDMpIHtcbiAgICAkbGFiZWw6ICd4bCc7XG4gIH0gQGVsc2UgaWYgKCRzdGVwID4gMykge1xuICAgICRsYWJlbDogXCIjeyRzdGVwIC0gMn14bFwiO1xuICB9IEBlbHNlIGlmICgkc3RlcCA9PSAtMSkge1xuICAgICRsYWJlbDogJ3hzJztcbiAgfSBAZWxzZSBpZiAoJHN0ZXAgPCAtMSkge1xuICAgICRsYWJlbDogXCIje21hdGguYWJzKCRzdGVwKX14c1wiO1xuICB9XG5cbiAgQHJldHVybiAoXG4gICAgXCJsYWJlbFwiOiAkbGFiZWwsXG4gICAgXCJtaW5TaXplXCI6IGhlbHBlcnMucm91bmRWYWx1ZSgkbWluU2l6ZSksXG4gICAgXCJtYXhTaXplXCI6IGhlbHBlcnMucm91bmRWYWx1ZSgkbWF4U2l6ZSksXG4gICAgXCJjbGFtcFwiOiBjYWxjdWxhdGVDbGFtcCgoXG4gICAgICBcIm1pbldpZHRoXCI6IG1hcC5nZXQoJGNvbmZpZywgXCJtaW5XaWR0aFwiKSxcbiAgICAgIFwibWF4V2lkdGhcIjogbWFwLmdldCgkY29uZmlnLCBcIm1heFdpZHRoXCIpLFxuICAgICAgXCJtaW5TaXplXCI6ICRtaW5TaXplLFxuICAgICAgXCJtYXhTaXplXCI6ICRtYXhTaXplLFxuICAgICAgXCJyZWxhdGl2ZVRvXCI6IG1hcC5nZXQoJGNvbmZpZywgXCJyZWxhdGl2ZVRvXCIpXG4gICAgKSksXG4gICAgXCJjbGFtcFB4XCI6IGNhbGN1bGF0ZUNsYW1wKChcbiAgICAgIFwibWluV2lkdGhcIjogbWFwLmdldCgkY29uZmlnLCBcIm1pbldpZHRoXCIpLFxuICAgICAgXCJtYXhXaWR0aFwiOiBtYXAuZ2V0KCRjb25maWcsIFwibWF4V2lkdGhcIiksXG4gICAgICBcIm1pblNpemVcIjogJG1pblNpemUsXG4gICAgICBcIm1heFNpemVcIjogJG1heFNpemUsXG4gICAgICBcInVzZVB4XCI6IHRydWUsXG4gICAgICBcInJlbGF0aXZlVG9cIjogbWFwLmdldCgkY29uZmlnLCBcInJlbGF0aXZlVG9cIilcbiAgICApKVxuICApO1xufVxuXG5AZnVuY3Rpb24gY2FsY3VsYXRlU3BhY2VQYWlyKCRjb25maWcsICRhLCAkYikge1xuICBAcmV0dXJuIChcbiAgICBcImxhYmVsXCI6IFwiI3ttYXAuZ2V0KCRhLCBcImxhYmVsXCIpfS0je21hcC5nZXQoJGIsIFwibGFiZWxcIil9XCIsXG4gICAgXCJtaW5TaXplXCI6IG1hcC5nZXQoJGEsIFwibWluU2l6ZVwiKSxcbiAgICBcIm1heFNpemVcIjogbWFwLmdldCgkYiwgXCJtYXhTaXplXCIpLFxuICAgIFwiY2xhbXBcIjogY2FsY3VsYXRlQ2xhbXAoKFxuICAgICAgXCJtaW5XaWR0aFwiOiBtYXAuZ2V0KCRjb25maWcsIFwibWluV2lkdGhcIiksXG4gICAgICBcIm1heFdpZHRoXCI6IG1hcC5nZXQoJGNvbmZpZywgXCJtYXhXaWR0aFwiKSxcbiAgICAgIFwibWluU2l6ZVwiOiBtYXAuZ2V0KCRhLCBcIm1pblNpemVcIiksXG4gICAgICBcIm1heFNpemVcIjogbWFwLmdldCgkYiwgXCJtYXhTaXplXCIpLFxuICAgICAgXCJyZWxhdGl2ZVRvXCI6IG1hcC5nZXQoJGNvbmZpZywgXCJyZWxhdGl2ZVRvXCIpXG4gICAgKSksXG4gICAgXCJjbGFtcFB4XCI6IGNhbGN1bGF0ZUNsYW1wKChcbiAgICAgIFwibWluV2lkdGhcIjogbWFwLmdldCgkY29uZmlnLCBcIm1pbldpZHRoXCIpLFxuICAgICAgXCJtYXhXaWR0aFwiOiBtYXAuZ2V0KCRjb25maWcsIFwibWF4V2lkdGhcIiksXG4gICAgICBcIm1pblNpemVcIjogbWFwLmdldCgkYSwgXCJtaW5TaXplXCIpLFxuICAgICAgXCJtYXhTaXplXCI6IG1hcC5nZXQoJGIsIFwibWF4U2l6ZVwiKSxcbiAgICAgIFwidXNlUHhcIjogdHJ1ZSxcbiAgICAgIFwicmVsYXRpdmVUb1wiOiBtYXAuZ2V0KCRjb25maWcsIFwicmVsYXRpdmVUb1wiKVxuICAgICkpXG4gICk7XG59XG5cbkBmdW5jdGlvbiBjYWxjdWxhdGVPbmVVcFBhaXJzKCRjb25maWcsICRzaXplcykge1xuICAkcGFpcnM6ICgpO1xuICBAZWFjaCAkc2l6ZSBpbiAkc2l6ZXMge1xuICAgICRpOiBsaXN0LmluZGV4KCRzaXplcywgJHNpemUpO1xuICAgIEBpZiAoJGkgPiAxKSB7XG4gICAgICAkcHJldjogbGlzdC5udGgoJHNpemVzLCAkaSAtIDEpO1xuICAgICAgJHBhaXJzOiBsaXN0LmFwcGVuZCgkcGFpcnMsIGNhbGN1bGF0ZVNwYWNlUGFpcigkY29uZmlnLCAkcHJldiwgJHNpemUpKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRwYWlycztcbn1cblxuQGZ1bmN0aW9uIGNhbGN1bGF0ZUFsbFBhaXJzKCRjb25maWcsICRzaXplcykge1xuICAkcGFpcnM6ICgpO1xuICBAZWFjaCAkc2l6ZSBpbiAkc2l6ZXMge1xuICAgICRpOiBsaXN0LmluZGV4KCRzaXplcywgJHNpemUpO1xuICAgIEBlYWNoICRzdWJTaXplIGluICRzaXplcyB7XG4gICAgICAkajogbGlzdC5pbmRleCgkc2l6ZXMsICRzdWJTaXplKTtcbiAgICAgIEBpZiAoJGkgIT0gJGopIHtcbiAgICAgICAgJHBhaXJzOiBsaXN0LmFwcGVuZCgkcGFpcnMsIGNhbGN1bGF0ZVNwYWNlUGFpcigkY29uZmlnLCAkc2l6ZSwgJHN1YlNpemUpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRwYWlycztcbn1cblxuQGZ1bmN0aW9uIGNhbGN1bGF0ZUN1c3RvbVBhaXJzKCRjb25maWcsICRzaXplcykge1xuICAkcGFpcnM6ICgpO1xuICAkY3VzdG9tU2l6ZXM6IG1hcC5nZXQoJGNvbmZpZywgXCJjdXN0b21TaXplc1wiKTtcbiAgQGlmIChtZXRhLnR5cGUtb2YoJGN1c3RvbVNpemVzKSAhPSBcImxpc3RcIikge1xuICAgIEByZXR1cm4gJHBhaXJzO1xuICB9XG5cbiAgQGVhY2ggJGxhYmVsIGluICRjdXN0b21TaXplcyB7XG4gICAgJGtleXM6IHN0cmluZy5zcGxpdCgkbGFiZWwsICctJywgMSk7XG4gICAgJGE6IGhlbHBlcnMuZmluZEJ5S2V5KCRzaXplcywgXCJsYWJlbFwiLCBsaXN0Lm50aCgka2V5cywgMSkpO1xuICAgICRiOiBoZWxwZXJzLmZpbmRCeUtleSgkc2l6ZXMsIFwibGFiZWxcIiwgbGlzdC5udGgoJGtleXMsIDIpKTtcbiAgICBAaWYgKG1ldGEudHlwZS1vZigkYSkgPT0gXCJtYXBcIiBhbmQgbWV0YS50eXBlLW9mKCRiKSA9PSBcIm1hcFwiKSB7XG4gICAgICAkcGFpcnM6IGxpc3QuYXBwZW5kKCRwYWlycywgY2FsY3VsYXRlU3BhY2VQYWlyKCRjb25maWcsICRhLCAkYikpO1xuICAgIH1cbiAgfVxuICBcbiAgQHJldHVybiAkcGFpcnM7XG59XG5cbkBmdW5jdGlvbiBjYWxjdWxhdGVTcGFjZVNjYWxlKCRjb25maWcpIHtcbiAgJHNpemVzOiBoZWxwZXJzLm5ld0xpc3QoY2FsY3VsYXRlU3BhY2VTaXplKCRjb25maWcsIDEsIDApKTtcblxuICAkcG9zaXRpdmVTdGVwczogbWFwLmdldCgkY29uZmlnLCBcInBvc2l0aXZlU3RlcHNcIik7XG4gIEBpZiAobWV0YS50eXBlLW9mKCRwb3NpdGl2ZVN0ZXBzKSA9PSBcImxpc3RcIikge1xuICAgIEBlYWNoICRzdGVwIGluICRwb3NpdGl2ZVN0ZXBzIHtcbiAgICAgICRpOiBsaXN0LmluZGV4KCRwb3NpdGl2ZVN0ZXBzLCAkc3RlcCk7XG4gICAgICAkc2l6ZXM6IGxpc3QuYXBwZW5kKCRzaXplcywgY2FsY3VsYXRlU3BhY2VTaXplKCRjb25maWcsICRzdGVwLCAkaSkpO1xuICAgIH1cbiAgfVxuXG4gICRuZWdhdGl2ZVN0ZXBzOiBtYXAuZ2V0KCRjb25maWcsIFwibmVnYXRpdmVTdGVwc1wiKTtcbiAgQGlmIChtZXRhLnR5cGUtb2YoJG5lZ2F0aXZlU3RlcHMpID09IFwibGlzdFwiKSB7XG4gICAgQGVhY2ggJHN0ZXAgaW4gJG5lZ2F0aXZlU3RlcHMge1xuICAgICAgJGk6IGxpc3QuaW5kZXgoJG5lZ2F0aXZlU3RlcHMsICRzdGVwKTtcbiAgICAgICRzaXplczogaGVscGVycy5wcmVwZW5kKCRzaXplcywgY2FsY3VsYXRlU3BhY2VTaXplKCRjb25maWcsICRzdGVwLCAtMSAqICRpKSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAoXG4gICAgXCJzaXplc1wiOiAkc2l6ZXMsXG4gICAgXCJvbmVVcFBhaXJzXCI6IGNhbGN1bGF0ZU9uZVVwUGFpcnMoJGNvbmZpZywgJHNpemVzKSxcbiAgICBcImN1c3RvbVBhaXJzXCI6IGNhbGN1bGF0ZUN1c3RvbVBhaXJzKCRjb25maWcsICRzaXplcyksXG4gICAgXCJhbGxQYWlyc1wiOiBjYWxjdWxhdGVBbGxQYWlycygkY29uZmlnLCAkc2l6ZXMpLFxuICApO1xufVxuXG4vLyBDbGFtcHNcblxuQGZ1bmN0aW9uIGNhbGN1bGF0ZUNsYW1wcygkY29uZmlnKSB7XG4gICRwYWlyczogKCk7XG5cbiAgQGVhY2ggJGl0ZW0gaW4gbWFwLmdldCgkY29uZmlnLCBcInBhaXJzXCIpIHtcbiAgICAkbWluOiBsaXN0Lm50aCgkaXRlbSwgMSk7XG4gICAgJG1heDogbGlzdC5udGgoJGl0ZW0sIDIpO1xuICAgICRwYWlyczogbGlzdC5hcHBlbmQoJHBhaXJzLCAoXG4gICAgICBcImxhYmVsXCI6IFwiI3skbWlufS0jeyRtYXh9XCIsXG4gICAgICBcImNsYW1wXCI6IGNhbGN1bGF0ZUNsYW1wKChcbiAgICAgICAgXCJtaW5XaWR0aFwiOiBtYXAuZ2V0KCRjb25maWcsIFwibWluV2lkdGhcIiksXG4gICAgICAgIFwibWF4V2lkdGhcIjogbWFwLmdldCgkY29uZmlnLCBcIm1heFdpZHRoXCIpLFxuICAgICAgICBcIm1pblNpemVcIjogJG1pbixcbiAgICAgICAgXCJtYXhTaXplXCI6ICRtYXgsXG4gICAgICAgIFwidXNlUHhcIjogbWFwLmdldCgkY29uZmlnLCBcInVzZVB4XCIpLFxuICAgICAgICBcInJlbGF0aXZlVG9cIjogbWFwLmdldCgkY29uZmlnLCBcInJlbGF0aXZlVG9cIilcbiAgICAgICkpXG4gICAgKSk7XG4gIH1cblxuICBAcmV0dXJuICRwYWlycztcbn1cblxuLy8gTWl4aW5zXG5cbkBtaXhpbiBnZW5lcmF0ZVR5cGVTY2FsZSgkY29uZmlnKSB7XG4gICRwcmVmaXg6IGhlbHBlcnMuZ2V0RGVmYXVsdCgkY29uZmlnLCBcInByZWZpeFwiLCBcInN0ZXAtXCIpO1xuICBAZWFjaCAkc3RlcCBpbiBjYWxjdWxhdGVUeXBlU2NhbGUoJGNvbmZpZykge1xuICAgIC0tI3skcHJlZml4fSN7bWFwLmdldCgkc3RlcCwgXCJzdGVwXCIpfTogI3ttYXAuZ2V0KCRzdGVwLCBcImNsYW1wXCIpfTtcbiAgfVxufVxuXG5AbWl4aW4gZ2VuZXJhdGVTcGFjZVNjYWxlKCRjb25maWcpIHtcbiAgJHByZWZpeDogaGVscGVycy5nZXREZWZhdWx0KCRjb25maWcsIFwicHJlZml4XCIsIFwic3BhY2UtXCIpO1xuICAkZm9ybWF0OiBcImNsYW1wXCI7XG4gIEBpZiAobWFwLmdldCgkY29uZmlnLCBcInVzZVB4XCIpKSB7XG4gICAgJGZvcm1hdDogXCJjbGFtcFB4XCI7XG4gIH1cblxuICAkc2NhbGU6IGNhbGN1bGF0ZVNwYWNlU2NhbGUoJGNvbmZpZyk7XG4gIEBlYWNoICRzaXplIGluIG1hcC5nZXQoJHNjYWxlLCBcInNpemVzXCIpIHtcbiAgICAtLSN7JHByZWZpeH0je21hcC5nZXQoJHNpemUsIFwibGFiZWxcIil9OiAje21hcC5nZXQoJHNpemUsICRmb3JtYXQpfTtcbiAgfVxuXG4gIEBpZiAobWFwLmdldCgkY29uZmlnLCBcImFsbFBhaXJzXCIpKSB7XG4gICAgQGVhY2ggJHNpemUgaW4gbWFwLmdldCgkc2NhbGUsIFwiYWxsUGFpcnNcIikge1xuICAgICAgLS0jeyRwcmVmaXh9I3ttYXAuZ2V0KCRzaXplLCBcImxhYmVsXCIpfTogI3ttYXAuZ2V0KCRzaXplLCAkZm9ybWF0KX07XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAkc2l6ZSBpbiBtYXAuZ2V0KCRzY2FsZSwgXCJvbmVVcFBhaXJzXCIpIHtcbiAgICAgIC0tI3skcHJlZml4fSN7bWFwLmdldCgkc2l6ZSwgXCJsYWJlbFwiKX06ICN7bWFwLmdldCgkc2l6ZSwgJGZvcm1hdCl9O1xuICAgIH1cbiAgXG4gICAgQGVhY2ggJHNpemUgaW4gbWFwLmdldCgkc2NhbGUsIFwiY3VzdG9tUGFpcnNcIikge1xuICAgICAgLS0jeyRwcmVmaXh9I3ttYXAuZ2V0KCRzaXplLCBcImxhYmVsXCIpfTogI3ttYXAuZ2V0KCRzaXplLCAkZm9ybWF0KX07XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBnZW5lcmF0ZUNsYW1wKCRjb25maWcpIHtcbiAgJHByZWZpeDogaGVscGVycy5nZXREZWZhdWx0KCRjb25maWcsIFwicHJlZml4XCIsIFwic3BhY2UtXCIpO1xuICAkbWluOiBtYXAuZ2V0KCRjb25maWcsIFwibWluU2l6ZVwiKTtcbiAgJG1heDogbWFwLmdldCgkY29uZmlnLCBcIm1heFNpemVcIik7XG4gIC0tI3skcHJlZml4fSN7JG1pbn0tI3skbWF4fTogI3tjYWxjdWxhdGVDbGFtcCgkY29uZmlnKX07XG59XG5cbkBtaXhpbiBnZW5lcmF0ZUNsYW1wcygkY29uZmlnKSB7XG4gICRwcmVmaXg6IGhlbHBlcnMuZ2V0RGVmYXVsdCgkY29uZmlnLCBcInByZWZpeFwiLCBcInNwYWNlLVwiKTtcbiAgJGNsYW1wczogY2FsY3VsYXRlQ2xhbXBzKCRjb25maWcpO1xuICBAZWFjaCAkc2l6ZSBpbiAkY2xhbXBzIHtcbiAgICAtLSN7JHByZWZpeH0je21hcC5nZXQoJHNpemUsIFwibGFiZWxcIil9OiAje21hcC5nZXQoJHNpemUsIFwiY2xhbXBcIil9O1xuICB9XG59XG4iLCJAdXNlICcuLi9hYnN0cmFjdHMvJyBhcyAqO1xyXG5cclxuXHJcbi5jb250YWluZXIge1xyXG4gIC0tcGFkZGluZzogI3skY29udGFpbmVyLWlubGluZS1wYWRkaW5nfSAqIDI7XHJcbiAgLS1tYXgtd2lkdGg6ICN7JGNvbnRhaW5lci1tYXgtd2lkdGh9O1xyXG4gIEBpbmNsdWRlIGNvbnRhaW5lcjtcclxuICBcclxuICAvKiAtLW1heC13aWR0aHM6IHNlZSBfc2l6ZXMuc2NzcyAqL1xyXG4gIFxyXG4gICYtLW5hcnJvdyB7XHJcbiAgICAtLW1heC13aWR0aDogI3skY29udGFpbmVyLW1heC13aWR0aC1uYXJyb3d9O1xyXG4gIH1cclxuICAmLS13aWRlIHtcclxuICAgIC0tbWF4LXdpZHRoOiAjeyRjb250YWluZXItbWF4LXdpZHRoLXdpZGV9O1xyXG4gIH1cclxufVxyXG4iLCJAdXNlICcuLi9hYnN0cmFjdHMnIGFzICo7XHJcbkB1c2UgJ3Nhc3M6bWFwJztcclxuXHJcbi8qIC5yZWdpb24gbXVzdCBiZSBiZWZvcmUgbWFyZ2luIGFuZCBwYWRkaW5nICovXHJcbi5yZWdpb24ge1xyXG4gIHBhZGRpbmctYmxvY2s6ICRyZWdpb24tcGFkZGluZztcclxufVxyXG5cclxuJHNwYWNpbmctc2l6ZXM6IG1hcC5tZXJnZShcclxuICAkc2l6ZXMsXHJcbiAgKFxyXG4gICAgJ2F1dG8nOiBhdXRvLFxyXG4gIClcclxuKTtcclxuXHJcbiR1dG9waWEtc3BhY2luZy1lbnRyaWVzOiBtYXAuZ2V0KCRzcGFjZVNjYWxlcywgc2l6ZXMpO1xyXG5cclxuJHNwYWNpbmctc2l6ZXM6ICgpO1xyXG5cclxuQGVhY2ggJGl0ZW0gaW4gJHV0b3BpYS1zcGFjaW5nLWVudHJpZXMge1xyXG4gICRsYWJlbDogbWFwLmdldCgkaXRlbSwgbGFiZWwpO1xyXG4gICR2YWx1ZTogbWFwLmdldCgkaXRlbSwgY2xhbXApO1xyXG5cclxuICAkc3BhY2luZy1zaXplczogbWFwLnNldCgkc3BhY2luZy1zaXplcywgJGxhYmVsLCAkdmFsdWUpO1xyXG59XHJcblxyXG4kc3BhY2luZy1zaXplczogbWFwLm1lcmdlKFxyXG4gICRzcGFjaW5nLXNpemVzLFxyXG4gIChcclxuICAgICdhdXRvJzogYXV0byxcclxuICApXHJcbik7XHJcblxyXG5AZWFjaCAkc2l6ZS1uYW1lLCAkc2l6ZS12YWx1ZSBpbiAkc3BhY2luZy1zaXplcyB7XHJcbiAgLm0ge1xyXG4gICAgJi0jeyRzaXplLW5hbWV9IHtcclxuICAgICAgbWFyZ2luOiAjeyRzaXplLXZhbHVlfTtcclxuICAgIH1cclxuICAgICZ5LXN0YXJ0LSN7JHNpemUtbmFtZX0ge1xyXG4gICAgICBtYXJnaW4tYmxvY2stc3RhcnQ6ICN7JHNpemUtdmFsdWV9O1xyXG4gICAgfVxyXG4gICAgJnktZW5kLSN7JHNpemUtbmFtZX0ge1xyXG4gICAgICBtYXJnaW4tYmxvY2stZW5kOiAjeyRzaXplLXZhbHVlfTtcclxuICAgIH1cclxuICAgICZ5LSN7JHNpemUtbmFtZX0ge1xyXG4gICAgICBtYXJnaW4tYmxvY2s6ICN7JHNpemUtdmFsdWV9O1xyXG4gICAgfVxyXG4gICAgJngtc3RhcnQtI3skc2l6ZS1uYW1lfSB7XHJcbiAgICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6ICN7JHNpemUtdmFsdWV9O1xyXG4gICAgfVxyXG4gICAgJngtZW5kLSN7JHNpemUtbmFtZX0ge1xyXG4gICAgICBtYXJnaW4taW5saW5lLWVuZDogI3skc2l6ZS12YWx1ZX07XHJcbiAgICB9XHJcbiAgICAmeC0jeyRzaXplLW5hbWV9IHtcclxuICAgICAgbWFyZ2luLWlubGluZTogI3skc2l6ZS12YWx1ZX07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAucCB7XHJcbiAgICAmLSN7JHNpemUtbmFtZX0ge1xyXG4gICAgICBwYWRkaW5nOiAjeyRzaXplLXZhbHVlfTtcclxuICAgIH1cclxuICAgICZ5LXN0YXJ0LSN7JHNpemUtbmFtZX0ge1xyXG4gICAgICBwYWRkaW5nLWJsb2NrLXN0YXJ0OiAjeyRzaXplLXZhbHVlfTtcclxuICAgIH1cclxuICAgICZ5LWVuZC0jeyRzaXplLW5hbWV9IHtcclxuICAgICAgcGFkZGluZy1ibG9jay1lbmQ6ICN7JHNpemUtdmFsdWV9O1xyXG4gICAgfVxyXG4gICAgJnktI3skc2l6ZS1uYW1lfSB7XHJcbiAgICAgIHBhZGRpbmctYmxvY2s6ICN7JHNpemUtdmFsdWV9O1xyXG4gICAgfVxyXG4gICAgJngtc3RhcnQtI3skc2l6ZS1uYW1lfSB7XHJcbiAgICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAjeyRzaXplLXZhbHVlfTtcclxuICAgIH1cclxuICAgICZ4LWVuZC0jeyRzaXplLW5hbWV9IHtcclxuICAgICAgcGFkZGluZy1pbmxpbmUtZW5kOiAjeyRzaXplLXZhbHVlfTtcclxuICAgIH1cclxuICAgICZ4LSN7JHNpemUtbmFtZX0ge1xyXG4gICAgICBwYWRkaW5nLWlubGluZTogI3skc2l6ZS12YWx1ZX07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vKiB0aGUgc2ltcGxlIGFwcHJvYWNoICovXHJcblxyXG4kc3BhY2luZy1zaXplcy1zaW1wbGU6IChcclxuICByMDogMHJlbSxcclxuICByMDI1OiAwLjI1cmVtLFxyXG4gIHIwNTogMC41cmVtLFxyXG4gIHIwNzU6IDAuNzVyZW0sXHJcbiAgcjE6IDFyZW0sXHJcbiAgcjEyNTogMS4yNXJlbSxcclxuICByMTU6IDEuNXJlbSxcclxuICByMTc1OiAxLjc1cmVtLFxyXG4gIHIyOiAycmVtLFxyXG4gIHIyNTogMi41cmVtLFxyXG4gIHIzOiAzcmVtLFxyXG4gIHI0OiA0cmVtLFxyXG4gIHI1OiA1cmVtLFxyXG4gIHI2OiA2cmVtLFxyXG4gIHI4OiA4cmVtLFxyXG4gIHIxMDogMTByZW0sXHJcbik7XHJcblxyXG5AZWFjaCAkc2l6ZS1uYW1lLCAkc2l6ZS12YWx1ZSBpbiAkc3BhY2luZy1zaXplcy1zaW1wbGUge1xyXG4gIC5tIHtcclxuICAgICYtI3skc2l6ZS1uYW1lfSB7XHJcbiAgICAgIG1hcmdpbjogI3skc2l6ZS12YWx1ZX07XHJcbiAgICB9XHJcbiAgICAmeS1zdGFydC0jeyRzaXplLW5hbWV9IHtcclxuICAgICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiAjeyRzaXplLXZhbHVlfTtcclxuICAgIH1cclxuICAgICZ5LWVuZC0jeyRzaXplLW5hbWV9IHtcclxuICAgICAgbWFyZ2luLWJsb2NrLWVuZDogI3skc2l6ZS12YWx1ZX07XHJcbiAgICB9XHJcbiAgICAmeS0jeyRzaXplLW5hbWV9IHtcclxuICAgICAgbWFyZ2luLWJsb2NrOiAjeyRzaXplLXZhbHVlfTtcclxuICAgIH1cclxuICAgICZ4LXN0YXJ0LSN7JHNpemUtbmFtZX0ge1xyXG4gICAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAjeyRzaXplLXZhbHVlfTtcclxuICAgIH1cclxuICAgICZ4LWVuZC0jeyRzaXplLW5hbWV9IHtcclxuICAgICAgbWFyZ2luLWlubGluZS1lbmQ6ICN7JHNpemUtdmFsdWV9O1xyXG4gICAgfVxyXG4gICAgJngtI3skc2l6ZS1uYW1lfSB7XHJcbiAgICAgIG1hcmdpbi1pbmxpbmU6ICN7JHNpemUtdmFsdWV9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnAge1xyXG4gICAgJi0jeyRzaXplLW5hbWV9IHtcclxuICAgICAgcGFkZGluZzogI3skc2l6ZS12YWx1ZX07XHJcbiAgICB9XHJcbiAgICAmeS1zdGFydC0jeyRzaXplLW5hbWV9IHtcclxuICAgICAgcGFkZGluZy1ibG9jay1zdGFydDogI3skc2l6ZS12YWx1ZX07XHJcbiAgICB9XHJcbiAgICAmeS1lbmQtI3skc2l6ZS1uYW1lfSB7XHJcbiAgICAgIHBhZGRpbmctYmxvY2stZW5kOiAjeyRzaXplLXZhbHVlfTtcclxuICAgIH1cclxuICAgICZ5LSN7JHNpemUtbmFtZX0ge1xyXG4gICAgICBwYWRkaW5nLWJsb2NrOiAjeyRzaXplLXZhbHVlfTtcclxuICAgIH1cclxuICAgICZ4LXN0YXJ0LSN7JHNpemUtbmFtZX0ge1xyXG4gICAgICBwYWRkaW5nLWlubGluZS1zdGFydDogI3skc2l6ZS12YWx1ZX07XHJcbiAgICB9XHJcbiAgICAmeC1lbmQtI3skc2l6ZS1uYW1lfSB7XHJcbiAgICAgIHBhZGRpbmctaW5saW5lLWVuZDogI3skc2l6ZS12YWx1ZX07XHJcbiAgICB9XHJcbiAgICAmeC0jeyRzaXplLW5hbWV9IHtcclxuICAgICAgcGFkZGluZy1pbmxpbmU6ICN7JHNpemUtdmFsdWV9O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCJAdXNlICdzYXNzOm1hcCc7XHJcbkB1c2UgJ25vZGVfbW9kdWxlcy91dG9waWEtY29yZS1zY3NzL3NyYy91dG9waWEnIGFzIHV0b3BpYTtcclxuXHJcbiRzaXplczogKFxyXG4gICdtaW5XaWR0aCc6IDYwMCxcclxuICAnbWF4V2lkdGgnOiAxNDQwLFxyXG4gICdtaW5TaXplJzogMTYsXHJcbiAgJ21heFNpemUnOiAxNixcclxuICAncG9zaXRpdmVTdGVwcyc6IChcclxuICAgIDEuNSxcclxuICAgIDIuNSxcclxuICAgIDMuNSxcclxuICAgIDUsXHJcbiAgICA3LjUsXHJcbiAgKSxcclxuICAnbmVnYXRpdmVTdGVwcyc6IChcclxuICAgIDAuMjUsXHJcbiAgICAwLjVcclxuICApLFxyXG4pO1xyXG5cclxuJHNwYWNlU2NhbGVzOiB1dG9waWEuY2FsY3VsYXRlU3BhY2VTY2FsZSgoXHJcbiAgXCJtaW5XaWR0aFwiOiBtYXAuZ2V0KCRzaXplcywgXCJtaW5XaWR0aFwiKSxcclxuICBcIm1heFdpZHRoXCI6IG1hcC5nZXQoJHNpemVzLCBcIm1heFdpZHRoXCIpLFxyXG4gIFwibWluU2l6ZVwiOiBtYXAuZ2V0KCRzaXplcywgXCJtaW5TaXplXCIpLFxyXG4gIFwibWF4U2l6ZVwiOiBtYXAuZ2V0KCRzaXplcywgXCJtYXhTaXplXCIpLFxyXG4gIFwicG9zaXRpdmVTdGVwc1wiOiBtYXAuZ2V0KCRzaXplcywgXCJwb3NpdGl2ZVN0ZXBzXCIpLFxyXG4gIFwibmVnYXRpdmVTdGVwc1wiOiBtYXAuZ2V0KCRzaXplcywgXCJuZWdhdGl2ZVN0ZXBzXCIpLFxyXG4gIFwiY3VzdG9tU2l6ZXNcIjogbWFwLmdldCgkc2l6ZXMsIFwiY3VzdG9tU2l6ZXNcIilcclxuKSk7XHJcblxyXG4vLyBGb3IgdXNlIGluIHRoZSBjb2RlIGJhc2VcclxuJHNpemUtMDogdmFyKC0tMCk7XHJcbiRzaXplLTJ4czogdmFyKC0tMnhzKTtcclxuJHNpemUteHM6IHZhcigtLXhzKTtcclxuJHNpemUtczogdmFyKC0tcyk7XHJcbiRzaXplLW06IHZhcigtLW0pO1xyXG4kc2l6ZS1sOiB2YXIoLS1sKTtcclxuJHNpemUteGw6IHZhcigtLXhsKTtcclxuJHNpemUtMnhsOiB2YXIoLS0yeGwpO1xyXG4kc2l6ZS0zeGw6IHZhcigtLTN4bCk7XHJcblxyXG4kc2l6ZS0yeHMteHM6IHZhcigtLTJ4cy14cyk7XHJcbiRzaXplLXhzLXM6IHZhcigtLXhzLXMpO1xyXG4kc2l6ZS1zLW06IHZhcigtLXMtbSk7XHJcbiRzaXplLW0tbDogdmFyKC0tbS1sKTtcclxuJHNpemUtbC14bDogdmFyKC0tbC14bCk7XHJcbiRzaXplLXhsLTJ4bDogdmFyKC0teGwtMnhsKTtcclxuJHNpemUtMnhsLTN4bDogdmFyKC0tMnhsLTN4bCk7XHJcblxyXG4kZ3JpZC1jb2x1bW4tbWluLXdpZHRoOiAyMGVtO1xyXG4kZ3JpZC1jb2x1bW4tbWluLXdpZHRoLXdpZGU6IDI1ZW07XHJcbiRncmlkLWNvbHVtbnM6IDEyO1xyXG5cclxuJGNvbnRhaW5lci1pbmxpbmUtcGFkZGluZzogY2xhbXAobWF4KDFyZW0sIGVudihzYWZlLWFyZWEtaW5zZXQtbGVmdCkpLCA0dncsIDEuNXJlbSk7XHJcbiRjb250YWluZXItbWF4LXdpZHRoOiA4NXJlbTsgLy8gMTM1MHB4XHJcbiRjb250YWluZXItbWF4LXdpZHRoLXdpZGU6IDk1cmVtOyAvLyAxNTIwcHhcclxuJGNvbnRhaW5lci1tYXgtd2lkdGgtbmFycm93OiA0My43NXJlbTsgLy8gNzAwcHhcclxuXHJcbiRndXR0ZXI6IDFyZW07XHJcblxyXG4kcmVnaW9uLXBhZGRpbmc6ICRzaXplLTJ4bC0zeGw7XHJcbiRyZWdpb24tcy1wYWRkaW5nOiAkc2l6ZS14bC0yeGw7XHJcbiRyZWdpb24tZmxvdy1zcGFjaW5nOiAkc2l6ZS0yeGw7XHJcbiRyZWdpb24tZmxvdy1zLXNwYWNpbmc6ICRzaXplLWw7XHJcblxyXG4kYm9yZGVyLXJhZGl1cy0wOiB2YXIoLS1ici0wKTtcclxuJGJvcmRlci1yYWRpdXMtMTogMS41cmVtO1xyXG4kYm9yZGVyLXJhZGl1cy1waWxsOiAxMDAwcHg7XHJcbiRib3JkZXItcmFkaXVzLWNpcmNsZTogdmFyKC0tYnItY2lyY2xlKTtcclxuXHJcbiRmbG93LXNwYWNlci1kZWZhdWx0OiAxLjI1ZW07XHJcbiRmbG93LXNwYWNlci1kZWZhdWx0LXJlbTogMS4yNXJlbTtcclxuXHJcbiRmbGV4LWdyb3VwLWdhcDogdmFyKC0tbSk7IiwiQHVzZSAnLi4vYWJzdHJhY3RzLycgYXMgKjtcclxuQHVzZSAnLi4vdXRpbGl0aWVzL3NwYWNpbmcnIGFzICo7XHJcblxyXG4kY29sdW1ucy1jb25maWc6IChcclxuICAnMic6IHJlcGVhdCgyLCAxZnIpLFxyXG4gICczJzogcmVwZWF0KDMsIDFmciksXHJcbiAgJzQnOiByZXBlYXQoNCwgMWZyKSxcclxuICAnNSc6IHJlcGVhdCg1LCAxZnIpLFxyXG4gICc3LzUnOiA3ZnIgNWZyLFxyXG4gICc1LzcnOiA1ZnIgN2ZyLFxyXG4gICc1LzMnOiA1ZnIgM2ZyLFxyXG4gICczLzUnOiAzZnIgNWZyLFxyXG4gICcxLzMnOiAxZnIgM2ZyLFxyXG4gICczLzEnOiAzZnIgMWZyLFxyXG4gICcxLzQnOiAxZnIgNGZyLFxyXG4gICc0LzEnOiA0ZnIgMWZyLFxyXG4gICcxLzInOiAxZnIgMmZyLFxyXG4gICcyLzEnOiAyZnIgMWZyLFxyXG4pO1xyXG5cclxuLy9jb2x1bW5zIChhbW91bnQgdW5rbm93bikgb2YgZXF1YWwgd2lkdGggaW4gYSBncmlkXHJcbi5ncmlkIHtcclxuICBkaXNwbGF5OiBncmlkO1xyXG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmciAxZnI7IC8vIERlZmF1bHQgc2V0dXBcclxuICBnYXA6ICRzaXplLWw7IC8vIERlZmF1bHQgc2V0dXBcclxuXHJcbiAgLy8gRHluYW1pY2FsbHkgZ2VuZXJhdGUgZ2FwIHNpemVzXHJcbiAgQGVhY2ggJHNpemUtbmFtZSwgJHNpemUtdmFsdWUgaW4gJHNwYWNpbmctc2l6ZXMtc2ltcGxlIHtcclxuICAgICZbZ2FwLXNpemU9JyN7JHNpemUtbmFtZX0nXSB7XHJcbiAgICAgIGdhcDogJHNpemUtdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIC8vIER5bmFtaWNhbGx5IGdlbmVyYXRlIGNvbHVtbiBzdHlsZXNcclxuICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJGNvbHVtbnMtY29uZmlnIHtcclxuICAgICZbY29sdW1ucz0nI3ska2V5fSddIHtcclxuICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAjeyR2YWx1ZX07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBSZXNwb25zaXZlIHNpbmdsZS1jb2x1bW4gb3ZlcnJpZGVcclxuICAmW2NvbHVtbnNdW3Jlc3BvbnNpdmVdIHtcclxuICAgIEBpbmNsdWRlIG1xVW50aWwoJ3NtYWxsJykge1xyXG4gICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcclxuICAgIH1cclxuICB9XHJcbiAgJltjb2x1bW5zXVtyZXNwb25zaXZlPVwibWVkaXVtXCJdIHtcclxuICAgIEBpbmNsdWRlIG1xVW50aWwoJ21lZGl1bScpIHtcclxuICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIC8vIFJldmVyc2UgY29sdW1uIG9yZGVyXHJcbiAgJltjb2x1bW5zXVtyZXNwb25zaXZlXVtyZXZlcnNlXSB7XHJcbiAgICBAaW5jbHVkZSBtcVVudGlsKCdzbWFsbCcpIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlO1xyXG4gICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcclxuICAgIH1cclxuICB9XHJcbiAgJltjb2x1bW5zXVtyZXNwb25zaXZlPVwibWVkaXVtXCJdW3JldmVyc2VdIHtcclxuICAgIEBpbmNsdWRlIG1xVW50aWwoJ21lZGl1bScpIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlO1xyXG4gICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIEFsaWduLWl0ZW1zIG1vZGlmaWVyc1xyXG4gICZbYWxpZ24taXRlbXM9J2NlbnRlciddIHtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgfVxyXG4gICZbYWxpZ24taXRlbXM9J2VuZCddIHtcclxuICAgIGFsaWduLWl0ZW1zOiBlbmQ7XHJcbiAgfVxyXG59XHJcbiIsIkB1c2UgJ3Nhc3M6bWFwJztcclxuQHVzZSAnLi4vYWJzdHJhY3RzLycgYXMgKjtcclxuXHJcbi5mbGV4IHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGdhcDogJGd1dHRlcjtcclxuXHJcbiAgLy8gR2FwIHNpemVcclxuICBAZWFjaCAkc2NhbGVLZXkgaW4gKCdzaXplcycpIHtcclxuICAgIEBlYWNoICRzdGVwIGluIG1hcC5nZXQoJHNwYWNlU2NhbGVzLCAkc2NhbGVLZXkpIHtcclxuICAgICAgJltkYXRhLWdhcC1zaXplPScje21hcC5nZXQoJHN0ZXAsICdsYWJlbCcpfSddIHtcclxuICAgICAgICBnYXA6ICN7bWFwLmdldCgkc3RlcCwgJ2NsYW1wJyl9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmW2RhdGEtZ2FwLXNpemU9JzAnXSB7XHJcbiAgICBnYXA6IDA7XHJcbiAgfVxyXG5cclxuICAvLyBGbGV4IGRpcmVjdGlvblxyXG4gIEBlYWNoICRkaXIgaW4gKHJvdywgcm93LXJldmVyc2UsIGNvbHVtbiwgY29sdW1uLXJldmVyc2UpIHtcclxuICAgICZbZGlyZWN0aW9uPScjeyRkaXJ9J10ge1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogJGRpcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIEFsaWduLWl0ZW1zXHJcbiAgQGVhY2ggJGFsaWduIGluIChzdGFydCwgY2VudGVyLCBlbmQsIHN0cmV0Y2gpIHtcclxuICAgICZbYWxpZ24taXRlbXM9JyN7JGFsaWdufSddIHtcclxuICAgICAgYWxpZ24taXRlbXM6ICRhbGlnbjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIEp1c3RpZnktY29udGVudFxyXG4gIEBlYWNoICRqdXN0aWZ5XHJcbiAgICBpbiAoc3RhcnQsIGNlbnRlciwgZW5kLCBzcGFjZS1iZXR3ZWVuLCBzcGFjZS1hcm91bmQsIHNwYWNlLWV2ZW5seSlcclxuICB7XHJcbiAgICAmW2p1c3RpZnktY29udGVudD0nI3skanVzdGlmeX0nXSB7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogJGp1c3RpZnk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBXcmFwXHJcbiAgJlt3cmFwXSB7XHJcbiAgICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgfVxyXG4gICZbd3JhcD0ncmV2ZXJzZSddIHtcclxuICAgIGZsZXgtd3JhcDogd3JhcC1yZXZlcnNlO1xyXG4gIH1cclxuXHJcbiAgLy8gUmVzcG9uc2l2ZSBmYWxsYmFja1xyXG4gICZbcmVzcG9uc2l2ZV0ge1xyXG4gICAgQGluY2x1ZGUgbXFVbnRpbCgnbWVkaXVtJykge1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCJAdXNlICcuLi9hYnN0cmFjdHMnIGFzICo7XHJcblxyXG5ib2R5Lm1vZGFsLW9wZW4ge1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgaGVhZGVyLFxyXG4gIG1haW4sXHJcbiAgZm9vdGVyIHtcclxuICAgIGZpbHRlcjogYmx1cig1cHgpO1xyXG4gIH1cclxufVxyXG5cclxuLm1vZGFsIHtcclxuICAvL2Rpc3BsYXk6IG5vbmU7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIHotaW5kZXg6IDEwMDA7XHJcbiAgdG9wOiAwO1xyXG4gIGxlZnQ6IDA7XHJcbiAgcmlnaHQ6IDA7XHJcbiAgYm90dG9tOiAwO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogMTAwJTtcclxuXHJcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBkaXNwbGF5OiBub25lO1xyXG5cclxuICAmLmFjdGl2ZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gIH1cclxuICAmX19pbm5lciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3Itd2hpdGU7XHJcbiAgICBtYXJnaW46IGF1dG87XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gICAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xyXG4gICAgd2lkdGg6IDgwJTtcclxuICAgIG1heC13aWR0aDogODAwcHg7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgYm94LXNoYWRvdzogMCAwIDQwcHggcmdiYSgwLCAwLCAwLCAwLjMpO1xyXG4gIH1cclxuICAmX19jbG9zZSB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDA7XHJcbiAgICByaWdodDogMDtcclxuICAgIHdpZHRoOiAzNnB4O1xyXG4gICAgaGVpZ2h0OiAzNnB4O1xyXG4gICAgbGluZS1oZWlnaHQ6IDM2cHg7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIGNvbG9yOiAkY29sb3ItZ3JleXNjYWxlLTUwMDtcclxuICAgICY6aG92ZXIge1xyXG4gICAgICBjb2xvcjogJGNvbG9yLWdyZXlzY2FsZS04MDA7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4ubG9hZGVyIHtcclxuICBkb3Rsb3R0aWUtcGxheWVyIHtcclxuICAgIG1hcmdpbjogMTAwcHggYXV0byAwO1xyXG4gICAgd2lkdGg6IDE1MHB4O1xyXG4gICAgaGVpZ2h0OiAxNTBweDtcclxuICB9XHJcbn1cclxuIiwiQHVzZSAnLi4vYWJzdHJhY3RzJyBhcyAqO1xyXG5cclxuLm5vdGlmaWNhdGlvbiB7XHJcbiAgYm9yZGVyLXJhZGl1czogMTAwcHg7XHJcbiAgcGFkZGluZzogMXJlbTtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgJi5lcnJvciB7XHJcbiAgICBjb2xvcjogcmVkO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDAsIDAsIDAuMik7XHJcbiAgfVxyXG59XHJcbiIsIkB1c2UgJy4uL2Fic3RyYWN0cycgYXMgKjtcclxuXHJcbi5jb2RlIHtcclxuICBiYWNrZ3JvdW5kOiBibGFjaztcclxuICBjb2xvcjogd2hpdGU7XHJcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTtcclxuICBwYWRkaW5nOiAxcmVtO1xyXG4gIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS0tMjtcclxufVxyXG4iLCJAdXNlICcuLi9hYnN0cmFjdHMnIGFzICo7XHJcblxyXG4uc3dhdGNoZXMtZ3JpZCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBnYXA6IDAuNXJlbTtcclxufVxyXG5cclxuLnN3YXRjaCB7XHJcbiAgd2lkdGg6IDhyZW07XHJcbiAgaGVpZ2h0OiA4cmVtO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAmX19pbm5lciB7XHJcbiAgICBmb250LXNpemU6ICRmb250LXNpemUtLTI7XHJcbiAgICBjb2xvcjogd2hpdGU7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBsaW5lLWhlaWdodDogMS4yZW07XHJcbiAgfVxyXG59XHJcbiIsIi8qIEdlbmVyYWwgKi9cbkBmb3J3YXJkICd0eXBvZ3JhcGh5JztcbkBmb3J3YXJkICd3eXNpd3lnJztcbkBmb3J3YXJkICdidXR0b25zJztcbkBmb3J3YXJkICdmb3Jtcyc7XG5cbi8qIE1haW4gY29tcG9uZW50cyAqL1xuQGZvcndhcmQgJ25hdmJhcic7XG5AZm9yd2FyZCAnbGFuZ3VhZ2Utc3dpdGNoZXInO1xuQGZvcndhcmQgJ2Zvb3Rlcic7XG5AZm9yd2FyZCAncHJvcHMnO1xuQGZvcndhcmQgJ2Nhcm91c2VsJztcblxuLyogUGFnZXMqL1xuQGZvcndhcmQgJzQwNCc7XG5cbi8qIFNlY3Rpb25zIC8gY29tcG9uZW50cyAqL1xuQGZvcndhcmQgJ2hlcm8nO1xuQGZvcndhcmQgJ2N0YSc7XG5AZm9yd2FyZCAnbWFjaGluZXMnO1xuQGZvcndhcmQgJ21hcCc7XG5AZm9yd2FyZCAnY29udGFjdC1kZXRhaWxzJztcbkBmb3J3YXJkICdub3RpY2VzJztcbkBmb3J3YXJkICdmbGV4aWJsZS1jb250ZW50JztcblxuLyogV29vY29tbWVyY2UgKi9cbkBmb3J3YXJkICd3b29jb21tZXJjZSc7XG5AZm9yd2FyZCAncHJvZHVjdCc7XG5AZm9yd2FyZCAncHJvZHVjdC1vcHRpb25zJztcbkBmb3J3YXJkICdzaG9wJztcbkBmb3J3YXJkICdzaG9wLWZpbHRlcic7XG5AZm9yd2FyZCAncGFja2FnZS1zaXplJztcbkBmb3J3YXJkICdwcm9kdWN0LXNsaWRlcic7XG5AZm9yd2FyZCAncXVhbnRpdHktc3RlcHBlcic7XG5AZm9yd2FyZCAnYWNjb3VudCc7XG5cblxuLyogQ29udGVudCB0eXBlcyAqL1xuQGZvcndhcmQgJ3Nob3BzJztcbkBmb3J3YXJkICdsb2NhdGlvbnMnO1xuIiwiQHVzZSAnLi4vYWJzdHJhY3RzJyBhcyAqO1xyXG5cclxuaDEsXHJcbmgyLFxyXG5oMyxcclxuaDQsXHJcbmg1LFxyXG5oNiB7XHJcbiAgZm9udC13ZWlnaHQ6IDQwMDtcclxuICB0ZXh0LXdyYXA6IGJhbGFuY2U7XHJcbn1cclxuLmJhbGFuY2Uge1xyXG4gIHRleHQtd3JhcDogYmFsYW5jZTtcclxufVxyXG5cclxuLmhlYWRpbmctMSxcclxuLmhlYWRpbmctMixcclxuLmhlYWRpbmctMyxcclxuLmhlYWRpbmctNCxcclxuLmhlYWRpbmctNSxcclxuLmhlYWRpbmctNiB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjE7XHJcbiAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1kaXNwbGF5O1xyXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjAzZW07XHJcbn1cclxuXHJcbi5oZWFkaW5nLTEge1xyXG4gIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS02O1xyXG59XHJcbi5oZWFkaW5nLTIge1xyXG4gIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS00O1xyXG59XHJcbi5oZWFkaW5nLTMge1xyXG4gIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS0zO1xyXG59XHJcbi5oZWFkaW5nLTQge1xyXG4gIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS0yO1xyXG59XHJcbi5oZWFkaW5nLTUge1xyXG4gIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS0xO1xyXG59XHJcbi5oZWFkaW5nLTYge1xyXG4gIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS0wO1xyXG59XHJcblxyXG5hIHtcclxuICB0ZXh0LXVuZGVybGluZS1vZmZzZXQ6IDAuMTI1ZW07XHJcblxyXG4gICYsXHJcbiAgJjphY3RpdmUsXHJcbiAgJjp2aXNpdGVkIHtcclxuICAgIGNvbG9yOiBpbmhlcml0O1xyXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gIH1cclxuXHJcbiAgJjpob3ZlciwgJjpmb2N1cyB7XHJcbiAgICBjb2xvcjogJGNvbG9yLXNlY29uZGFyeTtcclxuICB9XHJcbn1cclxuIiwiQHVzZSAnLi4vYWJzdHJhY3RzJyBhcyAqO1xyXG5cclxuLmJ1dHRvbi1ncm91cCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBnYXA6IDAuNXJlbSAxcmVtO1xyXG4gIGZsZXgtd3JhcDogd3JhcDtcclxufVxyXG5cclxuLyogU2Vjb25kIGJyYW5jaCB0aWVzIHdvb2NvbW1lcmNlLmNzcydzIGAud29vY29tbWVyY2UgYS5idXR0b25gICgwLTItMSkgc28gdGhlXHJcbiAgIHRoZW1lJ3MgYnV0dG9uIHNraW4gd2lucyBvbiBXb29Db21tZXJjZSBwYWdlcyAobG9vcC9jYXJ0L2NoZWNrb3V0KS4gKi9cclxuLmJ1dHRvbixcclxuLndvb2NvbW1lcmNlIDppcyhhLCBidXR0b24sIGlucHV0KS5idXR0b24ge1xyXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgZ2FwOiAwLjVyZW07XHJcblxyXG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50O1xyXG4gIGJvcmRlci1yYWRpdXM6IDA7XHJcblxyXG4gIHBhZGRpbmc6IDAuNjVyZW0gMS4yNXJlbTtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcclxuXHJcbiAgJi5idXR0b24tLXByaW1hcnkge1xyXG4gICAgY29sb3I6ICRjb2xvci1hY2NlbnQtbGlnaHQ7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItcHJpbWFyeTtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICRjb2xvci1wcmltYXJ5O1xyXG5cclxuICAgICY6aG92ZXIsXHJcbiAgICAmOmZvY3VzIHtcclxuICAgICAgY29sb3I6ICRjb2xvci1wcmltYXJ5O1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItcHJpbWFyeTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICYuYnV0dG9uLS1zZWNvbmRhcnkge1xyXG4gICAgY29sb3I6ICRjb2xvci13aGl0ZTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1zZWNvbmRhcnk7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkY29sb3Itc2Vjb25kYXJ5O1xyXG5cclxuICAgICY6aG92ZXIsXHJcbiAgICAmOmZvY3VzIHtcclxuICAgICAgY29sb3I6ICRjb2xvci1zZWNvbmRhcnk7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgICBib3JkZXItY29sb3I6ICRjb2xvci1zZWNvbmRhcnk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLmJ1dHRvbi0tb3V0bGluZSB7XHJcbiAgICBjb2xvcjogJGNvbG9yLXNlY29uZGFyeTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgY3VycmVudENvbG9yO1xyXG5cclxuICAgICY6aG92ZXIsXHJcbiAgICAmOmZvY3VzIHtcclxuICAgICAgY29sb3I6ICRjb2xvci13aGl0ZTtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXNlY29uZGFyeTtcclxuICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3Itc2Vjb25kYXJ5O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi5idXR0b24tLXBsYWluIHtcclxuICAgIGJhY2tncm91bmQ6IG5vbmU7XHJcbiAgICBwYWRkaW5nOiAuMjVyZW0gMDtcclxuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcclxuICAgIGNvbG9yOiBpbmhlcml0O1xyXG4gIH1cclxuXHJcbiAgJi5idXR0b24tLXVuZGVybGluZSB7XHJcbiAgICBwYWRkaW5nOiAwLjVyZW0gMDtcclxuICAgIGNvbG9yOiAkY29sb3ItYWNjZW50O1xyXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcclxuICB9XHJcblxyXG5cclxuICAvKiBBbmltYXRpbmcgYXJyb3cgaWNvbjogKi9cclxuXHJcbiAgLmJ1dHRvbl9fYXJyb3cge1xyXG4gICAgLS1fd2lkdGg6IDEuMzc1ZW07XHJcbiAgICAtLV9leHRlbnNpb246IDAuMzc1ZW07XHJcbiAgICAtLV93aWR0aC1leHRlbmRlZDogY2FsYyh2YXIoLS1fd2lkdGgpICsgdmFyKC0tX2V4dGVuc2lvbikpO1xyXG4gICAgLS1fc2NhbGU6IGNhbGModmFyKC0tX3dpZHRoLWV4dGVuZGVkKSAvIHZhcigtLV93aWR0aCkpO1xyXG4gICAgLS1fdHJhbnNpdGlvbjogMC4zcyBlYXNlO1xyXG5cclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIGhlaWdodDogLjYyNWVtO1xyXG4gICAgd2lkdGg6IHZhcigtLV93aWR0aCk7XHJcbiAgICBcclxuICAgICY6YmVmb3JlIHtcclxuICAgICAgY29udGVudDogJyc7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgdG9wOiA1MCU7XHJcbiAgICAgIGxlZnQ6IDA7XHJcbiAgICAgIHJpZ2h0OiAwLjJlbTtcclxuICAgICAgaGVpZ2h0OiAxcHg7XHJcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcclxuICAgICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGxlZnQ7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IGN1cnJlbnRDb2xvcjtcclxuXHJcbiAgICAgIHRyYW5zaXRpb246IHNjYWxlIHZhcigtLV90cmFuc2l0aW9uKTtcclxuICAgIH1cclxuICAgICY6YWZ0ZXIge1xyXG4gICAgICBjb250ZW50OiAnJztcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICBpbnNldDogMDtcclxuICAgICAgbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAxNyA4JyBmaWxsPSdub25lJyUzRSUzQ3BhdGggZD0nTTExIDBDMTEgMiAxNSA0IDE1IDRDMTUgNCAxMSA2IDExIDgnIHN0cm9rZT0nJTIzQ0IzMzNCJy8lM0UlM0Mvc3ZnJTNFXCIpO1xyXG4gICAgICBtYXNrLXNpemU6IGNvbnRhaW47XHJcbiAgICAgIG1hc2stcG9zaXRpb246IGNlbnRlciByaWdodDtcclxuICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudENvbG9yO1xyXG4gICAgICBcclxuICAgICAgdHJhbnNpdGlvbjogdHJhbnNsYXRlIHZhcigtLV90cmFuc2l0aW9uKTtcclxuICAgIH1cclxuICAgIFxyXG4gIH1cclxuICAmOmhvdmVyLFxyXG4gICY6Zm9jdXMge1xyXG4gICAgLmJ1dHRvbl9fYXJyb3c6YmVmb3JlIHtcclxuICAgICAgc2NhbGU6IHZhcigtLV9zY2FsZSkgMTtcclxuICAgIH1cclxuICAgIC5idXR0b25fX2Fycm93OmFmdGVyIHtcclxuICAgICAgdHJhbnNsYXRlOiB2YXIoLS1fZXh0ZW5zaW9uKSAwO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCJAdXNlICcuLi9hYnN0cmFjdHMnIGFzICo7XHJcbkB1c2UgJ3R5cG9ncmFwaHknIGFzICo7XHJcbkB1c2UgJ2J1dHRvbnMnIGFzICo7XHJcblxyXG4ud3lzaXd5ZyB7XHJcbiAgaDEge1xyXG4gICAgQGV4dGVuZCAuaGVhZGluZy0xO1xyXG4gIH1cclxuICBoMiB7XHJcbiAgICBAZXh0ZW5kIC5oZWFkaW5nLTI7XHJcbiAgfVxyXG4gIGgzIHtcclxuICAgIEBleHRlbmQgLmhlYWRpbmctMztcclxuICB9XHJcbiAgaDQge1xyXG4gICAgQGV4dGVuZCAuaGVhZGluZy00O1xyXG4gIH1cclxuICBoNSB7XHJcbiAgICBAZXh0ZW5kIC5oZWFkaW5nLTU7XHJcbiAgfVxyXG4gIGg2IHtcclxuICAgIEBleHRlbmQgLmhlYWRpbmctNjtcclxuICB9XHJcblxyXG4gIC5oZWFkaW5nLTEge1xyXG4gICAgQGV4dGVuZCAuaGVhZGluZy0xO1xyXG4gIH1cclxuICAuaGVhZGluZy0yIHtcclxuICAgIEBleHRlbmQgLmhlYWRpbmctMjtcclxuICB9XHJcbiAgLmhlYWRpbmctMyB7XHJcbiAgICBAZXh0ZW5kIC5oZWFkaW5nLTM7XHJcbiAgfVxyXG4gIC5oZWFkaW5nLTQge1xyXG4gICAgQGV4dGVuZCAuaGVhZGluZy00O1xyXG4gIH1cclxuICAuaGVhZGluZy01IHtcclxuICAgIEBleHRlbmQgLmhlYWRpbmctNTtcclxuICB9XHJcbiAgLmhlYWRpbmctNiB7XHJcbiAgICBAZXh0ZW5kIC5oZWFkaW5nLTY7XHJcbiAgfVxyXG5cclxuICA+ICoge1xyXG4gICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiAwLjc1ZW07XHJcbiAgICBtYXJnaW4tYmxvY2stZW5kOiAwLjVlbTtcclxuICB9XHJcbiAgPiA6Zmlyc3QtY2hpbGQge1xyXG4gICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiAwO1xyXG4gIH1cclxuICA+IDpsYXN0LWNoaWxkIHtcclxuICAgIG1hcmdpbi1ibG9jay1lbmQ6IDA7XHJcbiAgfVxyXG5cclxuICBiLFxyXG4gIHN0cm9uZyB7XHJcbiAgICBmb250LXdlaWdodDogYm9sZDtcclxuICB9XHJcbiAgaSxcclxuICBlbSB7XHJcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XHJcbiAgfVxyXG5cclxuICBvbCxcclxuICB1bCB7XHJcbiAgICBsaXN0LXN0eWxlOiByZXZlcnQ7XHJcbiAgICBwYWRkaW5nLWlubGluZS1zdGFydDogMS41ZW07XHJcblxyXG4gICAgbGk6bm90KDpsYXN0LWNoaWxkKSB7XHJcbiAgICAgIG1hcmdpbi1ibG9jay1lbmQ6IDAuNWVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb2wge1xyXG4gICAgbGlzdC1zdHlsZTogbm9uZTtcclxuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAyLjVlbTtcclxuXHJcbiAgICA+IGxpIHtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG5cclxuICAgICAgLy8gbGlzdC1pdGVtIGNvdW50ZXIgcmVzcGVjdHMgdGhlIHN0YXJ0L3JldmVyc2VkIGF0dHJpYnV0ZXNcclxuICAgICAgJjo6YmVmb3JlIHtcclxuICAgICAgICBjb250ZW50OiBjb3VudGVyKGxpc3QtaXRlbSwgZGVjaW1hbC1sZWFkaW5nLXplcm8pO1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IGNhbGMoLTEuMjVlbSAqIDEuMjUpOyAvLyBvZmZzZXQgaXMgaW4gdGhlIG1hcmtlcidzIHNtYWxsZXIgZW1cclxuICAgICAgICBpbnNldC1ibG9jay1zdGFydDogMDtcclxuICAgICAgICBjb2xvcjogJGNvbG9yLXByaW1hcnk7XHJcbiAgICAgICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1iYXNlO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMS4yNWVtO1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XHJcbiAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcclxuICAgICAgICBjb2xvcjogJGNvbG9yLXNlY29uZGFyeTtcclxuICAgICAgICBvcGFjaXR5OiAwLjU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlmcmFtZSxcclxuICBmaWd1cmUsXHJcbiAgaW1nIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgbWFyZ2luLWJsb2NrOiAxZW07XHJcbiAgfVxyXG5cclxuICB0YWJsZSB7XHJcbiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xyXG4gICAgbWFyZ2luLWJsb2NrOiAxZW07XHJcblxyXG4gICAgdGQge1xyXG4gICAgICBwYWRkaW5nOiAwLjI1cmVtIDAuNzVyZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhIHtcclxuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xyXG4gICAgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogMXB4O1xyXG4gICAgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBkb3R0ZWQ7XHJcbiAgICB0cmFuc2l0aW9uOiB0ZXh0LXVuZGVybGluZS1vZmZzZXQgMC4ycyBlYXNlO1xyXG5cclxuICAgICY6aG92ZXIsICY6Zm9jdXMge1xyXG4gICAgICB0ZXh0LXVuZGVybGluZS1vZmZzZXQ6IC4yNWVtO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCJAdXNlICcuLi9hYnN0cmFjdHMvJyBhcyAqO1xyXG5cclxuLmZvcm0ge1xyXG5cclxuXHQvKiBDb250YWluZXIgY2xhc3MgdG8gbGF5b3V0IGZvcm0gZmllbGRzIGluIGEgMi1jb2x1bW4gZ3JpZCAqL1xyXG5cdCZfX2dyaWQge1xyXG5cdFx0ZGlzcGxheTogZ3JpZDtcclxuXHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XHJcblx0XHRnYXA6IDhyZW07XHJcblx0XHRcclxuXHRcdCZfX2NvbHVtbiB7XHJcblx0XHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcblx0XHRcdGdhcDogMnJlbTtcclxuXHRcdH1cclxuXHRcdFxyXG5cdFx0QGluY2x1ZGUgbXFVbnRpbCgnbWVkaXVtJykge1xyXG5cdFx0XHRnYXA6IDRyZW07XHJcblx0XHR9XHJcblx0XHRAaW5jbHVkZSBtcVVudGlsKCdzbWFsbCcpIHtcclxuXHRcdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XHJcblx0XHRcdGdhcDogMnJlbTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cclxuXHQvKiBMYXlvdXQgYSBmb3JtIGZpZWxkcyBhbmQgaXRzIGxhYmVsIGhvcml6b250YWxseSAqL1xyXG5cdCZfX2lubGluZSB7XHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0Z2FwOiAwLjVyZW07XHJcblx0XHRhbGlnbi1pdGVtczogYmFzZWxpbmU7XHJcblx0fVxyXG5cclxuXHQmX19sYWJlbCB7XHJcblx0XHRkaXNwbGF5OiBibG9jaztcclxuXHRcdGZvbnQtc2l6ZTogLjg1ZW07XHJcblx0XHRmb250LXdlaWdodDogNDAwO1xyXG5cclxuXHRcdCY6aGFzKH4gaW5wdXRbcmVxdWlyZWRdKTo6YWZ0ZXIge1xyXG5cdFx0XHRjb250ZW50OiAnKic7XHJcblx0XHR9XHJcblxyXG5cdFx0YSB7XHJcblx0XHRcdGNvbG9yOiAkY29sb3ItYWNjZW50O1xyXG5cdFx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdCZfX2NvbnRyb2wge1xyXG5cdFx0ZGlzcGxheTogYmxvY2s7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHRcdHBhZGRpbmc6IDAuNXJlbSAwO1xyXG5cdFx0Zm9udC1zaXplOiAxLjI1ZW07XHJcblx0XHRsaW5lLWhlaWdodDogMTtcclxuXHRcdGJhY2tncm91bmQ6IG5vbmU7XHJcblx0XHRib3JkZXI6IG5vbmU7XHJcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgY3VycmVudENvbG9yO1xyXG5cclxuXHRcdCZbdHlwZT1cInJhZGlvXCJdLFxyXG5cdFx0Jlt0eXBlPVwiY2hlY2tib3hcIl0ge1xyXG5cdFx0XHR3aWR0aDogMWVtO1xyXG5cdFx0XHRoZWlnaHQ6IDFlbTtcclxuXHRcdFx0YXNwZWN0LXJhdGlvOiAxO1xyXG5cdFx0XHRtYXJnaW4tdG9wOiAtMC4wNWVtO1xyXG5cdFx0XHR2ZXJ0aWNhbC1hbGlnbjogdG9wO1xyXG5cdFx0XHRjb2xvcjogaW5oZXJpdDtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcblx0XHRcdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XHJcblx0XHRcdGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcclxuXHRcdFx0YmFja2dyb3VuZC1zaXplOiBjb250YWluO1xyXG5cdFx0XHRib3JkZXI6IDFweCBzb2xpZCBjdXJyZW50Q29sb3I7XHJcblxyXG5cdFx0XHQtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XHJcblx0XHRcdC1tb3otYXBwZWFyYW5jZTogbm9uZTtcclxuXHRcdFx0YXBwZWFyYW5jZTogbm9uZTtcclxuXHRcdFx0LXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0O1xyXG5cdFx0XHRjb2xvci1hZGp1c3Q6IGV4YWN0O1xyXG5cdFx0fVxyXG5cclxuXHRcdCZbdHlwZT1cInJhZGlvXCJdIHtcclxuXHRcdFx0Ym9yZGVyLXJhZGl1czogNTAlO1xyXG5cclxuXHRcdFx0JjpjaGVja2VkIHtcclxuXHRcdFx0XHRib3JkZXItY29sb3I6ICRjb2xvci1zZWNvbmRhcnk7XHJcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXNlY29uZGFyeTtcclxuXHRcdFx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDQ0OCA1MTInJTNFJTNDcGF0aCBmaWxsPSclMjNmZmYnIGQ9J000MTMuNSA5MkwxMzMuNSAzNzJsLTk5LTk5Yy00LjctNC43LTEyLjMtNC43LTE3IDBMNi4yIDI4NC4zYy00LjcgNC43LTQuNyAxMi4zIDAgMTdsMTE4LjggMTE4LjhjNC43IDQuNyAxMi4zIDQuNyAxNyAwbDI5OS44LTI5OS44YzQuNy00LjcgNC43LTEyLjMgMC0xN2wtMTEuMy0xMS4zYy00LjctNC43LTEyLjMtNC43LTE3IDB6Jy8lM0UlM0Mvc3ZnJTNFXCIpO1xyXG5cdFx0XHRcdGJhY2tncm91bmQtc2l6ZTogNjAlO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRcclxuXHRcdCZbdHlwZT1cImNoZWNrYm94XCJdIHtcclxuXHRcdFx0JjpjaGVja2VkIHtcclxuXHRcdFx0XHRib3JkZXItY29sb3I6ICRjb2xvci1zZWNvbmRhcnk7XHJcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXNlY29uZGFyeTtcclxuXHRcdFx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDQ0OCA1MTInJTNFJTNDcGF0aCBmaWxsPSclMjNmZmYnIGQ9J000MTMuNSA5MkwxMzMuNSAzNzJsLTk5LTk5Yy00LjctNC43LTEyLjMtNC43LTE3IDBMNi4yIDI4NC4zYy00LjcgNC43LTQuNyAxMi4zIDAgMTdsMTE4LjggMTE4LjhjNC43IDQuNyAxMi4zIDQuNyAxNyAwbDI5OS44LTI5OS44YzQuNy00LjcgNC43LTEyLjMgMC0xN2wtMTEuMy0xMS4zYy00LjctNC43LTEyLjMtNC43LTE3IDB6Jy8lM0UlM0Mvc3ZnJTNFXCIpO1xyXG5cdFx0XHRcdGJhY2tncm91bmQtc2l6ZTogNjAlO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxufSIsIkB1c2UgJy4uL2Fic3RyYWN0cycgYXMgKjtcclxuXHJcbi5uYXZiYXIge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHJcbiAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1hY2NlbnQ7XHJcbiAgZm9udC1zaXplOiAwLjgxMjVyZW07XHJcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMTJlbTtcclxuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG5cclxuICAmX19pbm5lciB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGdhcDogMS4yNXJlbTtcclxuICAgIHBhZGRpbmc6IDFyZW0gMDtcclxuXHJcbiAgICAuYnJhbmRpbmcge1xyXG4gICAgICBmbGV4OiAwIDAgYXV0bztcclxuICAgICAgbWFyZ2luLWlubGluZS1lbmQ6IGF1dG87XHJcblxyXG4gICAgICBpbWcge1xyXG4gICAgICAgIGhlaWdodDogY2xhbXAoNXJlbSwgMy44NzVyZW0gKyA0LjV2dywgNy4yNXJlbSk7XHJcbiAgICAgICAgd2lkdGg6IGF1dG87XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfX21lbnUge1xyXG5cclxuICAgIG5hdiB7ICAgIFxyXG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcblxyXG4gICAgICB1bCB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGVuZDtcclxuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgICAgICAgZ2FwOiAwLjVyZW0gMXJlbTtcclxuICAgICAgICBcclxuICAgICAgICBsaSB7XHJcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgLjI1cyBlYXNlO1xyXG5cclxuICAgICAgICAgICY6YWZ0ZXIge1xyXG4gICAgICAgICAgICBjb250ZW50OiAnJztcclxuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgICBib3R0b206IDA7XHJcbiAgICAgICAgICAgIGxlZnQ6IC41cmVtO1xyXG4gICAgICAgICAgICByaWdodDogLjVyZW07XHJcbiAgICAgICAgICAgIGhlaWdodDogLjc1cHg7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGN1cnJlbnRDb2xvcjtcclxuICAgICAgICAgICAgb3BhY2l0eTogMDtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLjM3NXJlbSk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlcjtcclxuICAgICAgICAgICAgdHJhbnNpdGlvbjogaW5oZXJpdDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgJjpob3ZlciwgXHJcbiAgICAgICAgICAmOmFjdGl2ZSxcclxuICAgICAgICAgICY6Zm9jdXMtd2l0aGluIHtcclxuICAgICAgICAgICAgY29sb3I6ICRjb2xvci1zZWNvbmRhcnk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAmOmFmdGVyIHtcclxuICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgICBvcGFjaXR5OiAxO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICYuY3VycmVudC1tZW51LWl0ZW0ge1xyXG4gICAgICAgICAgICAmOmFmdGVyIHtcclxuICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgICBvcGFjaXR5OiAxO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGEge1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgICAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07XHJcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGluaGVyaXQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIEBpbmNsdWRlIG1xVW50aWwoJ21lZGl1bScpIHtcclxuICAgICAgb3JkZXI6IDk5O1xyXG5cclxuICAgICAgbmF2IHtcclxuICAgICAgICBkaXNwbGF5OiBub25lOyBcclxuICAgICAgICBvcGFjaXR5OiAwO1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XHJcblxyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICB0b3A6IDEwMCU7XHJcbiAgICAgICAgbGVmdDogMDtcclxuICAgICAgICByaWdodDogMDtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMXJlbTtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItYWNjZW50LWxpZ2h0O1xyXG4gICAgICAgIGJvcmRlci1ib3R0b206IC4yNXJlbSBzb2xpZCAkY29sb3Itc2Vjb25kYXJ5O1xyXG4gICAgICAgIGJveC1zaGFkb3c6IDAgMXJlbSAxcmVtIHJnYmEoMCAwIDAgLyAyMCUpO1xyXG4gICAgICAgIHotaW5kZXg6IDEwO1xyXG5cclxuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgLjI1cyBlYXNlO1xyXG4gICAgICAgIHRyYW5zaXRpb24tYmVoYXZpb3I6IGFsbG93LWRpc2NyZXRlO1xyXG5cclxuICAgICAgICB1bCB7XHJcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgICAgICAgIGdhcDogMDtcclxuXHJcbiAgICAgICAgICBsaSB7XHJcbiAgICAgICAgICAgICY6YWZ0ZXIge1xyXG4gICAgICAgICAgICAgIGNvbnRlbnQ6IG5vbmUgIWltcG9ydGFudDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgJi5jdXJyZW50LW1lbnUtaXRlbSB7XHJcbiAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWFjY2VudDtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBhIHtcclxuICAgICAgICAgICAgICAgIGNvbG9yOiAkY29sb3ItdGV4dCAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgICAgICBhIHtcclxuICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgICAgICBwYWRkaW5nOiAxcmVtIDJyZW07XHJcbiAgICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIC4xcyBlYXNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAubmF2YmFyX190b2dnbGVbYXJpYS1leHBhbmRlZD1cInRydWVcIl0gfiBuYXYge1xyXG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgIG9wYWNpdHk6IDE7XHJcblxyXG4gICAgICAgIEBzdGFydGluZy1zdHlsZSB7XHJcbiAgICAgICAgICBvcGFjaXR5OiAwO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9fdG9nZ2xlIHtcclxuICAgICR0b2dnbGU6ICY7XHJcblxyXG4gICAgYXBwZWFyYW5jZTogbm9uZTtcclxuICAgIGNvbG9yOiBpbmhlcml0O1xyXG4gICAgYmFja2dyb3VuZDogbm9uZTtcclxuICAgIGJvcmRlcjogbm9uZTtcclxuICAgIHBhZGRpbmc6IDA7XHJcblxyXG4gICAgZGlzcGxheTogZ3JpZDtcclxuICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBmb250LXNpemU6IDJyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMTtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuXHJcbiAgICAmID4gKiB7XHJcbiAgICAgIGdyaWQtYXJlYTogMSAvIDE7XHJcbiAgICAgIHdpZHRoOiAxZW07XHJcbiAgICB9XHJcblxyXG4gICAgJiAjeyR0b2dnbGV9X19vcGVuIHtcclxuICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICB9XHJcbiAgICAmICN7JHRvZ2dsZX1fX2Nsb3NlIHtcclxuICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgIH1cclxuXHJcbiAgICAmW2FyaWEtZXhwYW5kZWQ9XCJ0cnVlXCJdIHtcclxuICAgICAgJiAjeyR0b2dnbGV9X19vcGVuIHtcclxuICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICB9XHJcbiAgICAgICYgI3skdG9nZ2xlfV9fY2xvc2Uge1xyXG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIEBpbmNsdWRlIG1xKCdtZWRpdW0nKSB7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX19pY29uIHtcclxuICAgIGZsZXg6IDAgMCBhdXRvO1xyXG4gICAgZm9udC1zaXplOiAxLjI1cmVtO1xyXG4gICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgICBjb2xvcjogaW5oZXJpdDtcclxuICAgIHRyYW5zaXRpb246IGNvbG9yIC4yNXMgZWFzZTtcclxuICAgIFxyXG4gICAgQGluY2x1ZGUgbXFVbnRpbCgnbWVkaXVtJykge1xyXG4gICAgICBmb250LXNpemU6IDEuNXJlbTtcclxuICAgIH1cclxuICBcclxuICAgICY6aG92ZXIsXHJcbiAgICAmOmZvY3VzLXZpc2libGUge1xyXG4gICAgICBjb2xvcjogJGNvbG9yLXNlY29uZGFyeTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfX2NhcnQge1xyXG4gICAgZmxleDogMCAwIGF1dG87XHJcbiAgICBvcmRlcjogNjsgLy8gc2l0IGFmdGVyIHRoZSBjYXJ0IG9uIGRlc2t0b3A7IHRoZSBtb2JpbGUgbWVudSBpcyBvcmRlcjogOTlcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIGRpc3BsYXk6IGdyaWQ7XHJcbiAgICBwbGFjZS1pdGVtczogY2VudGVyO1xyXG5cclxuICAgICZfX2NvdW50IHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6IC0wLjc1ZW07XHJcbiAgICAgIGluc2V0LWlubGluZS1lbmQ6IC0wLjc1ZW07XHJcbiAgICAgIG1pbi13aWR0aDogMS41ZW07XHJcbiAgICAgIHBhZGRpbmc6IDAuMjVlbSAwLjM1ZW07XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3Itc2Vjb25kYXJ5O1xyXG4gICAgICBjb2xvcjogJGNvbG9yLXdoaXRlO1xyXG4gICAgICBmb250LXNpemU6IDAuNWVtO1xyXG4gICAgICBmb250LXdlaWdodDogNzAwO1xyXG4gICAgICBsaW5lLWhlaWdodDogMTtcclxuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICBsZXR0ZXItc3BhY2luZzogMDtcclxuXHJcbiAgICAgICYuaXMtZW1wdHkge1xyXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfX2FjY291bnQgeyBcclxuICAgIG9yZGVyOiA1OyAvLyBzaXQgYWZ0ZXIgdGhlIG5hdiBvbiBkZXNrdG9wOyB0aGUgbW9iaWxlIG1lbnUgaXMgb3JkZXI6IDk5XHJcbiAgfVxyXG5cclxuXHJcbiAgJl9fYWN0aW9ucyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGdhcDogMS41cmVtO1xyXG4gICAgXHJcbiAgICAuYnV0dG9uIHtcclxuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgIH1cclxuICAgIFxyXG4gICAgQGluY2x1ZGUgbXFVbnRpbCgnbWVkaXVtJykge1xyXG4gICAgICBmb250LXNpemU6ICRmb250LXNpemUtLTI7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gICAgICBnYXA6IDFyZW07XHJcblxyXG4gICAgICAuYnV0dG9uIHtcclxuICAgICAgICBwYWRkaW5nLWlubGluZTogMXJlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufSIsIkB1c2UgJy4uL2Fic3RyYWN0cycgYXMgKjtcclxuXHJcbi5sYW5ndWFnZS1zd2l0Y2hlciB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICBmb250LXNpemU6IC44NXJlbTtcclxuXHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIFxyXG4gIEBpbmNsdWRlIG1xKCdtZWRpdW0nKSB7XHJcbiAgICBnYXA6IC4yNWVtO1xyXG4gIH1cclxuXHJcbiAgaW1nIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgfVxyXG5cclxuICBhIHtcclxuICAgIHBhZGRpbmc6IC4yNXJlbTtcclxuICAgIGNvbG9yOiBpbmhlcml0O1xyXG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcclxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuXHJcbiAgICAmOmhvdmVyLCAmOmZvY3VzIHtcclxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgIGNvbG9yOiAkY29sb3ItYWNjZW50O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmxhbmd1YWdlcy1kcm9wZG93biB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAxMDAlO1xyXG4gICAgei1pbmRleDogOTk7XHJcblxyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIFxyXG4gICAgYSB7XHJcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDEuNXJlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICY6aG92ZXIsICY6Zm9jdXMtd2l0aGluIHtcclxuICAgIC5sYW5ndWFnZXMtZHJvcGRvd24ge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgfVxyXG4gICAgaSB7XHJcbiAgICAgIHRyYW5zZm9ybTogc2NhbGVZKC0xKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxufVxyXG4iLCJAdXNlICcuLi9hYnN0cmFjdHMnIGFzICo7XHJcblxyXG4uZm9vdGVyIHtcclxuXHRjb2xvcjogJGNvbG9yLXdoaXRlO1xyXG5cdGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1wcmltYXJ5O1xyXG5cclxuXHQmX19pbm5lciB7XHJcblx0XHRkaXNwbGF5OiBncmlkO1xyXG5cdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNywgMWZyKTtcclxuXHRcdGdhcDogMy41cmVtIDEuNzVyZW07XHJcblx0XHRwYWRkaW5nOiA1cmVtIDA7XHJcblx0XHRcclxuXHRcdEBpbmNsdWRlIG1xVW50aWwoJ21lZGl1bScpIHtcclxuXHRcdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcclxuXHRcdH1cclxuXHRcdEBpbmNsdWRlIG1xVW50aWwoJ3NtYWxsJykge1xyXG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG5cdFx0fVxyXG5cdH1cclxuXHRcclxuXHQmX19pbmZvIHtcclxuXHRcdGdyaWQtY29sdW1uOiBzcGFuIDM7XHJcblx0XHRmb250LXZhcmlhbnQtbnVtZXJpYzogb2xkc3R5bGUtbnVtcyBwcm9wb3J0aW9uYWwtbnVtcztcclxuXHRcdFxyXG5cdFx0QGluY2x1ZGUgbXFVbnRpbCgnbWVkaXVtJykge1xyXG5cdFx0XHRncmlkLWNvbHVtbjogc3BhbiAyO1xyXG5cdFx0fVxyXG5cdH1cclxuXHRcclxuXHQmX19zaG9wcyB7XHJcblx0XHRncmlkLWNvbHVtbjogc3BhbiAyO1xyXG5cdH1cclxuXHJcblxyXG5cdCZfX2xvZ28ge1xyXG5cdFx0aGVpZ2h0OiA0Ljg3NXJlbTtcclxuXHRcdHdpZHRoOiBhdXRvO1xyXG5cdFx0ZmxleDogMCAwIGF1dG87XHJcblx0fVxyXG5cclxuXHQmX19jb2x1bW4ge1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcblx0XHRnYXA6IDEuMjVyZW07XHJcblx0fVxyXG5cclxuXHQmX19tZW51IHtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG5cdFx0Z2FwOiAwLjVyZW07XHJcblxyXG5cdFx0bGkge1xyXG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0XHRhbGlnbi1pdGVtczogYmFzZWxpbmU7XHJcblx0XHRcdGdhcDogMC43NXJlbTtcclxuXHJcblx0XHRcdGk6Zmlyc3QtY2hpbGQge1xyXG5cdFx0XHRcdGZsZXg6IDAgMCAxLjEyNXJlbTtcclxuXHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGEge1xyXG5cdFx0Y29sb3I6IGluaGVyaXQ7XHJcblx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcblxyXG5cdFx0Jjpob3ZlciwgJjpmb2N1cyB7XHJcblx0XHRcdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcbn1cclxuXHJcbi5jb2xvZm9uIHtcclxuXHRwYWRkaW5nOiAuNjI1cmVtIDA7XHJcblx0Zm9udC1zaXplOiAuOHJlbTtcclxuXHRjb2xvcjogJGNvbG9yLXdoaXRlO1xyXG5cdGJhY2tncm91bmQ6ICRjb2xvci1wcmltYXJ5LWRhcms7XHJcblxyXG5cdEBpbmNsdWRlIG1xVW50aWwoJ21lZGl1bScpIHtcclxuXHRcdHBhZGRpbmc6IDEuMjVyZW0gMCAxcmVtO1xyXG5cdH1cclxuXHJcblx0Jl9fbWVudSB7XHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHRcdGdhcDogLjVyZW0gMXJlbTtcclxuXHRcdGZsZXgtd3JhcDogd3JhcDtcclxuXHRcdFxyXG5cdFx0QGluY2x1ZGUgbXFVbnRpbCgnbWVkaXVtJykge1xyXG5cdFx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG5cdFx0XHRhbGlnbi1pdGVtczogc3RhcnQ7XHJcblx0XHRcdGdhcDogMC41cmVtIDAuNzVyZW07XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQubWVudS1pdGVtIHtcclxuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRnYXA6IGluaGVyaXQ7XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG5cclxuXHRcdCY6Zmlyc3QtY2hpbGQge1xyXG5cdFx0XHRtYXJnaW4taW5saW5lLWVuZDogYXV0bztcclxuXHRcdH1cclxuXHRcdCY6bGFzdC1jaGlsZCB7XHJcblx0XHRcdG1hcmdpbi1pbmxpbmUtc3RhcnQ6IGF1dG87XHJcblx0XHR9XHJcblxyXG5cdFx0XHJcblx0XHQmOm5vdCg6Zmlyc3QtY2hpbGQsIDpsYXN0LWNoaWxkLCA6aGFzKCs6bGFzdC1jaGlsZCkpIHtcclxuXHRcdFx0JjphZnRlciB7XHJcblx0XHRcdFx0Y29udGVudDogJ3wnO1xyXG5cdFx0XHRcdHBvaW50ZXItZXZlbnRzOiBub25lO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRcclxuXHRcdEBpbmNsdWRlIG1xVW50aWwoJ21lZGl1bScpIHtcclxuXHRcdFx0bWFyZ2luOiAwICFpbXBvcnRhbnQ7XHJcblxyXG5cdFx0XHQmOmFmdGVyIHtcclxuXHRcdFx0XHRjb250ZW50OiBub25lICFpbXBvcnRhbnQ7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGEge1xyXG5cdFx0Jjpob3ZlciwgJjpmb2N1cyB7XHJcblx0XHRcdGNvbG9yOiAkY29sb3ItYWNjZW50O1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG5cclxuIiwiQHVzZSAnLi4vYWJzdHJhY3RzJyBhcyAqO1xyXG5cclxuLnByb3BzIHtcclxuICAkcGFyZW50OiAmO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBnYXA6IDAuNzVyZW0gIWltcG9ydGFudDtcclxuXHJcbiAgYSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGdhcDogMC41cmVtO1xyXG5cclxuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcclxuXHJcbiAgICAjeyRwYXJlbnR9X190ZXh0IHtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgIH1cclxuICAgICN7JHBhcmVudH1fX2xvZ28ge1xyXG4gICAgICBtYXgtd2lkdGg6IDEwMHB4O1xyXG4gICAgICBzdmcge1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIGhlaWdodDogMzRweDtcclxuICAgICAgICBmaWxsOiBjdXJyZW50Q29sb3I7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiQHVzZSAnLi4vYWJzdHJhY3RzJyBhcyAqO1xyXG5cclxuXHJcbi5zbGljay1zbGlkZXIge1xyXG5cclxuXHQuc2xpY2stdHJhY2sge1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHR9XHJcblx0LnNsaWNrLXNsaWRlIHtcclxuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRoZWlnaHQ6IGF1dG87XHJcblxyXG5cdFx0JiA+IGRpdiwgXHJcblx0XHQmID4gZGl2ID4gZGl2IHtcclxuXHRcdFx0aGVpZ2h0OiAxMDAlO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG5cclxuLnNpbXBsZS1jYXJvdXNlbCB7XHJcblx0ZGlzcGxheTogZ3JpZCAhaW1wb3J0YW50OyAvKiBGaXggZm9yIGNvbXBhdGliaWxpdHkgb2YgU2xpY2sgd2l0aGluIGEgZ3JpZCBjb2x1bW4gKi9cclxuXHRcclxuXHQuc2xpY2stbGlzdCB7XHJcblx0XHRtYXJnaW4tcmlnaHQ6IC0ycmVtO1xyXG5cdH1cclxuXHJcblx0LnNsaWNrLXNsaWRlIHtcclxuXHRcdG1hcmdpbi1yaWdodDogMnJlbTtcclxuXHR9XHJcbn1cclxuXHJcbi5oZXJvLWNhcm91c2VsIHtcclxuXHQmX19kb3RzIHtcclxuXHRcdG1hcmdpbi1ib3R0b206IDFyZW07XHJcblx0fVxyXG5cdCZfX3NsaWRlciB7XHJcblx0XHQuc2xpY2stbGlzdCB7XHJcblx0XHRcdG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7XHJcblx0XHR9XHJcblx0XHQuc2xpY2stc2xpZGUge1xyXG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDJyZW07XHJcblx0XHR9XHJcblx0fVxyXG59XHJcblxyXG5cclxuXHJcbi8qIERvdHMgKi9cclxuXHJcbi5zbGljay1kb3RzIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHRnYXA6IC41cmVtO1xyXG5cclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIG1hcmdpbjogMDtcclxuXHJcbiAgICBsaXN0LXN0eWxlOiBub25lO1xyXG5cclxuXHRsaSB7XHJcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblxyXG5cdFx0ZGlzcGxheTogYmxvY2s7XHJcblxyXG5cdFx0d2lkdGg6IGF1dG87XHJcblx0XHRoZWlnaHQ6IDFyZW07XHJcblx0XHRwYWRkaW5nOiAwO1xyXG5cclxuXHRcdGN1cnNvcjogcG9pbnRlcjtcclxuXHRcdFxyXG5cdFx0YnV0dG9uIHtcclxuXHRcdFx0Zm9udC1zaXplOiAwO1xyXG5cdFx0XHRsaW5lLWhlaWdodDogMDtcclxuXHJcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xyXG5cclxuXHRcdFx0d2lkdGg6IC43NXJlbTtcclxuXHRcdFx0aGVpZ2h0OiAuNzVyZW07XHJcblxyXG5cdFx0XHRjdXJzb3I6IHBvaW50ZXI7XHJcblxyXG5cdFx0XHRjb2xvcjogdHJhbnNwYXJlbnQ7XHJcblx0XHRcdGJvcmRlcjogMDtcclxuXHRcdFx0b3V0bGluZTogbm9uZTtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXByaW1hcnk7XHJcblx0XHRcdG9wYWNpdHk6IC4xNTtcclxuXHJcblx0XHRcdHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlLWluLW91dCwgYmFja2dyb3VuZC1jb2xvciAwLjJzIGVhc2UtaW4tb3V0O1xyXG5cdFx0XHRcclxuXHRcdFx0Jjpob3ZlcixcclxuXHRcdFx0Jjpmb2N1cyB7XHJcblx0XHRcdFx0b3V0bGluZTogbm9uZTtcclxuXHRcdFx0XHRvcGFjaXR5OiAxO1xyXG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1zZWNvbmRhcnk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQmLnNsaWNrLWFjdGl2ZSBidXR0b24ge1xyXG5cdFx0XHRvcGFjaXR5OiAxO1xyXG5cdFx0fVxyXG5cdH1cclxufSIsIkB1c2UgJy4uL2Fic3RyYWN0cycgYXMgKjtcclxuXHJcblxyXG4uc2VjdGlvbi00MDQge1xyXG5cdGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGdhcDogMnJlbTtcclxuICAgIHBhZGRpbmc6IDZyZW0gMnJlbTtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHRcclxuXHQmX19tYXJrIHtcclxuXHRcdGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktZGlzcGxheTtcclxuXHRcdGZvbnQtc2l6ZTogY2xhbXAoOHJlbSwgNnJlbSArIDh2dywgMTJyZW0pO1xyXG5cdFx0Zm9udC13ZWlnaHQ6IDkwMDtcclxuXHRcdGxpbmUtaGVpZ2h0OiAxO1xyXG5cdFx0b3BhY2l0eTogLjI7XHJcblx0fVxyXG59IiwiQHVzZSAnLi4vYWJzdHJhY3RzJyBhcyAqO1xyXG5cclxuXHJcbi5oZXJvIHtcclxuXHQud29vY29tbWVyY2UtYnJlYWRjcnVtYiB7XHJcblx0XHRjb2xvcjogJGNvbG9yLXByaW1hcnk7XHJcblx0XHRmb250LXNpemU6ICRmb250LXNpemUtLTE7XHJcblx0fVxyXG5cclxuXHQmX19pbnRybyB7XHJcblx0XHRtYXgtd2lkdGg6IDgwY2g7XHJcblx0fVxyXG59XHJcblxyXG4uaGVyby0taG9tZSB7XHJcblx0Lmhlcm8ge1xyXG5cdFx0Jl9faW5uZXIge1xyXG5cdFx0XHRkaXNwbGF5OiBncmlkO1xyXG5cdFx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCAxZnIpO1xyXG5cdFx0XHRncmlkLXRlbXBsYXRlLXJvd3M6IDFmciBhdXRvO1xyXG5cdFx0XHRnYXA6IDFyZW07XHJcblx0XHRcdGdyaWQtdGVtcGxhdGUtYXJlYXM6IFxyXG5cdFx0XHRcdFwiY29udGVudCBjb250ZW50IGltYWdlIGltYWdlXCJcclxuXHRcdFx0XHRcInByb21vIHByb21vIGltYWdlIGltYWdlXCI7XHJcblxyXG5cdFx0XHRAaW5jbHVkZSBtcVVudGlsKCdtZWRpdW0nKSB7XHJcblx0XHRcdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcclxuXHRcdFx0XHRncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG87XHJcblx0XHRcdFx0Z3JpZC10ZW1wbGF0ZS1hcmVhczogXHJcblx0XHRcdFx0XHRcImNvbnRlbnQgY29udGVudFwiXHJcblx0XHRcdFx0XHRcImltYWdlIGltYWdlXCJcclxuXHRcdFx0XHRcdFwicHJvbW8gcHJvbW9cIjtcclxuXHRcdFx0fVxyXG5cdFx0XHRAaW5jbHVkZSBtcVVudGlsKCdzbWFsbCcpIHtcclxuXHRcdFx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcclxuXHRcdFx0XHRncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG87XHJcblx0XHRcdFx0Z3JpZC10ZW1wbGF0ZS1hcmVhczogXHJcblx0XHRcdFx0XHRcImltYWdlXCJcclxuXHRcdFx0XHRcdFwiY29udGVudFwiXHJcblx0XHRcdFx0XHRcInByb21vXCI7XHJcblx0XHRcdFx0Z2FwOiAxcmVtO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0Jl9fY29udGVudCB7XHJcblx0XHRcdGdyaWQtYXJlYTogY29udGVudDtcclxuXHJcblx0XHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcblx0XHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cdFx0XHRnYXA6IDEuMjVyZW07XHJcblxyXG5cdFx0XHRwYWRkaW5nLWJsb2NrOiAzLjVyZW0gMi41cmVtO1xyXG5cdFx0XHR0ZXh0LXdyYXA6IGJhbGFuY2U7XHJcblx0XHRcdFxyXG5cdFx0XHRAaW5jbHVkZSBtcVVudGlsKCdtZWRpdW0nKSB7XHJcblx0XHRcdFx0cGFkZGluZy1ibG9jazogMS41cmVtO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0Jl9faW1hZ2Uge1xyXG5cdFx0XHRncmlkLWFyZWE6IGltYWdlO1xyXG5cclxuXHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cclxuXHRcdFx0aW1nIHtcclxuXHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHRcdFx0aW5zZXQ6IDA7XHJcblx0XHRcdFx0d2lkdGg6IDEwMCU7XHJcblx0XHRcdFx0aGVpZ2h0OiAxMDAlO1xyXG5cdFx0XHRcdG9iamVjdC1maXQ6IGNvdmVyO1xyXG5cdFx0XHR9XHJcblx0XHRcdFxyXG5cdFx0XHRAaW5jbHVkZSBtcVVudGlsKCdtZWRpdW0nKSB7XHJcblx0XHRcdFx0YXNwZWN0LXJhdGlvOiAxNiAvIDk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQmID4gLmN0YSB7XHJcblx0XHRcdGdyaWQtYXJlYTogcHJvbW87XHJcblx0XHR9XHJcblx0fVxyXG59XHJcbiIsIkB1c2UgJy4uL2Fic3RyYWN0cycgYXMgKjtcclxuXHJcblxyXG4uY3RhIHtcclxuXHQkcGFyZW50OiAmO1xyXG5cclxuXHRkaXNwbGF5OiBncmlkO1xyXG5cdGdyaWQtdGVtcGxhdGUtYXJlYXM6IFxyXG5cdFx0XCJjb250ZW50IGxhYmVsXCJcclxuXHRcdFwiZGlzY2xhaW1lciBsYWJlbFwiO1xyXG5cdGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIGF1dG87XHJcblx0Z3JpZC10ZW1wbGF0ZS1yb3dzOiAxZnIgYXV0bztcclxuXHRnYXA6IC43NXJlbTtcclxuXHJcblx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdGFzcGVjdC1yYXRpbzogMS8xO1xyXG5cdHotaW5kZXg6IDA7XHJcblxyXG5cdCYtLXByb21vIHtcclxuXHRcdHBhZGRpbmc6IDEuNXJlbTtcclxuXHRcdGNvbG9yOiAkY29sb3Itd2hpdGU7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3Itc2Vjb25kYXJ5O1xyXG5cclxuXHRcdCN7JHBhcmVudH1fX3RpdGxlOmhhcyhiKSB7XHJcblx0XHRcdGxpbmUtaGVpZ2h0OiAuOTEyNTtcclxuXHRcdFx0Zm9udC13ZWlnaHQ6IDMwMDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdCYtLWNvZmZlZSB7XHJcblx0XHRwYWRkaW5nOiAxLjVyZW07XHJcblx0XHRjb2xvcjogJGNvbG9yLXdoaXRlO1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXByaW1hcnk7XHJcblx0fVxyXG5cclxuXHJcblx0Jl9fY29udGVudCB7XHJcblx0XHRncmlkLWFyZWE6IGNvbnRlbnQ7XHJcblx0XHR0ZXh0LXdyYXA6IGJhbGFuY2U7XHJcblx0fVxyXG5cclxuXHQmX190aXRsZSB7XHJcblx0XHRmb250LXZhcmlhbnQtbnVtZXJpYzogb2xkc3R5bGUtbnVtcyBwcm9wb3J0aW9uYWwtbnVtcyBvcmRpbmFsO1xyXG5cdFx0Zm9udC1mZWF0dXJlLXNldHRpbmdzOiAnZGxpZycgb24sICdydnJuJyBvbjtcclxuXHR9XHJcblxyXG5cdCZfX2xhYmVsIHtcclxuXHRcdGdyaWQtYXJlYTogbGFiZWw7XHJcblxyXG5cdFx0dGV4dC1hbGlnbjogcmlnaHQ7XHJcblx0XHR3cml0aW5nLW1vZGU6IHZlcnRpY2FsLXJsO1xyXG5cdFx0dGV4dC1vcmllbnRhdGlvbjogbWl4ZWQ7XHJcblxyXG5cdFx0Zm9udC1zaXplOiAuODc1cmVtO1xyXG5cdFx0Zm9udC1mYW1pbHk6ICRmb250LWZhY2UtYWNjZW50O1xyXG5cdFx0Zm9udC13ZWlnaHQ6IDMwMDtcclxuXHRcdGxpbmUtaGVpZ2h0OiAxO1xyXG5cdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDk3NXJlbTtcclxuXHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XHJcblx0fVxyXG5cclxuXHQmX19kaXNjbGFpbWVyIHtcclxuXHRcdGdyaWQtYXJlYTogZGlzY2xhaW1lcjtcclxuXHJcblx0XHR0ZXh0LXdyYXA6IGJhbGFuY2U7XHJcblx0XHRmb250LXNpemU6IDAuODc1cmVtO1xyXG5cdFx0bWFyZ2luLXRvcDogYXV0bztcclxuXHRcdHBhZGRpbmctcmlnaHQ6IDFyZW07XHJcblx0fVxyXG5cclxuXHQmX19pbWFnZSB7XHJcblx0XHRwb2ludGVyLWV2ZW50czogbm9uZTtcclxuXHRcdG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdFx0dG9wOiA2MCU7XHJcblx0XHRib3R0b206IDA7XHJcblx0XHRsZWZ0OiAyLjVyZW07XHJcblx0XHRyaWdodDogMi41cmVtO1xyXG5cdFx0ei1pbmRleDogLTE7XHJcblxyXG5cdFx0aW1nIHtcclxuXHRcdFx0d2lkdGg6IDEwMCU7XHJcblx0XHRcdGhlaWdodDogMTAwJTtcclxuXHRcdFx0b2JqZWN0LWZpdDogY292ZXI7XHJcblx0XHRcdG9iamVjdC1wb3NpdGlvbjogdG9wIGNlbnRlcjtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuIiwiQHVzZSAnLi4vYWJzdHJhY3RzJyBhcyAqO1xyXG5cclxuXHJcbi5tYWNoaW5lcyB7XHJcblx0XHJcblx0Jl9fb3ZlcnZpZXcge1xyXG5cdFx0ZGlzcGxheTogZ3JpZDtcclxuXHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KG1pbigyNHJlbSwgMTAwJSksIDFmcikpO1xyXG5cdFx0Z3JpZC1hdXRvLXJvd3M6IDFmciBhdXRvIGF1dG87XHJcblx0XHRnYXA6IDNyZW0gMnJlbTtcclxuXHRcdFxyXG5cdFx0Jl9faXRlbSB7XHJcblx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHRcdFx0Z3JpZC1yb3c6IHNwYW4gMztcclxuXHRcdFx0XHJcblx0XHRcdGRpc3BsYXk6IGdyaWQ7XHJcblx0XHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogMmZyIDVmcjtcclxuXHRcdFx0Z3JpZC10ZW1wbGF0ZS1yb3dzOiBzdWJncmlkO1xyXG5cdFx0XHRncmlkLXRlbXBsYXRlLWFyZWFzOiBcclxuXHRcdFx0XHRcImltYWdlIHRpdGxlXCJcclxuXHRcdFx0XHRcImltYWdlIHRleHRcIlxyXG5cdFx0XHRcdFwiaW1hZ2UgYnV0dG9uXCI7XHJcblx0XHRcdGdhcDogLjVyZW0gMXJlbTtcclxuXHJcblx0XHRcdCZfX2ltYWdlIHtcclxuXHRcdFx0XHRncmlkLWFyZWE6IGltYWdlO1xyXG5cdFx0XHRcdGFsaWduLXNlbGY6IGVuZDtcclxuXHJcblx0XHRcdFx0aW1nIHtcclxuXHRcdFx0XHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0XHRcdFx0aGVpZ2h0OiBhdXRvO1xyXG5cdFx0XHRcdFx0bWF4LWhlaWdodDogMTJyZW07XHJcblx0XHRcdFx0XHRvYmplY3QtZml0OiBjb250YWluO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHQmX190aXRsZSB7XHJcblx0XHRcdFx0Z3JpZC1hcmVhOiB0aXRsZTtcclxuXHRcdFx0XHRhbGlnbi1zZWxmOiBlbmQ7XHJcblx0XHRcdH1cclxuXHRcdFx0Jl9fdGV4dCB7XHJcblx0XHRcdFx0Z3JpZC1hcmVhOiB0ZXh0O1xyXG5cdFx0XHR9XHJcblx0XHRcdC5idXR0b24td3JhcHBlciB7XHJcblx0XHRcdFx0Z3JpZC1hcmVhOiBidXR0b247XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIExhcmdlciBjbGljayB0YXJnZXQgKi9cclxuXHRcdFx0LmJ1dHRvbjpiZWZvcmUge1xyXG5cdFx0XHRcdGNvbnRlbnQ6ICcnO1xyXG5cdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdFx0XHRpbnNldDogMDtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHRcclxuXHJcblx0Jl9fbG9vcCB7XHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuXHRcdGdhcDogMi41cmVtO1xyXG5cclxuXHRcdGhyIHtcclxuXHRcdFx0Ym9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZCAkY29sb3Itc2Vjb25kYXJ5O1xyXG5cdFx0XHRvcGFjaXR5OiAwLjU7XHJcblx0XHR9XHJcblx0XHRcclxuXHRcdCZfX2l0ZW0ge1xyXG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0XHRcdFxyXG5cdFx0XHRkaXNwbGF5OiBncmlkO1xyXG5cdFx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDJmciA1ZnI7XHJcblx0XHRcdGdhcDogMXJlbSAxLjVyZW07XHJcblxyXG5cdFx0XHQmX19pbWFnZSB7XHJcblx0XHRcdFx0aW1nIHtcclxuXHRcdFx0XHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0XHRcdFx0aGVpZ2h0OiBhdXRvO1xyXG5cdFx0XHRcdFx0bWF4LWhlaWdodDogMTJyZW07XHJcblx0XHRcdFx0XHRvYmplY3QtZml0OiBjb250YWluO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Jl9fZmlsZXMgeyBcclxuXHRcdGRpc3BsYXk6IGdyaWQ7XHJcblx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDE0cmVtLCAxZnIpKTtcclxuXHRcdGdhcDogMC4zNzVyZW0gMS41cmVtO1xyXG5cclxuXHRcdGEge1xyXG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHN0YXJ0O1xyXG5cdFx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xyXG5cdFx0XHRhbGlnbi1pdGVtczogYmFzZWxpbmU7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKiBBcmNoaXZlOiBzdGlja3kgdGVybSArIGRlc2NyaXB0aW9uIHwgbWFjaGluZXMgb2YgdGhhdCB0ZXJtICovXHJcblx0Jl9fZ3JvdXAge1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcblx0XHRnYXA6ICRzaXplLWw7XHJcblxyXG5cdFx0QGluY2x1ZGUgbXEoJ21lZGl1bScpIHtcclxuXHRcdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcclxuXHRcdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XHJcblx0XHRcdGdhcDogMDtcclxuXHRcdH1cclxuXHJcblx0XHQmX19hc2lkZSB7XHJcblx0XHRcdEBpbmNsdWRlIG1xKCdtZWRpdW0nKSB7XHJcblx0XHRcdFx0cG9zaXRpb246IHN0aWNreTtcclxuXHRcdFx0XHRpbnNldC1ibG9jay1zdGFydDogMnJlbTtcclxuXHRcdFx0XHRmbGV4OiAwIDAgbWluKDMwcmVtLCAzOCUpO1xyXG5cdFx0XHRcdHBhZGRpbmctaW5saW5lLWVuZDogY2xhbXAoMnJlbSwgNHZ3LCA0cmVtKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdCZfX2NvbnRlbnQge1xyXG5cdFx0XHRmbGV4OiAxO1xyXG5cclxuXHRcdFx0QGluY2x1ZGUgbXEoJ21lZGl1bScpIHtcclxuXHRcdFx0XHRhbGlnbi1zZWxmOiBzdHJldGNoO1xyXG5cdFx0XHRcdHBhZGRpbmctaW5saW5lLXN0YXJ0OiBjbGFtcCgycmVtLCA0dncsIDRyZW0pO1xyXG5cdFx0XHRcdGJvcmRlci1pbmxpbmUtc3RhcnQ6IDFweCBzb2xpZCAkY29sb3ItYm9yZGVyO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG59IiwiQHVzZSAnLi4vYWJzdHJhY3RzJyBhcyAqO1xuXG4ubWFwIHtcblx0JHBhcmVudDogJjtcblxuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdGlzb2xhdGlvbjogaXNvbGF0ZTtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcblxuXHQmX19kYXRhIHtcblx0XHRkaXNwbGF5OiBub25lO1xuXHR9XG5cblx0Jl9fY2FudmFzIHtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRoZWlnaHQ6IGNsYW1wKDI0cmVtLCA2MHZoLCA0MHJlbSk7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWJvcmRlcjtcblx0fVxuXG5cdC8vIC0tLSBHb29nbGUgTWFwcyBJbmZvV2luZG93IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXHQvLyBNYXRjaCB0aGUgYnViYmxlIHRvIHRoZSBicmFuZCBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IHdoaXRlIGNhcmQuXG5cdC5nbS1zdHlsZSAuZ20tc3R5bGUtaXctYyB7XG5cdFx0cGFkZGluZzogMDtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItYWNjZW50LWxpZ2h0O1xuXHRcdGJveC1zaGFkb3c6IDAgMC43NXJlbSAycmVtIHJnYmEoMCAwIDAgLyAyNSUpO1xuXHR9XG5cblx0LmdtLXN0eWxlIC5nbS1zdHlsZS1pdyxcblx0LmdtLXN0eWxlIC5nbS1zdHlsZS1pdy1kIHtcblx0XHRvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XG5cdFx0cGFkZGluZzogMCAhaW1wb3J0YW50O1xuXHR9XG5cblx0LmdtLXN0eWxlIC5nbS1zdHlsZS1pdy10Yzo6YWZ0ZXIge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1hY2NlbnQtbGlnaHQ7XG5cdH1cblxuXHQvLyBUaGUgaW5mby13aW5kb3cgaGVhZGVyIHJvdyAod2l0aCBuYXRpdmUgY2xvc2UgYnV0dG9uKVxuXHQuZ20tc3R5bGUgLmdtLXN0eWxlLWl3LWNociB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXByaW1hcnk7XG5cdH1cblx0LmdtLXN0eWxlIC5nbS1zdHlsZS1pdy1jW2RhdGEtdHlwZT0nc2hvcCddIC5nbS1zdHlsZS1pdy1jaHIge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1zZWNvbmRhcnk7XG5cdH1cblxuXHQvLyBSZWNvbG91ciB0aGUgY2xvc2UgYnV0dG9uIHNvIGl0IHJlYWRzIG9uIHRoZSBjb2xvdXJlZCBoZWFkZXIuXG5cdC5nbS1zdHlsZSAuZ20tc3R5bGUtaXctY2hyID4gYnV0dG9uIHtcblx0XHR6LWluZGV4OiAxO1xuXG5cdFx0c3BhbiB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItYWNjZW50LWxpZ2h0ICFpbXBvcnRhbnQ7XG5cdFx0fVxuXHR9XG5cblx0Ly8gLS0tIExlZ2VuZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXHQmX19sZWdlbmQge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRyaWdodDogJHNpemUtcztcblx0XHRib3R0b206ICRzaXplLXM7XG5cdFx0ei1pbmRleDogMjtcblxuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRnYXA6IDAuNXJlbTtcblx0XHRtYXJnaW46IDA7XG5cdFx0cGFkZGluZzogMC43NXJlbSAxcmVtO1xuXHRcdGxpc3Qtc3R5bGU6IG5vbmU7XG5cblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItYWNjZW50LWxpZ2h0O1xuXHRcdGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcblx0XHRib3gtc2hhZG93OiAwIDAuNXJlbSAxLjI1cmVtIHJnYmEoMCAwIDAgLyAyMCUpO1xuXG5cdFx0Jl9faXRlbSB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGdhcDogMC41cmVtO1xuXHRcdFx0Zm9udC1zaXplOiAwLjg3NXJlbTtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxO1xuXHRcdFx0Y29sb3I6ICRjb2xvci10ZXh0O1xuXHRcdH1cblxuXHRcdCZfX21hcmtlciB7XG5cdFx0XHRmbGV4LXNocmluazogMDtcblx0XHRcdHdpZHRoOiAwLjg3NXJlbTtcblx0XHRcdGhlaWdodDogMC44NzVyZW07XG5cdFx0XHRib3JkZXItcmFkaXVzOiA1MCU7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItZ3JleXNjYWxlLTUwMDtcblx0XHR9XG5cblx0XHQmX19pdGVtW2RhdGEtdHlwZT0nbG9jYXRpb24nXSAjeyZ9X19tYXJrZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXByaW1hcnk7XG5cdFx0fVxuXG5cdFx0Jl9faXRlbVtkYXRhLXR5cGU9J3Nob3AnXSAjeyZ9X19tYXJrZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXNlY29uZGFyeTtcblx0XHR9XG5cdH1cblxuXHQvLyAtLS0gUG9wdXAgY2FyZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXHQmX19jYXJkIHtcblx0XHQtLV9wYWQ6IDEuMTI1cmVtO1xuXG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGdhcDogMC41cmVtO1xuXHRcdG1pbi13aWR0aDogMTJyZW07XG5cdFx0bWF4LXdpZHRoOiAxNnJlbTtcblx0XHRwYWRkaW5nOiB2YXIoLS1fcGFkKTtcblx0XHRmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LWJhc2U7XG5cblx0XHQmX19sYWJlbCB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR0b3A6IDA7XG5cdFx0XHRsZWZ0OiAxcmVtO1xuXHRcdFx0aGVpZ2h0OiA0OHB4O1xuXHRcdFx0XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGdhcDogLjVyZW07XG5cdFx0XHRjb2xvcjogd2hpdGU7XG5cdFx0XHRmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LWFjY2VudDtcblx0XHR9XG5cblx0XHQmX190aXRsZSB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LWRpc3BsYXk7XG5cdFx0XHRmb250LXdlaWdodDogNzAwO1xuXHRcdFx0Zm9udC1zaXplOiAxLjEyNXJlbTtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxLjI7XG5cdFx0XHRjb2xvcjogJGNvbG9yLXByaW1hcnk7XG5cdFx0fVxuXG5cdFx0Jl9fYWRkcmVzcyB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRmb250LXNpemU6IDAuODc1cmVtO1xuXHRcdFx0Y29sb3I6ICRjb2xvci10ZXh0O1xuXHRcdH1cblxuXHRcdCZfX2xpbmsge1xuXHRcdFx0YWxpZ24tc2VsZjogZmxleC1zdGFydDtcblx0XHRcdG1hcmdpbi10b3A6IDAuMjVyZW07XG5cdFx0XHRmb250LXNpemU6IDAuODc1cmVtO1xuXHRcdH1cblx0fVxuXG5cdC8vIC0tLSBFcnJvciBzdGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXHQmLmhhcy1lcnJvciAjeyRwYXJlbnR9X19jYW52YXMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRwYWRkaW5nOiAycmVtO1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblxuXHRcdCY6OmFmdGVyIHtcblx0XHRcdGNvbnRlbnQ6IGF0dHIoZGF0YS1lcnJvcik7XG5cdFx0XHRjb2xvcjogJGNvbG9yLXByaW1hcnk7XG5cdFx0XHRmb250LXNpemU6IDAuODc1cmVtO1xuXHRcdH1cblx0fVxufVxuIiwiQHVzZSAnLi4vYWJzdHJhY3RzJyBhcyAqO1xuXG4uY29udGFjdC1kZXRhaWxzIHtcblx0ZGlzcGxheTogZ3JpZDtcblx0Z2FwOiAwLjM3NWVtO1xuXHRmb250LXN0eWxlOiBub3JtYWw7XG5cblx0Jl9faXRlbSB7XG5cdFx0ZGlzcGxheTogZ3JpZDtcblx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFlbSAxZnI7XG5cdFx0Y29sdW1uLWdhcDogMC42MjVlbTtcblx0XHRhbGlnbi1pdGVtczogYmFzZWxpbmU7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdG92ZXJmbG93LXdyYXA6IGFueXdoZXJlO1xuXG5cdFx0aSB7XG5cdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHRjb2xvcjogJGNvbG9yLXByaW1hcnk7XG5cdFx0XHRmb250LXNpemU6IC44NzVlbTtcblx0XHR9XG5cdH1cblxuXHRociB7XG5cdFx0bWFyZ2luLWJsb2NrOiAuNXJlbTtcblx0XHRib3JkZXItYm90dG9tOiAxcHggZGFzaGVkIHZhcigtLXNlY29uZGFyeSk7XG5cdFx0b3BhY2l0eTogLjU7XG5cdH1cblxuXHQvKiBEYXkgfCBob3VycyAqL1xuXHQmX19ob3VycyB7XG5cdFx0ZGlzcGxheTogZ3JpZDtcblx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gMWZyO1xuXHRcdGdhcDogMC4yZW0gMWVtO1xuXHRcdG1hcmdpbjogMDtcblxuXHRcdGR0OjpmaXJzdC1sZXR0ZXIge1xuXHRcdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHR9XG5cdFx0ZGQge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblx0XHRociB7XG5cdFx0XHRncmlkLWNvbHVtbjogMSAvIC0xO1xuXHRcdFx0Ym9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZCAkY29sb3ItYm9yZGVyO1xuXHRcdFx0bWFyZ2luLWJsb2NrOiAwO1xuXG5cdFx0XHQmOmxhc3QtY2hpbGQge1xuXHRcdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdEBhdC1yb290IGEjeyZ9X19pdGVtIHtcblx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cblx0XHQmOmhvdmVyIHNwYW4sXG5cdFx0Jjpmb2N1cy12aXNpYmxlIHNwYW4ge1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG5cdFx0fVxuXHR9XG59XG4iLCJAdXNlICcuLi9hYnN0cmFjdHMnIGFzICo7XG5cbi5ub3RpY2VzIHtcblx0ZGlzcGxheTogZmxleDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdGZsZXgtd3JhcDogd3JhcDtcblx0Z2FwOiAwLjVlbSAxLjVlbTtcblxuXHRwYWRkaW5nOiAuODc1cmVtIDEuNXJlbTtcblxuXHRjb2xvcjogJGNvbG9yLXdoaXRlO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItcHJpbWFyeTtcblx0Ym9yZGVyLXJhZGl1czogMC4zNzVyZW07XG5cblx0QGluY2x1ZGUgbXFVbnRpbCgnbWVkaXVtJykge1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cblx0XHQmX19zZXBhcmF0b3Ige1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHR9XG5cdH1cblxuXHQmX19pdGVtIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcblx0XHRnYXA6IDAuNWVtO1xuXHRcdG1hcmdpbjogMDtcblx0XHRmb250LXdlaWdodDogNTAwO1xuXG5cdFx0YnJlYWstaW5zaWRlOiBhdm9pZDtcblxuXHRcdGkge1xuXHRcdFx0Zm9udC1zdHlsZTogbm9ybWFsO1xuXHRcdH1cblxuXHRcdHNtYWxsIHtcblx0XHRcdGZvbnQtd2VpZ2h0OiAzMDA7XG5cdFx0XHRmb250LXNpemU6IDAuNzVlbTtcblx0XHR9XG5cdH1cblxuXHQvLyBTZWxmLWF3YXJlIHNwYWNpbmdcblx0JjpoYXMoKyAqKSB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMi41cmVtO1xuXHR9XG5cdCY6bm90KDpmaXJzdC1jaGlsZCkge1xuXHRcdG1hcmdpbi10b3A6IDEuNXJlbTtcblx0fVxufVxuIiwiQHVzZSAnLi4vYWJzdHJhY3RzJyBhcyAqO1xuXG5cbi5mYy10ZXh0IHtcblx0LmNvbnRhaW5lciA+ICoge1xuXHRcdG1heC13aWR0aDogNzJjaDtcblx0fVxufVxuXG4uZmMtcXVvdGUge1xuXHQmX19pbm5lciB7XG5cdFx0cGFkZGluZy1pbmxpbmUtc3RhcnQ6IDEuNXJlbTtcblx0XHRib3JkZXItaW5saW5lLXN0YXJ0OiA0cHggc29saWQgJGNvbG9yLXNlY29uZGFyeTtcblx0fVxuXG5cdCZfX3RleHQge1xuXHRcdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS0zO1xuXHRcdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0XHR0ZXh0LXdyYXA6IGJhbGFuY2U7XG5cdH1cblxuXHQmX19hdXRob3Ige1xuXHRcdG1hcmdpbi1ibG9jay1zdGFydDogLjc1cmVtO1xuXHRcdGNvbG9yOiAkY29sb3ItZ3JleXNjYWxlLTYwMDtcblx0fVxufVxuXG4uZmMtYmFkZ2Uge1xuXHQmX19pbm5lciB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMS41cmVtO1xuXG5cdFx0bWF4LXdpZHRoOiA1MGNoO1xuXHRcdHBhZGRpbmc6IC44NzVyZW0gMS41cmVtO1xuXHRcdGNvbG9yOiAkY29sb3Itd2hpdGU7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXByaW1hcnk7XG5cdFx0Ym9yZGVyLXJhZGl1czogMC4zNzVyZW07XG5cblx0XHRhIHtcblx0XHRcdCY6aG92ZXIsICY6Zm9jdXMge1xuXHRcdFx0XHRjb2xvcjogJGNvbG9yLWFjY2VudDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQmX19sb2dvIHtcblx0XHRoZWlnaHQ6IDZyZW07XG5cdFx0ZmxleDogMCAwIGF1dG87XG5cblx0XHRpbWcge1xuXHRcdFx0d2lkdGg6IGF1dG87XG5cdFx0XHRvYmplY3QtZml0OiBjb250YWluO1xuXHRcdH1cblx0fVxufVxuXG4uZmMtZW1iZWQge1xuXHRpZnJhbWUsXG5cdHZpZGVvLFxuXHRpbWcge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdG1heC13aWR0aDogMTAwJTtcblx0fVxuXG5cdGlmcmFtZSB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0aGVpZ2h0OiBhdXRvO1xuXHRcdGJvcmRlcjogbm9uZTtcblx0fVxufVxuXG4vLyBTbGljayBjYXJvdXNlbDsgcmlnaHQtc2lkZSBibGVlZCBtaXJyb3JzIF9wcm9kdWN0LXNsaWRlci5zY3NzXG4uZmMtaW1hZ2UtZ2FsbGVyeSB7XG5cdCZfX3NsaWRlciB7XG5cdFx0ZGlzcGxheTogZ3JpZCAhaW1wb3J0YW50OyAvKiBGaXggZm9yIFNsaWNrIGxpdmluZyBpbnNpZGUgYSBncmlkL2ZsZXggY29sdW1uICovXG5cdFx0bWFyZ2luOiAwO1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0bGlzdC1zdHlsZTogbm9uZTtcblxuXHRcdC5zbGljay1saXN0IHtcblx0XHRcdG1pbi13aWR0aDogMDsgLyogRml4IGZvciBTbGljayBvdmVyZmxvdyBpc3N1ZSBpbnNpZGUgYSBncmlkICovXG5cdFx0XHRvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuXHRcdFx0bWFyZ2luLWlubGluZTogLTAuNXJlbTtcblx0XHRcdHBhZGRpbmctcmlnaHQ6IDNyZW07IC8qIHBlZWsgdGhlIG5leHQgaW1hZ2UgKi9cblxuXHRcdFx0QGluY2x1ZGUgbXFVbnRpbCgnc21hbGwnKSB7XG5cdFx0XHRcdHBhZGRpbmctcmlnaHQ6IDE4JTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQuc2xpY2stc2xpZGUge1xuXHRcdFx0bWFyZ2luLWlubGluZTogMC41cmVtO1xuXHRcdH1cblx0fVxuXG5cdCZfX3NsaWRlIC5pbWFnZS13cmFwcGVyIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHR9XG5cblx0Jl9fZG90cyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRtYXJnaW4tdG9wOiAycmVtO1xuXG5cdFx0JjplbXB0eSB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblx0fVxufVxuIiwiQHVzZSAnLi4vYWJzdHJhY3RzJyBhcyAqO1xyXG5AdXNlICcuLi9jb21wb25lbnRzL2J1dHRvbnMnIGFzICo7XHJcblxyXG4ud29vY29tbWVyY2UtcGFnZSB7XHJcblx0LS13cC0tcHJlc2V0LS1mb250LXNpemUtLXNtYWxsOiAxNXB4O1xyXG59XHJcblxyXG5hLndwLWVsZW1lbnQtYnV0dG9uIHtcclxuXHRAZXh0ZW5kIC5idXR0b247XHJcblx0QGV4dGVuZCAuYnV0dG9uLS1zZWNvbmRhcnk7XHJcbn1cclxuXHJcbi8vIFByb2R1Y3Qgc2luZ2xlIHBhZ2VcclxuLndvb2NvbW1lcmNlLXByb2R1Y3QtYXR0cmlidXRlcy1pdGVtIHtcclxuXHQmX19sYWJlbCB7XHJcblx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xyXG5cdH1cclxuXHR0aCwgdGQge1xyXG5cdFx0YmFja2dyb3VuZDogbm9uZSAhaW1wb3J0YW50O1xyXG5cdH1cclxufVxyXG5cclxuXHJcbi8vIENhcnRcclxuLndjLWJsb2NrLWNhcnRfX2VtcHR5LWNhcnRfX3RpdGxlLndpdGgtZW1wdHktY2FydC1pY29uIHtcclxuXHRmb250LXNpemU6ICRmb250LXNpemUtMjtcclxuXHRmb250LXdlaWdodDogNTAwO1xyXG5cclxuXHQmOmJlZm9yZSB7XHJcblx0XHRtYXNrLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzU3NicgaGVpZ2h0PSc1MTInIHZpZXdCb3g9JzAgMCA1NzYgNTEyJyUzRSUzQ3RpdGxlJTNFY2FydC1zaG9wcGluZyUzQy90aXRsZSUzRSUzQ2cgZmlsbD0nJTIzMjEyMTIxJyUzRSUzQ3BhdGggZD0nTTE2IDBDNy4yIDAgMCA3LjIgMCAxNnM3LjIgMTYgMTYgMTZsMzcuOSAwYzcuNiAwIDE0LjIgNS4zIDE1LjcgMTIuOGw1OC45IDI4OGM2LjEgMjkuOCAzMi4zIDUxLjIgNjIuNyA1MS4yTDQ5NiAzODRjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZsLTMwNC44IDBjLTE1LjIgMC0yOC4zLTEwLjctMzEuNC0yNS42TDE1MiAyODhsMzE0LjYgMGMyOS40IDAgNTUtMjAgNjIuMS00OC41TDU3MC42IDcxLjhjNS0yMC4yLTEwLjItMzkuOC0zMS0zOS44TDk5LjEgMzJDOTIuNSAxMyA3NC40IDAgNTMuOSAwTDE2IDB6bTkwLjEgNjRsNDMzLjQgMEw0OTcuNiAyMzEuOEM0OTQgMjQ2IDQ4MS4yIDI1NiA0NjYuNSAyNTZsLTMyMS4xIDBMMTA2LjEgNjR6TTE2OCA0NTZhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHptODAgMGE1NiA1NiAwIDEgMCAtMTEyIDAgNTYgNTYgMCAxIDAgMTEyIDB6bTIwMC0yNGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTAgODBhNTYgNTYgMCAxIDAgMC0xMTIgNTYgNTYgMCAxIDAgMCAxMTJ6JyUzRSUzQy9wYXRoJTNFJTNDL2clM0UlM0Mvc3ZnJTNFXCIpO1xyXG5cdFx0bWFzay1zaXplOiBjb250YWluO1xyXG5cdFx0bWFzay1wb3NpdGlvbjogY2VudGVyO1xyXG5cdFx0bWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6IGN1cnJlbnRDb2xvcjtcclxuXHRcdG1hcmdpbjogMWVtIGF1dG8gMmVtO1xyXG5cdFx0aGVpZ2h0OiA0cmVtO1xyXG5cdH1cclxufVxyXG5cclxuLy8gQ2hlY2tvdXRcclxuLndjLWJsb2NrLWNoZWNrb3V0IHtcclxuXHQud2MtYmxvY2stY29tcG9uZW50cy1sb2NhbC1waWNrdXAtc2VsZWN0IHtcclxuXHRcdC53Yy1ibG9jay1jb21wb25lbnRzLXJhZGlvLWNvbnRyb2xfX2xhYmVsIHtcclxuXHRcdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XHJcblx0XHR9IFxyXG5cdH1cclxuXHJcblx0LndjLWJsb2NrLWNoZWNrb3V0X190ZXJtcyB7XHJcblx0XHRhIHtcclxuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQmX19zaWRlYmFyIHtcclxuXHRcdC53Yy1ibG9jay1jb21wb25lbnRzLXByb2R1Y3QtbmFtZSB7XHJcblx0XHRcdGZsZXgtZ3JvdzogMDtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuXHJcbi8vIENoZWNrb3V0ICYgQ2FydFxyXG4ud2MtYmxvY2stY29tcG9uZW50cy1wcm9kdWN0IHtcclxuXHQmLWRldGFpbHMge1xyXG5cdFx0Zm9udC1zdHlsZTogaXRhbGljO1xyXG5cdH1cclxuXHQmLW1ldGFkYXRhX19kZXNjcmlwdGlvbiB7XHJcblx0XHRkaXNwbGF5OiBub25lO1xyXG5cdH1cclxufVxyXG5cclxuXHJcbi8vIFdQQyBBZGRlZCB0byBDYXJ0IE5vdGlmaWNhdGlvblxyXG4ud29vYWMge1xyXG5cdCYtcG9wdXAge1xyXG5cdFx0Lndvb2FjLWFjdGlvbiB7XHJcblx0XHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRcdGdhcDogLjVyZW07XHJcblx0XHRcdGZsZXgtd3JhcDogd3JhcDtcclxuXHRcdFx0bWFyZ2luLWlubGluZTogMDtcclxuXHJcblx0XHRcdGEge1xyXG5cdFx0XHRcdG1hcmdpbi1pbmxpbmU6IDA7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcbn1cclxuXHJcblxyXG4vLyBXUEMgUHJvZHVjdCBPcHRpb25zOiBoaWRlIHRoZSBsaXZlIFwiU3VidG90YWw6IOKCrHhcIiBib3ggdGhlIHBsdWdpbiBhcHBlbmRzXHJcbi8vIGFmdGVyIHRoZSBvcHRpb24gZmllbGRzIChzaW5nbGUgcHJvZHVjdCBwYWdlKS4gTGVmdCB0byB0aGUgcGx1Z2luJ3MgSlMgdG9cclxuLy8ga2VlcCBjb21wdXRpbmcsIGp1c3Qgbm90IHNob3duIOKAlCBzZWUgbGliL3dvb2NvbW1lcmNlL2FkZC10by1jYXJ0LnBocC5cclxuLndwY3BvLXRvdGFsIHtcclxuXHRkaXNwbGF5OiBub25lO1xyXG59IiwiQHVzZSAnLi4vYWJzdHJhY3RzJyBhcyAqO1xuXG4vKipcbiAqIFNoYXJlZCBXb29Db21tZXJjZSBwcm9kdWN0LWNhcmQgbG9vayAod29vY29tbWVyY2UvY29udGVudC1wcm9kdWN0LnBocCksXG4gKiB1c2VkIGJ5IHRoZSBzaG9wIGdyaWQgKF9zaG9wLnNjc3MpLCByZWxhdGVkL3VwLXNlbGwgbGlzdHMgYW5kIHRoZSBob21lLXBhZ2VcbiAqIHNsaWRlciAoX3Byb2R1Y3Qtc2xpZGVyLnNjc3MpLiBDb250ZXh0IGZpbGVzIG9ubHkgYWRkIGxheW91dC9iZWhhdmlvdXIuXG4gKlxuICogVGhlIGAud29vY29tbWVyY2Ug4oCmYCBicmFuY2ggaXMgdGhlcmUgdG8gb3V0cmFuayB3b29jb21tZXJjZS5jc3Mgb24gdGhlIHNob3A7XG4gKiB0aGUgYmFyZSBgdWwucHJvZHVjdHMg4oCmYCBicmFuY2ggY292ZXJzIHRoZSBzbGlkZXIgKG91dHNpZGUgYW55IC53b29jb21tZXJjZSkuXG4gKi9cblxuLyogS2lsbCB3b29jb21tZXJjZS5jc3MncyBmbG9hdCBjbGVhcmZpeCDigJQgdGhlIHBzZXVkby1ib3hlcyBiZWNvbWUgcGhhbnRvbSBncmlkIGNlbGxzLiAqL1xuLndvb2NvbW1lcmNlIHVsLnByb2R1Y3RzOjpiZWZvcmUsXG4ud29vY29tbWVyY2UgdWwucHJvZHVjdHM6OmFmdGVyLFxudWwucHJvZHVjdHM6OmJlZm9yZSxcbnVsLnByb2R1Y3RzOjphZnRlciB7XG5cdGNvbnRlbnQ6IG5vbmU7XG59XG5cbi53b29jb21tZXJjZSB1bC5wcm9kdWN0cyBsaS5wcm9kdWN0LFxudWwucHJvZHVjdHMgbGkucHJvZHVjdCB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHRkaXNwbGF5OiBmbGV4O1xuXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRnYXA6IC4yNXJlbTtcblxuXHRtYXJnaW46IDA7XG5cdHRleHQtYWxpZ246IGxlZnQ7XG5cblx0YS53b29jb21tZXJjZS1sb29wLXByb2R1Y3RfX2xpbmsgeyAvKiBgYWAgdG8gb3V0cmFuayB3b29jb21tZXJjZS5jc3MncyBgYS53b29jb21tZXJjZS1sb29wLXByb2R1Y3RfX2xpbmsgeyBkaXNwbGF5OiBibG9jayB9YCAqL1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRnYXA6IC43NXJlbTtcblxuXHRcdGNvbG9yOiBpbmhlcml0O1xuXHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuXHRcdGltZyB7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdGhlaWdodDogYXV0bztcblx0XHRcdGFzcGVjdC1yYXRpbzogMTtcblx0XHRcdG1hcmdpbjogMDsgLyogd29vY29tbWVyY2UuY3NzIHNldHMgMCAwIDFlbSAqL1xuXG5cdFx0XHRvYmplY3QtZml0OiBjb250YWluO1xuXHRcdH1cblx0fVxuXG5cdC53b29jb21tZXJjZS1sb29wLXByb2R1Y3RfX3RpdGxlIHtcblx0XHRwYWRkaW5nOiAwO1xuXG5cdFx0Zm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1kaXNwbGF5O1xuXHRcdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS0xO1xuXHRcdGZvbnQtd2VpZ2h0OiA3MDA7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IC0wLjAxMjVyZW07XG5cdFx0Y29sb3I6ICRjb2xvci1wcmltYXJ5LWRhcms7XG5cdH1cblxuXHQucHJpY2Uge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdG1hcmdpbjogMDsgLyogd29vY29tbWVyY2UuY3NzIHNldHMgbWFyZ2luLWJvdHRvbTogLjVlbSAqLyBcblx0XHRcblx0XHRmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LWFjY2VudDtcblx0XHRmb250LXZhcmlhbnQtbnVtZXJpYzogbGluaW5nLW51bXMgdGFidWxhci1udW1zO1xuXHRcdFxuICAgIFx0Y29sb3I6ICRjb2xvci1wcmltYXJ5O1xuXG5cdFx0LyogTnVkZ2UgdXAgdG8gdGlnaHRlbiB0aGUgZ2FwIHVuZGVyIHRoZSB0aXRsZSBpbnNpZGUgdGhlIHRyYWNrLiAqL1xuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtLjVyZW0pO1xuXG5cdFx0QGluY2x1ZGUgbXFVbnRpbCgnc21hbGwnKSB7XG5cdFx0XHRmb250LXNpemU6ICRmb250LXNpemUtLTE7XG5cdFx0fVxuXHR9XG5cblx0LnByb2R1Y3QtdGFncyB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdGluc2V0LWJsb2NrLXN0YXJ0OiAwO1xuXHRcdGluc2V0LWlubGluZS1zdGFydDogMDtcblx0XHR6LWluZGV4OiAxO1xuXG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0Z2FwOiAuMjVyZW07XG5cblx0XHRtYXJnaW46IDA7XG5cdFx0cGFkZGluZzogMDtcblx0XHRsaXN0LXN0eWxlOiBub25lO1xuXG5cdFx0JjpiZWZvcmUsXG5cdFx0JjphZnRlciB7XG5cdFx0XHRjb250ZW50OiBub25lO1xuXHRcdH1cblx0fVxuXG5cdC5wcm9kdWN0LXRhZ3NfX3RhZyB7XG5cdFx0cGFkZGluZzogLjEyNXJlbSAuNXJlbTtcblxuXHRcdGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktYWNjZW50O1xuXHRcdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS0tMTtcblx0XHRsaW5lLWhlaWdodDogMS40O1xuXG5cdFx0YmFja2dyb3VuZDogJGNvbG9yLWFjY2VudDtcblx0XHRjb2xvcjogJGNvbG9yLXByaW1hcnktZGFyaztcblx0fVxuXG5cdC5vbnNhbGUge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRpbnNldC1ibG9jay1zdGFydDogMDtcblx0XHRpbnNldC1pbmxpbmUtZW5kOiAwO1xuXG5cdFx0cGFkZGluZzogLjEyNXJlbSAuNXJlbTtcblxuXHRcdGJhY2tncm91bmQ6ICRjb2xvci1zZWNvbmRhcnk7XG5cdFx0Y29sb3I6ICRjb2xvci13aGl0ZTtcblx0fVxuXG5cdC5sb29wLWFkZC10by1jYXJ0IHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0bWFyZ2luLXRvcDogLjc1cmVtO1xuXHRcdHRyYW5zaXRpb246IG9wYWNpdHkgLjI1cyBlYXNlLWluLW91dDtcblxuXHRcdC8qIFdvb0NvbW1lcmNlJ3MgQUpBWCBcIlZpZXcgY2FydFwiIGxpbmsgKi9cblx0XHRhLmFkZGVkX3RvX2NhcnQge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0aW5zZXQtYmxvY2stc3RhcnQ6IGNhbGMoMTAwJSArIC4yNXJlbSk7XG5cdFx0XHRpbnNldC1pbmxpbmUtc3RhcnQ6IDA7XG5cdFx0XHRvcGFjaXR5OiAwO1xuXHRcdH1cblxuXHRcdC5idXR0b24ge1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0XHRtYXJnaW46IDAgIWltcG9ydGFudDtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0XHRwYWRkaW5nLWlubGluZTogLjVyZW07XG5cdFx0fVxuXHR9XG5cblx0LyogSG92ZXItY2FwYWJsZSBkZXZpY2VzOiByZXZlYWwgdGhlIGFkZC10by1jYXJ0IG9uIGhvdmVyIC8ga2V5Ym9hcmQgZm9jdXMgb25seS5cblx0ICAgVG91Y2ggZGV2aWNlcyBhbHdheXMgc2hvdyBpdCAodGhlIHNsaWRlciBhZGRzIGl0cyBvd24gb2ZmLXNsaWRlIG92ZXJyaWRlKS4gKi9cblx0QG1lZGlhIChob3ZlcjogaG92ZXIpIHtcblx0XHQubG9vcC1hZGQtdG8tY2FydDpub3QoOmhhcyguYWRkZWRfdG9fY2FydCkpIHtcblx0XHRcdG9wYWNpdHk6IDA7XG5cdFx0fVxuXG5cdFx0Jjpob3ZlciAubG9vcC1hZGQtdG8tY2FydCxcblx0XHQmOmZvY3VzLXdpdGhpbiAubG9vcC1hZGQtdG8tY2FydCB7XG5cdFx0XHRvcGFjaXR5OiAxO1xuXHRcdH1cblx0fVxufVxuIiwiQHVzZSAnLi4vYWJzdHJhY3RzJyBhcyAqO1xyXG5cclxuLndwY3BvLW9wdGlvbnMge1xyXG5cdGRpc3BsYXk6IGZsZXg7XHJcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuXHRhbGlnbi1pdGVtczogc3RhcnQ7XHJcblx0Z2FwOiAxcmVtO1xyXG5cdG1hcmdpbi1ib3R0b206IDEuNXJlbTtcclxuXHJcblx0LmZvcm0tcm93IHtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRmbGV4LXdyYXA6IHdyYXA7XHJcblx0XHRnYXA6IDFyZW07XHJcblx0XHRwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XHJcblx0fVxyXG5cdC53cGNwby1vcHRpb24ge1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcblx0XHRnYXA6IC4zNzVyZW07XHJcblxyXG5cdFx0bGFiZWwge1xyXG5cdFx0XHRmb250LXNpemU6ICRmb250LXNpemUtMTtcclxuXHRcdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdFx0YWxpZ24taXRlbXM6IGJhc2VsaW5lO1xyXG5cdFx0XHRnYXA6IDAuNXJlbTtcclxuXHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xyXG5cclxuXHRcdFx0bGluZS1oZWlnaHQ6IDEuMTUgIWltcG9ydGFudDtcclxuXHRcdFx0cGFkZGluZzogMC41cmVtIDFyZW07XHJcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xKTtcclxuXHRcdFx0Ym9yZGVyLXJhZGl1czogOTlweDtcclxuXHRcdFx0b3V0bGluZS1vZmZzZXQ6IC4yNXJlbTtcclxuXHJcblx0XHRcdGlucHV0IHtcclxuXHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHRcdFx0b3BhY2l0eTogMDtcclxuXHRcdFx0XHRwb2ludGVyLWV2ZW50czogbm9uZTtcclxuXHRcdFx0fVxyXG5cdFx0XHQmOmJlZm9yZSB7XHJcblx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdFx0XHRcdHdpZHRoOiAxcmVtO1xyXG5cdFx0XHRcdGZvbnQtc2l6ZTogMXJlbTtcclxuXHRcdFx0XHRmb250LXdlaWdodDogMzAwO1xyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktaWNvbnM7XHJcblx0XHRcdFx0LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcclxuXHRcdFx0XHQtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcclxuXHRcdFx0XHRkaXNwbGF5OiB2YXIoLS1mYS1kaXNwbGF5LCBpbmxpbmUtYmxvY2spO1xyXG5cdFx0XHRcdGZvbnQtc3R5bGU6IG5vcm1hbDtcclxuXHRcdFx0XHRmb250LXZhcmlhbnQ6IG5vcm1hbDtcclxuXHRcdFx0XHRsaW5lLWhlaWdodDogMTtcclxuXHRcdFx0XHR0ZXh0LXJlbmRlcmluZzogYXV0bztcclxuXHRcdFx0fVxyXG5cdFx0XHQmOmhhcyhpbnB1dFt2YWx1ZT1cImJvbmVuXCJdKTpiZWZvcmUge1xyXG5cdFx0XHRcdGNvbnRlbnQ6ICdcXGUxM2YnO1xyXG5cdFx0XHR9XHJcblx0XHRcdCY6aGFzKGlucHV0W3ZhbHVlPVwiZ2VtYWxlblwiXSk6YmVmb3JlIHtcclxuXHRcdFx0XHRjb250ZW50OiAnXFxlMDAyJztcclxuXHRcdFx0fVxyXG5cdFx0XHQmOmhhcyhpbnB1dDpjaGVja2VkKSB7XHJcblx0XHRcdFx0Y29sb3I6ICRjb2xvci1zZWNvbmRhcnk7XHJcblx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAkY29sb3Itc2Vjb25kYXJ5O1xyXG5cdFx0XHR9XHJcblx0XHRcdCY6aGFzKGlucHV0OmZvY3VzLXZpc2libGUpIHtcclxuXHRcdFx0XHRvdXRsaW5lOiAxcHggZG90dGVkICRjb2xvci1zZWNvbmRhcnk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdCYgPiBzcGFuOmhhcygubGFiZWwtcHJpY2U6ZW1wdHkpIHtcclxuXHRcdFx0XHRkaXNwbGF5OiBub25lO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0Ji53cGNwby1oYXMtZXJyb3Ige1xyXG5cdFx0XHRvdXRsaW5lOiAxcHggZGFzaGVkIHRyYW5zcGFyZW50O1xyXG5cdFx0XHRvdXRsaW5lLW9mZnNldDogLjVyZW07XHJcblx0XHRcdGJvcmRlci1yYWRpdXM6IC41cmVtO1xyXG5cclxuXHRcdFx0bGFiZWwge1xyXG5cdFx0XHRcdGNvbG9yOiBpbmhlcml0O1xyXG5cdFx0XHR9XHJcblx0XHRcdC53cGNwby1vcHRpb24tbmFtZSB7XHJcblx0XHRcdFx0Y29sb3I6IHZhcigtLXdwY3BvLWVycm9yKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0Ji53cGNwby1mbGFzaCB7XHJcblx0XHRcdHRyYW5zaXRpb246IG91dGxpbmUtY29sb3IgMXMgZWFzZS1pbi1vdXQ7XHJcblx0XHRcdGFuaW1hdGlvbjogd3BjcG8tZXJyb3ItZmxhc2ggMXMgZWFzZS1pbi1vdXQgMjtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuXHJcbi8vIFBsdWdpbiBzZXRzIHBvaW50ZXItZXZlbnRzOiBub25lOyByZS1lbmFibGUgc28gY2xpY2tzIGNhbiB0cmlnZ2VyIHRoZSBmbGFzaC5cclxuLnNpbmdsZV9hZGRfdG9fY2FydF9idXR0b24ud3BjcG8tZGlzYWJsZWQge1xyXG5cdHBvaW50ZXItZXZlbnRzOiBhdXRvICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgd3BjcG8tZXJyb3ItZmxhc2gge1xyXG5cdDAlLCAxMDAlIHtcclxuXHRcdG91dGxpbmUtY29sb3I6IHRyYW5zcGFyZW50O1xyXG5cdH1cclxuXHQ1MCUge1xyXG5cdFx0b3V0bGluZS1jb2xvcjogdmFyKC0td3BjcG8tZXJyb3IpO1xyXG5cdH1cclxufSIsIkB1c2UgJy4uL2Fic3RyYWN0cycgYXMgKjtcblxuLyoqXG4gKiBTaG9wIGFyY2hpdmUgKyBzaW5nbGUgcHJvZHVjdCBsYXlvdXQuXG4gKiBXcmFwcGVyczogbGliL3dvb2NvbW1lcmNlL2Z1bmN0aW9ucy5waHAgKF90aGVtZW5hbWVfd29vY29tbWVyY2Vfd3JhcHBlcl9zdGFydClcbiAqIFRlbXBsYXRlczogd29vY29tbWVyY2UvYXJjaGl2ZS1wcm9kdWN0LnBocCwgd29vY29tbWVyY2Uvc2luZ2xlLXByb2R1Y3QucGhwXG4gKlxuICogVGhlIHByb2R1Y3QtY2FyZCBsb29rIGlzIHNoYXJlZCDigJQgc2VlIF9wcm9kdWN0LnNjc3MuIFRoaXMgZmlsZSBvbmx5IGhhbmRsZXNcbiAqIHRoZSBhcmNoaXZlIGNocm9tZSAoaGVhZGVyLCBvcmRlcmluZywgZ3JpZCwgcGFnaW5hdGlvbikgYW5kIHRoZSBzaW5nbGUgdmlldy5cbiAqL1xuXG4uc2hvcCB7XG5cblx0LyogQnJlYWRjcnVtYiArIHByb2R1Y3RzIGhlYWRlciwgZnVsbCB3aWR0aCBhYm92ZSB0aGUgc2lkZWJhci9ncmlkICovXG5cdC5zaG9wX19oZWFkIHtcblx0XHRtYXJnaW4tYm90dG9tOiBjbGFtcCgycmVtLCA1dncsIDMuNXJlbSk7XG5cdH1cblx0XG5cdC53b29jb21tZXJjZS1icmVhZGNydW1iIHtcblx0XHRjb2xvcjogJGNvbG9yLXByaW1hcnk7XG5cdFx0Zm9udC1zaXplOiAkZm9udC1zaXplLS0xO1xuXHRcdG1hcmdpbi1ibG9jazogY2xhbXAoMXJlbSwgMC41cmVtICsgMnZ3LCAycmVtKTtcblx0fVxuXG5cdC8qIFNpZGViYXIgKyBncmlkIGxheW91dCAod3JhcHBlcnM6IGxpYi93b29jb21tZXJjZS9mdW5jdGlvbnMucGhwKSAqL1xuXHQuc2hvcF9fbGF5b3V0IHtcblx0XHRAaW5jbHVkZSBtcSgnbWVkaXVtJykge1xuXHRcdFx0ZGlzcGxheTogZ3JpZDtcblx0XHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDNmcjtcblx0XHRcdGdhcDogY2xhbXAoMnJlbSwgNXZ3LCA0cmVtKTtcblx0XHRcdGFsaWduLWl0ZW1zOiBzdGFydDtcblx0XHR9XG5cdFx0LyogQmVsb3cgYG1lZGl1bWAgdGhlIGZpbHRlciBpcyBwb3NpdGlvbjpmaXhlZCAoc2VlIC5zaG9wLWZpbHRlciksIHNvIHRoZVxuXHRcdCAgIHNpZGViYXIgY29sbGFwc2VzIHRvIG5vdGhpbmcgYW5kIHRoZSBncmlkIGdpdmVzIHdheSB0byBub3JtYWwgZmxvdy4gKi9cblx0fVxuXG5cdC5zaG9wX19zaWRlYmFyIHtcblx0XHRAaW5jbHVkZSBtcSgnbWVkaXVtJykge1xuXHRcdFx0cG9zaXRpb246IHN0aWNreTtcblx0XHRcdGluc2V0LWJsb2NrLXN0YXJ0OiAycmVtO1xuXHRcdH1cblx0fVxuXG5cdC8qIEFyY2hpdmUgaGVhZGVyICh3b29jb21tZXJjZS9sb29wL2hlYWRlci5waHApIOKAlCBzcGFjaW5nIGhhbmRsZWQgYnkgLnNob3BfX2hlYWQgKi9cblx0Lndvb2NvbW1lcmNlLXByb2R1Y3RzLWhlYWRlciB7XG5cdFx0bWFyZ2luOiAwO1xuXHR9XG5cblx0Lndvb2NvbW1lcmNlLXByb2R1Y3RzLWhlYWRlcl9fdGl0bGUge1xuXHRcdG1hcmdpbjogMDtcblx0XHRmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LWRpc3BsYXk7XG5cdFx0Y29sb3I6ICRjb2xvci1wcmltYXJ5LWRhcms7XG5cdH1cblxuXHQvKiBQcm9kdWN0IGdyaWQgKHdvb2NvbW1lcmNlL2xvb3AvbG9vcC1zdGFydC5waHApICovXG5cdHVsLnByb2R1Y3RzIHtcblx0XHQtLXByb2R1Y3RzLWdyaWQtc2l6ZTogMTRyZW07XG5cblx0XHRkaXNwbGF5OiBncmlkO1xuXHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7IC8qIDItdXAgb24gbW9iaWxlICovXG5cdFx0Z2FwOiAxLjVyZW0gMXJlbTtcblxuXHRcdG1hcmdpbjogMDtcblx0XHRwYWRkaW5nOiAwO1xuXG5cdFx0bGlzdC1zdHlsZTogbm9uZTtcblxuXHRcdEBpbmNsdWRlIG1xKCdzbWFsbCcpIHtcblx0XHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KG1pbih2YXIoLS1wcm9kdWN0cy1ncmlkLXNpemUpLCAxMDAlKSwgMWZyKSk7XG5cdFx0XHRnYXA6IDNyZW0gMnJlbTtcblx0XHR9XG5cblx0XHRcblx0XHQubG9vcC1hZGQtdG8tY2FydCB7XG5cdFx0XHRAaW5jbHVkZSBtcVVudGlsKCdzbWFsbCcpIHtcblx0XHRcdFx0Zm9udC1zaXplOiAuNzVyZW07XG5cdFxuXHRcdFx0XHQuYnV0dG9uIHtcblx0XHRcdFx0XHRwYWRkaW5nOiAuMjVyZW0gLjVyZW07XG5cdFx0XHRcdFx0Zm9udC1zaXplOiAuNjI1cmVtO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyogUGFnaW5hdGlvbiAod29vY29tbWVyY2VfcGFnaW5hdGlvbikgKi9cblx0Lndvb2NvbW1lcmNlLXBhZ2luYXRpb24ge1xuXHRcdG1hcmdpbi1ibG9jay1zdGFydDogM3JlbTtcblxuXHRcdHVsIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0XHRnYXA6IC41cmVtO1xuXG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRwYWRkaW5nOiAwO1xuXG5cdFx0XHRib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcblx0XHRcdGxpc3Qtc3R5bGU6IG5vbmU7XG5cblx0XHRcdGxpIHtcblx0XHRcdFx0Ym9yZGVyOiBub25lICFpbXBvcnRhbnQ7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0YSxcblx0XHRzcGFuIHtcblx0XHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG5cdFx0XHRtaW4td2lkdGg6IDIuNXJlbTtcblx0XHRcdHBhZGRpbmc6IC41cmVtO1xuXG5cdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdFx0XHRiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuXG5cdFx0XHQmOmhvdmVyLCAmOmZvY3VzIHtcblx0XHRcdFx0Y29sb3I6ICRjb2xvci1zZWNvbmRhcnkgIWltcG9ydGFudDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQuY3VycmVudCB7XG5cdFx0XHRmb250LXdlaWdodDogNzAwO1xuXHRcdFx0Y29sb3I6ICRjb2xvci1zZWNvbmRhcnkgIWltcG9ydGFudDtcblx0XHR9XG5cdH1cbn1cblxuLyogU2luZ2xlIHByb2R1Y3QgKHdvb2NvbW1lcmNlL2NvbnRlbnQtc2luZ2xlLXByb2R1Y3QucGhwKSAqL1xuLnNpbmdsZS1wcm9kdWN0IHtcblxuXHRkaXYucHJvZHVjdCB7XG5cdFx0ZGlzcGxheTogZ3JpZDtcblx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDNmciA1ZnI7XG5cdFx0Z2FwOiAzcmVtO1xuXG5cdFx0QGluY2x1ZGUgbXFVbnRpbCgnbWVkaXVtJykge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0XHRnYXA6IDJyZW07XG5cdFx0fVxuXHR9XG5cblx0Lndvb2NvbW1lcmNlLXByb2R1Y3QtZ2FsbGVyeSB7XG5cdFx0Z3JpZC1yb3c6IHNwYW4gMjtcblxuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRtYXgtd2lkdGg6IDEwMCU7XG5cblx0XHRpbWcge1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRoZWlnaHQ6IGF1dG87XG5cdFx0fVxuXHR9XG5cblx0LnN1bW1hcnkge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRnYXA6IDFyZW07XG5cblx0XHQvKiBUYWdzIGFib3ZlIHRoZSB0aXRsZSAobGliL3dvb2NvbW1lcmNlL2Z1bmN0aW9ucy5waHApIOKAlCBzYW1lIHBpbGwgbG9vayBhc1xuXHRcdCAgIHRoZSBjYXJkIChfcHJvZHVjdC5zY3NzKSwgYnV0IGluIG5vcm1hbCBmbG93IGluc3RlYWQgb2Ygb3ZlciB0aGUgaW1hZ2UuICovXG5cdFx0LnByb2R1Y3QtdGFncyB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdFx0Z2FwOiAuMjVyZW07XG5cblx0XHRcdG1hcmdpbjogMDtcblx0XHRcdHBhZGRpbmc6IDA7XG5cdFx0XHRsaXN0LXN0eWxlOiBub25lO1xuXG5cdFx0XHQmOmJlZm9yZSxcblx0XHRcdCY6YWZ0ZXIge1xuXHRcdFx0XHRjb250ZW50OiBub25lO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5wcm9kdWN0LXRhZ3NfX3RhZyB7XG5cdFx0XHRwYWRkaW5nOiAuMTI1cmVtIC41cmVtO1xuXG5cdFx0XHRmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LWFjY2VudDtcblx0XHRcdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS0tMTtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxLjQ7XG5cblx0XHRcdGJhY2tncm91bmQ6ICRjb2xvci1hY2NlbnQ7XG5cdFx0XHRjb2xvcjogJGNvbG9yLXByaW1hcnktZGFyaztcblx0XHR9XG5cblx0XHQucHJvZHVjdF90aXRsZSB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LWRpc3BsYXk7XG5cdFx0XHRjb2xvcjogJGNvbG9yLXByaW1hcnktZGFyaztcblx0XHR9XG5cblx0XHQucHJpY2Uge1xuXHRcdFx0Zm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1hY2NlbnQ7XG5cdFx0XHRmb250LXNpemU6ICRmb250LXNpemUtMjtcblx0XHRcdGZvbnQtdmFyaWFudC1udW1lcmljOiBsaW5pbmctbnVtcyB0YWJ1bGFyLW51bXM7XG5cdFx0XHRjb2xvcjogJGNvbG9yLXByaW1hcnkgIWltcG9ydGFudDtcblxuXHRcdFx0LyogTnVkZ2UgdXAgdG8gdGlnaHRlbiB0aGUgZ2FwIHVuZGVyIHRoZSB0aXRsZSBpbnNpZGUgdGhlIHRyYWNrLiAqL1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0uNzVyZW0pO1xuXHRcdH1cblxuXHRcdGZvcm0uY2FydCB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdFx0Z2FwOiAuNXJlbTtcblxuXHRcdFx0bWFyZ2luOiAuNXJlbSAwO1xuXG5cdFx0XHQmLnZhcmlhdGlvbnNfZm9ybSB7XG5cdFx0XHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cblx0XHRcdFx0Lndvb2NvbW1lcmNlLXZhcmlhdGlvbi1hZGQtdG8tY2FydCB7XG5cdFx0XHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdFx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0XHRcdFx0Z2FwOiAuNXJlbTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQmOmJlZm9yZSxcblx0XHRcdCY6YWZ0ZXIge1xuXHRcdFx0XHRjb250ZW50OiBub25lICFpbXBvcnRhbnQ7XG5cdFx0XHR9XG5cblx0XHRcdC5idXR0b24ge1xuXHRcdFx0XHRmbG9hdDogbm9uZSAhaW1wb3J0YW50O1xuXHRcdFx0XHR2ZXJ0aWNhbC1hbGlnbjogdW5zZXQgIWltcG9ydGFudDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKiBUYWJzIHJlbmRlciBhcyBwbGFpbiBzdGFja2VkIHNlY3Rpb25zLCBub3QgYSBKUyB0YWIgc3dpdGNoZXIg4oCUIHNlZVxuXHQgICB3b29jb21tZXJjZS9zaW5nbGUtcHJvZHVjdC90YWJzL3RhYnMucGhwLiAqL1xuXHQucHJvZHVjdC1zZWN0aW9ucyB7XG5cdFx0Z3JpZC1yb3c6IDI7XG5cdFx0Z3JpZC1jb2x1bW46IDI7XG5cblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0Z2FwOiAycmVtO1xuXHR9XG5cblx0LnByb2R1Y3Qtc2VjdGlvbnNfX3NlY3Rpb24ge1xuXHRcdGgyIHtcblx0XHRcdGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktZGlzcGxheTtcblx0XHRcdGNvbG9yOiAkY29sb3ItcHJpbWFyeS1kYXJrO1xuXHRcdH1cblx0fVxuXG5cdC8qIFRhYnMgKyByZWxhdGVkIHByb2R1Y3RzIHNpdCBmdWxsLXdpZHRoIHVuZGVyIHRoZSB0d28gY29sdW1ucyAqL1xuXHQucmVsYXRlZC5wcm9kdWN0cyxcblx0LnVwLXNlbGxzLnByb2R1Y3RzIHtcblx0XHRncmlkLWNvbHVtbjogMSAvIC0xO1xuXHRcdG1hcmdpbi10b3A6IDJyZW07XG5cdH1cblxuXHQucmVsYXRlZC5wcm9kdWN0cyBoMixcblx0LnVwLXNlbGxzLnByb2R1Y3RzIGgyIHtcblx0XHRmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LWRpc3BsYXk7XG5cdFx0Y29sb3I6ICRjb2xvci1wcmltYXJ5LWRhcms7XG5cdH1cblxuXHQucmVsYXRlZC5wcm9kdWN0cyB1bC5wcm9kdWN0cyxcblx0LnVwLXNlbGxzLnByb2R1Y3RzIHVsLnByb2R1Y3RzIHtcblx0XHQtLXByb2R1Y3RzLWdyaWQtc2l6ZTogMTZyZW07XG5cblx0XHRtYXJnaW46IDEuNXJlbSAwIDA7XG5cdFx0cGFkZGluZzogMDtcblx0fVxufVxuIiwiQHVzZSAnLi4vYWJzdHJhY3RzJyBhcyAqO1xuXG4vKipcbiogU2hvcCBzaWRlYmFyIGZpbHRlciAod29vY29tbWVyY2UvZnVuY3Rpb25zLnBocDogX3RoZW1lbmFtZV9zaG9wX2NhdGVnb3J5X2ZpbHRlcikuXG4qIFR3byBncm91cHMg4oCUIHByb2R1Y3QgY2F0ZWdvcmllcyAoaGllcmFyY2hpY2FsLCBjaGlsZHJlbiBuZXN0ZWQgaW5cbiogLnNob3AtZmlsdGVyX19zdWJsaXN0KSBhbmQgcHJvZHVjdCB0YWdzIChmbGF0KS5cbiogQ29sbGFwc2libGUgPGRldGFpbHM+OiBwaW5uZWQgbmVhciB0aGUgYm90dG9tIG9mIHRoZSB2aWV3cG9ydCBhcyBhIGZsb2F0aW5nXG4qIFwiRmlsdGVyc1wiIHBhbmVsIG9uIG1vYmlsZSwgYSBwbGFpbiBzaWRlYmFyIGJsb2NrIGZyb20gYG1lZGl1bWAgdXAgKHdoZXJlXG4qIHNyYy9hc3NldHMvanMvY29tcG9uZW50cy9zaG9wLWZpbHRlci5qcyBmb3JjZXMgaXQgb3BlbiArIG5vbi1pbnRlcmFjdGl2ZSkuXG4qL1xuXG4uc2hvcC1maWx0ZXIge1xuXHQkcGFyZW50OiAmO1xuXG5cdCZfX3RvZ2dsZSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogLjYyNXJlbTtcblxuXHRcdG1hcmdpbjogMCAwIDEuNXJlbTtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0bGlzdC1zdHlsZTogbm9uZTsgLyogaGlkZSBkZWZhdWx0IGRpc2Nsb3N1cmUgdHJpYW5nbGUgKEZGKSAqL1xuXG5cdFx0Jjo6LXdlYmtpdC1kZXRhaWxzLW1hcmtlciB7XG5cdFx0XHRkaXNwbGF5OiBub25lOyAvKiDigKZhbmQgQ2hyb21lL1NhZmFyaSAqL1xuXHRcdH1cblx0fVxuXG5cdCZfX2ljb24ge1xuXHRcdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS0wO1xuXHRcdGNvbG9yOiAkY29sb3ItcHJpbWFyeTtcblx0fVxuXG5cdCZfX3RpdGxlIHtcblx0XHRmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LWRpc3BsYXk7XG5cdFx0Zm9udC1zaXplOiAkZm9udC1zaXplLTE7XG5cdFx0Y29sb3I6ICRjb2xvci1wcmltYXJ5LWRhcms7XG5cdH1cblxuXHQmX19ib2R5IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0Z2FwOiAxLjVyZW07XG5cdH1cblxuXHQvKiBcIkZpbHRlcnMgd2lzc2VuXCIgcmVzZXQg4oCUIG9ubHkgcmVuZGVyZWQgb24gYSBmaWx0ZXJlZCAodGVybSBhcmNoaXZlKSB2aWV3ICovXG5cdCZfX2NsZWFyIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogLjVyZW07XG5cdFx0YWxpZ24tc2VsZjogc3RhcnQ7XG5cblx0XHRmb250LXNpemU6ICRmb250LXNpemUtLTE7XG5cdFx0Y29sb3I6ICRjb2xvci1zZWNvbmRhcnkgIWltcG9ydGFudDtcblx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmUgIWltcG9ydGFudDtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG5cblx0XHQmOmhvdmVyLFxuXHRcdCY6Zm9jdXMtdmlzaWJsZSB7XG5cdFx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgY3VycmVudENvbG9yO1xuXHRcdH1cblx0fVxuXG5cdCZfX2dyb3VwLXRpdGxlIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0bWFyZ2luOiAwIDAgLjVyZW07XG5cdFx0cGFkZGluZzogLjEyNWVtIC4zNzVlbTtcblxuXHRcdGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktYWNjZW50O1xuXHRcdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS0tMTtcblx0XHRsaW5lLWhlaWdodDogMS40O1xuXHRcdGxldHRlci1zcGFjaW5nOiAuMDVlbTtcblx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdGNvbG9yOiAkY29sb3ItcHJpbWFyeTtcblx0XHRiYWNrZ3JvdW5kOiB2YXIoLS1hY2NlbnQpO1xuXHRcdFxuXHRcdEBpbmNsdWRlIG1xVW50aWwoJ21lZGl1bScpIHtcblx0XHRcdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS0tMjtcblx0XHR9XG5cdH1cblxuXHQmX19saXN0LFxuXHQmX19zdWJsaXN0IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0Z2FwOiAuMjVyZW07XG5cblx0XHRtYXJnaW46IDA7XG5cdFx0cGFkZGluZzogMDtcblxuXHRcdGxpc3Qtc3R5bGU6IG5vbmU7XG5cdH1cblxuXHQmX19saXN0IHtcblx0XHRwYWRkaW5nLWxlZnQ6IDAuMjVyZW07XG5cdH1cblxuXHQvKiBOZXN0ZWQgY2hpbGQgY2F0ZWdvcmllcyAqL1xuXHQmX19zdWJsaXN0IHtcblx0XHRtYXJnaW4tYmxvY2s6IC4yNXJlbSAuNXJlbTtcblx0XHRwYWRkaW5nLWlubGluZS1zdGFydDogLjg3NXJlbTtcblx0XHRib3JkZXItaW5saW5lLXN0YXJ0OiAxcHggc29saWQgJGNvbG9yLWJvcmRlcjtcblxuXHRcdCN7JHBhcmVudH1fX2xpbmsge1xuXHRcdFx0Zm9udC1zaXplOiAuODc1ZW07XG5cdFx0fVxuXHR9XG5cblx0Jl9fbGluayB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRnYXA6IDFyZW07XG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRcdGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcblxuXHRcdHBhZGRpbmc6IC4yNXJlbSAwO1xuXG5cdFx0Y29sb3I6ICRjb2xvci1wcmltYXJ5O1xuXHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuXHRcdCY6aG92ZXIsXG5cdFx0Jjpmb2N1cy12aXNpYmxlIHtcblx0XHRcdGNvbG9yOiAkY29sb3Itc2Vjb25kYXJ5O1xuXHRcdH1cblxuXHRcdCZbYXJpYS1jdXJyZW50XSB7XG5cdFx0XHRmb250LXdlaWdodDogNzAwO1xuXHRcdFx0Y29sb3I6ICRjb2xvci1wcmltYXJ5LWRhcms7XG5cdFx0fVxuXHR9XG5cblx0Jl9fY291bnQge1xuXHRcdGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktYWNjZW50O1xuXHRcdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS0tMTtcblx0XHRmb250LXZhcmlhbnQtbnVtZXJpYzogbGluaW5nLW51bXMgdGFidWxhci1udW1zO1xuXHRcdGNvbG9yOiAkY29sb3ItcHJpbWFyeTtcblx0fVxuXG5cdEBpbmNsdWRlIG1xVW50aWwoJ21lZGl1bScpIHtcblx0XHRwb3NpdGlvbjogZml4ZWQ7XG5cdFx0ei1pbmRleDogNTA7XG5cdFx0aW5zZXQtaW5saW5lOiAxcmVtO1xuXHRcdGluc2V0LWJsb2NrLWVuZDogMXJlbTtcblxuXHRcdCZfX2Rpc2Nsb3N1cmUge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTsgLyogYm9keSBleHBhbmRzIHVwd2FyZCwgYWJvdmUgdGhlIHRvZ2dsZSAqL1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblxuXHRcdFx0YmFja2dyb3VuZDogJGNvbG9yLWFjY2VudC1saWdodDtcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICRjb2xvci1ib3JkZXI7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAuNzVyZW07XG5cdFx0XHRib3gtc2hhZG93OiAwIC41cmVtIDEuNXJlbSByZ2JhKDAsIDAsIDAsIC4xNSk7XG5cblx0XHRcdC8qIEFuaW1hdGUgZXhwYW5kL2NvbGxhcHNlIHZpYSB0aGUgY29udGVudCdzIGhlaWdodCAobmVlZHNcblx0XHRcdCAgIGludGVycG9sYXRlLXNpemUgdG8gdHJhbnNpdGlvbiB0by9mcm9tIGBhdXRvYCkuICovXG5cdFx0XHRpbnRlcnBvbGF0ZS1zaXplOiBhbGxvdy1rZXl3b3JkcztcblxuXHRcdFx0Jjo6ZGV0YWlscy1jb250ZW50IHtcblx0XHRcdFx0YmxvY2stc2l6ZTogMDtcblx0XHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdFx0dHJhbnNpdGlvbjpcblx0XHRcdFx0XHRibG9jay1zaXplIC4zcyBlYXNlLFxuXHRcdFx0XHRcdGNvbnRlbnQtdmlzaWJpbGl0eSAuM3MgZWFzZSBhbGxvdy1kaXNjcmV0ZTtcblx0XHRcdH1cblxuXHRcdFx0JltvcGVuXTo6ZGV0YWlscy1jb250ZW50IHtcblx0XHRcdFx0YmxvY2stc2l6ZTogYXV0bztcblx0XHRcdH1cblxuXHRcdFx0QG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcblx0XHRcdFx0Jjo6ZGV0YWlscy1jb250ZW50IHtcblx0XHRcdFx0XHR0cmFuc2l0aW9uOiBub25lO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Jl9fdG9nZ2xlIHtcblx0XHRcdG1hcmdpbjogMDtcblx0XHRcdHBhZGRpbmc6IC44NzVyZW0gMS4yNXJlbTtcblxuXHRcdFx0LyogY2hldnJvbiAqL1xuXHRcdFx0Jjo6YWZ0ZXIge1xuXHRcdFx0XHRjb250ZW50OiAnJztcblx0XHRcdFx0bWFyZ2luLWlubGluZS1zdGFydDogYXV0bztcblxuXHRcdFx0XHR3aWR0aDogLjVyZW07XG5cdFx0XHRcdGhlaWdodDogLjVyZW07XG5cblx0XHRcdFx0Ym9yZGVyLXJpZ2h0OiAycHggc29saWQgY3VycmVudENvbG9yO1xuXHRcdFx0XHRib3JkZXItYm90dG9tOiAycHggc29saWQgY3VycmVudENvbG9yO1xuXG5cdFx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KSByb3RhdGUoNDVkZWcpO1xuXHRcdFx0XHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjJzIGVhc2U7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Jl9fZGlzY2xvc3VyZVtvcGVuXSAmX190b2dnbGUge1xuXHRcdFx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkICRjb2xvci1ib3JkZXI7XG5cblx0XHRcdCY6OmFmdGVyIHtcblx0XHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKDJweCkgcm90YXRlKDIyNWRlZyk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Jl9fYm9keSB7XG5cdFx0XHRnYXA6IDEuMjVyZW07XG5cblx0XHRcdG1heC1oZWlnaHQ6IDUwdmg7XG5cdFx0XHRvdmVyZmxvdy15OiBhdXRvO1xuXG5cdFx0XHRwYWRkaW5nOiAuODc1cmVtIDEuMjVyZW0gMXJlbTtcblx0XHR9XG5cdH1cbn1cbiIsIkB1c2UgJy4uL2Fic3RyYWN0cy8nIGFzICo7XHJcblxyXG4uX3RoZW1lbmFtZS1wYWNrYWdlLXNpemUge1xyXG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICBmb250LXNpemU6IHgtc21hbGw7XHJcbn0iLCJAdXNlICcuLi9hYnN0cmFjdHMnIGFzICo7XG5cbi8qKlxuICogU2xpY2sgY2Fyb3VzZWwgb2YgV29vQ29tbWVyY2UgcHJvZHVjdCBjYXJkcy5cbiAqIE1hcmt1cDogdGVtcGxhdGUtcGFydHMvY29tcG9uZW50cy9wcm9kdWN0LXNsaWRlci5waHAgKyB3b29jb21tZXJjZS9jb250ZW50LXByb2R1Y3QucGhwXG4gKiBJbml0OiAgIHNyYy9hc3NldHMvanMvY29tcG9uZW50cy9jYXJvdXNlbC5qcyAoLmpzLXByb2R1Y3Qtc2xpZGVyKVxuICpcbiAqIFRoZSBjYXJkIGxvb2sg4oCUIGluY2x1ZGluZyB0aGUgaG92ZXItcmV2ZWFsIGFkZC10by1jYXJ0IOKAlCBsaXZlcyBpbiBfcHJvZHVjdC5zY3NzLlxuICogVGhpcyBmaWxlIG9ubHkgYWRkcyB0aGUgY2Fyb3VzZWwgdHJhY2ssIHRoZSBwZWVrL3NwYWNpbmcsIGFuZCB0aGUgdG91Y2gtZGV2aWNlXG4gKiBvdmVycmlkZSB0aGF0IGtleXMgdGhlIHJldmVhbCBvZmYgU2xpY2sncyBpbi12aWV3IHNsaWRlcy5cbiAqL1xuXG4ucHJvZHVjdC1zbGlkZXIge1xuXHRkaXNwbGF5OiBncmlkICFpbXBvcnRhbnQ7IC8qIEZpeCBmb3IgU2xpY2sgbGl2aW5nIGluc2lkZSBhIGdyaWQvZmxleCBjb2x1bW4gKi9cblxuXHRtYXJnaW46IDA7XG5cdHBhZGRpbmc6IDA7XG5cblx0bGlzdC1zdHlsZTogbm9uZTtcblxuXHQuc2xpY2stbGlzdCB7XG5cdFx0bWluLXdpZHRoOiAwOyAvKiBGaXggZm9yIFNsaWNrIG92ZXJmbG93IGlzc3VlIGluc2lkZSBhIGdyaWQgKi9cblx0XHRvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuXG5cdFx0bWFyZ2luLWlubGluZTogLTFyZW07XG5cblx0XHRwYWRkaW5nLXJpZ2h0OiAzcmVtOyAvKiBwZWVrIHRoZSBuZXh0IGNhcmQgKi9cblxuXHRcdEBpbmNsdWRlIG1xVW50aWwoJ3NtYWxsJykge1xuXHRcdFx0cGFkZGluZy1yaWdodDogMTglO1xuXHRcdH1cblx0fVxuXG5cdC5zbGljay1zbGlkZSB7XG5cdFx0aGVpZ2h0OiBhdXRvO1xuXHRcdG1hcmdpbi1pbmxpbmU6IDFyZW07XG5cdH1cblxuXHQvLyBUb3VjaC1vbmx5IGRldmljZXM6IF9wcm9kdWN0LnNjc3MncyBob3Zlci1yZXZlYWwgZG9lc24ndCBhcHBseSwgc28gdGhlXG5cdC8vIGFkZC10by1jYXJ0IGlzIHZpc2libGUgYnkgZGVmYXVsdCDigJQga2V5IG9mZiBTbGljaydzIGluLXZpZXcgc2xpZGVzIGluc3RlYWRcblx0Ly8gYW5kIGhpZGUgaXQgb25seSBvbiBzbGlkZXMgY3VycmVudGx5IG91dCBvZiB2aWV3LlxuXHRAbWVkaWEgKGhvdmVyOiBub25lKSB7XG5cdFx0LnNsaWNrLWluaXRpYWxpemVkIC5zbGljay1zbGlkZTpub3QoLnNsaWNrLWFjdGl2ZSkgLmxvb3AtYWRkLXRvLWNhcnQge1xuXHRcdFx0b3BhY2l0eTogMDtcblx0XHR9XG5cdH1cbn1cblxuLyogRm9vdGVyIHJvdyB1bmRlciB0aGUgc2xpZGVyOiBTbGljayBkb3RzIChsZWZ0KSArIGxpbmsgdG8gdGhlIHNob3AgKHJpZ2h0KS4gKi9cbi5wcm9kdWN0LXNsaWRlcl9fZm9vdGVyIHtcblx0bWFyZ2luLXRvcDogMnJlbTtcblxuXHRkaXNwbGF5OiBmbGV4O1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdGdhcDogMnJlbTtcblxuXHRAaW5jbHVkZSBtcVVudGlsKCdzbWFsbCcpIHtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcblx0fVxuXG5cdC5wcm9kdWN0LXNsaWRlcl9fZG90cyB7XG5cdFx0Ly8gU2xpY2sgcmVuZGVycyBpdHMgPHVsIGNsYXNzPVwic2xpY2stZG90c1wiPiBpbiBoZXJlIChhcHBlbmREb3RzKS5cblx0XHRkaXNwbGF5OiBmbGV4O1xuXG5cdFx0JjplbXB0eSB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblx0fVxufVxuIiwiQHVzZSAnLi4vYWJzdHJhY3RzJyBhcyAqO1xuXG4vKipcbiAqIFwiLSAxICtcIiBxdWFudGl0eSBzdGVwcGVyIG9uIHRoZSBXb29Db21tZXJjZSBsb29wIHByb2R1Y3QgY2FyZHNcbiAqICh3b29jb21tZXJjZS9sb29wL2FkZC10by1jYXJ0LnBocCkgYW5kIHRoZSBzaW5nbGUgcHJvZHVjdCBwYWdlXG4gKiAod29vY29tbWVyY2UvZ2xvYmFsL3F1YW50aXR5LWlucHV0LnBocCkuXG4gKiBCZWhhdmlvdXI6IHNyYy9hc3NldHMvanMvY29tcG9uZW50cy9xdWFudGl0eS5qc1xuICovXG5cbi5sb29wLWFkZC10by1jYXJ0IHtcblx0ZGlzcGxheTogZmxleDtcblx0Z2FwOiAuNXJlbTtcblx0YWxpZ24taXRlbXM6IHN0cmV0Y2g7XG5cblx0LmJ1dHRvbiB7XG5cdFx0ZmxleDogMTtcblx0fVxufVxuXG4ucXVhbnRpdHktc3RlcHBlciB7XG5cdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRhbGlnbi1pdGVtczogc3RyZXRjaDtcblxuXHRib3JkZXI6IDFweCBzb2xpZCAkY29sb3ItYm9yZGVyO1xuXG5cdCZfX2J1dHRvbiB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblxuXHRcdHdpZHRoOiAyZW07XG5cdFx0YXNwZWN0LXJhdGlvOiAxO1xuXHRcdHBhZGRpbmc6IDA7XG5cblx0XHRmb250LXNpemU6IDEuMTI1ZW07XG5cdFx0bGluZS1oZWlnaHQ6IDE7XG5cblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0Y29sb3I6ICRjb2xvci1wcmltYXJ5O1xuXHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0Ym9yZGVyOiAwO1xuXG5cdFx0dHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuMnMgZWFzZTtcblxuXHRcdCY6aG92ZXIsXG5cdFx0Jjpmb2N1cy12aXNpYmxlIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1hY2NlbnQtbGlnaHQ7XG5cdFx0fVxuXG5cdFx0QGluY2x1ZGUgbXFVbnRpbCgnc21hbGwnKSB7XG5cdFx0XHR3aWR0aDogMS41ZW07XG5cdFx0fVxuXHR9XG5cblx0Jl9faW5wdXQge1xuXHRcdHdpZHRoOiAyLjVyZW07XG5cdFx0YXNwZWN0LXJhdGlvOiAxO1xuXHRcdHBhZGRpbmc6IC4yNXJlbSAwO1xuXG5cdFx0Zm9udDogaW5oZXJpdDtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cblx0XHRjb2xvcjogJGNvbG9yLXRleHQ7XG5cdFx0YmFja2dyb3VuZDogbm9uZTtcblx0XHRib3JkZXI6IDA7XG5cdFx0Ym9yZGVyLWlubGluZTogMXB4IHNvbGlkICRjb2xvci1ib3JkZXI7XG5cblx0XHRhcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XG5cdFx0LW1vei1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XG5cblx0XHQmOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uLFxuXHRcdCY6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24ge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0LXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuXHRcdH1cblxuXHRcdCY6Zm9jdXMtdmlzaWJsZSB7XG5cdFx0XHRvdXRsaW5lOiAycHggc29saWQgJGNvbG9yLXByaW1hcnk7XG5cdFx0XHRvdXRsaW5lLW9mZnNldDogLTJweDtcblx0XHR9XG5cdFx0XG5cdFx0QGluY2x1ZGUgbXFVbnRpbCgnc21hbGwnKSB7XG5cdFx0XHR3aWR0aDogMS41ZW07XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogU2luZ2xlIHByb2R1Y3QgcGFnZTogV29vQ29tbWVyY2UgcmVuZGVycyB0aGUgc3RlcHBlciBhcyBpdHMgYC5xdWFudGl0eWBcbiAqIHdyYXBwZXIgaW5zaWRlIGBmb3JtLmNhcnRgLiBPdmVycmlkZSB3b29jb21tZXJjZS5jc3MncyBmbG9hdCBhbmQgdGhlIGZpeGVkXG4gKiBgLnF0eWAgd2lkdGggc28gaXQgbWF0Y2hlcyB0aGUgbG9vcCBzdGVwcGVyLlxuICovXG4ud29vY29tbWVyY2UgZGl2LnByb2R1Y3QgZm9ybS5jYXJ0IC5xdWFudGl0eS1zdGVwcGVyIHtcblx0ZmxvYXQ6IG5vbmUgIWltcG9ydGFudDtcblx0bWFyZ2luOiAwICFpbXBvcnRhbnQ7XG5cblx0LnF1YW50aXR5LXN0ZXBwZXJfX2lucHV0IHtcblx0XHR3aWR0aDogMi41cmVtO1xuXG5cdFx0QGluY2x1ZGUgbXFVbnRpbCgnc21hbGwnKSB7XG5cdFx0XHR3aWR0aDogMmVtO1xuXHRcdH1cblx0fVxufVxuIiwiQHVzZSAnLi4vYWJzdHJhY3RzJyBhcyAqO1xuQHVzZSAndHlwb2dyYXBoeScgYXMgKjtcbkB1c2UgJ2J1dHRvbnMnIGFzICo7XG5AdXNlICdmb3JtcycgYXMgKjtcblxuLy8gd29vY29tbWVyY2UtbGF5b3V0LmNzcyBpcyBkZXF1ZXVlZCAobGliL3dvb2NvbW1lcmNlL3Nob3AtbGF5b3V0LnBocCksIHNvIHRoZSBsYXlvdXQgbGl2ZXMgaGVyZVxuLndvb2NvbW1lcmNlLWFjY291bnQge1xuXHQud29vY29tbWVyY2UtTXlBY2NvdW50IHtcblx0XHRkaXNwbGF5OiBncmlkO1xuXHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDNmcjtcblx0XHRnYXA6IDRyZW07XG5cblx0XHRAaW5jbHVkZSBtcVVudGlsKCdtZWRpdW0nKSB7XG5cdFx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcblx0XHRcdGdhcDogMnJlbTtcblx0XHR9XG5cdH1cblxuXHQud29vY29tbWVyY2UtTXlBY2NvdW50TG9naW4ge1xuXHRcdG1heC13aWR0aDogNjJjaDtcblx0XHRtYXJnaW4taW5saW5lOiBhdXRvO1xuXG5cdFx0JjpoYXMoPiAuY29sMi1zZXQpIHtcblx0XHRcdG1heC13aWR0aDogbm9uZTtcblx0XHR9XG5cdH1cblxuXHQud29vY29tbWVyY2UtTXlBY2NvdW50LFxuXHQud29vY29tbWVyY2UtTXlBY2NvdW50TG9naW4ge1xuXHRcdG1pbi1oZWlnaHQ6IDQwdmg7XG5cblx0XHRoMjpub3QoLmN0YSAqKSB7XG5cdFx0XHRAZXh0ZW5kIC5oZWFkaW5nLTM7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAxLjVyZW07XG5cdFx0fVxuXG5cdFx0Zm9ybSxcblx0XHQud29vY29tbWVyY2UtYWRkcmVzcy1maWVsZHNfX2ZpZWxkLXdyYXBwZXIge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0XHRnYXA6IDEuNXJlbTtcblx0XHR9XG5cblx0XHQvLyBQYWlyIGZpcnN0L2xhc3QgZmllbGRzIHNpZGUgYnkgc2lkZVxuXHRcdDpoYXMoPiAuZm9ybS1yb3ctZmlyc3QpIHtcblx0XHRcdGRpc3BsYXk6IGdyaWQ7XG5cdFx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7XG5cdFx0XHRnYXA6IDEuNXJlbTtcblxuXHRcdFx0PiA6bm90KC5mb3JtLXJvdy1maXJzdCwgLmZvcm0tcm93LWxhc3QpIHtcblx0XHRcdFx0Z3JpZC1jb2x1bW46IDEgLyAtMTtcblx0XHRcdH1cblxuXHRcdFx0QGluY2x1ZGUgbXFVbnRpbCgnc21hbGwnKSB7XG5cdFx0XHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5mb3JtLXJvdyB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRcdGdhcDogMC41cmVtO1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblx0XHQuY2xlYXIge1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHR9XG5cblx0XHRsYWJlbCB7XG5cdFx0XHRAZXh0ZW5kIC5mb3JtX19sYWJlbDtcblxuXHRcdFx0Ly8gV0MgYWxyZWFkeSBwcmludHMgaXRzIG93biA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj5cblx0XHRcdCY6aGFzKC5yZXF1aXJlZCk6OmFmdGVyIHtcblx0XHRcdFx0Y29udGVudDogbm9uZSAhaW1wb3J0YW50O1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpbnB1dDpub3QoW3R5cGU9J2hpZGRlbiddLCBbdHlwZT0nc3VibWl0J10pLFxuXHRcdHRleHRhcmVhIHtcblx0XHRcdEBleHRlbmQgLmZvcm1fX2NvbnRyb2w7XG5cdFx0fVxuXHRcdHNlbGVjdCxcblx0XHQuc2VsZWN0Mi1zZWxlY3Rpb24ge1xuXHRcdFx0QGV4dGVuZCAuZm9ybV9fY29udHJvbDtcblx0XHRcdGhlaWdodDogYXV0bztcblx0XHR9XG5cblx0XHRmaWVsZHNldCB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRcdGdhcDogMXJlbTtcblx0XHRcdHBhZGRpbmc6IDEuNXJlbTtcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICRjb2xvci1ib3JkZXI7XG5cblx0XHRcdGxlZ2VuZCB7XG5cdFx0XHRcdHBhZGRpbmctaW5saW5lOiAwLjVyZW07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0YnV0dG9uW3R5cGU9J3N1Ym1pdCddIHtcblx0XHRcdEBleHRlbmQgLmJ1dHRvbjtcblx0XHRcdEBleHRlbmQgLmJ1dHRvbi0tc2Vjb25kYXJ5O1xuXHRcdFx0YWxpZ24tc2VsZjogc3RhcnQ7XG5cdFx0fVxuXHR9XG5cblx0Ly8gTmF2aWdhdGlvblxuXHQud29vY29tbWVyY2UtTXlBY2NvdW50LW5hdmlnYXRpb24ge1xuXHRcdHVsIHtcblx0XHRcdGxpc3Qtc3R5bGU6IG5vbmU7XG5cdFx0XHRwYWRkaW5nOiAwO1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkICRjb2xvci1ib3JkZXI7XG5cdFx0fVxuXG5cdFx0bGkge1xuXHRcdFx0bWFyZ2luOiAwICFpbXBvcnRhbnQ7XG5cdFx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgJGNvbG9yLWJvcmRlcjtcblx0XHR9XG5cblx0XHRhIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0Z2FwOiAxcmVtO1xuXHRcdFx0cGFkZGluZzogMC43NXJlbSAwLjI1cmVtO1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG5cblx0XHRcdCY6YmVmb3JlIHtcblx0XHRcdFx0d2lkdGg6IDEuMjVlbTtcblx0XHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0XHRvcGFjaXR5OiAwLjY7XG5cdFx0XHRcdGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktaWNvbnM7XG5cdFx0XHRcdGZvbnQtd2VpZ2h0OiAzMDA7XG5cdFx0XHRcdGZvbnQtc3R5bGU6IG5vcm1hbDtcblx0XHRcdFx0bGluZS1oZWlnaHQ6IDE7XG5cdFx0XHRcdC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuXHRcdFx0XHQtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuXHRcdFx0XHR0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZTtcblx0XHRcdH1cblxuXHRcdFx0Jjpob3ZlcjpiZWZvcmUge1xuXHRcdFx0XHRvcGFjaXR5OiAxO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5pcy1hY3RpdmUgYSB7XG5cdFx0XHRjb2xvcjogJGNvbG9yLXNlY29uZGFyeTtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblxuXHRcdFx0JjpiZWZvcmUge1xuXHRcdFx0XHRvcGFjaXR5OiAxO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC53b29jb21tZXJjZS1NeUFjY291bnQtbmF2aWdhdGlvbi1saW5rIHtcblx0XHRcdCYtLWRhc2hib2FyZCBhOmJlZm9yZSB7IGNvbnRlbnQ6ICdcXGY2MjQnOyB9IC8vIGdhdWdlXG5cdFx0XHQmLS1vcmRlcnMgYTpiZWZvcmUgeyBjb250ZW50OiAnXFxmNDY2JzsgfSAvLyBib3hcblx0XHRcdCYtLWVkaXQtYWRkcmVzcyBhOmJlZm9yZSB7IGNvbnRlbnQ6ICdcXGYzYzUnOyB9IC8vIGxvY2F0aW9uLWRvdFxuXHRcdFx0Ji0tcGF5bWVudC1tZXRob2RzIGE6YmVmb3JlIHsgY29udGVudDogJ1xcZjA5ZCc7IH0gLy8gY3JlZGl0LWNhcmRcblx0XHRcdCYtLWVkaXQtYWNjb3VudCBhOmJlZm9yZSB7IGNvbnRlbnQ6ICdcXGYwMDcnOyB9IC8vIHVzZXJcblx0XHRcdCYtLXZhdC1udW1iZXIgYTpiZWZvcmUgeyBjb250ZW50OiAnXFxmNTcwJzsgfSAvLyBmaWxlLWludm9pY2Vcblx0XHRcdCYtLWN1c3RvbWVyLWxvZ291dCBhOmJlZm9yZSB7IGNvbnRlbnQ6ICdcXGYyZjUnOyB9IC8vIHJpZ2h0LWZyb20tYnJhY2tldFxuXHRcdH1cblx0fVxuXG5cdC8vIERhc2hib2FyZCBDVEFzIChzYW1lIGFzIGhvbWUgaGVybylcblx0LmFjY291bnQtY3RhcyB7XG5cdFx0ZGlzcGxheTogZ3JpZDtcblx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbigyMHJlbSwgMTAwJSkpO1xuXHRcdGdhcDogMS41cmVtO1xuXHRcdG1hcmdpbi10b3A6IDIuNXJlbTtcblxuXHRcdEBpbmNsdWRlIG1xVW50aWwoJ3NtYWxsJykge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0fVxuXHR9XG5cblx0Ly8gQWRkcmVzc2VzXG5cdC53b29jb21tZXJjZS1BZGRyZXNzZXMge1xuXHRcdGRpc3BsYXk6IGdyaWQ7XG5cdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcblx0XHRnYXA6IDIuNXJlbTtcblxuXHRcdEBpbmNsdWRlIG1xVW50aWwoJ3NtYWxsJykge1xuXHRcdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG5cdFx0fVxuXHR9XG5cdC53b29jb21tZXJjZS1BZGRyZXNzIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0Z2FwOiAwLjc1cmVtO1xuXG5cdFx0Ji10aXRsZSB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRcdGdhcDogMC43NXJlbTtcblxuXHRcdFx0aDIge1xuXHRcdFx0XHRtYXJnaW46IDA7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0YS5lZGl0IHtcblx0XHRcdEBleHRlbmQgLmJ1dHRvbjtcblx0XHRcdEBleHRlbmQgLmJ1dHRvbi0tb3V0bGluZTtcblx0XHRcdGFsaWduLXNlbGY6IHN0YXJ0O1xuXHRcdH1cblx0fVxuXG5cdC8vIE9yZGVyc1xuXHQud29vY29tbWVyY2Utb3JkZXJzLXRhYmxlIC53b29jb21tZXJjZS1idXR0b24sXG5cdC53b29jb21tZXJjZS1NeUFjY291bnQtY29udGVudCAud29vY29tbWVyY2UtQnV0dG9uIHtcblx0XHRAZXh0ZW5kIC5idXR0b247XG5cdFx0QGV4dGVuZCAuYnV0dG9uLS1zZWNvbmRhcnk7XG5cdH1cblxuXHQud29vY29tbWVyY2UtY3VzdG9tZXItZGV0YWlscyBhZGRyZXNzIHtcblx0XHRmb250LXN0eWxlOiBub3JtYWw7XG5cdFx0bGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodC1sb29zZTtcblx0fVxuXG5cdC8vIFBsYWluIG1hcmsgdGFncyBpbiBvcmRlciBzdGF0dXMgdGV4dHNcblx0bWFyayB7XG5cdFx0YmFja2dyb3VuZDogbm9uZTtcblx0XHRjb2xvcjogaW5oZXJpdDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdH1cblxuXHQud29vY29tbWVyY2Utbm90aWNlcy13cmFwcGVyOmVtcHR5IHtcblx0XHRkaXNwbGF5OiBub25lO1xuXHR9XG5cblx0d2Mtb3JkZXItYXR0cmlidXRpb24taW5wdXRzIHtcblx0XHRkaXNwbGF5OiBub25lO1xuXHR9XG59XG5cbi8vIExvZ2luIC8gcmVnaXN0ZXIgc2lkZSBieSBzaWRlXG4ud29vY29tbWVyY2UtYWNjb3VudCAuY29sMi1zZXQge1xuXHRkaXNwbGF5OiBncmlkO1xuXHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuXHRnYXA6IDRyZW07XG5cblx0PiAqIHtcblx0XHR3aWR0aDogYXV0byAhaW1wb3J0YW50O1xuXHRcdGZsb2F0OiBub25lICFpbXBvcnRhbnQ7XG5cdH1cblxuXHRAaW5jbHVkZSBtcVVudGlsKCdtZWRpdW0nKSB7XG5cdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG5cdH1cbn1cblxuLndvb2NvbW1lcmNlLWZvcm1fX2xhYmVsLWZvci1jaGVja2JveCB7XG5cdGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0Z2FwOiAwLjVyZW07XG59XG5cbi53b29jb21tZXJjZS1wcml2YWN5LXBvbGljeS10ZXh0IHtcblx0Zm9udC1zaXplOiAkZm9udC1zaXplLS0xO1xuXG5cdGEge1xuXHRcdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuXHR9XG59XG5cbi5wYXNzd29yZC1pbnB1dCB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0ZGlzcGxheTogYmxvY2s7XG5cblx0LnNob3ctcGFzc3dvcmQtaW5wdXQge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRyaWdodDogMDtcblx0XHRib3R0b206IDAuNXJlbTtcblx0fVxufVxuXG4ud29vY29tbWVyY2UtTG9zdFBhc3N3b3JkIHtcblx0bWFyZ2luOiAwO1xuXG5cdGEge1xuXHRcdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuXHR9XG59XG4iLCJAdXNlICcuLi9hYnN0cmFjdHMnIGFzICo7XHJcblxyXG4uc2hvcHMge1xyXG5cdCZfX2xvb3Age1xyXG5cdFx0ZGlzcGxheTogZ3JpZDtcclxuXHRcdGdhcDogMnJlbTtcclxuXHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMzIwcHgsIDFmcikpO1xyXG5cdFx0YWxpZ24taXRlbXM6IHN0cmV0Y2g7XHJcblx0fVxyXG5cclxuXHQmX19pdGVtIHtcclxuXHRcdGRpc3BsYXk6IGdyaWQ7XHJcblx0XHRncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG8gMWZyO1xyXG5cclxuXHRcdC8vIENhcmQgdGFyZ2V0ZWQgYnkgYSBmb290ZXIgbGluayAoI3Nob3AtPHNsdWc+KTogcHVsc2UgdHdpY2UsIHRoZW4gZmFkZSBvdXRcclxuXHRcdCY6dGFyZ2V0IHtcclxuXHRcdFx0b3V0bGluZTogMXB4IGRvdHRlZCB0cmFuc3BhcmVudDtcclxuXHRcdFx0b3V0bGluZS1vZmZzZXQ6IC41cmVtO1xyXG5cdFx0XHRhbmltYXRpb246IHNob3BzLXRhcmdldC1mbGFzaCAxcyBlYXNlLWluLW91dCAyO1xyXG5cdFx0fVxyXG5cclxuXHRcdCZfX2ltYWdlIHtcclxuXHRcdFx0Z3JpZC1yb3c6IDE7XHJcblx0XHRcdGdyaWQtY29sdW1uOiAxIC8gLTE7XHJcblx0XHR9XHJcblxyXG5cdFx0Jl9fY29udGVudCB7XHJcblx0XHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcblx0XHRcdGdhcDogMC43NXJlbTtcclxuXHRcdFx0Ym9yZGVyOiAxcHggZG90dGVkICRjb2xvci1ib3JkZXI7XHJcblx0XHRcdGJvcmRlci10b3A6IG5vbmU7XHJcblx0XHRcdHBhZGRpbmc6IDFyZW07XHJcblx0XHR9XHJcblxyXG5cdFx0Jl9fdGl0bGUge1xyXG5cdFx0XHRncmlkLXJvdzogMTtcclxuXHRcdFx0Z3JpZC1jb2x1bW46IDEgLyAtMTtcclxuXHRcdFx0YWxpZ24tc2VsZjogZW5kO1xyXG5cdFx0XHRqdXN0aWZ5LXNlbGY6IHN0YXJ0O1xyXG5cdFx0XHRwYWRkaW5nOiAuNzVyZW0gMXJlbTtcclxuXHRcdFx0bWFyZ2luOiAuMzc1cmVtO1xyXG5cdFx0XHRtaW4td2lkdGg6IDQwJTtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWFjY2VudC1saWdodDtcclxuXHRcdFx0Ym94LXNoYWRvdzogMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcclxuXHJcblx0XHRcdGZvbnQtc2l6ZTogMS4yNXJlbTtcclxuXHRcdFx0Zm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1kaXNwbGF5O1xyXG5cdFx0XHRmb250LXdlaWdodDogYm9sZDtcclxuXHRcdFx0bGluZS1oZWlnaHQ6IDEuMjU7XHJcblxyXG5cdFx0XHRzcGFuIHtcclxuXHRcdFx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0XHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHNtYWxsIHtcclxuXHRcdFx0XHRmb250LXNpemU6IC44ZW07XHJcblx0XHRcdFx0Y29sb3I6ICRjb2xvci1zZWNvbmRhcnk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgc2hvcHMtdGFyZ2V0LWZsYXNoIHtcclxuXHQwJSwgMTAwJSB7XHJcblx0XHRvdXRsaW5lLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuXHR9XHJcblx0NTAlIHtcclxuXHRcdG91dGxpbmUtY29sb3I6ICRjb2xvci1zZWNvbmRhcnk7XHJcblx0fVxyXG59XHJcbiIsIkB1c2UgJy4uL2Fic3RyYWN0cycgYXMgKjtcclxuXHJcbi5sb2NhdGlvbnMge1xyXG5cdCZfX2hlYWRpbmcge1xyXG5cdFx0QGluY2x1ZGUgbXFVbnRpbCgnbWVkaXVtJykge1xyXG5cdFx0XHRwb3NpdGlvbjogc3RpY2t5O1xyXG5cdFx0XHR0b3A6IDFyZW07XHJcblx0XHRcdGlzb2xhdGlvbjogaXNvbGF0ZTtcclxuXHRcdFx0ei1pbmRleDogMjtcclxuXHRcclxuXHRcdFx0JjpiZWZvcmUge1xyXG5cdFx0XHRcdGNvbnRlbnQ6ICcnO1xyXG5cdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdFx0XHRpbnNldDogLTFyZW0gLTUwdncgLS41cmVtO1xyXG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWFjY2VudC1saWdodCk7XHJcblx0XHRcdFx0ei1pbmRleDogLTE7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cclxuXHQmX19sb29wIHtcclxuXHRcdGRpc3BsYXk6IGdyaWQ7XHJcblx0XHRnYXA6IDNyZW07XHJcblxyXG5cdFx0Jl9fc2VwYXJhdG9yIHtcclxuXHRcdFx0JjpmaXJzdC1jaGlsZCB7XHJcblx0XHRcdFx0ZGlzcGxheTogbm9uZTtcclxuXHRcdFx0fVxyXG5cdFx0XHRAaW5jbHVkZSBtcSgnbWVkaXVtJykge1xyXG5cdFx0XHRcdGRpc3BsYXk6IG5vbmU7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qIFJlZ2lvbjogc3RpY2t5IHRpdGxlIHwgY2l0aWVzLCBzcGxpdCBieSBhIHZlcnRpY2FsIGxpbmUgKi9cclxuXHQmX19yZWdpb24ge1xyXG5cdFx0ZGlzcGxheTogZ3JpZDtcclxuXHRcdGdhcDogJHNpemUtbDtcclxuXHJcblx0XHRAaW5jbHVkZSBtcSgnbWVkaXVtJykge1xyXG5cdFx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDE1cmVtIDFmcjtcclxuXHRcdFx0Y29sdW1uLWdhcDogMDtcclxuXHRcdFx0YWxpZ24taXRlbXM6IHN0YXJ0O1xyXG5cdFx0fVxyXG5cclxuXHRcdCZfX3RpdGxlIHtcclxuXHRcdFx0QGluY2x1ZGUgbXEoJ21lZGl1bScpIHtcclxuXHRcdFx0XHRwb3NpdGlvbjogc3RpY2t5O1xyXG5cdFx0XHRcdGluc2V0LWJsb2NrLXN0YXJ0OiAycmVtO1xyXG5cdFx0XHRcdHBhZGRpbmctaW5saW5lLWVuZDogY2xhbXAoMnJlbSwgNHZ3LCA0cmVtKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblxyXG5cdC8qIENpdGllcyBmaWxsIGEgMSAvIDIgLyAzIGNvbHVtbiBncmlkLiBBIGNpdHkgc3BhbnMgYXMgbWFueSBjb2x1bW5zIGFzIGl0IGhhc1xyXG5cdCAgIGxvY2F0aW9ucyAobWF4OiBmdWxsIHJvdyksIGFuZCBpdHMgbGlzdCByZXBlYXRzIHRob3NlIGNvbHVtbnMgd2l0aCB0aGUgc2FtZVxyXG5cdCAgIGdhcCBzbyBldmVyeSBsb2NhdGlvbiBsaW5lcyB1cCB3aXRoIHRoZSBvdXRlciBncmlkLiAqL1xyXG5cdCZfX2NpdGllcyB7XHJcblx0XHQtLWxvY2F0aW9ucy1jb2wtZ2FwOiAxLjc1cmVtO1xyXG5cclxuXHRcdGRpc3BsYXk6IGdyaWQ7XHJcblx0XHRnYXA6IDNyZW0gdmFyKC0tbG9jYXRpb25zLWNvbC1nYXApO1xyXG5cclxuXHRcdEBpbmNsdWRlIG1xKCd4c21hbGwnKSB7XHJcblx0XHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XHJcblx0XHR9XHJcblx0XHRAaW5jbHVkZSBtcSgnbGFyZ2UnKSB7XHJcblx0XHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcik7XHJcblx0XHR9XHJcblxyXG5cdFx0QGluY2x1ZGUgbXEoJ21lZGl1bScpIHtcclxuXHRcdFx0YWxpZ24tc2VsZjogc3RyZXRjaDtcclxuXHRcdFx0cGFkZGluZy1pbmxpbmUtc3RhcnQ6IGNsYW1wKDJyZW0sIDR2dywgNHJlbSk7XHJcblx0XHRcdGJvcmRlci1pbmxpbmUtc3RhcnQ6IDFweCBzb2xpZCAkY29sb3ItYm9yZGVyO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Jl9fY2l0eSB7XHJcblx0XHQkdHdvOiAnOmhhcygubG9jYXRpb25zX19saXN0ID4gOm50aC1jaGlsZCgyKSknO1xyXG5cdFx0JHRocmVlOiAnOmhhcygubG9jYXRpb25zX19saXN0ID4gOm50aC1jaGlsZCgzKSknO1xyXG5cclxuXHRcdGRpc3BsYXk6IGdyaWQ7XHJcblx0XHRhbGlnbi1jb250ZW50OiBzdGFydDtcclxuXHRcdHJvdy1nYXA6IC41cmVtO1xyXG5cclxuXHRcdEBpbmNsdWRlIG1xKCd4c21hbGwnKSB7XHJcblx0XHRcdCYjeyR0d299IHtcclxuXHRcdFx0XHRncmlkLWNvbHVtbjogc3BhbiAyO1xyXG5cclxuXHRcdFx0XHQubG9jYXRpb25zX19saXN0IHtcclxuXHRcdFx0XHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQmI3skdGhyZWV9IHtcclxuXHRcdFx0XHRncmlkLWNvbHVtbjogMSAvIC0xO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0QGluY2x1ZGUgbXEoJ2xhcmdlJykge1xyXG5cdFx0XHQmI3skdGhyZWV9IC5sb2NhdGlvbnNfX2xpc3Qge1xyXG5cdFx0XHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcik7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQmX190aXRsZSB7XHJcblx0XHRcdGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktYWNjZW50O1xyXG5cdFx0XHRmb250LXNpemU6IC43NXJlbTtcclxuXHRcdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcclxuXHRcdFx0Y29sb3I6ICRjb2xvci1zZWNvbmRhcnk7XHJcblxyXG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0XHRnYXA6IC41cmVtO1xyXG5cdFxyXG5cdFx0XHQmOjphZnRlciB7XHJcblx0XHRcdFx0Y29udGVudDogJyc7XHJcblx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XHJcblx0XHRcdFx0Ym9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZCAkY29sb3Itc2Vjb25kYXJ5O1xyXG5cdFx0XHRcdG9wYWNpdHk6IDAuNTtcclxuXHRcdFx0XHRmbGV4OiAxO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQmX19saXN0IHtcclxuXHRcdGRpc3BsYXk6IGdyaWQ7XHJcblx0XHRnYXA6IDEuNXJlbSB2YXIoLS1sb2NhdGlvbnMtY29sLWdhcCk7XHJcblx0fVxyXG5cclxuXHQmX19pdGVtIHtcclxuXHRcdGRpc3BsYXk6IGdyaWQ7XHJcblx0XHRhbGlnbi1jb250ZW50OiBzdGFydDtcclxuXHRcdGdhcDogMC41cmVtO1xyXG5cclxuXHRcdCZfX3RpdGxlIHtcclxuXHRcdFx0Zm9udC1zaXplOiAxLjEyNXJlbTtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuIiwiQHVzZSAnLi4vYWJzdHJhY3RzJyBhcyAqO1xyXG5AdXNlICcuLi91dGlsaXRpZXMvc3BhY2luZycgYXMgKjtcclxuLy8gVGhpcyBmaWxlIGlzIHVzZWQgdG8gY29udHJvbCB0aGUgdmVydGljYWwgc3BhY2luZyBiZXR3ZWVuIGVsZW1lbnRzIHdpdGhpblxyXG4vLyBhIGNvbnRhaW5lciB3aXRoIHRoZSBmbG93IGNsYXNzLCB3aXRoIGRpZmZlcmVudCBzcGFjaW5nXHJcbi8vIGZvciBkaWZmZXJlbnQgZGF0YS1zaXplIGF0dHJpYnV0ZXMuXHJcblxyXG46d2hlcmUoLmZsb3cpIHtcclxuICA+IDp3aGVyZSg6bm90KDpmaXJzdC1jaGlsZCkpIHtcclxuICAgIG1hcmdpbi10b3A6ICRzaXplLXM7XHJcbiAgfVxyXG59XHJcblxyXG5AZWFjaCAkc2l6ZS1uYW1lLCAkc2l6ZS12YWx1ZSBpbiAkc3BhY2luZy1zaXplcy1zaW1wbGUge1xyXG4gIDp3aGVyZSguZmxvd1tmbG93LXNpemU9JyN7JHNpemUtbmFtZX0nXSkge1xyXG4gICAgPiA6d2hlcmUoOm5vdCg6Zmlyc3QtY2hpbGQpKSB7XHJcbiAgICAgIG1hcmdpbi10b3A6ICRzaXplLXZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCJAdXNlICcuLi9hYnN0cmFjdHMnIGFzICo7XHJcblxyXG5AZWFjaCAkYnAsICR2YWx1ZSBpbiAkYnJlYWtwb2ludHMge1xyXG4gIEBpbmNsdWRlIG1xKCRicCkge1xyXG4gICAgLmhpZGRlbi1mcm9tLSN7JGJwfSB7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIG1xVW50aWwoJGJwKSB7XHJcbiAgICAuaGlkZGVuLXVudGlsLSN7JGJwfSB7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi5oaWRkZW4ge1xyXG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxufVxyXG5cclxuXHJcbi52aXN1YWxseS1oaWRkZW4ge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB3aWR0aDogMXB4O1xyXG4gIGhlaWdodDogMXB4O1xyXG4gIHBhZGRpbmc6IDA7XHJcbiAgbWFyZ2luOiAtMXB4O1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTtcclxuICBib3JkZXI6IDA7XHJcbn0iLCJAdXNlICcuLi9hYnN0cmFjdHMnIGFzICo7XHJcblxyXG5AZWFjaCAkY29sb3IsICRzaGFkZS1tYXAgaW4gJGNvbG9ycyB7XHJcbiAgQGVhY2ggJHNoYWRlLCAkdmFsdWUgaW4gJHNoYWRlLW1hcCB7XHJcbiAgICAuY2xyLSN7JGNvbG9yfS0jeyRzaGFkZX0ge1xyXG4gICAgICBjb2xvcjogJHZhbHVlO1xyXG4gICAgfVxyXG4gICAgLmJnLSN7JGNvbG9yfS0jeyRzaGFkZX0ge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5AZWFjaCAkY29sb3IsICR2YWx1ZSBpbiAkc2ltcGxlLWNvbG9ycyB7XHJcbiAgLmNsci0jeyRjb2xvcn0ge1xyXG4gICAgY29sb3I6ICR2YWx1ZTtcclxuICB9XHJcbiAgLmJnLSN7JGNvbG9yfSB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdmFsdWU7XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gY29sb3JBbGlhcygkYWxpYXMsICRhbGlhcy1zaGFkZSwgJGNvbG9yLCAkY29sb3Itc2hhZGUpIHtcclxuICAuY2xyLSN7JGFsaWFzfS0jeyRhbGlhcy1zaGFkZX0ge1xyXG4gICAgQGV4dGVuZCAuY2xyLSN7JGNvbG9yfS0jeyRjb2xvci1zaGFkZX07XHJcbiAgfVxyXG4gIC5iZy0jeyRhbGlhc30tI3skYWxpYXMtc2hhZGV9IHtcclxuICAgIEBleHRlbmQgLmJnLSN7JGNvbG9yfS0jeyRjb2xvci1zaGFkZX07XHJcbiAgfVxyXG59XHJcblxyXG4vKlxyXG5AaW5jbHVkZSBjb2xvckFsaWFzKCdwcmltYXJ5JywgJ2xpZ2h0JywgJ3ByaW1hcnknLCAnODAnKTtcclxuQGluY2x1ZGUgY29sb3JBbGlhcygncHJpbWFyeScsICdkZWZhdWx0JywgJ3ByaW1hcnknLCAnNTAnKTtcclxuQGluY2x1ZGUgY29sb3JBbGlhcygncHJpbWFyeScsICdkZWVwJywgJ3ByaW1hcnknLCAnMjUnKTtcclxuQGluY2x1ZGUgY29sb3JBbGlhcygncHJpbWFyeScsICdkYXJrJywgJ3ByaW1hcnknLCAnMTAnKTtcclxuXHJcbkBpbmNsdWRlIGNvbG9yQWxpYXMoJ2FjY2VudC0xJywgJ2RlZmF1bHQnLCAnYWNjZW50LTEnLCAnNTAnKTtcclxuQGluY2x1ZGUgY29sb3JBbGlhcygnYWNjZW50LTEnLCAnbGlnaHQnLCAnYWNjZW50LTEnLCAnODUnKTtcclxuXHJcbkBpbmNsdWRlIGNvbG9yQWxpYXMoJ2Rlc2F0dXJhdGVkJywgJ3NvZnQnLCAnZGVzYXR1cmF0ZWQnLCAnNzUnKTtcclxuQGluY2x1ZGUgY29sb3JBbGlhcygnZGVzYXR1cmF0ZWQnLCAnZGVmYXVsdCcsICdkZXNhdHVyYXRlZCcsICc1MCcpO1xyXG5AaW5jbHVkZSBjb2xvckFsaWFzKCdkZXNhdHVyYXRlZCcsICdkZWVwJywgJ2Rlc2F0dXJhdGVkJywgJzI1Jyk7XHJcbiovXHJcblxyXG4vL0BpbmNsdWRlIGNvbG9yQWxpYXMoJ25ldXRyYWwnLCAnYmcnLCAnbmV1dHJhbCcsICc5OScpO1xyXG4iLCJAdXNlICdzYXNzOm1hcCc7XHJcbkB1c2UgJ3Nhc3M6c3RyaW5nJztcclxuQHVzZSAnLi4vYWJzdHJhY3RzJyBhcyAqO1xyXG5cclxuQGVhY2ggJGl0ZW0gaW4gJHR5cGVTY2FsZSB7XHJcbiAgJHN0ZXA6IG1hcC5nZXQoJGl0ZW0sICdzdGVwJyk7XHJcbiAgJGNsYW1wVmFsdWU6IG1hcC5nZXQoJGl0ZW0sICdjbGFtcCcpO1xyXG5cclxuICAuZnMtI3skc3RlcH0ge1xyXG4gICAgZm9udC1zaXplOiBzdHJpbmcudW5xdW90ZSgkY2xhbXBWYWx1ZSk7XHJcbiAgfVxyXG59XHJcblxyXG4uZmYtYmFzZSB7XHJcbiAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1iYXNlO1xyXG59XHJcbi5mZi1kaXNwbGF5IHtcclxuICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LWRpc3BsYXk7XHJcbn1cclxuLmZmLWFjY2VudCB7XHJcbiAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1hY2NlbnQ7XHJcbn1cclxuXHJcbi51cHBlcmNhc2Uge1xyXG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XHJcbn1cclxuXHJcbi5sb3dlcmNhc2Uge1xyXG4gIHRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2U7XHJcbn1cclxuXHJcbi51bmRlcmxpbmUge1xyXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5mdy1ib2xkIHtcclxuICBmb250LXdlaWdodDogYm9sZDtcclxufVxyXG4uZnMtaXRhbGljIHtcclxuICBmb250LXN0eWxlOiBpdGFsaWM7XHJcbn1cclxuXHJcbkBmb3IgJGkgZnJvbSA0NSB0aHJvdWdoIDcwIHtcclxuICBAaWYgKCRpICUgNSA9PSAwKSB7XHJcbiAgICAubGltaXQtd2lkdGgtI3skaX0ge1xyXG4gICAgICBtYXgtd2lkdGg6ICN7JGl9cmVtO1xyXG4gICAgICBwIHtcclxuICAgICAgICBtYXgtd2lkdGg6ICN7JGl9cmVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi50ZXh0LWxlZnQsXHJcbi50ZXh0LXN0YXJ0IHtcclxuICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG59XHJcblxyXG4udGV4dC1jZW50ZXIge1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHJcbiAgcCxcclxuICBsaSB7XHJcbiAgICBtYXJnaW4taW5saW5lOiBhdXRvO1xyXG4gIH1cclxufVxyXG5cclxuLnRleHQtcmlnaHQsXHJcbi50ZXh0LWVuZCB7XHJcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XHJcbiAgbWFyZ2luLWlubGluZS1zdGFydDogYXV0bztcclxuICBtYXJnaW4taW5saW5lLWVuZDogMDtcclxufVxyXG4iLCJAdXNlICcuLi9hYnN0cmFjdHMvJyBhcyAqO1xyXG5cclxuJGFzcGVjdC1yYXRpb3M6IChcclxuICAnMTYvOScsXHJcbiAgJzkvMTYnLFxyXG4gICczLzQnLFxyXG4gICc0LzMnLFxyXG4gICc1LzMnLFxyXG4gICczLzUnLFxyXG4gICczLzInLFxyXG4gICcyLzMnLFxyXG4gICcxLzEnXHJcbik7XHJcblxyXG4uaW1hZ2Utd3JhcHBlciB7XHJcbiAgJi5jZW50ZXJlZCB7XHJcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcclxuICAgIG1hcmdpbi1yaWdodDogYXV0bztcclxuICB9XHJcblxyXG4gIGltZyB7XHJcbiAgICBvYmplY3QtZml0OiBjb3ZlcjtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gIH1cclxuXHJcbiAgJi5pY29uIHtcclxuICAgIHdpZHRoOiAxMDBweDtcclxuICAgIGhlaWdodDogMTAwcHg7XHJcbiAgICBpbWcge1xyXG4gICAgICBvYmplY3QtZml0OiBjb250YWluO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gTG9vcCB0byBnZW5lcmF0ZSBhc3BlY3QgcmF0aW8gc3R5bGVzXHJcbiAgQGVhY2ggJHJhdGlvIGluICRhc3BlY3QtcmF0aW9zIHtcclxuICAgICZbYXNwZWN0LXJhdGlvPScjeyRyYXRpb30nXSB7XHJcbiAgICAgIGFzcGVjdC1yYXRpbzogI3skcmF0aW99O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJlthc3BlY3QtcmF0aW89JzEvMSddIGltZyB7XHJcbiAgICBhc3BlY3QtcmF0aW86IDEvMTtcclxuICB9XHJcbn1cclxuIiwiQHVzZSAnLi4vYWJzdHJhY3RzJyBhcyAqO1xyXG5cclxuXHJcbi8qXHJcbiAqIFRoaXMgdXRpbGl0eSBjbGFzcyBpcyBtZWFudCB0byBiZSBzZXQgb24gdGhlIGxvb3AgbGV2ZWwgKHRoZSBwYXJlbnQgY29udGFpbmVyIG9mIHRoZSBsb29waW5nIGl0ZW1zKS5cclxuICpcclxuICogU2V0IHRoZSBmb2xsb3dpbmcgdmFyaWFibGVzIG9uIHRoZSBjb250YWluZXIgdG8gY3VzdG9taXplIHRoZSBsb29wLXNlcGFyYXRvcnM6XHJcbiAqICAgLS1nYXAgKHdpbGwgY2FsY3VsYXRlIHRoZSBhcHByb3ByaWF0ZSBzZXBhcmF0b3IgZGlzdGFuY2UsIGRlZmF1bHRzIHRvIDRyZW0pXHJcbiAqICAgLS1zZXBhcmF0b3ItY29sb3IgKHdpbGwgc2V0IHRoZSBzZXBhcmF0b3IgY29sb3IsIGRlZmF1bHRzIHRvICRjb2xvci1ib3JkZXIpXHJcbiAqL1xyXG5cclxuLmxvb3Atc2VwYXJhdG9ycyB7XHJcblxyXG5cdCYgPiAqLFxyXG5cdCYtLWhvcml6b250YWwgPiAqIHtcclxuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHR9XHJcblxyXG5cdCYgPiA6bm90KDpsYXN0LWNoaWxkKTphZnRlcixcclxuXHQmLnNsaWNrLXNsaWRlciAuc2xpY2stc2xpZGU6YWZ0ZXIge1xyXG5cdFx0Y29udGVudDogJyc7XHJcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHR0b3A6IDA7XHJcblx0XHRyaWdodDogY2FsYyh2YXIoLS1nYXAsIDRyZW0pIC8gLTIpO1xyXG5cdFx0aGVpZ2h0OiAxMDAlO1xyXG5cdFx0d2lkdGg6IDAuNXB4O1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2VwYXJhdG9yLWNvbG9yLCAkY29sb3ItYm9yZGVyKTtcclxuXHR9XHJcblx0XHJcblx0Ji0taG9yaXpvbnRhbCA+IDpub3QoOmxhc3QtY2hpbGQpOmFmdGVyIHtcclxuXHRcdGNvbnRlbnQ6ICcnO1xyXG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdFx0Ym90dG9tOiBjYWxjKHZhcigtLWdhcCwgNHJlbSkgLyAtMik7XHJcblx0XHRyaWdodDogMDtcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0aGVpZ2h0OiAwLjVweDtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNlcGFyYXRvci1jb2xvciwgJGNvbG9yLWJvcmRlcik7XHJcblx0fVxyXG5cclxuXHRAaW5jbHVkZSBtcSgnbWVkaXVtJykge1xyXG5cdFx0JiA+IDpudGgtY2hpbGQoM24pOmFmdGVyIHtcclxuXHRcdFx0ZGlzcGxheTogbm9uZTtcclxuXHRcdH1cclxuXHR9XHJcblx0QGluY2x1ZGUgbXFVbnRpbCgnbWVkaXVtJykge1xyXG5cdFx0JiA+IDpudGgtY2hpbGQoMm4pOmFmdGVyIHtcclxuXHRcdFx0ZGlzcGxheTogbm9uZTtcclxuXHRcdH1cclxuXHR9XHJcblx0QGluY2x1ZGUgbXFVbnRpbCgnc21hbGwnKSB7XHJcblx0XHQmID4gOm50aC1jaGlsZCgxbik6YWZ0ZXIge1xyXG5cdFx0XHRkaXNwbGF5OiBub25lO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcbn0iXX0= */
