/* Main Styles */
:root {
    color-scheme: light;

    /* Surface tokens */
    --surface-base: #ffffff;
    --surface-base-rgb: 255 255 255;
    --surface-raised: #f9fafb;
    --surface-alt: #f3f4f6;
    --surface-inset: #f8f9fa;
    --surface-code: #1f2937;
    --surface-code-text: #f9fafb;
    --surface-raised-rgb: 249 250 251;
    --surface-inset-rgb: 248 249 250;

    /* Border tokens */
    --border-subtle: #e5e7eb;
    --border-strong: #e9ecef;
    --border-muted: #cccccc;
    --border-neutral-rgb: 203 213 225;

    /* Text tokens */
    --text-primary: #1f2937;
    --text-secondary: #374151;
    --text-tertiary: #4b5563;
    --text-muted: #6b7280;
    --text-glass: #1f2d3d;
    --text-inverse: #ffffff;
    --text-on-brand: #ffffff;
    --text-deep: #111827;
    --text-deep-rgb: 17 24 39;

    /* Brand tokens */
    --brand-100: #eff6ff;
    --brand-200: #e0e7ff;
    --brand-300: #5b8def;
    --brand-400: #4a7fe0;
    --brand-500: #2563eb;
    --brand-600: #1d4ed8;
    --brand-700: #1e3a8a;
    --brand-cta: #0d6efd;
    --brand-cta-hover: #0b5ed7;
    --brand-cta-active: #0a58ca;
    --brand-100-rgb: 239 246 255;
    --brand-200-rgb: 224 231 255;
    --brand-300-rgb: 91 141 239;
    --brand-400-rgb: 74 127 224;
    --brand-cta-rgb: 13 110 253;

    /* Status tokens */
    --success-500: #198754;
    --danger-500: #dc3545;
    --danger-600: #dc2626;

    /* Utility tokens */
    --hero-gradient-start: var(--surface-raised);
    --hero-gradient-mid: var(--brand-100);
    --hero-gradient-end: var(--brand-200);
    --glass-bg: rgba(255, 255, 255, 0.82);
    --glass-bg-strong: rgba(255, 255, 255, 0.9);
    --glass-border: rgba(148, 163, 184, 0.12);
    --shadow-soft: rgba(15, 23, 42, 0.08);
    --pill-link-bg: rgba(var(--brand-300-rgb), 0.12);
    --pill-link-border: rgba(var(--brand-300-rgb), 0.35);
    --pill-link-color: var(--brand-600);

    /* Link tokens (light theme) */
    /* Bump default link color for stronger contrast on white */
    --link-color: var(--brand-700);
    --link-hover-color: var(--brand-600);
    --link-visited-color: var(--brand-700);

    /* CTA tokens */
    --cta-text: #f8fbff;
    --cta-text-hover: #ffffff;

    /* Typography scale */
    --heading-1: clamp(2.5rem, 2.1rem + 1.0vw, 3.1rem);
    --heading-2: clamp(1.5rem, 1.35rem + 0.6vw, 1.9rem);
    --heading-3: clamp(1.25rem, 1.15rem + 0.45vw, 1.6rem);
    --heading-4: clamp(1.125rem, 1.05rem + 0.35vw, 1.35rem);
    --heading-line-tight: 1.12;
    --heading-line-snug: 1.2;

    /* Legacy aliases (temporary) */
    --primary-color: var(--brand-500);
    --secondary-color: var(--text-muted);
    --dark-color: var(--text-primary);
    --light-color: var(--surface-inset);
    --success-color: var(--success-500);
    --danger-color: var(--danger-500);
    --btn-primary-1: var(--brand-300);
    --btn-primary-2: var(--brand-400);
}

[data-theme="dark"] {
    color-scheme: dark;
    --surface-base: #0f172a;
    --surface-base-rgb: 15 23 42;
    --surface-raised: #111827;
    --surface-alt: #1e293b;
    --surface-inset: #0f172a;
    --surface-code: #0b1120;
    --surface-code-text: #e2e8f0;
    --surface-raised-rgb: 17 24 39;
    --surface-inset-rgb: 15 23 42;

    --border-subtle: #1e293b;
    --border-strong: #334155;
    --border-muted: #475569;
    --border-neutral-rgb: 71 85 105;

    --text-primary: #e2e8f0;
    --text-secondary: #cbd5f5;
    --text-tertiary: #94a3b8;
    --text-muted: #64748b;
    --text-glass: #e2e8f0;
    --text-inverse: #0f172a;
    --text-on-brand: #ffffff;
    --text-deep: #e2e8f0;
    --text-deep-rgb: 226 232 240;

    --brand-100: #1e293b;
    --brand-200: #1e3a8a;
    --brand-300: #3b82f6;
    --brand-400: #2563eb;
    --brand-500: #1d4ed8;
    --brand-600: #cbd5f5;
    --brand-700: #e2e8f0;
    --brand-cta: #334155;
    --brand-cta-hover: #1f2937;
    --brand-cta-active: #0f172a;
    --brand-100-rgb: 30 41 59;
    --brand-200-rgb: 30 58 138;
    --brand-300-rgb: 59 130 246;
    --brand-400-rgb: 37 99 235;
    --brand-cta-rgb: 51 65 85;
    --btn-primary-1: #334155;
    --btn-primary-2: #0f172a;

    --success-500: #10b981;
    --danger-500: #f87171;
    --danger-600: #ef4444;

    --hero-gradient-start: #0f172a;
    --hero-gradient-mid: #1e3a8a;
    --hero-gradient-end: #312e81;
    --glass-bg: rgba(15, 23, 42, 0.78);
    --glass-bg-strong: rgba(15, 23, 42, 0.9);
    --glass-border: rgba(148, 163, 184, 0.32);
    --shadow-soft: rgba(15, 23, 42, 0.45);
    --pill-link-bg: rgba(30, 41, 59, 0.85);
    --pill-link-border: rgba(var(--border-neutral-rgb), 0.45);
    --pill-link-color: var(--text-on-brand);

    /* Link tokens */
    --link-color: var(--brand-300);
    --link-hover-color: var(--brand-400);
    --link-visited-color: var(--brand-500);

    /* CTA tokens */
    --cta-text: #e2ecff;
    --cta-text-hover: #f8fbff;

    /* Glassmorphism tokens */
    --glass-shadow: 0 18px 44px rgba(8, 14, 31, 0.55);
    --glass-shadow-strong: 0 28px 64px rgba(7, 12, 24, 0.65);
    --glass-blur: 14px;
    --radius-sm: 10px;
    --radius-md: 14px;
    --radius-lg: 18px;
    --radius-btn: 10px;
    --bs-btn-border-radius: 10px;
}

.service-hero-gradient {
    background: linear-gradient(135deg, var(--hero-gradient-start) 0%, var(--hero-gradient-mid) 60%, var(--hero-gradient-end) 100%);
}

/* ================================
   Dark theme global adjustments
   ================================ */
html.dark body {
    background-color: var(--surface-base);
    color: var(--text-primary);
}

html.dark .bg-white,
html.dark .bg-white\/70,
html.dark .bg-white\/80,
html.dark .bg-gray-50,
html.dark .bg-gray-100,
html.dark .bg-blue-50 {
    background-color: rgba(var(--surface-raised-rgb), 0.9) !important;
    color: inherit;
}

html.dark .border-gray-100,
html.dark .border-gray-200,
html.dark .border-gray-300,
html.dark .border-blue-200,
html.dark .border-blue-300 {
    border-color: rgba(var(--border-neutral-rgb), 0.5) !important;
}

html.dark .ring-gray-200 {
    --tw-ring-color: rgba(var(--border-neutral-rgb), 0.4) !important;
}

html.dark .text-gray-500,
html.dark .text-gray-600,
html.dark .text-gray-700,
html.dark .text-gray-800,
html.dark .text-gray-900,
html.dark .text-slate-600,
html.dark .text-slate-700,
html.dark .text-slate-800,
html.dark .text-slate-900 {
    color: var(--text-primary) !important;
}

html.dark .text-blue-600,
html.dark .text-blue-700,
html.dark .text-blue-800,
html.dark .text-blue-900 {
    color: var(--text-primary) !important;
}

html.dark a.text-blue-600,
html.dark a.text-blue-700,
html.dark a.text-blue-800,
html.dark a.text-blue-900 {
    color: var(--link-color) !important;
}

html.dark a.text-blue-600:hover,
html.dark a.text-blue-700:hover,
html.dark a.text-blue-800:hover,
html.dark a.text-blue-900:hover {
    color: var(--link-hover-color) !important;
}

html.dark .footer-cta,
html.dark .bg-blue-500,
html.dark .bg-blue-600,
html.dark .bg-blue-700,
html.dark .bg-blue-800,
html.dark .bg-blue-900,
html.dark button.bg-blue-600,
html.dark a.bg-blue-600,
html.dark .hover\:bg-blue-600:hover,
html.dark .hover\:bg-blue-700:hover {
    background-image: linear-gradient(180deg, var(--btn-primary-1) 0%, var(--btn-primary-2) 100%) !important;
    background-color: var(--btn-primary-1) !important;
    border-color: rgba(var(--brand-cta-rgb), 0.45) !important;
}

html.dark .hover\:bg-blue-50:hover,
html.dark .hover\:bg-blue-100:hover {
    background-color: rgba(var(--surface-raised-rgb), 0.92) !important;
    color: var(--text-primary) !important;
}

.aspect-video iframe {
    width: 100% !important;
    height: 100% !important;
    display: block;
}

html.dark a {
    color: var(--link-color);
}

html.dark a:hover,
html.dark a:focus {
    color: var(--link-hover-color);
}

html.dark a:visited {
    color: var(--link-visited-color);
}


html.dark .footer-cta:hover,
html.dark .bg-blue-600:hover,
html.dark .bg-blue-700:hover {
    filter: brightness(1.05);
}

html.dark .contact-cta {
    text-shadow: none;
}

html.dark .glass-surface .prose strong,
html.dark .glass-surface .prose b,
html.dark .glass-surface .richtext strong,
html.dark .glass-surface .richtext b {
}

html.dark .prose a,
html.dark .richtext a,
html.dark a[href^="mailto:"],
html.dark a[href^="tel:"] {
    color: var(--link-color);
}

html.dark .prose a:hover,
html.dark .richtext a:hover,
html.dark a[href^="mailto:"]:hover,
html.dark a[href^="tel:"]:hover {
    color: var(--link-hover-color);
}

html.dark .prose a:visited,
html.dark .richtext a:visited {
    color: var(--link-visited-color);
}


html.dark input,
html.dark textarea,
html.dark select {
    background-color: rgba(var(--surface-base-rgb), 0.1);
    color: var(--text-primary);
    border-color: rgba(var(--border-neutral-rgb), 0.4);
}

html.dark input::placeholder,
html.dark textarea::placeholder {
    color: var(--text-muted);
}

html.dark #servicesDropdownMenu {
    background-color: rgba(51, 65, 85, 0.92) !important;
    color: var(--text-secondary) !important;
}

html.dark #servicesDropdownMenu a {
}

html.dark #servicesDropdownMenu a:hover {
    background-color: rgba(30, 41, 59, 0.85) !important;
}

h1, .prose h1,
.hero-section h1 {
    font-size: var(--heading-1) !important;
    line-height: var(--heading-line-tight) !important;
    font-weight: 700 !important;
    letter-spacing: -0.01em;
}

.section-heading {
    font-size: var(--heading-2) !important;
    line-height: var(--heading-line-tight) !important;
    font-weight: 600 !important;
    letter-spacing: -0.01em;
}

h2, .prose h2 {
    font-size: var(--heading-2) !important;
    line-height: var(--heading-line-tight) !important;
    font-weight: 600 !important;
}

h3, .prose h3 {
    font-size: var(--heading-3) !important;
    line-height: var(--heading-line-snug) !important;
    font-weight: 600 !important;
}

h4, .prose h4 {
    font-size: var(--heading-4) !important;
    line-height: var(--heading-line-snug) !important;
    font-weight: 600 !important;
}

/* (pruned) Removed legacy utility overrides and Bootstrap-era sidebar tweaks */

aside .bg-white.rounded-xl.shadow-soft.p-3.pt-1.border.border-gray-100.mt-4:first-child {
    margin-top: 0 !important;
}

/* Ensure proper spacing for Similar Posts */
.mt-8 {
    margin-top: 2rem !important;
}

.mb-16 {
    margin-bottom: 4rem !important;
}

/* Ensure Similar Posts card has proper spacing */
.bg-blue-600.rounded-xl.shadow-soft.border.border-blue-700.overflow-hidden {
    margin-top: 2rem !important;
    margin-bottom: 4rem !important;
}

/* COMPREHENSIVE LINK UNDERLINE REMOVAL */
a,
a:hover,
a:focus,
a:visited {
    text-decoration: none !important;
}

/* ================================
   Fallbacks for Tailwind Arbitrary Utilities
   These ensure consistent rendering when Tailwind build
   misses bracket utilities (rounded-[..], from-[#..], etc.)
   ================================ */
/* Border radius utilities */
.rounded-\[10px\] { border-radius: 10px !important; }
.rounded-\[14px\] { border-radius: 14px !important; }
.rounded-t-\[14px\] {
    border-top-left-radius: 14px !important;
    border-top-right-radius: 14px !important;
}
.rounded-t-\[10px\] {
    border-top-left-radius: 10px !important;
    border-top-right-radius: 10px !important;
}
.rounded-tl-\[14px\] { border-top-left-radius: 14px !important; }

/* Width utilities */
.w-\[200px\] { width: 200px !important; }

/* Max height utilities */
.max-h-\[42px\] { max-height: 42px !important; }
.max-h-\[44px\] { max-height: 44px !important; }
.md\:max-h-\[52px\] {
    max-height: 42px !important;
}
@media (min-width: 768px) {
  .md\:max-h-\[52px\] {
      max-height: 52px !important;
  }
  .md\:max-h-\[60px\] {
      max-height: 60px !important;
  }
}

/* Gradient color stops for bg-gradient-* utilities */
.from-\[#5b8def\] {
    --tw-gradient-from: rgb(var(--brand-300-rgb)) var(--tw-gradient-from-position);
    --tw-gradient-to: rgb(var(--brand-300-rgb) / 0) var(--tw-gradient-to-position);
    --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
}
.to-\[#4a7fe0\] {
    --tw-gradient-to: rgb(var(--brand-400-rgb)) var(--tw-gradient-to-position);
}

html.dark .bg-gradient-to-b.from-\[#5b8def\].to-\[#4a7fe0\],
html.dark .bg-gradient-to-r.from-\[#5b8def\].to-\[#4a7fe0\] {
    background-image: linear-gradient(180deg, var(--btn-primary-1) 0%, var(--btn-primary-2) 100%) !important;
}

html.dark .from-\[#5b8def\] {
    --tw-gradient-from: var(--btn-primary-1) var(--tw-gradient-from-position) !important;
    --tw-gradient-to: rgb(51 65 85 / 0) var(--tw-gradient-to-position) !important;
    --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to) !important;
}

html.dark .to-\[#4a7fe0\] {
    --tw-gradient-to: var(--btn-primary-2) var(--tw-gradient-to-position) !important;
}

body {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
}

h1, h2, h3, h4, h5, h6 {
    font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
    font-weight: 600; /* Maintain heavier weight for system stack headings */
}

/* About page: make names under pictures larger */
#about-bios h3 { font-size: clamp(1.5rem, 2.5vw, 1.75rem); }
#about-bios .prose h2 { font-size: clamp(1.6rem, 2.6vw, 1.9rem); }
#about-bios .prose h3 { font-size: clamp(1.4rem, 2.4vw, 1.7rem); }
#about-bios .prose strong:first-child { font-size: clamp(1.4rem, 2.4vw, 1.7rem); }

/* Hide images inside blocks explicitly marked to suppress images */
.no-images img { display: none !important; }

/* Ensure first sidebar card is flush with top */
aside .bg-white.rounded-xl.shadow-soft.border.border-gray-100.mt-4:first-child { margin-top: 0 !important; }

.content {
    flex: 1;
}

.navbar-brand img {
    transition: transform 0.3s ease;
}

.navbar-brand:hover img {
    transform: scale(1.05);
}

.nav-link {
    font-weight: 500;
    transition: color 0.3s ease;
}

.nav-link:hover {
    color: var(--primary-color);
}

/* (pruned) Removed legacy header search button overrides */

/* Footer Styles */
.site-footer {
    box-shadow: 0 -2px 5px rgba(0, 0, 0, 0.1);
}

.site-footer h5 {
    font-weight: 600;
    margin-bottom: 1.5rem;
}

.site-footer ul li a {
    text-decoration: none;
    transition: color 0.3s ease;
}

.site-footer ul li a:hover {
    color: var(--border-muted) !important;
    text-decoration: underline;
}

.social-icons a {
    font-size: 1.2rem;
    transition: transform 0.3s ease;
}

.social-icons a:hover {
    transform: translateY(-3px);
}

/* (pruned) Removed generic .btn hover styles */

/* Post styles */
.post-title {
    font-weight: 700;
    margin-bottom: 1rem;
}

.post-meta {
    color: var(--secondary-color);
    font-size: 0.9rem;
    margin-bottom: 1.5rem;
}

.post-content {
    line-height: 1.8;
}

.post-content img {
    max-width: 100%;
    height: auto;
    border-radius: 8px;
    margin: 1.5rem 0;
}

/* Responsive adjustments */
@media (max-width: 768px) {
    .site-footer {
        text-align: center;
    }

    .social-icons {
        margin-bottom: 1.5rem;
    }
}

/* Custom CSS for Hilo Media */

/* Carousel customization */
.carousel-item {
    height: 65vh;
    min-height: 300px;
    background: no-repeat center center scroll;
    background-size: cover;
}

.carousel-caption {
    /* Caption now styled via glass-surface */
    padding: 1rem;
}

.carousel-caption h3 { font-size: 2.25rem; font-weight: 600; }

.carousel-caption p { font-weight: 400; }

/* Client logo styling */
.client-logo {
    opacity: 0.7;
    transition: all 0.3s ease;
    max-height: 100px;
    object-fit: contain;
    filter: grayscale(100%);
}

.client-logo:hover {
    opacity: 1;
    filter: grayscale(0%);
}

/* Custom section styling */
.bg-light {
    background-color: var(--surface-inset) !important;
}

/* Hero section enhancements */
.hero-section {
    padding: 5rem 0;
    /* background: linear-gradient(to right, var(--surface-inset), var(--border-strong)); */ /* Keep background transparent as requested */
}

/* (pruned) Removed Bootstrap .btn-primary customizations */

.contact-cta {
    color: var(--cta-text) !important;
    text-shadow: 0 1px 1px rgba(var(--text-deep-rgb), 0.18);
}

.contact-cta:hover,
.contact-cta:focus,
.contact-cta:focus-visible {
    color: var(--cta-text-hover) !important;
}

.contact-cta:visited {
    color: var(--cta-text) !important;
}

.cta-outline {
    border-width: 1px !important;
    border-style: solid !important;
    border-color: rgba(var(--brand-300-rgb), 0.55) !important;
    background-color: transparent !important;
    color: var(--link-color) !important;
    transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}

.cta-outline:hover,
.cta-outline:focus {
    background-color: rgba(var(--brand-100-rgb), 0.18) !important;
    color: var(--link-hover-color) !important;
    border-color: rgba(var(--brand-300-rgb), 0.75) !important;
}

.cta-outline:focus-visible {
    outline: 2px solid rgba(var(--brand-300-rgb), 0.75);
    outline-offset: 2px;
}

.cta-outline:visited {
    color: var(--link-color) !important;
}

html.dark .cta-outline {
    border-width: 1px !important;
    border-style: solid !important;
    border-color: rgba(var(--border-neutral-rgb), 0.55) !important;
    background-color: transparent !important;
    color: var(--text-on-brand) !important;
}

html.dark .cta-outline:hover,
html.dark .cta-outline:focus {
    background-color: rgba(71, 85, 105, 0.35) !important;
    color: var(--text-on-brand) !important;
    border-color: rgba(var(--border-neutral-rgb), 0.75) !important;
}

html.dark .cta-outline:visited {
    color: var(--text-on-brand) !important;
}

/* Call to action section styling */
.cta-section {
    background-color: var(--brand-cta);
}

/* Footer customization */
.footer {
    padding-top: 3rem;
    padding-bottom: 3rem;
}

/* Responsive adjustments */
@media (max-width: 767.98px) {
    .carousel-item {
        height: 50vh;
    }

    .carousel-caption h3 {
        font-size: 1.75rem;
    }

    .carousel-caption p {
        font-size: 1rem;
    }
}

/* ================================
   Glassmorphism Theme Utilities
   ================================ */

html[data-theme="light"] {
    --glass-bg: rgba(255, 255, 255, 0.20);
    --glass-bg-strong: rgba(255, 255, 255, 0.42);
    --glass-border: rgba(255, 255, 255, 0.4);
    --glass-shadow: 0 10px 30px rgba(31, 45, 61, 0.08);
    --glass-shadow-strong: 0 16px 40px rgba(31, 45, 61, 0.12);
    --glass-blur: 12px;
    --radius-sm: 10px;
    --radius-md: 14px;
    --radius-lg: 18px;
    --radius-btn: 10px;
    /* Ensure Bootstrap 5 buttons pick up our rounding */
    --bs-btn-border-radius: 10px;
}

/* Home carousel frame cleanup */
#homeCarousel { border: none !important; box-shadow: none !important; }
#homeCarousel img { border: 0 !important; }
/* Hide off-screen slides during slide animation and prevent page-wide overflow */
#homeCarousel,
#homeCarousel .relative.w-full {
    overflow: hidden !important;
}
/* Remove default heading top margin inside caption to balance top/bottom padding */
#homeCarousel .glass-caption h3 { margin-top: 0 !important; }

/* Improve caption contrast on carousel in light theme */
#homeCarousel .glass-caption {
    background-color: rgba(0, 0, 0, 0.48) !important;
    color: #fff !important;
}
#homeCarousel .glass-caption h3,
#homeCarousel .glass-caption p { color: #fff !important; }

/* ================================
   Post Detail: Responsive Embed
   Ensure embeds fill the 16:9 wrapper
   ================================ */
.post-embed { position: relative; overflow: hidden; border-radius: 14px; }
.post-embed iframe, .post-embed embed, .post-embed object { position: relative; z-index: 0 !important; }
.post-embed iframe,
.post-embed embed,
.post-embed object {
    position: absolute;
    top: 0; left: 0;
    width: 100% !important;
    height: 100% !important;
    border: 0;
    display: block;
}

/* Layered carousel for no-crop foreground with full-width background */
.carousel-slide { position: relative; }
.carousel-layer-bg {
    position: absolute; inset: 0;
    width: 100%; height: 100%;
    object-fit: cover; object-position: center;
    filter: blur(16px) brightness(0.92);
    transform: scale(1.08);
}

/* Caption reveal/parallax-lite on slide activation */
[data-carousel-item] .glass-caption {
    transform: translateY(16px);
    transition: transform 360ms ease 200ms;
    will-change: transform;
}
[data-carousel-item]:not(.hidden) .glass-caption,
[data-carousel-item][data-carousel-item="active"] .glass-caption {
    transform: translateY(0);
}

/* Carousel controls - triangle arrows in brand blue */
/* Blue chevrons */
.carousel-chevron { width: 36px; height: 36px; line-height: 1; display: inline-block; }
.carousel-chevron svg { width: 36px; height: 36px; fill: var(--text-on-brand); }
.carousel-chevron:hover { filter: brightness(1.1); }

/* Chevron container buttons */
.carousel-nav-btn {
    border: 2px solid var(--text-on-brand);
    border-radius: 14px;
    padding: 6px 10px;
    background: transparent;
    backdrop-filter: none;
}
.carousel-nav-btn:hover { filter: brightness(1.05); }

/* Carousel indicators below image */
.carousel-indicators-custom { display: flex; justify-content: center; gap: 8px; margin-top: 8px; }
.carousel-indicators-custom button {
    width: 10px;
    height: 10px;
    border-radius: 9999px;
    background: var(--primary-color) !important;
    opacity: 0.35;
    border: 0;
}
.carousel-indicators-custom button[aria-current="true"],
.carousel-indicators-custom button.active { opacity: 1 !important; background: var(--brand-cta-active) !important; }
html.dark .carousel-indicators-custom button {
    background: rgba(255, 255, 255, 0.65) !important;
}
html.dark .carousel-indicators-custom button[aria-current="true"],
html.dark .carousel-indicators-custom button.active {
    background: var(--text-on-brand) !important;
}

/* Flowbite carousel translate fallbacks (safeguard against purge) */
[data-carousel-item] {
    transition-property: transform;
    transition-duration: 700ms;
    transition-timing-function: ease-in-out;
}

[data-carousel-item].translate-x-0 {
    transform: translateX(0);
}

[data-carousel-item].translate-x-full {
    transform: translateX(100%);
}

[data-carousel-item].-translate-x-full {
    transform: translateX(-100%);
}

.demo-reel-frame iframe {
    display: block;
    width: 100%;
    height: auto;
}

.carousel-layer-fg {
    position: absolute; inset: 0;
    width: 100%; height: 100%;
    object-fit: contain; object-position: center;
}

/* Respect reduced transparency preferences */
@media (prefers-reduced-transparency: reduce) {
    :root {
        --glass-bg: var(--surface-base);
        --glass-bg-strong: var(--surface-base);
        --glass-blur: 0px;
    }
}

/* Generic glass surface */
.glass-surface {
    background: var(--glass-bg);
    -webkit-backdrop-filter: blur(var(--glass-blur));
    backdrop-filter: blur(var(--glass-blur));
    border: 1px solid var(--glass-border);
    box-shadow: var(--glass-shadow);
    border-radius: var(--radius-lg);
}

/* Reserve nav height to reduce layout shift on first paint */
/* Nav height reservation (smaller to avoid oversized header) */
.glass-nav { min-height: 58px; }
@media (min-width: 768px) {
    .glass-nav { min-height: 58px; }
}

/* Stronger Services dropdown styling (dev parity with prod) */
#servicesDropdownMenu {
    background: #ffffff !important;
    background-color: #ffffff !important;
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
    border: 1px solid rgba(var(--text-deep-rgb), 0.12) !important; /* gray-200-ish */
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12) !important;
    border-radius: 10px !important;
}

/* Reduce layout shift from scrollbar appearance */
html { scrollbar-gutter: stable both-edges; }

.brand-link {
    display: flex !important;
    align-items: center !important;
    column-gap: 0.5rem;
    margin-right: 1.5rem !important;
}

.brand-link span {
    display: inline-flex;
    align-items: center;
    line-height: 1 !important;
}

/* Lock brand logo dimensions to prevent growth under preflight */
.brand-link img {
    display: block;
    width: 140px !important;
    height: 35px !important;
}

.brand-nav-spacer {
    margin-left: 0 !important;
}

@media (min-width: 1024px) {
    .brand-link {
        margin-right: 2rem !important;
    }
    .brand-nav-spacer {
        margin-left: 2rem !important;
    }
}

/* Footer - glass */
.footer.glass-footer {
    background: var(--glass-bg);
    -webkit-backdrop-filter: blur(var(--glass-blur));
    backdrop-filter: blur(var(--glass-blur));
    border-top: 1px solid rgba(0, 0, 0, 0.06);
    color: var(--text-glass);
}

.footer.glass-footer a { color: var(--text-glass); }
.footer.glass-footer a:hover { color: var(--primary-color); }

/* Ensure legacy text-white utility doesn't force white on glass footer */
.glass-footer .text-white { color: var(--text-glass) !important; }

/* Adapt light-outlined buttons inside glass footer */
/* (pruned) Removed Bootstrap outline button overrides in footer */

/* Focus visibility for keyboard navigation */
input:not([type="checkbox"]):focus-visible,
select:focus-visible,
textarea:focus-visible,
button:focus-visible,
a:focus-visible,
.nav-link:focus-visible {
    outline: 2px solid rgba(var(--brand-cta-rgb), 0.6);
    outline-offset: 2px;
}

/* Forms */
/* (pruned) Removed Bootstrap .form-control styling; Tailwind utilities now applied directly in templates */

/* CKEditor content and images */
.ck-content img {
    border-radius: var(--radius-sm);
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.06);
}

.ck.ck-editor {
    border-radius: 18px;
    background: transparent;
    box-shadow: none;
}

.ck.ck-editor .ck-editor__main > .ck-editor__editable {
    min-height: 20rem;
    border-radius: 14px;
    border: 1px solid rgba(15, 23, 42, 0.08);
    background-color: rgba(255, 255, 255, 0.92);
    color: #0f172a;
    transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}

.ck.ck-editor .ck.ck-toolbar {
    border-radius: 16px 16px 0 0;
    border: 1px solid rgba(15, 23, 42, 0.08);
    background-color: rgba(241, 245, 249, 0.9);
    backdrop-filter: blur(10px);
    transition: background-color 0.2s ease, border-color 0.2s ease;
}

.ck-editor--dark .ck-editor__editable {
    background-color: rgba(15, 23, 42, 0.85) !important;
    color: #e2e8f0 !important;
    border-color: rgba(148, 163, 184, 0.35) !important;
}

.ck-editor--dark .ck.ck-toolbar {
    background-color: rgba(15, 23, 42, 0.9) !important;
    border-color: rgba(148, 163, 184, 0.35) !important;
}

.ck-editor--dark .ck.ck-toolbar .ck-button:not(.ck-disabled):hover,
.ck-editor--dark .ck.ck-toolbar .ck-on {
    background-color: rgba(94, 234, 212, 0.2) !important;
    color: #f8fafc !important;
}

.ck-editor--dark .ck-editor__editable a {
    color: #38bdf8;
}

/* Utility */
.shadow-soft { box-shadow: var(--glass-shadow) !important; }
.rounded-lg { border-radius: var(--radius-lg) !important; }
.rounded-md { border-radius: var(--radius-md) !important; }
.rounded-sm { border-radius: var(--radius-sm) !important; }

/* Reduced motion preferences */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation: none !important;
        transition: none !important;
        scroll-behavior: auto !important;
    }
}

/* ================================
   Section spacing & titles
   ================================ */
.section-spacing { padding-top: 3rem; padding-bottom: 3rem; }
.section-title {
    font-size: var(--heading-2) !important;
    line-height: var(--heading-line-tight) !important;
    font-weight: 600 !important;
}

/* ================================
   About Page: Bios grid fallback
   Force 1 column on small, 2 columns >=768px to avoid Tailwind build gaps
   ================================ */
#about-bios { display: grid; grid-template-columns: 1fr; }
@media (min-width: 768px) {
  #about-bios { grid-template-columns: 1fr 1fr; }
}

/* Home: Production Process section should keep blue background under blur/shadow */
#process-section {
    /* Ensure backdrop-filter on cards samples only blue section backdrop */
    isolation: isolate;
    /* Ensure enough blue area below cards to avoid white bleed */
    padding-bottom: 6rem; /* ~pb-24 */
}
@media (min-width: 768px) {
    #process-section { padding-top: 4rem; padding-bottom: 7rem; }
}

/* ================================
   New Tailwind Service Cards
   ================================ */
.glass-surface {
    overflow: visible !important;
    transition: all 0.3s ease;
}

/* Honor explicit overflow-hidden utility when provided */
.glass-surface.overflow-hidden { overflow: hidden !important; }

.medical-hero-visual img {
    border-radius: 14px !important;
}

@media (min-width: 768px) {
    .medical-hero-visual img {
        border-top-left-radius: 14px !important;
        border-bottom-left-radius: 14px !important;
    }
}

.about-bio-card .prose h2,
.about-bio-card .prose h3,
.about-bio-card .prose h4 {
    font-size: clamp(2rem, 1.75rem + 0.5vw, 2.75rem) !important;
    font-weight: 700 !important;
    margin-bottom: 0.75rem !important;
}

.about-bio-card .prose p {
    font-size: 1rem !important;
    line-height: 1.7 !important;
}

.taxonomy-bar {
    gap: 0.75rem !important;
}



.taxonomy-pill-link {
    display: inline-flex;
    align-items: center;
    padding: 0.35rem 0.75rem;
    border-radius: 999px;
    border: 1px solid var(--pill-link-border);
    background-color: var(--pill-link-bg);
    font-weight: 600;
    letter-spacing: 0.01em;
    transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}

.taxonomy-pill-link:hover {
    background-color: rgba(var(--brand-300-rgb), 0.2);
    border-color: rgba(var(--brand-400-rgb), 0.5);
}

html.dark .taxonomy-pill-link {
    border: 1px solid var(--pill-link-border) !important;
    background-color: var(--pill-link-bg) !important;
}

html.dark .taxonomy-pill-link:hover {
    background-color: rgba(51, 65, 85, 0.85) !important;
}

html.dark .taxonomy-bar span {
    color: var(--text-muted);
}

html.dark .taxonomy-bar a {
    color: var(--text-on-brand) !important;
}

html.dark .taxonomy-bar a:hover {
    color: var(--brand-100) !important;
}

.post-nav-minimal {
    margin-top: 2.5rem !important;
}

.post-nav-minimal .nav-link-prev,
.post-nav-minimal .nav-link-next {
    display: inline-flex !important;
    flex-direction: column !important;
    align-items: flex-start !important;
    gap: 0.3rem !important;
    padding: 0.5rem 0.75rem !important;
    border-radius: 10px !important;
    border: 1px solid rgba(var(--border-neutral-rgb), 0.8) !important;
    background-color: rgba(var(--surface-raised-rgb), 0.6) !important;
    color: var(--text-primary) !important;
    min-width: 0;
    transition: border-color 0.2s ease, background-color 0.2s ease, transform 0.2s ease;
}

.post-nav-minimal .nav-link-prev:hover,
.post-nav-minimal .nav-link-next:hover {
    border-color: rgba(var(--brand-300-rgb), 0.5) !important;
    background-color: rgba(var(--brand-100-rgb), 0.9) !important;
    transform: translateY(-1px);
}

.post-nav-minimal .nav-link-next {
    align-items: flex-start !important;
    text-align: left;
}

@media (min-width: 768px) {
    .post-nav-minimal .nav-link-next {
        align-items: flex-end !important;
        text-align: right;
    }
}

.nav-link-label {
    font-size: 0.7rem !important;
    font-weight: 600 !important;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: rgba(var(--brand-300-rgb), 0.9) !important;
}

.nav-link-title {
    font-size: 0.95rem !important;
    font-weight: 600 !important;
    line-height: 1.35 !important;
    color: var(--text-primary) !important;
}

.glass-surface:hover {
    transform: translateY(-5px);
    box-shadow: 0 20px 40px rgba(0, 0, 0, 0.15);
}

/* ================================
   Blog Post Template Enhancements
   ================================ */
/* Line clamp utilities for text truncation */
.line-clamp-2 {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.line-clamp-3 {
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* Enhanced prose styling for blog content */
.prose {
    color: var(--text-secondary);
    max-width: none;
}

.prose h1, .prose h2, .prose h3, .prose h4, .prose h5, .prose h6 {
    color: var(--text-deep);
    font-weight: 600;
    line-height: 1.25;
    margin-top: 2rem;
    margin-bottom: 1rem;
}

.prose h1:first-child, .prose h2:first-child, .prose h3:first-child,
.prose h4:first-child, .prose h5:first-child, .prose h6:first-child {
    margin-top: 0;
}

.prose p {
    margin-bottom: 1.25rem;
    line-height: 1.75;
}

.prose ul,
.prose ol {
    margin-bottom: 1.25rem;
    padding-left: 1.625rem;
    list-style-position: outside;
}

.prose ul {
    list-style-type: disc;
}

.prose ol {
    list-style-type: decimal;
}

.prose li {
    margin-bottom: 0.5rem;
}

/* Keep emphasized text legible across themes */
.prose strong,
.prose b {
    color: var(--text-deep);
}

html.dark .prose strong,
html.dark .prose b {
    color: var(--text-primary);
}

.prose a {
    color: var(--link-color);
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 2px;
}

.prose a:hover {
    color: var(--link-hover-color);
}

.prose blockquote {
    border-left: 4px solid var(--border-subtle);
    padding-left: 1rem;
    margin: 1.5rem 0;
    font-style: italic;
    color: var(--text-muted);
}

.prose code {
    background-color: var(--surface-alt);
    padding: 0.125rem 0.25rem;
    border-radius: 0.25rem;
    font-size: 0.875em;
    color: var(--danger-600);
}

.prose pre {
    background-color: var(--surface-code);
    color: var(--surface-code-text);
    padding: 1rem;
    border-radius: 0.5rem;
    overflow-x: auto;
    margin: 1.5rem 0;
}

.prose pre code {
    background-color: transparent;
    padding: 0;
    color: inherit;
}

/* Enhanced shadow utilities */
.shadow-soft {
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
}

.shadow-medium {
    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
}

/* Smooth transitions for interactive elements */
.transition-all {
    transition-property: all;
    transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
    transition-duration: 200ms;
}

/* ================================
   Responsive video embeds
   ================================ */
.responsive-embed {
    position: relative;
    padding-bottom: 56.25%; /* 16:9 */
    height: 0;
}

.responsive-embed iframe,
.responsive-embed object,
.responsive-embed embed {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

/* Utility: hide images within specific content blocks */
.no-images img { display: none !important; }

/* Force white text inside accent blocks even if CMS added inline colors */
.accent-invert,
.accent-invert h1,
.accent-invert h2,
.accent-invert h3,
.accent-invert h4,
.accent-invert h5,
.accent-invert h6,
.accent-invert p,
.accent-invert li,
.accent-invert a,
.accent-invert strong,
.accent-invert em,
.accent-invert span {
  color: #ffffff !important;
}
.accent-invert a { text-decoration: underline; }

/* Tighten spacing in Explainer "What Is" band */
#what-is-section .prose h3 { margin-bottom: 0.25rem !important; }
#what-is-section .prose p:first-of-type { margin-top: 0.25rem !important; }

/* Force rounded corners on the Explainer "What Is" gradient band */
#what-is-section {
    border-radius: 14px !important;
    overflow: hidden;
}

/* Normalize titles inside Medical services/types row */
#med-services-types .prose h2,
#med-services-types .prose h3 {
    font-size: 1.5rem !important; /* ~text-2xl */
    line-height: 1.3 !important;
    margin-bottom: 0.5rem !important;
}

/* ================================
   FAQ accordion normalizer
   ================================ */
#faq-accordion h1,
#faq-accordion h2,
#faq-accordion h3,
#faq-accordion h4,
#faq-accordion h5,
#faq-accordion h6 {
    font-size: 1em !important;
    line-height: 1.5 !important;
    margin: 0 0 0.5rem 0 !important;
}

#faq-accordion p { margin: 0.5rem 0; }
#faq-accordion ul, #faq-accordion ol { margin: 0.5rem 0 0.5rem 1rem; }
#faq-accordion li { margin: 0.25rem 0; }

.transition-colors {
    transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
    transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
    transition-duration: 200ms;
}

/* Responsive image handling */
.post-body img {
    max-width: 100%;
    height: auto;
    border-radius: 0.5rem;
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
}

/* Enhanced button styles */
.btn-modern {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.75rem 1.5rem;
    font-size: 0.875rem;
    font-weight: 500;
    line-height: 1.25rem;
    border-radius: 0.5rem;
    transition: all 0.2s ease-in-out;
    text-decoration: none;
    cursor: pointer;
}

.btn-modern:hover {
    transform: translateY(-1px);
    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
}

/* Glass effect utilities */
.glass-surface-strong {
    background: var(--glass-bg-strong);
    -webkit-backdrop-filter: blur(var(--glass-blur));
    backdrop-filter: blur(var(--glass-blur));
    border: 1px solid var(--glass-border);
    border-radius: var(--radius-lg);
}

/* Page vertical rhythm */
main > div.w-full { padding-top: 2rem !important; padding-bottom: 2rem !important; }
@media (min-width: 768px) { main > div.w-full { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } }

/* Similar Posts spacing tweaks */
.similar-posts-header { padding-top: 0.75rem !important; padding-bottom: 0.5rem !important; }
.similar-posts-links a { padding-top: 0.125rem !important; padding-bottom: 0.125rem !important; }
.similar-posts-grid { gap: 0.25rem !important; }

/* Similar Posts typography parity with sidebar */
.similar-posts-title { font-weight: 600 !important; }
.similar-posts-link { font-weight: 500 !important; font-size: 0.875rem !important; line-height: 1.25rem !important; }

/* Stronger override: Services menu matches default navbar link color */
.glass-nav #servicesDropdownButton,
.glass-nav #servicesDropdownButton *,
#servicesDropdownButton,
#servicesDropdownButton * {
    color: var(--text-secondary) !important; /* text-gray-700 */
}

/* Hover state remains blue like other links */
.glass-nav #servicesDropdownButton:hover,
#servicesDropdownButton:hover {
    color: var(--brand-600); /* text-blue-700 */
}

/* Services submenu links parity */
#servicesDropdownMenu a { color: var(--text-secondary) !important; font-size: 0.875rem !important; font-weight: 500 !important; }
#servicesDropdownMenu a:hover { color: var(--brand-600); }

/* Footer sizing adjustments */
.footer .container { font-size: 0.875rem; }
.footer h5 { font-size: 1rem; }
.footer .social-icons i { font-size: 0.95rem; }
.footer .footer-cta { color: var(--cta-text) !important; }
.footer .footer-cta:hover { color: var(--cta-text-hover) !important; }

/* Prevent horizontal scrollbars due to any wide child */
html, body { max-width: 100%; overflow-x: hidden; }

/* Sidebar card symmetric padding enforcement */
aside .bg-white.rounded-xl.shadow-soft { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; padding-left: 0.75rem !important; padding-right: 0.75rem !important; }

/* =================================
   Auth Pages
   ================================= */
.auth-container {
    max-width: 480px;
    margin-left: auto;
    margin-right: auto;
    width: 100%;
}

.auth-container .glass-surface {
    border-radius: 18px !important;
    overflow: hidden;
}

.auth-container .glass-surface > .p-6 {
    padding: 2.5rem !important;
}

@media (max-width: 640px) {
    .auth-container {
        max-width: min(92%, 400px);
    }

    .auth-container .glass-surface > .p-6 {
        padding: 2rem !important;
    }
}

/* Minimal Tailwind utility fallbacks removed (preflight enabled) */

/* Strong footer row enforcement to avoid legacy CSS conflicts */
@media (min-width: 768px) {
  footer .footer-row {
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 1rem !important;
  }
  footer .footer-row > p { margin: 0 !important; }
}


/* Service page subtitle: smaller + lighter across all services */
.service-subtitle {
    font-size: 0.95rem !important;
    line-height: 1.4 !important;
    color: #6b7280 !important; /* gray-500 (lighter) */
    font-weight: 300 !important; /* light */
}
@media (min-width: 768px) {
  .service-subtitle { font-size: 1.05rem !important; }
}

html.dark .service-subtitle {
    color: #94a3b8 !important; /* slate-400 in dark mode for subtler tone */
}





.card-panel {
    background-color: rgba(255, 255, 255, 0.92);
    border-radius: 0.75rem;
    border: 1px solid rgba(226, 232, 240, 0.6);
    box-shadow: var(--glass-shadow);
}

.card-panel .card-pad {
    padding-top: var(--card-pt, 1rem);
    padding-bottom: var(--card-pb, 1rem);
    padding-left: var(--card-px, 1rem);
    padding-right: var(--card-px, 1rem);
}

.card-panel .prose {
    color: var(--text-secondary);
}

html.dark .card-panel {
    background: rgba(30, 41, 59, 0.92) !important;
    border-color: rgba(var(--border-neutral-rgb), 0.45) !important;
    color: var(--text-on-brand);
}

html.dark .card-panel .prose,
html.dark .card-panel .prose p,
html.dark .card-panel .prose li,
html.dark .card-panel .prose h3,
html.dark .card-panel .prose h4,
html.dark .card-panel .prose strong,
html.dark .card-panel .prose b {
}

html.dark .card-panel a,
html.dark .card-panel a:hover {
}

.card-panel a {
    color: var(--brand-500);
}

.card-panel a:hover {
    color: var(--brand-600);
}

html.dark .card-panel a {
    color: var(--brand-100);
}

html.dark .card-panel a:hover {
    color: var(--text-on-brand);
}

html.dark .card-panel .space-y-1 a,
html.dark .card-panel .space-y-1 a span,
html.dark .card-panel .similar-posts-title,
html.dark .card-panel .similar-posts-link {
    color: var(--text-on-brand) !important;
}

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImN1c3RvbS5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEiLCJmaWxlIjoiY3VzdG9tLmJ1aWxkLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIE1haW4gU3R5bGVzICovXG46cm9vdCB7XG4gICAgY29sb3Itc2NoZW1lOiBsaWdodDtcblxuICAgIC8qIFN1cmZhY2UgdG9rZW5zICovXG4gICAgLS1zdXJmYWNlLWJhc2U6ICNmZmZmZmY7XG4gICAgLS1zdXJmYWNlLWJhc2UtcmdiOiAyNTUgMjU1IDI1NTtcbiAgICAtLXN1cmZhY2UtcmFpc2VkOiAjZjlmYWZiO1xuICAgIC0tc3VyZmFjZS1hbHQ6ICNmM2Y0ZjY7XG4gICAgLS1zdXJmYWNlLWluc2V0OiAjZjhmOWZhO1xuICAgIC0tc3VyZmFjZS1jb2RlOiAjMWYyOTM3O1xuICAgIC0tc3VyZmFjZS1jb2RlLXRleHQ6ICNmOWZhZmI7XG4gICAgLS1zdXJmYWNlLXJhaXNlZC1yZ2I6IDI0OSAyNTAgMjUxO1xuICAgIC0tc3VyZmFjZS1pbnNldC1yZ2I6IDI0OCAyNDkgMjUwO1xuXG4gICAgLyogQm9yZGVyIHRva2VucyAqL1xuICAgIC0tYm9yZGVyLXN1YnRsZTogI2U1ZTdlYjtcbiAgICAtLWJvcmRlci1zdHJvbmc6ICNlOWVjZWY7XG4gICAgLS1ib3JkZXItbXV0ZWQ6ICNjY2NjY2M7XG4gICAgLS1ib3JkZXItbmV1dHJhbC1yZ2I6IDIwMyAyMTMgMjI1O1xuXG4gICAgLyogVGV4dCB0b2tlbnMgKi9cbiAgICAtLXRleHQtcHJpbWFyeTogIzFmMjkzNztcbiAgICAtLXRleHQtc2Vjb25kYXJ5OiAjMzc0MTUxO1xuICAgIC0tdGV4dC10ZXJ0aWFyeTogIzRiNTU2MztcbiAgICAtLXRleHQtbXV0ZWQ6ICM2YjcyODA7XG4gICAgLS10ZXh0LWdsYXNzOiAjMWYyZDNkO1xuICAgIC0tdGV4dC1pbnZlcnNlOiAjZmZmZmZmO1xuICAgIC0tdGV4dC1vbi1icmFuZDogI2ZmZmZmZjtcbiAgICAtLXRleHQtZGVlcDogIzExMTgyNztcbiAgICAtLXRleHQtZGVlcC1yZ2I6IDE3IDI0IDM5O1xuXG4gICAgLyogQnJhbmQgdG9rZW5zICovXG4gICAgLS1icmFuZC0xMDA6ICNlZmY2ZmY7XG4gICAgLS1icmFuZC0yMDA6ICNlMGU3ZmY7XG4gICAgLS1icmFuZC0zMDA6ICM1YjhkZWY7XG4gICAgLS1icmFuZC00MDA6ICM0YTdmZTA7XG4gICAgLS1icmFuZC01MDA6ICMyNTYzZWI7XG4gICAgLS1icmFuZC02MDA6ICMxZDRlZDg7XG4gICAgLS1icmFuZC03MDA6ICMxZTNhOGE7XG4gICAgLS1icmFuZC1jdGE6ICMwZDZlZmQ7XG4gICAgLS1icmFuZC1jdGEtaG92ZXI6ICMwYjVlZDc7XG4gICAgLS1icmFuZC1jdGEtYWN0aXZlOiAjMGE1OGNhO1xuICAgIC0tYnJhbmQtMTAwLXJnYjogMjM5IDI0NiAyNTU7XG4gICAgLS1icmFuZC0yMDAtcmdiOiAyMjQgMjMxIDI1NTtcbiAgICAtLWJyYW5kLTMwMC1yZ2I6IDkxIDE0MSAyMzk7XG4gICAgLS1icmFuZC00MDAtcmdiOiA3NCAxMjcgMjI0O1xuICAgIC0tYnJhbmQtY3RhLXJnYjogMTMgMTEwIDI1MztcblxuICAgIC8qIFN0YXR1cyB0b2tlbnMgKi9cbiAgICAtLXN1Y2Nlc3MtNTAwOiAjMTk4NzU0O1xuICAgIC0tZGFuZ2VyLTUwMDogI2RjMzU0NTtcbiAgICAtLWRhbmdlci02MDA6ICNkYzI2MjY7XG5cbiAgICAvKiBVdGlsaXR5IHRva2VucyAqL1xuICAgIC0taGVyby1ncmFkaWVudC1zdGFydDogdmFyKC0tc3VyZmFjZS1yYWlzZWQpO1xuICAgIC0taGVyby1ncmFkaWVudC1taWQ6IHZhcigtLWJyYW5kLTEwMCk7XG4gICAgLS1oZXJvLWdyYWRpZW50LWVuZDogdmFyKC0tYnJhbmQtMjAwKTtcbiAgICAtLWdsYXNzLWJnOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODIpO1xuICAgIC0tZ2xhc3MtYmctc3Ryb25nOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7XG4gICAgLS1nbGFzcy1ib3JkZXI6IHJnYmEoMTQ4LCAxNjMsIDE4NCwgMC4xMik7XG4gICAgLS1zaGFkb3ctc29mdDogcmdiYSgxNSwgMjMsIDQyLCAwLjA4KTtcbiAgICAtLXBpbGwtbGluay1iZzogcmdiYSh2YXIoLS1icmFuZC0zMDAtcmdiKSwgMC4xMik7XG4gICAgLS1waWxsLWxpbmstYm9yZGVyOiByZ2JhKHZhcigtLWJyYW5kLTMwMC1yZ2IpLCAwLjM1KTtcbiAgICAtLXBpbGwtbGluay1jb2xvcjogdmFyKC0tYnJhbmQtNjAwKTtcblxuICAgIC8qIExpbmsgdG9rZW5zIChsaWdodCB0aGVtZSkgKi9cbiAgICAvKiBCdW1wIGRlZmF1bHQgbGluayBjb2xvciBmb3Igc3Ryb25nZXIgY29udHJhc3Qgb24gd2hpdGUgKi9cbiAgICAtLWxpbmstY29sb3I6IHZhcigtLWJyYW5kLTcwMCk7XG4gICAgLS1saW5rLWhvdmVyLWNvbG9yOiB2YXIoLS1icmFuZC02MDApO1xuICAgIC0tbGluay12aXNpdGVkLWNvbG9yOiB2YXIoLS1icmFuZC03MDApO1xuXG4gICAgLyogQ1RBIHRva2VucyAqL1xuICAgIC0tY3RhLXRleHQ6ICNmOGZiZmY7XG4gICAgLS1jdGEtdGV4dC1ob3ZlcjogI2ZmZmZmZjtcblxuICAgIC8qIFR5cG9ncmFwaHkgc2NhbGUgKi9cbiAgICAtLWhlYWRpbmctMTogY2xhbXAoMi41cmVtLCAyLjFyZW0gKyAxLjB2dywgMy4xcmVtKTtcbiAgICAtLWhlYWRpbmctMjogY2xhbXAoMS41cmVtLCAxLjM1cmVtICsgMC42dncsIDEuOXJlbSk7XG4gICAgLS1oZWFkaW5nLTM6IGNsYW1wKDEuMjVyZW0sIDEuMTVyZW0gKyAwLjQ1dncsIDEuNnJlbSk7XG4gICAgLS1oZWFkaW5nLTQ6IGNsYW1wKDEuMTI1cmVtLCAxLjA1cmVtICsgMC4zNXZ3LCAxLjM1cmVtKTtcbiAgICAtLWhlYWRpbmctbGluZS10aWdodDogMS4xMjtcbiAgICAtLWhlYWRpbmctbGluZS1zbnVnOiAxLjI7XG5cbiAgICAvKiBMZWdhY3kgYWxpYXNlcyAodGVtcG9yYXJ5KSAqL1xuICAgIC0tcHJpbWFyeS1jb2xvcjogdmFyKC0tYnJhbmQtNTAwKTtcbiAgICAtLXNlY29uZGFyeS1jb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7XG4gICAgLS1kYXJrLWNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpO1xuICAgIC0tbGlnaHQtY29sb3I6IHZhcigtLXN1cmZhY2UtaW5zZXQpO1xuICAgIC0tc3VjY2Vzcy1jb2xvcjogdmFyKC0tc3VjY2Vzcy01MDApO1xuICAgIC0tZGFuZ2VyLWNvbG9yOiB2YXIoLS1kYW5nZXItNTAwKTtcbiAgICAtLWJ0bi1wcmltYXJ5LTE6IHZhcigtLWJyYW5kLTMwMCk7XG4gICAgLS1idG4tcHJpbWFyeS0yOiB2YXIoLS1icmFuZC00MDApO1xufVxuXG5bZGF0YS10aGVtZT1cImRhcmtcIl0ge1xuICAgIGNvbG9yLXNjaGVtZTogZGFyaztcbiAgICAtLXN1cmZhY2UtYmFzZTogIzBmMTcyYTtcbiAgICAtLXN1cmZhY2UtYmFzZS1yZ2I6IDE1IDIzIDQyO1xuICAgIC0tc3VyZmFjZS1yYWlzZWQ6ICMxMTE4Mjc7XG4gICAgLS1zdXJmYWNlLWFsdDogIzFlMjkzYjtcbiAgICAtLXN1cmZhY2UtaW5zZXQ6ICMwZjE3MmE7XG4gICAgLS1zdXJmYWNlLWNvZGU6ICMwYjExMjA7XG4gICAgLS1zdXJmYWNlLWNvZGUtdGV4dDogI2UyZThmMDtcbiAgICAtLXN1cmZhY2UtcmFpc2VkLXJnYjogMTcgMjQgMzk7XG4gICAgLS1zdXJmYWNlLWluc2V0LXJnYjogMTUgMjMgNDI7XG5cbiAgICAtLWJvcmRlci1zdWJ0bGU6ICMxZTI5M2I7XG4gICAgLS1ib3JkZXItc3Ryb25nOiAjMzM0MTU1O1xuICAgIC0tYm9yZGVyLW11dGVkOiAjNDc1NTY5O1xuICAgIC0tYm9yZGVyLW5ldXRyYWwtcmdiOiA3MSA4NSAxMDU7XG5cbiAgICAtLXRleHQtcHJpbWFyeTogI2UyZThmMDtcbiAgICAtLXRleHQtc2Vjb25kYXJ5OiAjY2JkNWY1O1xuICAgIC0tdGV4dC10ZXJ0aWFyeTogIzk0YTNiODtcbiAgICAtLXRleHQtbXV0ZWQ6ICM2NDc0OGI7XG4gICAgLS10ZXh0LWdsYXNzOiAjZTJlOGYwO1xuICAgIC0tdGV4dC1pbnZlcnNlOiAjMGYxNzJhO1xuICAgIC0tdGV4dC1vbi1icmFuZDogI2ZmZmZmZjtcbiAgICAtLXRleHQtZGVlcDogI2UyZThmMDtcbiAgICAtLXRleHQtZGVlcC1yZ2I6IDIyNiAyMzIgMjQwO1xuXG4gICAgLS1icmFuZC0xMDA6ICMxZTI5M2I7XG4gICAgLS1icmFuZC0yMDA6ICMxZTNhOGE7XG4gICAgLS1icmFuZC0zMDA6ICMzYjgyZjY7XG4gICAgLS1icmFuZC00MDA6ICMyNTYzZWI7XG4gICAgLS1icmFuZC01MDA6ICMxZDRlZDg7XG4gICAgLS1icmFuZC02MDA6ICNjYmQ1ZjU7XG4gICAgLS1icmFuZC03MDA6ICNlMmU4ZjA7XG4gICAgLS1icmFuZC1jdGE6ICMzMzQxNTU7XG4gICAgLS1icmFuZC1jdGEtaG92ZXI6ICMxZjI5Mzc7XG4gICAgLS1icmFuZC1jdGEtYWN0aXZlOiAjMGYxNzJhO1xuICAgIC0tYnJhbmQtMTAwLXJnYjogMzAgNDEgNTk7XG4gICAgLS1icmFuZC0yMDAtcmdiOiAzMCA1OCAxMzg7XG4gICAgLS1icmFuZC0zMDAtcmdiOiA1OSAxMzAgMjQ2O1xuICAgIC0tYnJhbmQtNDAwLXJnYjogMzcgOTkgMjM1O1xuICAgIC0tYnJhbmQtY3RhLXJnYjogNTEgNjUgODU7XG4gICAgLS1idG4tcHJpbWFyeS0xOiAjMzM0MTU1O1xuICAgIC0tYnRuLXByaW1hcnktMjogIzBmMTcyYTtcblxuICAgIC0tc3VjY2Vzcy01MDA6ICMxMGI5ODE7XG4gICAgLS1kYW5nZXItNTAwOiAjZjg3MTcxO1xuICAgIC0tZGFuZ2VyLTYwMDogI2VmNDQ0NDtcblxuICAgIC0taGVyby1ncmFkaWVudC1zdGFydDogIzBmMTcyYTtcbiAgICAtLWhlcm8tZ3JhZGllbnQtbWlkOiAjMWUzYThhO1xuICAgIC0taGVyby1ncmFkaWVudC1lbmQ6ICMzMTJlODE7XG4gICAgLS1nbGFzcy1iZzogcmdiYSgxNSwgMjMsIDQyLCAwLjc4KTtcbiAgICAtLWdsYXNzLWJnLXN0cm9uZzogcmdiYSgxNSwgMjMsIDQyLCAwLjkpO1xuICAgIC0tZ2xhc3MtYm9yZGVyOiByZ2JhKDE0OCwgMTYzLCAxODQsIDAuMzIpO1xuICAgIC0tc2hhZG93LXNvZnQ6IHJnYmEoMTUsIDIzLCA0MiwgMC40NSk7XG4gICAgLS1waWxsLWxpbmstYmc6IHJnYmEoMzAsIDQxLCA1OSwgMC44NSk7XG4gICAgLS1waWxsLWxpbmstYm9yZGVyOiByZ2JhKHZhcigtLWJvcmRlci1uZXV0cmFsLXJnYiksIDAuNDUpO1xuICAgIC0tcGlsbC1saW5rLWNvbG9yOiB2YXIoLS10ZXh0LW9uLWJyYW5kKTtcblxuICAgIC8qIExpbmsgdG9rZW5zICovXG4gICAgLS1saW5rLWNvbG9yOiB2YXIoLS1icmFuZC0zMDApO1xuICAgIC0tbGluay1ob3Zlci1jb2xvcjogdmFyKC0tYnJhbmQtNDAwKTtcbiAgICAtLWxpbmstdmlzaXRlZC1jb2xvcjogdmFyKC0tYnJhbmQtNTAwKTtcblxuICAgIC8qIENUQSB0b2tlbnMgKi9cbiAgICAtLWN0YS10ZXh0OiAjZTJlY2ZmO1xuICAgIC0tY3RhLXRleHQtaG92ZXI6ICNmOGZiZmY7XG5cbiAgICAvKiBHbGFzc21vcnBoaXNtIHRva2VucyAqL1xuICAgIC0tZ2xhc3Mtc2hhZG93OiAwIDE4cHggNDRweCByZ2JhKDgsIDE0LCAzMSwgMC41NSk7XG4gICAgLS1nbGFzcy1zaGFkb3ctc3Ryb25nOiAwIDI4cHggNjRweCByZ2JhKDcsIDEyLCAyNCwgMC42NSk7XG4gICAgLS1nbGFzcy1ibHVyOiAxNHB4O1xuICAgIC0tcmFkaXVzLXNtOiAxMHB4O1xuICAgIC0tcmFkaXVzLW1kOiAxNHB4O1xuICAgIC0tcmFkaXVzLWxnOiAxOHB4O1xuICAgIC0tcmFkaXVzLWJ0bjogMTBweDtcbiAgICAtLWJzLWJ0bi1ib3JkZXItcmFkaXVzOiAxMHB4O1xufVxuXG4uc2VydmljZS1oZXJvLWdyYWRpZW50IHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1oZXJvLWdyYWRpZW50LXN0YXJ0KSAwJSwgdmFyKC0taGVyby1ncmFkaWVudC1taWQpIDYwJSwgdmFyKC0taGVyby1ncmFkaWVudC1lbmQpIDEwMCUpO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgRGFyayB0aGVtZSBnbG9iYWwgYWRqdXN0bWVudHNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5odG1sLmRhcmsgYm9keSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3VyZmFjZS1iYXNlKTtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTtcbn1cblxuaHRtbC5kYXJrIC5iZy13aGl0ZSxcbmh0bWwuZGFyayAuYmctd2hpdGVcXC83MCxcbmh0bWwuZGFyayAuYmctd2hpdGVcXC84MCxcbmh0bWwuZGFyayAuYmctZ3JheS01MCxcbmh0bWwuZGFyayAuYmctZ3JheS0xMDAsXG5odG1sLmRhcmsgLmJnLWJsdWUtNTAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tc3VyZmFjZS1yYWlzZWQtcmdiKSwgMC45KSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiBpbmhlcml0O1xufVxuXG5odG1sLmRhcmsgLmJvcmRlci1ncmF5LTEwMCxcbmh0bWwuZGFyayAuYm9yZGVyLWdyYXktMjAwLFxuaHRtbC5kYXJrIC5ib3JkZXItZ3JheS0zMDAsXG5odG1sLmRhcmsgLmJvcmRlci1ibHVlLTIwMCxcbmh0bWwuZGFyayAuYm9yZGVyLWJsdWUtMzAwIHtcbiAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tYm9yZGVyLW5ldXRyYWwtcmdiKSwgMC41KSAhaW1wb3J0YW50O1xufVxuXG5odG1sLmRhcmsgLnJpbmctZ3JheS0yMDAge1xuICAgIC0tdHctcmluZy1jb2xvcjogcmdiYSh2YXIoLS1ib3JkZXItbmV1dHJhbC1yZ2IpLCAwLjQpICFpbXBvcnRhbnQ7XG59XG5cbmh0bWwuZGFyayAudGV4dC1ncmF5LTUwMCxcbmh0bWwuZGFyayAudGV4dC1ncmF5LTYwMCxcbmh0bWwuZGFyayAudGV4dC1ncmF5LTcwMCxcbmh0bWwuZGFyayAudGV4dC1ncmF5LTgwMCxcbmh0bWwuZGFyayAudGV4dC1ncmF5LTkwMCxcbmh0bWwuZGFyayAudGV4dC1zbGF0ZS02MDAsXG5odG1sLmRhcmsgLnRleHQtc2xhdGUtNzAwLFxuaHRtbC5kYXJrIC50ZXh0LXNsYXRlLTgwMCxcbmh0bWwuZGFyayAudGV4dC1zbGF0ZS05MDAge1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpICFpbXBvcnRhbnQ7XG59XG5cbmh0bWwuZGFyayAudGV4dC1ibHVlLTYwMCxcbmh0bWwuZGFyayAudGV4dC1ibHVlLTcwMCxcbmh0bWwuZGFyayAudGV4dC1ibHVlLTgwMCxcbmh0bWwuZGFyayAudGV4dC1ibHVlLTkwMCB7XG4gICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSkgIWltcG9ydGFudDtcbn1cblxuaHRtbC5kYXJrIGEudGV4dC1ibHVlLTYwMCxcbmh0bWwuZGFyayBhLnRleHQtYmx1ZS03MDAsXG5odG1sLmRhcmsgYS50ZXh0LWJsdWUtODAwLFxuaHRtbC5kYXJrIGEudGV4dC1ibHVlLTkwMCB7XG4gICAgY29sb3I6IHZhcigtLWxpbmstY29sb3IpICFpbXBvcnRhbnQ7XG59XG5cbmh0bWwuZGFyayBhLnRleHQtYmx1ZS02MDA6aG92ZXIsXG5odG1sLmRhcmsgYS50ZXh0LWJsdWUtNzAwOmhvdmVyLFxuaHRtbC5kYXJrIGEudGV4dC1ibHVlLTgwMDpob3Zlcixcbmh0bWwuZGFyayBhLnRleHQtYmx1ZS05MDA6aG92ZXIge1xuICAgIGNvbG9yOiB2YXIoLS1saW5rLWhvdmVyLWNvbG9yKSAhaW1wb3J0YW50O1xufVxuXG5odG1sLmRhcmsgLmZvb3Rlci1jdGEsXG5odG1sLmRhcmsgLmJnLWJsdWUtNTAwLFxuaHRtbC5kYXJrIC5iZy1ibHVlLTYwMCxcbmh0bWwuZGFyayAuYmctYmx1ZS03MDAsXG5odG1sLmRhcmsgLmJnLWJsdWUtODAwLFxuaHRtbC5kYXJrIC5iZy1ibHVlLTkwMCxcbmh0bWwuZGFyayBidXR0b24uYmctYmx1ZS02MDAsXG5odG1sLmRhcmsgYS5iZy1ibHVlLTYwMCxcbmh0bWwuZGFyayAuaG92ZXJcXDpiZy1ibHVlLTYwMDpob3Zlcixcbmh0bWwuZGFyayAuaG92ZXJcXDpiZy1ibHVlLTcwMDpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgdmFyKC0tYnRuLXByaW1hcnktMSkgMCUsIHZhcigtLWJ0bi1wcmltYXJ5LTIpIDEwMCUpICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnRuLXByaW1hcnktMSkgIWltcG9ydGFudDtcbiAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tYnJhbmQtY3RhLXJnYiksIDAuNDUpICFpbXBvcnRhbnQ7XG59XG5cbmh0bWwuZGFyayAuaG92ZXJcXDpiZy1ibHVlLTUwOmhvdmVyLFxuaHRtbC5kYXJrIC5ob3ZlclxcOmJnLWJsdWUtMTAwOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXN1cmZhY2UtcmFpc2VkLXJnYiksIDAuOTIpICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSkgIWltcG9ydGFudDtcbn1cblxuLmFzcGVjdC12aWRlbyBpZnJhbWUge1xuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG5cbmh0bWwuZGFyayBhIHtcbiAgICBjb2xvcjogdmFyKC0tbGluay1jb2xvcik7XG59XG5cbmh0bWwuZGFyayBhOmhvdmVyLFxuaHRtbC5kYXJrIGE6Zm9jdXMge1xuICAgIGNvbG9yOiB2YXIoLS1saW5rLWhvdmVyLWNvbG9yKTtcbn1cblxuaHRtbC5kYXJrIGE6dmlzaXRlZCB7XG4gICAgY29sb3I6IHZhcigtLWxpbmstdmlzaXRlZC1jb2xvcik7XG59XG5cblxuaHRtbC5kYXJrIC5mb290ZXItY3RhOmhvdmVyLFxuaHRtbC5kYXJrIC5iZy1ibHVlLTYwMDpob3Zlcixcbmh0bWwuZGFyayAuYmctYmx1ZS03MDA6aG92ZXIge1xuICAgIGZpbHRlcjogYnJpZ2h0bmVzcygxLjA1KTtcbn1cblxuaHRtbC5kYXJrIC5jb250YWN0LWN0YSB7XG4gICAgdGV4dC1zaGFkb3c6IG5vbmU7XG59XG5cbmh0bWwuZGFyayAuZ2xhc3Mtc3VyZmFjZSAucHJvc2Ugc3Ryb25nLFxuaHRtbC5kYXJrIC5nbGFzcy1zdXJmYWNlIC5wcm9zZSBiLFxuaHRtbC5kYXJrIC5nbGFzcy1zdXJmYWNlIC5yaWNodGV4dCBzdHJvbmcsXG5odG1sLmRhcmsgLmdsYXNzLXN1cmZhY2UgLnJpY2h0ZXh0IGIge1xufVxuXG5odG1sLmRhcmsgLnByb3NlIGEsXG5odG1sLmRhcmsgLnJpY2h0ZXh0IGEsXG5odG1sLmRhcmsgYVtocmVmXj1cIm1haWx0bzpcIl0sXG5odG1sLmRhcmsgYVtocmVmXj1cInRlbDpcIl0ge1xuICAgIGNvbG9yOiB2YXIoLS1saW5rLWNvbG9yKTtcbn1cblxuaHRtbC5kYXJrIC5wcm9zZSBhOmhvdmVyLFxuaHRtbC5kYXJrIC5yaWNodGV4dCBhOmhvdmVyLFxuaHRtbC5kYXJrIGFbaHJlZl49XCJtYWlsdG86XCJdOmhvdmVyLFxuaHRtbC5kYXJrIGFbaHJlZl49XCJ0ZWw6XCJdOmhvdmVyIHtcbiAgICBjb2xvcjogdmFyKC0tbGluay1ob3Zlci1jb2xvcik7XG59XG5cbmh0bWwuZGFyayAucHJvc2UgYTp2aXNpdGVkLFxuaHRtbC5kYXJrIC5yaWNodGV4dCBhOnZpc2l0ZWQge1xuICAgIGNvbG9yOiB2YXIoLS1saW5rLXZpc2l0ZWQtY29sb3IpO1xufVxuXG5cbmh0bWwuZGFyayBpbnB1dCxcbmh0bWwuZGFyayB0ZXh0YXJlYSxcbmh0bWwuZGFyayBzZWxlY3Qge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tc3VyZmFjZS1iYXNlLXJnYiksIDAuMSk7XG4gICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWJvcmRlci1uZXV0cmFsLXJnYiksIDAuNCk7XG59XG5cbmh0bWwuZGFyayBpbnB1dDo6cGxhY2Vob2xkZXIsXG5odG1sLmRhcmsgdGV4dGFyZWE6OnBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7XG59XG5cbmh0bWwuZGFyayAjc2VydmljZXNEcm9wZG93bk1lbnUge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNTEsIDY1LCA4NSwgMC45MikgIWltcG9ydGFudDtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpICFpbXBvcnRhbnQ7XG59XG5cbmh0bWwuZGFyayAjc2VydmljZXNEcm9wZG93bk1lbnUgYSB7XG59XG5cbmh0bWwuZGFyayAjc2VydmljZXNEcm9wZG93bk1lbnUgYTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzMCwgNDEsIDU5LCAwLjg1KSAhaW1wb3J0YW50O1xufVxuXG5oMSwgLnByb3NlIGgxLFxuLmhlcm8tc2VjdGlvbiBoMSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1oZWFkaW5nLTEpICFpbXBvcnRhbnQ7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWhlYWRpbmctbGluZS10aWdodCkgIWltcG9ydGFudDtcbiAgICBmb250LXdlaWdodDogNzAwICFpbXBvcnRhbnQ7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG59XG5cbi5zZWN0aW9uLWhlYWRpbmcge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0taGVhZGluZy0yKSAhaW1wb3J0YW50O1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1oZWFkaW5nLWxpbmUtdGlnaHQpICFpbXBvcnRhbnQ7XG4gICAgZm9udC13ZWlnaHQ6IDYwMCAhaW1wb3J0YW50O1xuICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xufVxuXG5oMiwgLnByb3NlIGgyIHtcbiAgICBmb250LXNpemU6IHZhcigtLWhlYWRpbmctMikgIWltcG9ydGFudDtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0taGVhZGluZy1saW5lLXRpZ2h0KSAhaW1wb3J0YW50O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDAgIWltcG9ydGFudDtcbn1cblxuaDMsIC5wcm9zZSBoMyB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1oZWFkaW5nLTMpICFpbXBvcnRhbnQ7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWhlYWRpbmctbGluZS1zbnVnKSAhaW1wb3J0YW50O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDAgIWltcG9ydGFudDtcbn1cblxuaDQsIC5wcm9zZSBoNCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1oZWFkaW5nLTQpICFpbXBvcnRhbnQ7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWhlYWRpbmctbGluZS1zbnVnKSAhaW1wb3J0YW50O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDAgIWltcG9ydGFudDtcbn1cblxuLyogKHBydW5lZCkgUmVtb3ZlZCBsZWdhY3kgdXRpbGl0eSBvdmVycmlkZXMgYW5kIEJvb3RzdHJhcC1lcmEgc2lkZWJhciB0d2Vha3MgKi9cblxuYXNpZGUgLmJnLXdoaXRlLnJvdW5kZWQteGwuc2hhZG93LXNvZnQucC0zLnB0LTEuYm9yZGVyLmJvcmRlci1ncmF5LTEwMC5tdC00OmZpcnN0LWNoaWxkIHtcbiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7XG59XG5cbi8qIEVuc3VyZSBwcm9wZXIgc3BhY2luZyBmb3IgU2ltaWxhciBQb3N0cyAqL1xuLm10LTgge1xuICAgIG1hcmdpbi10b3A6IDJyZW0gIWltcG9ydGFudDtcbn1cblxuLm1iLTE2IHtcbiAgICBtYXJnaW4tYm90dG9tOiA0cmVtICFpbXBvcnRhbnQ7XG59XG5cbi8qIEVuc3VyZSBTaW1pbGFyIFBvc3RzIGNhcmQgaGFzIHByb3BlciBzcGFjaW5nICovXG4uYmctYmx1ZS02MDAucm91bmRlZC14bC5zaGFkb3ctc29mdC5ib3JkZXIuYm9yZGVyLWJsdWUtNzAwLm92ZXJmbG93LWhpZGRlbiB7XG4gICAgbWFyZ2luLXRvcDogMnJlbSAhaW1wb3J0YW50O1xuICAgIG1hcmdpbi1ib3R0b206IDRyZW0gIWltcG9ydGFudDtcbn1cblxuLyogQ09NUFJFSEVOU0lWRSBMSU5LIFVOREVSTElORSBSRU1PVkFMICovXG5hLFxuYTpob3ZlcixcbmE6Zm9jdXMsXG5hOnZpc2l0ZWQge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgRmFsbGJhY2tzIGZvciBUYWlsd2luZCBBcmJpdHJhcnkgVXRpbGl0aWVzXG4gICBUaGVzZSBlbnN1cmUgY29uc2lzdGVudCByZW5kZXJpbmcgd2hlbiBUYWlsd2luZCBidWlsZFxuICAgbWlzc2VzIGJyYWNrZXQgdXRpbGl0aWVzIChyb3VuZGVkLVsuLl0sIGZyb20tWyMuLl0sIGV0Yy4pXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogQm9yZGVyIHJhZGl1cyB1dGlsaXRpZXMgKi9cbi5yb3VuZGVkLVxcWzEwcHhcXF0geyBib3JkZXItcmFkaXVzOiAxMHB4ICFpbXBvcnRhbnQ7IH1cbi5yb3VuZGVkLVxcWzE0cHhcXF0geyBib3JkZXItcmFkaXVzOiAxNHB4ICFpbXBvcnRhbnQ7IH1cbi5yb3VuZGVkLXQtXFxbMTRweFxcXSB7XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMTRweCAhaW1wb3J0YW50O1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAxNHB4ICFpbXBvcnRhbnQ7XG59XG4ucm91bmRlZC10LVxcWzEwcHhcXF0ge1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDEwcHggIWltcG9ydGFudDtcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMTBweCAhaW1wb3J0YW50O1xufVxuLnJvdW5kZWQtdGwtXFxbMTRweFxcXSB7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDE0cHggIWltcG9ydGFudDsgfVxuXG4vKiBXaWR0aCB1dGlsaXRpZXMgKi9cbi53LVxcWzIwMHB4XFxdIHsgd2lkdGg6IDIwMHB4ICFpbXBvcnRhbnQ7IH1cblxuLyogTWF4IGhlaWdodCB1dGlsaXRpZXMgKi9cbi5tYXgtaC1cXFs0MnB4XFxdIHsgbWF4LWhlaWdodDogNDJweCAhaW1wb3J0YW50OyB9XG4ubWF4LWgtXFxbNDRweFxcXSB7IG1heC1oZWlnaHQ6IDQ0cHggIWltcG9ydGFudDsgfVxuLm1kXFw6bWF4LWgtXFxbNTJweFxcXSB7XG4gICAgbWF4LWhlaWdodDogNDJweCAhaW1wb3J0YW50O1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5tZFxcOm1heC1oLVxcWzUycHhcXF0ge1xuICAgICAgbWF4LWhlaWdodDogNTJweCAhaW1wb3J0YW50O1xuICB9XG4gIC5tZFxcOm1heC1oLVxcWzYwcHhcXF0ge1xuICAgICAgbWF4LWhlaWdodDogNjBweCAhaW1wb3J0YW50O1xuICB9XG59XG5cbi8qIEdyYWRpZW50IGNvbG9yIHN0b3BzIGZvciBiZy1ncmFkaWVudC0qIHV0aWxpdGllcyAqL1xuLmZyb20tXFxbIzViOGRlZlxcXSB7XG4gICAgLS10dy1ncmFkaWVudC1mcm9tOiByZ2IodmFyKC0tYnJhbmQtMzAwLXJnYikpIHZhcigtLXR3LWdyYWRpZW50LWZyb20tcG9zaXRpb24pO1xuICAgIC0tdHctZ3JhZGllbnQtdG86IHJnYih2YXIoLS1icmFuZC0zMDAtcmdiKSAvIDApIHZhcigtLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uKTtcbiAgICAtLXR3LWdyYWRpZW50LXN0b3BzOiB2YXIoLS10dy1ncmFkaWVudC1mcm9tKSwgdmFyKC0tdHctZ3JhZGllbnQtdG8pO1xufVxuLnRvLVxcWyM0YTdmZTBcXF0ge1xuICAgIC0tdHctZ3JhZGllbnQtdG86IHJnYih2YXIoLS1icmFuZC00MDAtcmdiKSkgdmFyKC0tdHctZ3JhZGllbnQtdG8tcG9zaXRpb24pO1xufVxuXG5odG1sLmRhcmsgLmJnLWdyYWRpZW50LXRvLWIuZnJvbS1cXFsjNWI4ZGVmXFxdLnRvLVxcWyM0YTdmZTBcXF0sXG5odG1sLmRhcmsgLmJnLWdyYWRpZW50LXRvLXIuZnJvbS1cXFsjNWI4ZGVmXFxdLnRvLVxcWyM0YTdmZTBcXF0ge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHZhcigtLWJ0bi1wcmltYXJ5LTEpIDAlLCB2YXIoLS1idG4tcHJpbWFyeS0yKSAxMDAlKSAhaW1wb3J0YW50O1xufVxuXG5odG1sLmRhcmsgLmZyb20tXFxbIzViOGRlZlxcXSB7XG4gICAgLS10dy1ncmFkaWVudC1mcm9tOiB2YXIoLS1idG4tcHJpbWFyeS0xKSB2YXIoLS10dy1ncmFkaWVudC1mcm9tLXBvc2l0aW9uKSAhaW1wb3J0YW50O1xuICAgIC0tdHctZ3JhZGllbnQtdG86IHJnYig1MSA2NSA4NSAvIDApIHZhcigtLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uKSAhaW1wb3J0YW50O1xuICAgIC0tdHctZ3JhZGllbnQtc3RvcHM6IHZhcigtLXR3LWdyYWRpZW50LWZyb20pLCB2YXIoLS10dy1ncmFkaWVudC10bykgIWltcG9ydGFudDtcbn1cblxuaHRtbC5kYXJrIC50by1cXFsjNGE3ZmUwXFxdIHtcbiAgICAtLXR3LWdyYWRpZW50LXRvOiB2YXIoLS1idG4tcHJpbWFyeS0yKSB2YXIoLS10dy1ncmFkaWVudC10by1wb3NpdGlvbikgIWltcG9ydGFudDtcbn1cblxuYm9keSB7XG4gICAgbWluLWhlaWdodDogMTAwdmg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGZvbnQtZmFtaWx5OiB1aS1zYW5zLXNlcmlmLCBzeXN0ZW0tdWksIHNhbnMtc2VyaWYsIFwiQXBwbGUgQ29sb3IgRW1vamlcIiwgXCJTZWdvZSBVSSBFbW9qaVwiLCBcIlNlZ29lIFVJIFN5bWJvbFwiLCBcIk5vdG8gQ29sb3IgRW1vamlcIjtcbn1cblxuaDEsIGgyLCBoMywgaDQsIGg1LCBoNiB7XG4gICAgZm9udC1mYW1pbHk6IHVpLXNhbnMtc2VyaWYsIHN5c3RlbS11aSwgc2Fucy1zZXJpZiwgXCJBcHBsZSBDb2xvciBFbW9qaVwiLCBcIlNlZ29lIFVJIEVtb2ppXCIsIFwiU2Vnb2UgVUkgU3ltYm9sXCIsIFwiTm90byBDb2xvciBFbW9qaVwiO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7IC8qIE1haW50YWluIGhlYXZpZXIgd2VpZ2h0IGZvciBzeXN0ZW0gc3RhY2sgaGVhZGluZ3MgKi9cbn1cblxuLyogQWJvdXQgcGFnZTogbWFrZSBuYW1lcyB1bmRlciBwaWN0dXJlcyBsYXJnZXIgKi9cbiNhYm91dC1iaW9zIGgzIHsgZm9udC1zaXplOiBjbGFtcCgxLjVyZW0sIDIuNXZ3LCAxLjc1cmVtKTsgfVxuI2Fib3V0LWJpb3MgLnByb3NlIGgyIHsgZm9udC1zaXplOiBjbGFtcCgxLjZyZW0sIDIuNnZ3LCAxLjlyZW0pOyB9XG4jYWJvdXQtYmlvcyAucHJvc2UgaDMgeyBmb250LXNpemU6IGNsYW1wKDEuNHJlbSwgMi40dncsIDEuN3JlbSk7IH1cbiNhYm91dC1iaW9zIC5wcm9zZSBzdHJvbmc6Zmlyc3QtY2hpbGQgeyBmb250LXNpemU6IGNsYW1wKDEuNHJlbSwgMi40dncsIDEuN3JlbSk7IH1cblxuLyogSGlkZSBpbWFnZXMgaW5zaWRlIGJsb2NrcyBleHBsaWNpdGx5IG1hcmtlZCB0byBzdXBwcmVzcyBpbWFnZXMgKi9cbi5uby1pbWFnZXMgaW1nIHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XG5cbi8qIEVuc3VyZSBmaXJzdCBzaWRlYmFyIGNhcmQgaXMgZmx1c2ggd2l0aCB0b3AgKi9cbmFzaWRlIC5iZy13aGl0ZS5yb3VuZGVkLXhsLnNoYWRvdy1zb2Z0LmJvcmRlci5ib3JkZXItZ3JheS0xMDAubXQtNDpmaXJzdC1jaGlsZCB7IG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsgfVxuXG4uY29udGVudCB7XG4gICAgZmxleDogMTtcbn1cblxuLm5hdmJhci1icmFuZCBpbWcge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2U7XG59XG5cbi5uYXZiYXItYnJhbmQ6aG92ZXIgaW1nIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpO1xufVxuXG4ubmF2LWxpbmsge1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgMC4zcyBlYXNlO1xufVxuXG4ubmF2LWxpbms6aG92ZXIge1xuICAgIGNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yKTtcbn1cblxuLyogKHBydW5lZCkgUmVtb3ZlZCBsZWdhY3kgaGVhZGVyIHNlYXJjaCBidXR0b24gb3ZlcnJpZGVzICovXG5cbi8qIEZvb3RlciBTdHlsZXMgKi9cbi5zaXRlLWZvb3RlciB7XG4gICAgYm94LXNoYWRvdzogMCAtMnB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG59XG5cbi5zaXRlLWZvb3RlciBoNSB7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XG59XG5cbi5zaXRlLWZvb3RlciB1bCBsaSBhIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgMC4zcyBlYXNlO1xufVxuXG4uc2l0ZS1mb290ZXIgdWwgbGkgYTpob3ZlciB7XG4gICAgY29sb3I6IHZhcigtLWJvcmRlci1tdXRlZCkgIWltcG9ydGFudDtcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cblxuLnNvY2lhbC1pY29ucyBhIHtcbiAgICBmb250LXNpemU6IDEuMnJlbTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlO1xufVxuXG4uc29jaWFsLWljb25zIGE6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtM3B4KTtcbn1cblxuLyogKHBydW5lZCkgUmVtb3ZlZCBnZW5lcmljIC5idG4gaG92ZXIgc3R5bGVzICovXG5cbi8qIFBvc3Qgc3R5bGVzICovXG4ucG9zdC10aXRsZSB7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xufVxuXG4ucG9zdC1tZXRhIHtcbiAgICBjb2xvcjogdmFyKC0tc2Vjb25kYXJ5LWNvbG9yKTtcbiAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XG59XG5cbi5wb3N0LWNvbnRlbnQge1xuICAgIGxpbmUtaGVpZ2h0OiAxLjg7XG59XG5cbi5wb3N0LWNvbnRlbnQgaW1nIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBtYXJnaW46IDEuNXJlbSAwO1xufVxuXG4vKiBSZXNwb25zaXZlIGFkanVzdG1lbnRzICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAuc2l0ZS1mb290ZXIge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLnNvY2lhbC1pY29ucyB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbiAgICB9XG59XG5cbi8qIEN1c3RvbSBDU1MgZm9yIEhpbG8gTWVkaWEgKi9cblxuLyogQ2Fyb3VzZWwgY3VzdG9taXphdGlvbiAqL1xuLmNhcm91c2VsLWl0ZW0ge1xuICAgIGhlaWdodDogNjV2aDtcbiAgICBtaW4taGVpZ2h0OiAzMDBweDtcbiAgICBiYWNrZ3JvdW5kOiBuby1yZXBlYXQgY2VudGVyIGNlbnRlciBzY3JvbGw7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb3Zlcjtcbn1cblxuLmNhcm91c2VsLWNhcHRpb24ge1xuICAgIC8qIENhcHRpb24gbm93IHN0eWxlZCB2aWEgZ2xhc3Mtc3VyZmFjZSAqL1xuICAgIHBhZGRpbmc6IDFyZW07XG59XG5cbi5jYXJvdXNlbC1jYXB0aW9uIGgzIHsgZm9udC1zaXplOiAyLjI1cmVtOyBmb250LXdlaWdodDogNjAwOyB9XG5cbi5jYXJvdXNlbC1jYXB0aW9uIHAgeyBmb250LXdlaWdodDogNDAwOyB9XG5cbi8qIENsaWVudCBsb2dvIHN0eWxpbmcgKi9cbi5jbGllbnQtbG9nbyB7XG4gICAgb3BhY2l0eTogMC43O1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG4gICAgbWF4LWhlaWdodDogMTAwcHg7XG4gICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICBmaWx0ZXI6IGdyYXlzY2FsZSgxMDAlKTtcbn1cblxuLmNsaWVudC1sb2dvOmhvdmVyIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIGZpbHRlcjogZ3JheXNjYWxlKDAlKTtcbn1cblxuLyogQ3VzdG9tIHNlY3Rpb24gc3R5bGluZyAqL1xuLmJnLWxpZ2h0IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zdXJmYWNlLWluc2V0KSAhaW1wb3J0YW50O1xufVxuXG4vKiBIZXJvIHNlY3Rpb24gZW5oYW5jZW1lbnRzICovXG4uaGVyby1zZWN0aW9uIHtcbiAgICBwYWRkaW5nOiA1cmVtIDA7XG4gICAgLyogYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCB2YXIoLS1zdXJmYWNlLWluc2V0KSwgdmFyKC0tYm9yZGVyLXN0cm9uZykpOyAqLyAvKiBLZWVwIGJhY2tncm91bmQgdHJhbnNwYXJlbnQgYXMgcmVxdWVzdGVkICovXG59XG5cbi8qIChwcnVuZWQpIFJlbW92ZWQgQm9vdHN0cmFwIC5idG4tcHJpbWFyeSBjdXN0b21pemF0aW9ucyAqL1xuXG4uY29udGFjdC1jdGEge1xuICAgIGNvbG9yOiB2YXIoLS1jdGEtdGV4dCkgIWltcG9ydGFudDtcbiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMXB4IHJnYmEodmFyKC0tdGV4dC1kZWVwLXJnYiksIDAuMTgpO1xufVxuXG4uY29udGFjdC1jdGE6aG92ZXIsXG4uY29udGFjdC1jdGE6Zm9jdXMsXG4uY29udGFjdC1jdGE6Zm9jdXMtdmlzaWJsZSB7XG4gICAgY29sb3I6IHZhcigtLWN0YS10ZXh0LWhvdmVyKSAhaW1wb3J0YW50O1xufVxuXG4uY29udGFjdC1jdGE6dmlzaXRlZCB7XG4gICAgY29sb3I6IHZhcigtLWN0YS10ZXh0KSAhaW1wb3J0YW50O1xufVxuXG4uY3RhLW91dGxpbmUge1xuICAgIGJvcmRlci13aWR0aDogMXB4ICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZCAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1icmFuZC0zMDAtcmdiKSwgMC41NSkgIWltcG9ydGFudDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiB2YXIoLS1saW5rLWNvbG9yKSAhaW1wb3J0YW50O1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4ycyBlYXNlLCBjb2xvciAwLjJzIGVhc2UsIGJvcmRlci1jb2xvciAwLjJzIGVhc2U7XG59XG5cbi5jdGEtb3V0bGluZTpob3Zlcixcbi5jdGEtb3V0bGluZTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1icmFuZC0xMDAtcmdiKSwgMC4xOCkgIWltcG9ydGFudDtcbiAgICBjb2xvcjogdmFyKC0tbGluay1ob3Zlci1jb2xvcikgIWltcG9ydGFudDtcbiAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tYnJhbmQtMzAwLXJnYiksIDAuNzUpICFpbXBvcnRhbnQ7XG59XG5cbi5jdGEtb3V0bGluZTpmb2N1cy12aXNpYmxlIHtcbiAgICBvdXRsaW5lOiAycHggc29saWQgcmdiYSh2YXIoLS1icmFuZC0zMDAtcmdiKSwgMC43NSk7XG4gICAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbn1cblxuLmN0YS1vdXRsaW5lOnZpc2l0ZWQge1xuICAgIGNvbG9yOiB2YXIoLS1saW5rLWNvbG9yKSAhaW1wb3J0YW50O1xufVxuXG5odG1sLmRhcmsgLmN0YS1vdXRsaW5lIHtcbiAgICBib3JkZXItd2lkdGg6IDFweCAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1zdHlsZTogc29saWQgIWltcG9ydGFudDtcbiAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tYm9yZGVyLW5ldXRyYWwtcmdiKSwgMC41NSkgIWltcG9ydGFudDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LW9uLWJyYW5kKSAhaW1wb3J0YW50O1xufVxuXG5odG1sLmRhcmsgLmN0YS1vdXRsaW5lOmhvdmVyLFxuaHRtbC5kYXJrIC5jdGEtb3V0bGluZTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg3MSwgODUsIDEwNSwgMC4zNSkgIWltcG9ydGFudDtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1vbi1icmFuZCkgIWltcG9ydGFudDtcbiAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tYm9yZGVyLW5ldXRyYWwtcmdiKSwgMC43NSkgIWltcG9ydGFudDtcbn1cblxuaHRtbC5kYXJrIC5jdGEtb3V0bGluZTp2aXNpdGVkIHtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1vbi1icmFuZCkgIWltcG9ydGFudDtcbn1cblxuLyogQ2FsbCB0byBhY3Rpb24gc2VjdGlvbiBzdHlsaW5nICovXG4uY3RhLXNlY3Rpb24ge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJyYW5kLWN0YSk7XG59XG5cbi8qIEZvb3RlciBjdXN0b21pemF0aW9uICovXG4uZm9vdGVyIHtcbiAgICBwYWRkaW5nLXRvcDogM3JlbTtcbiAgICBwYWRkaW5nLWJvdHRvbTogM3JlbTtcbn1cblxuLyogUmVzcG9uc2l2ZSBhZGp1c3RtZW50cyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7XG4gICAgLmNhcm91c2VsLWl0ZW0ge1xuICAgICAgICBoZWlnaHQ6IDUwdmg7XG4gICAgfVxuXG4gICAgLmNhcm91c2VsLWNhcHRpb24gaDMge1xuICAgICAgICBmb250LXNpemU6IDEuNzVyZW07XG4gICAgfVxuXG4gICAgLmNhcm91c2VsLWNhcHRpb24gcCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBHbGFzc21vcnBoaXNtIFRoZW1lIFV0aWxpdGllc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuaHRtbFtkYXRhLXRoZW1lPVwibGlnaHRcIl0ge1xuICAgIC0tZ2xhc3MtYmc6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yMCk7XG4gICAgLS1nbGFzcy1iZy1zdHJvbmc6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40Mik7XG4gICAgLS1nbGFzcy1ib3JkZXI6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40KTtcbiAgICAtLWdsYXNzLXNoYWRvdzogMCAxMHB4IDMwcHggcmdiYSgzMSwgNDUsIDYxLCAwLjA4KTtcbiAgICAtLWdsYXNzLXNoYWRvdy1zdHJvbmc6IDAgMTZweCA0MHB4IHJnYmEoMzEsIDQ1LCA2MSwgMC4xMik7XG4gICAgLS1nbGFzcy1ibHVyOiAxMnB4O1xuICAgIC0tcmFkaXVzLXNtOiAxMHB4O1xuICAgIC0tcmFkaXVzLW1kOiAxNHB4O1xuICAgIC0tcmFkaXVzLWxnOiAxOHB4O1xuICAgIC0tcmFkaXVzLWJ0bjogMTBweDtcbiAgICAvKiBFbnN1cmUgQm9vdHN0cmFwIDUgYnV0dG9ucyBwaWNrIHVwIG91ciByb3VuZGluZyAqL1xuICAgIC0tYnMtYnRuLWJvcmRlci1yYWRpdXM6IDEwcHg7XG59XG5cbi8qIEhvbWUgY2Fyb3VzZWwgZnJhbWUgY2xlYW51cCAqL1xuI2hvbWVDYXJvdXNlbCB7IGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OyBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7IH1cbiNob21lQ2Fyb3VzZWwgaW1nIHsgYm9yZGVyOiAwICFpbXBvcnRhbnQ7IH1cbi8qIEhpZGUgb2ZmLXNjcmVlbiBzbGlkZXMgZHVyaW5nIHNsaWRlIGFuaW1hdGlvbiBhbmQgcHJldmVudCBwYWdlLXdpZGUgb3ZlcmZsb3cgKi9cbiNob21lQ2Fyb3VzZWwsXG4jaG9tZUNhcm91c2VsIC5yZWxhdGl2ZS53LWZ1bGwge1xuICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcbn1cbi8qIFJlbW92ZSBkZWZhdWx0IGhlYWRpbmcgdG9wIG1hcmdpbiBpbnNpZGUgY2FwdGlvbiB0byBiYWxhbmNlIHRvcC9ib3R0b20gcGFkZGluZyAqL1xuI2hvbWVDYXJvdXNlbCAuZ2xhc3MtY2FwdGlvbiBoMyB7IG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsgfVxuXG4vKiBJbXByb3ZlIGNhcHRpb24gY29udHJhc3Qgb24gY2Fyb3VzZWwgaW4gbGlnaHQgdGhlbWUgKi9cbiNob21lQ2Fyb3VzZWwgLmdsYXNzLWNhcHRpb24ge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC40OCkgIWltcG9ydGFudDtcbiAgICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xufVxuI2hvbWVDYXJvdXNlbCAuZ2xhc3MtY2FwdGlvbiBoMyxcbiNob21lQ2Fyb3VzZWwgLmdsYXNzLWNhcHRpb24gcCB7IGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7IH1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFBvc3QgRGV0YWlsOiBSZXNwb25zaXZlIEVtYmVkXG4gICBFbnN1cmUgZW1iZWRzIGZpbGwgdGhlIDE2Ojkgd3JhcHBlclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5wb3N0LWVtYmVkIHsgcG9zaXRpb246IHJlbGF0aXZlOyBvdmVyZmxvdzogaGlkZGVuOyBib3JkZXItcmFkaXVzOiAxNHB4OyB9XG4ucG9zdC1lbWJlZCBpZnJhbWUsIC5wb3N0LWVtYmVkIGVtYmVkLCAucG9zdC1lbWJlZCBvYmplY3QgeyBwb3NpdGlvbjogcmVsYXRpdmU7IHotaW5kZXg6IDAgIWltcG9ydGFudDsgfVxuLnBvc3QtZW1iZWQgaWZyYW1lLFxuLnBvc3QtZW1iZWQgZW1iZWQsXG4ucG9zdC1lbWJlZCBvYmplY3Qge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7IGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDtcbiAgICBib3JkZXI6IDA7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG5cbi8qIExheWVyZWQgY2Fyb3VzZWwgZm9yIG5vLWNyb3AgZm9yZWdyb3VuZCB3aXRoIGZ1bGwtd2lkdGggYmFja2dyb3VuZCAqL1xuLmNhcm91c2VsLXNsaWRlIHsgcG9zaXRpb246IHJlbGF0aXZlOyB9XG4uY2Fyb3VzZWwtbGF5ZXItYmcge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsgaW5zZXQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTtcbiAgICBvYmplY3QtZml0OiBjb3Zlcjsgb2JqZWN0LXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgZmlsdGVyOiBibHVyKDE2cHgpIGJyaWdodG5lc3MoMC45Mik7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjA4KTtcbn1cblxuLyogQ2FwdGlvbiByZXZlYWwvcGFyYWxsYXgtbGl0ZSBvbiBzbGlkZSBhY3RpdmF0aW9uICovXG5bZGF0YS1jYXJvdXNlbC1pdGVtXSAuZ2xhc3MtY2FwdGlvbiB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDE2cHgpO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAzNjBtcyBlYXNlIDIwMG1zO1xuICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XG59XG5bZGF0YS1jYXJvdXNlbC1pdGVtXTpub3QoLmhpZGRlbikgLmdsYXNzLWNhcHRpb24sXG5bZGF0YS1jYXJvdXNlbC1pdGVtXVtkYXRhLWNhcm91c2VsLWl0ZW09XCJhY3RpdmVcIl0gLmdsYXNzLWNhcHRpb24ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbn1cblxuLyogQ2Fyb3VzZWwgY29udHJvbHMgLSB0cmlhbmdsZSBhcnJvd3MgaW4gYnJhbmQgYmx1ZSAqL1xuLyogQmx1ZSBjaGV2cm9ucyAqL1xuLmNhcm91c2VsLWNoZXZyb24geyB3aWR0aDogMzZweDsgaGVpZ2h0OiAzNnB4OyBsaW5lLWhlaWdodDogMTsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9XG4uY2Fyb3VzZWwtY2hldnJvbiBzdmcgeyB3aWR0aDogMzZweDsgaGVpZ2h0OiAzNnB4OyBmaWxsOiB2YXIoLS10ZXh0LW9uLWJyYW5kKTsgfVxuLmNhcm91c2VsLWNoZXZyb246aG92ZXIgeyBmaWx0ZXI6IGJyaWdodG5lc3MoMS4xKTsgfVxuXG4vKiBDaGV2cm9uIGNvbnRhaW5lciBidXR0b25zICovXG4uY2Fyb3VzZWwtbmF2LWJ0biB7XG4gICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tdGV4dC1vbi1icmFuZCk7XG4gICAgYm9yZGVyLXJhZGl1czogMTRweDtcbiAgICBwYWRkaW5nOiA2cHggMTBweDtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IG5vbmU7XG59XG4uY2Fyb3VzZWwtbmF2LWJ0bjpob3ZlciB7IGZpbHRlcjogYnJpZ2h0bmVzcygxLjA1KTsgfVxuXG4vKiBDYXJvdXNlbCBpbmRpY2F0b3JzIGJlbG93IGltYWdlICovXG4uY2Fyb3VzZWwtaW5kaWNhdG9ycy1jdXN0b20geyBkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgZ2FwOiA4cHg7IG1hcmdpbi10b3A6IDhweDsgfVxuLmNhcm91c2VsLWluZGljYXRvcnMtY3VzdG9tIGJ1dHRvbiB7XG4gICAgd2lkdGg6IDEwcHg7XG4gICAgaGVpZ2h0OiAxMHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDk5OTlweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wcmltYXJ5LWNvbG9yKSAhaW1wb3J0YW50O1xuICAgIG9wYWNpdHk6IDAuMzU7XG4gICAgYm9yZGVyOiAwO1xufVxuLmNhcm91c2VsLWluZGljYXRvcnMtY3VzdG9tIGJ1dHRvblthcmlhLWN1cnJlbnQ9XCJ0cnVlXCJdLFxuLmNhcm91c2VsLWluZGljYXRvcnMtY3VzdG9tIGJ1dHRvbi5hY3RpdmUgeyBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7IGJhY2tncm91bmQ6IHZhcigtLWJyYW5kLWN0YS1hY3RpdmUpICFpbXBvcnRhbnQ7IH1cbmh0bWwuZGFyayAuY2Fyb3VzZWwtaW5kaWNhdG9ycy1jdXN0b20gYnV0dG9uIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNjUpICFpbXBvcnRhbnQ7XG59XG5odG1sLmRhcmsgLmNhcm91c2VsLWluZGljYXRvcnMtY3VzdG9tIGJ1dHRvblthcmlhLWN1cnJlbnQ9XCJ0cnVlXCJdLFxuaHRtbC5kYXJrIC5jYXJvdXNlbC1pbmRpY2F0b3JzLWN1c3RvbSBidXR0b24uYWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10ZXh0LW9uLWJyYW5kKSAhaW1wb3J0YW50O1xufVxuXG4vKiBGbG93Yml0ZSBjYXJvdXNlbCB0cmFuc2xhdGUgZmFsbGJhY2tzIChzYWZlZ3VhcmQgYWdhaW5zdCBwdXJnZSkgKi9cbltkYXRhLWNhcm91c2VsLWl0ZW1dIHtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm07XG4gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogNzAwbXM7XG4gICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW4tb3V0O1xufVxuXG5bZGF0YS1jYXJvdXNlbC1pdGVtXS50cmFuc2xhdGUteC0wIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG59XG5cbltkYXRhLWNhcm91c2VsLWl0ZW1dLnRyYW5zbGF0ZS14LWZ1bGwge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbn1cblxuW2RhdGEtY2Fyb3VzZWwtaXRlbV0uLXRyYW5zbGF0ZS14LWZ1bGwge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XG59XG5cbi5kZW1vLXJlZWwtZnJhbWUgaWZyYW1lIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG59XG5cbi5jYXJvdXNlbC1sYXllci1mZyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlOyBpbnNldDogMDtcbiAgICB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlO1xuICAgIG9iamVjdC1maXQ6IGNvbnRhaW47IG9iamVjdC1wb3NpdGlvbjogY2VudGVyO1xufVxuXG4vKiBSZXNwZWN0IHJlZHVjZWQgdHJhbnNwYXJlbmN5IHByZWZlcmVuY2VzICovXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC10cmFuc3BhcmVuY3k6IHJlZHVjZSkge1xuICAgIDpyb290IHtcbiAgICAgICAgLS1nbGFzcy1iZzogdmFyKC0tc3VyZmFjZS1iYXNlKTtcbiAgICAgICAgLS1nbGFzcy1iZy1zdHJvbmc6IHZhcigtLXN1cmZhY2UtYmFzZSk7XG4gICAgICAgIC0tZ2xhc3MtYmx1cjogMHB4O1xuICAgIH1cbn1cblxuLyogR2VuZXJpYyBnbGFzcyBzdXJmYWNlICovXG4uZ2xhc3Mtc3VyZmFjZSB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tZ2xhc3MtYmcpO1xuICAgIC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOiBibHVyKHZhcigtLWdsYXNzLWJsdXIpKTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIodmFyKC0tZ2xhc3MtYmx1cikpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWdsYXNzLWJvcmRlcik7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tZ2xhc3Mtc2hhZG93KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xufVxuXG4vKiBSZXNlcnZlIG5hdiBoZWlnaHQgdG8gcmVkdWNlIGxheW91dCBzaGlmdCBvbiBmaXJzdCBwYWludCAqL1xuLyogTmF2IGhlaWdodCByZXNlcnZhdGlvbiAoc21hbGxlciB0byBhdm9pZCBvdmVyc2l6ZWQgaGVhZGVyKSAqL1xuLmdsYXNzLW5hdiB7IG1pbi1oZWlnaHQ6IDU4cHg7IH1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgIC5nbGFzcy1uYXYgeyBtaW4taGVpZ2h0OiA1OHB4OyB9XG59XG5cbi8qIFN0cm9uZ2VyIFNlcnZpY2VzIGRyb3Bkb3duIHN0eWxpbmcgKGRldiBwYXJpdHkgd2l0aCBwcm9kKSAqL1xuI3NlcnZpY2VzRHJvcGRvd25NZW51IHtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50O1xuICAgIC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOiBub25lICFpbXBvcnRhbnQ7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBub25lICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS10ZXh0LWRlZXAtcmdiKSwgMC4xMikgIWltcG9ydGFudDsgLyogZ3JheS0yMDAtaXNoICovXG4gICAgYm94LXNoYWRvdzogMCA4cHggMjRweCByZ2JhKDAsIDAsIDAsIDAuMTIpICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogMTBweCAhaW1wb3J0YW50O1xufVxuXG4vKiBSZWR1Y2UgbGF5b3V0IHNoaWZ0IGZyb20gc2Nyb2xsYmFyIGFwcGVhcmFuY2UgKi9cbmh0bWwgeyBzY3JvbGxiYXItZ3V0dGVyOiBzdGFibGUgYm90aC1lZGdlczsgfVxuXG4uYnJhbmQtbGluayB7XG4gICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgICBjb2x1bW4tZ2FwOiAwLjVyZW07XG4gICAgbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDtcbn1cblxuLmJyYW5kLWxpbmsgc3BhbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBsaW5lLWhlaWdodDogMSAhaW1wb3J0YW50O1xufVxuXG4vKiBMb2NrIGJyYW5kIGxvZ28gZGltZW5zaW9ucyB0byBwcmV2ZW50IGdyb3d0aCB1bmRlciBwcmVmbGlnaHQgKi9cbi5icmFuZC1saW5rIGltZyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDE0MHB4ICFpbXBvcnRhbnQ7XG4gICAgaGVpZ2h0OiAzNXB4ICFpbXBvcnRhbnQ7XG59XG5cbi5icmFuZC1uYXYtc3BhY2VyIHtcbiAgICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50O1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gICAgLmJyYW5kLWxpbmsge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDJyZW0gIWltcG9ydGFudDtcbiAgICB9XG4gICAgLmJyYW5kLW5hdi1zcGFjZXIge1xuICAgICAgICBtYXJnaW4tbGVmdDogMnJlbSAhaW1wb3J0YW50O1xuICAgIH1cbn1cblxuLyogRm9vdGVyIC0gZ2xhc3MgKi9cbi5mb290ZXIuZ2xhc3MtZm9vdGVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1nbGFzcy1iZyk7XG4gICAgLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6IGJsdXIodmFyKC0tZ2xhc3MtYmx1cikpO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cih2YXIoLS1nbGFzcy1ibHVyKSk7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4wNik7XG4gICAgY29sb3I6IHZhcigtLXRleHQtZ2xhc3MpO1xufVxuXG4uZm9vdGVyLmdsYXNzLWZvb3RlciBhIHsgY29sb3I6IHZhcigtLXRleHQtZ2xhc3MpOyB9XG4uZm9vdGVyLmdsYXNzLWZvb3RlciBhOmhvdmVyIHsgY29sb3I6IHZhcigtLXByaW1hcnktY29sb3IpOyB9XG5cbi8qIEVuc3VyZSBsZWdhY3kgdGV4dC13aGl0ZSB1dGlsaXR5IGRvZXNuJ3QgZm9yY2Ugd2hpdGUgb24gZ2xhc3MgZm9vdGVyICovXG4uZ2xhc3MtZm9vdGVyIC50ZXh0LXdoaXRlIHsgY29sb3I6IHZhcigtLXRleHQtZ2xhc3MpICFpbXBvcnRhbnQ7IH1cblxuLyogQWRhcHQgbGlnaHQtb3V0bGluZWQgYnV0dG9ucyBpbnNpZGUgZ2xhc3MgZm9vdGVyICovXG4vKiAocHJ1bmVkKSBSZW1vdmVkIEJvb3RzdHJhcCBvdXRsaW5lIGJ1dHRvbiBvdmVycmlkZXMgaW4gZm9vdGVyICovXG5cbi8qIEZvY3VzIHZpc2liaWxpdHkgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gKi9cbmlucHV0Om5vdChbdHlwZT1cImNoZWNrYm94XCJdKTpmb2N1cy12aXNpYmxlLFxuc2VsZWN0OmZvY3VzLXZpc2libGUsXG50ZXh0YXJlYTpmb2N1cy12aXNpYmxlLFxuYnV0dG9uOmZvY3VzLXZpc2libGUsXG5hOmZvY3VzLXZpc2libGUsXG4ubmF2LWxpbms6Zm9jdXMtdmlzaWJsZSB7XG4gICAgb3V0bGluZTogMnB4IHNvbGlkIHJnYmEodmFyKC0tYnJhbmQtY3RhLXJnYiksIDAuNik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbn1cblxuLyogRm9ybXMgKi9cbi8qIChwcnVuZWQpIFJlbW92ZWQgQm9vdHN0cmFwIC5mb3JtLWNvbnRyb2wgc3R5bGluZzsgVGFpbHdpbmQgdXRpbGl0aWVzIG5vdyBhcHBsaWVkIGRpcmVjdGx5IGluIHRlbXBsYXRlcyAqL1xuXG4vKiBDS0VkaXRvciBjb250ZW50IGFuZCBpbWFnZXMgKi9cbi5jay1jb250ZW50IGltZyB7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgICBib3gtc2hhZG93OiAwIDhweCAyNHB4IHJnYmEoMCwgMCwgMCwgMC4wNik7XG59XG5cbi5jay5jay1lZGl0b3Ige1xuICAgIGJvcmRlci1yYWRpdXM6IDE4cHg7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbn1cblxuLmNrLmNrLWVkaXRvciAuY2stZWRpdG9yX19tYWluID4gLmNrLWVkaXRvcl9fZWRpdGFibGUge1xuICAgIG1pbi1oZWlnaHQ6IDIwcmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDE0cHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxNSwgMjMsIDQyLCAwLjA4KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTIpO1xuICAgIGNvbG9yOiAjMGYxNzJhO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4ycyBlYXNlLCBjb2xvciAwLjJzIGVhc2UsIGJvcmRlci1jb2xvciAwLjJzIGVhc2U7XG59XG5cbi5jay5jay1lZGl0b3IgLmNrLmNrLXRvb2xiYXIge1xuICAgIGJvcmRlci1yYWRpdXM6IDE2cHggMTZweCAwIDA7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxNSwgMjMsIDQyLCAwLjA4KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI0MSwgMjQ1LCAyNDksIDAuOSk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4ycyBlYXNlLCBib3JkZXItY29sb3IgMC4ycyBlYXNlO1xufVxuXG4uY2stZWRpdG9yLS1kYXJrIC5jay1lZGl0b3JfX2VkaXRhYmxlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDE1LCAyMywgNDIsIDAuODUpICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICNlMmU4ZjAgIWltcG9ydGFudDtcbiAgICBib3JkZXItY29sb3I6IHJnYmEoMTQ4LCAxNjMsIDE4NCwgMC4zNSkgIWltcG9ydGFudDtcbn1cblxuLmNrLWVkaXRvci0tZGFyayAuY2suY2stdG9vbGJhciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxNSwgMjMsIDQyLCAwLjkpICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDE0OCwgMTYzLCAxODQsIDAuMzUpICFpbXBvcnRhbnQ7XG59XG5cbi5jay1lZGl0b3ItLWRhcmsgLmNrLmNrLXRvb2xiYXIgLmNrLWJ1dHRvbjpub3QoLmNrLWRpc2FibGVkKTpob3Zlcixcbi5jay1lZGl0b3ItLWRhcmsgLmNrLmNrLXRvb2xiYXIgLmNrLW9uIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDk0LCAyMzQsIDIxMiwgMC4yKSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiAjZjhmYWZjICFpbXBvcnRhbnQ7XG59XG5cbi5jay1lZGl0b3ItLWRhcmsgLmNrLWVkaXRvcl9fZWRpdGFibGUgYSB7XG4gICAgY29sb3I6ICMzOGJkZjg7XG59XG5cbi8qIFV0aWxpdHkgKi9cbi5zaGFkb3ctc29mdCB7IGJveC1zaGFkb3c6IHZhcigtLWdsYXNzLXNoYWRvdykgIWltcG9ydGFudDsgfVxuLnJvdW5kZWQtbGcgeyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpICFpbXBvcnRhbnQ7IH1cbi5yb3VuZGVkLW1kIHsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKSAhaW1wb3J0YW50OyB9XG4ucm91bmRlZC1zbSB7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSkgIWltcG9ydGFudDsgfVxuXG4vKiBSZWR1Y2VkIG1vdGlvbiBwcmVmZXJlbmNlcyAqL1xuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgICAqLCAqOjpiZWZvcmUsICo6OmFmdGVyIHtcbiAgICAgICAgYW5pbWF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgIHRyYW5zaXRpb246IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgc2Nyb2xsLWJlaGF2aW9yOiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgU2VjdGlvbiBzcGFjaW5nICYgdGl0bGVzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLnNlY3Rpb24tc3BhY2luZyB7IHBhZGRpbmctdG9wOiAzcmVtOyBwYWRkaW5nLWJvdHRvbTogM3JlbTsgfVxuLnNlY3Rpb24tdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0taGVhZGluZy0yKSAhaW1wb3J0YW50O1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1oZWFkaW5nLWxpbmUtdGlnaHQpICFpbXBvcnRhbnQ7XG4gICAgZm9udC13ZWlnaHQ6IDYwMCAhaW1wb3J0YW50O1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQWJvdXQgUGFnZTogQmlvcyBncmlkIGZhbGxiYWNrXG4gICBGb3JjZSAxIGNvbHVtbiBvbiBzbWFsbCwgMiBjb2x1bW5zID49NzY4cHggdG8gYXZvaWQgVGFpbHdpbmQgYnVpbGQgZ2Fwc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbiNhYm91dC1iaW9zIHsgZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7IH1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAjYWJvdXQtYmlvcyB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjsgfVxufVxuXG4vKiBIb21lOiBQcm9kdWN0aW9uIFByb2Nlc3Mgc2VjdGlvbiBzaG91bGQga2VlcCBibHVlIGJhY2tncm91bmQgdW5kZXIgYmx1ci9zaGFkb3cgKi9cbiNwcm9jZXNzLXNlY3Rpb24ge1xuICAgIC8qIEVuc3VyZSBiYWNrZHJvcC1maWx0ZXIgb24gY2FyZHMgc2FtcGxlcyBvbmx5IGJsdWUgc2VjdGlvbiBiYWNrZHJvcCAqL1xuICAgIGlzb2xhdGlvbjogaXNvbGF0ZTtcbiAgICAvKiBFbnN1cmUgZW5vdWdoIGJsdWUgYXJlYSBiZWxvdyBjYXJkcyB0byBhdm9pZCB3aGl0ZSBibGVlZCAqL1xuICAgIHBhZGRpbmctYm90dG9tOiA2cmVtOyAvKiB+cGItMjQgKi9cbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgICNwcm9jZXNzLXNlY3Rpb24geyBwYWRkaW5nLXRvcDogNHJlbTsgcGFkZGluZy1ib3R0b206IDdyZW07IH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIE5ldyBUYWlsd2luZCBTZXJ2aWNlIENhcmRzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmdsYXNzLXN1cmZhY2Uge1xuICAgIG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbn1cblxuLyogSG9ub3IgZXhwbGljaXQgb3ZlcmZsb3ctaGlkZGVuIHV0aWxpdHkgd2hlbiBwcm92aWRlZCAqL1xuLmdsYXNzLXN1cmZhY2Uub3ZlcmZsb3ctaGlkZGVuIHsgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50OyB9XG5cbi5tZWRpY2FsLWhlcm8tdmlzdWFsIGltZyB7XG4gICAgYm9yZGVyLXJhZGl1czogMTRweCAhaW1wb3J0YW50O1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgICAubWVkaWNhbC1oZXJvLXZpc3VhbCBpbWcge1xuICAgICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAxNHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDE0cHggIWltcG9ydGFudDtcbiAgICB9XG59XG5cbi5hYm91dC1iaW8tY2FyZCAucHJvc2UgaDIsXG4uYWJvdXQtYmlvLWNhcmQgLnByb3NlIGgzLFxuLmFib3V0LWJpby1jYXJkIC5wcm9zZSBoNCB7XG4gICAgZm9udC1zaXplOiBjbGFtcCgycmVtLCAxLjc1cmVtICsgMC41dncsIDIuNzVyZW0pICFpbXBvcnRhbnQ7XG4gICAgZm9udC13ZWlnaHQ6IDcwMCAhaW1wb3J0YW50O1xuICAgIG1hcmdpbi1ib3R0b206IDAuNzVyZW0gIWltcG9ydGFudDtcbn1cblxuLmFib3V0LWJpby1jYXJkIC5wcm9zZSBwIHtcbiAgICBmb250LXNpemU6IDFyZW0gIWltcG9ydGFudDtcbiAgICBsaW5lLWhlaWdodDogMS43ICFpbXBvcnRhbnQ7XG59XG5cbi50YXhvbm9teS1iYXIge1xuICAgIGdhcDogMC43NXJlbSAhaW1wb3J0YW50O1xufVxuXG5cblxuLnRheG9ub215LXBpbGwtbGluayB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAwLjM1cmVtIDAuNzVyZW07XG4gICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tcGlsbC1saW5rLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGlsbC1saW5rLWJnKTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjAxZW07XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlLCBjb2xvciAwLjE1cyBlYXNlLCBib3JkZXItY29sb3IgMC4xNXMgZWFzZTtcbn1cblxuLnRheG9ub215LXBpbGwtbGluazpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1icmFuZC0zMDAtcmdiKSwgMC4yKTtcbiAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tYnJhbmQtNDAwLXJnYiksIDAuNSk7XG59XG5cbmh0bWwuZGFyayAudGF4b25vbXktcGlsbC1saW5rIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1waWxsLWxpbmstYm9yZGVyKSAhaW1wb3J0YW50O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBpbGwtbGluay1iZykgIWltcG9ydGFudDtcbn1cblxuaHRtbC5kYXJrIC50YXhvbm9teS1waWxsLWxpbms6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNTEsIDY1LCA4NSwgMC44NSkgIWltcG9ydGFudDtcbn1cblxuaHRtbC5kYXJrIC50YXhvbm9teS1iYXIgc3BhbiB7XG4gICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpO1xufVxuXG5odG1sLmRhcmsgLnRheG9ub215LWJhciBhIHtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1vbi1icmFuZCkgIWltcG9ydGFudDtcbn1cblxuaHRtbC5kYXJrIC50YXhvbm9teS1iYXIgYTpob3ZlciB7XG4gICAgY29sb3I6IHZhcigtLWJyYW5kLTEwMCkgIWltcG9ydGFudDtcbn1cblxuLnBvc3QtbmF2LW1pbmltYWwge1xuICAgIG1hcmdpbi10b3A6IDIuNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ucG9zdC1uYXYtbWluaW1hbCAubmF2LWxpbmstcHJldixcbi5wb3N0LW5hdi1taW5pbWFsIC5uYXYtbGluay1uZXh0IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50O1xuICAgIGdhcDogMC4zcmVtICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogMC41cmVtIDAuNzVyZW0gIWltcG9ydGFudDtcbiAgICBib3JkZXItcmFkaXVzOiAxMHB4ICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1ib3JkZXItbmV1dHJhbC1yZ2IpLCAwLjgpICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1zdXJmYWNlLXJhaXNlZC1yZ2IpLCAwLjYpICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSkgIWltcG9ydGFudDtcbiAgICBtaW4td2lkdGg6IDA7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMnMgZWFzZSwgYmFja2dyb3VuZC1jb2xvciAwLjJzIGVhc2UsIHRyYW5zZm9ybSAwLjJzIGVhc2U7XG59XG5cbi5wb3N0LW5hdi1taW5pbWFsIC5uYXYtbGluay1wcmV2OmhvdmVyLFxuLnBvc3QtbmF2LW1pbmltYWwgLm5hdi1saW5rLW5leHQ6aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1icmFuZC0zMDAtcmdiKSwgMC41KSAhaW1wb3J0YW50O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tYnJhbmQtMTAwLXJnYiksIDAuOSkgIWltcG9ydGFudDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG59XG5cbi5wb3N0LW5hdi1taW5pbWFsIC5uYXYtbGluay1uZXh0IHtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50O1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgIC5wb3N0LW5hdi1taW5pbWFsIC5uYXYtbGluay1uZXh0IHtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kICFpbXBvcnRhbnQ7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cbn1cblxuLm5hdi1saW5rLWxhYmVsIHtcbiAgICBmb250LXNpemU6IDAuN3JlbSAhaW1wb3J0YW50O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDAgIWltcG9ydGFudDtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgY29sb3I6IHJnYmEodmFyKC0tYnJhbmQtMzAwLXJnYiksIDAuOSkgIWltcG9ydGFudDtcbn1cblxuLm5hdi1saW5rLXRpdGxlIHtcbiAgICBmb250LXNpemU6IDAuOTVyZW0gIWltcG9ydGFudDtcbiAgICBmb250LXdlaWdodDogNjAwICFpbXBvcnRhbnQ7XG4gICAgbGluZS1oZWlnaHQ6IDEuMzUgIWltcG9ydGFudDtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KSAhaW1wb3J0YW50O1xufVxuXG4uZ2xhc3Mtc3VyZmFjZTpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01cHgpO1xuICAgIGJveC1zaGFkb3c6IDAgMjBweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBCbG9nIFBvc3QgVGVtcGxhdGUgRW5oYW5jZW1lbnRzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogTGluZSBjbGFtcCB1dGlsaXRpZXMgZm9yIHRleHQgdHJ1bmNhdGlvbiAqL1xuLmxpbmUtY2xhbXAtMiB7XG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xuICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmxpbmUtY2xhbXAtMyB7XG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgLXdlYmtpdC1saW5lLWNsYW1wOiAzO1xuICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLyogRW5oYW5jZWQgcHJvc2Ugc3R5bGluZyBmb3IgYmxvZyBjb250ZW50ICovXG4ucHJvc2Uge1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XG4gICAgbWF4LXdpZHRoOiBub25lO1xufVxuXG4ucHJvc2UgaDEsIC5wcm9zZSBoMiwgLnByb3NlIGgzLCAucHJvc2UgaDQsIC5wcm9zZSBoNSwgLnByb3NlIGg2IHtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1kZWVwKTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI1O1xuICAgIG1hcmdpbi10b3A6IDJyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbn1cblxuLnByb3NlIGgxOmZpcnN0LWNoaWxkLCAucHJvc2UgaDI6Zmlyc3QtY2hpbGQsIC5wcm9zZSBoMzpmaXJzdC1jaGlsZCxcbi5wcm9zZSBoNDpmaXJzdC1jaGlsZCwgLnByb3NlIGg1OmZpcnN0LWNoaWxkLCAucHJvc2UgaDY6Zmlyc3QtY2hpbGQge1xuICAgIG1hcmdpbi10b3A6IDA7XG59XG5cbi5wcm9zZSBwIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjI1cmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjc1O1xufVxuXG4ucHJvc2UgdWwsXG4ucHJvc2Ugb2wge1xuICAgIG1hcmdpbi1ib3R0b206IDEuMjVyZW07XG4gICAgcGFkZGluZy1sZWZ0OiAxLjYyNXJlbTtcbiAgICBsaXN0LXN0eWxlLXBvc2l0aW9uOiBvdXRzaWRlO1xufVxuXG4ucHJvc2UgdWwge1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogZGlzYztcbn1cblxuLnByb3NlIG9sIHtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IGRlY2ltYWw7XG59XG5cbi5wcm9zZSBsaSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xufVxuXG4vKiBLZWVwIGVtcGhhc2l6ZWQgdGV4dCBsZWdpYmxlIGFjcm9zcyB0aGVtZXMgKi9cbi5wcm9zZSBzdHJvbmcsXG4ucHJvc2UgYiB7XG4gICAgY29sb3I6IHZhcigtLXRleHQtZGVlcCk7XG59XG5cbmh0bWwuZGFyayAucHJvc2Ugc3Ryb25nLFxuaHRtbC5kYXJrIC5wcm9zZSBiIHtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTtcbn1cblxuLnByb3NlIGEge1xuICAgIGNvbG9yOiB2YXIoLS1saW5rLWNvbG9yKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiAxcHg7XG4gICAgdGV4dC11bmRlcmxpbmUtb2Zmc2V0OiAycHg7XG59XG5cbi5wcm9zZSBhOmhvdmVyIHtcbiAgICBjb2xvcjogdmFyKC0tbGluay1ob3Zlci1jb2xvcik7XG59XG5cbi5wcm9zZSBibG9ja3F1b3RlIHtcbiAgICBib3JkZXItbGVmdDogNHB4IHNvbGlkIHZhcigtLWJvcmRlci1zdWJ0bGUpO1xuICAgIHBhZGRpbmctbGVmdDogMXJlbTtcbiAgICBtYXJnaW46IDEuNXJlbSAwO1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7XG59XG5cbi5wcm9zZSBjb2RlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zdXJmYWNlLWFsdCk7XG4gICAgcGFkZGluZzogMC4xMjVyZW0gMC4yNXJlbTtcbiAgICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xuICAgIGZvbnQtc2l6ZTogMC44NzVlbTtcbiAgICBjb2xvcjogdmFyKC0tZGFuZ2VyLTYwMCk7XG59XG5cbi5wcm9zZSBwcmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN1cmZhY2UtY29kZSk7XG4gICAgY29sb3I6IHZhcigtLXN1cmZhY2UtY29kZS10ZXh0KTtcbiAgICBwYWRkaW5nOiAxcmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgIG1hcmdpbjogMS41cmVtIDA7XG59XG5cbi5wcm9zZSBwcmUgY29kZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgcGFkZGluZzogMDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbn1cblxuLyogRW5oYW5jZWQgc2hhZG93IHV0aWxpdGllcyAqL1xuLnNoYWRvdy1zb2Z0IHtcbiAgICBib3gtc2hhZG93OiAwIDRweCA2cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMSksIDAgMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4wNik7XG59XG5cbi5zaGFkb3ctbWVkaXVtIHtcbiAgICBib3gtc2hhZG93OiAwIDEwcHggMTVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4xKSwgMCA0cHggNnB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcbn1cblxuLyogU21vb3RoIHRyYW5zaXRpb25zIGZvciBpbnRlcmFjdGl2ZSBlbGVtZW50cyAqL1xuLnRyYW5zaXRpb24tYWxsIHtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBhbGw7XG4gICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMjAwbXM7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBSZXNwb25zaXZlIHZpZGVvIGVtYmVkc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5yZXNwb25zaXZlLWVtYmVkIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZy1ib3R0b206IDU2LjI1JTsgLyogMTY6OSAqL1xuICAgIGhlaWdodDogMDtcbn1cblxuLnJlc3BvbnNpdmUtZW1iZWQgaWZyYW1lLFxuLnJlc3BvbnNpdmUtZW1iZWQgb2JqZWN0LFxuLnJlc3BvbnNpdmUtZW1iZWQgZW1iZWQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG5cbi8qIFV0aWxpdHk6IGhpZGUgaW1hZ2VzIHdpdGhpbiBzcGVjaWZpYyBjb250ZW50IGJsb2NrcyAqL1xuLm5vLWltYWdlcyBpbWcgeyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH1cblxuLyogRm9yY2Ugd2hpdGUgdGV4dCBpbnNpZGUgYWNjZW50IGJsb2NrcyBldmVuIGlmIENNUyBhZGRlZCBpbmxpbmUgY29sb3JzICovXG4uYWNjZW50LWludmVydCxcbi5hY2NlbnQtaW52ZXJ0IGgxLFxuLmFjY2VudC1pbnZlcnQgaDIsXG4uYWNjZW50LWludmVydCBoMyxcbi5hY2NlbnQtaW52ZXJ0IGg0LFxuLmFjY2VudC1pbnZlcnQgaDUsXG4uYWNjZW50LWludmVydCBoNixcbi5hY2NlbnQtaW52ZXJ0IHAsXG4uYWNjZW50LWludmVydCBsaSxcbi5hY2NlbnQtaW52ZXJ0IGEsXG4uYWNjZW50LWludmVydCBzdHJvbmcsXG4uYWNjZW50LWludmVydCBlbSxcbi5hY2NlbnQtaW52ZXJ0IHNwYW4ge1xuICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50O1xufVxuLmFjY2VudC1pbnZlcnQgYSB7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9XG5cbi8qIFRpZ2h0ZW4gc3BhY2luZyBpbiBFeHBsYWluZXIgXCJXaGF0IElzXCIgYmFuZCAqL1xuI3doYXQtaXMtc2VjdGlvbiAucHJvc2UgaDMgeyBtYXJnaW4tYm90dG9tOiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cbiN3aGF0LWlzLXNlY3Rpb24gLnByb3NlIHA6Zmlyc3Qtb2YtdHlwZSB7IG1hcmdpbi10b3A6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuXG4vKiBGb3JjZSByb3VuZGVkIGNvcm5lcnMgb24gdGhlIEV4cGxhaW5lciBcIldoYXQgSXNcIiBncmFkaWVudCBiYW5kICovXG4jd2hhdC1pcy1zZWN0aW9uIHtcbiAgICBib3JkZXItcmFkaXVzOiAxNHB4ICFpbXBvcnRhbnQ7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLyogTm9ybWFsaXplIHRpdGxlcyBpbnNpZGUgTWVkaWNhbCBzZXJ2aWNlcy90eXBlcyByb3cgKi9cbiNtZWQtc2VydmljZXMtdHlwZXMgLnByb3NlIGgyLFxuI21lZC1zZXJ2aWNlcy10eXBlcyAucHJvc2UgaDMge1xuICAgIGZvbnQtc2l6ZTogMS41cmVtICFpbXBvcnRhbnQ7IC8qIH50ZXh0LTJ4bCAqL1xuICAgIGxpbmUtaGVpZ2h0OiAxLjMgIWltcG9ydGFudDtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudDtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEZBUSBhY2NvcmRpb24gbm9ybWFsaXplclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbiNmYXEtYWNjb3JkaW9uIGgxLFxuI2ZhcS1hY2NvcmRpb24gaDIsXG4jZmFxLWFjY29yZGlvbiBoMyxcbiNmYXEtYWNjb3JkaW9uIGg0LFxuI2ZhcS1hY2NvcmRpb24gaDUsXG4jZmFxLWFjY29yZGlvbiBoNiB7XG4gICAgZm9udC1zaXplOiAxZW0gIWltcG9ydGFudDtcbiAgICBsaW5lLWhlaWdodDogMS41ICFpbXBvcnRhbnQ7XG4gICAgbWFyZ2luOiAwIDAgMC41cmVtIDAgIWltcG9ydGFudDtcbn1cblxuI2ZhcS1hY2NvcmRpb24gcCB7IG1hcmdpbjogMC41cmVtIDA7IH1cbiNmYXEtYWNjb3JkaW9uIHVsLCAjZmFxLWFjY29yZGlvbiBvbCB7IG1hcmdpbjogMC41cmVtIDAgMC41cmVtIDFyZW07IH1cbiNmYXEtYWNjb3JkaW9uIGxpIHsgbWFyZ2luOiAwLjI1cmVtIDA7IH1cblxuLnRyYW5zaXRpb24tY29sb3JzIHtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBjb2xvciwgYmFja2dyb3VuZC1jb2xvciwgYm9yZGVyLWNvbG9yLCB0ZXh0LWRlY29yYXRpb24tY29sb3IsIGZpbGwsIHN0cm9rZTtcbiAgICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAyMDBtcztcbn1cblxuLyogUmVzcG9uc2l2ZSBpbWFnZSBoYW5kbGluZyAqL1xuLnBvc3QtYm9keSBpbWcge1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDZweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbn1cblxuLyogRW5oYW5jZWQgYnV0dG9uIHN0eWxlcyAqL1xuLmJ0bi1tb2Rlcm4ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZzogMC43NXJlbSAxLjVyZW07XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uYnRuLW1vZGVybjpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgIGJveC1zaGFkb3c6IDAgMTBweCAxNXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuXG4vKiBHbGFzcyBlZmZlY3QgdXRpbGl0aWVzICovXG4uZ2xhc3Mtc3VyZmFjZS1zdHJvbmcge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWdsYXNzLWJnLXN0cm9uZyk7XG4gICAgLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6IGJsdXIodmFyKC0tZ2xhc3MtYmx1cikpO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cih2YXIoLS1nbGFzcy1ibHVyKSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZ2xhc3MtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xufVxuXG4vKiBQYWdlIHZlcnRpY2FsIHJoeXRobSAqL1xubWFpbiA+IGRpdi53LWZ1bGwgeyBwYWRkaW5nLXRvcDogMnJlbSAhaW1wb3J0YW50OyBwYWRkaW5nLWJvdHRvbTogMnJlbSAhaW1wb3J0YW50OyB9XG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsgbWFpbiA+IGRpdi53LWZ1bGwgeyBwYWRkaW5nLXRvcDogMi41cmVtICFpbXBvcnRhbnQ7IHBhZGRpbmctYm90dG9tOiAyLjVyZW0gIWltcG9ydGFudDsgfSB9XG5cbi8qIFNpbWlsYXIgUG9zdHMgc3BhY2luZyB0d2Vha3MgKi9cbi5zaW1pbGFyLXBvc3RzLWhlYWRlciB7IHBhZGRpbmctdG9wOiAwLjc1cmVtICFpbXBvcnRhbnQ7IHBhZGRpbmctYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudDsgfVxuLnNpbWlsYXItcG9zdHMtbGlua3MgYSB7IHBhZGRpbmctdG9wOiAwLjEyNXJlbSAhaW1wb3J0YW50OyBwYWRkaW5nLWJvdHRvbTogMC4xMjVyZW0gIWltcG9ydGFudDsgfVxuLnNpbWlsYXItcG9zdHMtZ3JpZCB7IGdhcDogMC4yNXJlbSAhaW1wb3J0YW50OyB9XG5cbi8qIFNpbWlsYXIgUG9zdHMgdHlwb2dyYXBoeSBwYXJpdHkgd2l0aCBzaWRlYmFyICovXG4uc2ltaWxhci1wb3N0cy10aXRsZSB7IGZvbnQtd2VpZ2h0OiA2MDAgIWltcG9ydGFudDsgfVxuLnNpbWlsYXItcG9zdHMtbGluayB7IGZvbnQtd2VpZ2h0OiA1MDAgIWltcG9ydGFudDsgZm9udC1zaXplOiAwLjg3NXJlbSAhaW1wb3J0YW50OyBsaW5lLWhlaWdodDogMS4yNXJlbSAhaW1wb3J0YW50OyB9XG5cbi8qIFN0cm9uZ2VyIG92ZXJyaWRlOiBTZXJ2aWNlcyBtZW51IG1hdGNoZXMgZGVmYXVsdCBuYXZiYXIgbGluayBjb2xvciAqL1xuLmdsYXNzLW5hdiAjc2VydmljZXNEcm9wZG93bkJ1dHRvbixcbi5nbGFzcy1uYXYgI3NlcnZpY2VzRHJvcGRvd25CdXR0b24gKixcbiNzZXJ2aWNlc0Ryb3Bkb3duQnV0dG9uLFxuI3NlcnZpY2VzRHJvcGRvd25CdXR0b24gKiB7XG4gICAgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KSAhaW1wb3J0YW50OyAvKiB0ZXh0LWdyYXktNzAwICovXG59XG5cbi8qIEhvdmVyIHN0YXRlIHJlbWFpbnMgYmx1ZSBsaWtlIG90aGVyIGxpbmtzICovXG4uZ2xhc3MtbmF2ICNzZXJ2aWNlc0Ryb3Bkb3duQnV0dG9uOmhvdmVyLFxuI3NlcnZpY2VzRHJvcGRvd25CdXR0b246aG92ZXIge1xuICAgIGNvbG9yOiB2YXIoLS1icmFuZC02MDApOyAvKiB0ZXh0LWJsdWUtNzAwICovXG59XG5cbi8qIFNlcnZpY2VzIHN1Ym1lbnUgbGlua3MgcGFyaXR5ICovXG4jc2VydmljZXNEcm9wZG93bk1lbnUgYSB7IGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSkgIWltcG9ydGFudDsgZm9udC1zaXplOiAwLjg3NXJlbSAhaW1wb3J0YW50OyBmb250LXdlaWdodDogNTAwICFpbXBvcnRhbnQ7IH1cbiNzZXJ2aWNlc0Ryb3Bkb3duTWVudSBhOmhvdmVyIHsgY29sb3I6IHZhcigtLWJyYW5kLTYwMCk7IH1cblxuLyogRm9vdGVyIHNpemluZyBhZGp1c3RtZW50cyAqL1xuLmZvb3RlciAuY29udGFpbmVyIHsgZm9udC1zaXplOiAwLjg3NXJlbTsgfVxuLmZvb3RlciBoNSB7IGZvbnQtc2l6ZTogMXJlbTsgfVxuLmZvb3RlciAuc29jaWFsLWljb25zIGkgeyBmb250LXNpemU6IDAuOTVyZW07IH1cbi5mb290ZXIgLmZvb3Rlci1jdGEgeyBjb2xvcjogdmFyKC0tY3RhLXRleHQpICFpbXBvcnRhbnQ7IH1cbi5mb290ZXIgLmZvb3Rlci1jdGE6aG92ZXIgeyBjb2xvcjogdmFyKC0tY3RhLXRleHQtaG92ZXIpICFpbXBvcnRhbnQ7IH1cblxuLyogUHJldmVudCBob3Jpem9udGFsIHNjcm9sbGJhcnMgZHVlIHRvIGFueSB3aWRlIGNoaWxkICovXG5odG1sLCBib2R5IHsgbWF4LXdpZHRoOiAxMDAlOyBvdmVyZmxvdy14OiBoaWRkZW47IH1cblxuLyogU2lkZWJhciBjYXJkIHN5bW1ldHJpYyBwYWRkaW5nIGVuZm9yY2VtZW50ICovXG5hc2lkZSAuYmctd2hpdGUucm91bmRlZC14bC5zaGFkb3ctc29mdCB7IHBhZGRpbmctdG9wOiAwLjVyZW0gIWltcG9ydGFudDsgcGFkZGluZy1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50OyBwYWRkaW5nLWxlZnQ6IDAuNzVyZW0gIWltcG9ydGFudDsgcGFkZGluZy1yaWdodDogMC43NXJlbSAhaW1wb3J0YW50OyB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQXV0aCBQYWdlc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uYXV0aC1jb250YWluZXIge1xuICAgIG1heC13aWR0aDogNDgwcHg7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG4uYXV0aC1jb250YWluZXIgLmdsYXNzLXN1cmZhY2Uge1xuICAgIGJvcmRlci1yYWRpdXM6IDE4cHggIWltcG9ydGFudDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uYXV0aC1jb250YWluZXIgLmdsYXNzLXN1cmZhY2UgPiAucC02IHtcbiAgICBwYWRkaW5nOiAyLjVyZW0gIWltcG9ydGFudDtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDY0MHB4KSB7XG4gICAgLmF1dGgtY29udGFpbmVyIHtcbiAgICAgICAgbWF4LXdpZHRoOiBtaW4oOTIlLCA0MDBweCk7XG4gICAgfVxuXG4gICAgLmF1dGgtY29udGFpbmVyIC5nbGFzcy1zdXJmYWNlID4gLnAtNiB7XG4gICAgICAgIHBhZGRpbmc6IDJyZW0gIWltcG9ydGFudDtcbiAgICB9XG59XG5cbi8qIE1pbmltYWwgVGFpbHdpbmQgdXRpbGl0eSBmYWxsYmFja3MgcmVtb3ZlZCAocHJlZmxpZ2h0IGVuYWJsZWQpICovXG5cbi8qIFN0cm9uZyBmb290ZXIgcm93IGVuZm9yY2VtZW50IHRvIGF2b2lkIGxlZ2FjeSBDU1MgY29uZmxpY3RzICovXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgZm9vdGVyIC5mb290ZXItcm93IHtcbiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDtcbiAgICBnYXA6IDFyZW0gIWltcG9ydGFudDtcbiAgfVxuICBmb290ZXIgLmZvb3Rlci1yb3cgPiBwIHsgbWFyZ2luOiAwICFpbXBvcnRhbnQ7IH1cbn1cblxuXG4vKiBTZXJ2aWNlIHBhZ2Ugc3VidGl0bGU6IHNtYWxsZXIgKyBsaWdodGVyIGFjcm9zcyBhbGwgc2VydmljZXMgKi9cbi5zZXJ2aWNlLXN1YnRpdGxlIHtcbiAgICBmb250LXNpemU6IDAuOTVyZW0gIWltcG9ydGFudDtcbiAgICBsaW5lLWhlaWdodDogMS40ICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICM2YjcyODAgIWltcG9ydGFudDsgLyogZ3JheS01MDAgKGxpZ2h0ZXIpICovXG4gICAgZm9udC13ZWlnaHQ6IDMwMCAhaW1wb3J0YW50OyAvKiBsaWdodCAqL1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5zZXJ2aWNlLXN1YnRpdGxlIHsgZm9udC1zaXplOiAxLjA1cmVtICFpbXBvcnRhbnQ7IH1cbn1cblxuaHRtbC5kYXJrIC5zZXJ2aWNlLXN1YnRpdGxlIHtcbiAgICBjb2xvcjogIzk0YTNiOCAhaW1wb3J0YW50OyAvKiBzbGF0ZS00MDAgaW4gZGFyayBtb2RlIGZvciBzdWJ0bGVyIHRvbmUgKi9cbn1cblxuXG5cblxuXG4uY2FyZC1wYW5lbCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkyKTtcbiAgICBib3JkZXItcmFkaXVzOiAwLjc1cmVtO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjI2LCAyMzIsIDI0MCwgMC42KTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1nbGFzcy1zaGFkb3cpO1xufVxuXG4uY2FyZC1wYW5lbCAuY2FyZC1wYWQge1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1jYXJkLXB0LCAxcmVtKTtcbiAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tY2FyZC1wYiwgMXJlbSk7XG4gICAgcGFkZGluZy1sZWZ0OiB2YXIoLS1jYXJkLXB4LCAxcmVtKTtcbiAgICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1jYXJkLXB4LCAxcmVtKTtcbn1cblxuLmNhcmQtcGFuZWwgLnByb3NlIHtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xufVxuXG5odG1sLmRhcmsgLmNhcmQtcGFuZWwge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMzAsIDQxLCA1OSwgMC45MikgIWltcG9ydGFudDtcbiAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tYm9yZGVyLW5ldXRyYWwtcmdiKSwgMC40NSkgIWltcG9ydGFudDtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1vbi1icmFuZCk7XG59XG5cbmh0bWwuZGFyayAuY2FyZC1wYW5lbCAucHJvc2UsXG5odG1sLmRhcmsgLmNhcmQtcGFuZWwgLnByb3NlIHAsXG5odG1sLmRhcmsgLmNhcmQtcGFuZWwgLnByb3NlIGxpLFxuaHRtbC5kYXJrIC5jYXJkLXBhbmVsIC5wcm9zZSBoMyxcbmh0bWwuZGFyayAuY2FyZC1wYW5lbCAucHJvc2UgaDQsXG5odG1sLmRhcmsgLmNhcmQtcGFuZWwgLnByb3NlIHN0cm9uZyxcbmh0bWwuZGFyayAuY2FyZC1wYW5lbCAucHJvc2UgYiB7XG59XG5cbmh0bWwuZGFyayAuY2FyZC1wYW5lbCBhLFxuaHRtbC5kYXJrIC5jYXJkLXBhbmVsIGE6aG92ZXIge1xufVxuXG4uY2FyZC1wYW5lbCBhIHtcbiAgICBjb2xvcjogdmFyKC0tYnJhbmQtNTAwKTtcbn1cblxuLmNhcmQtcGFuZWwgYTpob3ZlciB7XG4gICAgY29sb3I6IHZhcigtLWJyYW5kLTYwMCk7XG59XG5cbmh0bWwuZGFyayAuY2FyZC1wYW5lbCBhIHtcbiAgICBjb2xvcjogdmFyKC0tYnJhbmQtMTAwKTtcbn1cblxuaHRtbC5kYXJrIC5jYXJkLXBhbmVsIGE6aG92ZXIge1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LW9uLWJyYW5kKTtcbn1cblxuaHRtbC5kYXJrIC5jYXJkLXBhbmVsIC5zcGFjZS15LTEgYSxcbmh0bWwuZGFyayAuY2FyZC1wYW5lbCAuc3BhY2UteS0xIGEgc3Bhbixcbmh0bWwuZGFyayAuY2FyZC1wYW5lbCAuc2ltaWxhci1wb3N0cy10aXRsZSxcbmh0bWwuZGFyayAuY2FyZC1wYW5lbCAuc2ltaWxhci1wb3N0cy1saW5rIHtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1vbi1icmFuZCkgIWltcG9ydGFudDtcbn1cbiJdfQ== */
