/*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */
@layer properties;
@layer theme, base, components, utilities;
@layer theme {
  :root, :host {
    --font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji",
      "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
    --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",
      "Courier New", monospace;
    --color-red-50: oklch(97.1% 0.013 17.38);
    --color-red-100: oklch(93.6% 0.032 17.717);
    --color-red-200: oklch(88.5% 0.062 18.334);
    --color-red-300: oklch(80.8% 0.114 19.571);
    --color-red-400: oklch(70.4% 0.191 22.216);
    --color-red-500: oklch(63.7% 0.237 25.331);
    --color-red-600: oklch(57.7% 0.245 27.325);
    --color-red-700: oklch(50.5% 0.213 27.518);
    --color-red-800: oklch(44.4% 0.177 26.899);
    --color-red-900: oklch(39.6% 0.141 25.723);
    --color-orange-50: oklch(98% 0.016 73.684);
    --color-orange-100: oklch(95.4% 0.038 75.164);
    --color-orange-200: oklch(90.1% 0.076 70.697);
    --color-orange-300: oklch(83.7% 0.128 66.29);
    --color-orange-400: oklch(75% 0.183 55.934);
    --color-orange-500: oklch(70.5% 0.213 47.604);
    --color-orange-600: oklch(64.6% 0.222 41.116);
    --color-orange-700: oklch(55.3% 0.195 38.402);
    --color-orange-800: oklch(47% 0.157 37.304);
    --color-orange-900: oklch(40.8% 0.123 38.172);
    --color-amber-600: oklch(66.6% 0.179 58.318);
    --color-yellow-50: oklch(98.7% 0.026 102.212);
    --color-yellow-100: oklch(97.3% 0.071 103.193);
    --color-yellow-200: oklch(94.5% 0.129 101.54);
    --color-yellow-300: oklch(90.5% 0.182 98.111);
    --color-yellow-400: oklch(85.2% 0.199 91.936);
    --color-yellow-500: oklch(79.5% 0.184 86.047);
    --color-yellow-600: oklch(68.1% 0.162 75.834);
    --color-yellow-700: oklch(55.4% 0.135 66.442);
    --color-yellow-800: oklch(47.6% 0.114 61.907);
    --color-yellow-900: oklch(42.1% 0.095 57.708);
    --color-green-50: oklch(98.2% 0.018 155.826);
    --color-green-100: oklch(96.2% 0.044 156.743);
    --color-green-200: oklch(92.5% 0.084 155.995);
    --color-green-300: oklch(87.1% 0.15 154.449);
    --color-green-400: oklch(79.2% 0.209 151.711);
    --color-green-500: oklch(72.3% 0.219 149.579);
    --color-green-600: oklch(62.7% 0.194 149.214);
    --color-green-700: oklch(52.7% 0.154 150.069);
    --color-green-800: oklch(44.8% 0.119 151.328);
    --color-green-900: oklch(39.3% 0.095 152.535);
    --color-emerald-50: oklch(97.9% 0.021 166.113);
    --color-emerald-100: oklch(95% 0.052 163.051);
    --color-emerald-200: oklch(90.5% 0.093 164.15);
    --color-emerald-500: oklch(69.6% 0.17 162.48);
    --color-emerald-600: oklch(59.6% 0.145 163.225);
    --color-emerald-700: oklch(50.8% 0.118 165.612);
    --color-emerald-900: oklch(37.8% 0.077 168.94);
    --color-teal-700: oklch(51.1% 0.096 186.391);
    --color-cyan-50: oklch(98.4% 0.019 200.873);
    --color-cyan-100: oklch(95.6% 0.045 203.388);
    --color-cyan-900: oklch(39.8% 0.07 227.392);
    --color-blue-50: oklch(97% 0.014 254.604);
    --color-blue-100: oklch(93.2% 0.032 255.585);
    --color-blue-200: oklch(88.2% 0.059 254.128);
    --color-blue-300: oklch(80.9% 0.105 251.813);
    --color-blue-400: oklch(70.7% 0.165 254.624);
    --color-blue-500: oklch(62.3% 0.214 259.815);
    --color-blue-600: oklch(54.6% 0.245 262.881);
    --color-blue-700: oklch(48.8% 0.243 264.376);
    --color-blue-800: oklch(42.4% 0.199 265.638);
    --color-blue-900: oklch(37.9% 0.146 265.522);
    --color-blue-950: oklch(28.2% 0.091 267.935);
    --color-indigo-50: oklch(96.2% 0.018 272.314);
    --color-indigo-100: oklch(93% 0.034 272.788);
    --color-indigo-900: oklch(35.9% 0.144 278.697);
    --color-purple-50: oklch(97.7% 0.014 308.299);
    --color-purple-100: oklch(94.6% 0.033 307.174);
    --color-purple-200: oklch(90.2% 0.063 306.703);
    --color-purple-300: oklch(82.7% 0.119 306.383);
    --color-purple-400: oklch(71.4% 0.203 305.504);
    --color-purple-500: oklch(62.7% 0.265 303.9);
    --color-purple-600: oklch(55.8% 0.288 302.321);
    --color-purple-700: oklch(49.6% 0.265 301.924);
    --color-purple-800: oklch(43.8% 0.218 303.724);
    --color-purple-900: oklch(38.1% 0.176 304.987);
    --color-purple-950: oklch(29.1% 0.149 302.717);
    --color-pink-50: oklch(97.1% 0.014 343.198);
    --color-pink-100: oklch(94.8% 0.028 342.258);
    --color-pink-400: oklch(71.8% 0.202 349.761);
    --color-pink-500: oklch(65.6% 0.241 354.308);
    --color-pink-900: oklch(40.8% 0.153 2.432);
    --color-slate-50: oklch(98.4% 0.003 247.858);
    --color-slate-100: oklch(96.8% 0.007 247.896);
    --color-slate-200: oklch(92.9% 0.013 255.508);
    --color-slate-300: oklch(86.9% 0.022 252.894);
    --color-slate-400: oklch(70.4% 0.04 256.788);
    --color-slate-500: oklch(55.4% 0.046 257.417);
    --color-slate-600: oklch(44.6% 0.043 257.281);
    --color-slate-700: oklch(37.2% 0.044 257.287);
    --color-slate-800: oklch(27.9% 0.041 260.031);
    --color-slate-900: oklch(20.8% 0.042 265.755);
    --color-slate-950: oklch(12.9% 0.042 264.695);
    --color-gray-50: oklch(98.5% 0.002 247.839);
    --color-gray-100: oklch(96.7% 0.003 264.542);
    --color-gray-200: oklch(92.8% 0.006 264.531);
    --color-gray-300: oklch(87.2% 0.01 258.338);
    --color-gray-400: oklch(70.7% 0.022 261.325);
    --color-gray-500: oklch(55.1% 0.027 264.364);
    --color-gray-600: oklch(44.6% 0.03 256.802);
    --color-gray-700: oklch(37.3% 0.034 259.733);
    --color-gray-900: oklch(21% 0.034 264.665);
    --color-stone-50: oklch(98.5% 0.001 106.423);
    --color-stone-100: oklch(97% 0.001 106.424);
    --color-stone-200: oklch(92.3% 0.003 48.717);
    --color-stone-300: oklch(86.9% 0.005 56.366);
    --color-stone-900: oklch(21.6% 0.006 56.043);
    --color-black: #000;
    --color-white: #fff;
    --spacing: 0.25rem;
    --breakpoint-sm: 40rem;
    --breakpoint-md: 48rem;
    --breakpoint-lg: 64rem;
    --breakpoint-xl: 80rem;
    --container-md: 28rem;
    --container-lg: 32rem;
    --container-2xl: 42rem;
    --container-3xl: 48rem;
    --container-4xl: 56rem;
    --container-6xl: 72rem;
    --container-7xl: 80rem;
    --text-xs: 0.75rem;
    --text-xs--line-height: calc(1 / 0.75);
    --text-sm: 0.875rem;
    --text-sm--line-height: calc(1.25 / 0.875);
    --text-base: 1rem;
    --text-base--line-height: calc(1.5 / 1);
    --text-lg: 1.125rem;
    --text-lg--line-height: calc(1.75 / 1.125);
    --text-xl: 1.25rem;
    --text-xl--line-height: calc(1.75 / 1.25);
    --text-2xl: 1.5rem;
    --text-2xl--line-height: calc(2 / 1.5);
    --text-3xl: 1.875rem;
    --text-3xl--line-height: calc(2.25 / 1.875);
    --text-4xl: 2.25rem;
    --text-4xl--line-height: calc(2.5 / 2.25);
    --text-5xl: 3rem;
    --text-5xl--line-height: 1;
    --text-6xl: 3.75rem;
    --text-6xl--line-height: 1;
    --text-7xl: 4.5rem;
    --text-7xl--line-height: 1;
    --text-8xl: 6rem;
    --text-8xl--line-height: 1;
    --font-weight-extralight: 200;
    --font-weight-light: 300;
    --font-weight-normal: 400;
    --font-weight-medium: 500;
    --font-weight-semibold: 600;
    --font-weight-bold: 700;
    --font-weight-extrabold: 800;
    --font-weight-black: 900;
    --tracking-wide: 0.025em;
    --leading-tight: 1.25;
    --leading-relaxed: 1.625;
    --radius-sm: 0.25rem;
    --radius-md: 0.375rem;
    --radius-lg: 0.5rem;
    --radius-xl: 0.75rem;
    --radius-2xl: 1rem;
    --radius-3xl: 1.5rem;
    --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
    --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
    --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
    --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
    --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25);
    --animate-bounce: bounce 1s infinite;
    --blur-sm: 8px;
    --default-transition-duration: 150ms;
    --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
    --default-font-family: var(--font-sans);
    --default-mono-font-family: var(--font-mono);
  }
}
@layer base {
  *,
  ::after,
  ::before,
  ::backdrop,
  ::file-selector-button {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
    border: 0 solid;
  }
  html,
  :host {
    line-height: 1.5;
    -webkit-text-size-adjust: 100%;
    -moz-tab-size: 4;
      -o-tab-size: 4;
         tab-size: 4;
    font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");
    font-feature-settings: var(--default-font-feature-settings, normal);
    font-variation-settings: var(--default-font-variation-settings, normal);
    -webkit-tap-highlight-color: transparent;
  }
  hr {
    height: 0;
    color: inherit;
    border-top-width: 1px;
  }
  abbr:where([title]) {
    -webkit-text-decoration: underline dotted;
    text-decoration: underline dotted;
  }
  h1,
  h2,
  h3,
  h4,
  h5,
  h6 {
    font-size: inherit;
    font-weight: inherit;
  }
  a {
    color: inherit;
    -webkit-text-decoration: inherit;
    text-decoration: inherit;
  }
  b,
  strong {
    font-weight: bolder;
  }
  code,
  kbd,
  samp,
  pre {
    font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);
    font-feature-settings: var(--default-mono-font-feature-settings, normal);
    font-variation-settings: var(--default-mono-font-variation-settings, normal);
    font-size: 1em;
  }
  small {
    font-size: 80%;
  }
  sub,
  sup {
    font-size: 75%;
    line-height: 0;
    position: relative;
    vertical-align: baseline;
  }
  sub {
    bottom: -0.25em;
  }
  sup {
    top: -0.5em;
  }
  table {
    text-indent: 0;
    border-color: inherit;
    border-collapse: collapse;
  }
  :-moz-focusring {
    outline: auto;
  }
  progress {
    vertical-align: baseline;
  }
  summary {
    display: list-item;
  }
  ol,
  ul,
  menu {
    list-style: none;
  }
  img,
  svg,
  video,
  canvas,
  audio,
  iframe,
  embed,
  object {
    display: block;
    vertical-align: middle;
  }
  img,
  video {
    max-width: 100%;
    height: auto;
  }
  button,
  input,
  select,
  optgroup,
  textarea,
  ::file-selector-button {
    font: inherit;
    font-feature-settings: inherit;
    font-variation-settings: inherit;
    letter-spacing: inherit;
    color: inherit;
    border-radius: 0;
    background-color: transparent;
    opacity: 1;
  }
  :where(select:is([multiple], [size])) optgroup {
    font-weight: bolder;
  }
  :where(select:is([multiple], [size])) optgroup option {
    padding-inline-start: 20px;
  }
  ::file-selector-button {
    margin-inline-end: 4px;
  }
  ::-moz-placeholder {
    opacity: 1;
  }
  ::placeholder {
    opacity: 1;
  }
  @supports (not (-webkit-appearance: -apple-pay-button))  or
    (contain-intrinsic-size: 1px) {
    ::-moz-placeholder {
      color: currentcolor;
      @supports (color: color-mix(in lab, red, red)) {
        color: color-mix(in oklab, currentcolor 50%, transparent);
      }
    }
    ::placeholder {
      color: currentcolor;
      @supports (color: color-mix(in lab, red, red)) {
        color: color-mix(in oklab, currentcolor 50%, transparent);
      }
    }
  }
  textarea {
    resize: vertical;
  }
  ::-webkit-search-decoration {
    -webkit-appearance: none;
  }
  ::-webkit-date-and-time-value {
    min-height: 1lh;
    text-align: inherit;
  }
  ::-webkit-datetime-edit {
    display: inline-flex;
  }
  ::-webkit-datetime-edit-fields-wrapper {
    padding: 0;
  }
  ::-webkit-datetime-edit,
  ::-webkit-datetime-edit-year-field,
  ::-webkit-datetime-edit-month-field,
  ::-webkit-datetime-edit-day-field,
  ::-webkit-datetime-edit-hour-field,
  ::-webkit-datetime-edit-minute-field,
  ::-webkit-datetime-edit-second-field,
  ::-webkit-datetime-edit-millisecond-field,
  ::-webkit-datetime-edit-meridiem-field {
    padding-block: 0;
  }
  :-moz-ui-invalid {
    box-shadow: none;
  }
  button,
  input:where([type="button"], [type="reset"], [type="submit"]),
  ::file-selector-button {
    -webkit-appearance: button;
       -moz-appearance: button;
            appearance: button;
  }
  ::-webkit-inner-spin-button,
  ::-webkit-outer-spin-button {
    height: auto;
  }
  [hidden]:where(:not([hidden="until-found"])) {
    display: none !important;
  }
}
@layer utilities {
  .collapse {
    visibility: collapse;
  }
  .invisible {
    visibility: hidden;
  }
  .visible {
    visibility: visible;
  }
  .sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border-width: 0;
  }
  .absolute {
    position: absolute;
  }
  .fixed {
    position: fixed;
  }
  .relative {
    position: relative;
  }
  .static {
    position: static;
  }
  .inset-0 {
    inset: calc(var(--spacing) * 0);
  }
  .-top-4 {
    top: calc(var(--spacing) * -4);
  }
  .top-0 {
    top: calc(var(--spacing) * 0);
  }
  .top-1\/2 {
    top: calc(1/2 * 100%);
  }
  .top-4 {
    top: calc(var(--spacing) * 4);
  }
  .top-20 {
    top: calc(var(--spacing) * 20);
  }
  .right-4 {
    right: calc(var(--spacing) * 4);
  }
  .bottom-4 {
    bottom: calc(var(--spacing) * 4);
  }
  .left-0 {
    left: calc(var(--spacing) * 0);
  }
  .left-1\/2 {
    left: calc(1/2 * 100%);
  }
  .left-4 {
    left: calc(var(--spacing) * 4);
  }
  .z-30 {
    z-index: 30;
  }
  .z-40 {
    z-index: 40;
  }
  .z-50 {
    z-index: 50;
  }
  .container {
    width: 100%;
    @media (width >= 40rem) {
      max-width: 40rem;
    }
    @media (width >= 48rem) {
      max-width: 48rem;
    }
    @media (width >= 64rem) {
      max-width: 64rem;
    }
    @media (width >= 80rem) {
      max-width: 80rem;
    }
    @media (width >= 96rem) {
      max-width: 96rem;
    }
  }
  .mx-auto {
    margin-inline: auto;
  }
  .mt-0\.5 {
    margin-top: calc(var(--spacing) * 0.5);
  }
  .mt-1 {
    margin-top: calc(var(--spacing) * 1);
  }
  .mt-2 {
    margin-top: calc(var(--spacing) * 2);
  }
  .mt-3 {
    margin-top: calc(var(--spacing) * 3);
  }
  .mt-4 {
    margin-top: calc(var(--spacing) * 4);
  }
  .mt-6 {
    margin-top: calc(var(--spacing) * 6);
  }
  .mt-8 {
    margin-top: calc(var(--spacing) * 8);
  }
  .mt-12 {
    margin-top: calc(var(--spacing) * 12);
  }
  .mt-16 {
    margin-top: calc(var(--spacing) * 16);
  }
  .mr-2 {
    margin-right: calc(var(--spacing) * 2);
  }
  .mr-3 {
    margin-right: calc(var(--spacing) * 3);
  }
  .mr-6 {
    margin-right: calc(var(--spacing) * 6);
  }
  .mb-1 {
    margin-bottom: calc(var(--spacing) * 1);
  }
  .mb-2 {
    margin-bottom: calc(var(--spacing) * 2);
  }
  .mb-3 {
    margin-bottom: calc(var(--spacing) * 3);
  }
  .mb-4 {
    margin-bottom: calc(var(--spacing) * 4);
  }
  .mb-6 {
    margin-bottom: calc(var(--spacing) * 6);
  }
  .mb-8 {
    margin-bottom: calc(var(--spacing) * 8);
  }
  .mb-12 {
    margin-bottom: calc(var(--spacing) * 12);
  }
  .mb-16 {
    margin-bottom: calc(var(--spacing) * 16);
  }
  .mb-20 {
    margin-bottom: calc(var(--spacing) * 20);
  }
  .ml-1 {
    margin-left: calc(var(--spacing) * 1);
  }
  .ml-2 {
    margin-left: calc(var(--spacing) * 2);
  }
  .block {
    display: block;
  }
  .flex {
    display: flex;
  }
  .grid {
    display: grid;
  }
  .hidden {
    display: none;
  }
  .inline {
    display: inline;
  }
  .inline-block {
    display: inline-block;
  }
  .inline-flex {
    display: inline-flex;
  }
  .table {
    display: table;
  }
  .h-0\.5 {
    height: calc(var(--spacing) * 0.5);
  }
  .h-2 {
    height: calc(var(--spacing) * 2);
  }
  .h-3 {
    height: calc(var(--spacing) * 3);
  }
  .h-4 {
    height: calc(var(--spacing) * 4);
  }
  .h-5 {
    height: calc(var(--spacing) * 5);
  }
  .h-6 {
    height: calc(var(--spacing) * 6);
  }
  .h-8 {
    height: calc(var(--spacing) * 8);
  }
  .h-10 {
    height: calc(var(--spacing) * 10);
  }
  .h-12 {
    height: calc(var(--spacing) * 12);
  }
  .h-16 {
    height: calc(var(--spacing) * 16);
  }
  .h-20 {
    height: calc(var(--spacing) * 20);
  }
  .h-full {
    height: 100%;
  }
  .h-screen {
    height: 100vh;
  }
  .max-h-32 {
    max-height: calc(var(--spacing) * 32);
  }
  .min-h-\[60vh\] {
    min-height: 60vh;
  }
  .min-h-screen {
    min-height: 100vh;
  }
  .w-0\.5 {
    width: calc(var(--spacing) * 0.5);
  }
  .w-2 {
    width: calc(var(--spacing) * 2);
  }
  .w-3 {
    width: calc(var(--spacing) * 3);
  }
  .w-4 {
    width: calc(var(--spacing) * 4);
  }
  .w-5 {
    width: calc(var(--spacing) * 5);
  }
  .w-6 {
    width: calc(var(--spacing) * 6);
  }
  .w-8 {
    width: calc(var(--spacing) * 8);
  }
  .w-10 {
    width: calc(var(--spacing) * 10);
  }
  .w-12 {
    width: calc(var(--spacing) * 12);
  }
  .w-16 {
    width: calc(var(--spacing) * 16);
  }
  .w-20 {
    width: calc(var(--spacing) * 20);
  }
  .w-64 {
    width: calc(var(--spacing) * 64);
  }
  .w-full {
    width: 100%;
  }
  .max-w-2xl {
    max-width: var(--container-2xl);
  }
  .max-w-3xl {
    max-width: var(--container-3xl);
  }
  .max-w-4xl {
    max-width: var(--container-4xl);
  }
  .max-w-6xl {
    max-width: var(--container-6xl);
  }
  .max-w-7xl {
    max-width: var(--container-7xl);
  }
  .max-w-md {
    max-width: var(--container-md);
  }
  .flex-1 {
    flex: 1;
  }
  .flex-shrink-0 {
    flex-shrink: 0;
  }
  .grow {
    flex-grow: 1;
  }
  .border-collapse {
    border-collapse: collapse;
  }
  .-translate-x-1\/2 {
    --tw-translate-x: calc(calc(1/2 * 100%) * -1);
    translate: var(--tw-translate-x) var(--tw-translate-y);
  }
  .-translate-x-full {
    --tw-translate-x: -100%;
    translate: var(--tw-translate-x) var(--tw-translate-y);
  }
  .translate-x-0 {
    --tw-translate-x: calc(var(--spacing) * 0);
    translate: var(--tw-translate-x) var(--tw-translate-y);
  }
  .-translate-y-1\/2 {
    --tw-translate-y: calc(calc(1/2 * 100%) * -1);
    translate: var(--tw-translate-x) var(--tw-translate-y);
  }
  .scale-105 {
    --tw-scale-x: 105%;
    --tw-scale-y: 105%;
    --tw-scale-z: 105%;
    scale: var(--tw-scale-x) var(--tw-scale-y);
  }
  .rotate-180 {
    rotate: 180deg;
  }
  .transform {
    transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);
  }
  .cursor-not-allowed {
    cursor: not-allowed;
  }
  .cursor-pointer {
    cursor: pointer;
  }
  .resize {
    resize: both;
  }
  .resize-none {
    resize: none;
  }
  .list-inside {
    list-style-position: inside;
  }
  .list-disc {
    list-style-type: disc;
  }
  .grid-cols-1 {
    grid-template-columns: repeat(1, minmax(0, 1fr));
  }
  .grid-cols-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .grid-cols-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .flex-col {
    flex-direction: column;
  }
  .flex-row {
    flex-direction: row;
  }
  .flex-wrap {
    flex-wrap: wrap;
  }
  .items-center {
    align-items: center;
  }
  .items-start {
    align-items: flex-start;
  }
  .justify-between {
    justify-content: space-between;
  }
  .justify-center {
    justify-content: center;
  }
  .gap-2 {
    gap: calc(var(--spacing) * 2);
  }
  .gap-3 {
    gap: calc(var(--spacing) * 3);
  }
  .gap-4 {
    gap: calc(var(--spacing) * 4);
  }
  .gap-6 {
    gap: calc(var(--spacing) * 6);
  }
  .gap-8 {
    gap: calc(var(--spacing) * 8);
  }
  .gap-12 {
    gap: calc(var(--spacing) * 12);
  }
  .gap-16 {
    gap: calc(var(--spacing) * 16);
  }
  .space-y-1 {
    :where(& > :not(:last-child)) {
      --tw-space-y-reverse: 0;
      margin-block-start: calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));
      margin-block-end: calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)));
    }
  }
  .space-y-2 {
    :where(& > :not(:last-child)) {
      --tw-space-y-reverse: 0;
      margin-block-start: calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));
      margin-block-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)));
    }
  }
  .space-y-3 {
    :where(& > :not(:last-child)) {
      --tw-space-y-reverse: 0;
      margin-block-start: calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));
      margin-block-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)));
    }
  }
  .space-y-4 {
    :where(& > :not(:last-child)) {
      --tw-space-y-reverse: 0;
      margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));
      margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));
    }
  }
  .space-y-6 {
    :where(& > :not(:last-child)) {
      --tw-space-y-reverse: 0;
      margin-block-start: calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));
      margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));
    }
  }
  .space-y-8 {
    :where(& > :not(:last-child)) {
      --tw-space-y-reverse: 0;
      margin-block-start: calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));
      margin-block-end: calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)));
    }
  }
  .space-y-12 {
    :where(& > :not(:last-child)) {
      --tw-space-y-reverse: 0;
      margin-block-start: calc(calc(var(--spacing) * 12) * var(--tw-space-y-reverse));
      margin-block-end: calc(calc(var(--spacing) * 12) * calc(1 - var(--tw-space-y-reverse)));
    }
  }
  .space-x-2 {
    :where(& > :not(:last-child)) {
      --tw-space-x-reverse: 0;
      margin-inline-start: calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));
      margin-inline-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)));
    }
  }
  .space-x-3 {
    :where(& > :not(:last-child)) {
      --tw-space-x-reverse: 0;
      margin-inline-start: calc(calc(var(--spacing) * 3) * var(--tw-space-x-reverse));
      margin-inline-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-x-reverse)));
    }
  }
  .space-x-4 {
    :where(& > :not(:last-child)) {
      --tw-space-x-reverse: 0;
      margin-inline-start: calc(calc(var(--spacing) * 4) * var(--tw-space-x-reverse));
      margin-inline-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-x-reverse)));
    }
  }
  .self-center {
    align-self: center;
  }
  .overflow-hidden {
    overflow: hidden;
  }
  .overflow-x-auto {
    overflow-x: auto;
  }
  .overflow-y-auto {
    overflow-y: auto;
  }
  .scroll-smooth {
    scroll-behavior: smooth;
  }
  .rounded {
    border-radius: 0.25rem;
  }
  .rounded-2xl {
    border-radius: var(--radius-2xl);
  }
  .rounded-3xl {
    border-radius: var(--radius-3xl);
  }
  .rounded-full {
    border-radius: calc(infinity * 1px);
  }
  .rounded-lg {
    border-radius: var(--radius-lg);
  }
  .rounded-md {
    border-radius: var(--radius-md);
  }
  .rounded-xl {
    border-radius: var(--radius-xl);
  }
  .border {
    border-style: var(--tw-border-style);
    border-width: 1px;
  }
  .border-2 {
    border-style: var(--tw-border-style);
    border-width: 2px;
  }
  .border-r {
    border-right-style: var(--tw-border-style);
    border-right-width: 1px;
  }
  .border-r-2 {
    border-right-style: var(--tw-border-style);
    border-right-width: 2px;
  }
  .border-b {
    border-bottom-style: var(--tw-border-style);
    border-bottom-width: 1px;
  }
  .border-b-2 {
    border-bottom-style: var(--tw-border-style);
    border-bottom-width: 2px;
  }
  .border-l-4 {
    border-left-style: var(--tw-border-style);
    border-left-width: 4px;
  }
  .border-blue-200 {
    border-color: var(--color-blue-200);
  }
  .border-blue-500 {
    border-color: var(--color-blue-500);
  }
  .border-blue-500\/30 {
    border-color: color-mix(in srgb, oklch(62.3% 0.214 259.815) 30%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      border-color: color-mix(in oklab, var(--color-blue-500) 30%, transparent);
    }
  }
  .border-gray-200 {
    border-color: var(--color-gray-200);
  }
  .border-green-200 {
    border-color: var(--color-green-200);
  }
  .border-green-500 {
    border-color: var(--color-green-500);
  }
  .border-orange-200 {
    border-color: var(--color-orange-200);
  }
  .border-orange-500 {
    border-color: var(--color-orange-500);
  }
  .border-orange-600 {
    border-color: var(--color-orange-600);
  }
  .border-purple-200 {
    border-color: var(--color-purple-200);
  }
  .border-red-200 {
    border-color: var(--color-red-200);
  }
  .border-red-500 {
    border-color: var(--color-red-500);
  }
  .border-stone-200 {
    border-color: var(--color-stone-200);
  }
  .border-stone-300 {
    border-color: var(--color-stone-300);
  }
  .border-white\/10 {
    border-color: color-mix(in srgb, #fff 10%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      border-color: color-mix(in oklab, var(--color-white) 10%, transparent);
    }
  }
  .border-white\/30 {
    border-color: color-mix(in srgb, #fff 30%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      border-color: color-mix(in oklab, var(--color-white) 30%, transparent);
    }
  }
  .border-yellow-200 {
    border-color: var(--color-yellow-200);
  }
  .border-yellow-500 {
    border-color: var(--color-yellow-500);
  }
  .bg-black {
    background-color: var(--color-black);
  }
  .bg-blue-50 {
    background-color: var(--color-blue-50);
  }
  .bg-blue-100 {
    background-color: var(--color-blue-100);
  }
  .bg-blue-400 {
    background-color: var(--color-blue-400);
  }
  .bg-blue-500 {
    background-color: var(--color-blue-500);
  }
  .bg-blue-500\/20 {
    background-color: color-mix(in srgb, oklch(62.3% 0.214 259.815) 20%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      background-color: color-mix(in oklab, var(--color-blue-500) 20%, transparent);
    }
  }
  .bg-blue-600 {
    background-color: var(--color-blue-600);
  }
  .bg-gray-50 {
    background-color: var(--color-gray-50);
  }
  .bg-gray-300 {
    background-color: var(--color-gray-300);
  }
  .bg-green-50 {
    background-color: var(--color-green-50);
  }
  .bg-green-100 {
    background-color: var(--color-green-100);
  }
  .bg-green-500 {
    background-color: var(--color-green-500);
  }
  .bg-orange-50 {
    background-color: var(--color-orange-50);
  }
  .bg-orange-100 {
    background-color: var(--color-orange-100);
  }
  .bg-orange-500 {
    background-color: var(--color-orange-500);
  }
  .bg-orange-600 {
    background-color: var(--color-orange-600);
  }
  .bg-purple-50 {
    background-color: var(--color-purple-50);
  }
  .bg-purple-100 {
    background-color: var(--color-purple-100);
  }
  .bg-purple-400 {
    background-color: var(--color-purple-400);
  }
  .bg-purple-500 {
    background-color: var(--color-purple-500);
  }
  .bg-red-50 {
    background-color: var(--color-red-50);
  }
  .bg-red-500 {
    background-color: var(--color-red-500);
  }
  .bg-slate-50 {
    background-color: var(--color-slate-50);
  }
  .bg-slate-100 {
    background-color: var(--color-slate-100);
  }
  .bg-slate-200 {
    background-color: var(--color-slate-200);
  }
  .bg-slate-900 {
    background-color: var(--color-slate-900);
  }
  .bg-stone-50 {
    background-color: var(--color-stone-50);
  }
  .bg-white {
    background-color: var(--color-white);
  }
  .bg-white\/5 {
    background-color: color-mix(in srgb, #fff 5%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      background-color: color-mix(in oklab, var(--color-white) 5%, transparent);
    }
  }
  .bg-white\/10 {
    background-color: color-mix(in srgb, #fff 10%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      background-color: color-mix(in oklab, var(--color-white) 10%, transparent);
    }
  }
  .bg-white\/20 {
    background-color: color-mix(in srgb, #fff 20%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      background-color: color-mix(in oklab, var(--color-white) 20%, transparent);
    }
  }
  .bg-yellow-50 {
    background-color: var(--color-yellow-50);
  }
  .bg-gradient-to-br {
    --tw-gradient-position: to bottom right in oklab;
    background-image: linear-gradient(var(--tw-gradient-stops));
  }
  .bg-gradient-to-r {
    --tw-gradient-position: to right in oklab;
    background-image: linear-gradient(var(--tw-gradient-stops));
  }
  .from-blue-50 {
    --tw-gradient-from: var(--color-blue-50);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-blue-100 {
    --tw-gradient-from: var(--color-blue-100);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-blue-400 {
    --tw-gradient-from: var(--color-blue-400);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-blue-500 {
    --tw-gradient-from: var(--color-blue-500);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-blue-500\/5 {
    --tw-gradient-from: color-mix(in srgb, oklch(62.3% 0.214 259.815) 5%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      --tw-gradient-from: color-mix(in oklab, var(--color-blue-500) 5%, transparent);
    }
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-blue-500\/10 {
    --tw-gradient-from: color-mix(in srgb, oklch(62.3% 0.214 259.815) 10%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      --tw-gradient-from: color-mix(in oklab, var(--color-blue-500) 10%, transparent);
    }
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-blue-600 {
    --tw-gradient-from: var(--color-blue-600);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-green-50 {
    --tw-gradient-from: var(--color-green-50);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-green-100 {
    --tw-gradient-from: var(--color-green-100);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-green-500 {
    --tw-gradient-from: var(--color-green-500);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-green-600 {
    --tw-gradient-from: var(--color-green-600);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-orange-50 {
    --tw-gradient-from: var(--color-orange-50);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-orange-100 {
    --tw-gradient-from: var(--color-orange-100);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-purple-50 {
    --tw-gradient-from: var(--color-purple-50);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-purple-100 {
    --tw-gradient-from: var(--color-purple-100);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-purple-500 {
    --tw-gradient-from: var(--color-purple-500);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-slate-50 {
    --tw-gradient-from: var(--color-slate-50);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-slate-900 {
    --tw-gradient-from: var(--color-slate-900);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .via-blue-900 {
    --tw-gradient-via: var(--color-blue-900);
    --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);
    --tw-gradient-stops: var(--tw-gradient-via-stops);
  }
  .via-purple-400 {
    --tw-gradient-via: var(--color-purple-400);
    --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);
    --tw-gradient-stops: var(--tw-gradient-via-stops);
  }
  .to-blue-600 {
    --tw-gradient-to: var(--color-blue-600);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-cyan-50 {
    --tw-gradient-to: var(--color-cyan-50);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-cyan-100 {
    --tw-gradient-to: var(--color-cyan-100);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-emerald-50 {
    --tw-gradient-to: var(--color-emerald-50);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-emerald-100 {
    --tw-gradient-to: var(--color-emerald-100);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-green-600 {
    --tw-gradient-to: var(--color-green-600);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-indigo-50 {
    --tw-gradient-to: var(--color-indigo-50);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-indigo-100 {
    --tw-gradient-to: var(--color-indigo-100);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-pink-50 {
    --tw-gradient-to: var(--color-pink-50);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-pink-100 {
    --tw-gradient-to: var(--color-pink-100);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-pink-400 {
    --tw-gradient-to: var(--color-pink-400);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-purple-50 {
    --tw-gradient-to: var(--color-purple-50);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-purple-500\/5 {
    --tw-gradient-to: color-mix(in srgb, oklch(62.7% 0.265 303.9) 5%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      --tw-gradient-to: color-mix(in oklab, var(--color-purple-500) 5%, transparent);
    }
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-purple-500\/10 {
    --tw-gradient-to: color-mix(in srgb, oklch(62.7% 0.265 303.9) 10%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      --tw-gradient-to: color-mix(in oklab, var(--color-purple-500) 10%, transparent);
    }
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-purple-600 {
    --tw-gradient-to: var(--color-purple-600);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-purple-700 {
    --tw-gradient-to: var(--color-purple-700);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-purple-900 {
    --tw-gradient-to: var(--color-purple-900);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-red-50 {
    --tw-gradient-to: var(--color-red-50);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-red-100 {
    --tw-gradient-to: var(--color-red-100);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-stone-50 {
    --tw-gradient-to: var(--color-stone-50);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-teal-700 {
    --tw-gradient-to: var(--color-teal-700);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .bg-clip-text {
    -webkit-background-clip: text;
            background-clip: text;
  }
  .p-1 {
    padding: calc(var(--spacing) * 1);
  }
  .p-1\.5 {
    padding: calc(var(--spacing) * 1.5);
  }
  .p-2 {
    padding: calc(var(--spacing) * 2);
  }
  .p-3 {
    padding: calc(var(--spacing) * 3);
  }
  .p-4 {
    padding: calc(var(--spacing) * 4);
  }
  .p-6 {
    padding: calc(var(--spacing) * 6);
  }
  .p-8 {
    padding: calc(var(--spacing) * 8);
  }
  .p-10 {
    padding: calc(var(--spacing) * 10);
  }
  .p-12 {
    padding: calc(var(--spacing) * 12);
  }
  .px-2 {
    padding-inline: calc(var(--spacing) * 2);
  }
  .px-3 {
    padding-inline: calc(var(--spacing) * 3);
  }
  .px-4 {
    padding-inline: calc(var(--spacing) * 4);
  }
  .px-6 {
    padding-inline: calc(var(--spacing) * 6);
  }
  .px-12 {
    padding-inline: calc(var(--spacing) * 12);
  }
  .px-16 {
    padding-inline: calc(var(--spacing) * 16);
  }
  .py-1 {
    padding-block: calc(var(--spacing) * 1);
  }
  .py-1\.5 {
    padding-block: calc(var(--spacing) * 1.5);
  }
  .py-2 {
    padding-block: calc(var(--spacing) * 2);
  }
  .py-3 {
    padding-block: calc(var(--spacing) * 3);
  }
  .py-4 {
    padding-block: calc(var(--spacing) * 4);
  }
  .py-6 {
    padding-block: calc(var(--spacing) * 6);
  }
  .py-8 {
    padding-block: calc(var(--spacing) * 8);
  }
  .py-12 {
    padding-block: calc(var(--spacing) * 12);
  }
  .py-16 {
    padding-block: calc(var(--spacing) * 16);
  }
  .py-24 {
    padding-block: calc(var(--spacing) * 24);
  }
  .py-32 {
    padding-block: calc(var(--spacing) * 32);
  }
  .pb-6 {
    padding-bottom: calc(var(--spacing) * 6);
  }
  .pl-3 {
    padding-left: calc(var(--spacing) * 3);
  }
  .pl-4 {
    padding-left: calc(var(--spacing) * 4);
  }
  .pl-8 {
    padding-left: calc(var(--spacing) * 8);
  }
  .pl-12 {
    padding-left: calc(var(--spacing) * 12);
  }
  .text-center {
    text-align: center;
  }
  .text-left {
    text-align: left;
  }
  .font-mono {
    font-family: var(--font-mono);
  }
  .font-sans {
    font-family: var(--font-sans);
  }
  .text-2xl {
    font-size: var(--text-2xl);
    line-height: var(--tw-leading, var(--text-2xl--line-height));
  }
  .text-3xl {
    font-size: var(--text-3xl);
    line-height: var(--tw-leading, var(--text-3xl--line-height));
  }
  .text-4xl {
    font-size: var(--text-4xl);
    line-height: var(--tw-leading, var(--text-4xl--line-height));
  }
  .text-5xl {
    font-size: var(--text-5xl);
    line-height: var(--tw-leading, var(--text-5xl--line-height));
  }
  .text-6xl {
    font-size: var(--text-6xl);
    line-height: var(--tw-leading, var(--text-6xl--line-height));
  }
  .text-base {
    font-size: var(--text-base);
    line-height: var(--tw-leading, var(--text-base--line-height));
  }
  .text-lg {
    font-size: var(--text-lg);
    line-height: var(--tw-leading, var(--text-lg--line-height));
  }
  .text-sm {
    font-size: var(--text-sm);
    line-height: var(--tw-leading, var(--text-sm--line-height));
  }
  .text-xl {
    font-size: var(--text-xl);
    line-height: var(--tw-leading, var(--text-xl--line-height));
  }
  .text-xs {
    font-size: var(--text-xs);
    line-height: var(--tw-leading, var(--text-xs--line-height));
  }
  .leading-relaxed {
    --tw-leading: var(--leading-relaxed);
    line-height: var(--leading-relaxed);
  }
  .leading-tight {
    --tw-leading: var(--leading-tight);
    line-height: var(--leading-tight);
  }
  .font-black {
    --tw-font-weight: var(--font-weight-black);
    font-weight: var(--font-weight-black);
  }
  .font-bold {
    --tw-font-weight: var(--font-weight-bold);
    font-weight: var(--font-weight-bold);
  }
  .font-medium {
    --tw-font-weight: var(--font-weight-medium);
    font-weight: var(--font-weight-medium);
  }
  .font-normal {
    --tw-font-weight: var(--font-weight-normal);
    font-weight: var(--font-weight-normal);
  }
  .font-semibold {
    --tw-font-weight: var(--font-weight-semibold);
    font-weight: var(--font-weight-semibold);
  }
  .tracking-wide {
    --tw-tracking: var(--tracking-wide);
    letter-spacing: var(--tracking-wide);
  }
  .text-blue-200 {
    color: var(--color-blue-200);
  }
  .text-blue-400 {
    color: var(--color-blue-400);
  }
  .text-blue-600 {
    color: var(--color-blue-600);
  }
  .text-blue-700 {
    color: var(--color-blue-700);
  }
  .text-blue-800 {
    color: var(--color-blue-800);
  }
  .text-blue-900 {
    color: var(--color-blue-900);
  }
  .text-gray-600 {
    color: var(--color-gray-600);
  }
  .text-gray-700 {
    color: var(--color-gray-700);
  }
  .text-gray-900 {
    color: var(--color-gray-900);
  }
  .text-green-200 {
    color: var(--color-green-200);
  }
  .text-green-400 {
    color: var(--color-green-400);
  }
  .text-green-500 {
    color: var(--color-green-500);
  }
  .text-green-600 {
    color: var(--color-green-600);
  }
  .text-green-700 {
    color: var(--color-green-700);
  }
  .text-green-800 {
    color: var(--color-green-800);
  }
  .text-green-900 {
    color: var(--color-green-900);
  }
  .text-orange-600 {
    color: var(--color-orange-600);
  }
  .text-orange-700 {
    color: var(--color-orange-700);
  }
  .text-orange-800 {
    color: var(--color-orange-800);
  }
  .text-orange-900 {
    color: var(--color-orange-900);
  }
  .text-pink-400 {
    color: var(--color-pink-400);
  }
  .text-purple-400 {
    color: var(--color-purple-400);
  }
  .text-purple-600 {
    color: var(--color-purple-600);
  }
  .text-purple-700 {
    color: var(--color-purple-700);
  }
  .text-purple-800 {
    color: var(--color-purple-800);
  }
  .text-purple-900 {
    color: var(--color-purple-900);
  }
  .text-red-500 {
    color: var(--color-red-500);
  }
  .text-red-600 {
    color: var(--color-red-600);
  }
  .text-red-700 {
    color: var(--color-red-700);
  }
  .text-slate-300 {
    color: var(--color-slate-300);
  }
  .text-slate-400 {
    color: var(--color-slate-400);
  }
  .text-slate-500 {
    color: var(--color-slate-500);
  }
  .text-slate-600 {
    color: var(--color-slate-600);
  }
  .text-slate-700 {
    color: var(--color-slate-700);
  }
  .text-slate-800 {
    color: var(--color-slate-800);
  }
  .text-slate-900 {
    color: var(--color-slate-900);
  }
  .text-transparent {
    color: transparent;
  }
  .text-white {
    color: var(--color-white);
  }
  .text-white\/70 {
    color: color-mix(in srgb, #fff 70%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      color: color-mix(in oklab, var(--color-white) 70%, transparent);
    }
  }
  .text-white\/90 {
    color: color-mix(in srgb, #fff 90%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      color: color-mix(in oklab, var(--color-white) 90%, transparent);
    }
  }
  .text-yellow-600 {
    color: var(--color-yellow-600);
  }
  .text-yellow-800 {
    color: var(--color-yellow-800);
  }
  .uppercase {
    text-transform: uppercase;
  }
  .italic {
    font-style: italic;
  }
  .underline {
    text-decoration-line: underline;
  }
  .antialiased {
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
  }
  .placeholder-slate-500 {
    &::-moz-placeholder {
      color: var(--color-slate-500);
    }
    &::placeholder {
      color: var(--color-slate-500);
    }
  }
  .opacity-20 {
    opacity: 20%;
  }
  .opacity-30 {
    opacity: 30%;
  }
  .opacity-50 {
    opacity: 50%;
  }
  .opacity-80 {
    opacity: 80%;
  }
  .opacity-90 {
    opacity: 90%;
  }
  .shadow {
    --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  .shadow-2xl {
    --tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / 0.25));
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  .shadow-lg {
    --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  .shadow-md {
    --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  .shadow-sm {
    --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  .shadow-xl {
    --tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  .ring {
    --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  .ring-2 {
    --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  .ring-purple-500 {
    --tw-ring-color: var(--color-purple-500);
  }
  .outline {
    outline-style: var(--tw-outline-style);
    outline-width: 1px;
  }
  .grayscale {
    --tw-grayscale: grayscale(100%);
    filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
  }
  .backdrop-blur-sm {
    --tw-backdrop-blur: blur(var(--blur-sm));
    -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
    backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
  }
  .backdrop-filter {
    -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
    backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
  }
  .transition {
    transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, visibility, content-visibility, overlay, pointer-events;
    transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
    transition-duration: var(--tw-duration, var(--default-transition-duration));
  }
  .transition-all {
    transition-property: all;
    transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
    transition-duration: var(--tw-duration, var(--default-transition-duration));
  }
  .transition-colors {
    transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
    transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
    transition-duration: var(--tw-duration, var(--default-transition-duration));
  }
  .transition-shadow {
    transition-property: box-shadow;
    transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
    transition-duration: var(--tw-duration, var(--default-transition-duration));
  }
  .transition-transform {
    transition-property: transform, translate, scale, rotate;
    transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
    transition-duration: var(--tw-duration, var(--default-transition-duration));
  }
  .duration-200 {
    --tw-duration: 200ms;
    transition-duration: 200ms;
  }
  .duration-300 {
    --tw-duration: 300ms;
    transition-duration: 300ms;
  }
  .group-hover\:scale-110 {
    &:is(:where(.group):hover *) {
      @media (hover: hover) {
        --tw-scale-x: 110%;
        --tw-scale-y: 110%;
        --tw-scale-z: 110%;
        scale: var(--tw-scale-x) var(--tw-scale-y);
      }
    }
  }
  .group-hover\:animate-bounce {
    &:is(:where(.group):hover *) {
      @media (hover: hover) {
        animation: var(--animate-bounce);
      }
    }
  }
  .last\:mb-0 {
    &:last-child {
      margin-bottom: calc(var(--spacing) * 0);
    }
  }
  .hover\:-translate-y-2 {
    &:hover {
      @media (hover: hover) {
        --tw-translate-y: calc(var(--spacing) * -2);
        translate: var(--tw-translate-x) var(--tw-translate-y);
      }
    }
  }
  .hover\:scale-105 {
    &:hover {
      @media (hover: hover) {
        --tw-scale-x: 105%;
        --tw-scale-y: 105%;
        --tw-scale-z: 105%;
        scale: var(--tw-scale-x) var(--tw-scale-y);
      }
    }
  }
  .hover\:scale-110 {
    &:hover {
      @media (hover: hover) {
        --tw-scale-x: 110%;
        --tw-scale-y: 110%;
        --tw-scale-z: 110%;
        scale: var(--tw-scale-x) var(--tw-scale-y);
      }
    }
  }
  .hover\:bg-blue-700 {
    &:hover {
      @media (hover: hover) {
        background-color: var(--color-blue-700);
      }
    }
  }
  .hover\:bg-orange-700 {
    &:hover {
      @media (hover: hover) {
        background-color: var(--color-orange-700);
      }
    }
  }
  .hover\:bg-slate-50 {
    &:hover {
      @media (hover: hover) {
        background-color: var(--color-slate-50);
      }
    }
  }
  .hover\:bg-slate-300 {
    &:hover {
      @media (hover: hover) {
        background-color: var(--color-slate-300);
      }
    }
  }
  .hover\:bg-stone-50 {
    &:hover {
      @media (hover: hover) {
        background-color: var(--color-stone-50);
      }
    }
  }
  .hover\:bg-white\/20 {
    &:hover {
      @media (hover: hover) {
        background-color: color-mix(in srgb, #fff 20%, transparent);
        @supports (color: color-mix(in lab, red, red)) {
          background-color: color-mix(in oklab, var(--color-white) 20%, transparent);
        }
      }
    }
  }
  .hover\:from-blue-600 {
    &:hover {
      @media (hover: hover) {
        --tw-gradient-from: var(--color-blue-600);
        --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
      }
    }
  }
  .hover\:to-purple-700 {
    &:hover {
      @media (hover: hover) {
        --tw-gradient-to: var(--color-purple-700);
        --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
      }
    }
  }
  .hover\:text-blue-300 {
    &:hover {
      @media (hover: hover) {
        color: var(--color-blue-300);
      }
    }
  }
  .hover\:text-blue-600 {
    &:hover {
      @media (hover: hover) {
        color: var(--color-blue-600);
      }
    }
  }
  .hover\:text-blue-700 {
    &:hover {
      @media (hover: hover) {
        color: var(--color-blue-700);
      }
    }
  }
  .hover\:text-blue-800 {
    &:hover {
      @media (hover: hover) {
        color: var(--color-blue-800);
      }
    }
  }
  .hover\:text-orange-600 {
    &:hover {
      @media (hover: hover) {
        color: var(--color-orange-600);
      }
    }
  }
  .hover\:text-slate-900 {
    &:hover {
      @media (hover: hover) {
        color: var(--color-slate-900);
      }
    }
  }
  .hover\:underline {
    &:hover {
      @media (hover: hover) {
        text-decoration-line: underline;
      }
    }
  }
  .hover\:shadow-2xl {
    &:hover {
      @media (hover: hover) {
        --tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / 0.25));
        box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
      }
    }
  }
  .hover\:shadow-xl {
    &:hover {
      @media (hover: hover) {
        --tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
        box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
      }
    }
  }
  .focus\:ring-2 {
    &:focus {
      --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
      box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
    }
  }
  .focus\:ring-blue-500 {
    &:focus {
      --tw-ring-color: var(--color-blue-500);
    }
  }
  .focus\:ring-orange-500 {
    &:focus {
      --tw-ring-color: var(--color-orange-500);
    }
  }
  .focus\:ring-offset-2 {
    &:focus {
      --tw-ring-offset-width: 2px;
      --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
    }
  }
  .focus\:outline-none {
    &:focus {
      --tw-outline-style: none;
      outline-style: none;
    }
  }
  .sm\:block {
    @media (width >= 40rem) {
      display: block;
    }
  }
  .sm\:flex-row {
    @media (width >= 40rem) {
      flex-direction: row;
    }
  }
  .sm\:px-6 {
    @media (width >= 40rem) {
      padding-inline: calc(var(--spacing) * 6);
    }
  }
  .sm\:text-5xl {
    @media (width >= 40rem) {
      font-size: var(--text-5xl);
      line-height: var(--tw-leading, var(--text-5xl--line-height));
    }
  }
  .md\:grid-cols-2 {
    @media (width >= 48rem) {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }
  }
  .md\:grid-cols-3 {
    @media (width >= 48rem) {
      grid-template-columns: repeat(3, minmax(0, 1fr));
    }
  }
  .md\:grid-cols-4 {
    @media (width >= 48rem) {
      grid-template-columns: repeat(4, minmax(0, 1fr));
    }
  }
  .md\:flex-col {
    @media (width >= 48rem) {
      flex-direction: column;
    }
  }
  .md\:flex-row {
    @media (width >= 48rem) {
      flex-direction: row;
    }
  }
  .md\:p-5 {
    @media (width >= 48rem) {
      padding: calc(var(--spacing) * 5);
    }
  }
  .md\:py-6 {
    @media (width >= 48rem) {
      padding-block: calc(var(--spacing) * 6);
    }
  }
  .md\:text-3xl {
    @media (width >= 48rem) {
      font-size: var(--text-3xl);
      line-height: var(--tw-leading, var(--text-3xl--line-height));
    }
  }
  .md\:text-4xl {
    @media (width >= 48rem) {
      font-size: var(--text-4xl);
      line-height: var(--tw-leading, var(--text-4xl--line-height));
    }
  }
  .md\:text-5xl {
    @media (width >= 48rem) {
      font-size: var(--text-5xl);
      line-height: var(--tw-leading, var(--text-5xl--line-height));
    }
  }
  .md\:text-6xl {
    @media (width >= 48rem) {
      font-size: var(--text-6xl);
      line-height: var(--tw-leading, var(--text-6xl--line-height));
    }
  }
  .md\:text-7xl {
    @media (width >= 48rem) {
      font-size: var(--text-7xl);
      line-height: var(--tw-leading, var(--text-7xl--line-height));
    }
  }
  .md\:text-8xl {
    @media (width >= 48rem) {
      font-size: var(--text-8xl);
      line-height: var(--tw-leading, var(--text-8xl--line-height));
    }
  }
  .lg\:sticky {
    @media (width >= 64rem) {
      position: sticky;
    }
  }
  .lg\:z-auto {
    @media (width >= 64rem) {
      z-index: auto;
    }
  }
  .lg\:block {
    @media (width >= 64rem) {
      display: block;
    }
  }
  .lg\:hidden {
    @media (width >= 64rem) {
      display: none;
    }
  }
  .lg\:w-1\/4 {
    @media (width >= 64rem) {
      width: calc(1/4 * 100%);
    }
  }
  .lg\:w-3\/4 {
    @media (width >= 64rem) {
      width: calc(3/4 * 100%);
    }
  }
  .lg\:grid-cols-2 {
    @media (width >= 64rem) {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }
  }
  .lg\:grid-cols-3 {
    @media (width >= 64rem) {
      grid-template-columns: repeat(3, minmax(0, 1fr));
    }
  }
  .lg\:flex-row {
    @media (width >= 64rem) {
      flex-direction: row;
    }
  }
  .lg\:px-8 {
    @media (width >= 64rem) {
      padding-inline: calc(var(--spacing) * 8);
    }
  }
  .lg\:py-8 {
    @media (width >= 64rem) {
      padding-block: calc(var(--spacing) * 8);
    }
  }
  .lg\:text-6xl {
    @media (width >= 64rem) {
      font-size: var(--text-6xl);
      line-height: var(--tw-leading, var(--text-6xl--line-height));
    }
  }
  .dark\:border-blue-800 {
    @media (prefers-color-scheme: dark) {
      border-color: var(--color-blue-800);
    }
  }
  .dark\:border-green-800 {
    @media (prefers-color-scheme: dark) {
      border-color: var(--color-green-800);
    }
  }
  .dark\:border-orange-800 {
    @media (prefers-color-scheme: dark) {
      border-color: var(--color-orange-800);
    }
  }
  .dark\:border-purple-800 {
    @media (prefers-color-scheme: dark) {
      border-color: var(--color-purple-800);
    }
  }
  .dark\:border-red-800 {
    @media (prefers-color-scheme: dark) {
      border-color: var(--color-red-800);
    }
  }
  .dark\:border-slate-700 {
    @media (prefers-color-scheme: dark) {
      border-color: var(--color-slate-700);
    }
  }
  .dark\:bg-blue-900\/20 {
    @media (prefers-color-scheme: dark) {
      background-color: color-mix(in srgb, oklch(37.9% 0.146 265.522) 20%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        background-color: color-mix(in oklab, var(--color-blue-900) 20%, transparent);
      }
    }
  }
  .dark\:bg-blue-900\/40 {
    @media (prefers-color-scheme: dark) {
      background-color: color-mix(in srgb, oklch(37.9% 0.146 265.522) 40%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        background-color: color-mix(in oklab, var(--color-blue-900) 40%, transparent);
      }
    }
  }
  .dark\:bg-green-900\/20 {
    @media (prefers-color-scheme: dark) {
      background-color: color-mix(in srgb, oklch(39.3% 0.095 152.535) 20%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        background-color: color-mix(in oklab, var(--color-green-900) 20%, transparent);
      }
    }
  }
  .dark\:bg-green-900\/30 {
    @media (prefers-color-scheme: dark) {
      background-color: color-mix(in srgb, oklch(39.3% 0.095 152.535) 30%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        background-color: color-mix(in oklab, var(--color-green-900) 30%, transparent);
      }
    }
  }
  .dark\:bg-green-900\/40 {
    @media (prefers-color-scheme: dark) {
      background-color: color-mix(in srgb, oklch(39.3% 0.095 152.535) 40%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        background-color: color-mix(in oklab, var(--color-green-900) 40%, transparent);
      }
    }
  }
  .dark\:bg-orange-900 {
    @media (prefers-color-scheme: dark) {
      background-color: var(--color-orange-900);
    }
  }
  .dark\:bg-orange-900\/20 {
    @media (prefers-color-scheme: dark) {
      background-color: color-mix(in srgb, oklch(40.8% 0.123 38.172) 20%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        background-color: color-mix(in oklab, var(--color-orange-900) 20%, transparent);
      }
    }
  }
  .dark\:bg-purple-900\/20 {
    @media (prefers-color-scheme: dark) {
      background-color: color-mix(in srgb, oklch(38.1% 0.176 304.987) 20%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        background-color: color-mix(in oklab, var(--color-purple-900) 20%, transparent);
      }
    }
  }
  .dark\:bg-purple-900\/40 {
    @media (prefers-color-scheme: dark) {
      background-color: color-mix(in srgb, oklch(38.1% 0.176 304.987) 40%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        background-color: color-mix(in oklab, var(--color-purple-900) 40%, transparent);
      }
    }
  }
  .dark\:bg-red-900\/20 {
    @media (prefers-color-scheme: dark) {
      background-color: color-mix(in srgb, oklch(39.6% 0.141 25.723) 20%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        background-color: color-mix(in oklab, var(--color-red-900) 20%, transparent);
      }
    }
  }
  .dark\:bg-slate-800 {
    @media (prefers-color-scheme: dark) {
      background-color: var(--color-slate-800);
    }
  }
  .dark\:bg-slate-900 {
    @media (prefers-color-scheme: dark) {
      background-color: var(--color-slate-900);
    }
  }
  .dark\:bg-slate-900\/30 {
    @media (prefers-color-scheme: dark) {
      background-color: color-mix(in srgb, oklch(20.8% 0.042 265.755) 30%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        background-color: color-mix(in oklab, var(--color-slate-900) 30%, transparent);
      }
    }
  }
  .dark\:bg-slate-900\/50 {
    @media (prefers-color-scheme: dark) {
      background-color: color-mix(in srgb, oklch(20.8% 0.042 265.755) 50%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        background-color: color-mix(in oklab, var(--color-slate-900) 50%, transparent);
      }
    }
  }
  .dark\:bg-slate-950 {
    @media (prefers-color-scheme: dark) {
      background-color: var(--color-slate-950);
    }
  }
  .dark\:bg-yellow-900\/20 {
    @media (prefers-color-scheme: dark) {
      background-color: color-mix(in srgb, oklch(42.1% 0.095 57.708) 20%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        background-color: color-mix(in oklab, var(--color-yellow-900) 20%, transparent);
      }
    }
  }
  .dark\:from-blue-900\/20 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-from: color-mix(in srgb, oklch(37.9% 0.146 265.522) 20%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-from: color-mix(in oklab, var(--color-blue-900) 20%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:from-blue-900\/30 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-from: color-mix(in srgb, oklch(37.9% 0.146 265.522) 30%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-from: color-mix(in oklab, var(--color-blue-900) 30%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:from-green-900\/20 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-from: color-mix(in srgb, oklch(39.3% 0.095 152.535) 20%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-from: color-mix(in oklab, var(--color-green-900) 20%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:from-green-900\/30 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-from: color-mix(in srgb, oklch(39.3% 0.095 152.535) 30%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-from: color-mix(in oklab, var(--color-green-900) 30%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:from-orange-900\/10 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-from: color-mix(in srgb, oklch(40.8% 0.123 38.172) 10%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-from: color-mix(in oklab, var(--color-orange-900) 10%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:from-orange-900\/20 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-from: color-mix(in srgb, oklch(40.8% 0.123 38.172) 20%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-from: color-mix(in oklab, var(--color-orange-900) 20%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:from-orange-900\/30 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-from: color-mix(in srgb, oklch(40.8% 0.123 38.172) 30%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-from: color-mix(in oklab, var(--color-orange-900) 30%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:from-purple-900\/20 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-from: color-mix(in srgb, oklch(38.1% 0.176 304.987) 20%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-from: color-mix(in oklab, var(--color-purple-900) 20%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:from-purple-900\/30 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-from: color-mix(in srgb, oklch(38.1% 0.176 304.987) 30%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-from: color-mix(in oklab, var(--color-purple-900) 30%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:from-slate-900 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-from: var(--color-slate-900);
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:from-slate-950 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-from: var(--color-slate-950);
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:via-blue-950 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-via: var(--color-blue-950);
      --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);
      --tw-gradient-stops: var(--tw-gradient-via-stops);
    }
  }
  .dark\:to-cyan-900\/20 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-to: color-mix(in srgb, oklch(39.8% 0.07 227.392) 20%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-to: color-mix(in oklab, var(--color-cyan-900) 20%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:to-cyan-900\/30 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-to: color-mix(in srgb, oklch(39.8% 0.07 227.392) 30%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-to: color-mix(in oklab, var(--color-cyan-900) 30%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:to-emerald-900\/20 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-to: color-mix(in srgb, oklch(37.8% 0.077 168.94) 20%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-to: color-mix(in oklab, var(--color-emerald-900) 20%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:to-emerald-900\/30 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-to: color-mix(in srgb, oklch(37.8% 0.077 168.94) 30%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-to: color-mix(in oklab, var(--color-emerald-900) 30%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:to-indigo-900\/20 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-to: color-mix(in srgb, oklch(35.9% 0.144 278.697) 20%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-to: color-mix(in oklab, var(--color-indigo-900) 20%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:to-indigo-900\/30 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-to: color-mix(in srgb, oklch(35.9% 0.144 278.697) 30%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-to: color-mix(in oklab, var(--color-indigo-900) 30%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:to-pink-900\/20 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-to: color-mix(in srgb, oklch(40.8% 0.153 2.432) 20%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-to: color-mix(in oklab, var(--color-pink-900) 20%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:to-pink-900\/30 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-to: color-mix(in srgb, oklch(40.8% 0.153 2.432) 30%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-to: color-mix(in oklab, var(--color-pink-900) 30%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:to-purple-900\/20 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-to: color-mix(in srgb, oklch(38.1% 0.176 304.987) 20%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-to: color-mix(in oklab, var(--color-purple-900) 20%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:to-purple-950 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-to: var(--color-purple-950);
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:to-red-900\/10 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-to: color-mix(in srgb, oklch(39.6% 0.141 25.723) 10%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-to: color-mix(in oklab, var(--color-red-900) 10%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:to-red-900\/20 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-to: color-mix(in srgb, oklch(39.6% 0.141 25.723) 20%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-to: color-mix(in oklab, var(--color-red-900) 20%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:to-red-900\/30 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-to: color-mix(in srgb, oklch(39.6% 0.141 25.723) 30%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-to: color-mix(in oklab, var(--color-red-900) 30%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:to-slate-800 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-to: var(--color-slate-800);
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:to-stone-900 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-to: var(--color-stone-900);
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:text-blue-100 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-blue-100);
    }
  }
  .dark\:text-blue-200 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-blue-200);
    }
  }
  .dark\:text-blue-300 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-blue-300);
    }
  }
  .dark\:text-blue-400 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-blue-400);
    }
  }
  .dark\:text-green-100 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-green-100);
    }
  }
  .dark\:text-green-200 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-green-200);
    }
  }
  .dark\:text-green-300 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-green-300);
    }
  }
  .dark\:text-green-400 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-green-400);
    }
  }
  .dark\:text-orange-100 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-orange-100);
    }
  }
  .dark\:text-orange-200 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-orange-200);
    }
  }
  .dark\:text-orange-300 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-orange-300);
    }
  }
  .dark\:text-orange-400 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-orange-400);
    }
  }
  .dark\:text-purple-100 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-purple-100);
    }
  }
  .dark\:text-purple-200 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-purple-200);
    }
  }
  .dark\:text-purple-300 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-purple-300);
    }
  }
  .dark\:text-purple-400 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-purple-400);
    }
  }
  .dark\:text-red-300 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-red-300);
    }
  }
  .dark\:text-red-400 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-red-400);
    }
  }
  .dark\:text-slate-200 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-slate-200);
    }
  }
  .dark\:text-slate-300 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-slate-300);
    }
  }
  .dark\:text-slate-400 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-slate-400);
    }
  }
  .dark\:text-white {
    @media (prefers-color-scheme: dark) {
      color: var(--color-white);
    }
  }
  .dark\:text-yellow-300 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-yellow-300);
    }
  }
  .dark\:text-yellow-400 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-yellow-400);
    }
  }
  .dark\:placeholder-slate-400 {
    @media (prefers-color-scheme: dark) {
      &::-moz-placeholder {
        color: var(--color-slate-400);
      }
      &::placeholder {
        color: var(--color-slate-400);
      }
    }
  }
  .dark\:hover\:bg-slate-800 {
    @media (prefers-color-scheme: dark) {
      &:hover {
        @media (hover: hover) {
          background-color: var(--color-slate-800);
        }
      }
    }
  }
  .dark\:hover\:text-white {
    @media (prefers-color-scheme: dark) {
      &:hover {
        @media (hover: hover) {
          color: var(--color-white);
        }
      }
    }
  }
  .dark\:focus\:ring-offset-slate-800 {
    @media (prefers-color-scheme: dark) {
      &:focus {
        --tw-ring-offset-color: var(--color-slate-800);
      }
    }
  }
  .dark\:focus\:ring-offset-slate-900 {
    @media (prefers-color-scheme: dark) {
      &:focus {
        --tw-ring-offset-color: var(--color-slate-900);
      }
    }
  }
}
.about-page {
  min-height: 100vh;
  background: var(--color-background);
}
.about-hero-background {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: linear-gradient(135deg, rgba(var(--color-primary-rgb), 0.02) 0%, transparent 100%);
  z-index: 1;
}
.about-hero-content {
  position: relative;
  z-index: 2;
}
.about-story-timeline {
  position: relative;
}
.about-story-timeline::before {
  content: '';
  position: absolute;
  left: 2rem;
  top: 0;
  bottom: 0;
  width: 2px;
  background: var(--color-border);
}
.about-story-chapter {
  position: relative;
  padding-left: 4rem;
}
.about-story-year {
  position: absolute;
  left: 0;
  top: 0;
  width: 4rem;
  height: 4rem;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--color-background);
  border: 2px solid var(--color-primary);
  border-radius: 50%;
  font-weight: 700;
  color: var(--color-primary);
}
.about-vision-card,
.about-mission-card {
  background: var(--color-background);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.about-vision-card:hover,
.about-mission-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-md);
}
.about-values-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 2rem;
}
.about-value-card {
  background: var(--color-background);
  border-radius: var(--radius-lg);
  padding: 2rem;
  text-align: center;
  transition: all 0.3s ease;
}
.about-value-card.featured {
  border: 2px solid var(--color-heritage);
  box-shadow: 0 0 20px rgba(var(--color-heritage-rgb), 0.15);
}
.about-value-example {
  margin-top: 1rem;
  padding: 1rem;
  background: var(--color-muted);
  border-radius: var(--radius-md);
  font-style: italic;
  font-size: 0.875rem;
}
.about-team-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 2rem;
}
.about-team-member {
  background: var(--color-background);
  border-radius: var(--radius-lg);
  padding: 2rem;
  text-align: center;
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.about-team-member:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-lg);
}
.about-team-avatar {
  width: 6rem;
  height: 6rem;
  margin: 0 auto 1rem;
  border-radius: 50%;
  overflow: hidden;
  background: linear-gradient(135deg, var(--color-primary), var(--color-primary-dark));
  display: flex;
  align-items: center;
  justify-content: center;
  color: white;
  font-weight: 700;
  font-size: 1.5rem;
}
.about-team-avatar img {
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
}
.about-team-expertise {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0.5rem;
  margin-top: 1rem;
}
.about-expertise-tag {
  padding: 0.25rem 0.75rem;
  background: rgba(var(--color-primary-rgb), 0.1);
  color: var(--color-primary);
  border-radius: var(--radius-full);
  font-size: 0.75rem;
  font-weight: 500;
}
.about-team-social {
  display: flex;
  justify-content: center;
  gap: 0.75rem;
  margin-top: 1rem;
}
.about-social-link {
  width: 2.5rem;
  height: 2.5rem;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(var(--color-primary-rgb), 0.1);
  border-radius: 50%;
  transition: background-color 0.3s ease;
}
.about-social-link:hover {
  background: rgba(var(--color-primary-rgb), 0.2);
}
.about-milestones-timeline {
  position: relative;
  padding-left: 3rem;
}
.about-milestone-item {
  position: relative;
  padding-bottom: 3rem;
}
.about-milestone-item::before {
  content: '';
  position: absolute;
  left: -2.5rem;
  top: 0.5rem;
  width: 0.75rem;
  height: 0.75rem;
  background: var(--color-heritage);
  border-radius: 50%;
}
.about-milestone-item::after {
  content: '';
  position: absolute;
  left: -2.125rem;
  top: 1.25rem;
  bottom: -3rem;
  width: 2px;
  background: var(--color-border);
}
.about-milestone-item:last-child::after {
  display: none;
}
.about-milestone-content {
  background: rgba(var(--color-muted-rgb), 0.3);
  padding: 1.5rem;
  border-radius: var(--radius-lg);
}
.about-metrics-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 2rem;
  text-align: center;
  margin-bottom: 3rem;
}
.about-metric-value {
  font-size: 3rem;
  font-weight: 700;
  color: var(--color-heritage);
  line-height: 1;
  margin-bottom: 0.5rem;
}
.about-metric-label {
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--color-text);
  margin-bottom: 0.25rem;
}
.about-metric-description {
  font-size: 0.75rem;
  color: var(--color-text-muted);
}
.about-achievements-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 2rem;
  margin-top: 2rem;
}
.about-achievement-card {
  text-align: center;
  padding: 1.5rem;
}
.about-achievement-icon {
  width: 4rem;
  height: 4rem;
  margin: 0 auto 1rem;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(var(--color-primary-rgb), 0.1);
  border-radius: var(--radius-lg);
}
.about-achievement-card.featured .about-achievement-icon {
  background: rgba(var(--color-heritage-rgb), 0.1);
}
.about-testimonial-card {
  background: var(--color-background);
  border-radius: var(--radius-lg);
  padding: 2rem;
  height: 100%;
  display: flex;
  flex-direction: column;
}
.about-testimonial-card.featured {
  border: 2px solid var(--color-heritage);
  box-shadow: 0 0 20px rgba(var(--color-heritage-rgb), 0.1);
}
.about-testimonial-quote {
  font-size: 1.125rem;
  font-style: italic;
  color: var(--color-text);
  margin-bottom: 1.5rem;
  flex-grow: 1;
}
.about-testimonial-author {
  display: flex;
  align-items: center;
  gap: 1rem;
}
.about-testimonial-avatar {
  width: 3rem;
  height: 3rem;
  border-radius: 50%;
  background: var(--color-muted);
  flex-shrink: 0;
}
.about-testimonial-info {
  flex-grow: 1;
}
.about-testimonial-name {
  font-weight: 600;
  color: var(--color-primary);
  margin-bottom: 0.125rem;
}
.about-testimonial-role {
  font-size: 0.875rem;
  color: var(--color-text-muted);
}
.about-careers-section {
  background: var(--color-accent-light);
  padding: 4rem 0;
}
.about-careers-benefits,
.about-careers-culture {
  background: rgba(255, 255, 255, 0.8);
  border-radius: var(--radius-lg);
  padding: 1.5rem;
}
.about-careers-list {
  list-style: none;
  padding: 0;
  margin: 0;
  space-y: 0.75rem;
}
.about-careers-list-item {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
}
.about-careers-cta-buttons {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  align-items: center;
  margin-top: 2rem;
}
@media (min-width: 640px) {
  .about-careers-cta-buttons {
    flex-direction: row;
    justify-content: center;
  }
}
.about-final-cta {
  background: var(--color-primary);
  color: white;
  padding: 6rem 0;
  text-align: center;
}
.about-final-cta-title {
  color: white;
  margin-bottom: 1.5rem;
}
.about-final-cta-description {
  color: rgba(255, 255, 255, 0.9);
  margin-bottom: 2rem;
}
.about-final-cta-buttons {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  align-items: center;
  margin-bottom: 2rem;
}
@media (min-width: 640px) {
  .about-final-cta-buttons {
    flex-direction: row;
    justify-content: center;
  }
}
.about-final-cta-trust {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 1.5rem;
  color: rgba(255, 255, 255, 0.7);
}
.about-trust-indicator {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.875rem;
}
@media (max-width: 767px) {
  .about-story-timeline::before {
    left: 1rem;
  }
  .about-story-chapter {
    padding-left: 3rem;
  }
  .about-story-year {
    width: 3rem;
    height: 3rem;
    font-size: 0.875rem;
  }
  .about-values-grid,
  .about-team-grid,
  .about-achievements-grid {
    grid-template-columns: 1fr;
  }
  .about-metrics-grid {
    grid-template-columns: 1fr;
    gap: 1.5rem;
  }
  .about-metric-value {
    font-size: 2.5rem;
  }
  .about-milestones-timeline {
    padding-left: 2rem;
  }
  .about-milestone-item::before {
    left: -1.5rem;
  }
  .about-milestone-item::after {
    left: -1.125rem;
  }
}
@media (min-width: 768px) and (max-width: 1023px) {
  .about-values-grid,
  .about-team-grid {
    grid-template-columns: repeat(2, 1fr);
  }
  .about-metrics-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}
.about-page .pwa-scroll-fade {
  animation-delay: calc(var(--stagger-index, 0) * 100ms);
}
.about-page .pwa-scroll-slide-left {
  animation-delay: calc(var(--stagger-index, 0) * 150ms);
}
.about-page .pwa-scroll-slide-right {
  animation-delay: calc(var(--stagger-index, 0) * 150ms);
}
@media print {
  .about-page {
    background: white;
  }
  .about-hero-background {
    display: none;
  }
  .about-team-social,
  .about-careers-cta-buttons,
  .about-final-cta-buttons {
    display: none;
  }
  .about-page section {
    page-break-inside: avoid;
  }
}
.avatar-chat-trigger {
  position: fixed;
  bottom: 1.5rem;
  right: 1.5rem;
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  width: 56px;
  height: 56px;
  padding: 0;
  border: none;
  border-radius: 50%;
  background: #E04B38;
  color: white;
  cursor: pointer;
  box-shadow: 0 4px 20px rgba(224, 75, 56, 0.4),
              0 2px 8px rgba(0, 0, 0, 0.15);
  transition: transform 0.2s ease, box-shadow 0.2s ease, opacity 0.2s ease;
  animation: avatar-chat-pulse 3s ease-in-out infinite;
}
.avatar-chat-trigger:hover {
  transform: scale(1.1);
  box-shadow: 0 6px 24px rgba(224, 75, 56, 0.5),
              0 4px 12px rgba(0, 0, 0, 0.2);
}
.avatar-chat-trigger:focus {
  outline: 2px solid #E04B38;
  outline-offset: 2px;
}
.avatar-chat-trigger:active {
  transform: scale(0.95);
}
.avatar-chat-trigger--hidden {
  opacity: 0;
  pointer-events: none;
  transform: scale(0.8);
}
.avatar-chat-trigger--left {
  right: auto;
  left: 1.5rem;
}
@keyframes avatar-chat-pulse {
  0%, 100% {
    box-shadow: 0 4px 20px rgba(224, 75, 56, 0.4),
                0 2px 8px rgba(0, 0, 0, 0.15);
  }
  50% {
    box-shadow: 0 4px 30px rgba(224, 75, 56, 0.6),
                0 2px 12px rgba(0, 0, 0, 0.2),
                0 0 0 8px rgba(224, 75, 56, 0.1);
  }
}
.avatar-chat-trigger-icon {
  width: 24px;
  height: 24px;
  flex-shrink: 0;
}
.avatar-chat-trigger-text {
  font-size: 0.875rem;
  font-weight: 600;
  white-space: nowrap;
}
.avatar-chat-overlay {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 1001;
  background: transparent;
  -webkit-backdrop-filter: none;
          backdrop-filter: none;
  pointer-events: none;
  opacity: 0;
  animation: avatar-chat-fade-in 0.2s ease forwards;
}
@keyframes avatar-chat-fade-in {
  to {
    opacity: 1;
  }
}
.avatar-chat-popup {
  position: fixed;
  bottom: 1.5rem;
  right: 1.5rem;
  z-index: 1002;
  display: none;
  flex-direction: column;
  width: 400px;
  height: 600px;
  max-width: calc(100vw - 2rem);
  max-height: calc(100vh - 3rem);
  background: white;
  border-radius: 16px;
  box-shadow: 0 8px 40px rgba(0, 0, 0, 0.2),
              0 4px 16px rgba(0, 0, 0, 0.1);
  overflow: hidden;
  opacity: 0;
  transform: translateY(20px) scale(0.95);
  transition: opacity 0.3s ease, transform 0.3s ease;
}
.avatar-chat-popup--left {
  right: auto;
  left: 1.5rem;
}
.avatar-chat-popup--open {
  opacity: 1;
  transform: translateY(0) scale(1);
}
.avatar-chat-popup--closing {
  opacity: 0;
  transform: translateY(10px) scale(0.98);
}
:root.dark .avatar-chat-popup {
  background: #1f2937;
  box-shadow: 0 8px 40px rgba(0, 0, 0, 0.4),
              0 4px 16px rgba(0, 0, 0, 0.3);
}
.avatar-chat-popup-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 1rem 1.25rem;
  background: linear-gradient(135deg, #E04B38 0%, #c73d2d 100%);
  color: white;
}
.avatar-chat-popup-title {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-weight: 600;
  font-size: 1rem;
}
.avatar-chat-popup-title-icon {
  width: 20px;
  height: 20px;
}
.avatar-chat-popup-close {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  border: none;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.2);
  color: white;
  cursor: pointer;
  transition: background-color 0.2s ease;
}
.avatar-chat-popup-close:hover {
  background: rgba(255, 255, 255, 0.3);
}
.avatar-chat-popup-close:focus {
  outline: 2px solid white;
  outline-offset: 2px;
}
.avatar-chat-popup-close svg {
  width: 16px;
  height: 16px;
}
.avatar-chat-popup-body {
  flex: 1;
  position: relative;
  overflow: hidden;
  background: transparent;
}
:root.dark .avatar-chat-popup-body {
  background: transparent;
}
.avatar-chat-popup-body teleplex-embed-config {
  display: block;
  height: 100%;
  width: 100%;
}
.avatar-chat-session-gate {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.875rem;
  padding: 1.25rem;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.95) 0%, rgba(255, 255, 255, 0.98) 100%);
  text-align: center;
}
.avatar-chat-session-gate--hidden {
  display: none;
}
.avatar-chat-session-gate-text {
  margin: 0;
  color: #111827;
  font-size: 0.95rem;
  font-weight: 500;
}
.avatar-chat-start-session {
  min-height: 42px;
  padding: 0.625rem 1rem;
  border: none;
  border-radius: 999px;
  background: #E04B38;
  color: #fff;
  font-size: 0.9rem;
  font-weight: 600;
  cursor: pointer;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.avatar-chat-start-session:hover {
  transform: translateY(-1px);
  box-shadow: 0 6px 16px rgba(224, 75, 56, 0.35);
}
.avatar-chat-start-session:focus {
  outline: 2px solid #E04B38;
  outline-offset: 2px;
}
:root.dark .avatar-chat-session-gate {
  background: linear-gradient(180deg, rgba(31, 41, 55, 0.95) 0%, rgba(31, 41, 55, 0.98) 100%);
}
:root.dark .avatar-chat-session-gate-text {
  color: #f3f4f6;
}
@media (max-width: 768px) {
  .avatar-chat-trigger {
    bottom: 1rem;
    right: 1rem;
    width: 52px;
    height: 52px;
  }
  .avatar-chat-trigger--left {
    left: 1rem;
  }
  .avatar-chat-overlay {
    background: rgba(0, 0, 0, 0.3);
    pointer-events: auto;
  }
  .avatar-chat-popup {
    bottom: 0;
    right: 0;
    left: 0;
    width: 100%;
    height: calc(100vh - 60px);
    max-width: 100%;
    max-height: calc(100vh - 60px);
    border-radius: 16px 16px 0 0;
  }
  .avatar-chat-popup--left {
    left: 0;
    right: 0;
  }
  .avatar-chat-popup--open {
    transform: translateY(0);
  }
  .avatar-chat-popup--closing {
    transform: translateY(100%);
  }
  .avatar-chat-trigger-text {
    display: none;
  }
}
@media (max-width: 480px) {
  .avatar-chat-trigger {
    width: 48px;
    height: 48px;
  }
  .avatar-chat-trigger-icon {
    width: 22px;
    height: 22px;
  }
  .avatar-chat-popup {
    height: calc(100vh - 40px);
    max-height: calc(100vh - 40px);
  }
}
@media (prefers-reduced-motion: reduce) {
  .avatar-chat-trigger {
    animation: none;
  }
  .avatar-chat-trigger,
  .avatar-chat-popup,
  .avatar-chat-overlay {
    transition: none;
  }
}
.breadcrumb-nav {
  padding: var(--space-4) 0;
  background: rgb(var(--color-surface));
  border-bottom: 1px solid rgb(var(--color-border));
  font-size: var(--text-sm);
}
.breadcrumb-list {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--space-2);
  list-style: none;
  margin: 0;
  padding: 0;
}
.breadcrumb-item {
  display: flex;
  align-items: center;
  gap: var(--space-2);
}
.breadcrumb-link {
  color: rgb(var(--color-text-secondary));
  text-decoration: none;
  transition: color var(--timing-fast) var(--ease-smooth);
  font-weight: 500;
}
.breadcrumb-link:hover {
  color: rgb(var(--color-primary));
  text-decoration: underline;
}
.breadcrumb-link:focus-visible {
  outline: 2px solid rgb(var(--color-primary));
  outline-offset: 2px;
  border-radius: var(--radius-sm);
}
.breadcrumb-current {
  color: rgb(var(--color-text));
  font-weight: 600;
}
.breadcrumb-separator {
  display: flex;
  align-items: center;
  color: rgb(var(--color-text-muted));
}
.breadcrumb-separator-icon {
  width: 1rem;
  height: 1rem;
}
@media (max-width: 767px) {
  .breadcrumb-nav {
    padding: var(--space-3) 0;
    font-size: var(--text-xs);
  }
  .breadcrumb-list {
    gap: var(--space-1);
  }
  .breadcrumb-item {
    gap: var(--space-1);
  }
  .breadcrumb-item:not(:first-child):not(:last-child) {
    display: none;
  }
  .breadcrumb-item:first-child::after {
    content: "...";
    margin: 0 var(--space-2);
    color: rgb(var(--color-text-muted));
  }
  .breadcrumb-item:first-child:nth-last-child(2)::after {
    display: none;
  }
}
@media (prefers-color-scheme: dark) {
  .breadcrumb-nav {
    background: rgb(var(--color-surface-dark));
    border-bottom-color: rgb(var(--color-border-dark));
  }
  .breadcrumb-link {
    color: rgb(var(--color-text-secondary-dark));
  }
  .breadcrumb-link:hover {
    color: rgb(var(--color-primary-dark));
  }
  .breadcrumb-current {
    color: rgb(var(--color-text-dark));
  }
}
@media print {
  .breadcrumb-nav {
    display: none;
  }
}
.btn-text {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  font-weight: inherit;
  line-height: 1.2;
}
.btn .icon-container-xs,
.btn .icon-container-sm {
  margin: 0;
  flex-shrink: 0;
}
.btn .icon-container-xs + .btn-text,
.btn .icon-container-sm + .btn-text {
  margin-left: var(--space-2);
}
.btn .btn-text + .icon-container-xs,
.btn .btn-text + .icon-container-sm {
  margin-left: var(--space-2);
}
.btn-block {
  display: flex;
  width: 100%;
  justify-content: center;
  align-items: center;
}
.btn-loading-spinner {
  display: inline-flex;
  align-items: center;
  margin-right: var(--space-2);
}
.loading-dots {
  display: inline-flex;
  gap: var(--space-1);
}
.loading-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background-color: currentColor;
  opacity: 0.3;
  animation: pulse 1.4s ease-in-out infinite;
}
.loading-dot:nth-child(2) {
  animation-delay: 0.2s;
}
.loading-dot:nth-child(3) {
  animation-delay: 0.4s;
}
@keyframes pulse {
  0%, 60%, 100% {
    opacity: 0.3;
    transform: scale(1);
  }
  30% {
    opacity: 1;
    transform: scale(1.2);
  }
}
.btn-disabled {
  position: relative;
  overflow: hidden;
}
.btn-disabled::after {
  content: '';
  position: absolute;
  inset: 0;
  background: rgba(255, 255, 255, 0.5);
  pointer-events: none;
}
.touch-scale {
  transition: transform var(--timing-fast) ease-out;
  -webkit-tap-highlight-color: transparent;
}
.touch-scale:active {
  transform: scale(0.96);
}
.btn {
  will-change: transform, box-shadow;
  backface-visibility: hidden;
  transform-style: preserve-3d;
  transition: all var(--timing-fast) var(--ease-smooth);
}
.btn:hover:not(:disabled):not(.btn-disabled) {
  transform: translateY(-1px);
}
.btn:active:not(:disabled):not(.btn-disabled) {
  transform: translateY(0);
}
.btn:not(:hover):not(:focus):not(:active) {
  will-change: auto;
}
.btn:focus-visible {
  outline-offset: 2px;
  position: relative;
  z-index: 1;
}
.btn:has(.icon-container-xs):not(:has(.btn-text)),
.btn:has(.icon-container-sm):not(:has(.btn-text)) {
  padding: var(--space-2);
  min-width: 48px;
  min-height: 48px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
@media (max-width: 767px) {
  .btn {
    min-height: 48px;
    font-size: max(1rem, 16px);
  }
  .btn:has(.icon-container-xs):not(:has(.btn-text)),
  .btn:has(.icon-container-sm):not(:has(.btn-text)) {
    min-width: 52px;
    min-height: 52px;
  }
  .touch-scale:active {
    transform: scale(0.94);
  }
}
@media (min-width: 768px) and (max-width: 1023px) {
  .btn {
    min-height: 44px;
  }
}
@media (min-width: 1024px) {
  .btn {
    min-height: 40px;
  }
  .btn:hover:not(:disabled):not(.btn-disabled) {
    transform: translateY(-2px);
  }
  .btn:has(.icon-container-xs):not(:has(.btn-text)),
  .btn:has(.icon-container-sm):not(:has(.btn-text)) {
    min-width: 40px;
    min-height: 40px;
  }
}
@media (min-width: 2560px) {
  .btn:hover:not(:disabled):not(.btn-disabled) {
    transform: translateY(-3px);
  }
}
@media (prefers-reduced-motion: reduce) {
  .btn {
    transition: none !important;
  }
  .loading-dot {
    animation: none !important;
  }
  .touch-scale:active {
    transform: none !important;
  }
}
@media (prefers-contrast: high) {
  .btn {
    border: 2px solid currentColor;
  }
  .btn:focus-visible {
    outline: 3px solid currentColor;
    outline-offset: 3px;
  }
}
.btn-loading {
  position: relative;
  color: transparent;
  pointer-events: none;
}
.btn-loading::after {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  width: 1rem;
  height: 1rem;
  margin-top: -0.5rem;
  margin-left: -0.5rem;
  border: 2px solid currentColor;
  border-radius: 50%;
  border-top-color: transparent;
  animation: btn-spin 1s linear infinite;
}
@keyframes btn-spin {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}
.btn-icon-left {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}
.btn-icon-right {
  display: flex;
  align-items: center;
  flex-direction: row-reverse;
  gap: 0.5rem;
}
.btn-xs {
  padding: 0.25rem 0.5rem;
  font-size: 0.75rem;
}
.btn-sm {
  padding: 0.5rem 0.75rem;
  font-size: 0.875rem;
}
.btn-md {
  padding: 0.75rem 1rem;
  font-size: 0.875rem;
}
.btn-lg {
  padding: 1rem 1.5rem;
  font-size: 1rem;
}
.btn-xl {
  padding: 1.25rem 2rem;
  font-size: 1.125rem;
}
.btn-full {
  width: 100%;
  justify-content: center;
}
.btn-auto {
  width: auto;
}
@media (max-width: 640px) {
  .btn-responsive {
    width: 100%;
    justify-content: center;
  }
}
:root {
  --capabilities-padding: 5rem 0;
  --capabilities-grid-cols: repeat(auto-fit, minmax(300px, 1fr));
  --capabilities-grid-gap: 2rem;
  --capabilities-title-size: 2.25rem;
  --capabilities-title-weight: 700;
  --capabilities-title-color: #0f172a;
  --capabilities-title-color-dark: #ffffff;
  --capabilities-title-margin: 0 0 1rem 0;
  --capabilities-desc-size: 1.25rem;
  --capabilities-desc-color: #475569;
  --capabilities-desc-color-dark: #cbd5e1;
  --capabilities-desc-margin: 0 0 4rem 0;
}
.capabilities {
  padding: var(--capabilities-padding);
  transition: color 0.3s ease;
}
.capabilities__container {
  max-width: 80rem;
  margin: 0 auto;
  padding: 0 1.5rem;
}
.capabilities__header {
  text-align: center;
  margin-bottom: 4rem;
}
.capabilities__title {
  font-size: var(--capabilities-title-size);
  font-weight: var(--capabilities-title-weight);
  color: var(--capabilities-title-color);
  margin: var(--capabilities-title-margin);
  line-height: 1.1;
}
.dark .capabilities__title {
  color: var(--capabilities-title-color-dark);
}
.capabilities__description {
  font-size: var(--capabilities-desc-size);
  color: var(--capabilities-desc-color);
  margin: var(--capabilities-desc-margin);
  max-width: 48rem;
  margin-left: auto;
  margin-right: auto;
  line-height: 1.625;
}
.dark .capabilities__description {
  color: var(--capabilities-desc-color-dark);
}
.capabilities__grid {
  display: grid;
  grid-template-columns: var(--capabilities-grid-cols);
  gap: var(--capabilities-grid-gap);
}
@media (max-width: 768px) {
  :root {
    --capabilities-padding: 4rem 0;
    --capabilities-title-size: 1.875rem;
    --capabilities-desc-size: 1.125rem;
    --capabilities-grid-cols: 1fr;
    --capabilities-grid-gap: 1.5rem;
  }
  .capabilities__container {
    padding: 0 1rem;
  }
  .capabilities__header {
    margin-bottom: 3rem;
  }
}
@media (max-width: 480px) {
  :root {
    --capabilities-padding: 3rem 0;
    --capabilities-title-size: 1.5rem;
    --capabilities-desc-size: 1rem;
  }
}
.capability-card {
  padding: calc(var(--space-8) * 1.3);
  border: 0;
  border-radius: var(--radius-lg);
  background: rgb(var(--color-card));
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
  transition: all var(--timing-fast) var(--ease-smooth);
  transform: translateZ(0);
  will-change: transform, box-shadow;
  height: 100%;
  display: flex;
  flex-direction: column;
}
.capability-card:hover {
  border: 0;
  transform: translateY(-4px);
  box-shadow: 0 8px 25px rgba(0, 0, 0, 0.12);
}
.capability-card:active {
  transform: scale(0.98) translateY(-2px);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}
.capability-card:not(:hover):not(:focus) {
  will-change: auto;
}
.capability-card-content {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: calc(var(--space-4) * 1.3);
}
.capability-card-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: calc(var(--space-16) * 1.3);
  height: calc(var(--space-16) * 1.3);
  border-radius: var(--radius-lg);
  margin-bottom: calc(var(--space-6) * 1.3);
  transition: all var(--timing-fast) var(--ease-smooth);
}
.capability-card:hover .capability-card-icon {
  transform: scale(1.05);
}
.capability-icon {
  color: rgb(var(--color-primary));
  width: var(--space-12);
  height: var(--space-12);
}
.capability-content {
  display: flex;
  flex-direction: column;
  gap: calc(var(--space-4) * 1.3);
}
.capability-card-title {
  margin-bottom: calc(var(--space-3) * 1.3);
}
.capability-card-description {
  line-height: 1.6;
  margin-bottom: calc(var(--space-4) * 1.3);
}
.capability-card-features {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: calc(var(--space-3) * 1.3);
}
.capability-feature {
  display: flex;
  align-items: flex-start;
  gap: calc(var(--space-3) * 1.3);
}
.capability-feature-icon {
  flex-shrink: 0;
  width: var(--space-5);
  height: var(--space-5);
  color: rgb(var(--color-success));
  margin-top: 2px;
}
.capability-feature-text {
  flex: 1;
  line-height: 1.6;
}
.capability-card-primary {
  background: rgb(var(--color-card));
}
.capability-card-secondary {
  background: rgb(var(--color-secondary) / 0.05);
}
.capability-card-heritage {
  box-shadow: inset 4px 0 0 rgb(var(--color-accent-heritage)), 
    0 1px 3px rgba(0, 0, 0, 0.05);
  padding-left: calc(var(--space-8) * 1.3 + var(--space-2));
  background: rgba(var(--color-accent-heritage) / 0.02);
  margin: calc(var(--space-8) * 1.3) 0;
}
.capability-card-heritage:hover {
  box-shadow: inset 4px 0 0 rgb(var(--color-accent-heritage)),
    0 8px 25px rgba(0, 0, 0, 0.12);
  background: rgba(var(--color-accent-heritage) / 0.04);
}
@media (max-width: 767px) {
  .capability-card {
    padding: calc(var(--space-6) * 1.3);
  }
  .capability-card-icon {
    width: calc(var(--space-12) * 1.3);
    height: calc(var(--space-12) * 1.3);
    margin-bottom: calc(var(--space-4) * 1.3);
  }
  .capability-icon {
    width: var(--space-8);
    height: var(--space-8);
  }
  .capability-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
  }
}
@media (min-width: 768px) and (max-width: 1023px) {
  .capability-card {
    padding: calc(var(--space-8) * 1.2);
  }
}
@media (min-width: 2560px) {
  .capability-card {
    padding: calc(var(--space-12) * 1.3);
    border-radius: var(--radius-xl);
  }
  .capability-card:hover {
    transform: translateY(-6px);
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.15);
  }
}
.capability-card:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(var(--color-focus) / 0.5), 
    0 1px 3px rgba(0, 0, 0, 0.05);
}
@media (prefers-contrast: high) {
  .capability-card {
    outline: 2px solid currentColor;
    outline-offset: -2px;
  }
  .capability-card-heritage {
    outline: 2px solid rgb(var(--color-accent-heritage));
    outline-offset: -2px;
  }
}
@media (prefers-reduced-motion: reduce) {
  .capability-card,
  .capability-card-icon,
  .capability-feature-icon {
    transition-duration: 0.01ms !important;
    animation: none !important;
  }
  .capability-card:hover,
  .capability-card:active {
    transform: none !important;
  }
}
.challenges-container {
  padding: var(--space-8) 0;
  background: rgb(var(--color-background));
  color: rgb(var(--color-foreground));
  min-height: 500px;
  position: relative;
}
@media (prefers-color-scheme: dark) {
  .challenges-container {
    background: rgb(var(--color-background));
  }
}
.challenges-header {
  text-align: center;
  margin-bottom: var(--space-12);
  padding: 0 var(--space-4);
}
.challenges-layout {
  display: grid;
  grid-template-columns: 320px 1fr;
  gap: var(--space-8);
  align-items: start;
  max-width: 1440px;
  margin: 0 auto;
  padding: 0 var(--space-6);
}
@media (max-width: 767px) {
  .challenges-layout {
    grid-template-columns: 1fr;
    gap: var(--space-6);
    padding: 0 var(--space-4);
  }
}
@media (min-width: 768px) and (max-width: 1023px) {
  .challenges-layout {
    grid-template-columns: 280px 1fr;
    gap: var(--space-6);
  }
}
.challenges-sidebar {
  background: rgb(var(--color-muted) / 0.03);
  border-radius: var(--radius-lg);
  padding: var(--space-4);
  transition: all var(--timing-fast) var(--ease-smooth);
}
@media (prefers-color-scheme: dark) {
  .challenges-sidebar {
    background: rgb(var(--color-muted) / 0.05);
  }
}
@media (min-width: 768px) {
  .challenges-sidebar {
    position: sticky;
    top: calc(80px + var(--space-4));
  }
}
@media (max-width: 767px) {
  .challenges-sidebar {
    display: flex;
    gap: var(--space-3);
    overflow-x: auto;
    padding: var(--space-3);
    border-radius: var(--radius-md);
    scrollbar-width: none;
    -ms-overflow-style: none;
  }
  .challenges-sidebar::-webkit-scrollbar {
    display: none;
  }
}
.challenge-nav-item {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  padding: var(--space-4);
  margin-bottom: var(--space-3);
  border-radius: var(--radius-md);
  background: transparent;
  cursor: pointer;
  transition: all var(--timing-fast) var(--ease-smooth);
  min-height: 72px;
  width: 100%;
  text-align: left;
  font-family: inherit;
  font-size: inherit;
  color: inherit;
}
.challenge-nav-item:last-child {
  margin-bottom: 0;
}
@media (max-width: 767px) {
  .challenge-nav-item {
    flex-shrink: 0;
    width: 280px;
    margin-bottom: 0;
    margin-right: var(--space-3);
    min-height: 64px;
  }
  .challenge-nav-item:last-child {
    margin-right: 0;
  }
}
.challenge-nav-item:hover:not(.active) {
  background: rgb(var(--color-muted) / 0.08);
  transform: translateX(2px);
}
.challenge-nav-item.active {
  background: rgb(var(--color-muted) / 0.1);
  box-shadow: inset 4px 0 0 rgb(var(--color-accent-heritage));
  font-weight: 600;
  margin-top: var(--space-2);
  margin-bottom: calc(var(--space-3) + var(--space-2));
}
@media (prefers-color-scheme: dark) {
  .challenge-nav-item:hover:not(.active) {
    background: rgb(var(--color-muted) / 0.15);
  }
  .challenge-nav-item.active {
    background: rgb(var(--color-muted) / 0.2);
    box-shadow: inset 4px 0 0 rgb(var(--color-accent-heritage));
  }
}
.challenge-nav-content {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
}
.challenge-nav-title {
  font-weight: 500;
  font-size: 1rem;
  line-height: 1.4;
  color: rgb(var(--color-foreground));
  display: block;
}
.challenge-nav-description {
  font-size: 0.875rem;
  line-height: 1.4;
  color: rgb(var(--color-muted-foreground));
  opacity: 0.8;
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}
.challenges-content {
  background: rgb(var(--color-card));
  border-radius: var(--radius-lg);
  overflow: hidden;
}
@media (prefers-color-scheme: dark) {
  .challenges-content {
    background: rgb(var(--color-card));
  }
}
.challenge-detail {
  display: none;
  padding: var(--space-6);
  animation: fadeIn var(--timing-fast) var(--ease-smooth);
}
.challenge-detail.active {
  display: block;
}
@keyframes fadeIn {
  from {
    opacity: 0;
    transform: translateY(10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.challenge-detail-header {
  margin-bottom: var(--space-8);
  padding-bottom: var(--space-6);
}
.challenge-comparison {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-8);
  margin: var(--space-6) 0;
  padding: var(--space-6) 0;
}
@media (max-width: 767px) {
  .challenge-comparison {
    grid-template-columns: 1fr;
    gap: var(--space-6);
    margin: var(--space-4) 0;
    padding: var(--space-4) 0;
  }
}
.challenge-problems,
.challenge-solutions {
  padding: var(--space-4);
}
.challenge-problems {
  padding-right: var(--space-6);
}
@media (max-width: 767px) {
  .challenge-problems {
    padding-right: 0;
    padding-bottom: var(--space-6);
  }
  .challenge-solutions {
    padding-top: var(--space-6);
  }
}
.challenge-problems-list,
.challenge-solutions-list {
  list-style: none;
  padding: 0;
  margin: var(--space-4) 0 0 0;
}
.challenge-problem-item,
.challenge-solution-item {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  padding: var(--space-3) 0;
  line-height: 1.6;
}
.challenge-problem-item svg {
  flex-shrink: 0;
  margin-top: 2px;
  color: rgb(var(--color-destructive));
}
.challenge-solution-item svg {
  flex-shrink: 0;
  margin-top: 2px;
  color: rgb(var(--color-success));
}
.challenge-metrics {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: var(--space-4);
  padding: var(--space-6) 0;
  margin-top: var(--space-6);
}
@media (max-width: 767px) {
  .challenge-metrics {
    grid-template-columns: 1fr;
    padding: var(--space-4);
  }
}
.metric-card {
  background: rgb(var(--color-muted) / 0.05);
  padding: var(--space-6);
  border-radius: var(--radius-md);
  text-align: center;
  transition: all var(--timing-fast) var(--ease-smooth);
}
@media (prefers-color-scheme: dark) {
  .metric-card {
    background: rgb(var(--color-muted) / 0.08);
  }
}
.metric-card:hover {
  transform: translateY(-2px);
  background: rgb(var(--color-muted) / 0.1);
}
@media (prefers-color-scheme: dark) {
  .metric-card:hover {
    background: rgb(var(--color-muted) / 0.15);
  }
}
.metric-value {
  font-size: 2rem;
  font-weight: 700;
  color: rgb(var(--color-primary));
  line-height: 1.2;
  margin-bottom: var(--space-2);
}
.metric-label {
  font-size: 0.875rem;
  font-weight: 600;
  color: rgb(var(--color-foreground));
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin-bottom: var(--space-1);
}
.metric-description {
  font-size: 0.875rem;
  color: rgb(var(--color-muted-foreground));
  opacity: 0.8;
  line-height: 1.4;
}
.challenge-nav-item:focus-visible {
  outline: 3px solid rgb(var(--color-focus));
  outline-offset: 2px;
}
.challenge-nav-item:focus:not(:focus-visible) {
  outline: none;
}
@media (prefers-reduced-motion: reduce) {
  .challenge-nav-item,
  .challenge-detail,
  .metric-card {
    transition: none;
    animation: none;
  }
}
@media (prefers-contrast: high) {
  .challenge-nav-item.active {
    outline: 2px solid rgb(var(--color-accent-heritage));
    outline-offset: -2px;
  }
  .challenge-problems,
  .challenge-solutions {
    border: 1px solid currentColor;
  }
  .metric-card {
    border: 2px solid currentColor;
  }
}
@media print {
  .challenges-sidebar {
    display: none;
  }
  .challenge-detail {
    display: block !important;
    page-break-inside: avoid;
    margin-bottom: var(--space-8);
  }
  .challenges-layout {
    grid-template-columns: 1fr;
  }
  .challenge-metrics {
    page-break-inside: avoid;
  }
}
.code-example {
  background: rgb(var(--color-card));
  border-radius: var(--radius-md);
  border: 1px solid rgb(var(--color-border));
  overflow: hidden;
  margin-bottom: var(--space-6);
}
.code-example-header {
  padding: var(--space-4) var(--space-5);
  background: rgb(var(--color-surface));
  border-bottom: 1px solid rgb(var(--color-border));
}
.code-example-header-content {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}
.code-example-title {
  font-size: var(--text-lg);
  font-weight: 600;
  color: rgb(var(--color-text-primary));
  margin: 0;
}
.code-example-description {
  font-size: var(--text-sm);
  color: rgb(var(--color-text-secondary));
  margin: 0;
}
.code-example-block {
  position: relative;
  background: #191c2c;
  border-radius: 0 0 var(--radius-md) var(--radius-md);
}
.code-example-language {
  position: absolute;
  top: var(--space-2);
  right: var(--space-3);
  font-size: var(--text-xs);
  color: #94a3b8;
  text-transform: lowercase;
  font-family: var(--font-mono);
  padding: var(--space-1) var(--space-2);
  background: rgba(148, 163, 184, 0.1);
  border-radius: var(--radius-sm);
  z-index: 1;
}
.code-example-pre {
  margin: 0;
  padding: var(--space-5);
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
}
.code-example-code {
  font-family: var(--font-mono);
  font-size: var(--text-sm);
  line-height: 1.6;
  color: #22d3ee;
  display: block;
  white-space: pre;
}
.code-example-code.language-yaml {
  color: #22d3ee;
}
.code-example-code.language-bash {
  color: #86efac;
}
.code-example-code.language-json {
  color: #fbbf24;
}
.code-example-code.language-typescript,
.code-example-code.language-javascript {
  color: #a5f3fc;
}
.code-example-pre::-webkit-scrollbar {
  height: 8px;
  background: rgba(148, 163, 184, 0.1);
}
.code-example-pre::-webkit-scrollbar-thumb {
  background: rgba(148, 163, 184, 0.3);
  border-radius: var(--radius-sm);
}
.code-example-pre::-webkit-scrollbar-thumb:hover {
  background: rgba(148, 163, 184, 0.5);
}
@media (max-width: 767px) {
  .code-example {
    margin-bottom: var(--space-4);
    border-radius: var(--radius-sm);
  }
  .code-example-header {
    padding: var(--space-3) var(--space-4);
  }
  .code-example-title {
    font-size: var(--text-base);
  }
  .code-example-pre {
    padding: var(--space-4);
  }
  .code-example-code {
    font-size: var(--text-xs);
  }
  .code-example-language {
    font-size: 10px;
    padding: 2px 6px;
  }
}
@media (prefers-color-scheme: dark) {
  .code-example {
    background: rgb(var(--color-card-dark));
    border-color: rgb(var(--color-border-dark));
  }
  .code-example-header {
    background: rgb(var(--color-surface-dark));
    border-color: rgb(var(--color-border-dark));
  }
  .code-example-block {
    background: #0f1117;
  }
}
.code-example.code-example-compact .code-example-header {
  padding: var(--space-3) var(--space-4);
  background: transparent;
  border-bottom: none;
}
.code-example.code-example-compact .code-example-title {
  font-size: var(--text-base);
}
.code-example.code-example-inline {
  background: transparent;
  border: none;
  margin-bottom: var(--space-3);
}
.code-example.code-example-inline .code-example-block {
  background: #191c2c;
  border-radius: var(--radius-sm);
}
.comparison-wrapper {
  width: 100% !important;
  position: relative;
  display: flex !important;
  flex-direction: column;
  gap: var(--space-8);
  overflow-x: auto;
  visibility: visible !important;
  opacity: 1 !important;
  background: linear-gradient(
    to bottom,
    rgba(var(--color-primary-50), 0.02) 0%,
    transparent 40%
  );
  border-radius: var(--radius-xl);
  padding: var(--space-2);
}
.comparison-global-headers {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-4);
  margin-bottom: var(--space-8);
  position: relative;
}
.comparison-global-header {
  padding: var(--space-6) var(--space-4);
  background: linear-gradient(135deg, 
    rgba(var(--color-background), 0.95) 0%,
    rgba(var(--color-primary-50), 0.3) 100%
  );
  border: 1px solid rgba(var(--color-primary-200), 0.3);
  border-radius: var(--radius-lg);
  text-align: center;
  transition: all var(--timing-fast) var(--easing-smooth);
  position: relative;
  overflow: hidden;
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  box-shadow: 0 2px 4px rgba(var(--color-primary-900), 0.03),
    0 4px 8px rgba(var(--color-primary-900), 0.04),
    0 8px 16px rgba(var(--color-primary-900), 0.05),
    0 16px 32px rgba(var(--color-primary-900), 0.06),
    inset 0 1px 0 rgba(255, 255, 255, 0.1);
}
.comparison-global-header::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(
    135deg,
    rgba(255, 255, 255, 0.1) 0%,
    transparent 60%
  );
  pointer-events: none;
}
.comparison-global-header:hover {
  transform: translateY(-4px) scale(1.01);
  box-shadow: 0 4px 8px rgba(var(--color-primary-900), 0.04),
    0 8px 16px rgba(var(--color-primary-900), 0.06),
    0 16px 32px rgba(var(--color-primary-900), 0.08),
    0 24px 48px rgba(var(--color-primary-900), 0.1),
    inset 0 1px 0 rgba(255, 255, 255, 0.15);
  background: linear-gradient(135deg,
    rgba(var(--color-background), 0.98) 0%,
    rgba(var(--color-primary-50), 0.4) 100%
  );
  border-color: rgba(var(--color-primary-300), 0.4);
}
.comparison-global-header.comparison-primary-header {
  background: linear-gradient(135deg,
    rgba(var(--color-background), 0.98) 0%,
    rgba(var(--color-accent-heritage-50), 0.2) 50%,
    rgba(var(--color-accent-heritage-100), 0.1) 100%
  );
  border-color: rgba(var(--color-accent-heritage), 0.12);
  box-shadow: 0 2px 4px rgba(var(--color-accent-heritage), 0.04),
    0 4px 8px rgba(var(--color-accent-heritage), 0.06),
    0 8px 16px rgba(var(--color-accent-heritage), 0.08),
    0 16px 32px rgba(var(--color-primary-900), 0.06),
    inset 0 1px 0 rgba(255, 255, 255, 0.15),
    inset 0 0 20px rgba(var(--color-accent-heritage), 0.03);
}
.comparison-global-header.comparison-primary-header::after {
  content: '';
  position: absolute;
  inset: -50%;
  background: radial-gradient(
    circle at center,
    rgba(var(--color-accent-heritage), 0.05) 0%,
    transparent 70%
  );
  pointer-events: none;
  opacity: 0;
  transition: opacity var(--timing-slow) var(--easing-smooth);
}
.comparison-global-header.comparison-primary-header:hover {
  border-color: rgba(var(--color-accent-heritage), 0.18);
  box-shadow: 0 4px 8px rgba(var(--color-accent-heritage), 0.06),
    0 8px 16px rgba(var(--color-accent-heritage), 0.08),
    0 16px 32px rgba(var(--color-accent-heritage), 0.1),
    0 24px 48px rgba(var(--color-primary-900), 0.08),
    inset 0 1px 0 rgba(255, 255, 255, 0.2),
    inset 0 0 30px rgba(var(--color-accent-heritage), 0.05);
  transform: translateY(-5px) scale(1.02);
  background: linear-gradient(135deg,
    rgba(var(--color-background), 1) 0%,
    rgba(var(--color-accent-heritage-50), 0.25) 50%,
    rgba(var(--color-accent-heritage-100), 0.15) 100%
  );
}
.comparison-global-header.comparison-primary-header:hover::after {
  opacity: 1;
}
.comparison-category-section {
  position: relative;
  padding-bottom: var(--space-6);
  margin-bottom: var(--space-6);
}
.comparison-category-title {
  color: rgb(var(--color-primary-700));
  font-weight: var(--font-weight-semibold);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-size: 0.875em;
  text-align: center;
  position: relative;
  padding: var(--space-2) var(--space-4);
}
.comparison-category-title::after {
  content: '';
  position: absolute;
  bottom: calc(-1 * var(--space-1));
  left: 50%;
  transform: translateX(-50%);
  width: var(--space-16);
  height: var(--space-0-5);
  background: linear-gradient(90deg,
    transparent,
    rgb(var(--color-primary-400)),
    transparent
  );
  border-radius: var(--radius-full);
}
.comparison-table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  table-layout: fixed;
}
.comparison-table thead th {
  width: 33.333%;
  vertical-align: top;
  padding: 0;
  border: none;
}
.comparison-feature-column {
  width: calc(var(--space-72) - var(--space-2));
  text-align: center;
  position: relative;
}
.comparison-table tbody {
  position: relative;
}
.comparison-table tr {
  position: relative;
  display: table-row;
}
.comparison-table td {
  vertical-align: middle;
  padding: 0;
  border: none;
  position: relative;
}
.comparison-feature-card {
  background: linear-gradient(135deg,
    rgba(var(--color-background), 0.98) 0%,
    rgba(var(--color-primary-50), 0.15) 100%
  );
  border: 1px solid rgba(var(--color-primary-200), 0.25);
  border-radius: var(--radius-lg);
  transition: all var(--timing-fast) var(--easing-smooth);
  position: relative;
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  box-shadow: 0 1px 2px rgba(var(--color-primary-900), 0.02),
    0 2px 4px rgba(var(--color-primary-900), 0.03),
    0 4px 8px rgba(var(--color-primary-900), 0.04),
    0 8px 16px rgba(var(--color-primary-900), 0.05),
    inset 0 1px 0 rgba(255, 255, 255, 0.08);
}
.comparison-feature-row {
  margin-bottom: var(--space-4);
}
.comparison-feature-row td {
  padding: var(--space-4);
}
.comparison-feature-card::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: var(--radius-lg);
  background: linear-gradient(
    135deg,
    rgba(255, 255, 255, 0.05) 0%,
    transparent 50%
  );
  pointer-events: none;
}
.comparison-feature-card:hover {
  background: linear-gradient(135deg,
    rgba(var(--color-background), 1) 0%,
    rgba(var(--color-primary-50), 0.2) 100%
  );
  transform: translateY(-6px) scale(1.01);
  box-shadow: 0 2px 4px rgba(var(--color-primary-900), 0.03),
    0 4px 8px rgba(var(--color-primary-900), 0.05),
    0 8px 16px rgba(var(--color-primary-900), 0.07),
    0 16px 32px rgba(var(--color-primary-900), 0.09),
    0 24px 48px rgba(var(--color-primary-900), 0.11),
    inset 0 1px 0 rgba(255, 255, 255, 0.12);
  border-color: rgba(var(--color-primary-300), 0.35);
  backdrop-filter: blur(15px) saturate(1.1);
  -webkit-backdrop-filter: blur(15px) saturate(1.1);
}
.comparison-feature-header {
  text-align: center;
  padding: var(--space-4);
  background: linear-gradient(to bottom,
    rgba(var(--color-primary-50), 0.05) 0%,
    transparent 100%
  );
  border-left: 1px solid rgba(var(--color-primary-200), 0.15);
  border-right: 1px solid rgba(var(--color-primary-200), 0.15);
  position: relative;
}
.comparison-table .comparison-feature-name {
  text-align: center;
  margin-bottom: var(--space-1);
}
.comparison-table .comparison-feature-description {
  text-align: center;
  max-width: calc(var(--space-72) - var(--space-2));
  margin: 0 auto;
  opacity: 0.8;
}
.comparison-feature-name {
  text-align: left;
  margin-bottom: var(--space-1);
}
.comparison-feature-description {
  max-width: 100%;
  margin: 0;
  opacity: 0.8;
  text-align: left;
}
.comparison-value-card {
  background: linear-gradient(135deg,
    rgba(var(--color-background), 0.95) 0%,
    rgba(var(--color-primary-50), 0.1) 100%
  );
  border: 1px solid rgba(var(--color-primary-200), 0.2);
  border-radius: var(--radius-md);
  padding: var(--space-4);
  transition: all var(--timing-fast) var(--easing-smooth);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  display: flex;
  flex-direction: column;
  justify-content: center;
  position: relative;
  overflow: hidden;
  box-shadow: 0 1px 2px rgba(var(--color-primary-900), 0.02),
    0 2px 4px rgba(var(--color-primary-900), 0.03),
    inset 0 1px 0 rgba(255, 255, 255, 0.05);
}
.comparison-value-card::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(
    105deg,
    transparent 40%,
    rgba(255, 255, 255, 0.04) 45%,
    rgba(255, 255, 255, 0.08) 50%,
    rgba(255, 255, 255, 0.04) 55%,
    transparent 60%
  );
  transform: translateX(-100%);
  transition: transform 0.6s var(--easing-smooth);
}
.comparison-feature-card:hover .comparison-value-card::before {
  transform: translateX(100%);
}
.comparison-value-content {
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  min-height: var(--space-16);
  padding: var(--space-2);
}
.comparison-value-card.comparison-primary-column {
  background: linear-gradient(135deg,
    rgba(var(--color-background), 0.98) 0%,
    rgba(var(--color-accent-heritage-50), 0.15) 50%,
    rgba(var(--color-accent-heritage-100), 0.08) 100%
  );
  border: 1px solid rgba(var(--color-accent-heritage), 0.1);
  position: relative;
  box-shadow: 0 1px 2px rgba(var(--color-accent-heritage), 0.02),
    0 2px 4px rgba(var(--color-accent-heritage), 0.03),
    0 4px 8px rgba(var(--color-accent-heritage), 0.04),
    inset 0 1px 0 rgba(255, 255, 255, 0.08),
    inset 0 0 12px rgba(var(--color-accent-heritage), 0.02);
}
.comparison-value-card.comparison-primary-column::after {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(
    circle at 50% 50%,
    rgba(var(--color-accent-heritage), 0.06) 0%,
    transparent 70%
  );
  opacity: 0;
  transition: opacity var(--timing-slow) var(--easing-smooth);
  pointer-events: none;
}
.comparison-feature-card:hover .comparison-value-card.comparison-primary-column::after {
  opacity: 1;
}
.comparison-value-wrapper {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  flex-wrap: wrap;
  justify-content: center;
}
.comparison-checkmark {
  color: rgb(var(--color-success));
  font-size: 1.5rem;
  font-weight: var(--font-weight-bold);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: var(--space-10);
  min-height: var(--space-12);
  background: linear-gradient(135deg,
    rgba(var(--color-success), 0.12) 0%,
    rgba(var(--color-success), 0.04) 100%
  );
  border: 1px solid rgba(var(--color-success), 0.15);
  border-radius: var(--radius-full);
  transition: all var(--timing-fast) var(--easing-smooth);
  position: relative;
  box-shadow: 0 1px 2px rgba(var(--color-success), 0.04),
    0 2px 4px rgba(var(--color-success), 0.06),
    0 4px 8px rgba(var(--color-success), 0.08),
    inset 0 1px 0 rgba(255, 255, 255, 0.1);
}
.comparison-checkmark::after {
  content: '';
  position: absolute;
  inset: -4px;
  border-radius: var(--radius-full);
  border: 2px solid rgba(var(--color-success), 0.2);
  opacity: 0;
  transform: scale(0.8);
  transition: all var(--timing-fast) var(--easing-smooth);
}
.comparison-feature-row:hover .comparison-checkmark {
  transform: scale(1.15) rotate(5deg);
  background: linear-gradient(135deg,
    rgba(var(--color-success), 0.16) 0%,
    rgba(var(--color-success), 0.06) 100%
  );
  border-color: rgba(var(--color-success), 0.25);
  box-shadow: 0 2px 4px rgba(var(--color-success), 0.06),
    0 4px 8px rgba(var(--color-success), 0.08),
    0 8px 16px rgba(var(--color-success), 0.1),
    0 12px 24px rgba(var(--color-success), 0.12),
    inset 0 1px 0 rgba(255, 255, 255, 0.15);
}
.comparison-feature-row:hover .comparison-checkmark::after {
  opacity: 1;
  transform: scale(1);
}
.comparison-xmark {
  color: rgb(var(--color-muted-foreground));
  opacity: 0.4;
  font-size: 1.25rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: var(--space-8);
  min-height: var(--space-8);
  transition: opacity var(--timing-fast) var(--easing-standard);
}
.comparison-feature-row:hover .comparison-xmark {
  opacity: 0.6;
}
.comparison-custom-value {
  color: rgb(var(--color-primary-700));
  font-weight: var(--font-weight-medium);
  line-height: var(--line-height-relaxed);
  padding: var(--space-2) var(--space-4);
  background: linear-gradient(135deg,
    rgba(var(--color-background), 0.98) 0%,
    rgba(var(--color-primary-50), 0.25) 100%
  );
  border: 1px solid rgba(var(--color-primary-200), 0.25);
  border-radius: var(--radius-md);
  display: inline-block;
  transition: all var(--timing-fast) var(--easing-smooth);
  text-align: center;
  position: relative;
  overflow: hidden;
  backdrop-filter: blur(5px);
  -webkit-backdrop-filter: blur(5px);
  box-shadow: 0 1px 2px rgba(var(--color-primary-900), 0.02),
    0 2px 4px rgba(var(--color-primary-900), 0.03),
    inset 0 1px 0 rgba(255, 255, 255, 0.08);
}
.comparison-custom-value::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(
    105deg,
    transparent 40%,
    rgba(255, 255, 255, 0.03) 50%,
    transparent 60%
  );
  transform: translateX(-100%);
  transition: transform 0.8s var(--easing-smooth);
}
.comparison-feature-row:hover .comparison-custom-value {
  background: linear-gradient(135deg,
    rgba(var(--color-background), 1) 0%,
    rgba(var(--color-primary-50), 0.3) 100%
  );
  transform: translateY(-3px) scale(1.02);
  box-shadow: 0 2px 4px rgba(var(--color-primary-900), 0.03),
    0 4px 8px rgba(var(--color-primary-900), 0.05),
    0 8px 16px rgba(var(--color-primary-900), 0.07),
    inset 0 1px 0 rgba(255, 255, 255, 0.12);
  border-color: rgba(var(--color-primary-300), 0.35);
}
.comparison-feature-row:hover .comparison-custom-value::before {
  transform: translateX(100%);
}
.comparison-primary-column .comparison-custom-value {
  color: rgb(var(--color-accent-heritage));
  font-weight: var(--font-weight-semibold);
  background: linear-gradient(135deg,
    rgba(var(--color-background), 0.98) 0%,
    rgba(var(--color-accent-heritage-50), 0.2) 50%,
    rgba(var(--color-accent-heritage-100), 0.1) 100%
  );
  border: 1px solid rgba(var(--color-accent-heritage), 0.1);
  box-shadow: 0 1px 2px rgba(var(--color-accent-heritage), 0.03),
    0 2px 4px rgba(var(--color-accent-heritage), 0.04),
    0 4px 8px rgba(var(--color-accent-heritage), 0.05),
    inset 0 1px 0 rgba(255, 255, 255, 0.1),
    inset 0 0 8px rgba(var(--color-accent-heritage), 0.02);
}
.comparison-feature-row:hover .comparison-primary-column .comparison-custom-value {
  background: linear-gradient(135deg,
    rgba(var(--color-background), 1) 0%,
    rgba(var(--color-accent-heritage-50), 0.25) 50%,
    rgba(var(--color-accent-heritage-100), 0.12) 100%
  );
  box-shadow: 0 2px 4px rgba(var(--color-accent-heritage), 0.04),
    0 4px 8px rgba(var(--color-accent-heritage), 0.06),
    0 8px 16px rgba(var(--color-accent-heritage), 0.08),
    inset 0 1px 0 rgba(255, 255, 255, 0.15),
    inset 0 0 12px rgba(var(--color-accent-heritage), 0.03);
  border-color: rgba(var(--color-accent-heritage), 0.15);
  transform: translateY(-4px) scale(1.03);
}
.comparison-performance-badge {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  padding: calc(var(--space-2) * 0.75) var(--space-3);
  border-radius: var(--radius-md);
  font-size: 0.875rem;
  font-weight: var(--font-weight-medium);
  transition: all var(--timing-fast) var(--easing-smooth);
  position: relative;
  overflow: hidden;
  backdrop-filter: blur(5px);
  -webkit-backdrop-filter: blur(5px);
}
.comparison-performance-excellent {
  background: linear-gradient(135deg,
    rgba(var(--color-background), 0.95) 0%,
    rgba(var(--color-success), 0.08) 100%
  );
  color: rgb(var(--color-success));
  border: 1px solid rgba(var(--color-success), 0.2);
  box-shadow: 0 1px 2px rgba(var(--color-success), 0.04),
    0 2px 4px rgba(var(--color-success), 0.06),
    inset 0 1px 0 rgba(255, 255, 255, 0.1);
}
.comparison-performance-good {
  background: linear-gradient(135deg,
    rgba(var(--color-background), 0.95) 0%,
    rgba(var(--color-info), 0.08) 100%
  );
  color: rgb(var(--color-info));
  border: 1px solid rgba(var(--color-info), 0.2);
  box-shadow: 0 1px 2px rgba(var(--color-info), 0.04),
    0 2px 4px rgba(var(--color-info), 0.06),
    inset 0 1px 0 rgba(255, 255, 255, 0.1);
}
.comparison-performance-moderate {
  background: linear-gradient(135deg,
    rgba(var(--color-background), 0.95) 0%,
    rgba(var(--color-warning), 0.08) 100%
  );
  color: rgb(var(--color-warning));
  border: 1px solid rgba(var(--color-warning), 0.2);
  box-shadow: 0 1px 2px rgba(var(--color-warning), 0.04),
    0 2px 4px rgba(var(--color-warning), 0.06),
    inset 0 1px 0 rgba(255, 255, 255, 0.1);
}
.comparison-performance-badge:hover {
  transform: translateY(-2px) scale(1.02);
}
.comparison-performance-excellent:hover {
  box-shadow: 0 2px 4px rgba(var(--color-success), 0.06),
    0 4px 8px rgba(var(--color-success), 0.08),
    0 8px 16px rgba(var(--color-success), 0.1),
    inset 0 1px 0 rgba(255, 255, 255, 0.15);
}
.comparison-performance-good:hover {
  box-shadow: 0 2px 4px rgba(var(--color-info), 0.06),
    0 4px 8px rgba(var(--color-info), 0.08),
    0 8px 16px rgba(var(--color-info), 0.1),
    inset 0 1px 0 rgba(255, 255, 255, 0.15);
}
.comparison-performance-moderate:hover {
  box-shadow: 0 2px 4px rgba(var(--color-warning), 0.06),
    0 4px 8px rgba(var(--color-warning), 0.08),
    0 8px 16px rgba(var(--color-warning), 0.1),
    inset 0 1px 0 rgba(255, 255, 255, 0.15);
}
.comparison-info-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.25rem;
  height: 1.25rem;
  margin-left: var(--space-1);
  color: rgb(var(--color-muted-foreground));
  font-size: var(--font-size-sm);
  background: rgba(var(--color-muted), 0.5);
  border-radius: 50%;
  cursor: help;
  transition: all var(--timing-fast) var(--easing-standard);
  vertical-align: middle;
}
.comparison-info-icon:hover {
  color: rgb(var(--color-primary));
  background: rgba(var(--color-primary), 0.1);
  transform: scale(1.1);
}
@media (min-width: 768px) {
  .comparison-desktop-view {
    display: block !important;
  }
  .comparison-mobile-view {
    display: none !important;
  }
  .comparison-table thead th {
    padding: var(--space-6) var(--space-4);
  }
  .comparison-feature-column {
    width: calc(var(--space-72) - var(--space-2));
  }
  .comparison-checkmark {
    font-size: 1.75rem;
    min-width: var(--space-12);
    min-height: var(--space-12);
  }
  .comparison-custom-value {
    padding: var(--space-3) var(--space-6);
    font-size: 1.05em;
  }
}
@media (min-width: 1024px) {
  .comparison-feature-column {
    width: calc(var(--space-80) + var(--space-10));
  }
  .comparison-table .comparison-feature-description {
    max-width: var(--space-80);
  }
}
@media (max-width: 767px) {
  .comparison-desktop-view {
    display: none !important;
  }
  .comparison-table {
    display: none;
  }
  .comparison-global-headers {
    grid-template-columns: 1fr;
    gap: var(--space-3);
    margin-bottom: var(--space-6);
  }
  .comparison-global-header {
    padding: var(--space-4);
  }
  .comparison-feature-card {
    padding: var(--space-4);
    margin-bottom: var(--space-4);
  }
  .comparison-feature-row {
    display: none;
  }
  .comparison-feature-header {
    margin-bottom: var(--space-4);
    padding-bottom: var(--space-3);
  }
  .comparison-value-card {
    padding: var(--space-3);
    min-height: auto;
  }
  .comparison-value-content {
    min-height: var(--space-12);
  }
  .comparison-custom-value {
    padding: var(--space-2) var(--space-3);
    font-size: 0.875em;
  }
  .comparison-feature-card:hover {
    transform: translateY(-2px);
  }
  .comparison-category-section {
    padding-bottom: var(--space-4);
    margin-bottom: var(--space-4);
  }
  .comparison-category-title {
    width: 100%;
    font-size: 0.8125em;
  }
  .comparison-performance-badge {
    width: 100%;
    justify-content: center;
    padding: var(--space-2) var(--space-3);
  }
  .comparison-feature-description {
    font-size: 0.875em;
  }
  .comparison-checkmark {
    min-width: var(--space-12);
    min-height: var(--space-12);
    font-size: 1.5rem;
  }
  .comparison-xmark {
    min-width: var(--space-12);
    min-height: var(--space-12);
    display: inline-flex;
    align-items: center;
    justify-content: center;
  }
}
.comparison-desktop-view {
  display: none;
}
.comparison-mobile-view {
  display: block;
}
.comparison-badge {
  display: inline-flex;
  align-items: center;
  padding: calc(var(--space-1) * 0.75) var(--space-2);
  background: linear-gradient(135deg,
    rgba(var(--color-accent-heritage), 0.12) 0%,
    rgba(var(--color-accent-heritage), 0.06) 100%
  );
  color: rgb(var(--color-accent-heritage));
  border: 1px solid rgba(var(--color-accent-heritage), 0.15);
  border-radius: var(--radius-full);
  font-size: 0.875rem;
  font-weight: var(--font-weight-medium);
  transition: all var(--timing-fast) var(--easing-smooth);
  box-shadow: 0 1px 2px rgba(var(--color-accent-heritage), 0.08),
    inset 0 1px 0 rgba(255, 255, 255, 0.1);
}
.comparison-badge:hover {
  background: linear-gradient(135deg,
    rgba(var(--color-accent-heritage), 0.16) 0%,
    rgba(var(--color-accent-heritage), 0.08) 100%
  );
  border-color: rgba(var(--color-accent-heritage), 0.2);
  transform: translateY(-1px) scale(1.02);
  box-shadow: 0 2px 4px rgba(var(--color-accent-heritage), 0.1),
    inset 0 1px 0 rgba(255, 255, 255, 0.15);
}
.comparison-mobile {
  display: flex;
  flex-direction: column;
  gap: var(--space-6);
}
.comparison-mobile-card {
  position: relative;
  border-radius: var(--radius-lg);
  overflow: hidden;
  transition: all var(--timing-fast) var(--easing-smooth);
  background: linear-gradient(135deg,
    rgba(var(--color-background), 0.98) 0%,
    rgba(var(--color-primary-50), 0.1) 100%
  );
  border: 1px solid rgba(var(--color-primary-200), 0.2);
  box-shadow: 0 4px 6px rgba(var(--color-primary-900), 0.02),
    0 8px 16px rgba(var(--color-primary-900), 0.04),
    0 16px 32px rgba(var(--color-primary-900), 0.06),
    inset 0 1px 0 rgba(255, 255, 255, 0.1);
  margin-bottom: var(--space-6);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}
.comparison-mobile-primary {
  border-color: rgba(var(--color-accent-heritage), 0.2);
  box-shadow: 0 0 0 1px rgba(var(--color-accent-heritage), 0.1),
    0 var(--space-1) var(--space-3) rgba(var(--color-accent-heritage), 0.08),
    0 var(--space-2) var(--space-6) rgba(var(--color-primary-900), 0.04);
}
.comparison-mobile-header {
  text-align: center;
  border-bottom: 1px solid rgba(var(--color-border), 0.5);
  padding: var(--space-6) var(--space-4);
  padding-bottom: var(--space-4);
  background: linear-gradient(to bottom,
    rgba(var(--color-primary-50), 0.03) 0%,
    transparent 100%
  );
}
.comparison-mobile-feature {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  padding: var(--space-4);
  border-bottom: 1px solid rgba(var(--color-border), 0.3);
  transition: background-color var(--timing-fast) var(--easing-standard);
  min-height: var(--space-12);
}
.comparison-mobile-feature:last-child {
  border-bottom: none;
}
.comparison-mobile-feature:hover {
  background: rgba(var(--color-primary-50), 0.3);
}
.comparison-mobile-value {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: var(--space-12);
  min-height: var(--space-12);
  text-align: center;
  padding: var(--space-2);
}
.comparison-global-header:focus-within,
.comparison-feature-row:focus-within {
  outline: 2px solid rgb(var(--color-accent-heritage));
  outline-offset: 2px;
  box-shadow: 0 0 0 4px rgba(var(--color-accent-heritage), 0.1),
    0 4px 8px rgba(0, 0, 0, 0.08);
}
@media (prefers-contrast: high) {
  .comparison-primary-header,
  .comparison-primary-column {
    border: 3px solid rgb(var(--color-accent-heritage));
  }
  .comparison-checkmark {
    font-weight: var(--font-bold);
  }
}
@media (prefers-reduced-motion: reduce) {
  .comparison-global-header,
  .comparison-feature-row,
  .comparison-checkmark,
  .comparison-custom-value,
  .comparison-performance-badge,
  .comparison-info-icon {
    transition: none !important;
  }
  .comparison-global-header:hover,
  .comparison-feature-row:hover {
    transform: none !important;
  }
  .comparison-feature-row:hover .comparison-checkmark {
    transform: none !important;
  }
}
@media print {
  .comparison-wrapper {
    display: block;
  }
  .comparison-global-headers {
    display: block;
    margin-bottom: var(--space-4);
  }
  .comparison-global-header {
    page-break-inside: avoid;
    margin-bottom: var(--space-2);
    box-shadow: none;
    border: 1px solid rgba(var(--color-border), 1);
  }
  .comparison-feature-row {
    page-break-inside: avoid;
    display: block;
    margin-bottom: var(--space-2);
    padding: var(--space-2);
    border: 1px solid rgba(var(--color-border), 0.5);
  }
  .comparison-global-header:hover,
  .comparison-feature-row:hover {
    transform: none;
    background-color: transparent;
  }
}
.contact-modal {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 9999;
  display: none;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transition: opacity 300ms cubic-bezier(0.4, 0, 0.2, 1);
}
:root.dark .contact-modal {
  background-color: rgba(0, 0, 0, 0.7);
}
.contact-modal--fade-in {
  opacity: 1;
}
.contact-modal--fade-in .contact-modal-content {
  transform: translateY(0);
  opacity: 1;
}
.contact-modal--fade-out {
  opacity: 0;
}
.contact-modal--fade-out .contact-modal-content {
  transform: translateY(-20px);
  opacity: 0;
}
.contact-modal-overlay {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: rgba(0, 0, 0, 0.5);
  transition: opacity 300ms cubic-bezier(0.4, 0, 0.2, 1);
}
:root.dark .contact-modal-overlay {
  background-color: rgba(0, 0, 0, 0.8);
}
.contact-modal-content {
  position: relative;
  background: white;
  padding: 2rem;
  border-radius: 8px;
  max-width: 500px;
  width: 90%;
  max-height: 90vh;
  overflow-y: auto;
  z-index: 1;
  transform: translateY(20px);
  opacity: 0;
  transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1);
  border: 1px solid #e5e7eb;
}
:root.dark .contact-modal-content {
  background: #111827;
  border-color: #374151;
  color: #f9fafb;
}
.contact-modal-close {
  position: absolute;
  top: 1rem;
  right: 1rem;
  background: none;
  border: none;
  font-size: 2rem;
  cursor: pointer;
  color: #6b7280;
  width: 32px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 4px;
  transition: background-color 0.2s, color 0.2s;
}
.contact-modal-close:hover {
  background-color: rgba(0, 0, 0, 0.05);
  color: #374151;
}
:root.dark .contact-modal-close {
  color: #9ca3af;
}
:root.dark .contact-modal-close:hover {
  background-color: rgba(255, 255, 255, 0.1);
  color: #e5e7eb;
}
.contact-modal .form-group {
  margin-bottom: 1.5rem;
}
.contact-modal label {
  display: block;
  margin-bottom: 0.5rem;
  font-weight: 500;
  color: #374151;
}
:root.dark .contact-modal label {
  color: #d1d5db;
}
.contact-modal .form-input {
  width: 100%;
  padding: 0.75rem;
  border: 1px solid #d1d5db;
  border-radius: 4px;
  font-size: 1rem;
  font-family: inherit;
  transition: border-color 0.2s;
  resize: vertical;
  background: white;
  color: #111827;
}
:root.dark .contact-modal .form-input {
  background: #1f2937;
  border-color: #4b5563;
  color: #f9fafb;
}
:root.dark .contact-modal .form-input::-moz-placeholder {
  color: #6b7280;
}
:root.dark .contact-modal .form-input::placeholder {
  color: #6b7280;
}
.contact-modal .form-input:focus {
  outline: none;
  border-color: #dc2626;
}
:root.dark .contact-modal .form-input:focus {
  border-color: #ef4444;
}
.contact-modal textarea.form-input {
  min-height: 100px;
}
.contact-modal .btn {
  width: 100%;
  margin-top: 1rem;
}
.contact-modal-success {
  padding: 2rem 0;
  text-align: center;
}
.contact-modal-success p {
  margin: 0;
  color: #059669;
}
:root.dark .contact-modal-success p {
  color: #10b981;
}
.contact-modal-error {
  padding: 1rem;
  margin-top: 1rem;
  background-color: #fee;
  border: 1px solid #fcc;
  border-radius: 4px;
  text-align: center;
}
:root.dark .contact-modal-error {
  background-color: rgba(220, 38, 38, 0.1);
  border-color: rgba(220, 38, 38, 0.3);
}
.contact-modal-error p {
  margin: 0;
  color: #dc2626;
}
:root.dark .contact-modal-error p {
  color: #ef4444;
}
.cta-wrapper {
  display: block;
  width: 100%;
}
.cta-section {
  color: rgb(var(--color-foreground));
  text-align: center;
  transition: all var(--timing-fast) var(--easing-standard);
  position: relative;
  overflow: hidden;
}
.cta-section-gradient {
  text-align: center;
  position: relative;
  overflow: hidden;
}
.cta-section-gradient::before {
  content: '';
  position: absolute;
  top: 0;
  right: 0;
  height: 100%;
  width: 30%;
  background: linear-gradient(135deg, 
    rgba(var(--color-accent-heritage) / 0.02),
    rgba(var(--color-accent-heritage) / 0.005)
  );
  opacity: 0.4;
  pointer-events: none;
}
.cta-section-minimal {
  text-align: center;
  position: relative;
  overflow: hidden;
}
.cta-section .layout-container {
  animation: cta-section-reveal var(--timing-deliberate) var(--easing-standard) forwards;
  opacity: 0;
}
@keyframes cta-section-reveal {
  from {
    opacity: 0;
    transform: translateY(var(--space-2));
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.cta-content {
  margin-bottom: var(--space-8);
}
.cta-title {
  margin-bottom: var(--space-4);
}
.cta-description {
  margin: 0 auto var(--space-6);
}
.cta-disclaimer {
  margin: var(--space-6) auto 0;
}
.cta-subtitle {
  margin-bottom: var(--space-4);
}
.cta-buttons {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  align-items: center;
  justify-content: center;
  margin-bottom: var(--space-8);
}
.cta-buttons .btn,
.cta-buttons a {
  min-height: 48px;
  min-width: 48px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.cta-button-heritage {
  padding-top: calc(var(--space-4) * 0.25);
  padding-bottom: calc(var(--space-4) * 0.25);
}
@media (min-width: 640px) {
  .cta-title {
    margin-bottom: var(--space-6);
  }
  .cta-description {
    margin-bottom: var(--space-8);
  }
  .cta-buttons {
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: center;
    gap: var(--space-6);
  }
  .cta-button-heritage {
    padding-top: 0;
    padding-bottom: 0;
    padding-left: calc(var(--space-6) * 0.25);
    padding-right: calc(var(--space-6) * 0.25);
  }
}
@media (min-width: 768px) {
  .cta-buttons {
    gap: var(--space-6);
  }
  .cta-wrapper {
    margin-left: auto;
    margin-right: auto;
    max-width: calc(100% - var(--space-32));
  }
}
@media (min-width: 1024px) {
  .cta-buttons {
    gap: var(--space-8);
    flex-wrap: nowrap;
  }
  .cta-button-heritage {
    padding-top: 0;
    padding-bottom: 0;
    padding-left: calc(var(--space-8) * 0.25);
    padding-right: calc(var(--space-8) * 0.25);
  }
  .cta-title {
    margin-bottom: var(--space-8);
  }
  .cta-description {
    margin-bottom: var(--space-12);
  }
  .cta-wrapper {
    max-width: 1400px;
  }
}
@media (min-width: 1280px) {
  .cta-wrapper {
    padding-left: var(--space-48);
    padding-right: var(--space-48);
  }
}
@media (min-width: 1920px) {
  .cta-buttons {
    gap: var(--space-12);
  }
  .cta-button-heritage {
    padding-left: calc(var(--space-12) * 0.25);
    padding-right: calc(var(--space-12) * 0.25);
  }
}
@media (min-width: 1920px) {
  .cta-buttons {
    gap: var(--space-12);
  }
  .cta-button-heritage {
    padding-top: 0;
    padding-bottom: 0;
    padding-left: calc(var(--space-12) * 0.25);
    padding-right: calc(var(--space-12) * 0.25);
  }
}
@media (prefers-reduced-motion: reduce) {
  .cta-section,
  .cta-section-gradient,
  .cta-section-minimal {
    transition: none !important;
  }
  .cta-section .layout-container {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
  }
  @keyframes cta-section-reveal {
    from, to {
      opacity: 1;
      transform: translateY(0);
    }
  }
}
.docs-nav-spacing-sm {
  padding-inline: calc(var(--spacing) * 2);
  padding-block: calc(var(--spacing) * 1);
}
.docs-nav-spacing-md {
  padding-inline: calc(var(--spacing) * 3);
  padding-block: calc(var(--spacing) * 2);
}
.docs-nav-spacing-lg {
  padding-inline: calc(var(--spacing) * 4);
  padding-block: calc(var(--spacing) * 3);
}
.docs-nav-text-primary {
  color: var(--color-slate-900);
  @media (prefers-color-scheme: dark) {
    color: var(--color-white);
  }
}
.docs-nav-text-secondary {
  color: var(--color-slate-600);
  @media (prefers-color-scheme: dark) {
    color: var(--color-slate-400);
  }
}
.docs-nav-text-active {
  color: var(--color-orange-600);
  @media (prefers-color-scheme: dark) {
    color: var(--color-orange-400);
  }
}
.docs-nav-bg-active {
  background-color: var(--color-orange-50);
  @media (prefers-color-scheme: dark) {
    background-color: color-mix(in srgb, oklch(40.8% 0.123 38.172) 20%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      background-color: color-mix(in oklab, var(--color-orange-900) 20%, transparent);
    }
  }
}
.docs-nav-bg-hover {
  &:hover {
    @media (hover: hover) {
      background-color: var(--color-stone-50);
    }
  }
  @media (prefers-color-scheme: dark) {
    &:hover {
      @media (hover: hover) {
        background-color: var(--color-slate-800);
      }
    }
  }
}
.docs-nav-border-active {
  border-right-style: var(--tw-border-style);
  border-right-width: 2px;
  border-color: var(--color-orange-600);
}
.docs-nav-transition {
  transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
  transition-duration: var(--tw-duration, var(--default-transition-duration));
  --tw-duration: 200ms;
  transition-duration: 200ms;
}
@keyframes docs-nav-expand {
  from {
    max-height: 0;
    opacity: 0;
  }
  to {
    max-height: 500px;
    opacity: 1;
  }
}
@keyframes docs-nav-collapse {
  from {
    max-height: 500px;
    opacity: 1;
  }
  to {
    max-height: 0;
    opacity: 0;
  }
}
.docs-nav-expand {
  animation: docs-nav-expand 0.3s ease-out;
}
.docs-nav-collapse {
  animation: docs-nav-collapse 0.3s ease-out;
}
@media (prefers-contrast: high) {
  .docs-nav-item-active {
    border-style: var(--tw-border-style);
    border-width: 2px;
    border-color: var(--color-orange-600);
  }
  .docs-nav-resource-group-active {
    border-style: var(--tw-border-style);
    border-width: 2px;
    border-color: var(--color-orange-600);
  }
  .docs-nav-tab-active {
    border-bottom-style: var(--tw-border-style);
    border-bottom-width: 2px;
    border-color: var(--color-orange-600);
  }
}
@media (prefers-reduced-motion: reduce) {
  .docs-nav-transition,
  .docs-navigation-sidebar,
  .rotate-180 {
    transition: none !important;
    animation: none !important;
  }
}
@media print {
  .docs-navigation-sidebar {
    display: none;
  }
  .docs-mobile-menu-toggle {
    display: none;
  }
  .docs-mobile-backdrop {
    display: none;
  }
}
.docs-layout {
  min-height: 100vh;
  background: var(--color-stone-50);
  font-family: var(--font-family-base);
}
.docs-header {
  background: white;
  border-bottom: 1px solid var(--color-stone-200);
  position: sticky;
  top: 0;
  z-index: 40;
}
.header-container {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 1rem;
}
.header-content {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 4rem;
}
.header-left {
  display: flex;
  align-items: center;
  gap: 0.75rem;
}
.mobile-menu-toggle {
  display: none;
  padding: 0.5rem;
  border-radius: 0.5rem;
  background: transparent;
  border: none;
  cursor: pointer;
  transition: background-color 0.2s;
}
.mobile-menu-toggle:hover {
  background: var(--color-stone-100);
}
.menu-icon {
  width: 1.25rem;
  height: 1.25rem;
  color: var(--color-slate-600);
}
.brand {
  display: flex;
  align-items: center;
  gap: 0.75rem;
}
.brand-icon {
  width: 2rem;
  height: 2rem;
  color: var(--color-heritage);
}
.brand h1 {
  font-size: 1.25rem;
  font-weight: 700;
  color: var(--color-slate-900);
  margin: 0;
}
.version {
  font-size: 0.875rem;
  color: var(--color-slate-600);
  background: var(--color-stone-100);
  padding: 0.25rem 0.75rem;
  border-radius: 1rem;
}
.docs-container {
  display: flex;
  position: relative;
}
.docs-sidebar {
  width: 16rem;
  background: white;
  border-right: 1px solid var(--color-stone-200);
  position: fixed;
  top: 4rem;
  left: 0;
  bottom: 0;
  z-index: 30;
  transform: translateX(0);
  transition: transform 0.3s ease-in-out;
}
.sidebar-header {
  display: none;
  align-items: center;
  justify-content: space-between;
  padding: 1rem;
  border-bottom: 1px solid var(--color-stone-200);
}
.sidebar-header span {
  font-size: 1.125rem;
  font-weight: 600;
  color: var(--color-slate-900);
}
.sidebar-header button {
  padding: 0.5rem;
  border-radius: 0.5rem;
  background: transparent;
  border: none;
  cursor: pointer;
  color: var(--color-slate-600);
}
.sidebar-header button:hover {
  background: var(--color-stone-100);
}
.sidebar-content {
  padding: 1rem;
  height: calc(100vh - 4rem);
  overflow-y: auto;
}
.doc-search {
  margin-bottom: 1.5rem;
}
.search-input {
  width: 100%;
  padding: 0.75rem 1rem;
  border: 1px solid var(--color-stone-300);
  border-radius: 0.5rem;
  font-size: 0.875rem;
  background: white;
  color: var(--color-slate-900);
}
.search-input:focus {
  outline: none;
  border-color: var(--color-primary);
  box-shadow: 0 0 0 3px rgba(71, 85, 105, 0.1);
}
.search-input::-moz-placeholder {
  color: var(--color-slate-400);
}
.search-input::placeholder {
  color: var(--color-slate-400);
}
.nav-group {
  margin-bottom: 2rem;
}
.nav-group-title {
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--color-slate-500);
  margin-bottom: 0.75rem;
}
.nav-list {
  list-style: none;
  padding: 0;
  margin: 0;
}
.nav-list li {
  margin-bottom: 0.25rem;
}
.nav-item {
  display: block;
  width: 100%;
  padding: 0.75rem 1rem;
  border-radius: 0.375rem;
  border: none;
  background: transparent;
  color: var(--color-slate-700);
  font-size: 0.875rem;
  text-align: left;
  cursor: pointer;
  transition: all 0.2s;
  text-decoration: none;
}
.nav-item:hover {
  background: var(--color-stone-100);
  color: var(--color-slate-900);
}
.nav-item-active {
  background: var(--color-heritage-light);
  color: var(--color-heritage-dark);
  font-weight: 500;
}
.docs-content {
  flex: 1;
  margin-left: 16rem;
  padding: 2rem;
  max-width: 100%;
}
.doc-article {
  max-width: 48rem;
  margin: 0 auto;
}
.doc-header {
  margin-bottom: 3rem;
  padding-bottom: 2rem;
  border-bottom: 1px solid var(--color-stone-200);
}
.title-doc {
  font-size: clamp(1.75rem, 3vw, 2.5rem);
  font-weight: 700;
  color: var(--color-slate-900);
  margin-bottom: 1rem;
  line-height: 1.2;
}
.title-section {
  font-size: clamp(1.5rem, 2.5vw, 2rem);
  font-weight: 600;
  color: var(--color-slate-900);
  margin-bottom: 1rem;
  margin-top: 3rem;
  line-height: 1.3;
}
.description {
  font-size: 1rem;
  line-height: 1.7;
  color: var(--color-slate-600);
  margin-bottom: 1.5rem;
}
.doc-toc {
  background: var(--color-stone-50);
  border: 1px solid var(--color-stone-200);
  border-radius: 0.5rem;
  padding: 1.5rem;
  margin: 2rem 0;
}
.doc-toc h2 {
  font-size: 1.125rem;
  font-weight: 600;
  color: var(--color-slate-900);
  margin-bottom: 1rem;
}
.doc-toc ul,
.doc-toc ol {
  margin: 0;
  padding-left: 1.5rem;
}
.doc-toc li {
  margin-bottom: 0.5rem;
}
.doc-toc a {
  color: var(--color-primary);
  text-decoration: none;
  font-size: 0.875rem;
}
.doc-toc a:hover {
  color: var(--color-heritage);
  text-decoration: underline;
}
.doc-section {
  margin-bottom: 3rem;
}
.step-number {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  background: var(--color-heritage);
  color: white;
  border-radius: 50%;
  font-size: 0.875rem;
  font-weight: 600;
  margin-right: 0.75rem;
}
.requirements-list {
  list-style: none;
  padding: 0;
  margin: 0;
}
.requirement-item {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  padding: 1rem;
  background: white;
  border: 1px solid var(--color-stone-200);
  border-radius: 0.5rem;
  margin-bottom: 0.75rem;
}
.requirement-icon {
  width: 1.25rem;
  height: 1.25rem;
  color: var(--color-green-500);
  flex-shrink: 0;
  margin-top: 0.125rem;
}
.step-list {
  list-style: decimal;
  padding-left: 1.5rem;
  margin: 1rem 0;
}
.step-list li {
  margin-bottom: 0.75rem;
  color: var(--color-slate-700);
  line-height: 1.6;
}
.doc-code-block {
  background: var(--color-slate-900);
  border-radius: 0.75rem;
  margin: 1.5rem 0;
  overflow: hidden;
  border: 1px solid var(--color-slate-700);
}
.code-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 1rem 1.5rem;
  background: var(--color-slate-800);
  border-bottom: 1px solid var(--color-slate-700);
}
.code-title {
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--color-slate-200);
}
.copy-button {
  padding: 0.5rem 1rem;
  background: var(--color-primary);
  color: white;
  border: none;
  border-radius: 0.375rem;
  font-size: 0.75rem;
  font-weight: 500;
  cursor: pointer;
  transition: background-color 0.2s;
}
.copy-button:hover {
  background: var(--color-primary-dark);
}
.code-content {
  padding: 1.5rem;
  margin: 0;
  overflow-x: auto;
}
.code-content code {
  font-family: 'Monaco', 'Courier New', monospace;
  font-size: 0.875rem;
  line-height: 1.6;
  color: var(--color-green-400);
  white-space: pre-wrap;
}
.callout-info,
.callout-warning,
.callout-error,
.callout-success {
  padding: 1.5rem;
  border-radius: 0.5rem;
  margin: 1.5rem 0;
  border-left: 4px solid;
}
.callout-info {
  background: var(--color-blue-50);
  border-left-color: var(--color-blue-500);
}
.callout-info h3 {
  color: var(--color-blue-900);
  font-size: 1.125rem;
  font-weight: 600;
  margin-bottom: 0.5rem;
}
.callout-info p {
  color: var(--color-blue-800);
  margin: 0;
}
.callout-warning {
  background: var(--color-yellow-50);
  border-left-color: var(--color-yellow-500);
}
.callout-warning h3 {
  color: var(--color-yellow-900);
  font-size: 1.125rem;
  font-weight: 600;
  margin-bottom: 0.5rem;
}
.callout-warning p {
  color: var(--color-yellow-800);
  margin: 0;
}
.provider-specs {
  display: grid;
  gap: 2rem;
}
.spec-table {
  width: 100%;
  border-collapse: collapse;
  background: white;
  border-radius: 0.5rem;
  overflow: hidden;
  border: 1px solid var(--color-stone-200);
}
.spec-table th {
  background: var(--color-stone-50);
  padding: 0.75rem 1rem;
  text-align: left;
  font-weight: 600;
  color: var(--color-slate-900);
  font-size: 0.875rem;
  border-bottom: 1px solid var(--color-stone-200);
}
.spec-table td {
  padding: 0.75rem 1rem;
  border-bottom: 1px solid var(--color-stone-200);
  font-size: 0.875rem;
  color: var(--color-slate-700);
}
.spec-table td:first-child {
  font-family: 'Monaco', 'Courier New', monospace;
  color: var(--color-primary);
  font-weight: 500;
}
.spec-table td:nth-child(2) {
  font-family: 'Monaco', 'Courier New', monospace;
  color: var(--color-slate-600);
}
.resource-spec {
  display: grid;
  gap: 2rem;
}
.param-list {
  display: grid;
  gap: 1rem;
}
.param-item {
  padding: 1rem;
  border-radius: 0.5rem;
  border: 1px solid;
}
.param-item.input {
  background: var(--color-blue-50);
  border-color: var(--color-blue-200);
}
.param-item.output {
  background: var(--color-green-50);
  border-color: var(--color-green-200);
}
.param-item code {
  font-family: 'Monaco', 'Courier New', monospace;
  font-size: 0.875rem;
  font-weight: 600;
  display: block;
  margin-bottom: 0.5rem;
}
.param-item.input code {
  color: var(--color-blue-800);
}
.param-item.output code {
  color: var(--color-green-800);
}
.param-item p {
  margin: 0;
  font-size: 0.875rem;
  line-height: 1.5;
}
.param-item.input p {
  color: var(--color-blue-700);
}
.param-item.output p {
  color: var(--color-green-700);
}
@media (max-width: 1024px) {
  .docs-sidebar {
    transform: translateX(-100%);
  }
  .docs-sidebar.mobile-visible {
    transform: translateX(0);
  }
  .mobile-menu-toggle {
    display: block;
  }
  .sidebar-header.mobile-only {
    display: flex;
  }
  .docs-content {
    margin-left: 0;
    padding: 1rem;
  }
  .sidebar-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.5);
    z-index: 25;
  }
  .title-doc {
    font-size: 1.75rem;
  }
  .title-section {
    font-size: 1.5rem;
    margin-top: 2rem;
  }
  .doc-toc {
    padding: 1rem;
  }
  .requirement-item {
    padding: 0.75rem;
  }
  .code-header {
    padding: 0.75rem 1rem;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.5rem;
  }
  .code-content {
    padding: 1rem;
  }
  .param-list {
    grid-template-columns: 1fr;
  }
  .provider-specs {
    grid-template-columns: 1fr;
  }
}
@media (prefers-color-scheme: dark) {
  .docs-layout {
    background: var(--color-slate-900);
  }
  .docs-header {
    background: var(--color-slate-800);
    border-bottom-color: var(--color-slate-700);
  }
  .brand h1 {
    color: white;
  }
  .docs-sidebar {
    background: var(--color-slate-800);
    border-right-color: var(--color-slate-700);
  }
}
.mobile-hidden {
  display: none;
}
@media (max-width: 1024px) {
  .mobile-hidden {
    display: block;
  }
  .mobile-only {
    display: block;
  }
}
.mobile-only {
  display: none;
}
.faq-item {
  display: block;
  position: relative;
  width: 100%;
  margin-bottom: calc(var(--space-6) * 1.3);
  border: 0;
  border-radius: var(--radius-lg);
  background: rgb(var(--color-card));
  color: rgb(var(--color-foreground));
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
  transition: transform var(--timing-fast) var(--ease-smooth),
    box-shadow var(--timing-fast) var(--ease-smooth);
  contain: layout style;
  transform: translate3d(0, 0, 0);
}
.faq-item:hover {
  transform: translateY(-3px);
  box-shadow: 0 8px 25px rgba(0, 0, 0, 0.12);
  border: 0;
}
.faq-item-heritage {
  border: 0;
  box-shadow: inset 4px 0 0 rgb(var(--color-accent-heritage)), 
    0 1px 3px rgba(0, 0, 0, 0.05);
  padding-left: calc((var(--space-4) + var(--space-2)) * 1.3);
  margin: calc(var(--space-8) * 1.3) 0;
  background: rgba(var(--color-accent-heritage) / 0.02);
}
.faq-item-content {
  padding: calc(var(--space-6) * 1.3);
}
.faq-question-button {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  width: 100%;
  background: transparent;
  border: none;
  outline: none;
  margin: 0;
  padding: calc(var(--space-2) * 1.3) 0;
  min-height: 48px;
  cursor: pointer;
  text-align: left;
  font-family: inherit;
  font-size: inherit;
  color: inherit;
  transition: opacity var(--timing-fast) var(--ease-smooth);
}
.faq-question-button:hover {
  opacity: 0.9;
}
.faq-question-button:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(var(--color-focus) / 0.5);
  border-radius: var(--radius-sm);
}
.faq-question-text {
  flex: 1;
  margin: 0 !important;
  margin-bottom: 0 !important;
}
.faq-icon {
  flex-shrink: 0;
  transition: transform var(--timing-fast) var(--ease-smooth);
  margin: 0 !important;
  margin-bottom: 0 !important;
  display: inline-flex;
  align-self: center;
}
.faq-icon.icon-sm {
  margin-bottom: 0 !important;
}
.faq-expanded .faq-icon {
  transform: rotate(90deg);
}
.faq-answer {
  margin-top: calc(var(--space-4) * 1.3);
  padding-top: calc(var(--space-4) * 1.3);
  border-top: 0;
  box-shadow: inset 0 1px 0 rgba(var(--color-border) / 0.2);
  animation: fadeIn var(--timing-fast) var(--ease-smooth);
}
@keyframes fadeIn {
  from {
    opacity: 0;
    transform: translateY(-8px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
@media (max-width: 767px) {
  .faq-item {
    margin-bottom: calc(var(--space-4) * 1.3);
  }
  .faq-item-content {
    padding: calc(var(--space-4) * 1.3);
  }
  .faq-question-button {
    min-height: 48px;
    gap: var(--space-2);
  }
  .faq-answer {
    margin-top: calc(var(--space-3) * 1.3);
    padding-top: calc(var(--space-3) * 1.3);
  }
}
@media (min-width: 768px) and (max-width: 1023px) {
  .faq-item-content {
    padding: var(--space-5);
  }
}
@media (min-width: 1024px) {
  .faq-item {
    margin-bottom: var(--space-6);
  }
  .faq-item:hover {
    transform: translateY(-4px);
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.15);
    border: 0;
  }
}
@media (prefers-contrast: high) {
  .faq-item {
    outline: 2px solid currentColor;
    outline-offset: -2px;
    border: 0;
  }
  .faq-item-heritage {
    outline: 2px solid rgb(var(--color-accent-heritage));
    outline-offset: -2px;
    border: 0;
  }
}
@media (prefers-reduced-motion: reduce) {
  .faq-item,
  .faq-icon,
  .faq-answer {
    transition: none !important;
    animation: none !important;
  }
}
.faq-item,
.faq-icon {
  will-change: transform;
}
.faq-item:not(:hover),
.faq-icon:not(.rotating) {
  will-change: auto;
}
.feature-card {
  background: rgb(var(--color-card));
  border: 0;
  border-radius: var(--radius-lg);
  padding: var(--space-8);
  box-shadow: var(--shadow-card);
  transition: all var(--timing-fast) var(--ease-smooth);
  transform: translateZ(0);
  will-change: transform, box-shadow;
}
.feature-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-card-hover);
}
.feature-card:active {
  transform: translateY(-2px);
  box-shadow: var(--shadow-card-active);
}
.feature-card:not(:hover) {
  will-change: auto;
}
.feature-card-transparent {
  background: transparent;
  box-shadow: none;
  border: 0;
}
.feature-card-transparent:hover {
  background: rgba(var(--color-card) / 0.5);
  border: 0;
  box-shadow: var(--shadow-card);
}
.feature-card-content {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: var(--space-4);
}
.feature-card-content .title-card {
  margin-bottom: var(--space-3);
}
.feature-card-content .description {
  margin-bottom: var(--space-4);
  max-width: 42ch;
}
.feature-tags {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  justify-content: center;
  margin-top: var(--space-2);
}
.feature-tag {
  display: inline-flex;
  align-items: center;
  padding: var(--space-1) var(--space-3);
  background: rgb(var(--color-muted));
  color: rgb(var(--color-muted-foreground));
  border-radius: var(--radius-full);
  font-size: 0.875rem;
  font-weight: 500;
  transition: all var(--timing-fast) var(--ease-smooth);
}
.feature-tag:hover {
  background: rgb(var(--color-muted) / 0.8);
  transform: translateY(-1px);
}
.icon-pulse {
  animation: iconPulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}
.icon-spin {
  animation: iconSpin 3s linear infinite;
}
.icon-interactive {
  transition: transform var(--timing-fast) var(--ease-smooth);
}
.feature-card:hover .icon-interactive {
  transform: scale(1.1) rotate(5deg);
}
@keyframes iconPulse {
  0%, 100% {
    opacity: 1;
    transform: scale(1);
  }
  50% {
    opacity: 0.8;
    transform: scale(1.05);
  }
}
@keyframes iconSpin {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}
@media (max-width: 767px) {
  .feature-card {
    padding: var(--space-6);
    box-shadow: var(--shadow-card);
  }
  .feature-card:hover {
    transform: translateY(-2px);
    box-shadow: var(--shadow-card-hover);
  }
  .feature-card-content {
    gap: var(--space-3);
  }
  .feature-card-content .description {
    font-size: 0.9375rem;
    line-height: 1.6;
  }
  .feature-tags {
    gap: var(--space-1);
  }
  .feature-tag {
    font-size: 0.8125rem;
    padding: calc(var(--space-1) * 0.75) var(--space-2);
  }
}
@media (max-width: 375px) {
  .feature-card {
    padding: var(--space-4);
  }
  .feature-card-content .description {
    font-size: 0.875rem;
  }
}
@media (min-width: 768px) and (max-width: 1279px) {
  .feature-card {
    padding: var(--space-7);
  }
  .feature-card-content {
    gap: var(--space-4);
  }
}
@media (min-width: 1280px) {
  .feature-card {
    padding: var(--space-10);
  }
  .feature-card:hover {
    transform: translateY(-6px);
    box-shadow: var(--shadow-card-hover);
  }
  .feature-card-content {
    gap: var(--space-5);
  }
  .feature-card-content .title-card {
    margin-bottom: var(--space-4);
  }
  .feature-card-content .description {
    margin-bottom: var(--space-5);
    max-width: 48ch;
  }
}
.feature-card:focus-within {
  outline: 2px solid rgb(var(--color-focus));
  outline-offset: 2px;
}
.feature-card:has(.icon-container-heritage) {
  margin-top: calc(var(--space-4) * 1.3);
  margin-bottom: calc(var(--space-4) * 1.3);
}
.layout-grid-3 .feature-card,
.layout-grid-4 .feature-card {
  height: 100%;
  display: flex;
  flex-direction: column;
}
.layout-grid-3 .feature-card-content,
.layout-grid-4 .feature-card-content {
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
}
@media (prefers-contrast: high) {
  .feature-card {
    outline: 2px solid currentColor;
  }
  .feature-card:focus-within {
    outline-width: 3px;
  }
  .feature-tag {
    outline: 1px solid currentColor;
  }
}
@media (prefers-reduced-motion: reduce) {
  .feature-card {
    transition: none;
  }
  .feature-card:hover {
    transform: none;
  }
  .icon-pulse,
  .icon-spin {
    animation: none;
  }
  .icon-interactive {
    transition: none;
  }
}
@media print {
  .feature-card {
    box-shadow: none;
    outline: 1px solid #000;
    page-break-inside: avoid;
  }
  .feature-card:hover {
    transform: none;
  }
  .feature-tag {
    outline: 1px solid #000;
    background: none;
  }
}
.floating-cta {
  position: fixed;
  bottom: 2rem;
  right: 2rem;
  z-index: 40;
  transition: var(--transition-colors);
}
.floating-cta-button-enhanced {
  padding: 1rem 1.5rem;
  border: 1px solid rgb(var(--color-primary));
  border-radius: var(--radius-full);
  transition: var(--transition-colors);
  white-space: nowrap;
}
.floating-cta-button-enhanced:hover {
  opacity: 0.9;
}
.floating-cta-content {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}
.floating-cta-text {
  font-weight: 600;
  font-size: 0.875rem;
}
.floating-cta-icon {
  width: 1rem;
  height: 1rem;
}
.floating-cta--hidden {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}
@media (max-width: 768px) {
  .floating-cta {
    bottom: 1rem;
    right: 1rem;
  }
  .floating-cta-button-enhanced {
    padding: 0.75rem 1rem;
  }
  .floating-cta-text {
    display: none;
  }
}
@media (max-width: 480px) {
  .floating-cta {
    bottom: 1rem;
    right: 1rem;
  }
}
.floating-theme-toggle {
  position: fixed;
  top: 1rem;
  right: 1rem;
  z-index: 50;
  transition: var(--transition-colors);
}
@media (min-width: 1024px) {
  .floating-theme-toggle {
    top: 1.5rem;
    right: 1.5rem;
  }
}
.floating-theme-toggle-button-enhanced {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 3rem;
  height: 3rem;
  border: 1px solid rgb(var(--color-border));
  border-radius: var(--radius-full);
  background: rgb(var(--color-background) / 0.95);
  color: rgb(var(--color-muted-foreground));
  cursor: pointer;
  transition: var(--transition-colors);
}
.floating-theme-toggle-button-enhanced:hover {
  border-color: rgb(var(--color-primary));
  color: rgb(var(--color-primary));
  background: rgb(var(--color-primary) / 0.05);
}
.floating-theme-toggle-button-enhanced:focus {
  outline: 2px solid rgb(var(--color-primary));
  outline-offset: 2px;
}
.floating-theme-toggle-icon {
  width: 1.25rem;
  height: 1.25rem;
  transition: var(--transition-colors);
}
.floating-theme-toggle--light .floating-theme-toggle-icon--sun {
  display: block;
}
.floating-theme-toggle--light .floating-theme-toggle-icon--moon {
  display: none;
}
.floating-theme-toggle--dark .floating-theme-toggle-icon--sun {
  display: none;
}
.floating-theme-toggle--dark .floating-theme-toggle-icon--moon {
  display: block;
}
@media (max-width: 768px) {
  .floating-theme-toggle {
    top: 0.75rem;
    right: 0.75rem;
  }
  .floating-theme-toggle-button-enhanced {
    width: 2.5rem;
    height: 2.5rem;
  }
  .floating-theme-toggle-icon {
    width: 1rem;
    height: 1rem;
  }
}
.footer-main {
  background-color: rgb(var(--color-background));
  border: 0;
  box-shadow: 0 -1px 3px rgba(0, 0, 0, 0.05);
  padding: var(--space-16) 0;
  transition: all var(--timing-fast) var(--easing-standard);
}
.footer-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-8);
  margin-bottom: var(--space-12);
}
@media (min-width: 768px) {
  .footer-grid {
    grid-template-columns: 1fr 1fr;
    gap: var(--space-12);
  }
}
@media (min-width: 1024px) {
  .footer-grid {
    grid-template-columns: 2fr 1fr 1fr 1fr;
    gap: var(--space-16);
  }
}
.footer-brand-section {
  max-width: 400px;
}
.footer-logo-container {
  margin-bottom: var(--space-6);
  padding: var(--space-2) 0;
}
.footer-logo {
  height: var(--space-8);
  width: auto;
  transition: all var(--timing-fast) var(--easing-standard);
}
.footer-logo:hover {
  transform: translateY(calc(var(--space-0-5) * -1));
  filter: brightness(1.1);
}
.footer-address {
  font-style: normal;
}
.footer-brand-section .description {
  margin-bottom: var(--space-6);
}
.footer-brand-section .description:last-of-type {
  margin-bottom: var(--space-6);
}
.footer-social-container {
  display: flex;
  gap: var(--space-4);
  margin-top: var(--space-6);
}
.footer-social-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--space-10);
  height: var(--space-10);
  min-width: 48px;
  min-height: 48px;
  border-radius: var(--radius-md);
  background-color: rgb(var(--color-muted) / 0.1);
  border: 0;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
  color: rgb(var(--color-muted-foreground));
  transition: all var(--timing-fast) var(--easing-standard);
  text-decoration: none;
}
.footer-social-link:hover {
  background-color: rgb(var(--color-primary) / 0.1);
  color: rgb(var(--color-primary));
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
}
.footer-social-link:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(var(--color-focus) / 0.5);
}
.footer-column {
  min-width: 0;
}
.footer-column .title-card {
  margin-bottom: var(--space-4);
}
.footer-link-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}
.footer-link-item {
  margin: 0;
}
.footer-link {
  color: rgb(var(--color-muted-foreground));
  text-decoration: none;
  display: inline-block;
  position: relative;
  transition: all var(--timing-fast) var(--easing-standard);
  padding: var(--space-1) 0;
}
.footer-link::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  width: 0;
  height: var(--space-px);
  background: rgb(var(--color-primary));
  transition: width var(--timing-medium) var(--easing-standard);
}
.footer-link:hover {
  color: rgb(var(--color-primary));
  transform: translateX(var(--space-0-5));
}
.footer-link:hover::after {
  width: 100%;
}
.footer-link:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(var(--color-focus) / 0.5);
  border-radius: var(--radius-sm);
}
.footer-contact-button {
  background: none;
  border: none;
  padding: var(--space-1) 0;
  display: inline-block;
  position: relative;
  font-family: inherit;
  font-size: inherit;
  text-align: left;
  width: auto;
  color: rgb(var(--color-muted-foreground));
  text-decoration: none;
  transition: all var(--timing-fast) var(--easing-standard);
  cursor: pointer;
}
.footer-contact-button::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  width: 0;
  height: var(--space-px);
  background: rgb(var(--color-primary));
  transition: width var(--timing-medium) var(--easing-standard);
}
.footer-contact-button:hover {
  color: rgb(var(--color-primary));
  transform: translateX(var(--space-0-5));
}
.footer-contact-button:hover::after {
  width: 100%;
}
.footer-contact-button:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(var(--color-focus) / 0.5);
  border-radius: var(--radius-sm);
}
.footer-bottom {
  margin-top: var(--space-12);
  padding-top: var(--space-8);
  border: 0;
  box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.05);
}
.footer-bottom-content {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-4);
  text-align: center;
}
@media (min-width: 768px) {
  .footer-bottom-content {
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
    text-align: left;
  }
}
.footer-bottom-content .description {
  margin: 0;
}
.footer-legal-links {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: var(--space-6);
}
@media (min-width: 768px) {
  .footer-legal-links {
    justify-content: flex-end;
  }
}
.footer-legal-link {
  color: rgb(var(--color-muted-foreground));
  text-decoration: none;
  padding: var(--space-3) var(--space-2);
  border-radius: var(--radius-sm);
  transition: all var(--timing-fast) var(--easing-standard);
  min-height: 48px;
  display: flex;
  align-items: center;
}
.footer-legal-link:hover {
  color: rgb(var(--color-primary));
  background-color: rgb(var(--color-primary) / 0.05);
}
.footer-legal-link:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(var(--color-focus) / 0.5);
}
@media (max-width: 480px) {
  .footer-main {
    padding: var(--space-12) 0;
  }
  .footer-grid {
    gap: var(--space-6);
    margin-bottom: var(--space-8);
  }
  .footer-social-container {
    gap: var(--space-3);
    justify-content: center;
  }
  .footer-social-link {
    width: var(--space-9);
    height: var(--space-9);
  }
  .footer-legal-links {
    flex-direction: column;
    gap: var(--space-2);
    text-align: center;
  }
}
@media (prefers-reduced-motion: reduce) {
  .footer-logo,
  .footer-social-link,
  .footer-link {
    transition: none;
    transform: none;
  }
  .footer-logo:hover,
  .footer-social-link:hover,
  .footer-link:hover {
    transform: none;
  }
}
@media (prefers-contrast: high) {
  .footer-social-link {
    box-shadow: 0 0 0 2px rgb(var(--color-primary));
  }
  .footer-link {
    text-decoration: underline;
  }
  .footer-bottom {
    box-shadow: 0 -2px 0 rgba(0, 0, 0, 0.2);
  }
}
.footer-logo,
.footer-social-link,
.footer-link {
  transform: translateZ(0);
  backface-visibility: hidden;
}
.footer-social-container,
.footer-link-list {
  will-change: transform;
}
.header-container {
  position: sticky;
  top: 0;
  z-index: 50;
  width: 100%;
  background-color: rgba(var(--color-background) / 0.95);
  container-type: inline-size;
  container-name: header;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.05);
  overflow: visible !important;
  @supports not ((-webkit-backdrop-filter: blur(12px)) or (backdrop-filter: blur(12px))) {
    background-color: rgb(var(--color-background));
  }
  transform: translateZ(0);
  will-change: transform;
}
.header-container .layout-container {
  height: auto;
  background-color: rgb(var(--color-background));
  display: flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  overflow: visible !important;
  padding-top: var(--space-2);
  padding-bottom: var(--space-2);
  width: 100% !important;
  min-width: 0;
  max-width: 100vw !important;
  margin: 0 auto;
}
.header-wrapper {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  width: 100%;
  max-width: 1200px;
  height: auto;
  box-sizing: border-box;
  overflow: visible !important;
  margin: 0 auto;
}
.header-container .layout-container[data-nav-wrapped="true"] {
  align-items: flex-start;
  padding-top: var(--space-3);
  padding-bottom: var(--space-3);
}
.header-wrapper[data-nav-wrapped="true"] {
  align-items: flex-start;
  height: auto;
  padding: var(--space-2) 0;
}
.header-container .layout-container:has(.header-nav-list[data-wrapped="true"]) {
  align-items: flex-start;
  padding-top: var(--space-3);
  padding-bottom: var(--space-3);
}
.header-wrapper:has(.header-nav-list[data-wrapped="true"]) {
  align-items: flex-start;
  height: auto;
  padding: var(--space-2) 0;
}
.header-fixed-container {
  display: none;
}
.header-logo-link {
  display: flex;
  align-items: center;
  flex: 0 0 auto;
  padding: var(--space-2);
  transition: opacity var(--duration-fast);
  text-decoration: none;
  box-sizing: border-box;
}
.header-logo-link:hover {
  opacity: 0.8;
}
.header-logo-link:focus-visible {
  outline: 2px solid rgb(var(--color-primary));
  outline-offset: 2px;
  border-radius: var(--radius-sm);
}
.header-logo {
  height: auto;
  width: auto;
  max-width: 100%;
  -o-object-fit: contain;
     object-fit: contain;
  display: block;
}
.header-logo-mobile {
  height: var(--space-8);
  max-width: calc(var(--space-8) * 1.875);
}
.header-logo-desktop {
  display: none;
}
.header-nav {
  display: none;
  flex: 1;
  min-width: 0;
  max-width: 100%;
  white-space: nowrap;
}
.header-nav-list {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  list-style: none;
  margin: 0;
  padding: 0;
  flex-wrap: nowrap;
  justify-content: center;
  width: 100%;
  max-width: 100%;
  white-space: nowrap;
  row-gap: var(--space-1);
  transition: gap var(--timing-fast) var(--ease-smooth);
}
.header-nav-item {
  position: relative;
  display: flex;
  align-items: center;
}
.nav-logo-item {
  flex: none;
  margin-right: var(--space-6);
}
.nav-button-item {
  flex: none;
  margin-left: var(--space-4);
}
.header-nav-link {
  display: flex;
  align-items: center;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  min-height: var(--touch-target-min, 48px);
  padding: var(--space-2) var(--space-3);
  box-sizing: border-box;
  line-height: 1;
  margin-bottom: 0 !important;
  color: rgb(var(--color-foreground));
  text-decoration: none;
  border-radius: var(--radius-md);
  transition: all var(--timing-fast);
}
.header-nav-link:hover {
  background-color: rgba(var(--color-primary) / 0.05);
  color: rgb(var(--color-primary));
}
.header-nav-link:focus-visible {
  outline: 2px solid rgb(var(--color-primary));
  outline-offset: 2px;
}
.header-nav-link[aria-current="page"] {
  color: rgb(var(--color-primary));
}
.header-nav-link--active {
  color: rgb(var(--color-accent-heritage)) !important;
  padding: var(--space-2) calc(var(--space-3) * 1.3);
  margin: 0 calc(var(--space-1) * 0.3);
}
.header-nav-link[aria-current="page"]::after {
  content: '';
  position: absolute;
  bottom: calc(-1 * var(--space-1) / 2);
  left: var(--space-3);
  right: var(--space-3);
  height: var(--space-1);
  background: rgb(var(--color-accent-heritage));
  opacity: 0;
  transition: opacity var(--timing-fast);
}
.header-nav-item:hover .header-nav-link[aria-current="page"]::after {
  opacity: 1;
}
.header-dropdown {
  position: relative;
}
.header-dropdown-group {
  display: flex;
  align-items: stretch;
  gap: 0;
}
.header-dropdown-link {
  display: flex;
  align-items: center;
  min-height: var(--touch-target-min, 48px);
  padding: var(--space-2) var(--space-3);
  box-sizing: border-box;
  line-height: 1;
  margin-bottom: 0 !important;
  text-decoration: none;
  color: rgb(var(--color-foreground));
  transition: all var(--timing-fast);
  border-radius: var(--radius-md) 0 0 var(--radius-md);
}
.header-dropdown-link:hover {
  background-color: rgba(var(--color-primary) / 0.05);
  color: rgb(var(--color-primary));
}
.header-dropdown-link--active {
  color: rgb(var(--color-heritage));
  font-weight: 500;
}
.header-dropdown-link:focus-visible {
  outline: 2px solid rgb(var(--color-primary));
  outline-offset: 2px;
  z-index: 1;
}
.header-dropdown-toggle {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: var(--touch-target-min, 48px);
  min-width: 28px;
  padding: calc(var(--space-1) / 2);
  box-sizing: border-box;
  line-height: 1;
  color: rgb(var(--color-foreground));
  background: none;
  border: none;
  border-radius: 0 var(--radius-md) var(--radius-md) 0;
  cursor: pointer;
  transition: all var(--timing-fast);
}
.header-dropdown-toggle .icon-container-xs {
  display: flex;
  align-items: center;
  justify-content: center;
}
.header-dropdown-toggle:hover {
  background-color: rgba(var(--color-primary) / 0.05);
  color: rgb(var(--color-primary));
}
.header-dropdown-toggle:focus-visible {
  outline: 2px solid rgb(var(--color-primary));
  outline-offset: 2px;
  z-index: 1;
}
.header-dropdown-toggle[aria-expanded="true"] .header-dropdown-icon {
  transform: rotate(180deg);
}
.header-dropdown-trigger {
  display: flex;
  align-items: center;
  gap: var(--space-1);
  min-height: var(--touch-target-min, 48px);
  padding: var(--space-2) var(--space-3);
  box-sizing: border-box;
  line-height: 1;
  margin-bottom: 0 !important;
  color: rgb(var(--color-foreground));
  background: none;
  border: none;
  border-radius: var(--radius-md);
  cursor: pointer;
  transition: all var(--timing-fast);
  font-family: inherit;
  text-align: left;
}
.header-dropdown-trigger:hover {
  background-color: rgba(var(--color-primary) / 0.05);
  color: rgb(var(--color-primary));
}
.header-dropdown-trigger:focus-visible {
  outline: 2px solid rgb(var(--color-primary));
  outline-offset: 2px;
}
.header-dropdown-icon {
  transition: transform var(--duration-fast);
}
.header-dropdown--open .header-dropdown-icon {
  transform: rotate(180deg);
}
.header-dropdown-menu {
  position: absolute;
  top: 100%;
  left: 50%;
  transform: translateX(-50%);
  margin-top: var(--space-2);
  min-width: 220px;
  background-color: rgb(var(--color-background));
  border: none;
  border-radius: var(--radius-lg);
  box-shadow: 0 10px 40px rgba(0, 0, 0, 0.15), 0 2px 10px rgba(0, 0, 0, 0.08);
  padding: var(--space-2);
  opacity: 0;
  visibility: hidden;
  transform: translateX(-50%) translateY(-10px);
  transition: all var(--timing-fast);
}
@media (min-width: 768px) {
  .header-dropdown:hover .header-dropdown-menu {
    opacity: 1;
    visibility: visible;
    transform: translateX(-50%) translateY(0);
  }
  .header-dropdown:hover .header-dropdown-icon {
    transform: rotate(180deg);
  }
}
.header-dropdown--open .header-dropdown-menu {
  opacity: 1;
  visibility: visible;
  transform: translateX(-50%) translateY(0);
}
.header-dropdown-item {
  display: block;
  width: 100%;
  padding: var(--space-2) var(--space-3);
  color: rgb(var(--color-muted-foreground));
  text-decoration: none;
  border-radius: var(--radius-md);
  transition: all var(--duration-fast);
}
.header-dropdown-item:hover {
  background-color: rgba(var(--color-primary) / 0.05);
  color: rgb(var(--color-foreground));
}
.header-dropdown-item:focus-visible {
  outline: 2px solid rgb(var(--color-primary));
  outline-offset: -2px;
}
.header-dropdown-item[aria-current="page"] {
  color: rgb(var(--color-primary));
  background-color: rgba(var(--color-primary) / 0.1);
}
.header-actions {
  display: flex;
  align-items: center;
  gap: var(--space-4);
  flex: 0 0 auto;
  justify-self: end;
  align-self: center;
  min-width: 120px;
}
.header-mobile-toggle {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  padding: 0;
  background: transparent;
  border: none;
  cursor: pointer;
  border-radius: var(--radius-md);
  transition: background-color var(--duration-fast);
  justify-self: end;
  flex-shrink: 0;
}
.header-mobile-toggle:hover {
  background-color: rgba(var(--color-primary) / 0.05);
}
.header-mobile-toggle:focus-visible {
  outline: 2px solid rgb(var(--color-primary));
  outline-offset: -2px;
}
.header-mobile-toggle-icon {
  color: rgb(var(--color-foreground));
}
.nav-button-item .header-contact-btn {
  padding: var(--space-2) var(--space-4) !important;
  min-height: 48px !important;
  height: 48px !important;
  display: inline-flex;
  align-items: center;
  box-sizing: border-box;
  line-height: 1;
  flex-shrink: 0;
  min-width: 100px;
  white-space: nowrap;
}
.header-cta.btn-heritage {
  margin: 0 calc(var(--space-2) * 1.3);
  padding: calc(var(--space-2) + 2px) calc(var(--space-5) * 1.3) !important;
  transition: all var(--timing-fast) var(--ease-smooth);
  box-sizing: border-box;
}
.header-cta.btn-heritage:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 8px rgba(var(--color-accent-heritage) / 0.2);
}
.header-cta.btn-heritage:active {
  transform: translateY(0);
  box-shadow: 0 2px 4px rgba(var(--color-accent-heritage) / 0.2);
}
.header-mobile-menu {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  background-color: rgb(var(--color-background));
  border-bottom: 1px solid rgb(var(--color-border));
  box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
  max-height: 0;
  overflow: hidden;
  transition: max-height var(--timing-fast);
}
.header-mobile-menu[aria-hidden="false"],
.header-mobile-menu--open {
  max-height: calc(100vh - var(--space-16));
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
.header-mobile-nav {
  padding: var(--space-4) 0;
}
.header-mobile-nav-list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.header-mobile-nav-item {
  border-bottom: 1px solid rgba(var(--color-border) / 0.5);
}
.header-mobile-nav-item:last-child {
  border-bottom: none;
}
.header-mobile-nav-link {
  display: flex;
  align-items: center;
  width: 100%;
  min-height: var(--touch-target-min, 48px);
  padding: var(--space-3) var(--space-4);
  color: rgb(var(--color-foreground));
  text-decoration: none;
  transition: background-color var(--duration-fast);
}
.header-mobile-nav-link:hover,
.header-mobile-nav-link:focus-visible {
  background-color: rgba(var(--color-primary) / 0.05);
}
.header-mobile-nav-link[aria-current="page"] {
  color: rgb(var(--color-primary));
}
.header-mobile-nav-link--active {
  color: rgb(var(--color-accent-heritage)) !important;
  padding: calc(var(--space-3) + var(--space-1)) calc(var(--space-4) * 1.3);
  margin: var(--space-1) 0;
}
.header-mobile-dropdown {
  width: 100%;
}
.header-mobile-dropdown-trigger {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  min-height: var(--touch-target-min, 48px);
  padding: var(--space-3) var(--space-4);
  color: rgb(var(--color-foreground));
  text-align: left;
  cursor: pointer;
  background: none;
  border: none;
  list-style: none;
  transition: background-color var(--duration-fast);
}
.header-mobile-dropdown-trigger:hover,
.header-mobile-dropdown-trigger:focus-visible {
  background-color: rgba(var(--color-primary) / 0.05);
}
.header-mobile-dropdown-trigger::after {
  content: "▸";
  transition: transform var(--duration-fast);
}
.header-mobile-dropdown[open] .header-mobile-dropdown-trigger::after {
  transform: rotate(90deg);
}
.header-mobile-dropdown-menu {
  background-color: rgba(var(--color-muted) / 0.3);
  padding: var(--space-2) 0;
}
.header-mobile-dropdown-item {
  display: flex;
  align-items: center;
  width: 100%;
  min-height: var(--touch-target-min, 48px);
  padding: var(--space-2) var(--space-6);
  color: rgb(var(--color-muted-foreground));
  text-decoration: none;
  transition: all var(--duration-fast);
}
.header-mobile-dropdown-item:hover,
.header-mobile-dropdown-item:focus-visible {
  background-color: rgba(var(--color-primary) / 0.05);
  color: rgb(var(--color-foreground));
  padding-left: var(--space-7);
}
.header-mobile-dropdown-item[aria-current="page"] {
  color: rgb(var(--color-primary));
}
.header-mobile-dropdown-item--active {
  color: rgb(var(--color-accent-heritage)) !important;
  padding: calc(var(--space-2) + var(--space-1)) calc(var(--space-6) * 1.3);
  margin: var(--space-1) 0;
}
@media (max-width: 767px) {
  .header-container .layout-container {
    width: 100%;
    min-width: 100%;
    max-width: 100%;
    margin: 0;
  }
  .header-wrapper {
    grid-template-columns: 1fr auto;
  }
  .header-nav {
    display: block;
  }
  .header-nav-list {
    display: flex;
    flex-wrap: wrap;
    width: 100%;
    white-space: normal;
  }
  .header-nav-item {
    display: none;
  }
  .nav-logo-item {
    margin-right: 0;
  }
  .nav-button-item {
    display: none;
  }
  .header-actions {
    gap: 0;
  }
}
@media (min-width: 568px) {
  .nav-button-item {
    display: flex;
  }
  .header-actions {
    display: flex;
    gap: var(--space-3);
  }
}
@media (min-width: 768px) and (max-width: 1279px) {
  .header-nav-list {
    flex-wrap: nowrap;
  }
}
@media (min-width: 1024px) {
  .header-container .layout-container {
    width: 100% !important;
    min-width: 0;
    max-width: 100vw !important;
    margin: 0 auto;
    padding-left: var(--space-6);
    padding-right: var(--space-6);
  }
  .header-wrapper {
    display: flex;
    gap: var(--space-6);
    width: 100%;
    max-width: 1200px;
  }
  .header-nav-list {
    flex-wrap: nowrap;
    width: 100%;
    max-width: 100%;
  }
  .header-mobile-toggle {
    display: none;
  }
  .header-mobile-menu {
    display: none !important;
  }
  .header-nav {
    display: block;
  }
  .header-nav-item {
    display: flex;
  }
  .nav-button-item {
    display: flex;
  }
  .header-actions {
    display: none;
  }
  .header-nav-link,
  .header-dropdown-trigger,
  .header-dropdown-link {
    padding: var(--space-2) var(--space-3);
    font-size: 0.9rem;
  }
}
@media (min-width: 1280px) {
  .header-container .layout-container {
    width: 100% !important;
    min-width: 0;
    max-width: 100vw !important;
    margin: 0 auto;
    padding-left: var(--space-6);
    padding-right: var(--space-6);
  }
  .header-wrapper {
    display: flex;
    gap: var(--space-6);
    width: 100%;
    max-width: 1200px;
  }
  .header-logo-mobile {
    display: none;
  }
  .header-logo-desktop {
    display: block;
    height: 32px;
    max-width: 200px;
  }
  .header-nav {
    display: flex;
    justify-content: center;
    align-items: center;
    flex: 1;
    min-width: 0;
    max-width: 100%;
  }
  .header-nav-list {
    flex-wrap: nowrap;
    justify-content: center;
    width: 100%;
    max-width: 100%;
  }
  .header-nav-link,
  .header-dropdown-trigger,
  .header-dropdown-link {
    padding: var(--space-2) var(--space-3);
    font-size: inherit;
  }
}
@media (min-width: 1600px) {
  .header-wrapper {
    gap: var(--space-8);
    max-width: 1400px;
  }
  .header-nav-list {
    gap: var(--space-3);
  }
  .header-nav-link,
  .header-dropdown-trigger,
  .header-dropdown-link {
    padding: var(--space-2) var(--space-4);
  }
  .header-dropdown-menu--wide {
    min-width: 320px;
  }
}
.header-nav-list[data-wrapped="true"] {
  justify-content: center;
  align-items: flex-start;
}
.header-nav-list[data-wrapped="true"] .header-nav-item {
  margin-bottom: 0;
}
.header-wrapper:has(.header-nav-list[data-wrapped="true"]) .header-actions {
  align-self: flex-start;
  margin-top: var(--space-2);
}
@media (prefers-reduced-motion: reduce) {
  .header-mobile-menu,
  .header-dropdown-menu,
  .header-dropdown-icon,
  .header-mobile-dropdown-trigger::after,
  .header-cta.btn-heritage,
  .header-logo-link,
  .header-nav-link,
  .header-dropdown-trigger,
  .header-mobile-toggle,
  .header-mobile-nav-link,
  .header-dropdown-item,
  .header-mobile-dropdown-item {
    transition: none !important;
    animation: none !important;
    transform: none !important;
  }
  .header-cta.btn-heritage:hover {
    transform: none !important;
  }
  .header-dropdown--open .header-dropdown-icon,
  .header-mobile-dropdown[open] .header-mobile-dropdown-trigger::after {
    transform: none !important;
  }
}
@media (prefers-contrast: high) {
  .header-container {
    border-bottom-width: 2px;
  }
  .header-nav-link:focus-visible,
  .header-dropdown-trigger:focus-visible,
  .header-mobile-toggle:focus-visible {
    outline-width: 3px;
  }
}
@media print {
  .header-mobile-toggle,
  .header-mobile-menu,
  .header-dropdown-menu {
    display: none !important;
  }
  .header-nav {
    display: block !important;
  }
  .header-nav-list {
    display: block !important;
  }
  .header-dropdown-icon {
    display: none !important;
  }
}
.hero-section {
  --hero-section-min-height: 60vh;
  --hero-content-max-width: 56rem;
  --hero-content-gap: var(--space-6);
  --hero-content-padding: var(--space-8) 0;
  --hero-actions-gap: var(--space-4);
  --hero-actions-margin-top: var(--space-3);
  --hero-title-margin-bottom: var(--space-2);
  --hero-subtitle-margin-bottom: var(--space-2);
  --hero-description-margin-bottom: var(--space-2);
  --hero-button-heritage-padding: var(--space-3) var(--space-6);
  --hero-button-secondary-padding: var(--space-3) var(--space-6);
  --hero-button-min-height: 48px;
  --hero-button-gap: var(--space-2);
  --hero-icon-transition-duration: var(--timing-fast);
  --hero-hover-transform-y: calc(var(--space-0-5) * -1);
  --hero-hover-scale: 1.02;
  --hero-focus-outline-width: 3px;
  --hero-focus-outline-offset: 2px;
}
@container (min-width: 320px) {
  .hero-content {
    --hero-content-gap: var(--space-4);
  }
}
@container (min-width: 640px) {
  .hero-content {
    --hero-content-gap: var(--space-6);
  }
  .hero-actions {
    flex-direction: row;
    justify-content: center;
    align-items: center;
    margin: var(--hero-actions-margin-top) auto 0;
    text-align: center;
  }
}
@container (min-width: 768px) {
  .hero-content {
    --hero-content-gap: var(--space-8);
    --hero-content-padding: var(--space-12) 0;
  }
}
@container (min-width: 1024px) {
  .hero-content {
    --hero-content-gap: var(--space-12);
    --hero-content-padding: var(--space-16) 0;
  }
  .hero-actions {
    --hero-actions-gap: var(--space-8);
  }
}
.hero-section {
  min-height: var(--hero-section-min-height);
  display: flex;
  align-items: center;
  position: relative;
  text-align: center;
  overflow: hidden;
  container-type: inline-size;
  contain: layout style paint;
  will-change: transform;
}
@media (min-width: 768px) and (max-width: 1023px) {
  .hero-section {
    --hero-section-min-height: 70vh;
  }
}
@media (min-width: 1024px) and (max-width: 2559px) {
  .hero-section {
    --hero-section-min-height: 80vh;
  }
}
@media (min-width: 2560px) {
  .hero-section {
    --hero-section-min-height: 85vh;
    max-height: 100vh;
    transform: translate3d(0, 0, 0);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
  }
}
.hero-content {
  display: grid;
  gap: var(--hero-content-gap);
  justify-items: center;
  text-align: center;
  max-width: var(--hero-content-max-width);
  margin: 0 auto;
  width: 100%;
  padding: var(--hero-content-padding);
  contain: layout style;
}
@media (min-width: 768px) and (max-width: 1023px) {
  .hero-content {
    --hero-content-gap: var(--space-8);
    --hero-content-padding: var(--space-12) 0;
    --hero-content-max-width: 48rem;
  }
}
@media (min-width: 1024px) and (max-width: 2559px) {
  .hero-content {
    --hero-content-gap: var(--space-12);
    --hero-content-max-width: 64rem;
    --hero-content-padding: var(--space-16) 0;
  }
}
@media (min-width: 2560px) {
  .hero-content {
    --hero-content-gap: var(--space-16);
    --hero-content-max-width: 72rem;
    --hero-content-padding: var(--space-20) 0;
    backface-visibility: hidden;
  }
}
.hero-title {
  background: linear-gradient(135deg, 
    rgb(var(--color-foreground)), 
    rgb(var(--color-muted-foreground))
  );
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  position: relative;
  width: 100%;
  margin-bottom: var(--hero-title-margin-bottom);
  transform: translate3d(0, 0, 0);
  backface-visibility: hidden;
  will-change: auto;
}
@media (min-width: 768px) and (max-width: 1023px) {
  .hero-title {
    letter-spacing: -0.02em;
    --hero-title-margin-bottom: var(--space-3);
  }
}
@media (min-width: 1024px) and (max-width: 2559px) {
  .hero-title {
    letter-spacing: -0.03em;
    --hero-title-margin-bottom: var(--space-4);
  }
  .hero-title::after {
    content: '';
    position: absolute;
    bottom: calc(var(--space-3) * -1);
    left: 50%;
    transform: translateX(-50%);
    width: calc(var(--space-4) * 5);
    height: var(--space-0-5);
    background-color: rgb(var(--color-primary));
    border-radius: var(--radius-sm);
    opacity: 0.3;
    transition: opacity var(--timing-medium) var(--ease-smooth);
  }
}
@media (min-width: 2560px) {
  .hero-title {
    letter-spacing: -0.04em;
    --hero-title-margin-bottom: var(--space-6);
    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased;
  }
  .hero-title::after {
    width: calc(var(--space-4) * 6);
    height: var(--space-1);
    bottom: calc(var(--space-4) * -1);
    opacity: 0.4;
  }
}
.hero-subtitle {
  color: rgb(var(--color-primary));
  opacity: 0.9;
  max-width: 48rem;
  margin-bottom: var(--hero-subtitle-margin-bottom);
  transform: translate3d(0, 0, 0);
}
@media (min-width: 768px) and (max-width: 1023px) {
  .hero-subtitle {
    max-width: 42rem;
    --hero-subtitle-margin-bottom: var(--space-3);
  }
}
@media (min-width: 1024px) and (max-width: 2559px) {
  .hero-subtitle {
    max-width: 50rem;
    --hero-subtitle-margin-bottom: var(--space-4);
  }
}
@media (min-width: 2560px) {
  .hero-subtitle {
    max-width: 56rem;
    --hero-subtitle-margin-bottom: var(--space-6);
  }
}
.hero-description {
  max-width: 42rem;
  margin: 0 auto var(--hero-description-margin-bottom);
  padding: 0;
  line-height: 1.7;
  transform: translate3d(0, 0, 0);
}
@media (min-width: 768px) and (max-width: 1023px) {
  .hero-description {
    padding: 0;
    --hero-description-margin-bottom: var(--space-3);
    max-width: 40rem;
  }
}
@media (min-width: 1024px) and (max-width: 2559px) {
  .hero-description {
    max-width: 44rem;
    padding: 0;
    position: relative;
    border-bottom: var(--space-0-5) solid rgb(var(--color-primary) / 0.15);
    --hero-description-margin-bottom: var(--space-3);
  }
}
@media (min-width: 2560px) {
  .hero-description {
    max-width: 48rem;
    padding: 0;
    border-bottom: var(--space-1) solid rgb(var(--color-primary) / 0.2);
    --hero-description-margin-bottom: var(--space-4);
    line-height: 1.8;
  }
}
.hero-actions {
  display: flex;
  flex-direction: column;
  gap: var(--hero-actions-gap);
  align-items: center;
  justify-content: center;
  margin: var(--hero-actions-margin-top) auto 0;
  width: 100%;
  max-width: 100%;
  padding: calc(var(--space-2) * 1.3) 0;
  text-align: center;
  transform: translate3d(0, 0, 0);
}
@media (min-width: 768px) and (max-width: 1023px) {
  .hero-actions {
    flex-direction: row;
    justify-content: center;
    align-items: center;
    margin: var(--space-3) auto 0;
    --hero-actions-gap: var(--space-6);
    --hero-actions-margin-top: var(--space-3);
    text-align: center;
  }
  .hero-button-heritage,
  .hero-button-secondary {
    width: auto;
    min-width: 180px;
    flex: 0 1 auto;
    margin: 0 !important;
    white-space: nowrap;
  }
}
@media (min-width: 1024px) and (max-width: 2559px) {
  .hero-actions {
    flex-direction: row;
    justify-content: center;
    align-items: center;
    margin: var(--space-4) auto 0;
    --hero-actions-gap: var(--space-8);
    --hero-actions-margin-top: var(--space-4);
    text-align: center;
  }
  .hero-button-heritage,
  .hero-button-secondary {
    width: auto;
    min-width: 200px;
    flex: 0 1 auto;
    margin: 0 !important;
    white-space: nowrap;
  }
}
@media (min-width: 2560px) {
  .hero-actions {
    flex-direction: row;
    justify-content: center;
    align-items: center;
    margin: var(--space-6) auto 0;
    --hero-actions-gap: var(--space-12);
    --hero-actions-margin-top: var(--space-6);
    text-align: center;
  }
  .hero-button-heritage,
  .hero-button-secondary {
    width: auto;
    min-width: 220px;
    flex: 0 1 auto;
    margin: 0 !important;
    white-space: nowrap;
  }
}
.hero-button-heritage {
  padding: var(--hero-button-heritage-padding) !important;
  height: var(--hero-button-min-height);
  display: inline-flex;
  align-items: center;
  gap: var(--hero-button-gap);
  position: relative;
  overflow: hidden;
  width: auto;
  flex: 0 0 auto;
  margin: 0 !important;
  border: none;
  outline: none;
  font-weight: 600;
  letter-spacing: 0.025em;
  line-height: 1.2;
  border-radius: var(--radius-md);
  transition: transform var(--hero-icon-transition-duration) cubic-bezier(0.4, 0, 0.2, 1),
    box-shadow var(--hero-icon-transition-duration) cubic-bezier(0.4, 0, 0.2, 1),
    background-color var(--hero-icon-transition-duration) var(--ease-smooth);
  transform: translate3d(0, 0, 0);
  backface-visibility: hidden;
  will-change: transform, box-shadow;
}
@media (min-width: 768px) and (max-width: 1023px) {
  .hero-button-heritage {
    --hero-button-min-height: 44px;
    --hero-button-heritage-padding: var(--space-3) var(--space-6);
  }
}
@media (min-width: 1024px) and (max-width: 2559px) {
  .hero-button-heritage {
    --hero-button-min-height: 48px;
    --hero-button-heritage-padding: var(--space-3) var(--space-7);
    letter-spacing: 0.03em;
  }
}
@media (min-width: 2560px) {
  .hero-button-heritage {
    --hero-button-min-height: 52px;
    --hero-button-heritage-padding: var(--space-4) var(--space-8);
    --hero-button-gap: var(--space-3);
    -webkit-font-smoothing: antialiased;
  }
}
.hero-button-heritage:hover {
  transform: translateY(var(--hero-hover-transform-y)) scale(var(--hero-hover-scale)) translate3d(0, 0, 0);
  box-shadow: 0 var(--space-3) var(--space-6) rgb(var(--color-accent-heritage) / 0.25),
    0 var(--space-1) var(--space-2) rgb(var(--color-accent-heritage) / 0.15);
  transition-delay: 0s, 0.05s;
}
.hero-button-secondary {
  padding: var(--hero-button-secondary-padding) !important;
  height: var(--hero-button-min-height);
  line-height: 1.2;
  display: inline-flex;
  align-items: center;
  gap: var(--hero-button-gap);
  overflow: hidden;
  width: auto;
  flex: 0 0 auto;
  margin: 0 !important;
  border: none;
  outline: none;
  border-radius: var(--radius-md);
  transition: transform var(--hero-icon-transition-duration) cubic-bezier(0.4, 0, 0.2, 1),
    box-shadow var(--hero-icon-transition-duration) cubic-bezier(0.4, 0, 0.2, 1),
    background-color var(--hero-icon-transition-duration) var(--ease-smooth);
  transform: translate3d(0, 0, 0);
  backface-visibility: hidden;
  will-change: transform, box-shadow;
}
@media (min-width: 768px) and (max-width: 1023px) {
  .hero-button-secondary {
    --hero-button-min-height: 44px;
    --hero-button-secondary-padding: var(--space-3) var(--space-6);
  }
}
@media (min-width: 1024px) and (max-width: 2559px) {
  .hero-button-secondary {
    --hero-button-min-height: 48px;
    --hero-button-secondary-padding: var(--space-3) var(--space-7);
  }
}
@media (min-width: 2560px) {
  .hero-button-secondary {
    --hero-button-min-height: 52px;
    --hero-button-secondary-padding: var(--space-4) var(--space-8);
    --hero-button-gap: var(--space-3);
  }
}
.hero-button-secondary:hover {
  transform: translateY(var(--hero-hover-transform-y)) scale(1.01) translate3d(0, 0, 0);
  box-shadow: 0 var(--space-2) var(--space-4) rgb(var(--color-primary) / 0.15),
    0 var(--space-0-5) var(--space-1) rgb(var(--color-primary) / 0.1);
  transition-delay: 0s, 0.03s;
}
.hero-button-icon {
  transition: transform var(--hero-icon-transition-duration) cubic-bezier(0.34, 1.56, 0.64, 1),
    opacity var(--hero-icon-transition-duration) var(--ease-smooth);
  transform: translate3d(0, 0, 0);
  backface-visibility: hidden;
}
.hero-button-icon-play {
  transition: transform var(--hero-icon-transition-duration) cubic-bezier(0.34, 1.56, 0.64, 1),
    opacity var(--hero-icon-transition-duration) var(--ease-smooth);
  transform: translate3d(0, 0, 0);
  backface-visibility: hidden;
}
.hero-button-heritage:hover .hero-button-icon {
  transform: translateX(var(--space-1)) translate3d(0, 0, 0);
  transition-delay: 0.05s;
}
.hero-button-secondary:hover .hero-button-icon-play {
  transform: scale(1.15) translate3d(0, 0, 0);
  transition-delay: 0.03s;
}
.hero-button-heritage .icon-container-sm,
.hero-button-secondary .icon-container-sm {
  flex-shrink: 0;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  margin: 0;
  padding: 0;
}
.hero-button-heritage .icon-container-sm {
  margin: 0;
}
.hero-button-secondary .icon-container-sm {
  margin: 0;
  background-color: rgb(var(--color-primary) / 0.25);
  transition: background-color var(--hero-icon-transition-duration) var(--ease-smooth);
}
.hero-button-secondary:hover .icon-container-sm {
  background-color: rgb(var(--color-primary) / 0.35);
}
.hero-button-secondary .icon-container-sm .icon-sm {
  color: rgb(var(--color-primary-600)) !important;
  stroke-width: 2.5;
}
@media (min-width: 2560px) {
  .hero-button-heritage .icon-container-sm {
    margin-left: var(--space-2);
  }
  .hero-button-secondary .icon-container-sm {
    margin-right: var(--space-2);
  }
}
@media (max-width: 767px) {
  .hero-section {
    --hero-section-min-height: 50vh;
  }
  .hero-content {
    --hero-content-gap: var(--space-4);
    --hero-content-padding: var(--space-6) 0;
  }
  .hero-actions {
    flex-direction: column;
    width: 100%;
    max-width: 100%;
    --hero-actions-gap: var(--space-3);
    align-items: center;
    justify-content: center;
    margin: var(--hero-actions-margin-top) auto 0;
    text-align: center;
  }
  .hero-button-heritage,
  .hero-button-secondary {
    width: auto;
    min-width: 200px;
    max-width: 280px;
    height: 48px;
    justify-content: center;
    align-self: center;
    white-space: normal;
    text-align: center;
    contain: layout style;
    border: none;
    outline: none;
  }
  .hero-button-heritage .icon-container-sm,
  .hero-button-secondary .icon-container-sm {
    margin: 0 var(--space-1);
  }
}
.hero-button-heritage:focus-visible,
.hero-button-secondary:focus-visible {
  outline: none;
  border: none;
  box-shadow: 0 0 0 var(--hero-focus-outline-width) rgb(var(--color-primary) / 0.3),
    0 0 0 calc(var(--hero-focus-outline-width) + 1px) rgb(var(--color-primary)),
    0 var(--space-2) var(--space-4) rgb(var(--color-primary) / 0.2);
  position: relative;
  z-index: 10;
  transform: scale(1.02) translate3d(0, 0, 0);
  transition: box-shadow var(--timing-fast) var(--ease-smooth),
    transform var(--timing-fast) var(--ease-smooth);
}
.hero-button-heritage:active,
.hero-button-secondary:active {
  transform: translateY(1px) scale(0.98) translate3d(0, 0, 0);
  transition-duration: calc(var(--timing-fast) * 0.5);
  border: none;
  outline: none;
}
@media (prefers-contrast: high) {
  .hero-title {
    background: none;
    -webkit-text-fill-color: unset;
    color: rgb(var(--color-foreground));
    font-weight: 700;
  }
  .hero-title::after {
    opacity: 1;
    background-color: rgb(var(--color-foreground));
    height: var(--space-1);
  }
  .hero-button-secondary .icon-container-sm {
    background-color: rgb(var(--color-foreground) / 0.2);
    border: 1px solid rgb(var(--color-foreground));
  }
  .hero-button-heritage:focus-visible,
  .hero-button-secondary:focus-visible {
    outline: 4px solid currentColor;
    outline-offset: 4px;
    border: none;
  }
}
@media (prefers-reduced-motion: reduce) {
  .hero-title,
  .hero-button-icon,
  .hero-button-heritage,
  .hero-button-secondary,
  .icon-container-sm {
    transition: none !important;
    transform: translate3d(0, 0, 0) !important;
    will-change: auto !important;
    animation: none !important;
  }
  .hero-title {
    background: none;
    -webkit-text-fill-color: unset;
    color: rgb(var(--color-foreground));
  }
  .hero-button-heritage:hover,
  .hero-button-secondary:hover,
  .hero-button-heritage:focus-visible,
  .hero-button-secondary:focus-visible {
    transform: translate3d(0, 0, 0) !important;
    box-shadow: 0 0 0 2px rgb(var(--color-primary)) !important;
    border: none !important;
  }
  .hero-button-heritage:hover .hero-button-icon,
  .hero-button-secondary:hover .hero-button-icon-play {
    transform: translate3d(0, 0, 0) !important;
  }
}
.hero-trust-indicators {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  justify-content: center;
  align-items: center;
  margin-top: 0;
  padding: 0;
}
@media (min-width: 768px) {
  .hero-trust-indicators {
    gap: var(--space-4);
    margin-top: 0;
  }
}
@media (min-width: 1024px) {
  .hero-trust-indicators {
    gap: var(--space-6);
    margin-top: 0;
  }
}
.hero-trust-indicator {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  color: rgb(var(--color-muted-foreground));
  font-size: var(--font-size-sm);
  line-height: 1.5;
  white-space: nowrap;
  transition: opacity var(--timing-fast) var(--ease-smooth);
}
.hero-trust-indicator:hover {
  opacity: 0.8;
}
@media (min-width: 768px) {
  .hero-trust-indicator {
    font-size: var(--font-size-base);
  }
}
.hero-trust-indicator-icon {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
  background-color: rgb(var(--color-muted-foreground));
  animation: trust-indicator-pulse 3s ease-in-out infinite;
  animation-delay: calc(var(--stagger-index, 0) * 100ms);
}
@keyframes trust-indicator-pulse {
  0%, 100% {
    opacity: 0.8;
    transform: scale(1);
  }
  50% {
    opacity: 1;
    transform: scale(1.1);
  }
}
.hero-trust-indicator-text {
  letter-spacing: 0.01em;
}
@media (prefers-contrast: high) {
  .hero-trust-indicator {
    font-weight: 500;
  }
  .hero-trust-indicator-icon {
    border: 1px solid currentColor;
  }
}
@media (prefers-reduced-motion: reduce) {
  .hero-trust-indicator-icon {
    animation: none;
  }
  .hero-trust-indicator {
    transition: none;
  }
}
@media print {
  .hero-section {
    min-height: auto;
    padding: var(--space-8) var(--space-4);
    page-break-inside: avoid;
    border-bottom: 2px solid rgb(var(--color-muted-foreground));
    background: white !important;
    color: black !important;
  }
  .hero-content {
    padding: var(--space-4) 0;
    gap: var(--space-3);
  }
  .hero-actions {
    display: none;
  }
  .hero-title {
    background: none !important;
    -webkit-text-fill-color: unset !important;
    color: black !important;
    font-weight: 700;
    page-break-after: avoid;
  }
  .hero-title::after {
    display: none;
  }
  .hero-subtitle {
    color: rgb(var(--color-muted-foreground)) !important;
    font-weight: 500;
  }
  .hero-description {
    color: black !important;
    border-bottom: none !important;
    max-width: none;
    margin-bottom: var(--space-4);
    page-break-inside: avoid;
  }
  .icon-container-sm,
  .hero-button-icon,
  .hero-button-icon-play {
    display: none !important;
  }
  .hero-content::after {
    content: "—";
    display: block;
    text-align: center;
    font-size: 1.5rem;
    margin: var(--space-4) 0;
    color: rgb(var(--color-muted-foreground));
  }
}
@media (min-resolution: 192dpi),
  (min-resolution: 2dppx) {
  .hero-title {
    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
  }
  .hero-button-heritage,
  .hero-button-secondary {
    -webkit-font-smoothing: antialiased;
    border-radius: calc(var(--radius-md) + 0.5px);
    border: none;
  }
}
.hero-section.critical-load {
  contain: strict;
  content-visibility: auto;
  .hero-content {
    contain-intrinsic-size: 0 400px;
  }
  .hero-title {
    contain: none;
    content-visibility: visible;
  }
}
@media (max-width: 0) {
  .hero-section::before {
    content: "Hero component loaded - Performance monitoring active - Section Pattern Compliant - Button Styling Fixed - Icon Contrast Enhanced v4.1";
    position: absolute;
    top: -1000px;
    left: -1000px;
    opacity: 0;
    pointer-events: none;
  }
}
.icon-xxs {
  width: 0.75rem;
  height: 0.75rem;
  flex-shrink: 0;
  max-width: 100%;
  max-height: 100%;
}
.icon-xs {
  width: 1rem;
  height: 1rem;
  flex-shrink: 0;
  max-width: 100%;
  max-height: 100%;
}
.icon-sm {
  width: 1.25rem;
  height: 1.25rem;
  flex-shrink: 0;
  max-width: 100%;
  max-height: 100%;
}
.icon-base {
  width: 1.5rem;
  height: 1.5rem;
  flex-shrink: 0;
  max-width: 100%;
  max-height: 100%;
}
.icon-md {
  width: 2rem;
  height: 2rem;
  flex-shrink: 0;
  max-width: 100%;
  max-height: 100%;
}
.icon-lg {
  width: 2.5rem;
  height: 2.5rem;
  flex-shrink: 0;
  max-width: 100%;
  max-height: 100%;
}
.icon-xl {
  width: 3rem;
  height: 3rem;
  flex-shrink: 0;
  max-width: 100%;
  max-height: 100%;
}
.icon-default {
  color: rgb(var(--color-muted-foreground));
  stroke-width: 2;
}
.icon-primary {
  color: rgb(var(--color-primary-600));
  stroke-width: 2;
}
.icon-heritage {
  color: rgb(var(--color-accent-heritage));
  stroke-width: 2.5;
}
.icon-success {
  color: rgb(var(--color-success));
  stroke-width: 2;
}
.icon-warning {
  color: rgb(var(--color-warning));
  stroke-width: 2;
}
.icon-white {
  color: white;
  stroke-width: 2;
}
.icon-container-xs {
  width: 2rem;
  height: 2rem;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 0.375rem;
  flex-shrink: 0;
  overflow: hidden;
  position: relative;
  contain: layout style paint;
}
.icon-container-sm {
  width: 2.5rem;
  height: 2.5rem;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 0.5rem;
  flex-shrink: 0;
  overflow: hidden;
  position: relative;
  contain: layout style paint;
}
.icon-container-base {
  width: 3rem;
  height: 3rem;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 0.5rem;
  flex-shrink: 0;
  overflow: hidden;
  position: relative;
  contain: layout style paint;
}
.icon-container-md {
  width: 3.5rem;
  height: 3.5rem;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 0.75rem;
  flex-shrink: 0;
  overflow: hidden;
  position: relative;
  contain: layout style paint;
}
.icon-container-lg {
  width: 4rem;
  height: 4rem;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 0.75rem;
  flex-shrink: 0;
  overflow: hidden;
  position: relative;
  contain: layout style paint;
}
.icon-container-xl {
  width: 5rem;
  height: 5rem;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 1rem;
  flex-shrink: 0;
  overflow: hidden;
  position: relative;
  contain: layout style paint;
}
@container (max-width: 24px) {
  .icon-container-xs > svg,
  .icon-container-xs > img,
  .icon-container-xs > span {
    max-width: calc(100% - 0.25rem);
    max-height: calc(100% - 0.25rem);
  }
}
@container (max-width: 32px) {
  .icon-container-sm > svg,
  .icon-container-sm > img,
  .icon-container-sm > span {
    max-width: calc(100% - 0.25rem);
    max-height: calc(100% - 0.25rem);
  }
}
@container (min-width: 80px) {
  .icon-container-xl > svg,
  .icon-container-xl > img,
  .icon-container-xl > span {
    max-width: calc(100% - 1.5rem);
    max-height: calc(100% - 1.5rem);
  }
}
@media (max-width: 767px) {
  .icon-base,
  .icon-sm,
  .icon-lg {
    stroke-width: 2.5;
  }
  .icon-heritage {
    stroke-width: 3;
    filter: drop-shadow(0 1px 2px rgba(0,0,0,0.1));
  }
  .icon-touch {
    position: relative;
    min-width: 48px;
    min-height: 48px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
  }
  .icon-container-xs,
  .icon-container-sm,
  .icon-container-base {
    min-width: 48px;
    min-height: 48px;
  }
  .icon-interactive {
    min-width: 48px;
    min-height: 48px;
    position: relative;
  }
  .icon-interactive::before {
    content: '';
    position: absolute;
    top: -8px;
    right: -8px;
    bottom: -8px;
    left: -8px;
  }
}
@media (prefers-contrast: high) {
  .icon-default,
  .icon-primary {
    color: #000000;
    stroke-width: 3;
  }
  .icon-heritage {
    color: #cc0000;
    stroke-width: 3;
  }
  .icon-success {
    color: #006600;
    stroke-width: 3;
  }
  .icon-warning {
    color: #cc6600;
    stroke-width: 3;
  }
}
@media (prefers-reduced-motion: reduce) {
  .icon-pulse,
  .icon-spin,
  .icon-interactive {
    animation: none !important;
    transition: none !important;
  }
}
.icon-xs,
.icon-sm,
.icon-base,
.icon-md,
.icon-lg,
.icon-xl {
  transform: translateZ(0);
  backface-visibility: hidden;
}
.icon-xs img,
.icon-sm img,
.icon-base img,
.icon-md img,
.icon-lg img,
.icon-xl img {
  -o-object-fit: contain;
     object-fit: contain;
  image-rendering: auto;
  image-rendering: crisp-edges;
  image-rendering: -webkit-optimize-contrast;
}
.icon-container-xs > svg,
.icon-container-xs > img,
.icon-container-xs > span {
  max-width: calc(100% - 0.5rem);
  max-height: calc(100% - 0.5rem);
  width: auto;
  height: auto;
  position: static;
  margin: 0;
  padding: 0;
  -o-object-fit: contain;
     object-fit: contain;
  flex-shrink: 0;
}
.icon-container-sm > svg,
.icon-container-sm > img,
.icon-container-sm > span {
  max-width: calc(100% - 0.5rem);
  max-height: calc(100% - 0.5rem);
  width: auto;
  height: auto;
  position: static;
  margin: 0;
  padding: 0;
  -o-object-fit: contain;
     object-fit: contain;
  flex-shrink: 0;
}
.icon-container-base > svg,
.icon-container-base > img,
.icon-container-base > span {
  max-width: calc(100% - 0.75rem);
  max-height: calc(100% - 0.75rem);
  width: auto;
  height: auto;
  position: static;
  margin: 0;
  padding: 0;
  -o-object-fit: contain;
     object-fit: contain;
  flex-shrink: 0;
}
.icon-container-md > svg,
.icon-container-md > img,
.icon-container-md > span {
  max-width: calc(100% - 0.75rem);
  max-height: calc(100% - 0.75rem);
  width: auto;
  height: auto;
  position: static;
  margin: 0;
  padding: 0;
  -o-object-fit: contain;
     object-fit: contain;
  flex-shrink: 0;
}
.icon-container-lg > svg,
.icon-container-lg > img,
.icon-container-lg > span {
  max-width: calc(100% - 1rem);
  max-height: calc(100% - 1rem);
  width: auto;
  height: auto;
  position: static;
  margin: 0;
  padding: 0;
  -o-object-fit: contain;
     object-fit: contain;
  flex-shrink: 0;
}
.icon-container-xl > svg,
.icon-container-xl > img,
.icon-container-xl > span {
  max-width: calc(100% - 1rem);
  max-height: calc(100% - 1rem);
  width: auto;
  height: auto;
  position: static;
  margin: 0;
  padding: 0;
  -o-object-fit: contain;
     object-fit: contain;
  flex-shrink: 0;
}
.icon-pulse {
  animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}
.icon-spin {
  animation: spin 1s linear infinite;
}
.icon-interactive {
  transition: all var(--timing-fast) var(--ease-smooth);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  position: relative;
}
.icon-interactive:hover {
  transform: translateY(-2px) scale(1.05);
}
.icon-interactive:active {
  transform: translateY(0) scale(0.98);
}
.icon-interactive:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(var(--color-focus) / 0.5);
  border-radius: var(--radius-sm);
  z-index: 1;
}
button.icon-interactive {
  background: transparent;
  border: 0;
  padding: 0;
  font: inherit;
  color: inherit;
}
a.icon-interactive {
  text-decoration: none;
  color: inherit;
}
@keyframes pulse {
  0%, 100% {
    opacity: 1;
  }
  50% {
    opacity: 0.5;
  }
}
@keyframes spin {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}
.linkedin-post {
  position: relative;
  width: 100%;
  margin-inline: auto;
}
.linkedin-post-inner {
  width: 100%;
}
.linkedin-post-header {
  margin-bottom: var(--spacing-lg);
}
.linkedin-post-title {
  margin-bottom: var(--spacing-sm);
}
.linkedin-post-description {
  margin-bottom: var(--spacing-md);
}
.linkedin-post-embed {
  position: relative;
  width: 100%;
  margin-bottom: var(--spacing-lg);
  overflow-x: hidden;
}
.linkedin-embed-container {
  width: 100%;
  max-width: 500px;
  margin: 0 auto;
  overflow-x: hidden;
}
.linkedin-post-cta {
  display: flex;
  margin-top: var(--spacing-lg);
}
.linkedin-post-fallback {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-height: 300px;
  padding: var(--spacing-xl);
  gap: var(--spacing-md);
  text-align: center;
}
.linkedin-post-loading {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-height: 300px;
  gap: var(--spacing-sm);
}
.linkedin-post--sm {
  max-width: 400px;
}
.linkedin-post--base {
  max-width: 600px;
}
.linkedin-post--lg {
  max-width: 800px;
}
.linkedin-post--full {
  max-width: 100%;
}
.linkedin-post--left .linkedin-post-header {
  text-align: left;
}
.linkedin-post--left .linkedin-post-cta {
  justify-content: flex-start;
}
.linkedin-post--center .linkedin-post-header {
  text-align: center;
}
.linkedin-post--center .linkedin-post-cta {
  justify-content: center;
}
.linkedin-post--right .linkedin-post-header {
  text-align: right;
}
.linkedin-post--right .linkedin-post-cta {
  justify-content: flex-end;
}
.linkedin-post-title {
  color: var(--color-text);
  font-weight: 600;
}
.linkedin-post-description {
  color: var(--color-text-secondary);
  opacity: 0.9;
}
.linkedin-post-embed {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  overflow: hidden;
}
.linkedin-post-fallback {
  background: var(--color-surface-muted);
  border: 2px dashed var(--color-border);
  border-radius: var(--radius-lg);
}
.linkedin-post-fallback-link {
  display: inline-flex;
  align-items: center;
  gap: var(--spacing-xs);
  color: var(--color-primary);
  font-weight: 500;
  text-decoration: none;
  transition: color var(--transition-base);
}
.linkedin-post-fallback-link:hover {
  color: var(--color-primary-hover);
  text-decoration: underline;
}
.linkedin-post-error-message {
  color: var(--color-error);
  background: var(--color-error-bg);
  padding: var(--spacing-md);
  border-radius: var(--radius-md);
  font-size: var(--text-sm);
}
.linkedin-post-loading .spinner-border {
  width: 2rem;
  height: 2rem;
  border: 3px solid var(--color-border);
  border-top-color: var(--color-primary);
  border-radius: 50%;
  animation: spin 1s linear infinite;
}
.linkedin-post-loading .description {
  color: var(--color-text-secondary);
  font-size: var(--text-sm);
}
.linkedin-embed {
  width: 100% !important;
  max-width: 500px !important;
  overflow: hidden !important;
}
.linkedin-embed iframe {
  width: 100% !important;
  max-width: 500px !important;
  min-height: 600px;
  border: none !important;
  overflow: hidden !important;
}
.linkedin-post--loading .linkedin-post-embed {
  display: flex;
  align-items: center;
  justify-content: center;
}
.linkedin-post--error .linkedin-post-embed {
  background: var(--color-error-bg);
  border-color: var(--color-error);
}
.linkedin-post--mobile {
  max-width: 100%;
  padding-inline: var(--spacing-md);
}
.linkedin-post--mobile .linkedin-post-embed {
  min-height: 200px;
}
.linkedin-post .pwa-scroll-fade {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity var(--animation-duration-base) var(--animation-ease-out),
    transform var(--animation-duration-base) var(--animation-ease-out);
  transition-delay: calc(var(--stagger-index, 0) * var(--animation-stagger-delay));
}
.linkedin-post .pwa-scroll-fade.in-view {
  opacity: 1;
  transform: translateY(0);
}
@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}
@media (max-width: 768px) {
  .linkedin-post--lg {
    max-width: 100%;
    padding-inline: var(--spacing-md);
  }
  .linkedin-post-embed {
    min-height: 250px;
  }
  .linkedin-post-fallback {
    padding: var(--spacing-lg);
  }
}
@media (max-width: 480px) {
  .linkedin-post--sm,
  .linkedin-post--base {
    max-width: 100%;
    padding-inline: var(--spacing-md);
  }
  .linkedin-post-header {
    margin-bottom: var(--spacing-md);
  }
  .linkedin-post-embed {
    min-height: 200px;
    margin-bottom: var(--spacing-md);
  }
  .linkedin-post-fallback {
    padding: var(--spacing-md);
    min-height: 200px;
  }
  .linkedin-post-cta {
    margin-top: var(--spacing-md);
  }
  .linkedin-post--left .linkedin-post-header,
  .linkedin-post--right .linkedin-post-header {
    text-align: center;
  }
  .linkedin-post--left .linkedin-post-cta,
  .linkedin-post--right .linkedin-post-cta {
    justify-content: center;
  }
}
.linkedin-post-fallback-link:focus-visible {
  outline: 2px solid var(--color-primary);
  outline-offset: 2px;
  border-radius: var(--radius-sm);
}
@media (prefers-reduced-motion: reduce) {
  .linkedin-post .pwa-scroll-fade {
    transition: none;
    animation: none;
  }
  .linkedin-post-loading .spinner-border {
    animation-duration: 2s;
  }
}
@media (prefers-contrast: high) {
  .linkedin-post-embed {
    border-width: 2px;
  }
  .linkedin-post-fallback {
    border-width: 3px;
  }
  .linkedin-post-error-message {
    border: 2px solid var(--color-error);
  }
}
.list-card-header {
  margin-bottom: var(--space-8);
  text-align: center;
}
.list-card-header > * + * {
  margin-top: var(--space-4);
}
.list-card {
  position: relative;
  background: rgb(var(--color-card));
  border: 0;
  border-radius: var(--radius-md);
  padding: var(--space-6);
  box-shadow: var(--shadow-card);
  transition: all var(--timing-fast) var(--ease-smooth);
  display: flex;
  align-items: flex-start;
  gap: var(--space-4);
  min-height: 48px;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transform: translateZ(0);
  will-change: transform;
}
.list-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-card-hover);
}
.list-card:active {
  transform: scale(0.98);
  box-shadow: var(--shadow-card-active);
}
.list-card:not(:hover) {
  will-change: auto;
}
.list-card.list-item-highlighted {
  box-shadow: inset 4px 0 0 rgb(var(--color-accent-heritage)),
    var(--shadow-card);
  margin-top: calc(var(--space-2) * 1.3);
  margin-bottom: calc(var(--space-2) * 1.3);
  background: rgba(var(--color-accent-heritage) / 0.02);
}
.list-card.list-item-highlighted:hover {
  background: rgba(var(--color-accent-heritage) / 0.05);
  transform: translateY(-2px);
  box-shadow: inset 4px 0 0 rgb(var(--color-accent-heritage)),
    var(--shadow-card-hover);
}
.list-item-icon {
  flex-shrink: 0;
  transition: all var(--timing-fast) var(--ease-smooth);
}
.comparison-list-card .list-item-icon {
  opacity: 0.9;
}
.comparison-list-card:hover .list-item-icon {
  opacity: 1;
}
.list-item-content {
  flex: 1;
  min-width: 0;
}
.list-item-content > * + * {
  margin-top: var(--space-2);
}
.list-item-content .title-card,
.list-item-content .description {
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-box-orient: vertical;
}
.list-item-content .title-card {
  -webkit-line-clamp: 2;
}
.list-item-content .description {
  -webkit-line-clamp: 3;
}
@media (max-width: 767px) {
  .list-card-header {
    margin-bottom: var(--space-6);
    padding: 0 var(--space-4);
  }
  .list-card {
    padding: var(--space-4);
    box-shadow: var(--shadow-card);
  }
  .list-card:hover {
    transform: translateY(-1px);
    box-shadow: var(--shadow-card-hover);
  }
  @media (max-width: 375px) {
    .list-card {
      flex-direction: column;
      text-align: center;
    }
    .list-item-icon {
      margin: 0 auto;
    }
  }
  .list-card.list-item-highlighted {
    margin: calc(var(--space-3) * 1.3) 0;
    box-shadow: inset 3px 0 0 rgb(var(--color-accent-heritage)),
      var(--shadow-card);
  }
}
@media (min-width: 768px) and (max-width: 1279px) {
  .list-card {
    padding: var(--space-5);
  }
}
@media (min-width: 1280px) {
  .list-card-header {
    margin-bottom: var(--space-10);
  }
  .list-card {
    padding: var(--space-8);
  }
  .list-card.list-item-highlighted {
    margin: calc(var(--space-6) * 1.3) 0;
  }
}
.list-card:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(var(--color-focus) / 0.5);
  position: relative;
  z-index: 1;
}
@media (prefers-contrast: high) {
  .list-card {
    outline: 2px solid currentColor;
  }
  .list-card.list-item-highlighted {
    outline: 2px solid currentColor;
    box-shadow: inset 6px 0 0 currentColor,
      var(--shadow-card);
  }
  .list-card:focus-visible {
    outline: 3px solid currentColor;
    outline-offset: 2px;
  }
}
@media (prefers-reduced-motion: reduce) {
  .list-card {
    transition: none;
  }
  .list-card:hover {
    transform: none;
  }
  .list-card:active {
    transform: none;
  }
}
@media print {
  .list-card {
    box-shadow: none;
    outline: 1px solid #000;
    page-break-inside: avoid;
  }
  .list-card.list-item-highlighted {
    border-left-color: #000;
    background: none;
  }
}
.comparison-column {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  align-items: stretch;
  margin-top: 0;
  padding-top: 0;
}
.comparison-column > .title-card {
  text-align: center;
  margin-bottom: var(--space-6);
  padding-bottom: var(--space-4);
  box-shadow: 0 1px 0 0 rgba(var(--color-primary) / 0.1);
  flex-shrink: 0;
  font-size: clamp(1.25rem, 2vw + 0.5rem, 1.5rem);
  font-weight: 600;
  line-height: 1.3;
  color: rgb(var(--color-foreground));
  min-height: 1.5rem;
  padding-top: 0;
}
.comparison-column-primary > .title-card {
  color: rgb(var(--color-accent-heritage));
  box-shadow: 0 1px 0 0 rgba(var(--color-accent-heritage) / 0.3);
}
.comparison-list-card.list-card {
  cursor: default;
  padding: var(--space-6);
  margin: 0;
  border: 0;
  box-shadow: var(--shadow-card);
  transition: all var(--timing-fast) var(--ease-smooth);
}
.comparison-list-card.list-card:hover {
  transform: none !important;
  box-shadow: var(--shadow-card-hover);
}
.comparison-list-card.comparison-list-card-primary {
  background: rgba(var(--color-accent-heritage) / 0.02);
  box-shadow: inset 4px 0 0 rgb(var(--color-accent-heritage)),
    var(--shadow-card);
}
.comparison-list-card.comparison-list-card-primary:hover {
  background: rgba(var(--color-accent-heritage) / 0.04);
  box-shadow: inset 4px 0 0 rgb(var(--color-accent-heritage)),
    var(--shadow-card-hover);
  transform: none !important;
}
.comparison-list-card.list-card .list-item-content {
  text-align: left;
}
.comparison-list-card.list-card .list-item-content .title-card {
  font-size: 1rem;
  font-weight: 600;
  line-height: 1.4;
  margin-bottom: var(--space-2);
}
.comparison-list-card.list-card .list-item-content .description {
  font-size: 0.875rem;
  font-weight: 400;
  line-height: 1.5;
  color: rgb(var(--color-muted-foreground));
}
.layout-stack-sm {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}
.section-body.layout-grid-2 {
  align-items: start;
}
@media (max-width: 767px) {
  .layout-grid-2,
  .section-body.layout-grid-2 {
    grid-template-columns: 1fr;
    gap: var(--space-6);
  }
  .comparison-column > .title-card {
    margin-bottom: var(--space-4);
    padding-bottom: var(--space-3);
    font-size: 1.25rem;
  }
  .layout-stack-sm {
    gap: var(--space-3);
  }
  .comparison-list-card.list-card {
    padding: var(--space-4);
  }
  .comparison-column + .comparison-column {
    margin-top: var(--space-8);
  }
  .comparison-list-card.comparison-list-card-primary {
    box-shadow: inset 3px 0 0 rgb(var(--color-accent-heritage)),
      var(--shadow-card);
  }
}
@media (min-width: 768px) and (max-width: 1023px) {
  .layout-grid-2 {
    gap: var(--space-6);
  }
}
@media (min-width: 1280px) {
  .layout-grid-2 {
    gap: var(--space-10);
  }
  .comparison-column > .title-card {
    margin-bottom: var(--space-6);
    padding-bottom: var(--space-6);
  }
}
.metric-item {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  text-align: center;
  padding: var(--space-6);
  min-height: calc(var(--space-4) * 7.5);
  min-width: calc(var(--space-4) * 8.125);
  background-color: rgb(var(--color-card));
  color: rgb(var(--color-card-foreground));
  border-radius: var(--radius);
  transition: transform var(--timing-fast) var(--easing-standard),
    background-color var(--timing-fast) var(--easing-standard);
  outline: none;
  position: relative;
}
.metric-item:hover {
  background-color: rgb(var(--color-accent-heritage) / 0.04);
  transform: translateY(-2px);
}
.metric-item:active {
  transform: translateY(-1px) scale(0.98);
  transition: transform var(--timing-fast) var(--easing-standard);
  box-shadow: var(--shadow-sm);
}
.metric-item:focus-visible {
  outline: 2px solid rgb(var(--color-ring));
  outline-offset: 2px;
  box-shadow: 0 0 0 2px rgb(var(--color-ring) / 0.2);
}
.focus-professional:focus-visible {
  outline: 2px solid rgb(var(--color-ring));
  outline-offset: 2px;
  box-shadow: 0 0 0 2px rgb(var(--color-ring) / 0.2);
}
.metric-value {
  margin-bottom: var(--space-1);
  transition: color var(--timing-fast) var(--ease-smooth);
}
.text-heritage {
  color: rgb(var(--color-accent-heritage)) !important;
  font-weight: 600;
  font-size: max(1rem, 16px);
}
.metric-item-heritage {
  margin: calc(var(--space-4) * 1.3) 0;
  padding: calc(var(--space-6) * 1.3);
}
.metric-label {
  margin-bottom: var(--space-1);
  transition: color var(--timing-fast) var(--ease-smooth);
}
.metric-description {
  transition: color var(--timing-fast) var(--ease-smooth);
}
.metric-enhanced .metric-item:hover {
  background-color: rgb(var(--color-accent-heritage) / 0.06);
}
.metric-enhanced .metric-value {
  color: rgb(var(--color-primary));
}
@media (min-width: 640px) {
  .metric-item {
    padding: var(--space-6);
    min-height: calc(var(--space-4) * 6.875);
  }
}
@media (min-width: 768px) {
  .metric-item {
    padding: var(--space-8);
    min-height: calc(var(--space-4) * 7.5);
  }
}
@media (min-width: 1024px) {
  .metric-item {
    min-height: calc(var(--space-4) * 8.75);
  }
}
.dark .metric-item {
  color-scheme: dark;
  background-color: transparent;
}
.dark .metric-item:hover {
  background-color: rgb(var(--color-accent-heritage) / 0.12);
}
.dark .metric-value {
  color: rgb(var(--color-foreground));
}
.dark .metric-label {
  color: rgb(var(--color-foreground));
}
.dark .metric-description {
  color: rgb(var(--color-muted-foreground));
}
@media (prefers-color-scheme: dark) {
  :root:not(.light) .metric-item {
    background-color: transparent;
  }
  :root:not(.light) .metric-item:hover {
    background-color: rgb(var(--color-accent-heritage) / 0.08);
  }
  :root:not(.light) .metric-value {
    color: rgb(var(--color-foreground));
  }
  :root:not(.light) .metric-label {
    color: rgb(var(--color-foreground));
  }
  :root:not(.light) .metric-description {
    color: rgb(var(--color-muted-foreground));
  }
}
@media (prefers-reduced-motion: reduce) {
  .metric-item {
    transition: none;
  }
  .metric-item:hover {
    transform: none;
  }
  .metric-item:active {
    transform: none;
  }
}
@media print {
  .metric-item {
    -moz-column-break-inside: avoid;
         break-inside: avoid;
  }
  .metric-item:hover {
    transform: none;
  }
}
.touch-target {
  min-height: 48px;
  min-width: 48px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.partners-grid {
  display: grid;
  gap: 2rem;
  grid-template-columns: 1fr;
}
@media (min-width: 768px) {
  .partners-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (min-width: 1024px) {
  .partners-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}
.partner-card {
  display: flex;
  flex-direction: column;
  height: 100%;
  border: 1px solid #e5e7eb;
  transition: all 0.3s ease;
}
.partner-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 10px 25px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
}
.partner-card .partner-name {
  color: var(--text-primary);
  margin-bottom: 0.25rem;
}
.partner-card .partner-category {
  color: var(--color-blue-600);
  font-weight: 500;
  font-size: 0.875rem;
}
.partner-card .partner-description {
  color: var(--text-secondary);
  line-height: 1.6;
  flex-grow: 1;
}
.partner-card .partner-services {
  margin-bottom: 1rem;
}
.partner-card .partner-contact {
  border-top: 1px solid var(--border-light);
  padding-top: 1rem;
  margin-top: auto;
}
.partner-card .contact-cta {
  background: linear-gradient(135deg, var(--color-blue-50) 0%, var(--color-slate-50) 100%);
  border-top: 1px solid var(--border-light);
  transition: all 0.2s ease;
}
.partner-card .contact-cta:hover {
  background: linear-gradient(135deg, var(--color-blue-100) 0%, var(--color-slate-100) 100%);
  color: var(--color-blue-800);
}
.btn-heritage {
  background: var(--heritage-red);
  color: white;
  border: none;
  padding: 0.75rem 2rem;
  border-radius: 0.5rem;
  font-weight: 600;
  transition: all 0.2s ease;
  position: relative;
  overflow: hidden;
}
.btn-heritage:before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: linear-gradient(45deg, rgba(255,255,255,0.1) 0%, rgba(255,255,255,0.05) 100%);
  transition: opacity 0.2s ease;
  opacity: 0;
}
.btn-heritage:hover:before {
  opacity: 1;
}
.btn-heritage:hover {
  background: var(--heritage-red-dark);
  transform: translateY(-1px);
  box-shadow: 0 8px 25px -3px rgba(220, 38, 38, 0.3);
}
.partnership-cta {
  padding-top: 6rem;
  padding-bottom: 6rem;
  margin-top: 3rem;
  margin-bottom: 3rem;
}
.partners-directory input,
.partners-directory select {
  transition: all 0.2s ease;
  border-radius: 0.5rem;
  border: 1px solid var(--border-light);
  background: white;
  color: var(--text-primary);
}
.partners-directory input:focus,
.partners-directory select:focus {
  outline: none;
  border-color: var(--color-blue-500);
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
}
.partners-directory input::-moz-placeholder {
  color: var(--text-tertiary);
}
.partners-directory input::placeholder {
  color: var(--text-tertiary);
}
.partner-rating .icon-star {
  color: #fbbf24;
  fill: #fbbf24;
}
@media (max-width: 767px) {
  .partners-grid {
    gap: 1.5rem;
  }
  .partner-card {
    margin: 0 auto;
    max-width: 100%;
  }
  .partnership-cta {
    padding-top: 4rem;
    padding-bottom: 4rem;
    margin-top: 2rem;
    margin-bottom: 2rem;
  }
  .btn-heritage:not(:first-of-type) {
    background: var(--color-slate-600);
  }
  .btn-heritage:not(:first-of-type):hover {
    background: var(--color-slate-700);
  }
}
@media (min-width: 768px) {
  .heritage-red:nth-of-type(n+3),
  .btn-heritage:nth-of-type(n+3) {
    background: var(--color-slate-600);
    color: white;
  }
  .heritage-red:nth-of-type(n+3):hover,
  .btn-heritage:nth-of-type(n+3):hover {
    background: var(--color-slate-700);
  }
}
@media (prefers-reduced-motion: no-preference) {
  .pwa-scroll-fade {
    animation-duration: 0.6s;
    animation-fill-mode: both;
  }
  .partner-card {
    animation-delay: calc(var(--stagger-index, 0) * 0.1s);
  }
}
@media (prefers-contrast: high) {
  .partner-card {
    border-width: 2px;
    border-color: var(--text-primary);
  }
  .partner-card .partner-name {
    font-weight: 700;
  }
  .btn-heritage {
    border: 2px solid var(--heritage-red-dark);
  }
}
@media print {
  .partner-card {
    border: 1px solid #000;
    page-break-inside: avoid;
    margin-bottom: 1rem;
  }
  .partnership-cta {
    display: none;
  }
}
.pricing-card-container {
  position: relative;
  height: 100%;
}
.pricing-card {
  display: flex;
  flex-direction: column;
  height: 100%;
  padding: 2rem;
  background: var(--color-white);
  border: 1px solid var(--color-gray-200);
  border-radius: 8px;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
  transition: all 0.2s ease;
  position: relative;
}
.pricing-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 8px 16px rgba(0, 0, 0, 0.15);
}
.pricing-card-recommended {
  border-color: var(--color-heritage);
  border-width: 2px;
  box-shadow: 0 4px 12px rgba(204, 0, 0, 0.15);
}
.pricing-card-recommended:hover {
  box-shadow: 0 12px 24px rgba(204, 0, 0, 0.2);
}
.pricing-card-highlighted {
  transform: scale(1.05);
  z-index: 10;
}
.pricing-card-custom {
  background: linear-gradient(135deg, var(--color-gray-50), var(--color-white));
  border-style: dashed;
}
.pricing-card-badge {
  position: absolute;
  top: -12px;
  left: 50%;
  transform: translateX(-50%);
  padding: 4px 16px;
  background: var(--color-heritage);
  color: var(--color-white);
  font-size: 12px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  border-radius: 16px;
  z-index: 1;
  white-space: nowrap;
}
.pricing-card-header {
  margin-bottom: 1.5rem;
  text-align: center;
}
.pricing-card-tier {
  font-size: 28px;
  font-weight: 700;
  color: var(--color-text-primary);
  margin-bottom: 0.5rem;
  line-height: 1.2;
}
.pricing-card-description {
  font-size: 14px;
  color: var(--color-text-muted);
  line-height: 1.5;
}
.pricing-card-pricing {
  padding: 1.5rem 0;
  border-top: 1px solid var(--color-gray-100);
  border-bottom: 1px solid var(--color-gray-100);
  margin-bottom: 1.5rem;
}
.pricing-card-rate {
  display: flex;
  align-items: baseline;
  justify-content: center;
  margin-bottom: 1rem;
  gap: 4px;
}
.pricing-card-price {
  font-size: 48px;
  font-weight: 700;
  color: var(--color-text-primary);
  line-height: 1;
}
.pricing-card-unit {
  font-size: 16px;
  color: var(--color-text-muted);
  font-weight: 500;
}
.pricing-card-volume {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 12px;
  background: var(--color-success-light);
  border-radius: 6px;
  margin: 1rem 0;
}
.pricing-card-volume-icon {
  flex-shrink: 0;
}
.pricing-card-volume-content {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.pricing-card-volume-rate {
  font-size: 18px;
  font-weight: 600;
  color: var(--color-success);
}
.pricing-card-volume-text {
  font-size: 12px;
  color: var(--color-text-secondary);
}
.pricing-card-setup,
.pricing-card-minimum {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 8px 0;
  font-size: 14px;
}
.pricing-card-setup-label,
.pricing-card-minimum-label {
  color: var(--color-text-muted);
}
.pricing-card-setup-value,
.pricing-card-minimum-value {
  font-weight: 600;
  color: var(--color-text-primary);
}
.pricing-card-minimum-usage {
  font-size: 12px;
  color: var(--color-text-muted);
  margin-left: 4px;
}
.pricing-card-interactions {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  margin-top: 12px;
  padding: 8px;
  background: var(--color-gray-50);
  border-radius: 4px;
  font-size: 13px;
  color: var(--color-text-secondary);
}
.pricing-card-custom-message {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 2rem;
  text-align: center;
  min-height: 200px;
}
.pricing-card-custom-icon {
  margin-bottom: 1rem;
}
.pricing-card-custom-text {
  font-size: 16px;
  color: var(--color-text-secondary);
  line-height: 1.5;
}
.pricing-card-benefits-section {
  flex: 1;
  margin-bottom: 1.5rem;
}
.pricing-card-benefits {
  list-style: none;
  margin: 0;
  padding: 0;
}
.pricing-card-benefit-item {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  padding: 8px 0;
  font-size: 14px;
  color: var(--color-text-secondary);
  line-height: 1.5;
}
.pricing-card-benefit-icon {
  flex-shrink: 0;
  margin-top: 2px;
  color: var(--color-success);
}
.pricing-card-audience {
  padding: 12px;
  background: var(--color-gray-50);
  border-radius: 6px;
  margin-bottom: 1.5rem;
}
.pricing-card-audience-text {
  font-size: 13px;
  color: var(--color-text-secondary);
  text-align: center;
  margin: 0;
}
.pricing-card-audience-text strong {
  color: var(--color-text-primary);
  font-weight: 600;
}
.pricing-card-footer {
  margin-top: auto;
  padding-top: 1rem;
}
.pricing-card-cta {
  width: 100%;
  padding: 12px 24px;
  font-size: 16px;
  font-weight: 600;
  border-radius: 6px;
  transition: all 0.2s ease;
}
.pricing-card-recommended .pricing-card-cta {
  background: var(--color-heritage);
  border-color: var(--color-heritage);
}
.pricing-card-recommended .pricing-card-cta:hover {
  background: var(--color-heritage-dark);
  border-color: var(--color-heritage-dark);
  transform: translateY(-2px);
}
.pricing-card-expand {
  display: none;
  width: 100%;
  padding: 8px;
  background: transparent;
  border: none;
  border-top: 1px solid var(--color-gray-100);
  margin-top: 1rem;
  cursor: pointer;
  transition: all 0.2s ease;
  font-size: 13px;
  color: var(--color-text-muted);
}
.pricing-card-expand:hover {
  color: var(--color-text-primary);
}
.pricing-card-expanded {
  display: none;
  padding-top: 1rem;
  border-top: 1px solid var(--color-gray-100);
  margin-top: 1rem;
}
@media (max-width: 768px) {
  .pricing-card {
    padding: 1.5rem;
    margin: 0;
    width: 100%;
  }
  .pricing-card-highlighted {
    transform: none;
  }
  .pricing-card-tier {
    font-size: 24px;
  }
  .pricing-card-price {
    font-size: 36px;
  }
  .pricing-card-volume {
    flex-direction: column;
    text-align: center;
  }
  .pricing-card-setup,
  .pricing-card-minimum {
    flex-direction: column;
    text-align: center;
    gap: 4px;
  }
  .pricing-card-benefit-item {
    font-size: 13px;
  }
  .pricing-card-cta {
    font-size: 15px;
    padding: 14px 20px;
  }
}
@media (max-width: 480px) {
  .pricing-card {
    padding: 1.25rem;
  }
  .pricing-card-tier {
    font-size: 20px;
  }
  .pricing-card-price {
    font-size: 32px;
  }
  .pricing-card-description {
    font-size: 13px;
  }
}
@media (min-width: 769px) and (max-width: 1024px) {
  .pricing-card {
    padding: 1.75rem;
  }
  .pricing-card-price {
    font-size: 42px;
  }
}
.pricing-card.pwa-scroll-fade {
  opacity: 0;
  transform: translateY(20px);
  animation: fadeInUp 0.6s ease forwards;
  animation-delay: calc(var(--stagger-index) * 100ms);
}
@keyframes fadeInUp {
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.dark .pricing-card {
  background: rgb(var(--surface-dark, 13 17 23));
  border-color: rgba(255, 255, 255, 0.1);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
}
.dark .pricing-card:hover {
  box-shadow: 0 8px 16px rgba(0, 0, 0, 0.4);
}
.dark .pricing-card-recommended {
  border-color: var(--color-heritage);
  box-shadow: 0 4px 12px rgba(204, 0, 0, 0.3);
}
.dark .pricing-card-recommended:hover {
  box-shadow: 0 12px 24px rgba(204, 0, 0, 0.4);
}
.dark .pricing-card-custom {
  background: linear-gradient(135deg, rgba(30, 41, 59, 0.8), rgb(var(--surface-dark, 13 17 23)));
}
.dark .pricing-card-tier {
  color: var(--color-white, #ffffff);
}
.dark .pricing-card-description {
  color: rgba(255, 255, 255, 0.7);
}
.dark .pricing-card-pricing {
  border-color: rgba(255, 255, 255, 0.1);
}
.dark .pricing-card-price {
  color: var(--color-white, #ffffff);
}
.dark .pricing-card-unit {
  color: rgba(255, 255, 255, 0.6);
}
.dark .pricing-card-volume {
  background: rgba(34, 197, 94, 0.15);
}
.dark .pricing-card-volume-rate {
  color: rgb(134, 239, 172);
}
.dark .pricing-card-volume-text {
  color: rgba(255, 255, 255, 0.7);
}
.dark .pricing-card-setup-label,
.dark .pricing-card-minimum-label {
  color: rgba(255, 255, 255, 0.6);
}
.dark .pricing-card-setup-value,
.dark .pricing-card-minimum-value {
  color: var(--color-white, #ffffff);
}
.dark .pricing-card-minimum-usage {
  color: rgba(255, 255, 255, 0.5);
}
.dark .pricing-card-interactions {
  background: rgba(255, 255, 255, 0.05);
  color: rgba(255, 255, 255, 0.7);
}
.dark .pricing-card-custom-text {
  color: rgba(255, 255, 255, 0.7);
}
.dark .pricing-card-benefit-item {
  color: rgba(255, 255, 255, 0.8);
}
.dark .pricing-card-benefit-icon {
  color: rgb(134, 239, 172);
}
.dark .pricing-card-audience {
  background: rgba(255, 255, 255, 0.05);
}
.dark .pricing-card-audience-text {
  color: rgba(255, 255, 255, 0.7);
}
.dark .pricing-card-audience-text strong {
  color: var(--color-white, #ffffff);
}
.dark .pricing-card-expand {
  border-color: rgba(255, 255, 255, 0.1);
  color: rgba(255, 255, 255, 0.5);
}
.dark .pricing-card-expand:hover {
  color: var(--color-white, #ffffff);
}
.dark .pricing-card-expanded {
  border-color: rgba(255, 255, 255, 0.1);
}
@media print {
  .pricing-card {
    box-shadow: none;
    border: 1px solid #ddd;
    page-break-inside: avoid;
  }
  .pricing-card:hover {
    transform: none;
    box-shadow: none;
  }
  .pricing-card-expand {
    display: none !important;
  }
}
.section-container {
  position: relative;
  overflow: hidden;
  transition: all var(--timing-fast) var(--easing-standard);
}
.section-header {
  text-align: center;
  margin-bottom: var(--space-8);
  max-width: 800px;
  margin-left: auto;
  margin-right: auto;
}
.section-title {
  margin-bottom: var(--space-4);
  position: relative;
}
.section-subtitle {
  margin-bottom: var(--space-4);
  position: relative;
}
.section-description {
  margin-bottom: 0;
  position: relative;
  max-width: 600px;
  margin-left: auto;
  margin-right: auto;
}
.section-content {
  position: relative;
  width: 100%;
}
.section-body {
  position: relative;
  width: 100%;
}
.section-body > * + * {
  margin-top: var(--space-6);
}
.section-body.layout-grid-2 > *,
.section-body.layout-grid-3 > *,
.section-body.layout-grid-4 > * {
  margin-top: 0;
}
.section-body .layout-grid-2,
.section-body .layout-grid-3,
.section-body .layout-grid-4 {
  margin-top: var(--space-8);
}
@media (max-width: 767px) {
  .section-header {
    margin-bottom: var(--space-6);
    text-align: left;
  }
  .section-title {
    margin-bottom: var(--space-3);
  }
  .section-subtitle {
    margin-bottom: var(--space-3);
  }
  .section-description {
    max-width: none;
    margin-left: 0;
    margin-right: 0;
  }
  .section-body > * + * {
    margin-top: var(--space-4);
  }
  .section-body.layout-grid-2 > *,
  .section-body.layout-grid-3 > *,
  .section-body.layout-grid-4 > * {
    margin-top: 0;
  }
  .section-body .layout-grid-2,
  .section-body .layout-grid-3,
  .section-body .layout-grid-4 {
    margin-top: var(--space-6);
  }
}
@media (min-width: 768px) and (max-width: 1023px) {
  .section-header {
    margin-bottom: var(--space-8);
    text-align: center;
  }
  .section-description {
    max-width: 700px;
  }
}
@media (min-width: 1024px) {
  .section-header {
    margin-bottom: var(--space-10);
  }
  .section-body > * + * {
    margin-top: var(--space-8);
  }
  .section-body.layout-grid-2 > *,
  .section-body.layout-grid-3 > *,
  .section-body.layout-grid-4 > * {
    margin-top: 0;
  }
  .section-body .layout-grid-2,
  .section-body .layout-grid-3,
  .section-body .layout-grid-4 {
    margin-top: var(--space-12);
  }
}
.section-header .pwa-scroll-fade {
  opacity: 0;
  transform: translateY(var(--scroll-distance, 30px));
  transition: all var(--pwa-duration-normal) var(--pwa-easing-smooth);
}
.section-content .pwa-scroll-fade {
  opacity: 0;
  transform: translateY(var(--scroll-distance, 30px));
  transition: all var(--pwa-duration-normal) var(--pwa-easing-smooth);
}
.section-container.pwa-scroll-section.pwa-animate .pwa-scroll-fade {
  opacity: 1;
  transform: translateY(0);
}
.section-container:focus-within {
  outline: none;
}
@media (prefers-reduced-motion: reduce) {
  .section-header .pwa-scroll-fade,
  .section-content .pwa-scroll-fade {
    transition: none;
    opacity: 1;
    transform: none;
  }
}
@media print {
  .section-container {
    page-break-inside: avoid;
    -moz-column-break-inside: avoid;
         break-inside: avoid;
  }
  .section-header {
    page-break-after: avoid;
    -moz-column-break-after: avoid;
         break-after: avoid;
  }
  .section-header {
    margin-bottom: 1rem;
  }
  .section-body > * + * {
    margin-top: 1rem;
  }
  .section-body.layout-grid-2 > *,
  .section-body.layout-grid-3 > *,
  .section-body.layout-grid-4 > * {
    margin-top: 0;
  }
}
.service-showcase {
  position: relative;
  width: 100%;
}
.service-showcase-container {
  padding: var(--spacing-xl) 0;
}
.service-showcase__header {
  text-align: center;
  margin-bottom: var(--spacing-xl);
}
.service-showcase__header > * + * {
  margin-top: var(--spacing-md);
}
.service-showcase__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--spacing-lg);
  width: 100%;
}
.service-showcase__card {
  position: relative;
  padding: var(--spacing-lg);
  background: rgb(var(--color-card));
  border: 1px solid rgb(var(--color-border));
  border-radius: var(--radius-lg);
  transition: all var(--timing-fast) var(--ease-smooth);
  cursor: pointer;
  text-decoration: none;
  display: block;
}
.service-showcase__card:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
  border-color: rgb(var(--color-primary) / 0.3);
}
.service-showcase__icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 64px;
  height: 64px;
  margin-bottom: var(--spacing-md);
  background: rgb(var(--color-muted) / 0.1);
  border-radius: var(--radius-md);
  transition: all var(--timing-fast) var(--ease-smooth);
}
.service-showcase__icon svg {
  width: 48px;
  height: 48px;
  fill: rgb(var(--color-primary));
  transition: all var(--timing-fast) var(--ease-smooth);
}
.service-showcase__card:hover .service-showcase__icon {
  background: rgb(var(--color-primary) / 0.1);
}
.service-showcase__card:hover .service-showcase__icon svg {
  transform: scale(1.1);
  fill: rgb(var(--color-primary));
}
.service-showcase__content {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-sm);
}
.service-showcase__title {
  margin: 0;
}
.service-showcase__description {
  margin: 0;
}
.service-showcase__badge {
  position: absolute;
  top: var(--spacing-md);
  right: var(--spacing-md);
  padding: 2px 8px;
  background: rgb(var(--color-accent-heritage));
  color: white;
  font-size: 0.75rem;
  font-weight: 600;
  border-radius: var(--radius-sm);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}
.service-showcase__link-icon {
  position: absolute;
  bottom: var(--spacing-md);
  right: var(--spacing-md);
  opacity: 0;
  transform: translateX(-8px);
  transition: all var(--timing-fast) var(--ease-smooth);
}
.service-showcase__link-icon svg {
  width: 20px;
  height: 20px;
  fill: rgb(var(--color-primary));
}
.service-showcase__card:hover .service-showcase__link-icon {
  opacity: 1;
  transform: translateX(0);
}
.service-showcase__grid--compact {
  gap: var(--spacing-md);
}
.service-showcase__grid--compact .service-showcase__card {
  padding: var(--spacing-md);
}
.service-showcase__grid--compact .service-showcase__icon {
  width: 48px;
  height: 48px;
  margin-bottom: var(--spacing-sm);
}
.service-showcase__grid--compact .service-showcase__icon svg {
  width: 32px;
  height: 32px;
}
.service-showcase__grid--wide {
  grid-template-columns: repeat(4, 1fr);
}
.service-showcase__card--dark {
  background: rgb(var(--color-background));
  border-color: rgb(var(--color-border) / 0.5);
}
.service-showcase__card--dark:hover {
  background: rgb(var(--color-card));
}
.service-showcase__card--highlight {
  border-color: rgb(var(--color-accent-heritage) / 0.3);
  background: rgb(var(--color-accent-heritage) / 0.05);
}
.service-showcase__card--highlight .service-showcase__icon {
  background: rgb(var(--color-accent-heritage) / 0.1);
}
.service-showcase__card--highlight .service-showcase__icon svg {
  fill: rgb(var(--color-accent-heritage));
}
.service-showcase.pwa-scroll-section {
  opacity: 0;
  transform: translateY(var(--pwa-section-distance));
  transition: opacity var(--pwa-section-duration) var(--ease-smooth),
              transform var(--pwa-section-duration) var(--ease-smooth);
}
.service-showcase.pwa-scroll-section.animate {
  opacity: 1;
  transform: translateY(0);
}
.service-showcase__card.pwa-scroll-fade {
  opacity: 0;
  transform: translateY(var(--pwa-scroll-distance));
  transition: opacity var(--pwa-scroll-duration) var(--ease-smooth),
              transform var(--pwa-scroll-duration) var(--ease-smooth);
  transition-delay: calc(var(--stagger-index, 0) * var(--pwa-stagger-delay));
}
.service-showcase__card.pwa-scroll-fade.animate {
  opacity: 1;
  transform: translateY(0);
}
@media (max-width: 1023px) {
  .service-showcase__grid {
    grid-template-columns: repeat(2, 1fr);
    gap: var(--spacing-md);
  }
  .service-showcase__grid--wide {
    grid-template-columns: repeat(3, 1fr);
  }
  .service-showcase-container {
    padding: var(--spacing-lg) var(--spacing-md);
  }
}
@media (max-width: 767px) {
  .service-showcase__grid {
    grid-template-columns: 1fr;
    gap: var(--spacing-md);
  }
  .service-showcase__grid--wide {
    grid-template-columns: 1fr;
  }
  .service-showcase-container {
    padding: var(--spacing-lg) var(--spacing-sm);
  }
  .service-showcase__header {
    margin-bottom: var(--spacing-lg);
  }
  .service-showcase__card {
    padding: var(--spacing-md);
  }
  .service-showcase__icon {
    width: 56px;
    height: 56px;
  }
  .service-showcase__icon svg {
    width: 40px;
    height: 40px;
  }
  .service-showcase__card {
    min-height: 120px;
    -webkit-tap-highlight-color: transparent;
  }
  .service-showcase__card:active {
    transform: scale(0.98);
  }
  .service-showcase__card:hover {
    transform: none;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  }
  .service-showcase__card:hover .service-showcase__icon svg {
    transform: none;
  }
  .service-showcase__link-icon {
    opacity: 0.5;
    transform: translateX(0);
  }
}
.theme-ai-middleware .service-showcase {
  background: linear-gradient(135deg, 
    rgb(var(--color-background)) 0%,
    rgb(var(--color-muted) / 0.05) 100%);
}
.theme-ai-middleware .service-showcase__icon svg {
  fill: rgb(var(--color-accent-heritage));
}
.theme-heritage .service-showcase__card:nth-child(1) {
  border-color: rgb(var(--color-accent-heritage) / 0.3);
  background: rgb(var(--color-accent-heritage) / 0.05);
}
.theme-heritage .service-showcase__card:nth-child(1) .service-showcase__icon svg {
  fill: rgb(var(--color-accent-heritage));
}
.theme-dark .service-showcase {
  background: rgb(var(--color-background));
}
.theme-dark .service-showcase__card {
  background: rgb(var(--color-card) / 0.5);
  border-color: rgb(var(--color-border) / 0.3);
}
.service-showcase__card:focus-visible {
  outline: 3px solid rgb(var(--color-focus));
  outline-offset: 2px;
}
@media (prefers-reduced-motion: reduce) {
  .service-showcase__card,
  .service-showcase__icon,
  .service-showcase__icon svg,
  .service-showcase__link-icon,
  .service-showcase.pwa-scroll-section,
  .service-showcase__card.pwa-scroll-fade {
    transition: none !important;
    animation: none !important;
    transform: none !important;
  }
}
@media (prefers-contrast: high) {
  .service-showcase__card {
    border-width: 2px;
  }
  .service-showcase__card:hover {
    border-color: rgb(var(--color-foreground));
  }
}
.service-showcase__card {
  will-change: transform, box-shadow;
  backface-visibility: hidden;
  transform: translateZ(0);
}
.service-showcase__card.animate {
  will-change: auto;
}
.service-showcase__icon svg {
  shape-rendering: geometricPrecision;
}
.showcase-item {
  display: block;
  position: relative;
  width: 100%;
  contain: layout style;
  transform: translate3d(0, 0, 0);
}
.showcase-item-horizontal .showcase-card {
  display: flex;
  flex-direction: row;
  align-items: flex-start;
  gap: var(--space-8);
}
@media (max-width: 767px) {
  .showcase-item-horizontal .showcase-card {
    flex-direction: column;
    gap: var(--space-6);
  }
}
.showcase-card {
  padding: var(--space-8);
  margin: 0;
  border: 0;
  border-radius: var(--radius-lg);
  background: rgb(var(--color-card));
  color: rgb(var(--color-foreground));
  transition: background-color var(--timing-fast) var(--ease-smooth),
    box-shadow var(--timing-fast) var(--ease-smooth),
    transform var(--timing-fast) var(--ease-smooth);
  position: relative;
  overflow: hidden;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}
.showcase-card-sm {
  padding: var(--space-5);
  border-radius: var(--radius-md);
}
.showcase-card-sm .showcase-title {
  font-size: var(--font-size-lg);
}
.showcase-card-sm .showcase-description {
  font-size: var(--font-size-base);
  line-height: 1.5;
}
.showcase-card-sm .showcase-header {
  margin-bottom: var(--space-4);
  gap: var(--space-3);
}
.showcase-card-sm .showcase-icon svg {
  width: 2rem;
  height: 2rem;
}
.showcase-card-lg {
  padding: var(--space-10);
  border-radius: var(--radius-xl);
}
.showcase-card-lg .showcase-title {
  font-size: var(--font-size-2xl);
}
.showcase-card-lg .showcase-description {
  font-size: var(--font-size-lg);
  line-height: 1.7;
}
.showcase-card-lg .showcase-header {
  margin-bottom: var(--space-8);
  gap: var(--space-6);
}
.showcase-card-lg .showcase-icon svg {
  width: 3.5rem;
  height: 3.5rem;
}
.showcase-card:hover {
  background: rgb(var(--color-card-hover));
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
  transform: translateY(-2px);
}
.showcase-card:active {
  transform: translateY(-1px);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
}
@media (max-width: 767px) {
  .showcase-card {
    padding: var(--space-6);
    border-radius: var(--radius-md);
  }
  .showcase-card-sm {
    padding: var(--space-4);
  }
  .showcase-card-lg {
    padding: var(--space-7);
  }
  .showcase-item-heritage .showcase-card,
  .showcase-card-heritage {
    padding-left: calc(var(--space-6) + var(--space-1));
  }
  .showcase-item-heritage .showcase-card-sm,
  .showcase-card-heritage.showcase-card-sm {
    padding-left: calc(var(--space-4) + var(--space-1));
  }
  .showcase-item-heritage .showcase-card-lg,
  .showcase-card-heritage.showcase-card-lg {
    padding-left: calc(var(--space-7) + var(--space-1));
  }
}
@media (min-width: 768px) and (max-width: 1023px) {
  .showcase-card {
    padding: calc(var(--space-6) * 1.25);
  }
  .showcase-item-heritage .showcase-card,
  .showcase-card-heritage {
    padding-left: calc(var(--space-6) * 1.25 + var(--space-1));
  }
}
@media (min-width: 1024px) {
  .showcase-card {
    padding: var(--space-8);
  }
}
.showcase-item-heritage {
  margin: 0 !important;
}
.showcase-item-heritage .showcase-card,
.showcase-card-heritage {
  box-shadow: inset 4px 0 0 0 rgb(var(--color-accent-heritage)), 0 1px 3px rgba(0, 0, 0, 0.05);
  padding-left: calc(var(--space-8) + var(--space-1));
}
.showcase-item-heritage .showcase-card-sm,
.showcase-card-heritage.showcase-card-sm {
  padding-left: calc(var(--space-5) + var(--space-1));
}
.showcase-item-heritage .showcase-card-lg,
.showcase-card-heritage.showcase-card-lg {
  padding-left: calc(var(--space-10) + var(--space-1));
}
.showcase-cta-heritage {
  background-color: rgb(var(--color-accent-heritage));
  color: white;
  font-weight: 600;
  min-height: 48px;
  padding: var(--space-3) var(--space-6);
  margin-top: var(--space-4);
}
.showcase-cta-heritage:hover {
  background-color: rgb(var(--color-accent-heritage-dark));
  transform: translateY(-2px);
  box-shadow: var(--shadow-heritage);
}
.showcase-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--space-4);
  margin-bottom: var(--space-6);
  width: 100%;
}
.showcase-header-left {
  display: flex;
  align-items: flex-start;
  gap: var(--space-4);
  flex: 1;
  min-width: 0;
}
.showcase-icon {
  flex-shrink: 0;
}
.showcase-item-details {
  flex: 1;
  min-width: 0;
}
.showcase-title {
  margin-bottom: var(--space-2);
}
.showcase-tagline {
  margin: 0;
  opacity: 0.9;
}
.showcase-item-content {
  margin-top: var(--space-4);
}
.showcase-headline {
  margin-bottom: var(--space-3);
}
.showcase-description {
  margin-bottom: var(--space-4);
  line-height: 1.6;
}
.showcase-stats {
  margin: var(--space-6) 0;
}
.showcase-stats-centered {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
}
.showcase-stats-grid-horizontal {
  display: grid;
  grid-template-columns: repeat(3, minmax(150px, 200px));
  gap: var(--space-6);
  justify-content: center;
  max-width: 700px;
  margin: 0 auto;
}
.showcase-card-sm .showcase-stats-grid-horizontal {
  grid-template-columns: repeat(3, minmax(100px, 150px));
  gap: var(--space-4);
  max-width: 500px;
}
.showcase-card-lg .showcase-stats-grid-horizontal {
  grid-template-columns: repeat(3, minmax(180px, 250px));
  gap: var(--space-8);
  max-width: 900px;
}
.showcase-stats-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: var(--space-4);
}
@media (max-width: 767px) {
  .showcase-stats-grid-horizontal {
    grid-template-columns: 1fr;
    gap: var(--space-4);
  }
  .showcase-stats-grid {
    grid-template-columns: 1fr;
    gap: var(--space-3);
  }
}
.showcase-benefits {
  margin: var(--space-6) 0;
}
.showcase-benefits-title {
  margin-bottom: var(--space-3);
}
.showcase-benefits-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: var(--space-2);
}
.showcase-benefit {
  position: relative;
  padding-left: var(--space-6);
}
.showcase-benefit::before {
  content: "✓";
  position: absolute;
  left: 0;
  top: 0;
  color: rgb(var(--color-success));
  font-weight: 600;
  font-size: 1.25em;
}
.showcase-footer {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-6);
  margin-top: var(--space-6);
  padding-top: var(--space-6);
  border-top: 0;
}
@media (max-width: 767px) {
  .showcase-footer {
    flex-direction: column;
    gap: var(--space-4);
  }
}
.showcase-audience {
  flex: 1;
}
.showcase-audience-label {
  font-weight: 600;
  margin-bottom: var(--space-1);
  opacity: 0.8;
}
.showcase-cta {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  color: rgb(var(--color-primary));
  text-decoration: none;
  font-weight: 500;
  min-height: 48px;
  padding: var(--space-3) var(--space-4);
  transition: color var(--timing-fast) var(--ease-smooth),
    transform var(--timing-fast) var(--ease-smooth);
  margin-top: var(--space-4);
}
.showcase-card-sm .showcase-cta {
  min-height: 44px;
  padding: var(--space-2) var(--space-3);
  font-size: var(--font-size-base);
}
.showcase-card-lg .showcase-cta {
  min-height: 52px;
  padding: var(--space-4) var(--space-5);
  font-size: var(--font-size-lg);
}
.showcase-cta:hover {
  color: rgb(var(--color-primary-dark));
  transform: translateX(4px);
}
.showcase-cta-icon {
  transition: transform var(--timing-fast) var(--ease-smooth);
  vertical-align: middle;
}
.showcase-cta-icon.icon-sm {
  display: inline-block;
  margin-bottom: 0;
  border-radius: 0;
  width: 1.25rem;
  height: 1.25rem;
  align-items: initial;
  justify-content: initial;
  vertical-align: middle;
}
.showcase-cta:hover .showcase-cta-icon {
  transform: translateX(4px);
}
@media (max-width: 767px) {
  .showcase-item {
    font-size: 0.95rem;
  }
  .showcase-header {
    flex-direction: column;
    gap: var(--space-4);
  }
  .showcase-header-left {
    width: 100%;
    flex-direction: column;
    text-align: center;
    align-items: center;
    gap: var(--space-3);
  }
  .showcase-cta {
    width: 100%;
    justify-content: center;
  }
}
@media (min-width: 1024px) {
  .showcase-card {
    max-width: 1200px;
    margin-left: auto;
    margin-right: auto;
  }
}
@media (min-width: 1920px) {
  .showcase-card {
    max-width: 1400px;
  }
}
.showcase-item,
.showcase-card {
  will-change: transform;
}
.showcase-item:not(:hover),
.showcase-card:not(:hover) {
  will-change: auto;
}
@media (prefers-reduced-motion: reduce) {
  .showcase-item,
  .showcase-card,
  .showcase-cta,
  .showcase-cta-icon {
    transition: none !important;
    transform: none !important;
  }
}
@media (prefers-contrast: high) {
  .showcase-card {
    outline: 2px solid currentColor;
    outline-offset: -2px;
  }
  .showcase-item-heritage .showcase-card {
    outline-width: 3px;
  }
  .showcase-cta-heritage {
    border: 2px solid currentColor;
  }
}
.solution-card {
  display: flex;
  flex-direction: column;
  height: 100%;
  background: rgb(var(--color-background));
  border: 1px solid rgba(var(--color-border), 0.2);
  border-radius: var(--radius-lg);
  padding: var(--space-8);
  transition: all var(--timing-fast) ease-out;
}
.solution-card:hover {
  border-color: rgba(var(--color-primary), 0.3);
  box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1);
  transform: translateY(-2px);
}
.solution-header {
  text-align: center;
  margin-bottom: var(--space-6);
}
.solution-header .title-card {
  margin: var(--space-4) 0 var(--space-2) 0;
}
.solution-header .subtitle-lg {
  margin-bottom: var(--space-4);
  color: rgb(var(--color-accent-heritage));
  font-weight: 600;
}
.solution-benefits {
  margin: var(--space-6) 0;
}
.benefit-list {
  list-style: none;
  padding: 0;
  margin: var(--space-4) 0 0 0;
}
.benefit-item {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  margin-bottom: var(--space-3);
  padding: var(--space-2) 0;
}
.benefit-item:last-child {
  margin-bottom: 0;
}
.solution-metrics {
  margin: var(--space-6) 0;
}
.metrics-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-4);
}
.metric-item {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-4);
  background: rgba(var(--color-primary), 0.02);
  border-radius: var(--radius-md);
}
.metric-content {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
}
.metric-content .title-card {
  margin: 0;
  color: rgb(var(--color-primary));
}
.metric-content .description {
  margin: 0;
  font-weight: 500;
}
.solution-matrix {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-8);
  margin-top: var(--space-8);
}
@media (min-width: 768px) {
  .solution-matrix {
    grid-template-columns: repeat(2, 1fr);
  }
}
.hero-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: var(--space-6);
  margin: var(--space-8) 0;
}
.stat-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: var(--space-2);
}
.stat-item .title-card {
  margin: 0;
  color: rgb(var(--color-success));
}
.hero-actions {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  align-items: center;
  margin-top: var(--space-8);
}
@media (min-width: 768px) {
  .hero-actions {
    flex-direction: row;
    justify-content: center;
  }
}
.challenge-header {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: var(--space-4);
  margin-bottom: var(--space-6);
}
.challenge-impact {
  margin-top: var(--space-6);
}
.impact-metric {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-4);
  background: rgba(var(--color-warning), 0.05);
  border-radius: var(--radius-md);
  border-left: 4px solid rgb(var(--color-warning));
}
.faq-enterprise {
  max-width: 800px;
  margin: var(--space-8) auto 0;
}
.faq-item {
  border: 1px solid rgba(var(--color-border), 0.2);
  border-radius: var(--radius-md);
  margin-bottom: var(--space-4);
  overflow: hidden;
}
.faq-question {
  padding: var(--space-6);
  background: rgba(var(--color-muted), 0.02);
  cursor: pointer;
  list-style: none;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
  border: none;
  width: 100%;
  text-align: left;
}
.faq-question::-webkit-details-marker {
  display: none;
}
.question-content {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
}
.question-content .subtitle-lg {
  margin: 0;
  flex: 1;
}
.badge-heritage {
  background: rgb(var(--color-accent-heritage));
  color: white;
  font-size: var(--font-size-small);
  padding: var(--space-1) var(--space-3);
  border-radius: var(--radius-sm);
  font-weight: 600;
  white-space: nowrap;
}
.faq-chevron {
  transition: transform var(--timing-fast) ease-out;
}
.faq-item[open] .faq-chevron {
  transform: rotate(180deg);
}
.faq-answer {
  padding: var(--space-6);
  border-top: 1px solid rgba(var(--color-border), 0.1);
}
.faq-answer .description {
  margin: 0;
  line-height: 1.6;
}
.final-cta-enterprise {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-8);
  margin: var(--space-8) 0;
  text-align: center;
}
@media (min-width: 768px) {
  .final-cta-enterprise {
    grid-template-columns: repeat(3, 1fr);
  }
}
.cta-primary,
.cta-secondary,
.cta-tertiary {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-4);
}
.cta-details {
  margin: 0;
  font-size: var(--font-size-small);
  color: rgb(var(--color-muted-foreground));
  max-width: 250px;
}
.cta-assurance {
  margin-top: var(--space-12);
}
.assurance-items {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-6);
  margin-top: var(--space-8);
}
@media (min-width: 768px) {
  .assurance-items {
    grid-template-columns: repeat(3, 1fr);
  }
}
.assurance-item {
  display: flex;
  align-items: flex-start;
  gap: var(--space-4);
  padding: var(--space-6);
  background: rgba(var(--color-success), 0.02);
  border: 1px solid rgba(var(--color-success), 0.1);
  border-radius: var(--radius-md);
  text-align: left;
}
.assurance-content .subtitle-lg {
  margin: 0 0 var(--space-2) 0;
  color: rgb(var(--color-success));
}
.assurance-content .description {
  margin: 0;
}
@media (max-width: 767px) {
  .solution-card {
    padding: var(--space-6);
  }
  .hero-stats {
    grid-template-columns: 1fr;
    gap: var(--space-4);
  }
  .metrics-grid {
    gap: var(--space-3);
  }
  .metric-item {
    padding: var(--space-3);
  }
  .faq-question {
    padding: var(--space-4);
  }
  .faq-answer {
    padding: var(--space-4);
  }
  .question-content {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--space-2);
  }
  .badge-heritage {
    align-self: flex-start;
  }
  .assurance-item {
    padding: var(--space-4);
    flex-direction: column;
    text-align: center;
  }
}
@media (max-width: 767px) {
  .btn-heritage {
    margin: var(--space-8) auto;
    display: block;
    width: calc(100% - var(--space-8));
    max-width: 320px;
  }
}
@media (min-width: 768px) {
  .btn-heritage {
    margin: var(--space-6) auto;
  }
}
.btn-heritage {
  position: relative;
}
.btn-heritage::before {
  content: '';
  position: absolute;
  top: calc(-1 * var(--space-6));
  left: calc(-1 * var(--space-6));
  right: calc(-1 * var(--space-6));
  bottom: calc(-1 * var(--space-6));
  pointer-events: none;
}
.spec-table {
  margin-bottom: var(--space-8);
}
.spec-table-title {
  font-size: var(--text-xl);
  font-weight: 600;
  color: rgb(var(--color-text-primary));
  margin-bottom: var(--space-4);
}
.spec-table-wrapper {
  background: rgb(var(--color-card));
  border-radius: var(--radius-md);
  border: 1px solid rgb(var(--color-border));
  overflow: hidden;
}
.spec-table-content {
  width: 100%;
  border-collapse: collapse;
}
.spec-table-thead {
  background: rgb(var(--color-surface));
  border-bottom: 1px solid rgb(var(--color-border));
}
.spec-table-header-cell {
  padding: var(--space-3) var(--space-4);
  text-align: left;
  font-size: var(--text-sm);
  font-weight: 600;
  color: rgb(var(--color-text-primary));
}
.spec-table-tbody {
  background: rgb(var(--color-card));
}
.spec-table-row {
  border-bottom: 1px solid rgb(var(--color-border));
  transition: background-color var(--timing-fast);
}
.spec-table-row:last-child {
  border-bottom: none;
}
.spec-table-row:hover {
  background: rgba(var(--color-primary) / 0.02);
}
.spec-table-cell {
  padding: var(--space-3) var(--space-4);
  font-size: var(--text-sm);
  color: rgb(var(--color-text-secondary));
  vertical-align: top;
}
.spec-table-name-cell {
  font-family: var(--font-mono);
  font-weight: 500;
  color: #cd5c5c;
}
.spec-table-type-cell {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  background: rgba(var(--color-primary) / 0.05);
  color: rgb(var(--color-text-secondary));
  border-radius: var(--radius-sm);
  padding: var(--space-2) var(--space-3);
}
.spec-table-badge {
  display: inline-flex;
  align-items: center;
  padding: var(--space-1) var(--space-2);
  border-radius: var(--radius-sm);
  font-size: var(--text-xs);
  font-weight: 500;
}
.spec-table-required {
  background: rgba(220, 38, 38, 0.1);
  color: rgb(220, 38, 38);
}
.spec-table-optional {
  background: rgba(107, 114, 128, 0.1);
  color: rgb(107, 114, 128);
}
.spec-table-empty {
  padding: var(--space-8);
  text-align: center;
}
.spec-table-empty-message {
  color: rgb(var(--color-text-secondary));
  font-size: var(--text-sm);
}
.spec-table-type-inputs .spec-table-name-cell {
  color: #cd5c5c;
}
.spec-table-type-outputs .spec-table-name-cell {
  color: #22c55e;
}
.spec-table-type-configuration .spec-table-name-cell {
  color: #3b82f6;
}
@media (max-width: 767px) {
  .spec-table-mobile {
    margin-bottom: var(--space-6);
  }
  .spec-table-title {
    font-size: var(--text-lg);
    margin-bottom: var(--space-3);
  }
  .spec-table-wrapper {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
  .spec-table-content {
    min-width: 500px;
  }
  .spec-table-header-cell,
  .spec-table-cell {
    padding: var(--space-2) var(--space-3);
    font-size: var(--text-xs);
  }
  .spec-table-type-cell {
    font-size: 10px;
    padding: 2px 6px;
  }
  .spec-table-badge {
    font-size: 10px;
    padding: 2px 4px;
  }
}
@media (prefers-color-scheme: dark) {
  .spec-table-wrapper {
    background: rgb(var(--color-card-dark));
    border-color: rgb(var(--color-border-dark));
  }
  .spec-table-thead {
    background: rgb(var(--color-surface-dark));
    border-color: rgb(var(--color-border-dark));
  }
  .spec-table-row {
    border-color: rgb(var(--color-border-dark));
  }
  .spec-table-row:hover {
    background: rgba(var(--color-primary) / 0.05);
  }
  .spec-table-type-cell {
    background: rgba(var(--color-primary) / 0.1);
  }
}
.spec-table-wrapper::-webkit-scrollbar {
  height: 8px;
  background: rgba(148, 163, 184, 0.1);
}
.spec-table-wrapper::-webkit-scrollbar-thumb {
  background: rgba(148, 163, 184, 0.3);
  border-radius: var(--radius-sm);
}
.spec-table-wrapper::-webkit-scrollbar-thumb:hover {
  background: rgba(148, 163, 184, 0.5);
}
.sticky-pricing-selector {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  background: var(--color-white, #ffffff);
  border-top: 1px solid rgb(var(--color-border, 226 232 240));
  padding: var(--space-4, 1rem);
  display: none;
  z-index: var(--z-sticky, 100);
}
.sticky-pricing-selector--visible {
  display: block;
}
@media (max-width: 767px) {
  .sticky-pricing-selector {
    padding: var(--space-3, 0.75rem);
  }
  .sticky-pricing-selector .flex {
    flex-wrap: wrap;
    gap: var(--space-2, 0.5rem);
  }
}
.story-header {
  margin-bottom: var(--space-3);
}
.story-article {
  background: rgb(var(--color-card));
  border: 0;
  border-radius: var(--radius-lg);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
  padding: var(--space-5) var(--space-8);
  display: flex;
  flex-direction: column;
  height: 100%;
  transition: all var(--timing-fast) var(--ease-smooth);
  cursor: default;
}
.story-article:hover {
  transform: translateY(-4px);
  box-shadow: 0 8px 25px rgba(0, 0, 0, 0.12);
}
.story-article:active {
  transform: translateY(-1px);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}
.story-article.story-featured {
  background: rgba(var(--color-accent-heritage) / 0.02);
  border: 0;
  box-shadow: inset 4px 0 0 rgb(var(--color-accent-heritage)), 
    0 1px 3px rgba(0, 0, 0, 0.05);
}
.story-article.story-featured:hover {
  background: rgba(var(--color-accent-heritage) / 0.04);
  box-shadow: inset 4px 0 0 rgb(var(--color-accent-heritage)),
    0 8px 25px rgba(0, 0, 0, 0.12);
}
.story-image {
  margin-bottom: var(--space-6);
  border-radius: var(--radius-md);
  overflow: hidden;
}
.story-image-img {
  width: 100%;
  height: 200px;
  -o-object-fit: cover;
     object-fit: cover;
  transition: transform var(--timing-fast) var(--ease-smooth);
}
.story-article:hover .story-image-img {
  transform: scale(1.02);
}
.story-content {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}
.story-title-wrapper {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  margin-bottom: var(--space-3);
}
.story-category {
  font-size: 0.75rem;
  font-weight: 500;
  color: rgb(var(--color-primary));
  text-transform: uppercase;
  letter-spacing: 0.5px;
  margin-bottom: var(--space-2);
}
.story-main {
  flex: 1;
  margin-bottom: var(--space-6);
}
.story-main .description {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.story-footer {
  margin-top: auto;
}
.story-metrics {
  display: flex;
  flex-wrap: nowrap;
  gap: var(--space-2);
  justify-content: space-between;
  align-items: center;
  padding-top: var(--space-4);
  border: 0;
  overflow-x: auto;
}
.story-metric {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  background: rgba(var(--color-success) / 0.1);
  color: rgb(var(--color-success));
  padding: var(--space-1) var(--space-2);
  border-radius: var(--radius-sm);
  font-size: 0.75rem;
  font-weight: 500;
  border: 0;
  box-shadow: none;
  line-height: 1.2;
  white-space: nowrap;
  flex-shrink: 0;
  transition: all var(--timing-fast) var(--ease-smooth);
}
.story-metric:hover {
  background: rgba(var(--color-success) / 0.15);
  transform: translateY(-1px);
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
}
.story-metric.metric-warning {
  background: rgba(var(--color-warning) / 0.1);
  color: rgb(var(--color-warning));
}
.story-metric.metric-warning:hover {
  background: rgba(var(--color-warning) / 0.15);
  box-shadow: 0 2px 4px rgba(var(--color-warning) / 0.1);
}
.story-metric.metric-secondary {
  background: rgba(var(--color-primary) / 0.1);
  color: rgb(var(--color-primary));
}
.story-metric.metric-secondary:hover {
  background: rgba(var(--color-primary) / 0.15);
  box-shadow: 0 2px 4px rgba(var(--color-primary) / 0.1);
}
.story-metric.metric-primary {
  background: rgba(var(--color-foreground) / 0.1);
  color: rgb(var(--color-foreground));
}
.story-metric.metric-primary:hover {
  background: rgba(var(--color-foreground) / 0.15);
  box-shadow: 0 2px 4px rgba(var(--color-foreground) / 0.1);
}
.story-metric strong {
  font-weight: 600;
  margin-right: var(--space-1);
}
.metric-icon {
  flex-shrink: 0;
  opacity: 0.8;
}
@media (max-width: 767px) {
  .story-header {
    margin-bottom: var(--space-8);
  }
  .story-grid {
    max-width: 100%;
  }
  .story-article {
    padding: var(--space-4) var(--space-6);
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
  }
  .story-article:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
  }
  .story-title-wrapper {
    gap: var(--space-2);
  }
  .story-image-img {
    height: 160px;
  }
  .story-metrics {
    flex-wrap: wrap;
    gap: var(--space-2);
  }
  .story-metric {
    font-size: 0.75rem;
    padding: var(--space-1) var(--space-2);
    gap: var(--space-1);
    flex-shrink: 1;
  }
  .story-metric {
    min-height: 32px;
    display: inline-flex;
    align-items: center;
  }
}
@media (max-width: 1023px) and (min-width: 768px) {
  .story-grid {
    max-width: 500px;
  }
  .story-article {
    padding: var(--space-7);
  }
}
@media (min-width: 1400px) {
  .story-grid {
    max-width: 700px;
  }
}
@media (prefers-contrast: high) {
  .story-article {
    outline: 2px solid currentColor;
    outline-offset: -2px;
  }
  .story-metric {
    outline: 2px solid currentColor;
    font-weight: 600;
  }
  .story-article.story-featured {
    outline-width: 3px;
  }
}
@media (prefers-reduced-motion: reduce) {
  .story-article,
  .story-metric,
  .story-image-img {
    transition: none;
  }
  .story-article:hover,
  .story-metric:hover {
    transform: none;
  }
  .story-article:hover .story-image-img {
    transform: none;
  }
}
@media (prefers-color-scheme: dark) {
  .story-article.story-featured {
    background: rgba(var(--color-accent-heritage) / 0.03);
  }
  .story-metric {
    background: rgba(var(--color-success) / 0.15);
  }
  .story-metric.metric-warning {
    background: rgba(var(--color-warning) / 0.15);
  }
  .story-metric.metric-secondary {
    background: rgba(var(--color-primary) / 0.15);
  }
  .story-metric.metric-primary {
    background: rgba(var(--color-foreground) / 0.15);
  }
}
.story-article:focus-within {
  outline: 2px solid rgba(var(--color-focus) / 0.5);
  outline-offset: 2px;
}
@media print {
  .story-article {
    -moz-column-break-inside: avoid;
         break-inside: avoid;
    box-shadow: none;
    border: 0;
    outline: 1px solid #ccc;
  }
  .story-article:hover {
    transform: none;
    box-shadow: none;
  }
  .story-metrics {
    border: 0;
  }
}
.streaming-carousel {
  position: relative;
  padding: 0;
  background: transparent;
  border: none;
  border-radius: 0;
  width: 100%;
  height: 100%;
  min-height: 48px;
  transform: translateZ(0);
  will-change: transform;
  transition: opacity var(--timing-fast) var(--ease-smooth);
}
.streaming-carousel:hover {
  transform: none;
  box-shadow: none;
}
.streaming-carousel:focus-visible {
  outline: 2px solid rgb(var(--color-primary));
  outline-offset: 2px;
}
.carousel-content {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  align-items: center;
  justify-content: center;
  height: 100%;
  width: 100%;
}
.carousel-text {
  text-align: center;
  flex: 1;
}
.carousel-icon-wrapper {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--space-1);
  height: 100%;
  width: 100%;
  padding: var(--space-2);
}
.streaming-carousel .icon-container {
  box-shadow: none;
  border: none;
  background: var(--color-bg-muted-alpha);
  transition: transform var(--timing-normal) var(--ease-smooth);
}
.streaming-carousel:hover .icon-container {
  transform: translateY(-2px);
}
.carousel-label {
  text-align: center;
  display: block;
  margin-top: var(--space-1);
  opacity: 0.7;
  font-size: var(--text-xs);
  line-height: 1.2;
  color: rgb(var(--color-text-muted));
  transition: opacity var(--timing-fast) var(--ease-smooth);
}
.streaming-carousel:hover .carousel-label {
  opacity: 0.9;
}
.streaming-carousel-viewport {
  position: relative;
  background: transparent;
  overflow: hidden;
  width: 100%;
}
.streaming-carousel-track {
  display: flex;
  align-items: center;
  animation: streaming-flow 30s linear infinite;
  width: -moz-max-content;
  width: max-content;
  will-change: transform;
  transform: translateZ(0);
  contain: layout style paint;
  backface-visibility: hidden;
}
.streaming-carousel-viewport:hover .streaming-carousel-track {
  animation-play-state: paused;
}
.streaming-carousel-viewport:hover .streaming-carousel-track {
  will-change: auto;
}
.streaming-carousel-item {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}
@keyframes streaming-flow {
  0% {
    transform: translate3d(0, 0, 0);
  }
  100% {
    transform: translate3d(-50%, 0, 0);
  }
}
.streaming-carousel {
  transition: all var(--timing-normal) var(--ease-smooth);
}
.streaming-carousel-item {
  transition: transform var(--timing-fast) var(--ease-smooth);
}
.streaming-carousel-item:hover {
  transform: scale(1.05);
}
.streaming-carousel-fade-left,
.streaming-carousel-fade-right {
  position: absolute;
  top: 0;
  bottom: 0;
  width: var(--space-24);
  pointer-events: none;
  z-index: 1;
}
.streaming-carousel-fade-left {
  left: 0;
  background: linear-gradient(to right, 
    rgb(var(--color-bg-default)) 0%,
    rgba(var(--color-bg-default), 0) 100%);
}
.streaming-carousel-fade-right {
  right: 0;
  background: linear-gradient(to left,
    rgb(var(--color-bg-default)) 0%,
    rgba(var(--color-bg-default), 0) 100%);
}
@media (max-width: 767px) {
  .streaming-carousel {
    padding: 0;
  }
  .carousel-content {
    flex-direction: column;
    text-align: center;
  }
  .carousel-icon-wrapper {
    margin-top: var(--space-2);
  }
  .streaming-carousel-viewport {
    padding: var(--space-4) 0;
    margin: var(--space-4) 0;
  }
  .streaming-carousel-track {
    gap: var(--space-6);
    animation-duration: 20s;
  }
  .streaming-carousel-item {
    width: var(--space-32);
    height: var(--space-24);
  }
}
@media (min-width: 768px) {
  .streaming-carousel {
    padding: 0;
  }
  .carousel-content {
    flex-direction: column;
    text-align: center;
  }
  .carousel-text {
    flex: none;
  }
  .carousel-icon-wrapper {
    margin-top: var(--space-2);
    margin-left: 0;
  }
  .streaming-carousel-viewport {
    padding: var(--space-6) 0;
    margin: var(--space-6) 0;
  }
  .streaming-carousel-track {
    gap: var(--space-8);
    animation-duration: 30s;
  }
  .streaming-carousel-item {
    width: var(--space-40);
    height: var(--space-28);
  }
}
@media (min-width: 1280px) {
  .streaming-carousel {
    padding: 0;
  }
  .carousel-icon-wrapper {
    margin-left: 0;
  }
  .streaming-carousel-viewport {
    padding: var(--space-8) 0;
    margin: var(--space-8) 0;
  }
  .streaming-carousel-track {
    gap: var(--space-8);
    animation-duration: 45s;
  }
  .streaming-carousel-item {
    width: var(--space-40);
    height: var(--space-28);
  }
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
@media (prefers-contrast: high) {
  .streaming-carousel-card {
    border-width: 2px;
    border-color: rgb(var(--color-border));
  }
  .streaming-carousel-logo {
    opacity: 1;
    filter: contrast(1.3);
  }
}
@media (prefers-reduced-motion: reduce) {
  .streaming-carousel-track {
    animation: none;
    will-change: auto;
  }
  .streaming-carousel-card,
  .streaming-carousel-logo,
  .streaming-carousel-label {
    transition: none;
    will-change: auto;
  }
}
.streaming-carousel .title-card {
  margin: 0;
}
.streaming-carousel .description {
  margin: 0;
}
.streaming-carousel .icon-container-heritage {
  margin: var(--space-4);
}
.streaming-carousel-heritage .title-card::after {
  content: '';
  display: block;
  width: var(--space-16);
  height: 2px;
  background: rgb(var(--color-accent-heritage));
  margin: calc(var(--space-6) * 1.3) auto 0;
  border-radius: var(--radius-full);
  opacity: 0.8;
}
@media (max-width: 767px) {
  .streaming-carousel-heritage .title-section::after {
    margin: calc(var(--space-8) * 1.35) auto 0;
  }
  .streaming-carousel-heritage {
    margin: var(--space-12) 0;
  }
}
@media (min-width: 1280px) {
  .streaming-carousel-heritage .title-section::after {
    margin: calc(var(--space-6) * 1.3) auto 0;
  }
}
.switchblade-capabilities-section {
  padding: 8rem 0;
  background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%);
  position: relative;
  overflow: hidden;
}
.switchblade-capabilities-section::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: radial-gradient(circle at 25% 25%, rgba(59, 130, 246, 0.08) 0%, transparent 50%),
    radial-gradient(circle at 75% 75%, rgba(147, 51, 234, 0.06) 0%, transparent 50%),
    radial-gradient(circle at 50% 50%, rgba(16, 185, 129, 0.04) 0%, transparent 50%);
  pointer-events: none;
}
.dark .switchblade-capabilities-section {
  background: linear-gradient(135deg, #0f172a 0%, #1e293b 100%);
}
.dark .switchblade-capabilities-section::before {
  background: radial-gradient(circle at 25% 25%, rgba(59, 130, 246, 0.15) 0%, transparent 50%),
    radial-gradient(circle at 75% 75%, rgba(147, 51, 234, 0.12) 0%, transparent 50%),
    radial-gradient(circle at 50% 50%, rgba(16, 185, 129, 0.08) 0%, transparent 50%);
}
.switchblade-capabilities__container {
  max-width: 80rem;
  margin: 0 auto;
  padding: 0 1.5rem;
  position: relative;
  z-index: 1;
}
@media (min-width: 640px) {
  .switchblade-capabilities__container {
    padding: 0 2rem;
  }
}
@media (min-width: 1024px) {
  .switchblade-capabilities__container {
    padding: 0 2.5rem;
  }
}
.switchblade-capabilities__header {
  text-align: center;
  margin-bottom: 5rem;
  position: relative;
}
.switchblade-capabilities__title {
  font-size: clamp(2.5rem, 6vw, 4rem);
  font-weight: 800;
  margin-bottom: 1.5rem;
  line-height: 1.1;
  letter-spacing: -0.025em;
  background: linear-gradient(135deg, #1e293b 0%, #475569 50%, #334155 100%);
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  text-shadow: 0 0 40px rgba(0, 0, 0, 0.1);
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}
.dark .switchblade-capabilities__title {
  background: linear-gradient(135deg, #ffffff 0%, #e2e8f0 50%, #cbd5e1 100%);
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  text-shadow: 0 0 40px rgba(255, 255, 255, 0.1);
}
.switchblade-capabilities__description {
  font-size: 1.375rem;
  color: #475569;
  max-width: 56rem;
  margin: 0 auto;
  line-height: 1.7;
  letter-spacing: -0.01em;
  opacity: 0.9;
  font-weight: 400;
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}
.dark .switchblade-capabilities__description {
  color: #94a3b8;
}
.switchblade-cap-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2.5rem;
  margin-top: 4rem;
  position: relative;
}
@media (min-width: 768px) {
  .switchblade-cap-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 3rem;
  }
}
@media (min-width: 1024px) {
  .switchblade-cap-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 3.5rem;
  }
}
.switchblade-cap-card {
  background: linear-gradient(135deg, 
    rgba(255, 255, 255, 0.98) 0%, 
    rgba(255, 255, 255, 0.95) 50%,
    rgba(250, 250, 249, 0.92) 100%);
  border-radius: 2rem;
  padding: 3rem 2.5rem;
  border: 1px solid rgba(255, 255, 255, 0.9);
  box-shadow: 0 25px 50px rgba(0, 0, 0, 0.08),
    0 10px 25px rgba(0, 0, 0, 0.04),
    inset 0 1px 0 rgba(255, 255, 255, 0.4);
  -webkit-backdrop-filter: blur(30px);
          backdrop-filter: blur(30px);
  transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
  position: relative;
  overflow: hidden;
  text-align: center;
  animation: fadeInUp 0.8s ease forwards;
  transform: translateY(20px);
  opacity: 0;
}
.switchblade-cap-card:nth-child(1) {
  animation-delay: 0.1s;
}
.switchblade-cap-card:nth-child(2) {
  animation-delay: 0.2s;
}
.switchblade-cap-card:nth-child(3) {
  animation-delay: 0.3s;
}
.switchblade-cap-card:nth-child(4) {
  animation-delay: 0.4s;
}
@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(40px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.switchblade-cap-card::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: linear-gradient(135deg, 
    rgba(59, 130, 246, 0.02) 0%, 
    rgba(147, 51, 234, 0.02) 50%,
    rgba(16, 185, 129, 0.02) 100%);
  opacity: 0;
  transition: opacity 0.4s ease;
  pointer-events: none;
}
.switchblade-cap-card:hover {
  transform: translateY(-16px) scale(1.02);
  box-shadow: 0 35px 70px rgba(0, 0, 0, 0.15),
    0 15px 35px rgba(59, 130, 246, 0.08),
    inset 0 1px 0 rgba(255, 255, 255, 0.5);
  border-color: rgba(59, 130, 246, 0.3);
}
.switchblade-cap-card:hover::before {
  opacity: 1;
}
.dark .switchblade-cap-card {
  background: linear-gradient(135deg, 
    rgba(51, 65, 85, 0.8) 0%, 
    rgba(30, 41, 59, 0.6) 50%,
    rgba(15, 23, 42, 0.4) 100%);
  border-color: rgba(255, 255, 255, 0.1);
  box-shadow: 0 25px 50px rgba(0, 0, 0, 0.3),
    0 10px 25px rgba(0, 0, 0, 0.2),
    inset 0 1px 0 rgba(255, 255, 255, 0.1);
}
.dark .switchblade-cap-card:hover {
  border-color: rgba(59, 130, 246, 0.4);
  box-shadow: 0 35px 70px rgba(0, 0, 0, 0.5),
    0 15px 35px rgba(59, 130, 246, 0.15),
    inset 0 1px 0 rgba(255, 255, 255, 0.2);
}
.switchblade-cap-icon {
  width: 4rem;
  height: 4rem;
  margin: 0 auto 1.5rem;
  border-radius: 1.25rem;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
  position: relative;
  overflow: hidden;
  box-shadow: 0 10px 25px rgba(59, 130, 246, 0.25),
    0 4px 12px rgba(99, 102, 241, 0.15),
    inset 0 1px 0 rgba(255, 255, 255, 0.2);
}
.switchblade-cap-icon::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: linear-gradient(45deg, transparent 30%, rgba(255, 255, 255, 0.2) 50%, transparent 70%);
  transform: translateX(-100%);
  transition: transform 0.6s ease;
}
.switchblade-cap-card:hover .switchblade-cap-icon {
  transform: scale(1.1) rotate(5deg);
  box-shadow: 0 15px 35px rgba(59, 130, 246, 0.35),
    0 8px 20px rgba(99, 102, 241, 0.25),
    inset 0 1px 0 rgba(255, 255, 255, 0.3);
}
.switchblade-cap-card:hover .switchblade-cap-icon::before {
  transform: translateX(100%);
}
.switchblade-cap-icon svg {
  width: 2rem;
  height: 2rem;
  filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.1));
  transition: transform 0.3s ease;
}
.switchblade-cap-card:hover .switchblade-cap-icon svg {
  transform: scale(1.1);
}
.switchblade-cap-title {
  font-size: 1.5rem;
  font-weight: 700;
  margin: 1.5rem 0 1rem;
  color: #1e293b;
  line-height: 1.3;
  letter-spacing: -0.02em;
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}
.dark .switchblade-cap-title {
  color: #f1f5f9;
}
.switchblade-cap-desc {
  font-size: 1.125rem;
  color: #475569;
  line-height: 1.7;
  letter-spacing: -0.01em;
  font-weight: 400;
  margin: 0;
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}
.dark .switchblade-cap-desc {
  color: #cbd5e1;
}
.switchblade-dashboard__visual {
  position: relative;
  margin: 4rem 0;
}
.switchblade-dashboard__visual::before {
  content: '';
  position: absolute;
  inset: -2rem;
  background: linear-gradient(135deg, 
    rgba(59, 130, 246, 0.15), 
    rgba(147, 51, 234, 0.12), 
    rgba(16, 185, 129, 0.08));
  border-radius: 2rem;
  filter: blur(3rem);
  opacity: 0.6;
  animation: pulse-glow 4s ease-in-out infinite;
}
@keyframes pulse-glow {
  0%, 100% {
    opacity: 0.4;
    transform: scale(1);
  }
  50% {
    opacity: 0.7;
    transform: scale(1.05);
  }
}
.switchblade-dashboard__content {
  position: relative;
  background: linear-gradient(135deg, 
    rgba(255, 255, 255, 0.95) 0%, 
    rgba(250, 250, 249, 0.9) 100%);
  border-radius: 2rem;
  padding: 2.5rem;
  border: 1px solid rgba(255, 255, 255, 0.3);
  -webkit-backdrop-filter: blur(20px);
          backdrop-filter: blur(20px);
  box-shadow: 0 25px 50px rgba(0, 0, 0, 0.1),
    inset 0 1px 0 rgba(255, 255, 255, 0.2);
}
.dark .switchblade-dashboard__content {
  background: linear-gradient(135deg, 
    rgba(51, 65, 85, 0.95) 0%, 
    rgba(30, 41, 59, 0.9) 100%);
  border-color: rgba(255, 255, 255, 0.1);
  box-shadow: 0 25px 50px rgba(0, 0, 0, 0.3),
    inset 0 1px 0 rgba(255, 255, 255, 0.1);
}
.switchblade-env-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2rem;
  margin-bottom: 3rem;
}
@media (min-width: 1024px) {
  .switchblade-env-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}
.switchblade-env-card {
  background: linear-gradient(135deg, 
    rgba(255, 255, 255, 0.95) 0%, 
    rgba(255, 255, 255, 0.8) 100%);
  border-radius: 1.25rem;
  padding: 1.5rem;
  border: 1px solid rgba(255, 255, 255, 0.5);
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08),
    0 1px 8px rgba(0, 0, 0, 0.05);
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  -webkit-backdrop-filter: blur(10px);
          backdrop-filter: blur(10px);
  position: relative;
  overflow: hidden;
}
.switchblade-env-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 20px 40px rgba(0, 0, 0, 0.12),
    0 4px 16px rgba(0, 0, 0, 0.08);
}
.dark .switchblade-env-card {
  background: linear-gradient(135deg, 
    rgba(51, 65, 85, 0.8) 0%, 
    rgba(30, 41, 59, 0.6) 50%,
    rgba(15, 23, 42, 0.4) 100%);
  border-color: rgba(255, 255, 255, 0.1);
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3),
    0 1px 8px rgba(0, 0, 0, 0.2);
}
.switchblade-env-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  margin-bottom: 1rem;
}
.switchblade-env-name {
  font-size: 1.25rem;
  font-weight: 700;
  margin: 0 0 0.5rem 0;
  color: #1e293b;
  letter-spacing: -0.015em;
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}
.dark .switchblade-env-name {
  color: #f1f5f9;
}
.switchblade-env-badge {
  font-size: 0.75rem;
  padding: 0.375rem 0.75rem;
  border-radius: 0.5rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}
.switchblade-env-badge-content {
  display: flex;
  align-items: center;
  gap: 0.375rem;
}
.switchblade-env-badge-content svg {
  width: 0.875rem;
  height: 0.875rem;
}
.switchblade-env-meta {
  font-size: 0.875rem;
  color: #64748b;
  font-weight: 500;
  line-height: 1.5;
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}
.dark .switchblade-env-meta {
  color: #94a3b8;
}
.switchblade-stack-list {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.switchblade-stack-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0.75rem;
  border-radius: 0.5rem;
  border: 1px solid;
  font-size: 0.875rem;
}
.switchblade-stack-name {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.switchblade-stack-status {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-shrink: 0;
}
.switchblade-cli {
  background: linear-gradient(135deg, #1a1a1a 0%, #0f0f0f 100%);
  border-radius: 1rem;
  overflow: hidden;
  font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
  box-shadow: 0 20px 40px rgba(0, 0, 0, 0.4),
    0 8px 16px rgba(0, 0, 0, 0.3),
    inset 0 1px 0 rgba(255, 255, 255, 0.1);
  border: 1px solid rgba(255, 255, 255, 0.1);
}
.switchblade-cli-header {
  background: linear-gradient(135deg, #2d2d2d 0%, #1f1f1f 100%);
  padding: 1rem 1.25rem;
  border-bottom: 1px solid #404040;
  display: flex;
  align-items: center;
  position: relative;
}
.switchblade-cli-header::before {
  content: '';
  position: absolute;
  left: 1.25rem;
  top: 50%;
  transform: translateY(-50%);
  width: 0.75rem;
  height: 0.75rem;
  background: #ff5f57;
  border-radius: 50%;
  box-shadow: 1.25rem 0 0 #ffbd2e, 2.5rem 0 0 #28ca42;
}
.switchblade-cli-content {
  padding: 2rem;
  background: linear-gradient(135deg, #1a1a1a 0%, #0f0f0f 100%);
  color: #e5e5e5;
  font-size: 0.9rem;
  line-height: 1.7;
  max-height: 450px;
  overflow-y: auto;
  font-family: 'Monaco', 'Menlo', 'SF Mono', 'Consolas', 'Ubuntu Mono', monospace;
  font-weight: 500;
}
.switchblade-cli-command {
  color: #22c55e;
  margin-bottom: 0.75rem;
  font-weight: 600;
  text-shadow: 0 0 8px rgba(34, 197, 94, 0.3);
}
.switchblade-cli-command::before {
  content: '$ ';
  color: #64748b;
  font-weight: 500;
}
.switchblade-cli-output {
  color: #94a3b8;
  margin-bottom: 0.5rem;
  white-space: pre-wrap;
  font-weight: 400;
  opacity: 0.95;
}
@media (max-width: 768px) {
  .switchblade-capabilities-section {
    padding: 5rem 0;
  }
  .switchblade-capabilities__title {
    font-size: 2.5rem;
    margin-bottom: 1rem;
  }
  .switchblade-capabilities__description {
    font-size: 1.125rem;
  }
  .switchblade-cap-grid {
    grid-template-columns: 1fr;
    gap: 2rem;
  }
  .switchblade-cap-card {
    padding: 2.5rem 2rem;
  }
  .switchblade-cap-title {
    font-size: 1.375rem;
  }
  .switchblade-cap-desc {
    font-size: 1rem;
  }
  .switchblade-cli-header::before {
    left: 1rem;
  }
  .switchblade-cli-content {
    padding: 1.5rem;
    font-size: 0.8rem;
  }
}
@media (prefers-reduced-motion: reduce) {
  .switchblade-cap-card,
  .switchblade-cap-icon,
  .switchblade-env-card,
  .switchblade-dashboard__visual::before {
    animation: none;
    transition: none;
  }
  .switchblade-cap-card:hover {
    transform: none;
  }
  .switchblade-cap-card:hover .switchblade-cap-icon {
    transform: none;
  }
  .switchblade-dashboard__visual::before {
    filter: none;
  }
}
@media (prefers-contrast: high) {
  .switchblade-cap-card {
    border-width: 2px;
    border-color: currentColor;
  }
  .switchblade-cli {
    border-width: 2px;
    border-color: currentColor;
  }
}
.switchblade-cap-card,
.switchblade-env-card,
.switchblade-cli {
  will-change: transform;
  backface-visibility: hidden;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.switchblade-cap-card:focus-visible {
  outline: 2px solid #3b82f6;
  outline-offset: 2px;
}
.tco-section {
  padding: 6rem 0;
  position: relative;
  overflow: hidden;
}
.tco-section::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 20% 25%, rgba(59, 130, 246, 0.06) 0%, transparent 50%),
    radial-gradient(circle at 80% 75%, rgba(16, 185, 129, 0.04) 0%, transparent 50%);
  pointer-events: none;
}
.dark .tco-section::before {
  background: radial-gradient(circle at 20% 25%, rgba(59, 130, 246, 0.12) 0%, transparent 50%),
    radial-gradient(circle at 80% 75%, rgba(16, 185, 129, 0.08) 0%, transparent 50%);
}
.tco__container {
  max-width: 90rem;
  margin: 0 auto;
  padding: 0 1rem;
  position: relative;
  z-index: 1;
}
@media (min-width: 640px) {
  .tco__container {
    padding: 0 1.5rem;
  }
}
@media (min-width: 1024px) {
  .tco__container {
    padding: 0 2rem;
  }
}
.tco__header {
  text-align: center;
  margin-bottom: 5rem;
  position: relative;
}
.tco__title {
  font-size: clamp(2.5rem, 6vw, 4rem);
  font-weight: 800;
  margin-bottom: 1.5rem;
  line-height: 1.1;
  letter-spacing: -0.025em;
  background: linear-gradient(135deg, #1e293b 0%, #475569 50%, #334155 100%);
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  text-shadow: 0 0 40px rgba(0, 0, 0, 0.1);
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}
.dark .tco__title {
  background: linear-gradient(135deg, #ffffff 0%, #e2e8f0 50%, #cbd5e1 100%);
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  text-shadow: 0 0 40px rgba(255, 255, 255, 0.1);
}
.tco__description {
  font-size: 1.375rem;
  color: #475569;
  max-width: 56rem;
  margin: 0 auto;
  line-height: 1.7;
  letter-spacing: -0.01em;
  opacity: 0.9;
  font-weight: 400;
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}
.dark .tco__description {
  color: #94a3b8;
}
.tco-table {
  background: rgba(255, 255, 255, 0.95);
  border: 1px solid rgba(255, 255, 255, 0.6);
  border-radius: 1.5rem;
  box-shadow: 0 20px 40px rgba(0, 0, 0, 0.08);
  -webkit-backdrop-filter: blur(15px);
          backdrop-filter: blur(15px);
  overflow: hidden;
  margin-bottom: 4rem;
}
.dark .tco-table {
  background: rgba(51, 65, 85, 0.6);
  border-color: rgba(255, 255, 255, 0.08);
  box-shadow: 0 20px 40px rgba(0, 0, 0, 0.2);
}
@media (max-width: 1279px) {
  .tco-table {
    overflow-x: auto;
  }
  .tco-table-header,
  .tco-table-row {
    min-width: 1050px;
  }
}
.tco-table-header {
  display: grid;
  grid-template-columns: 300px repeat(auto-fit, minmax(180px, 1fr));
  background: linear-gradient(135deg, rgba(59, 130, 246, 0.1) 0%, rgba(147, 51, 234, 0.05) 100%);
  border-bottom: 1px solid rgba(255, 255, 255, 0.2);
}
.dark .tco-table-header {
  background: linear-gradient(135deg, rgba(59, 130, 246, 0.2) 0%, rgba(147, 51, 234, 0.1) 100%);
  border-bottom-color: rgba(255, 255, 255, 0.1);
}
@media (max-width: 1279px) {
  .tco-table-header {
    grid-template-columns: 300px repeat(auto-fit, minmax(200px, 1fr));
  }
}
.tco-header-cell {
  padding: 1rem 0.75rem;
  font-size: 0.875rem;
  font-weight: 700;
  text-align: center;
  color: #1e293b;
  font-family: 'Inter', sans-serif;
  border-right: 1px solid rgba(255, 255, 255, 0.1);
  line-height: 1.3;
}
.tco-header-cell:last-child {
  border-right: none;
}
.tco-header-cell--category {
  text-align: left;
  background: rgba(71, 85, 105, 0.05);
  padding: 1rem 1.5rem;
  font-size: 1rem;
}
.tco-header-cell--0 {
  color: #dc2626;
}
.tco-header-cell--1 {
  color: #2563eb;
}
.tco-header-cell--2 {
  color: #059669;
}
.tco-header-cell--3 {
  color: #f59e0b;
}
.tco-header-cell--4 {
  color: #8b5cf6;
}
.dark .tco-header-cell {
  color: #ffffff;
}
.dark .tco-header-cell--0 {
  color: #fca5a5;
}
.dark .tco-header-cell--1 {
  color: #93c5fd;
}
.dark .tco-header-cell--2 {
  color: #6ee7b7;
}
.dark .tco-header-cell--3 {
  color: #fbbf24;
}
.dark .tco-header-cell--4 {
  color: #c4b5fd;
}
@media (max-width: 1279px) {
  .tco-header-cell {
    border-right: none;
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
    text-align: left;
    padding: 1rem;
  }
  .tco-header-cell:last-child {
    border-bottom: none;
  }
  .tco-header-cell--category {
    position: sticky;
    left: 0;
    background: rgba(71, 85, 105, 0.1);
    z-index: 2;
  }
}
.tco-table-row {
  display: grid;
  grid-template-columns: 300px repeat(auto-fit, minmax(180px, 1fr));
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
  transition: all 0.3s ease;
}
.tco-table-row:hover {
  background: rgba(59, 130, 246, 0.02);
}
.tco-table-row:last-child {
  border-bottom: none;
}
.dark .tco-table-row {
  border-bottom-color: rgba(255, 255, 255, 0.05);
}
.dark .tco-table-row:hover {
  background: rgba(59, 130, 246, 0.05);
}
@media (max-width: 1279px) {
  .tco-table-row {
    grid-template-columns: 300px repeat(auto-fit, minmax(200px, 1fr));
  }
}
.tco-cell {
  padding: 1.5rem 1rem;
  border-right: 1px solid rgba(255, 255, 255, 0.1);
  transition: all 0.3s ease;
}
.tco-cell:last-child {
  border-right: none;
}
.tco-cell--category {
  background: rgba(248, 250, 252, 0.8);
  padding: 1.5rem;
}
.dark .tco-cell--category {
  background: rgba(30, 41, 59, 0.4);
}
.tco-cell--0::before,
.tco-cell--1::before,
.tco-cell--2::before,
.tco-cell--3::before,
.tco-cell--4::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 4px;
  border-radius: 0 2px 2px 0;
}
.tco-cell--0 {
  position: relative;
}
.tco-cell--0::before {
  background: linear-gradient(135deg, #ef4444, #dc2626);
}
.tco-cell--1 {
  position: relative;
}
.tco-cell--1::before {
  background: linear-gradient(135deg, #3b82f6, #2563eb);
}
.tco-cell--2 {
  position: relative;
}
.tco-cell--2::before {
  background: linear-gradient(135deg, #10b981, #059669);
}
.tco-cell--3 {
  position: relative;
}
.tco-cell--3::before {
  background: linear-gradient(135deg, #f59e0b, #d97706);
}
.tco-cell--4 {
  position: relative;
}
.tco-cell--4::before {
  background: linear-gradient(135deg, #8b5cf6, #7c3aed);
}
@media (max-width: 1279px) {
  .tco-cell {
    border-right: 1px solid rgba(255, 255, 255, 0.1);
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
    padding: 1rem;
  }
  .tco-cell:last-child {
    border-right: none;
  }
  .tco-cell--category {
    position: sticky;
    left: 0;
    background: rgba(248, 250, 252, 0.95);
    z-index: 2;
    border-right: 2px solid rgba(255, 255, 255, 0.2);
  }
  .dark .tco-cell--category {
    background: rgba(30, 41, 59, 0.95);
  }
}
.tco-category-title {
  font-size: 1.125rem;
  font-weight: 600;
  color: #0f172a;
  margin-bottom: 0.5rem;
  font-family: 'Inter', sans-serif;
}
.dark .tco-category-title {
  color: #ffffff;
}
.tco-category-description {
  font-size: 0.875rem;
  color: #475569;
  line-height: 1.5;
  opacity: 0.8;
}
.dark .tco-category-description {
  color: #94a3b8;
}
.tco-option-title {
  font-size: 0.95rem;
  font-weight: 700;
  margin-bottom: 0.25rem;
  font-family: 'Inter', sans-serif;
  line-height: 1.3;
}
.tco-option-subtitle {
  font-size: 0.875rem;
  font-weight: 600;
  margin-bottom: 0.75rem;
  opacity: 0.8;
  font-family: 'Inter', sans-serif;
}
.tco-cell--0 .tco-option-title {
  color: #dc2626;
}
.tco-cell--1 .tco-option-title {
  color: #2563eb;
}
.tco-cell--2 .tco-option-title {
  color: #059669;
}
.tco-cell--3 .tco-option-title {
  color: #f59e0b;
}
.tco-cell--4 .tco-option-title {
  color: #8b5cf6;
}
.tco-cell--0 .tco-option-subtitle {
  color: #dc2626;
}
.tco-cell--1 .tco-option-subtitle {
  color: #2563eb;
}
.tco-cell--2 .tco-option-subtitle {
  color: #059669;
}
.tco-cell--3 .tco-option-subtitle {
  color: #f59e0b;
}
.tco-cell--4 .tco-option-subtitle {
  color: #8b5cf6;
}
.dark .tco-cell--0 .tco-option-title {
  color: #fca5a5;
}
.dark .tco-cell--1 .tco-option-title {
  color: #93c5fd;
}
.dark .tco-cell--2 .tco-option-title {
  color: #6ee7b7;
}
.dark .tco-cell--3 .tco-option-title {
  color: #fbbf24;
}
.dark .tco-cell--4 .tco-option-title {
  color: #c4b5fd;
}
.dark .tco-cell--0 .tco-option-subtitle {
  color: #fca5a5;
}
.dark .tco-cell--1 .tco-option-subtitle {
  color: #93c5fd;
}
.dark .tco-cell--2 .tco-option-subtitle {
  color: #6ee7b7;
}
.dark .tco-cell--3 .tco-option-subtitle {
  color: #fbbf24;
}
.dark .tco-cell--4 .tco-option-subtitle {
  color: #c4b5fd;
}
.tco-option-items {
  list-style: none;
  padding: 0;
  margin: 0;
  font-size: 0.8rem;
  line-height: 1.4;
}
.tco-option-items li {
  position: relative;
  padding-left: 1rem;
  margin-bottom: 0.4rem;
  color: #374151;
}
.tco-option-items li::before {
  content: '•';
  position: absolute;
  left: 0;
  font-weight: bold;
}
.tco-cell--0 .tco-option-items li {
  color: #7f1d1d;
}
.tco-cell--1 .tco-option-items li {
  color: #1e3a8a;
}
.tco-cell--2 .tco-option-items li {
  color: #064e3b;
}
.tco-cell--3 .tco-option-items li {
  color: #92400e;
}
.tco-cell--4 .tco-option-items li {
  color: #581c87;
}
.dark .tco-option-items li {
  color: #d1d5db;
}
.dark .tco-cell--0 .tco-option-items li {
  color: #fca5a5;
}
.dark .tco-cell--1 .tco-option-items li {
  color: #93c5fd;
}
.dark .tco-cell--2 .tco-option-items li {
  color: #6ee7b7;
}
.dark .tco-cell--3 .tco-option-items li {
  color: #fbbf24;
}
.dark .tco-cell--4 .tco-option-items li {
  color: #c4b5fd;
}
.tco-table-row--total {
  border-top: 2px solid rgba(16, 185, 129, 0.3);
  background: rgba(16, 185, 129, 0.05);
}
.dark .tco-table-row--total {
  border-top-color: rgba(16, 185, 129, 0.4);
  background: rgba(16, 185, 129, 0.1);
}
.tco-cell--total-category {
  background: rgba(16, 185, 129, 0.1);
  font-weight: 600;
}
.dark .tco-cell--total-category {
  background: rgba(16, 185, 129, 0.15);
}
.tco-table-row--total .tco-category-title {
  font-weight: 700;
  color: #059669;
}
.dark .tco-table-row--total .tco-category-title {
  color: #10b981;
}
.tco-cell--total .tco-option-title {
  font-weight: 700;
}
.tco-cell--total .tco-option-subtitle {
  font-weight: 600;
}
.tco-impact-summary {
  background: rgba(255, 255, 255, 0.95);
  border: 1px solid rgba(255, 255, 255, 0.6);
  border-radius: 1.5rem;
  padding: 3rem 2rem;
  box-shadow: 0 20px 40px rgba(0, 0, 0, 0.08);
  -webkit-backdrop-filter: blur(15px);
          backdrop-filter: blur(15px);
  text-align: center;
  margin-top: 4rem;
}
.dark .tco-impact-summary {
  background: rgba(51, 65, 85, 0.6);
  border-color: rgba(255, 255, 255, 0.08);
  box-shadow: 0 20px 40px rgba(0, 0, 0, 0.2);
}
.tco-impact-title {
  font-size: 2rem;
  font-weight: 800;
  margin-bottom: 0.75rem;
  background: linear-gradient(135deg, #1e293b, #475569);
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  font-family: 'Inter', sans-serif;
}
.dark .tco-impact-title {
  background: linear-gradient(135deg, #ffffff, #e2e8f0);
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}
.tco-impact-description {
  font-size: 1.125rem;
  color: #475569;
  margin-bottom: 2.5rem;
  opacity: 0.9;
}
.dark .tco-impact-description {
  color: #94a3b8;
}
.tco-stats-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 1.5rem;
  margin-bottom: 2.5rem;
}
.tco-stat-card {
  background: rgba(255, 255, 255, 0.8);
  border: 1px solid rgba(255, 255, 255, 0.4);
  border-radius: 1rem;
  padding: 1.5rem 1rem;
  box-shadow: 0 8px 16px rgba(0, 0, 0, 0.04);
  -webkit-backdrop-filter: blur(8px);
          backdrop-filter: blur(8px);
  text-align: center;
  transition: all 0.3s ease;
}
.tco-stat-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 24px rgba(0, 0, 0, 0.08);
}
.dark .tco-stat-card {
  background: rgba(51, 65, 85, 0.4);
  border-color: rgba(255, 255, 255, 0.06);
  box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);
}
.dark .tco-stat-card:hover {
  box-shadow: 0 12px 24px rgba(0, 0, 0, 0.2);
}
.tco-stat-value {
  font-size: 2rem;
  font-weight: 800;
  margin-bottom: 0.5rem;
  background: linear-gradient(135deg, #059669, #10b981);
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  font-family: 'Inter', sans-serif;
  line-height: 1.2;
}
.dark .tco-stat-value {
  background: linear-gradient(135deg, #34d399, #10b981);
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}
.tco-stat-label {
  font-size: 0.875rem;
  font-weight: 600;
  color: #0f172a;
  margin-bottom: 0.25rem;
  font-family: 'Inter', sans-serif;
}
.dark .tco-stat-label {
  color: #ffffff;
}
.tco-stat-detail {
  font-size: 0.75rem;
  color: #475569;
  line-height: 1.4;
  opacity: 0.7;
}
.dark .tco-stat-detail {
  color: #94a3b8;
}
.tco-decision-summary {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 2rem;
  padding: 2rem;
  background: rgba(16, 185, 129, 0.05);
  border: 1px solid rgba(16, 185, 129, 0.1);
  border-radius: 1rem;
  margin: 0 auto;
  max-width: 600px;
}
.dark .tco-decision-summary {
  background: rgba(16, 185, 129, 0.1);
  border-color: rgba(16, 185, 129, 0.2);
}
@media (max-width: 640px) {
  .tco-decision-summary {
    flex-direction: column;
    gap: 1rem;
  }
}
.tco-decision-item {
  text-align: center;
  flex: 1;
}
.tco-decision-cost {
  display: block;
  font-size: 1.5rem;
  font-weight: 800;
  margin-bottom: 0.25rem;
  font-family: 'Inter', sans-serif;
}
.tco-decision-item--traditional .tco-decision-cost {
  color: #dc2626;
}
.tco-decision-item--switchblade .tco-decision-cost {
  color: #059669;
}
.tco-decision-label {
  display: block;
  font-size: 0.875rem;
  font-weight: 500;
  color: #475569;
  opacity: 0.8;
}
.dark .tco-decision-label {
  color: #94a3b8;
}
.tco-decision-arrow {
  font-size: 1.5rem;
  color: #059669;
  font-weight: bold;
  flex-shrink: 0;
}
@media (max-width: 640px) {
  .tco-decision-arrow {
    transform: rotate(90deg);
  }
}
.testimonial-card {
  background: rgb(var(--color-card));
  border: 0;
  border-radius: var(--radius-md);
  padding: var(--space-6);
  transition: transform var(--timing-fast) var(--ease-smooth),
              box-shadow var(--timing-fast) var(--ease-smooth);
  height: 100%;
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  box-shadow: var(--shadow-card);
}
.testimonial-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-card-hover);
}
.testimonial-card:active {
  transform: scale(0.98);
  box-shadow: var(--shadow-card-active);
}
.testimonial-card.testimonial-featured {
  background: rgba(var(--color-accent-heritage) / 0.02);
  box-shadow: inset 4px 0 0 rgb(var(--color-accent-heritage)),
    var(--shadow-card);
}
.testimonial-card.testimonial-featured:hover {
  background: rgba(var(--color-accent-heritage) / 0.04);
  transform: translateY(-2px);
  box-shadow: inset 4px 0 0 rgb(var(--color-accent-heritage)),
    var(--shadow-card-hover);
}
.testimonial-quote-wrapper {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  align-items: center;
  text-align: center;
}
.testimonial-card .icon-container-base {
  min-width: 48px;
  min-height: 48px;
}
.testimonial-quote {
  font-style: italic;
  margin: 0;
  color: rgb(var(--color-foreground));
  line-height: 1.6;
  text-align: center;
}
.testimonial-author-container {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-4);
  margin-top: auto;
  text-align: center;
}
.testimonial-avatar-wrapper {
  flex-shrink: 0;
  margin-bottom: var(--space-2);
}
.testimonial-avatar {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  -o-object-fit: cover;
     object-fit: cover;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
  min-width: 48px;
  min-height: 48px;
}
.testimonial-author-info {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  align-items: center;
}
.testimonial-author {
  font-style: normal;
  color: rgb(var(--color-foreground));
  margin: 0;
}
.testimonial-title {
  margin: 0;
  line-height: 1.4;
  color: rgb(var(--color-muted-foreground));
}
.testimonial-company {
  margin: 0;
  font-weight: 500;
  color: rgb(var(--color-muted-foreground));
}
.testimonial-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15);
}
.testimonial-card.testimonial-featured:hover {
  background: rgba(var(--color-accent-heritage) / 0.04);
  border-color: rgba(var(--color-accent-heritage) / 0.4);
  box-shadow: inset 4px 0 0 rgb(var(--color-accent-heritage)),
    0 8px 25px rgba(var(--color-accent-heritage) / 0.15);
}
.testimonial-card:active {
  transform: translateY(0);
}
.testimonial-quote-wrapper,
.testimonial-author-container {
  transform: translateZ(0);
}
@media (prefers-reduced-motion: reduce) {
  .testimonial-card,
  .testimonial-card:hover,
  .testimonial-card:active,
  .testimonial-quote-wrapper,
  .testimonial-author-container {
    transition: none !important;
    transform: none !important;
    animation: none !important;
  }
}
@media (prefers-contrast: high) {
  .testimonial-card {
    outline: 2px solid currentColor;
  }
  .testimonial-card.testimonial-featured {
    outline: 2px solid currentColor;
    box-shadow: inset 6px 0 0 currentColor,
      var(--shadow-card);
  }
}
@media (min-width: 640px) {
  .testimonial-card {
    padding: var(--space-8);
  }
  .testimonial-quote-wrapper {
    flex-direction: row;
    text-align: left;
    align-items: flex-start;
  }
  .testimonial-quote {
    text-align: left;
  }
  .testimonial-author-container {
    justify-content: flex-start;
    text-align: left;
  }
  .testimonial-author-info {
    align-items: flex-start;
  }
}
@media (min-width: 768px) {
  .testimonial-quote {
    font-size: 1.125rem;
    line-height: 1.7;
  }
  .testimonial-avatar {
    width: 56px;
    height: 56px;
    min-width: 56px;
    min-height: 56px;
  }
}
@media (min-width: 1024px) {
  .testimonial-quote-wrapper {
    gap: var(--space-6);
  }
  .testimonial-author-container {
    gap: var(--space-6);
  }
}
@media (min-width: 1280px) {
  .testimonial-card {
    padding: var(--space-12);
  }
}
@media print {
  .testimonial-card {
    box-shadow: none !important;
    border: 1px solid rgb(var(--color-border)) !important;
    page-break-inside: avoid;
  }
}
.theme-toggle {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.5rem;
  height: 2.5rem;
  border: 1px solid rgb(var(--color-border));
  border-radius: var(--radius-lg);
  background: rgb(var(--color-background));
  color: rgb(var(--color-muted-foreground));
  cursor: pointer;
  transition: var(--transition-colors);
}
.theme-toggle:hover {
  border-color: rgb(var(--color-primary));
  color: rgb(var(--color-primary));
  background: rgb(var(--color-primary) / 0.05);
}
.theme-toggle:focus {
  outline: 2px solid rgb(var(--color-primary));
  outline-offset: 2px;
}
.theme-toggle-icon {
  width: 1.25rem;
  height: 1.25rem;
  transition: var(--transition-colors);
}
.theme-toggle--light .theme-toggle-icon--sun {
  display: block;
}
.theme-toggle--light .theme-toggle-icon--moon {
  display: none;
}
.theme-toggle--dark .theme-toggle-icon--sun {
  display: none;
}
.theme-toggle--dark .theme-toggle-icon--moon {
  display: block;
}
.floating-theme-toggle {
  position: fixed;
  top: 1rem;
  right: 1rem;
  z-index: 50;
}
@media (min-width: 1024px) {
  .floating-theme-toggle {
    top: 1.5rem;
    right: 1.5rem;
  }
}
@media (max-width: 768px) {
  .theme-toggle {
    width: 2.25rem;
    height: 2.25rem;
  }
  .theme-toggle-icon {
    width: 1rem;
    height: 1rem;
  }
}
.timeline-container {
  position: relative;
  width: 100%;
}
.timeline-spacing-wrapper {
  margin-top: var(--space-16);
  padding-bottom: var(--space-8);
}
.timeline-header {
  margin-bottom: var(--space-72);
  padding-bottom: var(--space-8);
}
.timeline-horizontal {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: var(--space-8);
  position: relative;
  width: 100%;
  padding: var(--space-6) 0;
}
.timeline-horizontal .timeline-step {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}
.timeline-horizontal .timeline-step-wrapper {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 100%;
  position: relative;
}
.timeline-horizontal .timeline-step-indicator {
  position: relative;
  margin-bottom: var(--space-4);
  z-index: 2;
}
.timeline-horizontal .timeline-step-content {
  max-width: 280px;
}
.timeline-horizontal.timeline-connected .timeline-connector {
  position: absolute;
  top: 32px;
  left: calc(100% + var(--space-4));
  width: var(--space-8);
  height: 2px;
  background: rgb(var(--color-border));
  z-index: 1;
}
.timeline-horizontal.timeline-connected .timeline-connector::before {
  content: '';
  position: absolute;
  right: -4px;
  top: -2px;
  width: 0;
  height: 0;
  border-left: 6px solid rgb(var(--color-border));
  border-top: 3px solid transparent;
  border-bottom: 3px solid transparent;
}
.timeline-vertical {
  display: flex;
  flex-direction: column;
  position: relative;
  padding-left: var(--space-8);
}
.timeline-vertical .timeline-step {
  position: relative;
  margin-bottom: var(--space-12);
}
.timeline-vertical .timeline-step:last-child {
  margin-bottom: 0;
}
.timeline-vertical .timeline-step-wrapper {
  display: flex;
  align-items: flex-start;
  gap: var(--space-6);
}
.timeline-vertical .timeline-step-indicator {
  position: relative;
  flex-shrink: 0;
  z-index: 2;
}
.timeline-vertical .timeline-step-content {
  flex: 1;
  padding-top: var(--space-2);
}
.timeline-vertical.timeline-connected .timeline-connector {
  position: absolute;
  left: 32px;
  top: calc(100% - var(--space-2));
  width: 2px;
  height: var(--space-12);
  background: rgb(var(--color-border));
  z-index: 1;
}
.timeline-vertical.timeline-connected .timeline-step:last-child .timeline-connector {
  display: none;
}
.timeline-step-number {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 600;
  font-size: var(--font-size-lg);
  transition: all var(--timing-fast) var(--easing-standard);
  position: relative;
  box-shadow: 0 2px 8px rgba(var(--color-shadow) / 0.1);
}
.timeline-step-number-primary {
  background: rgb(var(--color-primary));
  color: white;
}
.timeline-step-number-secondary {
  background: rgb(var(--color-secondary));
  color: white;
}
.timeline-step-number-success {
  background: rgb(var(--color-success));
  color: white;
}
.timeline-step-number-warning {
  background: rgb(var(--color-warning));
  color: white;
}
.timeline-step-number-heritage {
  background: rgb(var(--color-accent-heritage));
  color: white;
  margin: calc(var(--space-4) * 1.3) 0;
  box-shadow: 0 4px 12px rgba(var(--color-accent-heritage) / 0.3);
}
.timeline-step-icon {
  width: 24px;
  height: 24px;
  flex-shrink: 0;
}
.timeline-step-number:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 16px rgba(var(--color-shadow) / 0.15);
}
.timeline-step-number-heritage:hover {
  box-shadow: 0 8px 20px rgba(var(--color-accent-heritage) / 0.4);
}
.timeline-step-title {
  margin-bottom: var(--space-2);
  color: rgb(var(--color-foreground));
}
.timeline-step-description {
  color: rgb(var(--color-muted-foreground));
  line-height: 1.6;
}
.timeline-annotation {
  position: absolute;
  top: -8px;
  left: calc(100% + var(--space-3));
  background: rgb(var(--color-card));
  border: 1px solid rgb(var(--color-border));
  border-radius: var(--radius-md);
  padding: var(--space-2) var(--space-3);
  font-size: var(--font-size-sm);
  color: rgb(var(--color-muted-foreground));
  white-space: nowrap;
  box-shadow: 0 4px 12px rgba(var(--color-shadow) / 0.1);
  z-index: 3;
  opacity: 0;
  transform: translateX(-8px);
  transition: all var(--timing-fast) var(--ease-smooth);
  pointer-events: none;
}
.timeline-annotation::before {
  content: '';
  position: absolute;
  left: -6px;
  top: 50%;
  transform: translateY(-50%);
  width: 0;
  height: 0;
  border: 6px solid transparent;
  border-right-color: rgb(var(--color-card));
}
.timeline-annotation::after {
  content: '';
  position: absolute;
  left: -7px;
  top: 50%;
  transform: translateY(-50%);
  width: 0;
  height: 0;
  border: 6px solid transparent;
  border-right-color: rgb(var(--color-border));
  z-index: -1;
}
.timeline-step-indicator:hover .timeline-annotation {
  opacity: 1;
  transform: translateX(0);
}
.timeline-step-completed .timeline-step-number {
  background: rgb(var(--color-success));
  color: white;
}
.timeline-step-current .timeline-step-number {
  background: rgb(var(--color-accent-heritage));
  color: white;
  box-shadow: 0 0 0 4px rgba(var(--color-accent-heritage) / 0.2);
  animation: timeline-pulse 2s infinite;
}
.timeline-step-upcoming .timeline-step-number {
  background: rgb(var(--color-muted));
  color: rgb(var(--color-muted-foreground));
}
@keyframes timeline-pulse {
  0%, 100% {
    box-shadow: 0 0 0 4px rgba(var(--color-accent-heritage) / 0.2);
  }
  50% {
    box-shadow: 0 0 0 8px rgba(var(--color-accent-heritage) / 0.1);
  }
}
@media (max-width: 767px) {
  .timeline-horizontal {
    display: flex;
    flex-direction: column;
    padding-left: var(--space-6);
  }
  .timeline-horizontal .timeline-step {
    align-items: flex-start;
    text-align: left;
    margin-bottom: var(--space-10);
  }
  .timeline-horizontal .timeline-step:last-child {
    margin-bottom: 0;
  }
  .timeline-horizontal .timeline-step-wrapper {
    flex-direction: row;
    align-items: flex-start;
    gap: var(--space-4);
  }
  .timeline-horizontal .timeline-step-indicator {
    margin-bottom: 0;
    flex-shrink: 0;
  }
  .timeline-horizontal .timeline-step-content {
    max-width: none;
    flex: 1;
    padding-top: var(--space-1);
  }
  .timeline-horizontal.timeline-connected .timeline-connector {
    left: 32px;
    top: calc(100% - var(--space-2));
    width: 2px;
    height: var(--space-10);
    background: rgb(var(--color-border));
  }
  .timeline-horizontal.timeline-connected .timeline-connector::before {
    display: none;
  }
  .timeline-horizontal.timeline-connected .timeline-step:last-child .timeline-connector {
    display: none;
  }
  .timeline-step-number {
    width: 48px;
    height: 48px;
    font-size: var(--font-size-base);
  }
  .timeline-step-icon {
    width: 20px;
    height: 20px;
  }
  .timeline-annotation {
    position: fixed;
    top: auto;
    bottom: var(--space-4);
    left: 50%;
    transform: translateX(-50%);
    white-space: normal;
    max-width: calc(100vw - var(--space-8));
    text-align: center;
  }
  .timeline-annotation::before,
  .timeline-annotation::after {
    left: 50%;
    top: auto;
    bottom: -6px;
    transform: translateX(-50%);
    border-right-color: transparent;
    border-top-color: rgb(var(--color-card));
  }
  .timeline-annotation::after {
    bottom: -7px;
    border-top-color: rgb(var(--color-border));
  }
  .timeline-step-indicator {
    min-width: 48px;
    min-height: 48px;
    display: flex;
    align-items: center;
    justify-content: center;
  }
}
@media (min-width: 768px) {
  .timeline-horizontal {
    display: grid !important;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)) !important;
    gap: var(--space-8);
    position: relative;
    width: 100%;
    padding: var(--space-6) 0;
  }
  .timeline-horizontal .timeline-step {
    align-items: center;
    text-align: center;
    margin-bottom: 0;
  }
  .timeline-horizontal .timeline-step-wrapper {
    flex-direction: column;
    align-items: center;
  }
  .timeline-horizontal .timeline-step-indicator {
    margin-bottom: var(--space-4);
  }
  .timeline-horizontal .timeline-step-content {
    max-width: 280px;
    padding-top: 0;
  }
  .timeline-horizontal.timeline-connected .timeline-connector {
    position: absolute;
    top: 32px;
    left: calc(100% + var(--space-4));
    width: var(--space-8);
    height: 2px;
    background: rgb(var(--color-border));
  }
  .timeline-horizontal.timeline-connected .timeline-connector::before {
    content: '';
    position: absolute;
    right: -4px;
    top: -2px;
    width: 0;
    height: 0;
    border-left: 6px solid rgb(var(--color-border));
    border-top: 3px solid transparent;
    border-bottom: 3px solid transparent;
    display: block;
  }
}
@media (min-width: 1024px) {
  .timeline-horizontal {
    gap: var(--space-10);
  }
  .timeline-horizontal .timeline-step-content {
    max-width: 320px;
  }
  .timeline-step-number {
    width: 72px;
    height: 72px;
    font-size: var(--font-size-xl);
  }
}
@media (min-width: 1280px) {
  .timeline-horizontal {
    gap: var(--space-12);
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  }
  .timeline-horizontal .timeline-step-content {
    max-width: 360px;
  }
  .timeline-step-number {
    width: 80px;
    height: 80px;
  }
  .timeline-horizontal .timeline-step-indicator {
    margin-bottom: var(--space-6);
  }
}
@media (min-width: 2560px) {
  .timeline-horizontal {
    gap: var(--space-16);
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    max-width: none;
  }
  .timeline-horizontal .timeline-step-content {
    max-width: 420px;
  }
  .timeline-step-number {
    width: 96px;
    height: 96px;
    font-size: var(--font-size-2xl);
  }
  .timeline-horizontal .timeline-step-indicator {
    margin-bottom: var(--space-8);
  }
  .timeline-step-title {
    font-size: var(--font-size-xl);
    margin-bottom: var(--space-4);
  }
  .timeline-step-description {
    font-size: var(--font-size-lg);
    line-height: 1.7;
  }
  .timeline-container {
    max-width: 2400px;
    margin: 0 auto;
  }
}
@media (min-width: 3840px) {
  .timeline-horizontal {
    gap: calc(var(--spacing) * 20);
    grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
    padding: 0 var(--space-16);
  }
  .timeline-horizontal .timeline-step-content {
    max-width: 500px;
  }
  .timeline-step-number {
    width: 120px;
    height: 120px;
    font-size: var(--font-size-3xl);
    box-shadow: 0 8px 32px rgba(var(--color-shadow) / 0.15);
  }
  .timeline-horizontal .timeline-step-indicator {
    margin-bottom: var(--space-12);
  }
  .timeline-step-title {
    font-size: var(--font-size-2xl);
    margin-bottom: var(--space-6);
    font-weight: 600;
    letter-spacing: -0.02em;
  }
  .timeline-step-description {
    font-size: var(--font-size-xl);
    line-height: 1.8;
    max-width: 480px;
    margin: 0 auto;
  }
  .timeline-container {
    max-width: 3600px;
    padding: 0 var(--space-20);
  }
  .timeline-horizontal.timeline-connected .timeline-connector {
    height: 3px;
    width: var(--space-12);
    background: linear-gradient(
      to right, 
      transparent 0%, 
      rgb(var(--color-border)) 20%, 
      rgb(var(--color-border)) 80%, 
      transparent 100%
    );
  }
  .timeline-step-number:hover {
    transform: translateY(-4px);
    box-shadow: 0 16px 48px rgba(var(--color-shadow) / 0.2);
  }
  .timeline-step-number-heritage:hover {
    box-shadow: 0 16px 48px rgba(var(--color-accent-heritage) / 0.4);
  }
  .timeline-annotation {
    font-size: var(--font-size-base);
    padding: var(--space-3) var(--space-4);
    border-radius: var(--radius-lg);
    max-width: 320px;
    box-shadow: 0 8px 32px rgba(var(--color-shadow) / 0.15);
  }
}
@media (min-width: 7680px) {
  .timeline-horizontal {
    gap: calc(var(--spacing) * 24);
    grid-template-columns: repeat(auto-fit, minmax(500px, 1fr));
    padding: 0 var(--space-24);
  }
  .timeline-horizontal .timeline-step-content {
    max-width: 600px;
  }
  .timeline-step-number {
    width: 160px;
    height: 160px;
    font-size: var(--font-size-4xl);
    box-shadow: 0 12px 48px rgba(var(--color-shadow) / 0.18);
  }
  .timeline-horizontal .timeline-step-indicator {
    margin-bottom: var(--space-16);
  }
  .timeline-step-title {
    font-size: var(--font-size-3xl);
    font-weight: 600;
    letter-spacing: -0.025em;
    margin-bottom: var(--space-8);
  }
  .timeline-step-description {
    font-size: var(--font-size-2xl);
    line-height: 1.7;
    max-width: 580px;
    margin: 0 auto;
  }
  .timeline-container {
    max-width: 7200px;
    padding: 0 var(--space-32);
  }
  .timeline-step-number:hover {
    transform: translateY(-6px);
    box-shadow: 0 24px 64px rgba(var(--color-shadow) / 0.25);
  }
  .timeline-step-number-heritage:hover {
    box-shadow: 0 24px 64px rgba(var(--color-accent-heritage) / 0.45);
  }
  .timeline-horizontal.timeline-connected .timeline-connector {
    height: 4px;
    width: var(--space-16);
    background: linear-gradient(
      to right,
      transparent 0%,
      rgba(var(--color-border) / 0.3) 10%,
      rgb(var(--color-border)) 25%,
      rgb(var(--color-border)) 75%,
      rgba(var(--color-border) / 0.3) 90%,
      transparent 100%
    );
  }
  .timeline-annotation {
    font-size: var(--font-size-lg);
    padding: var(--space-4) var(--space-6);
    border-radius: var(--radius-xl);
    max-width: 400px;
    box-shadow: 0 12px 48px rgba(var(--color-shadow) / 0.18);
    -webkit-backdrop-filter: blur(8px);
            backdrop-filter: blur(8px);
  }
}
@media (prefers-contrast: high) {
  .timeline-step-number {
    border: 2px solid currentColor;
  }
  .timeline-connector {
    background: currentColor;
  }
  .timeline-annotation {
    border: 2px solid currentColor;
    background: rgb(var(--color-background));
  }
}
@media (prefers-reduced-motion: reduce) {
  .timeline-step-number,
  .timeline-annotation {
    transition: none;
  }
  .timeline-step-current .timeline-step-number {
    animation: none;
  }
  .timeline-annotation {
    opacity: 1;
    transform: none;
  }
}
.timeline-step-number:focus {
  outline: 2px solid rgb(var(--color-focus));
  outline-offset: 2px;
}
.timeline-step[aria-current="step"] .timeline-step-number {
  background: rgb(var(--color-accent-heritage));
  color: white;
}
.timeline-step-number,
.timeline-annotation {
  will-change: transform, opacity;
  backface-visibility: hidden;
  transform-style: preserve-3d;
}
.timeline-step-number:not(:hover),
.timeline-annotation:not(:hover) {
  will-change: auto;
}
.trust-banner {
  padding: var(--spacing-lg) 0;
  background: var(--color-surface-default);
  border-top: 1px solid var(--color-border);
  border-bottom: 1px solid var(--color-border);
  position: relative;
  overflow: hidden;
}
.trust-banner-inner {
  max-width: var(--container-max-width);
  margin: 0 auto;
  padding: 0 var(--spacing-base);
}
.trust-banner-title {
  text-align: center;
  margin-bottom: var(--spacing-md);
  color: var(--color-text-primary);
}
.trust-banner-logos--grid {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: var(--spacing-md);
  align-items: center;
  justify-items: center;
}
.trust-banner-carousel {
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  -ms-overflow-style: none;
}
.trust-banner-carousel::-webkit-scrollbar {
  display: none;
}
.trust-banner-logos--carousel {
  display: flex;
  gap: var(--spacing-lg);
  padding: var(--spacing-sm) 0;
}
.trust-banner-logo-item {
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all var(--transition-base);
}
.trust-banner-logos--carousel .trust-banner-logo-item {
  flex: 0 0 auto;
  min-width: 120px;
}
.trust-banner-logo {
  max-width: 100%;
  height: auto;
  -o-object-fit: contain;
     object-fit: contain;
  transition: all var(--transition-base);
  opacity: 0.7;
}
.trust-banner-logo-link {
  display: flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
}
.trust-banner-logo-link:hover .trust-banner-logo {
  opacity: 1;
  transform: scale(1.05);
}
.trust-banner-logo-item--sm {
  max-height: 40px;
}
.trust-banner-logo-item--sm .trust-banner-logo {
  max-height: 40px;
}
.trust-banner-logo-item--base {
  max-height: 50px;
}
.trust-banner-logo-item--base .trust-banner-logo {
  max-height: 50px;
}
.trust-banner-logo-item--lg {
  max-height: 60px;
}
.trust-banner-logo-item--lg .trust-banner-logo {
  max-height: 60px;
}
.trust-banner--grayscale .trust-banner-logo {
  filter: grayscale(100%);
}
.trust-banner--grayscale .trust-banner-logo:hover {
  filter: grayscale(0%);
}
.trust-banner-empty {
  text-align: center;
  padding: var(--spacing-xl) 0;
  color: var(--color-text-muted);
  font-style: italic;
}
@media (max-width: 1023px) {
  .trust-banner-logos--grid {
    grid-template-columns: repeat(4, 1fr);
  }
}
@media (max-width: 767px) {
  .trust-banner {
    padding: var(--spacing-md) 0;
  }
  .trust-banner-inner {
    padding: 0 var(--spacing-sm);
  }
  .trust-banner-logos--grid {
    display: flex;
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    -ms-overflow-style: none;
    gap: var(--spacing-md);
    padding: var(--spacing-sm) 0;
  }
  .trust-banner-logos--grid::-webkit-scrollbar {
    display: none;
  }
  .trust-banner-logos--grid .trust-banner-logo-item {
    flex: 0 0 auto;
    min-width: 100px;
  }
}
.trust-banner.pwa-scroll-section {
  animation: none;
}
.trust-banner .pwa-scroll-fade {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.6s ease-out, transform 0.6s ease-out;
  transition-delay: calc(var(--stagger-index, 0) * 50ms);
}
.trust-banner.pwa-in-view .pwa-scroll-fade {
  opacity: 1;
  transform: translateY(0);
}
@media print {
  .trust-banner {
    border-top: 1px solid #ddd;
    border-bottom: 1px solid #ddd;
  }
  .trust-banner-logo {
    opacity: 1;
    filter: none;
  }
}
@media (prefers-color-scheme: dark) {
  .trust-banner {
    background: var(--color-surface-dark, #1a1a1a);
    border-color: var(--color-border-dark, #333);
  }
  .trust-banner-title {
    color: var(--color-text-dark, #fff);
  }
  .trust-banner-logo {
    opacity: 0.8;
  }
}
@media (prefers-contrast: high) {
  .trust-banner {
    border-width: 2px;
  }
  .trust-banner-logo {
    opacity: 1;
  }
}
@media (prefers-reduced-motion: reduce) {
  .trust-banner-logo,
  .trust-banner-logo-item,
  .trust-banner .pwa-scroll-fade {
    transition: none;
    animation: none;
  }
}
.use-case-section {
  padding: calc(var(--space-32) * 1.3) 0;
  background: rgb(var(--color-background));
  color: rgb(var(--color-foreground));
  transition: background-color var(--timing-fast) var(--ease-smooth);
}
.use-case-container {
  max-width: 1280px;
  margin: 0 auto;
  padding: var(--space-4) var(--space-6);
}
.use-case-header {
  text-align: center;
  margin-bottom: calc(var(--space-16) * 1.3);
}
.use-case-title {
  margin-bottom: calc(var(--space-4) * 1.3);
}
.use-case-subtitle {
  margin-bottom: calc(var(--space-3) * 1.3);
}
.use-case-description {
  margin-bottom: calc(var(--space-6) * 1.3);
}
.use-case-icon {
  margin-bottom: calc(var(--space-4) * 1.3);
  display: flex;
  justify-content: center;
  align-items: center;
}
.use-case-item-title {
  margin-bottom: calc(var(--space-3) * 1.3);
}
.use-case-item-subtitle {
  margin-bottom: calc(var(--space-2) * 1.3);
}
.use-case-item-description {
  margin-bottom: calc(var(--space-4) * 1.3);
  flex-grow: 1;
  line-height: 1.6;
}
ul.use-case-benefits {
  list-style: none !important;
  padding: 0 !important;
  margin: calc(var(--space-4) * 1.3) auto 0 auto !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: flex-start !important;
  gap: calc(var(--space-2) * 1.3) !important;
  width: 100% !important;
  text-align: left !important;
}
li.use-case-benefit {
  display: flex !important;
  align-items: flex-start !important;
  gap: calc(var(--space-2) * 1.3);
  color: rgb(var(--color-muted-foreground));
  font-size: max(0.875rem, 14px);
  line-height: 1.5;
  width: 100%;
  text-align: left !important;
  justify-content: flex-start;
  margin: 0;
  padding: 0;
  list-style: none !important;
}
.use-case-benefit:last-child {
  margin-bottom: 0;
}
.use-case-benefit-icon {
  flex-shrink: 0;
  color: rgb(var(--color-success));
  width: 16px;
  height: 16px;
  margin-top: 0.125rem;
}
.use-case-benefit span {
  flex: 1;
  line-height: 1.5;
}
.use-case-item-card {
  background: rgb(var(--color-card));
  border: 0;
  border-radius: var(--radius-lg);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
  height: 100%;
  display: flex;
  flex-direction: column;
  padding: calc(var(--space-6) * 1.3);
  transition: all var(--timing-fast) var(--ease-smooth);
  transform: translateZ(0);
  will-change: transform, box-shadow;
}
.use-case-item-card:not(:hover):not(:focus) {
  will-change: auto;
}
.use-case-item-card .card-body {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: calc(var(--space-3) * 1.3);
}
.use-case-item-card.use-case-transparent {
  background: transparent;
  box-shadow: none;
  border: 0;
}
.use-case-item-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 8px 25px rgba(0, 0, 0, 0.12);
  border: 0;
}
.use-case-item-card:active {
  transform: scale(0.98) translateY(-2px);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}
.use-case-card-featured {
  box-shadow: inset 4px 0 0 rgb(var(--color-accent-heritage)), 
    0 1px 3px rgba(0, 0, 0, 0.05);
  padding-left: calc(var(--space-6) * 1.3 + var(--space-2));
  background: rgba(var(--color-accent-heritage) / 0.02);
  margin: calc(var(--space-8) * 1.3) 0;
}
.use-case-card-featured:hover {
  box-shadow: inset 4px 0 0 rgb(var(--color-accent-heritage)),
    0 8px 25px rgba(0, 0, 0, 0.12);
  background: rgba(var(--color-accent-heritage) / 0.04);
}
@media (max-width: 767px) {
  .use-case-section {
    padding: calc(var(--space-24) * 1.3) 0;
  }
  .use-case-container {
    padding: 0 var(--space-4);
  }
  .use-case-header {
    margin-bottom: calc(var(--space-12) * 1.3);
  }
  .use-case-item-card {
    padding: calc(var(--space-4) * 1.3);
  }
  .use-case-item-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
  }
}
@media (max-width: 767px) {
  .use-case-item-card {
    min-height: 48px;
    display: flex;
    flex-direction: column;
  }
  li.use-case-benefit {
    min-height: 32px;
    align-items: flex-start !important;
    display: flex !important;
    text-align: left !important;
    list-style: none !important;
  }
}
@media (min-width: 768px) and (max-width: 1023px) {
  .use-case-item-card {
    padding: calc(var(--space-6) * 1.2);
  }
}
@media (min-width: 2560px) {
  .use-case-item-card {
    padding: calc(var(--space-8) * 1.3);
    border-radius: var(--radius-xl);
  }
  .use-case-item-card:hover {
    transform: translateY(-6px);
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.15);
  }
}
@media (prefers-contrast: high) {
  .use-case-item-card {
    outline: 2px solid currentColor;
    outline-offset: -2px;
  }
  .use-case-card-featured {
    outline: 2px solid rgb(var(--color-accent-heritage));
    outline-offset: -2px;
  }
}
@media (prefers-reduced-motion: reduce) {
  .use-case-item-card {
    transition-duration: 0.01ms !important;
    animation: none !important;
  }
  .use-case-item-card:hover,
  .use-case-item-card:active {
    transform: none !important;
  }
}
.use-case-item-card:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(var(--color-focus) / 0.5), 
    0 1px 3px rgba(0, 0, 0, 0.05);
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}
.video-demo {
  padding: var(--spacing-lg) 0;
  width: 100%;
}
.video-demo-inner {
  max-width: 800px;
  margin: 0 auto;
  padding: 0 var(--spacing-base);
}
.video-demo-title {
  text-align: center;
  margin-bottom: var(--spacing-sm);
  color: var(--color-text-primary);
}
.video-demo-description {
  text-align: center;
  margin-bottom: var(--spacing-md);
  color: var(--color-text-secondary);
  max-width: 600px;
  margin-left: auto;
  margin-right: auto;
}
.video-demo-container {
  position: relative;
  width: 100%;
  overflow: hidden;
  border-radius: var(--radius-lg);
  background: var(--color-surface-muted);
  box-shadow: 0 10px 40px rgba(0, 0, 0, 0.1);
}
.video-demo--aspect-16-9 {
  aspect-ratio: 16 / 9;
}
.video-demo--aspect-4-3 {
  aspect-ratio: 4 / 3;
}
.video-demo--aspect-1-1 {
  aspect-ratio: 1 / 1;
}
.video-demo-embed,
.video-demo-player {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border: 0;
}
.video-demo-fallback {
  position: relative;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--color-surface-dark);
}
.video-demo-thumbnail {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
}
.video-demo-play-button {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background: rgba(224, 75, 56, 0.95);
  border: none;
  border-radius: 50%;
  width: 80px;
  height: 80px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: all var(--transition-base);
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
}
.video-demo-play-button:hover {
  transform: translate(-50%, -50%) scale(1.1);
  background: rgba(224, 75, 56, 1);
  box-shadow: 0 6px 30px rgba(0, 0, 0, 0.4);
}
.video-demo-play-button:active {
  transform: translate(-50%, -50%) scale(0.95);
}
.video-demo-play-button .icon-play {
  margin-left: 4px;
}
.video-demo-loading {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  background: var(--color-surface-muted);
  gap: var(--spacing-sm);
}
.video-demo-loading .spinner {
  animation: spin 1s linear infinite;
}
@keyframes spin {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}
.video-demo-cta {
  position: absolute;
  bottom: var(--spacing-base);
  right: var(--spacing-base);
  z-index: 10;
}
.video-demo--sm .video-demo-inner {
  max-width: 640px;
}
.video-demo--base .video-demo-inner {
  max-width: 800px;
}
.video-demo--lg .video-demo-inner {
  max-width: 1024px;
}
.video-demo--full .video-demo-inner {
  max-width: 100%;
}
@media (max-width: 767px) {
  .video-demo {
    padding: var(--spacing-md) 0;
  }
  .video-demo-inner {
    padding: 0 var(--spacing-sm);
  }
  .video-demo-title {
    font-size: var(--font-size-lg);
  }
  .video-demo-description {
    font-size: var(--font-size-sm);
  }
  .video-demo-container {
    border-radius: var(--radius-base);
  }
  .video-demo-play-button {
    width: 60px;
    height: 60px;
  }
  .video-demo-cta {
    position: static;
    margin-top: var(--spacing-base);
    text-align: center;
  }
}
@media (min-width: 768px) and (max-width: 1023px) {
  .video-demo-play-button {
    width: 70px;
    height: 70px;
  }
}
.video-demo.pwa-scroll-section {
  animation: none;
}
.video-demo .pwa-scroll-fade {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.6s ease-out, transform 0.6s ease-out;
  transition-delay: calc(var(--stagger-index, 0) * 100ms);
}
.video-demo.pwa-in-view .pwa-scroll-fade {
  opacity: 1;
  transform: translateY(0);
}
@media print {
  .video-demo-container {
    border: 1px solid #ddd;
    box-shadow: none;
  }
  .video-demo-play-button,
  .video-demo-cta {
    display: none;
  }
}
@media (prefers-color-scheme: dark) {
  .video-demo-container {
    background: var(--color-surface-dark, #1a1a1a);
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.5);
  }
  .video-demo-fallback {
    background: var(--color-surface-darker, #0a0a0a);
  }
}
@media (prefers-reduced-motion: reduce) {
  .video-demo-play-button,
  .video-demo .pwa-scroll-fade {
    transition: none;
    animation: none;
  }
  .video-demo-loading .spinner {
    animation: none;
  }
}
:root {
  --color-primary: 71 85 105;
  --color-primary-foreground: 255 255 255;
  --color-primary-50: 248 250 252;
  --color-primary-100: 241 245 249;
  --color-primary-200: 226 232 240;
  --color-primary-300: 203 213 225;
  --color-primary-400: 148 163 184;
  --color-primary-500: 100 116 139;
  --color-primary-600: 71 85 105;
  --color-primary-700: 51 65 85;
  --color-primary-800: 30 41 59;
  --color-primary-900: 15 23 42;
  --color-primary-950: 2 6 23;
  --color-accent-heritage: 205 92 92;
  --color-accent-heritage-foreground: 255 255 255;
  --color-accent-heritage-50: 254 242 242;
  --color-accent-heritage-100: 254 229 229;
  --color-accent-heritage-200: 254 202 202;
  --color-accent-heritage-300: 252 165 165;
  --color-accent-heritage-400: 248 113 113;
  --color-accent-heritage-500: 239 68 68;
  --color-accent-heritage-600: 220 38 38;
  --color-accent-heritage-700: 185 28 28;
  --color-accent-heritage-800: 153 27 27;
  --color-accent-heritage-900: 127 29 29;
  --red-primary-usage: 10%;
  --red-accent-usage: 5%;
  --red-subtle-usage: 2%;
  --space-heritage-xs: 0.75rem;
  --space-heritage-sm: 1.5rem;
  --space-heritage-md: 2.5rem;
  --space-heritage-lg: 4rem;
  --space-heritage-xl: 6rem;
  --btn-heritage-padding-x: 1.5rem;
  --btn-heritage-margin: 1.5rem;
  --text-heritage-spacing: 1.25rem;
  --card-heritage-margin: 2rem;
  --color-secondary: 30 58 138;
  --color-secondary-foreground: 255 255 255;
  --color-secondary-50: 239 246 255;
  --color-secondary-100: 219 234 254;
  --color-secondary-200: 191 219 254;
  --color-secondary-300: 147 197 253;
  --color-secondary-400: 96 165 250;
  --color-secondary-500: 59 130 246;
  --color-secondary-600: 37 99 235;
  --color-secondary-700: 29 78 216;
  --color-secondary-800: 30 64 175;
  --color-secondary-900: 30 58 138;
  --color-success: 16 185 129;
  --color-success-foreground: 255 255 255;
  --color-warning: 245 158 11;
  --color-warning-foreground: 0 0 0;
  --color-error: 185 28 28;
  --color-error-foreground: 255 255 255;
  --color-info: 59 130 246;
  --color-info-foreground: 255 255 255;
  --color-background: 255 255 255;
  --color-foreground: 15 23 42;
  --color-muted: 241 245 249;
  --color-muted-foreground: 100 116 139;
  --color-border: 226 232 240;
  --color-ring: 71 85 105;
  --font-family-sans: 'Inter', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --font-family-display: 'Space Grotesk', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --font-family-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, "SF Mono", Consolas, "Liberation Mono", Menlo, monospace;
  --font-size-xs: 0.75rem;
  --font-size-sm: 0.875rem;
  --font-size-base: 1rem;
  --font-size-lg: 1.125rem;
  --font-size-xl: 1.25rem;
  --font-size-2xl: 1.5rem;
  --font-size-3xl: 1.875rem;
  --font-size-4xl: 2.25rem;
  --font-size-5xl: 3rem;
  --font-size-6xl: 3.75rem;
  --font-size-7xl: 4.5rem;
  --font-size-8xl: 6rem;
  --font-size-9xl: 8rem;
  --text-hero: clamp(3rem, 8vw, 7rem);
  --text-display: clamp(2.5rem, 6vw, 5rem);
  --text-headline: clamp(2rem, 4vw, 3.5rem);
  --font-size-base-mobile: clamp(0.875rem, 2vw + 0.5rem, 1.125rem);
  --font-size-hero-mobile: clamp(2rem, 5vw + 1rem, 4.5rem);
  --font-size-h1-mobile: clamp(1.75rem, 4vw + 0.5rem, 3rem);
  --font-size-h2-mobile: clamp(1.5rem, 3vw + 0.5rem, 2.25rem);
  --font-size-h3-mobile: clamp(1.25rem, 2vw + 0.5rem, 1.75rem);
  --font-size-small-min: max(0.875rem, 14px);
  --font-size-tiny-min: max(0.75rem, 12px);
  --font-weight-extralight: 200;
  --font-weight-light: 300;
  --font-weight-normal: 400;
  --font-weight-medium: 500;
  --font-weight-semibold: 600;
  --font-weight-bold: 700;
  --font-weight-extrabold: 800;
  --font-weight-hero-mobile: 300;
  --font-weight-heading-mobile: 500;
  --font-weight-body-mobile: 400;
  --font-weight-bold-mobile: 600;
  --font-weight-heritage-mobile: 700;
  --font-weight-hero-desktop: 200;
  --font-weight-heading-desktop: 300;
  --font-weight-body-desktop: 400;
  --font-weight-bold-desktop: 500;
  --font-weight-heritage-desktop: 600;
  --line-height-none: 1;
  --line-height-tight: 1.2;
  --line-height-snug: 1.4;
  --line-height-normal: 1.6;
  --line-height-relaxed: 1.8;
  --line-height-loose: 2;
  --line-height-tight-mobile: 1.3;
  --line-height-base-mobile: 1.6;
  --line-height-loose-mobile: 1.8;
  --letter-spacing-tighter: -0.05em;
  --letter-spacing-tight: -0.025em;
  --letter-spacing-normal: 0;
  --letter-spacing-wide: 0.025em;
  --letter-spacing-wider: 0.05em;
  --letter-spacing-widest: 0.1em;
  --space-0: 0;
  --space-px: 1px;
  --space-0-5: 0.125rem;
  --space-1: 0.25rem;
  --space-1-5: 0.375rem;
  --space-2: 0.5rem;
  --space-2-5: 0.625rem;
  --space-3: 0.75rem;
  --space-3-5: 0.875rem;
  --space-4: 1rem;
  --space-5: 1.25rem;
  --space-6: 1.5rem;
  --space-7: 1.75rem;
  --space-8: 2rem;
  --space-9: 2.25rem;
  --space-10: 2.5rem;
  --space-11: 2.75rem;
  --space-12: 3rem;
  --space-14: 3.5rem;
  --space-16: 4rem;
  --space-20: 5rem;
  --space-24: 6rem;
  --space-28: 7rem;
  --space-32: 8rem;
  --space-36: 9rem;
  --space-40: 10rem;
  --space-44: 11rem;
  --space-48: 12rem;
  --space-52: 13rem;
  --space-56: 14rem;
  --space-60: 15rem;
  --space-64: 16rem;
  --space-72: 18rem;
  --space-80: 20rem;
  --space-96: 24rem;
  --space-screen: 100vh;
  --section-padding: clamp(5rem, 10vw, 10rem);
  --container-padding: clamp(2rem, 5vw, 5rem);
  --space-unit: clamp(0.25rem, 1vw, 0.5rem);
  --space-1-mobile: calc(var(--space-unit) * 1);
  --space-2-mobile: calc(var(--space-unit) * 2);
  --space-3-mobile: calc(var(--space-unit) * 3);
  --space-4-mobile: calc(var(--space-unit) * 4);
  --space-6-mobile: calc(var(--space-unit) * 6);
  --space-8-mobile: calc(var(--space-unit) * 8);
  --space-12-mobile: calc(var(--space-unit) * 12);
  --space-16-mobile: calc(var(--space-unit) * 16);
  --space-touch-min: max(var(--space-2), 8px);
  --space-section-mobile: max(var(--space-16), 64px);
  --radius-none: 0;
  --radius-sm: 2px;
  --radius: 4px;
  --radius-md: 6px;
  --radius-lg: 8px;
  --radius-xl: 12px;
  --radius-2xl: 16px;
  --radius-3xl: 24px;
  --radius-full: 9999px;
  --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.03);
  --shadow: 0 1px 3px 0 rgb(0 0 0 / 0.05);
  --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.06);
  --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.08);
  --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1);
  --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.15);
  --shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / 0.05);
  --shadow-none: 0 0 #0000;
  --shadow-heritage: 0 10px 30px -10px rgb(var(--color-accent-heritage) / 0.2);
  --shadow-card: 0 1px 3px rgba(0, 0, 0, 0.05);
  --shadow-card-hover: 0 4px 12px rgba(0, 0, 0, 0.08);
  --shadow-card-active: 0 1px 2px rgba(0, 0, 0, 0.04);
  --z-hidden: -1;
  --z-base: 0;
  --z-raised: 1;
  --z-dropdown: 10;
  --z-sticky: 100;
  --z-drawer: 200;
  --z-modal: 300;
  --z-popover: 400;
  --z-toast: 500;
  --z-alert: 600;
  --z-loader: 700;
  --z-debug: 999;
  --duration-instant: 50ms;
  --duration-fast: 150ms;
  --duration-normal: 250ms;
  --duration-slow: 400ms;
  --duration-slower: 600ms;
  --duration-instant-desktop: 100ms;
  --duration-fast-desktop: 200ms;
  --duration-normal-desktop: 300ms;
  --duration-slow-desktop: 600ms;
  --duration-slower-desktop: 800ms;
  --timing-instant: var(--duration-instant);
  --timing-fast: var(--duration-fast);
  --timing-normal: var(--duration-normal);
  --timing-slow: var(--duration-slow);
  --timing-smooth: var(--duration-slower);
  --timing-expo: 800ms;
  --easing-standard: cubic-bezier(0.4, 0, 0.2, 1);
  --easing-smooth: cubic-bezier(0.25, 0.46, 0.45, 0.94);
  --easing-expo: cubic-bezier(0.87, 0, 0.13, 1);
  --easing-back: cubic-bezier(0.34, 1.56, 0.64, 1);
  --easing-in: cubic-bezier(0.4, 0, 1, 1);
  --easing-out: cubic-bezier(0, 0, 0.2, 1);
  --easing-in-out: cubic-bezier(0.4, 0, 0.2, 1);
  --transform-lift: translateY(-2px);
  --transform-drop: translateY(2px);
  --transform-scale-up: scale(1.02);
  --transform-scale-down: scale(0.98);
  --scroll-reveal-distance: 20px;
  --scroll-reveal-duration: 600ms;
  --scroll-stagger-delay: 75ms;
  --scroll-stagger-max: 375ms;
  --scroll-threshold: 0.2;
  --duration-scroll: 600ms;
  --duration-scroll-section: 800ms;
  --stagger-delay: 100ms;
  --pwa-stagger-delay: 100ms;
  --scroll-distance: 30px;
  --scroll-distance-section: 50px;
  --pwa-duration-fast: var(--timing-fast);
  --pwa-duration-normal: var(--timing-normal);
  --pwa-duration-slow: 600ms;
  --pwa-easing-smooth: cubic-bezier(0.25, 0.46, 0.45, 0.94);
  --pwa-easing-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);
  --container-max-width: 1440px;
  --container-padding: var(--space-4);
  --border-width: 1px;
  --border-width-2: 2px;
  --border-width-4: 4px;
  --border-width-8: 8px;
  --focus-ring-width: 2px;
  --focus-ring-offset: 2px;
  --focus-ring-color: rgb(var(--color-primary));
  --touch-target-min: 48px;
  --touch-target-comfortable: 56px;
  --touch-target-large: 64px;
  --touch-spacing-min: 8px;
  --touch-spacing-comfortable: 16px;
  --thumb-reach-easy: 60%;
  --thumb-reach-hard: 40%;
  --safe-area-bottom: env(safe-area-inset-bottom);
  --breakpoint-mobile-portrait: 320px;
  --breakpoint-mobile-landscape: 568px;
  --breakpoint-tablet-portrait: 768px;
  --breakpoint-tablet-landscape: 1024px;
  --breakpoint-desktop: 1280px;
  --breakpoint-desktop-wide: 1536px;
  --breakpoint-desktop-ultra: 1920px;
  --breakpoint-nav-collapse: 896px;
  --breakpoint-grid-switch: 640px;
  --breakpoint-table-scroll: 768px;
  --breakpoint-xs: 475px;
  --breakpoint-sm: 640px;
  --breakpoint-md: 768px;
  --breakpoint-lg: 1024px;
  --breakpoint-xl: 1280px;
  --breakpoint-2xl: 1536px;
}
:root.dark {
  --color-background: 13 17 23;
  --color-foreground: 248 250 252;
  --color-primary: 100 116 139;
  --color-primary-foreground: 248 250 252;
  --color-primary-50: 15 23 42;
  --color-primary-100: 30 41 59;
  --color-primary-200: 51 65 85;
  --color-primary-300: 71 85 105;
  --color-primary-400: 100 116 139;
  --color-primary-500: 148 163 184;
  --color-primary-600: 203 213 225;
  --color-primary-700: 226 232 240;
  --color-primary-800: 241 245 249;
  --color-primary-900: 248 250 252;
  --color-primary-950: 255 255 255;
  --color-accent-heritage: 239 68 68;
  --color-accent-heritage-foreground: 255 255 255;
  --color-accent-heritage-50: 127 29 29;
  --color-accent-heritage-100: 153 27 27;
  --color-accent-heritage-200: 185 28 28;
  --color-accent-heritage-300: 220 38 38;
  --color-accent-heritage-400: 248 113 113;
  --color-accent-heritage-500: 252 165 165;
  --color-accent-heritage-600: 254 202 202;
  --color-accent-heritage-700: 254 226 226;
  --color-accent-heritage-800: 254 242 242;
  --color-accent-heritage-900: 255 245 245;
  --color-secondary: 59 130 246;
  --color-secondary-foreground: 255 255 255;
  --color-secondary-50: 30 58 138;
  --color-secondary-100: 29 78 216;
  --color-secondary-200: 37 99 235;
  --color-secondary-300: 59 130 246;
  --color-secondary-400: 96 165 250;
  --color-secondary-500: 147 197 253;
  --color-secondary-600: 191 219 254;
  --color-secondary-700: 219 234 254;
  --color-secondary-800: 239 246 255;
  --color-secondary-900: 239 246 255;
  --color-success: 16 185 129;
  --color-success-foreground: 255 255 255;
  --color-warning: 245 158 11;
  --color-warning-foreground: 0 0 0;
  --color-error: 239 68 68;
  --color-error-foreground: 255 255 255;
  --color-info: 59 130 246;
  --color-info-foreground: 255 255 255;
  --color-muted: 30 41 59;
  --color-muted-foreground: 148 163 184;
  --color-border: 51 65 85;
  --color-ring: 100 116 139;
  --surface-default: var(--color-background);
  --surface-muted: var(--color-muted);
  --surface-dark: 13 17 23;
  --surface-brand: var(--color-primary);
  --surface-accent: var(--color-accent-heritage);
  --surface-gradient-subtle: linear-gradient(135deg, 
    rgb(var(--color-background)) 0%, 
    rgb(var(--color-muted)) 100%);
  --surface-gradient-radial: radial-gradient(circle at 50% 50%, 
    rgb(var(--color-muted)) 0%, 
    rgb(var(--color-background)) 100%);
  --surface-gradient-hero: linear-gradient(135deg, 
    rgb(var(--color-background)) 0%, 
    rgb(var(--color-muted)) 50%, 
    rgb(var(--color-background)) 100%);
  --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.15);
  --shadow: 0 1px 3px 0 rgb(0 0 0 / 0.25);
  --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.3);
  --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.4);
  --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.5);
  --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.6);
  --shadow-heritage: 0 10px 30px -10px rgb(239 68 68 / 0.3);
  --shadow-card: 0 1px 3px rgba(0, 0, 0, 0.15);
  --shadow-card-hover: 0 4px 12px rgba(0, 0, 0, 0.25);
  --shadow-card-active: 0 1px 2px rgba(0, 0, 0, 0.1);
  --icon-default: var(--color-foreground);
  --icon-primary: var(--color-primary);
  --icon-heritage: var(--color-accent-heritage);
  --icon-success: var(--color-success);
  --icon-warning: var(--color-warning);
  --icon-white: var(--color-background);
}
*,
*::before,
*::after {
  box-sizing: border-box;
}
* {
  margin: 0;
}
html {
  font-size: 16px;
  -webkit-text-size-adjust: 100%;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  height: 100%;
}
body {
  font-family: var(--font-family-sans);
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-normal);
  line-height: var(--line-height-normal);
  color: rgb(var(--color-foreground));
  background-color: rgb(var(--color-background));
  min-height: 100%;
}
input,
button,
textarea,
select {
  font: inherit;
}
img,
picture,
video,
canvas,
svg {
  display: block;
  max-width: 100%;
  height: auto;
}
input,
button,
textarea,
select {
  font: inherit;
}
p,
h1,
h2,
h3,
h4,
h5,
h6 {
  overflow-wrap: break-word;
  -webkit-hyphens: auto;
          hyphens: auto;
}
#root,
#__next {
  isolation: isolate;
}
.title-hero {
  font-family: var(--font-family-display);
  font-weight: var(--font-weight-extralight);
  font-size: var(--text-hero);
  line-height: var(--line-height-none);
  letter-spacing: var(--letter-spacing-tighter);
  color: rgb(var(--color-foreground));
  margin-bottom: var(--space-8);
}
.title-display {
  font-family: var(--font-family-display);
  font-weight: var(--font-weight-light);
  font-size: var(--text-display);
  line-height: var(--line-height-tight);
  letter-spacing: var(--letter-spacing-tight);
  color: rgb(var(--color-foreground));
  margin-bottom: var(--space-6);
}
.title-section {
  font-family: var(--font-family-display);
  font-weight: var(--font-weight-bold);
  font-size: clamp(2rem, 5vw, 3.5rem);
  line-height: var(--line-height-tight);
  letter-spacing: -0.02em;
  color: rgb(var(--color-foreground));
  margin-bottom: var(--space-4);
}
.title-card {
  font-family: var(--font-family-display);
  font-weight: var(--font-weight-semibold);
  font-size: var(--font-size-xl);
  line-height: var(--line-height-snug);
  color: rgb(var(--color-foreground));
  margin-bottom: var(--space-3);
}
.subtitle-lg {
  font-family: var(--font-family-sans);
  font-weight: var(--font-weight-medium);
  font-size: clamp(1.25rem, 3vw, 2rem);
  line-height: var(--line-height-snug);
  color: rgb(var(--color-muted-foreground));
  margin-bottom: var(--space-4);
}
.subtitle {
  font-family: var(--font-family-sans);
  font-weight: var(--font-weight-medium);
  font-size: var(--font-size-lg);
  line-height: var(--line-height-snug);
  color: rgb(var(--color-muted-foreground));
  margin-bottom: var(--space-3);
}
.description-lg {
  font-family: var(--font-family-sans);
  font-weight: var(--font-weight-normal);
  font-size: clamp(1.125rem, 2vw, 1.5rem);
  line-height: var(--line-height-normal);
  color: rgb(var(--color-muted-foreground));
  margin-bottom: var(--space-4);
}
.description {
  font-family: var(--font-family-sans);
  font-weight: var(--font-weight-normal);
  font-size: var(--font-size-base);
  line-height: var(--line-height-normal);
  color: rgb(var(--color-muted-foreground));
  margin-bottom: var(--space-4);
}
.label-text {
  font-family: var(--font-family-sans);
  font-weight: var(--font-weight-medium);
  font-size: var(--font-size-base);
  line-height: var(--line-height-snug);
  color: rgb(var(--color-foreground));
  letter-spacing: -0.01em;
}
.text-sm {
  font-size: var(--font-size-sm);
  line-height: var(--line-height-snug);
}
.text-heritage {
  color: rgb(var(--color-accent-heritage));
  font-weight: var(--font-weight-semibold);
  font-size: max(1rem, var(--font-size-base));
}
.text-mono {
  font-family: var(--font-family-mono);
  font-size: var(--font-size-sm);
  line-height: var(--line-height-normal);
}
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: var(--space-2) var(--space-4);
  font-weight: var(--font-weight-medium);
  font-size: var(--font-size-base);
  line-height: var(--line-height-snug);
  border-radius: var(--radius-md);
  border: var(--border-width) solid transparent;
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
  transition: all var(--timing-fast) var(--easing-standard);
  min-height: var(--touch-target-min);
  position: relative;
}
.btn-heritage {
  background-color: rgb(var(--color-accent-heritage));
  color: rgb(var(--color-accent-heritage-foreground));
  border-color: rgb(var(--color-accent-heritage));
  font-weight: var(--font-weight-semibold);
  padding: var(--space-3) var(--btn-heritage-padding-x);
  box-shadow: var(--shadow-heritage);
  animation: heritage-pulse 3s ease-in-out infinite;
  animation-delay: 2s;
}
.btn-heritage:hover {
  background-color: rgb(var(--color-accent-heritage-600));
  border-color: rgb(var(--color-accent-heritage-600));
  transform: var(--transform-lift);
  box-shadow: var(--shadow-heritage), var(--shadow-lg);
}
.btn-heritage:focus-visible {
  outline: var(--focus-ring-width) solid rgb(var(--color-accent-heritage));
  outline-offset: var(--focus-ring-offset);
}
.btn-heritage:active {
  transform: var(--transform-scale-down);
}
.btn-primary {
  background-color: rgb(var(--color-primary));
  color: rgb(var(--color-primary-foreground));
  border-color: rgb(var(--color-primary));
}
.btn-primary:hover {
  background-color: rgb(var(--color-primary-700));
  border-color: rgb(var(--color-primary-700));
  transform: var(--transform-lift);
}
.btn-primary:focus-visible {
  outline: var(--focus-ring-width) solid rgb(var(--color-primary));
  outline-offset: var(--focus-ring-offset);
}
.btn-primary:active {
  transform: var(--transform-scale-down);
}
.btn-secondary {
  background-color: rgb(var(--color-secondary));
  color: rgb(var(--color-secondary-foreground));
  border-color: rgb(var(--color-secondary));
}
.btn-secondary:hover {
  background-color: rgb(var(--color-secondary-800));
  border-color: rgb(var(--color-secondary-800));
  transform: var(--transform-lift);
}
.btn-secondary:focus-visible {
  outline: var(--focus-ring-width) solid rgb(var(--color-secondary));
  outline-offset: var(--focus-ring-offset);
}
.btn-secondary:active {
  transform: var(--transform-scale-down);
}
.btn-outline {
  background-color: transparent;
  color: rgb(var(--color-primary));
  border-color: rgb(var(--color-border));
}
.btn-outline:hover {
  background-color: rgb(var(--color-primary));
  color: rgb(var(--color-primary-foreground));
  border-color: rgb(var(--color-primary));
}
.btn-ghost {
  background-color: transparent;
  color: rgb(var(--color-primary));
  border-color: transparent;
}
.btn-ghost:hover {
  background-color: rgb(var(--color-primary) / 0.1);
  color: rgb(var(--color-primary));
}
.btn-sm {
  padding: var(--space-1-5) var(--space-3);
  font-size: var(--font-size-sm);
  min-height: var(--space-8);
}
.btn-lg {
  padding: var(--space-3) var(--space-6);
  font-size: var(--font-size-lg);
  min-height: var(--space-14);
}
.btn-xl {
  padding: var(--space-4) var(--space-8);
  font-size: var(--font-size-xl);
  min-height: var(--space-16);
}
.btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
  transform: none;
}
.layout-section-sm {
  padding: 2.5rem 0;
}
.layout-section {
  padding: 3.75rem 0;
}
.layout-section-lg {
  padding: 5rem 0;
}
.layout-section-xl {
  padding: 6rem 0;
}
@media (min-width: 768px) and (max-width: 1279px) {
  .layout-section-sm {
    padding: 3.2rem 0;
  }
  .layout-section {
    padding: 4.8rem 0;
  }
  .layout-section-lg {
    padding: 6.4rem 0;
  }
  .layout-section-xl {
    padding: 8rem 0;
  }
}
@media (min-width: 1280px) {
  .layout-section-sm {
    padding: 4rem 0;
  }
  .layout-section {
    padding: 6rem 0;
  }
  .layout-section-lg {
    padding: 8rem 0;
  }
  .layout-section-xl {
    padding: 10rem 0;
  }
}
.layout-hero {
  padding: var(--space-12) var(--space-4);
  min-height: 100vh;
  display: flex;
  align-items: center;
}
@media (min-width: 768px) {
  .layout-hero {
    padding: var(--space-16) var(--space-6);
    min-height: 85vh;
  }
}
@media (min-width: 1280px) {
  .layout-hero {
    padding: var(--space-32) var(--space-8);
    min-height: 90vh;
  }
}
.layout-container {
  width: 100%;
  max-width: var(--container-max-width);
  margin: 0 auto;
  padding: 0 var(--space-4);
}
@media (min-width: 640px) {
  .layout-container {
    padding: 0 var(--space-6);
  }
}
@media (min-width: 1024px) {
  .layout-container {
    padding: 0 var(--space-8);
  }
}
@media (min-width: 1280px) {
  .layout-container {
    padding: 0 var(--space-12);
  }
}
.layout-center {
  text-align: center;
  margin-left: auto;
  margin-right: auto;
}
.layout-left {
  text-align: left;
}
.layout-right {
  text-align: right;
}
.layout-gap-xs {
  gap: var(--space-2);
}
.layout-gap-sm {
  gap: var(--space-4);
}
.layout-gap-md {
  gap: var(--space-8);
}
.layout-gap-lg {
  gap: var(--space-16);
}
.layout-gap-xl {
  gap: var(--space-24);
}
.layout-stack {
  display: flex;
  flex-direction: column;
}
.layout-stack-sm {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}
.layout-stack-md {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}
.layout-stack-lg {
  display: flex;
  flex-direction: column;
  gap: var(--space-8);
}
.layout-grid-2 {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-6);
}
.layout-grid-3 {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-6);
}
.layout-grid-4 {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--space-6);
}
@media (max-width: 767px) {
  .layout-grid-2,
  .layout-grid-3,
  .layout-grid-4 {
    grid-template-columns: 1fr;
    gap: var(--space-4);
  }
}
@media (min-width: 768px) and (max-width: 1023px) {
  .layout-grid-3,
  .layout-grid-4 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
.surface-default {
  background-color: rgb(var(--surface-default));
  color: rgb(var(--color-foreground));
}
.surface-muted {
  background-color: rgb(var(--surface-muted));
  color: rgb(var(--color-foreground));
}
.surface-dark {
  background-color: rgb(var(--surface-dark));
  color: rgb(var(--color-foreground));
}
.grid {
  display: grid;
  gap: var(--space-4);
}
.grid-cols-1 {
  grid-template-columns: repeat(1, minmax(0, 1fr));
}
.grid-cols-2 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.grid-cols-3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.grid-cols-4 {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.grid-cols-5 {
  grid-template-columns: repeat(5, minmax(0, 1fr));
}
.grid-cols-6 {
  grid-template-columns: repeat(6, minmax(0, 1fr));
}
.grid-cols-12 {
  grid-template-columns: repeat(12, minmax(0, 1fr));
}
@media (min-width: 640px) {
  .sm\:grid-cols-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .sm\:grid-cols-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .sm\:grid-cols-4 {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}
@media (min-width: 768px) {
  .md\:grid-cols-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .md\:grid-cols-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .md\:grid-cols-4 {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
  .md\:grid-cols-6 {
    grid-template-columns: repeat(6, minmax(0, 1fr));
  }
}
@media (min-width: 1024px) {
  .lg\:grid-cols-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .lg\:grid-cols-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .lg\:grid-cols-4 {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
  .lg\:grid-cols-5 {
    grid-template-columns: repeat(5, minmax(0, 1fr));
  }
  .lg\:grid-cols-6 {
    grid-template-columns: repeat(6, minmax(0, 1fr));
  }
}
.gap-0 {
  gap: 0;
}
.gap-2 {
  gap: var(--space-2);
}
.gap-4 {
  gap: var(--space-4);
}
.gap-6 {
  gap: var(--space-6);
}
.gap-8 {
  gap: var(--space-8);
}
.gap-12 {
  gap: var(--space-12);
}
.gap-16 {
  gap: var(--space-16);
}
.card {
  background-color: rgb(var(--color-background));
  border-radius: var(--radius-md);
  padding: var(--space-6);
  height: 100%;
  display: flex;
  flex-direction: column;
  transition: all var(--timing-fast) var(--easing-standard);
}
.card-bordered {
  border: var(--border-width) solid rgb(var(--color-border));
}
.card-elevated {
  box-shadow: var(--shadow-md);
}
.card-elevated:hover {
  box-shadow: var(--shadow-lg);
  transform: var(--transform-lift);
}
.card-heritage {
  border-left: 4px solid rgb(var(--color-accent-heritage));
  padding-left: calc(var(--space-6) + var(--space-2));
  margin: var(--card-heritage-margin) 0;
}
.card-header {
  margin-bottom: var(--space-4);
}
.card-body {
  flex: 1;
}
.card-footer {
  margin-top: var(--space-4);
  padding-top: var(--space-4);
  border-top: var(--border-width) solid rgb(var(--color-border));
}
.card-actions {
  display: flex;
  gap: var(--space-2);
  margin-top: var(--space-4);
}
.card-actions-end {
  justify-content: flex-end;
}
.card-actions-center {
  justify-content: center;
}
.badge {
  display: inline-flex;
  align-items: center;
  padding: 0.25rem 0.75rem;
  font-size: 0.75rem;
  font-weight: 500;
  line-height: 1;
  border-radius: var(--radius-sm);
  transition: all 200ms ease;
  white-space: nowrap;
}
.badge:hover {
  transform: translateY(-1px);
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.badge-primary {
  background: rgb(var(--color-primary-100));
  color: rgb(var(--color-primary-700));
}
.badge-heritage {
  background: rgb(var(--color-accent-heritage));
  color: white;
  margin: 0 0.25rem;
}
.badge-secondary {
  background: rgb(var(--color-secondary-100));
  color: rgb(var(--color-secondary-900));
}
.badge-success {
  background: rgb(var(--color-success) / 0.1);
  color: rgb(var(--color-success));
}
.badge-warning {
  background: rgb(var(--color-warning) / 0.1);
  color: rgb(var(--color-warning));
}
.badge-error {
  background: rgb(var(--color-error) / 0.1);
  color: rgb(var(--color-error));
}
.badge-sm {
  padding: 0.125rem 0.5rem;
  font-size: 0.625rem;
}
.badge-lg {
  padding: 0.375rem 1rem;
  font-size: 0.875rem;
}
.card-actions .badge {
  margin: 0 0.125rem;
}
.navbar {
  height: 4rem;
  padding: 0 var(--space-6);
  background: rgb(var(--color-background));
  border-bottom: 1px solid rgb(var(--color-border));
  display: flex;
  align-items: center;
  justify-content: space-between;
  position: relative;
  z-index: var(--z-sticky);
}
.navbar-brand {
  font-weight: 600;
  font-size: 1.25rem;
  color: rgb(var(--color-foreground));
  position: relative;
  padding-right: 1rem;
}
.navbar-brand::after {
  content: '';
  display: inline-block;
  width: 8px;
  height: 8px;
  margin-left: 0.5rem;
  background: rgb(var(--color-accent-heritage));
  border-radius: 50%;
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
}
.nav-item {
  position: relative;
  padding: 0.5rem 1rem;
  font-size: 1rem;
  font-weight: 500;
  color: rgb(var(--color-foreground));
  transition: color 200ms ease;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
}
.nav-item:hover {
  color: rgb(var(--color-primary-700));
}
.nav-item.active {
  color: rgb(var(--color-primary-900));
}
.nav-item.active::after {
  content: '';
  position: absolute;
  bottom: -2px;
  left: 1rem;
  right: 1rem;
  height: 2px;
  background: rgb(var(--color-accent-heritage));
}
@media (max-width: 767px) {
  .navbar {
    padding: 0 var(--space-4);
  }
  .nav-item.active::after {
    background: rgb(var(--color-primary));
    height: 3px;
  }
  .nav-item {
    min-height: var(--touch-target-min);
    padding: 0.75rem 1rem;
  }
}
.block {
  display: block;
}
.inline-block {
  display: inline-block;
}
.inline {
  display: inline;
}
.flex {
  display: flex;
}
.inline-flex {
  display: inline-flex;
}
.inline-grid {
  display: inline-grid;
}
.hidden {
  display: none;
}
.flex-row {
  flex-direction: row;
}
.flex-row-reverse {
  flex-direction: row-reverse;
}
.flex-col {
  flex-direction: column;
}
.flex-col-reverse {
  flex-direction: column-reverse;
}
.flex-wrap {
  flex-wrap: wrap;
}
.flex-nowrap {
  flex-wrap: nowrap;
}
.flex-1 {
  flex: 1 1 0%;
}
.flex-auto {
  flex: 1 1 auto;
}
.flex-initial {
  flex: 0 1 auto;
}
.flex-none {
  flex: none;
}
.flex-grow {
  flex-grow: 1;
}
.flex-grow-0 {
  flex-grow: 0;
}
.flex-shrink {
  flex-shrink: 1;
}
.flex-shrink-0 {
  flex-shrink: 0;
}
.items-start {
  align-items: flex-start;
}
.items-end {
  align-items: flex-end;
}
.items-center {
  align-items: center;
}
.items-baseline {
  align-items: baseline;
}
.items-stretch {
  align-items: stretch;
}
.justify-start {
  justify-content: flex-start;
}
.justify-end {
  justify-content: flex-end;
}
.justify-center {
  justify-content: center;
}
.justify-between {
  justify-content: space-between;
}
.justify-around {
  justify-content: space-around;
}
.justify-evenly {
  justify-content: space-evenly;
}
.m-auto {
  margin: auto;
}
.mx-auto {
  margin-left: auto;
  margin-right: auto;
}
.my-auto {
  margin-top: auto;
  margin-bottom: auto;
}
.mt-auto {
  margin-top: auto;
}
.mr-auto {
  margin-right: auto;
}
.mb-auto {
  margin-bottom: auto;
}
.ml-auto {
  margin-left: auto;
}
.w-full {
  width: 100%;
}
.w-screen {
  width: 100vw;
}
.w-min {
  width: -moz-min-content;
  width: min-content;
}
.w-max {
  width: -moz-max-content;
  width: max-content;
}
.w-fit {
  width: -moz-fit-content;
  width: fit-content;
}
.h-full {
  height: 100%;
}
.h-screen {
  height: 100vh;
}
.h-min {
  height: -moz-min-content;
  height: min-content;
}
.h-max {
  height: -moz-max-content;
  height: max-content;
}
.h-fit {
  height: -moz-fit-content;
  height: fit-content;
}
.max-w-none {
  max-width: none;
}
.max-w-xs {
  max-width: 20rem;
}
.max-w-sm {
  max-width: 24rem;
}
.max-w-md {
  max-width: 28rem;
}
.max-w-lg {
  max-width: 32rem;
}
.max-w-xl {
  max-width: 36rem;
}
.max-w-2xl {
  max-width: 42rem;
}
.max-w-3xl {
  max-width: 48rem;
}
.max-w-4xl {
  max-width: 56rem;
}
.max-w-5xl {
  max-width: 64rem;
}
.max-w-6xl {
  max-width: 72rem;
}
.max-w-7xl {
  max-width: 80rem;
}
.max-w-full {
  max-width: 100%;
}
.text-left {
  text-align: left;
}
.text-center {
  text-align: center;
}
.text-right {
  text-align: right;
}
.text-justify {
  text-align: justify;
}
.uppercase {
  text-transform: uppercase;
}
.lowercase {
  text-transform: lowercase;
}
.capitalize {
  text-transform: capitalize;
}
.normal-case {
  text-transform: none;
}
.truncate {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.text-primary {
  color: rgb(var(--color-primary));
}
.text-secondary {
  color: rgb(var(--color-secondary));
}
.text-heritage {
  color: rgb(var(--color-accent-heritage));
}
.text-muted {
  color: rgb(var(--color-muted-foreground));
}
.text-success {
  color: rgb(var(--color-success));
}
.text-warning {
  color: rgb(var(--color-warning));
}
.text-error {
  color: rgb(var(--color-error));
}
.bg-primary {
  background-color: rgb(var(--color-primary));
}
.bg-secondary {
  background-color: rgb(var(--color-secondary));
}
.bg-heritage {
  background-color: rgb(var(--color-accent-heritage));
}
.bg-muted {
  background-color: rgb(var(--color-muted));
}
.bg-success {
  background-color: rgb(var(--color-success));
}
.bg-warning {
  background-color: rgb(var(--color-warning));
}
.bg-error {
  background-color: rgb(var(--color-error));
}
.border {
  border-width: var(--border-width);
}
.border-0 {
  border-width: 0;
}
.border-2 {
  border-width: 2px;
}
.border-4 {
  border-width: 4px;
}
.border-8 {
  border-width: 8px;
}
.border-solid {
  border-style: solid;
}
.border-dashed {
  border-style: dashed;
}
.border-dotted {
  border-style: dotted;
}
.border-none {
  border-style: none;
}
.rounded-none {
  border-radius: 0;
}
.rounded-sm {
  border-radius: var(--radius-sm);
}
.rounded {
  border-radius: var(--radius);
}
.rounded-md {
  border-radius: var(--radius-md);
}
.rounded-lg {
  border-radius: var(--radius-lg);
}
.rounded-full {
  border-radius: var(--radius-full);
}
.shadow-sm {
  box-shadow: var(--shadow-sm);
}
.shadow {
  box-shadow: var(--shadow);
}
.shadow-md {
  box-shadow: var(--shadow-md);
}
.shadow-lg {
  box-shadow: var(--shadow-lg);
}
.shadow-xl {
  box-shadow: var(--shadow-xl);
}
.shadow-2xl {
  box-shadow: var(--shadow-2xl);
}
.shadow-none {
  box-shadow: var(--shadow-none);
}
.shadow-heritage {
  box-shadow: var(--shadow-heritage);
}
.opacity-0 {
  opacity: 0;
}
.opacity-25 {
  opacity: 0.25;
}
.opacity-50 {
  opacity: 0.5;
}
.opacity-75 {
  opacity: 0.75;
}
.opacity-100 {
  opacity: 1;
}
.cursor-pointer {
  cursor: pointer;
}
.cursor-default {
  cursor: default;
}
.cursor-not-allowed {
  cursor: not-allowed;
}
.cursor-wait {
  cursor: wait;
}
.cursor-move {
  cursor: move;
}
.icon-xxs {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1rem;
  height: 1rem;
  margin-bottom: 0;
  transition: var(--timing-fast) var(--easing-smooth);
  flex-shrink: 0;
}
.icon-xxs > * {
  width: 0.75rem;
  height: 0.75rem;
}
.icon-xs {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  border-radius: var(--radius-lg);
  margin-bottom: 1.5rem;
  transition: var(--timing-fast) var(--easing-smooth);
  flex-shrink: 0;
}
.icon-xs > * {
  width: 1rem;
  height: 1rem;
}
.icon-sm {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.5rem;
  height: 2.5rem;
  border-radius: var(--radius-lg);
  margin-bottom: 1.5rem;
  transition: var(--timing-fast) var(--easing-smooth);
  flex-shrink: 0;
}
.icon-sm > * {
  width: 1.25rem;
  height: 1.25rem;
}
.icon-base {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 3rem;
  height: 3rem;
  border-radius: var(--radius-lg);
  margin-bottom: 1.5rem;
  transition: var(--timing-fast) var(--easing-smooth);
  flex-shrink: 0;
}
.icon-base > * {
  width: 1.5rem;
  height: 1.5rem;
}
.icon-md {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 3.5rem;
  height: 3.5rem;
  border-radius: var(--radius-lg);
  margin-bottom: 1.5rem;
  transition: var(--timing-fast) var(--easing-smooth);
  flex-shrink: 0;
}
.icon-md > * {
  width: 1.75rem;
  height: 1.75rem;
}
.icon-lg {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 4rem;
  height: 4rem;
  border-radius: var(--radius-lg);
  margin-bottom: 1.5rem;
  transition: var(--timing-fast) var(--easing-smooth);
  flex-shrink: 0;
}
.icon-lg > * {
  width: 2rem;
  height: 2rem;
}
.icon-xl {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 5rem;
  height: 5rem;
  border-radius: var(--radius-lg);
  margin-bottom: 1.5rem;
  transition: var(--timing-fast) var(--easing-smooth);
  flex-shrink: 0;
}
.icon-xl > * {
  width: 2.5rem;
  height: 2.5rem;
}
.icon-default {
  background: rgb(var(--color-muted));
  color: rgb(var(--color-muted-foreground));
}
.icon-primary {
  background: rgb(var(--color-primary) / 0.1);
  color: rgb(var(--color-primary));
}
.icon-heritage {
  background: rgb(var(--color-accent-heritage) / 0.1);
  color: rgb(var(--color-accent-heritage));
  margin-bottom: 2rem;
  box-shadow: 0 4px 12px rgb(var(--color-accent-heritage) / 0.1);
}
.icon-success {
  background: rgb(var(--color-success) / 0.1);
  color: rgb(var(--color-success));
}
.icon-warning {
  background: rgb(var(--color-warning) / 0.1);
  color: rgb(var(--color-warning));
}
.icon-muted {
  background: rgb(var(--color-muted));
  color: rgb(var(--color-muted-foreground));
}
.icon-outline {
  background: transparent;
  border: 1px solid rgb(var(--color-border));
  color: rgb(var(--color-foreground));
}
.icon-white {
  background: white;
  color: rgb(var(--color-foreground));
  box-shadow: 0 2px 8px rgb(0 0 0 / 0.1);
}
.icon-bg {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--radius-lg);
  padding: var(--space-3);
  margin-bottom: 1.5rem;
  transition: var(--timing-fast) var(--easing-smooth);
}
.icon-bg-primary {
  background: rgb(var(--color-primary));
  color: white;
}
.icon-bg-heritage {
  background: rgb(var(--color-accent-heritage));
  color: white;
  padding: var(--space-4);
  margin-bottom: 2rem;
  box-shadow: 0 4px 12px rgba(var(--color-accent-heritage) / 0.2);
}
.icon-bg-muted {
  background: rgb(var(--color-muted));
  color: rgb(var(--color-foreground));
}
.icon-bg-success {
  background: rgb(var(--color-success));
  color: white;
}
.icon-bg-warning {
  background: rgb(var(--color-warning));
  color: white;
}
.icon-bg-outline {
  background: transparent;
  border: 1px solid rgb(var(--color-border));
  color: rgb(var(--color-foreground));
}
.icon-interactive {
  transition: transform 200ms var(--ease-smooth);
  cursor: pointer;
}
.icon-interactive:hover {
  transform: scale(1.1);
}
.icon-spin {
  animation: icon-spin 2s linear infinite;
}
@keyframes icon-spin {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}
.icon-pulse {
  animation: icon-pulse 2s ease-in-out infinite;
}
@keyframes icon-pulse {
  0%, 100% {
    opacity: 1;
  }
  50% {
    opacity: 0.6;
  }
}
@keyframes heritage-pulse {
  0%, 100% {
    box-shadow: var(--shadow-heritage);
  }
  50% {
    box-shadow: var(--shadow-heritage), 0 0 20px rgb(var(--color-accent-heritage) / 0.3);
  }
}
@media (max-width: 767px) {
  .icon-xxs {
    width: 1rem;
    height: 1rem;
  }
  .icon-xs {
    width: 1.5rem;
    height: 1.5rem;
  }
  .icon-sm {
    width: 2rem;
    height: 2rem;
  }
  .icon-base {
    width: 2.5rem;
    height: 2.5rem;
  }
  .icon-md {
    width: 3rem;
    height: 3rem;
  }
  .icon-lg {
    width: 3.5rem;
    height: 3.5rem;
  }
  .icon-xl {
    width: 4rem;
    height: 4rem;
  }
  .icon-xxs > * {
    width: 0.625rem;
    height: 0.625rem;
  }
  .icon-xs > * {
    width: 0.75rem;
    height: 0.75rem;
  }
  .icon-sm > * {
    width: 1rem;
    height: 1rem;
  }
  .icon-base > * {
    width: 1.25rem;
    height: 1.25rem;
    stroke-width: 2.5;
  }
  .icon-md > * {
    width: 1.5rem;
    height: 1.5rem;
  }
  .icon-lg > * {
    width: 1.75rem;
    height: 1.75rem;
  }
  .icon-xl > * {
    width: 2rem;
    height: 2rem;
  }
  .icon-primary {
    background: rgb(var(--color-primary) / 0.15);
  }
  .icon-success {
    background: rgb(var(--color-success) / 0.15);
  }
  .icon-warning {
    background: rgb(var(--color-warning) / 0.15);
  }
  .icon-heritage {
    margin-bottom: 1.75rem;
  }
  .icon-touch {
    width: 3rem;
    height: 3rem;
    position: relative;
  }
  .icon-touch::before {
    content: '';
    position: absolute;
    inset: -12px;
    z-index: 1;
  }
}
@media (min-width: 1280px) {
  .icon-xxs:hover,
  .icon-xs:hover,
  .icon-sm:hover,
  .icon-base:hover,
  .icon-md:hover,
  .icon-lg:hover,
  .icon-xl:hover {
    transform: translateY(-1px);
  }
  .icon-heritage:hover {
    transform: translateY(-2px);
    box-shadow: 0 12px 24px rgb(var(--color-accent-heritage) / 0.25);
  }
  .icon-bg:hover {
    transform: translateY(-1px);
  }
  .icon-bg-heritage:hover {
    transform: translateY(-2px);
    box-shadow: 0 12px 24px rgba(var(--color-accent-heritage) / 0.3);
  }
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
.focus-visible:focus-visible {
  outline: 2px solid rgb(var(--color-primary));
  outline-offset: 2px;
}
@media (prefers-reduced-motion: reduce) {
  .icon-xxs,
  .icon-xs,
  .icon-sm,
  .icon-base,
  .icon-md,
  .icon-lg,
  .icon-xl,
  .icon-bg {
    transition: none;
  }
  .icon-xxs:hover,
  .icon-xs:hover,
  .icon-sm:hover,
  .icon-base:hover,
  .icon-md:hover,
  .icon-lg:hover,
  .icon-xl:hover,
  .icon-heritage:hover,
  .icon-bg:hover,
  .icon-bg-heritage:hover {
    transform: none;
  }
}
@media (prefers-contrast: high) {
  .icon-primary,
  .icon-heritage,
  .icon-success,
  .icon-warning {
    background: rgb(var(--color-background));
    border: 2px solid currentColor;
  }
  .icon-muted {
    border: 2px solid rgb(var(--color-muted-foreground));
  }
  .icon-outline {
    border-width: 2px;
  }
  .icon-bg-primary,
  .icon-bg-heritage,
  .icon-bg-success,
  .icon-bg-warning {
    border: 2px solid currentColor;
  }
}
.pwa-scroll-container {
  scroll-snap-type: y mandatory;
  overscroll-behavior: contain;
  will-change: scroll-position;
  contain: layout style paint;
}
.pwa-scroll-section {
  scroll-snap-align: start;
  scroll-snap-stop: normal;
  will-change: transform, opacity;
  transform: translateZ(0);
  backface-visibility: hidden;
  perspective: 1000px;
}
.pwa-scroll-fade {
  opacity: 0;
  transform: translateY(20px) translateZ(0);
  will-change: transform, opacity;
  transition: opacity var(--timing-fast) var(--easing-smooth),
              transform var(--timing-fast) var(--easing-smooth);
  transition-delay: calc(var(--stagger-index, 0) * var(--pwa-stagger-delay, 100ms));
  backface-visibility: hidden;
  contain: layout style;
}
.pwa-scroll-fade.active {
  opacity: 1;
  transform: translateY(0) translateZ(0);
}
.pwa-scroll-slide-left {
  opacity: 0;
  transform: translateX(-30px) translateZ(0);
  will-change: transform, opacity;
  transition: opacity var(--timing-fast) var(--easing-smooth),
              transform var(--timing-fast) var(--easing-smooth);
  transition-delay: calc(var(--stagger-index, 0) * var(--pwa-stagger-delay, 100ms));
  backface-visibility: hidden;
  contain: layout style;
}
.pwa-scroll-slide-left.active {
  opacity: 1;
  transform: translateX(0) translateZ(0);
}
.pwa-scroll-slide-right {
  opacity: 0;
  transform: translateX(30px) translateZ(0);
  will-change: transform, opacity;
  transition: opacity var(--timing-fast) var(--easing-smooth),
              transform var(--timing-fast) var(--easing-smooth);
  transition-delay: calc(var(--stagger-index, 0) * var(--pwa-stagger-delay, 100ms));
  backface-visibility: hidden;
  contain: layout style;
}
.pwa-scroll-slide-right.active {
  opacity: 1;
  transform: translateX(0) translateZ(0);
}
.pwa-scroll-scale {
  opacity: 0;
  transform: scale(0.9) translateZ(0);
  will-change: transform, opacity;
  transition: opacity var(--timing-normal) var(--easing-smooth),
              transform var(--timing-normal) var(--easing-smooth);
  transition-delay: calc(var(--stagger-index, 0) * var(--pwa-stagger-delay, 100ms));
  backface-visibility: hidden;
  contain: layout style;
}
.pwa-scroll-scale.active {
  opacity: 1;
  transform: scale(1) translateZ(0);
}
.pwa-scroll-stagger {
  transition-delay: calc(var(--stagger-index, 0) * var(--pwa-stagger-delay, 100ms));
  contain: layout;
}
.pwa-scroll-fade.active,
.pwa-scroll-slide-left.active,
.pwa-scroll-slide-right.active,
.pwa-scroll-scale.active {
  will-change: auto;
}
@media (prefers-reduced-motion: reduce) {
  .pwa-scroll-fade,
  .pwa-scroll-slide-left,
  .pwa-scroll-slide-right,
  .pwa-scroll-scale {
    opacity: 1;
    transform: none;
    transition: none;
    will-change: auto;
  }
  .pwa-scroll-fade.active,
  .pwa-scroll-slide-left.active,
  .pwa-scroll-slide-right.active,
  .pwa-scroll-scale.active {
    opacity: 1;
    transform: none;
  }
  .pwa-scroll-container,
  .pwa-scroll-section {
    scroll-snap-type: none;
    will-change: auto;
  }
}
.skeleton {
  background: linear-gradient(
    90deg,
    rgb(var(--color-muted)) 25%,
    rgb(var(--color-muted) / 0.5) 50%,
    rgb(var(--color-muted)) 75%
  );
  background-size: 200% 100%;
  animation: skeleton-loading 1.5s ease-in-out infinite;
}
@keyframes skeleton-loading {
  0% {
    background-position: 200% 0;
  }
  100% {
    background-position: -200% 0;
  }
}
.chart-color-1 {
  color: rgb(var(--color-primary));
}
.chart-color-2 {
  color: rgb(var(--color-accent-heritage));
}
.chart-color-3 {
  color: rgb(var(--color-secondary));
}
.chart-color-4 {
  color: rgb(var(--color-success));
}
.chart-color-5 {
  color: rgb(var(--color-warning));
}
.chart-color-6 {
  color: rgb(var(--color-info));
}
.chart-bg-1 {
  background-color: rgb(var(--color-primary));
}
.chart-bg-2 {
  background-color: rgb(var(--color-accent-heritage));
}
.chart-bg-3 {
  background-color: rgb(var(--color-secondary));
}
.chart-bg-4 {
  background-color: rgb(var(--color-success));
}
.chart-bg-5 {
  background-color: rgb(var(--color-warning));
}
.chart-bg-6 {
  background-color: rgb(var(--color-info));
}
.table {
  width: 100%;
  border-collapse: collapse;
}
.table th {
  font-weight: var(--font-weight-bold);
  text-align: left;
  padding: var(--space-3);
  border-bottom: 2px solid rgb(var(--color-border));
  background-color: rgb(var(--color-muted) / 0.3);
}
.table td {
  padding: var(--space-3);
  border-bottom: 1px solid rgb(var(--color-border));
  transition: background-color 200ms ease;
}
.table tr {
  transition: background-color 200ms ease;
}
.table tbody tr:hover {
  background-color: rgb(var(--color-muted) / 0.5);
}
.table-zebra tbody tr:nth-child(even) {
  background-color: rgb(var(--color-muted) / 0.2);
}
.table-zebra tbody tr:nth-child(even):hover {
  background-color: rgb(var(--color-muted) / 0.6);
}
.table-responsive {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
.metric {
  text-align: center;
  padding: var(--space-4);
}
.metric-value {
  font-size: 2.5rem;
  font-weight: 300;
  line-height: 1;
  color: rgb(var(--color-foreground));
  margin-bottom: var(--space-2);
}
.metric-value.metric-heritage {
  color: rgb(var(--color-accent-heritage));
  font-weight: 600;
}
.metric-label {
  font-size: 0.875rem;
  color: rgb(var(--color-muted-foreground));
  text-transform: uppercase;
  letter-spacing: 0.05em;
}
.success-metrics {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-4);
  align-items: center;
  margin-top: var(--space-4);
}
.success-metrics span {
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-md);
  font-weight: var(--font-weight-medium);
  font-size: 0.875rem;
}
.metric-accent-heritage {
  background-color: rgba(var(--color-accent-heritage) / 0.1);
  color: rgb(var(--color-accent-heritage));
}
.metric-success {
  background-color: rgba(var(--color-success) / 0.1);
  color: rgb(var(--color-success));
}
.metric-secondary {
  background-color: rgba(var(--color-secondary) / 0.1);
  color: rgb(var(--color-secondary));
}
.metric-warning {
  background-color: rgba(var(--color-warning) / 0.1);
  color: rgb(var(--color-warning));
}
.step-number {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--space-16);
  height: var(--space-16);
  border-radius: 50%;
  font-weight: var(--font-weight-bold);
  font-size: 1.25rem;
  margin-bottom: var(--space-4);
}
.step-number-heritage {
  background-color: rgb(var(--color-accent-heritage));
  color: white;
  margin-bottom: calc(var(--space-4) * 1.3);
}
.step-number-secondary {
  background-color: rgb(var(--color-secondary));
  color: white;
}
.step-number-warning {
  background-color: rgb(var(--color-warning));
  color: white;
}
.step-number-success {
  background-color: rgb(var(--color-success));
  color: white;
}
.data-card {
  background: rgb(var(--color-background));
  border: 1px solid rgb(var(--color-border));
  border-radius: var(--radius-md);
  padding: var(--space-6);
  box-shadow: var(--shadow-sm);
  transition: all 200ms ease;
}
.data-card:hover {
  box-shadow: var(--shadow-md);
  transform: translateY(-1px);
}
.data-grid {
  display: grid;
  gap: var(--space-4);
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}
@media (min-width: 768px) {
  .data-grid {
    gap: var(--space-6);
  }
}
.data-highlight {
  position: relative;
  font-weight: var(--font-weight-semibold);
  color: rgb(var(--color-primary-700));
  padding: 0 var(--space-1);
}
.data-highlight::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 2px;
  background: rgb(var(--color-primary-300));
  opacity: 0.5;
}
.touch-scale {
  transition: transform var(--duration-instant) ease-out;
  -webkit-tap-highlight-color: transparent;
}
.touch-scale:active {
  transform: scale(0.95);
}
.touch-ripple {
  position: relative;
  overflow: hidden;
  -webkit-tap-highlight-color: transparent;
}
.touch-ripple::before {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  width: 0;
  height: 0;
  border-radius: 50%;
  background: rgba(0, 0, 0, 0.1);
  transform: translate(-50%, -50%);
  transition: width var(--duration-normal) ease-out,
              height var(--duration-normal) ease-out;
}
.touch-ripple:active::before {
  width: 100%;
  height: 100%;
}
@media (max-width: 767px) {
  .page-enter {
    transform: translateX(100%);
    opacity: 0;
  }
  .page-enter-active {
    transform: translateX(0);
    opacity: 1;
    transition: transform var(--duration-slow) ease-out,
                opacity var(--duration-slow) ease-out;
  }
  .page-exit {
    transform: translateX(0);
    opacity: 1;
  }
  .page-exit-active {
    transform: translateX(-30%);
    opacity: 0;
    transition: transform var(--duration-slow) ease-in,
                opacity var(--duration-slow) ease-in;
  }
}
@media (max-width: 767px) {
  .scroll-reveal {
    --scroll-reveal-distance: 10px;
  }
  .parallax {
    transform: none !important;
  }
}
@media (min-width: 1280px) {
  :root {
    --duration-instant: var(--duration-instant-desktop);
    --duration-fast: var(--duration-fast-desktop);
    --duration-normal: var(--duration-normal-desktop);
    --duration-slow: var(--duration-slow-desktop);
    --duration-slower: var(--duration-slower-desktop);
  }
  .scroll-reveal {
    transition: opacity var(--duration-slow) var(--easing-expo),
                transform var(--duration-slow) var(--easing-expo);
  }
  .scroll-reveal:nth-child(1) {
    transition-delay: 0ms;
  }
  .scroll-reveal:nth-child(2) {
    transition-delay: 75ms;
  }
  .scroll-reveal:nth-child(3) {
    transition-delay: 150ms;
  }
  .scroll-reveal:nth-child(4) {
    transition-delay: 225ms;
  }
  .scroll-reveal:nth-child(5) {
    transition-delay: 300ms;
  }
}
@media (hover: none) {
  .interactive:active {
    transform: scale(0.96);
    opacity: 0.9;
  }
}
@media (hover: hover) and (pointer: fine) {
  .interactive {
    transition: transform 200ms ease-out,
                box-shadow 200ms ease-out;
  }
  .interactive:hover {
    transform: translateY(-2px);
    box-shadow: var(--shadow-md);
  }
}
@media (prefers-reduced-motion: reduce) {
  :root {
    --duration-instant: 0ms;
    --duration-fast: 0ms;
    --duration-normal: 0ms;
    --duration-slow: 0ms;
    --duration-slower: 0ms;
  }
}
[data-theme="boundless"] {
  color-scheme: light;
}
@media (max-width: 767px) {
  :root {
    --font-weight-hero: var(--font-weight-hero-mobile);
    --font-weight-heading: var(--font-weight-heading-mobile);
    --font-weight-bold: var(--font-weight-bold-mobile);
    --font-weight-heritage: var(--font-weight-heritage-mobile);
    --line-height-tight: var(--line-height-tight-mobile);
    --line-height-normal: var(--line-height-base-mobile);
    --line-height-loose: var(--line-height-loose-mobile);
  }
  .title-hero {
    font-weight: var(--font-weight-hero-mobile);
  }
  .title-section,
  .title-display {
    font-weight: var(--font-weight-heading-mobile);
  }
  .description,
  .text-sm {
    font-size: max(var(--font-size-base), 16px);
  }
}
@media (min-width: 1280px) {
  :root {
    --font-weight-hero: var(--font-weight-hero-desktop);
    --font-weight-heading: var(--font-weight-heading-desktop);
    --font-weight-bold: var(--font-weight-bold-desktop);
    --font-weight-heritage: var(--font-weight-heritage-desktop);
  }
  .title-hero {
    font-weight: var(--font-weight-hero-desktop);
  }
  .title-section,
  .title-display {
    font-weight: var(--font-weight-heading-desktop);
  }
}
.daisy-primary {
  --primary: rgb(var(--color-primary));
  --primary-content: rgb(var(--color-primary-foreground));
}
.daisy-secondary {
  --secondary: rgb(var(--color-secondary));
  --secondary-content: rgb(var(--color-secondary-foreground));
}
.daisy-accent {
  --accent: rgb(var(--color-accent-heritage));
  --accent-content: rgb(var(--color-accent-heritage-foreground));
}
.contain-layout {
  contain: layout;
}
.contain-style {
  contain: style;
}
.contain-paint {
  contain: paint;
}
.contain-strict {
  contain: strict;
}
.will-change-transform {
  will-change: transform;
}
.will-change-opacity {
  will-change: opacity;
}
.will-change-auto {
  will-change: auto;
}
.gpu-accelerated {
  transform: translateZ(0);
  backface-visibility: hidden;
  perspective: 1000px;
}
.image-rendering-auto {
  image-rendering: auto;
}
.image-rendering-crisp {
  image-rendering: -webkit-optimize-contrast;
  image-rendering: crisp-edges;
}
.aspect-square {
  aspect-ratio: 1 / 1;
}
.aspect-video {
  aspect-ratio: 16 / 9;
}
.aspect-4-3 {
  aspect-ratio: 4 / 3;
}
.scroll-smooth {
  scroll-behavior: smooth;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
}
@media (prefers-reduced-motion: reduce) {
  .scroll-smooth {
    scroll-behavior: auto;
  }
}
.overscroll-none {
  overscroll-behavior: none;
  overscroll-behavior-x: none;
  overscroll-behavior-y: none;
}
.overscroll-contain {
  overscroll-behavior: contain;
  overscroll-behavior-x: contain;
  overscroll-behavior-y: contain;
}
.overscroll-auto {
  overscroll-behavior: auto;
}
.touch-scroll {
  -webkit-overflow-scrolling: touch;
  scroll-snap-type: y proximity;
  overscroll-behavior: contain;
}
.scroll-snap-mandatory {
  scroll-snap-type: y mandatory;
}
.scroll-snap-proximity {
  scroll-snap-type: y proximity;
}
.scroll-snap-none {
  scroll-snap-type: none;
}
.scroll-snap-start {
  scroll-snap-align: start;
}
.scroll-snap-center {
  scroll-snap-align: center;
}
.scroll-snap-end {
  scroll-snap-align: end;
}
.scroll-snap-stop {
  scroll-snap-stop: always;
}
.scroll-gpu {
  transform: translateZ(0);
  backface-visibility: hidden;
  perspective: 1000px;
  will-change: scroll-position;
}
.scroll-contain {
  contain: layout style paint;
}
.scroll-contain-strict {
  contain: strict;
}
body.pwa-body {
  overscroll-behavior: contain;
  scroll-behavior: smooth;
  -webkit-overflow-scrolling: touch;
}
@media (prefers-reduced-motion: reduce) {
  body.pwa-body {
    scroll-behavior: auto;
  }
}
.pwa-install-banner {
  position: fixed;
  bottom: var(--space-4);
  left: var(--space-4);
  right: var(--space-4);
  background: rgb(var(--color-background));
  border: 1px solid rgb(var(--color-border));
  border-radius: var(--radius-md);
  padding: var(--space-4);
  box-shadow: var(--shadow-lg);
  z-index: var(--z-toast);
  transform: translateY(120%);
  transition: transform var(--duration-slow) var(--easing-smooth);
}
.pwa-install-banner.visible {
  transform: translateY(0);
}
.offline-indicator {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  background: rgb(var(--color-warning));
  color: rgb(var(--color-warning-foreground));
  padding: var(--space-2);
  text-align: center;
  font-size: var(--font-size-sm);
  z-index: var(--z-alert);
  transform: translateY(-100%);
  transition: transform var(--duration-normal) var(--easing-smooth);
}
.offline-indicator.visible {
  transform: translateY(0);
}
.update-notification {
  position: fixed;
  top: var(--space-4);
  right: var(--space-4);
  background: rgb(var(--color-info));
  color: rgb(var(--color-info-foreground));
  padding: var(--space-3) var(--space-4);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-lg);
  z-index: var(--z-toast);
  max-width: 320px;
}
.pwa-splash {
  position: fixed;
  inset: 0;
  background: rgb(var(--color-background));
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: var(--z-loader);
}
.app-transition-enter {
  opacity: 0;
  transform: scale(0.9);
}
.app-transition-enter-active {
  opacity: 1;
  transform: scale(1);
  transition: opacity var(--duration-normal) ease-out,
              transform var(--duration-normal) ease-out;
}
.app-transition-exit {
  opacity: 1;
  transform: scale(1);
}
.app-transition-exit-active {
  opacity: 0;
  transform: scale(1.1);
  transition: opacity var(--duration-normal) ease-in,
              transform var(--duration-normal) ease-in;
}
.mobile-bottom-nav {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  height: var(--touch-target-large);
  background: rgb(var(--color-background));
  border-top: 1px solid rgb(var(--color-border));
  display: flex;
  justify-content: space-around;
  align-items: center;
  padding-bottom: var(--safe-area-bottom);
  z-index: var(--z-sticky);
}
@media (display-mode: standalone) {
  .pwa-status-padding {
    padding-top: var(--safe-area-top);
  }
}
@property --tw-translate-x {
  syntax: "*";
  inherits: false;
  initial-value: 0;
}
@property --tw-translate-y {
  syntax: "*";
  inherits: false;
  initial-value: 0;
}
@property --tw-translate-z {
  syntax: "*";
  inherits: false;
  initial-value: 0;
}
@property --tw-scale-x {
  syntax: "*";
  inherits: false;
  initial-value: 1;
}
@property --tw-scale-y {
  syntax: "*";
  inherits: false;
  initial-value: 1;
}
@property --tw-scale-z {
  syntax: "*";
  inherits: false;
  initial-value: 1;
}
@property --tw-rotate-x {
  syntax: "*";
  inherits: false;
}
@property --tw-rotate-y {
  syntax: "*";
  inherits: false;
}
@property --tw-rotate-z {
  syntax: "*";
  inherits: false;
}
@property --tw-skew-x {
  syntax: "*";
  inherits: false;
}
@property --tw-skew-y {
  syntax: "*";
  inherits: false;
}
@property --tw-space-y-reverse {
  syntax: "*";
  inherits: false;
  initial-value: 0;
}
@property --tw-space-x-reverse {
  syntax: "*";
  inherits: false;
  initial-value: 0;
}
@property --tw-border-style {
  syntax: "*";
  inherits: false;
  initial-value: solid;
}
@property --tw-gradient-position {
  syntax: "*";
  inherits: false;
}
@property --tw-gradient-from {
  syntax: "<color>";
  inherits: false;
  initial-value: #0000;
}
@property --tw-gradient-via {
  syntax: "<color>";
  inherits: false;
  initial-value: #0000;
}
@property --tw-gradient-to {
  syntax: "<color>";
  inherits: false;
  initial-value: #0000;
}
@property --tw-gradient-stops {
  syntax: "*";
  inherits: false;
}
@property --tw-gradient-via-stops {
  syntax: "*";
  inherits: false;
}
@property --tw-gradient-from-position {
  syntax: "<length-percentage>";
  inherits: false;
  initial-value: 0%;
}
@property --tw-gradient-via-position {
  syntax: "<length-percentage>";
  inherits: false;
  initial-value: 50%;
}
@property --tw-gradient-to-position {
  syntax: "<length-percentage>";
  inherits: false;
  initial-value: 100%;
}
@property --tw-leading {
  syntax: "*";
  inherits: false;
}
@property --tw-font-weight {
  syntax: "*";
  inherits: false;
}
@property --tw-tracking {
  syntax: "*";
  inherits: false;
}
@property --tw-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}
@property --tw-shadow-color {
  syntax: "*";
  inherits: false;
}
@property --tw-shadow-alpha {
  syntax: "<percentage>";
  inherits: false;
  initial-value: 100%;
}
@property --tw-inset-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}
@property --tw-inset-shadow-color {
  syntax: "*";
  inherits: false;
}
@property --tw-inset-shadow-alpha {
  syntax: "<percentage>";
  inherits: false;
  initial-value: 100%;
}
@property --tw-ring-color {
  syntax: "*";
  inherits: false;
}
@property --tw-ring-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}
@property --tw-inset-ring-color {
  syntax: "*";
  inherits: false;
}
@property --tw-inset-ring-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}
@property --tw-ring-inset {
  syntax: "*";
  inherits: false;
}
@property --tw-ring-offset-width {
  syntax: "<length>";
  inherits: false;
  initial-value: 0px;
}
@property --tw-ring-offset-color {
  syntax: "*";
  inherits: false;
  initial-value: #fff;
}
@property --tw-ring-offset-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}
@property --tw-outline-style {
  syntax: "*";
  inherits: false;
  initial-value: solid;
}
@property --tw-blur {
  syntax: "*";
  inherits: false;
}
@property --tw-brightness {
  syntax: "*";
  inherits: false;
}
@property --tw-contrast {
  syntax: "*";
  inherits: false;
}
@property --tw-grayscale {
  syntax: "*";
  inherits: false;
}
@property --tw-hue-rotate {
  syntax: "*";
  inherits: false;
}
@property --tw-invert {
  syntax: "*";
  inherits: false;
}
@property --tw-opacity {
  syntax: "*";
  inherits: false;
}
@property --tw-saturate {
  syntax: "*";
  inherits: false;
}
@property --tw-sepia {
  syntax: "*";
  inherits: false;
}
@property --tw-drop-shadow {
  syntax: "*";
  inherits: false;
}
@property --tw-drop-shadow-color {
  syntax: "*";
  inherits: false;
}
@property --tw-drop-shadow-alpha {
  syntax: "<percentage>";
  inherits: false;
  initial-value: 100%;
}
@property --tw-drop-shadow-size {
  syntax: "*";
  inherits: false;
}
@property --tw-backdrop-blur {
  syntax: "*";
  inherits: false;
}
@property --tw-backdrop-brightness {
  syntax: "*";
  inherits: false;
}
@property --tw-backdrop-contrast {
  syntax: "*";
  inherits: false;
}
@property --tw-backdrop-grayscale {
  syntax: "*";
  inherits: false;
}
@property --tw-backdrop-hue-rotate {
  syntax: "*";
  inherits: false;
}
@property --tw-backdrop-invert {
  syntax: "*";
  inherits: false;
}
@property --tw-backdrop-opacity {
  syntax: "*";
  inherits: false;
}
@property --tw-backdrop-saturate {
  syntax: "*";
  inherits: false;
}
@property --tw-backdrop-sepia {
  syntax: "*";
  inherits: false;
}
@property --tw-duration {
  syntax: "*";
  inherits: false;
}
@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}
@keyframes pulse {
  50% {
    opacity: 0.5;
  }
}
@keyframes bounce {
  0%,
      100% {
    transform: translateY(-25%);
    animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
  }
  50% {
    transform: none;
    animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
  }
}
@layer properties {
  @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
    *, ::before, ::after, ::backdrop {
      --tw-translate-x: 0;
      --tw-translate-y: 0;
      --tw-translate-z: 0;
      --tw-scale-x: 1;
      --tw-scale-y: 1;
      --tw-scale-z: 1;
      --tw-rotate-x: initial;
      --tw-rotate-y: initial;
      --tw-rotate-z: initial;
      --tw-skew-x: initial;
      --tw-skew-y: initial;
      --tw-space-y-reverse: 0;
      --tw-space-x-reverse: 0;
      --tw-border-style: solid;
      --tw-gradient-position: initial;
      --tw-gradient-from: #0000;
      --tw-gradient-via: #0000;
      --tw-gradient-to: #0000;
      --tw-gradient-stops: initial;
      --tw-gradient-via-stops: initial;
      --tw-gradient-from-position: 0%;
      --tw-gradient-via-position: 50%;
      --tw-gradient-to-position: 100%;
      --tw-leading: initial;
      --tw-font-weight: initial;
      --tw-tracking: initial;
      --tw-shadow: 0 0 #0000;
      --tw-shadow-color: initial;
      --tw-shadow-alpha: 100%;
      --tw-inset-shadow: 0 0 #0000;
      --tw-inset-shadow-color: initial;
      --tw-inset-shadow-alpha: 100%;
      --tw-ring-color: initial;
      --tw-ring-shadow: 0 0 #0000;
      --tw-inset-ring-color: initial;
      --tw-inset-ring-shadow: 0 0 #0000;
      --tw-ring-inset: initial;
      --tw-ring-offset-width: 0px;
      --tw-ring-offset-color: #fff;
      --tw-ring-offset-shadow: 0 0 #0000;
      --tw-outline-style: solid;
      --tw-blur: initial;
      --tw-brightness: initial;
      --tw-contrast: initial;
      --tw-grayscale: initial;
      --tw-hue-rotate: initial;
      --tw-invert: initial;
      --tw-opacity: initial;
      --tw-saturate: initial;
      --tw-sepia: initial;
      --tw-drop-shadow: initial;
      --tw-drop-shadow-color: initial;
      --tw-drop-shadow-alpha: 100%;
      --tw-drop-shadow-size: initial;
      --tw-backdrop-blur: initial;
      --tw-backdrop-brightness: initial;
      --tw-backdrop-contrast: initial;
      --tw-backdrop-grayscale: initial;
      --tw-backdrop-hue-rotate: initial;
      --tw-backdrop-invert: initial;
      --tw-backdrop-opacity: initial;
      --tw-backdrop-saturate: initial;
      --tw-backdrop-sepia: initial;
      --tw-duration: initial;
    }
  }
}
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjxubyBzb3VyY2U+IiwiLi4vLi4vbm9kZV9tb2R1bGVzL3RhaWx3aW5kY3NzL2luZGV4LmNzcyIsIi4uLy4uL3NyYy9zdHlsZXMvY29tcG9uZW50cy9hYm91dC1wYWdlLmNzcyIsIi4uLy4uL3NyYy9zdHlsZXMvY29tcG9uZW50cy9hdmF0YXItY2hhdC13aWRnZXQuY3NzIiwiLi4vLi4vc3JjL3N0eWxlcy9jb21wb25lbnRzL2JyZWFkY3J1bWIuY3NzIiwiLi4vLi4vc3JjL3N0eWxlcy9jb21wb25lbnRzL2J1dHRvbi5jc3MiLCIuLi8uLi9zcmMvc3R5bGVzL2NvbXBvbmVudHMvYnV0dG9ucy5jc3MiLCIuLi8uLi9zcmMvc3R5bGVzL2NvbXBvbmVudHMvY2FwYWJpbGl0aWVzLmNzcyIsIi4uLy4uL3NyYy9zdHlsZXMvY29tcG9uZW50cy9jYXBhYmlsaXR5LWNhcmQuY3NzIiwiLi4vLi4vc3JjL3N0eWxlcy9jb21wb25lbnRzL2NoYWxsZW5nZXMuY3NzIiwiLi4vLi4vc3JjL3N0eWxlcy9jb21wb25lbnRzL2NvZGUtZXhhbXBsZS5jc3MiLCIuLi8uLi9zcmMvc3R5bGVzL2NvbXBvbmVudHMvY29tcGFyaXNvbi10YWJsZS5jc3MiLCIuLi8uLi9zcmMvc3R5bGVzL2NvbXBvbmVudHMvY29udGFjdC1tb2RhbC5jc3MiLCIuLi8uLi9zcmMvc3R5bGVzL2NvbXBvbmVudHMvY3RhLmNzcyIsIi4uLy4uL3NyYy9zdHlsZXMvY29tcG9uZW50cy9kb2NzLW5hdmlnYXRpb24uY3NzIiwiLi4vLi4vc3JjL3N0eWxlcy9jb21wb25lbnRzL2RvY3VtZW50YXRpb24uY3NzIiwiLi4vLi4vc3JjL3N0eWxlcy9jb21wb25lbnRzL2ZhcS5jc3MiLCIuLi8uLi9zcmMvc3R5bGVzL2NvbXBvbmVudHMvZmVhdHVyZXMuY3NzIiwiLi4vLi4vc3JjL3N0eWxlcy9jb21wb25lbnRzL2Zsb2F0aW5nLWN0YS5jc3MiLCIuLi8uLi9zcmMvc3R5bGVzL2NvbXBvbmVudHMvZmxvYXRpbmctdGhlbWUtdG9nZ2xlLmNzcyIsIi4uLy4uL3NyYy9zdHlsZXMvY29tcG9uZW50cy9mb290ZXIuY3NzIiwiLi4vLi4vc3JjL3N0eWxlcy9jb21wb25lbnRzL2hlYWRlci5jc3MiLCIuLi8uLi9zcmMvc3R5bGVzL2NvbXBvbmVudHMvaGVyby5jc3MiLCIuLi8uLi9zcmMvc3R5bGVzL2NvbXBvbmVudHMvaWNvbi5jc3MiLCIuLi8uLi9zcmMvc3R5bGVzL2NvbXBvbmVudHMvbGlua2VkaW4tcG9zdC5jc3MiLCIuLi8uLi9zcmMvc3R5bGVzL2NvbXBvbmVudHMvbGlzdC1jYXJkLmNzcyIsIi4uLy4uL3NyYy9zdHlsZXMvY29tcG9uZW50cy9tZXRyaWNzQ2FyZC5jc3MiLCIuLi8uLi9zcmMvc3R5bGVzL2NvbXBvbmVudHMvcGFydG5lcnMtZGlyZWN0b3J5LXBhZ2UuY3NzIiwiLi4vLi4vc3JjL3N0eWxlcy9jb21wb25lbnRzL3ByaWNpbmctY2FyZC5jc3MiLCIuLi8uLi9zcmMvc3R5bGVzL2NvbXBvbmVudHMvc2VjdGlvbi5jc3MiLCIuLi8uLi9zcmMvc3R5bGVzL2NvbXBvbmVudHMvc2VydmljZS1zaG93Y2FzZS5jc3MiLCIuLi8uLi9zcmMvc3R5bGVzL2NvbXBvbmVudHMvc2hvd2Nhc2UuY3NzIiwiLi4vLi4vc3JjL3N0eWxlcy9jb21wb25lbnRzL3NvbHV0aW9uLWxpc3RpbmcuY3NzIiwiLi4vLi4vc3JjL3N0eWxlcy9jb21wb25lbnRzL3NwZWNpZmljYXRpb24tdGFibGUuY3NzIiwiLi4vLi4vc3JjL3N0eWxlcy9jb21wb25lbnRzL3N0aWNreS1wcmljaW5nLXNlbGVjdG9yLmNzcyIsIi4uLy4uL3NyYy9zdHlsZXMvY29tcG9uZW50cy9zdG9yeS1jYXJkLmNzcyIsIi4uLy4uL3NyYy9zdHlsZXMvY29tcG9uZW50cy9zdHJlYW1pbmctY2Fyb3VzZWwuY3NzIiwiLi4vLi4vc3JjL3N0eWxlcy9jb21wb25lbnRzL3N3aXRjaGJsYWRlLWNhcGFiaWxpdGllcy5jc3MiLCIuLi8uLi9zcmMvc3R5bGVzL2NvbXBvbmVudHMvdGNvLmNzcyIsIi4uLy4uL3NyYy9zdHlsZXMvY29tcG9uZW50cy90ZXN0aW1vbmlhbC1jYXJkLmNzcyIsIi4uLy4uL3NyYy9zdHlsZXMvY29tcG9uZW50cy90aGVtZS10b2dnbGUuY3NzIiwiLi4vLi4vc3JjL3N0eWxlcy9jb21wb25lbnRzL3RpbWVsaW5lLmNzcyIsIi4uLy4uL3NyYy9zdHlsZXMvY29tcG9uZW50cy90cnVzdC1iYW5uZXIuY3NzIiwiLi4vLi4vc3JjL3N0eWxlcy9jb21wb25lbnRzL3VzZS1jYXNlLWNhcmQuY3NzIiwiLi4vLi4vc3JjL3N0eWxlcy9jb21wb25lbnRzL3ZpZGVvLWRlbW8uY3NzIiwiLi4vLi4vc3JjL2luZGV4LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrRUFBQTtBQ3MzQkUsaUJBQW9CO0FBdDNCdEIseUNBQTBDO0FBRTFDO0VBQ0U7SUFDRTs2REFFMEQ7SUFFMUQ7OEJBRTJCO0lBRTNCLHdDQUF5QztJQUN6QywwQ0FBMkM7SUFDM0MsMENBQTJDO0lBQzNDLDBDQUEyQztJQUMzQywwQ0FBMkM7SUFDM0MsMENBQTJDO0lBQzNDLDBDQUEyQztJQUMzQywwQ0FBMkM7SUFDM0MsMENBQTJDO0lBQzNDLDBDQUEyQztJQUczQywwQ0FBMkM7SUFDM0MsNkNBQThDO0lBQzlDLDZDQUE4QztJQUM5Qyw0Q0FBNkM7SUFDN0MsMkNBQTRDO0lBQzVDLDZDQUE4QztJQUM5Qyw2Q0FBOEM7SUFDOUMsNkNBQThDO0lBQzlDLDJDQUE0QztJQUM1Qyw2Q0FBOEM7SUFTOUMsNENBQTZDO0lBTTdDLDZDQUE4QztJQUM5Qyw4Q0FBK0M7SUFDL0MsNkNBQThDO0lBQzlDLDZDQUE4QztJQUM5Qyw2Q0FBOEM7SUFDOUMsNkNBQThDO0lBQzlDLDZDQUE4QztJQUM5Qyw2Q0FBOEM7SUFDOUMsNkNBQThDO0lBQzlDLDZDQUE4QztJQWU5Qyw0Q0FBNkM7SUFDN0MsNkNBQThDO0lBQzlDLDZDQUE4QztJQUM5Qyw0Q0FBNkM7SUFDN0MsNkNBQThDO0lBQzlDLDZDQUE4QztJQUM5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QW9CO0VBQUE7RUFBcEI7SUFBQSwyQ0FBb0I7SUFBcEIsc0NBQW9CO0VBQUE7RUFBcEI7SUFBQSwyQ0FBb0I7SUFBcEIsc0NBQW9CO0VBQUE7RUFBcEI7SUFBQSw2Q0FBb0I7SUFBcEIsd0NBQW9CO0VBQUE7RUFBcEI7SUFBQSxtQ0FBb0I7SUFBcEIsb0NBQW9CO0VBQUE7RUFBcEI7SUFBQSw0QkFBb0I7RUFBQTtFQUFwQjtJQUFBLDRCQUFvQjtFQUFBO0VBQXBCO0lBQUEsNEJBQW9CO0VBQUE7RUFBcEI7SUFBQSw0QkFBb0I7RUFBQTtFQUFwQjtJQUFBLDRCQUFvQjtFQUFBO0VBQXBCO0lBQUEsNEJBQW9CO0VBQUE7RUFBcEI7SUFBQSw0QkFBb0I7RUFBQTtFQUFwQjtJQUFBLDRCQUFvQjtFQUFBO0VBQXBCO0lBQUEsNEJBQW9CO0VBQUE7RUFBcEI7SUFBQSw2QkFBb0I7RUFBQTtFQUFwQjtJQUFBLDZCQUFvQjtFQUFBO0VBQXBCO0lBQUEsNkJBQW9CO0VBQUE7RUFBcEI7SUFBQSw2QkFBb0I7RUFBQTtFQUFwQjtJQUFBLDZCQUFvQjtFQUFBO0VBQXBCO0lBQUEsNkJBQW9CO0VBQUE7RUFBcEI7SUFBQSw2QkFBb0I7RUFBQTtFQUFwQjtJQUFBLDhCQUFvQjtFQUFBO0VBQXBCO0lBQUEsOEJBQW9CO0VBQUE7RUFBcEI7SUFBQSw4QkFBb0I7RUFBQTtFQUFwQjtJQUFBLDhCQUFvQjtFQUFBO0VBQXBCO0lBQUEsNEJBQW9CO0VBQUE7RUFBcEI7SUFBQSw4QkFBb0I7RUFBQTtFQUFwQjtJQUFBLDhCQUFvQjtFQUFBO0VBQXBCO0lBQUEsOEJBQW9CO0VBQUE7RUFBcEI7SUFBQSw4QkFBb0I7RUFBQTtFQUFwQjtJQUFBLDhCQUFvQjtFQUFBO0VBQXBCO0lBQUEsMkJBQW9CO0VBQUE7RUFBcEI7SUFBQSwyQkFBb0I7RUFBQTtFQUFwQjtJQUFBLDJCQUFvQjtFQUFBO0VBQXBCO0lBQUEsNkJBQW9CO0VBQUE7RUFBcEI7SUFBQSw2QkFBb0I7RUFBQTtFQUFwQjtJQUFBLDZCQUFvQjtFQUFBO0VBQXBCO0lBQUEsNkJBQW9CO0VBQUE7RUFBcEI7SUFBQSw2QkFBb0I7RUFBQTtFQUFwQjtJQUFBLDZCQUFvQjtFQUFBO0VBQXBCO0lBQUEsNkJBQW9CO0VBQUE7RUFBcEI7SUFBQSxrQkFBb0I7RUFBQTtFQUFwQjtJQUFBLHlCQUFvQjtFQUFBO0VBQXBCO0lBQUEsZ0RBQW9CO0lBQXBCO01BQUEsK0RBQW9CO0lBQUE7RUFBQTtFQUFwQjtJQUFBLGdEQUFvQjtJQUFwQjtNQUFBLCtEQUFvQjtJQUFBO0VBQUE7RUFBcEI7SUFBQSw4QkFBb0I7RUFBQTtFQUFwQjtJQUFBLDhCQUFvQjtFQUFBO0VBQXBCO0lBQUEseUJBQW9CO0VBQUE7RUFBcEI7SUFBQSxrQkFBb0I7RUFBQTtFQUFwQjtJQUFBLCtCQUFvQjtFQUFBO0VBQXBCO0lBQUEsbUNBQW9CO0lBQXBCLGtDQUFvQjtFQUFBO0VBQXBCO0lBQUE7TUFBQSw2QkFBb0I7SUFBQTtJQUFwQjtNQUFBLDZCQUFvQjtJQUFBO0VBQUE7RUFBcEI7SUFBQSxZQUFvQjtFQUFBO0VBQXBCO0lBQUEsWUFBb0I7RUFBQTtFQUFwQjtJQUFBLFlBQW9CO0VBQUE7RUFBcEI7SUFBQSxZQUFvQjtFQUFBO0VBQXBCO0lBQUEsWUFBb0I7RUFBQTtFQUFwQjtJQUFBLDBIQUFvQjtJQUFwQixzSUFBb0I7RUFBQTtFQUFwQjtJQUFBLHdFQUFvQjtJQUFwQixzSUFBb0I7RUFBQTtFQUFwQjtJQUFBLCtIQUFvQjtJQUFwQixzSUFBb0I7RUFBQTtFQUFwQjtJQUFBLDZIQUFvQjtJQUFwQixzSUFBb0I7RUFBQTtFQUFwQjtJQUFBLDBIQUFvQjtJQUFwQixzSUFBb0I7RUFBQTtFQUFwQjtJQUFBLGdJQUFvQjtJQUFwQixzSUFBb0I7RUFBQTtFQUFwQjtJQUFBLHdIQUFvQjtJQUFwQixzSUFBb0I7RUFBQTtFQUFwQjtJQUFBLHdIQUFvQjtJQUFwQixzSUFBb0I7RUFBQTtFQUFwQjtJQUFBLHdDQUFvQjtFQUFBO0VBQXBCO0lBQUEsc0NBQW9CO0lBQXBCLGtCQUFvQjtFQUFBO0VBQXBCO0lBQUEsK0JBQW9CO0lBQXBCLDBMQUFvQjtFQUFBO0VBQXBCO0lBQUEsd0NBQW9CO0lBQXBCLHdSQUFvQjtJQUFwQixnUkFBb0I7RUFBQTtFQUFwQjtJQUFBLHdSQUFvQjtJQUFwQixnUkFBb0I7RUFBQTtFQUFwQjtJQUFBLHFWQUFvQjtJQUFwQixxRkFBb0I7SUFBcEIsMkVBQW9CO0VBQUE7RUFBcEI7SUFBQSx3QkFBb0I7SUFBcEIscUZBQW9CO0lBQXBCLDJFQUFvQjtFQUFBO0VBQXBCO0lBQUEsdUtBQW9CO0lBQXBCLHFGQUFvQjtJQUFwQiwyRUFBb0I7RUFBQTtFQUFwQjtJQUFBLCtCQUFvQjtJQUFwQixxRkFBb0I7SUFBcEIsMkVBQW9CO0VBQUE7RUFBcEI7SUFBQSx3REFBb0I7SUFBcEIscUZBQW9CO0lBQXBCLDJFQUFvQjtFQUFBO0VBQXBCO0lBQUEsb0JBQW9CO0lBQXBCLDBCQUFvQjtFQUFBO0VBQXBCO0lBQUEsb0JBQW9CO0lBQXBCLDBCQUFvQjtFQUFBO0VBQXBCO0lBQUE7TUFBQTtRQUFBLGtCQUFvQjtRQUFwQixrQkFBb0I7UUFBcEIsa0JBQW9CO1FBQXBCLDBDQUFvQjtNQUFBO0lBQUE7RUFBQTtFQUFwQjtJQUFBO01BQUE7UUFBQSxnQ0FBb0I7TUFBQTtJQUFBO0VBQUE7RUFBcEI7SUFBQTtNQUFBLHVDQUFvQjtJQUFBO0VBQUE7RUFBcEI7SUFBQTtNQUFBO1FBQUEsMkNBQW9CO1FBQXBCLHNEQUFvQjtNQUFBO0lBQUE7RUFBQTtFQUFwQjtJQUFBO01BQUE7UUFBQSxrQkFBb0I7UUFBcEIsa0JBQW9CO1FBQXBCLGtCQUFvQjtRQUFwQiwwQ0FBb0I7TUFBQTtJQUFBO0VBQUE7RUFBcEI7SUFBQTtNQUFBO1FBQUEsa0JBQW9CO1FBQXBCLGtCQUFvQjtRQUFwQixrQkFBb0I7UUFBcEIsMENBQW9CO01BQUE7SUFBQTtFQUFBO0VBQXBCO0lBQUE7TUFBQTtRQUFBLHVDQUFvQjtNQUFBO0lBQUE7RUFBQTtFQUFwQjtJQUFBO01BQUE7UUFBQSx5Q0FBb0I7TUFBQTtJQUFBO0VBQUE7RUFBcEI7SUFBQTtNQUFBO1FBQUEsdUNBQW9CO01BQUE7SUFBQTtFQUFBO0VBQXBCO0lBQUE7TUFBQTtRQUFBLHdDQUFvQjtNQUFBO0lBQUE7RUFBQTtFQUFwQjtJQUFBO01BQUE7UUFBQSx1Q0FBb0I7TUFBQTtJQUFBO0VBQUE7RUFBcEI7SUFBQTtNQUFBO1FBQUEsMkRBQW9CO1FBQXBCO1VBQUEsMEVBQW9CO1FBQUE7TUFBQTtJQUFBO0VBQUE7RUFBcEI7SUFBQTtNQUFBO1FBQUEseUNBQW9CO1FBQXBCLDhMQUFvQjtNQUFBO0lBQUE7RUFBQTtFQUFwQjtJQUFBO01BQUE7UUFBQSx5Q0FBb0I7UUFBcEIsOExBQW9CO01BQUE7SUFBQTtFQUFBO0VBQXBCO0lBQUE7TUFBQTtRQUFBLDRCQUFvQjtNQUFBO0lBQUE7RUFBQTtFQUFwQjtJQUFBO01BQUE7UUFBQSw0QkFBb0I7TUFBQTtJQUFBO0VBQUE7RUFBcEI7SUFBQTtNQUFBO1FBQUEsNEJBQW9CO01BQUE7SUFBQTtFQUFBO0VBQXBCO0lBQUE7TUFBQTtRQUFBLDRCQUFvQjtNQUFBO0lBQUE7RUFBQTtFQUFwQjtJQUFBO01BQUE7UUFBQSw4QkFBb0I7TUFBQTtJQUFBO0VBQUE7RUFBcEI7SUFBQTtNQUFBO1FBQUEsNkJBQW9CO01BQUE7SUFBQTtFQUFBO0VBQXBCO0lBQUE7TUFBQTtRQUFBLCtCQUFvQjtNQUFBO0lBQUE7RUFBQTtFQUFwQjtJQUFBO01BQUE7UUFBQSx3RUFBb0I7UUFBcEIsc0lBQW9CO01BQUE7SUFBQTtFQUFBO0VBQXBCO0lBQUE7TUFBQTtRQUFBLGdJQUFvQjtRQUFwQixzSUFBb0I7TUFBQTtJQUFBO0VBQUE7RUFBcEI7SUFBQTtNQUFBLHdIQUFvQjtNQUFwQixzSUFBb0I7SUFBQTtFQUFBO0VBQXBCO0lBQUE7TUFBQSxzQ0FBb0I7SUFBQTtFQUFBO0VBQXBCO0lBQUE7TUFBQSx3Q0FBb0I7SUFBQTtFQUFBO0VBQXBCO0lBQUE7TUFBQSwyQkFBb0I7TUFBcEIsNEdBQW9CO0lBQUE7RUFBQTtFQUFwQjtJQUFBO01BQUEsd0JBQW9CO01BQXBCLG1CQUFvQjtJQUFBO0VBQUE7RUFBcEI7SUFBQTtNQUFBLGNBQW9CO0lBQUE7RUFBQTtFQUFwQjtJQUFBO01BQUEsbUJBQW9CO0lBQUE7RUFBQTtFQUFwQjtJQUFBO01BQUEsd0NBQW9CO0lBQUE7RUFBQTtFQUFwQjtJQUFBO01BQUEsMEJBQW9CO01BQXBCLDREQUFvQjtJQUFBO0VBQUE7RUFBcEI7SUFBQTtNQUFBLGdEQUFvQjtJQUFBO0VBQUE7RUFBcEI7SUFBQTtNQUFBLGdEQUFvQjtJQUFBO0VBQUE7RUFBcEI7SUFBQTtNQUFBLGdEQUFvQjtJQUFBO0VBQUE7RUFBcEI7SUFBQTtNQUFBLHNCQUFvQjtJQUFBO0VBQUE7RUFBcEI7SUFBQTtNQUFBLG1CQUFvQjtJQUFBO0VBQUE7RUFBcEI7SUFBQTtNQUFBLGlDQUFvQjtJQUFBO0VBQUE7RUFBcEI7SUFBQTtNQUFBLHVDQUFvQjtJQUFBO0VBQUE7RUFBcEI7SUFBQTtNQUFBLDBCQUFvQjtNQUFwQiw0REFBb0I7SUFBQTtFQUFBO0VBQXBCO0lBQUE7TUFBQSwwQkFBb0I7TUFBcEIsNERBQW9CO0lBQUE7RUFBQTtFQUFwQjtJQUFBO01BQUEsMEJBQW9CO01BQXBCLDREQUFvQjtJQUFBO0VBQUE7RUFBcEI7SUFBQTtNQUFBLDBCQUFvQjtNQUFwQiw0REFBb0I7SUFBQTtFQUFBO0VBQXBCO0lBQUE7TUFBQSwwQkFBb0I7TUFBcEIsNERBQW9CO0lBQUE7RUFBQTtFQUFwQjtJQUFBO01BQUEsMEJBQW9CO01BQXBCLDREQUFvQjtJQUFBO0VBQUE7RUFBcEI7SUFBQTtNQUFBLGdCQUFvQjtJQUFBO0VBQUE7RUFBcEI7SUFBQTtNQUFBLGFBQW9CO0lBQUE7RUFBQTtFQUFwQjtJQUFBO01BQUEsY0FBb0I7SUFBQTtFQUFBO0VBQXBCO0lBQUE7TUFBQSxhQUFvQjtJQUFBO0VBQUE7RUFBcEI7SUFBQTtNQUFBLHVCQUFvQjtJQUFBO0VBQUE7RUFBcEI7SUFBQTtNQUFBLHVCQUFvQjtJQUFBO0VBQUE7RUFBcEI7SUFBQTtNQUFBLGdEQUFvQjtJQUFBO0VBQUE7RUFBcEI7SUFBQTtN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ZUFBb0I7RUFBcEIsZ0JBQW9CO0FBQUE7QUFBcEI7RUFBQSxXQUFvQjtFQUFwQixlQUFvQjtFQUFwQixnQkFBb0I7QUFBQTtBQUFwQjtFQUFBLFdBQW9CO0VBQXBCLGVBQW9CO0VBQXBCLGdCQUFvQjtBQUFBO0FBQXBCO0VBQUEsV0FBb0I7RUFBcEIsZUFBb0I7RUFBcEIsZ0JBQW9CO0FBQUE7QUFBcEI7RUFBQSxXQUFvQjtFQUFwQixlQUFvQjtFQUFwQixnQkFBb0I7QUFBQTtBQUFwQjtFQUFBLFdBQW9CO0VBQXBCLGVBQW9CO0FBQUE7QUFBcEI7RUFBQSxXQUFvQjtFQUFwQixlQUFvQjtBQUFBO0FBQXBCO0VBQUEsV0FBb0I7RUFBcEIsZUFBb0I7QUFBQTtBQUFwQjtFQUFBLFdBQW9CO0VBQXBCLGVBQW9CO0FBQUE7QUFBcEI7RUFBQSxXQUFvQjtFQUFwQixlQUFvQjtBQUFBO0FBQXBCO0VBQUEsV0FBb0I7RUFBcEIsZUFBb0I7RUFBcEIsZ0JBQW9CO0FBQUE7QUFBcEI7RUFBQSxXQUFvQjtFQUFwQixlQUFvQjtFQUFwQixnQkFBb0I7QUFBQTtBQUFwQjtFQUFBLFdBQW9CO0VBQXBCLGVBQW9CO0VBQXBCLG9CQUFvQjtBQUFBO0FBQXBCO0VBQUEsV0FBb0I7RUFBcEIsZUFBb0I7QUFBQTtBQUFwQjtFQUFBLGlCQUFvQjtFQUFwQixlQUFvQjtFQUFwQixvQkFBb0I7QUFBQTtBQUFwQjtFQUFBLGlCQUFvQjtFQUFwQixlQUFvQjtFQUFwQixvQkFBb0I7QUFBQTtBQUFwQjtFQUFBLGlCQUFvQjtFQUFwQixlQUFvQjtFQUFwQixvQkFBb0I7QUFBQTtBQUFwQjtFQUFBLFdBQW9CO0VBQXBCLGVBQW9CO0FBQUE7QUFBcEI7RUFBQSxXQUFvQjtFQUFwQixlQUFvQjtBQUFBO0FBQXBCO0VBQUEsNkJBQW9CO0VBQXBCLGVBQW9CO0VBQXBCLGlCQUFvQjtBQUFBO0FBQXBCO0VBQUEsNkJBQW9CO0VBQXBCLGVBQW9CO0VBQXBCLGtCQUFvQjtBQUFBO0FBQXBCO0VBQUEsNkJBQW9CO0VBQXBCLGVBQW9CO0VBQXBCLG1CQUFvQjtBQUFBO0FBQXBCO0VBQUEsV0FBb0I7RUFBcEIsZUFBb0I7QUFBQTtBQUFwQjtFQUFBLFdBQW9CO0VBQXBCLGVBQW9CO0FBQUE7QUFBcEI7RUFBQSxXQUFvQjtFQUFwQixlQUFvQjtBQUFBO0FBQXBCO0VBQUEsV0FBb0I7RUFBcEIsZUFBb0I7RUFBcEIsd0JBQW9CO0FBQUE7QUFBcEI7RUFBQSxXQUFvQjtFQUFwQixlQUFvQjtBQUFBO0FBQXBCO0VBQUEsc0JBQW9CO0VBQXBCLGVBQW9CO0VBQXBCLG1CQUFvQjtBQUFBO0FBQXBCO0VBQUEsV0FBb0I7RUFBcEIsZUFBb0I7RUFBcEIsd0JBQW9CO0FBQUE7QUFBcEI7RUFBQSxXQUFvQjtFQUFwQixlQUFvQjtBQUFBO0FBQXBCO0VBQUEsc0JBQW9CO0VBQXBCLGVBQW9CO0VBQXBCLG1CQUFvQjtBQUFBO0FBQXBCO0VBQUEsV0FBb0I7RUFBcEIsZUFBb0I7QUFBQTtBQUFwQjtFQUFBLFdBQW9CO0VBQXBCLGVBQW9CO0VBQXBCLHdCQUFvQjtBQUFBO0FBQXBCO0VBQUEsV0FBb0I7RUFBcEIsZUFBb0I7QUFBQTtBQUFwQjtFQUFBLFdBQW9CO0VBQXBCLGVBQW9CO0VBQXBCLHdCQUFvQjtBQUFBO0FBQXBCO0VBQUEsV0FBb0I7RUFBcEIsZUFBb0I7QUFBQTtBQUFwQjtFQUFBLGtCQUFvQjtFQUFwQixlQUFvQjtFQUFwQixrQkFBb0I7QUFBQTtBQUFwQjtFQUFBLFdBQW9CO0VBQXBCLGVBQW9CO0VBQXBCLG1CQUFvQjtBQUFBO0FBQXBCO0VBQUEsV0FBb0I7RUFBcEIsZUFBb0I7RUFBcEIsd0JBQW9CO0FBQUE7QUFBcEI7RUFBQSxXQUFvQjtFQUFwQixlQUFvQjtFQUFwQixvQkFBb0I7QUFBQTtBQUFwQjtFQUFBLFdBQW9CO0VBQXBCLGVBQW9CO0FBQUE7QUFBcEI7RUFBQSxXQUFvQjtFQUFwQixlQUFvQjtBQUFBO0FBQXBCO0VBQUEsV0FBb0I7RUFBcEIsZUFBb0I7QUFBQTtBQUFwQjtFQUFBLFdBQW9CO0VBQXBCLGVBQW9CO0FBQUE7QUFBcEI7RUFBQSxXQUFvQjtFQUFwQixlQUFvQjtBQUFBO0FBQXBCO0VBQUEsV0FBb0I7RUFBcEIsZUFBb0I7QUFBQTtBQUFwQjtFQUFBLFdBQW9CO0VBQXBCLGVBQW9CO0FBQUE7QUFBcEI7RUFBQSxXQUFvQjtFQUFwQixlQUFvQjtBQUFBO0FBQXBCO0VBQUEsV0FBb0I7RUFBcEIsZUFBb0I7QUFBQTtBQUFwQjtFQUFBLFdBQW9CO0VBQXBCLGVBQW9CO0FBQUE7QUFBcEI7RUFBQSxXQUFvQjtFQUFwQixlQUFvQjtBQUFBO0FBQXBCO0VBQUEsc0JBQW9CO0VBQXBCLGVBQW9CO0VBQXBCLG1CQUFvQjtBQUFBO0FBQXBCO0VBQUEsV0FBb0I7RUFBcEIsZUFBb0I7QUFBQTtBQUFwQjtFQUFBLFdBQW9CO0VBQXBCLGVBQW9CO0FBQUE7QUFBcEI7RUFBQSxXQUFvQjtFQUFwQixlQUFvQjtBQUFBO0FBQXBCO0VBQUEsV0FBb0I7RUFBcEIsZUFBb0I7QUFBQTtBQUFwQjtFQUFBLFdBQW9CO0VBQXBCLGVBQW9CO0FBQUE7QUFBcEI7RUFBQSxXQUFvQjtFQUFwQixlQUFvQjtBQUFBO0FBQXBCO0VBQUEsV0FBb0I7RUFBcEIsZUFBb0I7QUFBQTtBQUFwQjtFQUFBLFdBQW9CO0VBQXBCLGVBQW9CO0FBQUE7QUFBcEI7RUFBQSxXQUFvQjtFQUFwQixlQUFvQjtBQUFBO0FBQXBCO0VBQUEsV0FBb0I7RUFBcEIsZUFBb0I7QUFBQTtBQUFwQjtFQUFBLFdBQW9CO0VBQXBCLGVBQW9CO0FBQUE7QUFuZWxCO0VBQ0U7SUFDRSx5QkFBMEI7RUFDM0I7QUFDRjtBQVVEO0VBQ0U7SUFDRSxZQUFhO0VBQ2Q7QUFDRjtBQUVEO0VBQ0U7O0lBRUUsMkJBQTRCO0lBQzVCLHFEQUFzRDtFQUN2RDtFQUVEO0lBQ0UsZUFBZ0I7SUFDaEIscURBQXNEO0VBQ3ZEO0FBQ0Y7QUFvY0g7RUFBQTtJQUFBO01BQUEsbUJBQW9CO01BQXBCLG1CQUFvQjtNQUFwQixtQkFBb0I7TUFBcEIsZUFBb0I7TUFBcEIsZUFBb0I7TUFBcEIsZUFBb0I7TUFBcEIsc0JBQW9CO01BQXBCLHNCQUFvQjtNQUFwQixzQkFBb0I7TUFBcEIsb0JBQW9CO01BQXBCLG9CQUFvQjtNQUFwQix1QkFBb0I7TUFBcEIsdUJBQW9CO01BQXBCLHdCQUFvQjtNQUFwQiwrQkFBb0I7TUFBcEIseUJBQW9CO01BQXBCLHdCQUFvQjtNQUFwQix1QkFBb0I7TUFBcEIsNEJBQW9CO01BQXBCLGdDQUFvQjtNQUFwQiwrQkFBb0I7TUFBcEIsK0JBQW9CO01BQXBCLCtCQUFvQjtNQUFwQixxQkFBb0I7TUFBcEIseUJBQW9CO01BQXBCLHNCQUFvQjtNQUFwQixzQkFBb0I7TUFBcEIsMEJBQW9CO01BQXBCLHVCQUFvQjtNQUFwQiw0QkFBb0I7TUFBcEIsZ0NBQW9CO01BQXBCLDZCQUFvQjtNQUFwQix3QkFBb0I7TUFBcEIsMkJBQW9CO01BQXBCLDhCQUFvQjtNQUFwQixpQ0FBb0I7TUFBcEIsd0JBQW9CO01BQXBCLDJCQUFvQjtNQUFwQiw0QkFBb0I7TUFBcEIsa0NBQW9CO01BQXBCLHlCQUFvQjtNQUFwQixrQkFBb0I7TUFBcEIsd0JBQW9CO01BQXBCLHNCQUFvQjtNQUFwQix1QkFBb0I7TUFBcEIsd0JBQW9CO01BQXBCLG9CQUFvQjtNQUFwQixxQkFBb0I7TUFBcEIsc0JBQW9CO01BQXBCLG1CQUFvQjtNQUFwQix5QkFBb0I7TUFBcEIsK0JBQW9CO01BQXBCLDRCQUFvQjtNQUFwQiw4QkFBb0I7TUFBcEIsMkJBQW9CO01BQXBCLGlDQUFvQjtNQUFwQiwrQkFBb0I7TUFBcEIsZ0NBQW9CO01BQXBCLGlDQUFvQjtNQUFwQiw2QkFBb0I7TUFBcEIsOEJBQW9CO01BQXBCLCtCQUFvQjtNQUFwQiw0QkFBb0I7TUFBcEIsc0JBQW9CO0lBQUE7RUFBQTtBQUFBIiwiZmlsZSI6Im1haW4uY3NzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJAbGF5ZXIgdGhlbWUsIGJhc2UsIGNvbXBvbmVudHMsIHV0aWxpdGllcztcblxuQGxheWVyIHRoZW1lIHtcbiAgQHRoZW1lIGRlZmF1bHQge1xuICAgIC0tZm9udC1zYW5zOlxuICAgICAgdWktc2Fucy1zZXJpZiwgc3lzdGVtLXVpLCBzYW5zLXNlcmlmLCBcIkFwcGxlIENvbG9yIEVtb2ppXCIsXG4gICAgICBcIlNlZ29lIFVJIEVtb2ppXCIsIFwiU2Vnb2UgVUkgU3ltYm9sXCIsIFwiTm90byBDb2xvciBFbW9qaVwiO1xuICAgIC0tZm9udC1zZXJpZjogdWktc2VyaWYsIEdlb3JnaWEsIENhbWJyaWEsIFwiVGltZXMgTmV3IFJvbWFuXCIsIFRpbWVzLCBzZXJpZjtcbiAgICAtLWZvbnQtbW9ubzpcbiAgICAgIHVpLW1vbm9zcGFjZSwgU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCBcIkxpYmVyYXRpb24gTW9ub1wiLFxuICAgICAgXCJDb3VyaWVyIE5ld1wiLCBtb25vc3BhY2U7XG5cbiAgICAtLWNvbG9yLXJlZC01MDogb2tsY2goOTcuMSUgMC4wMTMgMTcuMzgpO1xuICAgIC0tY29sb3ItcmVkLTEwMDogb2tsY2goOTMuNiUgMC4wMzIgMTcuNzE3KTtcbiAgICAtLWNvbG9yLXJlZC0yMDA6IG9rbGNoKDg4LjUlIDAuMDYyIDE4LjMzNCk7XG4gICAgLS1jb2xvci1yZWQtMzAwOiBva2xjaCg4MC44JSAwLjExNCAxOS41NzEpO1xuICAgIC0tY29sb3ItcmVkLTQwMDogb2tsY2goNzAuNCUgMC4xOTEgMjIuMjE2KTtcbiAgICAtLWNvbG9yLXJlZC01MDA6IG9rbGNoKDYzLjclIDAuMjM3IDI1LjMzMSk7XG4gICAgLS1jb2xvci1yZWQtNjAwOiBva2xjaCg1Ny43JSAwLjI0NSAyNy4zMjUpO1xuICAgIC0tY29sb3ItcmVkLTcwMDogb2tsY2goNTAuNSUgMC4yMTMgMjcuNTE4KTtcbiAgICAtLWNvbG9yLXJlZC04MDA6IG9rbGNoKDQ0LjQlIDAuMTc3IDI2Ljg5OSk7XG4gICAgLS1jb2xvci1yZWQtOTAwOiBva2xjaCgzOS42JSAwLjE0MSAyNS43MjMpO1xuICAgIC0tY29sb3ItcmVkLTk1MDogb2tsY2goMjUuOCUgMC4wOTIgMjYuMDQyKTtcblxuICAgIC0tY29sb3Itb3JhbmdlLTUwOiBva2xjaCg5OCUgMC4wMTYgNzMuNjg0KTtcbiAgICAtLWNvbG9yLW9yYW5nZS0xMDA6IG9rbGNoKDk1LjQlIDAuMDM4IDc1LjE2NCk7XG4gICAgLS1jb2xvci1vcmFuZ2UtMjAwOiBva2xjaCg5MC4xJSAwLjA3NiA3MC42OTcpO1xuICAgIC0tY29sb3Itb3JhbmdlLTMwMDogb2tsY2goODMuNyUgMC4xMjggNjYuMjkpO1xuICAgIC0tY29sb3Itb3JhbmdlLTQwMDogb2tsY2goNzUlIDAuMTgzIDU1LjkzNCk7XG4gICAgLS1jb2xvci1vcmFuZ2UtNTAwOiBva2xjaCg3MC41JSAwLjIxMyA0Ny42MDQpO1xuICAgIC0tY29sb3Itb3JhbmdlLTYwMDogb2tsY2goNjQuNiUgMC4yMjIgNDEuMTE2KTtcbiAgICAtLWNvbG9yLW9yYW5nZS03MDA6IG9rbGNoKDU1LjMlIDAuMTk1IDM4LjQwMik7XG4gICAgLS1jb2xvci1vcmFuZ2UtODAwOiBva2xjaCg0NyUgMC4xNTcgMzcuMzA0KTtcbiAgICAtLWNvbG9yLW9yYW5nZS05MDA6IG9rbGNoKDQwLjglIDAuMTIzIDM4LjE3Mik7XG4gICAgLS1jb2xvci1vcmFuZ2UtOTUwOiBva2xjaCgyNi42JSAwLjA3OSAzNi4yNTkpO1xuXG4gICAgLS1jb2xvci1hbWJlci01MDogb2tsY2goOTguNyUgMC4wMjIgOTUuMjc3KTtcbiAgICAtLWNvbG9yLWFtYmVyLTEwMDogb2tsY2goOTYuMiUgMC4wNTkgOTUuNjE3KTtcbiAgICAtLWNvbG9yLWFtYmVyLTIwMDogb2tsY2goOTIuNCUgMC4xMiA5NS43NDYpO1xuICAgIC0tY29sb3ItYW1iZXItMzAwOiBva2xjaCg4Ny45JSAwLjE2OSA5MS42MDUpO1xuICAgIC0tY29sb3ItYW1iZXItNDAwOiBva2xjaCg4Mi44JSAwLjE4OSA4NC40MjkpO1xuICAgIC0tY29sb3ItYW1iZXItNTAwOiBva2xjaCg3Ni45JSAwLjE4OCA3MC4wOCk7XG4gICAgLS1jb2xvci1hbWJlci02MDA6IG9rbGNoKDY2LjYlIDAuMTc5IDU4LjMxOCk7XG4gICAgLS1jb2xvci1hbWJlci03MDA6IG9rbGNoKDU1LjUlIDAuMTYzIDQ4Ljk5OCk7XG4gICAgLS1jb2xvci1hbWJlci04MDA6IG9rbGNoKDQ3LjMlIDAuMTM3IDQ2LjIwMSk7XG4gICAgLS1jb2xvci1hbWJlci05MDA6IG9rbGNoKDQxLjQlIDAuMTEyIDQ1LjkwNCk7XG4gICAgLS1jb2xvci1hbWJlci05NTA6IG9rbGNoKDI3LjklIDAuMDc3IDQ1LjYzNSk7XG5cbiAgICAtLWNvbG9yLXllbGxvdy01MDogb2tsY2goOTguNyUgMC4wMjYgMTAyLjIxMik7XG4gICAgLS1jb2xvci15ZWxsb3ctMTAwOiBva2xjaCg5Ny4zJSAwLjA3MSAxMDMuMTkzKTtcbiAgICAtLWNvbG9yLXllbGxvdy0yMDA6IG9rbGNoKDk0LjUlIDAuMTI5IDEwMS41NCk7XG4gICAgLS1jb2xvci15ZWxsb3ctMzAwOiBva2xjaCg5MC41JSAwLjE4MiA5OC4xMTEpO1xuICAgIC0tY29sb3IteWVsbG93LTQwMDogb2tsY2goODUuMiUgMC4xOTkgOTEuOTM2KTtcbiAgICAtLWNvbG9yLXllbGxvdy01MDA6IG9rbGNoKDc5LjUlIDAuMTg0IDg2LjA0Nyk7XG4gICAgLS1jb2xvci15ZWxsb3ctNjAwOiBva2xjaCg2OC4xJSAwLjE2MiA3NS44MzQpO1xuICAgIC0tY29sb3IteWVsbG93LTcwMDogb2tsY2goNTUuNCUgMC4xMzUgNjYuNDQyKTtcbiAgICAtLWNvbG9yLXllbGxvdy04MDA6IG9rbGNoKDQ3LjYlIDAuMTE0IDYxLjkwNyk7XG4gICAgLS1jb2xvci15ZWxsb3ctOTAwOiBva2xjaCg0Mi4xJSAwLjA5NSA1Ny43MDgpO1xuICAgIC0tY29sb3IteWVsbG93LTk1MDogb2tsY2goMjguNiUgMC4wNjYgNTMuODEzKTtcblxuICAgIC0tY29sb3ItbGltZS01MDogb2tsY2goOTguNiUgMC4wMzEgMTIwLjc1Nyk7XG4gICAgLS1jb2xvci1saW1lLTEwMDogb2tsY2goOTYuNyUgMC4wNjcgMTIyLjMyOCk7XG4gICAgLS1jb2xvci1saW1lLTIwMDogb2tsY2goOTMuOCUgMC4xMjcgMTI0LjMyMSk7XG4gICAgLS1jb2xvci1saW1lLTMwMDogb2tsY2goODkuNyUgMC4xOTYgMTI2LjY2NSk7XG4gICAgLS1jb2xvci1saW1lLTQwMDogb2tsY2goODQuMSUgMC4yMzggMTI4Ljg1KTtcbiAgICAtLWNvbG9yLWxpbWUtNTAwOiBva2xjaCg3Ni44JSAwLjIzMyAxMzAuODUpO1xuICAgIC0tY29sb3ItbGltZS02MDA6IG9rbGNoKDY0LjglIDAuMiAxMzEuNjg0KTtcbiAgICAtLWNvbG9yLWxpbWUtNzAwOiBva2xjaCg1My4yJSAwLjE1NyAxMzEuNTg5KTtcbiAgICAtLWNvbG9yLWxpbWUtODAwOiBva2xjaCg0NS4zJSAwLjEyNCAxMzAuOTMzKTtcbiAgICAtLWNvbG9yLWxpbWUtOTAwOiBva2xjaCg0MC41JSAwLjEwMSAxMzEuMDYzKTtcbiAgICAtLWNvbG9yLWxpbWUtOTUwOiBva2xjaCgyNy40JSAwLjA3MiAxMzIuMTA5KTtcblxuICAgIC0tY29sb3ItZ3JlZW4tNTA6IG9rbGNoKDk4LjIlIDAuMDE4IDE1NS44MjYpO1xuICAgIC0tY29sb3ItZ3JlZW4tMTAwOiBva2xjaCg5Ni4yJSAwLjA0NCAxNTYuNzQzKTtcbiAgICAtLWNvbG9yLWdyZWVuLTIwMDogb2tsY2goOTIuNSUgMC4wODQgMTU1Ljk5NSk7XG4gICAgLS1jb2xvci1ncmVlbi0zMDA6IG9rbGNoKDg3LjElIDAuMTUgMTU0LjQ0OSk7XG4gICAgLS1jb2xvci1ncmVlbi00MDA6IG9rbGNoKDc5LjIlIDAuMjA5IDE1MS43MTEpO1xuICAgIC0tY29sb3ItZ3JlZW4tNTAwOiBva2xjaCg3Mi4zJSAwLjIxOSAxNDkuNTc5KTtcbiAgICAtLWNvbG9yLWdyZWVuLTYwMDogb2tsY2goNjIuNyUgMC4xOTQgMTQ5LjIxNCk7XG4gICAgLS1jb2xvci1ncmVlbi03MDA6IG9rbGNoKDUyLjclIDAuMTU0IDE1MC4wNjkpO1xuICAgIC0tY29sb3ItZ3JlZW4tODAwOiBva2xjaCg0NC44JSAwLjExOSAxNTEuMzI4KTtcbiAgICAtLWNvbG9yLWdyZWVuLTkwMDogb2tsY2goMzkuMyUgMC4wOTUgMTUyLjUzNSk7XG4gICAgLS1jb2xvci1ncmVlbi05NTA6IG9rbGNoKDI2LjYlIDAuMDY1IDE1Mi45MzQpO1xuXG4gICAgLS1jb2xvci1lbWVyYWxkLTUwOiBva2xjaCg5Ny45JSAwLjAyMSAxNjYuMTEzKTtcbiAgICAtLWNvbG9yLWVtZXJhbGQtMTAwOiBva2xjaCg5NSUgMC4wNTIgMTYzLjA1MSk7XG4gICAgLS1jb2xvci1lbWVyYWxkLTIwMDogb2tsY2goOTAuNSUgMC4wOTMgMTY0LjE1KTtcbiAgICAtLWNvbG9yLWVtZXJhbGQtMzAwOiBva2xjaCg4NC41JSAwLjE0MyAxNjQuOTc4KTtcbiAgICAtLWNvbG9yLWVtZXJhbGQtNDAwOiBva2xjaCg3Ni41JSAwLjE3NyAxNjMuMjIzKTtcbiAgICAtLWNvbG9yLWVtZXJhbGQtNTAwOiBva2xjaCg2OS42JSAwLjE3IDE2Mi40OCk7XG4gICAgLS1jb2xvci1lbWVyYWxkLTYwMDogb2tsY2goNTkuNiUgMC4xNDUgMTYzLjIyNSk7XG4gICAgLS1jb2xvci1lbWVyYWxkLTcwMDogb2tsY2goNTAuOCUgMC4xMTggMTY1LjYxMik7XG4gICAgLS1jb2xvci1lbWVyYWxkLTgwMDogb2tsY2goNDMuMiUgMC4wOTUgMTY2LjkxMyk7XG4gICAgLS1jb2xvci1lbWVyYWxkLTkwMDogb2tsY2goMzcuOCUgMC4wNzcgMTY4Ljk0KTtcbiAgICAtLWNvbG9yLWVtZXJhbGQtOTUwOiBva2xjaCgyNi4yJSAwLjA1MSAxNzIuNTUyKTtcblxuICAgIC0tY29sb3ItdGVhbC01MDogb2tsY2goOTguNCUgMC4wMTQgMTgwLjcyKTtcbiAgICAtLWNvbG9yLXRlYWwtMTAwOiBva2xjaCg5NS4zJSAwLjA1MSAxODAuODAxKTtcbiAgICAtLWNvbG9yLXRlYWwtMjAwOiBva2xjaCg5MSUgMC4wOTYgMTgwLjQyNik7XG4gICAgLS1jb2xvci10ZWFsLTMwMDogb2tsY2goODUuNSUgMC4xMzggMTgxLjA3MSk7XG4gICAgLS1jb2xvci10ZWFsLTQwMDogb2tsY2goNzcuNyUgMC4xNTIgMTgxLjkxMik7XG4gICAgLS1jb2xvci10ZWFsLTUwMDogb2tsY2goNzAuNCUgMC4xNCAxODIuNTAzKTtcbiAgICAtLWNvbG9yLXRlYWwtNjAwOiBva2xjaCg2MCUgMC4xMTggMTg0LjcwNCk7XG4gICAgLS1jb2xvci10ZWFsLTcwMDogb2tsY2goNTEuMSUgMC4wOTYgMTg2LjM5MSk7XG4gICAgLS1jb2xvci10ZWFsLTgwMDogb2tsY2goNDMuNyUgMC4wNzggMTg4LjIxNik7XG4gICAgLS1jb2xvci10ZWFsLTkwMDogb2tsY2goMzguNiUgMC4wNjMgMTg4LjQxNik7XG4gICAgLS1jb2xvci10ZWFsLTk1MDogb2tsY2goMjcuNyUgMC4wNDYgMTkyLjUyNCk7XG5cbiAgICAtLWNvbG9yLWN5YW4tNTA6IG9rbGNoKDk4LjQlIDAuMDE5IDIwMC44NzMpO1xuICAgIC0tY29sb3ItY3lhbi0xMDA6IG9rbGNoKDk1LjYlIDAuMDQ1IDIwMy4zODgpO1xuICAgIC0tY29sb3ItY3lhbi0yMDA6IG9rbGNoKDkxLjclIDAuMDggMjA1LjA0MSk7XG4gICAgLS1jb2xvci1jeWFuLTMwMDogb2tsY2goODYuNSUgMC4xMjcgMjA3LjA3OCk7XG4gICAgLS1jb2xvci1jeWFuLTQwMDogb2tsY2goNzguOSUgMC4xNTQgMjExLjUzKTtcbiAgICAtLWNvbG9yLWN5YW4tNTAwOiBva2xjaCg3MS41JSAwLjE0MyAyMTUuMjIxKTtcbiAgICAtLWNvbG9yLWN5YW4tNjAwOiBva2xjaCg2MC45JSAwLjEyNiAyMjEuNzIzKTtcbiAgICAtLWNvbG9yLWN5YW4tNzAwOiBva2xjaCg1MiUgMC4xMDUgMjIzLjEyOCk7XG4gICAgLS1jb2xvci1jeWFuLTgwMDogb2tsY2goNDUlIDAuMDg1IDIyNC4yODMpO1xuICAgIC0tY29sb3ItY3lhbi05MDA6IG9rbGNoKDM5LjglIDAuMDcgMjI3LjM5Mik7XG4gICAgLS1jb2xvci1jeWFuLTk1MDogb2tsY2goMzAuMiUgMC4wNTYgMjI5LjY5NSk7XG5cbiAgICAtLWNvbG9yLXNreS01MDogb2tsY2goOTcuNyUgMC4wMTMgMjM2LjYyKTtcbiAgICAtLWNvbG9yLXNreS0xMDA6IG9rbGNoKDk1LjElIDAuMDI2IDIzNi44MjQpO1xuICAgIC0tY29sb3Itc2t5LTIwMDogb2tsY2goOTAuMSUgMC4wNTggMjMwLjkwMik7XG4gICAgLS1jb2xvci1za3ktMzAwOiBva2xjaCg4Mi44JSAwLjExMSAyMzAuMzE4KTtcbiAgICAtLWNvbG9yLXNreS00MDA6IG9rbGNoKDc0LjYlIDAuMTYgMjMyLjY2MSk7XG4gICAgLS1jb2xvci1za3ktNTAwOiBva2xjaCg2OC41JSAwLjE2OSAyMzcuMzIzKTtcbiAgICAtLWNvbG9yLXNreS02MDA6IG9rbGNoKDU4LjglIDAuMTU4IDI0MS45NjYpO1xuICAgIC0tY29sb3Itc2t5LTcwMDogb2tsY2goNTAlIDAuMTM0IDI0Mi43NDkpO1xuICAgIC0tY29sb3Itc2t5LTgwMDogb2tsY2goNDQuMyUgMC4xMSAyNDAuNzkpO1xuICAgIC0tY29sb3Itc2t5LTkwMDogb2tsY2goMzkuMSUgMC4wOSAyNDAuODc2KTtcbiAgICAtLWNvbG9yLXNreS05NTA6IG9rbGNoKDI5LjMlIDAuMDY2IDI0My4xNTcpO1xuXG4gICAgLS1jb2xvci1ibHVlLTUwOiBva2xjaCg5NyUgMC4wMTQgMjU0LjYwNCk7XG4gICAgLS1jb2xvci1ibHVlLTEwMDogb2tsY2goOTMuMiUgMC4wMzIgMjU1LjU4NSk7XG4gICAgLS1jb2xvci1ibHVlLTIwMDogb2tsY2goODguMiUgMC4wNTkgMjU0LjEyOCk7XG4gICAgLS1jb2xvci1ibHVlLTMwMDogb2tsY2goODAuOSUgMC4xMDUgMjUxLjgxMyk7XG4gICAgLS1jb2xvci1ibHVlLTQwMDogb2tsY2goNzAuNyUgMC4xNjUgMjU0LjYyNCk7XG4gICAgLS1jb2xvci1ibHVlLTUwMDogb2tsY2goNjIuMyUgMC4yMTQgMjU5LjgxNSk7XG4gICAgLS1jb2xvci1ibHVlLTYwMDogb2tsY2goNTQuNiUgMC4yNDUgMjYyLjg4MSk7XG4gICAgLS1jb2xvci1ibHVlLTcwMDogb2tsY2goNDguOCUgMC4yNDMgMjY0LjM3Nik7XG4gICAgLS1jb2xvci1ibHVlLTgwMDogb2tsY2goNDIuNCUgMC4xOTkgMjY1LjYzOCk7XG4gICAgLS1jb2xvci1ibHVlLTkwMDogb2tsY2goMzcuOSUgMC4xNDYgMjY1LjUyMik7XG4gICAgLS1jb2xvci1ibHVlLTk1MDogb2tsY2goMjguMiUgMC4wOTEgMjY3LjkzNSk7XG5cbiAgICAtLWNvbG9yLWluZGlnby01MDogb2tsY2goOTYuMiUgMC4wMTggMjcyLjMxNCk7XG4gICAgLS1jb2xvci1pbmRpZ28tMTAwOiBva2xjaCg5MyUgMC4wMzQgMjcyLjc4OCk7XG4gICAgLS1jb2xvci1pbmRpZ28tMjAwOiBva2xjaCg4NyUgMC4wNjUgMjc0LjAzOSk7XG4gICAgLS1jb2xvci1pbmRpZ28tMzAwOiBva2xjaCg3OC41JSAwLjExNSAyNzQuNzEzKTtcbiAgICAtLWNvbG9yLWluZGlnby00MDA6IG9rbGNoKDY3LjMlIDAuMTgyIDI3Ni45MzUpO1xuICAgIC0tY29sb3ItaW5kaWdvLTUwMDogb2tsY2goNTguNSUgMC4yMzMgMjc3LjExNyk7XG4gICAgLS1jb2xvci1pbmRpZ28tNjAwOiBva2xjaCg1MS4xJSAwLjI2MiAyNzYuOTY2KTtcbiAgICAtLWNvbG9yLWluZGlnby03MDA6IG9rbGNoKDQ1LjclIDAuMjQgMjc3LjAyMyk7XG4gICAgLS1jb2xvci1pbmRpZ28tODAwOiBva2xjaCgzOS44JSAwLjE5NSAyNzcuMzY2KTtcbiAgICAtLWNvbG9yLWluZGlnby05MDA6IG9rbGNoKDM1LjklIDAuMTQ0IDI3OC42OTcpO1xuICAgIC0tY29sb3ItaW5kaWdvLTk1MDogb2tsY2goMjUuNyUgMC4wOSAyODEuMjg4KTtcblxuICAgIC0tY29sb3ItdmlvbGV0LTUwOiBva2xjaCg5Ni45JSAwLjAxNiAyOTMuNzU2KTtcbiAgICAtLWNvbG9yLXZpb2xldC0xMDA6IG9rbGNoKDk0LjMlIDAuMDI5IDI5NC41ODgpO1xuICAgIC0tY29sb3ItdmlvbGV0LTIwMDogb2tsY2goODkuNCUgMC4wNTcgMjkzLjI4Myk7XG4gICAgLS1jb2xvci12aW9sZXQtMzAwOiBva2xjaCg4MS4xJSAwLjExMSAyOTMuNTcxKTtcbiAgICAtLWNvbG9yLXZpb2xldC00MDA6IG9rbGNoKDcwLjIlIDAuMTgzIDI5My41NDEpO1xuICAgIC0tY29sb3ItdmlvbGV0LTUwMDogb2tsY2goNjAuNiUgMC4yNSAyOTIuNzE3KTtcbiAgICAtLWNvbG9yLXZpb2xldC02MDA6IG9rbGNoKDU0LjElIDAuMjgxIDI5My4wMDkpO1xuICAgIC0tY29sb3ItdmlvbGV0LTcwMDogb2tsY2goNDkuMSUgMC4yNyAyOTIuNTgxKTtcbiAgICAtLWNvbG9yLXZpb2xldC04MDA6IG9rbGNoKDQzLjIlIDAuMjMyIDI5Mi43NTkpO1xuICAgIC0tY29sb3ItdmlvbGV0LTkwMDogb2tsY2goMzglIDAuMTg5IDI5My43NDUpO1xuICAgIC0tY29sb3ItdmlvbGV0LTk1MDogb2tsY2goMjguMyUgMC4xNDEgMjkxLjA4OSk7XG5cbiAgICAtLWNvbG9yLXB1cnBsZS01MDogb2tsY2goOTcuNyUgMC4wMTQgMzA4LjI5OSk7XG4gICAgLS1jb2xvci1wdXJwbGUtMTAwOiBva2xjaCg5NC42JSAwLjAzMyAzMDcuMTc0KTtcbiAgICAtLWNvbG9yLXB1cnBsZS0yMDA6IG9rbGNoKDkwLjIlIDAuMDYzIDMwNi43MDMpO1xuICAgIC0tY29sb3ItcHVycGxlLTMwMDogb2tsY2goODIuNyUgMC4xMTkgMzA2LjM4Myk7XG4gICAgLS1jb2xvci1wdXJwbGUtNDAwOiBva2xjaCg3MS40JSAwLjIwMyAzMDUuNTA0KTtcbiAgICAtLWNvbG9yLXB1cnBsZS01MDA6IG9rbGNoKDYyLjclIDAuMjY1IDMwMy45KTtcbiAgICAtLWNvbG9yLXB1cnBsZS02MDA6IG9rbGNoKDU1LjglIDAuMjg4IDMwMi4zMjEpO1xuICAgIC0tY29sb3ItcHVycGxlLTcwMDogb2tsY2goNDkuNiUgMC4yNjUgMzAxLjkyNCk7XG4gICAgLS1jb2xvci1wdXJwbGUtODAwOiBva2xjaCg0My44JSAwLjIxOCAzMDMuNzI0KTtcbiAgICAtLWNvbG9yLXB1cnBsZS05MDA6IG9rbGNoKDM4LjElIDAuMTc2IDMwNC45ODcpO1xuICAgIC0tY29sb3ItcHVycGxlLTk1MDogb2tsY2goMjkuMSUgMC4xNDkgMzAyLjcxNyk7XG5cbiAgICAtLWNvbG9yLWZ1Y2hzaWEtNTA6IG9rbGNoKDk3LjclIDAuMDE3IDMyMC4wNTgpO1xuICAgIC0tY29sb3ItZnVjaHNpYS0xMDA6IG9rbGNoKDk1LjIlIDAuMDM3IDMxOC44NTIpO1xuICAgIC0tY29sb3ItZnVjaHNpYS0yMDA6IG9rbGNoKDkwLjMlIDAuMDc2IDMxOS42Mik7XG4gICAgLS1jb2xvci1mdWNoc2lhLTMwMDogb2tsY2goODMuMyUgMC4xNDUgMzIxLjQzNCk7XG4gICAgLS1jb2xvci1mdWNoc2lhLTQwMDogb2tsY2goNzQlIDAuMjM4IDMyMi4xNik7XG4gICAgLS1jb2xvci1mdWNoc2lhLTUwMDogb2tsY2goNjYuNyUgMC4yOTUgMzIyLjE1KTtcbiAgICAtLWNvbG9yLWZ1Y2hzaWEtNjAwOiBva2xjaCg1OS4xJSAwLjI5MyAzMjIuODk2KTtcbiAgICAtLWNvbG9yLWZ1Y2hzaWEtNzAwOiBva2xjaCg1MS44JSAwLjI1MyAzMjMuOTQ5KTtcbiAgICAtLWNvbG9yLWZ1Y2hzaWEtODAwOiBva2xjaCg0NS4yJSAwLjIxMSAzMjQuNTkxKTtcbiAgICAtLWNvbG9yLWZ1Y2hzaWEtOTAwOiBva2xjaCg0MC4xJSAwLjE3IDMyNS42MTIpO1xuICAgIC0tY29sb3ItZnVjaHNpYS05NTA6IG9rbGNoKDI5LjMlIDAuMTM2IDMyNS42NjEpO1xuXG4gICAgLS1jb2xvci1waW5rLTUwOiBva2xjaCg5Ny4xJSAwLjAxNCAzNDMuMTk4KTtcbiAgICAtLWNvbG9yLXBpbmstMTAwOiBva2xjaCg5NC44JSAwLjAyOCAzNDIuMjU4KTtcbiAgICAtLWNvbG9yLXBpbmstMjAwOiBva2xjaCg4OS45JSAwLjA2MSAzNDMuMjMxKTtcbiAgICAtLWNvbG9yLXBpbmstMzAwOiBva2xjaCg4Mi4zJSAwLjEyIDM0Ni4wMTgpO1xuICAgIC0tY29sb3ItcGluay00MDA6IG9rbGNoKDcxLjglIDAuMjAyIDM0OS43NjEpO1xuICAgIC0tY29sb3ItcGluay01MDA6IG9rbGNoKDY1LjYlIDAuMjQxIDM1NC4zMDgpO1xuICAgIC0tY29sb3ItcGluay02MDA6IG9rbGNoKDU5LjIlIDAuMjQ5IDAuNTg0KTtcbiAgICAtLWNvbG9yLXBpbmstNzAwOiBva2xjaCg1Mi41JSAwLjIyMyAzLjk1OCk7XG4gICAgLS1jb2xvci1waW5rLTgwMDogb2tsY2goNDUuOSUgMC4xODcgMy44MTUpO1xuICAgIC0tY29sb3ItcGluay05MDA6IG9rbGNoKDQwLjglIDAuMTUzIDIuNDMyKTtcbiAgICAtLWNvbG9yLXBpbmstOTUwOiBva2xjaCgyOC40JSAwLjEwOSAzLjkwNyk7XG5cbiAgICAtLWNvbG9yLXJvc2UtNTA6IG9rbGNoKDk2LjklIDAuMDE1IDEyLjQyMik7XG4gICAgLS1jb2xvci1yb3NlLTEwMDogb2tsY2goOTQuMSUgMC4wMyAxMi41OCk7XG4gICAgLS1jb2xvci1yb3NlLTIwMDogb2tsY2goODkuMiUgMC4wNTggMTAuMDAxKTtcbiAgICAtLWNvbG9yLXJvc2UtMzAwOiBva2xjaCg4MSUgMC4xMTcgMTEuNjM4KTtcbiAgICAtLWNvbG9yLXJvc2UtNDAwOiBva2xjaCg3MS4yJSAwLjE5NCAxMy40MjgpO1xuICAgIC0tY29sb3Itcm9zZS01MDA6IG9rbGNoKDY0LjUlIDAuMjQ2IDE2LjQzOSk7XG4gICAgLS1jb2xvci1yb3NlLTYwMDogb2tsY2goNTguNiUgMC4yNTMgMTcuNTg1KTtcbiAgICAtLWNvbG9yLXJvc2UtNzAwOiBva2xjaCg1MS40JSAwLjIyMiAxNi45MzUpO1xuICAgIC0tY29sb3Itcm9zZS04MDA6IG9rbGNoKDQ1LjUlIDAuMTg4IDEzLjY5Nyk7XG4gICAgLS1jb2xvci1yb3NlLTkwMDogb2tsY2goNDElIDAuMTU5IDEwLjI3Mik7XG4gICAgLS1jb2xvci1yb3NlLTk1MDogb2tsY2goMjcuMSUgMC4xMDUgMTIuMDk0KTtcblxuICAgIC0tY29sb3Itc2xhdGUtNTA6IG9rbGNoKDk4LjQlIDAuMDAzIDI0Ny44NTgpO1xuICAgIC0tY29sb3Itc2xhdGUtMTAwOiBva2xjaCg5Ni44JSAwLjAwNyAyNDcuODk2KTtcbiAgICAtLWNvbG9yLXNsYXRlLTIwMDogb2tsY2goOTIuOSUgMC4wMTMgMjU1LjUwOCk7XG4gICAgLS1jb2xvci1zbGF0ZS0zMDA6IG9rbGNoKDg2LjklIDAuMDIyIDI1Mi44OTQpO1xuICAgIC0tY29sb3Itc2xhdGUtNDAwOiBva2xjaCg3MC40JSAwLjA0IDI1Ni43ODgpO1xuICAgIC0tY29sb3Itc2xhdGUtNTAwOiBva2xjaCg1NS40JSAwLjA0NiAyNTcuNDE3KTtcbiAgICAtLWNvbG9yLXNsYXRlLTYwMDogb2tsY2goNDQuNiUgMC4wNDMgMjU3LjI4MSk7XG4gICAgLS1jb2xvci1zbGF0ZS03MDA6IG9rbGNoKDM3LjIlIDAuMDQ0IDI1Ny4yODcpO1xuICAgIC0tY29sb3Itc2xhdGUtODAwOiBva2xjaCgyNy45JSAwLjA0MSAyNjAuMDMxKTtcbiAgICAtLWNvbG9yLXNsYXRlLTkwMDogb2tsY2goMjAuOCUgMC4wNDIgMjY1Ljc1NSk7XG4gICAgLS1jb2xvci1zbGF0ZS05NTA6IG9rbGNoKDEyLjklIDAuMDQyIDI2NC42OTUpO1xuXG4gICAgLS1jb2xvci1ncmF5LTUwOiBva2xjaCg5OC41JSAwLjAwMiAyNDcuODM5KTtcbiAgICAtLWNvbG9yLWdyYXktMTAwOiBva2xjaCg5Ni43JSAwLjAwMyAyNjQuNTQyKTtcbiAgICAtLWNvbG9yLWdyYXktMjAwOiBva2xjaCg5Mi44JSAwLjAwNiAyNjQuNTMxKTtcbiAgICAtLWNvbG9yLWdyYXktMzAwOiBva2xjaCg4Ny4yJSAwLjAxIDI1OC4zMzgpO1xuICAgIC0tY29sb3ItZ3JheS00MDA6IG9rbGNoKDcwLjclIDAuMDIyIDI2MS4zMjUpO1xuICAgIC0tY29sb3ItZ3JheS01MDA6IG9rbGNoKDU1LjElIDAuMDI3IDI2NC4zNjQpO1xuICAgIC0tY29sb3ItZ3JheS02MDA6IG9rbGNoKDQ0LjYlIDAuMDMgMjU2LjgwMik7XG4gICAgLS1jb2xvci1ncmF5LTcwMDogb2tsY2goMzcuMyUgMC4wMzQgMjU5LjczMyk7XG4gICAgLS1jb2xvci1ncmF5LTgwMDogb2tsY2goMjcuOCUgMC4wMzMgMjU2Ljg0OCk7XG4gICAgLS1jb2xvci1ncmF5LTkwMDogb2tsY2goMjElIDAuMDM0IDI2NC42NjUpO1xuICAgIC0tY29sb3ItZ3JheS05NTA6IG9rbGNoKDEzJSAwLjAyOCAyNjEuNjkyKTtcblxuICAgIC0tY29sb3ItemluYy01MDogb2tsY2goOTguNSUgMCAwKTtcbiAgICAtLWNvbG9yLXppbmMtMTAwOiBva2xjaCg5Ni43JSAwLjAwMSAyODYuMzc1KTtcbiAgICAtLWNvbG9yLXppbmMtMjAwOiBva2xjaCg5MiUgMC4wMDQgMjg2LjMyKTtcbiAgICAtLWNvbG9yLXppbmMtMzAwOiBva2xjaCg4Ny4xJSAwLjAwNiAyODYuMjg2KTtcbiAgICAtLWNvbG9yLXppbmMtNDAwOiBva2xjaCg3MC41JSAwLjAxNSAyODYuMDY3KTtcbiAgICAtLWNvbG9yLXppbmMtNTAwOiBva2xjaCg1NS4yJSAwLjAxNiAyODUuOTM4KTtcbiAgICAtLWNvbG9yLXppbmMtNjAwOiBva2xjaCg0NC4yJSAwLjAxNyAyODUuNzg2KTtcbiAgICAtLWNvbG9yLXppbmMtNzAwOiBva2xjaCgzNyUgMC4wMTMgMjg1LjgwNSk7XG4gICAgLS1jb2xvci16aW5jLTgwMDogb2tsY2goMjcuNCUgMC4wMDYgMjg2LjAzMyk7XG4gICAgLS1jb2xvci16aW5jLTkwMDogb2tsY2goMjElIDAuMDA2IDI4NS44ODUpO1xuICAgIC0tY29sb3ItemluYy05NTA6IG9rbGNoKDE0LjElIDAuMDA1IDI4NS44MjMpO1xuXG4gICAgLS1jb2xvci1uZXV0cmFsLTUwOiBva2xjaCg5OC41JSAwIDApO1xuICAgIC0tY29sb3ItbmV1dHJhbC0xMDA6IG9rbGNoKDk3JSAwIDApO1xuICAgIC0tY29sb3ItbmV1dHJhbC0yMDA6IG9rbGNoKDkyLjIlIDAgMCk7XG4gICAgLS1jb2xvci1uZXV0cmFsLTMwMDogb2tsY2goODclIDAgMCk7XG4gICAgLS1jb2xvci1uZXV0cmFsLTQwMDogb2tsY2goNzAuOCUgMCAwKTtcbiAgICAtLWNvbG9yLW5ldXRyYWwtNTAwOiBva2xjaCg1NS42JSAwIDApO1xuICAgIC0tY29sb3ItbmV1dHJhbC02MDA6IG9rbGNoKDQzLjklIDAgMCk7XG4gICAgLS1jb2xvci1uZXV0cmFsLTcwMDogb2tsY2goMzcuMSUgMCAwKTtcbiAgICAtLWNvbG9yLW5ldXRyYWwtODAwOiBva2xjaCgyNi45JSAwIDApO1xuICAgIC0tY29sb3ItbmV1dHJhbC05MDA6IG9rbGNoKDIwLjUlIDAgMCk7XG4gICAgLS1jb2xvci1uZXV0cmFsLTk1MDogb2tsY2goMTQuNSUgMCAwKTtcblxuICAgIC0tY29sb3Itc3RvbmUtNTA6IG9rbGNoKDk4LjUlIDAuMDAxIDEwNi40MjMpO1xuICAgIC0tY29sb3Itc3RvbmUtMTAwOiBva2xjaCg5NyUgMC4wMDEgMTA2LjQyNCk7XG4gICAgLS1jb2xvci1zdG9uZS0yMDA6IG9rbGNoKDkyLjMlIDAuMDAzIDQ4LjcxNyk7XG4gICAgLS1jb2xvci1zdG9uZS0zMDA6IG9rbGNoKDg2LjklIDAuMDA1IDU2LjM2Nik7XG4gICAgLS1jb2xvci1zdG9uZS00MDA6IG9rbGNoKDcwLjklIDAuMDEgNTYuMjU5KTtcbiAgICAtLWNvbG9yLXN0b25lLTUwMDogb2tsY2goNTUuMyUgMC4wMTMgNTguMDcxKTtcbiAgICAtLWNvbG9yLXN0b25lLTYwMDogb2tsY2goNDQuNCUgMC4wMTEgNzMuNjM5KTtcbiAgICAtLWNvbG9yLXN0b25lLTcwMDogb2tsY2goMzcuNCUgMC4wMSA2Ny41NTgpO1xuICAgIC0tY29sb3Itc3RvbmUtODAwOiBva2xjaCgyNi44JSAwLjAwNyAzNC4yOTgpO1xuICAgIC0tY29sb3Itc3RvbmUtOTAwOiBva2xjaCgyMS42JSAwLjAwNiA1Ni4wNDMpO1xuICAgIC0tY29sb3Itc3RvbmUtOTUwOiBva2xjaCgxNC43JSAwLjAwNCA0OS4yNSk7XG5cbiAgICAtLWNvbG9yLWJsYWNrOiAjMDAwO1xuICAgIC0tY29sb3Itd2hpdGU6ICNmZmY7XG5cbiAgICAtLXNwYWNpbmc6IDAuMjVyZW07XG5cbiAgICAtLWJyZWFrcG9pbnQtc206IDQwcmVtO1xuICAgIC0tYnJlYWtwb2ludC1tZDogNDhyZW07XG4gICAgLS1icmVha3BvaW50LWxnOiA2NHJlbTtcbiAgICAtLWJyZWFrcG9pbnQteGw6IDgwcmVtO1xuICAgIC0tYnJlYWtwb2ludC0yeGw6IDk2cmVtO1xuXG4gICAgLS1jb250YWluZXItM3hzOiAxNnJlbTtcbiAgICAtLWNvbnRhaW5lci0yeHM6IDE4cmVtO1xuICAgIC0tY29udGFpbmVyLXhzOiAyMHJlbTtcbiAgICAtLWNvbnRhaW5lci1zbTogMjRyZW07XG4gICAgLS1jb250YWluZXItbWQ6IDI4cmVtO1xuICAgIC0tY29udGFpbmVyLWxnOiAzMnJlbTtcbiAgICAtLWNvbnRhaW5lci14bDogMzZyZW07XG4gICAgLS1jb250YWluZXItMnhsOiA0MnJlbTtcbiAgICAtLWNvbnRhaW5lci0zeGw6IDQ4cmVtO1xuICAgIC0tY29udGFpbmVyLTR4bDogNTZyZW07XG4gICAgLS1jb250YWluZXItNXhsOiA2NHJlbTtcbiAgICAtLWNvbnRhaW5lci02eGw6IDcycmVtO1xuICAgIC0tY29udGFpbmVyLTd4bDogODByZW07XG5cbiAgICAtLXRleHQteHM6IDAuNzVyZW07XG4gICAgLS10ZXh0LXhzLS1saW5lLWhlaWdodDogY2FsYygxIC8gMC43NSk7XG4gICAgLS10ZXh0LXNtOiAwLjg3NXJlbTtcbiAgICAtLXRleHQtc20tLWxpbmUtaGVpZ2h0OiBjYWxjKDEuMjUgLyAwLjg3NSk7XG4gICAgLS10ZXh0LWJhc2U6IDFyZW07XG4gICAgLS10ZXh0LWJhc2UtLWxpbmUtaGVpZ2h0OiBjYWxjKDEuNSAvIDEpO1xuICAgIC0tdGV4dC1sZzogMS4xMjVyZW07XG4gICAgLS10ZXh0LWxnLS1saW5lLWhlaWdodDogY2FsYygxLjc1IC8gMS4xMjUpO1xuICAgIC0tdGV4dC14bDogMS4yNXJlbTtcbiAgICAtLXRleHQteGwtLWxpbmUtaGVpZ2h0OiBjYWxjKDEuNzUgLyAxLjI1KTtcbiAgICAtLXRleHQtMnhsOiAxLjVyZW07XG4gICAgLS10ZXh0LTJ4bC0tbGluZS1oZWlnaHQ6IGNhbGMoMiAvIDEuNSk7XG4gICAgLS10ZXh0LTN4bDogMS44NzVyZW07XG4gICAgLS10ZXh0LTN4bC0tbGluZS1oZWlnaHQ6IGNhbGMoMi4yNSAvIDEuODc1KTtcbiAgICAtLXRleHQtNHhsOiAyLjI1cmVtO1xuICAgIC0tdGV4dC00eGwtLWxpbmUtaGVpZ2h0OiBjYWxjKDIuNSAvIDIuMjUpO1xuICAgIC0tdGV4dC01eGw6IDNyZW07XG4gICAgLS10ZXh0LTV4bC0tbGluZS1oZWlnaHQ6IDE7XG4gICAgLS10ZXh0LTZ4bDogMy43NXJlbTtcbiAgICAtLXRleHQtNnhsLS1saW5lLWhlaWdodDogMTtcbiAgICAtLXRleHQtN3hsOiA0LjVyZW07XG4gICAgLS10ZXh0LTd4bC0tbGluZS1oZWlnaHQ6IDE7XG4gICAgLS10ZXh0LTh4bDogNnJlbTtcbiAgICAtLXRleHQtOHhsLS1saW5lLWhlaWdodDogMTtcbiAgICAtLXRleHQtOXhsOiA4cmVtO1xuICAgIC0tdGV4dC05eGwtLWxpbmUtaGVpZ2h0OiAxO1xuXG4gICAgLS1mb250LXdlaWdodC10aGluOiAxMDA7XG4gICAgLS1mb250LXdlaWdodC1leHRyYWxpZ2h0OiAyMDA7XG4gICAgLS1mb250LXdlaWdodC1saWdodDogMzAwO1xuICAgIC0tZm9udC13ZWlnaHQtbm9ybWFsOiA0MDA7XG4gICAgLS1mb250LXdlaWdodC1tZWRpdW06IDUwMDtcbiAgICAtLWZvbnQtd2VpZ2h0LXNlbWlib2xkOiA2MDA7XG4gICAgLS1mb250LXdlaWdodC1ib2xkOiA3MDA7XG4gICAgLS1mb250LXdlaWdodC1leHRyYWJvbGQ6IDgwMDtcbiAgICAtLWZvbnQtd2VpZ2h0LWJsYWNrOiA5MDA7XG5cbiAgICAtLXRyYWNraW5nLXRpZ2h0ZXI6IC0wLjA1ZW07XG4gICAgLS10cmFja2luZy10aWdodDogLTAuMDI1ZW07XG4gICAgLS10cmFja2luZy1ub3JtYWw6IDBlbTtcbiAgICAtLXRyYWNraW5nLXdpZGU6IDAuMDI1ZW07XG4gICAgLS10cmFja2luZy13aWRlcjogMC4wNWVtO1xuICAgIC0tdHJhY2tpbmctd2lkZXN0OiAwLjFlbTtcblxuICAgIC0tbGVhZGluZy10aWdodDogMS4yNTtcbiAgICAtLWxlYWRpbmctc251ZzogMS4zNzU7XG4gICAgLS1sZWFkaW5nLW5vcm1hbDogMS41O1xuICAgIC0tbGVhZGluZy1yZWxheGVkOiAxLjYyNTtcbiAgICAtLWxlYWRpbmctbG9vc2U6IDI7XG5cbiAgICAtLXJhZGl1cy14czogMC4xMjVyZW07XG4gICAgLS1yYWRpdXMtc206IDAuMjVyZW07XG4gICAgLS1yYWRpdXMtbWQ6IDAuMzc1cmVtO1xuICAgIC0tcmFkaXVzLWxnOiAwLjVyZW07XG4gICAgLS1yYWRpdXMteGw6IDAuNzVyZW07XG4gICAgLS1yYWRpdXMtMnhsOiAxcmVtO1xuICAgIC0tcmFkaXVzLTN4bDogMS41cmVtO1xuICAgIC0tcmFkaXVzLTR4bDogMnJlbTtcblxuICAgIC0tc2hhZG93LTJ4czogMCAxcHggcmdiKDAgMCAwIC8gMC4wNSk7XG4gICAgLS1zaGFkb3cteHM6IDAgMXB4IDJweCAwIHJnYigwIDAgMCAvIDAuMDUpO1xuICAgIC0tc2hhZG93LXNtOiAwIDFweCAzcHggMCByZ2IoMCAwIDAgLyAwLjEpLCAwIDFweCAycHggLTFweCByZ2IoMCAwIDAgLyAwLjEpO1xuICAgIC0tc2hhZG93LW1kOlxuICAgICAgMCA0cHggNnB4IC0xcHggcmdiKDAgMCAwIC8gMC4xKSwgMCAycHggNHB4IC0ycHggcmdiKDAgMCAwIC8gMC4xKTtcbiAgICAtLXNoYWRvdy1sZzpcbiAgICAgIDAgMTBweCAxNXB4IC0zcHggcmdiKDAgMCAwIC8gMC4xKSwgMCA0cHggNnB4IC00cHggcmdiKDAgMCAwIC8gMC4xKTtcbiAgICAtLXNoYWRvdy14bDpcbiAgICAgIDAgMjBweCAyNXB4IC01cHggcmdiKDAgMCAwIC8gMC4xKSwgMCA4cHggMTBweCAtNnB4IHJnYigwIDAgMCAvIDAuMSk7XG4gICAgLS1zaGFkb3ctMnhsOiAwIDI1cHggNTBweCAtMTJweCByZ2IoMCAwIDAgLyAwLjI1KTtcblxuICAgIC0taW5zZXQtc2hhZG93LTJ4czogaW5zZXQgMCAxcHggcmdiKDAgMCAwIC8gMC4wNSk7XG4gICAgLS1pbnNldC1zaGFkb3cteHM6IGluc2V0IDAgMXB4IDFweCByZ2IoMCAwIDAgLyAwLjA1KTtcbiAgICAtLWluc2V0LXNoYWRvdy1zbTogaW5zZXQgMCAycHggNHB4IHJnYigwIDAgMCAvIDAuMDUpO1xuXG4gICAgLS1kcm9wLXNoYWRvdy14czogMCAxcHggMXB4IHJnYigwIDAgMCAvIDAuMDUpO1xuICAgIC0tZHJvcC1zaGFkb3ctc206IDAgMXB4IDJweCByZ2IoMCAwIDAgLyAwLjE1KTtcbiAgICAtLWRyb3Atc2hhZG93LW1kOiAwIDNweCAzcHggcmdiKDAgMCAwIC8gMC4xMik7XG4gICAgLS1kcm9wLXNoYWRvdy1sZzogMCA0cHggNHB4IHJnYigwIDAgMCAvIDAuMTUpO1xuICAgIC0tZHJvcC1zaGFkb3cteGw6IDAgOXB4IDdweCByZ2IoMCAwIDAgLyAwLjEpO1xuICAgIC0tZHJvcC1zaGFkb3ctMnhsOiAwIDI1cHggMjVweCByZ2IoMCAwIDAgLyAwLjE1KTtcblxuICAgIC0tdGV4dC1zaGFkb3ctMnhzOiAwcHggMXB4IDBweCByZ2IoMCAwIDAgLyAwLjE1KTtcbiAgICAtLXRleHQtc2hhZG93LXhzOiAwcHggMXB4IDFweCByZ2IoMCAwIDAgLyAwLjIpO1xuICAgIC0tdGV4dC1zaGFkb3ctc206XG4gICAgICAwcHggMXB4IDBweCByZ2IoMCAwIDAgLyAwLjA3NSksIDBweCAxcHggMXB4IHJnYigwIDAgMCAvIDAuMDc1KSxcbiAgICAgIDBweCAycHggMnB4IHJnYigwIDAgMCAvIDAuMDc1KTtcbiAgICAtLXRleHQtc2hhZG93LW1kOlxuICAgICAgMHB4IDFweCAxcHggcmdiKDAgMCAwIC8gMC4xKSwgMHB4IDFweCAycHggcmdiKDAgMCAwIC8gMC4xKSxcbiAgICAgIDBweCAycHggNHB4IHJnYigwIDAgMCAvIDAuMSk7XG4gICAgLS10ZXh0LXNoYWRvdy1sZzpcbiAgICAgIDBweCAxcHggMnB4IHJnYigwIDAgMCAvIDAuMSksIDBweCAzcHggMnB4IHJnYigwIDAgMCAvIDAuMSksXG4gICAgICAwcHggNHB4IDhweCByZ2IoMCAwIDAgLyAwLjEpO1xuXG4gICAgLS1lYXNlLWluOiBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtcbiAgICAtLWVhc2Utb3V0OiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcbiAgICAtLWVhc2UtaW4tb3V0OiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuXG4gICAgLS1hbmltYXRlLXNwaW46IHNwaW4gMXMgbGluZWFyIGluZmluaXRlO1xuICAgIC0tYW5pbWF0ZS1waW5nOiBwaW5nIDFzIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpIGluZmluaXRlO1xuICAgIC0tYW5pbWF0ZS1wdWxzZTogcHVsc2UgMnMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC42LCAxKSBpbmZpbml0ZTtcbiAgICAtLWFuaW1hdGUtYm91bmNlOiBib3VuY2UgMXMgaW5maW5pdGU7XG5cbiAgICBAa2V5ZnJhbWVzIHNwaW4ge1xuICAgICAgdG8ge1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBrZXlmcmFtZXMgcGluZyB7XG4gICAgICA3NSUsXG4gICAgICAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgyKTtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAa2V5ZnJhbWVzIHB1bHNlIHtcbiAgICAgIDUwJSB7XG4gICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAa2V5ZnJhbWVzIGJvdW5jZSB7XG4gICAgICAwJSxcbiAgICAgIDEwMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTI1JSk7XG4gICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjgsIDAsIDEsIDEpO1xuICAgICAgfVxuXG4gICAgICA1MCUge1xuICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC0tYmx1ci14czogNHB4O1xuICAgIC0tYmx1ci1zbTogOHB4O1xuICAgIC0tYmx1ci1tZDogMTJweDtcbiAgICAtLWJsdXItbGc6IDE2cHg7XG4gICAgLS1ibHVyLXhsOiAyNHB4O1xuICAgIC0tYmx1ci0yeGw6IDQwcHg7XG4gICAgLS1ibHVyLTN4bDogNjRweDtcblxuICAgIC0tcGVyc3BlY3RpdmUtZHJhbWF0aWM6IDEwMHB4O1xuICAgIC0tcGVyc3BlY3RpdmUtbmVhcjogMzAwcHg7XG4gICAgLS1wZXJzcGVjdGl2ZS1ub3JtYWw6IDUwMHB4O1xuICAgIC0tcGVyc3BlY3RpdmUtbWlkcmFuZ2U6IDgwMHB4O1xuICAgIC0tcGVyc3BlY3RpdmUtZGlzdGFudDogMTIwMHB4O1xuXG4gICAgLS1hc3BlY3QtdmlkZW86IDE2IC8gOTtcblxuICAgIC0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAxNTBtcztcbiAgICAtLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gICAgLS1kZWZhdWx0LWZvbnQtZmFtaWx5OiAtLXRoZW1lKC0tZm9udC1zYW5zLCBpbml0aWFsKTtcbiAgICAtLWRlZmF1bHQtZm9udC1mZWF0dXJlLXNldHRpbmdzOiAtLXRoZW1lKFxuICAgICAgLS1mb250LXNhbnMtLWZvbnQtZmVhdHVyZS1zZXR0aW5ncyxcbiAgICAgIGluaXRpYWxcbiAgICApO1xuICAgIC0tZGVmYXVsdC1mb250LXZhcmlhdGlvbi1zZXR0aW5nczogLS10aGVtZShcbiAgICAgIC0tZm9udC1zYW5zLS1mb250LXZhcmlhdGlvbi1zZXR0aW5ncyxcbiAgICAgIGluaXRpYWxcbiAgICApO1xuICAgIC0tZGVmYXVsdC1tb25vLWZvbnQtZmFtaWx5OiAtLXRoZW1lKC0tZm9udC1tb25vLCBpbml0aWFsKTtcbiAgICAtLWRlZmF1bHQtbW9uby1mb250LWZlYXR1cmUtc2V0dGluZ3M6IC0tdGhlbWUoXG4gICAgICAtLWZvbnQtbW9uby0tZm9udC1mZWF0dXJlLXNldHRpbmdzLFxuICAgICAgaW5pdGlhbFxuICAgICk7XG4gICAgLS1kZWZhdWx0LW1vbm8tZm9udC12YXJpYXRpb24tc2V0dGluZ3M6IC0tdGhlbWUoXG4gICAgICAtLWZvbnQtbW9uby0tZm9udC12YXJpYXRpb24tc2V0dGluZ3MsXG4gICAgICBpbml0aWFsXG4gICAgKTtcbiAgfVxuXG4gIC8qIERlcHJlY2F0ZWQgKi9cbiAgQHRoZW1lIGRlZmF1bHQgaW5saW5lIHJlZmVyZW5jZSB7XG4gICAgLS1ibHVyOiA4cHg7XG4gICAgLS1zaGFkb3c6IDAgMXB4IDNweCAwIHJnYigwIDAgMCAvIDAuMSksIDAgMXB4IDJweCAtMXB4IHJnYigwIDAgMCAvIDAuMSk7XG4gICAgLS1zaGFkb3ctaW5uZXI6IGluc2V0IDAgMnB4IDRweCAwIHJnYigwIDAgMCAvIDAuMDUpO1xuICAgIC0tZHJvcC1zaGFkb3c6IDAgMXB4IDJweCByZ2IoMCAwIDAgLyAwLjEpLCAwIDFweCAxcHggcmdiKDAgMCAwIC8gMC4wNik7XG4gICAgLS1yYWRpdXM6IDAuMjVyZW07XG4gICAgLS1tYXgtd2lkdGgtcHJvc2U6IDY1Y2g7XG4gIH1cbn1cblxuQGxheWVyIGJhc2Uge1xuICAvKlxuICAxLiBQcmV2ZW50IHBhZGRpbmcgYW5kIGJvcmRlciBmcm9tIGFmZmVjdGluZyBlbGVtZW50IHdpZHRoLiAoaHR0cHM6Ly9naXRodWIuY29tL21vemRldnMvY3NzcmVtZWR5L2lzc3Vlcy80KVxuICAyLiBSZW1vdmUgZGVmYXVsdCBtYXJnaW5zIGFuZCBwYWRkaW5nXG4gIDMuIFJlc2V0IGFsbCBib3JkZXJzLlxuKi9cblxuICAqLFxuICA6OmFmdGVyLFxuICA6OmJlZm9yZSxcbiAgOjpiYWNrZHJvcCxcbiAgOjpmaWxlLXNlbGVjdG9yLWJ1dHRvbiB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLyogMSAqL1xuICAgIG1hcmdpbjogMDsgLyogMiAqL1xuICAgIHBhZGRpbmc6IDA7IC8qIDIgKi9cbiAgICBib3JkZXI6IDAgc29saWQ7IC8qIDMgKi9cbiAgfVxuXG4gIC8qXG4gIDEuIFVzZSBhIGNvbnNpc3RlbnQgc2Vuc2libGUgbGluZS1oZWlnaHQgaW4gYWxsIGJyb3dzZXJzLlxuICAyLiBQcmV2ZW50IGFkanVzdG1lbnRzIG9mIGZvbnQgc2l6ZSBhZnRlciBvcmllbnRhdGlvbiBjaGFuZ2VzIGluIGlPUy5cbiAgMy4gVXNlIGEgbW9yZSByZWFkYWJsZSB0YWIgc2l6ZS5cbiAgNC4gVXNlIHRoZSB1c2VyJ3MgY29uZmlndXJlZCBgc2Fuc2AgZm9udC1mYW1pbHkgYnkgZGVmYXVsdC5cbiAgNS4gVXNlIHRoZSB1c2VyJ3MgY29uZmlndXJlZCBgc2Fuc2AgZm9udC1mZWF0dXJlLXNldHRpbmdzIGJ5IGRlZmF1bHQuXG4gIDYuIFVzZSB0aGUgdXNlcidzIGNvbmZpZ3VyZWQgYHNhbnNgIGZvbnQtdmFyaWF0aW9uLXNldHRpbmdzIGJ5IGRlZmF1bHQuXG4gIDcuIERpc2FibGUgdGFwIGhpZ2hsaWdodHMgb24gaU9TLlxuKi9cblxuICBodG1sLFxuICA6aG9zdCB7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTsgLyogMSAqL1xuICAgIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLyogMiAqL1xuICAgIHRhYi1zaXplOiA0OyAvKiAzICovXG4gICAgZm9udC1mYW1pbHk6IC0tdGhlbWUoXG4gICAgICAtLWRlZmF1bHQtZm9udC1mYW1pbHksXG4gICAgICB1aS1zYW5zLXNlcmlmLFxuICAgICAgc3lzdGVtLXVpLFxuICAgICAgc2Fucy1zZXJpZixcbiAgICAgIFwiQXBwbGUgQ29sb3IgRW1vamlcIixcbiAgICAgIFwiU2Vnb2UgVUkgRW1vamlcIixcbiAgICAgIFwiU2Vnb2UgVUkgU3ltYm9sXCIsXG4gICAgICBcIk5vdG8gQ29sb3IgRW1vamlcIlxuICAgICk7IC8qIDQgKi9cbiAgICBmb250LWZlYXR1cmUtc2V0dGluZ3M6IC0tdGhlbWUoXG4gICAgICAtLWRlZmF1bHQtZm9udC1mZWF0dXJlLXNldHRpbmdzLFxuICAgICAgbm9ybWFsXG4gICAgKTsgLyogNSAqL1xuICAgIGZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOiAtLXRoZW1lKFxuICAgICAgLS1kZWZhdWx0LWZvbnQtdmFyaWF0aW9uLXNldHRpbmdzLFxuICAgICAgbm9ybWFsXG4gICAgKTsgLyogNiAqL1xuICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7IC8qIDcgKi9cbiAgfVxuXG4gIC8qXG4gIDEuIEFkZCB0aGUgY29ycmVjdCBoZWlnaHQgaW4gRmlyZWZveC5cbiAgMi4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2Ugb2YgYm9yZGVyIGNvbG9yIGluIEZpcmVmb3guIChodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA2NTUpXG4gIDMuIFJlc2V0IHRoZSBkZWZhdWx0IGJvcmRlciBzdHlsZSB0byBhIDFweCBzb2xpZCBib3JkZXIuXG4qL1xuXG4gIGhyIHtcbiAgICBoZWlnaHQ6IDA7IC8qIDEgKi9cbiAgICBjb2xvcjogaW5oZXJpdDsgLyogMiAqL1xuICAgIGJvcmRlci10b3Atd2lkdGg6IDFweDsgLyogMyAqL1xuICB9XG5cbiAgLypcbiAgQWRkIHRoZSBjb3JyZWN0IHRleHQgZGVjb3JhdGlvbiBpbiBDaHJvbWUsIEVkZ2UsIGFuZCBTYWZhcmkuXG4qL1xuXG4gIGFiYnI6d2hlcmUoW3RpdGxlXSkge1xuICAgIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkO1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDtcbiAgfVxuXG4gIC8qXG4gIFJlbW92ZSB0aGUgZGVmYXVsdCBmb250IHNpemUgYW5kIHdlaWdodCBmb3IgaGVhZGluZ3MuXG4qL1xuXG4gIGgxLFxuICBoMixcbiAgaDMsXG4gIGg0LFxuICBoNSxcbiAgaDYge1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICBmb250LXdlaWdodDogaW5oZXJpdDtcbiAgfVxuXG4gIC8qXG4gIFJlc2V0IGxpbmtzIHRvIG9wdGltaXplIGZvciBvcHQtaW4gc3R5bGluZyBpbnN0ZWFkIG9mIG9wdC1vdXQuXG4qL1xuXG4gIGEge1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uOiBpbmhlcml0O1xuICAgIHRleHQtZGVjb3JhdGlvbjogaW5oZXJpdDtcbiAgfVxuXG4gIC8qXG4gIEFkZCB0aGUgY29ycmVjdCBmb250IHdlaWdodCBpbiBFZGdlIGFuZCBTYWZhcmkuXG4qL1xuXG4gIGIsXG4gIHN0cm9uZyB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGRlcjtcbiAgfVxuXG4gIC8qXG4gIDEuIFVzZSB0aGUgdXNlcidzIGNvbmZpZ3VyZWQgYG1vbm9gIGZvbnQtZmFtaWx5IGJ5IGRlZmF1bHQuXG4gIDIuIFVzZSB0aGUgdXNlcidzIGNvbmZpZ3VyZWQgYG1vbm9gIGZvbnQtZmVhdHVyZS1zZXR0aW5ncyBieSBkZWZhdWx0LlxuICAzLiBVc2UgdGhlIHVzZXIncyBjb25maWd1cmVkIGBtb25vYCBmb250LXZhcmlhdGlvbi1zZXR0aW5ncyBieSBkZWZhdWx0LlxuICA0LiBDb3JyZWN0IHRoZSBvZGQgYGVtYCBmb250IHNpemluZyBpbiBhbGwgYnJvd3NlcnMuXG4qL1xuXG4gIGNvZGUsXG4gIGtiZCxcbiAgc2FtcCxcbiAgcHJlIHtcbiAgICBmb250LWZhbWlseTogLS10aGVtZShcbiAgICAgIC0tZGVmYXVsdC1tb25vLWZvbnQtZmFtaWx5LFxuICAgICAgdWktbW9ub3NwYWNlLFxuICAgICAgU0ZNb25vLVJlZ3VsYXIsXG4gICAgICBNZW5sbyxcbiAgICAgIE1vbmFjbyxcbiAgICAgIENvbnNvbGFzLFxuICAgICAgXCJMaWJlcmF0aW9uIE1vbm9cIixcbiAgICAgIFwiQ291cmllciBOZXdcIixcbiAgICAgIG1vbm9zcGFjZVxuICAgICk7IC8qIDEgKi9cbiAgICBmb250LWZlYXR1cmUtc2V0dGluZ3M6IC0tdGhlbWUoXG4gICAgICAtLWRlZmF1bHQtbW9uby1mb250LWZlYXR1cmUtc2V0dGluZ3MsXG4gICAgICBub3JtYWxcbiAgICApOyAvKiAyICovXG4gICAgZm9udC12YXJpYXRpb24tc2V0dGluZ3M6IC0tdGhlbWUoXG4gICAgICAtLWRlZmF1bHQtbW9uby1mb250LXZhcmlhdGlvbi1zZXR0aW5ncyxcbiAgICAgIG5vcm1hbFxuICAgICk7IC8qIDMgKi9cbiAgICBmb250LXNpemU6IDFlbTsgLyogNCAqL1xuICB9XG5cbiAgLypcbiAgQWRkIHRoZSBjb3JyZWN0IGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4qL1xuXG4gIHNtYWxsIHtcbiAgICBmb250LXNpemU6IDgwJTtcbiAgfVxuXG4gIC8qXG4gIFByZXZlbnQgYHN1YmAgYW5kIGBzdXBgIGVsZW1lbnRzIGZyb20gYWZmZWN0aW5nIHRoZSBsaW5lIGhlaWdodCBpbiBhbGwgYnJvd3NlcnMuXG4qL1xuXG4gIHN1YixcbiAgc3VwIHtcbiAgICBmb250LXNpemU6IDc1JTtcbiAgICBsaW5lLWhlaWdodDogMDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuICB9XG5cbiAgc3ViIHtcbiAgICBib3R0b206IC0wLjI1ZW07XG4gIH1cblxuICBzdXAge1xuICAgIHRvcDogLTAuNWVtO1xuICB9XG5cbiAgLypcbiAgMS4gUmVtb3ZlIHRleHQgaW5kZW50YXRpb24gZnJvbSB0YWJsZSBjb250ZW50cyBpbiBDaHJvbWUgYW5kIFNhZmFyaS4gKGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTk5OTA4OCwgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTI5NylcbiAgMi4gQ29ycmVjdCB0YWJsZSBib3JkZXIgY29sb3IgaW5oZXJpdGFuY2UgaW4gYWxsIENocm9tZSBhbmQgU2FmYXJpLiAoaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9OTM1NzI5LCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MDE2KVxuICAzLiBSZW1vdmUgZ2FwcyBiZXR3ZWVuIHRhYmxlIGJvcmRlcnMgYnkgZGVmYXVsdC5cbiovXG5cbiAgdGFibGUge1xuICAgIHRleHQtaW5kZW50OiAwOyAvKiAxICovXG4gICAgYm9yZGVyLWNvbG9yOiBpbmhlcml0OyAvKiAyICovXG4gICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgLyogMyAqL1xuICB9XG5cbiAgLypcbiAgVXNlIHRoZSBtb2Rlcm4gRmlyZWZveCBmb2N1cyBzdHlsZSBmb3IgYWxsIGZvY3VzYWJsZSBlbGVtZW50cy5cbiovXG5cbiAgOi1tb3otZm9jdXNyaW5nIHtcbiAgICBvdXRsaW5lOiBhdXRvO1xuICB9XG5cbiAgLypcbiAgQWRkIHRoZSBjb3JyZWN0IHZlcnRpY2FsIGFsaWdubWVudCBpbiBDaHJvbWUgYW5kIEZpcmVmb3guXG4qL1xuXG4gIHByb2dyZXNzIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG4gIH1cblxuICAvKlxuICBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBDaHJvbWUgYW5kIFNhZmFyaS5cbiovXG5cbiAgc3VtbWFyeSB7XG4gICAgZGlzcGxheTogbGlzdC1pdGVtO1xuICB9XG5cbiAgLypcbiAgTWFrZSBsaXN0cyB1bnN0eWxlZCBieSBkZWZhdWx0LlxuKi9cblxuICBvbCxcbiAgdWwsXG4gIG1lbnUge1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIH1cblxuICAvKlxuICAxLiBNYWtlIHJlcGxhY2VkIGVsZW1lbnRzIGBkaXNwbGF5OiBibG9ja2AgYnkgZGVmYXVsdC4gKGh0dHBzOi8vZ2l0aHViLmNvbS9tb3pkZXZzL2Nzc3JlbWVkeS9pc3N1ZXMvMTQpXG4gIDIuIEFkZCBgdmVydGljYWwtYWxpZ246IG1pZGRsZWAgdG8gYWxpZ24gcmVwbGFjZWQgZWxlbWVudHMgbW9yZSBzZW5zaWJseSBieSBkZWZhdWx0LiAoaHR0cHM6Ly9naXRodWIuY29tL2plbnNpbW1vbnMvY3NzcmVtZWR5L2lzc3Vlcy8xNCNpc3N1ZWNvbW1lbnQtNjM0OTM0MjEwKVxuICAgICAgVGhpcyBjYW4gdHJpZ2dlciBhIHBvb3JseSBjb25zaWRlcmVkIGxpbnQgZXJyb3IgaW4gc29tZSB0b29scyBidXQgaXMgaW5jbHVkZWQgYnkgZGVzaWduLlxuKi9cblxuICBpbWcsXG4gIHN2ZyxcbiAgdmlkZW8sXG4gIGNhbnZhcyxcbiAgYXVkaW8sXG4gIGlmcmFtZSxcbiAgZW1iZWQsXG4gIG9iamVjdCB7XG4gICAgZGlzcGxheTogYmxvY2s7IC8qIDEgKi9cbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyAvKiAyICovXG4gIH1cblxuICAvKlxuICBDb25zdHJhaW4gaW1hZ2VzIGFuZCB2aWRlb3MgdG8gdGhlIHBhcmVudCB3aWR0aCBhbmQgcHJlc2VydmUgdGhlaXIgaW50cmluc2ljIGFzcGVjdCByYXRpby4gKGh0dHBzOi8vZ2l0aHViLmNvbS9tb3pkZXZzL2Nzc3JlbWVkeS9pc3N1ZXMvMTQpXG4qL1xuXG4gIGltZyxcbiAgdmlkZW8ge1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cblxuICAvKlxuICAxLiBJbmhlcml0IGZvbnQgc3R5bGVzIGluIGFsbCBicm93c2Vycy5cbiAgMi4gUmVtb3ZlIGJvcmRlciByYWRpdXMgaW4gYWxsIGJyb3dzZXJzLlxuICAzLiBSZW1vdmUgYmFja2dyb3VuZCBjb2xvciBpbiBhbGwgYnJvd3NlcnMuXG4gIDQuIEVuc3VyZSBjb25zaXN0ZW50IG9wYWNpdHkgZm9yIGRpc2FibGVkIHN0YXRlcyBpbiBhbGwgYnJvd3NlcnMuXG4qL1xuXG4gIGJ1dHRvbixcbiAgaW5wdXQsXG4gIHNlbGVjdCxcbiAgb3B0Z3JvdXAsXG4gIHRleHRhcmVhLFxuICA6OmZpbGUtc2VsZWN0b3ItYnV0dG9uIHtcbiAgICBmb250OiBpbmhlcml0OyAvKiAxICovXG4gICAgZm9udC1mZWF0dXJlLXNldHRpbmdzOiBpbmhlcml0OyAvKiAxICovXG4gICAgZm9udC12YXJpYXRpb24tc2V0dGluZ3M6IGluaGVyaXQ7IC8qIDEgKi9cbiAgICBsZXR0ZXItc3BhY2luZzogaW5oZXJpdDsgLyogMSAqL1xuICAgIGNvbG9yOiBpbmhlcml0OyAvKiAxICovXG4gICAgYm9yZGVyLXJhZGl1czogMDsgLyogMiAqL1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyAvKiAzICovXG4gICAgb3BhY2l0eTogMTsgLyogNCAqL1xuICB9XG5cbiAgLypcbiAgUmVzdG9yZSBkZWZhdWx0IGZvbnQgd2VpZ2h0LlxuKi9cblxuICA6d2hlcmUoc2VsZWN0OmlzKFttdWx0aXBsZV0sIFtzaXplXSkpIG9wdGdyb3VwIHtcbiAgICBmb250LXdlaWdodDogYm9sZGVyO1xuICB9XG5cbiAgLypcbiAgUmVzdG9yZSBpbmRlbnRhdGlvbi5cbiovXG5cbiAgOndoZXJlKHNlbGVjdDppcyhbbXVsdGlwbGVdLCBbc2l6ZV0pKSBvcHRncm91cCBvcHRpb24ge1xuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAyMHB4O1xuICB9XG5cbiAgLypcbiAgUmVzdG9yZSBzcGFjZSBhZnRlciBidXR0b24uXG4qL1xuXG4gIDo6ZmlsZS1zZWxlY3Rvci1idXR0b24ge1xuICAgIG1hcmdpbi1pbmxpbmUtZW5kOiA0cHg7XG4gIH1cblxuICAvKlxuICBSZXNldCB0aGUgZGVmYXVsdCBwbGFjZWhvbGRlciBvcGFjaXR5IGluIEZpcmVmb3guIChodHRwczovL2dpdGh1Yi5jb20vdGFpbHdpbmRsYWJzL3RhaWx3aW5kY3NzL2lzc3Vlcy8zMzAwKVxuKi9cblxuICA6OnBsYWNlaG9sZGVyIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgLypcbiAgU2V0IHRoZSBkZWZhdWx0IHBsYWNlaG9sZGVyIGNvbG9yIHRvIGEgc2VtaS10cmFuc3BhcmVudCB2ZXJzaW9uIG9mIHRoZSBjdXJyZW50IHRleHQgY29sb3IgaW4gYnJvd3NlcnMgdGhhdCBkbyBub3RcbiAgY3Jhc2ggd2hlbiB1c2luZyBgY29sb3ItbWl4KOKApilgIHdpdGggYGN1cnJlbnRjb2xvcmAuIChodHRwczovL2dpdGh1Yi5jb20vdGFpbHdpbmRsYWJzL3RhaWx3aW5kY3NzL2lzc3Vlcy8xNzE5NClcbiovXG5cbiAgQHN1cHBvcnRzIChub3QgKC13ZWJraXQtYXBwZWFyYW5jZTogLWFwcGxlLXBheS1idXR0b24pKSAvKiBOb3QgU2FmYXJpICovIG9yXG4gICAgKGNvbnRhaW4taW50cmluc2ljLXNpemU6IDFweCkgLyogU2FmYXJpIDE3KyAqLyB7XG4gICAgOjpwbGFjZWhvbGRlciB7XG4gICAgICBjb2xvcjogY29sb3ItbWl4KGluIG9rbGFiLCBjdXJyZW50Y29sb3IgNTAlLCB0cmFuc3BhcmVudCk7XG4gICAgfVxuICB9XG5cbiAgLypcbiAgUHJldmVudCByZXNpemluZyB0ZXh0YXJlYXMgaG9yaXpvbnRhbGx5IGJ5IGRlZmF1bHQuXG4qL1xuXG4gIHRleHRhcmVhIHtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICB9XG5cbiAgLypcbiAgUmVtb3ZlIHRoZSBpbm5lciBwYWRkaW5nIGluIENocm9tZSBhbmQgU2FmYXJpIG9uIG1hY09TLlxuKi9cblxuICA6Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgfVxuXG4gIC8qXG4gIDEuIEVuc3VyZSBkYXRlL3RpbWUgaW5wdXRzIGhhdmUgdGhlIHNhbWUgaGVpZ2h0IHdoZW4gZW1wdHkgaW4gaU9TIFNhZmFyaS5cbiAgMi4gRW5zdXJlIHRleHQgYWxpZ25tZW50IGNhbiBiZSBjaGFuZ2VkIG9uIGRhdGUvdGltZSBpbnB1dHMgaW4gaU9TIFNhZmFyaS5cbiovXG5cbiAgOjotd2Via2l0LWRhdGUtYW5kLXRpbWUtdmFsdWUge1xuICAgIG1pbi1oZWlnaHQ6IDFsaDsgLyogMSAqL1xuICAgIHRleHQtYWxpZ246IGluaGVyaXQ7IC8qIDIgKi9cbiAgfVxuXG4gIC8qXG4gIFByZXZlbnQgaGVpZ2h0IGZyb20gY2hhbmdpbmcgb24gZGF0ZS90aW1lIGlucHV0cyBpbiBtYWNPUyBTYWZhcmkgd2hlbiB0aGUgaW5wdXQgaXMgc2V0IHRvIGBkaXNwbGF5OiBibG9ja2AuXG4qL1xuXG4gIDo6LXdlYmtpdC1kYXRldGltZS1lZGl0IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgfVxuXG4gIC8qXG4gIFJlbW92ZSBleGNlc3MgcGFkZGluZyBmcm9tIHBzZXVkby1lbGVtZW50cyBpbiBkYXRlL3RpbWUgaW5wdXRzIHRvIGVuc3VyZSBjb25zaXN0ZW50IGhlaWdodCBhY3Jvc3MgYnJvd3NlcnMuXG4qL1xuXG4gIDo6LXdlYmtpdC1kYXRldGltZS1lZGl0LWZpZWxkcy13cmFwcGVyIHtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgOjotd2Via2l0LWRhdGV0aW1lLWVkaXQsXG4gIDo6LXdlYmtpdC1kYXRldGltZS1lZGl0LXllYXItZmllbGQsXG4gIDo6LXdlYmtpdC1kYXRldGltZS1lZGl0LW1vbnRoLWZpZWxkLFxuICA6Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1kYXktZmllbGQsXG4gIDo6LXdlYmtpdC1kYXRldGltZS1lZGl0LWhvdXItZmllbGQsXG4gIDo6LXdlYmtpdC1kYXRldGltZS1lZGl0LW1pbnV0ZS1maWVsZCxcbiAgOjotd2Via2l0LWRhdGV0aW1lLWVkaXQtc2Vjb25kLWZpZWxkLFxuICA6Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1taWxsaXNlY29uZC1maWVsZCxcbiAgOjotd2Via2l0LWRhdGV0aW1lLWVkaXQtbWVyaWRpZW0tZmllbGQge1xuICAgIHBhZGRpbmctYmxvY2s6IDA7XG4gIH1cblxuICAvKlxuICBSZW1vdmUgdGhlIGFkZGl0aW9uYWwgYDppbnZhbGlkYCBzdHlsZXMgaW4gRmlyZWZveC4gKGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL2dlY2tvLWRldi9ibG9iLzJmOWVhY2Q5ZDNkOTk1YzkzN2I0MjUxYTU1NTdkOTVkNDk0YzliZTEvbGF5b3V0L3N0eWxlL3Jlcy9mb3Jtcy5jc3MjTDcyOC1MNzM3KVxuKi9cblxuICA6LW1vei11aS1pbnZhbGlkIHtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICB9XG5cbiAgLypcbiAgQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIHRoZSBib3JkZXIgcmFkaXVzIGluIGlPUyBTYWZhcmkuXG4qL1xuXG4gIGJ1dHRvbixcbiAgaW5wdXQ6d2hlcmUoW3R5cGU9XCJidXR0b25cIl0sIFt0eXBlPVwicmVzZXRcIl0sIFt0eXBlPVwic3VibWl0XCJdKSxcbiAgOjpmaWxlLXNlbGVjdG9yLWJ1dHRvbiB7XG4gICAgYXBwZWFyYW5jZTogYnV0dG9uO1xuICB9XG5cbiAgLypcbiAgQ29ycmVjdCB0aGUgY3Vyc29yIHN0eWxlIG9mIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGJ1dHRvbnMgaW4gU2FmYXJpLlxuKi9cblxuICA6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG4gIDo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG5cbiAgLypcbiAgTWFrZSBlbGVtZW50cyB3aXRoIHRoZSBIVE1MIGhpZGRlbiBhdHRyaWJ1dGUgc3RheSBoaWRkZW4gYnkgZGVmYXVsdC5cbiovXG5cbiAgW2hpZGRlbl06d2hlcmUoOm5vdChbaGlkZGVuPVwidW50aWwtZm91bmRcIl0pKSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBsYXllciB1dGlsaXRpZXMge1xuICBAdGFpbHdpbmQgdXRpbGl0aWVzO1xufVxuIiwiLyogQWJvdXQgUGFnZSBTdHlsZXMgLSBGb2xsb3dpbmcgQm91bmRsZXNzIEJyYW5kIFN0YW5kYXJkcyAqL1xuXG4vKiBBYm91dCBQYWdlIENvbnRhaW5lciAqL1xuLmFib3V0LXBhZ2Uge1xuICBtaW4taGVpZ2h0OiAxMDB2aDtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZCk7XG59XG5cbi8qIEhlcm8gU2VjdGlvbiBTcGVjaWZpYyBTdHlsZXMgKi9cbi5hYm91dC1oZXJvLWJhY2tncm91bmQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LXJnYiksIDAuMDIpIDAlLCB0cmFuc3BhcmVudCAxMDAlKTtcbiAgei1pbmRleDogMTtcbn1cblxuLmFib3V0LWhlcm8tY29udGVudCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMjtcbn1cblxuLyogU3RvcnkgU2VjdGlvbiBUaW1lbGluZSAqL1xuLmFib3V0LXN0b3J5LXRpbWVsaW5lIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uYWJvdXQtc3RvcnktdGltZWxpbmU6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDJyZW07XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICB3aWR0aDogMnB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ib3JkZXIpO1xufVxuXG4uYWJvdXQtc3RvcnktY2hhcHRlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZy1sZWZ0OiA0cmVtO1xufVxuXG4uYWJvdXQtc3RvcnkteWVhciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICB3aWR0aDogNHJlbTtcbiAgaGVpZ2h0OiA0cmVtO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZCk7XG4gIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbn1cblxuLyogVmlzaW9uICYgTWlzc2lvbiBDYXJkcyAqL1xuLmFib3V0LXZpc2lvbi1jYXJkLFxuLmFib3V0LW1pc3Npb24tY2FyZCB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctc20pO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlLCBib3gtc2hhZG93IDAuM3MgZWFzZTtcbn1cblxuLmFib3V0LXZpc2lvbi1jYXJkOmhvdmVyLFxuLmFib3V0LW1pc3Npb24tY2FyZDpob3ZlciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNHB4KTtcbiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LW1kKTtcbn1cblxuLyogQ29yZSBWYWx1ZXMgR3JpZCAqL1xuLmFib3V0LXZhbHVlcy1ncmlkIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyODBweCwgMWZyKSk7XG4gIGdhcDogMnJlbTtcbn1cblxuLmFib3V0LXZhbHVlLWNhcmQge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgcGFkZGluZzogMnJlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xufVxuXG4uYWJvdXQtdmFsdWUtY2FyZC5mZWF0dXJlZCB7XG4gIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWNvbG9yLWhlcml0YWdlKTtcbiAgYm94LXNoYWRvdzogMCAwIDIwcHggcmdiYSh2YXIoLS1jb2xvci1oZXJpdGFnZS1yZ2IpLCAwLjE1KTtcbn1cblxuLmFib3V0LXZhbHVlLWV4YW1wbGUge1xuICBtYXJnaW4tdG9wOiAxcmVtO1xuICBwYWRkaW5nOiAxcmVtO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1tdXRlZCk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbn1cblxuLyogVGVhbSBNZW1iZXIgQ2FyZHMgKi9cbi5hYm91dC10ZWFtLWdyaWQge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDMwMHB4LCAxZnIpKTtcbiAgZ2FwOiAycmVtO1xufVxuXG4uYWJvdXQtdGVhbS1tZW1iZXIge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgcGFkZGluZzogMnJlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlLCBib3gtc2hhZG93IDAuM3MgZWFzZTtcbn1cblxuLmFib3V0LXRlYW0tbWVtYmVyOmhvdmVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpO1xuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGcpO1xufVxuXG4uYWJvdXQtdGVhbS1hdmF0YXIge1xuICB3aWR0aDogNnJlbTtcbiAgaGVpZ2h0OiA2cmVtO1xuICBtYXJnaW46IDAgYXV0byAxcmVtO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWNvbG9yLXByaW1hcnkpLCB2YXIoLS1jb2xvci1wcmltYXJ5LWRhcmspKTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgZm9udC1zaXplOiAxLjVyZW07XG59XG5cbi5hYm91dC10ZWFtLWF2YXRhciBpbWcge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvYmplY3QtZml0OiBjb3Zlcjtcbn1cblxuLmFib3V0LXRlYW0tZXhwZXJ0aXNlIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgZ2FwOiAwLjVyZW07XG4gIG1hcmdpbi10b3A6IDFyZW07XG59XG5cbi5hYm91dC1leHBlcnRpc2UtdGFnIHtcbiAgcGFkZGluZzogMC4yNXJlbSAwLjc1cmVtO1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktcmdiKSwgMC4xKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtZnVsbCk7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxuLmFib3V0LXRlYW0tc29jaWFsIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGdhcDogMC43NXJlbTtcbiAgbWFyZ2luLXRvcDogMXJlbTtcbn1cblxuLmFib3V0LXNvY2lhbC1saW5rIHtcbiAgd2lkdGg6IDIuNXJlbTtcbiAgaGVpZ2h0OiAyLjVyZW07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktcmdiKSwgMC4xKTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgZWFzZTtcbn1cblxuLmFib3V0LXNvY2lhbC1saW5rOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LXJnYiksIDAuMik7XG59XG5cbi8qIE1pbGVzdG9uZXMgVGltZWxpbmUgKi9cbi5hYm91dC1taWxlc3RvbmVzLXRpbWVsaW5lIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nLWxlZnQ6IDNyZW07XG59XG5cbi5hYm91dC1taWxlc3RvbmUtaXRlbSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZy1ib3R0b206IDNyZW07XG59XG5cbi5hYm91dC1taWxlc3RvbmUtaXRlbTo6YmVmb3JlIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogLTIuNXJlbTtcbiAgdG9wOiAwLjVyZW07XG4gIHdpZHRoOiAwLjc1cmVtO1xuICBoZWlnaHQ6IDAuNzVyZW07XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWhlcml0YWdlKTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xufVxuXG4uYWJvdXQtbWlsZXN0b25lLWl0ZW06OmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogLTIuMTI1cmVtO1xuICB0b3A6IDEuMjVyZW07XG4gIGJvdHRvbTogLTNyZW07XG4gIHdpZHRoOiAycHg7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJvcmRlcik7XG59XG5cbi5hYm91dC1taWxlc3RvbmUtaXRlbTpsYXN0LWNoaWxkOjphZnRlciB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5hYm91dC1taWxlc3RvbmUtY29udGVudCB7XG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3ItbXV0ZWQtcmdiKSwgMC4zKTtcbiAgcGFkZGluZzogMS41cmVtO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xufVxuXG4vKiBNZXRyaWNzIERpc3BsYXkgKi9cbi5hYm91dC1tZXRyaWNzLWdyaWQge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDIwMHB4LCAxZnIpKTtcbiAgZ2FwOiAycmVtO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG1hcmdpbi1ib3R0b206IDNyZW07XG59XG5cbi5hYm91dC1tZXRyaWMtdmFsdWUge1xuICBmb250LXNpemU6IDNyZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1oZXJpdGFnZSk7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG59XG5cbi5hYm91dC1tZXRyaWMtbGFiZWwge1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBmb250LXdlaWdodDogNjAwO1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gIG1hcmdpbi1ib3R0b206IDAuMjVyZW07XG59XG5cbi5hYm91dC1tZXRyaWMtZGVzY3JpcHRpb24ge1xuICBmb250LXNpemU6IDAuNzVyZW07XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LW11dGVkKTtcbn1cblxuLyogQWNoaWV2ZW1lbnRzIEdyaWQgKi9cbi5hYm91dC1hY2hpZXZlbWVudHMtZ3JpZCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjAwcHgsIDFmcikpO1xuICBnYXA6IDJyZW07XG4gIG1hcmdpbi10b3A6IDJyZW07XG59XG5cbi5hYm91dC1hY2hpZXZlbWVudC1jYXJkIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nOiAxLjVyZW07XG59XG5cbi5hYm91dC1hY2hpZXZlbWVudC1pY29uIHtcbiAgd2lkdGg6IDRyZW07XG4gIGhlaWdodDogNHJlbTtcbiAgbWFyZ2luOiAwIGF1dG8gMXJlbTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS1yZ2IpLCAwLjEpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xufVxuXG4uYWJvdXQtYWNoaWV2ZW1lbnQtY2FyZC5mZWF0dXJlZCAuYWJvdXQtYWNoaWV2ZW1lbnQtaWNvbiB7XG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3ItaGVyaXRhZ2UtcmdiKSwgMC4xKTtcbn1cblxuLyogVGVzdGltb25pYWwgQ2FyZHMgKi9cbi5hYm91dC10ZXN0aW1vbmlhbC1jYXJkIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZCk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gIHBhZGRpbmc6IDJyZW07XG4gIGhlaWdodDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLmFib3V0LXRlc3RpbW9uaWFsLWNhcmQuZmVhdHVyZWQge1xuICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1jb2xvci1oZXJpdGFnZSk7XG4gIGJveC1zaGFkb3c6IDAgMCAyMHB4IHJnYmEodmFyKC0tY29sb3ItaGVyaXRhZ2UtcmdiKSwgMC4xKTtcbn1cblxuLmFib3V0LXRlc3RpbW9uaWFsLXF1b3RlIHtcbiAgZm9udC1zaXplOiAxLjEyNXJlbTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbiAgZmxleC1ncm93OiAxO1xufVxuXG4uYWJvdXQtdGVzdGltb25pYWwtYXV0aG9yIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAxcmVtO1xufVxuXG4uYWJvdXQtdGVzdGltb25pYWwtYXZhdGFyIHtcbiAgd2lkdGg6IDNyZW07XG4gIGhlaWdodDogM3JlbTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1tdXRlZCk7XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4uYWJvdXQtdGVzdGltb25pYWwtaW5mbyB7XG4gIGZsZXgtZ3JvdzogMTtcbn1cblxuLmFib3V0LXRlc3RpbW9uaWFsLW5hbWUge1xuICBmb250LXdlaWdodDogNjAwO1xuICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gIG1hcmdpbi1ib3R0b206IDAuMTI1cmVtO1xufVxuXG4uYWJvdXQtdGVzdGltb25pYWwtcm9sZSB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LW11dGVkKTtcbn1cblxuLyogQ2FyZWVycyBDVEEgU2VjdGlvbiAqL1xuLmFib3V0LWNhcmVlcnMtc2VjdGlvbiB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWFjY2VudC1saWdodCk7XG4gIHBhZGRpbmc6IDRyZW0gMDtcbn1cblxuLmFib3V0LWNhcmVlcnMtYmVuZWZpdHMsXG4uYWJvdXQtY2FyZWVycy1jdWx0dXJlIHtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICBwYWRkaW5nOiAxLjVyZW07XG59XG5cbi5hYm91dC1jYXJlZXJzLWxpc3Qge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIHNwYWNlLXk6IDAuNzVyZW07XG59XG5cbi5hYm91dC1jYXJlZXJzLWxpc3QtaXRlbSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBnYXA6IDAuNXJlbTtcbn1cblxuLmFib3V0LWNhcmVlcnMtY3RhLWJ1dHRvbnMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDFyZW07XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1hcmdpbi10b3A6IDJyZW07XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xuICAuYWJvdXQtY2FyZWVycy1jdGEtYnV0dG9ucyB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxufVxuXG4vKiBGaW5hbCBDVEEgU2VjdGlvbiAqL1xuLmFib3V0LWZpbmFsLWN0YSB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICBjb2xvcjogd2hpdGU7XG4gIHBhZGRpbmc6IDZyZW0gMDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uYWJvdXQtZmluYWwtY3RhLXRpdGxlIHtcbiAgY29sb3I6IHdoaXRlO1xuICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XG59XG5cbi5hYm91dC1maW5hbC1jdGEtZGVzY3JpcHRpb24ge1xuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpO1xuICBtYXJnaW4tYm90dG9tOiAycmVtO1xufVxuXG4uYWJvdXQtZmluYWwtY3RhLWJ1dHRvbnMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDFyZW07XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1hcmdpbi1ib3R0b206IDJyZW07XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xuICAuYWJvdXQtZmluYWwtY3RhLWJ1dHRvbnMge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIH1cbn1cblxuLmFib3V0LWZpbmFsLWN0YS10cnVzdCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGdhcDogMS41cmVtO1xuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xufVxuXG4uYWJvdXQtdHJ1c3QtaW5kaWNhdG9yIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAwLjVyZW07XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG5cbi8qIE1vYmlsZSBSZXNwb25zaXZlbmVzcyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5hYm91dC1zdG9yeS10aW1lbGluZTo6YmVmb3JlIHtcbiAgICBsZWZ0OiAxcmVtO1xuICB9XG4gIFxuICAuYWJvdXQtc3RvcnktY2hhcHRlciB7XG4gICAgcGFkZGluZy1sZWZ0OiAzcmVtO1xuICB9XG4gIFxuICAuYWJvdXQtc3RvcnkteWVhciB7XG4gICAgd2lkdGg6IDNyZW07XG4gICAgaGVpZ2h0OiAzcmVtO1xuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIH1cbiAgXG4gIC5hYm91dC12YWx1ZXMtZ3JpZCxcbiAgLmFib3V0LXRlYW0tZ3JpZCxcbiAgLmFib3V0LWFjaGlldmVtZW50cy1ncmlkIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgfVxuICBcbiAgLmFib3V0LW1ldHJpY3MtZ3JpZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgZ2FwOiAxLjVyZW07XG4gIH1cbiAgXG4gIC5hYm91dC1tZXRyaWMtdmFsdWUge1xuICAgIGZvbnQtc2l6ZTogMi41cmVtO1xuICB9XG4gIFxuICAuYWJvdXQtbWlsZXN0b25lcy10aW1lbGluZSB7XG4gICAgcGFkZGluZy1sZWZ0OiAycmVtO1xuICB9XG4gIFxuICAuYWJvdXQtbWlsZXN0b25lLWl0ZW06OmJlZm9yZSB7XG4gICAgbGVmdDogLTEuNXJlbTtcbiAgfVxuICBcbiAgLmFib3V0LW1pbGVzdG9uZS1pdGVtOjphZnRlciB7XG4gICAgbGVmdDogLTEuMTI1cmVtO1xuICB9XG59XG5cbi8qIFRhYmxldCBBZGp1c3RtZW50cyAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogMTAyM3B4KSB7XG4gIC5hYm91dC12YWx1ZXMtZ3JpZCxcbiAgLmFib3V0LXRlYW0tZ3JpZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgfVxuICBcbiAgLmFib3V0LW1ldHJpY3MtZ3JpZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKTtcbiAgfVxufVxuXG4vKiBQV0EgU2Nyb2xsIEFuaW1hdGlvbiBFbmhhbmNlbWVudHMgZm9yIEFib3V0IFBhZ2UgKi9cbi5hYm91dC1wYWdlIC5wd2Etc2Nyb2xsLWZhZGUge1xuICBhbmltYXRpb24tZGVsYXk6IGNhbGModmFyKC0tc3RhZ2dlci1pbmRleCwgMCkgKiAxMDBtcyk7XG59XG5cbi5hYm91dC1wYWdlIC5wd2Etc2Nyb2xsLXNsaWRlLWxlZnQge1xuICBhbmltYXRpb24tZGVsYXk6IGNhbGModmFyKC0tc3RhZ2dlci1pbmRleCwgMCkgKiAxNTBtcyk7XG59XG5cbi5hYm91dC1wYWdlIC5wd2Etc2Nyb2xsLXNsaWRlLXJpZ2h0IHtcbiAgYW5pbWF0aW9uLWRlbGF5OiBjYWxjKHZhcigtLXN0YWdnZXItaW5kZXgsIDApICogMTUwbXMpO1xufVxuXG4vKiBQcmludCBTdHlsZXMgKi9cbkBtZWRpYSBwcmludCB7XG4gIC5hYm91dC1wYWdlIHtcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgfVxuICBcbiAgLmFib3V0LWhlcm8tYmFja2dyb3VuZCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICBcbiAgLmFib3V0LXRlYW0tc29jaWFsLFxuICAuYWJvdXQtY2FyZWVycy1jdGEtYnV0dG9ucyxcbiAgLmFib3V0LWZpbmFsLWN0YS1idXR0b25zIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIFxuICAuYWJvdXQtcGFnZSBzZWN0aW9uIHtcbiAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7XG4gIH1cbn0iLCIvKiBBdmF0YXIgQ2hhdCBXaWRnZXQgU3R5bGVzIC0gRm9sbG93aW5nIEJyYW5kIEd1aWRlbGluZXMgKi9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFRSSUdHRVIgQlVUVE9OXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uYXZhdGFyLWNoYXQtdHJpZ2dlciB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgYm90dG9tOiAxLjVyZW07XG4gIHJpZ2h0OiAxLjVyZW07XG4gIHotaW5kZXg6IDEwMDA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBnYXA6IDAuNXJlbTtcbiAgd2lkdGg6IDU2cHg7XG4gIGhlaWdodDogNTZweDtcbiAgcGFkZGluZzogMDtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJhY2tncm91bmQ6ICNFMDRCMzg7IC8qIEhlcml0YWdlIHJlZCAqL1xuICBjb2xvcjogd2hpdGU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYm94LXNoYWRvdzogMCA0cHggMjBweCByZ2JhKDIyNCwgNzUsIDU2LCAwLjQpLFxuICAgICAgICAgICAgICAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMgZWFzZSwgYm94LXNoYWRvdyAwLjJzIGVhc2UsIG9wYWNpdHkgMC4ycyBlYXNlO1xuICBhbmltYXRpb246IGF2YXRhci1jaGF0LXB1bHNlIDNzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xufVxuXG4uYXZhdGFyLWNoYXQtdHJpZ2dlcjpob3ZlciB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMS4xKTtcbiAgYm94LXNoYWRvdzogMCA2cHggMjRweCByZ2JhKDIyNCwgNzUsIDU2LCAwLjUpLFxuICAgICAgICAgICAgICAwIDRweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcbn1cblxuLmF2YXRhci1jaGF0LXRyaWdnZXI6Zm9jdXMge1xuICBvdXRsaW5lOiAycHggc29saWQgI0UwNEIzODtcbiAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbn1cblxuLmF2YXRhci1jaGF0LXRyaWdnZXI6YWN0aXZlIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjk1KTtcbn1cblxuLmF2YXRhci1jaGF0LXRyaWdnZXItLWhpZGRlbiB7XG4gIG9wYWNpdHk6IDA7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB0cmFuc2Zvcm06IHNjYWxlKDAuOCk7XG59XG5cbi5hdmF0YXItY2hhdC10cmlnZ2VyLS1sZWZ0IHtcbiAgcmlnaHQ6IGF1dG87XG4gIGxlZnQ6IDEuNXJlbTtcbn1cblxuLyogUHVsc2UgYW5pbWF0aW9uICovXG5Aa2V5ZnJhbWVzIGF2YXRhci1jaGF0LXB1bHNlIHtcbiAgMCUsIDEwMCUge1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDIwcHggcmdiYSgyMjQsIDc1LCA1NiwgMC40KSxcbiAgICAgICAgICAgICAgICAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgfVxuICA1MCUge1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDMwcHggcmdiYSgyMjQsIDc1LCA1NiwgMC42KSxcbiAgICAgICAgICAgICAgICAwIDJweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSxcbiAgICAgICAgICAgICAgICAwIDAgMCA4cHggcmdiYSgyMjQsIDc1LCA1NiwgMC4xKTtcbiAgfVxufVxuXG4uYXZhdGFyLWNoYXQtdHJpZ2dlci1pY29uIHtcbiAgd2lkdGg6IDI0cHg7XG4gIGhlaWdodDogMjRweDtcbiAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5hdmF0YXItY2hhdC10cmlnZ2VyLXRleHQge1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBmb250LXdlaWdodDogNjAwO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgT1ZFUkxBWVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmF2YXRhci1jaGF0LW92ZXJsYXkge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgei1pbmRleDogMTAwMTtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGJhY2tkcm9wLWZpbHRlcjogbm9uZTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7IC8qIEFsbG93IGNsaWNraW5nIHRocm91Z2ggb24gZGVza3RvcCAqL1xuICBvcGFjaXR5OiAwO1xuICBhbmltYXRpb246IGF2YXRhci1jaGF0LWZhZGUtaW4gMC4ycyBlYXNlIGZvcndhcmRzO1xufVxuXG5Aa2V5ZnJhbWVzIGF2YXRhci1jaGF0LWZhZGUtaW4ge1xuICB0byB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgUE9QVVAgV0lORE9XXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uYXZhdGFyLWNoYXQtcG9wdXAge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGJvdHRvbTogMS41cmVtO1xuICByaWdodDogMS41cmVtO1xuICB6LWluZGV4OiAxMDAyO1xuICBkaXNwbGF5OiBub25lO1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB3aWR0aDogNDAwcHg7XG4gIGhlaWdodDogNjAwcHg7XG4gIG1heC13aWR0aDogY2FsYygxMDB2dyAtIDJyZW0pO1xuICBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gM3JlbSk7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICBib3gtc2hhZG93OiAwIDhweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4yKSxcbiAgICAgICAgICAgICAgMCA0cHggMTZweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMHB4KSBzY2FsZSgwLjk1KTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2UsIHRyYW5zZm9ybSAwLjNzIGVhc2U7XG59XG5cbi5hdmF0YXItY2hhdC1wb3B1cC0tbGVmdCB7XG4gIHJpZ2h0OiBhdXRvO1xuICBsZWZ0OiAxLjVyZW07XG59XG5cbi5hdmF0YXItY2hhdC1wb3B1cC0tb3BlbiB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgxKTtcbn1cblxuLmF2YXRhci1jaGF0LXBvcHVwLS1jbG9zaW5nIHtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwcHgpIHNjYWxlKDAuOTgpO1xufVxuXG4vKiBEYXJrIG1vZGUgcG9wdXAgKi9cbjpyb290LmRhcmsgLmF2YXRhci1jaGF0LXBvcHVwIHtcbiAgYmFja2dyb3VuZDogIzFmMjkzNztcbiAgYm94LXNoYWRvdzogMCA4cHggNDBweCByZ2JhKDAsIDAsIDAsIDAuNCksXG4gICAgICAgICAgICAgIDAgNHB4IDE2cHggcmdiYSgwLCAwLCAwLCAwLjMpO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgUE9QVVAgSEVBREVSXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uYXZhdGFyLWNoYXQtcG9wdXAtaGVhZGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBwYWRkaW5nOiAxcmVtIDEuMjVyZW07XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNFMDRCMzggMCUsICNjNzNkMmQgMTAwJSk7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cblxuLmF2YXRhci1jaGF0LXBvcHVwLXRpdGxlIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAwLjVyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbn1cblxuLmF2YXRhci1jaGF0LXBvcHVwLXRpdGxlLWljb24ge1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xufVxuXG4uYXZhdGFyLWNoYXQtcG9wdXAtY2xvc2Uge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgd2lkdGg6IDMycHg7XG4gIGhlaWdodDogMzJweDtcbiAgcGFkZGluZzogMDtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcbiAgY29sb3I6IHdoaXRlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4ycyBlYXNlO1xufVxuXG4uYXZhdGFyLWNoYXQtcG9wdXAtY2xvc2U6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XG59XG5cbi5hdmF0YXItY2hhdC1wb3B1cC1jbG9zZTpmb2N1cyB7XG4gIG91dGxpbmU6IDJweCBzb2xpZCB3aGl0ZTtcbiAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbn1cblxuLmF2YXRhci1jaGF0LXBvcHVwLWNsb3NlIHN2ZyB7XG4gIHdpZHRoOiAxNnB4O1xuICBoZWlnaHQ6IDE2cHg7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBQT1BVUCBCT0RZXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uYXZhdGFyLWNoYXQtcG9wdXAtYm9keSB7XG4gIGZsZXg6IDE7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG59XG5cbjpyb290LmRhcmsgLmF2YXRhci1jaGF0LXBvcHVwLWJvZHkge1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbn1cblxuLyogVGVsZXBsZXggZW1iZWQgc3R5bGVzICovXG4uYXZhdGFyLWNoYXQtcG9wdXAtYm9keSB0ZWxlcGxleC1lbWJlZC1jb25maWcge1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLmF2YXRhci1jaGF0LXNlc3Npb24tZ2F0ZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQ6IDA7XG4gIHotaW5kZXg6IDI7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBnYXA6IDAuODc1cmVtO1xuICBwYWRkaW5nOiAxLjI1cmVtO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTUpIDAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTgpIDEwMCUpO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5hdmF0YXItY2hhdC1zZXNzaW9uLWdhdGUtLWhpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5hdmF0YXItY2hhdC1zZXNzaW9uLWdhdGUtdGV4dCB7XG4gIG1hcmdpbjogMDtcbiAgY29sb3I6ICMxMTE4Mjc7XG4gIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxuLmF2YXRhci1jaGF0LXN0YXJ0LXNlc3Npb24ge1xuICBtaW4taGVpZ2h0OiA0MnB4O1xuICBwYWRkaW5nOiAwLjYyNXJlbSAxcmVtO1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICBiYWNrZ3JvdW5kOiAjRTA0QjM4O1xuICBjb2xvcjogI2ZmZjtcbiAgZm9udC1zaXplOiAwLjlyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMgZWFzZSwgYm94LXNoYWRvdyAwLjJzIGVhc2U7XG59XG5cbi5hdmF0YXItY2hhdC1zdGFydC1zZXNzaW9uOmhvdmVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICBib3gtc2hhZG93OiAwIDZweCAxNnB4IHJnYmEoMjI0LCA3NSwgNTYsIDAuMzUpO1xufVxuXG4uYXZhdGFyLWNoYXQtc3RhcnQtc2Vzc2lvbjpmb2N1cyB7XG4gIG91dGxpbmU6IDJweCBzb2xpZCAjRTA0QjM4O1xuICBvdXRsaW5lLW9mZnNldDogMnB4O1xufVxuXG46cm9vdC5kYXJrIC5hdmF0YXItY2hhdC1zZXNzaW9uLWdhdGUge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCByZ2JhKDMxLCA0MSwgNTUsIDAuOTUpIDAlLCByZ2JhKDMxLCA0MSwgNTUsIDAuOTgpIDEwMCUpO1xufVxuXG46cm9vdC5kYXJrIC5hdmF0YXItY2hhdC1zZXNzaW9uLWdhdGUtdGV4dCB7XG4gIGNvbG9yOiAjZjNmNGY2O1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgTU9CSUxFIFJFU1BPTlNJVkVORVNTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgLmF2YXRhci1jaGF0LXRyaWdnZXIge1xuICAgIGJvdHRvbTogMXJlbTtcbiAgICByaWdodDogMXJlbTtcbiAgICB3aWR0aDogNTJweDtcbiAgICBoZWlnaHQ6IDUycHg7XG4gIH1cblxuICAuYXZhdGFyLWNoYXQtdHJpZ2dlci0tbGVmdCB7XG4gICAgbGVmdDogMXJlbTtcbiAgfVxuXG4gIC8qIE1vYmlsZSBvdmVybGF5IC0ga2VlcCBzbGlnaHQgZGFya2VuaW5nIGJ1dCBubyBibHVyICovXG4gIC5hdmF0YXItY2hhdC1vdmVybGF5IHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMyk7XG4gICAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gIH1cblxuICAuYXZhdGFyLWNoYXQtcG9wdXAge1xuICAgIGJvdHRvbTogMDtcbiAgICByaWdodDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogY2FsYygxMDB2aCAtIDYwcHgpO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNjBweCk7XG4gICAgYm9yZGVyLXJhZGl1czogMTZweCAxNnB4IDAgMDtcbiAgfVxuXG4gIC5hdmF0YXItY2hhdC1wb3B1cC0tbGVmdCB7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgfVxuXG4gIC5hdmF0YXItY2hhdC1wb3B1cC0tb3BlbiB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICB9XG5cbiAgLmF2YXRhci1jaGF0LXBvcHVwLS1jbG9zaW5nIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gIH1cblxuICAuYXZhdGFyLWNoYXQtdHJpZ2dlci10ZXh0IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkge1xuICAuYXZhdGFyLWNoYXQtdHJpZ2dlciB7XG4gICAgd2lkdGg6IDQ4cHg7XG4gICAgaGVpZ2h0OiA0OHB4O1xuICB9XG5cbiAgLmF2YXRhci1jaGF0LXRyaWdnZXItaWNvbiB7XG4gICAgd2lkdGg6IDIycHg7XG4gICAgaGVpZ2h0OiAyMnB4O1xuICB9XG5cbiAgLmF2YXRhci1jaGF0LXBvcHVwIHtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwdmggLSA0MHB4KTtcbiAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNDBweCk7XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFJFRFVDRUQgTU9USU9OXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAuYXZhdGFyLWNoYXQtdHJpZ2dlciB7XG4gICAgYW5pbWF0aW9uOiBub25lO1xuICB9XG5cbiAgLmF2YXRhci1jaGF0LXRyaWdnZXIsXG4gIC5hdmF0YXItY2hhdC1wb3B1cCxcbiAgLmF2YXRhci1jaGF0LW92ZXJsYXkge1xuICAgIHRyYW5zaXRpb246IG5vbmU7XG4gIH1cbn1cbiIsIi8qKlxuICogQnJlYWRjcnVtYiBDb21wb25lbnQgU3R5bGVzXG4gKiBGb2xsb3dpbmcgdGhlIHRocmVlLWxheWVyIENTUyBhcmNoaXRlY3R1cmVcbiAqL1xuXG4vKiBDb21wb25lbnQgRW5oYW5jZW1lbnQgTGF5ZXIgKi9cbi5icmVhZGNydW1iLW5hdiB7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTQpIDA7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1zdXJmYWNlKSk7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2IodmFyKC0tY29sb3ItYm9yZGVyKSk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1zbSk7XG59XG5cbi5icmVhZGNydW1iLWxpc3Qge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGdhcDogdmFyKC0tc3BhY2UtMik7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbn1cblxuLmJyZWFkY3J1bWItaXRlbSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogdmFyKC0tc3BhY2UtMik7XG59XG5cbi5icmVhZGNydW1iLWxpbmsge1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5KSk7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2Utc21vb3RoKTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxuLmJyZWFkY3J1bWItbGluazpob3ZlciB7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cblxuLmJyZWFkY3J1bWItbGluazpmb2N1cy12aXNpYmxlIHtcbiAgb3V0bGluZTogMnB4IHNvbGlkIHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG4gIG91dGxpbmUtb2Zmc2V0OiAycHg7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7XG59XG5cbi5icmVhZGNydW1iLWN1cnJlbnQge1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXRleHQpKTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLmJyZWFkY3J1bWItc2VwYXJhdG9yIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci10ZXh0LW11dGVkKSk7XG59XG5cbi5icmVhZGNydW1iLXNlcGFyYXRvci1pY29uIHtcbiAgd2lkdGg6IDFyZW07XG4gIGhlaWdodDogMXJlbTtcbn1cblxuLyogTW9iaWxlIE9wdGltaXphdGlvbiAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5icmVhZGNydW1iLW5hdiB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtMykgMDtcbiAgICBmb250LXNpemU6IHZhcigtLXRleHQteHMpO1xuICB9XG4gIFxuICAuYnJlYWRjcnVtYi1saXN0IHtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTEpO1xuICB9XG4gIFxuICAuYnJlYWRjcnVtYi1pdGVtIHtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTEpO1xuICB9XG4gIFxuICAvKiBIaWRlIGludGVybWVkaWF0ZSBpdGVtcyBvbiBtb2JpbGUsIHNob3cgb25seSBmaXJzdCBhbmQgbGFzdCAqL1xuICAuYnJlYWRjcnVtYi1pdGVtOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgXG4gIC8qIFNob3cgZWxsaXBzaXMgYmV0d2VlbiBmaXJzdCBhbmQgbGFzdCBvbiBtb2JpbGUgKi9cbiAgLmJyZWFkY3J1bWItaXRlbTpmaXJzdC1jaGlsZDo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiLi4uXCI7XG4gICAgbWFyZ2luOiAwIHZhcigtLXNwYWNlLTIpO1xuICAgIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItdGV4dC1tdXRlZCkpO1xuICB9XG4gIFxuICAvKiBEb24ndCBzaG93IGVsbGlwc2lzIGlmIG9ubHkgdHdvIGl0ZW1zICovXG4gIC5icmVhZGNydW1iLWl0ZW06Zmlyc3QtY2hpbGQ6bnRoLWxhc3QtY2hpbGQoMik6OmFmdGVyIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi8qIERhcmsgbW9kZSBzdXBwb3J0ICovXG5AbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XG4gIC5icmVhZGNydW1iLW5hdiB7XG4gICAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLXN1cmZhY2UtZGFyaykpO1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYih2YXIoLS1jb2xvci1ib3JkZXItZGFyaykpO1xuICB9XG4gIFxuICAuYnJlYWRjcnVtYi1saW5rIHtcbiAgICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5LWRhcmspKTtcbiAgfVxuICBcbiAgLmJyZWFkY3J1bWItbGluazpob3ZlciB7XG4gICAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5LWRhcmspKTtcbiAgfVxuICBcbiAgLmJyZWFkY3J1bWItY3VycmVudCB7XG4gICAgY29sb3I6IHJnYih2YXIoLS1jb2xvci10ZXh0LWRhcmspKTtcbiAgfVxufVxuXG4vKiBQcmludCBzdHlsZXMgKi9cbkBtZWRpYSBwcmludCB7XG4gIC5icmVhZGNydW1iLW5hdiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufSIsIi8qKlxuICogQnV0dG9uIENvbXBvbmVudCBFbmhhbmNlbWVudCBTdHlsZXNcbiAqIFxuICogTGF5ZXIgMjogQ29tcG9uZW50LXNwZWNpZmljIGVuaGFuY2VtZW50cyB0aGF0IGJ1aWxkIG9uIHRoZSBmb3VuZGF0aW9uXG4gKiBidXR0b24gc3R5bGVzIGZyb20gc3JjL2luZGV4LmNzc1xuICogXG4gKiBJTVBPUlRBTlQ6IFRoaXMgZmlsZSBvbmx5IGNvbnRhaW5zIGNvbXBvbmVudC1zcGVjaWZpYyBlbmhhbmNlbWVudHMuXG4gKiBCYXNlIGJ1dHRvbiBzdHlsZXMgKC5idG4sIC5idG4taGVyaXRhZ2UsIGV0Yy4pIGFyZSBkZWZpbmVkIGluIGluZGV4LmNzc1xuICovXG5cbi8qIEJ1dHRvbiB0ZXh0IHN0eWxpbmcgZm9yIGNvbnNpc3RlbmN5ICovXG4uYnRuLXRleHQge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0yKTtcbiAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7XG4gIGxpbmUtaGVpZ2h0OiAxLjI7XG59XG5cbi8qIEljb24gY29udGFpbmVyIGFkanVzdG1lbnRzIHdpdGhpbiBidXR0b25zICovXG4uYnRuIC5pY29uLWNvbnRhaW5lci14cyxcbi5idG4gLmljb24tY29udGFpbmVyLXNtIHtcbiAgLyogUmVtb3ZlIGRlZmF1bHQgbWFyZ2lucyBmcm9tIGljb24gY29udGFpbmVycyBpbnNpZGUgYnV0dG9ucyAqL1xuICBtYXJnaW46IDA7XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4vKiBCdXR0b24gd2l0aCBpY29uIHNwYWNpbmcgKi9cbi5idG4gLmljb24tY29udGFpbmVyLXhzICsgLmJ0bi10ZXh0LFxuLmJ0biAuaWNvbi1jb250YWluZXItc20gKyAuYnRuLXRleHQge1xuICBtYXJnaW4tbGVmdDogdmFyKC0tc3BhY2UtMik7XG59XG5cbi5idG4gLmJ0bi10ZXh0ICsgLmljb24tY29udGFpbmVyLXhzLFxuLmJ0biAuYnRuLXRleHQgKyAuaWNvbi1jb250YWluZXItc20ge1xuICBtYXJnaW4tbGVmdDogdmFyKC0tc3BhY2UtMik7XG59XG5cbi8qIEZ1bGwgd2lkdGggYnV0dG9uICovXG4uYnRuLWJsb2NrIHtcbiAgZGlzcGxheTogZmxleDtcbiAgd2lkdGg6IDEwMCU7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4vKiBMb2FkaW5nIHN0YXRlICovXG4uYnRuLWxvYWRpbmctc3Bpbm5lciB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtYXJnaW4tcmlnaHQ6IHZhcigtLXNwYWNlLTIpO1xufVxuXG4ubG9hZGluZy1kb3RzIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGdhcDogdmFyKC0tc3BhY2UtMSk7XG59XG5cbi5sb2FkaW5nLWRvdCB7XG4gIHdpZHRoOiA2cHg7XG4gIGhlaWdodDogNnB4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJhY2tncm91bmQtY29sb3I6IGN1cnJlbnRDb2xvcjtcbiAgb3BhY2l0eTogMC4zO1xuICBhbmltYXRpb246IHB1bHNlIDEuNHMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG59XG5cbi5sb2FkaW5nLWRvdDpudGgtY2hpbGQoMikge1xuICBhbmltYXRpb24tZGVsYXk6IDAuMnM7XG59XG5cbi5sb2FkaW5nLWRvdDpudGgtY2hpbGQoMykge1xuICBhbmltYXRpb24tZGVsYXk6IDAuNHM7XG59XG5cbkBrZXlmcmFtZXMgcHVsc2Uge1xuICAwJSwgNjAlLCAxMDAlIHtcbiAgICBvcGFjaXR5OiAwLjM7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgfVxuICAzMCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjIpO1xuICB9XG59XG5cbi8qIERpc2FibGVkIHN0YXRlIGVuaGFuY2VtZW50cyAqL1xuLmJ0bi1kaXNhYmxlZCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmJ0bi1kaXNhYmxlZDo6YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbnNldDogMDtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLyogVG91Y2ggZmVlZGJhY2sgZm9yIG1vYmlsZSAtIGludGVncmF0ZXMgd2l0aCBhbmltYXRpb24gc3RhbmRhcmQgKi9cbi50b3VjaC1zY2FsZSB7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10aW1pbmctZmFzdCkgZWFzZS1vdXQ7XG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi50b3VjaC1zY2FsZTphY3RpdmUge1xuICB0cmFuc2Zvcm06IHNjYWxlKDAuOTYpO1xufVxuXG4vKiBFbmhhbmNlZCBob3ZlciBzdGF0ZXMgd2l0aCBQV0EgYW5pbWF0aW9ucyAqL1xuLmJ0biB7XG4gIC8qIEhhcmR3YXJlIGFjY2VsZXJhdGlvbiBmb3Igc21vb3RoIGFuaW1hdGlvbnMgKi9cbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybSwgYm94LXNoYWRvdztcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2Utc21vb3RoKTtcbn1cblxuLmJ0bjpob3Zlcjpub3QoOmRpc2FibGVkKTpub3QoLmJ0bi1kaXNhYmxlZCkge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG59XG5cbi5idG46YWN0aXZlOm5vdCg6ZGlzYWJsZWQpOm5vdCguYnRuLWRpc2FibGVkKSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbn1cblxuLyogUmVtb3ZlIHdpbGwtY2hhbmdlIGFmdGVyIGFuaW1hdGlvbiAqL1xuLmJ0bjpub3QoOmhvdmVyKTpub3QoOmZvY3VzKTpub3QoOmFjdGl2ZSkge1xuICB3aWxsLWNoYW5nZTogYXV0bztcbn1cblxuLyogRm9jdXMgc3RhdGVzIGZvciBhY2Nlc3NpYmlsaXR5ICovXG4uYnRuOmZvY3VzLXZpc2libGUge1xuICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG59XG5cbi8qIEljb24tb25seSBidXR0b24gYWRqdXN0bWVudHMgKi9cbi5idG46aGFzKC5pY29uLWNvbnRhaW5lci14cyk6bm90KDpoYXMoLmJ0bi10ZXh0KSksXG4uYnRuOmhhcyguaWNvbi1jb250YWluZXItc20pOm5vdCg6aGFzKC5idG4tdGV4dCkpIHtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMik7XG4gIG1pbi13aWR0aDogNDhweDsgLyogTWFpbnRhaW4gdG91Y2ggdGFyZ2V0ICovXG4gIG1pbi1oZWlnaHQ6IDQ4cHg7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuLyogTW9iaWxlLXNwZWNpZmljIGVuaGFuY2VtZW50cyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5idG4ge1xuICAgIC8qIEVuc3VyZSBtaW5pbXVtIHRvdWNoIHRhcmdldCAqL1xuICAgIG1pbi1oZWlnaHQ6IDQ4cHg7XG4gICAgXG4gICAgLyogUHJldmVudCBpT1Mgem9vbSBvbiB0YXAgKi9cbiAgICBmb250LXNpemU6IG1heCgxcmVtLCAxNnB4KTtcbiAgfVxuICBcbiAgLyogTGFyZ2VyIHRvdWNoIGFyZWEgZm9yIGljb24gYnV0dG9ucyAqL1xuICAuYnRuOmhhcyguaWNvbi1jb250YWluZXIteHMpOm5vdCg6aGFzKC5idG4tdGV4dCkpLFxuICAuYnRuOmhhcyguaWNvbi1jb250YWluZXItc20pOm5vdCg6aGFzKC5idG4tdGV4dCkpIHtcbiAgICBtaW4td2lkdGg6IDUycHg7XG4gICAgbWluLWhlaWdodDogNTJweDtcbiAgfVxuICBcbiAgLyogRW5oYW5jZWQgdG91Y2ggZmVlZGJhY2sgKi9cbiAgLnRvdWNoLXNjYWxlOmFjdGl2ZSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjk0KTtcbiAgfVxufVxuXG4vKiBUYWJsZXQgZW5oYW5jZW1lbnRzICovXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiAxMDIzcHgpIHtcbiAgLmJ0biB7XG4gICAgLyogU2xpZ2h0bHkgcmVkdWNlZCBtaW5pbXVtIGhlaWdodCAqL1xuICAgIG1pbi1oZWlnaHQ6IDQ0cHg7XG4gIH1cbn1cblxuLyogRGVza3RvcCByZWZpbmVtZW50cyAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAuYnRuIHtcbiAgICAvKiBTdGFuZGFyZCBkZXNrdG9wIG1pbmltdW0gKi9cbiAgICBtaW4taGVpZ2h0OiA0MHB4O1xuICB9XG4gIFxuICAvKiBFbmhhbmNlZCBob3ZlciBlZmZlY3RzICovXG4gIC5idG46aG92ZXI6bm90KDpkaXNhYmxlZCk6bm90KC5idG4tZGlzYWJsZWQpIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gIH1cbiAgXG4gIC8qIEljb24tb25seSBidXR0b25zIGNhbiBiZSBzbWFsbGVyIG9uIGRlc2t0b3AgKi9cbiAgLmJ0bjpoYXMoLmljb24tY29udGFpbmVyLXhzKTpub3QoOmhhcyguYnRuLXRleHQpKSxcbiAgLmJ0bjpoYXMoLmljb24tY29udGFpbmVyLXNtKTpub3QoOmhhcyguYnRuLXRleHQpKSB7XG4gICAgbWluLXdpZHRoOiA0MHB4O1xuICAgIG1pbi1oZWlnaHQ6IDQwcHg7XG4gIH1cbn1cblxuLyogSGlnaC1yZXNvbHV0aW9uIGRpc3BsYXkgZW5oYW5jZW1lbnRzICovXG5AbWVkaWEgKG1pbi13aWR0aDogMjU2MHB4KSB7XG4gIC5idG46aG92ZXI6bm90KDpkaXNhYmxlZCk6bm90KC5idG4tZGlzYWJsZWQpIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTNweCk7XG4gIH1cbn1cblxuLyogUmVkdWNlZCBtb3Rpb24gc3VwcG9ydCAqL1xuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLmJ0biB7XG4gICAgdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICB9XG4gIFxuICAubG9hZGluZy1kb3Qge1xuICAgIGFuaW1hdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICB9XG4gIFxuICAudG91Y2gtc2NhbGU6YWN0aXZlIHtcbiAgICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuXG4vKiBIaWdoIGNvbnRyYXN0IG1vZGUgc3VwcG9ydCAqL1xuQG1lZGlhIChwcmVmZXJzLWNvbnRyYXN0OiBoaWdoKSB7XG4gIC5idG4ge1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgfVxuICBcbiAgLmJ0bjpmb2N1cy12aXNpYmxlIHtcbiAgICBvdXRsaW5lOiAzcHggc29saWQgY3VycmVudENvbG9yO1xuICAgIG91dGxpbmUtb2Zmc2V0OiAzcHg7XG4gIH1cbn0iLCIvKiBCdXR0b24gQ29tcG9uZW50IEVuaGFuY2VtZW50cyAtIEZMQVQgREVTSUdOIDIwMjUgKi9cbi8qIENSSVRJQ0FMOiBDb21wb25lbnQtc3BlY2lmaWMgYnV0dG9uIGVuaGFuY2VtZW50cyBvbmx5IC0gYnJhbmQgZm91bmRhdGlvbiBpbiBpbmRleC5jc3MgKi9cbi8qIElNUE9SVEFOVDogVGhlc2UgY2xhc3NlcyB3b3JrIFdJVEggYnJhbmQgYnV0dG9uIGNsYXNzZXMgKC5idG4tcHJpbWFyeSwgLmJ0bi1zZWNvbmRhcnksIGV0Yy4pICovXG5cbi8qIEJ1dHRvbiBMb2FkaW5nIFN0YXRlIEVuaGFuY2VtZW50ICovXG4uYnRuLWxvYWRpbmcge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi5idG4tbG9hZGluZzo6YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwJTtcbiAgbGVmdDogNTAlO1xuICB3aWR0aDogMXJlbTtcbiAgaGVpZ2h0OiAxcmVtO1xuICBtYXJnaW4tdG9wOiAtMC41cmVtO1xuICBtYXJnaW4tbGVmdDogLTAuNXJlbTtcbiAgYm9yZGVyOiAycHggc29saWQgY3VycmVudENvbG9yO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJvcmRlci10b3AtY29sb3I6IHRyYW5zcGFyZW50O1xuICBhbmltYXRpb246IGJ0bi1zcGluIDFzIGxpbmVhciBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBidG4tc3BpbiB7XG4gIDAlIHsgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH1cbiAgMTAwJSB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH1cbn1cblxuLyogQnV0dG9uIEljb24gU3BhY2luZyAqL1xuLmJ0bi1pY29uLWxlZnQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDAuNXJlbTtcbn1cblxuLmJ0bi1pY29uLXJpZ2h0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xuICBnYXA6IDAuNXJlbTtcbn1cblxuLyogQnV0dG9uIFNpemUgRW5oYW5jZW1lbnRzICovXG4uYnRuLXhzIHtcbiAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbn1cblxuLmJ0bi1zbSB7XG4gIHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xufVxuXG4uYnRuLW1kIHtcbiAgcGFkZGluZzogMC43NXJlbSAxcmVtO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xufVxuXG4uYnRuLWxnIHtcbiAgcGFkZGluZzogMXJlbSAxLjVyZW07XG4gIGZvbnQtc2l6ZTogMXJlbTtcbn1cblxuLmJ0bi14bCB7XG4gIHBhZGRpbmc6IDEuMjVyZW0gMnJlbTtcbiAgZm9udC1zaXplOiAxLjEyNXJlbTtcbn1cblxuLyogQnV0dG9uIFdpZHRoIFV0aWxpdGllcyAqL1xuLmJ0bi1mdWxsIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4uYnRuLWF1dG8ge1xuICB3aWR0aDogYXV0bztcbn1cblxuLyogUmVzcG9uc2l2ZSBCdXR0b24gVXRpbGl0aWVzICovXG5AbWVkaWEgKG1heC13aWR0aDogNjQwcHgpIHtcbiAgLmJ0bi1yZXNwb25zaXZlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxufVxuIiwiLyoqXG4gKiBETyBOT1QgUkVNT1ZFIC0gTExNIEFyY2hpdGVjdHVyZSBEb2N1bWVudGF0aW9uXG4gKiBcbiAqIElNUE9SVEFOVDogVGhpcyBDU1MgZmlsZSBjb250YWlucyBBTEwgZGVmYXVsdCBzdHlsZXMgZm9yIHRoZSBDYXBhYmlsaXRpZXMgY29tcG9uZW50LlxuICogXG4gKiAtIFRoaXMgZmlsZSBzaG91bGQgTk9UIGJlIG1vZGlmaWVkIGZyb20gY29tcG9uZW50IGZpbGVzIC0gdGhleSByZWZlcmVuY2UgdGhlc2UgY2xhc3Nlc1xuICogLSBBbGwgY29tcG9uZW50IHN0eWxpbmcgc2hvdWxkIGJlIGhhbmRsZWQgaGVyZSB0aHJvdWdoIENTUyBjbGFzc2VzXG4gKiAtIGNvbXBvbmVudFN0eWxlcy50cyBpcyBvbmx5IGZvciBwYWdlLWxldmVsIG92ZXJyaWRlcywgbm90IGRlZmF1bHRzXG4gKiAtIFRoaXMgZW5zdXJlcyBjb25zaXN0ZW50IHN0eWxpbmcgYW5kIGJldHRlciBwZXJmb3JtYW5jZVxuICogXG4gKiBDU1MgVmFyaWFibGVzIChDdXN0b20gUHJvcGVydGllcyk6XG4gKiAtIFVzZSBDU1MgdmFyaWFibGVzIGZvciB2YWx1ZXMgdGhhdCBtaWdodCBjaGFuZ2UgYmFzZWQgb24gdGhlbWUgb3IgY29udGV4dFxuICogLSBWYXJpYWJsZXMgc2hvdWxkIGhhdmUgc2Vuc2libGUgZGVmYXVsdHMgdGhhdCB3b3JrIGluIGJvdGggbGlnaHQgYW5kIGRhcmsgdGhlbWVzXG4gKiAtIFRoaXMgcHJvdmlkZXMgYmV0dGVyIG1haW50YWluYWJpbGl0eSBhbmQgdGhlbWUgY29uc2lzdGVuY3lcbiAqL1xuXG4vKiBDb21wb25lbnQgVmFyaWFibGVzICovXG46cm9vdCB7XG4gIC8qIExheW91dCB2YXJpYWJsZXMgKi9cbiAgLS1jYXBhYmlsaXRpZXMtcGFkZGluZzogNXJlbSAwO1xuICAtLWNhcGFiaWxpdGllcy1ncmlkLWNvbHM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDMwMHB4LCAxZnIpKTtcbiAgLS1jYXBhYmlsaXRpZXMtZ3JpZC1nYXA6IDJyZW07XG5cbiAgLyogVHlwb2dyYXBoeSB2YXJpYWJsZXMgKi9cbiAgLS1jYXBhYmlsaXRpZXMtdGl0bGUtc2l6ZTogMi4yNXJlbTtcbiAgLS1jYXBhYmlsaXRpZXMtdGl0bGUtd2VpZ2h0OiA3MDA7XG4gIC0tY2FwYWJpbGl0aWVzLXRpdGxlLWNvbG9yOiAjMGYxNzJhO1xuICAtLWNhcGFiaWxpdGllcy10aXRsZS1jb2xvci1kYXJrOiAjZmZmZmZmO1xuICAtLWNhcGFiaWxpdGllcy10aXRsZS1tYXJnaW46IDAgMCAxcmVtIDA7XG5cbiAgLS1jYXBhYmlsaXRpZXMtZGVzYy1zaXplOiAxLjI1cmVtO1xuICAtLWNhcGFiaWxpdGllcy1kZXNjLWNvbG9yOiAjNDc1NTY5O1xuICAtLWNhcGFiaWxpdGllcy1kZXNjLWNvbG9yLWRhcms6ICNjYmQ1ZTE7XG4gIC0tY2FwYWJpbGl0aWVzLWRlc2MtbWFyZ2luOiAwIDAgNHJlbSAwO1xufVxuXG4vKiBNYWluIGNvbXBvbmVudCBjb250YWluZXIgKi9cbi5jYXBhYmlsaXRpZXMge1xuICBwYWRkaW5nOiB2YXIoLS1jYXBhYmlsaXRpZXMtcGFkZGluZyk7XG4gIC8qIFJlbW92ZSBiYWNrZ3JvdW5kIG92ZXJyaWRlcyAtIHVzZSBnbG9iYWwgc2VjdGlvbiBiYWNrZ3JvdW5kICovXG4gIHRyYW5zaXRpb246IGNvbG9yIDAuM3MgZWFzZTtcbn1cblxuLyogUmVtb3ZlIGRhcmsgdGhlbWUgYmFja2dyb3VuZCBvdmVycmlkZSAtIHVzZSBnbG9iYWwgc2VjdGlvbiBzdHlsaW5nICovXG5cbi8qIENvbnRhaW5lciBmb3IgYWxsIGNvbnRlbnQgKi9cbi5jYXBhYmlsaXRpZXNfX2NvbnRhaW5lciB7XG4gIG1heC13aWR0aDogODByZW07XG4gIG1hcmdpbjogMCBhdXRvO1xuICBwYWRkaW5nOiAwIDEuNXJlbTtcbn1cblxuLyogSGVhZGVyIHNlY3Rpb24gd2l0aCB0aXRsZSBhbmQgZGVzY3JpcHRpb24gKi9cbi5jYXBhYmlsaXRpZXNfX2hlYWRlciB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWFyZ2luLWJvdHRvbTogNHJlbTtcbn1cblxuLyogVGl0bGUgc3R5bGluZyAqL1xuLmNhcGFiaWxpdGllc19fdGl0bGUge1xuICBmb250LXNpemU6IHZhcigtLWNhcGFiaWxpdGllcy10aXRsZS1zaXplKTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWNhcGFiaWxpdGllcy10aXRsZS13ZWlnaHQpO1xuICBjb2xvcjogdmFyKC0tY2FwYWJpbGl0aWVzLXRpdGxlLWNvbG9yKTtcbiAgbWFyZ2luOiB2YXIoLS1jYXBhYmlsaXRpZXMtdGl0bGUtbWFyZ2luKTtcbiAgbGluZS1oZWlnaHQ6IDEuMTtcbn1cblxuLmRhcmsgLmNhcGFiaWxpdGllc19fdGl0bGUge1xuICBjb2xvcjogdmFyKC0tY2FwYWJpbGl0aWVzLXRpdGxlLWNvbG9yLWRhcmspO1xufVxuXG4vKiBEZXNjcmlwdGlvbiBzdHlsaW5nICovXG4uY2FwYWJpbGl0aWVzX19kZXNjcmlwdGlvbiB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tY2FwYWJpbGl0aWVzLWRlc2Mtc2l6ZSk7XG4gIGNvbG9yOiB2YXIoLS1jYXBhYmlsaXRpZXMtZGVzYy1jb2xvcik7XG4gIG1hcmdpbjogdmFyKC0tY2FwYWJpbGl0aWVzLWRlc2MtbWFyZ2luKTtcbiAgbWF4LXdpZHRoOiA0OHJlbTtcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbiAgbGluZS1oZWlnaHQ6IDEuNjI1O1xufVxuXG4uZGFyayAuY2FwYWJpbGl0aWVzX19kZXNjcmlwdGlvbiB7XG4gIGNvbG9yOiB2YXIoLS1jYXBhYmlsaXRpZXMtZGVzYy1jb2xvci1kYXJrKTtcbn1cblxuLyogR3JpZCBsYXlvdXQgZm9yIGNhcGFiaWxpdHkgY2FyZHMgKi9cbi5jYXBhYmlsaXRpZXNfX2dyaWQge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHZhcigtLWNhcGFiaWxpdGllcy1ncmlkLWNvbHMpO1xuICBnYXA6IHZhcigtLWNhcGFiaWxpdGllcy1ncmlkLWdhcCk7XG59XG5cbi8qIFJlc3BvbnNpdmUgZGVzaWduICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgOnJvb3Qge1xuICAgIC0tY2FwYWJpbGl0aWVzLXBhZGRpbmc6IDRyZW0gMDtcbiAgICAtLWNhcGFiaWxpdGllcy10aXRsZS1zaXplOiAxLjg3NXJlbTtcbiAgICAtLWNhcGFiaWxpdGllcy1kZXNjLXNpemU6IDEuMTI1cmVtO1xuICAgIC0tY2FwYWJpbGl0aWVzLWdyaWQtY29sczogMWZyO1xuICAgIC0tY2FwYWJpbGl0aWVzLWdyaWQtZ2FwOiAxLjVyZW07XG4gIH1cblxuICAuY2FwYWJpbGl0aWVzX19jb250YWluZXIge1xuICAgIHBhZGRpbmc6IDAgMXJlbTtcbiAgfVxuXG4gIC5jYXBhYmlsaXRpZXNfX2hlYWRlciB7XG4gICAgbWFyZ2luLWJvdHRvbTogM3JlbTtcbiAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcbiAgOnJvb3Qge1xuICAgIC0tY2FwYWJpbGl0aWVzLXBhZGRpbmc6IDNyZW0gMDtcbiAgICAtLWNhcGFiaWxpdGllcy10aXRsZS1zaXplOiAxLjVyZW07XG4gICAgLS1jYXBhYmlsaXRpZXMtZGVzYy1zaXplOiAxcmVtO1xuICB9XG59XG4iLCIvKiBDYXBhYmlsaXR5IENhcmQgQ29tcG9uZW50IFN0eWxlcyAtIE1vZGVybiBCb3JkZXJsZXNzIERlc2lnbiAyMDI1ICovXG4vKiBGb2xsb3dpbmcgYnJhbmQvY29tcG9uZW50L3N0eWxpbmctc3RhbmRhcmQubWQgLSBUaHJlZS1MYXllciBDU1MgQXJjaGl0ZWN0dXJlICovXG5cbi8qIENhcGFiaWxpdHkgQ2FyZCBDb250YWluZXIgLSBCT1JERVJMRVNTIHdpdGggZWxldmF0aW9uICovXG4uY2FwYWJpbGl0eS1jYXJkIHtcbiAgLyogRXh0cmVtZSB3aGl0ZXNwYWNlIC0gMzAlIG1vcmUgc3BhY2luZyBwZXIgYnJhbmQgZ3VpZGVsaW5lcyAqL1xuICBwYWRkaW5nOiBjYWxjKHZhcigtLXNwYWNlLTgpICogMS4zKTsgLyogMzJweCAqIDEuMyA9IH40MnB4ICovXG4gIGJvcmRlcjogMDsgLyogQ1JJVElDQUw6IEJvcmRlcmxlc3MgZGVzaWduIHBlciBzdHlsaW5nIHN0YW5kYXJkICovXG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1jYXJkKSk7XG4gIFxuICAvKiBFbGV2YXRpb24gaW5zdGVhZCBvZiBib3JkZXJzICovXG4gIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMDUpOyAvKiBTdWJ0bGUgYmFzZSBlbGV2YXRpb24gKi9cbiAgXG4gIC8qIFBlcmZvcm1hbmNlIG9wdGltaXphdGlvbnMgKi9cbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNlLXNtb290aCk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTtcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybSwgYm94LXNoYWRvdztcbiAgXG4gIC8qIEVuc3VyZSBmdWxsIGhlaWdodCBpbiBncmlkICovXG4gIGhlaWdodDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLmNhcGFiaWxpdHktY2FyZDpob3ZlciB7XG4gIC8qIEVsZXZhdGlvbiBjaGFuZ2Ugb24gaG92ZXIgLSBOTyBib3JkZXIgY2hhbmdlcyAqL1xuICBib3JkZXI6IDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNHB4KTtcbiAgYm94LXNoYWRvdzogMCA4cHggMjVweCByZ2JhKDAsIDAsIDAsIDAuMTIpOyAvKiBJbmNyZWFzZWQgZWxldmF0aW9uICovXG59XG5cbi5jYXBhYmlsaXR5LWNhcmQ6YWN0aXZlIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjk4KSB0cmFuc2xhdGVZKC0ycHgpO1xuICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjA4KTsgLyogUHJlc3NlZCBzdGF0ZSAqL1xufVxuXG4vKiBDbGVhbiB1cCB3aWxsLWNoYW5nZSBhZnRlciBpbnRlcmFjdGlvbiAqL1xuLmNhcGFiaWxpdHktY2FyZDpub3QoOmhvdmVyKTpub3QoOmZvY3VzKSB7XG4gIHdpbGwtY2hhbmdlOiBhdXRvO1xufVxuXG4vKiBDYXBhYmlsaXR5IENhcmQgQ29udGVudCB3cmFwcGVyICovXG4uY2FwYWJpbGl0eS1jYXJkLWNvbnRlbnQge1xuICBmbGV4OiAxO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IGNhbGModmFyKC0tc3BhY2UtNCkgKiAxLjMpOyAvKiBJbmNyZWFzZWQgc3BhY2luZyAqL1xufVxuXG4vKiBDYXBhYmlsaXR5IENhcmQgSWNvbiBDb250YWluZXIgLSBGb2xsb3dpbmcgaWNvbiBzeXN0ZW0gc3RhbmRhcmQgKi9cbi5jYXBhYmlsaXR5LWNhcmQtaWNvbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAvKiBJY29uIGNvbnRhaW5lciBzaXppbmcgKi9cbiAgd2lkdGg6IGNhbGModmFyKC0tc3BhY2UtMTYpICogMS4zKTsgLyogfjgzcHggd2l0aCBleHRyZW1lIHNwYWNpbmcgKi9cbiAgaGVpZ2h0OiBjYWxjKHZhcigtLXNwYWNlLTE2KSAqIDEuMyk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gIG1hcmdpbi1ib3R0b206IGNhbGModmFyKC0tc3BhY2UtNikgKiAxLjMpOyAvKiBFeHRyYSBzcGFjaW5nIGJlbG93IGljb24gKi9cbiAgXG4gIC8qIE5vIGJhY2tncm91bmQgcGVyIGJyYW5kIGd1aWRlbGluZXMgLSBjb250YWluZXJzIGFyZSBsYXlvdXQtb25seSAqL1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2Utc21vb3RoKTtcbn1cblxuLmNhcGFiaWxpdHktY2FyZDpob3ZlciAuY2FwYWJpbGl0eS1jYXJkLWljb24ge1xuICAvKiBObyBiYWNrZ3JvdW5kIG9uIGhvdmVyIHBlciBicmFuZCBndWlkZWxpbmVzICovXG4gIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7XG59XG5cbi8qIENhcGFiaWxpdHkgSWNvbiB3aXRoaW4gY29udGFpbmVyICovXG4uY2FwYWJpbGl0eS1pY29uIHtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG4gIHdpZHRoOiB2YXIoLS1zcGFjZS0xMik7IC8qIDQ4cHggKi9cbiAgaGVpZ2h0OiB2YXIoLS1zcGFjZS0xMik7XG59XG5cbi8qIENhcGFiaWxpdHkgQ29udGVudCBBcmVhICovXG4uY2FwYWJpbGl0eS1jb250ZW50IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiBjYWxjKHZhcigtLXNwYWNlLTQpICogMS4zKTsgLyogSW5jcmVhc2VkIHNwYWNpbmcgYmV0d2VlbiBlbGVtZW50cyAqL1xufVxuXG4vKiBUaXRsZSAtIE1VU1QgdXNlIGdsb2JhbCB0eXBvZ3JhcGh5IGNsYXNzICovXG4uY2FwYWJpbGl0eS1jYXJkLXRpdGxlIHtcbiAgLyogdGl0bGUtY2FyZCBjbGFzcyB3aWxsIGJlIGFkZGVkIGluIGNvbXBvbmVudCAqL1xuICBtYXJnaW4tYm90dG9tOiBjYWxjKHZhcigtLXNwYWNlLTMpICogMS4zKTtcbn1cblxuLyogRGVzY3JpcHRpb24gLSBNVVNUIHVzZSBnbG9iYWwgdHlwb2dyYXBoeSBjbGFzcyAqL1xuLmNhcGFiaWxpdHktY2FyZC1kZXNjcmlwdGlvbiB7XG4gIC8qIGRlc2NyaXB0aW9uIGNsYXNzIHdpbGwgYmUgYWRkZWQgaW4gY29tcG9uZW50ICovXG4gIGxpbmUtaGVpZ2h0OiAxLjY7XG4gIG1hcmdpbi1ib3R0b206IGNhbGModmFyKC0tc3BhY2UtNCkgKiAxLjMpO1xufVxuXG4vKiBGZWF0dXJlcyBMaXN0ICovXG4uY2FwYWJpbGl0eS1jYXJkLWZlYXR1cmVzIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAwO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IGNhbGModmFyKC0tc3BhY2UtMykgKiAxLjMpOyAvKiBJbmNyZWFzZWQgc3BhY2luZyBiZXR3ZWVuIGl0ZW1zICovXG59XG5cbi5jYXBhYmlsaXR5LWZlYXR1cmUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgZ2FwOiBjYWxjKHZhcigtLXNwYWNlLTMpICogMS4zKTtcbiAgLyogZGVzY3JpcHRpb24gY2xhc3Mgd2lsbCBiZSBhZGRlZCBpbiBjb21wb25lbnQgKi9cbn1cblxuLmNhcGFiaWxpdHktZmVhdHVyZS1pY29uIHtcbiAgZmxleC1zaHJpbms6IDA7XG4gIHdpZHRoOiB2YXIoLS1zcGFjZS01KTsgLyogMjBweCAqL1xuICBoZWlnaHQ6IHZhcigtLXNwYWNlLTUpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXN1Y2Nlc3MpKTtcbiAgbWFyZ2luLXRvcDogMnB4OyAvKiBBbGlnbiB3aXRoIHRleHQgYmFzZWxpbmUgKi9cbn1cblxuLmNhcGFiaWxpdHktZmVhdHVyZS10ZXh0IHtcbiAgZmxleDogMTtcbiAgbGluZS1oZWlnaHQ6IDEuNjtcbn1cblxuLyogQ2FwYWJpbGl0eSBDYXJkIFZhcmlhbnRzICovXG4uY2FwYWJpbGl0eS1jYXJkLXByaW1hcnkge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItY2FyZCkpO1xufVxuXG4uY2FwYWJpbGl0eS1jYXJkLXNlY29uZGFyeSB7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1zZWNvbmRhcnkpIC8gMC4wNSk7XG59XG5cbi8qIEhlcml0YWdlIHZhcmlhbnQgLSBNYXhpbXVtIDEgcGVyIGNvbXBvbmVudCBncm91cCAqL1xuLmNhcGFiaWxpdHktY2FyZC1oZXJpdGFnZSB7XG4gIC8qIFN1YnRsZSBoZXJpdGFnZSBhY2NlbnQgdXNpbmcgc2hhZG93IGluc3RlYWQgb2YgYm9yZGVyICovXG4gIGJveC1zaGFkb3c6IFxuICAgIGluc2V0IDRweCAwIDAgcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpLCAvKiBMZWZ0IGFjY2VudCAqL1xuICAgIDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMDUpOyAvKiBCYXNlIGVsZXZhdGlvbiAqL1xuICBwYWRkaW5nLWxlZnQ6IGNhbGModmFyKC0tc3BhY2UtOCkgKiAxLjMgKyB2YXIoLS1zcGFjZS0yKSk7IC8qIEV4dHJhIHBhZGRpbmcgZm9yIGFjY2VudCAqL1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkgLyAwLjAyKTsgLyogVmVyeSBzdWJ0bGUgdGludCAqL1xuICBtYXJnaW46IGNhbGModmFyKC0tc3BhY2UtOCkgKiAxLjMpIDA7IC8qIEV4dHJhIHZlcnRpY2FsIHNwYWNlIGZvciBoZXJpdGFnZSAqL1xufVxuXG4uY2FwYWJpbGl0eS1jYXJkLWhlcml0YWdlOmhvdmVyIHtcbiAgYm94LXNoYWRvdzogXG4gICAgaW5zZXQgNHB4IDAgMCByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSksXG4gICAgMCA4cHggMjVweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkgLyAwLjA0KTtcbn1cblxuLyogUmVzcG9uc2l2ZSBEZXNpZ24gLSBNb2JpbGUgRmlyc3QgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAuY2FwYWJpbGl0eS1jYXJkIHtcbiAgICAvKiBTdGlsbCBnZW5lcm91cyBidXQgYWRqdXN0ZWQgZm9yIG1vYmlsZSAqL1xuICAgIHBhZGRpbmc6IGNhbGModmFyKC0tc3BhY2UtNikgKiAxLjMpOyAvKiB+MzFweCAqL1xuICB9XG4gIFxuICAuY2FwYWJpbGl0eS1jYXJkLWljb24ge1xuICAgIHdpZHRoOiBjYWxjKHZhcigtLXNwYWNlLTEyKSAqIDEuMyk7IC8qIH42MnB4ICovXG4gICAgaGVpZ2h0OiBjYWxjKHZhcigtLXNwYWNlLTEyKSAqIDEuMyk7XG4gICAgbWFyZ2luLWJvdHRvbTogY2FsYyh2YXIoLS1zcGFjZS00KSAqIDEuMyk7XG4gIH1cbiAgXG4gIC5jYXBhYmlsaXR5LWljb24ge1xuICAgIHdpZHRoOiB2YXIoLS1zcGFjZS04KTsgLyogMzJweCBvbiBtb2JpbGUgKi9cbiAgICBoZWlnaHQ6IHZhcigtLXNwYWNlLTgpO1xuICB9XG4gIFxuICAvKiBSZWR1Y2UgaG92ZXIgbGlmdCBvbiBtb2JpbGUgKi9cbiAgLmNhcGFiaWxpdHktY2FyZDpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICB9XG59XG5cbi8qIFRhYmxldCBlbmhhbmNlbWVudHMgKi9cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDEwMjNweCkge1xuICAuY2FwYWJpbGl0eS1jYXJkIHtcbiAgICBwYWRkaW5nOiBjYWxjKHZhcigtLXNwYWNlLTgpICogMS4yKTsgLyogU2xpZ2h0bHkgbGVzcyB0aGFuIGRlc2t0b3AgKi9cbiAgfVxufVxuXG4vKiBIaWdoLXJlc29sdXRpb24gZGlzcGxheXMgKi9cbkBtZWRpYSAobWluLXdpZHRoOiAyNTYwcHgpIHtcbiAgLmNhcGFiaWxpdHktY2FyZCB7XG4gICAgcGFkZGluZzogY2FsYyh2YXIoLS1zcGFjZS0xMikgKiAxLjMpOyAvKiBFdmVuIG1vcmUgZ2VuZXJvdXMgKi9cbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMteGwpO1xuICB9XG4gIFxuICAuY2FwYWJpbGl0eS1jYXJkOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTZweCk7XG4gICAgYm94LXNoYWRvdzogMCAxMnB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgfVxufVxuXG4vKiBBY2Nlc3NpYmlsaXR5IC0gRm9jdXMgU3RhdGVzICovXG4uY2FwYWJpbGl0eS1jYXJkOmZvY3VzLXZpc2libGUge1xuICBvdXRsaW5lOiBub25lO1xuICBib3gtc2hhZG93OiBcbiAgICAwIDAgMCAzcHggcmdiYSh2YXIoLS1jb2xvci1mb2N1cykgLyAwLjUpLCAvKiBGb2N1cyByaW5nICovXG4gICAgMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4wNSk7IC8qIE1haW50YWluIGJhc2UgZWxldmF0aW9uICovXG59XG5cbi8qIEhpZ2ggQ29udHJhc3QgTW9kZSBTdXBwb3J0ICovXG5AbWVkaWEgKHByZWZlcnMtY29udHJhc3Q6IGhpZ2gpIHtcbiAgLmNhcGFiaWxpdHktY2FyZCB7XG4gICAgLyogVXNlIG91dGxpbmUgaW5zdGVhZCBvZiBib3JkZXIgZm9yIGhpZ2ggY29udHJhc3QgKi9cbiAgICBvdXRsaW5lOiAycHggc29saWQgY3VycmVudENvbG9yO1xuICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICB9XG4gIFxuICAuY2FwYWJpbGl0eS1jYXJkLWhlcml0YWdlIHtcbiAgICBvdXRsaW5lOiAycHggc29saWQgcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICB9XG59XG5cbi8qIFJlZHVjZWQgTW90aW9uIFN1cHBvcnQgKi9cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gIC5jYXBhYmlsaXR5LWNhcmQsXG4gIC5jYXBhYmlsaXR5LWNhcmQtaWNvbixcbiAgLmNhcGFiaWxpdHktZmVhdHVyZS1pY29uIHtcbiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjAxbXMgIWltcG9ydGFudDtcbiAgICBhbmltYXRpb246IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuICBcbiAgLmNhcGFiaWxpdHktY2FyZDpob3ZlcixcbiAgLmNhcGFiaWxpdHktY2FyZDphY3RpdmUge1xuICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59IiwiLyoqXG4gKiBDaGFsbGVuZ2VzIENvbXBvbmVudCBDU1MgLSBUaHJlZS1MYXllciBBcmNoaXRlY3R1cmVcbiAqIFxuICogTGF5ZXIgMjogQ29tcG9uZW50IEVuaGFuY2VtZW50XG4gKiBCdWlsZHMgb24gYnJhbmQgZm91bmRhdGlvbiB3aXRoIGNvbXBvbmVudC1zcGVjaWZpYyBzdHlsZXMuXG4gKiBVc2VzIENTUyB2YXJpYWJsZXMgZnJvbSBMYXllciAxIChzcmMvaW5kZXguY3NzKSBleGNsdXNpdmVseS5cbiAqIFxuICogTUFOREFUT1JZOiBBbGwgY2xhc3NlcyBkZWZpbmVkIGhlcmUgTVVTVCBiZSB1c2VkIGluIHRoZSBjb21wb25lbnQuXG4gKiBObyB1bnVzZWQgc3R5bGVzIGFsbG93ZWQgcGVyIGFyY2hpdGVjdHVyZSBzdGFuZGFyZC5cbiAqL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBDb250YWluZXIgJiBMYXlvdXRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmNoYWxsZW5nZXMtY29udGFpbmVyIHtcbiAgLyogQnVpbGQgb24gYnJhbmQgZm91bmRhdGlvbiAqL1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS04KSAwO1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItYmFja2dyb3VuZCkpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWZvcmVncm91bmQpKTtcbiAgbWluLWhlaWdodDogNTAwcHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLyogRGFyayBtb2RlIHN1cHBvcnQgLSBhdXRvbWF0aWMgd2l0aCBDU1MgdmFyaWFibGVzICovXG5AbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XG4gIC5jaGFsbGVuZ2VzLWNvbnRhaW5lciB7XG4gICAgLyogQ1NTIHZhcmlhYmxlcyBhdXRvbWF0aWNhbGx5IGFkYXB0IHRvIGRhcmsgbW9kZSAqL1xuICAgIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSk7XG4gIH1cbn1cblxuLmNoYWxsZW5nZXMtaGVhZGVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0xMik7XG4gIHBhZGRpbmc6IDAgdmFyKC0tc3BhY2UtNCk7XG59XG5cbi8qIE1haW4gbGF5b3V0IGdyaWQgLSBzaWRlYmFyICsgY29udGVudCAqL1xuLmNoYWxsZW5nZXMtbGF5b3V0IHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAzMjBweCAxZnI7XG4gIGdhcDogdmFyKC0tc3BhY2UtOCk7XG4gIGFsaWduLWl0ZW1zOiBzdGFydDtcbiAgbWF4LXdpZHRoOiAxNDQwcHg7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBwYWRkaW5nOiAwIHZhcigtLXNwYWNlLTYpO1xufVxuXG4vKiBNb2JpbGU6IFN0YWNrIGxheW91dCAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5jaGFsbGVuZ2VzLWxheW91dCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS02KTtcbiAgICBwYWRkaW5nOiAwIHZhcigtLXNwYWNlLTQpO1xuICB9XG59XG5cbi8qIFRhYmxldDogQWRqdXN0IHNpZGViYXIgd2lkdGggKi9cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDEwMjNweCkge1xuICAuY2hhbGxlbmdlcy1sYXlvdXQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMjgwcHggMWZyO1xuICAgIGdhcDogdmFyKC0tc3BhY2UtNik7XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgU2lkZWJhciBOYXZpZ2F0aW9uXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5jaGFsbGVuZ2VzLXNpZGViYXIge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQpIC8gMC4wMyk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTQpO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2Utc21vb3RoKTtcbn1cblxuLyogRGFyayBtb2RlIHNpZGViYXIgLSBhdXRvbWF0aWMgd2l0aCBDU1MgdmFyaWFibGVzICovXG5AbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XG4gIC5jaGFsbGVuZ2VzLXNpZGViYXIge1xuICAgIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1tdXRlZCkgLyAwLjA1KTtcbiAgfVxufVxuXG4vKiBEZXNrdG9wOiBTdGlja3kgcG9zaXRpb25pbmcgKi9cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuY2hhbGxlbmdlcy1zaWRlYmFyIHtcbiAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgIHRvcDogY2FsYyg4MHB4ICsgdmFyKC0tc3BhY2UtNCkpOyAvKiBIZWFkZXIgaGVpZ2h0ICsgc3BhY2luZyAqL1xuICB9XG59XG5cbi8qIE1vYmlsZTogSG9yaXpvbnRhbCBzY3JvbGwgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAuY2hhbGxlbmdlcy1zaWRlYmFyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogdmFyKC0tc3BhY2UtMyk7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0zKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICAgIC8qIEhpZGUgc2Nyb2xsYmFyIGJ1dCBrZWVwIGZ1bmN0aW9uYWxpdHkgKi9cbiAgICBzY3JvbGxiYXItd2lkdGg6IG5vbmU7XG4gICAgLW1zLW92ZXJmbG93LXN0eWxlOiBub25lO1xuICB9XG4gIFxuICAuY2hhbGxlbmdlcy1zaWRlYmFyOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4vKiBOYXZpZ2F0aW9uIGl0ZW1zICovXG4uY2hhbGxlbmdlLW5hdi1pdGVtIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIGdhcDogdmFyKC0tc3BhY2UtMyk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTQpO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0zKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNlLXNtb290aCk7XG4gIG1pbi1oZWlnaHQ6IDcycHg7IC8qIEFjY29tbW9kYXRlIHRpdGxlICsgZGVzY3JpcHRpb24gKi9cbiAgd2lkdGg6IDEwMCU7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICBmb250LXNpemU6IGluaGVyaXQ7XG4gIGNvbG9yOiBpbmhlcml0O1xufVxuXG4uY2hhbGxlbmdlLW5hdi1pdGVtOmxhc3QtY2hpbGQge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4vKiBNb2JpbGUgbmF2IGl0ZW1zICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLmNoYWxsZW5nZS1uYXYtaXRlbSB7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgd2lkdGg6IDI4MHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgbWFyZ2luLXJpZ2h0OiB2YXIoLS1zcGFjZS0zKTtcbiAgICBtaW4taGVpZ2h0OiA2NHB4OyAvKiBTbGlnaHRseSBzbWFsbGVyIG9uIG1vYmlsZSBidXQgc3RpbGwgdG91Y2gtZnJpZW5kbHkgKi9cbiAgfVxuICBcbiAgLmNoYWxsZW5nZS1uYXYtaXRlbTpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbn1cblxuLyogSG92ZXIgc3RhdGUgKi9cbi5jaGFsbGVuZ2UtbmF2LWl0ZW06aG92ZXI6bm90KC5hY3RpdmUpIHtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLW11dGVkKSAvIDAuMDgpO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMnB4KTtcbn1cblxuLyogQWN0aXZlIHN0YXRlIHdpdGggaGVyaXRhZ2UgcmVkIGFjY2VudCAqL1xuLmNoYWxsZW5nZS1uYXYtaXRlbS5hY3RpdmUge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQpIC8gMC4xKTtcbiAgYm94LXNoYWRvdzogaW5zZXQgNHB4IDAgMCByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSk7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIC8qIEV4dHJhIHNwYWNpbmcgZm9yIGhlcml0YWdlIGVsZW1lbnRzICgzMCUgbW9yZSkgKi9cbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtMik7XG4gIG1hcmdpbi1ib3R0b206IGNhbGModmFyKC0tc3BhY2UtMykgKyB2YXIoLS1zcGFjZS0yKSk7XG59XG5cbi8qIERhcmsgbW9kZSBhY3RpdmUgc3RhdGUgKi9cbkBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHtcbiAgLmNoYWxsZW5nZS1uYXYtaXRlbTpob3Zlcjpub3QoLmFjdGl2ZSkge1xuICAgIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1tdXRlZCkgLyAwLjE1KTtcbiAgfVxuICBcbiAgLmNoYWxsZW5nZS1uYXYtaXRlbS5hY3RpdmUge1xuICAgIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1tdXRlZCkgLyAwLjIpO1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDRweCAwIDAgcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpO1xuICB9XG59XG5cbi8qIE5hdiBpdGVtIGNvbnRlbnQgKi9cbi5jaGFsbGVuZ2UtbmF2LWNvbnRlbnQge1xuICBmbGV4OiAxO1xuICBtaW4td2lkdGg6IDA7IC8qIEFsbG93IHRleHQgdHJ1bmNhdGlvbiAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IHZhcigtLXNwYWNlLTEpO1xufVxuXG4uY2hhbGxlbmdlLW5hdi10aXRsZSB7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1mb3JlZ3JvdW5kKSk7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uY2hhbGxlbmdlLW5hdi1kZXNjcmlwdGlvbiB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQtZm9yZWdyb3VuZCkpO1xuICBvcGFjaXR5OiAwLjg7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIC13ZWJraXQtbGluZS1jbGFtcDogMjtcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQ29udGVudCBBcmVhXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5jaGFsbGVuZ2VzLWNvbnRlbnQge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItY2FyZCkpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4vKiBEYXJrIG1vZGUgY29udGVudCAqL1xuQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xuICAuY2hhbGxlbmdlcy1jb250ZW50IHtcbiAgICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItY2FyZCkpO1xuICB9XG59XG5cbi8qIENoYWxsZW5nZSBkZXRhaWwgcGFuZWxzICovXG4uY2hhbGxlbmdlLWRldGFpbCB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTYpO1xuICBhbmltYXRpb246IGZhZGVJbiB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpO1xufVxuXG4uY2hhbGxlbmdlLWRldGFpbC5hY3RpdmUge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuQGtleWZyYW1lcyBmYWRlSW4ge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMHB4KTtcbiAgfVxuICB0byB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gIH1cbn1cblxuLmNoYWxsZW5nZS1kZXRhaWwtaGVhZGVyIHtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtOCk7XG4gIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjZS02KTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgUHJvYmxlbXMgJiBTb2x1dGlvbnMgQ29tcGFyaXNvblxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uY2hhbGxlbmdlLWNvbXBhcmlzb24ge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7XG4gIGdhcDogdmFyKC0tc3BhY2UtOCk7XG4gIG1hcmdpbjogdmFyKC0tc3BhY2UtNikgMDtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtNikgMDtcbn1cblxuLyogRGFyayBtb2RlIGNvbXBhcmlzb24gKi9cbkBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHtcbiAgLmNoYWxsZW5nZS1jb21wYXJpc29uIHtcbiAgICAvKiBDbGVhbiBzZXBhcmF0aW9uIHRocm91Z2ggc3BhY2luZyBvbmx5ICovXG4gIH1cbn1cblxuLyogTW9iaWxlOiBTdGFjayBjb2x1bW5zICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLmNoYWxsZW5nZS1jb21wYXJpc29uIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTYpO1xuICAgIG1hcmdpbjogdmFyKC0tc3BhY2UtNCkgMDtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KSAwO1xuICB9XG59XG5cbi8qIFByb2JsZW0vU29sdXRpb24gY29sdW1ucyAqL1xuLmNoYWxsZW5nZS1wcm9ibGVtcyxcbi5jaGFsbGVuZ2Utc29sdXRpb25zIHtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi5jaGFsbGVuZ2UtcHJvYmxlbXMge1xuICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zcGFjZS02KTtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5jaGFsbGVuZ2UtcHJvYmxlbXMge1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgcGFkZGluZy1ib3R0b206IHZhcigtLXNwYWNlLTYpO1xuICB9XG4gIFxuICAuY2hhbGxlbmdlLXNvbHV0aW9ucyB7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXNwYWNlLTYpO1xuICB9XG59XG5cbi8qIExpc3RzICovXG4uY2hhbGxlbmdlLXByb2JsZW1zLWxpc3QsXG4uY2hhbGxlbmdlLXNvbHV0aW9ucy1saXN0IHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiB2YXIoLS1zcGFjZS00KSAwIDAgMDtcbn1cblxuLmNoYWxsZW5nZS1wcm9ibGVtLWl0ZW0sXG4uY2hhbGxlbmdlLXNvbHV0aW9uLWl0ZW0ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0zKTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMykgMDtcbiAgbGluZS1oZWlnaHQ6IDEuNjtcbn1cblxuLmNoYWxsZW5nZS1wcm9ibGVtLWl0ZW0gc3ZnIHtcbiAgZmxleC1zaHJpbms6IDA7XG4gIG1hcmdpbi10b3A6IDJweDtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1kZXN0cnVjdGl2ZSkpO1xufVxuXG4uY2hhbGxlbmdlLXNvbHV0aW9uLWl0ZW0gc3ZnIHtcbiAgZmxleC1zaHJpbms6IDA7XG4gIG1hcmdpbi10b3A6IDJweDtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1zdWNjZXNzKSk7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIE1ldHJpY3MgU2VjdGlvblxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uY2hhbGxlbmdlLW1ldHJpY3Mge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDIwMHB4LCAxZnIpKTtcbiAgZ2FwOiB2YXIoLS1zcGFjZS00KTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtNikgMDtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtNik7XG59XG5cbi8qIERhcmsgbW9kZSBtZXRyaWNzICovXG5AbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XG4gIC5jaGFsbGVuZ2UtbWV0cmljcyB7XG4gICAgLyogQ2xlYW4gbWV0cmljcyB3aXRob3V0IGJhY2tncm91bmQgKi9cbiAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLmNoYWxsZW5nZS1tZXRyaWNzIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KTtcbiAgfVxufVxuXG4ubWV0cmljLWNhcmQge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQpIC8gMC4wNSk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTYpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpO1xufVxuXG4vKiBEYXJrIG1vZGUgbWV0cmljIGNhcmQgKi9cbkBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHtcbiAgLm1ldHJpYy1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQpIC8gMC4wOCk7XG4gIH1cbn1cblxuLm1ldHJpYy1jYXJkOmhvdmVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQpIC8gMC4xKTtcbn1cblxuQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xuICAubWV0cmljLWNhcmQ6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1tdXRlZCkgLyAwLjE1KTtcbiAgfVxufVxuXG4ubWV0cmljLXZhbHVlIHtcbiAgZm9udC1zaXplOiAycmVtO1xuICBmb250LXdlaWdodDogNzAwO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbiAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMik7XG59XG5cbi5tZXRyaWMtbGFiZWwge1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBmb250LXdlaWdodDogNjAwO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWZvcmVncm91bmQpKTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMSk7XG59XG5cbi5tZXRyaWMtZGVzY3JpcHRpb24ge1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLW11dGVkLWZvcmVncm91bmQpKTtcbiAgb3BhY2l0eTogMC44O1xuICBsaW5lLWhlaWdodDogMS40O1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBGb2N1cyBTdGF0ZXMgJiBBY2Nlc3NpYmlsaXR5XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5jaGFsbGVuZ2UtbmF2LWl0ZW06Zm9jdXMtdmlzaWJsZSB7XG4gIG91dGxpbmU6IDNweCBzb2xpZCByZ2IodmFyKC0tY29sb3ItZm9jdXMpKTtcbiAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbn1cblxuLmNoYWxsZW5nZS1uYXYtaXRlbTpmb2N1czpub3QoOmZvY3VzLXZpc2libGUpIHtcbiAgb3V0bGluZTogbm9uZTtcbn1cblxuLyogUmVkdWNlZCBtb3Rpb24gc3VwcG9ydCAqL1xuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLmNoYWxsZW5nZS1uYXYtaXRlbSxcbiAgLmNoYWxsZW5nZS1kZXRhaWwsXG4gIC5tZXRyaWMtY2FyZCB7XG4gICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICBhbmltYXRpb246IG5vbmU7XG4gIH1cbn1cblxuLyogSGlnaCBjb250cmFzdCBtb2RlICovXG5AbWVkaWEgKHByZWZlcnMtY29udHJhc3Q6IGhpZ2gpIHtcbiAgLmNoYWxsZW5nZS1uYXYtaXRlbS5hY3RpdmUge1xuICAgIG91dGxpbmU6IDJweCBzb2xpZCByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSk7XG4gICAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7XG4gIH1cbiAgXG4gIC8qIE9ubHkgYWRkIGJvcmRlcnMgaW4gaGlnaCBjb250cmFzdCBtb2RlIGZvciBhY2Nlc3NpYmlsaXR5ICovXG4gIC5jaGFsbGVuZ2UtcHJvYmxlbXMsXG4gIC5jaGFsbGVuZ2Utc29sdXRpb25zIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCBjdXJyZW50Q29sb3I7XG4gIH1cbiAgXG4gIC5tZXRyaWMtY2FyZCB7XG4gICAgYm9yZGVyOiAycHggc29saWQgY3VycmVudENvbG9yO1xuICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFByaW50IFN0eWxlc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG5AbWVkaWEgcHJpbnQge1xuICAuY2hhbGxlbmdlcy1zaWRlYmFyIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIFxuICAuY2hhbGxlbmdlLWRldGFpbCB7XG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtOCk7XG4gIH1cbiAgXG4gIC5jaGFsbGVuZ2VzLWxheW91dCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gIH1cbiAgXG4gIC5jaGFsbGVuZ2UtbWV0cmljcyB7XG4gICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkO1xuICB9XG59IiwiLyogQ29kZUV4YW1wbGUgQ29tcG9uZW50IFN0eWxlcyAqL1xuXG4uY29kZS1leGFtcGxlIHtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWNhcmQpKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiKHZhcigtLWNvbG9yLWJvcmRlcikpO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS02KTtcbn1cblxuLmNvZGUtZXhhbXBsZS1oZWFkZXIge1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KSB2YXIoLS1zcGFjZS01KTtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLXN1cmZhY2UpKTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYih2YXIoLS1jb2xvci1ib3JkZXIpKTtcbn1cblxuLmNvZGUtZXhhbXBsZS1oZWFkZXItY29udGVudCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogdmFyKC0tc3BhY2UtMik7XG59XG5cbi5jb2RlLWV4YW1wbGUtdGl0bGUge1xuICBmb250LXNpemU6IHZhcigtLXRleHQtbGcpO1xuICBmb250LXdlaWdodDogNjAwO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXRleHQtcHJpbWFyeSkpO1xuICBtYXJnaW46IDA7XG59XG5cbi5jb2RlLWV4YW1wbGUtZGVzY3JpcHRpb24ge1xuICBmb250LXNpemU6IHZhcigtLXRleHQtc20pO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5KSk7XG4gIG1hcmdpbjogMDtcbn1cblxuLmNvZGUtZXhhbXBsZS1ibG9jayB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYmFja2dyb3VuZDogIzE5MWMyYztcbiAgYm9yZGVyLXJhZGl1czogMCAwIHZhcigtLXJhZGl1cy1tZCkgdmFyKC0tcmFkaXVzLW1kKTtcbn1cblxuLmNvZGUtZXhhbXBsZS1sYW5ndWFnZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiB2YXIoLS1zcGFjZS0yKTtcbiAgcmlnaHQ6IHZhcigtLXNwYWNlLTMpO1xuICBmb250LXNpemU6IHZhcigtLXRleHQteHMpO1xuICBjb2xvcjogIzk0YTNiODtcbiAgdGV4dC10cmFuc2Zvcm06IGxvd2VyY2FzZTtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtbW9ubyk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTEpIHZhcigtLXNwYWNlLTIpO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDE0OCwgMTYzLCAxODQsIDAuMSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7XG4gIHotaW5kZXg6IDE7XG59XG5cbi5jb2RlLWV4YW1wbGUtcHJlIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS01KTtcbiAgb3ZlcmZsb3cteDogYXV0bztcbiAgb3ZlcmZsb3cteTogaGlkZGVuO1xuICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG5cbi5jb2RlLWV4YW1wbGUtY29kZSB7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LW1vbm8pO1xuICBmb250LXNpemU6IHZhcigtLXRleHQtc20pO1xuICBsaW5lLWhlaWdodDogMS42O1xuICBjb2xvcjogIzIyZDNlZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdoaXRlLXNwYWNlOiBwcmU7XG59XG5cbi8qIFN5bnRheCBoaWdobGlnaHRpbmcgZm9yIGRpZmZlcmVudCBsYW5ndWFnZXMgKi9cbi5jb2RlLWV4YW1wbGUtY29kZS5sYW5ndWFnZS15YW1sIHtcbiAgY29sb3I6ICMyMmQzZWU7XG59XG5cbi5jb2RlLWV4YW1wbGUtY29kZS5sYW5ndWFnZS1iYXNoIHtcbiAgY29sb3I6ICM4NmVmYWM7XG59XG5cbi5jb2RlLWV4YW1wbGUtY29kZS5sYW5ndWFnZS1qc29uIHtcbiAgY29sb3I6ICNmYmJmMjQ7XG59XG5cbi5jb2RlLWV4YW1wbGUtY29kZS5sYW5ndWFnZS10eXBlc2NyaXB0LFxuLmNvZGUtZXhhbXBsZS1jb2RlLmxhbmd1YWdlLWphdmFzY3JpcHQge1xuICBjb2xvcjogI2E1ZjNmYztcbn1cblxuLyogU2Nyb2xsYmFyIHN0eWxpbmcgKi9cbi5jb2RlLWV4YW1wbGUtcHJlOjotd2Via2l0LXNjcm9sbGJhciB7XG4gIGhlaWdodDogOHB4O1xuICBiYWNrZ3JvdW5kOiByZ2JhKDE0OCwgMTYzLCAxODQsIDAuMSk7XG59XG5cbi5jb2RlLWV4YW1wbGUtcHJlOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMTQ4LCAxNjMsIDE4NCwgMC4zKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbn1cblxuLmNvZGUtZXhhbXBsZS1wcmU6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogcmdiYSgxNDgsIDE2MywgMTg0LCAwLjUpO1xufVxuXG4vKiBNb2JpbGUgb3B0aW1pemF0aW9ucyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5jb2RlLWV4YW1wbGUge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTQpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7XG4gIH1cbiAgXG4gIC5jb2RlLWV4YW1wbGUtaGVhZGVyIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0zKSB2YXIoLS1zcGFjZS00KTtcbiAgfVxuICBcbiAgLmNvZGUtZXhhbXBsZS10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS10ZXh0LWJhc2UpO1xuICB9XG4gIFxuICAuY29kZS1leGFtcGxlLXByZSB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtNCk7XG4gIH1cbiAgXG4gIC5jb2RlLWV4YW1wbGUtY29kZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS10ZXh0LXhzKTtcbiAgfVxuICBcbiAgLmNvZGUtZXhhbXBsZS1sYW5ndWFnZSB7XG4gICAgZm9udC1zaXplOiAxMHB4O1xuICAgIHBhZGRpbmc6IDJweCA2cHg7XG4gIH1cbn1cblxuLyogRGFyayBtb2RlIGFkanVzdG1lbnRzICovXG5AbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XG4gIC5jb2RlLWV4YW1wbGUge1xuICAgIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1jYXJkLWRhcmspKTtcbiAgICBib3JkZXItY29sb3I6IHJnYih2YXIoLS1jb2xvci1ib3JkZXItZGFyaykpO1xuICB9XG4gIFxuICAuY29kZS1leGFtcGxlLWhlYWRlciB7XG4gICAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLXN1cmZhY2UtZGFyaykpO1xuICAgIGJvcmRlci1jb2xvcjogcmdiKHZhcigtLWNvbG9yLWJvcmRlci1kYXJrKSk7XG4gIH1cbiAgXG4gIC5jb2RlLWV4YW1wbGUtYmxvY2sge1xuICAgIGJhY2tncm91bmQ6ICMwZjExMTc7XG4gIH1cbn1cblxuLyogQ29tcGFjdCB2YXJpYW50ICovXG4uY29kZS1leGFtcGxlLmNvZGUtZXhhbXBsZS1jb21wYWN0IC5jb2RlLWV4YW1wbGUtaGVhZGVyIHtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMykgdmFyKC0tc3BhY2UtNCk7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3JkZXItYm90dG9tOiBub25lO1xufVxuXG4uY29kZS1leGFtcGxlLmNvZGUtZXhhbXBsZS1jb21wYWN0IC5jb2RlLWV4YW1wbGUtdGl0bGUge1xuICBmb250LXNpemU6IHZhcigtLXRleHQtYmFzZSk7XG59XG5cbi8qIElubGluZSB2YXJpYW50ICovXG4uY29kZS1leGFtcGxlLmNvZGUtZXhhbXBsZS1pbmxpbmUge1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiBub25lO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0zKTtcbn1cblxuLmNvZGUtZXhhbXBsZS5jb2RlLWV4YW1wbGUtaW5saW5lIC5jb2RlLWV4YW1wbGUtYmxvY2sge1xuICBiYWNrZ3JvdW5kOiAjMTkxYzJjO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xufSIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBDT01QQVJJU09OIFRBQkxFIENPTVBPTkVOVCBTVFlMRVMgLSBUaHJlZS1MYXllciBBcmNoaXRlY3R1cmVcbiAgIExheWVyIDI6IENvbXBvbmVudCBFbmhhbmNlbWVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogREVTSUdOIFBSSU5DSVBMRVM6XG4gICAtIFRocmVlLWNvbHVtbiBsYXlvdXQ6IHZhbHVlcyB8IGZlYXR1cmVzIHwgdmFsdWVzXG4gICAtIENlbnRyYWwgZmVhdHVyZSBjb2x1bW4gd2l0aCBuYW1lcyBhbmQgZGVzY3JpcHRpb25zXG4gICAtIE5vIGR1cGxpY2F0ZSBmZWF0dXJlIHRleHQgLSBzaG93biBvbmNlIGluIGNlbnRlclxuICAgLSBNb2JpbGUtZmlyc3QgcmVzcG9uc2l2ZSBkZXNpZ24gd2l0aCBwcm9wZXIgc3RhY2tpbmdcbiAgIC0gUHJpbWFyeSBjb2x1bW4gaGlnaGxpZ2h0aW5nIHdpdGggMTAlIHJlZCBydWxlXG4gICAtIENhdGVnb3J5IGdyb3VwaW5nIHdpdGggdmlzdWFsIHNlcGFyYXRpb25cbiAgIC0gTm8gZm9udC1zaXplIGRlY2xhcmF0aW9ucyAtIHVzZXMgZ2xvYmFsIHR5cG9ncmFwaHkgY2xhc3Nlc1xuICAgLSBBbGwgaG92ZXIgc3RhdGVzIHdpdGggMzAwbXMgdHJhbnNpdGlvbnNcbiAgIC0gVG91Y2ggdGFyZ2V0cyBtaW5pbXVtIDQ4cHggb24gbW9iaWxlXG4gICAtIFByb2Zlc3Npb25hbCBkZXB0aCB3aXRoIHN1YnRsZSBncmFkaWVudHMgYW5kIHNoYWRvd3NcbiAgIC0gRW5oYW5jZWQgdmlzdWFsIGhpZXJhcmNoeSBhbmQgcG9saXNoXG4qL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PSBXUkFQUEVSICYgTEFZT1VUID09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIE1haW4gd3JhcHBlciBmb3IgdGhyZWUtY29sdW1uIGxheW91dCAqL1xuLmNvbXBhcmlzb24td3JhcHBlciB7XG4gIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IHZhcigtLXNwYWNlLTgpO1xuICBvdmVyZmxvdy14OiBhdXRvO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gIG9wYWNpdHk6IDEgIWltcG9ydGFudDtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KFxuICAgIHRvIGJvdHRvbSxcbiAgICByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktNTApLCAwLjAyKSAwJSxcbiAgICB0cmFuc3BhcmVudCA0MCVcbiAgKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXhsKTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMik7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09IEdMT0JBTCBIRUFERVJTID09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIEdsb2JhbCBoZWFkZXJzIGNvbnRhaW5lciBzcGFubmluZyBmdWxsIHdpZHRoICovXG4uY29tcGFyaXNvbi1nbG9iYWwtaGVhZGVycyB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS00KTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtOCk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLyogSW5kaXZpZHVhbCBnbG9iYWwgaGVhZGVycyAqL1xuLmNvbXBhcmlzb24tZ2xvYmFsLWhlYWRlciB7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTYpIHZhcigtLXNwYWNlLTQpO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBcbiAgICByZ2JhKHZhcigtLWNvbG9yLWJhY2tncm91bmQpLCAwLjk1KSAwJSxcbiAgICByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktNTApLCAwLjMpIDEwMCVcbiAgKTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LTIwMCksIDAuMyk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNpbmctc21vb3RoKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMjBweCk7XG4gIC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOiBibHVyKDIwcHgpO1xuICBib3gtc2hhZG93OiBcbiAgICAwIDJweCA0cHggcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LTkwMCksIDAuMDMpLFxuICAgIDAgNHB4IDhweCByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktOTAwKSwgMC4wNCksXG4gICAgMCA4cHggMTZweCByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktOTAwKSwgMC4wNSksXG4gICAgMCAxNnB4IDMycHggcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LTkwMCksIDAuMDYpLFxuICAgIGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xufVxuXG4vKiBHbGFzcyBlZmZlY3Qgb3ZlcmxheSAqL1xuLmNvbXBhcmlzb24tZ2xvYmFsLWhlYWRlcjo6YmVmb3JlIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQ6IDA7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChcbiAgICAxMzVkZWcsXG4gICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpIDAlLFxuICAgIHRyYW5zcGFyZW50IDYwJVxuICApO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLyogR2xvYmFsIGhlYWRlciBob3ZlciBzdGF0ZSAqL1xuLmNvbXBhcmlzb24tZ2xvYmFsLWhlYWRlcjpob3ZlciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNHB4KSBzY2FsZSgxLjAxKTtcbiAgYm94LXNoYWRvdzogXG4gICAgMCA0cHggOHB4IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS05MDApLCAwLjA0KSxcbiAgICAwIDhweCAxNnB4IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS05MDApLCAwLjA2KSxcbiAgICAwIDE2cHggMzJweCByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktOTAwKSwgMC4wOCksXG4gICAgMCAyNHB4IDQ4cHggcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LTkwMCksIDAuMSksXG4gICAgaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLFxuICAgIHJnYmEodmFyKC0tY29sb3ItYmFja2dyb3VuZCksIDAuOTgpIDAlLFxuICAgIHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS01MCksIDAuNCkgMTAwJVxuICApO1xuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS0zMDApLCAwLjQpO1xufVxuXG4vKiBQcmltYXJ5IGdsb2JhbCBoZWFkZXIgKHNvbHV0aW9ucykgc3R5bGluZyAqL1xuLmNvbXBhcmlzb24tZ2xvYmFsLWhlYWRlci5jb21wYXJpc29uLXByaW1hcnktaGVhZGVyIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZyxcbiAgICByZ2JhKHZhcigtLWNvbG9yLWJhY2tncm91bmQpLCAwLjk4KSAwJSxcbiAgICByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZS01MCksIDAuMikgNTAlLFxuICAgIHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlLTEwMCksIDAuMSkgMTAwJVxuICApO1xuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSwgMC4xMik7XG4gIGJveC1zaGFkb3c6IFxuICAgIDAgMnB4IDRweCByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSksIDAuMDQpLFxuICAgIDAgNHB4IDhweCByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSksIDAuMDYpLFxuICAgIDAgOHB4IDE2cHggcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpLCAwLjA4KSxcbiAgICAwIDE2cHggMzJweCByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktOTAwKSwgMC4wNiksXG4gICAgaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpLFxuICAgIGluc2V0IDAgMCAyMHB4IHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSwgMC4wMyk7XG59XG5cbi8qIFByZW1pdW0gZ2xvdyBlZmZlY3QgZm9yIHByaW1hcnkgaGVhZGVyICovXG4uY29tcGFyaXNvbi1nbG9iYWwtaGVhZGVyLmNvbXBhcmlzb24tcHJpbWFyeS1oZWFkZXI6OmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQ6IC01MCU7XG4gIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChcbiAgICBjaXJjbGUgYXQgY2VudGVyLFxuICAgIHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSwgMC4wNSkgMCUsXG4gICAgdHJhbnNwYXJlbnQgNzAlXG4gICk7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLXRpbWluZy1zbG93KSB2YXIoLS1lYXNpbmctc21vb3RoKTtcbn1cblxuLyogUHJpbWFyeSBnbG9iYWwgaGVhZGVyIGhvdmVyICovXG4uY29tcGFyaXNvbi1nbG9iYWwtaGVhZGVyLmNvbXBhcmlzb24tcHJpbWFyeS1oZWFkZXI6aG92ZXIge1xuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSwgMC4xOCk7XG4gIGJveC1zaGFkb3c6IFxuICAgIDAgNHB4IDhweCByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSksIDAuMDYpLFxuICAgIDAgOHB4IDE2cHggcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpLCAwLjA4KSxcbiAgICAwIDE2cHggMzJweCByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSksIDAuMSksXG4gICAgMCAyNHB4IDQ4cHggcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LTkwMCksIDAuMDgpLFxuICAgIGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpLFxuICAgIGluc2V0IDAgMCAzMHB4IHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSwgMC4wNSk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNXB4KSBzY2FsZSgxLjAyKTtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZyxcbiAgICByZ2JhKHZhcigtLWNvbG9yLWJhY2tncm91bmQpLCAxKSAwJSxcbiAgICByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZS01MCksIDAuMjUpIDUwJSxcbiAgICByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZS0xMDApLCAwLjE1KSAxMDAlXG4gICk7XG59XG5cbi5jb21wYXJpc29uLWdsb2JhbC1oZWFkZXIuY29tcGFyaXNvbi1wcmltYXJ5LWhlYWRlcjpob3Zlcjo6YWZ0ZXIge1xuICBvcGFjaXR5OiAxO1xufVxuXG4vKiBTcGVjaWZpYyBoZWFkZXIgY2xhc3NlcyAqL1xuLmNvbXBhcmlzb24tY2hhbGxlbmdlcy1oZWFkZXIge1xuICAvKiBJbmhlcml0cyBhbGwgc3R5bGVzIGZyb20gLmNvbXBhcmlzb24tZ2xvYmFsLWhlYWRlciAqL1xufVxuXG4uY29tcGFyaXNvbi1zb2x1dGlvbnMtaGVhZGVyIHtcbiAgLyogSW5oZXJpdHMgYWxsIHN0eWxlcyBmcm9tIC5jb21wYXJpc29uLWdsb2JhbC1oZWFkZXIgKi9cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT0gQ0FURUdPUlkgU0VDVElPTlMgPT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogQ2F0ZWdvcnkgc2VjdGlvbiB3cmFwcGVyICovXG4uY29tcGFyaXNvbi1jYXRlZ29yeS1zZWN0aW9uIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2UtNik7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTYpO1xufVxuXG4vKiBDYXRlZ29yeSB0aXRsZSBzdHlsaW5nICovXG4uY29tcGFyaXNvbi1jYXRlZ29yeS10aXRsZSB7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeS03MDApKTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDhlbTtcbiAgZm9udC1zaXplOiAwLjg3NWVtO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMikgdmFyKC0tc3BhY2UtNCk7XG59XG5cbi8qIENhdGVnb3J5IHRpdGxlIGRlY29yYXRpdmUgbGluZSAqL1xuLmNvbXBhcmlzb24tY2F0ZWdvcnktdGl0bGU6OmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiBjYWxjKC0xICogdmFyKC0tc3BhY2UtMSkpOyAvKiAtNHB4IHVzaW5nIENTUyB2YXJpYWJsZSAqL1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgd2lkdGg6IHZhcigtLXNwYWNlLTE2KTsgLyogNjRweCAtIGNsb3Nlc3QgdG8gNjBweCB1c2luZyBDU1MgdmFyaWFibGUgKi9cbiAgaGVpZ2h0OiB2YXIoLS1zcGFjZS0wLTUpOyAvKiAycHggdXNpbmcgQ1NTIHZhcmlhYmxlICovXG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZyxcbiAgICB0cmFuc3BhcmVudCxcbiAgICByZ2IodmFyKC0tY29sb3ItcHJpbWFyeS00MDApKSxcbiAgICB0cmFuc3BhcmVudFxuICApO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtZnVsbCk7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09IEZFQVRVUkUgR1JJRCA9PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBTZW1hbnRpYyB0YWJsZSBjb250YWluZXIgKi9cbi5jb21wYXJpc29uLXRhYmxlIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7XG4gIGJvcmRlci1zcGFjaW5nOiAwO1xuICB0YWJsZS1sYXlvdXQ6IGZpeGVkO1xufVxuXG4vKiBUYWJsZSBoZWFkZXJzIHN0eWxpbmcgKi9cbi5jb21wYXJpc29uLXRhYmxlIHRoZWFkIHRoIHtcbiAgd2lkdGg6IDMzLjMzMyU7XG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogbm9uZTtcbn1cblxuLyogRmVhdHVyZSBjb2x1bW4gaGVhZGVyIChjZW50ZXIgY29sdW1uKSAqL1xuLmNvbXBhcmlzb24tZmVhdHVyZS1jb2x1bW4ge1xuICB3aWR0aDogY2FsYyh2YXIoLS1zcGFjZS03MikgLSB2YXIoLS1zcGFjZS0yKSk7IC8qIDI4MHB4IC0gdXNpbmcgQ1NTIHZhcmlhYmxlIGluc3RlYWQgb2YgbWFnaWMgbnVtYmVyICovXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4vKiBUYWJsZSBib2R5IHN0eWxpbmcgKi9cbi5jb21wYXJpc29uLXRhYmxlIHRib2R5IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4vKiBUYWJsZSByb3cgc3R5bGluZyAqL1xuLmNvbXBhcmlzb24tdGFibGUgdHIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IHRhYmxlLXJvdztcbn1cblxuLyogVGFibGUgY2VsbCBzdHlsaW5nICovXG4uY29tcGFyaXNvbi10YWJsZSB0ZCB7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogbm9uZTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4vKiBJbmRpdmlkdWFsIGZlYXR1cmUgY2FyZCAodGFibGUgcm93KSAqL1xuLmNvbXBhcmlzb24tZmVhdHVyZS1jYXJkIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZyxcbiAgICByZ2JhKHZhcigtLWNvbG9yLWJhY2tncm91bmQpLCAwLjk4KSAwJSxcbiAgICByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktNTApLCAwLjE1KSAxMDAlXG4gICk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS0yMDApLCAwLjI1KTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNpbmctc21vb3RoKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7XG4gIC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICBib3gtc2hhZG93OiBcbiAgICAwIDFweCAycHggcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LTkwMCksIDAuMDIpLFxuICAgIDAgMnB4IDRweCByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktOTAwKSwgMC4wMyksXG4gICAgMCA0cHggOHB4IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS05MDApLCAwLjA0KSxcbiAgICAwIDhweCAxNnB4IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS05MDApLCAwLjA1KSxcbiAgICBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7XG59XG5cbi8qIFRhYmxlIHJvdyBzcGVjaWZpYyBzdHlsaW5nICovXG4uY29tcGFyaXNvbi1mZWF0dXJlLXJvdyB7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTQpO1xufVxuXG4uY29tcGFyaXNvbi1mZWF0dXJlLXJvdyB0ZCB7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTQpO1xufVxuXG4vKiBTdWJ0bGUgaW5uZXIgZ2xvdyAqL1xuLmNvbXBhcmlzb24tZmVhdHVyZS1jYXJkOjpiZWZvcmUge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbnNldDogMDtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KFxuICAgIDEzNWRlZyxcbiAgICByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpIDAlLFxuICAgIHRyYW5zcGFyZW50IDUwJVxuICApO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLyogRmVhdHVyZSBjYXJkIGhvdmVyIHN0YXRlICovXG4uY29tcGFyaXNvbi1mZWF0dXJlLWNhcmQ6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLFxuICAgIHJnYmEodmFyKC0tY29sb3ItYmFja2dyb3VuZCksIDEpIDAlLFxuICAgIHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS01MCksIDAuMikgMTAwJVxuICApO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTZweCkgc2NhbGUoMS4wMSk7XG4gIGJveC1zaGFkb3c6IFxuICAgIDAgMnB4IDRweCByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktOTAwKSwgMC4wMyksXG4gICAgMCA0cHggOHB4IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS05MDApLCAwLjA1KSxcbiAgICAwIDhweCAxNnB4IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS05MDApLCAwLjA3KSxcbiAgICAwIDE2cHggMzJweCByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktOTAwKSwgMC4wOSksXG4gICAgMCAyNHB4IDQ4cHggcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LTkwMCksIDAuMTEpLFxuICAgIGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKTtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktMzAwKSwgMC4zNSk7XG4gIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxNXB4KSBzYXR1cmF0ZSgxLjEpO1xuICAtd2Via2l0LWJhY2tkcm9wLWZpbHRlcjogYmx1cigxNXB4KSBzYXR1cmF0ZSgxLjEpO1xufVxuXG4vKiBGZWF0dXJlIGhlYWRlciBzZWN0aW9uIChjZW50ZXIgY2VsbCkgKi9cbi5jb21wYXJpc29uLWZlYXR1cmUtaGVhZGVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KTtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSxcbiAgICByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktNTApLCAwLjA1KSAwJSxcbiAgICB0cmFuc3BhcmVudCAxMDAlXG4gICk7XG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LTIwMCksIDAuMTUpO1xuICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktMjAwKSwgMC4xNSk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLyogVGFibGUtc3BlY2lmaWMgZmVhdHVyZSBuYW1lIGFsaWdubWVudCAqL1xuLmNvbXBhcmlzb24tdGFibGUgLmNvbXBhcmlzb24tZmVhdHVyZS1uYW1lIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0xKTtcbn1cblxuLyogVGFibGUtc3BlY2lmaWMgZmVhdHVyZSBkZXNjcmlwdGlvbiBhbGlnbm1lbnQgKi9cbi5jb21wYXJpc29uLXRhYmxlIC5jb21wYXJpc29uLWZlYXR1cmUtZGVzY3JpcHRpb24ge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG1heC13aWR0aDogY2FsYyh2YXIoLS1zcGFjZS03MikgLSB2YXIoLS1zcGFjZS0yKSk7IC8qIDI4MHB4IHVzaW5nIENTUyB2YXJpYWJsZSAqL1xuICBtYXJnaW46IDAgYXV0bztcbiAgb3BhY2l0eTogMC44O1xufVxuXG4vKiBGZWF0dXJlIG5hbWUgc3R5bGluZyAqL1xuLmNvbXBhcmlzb24tZmVhdHVyZS1uYW1lIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMSk7XG59XG5cbi8qIEZlYXR1cmUgZGVzY3JpcHRpb24gc3R5bGluZyAqL1xuLmNvbXBhcmlzb24tZmVhdHVyZS1kZXNjcmlwdGlvbiB7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgbWFyZ2luOiAwO1xuICBvcGFjaXR5OiAwLjg7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG59XG5cbi8qIEluZGl2aWR1YWwgdmFsdWUgY2FyZHMgKi9cbi5jb21wYXJpc29uLXZhbHVlLWNhcmQge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLFxuICAgIHJnYmEodmFyKC0tY29sb3ItYmFja2dyb3VuZCksIDAuOTUpIDAlLFxuICAgIHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS01MCksIDAuMSkgMTAwJVxuICApO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktMjAwKSwgMC4yKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtNCk7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzaW5nLXNtb290aCk7XG4gIGJhY2tkcm9wLWZpbHRlcjogYmx1cig4cHgpO1xuICAtd2Via2l0LWJhY2tkcm9wLWZpbHRlcjogYmx1cig4cHgpO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBib3gtc2hhZG93OiBcbiAgICAwIDFweCAycHggcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LTkwMCksIDAuMDIpLFxuICAgIDAgMnB4IDRweCByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktOTAwKSwgMC4wMyksXG4gICAgaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpO1xufVxuXG4vKiBWYWx1ZSBjYXJkIGdsYXNzIHNoaW5lICovXG4uY29tcGFyaXNvbi12YWx1ZS1jYXJkOjpiZWZvcmUge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbnNldDogMDtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KFxuICAgIDEwNWRlZyxcbiAgICB0cmFuc3BhcmVudCA0MCUsXG4gICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA0KSA0NSUsXG4gICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSA1MCUsXG4gICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA0KSA1NSUsXG4gICAgdHJhbnNwYXJlbnQgNjAlXG4gICk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjZzIHZhcigtLWVhc2luZy1zbW9vdGgpO1xufVxuXG4uY29tcGFyaXNvbi1mZWF0dXJlLWNhcmQ6aG92ZXIgLmNvbXBhcmlzb24tdmFsdWUtY2FyZDo6YmVmb3JlIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xufVxuXG4vKiBWYWx1ZSBjYXJkIGNvbnRlbnQgKi9cbi5jb21wYXJpc29uLXZhbHVlLWNvbnRlbnQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtaW4taGVpZ2h0OiB2YXIoLS1zcGFjZS0xNik7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpO1xufVxuXG4vKiBDaGFsbGVuZ2UgY2VsbCBzcGVjaWZpYyBzdHlsaW5nICovXG4uY29tcGFyaXNvbi1jaGFsbGVuZ2Uge1xuICAvKiBJbmhlcml0cyBhbGwgc3R5bGVzIGZyb20gLmNvbXBhcmlzb24tdmFsdWUtY2FyZCAqL1xufVxuXG4vKiBTb2x1dGlvbiBjZWxsIHNwZWNpZmljIHN0eWxpbmcgKi9cbi5jb21wYXJpc29uLXNvbHV0aW9uIHtcbiAgLyogSW5oZXJpdHMgYWxsIHN0eWxlcyBmcm9tIC5jb21wYXJpc29uLXZhbHVlLWNhcmQgKi9cbn1cblxuLyogUHJpbWFyeSBjb2x1bW4gc3R5bGluZyBmb3Igc29sdXRpb24gY2FyZHMgKi9cbi5jb21wYXJpc29uLXZhbHVlLWNhcmQuY29tcGFyaXNvbi1wcmltYXJ5LWNvbHVtbiB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsXG4gICAgcmdiYSh2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSwgMC45OCkgMCUsXG4gICAgcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UtNTApLCAwLjE1KSA1MCUsXG4gICAgcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UtMTAwKSwgMC4wOCkgMTAwJVxuICApO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSksIDAuMSk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYm94LXNoYWRvdzogXG4gICAgMCAxcHggMnB4IHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSwgMC4wMiksXG4gICAgMCAycHggNHB4IHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSwgMC4wMyksXG4gICAgMCA0cHggOHB4IHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSwgMC4wNCksXG4gICAgaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpLFxuICAgIGluc2V0IDAgMCAxMnB4IHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSwgMC4wMik7XG59XG5cbi8qIFByaW1hcnkgdmFsdWUgY2FyZCBzdWJ0bGUgYW5pbWF0aW9uICovXG4uY29tcGFyaXNvbi12YWx1ZS1jYXJkLmNvbXBhcmlzb24tcHJpbWFyeS1jb2x1bW46OmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQ6IDA7XG4gIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChcbiAgICBjaXJjbGUgYXQgNTAlIDUwJSxcbiAgICByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSksIDAuMDYpIDAlLFxuICAgIHRyYW5zcGFyZW50IDcwJVxuICApO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLXRpbWluZy1zbG93KSB2YXIoLS1lYXNpbmctc21vb3RoKTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi5jb21wYXJpc29uLWZlYXR1cmUtY2FyZDpob3ZlciAuY29tcGFyaXNvbi12YWx1ZS1jYXJkLmNvbXBhcmlzb24tcHJpbWFyeS1jb2x1bW46OmFmdGVyIHtcbiAgb3BhY2l0eTogMTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT0gVkFMVUUgSU5ESUNBVE9SUyA9PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBWYWx1ZSB3cmFwcGVyIGZvciBiYWRnZXMgYW5kIGluZGljYXRvcnMgKi9cbi5jb21wYXJpc29uLXZhbHVlLXdyYXBwZXIge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0yKTtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuLyogU3VjY2VzcyBjaGVja21hcmsgaW5kaWNhdG9yICovXG4uY29tcGFyaXNvbi1jaGVja21hcmsge1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXN1Y2Nlc3MpKTtcbiAgZm9udC1zaXplOiAxLjVyZW07XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ib2xkKTtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBtaW4td2lkdGg6IHZhcigtLXNwYWNlLTEwKTtcbiAgbWluLWhlaWdodDogdmFyKC0tc3BhY2UtMTIpO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLFxuICAgIHJnYmEodmFyKC0tY29sb3Itc3VjY2VzcyksIDAuMTIpIDAlLFxuICAgIHJnYmEodmFyKC0tY29sb3Itc3VjY2VzcyksIDAuMDQpIDEwMCVcbiAgKTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jb2xvci1zdWNjZXNzKSwgMC4xNSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1mdWxsKTtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNpbmctc21vb3RoKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3gtc2hhZG93OiBcbiAgICAwIDFweCAycHggcmdiYSh2YXIoLS1jb2xvci1zdWNjZXNzKSwgMC4wNCksXG4gICAgMCAycHggNHB4IHJnYmEodmFyKC0tY29sb3Itc3VjY2VzcyksIDAuMDYpLFxuICAgIDAgNHB4IDhweCByZ2JhKHZhcigtLWNvbG9yLXN1Y2Nlc3MpLCAwLjA4KSxcbiAgICBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTtcbn1cblxuLyogQ2hlY2ttYXJrIHB1bHNlIGFuaW1hdGlvbiBvbiBob3ZlciAqL1xuLmNvbXBhcmlzb24tY2hlY2ttYXJrOjphZnRlciB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGluc2V0OiAtNHB4O1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtZnVsbCk7XG4gIGJvcmRlcjogMnB4IHNvbGlkIHJnYmEodmFyKC0tY29sb3Itc3VjY2VzcyksIDAuMik7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zZm9ybTogc2NhbGUoMC44KTtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNpbmctc21vb3RoKTtcbn1cblxuLyogQ2hlY2ttYXJrIGhvdmVyIGFuaW1hdGlvbiAqL1xuLmNvbXBhcmlzb24tZmVhdHVyZS1yb3c6aG92ZXIgLmNvbXBhcmlzb24tY2hlY2ttYXJrIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxLjE1KSByb3RhdGUoNWRlZyk7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsXG4gICAgcmdiYSh2YXIoLS1jb2xvci1zdWNjZXNzKSwgMC4xNikgMCUsXG4gICAgcmdiYSh2YXIoLS1jb2xvci1zdWNjZXNzKSwgMC4wNikgMTAwJVxuICApO1xuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY29sb3Itc3VjY2VzcyksIDAuMjUpO1xuICBib3gtc2hhZG93OiBcbiAgICAwIDJweCA0cHggcmdiYSh2YXIoLS1jb2xvci1zdWNjZXNzKSwgMC4wNiksXG4gICAgMCA0cHggOHB4IHJnYmEodmFyKC0tY29sb3Itc3VjY2VzcyksIDAuMDgpLFxuICAgIDAgOHB4IDE2cHggcmdiYSh2YXIoLS1jb2xvci1zdWNjZXNzKSwgMC4xKSxcbiAgICAwIDEycHggMjRweCByZ2JhKHZhcigtLWNvbG9yLXN1Y2Nlc3MpLCAwLjEyKSxcbiAgICBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7XG59XG5cbi5jb21wYXJpc29uLWZlYXR1cmUtcm93OmhvdmVyIC5jb21wYXJpc29uLWNoZWNrbWFyazo6YWZ0ZXIge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xufVxuXG4vKiBVbmF2YWlsYWJsZSBYIG1hcmsgaW5kaWNhdG9yICovXG4uY29tcGFyaXNvbi14bWFyayB7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQtZm9yZWdyb3VuZCkpO1xuICBvcGFjaXR5OiAwLjQ7XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBtaW4td2lkdGg6IHZhcigtLXNwYWNlLTgpO1xuICBtaW4taGVpZ2h0OiB2YXIoLS1zcGFjZS04KTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzaW5nLXN0YW5kYXJkKTtcbn1cblxuLyogWCBtYXJrIGhvdmVyIHN0YXRlICovXG4uY29tcGFyaXNvbi1mZWF0dXJlLXJvdzpob3ZlciAuY29tcGFyaXNvbi14bWFyayB7XG4gIG9wYWNpdHk6IDAuNjtcbn1cblxuLyogQ3VzdG9tIHRleHQgdmFsdWVzICovXG4uY29tcGFyaXNvbi1jdXN0b20tdmFsdWUge1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnktNzAwKSk7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pO1xuICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQtcmVsYXhlZCk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpIHZhcigtLXNwYWNlLTQpO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLFxuICAgIHJnYmEodmFyKC0tY29sb3ItYmFja2dyb3VuZCksIDAuOTgpIDAlLFxuICAgIHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS01MCksIDAuMjUpIDEwMCVcbiAgKTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LTIwMCksIDAuMjUpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzaW5nLXNtb290aCk7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoNXB4KTtcbiAgLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6IGJsdXIoNXB4KTtcbiAgYm94LXNoYWRvdzogXG4gICAgMCAxcHggMnB4IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS05MDApLCAwLjAyKSxcbiAgICAwIDJweCA0cHggcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LTkwMCksIDAuMDMpLFxuICAgIGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTtcbn1cblxuLyogQ3VzdG9tIHZhbHVlIHNoaW1tZXIgZWZmZWN0ICovXG4uY29tcGFyaXNvbi1jdXN0b20tdmFsdWU6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGluc2V0OiAwO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoXG4gICAgMTA1ZGVnLFxuICAgIHRyYW5zcGFyZW50IDQwJSxcbiAgICByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDMpIDUwJSxcbiAgICB0cmFuc3BhcmVudCA2MCVcbiAgKTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuOHMgdmFyKC0tZWFzaW5nLXNtb290aCk7XG59XG5cbi8qIEN1c3RvbSB2YWx1ZSBob3ZlciAqL1xuLmNvbXBhcmlzb24tZmVhdHVyZS1yb3c6aG92ZXIgLmNvbXBhcmlzb24tY3VzdG9tLXZhbHVlIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZyxcbiAgICByZ2JhKHZhcigtLWNvbG9yLWJhY2tncm91bmQpLCAxKSAwJSxcbiAgICByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktNTApLCAwLjMpIDEwMCVcbiAgKTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zcHgpIHNjYWxlKDEuMDIpO1xuICBib3gtc2hhZG93OiBcbiAgICAwIDJweCA0cHggcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LTkwMCksIDAuMDMpLFxuICAgIDAgNHB4IDhweCByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktOTAwKSwgMC4wNSksXG4gICAgMCA4cHggMTZweCByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktOTAwKSwgMC4wNyksXG4gICAgaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpO1xuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS0zMDApLCAwLjM1KTtcbn1cblxuLmNvbXBhcmlzb24tZmVhdHVyZS1yb3c6aG92ZXIgLmNvbXBhcmlzb24tY3VzdG9tLXZhbHVlOjpiZWZvcmUge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG59XG5cbi8qIFByaW1hcnkgY29sdW1uIGN1c3RvbSB2YWx1ZXMgKi9cbi5jb21wYXJpc29uLXByaW1hcnktY29sdW1uIC5jb21wYXJpc29uLWN1c3RvbS12YWx1ZSB7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSk7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsXG4gICAgcmdiYSh2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSwgMC45OCkgMCUsXG4gICAgcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UtNTApLCAwLjIpIDUwJSxcbiAgICByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZS0xMDApLCAwLjEpIDEwMCVcbiAgKTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpLCAwLjEpO1xuICBib3gtc2hhZG93OiBcbiAgICAwIDFweCAycHggcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpLCAwLjAzKSxcbiAgICAwIDJweCA0cHggcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpLCAwLjA0KSxcbiAgICAwIDRweCA4cHggcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpLCAwLjA1KSxcbiAgICBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSxcbiAgICBpbnNldCAwIDAgOHB4IHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSwgMC4wMik7XG59XG5cbi8qIFByaW1hcnkgY3VzdG9tIHZhbHVlIGhvdmVyICovXG4uY29tcGFyaXNvbi1mZWF0dXJlLXJvdzpob3ZlciAuY29tcGFyaXNvbi1wcmltYXJ5LWNvbHVtbiAuY29tcGFyaXNvbi1jdXN0b20tdmFsdWUge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLFxuICAgIHJnYmEodmFyKC0tY29sb3ItYmFja2dyb3VuZCksIDEpIDAlLFxuICAgIHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlLTUwKSwgMC4yNSkgNTAlLFxuICAgIHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlLTEwMCksIDAuMTIpIDEwMCVcbiAgKTtcbiAgYm94LXNoYWRvdzogXG4gICAgMCAycHggNHB4IHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSwgMC4wNCksXG4gICAgMCA0cHggOHB4IHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSwgMC4wNiksXG4gICAgMCA4cHggMTZweCByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSksIDAuMDgpLFxuICAgIGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSxcbiAgICBpbnNldCAwIDAgMTJweCByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSksIDAuMDMpO1xuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSwgMC4xNSk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNHB4KSBzY2FsZSgxLjAzKTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT0gUEVSRk9STUFOQ0UgSU5ESUNBVE9SUyA9PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBQZXJmb3JtYW5jZSBiYWRnZSBzdHlsaW5nICovXG4uY29tcGFyaXNvbi1wZXJmb3JtYW5jZS1iYWRnZSB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IHZhcigtLXNwYWNlLTEpO1xuICBwYWRkaW5nOiBjYWxjKHZhcigtLXNwYWNlLTIpICogMC43NSkgdmFyKC0tc3BhY2UtMyk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2luZy1zbW9vdGgpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJhY2tkcm9wLWZpbHRlcjogYmx1cig1cHgpO1xuICAtd2Via2l0LWJhY2tkcm9wLWZpbHRlcjogYmx1cig1cHgpO1xufVxuXG4vKiBQZXJmb3JtYW5jZSBsZXZlbHMgKi9cbi5jb21wYXJpc29uLXBlcmZvcm1hbmNlLWV4Y2VsbGVudCB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsXG4gICAgcmdiYSh2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSwgMC45NSkgMCUsXG4gICAgcmdiYSh2YXIoLS1jb2xvci1zdWNjZXNzKSwgMC4wOCkgMTAwJVxuICApO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXN1Y2Nlc3MpKTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jb2xvci1zdWNjZXNzKSwgMC4yKTtcbiAgYm94LXNoYWRvdzogXG4gICAgMCAxcHggMnB4IHJnYmEodmFyKC0tY29sb3Itc3VjY2VzcyksIDAuMDQpLFxuICAgIDAgMnB4IDRweCByZ2JhKHZhcigtLWNvbG9yLXN1Y2Nlc3MpLCAwLjA2KSxcbiAgICBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTtcbn1cblxuLmNvbXBhcmlzb24tcGVyZm9ybWFuY2UtZ29vZCB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsXG4gICAgcmdiYSh2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSwgMC45NSkgMCUsXG4gICAgcmdiYSh2YXIoLS1jb2xvci1pbmZvKSwgMC4wOCkgMTAwJVxuICApO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWluZm8pKTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jb2xvci1pbmZvKSwgMC4yKTtcbiAgYm94LXNoYWRvdzogXG4gICAgMCAxcHggMnB4IHJnYmEodmFyKC0tY29sb3ItaW5mbyksIDAuMDQpLFxuICAgIDAgMnB4IDRweCByZ2JhKHZhcigtLWNvbG9yLWluZm8pLCAwLjA2KSxcbiAgICBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTtcbn1cblxuLmNvbXBhcmlzb24tcGVyZm9ybWFuY2UtbW9kZXJhdGUge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLFxuICAgIHJnYmEodmFyKC0tY29sb3ItYmFja2dyb3VuZCksIDAuOTUpIDAlLFxuICAgIHJnYmEodmFyKC0tY29sb3Itd2FybmluZyksIDAuMDgpIDEwMCVcbiAgKTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci13YXJuaW5nKSk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY29sb3Itd2FybmluZyksIDAuMik7XG4gIGJveC1zaGFkb3c6IFxuICAgIDAgMXB4IDJweCByZ2JhKHZhcigtLWNvbG9yLXdhcm5pbmcpLCAwLjA0KSxcbiAgICAwIDJweCA0cHggcmdiYSh2YXIoLS1jb2xvci13YXJuaW5nKSwgMC4wNiksXG4gICAgaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG59XG5cbi8qIFBlcmZvcm1hbmNlIGJhZGdlIGhvdmVyICovXG4uY29tcGFyaXNvbi1wZXJmb3JtYW5jZS1iYWRnZTpob3ZlciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KSBzY2FsZSgxLjAyKTtcbn1cblxuLmNvbXBhcmlzb24tcGVyZm9ybWFuY2UtZXhjZWxsZW50OmhvdmVyIHtcbiAgYm94LXNoYWRvdzogXG4gICAgMCAycHggNHB4IHJnYmEodmFyKC0tY29sb3Itc3VjY2VzcyksIDAuMDYpLFxuICAgIDAgNHB4IDhweCByZ2JhKHZhcigtLWNvbG9yLXN1Y2Nlc3MpLCAwLjA4KSxcbiAgICAwIDhweCAxNnB4IHJnYmEodmFyKC0tY29sb3Itc3VjY2VzcyksIDAuMSksXG4gICAgaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpO1xufVxuXG4uY29tcGFyaXNvbi1wZXJmb3JtYW5jZS1nb29kOmhvdmVyIHtcbiAgYm94LXNoYWRvdzogXG4gICAgMCAycHggNHB4IHJnYmEodmFyKC0tY29sb3ItaW5mbyksIDAuMDYpLFxuICAgIDAgNHB4IDhweCByZ2JhKHZhcigtLWNvbG9yLWluZm8pLCAwLjA4KSxcbiAgICAwIDhweCAxNnB4IHJnYmEodmFyKC0tY29sb3ItaW5mbyksIDAuMSksXG4gICAgaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpO1xufVxuXG4uY29tcGFyaXNvbi1wZXJmb3JtYW5jZS1tb2RlcmF0ZTpob3ZlciB7XG4gIGJveC1zaGFkb3c6IFxuICAgIDAgMnB4IDRweCByZ2JhKHZhcigtLWNvbG9yLXdhcm5pbmcpLCAwLjA2KSxcbiAgICAwIDRweCA4cHggcmdiYSh2YXIoLS1jb2xvci13YXJuaW5nKSwgMC4wOCksXG4gICAgMCA4cHggMTZweCByZ2JhKHZhcigtLWNvbG9yLXdhcm5pbmcpLCAwLjEpLFxuICAgIGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT0gVE9PTFRJUFMgJiBPVkVSTEFZUyA9PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBJbmZvIGljb24gZm9yIGFkZGl0aW9uYWwgZGV0YWlscyAqL1xuLmNvbXBhcmlzb24taW5mby1pY29uIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB3aWR0aDogMS4yNXJlbTtcbiAgaGVpZ2h0OiAxLjI1cmVtO1xuICBtYXJnaW4tbGVmdDogdmFyKC0tc3BhY2UtMSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQtZm9yZWdyb3VuZCkpO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3ItbXV0ZWQpLCAwLjUpO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGN1cnNvcjogaGVscDtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNpbmctc3RhbmRhcmQpO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4uY29tcGFyaXNvbi1pbmZvLWljb246aG92ZXIge1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5KSwgMC4xKTtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PSBERVNLVE9QIExBWU9VVCAoNzY4cHgrKSA9PT09PT09PT09PT09PT09PT09PSAqL1xuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLyogRGVza3RvcCByZXNwb25zaXZlIGNsYXNzIG92ZXJyaWRlcyAqL1xuICAuY29tcGFyaXNvbi1kZXNrdG9wLXZpZXcge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gIH1cbiAgXG4gIC5jb21wYXJpc29uLW1vYmlsZS12aWV3IHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cblxuICAvKiBUYWJsZSBsYXlvdXQgYWRqdXN0bWVudHMgZm9yIGRlc2t0b3AgKi9cbiAgLmNvbXBhcmlzb24tdGFibGUgdGhlYWQgdGgge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTYpIHZhcigtLXNwYWNlLTQpO1xuICB9XG4gIFxuICAuY29tcGFyaXNvbi1mZWF0dXJlLWNvbHVtbiB7XG4gICAgd2lkdGg6IGNhbGModmFyKC0tc3BhY2UtNzIpIC0gdmFyKC0tc3BhY2UtMikpOyAvKiAyODBweCB1c2luZyBDU1MgdmFyaWFibGUgKi9cbiAgfVxuICBcbiAgLyogTGFyZ2VyIGluZGljYXRvcnMgb24gZGVza3RvcCAqL1xuICAuY29tcGFyaXNvbi1jaGVja21hcmsge1xuICAgIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgICBtaW4td2lkdGg6IHZhcigtLXNwYWNlLTEyKTtcbiAgICBtaW4taGVpZ2h0OiB2YXIoLS1zcGFjZS0xMik7XG4gIH1cbiAgXG4gIC8qIEN1c3RvbSB2YWx1ZXMgbW9yZSBwcm9taW5lbnQgKi9cbiAgLmNvbXBhcmlzb24tY3VzdG9tLXZhbHVlIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0zKSB2YXIoLS1zcGFjZS02KTtcbiAgICBmb250LXNpemU6IDEuMDVlbTtcbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PSBMQVJHRSBERVNLVE9QICgxMDI0cHgrKSA9PT09PT09PT09PT09PT09PT09PSAqL1xuXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC8qIFdpZGVyIGNlbnRlciBjb2x1bW4gb24gbGFyZ2Ugc2NyZWVucyB1c2luZyBDU1MgdmFyaWFibGUgKi9cbiAgLmNvbXBhcmlzb24tZmVhdHVyZS1jb2x1bW4ge1xuICAgIHdpZHRoOiBjYWxjKHZhcigtLXNwYWNlLTgwKSArIHZhcigtLXNwYWNlLTEwKSk7IC8qIDM2MHB4ICgzMjBweCArIDQwcHgpICovXG4gIH1cbiAgXG4gIC5jb21wYXJpc29uLXRhYmxlIC5jb21wYXJpc29uLWZlYXR1cmUtZGVzY3JpcHRpb24ge1xuICAgIG1heC13aWR0aDogdmFyKC0tc3BhY2UtODApOyAvKiAzMjBweCB1c2luZyBDU1MgdmFyaWFibGUgKi9cbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PSBNT0JJTEUgT1BUSU1JWkFUSU9OUyA9PT09PT09PT09PT09PT09PT09PSAqL1xuXG5AbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLyogSGlkZSBkZXNrdG9wIHZpZXcgY29tcGxldGVseSBvbiBtb2JpbGUgKi9cbiAgLmNvbXBhcmlzb24tZGVza3RvcC12aWV3IHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbiAgXG4gIC8qIEhpZGUgdGFibGUgb24gbW9iaWxlIC0gdXNlIG1vYmlsZSBjYXJkcyBpbnN0ZWFkICovXG4gIC5jb21wYXJpc29uLXRhYmxlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIFxuICAvKiBNb2JpbGUgZ2xvYmFsIGhlYWRlcnMgKi9cbiAgLmNvbXBhcmlzb24tZ2xvYmFsLWhlYWRlcnMge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIGdhcDogdmFyKC0tc3BhY2UtMyk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNik7XG4gIH1cbiAgXG4gIC5jb21wYXJpc29uLWdsb2JhbC1oZWFkZXIge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTQpO1xuICB9XG4gIFxuICAvKiBNb2JpbGUgZmVhdHVyZSBjYXJkcyAobGVnYWN5IGRpc3BsYXkgZm9yIGNhcmQgbGF5b3V0KSAqL1xuICAuY29tcGFyaXNvbi1mZWF0dXJlLWNhcmQge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTQpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTQpO1xuICB9XG4gIFxuICAvKiBNb2JpbGUgdGFibGUgcm93IHN0eWxpbmcgKG5vdCBkaXNwbGF5ZWQpICovXG4gIC5jb21wYXJpc29uLWZlYXR1cmUtcm93IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIFxuICAvKiBNb2JpbGUgZmVhdHVyZSBoZWFkZXIgKi9cbiAgLmNvbXBhcmlzb24tZmVhdHVyZS1oZWFkZXIge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTQpO1xuICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjZS0zKTtcbiAgfVxuICBcbiAgLyogTW9iaWxlIHZhbHVlIGNhcmRzICovXG4gIC5jb21wYXJpc29uLXZhbHVlLWNhcmQge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTMpO1xuICAgIG1pbi1oZWlnaHQ6IGF1dG87XG4gIH1cbiAgXG4gIC8qIE1vYmlsZSB2YWx1ZSBjb250ZW50ICovXG4gIC5jb21wYXJpc29uLXZhbHVlLWNvbnRlbnQge1xuICAgIG1pbi1oZWlnaHQ6IHZhcigtLXNwYWNlLTEyKTtcbiAgfVxuICBcbiAgLyogTW9iaWxlIGN1c3RvbSB2YWx1ZXMgKi9cbiAgLmNvbXBhcmlzb24tY3VzdG9tLXZhbHVlIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0yKSB2YXIoLS1zcGFjZS0zKTtcbiAgICBmb250LXNpemU6IDAuODc1ZW07XG4gIH1cbiAgXG4gIC8qIFNpbXBsaWZpZWQgaG92ZXIgc3RhdGVzIG9uIG1vYmlsZSAqL1xuICAuY29tcGFyaXNvbi1mZWF0dXJlLWNhcmQ6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgfVxuICBcbiAgLyogQ2F0ZWdvcnkgc2VjdGlvbnMgbW9yZSBjb21wYWN0ICovXG4gIC5jb21wYXJpc29uLWNhdGVnb3J5LXNlY3Rpb24ge1xuICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbiAgfVxuICBcbiAgLyogQ2F0ZWdvcnkgdGl0bGUgZnVsbCB3aWR0aCBvbiBtb2JpbGUgKi9cbiAgLmNvbXBhcmlzb24tY2F0ZWdvcnktdGl0bGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGZvbnQtc2l6ZTogMC44MTI1ZW07XG4gIH1cbiAgXG4gIC8qIFBlcmZvcm1hbmNlIGJhZGdlcyAqL1xuICAuY29tcGFyaXNvbi1wZXJmb3JtYW5jZS1iYWRnZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtMikgdmFyKC0tc3BhY2UtMyk7XG4gIH1cbiAgXG4gIC8qIE1vYmlsZSBmZWF0dXJlIGRlc2NyaXB0aW9ucyAqL1xuICAuY29tcGFyaXNvbi1mZWF0dXJlLWRlc2NyaXB0aW9uIHtcbiAgICBmb250LXNpemU6IDAuODc1ZW07XG4gIH1cbiAgXG4gIC8qIE1vYmlsZSB0b3VjaCB0YXJnZXRzICovXG4gIC5jb21wYXJpc29uLWNoZWNrbWFyayB7XG4gICAgbWluLXdpZHRoOiB2YXIoLS1zcGFjZS0xMik7IC8qIDQ4cHggbWluaW11bSB0b3VjaCB0YXJnZXQgKi9cbiAgICBtaW4taGVpZ2h0OiB2YXIoLS1zcGFjZS0xMik7IC8qIDQ4cHggbWluaW11bSB0b3VjaCB0YXJnZXQgKi9cbiAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgfVxuICBcbiAgLmNvbXBhcmlzb24teG1hcmsge1xuICAgIG1pbi13aWR0aDogdmFyKC0tc3BhY2UtMTIpOyAvKiA0OHB4IG1pbmltdW0gdG91Y2ggdGFyZ2V0ICovXG4gICAgbWluLWhlaWdodDogdmFyKC0tc3BhY2UtMTIpOyAvKiA0OHB4IG1pbmltdW0gdG91Y2ggdGFyZ2V0ICovXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PSBERVNLVE9QL01PQklMRSBWSUVXIENPTlRST0xTID09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIERlc2t0b3Atb25seSB2aWV3IGNsYXNzICovXG4uY29tcGFyaXNvbi1kZXNrdG9wLXZpZXcge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4vKiBNb2JpbGUtb25seSB2aWV3IGNsYXNzICovXG4uY29tcGFyaXNvbi1tb2JpbGUtdmlldyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vKiBCYWRnZSBzdHlsaW5nIGZvciBtb2JpbGUgY2FyZHMgKi9cbi5jb21wYXJpc29uLWJhZGdlIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IGNhbGModmFyKC0tc3BhY2UtMSkgKiAwLjc1KSB2YXIoLS1zcGFjZS0yKTtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZyxcbiAgICByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSksIDAuMTIpIDAlLFxuICAgIHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSwgMC4wNikgMTAwJVxuICApO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSksIDAuMTUpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtZnVsbCk7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2luZy1zbW9vdGgpO1xuICBib3gtc2hhZG93OiBcbiAgICAwIDFweCAycHggcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpLCAwLjA4KSxcbiAgICBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTtcbn1cblxuLmNvbXBhcmlzb24tYmFkZ2U6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLFxuICAgIHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSwgMC4xNikgMCUsXG4gICAgcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpLCAwLjA4KSAxMDAlXG4gICk7XG4gIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpLCAwLjIpO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCkgc2NhbGUoMS4wMik7XG4gIGJveC1zaGFkb3c6IFxuICAgIDAgMnB4IDRweCByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSksIDAuMSksXG4gICAgaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PSBNT0JJTEUgQ0FSRFMgPT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogTW9iaWxlIGNvbXBhcmlzb24gd3JhcHBlciAqL1xuLmNvbXBhcmlzb24tbW9iaWxlIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS02KTtcbn1cblxuLyogSW5kaXZpZHVhbCBtb2JpbGUgY2FyZHMgKi9cbi5jb21wYXJpc29uLW1vYmlsZS1jYXJkIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2luZy1zbW9vdGgpO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLFxuICAgIHJnYmEodmFyKC0tY29sb3ItYmFja2dyb3VuZCksIDAuOTgpIDAlLFxuICAgIHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS01MCksIDAuMSkgMTAwJVxuICApO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktMjAwKSwgMC4yKTtcbiAgYm94LXNoYWRvdzogXG4gICAgMCA0cHggNnB4IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS05MDApLCAwLjAyKSxcbiAgICAwIDhweCAxNnB4IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS05MDApLCAwLjA0KSxcbiAgICAwIDE2cHggMzJweCByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktOTAwKSwgMC4wNiksXG4gICAgaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTYpO1xuICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7XG4gIC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xufVxuXG4vKiBQcmltYXJ5IG1vYmlsZSBjYXJkIGhpZ2hsaWdodCB3aXRoIHN0cmF0ZWdpYyByZWQgdXNhZ2UgKi9cbi5jb21wYXJpc29uLW1vYmlsZS1wcmltYXJ5IHtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSksIDAuMik7XG4gIGJveC1zaGFkb3c6IFxuICAgIDAgMCAwIDFweCByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSksIDAuMSksXG4gICAgMCB2YXIoLS1zcGFjZS0xKSB2YXIoLS1zcGFjZS0zKSByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSksIDAuMDgpLFxuICAgIDAgdmFyKC0tc3BhY2UtMikgdmFyKC0tc3BhY2UtNikgcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LTkwMCksIDAuMDQpO1xufVxuXG4vKiBNb2JpbGUgY2FyZCBoZWFkZXIgKi9cbi5jb21wYXJpc29uLW1vYmlsZS1oZWFkZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKHZhcigtLWNvbG9yLWJvcmRlciksIDAuNSk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTYpIHZhcigtLXNwYWNlLTQpO1xuICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2UtNCk7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sXG4gICAgcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LTUwKSwgMC4wMykgMCUsXG4gICAgdHJhbnNwYXJlbnQgMTAwJVxuICApO1xufVxuXG4vKiBNb2JpbGUgZmVhdHVyZSByb3dzIHdpdGggNDhweCB0b3VjaCB0YXJnZXRzICovXG4uY29tcGFyaXNvbi1tb2JpbGUtZmVhdHVyZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTQpO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSh2YXIoLS1jb2xvci1ib3JkZXIpLCAwLjMpO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNpbmctc3RhbmRhcmQpO1xuICBtaW4taGVpZ2h0OiB2YXIoLS1zcGFjZS0xMik7IC8qIDQ4cHggbWluaW11bSB0b3VjaCB0YXJnZXQgKi9cbn1cblxuLmNvbXBhcmlzb24tbW9iaWxlLWZlYXR1cmU6bGFzdC1jaGlsZCB7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7XG59XG5cbi5jb21wYXJpc29uLW1vYmlsZS1mZWF0dXJlOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LTUwKSwgMC4zKTtcbn1cblxuLyogTW9iaWxlIHZhbHVlIGRpc3BsYXkgd2l0aCB0b3VjaCB0YXJnZXRzICovXG4uY29tcGFyaXNvbi1tb2JpbGUtdmFsdWUge1xuICBmbGV4LXNocmluazogMDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIG1pbi13aWR0aDogdmFyKC0tc3BhY2UtMTIpOyAvKiA0OHB4IG1pbmltdW0gdG91Y2ggdGFyZ2V0ICovXG4gIG1pbi1oZWlnaHQ6IHZhcigtLXNwYWNlLTEyKTsgLyogNDhweCBtaW5pbXVtIHRvdWNoIHRhcmdldCAqL1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpOyAvKiBFeHRyYSBwYWRkaW5nIGZvciB0b3VjaCB0YXJnZXRzICovXG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09IEFDQ0VTU0lCSUxJVFkgPT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogRm9jdXMgc3R5bGVzIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uICovXG4uY29tcGFyaXNvbi1nbG9iYWwtaGVhZGVyOmZvY3VzLXdpdGhpbixcbi5jb21wYXJpc29uLWZlYXR1cmUtcm93OmZvY3VzLXdpdGhpbiB7XG4gIG91dGxpbmU6IDJweCBzb2xpZCByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSk7XG4gIG91dGxpbmUtb2Zmc2V0OiAycHg7XG4gIGJveC1zaGFkb3c6IFxuICAgIDAgMCAwIDRweCByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSksIDAuMSksXG4gICAgMCA0cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4wOCk7XG59XG5cbi8qIEhpZ2ggY29udHJhc3QgbW9kZSBzdXBwb3J0ICovXG5AbWVkaWEgKHByZWZlcnMtY29udHJhc3Q6IGhpZ2gpIHtcbiAgLmNvbXBhcmlzb24tcHJpbWFyeS1oZWFkZXIsXG4gIC5jb21wYXJpc29uLXByaW1hcnktY29sdW1uIHtcbiAgICBib3JkZXI6IDNweCBzb2xpZCByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSk7XG4gIH1cbiAgXG4gIC5jb21wYXJpc29uLWNoZWNrbWFyayB7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtYm9sZCk7XG4gIH1cbn1cblxuLyogUmVkdWNlZCBtb3Rpb24gcHJlZmVyZW5jZXMgKi9cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gIC5jb21wYXJpc29uLWdsb2JhbC1oZWFkZXIsXG4gIC5jb21wYXJpc29uLWZlYXR1cmUtcm93LFxuICAuY29tcGFyaXNvbi1jaGVja21hcmssXG4gIC5jb21wYXJpc29uLWN1c3RvbS12YWx1ZSxcbiAgLmNvbXBhcmlzb24tcGVyZm9ybWFuY2UtYmFkZ2UsXG4gIC5jb21wYXJpc29uLWluZm8taWNvbiB7XG4gICAgdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICB9XG4gIFxuICAuY29tcGFyaXNvbi1nbG9iYWwtaGVhZGVyOmhvdmVyLFxuICAuY29tcGFyaXNvbi1mZWF0dXJlLXJvdzpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbiAgXG4gIC5jb21wYXJpc29uLWZlYXR1cmUtcm93OmhvdmVyIC5jb21wYXJpc29uLWNoZWNrbWFyayB7XG4gICAgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLyogUHJpbnQgc3R5bGVzICovXG5AbWVkaWEgcHJpbnQge1xuICAuY29tcGFyaXNvbi13cmFwcGVyIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuICBcbiAgLmNvbXBhcmlzb24tZ2xvYmFsLWhlYWRlcnMge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTQpO1xuICB9XG4gIFxuICAuY29tcGFyaXNvbi1nbG9iYWwtaGVhZGVyIHtcbiAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMik7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNvbG9yLWJvcmRlciksIDEpO1xuICB9XG4gIFxuICAuY29tcGFyaXNvbi1mZWF0dXJlLXJvdyB7XG4gICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTIpO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY29sb3ItYm9yZGVyKSwgMC41KTtcbiAgfVxuICBcbiAgLyogUmVtb3ZlIGhvdmVyIHN0YXRlcyBmb3IgcHJpbnQgKi9cbiAgLmNvbXBhcmlzb24tZ2xvYmFsLWhlYWRlcjpob3ZlcixcbiAgLmNvbXBhcmlzb24tZmVhdHVyZS1yb3c6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PSBUV08tTEFZRVIgU0NST0xMIEFOSU1BVElPTiBOT1RFUyA9PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIE5PVEU6IFR3by1MYXllciBTY3JvbGwgQW5pbWF0aW9ucyBhcmUgZGVmaW5lZCBnbG9iYWxseSBpbiBzcmMvaW5kZXguY3NzXG4gKiB3aXRoIHByb3BlciBwcm9ncmVzc2l2ZSBlbmhhbmNlbWVudCB1c2luZyAuanMtZW5hYmxlZCBjbGFzcy5cbiAqIENvbXBvbmVudCBDU1MgZmlsZXMgc2hvdWxkIE5PVCByZWRlZmluZSB0aGVzZSBhbmltYXRpb25zIHRvIGF2b2lkXG4gKiBzcGVjaWZpY2l0eSBjb25mbGljdHMuXG4gKiBcbiAqIEFuaW1hdGlvbiBDU1MgdmFyaWFibGVzIGFyZSBhbHNvIGRlZmluZWQgZ2xvYmFsbHkgaW4gaW5kZXguY3NzLlxuICogXG4gKiBUaGlzIGNvbXBvbmVudCB1c2VzIHRoZSBmb2xsb3dpbmcgYW5pbWF0aW9uIGNsYXNzZXM6XG4gKiAtIHB3YS1zY3JvbGwtZmFkZTogQXBwbGllZCB0byBoZWFkZXIgYW5kIHdyYXBwZXIgc2VjdGlvbnNcbiAqIC0gcHdhLXNjcm9sbC1zbGlkZS1yaWdodDogQXBwbGllZCB0byBmZWF0dXJlIHJvd3MgZm9yIHN0YWdnZXJlZCBlbnRyYW5jZVxuICogLSBwd2Etc2Nyb2xsLXN0YWdnZXI6IEFwcGxpZWQgdG8gbW9iaWxlIHdyYXBwZXIgZm9yIHN0YWdnZXJlZCBjaGlsZHJlblxuICogXG4gKiBBbGwgYW5pbWF0aW9ucyByZXNwZWN0IHVzZXIgcHJlZmVyZW5jZXMgZm9yIHJlZHVjZWQgbW90aW9uLlxuICovIiwiLyogQ29udGFjdCBNb2RhbCBTdHlsZXMgLSBGb2xsb3dpbmcgQnJhbmQgR3VpZGVsaW5lcyAqL1xuXG4uY29udGFjdC1tb2RhbCB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICB6LWluZGV4OiA5OTk5O1xuICBkaXNwbGF5OiBub25lO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAzMDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xufVxuXG4vKiBEYXJrIG1vZGUgZm9yIG1vZGFsIGJhY2tkcm9wICovXG46cm9vdC5kYXJrIC5jb250YWN0LW1vZGFsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjcpO1xufVxuXG4vKiBGYWRlIGFuaW1hdGlvbnMgcGVyIGJyYW5kIGd1aWRlbGluZXMgKi9cbi5jb250YWN0LW1vZGFsLS1mYWRlLWluIHtcbiAgb3BhY2l0eTogMTtcbn1cblxuLmNvbnRhY3QtbW9kYWwtLWZhZGUtaW4gLmNvbnRhY3QtbW9kYWwtY29udGVudCB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgb3BhY2l0eTogMTtcbn1cblxuLmNvbnRhY3QtbW9kYWwtLWZhZGUtb3V0IHtcbiAgb3BhY2l0eTogMDtcbn1cblxuLmNvbnRhY3QtbW9kYWwtLWZhZGUtb3V0IC5jb250YWN0LW1vZGFsLWNvbnRlbnQge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTIwcHgpO1xuICBvcGFjaXR5OiAwO1xufVxuXG4uY29udGFjdC1tb2RhbC1vdmVybGF5IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAzMDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xufVxuXG4vKiBEYXJrIG1vZGUgb3ZlcmxheSAqL1xuOnJvb3QuZGFyayAuY29udGFjdC1tb2RhbC1vdmVybGF5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjgpO1xufVxuXG4uY29udGFjdC1tb2RhbC1jb250ZW50IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgcGFkZGluZzogMnJlbTtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBtYXgtd2lkdGg6IDUwMHB4O1xuICB3aWR0aDogOTAlO1xuICBtYXgtaGVpZ2h0OiA5MHZoO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICB6LWluZGV4OiAxO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCk7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IGFsbCAzMDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZTVlN2ViO1xufVxuXG4vKiBEYXJrIG1vZGUgY29udGVudCAqL1xuOnJvb3QuZGFyayAuY29udGFjdC1tb2RhbC1jb250ZW50IHtcbiAgYmFja2dyb3VuZDogIzExMTgyNztcbiAgYm9yZGVyLWNvbG9yOiAjMzc0MTUxO1xuICBjb2xvcjogI2Y5ZmFmYjtcbn1cblxuLmNvbnRhY3QtbW9kYWwtY2xvc2Uge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMXJlbTtcbiAgcmlnaHQ6IDFyZW07XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgZm9udC1zaXplOiAycmVtO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGNvbG9yOiAjNmI3MjgwO1xuICB3aWR0aDogMzJweDtcbiAgaGVpZ2h0OiAzMnB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMnMsIGNvbG9yIDAuMnM7XG59XG5cbi5jb250YWN0LW1vZGFsLWNsb3NlOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA1KTtcbiAgY29sb3I6ICMzNzQxNTE7XG59XG5cbi8qIERhcmsgbW9kZSBjbG9zZSBidXR0b24gKi9cbjpyb290LmRhcmsgLmNvbnRhY3QtbW9kYWwtY2xvc2Uge1xuICBjb2xvcjogIzljYTNhZjtcbn1cblxuOnJvb3QuZGFyayAuY29udGFjdC1tb2RhbC1jbG9zZTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTtcbiAgY29sb3I6ICNlNWU3ZWI7XG59XG5cbi5jb250YWN0LW1vZGFsIC5mb3JtLWdyb3VwIHtcbiAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xufVxuXG4uY29udGFjdC1tb2RhbCBsYWJlbCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGNvbG9yOiAjMzc0MTUxO1xufVxuXG4vKiBEYXJrIG1vZGUgbGFiZWxzICovXG46cm9vdC5kYXJrIC5jb250YWN0LW1vZGFsIGxhYmVsIHtcbiAgY29sb3I6ICNkMWQ1ZGI7XG59XG5cbi5jb250YWN0LW1vZGFsIC5mb3JtLWlucHV0IHtcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IDAuNzVyZW07XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkMWQ1ZGI7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMnM7XG4gIHJlc2l6ZTogdmVydGljYWw7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuICBjb2xvcjogIzExMTgyNztcbn1cblxuLyogRGFyayBtb2RlIGlucHV0cyAqL1xuOnJvb3QuZGFyayAuY29udGFjdC1tb2RhbCAuZm9ybS1pbnB1dCB7XG4gIGJhY2tncm91bmQ6ICMxZjI5Mzc7XG4gIGJvcmRlci1jb2xvcjogIzRiNTU2MztcbiAgY29sb3I6ICNmOWZhZmI7XG59XG5cbjpyb290LmRhcmsgLmNvbnRhY3QtbW9kYWwgLmZvcm0taW5wdXQ6OnBsYWNlaG9sZGVyIHtcbiAgY29sb3I6ICM2YjcyODA7XG59XG5cbi5jb250YWN0LW1vZGFsIC5mb3JtLWlucHV0OmZvY3VzIHtcbiAgb3V0bGluZTogbm9uZTtcbiAgYm9yZGVyLWNvbG9yOiAjZGMyNjI2O1xufVxuXG46cm9vdC5kYXJrIC5jb250YWN0LW1vZGFsIC5mb3JtLWlucHV0OmZvY3VzIHtcbiAgYm9yZGVyLWNvbG9yOiAjZWY0NDQ0O1xufVxuXG4uY29udGFjdC1tb2RhbCB0ZXh0YXJlYS5mb3JtLWlucHV0IHtcbiAgbWluLWhlaWdodDogMTAwcHg7XG59XG5cbi5jb250YWN0LW1vZGFsIC5idG4ge1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luLXRvcDogMXJlbTtcbn1cblxuLyogU3VjY2VzcyBtZXNzYWdlIHN0eWxpbmcgKi9cbi5jb250YWN0LW1vZGFsLXN1Y2Nlc3Mge1xuICBwYWRkaW5nOiAycmVtIDA7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLmNvbnRhY3QtbW9kYWwtc3VjY2VzcyBwIHtcbiAgbWFyZ2luOiAwO1xuICBjb2xvcjogIzA1OTY2OTtcbn1cblxuOnJvb3QuZGFyayAuY29udGFjdC1tb2RhbC1zdWNjZXNzIHAge1xuICBjb2xvcjogIzEwYjk4MTtcbn1cblxuLyogRXJyb3IgbWVzc2FnZSBzdHlsaW5nICovXG4uY29udGFjdC1tb2RhbC1lcnJvciB7XG4gIHBhZGRpbmc6IDFyZW07XG4gIG1hcmdpbi10b3A6IDFyZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZWU7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNmY2M7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG46cm9vdC5kYXJrIC5jb250YWN0LW1vZGFsLWVycm9yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMjAsIDM4LCAzOCwgMC4xKTtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDIyMCwgMzgsIDM4LCAwLjMpO1xufVxuXG4uY29udGFjdC1tb2RhbC1lcnJvciBwIHtcbiAgbWFyZ2luOiAwO1xuICBjb2xvcjogI2RjMjYyNjtcbn1cblxuOnJvb3QuZGFyayAuY29udGFjdC1tb2RhbC1lcnJvciBwIHtcbiAgY29sb3I6ICNlZjQ0NDQ7XG59IiwiLyogQ1RBIENvbXBvbmVudCBTdHlsZXMgLSBCUkFOREVEIENTUyBBUkNISVRFQ1RVUkUgKi9cbi8qIENSSVRJQ0FMOiBDb21wb25lbnQtc3BlY2lmaWMgc3R5bGluZyBvbmx5IC0gYnJhbmQgZm91bmRhdGlvbiBpbiBpbmRleC5jc3MgKi9cblxuLyogXG4gKiBDT01QT05FTlQgRU5IQU5DRU1FTlQgUEFUVEVSTjpcbiAqIDEuIEJ1aWxkcyBvbiBsYXlvdXQtc2VjdGlvbiwgbGF5b3V0LWNvbnRhaW5lciBjbGFzc2VzIGZyb20gQnJhbmQgRm91bmRhdGlvbiAoTGF5ZXIgMSlcbiAqIDIuIEVuaGFuY2VzIHdpdGggY29tcG9uZW50LXNwZWNpZmljIGZlYXR1cmVzXG4gKiAzLiBJbXBsZW1lbnRzIHByb3BlciByZXNwb25zaXZlIGRlc2lnbiB3aXRoIGFsbCBzdGFuZGFyZCBicmVha3BvaW50c1xuICovXG5cbi8qIENvbXBvbmVudCBCYXNlIC0gQ1RBIG11c3QgTk9UIHVzZSBzZWN0aW9uIGVsZW1lbnQgcGVyIHN0YW5kYXJkcyAqL1xuLyogQ1JJVElDQUw6IE9ubHkgSGVybyBhbmQgU2VjdGlvbiBjb21wb25lbnRzIGNhbiByZXR1cm4gPHNlY3Rpb24+IGVsZW1lbnRzICovXG4vKiBDVEEgcmV0dXJucyBhIDxkaXY+IHdyYXBwZXIgYW5kIHNob3VsZCBiZSB3cmFwcGVkIGluIFNlY3Rpb24gd2hlbiB1c2VkICovXG4uY3RhLXdyYXBwZXIge1xuICAvKiBDb21wb25lbnQgd3JhcHBlciBzdHlsZXMgKi9cbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uY3RhLXNlY3Rpb24ge1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWZvcmVncm91bmQpKTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2luZy1zdGFuZGFyZCk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgLyogQ29udGFpbiBkZWNvcmF0aXZlIGVsZW1lbnRzICovXG59XG5cbi5jdGEtc2VjdGlvbi1ncmFkaWVudCB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuOyAvKiBDb250YWluIGRlY29yYXRpdmUgZWxlbWVudHMgKi9cbn1cblxuLyogR3JhZGllbnQgZWZmZWN0IHVzaW5nIHBzZXVkby1lbGVtZW50cyBmb3Igc3VidGxlIGVuaGFuY2VtZW50IHdpdGhvdXQgY3JlYXRpbmcgYm9yZGVycyAqL1xuLmN0YS1zZWN0aW9uLWdyYWRpZW50OjpiZWZvcmUge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAzMCU7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgIHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSAvIDAuMDIpLFxuICAgIHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSAvIDAuMDA1KVxuICApO1xuICBvcGFjaXR5OiAwLjQ7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uY3RhLXNlY3Rpb24tbWluaW1hbCB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuOyAvKiBDb250YWluIGRlY29yYXRpdmUgZWxlbWVudHMgKi9cbn1cblxuLyogUkVNT1ZFRDogLmN0YS1jb250YWluZXIgLSB1bnVzZWQsIHJlcGxhY2VkIGJ5IGxheW91dC1jb250YWluZXIgKi9cblxuLyogQ29udGVudCBlbnRyYW5jZSBhbmltYXRpb25zICovXG4uY3RhLXNlY3Rpb24gLmxheW91dC1jb250YWluZXIge1xuICBhbmltYXRpb246IGN0YS1zZWN0aW9uLXJldmVhbCB2YXIoLS10aW1pbmctZGVsaWJlcmF0ZSkgdmFyKC0tZWFzaW5nLXN0YW5kYXJkKSBmb3J3YXJkcztcbiAgb3BhY2l0eTogMDtcbn1cblxuQGtleWZyYW1lcyBjdGEtc2VjdGlvbi1yZXZlYWwge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSh2YXIoLS1zcGFjZS0yKSk7IC8qIFVzZSBDU1MgdmFyaWFibGUgaW5zdGVhZCBvZiBoYXJkY29kZWQgOHB4ICovXG4gIH1cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICB9XG59XG5cbi8qIENvbnRlbnQgLSBDbGVhbiBUeXBvZ3JhcGh5IC0gVVNFUyBCUkFORCBGT1VOREFUSU9OIENMQVNTRVMgKi9cbi8qIFxuICogLmN0YS1jb250ZW50IC0gVXNlcyBsYXlvdXQtY2VudGVyIGNsYXNzIGZvciB3aWR0aC9jZW50ZXJpbmcgZnJvbSBicmFuZCBmb3VuZGF0aW9uXG4gKiBPbmx5IGNvbXBvbmVudC1zcGVjaWZpYyBib3R0b20gbWFyZ2luIG5lZWRlZFxuICovXG4uY3RhLWNvbnRlbnQge1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS04KTsgLyogQnJhbmQtY29tcGxpYW50IHNwYWNpbmc6IDMycHggKi9cbiAgLyogV2lkdGggYW5kIGNlbnRlcmluZyByZW1vdmVkIC0gdXNpbmcgbGF5b3V0LWNlbnRlciBmcm9tIGJyYW5kIGZvdW5kYXRpb24gKi9cbn1cblxuLyogVHlwb2dyYXBoeSBmb3IgdmlzdWFsIGhpZXJhcmNoeSAtIE1JTklNQUwgT1ZFUlJJREVTIE9OTFkgKi9cbi5jdGEtdGl0bGUge1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTsgLyogQnJhbmQtY29tcGxpYW50IHNwYWNpbmc6IDE2cHggKi9cbiAgLyogVHlwb2dyYXBoeSBzdHlsZXMgcmVtb3ZlZCAtIHVzaW5nIHRpdGxlLXNlY3Rpb24gZnJvbSBicmFuZCBmb3VuZGF0aW9uICovXG59XG5cbi5jdGEtZGVzY3JpcHRpb24ge1xuICBtYXJnaW46IDAgYXV0byB2YXIoLS1zcGFjZS02KTsgLyogQnJhbmQtY29tcGxpYW50IHNwYWNpbmc6IDI0cHggKi9cbiAgLyogVHlwb2dyYXBoeSBhbmQgc2l6aW5nIHJlbW92ZWQgLSB1c2luZyBkZXNjcmlwdGlvbi1sZyBmcm9tIGJyYW5kIGZvdW5kYXRpb24gKi9cbn1cblxuLmN0YS1kaXNjbGFpbWVyIHtcbiAgbWFyZ2luOiB2YXIoLS1zcGFjZS02KSBhdXRvIDA7IC8qIEJyYW5kLWNvbXBsaWFudCBzcGFjaW5nOiAyNHB4ICovXG4gIC8qIFR5cG9ncmFwaHkgYW5kIHNpemluZyByZW1vdmVkIC0gdXNpbmcgZGVzY3JpcHRpb24gKyB0ZXh0LW11dGVkIGZyb20gYnJhbmQgZm91bmRhdGlvbiAqL1xufVxuXG4vKiBcbiAqIFR5cG9ncmFwaHkgRW5oYW5jZW1lbnQgLSBCVUlMRFMgT04gQlJBTkQgRk9VTkRBVElPTlxuICogVXNpbmcgc2VtYW50aWMgdHlwb2dyYXBoeSBjbGFzc2VzIGZyb20gaW5kZXguY3NzIHdpdGggY29tcG9uZW50LXNwZWNpZmljIGVuaGFuY2VtZW50c1xuICogQ1RBIGNvbXBvbmVudCByZW5kZXJzOlxuICogPGgyIGNsYXNzPVwidGl0bGUtc2VjdGlvbiBjdGEtdGl0bGVcIj4gKEJyYW5kIEd1aWRlIGNvbXBsaWFudClcbiAqIDxoMyBjbGFzcz1cInN1YnRpdGxlLWxnIHRleHQtbXV0ZWQgY3RhLXN1YnRpdGxlXCI+XG4gKiA8cCBjbGFzcz1cImRlc2NyaXB0aW9uLWxnIHRleHQtbXV0ZWQgY3RhLWRlc2NyaXB0aW9uXCI+XG4gKiA8cCBjbGFzcz1cImRlc2NyaXB0aW9uIHRleHQtbXV0ZWQgY3RhLWRpc2NsYWltZXJcIj5cbiAqL1xuXG4vKiBTdWJ0aXRsZSBzdHlsaW5nIGZvciBzZW1hbnRpYyB0eXBvZ3JhcGh5IGNvbXBsaWFuY2UgKi9cbi5jdGEtc3VidGl0bGUge1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTsgLyogQnJhbmQtY29tcGxpYW50IHNwYWNpbmc6IGNvbnNpc3RlbnQgd2l0aCB0aXRsZSAqL1xuICAvKiBUeXBvZ3JhcGh5IHJlbW92ZWQgLSB1c2luZyBzdWJ0aXRsZS1sZyBmcm9tIGJyYW5kIGZvdW5kYXRpb24gKi9cbn1cblxuLyogQnV0dG9ucyBTZWN0aW9uIC0gSGVyaXRhZ2UgUmVkIENvbXBsaWFuY2UgKi9cbi5jdGEtYnV0dG9ucyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogdmFyKC0tc3BhY2UtNCk7IC8qIE1hdGNoIEhlcm8gY29tcG9uZW50IG1vYmlsZSBzcGFjaW5nICovXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS04KTsgLyogQnJhbmQtY29tcGxpYW50IHNwYWNpbmc6IDMycHggKi9cbiAgLyogUkVNT1ZFRDogcGFkZGluZyBjYXVzZXMgZG91YmxlIHNwYWNpbmcgY29uZmxpY3RzICovXG59XG5cbi8qIFRvdWNoIHRhcmdldCBjb21wbGlhbmNlIC0gNDhweCBtaW5pbXVtICovXG4uY3RhLWJ1dHRvbnMgLmJ0bixcbi5jdGEtYnV0dG9ucyBhIHtcbiAgbWluLWhlaWdodDogNDhweDtcbiAgbWluLXdpZHRoOiA0OHB4O1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi8qIFJFTU9WRUQ6IERpcmVjdCBoZXJpdGFnZSBidXR0b24gbWFyZ2lucyAtIHJlcGxhY2VkIHdpdGggd3JhcHBlciBwYXR0ZXJuICovXG4vKiBIZXJpdGFnZSBidXR0b24gc3BhY2luZyBub3cgaGFuZGxlZCBieSAuY3RhLWJ1dHRvbi1oZXJpdGFnZSB3cmFwcGVyICovXG5cbi8qIEhlcml0YWdlIEJ1dHRvbiBXcmFwcGVyIC0gUHJvdmlkZXMgMzAlIGV4dHJhIHNwYWNpbmcgc2VtYW50aWNhbGx5ICovXG4uY3RhLWJ1dHRvbi1oZXJpdGFnZSB7XG4gIC8qIE1vYmlsZTogdmVydGljYWwgZXh0cmEgc3BhY2luZyAoMzAlIG9mIC0tc3BhY2UtNCA9IDE2cHggKiAwLjMwID0gNC44cHgpICovXG4gIC8qIFVzaW5nIDI1JSBmb3IgYmV0dGVyIGJyb3dzZXIgY29tcGF0aWJpbGl0eTogMC4yNXJlbSA9IDRweCBndWFyYW50ZWVkICovXG4gIHBhZGRpbmctdG9wOiBjYWxjKHZhcigtLXNwYWNlLTQpICogMC4yNSk7IC8qIDI1JSA9IDRweCAobW9yZSB2aXNpYmxlKSAqL1xuICBwYWRkaW5nLWJvdHRvbTogY2FsYyh2YXIoLS1zcGFjZS00KSAqIDAuMjUpOyAvKiAyNSUgPSA0cHggKG1vcmUgdmlzaWJsZSkgKi9cbn1cblxuXG4vKipcbiAqIE5vdGU6IEJ1dHRvbiBzdHlsaW5nIGhhcyBiZWVuIG1vdmVkIHRvIGluZGV4LmNzcyBhcyBwYXJ0IG9mIHRoZSBicmFuZCBmb3VuZGF0aW9uXG4gKiAtIEFsbCBidXR0b24gc3R5bGVzIG5vdyB1c2UgLmJ0biBiYXNlIGNsYXNzIHdpdGggbW9kaWZpZXJzXG4gKiAtIEFuaW1hdGlvbiwgaG92ZXIgZWZmZWN0cywgYW5kIGZvY3VzIHN0YXRlcyBkZWZpbmVkIGluIGdsb2JhbCBDU1NcbiAqIC0gQnV0dG9uIHZhcmlhbnRzIChoZXJpdGFnZSwgcHJpbWFyeSwgc2Vjb25kYXJ5LCBvdXRsaW5lLCBnaG9zdCkgZGVmaW5lZCBnbG9iYWxseVxuICogLSBIb25vciBwcmVmZXJzLXJlZHVjZWQtbW90aW9uIGltcGxlbWVudGVkIGluIGdsb2JhbCBDU1NcbiAqL1xuXG4vKiBcbiAqIERpc2NsYWltZXIgLSBSRU1PVkVEIFNUWUxJTkcgSU4gRkFWT1IgT0YgQlJBTkQgRk9VTkRBVElPTlxuICogVXNpbmcgdGV4dC1tdXRlZCBjbGFzcyBmcm9tIGluZGV4LmNzc1xuICogQ1RBIGNvbXBvbmVudCByZW5kZXJzOlxuICogPHAgY2xhc3M9XCJ0ZXh0LW11dGVkIGN0YS1kaXNjbGFpbWVyXCI+XG4gKi9cblxuLyogUkVTUE9OU0lWRSBERVNJR04gLSBNT0JJTEUtRklSU1QgQVBQUk9BQ0hcbiAqIEJhc2Ugc3R5bGVzIGZvciBtb2JpbGUgKDBweCspLCBlbmhhbmNlZCBmb3IgbGFyZ2VyIHNjcmVlbnNcbiAqIEltcGxlbWVudHMgYWxsIHN0YW5kYXJkIGJyZWFrcG9pbnRzOiA2NDBweCwgNzY4cHgsIDEwMjRweCtcbiAqIEVuc3VyZXMgdG91Y2ggdGFyZ2V0IGNvbXBsaWFuY2Ugb24gYWxsIGRldmljZXNcbiAqL1xuXG4vKiBSRVNQT05TSVZFIERFU0lHTiBPUFRJTUlaQVRJT04gLSBBTEwgU1RBTkRBUkQgQlJFQUtQT0lOVFNcbiAqIE1vYmlsZS1maXJzdCBhcHByb2FjaCB3aXRoIHByb2dyZXNzaXZlIGVuaGFuY2VtZW50XG4gKiBJbXBsZW1lbnRzIG9wdGltaXplZCBzcGFjaW5nIGFuZCBsYXlvdXQgZm9yIGFsbCBkZXZpY2Ugc2l6ZXNcbiAqL1xuXG4vKiBTbWFsbCBzY3JlZW5zICg2NDBweCspICovXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgLmN0YS10aXRsZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNik7IC8qIEJyYW5kLWNvbXBsaWFudCBzcGFjaW5nOiAyNHB4IC0gbW9yZSBzcGFjZSBvbiBsYXJnZXIgc2NyZWVucyAqL1xuICAgIC8qIEZvbnQgc2l6ZSByZW1vdmVkIC0gdXNpbmcgcmVzcG9uc2l2ZSB0aXRsZS1zZWN0aW9uIGZyb20gYnJhbmQgZm91bmRhdGlvbiAqL1xuICB9XG4gIFxuICAuY3RhLWRlc2NyaXB0aW9uIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS04KTsgLyogQnJhbmQtY29tcGxpYW50IHNwYWNpbmc6IDMycHggLSBtb3JlIHNwYWNlIG9uIGxhcmdlciBzY3JlZW5zICovXG4gICAgLyogRm9udCBzaXplIGFuZCB3aWR0aCByZW1vdmVkIC0gdXNpbmcgcmVzcG9uc2l2ZSBkZXNjcmlwdGlvbi1sZyBmcm9tIGJyYW5kIGZvdW5kYXRpb24gKi9cbiAgfVxuICBcbiAgLmN0YS1idXR0b25zIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGZsZXgtd3JhcDogd3JhcDsgLyogQWxsb3cgd3JhcHBpbmcgb24gc21hbGxlciBzY3JlZW5zICovXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS02KTsgLyogTWF0Y2ggSGVybyBjb21wb25lbnQgdGFibGV0IHNwYWNpbmcgKi9cbiAgfVxuICBcbiAgLyogSGVyaXRhZ2Ugd3JhcHBlciByZXNwb25zaXZlIC0gaG9yaXpvbnRhbCBzcGFjaW5nIGZvciB0YWJsZXQgKi9cbiAgLmN0YS1idXR0b24taGVyaXRhZ2Uge1xuICAgIHBhZGRpbmctdG9wOiAwO1xuICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgIHBhZGRpbmctbGVmdDogY2FsYyh2YXIoLS1zcGFjZS02KSAqIDAuMjUpOyAvKiAyNSUgPSA2cHggKG1vcmUgdmlzaWJsZSkgKi9cbiAgICBwYWRkaW5nLXJpZ2h0OiBjYWxjKHZhcigtLXNwYWNlLTYpICogMC4yNSk7IC8qIDI1JSA9IDZweCAobW9yZSB2aXNpYmxlKSAqL1xuICB9XG4gIFxuICAvKiBTZWN0aW9uIHZhcmlhbnRzIC0gUGFkZGluZyBoYW5kbGVkIGJ5IGxheW91dC1zZWN0aW9uIGNsYXNzIGZyb20gYnJhbmQgZm91bmRhdGlvbiAqL1xuICAuY3RhLXNlY3Rpb24sXG4gIC5jdGEtc2VjdGlvbi1ncmFkaWVudCxcbiAgLmN0YS1zZWN0aW9uLW1pbmltYWwge1xuICAgIC8qIE5vIGFkZGl0aW9uYWwgcGFkZGluZyAtIGhhbmRsZWQgYnkgbGF5b3V0LXNlY3Rpb24gY2xhc3MgKi9cbiAgfVxuICBcbn1cblxuLyogTWVkaXVtIHNjcmVlbnMgKDc2OHB4KykgKi9cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAvKiBDb250ZW50IHdpZHRoIHJlbW92ZWQgLSB1c2luZyBsYXlvdXQtY2VudGVyIHJlc3BvbnNpdmUgYmVoYXZpb3IgZnJvbSBicmFuZCBmb3VuZGF0aW9uICovXG4gIFxuICAvKiBEZXNjcmlwdGlvbiB0eXBvZ3JhcGh5IHJlbW92ZWQgLSB1c2luZyByZXNwb25zaXZlIGRlc2NyaXB0aW9uLWxnIGZyb20gYnJhbmQgZm91bmRhdGlvbiAqL1xuICBcbiAgLmN0YS1idXR0b25zIHtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTYpOyAvKiBNYXRjaCBIZXJvIGNvbXBvbmVudCB0YWJsZXQgc3BhY2luZyBhdCA3NjhweCAqL1xuICB9XG4gIFxuICAuY3RhLXdyYXBwZXIge1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtIHZhcigtLXNwYWNlLTMyKSk7IC8qIEJyYW5kLWNvbXBsaWFudCBzcGFjaW5nICovXG4gIH1cbiAgXG59XG5cbi8qIExhcmdlIHNjcmVlbnMgKDEwMjRweCspICovXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC8qIENvbnRlbnQgd2lkdGggcmVtb3ZlZCAtIHVzaW5nIGxheW91dC1jZW50ZXIgcmVzcG9uc2l2ZSBiZWhhdmlvciBmcm9tIGJyYW5kIGZvdW5kYXRpb24gKi9cbiAgXG4gIC5jdGEtYnV0dG9ucyB7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS04KTsgLyogTWF0Y2ggSGVybyBjb21wb25lbnQgZGVza3RvcCBzcGFjaW5nICovXG4gICAgZmxleC13cmFwOiBub3dyYXA7IC8qIFNpbmdsZSByb3cgb24gZGVza3RvcCB3aGVuIHBvc3NpYmxlICovXG4gIH1cbiAgXG4gIC8qIEhlcml0YWdlIHdyYXBwZXIgcmVzcG9uc2l2ZSAtIGhvcml6b250YWwgc3BhY2luZyBmb3IgZGVza3RvcCAqL1xuICAuY3RhLWJ1dHRvbi1oZXJpdGFnZSB7XG4gICAgcGFkZGluZy10b3A6IDA7XG4gICAgcGFkZGluZy1ib3R0b206IDA7XG4gICAgcGFkZGluZy1sZWZ0OiBjYWxjKHZhcigtLXNwYWNlLTgpICogMC4yNSk7IC8qIDI1JSA9IDhweCAobW9yZSB2aXNpYmxlKSAqL1xuICAgIHBhZGRpbmctcmlnaHQ6IGNhbGModmFyKC0tc3BhY2UtOCkgKiAwLjI1KTsgLyogMjUlID0gOHB4IChtb3JlIHZpc2libGUpICovXG4gIH1cbiAgXG4gIC5jdGEtdGl0bGUge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTgpOyAvKiBCcmFuZC1jb21wbGlhbnQgc3BhY2luZzogMzJweCAqL1xuICAgIC8qIEZvbnQgc2l6ZSByZW1vdmVkIC0gdXNpbmcgcmVzcG9uc2l2ZSB0aXRsZS1zZWN0aW9uIGZyb20gYnJhbmQgZm91bmRhdGlvbiAqL1xuICB9XG4gIFxuICAuY3RhLWRlc2NyaXB0aW9uIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0xMik7IC8qIEJyYW5kLWNvbXBsaWFudCBzcGFjaW5nOiA0OHB4ICovXG4gICAgLyogV2lkdGggcmVtb3ZlZCAtIHVzaW5nIHJlc3BvbnNpdmUgZGVzY3JpcHRpb24tbGcgZnJvbSBicmFuZCBmb3VuZGF0aW9uICovXG4gIH1cbiAgXG4gIC5jdGEtd3JhcHBlciB7XG4gICAgbWF4LXdpZHRoOiAxNDAwcHg7IC8qIE1heGltdW0gd2lkdGggY29uc3RyYWludCAqL1xuICB9XG4gIFxufVxuXG4vKiBFeHRyYSBsYXJnZSBzY3JlZW5zICgxMjgwcHgrKSAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDEyODBweCkge1xuICAvKiBDb250ZW50IHdpZHRoIHJlbW92ZWQgLSB1c2luZyBsYXlvdXQtY2VudGVyIHJlc3BvbnNpdmUgYmVoYXZpb3IgZnJvbSBicmFuZCBmb3VuZGF0aW9uICovXG4gIFxuICAuY3RhLXdyYXBwZXIge1xuICAgIHBhZGRpbmctbGVmdDogdmFyKC0tc3BhY2UtNDgpOyAvKiBCcmFuZC1jb21wbGlhbnQgc3BhY2luZyAqL1xuICAgIHBhZGRpbmctcmlnaHQ6IHZhcigtLXNwYWNlLTQ4KTsgLyogQnJhbmQtY29tcGxpYW50IHNwYWNpbmcgKi9cbiAgfVxufVxuXG4vKiBMYXJnZSBkZXNrdG9wIHNjcmVlbnMgKDE5MjBweCspIC0gRW5oYW5jZWQgc3BhY2luZyBsaWtlIEhlcm8gKi9cbkBtZWRpYSAobWluLXdpZHRoOiAxOTIwcHgpIHtcbiAgLmN0YS1idXR0b25zIHtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTEyKTsgLyogTWF0Y2ggSGVybyBjb21wb25lbnQncyBsYXJnZSBkZXNrdG9wIHNwYWNpbmcgKDQ4cHgpICovXG4gIH1cbiAgXG4gIC8qIEhlcml0YWdlIHdyYXBwZXIgcmVzcG9uc2l2ZSAtIGVuaGFuY2VkIGhvcml6b250YWwgc3BhY2luZyBmb3IgbGFyZ2UgZGVza3RvcCAqL1xuICAuY3RhLWJ1dHRvbi1oZXJpdGFnZSB7XG4gICAgcGFkZGluZy1sZWZ0OiBjYWxjKHZhcigtLXNwYWNlLTEyKSAqIDAuMjUpOyAvKiAyNSUgPSAxMnB4IGZvciBwcmVtaXVtIGZlZWwgKi9cbiAgICBwYWRkaW5nLXJpZ2h0OiBjYWxjKHZhcigtLXNwYWNlLTEyKSAqIDAuMjUpOyAvKiAyNSUgPSAxMnB4IGZvciBwcmVtaXVtIGZlZWwgKi9cbiAgfVxufVxuXG4vKiBQcmVtaXVtIGxhcmdlIGRlc2t0b3AgKDE5MjBweCspIC0gTWF0Y2ggSGVybyBjb21wb25lbnQgcHJlbWl1bSBzcGFjaW5nICovXG5AbWVkaWEgKG1pbi13aWR0aDogMTkyMHB4KSB7XG4gIC5jdGEtYnV0dG9ucyB7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS0xMik7IC8qIEVuaGFuY2VkIGdhcCBmb3IgcHJlbWl1bSBmZWVsLCBtYXRjaGluZyBIZXJvICovXG4gIH1cbiAgXG4gIC8qIEhlcml0YWdlIHdyYXBwZXIgZW5oYW5jZWQgZm9yIGxhcmdlIHNjcmVlbnMgKi9cbiAgLmN0YS1idXR0b24taGVyaXRhZ2Uge1xuICAgIHBhZGRpbmctdG9wOiAwO1xuICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgIHBhZGRpbmctbGVmdDogY2FsYyh2YXIoLS1zcGFjZS0xMikgKiAwLjI1KTsgLyogMjUlID0gMTJweCAobW9yZSB2aXNpYmxlKSAqL1xuICAgIHBhZGRpbmctcmlnaHQ6IGNhbGModmFyKC0tc3BhY2UtMTIpICogMC4yNSk7IC8qIDI1JSA9IDEycHggKG1vcmUgdmlzaWJsZSkgKi9cbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEFDQ0VTU0lCSUxJVFkgLSBSRURVQ0VEIE1PVElPTiBTVVBQT1JUXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogV0NBRyAyLjEgQUEgQ29tcGxpYW5jZSAtIFJlc3BlY3QgdXNlciBtb3Rpb24gcHJlZmVyZW5jZXMgKi9cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gIC8qIERpc2FibGUgYWxsIHRyYW5zaXRpb25zIGFuZCBhbmltYXRpb25zIGZvciBtb3Rpb24tc2Vuc2l0aXZlIHVzZXJzICovXG4gIC5jdGEtc2VjdGlvbixcbiAgLmN0YS1zZWN0aW9uLWdyYWRpZW50LFxuICAuY3RhLXNlY3Rpb24tbWluaW1hbCB7XG4gICAgdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICB9XG4gIFxuICAvKiBEaXNhYmxlIGVudHJhbmNlIGFuaW1hdGlvbiBhbmQgc2hvdyBjb250ZW50IGltbWVkaWF0ZWx5ICovXG4gIC5jdGEtc2VjdGlvbiAubGF5b3V0LWNvbnRhaW5lciB7XG4gICAgYW5pbWF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gICAgb3BhY2l0eTogMSAhaW1wb3J0YW50O1xuICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG4gIFxuICAvKiBFbnN1cmUgc3RhdGljIHN0YXRlIG1haW50YWlucyB2aXN1YWwgaGllcmFyY2h5ICovXG4gIEBrZXlmcmFtZXMgY3RhLXNlY3Rpb24tcmV2ZWFsIHtcbiAgICBmcm9tLCB0byB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIH1cbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIENPTVBPTkVOVC1TUEVDSUZJQyBOT1RFUyAtIDEwMCUgQ1NTIFVUSUxJWkFUSU9OIFZFUklGSUVEXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogXG4gKiBBUkNISVRFQ1RVUkUgQ09NUExJQU5DRSBDT05GSVJNRUQ6XG4gKiDinIUgQWxsIENTUyBjbGFzc2VzIGluIHRoaXMgZmlsZSBhcmUgdXNlZCBieSB0aGUgQ1RBIGNvbXBvbmVudFxuICog4pyFIENvbXBvbmVudCB1c2VzIHNlbWFudGljIHR5cG9ncmFwaHkgY2xhc3NlcyBmcm9tIGluZGV4LmNzc1xuICog4pyFIEhlcml0YWdlIHJlZCBzcGFjaW5nIGltcGxlbWVudGVkIHBlciBCcmFuZCBHdWlkZSByZXF1aXJlbWVudHNcbiAqIOKchSBDb21wb25lbnQgcmV0dXJucyA8ZGl2PiBub3QgPHNlY3Rpb24+IHBlciBzdGFuZGFyZHNcbiAqIOKchSBBbmltYXRpb24gc3lzdGVtIHVzZXMgZGF0YS1zdGFnZ2VyLWluZGV4IGF0dHJpYnV0ZXNcbiAqIFxuICogQ1NTIENsYXNzZXMgVXNlZCBieSBDb21wb25lbnQ6XG4gKiAtIC5jdGEtd3JhcHBlciAobWFpbiBjb21wb25lbnQgd3JhcHBlciAtIE5PVCBhIHNlY3Rpb24pXG4gKiAtIC5jdGEtc2VjdGlvbiwgLmN0YS1zZWN0aW9uLWdyYWRpZW50LCAuY3RhLXNlY3Rpb24tbWluaW1hbCAoc3R5bGUgdmFyaWFudHMpXG4gKiAtIC5jdGEtY29udGVudCAoY29udGVudCB3cmFwcGVyKVxuICogLSAuY3RhLXRpdGxlICh0aXRsZSBlbmhhbmNlbWVudCBmb3IgdGl0bGUtc2VjdGlvbiBiYXNlKVxuICogLSAuY3RhLXN1YnRpdGxlIChzdWJ0aXRsZSBlbmhhbmNlbWVudCBmb3Igc3VidGl0bGUtbGcgYmFzZSlcbiAqIC0gLmN0YS1kZXNjcmlwdGlvbiAoZGVzY3JpcHRpb24gZW5oYW5jZW1lbnQgZm9yIGRlc2NyaXB0aW9uLWxnIGJhc2UpXG4gKiAtIC5jdGEtZGlzY2xhaW1lciAoZGlzY2xhaW1lciBlbmhhbmNlbWVudCBmb3IgZGVzY3JpcHRpb24gYmFzZSlcbiAqIC0gLmN0YS1idXR0b25zIChidXR0b24gY29udGFpbmVyKVxuICogLSAuY3RhLWJ1dHRvbnMgLmJ0bi1oZXJpdGFnZSAoaGVyaXRhZ2UgYnV0dG9uIHNwYWNpbmcpXG4gKiBcbiAqIEdsb2JhbCBDbGFzc2VzIGZyb20gaW5kZXguY3NzOlxuICogLSBzdXJmYWNlLWRlZmF1bHQsIGxheW91dC1zZWN0aW9uLCBzY3JvbGwtc2VjdGlvbiAoY29udGFpbmVyKVxuICogLSBsYXlvdXQtY29udGFpbmVyIChjb250ZW50IHdyYXBwZXIpXG4gKiAtIHRpdGxlLWNhcmQsIHN1YnRpdGxlLWxnLCBkZXNjcmlwdGlvbi1sZywgZGVzY3JpcHRpb24gKHR5cG9ncmFwaHkpXG4gKiAtIHRleHQtbXV0ZWQgKHRleHQgY29sb3JpbmcpXG4gKiAtIGJ0biwgYnRuLWhlcml0YWdlLCBidG4tcHJpbWFyeSwgZXRjLiAoYnV0dG9uIHN5c3RlbSlcbiAqL1xuIiwiLyogRG9jc05hdmlnYXRpb24gQ29tcG9uZW50IFN0eWxlcyAqL1xuXG4vKiBEb2NzTmF2aWdhdGlvblNpZGViYXIgKi9cbi5kb2NzLW5hdmlnYXRpb24tc2lkZWJhciB7XG4gIC8qIEJhc2Ugc3R5bGVzIGFyZSBoYW5kbGVkIHZpYSBUYWlsd2luZCBjbGFzc2VzIGluIGNvbXBvbmVudCAqL1xufVxuXG4uZG9jcy1uYXZpZ2F0aW9uLXNpZGViYXItbW9iaWxlIHtcbiAgLyogTW9iaWxlLXNwZWNpZmljIHN0eWxlcyBoYW5kbGVkIHZpYSBUYWlsd2luZCAqL1xufVxuXG4uZG9jcy1uYXZpZ2F0aW9uLXNpZGViYXItb3BlbiB7XG4gIC8qIE9wZW4gc3RhdGUgaGFuZGxlZCB2aWEgVGFpbHdpbmQgdHJhbnNmb3JtIGNsYXNzZXMgKi9cbn1cblxuLmRvY3MtbmF2aWdhdGlvbi1zaWRlYmFyLWNsb3NlZCB7XG4gIC8qIENsb3NlZCBzdGF0ZSBoYW5kbGVkIHZpYSBUYWlsd2luZCB0cmFuc2Zvcm0gY2xhc3NlcyAqL1xufVxuXG4vKiBNb2JpbGUgTWVudSBUb2dnbGUgKi9cbi5kb2NzLW1vYmlsZS1tZW51LXRvZ2dsZSB7XG4gIC8qIFN0eWxlcyBoYW5kbGVkIHZpYSBUYWlsd2luZCBjbGFzc2VzICovXG59XG5cbi5kb2NzLW1vYmlsZS1iYWNrZHJvcCB7XG4gIC8qIEJhY2tkcm9wIHN0eWxlcyBoYW5kbGVkIHZpYSBUYWlsd2luZCBjbGFzc2VzICovXG59XG5cbi8qIERvY3NOYXZpZ2F0aW9uVGFiICovXG4uZG9jcy1uYXYtdGFiIHtcbiAgLyogQmFzZSB0YWIgc3R5bGVzIGhhbmRsZWQgdmlhIFRhaWx3aW5kIGNsYXNzZXMgaW4gY29tcG9uZW50ICovXG59XG5cbi5kb2NzLW5hdi10YWItYWN0aXZlIHtcbiAgLyogQWN0aXZlIHN0YXRlIHN0eWxlcyBoYW5kbGVkIHZpYSBUYWlsd2luZCBjbGFzc2VzICovXG59XG5cbi5kb2NzLW5hdi10YWItZXhwYW5kZWQge1xuICAvKiBFeHBhbmRlZCBzdGF0ZSBzdHlsZXMgaGFuZGxlZCB2aWEgVGFpbHdpbmQgY2xhc3NlcyAqL1xufVxuXG4uZG9jcy1uYXYtdGFiLWV4cGFuZGFibGUge1xuICAvKiBFeHBhbmRhYmxlIGluZGljYXRvciBzdHlsZXMgaGFuZGxlZCB2aWEgVGFpbHdpbmQgY2xhc3NlcyAqL1xufVxuXG4uZG9jcy1uYXYtdGFiLWhvdmVyIHtcbiAgLyogSG92ZXIgZWZmZWN0cyBoYW5kbGVkIHZpYSBUYWlsd2luZCBob3ZlcjogY2xhc3NlcyAqL1xufVxuXG4uZG9jcy1uYXYtdGFiLWZvY3VzZWQge1xuICAvKiBGb2N1cyBzdHlsZXMgaGFuZGxlZCB2aWEgVGFpbHdpbmQgZm9jdXM6IGNsYXNzZXMgKi9cbn1cblxuLmRvY3MtbmF2LXRhYi1jb250YWluZXIge1xuICAvKiBDb250YWluZXIgc3R5bGVzIGhhbmRsZWQgdmlhIFRhaWx3aW5kIGNsYXNzZXMgKi9cbn1cblxuLmRvY3MtbmF2LXRhYi1jb250ZW50IHtcbiAgLyogQ29udGVudCBhcmVhIHN0eWxlcyBoYW5kbGVkIHZpYSBUYWlsd2luZCBjbGFzc2VzICovXG59XG5cbi5kb2NzLW5hdi1yZXNvdXJjZS1ncm91cHMge1xuICAvKiBSZXNvdXJjZSBncm91cHMgY29udGFpbmVyIHN0eWxlcyBoYW5kbGVkIHZpYSBUYWlsd2luZCBjbGFzc2VzICovXG59XG5cbi8qIERvY3NOYXZpZ2F0aW9uUmVzb3VyY2VHcm91cCAqL1xuLmRvY3MtbmF2LXJlc291cmNlLWdyb3VwIHtcbiAgLyogQmFzZSByZXNvdXJjZSBncm91cCBzdHlsZXMgaGFuZGxlZCB2aWEgVGFpbHdpbmQgY2xhc3NlcyAqL1xufVxuXG4uZG9jcy1uYXYtcmVzb3VyY2UtZ3JvdXAtaGVhZGVyIHtcbiAgLyogSGVhZGVyIHN0eWxlcyBoYW5kbGVkIHZpYSBUYWlsd2luZCBjbGFzc2VzIGluIGNvbXBvbmVudCAqL1xufVxuXG4uZG9jcy1uYXYtcmVzb3VyY2UtZ3JvdXAtYWN0aXZlIHtcbiAgLyogQWN0aXZlIHN0YXRlIHN0eWxlcyBoYW5kbGVkIHZpYSBUYWlsd2luZCBjbGFzc2VzICovXG59XG5cbi5kb2NzLW5hdi1yZXNvdXJjZS1ncm91cC1leHBhbmRlZCB7XG4gIC8qIEV4cGFuZGVkIHN0YXRlIHN0eWxlcyBoYW5kbGVkIHZpYSBUYWlsd2luZCBjbGFzc2VzICovXG59XG5cbi5kb2NzLW5hdi1yZXNvdXJjZS1ncm91cC1jb2xsYXBzZWQge1xuICAvKiBDb2xsYXBzZWQgc3RhdGUgc3R5bGVzIGhhbmRsZWQgdmlhIFRhaWx3aW5kIGNsYXNzZXMgKi9cbn1cblxuLmRvY3MtbmF2LXJlc291cmNlLWdyb3VwLWV4cGFuZGFibGUge1xuICAvKiBFeHBhbmRhYmxlIGdyb3VwIHN0eWxlcyBoYW5kbGVkIHZpYSBUYWlsd2luZCBjbGFzc2VzICovXG59XG5cbi5kb2NzLW5hdi1yZXNvdXJjZS1ncm91cC1zaW5nbGUge1xuICAvKiBTaW5nbGUgcmVzb3VyY2UgKG5vbi1leHBhbmRhYmxlKSBzdHlsZXMgaGFuZGxlZCB2aWEgVGFpbHdpbmQgY2xhc3NlcyAqL1xufVxuXG4uZG9jcy1uYXYtcmVzb3VyY2UtZ3JvdXAtaG92ZXIge1xuICAvKiBIb3ZlciBlZmZlY3RzIGhhbmRsZWQgdmlhIFRhaWx3aW5kIGhvdmVyOiBjbGFzc2VzICovXG59XG5cbi5kb2NzLW5hdi1yZXNvdXJjZS1ncm91cC1mb2N1c2VkIHtcbiAgLyogRm9jdXMgc3R5bGVzIGhhbmRsZWQgdmlhIFRhaWx3aW5kIGZvY3VzOiBjbGFzc2VzICovXG59XG5cbi5kb2NzLW5hdi1zdWItcmVzb3VyY2VzIHtcbiAgLyogU3ViLXJlc291cmNlcyBjb250YWluZXIgc3R5bGVzIGhhbmRsZWQgdmlhIFRhaWx3aW5kIGNsYXNzZXMgKi9cbn1cblxuLyogRG9jc05hdmlnYXRpb25JdGVtICovXG4uZG9jcy1uYXYtaXRlbSB7XG4gIC8qIEJhc2UgaXRlbSBzdHlsZXMgaGFuZGxlZCB2aWEgVGFpbHdpbmQgY2xhc3NlcyBpbiBjb21wb25lbnQgKi9cbn1cblxuLmRvY3MtbmF2LWl0ZW0tYWN0aXZlIHtcbiAgLyogQWN0aXZlIHN0YXRlIHN0eWxlcyBoYW5kbGVkIHZpYSBUYWlsd2luZCBjbGFzc2VzICovXG59XG5cbi5kb2NzLW5hdi1pdGVtLWhvdmVyIHtcbiAgLyogSG92ZXIgZWZmZWN0cyBoYW5kbGVkIHZpYSBUYWlsd2luZCBob3ZlcjogY2xhc3NlcyAqL1xufVxuXG4uZG9jcy1uYXYtaXRlbS1mb2N1c2VkIHtcbiAgLyogRm9jdXMgc3R5bGVzIGhhbmRsZWQgdmlhIFRhaWx3aW5kIGZvY3VzOiBjbGFzc2VzICovXG59XG5cbi5kb2NzLW5hdi1pdGVtLWRpc2FibGVkIHtcbiAgLyogRGlzYWJsZWQgc3RhdGUgc3R5bGVzIGhhbmRsZWQgdmlhIFRhaWx3aW5kIGNsYXNzZXMgKi9cbn1cblxuLmRvY3MtbmF2LWl0ZW0tbWFpbiB7XG4gIC8qIE1haW4gbGV2ZWwgaXRlbSBzdHlsZXMgaGFuZGxlZCB2aWEgVGFpbHdpbmQgY2xhc3NlcyAqL1xufVxuXG4uZG9jcy1uYXYtaXRlbS1zdWItcmVzb3VyY2Uge1xuICAvKiBTdWItcmVzb3VyY2UgbGV2ZWwgaXRlbSBzdHlsZXMgaGFuZGxlZCB2aWEgVGFpbHdpbmQgY2xhc3NlcyAqL1xufVxuXG4uZG9jcy1uYXYtaXRlbS1pbnRyb2R1Y3Rpb24ge1xuICAvKiBJbnRyb2R1Y3Rpb24gc2VjdGlvbiBpdGVtIHN0eWxlcyBoYW5kbGVkIHZpYSBUYWlsd2luZCBjbGFzc2VzICovXG59XG5cbi5kb2NzLW5hdi1pdGVtLWF3cyB7XG4gIC8qIEFXUyByZXNvdXJjZSBpdGVtIHN0eWxlcyBoYW5kbGVkIHZpYSBUYWlsd2luZCBjbGFzc2VzICovXG59XG5cbi5kb2NzLW5hdi1pdGVtLWF6dXJlIHtcbiAgLyogQXp1cmUgcmVzb3VyY2UgaXRlbSBzdHlsZXMgaGFuZGxlZCB2aWEgVGFpbHdpbmQgY2xhc3NlcyAqL1xufVxuXG4uZG9jcy1uYXYtaXRlbS1leHRlcm5hbCB7XG4gIC8qIEV4dGVybmFsIGxpbmsgaXRlbSBzdHlsZXMgaGFuZGxlZCB2aWEgVGFpbHdpbmQgY2xhc3NlcyAqL1xufVxuXG4uZG9jcy1uYXYtaXRlbS1jbGlja2FibGUtb25seSB7XG4gIC8qIEVtcGhhc2l6ZXMgbm9uLWV4cGFuZGFibGUgbmF0dXJlIC0gaGFuZGxlZCB2aWEgVGFpbHdpbmQgY2xhc3NlcyAqL1xufVxuXG4vKiBSZXNwb25zaXZlIHV0aWxpdGllcyAqL1xuLm1vYmlsZS1oaWRkZW4ge1xuICAvKiBIaWRkZW4gb24gbW9iaWxlIC0gaGFuZGxlZCB2aWEgVGFpbHdpbmQgbGc6YmxvY2sgaGlkZGVuIGNsYXNzZXMgKi9cbn1cblxuLm1vYmlsZS1vcGVuIHtcbiAgLyogT3BlbiBvbiBtb2JpbGUgLSBoYW5kbGVkIHZpYSBUYWlsd2luZCBjbGFzc2VzICovXG59XG5cbi8qIEFuaW1hdGlvbiB1dGlsaXRpZXMgKi9cbi5yb3RhdGUtMTgwIHtcbiAgLyogSWNvbiByb3RhdGlvbiBoYW5kbGVkIHZpYSBUYWlsd2luZCB0cmFuc2Zvcm0gcm90YXRlLTE4MCAqL1xufVxuXG4vKiBGb2N1cyByaW5nIHV0aWxpdGllcyAqL1xuLmZvY3VzLXJpbmctb3JhbmdlIHtcbiAgLyogT3JhbmdlIGZvY3VzIHJpbmcgaGFuZGxlZCB2aWEgVGFpbHdpbmQgZm9jdXM6cmluZy1vcmFuZ2UtNTAwIGNsYXNzZXMgKi9cbn1cblxuLyogQWRkaXRpb25hbCB1dGlsaXR5IGNsYXNzZXMgZm9yIGNvbnNpc3RlbnQgc3BhY2luZyBhbmQgdGhlbWluZyAqL1xuLmRvY3MtbmF2LXNwYWNpbmctc20ge1xuICBAYXBwbHkgcHgtMiBweS0xO1xufVxuXG4uZG9jcy1uYXYtc3BhY2luZy1tZCB7XG4gIEBhcHBseSBweC0zIHB5LTI7XG59XG5cbi5kb2NzLW5hdi1zcGFjaW5nLWxnIHtcbiAgQGFwcGx5IHB4LTQgcHktMztcbn1cblxuLmRvY3MtbmF2LXRleHQtcHJpbWFyeSB7XG4gIEBhcHBseSB0ZXh0LXNsYXRlLTkwMCBkYXJrOnRleHQtd2hpdGU7XG59XG5cbi5kb2NzLW5hdi10ZXh0LXNlY29uZGFyeSB7XG4gIEBhcHBseSB0ZXh0LXNsYXRlLTYwMCBkYXJrOnRleHQtc2xhdGUtNDAwO1xufVxuXG4uZG9jcy1uYXYtdGV4dC1hY3RpdmUge1xuICBAYXBwbHkgdGV4dC1vcmFuZ2UtNjAwIGRhcms6dGV4dC1vcmFuZ2UtNDAwO1xufVxuXG4uZG9jcy1uYXYtYmctYWN0aXZlIHtcbiAgQGFwcGx5IGJnLW9yYW5nZS01MCBkYXJrOmJnLW9yYW5nZS05MDAvMjA7XG59XG5cbi5kb2NzLW5hdi1iZy1ob3ZlciB7XG4gIEBhcHBseSBob3ZlcjpiZy1zdG9uZS01MCBkYXJrOmhvdmVyOmJnLXNsYXRlLTgwMDtcbn1cblxuLmRvY3MtbmF2LWJvcmRlci1hY3RpdmUge1xuICBAYXBwbHkgYm9yZGVyLXItMiBib3JkZXItb3JhbmdlLTYwMDtcbn1cblxuLmRvY3MtbmF2LXRyYW5zaXRpb24ge1xuICBAYXBwbHkgdHJhbnNpdGlvbi1jb2xvcnMgZHVyYXRpb24tMjAwO1xufVxuXG4vKiBDdXN0b20gYW5pbWF0aW9ucyBmb3Igc21vb3RoIGV4cGFuZC9jb2xsYXBzZSAqL1xuQGtleWZyYW1lcyBkb2NzLW5hdi1leHBhbmQge1xuICBmcm9tIHtcbiAgICBtYXgtaGVpZ2h0OiAwO1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgdG8ge1xuICAgIG1heC1oZWlnaHQ6IDUwMHB4O1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBkb2NzLW5hdi1jb2xsYXBzZSB7XG4gIGZyb20ge1xuICAgIG1heC1oZWlnaHQ6IDUwMHB4O1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgdG8ge1xuICAgIG1heC1oZWlnaHQ6IDA7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxufVxuXG4uZG9jcy1uYXYtZXhwYW5kIHtcbiAgYW5pbWF0aW9uOiBkb2NzLW5hdi1leHBhbmQgMC4zcyBlYXNlLW91dDtcbn1cblxuLmRvY3MtbmF2LWNvbGxhcHNlIHtcbiAgYW5pbWF0aW9uOiBkb2NzLW5hdi1jb2xsYXBzZSAwLjNzIGVhc2Utb3V0O1xufVxuXG4vKiBIaWdoIGNvbnRyYXN0IG1vZGUgc3VwcG9ydCAqL1xuQG1lZGlhIChwcmVmZXJzLWNvbnRyYXN0OiBoaWdoKSB7XG4gIC5kb2NzLW5hdi1pdGVtLWFjdGl2ZSB7XG4gICAgQGFwcGx5IGJvcmRlci0yIGJvcmRlci1vcmFuZ2UtNjAwO1xuICB9XG4gIFxuICAuZG9jcy1uYXYtcmVzb3VyY2UtZ3JvdXAtYWN0aXZlIHtcbiAgICBAYXBwbHkgYm9yZGVyLTIgYm9yZGVyLW9yYW5nZS02MDA7XG4gIH1cbiAgXG4gIC5kb2NzLW5hdi10YWItYWN0aXZlIHtcbiAgICBAYXBwbHkgYm9yZGVyLWItMiBib3JkZXItb3JhbmdlLTYwMDtcbiAgfVxufVxuXG4vKiBSZWR1Y2VkIG1vdGlvbiBzdXBwb3J0ICovXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAuZG9jcy1uYXYtdHJhbnNpdGlvbixcbiAgLmRvY3MtbmF2aWdhdGlvbi1zaWRlYmFyLFxuICAucm90YXRlLTE4MCB7XG4gICAgdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICAgIGFuaW1hdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbi8qIFByaW50IHN0eWxlcyAqL1xuQG1lZGlhIHByaW50IHtcbiAgLmRvY3MtbmF2aWdhdGlvbi1zaWRlYmFyIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIFxuICAuZG9jcy1tb2JpbGUtbWVudS10b2dnbGUge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgXG4gIC5kb2NzLW1vYmlsZS1iYWNrZHJvcCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufSIsIi8qIERvY3VtZW50YXRpb24gUGFnZSBTdHlsZXMgLSBGb2xsb3dpbmcgYnJhbmQgZ3VpZGVsaW5lcyAqL1xuXG4vKiBMYXlvdXQgRm91bmRhdGlvbiAqL1xuLmRvY3MtbGF5b3V0IHtcbiAgbWluLWhlaWdodDogMTAwdmg7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXN0b25lLTUwKTtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtZmFtaWx5LWJhc2UpO1xufVxuXG4vKiBEb2N1bWVudGF0aW9uIEhlYWRlciAqL1xuLmRvY3MtaGVhZGVyIHtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1jb2xvci1zdG9uZS0yMDApO1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDA7XG4gIHotaW5kZXg6IDQwO1xufVxuXG4uaGVhZGVyLWNvbnRhaW5lciB7XG4gIG1heC13aWR0aDogMTIwMHB4O1xuICBtYXJnaW46IDAgYXV0bztcbiAgcGFkZGluZzogMCAxcmVtO1xufVxuXG4uaGVhZGVyLWNvbnRlbnQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGhlaWdodDogNHJlbTtcbn1cblxuLmhlYWRlci1sZWZ0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAwLjc1cmVtO1xufVxuXG4ubW9iaWxlLW1lbnUtdG9nZ2xlIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgcGFkZGluZzogMC41cmVtO1xuICBib3JkZXItcmFkaXVzOiAwLjVyZW07XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IG5vbmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzO1xufVxuXG4ubW9iaWxlLW1lbnUtdG9nZ2xlOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3Itc3RvbmUtMTAwKTtcbn1cblxuLm1lbnUtaWNvbiB7XG4gIHdpZHRoOiAxLjI1cmVtO1xuICBoZWlnaHQ6IDEuMjVyZW07XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1zbGF0ZS02MDApO1xufVxuXG4uYnJhbmQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDAuNzVyZW07XG59XG5cbi5icmFuZC1pY29uIHtcbiAgd2lkdGg6IDJyZW07XG4gIGhlaWdodDogMnJlbTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWhlcml0YWdlKTtcbn1cblxuLmJyYW5kIGgxIHtcbiAgZm9udC1zaXplOiAxLjI1cmVtO1xuICBmb250LXdlaWdodDogNzAwO1xuICBjb2xvcjogdmFyKC0tY29sb3Itc2xhdGUtOTAwKTtcbiAgbWFyZ2luOiAwO1xufVxuXG4udmVyc2lvbiB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1zbGF0ZS02MDApO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1zdG9uZS0xMDApO1xuICBwYWRkaW5nOiAwLjI1cmVtIDAuNzVyZW07XG4gIGJvcmRlci1yYWRpdXM6IDFyZW07XG59XG5cbi8qIERvY3VtZW50YXRpb24gQ29udGFpbmVyICovXG4uZG9jcy1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi8qIE5hdmlnYXRpb24gU2lkZWJhciAqL1xuLmRvY3Mtc2lkZWJhciB7XG4gIHdpZHRoOiAxNnJlbTtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLWNvbG9yLXN0b25lLTIwMCk7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiA0cmVtO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIHotaW5kZXg6IDMwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2UtaW4tb3V0O1xufVxuXG4uc2lkZWJhci1oZWFkZXIge1xuICBkaXNwbGF5OiBub25lO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIHBhZGRpbmc6IDFyZW07XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1jb2xvci1zdG9uZS0yMDApO1xufVxuXG4uc2lkZWJhci1oZWFkZXIgc3BhbiB7XG4gIGZvbnQtc2l6ZTogMS4xMjVyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1zbGF0ZS05MDApO1xufVxuXG4uc2lkZWJhci1oZWFkZXIgYnV0dG9uIHtcbiAgcGFkZGluZzogMC41cmVtO1xuICBib3JkZXItcmFkaXVzOiAwLjVyZW07XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IG5vbmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXNsYXRlLTYwMCk7XG59XG5cbi5zaWRlYmFyLWhlYWRlciBidXR0b246aG92ZXIge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1zdG9uZS0xMDApO1xufVxuXG4uc2lkZWJhci1jb250ZW50IHtcbiAgcGFkZGluZzogMXJlbTtcbiAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNHJlbSk7XG4gIG92ZXJmbG93LXk6IGF1dG87XG59XG5cbi8qIERvY3VtZW50YXRpb24gU2VhcmNoICovXG4uZG9jLXNlYXJjaCB7XG4gIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbn1cblxuLnNlYXJjaC1pbnB1dCB7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAwLjc1cmVtIDFyZW07XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLXN0b25lLTMwMCk7XG4gIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1zbGF0ZS05MDApO1xufVxuXG4uc2VhcmNoLWlucHV0OmZvY3VzIHtcbiAgb3V0bGluZTogbm9uZTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoNzEsIDg1LCAxMDUsIDAuMSk7XG59XG5cbi5zZWFyY2gtaW5wdXQ6OnBsYWNlaG9sZGVyIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXNsYXRlLTQwMCk7XG59XG5cbi8qIE5hdmlnYXRpb24gR3JvdXBzICovXG4ubmF2LWdyb3VwIHtcbiAgbWFyZ2luLWJvdHRvbTogMnJlbTtcbn1cblxuLm5hdi1ncm91cC10aXRsZSB7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXNsYXRlLTUwMCk7XG4gIG1hcmdpbi1ib3R0b206IDAuNzVyZW07XG59XG5cbi5uYXYtbGlzdCB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbn1cblxuLm5hdi1saXN0IGxpIHtcbiAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbTtcbn1cblxuLm5hdi1pdGVtIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAwLjc1cmVtIDFyZW07XG4gIGJvcmRlci1yYWRpdXM6IDAuMzc1cmVtO1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBjb2xvcjogdmFyKC0tY29sb3Itc2xhdGUtNzAwKTtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4ycztcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG4ubmF2LWl0ZW06aG92ZXIge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1zdG9uZS0xMDApO1xuICBjb2xvcjogdmFyKC0tY29sb3Itc2xhdGUtOTAwKTtcbn1cblxuLm5hdi1pdGVtLWFjdGl2ZSB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWhlcml0YWdlLWxpZ2h0KTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWhlcml0YWdlLWRhcmspO1xuICBmb250LXdlaWdodDogNTAwO1xufVxuXG4vKiBNYWluIENvbnRlbnQgQXJlYSAqL1xuLmRvY3MtY29udGVudCB7XG4gIGZsZXg6IDE7XG4gIG1hcmdpbi1sZWZ0OiAxNnJlbTtcbiAgcGFkZGluZzogMnJlbTtcbiAgbWF4LXdpZHRoOiAxMDAlO1xufVxuXG4vKiBEb2N1bWVudGF0aW9uIEFydGljbGUgKi9cbi5kb2MtYXJ0aWNsZSB7XG4gIG1heC13aWR0aDogNDhyZW07XG4gIG1hcmdpbjogMCBhdXRvO1xufVxuXG4vKiBEb2N1bWVudGF0aW9uIEhlYWRlciAqL1xuLmRvYy1oZWFkZXIge1xuICBtYXJnaW4tYm90dG9tOiAzcmVtO1xuICBwYWRkaW5nLWJvdHRvbTogMnJlbTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWNvbG9yLXN0b25lLTIwMCk7XG59XG5cbi8qIFR5cG9ncmFwaHkgLSBGb2xsb3dpbmcgYnJhbmQgZ3VpZGVsaW5lcyAqL1xuLnRpdGxlLWRvYyB7XG4gIGZvbnQtc2l6ZTogY2xhbXAoMS43NXJlbSwgM3Z3LCAyLjVyZW0pO1xuICBmb250LXdlaWdodDogNzAwO1xuICBjb2xvcjogdmFyKC0tY29sb3Itc2xhdGUtOTAwKTtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMjtcbn1cblxuLnRpdGxlLXNlY3Rpb24ge1xuICBmb250LXNpemU6IGNsYW1wKDEuNXJlbSwgMi41dncsIDJyZW0pO1xuICBmb250LXdlaWdodDogNjAwO1xuICBjb2xvcjogdmFyKC0tY29sb3Itc2xhdGUtOTAwKTtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgbWFyZ2luLXRvcDogM3JlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMztcbn1cblxuLmRlc2NyaXB0aW9uIHtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBsaW5lLWhlaWdodDogMS43O1xuICBjb2xvcjogdmFyKC0tY29sb3Itc2xhdGUtNjAwKTtcbiAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xufVxuXG4vKiBUYWJsZSBvZiBDb250ZW50cyAqL1xuLmRvYy10b2Mge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1zdG9uZS01MCk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLXN0b25lLTIwMCk7XG4gIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcbiAgcGFkZGluZzogMS41cmVtO1xuICBtYXJnaW46IDJyZW0gMDtcbn1cblxuLmRvYy10b2MgaDIge1xuICBmb250LXNpemU6IDEuMTI1cmVtO1xuICBmb250LXdlaWdodDogNjAwO1xuICBjb2xvcjogdmFyKC0tY29sb3Itc2xhdGUtOTAwKTtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbn1cblxuLmRvYy10b2MgdWwsXG4uZG9jLXRvYyBvbCB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZy1sZWZ0OiAxLjVyZW07XG59XG5cbi5kb2MtdG9jIGxpIHtcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xufVxuXG4uZG9jLXRvYyBhIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG5cbi5kb2MtdG9jIGE6aG92ZXIge1xuICBjb2xvcjogdmFyKC0tY29sb3ItaGVyaXRhZ2UpO1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cblxuLyogRG9jdW1lbnRhdGlvbiBTZWN0aW9ucyAqL1xuLmRvYy1zZWN0aW9uIHtcbiAgbWFyZ2luLWJvdHRvbTogM3JlbTtcbn1cblxuLyogU3RlcCBOdW1iZXJzICovXG4uc3RlcC1udW1iZXIge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHdpZHRoOiAycmVtO1xuICBoZWlnaHQ6IDJyZW07XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWhlcml0YWdlKTtcbiAgY29sb3I6IHdoaXRlO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIG1hcmdpbi1yaWdodDogMC43NXJlbTtcbn1cblxuLyogUmVxdWlyZW1lbnRzIExpc3QgKi9cbi5yZXF1aXJlbWVudHMtbGlzdCB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbn1cblxuLnJlcXVpcmVtZW50LWl0ZW0ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgZ2FwOiAwLjc1cmVtO1xuICBwYWRkaW5nOiAxcmVtO1xuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3Itc3RvbmUtMjAwKTtcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xuICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtO1xufVxuXG4ucmVxdWlyZW1lbnQtaWNvbiB7XG4gIHdpZHRoOiAxLjI1cmVtO1xuICBoZWlnaHQ6IDEuMjVyZW07XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmVlbi01MDApO1xuICBmbGV4LXNocmluazogMDtcbiAgbWFyZ2luLXRvcDogMC4xMjVyZW07XG59XG5cbi8qIFN0ZXAgTGlzdHMgKi9cbi5zdGVwLWxpc3Qge1xuICBsaXN0LXN0eWxlOiBkZWNpbWFsO1xuICBwYWRkaW5nLWxlZnQ6IDEuNXJlbTtcbiAgbWFyZ2luOiAxcmVtIDA7XG59XG5cbi5zdGVwLWxpc3QgbGkge1xuICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtO1xuICBjb2xvcjogdmFyKC0tY29sb3Itc2xhdGUtNzAwKTtcbiAgbGluZS1oZWlnaHQ6IDEuNjtcbn1cblxuLyogQ29kZSBCbG9ja3MgKi9cbi5kb2MtY29kZS1ibG9jayB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXNsYXRlLTkwMCk7XG4gIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07XG4gIG1hcmdpbjogMS41cmVtIDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLXNsYXRlLTcwMCk7XG59XG5cbi5jb2RlLWhlYWRlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgcGFkZGluZzogMXJlbSAxLjVyZW07XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXNsYXRlLTgwMCk7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1jb2xvci1zbGF0ZS03MDApO1xufVxuXG4uY29kZS10aXRsZSB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1zbGF0ZS0yMDApO1xufVxuXG4uY29weS1idXR0b24ge1xuICBwYWRkaW5nOiAwLjVyZW0gMXJlbTtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItcmFkaXVzOiAwLjM3NXJlbTtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xuICBmb250LXdlaWdodDogNTAwO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4ycztcbn1cblxuLmNvcHktYnV0dG9uOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcHJpbWFyeS1kYXJrKTtcbn1cblxuLmNvZGUtY29udGVudCB7XG4gIHBhZGRpbmc6IDEuNXJlbTtcbiAgbWFyZ2luOiAwO1xuICBvdmVyZmxvdy14OiBhdXRvO1xufVxuXG4uY29kZS1jb250ZW50IGNvZGUge1xuICBmb250LWZhbWlseTogJ01vbmFjbycsICdDb3VyaWVyIE5ldycsIG1vbm9zcGFjZTtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyZWVuLTQwMCk7XG4gIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbn1cblxuLyogQ2FsbG91dCBCb3hlcyAtIEZvbGxvd2luZyBicmFuZCBndWlkZWxpbmVzICovXG4uY2FsbG91dC1pbmZvLFxuLmNhbGxvdXQtd2FybmluZyxcbi5jYWxsb3V0LWVycm9yLFxuLmNhbGxvdXQtc3VjY2VzcyB7XG4gIHBhZGRpbmc6IDEuNXJlbTtcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xuICBtYXJnaW46IDEuNXJlbSAwO1xuICBib3JkZXItbGVmdDogNHB4IHNvbGlkO1xufVxuXG4uY2FsbG91dC1pbmZvIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmx1ZS01MCk7XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiB2YXIoLS1jb2xvci1ibHVlLTUwMCk7XG59XG5cbi5jYWxsb3V0LWluZm8gaDMge1xuICBjb2xvcjogdmFyKC0tY29sb3ItYmx1ZS05MDApO1xuICBmb250LXNpemU6IDEuMTI1cmVtO1xuICBmb250LXdlaWdodDogNjAwO1xuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG59XG5cbi5jYWxsb3V0LWluZm8gcCB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ibHVlLTgwMCk7XG4gIG1hcmdpbjogMDtcbn1cblxuLmNhbGxvdXQtd2FybmluZyB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXllbGxvdy01MCk7XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiB2YXIoLS1jb2xvci15ZWxsb3ctNTAwKTtcbn1cblxuLmNhbGxvdXQtd2FybmluZyBoMyB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci15ZWxsb3ctOTAwKTtcbiAgZm9udC1zaXplOiAxLjEyNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xufVxuXG4uY2FsbG91dC13YXJuaW5nIHAge1xuICBjb2xvcjogdmFyKC0tY29sb3IteWVsbG93LTgwMCk7XG4gIG1hcmdpbjogMDtcbn1cblxuLyogUHJvdmlkZXIgU3BlY2lmaWNhdGlvbnMgKi9cbi5wcm92aWRlci1zcGVjcyB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdhcDogMnJlbTtcbn1cblxuLnNwZWMtdGFibGUge1xuICB3aWR0aDogMTAwJTtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3Itc3RvbmUtMjAwKTtcbn1cblxuLnNwZWMtdGFibGUgdGgge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1zdG9uZS01MCk7XG4gIHBhZGRpbmc6IDAuNzVyZW0gMXJlbTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXNsYXRlLTkwMCk7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1jb2xvci1zdG9uZS0yMDApO1xufVxuXG4uc3BlYy10YWJsZSB0ZCB7XG4gIHBhZGRpbmc6IDAuNzVyZW0gMXJlbTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWNvbG9yLXN0b25lLTIwMCk7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1zbGF0ZS03MDApO1xufVxuXG4uc3BlYy10YWJsZSB0ZDpmaXJzdC1jaGlsZCB7XG4gIGZvbnQtZmFtaWx5OiAnTW9uYWNvJywgJ0NvdXJpZXIgTmV3JywgbW9ub3NwYWNlO1xuICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbi5zcGVjLXRhYmxlIHRkOm50aC1jaGlsZCgyKSB7XG4gIGZvbnQtZmFtaWx5OiAnTW9uYWNvJywgJ0NvdXJpZXIgTmV3JywgbW9ub3NwYWNlO1xuICBjb2xvcjogdmFyKC0tY29sb3Itc2xhdGUtNjAwKTtcbn1cblxuLyogUmVzb3VyY2UgU3BlY2lmaWNhdGlvbnMgKi9cbi5yZXNvdXJjZS1zcGVjIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ2FwOiAycmVtO1xufVxuXG4ucGFyYW0tbGlzdCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdhcDogMXJlbTtcbn1cblxuLnBhcmFtLWl0ZW0ge1xuICBwYWRkaW5nOiAxcmVtO1xuICBib3JkZXItcmFkaXVzOiAwLjVyZW07XG4gIGJvcmRlcjogMXB4IHNvbGlkO1xufVxuXG4ucGFyYW0taXRlbS5pbnB1dCB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJsdWUtNTApO1xuICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWJsdWUtMjAwKTtcbn1cblxuLnBhcmFtLWl0ZW0ub3V0cHV0IHtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItZ3JlZW4tNTApO1xuICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWdyZWVuLTIwMCk7XG59XG5cbi5wYXJhbS1pdGVtIGNvZGUge1xuICBmb250LWZhbWlseTogJ01vbmFjbycsICdDb3VyaWVyIE5ldycsIG1vbm9zcGFjZTtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbn1cblxuLnBhcmFtLWl0ZW0uaW5wdXQgY29kZSB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ibHVlLTgwMCk7XG59XG5cbi5wYXJhbS1pdGVtLm91dHB1dCBjb2RlIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyZWVuLTgwMCk7XG59XG5cbi5wYXJhbS1pdGVtIHAge1xuICBtYXJnaW46IDA7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG59XG5cbi5wYXJhbS1pdGVtLmlucHV0IHAge1xuICBjb2xvcjogdmFyKC0tY29sb3ItYmx1ZS03MDApO1xufVxuXG4ucGFyYW0taXRlbS5vdXRwdXQgcCB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmVlbi03MDApO1xufVxuXG4vKiBNb2JpbGUgU3R5bGVzICovXG5AbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gIC5kb2NzLXNpZGViYXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XG4gIH1cblxuICAuZG9jcy1zaWRlYmFyLm1vYmlsZS12aXNpYmxlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gIH1cblxuICAubW9iaWxlLW1lbnUtdG9nZ2xlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gIC5zaWRlYmFyLWhlYWRlci5tb2JpbGUtb25seSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgfVxuXG4gIC5kb2NzLWNvbnRlbnQge1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIHBhZGRpbmc6IDFyZW07XG4gIH1cblxuICAuc2lkZWJhci1vdmVybGF5IHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgaW5zZXQ6IDA7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjUpO1xuICAgIHotaW5kZXg6IDI1O1xuICB9XG5cbiAgLyogTW9iaWxlLW9wdGltaXplZCB0eXBvZ3JhcGh5ICovXG4gIC50aXRsZS1kb2Mge1xuICAgIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgfVxuXG4gIC50aXRsZS1zZWN0aW9uIHtcbiAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICBtYXJnaW4tdG9wOiAycmVtO1xuICB9XG5cbiAgLmRvYy10b2Mge1xuICAgIHBhZGRpbmc6IDFyZW07XG4gIH1cblxuICAucmVxdWlyZW1lbnQtaXRlbSB7XG4gICAgcGFkZGluZzogMC43NXJlbTtcbiAgfVxuXG4gIC5jb2RlLWhlYWRlciB7XG4gICAgcGFkZGluZzogMC43NXJlbSAxcmVtO1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgZ2FwOiAwLjVyZW07XG4gIH1cblxuICAuY29kZS1jb250ZW50IHtcbiAgICBwYWRkaW5nOiAxcmVtO1xuICB9XG5cbiAgLnBhcmFtLWxpc3Qge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICB9XG5cbiAgLnByb3ZpZGVyLXNwZWNzIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgfVxufVxuXG4vKiBEYXJrIG1vZGUgc3VwcG9ydCAoaWYgbmVlZGVkIGxhdGVyKSAqL1xuQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xuICAuZG9jcy1sYXlvdXQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXNsYXRlLTkwMCk7XG4gIH1cbiAgXG4gIC5kb2NzLWhlYWRlciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3Itc2xhdGUtODAwKTtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiB2YXIoLS1jb2xvci1zbGF0ZS03MDApO1xuICB9XG4gIFxuICAuYnJhbmQgaDEge1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgfVxuICBcbiAgLmRvY3Mtc2lkZWJhciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3Itc2xhdGUtODAwKTtcbiAgICBib3JkZXItcmlnaHQtY29sb3I6IHZhcigtLWNvbG9yLXNsYXRlLTcwMCk7XG4gIH1cbn1cblxuLyogVXRpbGl0aWVzICovXG4ubW9iaWxlLWhpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiAxMDI0cHgpIHtcbiAgLm1vYmlsZS1oaWRkZW4ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG4gIFxuICAubW9iaWxlLW9ubHkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG59XG5cbi5tb2JpbGUtb25seSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59IiwiLyoqXG4gKiBGQVEgQ29tcG9uZW50IFN0eWxlcyAtIENvbXBvbmVudCBFbmhhbmNlbWVudCBMYXllclxuICogXG4gKiBJTVBPUlRBTlQ6IFRoaXMgZmlsZSBjb250YWlucyBjb21wb25lbnQtc3BlY2lmaWMgZW5oYW5jZW1lbnRzIG9ubHkuXG4gKiBHbG9iYWwgdHlwb2dyYXBoeSwgY29sb3JzLCBhbmQgc3BhY2luZyBhcmUgZGVmaW5lZCBpbiBzcmMvaW5kZXguY3NzXG4gKiBcbiAqIFRocmVlLUxheWVyIENTUyBBcmNoaXRlY3R1cmU6XG4gKiAxLiBCcmFuZCBGb3VuZGF0aW9uIChpbmRleC5jc3MpIC0gR2xvYmFsIHZhcmlhYmxlcyBhbmQgdHlwb2dyYXBoeVxuICogMi4gQ29tcG9uZW50IEVuaGFuY2VtZW50ICh0aGlzIGZpbGUpIC0gQ29tcG9uZW50LXNwZWNpZmljIHN0eWxlc1xuICogMy4gUGFnZSBDdXN0b21pemF0aW9uICh2aWEgc3R5bGVzIHByb3ApIC0gUGFnZS1sZXZlbCBvdmVycmlkZXNcbiAqL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEZBUSBJVEVNIC0gTUFJTiBDT05UQUlORVJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEZBUSBJdGVtIENvbnRhaW5lclxuICogLSBCYXNlIGNvbnRhaW5lciBmb3IgRkFRIGl0ZW1zXG4gKiAtIFJldHVybnMgZGl2LCBub3Qgc2VjdGlvbiAoU2VjdGlvbiBQYXR0ZXJuIGNvbXBsaWFuY2UpXG4gKiAtIFN1cHBvcnRzIHZhcmlhbnRzIChwcmltYXJ5LCBzZWNvbmRhcnksIGhlcml0YWdlKVxuICovXG4uZmFxLWl0ZW0ge1xuICAvKiBDb21wb25lbnQgc3RydWN0dXJlICovXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAxMDAlO1xuICBcbiAgLyogRVhUUkVNRSB3aGl0ZXNwYWNlIC0gMzAlIG1vcmUgc3BhY2luZyAqL1xuICBtYXJnaW4tYm90dG9tOiBjYWxjKHZhcigtLXNwYWNlLTYpICogMS4zKTsgLyogfjMxcHggd2l0aCBleHRyZW1lIHNwYWNpbmcgKi9cbiAgXG4gIC8qIEJPUkRFUkxFU1MgZGVzaWduIC0gTk8gYm9yZGVycyAqL1xuICBib3JkZXI6IDA7IC8qIENSSVRJQ0FMOiBCb3JkZXJsZXNzIGRlc2lnbiBwZXIgc3R5bGluZyBzdGFuZGFyZCAqL1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICBcbiAgLyogQmFja2dyb3VuZCBhbmQgY29sb3JzICovXG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1jYXJkKSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkpO1xuICBcbiAgLyogRWxldmF0aW9uIHRocm91Z2ggc2hhZG93cyBpbnN0ZWFkIG9mIGJvcmRlcnMgKi9cbiAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4wNSk7IC8qIFN1YnRsZSBiYXNlIGVsZXZhdGlvbiAqL1xuICBcbiAgLyogU21vb3RoIHRyYW5zaXRpb25zICovXG4gIHRyYW5zaXRpb246IFxuICAgIHRyYW5zZm9ybSB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpLFxuICAgIGJveC1zaGFkb3cgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2Utc21vb3RoKTtcbiAgXG4gIC8qIFBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiAqL1xuICBjb250YWluOiBsYXlvdXQgc3R5bGU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG59XG5cbi8qIEhvdmVyIHN0YXRlIC0gZWxldmF0aW9uIGNoYW5nZSwgTk8gYm9yZGVyIGNoYW5nZXMgKi9cbi5mYXEtaXRlbTpob3ZlciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtM3B4KTtcbiAgYm94LXNoYWRvdzogMCA4cHggMjVweCByZ2JhKDAsIDAsIDAsIDAuMTIpOyAvKiBJbmNyZWFzZWQgZWxldmF0aW9uICovXG4gIGJvcmRlcjogMDsgLyogTWFpbnRhaW4gYm9yZGVybGVzcyBkZXNpZ24gKi9cbn1cblxuLyogSGVyaXRhZ2UgdmFyaWFudCAtIDEwJSBydWxlIGNvbXBsaWFuY2Ugd2l0aCBCT1JERVJMRVNTIGRlc2lnbiAqL1xuLmZhcS1pdGVtLWhlcml0YWdlIHtcbiAgLyogSGVyaXRhZ2UgYWNjZW50IHVzaW5nIHNoYWRvdyBpbnN0ZWFkIG9mIGJvcmRlciAqL1xuICBib3JkZXI6IDA7IC8qIE5vIGJvcmRlcnMgKi9cbiAgYm94LXNoYWRvdzogXG4gICAgaW5zZXQgNHB4IDAgMCByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSksIC8qIExlZnQgYWNjZW50ICovXG4gICAgMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4wNSk7IC8qIEJhc2UgZWxldmF0aW9uICovXG4gIHBhZGRpbmctbGVmdDogY2FsYygodmFyKC0tc3BhY2UtNCkgKyB2YXIoLS1zcGFjZS0yKSkgKiAxLjMpOyAvKiBFeHRyYSBwYWRkaW5nIGZvciBhY2NlbnQgd2l0aCBleHRyZW1lIHNwYWNpbmcgKi9cbiAgXG4gIC8qIDMwJSBleHRyYSBzcGFjaW5nIGZvciBoZXJpdGFnZSBpdGVtcyAqL1xuICBtYXJnaW46IGNhbGModmFyKC0tc3BhY2UtOCkgKiAxLjMpIDA7IC8qIEV2ZW4gbW9yZSBnZW5lcm91cyBmb3IgaGVyaXRhZ2UgKi9cbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpIC8gMC4wMik7IC8qIFZlcnkgc3VidGxlIHRpbnQgKi9cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBGQVEgQ09OVEVOVFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5mYXEtaXRlbS1jb250ZW50IHtcbiAgLyogQ29udGVudCBjb250YWluZXIgd2l0aCBFWFRSRU1FIHdoaXRlc3BhY2UgKi9cbiAgcGFkZGluZzogY2FsYyh2YXIoLS1zcGFjZS02KSAqIDEuMyk7IC8qIH4zMXB4IHdpdGggZXh0cmVtZSBzcGFjaW5nICovXG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgRkFRIFFVRVNUSU9OIEJVVFRPTlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogRkFRIFF1ZXN0aW9uIEJ1dHRvblxuICogLSBJbnRlcmFjdGl2ZSBidXR0b24gZm9yIHByb2dyZXNzaXZlIGVuaGFuY2VtZW50XG4gKiAtIFRyYW5zcGFyZW50IGJ1dHRvbiB3aXRoIGZsZXggbGF5b3V0XG4gKi9cbi5mYXEtcXVlc3Rpb24tYnV0dG9uIHtcbiAgLyogTGF5b3V0ICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogdmFyKC0tc3BhY2UtMyk7XG4gIHdpZHRoOiAxMDAlO1xuICBcbiAgLyogQnV0dG9uIHJlc2V0ICovXG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIFxuICAvKiBTcGFjaW5nIHdpdGggZXh0cmVtZSB3aGl0ZXNwYWNlICovXG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogY2FsYyh2YXIoLS1zcGFjZS0yKSAqIDEuMykgMDsgLyogQWRkIHZlcnRpY2FsIHBhZGRpbmcgZm9yIGJldHRlciB0b3VjaCB0YXJnZXQgKi9cbiAgXG4gIC8qIEVuc3VyZSBtaW5pbXVtIHRvdWNoIHRhcmdldCAqL1xuICBtaW4taGVpZ2h0OiA0OHB4O1xuICBcbiAgLyogSW50ZXJhY3RpdmUgKi9cbiAgY3Vyc29yOiBwb2ludGVyO1xuICBcbiAgLyogVGV4dCBhbGlnbm1lbnQgKi9cbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgXG4gIC8qIEluaGVyaXQgZm9udCAqL1xuICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xuICBjb2xvcjogaW5oZXJpdDtcbiAgXG4gIC8qIFNtb290aCB0cmFuc2l0aW9ucyAqL1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNlLXNtb290aCk7XG59XG5cbi8qIEhvdmVyIHN0YXRlICovXG4uZmFxLXF1ZXN0aW9uLWJ1dHRvbjpob3ZlciB7XG4gIG9wYWNpdHk6IDAuOTtcbn1cblxuLyogRm9jdXMgc3RhdGUgZm9yIGFjY2Vzc2liaWxpdHkgKi9cbi5mYXEtcXVlc3Rpb24tYnV0dG9uOmZvY3VzLXZpc2libGUge1xuICBvdXRsaW5lOiBub25lO1xuICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSh2YXIoLS1jb2xvci1mb2N1cykgLyAwLjUpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xufVxuXG4vKipcbiAqIEZBUSBRdWVzdGlvbiBUZXh0XG4gKiAtIFVzZXMgZ2xvYmFsIHRpdGxlLWNhcmQgY2xhc3MgZm9yIHR5cG9ncmFwaHlcbiAqIC0gT3ZlcnJpZGVzIG1hcmdpbiBmb3IgcHJvcGVyIGFsaWdubWVudFxuICovXG4uZmFxLXF1ZXN0aW9uLXRleHQge1xuICAvKiBFbnN1cmUgdGV4dCBncm93cyB0byBmaWxsIHNwYWNlICovXG4gIGZsZXg6IDE7XG4gIFxuICAvKiBPdmVycmlkZSB0aXRsZS1jYXJkIG1hcmdpbiBmb3IgYWxpZ25tZW50IHdpdGhpbiBidXR0b24gKi9cbiAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDtcbiAgXG4gIC8qIFR5cG9ncmFwaHkgaGFuZGxlZCBieSB0aXRsZS1jYXJkIGNsYXNzICovXG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgRkFRIElDT05cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uZmFxLWljb24ge1xuICAvKiBJY29uIHBvc2l0aW9uaW5nIG9ubHkgLSBzaXplIGhhbmRsZWQgYnkgSWNvbiBjb21wb25lbnQgKi9cbiAgZmxleC1zaHJpbms6IDA7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpO1xuICBcbiAgLyogRml4IGFsaWdubWVudCBpc3N1ZSAtIHJlbW92ZSBhbnkgbWFyZ2luICovXG4gIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7XG4gIFxuICAvKiBFbnN1cmUgcHJvcGVyIHZlcnRpY2FsIGFsaWdubWVudCAqL1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24tc2VsZjogY2VudGVyO1xufVxuXG4vKiBPdmVycmlkZSBhbnkgaWNvbi1zbSBtYXJnaW4gdGhhdCBtaWdodCBiZSBpbmhlcml0ZWQgKi9cbi5mYXEtaWNvbi5pY29uLXNtIHtcbiAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xufVxuXG4vKiBSb3RhdGUgaWNvbiB3aGVuIGV4cGFuZGVkICovXG4uZmFxLWV4cGFuZGVkIC5mYXEtaWNvbiB7XG4gIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBGQVEgQU5TV0VSXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBGQVEgQW5zd2VyXG4gKiAtIFVzZXMgZ2xvYmFsIGRlc2NyaXB0aW9uIGNsYXNzIGZvciB0eXBvZ3JhcGh5XG4gKiAtIFNtb290aCByZXZlYWwgYW5pbWF0aW9uXG4gKi9cbi5mYXEtYW5zd2VyIHtcbiAgLyogRVhUUkVNRSB3aGl0ZXNwYWNlIC0gMzAlIG1vcmUgc3BhY2luZyAqL1xuICBtYXJnaW4tdG9wOiBjYWxjKHZhcigtLXNwYWNlLTQpICogMS4zKTtcbiAgcGFkZGluZy10b3A6IGNhbGModmFyKC0tc3BhY2UtNCkgKiAxLjMpO1xuICBcbiAgLyogVmlzdWFsIHNlcGFyYXRvciB3aXRoIHN1YnRsZSBzaGFkb3cgaW5zdGVhZCBvZiBib3JkZXIgKi9cbiAgYm9yZGVyLXRvcDogMDsgLyogTm8gYm9yZGVycyBpbiBib3JkZXJsZXNzIGRlc2lnbiAqL1xuICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIHJnYmEodmFyKC0tY29sb3ItYm9yZGVyKSAvIDAuMik7IC8qIFN1YnRsZSBpbnNldCBzaGFkb3cgKi9cbiAgXG4gIC8qIEFuaW1hdGlvbiAqL1xuICBhbmltYXRpb246IGZhZGVJbiB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpO1xuICBcbiAgLyogVHlwb2dyYXBoeSBoYW5kbGVkIGJ5IGRlc2NyaXB0aW9uIGNsYXNzICovXG59XG5cbkBrZXlmcmFtZXMgZmFkZUluIHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLThweCk7XG4gIH1cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgTU9CSUxFIFJFU1BPTlNJVkVORVNTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5mYXEtaXRlbSB7XG4gICAgLyogU3RpbGwgZ2VuZXJvdXMgc3BhY2luZyBvbiBtb2JpbGUgKi9cbiAgICBtYXJnaW4tYm90dG9tOiBjYWxjKHZhcigtLXNwYWNlLTQpICogMS4zKTsgLyogfjIxcHggKi9cbiAgfVxuICBcbiAgLmZhcS1pdGVtLWNvbnRlbnQge1xuICAgIC8qIEFkanVzdGVkIGJ1dCBzdGlsbCBnZW5lcm91cyBwYWRkaW5nIG9uIG1vYmlsZSAqL1xuICAgIHBhZGRpbmc6IGNhbGModmFyKC0tc3BhY2UtNCkgKiAxLjMpOyAvKiB+MjFweCAqL1xuICB9XG4gIFxuICAuZmFxLXF1ZXN0aW9uLWJ1dHRvbiB7XG4gICAgLyogRW5zdXJlIHRvdWNoLWZyaWVuZGx5IHNpemUgKi9cbiAgICBtaW4taGVpZ2h0OiA0OHB4O1xuICAgIGdhcDogdmFyKC0tc3BhY2UtMik7XG4gIH1cbiAgXG4gIC5mYXEtYW5zd2VyIHtcbiAgICAvKiBTdGlsbCBnZW5lcm91cyBzcGFjaW5nIG9uIG1vYmlsZSAqL1xuICAgIG1hcmdpbi10b3A6IGNhbGModmFyKC0tc3BhY2UtMykgKiAxLjMpO1xuICAgIHBhZGRpbmctdG9wOiBjYWxjKHZhcigtLXNwYWNlLTMpICogMS4zKTtcbiAgfVxufVxuXG4vKiBUYWJsZXQgYWRqdXN0bWVudHMgKi9cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDEwMjNweCkge1xuICAuZmFxLWl0ZW0tY29udGVudCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtNSk7XG4gIH1cbn1cblxuLyogRGVza3RvcCBlbmhhbmNlbWVudHMgKi9cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLmZhcS1pdGVtIHtcbiAgICAvKiBNb3JlIGdlbmVyb3VzIHNwYWNpbmcgb24gZGVza3RvcCAqL1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTYpO1xuICB9XG4gIFxuICAuZmFxLWl0ZW06aG92ZXIge1xuICAgIC8qIEVuaGFuY2VkIGhvdmVyIGVmZmVjdCBvbiBkZXNrdG9wICovXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpO1xuICAgIGJveC1zaGFkb3c6IDAgMTJweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7IC8qIE1vcmUgcHJvbWluZW50IGVsZXZhdGlvbiAqL1xuICAgIGJvcmRlcjogMDsgLyogTWFpbnRhaW4gYm9yZGVybGVzcyAqL1xuICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQUNDRVNTSUJJTElUWVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIEZvY3VzIHN0YXRlcyBtb3ZlZCB0byBidXR0b24gc3R5bGVzIGFib3ZlICovXG5cbi8qIEhpZ2ggY29udHJhc3QgbW9kZSBzdXBwb3J0ICovXG5AbWVkaWEgKHByZWZlcnMtY29udHJhc3Q6IGhpZ2gpIHtcbiAgLmZhcS1pdGVtIHtcbiAgICAvKiBVc2Ugb3V0bGluZSBpbnN0ZWFkIG9mIGJvcmRlciBmb3IgaGlnaCBjb250cmFzdCAqL1xuICAgIG91dGxpbmU6IDJweCBzb2xpZCBjdXJyZW50Q29sb3I7XG4gICAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7XG4gICAgYm9yZGVyOiAwOyAvKiBLZWVwIGJvcmRlcmxlc3MgKi9cbiAgfVxuICBcbiAgLmZhcS1pdGVtLWhlcml0YWdlIHtcbiAgICBvdXRsaW5lOiAycHggc29saWQgcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICAgIGJvcmRlcjogMDsgLyogS2VlcCBib3JkZXJsZXNzICovXG4gIH1cbn1cblxuLyogUmVkdWNlZCBtb3Rpb24gc3VwcG9ydCAqL1xuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLmZhcS1pdGVtLFxuICAuZmFxLWljb24sXG4gIC5mYXEtYW5zd2VyIHtcbiAgICB0cmFuc2l0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gICAgYW5pbWF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBQRVJGT1JNQU5DRSBPUFRJTUlaQVRJT05TXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogSGFyZHdhcmUgYWNjZWxlcmF0aW9uIGZvciBhbmltYXRpb25zICovXG4uZmFxLWl0ZW0sXG4uZmFxLWljb24ge1xuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xufVxuXG4uZmFxLWl0ZW06bm90KDpob3ZlciksXG4uZmFxLWljb246bm90KC5yb3RhdGluZykge1xuICB3aWxsLWNoYW5nZTogYXV0bztcbn0iLCIvKipcbiAqIEZlYXR1cmVzIENvbXBvbmVudCBDU1MgLSBUaHJlZS1MYXllciBBcmNoaXRlY3R1cmVcbiAqIFxuICogTGF5ZXIgMjogQ29tcG9uZW50IEVuaGFuY2VtZW50XG4gKiAtIEJ1aWxkcyB1cG9uIGJyYW5kIGZvdW5kYXRpb24gdmFyaWFibGVzXG4gKiAtIEltcGxlbWVudHMgY29tcG9uZW50LXNwZWNpZmljIHN0eWxlc1xuICogLSBVc2VzIE9OTFkgQ1NTIHZhcmlhYmxlcyBmcm9tIGluZGV4LmNzc1xuICogLSBOTyBoYXJkLWNvZGVkIHZhbHVlcyBhbGxvd2VkXG4gKiBcbiAqIE1vYmlsZS1GaXJzdCBEZXNpZ24gd2l0aCBQcm9mZXNzaW9uYWwgVmlzdWFsIEhpZXJhcmNoeVxuICovXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEZlYXR1cmUgQ2FyZCBTdHlsZXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5mZWF0dXJlLWNhcmQge1xuICAvKiBDYXJkIGZvdW5kYXRpb24gLSBib3JkZXJsZXNzIGRlc2lnbiAqL1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItY2FyZCkpO1xuICBib3JkZXI6IDA7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTgpO1xuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctY2FyZCk7XG4gIFxuICAvKiBUcmFuc2l0aW9ucyAqL1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2Utc21vb3RoKTtcbiAgXG4gIC8qIFBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiAqL1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7XG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm0sIGJveC1zaGFkb3c7XG59XG5cbi8qIEhvdmVyIHN0YXRlICovXG4uZmVhdHVyZS1jYXJkOmhvdmVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpO1xuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctY2FyZC1ob3Zlcik7XG59XG5cbi8qIEFjdGl2ZSBzdGF0ZSAqL1xuLmZlYXR1cmUtY2FyZDphY3RpdmUge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1jYXJkLWFjdGl2ZSk7XG59XG5cbi8qIENsZWFuIHVwIHdpbGwtY2hhbmdlIGFmdGVyIGludGVyYWN0aW9uICovXG4uZmVhdHVyZS1jYXJkOm5vdCg6aG92ZXIpIHtcbiAgd2lsbC1jaGFuZ2U6IGF1dG87XG59XG5cbi8qIFRyYW5zcGFyZW50IHZhcmlhbnQgLSBib3JkZXJsZXNzICovXG4uZmVhdHVyZS1jYXJkLXRyYW5zcGFyZW50IHtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG4gIGJvcmRlcjogMDtcbn1cblxuLmZlYXR1cmUtY2FyZC10cmFuc3BhcmVudDpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3ItY2FyZCkgLyAwLjUpO1xuICBib3JkZXI6IDA7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1jYXJkKTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgRmVhdHVyZSBDb250ZW50IExheW91dFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmZlYXR1cmUtY2FyZC1jb250ZW50IHtcbiAgLyogRmxleGJveCBsYXlvdXQgZm9yIHZlcnRpY2FsIGNlbnRlcmluZyAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGdhcDogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi8qIEljb24gY29udGFpbmVyIHNwYWNpbmcgaGFuZGxlZCBieSBpY29uLmNzcyBhbmQgZmxleGJveCBnYXAgKi9cblxuLyogVHlwb2dyYXBoeSBzcGFjaW5nIC0gdXNlcyBnbG9iYWwgY2xhc3NlcyAqL1xuLmZlYXR1cmUtY2FyZC1jb250ZW50IC50aXRsZS1jYXJkIHtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMyk7XG59XG5cbi5mZWF0dXJlLWNhcmQtY29udGVudCAuZGVzY3JpcHRpb24ge1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbiAgLyogTGltaXQgd2lkdGggZm9yIGJldHRlciByZWFkYWJpbGl0eSAqL1xuICBtYXgtd2lkdGg6IDQyY2g7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEZlYXR1cmUgVGFnc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmZlYXR1cmUtdGFncyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0yKTtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTIpO1xufVxuXG4uZmVhdHVyZS10YWcge1xuICAvKiBUYWcgc3R5bGluZyAqL1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMSkgdmFyKC0tc3BhY2UtMyk7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1tdXRlZCkpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLW11dGVkLWZvcmVncm91bmQpKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWZ1bGwpO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBmb250LXdlaWdodDogNTAwO1xuICBcbiAgLyogU3VidGxlIGludGVyYWN0aW9uICovXG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpO1xufVxuXG4uZmVhdHVyZS10YWc6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQpIC8gMC44KTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBJY29uIEFuaW1hdGlvbnMgKENvbXBvbmVudCBMYXllcilcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5pY29uLXB1bHNlIHtcbiAgYW5pbWF0aW9uOiBpY29uUHVsc2UgMnMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC42LCAxKSBpbmZpbml0ZTtcbn1cblxuLmljb24tc3BpbiB7XG4gIGFuaW1hdGlvbjogaWNvblNwaW4gM3MgbGluZWFyIGluZmluaXRlO1xufVxuXG4uaWNvbi1pbnRlcmFjdGl2ZSB7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpO1xufVxuXG4uZmVhdHVyZS1jYXJkOmhvdmVyIC5pY29uLWludGVyYWN0aXZlIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpIHJvdGF0ZSg1ZGVnKTtcbn1cblxuLyogQW5pbWF0aW9uIGtleWZyYW1lcyAqL1xuQGtleWZyYW1lcyBpY29uUHVsc2Uge1xuICAwJSwgMTAwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICB9XG4gIDUwJSB7XG4gICAgb3BhY2l0eTogMC44O1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBpY29uU3BpbiB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICB9XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIE1vYmlsZSBSZXNwb25zaXZlbmVzc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5mZWF0dXJlLWNhcmQge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTYpO1xuICAgIC8qIFJlZHVjZSBob3ZlciBsaWZ0IG9uIG1vYmlsZSAqL1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1jYXJkKTtcbiAgfVxuICBcbiAgLmZlYXR1cmUtY2FyZDpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1jYXJkLWhvdmVyKTtcbiAgfVxuICBcbiAgLmZlYXR1cmUtY2FyZC1jb250ZW50IHtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTMpO1xuICB9XG4gIFxuICAuZmVhdHVyZS1jYXJkLWNvbnRlbnQgLmRlc2NyaXB0aW9uIHtcbiAgICBmb250LXNpemU6IDAuOTM3NXJlbTtcbiAgICBsaW5lLWhlaWdodDogMS42O1xuICB9XG4gIFxuICAuZmVhdHVyZS10YWdzIHtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTEpO1xuICB9XG4gIFxuICAuZmVhdHVyZS10YWcge1xuICAgIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICAgIHBhZGRpbmc6IGNhbGModmFyKC0tc3BhY2UtMSkgKiAwLjc1KSB2YXIoLS1zcGFjZS0yKTtcbiAgfVxufVxuXG4vKiBTbWFsbCBtb2JpbGUgb3B0aW1pemF0aW9uICovXG5AbWVkaWEgKG1heC13aWR0aDogMzc1cHgpIHtcbiAgLmZlYXR1cmUtY2FyZCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtNCk7XG4gIH1cbiAgXG4gIC5mZWF0dXJlLWNhcmQtY29udGVudCAuZGVzY3JpcHRpb24ge1xuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgVGFibGV0IEVuaGFuY2VtZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiAxMjc5cHgpIHtcbiAgLmZlYXR1cmUtY2FyZCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtNyk7XG4gIH1cbiAgXG4gIC5mZWF0dXJlLWNhcmQtY29udGVudCB7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS00KTtcbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBEZXNrdG9wIEVuaGFuY2VtZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5AbWVkaWEgKG1pbi13aWR0aDogMTI4MHB4KSB7XG4gIC5mZWF0dXJlLWNhcmQge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTEwKTtcbiAgfVxuICBcbiAgLmZlYXR1cmUtY2FyZDpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC02cHgpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1jYXJkLWhvdmVyKTtcbiAgfVxuICBcbiAgLmZlYXR1cmUtY2FyZC1jb250ZW50IHtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTUpO1xuICB9XG4gIFxuICAuZmVhdHVyZS1jYXJkLWNvbnRlbnQgLnRpdGxlLWNhcmQge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTQpO1xuICB9XG4gIFxuICAuZmVhdHVyZS1jYXJkLWNvbnRlbnQgLmRlc2NyaXB0aW9uIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS01KTtcbiAgICBtYXgtd2lkdGg6IDQ4Y2g7XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgRm9jdXMgU3RhdGVzIChBY2Nlc3NpYmlsaXR5KVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmZlYXR1cmUtY2FyZDpmb2N1cy13aXRoaW4ge1xuICBvdXRsaW5lOiAycHggc29saWQgcmdiKHZhcigtLWNvbG9yLWZvY3VzKSk7XG4gIG91dGxpbmUtb2Zmc2V0OiAycHg7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEhlcml0YWdlIFJlZCBDb21wbGlhbmNlXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiBXaGVuIGZlYXR1cmUgaGFzIGhlcml0YWdlIGljb24sIGFkZCBleHRyYSBzcGFjaW5nICovXG4uZmVhdHVyZS1jYXJkOmhhcyguaWNvbi1jb250YWluZXItaGVyaXRhZ2UpIHtcbiAgLyogMzAlIGV4dHJhIHNwYWNpbmcgZm9yIGhlcml0YWdlIGVsZW1lbnRzICovXG4gIG1hcmdpbi10b3A6IGNhbGModmFyKC0tc3BhY2UtNCkgKiAxLjMpO1xuICBtYXJnaW4tYm90dG9tOiBjYWxjKHZhcigtLXNwYWNlLTQpICogMS4zKTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgR3JpZCBMYXlvdXQgU3VwcG9ydFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogV2hlbiBmZWF0dXJlcyBhcmUgaW4gYSBncmlkICovXG4ubGF5b3V0LWdyaWQtMyAuZmVhdHVyZS1jYXJkLFxuLmxheW91dC1ncmlkLTQgLmZlYXR1cmUtY2FyZCB7XG4gIGhlaWdodDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLmxheW91dC1ncmlkLTMgLmZlYXR1cmUtY2FyZC1jb250ZW50LFxuLmxheW91dC1ncmlkLTQgLmZlYXR1cmUtY2FyZC1jb250ZW50IHtcbiAgZmxleDogMTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBIaWdoIENvbnRyYXN0IE1vZGUgU3VwcG9ydFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuQG1lZGlhIChwcmVmZXJzLWNvbnRyYXN0OiBoaWdoKSB7XG4gIC5mZWF0dXJlLWNhcmQge1xuICAgIG91dGxpbmU6IDJweCBzb2xpZCBjdXJyZW50Q29sb3I7XG4gIH1cbiAgXG4gIC5mZWF0dXJlLWNhcmQ6Zm9jdXMtd2l0aGluIHtcbiAgICBvdXRsaW5lLXdpZHRoOiAzcHg7XG4gIH1cbiAgXG4gIC5mZWF0dXJlLXRhZyB7XG4gICAgb3V0bGluZTogMXB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBSZWR1Y2VkIE1vdGlvbiBTdXBwb3J0XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAuZmVhdHVyZS1jYXJkIHtcbiAgICB0cmFuc2l0aW9uOiBub25lO1xuICB9XG4gIFxuICAuZmVhdHVyZS1jYXJkOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbiAgXG4gIC5pY29uLXB1bHNlLFxuICAuaWNvbi1zcGluIHtcbiAgICBhbmltYXRpb246IG5vbmU7XG4gIH1cbiAgXG4gIC5pY29uLWludGVyYWN0aXZlIHtcbiAgICB0cmFuc2l0aW9uOiBub25lO1xuICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFByaW50IFN0eWxlc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuQG1lZGlhIHByaW50IHtcbiAgLmZlYXR1cmUtY2FyZCB7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICBvdXRsaW5lOiAxcHggc29saWQgIzAwMDtcbiAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7XG4gIH1cbiAgXG4gIC5mZWF0dXJlLWNhcmQ6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxuICBcbiAgLmZlYXR1cmUtdGFnIHtcbiAgICBvdXRsaW5lOiAxcHggc29saWQgIzAwMDtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICB9XG59IiwiLyogRmxvYXRpbmcgQ1RBIENvbXBvbmVudCBTdHlsZXMgLSBGTEFUIERFU0lHTiAyMDI1ICovXG4vKiBDUklUSUNBTDogQ29tcG9uZW50LXNwZWNpZmljIHN0eWxpbmcgb25seSAtIHRoZW1lIGZvdW5kYXRpb24gaW4gaW5kZXguY3NzICovXG5cbi8qIEZsb2F0aW5nIENUQSBDb250YWluZXIgKi9cbi5mbG9hdGluZy1jdGEge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGJvdHRvbTogMnJlbTtcbiAgcmlnaHQ6IDJyZW07XG4gIHotaW5kZXg6IDQwO1xuICB0cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0aW9uLWNvbG9ycyk7XG59XG5cbi8qIEZsb2F0aW5nIENUQSBCdXR0b24gRW5oYW5jZW1lbnQgLSBVc2VzIGJyYW5kIGZvdW5kYXRpb24gKi9cbi5mbG9hdGluZy1jdGEtYnV0dG9uLWVuaGFuY2VkIHtcbiAgcGFkZGluZzogMXJlbSAxLjVyZW07XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1mdWxsKTtcbiAgdHJhbnNpdGlvbjogdmFyKC0tdHJhbnNpdGlvbi1jb2xvcnMpO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4uZmxvYXRpbmctY3RhLWJ1dHRvbi1lbmhhbmNlZDpob3ZlciB7XG4gIG9wYWNpdHk6IDAuOTtcbn1cblxuLyogRmxvYXRpbmcgQ1RBIENvbnRlbnQgKi9cbi5mbG9hdGluZy1jdGEtY29udGVudCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMC41cmVtO1xufVxuXG4uZmxvYXRpbmctY3RhLXRleHQge1xuICBmb250LXdlaWdodDogNjAwO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xufVxuXG4uZmxvYXRpbmctY3RhLWljb24ge1xuICB3aWR0aDogMXJlbTtcbiAgaGVpZ2h0OiAxcmVtO1xufVxuXG4vKiBIaWRkZW4gU3RhdGUgKi9cbi5mbG9hdGluZy1jdGEtLWhpZGRlbiB7XG4gIG9wYWNpdHk6IDA7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi8qIFJlc3BvbnNpdmUgRGVzaWduICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgLmZsb2F0aW5nLWN0YSB7XG4gICAgYm90dG9tOiAxcmVtO1xuICAgIHJpZ2h0OiAxcmVtO1xuICB9XG4gIFxuICAuZmxvYXRpbmctY3RhLWJ1dHRvbi1lbmhhbmNlZCB7XG4gICAgcGFkZGluZzogMC43NXJlbSAxcmVtO1xuICB9XG4gIFxuICAuZmxvYXRpbmctY3RhLXRleHQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gIC5mbG9hdGluZy1jdGEge1xuICAgIGJvdHRvbTogMXJlbTtcbiAgICByaWdodDogMXJlbTtcbiAgfVxufVxuIiwiLyogRmxvYXRpbmcgVGhlbWUgVG9nZ2xlIENvbXBvbmVudCBTdHlsZXMgLSBGTEFUIERFU0lHTiAyMDI1ICovXG4vKiBDUklUSUNBTDogQ29tcG9uZW50LXNwZWNpZmljIHN0eWxpbmcgb25seSAtIHRoZW1lIGZvdW5kYXRpb24gaW4gaW5kZXguY3NzICovXG5cbi8qIEZsb2F0aW5nIFRoZW1lIFRvZ2dsZSBDb250YWluZXIgKi9cbi5mbG9hdGluZy10aGVtZS10b2dnbGUge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMXJlbTtcbiAgcmlnaHQ6IDFyZW07XG4gIHotaW5kZXg6IDUwO1xuICB0cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0aW9uLWNvbG9ycyk7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLmZsb2F0aW5nLXRoZW1lLXRvZ2dsZSB7XG4gICAgdG9wOiAxLjVyZW07XG4gICAgcmlnaHQ6IDEuNXJlbTtcbiAgfVxufVxuXG4vKiBGbG9hdGluZyBUaGVtZSBUb2dnbGUgQnV0dG9uIEVuaGFuY2VtZW50IC0gVXNlcyBicmFuZCBmb3VuZGF0aW9uICovXG4uZmxvYXRpbmctdGhlbWUtdG9nZ2xlLWJ1dHRvbi1lbmhhbmNlZCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB3aWR0aDogM3JlbTtcbiAgaGVpZ2h0OiAzcmVtO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2IodmFyKC0tY29sb3ItYm9yZGVyKSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1mdWxsKTtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWJhY2tncm91bmQpIC8gMC45NSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQtZm9yZWdyb3VuZCkpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IHZhcigtLXRyYW5zaXRpb24tY29sb3JzKTtcbn1cblxuLmZsb2F0aW5nLXRoZW1lLXRvZ2dsZS1idXR0b24tZW5oYW5jZWQ6aG92ZXIge1xuICBib3JkZXItY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkgLyAwLjA1KTtcbn1cblxuLmZsb2F0aW5nLXRoZW1lLXRvZ2dsZS1idXR0b24tZW5oYW5jZWQ6Zm9jdXMge1xuICBvdXRsaW5lOiAycHggc29saWQgcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbiAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbn1cblxuLyogVGhlbWUgVG9nZ2xlIEljb24gKi9cbi5mbG9hdGluZy10aGVtZS10b2dnbGUtaWNvbiB7XG4gIHdpZHRoOiAxLjI1cmVtO1xuICBoZWlnaHQ6IDEuMjVyZW07XG4gIHRyYW5zaXRpb246IHZhcigtLXRyYW5zaXRpb24tY29sb3JzKTtcbn1cblxuLyogSWNvbiBTdGF0ZXMgKi9cbi5mbG9hdGluZy10aGVtZS10b2dnbGUtLWxpZ2h0IC5mbG9hdGluZy10aGVtZS10b2dnbGUtaWNvbi0tc3VuIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5mbG9hdGluZy10aGVtZS10b2dnbGUtLWxpZ2h0IC5mbG9hdGluZy10aGVtZS10b2dnbGUtaWNvbi0tbW9vbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5mbG9hdGluZy10aGVtZS10b2dnbGUtLWRhcmsgLmZsb2F0aW5nLXRoZW1lLXRvZ2dsZS1pY29uLS1zdW4ge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4uZmxvYXRpbmctdGhlbWUtdG9nZ2xlLS1kYXJrIC5mbG9hdGluZy10aGVtZS10b2dnbGUtaWNvbi0tbW9vbiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vKiBSZXNwb25zaXZlIERlc2lnbiAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gIC5mbG9hdGluZy10aGVtZS10b2dnbGUge1xuICAgIHRvcDogMC43NXJlbTtcbiAgICByaWdodDogMC43NXJlbTtcbiAgfVxuICBcbiAgLmZsb2F0aW5nLXRoZW1lLXRvZ2dsZS1idXR0b24tZW5oYW5jZWQge1xuICAgIHdpZHRoOiAyLjVyZW07XG4gICAgaGVpZ2h0OiAyLjVyZW07XG4gIH1cbiAgXG4gIC5mbG9hdGluZy10aGVtZS10b2dnbGUtaWNvbiB7XG4gICAgd2lkdGg6IDFyZW07XG4gICAgaGVpZ2h0OiAxcmVtO1xuICB9XG59XG4iLCIvKipcbiAqIEZvb3RlciBDb21wb25lbnQgU3R5bGVzIC0gU3RhbmRhcmRzLUNvbXBsaWFudCBUaHJlZS1MYXllciBBcmNoaXRlY3R1cmVcbiAqIFxuICogRm9sbG93cyBhcmNoaXRlY3R1cmUtc3RhbmRhcmQubWQgd2l0aCBjb21wbGV0ZSBDU1MgdmFyaWFibGUgdXNhZ2UsXG4gKiBtb2JpbGUtZmlyc3QgcmVzcG9uc2l2ZSBkZXNpZ24sIGFuZCBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24uXG4gKiBJbnRlZ3JhdGVzIHdpdGggUFdBIGFuaW1hdGlvbiBzeXN0ZW0gYW5kIGFjY2Vzc2liaWxpdHkgc3RhbmRhcmRzLlxuICovXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBGb290ZXIgTWFpbiBDb250YWluZXIgKFRocmVlLUxheWVyIEFyY2hpdGVjdHVyZSlcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5mb290ZXItbWFpbiB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSk7XG4gIGJvcmRlcjogMDsgLyogQm9yZGVybGVzcyBkZXNpZ24gKi9cbiAgYm94LXNoYWRvdzogMCAtMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMDUpOyAvKiBUb3AgZWxldmF0aW9uIGZvciBzZXBhcmF0aW9uICovXG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTE2KSAwO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2luZy1zdGFuZGFyZCk7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBNb2JpbGUtRmlyc3QgUmVzcG9uc2l2ZSBHcmlkIFN5c3RlbVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmZvb3Rlci1ncmlkIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gIGdhcDogdmFyKC0tc3BhY2UtOCk7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTEyKTtcbn1cblxuLyogVGFibGV0IExheW91dCAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5mb290ZXItZ3JpZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgIGdhcDogdmFyKC0tc3BhY2UtMTIpO1xuICB9XG59XG5cbi8qIERlc2t0b3AgTGF5b3V0ICovXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5mb290ZXItZ3JpZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAyZnIgMWZyIDFmciAxZnI7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS0xNik7XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEJyYW5kIFNlY3Rpb24gKEhlcml0YWdlIFJlZCBDb21wbGlhbmNlKVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmZvb3Rlci1icmFuZC1zZWN0aW9uIHtcbiAgbWF4LXdpZHRoOiA0MDBweDtcbn1cblxuLyogSGVyaXRhZ2UgUmVkIENvbXBsaWFuY2U6IDMwJSBleHRyYSBzcGFjaW5nIGFyb3VuZCByZWQgbG9nbyAqL1xuLmZvb3Rlci1sb2dvLWNvbnRhaW5lciB7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTYpOyAvKiBJbmNyZWFzZWQgZnJvbSBzcGFjZS00IGZvciAzMCUgZXh0cmEgc3BhY2luZyAqL1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0yKSAwOyAvKiBBZGRpdGlvbmFsIHBhZGRpbmcgZm9yIGhlcml0YWdlIHJlZCBlbGVtZW50ICovXG59XG5cbi5mb290ZXItbG9nbyB7XG4gIGhlaWdodDogdmFyKC0tc3BhY2UtOCk7XG4gIHdpZHRoOiBhdXRvO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2luZy1zdGFuZGFyZCk7XG59XG5cbi5mb290ZXItbG9nbzpob3ZlciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWShjYWxjKHZhcigtLXNwYWNlLTAtNSkgKiAtMSkpOyAvKiBVc2Ugc3BhY2luZyB2YXJpYWJsZSBmb3IgLTJweCAqL1xuICBmaWx0ZXI6IGJyaWdodG5lc3MoMS4xKTtcbn1cblxuLyogQWRkcmVzcyBlbGVtZW50IHN0eWxpbmcgZm9yIHNlbWFudGljIEhUTUwgKi9cbi5mb290ZXItYWRkcmVzcyB7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDsgLyogUmVzZXQgZGVmYXVsdCBpdGFsaWMgc3R5bGUgKi9cbn1cblxuLyogVHlwb2dyYXBoeSB1c2VzIGdsb2JhbCBjbGFzc2VzIC0gYWRkaXRpb25hbCBzcGFjaW5nIG9ubHkgKi9cbi5mb290ZXItYnJhbmQtc2VjdGlvbiAuZGVzY3JpcHRpb24ge1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS02KTtcbiAgLyogTGluZSBoZWlnaHQgaW5oZXJpdGVkIGZyb20gZ2xvYmFsIC5kZXNjcmlwdGlvbiBjbGFzcyAqL1xufVxuXG4uZm9vdGVyLWJyYW5kLXNlY3Rpb24gLmRlc2NyaXB0aW9uOmxhc3Qtb2YtdHlwZSB7XG4gIC8qIEZvbnQgc3R5bGUgaW5oZXJpdGVkIGZyb20gZ2xvYmFsIGNsYXNzZXMgKi9cbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNik7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBTb2NpYWwgTGlua3MgKFRvdWNoLU9wdGltaXplZCAmIEhlcml0YWdlIFJlZCBDb21wbGlhbnQpXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uZm9vdGVyLXNvY2lhbC1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6IHZhcigtLXNwYWNlLTQpO1xuICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS02KTtcbn1cblxuLmZvb3Rlci1zb2NpYWwtbGluayB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgd2lkdGg6IHZhcigtLXNwYWNlLTEwKTsgLyogNDBweCAqL1xuICBoZWlnaHQ6IHZhcigtLXNwYWNlLTEwKTsgLyogNDBweCAqL1xuICBtaW4td2lkdGg6IDQ4cHg7IC8qIFRvdWNoIHRhcmdldCBjb21wbGlhbmNlICovXG4gIG1pbi1oZWlnaHQ6IDQ4cHg7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1jb2xvci1tdXRlZCkgLyAwLjEpO1xuICBib3JkZXI6IDA7IC8qIEJvcmRlcmxlc3MgZGVzaWduICovXG4gIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMDUpOyAvKiBTdWJ0bGUgZWxldmF0aW9uICovXG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQtZm9yZWdyb3VuZCkpO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2luZy1zdGFuZGFyZCk7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuLmZvb3Rlci1zb2NpYWwtbGluazpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSAvIDAuMSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7IC8qIExpZnQgb24gaG92ZXIgKi9cbiAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMDgpOyAvKiBJbmNyZWFzZWQgZWxldmF0aW9uICovXG59XG5cbi5mb290ZXItc29jaWFsLWxpbms6Zm9jdXMtdmlzaWJsZSB7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKHZhcigtLWNvbG9yLWZvY3VzKSAvIDAuNSk7IC8qIFNoYWRvdy1iYXNlZCBmb2N1cyByaW5nICovXG59XG5cbi8qIEljb25zIHVzZSB0aGUgY2VudHJhbGl6ZWQgaWNvbiBzeXN0ZW0gLSBubyBjdXN0b20gc3R5bGluZyBuZWVkZWQgKi9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEZvb3RlciBDb2x1bW5zIChTdGFuZGFyZHMtQ29tcGxpYW50IFR5cG9ncmFwaHkpXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uZm9vdGVyLWNvbHVtbiB7XG4gIG1pbi13aWR0aDogMDtcbn1cblxuLyogVHlwb2dyYXBoeSB1c2VzIGdsb2JhbCBjbGFzc2VzIC0gc3BhY2luZyBhZGp1c3RtZW50cyBvbmx5ICovXG4uZm9vdGVyLWNvbHVtbiAudGl0bGUtY2FyZCB7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTQpO1xufVxuXG4uZm9vdGVyLWxpbmstbGlzdCB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0zKTtcbn1cblxuLmZvb3Rlci1saW5rLWl0ZW0ge1xuICBtYXJnaW46IDA7XG59XG5cbi5mb290ZXItbGluayB7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQtZm9yZWdyb3VuZCkpO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIC8qIFR5cG9ncmFwaHkgaGFuZGxlZCBieSBnbG9iYWwgY2xhc3NlcyAqL1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNpbmctc3RhbmRhcmQpO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0xKSAwO1xufVxuXG4uZm9vdGVyLWxpbms6OmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiB2YXIoLS1zcGFjZS1weCk7IC8qIFVzZSBzcGFjaW5nIHZhcmlhYmxlIGZvciAxcHggKi9cbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbiAgdHJhbnNpdGlvbjogd2lkdGggdmFyKC0tdGltaW5nLW1lZGl1bSkgdmFyKC0tZWFzaW5nLXN0YW5kYXJkKTtcbn1cblxuLmZvb3Rlci1saW5rOmhvdmVyIHtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCh2YXIoLS1zcGFjZS0wLTUpKTsgLyogVXNlIHNwYWNpbmcgdmFyaWFibGUgZm9yIDJweCAqL1xufVxuXG4uZm9vdGVyLWxpbms6aG92ZXI6OmFmdGVyIHtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi5mb290ZXItbGluazpmb2N1cy12aXNpYmxlIHtcbiAgb3V0bGluZTogbm9uZTtcbiAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEodmFyKC0tY29sb3ItZm9jdXMpIC8gMC41KTsgLyogU2hhZG93LWJhc2VkIGZvY3VzIHJpbmcgKi9cbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbn1cblxuLyogRm9vdGVyIGNvbnRhY3QgYnV0dG9uIC0gc3R5bGVkIHRvIGxvb2sgbGlrZSBhIGxpbmsgKi9cbi5mb290ZXItY29udGFjdC1idXR0b24ge1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICBib3JkZXI6IG5vbmU7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTEpIDA7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICB3aWR0aDogYXV0bztcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1tdXRlZC1mb3JlZ3JvdW5kKSk7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNpbmctc3RhbmRhcmQpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5mb290ZXItY29udGFjdC1idXR0b246OmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiB2YXIoLS1zcGFjZS1weCk7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG4gIHRyYW5zaXRpb246IHdpZHRoIHZhcigtLXRpbWluZy1tZWRpdW0pIHZhcigtLWVhc2luZy1zdGFuZGFyZCk7XG59XG5cbi5mb290ZXItY29udGFjdC1idXR0b246aG92ZXIge1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKHZhcigtLXNwYWNlLTAtNSkpO1xufVxuXG4uZm9vdGVyLWNvbnRhY3QtYnV0dG9uOmhvdmVyOjphZnRlciB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uZm9vdGVyLWNvbnRhY3QtYnV0dG9uOmZvY3VzLXZpc2libGUge1xuICBvdXRsaW5lOiBub25lO1xuICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSh2YXIoLS1jb2xvci1mb2N1cykgLyAwLjUpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgRm9vdGVyIEJvdHRvbSAoTW9iaWxlLUZpcnN0IExlZ2FsIExpbmtzKVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmZvb3Rlci1ib3R0b20ge1xuICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS0xMik7XG4gIHBhZGRpbmctdG9wOiB2YXIoLS1zcGFjZS04KTtcbiAgYm9yZGVyOiAwOyAvKiBCb3JkZXJsZXNzIGRlc2lnbiAqL1xuICBib3gtc2hhZG93OiAwIC0xcHggMCByZ2JhKDAsIDAsIDAsIDAuMDUpOyAvKiBTdWJ0bGUgdG9wIHNlcGFyYXRvciAqL1xufVxuXG4uZm9vdGVyLWJvdHRvbS1jb250ZW50IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS00KTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmZvb3Rlci1ib3R0b20tY29udGVudCB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICB9XG59XG5cbi8qIFR5cG9ncmFwaHkgdXNlcyBnbG9iYWwgY2xhc3NlcyAtIG1hcmdpbiBhZGp1c3RtZW50cyBvbmx5ICovXG4uZm9vdGVyLWJvdHRvbS1jb250ZW50IC5kZXNjcmlwdGlvbiB7XG4gIG1hcmdpbjogMDtcbn1cblxuLmZvb3Rlci1sZWdhbC1saW5rcyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGdhcDogdmFyKC0tc3BhY2UtNik7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuZm9vdGVyLWxlZ2FsLWxpbmtzIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICB9XG59XG5cbi5mb290ZXItbGVnYWwtbGluayB7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQtZm9yZWdyb3VuZCkpO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIC8qIFR5cG9ncmFwaHkgaGFuZGxlZCBieSBnbG9iYWwgY2xhc3NlcyAqL1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0zKSB2YXIoLS1zcGFjZS0yKTsgLyogSW5jcmVhc2VkIHBhZGRpbmcgZm9yIDQ4cHggdG91Y2ggdGFyZ2V0ICovXG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzaW5nLXN0YW5kYXJkKTtcbiAgbWluLWhlaWdodDogNDhweDsgLyogV0NBRyAyLjEgQUEgdG91Y2ggdGFyZ2V0IGNvbXBsaWFuY2UgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLmZvb3Rlci1sZWdhbC1saW5rOmhvdmVyIHtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSAvIDAuMDUpO1xufVxuXG4uZm9vdGVyLWxlZ2FsLWxpbms6Zm9jdXMtdmlzaWJsZSB7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKHZhcigtLWNvbG9yLWZvY3VzKSAvIDAuNSk7IC8qIFNoYWRvdy1iYXNlZCBmb2N1cyByaW5nICovXG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBNb2JpbGUtRmlyc3QgUmVzcG9uc2l2ZSBEZXNpZ24gJiBQZXJmb3JtYW5jZSBPcHRpbWl6YXRpb25cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIFNtYWxsIE1vYmlsZSBEZXZpY2VzICovXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcbiAgLmZvb3Rlci1tYWluIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0xMikgMDtcbiAgfVxuICBcbiAgLmZvb3Rlci1ncmlkIHtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTYpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTgpO1xuICB9XG4gIFxuICAuZm9vdGVyLXNvY2lhbC1jb250YWluZXIge1xuICAgIGdhcDogdmFyKC0tc3BhY2UtMyk7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIH1cbiAgXG4gIC5mb290ZXItc29jaWFsLWxpbmsge1xuICAgIHdpZHRoOiB2YXIoLS1zcGFjZS05KTsgLyogMzZweCAqL1xuICAgIGhlaWdodDogdmFyKC0tc3BhY2UtOSk7XG4gIH1cbiAgXG4gIC5mb290ZXItbGVnYWwtbGlua3Mge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS0yKTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEFjY2Vzc2liaWxpdHkgRW5oYW5jZW1lbnRzIChXQ0FHIDIuMSBBQSlcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gIC5mb290ZXItbG9nbyxcbiAgLmZvb3Rlci1zb2NpYWwtbGluayxcbiAgLmZvb3Rlci1saW5rIHtcbiAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxuICBcbiAgLmZvb3Rlci1sb2dvOmhvdmVyLFxuICAuZm9vdGVyLXNvY2lhbC1saW5rOmhvdmVyLFxuICAuZm9vdGVyLWxpbms6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxufVxuXG5AbWVkaWEgKHByZWZlcnMtY29udHJhc3Q6IGhpZ2gpIHtcbiAgLmZvb3Rlci1zb2NpYWwtbGluayB7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7IC8qIFN0cm9uZyBzaGFkb3cgZm9yIGNvbnRyYXN0ICovXG4gIH1cbiAgXG4gIC5mb290ZXItbGluayB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gIH1cbiAgXG4gIC5mb290ZXItYm90dG9tIHtcbiAgICBib3gtc2hhZG93OiAwIC0ycHggMCByZ2JhKDAsIDAsIDAsIDAuMik7IC8qIFN0cm9uZ2VyIHNlcGFyYXRvciBzaGFkb3cgKi9cbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgUGVyZm9ybWFuY2UgT3B0aW1pemF0aW9uc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmZvb3Rlci1sb2dvLFxuLmZvb3Rlci1zb2NpYWwtbGluayxcbi5mb290ZXItbGluayB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsgLyogSGFyZHdhcmUgYWNjZWxlcmF0aW9uICovXG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsgLyogUHJldmVudCBmbGlja2VyaW5nICovXG59XG5cbi5mb290ZXItc29jaWFsLWNvbnRhaW5lcixcbi5mb290ZXItbGluay1saXN0IHtcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTsgLyogT3B0aW1pemUgZm9yIGFuaW1hdGlvbnMgKi9cbn1cblxuLyogQ3JpdGljYWwgQ1NTIGhpbnQgZm9yIGFib3ZlLXRoZS1mb2xkIG9wdGltaXphdGlvbiAqL1xuLypcbi5mb290ZXItbWFpbntiYWNrZ3JvdW5kLWNvbG9yOnJnYih2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSk7Ym9yZGVyOjA7Ym94LXNoYWRvdzowIC0xcHggM3B4IHJnYmEoMCwwLDAsMC4wNSk7cGFkZGluZzp2YXIoLS1zcGFjZS0xNikgMH1cbi5mb290ZXItZ3JpZHtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcjtnYXA6dmFyKC0tc3BhY2UtOCl9XG4qLyIsIi8qKlxuICogSGVhZGVyIENvbXBvbmVudCBFbmhhbmNlbWVudCBMYXllciAoTGF5ZXIgMilcbiAqIFxuICogVGhpcyBDU1MgZmlsZSBwcm92aWRlcyBjb21wb25lbnQtc3BlY2lmaWMgZW5oYW5jZW1lbnRzIHRoYXQgYnVpbGQgdXBvbjpcbiAqIC0gTGF5ZXIgMTogQnJhbmQgZm91bmRhdGlvbiAodGhlbWUgdmFyaWFibGVzLCB0eXBvZ3JhcGh5IGNsYXNzZXMgaW4gaW5kZXguY3NzKVxuICogLSBMYXllciAyOiBDb21wb25lbnQgZW5oYW5jZW1lbnRzICh0aGlzIGZpbGUgLSBsYXlvdXQsIHNwYWNpbmcsIGludGVyYWN0aW9ucylcbiAqIC0gTGF5ZXIgMzogUGFnZSBjdXN0b21pemF0aW9uICh2aWEgY29tcG9uZW50J3Mgc3R5bGVzIHByb3ApXG4gKiBcbiAqIEtleSBQcmluY2lwbGVzOlxuICogLSBSZWxpZXMgb24gZ2xvYmFsIHR5cG9ncmFwaHkgY2xhc3NlcyAoYXBwbGllZCBpbiBjb21wb25lbnQgSlNYKVxuICogLSBQcm92aWRlcyBzdHJ1Y3R1cmFsIGFuZCBpbnRlcmFjdGl2ZSBlbmhhbmNlbWVudHMgb25seVxuICogLSBEZXNpZ25lZCB0byBiZSBlYXNpbHkgb3ZlcnJpZGVhYmxlIHZpYSBzdHlsZSBwcm9wc1xuICogLSBNb2JpbGUtZmlyc3Qgd2l0aCBwcm9ncmVzc2l2ZSBlbmhhbmNlbWVudFxuICogXG4gKiBUeXBvZ3JhcGh5IFVzYWdlOlxuICogLSBDb21wb25lbnQgYXBwbGllczogZGVzY3JpcHRpb24gY2xhc3MgY29uc2lzdGVudGx5IGZvciBhbGwgbmF2aWdhdGlvbiB0ZXh0XG4gKiAtIENTUyBoYW5kbGVzOiBzcGFjaW5nLCBhbGlnbm1lbnQsIHRyYW5zaXRpb25zIG9ubHkgKE5PVCBmb250LXNpemUgb3IgZm9udC13ZWlnaHQpXG4gKi9cblxuLyogPT09PT0gU1RSVUNUVVJBTCBFTkhBTkNFTUVOVFMgPT09PT0gKi9cblxuLyogQ29udGFpbmVyIC0gRW5oYW5jZWQgc3RpY2t5IHBvc2l0aW9uaW5nIHdpdGggYmFja2Ryb3AgYmx1ciBvcHRpbWl6YXRpb24gKi9cbi5oZWFkZXItY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHN0aWNreTtcbiAgdG9wOiAwO1xuICB6LWluZGV4OiA1MDtcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tY29sb3ItYmFja2dyb3VuZCkgLyAwLjk1KTtcbiAgY29udGFpbmVyLXR5cGU6IGlubGluZS1zaXplO1xuICBjb250YWluZXItbmFtZTogaGVhZGVyO1xuICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTJweCk7XG4gIC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEycHgpO1xuICAvKiBib3JkZXItYm90dG9tIHJlbW92ZWQgZm9yIGNsZWFuZXIgbG9vayAqL1xuICBib3gtc2hhZG93OiAwIDFweCAzcHggMCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xuICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50OyAvKiBBbGxvdyBkcm9wZG93bnMgdG8gZXh0ZW5kIGJleW9uZCBjb250YWluZXIgKi9cbiAgXG4gIC8qIFBlcmZvcm1hbmNlIGZhbGxiYWNrIGZvciBkZXZpY2VzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBiYWNrZHJvcC1maWx0ZXIgKi9cbiAgQHN1cHBvcnRzIG5vdCAoYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEycHgpKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLWJhY2tncm91bmQpKTtcbiAgfVxuICBcbiAgLyogSGFyZHdhcmUgYWNjZWxlcmF0aW9uIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UgKi9cbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApO1xuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xufVxuXG4vKipcbiAqIEFOSU1BVElPTlM6IFR3by1MYXllciBQV0EgU2Nyb2xsIEFuaW1hdGlvbnMgYXJlIGRlZmluZWQgZ2xvYmFsbHkgaW4gc3JjL2luZGV4LmNzc1xuICogQ29tcG9uZW50IHVzZXM6IHB3YS1zY3JvbGwtc2VjdGlvbiwgcHdhLXNjcm9sbC1mYWRlXG4gKiBObyBsb2NhbCBhbmltYXRpb24gZGVmaW5pdGlvbnMgbmVlZGVkIC0gZGVsZWdhdGVzIHRvIGdsb2JhbCBzeXN0ZW0uXG4gKi9cblxuLyogQWxpZ25tZW50IENvbnRhaW5lciAtIEluaGVyaXRzIGZyb20gbGF5b3V0LWNvbnRhaW5lciB3aXRoIEhlYWRlci1TcGVjaWZpYyBIZWlnaHQgKi9cbi5oZWFkZXItY29udGFpbmVyIC5sYXlvdXQtY29udGFpbmVyIHtcbiAgLyogRmxleGlibGUgaGVpZ2h0IHRvIGFjY29tbW9kYXRlIGJvdGggc2luZ2xlLWxpbmUgYW5kIHdyYXBwZWQgbmF2aWdhdGlvbiAqL1xuICAvKiBtaW4taGVpZ2h0IHJlbW92ZWQgdG8gYWxsb3cgbmF0dXJhbCBjb250ZW50IHNpemluZyAqL1xuICBoZWlnaHQ6IGF1dG87IC8qIEFsbG93IG5hdHVyYWwgaGVpZ2h0IGV4cGFuc2lvbiAqL1xuICAvKiBEZXNrdG9wOiBsYXlvdXQtc2VjdGlvbi1zbSBlcXVpdmFsZW50ICg0cmVtID0gNjRweCkgbWluaW11bSAqL1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItYmFja2dyb3VuZCkpO1xuICAvKiBib3JkZXItY29sb3IgcmVtb3ZlZCB0byBlbGltaW5hdGUgdmVydGljYWwgYm9yZGVycyAqL1xuICAvKiBVc2UgQ1NTIHZhcmlhYmxlcyBmb3IgYWxsIHByb3BlcnRpZXMgdG8gZW5zdXJlIHRocmVlLWxheWVyIGFyY2hpdGVjdHVyZSBjb21wbGlhbmNlICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyOyAvKiBDZW50ZXIgdGhlIHdyYXBwZXIgKi9cbiAgLyogVmVydGljYWwgY2VudGVyaW5nIHdpdGhpbiBjb250YWluZXIgLSB3aWxsIHNoaWZ0IHRvIGZsZXgtc3RhcnQgd2hlbiB3cmFwcGVkICovXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7IC8qIEFsbG93IGRyb3Bkb3ducyB0byBleHRlbmQgYmV5b25kIGNvbnRhaW5lciAqL1xuICAvKiBTbWFydCBwYWRkaW5nIHRoYXQgYWRhcHRzIHRvIGNvbnRlbnQgKi9cbiAgcGFkZGluZy10b3A6IHZhcigtLXNwYWNlLTIpO1xuICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2UtMik7XG4gIC8qIEZpeGVkIHdpZHRoIHdpdGggcHJvcGVyIGJvdW5kYXJpZXMgdG8gcHJldmVudCBvdmVyZmxvdyAqL1xuICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyAvKiBVc2UgZnVsbCB3aWR0aCB0byBjb250YWluIGFsbCBjb250ZW50ICovXG4gIG1pbi13aWR0aDogMDsgLyogQWxsb3cgc2hyaW5raW5nIG9uIHNtYWxsIHZpZXdwb3J0cyAqL1xuICBtYXgtd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7IC8qIEVuc3VyZSBpdCBkb2Vzbid0IGV4Y2VlZCB2aWV3cG9ydCAqL1xuICBtYXJnaW46IDAgYXV0bzsgLyogQ2VudGVyIGhvcml6b250YWxseSAqL1xuICAvKiBOb3RlOiBob3Jpem9udGFsIHBhZGRpbmcgaW5oZXJpdGVkIGZyb20gbGF5b3V0LWNvbnRhaW5lciBjbGFzcyAqL1xufVxuXG4vKiBXcmFwcGVyIC0gU2ltcGxpZmllZCBmbGV4IGxheW91dCB3aXRoIHByb3BlciBjb250YWlubWVudCAqL1xuLmhlYWRlci13cmFwcGVyIHtcbiAgZGlzcGxheTogZmxleDsgLyogVXNlIGZsZXhib3ggZm9yIGJldHRlciB3aWR0aCBwcm9wYWdhdGlvbiAqL1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IC8qIFNwYWNlIGJldHdlZW4gbG9nbyBhbmQgbmF2IGl0ZW1zICovXG4gIGdhcDogdmFyKC0tc3BhY2UtNCk7IC8qIFJlZHVjZWQgZ2FwIHNpbmNlIG5hdiBoYW5kbGVzIGludGVybmFsIHNwYWNpbmcgKi9cbiAgd2lkdGg6IDEwMCU7IC8qIFVzZSBmdWxsIGF2YWlsYWJsZSB3aWR0aCBmcm9tIGNvbnRhaW5lciAqL1xuICBtYXgtd2lkdGg6IDEyMDBweDsgLyogU2V0IG1heGltdW0gd2lkdGggdG8gcHJldmVudCBleGNlc3NpdmUgZXhwYW5zaW9uICovXG4gIGhlaWdodDogYXV0bzsgLyogQWxsb3cgbmF0dXJhbCBoZWlnaHQgYmFzZWQgb24gY29udGVudCAqL1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuICBtYXJnaW46IDAgYXV0bzsgLyogQ2VudGVyIHRoZSB3cmFwcGVyIHdpdGhpbiB0aGUgY29udGFpbmVyICovXG59XG5cbi8qIFdoZW4gbmF2aWdhdGlvbiB3cmFwcyAoZGV0ZWN0ZWQgYnkgZGF0YSBhdHRyaWJ1dGUpLCBhZGp1c3QgYmVoYXZpb3IgKi9cbi5oZWFkZXItY29udGFpbmVyIC5sYXlvdXQtY29udGFpbmVyW2RhdGEtbmF2LXdyYXBwZWQ9XCJ0cnVlXCJdIHtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IC8qIFN3aXRjaCB0byB0b3AgYWxpZ25tZW50IHdoZW4gd3JhcHBlZCAqL1xuICAvKiBBbGxvdyBuYXR1cmFsIGhlaWdodCBiYXNlZCBvbiBjb250ZW50ICovXG4gIHBhZGRpbmctdG9wOiB2YXIoLS1zcGFjZS0zKTsgLyogTW9yZSBwYWRkaW5nIHdoZW4gd3JhcHBlZCAqL1xuICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2UtMyk7XG59XG5cbi5oZWFkZXItd3JhcHBlcltkYXRhLW5hdi13cmFwcGVkPVwidHJ1ZVwiXSB7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyAvKiBBbGlnbiBpdGVtcyB0byB0b3Agd2hlbiB3cmFwcGVkICovXG4gIGhlaWdodDogYXV0bzsgLyogRXhwbGljaXQgYXV0byBoZWlnaHQgZm9yIHdyYXBwZWQgc3RhdGUgKi9cbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMikgMDsgLyogRXh0cmEgdmVydGljYWwgcGFkZGluZyBmb3Igd3JhcHBlZCBzdGF0ZSAqL1xufVxuXG4vKiBGYWxsYmFjayBmb3IgYnJvd3NlcnMgdGhhdCBzdXBwb3J0IDpoYXMoKSBzZWxlY3RvciAqL1xuLmhlYWRlci1jb250YWluZXIgLmxheW91dC1jb250YWluZXI6aGFzKC5oZWFkZXItbmF2LWxpc3RbZGF0YS13cmFwcGVkPVwidHJ1ZVwiXSkge1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgLyogQWxsb3cgbmF0dXJhbCBoZWlnaHQgYmFzZWQgb24gY29udGVudCAqL1xuICBwYWRkaW5nLXRvcDogdmFyKC0tc3BhY2UtMyk7XG4gIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjZS0zKTtcbn1cblxuLmhlYWRlci13cmFwcGVyOmhhcyguaGVhZGVyLW5hdi1saXN0W2RhdGEtd3JhcHBlZD1cInRydWVcIl0pIHtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIGhlaWdodDogYXV0bztcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMikgMDtcbn1cblxuLyogRml4ZWQgQ29udGFpbmVyIC0gTm8gbG9uZ2VyIHVzZWQgKGxvZ28gbW92ZWQgdG8gbmF2IGxpc3QpICovXG4uaGVhZGVyLWZpeGVkLWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IG5vbmU7IC8qIENvbnRhaW5lciBubyBsb25nZXIgbmVlZGVkICovXG59XG5cbi8qID09PT09IExPR08gRU5IQU5DRU1FTlRTID09PT09ICovXG4uaGVhZGVyLWxvZ28tbGluayB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZsZXg6IDAgMCBhdXRvOyAvKiBEbyBub3Qgc2hyaW5rIGxvZ28gKi9cbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMik7XG4gIC8qIFJlbW92ZSBtYXJnaW4gYW5kIG1pbi1oZWlnaHQgdG8gcHJldmVudCBpbnRlcmZlcmluZyB3aXRoIGFsaWdubWVudCBjb250YWluZXIgY2VudGVyaW5nICovXG4gIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tZHVyYXRpb24tZmFzdCk7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLyogTGV0IGFsaWdubWVudCBjb250YWluZXIgaGFuZGxlIHZlcnRpY2FsIGNlbnRlcmluZyAqL1xufVxuXG4uaGVhZGVyLWxvZ28tbGluazpob3ZlciB7XG4gIG9wYWNpdHk6IDAuODtcbn1cblxuLmhlYWRlci1sb2dvLWxpbms6Zm9jdXMtdmlzaWJsZSB7XG4gIG91dGxpbmU6IDJweCBzb2xpZCByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xuICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xufVxuXG4uaGVhZGVyLWxvZ28ge1xuICBoZWlnaHQ6IGF1dG87XG4gIHdpZHRoOiBhdXRvO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vKiBNb2JpbGUgbG9nbyAoY29tcGFjdCBjbG91ZCBpY29uKSAqL1xuLmhlYWRlci1sb2dvLW1vYmlsZSB7XG4gIGhlaWdodDogdmFyKC0tc3BhY2UtOCk7XG4gIC8qIDMycHggKi9cbiAgbWF4LXdpZHRoOiBjYWxjKHZhcigtLXNwYWNlLTgpICogMS44NzUpO1xuICAvKiA2MHB4ICovXG59XG5cbi8qIERlc2t0b3AgbG9nbyBoaWRkZW4gb24gbW9iaWxlICovXG4uaGVhZGVyLWxvZ28tZGVza3RvcCB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi8qID09PT09IE5BVklHQVRJT04gU1RSVUNUVVJFID09PT09ICovXG5cbi8qIERlc2t0b3AgTmF2aWdhdGlvbiAtIENvbnRhaW5lZCB3aXRoaW4gd3JhcHBlciAqL1xuLmhlYWRlci1uYXYge1xuICBkaXNwbGF5OiBub25lO1xuICBmbGV4OiAxOyAvKiBUYWtlIGF2YWlsYWJsZSBzcGFjZSBiZXR3ZWVuIGxvZ28gYW5kIGFjdGlvbnMgKi9cbiAgbWluLXdpZHRoOiAwOyAvKiBBbGxvdyBzaHJpbmtpbmcgaWYgbmVlZGVkICovXG4gIG1heC13aWR0aDogMTAwJTsgLyogUHJldmVudCBvdmVyZmxvdyAqL1xuICB3aGl0ZS1zcGFjZTogbm93cmFwOyAvKiBQcmV2ZW50IGFueSB0ZXh0IHdyYXBwaW5nICovXG59XG5cbi5oZWFkZXItbmF2LWxpc3Qge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IHZhcigtLXNwYWNlLTIpO1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGZsZXgtd3JhcDogbm93cmFwOyAvKiBQcmV2ZW50IHdyYXBwaW5nIG9uIGRlc2t0b3AgKi9cbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IC8qIENlbnRlciBuYXZpZ2F0aW9uIGl0ZW1zICovXG4gIHdpZHRoOiAxMDAlOyAvKiBVc2UgZnVsbCBhdmFpbGFibGUgd2lkdGggKi9cbiAgbWF4LXdpZHRoOiAxMDAlOyAvKiBQcmV2ZW50IG92ZXJmbG93ICovXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7IC8qIFByZXZlbnQgdGV4dCB3cmFwcGluZyB3aXRoaW4gaXRlbXMgKi9cbiAgcm93LWdhcDogdmFyKC0tc3BhY2UtMSk7XG4gIC8qIFBlcmZvcm1hbmNlOiBvbmx5IHRyYW5zaXRpb24gd2hhdCBjaGFuZ2VzICovXG4gIHRyYW5zaXRpb246IGdhcCB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpO1xufVxuXG4uaGVhZGVyLW5hdi1pdGVtIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4vKiBMb2dvIGl0ZW0gaW4gbmF2IGxpc3QgLSBzcGVjaWFsIHN0eWxpbmcgKi9cbi5uYXYtbG9nby1pdGVtIHtcbiAgZmxleDogbm9uZTsgLyogT3B0aW1pemVkIHNob3J0aGFuZCBmb3IgZmxleDogMCAwIGF1dG8gKi9cbiAgbWFyZ2luLXJpZ2h0OiB2YXIoLS1zcGFjZS02KTsgLyogRXh0cmEgc3BhY2luZyBhZnRlciBsb2dvICovXG59XG5cbi8qIEJ1dHRvbiBpdGVtIGluIG5hdiBsaXN0IC0gc3BlY2lhbCBzdHlsaW5nICovXG4ubmF2LWJ1dHRvbi1pdGVtIHtcbiAgZmxleDogbm9uZTsgLyogT3B0aW1pemVkIHNob3J0aGFuZCBmb3IgZmxleDogMCAwIGF1dG8gKi9cbiAgbWFyZ2luLWxlZnQ6IHZhcigtLXNwYWNlLTQpOyAvKiBBZGQgc3BhY2luZyBmcm9tIG5hdiBpdGVtcyAqL1xufVxuXG4vKiBOYXYgTGlua3MgLSBTdHJ1Y3R1cmUgYW5kIHRyYW5zaXRpb25zIG9ubHkgKi9cbi5oZWFkZXItbmF2LWxpbmsge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgLyogUmVtb3ZlIGV4cGxpY2l0IGhlaWdodCBjb25zdHJhaW50cyB0byBsZXQgYWxpZ25tZW50IGNvbnRhaW5lciBoYW5kbGUgY2VudGVyaW5nICovXG4gIG1pbi1oZWlnaHQ6IHZhcigtLXRvdWNoLXRhcmdldC1taW4sIDQ4cHgpO1xuICAvKiBLZWVwIG1pbi1oZWlnaHQgZm9yIHRvdWNoIHRhcmdldCBjb21wbGlhbmNlICovXG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpIHZhcigtLXNwYWNlLTMpO1xuICAvKiBCYWxhbmNlZCBwYWRkaW5nIGZvciB0b3VjaCB0YXJnZXRzICovXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC8qIEVuc3VyZSBwYWRkaW5nIGlzIGluY2x1ZGVkIGluIGhlaWdodCBjYWxjdWxhdGlvbiAqL1xuICBsaW5lLWhlaWdodDogMTtcbiAgLyogUHJldmVudCBsaW5lLWhlaWdodCBmcm9tIGFmZmVjdGluZyBoZWlnaHQgKi9cbiAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xuICAvKiBPdmVycmlkZSBnbG9iYWwgLmRlc2NyaXB0aW9uIG1hcmdpbiBmb3IgcHJvcGVyIGFsaWdubWVudCAqL1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWZvcmVncm91bmQpKTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGltaW5nLWZhc3QpO1xuICAvKiBUeXBvZ3JhcGh5IGhhbmRsZWQgYnkgZGVzY3JpcHRpb24gY2xhc3MgaW4gY29tcG9uZW50IEpTWCAqL1xufVxuXG4uaGVhZGVyLW5hdi1saW5rOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5KSAvIDAuMDUpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbn1cblxuLmhlYWRlci1uYXYtbGluazpmb2N1cy12aXNpYmxlIHtcbiAgb3V0bGluZTogMnB4IHNvbGlkIHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG4gIG91dGxpbmUtb2Zmc2V0OiAycHg7XG59XG5cbi5oZWFkZXItbmF2LWxpbmtbYXJpYS1jdXJyZW50PVwicGFnZVwiXSB7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xuICAvKiBmb250LXdlaWdodCBoYW5kbGVkIGJ5IGRlc2NyaXB0aW9uIGNsYXNzICovXG59XG5cbi8qIEhlcml0YWdlIHJlZCBmb3IgYWN0aXZlIG5hdmlnYXRpb24gLSBTdHJhdGVnaWMgMTAlIHVzYWdlIHdpdGggZW5oYW5jZWQgc3BhY2luZyAqL1xuLmhlYWRlci1uYXYtbGluay0tYWN0aXZlIHtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpKSAhaW1wb3J0YW50O1xuICAvKiBmb250LXdlaWdodCBoYW5kbGVkIGJ5IGdsb2JhbCB0eXBvZ3JhcGh5IGNsYXNzZXMgKi9cbiAgLyogRXh0cmEgc3BhY2luZyBmb3IgcmVkIGVsZW1lbnRzICgyNS0zNSUgbW9yZSkgZm9yIGJyYW5kIGNvbXBsaWFuY2UgKi9cbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMikgY2FsYyh2YXIoLS1zcGFjZS0zKSAqIDEuMyk7XG4gIC8qIDMwJSBleHRyYSBwYWRkaW5nIGhvcml6b250YWxseSAqL1xuICBtYXJnaW46IDAgY2FsYyh2YXIoLS1zcGFjZS0xKSAqIDAuMyk7XG4gIC8qIEFkZGl0aW9uYWwgbWFyZ2luIGZvciAyNHB4IG1pbmltdW0gaXNvbGF0aW9uIG9uIG1vYmlsZSAqL1xufVxuXG4vKiBPcHRpb25hbCBoZXJpdGFnZSByZWQgaW5kaWNhdG9yIGZvciBhY3RpdmUgcGFnZSAqL1xuLmhlYWRlci1uYXYtbGlua1thcmlhLWN1cnJlbnQ9XCJwYWdlXCJdOjphZnRlciB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogY2FsYygtMSAqIHZhcigtLXNwYWNlLTEpIC8gMik7XG4gIC8qIC0ycHggdXNpbmcgdmFyaWFibGUgKi9cbiAgbGVmdDogdmFyKC0tc3BhY2UtMyk7XG4gIHJpZ2h0OiB2YXIoLS1zcGFjZS0zKTtcbiAgaGVpZ2h0OiB2YXIoLS1zcGFjZS0xKTtcbiAgLyogMnB4IHVzaW5nIHZhcmlhYmxlICovXG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpKTtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS10aW1pbmctZmFzdCk7XG59XG5cbi5oZWFkZXItbmF2LWl0ZW06aG92ZXIgLmhlYWRlci1uYXYtbGlua1thcmlhLWN1cnJlbnQ9XCJwYWdlXCJdOjphZnRlciB7XG4gIG9wYWNpdHk6IDE7XG59XG5cbi8qIERyb3Bkb3duICovXG4uaGVhZGVyLWRyb3Bkb3duIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4vKiBOZXcgc3BsaXQtYnV0dG9uIGdyb3VwIGZvciBsaW5rICsgdG9nZ2xlICovXG4uaGVhZGVyLWRyb3Bkb3duLWdyb3VwIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7IC8qIENoYW5nZWQgZnJvbSBjZW50ZXIgdG8gc3RyZXRjaCBmb3IgcHJvcGVyIGJhc2VsaW5lIGFsaWdubWVudCAqL1xuICBnYXA6IDA7XG59XG5cbi8qIExpbmsgcGFydCBvZiB0aGUgZHJvcGRvd24gKG5hdmlnYXRlcyB0byBwYXJlbnQgcGFnZSkgKi9cbi5oZWFkZXItZHJvcGRvd24tbGluayB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1pbi1oZWlnaHQ6IHZhcigtLXRvdWNoLXRhcmdldC1taW4sIDQ4cHgpO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0yKSB2YXIoLS1zcGFjZS0zKTtcbiAgLyogQmFsYW5jZWQgcGFkZGluZyBmb3IgdG91Y2ggdGFyZ2V0cyAqL1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBsaW5lLWhlaWdodDogMTtcbiAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xuICAvKiBPdmVycmlkZSBnbG9iYWwgLmRlc2NyaXB0aW9uIG1hcmdpbiBmb3IgcHJvcGVyIGFsaWdubWVudCAqL1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkpO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGltaW5nLWZhc3QpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpIDAgMCB2YXIoLS1yYWRpdXMtbWQpO1xufVxuXG4uaGVhZGVyLWRyb3Bkb3duLWxpbms6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnkpIC8gMC4wNSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xufVxuXG4uaGVhZGVyLWRyb3Bkb3duLWxpbmstLWFjdGl2ZSB7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItaGVyaXRhZ2UpKTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxuLmhlYWRlci1kcm9wZG93bi1saW5rOmZvY3VzLXZpc2libGUge1xuICBvdXRsaW5lOiAycHggc29saWQgcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbiAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbiAgei1pbmRleDogMTtcbn1cblxuLyogVG9nZ2xlIGJ1dHRvbiBwYXJ0IChvcGVucyBkcm9wZG93biBtZW51KSAqL1xuLmhlYWRlci1kcm9wZG93bi10b2dnbGUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgbWluLWhlaWdodDogdmFyKC0tdG91Y2gtdGFyZ2V0LW1pbiwgNDhweCk7XG4gIG1pbi13aWR0aDogMjhweDtcbiAgLyogRnVydGhlciByZWR1Y2VkIHdpZHRoICovXG4gIHBhZGRpbmc6IGNhbGModmFyKC0tc3BhY2UtMSkgLyAyKTtcbiAgLyogRXZlbiBzbWFsbGVyIHBhZGRpbmcgKi9cbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkpO1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICBib3JkZXI6IG5vbmU7XG4gIC8qIGJvcmRlci1sZWZ0IHJlbW92ZWQgZm9yIHNlYW1sZXNzIG5hdi9kcm9wZG93biBpbnRlZ3JhdGlvbiAqL1xuICBib3JkZXItcmFkaXVzOiAwIHZhcigtLXJhZGl1cy1tZCkgdmFyKC0tcmFkaXVzLW1kKSAwO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aW1pbmctZmFzdCk7XG59XG5cbi8qIEVuc3VyZSBpY29uIGNvbnRhaW5lciBkb2Vzbid0IGFmZmVjdCBhbGlnbm1lbnQgKi9cbi5oZWFkZXItZHJvcGRvd24tdG9nZ2xlIC5pY29uLWNvbnRhaW5lci14cyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4uaGVhZGVyLWRyb3Bkb3duLXRvZ2dsZTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeSkgLyAwLjA1KTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG59XG5cbi5oZWFkZXItZHJvcGRvd24tdG9nZ2xlOmZvY3VzLXZpc2libGUge1xuICBvdXRsaW5lOiAycHggc29saWQgcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbiAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbiAgei1pbmRleDogMTtcbn1cblxuLmhlYWRlci1kcm9wZG93bi10b2dnbGVbYXJpYS1leHBhbmRlZD1cInRydWVcIl0gLmhlYWRlci1kcm9wZG93bi1pY29uIHtcbiAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbn1cblxuLyogTGVnYWN5IHRyaWdnZXIgc3R5bGVzIChrZXB0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KSAqL1xuLmhlYWRlci1kcm9wZG93bi10cmlnZ2VyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0xKTtcbiAgLyogUmVtb3ZlIGV4cGxpY2l0IGhlaWdodCBjb25zdHJhaW50cyB0byBsZXQgYWxpZ25tZW50IGNvbnRhaW5lciBoYW5kbGUgY2VudGVyaW5nICovXG4gIG1pbi1oZWlnaHQ6IHZhcigtLXRvdWNoLXRhcmdldC1taW4sIDQ4cHgpO1xuICAvKiBLZWVwIG1pbi1oZWlnaHQgZm9yIHRvdWNoIHRhcmdldCBjb21wbGlhbmNlICovXG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpIHZhcigtLXNwYWNlLTMpO1xuICAvKiBBZGQgdmVydGljYWwgcGFkZGluZyBmb3IgdG91Y2ggdGFyZ2V0ICovXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC8qIEVuc3VyZSBwYWRkaW5nIGlzIGluY2x1ZGVkIGluIGhlaWdodCBjYWxjdWxhdGlvbiAqL1xuICBsaW5lLWhlaWdodDogMTtcbiAgLyogUHJldmVudCBsaW5lLWhlaWdodCBmcm9tIGFmZmVjdGluZyBoZWlnaHQgKi9cbiAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xuICAvKiBPdmVycmlkZSBnbG9iYWwgLmRlc2NyaXB0aW9uIG1hcmdpbiBmb3IgcHJvcGVyIGFsaWdubWVudCAqL1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWZvcmVncm91bmQpKTtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aW1pbmctZmFzdCk7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAvKiBUeXBvZ3JhcGh5IGhhbmRsZWQgYnkgZGVzY3JpcHRpb24gY2xhc3MgaW4gY29tcG9uZW50IEpTWCAqL1xuICAvKiBSZW1vdmUgYWxpZ24tc2VsZjogY2VudGVyIHRvIGxldCBhbGlnbm1lbnQgY29udGFpbmVyIGhhbmRsZSBjZW50ZXJpbmcgKi9cbn1cblxuLmhlYWRlci1kcm9wZG93bi10cmlnZ2VyOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5KSAvIDAuMDUpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbn1cblxuLmhlYWRlci1kcm9wZG93bi10cmlnZ2VyOmZvY3VzLXZpc2libGUge1xuICBvdXRsaW5lOiAycHggc29saWQgcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbiAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbn1cblxuLmhlYWRlci1kcm9wZG93bi1pY29uIHtcbiAgLyogTGV0IGljb24gc3lzdGVtIGhhbmRsZSBhbGwgc2l6aW5nIGFuZCBhbGlnbm1lbnQgKi9cbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLWR1cmF0aW9uLWZhc3QpO1xufVxuXG4uaGVhZGVyLWRyb3Bkb3duLS1vcGVuIC5oZWFkZXItZHJvcGRvd24taWNvbiB7XG4gIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG59XG5cbi8qID09PT09IERST1BET1dOIEVOSEFOQ0VNRU5UUyA9PT09PSAqL1xuXG4vKiBEcm9wZG93biBNZW51IENvbnRhaW5lciAqL1xuLmhlYWRlci1kcm9wZG93bi1tZW51IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEwMCU7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS0yKTtcbiAgbWluLXdpZHRoOiAyMjBweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLWJhY2tncm91bmQpKTtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICBib3gtc2hhZG93OiAwIDEwcHggNDBweCByZ2JhKDAsIDAsIDAsIDAuMTUpLCAwIDJweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4wOCk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpO1xuICBvcGFjaXR5OiAwO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKC0xMHB4KTtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpbWluZy1mYXN0KTtcbn1cblxuLyogSG92ZXIgc3RhdGUgZm9yIGRyb3Bkb3duIG9uIGRlc2t0b3AgKi9cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuaGVhZGVyLWRyb3Bkb3duOmhvdmVyIC5oZWFkZXItZHJvcGRvd24tbWVudSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKDApO1xuICB9XG5cbiAgLmhlYWRlci1kcm9wZG93bjpob3ZlciAuaGVhZGVyLWRyb3Bkb3duLWljb24ge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG4gIH1cbn1cblxuLmhlYWRlci1kcm9wZG93bi0tb3BlbiAuaGVhZGVyLWRyb3Bkb3duLW1lbnUge1xuICBvcGFjaXR5OiAxO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgwKTtcbn1cblxuLmhlYWRlci1kcm9wZG93bi1pdGVtIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0yKSB2YXIoLS1zcGFjZS0zKTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1tdXRlZC1mb3JlZ3JvdW5kKSk7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLWR1cmF0aW9uLWZhc3QpO1xufVxuXG4uaGVhZGVyLWRyb3Bkb3duLWl0ZW06aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnkpIC8gMC4wNSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkpO1xufVxuXG4uaGVhZGVyLWRyb3Bkb3duLWl0ZW06Zm9jdXMtdmlzaWJsZSB7XG4gIG91dGxpbmU6IDJweCBzb2xpZCByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xuICBvdXRsaW5lLW9mZnNldDogLTJweDtcbn1cblxuLmhlYWRlci1kcm9wZG93bi1pdGVtW2FyaWEtY3VycmVudD1cInBhZ2VcIl0ge1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbiAgLyogZm9udC13ZWlnaHQgaGFuZGxlZCBieSBkZXNjcmlwdGlvbiBjbGFzcyAqL1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnkpIC8gMC4xKTtcbn1cblxuLyogPT09PT0gQUNUSU9OIEFSRUEgRU5IQU5DRU1FTlRTID09PT09ICovXG4uaGVhZGVyLWFjdGlvbnMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IHZhcigtLXNwYWNlLTQpOyAvKiBDb25zaXN0ZW50IHNwYWNpbmcgd2l0aGluIGFjdGlvbiBhcmVhICovXG4gIGZsZXg6IDAgMCBhdXRvOyAvKiBLZWVwIGFjdGlvbnMgZml4ZWQgd2lkdGg7IGFsbG93IG5hdiB0byBhYnNvcmIgc2hyaW5rICovXG4gIGp1c3RpZnktc2VsZjogZW5kOyAvKiBBbGlnbiB0byBlbmQgb2YgZ3JpZCBjZWxsICovXG4gIGFsaWduLXNlbGY6IGNlbnRlcjsgLyogQ2VudGVyIHZlcnRpY2FsbHkgaW4gZ3JpZCBjZWxsIHNpbmNlIHdyYXBwZXIgdXNlcyBmbGV4LXN0YXJ0ICovXG4gIC8qIFJlbW92ZWQgcGFkZGluZy1sZWZ0IGFzIGdyaWQgZ2FwIG5vdyBoYW5kbGVzIHNwYWNpbmcgKi9cbiAgbWluLXdpZHRoOiAxMjBweDsgLyogTWluaW11bSB3aWR0aCB0byBlbnN1cmUgY29udGFjdCBidXR0b24gZml0cyAqL1xufVxuXG4vKiA9PT09PSBNT0JJTEUgTUVOVSBFTkhBTkNFTUVOVFMgPT09PT0gKi9cblxuLyogTW9iaWxlIFRvZ2dsZSBCdXR0b24gKi9cbi5oZWFkZXItbW9iaWxlLXRvZ2dsZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB3aWR0aDogNDhweDsgLyogRW5zdXJlIGV4YWN0bHkgNDhweCBmb3IgdG91Y2ggdGFyZ2V0cyAqL1xuICBoZWlnaHQ6IDQ4cHg7IC8qIEVuc3VyZSBleGFjdGx5IDQ4cHggZm9yIHRvdWNoIHRhcmdldHMgKi9cbiAgcGFkZGluZzogMDtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogbm9uZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLWR1cmF0aW9uLWZhc3QpO1xuICBqdXN0aWZ5LXNlbGY6IGVuZDsgLyogQWxpZ24gdG8gZW5kIG9mIGdyaWQgY2VsbCAqL1xuICBmbGV4LXNocmluazogMDsgLyogUHJldmVudCBzaHJpbmtpbmcgKi9cbn1cblxuLmhlYWRlci1tb2JpbGUtdG9nZ2xlOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5KSAvIDAuMDUpO1xufVxuXG4uaGVhZGVyLW1vYmlsZS10b2dnbGU6Zm9jdXMtdmlzaWJsZSB7XG4gIG91dGxpbmU6IDJweCBzb2xpZCByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xuICBvdXRsaW5lLW9mZnNldDogLTJweDtcbn1cblxuLmhlYWRlci1tb2JpbGUtdG9nZ2xlLWljb24ge1xuICAvKiBMZXQgaWNvbiBzeXN0ZW0gaGFuZGxlIGFsbCBzaXppbmcgYW5kIGFsaWdubWVudCAqL1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWZvcmVncm91bmQpKTtcbn1cblxuLyogQ29udGFjdCBCdXR0b24gLSBOb3cgaW4gbmF2IGxpc3QgKi9cbi5uYXYtYnV0dG9uLWl0ZW0gLmhlYWRlci1jb250YWN0LWJ0biB7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpIHZhcigtLXNwYWNlLTQpICFpbXBvcnRhbnQ7XG4gIG1pbi1oZWlnaHQ6IDQ4cHggIWltcG9ydGFudDtcbiAgaGVpZ2h0OiA0OHB4ICFpbXBvcnRhbnQ7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBsaW5lLWhlaWdodDogMTtcbiAgZmxleC1zaHJpbms6IDA7XG4gIG1pbi13aWR0aDogMTAwcHg7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi8qIEhlcml0YWdlIENUQSBCdXR0b24gLSBTdHJhdGVnaWMgUmVkIFVzYWdlICgxMCUgcnVsZSkgd2l0aCBlbmhhbmNlZCBzcGFjaW5nICovXG4uaGVhZGVyLWN0YS5idG4taGVyaXRhZ2Uge1xuICAvKiBCYXNlIHN0eWxlcyBmcm9tIGJ0bi1oZXJpdGFnZSBpbiBpbmRleC5jc3MgKi9cbiAgLyogRXh0cmEgc3BhY2luZyBmb3Igc3RyYXRlZ2ljIHJlZCBlbGVtZW50cyAoMjUtMzUlIG1vcmUpIGZvciBicmFuZCBjb21wbGlhbmNlICovXG4gIG1hcmdpbjogMCBjYWxjKHZhcigtLXNwYWNlLTIpICogMS4zKTtcbiAgLyogMzAlIGV4dHJhIG1hcmdpbiAqL1xuICBwYWRkaW5nOiBjYWxjKHZhcigtLXNwYWNlLTIpICsgMnB4KSBjYWxjKHZhcigtLXNwYWNlLTUpICogMS4zKSAhaW1wb3J0YW50O1xuICAvKiAzMCUgZXh0cmEgcGFkZGluZyAqL1xuXG4gIC8qIEVuaGFuY2VkIHRyYW5zaXRpb25zICovXG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpO1xuXG4gIC8qIExldCBhbGlnbm1lbnQgY29udGFpbmVyIGhhbmRsZSB2ZXJ0aWNhbCBjZW50ZXJpbmcgKi9cbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLyogRW5zdXJlIHBhZGRpbmcgaXMgaW5jbHVkZWQgaW4gaGVpZ2h0IGNhbGN1bGF0aW9uICovXG4gIC8qIFJlbW92ZSBleHBsaWNpdCBoZWlnaHQgdG8gbGV0IGFsaWdubWVudCBjb250YWluZXIgaGFuZGxlIGNlbnRlcmluZyAqL1xufVxuXG4uaGVhZGVyLWN0YS5idG4taGVyaXRhZ2U6aG92ZXIge1xuICAvKiBNaWNyby1pbnRlcmFjdGlvbiBlbmhhbmNlbWVudCAqL1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDhweCByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkgLyAwLjIpO1xufVxuXG4uaGVhZGVyLWN0YS5idG4taGVyaXRhZ2U6YWN0aXZlIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpIC8gMC4yKTtcbn1cblxuLyogTW9iaWxlIE1lbnUgQ29udGFpbmVyICovXG4uaGVhZGVyLW1vYmlsZS1tZW51IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEwMCU7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItYmFja2dyb3VuZCkpO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiKHZhcigtLWNvbG9yLWJvcmRlcikpO1xuICBib3gtc2hhZG93OiAwIDRweCA2cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIG1heC1oZWlnaHQ6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRyYW5zaXRpb246IG1heC1oZWlnaHQgdmFyKC0tdGltaW5nLWZhc3QpO1xufVxuXG4uaGVhZGVyLW1vYmlsZS1tZW51W2FyaWEtaGlkZGVuPVwiZmFsc2VcIl0sXG4uaGVhZGVyLW1vYmlsZS1tZW51LS1vcGVuIHtcbiAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIHZhcigtLXNwYWNlLTE2KSk7XG4gIC8qIFVzZSBDU1MgdmFyaWFibGUgZm9yIDY0cHggKi9cbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuXG4vKiBNb2JpbGUgTmF2aWdhdGlvbiBTdHJ1Y3R1cmUgKi9cbi5oZWFkZXItbW9iaWxlLW5hdiB7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTQpIDA7XG59XG5cbi5oZWFkZXItbW9iaWxlLW5hdi1saXN0IHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xufVxuXG4uaGVhZGVyLW1vYmlsZS1uYXYtaXRlbSB7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKHZhcigtLWNvbG9yLWJvcmRlcikgLyAwLjUpO1xufVxuXG4uaGVhZGVyLW1vYmlsZS1uYXYtaXRlbTpsYXN0LWNoaWxkIHtcbiAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbn1cblxuLyogTW9iaWxlIE5hdiBMaW5rcyAtIFRvdWNoLW9wdGltaXplZCAqL1xuLmhlYWRlci1tb2JpbGUtbmF2LWxpbmsge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB3aWR0aDogMTAwJTtcbiAgbWluLWhlaWdodDogdmFyKC0tdG91Y2gtdGFyZ2V0LW1pbiwgNDhweCk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTMpIHZhcigtLXNwYWNlLTQpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWZvcmVncm91bmQpKTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLWR1cmF0aW9uLWZhc3QpO1xufVxuXG4uaGVhZGVyLW1vYmlsZS1uYXYtbGluazpob3Zlcixcbi5oZWFkZXItbW9iaWxlLW5hdi1saW5rOmZvY3VzLXZpc2libGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnkpIC8gMC4wNSk7XG59XG5cbi5oZWFkZXItbW9iaWxlLW5hdi1saW5rW2FyaWEtY3VycmVudD1cInBhZ2VcIl0ge1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbiAgLyogZm9udC13ZWlnaHQgaGFuZGxlZCBieSBkZXNjcmlwdGlvbiBjbGFzcyAqL1xufVxuXG4vKiBBY3RpdmUgc3RhdGUgY2xhc3MgZm9yIG1vYmlsZSBuYXYgbGlua3MgLSBTdHJhdGVnaWMgcmVkIHVzYWdlIHdpdGggZW5oYW5jZWQgc3BhY2luZyAqL1xuLmhlYWRlci1tb2JpbGUtbmF2LWxpbmstLWFjdGl2ZSB7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSkgIWltcG9ydGFudDtcbiAgLyogZm9udC13ZWlnaHQgaGFuZGxlZCBieSBnbG9iYWwgdHlwb2dyYXBoeSBjbGFzc2VzICovXG4gIC8qIEV4dHJhIHNwYWNpbmcgZm9yIHJlZCBlbGVtZW50cyB3aXRoIDI0cHggbWluaW11bSBpc29sYXRpb24gb24gbW9iaWxlICovXG4gIHBhZGRpbmc6IGNhbGModmFyKC0tc3BhY2UtMykgKyB2YXIoLS1zcGFjZS0xKSkgY2FsYyh2YXIoLS1zcGFjZS00KSAqIDEuMyk7XG4gIC8qIDI1JSBleHRyYSBwYWRkaW5nICsgNHB4IGV4dHJhIHZlcnRpY2FsIGZvciBpc29sYXRpb24gKi9cbiAgbWFyZ2luOiB2YXIoLS1zcGFjZS0xKSAwO1xuICAvKiBBZGRpdGlvbmFsIG1hcmdpbiBmb3IgMjRweCBtaW5pbXVtIGlzb2xhdGlvbiAqL1xufVxuXG4vKiBNb2JpbGUgRHJvcGRvd24gKi9cbi5oZWFkZXItbW9iaWxlLWRyb3Bkb3duIHtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi5oZWFkZXItbW9iaWxlLWRyb3Bkb3duLXRyaWdnZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIHdpZHRoOiAxMDAlO1xuICBtaW4taGVpZ2h0OiB2YXIoLS10b3VjaC10YXJnZXQtbWluLCA0OHB4KTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMykgdmFyKC0tc3BhY2UtNCk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkpO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS1kdXJhdGlvbi1mYXN0KTtcbn1cblxuLmhlYWRlci1tb2JpbGUtZHJvcGRvd24tdHJpZ2dlcjpob3Zlcixcbi5oZWFkZXItbW9iaWxlLWRyb3Bkb3duLXRyaWdnZXI6Zm9jdXMtdmlzaWJsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeSkgLyAwLjA1KTtcbn1cblxuLmhlYWRlci1tb2JpbGUtZHJvcGRvd24tdHJpZ2dlcjo6YWZ0ZXIge1xuICBjb250ZW50OiBcIuKWuFwiO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tZHVyYXRpb24tZmFzdCk7XG59XG5cbi5oZWFkZXItbW9iaWxlLWRyb3Bkb3duW29wZW5dIC5oZWFkZXItbW9iaWxlLWRyb3Bkb3duLXRyaWdnZXI6OmFmdGVyIHtcbiAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xufVxuXG4vKiBNb2JpbGUgRHJvcGRvd24gTWVudSAqL1xuLmhlYWRlci1tb2JpbGUtZHJvcGRvd24tbWVudSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tY29sb3ItbXV0ZWQpIC8gMC4zKTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMikgMDtcbn1cblxuLmhlYWRlci1tb2JpbGUtZHJvcGRvd24taXRlbSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHdpZHRoOiAxMDAlO1xuICBtaW4taGVpZ2h0OiB2YXIoLS10b3VjaC10YXJnZXQtbWluLCA0OHB4KTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMikgdmFyKC0tc3BhY2UtNik7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQtZm9yZWdyb3VuZCkpO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS1kdXJhdGlvbi1mYXN0KTtcbn1cblxuLmhlYWRlci1tb2JpbGUtZHJvcGRvd24taXRlbTpob3Zlcixcbi5oZWFkZXItbW9iaWxlLWRyb3Bkb3duLWl0ZW06Zm9jdXMtdmlzaWJsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeSkgLyAwLjA1KTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1mb3JlZ3JvdW5kKSk7XG4gIHBhZGRpbmctbGVmdDogdmFyKC0tc3BhY2UtNyk7XG59XG5cbi5oZWFkZXItbW9iaWxlLWRyb3Bkb3duLWl0ZW1bYXJpYS1jdXJyZW50PVwicGFnZVwiXSB7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xuICAvKiBmb250LXdlaWdodCBoYW5kbGVkIGJ5IGRlc2NyaXB0aW9uIGNsYXNzICovXG59XG5cbi8qIEFjdGl2ZSBzdGF0ZSBjbGFzcyBmb3IgbW9iaWxlIGRyb3Bkb3duIGl0ZW1zIC0gU3RyYXRlZ2ljIHJlZCB1c2FnZSB3aXRoIGVuaGFuY2VkIHNwYWNpbmcgKi9cbi5oZWFkZXItbW9iaWxlLWRyb3Bkb3duLWl0ZW0tLWFjdGl2ZSB7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSkgIWltcG9ydGFudDtcbiAgLyogZm9udC13ZWlnaHQgaGFuZGxlZCBieSBnbG9iYWwgdHlwb2dyYXBoeSBjbGFzc2VzICovXG4gIC8qIEV4dHJhIHNwYWNpbmcgZm9yIHJlZCBlbGVtZW50cyB3aXRoIDI0cHggbWluaW11bSBpc29sYXRpb24gKi9cbiAgcGFkZGluZzogY2FsYyh2YXIoLS1zcGFjZS0yKSArIHZhcigtLXNwYWNlLTEpKSBjYWxjKHZhcigtLXNwYWNlLTYpICogMS4zKTtcbiAgLyogMzAlIGV4dHJhIHBhZGRpbmcgKyA0cHggZXh0cmEgdmVydGljYWwgZm9yIGlzb2xhdGlvbiAqL1xuICBtYXJnaW46IHZhcigtLXNwYWNlLTEpIDA7XG4gIC8qIEFkZGl0aW9uYWwgbWFyZ2luIGZvciAyNHB4IG1pbmltdW0gaXNvbGF0aW9uICovXG59XG5cbi8qID09PT09IFJFU1BPTlNJVkUgRU5IQU5DRU1FTlRTID09PT09ICovXG5cbi8qIE1vYmlsZSByZXNwb25zaXZlIHNpemluZyAtIDQwJSByZWR1Y3Rpb24gcGVyIHNwYWNpbmctbGF5b3V0LXN0YW5kYXJkLm1kICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLmhlYWRlci1jb250YWluZXIgLmxheW91dC1jb250YWluZXIge1xuICAgIC8qIE1vYmlsZTogTmF0dXJhbCBoZWlnaHQgYmFzZWQgb24gY29udGVudCAqL1xuICAgIC8qIGhlaWdodCByZW1vdmVkIHRvIGFsbG93IGNvbnRlbnQtYmFzZWQgc2l6aW5nICovXG4gICAgd2lkdGg6IDEwMCU7IC8qIEZ1bGwgd2lkdGggb24gbW9iaWxlICovXG4gICAgbWluLXdpZHRoOiAxMDAlOyAvKiBPdmVycmlkZSBkZXNrdG9wIG1pbi13aWR0aCAqL1xuICAgIG1heC13aWR0aDogMTAwJTsgLyogRnVsbCB3aWR0aCAqL1xuICAgIG1hcmdpbjogMDsgLyogTm8gY2VudGVyaW5nIG1hcmdpbiBuZWVkZWQgb24gbW9iaWxlICovXG4gIH1cblxuICAuaGVhZGVyLXdyYXBwZXIge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIGF1dG87IC8qIE5hdmlnYXRpb24gKGxvZ28gdmlzaWJsZSkgfCBNb2JpbGUgdG9nZ2xlICovXG4gIH1cbiAgXG4gIC8qIFNob3cgbmF2aWdhdGlvbiBjb250YWluZXIgYnV0IGhpZGUgbmF2IGl0ZW1zICovXG4gIC5oZWFkZXItbmF2IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuICBcbiAgLyogSGlkZSBhbGwgbmF2IGl0ZW1zIGV4Y2VwdCBsb2dvIG9uIG1vYmlsZSAqL1xuICAuaGVhZGVyLW5hdi1saXN0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDsgLyogQWxsb3cgd3JhcHBpbmcgb24gbW9iaWxlIG9ubHkgKi9cbiAgICB3aWR0aDogMTAwJTsgLyogRnVsbCB3aWR0aCBvbiBtb2JpbGUgKi9cbiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsOyAvKiBBbGxvdyB0ZXh0IHdyYXBwaW5nIG9uIG1vYmlsZSAqL1xuICB9XG4gIFxuICAuaGVhZGVyLW5hdi1pdGVtIHtcbiAgICBkaXNwbGF5OiBub25lOyAvKiBIaWRlIHJlZ3VsYXIgbmF2IGl0ZW1zICovXG4gIH1cbiAgXG4gIC8qIExvZ28gcmVtYWlucyB2aXNpYmxlIG9uIG1vYmlsZSAqL1xuICAubmF2LWxvZ28taXRlbSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwOyAvKiBSZW1vdmUgZXh0cmEgbWFyZ2luIG9uIG1vYmlsZSAqL1xuICB9XG4gIFxuICAvKiBIaWRlIGNvbnRhY3QgYnV0dG9uIG9uIG1vYmlsZSAqL1xuICAubmF2LWJ1dHRvbi1pdGVtIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIFxuICAvKiBBY3Rpb25zIGNvbnRhaW5lciBvbmx5IHNob3dzIG1vYmlsZSB0b2dnbGUgb24gbW9iaWxlICovXG4gIC5oZWFkZXItYWN0aW9ucyB7XG4gICAgZ2FwOiAwOyAvKiBObyBnYXAgbmVlZGVkIHdoZW4gb25seSBtb2JpbGUgdG9nZ2xlIGlzIHZpc2libGUgKi9cbiAgfVxufVxuXG4vKiBUYWJsZXQgKDU2OHB4KykgLSBsYXlvdXQtY29udGFpbmVyIGhhbmRsZXMgcGFkZGluZyAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDU2OHB4KSB7XG4gIC8qIFBhZGRpbmcgaGFuZGxlZCBieSBpbmhlcml0ZWQgbGF5b3V0LWNvbnRhaW5lciByZXNwb25zaXZlIHN0eWxlcyAqL1xuICBcbiAgLyogU2hvdyBjb250YWN0IGJ1dHRvbiBpbiBuYXYgb24gbGFyZ2VyIG1vYmlsZSAqL1xuICAubmF2LWJ1dHRvbi1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9XG4gIFxuICAvKiBBY3Rpb25zIHN0aWxsIHZpc2libGUgb24gbW9iaWxlIGZvciB0b2dnbGUgKi9cbiAgLmhlYWRlci1hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogdmFyKC0tc3BhY2UtMyk7XG4gIH1cbn1cblxuLyogVGFibGV0IHNpemluZyAtIDIwJSByZWR1Y3Rpb24gcGVyIHNwYWNpbmctbGF5b3V0LXN0YW5kYXJkLm1kICovXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiAxMjc5cHgpIHtcbiAgLmhlYWRlci1jb250YWluZXIgLmxheW91dC1jb250YWluZXIge1xuICAgIC8qIFRhYmxldDogTmF0dXJhbCBoZWlnaHQgYmFzZWQgb24gY29udGVudCAqL1xuICAgIC8qIGhlaWdodCByZW1vdmVkIHRvIGFsbG93IGNvbnRlbnQtYmFzZWQgc2l6aW5nICovXG4gIH1cbiAgXG4gIC5oZWFkZXItbmF2LWxpc3Qge1xuICAgIGZsZXgtd3JhcDogbm93cmFwOyAvKiBQcmV2ZW50IHdyYXBwaW5nIG9uIHRhYmxldCAqL1xuICB9XG59XG5cbi8qIFRhYmxldC1EZXNrdG9wIHRyYW5zaXRpb24gKDEwMjRweCspIC0gU2hvdyBmdWxsIG5hdmlnYXRpb24gKi9cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLmhlYWRlci1jb250YWluZXIgLmxheW91dC1jb250YWluZXIge1xuICAgIC8qIE1haW50YWluIGZ1bGwgd2lkdGggd2l0aCBwcm9wZXIgY29udGFpbm1lbnQgKi9cbiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyAvKiBVc2UgZnVsbCB3aWR0aCBmb3IgcHJvcGVyIGNvbnRhaW5tZW50ICovXG4gICAgbWluLXdpZHRoOiAwOyAvKiBBbGxvdyBzaHJpbmtpbmcgaWYgbmVlZGVkICovXG4gICAgbWF4LXdpZHRoOiAxMDB2dyAhaW1wb3J0YW50OyAvKiBFbnN1cmUgaXQgZG9lc24ndCBleGNlZWQgdmlld3BvcnQgKi9cbiAgICBtYXJnaW46IDAgYXV0bzsgLyogRW5zdXJlIGNlbnRlcmluZyAqL1xuICAgIHBhZGRpbmctbGVmdDogdmFyKC0tc3BhY2UtNik7XG4gICAgcGFkZGluZy1yaWdodDogdmFyKC0tc3BhY2UtNik7XG4gIH1cbiAgXG4gIC8qIEZsZXggbGF5b3V0IGZvciBiZXR0ZXIgd2lkdGggaGFuZGxpbmcgKi9cbiAgLmhlYWRlci13cmFwcGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogdmFyKC0tc3BhY2UtNik7XG4gICAgd2lkdGg6IDEwMCU7IC8qIFVzZSBmdWxsIGNvbnRhaW5lciB3aWR0aCAqL1xuICAgIG1heC13aWR0aDogMTIwMHB4OyAvKiBNYWludGFpbiBtYXhpbXVtIHdpZHRoIGNvbnN0cmFpbnQgKi9cbiAgfVxuICBcbiAgLmhlYWRlci1uYXYtbGlzdCB7XG4gICAgZmxleC13cmFwOiBub3dyYXA7IC8qIFByZXZlbnQgd3JhcHBpbmcgb24gdGFibGV0LWRlc2t0b3AgdHJhbnNpdGlvbiAqL1xuICAgIHdpZHRoOiAxMDAlOyAvKiBVc2UgZnVsbCBhdmFpbGFibGUgd2lkdGggKi9cbiAgICBtYXgtd2lkdGg6IDEwMCU7IC8qIFByZXZlbnQgb3ZlcmZsb3cgKi9cbiAgfVxuXG4gIC8qIEhpZGUgbW9iaWxlIHRvZ2dsZSBvbiB0YWJsZXQgKi9cbiAgLmhlYWRlci1tb2JpbGUtdG9nZ2xlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLyogSGlkZSBtb2JpbGUgbWVudSBvbiB0YWJsZXQgKi9cbiAgLmhlYWRlci1tb2JpbGUtbWVudSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLyogU2hvdyBkZXNrdG9wIG5hdmlnYXRpb24gKi9cbiAgLmhlYWRlci1uYXYge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG4gIFxuICAvKiBTaG93IGFsbCBuYXYgaXRlbXMgb24gZGVza3RvcCAqL1xuICAuaGVhZGVyLW5hdi1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9XG4gIFxuICAvKiBTaG93IGNvbnRhY3QgYnV0dG9uIG9uIGRlc2t0b3AgKi9cbiAgLm5hdi1idXR0b24taXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgfVxuICBcbiAgLyogQWN0aW9ucyBjb250YWluZXIgaGlkZGVuIG9uIGRlc2t0b3AgKG5vIG1vYmlsZSB0b2dnbGUpICovXG4gIC5oZWFkZXItYWN0aW9ucyB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC8qIE5hdiBpdGVtcyBpbmhlcml0IGJhc2Ugc3R5bGVzIG9uIHRhYmxldHMgKi9cblxuICAvKiBTbWFsbGVyIHBhZGRpbmcgZm9yIG5hdiBpdGVtcyBvbiB0YWJsZXRzICovXG4gIC5oZWFkZXItbmF2LWxpbmssXG4gIC5oZWFkZXItZHJvcGRvd24tdHJpZ2dlcixcbiAgLmhlYWRlci1kcm9wZG93bi1saW5rIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0yKSB2YXIoLS1zcGFjZS0zKTtcbiAgICBmb250LXNpemU6IDAuOXJlbTsgLyogU2xpZ2h0bHkgc21hbGxlciB0ZXh0IG9uIHRhYmxldHMgKi9cbiAgfVxufVxuXG5cbi8qIERlc2t0b3AgKDEyODBweCspIC0gRnVsbCBuYXZpZ2F0aW9uIHdpdGggaW50ZWxsaWdlbnQgd3JhcHBpbmcgKi9cbkBtZWRpYSAobWluLXdpZHRoOiAxMjgwcHgpIHtcbiAgLmhlYWRlci1jb250YWluZXIgLmxheW91dC1jb250YWluZXIge1xuICAgIC8qIERlc2t0b3A6IE5hdHVyYWwgaGVpZ2h0IGJhc2VkIG9uIGNvbnRlbnQgKi9cbiAgICAvKiBoZWlnaHQgcmVtb3ZlZCB0byBhbGxvdyBjb250ZW50LWJhc2VkIHNpemluZyAqL1xuICAgIC8qIE1haW50YWluIGZ1bGwgd2lkdGggd2l0aCBwcm9wZXIgY29udGFpbm1lbnQgKi9cbiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyAvKiBVc2UgZnVsbCB3aWR0aCBmb3IgcHJvcGVyIGNvbnRhaW5tZW50ICovXG4gICAgbWluLXdpZHRoOiAwOyAvKiBBbGxvdyBzaHJpbmtpbmcgaWYgbmVlZGVkICovXG4gICAgbWF4LXdpZHRoOiAxMDB2dyAhaW1wb3J0YW50OyAvKiBFbnN1cmUgaXQgZG9lc24ndCBleGNlZWQgdmlld3BvcnQgKi9cbiAgICBtYXJnaW46IDAgYXV0bzsgLyogRW5zdXJlIGNlbnRlcmluZyAqL1xuICAgIHBhZGRpbmctbGVmdDogdmFyKC0tc3BhY2UtNik7XG4gICAgcGFkZGluZy1yaWdodDogdmFyKC0tc3BhY2UtNik7XG4gIH1cbiAgXG4gIC8qIEZsZXggbGF5b3V0IGZvciBkZXNrdG9wICovXG4gIC5oZWFkZXItd3JhcHBlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTYpOyAvKiBNYWludGFpbiBnYXAgZm9yIHByb3BlciBzcGFjaW5nICovXG4gICAgd2lkdGg6IDEwMCU7IC8qIFVzZSBmdWxsIGNvbnRhaW5lciB3aWR0aCAqL1xuICAgIG1heC13aWR0aDogMTIwMHB4OyAvKiBNYWludGFpbiBtYXhpbXVtIHdpZHRoIGNvbnN0cmFpbnQgKi9cbiAgfVxuXG4gIC8qIEhpZGUgbW9iaWxlIGxvZ28sIHNob3cgZGVza3RvcCBsb2dvICovXG4gIC5oZWFkZXItbG9nby1tb2JpbGUge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAuaGVhZGVyLWxvZ28tZGVza3RvcCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgaGVpZ2h0OiAzMnB4O1xuICAgIG1heC13aWR0aDogMjAwcHg7XG4gIH1cblxuICAvKiBTaG93IGRlc2t0b3AgbmF2aWdhdGlvbiBjZW50ZXJlZCAqL1xuICAuaGVhZGVyLW5hdiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGZsZXg6IDE7IC8qIFRha2UgYXZhaWxhYmxlIHNwYWNlIGJldHdlZW4gbG9nbyBhbmQgYWN0aW9ucyAqL1xuICAgIG1pbi13aWR0aDogMDsgLyogQWxsb3cgc2hyaW5raW5nIGlmIG5lZWRlZCAqL1xuICAgIG1heC13aWR0aDogMTAwJTsgLyogUHJldmVudCBvdmVyZmxvdyAqL1xuICB9XG4gIFxuICAvKiBOYXYgbGlzdCBpbmhlcml0cyBiYXNlIHJlc3BvbnNpdmUgc3R5bGVzICovXG4gIC5oZWFkZXItbmF2LWxpc3Qge1xuICAgIGZsZXgtd3JhcDogbm93cmFwOyAvKiBFbnN1cmUgbm8gd3JhcHBpbmcgb24gZGVza3RvcCAqL1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOyAvKiBDZW50ZXIgbmF2aWdhdGlvbiBpdGVtcyAqL1xuICAgIHdpZHRoOiAxMDAlOyAvKiBVc2UgZnVsbCBhdmFpbGFibGUgd2lkdGggKi9cbiAgICBtYXgtd2lkdGg6IDEwMCU7IC8qIFByZXZlbnQgb3ZlcmZsb3cgKi9cbiAgfVxuXG4gIC8qIFJlc3RvcmUgbm9ybWFsIGZvbnQgc2l6ZSBhbmQgcGFkZGluZyBmb3IgbmF2IGl0ZW1zIG9uIGRlc2t0b3AgKi9cbiAgLmhlYWRlci1uYXYtbGluayxcbiAgLmhlYWRlci1kcm9wZG93bi10cmlnZ2VyLFxuICAuaGVhZGVyLWRyb3Bkb3duLWxpbmsge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpIHZhcigtLXNwYWNlLTMpO1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDsgLyogUmVzdG9yZSBub3JtYWwgZm9udCBzaXplICovXG4gIH1cbn1cblxuXG4vKiBVbHRyYS13aWRlIERlc2t0b3AgKDE2MDBweCspIC0gTm8gd3JhcHBpbmcgbmVlZGVkICovXG5AbWVkaWEgKG1pbi13aWR0aDogMTYwMHB4KSB7XG4gIC5oZWFkZXItd3JhcHBlciB7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS04KTsgLyogTWFpbnRhaW4gY29uc2lzdGVudCBnYXAgZm9yIGxhcmdlIHNjcmVlbnMgKDMycHgpICovXG4gICAgbWF4LXdpZHRoOiAxNDAwcHg7IC8qIFNsaWdodGx5IGxhcmdlciBtYXgtd2lkdGggZm9yIHVsdHJhLXdpZGUgc2NyZWVucyAqL1xuICB9XG4gIFxuICAuaGVhZGVyLW5hdi1saXN0IHtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTMpOyAvKiBMYXJnZXIgZ2FwcyBvbiB1bHRyYS13aWRlIHNjcmVlbnMgKi9cbiAgICAvKiBmbGV4LXdyYXAgYWxyZWFkeSBzZXQgdG8gbm93cmFwIGluIGJhc2UgZGVza3RvcCBzdHlsZXMgKi9cbiAgfVxuXG4gIC5oZWFkZXItbmF2LWxpbmssXG4gIC5oZWFkZXItZHJvcGRvd24tdHJpZ2dlcixcbiAgLmhlYWRlci1kcm9wZG93bi1saW5rIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0yKSB2YXIoLS1zcGFjZS00KTtcbiAgICAvKiBUeXBvZ3JhcGh5IHNjYWxlcyBoYW5kbGVkIGJ5IGdsb2JhbCBjbGFzc2VzICovXG4gIH1cblxuICAvKiBXaWRlciBkcm9wZG93biBmb3Igc2VydmljZXMgKi9cbiAgLmhlYWRlci1kcm9wZG93bi1tZW51LS13aWRlIHtcbiAgICBtaW4td2lkdGg6IDMyMHB4O1xuICB9XG59XG5cbi8qIFNwZWNpZmljIHN0eWxpbmcgZm9yIHdyYXBwZWQgbmF2aWdhdGlvbiBzdGF0ZXMgKi9cbi5oZWFkZXItbmF2LWxpc3RbZGF0YS13cmFwcGVkPVwidHJ1ZVwiXSB7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyOyAvKiBLZWVwIGl0ZW1zIGNlbnRlcmVkIHdoZW4gd3JhcHBlZCAqL1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsgLyogQWxpZ24gd3JhcHBlZCByb3dzIHRvIHRvcCAqL1xufVxuXG4uaGVhZGVyLW5hdi1saXN0W2RhdGEtd3JhcHBlZD1cInRydWVcIl0gLmhlYWRlci1uYXYtaXRlbSB7XG4gIC8qIFJlZHVjZWQgbWFyZ2luIHRvIHByZXZlbnQgb3ZlcmZsb3cgd2hlbiB3cmFwcGVkICovXG4gIG1hcmdpbi1ib3R0b206IDA7IC8qIFJlbW92ZSBib3R0b20gbWFyZ2luIC0gZ2FwIGhhbmRsZXMgc3BhY2luZyAqL1xufVxuXG4vKiBBY3Rpb25zIGNvbnRhaW5lciBwb3NpdGlvbmluZyB3aGVuIG5hdiBpcyB3cmFwcGVkICovXG4uaGVhZGVyLXdyYXBwZXI6aGFzKC5oZWFkZXItbmF2LWxpc3RbZGF0YS13cmFwcGVkPVwidHJ1ZVwiXSkgLmhlYWRlci1hY3Rpb25zIHtcbiAgYWxpZ24tc2VsZjogZmxleC1zdGFydDsgLyogQWxpZ24gYWN0aW9ucyB0byB0b3Agd2hlbiBuYXYgd3JhcHMgKi9cbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtMik7IC8qIEFkZCB0b3AgbWFyZ2luIGZvciBiZXR0ZXIgdmlzdWFsIHNlcGFyYXRpb24gKi9cbn1cblxuLyogPT09PT0gQUNDRVNTSUJJTElUWSBFTkhBTkNFTUVOVFMgPT09PT0gKi9cblxuLyogTW90aW9uIHByZWZlcmVuY2VzIC0gRW5oYW5jZWQgZm9yIFRERCBjb21wbGlhbmNlICovXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAuaGVhZGVyLW1vYmlsZS1tZW51LFxuICAuaGVhZGVyLWRyb3Bkb3duLW1lbnUsXG4gIC5oZWFkZXItZHJvcGRvd24taWNvbixcbiAgLmhlYWRlci1tb2JpbGUtZHJvcGRvd24tdHJpZ2dlcjo6YWZ0ZXIsXG4gIC5oZWFkZXItY3RhLmJ0bi1oZXJpdGFnZSxcbiAgLmhlYWRlci1sb2dvLWxpbmssXG4gIC5oZWFkZXItbmF2LWxpbmssXG4gIC5oZWFkZXItZHJvcGRvd24tdHJpZ2dlcixcbiAgLmhlYWRlci1tb2JpbGUtdG9nZ2xlLFxuICAuaGVhZGVyLW1vYmlsZS1uYXYtbGluayxcbiAgLmhlYWRlci1kcm9wZG93bi1pdGVtLFxuICAuaGVhZGVyLW1vYmlsZS1kcm9wZG93bi1pdGVtIHtcbiAgICB0cmFuc2l0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gICAgYW5pbWF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gICAgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7XG4gIH1cblxuICAvKiBEaXNhYmxlIGhvdmVyIHRyYW5zZm9ybXMgZm9yIGhlcml0YWdlIGJ1dHRvbiAqL1xuICAuaGVhZGVyLWN0YS5idG4taGVyaXRhZ2U6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG4gIFxuICAvKiBEaXNhYmxlIHJvdGF0aW9uIGZvciBkcm9wZG93biBpY29ucyAqL1xuICAuaGVhZGVyLWRyb3Bkb3duLS1vcGVuIC5oZWFkZXItZHJvcGRvd24taWNvbixcbiAgLmhlYWRlci1tb2JpbGUtZHJvcGRvd25bb3Blbl0gLmhlYWRlci1tb2JpbGUtZHJvcGRvd24tdHJpZ2dlcjo6YWZ0ZXIge1xuICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbi8qIEhpZ2ggY29udHJhc3QgbW9kZSBzdXBwb3J0ICovXG5AbWVkaWEgKHByZWZlcnMtY29udHJhc3Q6IGhpZ2gpIHtcbiAgLmhlYWRlci1jb250YWluZXIge1xuICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDJweDtcbiAgfVxuXG4gIC5oZWFkZXItbmF2LWxpbms6Zm9jdXMtdmlzaWJsZSxcbiAgLmhlYWRlci1kcm9wZG93bi10cmlnZ2VyOmZvY3VzLXZpc2libGUsXG4gIC5oZWFkZXItbW9iaWxlLXRvZ2dsZTpmb2N1cy12aXNpYmxlIHtcbiAgICBvdXRsaW5lLXdpZHRoOiAzcHg7XG4gIH1cbn1cblxuLyogUHJpbnQgc3R5bGVzICovXG5AbWVkaWEgcHJpbnQge1xuXG4gIC5oZWFkZXItbW9iaWxlLXRvZ2dsZSxcbiAgLmhlYWRlci1tb2JpbGUtbWVudSxcbiAgLmhlYWRlci1kcm9wZG93bi1tZW51IHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cblxuICAuaGVhZGVyLW5hdiB7XG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5oZWFkZXItbmF2LWxpc3Qge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gIH1cblxuICAuaGVhZGVyLWRyb3Bkb3duLWljb24ge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuXG4vKipcbiAqIEFyY2hpdGVjdHVyZSBTdW1tYXJ5OlxuICogXG4gKiBUaGlzIENTUyBmaWxlIGltcGxlbWVudHMgTGF5ZXIgMiAoQ29tcG9uZW50IEVuaGFuY2VtZW50KSBvZiB0aGUgdGhyZWUtbGF5ZXIgYXJjaGl0ZWN0dXJlLlxuICogSXQgcHJvdmlkZXMgc3RydWN0dXJhbCwgc3BhY2luZywgYW5kIGludGVyYWN0aW9uIGVuaGFuY2VtZW50cyB3aGlsZSByZWx5aW5nIG9uOlxuICogXG4gKiAtIEdsb2JhbCB0eXBvZ3JhcGh5IGNsYXNzZXMgKGRlc2NyaXB0aW9uKSBhcHBsaWVkIGNvbnNpc3RlbnRseSBpbiBIZWFkZXIudHN4XG4gKiAtIFRoZW1lIHZhcmlhYmxlcyBhbmQgYmFzZSBidXR0b24gc3R5bGVzIGZyb20gaW5kZXguY3NzXG4gKiAtIENvbXBvbmVudCBzdHlsZSBwcm9wcyBmb3IgcGFnZS1zcGVjaWZpYyBjdXN0b21pemF0aW9uXG4gKiBcbiAqIFRoZSBmaWxlIGlzIG9yZ2FuaXplZCBpbnRvIGNsZWFyIHNlY3Rpb25zOlxuICogMS4gU3RydWN0dXJhbCBFbmhhbmNlbWVudHMgLSBMYXlvdXQgYW5kIHBvc2l0aW9uaW5nIHdpdGggYmFja2Ryb3AgYmx1clxuICogMi4gTmF2aWdhdGlvbiBTdHJ1Y3R1cmUgLSBEZXNrdG9wIG5hdiBvcmdhbml6YXRpb25cbiAqIDMuIERyb3Bkb3duIEVuaGFuY2VtZW50cyAtIFN1Ym1lbnUgYmVoYXZpb3JzXG4gKiA0LiBNb2JpbGUgTWVudSBFbmhhbmNlbWVudHMgLSBUb3VjaC1vcHRpbWl6ZWQgcGF0dGVybnNcbiAqIDUuIFJlc3BvbnNpdmUgRW5oYW5jZW1lbnRzIC0gQnJlYWtwb2ludCBhZGp1c3RtZW50c1xuICogNi4gQWNjZXNzaWJpbGl0eSBFbmhhbmNlbWVudHMgLSBBMTF5IGltcHJvdmVtZW50cyB3aXRoIG1vdGlvbiBwcmVmZXJlbmNlc1xuICogXG4gKiBLZXkgRW5oYW5jZW1lbnRzIEFkZGVkOlxuICogLSBCYWNrZHJvcCBibHVyIG9wdGltaXphdGlvbiBmb3IgZ2xhc3MgZWZmZWN0XG4gKiAtIEVuaGFuY2VkIGhlcml0YWdlIHJlZCBzcGFjaW5nICgyNS0zNSUgZXh0cmEpIGZvciBicmFuZCBjb21wbGlhbmNlXG4gKiAtIE1vYmlsZSBoZXJpdGFnZSByZWQgaXNvbGF0aW9uICgyNHB4IG1pbmltdW0gc3BhY2luZylcbiAqIC0gQ29tcHJlaGVuc2l2ZSBtb3Rpb24gcHJlZmVyZW5jZSBzdXBwb3J0XG4gKiAtIFBlcmZvcm1hbmNlIG9wdGltaXphdGlvbnMgd2l0aCBoYXJkd2FyZSBhY2NlbGVyYXRpb25cbiAqIFxuICogQWxsIGZvbnQtc2l6ZSBkZWNsYXJhdGlvbnMgaGF2ZSBiZWVuIHJlbW92ZWQgaW4gZmF2b3Igb2YgZ2xvYmFsIGNsYXNzZXMuXG4gKi9cbiIsIi8qKlxuICogSGVybyBDb21wb25lbnQgU3R5bGVzIC0gTGF5ZXIgMjogQ29tcG9uZW50IEVuaGFuY2VtZW50XG4gKiBcbiAqIFRIUkVFLUxBWUVSIENTUyBBUkNISVRFQ1RVUkU6XG4gKiBMYXllciAxOiBCcmFuZCBGb3VuZGF0aW9uIChzcmMvaW5kZXguY3NzKSAtIFRoZW1lLCBjb2xvcnMsIHR5cG9ncmFwaHksIFBXQSBhbmltYXRpb25zLCBsYXlvdXQgc3lzdGVtXG4gKiBMYXllciAyOiBDb21wb25lbnQgRW5oYW5jZW1lbnQgKFRISVMgRklMRSkgLSBMYXlvdXQsIHNwYWNpbmcsIHZpc3VhbCBwb2xpc2hcbiAqIExheWVyIDM6IFBhZ2UgQ3VzdG9taXphdGlvbiAodmlhIHN0eWxlcyBwcm9wKSAtIFBhZ2Utc3BlY2lmaWMgb3ZlcnJpZGVzXG4gKiBcbiAqIENSSVRJQ0FMIFJVTEVTOlxuICogLSBOTyBmb250LXNpemUgZGVjbGFyYXRpb25zIC0gQUxMIHR5cG9ncmFwaHkgdmlhIGdsb2JhbCBjbGFzc2VzXG4gKiAtIE5PIGhhcmRjb2RlZCBjb2xvcnMgLSBVc2UgQ1NTIHZhcmlhYmxlcyBvbmx5XG4gKiAtIE5PIGJhc2Ugc3R5bGVzIC0gT25seSBlbmhhbmNlbWVudHMgdG8gYnJhbmQgZm91bmRhdGlvblxuICogLSBNVVNUIHN1cHBvcnQgc3R5bGUgcHJvcCBvdmVycmlkZXNcbiAqIC0gTW9iaWxlLWZpcnN0IHdpdGggbWluLXdpZHRoIG1lZGlhIHF1ZXJpZXNcbiAqIC0gQUxMIGNsYXNzZXMgZGVmaW5lZCBoZXJlIE1VU1QgYmUgdXNlZCBpbiBIZXJvLnRzeFxuICogLSBTRUNUSU9OIFBBVFRFUk4gQ09NUExJQU5DRTogRm9sbG93cyBTZWN0aW9uIGNvbXBvbmVudCBzdHJ1Y3R1cmUgZXhhY3RseVxuICogXG4gKiBTVEFOREFSRFMgQ09NUExJQU5DRTpcbiAqIC0gU2VjdGlvbiBDb21wb25lbnQgUGF0dGVybjogTUFOREFUT1JZIHN0cnVjdHVyZSBmcm9tIGltcGxlbWVudGF0aW9uLXN0YW5kYXJkLm1kXG4gKiAtIFBXQSBBbmltYXRpb24gU3lzdGVtOiBUd28tbGF5ZXIgYXJjaGl0ZWN0dXJlIHdpdGggZ2xvYmFsIGNsYXNzZXMgKHB3YS1zY3JvbGwtc2VjdGlvbiArIHB3YS1zY3JvbGwtZmFkZSlcbiAqIC0gR2xvYmFsIFR5cG9ncmFwaHk6IHRpdGxlLXNlY3Rpb24sIHN1YnRpdGxlLWxnLCBkZXNjcmlwdGlvbi1sZ1xuICogLSBIZXJpdGFnZSBSZWQgMTAlIFJ1bGU6IFNpbmdsZSBoZXJpdGFnZSBidXR0b24gd2l0aCBleHRyYSBzcGFjaW5nXG4gKiAtIExheW91dCBTeXN0ZW06IFNlY3Rpb24gc2l6ZXMsIGNvbnRhaW5lcnMsIHN1cmZhY2UgYmFja2dyb3VuZHNcbiAqIC0gSWNvbiBTeXN0ZW06IE1vZGVybiBlbnVtLWJhc2VkIGljb25zIHdpdGggcHJvcGVyIGNvbnRhaW5lcnNcbiAqIC0gTXVsdGktUmVzb2x1dGlvbiBTdXBwb3J0OiBNb2JpbGUgKOKJpDc2N3B4KSwgdGFibGV0ICg3NjgtMTAyM3B4KSwgZGVza3RvcCAoMTAyNC0yNTU5cHgpLCBoaWdoLXJlcyAo4omlMjU2MHB4KVxuICogLSBQZXJmb3JtYW5jZTogSGFyZHdhcmUgYWNjZWxlcmF0aW9uLCA2MGZwcywgY3JpdGljYWwgQ1NTIG9wdGltaXphdGlvblxuICogXG4gKiBCVVRUT04gU1RZTElORyBGSVhFUzpcbiAqIC0gTk8gdW53YW50ZWQgYm9yZGVycyBvciBib3hlcyBhcm91bmQgYnV0dG9uc1xuICogLSBDbGVhbiBjb2xvciBjb250cmFzdCB3aXRob3V0IGJsZW5kaW5nIGlzc3Vlc1xuICogLSBQcm9wZXIgdmlzdWFsIGhpZXJhcmNoeSBiZXR3ZWVuIGJ1dHRvbiB0eXBlc1xuICogLSBDbGVhbiBpY29uIGNvbnRhaW5lciBpbnRlZ3JhdGlvblxuICogLSBIZXJpdGFnZSByZWQgY29tcGxpYW5jZSB3aXRoIGNsZWFuIGFwcGVhcmFuY2VcbiAqIC0gU21vb3RoIGhvdmVyL2ZvY3VzIHRyYW5zaXRpb25zIHdpdGhvdXQgYXJ0aWZhY3RzXG4gKiBcbiAqIElDT04gQ09OVFJBU1QgRklYRVMgdjQuMTpcbiAqIC0gU2Vjb25kYXJ5IGJ1dHRvbiBpY29uIGNvbnRhaW5lciBlbmhhbmNlZCBmcm9tIDAuMTggdG8gMC4yNSBvcGFjaXR5IGZvciBXQ0FHIEFBIGNvbXBsaWFuY2VcbiAqIC0gSG92ZXIgc3RhdGUgZW5oYW5jZWQgZnJvbSAwLjI1IHRvIDAuMzUgb3BhY2l0eSBmb3IgYmV0dGVyIGZlZWRiYWNrXG4gKiAtIFdDQUcgMi4xIEFBIGNvbnRyYXN0IHJhdGlvIGNvbXBsaWFuY2UgKDQuNToxIG1pbmltdW0pIHZlcmlmaWVkXG4gKiAtIENvbnNpc3RlbnQgd2l0aCBvdGhlciBpY29uIGNvbnRhaW5lcnMgYWNyb3NzIHRoZSBzeXN0ZW1cbiAqIC0gTW9iaWxlIHJlc3BvbnNpdmVuZXNzIG1haW50YWluZWRcbiAqIC0gSGlnaCBjb250cmFzdCBtb2RlIHN1cHBvcnQgZW5oYW5jZWRcbiAqIFxuICogT1BUSU1JWkFUSU9OIEZFQVRVUkVTIHYzLjE6XG4gKiAtIFNlY3Rpb24gUGF0dGVybiBJbnRlZ3JhdGlvbjogSGVybyBub3cgZm9sbG93cyBTZWN0aW9uIGNvbXBvbmVudCBzdHJ1Y3R1cmVcbiAqIC0gRW5oYW5jZWQgbGF5b3V0IHV0aWxpdHkgaW50ZWdyYXRpb24gKGxheW91dC1zZWN0aW9uLSosIHN1cmZhY2UtKilcbiAqIC0gSW1wcm92ZWQgQ1NTIHZhcmlhYmxlIHVzYWdlIGZvciBncmFudWxhciBjdXN0b21pemF0aW9uXG4gKiAtIEhpZ2gtcmVzb2x1dGlvbiBkaXNwbGF5IG9wdGltaXphdGlvbnMgKOKJpTI1NjBweClcbiAqIC0gQ29udGFpbmVyIHF1ZXJ5IGludGVncmF0aW9uIGZvciBjb21wb25lbnQtbGV2ZWwgcmVzcG9uc2l2ZW5lc3NcbiAqIC0gRW5oYW5jZWQgZm9jdXMgc3RhdGVzIGZvciBpbXByb3ZlZCBhY2Nlc3NpYmlsaXR5XG4gKiAtIFByaW50IG1lZGlhIG9wdGltaXphdGlvbiBmb3IgZG9jdW1lbnRhdGlvblxuICogLSBDcml0aWNhbCBDU1Mgb3B0aW1pemF0aW9uIGZvciBtb2JpbGUtZmlyc3QgbG9hZGluZ1xuICogLSBCdXR0b24gc3R5bGluZyBmaXhlcyBmb3IgY2xlYW4gYXBwZWFyYW5jZVxuICogXG4gKiBDTEFTU0VTIFVTRUQgSU4gSEVSTy5UU1ggKFNlY3Rpb24gUGF0dGVybiBDb21wbGlhbnQpOlxuICogLSBoZXJvLXNlY3Rpb246IE1haW4gc2VjdGlvbiB3cmFwcGVyIChlbmhhbmNlZCBieSBzdXJmYWNlLWRlZmF1bHQsIGxheW91dC1zZWN0aW9uLXhsLCBwd2Etc2Nyb2xsLXNlY3Rpb24pXG4gKiAtIGhlcm8tY29udGVudDogQ29udGVudCB3cmFwcGVyIChlbmhhbmNlZCBieSBsYXlvdXQtY29udGFpbmVyKSAtIHVzZWQgZm9yIGJvdGggaGVhZGVyIGFuZCBjb250ZW50XG4gKiAtIGhlcm8tdGl0bGU6IFRpdGxlIGVuaGFuY2VtZW50IChidWlsZHMgb24gdGl0bGUtc2VjdGlvbiBnbG9iYWwgY2xhc3MpXG4gKiAtIGhlcm8tc3VidGl0bGU6IFN1YnRpdGxlIGVuaGFuY2VtZW50IChidWlsZHMgb24gc3VidGl0bGUtbGcgZ2xvYmFsIGNsYXNzKVxuICogLSBoZXJvLWRlc2NyaXB0aW9uOiBEZXNjcmlwdGlvbiBlbmhhbmNlbWVudCAoYnVpbGRzIG9uIGRlc2NyaXB0aW9uLWxnIGdsb2JhbCBjbGFzcylcbiAqIC0gaGVyby1hY3Rpb25zOiBDVEEgY29udGFpbmVyIChidWlsZHMgb24gcHdhLXNjcm9sbC1mYWRlKVxuICogLSBoZXJvLWJ1dHRvbi1oZXJpdGFnZTogSGVyaXRhZ2UgYnV0dG9uIGVuaGFuY2VtZW50IChidWlsZHMgb24gYnRuIGJ0bi1oZXJpdGFnZSlcbiAqIC0gaGVyby1idXR0b24tc2Vjb25kYXJ5OiBTZWNvbmRhcnkgYnV0dG9uIGVuaGFuY2VtZW50IChidWlsZHMgb24gYnRuIGJ0bi1zZWNvbmRhcnkpXG4gKiAtIGhlcm8tYnV0dG9uLWljb246IEljb24gc3R5bGluZyBmb3IgYnV0dG9uIGljb25zXG4gKiAtIGhlcm8tYnV0dG9uLWljb24tcGxheTogUGxheSBpY29uIHNwZWNpZmljIHN0eWxpbmdcbiAqL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIENTUyBDVVNUT00gUFJPUEVSVElFUyAtIEVYUEFOREVEIFZBUklBQkxFIFNZU1RFTVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5oZXJvLXNlY3Rpb24ge1xuICAvKiBDb21wb25lbnQtbGV2ZWwgQ1NTIHZhcmlhYmxlcyBmb3IgZ3JhbnVsYXIgY3VzdG9taXphdGlvbiAqL1xuICAtLWhlcm8tc2VjdGlvbi1taW4taGVpZ2h0OiA2MHZoO1xuICAtLWhlcm8tY29udGVudC1tYXgtd2lkdGg6IDU2cmVtO1xuICAtLWhlcm8tY29udGVudC1nYXA6IHZhcigtLXNwYWNlLTYpO1xuICAtLWhlcm8tY29udGVudC1wYWRkaW5nOiB2YXIoLS1zcGFjZS04KSAwO1xuICAtLWhlcm8tYWN0aW9ucy1nYXA6IHZhcigtLXNwYWNlLTQpO1xuICAtLWhlcm8tYWN0aW9ucy1tYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS0zKTtcbiAgLS1oZXJvLXRpdGxlLW1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTIpO1xuICAtLWhlcm8tc3VidGl0bGUtbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMik7XG4gIC0taGVyby1kZXNjcmlwdGlvbi1tYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0yKTtcbiAgLS1oZXJvLWJ1dHRvbi1oZXJpdGFnZS1wYWRkaW5nOiB2YXIoLS1zcGFjZS0zKSB2YXIoLS1zcGFjZS02KTtcbiAgLS1oZXJvLWJ1dHRvbi1zZWNvbmRhcnktcGFkZGluZzogdmFyKC0tc3BhY2UtMykgdmFyKC0tc3BhY2UtNik7XG4gIC0taGVyby1idXR0b24tbWluLWhlaWdodDogNDhweDtcbiAgLS1oZXJvLWJ1dHRvbi1nYXA6IHZhcigtLXNwYWNlLTIpO1xuICAtLWhlcm8taWNvbi10cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS10aW1pbmctZmFzdCk7XG4gIC0taGVyby1ob3Zlci10cmFuc2Zvcm0teTogY2FsYyh2YXIoLS1zcGFjZS0wLTUpICogLTEpO1xuICAtLWhlcm8taG92ZXItc2NhbGU6IDEuMDI7XG4gIC0taGVyby1mb2N1cy1vdXRsaW5lLXdpZHRoOiAzcHg7XG4gIC0taGVyby1mb2N1cy1vdXRsaW5lLW9mZnNldDogMnB4O1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIENPTlRBSU5FUiBRVUVSSUVTIC0gQ09NUE9ORU5ULUxFVkVMIFJFU1BPTlNJVkVORVNTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBDb250YWluZXIgcXVlcnkgc3VwcG9ydCBmb3IgaW50cmluc2ljIGNvbXBvbmVudCByZXNwb25zaXZlbmVzc1xuICogRW5hYmxlcyBjb21wb25lbnQgdG8gYWRhcHQgYmFzZWQgb24gaXRzIGNvbnRhaW5lciBzaXplLCBub3Qgdmlld3BvcnRcbiAqL1xuQGNvbnRhaW5lciAobWluLXdpZHRoOiAzMjBweCkge1xuICAuaGVyby1jb250ZW50IHtcbiAgICAtLWhlcm8tY29udGVudC1nYXA6IHZhcigtLXNwYWNlLTQpO1xuICB9XG59XG5cbkBjb250YWluZXIgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgLmhlcm8tY29udGVudCB7XG4gICAgLS1oZXJvLWNvbnRlbnQtZ2FwOiB2YXIoLS1zcGFjZS02KTtcbiAgfVxuICBcbiAgLmhlcm8tYWN0aW9ucyB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIG1hcmdpbjogdmFyKC0taGVyby1hY3Rpb25zLW1hcmdpbi10b3ApIGF1dG8gMDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cbn1cblxuQGNvbnRhaW5lciAobWluLXdpZHRoOiA3NjhweCkge1xuICAuaGVyby1jb250ZW50IHtcbiAgICAtLWhlcm8tY29udGVudC1nYXA6IHZhcigtLXNwYWNlLTgpO1xuICAgIC0taGVyby1jb250ZW50LXBhZGRpbmc6IHZhcigtLXNwYWNlLTEyKSAwO1xuICB9XG59XG5cbkBjb250YWluZXIgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5oZXJvLWNvbnRlbnQge1xuICAgIC0taGVyby1jb250ZW50LWdhcDogdmFyKC0tc3BhY2UtMTIpO1xuICAgIC0taGVyby1jb250ZW50LXBhZGRpbmc6IHZhcigtLXNwYWNlLTE2KSAwO1xuICB9XG4gIFxuICAuaGVyby1hY3Rpb25zIHtcbiAgICAtLWhlcm8tYWN0aW9ucy1nYXA6IHZhcigtLXNwYWNlLTgpO1xuICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgSEVSTyBTRUNUSU9OIExBWU9VVCAtIFNFQ1RJT04gUEFUVEVSTiBDT01QTElBTlRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEhlcm8gU2VjdGlvbiAtIE1vYmlsZS1GaXJzdCB3aXRoIExheW91dCBTeXN0ZW0gSW50ZWdyYXRpb25cbiAqIFVzZXMgZ2xvYmFsIGNsYXNzZXM6IHN1cmZhY2UtZGVmYXVsdCwgbGF5b3V0LXNlY3Rpb24teGwsIHB3YS1zY3JvbGwtc2VjdGlvblxuICogQ29tcG9uZW50IHN0eWxlcyBwcm92aWRlIGxheW91dCBhbmQgc3BhY2luZyBlbmhhbmNlbWVudHMgb25seVxuICogU0VDVElPTiBQQVRURVJOOiBGb2xsb3dzIGV4YWN0IHN0cnVjdHVyZSBmcm9tIGltcGxlbWVudGF0aW9uLXN0YW5kYXJkLm1kXG4gKi9cbi5oZXJvLXNlY3Rpb24ge1xuICAvKiBTZWN0aW9uIGxheW91dCBhbmQgc3BhY2luZyB1c2luZyBDU1MgdmFyaWFibGVzICovXG4gIG1pbi1oZWlnaHQ6IHZhcigtLWhlcm8tc2VjdGlvbi1taW4taGVpZ2h0KTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBcbiAgLyogQ29tcG9uZW50LXNwZWNpZmljIGVuaGFuY2VtZW50cyBvbmx5IC0gZm91bmRhdGlvbiBoYW5kbGVkIGJ5IGdsb2JhbCBjbGFzc2VzICovXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgLyogUHJldmVudCBhbmltYXRpb24gb3ZlcmZsb3cgKi9cbiAgXG4gIC8qIFBlcmZvcm1hbmNlIG9wdGltaXphdGlvbnMgd2l0aCBjb250YWluZXIgcXVlcmllcyAqL1xuICBjb250YWluZXItdHlwZTogaW5saW5lLXNpemU7XG4gIGNvbnRhaW46IGxheW91dCBzdHlsZSBwYWludDtcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTsgLyogSGFyZHdhcmUgYWNjZWxlcmF0aW9uIGZvciBQV0EgYW5pbWF0aW9ucyAqL1xufVxuXG4vKiBUYWJsZXQ6IGVuaGFuY2VkIG1pbmltdW0gaGVpZ2h0ICovXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiAxMDIzcHgpIHtcbiAgLmhlcm8tc2VjdGlvbiB7XG4gICAgLS1oZXJvLXNlY3Rpb24tbWluLWhlaWdodDogNzB2aDtcbiAgfVxufVxuXG4vKiBEZXNrdG9wOiBvcHRpbWFsIHByZXNlbnRhdGlvbiBoZWlnaHQgKi9cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIGFuZCAobWF4LXdpZHRoOiAyNTU5cHgpIHtcbiAgLmhlcm8tc2VjdGlvbiB7XG4gICAgLS1oZXJvLXNlY3Rpb24tbWluLWhlaWdodDogODB2aDtcbiAgfVxufVxuXG4vKiBIaWdoLXJlc29sdXRpb24gZGlzcGxheXM6IG1heGltdW0gaW1wYWN0IHdpdGggcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uICovXG5AbWVkaWEgKG1pbi13aWR0aDogMjU2MHB4KSB7XG4gIC5oZXJvLXNlY3Rpb24ge1xuICAgIC0taGVyby1zZWN0aW9uLW1pbi1oZWlnaHQ6IDg1dmg7XG4gICAgbWF4LWhlaWdodDogMTAwdmg7IC8qIFByZXZlbnQgZXhjZXNzaXZlIGhlaWdodCBvbiB1bHRyYS13aWRlIGRpc3BsYXlzICovXG4gICAgLyogSGlnaC1EUEkgb3B0aW1pemF0aW9uICovXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICB9XG59XG5cbi8qKlxuICogSGVybyBDb250ZW50IC0gQ29udGVudCBMYXlvdXQgR3JpZCAoU2VjdGlvbiBQYXR0ZXJuKVxuICogV29ya3Mgd2l0aCBsYXlvdXQtY29udGFpbmVyIGZyb20gZ2xvYmFsIHN5c3RlbVxuICogQ29tcG9uZW50IHByb3ZpZGVzIGNvbnRlbnQtc3BlY2lmaWMgbGF5b3V0XG4gKiBTRUNUSU9OIFBBVFRFUk46IFVzZWQgZm9yIGJvdGggaGVhZGVyIGFuZCBjb250ZW50IGFyZWFzXG4gKi9cbi5oZXJvLWNvbnRlbnQge1xuICAvKiBMYXlvdXQgdXNpbmcgQ1NTIEdyaWQgZm9yIGJldHRlciBjb250cm9sIHdpdGggQ1NTIHZhcmlhYmxlcyAqL1xuICBkaXNwbGF5OiBncmlkO1xuICBnYXA6IHZhcigtLWhlcm8tY29udGVudC1nYXApO1xuICBqdXN0aWZ5LWl0ZW1zOiBjZW50ZXI7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWF4LXdpZHRoOiB2YXIoLS1oZXJvLWNvbnRlbnQtbWF4LXdpZHRoKTtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiB2YXIoLS1oZXJvLWNvbnRlbnQtcGFkZGluZyk7XG4gIFxuICAvKiBQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25zICovXG4gIGNvbnRhaW46IGxheW91dCBzdHlsZTtcbn1cblxuLyogVGFibGV0OiBpbmNyZWFzZWQgc3BhY2luZyAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogMTAyM3B4KSB7XG4gIC5oZXJvLWNvbnRlbnQge1xuICAgIC0taGVyby1jb250ZW50LWdhcDogdmFyKC0tc3BhY2UtOCk7XG4gICAgLS1oZXJvLWNvbnRlbnQtcGFkZGluZzogdmFyKC0tc3BhY2UtMTIpIDA7XG4gICAgLS1oZXJvLWNvbnRlbnQtbWF4LXdpZHRoOiA0OHJlbTsgLyogNzY4cHggZm9yIHRhYmxldCByZWFkYWJpbGl0eSAqL1xuICB9XG59XG5cbi8qIERlc2t0b3A6IG1heGltdW0gc3BhY2luZyBhbmQgcmVmaW5lbWVudHMgKi9cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIGFuZCAobWF4LXdpZHRoOiAyNTU5cHgpIHtcbiAgLmhlcm8tY29udGVudCB7XG4gICAgLS1oZXJvLWNvbnRlbnQtZ2FwOiB2YXIoLS1zcGFjZS0xMik7XG4gICAgLS1oZXJvLWNvbnRlbnQtbWF4LXdpZHRoOiA2NHJlbTsgLyogMTAyNHB4IGZvciBkZXNrdG9wICovXG4gICAgLS1oZXJvLWNvbnRlbnQtcGFkZGluZzogdmFyKC0tc3BhY2UtMTYpIDA7XG4gIH1cbn1cblxuLyogSGlnaC1yZXNvbHV0aW9uOiBlbmhhbmNlZCBsYXlvdXQgZm9yIGxhcmdlIGRpc3BsYXlzICovXG5AbWVkaWEgKG1pbi13aWR0aDogMjU2MHB4KSB7XG4gIC5oZXJvLWNvbnRlbnQge1xuICAgIC0taGVyby1jb250ZW50LWdhcDogdmFyKC0tc3BhY2UtMTYpO1xuICAgIC0taGVyby1jb250ZW50LW1heC13aWR0aDogNzJyZW07IC8qIDExNTJweCBmb3IgaGlnaC1yZXMgZGlzcGxheXMgKi9cbiAgICAtLWhlcm8tY29udGVudC1wYWRkaW5nOiB2YXIoLS1zcGFjZS0yMCkgMDtcbiAgICAvKiBQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gZm9yIGhpZ2gtRFBJIGRpc3BsYXlzICovXG4gICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgSEVSTyBDT05URU5UIEVMRU1FTlRTIC0gQlVJTERJTkcgT04gR0xPQkFMIFRZUE9HUkFQSFlcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEhlcm8gVGl0bGUgLSBCdWlsZHMgb24gZ2xvYmFsIHRpdGxlLXNlY3Rpb24gY2xhc3NcbiAqIENvbXBvbmVudCBzdHlsZXMgYWRkIHZpc3VhbCBlbmhhbmNlbWVudHMgb25seVxuICogU0VDVElPTiBQQVRURVJOOiBFbmhhbmNlZCB3aXRoIGhlcm8tc3BlY2lmaWMgc3R5bGluZ1xuICovXG4uaGVyby10aXRsZSB7XG4gIC8qIFZpc3VhbCBlbmhhbmNlbWVudHMgdG8gZ2xvYmFsIHR5cG9ncmFwaHkgd2l0aCBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gKi9cbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgXG4gICAgcmdiKHZhcigtLWNvbG9yLWZvcmVncm91bmQpKSwgXG4gICAgcmdiKHZhcigtLWNvbG9yLW11dGVkLWZvcmVncm91bmQpKVxuICApO1xuICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogdGV4dDtcbiAgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IHRyYW5zcGFyZW50O1xuICBiYWNrZ3JvdW5kLWNsaXA6IHRleHQ7XG4gIFxuICAvKiBMYXlvdXQgYW5kIHNwYWNpbmcgdXNpbmcgQ1NTIHZhcmlhYmxlcyAqL1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1oZXJvLXRpdGxlLW1hcmdpbi1ib3R0b20pO1xuICBcbiAgLyogUGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIHdpdGggR1BVIGFjY2VsZXJhdGlvbiAqL1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gIC8qIENyaXRpY2FsIENTUyBvcHRpbWl6YXRpb24gKi9cbiAgd2lsbC1jaGFuZ2U6IGF1dG87XG59XG5cbi8qIFRhYmxldDogZW5oYW5jZWQgdmlzdWFsIHRyZWF0bWVudCAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogMTAyM3B4KSB7XG4gIC5oZXJvLXRpdGxlIHtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcbiAgICAtLWhlcm8tdGl0bGUtbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMyk7XG4gIH1cbn1cblxuLyogRGVza3RvcDogZW5oYW5jZWQgdHlwb2dyYXBoeSB0cmVhdG1lbnQgKi9cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIGFuZCAobWF4LXdpZHRoOiAyNTU5cHgpIHtcbiAgLmhlcm8tdGl0bGUge1xuICAgIGxldHRlci1zcGFjaW5nOiAtMC4wM2VtO1xuICAgIC0taGVyby10aXRsZS1tYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbiAgfVxuICBcbiAgLyogRGVjb3JhdGl2ZSB1bmRlcmxpbmUgZm9yIGRlc2t0b3AgKi9cbiAgLmhlcm8tdGl0bGU6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiBjYWxjKHZhcigtLXNwYWNlLTMpICogLTEpO1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgd2lkdGg6IGNhbGModmFyKC0tc3BhY2UtNCkgKiA1KTsgLyogODBweCAqL1xuICAgIGhlaWdodDogdmFyKC0tc3BhY2UtMC01KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7XG4gICAgb3BhY2l0eTogMC4zO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tdGltaW5nLW1lZGl1bSkgdmFyKC0tZWFzZS1zbW9vdGgpO1xuICB9XG59XG5cbi8qIEhpZ2gtcmVzb2x1dGlvbjogcHJlbWl1bSB0eXBvZ3JhcGh5IHRyZWF0bWVudCB3aXRoIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDI1NjBweCkge1xuICAuaGVyby10aXRsZSB7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjA0ZW07XG4gICAgLS1oZXJvLXRpdGxlLW1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTYpO1xuICAgIC8qIEhpZ2gtRFBJIHRleHQgcmVuZGVyaW5nIG9wdGltaXphdGlvbiAqL1xuICAgIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIH1cbiAgXG4gIC5oZXJvLXRpdGxlOjphZnRlciB7XG4gICAgd2lkdGg6IGNhbGModmFyKC0tc3BhY2UtNCkgKiA2KTsgLyogOTZweCAqL1xuICAgIGhlaWdodDogdmFyKC0tc3BhY2UtMSk7XG4gICAgYm90dG9tOiBjYWxjKHZhcigtLXNwYWNlLTQpICogLTEpO1xuICAgIG9wYWNpdHk6IDAuNDtcbiAgfVxufVxuXG4vKipcbiAqIEhlcm8gU3VidGl0bGUgLSBCdWlsZHMgb24gZ2xvYmFsIHN1YnRpdGxlLWxnIGNsYXNzXG4gKiBDb21wb25lbnQgc3R5bGVzIGZvciBsYXlvdXQgYW5kIGNvbG9yIGVuaGFuY2VtZW50XG4gKiBTRUNUSU9OIFBBVFRFUk46IEVuaGFuY2VkIHdpdGggaGVyby1zcGVjaWZpYyBzdHlsaW5nXG4gKi9cbi5oZXJvLXN1YnRpdGxlIHtcbiAgLyogQ29sb3IgZW5oYW5jZW1lbnQgdG8gZ2xvYmFsIHN1YnRpdGxlLWxnICovXG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xuICBvcGFjaXR5OiAwLjk7XG4gIFxuICAvKiBMYXlvdXQgYW5kIHNwYWNpbmcgdXNpbmcgQ1NTIHZhcmlhYmxlcyAqL1xuICBtYXgtd2lkdGg6IDQ4cmVtOyAvKiA3NjhweCAqL1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1oZXJvLXN1YnRpdGxlLW1hcmdpbi1ib3R0b20pO1xuICBcbiAgLyogUGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uICovXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG59XG5cbi8qIFRhYmxldCByZWZpbmVtZW50cyAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogMTAyM3B4KSB7XG4gIC5oZXJvLXN1YnRpdGxlIHtcbiAgICBtYXgtd2lkdGg6IDQycmVtOyAvKiA2NzJweCBmb3IgdGFibGV0ICovXG4gICAgLS1oZXJvLXN1YnRpdGxlLW1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTMpO1xuICB9XG59XG5cbi8qIERlc2t0b3AgcmVmaW5lbWVudHMgKi9cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIGFuZCAobWF4LXdpZHRoOiAyNTU5cHgpIHtcbiAgLmhlcm8tc3VidGl0bGUge1xuICAgIG1heC13aWR0aDogNTByZW07IC8qIDgwMHB4IGZvciBkZXNrdG9wICovXG4gICAgLS1oZXJvLXN1YnRpdGxlLW1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTQpO1xuICB9XG59XG5cbi8qIEhpZ2gtcmVzb2x1dGlvbiByZWZpbmVtZW50cyAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDI1NjBweCkge1xuICAuaGVyby1zdWJ0aXRsZSB7XG4gICAgbWF4LXdpZHRoOiA1NnJlbTsgLyogODk2cHggZm9yIGhpZ2gtcmVzICovXG4gICAgLS1oZXJvLXN1YnRpdGxlLW1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTYpO1xuICB9XG59XG5cbi8qKlxuICogSGVybyBEZXNjcmlwdGlvbiAtIEJ1aWxkcyBvbiBnbG9iYWwgZGVzY3JpcHRpb24tbGcgY2xhc3NcbiAqIENvbXBvbmVudCBzdHlsZXMgZm9yIG9wdGltYWwgcmVhZGFiaWxpdHlcbiAqIFNFQ1RJT04gUEFUVEVSTjogRW5oYW5jZWQgd2l0aCBoZXJvLXNwZWNpZmljIHN0eWxpbmdcbiAqL1xuLmhlcm8tZGVzY3JpcHRpb24ge1xuICAvKiBPcHRpbWFsIHJlYWRpbmcgd2lkdGggYW5kIHNwYWNpbmcgdXNpbmcgQ1NTIHZhcmlhYmxlcyAqL1xuICBtYXgtd2lkdGg6IDQycmVtOyAvKiA2NzJweCBmb3Igb3B0aW1hbCByZWFkYWJpbGl0eSAqL1xuICBtYXJnaW46IDAgYXV0byB2YXIoLS1oZXJvLWRlc2NyaXB0aW9uLW1hcmdpbi1ib3R0b20pO1xuICBwYWRkaW5nOiAwO1xuICBsaW5lLWhlaWdodDogMS43OyAvKiBFbmhhbmNlZCByZWFkYWJpbGl0eSAqL1xuICBcbiAgLyogUGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uICovXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG59XG5cbi8qIFRhYmxldDogZW5oYW5jZWQgcGFkZGluZyAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogMTAyM3B4KSB7XG4gIC5oZXJvLWRlc2NyaXB0aW9uIHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIC0taGVyby1kZXNjcmlwdGlvbi1tYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0zKTtcbiAgICBtYXgtd2lkdGg6IDQwcmVtOyAvKiA2NDBweCAqL1xuICB9XG59XG5cbi8qIERlc2t0b3A6IGRlY29yYXRpdmUgZW5oYW5jZW1lbnQgKi9cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIGFuZCAobWF4LXdpZHRoOiAyNTU5cHgpIHtcbiAgLmhlcm8tZGVzY3JpcHRpb24ge1xuICAgIG1heC13aWR0aDogNDRyZW07IC8qIDcwNHB4ICovXG4gICAgcGFkZGluZzogMDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgYm9yZGVyLWJvdHRvbTogdmFyKC0tc3BhY2UtMC01KSBzb2xpZCByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkgLyAwLjE1KTtcbiAgICAtLWhlcm8tZGVzY3JpcHRpb24tbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMyk7XG4gIH1cbn1cblxuLyogSGlnaC1yZXNvbHV0aW9uOiBwcmVtaXVtIGxheW91dCAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDI1NjBweCkge1xuICAuaGVyby1kZXNjcmlwdGlvbiB7XG4gICAgbWF4LXdpZHRoOiA0OHJlbTsgLyogNzY4cHggKi9cbiAgICBwYWRkaW5nOiAwO1xuICAgIGJvcmRlci1ib3R0b206IHZhcigtLXNwYWNlLTEpIHNvbGlkIHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSAvIDAuMik7XG4gICAgLS1oZXJvLWRlc2NyaXB0aW9uLW1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTQpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjg7XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBIRVJPIEFDVElPTlMgJiBCVVRUT05TIC0gSEVSSVRBR0UgUkVEIENPTVBMSUFOQ0UgKFNFQ1RJT04gUEFUVEVSTilcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEhlcm8gQWN0aW9ucyAtIENUQSBDb250YWluZXIgKFNlY3Rpb24gUGF0dGVybilcbiAqIE1vYmlsZTogc3RhY2tlZCwgVGFibGV0L0Rlc2t0b3A6IGhvcml6b250YWxcbiAqIFNFQ1RJT04gUEFUVEVSTjogRW5oYW5jZWQgd2l0aCBwd2Etc2Nyb2xsLWZhZGUgaW50ZWdyYXRpb25cbiAqIEZJWEVEOiBCdXR0b25zIG5vdyBwcm9wZXJseSBjZW50ZXJlZCAoS0lTUyBwcmluY2lwbGUpXG4gKi9cbi5oZXJvLWFjdGlvbnMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IHZhcigtLWhlcm8tYWN0aW9ucy1nYXApO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgbWFyZ2luOiB2YXIoLS1oZXJvLWFjdGlvbnMtbWFyZ2luLXRvcCkgYXV0byAwO1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICAvKiBIZXJpdGFnZSAxMCUgcnVsZTogRXh0cmEgc3BhY2luZyBhcm91bmQgaGVyaXRhZ2UgYnV0dG9uIGNvbnRhaW5lciAqL1xuICBwYWRkaW5nOiBjYWxjKHZhcigtLXNwYWNlLTIpICogMS4zKSAwO1xuICBcbiAgLyogRm9yY2UgcHJvcGVyIGNlbnRlcmluZyAqL1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIFxuICAvKiBQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gKi9cbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbn1cblxuLyogVGFibGV0OiBob3Jpem9udGFsIGxheW91dCAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogMTAyM3B4KSB7XG4gIC5oZXJvLWFjdGlvbnMge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBtYXJnaW46IHZhcigtLXNwYWNlLTMpIGF1dG8gMDtcbiAgICAtLWhlcm8tYWN0aW9ucy1nYXA6IHZhcigtLXNwYWNlLTYpO1xuICAgIC0taGVyby1hY3Rpb25zLW1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTMpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxuICBcbiAgLyogRklYRUQ6IEFsbG93IGZsZXhpYmxlIGJ1dHRvbiBzaXppbmcgZm9yIGxvbmdlciB0ZXh0ICovXG4gIC5oZXJvLWJ1dHRvbi1oZXJpdGFnZSxcbiAgLmhlcm8tYnV0dG9uLXNlY29uZGFyeSB7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgbWluLXdpZHRoOiAxODBweDtcbiAgICAvKiBSZW1vdmVkIG1heC13aWR0aCB0byBhbGxvdyBidXR0b25zIHRvIGdyb3cgd2l0aCBjb250ZW50ICovXG4gICAgZmxleDogMCAxIGF1dG87IC8qIEFsbG93IHNocmluayBidXQgcHJlZmVyIGNvbnRlbnQgd2lkdGggKi9cbiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsgLyogT3ZlcnJpZGUgYW55IGluaGVyaXRlZCBtYXJnaW5zICovXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgLyogUHJldmVudCB0ZXh0IHdyYXBwaW5nIG9uIHRhYmxldC9kZXNrdG9wICovXG4gIH1cbn1cblxuLyogRGVza3RvcDogZW5oYW5jZWQgc3BhY2luZyAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkgYW5kIChtYXgtd2lkdGg6IDI1NTlweCkge1xuICAuaGVyby1hY3Rpb25zIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgbWFyZ2luOiB2YXIoLS1zcGFjZS00KSBhdXRvIDA7XG4gICAgLS1oZXJvLWFjdGlvbnMtZ2FwOiB2YXIoLS1zcGFjZS04KTtcbiAgICAtLWhlcm8tYWN0aW9ucy1tYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS00KTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cbiAgXG4gIC8qIEZJWEVEOiBBbGxvdyBmbGV4aWJsZSBidXR0b24gc2l6aW5nIGZvciBsb25nZXIgdGV4dCAqL1xuICAuaGVyby1idXR0b24taGVyaXRhZ2UsXG4gIC5oZXJvLWJ1dHRvbi1zZWNvbmRhcnkge1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIG1pbi13aWR0aDogMjAwcHg7XG4gICAgLyogUmVtb3ZlZCBtYXgtd2lkdGggdG8gYWxsb3cgYnV0dG9ucyB0byBncm93IHdpdGggY29udGVudCAqL1xuICAgIGZsZXg6IDAgMSBhdXRvOyAvKiBBbGxvdyBzaHJpbmsgYnV0IHByZWZlciBjb250ZW50IHdpZHRoICovXG4gICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7IC8qIE92ZXJyaWRlIGFueSBpbmhlcml0ZWQgbWFyZ2lucyAqL1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7IC8qIFByZXZlbnQgdGV4dCB3cmFwcGluZyBvbiBkZXNrdG9wICovXG4gIH1cbn1cblxuLyogSGlnaC1yZXNvbHV0aW9uOiBwcmVtaXVtIHNwYWNpbmcgKi9cbkBtZWRpYSAobWluLXdpZHRoOiAyNTYwcHgpIHtcbiAgLmhlcm8tYWN0aW9ucyB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIG1hcmdpbjogdmFyKC0tc3BhY2UtNikgYXV0byAwO1xuICAgIC0taGVyby1hY3Rpb25zLWdhcDogdmFyKC0tc3BhY2UtMTIpO1xuICAgIC0taGVyby1hY3Rpb25zLW1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTYpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxuICBcbiAgLyogRklYRUQ6IEFsbG93IGZsZXhpYmxlIGJ1dHRvbiBzaXppbmcgZm9yIGxvbmdlciB0ZXh0ICovXG4gIC5oZXJvLWJ1dHRvbi1oZXJpdGFnZSxcbiAgLmhlcm8tYnV0dG9uLXNlY29uZGFyeSB7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgbWluLXdpZHRoOiAyMjBweDtcbiAgICAvKiBSZW1vdmVkIG1heC13aWR0aCB0byBhbGxvdyBidXR0b25zIHRvIGdyb3cgd2l0aCBjb250ZW50ICovXG4gICAgZmxleDogMCAxIGF1dG87IC8qIEFsbG93IHNocmluayBidXQgcHJlZmVyIGNvbnRlbnQgd2lkdGggKi9cbiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsgLyogT3ZlcnJpZGUgYW55IGluaGVyaXRlZCBtYXJnaW5zICovXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgLyogUHJldmVudCB0ZXh0IHdyYXBwaW5nIG9uIGhpZ2gtcmVzIGRpc3BsYXlzICovXG4gIH1cbn1cblxuLyoqXG4gKiBIZXJvIEJ1dHRvbiAtIEhlcml0YWdlIChQcmltYXJ5IENUQSlcbiAqIEJ1aWxkcyBvbiBnbG9iYWwgYnRuIGJ0bi1oZXJpdGFnZSBjbGFzc2VzXG4gKiBJbXBsZW1lbnRzIDEwJSBydWxlIHdpdGggZXh0cmEgc3BhY2luZyAoMzAlIG1vcmUpXG4gKiBFbmhhbmNlZCBob3ZlciBhbmltYXRpb25zIHdpdGggc3RhZ2dlcmVkIGVmZmVjdHNcbiAqIFNFQ1RJT04gUEFUVEVSTjogSW50ZWdyYXRlZCB3aXRoaW4gY29udGVudCBzdHJ1Y3R1cmVcbiAqIFxuICogQlVUVE9OIFNUWUxJTkcgRklYRVM6XG4gKiAtIE5PIHVud2FudGVkIGJvcmRlcnMgLSB1c2UgYm9yZGVyOiBub25lIGZvciBjbGVhbiBhcHBlYXJhbmNlXG4gKiAtIENsZWFuIGJhY2tncm91bmQgY29sb3JzIHdpdGggcHJvcGVyIGNvbnRyYXN0XG4gKiAtIEhlcml0YWdlIHJlZCBjb21wbGlhbmNlIHdpdGggcHJvcGVyIHNwYWNpbmdcbiAqIC0gU21vb3RoIHRyYW5zaXRpb25zIHdpdGhvdXQgdmlzdWFsIGFydGlmYWN0c1xuICovXG4uaGVyby1idXR0b24taGVyaXRhZ2Uge1xuICAvKiBIZXJpdGFnZSBidXR0b24gc3BhY2luZyBlbmhhbmNlbWVudCAoMTAlIG1vcmUgdGhhbiBzdGFuZGFyZCkgdXNpbmcgQ1NTIHZhcmlhYmxlcyAqL1xuICBwYWRkaW5nOiB2YXIoLS1oZXJvLWJ1dHRvbi1oZXJpdGFnZS1wYWRkaW5nKSAhaW1wb3J0YW50O1xuICBcbiAgLyogVG91Y2ggdGFyZ2V0IG9wdGltaXphdGlvbiB1c2luZyBDU1MgdmFyaWFibGVzICovXG4gIGhlaWdodDogdmFyKC0taGVyby1idXR0b24tbWluLWhlaWdodCk7IC8qIEZpeGVkIGhlaWdodCB0byBwcmV2ZW50IG92ZXJzaXppbmcgKi9cbiAgXG4gIC8qIExheW91dCBhbmQgY29udGVudCAqL1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiB2YXIoLS1oZXJvLWJ1dHRvbi1nYXApO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OiBoaWRkZW47IC8qIENsaXAgb3ZlcmZsb3cgY29udGVudCAqL1xuICBcbiAgLyogQnV0dG9uIHNpemluZyAtIG92ZXJyaWRlIGJhc2UgbWFyZ2lucyB0aGF0IGFkZCB0byBoZWlnaHQgKi9cbiAgd2lkdGg6IGF1dG87XG4gIGZsZXg6IDAgMCBhdXRvO1xuICBtYXJnaW46IDAgIWltcG9ydGFudDsgLyogT3ZlcnJpZGUgYnRuLWhlcml0YWdlIG1hcmdpbnMgdGhhdCBicmVhayBjZW50ZXJpbmcgYW5kIGFkZCB0byBoZWlnaHQgKi9cbiAgXG4gIC8qIENMRUFOIEJVVFRPTiBBUFBFQVJBTkNFIC0gUmVtb3ZlIHVud2FudGVkIGJvcmRlcnMgKi9cbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBcbiAgLyogSGVyaXRhZ2UgYnV0dG9uIHZpc3VhbCBlbmhhbmNlbWVudHMgKi9cbiAgZm9udC13ZWlnaHQ6IDYwMDsgLyogTWluaW11bSB3ZWlnaHQgZm9yIGhlcml0YWdlIHJlZCAqL1xuICBsZXR0ZXItc3BhY2luZzogMC4wMjVlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMjsgLyogQ29tcGFjdCBsaW5lIGhlaWdodCB0byByZWR1Y2Ugb3ZlcmFsbCBoZWlnaHQgKi9cbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgXG4gIC8qIEVuaGFuY2VkIHRyYW5zaXRpb25zIGZvciBzbW9vdGhlciBhbmltYXRpb25zICovXG4gIHRyYW5zaXRpb246IFxuICAgIHRyYW5zZm9ybSB2YXIoLS1oZXJvLWljb24tdHJhbnNpdGlvbi1kdXJhdGlvbikgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSxcbiAgICBib3gtc2hhZG93IHZhcigtLWhlcm8taWNvbi10cmFuc2l0aW9uLWR1cmF0aW9uKSBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpLFxuICAgIGJhY2tncm91bmQtY29sb3IgdmFyKC0taGVyby1pY29uLXRyYW5zaXRpb24tZHVyYXRpb24pIHZhcigtLWVhc2Utc21vb3RoKTtcbiAgXG4gIC8qIFBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiB3aXRoIEdQVSBhY2NlbGVyYXRpb24gKi9cbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtLCBib3gtc2hhZG93O1xufVxuXG4vKiBUYWJsZXQgb3B0aW1pemF0aW9ucyAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogMTAyM3B4KSB7XG4gIC5oZXJvLWJ1dHRvbi1oZXJpdGFnZSB7XG4gICAgLS1oZXJvLWJ1dHRvbi1taW4taGVpZ2h0OiA0NHB4O1xuICAgIC0taGVyby1idXR0b24taGVyaXRhZ2UtcGFkZGluZzogdmFyKC0tc3BhY2UtMykgdmFyKC0tc3BhY2UtNik7XG4gIH1cbn1cblxuLyogRGVza3RvcCBlbmhhbmNlbWVudHMgKi9cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIGFuZCAobWF4LXdpZHRoOiAyNTU5cHgpIHtcbiAgLmhlcm8tYnV0dG9uLWhlcml0YWdlIHtcbiAgICAtLWhlcm8tYnV0dG9uLW1pbi1oZWlnaHQ6IDQ4cHg7XG4gICAgLS1oZXJvLWJ1dHRvbi1oZXJpdGFnZS1wYWRkaW5nOiB2YXIoLS1zcGFjZS0zKSB2YXIoLS1zcGFjZS03KTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wM2VtO1xuICB9XG59XG5cbi8qIEhpZ2gtcmVzb2x1dGlvbiBwcmVtaXVtIHRyZWF0bWVudCB3aXRoIGVuaGFuY2VkIHBlcmZvcm1hbmNlICovXG5AbWVkaWEgKG1pbi13aWR0aDogMjU2MHB4KSB7XG4gIC5oZXJvLWJ1dHRvbi1oZXJpdGFnZSB7XG4gICAgLS1oZXJvLWJ1dHRvbi1taW4taGVpZ2h0OiA1MnB4O1xuICAgIC0taGVyby1idXR0b24taGVyaXRhZ2UtcGFkZGluZzogdmFyKC0tc3BhY2UtNCkgdmFyKC0tc3BhY2UtOCk7XG4gICAgLS1oZXJvLWJ1dHRvbi1nYXA6IHZhcigtLXNwYWNlLTMpO1xuICAgIC8qIEhpZ2gtRFBJIG9wdGltaXphdGlvbiAqL1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICB9XG59XG5cbi8qIEVuaGFuY2VkIGhlcml0YWdlIGJ1dHRvbiBob3ZlciBzdGF0ZSB3aXRoIHN0YWdnZXJlZCBhbmltYXRpb24gKi9cbi5oZXJvLWJ1dHRvbi1oZXJpdGFnZTpob3ZlciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSh2YXIoLS1oZXJvLWhvdmVyLXRyYW5zZm9ybS15KSkgc2NhbGUodmFyKC0taGVyby1ob3Zlci1zY2FsZSkpIHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICBib3gtc2hhZG93OiBcbiAgICAwIHZhcigtLXNwYWNlLTMpIHZhcigtLXNwYWNlLTYpIHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpIC8gMC4yNSksXG4gICAgMCB2YXIoLS1zcGFjZS0xKSB2YXIoLS1zcGFjZS0yKSByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSAvIDAuMTUpO1xuICAvKiBTdGFnZ2VyZWQgYW5pbWF0aW9uIGRlbGF5IGZvciBpY29uICovXG4gIHRyYW5zaXRpb24tZGVsYXk6IDBzLCAwLjA1cztcbn1cblxuLyoqXG4gKiBIZXJvIEJ1dHRvbiAtIFNlY29uZGFyeVxuICogQnVpbGRzIG9uIGdsb2JhbCBidG4gYnRuLXNlY29uZGFyeSBjbGFzc2VzXG4gKiBTdGFuZGFyZCBidXR0b24gc3R5bGluZyB3aXRoIHRvdWNoIG9wdGltaXphdGlvblxuICogRW5oYW5jZWQgYW5pbWF0aW9ucyB3aXRoIHNtb290aCB0cmFuc2l0aW9uc1xuICogU0VDVElPTiBQQVRURVJOOiBJbnRlZ3JhdGVkIHdpdGhpbiBjb250ZW50IHN0cnVjdHVyZVxuICogXG4gKiBCVVRUT04gU1RZTElORyBGSVhFUzpcbiAqIC0gTk8gdW53YW50ZWQgYm9yZGVycyAtIHVzZSBib3JkZXI6IG5vbmUgZm9yIGNsZWFuIGFwcGVhcmFuY2VcbiAqIC0gQ2xlYW4gYmFja2dyb3VuZCBjb2xvcnMgd2l0aCBwcm9wZXIgY29udHJhc3RcbiAqIC0gVmlzdWFsIGhpZXJhcmNoeSB3aXRoIGhlcml0YWdlIGJ1dHRvblxuICogLSBTbW9vdGggdHJhbnNpdGlvbnMgd2l0aG91dCB2aXN1YWwgYXJ0aWZhY3RzXG4gKi9cbi5oZXJvLWJ1dHRvbi1zZWNvbmRhcnkge1xuICAvKiBUb3VjaCB0YXJnZXQgb3B0aW1pemF0aW9uIHVzaW5nIENTUyB2YXJpYWJsZXMgKi9cbiAgcGFkZGluZzogdmFyKC0taGVyby1idXR0b24tc2Vjb25kYXJ5LXBhZGRpbmcpICFpbXBvcnRhbnQ7XG4gIGhlaWdodDogdmFyKC0taGVyby1idXR0b24tbWluLWhlaWdodCk7IC8qIEZpeGVkIGhlaWdodCB0byBwcmV2ZW50IG92ZXJzaXppbmcgKi9cbiAgbGluZS1oZWlnaHQ6IDEuMjsgLyogQ29tcGFjdCBsaW5lIGhlaWdodCB0byBtYXRjaCBoZXJpdGFnZSBidXR0b24gKi9cbiAgXG4gIC8qIExheW91dCBhbmQgY29udGVudCAqL1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiB2YXIoLS1oZXJvLWJ1dHRvbi1nYXApO1xuICBvdmVyZmxvdzogaGlkZGVuOyAvKiBFbnN1cmUgdGV4dCBkb2Vzbid0IG92ZXJmbG93ICovXG4gIFxuICAvKiBCdXR0b24gc2l6aW5nICovXG4gIHdpZHRoOiBhdXRvO1xuICBmbGV4OiAwIDAgYXV0bztcbiAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7IC8qIEVuc3VyZSBjb25zaXN0ZW50IG1hcmdpbiBoYW5kbGluZyAqL1xuICBcbiAgLyogQ0xFQU4gQlVUVE9OIEFQUEVBUkFOQ0UgLSBSZW1vdmUgdW53YW50ZWQgYm9yZGVycyAqL1xuICBib3JkZXI6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gIFxuICAvKiBFbmhhbmNlZCBpbnRlcmFjdGlvbiB3aXRoIGltcHJvdmVkIHRpbWluZyAqL1xuICB0cmFuc2l0aW9uOiBcbiAgICB0cmFuc2Zvcm0gdmFyKC0taGVyby1pY29uLXRyYW5zaXRpb24tZHVyYXRpb24pIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSksXG4gICAgYm94LXNoYWRvdyB2YXIoLS1oZXJvLWljb24tdHJhbnNpdGlvbi1kdXJhdGlvbikgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLWhlcm8taWNvbi10cmFuc2l0aW9uLWR1cmF0aW9uKSB2YXIoLS1lYXNlLXNtb290aCk7XG4gIFxuICAvKiBQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gd2l0aCBHUFUgYWNjZWxlcmF0aW9uICovXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybSwgYm94LXNoYWRvdztcbn1cblxuLyogVGFibGV0IG9wdGltaXphdGlvbnMgKi9cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDEwMjNweCkge1xuICAuaGVyby1idXR0b24tc2Vjb25kYXJ5IHtcbiAgICAtLWhlcm8tYnV0dG9uLW1pbi1oZWlnaHQ6IDQ0cHg7XG4gICAgLS1oZXJvLWJ1dHRvbi1zZWNvbmRhcnktcGFkZGluZzogdmFyKC0tc3BhY2UtMykgdmFyKC0tc3BhY2UtNik7XG4gIH1cbn1cblxuLyogRGVza3RvcCBlbmhhbmNlbWVudHMgKi9cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIGFuZCAobWF4LXdpZHRoOiAyNTU5cHgpIHtcbiAgLmhlcm8tYnV0dG9uLXNlY29uZGFyeSB7XG4gICAgLS1oZXJvLWJ1dHRvbi1taW4taGVpZ2h0OiA0OHB4O1xuICAgIC0taGVyby1idXR0b24tc2Vjb25kYXJ5LXBhZGRpbmc6IHZhcigtLXNwYWNlLTMpIHZhcigtLXNwYWNlLTcpO1xuICB9XG59XG5cbi8qIEhpZ2gtcmVzb2x1dGlvbiBwcmVtaXVtIHRyZWF0bWVudCAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDI1NjBweCkge1xuICAuaGVyby1idXR0b24tc2Vjb25kYXJ5IHtcbiAgICAtLWhlcm8tYnV0dG9uLW1pbi1oZWlnaHQ6IDUycHg7XG4gICAgLS1oZXJvLWJ1dHRvbi1zZWNvbmRhcnktcGFkZGluZzogdmFyKC0tc3BhY2UtNCkgdmFyKC0tc3BhY2UtOCk7XG4gICAgLS1oZXJvLWJ1dHRvbi1nYXA6IHZhcigtLXNwYWNlLTMpO1xuICB9XG59XG5cbi8qIEVuaGFuY2VkIHNlY29uZGFyeSBidXR0b24gaG92ZXIgd2l0aCBzdGFnZ2VyZWQgYW5pbWF0aW9uICovXG4uaGVyby1idXR0b24tc2Vjb25kYXJ5OmhvdmVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKHZhcigtLWhlcm8taG92ZXItdHJhbnNmb3JtLXkpKSBzY2FsZSgxLjAxKSB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgYm94LXNoYWRvdzogXG4gICAgMCB2YXIoLS1zcGFjZS0yKSB2YXIoLS1zcGFjZS00KSByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkgLyAwLjE1KSxcbiAgICAwIHZhcigtLXNwYWNlLTAtNSkgdmFyKC0tc3BhY2UtMSkgcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpIC8gMC4xKTtcbiAgLyogU3RhZ2dlcmVkIGFuaW1hdGlvbiBkZWxheSBmb3IgaWNvbiAqL1xuICB0cmFuc2l0aW9uLWRlbGF5OiAwcywgMC4wM3M7XG59XG5cbi8qKlxuICogSGVybyBCdXR0b24gSWNvbnMgLSBNb2Rlcm4gSWNvbiBTeXN0ZW0gSW50ZWdyYXRpb25cbiAqIFVzZXMgaWNvbiBjb250YWluZXJzIGZvciBicmFuZGVkIHN0eWxpbmcgYW5kIHByb3BlciBzaXppbmdcbiAqIFNtb290aGVyIHRyYW5zaXRpb25zIHdpdGggb3B0aW1pemVkIHRyYW5zZm9ybXNcbiAqIFNFQ1RJT04gUEFUVEVSTjogSW50ZWdyYXRlZCB3aXRoaW4gYnV0dG9uIHN0cnVjdHVyZVxuICogXG4gKiBJQ09OIFNUWUxJTkcgRklYRVM6XG4gKiAtIENsZWFuIGljb24gY29udGFpbmVyIGFwcGVhcmFuY2Ugd2l0aG91dCB1bndhbnRlZCBib3JkZXJzXG4gKiAtIFByb3BlciBiYWNrZ3JvdW5kIGNvbG9ycyAobm90IHRyYW5zcGFyZW50KVxuICogLSBTbW9vdGggdHJhbnNpdGlvbnMgd2l0aG91dCB2aXN1YWwgYXJ0aWZhY3RzXG4gKi9cbi5oZXJvLWJ1dHRvbi1pY29uIHtcbiAgLyogSWNvbiBzaXppbmcgdXNpbmcgQ1NTIHZhcmlhYmxlcyAtIGJ1aWxkcyBvbiBpY29uIGNvbnRhaW5lciBzeXN0ZW0gKi9cbiAgdHJhbnNpdGlvbjogXG4gICAgdHJhbnNmb3JtIHZhcigtLWhlcm8taWNvbi10cmFuc2l0aW9uLWR1cmF0aW9uKSBjdWJpYy1iZXppZXIoMC4zNCwgMS41NiwgMC42NCwgMSksXG4gICAgb3BhY2l0eSB2YXIoLS1oZXJvLWljb24tdHJhbnNpdGlvbi1kdXJhdGlvbikgdmFyKC0tZWFzZS1zbW9vdGgpO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbi8qIFBsYXkgaWNvbiBzcGVjaWZpYyBwb3NpdGlvbmluZyB3aXRoIGVuaGFuY2VkIHRyYW5zaXRpb25zICovXG4uaGVyby1idXR0b24taWNvbi1wbGF5IHtcbiAgLyogSW5oZXJpdHMgZnJvbSBpY29uIGNvbnRhaW5lciBzeXN0ZW0gd2l0aCBzbW9vdGhlciBhbmltYXRpb24gKi9cbiAgdHJhbnNpdGlvbjogXG4gICAgdHJhbnNmb3JtIHZhcigtLWhlcm8taWNvbi10cmFuc2l0aW9uLWR1cmF0aW9uKSBjdWJpYy1iZXppZXIoMC4zNCwgMS41NiwgMC42NCwgMSksXG4gICAgb3BhY2l0eSB2YXIoLS1oZXJvLWljb24tdHJhbnNpdGlvbi1kdXJhdGlvbikgdmFyKC0tZWFzZS1zbW9vdGgpO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbi8qIEVuaGFuY2VkIGljb24gYW5pbWF0aW9ucyBvbiBidXR0b24gaG92ZXIgd2l0aCBzdGFnZ2VyZWQgdGltaW5nICovXG4uaGVyby1idXR0b24taGVyaXRhZ2U6aG92ZXIgLmhlcm8tYnV0dG9uLWljb24ge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgodmFyKC0tc3BhY2UtMSkpIHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB0cmFuc2l0aW9uLWRlbGF5OiAwLjA1cztcbn1cblxuLmhlcm8tYnV0dG9uLXNlY29uZGFyeTpob3ZlciAuaGVyby1idXR0b24taWNvbi1wbGF5IHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxLjE1KSB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgdHJhbnNpdGlvbi1kZWxheTogMC4wM3M7XG59XG5cbi8qIEljb24gY29udGFpbmVyIGxheW91dCBmb3IgaGVybyBidXR0b25zICovXG4uaGVyby1idXR0b24taGVyaXRhZ2UgLmljb24tY29udGFpbmVyLXNtLFxuLmhlcm8tYnV0dG9uLXNlY29uZGFyeSAuaWNvbi1jb250YWluZXItc20ge1xuICBmbGV4LXNocmluazogMDtcbiAgLyogRW5zdXJlIHBlcmZlY3QgY2VudGVyaW5nIHdpdGhpbiBjb250YWluZXIgLSBvdmVycmlkZSBiYXNlIHN0eWxlcyAqL1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50O1xuICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7XG4gIC8qIEVuc3VyZSBubyBjb25mbGljdGluZyBtYXJnaW5zIG9yIHBhZGRpbmcgKi9cbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xufVxuXG4vKiBIZXJpdGFnZSBidXR0b24gaWNvbiBjb250YWluZXIgbGF5b3V0ICovXG4uaGVyby1idXR0b24taGVyaXRhZ2UgLmljb24tY29udGFpbmVyLXNtIHtcbiAgLyogUmVzZXQgbWFyZ2luIGZvciBwZXJmZWN0IGNlbnRlcmluZywgYnV0IGtlZXAgdGhlIGljb24gZ2FwIHNwYWNpbmcgKi9cbiAgbWFyZ2luOiAwO1xufVxuXG4vKiBTZWNvbmRhcnkgYnV0dG9uIGljb24gY29udGFpbmVyIGxheW91dCBhbmQgc3R5bGluZyAqL1xuLmhlcm8tYnV0dG9uLXNlY29uZGFyeSAuaWNvbi1jb250YWluZXItc20ge1xuICAvKiBSZXNldCBtYXJnaW4gZm9yIHBlcmZlY3QgY2VudGVyaW5nLCBidXQga2VlcCB0aGUgaWNvbiBnYXAgc3BhY2luZyAqL1xuICBtYXJnaW46IDA7XG4gIC8qIElDT04gQ09OVFJBU1QgRklYIHYyOiBFbmhhbmNlZCBiYWNrZ3JvdW5kIGNvbG9yIGZvciBXQ0FHIEFBIGNvbXBsaWFuY2UgKi9cbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpIC8gMC4yNSk7XG4gIC8qIEVuc3VyZSBjb25zaXN0ZW50IHN0eWxpbmcgd2l0aCBvdGhlciBpY29uIGNvbnRhaW5lcnMgKi9cbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS1oZXJvLWljb24tdHJhbnNpdGlvbi1kdXJhdGlvbikgdmFyKC0tZWFzZS1zbW9vdGgpO1xufVxuXG4vKiBTZWNvbmRhcnkgYnV0dG9uIGhvdmVyIHN0YXRlIC0gZW5oYW5jZSBpY29uIGNvbnRhaW5lciBjb250cmFzdCAqL1xuLmhlcm8tYnV0dG9uLXNlY29uZGFyeTpob3ZlciAuaWNvbi1jb250YWluZXItc20ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkgLyAwLjM1KTtcbn1cblxuLyogRW5zdXJlIGljb24gY29sb3IgaXMgcHJvcGVybHkgdmlzaWJsZSAqL1xuLmhlcm8tYnV0dG9uLXNlY29uZGFyeSAuaWNvbi1jb250YWluZXItc20gLmljb24tc20ge1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnktNjAwKSkgIWltcG9ydGFudDtcbiAgc3Ryb2tlLXdpZHRoOiAyLjU7XG59XG5cbi8qIEhpZ2gtcmVzb2x1dGlvbiBpY29uIGFkanVzdG1lbnRzICovXG5AbWVkaWEgKG1pbi13aWR0aDogMjU2MHB4KSB7XG4gIC5oZXJvLWJ1dHRvbi1oZXJpdGFnZSAuaWNvbi1jb250YWluZXItc20ge1xuICAgIG1hcmdpbi1sZWZ0OiB2YXIoLS1zcGFjZS0yKTtcbiAgfVxuICBcbiAgLmhlcm8tYnV0dG9uLXNlY29uZGFyeSAuaWNvbi1jb250YWluZXItc20ge1xuICAgIG1hcmdpbi1yaWdodDogdmFyKC0tc3BhY2UtMik7XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBSRVNQT05TSVZFIE1PQklMRS1GSVJTVCBPUFRJTUlaQVRJT05TIC0gQ1JJVElDQUwgQ1NTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBNb2JpbGUtc3BlY2lmaWMgb3B0aW1pemF0aW9uc1xuICogRm9jdXMgb24gdG91Y2ggdGFyZ2V0cyBhbmQgcmVhZGFiaWxpdHlcbiAqIENyaXRpY2FsIENTUyBmb3IgbW9iaWxlLWZpcnN0IGxvYWRpbmdcbiAqIFNFQ1RJT04gUEFUVEVSTjogTW9iaWxlIG9wdGltaXphdGlvbnMgaW50ZWdyYXRlZFxuICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLmhlcm8tc2VjdGlvbiB7XG4gICAgLS1oZXJvLXNlY3Rpb24tbWluLWhlaWdodDogNTB2aDsgLyogT3B0aW1pemVkIGZvciBtb2JpbGUgc2NyZWVucyAqL1xuICB9XG4gIFxuICAuaGVyby1jb250ZW50IHtcbiAgICAtLWhlcm8tY29udGVudC1nYXA6IHZhcigtLXNwYWNlLTQpO1xuICAgIC0taGVyby1jb250ZW50LXBhZGRpbmc6IHZhcigtLXNwYWNlLTYpIDA7XG4gIH1cbiAgXG4gIC8qIE1vYmlsZSBidXR0b24gb3B0aW1pemF0aW9ucyB3aXRoIGNyaXRpY2FsIENTUyAqL1xuICAuaGVyby1hY3Rpb25zIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAtLWhlcm8tYWN0aW9ucy1nYXA6IHZhcigtLXNwYWNlLTMpO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgbWFyZ2luOiB2YXIoLS1oZXJvLWFjdGlvbnMtbWFyZ2luLXRvcCkgYXV0byAwO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxuICBcbiAgLmhlcm8tYnV0dG9uLWhlcml0YWdlLFxuICAuaGVyby1idXR0b24tc2Vjb25kYXJ5IHtcbiAgICB3aWR0aDogYXV0bztcbiAgICBtaW4td2lkdGg6IDIwMHB4O1xuICAgIG1heC13aWR0aDogMjgwcHg7IC8qIEtlZXAgcmVhc29uYWJsZSBtYXggb24gbW9iaWxlICovXG4gICAgaGVpZ2h0OiA0OHB4OyAvKiBGaXhlZCBoZWlnaHQgZm9yIGFjY2Vzc2liaWxpdHkgb24gbW9iaWxlICovXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7IC8qIEFsbG93IHRleHQgd3JhcHBpbmcgb24gbW9iaWxlIGlmIG5lZWRlZCAqL1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBcbiAgICAvKiBDcml0aWNhbCBDU1MgZm9yIG1vYmlsZSBwZXJmb3JtYW5jZSAqL1xuICAgIGNvbnRhaW46IGxheW91dCBzdHlsZTtcbiAgICBcbiAgICAvKiBFbnN1cmUgY2xlYW4gbW9iaWxlIGFwcGVhcmFuY2UgKi9cbiAgICBib3JkZXI6IG5vbmU7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gIC8qIE1vYmlsZSBpY29uIGNvbnRhaW5lciBhZGp1c3RtZW50cyAqL1xuICAuaGVyby1idXR0b24taGVyaXRhZ2UgLmljb24tY29udGFpbmVyLXNtLFxuICAuaGVyby1idXR0b24tc2Vjb25kYXJ5IC5pY29uLWNvbnRhaW5lci1zbSB7XG4gICAgLyogTWFpbnRhaW4gcHJvcGVyIHRvdWNoIHRhcmdldHMgb24gbW9iaWxlICovXG4gICAgbWFyZ2luOiAwIHZhcigtLXNwYWNlLTEpO1xuICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQUNDRVNTSUJJTElUWSAmIElOVEVSQUNUSU9OIFNUQVRFUyAtIEVOSEFOQ0VEIEZPQ1VTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBFbmhhbmNlZCBmb2N1cyBzdGF0ZXMgZm9yIGFjY2Vzc2liaWxpdHkgY29tcGxpYW5jZSAoV0NBRyAyLjEgQUEpXG4gKiBJbXByb3ZlZCB2aXNpYmlsaXR5IGFuZCBpbnRlcmFjdGlvbiBmZWVkYmFja1xuICogU0VDVElPTiBQQVRURVJOOiBGb2N1cyBzdGF0ZXMgaW50ZWdyYXRlZCB3aXRoIGJ1dHRvbiBzdHJ1Y3R1cmVcbiAqIFxuICogRk9DVVMgU1RZTElORyBGSVhFUzpcbiAqIC0gQ2xlYW4gZm9jdXMgaW5kaWNhdG9ycyB3aXRob3V0IHVud2FudGVkIGJvcmRlciBhcnRpZmFjdHNcbiAqIC0gUHJvcGVyIHotaW5kZXggZm9yIGZvY3VzZWQgZWxlbWVudHNcbiAqIC0gV0NBRyAyLjEgQUEgY29tcGxpYW5jZSBtYWludGFpbmVkXG4gKi9cbi5oZXJvLWJ1dHRvbi1oZXJpdGFnZTpmb2N1cy12aXNpYmxlLFxuLmhlcm8tYnV0dG9uLXNlY29uZGFyeTpmb2N1cy12aXNpYmxlIHtcbiAgb3V0bGluZTogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICBib3gtc2hhZG93OiBcbiAgICAwIDAgMCB2YXIoLS1oZXJvLWZvY3VzLW91dGxpbmUtd2lkdGgpIHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSAvIDAuMyksXG4gICAgMCAwIDAgY2FsYyh2YXIoLS1oZXJvLWZvY3VzLW91dGxpbmUtd2lkdGgpICsgMXB4KSByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpLFxuICAgIDAgdmFyKC0tc3BhY2UtMikgdmFyKC0tc3BhY2UtNCkgcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpIC8gMC4yKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxMDtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxLjAyKSB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgdHJhbnNpdGlvbjogXG4gICAgYm94LXNoYWRvdyB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpLFxuICAgIHRyYW5zZm9ybSB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpO1xufVxuXG4vKiBJY29uIGNvbnRhaW5lcnMgaGF2ZSBubyBmb2N1cyBzdGF0ZXMgLSBsYXlvdXQgb25seSAqL1xuXG4vKiBFbmhhbmNlZCBhY3RpdmUgc3RhdGVzIGZvciBiZXR0ZXIgaW50ZXJhY3Rpb24gZmVlZGJhY2sgKi9cbi5oZXJvLWJ1dHRvbi1oZXJpdGFnZTphY3RpdmUsXG4uaGVyby1idXR0b24tc2Vjb25kYXJ5OmFjdGl2ZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxcHgpIHNjYWxlKDAuOTgpIHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiBjYWxjKHZhcigtLXRpbWluZy1mYXN0KSAqIDAuNSk7XG4gIGJvcmRlcjogbm9uZTtcbiAgb3V0bGluZTogbm9uZTtcbn1cblxuLyogSGlnaCBjb250cmFzdCBtb2RlIHN1cHBvcnQgd2l0aCBlbmhhbmNlZCB2aXNpYmlsaXR5ICovXG5AbWVkaWEgKHByZWZlcnMtY29udHJhc3Q6IGhpZ2gpIHtcbiAgLmhlcm8tdGl0bGUge1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IHVuc2V0O1xuICAgIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkpO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7IC8qIEluY3JlYXNlZCB3ZWlnaHQgZm9yIGhpZ2ggY29udHJhc3QgKi9cbiAgfVxuICBcbiAgLmhlcm8tdGl0bGU6OmFmdGVyIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1jb2xvci1mb3JlZ3JvdW5kKSk7XG4gICAgaGVpZ2h0OiB2YXIoLS1zcGFjZS0xKTsgLyogVGhpY2tlciB1bmRlcmxpbmUgKi9cbiAgfVxuXG4gIC8qIEhpZ2ggY29udHJhc3QgaWNvbiBjb250YWluZXIgc3R5bGluZyAqL1xuICAuaGVyby1idXR0b24tc2Vjb25kYXJ5IC5pY29uLWNvbnRhaW5lci1zbSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLWZvcmVncm91bmQpIC8gMC4yKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2IodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkpO1xuICB9XG4gIFxuICAvKiBFbmhhbmNlZCBmb2N1cyBzdGF0ZXMgZm9yIGhpZ2ggY29udHJhc3QgKi9cbiAgLmhlcm8tYnV0dG9uLWhlcml0YWdlOmZvY3VzLXZpc2libGUsXG4gIC5oZXJvLWJ1dHRvbi1zZWNvbmRhcnk6Zm9jdXMtdmlzaWJsZSB7XG4gICAgb3V0bGluZTogNHB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgICBvdXRsaW5lLW9mZnNldDogNHB4O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgfVxufVxuXG4vKiBSZWR1Y2VkIG1vdGlvbiBzdXBwb3J0IHdpdGggcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uICovXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAuaGVyby10aXRsZSxcbiAgLmhlcm8tYnV0dG9uLWljb24sXG4gIC5oZXJvLWJ1dHRvbi1oZXJpdGFnZSxcbiAgLmhlcm8tYnV0dG9uLXNlY29uZGFyeSxcbiAgLmljb24tY29udGFpbmVyLXNtIHtcbiAgICB0cmFuc2l0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKSAhaW1wb3J0YW50O1xuICAgIHdpbGwtY2hhbmdlOiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgYW5pbWF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbiAgXG4gIC5oZXJvLXRpdGxlIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB1bnNldDtcbiAgICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWZvcmVncm91bmQpKTtcbiAgfVxuICBcbiAgLmhlcm8tYnV0dG9uLWhlcml0YWdlOmhvdmVyLFxuICAuaGVyby1idXR0b24tc2Vjb25kYXJ5OmhvdmVyLFxuICAuaGVyby1idXR0b24taGVyaXRhZ2U6Zm9jdXMtdmlzaWJsZSxcbiAgLmhlcm8tYnV0dG9uLXNlY29uZGFyeTpmb2N1cy12aXNpYmxlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApICFpbXBvcnRhbnQ7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSkgIWltcG9ydGFudDtcbiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuICBcbiAgLmhlcm8tYnV0dG9uLWhlcml0YWdlOmhvdmVyIC5oZXJvLWJ1dHRvbi1pY29uLFxuICAuaGVyby1idXR0b24tc2Vjb25kYXJ5OmhvdmVyIC5oZXJvLWJ1dHRvbi1pY29uLXBsYXkge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCkgIWltcG9ydGFudDtcbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFRSVVNUIElORElDQVRPUlMgLSBCUkFORC1DT01QTElBTlQgU09DSUFMIFBST09GXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBUcnVzdCBJbmRpY2F0b3JzIENvbnRhaW5lclxuICogRGlzcGxheXMgc29jaWFsIHByb29mIGVsZW1lbnRzICh1cHRpbWUsIHVzZXIgY291bnQsIGNvbXBsaWFuY2UpXG4gKiBObyBoZXJpdGFnZSByZWQgLSB1c2VzIG11dGVkIGNvbG9ycyBmb3Igc3VwcG9ydGluZyBpbmZvcm1hdGlvblxuICogTW9iaWxlLWZpcnN0IHJlc3BvbnNpdmUgbGF5b3V0IHdpdGggcHJvcGVyIHNwYWNpbmdcbiAqL1xuLmhlcm8tdHJ1c3QtaW5kaWNhdG9ycyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0zKTtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1hcmdpbi10b3A6IDA7XG4gIFxuICAvKiBNb2JpbGUtZmlyc3Qgc3BhY2luZyAqL1xuICBwYWRkaW5nOiAwO1xufVxuXG4vKiBEZXNrdG9wIC0gaG9yaXpvbnRhbCBsYXlvdXQgKi9cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuaGVyby10cnVzdC1pbmRpY2F0b3JzIHtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTQpO1xuICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cbn1cblxuLyogTGFyZ2UgZGVza3RvcCAtIG1vcmUgc3BhY2luZyAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAuaGVyby10cnVzdC1pbmRpY2F0b3JzIHtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTYpO1xuICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cbn1cblxuLyoqXG4gKiBJbmRpdmlkdWFsIFRydXN0IEluZGljYXRvclxuICogRWFjaCBpbmRpY2F0b3IgaGFzIGFuIGljb24gYW5kIHRleHRcbiAqIFVzZXMgbXV0ZWQgY29sb3JzIC0gTk8gaGVyaXRhZ2UgcmVkIHBlciBicmFuZCBndWlkZWxpbmVzXG4gKi9cbi5oZXJvLXRydXN0LWluZGljYXRvciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogdmFyKC0tc3BhY2UtMik7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQtZm9yZWdyb3VuZCkpO1xuICBcbiAgLyogTW9iaWxlIG9wdGltaXphdGlvbiAqL1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIFxuICAvKiBTdWJ0bGUgYW5pbWF0aW9uIG9uIGhvdmVyICovXG4gIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2Utc21vb3RoKTtcbn1cblxuLmhlcm8tdHJ1c3QtaW5kaWNhdG9yOmhvdmVyIHtcbiAgb3BhY2l0eTogMC44O1xufVxuXG4vKiBUYWJsZXQgYW5kIHVwIC0gc2xpZ2h0bHkgbGFyZ2VyIHRleHQgKi9cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuaGVyby10cnVzdC1pbmRpY2F0b3Ige1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJhc2UpO1xuICB9XG59XG5cbi8qKlxuICogVHJ1c3QgSW5kaWNhdG9yIEljb25cbiAqIFNtYWxsIGNvbG9yZWQgZG90L2NoZWNrL3N0YXIgaWNvblxuICogVXNlcyBicmFuZC1hcHByb3ZlZCBjb2xvcnMgKG5vdCBoZXJpdGFnZSByZWQpXG4gKi9cbi5oZXJvLXRydXN0LWluZGljYXRvci1pY29uIHtcbiAgd2lkdGg6IDhweDtcbiAgaGVpZ2h0OiA4cHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgZmxleC1zaHJpbms6IDA7XG4gIFxuICAvKiBEZWZhdWx0IHRvIG11dGVkIGZvcmVncm91bmQgaWYgbm8gY29sb3Igc3BlY2lmaWVkICovXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1jb2xvci1tdXRlZC1mb3JlZ3JvdW5kKSk7XG4gIFxuICAvKiBTdWJ0bGUgcHVsc2UgYW5pbWF0aW9uIGZvciBlbXBoYXNpcyAqL1xuICBhbmltYXRpb246IHRydXN0LWluZGljYXRvci1wdWxzZSAzcyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgYW5pbWF0aW9uLWRlbGF5OiBjYWxjKHZhcigtLXN0YWdnZXItaW5kZXgsIDApICogMTAwbXMpO1xufVxuXG4vKiBQdWxzZSBhbmltYXRpb24gZm9yIHRydXN0IGluZGljYXRvcnMgKi9cbkBrZXlmcmFtZXMgdHJ1c3QtaW5kaWNhdG9yLXB1bHNlIHtcbiAgMCUsIDEwMCUge1xuICAgIG9wYWNpdHk6IDAuODtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICB9XG4gIDUwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG4gIH1cbn1cblxuLyoqXG4gKiBUcnVzdCBJbmRpY2F0b3IgVGV4dFxuICogVXNlcyB0ZXh0LXNtIGNsYXNzIGZyb20gZ2xvYmFsIHR5cG9ncmFwaHlcbiAqIEluaGVyaXRzIGNvbG9yIGZyb20gcGFyZW50IGNvbnRhaW5lclxuICovXG4uaGVyby10cnVzdC1pbmRpY2F0b3ItdGV4dCB7XG4gIC8qIFR5cG9ncmFwaHkgaGFuZGxlZCBieSBnbG9iYWwgdGV4dC1zbSBjbGFzcyAqL1xuICAvKiBDb2xvciBpbmhlcml0ZWQgZnJvbSBwYXJlbnQgKi9cbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDFlbTtcbn1cblxuLyogSGlnaCBjb250cmFzdCBtb2RlIHN1cHBvcnQgKi9cbkBtZWRpYSAocHJlZmVycy1jb250cmFzdDogaGlnaCkge1xuICAuaGVyby10cnVzdC1pbmRpY2F0b3Ige1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIH1cbiAgXG4gIC5oZXJvLXRydXN0LWluZGljYXRvci1pY29uIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCBjdXJyZW50Q29sb3I7XG4gIH1cbn1cblxuLyogUmVkdWNlZCBtb3Rpb24gc3VwcG9ydCAqL1xuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLmhlcm8tdHJ1c3QtaW5kaWNhdG9yLWljb24ge1xuICAgIGFuaW1hdGlvbjogbm9uZTtcbiAgfVxuICBcbiAgLmhlcm8tdHJ1c3QtaW5kaWNhdG9yIHtcbiAgICB0cmFuc2l0aW9uOiBub25lO1xuICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgUFJJTlQgTUVESUEgT1BUSU1JWkFUSU9OIC0gRU5IQU5DRUQgRE9DVU1FTlRBVElPTiBTVVBQT1JUXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBQcmludCBzdHlsZXMgb3B0aW1pemVkIGZvciBkb2N1bWVudGF0aW9uXG4gKiBDbGVhbiBwcmVzZW50YXRpb24gd2l0aCBlc3NlbnRpYWwgaW5mb3JtYXRpb24gb25seVxuICogU0VDVElPTiBQQVRURVJOOiBQcmludCBvcHRpbWl6YXRpb24gaW50ZWdyYXRlZFxuICovXG5AbWVkaWEgcHJpbnQge1xuICAuaGVyby1zZWN0aW9uIHtcbiAgICBtaW4taGVpZ2h0OiBhdXRvO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTgpIHZhcigtLXNwYWNlLTQpO1xuICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgcmdiKHZhcigtLWNvbG9yLW11dGVkLWZvcmVncm91bmQpKTtcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiBibGFjayAhaW1wb3J0YW50O1xuICB9XG4gIFxuICAuaGVyby1jb250ZW50IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KSAwO1xuICAgIGdhcDogdmFyKC0tc3BhY2UtMyk7XG4gIH1cbiAgXG4gIC5oZXJvLWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IG5vbmU7IC8qIEhpZGUgaW50ZXJhY3RpdmUgZWxlbWVudHMgaW4gcHJpbnQgKi9cbiAgfVxuICBcbiAgLmhlcm8tdGl0bGUge1xuICAgIGJhY2tncm91bmQ6IG5vbmUgIWltcG9ydGFudDtcbiAgICAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogdW5zZXQgIWltcG9ydGFudDtcbiAgICBjb2xvcjogYmxhY2sgIWltcG9ydGFudDtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIHBhZ2UtYnJlYWstYWZ0ZXI6IGF2b2lkO1xuICB9XG4gIFxuICAuaGVyby10aXRsZTo6YWZ0ZXIge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgXG4gIC5oZXJvLXN1YnRpdGxlIHtcbiAgICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLW11dGVkLWZvcmVncm91bmQpKSAhaW1wb3J0YW50O1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIH1cbiAgXG4gIC5oZXJvLWRlc2NyaXB0aW9uIHtcbiAgICBjb2xvcjogYmxhY2sgIWltcG9ydGFudDtcbiAgICBib3JkZXItYm90dG9tOiBub25lICFpbXBvcnRhbnQ7XG4gICAgbWF4LXdpZHRoOiBub25lO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTQpO1xuICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgfVxuXG4gIC8qIEhpZGUgYWxsIGludGVyYWN0aXZlIGVsZW1lbnRzIGFuZCBpY29ucyBpbiBwcmludCAqL1xuICAuaWNvbi1jb250YWluZXItc20sXG4gIC5oZXJvLWJ1dHRvbi1pY29uLFxuICAuaGVyby1idXR0b24taWNvbi1wbGF5IHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbiAgXG4gIC8qIFByaW50LXNwZWNpZmljIGNvbnRlbnQgc3R5bGluZyAqL1xuICAuaGVyby1jb250ZW50OjphZnRlciB7XG4gICAgY29udGVudDogXCLigJRcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgbWFyZ2luOiB2YXIoLS1zcGFjZS00KSAwO1xuICAgIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQtZm9yZWdyb3VuZCkpO1xuICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgUEVSRk9STUFOQ0UgT1BUSU1JWkFUSU9OUyAtIEhJR0gtUkVTT0xVVElPTiBESVNQTEFZU1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogSGlnaC1EUEkgZGlzcGxheSBvcHRpbWl6YXRpb25zIGZvciBlbmhhbmNlZCB2aXN1YWwgcXVhbGl0eVxuICogUmV0aW5hIGFuZCA0SyBkaXNwbGF5IHN1cHBvcnQgd2l0aCBwZXJmb3JtYW5jZSBjb25zaWRlcmF0aW9uc1xuICogU0VDVElPTiBQQVRURVJOOiBQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25zIGludGVncmF0ZWRcbiAqL1xuQG1lZGlhIFxuICAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSxcbiAgKG1pbi1yZXNvbHV0aW9uOiAxOTJkcGkpLFxuICAobWluLXJlc29sdXRpb246IDJkcHB4KSB7XG4gIFxuICAuaGVyby10aXRsZSB7XG4gICAgLyogRW5oYW5jZWQgdGV4dCByZW5kZXJpbmcgZm9yIGhpZ2gtRFBJIGRpc3BsYXlzICovXG4gICAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICB9XG4gIFxuICAuaGVyby1idXR0b24taGVyaXRhZ2UsXG4gIC5oZXJvLWJ1dHRvbi1zZWNvbmRhcnkge1xuICAgIC8qIENyaXNwIGJvcmRlcnMgYW5kIHNoYWRvd3MgZm9yIGhpZ2gtRFBJICovXG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgYm9yZGVyLXJhZGl1czogY2FsYyh2YXIoLS1yYWRpdXMtbWQpICsgMC41cHgpO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgfVxuICBcbiAgLyogSWNvbiBjb250YWluZXJzIGhhdmUgbm8gaGlnaC1EUEkgc3R5bGluZyAtIGxheW91dCBvbmx5ICovXG59XG5cbi8qKlxuICogQ3JpdGljYWwgQ1NTIGxvYWRpbmcgb3B0aW1pemF0aW9uXG4gKiBBYm92ZS10aGUtZm9sZCBjb250ZW50IHByaW9yaXRpemF0aW9uXG4gKiBTRUNUSU9OIFBBVFRFUk46IENyaXRpY2FsIGxvYWRpbmcgb3B0aW1pemF0aW9uIGludGVncmF0ZWRcbiAqL1xuLmhlcm8tc2VjdGlvbi5jcml0aWNhbC1sb2FkIHtcbiAgLyogQ3JpdGljYWwgcGF0aCBvcHRpbWl6YXRpb24gZm9yIGluaXRpYWwgcGFpbnQgKi9cbiAgY29udGFpbjogc3RyaWN0O1xuICBjb250ZW50LXZpc2liaWxpdHk6IGF1dG87XG4gIFxuICAvKiBQcmlvcml0aXplIGhlcm8gY29udGVudCBmb3IgTENQIG9wdGltaXphdGlvbiAqL1xuICAuaGVyby1jb250ZW50IHtcbiAgICBjb250YWluLWludHJpbnNpYy1zaXplOiAwIDQwMHB4O1xuICB9XG4gIFxuICAuaGVyby10aXRsZSB7XG4gICAgLyogRW5zdXJlIHRpdGxlIGlzIHJlbmRlcmVkIGltbWVkaWF0ZWx5ICovXG4gICAgY29udGFpbjogbm9uZTtcbiAgICBjb250ZW50LXZpc2liaWxpdHk6IHZpc2libGU7XG4gIH1cbn1cblxuLyogUGVyZm9ybWFuY2UgbW9uaXRvcmluZyBoZWxwZXIgKGRldmVsb3BtZW50IG9ubHkpICovXG5AbWVkaWEgKG1heC13aWR0aDogMCkge1xuICAuaGVyby1zZWN0aW9uOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiSGVybyBjb21wb25lbnQgbG9hZGVkIC0gUGVyZm9ybWFuY2UgbW9uaXRvcmluZyBhY3RpdmUgLSBTZWN0aW9uIFBhdHRlcm4gQ29tcGxpYW50IC0gQnV0dG9uIFN0eWxpbmcgRml4ZWQgLSBJY29uIENvbnRyYXN0IEVuaGFuY2VkIHY0LjFcIjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAtMTAwMHB4O1xuICAgIGxlZnQ6IC0xMDAwcHg7XG4gICAgb3BhY2l0eTogMDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgfVxufSIsIi8qKlxuICogSWNvbiBTeXN0ZW0gU3R5bGVzIC0gQ29tcGxldGUgSWNvbiBTeXN0ZW0gSW1wbGVtZW50YXRpb25cbiAqIFxuICogQ29tYmluZWQgQ1NTIGZvciBJY29uIGNvbXBvbmVudCBmb2xsb3dpbmcgaWNvbi1zeXN0ZW0tc3RhbmRhcmQubWRcbiAqIEluY2x1ZGVzIGJvdGggaWNvbiBzaXppbmcvY29sb3JzIGFuZCBjb250YWluZXIgc3lzdGVtIGZvciBjb21wbGV0ZSBpY29uIHByZXNlbnRhdGlvblxuICogd2l0aCBoZXJpdGFnZSByZWQgY29tcGxpYW5jZSwgbW9iaWxlIG9wdGltaXphdGlvbiwgYW5kIGFjY2Vzc2liaWxpdHkgc3VwcG9ydC5cbiAqL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgSWNvbiBTaXppbmcgU3lzdGVtIChmb2xsb3dpbmcgaWNvbi1zeXN0ZW0tc3RhbmRhcmQubWQpXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uaWNvbi14eHMge1xuICB3aWR0aDogMC43NXJlbTsgLyogMTJweCAtIG1pY3JvIGljb25zIChkaXNjb3VyYWdlZCBmb3IgYnV0dG9ucykgKi9cbiAgaGVpZ2h0OiAwLjc1cmVtO1xuICBmbGV4LXNocmluazogMDsgLyogUHJldmVudCBjb21wcmVzc2lvbiAqL1xuICAvKiBFbnN1cmUgYm91bmRlZCBzaXppbmcgd2l0aGluIGNvbnRhaW5lcnMgKi9cbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBtYXgtaGVpZ2h0OiAxMDAlO1xufVxuXG4uaWNvbi14cyB7XG4gIHdpZHRoOiAxcmVtOyAgICAvKiAxNnB4IC0gaW5saW5lIHRleHQgaWNvbnMgKi9cbiAgaGVpZ2h0OiAxcmVtO1xuICBmbGV4LXNocmluazogMDsgLyogUHJldmVudCBjb21wcmVzc2lvbiAqL1xuICAvKiBFbnN1cmUgYm91bmRlZCBzaXppbmcgd2l0aGluIGNvbnRhaW5lcnMgKi9cbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBtYXgtaGVpZ2h0OiAxMDAlO1xufVxuXG4uaWNvbi1zbSB7XG4gIHdpZHRoOiAxLjI1cmVtOyAvKiAyMHB4IC0gc21hbGwgVUkgZWxlbWVudHMgKi9cbiAgaGVpZ2h0OiAxLjI1cmVtO1xuICBmbGV4LXNocmluazogMDtcbiAgLyogRW5zdXJlIGJvdW5kZWQgc2l6aW5nIHdpdGhpbiBjb250YWluZXJzICovXG4gIG1heC13aWR0aDogMTAwJTtcbiAgbWF4LWhlaWdodDogMTAwJTtcbn1cblxuLmljb24tYmFzZSB7XG4gIHdpZHRoOiAxLjVyZW07ICAvKiAyNHB4IC0gc3RhbmRhcmQgc2l6ZSAoZGVmYXVsdCkgKi9cbiAgaGVpZ2h0OiAxLjVyZW07XG4gIGZsZXgtc2hyaW5rOiAwO1xuICAvKiBFbnN1cmUgYm91bmRlZCBzaXppbmcgd2l0aGluIGNvbnRhaW5lcnMgKi9cbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBtYXgtaGVpZ2h0OiAxMDAlO1xufVxuXG4uaWNvbi1tZCB7XG4gIHdpZHRoOiAycmVtOyAgICAvKiAzMnB4IC0gbWVkaXVtIGVtcGhhc2lzICovXG4gIGhlaWdodDogMnJlbTtcbiAgZmxleC1zaHJpbms6IDA7XG4gIC8qIEVuc3VyZSBib3VuZGVkIHNpemluZyB3aXRoaW4gY29udGFpbmVycyAqL1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIG1heC1oZWlnaHQ6IDEwMCU7XG59XG5cbi5pY29uLWxnIHtcbiAgd2lkdGg6IDIuNXJlbTsgIC8qIDQwcHggLSBmZWF0dXJlIGNhcmRzICovIFxuICBoZWlnaHQ6IDIuNXJlbTtcbiAgZmxleC1zaHJpbms6IDA7XG4gIC8qIEVuc3VyZSBib3VuZGVkIHNpemluZyB3aXRoaW4gY29udGFpbmVycyAqL1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIG1heC1oZWlnaHQ6IDEwMCU7XG59XG5cbi5pY29uLXhsIHtcbiAgd2lkdGg6IDNyZW07ICAgIC8qIDQ4cHggLSBoZXJvIGVsZW1lbnRzICovXG4gIGhlaWdodDogM3JlbTtcbiAgZmxleC1zaHJpbms6IDA7XG4gIC8qIEVuc3VyZSBib3VuZGVkIHNpemluZyB3aXRoaW4gY29udGFpbmVycyAqL1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIG1heC1oZWlnaHQ6IDEwMCU7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBJY29uIENvbG9yIFN0cmF0ZWd5IChmb2xsb3dpbmcgMTAlIFJlZCBSdWxlKVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogRGVmYXVsdCBwcm9mZXNzaW9uYWwgaWNvbiBjb2xvciAqL1xuLmljb24tZGVmYXVsdCB7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQtZm9yZWdyb3VuZCkpO1xuICBzdHJva2Utd2lkdGg6IDI7XG59XG5cbi8qIFByaW1hcnkgYnJhbmQgY29sb3IgZm9yIHN0YW5kYXJkIGljb25zICovXG4uaWNvbi1wcmltYXJ5IHtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5LTYwMCkpO1xuICBzdHJva2Utd2lkdGg6IDI7XG59XG5cbi8qIEhlcml0YWdlIHJlZCAtIG1heGltdW0gMS0yIGljb25zIHBlciB2aWV3cG9ydCAqL1xuLmljb24taGVyaXRhZ2Uge1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpO1xuICBzdHJva2Utd2lkdGg6IDIuNTsgLyogU2xpZ2h0bHkgYm9sZGVyIGZvciBpbXBhY3QgKi9cbn1cblxuLyogU3VwcG9ydGluZyBzZW1hbnRpYyBjb2xvcnMgKi9cbi5pY29uLXN1Y2Nlc3Mge1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXN1Y2Nlc3MpKTtcbiAgc3Ryb2tlLXdpZHRoOiAyO1xufVxuXG4uaWNvbi13YXJuaW5nIHtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci13YXJuaW5nKSk7XG4gIHN0cm9rZS13aWR0aDogMjtcbn1cblxuLyogV2hpdGUgZm9yIGNvbG9yZWQgYmFja2dyb3VuZHMgKi9cbi5pY29uLXdoaXRlIHtcbiAgY29sb3I6IHdoaXRlO1xuICBzdHJva2Utd2lkdGg6IDI7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBJY29uIENvbnRhaW5lciBTeXN0ZW0gLSBCcmFuZGVkIENvbnRhaW5lciBDbGFzc2VzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiA9PT0gSUNPTiBDT05UQUlORVIgU0laRVMgPT09ICovXG5cbi5pY29uLWNvbnRhaW5lci14cyB7XG4gIHdpZHRoOiAycmVtOyAgICAvKiAzMnB4IC0gY29tcGFjdCBpbmxpbmUgZWxlbWVudHMgKi9cbiAgaGVpZ2h0OiAycmVtO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYm9yZGVyLXJhZGl1czogMC4zNzVyZW07IC8qIDZweCAqL1xuICBmbGV4LXNocmluazogMDtcbiAgLyogQ1JJVElDQUw6IFByZXZlbnQgaWNvbiBvdmVyZmxvdyAqL1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIC8qIENvbnRhaW4gbGF5b3V0IGFuZCBwYWludCBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlICovXG4gIGNvbnRhaW46IGxheW91dCBzdHlsZSBwYWludDtcbn1cblxuLmljb24tY29udGFpbmVyLXNtIHtcbiAgd2lkdGg6IDIuNXJlbTsgIC8qIDQwcHggLSBzbWFsbCBVSSBjb21wb25lbnRzICovXG4gIGhlaWdodDogMi41cmVtO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtOyAvKiA4cHggKi9cbiAgZmxleC1zaHJpbms6IDA7XG4gIC8qIENSSVRJQ0FMOiBQcmV2ZW50IGljb24gb3ZlcmZsb3cgKi9cbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAvKiBDb250YWluIGxheW91dCBhbmQgcGFpbnQgZm9yIGJldHRlciBwZXJmb3JtYW5jZSAqL1xuICBjb250YWluOiBsYXlvdXQgc3R5bGUgcGFpbnQ7XG59XG5cbi5pY29uLWNvbnRhaW5lci1iYXNlIHtcbiAgd2lkdGg6IDNyZW07ICAgIC8qIDQ4cHggLSBzdGFuZGFyZCBzaXplIChkZWZhdWx0KSAqL1xuICBoZWlnaHQ6IDNyZW07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBib3JkZXItcmFkaXVzOiAwLjVyZW07IC8qIDhweCAqL1xuICBmbGV4LXNocmluazogMDtcbiAgLyogQ1JJVElDQUw6IFByZXZlbnQgaWNvbiBvdmVyZmxvdyAqL1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIC8qIENvbnRhaW4gbGF5b3V0IGFuZCBwYWludCBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlICovXG4gIGNvbnRhaW46IGxheW91dCBzdHlsZSBwYWludDtcbn1cblxuLmljb24tY29udGFpbmVyLW1kIHtcbiAgd2lkdGg6IDMuNXJlbTsgIC8qIDU2cHggLSBtZWRpdW0gZW1waGFzaXMgKi9cbiAgaGVpZ2h0OiAzLjVyZW07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBib3JkZXItcmFkaXVzOiAwLjc1cmVtOyAvKiAxMnB4ICovXG4gIGZsZXgtc2hyaW5rOiAwO1xuICAvKiBDUklUSUNBTDogUHJldmVudCBpY29uIG92ZXJmbG93ICovXG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgLyogQ29udGFpbiBsYXlvdXQgYW5kIHBhaW50IGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UgKi9cbiAgY29udGFpbjogbGF5b3V0IHN0eWxlIHBhaW50O1xufVxuXG4uaWNvbi1jb250YWluZXItbGcge1xuICB3aWR0aDogNHJlbTsgICAgLyogNjRweCAtIGZlYXR1cmUgY2FyZHMgYW5kIGltcG9ydGFudCBlbGVtZW50cyAqL1xuICBoZWlnaHQ6IDRyZW07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBib3JkZXItcmFkaXVzOiAwLjc1cmVtOyAvKiAxMnB4ICovXG4gIGZsZXgtc2hyaW5rOiAwO1xuICAvKiBDUklUSUNBTDogUHJldmVudCBpY29uIG92ZXJmbG93ICovXG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgLyogQ29udGFpbiBsYXlvdXQgYW5kIHBhaW50IGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UgKi9cbiAgY29udGFpbjogbGF5b3V0IHN0eWxlIHBhaW50O1xufVxuXG4uaWNvbi1jb250YWluZXIteGwge1xuICB3aWR0aDogNXJlbTsgICAgLyogODBweCAtIGhlcm8gZWxlbWVudHMgYW5kIG1ham9yIHNlY3Rpb25zICovXG4gIGhlaWdodDogNXJlbTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGJvcmRlci1yYWRpdXM6IDFyZW07IC8qIDE2cHggKi9cbiAgZmxleC1zaHJpbms6IDA7XG4gIC8qIENSSVRJQ0FMOiBQcmV2ZW50IGljb24gb3ZlcmZsb3cgKi9cbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAvKiBDb250YWluIGxheW91dCBhbmQgcGFpbnQgZm9yIGJldHRlciBwZXJmb3JtYW5jZSAqL1xuICBjb250YWluOiBsYXlvdXQgc3R5bGUgcGFpbnQ7XG59XG5cbi8qID09PSBJQ09OIENPTlRBSU5FUiBDT0xPUlMgPT09ICovXG4vKiBDb250YWluZXIgY29sb3IgY2xhc3NlcyByZW1vdmVkIC0gY29udGFpbmVycyBhcmUgbm93IGxheW91dC1vbmx5ICovXG5cbi5pY29uLWNvbnRhaW5lci1wcmltYXJ5LFxuLmljb24tY29udGFpbmVyLWhlcml0YWdlLFxuLmljb24tY29udGFpbmVyLW11dGVkLFxuLmljb24tY29udGFpbmVyLXN1Y2Nlc3MsXG4uaWNvbi1jb250YWluZXItd2FybmluZyxcbi5pY29uLWNvbnRhaW5lci1vdXRsaW5lIHtcbiAgLyogTm8gdmlzdWFsIHN0eWxpbmcgLSBsYXlvdXQgb25seSAqL1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQ29udGFpbmVyIFF1ZXJ5IFN1cHBvcnQgZm9yIEludHJpbnNpYyBSZXNwb25zaXZlbmVzc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogQ29udGFpbmVyIHF1ZXJpZXMgZm9yIGFkYXB0aXZlIGljb24gc2l6aW5nIGJhc2VkIG9uIGF2YWlsYWJsZSBzcGFjZSAqL1xuQGNvbnRhaW5lciAobWF4LXdpZHRoOiAyNHB4KSB7XG4gIC5pY29uLWNvbnRhaW5lci14cyA+IHN2ZyxcbiAgLmljb24tY29udGFpbmVyLXhzID4gaW1nLFxuICAuaWNvbi1jb250YWluZXIteHMgPiBzcGFuIHtcbiAgICBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtIDAuMjVyZW0pOyAvKiBSZWR1Y2UgcGFkZGluZyBpbiB2ZXJ5IHNtYWxsIHNwYWNlcyAqL1xuICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwJSAtIDAuMjVyZW0pO1xuICB9XG59XG5cbkBjb250YWluZXIgKG1heC13aWR0aDogMzJweCkge1xuICAuaWNvbi1jb250YWluZXItc20gPiBzdmcsXG4gIC5pY29uLWNvbnRhaW5lci1zbSA+IGltZyxcbiAgLmljb24tY29udGFpbmVyLXNtID4gc3BhbiB7XG4gICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAwLjI1cmVtKTsgLyogUmVkdWNlIHBhZGRpbmcgaW4gY29uc3RyYWluZWQgc3BhY2VzICovXG4gICAgbWF4LWhlaWdodDogY2FsYygxMDAlIC0gMC4yNXJlbSk7XG4gIH1cbn1cblxuQGNvbnRhaW5lciAobWluLXdpZHRoOiA4MHB4KSB7XG4gIC5pY29uLWNvbnRhaW5lci14bCA+IHN2ZyxcbiAgLmljb24tY29udGFpbmVyLXhsID4gaW1nLFxuICAuaWNvbi1jb250YWluZXIteGwgPiBzcGFuIHtcbiAgICBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtIDEuNXJlbSk7IC8qIE1vcmUgZ2VuZXJvdXMgcGFkZGluZyBpbiBsYXJnZSBzcGFjZXMgKi9cbiAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSAxLjVyZW0pO1xuICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBNb2JpbGUgT3B0aW1pemF0aW9ucyAoZm9sbG93aW5nIG1vYmlsZS1maXJzdCBhcHByb2FjaClcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAvKiBFbmhhbmNlZCB2aXNpYmlsaXR5IGFuZCB0b3VjaC1mcmllbmRseSBzaXppbmcgKi9cbiAgLmljb24tYmFzZSxcbiAgLmljb24tc20sXG4gIC5pY29uLWxnIHtcbiAgICBzdHJva2Utd2lkdGg6IDIuNTsgLyogQm9sZGVyIHN0cm9rZSBmb3Igc21hbGwgc2NyZWVucyAqL1xuICB9XG4gIFxuICAvKiBIZXJpdGFnZSBpY29ucyBnZXQgZXh0cmEgbW9iaWxlIGVtcGhhc2lzICovXG4gIC5pY29uLWhlcml0YWdlIHtcbiAgICBzdHJva2Utd2lkdGg6IDM7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDFweCAycHggcmdiYSgwLDAsMCwwLjEpKTtcbiAgfVxuICBcbiAgLyogVG91Y2gtZnJpZW5kbHkgaW50ZXJhY3RpdmUgYXJlYXMgKi9cbiAgLmljb24tdG91Y2gge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBtaW4td2lkdGg6IDQ4cHg7XG4gICAgbWluLWhlaWdodDogNDhweDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB9XG4gIFxuICAvKiBFbmhhbmNlZCB0b3VjaC1mcmllbmRseSBzaXppbmcgZm9yIGNvbnRhaW5lcnMgKi9cbiAgLmljb24tY29udGFpbmVyLXhzLFxuICAuaWNvbi1jb250YWluZXItc20sXG4gIC5pY29uLWNvbnRhaW5lci1iYXNlIHtcbiAgICBtaW4td2lkdGg6IDQ4cHg7IC8qIE1pbmltdW0gdG91Y2ggdGFyZ2V0ICovXG4gICAgbWluLWhlaWdodDogNDhweDtcbiAgfVxuICBcbiAgLyogSW50ZXJhY3RpdmUgaWNvbnMgb24gbW9iaWxlIC0gZW5oYW5jZWQgdG91Y2ggdGFyZ2V0cyAqL1xuICAuaWNvbi1pbnRlcmFjdGl2ZSB7XG4gICAgbWluLXdpZHRoOiA0OHB4O1xuICAgIG1pbi1oZWlnaHQ6IDQ4cHg7XG4gICAgLyogTGFyZ2VyIHRhcCBhcmVhIHdpdGhvdXQgdmlzdWFsIGNoYW5nZSAqL1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuICBcbiAgLmljb24taW50ZXJhY3RpdmU6OmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogLThweDtcbiAgICByaWdodDogLThweDtcbiAgICBib3R0b206IC04cHg7XG4gICAgbGVmdDogLThweDtcbiAgICAvKiBJbnZpc2libGUgZXhwYW5kZWQgdG91Y2ggYXJlYSAqL1xuICB9XG4gIFxuICAvKiBDb250YWluZXIgbW9iaWxlIHN0eWxlcyByZW1vdmVkIC0gbGF5b3V0IG9ubHkgKi9cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEhvdmVyIEVmZmVjdHMgZm9yIENvbnRhaW5lcnMgLSBSRU1PVkVEXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogQ29udGFpbmVyIGhvdmVyIGVmZmVjdHMgcmVtb3ZlZCAtIGNvbnRhaW5lcnMgYXJlIG5vdyBsYXlvdXQtb25seSAqL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgSGlnaCBDb250cmFzdCBTdXBwb3J0IChXQ0FHIDIuMSBBQSBDb21wbGlhbmNlKVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuQG1lZGlhIChwcmVmZXJzLWNvbnRyYXN0OiBoaWdoKSB7XG4gIC5pY29uLWRlZmF1bHQsXG4gIC5pY29uLXByaW1hcnkge1xuICAgIGNvbG9yOiAjMDAwMDAwO1xuICAgIHN0cm9rZS13aWR0aDogMztcbiAgfVxuICBcbiAgLmljb24taGVyaXRhZ2Uge1xuICAgIGNvbG9yOiAjY2MwMDAwO1xuICAgIHN0cm9rZS13aWR0aDogMztcbiAgfVxuICBcbiAgLmljb24tc3VjY2VzcyB7XG4gICAgY29sb3I6ICMwMDY2MDA7XG4gICAgc3Ryb2tlLXdpZHRoOiAzO1xuICB9XG4gIFxuICAuaWNvbi13YXJuaW5nIHtcbiAgICBjb2xvcjogI2NjNjYwMDtcbiAgICBzdHJva2Utd2lkdGg6IDM7XG4gIH1cbiAgXG4gIC8qIENvbnRhaW5lciBoaWdoIGNvbnRyYXN0IGFkanVzdG1lbnRzIHJlbW92ZWQgLSBsYXlvdXQgb25seSAqL1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgUmVkdWNlZCBNb3Rpb24gU3VwcG9ydCAoQWNjZXNzaWJpbGl0eSlcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gIC5pY29uLXB1bHNlLFxuICAuaWNvbi1zcGluLFxuICAuaWNvbi1pbnRlcmFjdGl2ZSB7XG4gICAgYW5pbWF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gICAgdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICB9XG4gIFxuICAvKiBDb250YWluZXIgaG92ZXIgc3RhdGVzIHJlbW92ZWQgLSBsYXlvdXQgb25seSAqL1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgUGVyZm9ybWFuY2UgT3B0aW1pemF0aW9uc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogSGFyZHdhcmUgYWNjZWxlcmF0aW9uIGZvciBzbW9vdGggcmVuZGVyaW5nICovXG4uaWNvbi14cyxcbi5pY29uLXNtLFxuLmljb24tYmFzZSxcbi5pY29uLW1kLFxuLmljb24tbGcsXG4uaWNvbi14bCB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsgLyogRm9yY2UgaGFyZHdhcmUgYWNjZWxlcmF0aW9uICovXG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsgLyogUHJldmVudCBmbGlja2VyaW5nICovXG59XG5cbi8qIENvbnRhaW5lciBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25zIHJlbW92ZWQgLSBsYXlvdXQgb25seSAqL1xuXG4vKiBFZmZpY2llbnQgaW1hZ2UgcmVuZGVyaW5nIGZvciBzdHJpbmctYmFzZWQgaWNvbnMgKi9cbi5pY29uLXhzIGltZyxcbi5pY29uLXNtIGltZyxcbi5pY29uLWJhc2UgaW1nLFxuLmljb24tbWQgaW1nLFxuLmljb24tbGcgaW1nLFxuLmljb24teGwgaW1nIHtcbiAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgaW1hZ2UtcmVuZGVyaW5nOiBhdXRvO1xuICBpbWFnZS1yZW5kZXJpbmc6IGNyaXNwLWVkZ2VzO1xuICBpbWFnZS1yZW5kZXJpbmc6IC13ZWJraXQtb3B0aW1pemUtY29udHJhc3Q7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBJY29uIENvbnRhaW5lciBDZW50ZXJpbmcgRW5oYW5jZW1lbnQgLSBCT1VOREVEIFNZU1RFTVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogXG4gKiBDUklUSUNBTCBGSVg6IEljb25zIGFyZSBub3cgcHJvcGVybHkgYm91bmRlZCB3aXRoaW4gY29udGFpbmVyc1xuICogXG4gKiBQcmV2aW91cyBzeXN0ZW0gdXNlZCBhYnNvbHV0ZSBwb3NpdGlvbmluZyB3aGljaCBjb3VsZCBjYXVzZSBvdmVyZmxvdy5cbiAqIE5ldyBzeXN0ZW0gdXNlcyBmbGV4IGNlbnRlcmluZyB3aXRoIHByb3BlciBjb250YWlubWVudCBhbmQgc2l6ZSBjb25zdHJhaW50cy5cbiAqL1xuXG4vKiBFbnN1cmUgaWNvbnMgYXJlIHByb3Blcmx5IHNpemVkIGFuZCBjb250YWluZWQgd2l0aGluIGNvbnRhaW5lcnMgKi9cbi5pY29uLWNvbnRhaW5lci14cyA+IHN2Zyxcbi5pY29uLWNvbnRhaW5lci14cyA+IGltZyxcbi5pY29uLWNvbnRhaW5lci14cyA+IHNwYW4ge1xuICAvKiBTaXplIGNvbnN0cmFpbnQ6IGljb24gbXVzdCBmaXQgd2l0aGluIGNvbnRhaW5lciB3aXRoIHBhZGRpbmcgKi9cbiAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAwLjVyZW0pOyAvKiBMZWF2ZSA0cHggcGFkZGluZyBvbiBlYWNoIHNpZGUgKi9cbiAgbWF4LWhlaWdodDogY2FsYygxMDAlIC0gMC41cmVtKTtcbiAgd2lkdGg6IGF1dG87XG4gIGhlaWdodDogYXV0bztcbiAgLyogUmVtb3ZlIGFueSBwb3NpdGlvbmluZyB0aGF0IGNvdWxkIGNhdXNlIG92ZXJmbG93ICovXG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgLyogTWFpbnRhaW4gYXNwZWN0IHJhdGlvICovXG4gIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4uaWNvbi1jb250YWluZXItc20gPiBzdmcsXG4uaWNvbi1jb250YWluZXItc20gPiBpbWcsXG4uaWNvbi1jb250YWluZXItc20gPiBzcGFuIHtcbiAgLyogU2l6ZSBjb25zdHJhaW50OiBpY29uIG11c3QgZml0IHdpdGhpbiBjb250YWluZXIgd2l0aCBwYWRkaW5nICovXG4gIG1heC13aWR0aDogY2FsYygxMDAlIC0gMC41cmVtKTsgLyogTGVhdmUgNHB4IHBhZGRpbmcgb24gZWFjaCBzaWRlICovXG4gIG1heC1oZWlnaHQ6IGNhbGMoMTAwJSAtIDAuNXJlbSk7XG4gIHdpZHRoOiBhdXRvO1xuICBoZWlnaHQ6IGF1dG87XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5pY29uLWNvbnRhaW5lci1iYXNlID4gc3ZnLFxuLmljb24tY29udGFpbmVyLWJhc2UgPiBpbWcsXG4uaWNvbi1jb250YWluZXItYmFzZSA+IHNwYW4ge1xuICAvKiBTaXplIGNvbnN0cmFpbnQ6IGljb24gbXVzdCBmaXQgd2l0aGluIGNvbnRhaW5lciB3aXRoIHBhZGRpbmcgKi9cbiAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAwLjc1cmVtKTsgLyogTGVhdmUgNnB4IHBhZGRpbmcgb24gZWFjaCBzaWRlICovXG4gIG1heC1oZWlnaHQ6IGNhbGMoMTAwJSAtIDAuNzVyZW0pO1xuICB3aWR0aDogYXV0bztcbiAgaGVpZ2h0OiBhdXRvO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4uaWNvbi1jb250YWluZXItbWQgPiBzdmcsXG4uaWNvbi1jb250YWluZXItbWQgPiBpbWcsXG4uaWNvbi1jb250YWluZXItbWQgPiBzcGFuIHtcbiAgLyogU2l6ZSBjb25zdHJhaW50OiBpY29uIG11c3QgZml0IHdpdGhpbiBjb250YWluZXIgd2l0aCBwYWRkaW5nICovXG4gIG1heC13aWR0aDogY2FsYygxMDAlIC0gMC43NXJlbSk7IC8qIExlYXZlIDZweCBwYWRkaW5nIG9uIGVhY2ggc2lkZSAqL1xuICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSAwLjc1cmVtKTtcbiAgd2lkdGg6IGF1dG87XG4gIGhlaWdodDogYXV0bztcbiAgcG9zaXRpb246IHN0YXRpYztcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBvYmplY3QtZml0OiBjb250YWluO1xuICBmbGV4LXNocmluazogMDtcbn1cblxuLmljb24tY29udGFpbmVyLWxnID4gc3ZnLFxuLmljb24tY29udGFpbmVyLWxnID4gaW1nLFxuLmljb24tY29udGFpbmVyLWxnID4gc3BhbiB7XG4gIC8qIFNpemUgY29uc3RyYWludDogaWNvbiBtdXN0IGZpdCB3aXRoaW4gY29udGFpbmVyIHdpdGggcGFkZGluZyAqL1xuICBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtIDFyZW0pOyAvKiBMZWF2ZSA4cHggcGFkZGluZyBvbiBlYWNoIHNpZGUgKi9cbiAgbWF4LWhlaWdodDogY2FsYygxMDAlIC0gMXJlbSk7XG4gIHdpZHRoOiBhdXRvO1xuICBoZWlnaHQ6IGF1dG87XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5pY29uLWNvbnRhaW5lci14bCA+IHN2Zyxcbi5pY29uLWNvbnRhaW5lci14bCA+IGltZyxcbi5pY29uLWNvbnRhaW5lci14bCA+IHNwYW4ge1xuICAvKiBTaXplIGNvbnN0cmFpbnQ6IGljb24gbXVzdCBmaXQgd2l0aGluIGNvbnRhaW5lciB3aXRoIHBhZGRpbmcgKi9cbiAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAxcmVtKTsgLyogTGVhdmUgOHB4IHBhZGRpbmcgb24gZWFjaCBzaWRlICovXG4gIG1heC1oZWlnaHQ6IGNhbGMoMTAwJSAtIDFyZW0pO1xuICB3aWR0aDogYXV0bztcbiAgaGVpZ2h0OiBhdXRvO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQ29tcG9uZW50IEludGVncmF0aW9uIFN1cHBvcnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIFN1cHBvcnQgZm9yIHBhcmVudCBjb21wb25lbnQgc3R5bGluZyAqL1xuLnN0cmVhbWluZy1jYXJvdXNlbC1pY29uIHtcbiAgLyogUHJlc2VydmUgU3RyZWFtaW5nQ2Fyb3VzZWwgc3BlY2lmaWMgc3R5bGluZyAqL1xufVxuXG4uZmVhdHVyZS1pY29uIHtcbiAgLyogUHJlc2VydmUgRmVhdHVyZXMgY29tcG9uZW50IHNwZWNpZmljIHN0eWxpbmcgKi9cbn1cblxuLnVzZS1jYXNlLWljb24ge1xuICAvKiBQcmVzZXJ2ZSBVc2VDYXNlQ2FyZCBjb21wb25lbnQgc3BlY2lmaWMgc3R5bGluZyAqL1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQW5pbWF0aW9uIENsYXNzZXMgKGZvciBwYXJlbnQgY29tcG9uZW50IGludGVncmF0aW9uKVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmljb24tcHVsc2Uge1xuICBhbmltYXRpb246IHB1bHNlIDJzIGN1YmljLWJlemllcigwLjQsIDAsIDAuNiwgMSkgaW5maW5pdGU7XG59XG5cbi5pY29uLXNwaW4ge1xuICBhbmltYXRpb246IHNwaW4gMXMgbGluZWFyIGluZmluaXRlOyAgXG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBJbnRlcmFjdGl2ZSBTdGF0ZXMgLSBGb2xsb3dpbmcgc3R5bGluZy1zdGFuZGFyZC5tZFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogSW50ZXJhY3RpdmUgaWNvbnMgZ2V0IGhvdmVyIGFuZCBmb2N1cyBzdGF0ZXMgKi9cbi5pY29uLWludGVyYWN0aXZlIHtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNlLXNtb290aCk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi8qIEhvdmVyIHN0YXRlIC0gc3VidGxlIGxpZnQgZm9sbG93aW5nIGJvcmRlcmxlc3MgZGVzaWduICovXG4uaWNvbi1pbnRlcmFjdGl2ZTpob3ZlciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KSBzY2FsZSgxLjA1KTtcbn1cblxuLyogQWN0aXZlL3ByZXNzZWQgc3RhdGUgKi9cbi5pY29uLWludGVyYWN0aXZlOmFjdGl2ZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgwLjk4KTtcbn1cblxuLyogRm9jdXMgc3RhdGUgLSBzaGFkb3ctYmFzZWQgYWNjZXNzaWJpbGl0eSBpbmRpY2F0b3IgKi9cbi5pY29uLWludGVyYWN0aXZlOmZvY3VzLXZpc2libGUge1xuICBvdXRsaW5lOiBub25lO1xuICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSh2YXIoLS1jb2xvci1mb2N1cykgLyAwLjUpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xuICB6LWluZGV4OiAxO1xufVxuXG4vKiBCdXR0b24gcmVzZXQgZm9yIGludGVyYWN0aXZlIGljb24gYnV0dG9ucyAqL1xuYnV0dG9uLmljb24taW50ZXJhY3RpdmUge1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiAwO1xuICBwYWRkaW5nOiAwO1xuICBmb250OiBpbmhlcml0O1xuICBjb2xvcjogaW5oZXJpdDtcbn1cblxuLyogTGluayBzdHlsaW5nIGZvciBpbnRlcmFjdGl2ZSBpY29uIGxpbmtzICovXG5hLmljb24taW50ZXJhY3RpdmUge1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGNvbG9yOiBpbmhlcml0O1xufVxuXG5Aa2V5ZnJhbWVzIHB1bHNlIHtcbiAgMCUsIDEwMCUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgNTAlIHtcbiAgICBvcGFjaXR5OiAwLjU7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBzcGluIHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gIH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIENyaXRpY2FsIENTUyBJbmxpbmluZyBTdXBwb3J0XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBUaGVzZSBjcml0aWNhbCBzdHlsZXMgc2hvdWxkIGJlIGlubGluZWQgZm9yIGFib3ZlLWZvbGQgaWNvbnMgKi9cbi8qXG4uaWNvbi1iYXNle3dpZHRoOjEuNXJlbTtoZWlnaHQ6MS41cmVtO2ZsZXgtc2hyaW5rOjB9XG4uaWNvbi1wcmltYXJ5e2NvbG9yOnJnYih2YXIoLS1jb2xvci1wcmltYXJ5LTYwMCkpO3N0cm9rZS13aWR0aDoyfVxuLmljb24taGVyaXRhZ2V7Y29sb3I6cmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpO3N0cm9rZS13aWR0aDoyLjV9XG4uaWNvbi1jb250YWluZXItYmFzZXt3aWR0aDozcmVtO2hlaWdodDozcmVtO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtib3JkZXItcmFkaXVzOjAuNXJlbTtmbGV4LXNocmluazowO292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZTtjb250YWluOmxheW91dCBzdHlsZSBwYWludH1cbi5pY29uLWNvbnRhaW5lci1iYXNlPnN2Z3ttYXgtd2lkdGg6Y2FsYygxMDAlIC0gMC43NXJlbSk7bWF4LWhlaWdodDpjYWxjKDEwMCUgLSAwLjc1cmVtKTt3aWR0aDphdXRvO2hlaWdodDphdXRvO3Bvc2l0aW9uOnN0YXRpYzttYXJnaW46MDtwYWRkaW5nOjA7b2JqZWN0LWZpdDpjb250YWluO2ZsZXgtc2hyaW5rOjB9XG4qL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQk9VTkRFRCBJQ09OIFNZU1RFTSAtIElNUExFTUVOVEFUSU9OIENPTVBMRVRFXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKlxuICogU09MVVRJT04gU1VNTUFSWTpcbiAqIFxuICogVGhlIGljb24gY29udGFpbm1lbnQgaXNzdWUgaGFzIGJlZW4gcmVzb2x2ZWQgdGhyb3VnaCBhIGNvbXByZWhlbnNpdmUgYXBwcm9hY2g6XG4gKiBcbiAqIDEuIE9WRVJGTE9XIFBSRVZFTlRJT046IEFsbCBpY29uIGNvbnRhaW5lcnMgbm93IGhhdmUgYG92ZXJmbG93OiBoaWRkZW5gIHRvIFxuICogICAgYWJzb2x1dGVseSBwcmV2ZW50IGFueSB2aXN1YWwgb3ZlcmZsb3cgYmV5b25kIGNvbnRhaW5lciBib3VuZGFyaWVzLlxuICogXG4gKiAyLiBQUk9QRVIgQ09OVEFJTk1FTlQ6IEFkZGVkIGBjb250YWluOiBsYXlvdXQgc3R5bGUgcGFpbnRgIGZvciBiZXR0ZXIgXG4gKiAgICBwZXJmb3JtYW5jZSBhbmQgc3RyaWN0IGJvdW5kYXJ5IGVuZm9yY2VtZW50LlxuICogXG4gKiAzLiBTSVpFIENPTlNUUkFJTlRTOiBJY29ucyBhcmUgY29uc3RyYWluZWQgdXNpbmcgbWF4LXdpZHRoL21heC1oZWlnaHQgd2l0aCBcbiAqICAgIGNhbGN1bGF0ZWQgcGFkZGluZyB0byBlbnN1cmUgdGhleSBuZXZlciBleGNlZWQgY29udGFpbmVyIGJvdW5kcy5cbiAqIFxuICogNC4gRkxFWCBDRU5URVJJTkc6IFJlcGxhY2VkIGFic29sdXRlIHBvc2l0aW9uaW5nIHdpdGggZmxleCBjZW50ZXJpbmcgdG8gXG4gKiAgICBtYWludGFpbiBwcm9wZXIgYWxpZ25tZW50IHdpdGhvdXQgb3ZlcmZsb3cgcmlza3MuXG4gKiBcbiAqIDUuIFJFU1BPTlNJVkUgUEFERElORzogRGlmZmVyZW50IGNvbnRhaW5lciBzaXplcyBoYXZlIGFwcHJvcHJpYXRlIHBhZGRpbmcgXG4gKiAgICByYXRpb3MgdG8gbWFpbnRhaW4gdmlzdWFsIGJhbGFuY2Ugd2hpbGUgZW5zdXJpbmcgY29udGFpbm1lbnQuXG4gKiBcbiAqIFRoaXMgc3lzdGVtIGVuc3VyZXMgdGhhdCBpY29ucyBhcmUgQUxXQVlTIGJvdW5kZWQgd2l0aGluIHRoZWlyIGNvbnRhaW5lcnMsXG4gKiByZWdhcmRsZXNzIG9mIHN0cm9rZSB3aWR0aCwgaWNvbiBjb21wbGV4aXR5LCBvciBzaXplIG1pc21hdGNoZXMuXG4gKi8iLCIvKipcbiAqIExpbmtlZGluUG9zdCBDb21wb25lbnQgU3R5bGVzXG4gKlxuICogVGhyZWUtbGF5ZXIgQ1NTIGFyY2hpdGVjdHVyZTpcbiAqIDEuIFN0cnVjdHVyZSBMYXllciAtIExheW91dCBhbmQgcG9zaXRpb25pbmdcbiAqIDIuIFNraW4gTGF5ZXIgLSBWaXN1YWwgc3R5bGluZyBhbmQgdGhlbWluZ1xuICogMy4gU3RhdGUgTGF5ZXIgLSBJbnRlcmFjdGl2ZSBhbmQgc3RhdGUtYmFzZWQgc3R5bGVzXG4gKi9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFNUUlVDVFVSRSBMQVlFUlxuICAgTGF5b3V0LCBzcGFjaW5nLCBwb3NpdGlvbmluZ1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmxpbmtlZGluLXBvc3Qge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4taW5saW5lOiBhdXRvO1xufVxuXG4ubGlua2VkaW4tcG9zdC1pbm5lciB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4ubGlua2VkaW4tcG9zdC1oZWFkZXIge1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLWxnKTtcbn1cblxuLmxpbmtlZGluLXBvc3QtdGl0bGUge1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLXNtKTtcbn1cblxuLmxpbmtlZGluLXBvc3QtZGVzY3JpcHRpb24ge1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLW1kKTtcbn1cblxuLmxpbmtlZGluLXBvc3QtZW1iZWQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLWxnKTtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xufVxuXG4ubGlua2VkaW4tZW1iZWQtY29udGFpbmVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogNTAwcHg7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG59XG5cbi5saW5rZWRpbi1wb3N0LWN0YSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctbGcpO1xufVxuXG4ubGlua2VkaW4tcG9zdC1mYWxsYmFjayB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBtaW4taGVpZ2h0OiAzMDBweDtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy14bCk7XG4gIGdhcDogdmFyKC0tc3BhY2luZy1tZCk7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLmxpbmtlZGluLXBvc3QtbG9hZGluZyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBtaW4taGVpZ2h0OiAzMDBweDtcbiAgZ2FwOiB2YXIoLS1zcGFjaW5nLXNtKTtcbn1cblxuLyogU2l6ZSBWYXJpYW50cyAqL1xuLmxpbmtlZGluLXBvc3QtLXNtIHtcbiAgbWF4LXdpZHRoOiA0MDBweDtcbn1cblxuLmxpbmtlZGluLXBvc3QtLWJhc2Uge1xuICBtYXgtd2lkdGg6IDYwMHB4O1xufVxuXG4ubGlua2VkaW4tcG9zdC0tbGcge1xuICBtYXgtd2lkdGg6IDgwMHB4O1xufVxuXG4ubGlua2VkaW4tcG9zdC0tZnVsbCB7XG4gIG1heC13aWR0aDogMTAwJTtcbn1cblxuLyogQWxpZ25tZW50IFZhcmlhbnRzICovXG4ubGlua2VkaW4tcG9zdC0tbGVmdCAubGlua2VkaW4tcG9zdC1oZWFkZXIge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuXG4ubGlua2VkaW4tcG9zdC0tbGVmdCAubGlua2VkaW4tcG9zdC1jdGEge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG59XG5cbi5saW5rZWRpbi1wb3N0LS1jZW50ZXIgLmxpbmtlZGluLXBvc3QtaGVhZGVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4ubGlua2VkaW4tcG9zdC0tY2VudGVyIC5saW5rZWRpbi1wb3N0LWN0YSB7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4ubGlua2VkaW4tcG9zdC0tcmlnaHQgLmxpbmtlZGluLXBvc3QtaGVhZGVyIHtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG59XG5cbi5saW5rZWRpbi1wb3N0LS1yaWdodCAubGlua2VkaW4tcG9zdC1jdGEge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgU0tJTiBMQVlFUlxuICAgQ29sb3JzLCB0eXBvZ3JhcGh5LCB2aXN1YWwgc3R5bGluZ1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmxpbmtlZGluLXBvc3QtdGl0bGUge1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi5saW5rZWRpbi1wb3N0LWRlc2NyaXB0aW9uIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTtcbiAgb3BhY2l0eTogMC45O1xufVxuXG4ubGlua2VkaW4tcG9zdC1lbWJlZCB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXN1cmZhY2UpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ib3JkZXIpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4ubGlua2VkaW4tcG9zdC1mYWxsYmFjayB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXN1cmZhY2UtbXV0ZWQpO1xuICBib3JkZXI6IDJweCBkYXNoZWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbn1cblxuLmxpbmtlZGluLXBvc3QtZmFsbGJhY2stbGluayB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IHZhcigtLXNwYWNpbmcteHMpO1xuICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbn1cblxuLmxpbmtlZGluLXBvc3QtZmFsbGJhY2stbGluazpob3ZlciB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWhvdmVyKTtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG5cbi5saW5rZWRpbi1wb3N0LWVycm9yLW1lc3NhZ2Uge1xuICBjb2xvcjogdmFyKC0tY29sb3ItZXJyb3IpO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1lcnJvci1iZyk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctbWQpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICBmb250LXNpemU6IHZhcigtLXRleHQtc20pO1xufVxuXG4ubGlua2VkaW4tcG9zdC1sb2FkaW5nIC5zcGlubmVyLWJvcmRlciB7XG4gIHdpZHRoOiAycmVtO1xuICBoZWlnaHQ6IDJyZW07XG4gIGJvcmRlcjogM3B4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG4gIGJvcmRlci10b3AtY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGFuaW1hdGlvbjogc3BpbiAxcyBsaW5lYXIgaW5maW5pdGU7XG59XG5cbi5saW5rZWRpbi1wb3N0LWxvYWRpbmcgLmRlc2NyaXB0aW9uIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTtcbiAgZm9udC1zaXplOiB2YXIoLS10ZXh0LXNtKTtcbn1cblxuLyogTGlua2VkSW4gRW1iZWQgU3BlY2lmaWMgU3R5bGVzICovXG4ubGlua2VkaW4tZW1iZWQge1xuICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICBtYXgtd2lkdGg6IDUwMHB4ICFpbXBvcnRhbnQ7XG4gIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcbn1cblxuLmxpbmtlZGluLWVtYmVkIGlmcmFtZSB7XG4gIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gIG1heC13aWR0aDogNTAwcHggIWltcG9ydGFudDtcbiAgbWluLWhlaWdodDogNjAwcHg7XG4gIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xuICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBTVEFURSBMQVlFUlxuICAgSW50ZXJhY3RpdmUgc3RhdGVzIGFuZCBhbmltYXRpb25zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBMb2FkaW5nIFN0YXRlICovXG4ubGlua2VkaW4tcG9zdC0tbG9hZGluZyAubGlua2VkaW4tcG9zdC1lbWJlZCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4vKiBFcnJvciBTdGF0ZSAqL1xuLmxpbmtlZGluLXBvc3QtLWVycm9yIC5saW5rZWRpbi1wb3N0LWVtYmVkIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItZXJyb3ItYmcpO1xuICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWVycm9yKTtcbn1cblxuLyogTW9iaWxlIFN0YXRlICovXG4ubGlua2VkaW4tcG9zdC0tbW9iaWxlIHtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBwYWRkaW5nLWlubGluZTogdmFyKC0tc3BhY2luZy1tZCk7XG59XG5cbi5saW5rZWRpbi1wb3N0LS1tb2JpbGUgLmxpbmtlZGluLXBvc3QtZW1iZWQge1xuICBtaW4taGVpZ2h0OiAyMDBweDtcbn1cblxuLyogUFdBIEFuaW1hdGlvbnMgKi9cbi5saW5rZWRpbi1wb3N0IC5wd2Etc2Nyb2xsLWZhZGUge1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCk7XG4gIHRyYW5zaXRpb246XG4gICAgb3BhY2l0eSB2YXIoLS1hbmltYXRpb24tZHVyYXRpb24tYmFzZSkgdmFyKC0tYW5pbWF0aW9uLWVhc2Utb3V0KSxcbiAgICB0cmFuc2Zvcm0gdmFyKC0tYW5pbWF0aW9uLWR1cmF0aW9uLWJhc2UpIHZhcigtLWFuaW1hdGlvbi1lYXNlLW91dCk7XG4gIHRyYW5zaXRpb24tZGVsYXk6IGNhbGModmFyKC0tc3RhZ2dlci1pbmRleCwgMCkgKiB2YXIoLS1hbmltYXRpb24tc3RhZ2dlci1kZWxheSkpO1xufVxuXG4ubGlua2VkaW4tcG9zdCAucHdhLXNjcm9sbC1mYWRlLmluLXZpZXcge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG59XG5cbi8qIFNwaW5uZXIgQW5pbWF0aW9uICovXG5Aa2V5ZnJhbWVzIHNwaW4ge1xuICB0byB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgUkVTUE9OU0lWRSBTVFlMRVNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIFRhYmxldCBhbmQgYmVsb3cgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAubGlua2VkaW4tcG9zdC0tbGcge1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nLWlubGluZTogdmFyKC0tc3BhY2luZy1tZCk7XG4gIH1cblxuICAubGlua2VkaW4tcG9zdC1lbWJlZCB7XG4gICAgbWluLWhlaWdodDogMjUwcHg7XG4gIH1cblxuICAubGlua2VkaW4tcG9zdC1mYWxsYmFjayB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1sZyk7XG4gIH1cbn1cblxuLyogTW9iaWxlICovXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcbiAgLmxpbmtlZGluLXBvc3QtLXNtLFxuICAubGlua2VkaW4tcG9zdC0tYmFzZSB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmctaW5saW5lOiB2YXIoLS1zcGFjaW5nLW1kKTtcbiAgfVxuXG4gIC5saW5rZWRpbi1wb3N0LWhlYWRlciB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy1tZCk7XG4gIH1cblxuICAubGlua2VkaW4tcG9zdC1lbWJlZCB7XG4gICAgbWluLWhlaWdodDogMjAwcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy1tZCk7XG4gIH1cblxuICAubGlua2VkaW4tcG9zdC1mYWxsYmFjayB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1tZCk7XG4gICAgbWluLWhlaWdodDogMjAwcHg7XG4gIH1cblxuICAubGlua2VkaW4tcG9zdC1jdGEge1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctbWQpO1xuICB9XG5cbiAgLyogRm9yY2UgY2VudGVyIGFsaWdubWVudCBvbiBtb2JpbGUgZm9yIGJldHRlciByZWFkYWJpbGl0eSAqL1xuICAubGlua2VkaW4tcG9zdC0tbGVmdCAubGlua2VkaW4tcG9zdC1oZWFkZXIsXG4gIC5saW5rZWRpbi1wb3N0LS1yaWdodCAubGlua2VkaW4tcG9zdC1oZWFkZXIge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxuXG4gIC5saW5rZWRpbi1wb3N0LS1sZWZ0IC5saW5rZWRpbi1wb3N0LWN0YSxcbiAgLmxpbmtlZGluLXBvc3QtLXJpZ2h0IC5saW5rZWRpbi1wb3N0LWN0YSB7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEFDQ0VTU0lCSUxJVFlcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIEZvY3VzIHN0eWxlcyAqL1xuLmxpbmtlZGluLXBvc3QtZmFsbGJhY2stbGluazpmb2N1cy12aXNpYmxlIHtcbiAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xufVxuXG4vKiBSZWR1Y2VkIG1vdGlvbiAqL1xuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLmxpbmtlZGluLXBvc3QgLnB3YS1zY3JvbGwtZmFkZSB7XG4gICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICBhbmltYXRpb246IG5vbmU7XG4gIH1cblxuICAubGlua2VkaW4tcG9zdC1sb2FkaW5nIC5zcGlubmVyLWJvcmRlciB7XG4gICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAycztcbiAgfVxufVxuXG4vKiBIaWdoIGNvbnRyYXN0IG1vZGUgKi9cbkBtZWRpYSAocHJlZmVycy1jb250cmFzdDogaGlnaCkge1xuICAubGlua2VkaW4tcG9zdC1lbWJlZCB7XG4gICAgYm9yZGVyLXdpZHRoOiAycHg7XG4gIH1cblxuICAubGlua2VkaW4tcG9zdC1mYWxsYmFjayB7XG4gICAgYm9yZGVyLXdpZHRoOiAzcHg7XG4gIH1cblxuICAubGlua2VkaW4tcG9zdC1lcnJvci1tZXNzYWdlIHtcbiAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1jb2xvci1lcnJvcik7XG4gIH1cbn0iLCIvKipcbiAqIExpc3RDYXJkIENvbXBvbmVudCBDU1NcbiAqIFxuICogVGhyZWUtTGF5ZXIgQ1NTIEFyY2hpdGVjdHVyZTpcbiAqIDEuIEJyYW5kIEZvdW5kYXRpb24gKENTUyB2YXJpYWJsZXMgZnJvbSBpbmRleC5jc3MpXG4gKiAyLiBDb21wb25lbnQgRW5oYW5jZW1lbnQgKHRoaXMgZmlsZSAtIGxpc3QtY2FyZCBzcGVjaWZpYyBzdHlsZXMpXG4gKiAzLiBQYWdlIEN1c3RvbWl6YXRpb24gKHZpYSBzdHlsZXMgcHJvcCBvdmVycmlkZXMpXG4gKiBcbiAqIE1vYmlsZS1GaXJzdCBEZXNpZ24gd2l0aCBQcm9mZXNzaW9uYWwgVmlzdWFsIEhpZXJhcmNoeVxuICovXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIENhcmQgSGVhZGVyICh3aGVuIHRpdGxlL3N1YnRpdGxlL2Rlc2NyaXB0aW9uIHByb3ZpZGVkKVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmxpc3QtY2FyZC1oZWFkZXIge1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS04KTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4ubGlzdC1jYXJkLWhlYWRlciA+ICogKyAqIHtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIENhcmQgQ29udGFpbmVyIChSb290IERpdiBFbGVtZW50IC0gSVMgdGhlIGNhcmQpXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4ubGlzdC1jYXJkIHtcbiAgLyogQ2FyZCBpcyBub3cgYSBzaW5nbGUgZGl2IHRoYXQgY29udGFpbnMgZXZlcnl0aGluZyAqL1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1jYXJkKSk7XG4gIGJvcmRlcjogMDtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtNik7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1jYXJkKTtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNlLXNtb290aCk7XG4gIFxuICAvKiBMYXlvdXQgZm9yIGljb24gYW5kIGNvbnRlbnQgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIGdhcDogdmFyKC0tc3BhY2UtNCk7XG4gIFxuICAvKiBUb3VjaCBvcHRpbWl6YXRpb24gKi9cbiAgbWluLWhlaWdodDogNDhweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBcbiAgLyogUGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uICovXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTtcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcbn1cblxuLmxpc3QtY2FyZDpob3ZlciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWNhcmQtaG92ZXIpO1xufVxuXG4ubGlzdC1jYXJkOmFjdGl2ZSB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMC45OCk7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1jYXJkLWFjdGl2ZSk7XG59XG5cbi8qIENsZWFuIHVwIHdpbGwtY2hhbmdlICovXG4ubGlzdC1jYXJkOm5vdCg6aG92ZXIpIHtcbiAgd2lsbC1jaGFuZ2U6IGF1dG87XG59XG5cbi8qIEhlcml0YWdlIGhpZ2hsaWdodGVkIGNhcmQgKi9cbi5saXN0LWNhcmQubGlzdC1pdGVtLWhpZ2hsaWdodGVkIHtcbiAgLyogVXNlIHNoYWRvdyBhY2NlbnQgaW5zdGVhZCBvZiBib3JkZXIgKi9cbiAgYm94LXNoYWRvdzogXG4gICAgaW5zZXQgNHB4IDAgMCByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSksXG4gICAgdmFyKC0tc2hhZG93LWNhcmQpO1xuICAvKiAzMCUgZXh0cmEgc3BhY2luZyBmb3IgaGVyaXRhZ2UgZWxlbWVudHMgKi9cbiAgbWFyZ2luLXRvcDogY2FsYyh2YXIoLS1zcGFjZS0yKSAqIDEuMyk7XG4gIG1hcmdpbi1ib3R0b206IGNhbGModmFyKC0tc3BhY2UtMikgKiAxLjMpO1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkgLyAwLjAyKTtcbn1cblxuLmxpc3QtY2FyZC5saXN0LWl0ZW0taGlnaGxpZ2h0ZWQ6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkgLyAwLjA1KTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICBib3gtc2hhZG93OiBcbiAgICBpbnNldCA0cHggMCAwIHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpKSxcbiAgICB2YXIoLS1zaGFkb3ctY2FyZC1ob3Zlcik7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEl0ZW0gSWNvblxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmxpc3QtaXRlbS1pY29uIHtcbiAgZmxleC1zaHJpbms6IDA7XG4gIC8qIEljb24gY29udGFpbmVycyBoYW5kbGUgdGhlaXIgb3duIHNpemluZyAqL1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2Utc21vb3RoKTtcbn1cblxuLyogRW5zdXJlIGljb25zIGhhdmUgcHJvcGVyIGNvbnRyYXN0ICovXG4uY29tcGFyaXNvbi1saXN0LWNhcmQgLmxpc3QtaXRlbS1pY29uIHtcbiAgb3BhY2l0eTogMC45O1xufVxuXG4uY29tcGFyaXNvbi1saXN0LWNhcmQ6aG92ZXIgLmxpc3QtaXRlbS1pY29uIHtcbiAgb3BhY2l0eTogMTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgSXRlbSBDb250ZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4ubGlzdC1pdGVtLWNvbnRlbnQge1xuICBmbGV4OiAxO1xuICBtaW4td2lkdGg6IDA7IC8qIFByZXZlbnQgdGV4dCBvdmVyZmxvdyAqL1xufVxuXG4ubGlzdC1pdGVtLWNvbnRlbnQgPiAqICsgKiB7XG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTIpO1xufVxuXG4vKiBUZXh0IHRydW5jYXRpb24gZm9yIGxvbmcgY29udGVudCAqL1xuLmxpc3QtaXRlbS1jb250ZW50IC50aXRsZS1jYXJkLFxuLmxpc3QtaXRlbS1jb250ZW50IC5kZXNjcmlwdGlvbiB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbn1cblxuLmxpc3QtaXRlbS1jb250ZW50IC50aXRsZS1jYXJkIHtcbiAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xufVxuXG4ubGlzdC1pdGVtLWNvbnRlbnQgLmRlc2NyaXB0aW9uIHtcbiAgLXdlYmtpdC1saW5lLWNsYW1wOiAzO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBNb2JpbGUgUmVzcG9uc2l2ZW5lc3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAubGlzdC1jYXJkLWhlYWRlciB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNik7XG4gICAgcGFkZGluZzogMCB2YXIoLS1zcGFjZS00KTtcbiAgfVxuICBcbiAgLmxpc3QtY2FyZCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtNCk7XG4gICAgLyogUmVkdWNlIGhvdmVyIGVmZmVjdCBvbiBtb2JpbGUgKi9cbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctY2FyZCk7XG4gIH1cbiAgXG4gIC5saXN0LWNhcmQ6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctY2FyZC1ob3Zlcik7XG4gIH1cbiAgXG4gIC8qIExpc3QgaXRlbXMgcmVtb3ZlZCAtIGNhcmRzIGFyZSBub3cgc3RhbmRhbG9uZSBkaXZzICovXG4gIFxuICAvKiBsaXN0LWl0ZW0gc3R5bGVzIG1lcmdlZCBpbnRvIGxpc3QtY2FyZCBhYm92ZSAqL1xuICBcbiAgLyogU3RhY2sgY29udGVudCBvbiB2ZXJ5IHNtYWxsIHNjcmVlbnMgKi9cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDM3NXB4KSB7XG4gICAgLmxpc3QtY2FyZCB7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cbiAgICBcbiAgICAubGlzdC1pdGVtLWljb24ge1xuICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgfVxuICB9XG4gIFxuICAvKiBIZXJpdGFnZSBjYXJkIHNwYWNpbmcgb24gbW9iaWxlICovXG4gIC5saXN0LWNhcmQubGlzdC1pdGVtLWhpZ2hsaWdodGVkIHtcbiAgICBtYXJnaW46IGNhbGModmFyKC0tc3BhY2UtMykgKiAxLjMpIDA7XG4gICAgYm94LXNoYWRvdzogXG4gICAgICBpbnNldCAzcHggMCAwIHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpKSxcbiAgICAgIHZhcigtLXNoYWRvdy1jYXJkKTtcbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBUYWJsZXQgRW5oYW5jZW1lbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDEyNzlweCkge1xuICAubGlzdC1jYXJkIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS01KTtcbiAgfVxuICBcbiAgLyogTGlzdCBpdGVtcyByZW1vdmVkIC0gY2FyZHMgYXJlIG5vdyBzdGFuZGFsb25lIGRpdnMgKi9cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgRGVza3RvcCBFbmhhbmNlbWVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDEyODBweCkge1xuICAubGlzdC1jYXJkLWhlYWRlciB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMTApO1xuICB9XG4gIFxuICAubGlzdC1jYXJkIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS04KTtcbiAgfVxuICBcbiAgLyogTGlzdCBpdGVtcyByZW1vdmVkIC0gY2FyZHMgYXJlIG5vdyBzdGFuZGFsb25lIGRpdnMgKi9cbiAgXG4gIC8qIEhlcml0YWdlIGNhcmQgZW5oYW5jZWQgc3BhY2luZyBvbiBkZXNrdG9wICovXG4gIC5saXN0LWNhcmQubGlzdC1pdGVtLWhpZ2hsaWdodGVkIHtcbiAgICBtYXJnaW46IGNhbGModmFyKC0tc3BhY2UtNikgKiAxLjMpIDA7XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgRm9jdXMgU3RhdGVzIChBY2Nlc3NpYmlsaXR5KVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmxpc3QtY2FyZDpmb2N1cy12aXNpYmxlIHtcbiAgb3V0bGluZTogbm9uZTtcbiAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEodmFyKC0tY29sb3ItZm9jdXMpIC8gMC41KTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBIaWdoIENvbnRyYXN0IE1vZGUgU3VwcG9ydFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuQG1lZGlhIChwcmVmZXJzLWNvbnRyYXN0OiBoaWdoKSB7XG4gIC5saXN0LWNhcmQge1xuICAgIG91dGxpbmU6IDJweCBzb2xpZCBjdXJyZW50Q29sb3I7XG4gIH1cbiAgXG4gIC5saXN0LWNhcmQubGlzdC1pdGVtLWhpZ2hsaWdodGVkIHtcbiAgICBvdXRsaW5lOiAycHggc29saWQgY3VycmVudENvbG9yO1xuICAgIGJveC1zaGFkb3c6IFxuICAgICAgaW5zZXQgNnB4IDAgMCBjdXJyZW50Q29sb3IsXG4gICAgICB2YXIoLS1zaGFkb3ctY2FyZCk7XG4gIH1cbiAgXG4gIC5saXN0LWNhcmQ6Zm9jdXMtdmlzaWJsZSB7XG4gICAgb3V0bGluZTogM3B4IHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFJlZHVjZWQgTW90aW9uIFN1cHBvcnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gIC5saXN0LWNhcmQge1xuICAgIHRyYW5zaXRpb246IG5vbmU7XG4gIH1cbiAgXG4gIC5saXN0LWNhcmQ6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxuICBcbiAgLmxpc3QtY2FyZDphY3RpdmUge1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBQcmludCBTdHlsZXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbkBtZWRpYSBwcmludCB7XG4gIC5saXN0LWNhcmQge1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgb3V0bGluZTogMXB4IHNvbGlkICMwMDA7XG4gICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkO1xuICB9XG4gIFxuICAvKiBsaXN0LWl0ZW0gc3R5bGVzIG1lcmdlZCBpbnRvIGxpc3QtY2FyZCAqL1xuICBcbiAgLmxpc3QtY2FyZC5saXN0LWl0ZW0taGlnaGxpZ2h0ZWQge1xuICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAjMDAwO1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQ29tcGFyaXNvbiBMYXlvdXQgU3R5bGVzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uY29tcGFyaXNvbi1jb2x1bW4ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IHZhcigtLXNwYWNlLTQpO1xuICBhbGlnbi1pdGVtczogc3RyZXRjaDsgLyogRW5zdXJlIGNvbnNpc3RlbnQgaGVpZ2h0cyAqL1xuICBtYXJnaW4tdG9wOiAwOyAvKiBFbnN1cmUgbm8gdG9wIG1hcmdpbiAqL1xuICBwYWRkaW5nLXRvcDogMDsgLyogRW5zdXJlIG5vIHRvcCBwYWRkaW5nICovXG59XG5cbi5jb21wYXJpc29uLWNvbHVtbiA+IC50aXRsZS1jYXJkIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS02KTtcbiAgcGFkZGluZy1ib3R0b206IHZhcigtLXNwYWNlLTQpO1xuICAvKiBVc2Ugc2hhZG93IGluc3RlYWQgb2YgYm9yZGVyICovXG4gIGJveC1zaGFkb3c6IDAgMXB4IDAgMCByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnkpIC8gMC4xKTtcbiAgZmxleC1zaHJpbms6IDA7IC8qIFByZXZlbnQgdGl0bGUgZnJvbSBzaHJpbmtpbmcgKi9cbiAgZm9udC1zaXplOiBjbGFtcCgxLjI1cmVtLCAydncgKyAwLjVyZW0sIDEuNXJlbSk7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGxpbmUtaGVpZ2h0OiAxLjM7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkpO1xuICAvKiBFbnN1cmUgY29uc2lzdGVudCBoZWlnaHQgZm9yIGFsaWdubWVudCAqL1xuICBtaW4taGVpZ2h0OiAxLjVyZW07XG4gIHBhZGRpbmctdG9wOiAwO1xufVxuXG4vKiBQcmltYXJ5IGNvbHVtbiBoaWdobGlnaHRpbmcgKi9cbi5jb21wYXJpc29uLWNvbHVtbi1wcmltYXJ5ID4gLnRpdGxlLWNhcmQge1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpO1xuICBib3gtc2hhZG93OiAwIDFweCAwIDAgcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpIC8gMC4zKTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQ29tcGFyaXNvbiBDYXJkcyAtIEJhc2UgU3RydWN0dXJlIChBTEwgdmFyaWFudHMgc2hhcmUgdGhpcylcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5jb21wYXJpc29uLWxpc3QtY2FyZC5saXN0LWNhcmQge1xuICAvKiBCYXNlIHN0cnVjdHVyZSB0aGF0IEFMTCBjb21wYXJpc29uIHZhcmlhbnRzIHNoYXJlICovXG4gIGN1cnNvcjogZGVmYXVsdDsgLyogTm90IGludGVyYWN0aXZlIGluIGNvbXBhcmlzb24gKi9cbiAgXG4gIC8qIEVuc3VyZSBjb25zaXN0ZW50IGRpbWVuc2lvbnMgcmVnYXJkbGVzcyBvZiB2YXJpYW50ICovXG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTYpO1xuICBtYXJnaW46IDA7XG4gIGJvcmRlcjogMDtcbiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWNhcmQpO1xuICBcbiAgLyogSG92ZXIgYmVoYXZpb3IgLSBOTyB0cmFuc2Zvcm0gZm9yIGFsaWdubWVudCBzdGFiaWxpdHkgKi9cbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNlLXNtb290aCk7XG59XG5cbi5jb21wYXJpc29uLWxpc3QtY2FyZC5saXN0LWNhcmQ6aG92ZXIge1xuICAvKiBJZGVudGljYWwgaG92ZXIgZm9yIEFMTCB2YXJpYW50cyAtIG5vIHRyYW5zZm9ybSEgKi9cbiAgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1jYXJkLWhvdmVyKTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQ29tcGFyaXNvbiBDYXJkIFZhcmlhbnRzIC0gT05MWSBDT0xPUlMgQ0hBTkdFXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIFByaW1hcnkgdmFyaWFudCAtIEhlcml0YWdlIGFjY2VudCBzdHlsaW5nIChDT0xPUlMgT05MWSkgKi9cbi5jb21wYXJpc29uLWxpc3QtY2FyZC5jb21wYXJpc29uLWxpc3QtY2FyZC1wcmltYXJ5IHtcbiAgLyogT05MWSBjb2xvciBjaGFuZ2VzIC0gTk8gc3RydWN0dXJhbCBjaGFuZ2VzICovXG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSAvIDAuMDIpO1xuICBcbiAgLyogSGVyaXRhZ2UgYWNjZW50IHVzaW5nIGJveC1zaGFkb3cgLSBkb2Vzbid0IGFmZmVjdCBkaW1lbnNpb25zICovXG4gIGJveC1zaGFkb3c6IFxuICAgIGluc2V0IDRweCAwIDAgcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpLFxuICAgIHZhcigtLXNoYWRvdy1jYXJkKTtcbn1cblxuLmNvbXBhcmlzb24tbGlzdC1jYXJkLmNvbXBhcmlzb24tbGlzdC1jYXJkLXByaW1hcnk6aG92ZXIge1xuICAvKiBPTkxZIGNvbG9yIGNoYW5nZXMgb24gaG92ZXIgKi9cbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpIC8gMC4wNCk7XG4gIFxuICAvKiBIZXJpdGFnZSBhY2NlbnQgd2l0aCBob3ZlciBzaGFkb3cgKi9cbiAgYm94LXNoYWRvdzogXG4gICAgaW5zZXQgNHB4IDAgMCByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSksXG4gICAgdmFyKC0tc2hhZG93LWNhcmQtaG92ZXIpO1xuICBcbiAgLyogTk8gdHJhbnNmb3JtIGNoYW5nZSAqL1xuICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLyogRW5zdXJlIGNvbnNpc3RlbnQgdGV4dCBhbGlnbm1lbnQgKi9cbi5jb21wYXJpc29uLWxpc3QtY2FyZC5saXN0LWNhcmQgLmxpc3QtaXRlbS1jb250ZW50IHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbn1cblxuLmNvbXBhcmlzb24tbGlzdC1jYXJkLmxpc3QtY2FyZCAubGlzdC1pdGVtLWNvbnRlbnQgLnRpdGxlLWNhcmQge1xuICBmb250LXNpemU6IDFyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTIpO1xufVxuXG4uY29tcGFyaXNvbi1saXN0LWNhcmQubGlzdC1jYXJkIC5saXN0LWl0ZW0tY29udGVudCAuZGVzY3JpcHRpb24ge1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogMS41O1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLW11dGVkLWZvcmVncm91bmQpKTtcbn1cblxuLyogU3RhY2sgbGF5b3V0IHV0aWxpdGllcyAqL1xuLmxheW91dC1zdGFjay1zbSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi8qIEdyaWQgbGF5b3V0IGhhbmRsZWQgYnkgZ2xvYmFsIHN0eWxlcyBpbiBpbmRleC5jc3MgKi9cblxuLyogT3ZlcnJpZGUgZm9yIGNvbXBhcmlzb24gY29udGV4dCB0byBlbnN1cmUgcHJvcGVyIGFsaWdubWVudCAqL1xuLnNlY3Rpb24tYm9keS5sYXlvdXQtZ3JpZC0yIHtcbiAgYWxpZ24taXRlbXM6IHN0YXJ0OyAvKiBBbGlnbiBncmlkIGl0ZW1zIHRvIHRvcCAqL1xufVxuXG4vKiBNb2JpbGUgcmVzcG9uc2l2ZW5lc3MgZm9yIGNvbXBhcmlzb24gKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAubGF5b3V0LWdyaWQtMixcbiAgLnNlY3Rpb24tYm9keS5sYXlvdXQtZ3JpZC0yIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTYpO1xuICB9XG4gIFxuICAuY29tcGFyaXNvbi1jb2x1bW4gPiAudGl0bGUtY2FyZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNCk7XG4gICAgcGFkZGluZy1ib3R0b206IHZhcigtLXNwYWNlLTMpO1xuICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgfVxuICBcbiAgLmxheW91dC1zdGFjay1zbSB7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS0zKTtcbiAgfVxuICBcbiAgLyogQWRqdXN0IGNhcmQgcGFkZGluZyBvbiBtb2JpbGUgLSBDT05TSVNURU5UIGZvciBhbGwgdmFyaWFudHMgKi9cbiAgLmNvbXBhcmlzb24tbGlzdC1jYXJkLmxpc3QtY2FyZCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtNCk7XG4gIH1cbiAgXG4gIC8qIEVuc3VyZSBwcm9wZXIgc3BhY2luZyBiZXR3ZWVuIGNvbHVtbnMgb24gbW9iaWxlICovXG4gIC5jb21wYXJpc29uLWNvbHVtbiArIC5jb21wYXJpc29uLWNvbHVtbiB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtOCk7XG4gIH1cbiAgXG4gIC8qIEhlcml0YWdlIGFjY2VudCBvbiBtb2JpbGUgLSBPTkxZIGNvbG9ycyBjaGFuZ2UsIGNvbnNpc3RlbnQgZGltZW5zaW9ucyAqL1xuICAuY29tcGFyaXNvbi1saXN0LWNhcmQuY29tcGFyaXNvbi1saXN0LWNhcmQtcHJpbWFyeSB7XG4gICAgLyogSGVyaXRhZ2UgYWNjZW50IHVzaW5nIGJveC1zaGFkb3cgLSBjb25zaXN0ZW50IGRpbWVuc2lvbnMgKi9cbiAgICBib3gtc2hhZG93OiBcbiAgICAgIGluc2V0IDNweCAwIDAgcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpLFxuICAgICAgdmFyKC0tc2hhZG93LWNhcmQpO1xuICB9XG59XG5cbi8qIFRhYmxldCByZXNwb25zaXZlbmVzcyAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogMTAyM3B4KSB7XG4gIC5sYXlvdXQtZ3JpZC0yIHtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTYpO1xuICB9XG59XG5cbi8qIERlc2t0b3AgZW5oYW5jZW1lbnQgKi9cbkBtZWRpYSAobWluLXdpZHRoOiAxMjgwcHgpIHtcbiAgLmxheW91dC1ncmlkLTIge1xuICAgIGdhcDogdmFyKC0tc3BhY2UtMTApO1xuICB9XG4gIFxuICAuY29tcGFyaXNvbi1jb2x1bW4gPiAudGl0bGUtY2FyZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNik7XG4gICAgcGFkZGluZy1ib3R0b206IHZhcigtLXNwYWNlLTYpO1xuICB9XG59IiwiLyoqXG4gKiBNZXRyaWNzQ2FyZCBDb21wb25lbnQgQ1NTIC0gQlJBTkRFRCBDU1MgQVJDSElURUNUVVJFXG4gKiBDUklUSUNBTDogQ29tcG9uZW50LXNwZWNpZmljIHN0eWxpbmcgb25seSAtIGJyYW5kIGZvdW5kYXRpb24gaW4gaW5kZXguY3NzXG4gKiBcbiAqIEZMQVQgREVTSUdOIDMuMCBQUklOQ0lQTEVTOlxuICog4pyFIENsZWFuIGxheW91dHMsIG1pbmltYWwgc2hhZG93cyAoZnVuY3Rpb25hbCBvbmx5KVxuICog4pyFIFByb2Zlc3Npb25hbCBjb2xvciBwYWxldHRlIHVzaW5nIGJyYW5kIHZhcmlhYmxlc1xuICog4pyFIEdyaWQgc3BhY2luZyAoOHB4IG11bHRpcGxlcyksIDQ4cHggdG91Y2ggdGFyZ2V0c1xuICog4pyFIFR5cG9ncmFwaHkgaGllcmFyY2h5IHVzaW5nIGJyYW5kIGZvbnQgc3lzdGVtXG4gKiDinYwgTm8gZ3JhZGllbnRzLCBkZWNvcmF0aXZlIHNoYWRvd3MsIDNEIGVmZmVjdHNcbiAqIFxuICogUkVTUE9OU0lWRSBERVNJR04gLSBNT0JJTEUgRklSU1Q6XG4gKiDinIUgTW9iaWxlLWZpcnN0IENTUyAoMHB4Kykgd2l0aCBwcm9ncmVzc2l2ZSBlbmhhbmNlbWVudFxuICog4pyFIFRvdWNoIHRhcmdldCBjb21wbGlhbmNlICg0OHB4IG1pbmltdW0pXG4gKiDinIUgUmVzcG9uc2l2ZSB0eXBvZ3JhcGh5IHNjYWxpbmdcbiAqIOKchSBBbGwgcmVxdWlyZWQgYnJlYWtwb2ludHMgKDY0MHB4LCA3NjhweCwgMTAyNHB4KylcbiAqL1xuXG4vKiBNZXRyaWNzQ2FyZCBjb21wb25lbnQgb25seSB1c2VzIHNpbmdsZS1pdGVtIGFyY2hpdGVjdHVyZSAqL1xuLyogQ29tcG9uZW50IGZvbGxvd3MgMTAwJSBDU1MgaW1wbGVtZW50YXRpb24gcnVsZSAtIGFsbCBjbGFzc2VzIG11c3QgYmUgdXNlZCAqL1xuXG4vKiBGbGF0IERlc2lnbiAzLjAgTWV0cmljIEl0ZW1zIC0gQ2xlYW4gUHJvZmVzc2lvbmFsIENhcmRzIHdpdGggTW9iaWxlLUZpcnN0IERlc2lnbiAqL1xuLyoqXG4gKiBQcm9mZXNzaW9uYWwgTGF5b3V0IC0gTW9iaWxlIEZpcnN0XG4gKiBUb3VjaCBUYXJnZXQgQ29tcGxpYW5jZSAtIEVuc3VyZSA0OHB4IG1pbmltdW1cbiAqIDI0cHggbW9iaWxlIC0gUHJvZmVzc2lvbmFsIHRvdWNoIHRhcmdldFxuICogTWluaW11bSBoZWlnaHQgZm9yIHRvdWNoIHRhcmdldHNcbiAqIE1pbmltdW0gd2lkdGggZm9yIHRvdWNoIHRhcmdldHNcbiAqIEJyYW5kIEZvdW5kYXRpb24gQ29sb3JzXG4gKiBWaXN1YWwgZGlzdGluY3Rpb24gd2l0aG91dCBib3JkZXJzIC0gQm9yZGVybGVzcyBEZXNpZ25cbiAqIEZsYXQgRGVzaWduIDMuMCAtIE1pbmltYWwgcmFkaXVzIG9ubHlcbiAqIFVzZSBjb25zaXN0ZW50IGJvcmRlciByYWRpdXMgZnJvbSBicmFuZCBzeXN0ZW1cbiAqIFByb2Zlc3Npb25hbCBNaWNyby1JbnRlcmFjdGlvbnMgd2l0aCBCcmFuZCBUaW1pbmdcbiAqIEltcHJvdmVkIEZvY3VzIHN0YXRlcyBmb3IgYWNjZXNzaWJpbGl0eVxuICovXG4ubWV0cmljLWl0ZW0ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS02KTtcbiAgbWluLWhlaWdodDogY2FsYyh2YXIoLS1zcGFjZS00KSAqIDcuNSk7XG4gIG1pbi13aWR0aDogY2FsYyh2YXIoLS1zcGFjZS00KSAqIDguMTI1KTtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLWNhcmQpKTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1jYXJkLWZvcmVncm91bmQpKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzKTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNpbmctc3RhbmRhcmQpLFxuICAgIGJhY2tncm91bmQtY29sb3IgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2luZy1zdGFuZGFyZCk7XG4gIG91dGxpbmU6IG5vbmU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLyogUHJvZmVzc2lvbmFsIEhvdmVyIFN0YXRlcyAtIEZsYXQgRGVzaWduIDMuMCB3aXRoIEFjdGl2ZSBTY2FsZSAqL1xuLm1ldHJpYy1pdGVtOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkgLyAwLjA0KTtcbiAgLyogU3VidGxlIHByb2Zlc3Npb25hbCBsaWZ0ICovXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbn1cblxuLm1ldHJpYy1pdGVtOmFjdGl2ZSB7XG4gIC8qIFByb2Zlc3Npb25hbCBjbGljayBmZWVkYmFjayAqL1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCkgc2NhbGUoMC45OCk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzaW5nLXN0YW5kYXJkKTtcbiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LXNtKTtcbn1cblxuLyogSU1QUk9WRUQ6IEZvY3VzIHN0YXRlcyBmb3IgYWNjZXNzaWJpbGl0eSAqL1xuLm1ldHJpYy1pdGVtOmZvY3VzLXZpc2libGUge1xuICBvdXRsaW5lOiAycHggc29saWQgcmdiKHZhcigtLWNvbG9yLXJpbmcpKTtcbiAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbiAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHJnYih2YXIoLS1jb2xvci1yaW5nKSAvIDAuMik7XG59XG5cbi8qIElNUFJPVkVEOiBLZXlib2FyZCBmb2N1cyBpbmRpY2F0b3IgKi9cbi5mb2N1cy1wcm9mZXNzaW9uYWw6Zm9jdXMtdmlzaWJsZSB7XG4gIG91dGxpbmU6IDJweCBzb2xpZCByZ2IodmFyKC0tY29sb3ItcmluZykpO1xuICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICBib3gtc2hhZG93OiAwIDAgMCAycHggcmdiKHZhcigtLWNvbG9yLXJpbmcpIC8gMC4yKTtcbn1cblxuLyogTWV0cmljIHZhbHVlIC0gaW5oZXJpdHMgZnJvbSBnbG9iYWwgdGl0bGUtY2FyZCBjbGFzcyAqL1xuLm1ldHJpYy12YWx1ZSB7XG4gIC8qIEFkZGl0aW9uYWwgc3BhY2luZyBvbmx5IC0gdHlwb2dyYXBoeSBoYW5kbGVkIGJ5IHRpdGxlLWNhcmQgKi9cbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMSk7XG4gIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNlLXNtb290aCk7XG59XG5cbi8qIEhlcml0YWdlIFJlZCBJbXBsZW1lbnRhdGlvbiAtIDEwJSBSdWxlIENvbXBsaWFuY2UgKi9cbi8qIE9ubHkgYXBwbHkgaGVyaXRhZ2UgcmVkIHRvIE9ORSBtZXRyaWMgKGZlYXR1cmVkL3ByaW1hcnkgbWV0cmljKSAqL1xuLnRleHQtaGVyaXRhZ2Uge1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpICFpbXBvcnRhbnQ7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGZvbnQtc2l6ZTogbWF4KDFyZW0sIDE2cHgpO1xufVxuXG4vKiBIZXJpdGFnZSBlbGVtZW50cyBnZXQgMjUtMzUlIGV4dHJhIHNwYWNpbmcgKi9cbi5tZXRyaWMtaXRlbS1oZXJpdGFnZSB7XG4gIG1hcmdpbjogY2FsYyh2YXIoLS1zcGFjZS00KSAqIDEuMykgMDtcbiAgcGFkZGluZzogY2FsYyh2YXIoLS1zcGFjZS02KSAqIDEuMyk7XG59XG5cbi8qIE1ldHJpYyBsYWJlbCAtIGluaGVyaXRzIGZyb20gZ2xvYmFsIHN1YnRpdGxlLWxnIGNsYXNzICovXG4ubWV0cmljLWxhYmVsIHtcbiAgLyogQWRkaXRpb25hbCBzcGFjaW5nIG9ubHkgLSB0eXBvZ3JhcGh5IGhhbmRsZWQgYnkgc3VidGl0bGUtbGcgKi9cbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMSk7XG4gIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNlLXNtb290aCk7XG59XG5cbi8qIE1ldHJpYyBkZXNjcmlwdGlvbiAtIGluaGVyaXRzIGZyb20gZ2xvYmFsIGRlc2NyaXB0aW9uIGNsYXNzICovXG4ubWV0cmljLWRlc2NyaXB0aW9uIHtcbiAgLyogVHJhbnNpdGlvbiBvbmx5IC0gdHlwb2dyYXBoeSBoYW5kbGVkIGJ5IGRlc2NyaXB0aW9uIGNsYXNzICovXG4gIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNlLXNtb290aCk7XG59XG5cbi8qIEVuaGFuY2VkIFByb2Zlc3Npb25hbCBTdGF0ZXMgKi9cbi5tZXRyaWMtZW5oYW5jZWQgLm1ldHJpYy1pdGVtOmhvdmVyIHtcbiAgLyogQWRkaXRpb25hbCBlbmhhbmNlbWVudCBmb3Igc3BlY2lhbCBjYXNlcyAqL1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSAvIDAuMDYpO1xufVxuXG4ubWV0cmljLWVuaGFuY2VkIC5tZXRyaWMtdmFsdWUge1xuICAvKiBFbmhhbmNlZCB2YWx1ZSBwcm9taW5lbmNlIHdoZW4gbmVlZGVkICovXG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xufVxuXG4vKiBQV0EgQW5pbWF0aW9uIEludGVncmF0aW9uIC0gVXNlcyBicmFuZCBmb3VuZGF0aW9uIFBXQSBzeXN0ZW0gKi9cbi8qIFN0YWdnZXIgZGVsYXlzIGhhbmRsZWQgYnkgLS1zdGFnZ2VyLWluZGV4IENTUyBjdXN0b20gcHJvcGVydGllcyAqL1xuXG4vKiBNT0JJTEUtRklSU1QgUkVTUE9OU0lWRSBERVNJR04gLSBBbGwgUmVxdWlyZWQgQnJlYWtwb2ludHMgKi9cblxuLyogU21hbGwgc2NyZWVucyAoNjQwcHgrKSAtIFNtYWxsIHRhYmxldC9sYXJnZSBtb2JpbGUgKi9cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xuICAubWV0cmljLWl0ZW0ge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTYpO1xuICAgIG1pbi1oZWlnaHQ6IGNhbGModmFyKC0tc3BhY2UtNCkgKiA2Ljg3NSk7XG4gIH1cbn1cblxuLyogTWVkaXVtIHNjcmVlbnMgKDc2OHB4KykgLSBUYWJsZXQgKi9cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAubWV0cmljLWl0ZW0ge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTgpO1xuICAgIG1pbi1oZWlnaHQ6IGNhbGModmFyKC0tc3BhY2UtNCkgKiA3LjUpO1xuICB9XG59XG5cbi8qIExhcmdlIHNjcmVlbnMgKDEwMjRweCspIC0gRGVza3RvcCAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAubWV0cmljLWl0ZW0ge1xuICAgIG1pbi1oZWlnaHQ6IGNhbGModmFyKC0tc3BhY2UtNCkgKiA4Ljc1KTtcbiAgfVxufVxuXG4vKiBEYXJrIE1vZGUgU3VwcG9ydCAtIEVuaGFuY2VkIHdpdGggZXhwbGljaXQgcnVsZXMgKi9cbi5kYXJrIC5tZXRyaWMtaXRlbSB7XG4gIGNvbG9yLXNjaGVtZTogZGFyaztcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi5kYXJrIC5tZXRyaWMtaXRlbTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpIC8gMC4xMik7XG59XG5cbi5kYXJrIC5tZXRyaWMtdmFsdWUge1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWZvcmVncm91bmQpKTtcbn1cblxuLmRhcmsgLm1ldHJpYy1sYWJlbCB7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkpO1xufVxuXG4uZGFyayAubWV0cmljLWRlc2NyaXB0aW9uIHtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1tdXRlZC1mb3JlZ3JvdW5kKSk7XG59XG5cbi8qIFN5c3RlbSBwcmVmZXJlbmNlIGZvciAnc3lzdGVtJyB0aGVtZSBzZXR0aW5nICovXG5AbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XG4gIDpyb290Om5vdCgubGlnaHQpIC5tZXRyaWMtaXRlbSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIH1cblxuICA6cm9vdDpub3QoLmxpZ2h0KSAubWV0cmljLWl0ZW06aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpIC8gMC4wOCk7XG4gIH1cblxuICA6cm9vdDpub3QoLmxpZ2h0KSAubWV0cmljLXZhbHVlIHtcbiAgICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWZvcmVncm91bmQpKTtcbiAgfVxuXG4gIDpyb290Om5vdCgubGlnaHQpIC5tZXRyaWMtbGFiZWwge1xuICAgIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkpO1xuICB9XG5cbiAgOnJvb3Q6bm90KC5saWdodCkgLm1ldHJpYy1kZXNjcmlwdGlvbiB7XG4gICAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1tdXRlZC1mb3JlZ3JvdW5kKSk7XG4gIH1cbn1cblxuLyogUmVkdWNlZCBNb3Rpb24gU3VwcG9ydCAtIEFjY2Vzc2liaWxpdHkgKi9cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gIC5tZXRyaWMtaXRlbSB7XG4gICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgfVxuXG4gIC5tZXRyaWMtaXRlbTpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG5cbiAgLm1ldHJpYy1pdGVtOmFjdGl2ZSB7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG59XG5cbi8qIFByaW50IFN0eWxlcyAtIFByb2Zlc3Npb25hbCBEb2N1bWVudGF0aW9uICovXG5AbWVkaWEgcHJpbnQge1xuICAubWV0cmljLWl0ZW0ge1xuICAgIGJyZWFrLWluc2lkZTogYXZvaWQ7XG4gIH1cblxuICAubWV0cmljLWl0ZW06aG92ZXIge1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxufSIsIi8qIFBhcnRuZXJzIERpcmVjdG9yeSBQYWdlIFN0eWxlcyAqL1xuXG4vKiBUb3VjaCBUYXJnZXQgT3B0aW1pemF0aW9uICovXG4udG91Y2gtdGFyZ2V0IHtcbiAgbWluLWhlaWdodDogNDhweDtcbiAgbWluLXdpZHRoOiA0OHB4O1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi8qIFBhcnRuZXJzIEdyaWQgTGF5b3V0ICovXG4ucGFydG5lcnMtZ3JpZCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdhcDogMnJlbTtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAucGFydG5lcnMtZ3JpZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5wYXJ0bmVycy1ncmlkIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpO1xuICB9XG59XG5cbi8qIFBhcnRuZXIgQ2FyZCBTdHlsZXMgKi9cbi5wYXJ0bmVyLWNhcmQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNlNWU3ZWI7XG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG59XG5cbi5wYXJ0bmVyLWNhcmQ6aG92ZXIge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gIGJveC1zaGFkb3c6IDAgMTBweCAyNXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDRweCA2cHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xufVxuXG4ucGFydG5lci1jYXJkIC5wYXJ0bmVyLW5hbWUge1xuICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTtcbiAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbTtcbn1cblxuLnBhcnRuZXItY2FyZCAucGFydG5lci1jYXRlZ29yeSB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ibHVlLTYwMCk7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG5cbi5wYXJ0bmVyLWNhcmQgLnBhcnRuZXItZGVzY3JpcHRpb24ge1xuICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xuICBsaW5lLWhlaWdodDogMS42O1xuICBmbGV4LWdyb3c6IDE7XG59XG5cbi5wYXJ0bmVyLWNhcmQgLnBhcnRuZXItc2VydmljZXMge1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xufVxuXG4ucGFydG5lci1jYXJkIC5wYXJ0bmVyLWNvbnRhY3Qge1xuICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTtcbiAgcGFkZGluZy10b3A6IDFyZW07XG4gIG1hcmdpbi10b3A6IGF1dG87XG59XG5cbi5wYXJ0bmVyLWNhcmQgLmNvbnRhY3QtY3RhIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tY29sb3ItYmx1ZS01MCkgMCUsIHZhcigtLWNvbG9yLXNsYXRlLTUwKSAxMDAlKTtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7XG4gIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG59XG5cbi5wYXJ0bmVyLWNhcmQgLmNvbnRhY3QtY3RhOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tY29sb3ItYmx1ZS0xMDApIDAlLCB2YXIoLS1jb2xvci1zbGF0ZS0xMDApIDEwMCUpO1xuICBjb2xvcjogdmFyKC0tY29sb3ItYmx1ZS04MDApO1xufVxuXG4vKiBIZXJpdGFnZSBSZWQgQnV0dG9uIChDVEEgU2VjdGlvbikgKi9cbi5idG4taGVyaXRhZ2Uge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1oZXJpdGFnZS1yZWQpO1xuICBjb2xvcjogd2hpdGU7XG4gIGJvcmRlcjogbm9uZTtcbiAgcGFkZGluZzogMC43NXJlbSAycmVtO1xuICBib3JkZXItcmFkaXVzOiAwLjVyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmJ0bi1oZXJpdGFnZTpiZWZvcmUge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg0NWRlZywgcmdiYSgyNTUsMjU1LDI1NSwwLjEpIDAlLCByZ2JhKDI1NSwyNTUsMjU1LDAuMDUpIDEwMCUpO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZTtcbiAgb3BhY2l0eTogMDtcbn1cblxuLmJ0bi1oZXJpdGFnZTpob3ZlcjpiZWZvcmUge1xuICBvcGFjaXR5OiAxO1xufVxuXG4uYnRuLWhlcml0YWdlOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogdmFyKC0taGVyaXRhZ2UtcmVkLWRhcmspO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gIGJveC1zaGFkb3c6IDAgOHB4IDI1cHggLTNweCByZ2JhKDIyMCwgMzgsIDM4LCAwLjMpO1xufVxuXG4vKiBQYXJ0bmVyc2hpcCBDVEEgU2VjdGlvbiBFeHRyYSBXaGl0ZXNwYWNlICovXG4ucGFydG5lcnNoaXAtY3RhIHtcbiAgcGFkZGluZy10b3A6IDZyZW07XG4gIHBhZGRpbmctYm90dG9tOiA2cmVtO1xuICBtYXJnaW4tdG9wOiAzcmVtO1xuICBtYXJnaW4tYm90dG9tOiAzcmVtO1xufVxuXG4vKiBIZXJvIFNlY3Rpb24gU3R5bGVzICovXG4vKiBIZXJvIHNlY3Rpb24gbm93IHVzZXMgc3RhbmRhcmQgc3VyZmFjZSBjbGFzc2VzIGZyb20gZ2xvYmFsIHN0eWxlcyAoRFJZIHByaW5jaXBsZSkgKi9cbi8qIE5vIGN1c3RvbSBiYWNrZ3JvdW5kcyBuZWVkZWQgLSBmb2xsb3dzIEtJU1MgcHJpbmNpcGxlICovXG5cbi8qIFNlYXJjaCBhbmQgRmlsdGVyIElucHV0cyAqL1xuLnBhcnRuZXJzLWRpcmVjdG9yeSBpbnB1dCxcbi5wYXJ0bmVycy1kaXJlY3Rvcnkgc2VsZWN0IHtcbiAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpO1xuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7XG59XG5cbi5wYXJ0bmVycy1kaXJlY3RvcnkgaW5wdXQ6Zm9jdXMsXG4ucGFydG5lcnMtZGlyZWN0b3J5IHNlbGVjdDpmb2N1cyB7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItYmx1ZS01MDApO1xuICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSg1OSwgMTMwLCAyNDYsIDAuMSk7XG59XG5cbi5wYXJ0bmVycy1kaXJlY3RvcnkgaW5wdXQ6OnBsYWNlaG9sZGVyIHtcbiAgY29sb3I6IHZhcigtLXRleHQtdGVydGlhcnkpO1xufVxuXG4vKiBSYXRpbmcgU3RhcnMgKi9cbi5wYXJ0bmVyLXJhdGluZyAuaWNvbi1zdGFyIHtcbiAgY29sb3I6ICNmYmJmMjQ7XG4gIGZpbGw6ICNmYmJmMjQ7XG59XG5cbi8qIE1vYmlsZSBPcHRpbWl6YXRpb25zICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLnBhcnRuZXJzLWdyaWQge1xuICAgIGdhcDogMS41cmVtO1xuICB9XG4gIFxuICAucGFydG5lci1jYXJkIHtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cbiAgXG4gIC8qIEhlcm8gc2VjdGlvbiB1c2VzIHN0YW5kYXJkIGxheW91dC1zZWN0aW9uIHBhZGRpbmcgZnJvbSBnbG9iYWwgc3R5bGVzICovXG4gIFxuICAucGFydG5lcnNoaXAtY3RhIHtcbiAgICBwYWRkaW5nLXRvcDogNHJlbTtcbiAgICBwYWRkaW5nLWJvdHRvbTogNHJlbTtcbiAgICBtYXJnaW4tdG9wOiAycmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDJyZW07XG4gIH1cbiAgXG4gIC8qIEVuc3VyZSBvbmx5IDEgaGVyaXRhZ2UgcmVkIGVsZW1lbnQgb24gbW9iaWxlICovXG4gIC5idG4taGVyaXRhZ2U6bm90KDpmaXJzdC1vZi10eXBlKSB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3Itc2xhdGUtNjAwKTtcbiAgfVxuICBcbiAgLmJ0bi1oZXJpdGFnZTpub3QoOmZpcnN0LW9mLXR5cGUpOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1zbGF0ZS03MDApO1xuICB9XG59XG5cbi8qIERlc2t0b3AgSGVyaXRhZ2UgUmVkIENvbXBsaWFuY2UgKi9cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAvKiBNYXhpbXVtIDIgaGVyaXRhZ2UgcmVkIGVsZW1lbnRzIG9uIGRlc2t0b3AgKi9cbiAgLmhlcml0YWdlLXJlZDpudGgtb2YtdHlwZShuKzMpLFxuICAuYnRuLWhlcml0YWdlOm50aC1vZi10eXBlKG4rMykge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXNsYXRlLTYwMCk7XG4gICAgY29sb3I6IHdoaXRlO1xuICB9XG4gIFxuICAuaGVyaXRhZ2UtcmVkOm50aC1vZi10eXBlKG4rMyk6aG92ZXIsXG4gIC5idG4taGVyaXRhZ2U6bnRoLW9mLXR5cGUobiszKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3Itc2xhdGUtNzAwKTtcbiAgfVxufVxuXG4vKiBQV0EgQW5pbWF0aW9uIEVuaGFuY2VtZW50cyAqL1xuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiBuby1wcmVmZXJlbmNlKSB7XG4gIC5wd2Etc2Nyb2xsLWZhZGUge1xuICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMC42cztcbiAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xuICB9XG4gIFxuICAucGFydG5lci1jYXJkIHtcbiAgICBhbmltYXRpb24tZGVsYXk6IGNhbGModmFyKC0tc3RhZ2dlci1pbmRleCwgMCkgKiAwLjFzKTtcbiAgfVxufVxuXG4vKiBIaWdoIENvbnRyYXN0IE1vZGUgU3VwcG9ydCAqL1xuQG1lZGlhIChwcmVmZXJzLWNvbnRyYXN0OiBoaWdoKSB7XG4gIC5wYXJ0bmVyLWNhcmQge1xuICAgIGJvcmRlci13aWR0aDogMnB4O1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTtcbiAgfVxuICBcbiAgLnBhcnRuZXItY2FyZCAucGFydG5lci1uYW1lIHtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICB9XG4gIFxuICAuYnRuLWhlcml0YWdlIHtcbiAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1oZXJpdGFnZS1yZWQtZGFyayk7XG4gIH1cbn1cblxuLyogUHJpbnQgU3R5bGVzICovXG5AbWVkaWEgcHJpbnQge1xuICAvKiBIZXJvIHNlY3Rpb24gcHJpbnQgc3R5bGVzIGhhbmRsZWQgYnkgZ2xvYmFsIGhlcm8uY3NzICovXG4gIFxuICAucGFydG5lci1jYXJkIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjMDAwO1xuICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICB9XG4gIFxuICAucGFydG5lcnNoaXAtY3RhIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59IiwiLyoqXG4gKiBQcmljaW5nQ2FyZCBDb21wb25lbnQgU3R5bGVzXG4gKiBGb2xsb3dpbmcgdGhlIFRocmVlLUxheWVyIENTUyBBcmNoaXRlY3R1cmU6XG4gKiBMYXllciAxOiBCcmFuZCBGb3VuZGF0aW9uIChnbG9iYWwgc3R5bGVzKVxuICogTGF5ZXIgMjogQ29tcG9uZW50IEVuaGFuY2VtZW50ICh0aGlzIGZpbGUpXG4gKiBMYXllciAzOiBQYWdlIEN1c3RvbWl6YXRpb24gKHBhZ2Utc3BlY2lmaWMgb3ZlcnJpZGVzKVxuICovXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBDb250YWluZXIgYW5kIENhcmQgU3RydWN0dXJlXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLnByaWNpbmctY2FyZC1jb250YWluZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGhlaWdodDogMTAwJTtcbn1cblxuLnByaWNpbmctY2FyZCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGhlaWdodDogMTAwJTtcbiAgcGFkZGluZzogMnJlbTtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3Itd2hpdGUpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LTIwMCk7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4ucHJpY2luZy1jYXJkOmhvdmVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpO1xuICBib3gtc2hhZG93OiAwIDhweCAxNnB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7XG59XG5cbi8qIFJlY29tbWVuZGVkL0hpZ2hsaWdodGVkIENhcmQgKi9cbi5wcmljaW5nLWNhcmQtcmVjb21tZW5kZWQge1xuICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWhlcml0YWdlKTtcbiAgYm9yZGVyLXdpZHRoOiAycHg7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgyMDQsIDAsIDAsIDAuMTUpO1xufVxuXG4ucHJpY2luZy1jYXJkLXJlY29tbWVuZGVkOmhvdmVyIHtcbiAgYm94LXNoYWRvdzogMCAxMnB4IDI0cHggcmdiYSgyMDQsIDAsIDAsIDAuMik7XG59XG5cbi5wcmljaW5nLWNhcmQtaGlnaGxpZ2h0ZWQge1xuICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpO1xuICB6LWluZGV4OiAxMDtcbn1cblxuLyogQ3VzdG9tIFRpZXIgQ2FyZCAqL1xuLnByaWNpbmctY2FyZC1jdXN0b20ge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1jb2xvci1ncmF5LTUwKSwgdmFyKC0tY29sb3Itd2hpdGUpKTtcbiAgYm9yZGVyLXN0eWxlOiBkYXNoZWQ7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBCYWRnZSBTdHlsZXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4ucHJpY2luZy1jYXJkLWJhZGdlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IC0xMnB4O1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgcGFkZGluZzogNHB4IDE2cHg7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWhlcml0YWdlKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXdoaXRlKTtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBmb250LXdlaWdodDogNjAwO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBsZXR0ZXItc3BhY2luZzogMC41cHg7XG4gIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gIHotaW5kZXg6IDE7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBIZWFkZXIgU2VjdGlvblxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5wcmljaW5nLWNhcmQtaGVhZGVyIHtcbiAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5wcmljaW5nLWNhcmQtdGllciB7XG4gIGZvbnQtc2l6ZTogMjhweDtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtcHJpbWFyeSk7XG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMjtcbn1cblxuLnByaWNpbmctY2FyZC1kZXNjcmlwdGlvbiB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpO1xuICBsaW5lLWhlaWdodDogMS41O1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgUHJpY2luZyBTZWN0aW9uXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLnByaWNpbmctY2FyZC1wcmljaW5nIHtcbiAgcGFkZGluZzogMS41cmVtIDA7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LTEwMCk7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LTEwMCk7XG4gIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbn1cblxuLnByaWNpbmctY2FyZC1yYXRlIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgZ2FwOiA0cHg7XG59XG5cbi5wcmljaW5nLWNhcmQtcHJpY2Uge1xuICBmb250LXNpemU6IDQ4cHg7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXByaW1hcnkpO1xuICBsaW5lLWhlaWdodDogMTtcbn1cblxuLnByaWNpbmctY2FyZC11bml0IHtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1tdXRlZCk7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbi8qIFZvbHVtZSBEaXNjb3VudCBTZWN0aW9uICovXG4ucHJpY2luZy1jYXJkLXZvbHVtZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBnYXA6IDhweDtcbiAgcGFkZGluZzogMTJweDtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3Itc3VjY2Vzcy1saWdodCk7XG4gIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgbWFyZ2luOiAxcmVtIDA7XG59XG5cbi5wcmljaW5nLWNhcmQtdm9sdW1lLWljb24ge1xuICBmbGV4LXNocmluazogMDtcbn1cblxuLnByaWNpbmctY2FyZC12b2x1bWUtY29udGVudCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogNHB4O1xufVxuXG4ucHJpY2luZy1jYXJkLXZvbHVtZS1yYXRlIHtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBmb250LXdlaWdodDogNjAwO1xuICBjb2xvcjogdmFyKC0tY29sb3Itc3VjY2Vzcyk7XG59XG5cbi5wcmljaW5nLWNhcmQtdm9sdW1lLXRleHQge1xuICBmb250LXNpemU6IDEycHg7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXNlY29uZGFyeSk7XG59XG5cbi8qIFNldHVwIGFuZCBNaW5pbXVtIFNlY3Rpb25zICovXG4ucHJpY2luZy1jYXJkLXNldHVwLFxuLnByaWNpbmctY2FyZC1taW5pbXVtIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiA4cHggMDtcbiAgZm9udC1zaXplOiAxNHB4O1xufVxuXG4ucHJpY2luZy1jYXJkLXNldHVwLWxhYmVsLFxuLnByaWNpbmctY2FyZC1taW5pbXVtLWxhYmVsIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpO1xufVxuXG4ucHJpY2luZy1jYXJkLXNldHVwLXZhbHVlLFxuLnByaWNpbmctY2FyZC1taW5pbXVtLXZhbHVlIHtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtcHJpbWFyeSk7XG59XG5cbi5wcmljaW5nLWNhcmQtbWluaW11bS11c2FnZSB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpO1xuICBtYXJnaW4tbGVmdDogNHB4O1xufVxuXG4vKiBEYWlseSBJbnRlcmFjdGlvbnMgKi9cbi5wcmljaW5nLWNhcmQtaW50ZXJhY3Rpb25zIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGdhcDogNnB4O1xuICBtYXJnaW4tdG9wOiAxMnB4O1xuICBwYWRkaW5nOiA4cHg7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWdyYXktNTApO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTtcbn1cblxuLyogQ3VzdG9tIE1lc3NhZ2UgKi9cbi5wcmljaW5nLWNhcmQtY3VzdG9tLW1lc3NhZ2Uge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgcGFkZGluZzogMnJlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtaW4taGVpZ2h0OiAyMDBweDtcbn1cblxuLnByaWNpbmctY2FyZC1jdXN0b20taWNvbiB7XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG59XG5cbi5wcmljaW5nLWNhcmQtY3VzdG9tLXRleHQge1xuICBmb250LXNpemU6IDE2cHg7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXNlY29uZGFyeSk7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBCZW5lZml0cyBTZWN0aW9uXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLnByaWNpbmctY2FyZC1iZW5lZml0cy1zZWN0aW9uIHtcbiAgZmxleDogMTtcbiAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xufVxuXG4ucHJpY2luZy1jYXJkLWJlbmVmaXRzIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xufVxuXG4ucHJpY2luZy1jYXJkLWJlbmVmaXQtaXRlbSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBnYXA6IDhweDtcbiAgcGFkZGluZzogOHB4IDA7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbn1cblxuLnByaWNpbmctY2FyZC1iZW5lZml0LWljb24ge1xuICBmbGV4LXNocmluazogMDtcbiAgbWFyZ2luLXRvcDogMnB4O1xuICBjb2xvcjogdmFyKC0tY29sb3Itc3VjY2Vzcyk7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBBdWRpZW5jZSBTZWN0aW9uXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLnByaWNpbmctY2FyZC1hdWRpZW5jZSB7XG4gIHBhZGRpbmc6IDEycHg7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWdyYXktNTApO1xuICBib3JkZXItcmFkaXVzOiA2cHg7XG4gIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbn1cblxuLnByaWNpbmctY2FyZC1hdWRpZW5jZS10ZXh0IHtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG1hcmdpbjogMDtcbn1cblxuLnByaWNpbmctY2FyZC1hdWRpZW5jZS10ZXh0IHN0cm9uZyB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXByaW1hcnkpO1xuICBmb250LXdlaWdodDogNjAwO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgRm9vdGVyIGFuZCBDVEFcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4ucHJpY2luZy1jYXJkLWZvb3RlciB7XG4gIG1hcmdpbi10b3A6IGF1dG87XG4gIHBhZGRpbmctdG9wOiAxcmVtO1xufVxuXG4ucHJpY2luZy1jYXJkLWN0YSB7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAxMnB4IDI0cHg7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xufVxuXG4ucHJpY2luZy1jYXJkLXJlY29tbWVuZGVkIC5wcmljaW5nLWNhcmQtY3RhIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItaGVyaXRhZ2UpO1xuICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWhlcml0YWdlKTtcbn1cblxuLnByaWNpbmctY2FyZC1yZWNvbW1lbmRlZCAucHJpY2luZy1jYXJkLWN0YTpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWhlcml0YWdlLWRhcmspO1xuICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWhlcml0YWdlLWRhcmspO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBFeHBhbmQgRmVhdHVyZXMgKEhpZGRlbiBieSBkZWZhdWx0KVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5wcmljaW5nLWNhcmQtZXhwYW5kIHtcbiAgZGlzcGxheTogbm9uZTsgLyogV2lsbCBiZSBzaG93biB2aWEgSmF2YVNjcmlwdCB3aGVuIG5lZWRlZCAqL1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogOHB4O1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS0xMDApO1xuICBtYXJnaW4tdG9wOiAxcmVtO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpO1xufVxuXG4ucHJpY2luZy1jYXJkLWV4cGFuZDpob3ZlciB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXByaW1hcnkpO1xufVxuXG4ucHJpY2luZy1jYXJkLWV4cGFuZGVkIHtcbiAgZGlzcGxheTogbm9uZTsgLyogV2lsbCBiZSBzaG93biB2aWEgSmF2YVNjcmlwdCB3aGVuIGV4cGFuZGVkICovXG4gIHBhZGRpbmctdG9wOiAxcmVtO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS0xMDApO1xuICBtYXJnaW4tdG9wOiAxcmVtO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgTW9iaWxlIFJlc3BvbnNpdmUgU3R5bGVzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gIC5wcmljaW5nLWNhcmQge1xuICAgIHBhZGRpbmc6IDEuNXJlbTtcbiAgICBtYXJnaW46IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICAucHJpY2luZy1jYXJkLWhpZ2hsaWdodGVkIHtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cblxuICAucHJpY2luZy1jYXJkLXRpZXIge1xuICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgfVxuXG4gIC5wcmljaW5nLWNhcmQtcHJpY2Uge1xuICAgIGZvbnQtc2l6ZTogMzZweDtcbiAgfVxuXG4gIC5wcmljaW5nLWNhcmQtdm9sdW1lIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxuXG4gIC5wcmljaW5nLWNhcmQtc2V0dXAsXG4gIC5wcmljaW5nLWNhcmQtbWluaW11bSB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZ2FwOiA0cHg7XG4gIH1cblxuICAucHJpY2luZy1jYXJkLWJlbmVmaXQtaXRlbSB7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICB9XG5cbiAgLnByaWNpbmctY2FyZC1jdGEge1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICBwYWRkaW5nOiAxNHB4IDIwcHg7XG4gIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gIC5wcmljaW5nLWNhcmQge1xuICAgIHBhZGRpbmc6IDEuMjVyZW07XG4gIH1cblxuICAucHJpY2luZy1jYXJkLXRpZXIge1xuICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgfVxuXG4gIC5wcmljaW5nLWNhcmQtcHJpY2Uge1xuICAgIGZvbnQtc2l6ZTogMzJweDtcbiAgfVxuXG4gIC5wcmljaW5nLWNhcmQtZGVzY3JpcHRpb24ge1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgVGFibGV0IFNwZWNpZmljIFN0eWxlc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbkBtZWRpYSAobWluLXdpZHRoOiA3NjlweCkgYW5kIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAucHJpY2luZy1jYXJkIHtcbiAgICBwYWRkaW5nOiAxLjc1cmVtO1xuICB9XG5cbiAgLnByaWNpbmctY2FyZC1wcmljZSB7XG4gICAgZm9udC1zaXplOiA0MnB4O1xuICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBQV0EgQW5pbWF0aW9uIFN1cHBvcnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4ucHJpY2luZy1jYXJkLnB3YS1zY3JvbGwtZmFkZSB7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMHB4KTtcbiAgYW5pbWF0aW9uOiBmYWRlSW5VcCAwLjZzIGVhc2UgZm9yd2FyZHM7XG4gIGFuaW1hdGlvbi1kZWxheTogY2FsYyh2YXIoLS1zdGFnZ2VyLWluZGV4KSAqIDEwMG1zKTtcbn1cblxuQGtleWZyYW1lcyBmYWRlSW5VcCB7XG4gIHRvIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgRGFyayBNb2RlIFN1cHBvcnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uZGFyayAucHJpY2luZy1jYXJkIHtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLXN1cmZhY2UtZGFyaywgMTMgMTcgMjMpKTtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4gIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMyk7XG59XG5cbi5kYXJrIC5wcmljaW5nLWNhcmQ6aG92ZXIge1xuICBib3gtc2hhZG93OiAwIDhweCAxNnB4IHJnYmEoMCwgMCwgMCwgMC40KTtcbn1cblxuLmRhcmsgLnByaWNpbmctY2FyZC1yZWNvbW1lbmRlZCB7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItaGVyaXRhZ2UpO1xuICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMjA0LCAwLCAwLCAwLjMpO1xufVxuXG4uZGFyayAucHJpY2luZy1jYXJkLXJlY29tbWVuZGVkOmhvdmVyIHtcbiAgYm94LXNoYWRvdzogMCAxMnB4IDI0cHggcmdiYSgyMDQsIDAsIDAsIDAuNCk7XG59XG5cbi5kYXJrIC5wcmljaW5nLWNhcmQtY3VzdG9tIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgzMCwgNDEsIDU5LCAwLjgpLCByZ2IodmFyKC0tc3VyZmFjZS1kYXJrLCAxMyAxNyAyMykpKTtcbn1cblxuLmRhcmsgLnByaWNpbmctY2FyZC10aWVyIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXdoaXRlLCAjZmZmZmZmKTtcbn1cblxuLmRhcmsgLnByaWNpbmctY2FyZC1kZXNjcmlwdGlvbiB7XG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XG59XG5cbi5kYXJrIC5wcmljaW5nLWNhcmQtcHJpY2luZyB7XG4gIGJvcmRlci1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xufVxuXG4uZGFyayAucHJpY2luZy1jYXJkLXByaWNlIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXdoaXRlLCAjZmZmZmZmKTtcbn1cblxuLmRhcmsgLnByaWNpbmctY2FyZC11bml0IHtcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42KTtcbn1cblxuLmRhcmsgLnByaWNpbmctY2FyZC12b2x1bWUge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDM0LCAxOTcsIDk0LCAwLjE1KTtcbn1cblxuLmRhcmsgLnByaWNpbmctY2FyZC12b2x1bWUtcmF0ZSB7XG4gIGNvbG9yOiByZ2IoMTM0LCAyMzksIDE3Mik7XG59XG5cbi5kYXJrIC5wcmljaW5nLWNhcmQtdm9sdW1lLXRleHQge1xuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xufVxuXG4uZGFyayAucHJpY2luZy1jYXJkLXNldHVwLWxhYmVsLFxuLmRhcmsgLnByaWNpbmctY2FyZC1taW5pbXVtLWxhYmVsIHtcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42KTtcbn1cblxuLmRhcmsgLnByaWNpbmctY2FyZC1zZXR1cC12YWx1ZSxcbi5kYXJrIC5wcmljaW5nLWNhcmQtbWluaW11bS12YWx1ZSB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci13aGl0ZSwgI2ZmZmZmZik7XG59XG5cbi5kYXJrIC5wcmljaW5nLWNhcmQtbWluaW11bS11c2FnZSB7XG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7XG59XG5cbi5kYXJrIC5wcmljaW5nLWNhcmQtaW50ZXJhY3Rpb25zIHtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTtcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTtcbn1cblxuLmRhcmsgLnByaWNpbmctY2FyZC1jdXN0b20tdGV4dCB7XG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XG59XG5cbi5kYXJrIC5wcmljaW5nLWNhcmQtYmVuZWZpdC1pdGVtIHtcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTtcbn1cblxuLmRhcmsgLnByaWNpbmctY2FyZC1iZW5lZml0LWljb24ge1xuICBjb2xvcjogcmdiKDEzNCwgMjM5LCAxNzIpO1xufVxuXG4uZGFyayAucHJpY2luZy1jYXJkLWF1ZGllbmNlIHtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTtcbn1cblxuLmRhcmsgLnByaWNpbmctY2FyZC1hdWRpZW5jZS10ZXh0IHtcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTtcbn1cblxuLmRhcmsgLnByaWNpbmctY2FyZC1hdWRpZW5jZS10ZXh0IHN0cm9uZyB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci13aGl0ZSwgI2ZmZmZmZik7XG59XG5cbi5kYXJrIC5wcmljaW5nLWNhcmQtZXhwYW5kIHtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7XG59XG5cbi5kYXJrIC5wcmljaW5nLWNhcmQtZXhwYW5kOmhvdmVyIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXdoaXRlLCAjZmZmZmZmKTtcbn1cblxuLmRhcmsgLnByaWNpbmctY2FyZC1leHBhbmRlZCB7XG4gIGJvcmRlci1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xufVxuXG4vKiBEYXJrIG1vZGUgZm9yIHJlY29tbWVuZGVkIGNhcmQgQ1RBIG92ZXJyaWRlIHJlbW92ZWQgLSBub3cgYWxsIENUQXMgdXNlIGJ0bi1wcmltYXJ5ICovXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBQcmludCBTdHlsZXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5AbWVkaWEgcHJpbnQge1xuICAucHJpY2luZy1jYXJkIHtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkO1xuICB9XG5cbiAgLnByaWNpbmctY2FyZDpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gIH1cblxuICAucHJpY2luZy1jYXJkLWV4cGFuZCB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59IiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFNlY3Rpb24gQ29tcG9uZW50IFN0eWxlcyAtIExheW91dCBVdGlsaXR5IEVuaGFuY2VtZW50c1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogSU1QT1JUQU5UOiBTZWN0aW9uIENvbXBvbmVudCBDU1MgSW1wbGVtZW50YXRpb24gTm90ZXNcbiAqIC0gVGhpcyBmaWxlIEVOSEFOQ0VTIGV4aXN0aW5nIGxheW91dCB1dGlsaXRpZXMgZnJvbSBzcmMvaW5kZXguY3NzXG4gKiAtIFVzZXMgbGF5b3V0LXNlY3Rpb24tKiwgc3VyZmFjZS0qLCBsYXlvdXQtY29udGFpbmVyIGNsYXNzZXMgYXMgZm91bmRhdGlvblxuICogLSBBZGRzIG1pbmltYWwgY29tcG9uZW50LXNwZWNpZmljIHN0eWxpbmcgZm9yIGNvbnRlbnQgc3RydWN0dXJlXG4gKiAtIEFsbCBzcGFjaW5nIGFuZCBzaXppbmcgY29tZXMgZnJvbSBsYXlvdXQgdXRpbGl0aWVzXG4gKiAtIENvbXBvbmVudCBjbGFzc2VzOiAuc2VjdGlvbi0qLCAuc2VjdGlvbi1oZWFkZXIsIC5zZWN0aW9uLWNvbnRlbnQsIC5zZWN0aW9uLWJvZHlcbiAqL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgMS4gU0VDVElPTiBDT05UQUlORVIgRU5IQU5DRU1FTlRTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBCYXNlIHNlY3Rpb24gY29udGFpbmVyIC0gd29ya3Mgd2l0aCBhbGwgbGF5b3V0IHV0aWxpdGllcyAqL1xuLnNlY3Rpb24tY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuOyAvKiBFbnN1cmUgY2xlYW4gYm91bmRhcmllcyBmb3IgYW5pbWF0aW9ucyAqL1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2luZy1zdGFuZGFyZCk7XG59XG5cbi8qIFN1cmZhY2UgZW5oYW5jZW1lbnRzIGZvciBiZXR0ZXIgdmlzdWFsIGhpZXJhcmNoeSAqL1xuLnNlY3Rpb24tY29udGFpbmVyLnN1cmZhY2UtZGVmYXVsdCB7XG4gIC8qIEFscmVhZHkgZGVmaW5lZCBpbiBsYXlvdXQgdXRpbGl0aWVzIC0gbm8gYWRkaXRpb25hbCBzdHlsZXMgbmVlZGVkICovXG59XG5cbi5zZWN0aW9uLWNvbnRhaW5lci5zdXJmYWNlLW11dGVkIHtcbiAgLyogU3VyZmFjZSBzdHlsZXMgaGFuZGxlZCBieSBnbG9iYWwgdGhlbWUgLSBubyBjb21wb25lbnQgb3ZlcnJpZGVzICovXG59XG5cbi5zZWN0aW9uLWNvbnRhaW5lci5zdXJmYWNlLWRhcmsge1xuICAvKiBTdXJmYWNlIHN0eWxlcyBoYW5kbGVkIGJ5IGdsb2JhbCB0aGVtZSAtIG5vIGNvbXBvbmVudCBvdmVycmlkZXMgKi9cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDIuIFNFQ1RJT04gSEVBREVSIFNUUlVDVFVSRVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogSGVhZGVyIGNvbnRhaW5lciBmb3IgdGl0bGUsIHN1YnRpdGxlLCBkZXNjcmlwdGlvbiAqL1xuLnNlY3Rpb24taGVhZGVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS04KTtcbiAgbWF4LXdpZHRoOiA4MDBweDsgLyogT3B0aW1hbCByZWFkaW5nIHdpZHRoIGZvciBoZWFkZXJzICovXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG59XG5cbi8qIFNlY3Rpb24gdGl0bGUgZW5oYW5jZW1lbnRzIC0gYnVpbGRzIG9uIHRpdGxlLXNlY3Rpb24gKi9cbi5zZWN0aW9uLXRpdGxlIHtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNCk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLyogU2VjdGlvbiBzdWJ0aXRsZSBlbmhhbmNlbWVudHMgLSBidWlsZHMgb24gc3VidGl0bGUtbGcgKi9cbi5zZWN0aW9uLXN1YnRpdGxlIHtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNCk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLyogU2VjdGlvbiBkZXNjcmlwdGlvbiBlbmhhbmNlbWVudHMgLSBidWlsZHMgb24gZGVzY3JpcHRpb24tbGcgKi9cbi5zZWN0aW9uLWRlc2NyaXB0aW9uIHtcbiAgbWFyZ2luLWJvdHRvbTogMDsgLyogTGFzdCBlbGVtZW50IGluIGhlYWRlciAtIG5vIGJvdHRvbSBtYXJnaW4gKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXgtd2lkdGg6IDYwMHB4OyAvKiBPcHRpbWFsIHJlYWRpbmcgd2lkdGggZm9yIGRlc2NyaXB0aW9ucyAqL1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgMy4gU0VDVElPTiBDT05URU5UIFNUUlVDVFVSRVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogQ29udGVudCBjb250YWluZXIgLSBwcm92aWRlcyBzdHJ1Y3R1cmUgZm9yIGNoaWxkIGNvbXBvbmVudHMgKi9cbi5zZWN0aW9uLWNvbnRlbnQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4vKiBCb2R5IHdyYXBwZXIgZm9yIGNvbnNpc3RlbnQgY2hpbGQgc3BhY2luZyAqL1xuLnNlY3Rpb24tYm9keSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi8qIEVuc3VyZSBwcm9wZXIgc3BhY2luZyBiZXR3ZWVuIG11bHRpcGxlIGNoaWxkIGVsZW1lbnRzICovXG4uc2VjdGlvbi1ib2R5ID4gKiArICoge1xuICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS02KTtcbn1cblxuLyogR3JpZCBsYXlvdXRzIGhhbmRsZSB0aGVpciBvd24gc3BhY2luZyAqL1xuLnNlY3Rpb24tYm9keS5sYXlvdXQtZ3JpZC0yID4gKixcbi5zZWN0aW9uLWJvZHkubGF5b3V0LWdyaWQtMyA+ICosXG4uc2VjdGlvbi1ib2R5LmxheW91dC1ncmlkLTQgPiAqIHtcbiAgbWFyZ2luLXRvcDogMDtcbn1cblxuLyogR3JpZCBsYXlvdXRzIHdpdGhpbiBzZWN0aW9ucyAqL1xuLnNlY3Rpb24tYm9keSAubGF5b3V0LWdyaWQtMixcbi5zZWN0aW9uLWJvZHkgLmxheW91dC1ncmlkLTMsXG4uc2VjdGlvbi1ib2R5IC5sYXlvdXQtZ3JpZC00IHtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtOCk7IC8qIEV4dHJhIHNwYWNlIGJlZm9yZSBncmlkcyAqL1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgNC4gUkVTUE9OU0lWRSBFTkhBTkNFTUVOVFNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIE1vYmlsZS1maXJzdCByZXNwb25zaXZlIGFkanVzdG1lbnRzICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLnNlY3Rpb24taGVhZGVyIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS02KTtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0OyAvKiBCZXR0ZXIgbW9iaWxlIHJlYWRpbmcgZXhwZXJpZW5jZSAqL1xuICB9XG4gIFxuICAuc2VjdGlvbi10aXRsZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMyk7XG4gIH1cbiAgXG4gIC5zZWN0aW9uLXN1YnRpdGxlIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0zKTtcbiAgfVxuICBcbiAgLnNlY3Rpb24tZGVzY3JpcHRpb24ge1xuICAgIG1heC13aWR0aDogbm9uZTsgLyogRnVsbCB3aWR0aCBvbiBtb2JpbGUgKi9cbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbiAgXG4gIC8qIFRpZ2h0ZXIgc3BhY2luZyBmb3IgbW9iaWxlICovXG4gIC5zZWN0aW9uLWJvZHkgPiAqICsgKiB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtNCk7XG4gIH1cbiAgXG4gIC8qIEdyaWQgbGF5b3V0cyBoYW5kbGUgdGhlaXIgb3duIHNwYWNpbmcgKi9cbiAgLnNlY3Rpb24tYm9keS5sYXlvdXQtZ3JpZC0yID4gKixcbiAgLnNlY3Rpb24tYm9keS5sYXlvdXQtZ3JpZC0zID4gKixcbiAgLnNlY3Rpb24tYm9keS5sYXlvdXQtZ3JpZC00ID4gKiB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgfVxuICBcbiAgLnNlY3Rpb24tYm9keSAubGF5b3V0LWdyaWQtMixcbiAgLnNlY3Rpb24tYm9keSAubGF5b3V0LWdyaWQtMyxcbiAgLnNlY3Rpb24tYm9keSAubGF5b3V0LWdyaWQtNCB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtNik7XG4gIH1cbn1cblxuLyogVGFibGV0IGFkanVzdG1lbnRzICovXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiAxMDIzcHgpIHtcbiAgLnNlY3Rpb24taGVhZGVyIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS04KTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IC8qIENlbnRlciBvbiB0YWJsZXQgKi9cbiAgfVxuICBcbiAgLnNlY3Rpb24tZGVzY3JpcHRpb24ge1xuICAgIG1heC13aWR0aDogNzAwcHg7IC8qIFNsaWdodGx5IHdpZGVyIG9uIHRhYmxldCAqL1xuICB9XG59XG5cbi8qIERlc2t0b3AgZW5oYW5jZW1lbnRzICovXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5zZWN0aW9uLWhlYWRlciB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMTApOyAvKiBNb3JlIGJyZWF0aGluZyByb29tIG9uIGRlc2t0b3AgKi9cbiAgfVxuICBcbiAgLyogRW5oYW5jZWQgc3BhY2luZyBmb3IgbGFyZ2VyIHNjcmVlbnMgKi9cbiAgLnNlY3Rpb24tYm9keSA+ICogKyAqIHtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS04KTtcbiAgfVxuICBcbiAgLyogR3JpZCBsYXlvdXRzIGhhbmRsZSB0aGVpciBvd24gc3BhY2luZyAqL1xuICAuc2VjdGlvbi1ib2R5LmxheW91dC1ncmlkLTIgPiAqLFxuICAuc2VjdGlvbi1ib2R5LmxheW91dC1ncmlkLTMgPiAqLFxuICAuc2VjdGlvbi1ib2R5LmxheW91dC1ncmlkLTQgPiAqIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICB9XG4gIFxuICAuc2VjdGlvbi1ib2R5IC5sYXlvdXQtZ3JpZC0yLFxuICAuc2VjdGlvbi1ib2R5IC5sYXlvdXQtZ3JpZC0zLFxuICAuc2VjdGlvbi1ib2R5IC5sYXlvdXQtZ3JpZC00IHtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS0xMik7XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDUuIFBXQSBBTklNQVRJT04gRU5IQU5DRU1FTlRTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBFbnN1cmUgc2VjdGlvbiBhbmltYXRpb25zIHdvcmsgc21vb3RobHkgd2l0aCBsYXlvdXQgdXRpbGl0aWVzICovXG4uc2VjdGlvbi1jb250YWluZXIucHdhLXNjcm9sbC1zZWN0aW9uIHtcbiAgLyogQW5pbWF0aW9uIGJhc2Ugc3R5bGVzIGFyZSBoYW5kbGVkIGJ5IFBXQSBzeXN0ZW0gKi9cbiAgLyogVGhpcyBjbGFzcyBlbnN1cmVzIHByb3BlciBpbnRlZ3JhdGlvbiAqL1xufVxuXG4vKiBIZWFkZXIgZWxlbWVudHMgYW5pbWF0aW9uIHJlYWRpbmVzcyAqL1xuLnNlY3Rpb24taGVhZGVyIC5wd2Etc2Nyb2xsLWZhZGUge1xuICAvKiBFbnN1cmUgaGVhZGVyIGVsZW1lbnRzIGFuaW1hdGUgcHJvcGVybHkgKi9cbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKHZhcigtLXNjcm9sbC1kaXN0YW5jZSwgMzBweCkpO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tcHdhLWR1cmF0aW9uLW5vcm1hbCkgdmFyKC0tcHdhLWVhc2luZy1zbW9vdGgpO1xufVxuXG4vKiBDb250ZW50IGFuaW1hdGlvbiByZWFkaW5lc3MgKi9cbi5zZWN0aW9uLWNvbnRlbnQgLnB3YS1zY3JvbGwtZmFkZSB7XG4gIC8qIEVuc3VyZSBjb250ZW50IGFuaW1hdGVzIGFmdGVyIGhlYWRlciAqL1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkodmFyKC0tc2Nyb2xsLWRpc3RhbmNlLCAzMHB4KSk7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS1wd2EtZHVyYXRpb24tbm9ybWFsKSB2YXIoLS1wd2EtZWFzaW5nLXNtb290aCk7XG59XG5cbi8qIEFuaW1hdGlvbiBhY3RpdmUgc3RhdGVzICovXG4uc2VjdGlvbi1jb250YWluZXIucHdhLXNjcm9sbC1zZWN0aW9uLnB3YS1hbmltYXRlIC5wd2Etc2Nyb2xsLWZhZGUge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICA2LiBBQ0NFU1NJQklMSVRZIEVOSEFOQ0VNRU5UU1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogRm9jdXMgbWFuYWdlbWVudCBmb3Iga2V5Ym9hcmQgbmF2aWdhdGlvbiAqL1xuLnNlY3Rpb24tY29udGFpbmVyOmZvY3VzLXdpdGhpbiB7XG4gIG91dGxpbmU6IG5vbmU7IC8qIExldCBpbmRpdmlkdWFsIGVsZW1lbnRzIGhhbmRsZSBmb2N1cyAqL1xufVxuXG4vKiBGb2N1cyBzdHlsZXMgaGFuZGxlZCBieSBnbG9iYWwgdGhlbWUgLSBubyBjb21wb25lbnQgb3ZlcnJpZGVzICovXG5cbi8qIEhpZ2ggY29udHJhc3QgbW9kZSBzdXBwb3J0IGhhbmRsZWQgYnkgZ2xvYmFsIHRoZW1lICovXG5cbi8qIFJlZHVjZWQgbW90aW9uIHN1cHBvcnQgKi9cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gIC5zZWN0aW9uLWhlYWRlciAucHdhLXNjcm9sbC1mYWRlLFxuICAuc2VjdGlvbi1jb250ZW50IC5wd2Etc2Nyb2xsLWZhZGUge1xuICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDcuIFBSSU5UIFNUWUxFU1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuQG1lZGlhIHByaW50IHtcbiAgLnNlY3Rpb24tY29udGFpbmVyIHtcbiAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7XG4gICAgYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgfVxuICBcbiAgLnNlY3Rpb24taGVhZGVyIHtcbiAgICBwYWdlLWJyZWFrLWFmdGVyOiBhdm9pZDtcbiAgICBicmVhay1hZnRlcjogYXZvaWQ7XG4gIH1cbiAgXG4gIC8qIEVuc3VyZSByZWFkYWJsZSBzcGFjaW5nIGluIHByaW50ICovXG4gIC5zZWN0aW9uLWhlYWRlciB7XG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgfVxuICBcbiAgLnNlY3Rpb24tYm9keSA+ICogKyAqIHtcbiAgICBtYXJnaW4tdG9wOiAxcmVtO1xuICB9XG4gIFxuICAvKiBHcmlkIGxheW91dHMgaGFuZGxlIHRoZWlyIG93biBzcGFjaW5nICovXG4gIC5zZWN0aW9uLWJvZHkubGF5b3V0LWdyaWQtMiA+ICosXG4gIC5zZWN0aW9uLWJvZHkubGF5b3V0LWdyaWQtMyA+ICosXG4gIC5zZWN0aW9uLWJvZHkubGF5b3V0LWdyaWQtNCA+ICoge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cbn0iLCIvKipcbiAqIFNlcnZpY2VTaG93Y2FzZSBDb21wb25lbnQgU3R5bGVzXG4gKiBUaHJlZS1MYXllciBBcmNoaXRlY3R1cmUgSW1wbGVtZW50YXRpb25cbiAqIFxuICogTGF5ZXIgMTogQnJhbmQgRm91bmRhdGlvbiAtIEluaGVyaXRzIGZyb20gZ2xvYmFsIHN0eWxlc1xuICogTGF5ZXIgMjogQ29tcG9uZW50IEVuaGFuY2VtZW50IC0gQ29tcG9uZW50LXNwZWNpZmljIHN0eWxpbmcgIFxuICogTGF5ZXIgMzogUGFnZSBDdXN0b21pemF0aW9uIC0gVGhlbWUgYW5kIGNvbnRleHQgdmFyaWFudHNcbiAqL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgTGF5ZXIgMTogQnJhbmQgRm91bmRhdGlvblxuICAgSW5oZXJpdHMgZ2xvYmFsIHZhcmlhYmxlcyBhbmQgYmFzZSBzdHlsZXMgZnJvbSBpbmRleC5jc3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIENvbXBvbmVudCB1c2VzIGJyYW5kIGZvdW5kYXRpb24gdmFyaWFibGVzOlxuICAgLSBDb2xvcnM6IHZhcigtLWNvbG9yLSopXG4gICAtIFR5cG9ncmFwaHk6IEdsb2JhbCBjbGFzc2VzICh0aXRsZS1zZWN0aW9uLCB0aXRsZS1jYXJkLCBkZXNjcmlwdGlvbilcbiAgIC0gU3BhY2luZzogdmFyKC0tc3BhY2luZy0qKVxuICAgLSBBbmltYXRpb25zOiBQV0Egc2Nyb2xsIHN5c3RlbVxuKi9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIExheWVyIDI6IENvbXBvbmVudCBFbmhhbmNlbWVudFxuICAgU2VydmljZVNob3djYXNlLXNwZWNpZmljIHN0cnVjdHVyZSBhbmQgc3R5bGluZ1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogQmxvY2s6IE1haW4gY29udGFpbmVyICovXG4uc2VydmljZS1zaG93Y2FzZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi5zZXJ2aWNlLXNob3djYXNlLWNvbnRhaW5lciB7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNpbmcteGwpIDA7XG59XG5cbi8qIEVsZW1lbnQ6IEhlYWRlciBzZWN0aW9uICovXG4uc2VydmljZS1zaG93Y2FzZV9faGVhZGVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLXhsKTtcbn1cblxuLnNlcnZpY2Utc2hvd2Nhc2VfX2hlYWRlciA+ICogKyAqIHtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy1tZCk7XG59XG5cbi8qIEVsZW1lbnQ6IFNlcnZpY2VzIGdyaWQgKi9cbi5zZXJ2aWNlLXNob3djYXNlX19ncmlkIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKTtcbiAgZ2FwOiB2YXIoLS1zcGFjaW5nLWxnKTtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi8qIEVsZW1lbnQ6IFNlcnZpY2UgY2FyZCAqL1xuLnNlcnZpY2Utc2hvd2Nhc2VfX2NhcmQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctbGcpO1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItY2FyZCkpO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2IodmFyKC0tY29sb3ItYm9yZGVyKSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5zZXJ2aWNlLXNob3djYXNlX19jYXJkOmhvdmVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICBib3gtc2hhZG93OiAwIDhweCAyNHB4IHJnYmEoMCwgMCwgMCwgMC4wOCk7XG4gIGJvcmRlci1jb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpIC8gMC4zKTtcbn1cblxuLyogRWxlbWVudDogSWNvbiBjb250YWluZXIgKi9cbi5zZXJ2aWNlLXNob3djYXNlX19pY29uIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHdpZHRoOiA2NHB4O1xuICBoZWlnaHQ6IDY0cHg7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctbWQpO1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQpIC8gMC4xKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNlLXNtb290aCk7XG59XG5cbi5zZXJ2aWNlLXNob3djYXNlX19pY29uIHN2ZyB7XG4gIHdpZHRoOiA0OHB4O1xuICBoZWlnaHQ6IDQ4cHg7XG4gIGZpbGw6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpO1xufVxuXG4uc2VydmljZS1zaG93Y2FzZV9fY2FyZDpob3ZlciAuc2VydmljZS1zaG93Y2FzZV9faWNvbiB7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSAvIDAuMSk7XG59XG5cbi5zZXJ2aWNlLXNob3djYXNlX19jYXJkOmhvdmVyIC5zZXJ2aWNlLXNob3djYXNlX19pY29uIHN2ZyB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMS4xKTtcbiAgZmlsbDogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbn1cblxuLyogRWxlbWVudDogQ2FyZCBjb250ZW50ICovXG4uc2VydmljZS1zaG93Y2FzZV9fY29udGVudCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogdmFyKC0tc3BhY2luZy1zbSk7XG59XG5cbi5zZXJ2aWNlLXNob3djYXNlX190aXRsZSB7XG4gIC8qIFVzZXMgZ2xvYmFsIC50aXRsZS1jYXJkIGNsYXNzICovXG4gIG1hcmdpbjogMDtcbn1cblxuLnNlcnZpY2Utc2hvd2Nhc2VfX2Rlc2NyaXB0aW9uIHtcbiAgLyogVXNlcyBnbG9iYWwgLmRlc2NyaXB0aW9uIGNsYXNzICovXG4gIG1hcmdpbjogMDtcbn1cblxuLyogRWxlbWVudDogQmFkZ2UgKi9cbi5zZXJ2aWNlLXNob3djYXNlX19iYWRnZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiB2YXIoLS1zcGFjaW5nLW1kKTtcbiAgcmlnaHQ6IHZhcigtLXNwYWNpbmctbWQpO1xuICBwYWRkaW5nOiAycHggOHB4O1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSk7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xuICBmb250LXdlaWdodDogNjAwO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xufVxuXG4vKiBFbGVtZW50OiBMaW5rIGluZGljYXRvciAqL1xuLnNlcnZpY2Utc2hvd2Nhc2VfX2xpbmstaWNvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiB2YXIoLS1zcGFjaW5nLW1kKTtcbiAgcmlnaHQ6IHZhcigtLXNwYWNpbmctbWQpO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLThweCk7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpO1xufVxuXG4uc2VydmljZS1zaG93Y2FzZV9fbGluay1pY29uIHN2ZyB7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIGZpbGw6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG59XG5cbi5zZXJ2aWNlLXNob3djYXNlX19jYXJkOmhvdmVyIC5zZXJ2aWNlLXNob3djYXNlX19saW5rLWljb24ge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBNb2RpZmllcjogR3JpZCBWYXJpYXRpb25zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBNb2RpZmllcjogQ29tcGFjdCBncmlkICovXG4uc2VydmljZS1zaG93Y2FzZV9fZ3JpZC0tY29tcGFjdCB7XG4gIGdhcDogdmFyKC0tc3BhY2luZy1tZCk7XG59XG5cbi5zZXJ2aWNlLXNob3djYXNlX19ncmlkLS1jb21wYWN0IC5zZXJ2aWNlLXNob3djYXNlX19jYXJkIHtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1tZCk7XG59XG5cbi5zZXJ2aWNlLXNob3djYXNlX19ncmlkLS1jb21wYWN0IC5zZXJ2aWNlLXNob3djYXNlX19pY29uIHtcbiAgd2lkdGg6IDQ4cHg7XG4gIGhlaWdodDogNDhweDtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy1zbSk7XG59XG5cbi5zZXJ2aWNlLXNob3djYXNlX19ncmlkLS1jb21wYWN0IC5zZXJ2aWNlLXNob3djYXNlX19pY29uIHN2ZyB7XG4gIHdpZHRoOiAzMnB4O1xuICBoZWlnaHQ6IDMycHg7XG59XG5cbi8qIE1vZGlmaWVyOiBXaWRlIGdyaWQgKi9cbi5zZXJ2aWNlLXNob3djYXNlX19ncmlkLS13aWRlIHtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgMWZyKTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIE1vZGlmaWVyOiBDYXJkIFRoZW1lc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogTW9kaWZpZXI6IERhcmsgY2FyZCAqL1xuLnNlcnZpY2Utc2hvd2Nhc2VfX2NhcmQtLWRhcmsge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItYmFja2dyb3VuZCkpO1xuICBib3JkZXItY29sb3I6IHJnYih2YXIoLS1jb2xvci1ib3JkZXIpIC8gMC41KTtcbn1cblxuLnNlcnZpY2Utc2hvd2Nhc2VfX2NhcmQtLWRhcms6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItY2FyZCkpO1xufVxuXG4vKiBNb2RpZmllcjogSGlnaGxpZ2h0ZWQgY2FyZCAqL1xuLnNlcnZpY2Utc2hvd2Nhc2VfX2NhcmQtLWhpZ2hsaWdodCB7XG4gIGJvcmRlci1jb2xvcjogcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkgLyAwLjMpO1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSAvIDAuMDUpO1xufVxuXG4uc2VydmljZS1zaG93Y2FzZV9fY2FyZC0taGlnaGxpZ2h0IC5zZXJ2aWNlLXNob3djYXNlX19pY29uIHtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkgLyAwLjEpO1xufVxuXG4uc2VydmljZS1zaG93Y2FzZV9fY2FyZC0taGlnaGxpZ2h0IC5zZXJ2aWNlLXNob3djYXNlX19pY29uIHN2ZyB7XG4gIGZpbGw6IHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpKTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFBXQSBBbmltYXRpb24gSW50ZWdyYXRpb25cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIFNlY3Rpb24tbGV2ZWwgYW5pbWF0aW9uICovXG4uc2VydmljZS1zaG93Y2FzZS5wd2Etc2Nyb2xsLXNlY3Rpb24ge1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkodmFyKC0tcHdhLXNlY3Rpb24tZGlzdGFuY2UpKTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS1wd2Etc2VjdGlvbi1kdXJhdGlvbikgdmFyKC0tZWFzZS1zbW9vdGgpLFxuICAgICAgICAgICAgICB0cmFuc2Zvcm0gdmFyKC0tcHdhLXNlY3Rpb24tZHVyYXRpb24pIHZhcigtLWVhc2Utc21vb3RoKTtcbn1cblxuLnNlcnZpY2Utc2hvd2Nhc2UucHdhLXNjcm9sbC1zZWN0aW9uLmFuaW1hdGUge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG59XG5cbi8qIENhcmQgc3RhZ2dlciBhbmltYXRpb25zICovXG4uc2VydmljZS1zaG93Y2FzZV9fY2FyZC5wd2Etc2Nyb2xsLWZhZGUge1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkodmFyKC0tcHdhLXNjcm9sbC1kaXN0YW5jZSkpO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLXB3YS1zY3JvbGwtZHVyYXRpb24pIHZhcigtLWVhc2Utc21vb3RoKSxcbiAgICAgICAgICAgICAgdHJhbnNmb3JtIHZhcigtLXB3YS1zY3JvbGwtZHVyYXRpb24pIHZhcigtLWVhc2Utc21vb3RoKTtcbiAgdHJhbnNpdGlvbi1kZWxheTogY2FsYyh2YXIoLS1zdGFnZ2VyLWluZGV4LCAwKSAqIHZhcigtLXB3YS1zdGFnZ2VyLWRlbGF5KSk7XG59XG5cbi5zZXJ2aWNlLXNob3djYXNlX19jYXJkLnB3YS1zY3JvbGwtZmFkZS5hbmltYXRlIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgUmVzcG9uc2l2ZSBEZXNpZ25cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIFRhYmxldDogNzY4cHggLSAxMDIzcHggKi9cbkBtZWRpYSAobWF4LXdpZHRoOiAxMDIzcHgpIHtcbiAgLnNlcnZpY2Utc2hvd2Nhc2VfX2dyaWQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gICAgZ2FwOiB2YXIoLS1zcGFjaW5nLW1kKTtcbiAgfVxuXG4gIC5zZXJ2aWNlLXNob3djYXNlX19ncmlkLS13aWRlIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpO1xuICB9XG5cbiAgLnNlcnZpY2Utc2hvd2Nhc2UtY29udGFpbmVyIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLWxnKSB2YXIoLS1zcGFjaW5nLW1kKTtcbiAgfVxufVxuXG4vKiBNb2JpbGU6IDwgNzY4cHggKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAuc2VydmljZS1zaG93Y2FzZV9fZ3JpZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgZ2FwOiB2YXIoLS1zcGFjaW5nLW1kKTtcbiAgfVxuXG4gIC5zZXJ2aWNlLXNob3djYXNlX19ncmlkLS13aWRlIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgfVxuXG4gIC5zZXJ2aWNlLXNob3djYXNlLWNvbnRhaW5lciB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1sZykgdmFyKC0tc3BhY2luZy1zbSk7XG4gIH1cblxuICAuc2VydmljZS1zaG93Y2FzZV9faGVhZGVyIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLWxnKTtcbiAgfVxuXG4gIC5zZXJ2aWNlLXNob3djYXNlX19jYXJkIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLW1kKTtcbiAgfVxuXG4gIC5zZXJ2aWNlLXNob3djYXNlX19pY29uIHtcbiAgICB3aWR0aDogNTZweDtcbiAgICBoZWlnaHQ6IDU2cHg7XG4gIH1cblxuICAuc2VydmljZS1zaG93Y2FzZV9faWNvbiBzdmcge1xuICAgIHdpZHRoOiA0MHB4O1xuICAgIGhlaWdodDogNDBweDtcbiAgfVxuXG4gIC8qIFRvdWNoIG9wdGltaXphdGlvbiAqL1xuICAuc2VydmljZS1zaG93Y2FzZV9fY2FyZCB7XG4gICAgbWluLWhlaWdodDogMTIwcHg7XG4gICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgfVxuXG4gIC5zZXJ2aWNlLXNob3djYXNlX19jYXJkOmFjdGl2ZSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjk4KTtcbiAgfVxuXG4gIC8qIEhpZGUgaG92ZXIgZWZmZWN0cyBvbiBtb2JpbGUgKi9cbiAgLnNlcnZpY2Utc2hvd2Nhc2VfX2NhcmQ6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjA4KTtcbiAgfVxuXG4gIC5zZXJ2aWNlLXNob3djYXNlX19jYXJkOmhvdmVyIC5zZXJ2aWNlLXNob3djYXNlX19pY29uIHN2ZyB7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG5cbiAgLyogQWx3YXlzIHNob3cgbGluayBpY29uIG9uIG1vYmlsZSBmb3IgYmV0dGVyIFVYICovXG4gIC5zZXJ2aWNlLXNob3djYXNlX19saW5rLWljb24ge1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIExheWVyIDM6IFBhZ2UgQ3VzdG9taXphdGlvblxuICAgVGhlbWUgYW5kIGNvbnRleHQtc3BlY2lmaWMgb3ZlcnJpZGVzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBUaGVtZTogQUkgTWlkZGxld2FyZSBwYWdlICovXG4udGhlbWUtYWktbWlkZGxld2FyZSAuc2VydmljZS1zaG93Y2FzZSB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgIHJnYih2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSkgMCUsXG4gICAgcmdiKHZhcigtLWNvbG9yLW11dGVkKSAvIDAuMDUpIDEwMCUpO1xufVxuXG4udGhlbWUtYWktbWlkZGxld2FyZSAuc2VydmljZS1zaG93Y2FzZV9faWNvbiBzdmcge1xuICBmaWxsOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSk7XG59XG5cbi8qIFRoZW1lOiBIZXJpdGFnZSBlbXBoYXNpcyAqL1xuLnRoZW1lLWhlcml0YWdlIC5zZXJ2aWNlLXNob3djYXNlX19jYXJkOm50aC1jaGlsZCgxKSB7XG4gIGJvcmRlci1jb2xvcjogcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkgLyAwLjMpO1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSAvIDAuMDUpO1xufVxuXG4udGhlbWUtaGVyaXRhZ2UgLnNlcnZpY2Utc2hvd2Nhc2VfX2NhcmQ6bnRoLWNoaWxkKDEpIC5zZXJ2aWNlLXNob3djYXNlX19pY29uIHN2ZyB7XG4gIGZpbGw6IHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpKTtcbn1cblxuLyogVGhlbWU6IERhcmsgbW9kZSAqL1xuLnRoZW1lLWRhcmsgLnNlcnZpY2Utc2hvd2Nhc2Uge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItYmFja2dyb3VuZCkpO1xufVxuXG4udGhlbWUtZGFyayAuc2VydmljZS1zaG93Y2FzZV9fY2FyZCB7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1jYXJkKSAvIDAuNSk7XG4gIGJvcmRlci1jb2xvcjogcmdiKHZhcigtLWNvbG9yLWJvcmRlcikgLyAwLjMpO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQWNjZXNzaWJpbGl0eVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogRm9jdXMgc3RhdGVzICovXG4uc2VydmljZS1zaG93Y2FzZV9fY2FyZDpmb2N1cy12aXNpYmxlIHtcbiAgb3V0bGluZTogM3B4IHNvbGlkIHJnYih2YXIoLS1jb2xvci1mb2N1cykpO1xuICBvdXRsaW5lLW9mZnNldDogMnB4O1xufVxuXG4vKiBSZWR1Y2VkIG1vdGlvbiAqL1xuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLnNlcnZpY2Utc2hvd2Nhc2VfX2NhcmQsXG4gIC5zZXJ2aWNlLXNob3djYXNlX19pY29uLFxuICAuc2VydmljZS1zaG93Y2FzZV9faWNvbiBzdmcsXG4gIC5zZXJ2aWNlLXNob3djYXNlX19saW5rLWljb24sXG4gIC5zZXJ2aWNlLXNob3djYXNlLnB3YS1zY3JvbGwtc2VjdGlvbixcbiAgLnNlcnZpY2Utc2hvd2Nhc2VfX2NhcmQucHdhLXNjcm9sbC1mYWRlIHtcbiAgICB0cmFuc2l0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gICAgYW5pbWF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gICAgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLyogSGlnaCBjb250cmFzdCBtb2RlICovXG5AbWVkaWEgKHByZWZlcnMtY29udHJhc3Q6IGhpZ2gpIHtcbiAgLnNlcnZpY2Utc2hvd2Nhc2VfX2NhcmQge1xuICAgIGJvcmRlci13aWR0aDogMnB4O1xuICB9XG5cbiAgLnNlcnZpY2Utc2hvd2Nhc2VfX2NhcmQ6aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogcmdiKHZhcigtLWNvbG9yLWZvcmVncm91bmQpKTtcbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgUGVyZm9ybWFuY2UgT3B0aW1pemF0aW9uc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogSGFyZHdhcmUgYWNjZWxlcmF0aW9uIGZvciBhbmltYXRpb25zICovXG4uc2VydmljZS1zaG93Y2FzZV9fY2FyZCB7XG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm0sIGJveC1zaGFkb3c7XG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApO1xufVxuXG4vKiBSZW1vdmUgd2lsbC1jaGFuZ2UgYWZ0ZXIgYW5pbWF0aW9uICovXG4uc2VydmljZS1zaG93Y2FzZV9fY2FyZC5hbmltYXRlIHtcbiAgd2lsbC1jaGFuZ2U6IGF1dG87XG59XG5cbi8qIE9wdGltaXplIGljb24gcmVuZGVyaW5nICovXG4uc2VydmljZS1zaG93Y2FzZV9faWNvbiBzdmcge1xuICBzaGFwZS1yZW5kZXJpbmc6IGdlb21ldHJpY1ByZWNpc2lvbjtcbn0iLCIvKipcbiAqIFNob3djYXNlIENvbXBvbmVudCBTdHlsZXMgLSBDb21wb25lbnQgRW5oYW5jZW1lbnQgTGF5ZXJcbiAqIFxuICogSU1QT1JUQU5UOiBUaGlzIGZpbGUgY29udGFpbnMgY29tcG9uZW50LXNwZWNpZmljIGVuaGFuY2VtZW50cyBvbmx5LlxuICogR2xvYmFsIHR5cG9ncmFwaHksIGNvbG9ycywgYW5kIHNwYWNpbmcgYXJlIGRlZmluZWQgaW4gc3JjL2luZGV4LmNzc1xuICogXG4gKiBUaHJlZS1MYXllciBDU1MgQXJjaGl0ZWN0dXJlOlxuICogMS4gQnJhbmQgRm91bmRhdGlvbiAoaW5kZXguY3NzKSAtIEdsb2JhbCB2YXJpYWJsZXMgYW5kIHR5cG9ncmFwaHlcbiAqIDIuIENvbXBvbmVudCBFbmhhbmNlbWVudCAodGhpcyBmaWxlKSAtIENvbXBvbmVudC1zcGVjaWZpYyBzdHlsZXNcbiAqIDMuIFBhZ2UgQ3VzdG9taXphdGlvbiAodmlhIHN0eWxlcyBwcm9wKSAtIFBhZ2UtbGV2ZWwgb3ZlcnJpZGVzXG4gKi9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBTSE9XQ0FTRSBJVEVNIC0gTUFJTiBDT05UQUlORVJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIFNob3djYXNlIEl0ZW0gQ29udGFpbmVyXG4gKiAtIEJhc2UgY29udGFpbmVyIGZvciBzaG93Y2FzZSBpdGVtc1xuICogLSBSZXR1cm5zIGRpdiwgbm90IHNlY3Rpb24gKFNlY3Rpb24gUGF0dGVybiBjb21wbGlhbmNlKVxuICogLSBTdXBwb3J0cyBncmlkIGFuZCBob3Jpem9udGFsIGxheW91dHNcbiAqL1xuLnNob3djYXNlLWl0ZW0ge1xuICAvKiBDb21wb25lbnQgc3RydWN0dXJlICovXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAxMDAlO1xuICBcbiAgLyogUGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uICovXG4gIGNvbnRhaW46IGxheW91dCBzdHlsZTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbn1cblxuLyogR3JpZCBsYXlvdXQgdmFyaWFudCAqL1xuLnNob3djYXNlLWl0ZW0tZ3JpZCB7XG4gIC8qIEdyaWQtc3BlY2lmaWMgYWRqdXN0bWVudHMgaWYgbmVlZGVkICovXG59XG5cbi8qIEhvcml6b250YWwgbGF5b3V0IHZhcmlhbnQgKi9cbi5zaG93Y2FzZS1pdGVtLWhvcml6b250YWwgLnNob3djYXNlLWNhcmQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgZ2FwOiB2YXIoLS1zcGFjZS04KTtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5zaG93Y2FzZS1pdGVtLWhvcml6b250YWwgLnNob3djYXNlLWNhcmQge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS02KTtcbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFNIT1dDQVNFIENBUkQgLSBDT05URU5UIENPTlRBSU5FUlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogU2hvd2Nhc2UgQ2FyZFxuICogLSBNYWluIGNvbnRlbnQgY29udGFpbmVyIHdpdGggYnJhbmQtY29tcGxpYW50IHN0eWxpbmdcbiAqIC0gVXNlcyBDU1MgdmFyaWFibGVzIGZvciBhbGwgdmFsdWVzXG4gKi9cbi5zaG93Y2FzZS1jYXJkIHtcbiAgLyogU3BhY2luZyB1c2luZyBDU1MgdmFyaWFibGVzICovXG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTgpO1xuICBtYXJnaW46IDA7XG4gIFxuICAvKiBCb3JkZXIgYW5kIHJhZGl1cyB1c2luZyB2YXJpYWJsZXMgKi9cbiAgYm9yZGVyOiAwO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICBcbiAgLyogQmFja2dyb3VuZCBhbmQgY29sb3JzICovXG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1jYXJkKSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkpO1xuICBcbiAgLyogU21vb3RoIHRyYW5zaXRpb25zICovXG4gIHRyYW5zaXRpb246IFxuICAgIGJhY2tncm91bmQtY29sb3IgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2Utc21vb3RoKSxcbiAgICBib3gtc2hhZG93IHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNlLXNtb290aCksXG4gICAgdHJhbnNmb3JtIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNlLXNtb290aCk7XG4gIFxuICAvKiBMYXlvdXQgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBcbiAgLyogU3VidGxlIHNoYWRvdyBmb3IgZGVwdGggKi9cbiAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG59XG5cbi8qIFNtYWxsIHNpemUgdmFyaWFudCAtIGNvbXBhY3QgZm9yIGdyaWQgbGF5b3V0cyAqL1xuLnNob3djYXNlLWNhcmQtc20ge1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS01KTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbn1cblxuLyogU21hbGwgY2FyZCB0aXRsZSBhbmQgdGV4dCBhZGp1c3RtZW50cyAqL1xuLnNob3djYXNlLWNhcmQtc20gLnNob3djYXNlLXRpdGxlIHtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbGcpO1xufVxuXG4uc2hvd2Nhc2UtY2FyZC1zbSAuc2hvd2Nhc2UtZGVzY3JpcHRpb24ge1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1iYXNlKTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbn1cblxuLyogU21hbGwgY2FyZCBoZWFkZXIgc3BhY2luZyAqL1xuLnNob3djYXNlLWNhcmQtc20gLnNob3djYXNlLWhlYWRlciB7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTQpO1xuICBnYXA6IHZhcigtLXNwYWNlLTMpO1xufVxuXG4vKiBTbWFsbCBjYXJkIGljb24gc2l6aW5nICovXG4uc2hvd2Nhc2UtY2FyZC1zbSAuc2hvd2Nhc2UtaWNvbiBzdmcge1xuICB3aWR0aDogMnJlbTtcbiAgaGVpZ2h0OiAycmVtO1xufVxuXG4vKiBMYXJnZSBzaXplIHZhcmlhbnQgLSBleHBhbnNpdmUgZm9yIGZlYXR1cmVkIGNvbnRlbnQgKi9cbi5zaG93Y2FzZS1jYXJkLWxnIHtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMTApO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMteGwpO1xufVxuXG4vKiBMYXJnZSBjYXJkIHRpdGxlIGFuZCB0ZXh0IGFkanVzdG1lbnRzICovXG4uc2hvd2Nhc2UtY2FyZC1sZyAuc2hvd2Nhc2UtdGl0bGUge1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS0yeGwpO1xufVxuXG4uc2hvd2Nhc2UtY2FyZC1sZyAuc2hvd2Nhc2UtZGVzY3JpcHRpb24ge1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1sZyk7XG4gIGxpbmUtaGVpZ2h0OiAxLjc7XG59XG5cbi8qIExhcmdlIGNhcmQgaGVhZGVyIHNwYWNpbmcgKi9cbi5zaG93Y2FzZS1jYXJkLWxnIC5zaG93Y2FzZS1oZWFkZXIge1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS04KTtcbiAgZ2FwOiB2YXIoLS1zcGFjZS02KTtcbn1cblxuLyogTGFyZ2UgY2FyZCBpY29uIHNpemluZyAqL1xuLnNob3djYXNlLWNhcmQtbGcgLnNob3djYXNlLWljb24gc3ZnIHtcbiAgd2lkdGg6IDMuNXJlbTtcbiAgaGVpZ2h0OiAzLjVyZW07XG59XG5cbi8qIEhvdmVyIHN0YXRlICovXG4uc2hvd2Nhc2UtY2FyZDpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1jYXJkLWhvdmVyKSk7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjA4KTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xufVxuXG4vKiBBY3RpdmUgc3RhdGUgKi9cbi5zaG93Y2FzZS1jYXJkOmFjdGl2ZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbiAgYm94LXNoYWRvdzogMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wNCk7XG59XG5cbi8qIE1vYmlsZSBhZGp1c3RtZW50cyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5zaG93Y2FzZS1jYXJkIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS02KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICB9XG4gIFxuICAvKiBTaXplIHZhcmlhbnQgYWRqdXN0bWVudHMgZm9yIG1vYmlsZSAqL1xuICAuc2hvd2Nhc2UtY2FyZC1zbSB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtNCk7XG4gIH1cbiAgXG4gIC5zaG93Y2FzZS1jYXJkLWxnIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS03KTtcbiAgfVxuICBcbiAgLyogSGVyaXRhZ2UgY2FyZCBwYWRkaW5nIGFkanVzdG1lbnQgZm9yIG1vYmlsZSAqL1xuICAuc2hvd2Nhc2UtaXRlbS1oZXJpdGFnZSAuc2hvd2Nhc2UtY2FyZCxcbiAgLnNob3djYXNlLWNhcmQtaGVyaXRhZ2Uge1xuICAgIHBhZGRpbmctbGVmdDogY2FsYyh2YXIoLS1zcGFjZS02KSArIHZhcigtLXNwYWNlLTEpKTtcbiAgfVxuICBcbiAgLnNob3djYXNlLWl0ZW0taGVyaXRhZ2UgLnNob3djYXNlLWNhcmQtc20sXG4gIC5zaG93Y2FzZS1jYXJkLWhlcml0YWdlLnNob3djYXNlLWNhcmQtc20ge1xuICAgIHBhZGRpbmctbGVmdDogY2FsYyh2YXIoLS1zcGFjZS00KSArIHZhcigtLXNwYWNlLTEpKTtcbiAgfVxuICBcbiAgLnNob3djYXNlLWl0ZW0taGVyaXRhZ2UgLnNob3djYXNlLWNhcmQtbGcsXG4gIC5zaG93Y2FzZS1jYXJkLWhlcml0YWdlLnNob3djYXNlLWNhcmQtbGcge1xuICAgIHBhZGRpbmctbGVmdDogY2FsYyh2YXIoLS1zcGFjZS03KSArIHZhcigtLXNwYWNlLTEpKTtcbiAgfVxufVxuXG4vKiBUYWJsZXQgYWRqdXN0bWVudHMgKi9cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDEwMjNweCkge1xuICAuc2hvd2Nhc2UtY2FyZCB7XG4gICAgcGFkZGluZzogY2FsYyh2YXIoLS1zcGFjZS02KSAqIDEuMjUpO1xuICB9XG4gIFxuICAvKiBIZXJpdGFnZSBjYXJkIHBhZGRpbmcgYWRqdXN0bWVudCBmb3IgdGFibGV0ICovXG4gIC5zaG93Y2FzZS1pdGVtLWhlcml0YWdlIC5zaG93Y2FzZS1jYXJkLFxuICAuc2hvd2Nhc2UtY2FyZC1oZXJpdGFnZSB7XG4gICAgcGFkZGluZy1sZWZ0OiBjYWxjKHZhcigtLXNwYWNlLTYpICogMS4yNSArIHZhcigtLXNwYWNlLTEpKTtcbiAgfVxufVxuXG4vKiBEZXNrdG9wIGVuaGFuY2VtZW50cyAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAuc2hvd2Nhc2UtY2FyZCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtOCk7XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBIRVJJVEFHRSBWQVJJQU5UIC0gMTAlIFJVTEUgQ09NUExJQU5DRVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogSGVyaXRhZ2UgVmFyaWFudCBDb250YWluZXJcbiAqIC0gQ29udGFpbmVyIGhhcyBOTyBleHRlcm5hbCBtYXJnaW4gKGFsaWducyB3aXRoIHJlZ3VsYXIgY29udGFpbmVycylcbiAqIC0gT25seSB0aGUgY2FyZCBnZXRzIGhlcml0YWdlIHN0eWxpbmdcbiAqL1xuLnNob3djYXNlLWl0ZW0taGVyaXRhZ2Uge1xuICAvKiBOTyBleHRlcm5hbCBtYXJnaW4gLSBjb250YWluZXJzIGFsaWduIGF0IHRoZSB0b3AgKi9cbiAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG59XG5cbi8qKlxuICogSGVyaXRhZ2UgVmFyaWFudCBDYXJkXG4gKiAtIE9ubHkgYWRkcyBoZXJpdGFnZSBib3JkZXIgYWNjZW50XG4gKiAtIEFsbCBvdGhlciBzdHlsaW5nIGluaGVyaXRlZCBmcm9tIGJhc2UgLnNob3djYXNlLWNhcmRcbiAqL1xuLnNob3djYXNlLWl0ZW0taGVyaXRhZ2UgLnNob3djYXNlLWNhcmQsXG4uc2hvd2Nhc2UtY2FyZC1oZXJpdGFnZSB7XG4gIC8qIEhlcml0YWdlIGFjY2VudCB1c2luZyBzaGFkb3cgZm9yIGxlZnQgYm9yZGVyICovXG4gIC8qIEFkZHMgNHB4IGluc2V0IHNoYWRvdyBvbiBsZWZ0IHNpZGUgd2l0aCBoZXJpdGFnZSByZWQgY29sb3IgKi9cbiAgYm94LXNoYWRvdzogaW5zZXQgNHB4IDAgMCAwIHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpKSwgMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG4gIFxuICAvKiBTbGlnaHQgcGFkZGluZyBhZGp1c3RtZW50IGZvciB2aXN1YWwgYm9yZGVyIGNvbXBlbnNhdGlvbiAqL1xuICBwYWRkaW5nLWxlZnQ6IGNhbGModmFyKC0tc3BhY2UtOCkgKyB2YXIoLS1zcGFjZS0xKSk7XG59XG5cbi8qIEhlcml0YWdlIHdpdGggc21hbGwgc2l6ZSAqL1xuLnNob3djYXNlLWl0ZW0taGVyaXRhZ2UgLnNob3djYXNlLWNhcmQtc20sXG4uc2hvd2Nhc2UtY2FyZC1oZXJpdGFnZS5zaG93Y2FzZS1jYXJkLXNtIHtcbiAgcGFkZGluZy1sZWZ0OiBjYWxjKHZhcigtLXNwYWNlLTUpICsgdmFyKC0tc3BhY2UtMSkpO1xufVxuXG4vKiBIZXJpdGFnZSB3aXRoIGxhcmdlIHNpemUgKi9cbi5zaG93Y2FzZS1pdGVtLWhlcml0YWdlIC5zaG93Y2FzZS1jYXJkLWxnLFxuLnNob3djYXNlLWNhcmQtaGVyaXRhZ2Uuc2hvd2Nhc2UtY2FyZC1sZyB7XG4gIHBhZGRpbmctbGVmdDogY2FsYyh2YXIoLS1zcGFjZS0xMCkgKyB2YXIoLS1zcGFjZS0xKSk7XG59XG5cbi8qIEhlcml0YWdlIENUQSBidXR0b24gc3R5bGluZyAqL1xuLnNob3djYXNlLWN0YS1oZXJpdGFnZSB7XG4gIC8qIEVuc3VyZSBwcm9wZXIgaGVyaXRhZ2Ugc3R5bGluZyAqL1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSk7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgbWluLWhlaWdodDogNDhweDtcbiAgXG4gIC8qIFN0YW5kYXJkIHBhZGRpbmcgLSBubyBleHRyYSBzcGFjaW5nICovXG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTMpIHZhcigtLXNwYWNlLTYpO1xuICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS00KTtcbn1cblxuLnNob3djYXNlLWN0YS1oZXJpdGFnZTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UtZGFyaykpO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1oZXJpdGFnZSk7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgU0hPV0NBU0UgSEVBREVSIC0gSUNPTiBBTkQgVElUTEUgU0VDVElPTlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5zaG93Y2FzZS1oZWFkZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBnYXA6IHZhcigtLXNwYWNlLTQpO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS02KTtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi8qIExlZnQgc2lkZSBvZiBoZWFkZXIgLSBpY29uIGFuZCBkZXRhaWxzICovXG4uc2hvd2Nhc2UtaGVhZGVyLWxlZnQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgZ2FwOiB2YXIoLS1zcGFjZS00KTtcbiAgZmxleDogMTtcbiAgbWluLXdpZHRoOiAwOyAvKiBBbGxvdyB0ZXh0IHRydW5jYXRpb24gKi9cbn1cblxuLyogSWNvbiBzdHlsaW5nIC0gaGFuZGxlZCBieSBicmFuZGVkIGNvbnRhaW5lciBzeXN0ZW0gKi9cbi5zaG93Y2FzZS1pY29uIHtcbiAgLyogQWRkaXRpb25hbCBpY29uIGFkanVzdG1lbnRzIGlmIG5lZWRlZCAqL1xuICBmbGV4LXNocmluazogMDtcbn1cblxuLyogSXRlbSBkZXRhaWxzIGNvbnRhaW5lciAqL1xuLnNob3djYXNlLWl0ZW0tZGV0YWlscyB7XG4gIGZsZXg6IDE7XG4gIG1pbi13aWR0aDogMDsgLyogUHJldmVudCB0ZXh0IG92ZXJmbG93ICovXG59XG5cbi8qIFRpdGxlIC0gdXNlcyBnbG9iYWwgdGl0bGUtY2FyZCBjbGFzcyAqL1xuLnNob3djYXNlLXRpdGxlIHtcbiAgLyogQ29tcG9uZW50IGVuaGFuY2VtZW50IG9ubHkgKi9cbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMik7XG59XG5cbi8qIFRhZ2xpbmUgLSB1c2VzIGdsb2JhbCBkZXNjcmlwdGlvbiBjbGFzcyAqL1xuLnNob3djYXNlLXRhZ2xpbmUge1xuICAvKiBDb21wb25lbnQgZW5oYW5jZW1lbnQgb25seSAqL1xuICBtYXJnaW46IDA7XG4gIG9wYWNpdHk6IDAuOTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBTSE9XQ0FTRSBDT05URU5UIFNFQ1RJT05TXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogTWFpbiBjb250ZW50IGNvbnRhaW5lciAqL1xuLnNob3djYXNlLWl0ZW0tY29udGVudCB7XG4gIC8qIENvbnRlbnQgc3BhY2luZyAqL1xuICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS00KTtcbn1cblxuLyogSGVhZGxpbmUgKi9cbi5zaG93Y2FzZS1oZWFkbGluZSB7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTMpO1xufVxuXG4vKiBEZXNjcmlwdGlvbiAtIHVzZXMgZ2xvYmFsIGRlc2NyaXB0aW9uIGNsYXNzICovXG4uc2hvd2Nhc2UtZGVzY3JpcHRpb24ge1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbiAgbGluZS1oZWlnaHQ6IDEuNjtcbn1cblxuLyogUHJpY2luZyBzZWN0aW9uIHJlbW92ZWQgLSBubyBsb25nZXIgc3VwcG9ydGVkICovXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgU1RBVFMgU0VDVElPTiAtIE5vdyB1c2VzIE1ldHJpY3NDYXJkIGNvbXBvbmVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5zaG93Y2FzZS1zdGF0cyB7XG4gIG1hcmdpbjogdmFyKC0tc3BhY2UtNikgMDtcbn1cblxuLyogQ2VudGVyZWQgY29udGFpbmVyIGZvciBzdGF0cyAqL1xuLnNob3djYXNlLXN0YXRzLWNlbnRlcmVkIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4vKiBIb3Jpem9udGFsIDN4MSBncmlkIGxheW91dCBmb3IgbWV0cmljcyAqL1xuLnNob3djYXNlLXN0YXRzLWdyaWQtaG9yaXpvbnRhbCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgxNTBweCwgMjAwcHgpKTtcbiAgZ2FwOiB2YXIoLS1zcGFjZS02KTtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIG1heC13aWR0aDogNzAwcHg7XG4gIG1hcmdpbjogMCBhdXRvO1xufVxuXG4vKiBTbWFsbCBjYXJkIHN0YXRzIGdyaWQgLSBjb21wYWN0IGNvbHVtbnMgKi9cbi5zaG93Y2FzZS1jYXJkLXNtIC5zaG93Y2FzZS1zdGF0cy1ncmlkLWhvcml6b250YWwge1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMTAwcHgsIDE1MHB4KSk7XG4gIGdhcDogdmFyKC0tc3BhY2UtNCk7XG4gIG1heC13aWR0aDogNTAwcHg7XG59XG5cbi8qIExhcmdlIGNhcmQgc3RhdHMgZ3JpZCAtIGV4cGFuZGVkIGNvbHVtbnMgKi9cbi5zaG93Y2FzZS1jYXJkLWxnIC5zaG93Y2FzZS1zdGF0cy1ncmlkLWhvcml6b250YWwge1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMTgwcHgsIDI1MHB4KSk7XG4gIGdhcDogdmFyKC0tc3BhY2UtOCk7XG4gIG1heC13aWR0aDogOTAwcHg7XG59XG5cbi8qIExlZ2FjeSBncmlkIGxheW91dCAoa2VlcGluZyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSkgKi9cbi5zaG93Y2FzZS1zdGF0cy1ncmlkIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyMDBweCwgMWZyKSk7XG4gIGdhcDogdmFyKC0tc3BhY2UtNCk7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAuc2hvd2Nhc2Utc3RhdHMtZ3JpZC1ob3Jpem9udGFsIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTQpO1xuICB9XG4gIFxuICAuc2hvd2Nhc2Utc3RhdHMtZ3JpZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS0zKTtcbiAgfVxufVxuXG4vKiBNZXRyaWNzQ2FyZCBjb21wb25lbnRzIGhhbmRsZSB0aGVpciBvd24gaW50ZXJuYWwgc3R5bGluZyAqL1xuLyogT2xkIHN0YXQtc3BlY2lmaWMgY2xhc3NlcyByZW1vdmVkIGluIGZhdm9yIG9mIE1ldHJpY3NDYXJkICovXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQkVORUZJVFMgU0VDVElPTlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5zaG93Y2FzZS1iZW5lZml0cyB7XG4gIG1hcmdpbjogdmFyKC0tc3BhY2UtNikgMDtcbn1cblxuLnNob3djYXNlLWJlbmVmaXRzLXRpdGxlIHtcbiAgLyogVXNlcyB0aXRsZS1jYXJkIGdsb2JhbCBjbGFzcyAqL1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0zKTtcbn1cblxuLnNob3djYXNlLWJlbmVmaXRzLWxpc3Qge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdhcDogdmFyKC0tc3BhY2UtMik7XG59XG5cbi5zaG93Y2FzZS1iZW5lZml0IHtcbiAgLyogVXNlcyBkZXNjcmlwdGlvbiBnbG9iYWwgY2xhc3MgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nLWxlZnQ6IHZhcigtLXNwYWNlLTYpO1xufVxuXG4uc2hvd2Nhc2UtYmVuZWZpdDo6YmVmb3JlIHtcbiAgY29udGVudDogXCLinJNcIjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3Itc3VjY2VzcykpO1xuICBmb250LXdlaWdodDogNjAwO1xuICBmb250LXNpemU6IDEuMjVlbTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBGT09URVIgU0VDVElPTlNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uc2hvd2Nhc2UtZm9vdGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBnYXA6IHZhcigtLXNwYWNlLTYpO1xuICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS02KTtcbiAgcGFkZGluZy10b3A6IHZhcigtLXNwYWNlLTYpO1xuICBib3JkZXItdG9wOiAwO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLnNob3djYXNlLWZvb3RlciB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTQpO1xuICB9XG59XG5cbi5zaG93Y2FzZS1hdWRpZW5jZSB7XG4gIGZsZXg6IDE7XG59XG5cbi5zaG93Y2FzZS1hdWRpZW5jZS1sYWJlbCB7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTEpO1xuICBvcGFjaXR5OiAwLjg7XG59XG5cbi5zaG93Y2FzZS1hdWRpZW5jZS10ZXh0IHtcbiAgLyogVXNlcyBkZXNjcmlwdGlvbiBnbG9iYWwgY2xhc3MgKi9cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBDVEEgU0VDVElPTlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5zaG93Y2FzZS1jdGEge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0yKTtcbiAgXG4gIC8qIERlZmF1bHQgQ1RBIHN0eWxpbmcgKi9cbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgXG4gIC8qIFRvdWNoIHRhcmdldCBvcHRpbWl6YXRpb24gKi9cbiAgbWluLWhlaWdodDogNDhweDtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMykgdmFyKC0tc3BhY2UtNCk7XG4gIFxuICAvKiBUcmFuc2l0aW9ucyAqL1xuICB0cmFuc2l0aW9uOiBcbiAgICBjb2xvciB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpLFxuICAgIHRyYW5zZm9ybSB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpO1xuICBcbiAgLyogUG9zaXRpb25pbmcgKi9cbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi8qIFNtYWxsIGNhcmQgQ1RBIGFkanVzdG1lbnRzICovXG4uc2hvd2Nhc2UtY2FyZC1zbSAuc2hvd2Nhc2UtY3RhIHtcbiAgbWluLWhlaWdodDogNDRweDtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMikgdmFyKC0tc3BhY2UtMyk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJhc2UpO1xufVxuXG4vKiBMYXJnZSBjYXJkIENUQSBhZGp1c3RtZW50cyAqL1xuLnNob3djYXNlLWNhcmQtbGcgLnNob3djYXNlLWN0YSB7XG4gIG1pbi1oZWlnaHQ6IDUycHg7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTQpIHZhcigtLXNwYWNlLTUpO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1sZyk7XG59XG5cbi5zaG93Y2FzZS1jdGE6aG92ZXIge1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnktZGFyaykpO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNHB4KTtcbn1cblxuLyogQ1RBIGljb24gaGFuZGxlZCBieSBicmFuZGVkIGNvbnRhaW5lciAqL1xuLnNob3djYXNlLWN0YS1pY29uIHtcbiAgLyogU21vb3RoIHRyYW5zaXRpb24gZm9yIGhvdmVyIGVmZmVjdHMgKi9cbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNlLXNtb290aCk7XG4gIC8qIEVuc3VyZSBwcm9wZXIgdmVydGljYWwgYWxpZ25tZW50IHdpdGggZmxleGJveCBwYXJlbnQgKi9cbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLyogVGhyZWUtTGF5ZXIgQXJjaGl0ZWN0dXJlOiBDb21wb25lbnQgRW5oYW5jZW1lbnQgTGF5ZXIgT3ZlcnJpZGUgKi9cbi8qIEVuc3VyZSBpY29uLXNtIGNsYXNzIGRvZXNuJ3QgYXBwbHkgY29udGFpbmVyIHN0eWxlcyBmcm9tIEJyYW5kIEZvdW5kYXRpb24gTGF5ZXIgKi9cbi5zaG93Y2FzZS1jdGEtaWNvbi5pY29uLXNtIHtcbiAgLyogT3ZlcnJpZGUgYW55IGNvbnRhaW5lciBzdHlsZXMgZnJvbSBpbmRleC5jc3MgKi9cbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICAvKiBNYWludGFpbiBwcm9wZXIgaWNvbiBzaXppbmcgKi9cbiAgd2lkdGg6IDEuMjVyZW07ICAvKiAyMHB4IC0gaWNvbiBzaXplLCBub3QgY29udGFpbmVyIHNpemUgKi9cbiAgaGVpZ2h0OiAxLjI1cmVtO1xuICAvKiBFbnN1cmUgbm8gZmxleCBjb250YWluZXIgYmVoYXZpb3IgKi9cbiAgYWxpZ24taXRlbXM6IGluaXRpYWw7XG4gIGp1c3RpZnktY29udGVudDogaW5pdGlhbDtcbiAgLyogQWxpZ24gd2l0aCB0ZXh0IGJhc2VsaW5lICovXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5zaG93Y2FzZS1jdGE6aG92ZXIgLnNob3djYXNlLWN0YS1pY29uIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDRweCk7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgUkVTUE9OU0lWRSBBREpVU1RNRU5UU1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIE1vYmlsZS1maXJzdCByZXNwb25zaXZlIGRlc2lnbiAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5zaG93Y2FzZS1pdGVtIHtcbiAgICAvKiBNb2JpbGUgb3B0aW1pemF0aW9ucyAqL1xuICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgfVxuICBcbiAgLnNob3djYXNlLWhlYWRlciB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTQpO1xuICB9XG4gIFxuICAuc2hvd2Nhc2UtaGVhZGVyLWxlZnQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS0zKTtcbiAgfVxuICBcbiAgLyogUHJpY2luZyByZW1vdmVkIC0gbm8gbG9uZ2VyIHN1cHBvcnRlZCAqL1xuICBcbiAgLnNob3djYXNlLWN0YSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIH1cbn1cblxuLyogVGFibGV0IGFkanVzdG1lbnRzICovXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiAxMDIzcHgpIHtcbiAgLnNob3djYXNlLWl0ZW0ge1xuICAgIC8qIFRhYmxldCBvcHRpbWl6YXRpb25zICovXG4gIH1cbn1cblxuLyogRGVza3RvcCBlbmhhbmNlbWVudHMgKi9cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLnNob3djYXNlLWl0ZW0ge1xuICAgIC8qIERlc2t0b3Agb3B0aW1pemF0aW9ucyAqL1xuICB9XG4gIFxuICAvKiBNYXggd2lkdGggZm9yIHJlYWRhYmlsaXR5ICovXG4gIC5zaG93Y2FzZS1jYXJkIHtcbiAgICBtYXgtd2lkdGg6IDEyMDBweDtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIH1cbn1cblxuLyogSGlnaC1yZXNvbHV0aW9uIGRpc3BsYXlzICovXG5AbWVkaWEgKG1pbi13aWR0aDogMTkyMHB4KSB7XG4gIC5zaG93Y2FzZS1jYXJkIHtcbiAgICBtYXgtd2lkdGg6IDE0MDBweDtcbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFBFUkZPUk1BTkNFIE9QVElNSVpBVElPTlNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBIYXJkd2FyZSBhY2NlbGVyYXRpb24gZm9yIGFuaW1hdGlvbnMgKi9cbi5zaG93Y2FzZS1pdGVtLFxuLnNob3djYXNlLWNhcmQge1xuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xufVxuXG4uc2hvd2Nhc2UtaXRlbTpub3QoOmhvdmVyKSxcbi5zaG93Y2FzZS1jYXJkOm5vdCg6aG92ZXIpIHtcbiAgd2lsbC1jaGFuZ2U6IGF1dG87XG59XG5cbi8qIFJlZHVjZSBtb3Rpb24gZm9yIGFjY2Vzc2liaWxpdHkgKi9cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gIC5zaG93Y2FzZS1pdGVtLFxuICAuc2hvd2Nhc2UtY2FyZCxcbiAgLnNob3djYXNlLWN0YSxcbiAgLnNob3djYXNlLWN0YS1pY29uIHtcbiAgICB0cmFuc2l0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gICAgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLyogSGlnaCBjb250cmFzdCBtb2RlIHN1cHBvcnQgKi9cbkBtZWRpYSAocHJlZmVycy1jb250cmFzdDogaGlnaCkge1xuICAuc2hvd2Nhc2UtY2FyZCB7XG4gICAgb3V0bGluZTogMnB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgfVxuICBcbiAgLnNob3djYXNlLWl0ZW0taGVyaXRhZ2UgLnNob3djYXNlLWNhcmQge1xuICAgIG91dGxpbmUtd2lkdGg6IDNweDtcbiAgfVxuICBcbiAgLnNob3djYXNlLWN0YS1oZXJpdGFnZSB7XG4gICAgYm9yZGVyOiAycHggc29saWQgY3VycmVudENvbG9yO1xuICB9XG59IiwiLyogU29sdXRpb24gTGlzdGluZyAtIEVudGVycHJpc2UgQjJCIEltcGxlbWVudGF0aW9uICovXG5cbi8qIEVudGVycHJpc2Ugc29sdXRpb24gY2FyZHMgKi9cbi5zb2x1dGlvbi1jYXJkIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItYmFja2dyb3VuZCkpO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNvbG9yLWJvcmRlciksIDAuMik7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTgpO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGltaW5nLWZhc3QpIGVhc2Utb3V0O1xufVxuXG4uc29sdXRpb24tY2FyZDpob3ZlciB7XG4gIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5KSwgMC4zKTtcbiAgYm94LXNoYWRvdzogMCA4cHggMjVweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbn1cblxuLnNvbHV0aW9uLWhlYWRlciB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNik7XG59XG5cbi5zb2x1dGlvbi1oZWFkZXIgLnRpdGxlLWNhcmQge1xuICBtYXJnaW46IHZhcigtLXNwYWNlLTQpIDAgdmFyKC0tc3BhY2UtMikgMDtcbn1cblxuLnNvbHV0aW9uLWhlYWRlciAuc3VidGl0bGUtbGcge1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpKTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLyogU29sdXRpb24gYmVuZWZpdHMgKi9cbi5zb2x1dGlvbi1iZW5lZml0cyB7XG4gIG1hcmdpbjogdmFyKC0tc3BhY2UtNikgMDtcbn1cblxuLmJlbmVmaXQtbGlzdCB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogdmFyKC0tc3BhY2UtNCkgMCAwIDA7XG59XG5cbi5iZW5lZml0LWl0ZW0ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0zKTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMyk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpIDA7XG59XG5cbi5iZW5lZml0LWl0ZW06bGFzdC1jaGlsZCB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi8qIFNvbHV0aW9uIG1ldHJpY3MgKi9cbi5zb2x1dGlvbi1tZXRyaWNzIHtcbiAgbWFyZ2luOiB2YXIoLS1zcGFjZS02KSAwO1xufVxuXG4ubWV0cmljcy1ncmlkIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gIGdhcDogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi5tZXRyaWMtaXRlbSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogdmFyKC0tc3BhY2UtMyk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTQpO1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnkpLCAwLjAyKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbn1cblxuLm1ldHJpYy1jb250ZW50IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0xKTtcbn1cblxuLm1ldHJpYy1jb250ZW50IC50aXRsZS1jYXJkIHtcbiAgbWFyZ2luOiAwO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbn1cblxuLm1ldHJpYy1jb250ZW50IC5kZXNjcmlwdGlvbiB7XG4gIG1hcmdpbjogMDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxuLyogU29sdXRpb24gbWF0cml4IGxheW91dCAqL1xuLnNvbHV0aW9uLW1hdHJpeCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICBnYXA6IHZhcigtLXNwYWNlLTgpO1xuICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS04KTtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5zb2x1dGlvbi1tYXRyaXgge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gIH1cbn1cblxuLyogSGVybyBzdGF0cyBsYXlvdXQgKi9cbi5oZXJvLXN0YXRzIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyMDBweCwgMWZyKSk7XG4gIGdhcDogdmFyKC0tc3BhY2UtNik7XG4gIG1hcmdpbjogdmFyKC0tc3BhY2UtOCkgMDtcbn1cblxuLnN0YXQtaXRlbSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0yKTtcbn1cblxuLnN0YXQtaXRlbSAudGl0bGUtY2FyZCB7XG4gIG1hcmdpbjogMDtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1zdWNjZXNzKSk7XG59XG5cbi8qIEhlcm8gYWN0aW9ucyAqL1xuLmhlcm8tYWN0aW9ucyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogdmFyKC0tc3BhY2UtNCk7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTgpO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmhlcm8tYWN0aW9ucyB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxufVxuXG4vKiBDaGFsbGVuZ2UgY2FyZHMgKi9cbi5jaGFsbGVuZ2UtaGVhZGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBnYXA6IHZhcigtLXNwYWNlLTQpO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS02KTtcbn1cblxuLmNoYWxsZW5nZS1pbXBhY3Qge1xuICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS02KTtcbn1cblxuLmltcGFjdC1tZXRyaWMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IHZhcigtLXNwYWNlLTMpO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KTtcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jb2xvci13YXJuaW5nKSwgMC4wNSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gIGJvcmRlci1sZWZ0OiA0cHggc29saWQgcmdiKHZhcigtLWNvbG9yLXdhcm5pbmcpKTtcbn1cblxuLyogRkFRIGVudGVycHJpc2Ugc3R5bGluZyAqL1xuLmZhcS1lbnRlcnByaXNlIHtcbiAgbWF4LXdpZHRoOiA4MDBweDtcbiAgbWFyZ2luOiB2YXIoLS1zcGFjZS04KSBhdXRvIDA7XG59XG5cbi5mYXEtaXRlbSB7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY29sb3ItYm9yZGVyKSwgMC4yKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNCk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5mYXEtcXVlc3Rpb24ge1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS02KTtcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jb2xvci1tdXRlZCksIDAuMDIpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICBib3JkZXI6IG5vbmU7XG4gIHdpZHRoOiAxMDAlO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuXG4uZmFxLXF1ZXN0aW9uOjotd2Via2l0LWRldGFpbHMtbWFya2VyIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLnF1ZXN0aW9uLWNvbnRlbnQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGdhcDogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi5xdWVzdGlvbi1jb250ZW50IC5zdWJ0aXRsZS1sZyB7XG4gIG1hcmdpbjogMDtcbiAgZmxleDogMTtcbn1cblxuLmJhZGdlLWhlcml0YWdlIHtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpO1xuICBjb2xvcjogd2hpdGU7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtYWxsKTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMSkgdmFyKC0tc3BhY2UtMyk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5mYXEtY2hldnJvbiB7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10aW1pbmctZmFzdCkgZWFzZS1vdXQ7XG59XG5cbi5mYXEtaXRlbVtvcGVuXSAuZmFxLWNoZXZyb24ge1xuICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xufVxuXG4uZmFxLWFuc3dlciB7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTYpO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSh2YXIoLS1jb2xvci1ib3JkZXIpLCAwLjEpO1xufVxuXG4uZmFxLWFuc3dlciAuZGVzY3JpcHRpb24ge1xuICBtYXJnaW46IDA7XG4gIGxpbmUtaGVpZ2h0OiAxLjY7XG59XG5cbi8qIEZpbmFsIENUQSBlbnRlcnByaXNlICovXG4uZmluYWwtY3RhLWVudGVycHJpc2Uge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS04KTtcbiAgbWFyZ2luOiB2YXIoLS1zcGFjZS04KSAwO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuZmluYWwtY3RhLWVudGVycHJpc2Uge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcik7XG4gIH1cbn1cblxuLmN0YS1wcmltYXJ5LFxuLmN0YS1zZWNvbmRhcnksXG4uY3RhLXRlcnRpYXJ5IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS00KTtcbn1cblxuLmN0YS1kZXRhaWxzIHtcbiAgbWFyZ2luOiAwO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbWFsbCk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQtZm9yZWdyb3VuZCkpO1xuICBtYXgtd2lkdGg6IDI1MHB4O1xufVxuXG4vKiBFbnRlcnByaXNlIGFzc3VyYW5jZSBpdGVtcyAqL1xuLmN0YS1hc3N1cmFuY2Uge1xuICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS0xMik7XG59XG5cbi5hc3N1cmFuY2UtaXRlbXMge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS02KTtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtOCk7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuYXNzdXJhbmNlLWl0ZW1zIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpO1xuICB9XG59XG5cbi5hc3N1cmFuY2UtaXRlbSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBnYXA6IHZhcigtLXNwYWNlLTQpO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS02KTtcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jb2xvci1zdWNjZXNzKSwgMC4wMik7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY29sb3Itc3VjY2VzcyksIDAuMSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG59XG5cbi5hc3N1cmFuY2UtY29udGVudCAuc3VidGl0bGUtbGcge1xuICBtYXJnaW46IDAgMCB2YXIoLS1zcGFjZS0yKSAwO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXN1Y2Nlc3MpKTtcbn1cblxuLmFzc3VyYW5jZS1jb250ZW50IC5kZXNjcmlwdGlvbiB7XG4gIG1hcmdpbjogMDtcbn1cblxuLyogTW9iaWxlIG9wdGltaXphdGlvbnMgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAuc29sdXRpb24tY2FyZCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtNik7XG4gIH1cbiAgXG4gIC5oZXJvLXN0YXRzIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTQpO1xuICB9XG4gIFxuICAubWV0cmljcy1ncmlkIHtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTMpO1xuICB9XG4gIFxuICAubWV0cmljLWl0ZW0ge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTMpO1xuICB9XG4gIFxuICAuZmFxLXF1ZXN0aW9uIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KTtcbiAgfVxuICBcbiAgLmZhcS1hbnN3ZXIge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTQpO1xuICB9XG4gIFxuICAucXVlc3Rpb24tY29udGVudCB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTIpO1xuICB9XG4gIFxuICAuYmFkZ2UtaGVyaXRhZ2Uge1xuICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7XG4gIH1cbiAgXG4gIC5hc3N1cmFuY2UtaXRlbSB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtNCk7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cbn1cblxuLyogSGVyaXRhZ2UgcmVkIGNvbXBsaWFuY2UgZm9yIGVudGVycHJpc2UgQ1RBcyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC8qIE1vYmlsZTogTWF4aW11bSAxIGhlcml0YWdlIGVsZW1lbnQgcGVyIHZpZXdwb3J0ICovXG4gIC5idG4taGVyaXRhZ2Uge1xuICAgIG1hcmdpbjogdmFyKC0tc3BhY2UtOCkgYXV0bztcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogY2FsYygxMDAlIC0gdmFyKC0tc3BhY2UtOCkpO1xuICAgIG1heC13aWR0aDogMzIwcHg7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC8qIERlc2t0b3A6IE1heGltdW0gMiBoZXJpdGFnZSBlbGVtZW50cyBwZXIgdmlld3BvcnQgKi9cbiAgLmJ0bi1oZXJpdGFnZSB7XG4gICAgbWFyZ2luOiB2YXIoLS1zcGFjZS02KSBhdXRvO1xuICB9XG59XG5cbi8qIEV4dHJhIHNwYWNpbmcgYXJvdW5kIGhlcml0YWdlIHJlZCBlbGVtZW50cyAqL1xuLmJ0bi1oZXJpdGFnZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmJ0bi1oZXJpdGFnZTo6YmVmb3JlIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiBjYWxjKC0xICogdmFyKC0tc3BhY2UtNikpO1xuICBsZWZ0OiBjYWxjKC0xICogdmFyKC0tc3BhY2UtNikpO1xuICByaWdodDogY2FsYygtMSAqIHZhcigtLXNwYWNlLTYpKTtcbiAgYm90dG9tOiBjYWxjKC0xICogdmFyKC0tc3BhY2UtNikpO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn0iLCIvKiBTcGVjaWZpY2F0aW9uVGFibGUgQ29tcG9uZW50IFN0eWxlcyAqL1xuXG4uc3BlYy10YWJsZSB7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTgpO1xufVxuXG4uc3BlYy10YWJsZS10aXRsZSB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tdGV4dC14bCk7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItdGV4dC1wcmltYXJ5KSk7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTQpO1xufVxuXG4uc3BlYy10YWJsZS13cmFwcGVyIHtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWNhcmQpKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiKHZhcigtLWNvbG9yLWJvcmRlcikpO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uc3BlYy10YWJsZS1jb250ZW50IHtcbiAgd2lkdGg6IDEwMCU7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG59XG5cbi5zcGVjLXRhYmxlLXRoZWFkIHtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLXN1cmZhY2UpKTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYih2YXIoLS1jb2xvci1ib3JkZXIpKTtcbn1cblxuLnNwZWMtdGFibGUtaGVhZGVyLWNlbGwge1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0zKSB2YXIoLS1zcGFjZS00KTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgZm9udC1zaXplOiB2YXIoLS10ZXh0LXNtKTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci10ZXh0LXByaW1hcnkpKTtcbn1cblxuLnNwZWMtdGFibGUtdGJvZHkge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItY2FyZCkpO1xufVxuXG4uc3BlYy10YWJsZS1yb3cge1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiKHZhcigtLWNvbG9yLWJvcmRlcikpO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXRpbWluZy1mYXN0KTtcbn1cblxuLnNwZWMtdGFibGUtcm93Omxhc3QtY2hpbGQge1xuICBib3JkZXItYm90dG9tOiBub25lO1xufVxuXG4uc3BlYy10YWJsZS1yb3c6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnkpIC8gMC4wMik7XG59XG5cbi5zcGVjLXRhYmxlLWNlbGwge1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0zKSB2YXIoLS1zcGFjZS00KTtcbiAgZm9udC1zaXplOiB2YXIoLS10ZXh0LXNtKTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci10ZXh0LXNlY29uZGFyeSkpO1xuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuXG4vKiBOYW1lIGNlbGxzIHN0eWxpbmcgKi9cbi5zcGVjLXRhYmxlLW5hbWUtY2VsbCB7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LW1vbm8pO1xuICBmb250LXdlaWdodDogNTAwO1xuICBjb2xvcjogI2NkNWM1Yztcbn1cblxuLyogVHlwZSBjZWxscyBzdHlsaW5nICovXG4uc3BlYy10YWJsZS10eXBlLWNlbGwge1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1tb25vKTtcbiAgZm9udC1zaXplOiB2YXIoLS10ZXh0LXhzKTtcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5KSAvIDAuMDUpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5KSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpIHZhcigtLXNwYWNlLTMpO1xufVxuXG4vKiBSZXF1aXJlZC9PcHRpb25hbCBiYWRnZXMgKi9cbi5zcGVjLXRhYmxlLWJhZGdlIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTEpIHZhcigtLXNwYWNlLTIpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xuICBmb250LXNpemU6IHZhcigtLXRleHQteHMpO1xuICBmb250LXdlaWdodDogNTAwO1xufVxuXG4uc3BlYy10YWJsZS1yZXF1aXJlZCB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjIwLCAzOCwgMzgsIDAuMSk7XG4gIGNvbG9yOiByZ2IoMjIwLCAzOCwgMzgpO1xufVxuXG4uc3BlYy10YWJsZS1vcHRpb25hbCB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMTA3LCAxMTQsIDEyOCwgMC4xKTtcbiAgY29sb3I6IHJnYigxMDcsIDExNCwgMTI4KTtcbn1cblxuLyogRW1wdHkgc3RhdGUgKi9cbi5zcGVjLXRhYmxlLWVtcHR5IHtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtOCk7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLnNwZWMtdGFibGUtZW1wdHktbWVzc2FnZSB7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpKTtcbiAgZm9udC1zaXplOiB2YXIoLS10ZXh0LXNtKTtcbn1cblxuLyogVHlwZS1zcGVjaWZpYyBzdHlsaW5nICovXG4uc3BlYy10YWJsZS10eXBlLWlucHV0cyAuc3BlYy10YWJsZS1uYW1lLWNlbGwge1xuICBjb2xvcjogI2NkNWM1Yztcbn1cblxuLnNwZWMtdGFibGUtdHlwZS1vdXRwdXRzIC5zcGVjLXRhYmxlLW5hbWUtY2VsbCB7XG4gIGNvbG9yOiAjMjJjNTVlO1xufVxuXG4uc3BlYy10YWJsZS10eXBlLWNvbmZpZ3VyYXRpb24gLnNwZWMtdGFibGUtbmFtZS1jZWxsIHtcbiAgY29sb3I6ICMzYjgyZjY7XG59XG5cbi8qIE1vYmlsZSByZXNwb25zaXZlICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLnNwZWMtdGFibGUtbW9iaWxlIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS02KTtcbiAgfVxuICBcbiAgLnNwZWMtdGFibGUtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1sZyk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMyk7XG4gIH1cbiAgXG4gIC5zcGVjLXRhYmxlLXdyYXBwZXIge1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICB9XG4gIFxuICAuc3BlYy10YWJsZS1jb250ZW50IHtcbiAgICBtaW4td2lkdGg6IDUwMHB4O1xuICB9XG4gIFxuICAuc3BlYy10YWJsZS1oZWFkZXItY2VsbCxcbiAgLnNwZWMtdGFibGUtY2VsbCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtMikgdmFyKC0tc3BhY2UtMyk7XG4gICAgZm9udC1zaXplOiB2YXIoLS10ZXh0LXhzKTtcbiAgfVxuICBcbiAgLnNwZWMtdGFibGUtdHlwZS1jZWxsIHtcbiAgICBmb250LXNpemU6IDEwcHg7XG4gICAgcGFkZGluZzogMnB4IDZweDtcbiAgfVxuICBcbiAgLnNwZWMtdGFibGUtYmFkZ2Uge1xuICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICBwYWRkaW5nOiAycHggNHB4O1xuICB9XG59XG5cbi8qIERhcmsgbW9kZSBhZGp1c3RtZW50cyAqL1xuQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xuICAuc3BlYy10YWJsZS13cmFwcGVyIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItY2FyZC1kYXJrKSk7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItYm9yZGVyLWRhcmspKTtcbiAgfVxuICBcbiAgLnNwZWMtdGFibGUtdGhlYWQge1xuICAgIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1zdXJmYWNlLWRhcmspKTtcbiAgICBib3JkZXItY29sb3I6IHJnYih2YXIoLS1jb2xvci1ib3JkZXItZGFyaykpO1xuICB9XG4gIFxuICAuc3BlYy10YWJsZS1yb3cge1xuICAgIGJvcmRlci1jb2xvcjogcmdiKHZhcigtLWNvbG9yLWJvcmRlci1kYXJrKSk7XG4gIH1cbiAgXG4gIC5zcGVjLXRhYmxlLXJvdzpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5KSAvIDAuMDUpO1xuICB9XG4gIFxuICAuc3BlYy10YWJsZS10eXBlLWNlbGwge1xuICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeSkgLyAwLjEpO1xuICB9XG59XG5cbi8qIFNjcm9sbGJhciBzdHlsaW5nIGZvciB3aWRlIHRhYmxlcyAqL1xuLnNwZWMtdGFibGUtd3JhcHBlcjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICBoZWlnaHQ6IDhweDtcbiAgYmFja2dyb3VuZDogcmdiYSgxNDgsIDE2MywgMTg0LCAwLjEpO1xufVxuXG4uc3BlYy10YWJsZS13cmFwcGVyOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMTQ4LCAxNjMsIDE4NCwgMC4zKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbn1cblxuLnNwZWMtdGFibGUtd3JhcHBlcjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDE0OCwgMTYzLCAxODQsIDAuNSk7XG59IiwiLyoqXG4gKiBTdGlja3kgUHJpY2luZyBTZWxlY3RvciBDb21wb25lbnRcbiAqXG4gKiBGaXhlZCBib3R0b20gYmFyIGZvciBwcmljaW5nIHBhZ2UgbmF2aWdhdGlvbi5cbiAqIFVzZXMgQ1NTIHZhcmlhYmxlcyBmcm9tIHRoZSBkZXNpZ24gc3lzdGVtLlxuICovXG5cbi5zdGlja3ktcHJpY2luZy1zZWxlY3RvciB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3Itd2hpdGUsICNmZmZmZmYpO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiKHZhcigtLWNvbG9yLWJvcmRlciwgMjI2IDIzMiAyNDApKTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtNCwgMXJlbSk7XG4gIGRpc3BsYXk6IG5vbmU7IC8qIEhpZGRlbiBieSBkZWZhdWx0LCBzaG93biB2aWEgSmF2YVNjcmlwdCBvbiBzY3JvbGwgKi9cbiAgei1pbmRleDogdmFyKC0tei1zdGlja3ksIDEwMCk7XG59XG5cbi5zdGlja3ktcHJpY2luZy1zZWxlY3Rvci0tdmlzaWJsZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vKiBNb2JpbGUgcmVzcG9uc2l2ZW5lc3MgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAuc3RpY2t5LXByaWNpbmctc2VsZWN0b3Ige1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTMsIDAuNzVyZW0pO1xuICB9XG5cbiAgLnN0aWNreS1wcmljaW5nLXNlbGVjdG9yIC5mbGV4IHtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS0yLCAwLjVyZW0pO1xuICB9XG59XG4iLCIvKipcbiAqIFN0b3J5Q2FyZCBDb21wb25lbnQgU3R5bGVzXG4gKiBcbiAqIFRocmVlLUxheWVyIENTUyBBcmNoaXRlY3R1cmU6XG4gKiAtIExheWVyIDEgKEJyYW5kIEZvdW5kYXRpb24pOiBVc2VzIENTUyB2YXJpYWJsZXMgZnJvbSBzcmMvaW5kZXguY3NzXG4gKiAtIExheWVyIDIgKENvbXBvbmVudCBFbmhhbmNlbWVudCk6IFRoaXMgZmlsZSAtIGNvbXBvbmVudC1zcGVjaWZpYyBzdHlsZXNcbiAqIC0gTGF5ZXIgMyAoUGFnZSBDdXN0b21pemF0aW9uKTogT3ZlcnJpZGUgdmlhIHN0eWxlcyBwcm9wIGluIFJlYWN0IGNvbXBvbmVudHNcbiAqIFxuICogSGVyaXRhZ2UgUmVkIFVzYWdlOiBNYXhpbXVtIE9ORSByZWQgZWxlbWVudCBwZXIgY29tcG9uZW50ICgxMCUgcnVsZSBjb21wbGlhbmNlKVxuICogLSBBcHBsaWVkIG9ubHkgdG8gZmVhdHVyZWQgc3RvcnkgYWNjZW50IGJvcmRlclxuICogLSAyNS0zNSUgZXh0cmEgc3BhY2luZyBmb3IgaGVyaXRhZ2UgZWxlbWVudHNcbiAqL1xuXG4vKiBTdG9yeSBoZWFkZXIgbGF5b3V0IHdpdGhpbiBjYXJkcyAqL1xuLnN0b3J5LWhlYWRlciB7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTMpOyAvKiBSZWR1Y2VkIG1hcmdpbiBmb3IgY29tcGFjdCBkZXNpZ24gKi9cbn1cblxuLyogSW5kaXZpZHVhbCBzdG9yeSBjYXJkcyAtIE1vZGVybiBib3JkZXJsZXNzIGRlc2lnbiB3aXRoIGVsZXZhdGlvbiAqL1xuLnN0b3J5LWFydGljbGUge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItY2FyZCkpO1xuICBib3JkZXI6IDA7IC8qIENsZWFuLCBib3JkZXJsZXNzIGRlc2lnbiAqL1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjA1KTsgLyogU3VidGxlIGJhc2UgZWxldmF0aW9uICovXG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTUpIHZhcigtLXNwYWNlLTgpOyAvKiBPcHRpbWl6ZWQgcGFkZGluZyBmb3IgcmVjdGFuZ3VsYXIgbGF5b3V0ICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIC8qIEVxdWFsIGhlaWdodCBpbiBncmlkcyAtIG1hdGNoZXMgVGVzdGltb25pYWxDYXJkIGFwcHJvYWNoICovXG4gIGhlaWdodDogMTAwJTtcbiAgXG4gIC8qIFNtb290aCBob3ZlciBpbnRlcmFjdGlvbiBmb2xsb3dpbmcgc3R5bGluZyBzdGFuZGFyZCAqL1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2Utc21vb3RoKTtcbiAgY3Vyc29yOiBkZWZhdWx0O1xufVxuXG4uc3RvcnktYXJ0aWNsZTpob3ZlciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNHB4KTsgLyogTGlmdCBlZmZlY3QgKi9cbiAgYm94LXNoYWRvdzogMCA4cHggMjVweCByZ2JhKDAsIDAsIDAsIDAuMTIpOyAvKiBFbmhhbmNlZCBlbGV2YXRpb24gb24gaG92ZXIgKi9cbn1cblxuLnN0b3J5LWFydGljbGU6YWN0aXZlIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpOyAvKiBQcmVzc2VkIHN0YXRlICovXG4gIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMDgpOyAvKiBSZWR1Y2VkIGVsZXZhdGlvbiB3aGVuIHByZXNzZWQgKi9cbn1cblxuLyogRmVhdHVyZWQgc3Rvcnkgd2l0aCBoZXJpdGFnZSByZWQgYWNjZW50IC0gQm9yZGVybGVzcyBkZXNpZ24gKi9cbi5zdG9yeS1hcnRpY2xlLnN0b3J5LWZlYXR1cmVkIHtcbiAgLyogT05MWSBjb2xvciBjaGFuZ2VzIC0gTk8gc3RydWN0dXJhbCBjaGFuZ2VzIChmb2xsb3dpbmcgVGVzdGltb25pYWxDYXJkIHBhdHRlcm4pICovXG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSAvIDAuMDIpOyAvKiBTdWJ0bGUgaGVyaXRhZ2UgdGludCAqL1xuICBib3JkZXI6IDA7IC8qIE5vIGJvcmRlcnMgKi9cbiAgXG4gIC8qIEhlcml0YWdlIGFjY2VudCB1c2luZyBpbnNldCBzaGFkb3cgaW5zdGVhZCBvZiBib3JkZXIgKi9cbiAgYm94LXNoYWRvdzogXG4gICAgaW5zZXQgNHB4IDAgMCByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSksIC8qIExlZnQgYWNjZW50ICovXG4gICAgMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4wNSk7IC8qIEJhc2UgZWxldmF0aW9uICovXG59XG5cbi8qIEZlYXR1cmVkIHN0b3J5IGhvdmVyIC0gZW5oYW5jZWQgZWxldmF0aW9uICovXG4uc3RvcnktYXJ0aWNsZS5zdG9yeS1mZWF0dXJlZDpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSAvIDAuMDQpOyAvKiBEZWVwZXIgdGludCBvbiBob3ZlciAqL1xuICBcbiAgLyogSGVyaXRhZ2UgYWNjZW50IHdpdGggaW5jcmVhc2VkIGVsZXZhdGlvbiAqL1xuICBib3gtc2hhZG93OiBcbiAgICBpbnNldCA0cHggMCAwIHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpKSxcbiAgICAwIDhweCAyNXB4IHJnYmEoMCwgMCwgMCwgMC4xMik7IC8qIFNhbWUgZWxldmF0aW9uIGFzIHJlZ3VsYXIgaG92ZXIgKi9cbn1cblxuLyogU3RvcnkgaW1hZ2UgaGFuZGxpbmcgKi9cbi5zdG9yeS1pbWFnZSB7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTYpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uc3RvcnktaW1hZ2UtaW1nIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMjAwcHg7XG4gIG9iamVjdC1maXQ6IGNvdmVyO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2Utc21vb3RoKTtcbn1cblxuLnN0b3J5LWFydGljbGU6aG92ZXIgLnN0b3J5LWltYWdlLWltZyB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMS4wMik7XG59XG5cbi8qIFN0b3J5IGNvbnRlbnQgbGF5b3V0IC0gb3B0aW1pemVkIGZvciByZWN0YW5ndWxhciBkZXNpZ24gKi8gICBcbi5zdG9yeS1jb250ZW50IHtcbiAgZmxleDogMTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0yKTsgLyogRXZlbiB0aWdodGVyIHNwYWNpbmcgZm9yIHJlY3Rhbmd1bGFyIGxheW91dCAqL1xufVxuXG4vKiBTdG9yeSB0aXRsZSB3aXRoIGljb24gc3VwcG9ydCAqL1xuLnN0b3J5LXRpdGxlLXdyYXBwZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IHZhcigtLXNwYWNlLTMpO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0zKTtcbn1cblxuLnN0b3J5LWNhdGVnb3J5IHtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xuICBmb250LXdlaWdodDogNTAwO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4O1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0yKTtcbn1cblxuLyogVGl0bGUgc3R5bGluZyBoYW5kbGVkIGJ5IGdsb2JhbCAudGl0bGUtY2FyZCBjbGFzcyAqL1xuXG4uc3RvcnktbWFpbiB7XG4gIGZsZXg6IDE7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTYpO1xufVxuXG4vKiBEZXNjcmlwdGlvbiBzdHlsaW5nIGhhbmRsZWQgYnkgZ2xvYmFsIC5kZXNjcmlwdGlvbiBjbGFzcyAqL1xuLyogQWRkaXRpb25hbCBsaW5lIGNsYW1waW5nIGZvciBzdG9yeSBjYXJkcyAqL1xuLnN0b3J5LW1haW4gLmRlc2NyaXB0aW9uIHtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIC13ZWJraXQtbGluZS1jbGFtcDogMjsgLyogTWF4aW11bSAyIGxpbmVzIGZvciBtb3JlIHJlY3Rhbmd1bGFyIHByb3BvcnRpb25zICovXG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi8qIFN0b3J5IGZvb3RlciB3aXRoIG1ldHJpY3MgKi9cbi5zdG9yeS1mb290ZXIge1xuICBtYXJnaW4tdG9wOiBhdXRvO1xufVxuXG4vKiBNZXRyaWNzIGNvbnRhaW5lciAtIGhvcml6b250YWwgbGF5b3V0IHdpdGhvdXQgYm9yZGVycyAqL1xuLnN0b3J5LW1ldHJpY3Mge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IG5vd3JhcDsgLyogRm9yY2UgaG9yaXpvbnRhbCBsYXlvdXQgKi9cbiAgZ2FwOiB2YXIoLS1zcGFjZS0yKTsgLyogVGlnaHRlciBnYXAgZm9yIGhvcml6b250YWwgZmxvdyAqL1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IC8qIEV2ZW4gZGlzdHJpYnV0aW9uIGFjcm9zcyB3aWR0aCAqL1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nLXRvcDogdmFyKC0tc3BhY2UtNCk7XG4gIGJvcmRlcjogMDsgLyogTm8gYm9yZGVycyBmb3IgY2xlYW4gZGVzaWduICovXG4gIG92ZXJmbG93LXg6IGF1dG87IC8qIEFsbG93IHNjcm9sbGluZyBvbiB2ZXJ5IHNtYWxsIHNjcmVlbnMgKi9cbn1cblxuLyogSW5kaXZpZHVhbCBtZXRyaWNzIC0gUHVyZSBjb2xvciBiYWNrZ3JvdW5kcyB3aXRob3V0IGJvcmRlcnMgKi9cbi5zdG9yeS1tZXRyaWMge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0xKTsgLyogVGlnaHRlciBnYXAgZm9yIGNvbXBhY3QgaG9yaXpvbnRhbCBsYXlvdXQgKi9cbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jb2xvci1zdWNjZXNzKSAvIDAuMSk7IC8qIFNvZnQgYmFja2dyb3VuZCBjb2xvciAqL1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXN1Y2Nlc3MpKTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMSkgdmFyKC0tc3BhY2UtMik7IC8qIE1vcmUgY29tcGFjdCBwYWRkaW5nICovXG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTsgLyogU21hbGxlciBmb250IGZvciBob3Jpem9udGFsIGxheW91dCAqL1xuICBmb250LXdlaWdodDogNTAwO1xuICBib3JkZXI6IDA7IC8qIE5vIGJvcmRlcnMgKi9cbiAgYm94LXNoYWRvdzogbm9uZTsgLyogTm8gc2hhZG93IHNpbXVsYXRpbmcgYm9yZGVycyAqL1xuICBsaW5lLWhlaWdodDogMS4yO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwOyAvKiBQcmV2ZW50IHRleHQgd3JhcHBpbmcgKi9cbiAgZmxleC1zaHJpbms6IDA7IC8qIFByZXZlbnQgc2hyaW5raW5nIGluIGhvcml6b250YWwgbGF5b3V0ICovXG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpO1xufVxuXG4uc3RvcnktbWV0cmljOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jb2xvci1zdWNjZXNzKSAvIDAuMTUpOyAvKiBEZWVwZXIgY29sb3Igb24gaG92ZXIgKi9cbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpOyAvKiBTdWJ0bGUgbGlmdCAqL1xuICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjA1KTsgLyogTGlnaHQgZWxldmF0aW9uIG9uIGhvdmVyICovXG59XG5cbi8qIE1ldHJpYyB2YXJpYW50cyAtIEJvcmRlcmxlc3MgY29sb3Igc3lzdGVtICovXG4uc3RvcnktbWV0cmljLm1ldHJpYy13YXJuaW5nIHtcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jb2xvci13YXJuaW5nKSAvIDAuMSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3Itd2FybmluZykpO1xufVxuXG4uc3RvcnktbWV0cmljLm1ldHJpYy13YXJuaW5nOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jb2xvci13YXJuaW5nKSAvIDAuMTUpO1xuICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSh2YXIoLS1jb2xvci13YXJuaW5nKSAvIDAuMSk7XG59XG5cbi5zdG9yeS1tZXRyaWMubWV0cmljLXNlY29uZGFyeSB7XG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeSkgLyAwLjEpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbn1cblxuLnN0b3J5LW1ldHJpYy5tZXRyaWMtc2Vjb25kYXJ5OmhvdmVyIHtcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5KSAvIDAuMTUpO1xuICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5KSAvIDAuMSk7XG59XG5cbi5zdG9yeS1tZXRyaWMubWV0cmljLXByaW1hcnkge1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNvbG9yLWZvcmVncm91bmQpIC8gMC4xKTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1mb3JlZ3JvdW5kKSk7XG59XG5cbi5zdG9yeS1tZXRyaWMubWV0cmljLXByaW1hcnk6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNvbG9yLWZvcmVncm91bmQpIC8gMC4xNSk7XG4gIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKHZhcigtLWNvbG9yLWZvcmVncm91bmQpIC8gMC4xKTtcbn1cblxuLyogU3Ryb25nIGVtcGhhc2lzIGZvciBtZXRyaWMgdmFsdWVzICovXG4uc3RvcnktbWV0cmljIHN0cm9uZyB7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIG1hcmdpbi1yaWdodDogdmFyKC0tc3BhY2UtMSk7XG59XG5cbi8qIEljb24gc3R5bGluZyBmb3IgbWV0cmljcyAqL1xuLm1ldHJpYy1pY29uIHtcbiAgZmxleC1zaHJpbms6IDA7XG4gIG9wYWNpdHk6IDAuODtcbn1cblxuLyogTW9iaWxlLWZpcnN0IHJlc3BvbnNpdmUgZGVzaWduICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLnN0b3J5LWhlYWRlciB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtOCk7XG4gIH1cbiAgXG4gIC5zdG9yeS1ncmlkIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7IC8qIEZ1bGwgd2lkdGggb24gbW9iaWxlICovXG4gIH1cbiAgXG4gIC5zdG9yeS1hcnRpY2xlIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KSB2YXIoLS1zcGFjZS02KTtcbiAgICAvKiBMaWdodGVyIHNoYWRvd3Mgb24gbW9iaWxlIGZvciBwZXJmb3JtYW5jZSAqL1xuICAgIGJveC1zaGFkb3c6IDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDQpO1xuICB9XG4gIFxuICAuc3RvcnktYXJ0aWNsZTpob3ZlciB7XG4gICAgLyogTGVzcyBkcmFtYXRpYyBsaWZ0IG9uIG1vYmlsZSAqL1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4wOCk7XG4gIH1cbiAgXG4gIC5zdG9yeS10aXRsZS13cmFwcGVyIHtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTIpO1xuICB9XG4gIFxuICAuc3RvcnktaW1hZ2UtaW1nIHtcbiAgICBoZWlnaHQ6IDE2MHB4O1xuICB9XG4gIFxuICAuc3RvcnktbWV0cmljcyB7XG4gICAgZmxleC13cmFwOiB3cmFwOyAvKiBBbGxvdyB3cmFwcGluZyBvbiBtb2JpbGUgKi9cbiAgICBnYXA6IHZhcigtLXNwYWNlLTIpO1xuICB9XG4gIFxuICAuc3RvcnktbWV0cmljIHtcbiAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtMSkgdmFyKC0tc3BhY2UtMik7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS0xKTsgLyogU21hbGxlciBnYXAgb24gbW9iaWxlICovXG4gICAgZmxleC1zaHJpbms6IDE7IC8qIEFsbG93IHNocmlua2luZyBvbiBtb2JpbGUgKi9cbiAgfVxuICBcbiAgLyogRW5zdXJlIGFkZXF1YXRlIHRvdWNoIHRhcmdldHMgb24gbW9iaWxlICovXG4gIC5zdG9yeS1tZXRyaWMge1xuICAgIG1pbi1oZWlnaHQ6IDMycHg7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxufVxuXG4vKiBUYWJsZXQgcmVzcG9uc2l2ZSBhZGp1c3RtZW50cyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDEwMjNweCkgYW5kIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5zdG9yeS1ncmlkIHtcbiAgICBtYXgtd2lkdGg6IDUwMHB4OyAvKiBNZWRpdW0gd2lkdGggZm9yIHRhYmxldCAqL1xuICB9XG4gIFxuICAuc3RvcnktYXJ0aWNsZSB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtNyk7XG4gIH1cbn1cblxuLyogTGFyZ2Ugc2NyZWVuIG9wdGltaXphdGlvbnMgKi9cbkBtZWRpYSAobWluLXdpZHRoOiAxNDAwcHgpIHtcbiAgLnN0b3J5LWdyaWQge1xuICAgIG1heC13aWR0aDogNzAwcHg7IC8qIExhcmdlciB3aWR0aCBmb3IgYmlnIHNjcmVlbnMgKi9cbiAgfVxufVxuXG4vKiBIaWdoIGNvbnRyYXN0IG1vZGUgc3VwcG9ydCAqL1xuQG1lZGlhIChwcmVmZXJzLWNvbnRyYXN0OiBoaWdoKSB7XG4gIC5zdG9yeS1hcnRpY2xlIHtcbiAgICBvdXRsaW5lOiAycHggc29saWQgY3VycmVudENvbG9yO1xuICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICB9XG4gIFxuICAuc3RvcnktbWV0cmljIHtcbiAgICBvdXRsaW5lOiAycHggc29saWQgY3VycmVudENvbG9yO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIH1cbiAgXG4gIC5zdG9yeS1hcnRpY2xlLnN0b3J5LWZlYXR1cmVkIHtcbiAgICBvdXRsaW5lLXdpZHRoOiAzcHg7XG4gIH1cbn1cblxuLyogUmVkdWNlZCBtb3Rpb24gc3VwcG9ydCAqL1xuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLnN0b3J5LWFydGljbGUsXG4gIC5zdG9yeS1tZXRyaWMsXG4gIC5zdG9yeS1pbWFnZS1pbWcge1xuICAgIHRyYW5zaXRpb246IG5vbmU7XG4gIH1cbiAgXG4gIC5zdG9yeS1hcnRpY2xlOmhvdmVyLFxuICAuc3RvcnktbWV0cmljOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbiAgXG4gIC5zdG9yeS1hcnRpY2xlOmhvdmVyIC5zdG9yeS1pbWFnZS1pbWcge1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxufVxuXG4vKiBEYXJrIG1vZGUgY29uc2lkZXJhdGlvbnMgKi9cbkBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHtcbiAgLnN0b3J5LWFydGljbGUuc3RvcnktZmVhdHVyZWQge1xuICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSAvIDAuMDMpO1xuICB9XG4gIFxuICAuc3RvcnktbWV0cmljIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNvbG9yLXN1Y2Nlc3MpIC8gMC4xNSk7XG4gIH1cbiAgXG4gIC5zdG9yeS1tZXRyaWMubWV0cmljLXdhcm5pbmcge1xuICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3Itd2FybmluZykgLyAwLjE1KTtcbiAgfVxuICBcbiAgLnN0b3J5LW1ldHJpYy5tZXRyaWMtc2Vjb25kYXJ5IHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnkpIC8gMC4xNSk7XG4gIH1cbiAgXG4gIC5zdG9yeS1tZXRyaWMubWV0cmljLXByaW1hcnkge1xuICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkgLyAwLjE1KTtcbiAgfVxufVxuXG4vKiBGb2N1cyBzdGF0ZXMgZm9yIGFjY2Vzc2liaWxpdHkgKi9cbi5zdG9yeS1hcnRpY2xlOmZvY3VzLXdpdGhpbiB7XG4gIG91dGxpbmU6IDJweCBzb2xpZCByZ2JhKHZhcigtLWNvbG9yLWZvY3VzKSAvIDAuNSk7XG4gIG91dGxpbmUtb2Zmc2V0OiAycHg7XG59XG5cbi8qIFByaW50IHN0eWxlcyAtIE1haW50YWluIGJvcmRlcmxlc3MgYXBwcm9hY2ggKi9cbkBtZWRpYSBwcmludCB7XG4gIC5zdG9yeS1hcnRpY2xlIHtcbiAgICBicmVhay1pbnNpZGU6IGF2b2lkO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7IC8qIE5vIHNoYWRvd3MgaW4gcHJpbnQgKi9cbiAgICBib3JkZXI6IDA7IC8qIEtlZXAgYm9yZGVybGVzcyAqL1xuICAgIG91dGxpbmU6IDFweCBzb2xpZCAjY2NjOyAvKiBMaWdodCBvdXRsaW5lIGZvciBwcmludCBjbGFyaXR5ICovXG4gIH1cbiAgXG4gIC5zdG9yeS1hcnRpY2xlOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgfVxuICBcbiAgLnN0b3J5LW1ldHJpY3Mge1xuICAgIGJvcmRlcjogMDsgLyogTm8gYm9yZGVycyBpbiBwcmludCAqL1xuICB9XG59IiwiLyogU3RyZWFtaW5nIENhcm91c2VsIC0gTW9iaWxlLUZpcnN0IFByb2Zlc3Npb25hbCBEZXNpZ24gKi9cbi8qIEZvbGxvd2luZyBCb3VuZGxlc3MgQnJhbmQgUGhpbG9zb3BoeTogUHJvZmVzc2lvbmFsIEF1dGhvcml0eSwgTW9kZXJuIE1pbmltYWxpc20sIEV4dHJlbWUgV2hpdGVzcGFjZSAqL1xuXG4vKiA9PT0gUFJPRkVTU0lPTkFMIEFVVEhPUklUWSA9PT0gKi9cbi8qIEJhc2Ugc3R5bGVzIGFyZSBtb2JpbGUtZmlyc3QgLSBwdXJlIGNvbXBvbmVudCB3aXRob3V0IFNlY3Rpb24gd3JhcHBlciAqL1xuLnN0cmVhbWluZy1jYXJvdXNlbCB7XG4gIC8qIENvbXBvbmVudCBpcyBub3cgcHVyZSAtIG5vIFNlY3Rpb24gd3JhcHBlciAqL1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIC8qIFJlbW92ZSBjYXJkLWxpa2UgcGFkZGluZywgYmFja2dyb3VuZCwgYm9yZGVycyAqL1xuICBwYWRkaW5nOiAwO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICBcbiAgLyogU2l6ZSB0byBmaWxsIGNvbnRhaW5lciAqL1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBcbiAgLyogVG91Y2ggdGFyZ2V0IGNvbXBsaWFuY2UgKi9cbiAgbWluLWhlaWdodDogNDhweDtcbiAgXG4gIC8qIFBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiAqL1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7XG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XG4gIFxuICAvKiBNaW5pbWFsIHRyYW5zaXRpb24gZm9yIGZvY3VzICovXG4gIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2Utc21vb3RoKTtcbn1cblxuLyogSW50ZXJhY3RpdmUgc3RhdGVzIC0gbWluaW1hbCAqL1xuLnN0cmVhbWluZy1jYXJvdXNlbDpob3ZlciB7XG4gIC8qIE5vIGNhcmQtbGlrZSBlbGV2YXRpb24gKi9cbiAgdHJhbnNmb3JtOiBub25lO1xuICBib3gtc2hhZG93OiBub25lO1xufVxuXG4uc3RyZWFtaW5nLWNhcm91c2VsOmZvY3VzLXZpc2libGUge1xuICBvdXRsaW5lOiAycHggc29saWQgcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbiAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbn1cblxuLyogQ29udGVudCBjb250YWluZXIgLSBPcHRpbWl6ZWQgZm9yIGZsb2F0aW5nIGljb24gZGlzcGxheSAqL1xuLmNhcm91c2VsLWNvbnRlbnQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IHZhcigtLXNwYWNlLTIpO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLyogVGV4dCBjb250ZW50ICovXG4uY2Fyb3VzZWwtdGV4dCB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZmxleDogMTtcbn1cblxuLyogSWNvbiB3cmFwcGVyIC0gRmxvYXRpbmcgZGVzaWduIGZvciBjYXJvdXNlbCAqL1xuLmNhcm91c2VsLWljb24td3JhcHBlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBnYXA6IHZhcigtLXNwYWNlLTEpO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0yKTtcbn1cblxuLyogRmxvYXRpbmcgaWNvbiBjb250YWluZXIgKi9cbi5zdHJlYW1pbmctY2Fyb3VzZWwgLmljb24tY29udGFpbmVyIHtcbiAgLyogUmVtb3ZlIGFueSBjYXJkLWxpa2Ugc3R5bGluZyBmcm9tIGljb24gY29udGFpbmVycyAqL1xuICBib3gtc2hhZG93OiBub25lO1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJnLW11dGVkLWFscGhhKTtcbiAgXG4gIC8qIFN1YnRsZSBmbG9hdGluZyBlZmZlY3QgKi9cbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLXRpbWluZy1ub3JtYWwpIHZhcigtLWVhc2Utc21vb3RoKTtcbn1cblxuLyogSG92ZXIgZWZmZWN0IGZvciBmbG9hdGluZyBpY29ucyAqL1xuLnN0cmVhbWluZy1jYXJvdXNlbDpob3ZlciAuaWNvbi1jb250YWluZXIge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG59XG5cbi8qIExhYmVsIHN0eWxpbmcgLSBTdWJ0bGUgYW5kIG1pbmltaXplZCAqL1xuLmNhcm91c2VsLWxhYmVsIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtMSk7XG4gIG9wYWNpdHk6IDAuNztcbiAgZm9udC1zaXplOiB2YXIoLS10ZXh0LXhzKTtcbiAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgXG4gIC8qIFN1YnRsZSBhcHBlYXJhbmNlICovXG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItdGV4dC1tdXRlZCkpO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNlLXNtb290aCk7XG59XG5cbi8qIE1ha2UgbGFiZWwgbW9yZSB2aXNpYmxlIG9uIGhvdmVyICovXG4uc3RyZWFtaW5nLWNhcm91c2VsOmhvdmVyIC5jYXJvdXNlbC1sYWJlbCB7XG4gIG9wYWNpdHk6IDAuOTtcbn1cblxuLyogPT09IE1PREVSTiBNSU5JTUFMSVNNID09PSAqL1xuXG4vKiA9PT0gQ0FST1VTRUwgQ09OVEFJTkVSIFNUUlVDVFVSRSA9PT0gKi9cbi8qIFZpZXdwb3J0IGZvciB0aGUgY2Fyb3VzZWwgKi9cbi5zdHJlYW1pbmctY2Fyb3VzZWwtdmlld3BvcnQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLyogU3RyZWFtaW5nIHRyYWNrIGZvciBob3Jpem9udGFsIG1vdmVtZW50ICovXG4uc3RyZWFtaW5nLWNhcm91c2VsLXRyYWNrIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgYW5pbWF0aW9uOiBzdHJlYW1pbmctZmxvdyAzMHMgbGluZWFyIGluZmluaXRlO1xuICBcbiAgLyogRW5zdXJlIHRyYWNrIGlzIHdpZGUgZW5vdWdoIGZvciBhbGwgaXRlbXMgKi9cbiAgd2lkdGg6IG1heC1jb250ZW50O1xuICBcbiAgLyogSGFyZHdhcmUgYWNjZWxlcmF0aW9uICovXG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTtcbiAgY29udGFpbjogbGF5b3V0IHN0eWxlIHBhaW50O1xuICBcbiAgLyogU21vb3RoIHJlbmRlcmluZyAqL1xuICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuXG4vKiBQYXVzZSBvbiBob3ZlciBmb3IgdXNlciBjb250cm9sICovXG4uc3RyZWFtaW5nLWNhcm91c2VsLXZpZXdwb3J0OmhvdmVyIC5zdHJlYW1pbmctY2Fyb3VzZWwtdHJhY2sge1xuICBhbmltYXRpb24tcGxheS1zdGF0ZTogcGF1c2VkO1xufVxuXG4vKiBDbGVhbnVwIHdpbGwtY2hhbmdlIHdoZW4gcGF1c2VkICovXG4uc3RyZWFtaW5nLWNhcm91c2VsLXZpZXdwb3J0OmhvdmVyIC5zdHJlYW1pbmctY2Fyb3VzZWwtdHJhY2sge1xuICB3aWxsLWNoYW5nZTogYXV0bztcbn1cblxuLyogSW5kaXZpZHVhbCBjYXJvdXNlbCBpdGVtcyAqL1xuLnN0cmVhbWluZy1jYXJvdXNlbC1pdGVtIHtcbiAgZmxleC1zaHJpbms6IDA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4vKiA9PT0gUkVGSU5FRCBQUkVTRU5UQVRJT04gPT09ICovXG5cbi8qID09PSBDQVJPVVNFTCBBTklNQVRJT04gPT09ICovXG5Aa2V5ZnJhbWVzIHN0cmVhbWluZy1mbG93IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNTAlLCAwLCAwKTtcbiAgfVxufVxuXG4vKiBFbmhhbmNlZCBzbW9vdGggYW5pbWF0aW9ucyAqL1xuLnN0cmVhbWluZy1jYXJvdXNlbCB7XG4gIC8qIFNtb290aCB0cmFuc2l0aW9ucyBmb3IgYWxsIGludGVyYWN0aXZlIHN0YXRlcyAqL1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGltaW5nLW5vcm1hbCkgdmFyKC0tZWFzZS1zbW9vdGgpO1xufVxuXG4vKiBJbmRpdmlkdWFsIGl0ZW0gYW5pbWF0aW9ucyAqL1xuLnN0cmVhbWluZy1jYXJvdXNlbC1pdGVtIHtcbiAgLyogU21vb3RoIHNjYWxpbmcgb24gaW50ZXJhY3Rpb24gKi9cbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNlLXNtb290aCk7XG59XG5cbi8qIEhvdmVyIGVmZmVjdCBmb3IgaW5kaXZpZHVhbCBpdGVtcyAqL1xuLnN0cmVhbWluZy1jYXJvdXNlbC1pdGVtOmhvdmVyIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxLjA1KTtcbn1cblxuLyogRWRnZSBmYWRlIGdyYWRpZW50cyBmb3Igc2VhbWxlc3MgbG9vcCAqL1xuLnN0cmVhbWluZy1jYXJvdXNlbC1mYWRlLWxlZnQsXG4uc3RyZWFtaW5nLWNhcm91c2VsLWZhZGUtcmlnaHQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICB3aWR0aDogdmFyKC0tc3BhY2UtMjQpO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMTtcbn1cblxuLnN0cmVhbWluZy1jYXJvdXNlbC1mYWRlLWxlZnQge1xuICBsZWZ0OiAwO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIFxuICAgIHJnYih2YXIoLS1jb2xvci1iZy1kZWZhdWx0KSkgMCUsXG4gICAgcmdiYSh2YXIoLS1jb2xvci1iZy1kZWZhdWx0KSwgMCkgMTAwJSk7XG59XG5cbi5zdHJlYW1pbmctY2Fyb3VzZWwtZmFkZS1yaWdodCB7XG4gIHJpZ2h0OiAwO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gbGVmdCxcbiAgICByZ2IodmFyKC0tY29sb3ItYmctZGVmYXVsdCkpIDAlLFxuICAgIHJnYmEodmFyKC0tY29sb3ItYmctZGVmYXVsdCksIDApIDEwMCUpO1xufVxuXG5cbi8qID09PSBNT0JJTEUtRklSU1QgUkVTUE9OU0lWRSA9PT0gKi9cbi8qIE1vYmlsZS1maXJzdCBhcHByb2FjaCB3aXRoIHByb2dyZXNzaXZlIGVuaGFuY2VtZW50ICovXG5cbi8qIE1vYmlsZSBiYXNlIHN0eWxlcyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5zdHJlYW1pbmctY2Fyb3VzZWwge1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbiAgXG4gIC5jYXJvdXNlbC1jb250ZW50IHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxuICBcbiAgLmNhcm91c2VsLWljb24td3JhcHBlciB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtMik7XG4gIH1cbiAgXG4gIC8qIENhcm91c2VsIGNvbnRhaW5lciBtb2JpbGUgc2l6aW5nICovXG4gIC5zdHJlYW1pbmctY2Fyb3VzZWwtdmlld3BvcnQge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTQpIDA7XG4gICAgbWFyZ2luOiB2YXIoLS1zcGFjZS00KSAwO1xuICB9XG4gIFxuICAuc3RyZWFtaW5nLWNhcm91c2VsLXRyYWNrIHtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTYpO1xuICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMjBzO1xuICB9XG4gIFxuICAuc3RyZWFtaW5nLWNhcm91c2VsLWl0ZW0ge1xuICAgIHdpZHRoOiB2YXIoLS1zcGFjZS0zMik7IC8qIDEyOHB4ICovXG4gICAgaGVpZ2h0OiB2YXIoLS1zcGFjZS0yNCk7IC8qIDk2cHggKi9cbiAgfVxufVxuXG5cbi8qIFRhYmxldCBlbmhhbmNlbWVudCAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5zdHJlYW1pbmctY2Fyb3VzZWwge1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbiAgXG4gIC5jYXJvdXNlbC1jb250ZW50IHtcbiAgICAvKiBJbiBjYXJvdXNlbCBjb250ZXh0LCBrZWVwIHZlcnRpY2FsIGxheW91dCAqL1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG4gIFxuICAuY2Fyb3VzZWwtdGV4dCB7XG4gICAgZmxleDogbm9uZTtcbiAgfVxuICBcbiAgLmNhcm91c2VsLWljb24td3JhcHBlciB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtMik7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gIH1cbiAgXG4gIC8qIENhcm91c2VsIGNvbnRhaW5lciB0YWJsZXQgc2l6aW5nICovXG4gIC5zdHJlYW1pbmctY2Fyb3VzZWwtdmlld3BvcnQge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTYpIDA7XG4gICAgbWFyZ2luOiB2YXIoLS1zcGFjZS02KSAwO1xuICB9XG4gIFxuICAuc3RyZWFtaW5nLWNhcm91c2VsLXRyYWNrIHtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTgpO1xuICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMzBzO1xuICB9XG4gIFxuICAuc3RyZWFtaW5nLWNhcm91c2VsLWl0ZW0ge1xuICAgIHdpZHRoOiB2YXIoLS1zcGFjZS00MCk7IC8qIDE2MHB4ICovXG4gICAgaGVpZ2h0OiB2YXIoLS1zcGFjZS0yOCk7IC8qIDExMnB4ICovXG4gIH1cbn1cblxuLyogRGVza3RvcCBlbmhhbmNlbWVudCAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDEyODBweCkge1xuICAuc3RyZWFtaW5nLWNhcm91c2VsIHtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG4gIFxuICAuY2Fyb3VzZWwtaWNvbi13cmFwcGVyIHtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgfVxuICBcbiAgLyogQ2Fyb3VzZWwgY29udGFpbmVyIGRlc2t0b3Agc2l6aW5nICovXG4gIC5zdHJlYW1pbmctY2Fyb3VzZWwtdmlld3BvcnQge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTgpIDA7XG4gICAgbWFyZ2luOiB2YXIoLS1zcGFjZS04KSAwO1xuICB9XG4gIFxuICAuc3RyZWFtaW5nLWNhcm91c2VsLXRyYWNrIHtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTgpO1xuICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogNDVzO1xuICB9XG4gIFxuICAuc3RyZWFtaW5nLWNhcm91c2VsLWl0ZW0ge1xuICAgIHdpZHRoOiB2YXIoLS1zcGFjZS00MCk7IC8qIDE2MHB4ICovXG4gICAgaGVpZ2h0OiB2YXIoLS1zcGFjZS0yOCk7IC8qIDExMnB4ICovXG4gIH1cbn1cblxuLyogPT09IEFDQ0VTU0lCSUxJVFkgRU5IQU5DRU1FTlRTID09PSAqL1xuLyogU2NyZWVuIHJlYWRlciBvbmx5IGNvbnRlbnQgKi9cbi5zci1vbmx5IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4O1xuICBoZWlnaHQ6IDFweDtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAtMXB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBjbGlwOiByZWN0KDAsIDAsIDAsIDApO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBib3JkZXI6IDA7XG59XG5cbi8qIEhpZ2ggY29udHJhc3QgbW9kZSBzdXBwb3J0ICovXG5AbWVkaWEgKHByZWZlcnMtY29udHJhc3Q6IGhpZ2gpIHtcbiAgLnN0cmVhbWluZy1jYXJvdXNlbC1jYXJkIHtcbiAgICBib3JkZXItd2lkdGg6IDJweDtcbiAgICBib3JkZXItY29sb3I6IHJnYih2YXIoLS1jb2xvci1ib3JkZXIpKTtcbiAgfVxuICBcbiAgLnN0cmVhbWluZy1jYXJvdXNlbC1sb2dvIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIGZpbHRlcjogY29udHJhc3QoMS4zKTtcbiAgfVxufVxuXG4vKiBSZWR1Y2VkIG1vdGlvbiBzdXBwb3J0ICovXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAuc3RyZWFtaW5nLWNhcm91c2VsLXRyYWNrIHtcbiAgICBhbmltYXRpb246IG5vbmU7XG4gICAgd2lsbC1jaGFuZ2U6IGF1dG87IC8qIE5vIGFuaW1hdGlvbiA9IG5vIHdpbGwtY2hhbmdlICovXG4gIH1cbiAgXG4gIC5zdHJlYW1pbmctY2Fyb3VzZWwtY2FyZCxcbiAgLnN0cmVhbWluZy1jYXJvdXNlbC1sb2dvLFxuICAuc3RyZWFtaW5nLWNhcm91c2VsLWxhYmVsIHtcbiAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgIHdpbGwtY2hhbmdlOiBhdXRvO1xuICB9XG59XG5cbi8qID09PSBQUk9GRVNTSU9OQUwgUE9MSVNIICYgQVVUSE9SSVRZID09PSAqL1xuXG4vKiBUeXBvZ3JhcGh5IGNvbXBsaWFuY2UgLSBNQU5EQVRPUlkgZ2xvYmFsIGNsYXNzZXMgb25seSAqL1xuLyogQWxsIHRleHQgTVVTVCB1c2UgZ2xvYmFsIHR5cG9ncmFwaHkgY2xhc3NlcyBmcm9tIGJyYW5kIGZvdW5kYXRpb24gKi9cbi5zdHJlYW1pbmctY2Fyb3VzZWwgLnRpdGxlLWNhcmQge1xuICAvKiBVc2VzIGdsb2JhbCAudGl0bGUtY2FyZCBjbGFzcyAtIG5vIGN1c3RvbSBmb250IHN0eWxpbmcgKi9cbiAgbWFyZ2luOiAwO1xufVxuXG4uc3RyZWFtaW5nLWNhcm91c2VsIC5kZXNjcmlwdGlvbiB7XG4gIC8qIFVzZXMgZ2xvYmFsIC5kZXNjcmlwdGlvbiBjbGFzcyAtIG5vIGN1c3RvbSBmb250IHN0eWxpbmcgKi9cbiAgbWFyZ2luOiAwO1xufVxuXG5cbi8qID09PSBTVFJBVEVHSUMgSEVSSVRBR0UgUkVEIFVTQUdFID09PSAqL1xuLyogQ1JJVElDQUw6IEhlcml0YWdlIHJlZCBsaW1pdGVkIHRvIDEwJSBydWxlIHdpdGggcHJvcGVyIHNwYWNpbmcgKi9cbi8qIE1vYmlsZTogTWF4aW11bSAxIGVsZW1lbnQsIERlc2t0b3A6IE1heGltdW0gMiBlbGVtZW50cyAqL1xuXG4vKiBIZXJpdGFnZSByZWQgYWNjZW50IC0gYXBwbGllZCB0aHJvdWdoIGljb24gY29udGFpbmVycyAqL1xuLnN0cmVhbWluZy1jYXJvdXNlbCAuaWNvbi1jb250YWluZXItaGVyaXRhZ2Uge1xuICAvKiBIZXJpdGFnZSBzdHlsaW5nIGhhbmRsZWQgYnkgZ2xvYmFsIGljb24gc3lzdGVtICovXG4gIC8qIEV4dHJhIHNwYWNpbmcgYXJvdW5kIGhlcml0YWdlIGVsZW1lbnRzICovXG4gIG1hcmdpbjogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi8qIEhlcml0YWdlIHJlZCB0aXRsZSBhY2NlbnQgLSBvbmx5IHdoZW4gZXhwbGljaXRseSByZXF1ZXN0ZWQgKi9cbi5zdHJlYW1pbmctY2Fyb3VzZWwtaGVyaXRhZ2UgLnRpdGxlLWNhcmQ6OmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogdmFyKC0tc3BhY2UtMTYpO1xuICBoZWlnaHQ6IDJweDtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpO1xuICAvKiBNQU5EQVRPUlk6IDMwJSBleHRyYSB2ZXJ0aWNhbCBzcGFjaW5nIGZvciBoZXJpdGFnZSBlbGVtZW50cyAqL1xuICBtYXJnaW46IGNhbGModmFyKC0tc3BhY2UtNikgKiAxLjMpIGF1dG8gMDtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWZ1bGwpO1xuICBvcGFjaXR5OiAwLjg7XG59XG5cbi8qIE1vYmlsZSBoZXJpdGFnZSByZWQgY29uc3RyYWludCAtIG1heGltdW0gMSBlbGVtZW50ICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLnN0cmVhbWluZy1jYXJvdXNlbC1oZXJpdGFnZSAudGl0bGUtc2VjdGlvbjo6YWZ0ZXIge1xuICAgIC8qIEVuaGFuY2VkIHNwYWNpbmcgb24gbW9iaWxlIC0gMzUlIGV4dHJhICovXG4gICAgbWFyZ2luOiBjYWxjKHZhcigtLXNwYWNlLTgpICogMS4zNSkgYXV0byAwO1xuICB9XG4gIFxuICAvKiBFbnN1cmUgaXNvbGF0aW9uIC0gbm8gb3RoZXIgaGVyaXRhZ2UgZWxlbWVudHMgbmVhcmJ5ICovXG4gIC5zdHJlYW1pbmctY2Fyb3VzZWwtaGVyaXRhZ2Uge1xuICAgIG1hcmdpbjogdmFyKC0tc3BhY2UtMTIpIDA7XG4gIH1cbn1cblxuLyogRGVza3RvcCBoZXJpdGFnZSByZWQgYWxsb3dhbmNlIC0gbWF4aW11bSAyIGVsZW1lbnRzIHBlciB2aWV3cG9ydCAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDEyODBweCkge1xuICAuc3RyZWFtaW5nLWNhcm91c2VsLWhlcml0YWdlIC50aXRsZS1zZWN0aW9uOjphZnRlciB7XG4gICAgLyogU3RhbmRhcmQgMzAlIGV4dHJhIHNwYWNpbmcgKi9cbiAgICBtYXJnaW46IGNhbGModmFyKC0tc3BhY2UtNikgKiAxLjMpIGF1dG8gMDtcbiAgfVxufVxuXG4iLCIvKiBTd2l0Y2hibGFkZSBDYXBhYmlsaXRpZXMgQ29tcG9uZW50IFN0eWxlcyAtIEVuaGFuY2VkIFR5cG9ncmFwaHkgJiBWaXN1YWwgRGVzaWduICovXG4uc3dpdGNoYmxhZGUtY2FwYWJpbGl0aWVzLXNlY3Rpb24ge1xuICBwYWRkaW5nOiA4cmVtIDA7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNmOGZhZmMgMCUsICNlMmU4ZjAgMTAwJSk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnN3aXRjaGJsYWRlLWNhcGFiaWxpdGllcy1zZWN0aW9uOjpiZWZvcmUge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGJhY2tncm91bmQ6IFxuICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMjUlIDI1JSwgcmdiYSg1OSwgMTMwLCAyNDYsIDAuMDgpIDAlLCB0cmFuc3BhcmVudCA1MCUpLFxuICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNzUlIDc1JSwgcmdiYSgxNDcsIDUxLCAyMzQsIDAuMDYpIDAlLCB0cmFuc3BhcmVudCA1MCUpLFxuICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUwJSwgcmdiYSgxNiwgMTg1LCAxMjksIDAuMDQpIDAlLCB0cmFuc3BhcmVudCA1MCUpO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLmRhcmsgLnN3aXRjaGJsYWRlLWNhcGFiaWxpdGllcy1zZWN0aW9uIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzBmMTcyYSAwJSwgIzFlMjkzYiAxMDAlKTtcbn1cblxuLmRhcmsgLnN3aXRjaGJsYWRlLWNhcGFiaWxpdGllcy1zZWN0aW9uOjpiZWZvcmUge1xuICBiYWNrZ3JvdW5kOiBcbiAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDI1JSAyNSUsIHJnYmEoNTksIDEzMCwgMjQ2LCAwLjE1KSAwJSwgdHJhbnNwYXJlbnQgNTAlKSxcbiAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDc1JSA3NSUsIHJnYmEoMTQ3LCA1MSwgMjM0LCAwLjEyKSAwJSwgdHJhbnNwYXJlbnQgNTAlKSxcbiAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA1MCUsIHJnYmEoMTYsIDE4NSwgMTI5LCAwLjA4KSAwJSwgdHJhbnNwYXJlbnQgNTAlKTtcbn1cblxuLnN3aXRjaGJsYWRlLWNhcGFiaWxpdGllc19fY29udGFpbmVyIHtcbiAgbWF4LXdpZHRoOiA4MHJlbTtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHBhZGRpbmc6IDAgMS41cmVtO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xuICAuc3dpdGNoYmxhZGUtY2FwYWJpbGl0aWVzX19jb250YWluZXIge1xuICAgIHBhZGRpbmc6IDAgMnJlbTtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5zd2l0Y2hibGFkZS1jYXBhYmlsaXRpZXNfX2NvbnRhaW5lciB7XG4gICAgcGFkZGluZzogMCAyLjVyZW07XG4gIH1cbn1cblxuLnN3aXRjaGJsYWRlLWNhcGFiaWxpdGllc19faGVhZGVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtYXJnaW4tYm90dG9tOiA1cmVtO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5zd2l0Y2hibGFkZS1jYXBhYmlsaXRpZXNfX3RpdGxlIHtcbiAgZm9udC1zaXplOiBjbGFtcCgyLjVyZW0sIDZ2dywgNHJlbSk7XG4gIGZvbnQtd2VpZ2h0OiA4MDA7XG4gIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMTtcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyNWVtO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMWUyOTNiIDAlLCAjNDc1NTY5IDUwJSwgIzMzNDE1NSAxMDAlKTtcbiAgYmFja2dyb3VuZC1jbGlwOiB0ZXh0O1xuICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogdGV4dDtcbiAgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IHRyYW5zcGFyZW50O1xuICB0ZXh0LXNoYWRvdzogMCAwIDQwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICBmb250LWZhbWlseTogJ0ludGVyJywgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIHNhbnMtc2VyaWY7XG59XG5cbi5kYXJrIC5zd2l0Y2hibGFkZS1jYXBhYmlsaXRpZXNfX3RpdGxlIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI2ZmZmZmZiAwJSwgI2UyZThmMCA1MCUsICNjYmQ1ZTEgMTAwJSk7XG4gIGJhY2tncm91bmQtY2xpcDogdGV4dDtcbiAgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6IHRleHQ7XG4gIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgdGV4dC1zaGFkb3c6IDAgMCA0MHB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTtcbn1cblxuLnN3aXRjaGJsYWRlLWNhcGFiaWxpdGllc19fZGVzY3JpcHRpb24ge1xuICBmb250LXNpemU6IDEuMzc1cmVtO1xuICBjb2xvcjogIzQ3NTU2OTtcbiAgbWF4LXdpZHRoOiA1NnJlbTtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIGxpbmUtaGVpZ2h0OiAxLjc7XG4gIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xuICBvcGFjaXR5OiAwLjk7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtZmFtaWx5OiAnSW50ZXInLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgc2Fucy1zZXJpZjtcbn1cblxuLmRhcmsgLnN3aXRjaGJsYWRlLWNhcGFiaWxpdGllc19fZGVzY3JpcHRpb24ge1xuICBjb2xvcjogIzk0YTNiODtcbn1cblxuLnN3aXRjaGJsYWRlLWNhcC1ncmlkIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gIGdhcDogMi41cmVtO1xuICBtYXJnaW4tdG9wOiA0cmVtO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuc3dpdGNoYmxhZGUtY2FwLWdyaWQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gICAgZ2FwOiAzcmVtO1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLnN3aXRjaGJsYWRlLWNhcC1ncmlkIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgIGdhcDogMy41cmVtO1xuICB9XG59XG5cbi5zd2l0Y2hibGFkZS1jYXAtY2FyZCB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45OCkgMCUsIFxuICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45NSkgNTAlLFxuICAgIHJnYmEoMjUwLCAyNTAsIDI0OSwgMC45MikgMTAwJSk7XG4gIGJvcmRlci1yYWRpdXM6IDJyZW07XG4gIHBhZGRpbmc6IDNyZW0gMi41cmVtO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7XG4gIGJveC1zaGFkb3c6IFxuICAgIDAgMjVweCA1MHB4IHJnYmEoMCwgMCwgMCwgMC4wOCksXG4gICAgMCAxMHB4IDI1cHggcmdiYSgwLCAwLCAwLCAwLjA0KSxcbiAgICBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40KTtcbiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDMwcHgpO1xuICB0cmFuc2l0aW9uOiBhbGwgMC41cyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYW5pbWF0aW9uOiBmYWRlSW5VcCAwLjhzIGVhc2UgZm9yd2FyZHM7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMHB4KTtcbiAgb3BhY2l0eTogMDtcbn1cblxuLnN3aXRjaGJsYWRlLWNhcC1jYXJkOm50aC1jaGlsZCgxKSB7IGFuaW1hdGlvbi1kZWxheTogMC4xczsgfVxuLnN3aXRjaGJsYWRlLWNhcC1jYXJkOm50aC1jaGlsZCgyKSB7IGFuaW1hdGlvbi1kZWxheTogMC4yczsgfVxuLnN3aXRjaGJsYWRlLWNhcC1jYXJkOm50aC1jaGlsZCgzKSB7IGFuaW1hdGlvbi1kZWxheTogMC4zczsgfVxuLnN3aXRjaGJsYWRlLWNhcC1jYXJkOm50aC1jaGlsZCg0KSB7IGFuaW1hdGlvbi1kZWxheTogMC40czsgfVxuXG5Aa2V5ZnJhbWVzIGZhZGVJblVwIHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNDBweCk7XG4gIH1cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICB9XG59XG5cbi5zd2l0Y2hibGFkZS1jYXAtY2FyZDo6YmVmb3JlIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBcbiAgICByZ2JhKDU5LCAxMzAsIDI0NiwgMC4wMikgMCUsIFxuICAgIHJnYmEoMTQ3LCA1MSwgMjM0LCAwLjAyKSA1MCUsXG4gICAgcmdiYSgxNiwgMTg1LCAxMjksIDAuMDIpIDEwMCUpO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNHMgZWFzZTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi5zd2l0Y2hibGFkZS1jYXAtY2FyZDpob3ZlciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTZweCkgc2NhbGUoMS4wMik7XG4gIGJveC1zaGFkb3c6IFxuICAgIDAgMzVweCA3MHB4IHJnYmEoMCwgMCwgMCwgMC4xNSksXG4gICAgMCAxNXB4IDM1cHggcmdiYSg1OSwgMTMwLCAyNDYsIDAuMDgpLFxuICAgIGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO1xuICBib3JkZXItY29sb3I6IHJnYmEoNTksIDEzMCwgMjQ2LCAwLjMpO1xufVxuXG4uc3dpdGNoYmxhZGUtY2FwLWNhcmQ6aG92ZXI6OmJlZm9yZSB7XG4gIG9wYWNpdHk6IDE7XG59XG5cbi5kYXJrIC5zd2l0Y2hibGFkZS1jYXAtY2FyZCB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgIHJnYmEoNTEsIDY1LCA4NSwgMC44KSAwJSwgXG4gICAgcmdiYSgzMCwgNDEsIDU5LCAwLjYpIDUwJSxcbiAgICByZ2JhKDE1LCAyMywgNDIsIDAuNCkgMTAwJSk7XG4gIGJvcmRlci1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xuICBib3gtc2hhZG93OiBcbiAgICAwIDI1cHggNTBweCByZ2JhKDAsIDAsIDAsIDAuMyksXG4gICAgMCAxMHB4IDI1cHggcmdiYSgwLCAwLCAwLCAwLjIpLFxuICAgIGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xufVxuXG4uZGFyayAuc3dpdGNoYmxhZGUtY2FwLWNhcmQ6aG92ZXIge1xuICBib3JkZXItY29sb3I6IHJnYmEoNTksIDEzMCwgMjQ2LCAwLjQpO1xuICBib3gtc2hhZG93OiBcbiAgICAwIDM1cHggNzBweCByZ2JhKDAsIDAsIDAsIDAuNSksXG4gICAgMCAxNXB4IDM1cHggcmdiYSg1OSwgMTMwLCAyNDYsIDAuMTUpLFxuICAgIGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xufVxuXG4uc3dpdGNoYmxhZGUtY2FwLWljb24ge1xuICB3aWR0aDogNHJlbTtcbiAgaGVpZ2h0OiA0cmVtO1xuICBtYXJnaW46IDAgYXV0byAxLjVyZW07XG4gIGJvcmRlci1yYWRpdXM6IDEuMjVyZW07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgMC40cyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJveC1zaGFkb3c6IFxuICAgIDAgMTBweCAyNXB4IHJnYmEoNTksIDEzMCwgMjQ2LCAwLjI1KSxcbiAgICAwIDRweCAxMnB4IHJnYmEoOTksIDEwMiwgMjQxLCAwLjE1KSxcbiAgICBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcbn1cblxuLnN3aXRjaGJsYWRlLWNhcC1pY29uOjpiZWZvcmUge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg0NWRlZywgdHJhbnNwYXJlbnQgMzAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMikgNTAlLCB0cmFuc3BhcmVudCA3MCUpO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC42cyBlYXNlO1xufVxuXG4uc3dpdGNoYmxhZGUtY2FwLWNhcmQ6aG92ZXIgLnN3aXRjaGJsYWRlLWNhcC1pY29uIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpIHJvdGF0ZSg1ZGVnKTtcbiAgYm94LXNoYWRvdzogXG4gICAgMCAxNXB4IDM1cHggcmdiYSg1OSwgMTMwLCAyNDYsIDAuMzUpLFxuICAgIDAgOHB4IDIwcHggcmdiYSg5OSwgMTAyLCAyNDEsIDAuMjUpLFxuICAgIGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpO1xufVxuXG4uc3dpdGNoYmxhZGUtY2FwLWNhcmQ6aG92ZXIgLnN3aXRjaGJsYWRlLWNhcC1pY29uOjpiZWZvcmUge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG59XG5cbi5zd2l0Y2hibGFkZS1jYXAtaWNvbiBzdmcge1xuICB3aWR0aDogMnJlbTtcbiAgaGVpZ2h0OiAycmVtO1xuICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlO1xufVxuXG4uc3dpdGNoYmxhZGUtY2FwLWNhcmQ6aG92ZXIgLnN3aXRjaGJsYWRlLWNhcC1pY29uIHN2ZyB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMS4xKTtcbn1cblxuLyogQ2FwYWJpbGl0eSBDYXJkIFR5cG9ncmFwaHkgKi9cbi5zd2l0Y2hibGFkZS1jYXAtdGl0bGUge1xuICBmb250LXNpemU6IDEuNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgbWFyZ2luOiAxLjVyZW0gMCAxcmVtO1xuICBjb2xvcjogIzFlMjkzYjtcbiAgbGluZS1oZWlnaHQ6IDEuMztcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gIGZvbnQtZmFtaWx5OiAnSW50ZXInLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgc2Fucy1zZXJpZjtcbn1cblxuLmRhcmsgLnN3aXRjaGJsYWRlLWNhcC10aXRsZSB7XG4gIGNvbG9yOiAjZjFmNWY5O1xufVxuXG4uc3dpdGNoYmxhZGUtY2FwLWRlc2Mge1xuICBmb250LXNpemU6IDEuMTI1cmVtO1xuICBjb2xvcjogIzQ3NTU2OTtcbiAgbGluZS1oZWlnaHQ6IDEuNztcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIG1hcmdpbjogMDtcbiAgZm9udC1mYW1pbHk6ICdJbnRlcicsIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBzYW5zLXNlcmlmO1xufVxuXG4uZGFyayAuc3dpdGNoYmxhZGUtY2FwLWRlc2Mge1xuICBjb2xvcjogI2NiZDVlMTtcbn1cblxuLyogRGFzaGJvYXJkIFZpc3VhbCBTdHlsZXMgLSBNb2Rlcm4gR2xhc3MgTW9ycGhpc20gKi9cbi5zd2l0Y2hibGFkZS1kYXNoYm9hcmRfX3Zpc3VhbCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luOiA0cmVtIDA7XG59XG5cbi5zd2l0Y2hibGFkZS1kYXNoYm9hcmRfX3Zpc3VhbDo6YmVmb3JlIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQ6IC0ycmVtO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBcbiAgICByZ2JhKDU5LCAxMzAsIDI0NiwgMC4xNSksIFxuICAgIHJnYmEoMTQ3LCA1MSwgMjM0LCAwLjEyKSwgXG4gICAgcmdiYSgxNiwgMTg1LCAxMjksIDAuMDgpKTtcbiAgYm9yZGVyLXJhZGl1czogMnJlbTtcbiAgZmlsdGVyOiBibHVyKDNyZW0pO1xuICBvcGFjaXR5OiAwLjY7XG4gIGFuaW1hdGlvbjogcHVsc2UtZ2xvdyA0cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBwdWxzZS1nbG93IHtcbiAgMCUsIDEwMCUgeyBvcGFjaXR5OiAwLjQ7IHRyYW5zZm9ybTogc2NhbGUoMSk7IH1cbiAgNTAlIHsgb3BhY2l0eTogMC43OyB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpOyB9XG59XG5cbi5zd2l0Y2hibGFkZS1kYXNoYm9hcmRfX2NvbnRlbnQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45NSkgMCUsIFxuICAgIHJnYmEoMjUwLCAyNTAsIDI0OSwgMC45KSAxMDAlKTtcbiAgYm9yZGVyLXJhZGl1czogMnJlbTtcbiAgcGFkZGluZzogMi41cmVtO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XG4gIGJhY2tkcm9wLWZpbHRlcjogYmx1cigyMHB4KTtcbiAgYm94LXNoYWRvdzogXG4gICAgMCAyNXB4IDUwcHggcmdiYSgwLCAwLCAwLCAwLjEpLFxuICAgIGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xufVxuXG4uZGFyayAuc3dpdGNoYmxhZGUtZGFzaGJvYXJkX19jb250ZW50IHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgXG4gICAgcmdiYSg1MSwgNjUsIDg1LCAwLjk1KSAwJSwgXG4gICAgcmdiYSgzMCwgNDEsIDU5LCAwLjkpIDEwMCUpO1xuICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTtcbiAgYm94LXNoYWRvdzogXG4gICAgMCAyNXB4IDUwcHggcmdiYSgwLCAwLCAwLCAwLjMpLFxuICAgIGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xufVxuXG4vKiBFbnZpcm9ubWVudCBDYXJkcyBHcmlkIC0gRW5oYW5jZWQgRGVzaWduICovXG4uc3dpdGNoYmxhZGUtZW52LWdyaWQge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgZ2FwOiAycmVtO1xuICBtYXJnaW4tYm90dG9tOiAzcmVtO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5zd2l0Y2hibGFkZS1lbnYtZ3JpZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKTtcbiAgfVxufVxuXG4uc3dpdGNoYmxhZGUtZW52LWNhcmQge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBcbiAgICByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTUpIDAlLCBcbiAgICByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCkgMTAwJSk7XG4gIGJvcmRlci1yYWRpdXM6IDEuMjVyZW07XG4gIHBhZGRpbmc6IDEuNXJlbTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO1xuICBib3gtc2hhZG93OiBcbiAgICAwIDEwcHggMzBweCByZ2JhKDAsIDAsIDAsIDAuMDgpLFxuICAgIDAgMXB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnN3aXRjaGJsYWRlLWVudi1jYXJkOmhvdmVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpO1xuICBib3gtc2hhZG93OiBcbiAgICAwIDIwcHggNDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpLFxuICAgIDAgNHB4IDE2cHggcmdiYSgwLCAwLCAwLCAwLjA4KTtcbn1cblxuLmRhcmsgLnN3aXRjaGJsYWRlLWVudi1jYXJkIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgXG4gICAgcmdiYSg1MSwgNjUsIDg1LCAwLjgpIDAlLCBcbiAgICByZ2JhKDMwLCA0MSwgNTksIDAuNikgNTAlLFxuICAgIHJnYmEoMTUsIDIzLCA0MiwgMC40KSAxMDAlKTtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4gIGJveC1zaGFkb3c6IFxuICAgIDAgMTBweCAzMHB4IHJnYmEoMCwgMCwgMCwgMC4zKSxcbiAgICAwIDFweCA4cHggcmdiYSgwLCAwLCAwLCAwLjIpO1xufVxuXG4uc3dpdGNoYmxhZGUtZW52LWhlYWRlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG59XG5cbi5zd2l0Y2hibGFkZS1lbnYtbmFtZSB7XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgbWFyZ2luOiAwIDAgMC41cmVtIDA7XG4gIGNvbG9yOiAjMWUyOTNiO1xuICBsZXR0ZXItc3BhY2luZzogLTAuMDE1ZW07XG4gIGZvbnQtZmFtaWx5OiAnSW50ZXInLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgc2Fucy1zZXJpZjtcbn1cblxuLmRhcmsgLnN3aXRjaGJsYWRlLWVudi1uYW1lIHtcbiAgY29sb3I6ICNmMWY1Zjk7XG59XG5cbi5zd2l0Y2hibGFkZS1lbnYtYmFkZ2Uge1xuICBmb250LXNpemU6IDAuNzVyZW07XG4gIHBhZGRpbmc6IDAuMzc1cmVtIDAuNzVyZW07XG4gIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgZm9udC1mYW1pbHk6ICdJbnRlcicsIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBzYW5zLXNlcmlmO1xufVxuXG4uc3dpdGNoYmxhZGUtZW52LWJhZGdlLWNvbnRlbnQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDAuMzc1cmVtO1xufVxuXG4uc3dpdGNoYmxhZGUtZW52LWJhZGdlLWNvbnRlbnQgc3ZnIHtcbiAgd2lkdGg6IDAuODc1cmVtO1xuICBoZWlnaHQ6IDAuODc1cmVtO1xufVxuXG4uc3dpdGNoYmxhZGUtZW52LW1ldGEge1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBjb2xvcjogIzY0NzQ4YjtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgZm9udC1mYW1pbHk6ICdJbnRlcicsIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBzYW5zLXNlcmlmO1xufVxuXG4uZGFyayAuc3dpdGNoYmxhZGUtZW52LW1ldGEge1xuICBjb2xvcjogIzk0YTNiODtcbn1cblxuLnN3aXRjaGJsYWRlLXN0YWNrLWxpc3Qge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDAuNXJlbTtcbn1cblxuLnN3aXRjaGJsYWRlLXN0YWNrLWl0ZW0ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDAuNzVyZW07XG4gIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcbiAgYm9yZGVyOiAxcHggc29saWQ7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG5cbi5zd2l0Y2hibGFkZS1zdGFjay1uYW1lIHtcbiAgZmxleDogMTtcbiAgbWluLXdpZHRoOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLnN3aXRjaGJsYWRlLXN0YWNrLXN0YXR1cyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMC41cmVtO1xuICBmbGV4LXNocmluazogMDtcbn1cblxuLyogQ0xJIEludGVyZmFjZSBTdHlsZXMgLSBFbmhhbmNlZCBUZXJtaW5hbCBEZXNpZ24gKi9cbi5zd2l0Y2hibGFkZS1jbGkge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMWExYTFhIDAlLCAjMGYwZjBmIDEwMCUpO1xuICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBmb250LWZhbWlseTogJ01vbmFjbycsICdNZW5sbycsICdVYnVudHUgTW9ubycsIG1vbm9zcGFjZTtcbiAgYm94LXNoYWRvdzogXG4gICAgMCAyMHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjQpLFxuICAgIDAgOHB4IDE2cHggcmdiYSgwLCAwLCAwLCAwLjMpLFxuICAgIGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG59XG5cbi5zd2l0Y2hibGFkZS1jbGktaGVhZGVyIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzJkMmQyZCAwJSwgIzFmMWYxZiAxMDAlKTtcbiAgcGFkZGluZzogMXJlbSAxLjI1cmVtO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzQwNDA0MDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uc3dpdGNoYmxhZGUtY2xpLWhlYWRlcjo6YmVmb3JlIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMS4yNXJlbTtcbiAgdG9wOiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgd2lkdGg6IDAuNzVyZW07XG4gIGhlaWdodDogMC43NXJlbTtcbiAgYmFja2dyb3VuZDogI2ZmNWY1NztcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBib3gtc2hhZG93OiAxLjI1cmVtIDAgMCAjZmZiZDJlLCAyLjVyZW0gMCAwICMyOGNhNDI7XG59XG5cbi5zd2l0Y2hibGFkZS1jbGktY29udGVudCB7XG4gIHBhZGRpbmc6IDJyZW07XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMxYTFhMWEgMCUsICMwZjBmMGYgMTAwJSk7XG4gIGNvbG9yOiAjZTVlNWU1O1xuICBmb250LXNpemU6IDAuOXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNztcbiAgbWF4LWhlaWdodDogNDUwcHg7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIGZvbnQtZmFtaWx5OiAnTW9uYWNvJywgJ01lbmxvJywgJ1NGIE1vbm8nLCAnQ29uc29sYXMnLCAnVWJ1bnR1IE1vbm8nLCBtb25vc3BhY2U7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbi5zd2l0Y2hibGFkZS1jbGktY29tbWFuZCB7XG4gIGNvbG9yOiAjMjJjNTVlO1xuICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtO1xuICBmb250LXdlaWdodDogNjAwO1xuICB0ZXh0LXNoYWRvdzogMCAwIDhweCByZ2JhKDM0LCAxOTcsIDk0LCAwLjMpO1xufVxuXG4uc3dpdGNoYmxhZGUtY2xpLWNvbW1hbmQ6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICckICc7XG4gIGNvbG9yOiAjNjQ3NDhiO1xuICBmb250LXdlaWdodDogNTAwO1xufVxuXG4uc3dpdGNoYmxhZGUtY2xpLW91dHB1dCB7XG4gIGNvbG9yOiAjOTRhM2I4O1xuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG4gIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgb3BhY2l0eTogMC45NTtcbn1cblxuLyogUmVzcG9uc2l2ZSBEZXNpZ24gYW5kIEFjY2Vzc2liaWxpdHkgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAuc3dpdGNoYmxhZGUtY2FwYWJpbGl0aWVzLXNlY3Rpb24ge1xuICAgIHBhZGRpbmc6IDVyZW0gMDtcbiAgfVxuICBcbiAgLnN3aXRjaGJsYWRlLWNhcGFiaWxpdGllc19fdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMi41cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG4gIH1cbiAgXG4gIC5zd2l0Y2hibGFkZS1jYXBhYmlsaXRpZXNfX2Rlc2NyaXB0aW9uIHtcbiAgICBmb250LXNpemU6IDEuMTI1cmVtO1xuICB9XG4gIFxuICAuc3dpdGNoYmxhZGUtY2FwLWdyaWQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIGdhcDogMnJlbTtcbiAgfVxuICBcbiAgLnN3aXRjaGJsYWRlLWNhcC1jYXJkIHtcbiAgICBwYWRkaW5nOiAyLjVyZW0gMnJlbTtcbiAgfVxuICBcbiAgLnN3aXRjaGJsYWRlLWNhcC10aXRsZSB7XG4gICAgZm9udC1zaXplOiAxLjM3NXJlbTtcbiAgfVxuICBcbiAgLnN3aXRjaGJsYWRlLWNhcC1kZXNjIHtcbiAgICBmb250LXNpemU6IDFyZW07XG4gIH1cbiAgXG4gIC5zd2l0Y2hibGFkZS1jbGktaGVhZGVyOjpiZWZvcmUge1xuICAgIGxlZnQ6IDFyZW07XG4gIH1cbiAgXG4gIC5zd2l0Y2hibGFkZS1jbGktY29udGVudCB7XG4gICAgcGFkZGluZzogMS41cmVtO1xuICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICB9XG59XG5cbi8qIFJlZHVjZWQgTW90aW9uIFN1cHBvcnQgKi9cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gIC5zd2l0Y2hibGFkZS1jYXAtY2FyZCxcbiAgLnN3aXRjaGJsYWRlLWNhcC1pY29uLFxuICAuc3dpdGNoYmxhZGUtZW52LWNhcmQsXG4gIC5zd2l0Y2hibGFkZS1kYXNoYm9hcmRfX3Zpc3VhbDo6YmVmb3JlIHtcbiAgICBhbmltYXRpb246IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgfVxuICBcbiAgLnN3aXRjaGJsYWRlLWNhcC1jYXJkOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbiAgXG4gIC5zd2l0Y2hibGFkZS1jYXAtY2FyZDpob3ZlciAuc3dpdGNoYmxhZGUtY2FwLWljb24ge1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxuICBcbiAgLnN3aXRjaGJsYWRlLWRhc2hib2FyZF9fdmlzdWFsOjpiZWZvcmUge1xuICAgIGZpbHRlcjogbm9uZTtcbiAgfVxufVxuXG4vKiBIaWdoIGNvbnRyYXN0IG1vZGUgc3VwcG9ydCAqL1xuQG1lZGlhIChwcmVmZXJzLWNvbnRyYXN0OiBoaWdoKSB7XG4gIC5zd2l0Y2hibGFkZS1jYXAtY2FyZCB7XG4gICAgYm9yZGVyLXdpZHRoOiAycHg7XG4gICAgYm9yZGVyLWNvbG9yOiBjdXJyZW50Q29sb3I7XG4gIH1cbiAgXG4gIC5zd2l0Y2hibGFkZS1jbGkge1xuICAgIGJvcmRlci13aWR0aDogMnB4O1xuICAgIGJvcmRlci1jb2xvcjogY3VycmVudENvbG9yO1xuICB9XG59XG5cbi8qIFBlcmZvcm1hbmNlIE9wdGltaXphdGlvbnMgKi9cbi5zd2l0Y2hibGFkZS1jYXAtY2FyZCxcbi5zd2l0Y2hibGFkZS1lbnYtY2FyZCxcbi5zd2l0Y2hibGFkZS1jbGkge1xuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xufVxuXG4vKiBGb2N1cyBzdGF0ZXMgZm9yIGFjY2Vzc2liaWxpdHkgKi9cbi5zd2l0Y2hibGFkZS1jYXAtY2FyZDpmb2N1cy12aXNpYmxlIHtcbiAgb3V0bGluZTogMnB4IHNvbGlkICMzYjgyZjY7XG4gIG91dGxpbmUtb2Zmc2V0OiAycHg7XG59XG4iLCIvKipcbiAqIFRDTyBDb21wb25lbnQgQ1NTIC0gQ2xlYW4sIFByb2Zlc3Npb25hbCBEZXNpZ25cbiAqL1xuXG4vKiBNYWluIFNlY3Rpb24gKi9cbi50Y28tc2VjdGlvbiB7XG4gIHBhZGRpbmc6IDZyZW0gMDtcbiAgLyogUmVtb3ZlIGJhY2tncm91bmQgb3ZlcnJpZGUgLSB1c2UgZ2xvYmFsIHNlY3Rpb24gYmFja2dyb3VuZCAqL1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi50Y28tc2VjdGlvbjo6YmVmb3JlIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQ6IDA7XG4gIGJhY2tncm91bmQ6IFxuICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMjAlIDI1JSwgcmdiYSg1OSwgMTMwLCAyNDYsIDAuMDYpIDAlLCB0cmFuc3BhcmVudCA1MCUpLFxuICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgODAlIDc1JSwgcmdiYSgxNiwgMTg1LCAxMjksIDAuMDQpIDAlLCB0cmFuc3BhcmVudCA1MCUpO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLmRhcmsgLnRjby1zZWN0aW9uOjpiZWZvcmUge1xuICBiYWNrZ3JvdW5kOiBcbiAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDIwJSAyNSUsIHJnYmEoNTksIDEzMCwgMjQ2LCAwLjEyKSAwJSwgdHJhbnNwYXJlbnQgNTAlKSxcbiAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDgwJSA3NSUsIHJnYmEoMTYsIDE4NSwgMTI5LCAwLjA4KSAwJSwgdHJhbnNwYXJlbnQgNTAlKTtcbn1cblxuLnRjb19fY29udGFpbmVyIHtcbiAgbWF4LXdpZHRoOiA5MHJlbTtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHBhZGRpbmc6IDAgMXJlbTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgLnRjb19fY29udGFpbmVyIHtcbiAgICBwYWRkaW5nOiAwIDEuNXJlbTtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC50Y29fX2NvbnRhaW5lciB7XG4gICAgcGFkZGluZzogMCAycmVtO1xuICB9XG59XG5cbi8qIEhlYWRlciBTZWN0aW9uIC0gTWF0Y2hpbmcgY2FwYWJpbGl0aWVzIGNvbXBvbmVudCAqL1xuLnRjb19faGVhZGVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtYXJnaW4tYm90dG9tOiA1cmVtO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi50Y29fX3RpdGxlIHtcbiAgZm9udC1zaXplOiBjbGFtcCgyLjVyZW0sIDZ2dywgNHJlbSk7XG4gIGZvbnQtd2VpZ2h0OiA4MDA7XG4gIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMTtcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyNWVtO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMWUyOTNiIDAlLCAjNDc1NTY5IDUwJSwgIzMzNDE1NSAxMDAlKTtcbiAgYmFja2dyb3VuZC1jbGlwOiB0ZXh0O1xuICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogdGV4dDtcbiAgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IHRyYW5zcGFyZW50O1xuICB0ZXh0LXNoYWRvdzogMCAwIDQwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICBmb250LWZhbWlseTogJ0ludGVyJywgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIHNhbnMtc2VyaWY7XG59XG5cbi5kYXJrIC50Y29fX3RpdGxlIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI2ZmZmZmZiAwJSwgI2UyZThmMCA1MCUsICNjYmQ1ZTEgMTAwJSk7XG4gIGJhY2tncm91bmQtY2xpcDogdGV4dDtcbiAgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6IHRleHQ7XG4gIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgdGV4dC1zaGFkb3c6IDAgMCA0MHB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTtcbn1cblxuLnRjb19fZGVzY3JpcHRpb24ge1xuICBmb250LXNpemU6IDEuMzc1cmVtO1xuICBjb2xvcjogIzQ3NTU2OTtcbiAgbWF4LXdpZHRoOiA1NnJlbTtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIGxpbmUtaGVpZ2h0OiAxLjc7XG4gIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xuICBvcGFjaXR5OiAwLjk7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtZmFtaWx5OiAnSW50ZXInLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgc2Fucy1zZXJpZjtcbn1cblxuLmRhcmsgLnRjb19fZGVzY3JpcHRpb24ge1xuICBjb2xvcjogIzk0YTNiODtcbn1cblxuLyogVENPIFRhYmxlICovXG4udGNvLXRhYmxlIHtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk1KTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjYpO1xuICBib3JkZXItcmFkaXVzOiAxLjVyZW07XG4gIGJveC1zaGFkb3c6IDAgMjBweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4wOCk7XG4gIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxNXB4KTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgbWFyZ2luLWJvdHRvbTogNHJlbTtcbn1cblxuLmRhcmsgLnRjby10YWJsZSB7XG4gIGJhY2tncm91bmQ6IHJnYmEoNTEsIDY1LCA4NSwgMC42KTtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpO1xuICBib3gtc2hhZG93OiAwIDIwcHggNDBweCByZ2JhKDAsIDAsIDAsIDAuMik7XG59XG5cbi8qIFRhYmxlIHdyYXBwZXIgZm9yIGhvcml6b250YWwgc2Nyb2xsIG9uIHNtYWxsZXIgc2NyZWVucyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDEyNzlweCkge1xuICAudGNvLXRhYmxlIHtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xuICB9XG4gIFxuICAudGNvLXRhYmxlLWhlYWRlcixcbiAgLnRjby10YWJsZS1yb3cge1xuICAgIG1pbi13aWR0aDogMTA1MHB4O1xuICB9XG59XG5cbi50Y28tdGFibGUtaGVhZGVyIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAzMDBweCByZXBlYXQoYXV0by1maXQsIG1pbm1heCgxODBweCwgMWZyKSk7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoNTksIDEzMCwgMjQ2LCAwLjEpIDAlLCByZ2JhKDE0NywgNTEsIDIzNCwgMC4wNSkgMTAwJSk7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7XG59XG5cbi5kYXJrIC50Y28tdGFibGUtaGVhZGVyIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSg1OSwgMTMwLCAyNDYsIDAuMikgMCUsIHJnYmEoMTQ3LCA1MSwgMjM0LCAwLjEpIDEwMCUpO1xuICBib3JkZXItYm90dG9tLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiAxMjc5cHgpIHtcbiAgLnRjby10YWJsZS1oZWFkZXIge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMzAwcHggcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjAwcHgsIDFmcikpO1xuICB9XG59XG5cbi50Y28taGVhZGVyLWNlbGwge1xuICBwYWRkaW5nOiAxcmVtIDAuNzVyZW07XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgY29sb3I6ICMxZTI5M2I7XG4gIGZvbnQtZmFtaWx5OiAnSW50ZXInLCBzYW5zLXNlcmlmO1xuICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4gIGxpbmUtaGVpZ2h0OiAxLjM7XG59XG5cbi50Y28taGVhZGVyLWNlbGw6bGFzdC1jaGlsZCB7XG4gIGJvcmRlci1yaWdodDogbm9uZTtcbn1cblxuLnRjby1oZWFkZXItY2VsbC0tY2F0ZWdvcnkge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBiYWNrZ3JvdW5kOiByZ2JhKDcxLCA4NSwgMTA1LCAwLjA1KTtcbiAgcGFkZGluZzogMXJlbSAxLjVyZW07XG4gIGZvbnQtc2l6ZTogMXJlbTtcbn1cblxuLyogSW5kZXgtYmFzZWQgY29sdW1uIHN0eWxpbmcgLSBmaXJzdCBjb2x1bW4gcmVkLCBzZWNvbmQgYmx1ZSwgbGFzdCBhbHdheXMgZ3JlZW4gKi9cbi50Y28taGVhZGVyLWNlbGwtLTAgeyBjb2xvcjogI2RjMjYyNjsgfSAvKiBGaXJzdCBjb2x1bW4gLSBSZWQgKi9cbi50Y28taGVhZGVyLWNlbGwtLTEgeyBjb2xvcjogIzI1NjNlYjsgfSAvKiBTZWNvbmQgY29sdW1uIC0gQmx1ZSAqL1xuLnRjby1oZWFkZXItY2VsbC0tMiB7IGNvbG9yOiAjMDU5NjY5OyB9IC8qIFRoaXJkL0xhc3QgY29sdW1uIC0gR3JlZW4gKi9cblxuLyogRm9yIG1vcmUgdGhhbiAzIGNvbHVtbnMsIGFkZCBhZGRpdGlvbmFsIGNvbG9ycyBidXQgZW5zdXJlIGxhc3QgaXMgYWx3YXlzIGdyZWVuICovXG4udGNvLWhlYWRlci1jZWxsLS0zIHsgY29sb3I6ICNmNTllMGI7IH0gLyogRm91cnRoIGNvbHVtbiAtIEFtYmVyICovXG4udGNvLWhlYWRlci1jZWxsLS00IHsgY29sb3I6ICM4YjVjZjY7IH0gLyogRmlmdGggY29sdW1uIC0gUHVycGxlICovXG5cbi5kYXJrIC50Y28taGVhZGVyLWNlbGwge1xuICBjb2xvcjogI2ZmZmZmZjtcbn1cblxuLmRhcmsgLnRjby1oZWFkZXItY2VsbC0tMCB7IGNvbG9yOiAjZmNhNWE1OyB9IC8qIEZpcnN0IGNvbHVtbiAtIExpZ2h0IFJlZCAqL1xuLmRhcmsgLnRjby1oZWFkZXItY2VsbC0tMSB7IGNvbG9yOiAjOTNjNWZkOyB9IC8qIFNlY29uZCBjb2x1bW4gLSBMaWdodCBCbHVlICovXG4uZGFyayAudGNvLWhlYWRlci1jZWxsLS0yIHsgY29sb3I6ICM2ZWU3Yjc7IH0gLyogVGhpcmQvTGFzdCBjb2x1bW4gLSBMaWdodCBHcmVlbiAqL1xuLmRhcmsgLnRjby1oZWFkZXItY2VsbC0tMyB7IGNvbG9yOiAjZmJiZjI0OyB9IC8qIEZvdXJ0aCBjb2x1bW4gLSBMaWdodCBBbWJlciAqL1xuLmRhcmsgLnRjby1oZWFkZXItY2VsbC0tNCB7IGNvbG9yOiAjYzRiNWZkOyB9IC8qIEZpZnRoIGNvbHVtbiAtIExpZ2h0IFB1cnBsZSAqL1xuXG5AbWVkaWEgKG1heC13aWR0aDogMTI3OXB4KSB7XG4gIC50Y28taGVhZGVyLWNlbGwge1xuICAgIGJvcmRlci1yaWdodDogbm9uZTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgcGFkZGluZzogMXJlbTtcbiAgfVxuICBcbiAgLnRjby1oZWFkZXItY2VsbDpsYXN0LWNoaWxkIHtcbiAgICBib3JkZXItYm90dG9tOiBub25lO1xuICB9XG4gIFxuICAudGNvLWhlYWRlci1jZWxsLS1jYXRlZ29yeSB7XG4gICAgcG9zaXRpb246IHN0aWNreTtcbiAgICBsZWZ0OiAwO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoNzEsIDg1LCAxMDUsIDAuMSk7XG4gICAgei1pbmRleDogMjtcbiAgfVxufVxuXG4udGNvLXRhYmxlLXJvdyB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMzAwcHggcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMTgwcHgsIDFmcikpO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xufVxuXG4udGNvLXRhYmxlLXJvdzpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEoNTksIDEzMCwgMjQ2LCAwLjAyKTtcbn1cblxuLnRjby10YWJsZS1yb3c6bGFzdC1jaGlsZCB7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7XG59XG5cbi5kYXJrIC50Y28tdGFibGUtcm93IHtcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTtcbn1cblxuLmRhcmsgLnRjby10YWJsZS1yb3c6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDU5LCAxMzAsIDI0NiwgMC4wNSk7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiAxMjc5cHgpIHtcbiAgLnRjby10YWJsZS1yb3cge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMzAwcHggcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjAwcHgsIDFmcikpO1xuICB9XG59XG5cbi50Y28tY2VsbCB7XG4gIHBhZGRpbmc6IDEuNXJlbSAxcmVtO1xuICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG59XG5cbi50Y28tY2VsbDpsYXN0LWNoaWxkIHtcbiAgYm9yZGVyLXJpZ2h0OiBub25lO1xufVxuXG4udGNvLWNlbGwtLWNhdGVnb3J5IHtcbiAgYmFja2dyb3VuZDogcmdiYSgyNDgsIDI1MCwgMjUyLCAwLjgpO1xuICBwYWRkaW5nOiAxLjVyZW07XG59XG5cbi5kYXJrIC50Y28tY2VsbC0tY2F0ZWdvcnkge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDMwLCA0MSwgNTksIDAuNCk7XG59XG5cbi50Y28tY2VsbC0tMDo6YmVmb3JlLFxuLnRjby1jZWxsLS0xOjpiZWZvcmUsXG4udGNvLWNlbGwtLTI6OmJlZm9yZSxcbi50Y28tY2VsbC0tMzo6YmVmb3JlLFxuLnRjby1jZWxsLS00OjpiZWZvcmUge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIGJvdHRvbTogMDtcbiAgd2lkdGg6IDRweDtcbiAgYm9yZGVyLXJhZGl1czogMCAycHggMnB4IDA7XG59XG5cbi50Y28tY2VsbC0tMCB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuLnRjby1jZWxsLS0wOjpiZWZvcmUgeyBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjZWY0NDQ0LCAjZGMyNjI2KTsgfVxuXG4udGNvLWNlbGwtLTEgeyBwb3NpdGlvbjogcmVsYXRpdmU7IH1cbi50Y28tY2VsbC0tMTo6YmVmb3JlIHsgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzNiODJmNiwgIzI1NjNlYik7IH1cblxuLnRjby1jZWxsLS0yIHsgcG9zaXRpb246IHJlbGF0aXZlOyB9XG4udGNvLWNlbGwtLTI6OmJlZm9yZSB7IGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMxMGI5ODEsICMwNTk2NjkpOyB9XG5cbi50Y28tY2VsbC0tMyB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuLnRjby1jZWxsLS0zOjpiZWZvcmUgeyBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjZjU5ZTBiLCAjZDk3NzA2KTsgfVxuXG4udGNvLWNlbGwtLTQgeyBwb3NpdGlvbjogcmVsYXRpdmU7IH1cbi50Y28tY2VsbC0tNDo6YmVmb3JlIHsgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzhiNWNmNiwgIzdjM2FlZCk7IH1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDEyNzlweCkge1xuICAudGNvLWNlbGwge1xuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xuICAgIHBhZGRpbmc6IDFyZW07XG4gIH1cbiAgXG4gIC50Y28tY2VsbDpsYXN0LWNoaWxkIHtcbiAgICBib3JkZXItcmlnaHQ6IG5vbmU7XG4gIH1cbiAgXG4gIC50Y28tY2VsbC0tY2F0ZWdvcnkge1xuICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgbGVmdDogMDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI0OCwgMjUwLCAyNTIsIDAuOTUpO1xuICAgIHotaW5kZXg6IDI7XG4gICAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xuICB9XG4gIFxuICAuZGFyayAudGNvLWNlbGwtLWNhdGVnb3J5IHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDMwLCA0MSwgNTksIDAuOTUpO1xuICB9XG59XG5cbi50Y28tY2F0ZWdvcnktdGl0bGUge1xuICBmb250LXNpemU6IDEuMTI1cmVtO1xuICBmb250LXdlaWdodDogNjAwO1xuICBjb2xvcjogIzBmMTcyYTtcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZjtcbn1cblxuLmRhcmsgLnRjby1jYXRlZ29yeS10aXRsZSB7XG4gIGNvbG9yOiAjZmZmZmZmO1xufVxuXG4udGNvLWNhdGVnb3J5LWRlc2NyaXB0aW9uIHtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgY29sb3I6ICM0NzU1Njk7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIG9wYWNpdHk6IDAuODtcbn1cblxuLmRhcmsgLnRjby1jYXRlZ29yeS1kZXNjcmlwdGlvbiB7XG4gIGNvbG9yOiAjOTRhM2I4O1xufVxuXG4udGNvLW9wdGlvbi10aXRsZSB7XG4gIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbTtcbiAgZm9udC1mYW1pbHk6ICdJbnRlcicsIHNhbnMtc2VyaWY7XG4gIGxpbmUtaGVpZ2h0OiAxLjM7XG59XG5cbi50Y28tb3B0aW9uLXN1YnRpdGxlIHtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTtcbiAgb3BhY2l0eTogMC44O1xuICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZjtcbn1cblxuLnRjby1jZWxsLS0wIC50Y28tb3B0aW9uLXRpdGxlIHsgY29sb3I6ICNkYzI2MjY7IH1cbi50Y28tY2VsbC0tMSAudGNvLW9wdGlvbi10aXRsZSB7IGNvbG9yOiAjMjU2M2ViOyB9XG4udGNvLWNlbGwtLTIgLnRjby1vcHRpb24tdGl0bGUgeyBjb2xvcjogIzA1OTY2OTsgfVxuLnRjby1jZWxsLS0zIC50Y28tb3B0aW9uLXRpdGxlIHsgY29sb3I6ICNmNTllMGI7IH1cbi50Y28tY2VsbC0tNCAudGNvLW9wdGlvbi10aXRsZSB7IGNvbG9yOiAjOGI1Y2Y2OyB9XG5cbi50Y28tY2VsbC0tMCAudGNvLW9wdGlvbi1zdWJ0aXRsZSB7IGNvbG9yOiAjZGMyNjI2OyB9XG4udGNvLWNlbGwtLTEgLnRjby1vcHRpb24tc3VidGl0bGUgeyBjb2xvcjogIzI1NjNlYjsgfVxuLnRjby1jZWxsLS0yIC50Y28tb3B0aW9uLXN1YnRpdGxlIHsgY29sb3I6ICMwNTk2Njk7IH1cbi50Y28tY2VsbC0tMyAudGNvLW9wdGlvbi1zdWJ0aXRsZSB7IGNvbG9yOiAjZjU5ZTBiOyB9XG4udGNvLWNlbGwtLTQgLnRjby1vcHRpb24tc3VidGl0bGUgeyBjb2xvcjogIzhiNWNmNjsgfVxuXG4uZGFyayAudGNvLWNlbGwtLTAgLnRjby1vcHRpb24tdGl0bGUgeyBjb2xvcjogI2ZjYTVhNTsgfVxuLmRhcmsgLnRjby1jZWxsLS0xIC50Y28tb3B0aW9uLXRpdGxlIHsgY29sb3I6ICM5M2M1ZmQ7IH1cbi5kYXJrIC50Y28tY2VsbC0tMiAudGNvLW9wdGlvbi10aXRsZSB7IGNvbG9yOiAjNmVlN2I3OyB9XG4uZGFyayAudGNvLWNlbGwtLTMgLnRjby1vcHRpb24tdGl0bGUgeyBjb2xvcjogI2ZiYmYyNDsgfVxuLmRhcmsgLnRjby1jZWxsLS00IC50Y28tb3B0aW9uLXRpdGxlIHsgY29sb3I6ICNjNGI1ZmQ7IH1cblxuLmRhcmsgLnRjby1jZWxsLS0wIC50Y28tb3B0aW9uLXN1YnRpdGxlIHsgY29sb3I6ICNmY2E1YTU7IH1cbi5kYXJrIC50Y28tY2VsbC0tMSAudGNvLW9wdGlvbi1zdWJ0aXRsZSB7IGNvbG9yOiAjOTNjNWZkOyB9XG4uZGFyayAudGNvLWNlbGwtLTIgLnRjby1vcHRpb24tc3VidGl0bGUgeyBjb2xvcjogIzZlZTdiNzsgfVxuLmRhcmsgLnRjby1jZWxsLS0zIC50Y28tb3B0aW9uLXN1YnRpdGxlIHsgY29sb3I6ICNmYmJmMjQ7IH1cbi5kYXJrIC50Y28tY2VsbC0tNCAudGNvLW9wdGlvbi1zdWJ0aXRsZSB7IGNvbG9yOiAjYzRiNWZkOyB9XG5cbi50Y28tb3B0aW9uLWl0ZW1zIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAwO1xuICBmb250LXNpemU6IDAuOHJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNDtcbn1cblxuLnRjby1vcHRpb24taXRlbXMgbGkge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHBhZGRpbmctbGVmdDogMXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMC40cmVtO1xuICBjb2xvcjogIzM3NDE1MTtcbn1cblxuLnRjby1vcHRpb24taXRlbXMgbGk6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICfigKInO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4udGNvLWNlbGwtLTAgLnRjby1vcHRpb24taXRlbXMgbGkgeyBjb2xvcjogIzdmMWQxZDsgfVxuLnRjby1jZWxsLS0xIC50Y28tb3B0aW9uLWl0ZW1zIGxpIHsgY29sb3I6ICMxZTNhOGE7IH1cbi50Y28tY2VsbC0tMiAudGNvLW9wdGlvbi1pdGVtcyBsaSB7IGNvbG9yOiAjMDY0ZTNiOyB9XG4udGNvLWNlbGwtLTMgLnRjby1vcHRpb24taXRlbXMgbGkgeyBjb2xvcjogIzkyNDAwZTsgfVxuLnRjby1jZWxsLS00IC50Y28tb3B0aW9uLWl0ZW1zIGxpIHsgY29sb3I6ICM1ODFjODc7IH1cblxuLmRhcmsgLnRjby1vcHRpb24taXRlbXMgbGkgeyBjb2xvcjogI2QxZDVkYjsgfVxuLmRhcmsgLnRjby1jZWxsLS0wIC50Y28tb3B0aW9uLWl0ZW1zIGxpIHsgY29sb3I6ICNmY2E1YTU7IH1cbi5kYXJrIC50Y28tY2VsbC0tMSAudGNvLW9wdGlvbi1pdGVtcyBsaSB7IGNvbG9yOiAjOTNjNWZkOyB9XG4uZGFyayAudGNvLWNlbGwtLTIgLnRjby1vcHRpb24taXRlbXMgbGkgeyBjb2xvcjogIzZlZTdiNzsgfVxuLmRhcmsgLnRjby1jZWxsLS0zIC50Y28tb3B0aW9uLWl0ZW1zIGxpIHsgY29sb3I6ICNmYmJmMjQ7IH1cbi5kYXJrIC50Y28tY2VsbC0tNCAudGNvLW9wdGlvbi1pdGVtcyBsaSB7IGNvbG9yOiAjYzRiNWZkOyB9XG5cbi8qIFRvdGFsIEJ1c2luZXNzIEltcGFjdCBSb3cgU3R5bGluZyAqL1xuLnRjby10YWJsZS1yb3ctLXRvdGFsIHtcbiAgYm9yZGVyLXRvcDogMnB4IHNvbGlkIHJnYmEoMTYsIDE4NSwgMTI5LCAwLjMpO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDE2LCAxODUsIDEyOSwgMC4wNSk7XG59XG5cbi5kYXJrIC50Y28tdGFibGUtcm93LS10b3RhbCB7XG4gIGJvcmRlci10b3AtY29sb3I6IHJnYmEoMTYsIDE4NSwgMTI5LCAwLjQpO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDE2LCAxODUsIDEyOSwgMC4xKTtcbn1cblxuLnRjby1jZWxsLS10b3RhbC1jYXRlZ29yeSB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMTYsIDE4NSwgMTI5LCAwLjEpO1xuICBmb250LXdlaWdodDogNjAwO1xufVxuXG4uZGFyayAudGNvLWNlbGwtLXRvdGFsLWNhdGVnb3J5IHtcbiAgYmFja2dyb3VuZDogcmdiYSgxNiwgMTg1LCAxMjksIDAuMTUpO1xufVxuXG4udGNvLXRhYmxlLXJvdy0tdG90YWwgLnRjby1jYXRlZ29yeS10aXRsZSB7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGNvbG9yOiAjMDU5NjY5O1xufVxuXG4uZGFyayAudGNvLXRhYmxlLXJvdy0tdG90YWwgLnRjby1jYXRlZ29yeS10aXRsZSB7XG4gIGNvbG9yOiAjMTBiOTgxO1xufVxuXG4udGNvLWNlbGwtLXRvdGFsIC50Y28tb3B0aW9uLXRpdGxlIHtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbn1cblxuLnRjby1jZWxsLS10b3RhbCAudGNvLW9wdGlvbi1zdWJ0aXRsZSB7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi8qIEJ1c2luZXNzIEltcGFjdCBTdW1tYXJ5ICovXG4udGNvLWltcGFjdC1zdW1tYXJ5IHtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk1KTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjYpO1xuICBib3JkZXItcmFkaXVzOiAxLjVyZW07XG4gIHBhZGRpbmc6IDNyZW0gMnJlbTtcbiAgYm94LXNoYWRvdzogMCAyMHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjA4KTtcbiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDE1cHgpO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG1hcmdpbi10b3A6IDRyZW07XG59XG5cbi5kYXJrIC50Y28taW1wYWN0LXN1bW1hcnkge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDUxLCA2NSwgODUsIDAuNik7XG4gIGJvcmRlci1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTtcbiAgYm94LXNoYWRvdzogMCAyMHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjIpO1xufVxuXG4udGNvLWltcGFjdC10aXRsZSB7XG4gIGZvbnQtc2l6ZTogMnJlbTtcbiAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzFlMjkzYiwgIzQ3NTU2OSk7XG4gIGJhY2tncm91bmQtY2xpcDogdGV4dDtcbiAgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6IHRleHQ7XG4gIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgZm9udC1mYW1pbHk6ICdJbnRlcicsIHNhbnMtc2VyaWY7XG59XG5cbi5kYXJrIC50Y28taW1wYWN0LXRpdGxlIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI2ZmZmZmZiwgI2UyZThmMCk7XG4gIGJhY2tncm91bmQtY2xpcDogdGV4dDtcbiAgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6IHRleHQ7XG4gIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLnRjby1pbXBhY3QtZGVzY3JpcHRpb24ge1xuICBmb250LXNpemU6IDEuMTI1cmVtO1xuICBjb2xvcjogIzQ3NTU2OTtcbiAgbWFyZ2luLWJvdHRvbTogMi41cmVtO1xuICBvcGFjaXR5OiAwLjk7XG59XG5cbi5kYXJrIC50Y28taW1wYWN0LWRlc2NyaXB0aW9uIHtcbiAgY29sb3I6ICM5NGEzYjg7XG59XG5cbi8qIFN0YXRzIEdyaWQgKi9cbi50Y28tc3RhdHMtZ3JpZCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjAwcHgsIDFmcikpO1xuICBnYXA6IDEuNXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMi41cmVtO1xufVxuXG4udGNvLXN0YXQtY2FyZCB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpO1xuICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICBwYWRkaW5nOiAxLjVyZW0gMXJlbTtcbiAgYm94LXNoYWRvdzogMCA4cHggMTZweCByZ2JhKDAsIDAsIDAsIDAuMDQpO1xuICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoOHB4KTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xufVxuXG4udGNvLXN0YXQtY2FyZDpob3ZlciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgYm94LXNoYWRvdzogMCAxMnB4IDI0cHggcmdiYSgwLCAwLCAwLCAwLjA4KTtcbn1cblxuLmRhcmsgLnRjby1zdGF0LWNhcmQge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDUxLCA2NSwgODUsIDAuNCk7XG4gIGJvcmRlci1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA2KTtcbiAgYm94LXNoYWRvdzogMCA4cHggMTZweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG59XG5cbi5kYXJrIC50Y28tc3RhdC1jYXJkOmhvdmVyIHtcbiAgYm94LXNoYWRvdzogMCAxMnB4IDI0cHggcmdiYSgwLCAwLCAwLCAwLjIpO1xufVxuXG4udGNvLXN0YXQtdmFsdWUge1xuICBmb250LXNpemU6IDJyZW07XG4gIGZvbnQtd2VpZ2h0OiA4MDA7XG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzA1OTY2OSwgIzEwYjk4MSk7XG4gIGJhY2tncm91bmQtY2xpcDogdGV4dDtcbiAgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6IHRleHQ7XG4gIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgZm9udC1mYW1pbHk6ICdJbnRlcicsIHNhbnMtc2VyaWY7XG4gIGxpbmUtaGVpZ2h0OiAxLjI7XG59XG5cbi5kYXJrIC50Y28tc3RhdC12YWx1ZSB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMzNGQzOTksICMxMGI5ODEpO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHRleHQ7XG4gIC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOiB0ZXh0O1xuICAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi50Y28tc3RhdC1sYWJlbCB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGNvbG9yOiAjMGYxNzJhO1xuICBtYXJnaW4tYm90dG9tOiAwLjI1cmVtO1xuICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZjtcbn1cblxuLmRhcmsgLnRjby1zdGF0LWxhYmVsIHtcbiAgY29sb3I6ICNmZmZmZmY7XG59XG5cbi50Y28tc3RhdC1kZXRhaWwge1xuICBmb250LXNpemU6IDAuNzVyZW07XG4gIGNvbG9yOiAjNDc1NTY5O1xuICBsaW5lLWhlaWdodDogMS40O1xuICBvcGFjaXR5OiAwLjc7XG59XG5cbi5kYXJrIC50Y28tc3RhdC1kZXRhaWwge1xuICBjb2xvcjogIzk0YTNiODtcbn1cblxuLyogRGVjaXNpb24gU3VtbWFyeSAqL1xuLnRjby1kZWNpc2lvbi1zdW1tYXJ5IHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGdhcDogMnJlbTtcbiAgcGFkZGluZzogMnJlbTtcbiAgYmFja2dyb3VuZDogcmdiYSgxNiwgMTg1LCAxMjksIDAuMDUpO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDE2LCAxODUsIDEyOSwgMC4xKTtcbiAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIG1heC13aWR0aDogNjAwcHg7XG59XG5cbi5kYXJrIC50Y28tZGVjaXNpb24tc3VtbWFyeSB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMTYsIDE4NSwgMTI5LCAwLjEpO1xuICBib3JkZXItY29sb3I6IHJnYmEoMTYsIDE4NSwgMTI5LCAwLjIpO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNjQwcHgpIHtcbiAgLnRjby1kZWNpc2lvbi1zdW1tYXJ5IHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogMXJlbTtcbiAgfVxufVxuXG4udGNvLWRlY2lzaW9uLWl0ZW0ge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZsZXg6IDE7XG59XG5cbi50Y28tZGVjaXNpb24tY29zdCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBmb250LXNpemU6IDEuNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbTtcbiAgZm9udC1mYW1pbHk6ICdJbnRlcicsIHNhbnMtc2VyaWY7XG59XG5cbi50Y28tZGVjaXNpb24taXRlbS0tdHJhZGl0aW9uYWwgLnRjby1kZWNpc2lvbi1jb3N0IHsgY29sb3I6ICNkYzI2MjY7IH1cbi50Y28tZGVjaXNpb24taXRlbS0tc3dpdGNoYmxhZGUgLnRjby1kZWNpc2lvbi1jb3N0IHsgY29sb3I6ICMwNTk2Njk7IH1cblxuLnRjby1kZWNpc2lvbi1sYWJlbCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBmb250LXdlaWdodDogNTAwO1xuICBjb2xvcjogIzQ3NTU2OTtcbiAgb3BhY2l0eTogMC44O1xufVxuXG4uZGFyayAudGNvLWRlY2lzaW9uLWxhYmVsIHtcbiAgY29sb3I6ICM5NGEzYjg7XG59XG5cbi50Y28tZGVjaXNpb24tYXJyb3cge1xuICBmb250LXNpemU6IDEuNXJlbTtcbiAgY29sb3I6ICMwNTk2Njk7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBmbGV4LXNocmluazogMDtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDY0MHB4KSB7XG4gIC50Y28tZGVjaXNpb24tYXJyb3cge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTtcbiAgfVxufVxuXG5cblxuXG4iLCIvKipcbiAqIFRlc3RpbW9uaWFsQ2FyZCBDb21wb25lbnQgU3R5bGluZ1xuICogXG4gKiBJbXBsZW1lbnRzIHRoZSBUaHJlZS1MYXllciBDU1MgQXJjaGl0ZWN0dXJlOlxuICogMS4gQnJhbmQgRm91bmRhdGlvbiAoZnJvbSBpbmRleC5jc3MpOiBVc2VzIGJyYW5kIHZhcmlhYmxlcyBhbmQgRGFpc3lVSSB1dGlsaXRpZXNcbiAqIDIuIENvbXBvbmVudCBFbmhhbmNlbWVudCAodGhpcyBmaWxlKTogQ29tcG9uZW50LXNwZWNpZmljIHN0eWxpbmdcbiAqIDMuIFBhZ2UgQ3VzdG9taXphdGlvbjogVmlhIHN0eWxlcyBwcm9wIGluIFJlYWN0IGNvbXBvbmVudFxuICogXG4gKiBGb2xsb3dzIGNvbXBvbmVudC9zdHlsaW5nLXN0YW5kYXJkLm1kIHJlcXVpcmVtZW50czpcbiAqIC0gVXNlcyBDU1MgdmFyaWFibGVzIGV4Y2x1c2l2ZWx5IGZvciBhbGwgdmFsdWVzXG4gKiAtIEltcGxlbWVudHMgRGFpc3lVSSBpbnRlZ3JhdGlvbiBwYXR0ZXJuc1xuICogLSBQV0EgYW5pbWF0aW9uIGNvbXBhdGliaWxpdHlcbiAqIC0gTW9iaWxlLWZpcnN0IHJlc3BvbnNpdmUgZGVzaWduXG4gKiAtIEFjY2Vzc2liaWxpdHkgY29tcGxpYW5jZSBidWlsdC1pblxuICogLSBDYXJkLW9ubHkgYXJjaGl0ZWN0dXJlIChubyBzZWN0aW9uLWxldmVsIHN0eWxlcylcbiAqIC0gMTAwJSBDU1MgaW1wbGVtZW50YXRpb24gcnVsZSBjb21wbGlhbmNlXG4gKi9cblxuLyogQmFzZSB0ZXN0aW1vbmlhbCBjYXJkIHN0eWxpbmcgKi9cbi50ZXN0aW1vbmlhbC1jYXJkIHtcbiAgLyogQmFzZSBjYXJkIHN0eWxpbmcgd2l0aCBDU1MgdmFyaWFibGVzICovXG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1jYXJkKSk7XG4gIGJvcmRlcjogMDtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtNik7XG4gIFxuICAvKiBUcmFuc2l0aW9ucyB1c2luZyBDU1MgdmFyaWFibGVzICovXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpLFxuICAgICAgICAgICAgICBib3gtc2hhZG93IHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNlLXNtb290aCk7XG4gIFxuICAvKiBFcXVhbCBoZWlnaHQgaW4gZ3JpZHMgKi9cbiAgaGVpZ2h0OiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBcbiAgLyogQ29tcG9uZW50IGxheW91dCAqL1xuICBnYXA6IHZhcigtLXNwYWNlLTQpO1xuICBcbiAgLyogU3VidGxlIGVsZXZhdGlvbiB1c2luZyBzaGFkb3cgc3lzdGVtICovXG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1jYXJkKTtcbn1cblxuLyogSG92ZXIgZWZmZWN0IGZvciBjYXJkcyAqL1xuLnRlc3RpbW9uaWFsLWNhcmQ6aG92ZXIge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1jYXJkLWhvdmVyKTtcbn1cblxuLyogQWN0aXZlIHN0YXRlICovXG4udGVzdGltb25pYWwtY2FyZDphY3RpdmUge1xuICB0cmFuc2Zvcm06IHNjYWxlKDAuOTgpO1xuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctY2FyZC1hY3RpdmUpO1xufVxuXG4vKiBGZWF0dXJlZCB0ZXN0aW1vbmlhbCBzdHlsaW5nIHdpdGggaGVyaXRhZ2UgYWNjZW50IC0gMTAlIHJ1bGUgY29tcGxpYW5jZSAqL1xuLnRlc3RpbW9uaWFsLWNhcmQudGVzdGltb25pYWwtZmVhdHVyZWQge1xuICAvKiBPTkxZIGNvbG9yIGNoYW5nZXMgLSBOTyBzdHJ1Y3R1cmFsIGNoYW5nZXMgKGZvbGxvd2luZyBMaXN0Q2FyZCBwYXR0ZXJuKSAqL1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkgLyAwLjAyKTtcbiAgXG4gIC8qIEhlcml0YWdlIGFjY2VudCB1c2luZyBib3gtc2hhZG93IC0gZG9lc24ndCBhZmZlY3QgZGltZW5zaW9ucyAqL1xuICBib3gtc2hhZG93OiBcbiAgICBpbnNldCA0cHggMCAwIHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpKSxcbiAgICB2YXIoLS1zaGFkb3ctY2FyZCk7XG59XG5cbi8qIEZlYXR1cmVkIGNhcmQgaG92ZXIgKi9cbi50ZXN0aW1vbmlhbC1jYXJkLnRlc3RpbW9uaWFsLWZlYXR1cmVkOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpIC8gMC4wNCk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgYm94LXNoYWRvdzogXG4gICAgaW5zZXQgNHB4IDAgMCByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSksXG4gICAgdmFyKC0tc2hhZG93LWNhcmQtaG92ZXIpO1xufVxuXG4vKiBRdW90ZSB3cmFwcGVyIGZvciBQV0EgYW5pbWF0aW9uIGludGVncmF0aW9uICovXG4udGVzdGltb25pYWwtcXVvdGUtd3JhcHBlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogdmFyKC0tc3BhY2UtMyk7XG4gIFxuICAvKiBDZW50ZXIgaWNvbiBhYm92ZSBxdW90ZSBvbiBtb2JpbGUsIHNpZGUtYnktc2lkZSBvbiBsYXJnZXIgc2NyZWVucyAqL1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi8qIEljb24gY29udGFpbmVyIHNwYWNpbmcgd2l0aGluIGNvbXBvbmVudCBjb250ZXh0IC0gbm8gdmlzdWFsIHN0eWxpbmcgcGVyIGljb24uY3NzICovXG4udGVzdGltb25pYWwtY2FyZCAuaWNvbi1jb250YWluZXItYmFzZSB7XG4gIC8qIEVuc3VyZSBtaW5pbXVtIHNpemUgZm9yIHF1b3RlIGljb24gKi9cbiAgbWluLXdpZHRoOiA0OHB4O1xuICBtaW4taGVpZ2h0OiA0OHB4O1xufVxuXG4vKiBRdW90ZSB0ZXh0IHN0eWxpbmcgLSB1c2VzIGdsb2JhbCB0eXBvZ3JhcGh5IGNsYXNzZXMgKi9cbi50ZXN0aW1vbmlhbC1xdW90ZSB7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgbWFyZ2luOiAwOyAvKiBSZXNldCwgcmVseSBvbiBwYXJlbnQgZ2FwICovXG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkpO1xuICBsaW5lLWhlaWdodDogMS42O1xuICBcbiAgLyogQ2VudGVyIG9uIG1vYmlsZSwgbGVmdC1hbGlnbiBvbiBsYXJnZXIgc2NyZWVucyAqL1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi8qIEF1dGhvciBjb250YWluZXIgc3R5bGluZyB3aXRoIFBXQSBhbmltYXRpb24gc3VwcG9ydCAqL1xuLnRlc3RpbW9uaWFsLWF1dGhvci1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgLyogQ2VudGVyIG9uIG1vYmlsZSAqL1xuICBnYXA6IHZhcigtLXNwYWNlLTQpO1xuICBtYXJnaW4tdG9wOiBhdXRvOyAvKiBQdXNoIHRvIGJvdHRvbSBvZiBmbGV4IGNvbnRhaW5lciAqL1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi8qIEF2YXRhciB3cmFwcGVyIHN0eWxpbmcgKi9cbi50ZXN0aW1vbmlhbC1hdmF0YXItd3JhcHBlciB7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0yKTsgLyogU3BhY2UgYmVsb3cgYXZhdGFyIG9uIG1vYmlsZSBzdGFjayAqL1xufVxuXG4vKiBBdmF0YXIgaW1hZ2Ugc3R5bGluZyAqL1xuLnRlc3RpbW9uaWFsLWF2YXRhciB7XG4gIHdpZHRoOiA0OHB4O1xuICBoZWlnaHQ6IDQ4cHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgb2JqZWN0LWZpdDogY292ZXI7XG4gIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIFxuICAvKiBUb3VjaC1mcmllbmRseSBzaXppbmcgb24gbW9iaWxlICovXG4gIG1pbi13aWR0aDogNDhweDtcbiAgbWluLWhlaWdodDogNDhweDtcbn1cblxuLyogQXV0aG9yIGluZm8gY29udGFpbmVyICovXG4udGVzdGltb25pYWwtYXV0aG9yLWluZm8ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IHZhcigtLXNwYWNlLTEpO1xuICBhbGlnbi1pdGVtczogY2VudGVyOyAvKiBDZW50ZXIgb24gbW9iaWxlICovXG59XG5cbi8qIEF1dGhvciBuYW1lIHN0eWxpbmcgLSB1c2VzIGdsb2JhbCB0eXBvZ3JhcGh5IGNsYXNzZXMgKi9cbi50ZXN0aW1vbmlhbC1hdXRob3Ige1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkpO1xuICBtYXJnaW46IDA7IC8qIFJlc2V0LCByZWx5IG9uIHBhcmVudCBnYXAgKi9cbn1cblxuLyogQXV0aG9yIHRpdGxlIHN0eWxpbmcgLSB1c2VzIGdsb2JhbCB0eXBvZ3JhcGh5IGNsYXNzZXMgKi9cbi50ZXN0aW1vbmlhbC10aXRsZSB7XG4gIG1hcmdpbjogMDsgLyogUmVzZXQsIHJlbHkgb24gcGFyZW50IGdhcCAqL1xuICBsaW5lLWhlaWdodDogMS40O1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLW11dGVkLWZvcmVncm91bmQpKTtcbn1cblxuLyogQ29tcGFueSBuYW1lIHN0eWxpbmcgLSB1c2VzIGdsb2JhbCB0eXBvZ3JhcGh5IGNsYXNzZXMgKi9cbi50ZXN0aW1vbmlhbC1jb21wYW55IHtcbiAgbWFyZ2luOiAwOyAvKiBSZXNldCwgcmVseSBvbiBwYXJlbnQgZ2FwICovXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQtZm9yZWdyb3VuZCkpO1xufVxuXG4vKiBSZW1vdmUgZXJyb3Igc3RhdGUgLSBjb21wb25lbnQgcmV0dXJucyBlbXB0eSBmcmFnbWVudCBwZXIgc3RhbmRhcmRzICovXG5cbi8qIEhvdmVyIGFuZCBpbnRlcmFjdGl2ZSBzdGF0ZSBlbmhhbmNlbWVudHMgKi9cbi50ZXN0aW1vbmlhbC1jYXJkOmhvdmVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICBib3gtc2hhZG93OiAwIDhweCAyNXB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7XG59XG5cbi8qIEZlYXR1cmVkIHRlc3RpbW9uaWFsIGhvdmVyIC0gbWFpbnRhaW5zIGhlcml0YWdlIGFjY2VudCAqL1xuLnRlc3RpbW9uaWFsLWNhcmQudGVzdGltb25pYWwtZmVhdHVyZWQ6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkgLyAwLjA0KTtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkgLyAwLjQpO1xuICBcbiAgLyogSGVyaXRhZ2UgYWNjZW50IHdpdGggaG92ZXIgc2hhZG93ICovXG4gIGJveC1zaGFkb3c6IFxuICAgIGluc2V0IDRweCAwIDAgcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpLFxuICAgIDAgOHB4IDI1cHggcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpIC8gMC4xNSk7XG59XG5cbi50ZXN0aW1vbmlhbC1jYXJkOmFjdGl2ZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbn1cblxuLyogUFdBIEFuaW1hdGlvbiBJbnRlZ3JhdGlvbiAqL1xuLyogQW5pbWF0aW9uIGNsYXNzZXMgYXJlIGRlZmluZWQgZ2xvYmFsbHkgaW4gc3JjL2luZGV4LmNzcyAqL1xuLyogQ29tcG9uZW50IENTUyBwcm92aWRlcyBsYXlvdXQgc3VwcG9ydCBmb3IgUFdBIGFuaW1hdGlvbnMgKi9cbi50ZXN0aW1vbmlhbC1xdW90ZS13cmFwcGVyLFxuLnRlc3RpbW9uaWFsLWF1dGhvci1jb250YWluZXIge1xuICAvKiBFbnN1cmUgcHJvcGVyIGxheW91dCBmb3Igc3RhZ2dlcmVkIGFuaW1hdGlvbnMgKi9cbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOyAvKiBGb3JjZSBHUFUgYWNjZWxlcmF0aW9uICovXG59XG5cbi8qIEFjY2Vzc2liaWxpdHk6IFJlc3BlY3QgdXNlciBwcmVmZXJlbmNlcyBmb3IgcmVkdWNlZCBtb3Rpb24gKi9cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gIC50ZXN0aW1vbmlhbC1jYXJkLFxuICAudGVzdGltb25pYWwtY2FyZDpob3ZlcixcbiAgLnRlc3RpbW9uaWFsLWNhcmQ6YWN0aXZlLFxuICAudGVzdGltb25pYWwtcXVvdGUtd3JhcHBlcixcbiAgLnRlc3RpbW9uaWFsLWF1dGhvci1jb250YWluZXIge1xuICAgIHRyYW5zaXRpb246IG5vbmUgIWltcG9ydGFudDtcbiAgICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDtcbiAgICBhbmltYXRpb246IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuXG4vKiBIaWdoIGNvbnRyYXN0IG1vZGUgc3VwcG9ydCAqL1xuQG1lZGlhIChwcmVmZXJzLWNvbnRyYXN0OiBoaWdoKSB7XG4gIC50ZXN0aW1vbmlhbC1jYXJkIHtcbiAgICBvdXRsaW5lOiAycHggc29saWQgY3VycmVudENvbG9yO1xuICB9XG4gIFxuICAudGVzdGltb25pYWwtY2FyZC50ZXN0aW1vbmlhbC1mZWF0dXJlZCB7XG4gICAgb3V0bGluZTogMnB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgICBib3gtc2hhZG93OiBcbiAgICAgIGluc2V0IDZweCAwIDAgY3VycmVudENvbG9yLFxuICAgICAgdmFyKC0tc2hhZG93LWNhcmQpO1xuICB9XG59XG5cbi8qIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgLSBNb2JpbGUgZmlyc3QgYXBwcm9hY2ggKi9cblxuLyogU21hbGwgc2NyZWVucyAoNjQwcHggYW5kIHVwKSAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gIC50ZXN0aW1vbmlhbC1jYXJkIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS04KTtcbiAgfVxuXG4gIC50ZXN0aW1vbmlhbC1xdW90ZS13cmFwcGVyIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIH1cbiAgXG4gIC50ZXN0aW1vbmlhbC1xdW90ZSB7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgfVxuICBcbiAgLnRlc3RpbW9uaWFsLWF1dGhvci1jb250YWluZXIge1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICB9XG4gIFxuICAudGVzdGltb25pYWwtYXV0aG9yLWluZm8ge1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICB9XG59XG5cbi8qIE1lZGl1bSBzY3JlZW5zICg3NjhweCBhbmQgdXApICovXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLnRlc3RpbW9uaWFsLXF1b3RlIHtcbiAgICBmb250LXNpemU6IDEuMTI1cmVtOyAvKiBTdWJ0bGUgc2NhbGluZyB3aXRoIGdsb2JhbCB0eXBvZ3JhcGh5ICovXG4gICAgbGluZS1oZWlnaHQ6IDEuNztcbiAgfVxuXG4gIC50ZXN0aW1vbmlhbC1hdmF0YXIge1xuICAgIHdpZHRoOiA1NnB4O1xuICAgIGhlaWdodDogNTZweDtcbiAgICBtaW4td2lkdGg6IDU2cHg7XG4gICAgbWluLWhlaWdodDogNTZweDtcbiAgfVxufVxuXG4vKiBMYXJnZSBzY3JlZW5zICgxMDI0cHggYW5kIHVwKSAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAudGVzdGltb25pYWwtcXVvdGUtd3JhcHBlciB7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS02KTsgLyogTW9yZSBnZW5lcm91cyBzcGFjaW5nICovXG4gIH1cbiAgXG4gIC50ZXN0aW1vbmlhbC1hdXRob3ItY29udGFpbmVyIHtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTYpO1xuICB9XG59XG5cbi8qIEV4dHJhIGxhcmdlIHNjcmVlbnMgKDEyODBweCBhbmQgdXApICovXG5AbWVkaWEgKG1pbi13aWR0aDogMTI4MHB4KSB7XG4gIC50ZXN0aW1vbmlhbC1jYXJkIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0xMik7IC8qIE1vcmUgZ2VuZXJvdXMgcGFkZGluZyBvbiBkZXNrdG9wICovXG4gIH1cbn1cblxuLyogUHJpbnQgc3R5bGluZyAqL1xuQG1lZGlhIHByaW50IHtcbiAgLnRlc3RpbW9uaWFsLWNhcmQge1xuICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2IodmFyKC0tY29sb3ItYm9yZGVyKSkgIWltcG9ydGFudDtcbiAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7XG4gIH1cblxuICAvKiBJY29uIGNvbnRhaW5lcnMgaGF2ZSBubyBwcmludCBzdHlsaW5nIC0gbGF5b3V0IG9ubHkgKi9cbn0iLCIvKiBUaGVtZSBUb2dnbGUgQ29tcG9uZW50IFN0eWxlcyAtIEZMQVQgREVTSUdOIDIwMjUgKi9cbi8qIENSSVRJQ0FMOiBDb21wb25lbnQtc3BlY2lmaWMgc3R5bGluZyBvbmx5IC0gdGhlbWUgZm91bmRhdGlvbiBpbiBpbmRleC5jc3MgKi9cblxuLyogVGhlbWUgVG9nZ2xlIEJ1dHRvbiAqL1xuLnRoZW1lLXRvZ2dsZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB3aWR0aDogMi41cmVtO1xuICBoZWlnaHQ6IDIuNXJlbTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiKHZhcigtLWNvbG9yLWJvcmRlcikpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItYmFja2dyb3VuZCkpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLW11dGVkLWZvcmVncm91bmQpKTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0aW9uLWNvbG9ycyk7XG59XG5cbi50aGVtZS10b2dnbGU6aG92ZXIge1xuICBib3JkZXItY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkgLyAwLjA1KTtcbn1cblxuLnRoZW1lLXRvZ2dsZTpmb2N1cyB7XG4gIG91dGxpbmU6IDJweCBzb2xpZCByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xuICBvdXRsaW5lLW9mZnNldDogMnB4O1xufVxuXG4vKiBUaGVtZSBUb2dnbGUgSWNvbiAqL1xuLnRoZW1lLXRvZ2dsZS1pY29uIHtcbiAgd2lkdGg6IDEuMjVyZW07XG4gIGhlaWdodDogMS4yNXJlbTtcbiAgdHJhbnNpdGlvbjogdmFyKC0tdHJhbnNpdGlvbi1jb2xvcnMpO1xufVxuXG4vKiBUaGVtZSBUb2dnbGUgU3RhdGVzICovXG4udGhlbWUtdG9nZ2xlLS1saWdodCAudGhlbWUtdG9nZ2xlLWljb24tLXN1biB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4udGhlbWUtdG9nZ2xlLS1saWdodCAudGhlbWUtdG9nZ2xlLWljb24tLW1vb24ge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4udGhlbWUtdG9nZ2xlLS1kYXJrIC50aGVtZS10b2dnbGUtaWNvbi0tc3VuIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLnRoZW1lLXRvZ2dsZS0tZGFyayAudGhlbWUtdG9nZ2xlLWljb24tLW1vb24ge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLyogRmxvYXRpbmcgVGhlbWUgVG9nZ2xlICovXG4uZmxvYXRpbmctdGhlbWUtdG9nZ2xlIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDFyZW07XG4gIHJpZ2h0OiAxcmVtO1xuICB6LWluZGV4OiA1MDtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAuZmxvYXRpbmctdGhlbWUtdG9nZ2xlIHtcbiAgICB0b3A6IDEuNXJlbTtcbiAgICByaWdodDogMS41cmVtO1xuICB9XG59XG5cbi8qIFJlc3BvbnNpdmUgRGVzaWduICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgLnRoZW1lLXRvZ2dsZSB7XG4gICAgd2lkdGg6IDIuMjVyZW07XG4gICAgaGVpZ2h0OiAyLjI1cmVtO1xuICB9XG4gIFxuICAudGhlbWUtdG9nZ2xlLWljb24ge1xuICAgIHdpZHRoOiAxcmVtO1xuICAgIGhlaWdodDogMXJlbTtcbiAgfVxufVxuIiwiLyoqXG4gKiBUaW1lbGluZSBDb21wb25lbnQgU3R5bGVzIC0gQm91bmRsZXNzIFN0YW5kYXJkcyBDb21wbGlhbnRcbiAqIFxuICogU1RBTkRBUkRTIENPTVBMSUFOQ0U6XG4gKiDinIUgQXJjaGl0ZWN0dXJlIFN0YW5kYXJkOiBUaHJlZS1sYXllciBDU1MgYXJjaGl0ZWN0dXJlIHdpdGggYnJhbmQgZm91bmRhdGlvbiB2YXJpYWJsZXNcbiAqIOKchSAxMDAlIEltcGxlbWVudGF0aW9uIFJ1bGU6IEFsbCBkZWZpbmVkIENTUyBjbGFzc2VzIGFyZSB1c2VkIGluIFRpbWVsaW5lLnRzeFxuICog4pyFIENTUyBWYXJpYWJsZXM6IFVzZXMgb25seSBkZWZpbmVkIHZhcmlhYmxlcyBmcm9tIGJyYW5kIGZvdW5kYXRpb24gKHNyYy9pbmRleC5jc3MpXG4gKiDinIUgUGVyZm9ybWFuY2U6IEhhcmR3YXJlLWFjY2VsZXJhdGVkIGFuaW1hdGlvbnMsIGVmZmljaWVudCBDU1MgY2FzY2FkZVxuICogXG4gKiBUSFJFRS1MQVlFUiBDU1MgQVJDSElURUNUVVJFOlxuICogMS4gQnJhbmQgRm91bmRhdGlvbjogLS1zcGFjZS0qLCAtLWNvbG9yLSosIC0tZm9udC1zaXplLSosIC0tdGltaW5nLSogdmFyaWFibGVzXG4gKiAyLiBDb21wb25lbnQgRW5oYW5jZW1lbnQ6IHRpbWVsaW5lLSogY2xhc3NlcyB3aXRoIHJlc3BvbnNpdmUgZGVzaWduXG4gKiAzLiBQYWdlIEN1c3RvbWl6YXRpb246IE92ZXJyaWRlIGNsYXNzZXMgdmlhIHN0eWxlcyBwcm9wIGluIFRpbWVsaW5lIGNvbXBvbmVudFxuICogXG4gKiBSRVNQT05TSVZFIFNZU1RFTTpcbiAqIC0gTW9iaWxlICjiiaQ3NjdweCk6IFZlcnRpY2FsIGZsZXggbGF5b3V0IHdpdGggdG91Y2gtb3B0aW1pemVkIHRhcmdldHNcbiAqIC0gVGFibGV0KyAo4omlNzY4cHgpOiBIb3Jpem9udGFsIGdyaWQgbGF5b3V0IHdpdGggaG92ZXIgZWZmZWN0c1xuICogLSBIaWdoLXJlcyAo4omlMjU2MHB4KTogRW5oYW5jZWQgc3BhY2luZyBhbmQgcHJlbWl1bSB2aXN1YWwgZWZmZWN0c1xuICogXG4gKiBGRUFUVVJFUzpcbiAqIC0gTXVsdGktcmVzb2x1dGlvbiByZXNwb25zaXZlIGRlc2lnbiAobW9iaWxlIHRvIDhLKylcbiAqIC0gSGVyaXRhZ2UgcmVkIGNvbXBsaWFuY2Ugd2l0aCAxMCUgdXNhZ2UgbGltaXRcbiAqIC0gQnJhbmRlZCBpY29uIGNvbnRhaW5lciBpbnRlZ3JhdGlvblxuICogLSBQV0EgYW5pbWF0aW9uIHN5c3RlbSBjb21wYXRpYmlsaXR5XG4gKiAtIFdDQUcgMi4xIEFBIGFjY2Vzc2liaWxpdHkgY29tcGxpYW5jZVxuICogLSBIYXJkd2FyZS1hY2NlbGVyYXRlZCB0cmFuc2l0aW9uc1xuICovXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBUSU1FTElORSBDT05UQUlORVJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi50aW1lbGluZS1jb250YWluZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4udGltZWxpbmUtc3BhY2luZy13cmFwcGVyIHtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtMTYpOyAvKiA2NHB4IHNwYWNpbmcgZnJvbSBkZXNjcmlwdGlvbiAqL1xuICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2UtOCk7IC8qIDMycHggYm90dG9tIHNwYWNpbmcgKi9cbn1cblxuLnRpbWVsaW5lLWhlYWRlciB7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTcyKTsgLyogNzJweCAtIGluY3JlYXNlZCBzcGFjaW5nICovXG4gIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjZS04KTsgLyogMzJweCBwYWRkaW5nICovXG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBUSU1FTElORSBMQVlPVVQgLSBIT1JJWk9OVEFMIChERUZBVUxUKVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLnRpbWVsaW5lLWhvcml6b250YWwge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDIwMHB4LCAxZnIpKTtcbiAgZ2FwOiB2YXIoLS1zcGFjZS04KTsgLyogMzJweCAqL1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS02KSAwOyAvKiBWZXJ0aWNhbCBwYWRkaW5nICovXG59XG5cbi8qIFJlbW92ZSBjb250aW51b3VzIGxpbmUgLSB1c2UgaW5kaXZpZHVhbCBjb25uZWN0b3JzIG9ubHkgKi9cblxuLnRpbWVsaW5lLWhvcml6b250YWwgLnRpbWVsaW5lLXN0ZXAge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLnRpbWVsaW5lLWhvcml6b250YWwgLnRpbWVsaW5lLXN0ZXAtd3JhcHBlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi50aW1lbGluZS1ob3Jpem9udGFsIC50aW1lbGluZS1zdGVwLWluZGljYXRvciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNCk7XG4gIHotaW5kZXg6IDI7XG59XG5cbi50aW1lbGluZS1ob3Jpem9udGFsIC50aW1lbGluZS1zdGVwLWNvbnRlbnQge1xuICBtYXgtd2lkdGg6IDI4MHB4O1xufVxuXG4vKiBIb3Jpem9udGFsIENvbm5lY3RvcnMgKi9cbi50aW1lbGluZS1ob3Jpem9udGFsLnRpbWVsaW5lLWNvbm5lY3RlZCAudGltZWxpbmUtY29ubmVjdG9yIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDMycHg7IC8qIENlbnRlciBvZiBzdGVwIG51bWJlciAqL1xuICBsZWZ0OiBjYWxjKDEwMCUgKyB2YXIoLS1zcGFjZS00KSk7XG4gIHdpZHRoOiB2YXIoLS1zcGFjZS04KTtcbiAgaGVpZ2h0OiAycHg7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1ib3JkZXIpKTtcbiAgei1pbmRleDogMTtcbn1cblxuLnRpbWVsaW5lLWhvcml6b250YWwudGltZWxpbmUtY29ubmVjdGVkIC50aW1lbGluZS1jb25uZWN0b3I6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAtNHB4O1xuICB0b3A6IC0ycHg7XG4gIHdpZHRoOiAwO1xuICBoZWlnaHQ6IDA7XG4gIGJvcmRlci1sZWZ0OiA2cHggc29saWQgcmdiKHZhcigtLWNvbG9yLWJvcmRlcikpO1xuICBib3JkZXItdG9wOiAzcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1ib3R0b206IDNweCBzb2xpZCB0cmFuc3BhcmVudDtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFRJTUVMSU5FIExBWU9VVCAtIFZFUlRJQ0FMXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4udGltZWxpbmUtdmVydGljYWwge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHBhZGRpbmctbGVmdDogdmFyKC0tc3BhY2UtOCk7XG59XG5cbi50aW1lbGluZS12ZXJ0aWNhbCAudGltZWxpbmUtc3RlcCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMTIpO1xufVxuXG4udGltZWxpbmUtdmVydGljYWwgLnRpbWVsaW5lLXN0ZXA6bGFzdC1jaGlsZCB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi50aW1lbGluZS12ZXJ0aWNhbCAudGltZWxpbmUtc3RlcC13cmFwcGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIGdhcDogdmFyKC0tc3BhY2UtNik7XG59XG5cbi50aW1lbGluZS12ZXJ0aWNhbCAudGltZWxpbmUtc3RlcC1pbmRpY2F0b3Ige1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICB6LWluZGV4OiAyO1xufVxuXG4udGltZWxpbmUtdmVydGljYWwgLnRpbWVsaW5lLXN0ZXAtY29udGVudCB7XG4gIGZsZXg6IDE7XG4gIHBhZGRpbmctdG9wOiB2YXIoLS1zcGFjZS0yKTtcbn1cblxuLyogVmVydGljYWwgQ29ubmVjdG9ycyAqL1xuLnRpbWVsaW5lLXZlcnRpY2FsLnRpbWVsaW5lLWNvbm5lY3RlZCAudGltZWxpbmUtY29ubmVjdG9yIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAzMnB4OyAvKiBDZW50ZXIgb2Ygc3RlcCBudW1iZXIgKi9cbiAgdG9wOiBjYWxjKDEwMCUgLSB2YXIoLS1zcGFjZS0yKSk7XG4gIHdpZHRoOiAycHg7XG4gIGhlaWdodDogdmFyKC0tc3BhY2UtMTIpO1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItYm9yZGVyKSk7XG4gIHotaW5kZXg6IDE7XG59XG5cbi50aW1lbGluZS12ZXJ0aWNhbC50aW1lbGluZS1jb25uZWN0ZWQgLnRpbWVsaW5lLXN0ZXA6bGFzdC1jaGlsZCAudGltZWxpbmUtY29ubmVjdG9yIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLyogUmVtb3ZlIGNvbnRpbnVvdXMgdmVydGljYWwgbGluZSAtIHVzZSBpbmRpdmlkdWFsIGNvbm5lY3RvcnMgb25seSAqL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgU1RFUCBJTkRJQ0FUT1JTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4udGltZWxpbmUtc3RlcC1udW1iZXIge1xuICB3aWR0aDogNjRweDtcbiAgaGVpZ2h0OiA2NHB4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBmb250LXdlaWdodDogNjAwO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1sZyk7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzaW5nLXN0YW5kYXJkKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSh2YXIoLS1jb2xvci1zaGFkb3cpIC8gMC4xKTtcbn1cblxuLyogU3RlcCBOdW1iZXIgVmFyaWFudHMgKi9cbi50aW1lbGluZS1zdGVwLW51bWJlci1wcmltYXJ5IHtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbiAgY29sb3I6IHdoaXRlO1xufVxuXG4udGltZWxpbmUtc3RlcC1udW1iZXItc2Vjb25kYXJ5IHtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLXNlY29uZGFyeSkpO1xuICBjb2xvcjogd2hpdGU7XG59XG5cbi50aW1lbGluZS1zdGVwLW51bWJlci1zdWNjZXNzIHtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLXN1Y2Nlc3MpKTtcbiAgY29sb3I6IHdoaXRlO1xufVxuXG4udGltZWxpbmUtc3RlcC1udW1iZXItd2FybmluZyB7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci13YXJuaW5nKSk7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cblxuLnRpbWVsaW5lLXN0ZXAtbnVtYmVyLWhlcml0YWdlIHtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpO1xuICBjb2xvcjogd2hpdGU7XG4gIC8qIEhlcml0YWdlIHJlZCBnZXRzIGV4dHJhIHNwYWNpbmcgcGVyIGJyYW5kIGd1aWRlbGluZXMgKi9cbiAgbWFyZ2luOiBjYWxjKHZhcigtLXNwYWNlLTQpICogMS4zKSAwO1xuICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSAvIDAuMyk7XG59XG5cbi8qIFN0ZXAgSWNvbiBTdXBwb3J0ICovXG4udGltZWxpbmUtc3RlcC1pY29uIHtcbiAgd2lkdGg6IDI0cHg7XG4gIGhlaWdodDogMjRweDtcbiAgZmxleC1zaHJpbms6IDA7XG59XG5cbi8qIEljb24gQ29udGFpbmVyIExheW91dCBmb3IgVGltZWxpbmUgKi9cbi8qIEljb24gY29udGFpbmVycyBoYXZlIG5vIHZpc3VhbCBzdHlsaW5nIC0gbGF5b3V0IG9ubHkgKi9cblxuLyogSG92ZXIgRWZmZWN0cyAqL1xuLnRpbWVsaW5lLXN0ZXAtbnVtYmVyOmhvdmVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICBib3gtc2hhZG93OiAwIDZweCAxNnB4IHJnYmEodmFyKC0tY29sb3Itc2hhZG93KSAvIDAuMTUpO1xufVxuXG4udGltZWxpbmUtc3RlcC1udW1iZXItaGVyaXRhZ2U6aG92ZXIge1xuICBib3gtc2hhZG93OiAwIDhweCAyMHB4IHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSAvIDAuNCk7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBTVEVQIENPTlRFTlRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi50aW1lbGluZS1zdGVwLXRpdGxlIHtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMik7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkpO1xufVxuXG4udGltZWxpbmUtc3RlcC1kZXNjcmlwdGlvbiB7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQtZm9yZWdyb3VuZCkpO1xuICBsaW5lLWhlaWdodDogMS42O1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQU5OT1RBVElPTiBCVUJCTEVTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4udGltZWxpbmUtYW5ub3RhdGlvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAtOHB4O1xuICBsZWZ0OiBjYWxjKDEwMCUgKyB2YXIoLS1zcGFjZS0zKSk7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1jYXJkKSk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYih2YXIoLS1jb2xvci1ib3JkZXIpKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMikgdmFyKC0tc3BhY2UtMyk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1tdXRlZC1mb3JlZ3JvdW5kKSk7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSh2YXIoLS1jb2xvci1zaGFkb3cpIC8gMC4xKTtcbiAgei1pbmRleDogMztcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC04cHgpO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2Utc21vb3RoKTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi8qIEFubm90YXRpb24gYnViYmxlIHBvaW50ZXIgKi9cbi50aW1lbGluZS1hbm5vdGF0aW9uOjpiZWZvcmUge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAtNnB4O1xuICB0b3A6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiAwO1xuICBib3JkZXI6IDZweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiByZ2IodmFyKC0tY29sb3ItY2FyZCkpO1xufVxuXG4udGltZWxpbmUtYW5ub3RhdGlvbjo6YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAtN3B4O1xuICB0b3A6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiAwO1xuICBib3JkZXI6IDZweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiByZ2IodmFyKC0tY29sb3ItYm9yZGVyKSk7XG4gIHotaW5kZXg6IC0xO1xufVxuXG4vKiBTaG93IGFubm90YXRpb24gb24gaG92ZXIgKi9cbi50aW1lbGluZS1zdGVwLWluZGljYXRvcjpob3ZlciAudGltZWxpbmUtYW5ub3RhdGlvbiB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFNURVAgU1RBVEVTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4udGltZWxpbmUtc3RlcC1jb21wbGV0ZWQgLnRpbWVsaW5lLXN0ZXAtbnVtYmVyIHtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLXN1Y2Nlc3MpKTtcbiAgY29sb3I6IHdoaXRlO1xufVxuXG4udGltZWxpbmUtc3RlcC1jdXJyZW50IC50aW1lbGluZS1zdGVwLW51bWJlciB7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpKTtcbiAgY29sb3I6IHdoaXRlO1xuICBib3gtc2hhZG93OiAwIDAgMCA0cHggcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpIC8gMC4yKTtcbiAgYW5pbWF0aW9uOiB0aW1lbGluZS1wdWxzZSAycyBpbmZpbml0ZTtcbn1cblxuLnRpbWVsaW5lLXN0ZXAtdXBjb21pbmcgLnRpbWVsaW5lLXN0ZXAtbnVtYmVyIHtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLW11dGVkKSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQtZm9yZWdyb3VuZCkpO1xufVxuXG5Aa2V5ZnJhbWVzIHRpbWVsaW5lLXB1bHNlIHtcbiAgMCUsIDEwMCUge1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDRweCByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkgLyAwLjIpO1xuICB9XG4gIDUwJSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgOHB4IHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSAvIDAuMSk7XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFJFU1BPTlNJVkUgVElNRUxJTkUgU1lTVEVNIC0gTU9CSUxFIFRPIDhLK1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogTW9iaWxlIE9ubHkgLSBUcnVlIE1vYmlsZSBEZXZpY2VzICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLyogRm9yY2UgdmVydGljYWwgbGF5b3V0IG9uIG1vYmlsZSAqL1xuICAudGltZWxpbmUtaG9yaXpvbnRhbCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIHBhZGRpbmctbGVmdDogdmFyKC0tc3BhY2UtNik7XG4gIH1cblxuICAudGltZWxpbmUtaG9yaXpvbnRhbCAudGltZWxpbmUtc3RlcCB7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0xMCk7XG4gIH1cblxuICAudGltZWxpbmUtaG9yaXpvbnRhbCAudGltZWxpbmUtc3RlcDpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbiAgLnRpbWVsaW5lLWhvcml6b250YWwgLnRpbWVsaW5lLXN0ZXAtd3JhcHBlciB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTQpO1xuICB9XG5cbiAgLnRpbWVsaW5lLWhvcml6b250YWwgLnRpbWVsaW5lLXN0ZXAtaW5kaWNhdG9yIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICB9XG5cbiAgLnRpbWVsaW5lLWhvcml6b250YWwgLnRpbWVsaW5lLXN0ZXAtY29udGVudCB7XG4gICAgbWF4LXdpZHRoOiBub25lO1xuICAgIGZsZXg6IDE7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXNwYWNlLTEpO1xuICB9XG5cbiAgLyogTW9iaWxlIGNvbm5lY3RvcnMgLSB2ZXJ0aWNhbCBzdHlsZSAqL1xuICAudGltZWxpbmUtaG9yaXpvbnRhbC50aW1lbGluZS1jb25uZWN0ZWQgLnRpbWVsaW5lLWNvbm5lY3RvciB7XG4gICAgbGVmdDogMzJweDtcbiAgICB0b3A6IGNhbGMoMTAwJSAtIHZhcigtLXNwYWNlLTIpKTtcbiAgICB3aWR0aDogMnB4O1xuICAgIGhlaWdodDogdmFyKC0tc3BhY2UtMTApO1xuICAgIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1ib3JkZXIpKTtcbiAgfVxuXG4gIC50aW1lbGluZS1ob3Jpem9udGFsLnRpbWVsaW5lLWNvbm5lY3RlZCAudGltZWxpbmUtY29ubmVjdG9yOjpiZWZvcmUge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAudGltZWxpbmUtaG9yaXpvbnRhbC50aW1lbGluZS1jb25uZWN0ZWQgLnRpbWVsaW5lLXN0ZXA6bGFzdC1jaGlsZCAudGltZWxpbmUtY29ubmVjdG9yIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLyogU21hbGxlciBzdGVwIG51bWJlcnMgb24gbW9iaWxlICovXG4gIC50aW1lbGluZS1zdGVwLW51bWJlciB7XG4gICAgd2lkdGg6IDQ4cHg7XG4gICAgaGVpZ2h0OiA0OHB4O1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJhc2UpO1xuICB9XG5cbiAgLnRpbWVsaW5lLXN0ZXAtaWNvbiB7XG4gICAgd2lkdGg6IDIwcHg7XG4gICAgaGVpZ2h0OiAyMHB4O1xuICB9XG5cbiAgLyogTW9iaWxlIGFubm90YXRpb24gcG9zaXRpb25pbmcgKi9cbiAgLnRpbWVsaW5lLWFubm90YXRpb24ge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IGF1dG87XG4gICAgYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gICAgbWF4LXdpZHRoOiBjYWxjKDEwMHZ3IC0gdmFyKC0tc3BhY2UtOCkpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxuXG4gIC50aW1lbGluZS1hbm5vdGF0aW9uOjpiZWZvcmUsXG4gIC50aW1lbGluZS1hbm5vdGF0aW9uOjphZnRlciB7XG4gICAgbGVmdDogNTAlO1xuICAgIHRvcDogYXV0bztcbiAgICBib3R0b206IC02cHg7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLWNhcmQpKTtcbiAgfVxuXG4gIC50aW1lbGluZS1hbm5vdGF0aW9uOjphZnRlciB7XG4gICAgYm90dG9tOiAtN3B4O1xuICAgIGJvcmRlci10b3AtY29sb3I6IHJnYih2YXIoLS1jb2xvci1ib3JkZXIpKTtcbiAgfVxuXG4gIC8qIE1vYmlsZSB0b3VjaCB0YXJnZXRzICovXG4gIC50aW1lbGluZS1zdGVwLWluZGljYXRvciB7XG4gICAgbWluLXdpZHRoOiA0OHB4O1xuICAgIG1pbi1oZWlnaHQ6IDQ4cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB9XG59XG5cbi8qIFRhYmxldCsgSG9yaXpvbnRhbCBMYXlvdXQgKDc2OHB4KykgKi9cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAudGltZWxpbmUtaG9yaXpvbnRhbCB7XG4gICAgLyogRW5zdXJlIGhvcml6b250YWwgZ3JpZCBsYXlvdXQgaXMgcHJlc2VydmVkICovXG4gICAgZGlzcGxheTogZ3JpZCAhaW1wb3J0YW50O1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjAwcHgsIDFmcikpICFpbXBvcnRhbnQ7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS04KTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtNikgMDsgLyogVmVydGljYWwgcGFkZGluZyAqL1xuICB9XG5cbiAgLnRpbWVsaW5lLWhvcml6b250YWwgLnRpbWVsaW5lLXN0ZXAge1xuICAgIC8qIFJlc2V0IG1vYmlsZSBvdmVycmlkZXMgKi9cbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbiAgLnRpbWVsaW5lLWhvcml6b250YWwgLnRpbWVsaW5lLXN0ZXAtd3JhcHBlciB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG5cbiAgLnRpbWVsaW5lLWhvcml6b250YWwgLnRpbWVsaW5lLXN0ZXAtaW5kaWNhdG9yIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbiAgfVxuXG4gIC50aW1lbGluZS1ob3Jpem9udGFsIC50aW1lbGluZS1zdGVwLWNvbnRlbnQge1xuICAgIG1heC13aWR0aDogMjgwcHg7XG4gICAgcGFkZGluZy10b3A6IDA7XG4gIH1cblxuICAvKiBSZXN0b3JlIGhvcml6b250YWwgY29ubmVjdG9ycyAqL1xuICAudGltZWxpbmUtaG9yaXpvbnRhbC50aW1lbGluZS1jb25uZWN0ZWQgLnRpbWVsaW5lLWNvbm5lY3RvciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMzJweDtcbiAgICBsZWZ0OiBjYWxjKDEwMCUgKyB2YXIoLS1zcGFjZS00KSk7XG4gICAgd2lkdGg6IHZhcigtLXNwYWNlLTgpO1xuICAgIGhlaWdodDogMnB4O1xuICAgIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1ib3JkZXIpKTtcbiAgfVxuXG4gIC50aW1lbGluZS1ob3Jpem9udGFsLnRpbWVsaW5lLWNvbm5lY3RlZCAudGltZWxpbmUtY29ubmVjdG9yOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogLTRweDtcbiAgICB0b3A6IC0ycHg7XG4gICAgd2lkdGg6IDA7XG4gICAgaGVpZ2h0OiAwO1xuICAgIGJvcmRlci1sZWZ0OiA2cHggc29saWQgcmdiKHZhcigtLWNvbG9yLWJvcmRlcikpO1xuICAgIGJvcmRlci10b3A6IDNweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItYm90dG9tOiAzcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbn1cblxuLyogRGVza3RvcCBFbmhhbmNlbWVudHMgKDEwMjRweCspICovXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC50aW1lbGluZS1ob3Jpem9udGFsIHtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTEwKTtcbiAgfVxuXG4gIC50aW1lbGluZS1ob3Jpem9udGFsIC50aW1lbGluZS1zdGVwLWNvbnRlbnQge1xuICAgIG1heC13aWR0aDogMzIwcHg7XG4gIH1cblxuICAudGltZWxpbmUtc3RlcC1udW1iZXIge1xuICAgIHdpZHRoOiA3MnB4O1xuICAgIGhlaWdodDogNzJweDtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS14bCk7XG4gIH1cbn1cblxuLyogTGFyZ2UgRGVza3RvcCBPcHRpbWl6YXRpb25zICgxMjgwcHgrKSAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDEyODBweCkge1xuICAudGltZWxpbmUtaG9yaXpvbnRhbCB7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS0xMik7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyNTBweCwgMWZyKSk7XG4gIH1cblxuICAudGltZWxpbmUtaG9yaXpvbnRhbCAudGltZWxpbmUtc3RlcC1jb250ZW50IHtcbiAgICBtYXgtd2lkdGg6IDM2MHB4O1xuICB9XG5cbiAgLnRpbWVsaW5lLXN0ZXAtbnVtYmVyIHtcbiAgICB3aWR0aDogODBweDtcbiAgICBoZWlnaHQ6IDgwcHg7XG4gIH1cblxuICAudGltZWxpbmUtaG9yaXpvbnRhbCAudGltZWxpbmUtc3RlcC1pbmRpY2F0b3Ige1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTYpO1xuICB9XG59XG5cbi8qIDJLLzRLKyBVbHRyYS1IaWdoLVJlc29sdXRpb24gRGlzcGxheXMgKDI1NjBweCspICovXG5AbWVkaWEgKG1pbi13aWR0aDogMjU2MHB4KSB7XG4gIC50aW1lbGluZS1ob3Jpem9udGFsIHtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTE2KTtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDMwMHB4LCAxZnIpKTtcbiAgICBtYXgtd2lkdGg6IG5vbmU7IC8qIEFsbG93IGZ1bGwgdXRpbGl6YXRpb24gb2YgdWx0cmEtd2lkZSBzY3JlZW5zICovXG4gIH1cblxuICAudGltZWxpbmUtaG9yaXpvbnRhbCAudGltZWxpbmUtc3RlcC1jb250ZW50IHtcbiAgICBtYXgtd2lkdGg6IDQyMHB4O1xuICB9XG5cbiAgLnRpbWVsaW5lLXN0ZXAtbnVtYmVyIHtcbiAgICB3aWR0aDogOTZweDtcbiAgICBoZWlnaHQ6IDk2cHg7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtMnhsKTtcbiAgfVxuXG4gIC50aW1lbGluZS1ob3Jpem9udGFsIC50aW1lbGluZS1zdGVwLWluZGljYXRvciB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtOCk7XG4gIH1cblxuICAvKiBFbmhhbmNlZCB2aXN1YWwgaGllcmFyY2h5IGZvciBsYXJnZSBkaXNwbGF5cyAqL1xuICAudGltZWxpbmUtc3RlcC10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteGwpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTQpO1xuICB9XG5cbiAgLnRpbWVsaW5lLXN0ZXAtZGVzY3JpcHRpb24ge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWxnKTtcbiAgICBsaW5lLWhlaWdodDogMS43O1xuICB9XG5cbiAgLyogVWx0cmEtd2lkZSBjb250YWluZXIgdXRpbGl6YXRpb24gKi9cbiAgLnRpbWVsaW5lLWNvbnRhaW5lciB7XG4gICAgbWF4LXdpZHRoOiAyNDAwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gIH1cbn1cblxuLyogNEsrIEV4dHJlbWUgSGlnaC1SZXNvbHV0aW9uICgzODQwcHgrKSAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDM4NDBweCkge1xuICAudGltZWxpbmUtaG9yaXpvbnRhbCB7XG4gICAgZ2FwOiBjYWxjKHZhcigtLXNwYWNpbmcpICogMjApO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoNDAwcHgsIDFmcikpO1xuICAgIHBhZGRpbmc6IDAgdmFyKC0tc3BhY2UtMTYpO1xuICB9XG5cbiAgLnRpbWVsaW5lLWhvcml6b250YWwgLnRpbWVsaW5lLXN0ZXAtY29udGVudCB7XG4gICAgbWF4LXdpZHRoOiA1MDBweDtcbiAgfVxuXG4gIC50aW1lbGluZS1zdGVwLW51bWJlciB7XG4gICAgd2lkdGg6IDEyMHB4O1xuICAgIGhlaWdodDogMTIwcHg7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtM3hsKTtcbiAgICAvKiBFbmhhbmNlZCBzaGFkb3cgZm9yIDRLIGNsYXJpdHkgKi9cbiAgICBib3gtc2hhZG93OiAwIDhweCAzMnB4IHJnYmEodmFyKC0tY29sb3Itc2hhZG93KSAvIDAuMTUpO1xuICB9XG5cbiAgLnRpbWVsaW5lLWhvcml6b250YWwgLnRpbWVsaW5lLXN0ZXAtaW5kaWNhdG9yIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0xMik7XG4gIH1cblxuICAvKiBQcmVtaXVtIHZpc3VhbCBleHBlcmllbmNlIGZvciA0SysgKi9cbiAgLnRpbWVsaW5lLXN0ZXAtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLTJ4bCk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNik7XG4gICAgLyogRW5oYW5jZWQgdGV4dCBjbGFyaXR5IGZvciA0SyAqL1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gIH1cblxuICAudGltZWxpbmUtc3RlcC1kZXNjcmlwdGlvbiB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteGwpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjg7XG4gICAgLyogSW1wcm92ZWQgcmVhZGFiaWxpdHkgb24gbGFyZ2UgZGlzcGxheXMgKi9cbiAgICBtYXgtd2lkdGg6IDQ4MHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICB9XG5cbiAgLnRpbWVsaW5lLWNvbnRhaW5lciB7XG4gICAgbWF4LXdpZHRoOiAzNjAwcHg7XG4gICAgcGFkZGluZzogMCB2YXIoLS1zcGFjZS0yMCk7XG4gIH1cblxuICAvKiBFbmhhbmNlZCBjb25uZWN0b3JzIGZvciA0SyAqL1xuICAudGltZWxpbmUtaG9yaXpvbnRhbC50aW1lbGluZS1jb25uZWN0ZWQgLnRpbWVsaW5lLWNvbm5lY3RvciB7XG4gICAgaGVpZ2h0OiAzcHg7XG4gICAgd2lkdGg6IHZhcigtLXNwYWNlLTEyKTtcbiAgICAvKiBHcmFkaWVudCBjb25uZWN0b3JzIGZvciBwcmVtaXVtIDRLIGV4cGVyaWVuY2UgKi9cbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoXG4gICAgICB0byByaWdodCwgXG4gICAgICB0cmFuc3BhcmVudCAwJSwgXG4gICAgICByZ2IodmFyKC0tY29sb3ItYm9yZGVyKSkgMjAlLCBcbiAgICAgIHJnYih2YXIoLS1jb2xvci1ib3JkZXIpKSA4MCUsIFxuICAgICAgdHJhbnNwYXJlbnQgMTAwJVxuICAgICk7XG4gIH1cblxuICAvKiBFbmhhbmNlZCBob3ZlciBlZmZlY3RzIGZvciA0SyBwcmVjaXNpb24gKi9cbiAgLnRpbWVsaW5lLXN0ZXAtbnVtYmVyOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTRweCk7XG4gICAgYm94LXNoYWRvdzogMCAxNnB4IDQ4cHggcmdiYSh2YXIoLS1jb2xvci1zaGFkb3cpIC8gMC4yKTtcbiAgfVxuXG4gIC50aW1lbGluZS1zdGVwLW51bWJlci1oZXJpdGFnZTpob3ZlciB7XG4gICAgYm94LXNoYWRvdzogMCAxNnB4IDQ4cHggcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpIC8gMC40KTtcbiAgfVxuXG4gIC8qIDRLLW9wdGltaXplZCBhbm5vdGF0aW9uIGJ1YmJsZXMgKi9cbiAgLnRpbWVsaW5lLWFubm90YXRpb24ge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJhc2UpO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTMpIHZhcigtLXNwYWNlLTQpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gICAgbWF4LXdpZHRoOiAzMjBweDtcbiAgICBib3gtc2hhZG93OiAwIDhweCAzMnB4IHJnYmEodmFyKC0tY29sb3Itc2hhZG93KSAvIDAuMTUpO1xuICB9XG59XG5cbi8qIDhLKyBFeHRyZW1lICg3NjgwcHgrKSAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDc2ODBweCkge1xuICAudGltZWxpbmUtaG9yaXpvbnRhbCB7XG4gICAgZ2FwOiBjYWxjKHZhcigtLXNwYWNpbmcpICogMjQpO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoNTAwcHgsIDFmcikpO1xuICAgIHBhZGRpbmc6IDAgdmFyKC0tc3BhY2UtMjQpO1xuICB9XG5cbiAgLnRpbWVsaW5lLWhvcml6b250YWwgLnRpbWVsaW5lLXN0ZXAtY29udGVudCB7XG4gICAgbWF4LXdpZHRoOiA2MDBweDtcbiAgfVxuXG4gIC50aW1lbGluZS1zdGVwLW51bWJlciB7XG4gICAgd2lkdGg6IDE2MHB4O1xuICAgIGhlaWdodDogMTYwcHg7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtNHhsKTtcbiAgICAvKiBQcmVtaXVtIDhLIHNoYWRvdyBzeXN0ZW0gKi9cbiAgICBib3gtc2hhZG93OiAwIDEycHggNDhweCByZ2JhKHZhcigtLWNvbG9yLXNoYWRvdykgLyAwLjE4KTtcbiAgfVxuXG4gIC50aW1lbGluZS1ob3Jpem9udGFsIC50aW1lbGluZS1zdGVwLWluZGljYXRvciB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMTYpO1xuICB9XG5cbiAgLyogVWx0cmEtcHJlbWl1bSB0eXBvZ3JhcGh5IGZvciA4SyBkaXNwbGF5cyAqL1xuICAudGltZWxpbmUtc3RlcC10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtM3hsKTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMjVlbTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS04KTtcbiAgfVxuXG4gIC50aW1lbGluZS1zdGVwLWRlc2NyaXB0aW9uIHtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS0yeGwpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjc7XG4gICAgbWF4LXdpZHRoOiA1ODBweDtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgfVxuXG4gIC50aW1lbGluZS1jb250YWluZXIge1xuICAgIG1heC13aWR0aDogNzIwMHB4O1xuICAgIHBhZGRpbmc6IDAgdmFyKC0tc3BhY2UtMzIpO1xuICB9XG5cbiAgLyogVWx0cmEtcHJlbWl1bSBob3ZlciBlZmZlY3RzIGZvciA4SyAqL1xuICAudGltZWxpbmUtc3RlcC1udW1iZXI6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNnB4KTtcbiAgICBib3gtc2hhZG93OiAwIDI0cHggNjRweCByZ2JhKHZhcigtLWNvbG9yLXNoYWRvdykgLyAwLjI1KTtcbiAgfVxuXG4gIC50aW1lbGluZS1zdGVwLW51bWJlci1oZXJpdGFnZTpob3ZlciB7XG4gICAgYm94LXNoYWRvdzogMCAyNHB4IDY0cHggcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpIC8gMC40NSk7XG4gIH1cblxuICAvKiA4Sy1vcHRpbWl6ZWQgY29ubmVjdG9ycyB3aXRoIHByZW1pdW0gZ3JhZGllbnRzICovXG4gIC50aW1lbGluZS1ob3Jpem9udGFsLnRpbWVsaW5lLWNvbm5lY3RlZCAudGltZWxpbmUtY29ubmVjdG9yIHtcbiAgICBoZWlnaHQ6IDRweDtcbiAgICB3aWR0aDogdmFyKC0tc3BhY2UtMTYpO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChcbiAgICAgIHRvIHJpZ2h0LFxuICAgICAgdHJhbnNwYXJlbnQgMCUsXG4gICAgICByZ2JhKHZhcigtLWNvbG9yLWJvcmRlcikgLyAwLjMpIDEwJSxcbiAgICAgIHJnYih2YXIoLS1jb2xvci1ib3JkZXIpKSAyNSUsXG4gICAgICByZ2IodmFyKC0tY29sb3ItYm9yZGVyKSkgNzUlLFxuICAgICAgcmdiYSh2YXIoLS1jb2xvci1ib3JkZXIpIC8gMC4zKSA5MCUsXG4gICAgICB0cmFuc3BhcmVudCAxMDAlXG4gICAgKTtcbiAgfVxuXG4gIC8qIFByZW1pdW0gYW5ub3RhdGlvbiBzeXN0ZW0gZm9yIDhLICovXG4gIC50aW1lbGluZS1hbm5vdGF0aW9uIHtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1sZyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtNCkgdmFyKC0tc3BhY2UtNik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXhsKTtcbiAgICBtYXgtd2lkdGg6IDQwMHB4O1xuICAgIGJveC1zaGFkb3c6IDAgMTJweCA0OHB4IHJnYmEodmFyKC0tY29sb3Itc2hhZG93KSAvIDAuMTgpO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cig4cHgpO1xuICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBBQ0NFU1NJQklMSVRZIEVOSEFOQ0VNRU5UU1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogSGlnaCBjb250cmFzdCBtb2RlIHN1cHBvcnQgKi9cbkBtZWRpYSAocHJlZmVycy1jb250cmFzdDogaGlnaCkge1xuICAudGltZWxpbmUtc3RlcC1udW1iZXIge1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgfVxuXG4gIC50aW1lbGluZS1jb25uZWN0b3Ige1xuICAgIGJhY2tncm91bmQ6IGN1cnJlbnRDb2xvcjtcbiAgfVxuXG4gIC50aW1lbGluZS1hbm5vdGF0aW9uIHtcbiAgICBib3JkZXI6IDJweCBzb2xpZCBjdXJyZW50Q29sb3I7XG4gICAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWJhY2tncm91bmQpKTtcbiAgfVxufVxuXG4vKiBSZWR1Y2VkIG1vdGlvbiBzdXBwb3J0ICovXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAudGltZWxpbmUtc3RlcC1udW1iZXIsXG4gIC50aW1lbGluZS1hbm5vdGF0aW9uIHtcbiAgICB0cmFuc2l0aW9uOiBub25lO1xuICB9XG5cbiAgLnRpbWVsaW5lLXN0ZXAtY3VycmVudCAudGltZWxpbmUtc3RlcC1udW1iZXIge1xuICAgIGFuaW1hdGlvbjogbm9uZTtcbiAgfVxuXG4gIC50aW1lbGluZS1hbm5vdGF0aW9uIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxufVxuXG4vKiBGb2N1cyBzdGF0ZXMgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gKi9cbi50aW1lbGluZS1zdGVwLW51bWJlcjpmb2N1cyB7XG4gIG91dGxpbmU6IDJweCBzb2xpZCByZ2IodmFyKC0tY29sb3ItZm9jdXMpKTtcbiAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbn1cblxuLyogU2NyZWVuIHJlYWRlciBlbmhhbmNlbWVudHMgKi9cbi50aW1lbGluZS1zdGVwW2FyaWEtY3VycmVudD1cInN0ZXBcIl0gLnRpbWVsaW5lLXN0ZXAtbnVtYmVyIHtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpO1xuICBjb2xvcjogd2hpdGU7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBQRVJGT1JNQU5DRSBPUFRJTUlaQVRJT05TXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBIYXJkd2FyZSBhY2NlbGVyYXRpb24gZm9yIHNtb290aCBhbmltYXRpb25zICovXG4udGltZWxpbmUtc3RlcC1udW1iZXIsXG4udGltZWxpbmUtYW5ub3RhdGlvbiB7XG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm0sIG9wYWNpdHk7XG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbn1cblxuLyogUmVtb3ZlIHdpbGwtY2hhbmdlIGFmdGVyIGFuaW1hdGlvbnMgY29tcGxldGUgKi9cbi50aW1lbGluZS1zdGVwLW51bWJlcjpub3QoOmhvdmVyKSxcbi50aW1lbGluZS1hbm5vdGF0aW9uOm5vdCg6aG92ZXIpIHtcbiAgd2lsbC1jaGFuZ2U6IGF1dG87XG59IiwiLyoqXG4gKiBUcnVzdEJhbm5lciBDb21wb25lbnQgU3R5bGVzXG4gKlxuICogVGhyZWUtbGF5ZXIgQ1NTIGFyY2hpdGVjdHVyZTpcbiAqIDEuIEJyYW5kIHRva2VucyAoQ1NTIHZhcmlhYmxlcylcbiAqIDIuIENvbXBvbmVudCBzdHlsZXMgKHRoaXMgZmlsZSlcbiAqIDMuIFBhZ2Ugb3ZlcnJpZGVzICh2aWEgc3R5bGVzIHByb3ApXG4gKi9cblxuLyogQmFzZSBjb250YWluZXIgKi9cbi50cnVzdC1iYW5uZXIge1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLWxnKSAwO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1zdXJmYWNlLWRlZmF1bHQpO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLyogSW5uZXIgY29udGFpbmVyIGZvciBtYXgtd2lkdGggKi9cbi50cnVzdC1iYW5uZXItaW5uZXIge1xuICBtYXgtd2lkdGg6IHZhcigtLWNvbnRhaW5lci1tYXgtd2lkdGgpO1xuICBtYXJnaW46IDAgYXV0bztcbiAgcGFkZGluZzogMCB2YXIoLS1zcGFjaW5nLWJhc2UpO1xufVxuXG4vKiBUaXRsZSAqL1xuLnRydXN0LWJhbm5lci10aXRsZSB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy1tZCk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXByaW1hcnkpO1xufVxuXG4vKiBMb2dvcyBjb250YWluZXIgLSBHcmlkIGxheW91dCAqL1xuLnRydXN0LWJhbm5lci1sb2dvcy0tZ3JpZCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDYsIDFmcik7XG4gIGdhcDogdmFyKC0tc3BhY2luZy1tZCk7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktaXRlbXM6IGNlbnRlcjtcbn1cblxuLyogTG9nb3MgY29udGFpbmVyIC0gQ2Fyb3VzZWwgbGF5b3V0ICovXG4udHJ1c3QtYmFubmVyLWNhcm91c2VsIHtcbiAgb3ZlcmZsb3cteDogYXV0bztcbiAgb3ZlcmZsb3cteTogaGlkZGVuO1xuICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG4gIHNjcm9sbGJhci13aWR0aDogbm9uZTtcbiAgLW1zLW92ZXJmbG93LXN0eWxlOiBub25lO1xufVxuXG4udHJ1c3QtYmFubmVyLWNhcm91c2VsOjotd2Via2l0LXNjcm9sbGJhciB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi50cnVzdC1iYW5uZXItbG9nb3MtLWNhcm91c2VsIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZ2FwOiB2YXIoLS1zcGFjaW5nLWxnKTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1zbSkgMDtcbn1cblxuLyogTG9nbyBpdGVtcyAqL1xuLnRydXN0LWJhbm5lci1sb2dvLWl0ZW0ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG59XG5cbi8qIENhcm91c2VsIHNwZWNpZmljIGl0ZW0gKi9cbi50cnVzdC1iYW5uZXItbG9nb3MtLWNhcm91c2VsIC50cnVzdC1iYW5uZXItbG9nby1pdGVtIHtcbiAgZmxleDogMCAwIGF1dG87XG4gIG1pbi13aWR0aDogMTIwcHg7XG59XG5cbi8qIExvZ28gaW1hZ2UgKi9cbi50cnVzdC1iYW5uZXItbG9nbyB7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBhdXRvO1xuICBvYmplY3QtZml0OiBjb250YWluO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbiAgb3BhY2l0eTogMC43O1xufVxuXG4vKiBMb2dvIGxpbmsgKi9cbi50cnVzdC1iYW5uZXItbG9nby1saW5rIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuLnRydXN0LWJhbm5lci1sb2dvLWxpbms6aG92ZXIgLnRydXN0LWJhbm5lci1sb2dvIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxLjA1KTtcbn1cblxuLyogU2l6ZSB2YXJpYW50cyAqL1xuLnRydXN0LWJhbm5lci1sb2dvLWl0ZW0tLXNtIHtcbiAgbWF4LWhlaWdodDogNDBweDtcbn1cblxuLnRydXN0LWJhbm5lci1sb2dvLWl0ZW0tLXNtIC50cnVzdC1iYW5uZXItbG9nbyB7XG4gIG1heC1oZWlnaHQ6IDQwcHg7XG59XG5cbi50cnVzdC1iYW5uZXItbG9nby1pdGVtLS1iYXNlIHtcbiAgbWF4LWhlaWdodDogNTBweDtcbn1cblxuLnRydXN0LWJhbm5lci1sb2dvLWl0ZW0tLWJhc2UgLnRydXN0LWJhbm5lci1sb2dvIHtcbiAgbWF4LWhlaWdodDogNTBweDtcbn1cblxuLnRydXN0LWJhbm5lci1sb2dvLWl0ZW0tLWxnIHtcbiAgbWF4LWhlaWdodDogNjBweDtcbn1cblxuLnRydXN0LWJhbm5lci1sb2dvLWl0ZW0tLWxnIC50cnVzdC1iYW5uZXItbG9nbyB7XG4gIG1heC1oZWlnaHQ6IDYwcHg7XG59XG5cbi8qIEdyYXlzY2FsZSB2YXJpYW50ICovXG4udHJ1c3QtYmFubmVyLS1ncmF5c2NhbGUgLnRydXN0LWJhbm5lci1sb2dvIHtcbiAgZmlsdGVyOiBncmF5c2NhbGUoMTAwJSk7XG59XG5cbi50cnVzdC1iYW5uZXItLWdyYXlzY2FsZSAudHJ1c3QtYmFubmVyLWxvZ286aG92ZXIge1xuICBmaWx0ZXI6IGdyYXlzY2FsZSgwJSk7XG59XG5cbi8qIEVtcHR5IHN0YXRlICovXG4udHJ1c3QtYmFubmVyLWVtcHR5IHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXhsKSAwO1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1tdXRlZCk7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLyogUmVzcG9uc2l2ZSBicmVha3BvaW50cyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDEwMjNweCkge1xuICAudHJ1c3QtYmFubmVyLWxvZ29zLS1ncmlkIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCAxZnIpO1xuICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAudHJ1c3QtYmFubmVyIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLW1kKSAwO1xuICB9XG5cbiAgLnRydXN0LWJhbm5lci1pbm5lciB7XG4gICAgcGFkZGluZzogMCB2YXIoLS1zcGFjaW5nLXNtKTtcbiAgfVxuXG4gIC50cnVzdC1iYW5uZXItbG9nb3MtLWdyaWQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICBvdmVyZmxvdy15OiBoaWRkZW47XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICAgIHNjcm9sbGJhci13aWR0aDogbm9uZTtcbiAgICAtbXMtb3ZlcmZsb3ctc3R5bGU6IG5vbmU7XG4gICAgZ2FwOiB2YXIoLS1zcGFjaW5nLW1kKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXNtKSAwO1xuICB9XG5cbiAgLnRydXN0LWJhbm5lci1sb2dvcy0tZ3JpZDo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAudHJ1c3QtYmFubmVyLWxvZ29zLS1ncmlkIC50cnVzdC1iYW5uZXItbG9nby1pdGVtIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBtaW4td2lkdGg6IDEwMHB4O1xuICB9XG59XG5cbi8qIEFuaW1hdGlvbiBjbGFzc2VzIGZvciBQV0EgKi9cbi50cnVzdC1iYW5uZXIucHdhLXNjcm9sbC1zZWN0aW9uIHtcbiAgYW5pbWF0aW9uOiBub25lO1xufVxuXG4udHJ1c3QtYmFubmVyIC5wd2Etc2Nyb2xsLWZhZGUge1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCk7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC42cyBlYXNlLW91dCwgdHJhbnNmb3JtIDAuNnMgZWFzZS1vdXQ7XG4gIHRyYW5zaXRpb24tZGVsYXk6IGNhbGModmFyKC0tc3RhZ2dlci1pbmRleCwgMCkgKiA1MG1zKTtcbn1cblxuLnRydXN0LWJhbm5lci5wd2EtaW4tdmlldyAucHdhLXNjcm9sbC1mYWRlIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xufVxuXG4vKiBQcmludCBzdHlsZXMgKi9cbkBtZWRpYSBwcmludCB7XG4gIC50cnVzdC1iYW5uZXIge1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkO1xuICB9XG5cbiAgLnRydXN0LWJhbm5lci1sb2dvIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIGZpbHRlcjogbm9uZTtcbiAgfVxufVxuXG4vKiBEYXJrIG1vZGUgc3VwcG9ydCAoZnV0dXJlKSAqL1xuQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xuICAudHJ1c3QtYmFubmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1zdXJmYWNlLWRhcmssICMxYTFhMWEpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItYm9yZGVyLWRhcmssICMzMzMpO1xuICB9XG5cbiAgLnRydXN0LWJhbm5lci10aXRsZSB7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtZGFyaywgI2ZmZik7XG4gIH1cblxuICAudHJ1c3QtYmFubmVyLWxvZ28ge1xuICAgIG9wYWNpdHk6IDAuODtcbiAgfVxufVxuXG4vKiBIaWdoIGNvbnRyYXN0IG1vZGUgKi9cbkBtZWRpYSAocHJlZmVycy1jb250cmFzdDogaGlnaCkge1xuICAudHJ1c3QtYmFubmVyIHtcbiAgICBib3JkZXItd2lkdGg6IDJweDtcbiAgfVxuXG4gIC50cnVzdC1iYW5uZXItbG9nbyB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuXG4vKiBSZWR1Y2VkIG1vdGlvbiAqL1xuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLnRydXN0LWJhbm5lci1sb2dvLFxuICAudHJ1c3QtYmFubmVyLWxvZ28taXRlbSxcbiAgLnRydXN0LWJhbm5lciAucHdhLXNjcm9sbC1mYWRlIHtcbiAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgIGFuaW1hdGlvbjogbm9uZTtcbiAgfVxufSIsIi8qIFVzZSBDYXNlIENhcmQgQ29tcG9uZW50IFN0eWxlcyAtIE1vZGVybiBCb3JkZXJsZXNzIERlc2lnbiAyMDI1ICovXG4vKiBGb2xsb3dpbmcgYnJhbmQvY29tcG9uZW50L3N0eWxpbmctc3RhbmRhcmQubWQgLSBUaHJlZS1MYXllciBDU1MgQXJjaGl0ZWN0dXJlICovXG5cbi8qIExheWVyIDI6IENvbXBvbmVudCBFbmhhbmNlbWVudCAtIENvbGxlY3Rpb24gUGF0dGVybiAqL1xuXG4vKiBVc2UgQ2FzZSBTZWN0aW9uIC0gQ29sbGVjdGlvbiBDb250YWluZXIgKi9cbi51c2UtY2FzZS1zZWN0aW9uIHtcbiAgcGFkZGluZzogY2FsYyh2YXIoLS1zcGFjZS0zMikgKiAxLjMpIDA7IC8qIEV4dHJlbWUgd2hpdGVzcGFjZSAqL1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItYmFja2dyb3VuZCkpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWZvcmVncm91bmQpKTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpO1xufVxuXG4vKiBVc2UgQ2FzZSBDb250YWluZXIgLSBDb250ZW50IFdyYXBwZXIgKi9cbi51c2UtY2FzZS1jb250YWluZXIge1xuICBtYXgtd2lkdGg6IDEyODBweDtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTQpIHZhcigtLXNwYWNlLTYpO1xufVxuXG4vKiBVc2UgQ2FzZSBIZWFkZXIgLSBDb2xsZWN0aW9uIEhlYWRlciAqL1xuLnVzZS1jYXNlLWhlYWRlciB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWFyZ2luLWJvdHRvbTogY2FsYyh2YXIoLS1zcGFjZS0xNikgKiAxLjMpOyAvKiBJbmNyZWFzZWQgc3BhY2luZyAqL1xufVxuXG4vKiBVc2UgQ2FzZSBUaXRsZSAtIEVuaGFuY2VzIGdsb2JhbCAudGl0bGUtc2VjdGlvbiAqL1xuLnVzZS1jYXNlLXRpdGxlIHtcbiAgbWFyZ2luLWJvdHRvbTogY2FsYyh2YXIoLS1zcGFjZS00KSAqIDEuMyk7XG59XG5cbi8qIFVzZSBDYXNlIFN1YnRpdGxlIC0gRW5oYW5jZXMgZ2xvYmFsIC5zdWJ0aXRsZS1sZyAqL1xuLnVzZS1jYXNlLXN1YnRpdGxlIHtcbiAgbWFyZ2luLWJvdHRvbTogY2FsYyh2YXIoLS1zcGFjZS0zKSAqIDEuMyk7XG59XG5cbi8qIFVzZSBDYXNlIERlc2NyaXB0aW9uIC0gRW5oYW5jZXMgZ2xvYmFsIC5kZXNjcmlwdGlvbi1sZyAqL1xuLnVzZS1jYXNlLWRlc2NyaXB0aW9uIHtcbiAgbWFyZ2luLWJvdHRvbTogY2FsYyh2YXIoLS1zcGFjZS02KSAqIDEuMyk7XG59XG5cbi8qIEljb24gSW50ZWdyYXRpb24gLSBVc2VzIGdsb2JhbCBicmFuZGVkIGljb24gY29udGFpbmVyIHN5c3RlbSAqL1xuLnVzZS1jYXNlLWljb24ge1xuICBtYXJnaW4tYm90dG9tOiBjYWxjKHZhcigtLXNwYWNlLTQpICogMS4zKTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7IC8qIEVuc3VyZSB2ZXJ0aWNhbCBjZW50ZXJpbmcgKi9cbiAgLyogTm8gYmFja2dyb3VuZCBjb2xvcnMgcGVyIGJyYW5kIGd1aWRlbGluZXMgLSBjb250YWluZXJzIGFyZSBsYXlvdXQtb25seSAqL1xufVxuXG4vKiBJbmRpdmlkdWFsIFVzZSBDYXNlIEl0ZW1zIC0gQ2FyZCBDb250ZW50IHdpdGggQk9SREVSTEVTUyBkZXNpZ24gKi9cbi8qIE5vdGU6IEluZGl2aWR1YWwgY2FyZHMgdXNlIGJyYW5kIGVuaGFuY2VtZW50cywgTk8gYm9yZGVycyAqL1xuXG4vKiBVc2UgQ2FzZSBJdGVtIFRpdGxlIC0gRW5oYW5jZXMgZ2xvYmFsIC50aXRsZS1jYXJkICovXG4udXNlLWNhc2UtaXRlbS10aXRsZSB7XG4gIG1hcmdpbi1ib3R0b206IGNhbGModmFyKC0tc3BhY2UtMykgKiAxLjMpO1xufVxuXG4vKiBVc2UgQ2FzZSBJdGVtIFN1YnRpdGxlIC0gRW5oYW5jZXMgZ2xvYmFsIC5zdWJ0aXRsZS1zbSAqL1xuLnVzZS1jYXNlLWl0ZW0tc3VidGl0bGUge1xuICBtYXJnaW4tYm90dG9tOiBjYWxjKHZhcigtLXNwYWNlLTIpICogMS4zKTtcbn1cblxuLyogVXNlIENhc2UgSXRlbSBEZXNjcmlwdGlvbiAtIEVuaGFuY2VzIGdsb2JhbCAuZGVzY3JpcHRpb24gKi9cbi51c2UtY2FzZS1pdGVtLWRlc2NyaXB0aW9uIHtcbiAgbWFyZ2luLWJvdHRvbTogY2FsYyh2YXIoLS1zcGFjZS00KSAqIDEuMyk7XG4gIGZsZXgtZ3JvdzogMTtcbiAgbGluZS1oZWlnaHQ6IDEuNjtcbn1cblxuLyogVXNlIENhc2UgQmVuZWZpdHMgTGlzdCAqL1xudWwudXNlLWNhc2UtYmVuZWZpdHMge1xuICBsaXN0LXN0eWxlOiBub25lICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgbWFyZ2luOiBjYWxjKHZhcigtLXNwYWNlLTQpICogMS4zKSBhdXRvIDAgYXV0byAhaW1wb3J0YW50OyAvKiBTcGFjaW5nIGZyb20gY29udGVudCBhYm92ZSwgcHVzaCB0byBib3R0b20gKi9cbiAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IC8qIExlZnQgYWxpZ24gaXRlbXMgZm9yIGljb24gYWxpZ25tZW50IC0gb3ZlcnJpZGUgdGV4dC1jZW50ZXIgKi9cbiAgZ2FwOiBjYWxjKHZhcigtLXNwYWNlLTIpICogMS4zKSAhaW1wb3J0YW50OyAvKiBJbmNyZWFzZWQgc3BhY2luZyBiZXR3ZWVuIGl0ZW1zICovXG4gIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IC8qIEZ1bGwgd2lkdGggZm9yIHByb3BlciBsYXlvdXQgKi9cbiAgdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50OyAvKiBPdmVycmlkZSBwYXJlbnQgdGV4dC1jZW50ZXIgKi9cbn1cblxubGkudXNlLWNhc2UtYmVuZWZpdCB7XG4gIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsgLyogQ2hhbmdlZCB0byBmbGV4IGZvciBmdWxsIHdpZHRoIGxheW91dCAtIG92ZXJyaWRlIGFueSBsaXN0LWl0ZW0gKi9cbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsgLyogQWxpZ24gdG8gdG9wIGZvciB3cmFwcGVkIHRleHQgKi9cbiAgZ2FwOiBjYWxjKHZhcigtLXNwYWNlLTIpICogMS4zKTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1tdXRlZC1mb3JlZ3JvdW5kKSk7XG4gIGZvbnQtc2l6ZTogbWF4KDAuODc1cmVtLCAxNHB4KTsgLyogUHJldmVudCBtb2JpbGUgem9vbSAqL1xuICBsaW5lLWhlaWdodDogMS41O1xuICB3aWR0aDogMTAwJTsgLyogRnVsbCB3aWR0aCBmb3IgcHJvcGVyIGFsaWdubWVudCAqL1xuICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7IC8qIExlZnQgYWxpZ24gdGV4dCAtIG92ZXJyaWRlIHBhcmVudCAqL1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7IC8qIEVuc3VyZSBsZWZ0IGFsaWdubWVudCAqL1xuICBtYXJnaW46IDA7IC8qIFJlc2V0IGFueSBkZWZhdWx0IG1hcmdpbnMgKi9cbiAgcGFkZGluZzogMDsgLyogUmVzZXQgYW55IGRlZmF1bHQgcGFkZGluZyAqL1xuICBsaXN0LXN0eWxlOiBub25lICFpbXBvcnRhbnQ7IC8qIFJlbW92ZSBsaXN0IHN0eWxpbmcgKi9cbn1cblxuLnVzZS1jYXNlLWJlbmVmaXQ6bGFzdC1jaGlsZCB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi8qIEJlbmVmaXQgaWNvbnMgaGFuZGxlZCBieSBnbG9iYWwgaWNvbiBzeXN0ZW0gKi9cbi51c2UtY2FzZS1iZW5lZml0LWljb24ge1xuICBmbGV4LXNocmluazogMDtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1zdWNjZXNzKSk7XG4gIHdpZHRoOiAxNnB4OyAvKiBGaXhlZCB3aWR0aCBmb3IgdmVydGljYWwgYWxpZ25tZW50ICovXG4gIGhlaWdodDogMTZweDsgLyogRml4ZWQgaGVpZ2h0ICovXG4gIG1hcmdpbi10b3A6IDAuMTI1cmVtOyAvKiBGaW5lLXR1bmUgdmVydGljYWwgcG9zaXRpb24gd2l0aCB0ZXh0IGJhc2VsaW5lICovXG59XG5cbi8qIEJlbmVmaXQgdGV4dCBzdHlsaW5nICovXG4udXNlLWNhc2UtYmVuZWZpdCBzcGFuIHtcbiAgZmxleDogMTsgLyogVGFrZSByZW1haW5pbmcgc3BhY2UgKi9cbiAgbGluZS1oZWlnaHQ6IDEuNTsgLyogQ29uc2lzdGVudCBsaW5lIGhlaWdodCBmb3IgcmVhZGFiaWxpdHkgKi9cbn1cblxuLyogSW5kaXZpZHVhbCBVc2UgQ2FzZSBDYXJkcyAtIEJPUkRFUkxFU1MgTW9kZXJuIERlc2lnbiAqL1xuLnVzZS1jYXNlLWl0ZW0tY2FyZCB7XG4gIC8qIENhcmQgZm91bmRhdGlvbiB3aXRoIEJPUkRFUkxFU1MgZGVzaWduICovXG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1jYXJkKSk7XG4gIGJvcmRlcjogMDsgLyogQ1JJVElDQUw6IE5vIGJvcmRlcnMgcGVyIHN0eWxpbmcgc3RhbmRhcmQgKi9cbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgXG4gIC8qIEVsZXZhdGlvbiB0aHJvdWdoIHNoYWRvd3MgaW5zdGVhZCBvZiBib3JkZXJzICovXG4gIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMDUpOyAvKiBTdWJ0bGUgYmFzZSBlbGV2YXRpb24gKi9cbiAgXG4gIC8qIExheW91dCAqL1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIFxuICAvKiBFWFRSRU1FIHdoaXRlc3BhY2UgLSAzMCUgbW9yZSBzcGFjaW5nICovXG4gIHBhZGRpbmc6IGNhbGModmFyKC0tc3BhY2UtNikgKiAxLjMpOyAvKiB+MzFweCB3aXRoIGV4dHJlbWUgc3BhY2luZyAqL1xuICBcbiAgLyogUGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9ucyAqL1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2Utc21vb3RoKTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApO1xuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtLCBib3gtc2hhZG93O1xufVxuXG4vKiBDbGVhbiB1cCB3aWxsLWNoYW5nZSBhZnRlciBpbnRlcmFjdGlvbiAqL1xuLnVzZS1jYXNlLWl0ZW0tY2FyZDpub3QoOmhvdmVyKTpub3QoOmZvY3VzKSB7XG4gIHdpbGwtY2hhbmdlOiBhdXRvO1xufVxuXG4vKiBDYXJkIGJvZHkgY29udGVudCB3cmFwcGVyICovXG4udXNlLWNhc2UtaXRlbS1jYXJkIC5jYXJkLWJvZHkge1xuICBmbGV4OiAxO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IGNhbGModmFyKC0tc3BhY2UtMykgKiAxLjMpOyAvKiBJbmNyZWFzZWQgc3BhY2luZyBiZXR3ZWVuIGVsZW1lbnRzICovXG59XG5cbi8qIFRyYW5zcGFyZW50IHZhcmlhbnQgLSBubyBib3JkZXJzIG9yIHNoYWRvd3MgKi9cbi51c2UtY2FzZS1pdGVtLWNhcmQudXNlLWNhc2UtdHJhbnNwYXJlbnQge1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgYm94LXNoYWRvdzogbm9uZTtcbiAgYm9yZGVyOiAwOyAvKiBFbnN1cmUgbm8gYm9yZGVycyAqL1xufVxuXG4vKiBIb3ZlciBzdGF0ZSAtIGVsZXZhdGlvbiBjaGFuZ2UsIE5PIGJvcmRlciBjaGFuZ2VzICovXG4udXNlLWNhc2UtaXRlbS1jYXJkOmhvdmVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpO1xuICBib3gtc2hhZG93OiAwIDhweCAyNXB4IHJnYmEoMCwgMCwgMCwgMC4xMik7IC8qIEluY3JlYXNlZCBlbGV2YXRpb24gKi9cbiAgYm9yZGVyOiAwOyAvKiBNYWludGFpbiBib3JkZXJsZXNzIGRlc2lnbiAqL1xufVxuXG4vKiBBY3RpdmUgc3RhdGUgKi9cbi51c2UtY2FzZS1pdGVtLWNhcmQ6YWN0aXZlIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjk4KSB0cmFuc2xhdGVZKC0ycHgpO1xuICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjA4KTsgLyogUHJlc3NlZCBzdGF0ZSAqL1xufVxuXG4vKiBGZWF0dXJlZCBjYXJkIHZhcmlhbnQgd2l0aCBoZXJpdGFnZSBhY2NlbnQgKi9cbi51c2UtY2FzZS1jYXJkLWZlYXR1cmVkIHtcbiAgLyogU3VidGxlIGhlcml0YWdlIGFjY2VudCB1c2luZyBzaGFkb3cgaW5zdGVhZCBvZiBib3JkZXIgKi9cbiAgYm94LXNoYWRvdzogXG4gICAgaW5zZXQgNHB4IDAgMCByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSksIC8qIExlZnQgYWNjZW50ICovXG4gICAgMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4wNSk7IC8qIEJhc2UgZWxldmF0aW9uICovXG4gIHBhZGRpbmctbGVmdDogY2FsYyh2YXIoLS1zcGFjZS02KSAqIDEuMyArIHZhcigtLXNwYWNlLTIpKTsgLyogRXh0cmEgcGFkZGluZyBmb3IgYWNjZW50ICovXG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSAvIDAuMDIpOyAvKiBWZXJ5IHN1YnRsZSB0aW50ICovXG4gIG1hcmdpbjogY2FsYyh2YXIoLS1zcGFjZS04KSAqIDEuMykgMDsgLyogRXh0cmEgdmVydGljYWwgc3BhY2UgZm9yIGhlcml0YWdlICovXG59XG5cbi51c2UtY2FzZS1jYXJkLWZlYXR1cmVkOmhvdmVyIHtcbiAgYm94LXNoYWRvdzogXG4gICAgaW5zZXQgNHB4IDAgMCByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSksXG4gICAgMCA4cHggMjVweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkgLyAwLjA0KTtcbn1cblxuLyogTW9iaWxlLUZpcnN0IFJlc3BvbnNpdmUgRGVzaWduICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLnVzZS1jYXNlLXNlY3Rpb24ge1xuICAgIHBhZGRpbmc6IGNhbGModmFyKC0tc3BhY2UtMjQpICogMS4zKSAwOyAvKiBTdGlsbCBnZW5lcm91cyBvbiBtb2JpbGUgKi9cbiAgfVxuICBcbiAgLnVzZS1jYXNlLWNvbnRhaW5lciB7XG4gICAgcGFkZGluZzogMCB2YXIoLS1zcGFjZS00KTtcbiAgfVxuICBcbiAgLnVzZS1jYXNlLWhlYWRlciB7XG4gICAgbWFyZ2luLWJvdHRvbTogY2FsYyh2YXIoLS1zcGFjZS0xMikgKiAxLjMpO1xuICB9XG4gIFxuICAudXNlLWNhc2UtaXRlbS1jYXJkIHtcbiAgICAvKiBBZGp1c3RlZCBidXQgc3RpbGwgZ2VuZXJvdXMgcGFkZGluZyBvbiBtb2JpbGUgKi9cbiAgICBwYWRkaW5nOiBjYWxjKHZhcigtLXNwYWNlLTQpICogMS4zKTsgLyogfjIxcHggKi9cbiAgfVxuICBcbiAgLyogUmVkdWNlIGhvdmVyIGxpZnQgb24gbW9iaWxlICovXG4gIC51c2UtY2FzZS1pdGVtLWNhcmQ6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgfVxufVxuXG4vKiBUb3VjaCBUYXJnZXQgT3B0aW1pemF0aW9uICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLnVzZS1jYXNlLWl0ZW0tY2FyZCB7XG4gICAgbWluLWhlaWdodDogNDhweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIH1cbiAgXG4gIC8qIEVuc3VyZSBpbnRlcmFjdGl2ZSBlbGVtZW50cyBtZWV0IDQ4cHggbWluaW11bSAqL1xuICBsaS51c2UtY2FzZS1iZW5lZml0IHtcbiAgICBtaW4taGVpZ2h0OiAzMnB4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IC8qIEtlZXAgaWNvbnMgYWxpZ25lZCB0byB0b3Agb24gbW9iaWxlICovXG4gICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OyAvKiBFbnN1cmUgZmxleCBsYXlvdXQgb24gbW9iaWxlICovXG4gICAgdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50OyAvKiBFbnN1cmUgbGVmdCBhbGlnbm1lbnQgb24gbW9iaWxlICovXG4gICAgbGlzdC1zdHlsZTogbm9uZSAhaW1wb3J0YW50OyAvKiBSZW1vdmUgbGlzdCBzdHlsaW5nIG9uIG1vYmlsZSAqL1xuICB9XG59XG5cbi8qIFRhYmxldCBlbmhhbmNlbWVudHMgKi9cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDEwMjNweCkge1xuICAudXNlLWNhc2UtaXRlbS1jYXJkIHtcbiAgICBwYWRkaW5nOiBjYWxjKHZhcigtLXNwYWNlLTYpICogMS4yKTsgLyogU2xpZ2h0bHkgbGVzcyB0aGFuIGRlc2t0b3AgKi9cbiAgfVxufVxuXG4vKiBIaWdoLXJlc29sdXRpb24gZGlzcGxheXMgKi9cbkBtZWRpYSAobWluLXdpZHRoOiAyNTYwcHgpIHtcbiAgLnVzZS1jYXNlLWl0ZW0tY2FyZCB7XG4gICAgcGFkZGluZzogY2FsYyh2YXIoLS1zcGFjZS04KSAqIDEuMyk7IC8qIEV2ZW4gbW9yZSBnZW5lcm91cyAqL1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy14bCk7XG4gIH1cbiAgXG4gIC51c2UtY2FzZS1pdGVtLWNhcmQ6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNnB4KTtcbiAgICBib3gtc2hhZG93OiAwIDEycHggNDBweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xuICB9XG59XG5cbi8qIEhpZ2ggQ29udHJhc3QgTW9kZSBTdXBwb3J0ICovXG5AbWVkaWEgKHByZWZlcnMtY29udHJhc3Q6IGhpZ2gpIHtcbiAgLnVzZS1jYXNlLWl0ZW0tY2FyZCB7XG4gICAgLyogVXNlIG91dGxpbmUgaW5zdGVhZCBvZiBib3JkZXIgZm9yIGhpZ2ggY29udHJhc3QgKi9cbiAgICBvdXRsaW5lOiAycHggc29saWQgY3VycmVudENvbG9yO1xuICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICB9XG4gIFxuICAudXNlLWNhc2UtY2FyZC1mZWF0dXJlZCB7XG4gICAgb3V0bGluZTogMnB4IHNvbGlkIHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpKTtcbiAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgfVxufVxuXG4vKiBSZWR1Y2VkIE1vdGlvbiBTdXBwb3J0ICovXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAudXNlLWNhc2UtaXRlbS1jYXJkIHtcbiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjAxbXMgIWltcG9ydGFudDtcbiAgICBhbmltYXRpb246IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuICBcbiAgLnVzZS1jYXNlLWl0ZW0tY2FyZDpob3ZlcixcbiAgLnVzZS1jYXNlLWl0ZW0tY2FyZDphY3RpdmUge1xuICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbi8qIEFjY2Vzc2liaWxpdHkgLSBGb2N1cyBTdGF0ZXMgKi9cbi51c2UtY2FzZS1pdGVtLWNhcmQ6Zm9jdXMtdmlzaWJsZSB7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGJveC1zaGFkb3c6IFxuICAgIDAgMCAwIDNweCByZ2JhKHZhcigtLWNvbG9yLWZvY3VzKSAvIDAuNSksIC8qIEZvY3VzIHJpbmcgKi9cbiAgICAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjA1KTsgLyogTWFpbnRhaW4gYmFzZSBlbGV2YXRpb24gKi9cbn1cblxuLyogU2NyZWVuIHJlYWRlciBvbmx5IGNvbnRlbnQgKi9cbi5zci1vbmx5IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4O1xuICBoZWlnaHQ6IDFweDtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAtMXB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBjbGlwOiByZWN0KDAsIDAsIDAsIDApO1xuICBib3JkZXI6IDA7XG59IiwiLyoqXG4gKiBWaWRlb0RlbW8gQ29tcG9uZW50IFN0eWxlc1xuICpcbiAqIFRocmVlLWxheWVyIENTUyBhcmNoaXRlY3R1cmU6XG4gKiAxLiBCcmFuZCB0b2tlbnMgKENTUyB2YXJpYWJsZXMpXG4gKiAyLiBDb21wb25lbnQgc3R5bGVzICh0aGlzIGZpbGUpXG4gKiAzLiBQYWdlIG92ZXJyaWRlcyAodmlhIHN0eWxlcyBwcm9wKVxuICovXG5cbi8qIEJhc2UgY29udGFpbmVyICovXG4udmlkZW8tZGVtbyB7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctbGcpIDA7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4vKiBJbm5lciBjb250YWluZXIgKi9cbi52aWRlby1kZW1vLWlubmVyIHtcbiAgbWF4LXdpZHRoOiA4MDBweDtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHBhZGRpbmc6IDAgdmFyKC0tc3BhY2luZy1iYXNlKTtcbn1cblxuLyogVGl0bGUgKi9cbi52aWRlby1kZW1vLXRpdGxlIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLXNtKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtcHJpbWFyeSk7XG59XG5cbi8qIERlc2NyaXB0aW9uICovXG4udmlkZW8tZGVtby1kZXNjcmlwdGlvbiB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy1tZCk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXNlY29uZGFyeSk7XG4gIG1heC13aWR0aDogNjAwcHg7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG59XG5cbi8qIFZpZGVvIGNvbnRhaW5lciB3aXRoIGFzcGVjdCByYXRpbyAqL1xuLnZpZGVvLWRlbW8tY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogMTAwJTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3Itc3VyZmFjZS1tdXRlZCk7XG4gIGJveC1zaGFkb3c6IDAgMTBweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbn1cblxuLyogQXNwZWN0IHJhdGlvIHZhcmlhbnRzICovXG4udmlkZW8tZGVtby0tYXNwZWN0LTE2LTkge1xuICBhc3BlY3QtcmF0aW86IDE2IC8gOTtcbn1cblxuLnZpZGVvLWRlbW8tLWFzcGVjdC00LTMge1xuICBhc3BlY3QtcmF0aW86IDQgLyAzO1xufVxuXG4udmlkZW8tZGVtby0tYXNwZWN0LTEtMSB7XG4gIGFzcGVjdC1yYXRpbzogMSAvIDE7XG59XG5cbi8qIFZpZGVvIGVtYmVkICovXG4udmlkZW8tZGVtby1lbWJlZCxcbi52aWRlby1kZW1vLXBsYXllciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBib3JkZXI6IDA7XG59XG5cbi8qIEZhbGxiYWNrIGNvbnRhaW5lciAqL1xuLnZpZGVvLWRlbW8tZmFsbGJhY2sge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1zdXJmYWNlLWRhcmspO1xufVxuXG4vKiBUaHVtYm5haWwgaW1hZ2UgKi9cbi52aWRlby1kZW1vLXRodW1ibmFpbCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvYmplY3QtZml0OiBjb3Zlcjtcbn1cblxuLyogUGxheSBidXR0b24gb3ZlcmxheSAqL1xuLnZpZGVvLWRlbW8tcGxheS1idXR0b24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDIyNCwgNzUsIDU2LCAwLjk1KTtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIHdpZHRoOiA4MHB4O1xuICBoZWlnaHQ6IDgwcHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xuICBib3gtc2hhZG93OiAwIDRweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4zKTtcbn1cblxuLnZpZGVvLWRlbW8tcGxheS1idXR0b246aG92ZXIge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKSBzY2FsZSgxLjEpO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDIyNCwgNzUsIDU2LCAxKTtcbiAgYm94LXNoYWRvdzogMCA2cHggMzBweCByZ2JhKDAsIDAsIDAsIDAuNCk7XG59XG5cbi52aWRlby1kZW1vLXBsYXktYnV0dG9uOmFjdGl2ZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpIHNjYWxlKDAuOTUpO1xufVxuXG4vKiBQbGF5IGljb24gYWRqdXN0bWVudCAqL1xuLnZpZGVvLWRlbW8tcGxheS1idXR0b24gLmljb24tcGxheSB7XG4gIG1hcmdpbi1sZWZ0OiA0cHg7IC8qIENlbnRlciB0aGUgcGxheSB0cmlhbmdsZSB2aXN1YWxseSAqL1xufVxuXG4vKiBMb2FkaW5nIHN0YXRlICovXG4udmlkZW8tZGVtby1sb2FkaW5nIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1zdXJmYWNlLW11dGVkKTtcbiAgZ2FwOiB2YXIoLS1zcGFjaW5nLXNtKTtcbn1cblxuLnZpZGVvLWRlbW8tbG9hZGluZyAuc3Bpbm5lciB7XG4gIGFuaW1hdGlvbjogc3BpbiAxcyBsaW5lYXIgaW5maW5pdGU7XG59XG5cbkBrZXlmcmFtZXMgc3BpbiB7XG4gIGZyb20geyB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfVxuICB0byB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH1cbn1cblxuLyogQ1RBIG92ZXJsYXkgKi9cbi52aWRlby1kZW1vLWN0YSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiB2YXIoLS1zcGFjaW5nLWJhc2UpO1xuICByaWdodDogdmFyKC0tc3BhY2luZy1iYXNlKTtcbiAgei1pbmRleDogMTA7XG59XG5cbi8qIFNpemUgdmFyaWFudHMgKi9cbi52aWRlby1kZW1vLS1zbSAudmlkZW8tZGVtby1pbm5lciB7XG4gIG1heC13aWR0aDogNjQwcHg7XG59XG5cbi52aWRlby1kZW1vLS1iYXNlIC52aWRlby1kZW1vLWlubmVyIHtcbiAgbWF4LXdpZHRoOiA4MDBweDtcbn1cblxuLnZpZGVvLWRlbW8tLWxnIC52aWRlby1kZW1vLWlubmVyIHtcbiAgbWF4LXdpZHRoOiAxMDI0cHg7XG59XG5cbi52aWRlby1kZW1vLS1mdWxsIC52aWRlby1kZW1vLWlubmVyIHtcbiAgbWF4LXdpZHRoOiAxMDAlO1xufVxuXG4vKiBNb2JpbGUgb3B0aW1pemF0aW9ucyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC52aWRlby1kZW1vIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLW1kKSAwO1xuICB9XG5cbiAgLnZpZGVvLWRlbW8taW5uZXIge1xuICAgIHBhZGRpbmc6IDAgdmFyKC0tc3BhY2luZy1zbSk7XG4gIH1cblxuICAudmlkZW8tZGVtby10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbGcpO1xuICB9XG5cbiAgLnZpZGVvLWRlbW8tZGVzY3JpcHRpb24ge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgfVxuXG4gIC52aWRlby1kZW1vLWNvbnRhaW5lciB7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWJhc2UpO1xuICB9XG5cbiAgLnZpZGVvLWRlbW8tcGxheS1idXR0b24ge1xuICAgIHdpZHRoOiA2MHB4O1xuICAgIGhlaWdodDogNjBweDtcbiAgfVxuXG4gIC52aWRlby1kZW1vLWN0YSB7XG4gICAgcG9zaXRpb246IHN0YXRpYztcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLWJhc2UpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxufVxuXG4vKiBUYWJsZXQgYWRqdXN0bWVudHMgKi9cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDEwMjNweCkge1xuICAudmlkZW8tZGVtby1wbGF5LWJ1dHRvbiB7XG4gICAgd2lkdGg6IDcwcHg7XG4gICAgaGVpZ2h0OiA3MHB4O1xuICB9XG59XG5cbi8qIEFuaW1hdGlvbiBjbGFzc2VzICovXG4udmlkZW8tZGVtby5wd2Etc2Nyb2xsLXNlY3Rpb24ge1xuICBhbmltYXRpb246IG5vbmU7XG59XG5cbi52aWRlby1kZW1vIC5wd2Etc2Nyb2xsLWZhZGUge1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCk7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC42cyBlYXNlLW91dCwgdHJhbnNmb3JtIDAuNnMgZWFzZS1vdXQ7XG4gIHRyYW5zaXRpb24tZGVsYXk6IGNhbGModmFyKC0tc3RhZ2dlci1pbmRleCwgMCkgKiAxMDBtcyk7XG59XG5cbi52aWRlby1kZW1vLnB3YS1pbi12aWV3IC5wd2Etc2Nyb2xsLWZhZGUge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG59XG5cbi8qIFByaW50IHN0eWxlcyAqL1xuQG1lZGlhIHByaW50IHtcbiAgLnZpZGVvLWRlbW8tY29udGFpbmVyIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gIH1cblxuICAudmlkZW8tZGVtby1wbGF5LWJ1dHRvbixcbiAgLnZpZGVvLWRlbW8tY3RhIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi8qIERhcmsgbW9kZSBzdXBwb3J0ICovXG5AbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XG4gIC52aWRlby1kZW1vLWNvbnRhaW5lciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3Itc3VyZmFjZS1kYXJrLCAjMWExYTFhKTtcbiAgICBib3gtc2hhZG93OiAwIDEwcHggNDBweCByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gIH1cblxuICAudmlkZW8tZGVtby1mYWxsYmFjayB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3Itc3VyZmFjZS1kYXJrZXIsICMwYTBhMGEpO1xuICB9XG59XG5cbi8qIFJlZHVjZWQgbW90aW9uICovXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAudmlkZW8tZGVtby1wbGF5LWJ1dHRvbixcbiAgLnZpZGVvLWRlbW8gLnB3YS1zY3JvbGwtZmFkZSB7XG4gICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICBhbmltYXRpb246IG5vbmU7XG4gIH1cblxuICAudmlkZW8tZGVtby1sb2FkaW5nIC5zcGlubmVyIHtcbiAgICBhbmltYXRpb246IG5vbmU7XG4gIH1cbn0iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQm91bmRsZXNzIFNvZnR3YXJlIC0gR2xvYmFsIEJyYW5kIEZvdW5kYXRpb25cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBcbiAgIENvbXBsZXRlIGJyYW5kIGZvdW5kYXRpb24gaW1wbGVtZW50YXRpb24gYmFzZWQgb24gQlJBTkQtR1VJREUubWRcbiAgIFRoaXMgaXMgTGF5ZXIgMSBvZiB0aGUgMy1sYXllciBDU1MgYXJjaGl0ZWN0dXJlIHN5c3RlbS5cbiAgIFxuICAgQ29udGVudHM6XG4gICAxLiBJbXBvcnRzIChUYWlsd2luZCwgRm9udHMsIENvbXBvbmVudHMpXG4gICAyLiBDU1MgQ3VzdG9tIFByb3BlcnRpZXMgKENvbXBsZXRlIGJyYW5kIHN5c3RlbSlcbiAgIDMuIEJhc2UgU3R5bGVzICYgUmVzZXRzXG4gICA0LiBTZW1hbnRpYyBUeXBvZ3JhcGh5IENsYXNzZXMgKFJFUVVJUkVEKVxuICAgNS4gQnV0dG9uIFN5c3RlbSAoU3RyYXRlZ2ljIFJlZCBIaWVyYXJjaHkpXG4gICA2LiBMYXlvdXQgVXRpbGl0aWVzXG4gICA3LiBHcmlkIFN5c3RlbVxuICAgOC4gQ2FyZCBDb21wb25lbnRzXG4gICA5LiBVdGlsaXR5IENsYXNzZXNcbiAgIDEwLiBBbmltYXRpb24gQ2xhc3Nlc1xuICAgMTEuIEFjY2Vzc2liaWxpdHkgRmVhdHVyZXNcbiAgIDEyLiBNb2Rlcm4gQW5pbWF0aW9uc1xuICAgMTMuIERhdGEgVmlzdWFsaXphdGlvbiBGb3VuZGF0aW9uc1xuICAgMTQuIENvbXBvbmVudCBTdHlsZSBJbXBvcnRzXG4gICBcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAxLiBJTVBPUlRTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBUYWlsd2luZCBDU1MgdjQgQmFzZSAqL1xuQGltcG9ydCBcInRhaWx3aW5kY3NzXCI7XG5cbi8qIEdvb2dsZSBGb250cyAtIEJyYW5kIEd1aWRlIENvbXBsaWFudCBMb2FkaW5nXG4gKiBOb3RlOiBQcmltYXJ5IGZvbnQgbG9hZGluZyBoYW5kbGVkIGluIExheW91dFdpdGhIZWFkZXIudHN4IGZvciBvcHRpbWFsIHBlcmZvcm1hbmNlXG4gKiBUaGlzIGltcG9ydCBzZXJ2ZXMgYXMgZmFsbGJhY2sgZm9yIGNvbXBvbmVudHMgdGhhdCBkb24ndCB1c2UgdGhlIGxheW91dCB3cmFwcGVyXG4gKi9cblxuLyogQ29tcG9uZW50LXNwZWNpZmljIENTUyBmaWxlcyAqL1xuLyogVGhlc2UgZXh0ZW5kIHRoZSBmb3VuZGF0aW9uIHdpdGggY29tcG9uZW50LXNwZWNpZmljIHN0eWxlcyAqL1xuLyogVXNpbmcgaW1wb3J0LWdsb2IgdG8gYXV0b21hdGljYWxseSBpbXBvcnQgYWxsIGNvbXBvbmVudCBDU1MgZmlsZXMgKi9cbkBpbXBvcnQtZ2xvYiBcIi4vc3R5bGVzL2NvbXBvbmVudHMvKi5jc3NcIjtcblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDIuIENTUyBDVVNUT00gUFJPUEVSVElFUyAtIENvbXBsZXRlIEJyYW5kIFN5c3RlbVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuOnJvb3Qge1xuICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgIEJyYW5kIENvbG9ycyAtIENvcmVcbiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuICBcbiAgLyogUHJvZmVzc2lvbmFsIFNsYXRlIEdyYXkgLSBQcmltYXJ5IEJyYW5kIEZvdW5kYXRpb24gKi9cbiAgLS1jb2xvci1wcmltYXJ5OiA3MSA4NSAxMDU7ICAgICAgICAgICAgICAvKiAjNDc1NTY5ICovXG4gIC0tY29sb3ItcHJpbWFyeS1mb3JlZ3JvdW5kOiAyNTUgMjU1IDI1NTsgLyogV2hpdGUgb24gcHJpbWFyeSAqL1xuICBcbiAgLyogQ29tcGxldGUgU2xhdGUgR3JheSBTY2FsZSAqL1xuICAtLWNvbG9yLXByaW1hcnktNTA6IDI0OCAyNTAgMjUyOyAgICAgICAgIC8qICNmOGZhZmMgKi9cbiAgLS1jb2xvci1wcmltYXJ5LTEwMDogMjQxIDI0NSAyNDk7ICAgICAgICAvKiAjZjFmNWY5ICovXG4gIC0tY29sb3ItcHJpbWFyeS0yMDA6IDIyNiAyMzIgMjQwOyAgICAgICAgLyogI2UyZThmMCAqL1xuICAtLWNvbG9yLXByaW1hcnktMzAwOiAyMDMgMjEzIDIyNTsgICAgICAgIC8qICNjYmQ1ZTEgKi9cbiAgLS1jb2xvci1wcmltYXJ5LTQwMDogMTQ4IDE2MyAxODQ7ICAgICAgICAvKiAjOTRhM2I4ICovXG4gIC0tY29sb3ItcHJpbWFyeS01MDA6IDEwMCAxMTYgMTM5OyAgICAgICAgLyogIzY0NzQ4YiAqL1xuICAtLWNvbG9yLXByaW1hcnktNjAwOiA3MSA4NSAxMDU7ICAgICAgICAgIC8qICM0NzU1NjkgUFJJTUFSWSAqL1xuICAtLWNvbG9yLXByaW1hcnktNzAwOiA1MSA2NSA4NTsgICAgICAgICAgIC8qICMzMzQxNTUgKi9cbiAgLS1jb2xvci1wcmltYXJ5LTgwMDogMzAgNDEgNTk7ICAgICAgICAgICAvKiAjMWUyOTNiICovXG4gIC0tY29sb3ItcHJpbWFyeS05MDA6IDE1IDIzIDQyOyAgICAgICAgICAgLyogIzBmMTcyYSAqL1xuICAtLWNvbG9yLXByaW1hcnktOTUwOiAyIDYgMjM7ICAgICAgICAgICAgIC8qICMwMjA2MTcgKi9cbiAgXG4gIC8qIEluZGlhbiBSZWQgSGVyaXRhZ2UgQWNjZW50IC0gU3RyYXRlZ2ljIElubm92YXRpb24gKi9cbiAgLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2U6IDIwNSA5MiA5MjsgICAgICAvKiAjQ0Q1QzVDICovXG4gIC0tY29sb3ItYWNjZW50LWhlcml0YWdlLWZvcmVncm91bmQ6IDI1NSAyNTUgMjU1O1xuICBcbiAgLyogQ29tcGxldGUgSGVyaXRhZ2UgUmVkIFNjYWxlICovXG4gIC0tY29sb3ItYWNjZW50LWhlcml0YWdlLTUwOiAyNTQgMjQyIDI0MjsgIC8qICNmZWYyZjIgKi9cbiAgLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UtMTAwOiAyNTQgMjI5IDIyOTsgLyogI2ZlZTVlNSAqL1xuICAtLWNvbG9yLWFjY2VudC1oZXJpdGFnZS0yMDA6IDI1NCAyMDIgMjAyOyAvKiAjZmVjYWNhICovXG4gIC0tY29sb3ItYWNjZW50LWhlcml0YWdlLTMwMDogMjUyIDE2NSAxNjU7IC8qICNmY2E1YTUgKi9cbiAgLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UtNDAwOiAyNDggMTEzIDExMzsgLyogI2Y4NzE3MSAqL1xuICAtLWNvbG9yLWFjY2VudC1oZXJpdGFnZS01MDA6IDIzOSA2OCA2ODsgICAvKiAjZWY0NDQ0ICovXG4gIC0tY29sb3ItYWNjZW50LWhlcml0YWdlLTYwMDogMjIwIDM4IDM4OyAgIC8qICNkYzI2MjYgKi9cbiAgLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UtNzAwOiAxODUgMjggMjg7ICAgLyogI2I5MWMxYyAqL1xuICAtLWNvbG9yLWFjY2VudC1oZXJpdGFnZS04MDA6IDE1MyAyNyAyNzsgICAvKiAjOTkxYjFiICovXG4gIC0tY29sb3ItYWNjZW50LWhlcml0YWdlLTkwMDogMTI3IDI5IDI5OyAgIC8qICM3ZjFkMWQgKi9cbiAgXG4gIC8qIFN0cmF0ZWdpYyBSZWQgVXNhZ2UgVHJhY2tpbmcgKi9cbiAgLS1yZWQtcHJpbWFyeS11c2FnZTogMTAlOyAgICAvKiBDVEFzLCBrZXkgYWN0aW9ucyAqL1xuICAtLXJlZC1hY2NlbnQtdXNhZ2U6IDUlOyAgICAgIC8qIEhpZ2hsaWdodHMsIGluZGljYXRvcnMgKi9cbiAgLS1yZWQtc3VidGxlLXVzYWdlOiAyJTsgICAgICAvKiBCb3JkZXJzLCBiYWNrZ3JvdW5kcyAqL1xuICBcbiAgLyogU3RyYXRlZ2ljIFJlZCBXaGl0ZXNwYWNlIC0gMjUtMzUlIG1vcmUgdGhhbiBzdGFuZGFyZCAqL1xuICAtLXNwYWNlLWhlcml0YWdlLXhzOiAwLjc1cmVtOyAgIC8qIDEycHggKi9cbiAgLS1zcGFjZS1oZXJpdGFnZS1zbTogMS41cmVtOyAgICAvKiAyNHB4ICovXG4gIC0tc3BhY2UtaGVyaXRhZ2UtbWQ6IDIuNXJlbTsgICAgLyogNDBweCAqL1xuICAtLXNwYWNlLWhlcml0YWdlLWxnOiA0cmVtOyAgICAgIC8qIDY0cHggKi9cbiAgLS1zcGFjZS1oZXJpdGFnZS14bDogNnJlbTsgICAgICAvKiA5NnB4ICovXG4gIFxuICAvKiBDb21wb25lbnQtc3BlY2lmaWMgaGVyaXRhZ2Ugc3BhY2luZyAqL1xuICAtLWJ0bi1oZXJpdGFnZS1wYWRkaW5nLXg6IDEuNXJlbTtcbiAgLS1idG4taGVyaXRhZ2UtbWFyZ2luOiAxLjVyZW07XG4gIC0tdGV4dC1oZXJpdGFnZS1zcGFjaW5nOiAxLjI1cmVtO1xuICAtLWNhcmQtaGVyaXRhZ2UtbWFyZ2luOiAycmVtO1xuICBcbiAgLyogTmF2eSBCbHVlIFNlY29uZGFyeSAtIFRydXN0ICYgVGVjaG5vbG9neSAqL1xuICAtLWNvbG9yLXNlY29uZGFyeTogMzAgNTggMTM4OyAgICAgICAgICAgIC8qICMxZTNhOGEgKi9cbiAgLS1jb2xvci1zZWNvbmRhcnktZm9yZWdyb3VuZDogMjU1IDI1NSAyNTU7XG4gIFxuICAvKiBDb21wbGV0ZSBOYXZ5IEJsdWUgU2NhbGUgKi9cbiAgLS1jb2xvci1zZWNvbmRhcnktNTA6IDIzOSAyNDYgMjU1OyAgICAgICAvKiAjZWZmNmZmICovXG4gIC0tY29sb3Itc2Vjb25kYXJ5LTEwMDogMjE5IDIzNCAyNTQ7ICAgICAgLyogI2RiZWFmZSAqL1xuICAtLWNvbG9yLXNlY29uZGFyeS0yMDA6IDE5MSAyMTkgMjU0OyAgICAgIC8qICNiZmRiZmUgKi9cbiAgLS1jb2xvci1zZWNvbmRhcnktMzAwOiAxNDcgMTk3IDI1MzsgICAgICAvKiAjOTNjNWZkICovXG4gIC0tY29sb3Itc2Vjb25kYXJ5LTQwMDogOTYgMTY1IDI1MDsgICAgICAgLyogIzYwYTVmYSAqL1xuICAtLWNvbG9yLXNlY29uZGFyeS01MDA6IDU5IDEzMCAyNDY7ICAgICAgIC8qICMzYjgyZjYgKi9cbiAgLS1jb2xvci1zZWNvbmRhcnktNjAwOiAzNyA5OSAyMzU7ICAgICAgICAvKiAjMjU2M2ViICovXG4gIC0tY29sb3Itc2Vjb25kYXJ5LTcwMDogMjkgNzggMjE2OyAgICAgICAgLyogIzFkNGVkOCAqL1xuICAtLWNvbG9yLXNlY29uZGFyeS04MDA6IDMwIDY0IDE3NTsgICAgICAgIC8qICMxZTQwYWYgKi9cbiAgLS1jb2xvci1zZWNvbmRhcnktOTAwOiAzMCA1OCAxMzg7ICAgICAgICAvKiAjMWUzYThhIFNFQ09OREFSWSAqL1xuICBcbiAgLyogU2VtYW50aWMgQ29sb3JzICovXG4gIC0tY29sb3Itc3VjY2VzczogMTYgMTg1IDEyOTsgICAgICAgICAgICAgLyogIzEwYjk4MSAtIEVtZXJhbGQgKi9cbiAgLS1jb2xvci1zdWNjZXNzLWZvcmVncm91bmQ6IDI1NSAyNTUgMjU1O1xuICAtLWNvbG9yLXdhcm5pbmc6IDI0NSAxNTggMTE7ICAgICAgICAgICAgIC8qICNmNTllMGIgLSBBbWJlciAqL1xuICAtLWNvbG9yLXdhcm5pbmctZm9yZWdyb3VuZDogMCAwIDA7XG4gIC0tY29sb3ItZXJyb3I6IDE4NSAyOCAyODsgICAgICAgICAgICAgICAgLyogI2I5MWMxYyAtIEVycm9yIFJlZCAqL1xuICAtLWNvbG9yLWVycm9yLWZvcmVncm91bmQ6IDI1NSAyNTUgMjU1O1xuICAtLWNvbG9yLWluZm86IDU5IDEzMCAyNDY7ICAgICAgICAgICAgICAgIC8qICMzYjgyZjYgLSBCbHVlICovXG4gIC0tY29sb3ItaW5mby1mb3JlZ3JvdW5kOiAyNTUgMjU1IDI1NTtcbiAgXG4gIC8qIE5ldXRyYWwgVUkgQ29sb3JzICovXG4gIC0tY29sb3ItYmFja2dyb3VuZDogMjU1IDI1NSAyNTU7ICAgICAgICAgLyogV2hpdGUgKi9cbiAgLS1jb2xvci1mb3JlZ3JvdW5kOiAxNSAyMyA0MjsgICAgICAgICAgICAvKiBOZWFybHkgYmxhY2sgKi9cbiAgLS1jb2xvci1tdXRlZDogMjQxIDI0NSAyNDk7ICAgICAgICAgICAgICAvKiBMaWdodCBncmF5IGJnICovXG4gIC0tY29sb3ItbXV0ZWQtZm9yZWdyb3VuZDogMTAwIDExNiAxMzk7ICAgLyogTWVkaXVtIGdyYXkgdGV4dCAqL1xuICAtLWNvbG9yLWJvcmRlcjogMjI2IDIzMiAyNDA7ICAgICAgICAgICAgIC8qIExpZ2h0IGJvcmRlcnMgKi9cbiAgLS1jb2xvci1yaW5nOiA3MSA4NSAxMDU7ICAgICAgICAgICAgICAgICAvKiBGb2N1cyByaW5nICovXG4gIFxuICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgIFR5cG9ncmFwaHkgU3lzdGVtXG4gICAgID09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbiAgXG4gIC8qIEZvbnQgRmFtaWxpZXMgKi9cbiAgLS1mb250LWZhbWlseS1zYW5zOiAnSW50ZXInLCB1aS1zYW5zLXNlcmlmLCBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXCJTZWdvZSBVSVwiLCBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgQXJpYWwsIHNhbnMtc2VyaWY7XG4gIC0tZm9udC1mYW1pbHktZGlzcGxheTogJ1NwYWNlIEdyb3Rlc2snLCB1aS1zYW5zLXNlcmlmLCBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXCJTZWdvZSBVSVwiLCBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgQXJpYWwsIHNhbnMtc2VyaWY7XG4gIC0tZm9udC1mYW1pbHktbW9ubzogJ0pldEJyYWlucyBNb25vJywgdWktbW9ub3NwYWNlLCBTRk1vbm8tUmVndWxhciwgXCJTRiBNb25vXCIsIENvbnNvbGFzLCBcIkxpYmVyYXRpb24gTW9ub1wiLCBNZW5sbywgbW9ub3NwYWNlO1xuICBcbiAgLyogRm9udCBTaXplcyAtIFRyYWRpdGlvbmFsIFNjYWxlICovXG4gIC0tZm9udC1zaXplLXhzOiAwLjc1cmVtOyAgICAgLyogMTJweCAqL1xuICAtLWZvbnQtc2l6ZS1zbTogMC44NzVyZW07ICAgIC8qIDE0cHggKi9cbiAgLS1mb250LXNpemUtYmFzZTogMXJlbTsgICAgICAvKiAxNnB4ICovXG4gIC0tZm9udC1zaXplLWxnOiAxLjEyNXJlbTsgICAgLyogMThweCAqL1xuICAtLWZvbnQtc2l6ZS14bDogMS4yNXJlbTsgICAgIC8qIDIwcHggKi9cbiAgLS1mb250LXNpemUtMnhsOiAxLjVyZW07ICAgICAvKiAyNHB4ICovXG4gIC0tZm9udC1zaXplLTN4bDogMS44NzVyZW07ICAgLyogMzBweCAqL1xuICAtLWZvbnQtc2l6ZS00eGw6IDIuMjVyZW07ICAgIC8qIDM2cHggKi9cbiAgLS1mb250LXNpemUtNXhsOiAzcmVtOyAgICAgICAvKiA0OHB4ICovXG4gIC0tZm9udC1zaXplLTZ4bDogMy43NXJlbTsgICAgLyogNjBweCAqL1xuICAtLWZvbnQtc2l6ZS03eGw6IDQuNXJlbTsgICAgIC8qIDcycHggKi9cbiAgLS1mb250LXNpemUtOHhsOiA2cmVtOyAgICAgICAvKiA5NnB4ICovXG4gIC0tZm9udC1zaXplLTl4bDogOHJlbTsgICAgICAgLyogMTI4cHggKi9cbiAgXG4gIC8qIEhlcm8vRGlzcGxheSBUeXBvZ3JhcGh5IC0gTW9iaWxlLUZpcnN0IFJlc3BvbnNpdmUgKi9cbiAgLS10ZXh0LWhlcm86IGNsYW1wKDNyZW0sIDh2dywgN3JlbSk7ICAgICAgLyogNDhweCDihpIgMTEycHggKi9cbiAgLS10ZXh0LWRpc3BsYXk6IGNsYW1wKDIuNXJlbSwgNnZ3LCA1cmVtKTsgLyogNDBweCDihpIgODBweCAqL1xuICAtLXRleHQtaGVhZGxpbmU6IGNsYW1wKDJyZW0sIDR2dywgMy41cmVtKTsvKiAzMnB4IOKGkiA1NnB4ICovXG4gIFxuICAvKiBNb2JpbGUtRmlyc3QgRm9udCBTaXplcyB3aXRoIEZsdWlkIFNjYWxpbmcgKi9cbiAgLS1mb250LXNpemUtYmFzZS1tb2JpbGU6IGNsYW1wKDAuODc1cmVtLCAydncgKyAwLjVyZW0sIDEuMTI1cmVtKTsgLyogMTRweC0xOHB4ICovXG4gIC0tZm9udC1zaXplLWhlcm8tbW9iaWxlOiBjbGFtcCgycmVtLCA1dncgKyAxcmVtLCA0LjVyZW0pO1xuICAtLWZvbnQtc2l6ZS1oMS1tb2JpbGU6IGNsYW1wKDEuNzVyZW0sIDR2dyArIDAuNXJlbSwgM3JlbSk7XG4gIC0tZm9udC1zaXplLWgyLW1vYmlsZTogY2xhbXAoMS41cmVtLCAzdncgKyAwLjVyZW0sIDIuMjVyZW0pO1xuICAtLWZvbnQtc2l6ZS1oMy1tb2JpbGU6IGNsYW1wKDEuMjVyZW0sIDJ2dyArIDAuNXJlbSwgMS43NXJlbSk7XG4gIFxuICAvKiBNaW5pbXVtIFJlYWRhYmxlIFNpemVzICovXG4gIC0tZm9udC1zaXplLXNtYWxsLW1pbjogbWF4KDAuODc1cmVtLCAxNHB4KTsgLyogTmV2ZXIgYmVsb3cgMTRweCAqL1xuICAtLWZvbnQtc2l6ZS10aW55LW1pbjogbWF4KDAuNzVyZW0sIDEycHgpOyAgIC8qIEFic29sdXRlIG1pbmltdW0gKi9cbiAgXG4gIC8qIEZvbnQgV2VpZ2h0cyAtIE1vYmlsZS1GaXJzdCBSZXNwb25zaXZlICovXG4gIC0tZm9udC13ZWlnaHQtZXh0cmFsaWdodDogMjAwO1xuICAtLWZvbnQtd2VpZ2h0LWxpZ2h0OiAzMDA7XG4gIC0tZm9udC13ZWlnaHQtbm9ybWFsOiA0MDA7XG4gIC0tZm9udC13ZWlnaHQtbWVkaXVtOiA1MDA7XG4gIC0tZm9udC13ZWlnaHQtc2VtaWJvbGQ6IDYwMDtcbiAgLS1mb250LXdlaWdodC1ib2xkOiA3MDA7XG4gIC0tZm9udC13ZWlnaHQtZXh0cmFib2xkOiA4MDA7XG4gIFxuICAvKiBNb2JpbGUgVHlwb2dyYXBoeSBBZGp1c3RtZW50cyAoPCA3NjhweCkgKi9cbiAgLS1mb250LXdlaWdodC1oZXJvLW1vYmlsZTogMzAwOyAgICAgIC8qIFNsaWdodGx5IGhlYXZpZXIgZm9yIGNsYXJpdHkgKi9cbiAgLS1mb250LXdlaWdodC1oZWFkaW5nLW1vYmlsZTogNTAwOyAgIC8qIE1vcmUgY29udHJhc3Qgb24gc21hbGwgc2NyZWVucyAqL1xuICAtLWZvbnQtd2VpZ2h0LWJvZHktbW9iaWxlOiA0MDA7ICAgICAgLyogU3RhbmRhcmQgcmVtYWlucyBzYW1lICovXG4gIC0tZm9udC13ZWlnaHQtYm9sZC1tb2JpbGU6IDYwMDsgICAgICAvKiBDbGVhciBlbXBoYXNpcyAqL1xuICAtLWZvbnQtd2VpZ2h0LWhlcml0YWdlLW1vYmlsZTogNzAwOyAgLyogUmVkIHRleHQgZXh0cmEgYm9sZCBvbiBtb2JpbGUgKi9cbiAgXG4gIC8qIERlc2t0b3AgVHlwb2dyYXBoeSBSZWZpbmVtZW50cyAoMTI4MHB4KykgKi9cbiAgLS1mb250LXdlaWdodC1oZXJvLWRlc2t0b3A6IDIwMDsgICAgIC8qIFVsdHJhLWxpZ2h0IGZvciBlbGVnYW5jZSAqL1xuICAtLWZvbnQtd2VpZ2h0LWhlYWRpbmctZGVza3RvcDogMzAwOyAgLyogRGVsaWNhdGUgaGVhZGluZ3MgKi9cbiAgLS1mb250LXdlaWdodC1ib2R5LWRlc2t0b3A6IDQwMDsgICAgIC8qIE9wdGltYWwgcmVhZGFiaWxpdHkgKi9cbiAgLS1mb250LXdlaWdodC1ib2xkLWRlc2t0b3A6IDUwMDsgICAgIC8qIFN1YnRsZSBlbXBoYXNpcyAqL1xuICAtLWZvbnQtd2VpZ2h0LWhlcml0YWdlLWRlc2t0b3A6IDYwMDsgLyogUmVkIHRleHQgc2VtaWJvbGQgKi9cbiAgXG4gIC8qIExpbmUgSGVpZ2h0cyAtIE1vYmlsZSBPcHRpbWl6ZWQgKi9cbiAgLS1saW5lLWhlaWdodC1ub25lOiAxO1xuICAtLWxpbmUtaGVpZ2h0LXRpZ2h0OiAxLjI7XG4gIC0tbGluZS1oZWlnaHQtc251ZzogMS40O1xuICAtLWxpbmUtaGVpZ2h0LW5vcm1hbDogMS42O1xuICAtLWxpbmUtaGVpZ2h0LXJlbGF4ZWQ6IDEuODtcbiAgLS1saW5lLWhlaWdodC1sb29zZTogMjtcbiAgXG4gIC8qIE1vYmlsZS1TcGVjaWZpYyBMaW5lIEhlaWdodHMgKi9cbiAgLS1saW5lLWhlaWdodC10aWdodC1tb2JpbGU6IDEuMzsgICAvKiBGb3IgaGVhZGluZ3Mgb24gbW9iaWxlICovXG4gIC0tbGluZS1oZWlnaHQtYmFzZS1tb2JpbGU6IDEuNjsgICAgLyogRm9yIGJvZHkgdGV4dCBvbiBtb2JpbGUgKi9cbiAgLS1saW5lLWhlaWdodC1sb29zZS1tb2JpbGU6IDEuODsgICAvKiBGb3Igc21hbGwgdGV4dCBvbiBtb2JpbGUgKi9cbiAgXG4gIC8qIExldHRlciBTcGFjaW5nICovXG4gIC0tbGV0dGVyLXNwYWNpbmctdGlnaHRlcjogLTAuMDVlbTtcbiAgLS1sZXR0ZXItc3BhY2luZy10aWdodDogLTAuMDI1ZW07XG4gIC0tbGV0dGVyLXNwYWNpbmctbm9ybWFsOiAwO1xuICAtLWxldHRlci1zcGFjaW5nLXdpZGU6IDAuMDI1ZW07XG4gIC0tbGV0dGVyLXNwYWNpbmctd2lkZXI6IDAuMDVlbTtcbiAgLS1sZXR0ZXItc3BhY2luZy13aWRlc3Q6IDAuMWVtO1xuICBcbiAgLyogPT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICBTcGFjaW5nIFN5c3RlbSAtIDhweCBHcmlkXG4gICAgID09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbiAgXG4gIC0tc3BhY2UtMDogMDtcbiAgLS1zcGFjZS1weDogMXB4O1xuICAtLXNwYWNlLTAtNTogMC4xMjVyZW07ICAgLyogMnB4ICovXG4gIC0tc3BhY2UtMTogMC4yNXJlbTsgICAgICAvKiA0cHggKi9cbiAgLS1zcGFjZS0xLTU6IDAuMzc1cmVtOyAgIC8qIDZweCAqL1xuICAtLXNwYWNlLTI6IDAuNXJlbTsgICAgICAgLyogOHB4ICovXG4gIC0tc3BhY2UtMi01OiAwLjYyNXJlbTsgICAvKiAxMHB4ICovXG4gIC0tc3BhY2UtMzogMC43NXJlbTsgICAgICAvKiAxMnB4ICovXG4gIC0tc3BhY2UtMy01OiAwLjg3NXJlbTsgICAvKiAxNHB4ICovXG4gIC0tc3BhY2UtNDogMXJlbTsgICAgICAgICAvKiAxNnB4ICovXG4gIC0tc3BhY2UtNTogMS4yNXJlbTsgICAgICAvKiAyMHB4ICovXG4gIC0tc3BhY2UtNjogMS41cmVtOyAgICAgICAvKiAyNHB4ICovXG4gIC0tc3BhY2UtNzogMS43NXJlbTsgICAgICAvKiAyOHB4ICovXG4gIC0tc3BhY2UtODogMnJlbTsgICAgICAgICAvKiAzMnB4ICovXG4gIC0tc3BhY2UtOTogMi4yNXJlbTsgICAgICAvKiAzNnB4ICovXG4gIC0tc3BhY2UtMTA6IDIuNXJlbTsgICAgICAvKiA0MHB4ICovXG4gIC0tc3BhY2UtMTE6IDIuNzVyZW07ICAgICAvKiA0NHB4ICovXG4gIC0tc3BhY2UtMTI6IDNyZW07ICAgICAgICAvKiA0OHB4ICovXG4gIC0tc3BhY2UtMTQ6IDMuNXJlbTsgICAgICAvKiA1NnB4ICovXG4gIC0tc3BhY2UtMTY6IDRyZW07ICAgICAgICAvKiA2NHB4ICovXG4gIC0tc3BhY2UtMjA6IDVyZW07ICAgICAgICAvKiA4MHB4ICovXG4gIC0tc3BhY2UtMjQ6IDZyZW07ICAgICAgICAvKiA5NnB4ICovXG4gIC0tc3BhY2UtMjg6IDdyZW07ICAgICAgICAvKiAxMTJweCAqL1xuICAtLXNwYWNlLTMyOiA4cmVtOyAgICAgICAgLyogMTI4cHggKi9cbiAgLS1zcGFjZS0zNjogOXJlbTsgICAgICAgIC8qIDE0NHB4ICovXG4gIC0tc3BhY2UtNDA6IDEwcmVtOyAgICAgICAvKiAxNjBweCAqL1xuICAtLXNwYWNlLTQ0OiAxMXJlbTsgICAgICAgLyogMTc2cHggKi9cbiAgLS1zcGFjZS00ODogMTJyZW07ICAgICAgIC8qIDE5MnB4ICovXG4gIC0tc3BhY2UtNTI6IDEzcmVtOyAgICAgICAvKiAyMDhweCAqL1xuICAtLXNwYWNlLTU2OiAxNHJlbTsgICAgICAgLyogMjI0cHggKi9cbiAgLS1zcGFjZS02MDogMTVyZW07ICAgICAgIC8qIDI0MHB4ICovXG4gIC0tc3BhY2UtNjQ6IDE2cmVtOyAgICAgICAvKiAyNTZweCAqL1xuICAtLXNwYWNlLTcyOiAxOHJlbTsgICAgICAgLyogMjg4cHggKi9cbiAgLS1zcGFjZS04MDogMjByZW07ICAgICAgIC8qIDMyMHB4ICovXG4gIC0tc3BhY2UtOTY6IDI0cmVtOyAgICAgICAvKiAzODRweCAqL1xuICBcbiAgLyogVmlld3BvcnQtYmFzZWQgc3BhY2luZyAqL1xuICAtLXNwYWNlLXNjcmVlbjogMTAwdmg7XG4gIC0tc2VjdGlvbi1wYWRkaW5nOiBjbGFtcCg1cmVtLCAxMHZ3LCAxMHJlbSk7XG4gIC0tY29udGFpbmVyLXBhZGRpbmc6IGNsYW1wKDJyZW0sIDV2dywgNXJlbSk7XG4gIFxuICAvKiBNb2JpbGUtRmlyc3QgUmVzcG9uc2l2ZSBTcGFjaW5nIFNjYWxlICovXG4gIC0tc3BhY2UtdW5pdDogY2xhbXAoMC4yNXJlbSwgMXZ3LCAwLjVyZW0pOyAvKiBCYXNlIHVuaXQgcmVzcG9uc2l2ZSB0byB2aWV3cG9ydCAqL1xuICBcbiAgLyogTW9iaWxlLUZpcnN0IFNwYWNpbmcgd2l0aCBWaWV3cG9ydCBTY2FsaW5nICovXG4gIC0tc3BhY2UtMS1tb2JpbGU6IGNhbGModmFyKC0tc3BhY2UtdW5pdCkgKiAxKTsgICAvKiA0LThweCAqL1xuICAtLXNwYWNlLTItbW9iaWxlOiBjYWxjKHZhcigtLXNwYWNlLXVuaXQpICogMik7ICAgLyogOC0xNnB4ICovXG4gIC0tc3BhY2UtMy1tb2JpbGU6IGNhbGModmFyKC0tc3BhY2UtdW5pdCkgKiAzKTsgICAvKiAxMi0yNHB4ICovXG4gIC0tc3BhY2UtNC1tb2JpbGU6IGNhbGModmFyKC0tc3BhY2UtdW5pdCkgKiA0KTsgICAvKiAxNi0zMnB4ICovXG4gIC0tc3BhY2UtNi1tb2JpbGU6IGNhbGModmFyKC0tc3BhY2UtdW5pdCkgKiA2KTsgICAvKiAyNC00OHB4ICovXG4gIC0tc3BhY2UtOC1tb2JpbGU6IGNhbGModmFyKC0tc3BhY2UtdW5pdCkgKiA4KTsgICAvKiAzMi02NHB4ICovXG4gIC0tc3BhY2UtMTItbW9iaWxlOiBjYWxjKHZhcigtLXNwYWNlLXVuaXQpICogMTIpOyAvKiA0OC05NnB4ICovXG4gIC0tc3BhY2UtMTYtbW9iaWxlOiBjYWxjKHZhcigtLXNwYWNlLXVuaXQpICogMTYpOyAvKiA2NC0xMjhweCAqL1xuICBcbiAgLyogVG91Y2gtRnJpZW5kbHkgU3BhY2luZyBNaW5pbXVtcyAqL1xuICAtLXNwYWNlLXRvdWNoLW1pbjogbWF4KHZhcigtLXNwYWNlLTIpLCA4cHgpO1xuICAtLXNwYWNlLXNlY3Rpb24tbW9iaWxlOiBtYXgodmFyKC0tc3BhY2UtMTYpLCA2NHB4KTtcbiAgXG4gIC8qID09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgQm9yZGVyIFJhZGl1cyAtIEZsYXQgRGVzaWduXG4gICAgID09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbiAgXG4gIC0tcmFkaXVzLW5vbmU6IDA7XG4gIC0tcmFkaXVzLXNtOiAycHg7XG4gIC0tcmFkaXVzOiA0cHg7XG4gIC0tcmFkaXVzLW1kOiA2cHg7ICAgICAgICAvKiBNYXhpbXVtIGZvciBmbGF0IGRlc2lnbiAqL1xuICAtLXJhZGl1cy1sZzogOHB4OyAgICAgICAgLyogT25seSBmb3Igc3BlY2lhbCBjYXNlcyAqL1xuICAtLXJhZGl1cy14bDogMTJweDsgICAgICAgLyogQXZvaWQgaW4gZmxhdCBkZXNpZ24gKi9cbiAgLS1yYWRpdXMtMnhsOiAxNnB4OyAgICAgIC8qIEF2b2lkIGluIGZsYXQgZGVzaWduICovXG4gIC0tcmFkaXVzLTN4bDogMjRweDsgICAgICAvKiBBdm9pZCBpbiBmbGF0IGRlc2lnbiAqL1xuICAtLXJhZGl1cy1mdWxsOiA5OTk5cHg7ICAgLyogRm9yIHBpbGxzL2NpcmNsZXMgb25seSAqL1xuICBcbiAgLyogPT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICBTaGFkb3dzIC0gTWluaW1hbFxuICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4gIFxuICAtLXNoYWRvdy1zbTogMCAxcHggMnB4IDAgcmdiKDAgMCAwIC8gMC4wMyk7XG4gIC0tc2hhZG93OiAwIDFweCAzcHggMCByZ2IoMCAwIDAgLyAwLjA1KTtcbiAgLS1zaGFkb3ctbWQ6IDAgNHB4IDZweCAtMXB4IHJnYigwIDAgMCAvIDAuMDYpO1xuICAtLXNoYWRvdy1sZzogMCAxMHB4IDE1cHggLTNweCByZ2IoMCAwIDAgLyAwLjA4KTtcbiAgLS1zaGFkb3cteGw6IDAgMjBweCAyNXB4IC01cHggcmdiKDAgMCAwIC8gMC4xKTtcbiAgLS1zaGFkb3ctMnhsOiAwIDI1cHggNTBweCAtMTJweCByZ2IoMCAwIDAgLyAwLjE1KTtcbiAgLS1zaGFkb3ctaW5uZXI6IGluc2V0IDAgMnB4IDRweCAwIHJnYigwIDAgMCAvIDAuMDUpO1xuICAtLXNoYWRvdy1ub25lOiAwIDAgIzAwMDA7XG4gIFxuICAvKiBIZXJpdGFnZSBzaGFkb3cgKi9cbiAgLS1zaGFkb3ctaGVyaXRhZ2U6IDAgMTBweCAzMHB4IC0xMHB4IHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpIC8gMC4yKTtcbiAgXG4gIC8qIENhcmQgZWxldmF0aW9uIHN5c3RlbSAtIG1pbmltYWwgYW5kIGZ1bmN0aW9uYWwgZm9yIGJvcmRlcmxlc3MgZGVzaWduICovXG4gIC0tc2hhZG93LWNhcmQ6IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xuICAtLXNoYWRvdy1jYXJkLWhvdmVyOiAwIDRweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4wOCk7XG4gIC0tc2hhZG93LWNhcmQtYWN0aXZlOiAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjA0KTtcbiAgXG4gIC8qID09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgWi1JbmRleCBNYW5hZ2VtZW50XG4gICAgID09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbiAgXG4gIC0tei1oaWRkZW46IC0xO1xuICAtLXotYmFzZTogMDtcbiAgLS16LXJhaXNlZDogMTtcbiAgLS16LWRyb3Bkb3duOiAxMDtcbiAgLS16LXN0aWNreTogMTAwO1xuICAtLXotZHJhd2VyOiAyMDA7XG4gIC0tei1tb2RhbDogMzAwO1xuICAtLXotcG9wb3ZlcjogNDAwO1xuICAtLXotdG9hc3Q6IDUwMDtcbiAgLS16LWFsZXJ0OiA2MDA7XG4gIC0tei1sb2FkZXI6IDcwMDtcbiAgLS16LWRlYnVnOiA5OTk7XG4gIFxuICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgIEFuaW1hdGlvbiAmIFRyYW5zaXRpb25zIC0gTW9iaWxlLUZpcnN0XG4gICAgID09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbiAgXG4gIC8qIERldmljZS1Bd2FyZSBBbmltYXRpb24gVGltaW5nICovXG4gIC8qIE1vYmlsZTogRmFzdGVyIGFuaW1hdGlvbnMgZm9yIHJlc3BvbnNpdmVuZXNzICovXG4gIC0tZHVyYXRpb24taW5zdGFudDogNTBtczsgICAgLyogVG91Y2ggZmVlZGJhY2sgKi9cbiAgLS1kdXJhdGlvbi1mYXN0OiAxNTBtczsgICAgICAvKiBNaWNyby1pbnRlcmFjdGlvbnMgKi9cbiAgLS1kdXJhdGlvbi1ub3JtYWw6IDI1MG1zOyAgICAvKiBTdGF0ZSBjaGFuZ2VzICovXG4gIC0tZHVyYXRpb24tc2xvdzogNDAwbXM7ICAgICAgLyogQ29udGVudCByZXZlYWxzICovXG4gIC0tZHVyYXRpb24tc2xvd2VyOiA2MDBtczsgICAgLyogTWFqb3IgdHJhbnNpdGlvbnMgKi9cbiAgXG4gIC8qIERlc2t0b3A6IFNsaWdodGx5IHNsb3dlciBmb3IgZWxlZ2FuY2UgKHZpYSBtZWRpYSBxdWVyeSkgKi9cbiAgLS1kdXJhdGlvbi1pbnN0YW50LWRlc2t0b3A6IDEwMG1zO1xuICAtLWR1cmF0aW9uLWZhc3QtZGVza3RvcDogMjAwbXM7XG4gIC0tZHVyYXRpb24tbm9ybWFsLWRlc2t0b3A6IDMwMG1zO1xuICAtLWR1cmF0aW9uLXNsb3ctZGVza3RvcDogNjAwbXM7XG4gIC0tZHVyYXRpb24tc2xvd2VyLWRlc2t0b3A6IDgwMG1zO1xuICBcbiAgLyogVW5pZmllZCB0aW1pbmcgc3lzdGVtIGZvciBQV0EgYW5pbWF0aW9ucyAqL1xuICAtLXRpbWluZy1pbnN0YW50OiB2YXIoLS1kdXJhdGlvbi1pbnN0YW50KTtcbiAgLS10aW1pbmctZmFzdDogdmFyKC0tZHVyYXRpb24tZmFzdCk7XG4gIC0tdGltaW5nLW5vcm1hbDogdmFyKC0tZHVyYXRpb24tbm9ybWFsKTtcbiAgLS10aW1pbmctc2xvdzogdmFyKC0tZHVyYXRpb24tc2xvdyk7XG4gIC0tdGltaW5nLXNtb290aDogdmFyKC0tZHVyYXRpb24tc2xvd2VyKTtcbiAgLS10aW1pbmctZXhwbzogODAwbXM7XG4gIFxuICAvKiBFYXNpbmcgRnVuY3Rpb25zICovXG4gIC0tZWFzaW5nLXN0YW5kYXJkOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICAtLWVhc2luZy1zbW9vdGg6IGN1YmljLWJlemllcigwLjI1LCAwLjQ2LCAwLjQ1LCAwLjk0KTsgLyogTW9yZSBuYXR1cmFsIHNtb290aCBlYXNpbmcgKi9cbiAgLS1lYXNpbmctZXhwbzogY3ViaWMtYmV6aWVyKDAuODcsIDAsIDAuMTMsIDEpO1xuICAtLWVhc2luZy1iYWNrOiBjdWJpYy1iZXppZXIoMC4zNCwgMS41NiwgMC42NCwgMSk7XG4gIC0tZWFzaW5nLWluOiBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtcbiAgLS1lYXNpbmctb3V0OiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcbiAgLS1lYXNpbmctaW4tb3V0OiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICBcbiAgLyogVHJhbnNmb3JtcyAqL1xuICAtLXRyYW5zZm9ybS1saWZ0OiB0cmFuc2xhdGVZKC0ycHgpO1xuICAtLXRyYW5zZm9ybS1kcm9wOiB0cmFuc2xhdGVZKDJweCk7XG4gIC0tdHJhbnNmb3JtLXNjYWxlLXVwOiBzY2FsZSgxLjAyKTtcbiAgLS10cmFuc2Zvcm0tc2NhbGUtZG93bjogc2NhbGUoMC45OCk7XG4gIFxuICAvKiBQV0EgU2Nyb2xsIEFuaW1hdGlvbiBWYXJpYWJsZXMgKi9cbiAgLS1zY3JvbGwtcmV2ZWFsLWRpc3RhbmNlOiAyMHB4O1xuICAtLXNjcm9sbC1yZXZlYWwtZHVyYXRpb246IDYwMG1zO1xuICAtLXNjcm9sbC1zdGFnZ2VyLWRlbGF5OiA3NW1zO1xuICAtLXNjcm9sbC1zdGFnZ2VyLW1heDogMzc1bXM7IC8qIE1heCA1IGl0ZW1zICovXG4gIC0tc2Nyb2xsLXRocmVzaG9sZDogMC4yOyAvKiAyMCUgdmlzaWJsZSAqL1xuICBcbiAgLyogUFdBIEFuaW1hdGlvbiBTeXN0ZW0gLSBCcmFuZCBTdGFuZGFyZHMgQ29tcGxpYW50ICovXG4gIC0tZHVyYXRpb24tc2Nyb2xsOiA2MDBtcztcbiAgLS1kdXJhdGlvbi1zY3JvbGwtc2VjdGlvbjogODAwbXM7XG4gIC0tc3RhZ2dlci1kZWxheTogMTAwbXM7XG4gIC0tcHdhLXN0YWdnZXItZGVsYXk6IDEwMG1zO1xuICAtLXNjcm9sbC1kaXN0YW5jZTogMzBweDtcbiAgLS1zY3JvbGwtZGlzdGFuY2Utc2VjdGlvbjogNTBweDtcbiAgLS1wd2EtZHVyYXRpb24tZmFzdDogdmFyKC0tdGltaW5nLWZhc3QpO1xuICAtLXB3YS1kdXJhdGlvbi1ub3JtYWw6IHZhcigtLXRpbWluZy1ub3JtYWwpO1xuICAtLXB3YS1kdXJhdGlvbi1zbG93OiA2MDBtcztcbiAgLS1wd2EtZWFzaW5nLXNtb290aDogY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpO1xuICAtLXB3YS1lYXNpbmctYm91bmNlOiBjdWJpYy1iZXppZXIoMC42OCwgLTAuNTUsIDAuMjY1LCAxLjU1KTtcbiAgXG4gIC8qID09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgTGF5b3V0ICYgU2l6aW5nXG4gICAgID09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbiAgXG4gIC8qIENvbnRhaW5lciAqL1xuICAtLWNvbnRhaW5lci1tYXgtd2lkdGg6IDE0NDBweDtcbiAgLS1jb250YWluZXItcGFkZGluZzogdmFyKC0tc3BhY2UtNCk7XG4gIFxuICAvKiBCb3JkZXJzICovXG4gIC0tYm9yZGVyLXdpZHRoOiAxcHg7XG4gIC0tYm9yZGVyLXdpZHRoLTI6IDJweDtcbiAgLS1ib3JkZXItd2lkdGgtNDogNHB4O1xuICAtLWJvcmRlci13aWR0aC04OiA4cHg7XG4gIFxuICAvKiBGb2N1cyBSaW5nICovXG4gIC0tZm9jdXMtcmluZy13aWR0aDogMnB4O1xuICAtLWZvY3VzLXJpbmctb2Zmc2V0OiAycHg7XG4gIC0tZm9jdXMtcmluZy1jb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbiAgXG4gIC8qIFRvdWNoIFRhcmdldHMgLSBNb2JpbGUtRmlyc3QgU3RhbmRhcmRzICovXG4gIC0tdG91Y2gtdGFyZ2V0LW1pbjogNDhweDsgICAgICAgICAgICAvKiBXQ0FHIG1pbmltdW0gKi9cbiAgLS10b3VjaC10YXJnZXQtY29tZm9ydGFibGU6IDU2cHg7ICAgIC8qIENvbWZvcnRhYmxlIHNpemUgKi9cbiAgLS10b3VjaC10YXJnZXQtbGFyZ2U6IDY0cHg7ICAgICAgICAgIC8qIExhcmdlIHRvdWNoIHRhcmdldHMgKi9cbiAgLS10b3VjaC1zcGFjaW5nLW1pbjogOHB4OyAgICAgICAgICAgIC8qIE1pbmltdW0gYmV0d2VlbiB0YXJnZXRzICovXG4gIC0tdG91Y2gtc3BhY2luZy1jb21mb3J0YWJsZTogMTZweDsgICAvKiBDb21mb3J0YWJsZSBzcGFjaW5nICovXG4gIFxuICAvKiBNb2JpbGUgVG91Y2ggWm9uZXMgKi9cbiAgLS10aHVtYi1yZWFjaC1lYXN5OiA2MCU7ICAgIC8qIEJvdHRvbSA2MCUgb2Ygc2NyZWVuICovXG4gIC0tdGh1bWItcmVhY2gtaGFyZDogNDAlOyAgICAvKiBUb3AgNDAlIG9mIHNjcmVlbiAqL1xuICAtLXNhZmUtYXJlYS1ib3R0b206IGVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tKTsgLyogaU9TIHNhZmUgYXJlYSAqL1xuICBcbiAgLyogTW9iaWxlLUZpcnN0IEJyZWFrcG9pbnRzIChjb250ZW50LWJhc2VkKSAqL1xuICAtLWJyZWFrcG9pbnQtbW9iaWxlLXBvcnRyYWl0OiAzMjBweDsgICAvKiBNaW5pbXVtIHN1cHBvcnRlZCAqL1xuICAtLWJyZWFrcG9pbnQtbW9iaWxlLWxhbmRzY2FwZTogNTY4cHg7ICAvKiBpUGhvbmUgU0UgbGFuZHNjYXBlICovXG4gIC0tYnJlYWtwb2ludC10YWJsZXQtcG9ydHJhaXQ6IDc2OHB4OyAgIC8qIGlQYWQgcG9ydHJhaXQgKi9cbiAgLS1icmVha3BvaW50LXRhYmxldC1sYW5kc2NhcGU6IDEwMjRweDsgLyogaVBhZCBsYW5kc2NhcGUgKi9cbiAgLS1icmVha3BvaW50LWRlc2t0b3A6IDEyODBweDsgICAgICAgICAgLyogRGVza3RvcCBiYXNlbGluZSAqL1xuICAtLWJyZWFrcG9pbnQtZGVza3RvcC13aWRlOiAxNTM2cHg7ICAgICAvKiBXaWRlIHNjcmVlbnMgKi9cbiAgLS1icmVha3BvaW50LWRlc2t0b3AtdWx0cmE6IDE5MjBweDsgICAgLyogVWx0cmEtd2lkZSBkaXNwbGF5cyAqL1xuICBcbiAgLyogVXRpbGl0eSBCcmVha3BvaW50cyAqL1xuICAtLWJyZWFrcG9pbnQtbmF2LWNvbGxhcHNlOiA4OTZweDsgICAgICAvKiBOYXZpZ2F0aW9uIHBhdHRlcm4gY2hhbmdlICovXG4gIC0tYnJlYWtwb2ludC1ncmlkLXN3aXRjaDogNjQwcHg7ICAgICAgIC8qIFNpbmdsZSB0byBtdWx0aS1jb2x1bW4gKi9cbiAgLS1icmVha3BvaW50LXRhYmxlLXNjcm9sbDogNzY4cHg7ICAgICAgLyogVGFibGUgaG9yaXpvbnRhbCBzY3JvbGwgKi9cbiAgXG4gIC8qIExlZ2FjeSBCcmVha3BvaW50cyAoVGFpbHdpbmQgZGVmYXVsdHMpICovXG4gIC0tYnJlYWtwb2ludC14czogNDc1cHg7XG4gIC0tYnJlYWtwb2ludC1zbTogNjQwcHg7XG4gIC0tYnJlYWtwb2ludC1tZDogNzY4cHg7XG4gIC0tYnJlYWtwb2ludC1sZzogMTAyNHB4O1xuICAtLWJyZWFrcG9pbnQteGw6IDEyODBweDtcbiAgLS1icmVha3BvaW50LTJ4bDogMTUzNnB4O1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgMi41LiBEQVJLIE1PREUgVEhFTUUgVkFSSUFCTEVTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG46cm9vdC5kYXJrIHtcbiAgLyogRGFyayBUaGVtZSBDb2xvciBTeXN0ZW0gKi9cbiAgXG4gIC8qIFByb2Zlc3Npb25hbCBEYXJrIEZvdW5kYXRpb24gKi9cbiAgLS1jb2xvci1iYWNrZ3JvdW5kOiAxMyAxNyAyMzsgICAgICAgICAgLyogcmdiKDEzLCAxNywgMjMpIC0gUmljaCBkYXJrIGJnICovXG4gIC0tY29sb3ItZm9yZWdyb3VuZDogMjQ4IDI1MCAyNTI7ICAgICAgIC8qIHJnYigyNDgsIDI1MCwgMjUyKSAtIExpZ2h0IHRleHQgKi9cbiAgXG4gIC8qIFByaW1hcnkgQ29sb3JzIC0gQWRqdXN0ZWQgZm9yIGRhcmsgdGhlbWUgKi9cbiAgLS1jb2xvci1wcmltYXJ5OiAxMDAgMTE2IDEzOTsgICAgICAgICAgLyogcmdiKDEwMCwgMTE2LCAxMzkpIC0gTGlnaHRlciBzbGF0ZSAqL1xuICAtLWNvbG9yLXByaW1hcnktZm9yZWdyb3VuZDogMjQ4IDI1MCAyNTI7IC8qIFdoaXRlIHRleHQgb24gcHJpbWFyeSAqL1xuICAtLWNvbG9yLXByaW1hcnktNTA6IDE1IDIzIDQyOyAgICAgICAgICAvKiBJbnZlcnRlZCBzY2FsZSBmb3IgZGFyayAqL1xuICAtLWNvbG9yLXByaW1hcnktMTAwOiAzMCA0MSA1OTtcbiAgLS1jb2xvci1wcmltYXJ5LTIwMDogNTEgNjUgODU7XG4gIC0tY29sb3ItcHJpbWFyeS0zMDA6IDcxIDg1IDEwNTtcbiAgLS1jb2xvci1wcmltYXJ5LTQwMDogMTAwIDExNiAxMzk7XG4gIC0tY29sb3ItcHJpbWFyeS01MDA6IDE0OCAxNjMgMTg0O1xuICAtLWNvbG9yLXByaW1hcnktNjAwOiAyMDMgMjEzIDIyNTtcbiAgLS1jb2xvci1wcmltYXJ5LTcwMDogMjI2IDIzMiAyNDA7XG4gIC0tY29sb3ItcHJpbWFyeS04MDA6IDI0MSAyNDUgMjQ5O1xuICAtLWNvbG9yLXByaW1hcnktOTAwOiAyNDggMjUwIDI1MjtcbiAgLS1jb2xvci1wcmltYXJ5LTk1MDogMjU1IDI1NSAyNTU7XG4gIFxuICAvKiBIZXJpdGFnZSBBY2NlbnQgLSBXYXJtZXIgaW4gZGFyayBtb2RlICovXG4gIC0tY29sb3ItYWNjZW50LWhlcml0YWdlOiAyMzkgNjggNjg7ICAgICAvKiByZ2IoMjM5LCA2OCwgNjgpIC0gQnJpZ2h0ZXIgcmVkICovXG4gIC0tY29sb3ItYWNjZW50LWhlcml0YWdlLWZvcmVncm91bmQ6IDI1NSAyNTUgMjU1O1xuICAtLWNvbG9yLWFjY2VudC1oZXJpdGFnZS01MDogMTI3IDI5IDI5OyAgLyogSW52ZXJ0ZWQgc2NhbGUgKi9cbiAgLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UtMTAwOiAxNTMgMjcgMjc7XG4gIC0tY29sb3ItYWNjZW50LWhlcml0YWdlLTIwMDogMTg1IDI4IDI4O1xuICAtLWNvbG9yLWFjY2VudC1oZXJpdGFnZS0zMDA6IDIyMCAzOCAzODtcbiAgLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UtNDAwOiAyNDggMTEzIDExMztcbiAgLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UtNTAwOiAyNTIgMTY1IDE2NTtcbiAgLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UtNjAwOiAyNTQgMjAyIDIwMjtcbiAgLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UtNzAwOiAyNTQgMjI2IDIyNjtcbiAgLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UtODAwOiAyNTQgMjQyIDI0MjtcbiAgLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UtOTAwOiAyNTUgMjQ1IDI0NTtcbiAgXG4gIC8qIFNlY29uZGFyeSBOYXZ5IC0gQnJpZ2h0ZXIgaW4gZGFyayAqL1xuICAtLWNvbG9yLXNlY29uZGFyeTogNTkgMTMwIDI0NjsgICAgICAgICAgLyogcmdiKDU5LCAxMzAsIDI0NikgLSBCcmlnaHRlciBibHVlICovXG4gIC0tY29sb3Itc2Vjb25kYXJ5LWZvcmVncm91bmQ6IDI1NSAyNTUgMjU1O1xuICAtLWNvbG9yLXNlY29uZGFyeS01MDogMzAgNTggMTM4OyAgICAgICAgLyogSW52ZXJ0ZWQgc2NhbGUgKi9cbiAgLS1jb2xvci1zZWNvbmRhcnktMTAwOiAyOSA3OCAyMTY7XG4gIC0tY29sb3Itc2Vjb25kYXJ5LTIwMDogMzcgOTkgMjM1O1xuICAtLWNvbG9yLXNlY29uZGFyeS0zMDA6IDU5IDEzMCAyNDY7XG4gIC0tY29sb3Itc2Vjb25kYXJ5LTQwMDogOTYgMTY1IDI1MDtcbiAgLS1jb2xvci1zZWNvbmRhcnktNTAwOiAxNDcgMTk3IDI1MztcbiAgLS1jb2xvci1zZWNvbmRhcnktNjAwOiAxOTEgMjE5IDI1NDtcbiAgLS1jb2xvci1zZWNvbmRhcnktNzAwOiAyMTkgMjM0IDI1NDtcbiAgLS1jb2xvci1zZWNvbmRhcnktODAwOiAyMzkgMjQ2IDI1NTtcbiAgLS1jb2xvci1zZWNvbmRhcnktOTAwOiAyMzkgMjQ2IDI1NTtcbiAgXG4gIC8qIFNlbWFudGljIENvbG9ycyAtIERhcmsgdGhlbWUgdmFyaWFudHMgKi9cbiAgLS1jb2xvci1zdWNjZXNzOiAxNiAxODUgMTI5OyAgICAgICAgICAgIC8qIHJnYigxNiwgMTg1LCAxMjkpIC0gRW1lcmFsZCAqL1xuICAtLWNvbG9yLXN1Y2Nlc3MtZm9yZWdyb3VuZDogMjU1IDI1NSAyNTU7XG4gIC0tY29sb3Itd2FybmluZzogMjQ1IDE1OCAxMTsgICAgICAgICAgICAvKiByZ2IoMjQ1LCAxNTgsIDExKSAtIEFtYmVyICovXG4gIC0tY29sb3Itd2FybmluZy1mb3JlZ3JvdW5kOiAwIDAgMDtcbiAgLS1jb2xvci1lcnJvcjogMjM5IDY4IDY4OyAgICAgICAgICAgICAgIC8qIHJnYigyMzksIDY4LCA2OCkgLSBSZWQgKi9cbiAgLS1jb2xvci1lcnJvci1mb3JlZ3JvdW5kOiAyNTUgMjU1IDI1NTtcbiAgLS1jb2xvci1pbmZvOiA1OSAxMzAgMjQ2OyAgICAgICAgICAgICAgIC8qIHJnYig1OSwgMTMwLCAyNDYpIC0gQmx1ZSAqL1xuICAtLWNvbG9yLWluZm8tZm9yZWdyb3VuZDogMjU1IDI1NSAyNTU7XG4gIFxuICAvKiBOZXV0cmFsIFVJIENvbG9ycyAtIERhcmsgdmFyaWFudHMgKi9cbiAgLS1jb2xvci1tdXRlZDogMzAgNDEgNTk7ICAgICAgICAgICAgICAgIC8qIHJnYigzMCwgNDEsIDU5KSAtIERhcmsgbXV0ZWQgYmcgKi9cbiAgLS1jb2xvci1tdXRlZC1mb3JlZ3JvdW5kOiAxNDggMTYzIDE4NDsgIC8qIHJnYigxNDgsIDE2MywgMTg0KSAtIExpZ2h0IG11dGVkIHRleHQgKi9cbiAgLS1jb2xvci1ib3JkZXI6IDUxIDY1IDg1OyAgICAgICAgICAgICAgIC8qIHJnYig1MSwgNjUsIDg1KSAtIERhcmsgYm9yZGVycyAqL1xuICAtLWNvbG9yLXJpbmc6IDEwMCAxMTYgMTM5OyAgICAgICAgICAgICAgLyogcmdiKDEwMCwgMTE2LCAxMzkpIC0gRm9jdXMgcmluZyAqL1xuICBcbiAgLyogU3VyZmFjZSBDb2xvcnMgLSBEYXJrIHRoZW1lICovXG4gIC0tc3VyZmFjZS1kZWZhdWx0OiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKTtcbiAgLS1zdXJmYWNlLW11dGVkOiB2YXIoLS1jb2xvci1tdXRlZCk7XG4gIC0tc3VyZmFjZS1kYXJrOiAxMyAxNyAyMzsgICAgICAgICAgICAgICAvKiByZ2IoMTMsIDE3LCAyMykgLSBNYXRjaGVzIGhlcm8gYmFja2dyb3VuZCAqL1xuICAtLXN1cmZhY2UtYnJhbmQ6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICAtLXN1cmZhY2UtYWNjZW50OiB2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpO1xuICAtLXN1cmZhY2UtZ3JhZGllbnQtc3VidGxlOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBcbiAgICByZ2IodmFyKC0tY29sb3ItYmFja2dyb3VuZCkpIDAlLCBcbiAgICByZ2IodmFyKC0tY29sb3ItbXV0ZWQpKSAxMDAlKTtcbiAgLS1zdXJmYWNlLWdyYWRpZW50LXJhZGlhbDogcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCBcbiAgICByZ2IodmFyKC0tY29sb3ItbXV0ZWQpKSAwJSwgXG4gICAgcmdiKHZhcigtLWNvbG9yLWJhY2tncm91bmQpKSAxMDAlKTtcbiAgLS1zdXJmYWNlLWdyYWRpZW50LWhlcm86IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgIHJnYih2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSkgMCUsIFxuICAgIHJnYih2YXIoLS1jb2xvci1tdXRlZCkpIDUwJSwgXG4gICAgcmdiKHZhcigtLWNvbG9yLWJhY2tncm91bmQpKSAxMDAlKTtcbiAgXG4gIC8qIERhcmsgdGhlbWUgc2hhZG93IGFkanVzdG1lbnRzICovXG4gIC0tc2hhZG93LXNtOiAwIDFweCAycHggMCByZ2IoMCAwIDAgLyAwLjE1KTtcbiAgLS1zaGFkb3c6IDAgMXB4IDNweCAwIHJnYigwIDAgMCAvIDAuMjUpO1xuICAtLXNoYWRvdy1tZDogMCA0cHggNnB4IC0xcHggcmdiKDAgMCAwIC8gMC4zKTtcbiAgLS1zaGFkb3ctbGc6IDAgMTBweCAxNXB4IC0zcHggcmdiKDAgMCAwIC8gMC40KTtcbiAgLS1zaGFkb3cteGw6IDAgMjBweCAyNXB4IC01cHggcmdiKDAgMCAwIC8gMC41KTtcbiAgLS1zaGFkb3ctMnhsOiAwIDI1cHggNTBweCAtMTJweCByZ2IoMCAwIDAgLyAwLjYpO1xuICAtLXNoYWRvdy1oZXJpdGFnZTogMCAxMHB4IDMwcHggLTEwcHggcmdiKDIzOSA2OCA2OCAvIDAuMyk7XG4gIFxuICAvKiBDYXJkIHNoYWRvd3MgZm9yIGRhcmsgdGhlbWUgKi9cbiAgLS1zaGFkb3ctY2FyZDogMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNSk7XG4gIC0tc2hhZG93LWNhcmQtaG92ZXI6IDAgNHB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjI1KTtcbiAgLS1zaGFkb3ctY2FyZC1hY3RpdmU6IDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIFxuICAvKiBJY29uIGNvbG9ycyBmb3IgZGFyayB0aGVtZSAqL1xuICAtLWljb24tZGVmYXVsdDogdmFyKC0tY29sb3ItZm9yZWdyb3VuZCk7XG4gIC0taWNvbi1wcmltYXJ5OiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgLS1pY29uLWhlcml0YWdlOiB2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpO1xuICAtLWljb24tc3VjY2VzczogdmFyKC0tY29sb3Itc3VjY2Vzcyk7XG4gIC0taWNvbi13YXJuaW5nOiB2YXIoLS1jb2xvci13YXJuaW5nKTtcbiAgLS1pY29uLXdoaXRlOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDMuIEJBU0UgU1RZTEVTICYgUkVTRVRTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBCb3ggc2l6aW5nICovXG4qLFxuKjo6YmVmb3JlLFxuKjo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG4vKiBSZW1vdmUgZGVmYXVsdCBtYXJnaW5zICovXG4qIHtcbiAgbWFyZ2luOiAwO1xufVxuXG4vKiBIVE1MICYgQm9keSAqL1xuaHRtbCB7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlO1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG5ib2R5IHtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtZmFtaWx5LXNhbnMpO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1iYXNlKTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LW5vcm1hbCk7XG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC1ub3JtYWwpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWZvcmVncm91bmQpKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLWJhY2tncm91bmQpKTtcbiAgbWluLWhlaWdodDogMTAwJTtcbn1cblxuLyogSW5oZXJpdCBmb250cyBmb3IgZm9ybSBjb250cm9scyAqL1xuaW5wdXQsXG5idXR0b24sXG50ZXh0YXJlYSxcbnNlbGVjdCB7XG4gIGZvbnQ6IGluaGVyaXQ7XG59XG5cbi8qIE1ha2UgaW1hZ2VzIGVhc2llciB0byB3b3JrIHdpdGggKi9cbmltZyxcbnBpY3R1cmUsXG52aWRlbyxcbmNhbnZhcyxcbnN2ZyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogYXV0bztcbn1cblxuLyogUmVtb3ZlIGJ1aWx0LWluIGZvcm0gdHlwb2dyYXBoeSBzdHlsZXMgKi9cbmlucHV0LFxuYnV0dG9uLFxudGV4dGFyZWEsXG5zZWxlY3Qge1xuICBmb250OiBpbmhlcml0O1xufVxuXG4vKiBBdm9pZCB0ZXh0IG92ZXJmbG93cyAqL1xucCxcbmgxLFxuaDIsXG5oMyxcbmg0LFxuaDUsXG5oNiB7XG4gIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG4gIGh5cGhlbnM6IGF1dG87XG59XG5cbi8qIENyZWF0ZSBhIHJvb3Qgc3RhY2tpbmcgY29udGV4dCAqL1xuI3Jvb3QsXG4jX19uZXh0IHtcbiAgaXNvbGF0aW9uOiBpc29sYXRlO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgNC4gU0VNQU5USUMgVFlQT0dSQVBIWSBDTEFTU0VTIChSRVFVSVJFRClcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIEhlcm8vRGlzcGxheSBUeXBvZ3JhcGh5ICovXG4udGl0bGUtaGVybyB7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWZhbWlseS1kaXNwbGF5KTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWV4dHJhbGlnaHQpO1xuICBmb250LXNpemU6IHZhcigtLXRleHQtaGVybyk7XG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC1ub25lKTtcbiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLWxldHRlci1zcGFjaW5nLXRpZ2h0ZXIpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWZvcmVncm91bmQpKTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtOCk7XG59XG5cbi50aXRsZS1kaXNwbGF5IHtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtZmFtaWx5LWRpc3BsYXkpO1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbGlnaHQpO1xuICBmb250LXNpemU6IHZhcigtLXRleHQtZGlzcGxheSk7XG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC10aWdodCk7XG4gIGxldHRlci1zcGFjaW5nOiB2YXIoLS1sZXR0ZXItc3BhY2luZy10aWdodCk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkpO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS02KTtcbn1cblxuLyogU2VjdGlvbi1sZXZlbCBoZWFkaW5ncyAqL1xuLnRpdGxlLXNlY3Rpb24ge1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1mYW1pbHktZGlzcGxheSk7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ib2xkKTtcbiAgZm9udC1zaXplOiBjbGFtcCgycmVtLCA1dncsIDMuNXJlbSk7XG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC10aWdodCk7XG4gIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWZvcmVncm91bmQpKTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi8qIENvbXBvbmVudC9jYXJkIGhlYWRpbmdzICovXG4udGl0bGUtY2FyZCB7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWZhbWlseS1kaXNwbGF5KTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteGwpO1xuICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQtc251Zyk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkpO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0zKTtcbn1cblxuLyogU3VidGl0bGVzIGFuZCBzZWNvbmRhcnkgaGVhZGluZ3MgKi9cbi5zdWJ0aXRsZS1sZyB7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWZhbWlseS1zYW5zKTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSk7XG4gIGZvbnQtc2l6ZTogY2xhbXAoMS4yNXJlbSwgM3Z3LCAycmVtKTtcbiAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXNudWcpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLW11dGVkLWZvcmVncm91bmQpKTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi5zdWJ0aXRsZSB7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWZhbWlseS1zYW5zKTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWxnKTtcbiAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXNudWcpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLW11dGVkLWZvcmVncm91bmQpKTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMyk7XG59XG5cbi8qIE1haW4gZGVzY3JpcHRpdmUgdGV4dCAqL1xuLmRlc2NyaXB0aW9uLWxnIHtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtZmFtaWx5LXNhbnMpO1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbm9ybWFsKTtcbiAgZm9udC1zaXplOiBjbGFtcCgxLjEyNXJlbSwgMnZ3LCAxLjVyZW0pO1xuICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQtbm9ybWFsKTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1tdXRlZC1mb3JlZ3JvdW5kKSk7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTQpO1xufVxuXG4vKiBTdGFuZGFyZCBib2R5IHRleHQgKi9cbi5kZXNjcmlwdGlvbiB7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWZhbWlseS1zYW5zKTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LW5vcm1hbCk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJhc2UpO1xuICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQtbm9ybWFsKTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1tdXRlZC1mb3JlZ3JvdW5kKSk7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTQpO1xufVxuXG5cbi8qIExhYmVsIHRleHQgZm9yIGZvcm1zIGFuZCBkYXRhICovXG4ubGFiZWwtdGV4dCB7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWZhbWlseS1zYW5zKTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJhc2UpO1xuICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQtc251Zyk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkpO1xuICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcbn1cblxuLyogU21hbGwgdGV4dCAqL1xuLnRleHQtc20ge1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC1zbnVnKTtcbn1cblxuLyogSGVyaXRhZ2UgcmVkIHRleHQgLSBTdHJhdGVnaWMgdXNhZ2Ugd2l0aCBwcm9wZXIgc2l6aW5nICovXG4udGV4dC1oZXJpdGFnZSB7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSk7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7IC8qIE1pbmltdW0gNjAwIHdlaWdodCByZXF1aXJlZCAqL1xuICBmb250LXNpemU6IG1heCgxcmVtLCB2YXIoLS1mb250LXNpemUtYmFzZSkpOyAvKiBNaW5pbXVtIDE2cHggZm9yIHJlZCB0ZXh0ICovXG59XG5cbi8qIENvZGUvdGVjaG5pY2FsIHRleHQgKi9cbi50ZXh0LW1vbm8ge1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1mYW1pbHktbW9ubyk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LW5vcm1hbCk7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICA1LiBCVVRUT04gU1lTVEVNIC0gU3RyYXRlZ2ljIFJlZCBIaWVyYXJjaHlcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIElNUE9SVEFOVDogQnV0dG9uIFN5c3RlbSBJbXBsZW1lbnRhdGlvbiBOb3Rlc1xuICogLSBBbGwgYnV0dG9uIGNsYXNzZXMgYXJlIGltcGxlbWVudGVkIGhlcmU6IC5idG4gKGJhc2UpLCAuYnRuLWhlcml0YWdlLCAuYnRuLXByaW1hcnksIC5idG4tc2Vjb25kYXJ5LCAuYnRuLW91dGxpbmUsIC5idG4tZ2hvc3RcbiAqIC0gQnV0dG9uIHNpemVzOiAuYnRuLXNtLCAuYnRuLWxnLCAuYnRuLXhsIChubyAuYnRuLW1kIC0gdGhlIGJhc2UgLmJ0biBpcyBtZWRpdW0pXG4gKiAtIENvbXBvbmVudCBDU1MgZmlsZXMgc2hvdWxkIE5PVCByZWRlZmluZSB0aGVzZSBjbGFzc2VzXG4gKiAtIFVzZSB0aGVzZSBjbGFzc2VzIGRpcmVjdGx5IGluIGNvbXBvbmVudHNcbiAqL1xuXG4vKiBCYXNlIGJ1dHRvbiBzdHlsZXMgKi9cbi5idG4ge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpIHZhcigtLXNwYWNlLTQpO1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtYmFzZSk7XG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC1zbnVnKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgYm9yZGVyOiB2YXIoLS1ib3JkZXItd2lkdGgpIHNvbGlkIHRyYW5zcGFyZW50O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzaW5nLXN0YW5kYXJkKTtcbiAgbWluLWhlaWdodDogdmFyKC0tdG91Y2gtdGFyZ2V0LW1pbik7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLyogSGVyaXRhZ2UgQnV0dG9uIC0gTWF4aW11bSAxLTIgcGVyIHZpZXdwb3J0ICovXG4uYnRuLWhlcml0YWdlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZS1mb3JlZ3JvdW5kKSk7XG4gIGJvcmRlci1jb2xvcjogcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpO1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xuICAvKiBFeHRyYSB3aGl0ZXNwYWNlIGZvciByZWQgZWxlbWVudHMgKDI1LTM1JSBtb3JlKSAqL1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0zKSB2YXIoLS1idG4taGVyaXRhZ2UtcGFkZGluZy14KTtcbiAgLyogTWFyZ2lucyByZW1vdmVkIC0gc3BhY2luZyBoYW5kbGVkIGJ5IC5jdGEtYnV0dG9uLWhlcml0YWdlIHdyYXBwZXIgKi9cbiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWhlcml0YWdlKTtcbiAgLyogU3VidGxlIHB1bHNlIGFuaW1hdGlvbiBhZnRlciBkZWxheSAqL1xuICBhbmltYXRpb246IGhlcml0YWdlLXB1bHNlIDNzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICBhbmltYXRpb24tZGVsYXk6IDJzO1xufVxuXG4uYnRuLWhlcml0YWdlOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZS02MDApKTtcbiAgYm9yZGVyLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlLTYwMCkpO1xuICB0cmFuc2Zvcm06IHZhcigtLXRyYW5zZm9ybS1saWZ0KTtcbiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWhlcml0YWdlKSwgdmFyKC0tc2hhZG93LWxnKTtcbn1cblxuLmJ0bi1oZXJpdGFnZTpmb2N1cy12aXNpYmxlIHtcbiAgb3V0bGluZTogdmFyKC0tZm9jdXMtcmluZy13aWR0aCkgc29saWQgcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpO1xuICBvdXRsaW5lLW9mZnNldDogdmFyKC0tZm9jdXMtcmluZy1vZmZzZXQpO1xufVxuXG4uYnRuLWhlcml0YWdlOmFjdGl2ZSB7XG4gIHRyYW5zZm9ybTogdmFyKC0tdHJhbnNmb3JtLXNjYWxlLWRvd24pO1xufVxuXG4vKiBQcmltYXJ5IEJ1dHRvbiAtIFByb2Zlc3Npb25hbCBTbGF0ZSBHcmF5ICovXG4uYnRuLXByaW1hcnkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnktZm9yZWdyb3VuZCkpO1xuICBib3JkZXItY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG59XG5cbi5idG4tcHJpbWFyeTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5LTcwMCkpO1xuICBib3JkZXItY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5LTcwMCkpO1xuICB0cmFuc2Zvcm06IHZhcigtLXRyYW5zZm9ybS1saWZ0KTtcbn1cblxuLmJ0bi1wcmltYXJ5OmZvY3VzLXZpc2libGUge1xuICBvdXRsaW5lOiB2YXIoLS1mb2N1cy1yaW5nLXdpZHRoKSBzb2xpZCByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xuICBvdXRsaW5lLW9mZnNldDogdmFyKC0tZm9jdXMtcmluZy1vZmZzZXQpO1xufVxuXG4uYnRuLXByaW1hcnk6YWN0aXZlIHtcbiAgdHJhbnNmb3JtOiB2YXIoLS10cmFuc2Zvcm0tc2NhbGUtZG93bik7XG59XG5cbi8qIFNlY29uZGFyeSBCdXR0b24gLSBOYXZ5IEJsdWUgKi9cbi5idG4tc2Vjb25kYXJ5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLXNlY29uZGFyeSkpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXNlY29uZGFyeS1mb3JlZ3JvdW5kKSk7XG4gIGJvcmRlci1jb2xvcjogcmdiKHZhcigtLWNvbG9yLXNlY29uZGFyeSkpO1xufVxuXG4uYnRuLXNlY29uZGFyeTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1jb2xvci1zZWNvbmRhcnktODAwKSk7XG4gIGJvcmRlci1jb2xvcjogcmdiKHZhcigtLWNvbG9yLXNlY29uZGFyeS04MDApKTtcbiAgdHJhbnNmb3JtOiB2YXIoLS10cmFuc2Zvcm0tbGlmdCk7XG59XG5cbi5idG4tc2Vjb25kYXJ5OmZvY3VzLXZpc2libGUge1xuICBvdXRsaW5lOiB2YXIoLS1mb2N1cy1yaW5nLXdpZHRoKSBzb2xpZCByZ2IodmFyKC0tY29sb3Itc2Vjb25kYXJ5KSk7XG4gIG91dGxpbmUtb2Zmc2V0OiB2YXIoLS1mb2N1cy1yaW5nLW9mZnNldCk7XG59XG5cbi5idG4tc2Vjb25kYXJ5OmFjdGl2ZSB7XG4gIHRyYW5zZm9ybTogdmFyKC0tdHJhbnNmb3JtLXNjYWxlLWRvd24pO1xufVxuXG4vKiBPdXRsaW5lIEJ1dHRvbiAqL1xuLmJ0bi1vdXRsaW5lIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xuICBib3JkZXItY29sb3I6IHJnYih2YXIoLS1jb2xvci1ib3JkZXIpKTtcbn1cblxuLmJ0bi1vdXRsaW5lOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5LWZvcmVncm91bmQpKTtcbiAgYm9yZGVyLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xufVxuXG4vKiBHaG9zdCBCdXR0b24gKi9cbi5idG4tZ2hvc3Qge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi5idG4tZ2hvc3Q6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkgLyAwLjEpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbn1cblxuLyogQnV0dG9uIFNpemVzICovXG4uYnRuLXNtIHtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMS01KSB2YXIoLS1zcGFjZS0zKTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICBtaW4taGVpZ2h0OiB2YXIoLS1zcGFjZS04KTtcbn1cblxuLmJ0bi1sZyB7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTMpIHZhcigtLXNwYWNlLTYpO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1sZyk7XG4gIG1pbi1oZWlnaHQ6IHZhcigtLXNwYWNlLTE0KTtcbn1cblxuLmJ0bi14bCB7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTQpIHZhcigtLXNwYWNlLTgpO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS14bCk7XG4gIG1pbi1oZWlnaHQ6IHZhcigtLXNwYWNlLTE2KTtcbn1cblxuXG4vKiBCdXR0b24gU3RhdGVzICovXG4uYnRuOmRpc2FibGVkIHtcbiAgb3BhY2l0eTogMC41O1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICB0cmFuc2Zvcm06IG5vbmU7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDYuIExBWU9VVCBVVElMSVRJRVNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIElNUE9SVEFOVDogTGF5b3V0IFN5c3RlbSBDaGFuZ2UgTm90ZXNcbiAqIC0gc2VjdGlvbi0qIGNsYXNzZXMgaGF2ZSBiZWVuIHJlcGxhY2VkIHdpdGggbGF5b3V0LSogY2xhc3Nlc1xuICogLSBVc2UgbGF5b3V0LWNvbnRhaW5lciBpbnN0ZWFkIG9mIHNlY3Rpb24tY29udGFpbmVyXG4gKiAtIFVzZSBsYXlvdXQtc2VjdGlvbiwgbGF5b3V0LXNlY3Rpb24tc20sIGxheW91dC1zZWN0aW9uLWxnLCBsYXlvdXQtc2VjdGlvbi14bCBmb3Igc2VjdGlvbiBzcGFjaW5nXG4gKiAtIENvbXBvbmVudCBDU1MgZmlsZXMgc2hvdWxkIHJlZmVyZW5jZSBsYXlvdXQtKiBjbGFzc2VzLCBub3Qgc2VjdGlvbi0qXG4gKi9cblxuLyogU2VjdGlvbiBzcGFjaW5nIC0gQlJBTkQgR1VJREUgRVhBQ1QgVkFMVUVTICovXG4vKiBNb2JpbGUtZmlyc3QgYXBwcm9hY2ggd2l0aCBleGFjdCByZXNwb25zaXZlIHZhbHVlcyAqL1xuXG4vKiBEZWZhdWx0IG1vYmlsZSB2YWx1ZXMgKDwgNzY4cHgpIC0gNDAlIHJlZHVjdGlvbiBmcm9tIGRlc2t0b3AgKi9cbi5sYXlvdXQtc2VjdGlvbi1zbSB7XG4gIHBhZGRpbmc6IDIuNXJlbSAwOyAgLyogNDBweCAqL1xufVxuXG4ubGF5b3V0LXNlY3Rpb24ge1xuICBwYWRkaW5nOiAzLjc1cmVtIDA7IC8qIDYwcHggLSBERUZBVUxUICovXG59XG5cbi5sYXlvdXQtc2VjdGlvbi1sZyB7XG4gIHBhZGRpbmc6IDVyZW0gMDsgICAgLyogODBweCAqL1xufVxuXG4ubGF5b3V0LXNlY3Rpb24teGwge1xuICBwYWRkaW5nOiA2cmVtIDA7ICAgIC8qIDk2cHggKi9cbn1cblxuLyogVGFibGV0IHZhbHVlcyAoNzY4cHggLSAxMjc5cHgpIC0gMjAlIHJlZHVjdGlvbiBmcm9tIGRlc2t0b3AgKi9cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDEyNzlweCkge1xuICAubGF5b3V0LXNlY3Rpb24tc20ge1xuICAgIHBhZGRpbmc6IDMuMnJlbSAwOyAgLyogNTFweCAqL1xuICB9XG4gIFxuICAubGF5b3V0LXNlY3Rpb24ge1xuICAgIHBhZGRpbmc6IDQuOHJlbSAwOyAgLyogNzdweCAqL1xuICB9XG4gIFxuICAubGF5b3V0LXNlY3Rpb24tbGcge1xuICAgIHBhZGRpbmc6IDYuNHJlbSAwOyAgLyogMTAycHggKi9cbiAgfVxuICBcbiAgLmxheW91dC1zZWN0aW9uLXhsIHtcbiAgICBwYWRkaW5nOiA4cmVtIDA7ICAgIC8qIDEyOHB4ICovXG4gIH1cbn1cblxuLyogRGVza3RvcCB2YWx1ZXMgKDEyODBweCspIC0gRnVsbCBzcGFjaW5nICovXG5AbWVkaWEgKG1pbi13aWR0aDogMTI4MHB4KSB7XG4gIC5sYXlvdXQtc2VjdGlvbi1zbSB7XG4gICAgcGFkZGluZzogNHJlbSAwOyAgICAvKiA2NHB4ICovXG4gIH1cbiAgXG4gIC5sYXlvdXQtc2VjdGlvbiB7XG4gICAgcGFkZGluZzogNnJlbSAwOyAgICAvKiA5NnB4ICovXG4gIH1cbiAgXG4gIC5sYXlvdXQtc2VjdGlvbi1sZyB7XG4gICAgcGFkZGluZzogOHJlbSAwOyAgICAvKiAxMjhweCAqL1xuICB9XG4gIFxuICAubGF5b3V0LXNlY3Rpb24teGwge1xuICAgIHBhZGRpbmc6IDEwcmVtIDA7ICAgLyogMTYwcHggKi9cbiAgfVxufVxuXG4vKiBIZXJvIHNlY3Rpb25zIHdpdGggbW9iaWxlLWZpcnN0IHJlc3BvbnNpdmUgc3BhY2luZyAqL1xuLmxheW91dC1oZXJvIHtcbiAgLyogTW9iaWxlIGZpcnN0OiAzMCUgY29udGVudCwgNzAlIHNwYWNlICovXG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTEyKSB2YXIoLS1zcGFjZS00KTsgLyogNDhweCAxNnB4ICovXG4gIG1pbi1oZWlnaHQ6IDEwMHZoOyAvKiBGdWxsIHZpZXdwb3J0IG9uIG1vYmlsZSAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmxheW91dC1oZXJvIHtcbiAgICAvKiBUYWJsZXQ6IDI1JSBjb250ZW50LCA3NSUgc3BhY2UgKi9cbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0xNikgdmFyKC0tc3BhY2UtNik7IC8qIDY0cHggMjRweCAqL1xuICAgIG1pbi1oZWlnaHQ6IDg1dmg7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDEyODBweCkge1xuICAubGF5b3V0LWhlcm8ge1xuICAgIC8qIERlc2t0b3A6IDIwJSBjb250ZW50LCA4MCUgc3BhY2UgKi9cbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0zMikgdmFyKC0tc3BhY2UtOCk7IC8qIDEyOHB4IDMycHggKi9cbiAgICBtaW4taGVpZ2h0OiA5MHZoO1xuICB9XG59XG5cbi8qIENvbnRhaW5lciAqL1xuLmxheW91dC1jb250YWluZXIge1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiB2YXIoLS1jb250YWluZXItbWF4LXdpZHRoKTtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHBhZGRpbmc6IDAgdmFyKC0tc3BhY2UtNCk7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xuICAubGF5b3V0LWNvbnRhaW5lciB7XG4gICAgcGFkZGluZzogMCB2YXIoLS1zcGFjZS02KTtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5sYXlvdXQtY29udGFpbmVyIHtcbiAgICBwYWRkaW5nOiAwIHZhcigtLXNwYWNlLTgpO1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMjgwcHgpIHtcbiAgLmxheW91dC1jb250YWluZXIge1xuICAgIHBhZGRpbmc6IDAgdmFyKC0tc3BhY2UtMTIpO1xuICB9XG59XG5cbi8qIENvbnRlbnQgYWxpZ25tZW50ICovXG4ubGF5b3V0LWNlbnRlciB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbn1cblxuLmxheW91dC1sZWZ0IHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbn1cblxuLmxheW91dC1yaWdodCB7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuXG4vKiBMYXlvdXQgZ2FwcyAqL1xuLmxheW91dC1nYXAteHMge1xuICBnYXA6IHZhcigtLXNwYWNlLTIpO1xufVxuXG4ubGF5b3V0LWdhcC1zbSB7XG4gIGdhcDogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi5sYXlvdXQtZ2FwLW1kIHtcbiAgZ2FwOiB2YXIoLS1zcGFjZS04KTtcbn1cblxuLmxheW91dC1nYXAtbGcge1xuICBnYXA6IHZhcigtLXNwYWNlLTE2KTtcbn1cblxuLmxheW91dC1nYXAteGwge1xuICBnYXA6IHZhcigtLXNwYWNlLTI0KTtcbn1cblxuLyogU3RhY2sgbGF5b3V0cyAqL1xuLmxheW91dC1zdGFjayB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5cbi5sYXlvdXQtc3RhY2stc20ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IHZhcigtLXNwYWNlLTIpO1xufVxuXG4ubGF5b3V0LXN0YWNrLW1kIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS00KTtcbn1cblxuLmxheW91dC1zdGFjay1sZyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogdmFyKC0tc3BhY2UtOCk7XG59XG5cbi8qIExheW91dCBncmlkIHV0aWxpdGllcyBmb3IgY29tcG9uZW50IGNvbnNpc3RlbmN5ICovXG4ubGF5b3V0LWdyaWQtMiB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTtcbiAgZ2FwOiB2YXIoLS1zcGFjZS02KTtcbn1cblxuLmxheW91dC1ncmlkLTMge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7XG4gIGdhcDogdmFyKC0tc3BhY2UtNik7XG59XG5cbi5sYXlvdXQtZ3JpZC00IHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgbWlubWF4KDAsIDFmcikpO1xuICBnYXA6IHZhcigtLXNwYWNlLTYpO1xufVxuXG4vKiBSZXNwb25zaXZlIGJlaGF2aW9yIGZvciBsYXlvdXQgZ3JpZHMgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAubGF5b3V0LWdyaWQtMixcbiAgLmxheW91dC1ncmlkLTMsXG4gIC5sYXlvdXQtZ3JpZC00IHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTQpO1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDEwMjNweCkge1xuICAubGF5b3V0LWdyaWQtMyxcbiAgLmxheW91dC1ncmlkLTQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTtcbiAgfVxufVxuXG4vKiBTdXJmYWNlIHV0aWxpdHkgY2xhc3NlcyAtIEJhY2tncm91bmQgdmFyaWF0aW9ucyBmb3Igc2VjdGlvbnMgKi9cbi5zdXJmYWNlLWRlZmF1bHQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tc3VyZmFjZS1kZWZhdWx0KSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkpO1xufVxuXG4uc3VyZmFjZS1tdXRlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1zdXJmYWNlLW11dGVkKSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkpO1xufVxuXG4uc3VyZmFjZS1kYXJrIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLXN1cmZhY2UtZGFyaykpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWZvcmVncm91bmQpKTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDcuIEdSSUQgU1lTVEVNXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uZ3JpZCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdhcDogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi8qIEdyaWQgY29sdW1ucyAqL1xuLmdyaWQtY29scy0xIHtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMSwgbWlubWF4KDAsIDFmcikpO1xufVxuXG4uZ3JpZC1jb2xzLTIge1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG59XG5cbi5ncmlkLWNvbHMtMyB7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcbn1cblxuLmdyaWQtY29scy00IHtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgbWlubWF4KDAsIDFmcikpO1xufVxuXG4uZ3JpZC1jb2xzLTUge1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg1LCBtaW5tYXgoMCwgMWZyKSk7XG59XG5cbi5ncmlkLWNvbHMtNiB7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDYsIG1pbm1heCgwLCAxZnIpKTtcbn1cblxuLmdyaWQtY29scy0xMiB7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDEyLCBtaW5tYXgoMCwgMWZyKSk7XG59XG5cbi8qIFJlc3BvbnNpdmUgZ3JpZHMgKi9cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xuICAuc21cXDpncmlkLWNvbHMtMiB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpO1xuICB9XG4gIC5zbVxcOmdyaWQtY29scy0zIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7XG4gIH1cbiAgLnNtXFw6Z3JpZC1jb2xzLTQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCgwLCAxZnIpKTtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLm1kXFw6Z3JpZC1jb2xzLTIge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTtcbiAgfVxuICAubWRcXDpncmlkLWNvbHMtMyB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpO1xuICB9XG4gIC5tZFxcOmdyaWQtY29scy00IHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7XG4gIH1cbiAgLm1kXFw6Z3JpZC1jb2xzLTYge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDYsIG1pbm1heCgwLCAxZnIpKTtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5sZ1xcOmdyaWQtY29scy0yIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gIH1cbiAgLmxnXFw6Z3JpZC1jb2xzLTMge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcbiAgfVxuICAubGdcXDpncmlkLWNvbHMtNCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgbWlubWF4KDAsIDFmcikpO1xuICB9XG4gIC5sZ1xcOmdyaWQtY29scy01IHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg1LCBtaW5tYXgoMCwgMWZyKSk7XG4gIH1cbiAgLmxnXFw6Z3JpZC1jb2xzLTYge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDYsIG1pbm1heCgwLCAxZnIpKTtcbiAgfVxufVxuXG4vKiBHcmlkIGdhcHMgKi9cbi5nYXAtMCB7XG4gIGdhcDogMDtcbn1cblxuLmdhcC0yIHtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0yKTtcbn1cblxuLmdhcC00IHtcbiAgZ2FwOiB2YXIoLS1zcGFjZS00KTtcbn1cblxuLmdhcC02IHtcbiAgZ2FwOiB2YXIoLS1zcGFjZS02KTtcbn1cblxuLmdhcC04IHtcbiAgZ2FwOiB2YXIoLS1zcGFjZS04KTtcbn1cblxuLmdhcC0xMiB7XG4gIGdhcDogdmFyKC0tc3BhY2UtMTIpO1xufVxuXG4uZ2FwLTE2IHtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0xNik7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICA4LiBDQVJEIENPTVBPTkVOVFNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5jYXJkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLWJhY2tncm91bmQpKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtNik7XG4gIGhlaWdodDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNpbmctc3RhbmRhcmQpO1xufVxuXG4vKiBDYXJkIHZhcmlhbnRzICovXG4uY2FyZC1ib3JkZXJlZCB7XG4gIGJvcmRlcjogdmFyKC0tYm9yZGVyLXdpZHRoKSBzb2xpZCByZ2IodmFyKC0tY29sb3ItYm9yZGVyKSk7XG59XG5cbi5jYXJkLWVsZXZhdGVkIHtcbiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LW1kKTtcbn1cblxuLmNhcmQtZWxldmF0ZWQ6aG92ZXIge1xuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGcpO1xuICB0cmFuc2Zvcm06IHZhcigtLXRyYW5zZm9ybS1saWZ0KTtcbn1cblxuLyogSGVyaXRhZ2UgYWNjZW50IGNhcmQgLSB3aXRoIGV4dHJhIHNwYWNpbmcgcGVyIGJyYW5kIGd1aWRlICovXG4uY2FyZC1oZXJpdGFnZSB7XG4gIGJvcmRlci1sZWZ0OiA0cHggc29saWQgcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpO1xuICBwYWRkaW5nLWxlZnQ6IGNhbGModmFyKC0tc3BhY2UtNikgKyB2YXIoLS1zcGFjZS0yKSk7IC8qIEV4dHJhIHBhZGRpbmcgZm9yIHJlZCBib3JkZXIgKi9cbiAgbWFyZ2luOiB2YXIoLS1jYXJkLWhlcml0YWdlLW1hcmdpbikgMDsgLyogRXh0cmEgdmVydGljYWwgc3BhY2UgKi9cbn1cblxuLyogQ2FyZCBzZWN0aW9ucyAqL1xuLmNhcmQtaGVhZGVyIHtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi5jYXJkLWJvZHkge1xuICBmbGV4OiAxO1xufVxuXG4uY2FyZC1mb290ZXIge1xuICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS00KTtcbiAgcGFkZGluZy10b3A6IHZhcigtLXNwYWNlLTQpO1xuICBib3JkZXItdG9wOiB2YXIoLS1ib3JkZXItd2lkdGgpIHNvbGlkIHJnYih2YXIoLS1jb2xvci1ib3JkZXIpKTtcbn1cblxuLyogQ2FyZCBhY3Rpb25zICovXG4uY2FyZC1hY3Rpb25zIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0yKTtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi5jYXJkLWFjdGlvbnMtZW5kIHtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbn1cblxuLmNhcmQtYWN0aW9ucy1jZW50ZXIge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDkuIEJBREdFIENPTVBPTkVOVCBDTEFTU0VTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBCYXNlIGJhZGdlIHN0eWxpbmcgKi9cbi5iYWRnZSB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiAwLjI1cmVtIDAuNzVyZW07XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7XG4gIHRyYW5zaXRpb246IGFsbCAyMDBtcyBlYXNlO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4vKiBCYWRnZSBob3ZlciBzdGF0ZSAqL1xuLmJhZGdlOmhvdmVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuXG4vKiBCYWRnZSBjb2xvciB2YXJpYW50cyAqL1xuLmJhZGdlLXByaW1hcnkge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeS0xMDApKTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5LTcwMCkpO1xufVxuXG4vKiBIZXJpdGFnZSBiYWRnZSAtIGZvbGxvd3MgMTAlIHJ1bGUgd2l0aCBleHRyYSBzcGFjaW5nICovXG4uYmFkZ2UtaGVyaXRhZ2Uge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSk7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgLyogSGVyaXRhZ2UgYmFkZ2VzIG5lZWQgZXh0cmEgc3BhY2UgcGVyIGJyYW5kIGd1aWRlbGluZXMgKi9cbiAgbWFyZ2luOiAwIDAuMjVyZW07XG59XG5cbi5iYWRnZS1zZWNvbmRhcnkge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3Itc2Vjb25kYXJ5LTEwMCkpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXNlY29uZGFyeS05MDApKTtcbn1cblxuLmJhZGdlLXN1Y2Nlc3Mge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3Itc3VjY2VzcykgLyAwLjEpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXN1Y2Nlc3MpKTtcbn1cblxuLmJhZGdlLXdhcm5pbmcge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3Itd2FybmluZykgLyAwLjEpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXdhcm5pbmcpKTtcbn1cblxuLmJhZGdlLWVycm9yIHtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWVycm9yKSAvIDAuMSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItZXJyb3IpKTtcbn1cblxuLyogQmFkZ2Ugc2l6ZSB2YXJpYW50cyAqL1xuLmJhZGdlLXNtIHtcbiAgcGFkZGluZzogMC4xMjVyZW0gMC41cmVtO1xuICBmb250LXNpemU6IDAuNjI1cmVtO1xufVxuXG4uYmFkZ2UtbGcge1xuICBwYWRkaW5nOiAwLjM3NXJlbSAxcmVtO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xufVxuXG4vKiBCYWRnZSBpbiBjYXJkcyAtIGhvcml6b250YWwgbGF5b3V0ICovXG4uY2FyZC1hY3Rpb25zIC5iYWRnZSB7XG4gIG1hcmdpbjogMCAwLjEyNXJlbTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDEwLiBOQVZJR0FUSU9OIENPTVBPTkVOVCBDTEFTU0VTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBOYXZiYXIgY29udGFpbmVyICovXG4ubmF2YmFyIHtcbiAgaGVpZ2h0OiA0cmVtOyAvKiA2NHB4IHN0YW5kYXJkIGhlaWdodCAqL1xuICBwYWRkaW5nOiAwIHZhcigtLXNwYWNlLTYpO1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItYmFja2dyb3VuZCkpO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiKHZhcigtLWNvbG9yLWJvcmRlcikpO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogdmFyKC0tei1zdGlja3kpO1xufVxuXG4vKiBOYXZiYXIgYnJhbmQgd2l0aCBoZXJpdGFnZSBkb3QgKi9cbi5uYXZiYXItYnJhbmQge1xuICBmb250LXdlaWdodDogNjAwO1xuICBmb250LXNpemU6IDEuMjVyZW07XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHBhZGRpbmctcmlnaHQ6IDFyZW07XG59XG5cbi8qIEhlcml0YWdlIHJlZCBkb3QgYWNjZW50ICovXG4ubmF2YmFyLWJyYW5kOjphZnRlciB7XG4gIGNvbnRlbnQ6ICcnO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiA4cHg7XG4gIGhlaWdodDogOHB4O1xuICBtYXJnaW4tbGVmdDogMC41cmVtO1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSk7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xufVxuXG4vKiBOYXZpZ2F0aW9uIGl0ZW1zICovXG4ubmF2LWl0ZW0ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHBhZGRpbmc6IDAuNXJlbSAxcmVtO1xuICBmb250LXNpemU6IDFyZW07IC8qIDE2cHggbWluaW11bSAqL1xuICBmb250LXdlaWdodDogNTAwO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWZvcmVncm91bmQpKTtcbiAgdHJhbnNpdGlvbjogY29sb3IgMjAwbXMgZWFzZTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLm5hdi1pdGVtOmhvdmVyIHtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5LTcwMCkpO1xufVxuXG4vKiBBY3RpdmUgc3RhdGUgd2l0aCByZWQgaW5kaWNhdG9yICovXG4ubmF2LWl0ZW0uYWN0aXZlIHtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5LTkwMCkpO1xufVxuXG4ubmF2LWl0ZW0uYWN0aXZlOjphZnRlciB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogLTJweDtcbiAgbGVmdDogMXJlbTtcbiAgcmlnaHQ6IDFyZW07XG4gIGhlaWdodDogMnB4O1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSk7XG59XG5cbi8qIE1vYmlsZSBuYXZpZ2F0aW9uIGFkanVzdG1lbnRzICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLm5hdmJhciB7XG4gICAgcGFkZGluZzogMCB2YXIoLS1zcGFjZS00KTtcbiAgfVxuICBcbiAgLyogTm8gcmVkIGluIG5hdmlnYXRpb24gb24gbW9iaWxlIHBlciBicmFuZCBndWlkZSAqL1xuICAubmF2LWl0ZW0uYWN0aXZlOjphZnRlciB7XG4gICAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbiAgICBoZWlnaHQ6IDNweDsgLyogVGhpY2tlciBmb3IgdG91Y2ggKi9cbiAgfVxuICBcbiAgLyogVG91Y2gtZnJpZW5kbHkgbmF2IGl0ZW1zICovXG4gIC5uYXYtaXRlbSB7XG4gICAgbWluLWhlaWdodDogdmFyKC0tdG91Y2gtdGFyZ2V0LW1pbik7XG4gICAgcGFkZGluZzogMC43NXJlbSAxcmVtO1xuICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAxMS4gVVRJTElUWSBDTEFTU0VTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBEaXNwbGF5IHV0aWxpdGllcyAqL1xuLmJsb2NrIHsgZGlzcGxheTogYmxvY2s7IH1cbi5pbmxpbmUtYmxvY2sgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH1cbi5pbmxpbmUgeyBkaXNwbGF5OiBpbmxpbmU7IH1cbi5mbGV4IHsgZGlzcGxheTogZmxleDsgfVxuLmlubGluZS1mbGV4IHsgZGlzcGxheTogaW5saW5lLWZsZXg7IH1cbi5pbmxpbmUtZ3JpZCB7IGRpc3BsYXk6IGlubGluZS1ncmlkOyB9XG4uaGlkZGVuIHsgZGlzcGxheTogbm9uZTsgfVxuXG4vKiBGbGV4IHV0aWxpdGllcyAqL1xuLmZsZXgtcm93IHsgZmxleC1kaXJlY3Rpb246IHJvdzsgfVxuLmZsZXgtcm93LXJldmVyc2UgeyBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7IH1cbi5mbGV4LWNvbCB7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IH1cbi5mbGV4LWNvbC1yZXZlcnNlIHsgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlOyB9XG4uZmxleC13cmFwIHsgZmxleC13cmFwOiB3cmFwOyB9XG4uZmxleC1ub3dyYXAgeyBmbGV4LXdyYXA6IG5vd3JhcDsgfVxuLmZsZXgtMSB7IGZsZXg6IDEgMSAwJTsgfVxuLmZsZXgtYXV0byB7IGZsZXg6IDEgMSBhdXRvOyB9XG4uZmxleC1pbml0aWFsIHsgZmxleDogMCAxIGF1dG87IH1cbi5mbGV4LW5vbmUgeyBmbGV4OiBub25lOyB9XG4uZmxleC1ncm93IHsgZmxleC1ncm93OiAxOyB9XG4uZmxleC1ncm93LTAgeyBmbGV4LWdyb3c6IDA7IH1cbi5mbGV4LXNocmluayB7IGZsZXgtc2hyaW5rOiAxOyB9XG4uZmxleC1zaHJpbmstMCB7IGZsZXgtc2hyaW5rOiAwOyB9XG5cbi8qIEFsaWdubWVudCB1dGlsaXRpZXMgKi9cbi5pdGVtcy1zdGFydCB7IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyB9XG4uaXRlbXMtZW5kIHsgYWxpZ24taXRlbXM6IGZsZXgtZW5kOyB9XG4uaXRlbXMtY2VudGVyIHsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfVxuLml0ZW1zLWJhc2VsaW5lIHsgYWxpZ24taXRlbXM6IGJhc2VsaW5lOyB9XG4uaXRlbXMtc3RyZXRjaCB7IGFsaWduLWl0ZW1zOiBzdHJldGNoOyB9XG5cbi5qdXN0aWZ5LXN0YXJ0IHsganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OyB9XG4uanVzdGlmeS1lbmQgeyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOyB9XG4uanVzdGlmeS1jZW50ZXIgeyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgfVxuLmp1c3RpZnktYmV0d2VlbiB7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgfVxuLmp1c3RpZnktYXJvdW5kIHsganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7IH1cbi5qdXN0aWZ5LWV2ZW5seSB7IGp1c3RpZnktY29udGVudDogc3BhY2UtZXZlbmx5OyB9XG5cbi8qIFNwYWNpbmcgdXRpbGl0aWVzICovXG4ubS1hdXRvIHsgbWFyZ2luOiBhdXRvOyB9XG4ubXgtYXV0byB7IG1hcmdpbi1sZWZ0OiBhdXRvOyBtYXJnaW4tcmlnaHQ6IGF1dG87IH1cbi5teS1hdXRvIHsgbWFyZ2luLXRvcDogYXV0bzsgbWFyZ2luLWJvdHRvbTogYXV0bzsgfVxuLm10LWF1dG8geyBtYXJnaW4tdG9wOiBhdXRvOyB9XG4ubXItYXV0byB7IG1hcmdpbi1yaWdodDogYXV0bzsgfVxuLm1iLWF1dG8geyBtYXJnaW4tYm90dG9tOiBhdXRvOyB9XG4ubWwtYXV0byB7IG1hcmdpbi1sZWZ0OiBhdXRvOyB9XG5cbi8qIFdpZHRoIHV0aWxpdGllcyAqL1xuLnctZnVsbCB7IHdpZHRoOiAxMDAlOyB9XG4udy1zY3JlZW4geyB3aWR0aDogMTAwdnc7IH1cbi53LW1pbiB7IHdpZHRoOiBtaW4tY29udGVudDsgfVxuLnctbWF4IHsgd2lkdGg6IG1heC1jb250ZW50OyB9XG4udy1maXQgeyB3aWR0aDogZml0LWNvbnRlbnQ7IH1cblxuLyogSGVpZ2h0IHV0aWxpdGllcyAqL1xuLmgtZnVsbCB7IGhlaWdodDogMTAwJTsgfVxuLmgtc2NyZWVuIHsgaGVpZ2h0OiAxMDB2aDsgfVxuLmgtbWluIHsgaGVpZ2h0OiBtaW4tY29udGVudDsgfVxuLmgtbWF4IHsgaGVpZ2h0OiBtYXgtY29udGVudDsgfVxuLmgtZml0IHsgaGVpZ2h0OiBmaXQtY29udGVudDsgfVxuXG4vKiBNYXggd2lkdGggdXRpbGl0aWVzICovXG4ubWF4LXctbm9uZSB7IG1heC13aWR0aDogbm9uZTsgfVxuLm1heC13LXhzIHsgbWF4LXdpZHRoOiAyMHJlbTsgfVxuLm1heC13LXNtIHsgbWF4LXdpZHRoOiAyNHJlbTsgfVxuLm1heC13LW1kIHsgbWF4LXdpZHRoOiAyOHJlbTsgfVxuLm1heC13LWxnIHsgbWF4LXdpZHRoOiAzMnJlbTsgfVxuLm1heC13LXhsIHsgbWF4LXdpZHRoOiAzNnJlbTsgfVxuLm1heC13LTJ4bCB7IG1heC13aWR0aDogNDJyZW07IH1cbi5tYXgtdy0zeGwgeyBtYXgtd2lkdGg6IDQ4cmVtOyB9XG4ubWF4LXctNHhsIHsgbWF4LXdpZHRoOiA1NnJlbTsgfVxuLm1heC13LTV4bCB7IG1heC13aWR0aDogNjRyZW07IH1cbi5tYXgtdy02eGwgeyBtYXgtd2lkdGg6IDcycmVtOyB9XG4ubWF4LXctN3hsIHsgbWF4LXdpZHRoOiA4MHJlbTsgfVxuLm1heC13LWZ1bGwgeyBtYXgtd2lkdGg6IDEwMCU7IH1cblxuLyogVGV4dCB1dGlsaXRpZXMgKi9cbi50ZXh0LWxlZnQgeyB0ZXh0LWFsaWduOiBsZWZ0OyB9XG4udGV4dC1jZW50ZXIgeyB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cbi50ZXh0LXJpZ2h0IHsgdGV4dC1hbGlnbjogcmlnaHQ7IH1cbi50ZXh0LWp1c3RpZnkgeyB0ZXh0LWFsaWduOiBqdXN0aWZ5OyB9XG5cbi51cHBlcmNhc2UgeyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9XG4ubG93ZXJjYXNlIHsgdGV4dC10cmFuc2Zvcm06IGxvd2VyY2FzZTsgfVxuLmNhcGl0YWxpemUgeyB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsgfVxuLm5vcm1hbC1jYXNlIHsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IH1cblxuLnRydW5jYXRlIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi8qIENvbG9yIHV0aWxpdGllcyAqL1xuLnRleHQtcHJpbWFyeSB7IGNvbG9yOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpOyB9XG4udGV4dC1zZWNvbmRhcnkgeyBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXNlY29uZGFyeSkpOyB9XG4udGV4dC1oZXJpdGFnZSB7IGNvbG9yOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSk7IH1cbi50ZXh0LW11dGVkIHsgY29sb3I6IHJnYih2YXIoLS1jb2xvci1tdXRlZC1mb3JlZ3JvdW5kKSk7IH1cbi50ZXh0LXN1Y2Nlc3MgeyBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXN1Y2Nlc3MpKTsgfVxuLnRleHQtd2FybmluZyB7IGNvbG9yOiByZ2IodmFyKC0tY29sb3Itd2FybmluZykpOyB9XG4udGV4dC1lcnJvciB7IGNvbG9yOiByZ2IodmFyKC0tY29sb3ItZXJyb3IpKTsgfVxuXG4uYmctcHJpbWFyeSB7IGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7IH1cbi5iZy1zZWNvbmRhcnkgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tY29sb3Itc2Vjb25kYXJ5KSk7IH1cbi5iZy1oZXJpdGFnZSB7IGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpKTsgfVxuLmJnLW11dGVkIHsgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLW11dGVkKSk7IH1cbi5iZy1zdWNjZXNzIHsgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLXN1Y2Nlc3MpKTsgfVxuLmJnLXdhcm5pbmcgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tY29sb3Itd2FybmluZykpOyB9XG4uYmctZXJyb3IgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItZXJyb3IpKTsgfVxuXG4vKiBCb3JkZXIgdXRpbGl0aWVzICovXG4uYm9yZGVyIHsgYm9yZGVyLXdpZHRoOiB2YXIoLS1ib3JkZXItd2lkdGgpOyB9XG4uYm9yZGVyLTAgeyBib3JkZXItd2lkdGg6IDA7IH1cbi5ib3JkZXItMiB7IGJvcmRlci13aWR0aDogMnB4OyB9XG4uYm9yZGVyLTQgeyBib3JkZXItd2lkdGg6IDRweDsgfVxuLmJvcmRlci04IHsgYm9yZGVyLXdpZHRoOiA4cHg7IH1cblxuLmJvcmRlci1zb2xpZCB7IGJvcmRlci1zdHlsZTogc29saWQ7IH1cbi5ib3JkZXItZGFzaGVkIHsgYm9yZGVyLXN0eWxlOiBkYXNoZWQ7IH1cbi5ib3JkZXItZG90dGVkIHsgYm9yZGVyLXN0eWxlOiBkb3R0ZWQ7IH1cbi5ib3JkZXItbm9uZSB7IGJvcmRlci1zdHlsZTogbm9uZTsgfVxuXG4ucm91bmRlZC1ub25lIHsgYm9yZGVyLXJhZGl1czogMDsgfVxuLnJvdW5kZWQtc20geyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pOyB9XG4ucm91bmRlZCB7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cyk7IH1cbi5yb3VuZGVkLW1kIHsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTsgfVxuLnJvdW5kZWQtbGcgeyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpOyB9XG4ucm91bmRlZC1mdWxsIHsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWZ1bGwpOyB9XG5cbi8qIFNoYWRvdyB1dGlsaXRpZXMgKi9cbi5zaGFkb3ctc20geyBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctc20pOyB9XG4uc2hhZG93IHsgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93KTsgfVxuLnNoYWRvdy1tZCB7IGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1tZCk7IH1cbi5zaGFkb3ctbGcgeyBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGcpOyB9XG4uc2hhZG93LXhsIHsgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LXhsKTsgfVxuLnNoYWRvdy0yeGwgeyBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctMnhsKTsgfVxuLnNoYWRvdy1ub25lIHsgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LW5vbmUpOyB9XG4uc2hhZG93LWhlcml0YWdlIHsgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWhlcml0YWdlKTsgfVxuXG4vKiBPcGFjaXR5IHV0aWxpdGllcyAqL1xuLm9wYWNpdHktMCB7IG9wYWNpdHk6IDA7IH1cbi5vcGFjaXR5LTI1IHsgb3BhY2l0eTogMC4yNTsgfVxuLm9wYWNpdHktNTAgeyBvcGFjaXR5OiAwLjU7IH1cbi5vcGFjaXR5LTc1IHsgb3BhY2l0eTogMC43NTsgfVxuLm9wYWNpdHktMTAwIHsgb3BhY2l0eTogMTsgfVxuXG4vKiBDdXJzb3IgdXRpbGl0aWVzICovXG4uY3Vyc29yLXBvaW50ZXIgeyBjdXJzb3I6IHBvaW50ZXI7IH1cbi5jdXJzb3ItZGVmYXVsdCB7IGN1cnNvcjogZGVmYXVsdDsgfVxuLmN1cnNvci1ub3QtYWxsb3dlZCB7IGN1cnNvcjogbm90LWFsbG93ZWQ7IH1cbi5jdXJzb3Itd2FpdCB7IGN1cnNvcjogd2FpdDsgfVxuLmN1cnNvci1tb3ZlIHsgY3Vyc29yOiBtb3ZlOyB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAxMC4gSUNPTiBTWVNURU0gQ0xBU1NFUyAtIEJSQU5EIEdVSURFIENPTVBMSUFOVFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogSWNvbiBzaXppbmcgY2xhc3NlcyB3aXRoIHByb2Zlc3Npb25hbCBjb250YWluZXJzIC0gUkVNLWJhc2VkIHJlc3BvbnNpdmUgZGVzaWduICovXG4uaWNvbi14eHMge1xuICAvKiBJbmxpbmUgaWNvbiBiZWhhdmlvciBmb3IgYnV0dG9ucyBhbmQgbmF2aWdhdGlvbiAqL1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIC8qIFZlcnkgc21hbGwgaW5saW5lIHNpemluZyAqL1xuICB3aWR0aDogMXJlbTsgICAgICAgIC8qIDE2cHggY29udGFpbmVyIC0gaW5saW5lIHdpdGggdGV4dCAqL1xuICBoZWlnaHQ6IDFyZW07XG4gIC8qIE1pbmltYWwgc3R5bGluZyBmb3IgaW5saW5lIHVzYWdlICovXG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIHRyYW5zaXRpb246IHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNpbmctc21vb3RoKTtcbiAgZmxleC1zaHJpbms6IDA7XG59XG5cbi8qIEljb24gaW5zaWRlIC5pY29uLXh4cyBjb250YWluZXIgKi9cbi5pY29uLXh4cyA+ICoge1xuICB3aWR0aDogMC43NXJlbTsgICAgIC8qIDEycHggaWNvbiBpbnNpZGUgKi9cbiAgaGVpZ2h0OiAwLjc1cmVtO1xufVxuXG4uaWNvbi14cyB7XG4gIC8qIFByb2Zlc3Npb25hbCBjb250YWluZXIgYmVoYXZpb3IgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIC8qIFJFTS1iYXNlZCBjb250YWluZXIgc2l6aW5nICovXG4gIHdpZHRoOiAycmVtOyAgICAgICAgLyogMzJweCBjb250YWluZXIgKi9cbiAgaGVpZ2h0OiAycmVtO1xuICAvKiBQcm9mZXNzaW9uYWwgY29udGFpbmVyIHN0eWxpbmcgKi9cbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xuICB0cmFuc2l0aW9uOiB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzaW5nLXNtb290aCk7XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4vKiBJY29uIGluc2lkZSAuaWNvbi14cyBjb250YWluZXIgKi9cbi5pY29uLXhzID4gKiB7XG4gIHdpZHRoOiAxcmVtOyAgICAgICAgLyogMTZweCBpY29uIGluc2lkZSAqL1xuICBoZWlnaHQ6IDFyZW07XG59XG5cbi5pY29uLXNtIHtcbiAgLyogUHJvZmVzc2lvbmFsIGNvbnRhaW5lciBiZWhhdmlvciAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgLyogUkVNLWJhc2VkIGNvbnRhaW5lciBzaXppbmcgKi9cbiAgd2lkdGg6IDIuNXJlbTsgICAgICAvKiA0MHB4IGNvbnRhaW5lciAqL1xuICBoZWlnaHQ6IDIuNXJlbTtcbiAgLyogUHJvZmVzc2lvbmFsIGNvbnRhaW5lciBzdHlsaW5nICovXG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbiAgdHJhbnNpdGlvbjogdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2luZy1zbW9vdGgpO1xuICBmbGV4LXNocmluazogMDtcbn1cblxuLyogSWNvbiBpbnNpZGUgLmljb24tc20gY29udGFpbmVyICovXG4uaWNvbi1zbSA+ICoge1xuICB3aWR0aDogMS4yNXJlbTsgICAgIC8qIDIwcHggaWNvbiBpbnNpZGUgKi9cbiAgaGVpZ2h0OiAxLjI1cmVtO1xufVxuXG4uaWNvbi1iYXNlIHtcbiAgLyogUHJvZmVzc2lvbmFsIGNvbnRhaW5lciBiZWhhdmlvciAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgLyogUkVNLWJhc2VkIGNvbnRhaW5lciBzaXppbmcgKi9cbiAgd2lkdGg6IDNyZW07ICAgICAgICAvKiA0OHB4IGNvbnRhaW5lciAtIHRvdWNoIHRhcmdldCBjb21wbGlhbnQgKi9cbiAgaGVpZ2h0OiAzcmVtO1xuICAvKiBQcm9mZXNzaW9uYWwgY29udGFpbmVyIHN0eWxpbmcgKi9cbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xuICB0cmFuc2l0aW9uOiB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzaW5nLXNtb290aCk7XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4vKiBJY29uIGluc2lkZSAuaWNvbi1iYXNlIGNvbnRhaW5lciAqL1xuLmljb24tYmFzZSA+ICoge1xuICB3aWR0aDogMS41cmVtOyAgICAgIC8qIDI0cHggaWNvbiBpbnNpZGUgKi9cbiAgaGVpZ2h0OiAxLjVyZW07XG59XG5cbi5pY29uLW1kIHtcbiAgLyogUHJvZmVzc2lvbmFsIGNvbnRhaW5lciBiZWhhdmlvciAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgLyogUkVNLWJhc2VkIGNvbnRhaW5lciBzaXppbmcgKi9cbiAgd2lkdGg6IDMuNXJlbTsgICAgICAvKiA1NnB4IGNvbnRhaW5lciAqL1xuICBoZWlnaHQ6IDMuNXJlbTtcbiAgLyogUHJvZmVzc2lvbmFsIGNvbnRhaW5lciBzdHlsaW5nICovXG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbiAgdHJhbnNpdGlvbjogdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2luZy1zbW9vdGgpO1xuICBmbGV4LXNocmluazogMDtcbn1cblxuLyogSWNvbiBpbnNpZGUgLmljb24tbWQgY29udGFpbmVyICovXG4uaWNvbi1tZCA+ICoge1xuICB3aWR0aDogMS43NXJlbTsgICAgIC8qIDI4cHggaWNvbiBpbnNpZGUgKi9cbiAgaGVpZ2h0OiAxLjc1cmVtO1xufVxuXG4uaWNvbi1sZyB7XG4gIC8qIFByb2Zlc3Npb25hbCBjb250YWluZXIgYmVoYXZpb3IgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIC8qIFJFTS1iYXNlZCBjb250YWluZXIgc2l6aW5nICovXG4gIHdpZHRoOiA0cmVtOyAgICAgICAgLyogNjRweCBjb250YWluZXIgLSBwcmltYXJ5IGZlYXR1cmUgc2l6ZSAqL1xuICBoZWlnaHQ6IDRyZW07XG4gIC8qIFByb2Zlc3Npb25hbCBjb250YWluZXIgc3R5bGluZyAqL1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XG4gIHRyYW5zaXRpb246IHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNpbmctc21vb3RoKTtcbiAgZmxleC1zaHJpbms6IDA7XG59XG5cbi8qIEljb24gaW5zaWRlIC5pY29uLWxnIGNvbnRhaW5lciAqL1xuLmljb24tbGcgPiAqIHtcbiAgd2lkdGg6IDJyZW07ICAgICAgICAvKiAzMnB4IGljb24gaW5zaWRlICovXG4gIGhlaWdodDogMnJlbTtcbn1cblxuLmljb24teGwge1xuICAvKiBQcm9mZXNzaW9uYWwgY29udGFpbmVyIGJlaGF2aW9yICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAvKiBSRU0tYmFzZWQgY29udGFpbmVyIHNpemluZyAqL1xuICB3aWR0aDogNXJlbTsgICAgICAgIC8qIDgwcHggY29udGFpbmVyIC0gaGVybyBlbGVtZW50cyAqL1xuICBoZWlnaHQ6IDVyZW07XG4gIC8qIFByb2Zlc3Npb25hbCBjb250YWluZXIgc3R5bGluZyAqL1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XG4gIHRyYW5zaXRpb246IHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNpbmctc21vb3RoKTtcbiAgZmxleC1zaHJpbms6IDA7XG59XG5cbi8qIEljb24gaW5zaWRlIC5pY29uLXhsIGNvbnRhaW5lciAqL1xuLmljb24teGwgPiAqIHtcbiAgd2lkdGg6IDIuNXJlbTsgICAgICAvKiA0MHB4IGljb24gaW5zaWRlICovXG4gIGhlaWdodDogMi41cmVtO1xufVxuXG4vKiBJY29uIGNvbG9yIHZhcmlhbnRzIHdpdGggcHJvZmVzc2lvbmFsIGJhY2tncm91bmRzIC0gZm9sbG93cyBicmFuZCBwYWxldHRlICovXG4uaWNvbi1kZWZhdWx0IHtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLW11dGVkKSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQtZm9yZWdyb3VuZCkpO1xufVxuXG4uaWNvbi1wcmltYXJ5IHtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpIC8gMC4xKTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG59XG5cbi8qIEhlcml0YWdlIHJlZCBpY29uIC0gbWF4aW11bSAxLTIgcGVyIHZpZXdwb3J0IHdpdGggc3RyYXRlZ2ljIHNwYWNpbmcgKi9cbi5pY29uLWhlcml0YWdlIHtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkgLyAwLjEpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpO1xuICAvKiBIZXJpdGFnZSBpY29ucyBuZWVkIGV4dHJhIHZpc3VhbCBzcGFjZSAoMjUtMzUlIG1vcmUpICovXG4gIG1hcmdpbi1ib3R0b206IDJyZW07ICAvKiB2cyBzdGFuZGFyZCAxLjVyZW0gKi9cbiAgLyogU3VidGxlIGhlcml0YWdlIHNoYWRvdyBmb3IgZW1waGFzaXMgKi9cbiAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSAvIDAuMSk7XG59XG5cbi5pY29uLXN1Y2Nlc3Mge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3Itc3VjY2VzcykgLyAwLjEpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXN1Y2Nlc3MpKTtcbn1cblxuLmljb24td2FybmluZyB7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci13YXJuaW5nKSAvIDAuMSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3Itd2FybmluZykpO1xufVxuXG4uaWNvbi1tdXRlZCB7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1tdXRlZCkpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLW11dGVkLWZvcmVncm91bmQpKTtcbn1cblxuLmljb24tb3V0bGluZSB7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2IodmFyKC0tY29sb3ItYm9yZGVyKSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkpO1xufVxuXG4uaWNvbi13aGl0ZSB7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWZvcmVncm91bmQpKTtcbiAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYigwIDAgMCAvIDAuMSk7XG59XG5cbi8qIEljb24gYmFja2dyb3VuZHMgLSBlbmhhbmNlZCBwcm9mZXNzaW9uYWwgY29udGFpbmVycyAqL1xuLmljb24tYmcge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTMpOyAvKiAxMnB4ICovXG4gIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbiAgdHJhbnNpdGlvbjogdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2luZy1zbW9vdGgpO1xufVxuXG4uaWNvbi1iZy1wcmltYXJ5IHtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbiAgY29sb3I6IHdoaXRlO1xufVxuXG4uaWNvbi1iZy1oZXJpdGFnZSB7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpKTtcbiAgY29sb3I6IHdoaXRlO1xuICAvKiBFeHRyYSBwYWRkaW5nIGZvciBoZXJpdGFnZSBiYWNrZ3JvdW5kcyAoUkVNLWJhc2VkKSAqL1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KTsgLyogMTZweCAqL1xuICAvKiBFbmhhbmNlZCBoZXJpdGFnZSBzcGFjaW5nICovXG4gIG1hcmdpbi1ib3R0b206IDJyZW07ICAvKiAyNS0zNSUgbW9yZSB0aGFuIHN0YW5kYXJkICovXG4gIC8qIFN1YnRsZSBzaGFkb3cgZm9yIGVtcGhhc2lzICovXG4gIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpIC8gMC4yKTtcbn1cblxuLmljb24tYmctbXV0ZWQge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQpKTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1mb3JlZ3JvdW5kKSk7XG59XG5cbi5pY29uLWJnLXN1Y2Nlc3Mge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3Itc3VjY2VzcykpO1xuICBjb2xvcjogd2hpdGU7XG59XG5cbi5pY29uLWJnLXdhcm5pbmcge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3Itd2FybmluZykpO1xuICBjb2xvcjogd2hpdGU7XG59XG5cbi5pY29uLWJnLW91dGxpbmUge1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiKHZhcigtLWNvbG9yLWJvcmRlcikpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWZvcmVncm91bmQpKTtcbn1cblxuLyogSWNvbiBhbmltYXRpb25zIC0gc3VidGxlIGFuZCBwdXJwb3NlZnVsICovXG4uaWNvbi1pbnRlcmFjdGl2ZSB7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAyMDBtcyB2YXIoLS1lYXNlLXNtb290aCk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmljb24taW50ZXJhY3RpdmU6aG92ZXIge1xuICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG59XG5cbi8qIFJvdGF0aW9uIGZvciBsb2FkaW5nL3Byb2Nlc3NpbmcgKi9cbi5pY29uLXNwaW4ge1xuICBhbmltYXRpb246IGljb24tc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7XG59XG5cbkBrZXlmcmFtZXMgaWNvbi1zcGluIHtcbiAgZnJvbSB7IHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOyB9XG4gIHRvIHsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfVxufVxuXG4vKiBQdWxzZSBmb3IgYXR0ZW50aW9uIChoZXJpdGFnZSBpY29ucyBvbmx5KSAqL1xuLmljb24tcHVsc2Uge1xuICBhbmltYXRpb246IGljb24tcHVsc2UgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG59XG5cbkBrZXlmcmFtZXMgaWNvbi1wdWxzZSB7XG4gIDAlLCAxMDAlIHsgb3BhY2l0eTogMTsgfVxuICA1MCUgeyBvcGFjaXR5OiAwLjY7IH1cbn1cblxuLyogSGVyaXRhZ2UgYnV0dG9uIHB1bHNlIGFuaW1hdGlvbiAqL1xuQGtleWZyYW1lcyBoZXJpdGFnZS1wdWxzZSB7XG4gIDAlLCAxMDAlIHsgXG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWhlcml0YWdlKTtcbiAgfVxuICA1MCUgeyBcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctaGVyaXRhZ2UpLCAwIDAgMjBweCByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSAvIDAuMyk7XG4gIH1cbn1cblxuLyogTW9iaWxlIFJFTS1yZXNwb25zaXZlIGFkanVzdG1lbnRzIC0gVG91Y2gtZnJpZW5kbHkgc2NhbGluZyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC8qIEVuaGFuY2VkIGNvbnRhaW5lciBzaXplcyBmb3IgbW9iaWxlIHRvdWNoIHRhcmdldHMgKi9cbiAgLmljb24teHhzIHtcbiAgICB3aWR0aDogMXJlbTsgICAgICAvKiAxNnB4IC0gc2FtZSBhcyBkZXNrdG9wIGZvciBpbmxpbmUgdXNhZ2UgKi9cbiAgICBoZWlnaHQ6IDFyZW07XG4gIH1cbiAgXG4gIC5pY29uLXhzIHtcbiAgICB3aWR0aDogMS41cmVtOyAgIC8qIDI0cHggKi9cbiAgICBoZWlnaHQ6IDEuNXJlbTtcbiAgfVxuICBcbiAgLmljb24tc20ge1xuICAgIHdpZHRoOiAycmVtOyAgICAgLyogMzJweCAqL1xuICAgIGhlaWdodDogMnJlbTtcbiAgfVxuICBcbiAgLmljb24tYmFzZSB7XG4gICAgd2lkdGg6IDIuNXJlbTsgICAvKiA0MHB4ICovXG4gICAgaGVpZ2h0OiAyLjVyZW07XG4gIH1cbiAgXG4gIC5pY29uLW1kIHtcbiAgICB3aWR0aDogM3JlbTsgICAgIC8qIDQ4cHggLSB0b3VjaCB0YXJnZXQgY29tcGxpYW50ICovXG4gICAgaGVpZ2h0OiAzcmVtO1xuICB9XG4gIFxuICAuaWNvbi1sZyB7XG4gICAgd2lkdGg6IDMuNXJlbTsgICAvKiA1NnB4ICovXG4gICAgaGVpZ2h0OiAzLjVyZW07XG4gIH1cbiAgXG4gIC5pY29uLXhsIHtcbiAgICB3aWR0aDogNHJlbTsgICAgIC8qIDY0cHggKi9cbiAgICBoZWlnaHQ6IDRyZW07XG4gIH1cbiAgXG4gIC8qIEljb24gc2l6ZXMgaW5zaWRlIG1vYmlsZSBjb250YWluZXJzICovXG4gIC5pY29uLXh4cyA+ICoge1xuICAgIHdpZHRoOiAwLjYyNXJlbTsgIC8qIDEwcHggLSB2ZXJ5IHNtYWxsIGZvciBtb2JpbGUgaW5saW5lICovXG4gICAgaGVpZ2h0OiAwLjYyNXJlbTtcbiAgfVxuICBcbiAgLmljb24teHMgPiAqIHtcbiAgICB3aWR0aDogMC43NXJlbTsgICAvKiAxMnB4ICovXG4gICAgaGVpZ2h0OiAwLjc1cmVtO1xuICB9XG4gIFxuICAuaWNvbi1zbSA+ICoge1xuICAgIHdpZHRoOiAxcmVtOyAgICAgIC8qIDE2cHggKi9cbiAgICBoZWlnaHQ6IDFyZW07XG4gIH1cbiAgXG4gIC5pY29uLWJhc2UgPiAqIHtcbiAgICB3aWR0aDogMS4yNXJlbTsgICAvKiAyMHB4ICovXG4gICAgaGVpZ2h0OiAxLjI1cmVtO1xuICAgIHN0cm9rZS13aWR0aDogMi41OyAvKiBCb2xkZXIgaWNvbnMgZm9yIG1vYmlsZSBjbGFyaXR5ICovXG4gIH1cbiAgXG4gIC5pY29uLW1kID4gKiB7XG4gICAgd2lkdGg6IDEuNXJlbTsgICAgLyogMjRweCAqL1xuICAgIGhlaWdodDogMS41cmVtO1xuICB9XG4gIFxuICAuaWNvbi1sZyA+ICoge1xuICAgIHdpZHRoOiAxLjc1cmVtOyAgIC8qIDI4cHggKi9cbiAgICBoZWlnaHQ6IDEuNzVyZW07XG4gIH1cbiAgXG4gIC5pY29uLXhsID4gKiB7XG4gICAgd2lkdGg6IDJyZW07ICAgICAgLyogMzJweCAqL1xuICAgIGhlaWdodDogMnJlbTtcbiAgfVxuICBcbiAgLyogRW5oYW5jZWQgY29udHJhc3QgZm9yIG1vYmlsZSB2aXNpYmlsaXR5ICovXG4gIC5pY29uLXByaW1hcnkge1xuICAgIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSAvIDAuMTUpOyAgLyogU2xpZ2h0bHkgaGlnaGVyIG9wYWNpdHkgKi9cbiAgfVxuICBcbiAgLmljb24tc3VjY2VzcyB7XG4gICAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLXN1Y2Nlc3MpIC8gMC4xNSk7XG4gIH1cbiAgXG4gIC5pY29uLXdhcm5pbmcge1xuICAgIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci13YXJuaW5nKSAvIDAuMTUpO1xuICB9XG4gIFxuICAvKiBBZGp1c3RlZCBoZXJpdGFnZSBzcGFjaW5nIGZvciBtb2JpbGUgKi9cbiAgLmljb24taGVyaXRhZ2Uge1xuICAgIG1hcmdpbi1ib3R0b206IDEuNzVyZW07ICAvKiBSZWR1Y2VkIGZyb20gMnJlbSBmb3IgbW9iaWxlICovXG4gIH1cbiAgXG4gIC8qIExlZ2FjeSB0b3VjaCB0YXJnZXQgc3VwcG9ydCAqL1xuICAuaWNvbi10b3VjaCB7XG4gICAgd2lkdGg6IDNyZW07ICAgICAgLyogRW5zdXJlIG1pbmltdW0gdG91Y2ggdGFyZ2V0ICovXG4gICAgaGVpZ2h0OiAzcmVtO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuICBcbiAgLmljb24tdG91Y2g6OmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGluc2V0OiAtMTJweDsgICAgIC8qIDQ4cHggdG90YWwgdG91Y2ggYXJlYSAqL1xuICAgIHotaW5kZXg6IDE7XG4gIH1cbn1cblxuLyogRGVza3RvcCBlbmhhbmNlbWVudHMgYW5kIGhvdmVyIGVmZmVjdHMgKi9cbkBtZWRpYSAobWluLXdpZHRoOiAxMjgwcHgpIHtcbiAgLyogRW5oYW5jZWQgaG92ZXIgZWZmZWN0cyBvbiBkZXNrdG9wICovXG4gIC5pY29uLXh4czpob3ZlcixcbiAgLmljb24teHM6aG92ZXIsXG4gIC5pY29uLXNtOmhvdmVyLFxuICAuaWNvbi1iYXNlOmhvdmVyLFxuICAuaWNvbi1tZDpob3ZlcixcbiAgLmljb24tbGc6aG92ZXIsXG4gIC5pY29uLXhsOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gIH1cbiAgXG4gIC5pY29uLWhlcml0YWdlOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgYm94LXNoYWRvdzogMCAxMnB4IDI0cHggcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkgLyAwLjI1KTtcbiAgfVxuICBcbiAgLmljb24tYmc6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbiAgfVxuICBcbiAgLmljb24tYmctaGVyaXRhZ2U6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgICBib3gtc2hhZG93OiAwIDEycHggMjRweCByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkgLyAwLjMpO1xuICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAxMS4gQUNDRVNTSUJJTElUWSBGRUFUVVJFU1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogU2NyZWVuIHJlYWRlciBvbmx5IGNvbnRlbnQgKi9cbi5zci1vbmx5IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4O1xuICBoZWlnaHQ6IDFweDtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAtMXB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBjbGlwOiByZWN0KDAsIDAsIDAsIDApO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBib3JkZXI6IDA7XG59XG5cbi8qIFNraXAgdG8gY29udGVudCBsaW5rIHN0eWxlcyBtb3ZlZCB0byBoZWFkZXIuY3NzIHRvIGF2b2lkIGR1cGxpY2F0aW9uICovXG5cbi8qIEZvY3VzIHZpc2libGUgaW1wcm92ZW1lbnRzICovXG4uZm9jdXMtdmlzaWJsZTpmb2N1cy12aXNpYmxlIHtcbiAgb3V0bGluZTogMnB4IHNvbGlkIHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG4gIG91dGxpbmUtb2Zmc2V0OiAycHg7XG59XG5cbi8qIEFjY2Vzc2liaWxpdHkgYW5kIHJlZHVjZWQgbW90aW9uIHN1cHBvcnQgKi9cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gIC5pY29uLXh4cyxcbiAgLmljb24teHMsXG4gIC5pY29uLXNtLFxuICAuaWNvbi1iYXNlLFxuICAuaWNvbi1tZCxcbiAgLmljb24tbGcsXG4gIC5pY29uLXhsLFxuICAuaWNvbi1iZyB7XG4gICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgfVxuICBcbiAgLmljb24teHhzOmhvdmVyLFxuICAuaWNvbi14czpob3ZlcixcbiAgLmljb24tc206aG92ZXIsXG4gIC5pY29uLWJhc2U6aG92ZXIsXG4gIC5pY29uLW1kOmhvdmVyLFxuICAuaWNvbi1sZzpob3ZlcixcbiAgLmljb24teGw6aG92ZXIsXG4gIC5pY29uLWhlcml0YWdlOmhvdmVyLFxuICAuaWNvbi1iZzpob3ZlcixcbiAgLmljb24tYmctaGVyaXRhZ2U6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxufVxuXG4vKiBIaWdoIGNvbnRyYXN0IG1vZGUgc3VwcG9ydCAqL1xuQG1lZGlhIChwcmVmZXJzLWNvbnRyYXN0OiBoaWdoKSB7XG4gIC5pY29uLXByaW1hcnksXG4gIC5pY29uLWhlcml0YWdlLFxuICAuaWNvbi1zdWNjZXNzLFxuICAuaWNvbi13YXJuaW5nIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItYmFja2dyb3VuZCkpO1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgfVxuICBcbiAgLmljb24tbXV0ZWQge1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIHJnYih2YXIoLS1jb2xvci1tdXRlZC1mb3JlZ3JvdW5kKSk7XG4gIH1cbiAgXG4gIC5pY29uLW91dGxpbmUge1xuICAgIGJvcmRlci13aWR0aDogMnB4O1xuICB9XG4gIFxuICAuaWNvbi1iZy1wcmltYXJ5LFxuICAuaWNvbi1iZy1oZXJpdGFnZSxcbiAgLmljb24tYmctc3VjY2VzcyxcbiAgLmljb24tYmctd2FybmluZyB7XG4gICAgYm9yZGVyOiAycHggc29saWQgY3VycmVudENvbG9yO1xuICB9XG59XG5cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogICBQV0EgU0NST0xMIEFOSU1BVElPTiBTWVNURU0gLSBTSU5HTEUgU09VUkNFIE9GIFRSVVRIXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogXG4gKiBJTVBPUlRBTlQ6IFRoaXMgY29kZWJhc2UgdXNlcyBPTkUgb3B0aW1pemVkIFBXQSBhbmltYXRpb24gc3lzdGVtOlxuICogXG4gKiBQV0EgU0NST0xMIFNZU1RFTSAoVVNFIFRISVMpOiAucHdhLXNjcm9sbC0qIGNsYXNzZXNcbiAqICAgIC0gSGlnaC1wZXJmb3JtYW5jZSA2MGZwcyBhbmltYXRpb25zIHdpdGggR1BVIGFjY2VsZXJhdGlvblxuICogICAgLSBIYXJkd2FyZSBhY2NlbGVyYXRlZCB3aXRoIHRyYW5zbGF0ZVooMCkgYW5kIHdpbGwtY2hhbmdlXG4gKiAgICAtIE11bHRpcGxlIGFuaW1hdGlvbiB0eXBlczogZmFkZSwgc2xpZGUtbGVmdCwgc2xpZGUtcmlnaHQsIHNjYWxlXG4gKiAgICAtIFVzZXMgJ2FjdGl2ZScgY2xhc3MgdHJpZ2dlciBmb3IgcmVsaWFibGUgY3Jvc3MtYnJvd3NlciBwZXJmb3JtYW5jZVxuICogICAgLSBSZXF1aXJlZCBmb3IgQUxMIGNvbXBvbmVudHMgcGVyIFBXQSBwZXJmb3JtYW5jZSBzdGFuZGFyZHNcbiAqIFxuICogQU5JTUFUSU9OIFRZUEVTIEFWQUlMQUJMRTpcbiAqIC0gLnB3YS1zY3JvbGwtc2VjdGlvbjogU2VjdGlvbiBjb250YWluZXIgKGZvciBhcHAtbGlrZSBiZWhhdmlvcilcbiAqIC0gLnB3YS1zY3JvbGwtZmFkZTogU3RhbmRhcmQgZmFkZS1pbiBhbmltYXRpb25cbiAqIC0gLnB3YS1zY3JvbGwtc2xpZGUtbGVmdDogU2xpZGUgaW4gZnJvbSBsZWZ0XG4gKiAtIC5wd2Etc2Nyb2xsLXNsaWRlLXJpZ2h0OiBTbGlkZSBpbiBmcm9tIHJpZ2h0ICBcbiAqIC0gLnB3YS1zY3JvbGwtc2NhbGU6IFNjYWxlLWluIGFuaW1hdGlvblxuICogXG4gKiBUUklHR0VSOiBBbGwgYW5pbWF0aW9ucyBhY3RpdmF0ZSB3aXRoIC5hY3RpdmUgY2xhc3MgYWRkaXRpb25cbiAqL1xuXG4vKiBQV0EgU2Nyb2xsIENvbnRhaW5lciAtIEFwcC1saWtlIGJlaGF2aW9yICovXG4ucHdhLXNjcm9sbC1jb250YWluZXIge1xuICBzY3JvbGwtc25hcC10eXBlOiB5IG1hbmRhdG9yeTtcbiAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbjtcbiAgd2lsbC1jaGFuZ2U6IHNjcm9sbC1wb3NpdGlvbjtcbiAgY29udGFpbjogbGF5b3V0IHN0eWxlIHBhaW50O1xufVxuXG4vKiBQV0EgU2Nyb2xsIFNlY3Rpb25zIC0gNjBmcHMgb3B0aW1pemVkIGZvciBzZWN0aW9uIGNvbnRhaW5lcnMgKi9cbi5wd2Etc2Nyb2xsLXNlY3Rpb24ge1xuICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQ7XG4gIHNjcm9sbC1zbmFwLXN0b3A6IG5vcm1hbDtcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybSwgb3BhY2l0eTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOyAvKiBHUFUgYWNjZWxlcmF0aW9uICovXG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgcGVyc3BlY3RpdmU6IDEwMDBweDtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICAgUFdBIE9QVElNSVpFRCBBTklNQVRJT04gQ0xBU1NFUyAtIEhJR0ggUEVSRk9STUFOQ0UgNjBGUFNcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiBDUklUSUNBTDogUmVxdWlyZWQgZm9yIEFMTCBjb21wb25lbnRzIHBlciBQV0EgcGVyZm9ybWFuY2Ugc3RhbmRhcmRzICovXG5cbi8qIFBXQSBGYWRlIEFuaW1hdGlvbiAtIFN0YW5kYXJkIGZhZGUtaW4gZnJvbSBib3R0b20gKi9cbi5wd2Etc2Nyb2xsLWZhZGUge1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCkgdHJhbnNsYXRlWigwKTtcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybSwgb3BhY2l0eTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzaW5nLXNtb290aCksXG4gICAgICAgICAgICAgIHRyYW5zZm9ybSB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzaW5nLXNtb290aCk7XG4gIHRyYW5zaXRpb24tZGVsYXk6IGNhbGModmFyKC0tc3RhZ2dlci1pbmRleCwgMCkgKiB2YXIoLS1wd2Etc3RhZ2dlci1kZWxheSwgMTAwbXMpKTtcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICBjb250YWluOiBsYXlvdXQgc3R5bGU7XG59XG5cbi5wd2Etc2Nyb2xsLWZhZGUuYWN0aXZlIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHRyYW5zbGF0ZVooMCk7XG59XG5cbi5wd2Etc2Nyb2xsLXNsaWRlLWxlZnQge1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTMwcHgpIHRyYW5zbGF0ZVooMCk7XG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm0sIG9wYWNpdHk7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2luZy1zbW9vdGgpLFxuICAgICAgICAgICAgICB0cmFuc2Zvcm0gdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2luZy1zbW9vdGgpO1xuICB0cmFuc2l0aW9uLWRlbGF5OiBjYWxjKHZhcigtLXN0YWdnZXItaW5kZXgsIDApICogdmFyKC0tcHdhLXN0YWdnZXItZGVsYXksIDEwMG1zKSk7XG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgY29udGFpbjogbGF5b3V0IHN0eWxlO1xufVxuXG4ucHdhLXNjcm9sbC1zbGlkZS1sZWZ0LmFjdGl2ZSB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSB0cmFuc2xhdGVaKDApO1xufVxuXG4ucHdhLXNjcm9sbC1zbGlkZS1yaWdodCB7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgzMHB4KSB0cmFuc2xhdGVaKDApO1xuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtLCBvcGFjaXR5O1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNpbmctc21vb3RoKSxcbiAgICAgICAgICAgICAgdHJhbnNmb3JtIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNpbmctc21vb3RoKTtcbiAgdHJhbnNpdGlvbi1kZWxheTogY2FsYyh2YXIoLS1zdGFnZ2VyLWluZGV4LCAwKSAqIHZhcigtLXB3YS1zdGFnZ2VyLWRlbGF5LCAxMDBtcykpO1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gIGNvbnRhaW46IGxheW91dCBzdHlsZTtcbn1cblxuLnB3YS1zY3JvbGwtc2xpZGUtcmlnaHQuYWN0aXZlIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApIHRyYW5zbGF0ZVooMCk7XG59XG5cbi5wd2Etc2Nyb2xsLXNjYWxlIHtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjkpIHRyYW5zbGF0ZVooMCk7XG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm0sIG9wYWNpdHk7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tdGltaW5nLW5vcm1hbCkgdmFyKC0tZWFzaW5nLXNtb290aCksXG4gICAgICAgICAgICAgIHRyYW5zZm9ybSB2YXIoLS10aW1pbmctbm9ybWFsKSB2YXIoLS1lYXNpbmctc21vb3RoKTtcbiAgdHJhbnNpdGlvbi1kZWxheTogY2FsYyh2YXIoLS1zdGFnZ2VyLWluZGV4LCAwKSAqIHZhcigtLXB3YS1zdGFnZ2VyLWRlbGF5LCAxMDBtcykpO1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gIGNvbnRhaW46IGxheW91dCBzdHlsZTtcbn1cblxuLnB3YS1zY3JvbGwtc2NhbGUuYWN0aXZlIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxKSB0cmFuc2xhdGVaKDApO1xufVxuXG4vKiBQV0EgU3RhZ2dlciBTeXN0ZW0gLSBFbmhhbmNlZCB3aXRoIHBlcmZvcm1hbmNlIGlzb2xhdGlvbiBmb3IgZWxlbWVudCBzZXF1ZW5jaW5nICovXG4ucHdhLXNjcm9sbC1zdGFnZ2VyIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogY2FsYyh2YXIoLS1zdGFnZ2VyLWluZGV4LCAwKSAqIHZhcigtLXB3YS1zdGFnZ2VyLWRlbGF5LCAxMDBtcykpO1xuICBjb250YWluOiBsYXlvdXQ7XG59XG5cblxuLyogQ2xlYW4gdXAgd2lsbC1jaGFuZ2UgYWZ0ZXIgYW5pbWF0aW9ucyBjb21wbGV0ZSAqL1xuLnB3YS1zY3JvbGwtZmFkZS5hY3RpdmUsXG4ucHdhLXNjcm9sbC1zbGlkZS1sZWZ0LmFjdGl2ZSxcbi5wd2Etc2Nyb2xsLXNsaWRlLXJpZ2h0LmFjdGl2ZSxcbi5wd2Etc2Nyb2xsLXNjYWxlLmFjdGl2ZSB7XG4gIHdpbGwtY2hhbmdlOiBhdXRvO1xufVxuXG4vKiBQV0EgQWNjZXNzaWJpbGl0eSBTdXBwb3J0IC0gUmVzcGVjdCByZWR1Y2VkIG1vdGlvbiBwcmVmZXJlbmNlcyAqL1xuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLyogRGlzYWJsZSBhbGwgUFdBIHNjcm9sbCBhbmltYXRpb25zIHdoaWxlIHByZXNlcnZpbmcgZnVuY3Rpb25hbGl0eSAqL1xuICAucHdhLXNjcm9sbC1mYWRlLFxuICAucHdhLXNjcm9sbC1zbGlkZS1sZWZ0LFxuICAucHdhLXNjcm9sbC1zbGlkZS1yaWdodCxcbiAgLnB3YS1zY3JvbGwtc2NhbGUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgd2lsbC1jaGFuZ2U6IGF1dG87XG4gIH1cbiAgXG4gIC5wd2Etc2Nyb2xsLWZhZGUuYWN0aXZlLFxuICAucHdhLXNjcm9sbC1zbGlkZS1sZWZ0LmFjdGl2ZSxcbiAgLnB3YS1zY3JvbGwtc2xpZGUtcmlnaHQuYWN0aXZlLFxuICAucHdhLXNjcm9sbC1zY2FsZS5hY3RpdmUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG4gIFxuICAvKiBEaXNhYmxlIFBXQSBwZXJmb3JtYW5jZSBmZWF0dXJlcyBmb3IgYWNjZXNzaWJpbGl0eSAqL1xuICAucHdhLXNjcm9sbC1jb250YWluZXIsXG4gIC5wd2Etc2Nyb2xsLXNlY3Rpb24ge1xuICAgIHNjcm9sbC1zbmFwLXR5cGU6IG5vbmU7XG4gICAgd2lsbC1jaGFuZ2U6IGF1dG87XG4gIH1cbn1cblxuXG5cblxuLyogTG9hZGluZyBzdGF0ZXMgKi9cbi5za2VsZXRvbiB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChcbiAgICA5MGRlZyxcbiAgICByZ2IodmFyKC0tY29sb3ItbXV0ZWQpKSAyNSUsXG4gICAgcmdiKHZhcigtLWNvbG9yLW11dGVkKSAvIDAuNSkgNTAlLFxuICAgIHJnYih2YXIoLS1jb2xvci1tdXRlZCkpIDc1JVxuICApO1xuICBiYWNrZ3JvdW5kLXNpemU6IDIwMCUgMTAwJTtcbiAgYW5pbWF0aW9uOiBza2VsZXRvbi1sb2FkaW5nIDEuNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG59XG5cbkBrZXlmcmFtZXMgc2tlbGV0b24tbG9hZGluZyB7XG4gIDAlIHtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAyMDAlIDA7XG4gIH1cbiAgMTAwJSB7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTIwMCUgMDtcbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgMTMuIERBVEEgVklTVUFMSVpBVElPTiBGT1VOREFUSU9OU1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogQ2hhcnQgY29sb3Igc2VxdWVuY2VzICovXG4uY2hhcnQtY29sb3ItMSB7IGNvbG9yOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpOyB9XG4uY2hhcnQtY29sb3ItMiB7IGNvbG9yOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSk7IH1cbi5jaGFydC1jb2xvci0zIHsgY29sb3I6IHJnYih2YXIoLS1jb2xvci1zZWNvbmRhcnkpKTsgfVxuLmNoYXJ0LWNvbG9yLTQgeyBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXN1Y2Nlc3MpKTsgfVxuLmNoYXJ0LWNvbG9yLTUgeyBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXdhcm5pbmcpKTsgfVxuLmNoYXJ0LWNvbG9yLTYgeyBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWluZm8pKTsgfVxuXG4uY2hhcnQtYmctMSB7IGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7IH1cbi5jaGFydC1iZy0yIHsgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpOyB9XG4uY2hhcnQtYmctMyB7IGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1jb2xvci1zZWNvbmRhcnkpKTsgfVxuLmNoYXJ0LWJnLTQgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tY29sb3Itc3VjY2VzcykpOyB9XG4uY2hhcnQtYmctNSB7IGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1jb2xvci13YXJuaW5nKSk7IH1cbi5jaGFydC1iZy02IHsgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLWluZm8pKTsgfVxuXG4vKiBEYXRhIHRhYmxlIHN0eWxlcyAtIEVuaGFuY2VkICovXG4udGFibGUge1xuICB3aWR0aDogMTAwJTtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbn1cblxuLnRhYmxlIHRoIHtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0zKTtcbiAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHJnYih2YXIoLS1jb2xvci1ib3JkZXIpKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLW11dGVkKSAvIDAuMyk7XG59XG5cbi50YWJsZSB0ZCB7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTMpO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiKHZhcigtLWNvbG9yLWJvcmRlcikpO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDIwMG1zIGVhc2U7XG59XG5cbi50YWJsZSB0ciB7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMjAwbXMgZWFzZTtcbn1cblxuLnRhYmxlIHRib2R5IHRyOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLW11dGVkKSAvIDAuNSk7XG59XG5cbi8qIFplYnJhIHN0cmlwaW5nICovXG4udGFibGUtemVicmEgdGJvZHkgdHI6bnRoLWNoaWxkKGV2ZW4pIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLW11dGVkKSAvIDAuMik7XG59XG5cbi50YWJsZS16ZWJyYSB0Ym9keSB0cjpudGgtY2hpbGQoZXZlbik6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQpIC8gMC42KTtcbn1cblxuLyogUmVzcG9uc2l2ZSB0YWJsZSB3cmFwcGVyICovXG4udGFibGUtcmVzcG9uc2l2ZSB7XG4gIG92ZXJmbG93LXg6IGF1dG87XG4gIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbn1cblxuLyogTWV0cmljIGRpc3BsYXkgY2xhc3NlcyAqL1xuLm1ldHJpYyB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi5tZXRyaWMtdmFsdWUge1xuICBmb250LXNpemU6IDIuNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkpO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0yKTtcbn1cblxuLyogSGVyaXRhZ2UgbWV0cmljIC0gZm9sbG93cyAxMCUgcnVsZSAqL1xuLm1ldHJpYy12YWx1ZS5tZXRyaWMtaGVyaXRhZ2Uge1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpO1xuICBmb250LXdlaWdodDogNjAwOyAvKiBSZXF1aXJlZCBmb3IgcmVkIHRleHQgKi9cbn1cblxuLm1ldHJpYy1sYWJlbCB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQtZm9yZWdyb3VuZCkpO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xufVxuXG4vKiBTdWNjZXNzIG1ldHJpY3MgY29udGFpbmVyICovXG4uc3VjY2Vzcy1tZXRyaWNzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBnYXA6IHZhcigtLXNwYWNlLTQpO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS00KTtcbn1cblxuLnN1Y2Nlc3MtbWV0cmljcyBzcGFuIHtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMikgdmFyKC0tc3BhY2UtMyk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xufVxuXG4vKiBTdWNjZXNzIG1ldHJpYyB2YXJpYW50cyAqL1xuLm1ldHJpYy1hY2NlbnQtaGVyaXRhZ2Uge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkgLyAwLjEpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpO1xufVxuXG4ubWV0cmljLXN1Y2Nlc3Mge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWNvbG9yLXN1Y2Nlc3MpIC8gMC4xKTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1zdWNjZXNzKSk7XG59XG5cbi5tZXRyaWMtc2Vjb25kYXJ5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1jb2xvci1zZWNvbmRhcnkpIC8gMC4xKTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1zZWNvbmRhcnkpKTtcbn1cblxuLm1ldHJpYy13YXJuaW5nIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1jb2xvci13YXJuaW5nKSAvIDAuMSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3Itd2FybmluZykpO1xufVxuXG4vKiBTdGVwIG51bWJlciBzdHlsaW5nIGZvciBwcm9jZXNzIGZsb3dzICovXG4uc3RlcC1udW1iZXIge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHdpZHRoOiB2YXIoLS1zcGFjZS0xNik7XG4gIGhlaWdodDogdmFyKC0tc3BhY2UtMTYpO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ib2xkKTtcbiAgZm9udC1zaXplOiAxLjI1cmVtO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbn1cblxuLnN0ZXAtbnVtYmVyLWhlcml0YWdlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpO1xuICBjb2xvcjogd2hpdGU7XG4gIC8qIEV4dHJhIHNwYWNpbmcgZm9yIGhlcml0YWdlIHJlZCAoMjUtMzUlIG1vcmUpICovXG4gIG1hcmdpbi1ib3R0b206IGNhbGModmFyKC0tc3BhY2UtNCkgKiAxLjMpO1xufVxuXG4uc3RlcC1udW1iZXItc2Vjb25kYXJ5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLXNlY29uZGFyeSkpO1xuICBjb2xvcjogd2hpdGU7XG59XG5cbi5zdGVwLW51bWJlci13YXJuaW5nIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLXdhcm5pbmcpKTtcbiAgY29sb3I6IHdoaXRlO1xufVxuXG4uc3RlcC1udW1iZXItc3VjY2VzcyB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1jb2xvci1zdWNjZXNzKSk7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cblxuLyogRGF0YSB2aXN1YWxpemF0aW9uIGhlbHBlcnMgKi9cbi5kYXRhLWNhcmQge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItYmFja2dyb3VuZCkpO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2IodmFyKC0tY29sb3ItYm9yZGVyKSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTYpO1xuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctc20pO1xuICB0cmFuc2l0aW9uOiBhbGwgMjAwbXMgZWFzZTtcbn1cblxuLmRhdGEtY2FyZDpob3ZlciB7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1tZCk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbn1cblxuLmRhdGEtZ3JpZCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdhcDogdmFyKC0tc3BhY2UtNCk7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjAwcHgsIDFmcikpO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmRhdGEtZ3JpZCB7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS02KTtcbiAgfVxufVxuXG4vKiBEYXRhIGhpZ2hsaWdodCBmb3IgaW1wb3J0YW50IHZhbHVlcyAqL1xuLmRhdGEtaGlnaGxpZ2h0IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnktNzAwKSk7XG4gIHBhZGRpbmc6IDAgdmFyKC0tc3BhY2UtMSk7XG59XG5cbi5kYXRhLWhpZ2hsaWdodDo6YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBoZWlnaHQ6IDJweDtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLXByaW1hcnktMzAwKSk7XG4gIG9wYWNpdHk6IDAuNTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDE0LiBNT0JJTEUtRklSU1QgQU5JTUFUSU9OUyAmIFRPVUNIIEZFRURCQUNLXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBUb3VjaCBGZWVkYmFjayBCYXNlICovXG4udG91Y2gtc2NhbGUge1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tZHVyYXRpb24taW5zdGFudCkgZWFzZS1vdXQ7XG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi50b3VjaC1zY2FsZTphY3RpdmUge1xuICB0cmFuc2Zvcm06IHNjYWxlKDAuOTUpO1xufVxuXG4vKiBNYXRlcmlhbCBEZXNpZ24gUmlwcGxlIEVmZmVjdCAqL1xuLnRvdWNoLXJpcHBsZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLnRvdWNoLXJpcHBsZTo6YmVmb3JlIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgd2lkdGg6IDA7XG4gIGhlaWdodDogMDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICB0cmFuc2l0aW9uOiB3aWR0aCB2YXIoLS1kdXJhdGlvbi1ub3JtYWwpIGVhc2Utb3V0LFxuICAgICAgICAgICAgICBoZWlnaHQgdmFyKC0tZHVyYXRpb24tbm9ybWFsKSBlYXNlLW91dDtcbn1cblxuLnRvdWNoLXJpcHBsZTphY3RpdmU6OmJlZm9yZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cblxuLyogTW9iaWxlIFBhZ2UgVHJhbnNpdGlvbnMgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAucGFnZS1lbnRlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgXG4gIC5wYWdlLWVudGVyLWFjdGl2ZSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLWR1cmF0aW9uLXNsb3cpIGVhc2Utb3V0LFxuICAgICAgICAgICAgICAgIG9wYWNpdHkgdmFyKC0tZHVyYXRpb24tc2xvdykgZWFzZS1vdXQ7XG4gIH1cbiAgXG4gIC5wYWdlLWV4aXQge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIFxuICAucGFnZS1leGl0LWFjdGl2ZSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0zMCUpO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLWR1cmF0aW9uLXNsb3cpIGVhc2UtaW4sXG4gICAgICAgICAgICAgICAgb3BhY2l0eSB2YXIoLS1kdXJhdGlvbi1zbG93KSBlYXNlLWluO1xuICB9XG59XG5cbi8qIE1vYmlsZSBTY3JvbGwgT3B0aW1pemF0aW9ucyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5zY3JvbGwtcmV2ZWFsIHtcbiAgICAtLXNjcm9sbC1yZXZlYWwtZGlzdGFuY2U6IDEwcHg7IC8qIFJlZHVjZWQgZGlzdGFuY2Ugb24gbW9iaWxlICovXG4gIH1cbiAgXG4gIC8qIERpc2FibGUgcGFyYWxsYXggb24gbW9iaWxlIGZvciBwZXJmb3JtYW5jZSAqL1xuICAucGFyYWxsYXgge1xuICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbi8qIERlc2t0b3AgQW5pbWF0aW9uIEVuaGFuY2VtZW50cyAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDEyODBweCkge1xuICA6cm9vdCB7XG4gICAgLyogVXNlIGRlc2t0b3AgdGltaW5nICovXG4gICAgLS1kdXJhdGlvbi1pbnN0YW50OiB2YXIoLS1kdXJhdGlvbi1pbnN0YW50LWRlc2t0b3ApO1xuICAgIC0tZHVyYXRpb24tZmFzdDogdmFyKC0tZHVyYXRpb24tZmFzdC1kZXNrdG9wKTtcbiAgICAtLWR1cmF0aW9uLW5vcm1hbDogdmFyKC0tZHVyYXRpb24tbm9ybWFsLWRlc2t0b3ApO1xuICAgIC0tZHVyYXRpb24tc2xvdzogdmFyKC0tZHVyYXRpb24tc2xvdy1kZXNrdG9wKTtcbiAgICAtLWR1cmF0aW9uLXNsb3dlcjogdmFyKC0tZHVyYXRpb24tc2xvd2VyLWRlc2t0b3ApO1xuICB9XG4gIFxuICAvKiBFbmhhbmNlZCBzY3JvbGwgcmV2ZWFscyBvbiBkZXNrdG9wICovXG4gIC5zY3JvbGwtcmV2ZWFsIHtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLWR1cmF0aW9uLXNsb3cpIHZhcigtLWVhc2luZy1leHBvKSxcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm0gdmFyKC0tZHVyYXRpb24tc2xvdykgdmFyKC0tZWFzaW5nLWV4cG8pO1xuICB9XG4gIFxuICAvKiBTdGFnZ2VyZWQgYW5pbWF0aW9ucyBvbiBkZXNrdG9wIG9ubHkgKi9cbiAgLnNjcm9sbC1yZXZlYWw6bnRoLWNoaWxkKDEpIHsgdHJhbnNpdGlvbi1kZWxheTogMG1zOyB9XG4gIC5zY3JvbGwtcmV2ZWFsOm50aC1jaGlsZCgyKSB7IHRyYW5zaXRpb24tZGVsYXk6IDc1bXM7IH1cbiAgLnNjcm9sbC1yZXZlYWw6bnRoLWNoaWxkKDMpIHsgdHJhbnNpdGlvbi1kZWxheTogMTUwbXM7IH1cbiAgLnNjcm9sbC1yZXZlYWw6bnRoLWNoaWxkKDQpIHsgdHJhbnNpdGlvbi1kZWxheTogMjI1bXM7IH1cbiAgLnNjcm9sbC1yZXZlYWw6bnRoLWNoaWxkKDUpIHsgdHJhbnNpdGlvbi1kZWxheTogMzAwbXM7IH1cbn1cblxuLyogVG91Y2ggdnMgSG92ZXIgRGV0ZWN0aW9uICovXG5AbWVkaWEgKGhvdmVyOiBub25lKSB7XG4gIC8qIFRvdWNoIGRldmljZXMgKi9cbiAgLmludGVyYWN0aXZlOmFjdGl2ZSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjk2KTtcbiAgICBvcGFjaXR5OiAwLjk7XG4gIH1cbn1cblxuQG1lZGlhIChob3ZlcjogaG92ZXIpIGFuZCAocG9pbnRlcjogZmluZSkge1xuICAvKiBEZXZpY2VzIHdpdGggcHJlY2lzZSBwb2ludGVycyAqL1xuICAuaW50ZXJhY3RpdmUge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAyMDBtcyBlYXNlLW91dCxcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93IDIwMG1zIGVhc2Utb3V0O1xuICB9XG4gIFxuICAuaW50ZXJhY3RpdmU6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbWQpO1xuICB9XG59XG5cbi8qIFJlZHVjZWQgTW90aW9uIFN1cHBvcnQgKi9cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gIDpyb290IHtcbiAgICAtLWR1cmF0aW9uLWluc3RhbnQ6IDBtcztcbiAgICAtLWR1cmF0aW9uLWZhc3Q6IDBtcztcbiAgICAtLWR1cmF0aW9uLW5vcm1hbDogMG1zO1xuICAgIC0tZHVyYXRpb24tc2xvdzogMG1zO1xuICAgIC0tZHVyYXRpb24tc2xvd2VyOiAwbXM7XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDE1LiBEQUlTWVVJIFRIRU1FIENPTkZJR1VSQVRJT05cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIEFwcGx5IGJvdW5kbGVzcyB0aGVtZSBmcm9tIHRhaWx3aW5kLmNvbmZpZy5qcyAqL1xuW2RhdGEtdGhlbWU9XCJib3VuZGxlc3NcIl0ge1xuICBjb2xvci1zY2hlbWU6IGxpZ2h0O1xufVxuXG4vKiBNb2JpbGUtRmlyc3QgTWVkaWEgUXVlcmllcyBmb3IgVHlwb2dyYXBoeSAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIDpyb290IHtcbiAgICAvKiBVc2UgbW9iaWxlIGZvbnQgd2VpZ2h0cyAqL1xuICAgIC0tZm9udC13ZWlnaHQtaGVybzogdmFyKC0tZm9udC13ZWlnaHQtaGVyby1tb2JpbGUpO1xuICAgIC0tZm9udC13ZWlnaHQtaGVhZGluZzogdmFyKC0tZm9udC13ZWlnaHQtaGVhZGluZy1tb2JpbGUpO1xuICAgIC0tZm9udC13ZWlnaHQtYm9sZDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZC1tb2JpbGUpO1xuICAgIC0tZm9udC13ZWlnaHQtaGVyaXRhZ2U6IHZhcigtLWZvbnQtd2VpZ2h0LWhlcml0YWdlLW1vYmlsZSk7XG4gICAgXG4gICAgLyogTW9iaWxlIGxpbmUgaGVpZ2h0cyAqL1xuICAgIC0tbGluZS1oZWlnaHQtdGlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXRpZ2h0LW1vYmlsZSk7XG4gICAgLS1saW5lLWhlaWdodC1ub3JtYWw6IHZhcigtLWxpbmUtaGVpZ2h0LWJhc2UtbW9iaWxlKTtcbiAgICAtLWxpbmUtaGVpZ2h0LWxvb3NlOiB2YXIoLS1saW5lLWhlaWdodC1sb29zZS1tb2JpbGUpO1xuICB9XG4gIFxuICAvKiBBZGp1c3QgaGVybyB0eXBvZ3JhcGh5IGZvciBtb2JpbGUgKi9cbiAgLnRpdGxlLWhlcm8ge1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1oZXJvLW1vYmlsZSk7XG4gIH1cbiAgXG4gIC50aXRsZS1zZWN0aW9uLFxuICAudGl0bGUtZGlzcGxheSB7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWhlYWRpbmctbW9iaWxlKTtcbiAgfVxuICBcbiAgLyogTWluaW11bSAxNnB4IGZvciBhbGwgdGV4dCBvbiBtb2JpbGUgKi9cbiAgLmRlc2NyaXB0aW9uLFxuICAudGV4dC1zbSB7XG4gICAgZm9udC1zaXplOiBtYXgodmFyKC0tZm9udC1zaXplLWJhc2UpLCAxNnB4KTtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTI4MHB4KSB7XG4gIDpyb290IHtcbiAgICAvKiBVc2UgZGVza3RvcCBmb250IHdlaWdodHMgKi9cbiAgICAtLWZvbnQtd2VpZ2h0LWhlcm86IHZhcigtLWZvbnQtd2VpZ2h0LWhlcm8tZGVza3RvcCk7XG4gICAgLS1mb250LXdlaWdodC1oZWFkaW5nOiB2YXIoLS1mb250LXdlaWdodC1oZWFkaW5nLWRlc2t0b3ApO1xuICAgIC0tZm9udC13ZWlnaHQtYm9sZDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZC1kZXNrdG9wKTtcbiAgICAtLWZvbnQtd2VpZ2h0LWhlcml0YWdlOiB2YXIoLS1mb250LXdlaWdodC1oZXJpdGFnZS1kZXNrdG9wKTtcbiAgfVxuICBcbiAgLyogUmVmaW5lZCBkZXNrdG9wIHR5cG9ncmFwaHkgKi9cbiAgLnRpdGxlLWhlcm8ge1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1oZXJvLWRlc2t0b3ApO1xuICB9XG4gIFxuICAudGl0bGUtc2VjdGlvbixcbiAgLnRpdGxlLWRpc3BsYXkge1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1oZWFkaW5nLWRlc2t0b3ApO1xuICB9XG59XG5cbi8qIERhaXN5VUkgY29tcG9uZW50IG92ZXJyaWRlcyBmb3IgYnJhbmQgY29uc2lzdGVuY3kgKi9cbi5kYWlzeS1wcmltYXJ5IHtcbiAgLS1wcmltYXJ5OiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xuICAtLXByaW1hcnktY29udGVudDogcmdiKHZhcigtLWNvbG9yLXByaW1hcnktZm9yZWdyb3VuZCkpO1xufVxuXG4uZGFpc3ktc2Vjb25kYXJ5IHtcbiAgLS1zZWNvbmRhcnk6IHJnYih2YXIoLS1jb2xvci1zZWNvbmRhcnkpKTtcbiAgLS1zZWNvbmRhcnktY29udGVudDogcmdiKHZhcigtLWNvbG9yLXNlY29uZGFyeS1mb3JlZ3JvdW5kKSk7XG59XG5cbi5kYWlzeS1hY2NlbnQge1xuICAtLWFjY2VudDogcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpO1xuICAtLWFjY2VudC1jb250ZW50OiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlLWZvcmVncm91bmQpKTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDE1LiBNT0JJTEUgUEVSRk9STUFOQ0UgT1BUSU1JWkFUSU9OU1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogQ1NTIENvbnRhaW5tZW50IGZvciBwZXJmb3JtYW5jZSAqL1xuLmNvbnRhaW4tbGF5b3V0IHtcbiAgY29udGFpbjogbGF5b3V0O1xufVxuXG4uY29udGFpbi1zdHlsZSB7XG4gIGNvbnRhaW46IHN0eWxlO1xufVxuXG4uY29udGFpbi1wYWludCB7XG4gIGNvbnRhaW46IHBhaW50O1xufVxuXG4uY29udGFpbi1zdHJpY3Qge1xuICBjb250YWluOiBzdHJpY3Q7XG59XG5cbi8qIFdpbGwtY2hhbmdlIG9wdGltaXphdGlvbiBoaW50cyAqL1xuLndpbGwtY2hhbmdlLXRyYW5zZm9ybSB7XG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XG59XG5cbi53aWxsLWNoYW5nZS1vcGFjaXR5IHtcbiAgd2lsbC1jaGFuZ2U6IG9wYWNpdHk7XG59XG5cbi8qIFJlbW92ZSB3aWxsLWNoYW5nZSBhZnRlciBhbmltYXRpb24gKi9cbi53aWxsLWNoYW5nZS1hdXRvIHtcbiAgd2lsbC1jaGFuZ2U6IGF1dG87XG59XG5cbi8qIEdQVSBhY2NlbGVyYXRpb24gaGludHMgKi9cbi5ncHUtYWNjZWxlcmF0ZWQge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7XG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgcGVyc3BlY3RpdmU6IDEwMDBweDtcbn1cblxuLyogT3B0aW1pemUgaW1hZ2VzIGZvciBtb2JpbGUgKi9cbi5pbWFnZS1yZW5kZXJpbmctYXV0byB7XG4gIGltYWdlLXJlbmRlcmluZzogYXV0bztcbn1cblxuLmltYWdlLXJlbmRlcmluZy1jcmlzcCB7XG4gIGltYWdlLXJlbmRlcmluZzogLXdlYmtpdC1vcHRpbWl6ZS1jb250cmFzdDtcbiAgaW1hZ2UtcmVuZGVyaW5nOiBjcmlzcC1lZGdlcztcbn1cblxuLyogUHJldmVudCBsYXlvdXQgc2hpZnQgKi9cbi5hc3BlY3Qtc3F1YXJlIHtcbiAgYXNwZWN0LXJhdGlvOiAxIC8gMTtcbn1cblxuLmFzcGVjdC12aWRlbyB7XG4gIGFzcGVjdC1yYXRpbzogMTYgLyA5O1xufVxuXG4uYXNwZWN0LTQtMyB7XG4gIGFzcGVjdC1yYXRpbzogNCAvIDM7XG59XG5cbi8qIFBXQSBNb2JpbGUgU2Nyb2xsIEZvdW5kYXRpb24gLSBFbmhhbmNlZCAqL1xuLnNjcm9sbC1zbW9vdGgge1xuICBzY3JvbGwtYmVoYXZpb3I6IHNtb290aDtcbiAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbjtcbiAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAuc2Nyb2xsLXNtb290aCB7XG4gICAgc2Nyb2xsLWJlaGF2aW9yOiBhdXRvO1xuICB9XG59XG5cbi8qIFBXQSBPdmVyc2Nyb2xsIENvbnRyb2wgLSBBcHAtbGlrZSBiZWhhdmlvciAqL1xuLm92ZXJzY3JvbGwtbm9uZSB7XG4gIG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmU7XG4gIG92ZXJzY3JvbGwtYmVoYXZpb3IteDogbm9uZTtcbiAgb3ZlcnNjcm9sbC1iZWhhdmlvci15OiBub25lO1xufVxuXG4ub3ZlcnNjcm9sbC1jb250YWluIHtcbiAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbjtcbiAgb3ZlcnNjcm9sbC1iZWhhdmlvci14OiBjb250YWluO1xuICBvdmVyc2Nyb2xsLWJlaGF2aW9yLXk6IGNvbnRhaW47XG59XG5cbi5vdmVyc2Nyb2xsLWF1dG8ge1xuICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBhdXRvO1xufVxuXG4vKiBQV0EgVG91Y2ggU2Nyb2xsaW5nIC0gNjBmcHMgb3B0aW1pemVkICovXG4udG91Y2gtc2Nyb2xsIHtcbiAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICBzY3JvbGwtc25hcC10eXBlOiB5IHByb3hpbWl0eTtcbiAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbjtcbn1cblxuLyogUFdBIFNjcm9sbCBTbmFwIE5hdmlnYXRpb24gKi9cbi5zY3JvbGwtc25hcC1tYW5kYXRvcnkge1xuICBzY3JvbGwtc25hcC10eXBlOiB5IG1hbmRhdG9yeTtcbn1cblxuLnNjcm9sbC1zbmFwLXByb3hpbWl0eSB7XG4gIHNjcm9sbC1zbmFwLXR5cGU6IHkgcHJveGltaXR5O1xufVxuXG4uc2Nyb2xsLXNuYXAtbm9uZSB7XG4gIHNjcm9sbC1zbmFwLXR5cGU6IG5vbmU7XG59XG5cbi5zY3JvbGwtc25hcC1zdGFydCB7XG4gIHNjcm9sbC1zbmFwLWFsaWduOiBzdGFydDtcbn1cblxuLnNjcm9sbC1zbmFwLWNlbnRlciB7XG4gIHNjcm9sbC1zbmFwLWFsaWduOiBjZW50ZXI7XG59XG5cbi5zY3JvbGwtc25hcC1lbmQge1xuICBzY3JvbGwtc25hcC1hbGlnbjogZW5kO1xufVxuXG4uc2Nyb2xsLXNuYXAtc3RvcCB7XG4gIHNjcm9sbC1zbmFwLXN0b3A6IGFsd2F5cztcbn1cblxuLyogUFdBIFNjcm9sbCBQZXJmb3JtYW5jZSBDbGFzc2VzICovXG4uc2Nyb2xsLWdwdSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTtcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICBwZXJzcGVjdGl2ZTogMTAwMHB4O1xuICB3aWxsLWNoYW5nZTogc2Nyb2xsLXBvc2l0aW9uO1xufVxuXG4uc2Nyb2xsLWNvbnRhaW4ge1xuICBjb250YWluOiBsYXlvdXQgc3R5bGUgcGFpbnQ7XG59XG5cbi5zY3JvbGwtY29udGFpbi1zdHJpY3Qge1xuICBjb250YWluOiBzdHJpY3Q7XG59XG5cbi8qIFBXQS1vcHRpbWl6ZWQgYm9keSBzY3JvbGwgZm9yIGFwcC1saWtlIGV4cGVyaWVuY2UgKi9cbmJvZHkucHdhLWJvZHkge1xuICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluO1xuICBzY3JvbGwtYmVoYXZpb3I6IHNtb290aDtcbiAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICBib2R5LnB3YS1ib2R5IHtcbiAgICBzY3JvbGwtYmVoYXZpb3I6IGF1dG87XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDE2LiBQV0EtUkVBRFkgQ09ORklHVVJBVElPTlNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIFBXQSBJbnN0YWxsIEJhbm5lciAqL1xuLnB3YS1pbnN0YWxsLWJhbm5lciB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbiAgbGVmdDogdmFyKC0tc3BhY2UtNCk7XG4gIHJpZ2h0OiB2YXIoLS1zcGFjZS00KTtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWJhY2tncm91bmQpKTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiKHZhcigtLWNvbG9yLWJvcmRlcikpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KTtcbiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWxnKTtcbiAgei1pbmRleDogdmFyKC0tei10b2FzdCk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMjAlKTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLWR1cmF0aW9uLXNsb3cpIHZhcigtLWVhc2luZy1zbW9vdGgpO1xufVxuXG4ucHdhLWluc3RhbGwtYmFubmVyLnZpc2libGUge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG59XG5cbi8qIE9mZmxpbmUgaW5kaWNhdG9yICovXG4ub2ZmbGluZS1pbmRpY2F0b3Ige1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci13YXJuaW5nKSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3Itd2FybmluZy1mb3JlZ3JvdW5kKSk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgei1pbmRleDogdmFyKC0tei1hbGVydCk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS1kdXJhdGlvbi1ub3JtYWwpIHZhcigtLWVhc2luZy1zbW9vdGgpO1xufVxuXG4ub2ZmbGluZS1pbmRpY2F0b3IudmlzaWJsZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbn1cblxuLyogVXBkYXRlIGF2YWlsYWJsZSBub3RpZmljYXRpb24gKi9cbi51cGRhdGUtbm90aWZpY2F0aW9uIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IHZhcigtLXNwYWNlLTQpO1xuICByaWdodDogdmFyKC0tc3BhY2UtNCk7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1pbmZvKSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItaW5mby1mb3JlZ3JvdW5kKSk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTMpIHZhcigtLXNwYWNlLTQpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGcpO1xuICB6LWluZGV4OiB2YXIoLS16LXRvYXN0KTtcbiAgbWF4LXdpZHRoOiAzMjBweDtcbn1cblxuLyogTG9hZGluZyBzcGxhc2ggc2NyZWVuICovXG4ucHdhLXNwbGFzaCB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgaW5zZXQ6IDA7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB6LWluZGV4OiB2YXIoLS16LWxvYWRlcik7XG59XG5cbi8qIE1vYmlsZSBhcHAtbGlrZSB0cmFuc2l0aW9ucyAqL1xuLmFwcC10cmFuc2l0aW9uLWVudGVyIHtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjkpO1xufVxuXG4uYXBwLXRyYW5zaXRpb24tZW50ZXItYWN0aXZlIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS1kdXJhdGlvbi1ub3JtYWwpIGVhc2Utb3V0LFxuICAgICAgICAgICAgICB0cmFuc2Zvcm0gdmFyKC0tZHVyYXRpb24tbm9ybWFsKSBlYXNlLW91dDtcbn1cblxuLmFwcC10cmFuc2l0aW9uLWV4aXQge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xufVxuXG4uYXBwLXRyYW5zaXRpb24tZXhpdC1hY3RpdmUge1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tZHVyYXRpb24tbm9ybWFsKSBlYXNlLWluLFxuICAgICAgICAgICAgICB0cmFuc2Zvcm0gdmFyKC0tZHVyYXRpb24tbm9ybWFsKSBlYXNlLWluO1xufVxuXG4vKiBCb3R0b20gbW9iaWxlIG5hdmlnYXRpb24gKFBXQSkgKi9cbi5tb2JpbGUtYm90dG9tLW5hdiB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgaGVpZ2h0OiB2YXIoLS10b3VjaC10YXJnZXQtbGFyZ2UpO1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItYmFja2dyb3VuZCkpO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiKHZhcigtLWNvbG9yLWJvcmRlcikpO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZy1ib3R0b206IHZhcigtLXNhZmUtYXJlYS1ib3R0b20pO1xuICB6LWluZGV4OiB2YXIoLS16LXN0aWNreSk7XG59XG5cbi8qIFBXQSBTdGF0dXMgYmFyIHRoZW1pbmcgKi9cbkBtZWRpYSAoZGlzcGxheS1tb2RlOiBzdGFuZGFsb25lKSB7XG4gIC5wd2Etc3RhdHVzLXBhZGRpbmcge1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zYWZlLWFyZWEtdG9wKTtcbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgMTcuIENPTVBPTkVOVCBTVFlMRSBJTVBPUlRTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBDb21wb25lbnQgc3R5bGVzIGFyZSBpbXBvcnRlZCBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZSBhZnRlciBUYWlsd2luZCBhbmQgZm9udHNcbiAgIHRvIGVuc3VyZSBwcm9wZXIgQ1NTIGNhc2NhZGUgb3JkZXIgYW5kIGF2b2lkIFBvc3RDU1MgaW1wb3J0IHdhcm5pbmdzICovIl19 */