/* ==========================================================================
   Erotic Calendar — Design „Velvet Noir“ (2026-10-07)
   DOCUMENTATION/EROTICCALENDAR_PLAN.md § 4

   Geladen NUR für BRAND=eroticcalendar (layout.templ, nach allen Basis-Styles).
   Aufbau: 1. Tokens (die Basis-CSS ist durchgehend tokenisiert — das meiste
   erledigt sich hier), 2. gezielte Overrides, wo die Basis feste Werte für
   hellen Grund hat, 3. Komponenten der Marke (.ec-*).

   NICHT anfassen: die Kalenderfläche und die Türchen (.gbc-calendar-door,
   .gbc-static-door, Container-Hintergründe) — das ist das Druckprodukt,
   die Optik muss zum PrintGenerator passen.

   Kontraste (WCAG 2.x, berechnet): Text/Grund ≈ 16:1, gedämpft/Fläche ≈ 8:1,
   Weiß auf Rubin ≈ 5,8:1, Gold/Grund ≈ 9,6:1, Rubin-Button/Grund ≈ 3,4:1.
   ========================================================================== */

:root {
  --color-primary: #C41E4A;          /* Rubin */
  --color-primary-light: #D9456B;
  --color-primary-dark: #8E1236;
  --color-primary-rgb: 196, 30, 74;
  --color-primary-text: #E8708A;     /* Rubin als Schrift: ≈ 6:1 auf Flächen */

  --color-secondary: #E8B4B8;        /* Puderrosé */
  --color-secondary-light: #F2CDD0;
  --color-secondary-dark: #C98E93;

  --color-accent: #D8B07A;           /* Champagner-Gold */
  --color-accent-light: #E9CB9B;
  --color-accent-dark: #B8894E;
  --ec-gold-rgb: 216, 176, 122;

  --color-success: #6CC497;
  --color-warning: #E5AE55;
  --color-error: #FF7A8C;

  --color-text: #F6EDE8;             /* Porzellan */
  --color-text-rgb: 246, 237, 232;
  --color-text-muted: #BFA9AE;
  --color-text-light: #937D84;

  --color-bg: #150A0E;               /* Nachtschwarz mit Rotstich */
  --color-bg-white: #241219;         /* Flächen: Karten, Modals */
  --color-bg-dark: #0D0608;          /* Footer */
  --color-bg-warm: #2F1720;
  --ec-surface-2: #33192A;           /* Eingabefelder, Hover */
  --ec-night-rgb: 21, 10, 14;        /* = --color-bg, für Verläufe über Fotos */

  --color-border: rgba(var(--ec-gold-rgb), 0.24);
  --color-neutral-100: #3A2029;
  --color-neutral-300: #5A3B42;
  --color-success-bg: rgba(108, 196, 151, 0.14);
  --color-surface-alt: rgba(var(--color-text-rgb), 0.04);

  --gradient-primary: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-dark) 100%);
  --gradient-hero: radial-gradient(ellipse at 70% 30%, #4A0E1F 0%, #22101A 45%, var(--color-bg) 80%);
  --gradient-gold: linear-gradient(135deg, #F0D3A2 0%, #C9985C 100%);
  --gradient-elegant: linear-gradient(135deg, #2F1720 0%, #150A0E 100%);

  --font-heading: 'Cormorant Garamond', Georgia, 'Times New Roman', serif;
  --font-script: 'Great Vibes', cursive;
  --font-subheading: 'Josefin Sans', -apple-system, BlinkMacSystemFont, sans-serif;
  /* --font-body bleibt Nunito: Lesbarkeit auf dunklem Grund */

  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.35);
  --shadow-md: 0 4px 10px rgba(0, 0, 0, 0.4);
  --shadow-lg: 0 12px 24px rgba(0, 0, 0, 0.45);
  --shadow-xl: 0 22px 40px rgba(0, 0, 0, 0.5);
  --shadow-gold: 0 0 0 1px rgba(var(--ec-gold-rgb), 0.5), 0 0 22px rgba(var(--ec-gold-rgb), 0.28);

  --radius-lg: 14px;
  --ec-ease: cubic-bezier(.2, .7, .2, 1);
}

html { color-scheme: dark; }

body {
  background-color: var(--color-bg);
  color: var(--color-text);
}

::-moz-selection { background: rgba(var(--color-primary-rgb), 0.55); color: #fff; }

::selection { background: rgba(var(--color-primary-rgb), 0.55); color: #fff; }

/* ── Typografie ───────────────────────────────────────────────────────── */

h1, h2, h3 {
  font-family: var(--font-heading);
  letter-spacing: 0.01em;
}

a { color: var(--color-accent); }
a:hover { color: var(--color-accent-light); }

.section-title {
  font-family: var(--font-heading);
  font-style: italic;
  font-weight: 600;
  color: var(--color-text);
}

/* Ornament der Sektionstitel: Schlüsselloch darüber, darunter Goldlinie ·
   Punkt · Goldlinie (ersetzt die roten Striche der Basis, die als SVG mit
   fester Farbe in main.css stehen). */
.section-title::before {
  width: 14px;
  height: 19px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 64'%3E%3Cg fill='%23D8B07A'%3E%3Ccircle cx='24' cy='22' r='13'/%3E%3Cpath d='M17 31 L12 58 H36 L31 31 Z'/%3E%3C/g%3E%3C/svg%3E") center / contain no-repeat;
}
.section-title::after {
  width: 96px;
  background:
    radial-gradient(circle at center, var(--color-accent) 0 2.5px, transparent 3px) center / 7px 7px no-repeat,
    linear-gradient(90deg, transparent, var(--color-accent)) left center / 38px 1px no-repeat,
    linear-gradient(90deg, var(--color-accent), transparent) right center / 38px 1px no-repeat;
}

/* ── Header ───────────────────────────────────────────────────────────── */

.site-header {
  background: rgba(21, 10, 14, 0.88);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid rgba(var(--ec-gold-rgb), 0.22);
}

.nav-links a {
  font-family: var(--font-subheading);
  text-transform: uppercase;
  letter-spacing: 0.16em;
  font-size: 0.78rem;
  color: var(--color-text);
}
.nav-links a:hover,
.nav-links a:focus-visible { color: var(--color-accent); }

.header-icon-link,
.mobile-menu-btn { color: var(--color-text); }
.mobile-menu-btn span { background: var(--color-text); }
.header-icon-link:hover { color: var(--color-accent); }

.nav-dropdown-menu {
  background: var(--color-bg-white);
  border-color: rgba(var(--ec-gold-rgb), 0.25);
}

@media (max-width: 768px) {
  .nav-links { background: var(--color-bg); }
}

/* ── Buttons ──────────────────────────────────────────────────────────── */

.btn {
  font-family: var(--font-subheading);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 0.85rem;
  border-radius: 999px;
  transition: background var(--transition-base), box-shadow 0.35s var(--ec-ease), color var(--transition-base), border-color var(--transition-base);
}
.btn-lg { font-size: 0.9rem; }

.btn-primary,
.btn-primary:visited { background: var(--color-primary); color: #fff; border-color: var(--color-primary); }
.btn-primary:hover:not(:disabled),
.btn-primary:focus-visible {
  background: var(--color-primary-dark);
  color: #fff;
  box-shadow: var(--shadow-gold);
}

.btn-secondary,
.btn-outline {
  background: transparent;
  color: var(--color-accent);
  border: 1px solid rgba(var(--ec-gold-rgb), 0.6);
}
.btn-secondary:hover:not(:disabled),
.btn-outline:hover:not(:disabled) {
  background: rgba(var(--ec-gold-rgb), 0.1);
  color: var(--color-accent-light);
  border-color: var(--color-accent);
}

/* ── Formulare ────────────────────────────────────────────────────────── */

input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]),
textarea,
select,
.form-control {
  background-color: var(--ec-surface-2);
  color: var(--color-text);
  border-color: rgba(var(--ec-gold-rgb), 0.28);
}
input::-moz-placeholder, textarea::-moz-placeholder { color: rgba(var(--color-text-rgb), 0.45); }
input::placeholder,
textarea::placeholder { color: rgba(var(--color-text-rgb), 0.45); }
input:focus,
textarea:focus,
select:focus {
  border-color: var(--color-accent);
  outline-color: var(--color-accent);
}
select option { background: var(--color-bg-white); color: var(--color-text); }

/* ── Flächen & Karten: Gold-Haarlinie ─────────────────────────────────── */

.faq-item,
.cart-item,
.checkout-summary,
.checkout-info,
.product-card,
.auth-card,
.legal-content,
.order-card,
.account-card {
  border-color: rgba(var(--ec-gold-rgb), 0.22);
}

/* ── Seiten-Hintergründe: Rubin-Schimmer statt beigem Lichthof ────────── */

.moment-section,
.auth-section,
.checkout-result,
.legal-section {
  background:
    radial-gradient(ellipse at top, rgba(var(--color-primary-rgb), 0.16) 0%, transparent 60%),
    radial-gradient(ellipse at bottom, rgba(var(--ec-gold-rgb), 0.06) 0%, transparent 55%),
    var(--color-bg);
}

/* Links in Fließtext-Bereichen in Gold (Rubin-Text wäre auf dunklem Grund zu schwach) */
.legal-content a,
.auth-form a,
.auth-links a,
.form-hint a,
.checkout-result a:not(.btn) {
  color: var(--color-accent);
  border-bottom-color: rgba(var(--ec-gold-rgb), 0.45);
}

/* ── Shop: Produktkarten ──────────────────────────────────────────────── */

.products-section .product-card {
  background: var(--color-bg-white);
  border: 1px solid rgba(var(--ec-gold-rgb), 0.22);
  border-radius: var(--radius-lg);
  padding: var(--space-5);
  text-align: center;
  transition: border-color var(--transition-base), box-shadow 0.35s var(--ec-ease);
}
.products-section .product-card:hover { border-color: rgba(var(--ec-gold-rgb), 0.55); box-shadow: var(--shadow-gold); }
.products-section .product-card h3 { font-family: var(--font-heading); font-style: italic; font-size: 1.5rem; }

/* Platzhalter ohne Produktbild: Schlüsselloch statt des Emojis der Basis */
.product-image-placeholder {
  font-size: 0;
  min-height: 120px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.product-image-placeholder::before {
  content: "";
  width: 34px;
  height: 46px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 64'%3E%3Cg fill='%23D8B07A'%3E%3Ccircle cx='24' cy='22' r='13'/%3E%3Cpath d='M17 31 L12 58 H36 L31 31 Z'/%3E%3C/g%3E%3C/svg%3E") center / contain no-repeat;
}

/* ── So funktioniert's ────────────────────────────────────────────────── */

.hiw-icon {
  background: var(--color-bg-white);
  color: var(--color-accent);
  border-color: rgba(var(--ec-gold-rgb), 0.55);
}
.hiw-step:hover .hiw-icon,
.hiw-step:focus-visible .hiw-icon {
  background: var(--color-primary);
  color: #fff;
  border-color: var(--color-primary);
  box-shadow: var(--shadow-gold);
}
.hiw-label {
  font-family: var(--font-subheading);
  text-transform: uppercase;
  letter-spacing: 0.12em;
  font-size: 0.8rem;
}
.hiw-connector { border-color: rgba(var(--ec-gold-rgb), 0.45); }

/* ── FAQ ──────────────────────────────────────────────────────────────── */

.faq-section {
  background: linear-gradient(180deg, transparent 0%, rgba(var(--color-primary-rgb), 0.07) 100%);
}
.faq-item { background: var(--color-bg-white); }
.faq-question { color: var(--color-text); }
.faq-icon { color: var(--color-accent); }

/* ── Footer ───────────────────────────────────────────────────────────── */

.site-footer {
  background: var(--color-bg-dark);
  border-top: 1px solid rgba(var(--ec-gold-rgb), 0.2);
}
.footer-links h4 {
  font-family: var(--font-subheading);
  text-transform: uppercase;
  letter-spacing: 0.16em;
  font-size: 0.78rem;
  color: var(--color-accent);
}
.footer-links a:hover { color: var(--color-accent-light); }

/* ── Konfigurator (Bedienoberfläche, NICHT die Kalenderfläche) ─────────── */

.mode-option {
  background: var(--color-bg-white);
  color: var(--color-text);
  border-color: rgba(var(--ec-gold-rgb), 0.3);
}
.mode-option.active {
  border-color: var(--color-primary);
  box-shadow: 0 0 0 1px var(--color-primary), 0 0 18px rgba(var(--color-primary-rgb), 0.35);
}

.gbc-modal-content {
  background: var(--color-bg-white);
  color: var(--color-text);
  border: 1px solid rgba(var(--ec-gold-rgb), 0.25);
}
.gbc-modal-header { border-bottom-color: rgba(var(--ec-gold-rgb), 0.2); }
.gbc-modal-close { color: var(--color-text); }
.gbc-modal-upload-area {
  background: rgba(var(--color-text-rgb), 0.03);
  border-color: rgba(var(--ec-gold-rgb), 0.45);
}
.gbc-tab-btn { color: var(--color-text-muted); }
.gbc-tab-btn.active { color: var(--color-accent); border-color: var(--color-accent); }

.gbc-collapsible-toggle,
.gbc-add-title-btn {
  background: var(--color-bg-white);
  color: var(--color-text);
  border-color: rgba(var(--ec-gold-rgb), 0.3);
}

/* Bild-Vorschau (Warenkorb/Lightbox) bleibt hell — sie zeigt den Druck */

/* PWA-Hinweis, Testmodus bleiben funktional; nur der Install-Banner wird dunkel */
.pwa-install-banner {
  border: 1px solid rgba(var(--ec-gold-rgb), 0.3);
  color: var(--color-text);
}

/* ==========================================================================
   Komponenten der Marke
   ========================================================================== */

/* ── Hinweis „ab 18“ ──────────────────────────────────────────────────── */

body:has(.ec-age) { overflow: hidden; }

.ec-age {
  position: fixed;
  inset: 0;
  z-index: 10050; /* über Header (10001) und Modals (10010) */
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
  background:
    radial-gradient(ellipse at 50% 35%, rgba(90, 16, 36, 0.92) 0%, rgba(13, 6, 8, 0.97) 70%);
  backdrop-filter: blur(6px);
}

.ec-age-card {
  width: calc(100% - 32px);
  max-width: 460px;
  box-sizing: border-box;
  padding: 40px 32px 32px;
  text-align: center;
  background: var(--color-bg-white);
  border: 1px solid rgba(var(--ec-gold-rgb), 0.35);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-xl);
  animation: ec-reveal 0.6s var(--ec-ease) both;
}

.ec-age-keyhole { display: block; width: 40px; height: 54px; fill: var(--color-accent); margin: 0 auto 18px; }
.ec-age-title { font-size: 2rem; font-style: italic; font-weight: 600; margin-bottom: 12px; color: var(--color-text); }
.ec-age-text { color: var(--color-text-muted); margin-bottom: 26px; }
.ec-age-actions { display: flex; flex-direction: column; gap: 14px; align-items: center; }
.ec-age-leave { color: var(--color-text-muted); font-size: 0.9rem; text-decoration: underline; text-underline-offset: 3px; }

@media (max-width: 480px) {
  .ec-age { padding: 0; }
  .ec-age-card {
    width: 100%;
    max-width: 100%;
    min-height: 100%;
    border-radius: 0;
    border: 0;
    display: flex;
    flex-direction: column;
    justify-content: center;
  }
}

/* ── Hero ─────────────────────────────────────────────────────────────── */

.ec-hero {
  position: relative;
  overflow: hidden;
  min-height: clamp(460px, 72vh, 680px);
  display: flex;
  align-items: center;
  background: var(--gradient-hero);
  border-bottom: 1px solid rgba(var(--ec-gold-rgb), 0.18);
}

.ec-hero-media {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  pointer-events: none;
}

/* Seidenwelle in Rubin + feine Goldlinie (weiche Kurven, skaliert mit) */
.ec-hero-media::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -1px;
  height: 52%;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 320' preserveAspectRatio='none'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='0' x2='1'%3E%3Cstop offset='0' stop-color='%23C41E4A' stop-opacity='0.04'/%3E%3Cstop offset='0.5' stop-color='%23C41E4A' stop-opacity='0.3'/%3E%3Cstop offset='1' stop-color='%23C41E4A' stop-opacity='0.08'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cpath d='M0 170 C 240 90 420 260 720 170 S 1200 60 1440 120 L1440 320 L0 320 Z' fill='url(%23g)'/%3E%3Cpath d='M0 205 C 260 125 440 295 745 205 S 1210 100 1440 155' fill='none' stroke='%23D8B07A' stroke-opacity='0.4' stroke-width='1.5' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E") bottom center / 100% 100% no-repeat;
}

.ec-hero-glow {
  position: absolute;
  width: 60vmax;
  height: 60vmax;
  right: -18vmax;
  top: -22vmax;
  background: radial-gradient(circle, rgba(var(--color-primary-rgb), 0.35) 0%, rgba(var(--color-primary-rgb), 0) 60%);
  animation: ec-breathe 9s ease-in-out infinite;
}

.ec-hero-bokeh {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 78% 22%, rgba(240, 211, 162, 0.38) 0, rgba(240, 211, 162, 0) 4.5vmax),
    radial-gradient(circle at 88% 44%, rgba(240, 211, 162, 0.28) 0, rgba(240, 211, 162, 0) 2.6vmax),
    radial-gradient(circle at 67% 48%, rgba(240, 211, 162, 0.22) 0, rgba(240, 211, 162, 0) 1.6vmax),
    radial-gradient(circle at 92% 12%, rgba(240, 211, 162, 0.3) 0, rgba(240, 211, 162, 0) 1.2vmax);
}

/* Hero-Foto (2026-10-09, Betreiber-Lieferung, Register EROTICCALENDAR_PLAN.md
   § 4.4). Das Foto ist hell, die Bühne Velvet Noir: Es liegt rechts als Fläche
   in voller Hero-Höhe und läuft per Maske nach links in den Samt-Verlauf aus —
   die linke Seite bleibt ruhig für Headline und CTA, ohne Kante zum Verlauf.
   Als ::after liegt es über Glühen, Bokeh und Seidenwelle; die scheinen nur
   dort durch, wo es ausläuft. Unter 900 px steht es als Bild über dem Text
   (Media-Queries unten). Bild getauscht ⇒ ?v= erhöhen (sw.js hält ?v=-URLs
   für unveränderlich). */
.ec-hero-media::after {
  content: "";
  position: absolute;
  top: 0;
  right: 0;
  height: 100%;
  width: 62%;
  background: url("/static/brands/eroticcalendar/hero/hero-2000.webp?v=20261009") 62% 30% / cover no-repeat;
  -webkit-mask-image: linear-gradient(90deg, transparent 0%, #000 30%);
  mask-image: linear-gradient(90deg, transparent 0%, #000 30%);
  animation: ec-photo-in 1.2s var(--ec-ease) both;
}
/* Natürliche Breite aus der Höhe (2000 × 1422), höchstens 62 %: auf breiten
   Schirmen bleibt das ganze Motiv sichtbar, auf schmaleren schneidet „cover“
   links ab (Kopfteil) — Gesicht und Körper bleiben rechts vom Text. */
@supports (aspect-ratio: 1) {
  .ec-hero-media::after {
    width: auto;
    max-width: 62%;
    aspect-ratio: 2000 / 1422;
  }
}

.ec-hero-inner {
  position: relative;
  padding-top: var(--space-16);
  padding-bottom: var(--space-16);
  max-width: var(--container-max);
}

.ec-hero-kicker {
  font-family: var(--font-subheading);
  text-transform: uppercase;
  letter-spacing: 0.22em;
  font-size: 0.78rem;
  color: var(--color-accent);
  margin-bottom: var(--space-4);
  animation: ec-reveal 0.7s var(--ec-ease) both;
}

.ec-hero-title {
  font-family: var(--font-heading);
  font-weight: 500;
  font-size: clamp(2.6rem, 7vw, 5.2rem);
  line-height: 1.02;
  color: var(--color-text);
  max-width: 13ch;
  margin-bottom: var(--space-6);
  animation: ec-reveal 0.8s 0.08s var(--ec-ease) both;
}

.ec-hero-script {
  display: block;
  font-family: var(--font-script);
  font-weight: 400;
  font-size: 1.18em;
  line-height: 1.05;
  color: var(--color-secondary);
  margin-top: 0.05em;
}

.ec-hero-sub {
  max-width: 46ch;
  font-size: clamp(1rem, 1.6vw, 1.15rem);
  color: var(--color-text-muted);
  margin-bottom: var(--space-8);
  animation: ec-reveal 0.8s 0.16s var(--ec-ease) both;
}

.ec-hero-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-6);
  animation: ec-reveal 0.8s 0.24s var(--ec-ease) both;
}

.ec-hero-more {
  font-family: var(--font-subheading);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 0.8rem;
  color: var(--color-text);
  text-decoration: none;
  border-bottom: 1px solid rgba(var(--ec-gold-rgb), 0.6);
  padding-bottom: 2px;
}
.ec-hero-more:hover { color: var(--color-accent); }

@media (max-width: 600px) {
  .ec-hero { min-height: 0; }
  .ec-hero-inner { padding-top: var(--space-12); padding-bottom: var(--space-12); }
  .ec-hero-actions { gap: var(--space-4); }
  .ec-hero-actions .btn { width: 100%; }
}

/* Hero-Foto als Bild über dem Text: oben voll, unten in den Grund auslaufend;
   der Text beginnt im ausgelaufenen Teil. Steht nach dem 600-px-Block, damit
   das padding-top hier gewinnt. */
@media (max-width: 899px) {
  .ec-hero {
    --ec-hero-photo-h: min(83vw, 30rem);
    align-items: flex-start;
  }
  .ec-hero-media::after {
    left: 0;
    width: 100%;
    max-width: none;
    height: var(--ec-hero-photo-h);
    aspect-ratio: auto;
    background-position: 40% 30%;
    -webkit-mask-image: linear-gradient(180deg, #000 50%, transparent 90%);
    mask-image: linear-gradient(180deg, #000 50%, transparent 90%);
  }
  .ec-hero-inner { padding-top: calc(var(--ec-hero-photo-h) * 0.88); }
}
@media (max-width: 600px) {
  .ec-hero-media::after {
    background-image: url("/static/brands/eroticcalendar/hero/hero-1200.webp?v=20261009");
  }
}

/* ── Vertrauensleiste ─────────────────────────────────────────────────── */

.ec-trust { background: var(--color-bg-dark); border-bottom: 1px solid rgba(var(--ec-gold-rgb), 0.15); }

.ec-trust-list {
  list-style: none;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--space-4);
  padding-top: var(--space-5);
  padding-bottom: var(--space-5);
}

.ec-trust-list li {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-3);
  font-family: var(--font-subheading);
  text-transform: uppercase;
  letter-spacing: 0.12em;
  font-size: 0.74rem;
  color: var(--color-text);
}

.ec-trust-list svg {
  width: 22px;
  height: 22px;
  flex: none;
  fill: none;
  stroke: var(--color-accent);
  stroke-width: 1.5;
  stroke-linecap: round;
  stroke-linejoin: round;
}

@media (max-width: 768px) {
  .ec-trust-list { grid-template-columns: repeat(2, 1fr); }
  .ec-trust-list li { justify-content: flex-start; }
}

/* ── Anlässe ──────────────────────────────────────────────────────────── */

.ec-occasions { padding: var(--space-16) 0 var(--space-12); }
.ec-occasions-sub { text-align: center; color: var(--color-text-muted); margin: calc(-1 * var(--space-2)) 0 var(--space-8); }

.ec-occasions-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: var(--space-4);
}

.ec-occasion {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  gap: var(--space-2);
  min-height: 210px;
  padding: var(--space-5);
  border-radius: var(--radius-lg);
  border: 1px solid rgba(var(--ec-gold-rgb), 0.22);
  background:
    radial-gradient(circle at 80% 15%, rgba(var(--color-primary-rgb), 0.35) 0%, rgba(var(--color-primary-rgb), 0) 55%),
    linear-gradient(160deg, #2F1720 0%, #1A0C11 100%);
  color: var(--color-text);
  text-decoration: none;
  overflow: hidden;
  transition: transform 0.35s var(--ec-ease), border-color var(--transition-base), box-shadow 0.35s var(--ec-ease);
}
.ec-occasion::before {
  /* Schlüsselloch als Wasserzeichen */
  content: "";
  position: absolute;
  top: 18px;
  right: 18px;
  width: 26px;
  height: 36px;
  background: var(--color-accent);
  opacity: 0.55;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 64'%3E%3Ccircle cx='24' cy='22' r='13'/%3E%3Cpath d='M17 31 L12 58 H36 L31 31 Z'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 64'%3E%3Ccircle cx='24' cy='22' r='13'/%3E%3Cpath d='M17 31 L12 58 H36 L31 31 Z'/%3E%3C/svg%3E") center / contain no-repeat;
  z-index: 2;
}

/* Kartenfoto (2026-10-08): liegt unter Verlauf, Schlüsselloch und Text. Der
   Verlauf dunkelt die teils hellen Fotos auf Velvet Noir ab und hält den Text
   unten lesbar; bis das Bild geladen ist, bleibt der Kartenverlauf sichtbar. */
.ec-occasion-img {
  position: absolute;
  inset: 0;
  z-index: 0;
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
  filter: saturate(0.85);
  transition: transform 0.6s var(--ec-ease);
}
.ec-occasion::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(180deg,
    rgba(var(--ec-night-rgb), 0.2) 0%,
    rgba(var(--ec-night-rgb), 0.5) 42%,
    rgba(var(--ec-night-rgb), 0.94) 100%);
}
.ec-occasion-name,
.ec-occasion-text { position: relative; z-index: 2; }
.ec-occasion-name { text-shadow: 0 1px 12px rgba(var(--ec-night-rgb), 0.7); }
.ec-occasion:hover .ec-occasion-img,
.ec-occasion:focus-visible .ec-occasion-img { transform: scale(1.05); }
.ec-occasion--valentine .ec-occasion-img { -o-object-position: 70% 50%; object-position: 70% 50%; }
.ec-occasion--wedding .ec-occasion-img { -o-object-position: 35% 50%; object-position: 35% 50%; }
.ec-occasion:hover,
.ec-occasion:focus-visible {
  transform: translateY(-4px);
  border-color: rgba(var(--ec-gold-rgb), 0.6);
  box-shadow: var(--shadow-gold);
  color: var(--color-text);
}

.ec-occasion-name {
  hyphens: auto;
  overflow-wrap: anywhere;
  font-family: var(--font-heading);
  font-style: italic;
  font-weight: 600;
  font-size: 1.45rem;
  line-height: 1.15;
}
.ec-occasion-text { color: var(--color-text-muted); font-size: 0.92rem; line-height: 1.45; }

.ec-occasion--advent { background: radial-gradient(circle at 80% 15%, rgba(var(--ec-gold-rgb), 0.28) 0%, rgba(var(--ec-gold-rgb), 0) 55%), linear-gradient(160deg, #2A1A16 0%, #160C0C 100%); }
.ec-occasion--wedding { background: radial-gradient(circle at 80% 15%, rgba(232, 180, 184, 0.3) 0%, rgba(232, 180, 184, 0) 55%), linear-gradient(160deg, #2F1A22 0%, #180C11 100%); }

@media (max-width: 1024px) {
  .ec-occasions-grid { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 600px) {
  .ec-occasions-grid { grid-template-columns: 1fr 1fr; }
  .ec-occasion { min-height: 170px; padding: var(--space-4); }
  .ec-occasion::before { top: 12px; right: 12px; width: 16px; height: 22px; opacity: 0.4; }
  .ec-occasion-name { font-size: 1.2rem; padding-right: 14px; }
}

/* ── Bewegung ─────────────────────────────────────────────────────────── */

@keyframes ec-reveal {
  from { opacity: 0; transform: translateY(14px); clip-path: inset(0 0 100% 0); }
  to   { opacity: 1; transform: none; clip-path: inset(0 0 0 0); }
}
@keyframes ec-breathe {
  0%, 100% { opacity: 0.85; transform: scale(1); }
  50%      { opacity: 1; transform: scale(1.06); }
}
@keyframes ec-photo-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}

@media (prefers-reduced-motion: reduce) {
  .ec-age-card,
  .ec-hero-kicker,
  .ec-hero-title,
  .ec-hero-sub,
  .ec-hero-actions,
  .ec-hero-glow,
  .ec-hero-media::after { animation: none; }
  .ec-occasion,
  .ec-occasion-img { transition: none; }
}

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jc3MvYnJhbmQtZXJvdGljY2FsZW5kYXIuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7K0VBZStFOztBQUUvRTtFQUNFLHdCQUF3QixXQUFXLFVBQVU7RUFDN0MsOEJBQThCO0VBQzlCLDZCQUE2QjtFQUM3QixnQ0FBZ0M7RUFDaEMsNkJBQTZCLE1BQU0seUNBQXlDOztFQUU1RSwwQkFBMEIsU0FBUyxjQUFjO0VBQ2pELGdDQUFnQztFQUNoQywrQkFBK0I7O0VBRS9CLHVCQUF1QixZQUFZLG9CQUFvQjtFQUN2RCw2QkFBNkI7RUFDN0IsNEJBQTRCO0VBQzVCLDRCQUE0Qjs7RUFFNUIsd0JBQXdCO0VBQ3hCLHdCQUF3QjtFQUN4QixzQkFBc0I7O0VBRXRCLHFCQUFxQixjQUFjLGNBQWM7RUFDakQsK0JBQStCO0VBQy9CLDJCQUEyQjtFQUMzQiwyQkFBMkI7O0VBRTNCLG1CQUFtQixnQkFBZ0IsOEJBQThCO0VBQ2pFLHlCQUF5QixVQUFVLDRCQUE0QjtFQUMvRCx3QkFBd0IsV0FBVyxXQUFXO0VBQzlDLHdCQUF3QjtFQUN4Qix1QkFBdUIsWUFBWSx5QkFBeUI7RUFDNUQsMEJBQTBCLFNBQVMsMENBQTBDOztFQUU3RSw4Q0FBOEM7RUFDOUMsNEJBQTRCO0VBQzVCLDRCQUE0QjtFQUM1Qiw2Q0FBNkM7RUFDN0Msc0RBQXNEOztFQUV0RCxvR0FBb0c7RUFDcEcsa0dBQWtHO0VBQ2xHLGtFQUFrRTtFQUNsRSxxRUFBcUU7O0VBRXJFLHVFQUF1RTtFQUN2RSxxQ0FBcUM7RUFDckMsZ0ZBQWdGO0VBQ2hGLDREQUE0RDs7RUFFNUQsMENBQTBDO0VBQzFDLDBDQUEwQztFQUMxQyw0Q0FBNEM7RUFDNUMsMkNBQTJDO0VBQzNDLCtGQUErRjs7RUFFL0YsaUJBQWlCO0VBQ2pCLHNDQUFzQztBQUN4Qzs7QUFFQSxPQUFPLGtCQUFrQixFQUFFOztBQUUzQjtFQUNFLGlDQUFpQztFQUNqQyx3QkFBd0I7QUFDMUI7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QUFDbkI7QUFDQSxvQkFBb0IsOEJBQThCLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUU7O0FBRTNGLHVCQUF1QixxS0FBcUssRUFBRTtBQUM5TCx3QkFBd0IsMEpBQTBKLEVBQUU7O0FBRXBMO0VBQ0UscUJBQXFCLHFDQUFxQyxFQUFFO0FBQzlEO0FBQ0E7RUFDRSxxQkFBcUIsOEJBQThCLEVBQUU7RUFDckQsZUFBZSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRTtFQUMzRCx1QkFBdUIsU0FBUyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRTtFQUN4RixvQkFBb0IsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUU7QUFDOUQ7O0FBRUEsNEVBQTRFOztBQUU1RTtFQUNFLE9BQU8sVUFBVSxFQUFFLDJCQUEyQixFQUFFLDRCQUE0QixFQUFFO0VBQzlFLE9BQU8sVUFBVSxFQUFFLGVBQWUsRUFBRSx5QkFBeUIsRUFBRTtBQUNqRTtBQUNBO0VBQ0UsV0FBVyxhQUFhLEVBQUUsbUJBQW1CLEVBQUU7RUFDL0MsV0FBVyxVQUFVLEVBQUUsc0JBQXNCLEVBQUU7QUFDakQ7QUFDQTtFQUNFLE9BQU8sVUFBVSxFQUFFO0VBQ25CLE9BQU8sVUFBVSxFQUFFO0FBQ3JCOztBQUVBO0VBQ0U7Ozs7OzswQkFNd0IsZUFBZSxFQUFFO0VBQ3pDO3FCQUNtQixnQkFBZ0IsRUFBRTtBQUN2QyIsImZpbGUiOiJicmFuZC1lcm90aWNjYWxlbmRhci5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgRXJvdGljIENhbGVuZGFyIOKAlCBEZXNpZ24g4oCeVmVsdmV0IE5vaXLigJwgKDIwMjYtMTAtMDcpXG4gICBET0NVTUVOVEFUSU9OL0VST1RJQ0NBTEVOREFSX1BMQU4ubWQgwqcgNFxuXG4gICBHZWxhZGVuIE5VUiBmw7xyIEJSQU5EPWVyb3RpY2NhbGVuZGFyIChsYXlvdXQudGVtcGwsIG5hY2ggYWxsZW4gQmFzaXMtU3R5bGVzKS5cbiAgIEF1ZmJhdTogMS4gVG9rZW5zIChkaWUgQmFzaXMtQ1NTIGlzdCBkdXJjaGdlaGVuZCB0b2tlbmlzaWVydCDigJQgZGFzIG1laXN0ZVxuICAgZXJsZWRpZ3Qgc2ljaCBoaWVyKSwgMi4gZ2V6aWVsdGUgT3ZlcnJpZGVzLCB3byBkaWUgQmFzaXMgZmVzdGUgV2VydGUgZsO8clxuICAgaGVsbGVuIEdydW5kIGhhdCwgMy4gS29tcG9uZW50ZW4gZGVyIE1hcmtlICguZWMtKikuXG5cbiAgIE5JQ0hUIGFuZmFzc2VuOiBkaWUgS2FsZW5kZXJmbMOkY2hlIHVuZCBkaWUgVMO8cmNoZW4gKC5nYmMtY2FsZW5kYXItZG9vcixcbiAgIC5nYmMtc3RhdGljLWRvb3IsIENvbnRhaW5lci1IaW50ZXJncsO8bmRlKSDigJQgZGFzIGlzdCBkYXMgRHJ1Y2twcm9kdWt0LFxuICAgZGllIE9wdGlrIG11c3MgenVtIFByaW50R2VuZXJhdG9yIHBhc3Nlbi5cblxuICAgS29udHJhc3RlIChXQ0FHIDIueCwgYmVyZWNobmV0KTogVGV4dC9HcnVuZCDiiYggMTY6MSwgZ2Vkw6RtcGZ0L0Zsw6RjaGUg4omIIDg6MSxcbiAgIFdlacOfIGF1ZiBSdWJpbiDiiYggNSw4OjEsIEdvbGQvR3J1bmQg4omIIDksNjoxLCBSdWJpbi1CdXR0b24vR3J1bmQg4omIIDMsNDoxLlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuOnJvb3Qge1xuICAtLWNvbG9yLXByaW1hcnk6ICNDNDFFNEE7ICAgICAgICAgIC8qIFJ1YmluICovXG4gIC0tY29sb3ItcHJpbWFyeS1saWdodDogI0Q5NDU2QjtcbiAgLS1jb2xvci1wcmltYXJ5LWRhcms6ICM4RTEyMzY7XG4gIC0tY29sb3ItcHJpbWFyeS1yZ2I6IDE5NiwgMzAsIDc0O1xuICAtLWNvbG9yLXByaW1hcnktdGV4dDogI0U4NzA4QTsgICAgIC8qIFJ1YmluIGFscyBTY2hyaWZ0OiDiiYggNjoxIGF1ZiBGbMOkY2hlbiAqL1xuXG4gIC0tY29sb3Itc2Vjb25kYXJ5OiAjRThCNEI4OyAgICAgICAgLyogUHVkZXJyb3PDqSAqL1xuICAtLWNvbG9yLXNlY29uZGFyeS1saWdodDogI0YyQ0REMDtcbiAgLS1jb2xvci1zZWNvbmRhcnktZGFyazogI0M5OEU5MztcblxuICAtLWNvbG9yLWFjY2VudDogI0Q4QjA3QTsgICAgICAgICAgIC8qIENoYW1wYWduZXItR29sZCAqL1xuICAtLWNvbG9yLWFjY2VudC1saWdodDogI0U5Q0I5QjtcbiAgLS1jb2xvci1hY2NlbnQtZGFyazogI0I4ODk0RTtcbiAgLS1lYy1nb2xkLXJnYjogMjE2LCAxNzYsIDEyMjtcblxuICAtLWNvbG9yLXN1Y2Nlc3M6ICM2Q0M0OTc7XG4gIC0tY29sb3Itd2FybmluZzogI0U1QUU1NTtcbiAgLS1jb2xvci1lcnJvcjogI0ZGN0E4QztcblxuICAtLWNvbG9yLXRleHQ6ICNGNkVERTg7ICAgICAgICAgICAgIC8qIFBvcnplbGxhbiAqL1xuICAtLWNvbG9yLXRleHQtcmdiOiAyNDYsIDIzNywgMjMyO1xuICAtLWNvbG9yLXRleHQtbXV0ZWQ6ICNCRkE5QUU7XG4gIC0tY29sb3ItdGV4dC1saWdodDogIzkzN0Q4NDtcblxuICAtLWNvbG9yLWJnOiAjMTUwQTBFOyAgICAgICAgICAgICAgIC8qIE5hY2h0c2Nod2FyeiBtaXQgUm90c3RpY2ggKi9cbiAgLS1jb2xvci1iZy13aGl0ZTogIzI0MTIxOTsgICAgICAgICAvKiBGbMOkY2hlbjogS2FydGVuLCBNb2RhbHMgKi9cbiAgLS1jb2xvci1iZy1kYXJrOiAjMEQwNjA4OyAgICAgICAgICAvKiBGb290ZXIgKi9cbiAgLS1jb2xvci1iZy13YXJtOiAjMkYxNzIwO1xuICAtLWVjLXN1cmZhY2UtMjogIzMzMTkyQTsgICAgICAgICAgIC8qIEVpbmdhYmVmZWxkZXIsIEhvdmVyICovXG4gIC0tZWMtbmlnaHQtcmdiOiAyMSwgMTAsIDE0OyAgICAgICAgLyogPSAtLWNvbG9yLWJnLCBmw7xyIFZlcmzDpHVmZSDDvGJlciBGb3RvcyAqL1xuXG4gIC0tY29sb3ItYm9yZGVyOiByZ2JhKHZhcigtLWVjLWdvbGQtcmdiKSwgMC4yNCk7XG4gIC0tY29sb3ItbmV1dHJhbC0xMDA6ICMzQTIwMjk7XG4gIC0tY29sb3ItbmV1dHJhbC0zMDA6ICM1QTNCNDI7XG4gIC0tY29sb3Itc3VjY2Vzcy1iZzogcmdiYSgxMDgsIDE5NiwgMTUxLCAwLjE0KTtcbiAgLS1jb2xvci1zdXJmYWNlLWFsdDogcmdiYSh2YXIoLS1jb2xvci10ZXh0LXJnYiksIDAuMDQpO1xuXG4gIC0tZ3JhZGllbnQtcHJpbWFyeTogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tY29sb3ItcHJpbWFyeSkgMCUsIHZhcigtLWNvbG9yLXByaW1hcnktZGFyaykgMTAwJSk7XG4gIC0tZ3JhZGllbnQtaGVybzogcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgNzAlIDMwJSwgIzRBMEUxRiAwJSwgIzIyMTAxQSA0NSUsIHZhcigtLWNvbG9yLWJnKSA4MCUpO1xuICAtLWdyYWRpZW50LWdvbGQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNGMEQzQTIgMCUsICNDOTk4NUMgMTAwJSk7XG4gIC0tZ3JhZGllbnQtZWxlZ2FudDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzJGMTcyMCAwJSwgIzE1MEEwRSAxMDAlKTtcblxuICAtLWZvbnQtaGVhZGluZzogJ0Nvcm1vcmFudCBHYXJhbW9uZCcsIEdlb3JnaWEsICdUaW1lcyBOZXcgUm9tYW4nLCBzZXJpZjtcbiAgLS1mb250LXNjcmlwdDogJ0dyZWF0IFZpYmVzJywgY3Vyc2l2ZTtcbiAgLS1mb250LXN1YmhlYWRpbmc6ICdKb3NlZmluIFNhbnMnLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIHNhbnMtc2VyaWY7XG4gIC8qIC0tZm9udC1ib2R5IGJsZWlidCBOdW5pdG86IExlc2JhcmtlaXQgYXVmIGR1bmtsZW0gR3J1bmQgKi9cblxuICAtLXNoYWRvdy1zbTogMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4zNSk7XG4gIC0tc2hhZG93LW1kOiAwIDRweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC40KTtcbiAgLS1zaGFkb3ctbGc6IDAgMTJweCAyNHB4IHJnYmEoMCwgMCwgMCwgMC40NSk7XG4gIC0tc2hhZG93LXhsOiAwIDIycHggNDBweCByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gIC0tc2hhZG93LWdvbGQ6IDAgMCAwIDFweCByZ2JhKHZhcigtLWVjLWdvbGQtcmdiKSwgMC41KSwgMCAwIDIycHggcmdiYSh2YXIoLS1lYy1nb2xkLXJnYiksIDAuMjgpO1xuXG4gIC0tcmFkaXVzLWxnOiAxNHB4O1xuICAtLWVjLWVhc2U6IGN1YmljLWJlemllciguMiwgLjcsIC4yLCAxKTtcbn1cblxuaHRtbCB7IGNvbG9yLXNjaGVtZTogZGFyazsgfVxuXG5ib2R5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYmcpO1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG59XG5cbjo6c2VsZWN0aW9uIHsgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LXJnYiksIDAuNTUpOyBjb2xvcjogI2ZmZjsgfVxuXG4vKiDilIDilIAgVHlwb2dyYWZpZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cblxuaDEsIGgyLCBoMyB7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWhlYWRpbmcpO1xuICBsZXR0ZXItc3BhY2luZzogMC4wMWVtO1xufVxuXG5hIHsgY29sb3I6IHZhcigtLWNvbG9yLWFjY2VudCk7IH1cbmE6aG92ZXIgeyBjb2xvcjogdmFyKC0tY29sb3ItYWNjZW50LWxpZ2h0KTsgfVxuXG4uc2VjdGlvbi10aXRsZSB7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWhlYWRpbmcpO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbn1cblxuLyogT3JuYW1lbnQgZGVyIFNla3Rpb25zdGl0ZWw6IFNjaGzDvHNzZWxsb2NoIGRhcsO8YmVyLCBkYXJ1bnRlciBHb2xkbGluaWUgwrdcbiAgIFB1bmt0IMK3IEdvbGRsaW5pZSAoZXJzZXR6dCBkaWUgcm90ZW4gU3RyaWNoZSBkZXIgQmFzaXMsIGRpZSBhbHMgU1ZHIG1pdFxuICAgZmVzdGVyIEZhcmJlIGluIG1haW4uY3NzIHN0ZWhlbikuICovXG4uc2VjdGlvbi10aXRsZTo6YmVmb3JlIHtcbiAgd2lkdGg6IDE0cHg7XG4gIGhlaWdodDogMTlweDtcbiAgYmFja2dyb3VuZDogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA0OCA2NCclM0UlM0NnIGZpbGw9JyUyM0Q4QjA3QSclM0UlM0NjaXJjbGUgY3g9JzI0JyBjeT0nMjInIHI9JzEzJy8lM0UlM0NwYXRoIGQ9J00xNyAzMSBMMTIgNTggSDM2IEwzMSAzMSBaJy8lM0UlM0MvZyUzRSUzQy9zdmclM0VcIikgY2VudGVyIC8gY29udGFpbiBuby1yZXBlYXQ7XG59XG4uc2VjdGlvbi10aXRsZTo6YWZ0ZXIge1xuICB3aWR0aDogOTZweDtcbiAgYmFja2dyb3VuZDpcbiAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IGNlbnRlciwgdmFyKC0tY29sb3ItYWNjZW50KSAwIDIuNXB4LCB0cmFuc3BhcmVudCAzcHgpIGNlbnRlciAvIDdweCA3cHggbm8tcmVwZWF0LFxuICAgIGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHZhcigtLWNvbG9yLWFjY2VudCkpIGxlZnQgY2VudGVyIC8gMzhweCAxcHggbm8tcmVwZWF0LFxuICAgIGxpbmVhci1ncmFkaWVudCg5MGRlZywgdmFyKC0tY29sb3ItYWNjZW50KSwgdHJhbnNwYXJlbnQpIHJpZ2h0IGNlbnRlciAvIDM4cHggMXB4IG5vLXJlcGVhdDtcbn1cblxuLyog4pSA4pSAIEhlYWRlciDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cblxuLnNpdGUtaGVhZGVyIHtcbiAgYmFja2dyb3VuZDogcmdiYSgyMSwgMTAsIDE0LCAwLjg4KTtcbiAgLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTJweCk7XG4gIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMnB4KTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEodmFyKC0tZWMtZ29sZC1yZ2IpLCAwLjIyKTtcbn1cblxuLm5hdi1saW5rcyBhIHtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc3ViaGVhZGluZyk7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGxldHRlci1zcGFjaW5nOiAwLjE2ZW07XG4gIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xufVxuLm5hdi1saW5rcyBhOmhvdmVyLFxuLm5hdi1saW5rcyBhOmZvY3VzLXZpc2libGUgeyBjb2xvcjogdmFyKC0tY29sb3ItYWNjZW50KTsgfVxuXG4uaGVhZGVyLWljb24tbGluayxcbi5tb2JpbGUtbWVudS1idG4geyBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7IH1cbi5tb2JpbGUtbWVudS1idG4gc3BhbiB7IGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXRleHQpOyB9XG4uaGVhZGVyLWljb24tbGluazpob3ZlciB7IGNvbG9yOiB2YXIoLS1jb2xvci1hY2NlbnQpOyB9XG5cbi5uYXYtZHJvcGRvd24tbWVudSB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJnLXdoaXRlKTtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWVjLWdvbGQtcmdiKSwgMC4yNSk7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAubmF2LWxpbmtzIHsgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmcpOyB9XG59XG5cbi8qIOKUgOKUgCBCdXR0b25zIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuXG4uYnRuIHtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc3ViaGVhZGluZyk7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGxldHRlci1zcGFjaW5nOiAwLjE0ZW07XG4gIGZvbnQtc2l6ZTogMC44NXJlbTtcbiAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKSwgYm94LXNoYWRvdyAwLjM1cyB2YXIoLS1lYy1lYXNlKSwgY29sb3IgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKSwgYm9yZGVyLWNvbG9yIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG59XG4uYnRuLWxnIHsgZm9udC1zaXplOiAwLjlyZW07IH1cblxuLmJ0bi1wcmltYXJ5LFxuLmJ0bi1wcmltYXJ5OnZpc2l0ZWQgeyBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1wcmltYXJ5KTsgY29sb3I6ICNmZmY7IGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7IH1cbi5idG4tcHJpbWFyeTpob3Zlcjpub3QoOmRpc2FibGVkKSxcbi5idG4tcHJpbWFyeTpmb2N1cy12aXNpYmxlIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcHJpbWFyeS1kYXJrKTtcbiAgY29sb3I6ICNmZmY7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1nb2xkKTtcbn1cblxuLmJ0bi1zZWNvbmRhcnksXG4uYnRuLW91dGxpbmUge1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWFjY2VudCk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tZWMtZ29sZC1yZ2IpLCAwLjYpO1xufVxuLmJ0bi1zZWNvbmRhcnk6aG92ZXI6bm90KDpkaXNhYmxlZCksXG4uYnRuLW91dGxpbmU6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWVjLWdvbGQtcmdiKSwgMC4xKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWFjY2VudC1saWdodCk7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItYWNjZW50KTtcbn1cblxuLyog4pSA4pSAIEZvcm11bGFyZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cblxuaW5wdXQ6bm90KFt0eXBlPVwiY2hlY2tib3hcIl0pOm5vdChbdHlwZT1cInJhZGlvXCJdKTpub3QoW3R5cGU9XCJyYW5nZVwiXSk6bm90KFt0eXBlPVwiY29sb3JcIl0pLFxudGV4dGFyZWEsXG5zZWxlY3QsXG4uZm9ybS1jb250cm9sIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZWMtc3VyZmFjZS0yKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tZWMtZ29sZC1yZ2IpLCAwLjI4KTtcbn1cbmlucHV0OjpwbGFjZWhvbGRlcixcbnRleHRhcmVhOjpwbGFjZWhvbGRlciB7IGNvbG9yOiByZ2JhKHZhcigtLWNvbG9yLXRleHQtcmdiKSwgMC40NSk7IH1cbmlucHV0OmZvY3VzLFxudGV4dGFyZWE6Zm9jdXMsXG5zZWxlY3Q6Zm9jdXMge1xuICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWFjY2VudCk7XG4gIG91dGxpbmUtY29sb3I6IHZhcigtLWNvbG9yLWFjY2VudCk7XG59XG5zZWxlY3Qgb3B0aW9uIHsgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmctd2hpdGUpOyBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7IH1cblxuLyog4pSA4pSAIEZsw6RjaGVuICYgS2FydGVuOiBHb2xkLUhhYXJsaW5pZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cblxuLmZhcS1pdGVtLFxuLmNhcnQtaXRlbSxcbi5jaGVja291dC1zdW1tYXJ5LFxuLmNoZWNrb3V0LWluZm8sXG4ucHJvZHVjdC1jYXJkLFxuLmF1dGgtY2FyZCxcbi5sZWdhbC1jb250ZW50LFxuLm9yZGVyLWNhcmQsXG4uYWNjb3VudC1jYXJkIHtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWVjLWdvbGQtcmdiKSwgMC4yMik7XG59XG5cbi8qIOKUgOKUgCBTZWl0ZW4tSGludGVyZ3LDvG5kZTogUnViaW4tU2NoaW1tZXIgc3RhdHQgYmVpZ2VtIExpY2h0aG9mIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuXG4ubW9tZW50LXNlY3Rpb24sXG4uYXV0aC1zZWN0aW9uLFxuLmNoZWNrb3V0LXJlc3VsdCxcbi5sZWdhbC1zZWN0aW9uIHtcbiAgYmFja2dyb3VuZDpcbiAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCB0b3AsIHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS1yZ2IpLCAwLjE2KSAwJSwgdHJhbnNwYXJlbnQgNjAlKSxcbiAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCBib3R0b20sIHJnYmEodmFyKC0tZWMtZ29sZC1yZ2IpLCAwLjA2KSAwJSwgdHJhbnNwYXJlbnQgNTUlKSxcbiAgICB2YXIoLS1jb2xvci1iZyk7XG59XG5cbi8qIExpbmtzIGluIEZsaWXDn3RleHQtQmVyZWljaGVuIGluIEdvbGQgKFJ1YmluLVRleHQgd8OkcmUgYXVmIGR1bmtsZW0gR3J1bmQgenUgc2Nod2FjaCkgKi9cbi5sZWdhbC1jb250ZW50IGEsXG4uYXV0aC1mb3JtIGEsXG4uYXV0aC1saW5rcyBhLFxuLmZvcm0taGludCBhLFxuLmNoZWNrb3V0LXJlc3VsdCBhOm5vdCguYnRuKSB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1hY2NlbnQpO1xuICBib3JkZXItYm90dG9tLWNvbG9yOiByZ2JhKHZhcigtLWVjLWdvbGQtcmdiKSwgMC40NSk7XG59XG5cbi8qIOKUgOKUgCBTaG9wOiBQcm9kdWt0a2FydGVuIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuXG4ucHJvZHVjdHMtc2VjdGlvbiAucHJvZHVjdC1jYXJkIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmctd2hpdGUpO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWVjLWdvbGQtcmdiKSwgMC4yMik7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTUpO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS10cmFuc2l0aW9uLWJhc2UpLCBib3gtc2hhZG93IDAuMzVzIHZhcigtLWVjLWVhc2UpO1xufVxuLnByb2R1Y3RzLXNlY3Rpb24gLnByb2R1Y3QtY2FyZDpob3ZlciB7IGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1lYy1nb2xkLXJnYiksIDAuNTUpOyBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctZ29sZCk7IH1cbi5wcm9kdWN0cy1zZWN0aW9uIC5wcm9kdWN0LWNhcmQgaDMgeyBmb250LWZhbWlseTogdmFyKC0tZm9udC1oZWFkaW5nKTsgZm9udC1zdHlsZTogaXRhbGljOyBmb250LXNpemU6IDEuNXJlbTsgfVxuXG4vKiBQbGF0emhhbHRlciBvaG5lIFByb2R1a3RiaWxkOiBTY2hsw7xzc2VsbG9jaCBzdGF0dCBkZXMgRW1vamlzIGRlciBCYXNpcyAqL1xuLnByb2R1Y3QtaW1hZ2UtcGxhY2Vob2xkZXIge1xuICBmb250LXNpemU6IDA7XG4gIG1pbi1oZWlnaHQ6IDEyMHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cbi5wcm9kdWN0LWltYWdlLXBsYWNlaG9sZGVyOjpiZWZvcmUge1xuICBjb250ZW50OiBcIlwiO1xuICB3aWR0aDogMzRweDtcbiAgaGVpZ2h0OiA0NnB4O1xuICBiYWNrZ3JvdW5kOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDQ4IDY0JyUzRSUzQ2cgZmlsbD0nJTIzRDhCMDdBJyUzRSUzQ2NpcmNsZSBjeD0nMjQnIGN5PScyMicgcj0nMTMnLyUzRSUzQ3BhdGggZD0nTTE3IDMxIEwxMiA1OCBIMzYgTDMxIDMxIFonLyUzRSUzQy9nJTNFJTNDL3N2ZyUzRVwiKSBjZW50ZXIgLyBjb250YWluIG5vLXJlcGVhdDtcbn1cblxuLyog4pSA4pSAIFNvIGZ1bmt0aW9uaWVydCdzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuXG4uaGl3LWljb24ge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iZy13aGl0ZSk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1hY2NlbnQpO1xuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tZWMtZ29sZC1yZ2IpLCAwLjU1KTtcbn1cbi5oaXctc3RlcDpob3ZlciAuaGl3LWljb24sXG4uaGl3LXN0ZXA6Zm9jdXMtdmlzaWJsZSAuaGl3LWljb24ge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgY29sb3I6ICNmZmY7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1nb2xkKTtcbn1cbi5oaXctbGFiZWwge1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdWJoZWFkaW5nKTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMTJlbTtcbiAgZm9udC1zaXplOiAwLjhyZW07XG59XG4uaGl3LWNvbm5lY3RvciB7IGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1lYy1nb2xkLXJnYiksIDAuNDUpOyB9XG5cbi8qIOKUgOKUgCBGQVEg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovXG5cbi5mYXEtc2VjdGlvbiB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHRyYW5zcGFyZW50IDAlLCByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktcmdiKSwgMC4wNykgMTAwJSk7XG59XG4uZmFxLWl0ZW0geyBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iZy13aGl0ZSk7IH1cbi5mYXEtcXVlc3Rpb24geyBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7IH1cbi5mYXEtaWNvbiB7IGNvbG9yOiB2YXIoLS1jb2xvci1hY2NlbnQpOyB9XG5cbi8qIOKUgOKUgCBGb290ZXIg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovXG5cbi5zaXRlLWZvb3RlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJnLWRhcmspO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSh2YXIoLS1lYy1nb2xkLXJnYiksIDAuMik7XG59XG4uZm9vdGVyLWxpbmtzIGg0IHtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc3ViaGVhZGluZyk7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGxldHRlci1zcGFjaW5nOiAwLjE2ZW07XG4gIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWFjY2VudCk7XG59XG4uZm9vdGVyLWxpbmtzIGE6aG92ZXIgeyBjb2xvcjogdmFyKC0tY29sb3ItYWNjZW50LWxpZ2h0KTsgfVxuXG4vKiDilIDilIAgS29uZmlndXJhdG9yIChCZWRpZW5vYmVyZmzDpGNoZSwgTklDSFQgZGllIEthbGVuZGVyZmzDpGNoZSkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovXG5cbi5tb2RlLW9wdGlvbiB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJnLXdoaXRlKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tZWMtZ29sZC1yZ2IpLCAwLjMpO1xufVxuLm1vZGUtb3B0aW9uLmFjdGl2ZSB7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDFweCB2YXIoLS1jb2xvci1wcmltYXJ5KSwgMCAwIDE4cHggcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LXJnYiksIDAuMzUpO1xufVxuXG4uZ2JjLW1vZGFsLWNvbnRlbnQge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iZy13aGl0ZSk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1lYy1nb2xkLXJnYiksIDAuMjUpO1xufVxuLmdiYy1tb2RhbC1oZWFkZXIgeyBib3JkZXItYm90dG9tLWNvbG9yOiByZ2JhKHZhcigtLWVjLWdvbGQtcmdiKSwgMC4yKTsgfVxuLmdiYy1tb2RhbC1jbG9zZSB7IGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTsgfVxuLmdiYy1tb2RhbC11cGxvYWQtYXJlYSB7XG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3ItdGV4dC1yZ2IpLCAwLjAzKTtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWVjLWdvbGQtcmdiKSwgMC40NSk7XG59XG4uZ2JjLXRhYi1idG4geyBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1tdXRlZCk7IH1cbi5nYmMtdGFiLWJ0bi5hY3RpdmUgeyBjb2xvcjogdmFyKC0tY29sb3ItYWNjZW50KTsgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1hY2NlbnQpOyB9XG5cbi5nYmMtY29sbGFwc2libGUtdG9nZ2xlLFxuLmdiYy1hZGQtdGl0bGUtYnRuIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmctd2hpdGUpO1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1lYy1nb2xkLXJnYiksIDAuMyk7XG59XG5cbi8qIEJpbGQtVm9yc2NoYXUgKFdhcmVua29yYi9MaWdodGJveCkgYmxlaWJ0IGhlbGwg4oCUIHNpZSB6ZWlndCBkZW4gRHJ1Y2sgKi9cblxuLyogUFdBLUhpbndlaXMsIFRlc3Rtb2R1cyBibGVpYmVuIGZ1bmt0aW9uYWw7IG51ciBkZXIgSW5zdGFsbC1CYW5uZXIgd2lyZCBkdW5rZWwgKi9cbi5wd2EtaW5zdGFsbC1iYW5uZXIge1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWVjLWdvbGQtcmdiKSwgMC4zKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgS29tcG9uZW50ZW4gZGVyIE1hcmtlXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiDilIDilIAgSGlud2VpcyDigJ5hYiAxOOKAnCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cblxuYm9keTpoYXMoLmVjLWFnZSkgeyBvdmVyZmxvdzogaGlkZGVuOyB9XG5cbi5lYy1hZ2Uge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGluc2V0OiAwO1xuICB6LWluZGV4OiAxMDA1MDsgLyogw7xiZXIgSGVhZGVyICgxMDAwMSkgdW5kIE1vZGFscyAoMTAwMTApICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBwYWRkaW5nOiAxNnB4O1xuICBiYWNrZ3JvdW5kOlxuICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDUwJSAzNSUsIHJnYmEoOTAsIDE2LCAzNiwgMC45MikgMCUsIHJnYmEoMTMsIDYsIDgsIDAuOTcpIDcwJSk7XG4gIC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOiBibHVyKDZweCk7XG4gIGJhY2tkcm9wLWZpbHRlcjogYmx1cig2cHgpO1xufVxuXG4uZWMtYWdlLWNhcmQge1xuICB3aWR0aDogY2FsYygxMDAlIC0gMzJweCk7XG4gIG1heC13aWR0aDogNDYwcHg7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHBhZGRpbmc6IDQwcHggMzJweCAzMnB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJnLXdoaXRlKTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1lYy1nb2xkLXJnYiksIDAuMzUpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3cteGwpO1xuICBhbmltYXRpb246IGVjLXJldmVhbCAwLjZzIHZhcigtLWVjLWVhc2UpIGJvdGg7XG59XG5cbi5lYy1hZ2Uta2V5aG9sZSB7IGRpc3BsYXk6IGJsb2NrOyB3aWR0aDogNDBweDsgaGVpZ2h0OiA1NHB4OyBmaWxsOiB2YXIoLS1jb2xvci1hY2NlbnQpOyBtYXJnaW46IDAgYXV0byAxOHB4OyB9XG4uZWMtYWdlLXRpdGxlIHsgZm9udC1zaXplOiAycmVtOyBmb250LXN0eWxlOiBpdGFsaWM7IGZvbnQtd2VpZ2h0OiA2MDA7IG1hcmdpbi1ib3R0b206IDEycHg7IGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTsgfVxuLmVjLWFnZS10ZXh0IHsgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpOyBtYXJnaW4tYm90dG9tOiAyNnB4OyB9XG4uZWMtYWdlLWFjdGlvbnMgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDE0cHg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IH1cbi5lYy1hZ2UtbGVhdmUgeyBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1tdXRlZCk7IGZvbnQtc2l6ZTogMC45cmVtOyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgdGV4dC11bmRlcmxpbmUtb2Zmc2V0OiAzcHg7IH1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gIC5lYy1hZ2UgeyBwYWRkaW5nOiAwOyB9XG4gIC5lYy1hZ2UtY2FyZCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICBib3JkZXI6IDA7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB9XG59XG5cbi8qIOKUgOKUgCBIZXJvIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuXG4uZWMtaGVybyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgbWluLWhlaWdodDogY2xhbXAoNDYwcHgsIDcydmgsIDY4MHB4KTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgYmFja2dyb3VuZDogdmFyKC0tZ3JhZGllbnQtaGVybyk7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKHZhcigtLWVjLWdvbGQtcmdiKSwgMC4xOCk7XG59XG5cbi5lYy1oZXJvLW1lZGlhIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbnNldDogMDtcbiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLyogU2VpZGVud2VsbGUgaW4gUnViaW4gKyBmZWluZSBHb2xkbGluaWUgKHdlaWNoZSBLdXJ2ZW4sIHNrYWxpZXJ0IG1pdCkgKi9cbi5lYy1oZXJvLW1lZGlhOjpiZWZvcmUge1xuICBjb250ZW50OiBcIlwiO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IC0xcHg7XG4gIGhlaWdodDogNTIlO1xuICBiYWNrZ3JvdW5kOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDE0NDAgMzIwJyBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSdub25lJyUzRSUzQ2RlZnMlM0UlM0NsaW5lYXJHcmFkaWVudCBpZD0nZycgeDE9JzAnIHgyPScxJyUzRSUzQ3N0b3Agb2Zmc2V0PScwJyBzdG9wLWNvbG9yPSclMjNDNDFFNEEnIHN0b3Atb3BhY2l0eT0nMC4wNCcvJTNFJTNDc3RvcCBvZmZzZXQ9JzAuNScgc3RvcC1jb2xvcj0nJTIzQzQxRTRBJyBzdG9wLW9wYWNpdHk9JzAuMycvJTNFJTNDc3RvcCBvZmZzZXQ9JzEnIHN0b3AtY29sb3I9JyUyM0M0MUU0QScgc3RvcC1vcGFjaXR5PScwLjA4Jy8lM0UlM0MvbGluZWFyR3JhZGllbnQlM0UlM0MvZGVmcyUzRSUzQ3BhdGggZD0nTTAgMTcwIEMgMjQwIDkwIDQyMCAyNjAgNzIwIDE3MCBTIDEyMDAgNjAgMTQ0MCAxMjAgTDE0NDAgMzIwIEwwIDMyMCBaJyBmaWxsPSd1cmwoJTIzZyknLyUzRSUzQ3BhdGggZD0nTTAgMjA1IEMgMjYwIDEyNSA0NDAgMjk1IDc0NSAyMDUgUyAxMjEwIDEwMCAxNDQwIDE1NScgZmlsbD0nbm9uZScgc3Ryb2tlPSclMjNEOEIwN0EnIHN0cm9rZS1vcGFjaXR5PScwLjQnIHN0cm9rZS13aWR0aD0nMS41JyB2ZWN0b3ItZWZmZWN0PSdub24tc2NhbGluZy1zdHJva2UnLyUzRSUzQy9zdmclM0VcIikgYm90dG9tIGNlbnRlciAvIDEwMCUgMTAwJSBuby1yZXBlYXQ7XG59XG5cbi5lYy1oZXJvLWdsb3cge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiA2MHZtYXg7XG4gIGhlaWdodDogNjB2bWF4O1xuICByaWdodDogLTE4dm1heDtcbiAgdG9wOiAtMjJ2bWF4O1xuICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktcmdiKSwgMC4zNSkgMCUsIHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS1yZ2IpLCAwKSA2MCUpO1xuICBhbmltYXRpb246IGVjLWJyZWF0aGUgOXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG59XG5cbi5lYy1oZXJvLWJva2VoIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbnNldDogMDtcbiAgYmFja2dyb3VuZDpcbiAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDc4JSAyMiUsIHJnYmEoMjQwLCAyMTEsIDE2MiwgMC4zOCkgMCwgcmdiYSgyNDAsIDIxMSwgMTYyLCAwKSA0LjV2bWF4KSxcbiAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDg4JSA0NCUsIHJnYmEoMjQwLCAyMTEsIDE2MiwgMC4yOCkgMCwgcmdiYSgyNDAsIDIxMSwgMTYyLCAwKSAyLjZ2bWF4KSxcbiAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDY3JSA0OCUsIHJnYmEoMjQwLCAyMTEsIDE2MiwgMC4yMikgMCwgcmdiYSgyNDAsIDIxMSwgMTYyLCAwKSAxLjZ2bWF4KSxcbiAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDkyJSAxMiUsIHJnYmEoMjQwLCAyMTEsIDE2MiwgMC4zKSAwLCByZ2JhKDI0MCwgMjExLCAxNjIsIDApIDEuMnZtYXgpO1xufVxuXG4vKiBIZXJvLUZvdG8gKDIwMjYtMTAtMDksIEJldHJlaWJlci1MaWVmZXJ1bmcsIFJlZ2lzdGVyIEVST1RJQ0NBTEVOREFSX1BMQU4ubWRcbiAgIMKnIDQuNCkuIERhcyBGb3RvIGlzdCBoZWxsLCBkaWUgQsO8aG5lIFZlbHZldCBOb2lyOiBFcyBsaWVndCByZWNodHMgYWxzIEZsw6RjaGVcbiAgIGluIHZvbGxlciBIZXJvLUjDtmhlIHVuZCBsw6R1ZnQgcGVyIE1hc2tlIG5hY2ggbGlua3MgaW4gZGVuIFNhbXQtVmVybGF1ZiBhdXMg4oCUXG4gICBkaWUgbGlua2UgU2VpdGUgYmxlaWJ0IHJ1aGlnIGbDvHIgSGVhZGxpbmUgdW5kIENUQSwgb2huZSBLYW50ZSB6dW0gVmVybGF1Zi5cbiAgIEFscyA6OmFmdGVyIGxpZWd0IGVzIMO8YmVyIEdsw7xoZW4sIEJva2VoIHVuZCBTZWlkZW53ZWxsZTsgZGllIHNjaGVpbmVuIG51clxuICAgZG9ydCBkdXJjaCwgd28gZXMgYXVzbMOkdWZ0LiBVbnRlciA5MDAgcHggc3RlaHQgZXMgYWxzIEJpbGQgw7xiZXIgZGVtIFRleHRcbiAgIChNZWRpYS1RdWVyaWVzIHVudGVuKS4gQmlsZCBnZXRhdXNjaHQg4oeSID92PSBlcmjDtmhlbiAoc3cuanMgaMOkbHQgP3Y9LVVSTHNcbiAgIGbDvHIgdW52ZXLDpG5kZXJsaWNoKS4gKi9cbi5lYy1oZXJvLW1lZGlhOjphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogNjIlO1xuICBiYWNrZ3JvdW5kOiB1cmwoXCIvc3RhdGljL2JyYW5kcy9lcm90aWNjYWxlbmRhci9oZXJvL2hlcm8tMjAwMC53ZWJwP3Y9MjAyNjEwMDlcIikgNjIlIDMwJSAvIGNvdmVyIG5vLXJlcGVhdDtcbiAgLXdlYmtpdC1tYXNrLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50IDAlLCAjMDAwIDMwJSk7XG4gIG1hc2staW1hZ2U6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQgMCUsICMwMDAgMzAlKTtcbiAgYW5pbWF0aW9uOiBlYy1waG90by1pbiAxLjJzIHZhcigtLWVjLWVhc2UpIGJvdGg7XG59XG4vKiBOYXTDvHJsaWNoZSBCcmVpdGUgYXVzIGRlciBIw7ZoZSAoMjAwMCDDlyAxNDIyKSwgaMO2Y2hzdGVucyA2MiAlOiBhdWYgYnJlaXRlblxuICAgU2NoaXJtZW4gYmxlaWJ0IGRhcyBnYW56ZSBNb3RpdiBzaWNodGJhciwgYXVmIHNjaG1hbGVyZW4gc2NobmVpZGV0IOKAnmNvdmVy4oCcXG4gICBsaW5rcyBhYiAoS29wZnRlaWwpIOKAlCBHZXNpY2h0IHVuZCBLw7ZycGVyIGJsZWliZW4gcmVjaHRzIHZvbSBUZXh0LiAqL1xuQHN1cHBvcnRzIChhc3BlY3QtcmF0aW86IDEpIHtcbiAgLmVjLWhlcm8tbWVkaWE6OmFmdGVyIHtcbiAgICB3aWR0aDogYXV0bztcbiAgICBtYXgtd2lkdGg6IDYyJTtcbiAgICBhc3BlY3QtcmF0aW86IDIwMDAgLyAxNDIyO1xuICB9XG59XG5cbi5lYy1oZXJvLWlubmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nLXRvcDogdmFyKC0tc3BhY2UtMTYpO1xuICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2UtMTYpO1xuICBtYXgtd2lkdGg6IHZhcigtLWNvbnRhaW5lci1tYXgpO1xufVxuXG4uZWMtaGVyby1raWNrZXIge1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdWJoZWFkaW5nKTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMjJlbTtcbiAgZm9udC1zaXplOiAwLjc4cmVtO1xuICBjb2xvcjogdmFyKC0tY29sb3ItYWNjZW50KTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNCk7XG4gIGFuaW1hdGlvbjogZWMtcmV2ZWFsIDAuN3MgdmFyKC0tZWMtZWFzZSkgYm90aDtcbn1cblxuLmVjLWhlcm8tdGl0bGUge1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1oZWFkaW5nKTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgZm9udC1zaXplOiBjbGFtcCgyLjZyZW0sIDd2dywgNS4ycmVtKTtcbiAgbGluZS1oZWlnaHQ6IDEuMDI7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbiAgbWF4LXdpZHRoOiAxM2NoO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS02KTtcbiAgYW5pbWF0aW9uOiBlYy1yZXZlYWwgMC44cyAwLjA4cyB2YXIoLS1lYy1lYXNlKSBib3RoO1xufVxuXG4uZWMtaGVyby1zY3JpcHQge1xuICBkaXNwbGF5OiBibG9jaztcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc2NyaXB0KTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1zaXplOiAxLjE4ZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjA1O1xuICBjb2xvcjogdmFyKC0tY29sb3Itc2Vjb25kYXJ5KTtcbiAgbWFyZ2luLXRvcDogMC4wNWVtO1xufVxuXG4uZWMtaGVyby1zdWIge1xuICBtYXgtd2lkdGg6IDQ2Y2g7XG4gIGZvbnQtc2l6ZTogY2xhbXAoMXJlbSwgMS42dncsIDEuMTVyZW0pO1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1tdXRlZCk7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTgpO1xuICBhbmltYXRpb246IGVjLXJldmVhbCAwLjhzIDAuMTZzIHZhcigtLWVjLWVhc2UpIGJvdGg7XG59XG5cbi5lYy1oZXJvLWFjdGlvbnMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogdmFyKC0tc3BhY2UtNik7XG4gIGFuaW1hdGlvbjogZWMtcmV2ZWFsIDAuOHMgMC4yNHMgdmFyKC0tZWMtZWFzZSkgYm90aDtcbn1cblxuLmVjLWhlcm8tbW9yZSB7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXN1YmhlYWRpbmcpO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBsZXR0ZXItc3BhY2luZzogMC4xNGVtO1xuICBmb250LXNpemU6IDAuOHJlbTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKHZhcigtLWVjLWdvbGQtcmdiKSwgMC42KTtcbiAgcGFkZGluZy1ib3R0b206IDJweDtcbn1cbi5lYy1oZXJvLW1vcmU6aG92ZXIgeyBjb2xvcjogdmFyKC0tY29sb3ItYWNjZW50KTsgfVxuXG5AbWVkaWEgKG1heC13aWR0aDogNjAwcHgpIHtcbiAgLmVjLWhlcm8geyBtaW4taGVpZ2h0OiAwOyB9XG4gIC5lYy1oZXJvLWlubmVyIHsgcGFkZGluZy10b3A6IHZhcigtLXNwYWNlLTEyKTsgcGFkZGluZy1ib3R0b206IHZhcigtLXNwYWNlLTEyKTsgfVxuICAuZWMtaGVyby1hY3Rpb25zIHsgZ2FwOiB2YXIoLS1zcGFjZS00KTsgfVxuICAuZWMtaGVyby1hY3Rpb25zIC5idG4geyB3aWR0aDogMTAwJTsgfVxufVxuXG4vKiBIZXJvLUZvdG8gYWxzIEJpbGQgw7xiZXIgZGVtIFRleHQ6IG9iZW4gdm9sbCwgdW50ZW4gaW4gZGVuIEdydW5kIGF1c2xhdWZlbmQ7XG4gICBkZXIgVGV4dCBiZWdpbm50IGltIGF1c2dlbGF1ZmVuZW4gVGVpbC4gU3RlaHQgbmFjaCBkZW0gNjAwLXB4LUJsb2NrLCBkYW1pdFxuICAgZGFzIHBhZGRpbmctdG9wIGhpZXIgZ2V3aW5udC4gKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA4OTlweCkge1xuICAuZWMtaGVybyB7XG4gICAgLS1lYy1oZXJvLXBob3RvLWg6IG1pbig4M3Z3LCAzMHJlbSk7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIH1cbiAgLmVjLWhlcm8tbWVkaWE6OmFmdGVyIHtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1heC13aWR0aDogbm9uZTtcbiAgICBoZWlnaHQ6IHZhcigtLWVjLWhlcm8tcGhvdG8taCk7XG4gICAgYXNwZWN0LXJhdGlvOiBhdXRvO1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IDQwJSAzMCU7XG4gICAgLXdlYmtpdC1tYXNrLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCAjMDAwIDUwJSwgdHJhbnNwYXJlbnQgOTAlKTtcbiAgICBtYXNrLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCAjMDAwIDUwJSwgdHJhbnNwYXJlbnQgOTAlKTtcbiAgfVxuICAuZWMtaGVyby1pbm5lciB7IHBhZGRpbmctdG9wOiBjYWxjKHZhcigtLWVjLWhlcm8tcGhvdG8taCkgKiAwLjg4KTsgfVxufVxuQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7XG4gIC5lYy1oZXJvLW1lZGlhOjphZnRlciB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiL3N0YXRpYy9icmFuZHMvZXJvdGljY2FsZW5kYXIvaGVyby9oZXJvLTEyMDAud2VicD92PTIwMjYxMDA5XCIpO1xuICB9XG59XG5cbi8qIOKUgOKUgCBWZXJ0cmF1ZW5zbGVpc3RlIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuXG4uZWMtdHJ1c3QgeyBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iZy1kYXJrKTsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEodmFyKC0tZWMtZ29sZC1yZ2IpLCAwLjE1KTsgfVxuXG4uZWMtdHJ1c3QtbGlzdCB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIDFmcik7XG4gIGdhcDogdmFyKC0tc3BhY2UtNCk7XG4gIHBhZGRpbmctdG9wOiB2YXIoLS1zcGFjZS01KTtcbiAgcGFkZGluZy1ib3R0b206IHZhcigtLXNwYWNlLTUpO1xufVxuXG4uZWMtdHJ1c3QtbGlzdCBsaSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBnYXA6IHZhcigtLXNwYWNlLTMpO1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdWJoZWFkaW5nKTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMTJlbTtcbiAgZm9udC1zaXplOiAwLjc0cmVtO1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG59XG5cbi5lYy10cnVzdC1saXN0IHN2ZyB7XG4gIHdpZHRoOiAyMnB4O1xuICBoZWlnaHQ6IDIycHg7XG4gIGZsZXg6IG5vbmU7XG4gIGZpbGw6IG5vbmU7XG4gIHN0cm9rZTogdmFyKC0tY29sb3ItYWNjZW50KTtcbiAgc3Ryb2tlLXdpZHRoOiAxLjU7XG4gIHN0cm9rZS1saW5lY2FwOiByb3VuZDtcbiAgc3Ryb2tlLWxpbmVqb2luOiByb3VuZDtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gIC5lYy10cnVzdC1saXN0IHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTsgfVxuICAuZWMtdHJ1c3QtbGlzdCBsaSB7IGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsgfVxufVxuXG4vKiDilIDilIAgQW5sw6Rzc2Ug4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovXG5cbi5lYy1vY2Nhc2lvbnMgeyBwYWRkaW5nOiB2YXIoLS1zcGFjZS0xNikgMCB2YXIoLS1zcGFjZS0xMik7IH1cbi5lYy1vY2Nhc2lvbnMtc3ViIHsgdGV4dC1hbGlnbjogY2VudGVyOyBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1tdXRlZCk7IG1hcmdpbjogY2FsYygtMSAqIHZhcigtLXNwYWNlLTIpKSAwIHZhcigtLXNwYWNlLTgpOyB9XG5cbi5lYy1vY2Nhc2lvbnMtZ3JpZCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDUsIDFmcik7XG4gIGdhcDogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi5lYy1vY2Nhc2lvbiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0yKTtcbiAgbWluLWhlaWdodDogMjEwcHg7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTUpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWVjLWdvbGQtcmdiKSwgMC4yMik7XG4gIGJhY2tncm91bmQ6XG4gICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA4MCUgMTUlLCByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktcmdiKSwgMC4zNSkgMCUsIHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS1yZ2IpLCAwKSA1NSUpLFxuICAgIGxpbmVhci1ncmFkaWVudCgxNjBkZWcsICMyRjE3MjAgMCUsICMxQTBDMTEgMTAwJSk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zNXMgdmFyKC0tZWMtZWFzZSksIGJvcmRlci1jb2xvciB2YXIoLS10cmFuc2l0aW9uLWJhc2UpLCBib3gtc2hhZG93IDAuMzVzIHZhcigtLWVjLWVhc2UpO1xufVxuLmVjLW9jY2FzaW9uOjpiZWZvcmUge1xuICAvKiBTY2hsw7xzc2VsbG9jaCBhbHMgV2Fzc2VyemVpY2hlbiAqL1xuICBjb250ZW50OiBcIlwiO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMThweDtcbiAgcmlnaHQ6IDE4cHg7XG4gIHdpZHRoOiAyNnB4O1xuICBoZWlnaHQ6IDM2cHg7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWFjY2VudCk7XG4gIG9wYWNpdHk6IDAuNTU7XG4gIC13ZWJraXQtbWFzazogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA0OCA2NCclM0UlM0NjaXJjbGUgY3g9JzI0JyBjeT0nMjInIHI9JzEzJy8lM0UlM0NwYXRoIGQ9J00xNyAzMSBMMTIgNTggSDM2IEwzMSAzMSBaJy8lM0UlM0Mvc3ZnJTNFXCIpIGNlbnRlciAvIGNvbnRhaW4gbm8tcmVwZWF0O1xuICBtYXNrOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDQ4IDY0JyUzRSUzQ2NpcmNsZSBjeD0nMjQnIGN5PScyMicgcj0nMTMnLyUzRSUzQ3BhdGggZD0nTTE3IDMxIEwxMiA1OCBIMzYgTDMxIDMxIFonLyUzRSUzQy9zdmclM0VcIikgY2VudGVyIC8gY29udGFpbiBuby1yZXBlYXQ7XG4gIHotaW5kZXg6IDI7XG59XG5cbi8qIEthcnRlbmZvdG8gKDIwMjYtMTAtMDgpOiBsaWVndCB1bnRlciBWZXJsYXVmLCBTY2hsw7xzc2VsbG9jaCB1bmQgVGV4dC4gRGVyXG4gICBWZXJsYXVmIGR1bmtlbHQgZGllIHRlaWxzIGhlbGxlbiBGb3RvcyBhdWYgVmVsdmV0IE5vaXIgYWIgdW5kIGjDpGx0IGRlbiBUZXh0XG4gICB1bnRlbiBsZXNiYXI7IGJpcyBkYXMgQmlsZCBnZWxhZGVuIGlzdCwgYmxlaWJ0IGRlciBLYXJ0ZW52ZXJsYXVmIHNpY2h0YmFyLiAqL1xuLmVjLW9jY2FzaW9uLWltZyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQ6IDA7XG4gIHotaW5kZXg6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG9iamVjdC1maXQ6IGNvdmVyO1xuICBmaWx0ZXI6IHNhdHVyYXRlKDAuODUpO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC42cyB2YXIoLS1lYy1lYXNlKTtcbn1cbi5lYy1vY2Nhc2lvbjo6YWZ0ZXIge1xuICBjb250ZW50OiBcIlwiO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGluc2V0OiAwO1xuICB6LWluZGV4OiAxO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLFxuICAgIHJnYmEodmFyKC0tZWMtbmlnaHQtcmdiKSwgMC4yKSAwJSxcbiAgICByZ2JhKHZhcigtLWVjLW5pZ2h0LXJnYiksIDAuNSkgNDIlLFxuICAgIHJnYmEodmFyKC0tZWMtbmlnaHQtcmdiKSwgMC45NCkgMTAwJSk7XG59XG4uZWMtb2NjYXNpb24tbmFtZSxcbi5lYy1vY2Nhc2lvbi10ZXh0IHsgcG9zaXRpb246IHJlbGF0aXZlOyB6LWluZGV4OiAyOyB9XG4uZWMtb2NjYXNpb24tbmFtZSB7IHRleHQtc2hhZG93OiAwIDFweCAxMnB4IHJnYmEodmFyKC0tZWMtbmlnaHQtcmdiKSwgMC43KTsgfVxuLmVjLW9jY2FzaW9uOmhvdmVyIC5lYy1vY2Nhc2lvbi1pbWcsXG4uZWMtb2NjYXNpb246Zm9jdXMtdmlzaWJsZSAuZWMtb2NjYXNpb24taW1nIHsgdHJhbnNmb3JtOiBzY2FsZSgxLjA1KTsgfVxuLmVjLW9jY2FzaW9uLS12YWxlbnRpbmUgLmVjLW9jY2FzaW9uLWltZyB7IG9iamVjdC1wb3NpdGlvbjogNzAlIDUwJTsgfVxuLmVjLW9jY2FzaW9uLS13ZWRkaW5nIC5lYy1vY2Nhc2lvbi1pbWcgeyBvYmplY3QtcG9zaXRpb246IDM1JSA1MCU7IH1cbi5lYy1vY2Nhc2lvbjpob3Zlcixcbi5lYy1vY2Nhc2lvbjpmb2N1cy12aXNpYmxlIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpO1xuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tZWMtZ29sZC1yZ2IpLCAwLjYpO1xuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctZ29sZCk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbn1cblxuLmVjLW9jY2FzaW9uLW5hbWUge1xuICAtd2Via2l0LWh5cGhlbnM6IGF1dG87XG4gIGh5cGhlbnM6IGF1dG87XG4gIG92ZXJmbG93LXdyYXA6IGFueXdoZXJlO1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1oZWFkaW5nKTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICBmb250LXdlaWdodDogNjAwO1xuICBmb250LXNpemU6IDEuNDVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjE1O1xufVxuLmVjLW9jY2FzaW9uLXRleHQgeyBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1tdXRlZCk7IGZvbnQtc2l6ZTogMC45MnJlbTsgbGluZS1oZWlnaHQ6IDEuNDU7IH1cblxuLmVjLW9jY2FzaW9uLS1hZHZlbnQgeyBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDgwJSAxNSUsIHJnYmEodmFyKC0tZWMtZ29sZC1yZ2IpLCAwLjI4KSAwJSwgcmdiYSh2YXIoLS1lYy1nb2xkLXJnYiksIDApIDU1JSksIGxpbmVhci1ncmFkaWVudCgxNjBkZWcsICMyQTFBMTYgMCUsICMxNjBDMEMgMTAwJSk7IH1cbi5lYy1vY2Nhc2lvbi0td2VkZGluZyB7IGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgODAlIDE1JSwgcmdiYSgyMzIsIDE4MCwgMTg0LCAwLjMpIDAlLCByZ2JhKDIzMiwgMTgwLCAxODQsIDApIDU1JSksIGxpbmVhci1ncmFkaWVudCgxNjBkZWcsICMyRjFBMjIgMCUsICMxODBDMTEgMTAwJSk7IH1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAuZWMtb2NjYXNpb25zLWdyaWQgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpOyB9XG59XG5AbWVkaWEgKG1heC13aWR0aDogNjAwcHgpIHtcbiAgLmVjLW9jY2FzaW9ucy1ncmlkIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyOyB9XG4gIC5lYy1vY2Nhc2lvbiB7IG1pbi1oZWlnaHQ6IDE3MHB4OyBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KTsgfVxuICAuZWMtb2NjYXNpb246OmJlZm9yZSB7IHRvcDogMTJweDsgcmlnaHQ6IDEycHg7IHdpZHRoOiAxNnB4OyBoZWlnaHQ6IDIycHg7IG9wYWNpdHk6IDAuNDsgfVxuICAuZWMtb2NjYXNpb24tbmFtZSB7IGZvbnQtc2l6ZTogMS4ycmVtOyBwYWRkaW5nLXJpZ2h0OiAxNHB4OyB9XG59XG5cbi8qIOKUgOKUgCBCZXdlZ3VuZyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cblxuQGtleWZyYW1lcyBlYy1yZXZlYWwge1xuICBmcm9tIHsgb3BhY2l0eTogMDsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDE0cHgpOyBjbGlwLXBhdGg6IGluc2V0KDAgMCAxMDAlIDApOyB9XG4gIHRvICAgeyBvcGFjaXR5OiAxOyB0cmFuc2Zvcm06IG5vbmU7IGNsaXAtcGF0aDogaW5zZXQoMCAwIDAgMCk7IH1cbn1cbkBrZXlmcmFtZXMgZWMtYnJlYXRoZSB7XG4gIDAlLCAxMDAlIHsgb3BhY2l0eTogMC44NTsgdHJhbnNmb3JtOiBzY2FsZSgxKTsgfVxuICA1MCUgICAgICB7IG9wYWNpdHk6IDE7IHRyYW5zZm9ybTogc2NhbGUoMS4wNik7IH1cbn1cbkBrZXlmcmFtZXMgZWMtcGhvdG8taW4ge1xuICBmcm9tIHsgb3BhY2l0eTogMDsgfVxuICB0byAgIHsgb3BhY2l0eTogMTsgfVxufVxuXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAuZWMtYWdlLWNhcmQsXG4gIC5lYy1oZXJvLWtpY2tlcixcbiAgLmVjLWhlcm8tdGl0bGUsXG4gIC5lYy1oZXJvLXN1YixcbiAgLmVjLWhlcm8tYWN0aW9ucyxcbiAgLmVjLWhlcm8tZ2xvdyxcbiAgLmVjLWhlcm8tbWVkaWE6OmFmdGVyIHsgYW5pbWF0aW9uOiBub25lOyB9XG4gIC5lYy1vY2Nhc2lvbixcbiAgLmVjLW9jY2FzaW9uLWltZyB7IHRyYW5zaXRpb246IG5vbmU7IH1cbn1cbiJdfQ== */