/*!**************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[1].use[1]!./assets/styles/app.css ***!
  \**************************************************************************************************************/
/* ─── Reset & Base ─────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
  --bg:            #080b14;
  --bg-card:       #0d1120;
  --bg-subtle:     #0a0d18;
  --border:        rgba(255,255,255,0.06);
  --border-accent: rgba(56,189,248,0.22);
  --text:          #c2c8d8;
  --text-muted:    #6b7280;
  --text-light:    #e2e8f0;
  --accent:        #38bdf8;
  --accent-2:      #818cf8;
  --accent-h:      #0ea5e9;
  --accent-glow:   rgba(56,189,248,0.18);
  --gradient:      linear-gradient(135deg, #38bdf8 0%, #818cf8 100%);
  --gradient-bg:   linear-gradient(135deg, rgba(56,189,248,0.07) 0%, rgba(129,140,248,0.07) 100%);
  --radius:        12px;
  --transition:    0.25s cubic-bezier(0.4, 0, 0.2, 1);
  --glow-sm:       0 0 20px rgba(56,189,248,0.12);
  --glow-md:       0 0 40px rgba(56,189,248,0.18), 0 0 80px rgba(129,140,248,0.1);
}

html { scroll-behavior: smooth; }

body {
  font-family: 'Inter', 'Segoe UI', Roboto, sans-serif;
  background: var(--bg);
  color: var(--text);
  line-height: 1.6;
  font-size: 16px;
  -webkit-font-smoothing: antialiased;
}

a { color: inherit; text-decoration: none; }
img { max-width: 100%; display: block; }
ul { list-style: none; }

.container {
  max-width: 1100px;
  margin: 0 auto;
  padding: 0 24px;
}

/* ─── Scrollbar ─────────────────────────────────────────────── */
::-webkit-scrollbar { width: 5px; }
::-webkit-scrollbar-track { background: var(--bg); }
::-webkit-scrollbar-thumb { background: rgba(56,189,248,0.18); border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: rgba(56,189,248,0.38); }

/* ─── Gradient Text ─────────────────────────────────────────── */
.gradient-text {
  background: var(--gradient);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

/* ─── Scroll Reveal ─────────────────────────────────────────── */
.reveal {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 0.7s cubic-bezier(0.16, 1, 0.3, 1),
              transform 0.7s cubic-bezier(0.16, 1, 0.3, 1);
}
.reveal.visible { opacity: 1; transform: translateY(0); }
.reveal-delay-1 { transition-delay: 0.1s; }
.reveal-delay-2 { transition-delay: 0.2s; }
.reveal-delay-3 { transition-delay: 0.3s; }
.reveal-delay-4 { transition-delay: 0.4s; }
.reveal-delay-5 { transition-delay: 0.5s; }

/* ─── Header / Nav ──────────────────────────────────────────── */
header {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 100;
  background: rgba(8,11,20,0.7);
  backdrop-filter: blur(18px) saturate(180%);
  -webkit-backdrop-filter: blur(18px) saturate(180%);
  border-bottom: 1px solid var(--border);
  transition: background var(--transition), border-color var(--transition);
}
header.scrolled {
  background: rgba(8,11,20,0.92);
  border-bottom-color: rgba(56,189,248,0.1);
}

nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 64px;
}

.logo {
  display: flex;
  align-items: center;
  font-size: 1.25rem;
  font-weight: 700;
  color: var(--text-light);
  letter-spacing: -0.02em;
  transition: filter var(--transition);
}
.logo:hover { filter: drop-shadow(0 0 10px rgba(56,189,248,0.45)); }
.logo span { color: var(--accent); }
.logo-img { height: 32px; width: auto; display: block; }

.nav-links {
  display: flex;
  gap: 32px;
  align-items: center;
}

.nav-links a {
  font-size: 0.875rem;
  color: var(--text-muted);
  transition: color var(--transition);
  font-weight: 400;
  position: relative;
}
.nav-links a::after {
  content: '';
  position: absolute;
  bottom: -4px; left: 0; right: 0;
  height: 1px;
  background: var(--gradient);
  transform: scaleX(0);
  transition: transform var(--transition);
  border-radius: 1px;
}
.nav-links a:hover { color: var(--accent); }
.nav-links a:hover::after { transform: scaleX(1); }

.nav-cta {
  font-size: 0.875rem !important;
  font-weight: 500 !important;
  color: #05090f !important;
  background: var(--accent) !important;
  padding: 8px 18px;
  border-radius: 6px;
  transition: all var(--transition) !important;
  position: relative;
  overflow: hidden;
}
.nav-cta::after { display: none !important; }
.nav-cta:hover {
  background: var(--accent-h) !important;
  color: #fff !important;
  transform: translateY(-1px) !important;
  box-shadow: 0 4px 20px rgba(56,189,248,0.4) !important;
}

/* Hamburger */
.hamburger {
  display: none;
  flex-direction: column;
  gap: 5px;
  cursor: pointer;
  padding: 4px;
  background: none;
  border: none;
}
.hamburger span {
  display: block;
  width: 22px; height: 2px;
  background: var(--text);
  border-radius: 2px;
  transition: var(--transition);
}
.hamburger.open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.hamburger.open span:nth-child(2) { opacity: 0; }
.hamburger.open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* Mobile nav */
.mobile-menu {
  display: none;
  flex-direction: column;
  border-top: 1px solid var(--border);
  background: rgba(8,11,20,0.97);
  padding: 12px 0 16px;
}
.mobile-menu.open { display: flex; }
.mobile-menu a {
  padding: 12px 24px;
  font-size: 0.9rem;
  color: var(--text-muted);
  transition: color var(--transition), background var(--transition);
}
.mobile-menu a:hover { color: var(--accent); background: rgba(56,189,248,0.04); }
.mobile-menu .nav-cta {
  margin: 8px 24px 0;
  padding: 10px 18px !important;
  text-align: center;
  border-radius: 6px;
}

/* ─── Section Base ──────────────────────────────────────────── */
section { padding: 96px 0; }

.section-label {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-size: 0.72rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--accent);
  margin-bottom: 14px;
}
.section-label::before {
  content: '';
  width: 24px; height: 1px;
  background: var(--gradient);
  opacity: 0.7;
  border-radius: 1px;
}

.section-title {
  font-size: clamp(1.75rem, 3vw, 2.5rem);
  font-weight: 700;
  color: var(--text-light);
  letter-spacing: -0.03em;
  line-height: 1.18;
  margin-bottom: 16px;
}

.section-desc {
  font-size: 1rem;
  color: var(--text-muted);
  max-width: 560px;
  line-height: 1.75;
}

.section-header { margin-bottom: 56px; }
.section-header.centered { text-align: center; }
.section-header.centered .section-label { justify-content: center; }
.section-header.centered .section-label::before { display: none; }
.section-header.centered .section-desc { margin: 0 auto; }

/* ─── Hero ──────────────────────────────────────────────────── */
#hero {
  padding-top: 140px;
  padding-bottom: 96px;
  position: relative;
  overflow: hidden;
}

/* Animated grid background */
.hero-bg-grid {
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(56,189,248,0.03) 1px, transparent 1px),
    linear-gradient(90deg, rgba(56,189,248,0.03) 1px, transparent 1px);
  background-size: 60px 60px;
  pointer-events: none;
  mask-image: radial-gradient(ellipse 80% 80% at 50% 50%, black 30%, transparent 100%);
  -webkit-mask-image: radial-gradient(ellipse 80% 80% at 50% 50%, black 30%, transparent 100%);
}

/* Glow orbs */
#hero::before {
  content: '';
  position: absolute;
  top: -200px; right: -150px;
  width: 700px; height: 700px;
  background: radial-gradient(circle, rgba(56,189,248,0.07) 0%, transparent 65%);
  pointer-events: none;
}
#hero::after {
  content: '';
  position: absolute;
  bottom: -180px; left: -120px;
  width: 600px; height: 600px;
  background: radial-gradient(circle, rgba(129,140,248,0.06) 0%, transparent 65%);
  pointer-events: none;
}

.hero-inner {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 64px;
  align-items: center;
  position: relative;
  z-index: 1;
}

.hero-badge {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  background: rgba(56,189,248,0.07);
  border: 1px solid rgba(56,189,248,0.2);
  color: var(--accent);
  font-size: 0.78rem;
  font-weight: 500;
  padding: 6px 14px;
  border-radius: 100px;
  margin-bottom: 22px;
  letter-spacing: 0.03em;
  backdrop-filter: blur(8px);
}

.badge-dot {
  width: 7px; height: 7px;
  border-radius: 50%;
  background: var(--accent);
  box-shadow: 0 0 6px var(--accent);
  animation: pulse-dot 2.2s ease-in-out infinite;
  flex-shrink: 0;
}
@keyframes pulse-dot {
  0%, 100% { box-shadow: 0 0 0 0 rgba(56,189,248,0.6); }
  50%       { box-shadow: 0 0 0 6px rgba(56,189,248,0); }
}

.hero-title {
  font-size: clamp(2rem, 4vw, 3.3rem);
  font-weight: 700;
  color: var(--text-light);
  letter-spacing: -0.04em;
  line-height: 1.12;
  margin-bottom: 22px;
}

.hero-desc {
  font-size: 1.05rem;
  color: var(--text-muted);
  line-height: 1.8;
  margin-bottom: 38px;
  max-width: 480px;
}

.hero-actions {
  display: flex;
  gap: 14px;
  flex-wrap: wrap;
}

/* Buttons */
.btn-primary {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: var(--accent);
  color: #05090f;
  font-size: 0.9rem;
  font-weight: 600;
  padding: 13px 26px;
  border-radius: var(--radius);
  transition: all var(--transition);
  border: none;
  cursor: pointer;
  position: relative;
  overflow: hidden;
}
.btn-primary::before {
  content: '';
  position: absolute;
  top: 0; left: -100%;
  width: 100%; height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.18), transparent);
  transition: left 0.45s ease;
}
.btn-primary:hover {
  background: var(--accent-h);
  transform: translateY(-2px);
  box-shadow: 0 8px 32px rgba(56,189,248,0.4);
  color: #fff;
}
.btn-primary:hover::before { left: 100%; }

.btn-outline {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: transparent;
  color: var(--text);
  font-size: 0.9rem;
  font-weight: 500;
  padding: 13px 26px;
  border-radius: var(--radius);
  border: 1px solid var(--border);
  transition: all var(--transition);
  cursor: pointer;
}
.btn-outline:hover {
  border-color: rgba(56,189,248,0.3);
  color: var(--accent);
  background: rgba(56,189,248,0.05);
  transform: translateY(-2px);
}

/* Hero visual */
.hero-visual {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

/* Terminal card */
.terminal-card {
  background: rgba(5, 8, 18, 0.92);
  border: 1px solid rgba(56,189,248,0.15);
  border-radius: 14px;
  overflow: hidden;
  box-shadow:
    0 0 0 1px rgba(255,255,255,0.04),
    0 24px 64px rgba(0,0,0,0.6),
    0 0 40px rgba(56,189,248,0.06);
  animation: float 7s ease-in-out infinite;
  backdrop-filter: blur(10px);
}
@keyframes float {
  0%, 100% { transform: translateY(0px); }
  50%       { transform: translateY(-8px); }
}

.terminal-header {
  display: flex;
  align-items: center;
  gap: 7px;
  padding: 11px 16px;
  background: rgba(255,255,255,0.025);
  border-bottom: 1px solid rgba(255,255,255,0.05);
}
.terminal-dot {
  width: 12px; height: 12px;
  border-radius: 50%;
}
.terminal-dot.red    { background: #ff5f57; }
.terminal-dot.yellow { background: #febc2e; }
.terminal-dot.green  { background: #28c840; }
.terminal-title {
  font-size: 0.72rem;
  color: var(--text-muted);
  margin-left: auto;
  font-family: 'JetBrains Mono', 'Fira Code', 'Courier New', monospace;
  letter-spacing: 0.02em;
  opacity: 0.7;
}

.terminal-body {
  padding: 18px 20px;
  font-family: 'JetBrains Mono', 'Fira Code', 'Courier New', monospace;
  font-size: 0.8rem;
  line-height: 1.9;
}
.terminal-line { display: flex; align-items: baseline; gap: 0; }
.t-prompt { color: var(--accent); font-weight: 700; margin-right: 8px; }
.t-cmd    { color: var(--text-light); }
.t-arg    { color: #c792ea; margin-left: 6px; }
.t-out    { color: var(--text-muted); font-size: 0.76rem; padding-left: 18px; }
.t-success .t-out { color: #4ade80; }
.t-empty  { line-height: 0.8; }
.t-cursor {
  color: var(--accent);
  animation: blink 1.1s step-end infinite;
  font-weight: 700;
}
@keyframes blink {
  0%, 100% { opacity: 1; }
  50%       { opacity: 0; }
}

/* Stats grid */
.stats-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
}

.stat-card {
  background: rgba(13,17,32,0.85);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 16px 12px;
  text-align: center;
  transition: all var(--transition);
  backdrop-filter: blur(8px);
  position: relative;
  overflow: hidden;
}
.stat-card::after {
  content: '';
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 2px;
  background: var(--gradient);
  transform: scaleX(0);
  transition: transform 0.35s cubic-bezier(0.4,0,0.2,1);
  border-radius: 0 0 2px 2px;
}
.stat-card:hover {
  border-color: var(--border-accent);
  transform: translateY(-4px);
  box-shadow: 0 10px 28px rgba(0,0,0,0.4), var(--glow-sm);
}
.stat-card:hover::after { transform: scaleX(1); }

.stat-number {
  font-size: 1.55rem;
  font-weight: 700;
  color: var(--text-light);
  letter-spacing: -0.03em;
  line-height: 1;
  margin-bottom: 6px;
}
.stat-number span { color: var(--accent); }

.stat-label {
  font-size: 0.68rem;
  color: var(--text-muted);
  font-weight: 400;
  line-height: 1.35;
}

/* ─── Services ──────────────────────────────────────────────── */
#services { background: var(--bg-subtle); position: relative; overflow: hidden; }
#services::before {
  content: '';
  position: absolute;
  top: -250px; left: 50%;
  transform: translateX(-50%);
  width: 900px; height: 450px;
  background: radial-gradient(ellipse, rgba(56,189,248,0.04) 0%, transparent 65%);
  pointer-events: none;
}

.services-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 18px;
}

.service-card {
  background: rgba(13,17,32,0.75);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 32px 26px;
  transition: all var(--transition);
  position: relative;
  overflow: hidden;
  backdrop-filter: blur(10px);
}
.service-card::before {
  content: '';
  position: absolute;
  inset: 0;
  background: var(--gradient-bg);
  opacity: 0;
  transition: opacity 0.4s ease;
}
.service-card::after {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 1px;
  background: var(--gradient);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.4s cubic-bezier(0.4,0,0.2,1);
}
.service-card:hover {
  border-color: rgba(56,189,248,0.22);
  transform: translateY(-5px);
  box-shadow: 0 16px 48px rgba(0,0,0,0.4), var(--glow-sm);
}
.service-card:hover::before { opacity: 1; }
.service-card:hover::after  { transform: scaleX(1); }

.service-icon {
  width: 48px; height: 48px;
  border-radius: 11px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 20px;
  font-size: 1.35rem;
  position: relative;
  z-index: 1;
  background: linear-gradient(135deg, rgba(56,189,248,0.12), rgba(129,140,248,0.08));
  border: 1px solid rgba(56,189,248,0.14);
  transition: all var(--transition);
}
.service-card:hover .service-icon {
  background: linear-gradient(135deg, rgba(56,189,248,0.22), rgba(129,140,248,0.14));
  border-color: rgba(56,189,248,0.28);
  box-shadow: 0 0 20px rgba(56,189,248,0.16);
}

.service-title {
  font-size: 1rem;
  font-weight: 600;
  color: var(--text-light);
  margin-bottom: 10px;
  letter-spacing: -0.01em;
  position: relative;
  z-index: 1;
}

.service-desc {
  font-size: 0.875rem;
  color: var(--text-muted);
  line-height: 1.7;
  position: relative;
  z-index: 1;
}

/* ─── About ─────────────────────────────────────────────────── */
.about-inner {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 80px;
  align-items: center;
}

.about-text .section-desc { max-width: 100%; margin-bottom: 20px; }

.about-list {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-top: 28px;
}

.about-item {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  font-size: 0.875rem;
  color: var(--text-muted);
  transition: color var(--transition);
}
.about-item:hover { color: var(--text); }
.about-item::before {
  content: '';
  flex-shrink: 0;
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--accent);
  margin-top: 7px;
  box-shadow: 0 0 7px rgba(56,189,248,0.6);
}

.about-visual {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}

.value-card {
  background: rgba(13,17,32,0.75);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 24px 20px;
  transition: all var(--transition);
  backdrop-filter: blur(8px);
  position: relative;
  overflow: hidden;
}
.value-card::before {
  content: '';
  position: absolute;
  top: 0; left: 0;
  width: 60px; height: 60px;
  background: radial-gradient(circle, rgba(56,189,248,0.1) 0%, transparent 70%);
  pointer-events: none;
}
.value-card:hover {
  border-color: rgba(56,189,248,0.22);
  transform: translateY(-3px);
  box-shadow: 0 8px 24px rgba(0,0,0,0.35), var(--glow-sm);
}

.value-icon { font-size: 1.4rem; margin-bottom: 12px; }
.value-title {
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--text-light);
  margin-bottom: 6px;
}
.value-desc {
  font-size: 0.78rem;
  color: var(--text-muted);
  line-height: 1.6;
}

/* ─── Stack (Marquee) ───────────────────────────────────────── */
#stack { background: var(--bg-subtle); position: relative; overflow: hidden; }
#stack::before {
  content: '';
  position: absolute;
  bottom: -200px; right: -100px;
  width: 500px; height: 500px;
  background: radial-gradient(circle, rgba(129,140,248,0.05) 0%, transparent 65%);
  pointer-events: none;
}

.marquee-wrapper {
  position: relative;
  overflow: hidden;
  padding: 8px 0;
  mask-image: linear-gradient(to right, transparent 0%, black 8%, black 92%, transparent 100%);
  -webkit-mask-image: linear-gradient(to right, transparent 0%, black 8%, black 92%, transparent 100%);
}

.marquee-track {
  display: flex;
  gap: 12px;
  width: max-content;
  animation: marquee-scroll 32s linear infinite;
}
.marquee-track:hover { animation-play-state: paused; }

@keyframes marquee-scroll {
  0%   { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}

.marquee-item {
  display: flex;
  align-items: center;
  gap: 10px;
  background: rgba(13,17,32,0.85);
  border: 1px solid var(--border);
  border-radius: 50px;
  padding: 11px 22px;
  white-space: nowrap;
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--text-muted);
  transition: all var(--transition);
  cursor: default;
  backdrop-filter: blur(8px);
}
.marquee-item:hover {
  border-color: rgba(56,189,248,0.28);
  color: var(--accent);
  background: rgba(56,189,248,0.06);
  box-shadow: var(--glow-sm);
}
.marquee-item-icon { font-size: 1.1rem; line-height: 1; }

/* ─── Contact ───────────────────────────────────────────────── */
#contact { position: relative; overflow: hidden; }
#contact::before {
  content: '';
  position: absolute;
  top: -100px; right: -100px;
  width: 500px; height: 500px;
  background: radial-gradient(circle, rgba(56,189,248,0.05) 0%, transparent 65%);
  pointer-events: none;
}

.contact-inner {
  display: grid;
  grid-template-columns: 1fr 1.4fr;
  gap: 64px;
  align-items: start;
  position: relative;
  z-index: 1;
}

.contact-info .section-desc { margin-bottom: 36px; }

.contact-items {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.contact-item {
  display: flex;
  align-items: center;
  gap: 14px;
  font-size: 0.9rem;
  color: var(--text-muted);
  transition: all var(--transition);
}
.contact-item:hover { color: var(--text); }

.contact-item-icon {
  width: 42px; height: 42px;
  background: rgba(56,189,248,0.07);
  border: 1px solid rgba(56,189,248,0.14);
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1rem;
  flex-shrink: 0;
  transition: all var(--transition);
}
.contact-item:hover .contact-item-icon {
  background: rgba(56,189,248,0.14);
  border-color: rgba(56,189,248,0.3);
  box-shadow: 0 0 16px rgba(56,189,248,0.14);
}

.contact-item a {
  color: var(--text-muted);
  transition: color var(--transition);
}
.contact-item a:hover { color: var(--accent); }

/* Form */
.contact-form {
  background: rgba(13,17,32,0.82);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 36px 32px;
  backdrop-filter: blur(14px);
  position: relative;
  overflow: hidden;
}
.contact-form::before {
  content: '';
  position: absolute;
  top: -80px; right: -80px;
  width: 280px; height: 280px;
  background: radial-gradient(circle, rgba(129,140,248,0.07) 0%, transparent 70%);
  pointer-events: none;
}

.form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}

.form-group {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-bottom: 16px;
  position: relative;
}
.form-group:last-of-type { margin-bottom: 0; }

.form-group label {
  font-size: 0.75rem;
  font-weight: 500;
  color: var(--text-muted);
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.form-group input,
.form-group textarea,
.form-group select {
  background: rgba(255,255,255,0.03);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 11px 14px;
  color: var(--text-light);
  font-family: inherit;
  font-size: 0.875rem;
  transition: all var(--transition);
  outline: none;
  resize: none;
}
.form-group input::placeholder,
.form-group textarea::placeholder {
  color: var(--text-muted);
  opacity: 0.45;
}
.form-group input:focus,
.form-group textarea:focus,
.form-group select:focus {
  border-color: rgba(56,189,248,0.4);
  background: rgba(56,189,248,0.04);
  box-shadow: 0 0 0 3px rgba(56,189,248,0.08);
}
.form-group select option { background: var(--bg-card); color: var(--text-light); }
.form-group textarea { min-height: 110px; }

.form-submit {
  width: 100%;
  margin-top: 8px;
  justify-content: center;
  font-size: 0.9rem;
}

/* ─── Footer ────────────────────────────────────────────────── */
footer {
  border-top: 1px solid var(--border);
  padding: 32px 0;
}

.footer-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 16px;
}

.footer-copy {
  font-size: 0.8rem;
  color: var(--text-muted);
}
.footer-copy a { color: var(--accent); transition: color var(--transition); }
.footer-copy a:hover { color: var(--accent-h); }

.footer-links { display: flex; gap: 24px; }
.footer-links a {
  font-size: 0.8rem;
  color: var(--text-muted);
  transition: color var(--transition);
}
.footer-links a:hover { color: var(--accent); }

/* ─── Responsive ────────────────────────────────────────────── */
@media (max-width: 900px) {
  .nav-links { display: none; }
  .hamburger { display: flex; }

  .hero-inner { grid-template-columns: 1fr; gap: 48px; }
  .hero-visual { order: -1; }
  .stats-grid { grid-template-columns: repeat(4, 1fr); }

  .services-grid { grid-template-columns: 1fr 1fr; }
  .about-inner { grid-template-columns: 1fr; gap: 48px; }
  .contact-inner { grid-template-columns: 1fr; gap: 48px; }
}

@media (max-width: 600px) {
  section { padding: 72px 0; }
  .services-grid { grid-template-columns: 1fr; }
  .about-visual { grid-template-columns: 1fr 1fr; }
  .stats-grid { grid-template-columns: 1fr 1fr; }
  .form-row { grid-template-columns: 1fr; }
  .hero-title { font-size: 1.9rem; }
}

/* ─── Contact Success ───────────────────────────────────────── */
.success-page {
  min-height: 80vh;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
}
.success-icon  { font-size: 3rem; margin-bottom: 20px; }
.success-title { font-size: 1.75rem; font-weight: 700; color: var(--text-light); margin-bottom: 12px; }
.success-desc  { color: var(--text-muted); margin-bottom: 28px; }


/*# sourceMappingURL=data:application/json;charset=utf-8;base64,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ZUFBZSxFQUFFLG1CQUFtQixFQUFFO0FBQ3ZELGlCQUFpQixrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSx3QkFBd0IsRUFBRSxtQkFBbUIsRUFBRTtBQUN0RyxpQkFBaUIsd0JBQXdCLEVBQUUsbUJBQW1CLEVBQUUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvc3R5bGVzL2FwcC5jc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLyog4pSA4pSA4pSAIFJlc2V0ICYgQmFzZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cbiosICo6OmJlZm9yZSwgKjo6YWZ0ZXIgeyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IH1cblxuOnJvb3Qge1xuICAtLWJnOiAgICAgICAgICAgICMwODBiMTQ7XG4gIC0tYmctY2FyZDogICAgICAgIzBkMTEyMDtcbiAgLS1iZy1zdWJ0bGU6ICAgICAjMGEwZDE4O1xuICAtLWJvcmRlcjogICAgICAgIHJnYmEoMjU1LDI1NSwyNTUsMC4wNik7XG4gIC0tYm9yZGVyLWFjY2VudDogcmdiYSg1NiwxODksMjQ4LDAuMjIpO1xuICAtLXRleHQ6ICAgICAgICAgICNjMmM4ZDg7XG4gIC0tdGV4dC1tdXRlZDogICAgIzZiNzI4MDtcbiAgLS10ZXh0LWxpZ2h0OiAgICAjZTJlOGYwO1xuICAtLWFjY2VudDogICAgICAgICMzOGJkZjg7XG4gIC0tYWNjZW50LTI6ICAgICAgIzgxOGNmODtcbiAgLS1hY2NlbnQtaDogICAgICAjMGVhNWU5O1xuICAtLWFjY2VudC1nbG93OiAgIHJnYmEoNTYsMTg5LDI0OCwwLjE4KTtcbiAgLS1ncmFkaWVudDogICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMzhiZGY4IDAlLCAjODE4Y2Y4IDEwMCUpO1xuICAtLWdyYWRpZW50LWJnOiAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoNTYsMTg5LDI0OCwwLjA3KSAwJSwgcmdiYSgxMjksMTQwLDI0OCwwLjA3KSAxMDAlKTtcbiAgLS1yYWRpdXM6ICAgICAgICAxMnB4O1xuICAtLXRyYW5zaXRpb246ICAgIDAuMjVzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gIC0tZ2xvdy1zbTogICAgICAgMCAwIDIwcHggcmdiYSg1NiwxODksMjQ4LDAuMTIpO1xuICAtLWdsb3ctbWQ6ICAgICAgIDAgMCA0MHB4IHJnYmEoNTYsMTg5LDI0OCwwLjE4KSwgMCAwIDgwcHggcmdiYSgxMjksMTQwLDI0OCwwLjEpO1xufVxuXG5odG1sIHsgc2Nyb2xsLWJlaGF2aW9yOiBzbW9vdGg7IH1cblxuYm9keSB7XG4gIGZvbnQtZmFtaWx5OiAnSW50ZXInLCAnU2Vnb2UgVUknLCBSb2JvdG8sIHNhbnMtc2VyaWY7XG4gIGJhY2tncm91bmQ6IHZhcigtLWJnKTtcbiAgY29sb3I6IHZhcigtLXRleHQpO1xuICBsaW5lLWhlaWdodDogMS42O1xuICBmb250LXNpemU6IDE2cHg7XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xufVxuXG5hIHsgY29sb3I6IGluaGVyaXQ7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfVxuaW1nIHsgbWF4LXdpZHRoOiAxMDAlOyBkaXNwbGF5OiBibG9jazsgfVxudWwgeyBsaXN0LXN0eWxlOiBub25lOyB9XG5cbi5jb250YWluZXIge1xuICBtYXgtd2lkdGg6IDExMDBweDtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHBhZGRpbmc6IDAgMjRweDtcbn1cblxuLyog4pSA4pSA4pSAIFNjcm9sbGJhciDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cbjo6LXdlYmtpdC1zY3JvbGxiYXIgeyB3aWR0aDogNXB4OyB9XG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHsgYmFja2dyb3VuZDogdmFyKC0tYmcpOyB9XG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHsgYmFja2dyb3VuZDogcmdiYSg1NiwxODksMjQ4LDAuMTgpOyBib3JkZXItcmFkaXVzOiAzcHg7IH1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIgeyBiYWNrZ3JvdW5kOiByZ2JhKDU2LDE4OSwyNDgsMC4zOCk7IH1cblxuLyog4pSA4pSA4pSAIEdyYWRpZW50IFRleHQg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovXG4uZ3JhZGllbnQtdGV4dCB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWdyYWRpZW50KTtcbiAgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6IHRleHQ7XG4gIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYmFja2dyb3VuZC1jbGlwOiB0ZXh0O1xufVxuXG4vKiDilIDilIDilIAgU2Nyb2xsIFJldmVhbCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cbi5yZXZlYWwge1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjhweCk7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC43cyBjdWJpYy1iZXppZXIoMC4xNiwgMSwgMC4zLCAxKSxcbiAgICAgICAgICAgICAgdHJhbnNmb3JtIDAuN3MgY3ViaWMtYmV6aWVyKDAuMTYsIDEsIDAuMywgMSk7XG59XG4ucmV2ZWFsLnZpc2libGUgeyBvcGFjaXR5OiAxOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH1cbi5yZXZlYWwtZGVsYXktMSB7IHRyYW5zaXRpb24tZGVsYXk6IDAuMXM7IH1cbi5yZXZlYWwtZGVsYXktMiB7IHRyYW5zaXRpb24tZGVsYXk6IDAuMnM7IH1cbi5yZXZlYWwtZGVsYXktMyB7IHRyYW5zaXRpb24tZGVsYXk6IDAuM3M7IH1cbi5yZXZlYWwtZGVsYXktNCB7IHRyYW5zaXRpb24tZGVsYXk6IDAuNHM7IH1cbi5yZXZlYWwtZGVsYXktNSB7IHRyYW5zaXRpb24tZGVsYXk6IDAuNXM7IH1cblxuLyog4pSA4pSA4pSAIEhlYWRlciAvIE5hdiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cbmhlYWRlciB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwOyBsZWZ0OiAwOyByaWdodDogMDtcbiAgei1pbmRleDogMTAwO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDgsMTEsMjAsMC43KTtcbiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDE4cHgpIHNhdHVyYXRlKDE4MCUpO1xuICAtd2Via2l0LWJhY2tkcm9wLWZpbHRlcjogYmx1cigxOHB4KSBzYXR1cmF0ZSgxODAlKTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tdHJhbnNpdGlvbiksIGJvcmRlci1jb2xvciB2YXIoLS10cmFuc2l0aW9uKTtcbn1cbmhlYWRlci5zY3JvbGxlZCB7XG4gIGJhY2tncm91bmQ6IHJnYmEoOCwxMSwyMCwwLjkyKTtcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSg1NiwxODksMjQ4LDAuMSk7XG59XG5cbm5hdiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgaGVpZ2h0OiA2NHB4O1xufVxuXG4ubG9nbyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgY29sb3I6IHZhcigtLXRleHQtbGlnaHQpO1xuICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcbiAgdHJhbnNpdGlvbjogZmlsdGVyIHZhcigtLXRyYW5zaXRpb24pO1xufVxuLmxvZ286aG92ZXIgeyBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMCAxMHB4IHJnYmEoNTYsMTg5LDI0OCwwLjQ1KSk7IH1cbi5sb2dvIHNwYW4geyBjb2xvcjogdmFyKC0tYWNjZW50KTsgfVxuLmxvZ28taW1nIHsgaGVpZ2h0OiAzMnB4OyB3aWR0aDogYXV0bzsgZGlzcGxheTogYmxvY2s7IH1cblxuLm5hdi1saW5rcyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGdhcDogMzJweDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLm5hdi1saW5rcyBhIHtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpO1xuICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS10cmFuc2l0aW9uKTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLm5hdi1saW5rcyBhOjphZnRlciB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogLTRweDsgbGVmdDogMDsgcmlnaHQ6IDA7XG4gIGhlaWdodDogMXB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1ncmFkaWVudCk7XG4gIHRyYW5zZm9ybTogc2NhbGVYKDApO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tdHJhbnNpdGlvbik7XG4gIGJvcmRlci1yYWRpdXM6IDFweDtcbn1cbi5uYXYtbGlua3MgYTpob3ZlciB7IGNvbG9yOiB2YXIoLS1hY2NlbnQpOyB9XG4ubmF2LWxpbmtzIGE6aG92ZXI6OmFmdGVyIHsgdHJhbnNmb3JtOiBzY2FsZVgoMSk7IH1cblxuLm5hdi1jdGEge1xuICBmb250LXNpemU6IDAuODc1cmVtICFpbXBvcnRhbnQ7XG4gIGZvbnQtd2VpZ2h0OiA1MDAgIWltcG9ydGFudDtcbiAgY29sb3I6ICMwNTA5MGYgIWltcG9ydGFudDtcbiAgYmFja2dyb3VuZDogdmFyKC0tYWNjZW50KSAhaW1wb3J0YW50O1xuICBwYWRkaW5nOiA4cHggMThweDtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbikgIWltcG9ydGFudDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm5hdi1jdGE6OmFmdGVyIHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XG4ubmF2LWN0YTpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWFjY2VudC1oKSAhaW1wb3J0YW50O1xuICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCkgIWltcG9ydGFudDtcbiAgYm94LXNoYWRvdzogMCA0cHggMjBweCByZ2JhKDU2LDE4OSwyNDgsMC40KSAhaW1wb3J0YW50O1xufVxuXG4vKiBIYW1idXJnZXIgKi9cbi5oYW1idXJnZXIge1xuICBkaXNwbGF5OiBub25lO1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDVweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBwYWRkaW5nOiA0cHg7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbn1cbi5oYW1idXJnZXIgc3BhbiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMjJweDsgaGVpZ2h0OiAycHg7XG4gIGJhY2tncm91bmQ6IHZhcigtLXRleHQpO1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIHRyYW5zaXRpb246IHZhcigtLXRyYW5zaXRpb24pO1xufVxuLmhhbWJ1cmdlci5vcGVuIHNwYW46bnRoLWNoaWxkKDEpIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDdweCkgcm90YXRlKDQ1ZGVnKTsgfVxuLmhhbWJ1cmdlci5vcGVuIHNwYW46bnRoLWNoaWxkKDIpIHsgb3BhY2l0eTogMDsgfVxuLmhhbWJ1cmdlci5vcGVuIHNwYW46bnRoLWNoaWxkKDMpIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC03cHgpIHJvdGF0ZSgtNDVkZWcpOyB9XG5cbi8qIE1vYmlsZSBuYXYgKi9cbi5tb2JpbGUtbWVudSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDgsMTEsMjAsMC45Nyk7XG4gIHBhZGRpbmc6IDEycHggMCAxNnB4O1xufVxuLm1vYmlsZS1tZW51Lm9wZW4geyBkaXNwbGF5OiBmbGV4OyB9XG4ubW9iaWxlLW1lbnUgYSB7XG4gIHBhZGRpbmc6IDEycHggMjRweDtcbiAgZm9udC1zaXplOiAwLjlyZW07XG4gIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTtcbiAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tdHJhbnNpdGlvbiksIGJhY2tncm91bmQgdmFyKC0tdHJhbnNpdGlvbik7XG59XG4ubW9iaWxlLW1lbnUgYTpob3ZlciB7IGNvbG9yOiB2YXIoLS1hY2NlbnQpOyBiYWNrZ3JvdW5kOiByZ2JhKDU2LDE4OSwyNDgsMC4wNCk7IH1cbi5tb2JpbGUtbWVudSAubmF2LWN0YSB7XG4gIG1hcmdpbjogOHB4IDI0cHggMDtcbiAgcGFkZGluZzogMTBweCAxOHB4ICFpbXBvcnRhbnQ7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xufVxuXG4vKiDilIDilIDilIAgU2VjdGlvbiBCYXNlIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuc2VjdGlvbiB7IHBhZGRpbmc6IDk2cHggMDsgfVxuXG4uc2VjdGlvbi1sYWJlbCB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDEwcHg7XG4gIGZvbnQtc2l6ZTogMC43MnJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMTRlbTtcbiAgY29sb3I6IHZhcigtLWFjY2VudCk7XG4gIG1hcmdpbi1ib3R0b206IDE0cHg7XG59XG4uc2VjdGlvbi1sYWJlbDo6YmVmb3JlIHtcbiAgY29udGVudDogJyc7XG4gIHdpZHRoOiAyNHB4OyBoZWlnaHQ6IDFweDtcbiAgYmFja2dyb3VuZDogdmFyKC0tZ3JhZGllbnQpO1xuICBvcGFjaXR5OiAwLjc7XG4gIGJvcmRlci1yYWRpdXM6IDFweDtcbn1cblxuLnNlY3Rpb24tdGl0bGUge1xuICBmb250LXNpemU6IGNsYW1wKDEuNzVyZW0sIDN2dywgMi41cmVtKTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgY29sb3I6IHZhcigtLXRleHQtbGlnaHQpO1xuICBsZXR0ZXItc3BhY2luZzogLTAuMDNlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMTg7XG4gIG1hcmdpbi1ib3R0b206IDE2cHg7XG59XG5cbi5zZWN0aW9uLWRlc2Mge1xuICBmb250LXNpemU6IDFyZW07XG4gIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTtcbiAgbWF4LXdpZHRoOiA1NjBweDtcbiAgbGluZS1oZWlnaHQ6IDEuNzU7XG59XG5cbi5zZWN0aW9uLWhlYWRlciB7IG1hcmdpbi1ib3R0b206IDU2cHg7IH1cbi5zZWN0aW9uLWhlYWRlci5jZW50ZXJlZCB7IHRleHQtYWxpZ246IGNlbnRlcjsgfVxuLnNlY3Rpb24taGVhZGVyLmNlbnRlcmVkIC5zZWN0aW9uLWxhYmVsIHsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IH1cbi5zZWN0aW9uLWhlYWRlci5jZW50ZXJlZCAuc2VjdGlvbi1sYWJlbDo6YmVmb3JlIHsgZGlzcGxheTogbm9uZTsgfVxuLnNlY3Rpb24taGVhZGVyLmNlbnRlcmVkIC5zZWN0aW9uLWRlc2MgeyBtYXJnaW46IDAgYXV0bzsgfVxuXG4vKiDilIDilIDilIAgSGVybyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cbiNoZXJvIHtcbiAgcGFkZGluZy10b3A6IDE0MHB4O1xuICBwYWRkaW5nLWJvdHRvbTogOTZweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4vKiBBbmltYXRlZCBncmlkIGJhY2tncm91bmQgKi9cbi5oZXJvLWJnLWdyaWQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGluc2V0OiAwO1xuICBiYWNrZ3JvdW5kLWltYWdlOlxuICAgIGxpbmVhci1ncmFkaWVudChyZ2JhKDU2LDE4OSwyNDgsMC4wMykgMXB4LCB0cmFuc3BhcmVudCAxcHgpLFxuICAgIGxpbmVhci1ncmFkaWVudCg5MGRlZywgcmdiYSg1NiwxODksMjQ4LDAuMDMpIDFweCwgdHJhbnNwYXJlbnQgMXB4KTtcbiAgYmFja2dyb3VuZC1zaXplOiA2MHB4IDYwcHg7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBtYXNrLWltYWdlOiByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSA4MCUgODAlIGF0IDUwJSA1MCUsIGJsYWNrIDMwJSwgdHJhbnNwYXJlbnQgMTAwJSk7XG4gIC13ZWJraXQtbWFzay1pbWFnZTogcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgODAlIDgwJSBhdCA1MCUgNTAlLCBibGFjayAzMCUsIHRyYW5zcGFyZW50IDEwMCUpO1xufVxuXG4vKiBHbG93IG9yYnMgKi9cbiNoZXJvOjpiZWZvcmUge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IC0yMDBweDsgcmlnaHQ6IC0xNTBweDtcbiAgd2lkdGg6IDcwMHB4OyBoZWlnaHQ6IDcwMHB4O1xuICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCByZ2JhKDU2LDE4OSwyNDgsMC4wNykgMCUsIHRyYW5zcGFyZW50IDY1JSk7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuI2hlcm86OmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiAtMTgwcHg7IGxlZnQ6IC0xMjBweDtcbiAgd2lkdGg6IDYwMHB4OyBoZWlnaHQ6IDYwMHB4O1xuICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCByZ2JhKDEyOSwxNDAsMjQ4LDAuMDYpIDAlLCB0cmFuc3BhcmVudCA2NSUpO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLmhlcm8taW5uZXIge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7XG4gIGdhcDogNjRweDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xufVxuXG4uaGVyby1iYWRnZSB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDlweDtcbiAgYmFja2dyb3VuZDogcmdiYSg1NiwxODksMjQ4LDAuMDcpO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDU2LDE4OSwyNDgsMC4yKTtcbiAgY29sb3I6IHZhcigtLWFjY2VudCk7XG4gIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgcGFkZGluZzogNnB4IDE0cHg7XG4gIGJvcmRlci1yYWRpdXM6IDEwMHB4O1xuICBtYXJnaW4tYm90dG9tOiAyMnB4O1xuICBsZXR0ZXItc3BhY2luZzogMC4wM2VtO1xuICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoOHB4KTtcbn1cblxuLmJhZGdlLWRvdCB7XG4gIHdpZHRoOiA3cHg7IGhlaWdodDogN3B4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJhY2tncm91bmQ6IHZhcigtLWFjY2VudCk7XG4gIGJveC1zaGFkb3c6IDAgMCA2cHggdmFyKC0tYWNjZW50KTtcbiAgYW5pbWF0aW9uOiBwdWxzZS1kb3QgMi4ycyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgZmxleC1zaHJpbms6IDA7XG59XG5Aa2V5ZnJhbWVzIHB1bHNlLWRvdCB7XG4gIDAlLCAxMDAlIHsgYm94LXNoYWRvdzogMCAwIDAgMCByZ2JhKDU2LDE4OSwyNDgsMC42KTsgfVxuICA1MCUgICAgICAgeyBib3gtc2hhZG93OiAwIDAgMCA2cHggcmdiYSg1NiwxODksMjQ4LDApOyB9XG59XG5cbi5oZXJvLXRpdGxlIHtcbiAgZm9udC1zaXplOiBjbGFtcCgycmVtLCA0dncsIDMuM3JlbSk7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGNvbG9yOiB2YXIoLS10ZXh0LWxpZ2h0KTtcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjA0ZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjEyO1xuICBtYXJnaW4tYm90dG9tOiAyMnB4O1xufVxuXG4uaGVyby1kZXNjIHtcbiAgZm9udC1zaXplOiAxLjA1cmVtO1xuICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7XG4gIGxpbmUtaGVpZ2h0OiAxLjg7XG4gIG1hcmdpbi1ib3R0b206IDM4cHg7XG4gIG1heC13aWR0aDogNDgwcHg7XG59XG5cbi5oZXJvLWFjdGlvbnMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6IDE0cHg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbn1cblxuLyogQnV0dG9ucyAqL1xuLmJ0bi1wcmltYXJ5IHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogOHB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hY2NlbnQpO1xuICBjb2xvcjogIzA1MDkwZjtcbiAgZm9udC1zaXplOiAwLjlyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIHBhZGRpbmc6IDEzcHggMjZweDtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzKTtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRyYW5zaXRpb24pO1xuICBib3JkZXI6IG5vbmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLmJ0bi1wcmltYXJ5OjpiZWZvcmUge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7IGxlZnQ6IC0xMDAlO1xuICB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCByZ2JhKDI1NSwyNTUsMjU1LDAuMTgpLCB0cmFuc3BhcmVudCk7XG4gIHRyYW5zaXRpb246IGxlZnQgMC40NXMgZWFzZTtcbn1cbi5idG4tcHJpbWFyeTpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWFjY2VudC1oKTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICBib3gtc2hhZG93OiAwIDhweCAzMnB4IHJnYmEoNTYsMTg5LDI0OCwwLjQpO1xuICBjb2xvcjogI2ZmZjtcbn1cbi5idG4tcHJpbWFyeTpob3Zlcjo6YmVmb3JlIHsgbGVmdDogMTAwJTsgfVxuXG4uYnRuLW91dGxpbmUge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiA4cHg7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBjb2xvcjogdmFyKC0tdGV4dCk7XG4gIGZvbnQtc2l6ZTogMC45cmVtO1xuICBmb250LXdlaWdodDogNTAwO1xuICBwYWRkaW5nOiAxM3B4IDI2cHg7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cyk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uKTtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLmJ0bi1vdXRsaW5lOmhvdmVyIHtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDU2LDE4OSwyNDgsMC4zKTtcbiAgY29sb3I6IHZhcigtLWFjY2VudCk7XG4gIGJhY2tncm91bmQ6IHJnYmEoNTYsMTg5LDI0OCwwLjA1KTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xufVxuXG4vKiBIZXJvIHZpc3VhbCAqL1xuLmhlcm8tdmlzdWFsIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiAxNHB4O1xufVxuXG4vKiBUZXJtaW5hbCBjYXJkICovXG4udGVybWluYWwtY2FyZCB7XG4gIGJhY2tncm91bmQ6IHJnYmEoNSwgOCwgMTgsIDAuOTIpO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDU2LDE4OSwyNDgsMC4xNSk7XG4gIGJvcmRlci1yYWRpdXM6IDE0cHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJveC1zaGFkb3c6XG4gICAgMCAwIDAgMXB4IHJnYmEoMjU1LDI1NSwyNTUsMC4wNCksXG4gICAgMCAyNHB4IDY0cHggcmdiYSgwLDAsMCwwLjYpLFxuICAgIDAgMCA0MHB4IHJnYmEoNTYsMTg5LDI0OCwwLjA2KTtcbiAgYW5pbWF0aW9uOiBmbG9hdCA3cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xufVxuQGtleWZyYW1lcyBmbG9hdCB7XG4gIDAlLCAxMDAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7IH1cbiAgNTAlICAgICAgIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC04cHgpOyB9XG59XG5cbi50ZXJtaW5hbC1oZWFkZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDdweDtcbiAgcGFkZGluZzogMTFweCAxNnB4O1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuMDI1KTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4wNSk7XG59XG4udGVybWluYWwtZG90IHtcbiAgd2lkdGg6IDEycHg7IGhlaWdodDogMTJweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xufVxuLnRlcm1pbmFsLWRvdC5yZWQgICAgeyBiYWNrZ3JvdW5kOiAjZmY1ZjU3OyB9XG4udGVybWluYWwtZG90LnllbGxvdyB7IGJhY2tncm91bmQ6ICNmZWJjMmU7IH1cbi50ZXJtaW5hbC1kb3QuZ3JlZW4gIHsgYmFja2dyb3VuZDogIzI4Yzg0MDsgfVxuLnRlcm1pbmFsLXRpdGxlIHtcbiAgZm9udC1zaXplOiAwLjcycmVtO1xuICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBmb250LWZhbWlseTogJ0pldEJyYWlucyBNb25vJywgJ0ZpcmEgQ29kZScsICdDb3VyaWVyIE5ldycsIG1vbm9zcGFjZTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDJlbTtcbiAgb3BhY2l0eTogMC43O1xufVxuXG4udGVybWluYWwtYm9keSB7XG4gIHBhZGRpbmc6IDE4cHggMjBweDtcbiAgZm9udC1mYW1pbHk6ICdKZXRCcmFpbnMgTW9ubycsICdGaXJhIENvZGUnLCAnQ291cmllciBOZXcnLCBtb25vc3BhY2U7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xuICBsaW5lLWhlaWdodDogMS45O1xufVxuLnRlcm1pbmFsLWxpbmUgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogYmFzZWxpbmU7IGdhcDogMDsgfVxuLnQtcHJvbXB0IHsgY29sb3I6IHZhcigtLWFjY2VudCk7IGZvbnQtd2VpZ2h0OiA3MDA7IG1hcmdpbi1yaWdodDogOHB4OyB9XG4udC1jbWQgICAgeyBjb2xvcjogdmFyKC0tdGV4dC1saWdodCk7IH1cbi50LWFyZyAgICB7IGNvbG9yOiAjYzc5MmVhOyBtYXJnaW4tbGVmdDogNnB4OyB9XG4udC1vdXQgICAgeyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IGZvbnQtc2l6ZTogMC43NnJlbTsgcGFkZGluZy1sZWZ0OiAxOHB4OyB9XG4udC1zdWNjZXNzIC50LW91dCB7IGNvbG9yOiAjNGFkZTgwOyB9XG4udC1lbXB0eSAgeyBsaW5lLWhlaWdodDogMC44OyB9XG4udC1jdXJzb3Ige1xuICBjb2xvcjogdmFyKC0tYWNjZW50KTtcbiAgYW5pbWF0aW9uOiBibGluayAxLjFzIHN0ZXAtZW5kIGluZmluaXRlO1xuICBmb250LXdlaWdodDogNzAwO1xufVxuQGtleWZyYW1lcyBibGluayB7XG4gIDAlLCAxMDAlIHsgb3BhY2l0eTogMTsgfVxuICA1MCUgICAgICAgeyBvcGFjaXR5OiAwOyB9XG59XG5cbi8qIFN0YXRzIGdyaWQgKi9cbi5zdGF0cy1ncmlkIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgMWZyKTtcbiAgZ2FwOiAxMHB4O1xufVxuXG4uc3RhdC1jYXJkIHtcbiAgYmFja2dyb3VuZDogcmdiYSgxMywxNywzMiwwLjg1KTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzKTtcbiAgcGFkZGluZzogMTZweCAxMnB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uKTtcbiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDhweCk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5zdGF0LWNhcmQ6OmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiAwOyBsZWZ0OiAwOyByaWdodDogMDtcbiAgaGVpZ2h0OiAycHg7XG4gIGJhY2tncm91bmQ6IHZhcigtLWdyYWRpZW50KTtcbiAgdHJhbnNmb3JtOiBzY2FsZVgoMCk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjM1cyBjdWJpYy1iZXppZXIoMC40LDAsMC4yLDEpO1xuICBib3JkZXItcmFkaXVzOiAwIDAgMnB4IDJweDtcbn1cbi5zdGF0LWNhcmQ6aG92ZXIge1xuICBib3JkZXItY29sb3I6IHZhcigtLWJvcmRlci1hY2NlbnQpO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTRweCk7XG4gIGJveC1zaGFkb3c6IDAgMTBweCAyOHB4IHJnYmEoMCwwLDAsMC40KSwgdmFyKC0tZ2xvdy1zbSk7XG59XG4uc3RhdC1jYXJkOmhvdmVyOjphZnRlciB7IHRyYW5zZm9ybTogc2NhbGVYKDEpOyB9XG5cbi5zdGF0LW51bWJlciB7XG4gIGZvbnQtc2l6ZTogMS41NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgY29sb3I6IHZhcigtLXRleHQtbGlnaHQpO1xuICBsZXR0ZXItc3BhY2luZzogLTAuMDNlbTtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIG1hcmdpbi1ib3R0b206IDZweDtcbn1cbi5zdGF0LW51bWJlciBzcGFuIHsgY29sb3I6IHZhcigtLWFjY2VudCk7IH1cblxuLnN0YXQtbGFiZWwge1xuICBmb250LXNpemU6IDAuNjhyZW07XG4gIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDEuMzU7XG59XG5cbi8qIOKUgOKUgOKUgCBTZXJ2aWNlcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cbiNzZXJ2aWNlcyB7IGJhY2tncm91bmQ6IHZhcigtLWJnLXN1YnRsZSk7IHBvc2l0aW9uOiByZWxhdGl2ZTsgb3ZlcmZsb3c6IGhpZGRlbjsgfVxuI3NlcnZpY2VzOjpiZWZvcmUge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IC0yNTBweDsgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIHdpZHRoOiA5MDBweDsgaGVpZ2h0OiA0NTBweDtcbiAgYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UsIHJnYmEoNTYsMTg5LDI0OCwwLjA0KSAwJSwgdHJhbnNwYXJlbnQgNjUlKTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi5zZXJ2aWNlcy1ncmlkIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKTtcbiAgZ2FwOiAxOHB4O1xufVxuXG4uc2VydmljZS1jYXJkIHtcbiAgYmFja2dyb3VuZDogcmdiYSgxMywxNywzMiwwLjc1KTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzKTtcbiAgcGFkZGluZzogMzJweCAyNnB4O1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbik7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xufVxuLnNlcnZpY2UtY2FyZDo6YmVmb3JlIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQ6IDA7XG4gIGJhY2tncm91bmQ6IHZhcigtLWdyYWRpZW50LWJnKTtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjRzIGVhc2U7XG59XG4uc2VydmljZS1jYXJkOjphZnRlciB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDsgbGVmdDogMDsgcmlnaHQ6IDA7XG4gIGhlaWdodDogMXB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1ncmFkaWVudCk7XG4gIHRyYW5zZm9ybTogc2NhbGVYKDApO1xuICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0O1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC40cyBjdWJpYy1iZXppZXIoMC40LDAsMC4yLDEpO1xufVxuLnNlcnZpY2UtY2FyZDpob3ZlciB7XG4gIGJvcmRlci1jb2xvcjogcmdiYSg1NiwxODksMjQ4LDAuMjIpO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTVweCk7XG4gIGJveC1zaGFkb3c6IDAgMTZweCA0OHB4IHJnYmEoMCwwLDAsMC40KSwgdmFyKC0tZ2xvdy1zbSk7XG59XG4uc2VydmljZS1jYXJkOmhvdmVyOjpiZWZvcmUgeyBvcGFjaXR5OiAxOyB9XG4uc2VydmljZS1jYXJkOmhvdmVyOjphZnRlciAgeyB0cmFuc2Zvcm06IHNjYWxlWCgxKTsgfVxuXG4uc2VydmljZS1pY29uIHtcbiAgd2lkdGg6IDQ4cHg7IGhlaWdodDogNDhweDtcbiAgYm9yZGVyLXJhZGl1czogMTFweDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gIGZvbnQtc2l6ZTogMS4zNXJlbTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDU2LDE4OSwyNDgsMC4xMiksIHJnYmEoMTI5LDE0MCwyNDgsMC4wOCkpO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDU2LDE4OSwyNDgsMC4xNCk7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uKTtcbn1cbi5zZXJ2aWNlLWNhcmQ6aG92ZXIgLnNlcnZpY2UtaWNvbiB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoNTYsMTg5LDI0OCwwLjIyKSwgcmdiYSgxMjksMTQwLDI0OCwwLjE0KSk7XG4gIGJvcmRlci1jb2xvcjogcmdiYSg1NiwxODksMjQ4LDAuMjgpO1xuICBib3gtc2hhZG93OiAwIDAgMjBweCByZ2JhKDU2LDE4OSwyNDgsMC4xNik7XG59XG5cbi5zZXJ2aWNlLXRpdGxlIHtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBmb250LXdlaWdodDogNjAwO1xuICBjb2xvcjogdmFyKC0tdGV4dC1saWdodCk7XG4gIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG59XG5cbi5zZXJ2aWNlLWRlc2Mge1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7XG4gIGxpbmUtaGVpZ2h0OiAxLjc7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbn1cblxuLyog4pSA4pSA4pSAIEFib3V0IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuLmFib3V0LWlubmVyIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICBnYXA6IDgwcHg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5hYm91dC10ZXh0IC5zZWN0aW9uLWRlc2MgeyBtYXgtd2lkdGg6IDEwMCU7IG1hcmdpbi1ib3R0b206IDIwcHg7IH1cblxuLmFib3V0LWxpc3Qge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDEycHg7XG4gIG1hcmdpbi10b3A6IDI4cHg7XG59XG5cbi5hYm91dC1pdGVtIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIGdhcDogMTJweDtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpO1xuICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS10cmFuc2l0aW9uKTtcbn1cbi5hYm91dC1pdGVtOmhvdmVyIHsgY29sb3I6IHZhcigtLXRleHQpOyB9XG4uYWJvdXQtaXRlbTo6YmVmb3JlIHtcbiAgY29udGVudDogJyc7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICB3aWR0aDogNnB4OyBoZWlnaHQ6IDZweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hY2NlbnQpO1xuICBtYXJnaW4tdG9wOiA3cHg7XG4gIGJveC1zaGFkb3c6IDAgMCA3cHggcmdiYSg1NiwxODksMjQ4LDAuNik7XG59XG5cbi5hYm91dC12aXN1YWwge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7XG4gIGdhcDogMTRweDtcbn1cblxuLnZhbHVlLWNhcmQge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDEzLDE3LDMyLDAuNzUpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMpO1xuICBwYWRkaW5nOiAyNHB4IDIwcHg7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uKTtcbiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDhweCk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi52YWx1ZS1jYXJkOjpiZWZvcmUge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7IGxlZnQ6IDA7XG4gIHdpZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7XG4gIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHJnYmEoNTYsMTg5LDI0OCwwLjEpIDAlLCB0cmFuc3BhcmVudCA3MCUpO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbi52YWx1ZS1jYXJkOmhvdmVyIHtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDU2LDE4OSwyNDgsMC4yMik7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtM3B4KTtcbiAgYm94LXNoYWRvdzogMCA4cHggMjRweCByZ2JhKDAsMCwwLDAuMzUpLCB2YXIoLS1nbG93LXNtKTtcbn1cblxuLnZhbHVlLWljb24geyBmb250LXNpemU6IDEuNHJlbTsgbWFyZ2luLWJvdHRvbTogMTJweDsgfVxuLnZhbHVlLXRpdGxlIHtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgY29sb3I6IHZhcigtLXRleHQtbGlnaHQpO1xuICBtYXJnaW4tYm90dG9tOiA2cHg7XG59XG4udmFsdWUtZGVzYyB7XG4gIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpO1xuICBsaW5lLWhlaWdodDogMS42O1xufVxuXG4vKiDilIDilIDilIAgU3RhY2sgKE1hcnF1ZWUpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuI3N0YWNrIHsgYmFja2dyb3VuZDogdmFyKC0tYmctc3VidGxlKTsgcG9zaXRpb246IHJlbGF0aXZlOyBvdmVyZmxvdzogaGlkZGVuOyB9XG4jc3RhY2s6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogLTIwMHB4OyByaWdodDogLTEwMHB4O1xuICB3aWR0aDogNTAwcHg7IGhlaWdodDogNTAwcHg7XG4gIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHJnYmEoMTI5LDE0MCwyNDgsMC4wNSkgMCUsIHRyYW5zcGFyZW50IDY1JSk7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4ubWFycXVlZS13cmFwcGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiA4cHggMDtcbiAgbWFzay1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCB0cmFuc3BhcmVudCAwJSwgYmxhY2sgOCUsIGJsYWNrIDkyJSwgdHJhbnNwYXJlbnQgMTAwJSk7XG4gIC13ZWJraXQtbWFzay1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCB0cmFuc3BhcmVudCAwJSwgYmxhY2sgOCUsIGJsYWNrIDkyJSwgdHJhbnNwYXJlbnQgMTAwJSk7XG59XG5cbi5tYXJxdWVlLXRyYWNrIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZ2FwOiAxMnB4O1xuICB3aWR0aDogbWF4LWNvbnRlbnQ7XG4gIGFuaW1hdGlvbjogbWFycXVlZS1zY3JvbGwgMzJzIGxpbmVhciBpbmZpbml0ZTtcbn1cbi5tYXJxdWVlLXRyYWNrOmhvdmVyIHsgYW5pbWF0aW9uLXBsYXktc3RhdGU6IHBhdXNlZDsgfVxuXG5Aa2V5ZnJhbWVzIG1hcnF1ZWUtc2Nyb2xsIHtcbiAgMCUgICB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsgfVxuICAxMDAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOyB9XG59XG5cbi5tYXJxdWVlLWl0ZW0ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDEwcHg7XG4gIGJhY2tncm91bmQ6IHJnYmEoMTMsMTcsMzIsMC44NSk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gIGJvcmRlci1yYWRpdXM6IDUwcHg7XG4gIHBhZGRpbmc6IDExcHggMjJweDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbik7XG4gIGN1cnNvcjogZGVmYXVsdDtcbiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDhweCk7XG59XG4ubWFycXVlZS1pdGVtOmhvdmVyIHtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDU2LDE4OSwyNDgsMC4yOCk7XG4gIGNvbG9yOiB2YXIoLS1hY2NlbnQpO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDU2LDE4OSwyNDgsMC4wNik7XG4gIGJveC1zaGFkb3c6IHZhcigtLWdsb3ctc20pO1xufVxuLm1hcnF1ZWUtaXRlbS1pY29uIHsgZm9udC1zaXplOiAxLjFyZW07IGxpbmUtaGVpZ2h0OiAxOyB9XG5cbi8qIOKUgOKUgOKUgCBDb250YWN0IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuI2NvbnRhY3QgeyBwb3NpdGlvbjogcmVsYXRpdmU7IG92ZXJmbG93OiBoaWRkZW47IH1cbiNjb250YWN0OjpiZWZvcmUge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IC0xMDBweDsgcmlnaHQ6IC0xMDBweDtcbiAgd2lkdGg6IDUwMHB4OyBoZWlnaHQ6IDUwMHB4O1xuICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCByZ2JhKDU2LDE4OSwyNDgsMC4wNSkgMCUsIHRyYW5zcGFyZW50IDY1JSk7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uY29udGFjdC1pbm5lciB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDEuNGZyO1xuICBnYXA6IDY0cHg7XG4gIGFsaWduLWl0ZW1zOiBzdGFydDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xufVxuXG4uY29udGFjdC1pbmZvIC5zZWN0aW9uLWRlc2MgeyBtYXJnaW4tYm90dG9tOiAzNnB4OyB9XG5cbi5jb250YWN0LWl0ZW1zIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiAxNnB4O1xufVxuXG4uY29udGFjdC1pdGVtIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAxNHB4O1xuICBmb250LXNpemU6IDAuOXJlbTtcbiAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbik7XG59XG4uY29udGFjdC1pdGVtOmhvdmVyIHsgY29sb3I6IHZhcigtLXRleHQpOyB9XG5cbi5jb250YWN0LWl0ZW0taWNvbiB7XG4gIHdpZHRoOiA0MnB4OyBoZWlnaHQ6IDQycHg7XG4gIGJhY2tncm91bmQ6IHJnYmEoNTYsMTg5LDI0OCwwLjA3KTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSg1NiwxODksMjQ4LDAuMTQpO1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBmbGV4LXNocmluazogMDtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRyYW5zaXRpb24pO1xufVxuLmNvbnRhY3QtaXRlbTpob3ZlciAuY29udGFjdC1pdGVtLWljb24ge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDU2LDE4OSwyNDgsMC4xNCk7XG4gIGJvcmRlci1jb2xvcjogcmdiYSg1NiwxODksMjQ4LDAuMyk7XG4gIGJveC1zaGFkb3c6IDAgMCAxNnB4IHJnYmEoNTYsMTg5LDI0OCwwLjE0KTtcbn1cblxuLmNvbnRhY3QtaXRlbSBhIHtcbiAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpO1xuICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS10cmFuc2l0aW9uKTtcbn1cbi5jb250YWN0LWl0ZW0gYTpob3ZlciB7IGNvbG9yOiB2YXIoLS1hY2NlbnQpOyB9XG5cbi8qIEZvcm0gKi9cbi5jb250YWN0LWZvcm0ge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDEzLDE3LDMyLDAuODIpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMpO1xuICBwYWRkaW5nOiAzNnB4IDMycHg7XG4gIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxNHB4KTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLmNvbnRhY3QtZm9ybTo6YmVmb3JlIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAtODBweDsgcmlnaHQ6IC04MHB4O1xuICB3aWR0aDogMjgwcHg7IGhlaWdodDogMjgwcHg7XG4gIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHJnYmEoMTI5LDE0MCwyNDgsMC4wNykgMCUsIHRyYW5zcGFyZW50IDcwJSk7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uZm9ybS1yb3cge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7XG4gIGdhcDogMTRweDtcbn1cblxuLmZvcm0tZ3JvdXAge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDZweDtcbiAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLmZvcm0tZ3JvdXA6bGFzdC1vZi10eXBlIHsgbWFyZ2luLWJvdHRvbTogMDsgfVxuXG4uZm9ybS1ncm91cCBsYWJlbCB7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpO1xuICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuXG4uZm9ybS1ncm91cCBpbnB1dCxcbi5mb3JtLWdyb3VwIHRleHRhcmVhLFxuLmZvcm0tZ3JvdXAgc2VsZWN0IHtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjAzKTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyKTtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBwYWRkaW5nOiAxMXB4IDE0cHg7XG4gIGNvbG9yOiB2YXIoLS10ZXh0LWxpZ2h0KTtcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uKTtcbiAgb3V0bGluZTogbm9uZTtcbiAgcmVzaXplOiBub25lO1xufVxuLmZvcm0tZ3JvdXAgaW5wdXQ6OnBsYWNlaG9sZGVyLFxuLmZvcm0tZ3JvdXAgdGV4dGFyZWE6OnBsYWNlaG9sZGVyIHtcbiAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpO1xuICBvcGFjaXR5OiAwLjQ1O1xufVxuLmZvcm0tZ3JvdXAgaW5wdXQ6Zm9jdXMsXG4uZm9ybS1ncm91cCB0ZXh0YXJlYTpmb2N1cyxcbi5mb3JtLWdyb3VwIHNlbGVjdDpmb2N1cyB7XG4gIGJvcmRlci1jb2xvcjogcmdiYSg1NiwxODksMjQ4LDAuNCk7XG4gIGJhY2tncm91bmQ6IHJnYmEoNTYsMTg5LDI0OCwwLjA0KTtcbiAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoNTYsMTg5LDI0OCwwLjA4KTtcbn1cbi5mb3JtLWdyb3VwIHNlbGVjdCBvcHRpb24geyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsgY29sb3I6IHZhcigtLXRleHQtbGlnaHQpOyB9XG4uZm9ybS1ncm91cCB0ZXh0YXJlYSB7IG1pbi1oZWlnaHQ6IDExMHB4OyB9XG5cbi5mb3JtLXN1Ym1pdCB7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4tdG9wOiA4cHg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBmb250LXNpemU6IDAuOXJlbTtcbn1cblxuLyog4pSA4pSA4pSAIEZvb3RlciDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cbmZvb3RlciB7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICBwYWRkaW5nOiAzMnB4IDA7XG59XG5cbi5mb290ZXItaW5uZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgZ2FwOiAxNnB4O1xufVxuXG4uZm9vdGVyLWNvcHkge1xuICBmb250LXNpemU6IDAuOHJlbTtcbiAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpO1xufVxuLmZvb3Rlci1jb3B5IGEgeyBjb2xvcjogdmFyKC0tYWNjZW50KTsgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tdHJhbnNpdGlvbik7IH1cbi5mb290ZXItY29weSBhOmhvdmVyIHsgY29sb3I6IHZhcigtLWFjY2VudC1oKTsgfVxuXG4uZm9vdGVyLWxpbmtzIHsgZGlzcGxheTogZmxleDsgZ2FwOiAyNHB4OyB9XG4uZm9vdGVyLWxpbmtzIGEge1xuICBmb250LXNpemU6IDAuOHJlbTtcbiAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpO1xuICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS10cmFuc2l0aW9uKTtcbn1cbi5mb290ZXItbGlua3MgYTpob3ZlciB7IGNvbG9yOiB2YXIoLS1hY2NlbnQpOyB9XG5cbi8qIOKUgOKUgOKUgCBSZXNwb25zaXZlIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDkwMHB4KSB7XG4gIC5uYXYtbGlua3MgeyBkaXNwbGF5OiBub25lOyB9XG4gIC5oYW1idXJnZXIgeyBkaXNwbGF5OiBmbGV4OyB9XG5cbiAgLmhlcm8taW5uZXIgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsgZ2FwOiA0OHB4OyB9XG4gIC5oZXJvLXZpc3VhbCB7IG9yZGVyOiAtMTsgfVxuICAuc3RhdHMtZ3JpZCB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIDFmcik7IH1cblxuICAuc2VydmljZXMtZ3JpZCB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjsgfVxuICAuYWJvdXQtaW5uZXIgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsgZ2FwOiA0OHB4OyB9XG4gIC5jb250YWN0LWlubmVyIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7IGdhcDogNDhweDsgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNjAwcHgpIHtcbiAgc2VjdGlvbiB7IHBhZGRpbmc6IDcycHggMDsgfVxuICAuc2VydmljZXMtZ3JpZCB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOyB9XG4gIC5hYm91dC12aXN1YWwgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7IH1cbiAgLnN0YXRzLWdyaWQgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7IH1cbiAgLmZvcm0tcm93IHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7IH1cbiAgLmhlcm8tdGl0bGUgeyBmb250LXNpemU6IDEuOXJlbTsgfVxufVxuXG4vKiDilIDilIDilIAgQ29udGFjdCBTdWNjZXNzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuLnN1Y2Nlc3MtcGFnZSB7XG4gIG1pbi1oZWlnaHQ6IDgwdmg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4uc3VjY2Vzcy1pY29uICB7IGZvbnQtc2l6ZTogM3JlbTsgbWFyZ2luLWJvdHRvbTogMjBweDsgfVxuLnN1Y2Nlc3MtdGl0bGUgeyBmb250LXNpemU6IDEuNzVyZW07IGZvbnQtd2VpZ2h0OiA3MDA7IGNvbG9yOiB2YXIoLS10ZXh0LWxpZ2h0KTsgbWFyZ2luLWJvdHRvbTogMTJweDsgfVxuLnN1Y2Nlc3MtZGVzYyAgeyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IG1hcmdpbi1ib3R0b206IDI4cHg7IH1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/