/*!**********************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].oneOf[1].use[1]!./node_modules/resolve-url-loader/index.js??ruleSet[1].rules[4].oneOf[1].use[2]!./node_modules/@solidworx/platform/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].oneOf[1].use[3]!./assets/scss/app.scss ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************/
@charset "UTF-8";
/**
 * SolidInvoice Main Application Stylesheet
 *
 * This is the main entry point for all application styles.
 * It imports Bootstrap, the design system, components, and layouts.
 */
/**
 * SolidInvoice Design System - Main Index
 *
 * Imports all design system foundation files.
 * This file should be imported early in app.scss,
 * after Bootstrap functions/variables but before components.
 */
/**
 * SolidInvoice Design System - Design Tokens
 *
 * Core design tokens defining colors, spacing, shadows, border radius,
 * and transitions. All values are exposed as CSS custom properties
 * with the `--swp-` prefix for runtime theming support.
 */
:root {
  --swp-primary: #2e963a;
  --swp-primary-rgb: 46, 150, 58;
  --swp-primary-hover: #268032;
  --swp-primary-dark: #1f6c29;
  --swp-primary-light: #e8f5e9;
  --swp-primary-lighter: #f1f9f2;
  --swp-secondary: #f0a015;
  --swp-secondary-rgb: 240, 160, 21;
  --swp-secondary-hover: #d89012;
  --swp-secondary-dark: #c8820e;
  --swp-secondary-light: #fff8e1;
  --swp-secondary-lighter: #fffcf0;
  --swp-gray-50: #f8fafc;
  --swp-gray-100: #f1f5f9;
  --swp-gray-200: #e2e8f0;
  --swp-gray-300: #cbd5e1;
  --swp-gray-400: #94a3b8;
  --swp-gray-500: #64748b;
  --swp-gray-600: #475569;
  --swp-gray-700: #334155;
  --swp-gray-800: #1e293b;
  --swp-gray-900: #0f172a;
  --swp-success: #10b981;
  --swp-success-rgb: 16, 185, 129;
  --swp-success-hover: #059669;
  --swp-success-dark: #047857;
  --swp-success-light: #d1fae5;
  --swp-success-lighter: #ecfdf5;
  --swp-danger: #ef4444;
  --swp-danger-rgb: 239, 68, 68;
  --swp-danger-hover: #dc2626;
  --swp-danger-dark: #b91c1c;
  --swp-danger-light: #fee2e2;
  --swp-danger-lighter: #fef2f2;
  --swp-warning: #f59e0b;
  --swp-warning-rgb: 245, 158, 11;
  --swp-warning-hover: #d97706;
  --swp-warning-dark: #92400e;
  --swp-warning-light: #fef3c7;
  --swp-warning-lighter: #fffbeb;
  --swp-info: #3b82f6;
  --swp-info-rgb: 59, 130, 246;
  --swp-info-hover: #2563eb;
  --swp-info-dark: #1d4ed8;
  --swp-info-light: #dbeafe;
  --swp-info-lighter: #eff6ff;
  --swp-body-bg: #f4f6f8;
  --swp-surface: #ffffff;
  --swp-surface-hover: #f8fafc;
  --swp-surface-elevated: #ffffff;
  --swp-surface-overlay: rgb(15 23 42 / 50%);
  --swp-body-color: var(--swp-text-primary);
  --swp-text-primary: #1e293b;
  --swp-text-secondary: #475569;
  --swp-text-muted: #64748b;
  --swp-text-light: #94a3b8;
  --swp-text-inverse: #ffffff;
  --swp-border: #e2e8f0;
  --swp-border-light: #f1f5f9;
  --swp-border-dark: #cbd5e1;
  --swp-link-color: var(--swp-primary);
  --swp-link-hover-color: var(--swp-primary-dark);
}

:root {
  --swp-space-0: 0;
  --swp-space-px: 1px;
  --swp-space-0-5: 0.125rem;
  --swp-space-1: 0.25rem;
  --swp-space-1-5: 0.375rem;
  --swp-space-2: 0.5rem;
  --swp-space-2-5: 0.625rem;
  --swp-space-3: 0.75rem;
  --swp-space-3-5: 0.875rem;
  --swp-space-4: 1rem;
  --swp-space-5: 1.25rem;
  --swp-space-6: 1.5rem;
  --swp-space-7: 1.75rem;
  --swp-space-8: 2rem;
  --swp-space-9: 2.25rem;
  --swp-space-10: 2.5rem;
  --swp-space-11: 2.75rem;
  --swp-space-12: 3rem;
  --swp-space-14: 3.5rem;
  --swp-space-16: 4rem;
  --swp-space-20: 5rem;
  --swp-space-24: 6rem;
}

:root {
  --swp-radius-none: 0;
  --swp-radius-sm: 0.375rem;
  --swp-radius-md: 0.5rem;
  --swp-radius-lg: 0.75rem;
  --swp-radius-xl: 1rem;
  --swp-radius-2xl: 1.5rem;
  --swp-radius-full: 9999px;
}

:root {
  --swp-shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 5%);
  --swp-shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 10%), 0 1px 2px -1px rgb(0 0 0 / 10%);
  --swp-shadow-md: 0 4px 6px -1px rgb(0 0 0 / 10%), 0 2px 4px -2px rgb(0 0 0 / 10%);
  --swp-shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 10%), 0 4px 6px -4px rgb(0 0 0 / 10%);
  --swp-shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 10%), 0 8px 10px -6px rgb(0 0 0 / 10%);
  --swp-shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 25%);
  --swp-shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / 5%);
  --swp-shadow-primary: 0 4px 14px 0 rgb(46 150 58 / 25%);
  --swp-shadow-primary-lg: 0 8px 20px 0 rgb(46 150 58 / 30%);
  --swp-shadow-danger: 0 4px 14px 0 rgb(239 68 68 / 25%);
  --swp-shadow-danger-lg: 0 8px 20px 0 rgb(239 68 68 / 30%);
  --swp-ring-primary: 0 0 0 3px rgb(46 150 58 / 15%);
  --swp-ring-danger: 0 0 0 3px rgb(239 68 68 / 15%);
  --swp-ring-offset: 0 0 0 2px var(--swp-surface);
}

:root {
  --swp-duration-fast: 150ms;
  --swp-duration-base: 200ms;
  --swp-duration-slow: 300ms;
  --swp-duration-slower: 400ms;
  --swp-ease-linear: linear;
  --swp-ease-in: cubic-bezier(0.4, 0, 1, 1);
  --swp-ease-out: cubic-bezier(0, 0, 0.2, 1);
  --swp-ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
  --swp-transition-fast: var(--swp-duration-fast) var(--swp-ease-in-out);
  --swp-transition-base: var(--swp-duration-base) var(--swp-ease-in-out);
  --swp-transition-slow: var(--swp-duration-slow) var(--swp-ease-in-out);
  --swp-transition-colors: color var(--swp-transition-fast),
                           background-color var(--swp-transition-fast),
                           border-color var(--swp-transition-fast);
  --swp-transition-shadow: box-shadow var(--swp-transition-base);
  --swp-transition-transform: transform var(--swp-transition-base);
  --swp-transition-all: all var(--swp-transition-base);
}

:root {
  --swp-z-dropdown: 1000;
  --swp-z-sticky: 1020;
  --swp-z-fixed: 1030;
  --swp-z-modal-backdrop: 1040;
  --swp-z-modal: 1050;
  --swp-z-popover: 1060;
  --swp-z-tooltip: 1070;
  --swp-z-toast: 1080;
}

:root {
  --swp-card-bg: var(--swp-surface);
  --swp-card-border: var(--swp-border-light);
  --swp-card-radius: var(--swp-radius-lg);
  --swp-card-shadow: var(--swp-shadow-sm);
  --swp-card-padding: var(--swp-space-6);
  --swp-card-header-padding: var(--swp-space-4) var(--swp-space-6);
  --swp-card-footer-padding: var(--swp-space-4) var(--swp-space-6);
  --swp-input-bg: var(--swp-surface);
  --swp-input-border: var(--swp-border);
  --swp-input-radius: var(--swp-radius-md);
  --swp-input-padding-y: var(--swp-space-2-5);
  --swp-input-padding-x: var(--swp-space-4);
  --swp-input-focus-border: var(--swp-primary);
  --swp-input-focus-ring: var(--swp-ring-primary);
  --swp-btn-radius: var(--swp-radius-md);
  --swp-btn-padding-y: var(--swp-space-2-5);
  --swp-btn-padding-x: var(--swp-space-4);
  --swp-btn-font-weight: 500;
  --swp-modal-bg: var(--swp-surface);
  --swp-modal-radius: var(--swp-radius-xl);
  --swp-modal-shadow: var(--swp-shadow-xl);
  --swp-modal-padding: var(--swp-space-6);
  --swp-table-bg: var(--swp-surface);
  --swp-table-border: var(--swp-border-light);
  --swp-table-header-bg: var(--swp-gray-50);
  --swp-table-row-hover-bg: var(--swp-gray-50);
  --swp-table-cell-padding: var(--swp-space-4) var(--swp-space-6);
  --swp-alert-radius: var(--swp-radius-md);
  --swp-alert-padding: var(--swp-space-4);
  --swp-money-currency: var(--swp-text-secondary);
  --swp-money-neutral: var(--swp-text-primary);
  --swp-money-paid: var(--swp-success-dark);
  --swp-money-overdue: var(--swp-danger-dark);
  --swp-money-total-scale: 1.125;
  --swp-money-currency-scale: 0.75em;
}

/**
 * SolidInvoice Design System - Typography
 *
 * Typography scale, font families, weights, and line heights.
 * Uses system fonts for optimal performance and native feel.
 */
:root {
  --swp-font-sans: -apple-system, blinkmacsystemfont, 'Segoe UI', roboto,
                   'Helvetica Neue', arial, 'Noto Sans', sans-serif,
                   'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',
                   'Noto Color Emoji';
  --swp-font-mono: ui-monospace, sfmono-regular, 'SF Mono', menlo, monaco,
                   consolas, 'Liberation Mono', 'Courier New', monospace;
  --swp-font-family: var(--swp-font-sans);
}

:root {
  --swp-text-xs: 0.75rem;
  --swp-text-sm: 0.8125rem;
  --swp-text-base: 0.9375rem;
  --swp-text-md: 1rem;
  --swp-text-lg: 1.125rem;
  --swp-text-xl: 1.25rem;
  --swp-text-2xl: 1.5rem;
  --swp-text-3xl: 1.875rem;
  --swp-text-4xl: 2.25rem;
  --swp-text-5xl: 3rem;
}

:root {
  --swp-leading-none: 1;
  --swp-leading-tight: 1.25;
  --swp-leading-snug: 1.375;
  --swp-leading-normal: 1.5;
  --swp-leading-relaxed: 1.625;
  --swp-leading-loose: 2;
}

:root {
  --swp-font-thin: 100;
  --swp-font-extralight: 200;
  --swp-font-light: 300;
  --swp-font-normal: 400;
  --swp-font-medium: 500;
  --swp-font-semibold: 600;
  --swp-font-bold: 700;
  --swp-font-extrabold: 800;
  --swp-font-black: 900;
}

:root {
  --swp-tracking-tighter: -0.05em;
  --swp-tracking-tight: -0.025em;
  --swp-tracking-normal: 0;
  --swp-tracking-wide: 0.025em;
  --swp-tracking-wider: 0.05em;
  --swp-tracking-widest: 0.1em;
}

.text-page-title {
  font-size: var(--swp-text-2xl);
  font-weight: var(--swp-font-semibold);
  line-height: var(--swp-leading-tight);
  color: var(--swp-text-primary);
  letter-spacing: var(--swp-tracking-tight);
}

.text-page-subtitle {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-normal);
  line-height: var(--swp-leading-normal);
  color: var(--swp-text-muted);
}

.text-card-title {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  line-height: var(--swp-leading-snug);
  color: var(--swp-text-primary);
}

.text-card-subtitle {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-normal);
  line-height: var(--swp-leading-normal);
  color: var(--swp-text-muted);
}

.text-section-title {
  font-size: var(--swp-text-md);
  font-weight: var(--swp-font-semibold);
  line-height: var(--swp-leading-snug);
  color: var(--swp-text-primary);
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
}
.text-section-title svg,
.text-section-title i {
  color: var(--swp-primary);
  opacity: 0.9;
  width: 20px;
  height: 20px;
  flex-shrink: 0;
}

.text-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  line-height: var(--swp-leading-normal);
  color: var(--swp-text-secondary);
}

.text-body {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-normal);
  line-height: var(--swp-leading-relaxed);
  color: var(--swp-body-color);
}

.text-help {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-normal);
  line-height: var(--swp-leading-normal);
  color: var(--swp-text-muted);
}

.text-mono {
  font-family: var(--swp-font-mono);
  font-size: var(--swp-text-sm);
}

.text-table-header {
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  line-height: var(--swp-leading-normal);
  color: var(--swp-text-muted);
  text-transform: uppercase;
  letter-spacing: var(--swp-tracking-wider);
}

.text-emphasis {
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}

.text-subtle {
  color: var(--swp-text-muted);
}

.text-link {
  color: var(--swp-link-color);
  text-decoration: none;
  transition: color var(--swp-transition-fast);
}
.text-link:hover {
  color: var(--swp-link-hover-color);
  text-decoration: underline;
}

.text-truncate {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

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

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

/**
 * SolidInvoice Design System - Component Index
 *
 * Custom component styles that extend Bootstrap/Tabler.
 * Only add styles here that provide functionality beyond what Bootstrap/Tabler offer.
 *
 * Note: Most component styling comes from Bootstrap 5 and Tabler.
 * This file imports only custom extensions, not replacements.
 */
/**
 * SolidInvoice - Shared Form Page Styles
 *
 * Consolidated form-page layout pattern used across TaxBundle, ClientBundle,
 * UserBundle (Profile, Invite, ChangePassword) and similar form pages.
 *
 * Template structure:
 *   .form-page > .form-page-container[--narrow|--medium|--wide] >
 *     .form-page-header > .form-page-header-content >
 *       .form-page-icon[--security] + div(.form-page-title + .form-page-subtitle)
 *     .form-page-sections > .form-page-section >
 *       .section-header > .section-icon[--security] + .section-header-text
 *         (.section-title + .section-description)
 *       .section-content > .form-grid > .form-field[.form-field-wide]
 *     .form-page-actions > .form-page-actions-inner[--medium]
 */
.form-page {
  min-height: 100%;
}

.form-page-container {
  margin: 0 auto;
  padding-bottom: var(--swp-space-24);
}
.form-page-container--narrow {
  max-width: 800px;
}
.form-page-container--medium {
  max-width: 900px;
}
.form-page-container--wide {
  max-width: 1100px;
}

.form-page-header {
  margin-bottom: var(--swp-space-8);
  padding: var(--swp-space-6) 0;
}

.form-page-header-content {
  display: flex;
  align-items: center;
  gap: var(--swp-space-4);
}

.form-page-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.15) 100%);
  border-radius: var(--swp-radius-lg);
  color: var(--swp-primary);
  flex-shrink: 0;
}
.form-page-icon--security {
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.2) 0%, rgba(var(--swp-success-rgb), 0.1) 100%);
  color: var(--swp-success);
}

.form-page-title {
  font-size: 1.75rem;
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
  margin: 0;
  letter-spacing: -0.025em;
}

.form-page-subtitle {
  font-size: var(--swp-text-base);
  color: var(--swp-text-muted);
  margin: var(--swp-space-1) 0 0 0;
}

.form-page-sections {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-6);
}

.form-page-section {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
  transition: box-shadow var(--swp-transition-base), border-color var(--swp-transition-base);
}
.form-page-section:hover {
  border-color: var(--swp-border-dark);
}
.form-page-section:focus-within {
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
}

.section-header {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-3);
  padding: var(--swp-space-5) var(--swp-space-6) var(--swp-space-4);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border);
}

.section-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.1) 100%);
  border-radius: var(--swp-radius-md);
  color: var(--swp-primary);
  flex-shrink: 0;
}
.section-icon--security {
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.15) 0%, rgba(var(--swp-success-rgb), 0.05) 100%);
  color: var(--swp-success);
}

.section-header-text {
  flex: 1;
  padding-top: var(--swp-space-1);
}

.section-title {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-1);
  line-height: 1.4;
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  flex-wrap: wrap;
}

.section-description {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  margin: 0;
  line-height: 1.5;
}

.section-content {
  padding: var(--swp-space-6);
}

.form-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--swp-space-4);
}
@media (width <= 768px) {
  .form-grid {
    grid-template-columns: 1fr;
    gap: var(--swp-space-3);
  }
}

.form-field {
  display: flex;
  flex-direction: column;
}

.form-field-wide {
  grid-column: 1/-1;
}

.form-page-actions {
  position: sticky;
  bottom: 0;
  left: 0;
  right: 0;
  background: var(--swp-surface);
  border-top: 1px solid var(--swp-border);
  padding: var(--swp-space-4) 0;
  margin-top: var(--swp-space-8);
  z-index: 10;
  box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.05);
}

.form-page-actions-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  max-width: 800px;
  margin: 0 auto;
  padding: 0 var(--swp-space-4);
}
.form-page-actions-inner--medium {
  max-width: 900px;
}

.btn-save,
.btn-save-primary {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-3) var(--swp-space-6);
  font-weight: var(--swp-font-semibold);
  box-shadow: var(--swp-shadow-primary);
}
.btn-save:hover,
.btn-save-primary:hover {
  box-shadow: var(--swp-shadow-primary-lg);
  transform: translateY(-1px);
}
.btn-save:active,
.btn-save-primary:active {
  transform: translateY(0);
}

@media (width <= 767.98px) {
  .form-page {
    padding: var(--swp-space-4);
  }
  .form-page-header {
    padding: var(--swp-space-4) 0;
    margin-bottom: var(--swp-space-6);
  }
  .form-page-header-content {
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: var(--swp-space-3);
  }
  .form-page-icon {
    width: 48px;
    height: 48px;
  }
  .form-page-title {
    font-size: 1.5rem;
  }
  .section-header {
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: var(--swp-space-4) var(--swp-space-4) var(--swp-space-3);
  }
  .section-icon {
    width: 36px;
    height: 36px;
  }
  .section-content {
    padding: var(--swp-space-4);
  }
  .form-page-actions-inner {
    gap: var(--swp-space-3);
  }
  .form-page-actions-inner .btn {
    flex: 1;
  }
}
@media print {
  .form-page-actions {
    display: none !important;
  }
  .form-page {
    padding: 0;
  }
  .form-page-container {
    max-width: none;
  }
}
/**
 * SolidInvoice - Document View Shared Styles
 *
 * Shared layout and component styles for Invoice and Quote view pages.
 * Uses generic `doc-view-*` / `doc-*` class names to avoid duplication.
 * Both invoice-view.scss and quote-view.scss use these classes directly.
 */
.doc-view-page {
  max-width: 1400px;
  margin: 0 auto;
  padding: var(--swp-space-6);
}

.doc-view-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--swp-space-4);
  padding: var(--swp-space-4) var(--swp-space-6);
  background: var(--swp-surface);
  border-radius: var(--swp-radius-lg);
  box-shadow: var(--swp-shadow-sm);
  margin-bottom: var(--swp-space-6);
}
@media (width <= 768px) {
  .doc-view-header {
    flex-direction: column;
    align-items: flex-start;
  }
}

.doc-view-header-left {
  display: flex;
  align-items: center;
  gap: var(--swp-space-4);
}

.doc-view-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, var(--swp-primary-lighter) 100%);
  border-radius: var(--swp-radius-lg);
  color: var(--swp-primary);
}

.doc-view-title-group {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
}

.doc-view-title {
  font-size: var(--swp-text-xl, 1.25rem);
  font-weight: var(--swp-font-semibold, 600);
  color: var(--swp-text-primary);
  margin: 0;
  line-height: 1.3;
}

.doc-view-meta {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  flex-wrap: wrap;
}

.doc-view-meta-item {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  font-size: var(--swp-text-sm, 0.875rem);
  color: var(--swp-text-muted);
}
.doc-view-meta-item svg {
  opacity: 0.7;
}

.doc-view-header-actions {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
}
@media (width <= 768px) {
  .doc-view-header-actions {
    width: 100%;
    justify-content: flex-end;
  }
}

.doc-view-utility-actions {
  display: flex;
  align-items: center;
  gap: var(--swp-space-1);
}

.doc-view-header .dropdown-menu {
  min-width: 200px;
  padding: var(--swp-space-2);
  border: 1px solid var(--swp-border-light);
  box-shadow: var(--swp-shadow-lg);
  border-radius: var(--swp-radius-lg);
}
.doc-view-header .dropdown-menu .dropdown-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-3);
  border-radius: var(--swp-radius-sm);
  font-size: var(--swp-text-sm, 0.875rem);
}
.doc-view-header .dropdown-menu .dropdown-item:hover {
  background: var(--swp-gray-50);
}
.doc-view-header .dropdown-menu .dropdown-item.text-danger:hover {
  background: var(--swp-danger-lighter);
}
.doc-view-header .dropdown-menu .dropdown-item svg {
  opacity: 0.7;
}
.doc-view-header .dropdown-menu .dropdown-divider {
  margin: var(--swp-space-2) 0;
  border-color: var(--swp-border-light);
}

.btn-hero {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-3) var(--swp-space-5);
  font-weight: var(--swp-font-semibold, 600);
  font-size: var(--swp-text-base, 1rem);
  box-shadow: var(--swp-shadow-primary);
  transition: all var(--swp-transition-base);
}
.btn-hero:hover {
  transform: translateY(-1px);
  box-shadow: var(--swp-shadow-primary-lg);
}
.btn-hero:active {
  transform: translateY(0);
}

.btn-hero-urgent {
  background: linear-gradient(135deg, var(--swp-danger) 0%, var(--swp-danger-hover) 100%);
  border-color: var(--swp-danger);
  box-shadow: var(--swp-shadow-danger);
}
.btn-hero-urgent:hover {
  background: linear-gradient(135deg, var(--swp-danger-hover) 0%, var(--swp-danger) 100%);
  box-shadow: var(--swp-shadow-danger-lg);
}

.doc-view-content {
  display: grid;
  grid-template-columns: 1fr 340px;
  gap: var(--swp-space-6);
}
@media (width <= 1024px) {
  .doc-view-content {
    grid-template-columns: 1fr;
  }
}

.doc-view-document {
  min-width: 0;
}

.doc-card {
  background: var(--swp-surface);
  border-radius: var(--swp-radius-lg);
  box-shadow: var(--swp-shadow-sm);
  overflow: hidden;
}

.doc-card .badge,
.doc-page-header .badge,
.doc-view-header .badge,
.doc-view-sidebar .badge {
  border-radius: var(--swp-radius-full);
  padding: 2px 10px;
  font-weight: var(--swp-font-medium, 500);
  letter-spacing: 0;
}
.doc-card .badge.bg-gray.text-gray-fg,
.doc-page-header .badge.bg-gray.text-gray-fg,
.doc-view-header .badge.bg-gray.text-gray-fg,
.doc-view-sidebar .badge.bg-gray.text-gray-fg {
  background-color: var(--swp-gray-100);
  color: var(--swp-text-secondary);
}

.doc-header-from-to {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--swp-space-8);
  padding: var(--swp-space-6);
  background: linear-gradient(180deg, var(--swp-gray-50) 0%, var(--swp-surface) 100%);
  border-bottom: 1px solid var(--swp-border-light);
}
@media (width <= 640px) {
  .doc-header-from-to {
    grid-template-columns: 1fr;
    gap: var(--swp-space-6);
  }
}

.doc-party {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}

.doc-party-label {
  font-size: var(--swp-text-xs, 0.75rem);
  font-weight: var(--swp-font-semibold, 600);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-text-muted);
}

.doc-party-name {
  font-size: var(--swp-text-lg, 1.125rem);
  font-weight: var(--swp-font-semibold, 600);
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-2) 0;
}

.doc-party-detail {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm, 0.875rem);
  color: var(--swp-text-secondary);
  line-height: 1.5;
}
.doc-party-detail svg {
  flex-shrink: 0;
  margin-top: 2px;
  opacity: 0.6;
}
.doc-party-detail .detail-label {
  font-weight: var(--swp-font-medium, 500);
  color: var(--swp-text-muted);
}
.doc-party-detail .detail-label::after {
  content: ":";
  margin-right: var(--swp-space-1);
}
.doc-party-detail .detail-value {
  color: var(--swp-text-secondary);
}
.doc-party-detail a.detail-value {
  color: var(--swp-primary);
}
.doc-party-detail a.detail-value:hover {
  color: var(--swp-primary-dark);
  text-decoration: underline;
}

.doc-items {
  padding: var(--swp-space-6);
}
@media (width <= 640px) {
  .doc-items {
    padding: var(--swp-space-4);
  }
}

.doc-items-table {
  width: 100%;
  border-collapse: collapse;
}
.doc-items-table thead th {
  padding: var(--swp-space-3) var(--swp-space-4);
  font-size: var(--swp-text-xs, 0.75rem);
  font-weight: var(--swp-font-semibold, 600);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-text-muted);
  background: var(--swp-gray-50);
  border-bottom: 2px solid var(--swp-border);
  text-align: left;
}
.doc-items-table thead th.column-price, .doc-items-table thead th.column-qty, .doc-items-table thead th.column-tax, .doc-items-table thead th.column-total {
  text-align: right;
}
@media (width <= 640px) {
  .doc-items-table thead {
    display: none;
  }
}
.doc-items-table tbody tr {
  transition: background-color var(--swp-transition-fast);
}
.doc-items-table tbody tr:hover {
  background: var(--swp-gray-50);
}
@media (width <= 640px) {
  .doc-items-table tbody tr {
    display: block;
    padding: var(--swp-space-4);
    margin-bottom: var(--swp-space-3);
    background: var(--swp-gray-50);
    border-radius: var(--swp-radius-md);
    border: 1px solid var(--swp-border-light);
  }
  .doc-items-table tbody tr:hover {
    background: var(--swp-gray-100);
  }
  .doc-items-table tbody tr:last-child {
    margin-bottom: 0;
  }
}
.doc-items-table tbody td {
  padding: var(--swp-space-4);
  font-size: var(--swp-text-sm, 0.875rem);
  color: var(--swp-text-secondary);
  border-bottom: 1px solid var(--swp-border-light);
  vertical-align: top;
}
.doc-items-table tbody td.column-description {
  color: var(--swp-text-primary);
  font-weight: var(--swp-font-medium, 500);
}
.doc-items-table tbody td.column-price, .doc-items-table tbody td.column-qty, .doc-items-table tbody td.column-tax, .doc-items-table tbody td.column-total {
  text-align: right;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.doc-items-table tbody td.column-total {
  font-weight: var(--swp-font-semibold, 600);
  color: var(--swp-text-primary);
}
@media (width <= 640px) {
  .doc-items-table tbody td {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    padding: var(--swp-space-2) 0;
    border-bottom: 1px solid var(--swp-border-light);
    text-align: right;
  }
  .doc-items-table tbody td::before {
    content: attr(data-label);
    font-size: var(--swp-text-xs, 0.75rem);
    font-weight: var(--swp-font-semibold, 600);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--swp-text-muted);
    text-align: left;
    flex-shrink: 0;
    margin-right: var(--swp-space-3);
  }
  .doc-items-table tbody td.column-description {
    flex-direction: column;
    align-items: flex-start;
    text-align: left;
    padding-bottom: var(--swp-space-3);
    margin-bottom: var(--swp-space-2);
    border-bottom: 2px solid var(--swp-border);
  }
  .doc-items-table tbody td.column-description::before {
    margin-bottom: var(--swp-space-1);
  }
  .doc-items-table tbody td.column-total {
    border-bottom: none;
    padding-bottom: 0;
  }
}
@media (width >= 641px) {
  .doc-items-table .column-description {
    width: auto;
  }
  .doc-items-table .column-price {
    width: 120px;
  }
  .doc-items-table .column-qty {
    width: 80px;
  }
  .doc-items-table .column-tax {
    width: 100px;
  }
  .doc-items-table .column-total {
    width: 120px;
  }
}

.doc-totals {
  display: flex;
  justify-content: flex-end;
  padding: var(--swp-space-6);
  padding-top: 0;
}

.doc-totals-grid {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
  min-width: 280px;
  padding: var(--swp-space-4);
  background: var(--swp-gray-50);
  border-radius: var(--swp-radius-md);
}

.totals-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--swp-space-4);
  padding: var(--swp-space-2) 0;
}
.totals-row .totals-label {
  font-size: var(--swp-text-sm, 0.875rem);
  color: var(--swp-text-secondary);
}
.totals-row .totals-value {
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-medium, 500);
  color: var(--swp-text-primary);
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.totals-row-payment .totals-value {
  color: var(--swp-success);
}

.totals-row-discount .totals-value {
  color: var(--swp-text-muted);
}

.totals-row-final {
  margin-top: var(--swp-space-2);
  padding-top: var(--swp-space-3);
  border-top: 1px solid var(--swp-border-dark);
}
.totals-row-final .totals-label {
  font-size: var(--swp-text-base, 1rem);
  font-weight: var(--swp-font-semibold, 600);
  color: var(--swp-text-primary);
}
.totals-row-final .totals-value {
  font-size: var(--swp-text-lg, 1.125rem);
  font-weight: var(--swp-font-bold, 700);
  color: var(--swp-text-primary);
  letter-spacing: -0.01em;
}

.doc-footer {
  padding: var(--swp-space-6);
  border-top: 1px solid var(--swp-border-light);
  background: var(--swp-gray-50);
}

.doc-footer-section + .doc-footer-section {
  margin-top: var(--swp-space-4);
  padding-top: var(--swp-space-4);
  border-top: 1px solid var(--swp-border-light);
}

.doc-footer-title {
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-semibold, 600);
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-2) 0;
}

.doc-footer-text {
  font-size: var(--swp-text-sm, 0.875rem);
  color: var(--swp-text-secondary);
  margin: 0;
  line-height: 1.6;
  white-space: pre-wrap;
}

.doc-view-sidebar {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}
@media (width <= 1024px) {
  .doc-view-sidebar {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  }
}

.doc-sidebar-card {
  background: var(--swp-surface);
  border-radius: var(--swp-radius-lg);
  box-shadow: var(--swp-shadow-sm);
  overflow: hidden;
}

.doc-sidebar-card-muted {
  background: var(--swp-gray-50);
}

.doc-sidebar-card-success {
  border-left: 4px solid var(--swp-success);
}

.doc-sidebar-card-highlight {
  border-left: 4px solid var(--swp-primary);
}

.doc-sidebar-card-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4);
  border-bottom: 1px solid var(--swp-border-light);
}

.doc-sidebar-card-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  background: var(--swp-primary-light);
  border-radius: var(--swp-radius-sm);
  color: var(--swp-primary);
}

.doc-sidebar-card-success .doc-sidebar-card-icon {
  background: var(--swp-success-lighter);
  color: var(--swp-success);
}

.doc-sidebar-card-title {
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-semibold, 600);
  color: var(--swp-text-primary);
  margin: 0;
}

.doc-sidebar-card-body {
  padding: var(--swp-space-4);
}

.doc-summary-grid {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
}

.summary-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--swp-space-3);
}
.summary-item .summary-label {
  font-size: var(--swp-text-sm, 0.875rem);
  color: var(--swp-text-muted);
}
.summary-item .summary-value {
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-medium, 500);
  color: var(--swp-text-primary);
  font-variant-numeric: tabular-nums;
}
.summary-item .summary-value-amount {
  font-size: var(--swp-text-base, 1rem);
  font-weight: var(--swp-font-bold, 700);
  color: var(--swp-text-primary);
  letter-spacing: -0.01em;
}
.summary-item .summary-value-balance {
  font-weight: var(--swp-font-bold, 700);
  color: var(--swp-warning);
}

.summary-item-overdue {
  padding: var(--swp-space-2);
  margin: calc(-1 * var(--swp-space-2));
  background: var(--swp-danger-lighter);
  border-radius: var(--swp-radius-sm);
}
.summary-item-overdue .summary-value {
  color: var(--swp-danger);
}

.summary-item-paid .summary-value {
  color: var(--swp-success);
}

.client-info {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
}

.client-name {
  font-size: var(--swp-text-base, 1rem);
  font-weight: var(--swp-font-semibold, 600);
  color: var(--swp-primary);
  text-decoration: none;
}
.client-name:hover {
  color: var(--swp-primary-dark);
  text-decoration: underline;
}

.client-contacts {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
}

.client-contact {
  padding: var(--swp-space-3);
  background: var(--swp-gray-50);
  border-radius: var(--swp-radius-sm);
}

.contact-name {
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-medium, 500);
  color: var(--swp-text-primary);
  margin-bottom: var(--swp-space-1);
}

.contact-email,
.contact-detail {
  display: flex;
  align-items: center;
  gap: var(--swp-space-1);
  font-size: var(--swp-text-xs, 0.75rem);
  color: var(--swp-text-muted);
}
.contact-email svg,
.contact-detail svg {
  opacity: 0.6;
}

.payments-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
}

.payment-card {
  padding: var(--swp-space-3);
  background: var(--swp-gray-50);
  border-radius: var(--swp-radius-md);
  border-left: 3px solid var(--swp-gray-300);
  transition: all var(--swp-transition-fast);
}

.payment-card-captured {
  border-left-color: var(--swp-success);
  background: var(--swp-success-lighter);
}

.payment-card-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: var(--swp-space-2);
}

.payment-amount {
  font-size: var(--swp-text-base, 1rem);
  font-weight: var(--swp-font-bold, 700);
  color: var(--swp-text-primary);
}

.payment-card-body {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
}

.payment-method,
.payment-date {
  display: flex;
  align-items: center;
  gap: var(--swp-space-1);
  font-size: var(--swp-text-xs, 0.75rem);
  color: var(--swp-text-muted);
}
.payment-method svg,
.payment-date svg {
  opacity: 0.6;
}

.payment-message {
  font-size: var(--swp-text-xs, 0.75rem);
  color: var(--swp-text-secondary);
  font-style: italic;
  margin-top: var(--swp-space-1);
}

.related-quote-link,
.related-invoice-link {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-medium, 500);
  color: var(--swp-primary);
  text-decoration: none;
}
.related-quote-link:hover,
.related-invoice-link:hover {
  color: var(--swp-primary-dark);
  text-decoration: underline;
}

.related-invoice-status {
  margin-top: var(--swp-space-2);
}

@media print {
  .doc-view-page {
    max-width: 100%;
    padding: 0;
    margin: 0;
  }
  .doc-view-content {
    display: block;
  }
  .doc-view-document {
    width: 100%;
  }
  .doc-card {
    box-shadow: none;
    border: none;
  }
  .doc-header-from-to {
    background: none;
    padding: 20px 0;
  }
  .doc-items-table thead th {
    background: var(--swp-gray-50) !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .doc-totals-grid {
    background: var(--swp-gray-50) !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .doc-footer {
    background: var(--swp-gray-50) !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .no-print {
    display: none !important;
  }
}
/**
 * External Document View - Shared Styles
 *
 * Shared styles for public-facing invoice and quote views.
 * Invoice-specific: external-invoice-view.scss
 * Quote-specific: external-quote-view.scss
 */
.ext-doc-page {
  min-height: 100vh;
  background: var(--tblr-gray-50, #f8fafc);
}

.app-branding-header {
  padding: 1.5rem 0;
  border-bottom: 2px solid var(--tblr-border-color-light, #e2e8f0);
}
.app-branding-header .app-logo img {
  max-height: 40px;
  width: auto;
  display: block;
}
.app-branding-header .app-brand-name {
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--tblr-primary, #2e963a);
  line-height: 1.2;
}
.app-branding-header .app-brand-tagline {
  font-size: 0.875rem;
  color: var(--tblr-secondary, #64748b);
  opacity: 0.8;
  line-height: 1.3;
}

.ext-doc-action-bar {
  background: var(--tblr-bg-surface, #ffffff);
  border: 1px solid var(--tblr-border-color-light, #e2e8f0);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}
.ext-doc-action-bar .card-body {
  padding: 0.75rem 1.5rem;
}
.ext-doc-action-bar .btn {
  font-weight: 500;
}

.ext-doc-company-name {
  font-size: 1.5rem;
  font-weight: 600;
  color: var(--tblr-body-color, #1e293b);
  line-height: 1.3;
}

.ext-doc-number {
  font-size: 2rem;
  font-weight: 700;
  color: var(--tblr-body-color, #1e293b);
  line-height: 1.2;
  letter-spacing: -0.02em;
}

.ext-doc-number-label {
  font-weight: 600;
  letter-spacing: 0.05em;
  opacity: 0.6;
}

.ext-doc-vat-number {
  font-size: 0.9375rem;
  opacity: 0.75;
}

.ext-doc-logo img {
  max-width: 100%;
  height: auto;
  display: block;
}

.ext-doc-metadata-card {
  border: 1px solid var(--tblr-border-color-light, #e2e8f0);
  border-radius: 0.5rem;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
  transition: box-shadow 0.2s ease;
}
.ext-doc-metadata-card:hover {
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}
.ext-doc-metadata-card .card-body {
  padding: 1.5rem;
}

.ext-doc-metadata-label {
  font-weight: 600;
  letter-spacing: 0.05em;
  margin-bottom: 0.375rem;
  opacity: 0.6;
}

.ext-doc-metadata-value {
  font-size: 1rem;
  color: var(--tblr-body-color, #1e293b);
}

.ext-doc-metadata-total {
  font-size: 1.75rem;
  font-weight: 700;
  color: var(--tblr-primary, #2e963a);
  line-height: 1.2;
}

.ext-doc-parties-section {
  margin-bottom: 2rem;
}

.ext-doc-party-label {
  font-weight: 600;
  letter-spacing: 0.05em;
  opacity: 0.6;
}

.ext-doc-party-name {
  font-size: 1.125rem;
  font-weight: 600;
  color: var(--tblr-body-color, #1e293b);
  line-height: 1.4;
}

.ext-doc-party-detail {
  color: var(--tblr-body-color, #1e293b);
  line-height: 1.6;
  margin-bottom: 0.375rem;
  font-size: 0.9375rem;
}

.ext-doc-items-table {
  margin-bottom: 2rem;
}
.ext-doc-items-table thead th {
  border-bottom: 2px solid var(--tblr-border-color, #cbd5e1);
  padding: 0.875rem 0.75rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  font-size: 0.75rem;
  opacity: 0.6;
}
.ext-doc-items-table tbody tr {
  border-bottom: 1px solid var(--tblr-border-color-light, #e2e8f0);
  transition: background-color 0.15s ease;
}
.ext-doc-items-table tbody tr:last-child {
  border-bottom: none;
}
.ext-doc-items-table tbody tr:hover {
  background-color: var(--tblr-gray-50, #f8fafc);
}
.ext-doc-items-table tbody td {
  padding: 1rem 0.75rem;
  color: var(--tblr-body-color, #1e293b);
  vertical-align: top;
}
.ext-doc-items-table .item-description {
  font-weight: 500;
  line-height: 1.5;
  color: var(--tblr-body-color, #1e293b);
}
.ext-doc-items-table .item-amount {
  font-weight: 600;
  font-feature-settings: "tnum";
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.ext-doc-totals-card {
  border: 1px solid var(--tblr-border-color-light, #e2e8f0);
  border-radius: 0.5rem;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}
.ext-doc-totals-card .card-body {
  padding: 1.5rem;
}

.ext-doc-totals-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0.625rem 0;
}
.ext-doc-totals-row:not(:last-child) {
  margin-bottom: 0.375rem;
}

.ext-doc-totals-label {
  font-size: 0.9375rem;
  color: var(--tblr-body-color, #1e293b);
  font-weight: 500;
}

.ext-doc-totals-value {
  font-weight: 600;
  color: var(--tblr-body-color, #1e293b);
  font-feature-settings: "tnum";
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.ext-doc-totals-final {
  border-top: 2px solid var(--tblr-border-color-dark, #94a3b8);
  padding-top: 1rem;
  margin-top: 0.75rem;
}
.ext-doc-totals-final .ext-doc-totals-row {
  padding: 0.5rem 0 0;
  margin-bottom: 0;
}
.ext-doc-totals-final .ext-doc-totals-label {
  font-size: 1.25rem;
  font-weight: 600;
}
.ext-doc-totals-final .ext-doc-totals-value {
  font-size: 2rem;
  font-weight: 700;
  color: var(--tblr-primary, #2e963a);
  line-height: 1;
}

.ext-doc-footer .card {
  background: var(--tblr-bg-surface, #ffffff);
  border: 1px solid var(--tblr-border-color-light, #e2e8f0);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}
.ext-doc-footer .btn-sm {
  font-weight: 500;
  padding: 0.5rem 1rem;
}
.ext-doc-footer .app-logo img {
  max-height: 24px;
  width: auto;
  display: block;
}

.badge {
  font-weight: 600;
  letter-spacing: 0.025em;
}

hr {
  border-color: var(--tblr-border-color-light, #e2e8f0);
  opacity: 1;
}

.btn:focus-visible {
  outline: 2px solid var(--tblr-primary, #2e963a);
  outline-offset: 2px;
}

.card-lg {
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  border: 1px solid var(--tblr-border-color-light, #e2e8f0);
}
.card-lg .card-body {
  padding: 2.5rem;
}

@media (width <= 991px) {
  .ext-doc-metadata-card .card-body,
  .ext-doc-totals-card .card-body {
    padding: 1.25rem;
  }
  .card-lg .card-body {
    padding: 2rem;
  }
}
@media (width <= 767px) {
  .ext-doc-number {
    font-size: 1.75rem;
  }
  .ext-doc-metadata-total {
    font-size: 1.5rem;
  }
  .ext-doc-totals-final .ext-doc-totals-value {
    font-size: 1.75rem;
  }
  .ext-doc-parties-section .col-sm-6:first-child {
    margin-bottom: 1.5rem;
  }
}
@media (width <= 576px) {
  .container-xl {
    padding-left: 1rem;
    padding-right: 1rem;
  }
  .card-lg .card-body {
    padding: 1.5rem;
  }
  .ext-doc-metadata-card .card-body,
  .ext-doc-totals-card .card-body {
    padding: 1rem;
  }
  .app-branding-header {
    padding: 1rem 0;
  }
  .app-branding-header .d-flex {
    flex-direction: column;
    text-align: center;
  }
  .app-branding-header .app-brand-name {
    font-size: 1.25rem;
  }
  .app-branding-header .app-brand-tagline {
    font-size: 0.8125rem;
  }
  .ext-doc-footer .btn-sm {
    width: 100%;
    margin-bottom: 0.5rem;
  }
  .ext-doc-footer .btn-sm:last-child {
    margin-bottom: 0;
  }
  .ext-doc-metadata-card .col-sm-4,
  .ext-doc-metadata-card .col-sm-6 {
    margin-bottom: 1rem;
  }
  .ext-doc-metadata-card .col-sm-4:last-child,
  .ext-doc-metadata-card .col-sm-6:last-child {
    margin-bottom: 0;
  }
  .ext-doc-action-bar .d-flex.justify-content-between {
    flex-direction: column;
    gap: 0.75rem;
  }
  .ext-doc-action-bar .d-flex.justify-content-between .d-flex.gap-2 {
    flex-direction: column;
    width: 100%;
    gap: 0.5rem;
  }
  .ext-doc-action-bar .d-flex.justify-content-between .d-flex.gap-2 .btn {
    width: 100%;
    justify-content: center;
  }
  .ext-doc-action-bar .d-flex.justify-content-between .btn-primary,
  .ext-doc-action-bar .d-flex.justify-content-between .btn-danger {
    width: 100%;
    justify-content: center;
  }
  .ext-doc-items-table {
    font-size: 0.875rem;
  }
  .ext-doc-items-table thead th {
    padding: 0.75rem 0.5rem;
  }
  .ext-doc-items-table tbody td {
    padding: 0.875rem 0.5rem;
  }
}
@media print {
  .no-print,
  .d-print-none {
    display: none !important;
    visibility: hidden !important;
  }
  @page {
    margin: 1cm;
  }
  html,
  body {
    background: #ffffff !important;
    height: auto !important;
    overflow: visible !important;
  }
  .ext-doc-page,
  .page-wrapper,
  .page-body {
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
    height: auto !important;
    overflow: visible !important;
    width: 100% !important;
    background: #ffffff !important;
  }
  .container-xl {
    max-width: 100% !important;
    padding: 0.5cm !important;
    margin: 0 !important;
  }
  .row {
    margin-left: 0 !important;
    margin-right: 0 !important;
  }
  .card,
  .ext-doc-metadata-card,
  .ext-doc-totals-card {
    box-shadow: none !important;
    border: 1px solid #dee2e6;
    break-inside: avoid;
    display: block !important;
    visibility: visible !important;
  }
  .card-body {
    display: block !important;
    visibility: visible !important;
    break-inside: avoid;
  }
  .card-lg .card-body {
    padding: 1.5rem;
  }
  table {
    break-inside: auto;
  }
  tr {
    break-inside: avoid;
    break-after: auto;
  }
  thead {
    display: table-header-group;
  }
  .bg-light,
  .ext-doc-metadata-card,
  .ext-doc-totals-card {
    background-color: #f8f9fa !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .bg-danger {
    background-color: #dc3545 !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .text-primary,
  .ext-doc-metadata-total,
  .ext-doc-totals-final .ext-doc-totals-value {
    color: #2e963a !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .text-danger {
    color: #dc3545 !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .text-success {
    color: #10b981 !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .ext-doc-items-table tbody tr:hover {
    background-color: transparent !important;
  }
  .ext-doc-metadata-card:hover {
    box-shadow: none !important;
  }
  hr {
    border-color: #cbd5e1 !important;
    opacity: 1 !important;
  }
}
/**
 * SolidInvoice - Shared Marketplace Styles
 *
 * Common styles shared between PaymentBundle and NotificationBundle marketplace pages.
 * Page-specific styles remain in payment-marketplace.scss and notification-marketplace.scss.
 */
.marketplace-panel {
  position: sticky;
  top: var(--swp-space-4);
  max-height: calc(100vh - var(--swp-space-16));
  overflow-y: auto;
  padding: var(--swp-space-6);
  background: var(--swp-surface);
  border-radius: var(--swp-radius-lg);
  border: 1px solid var(--swp-border-light);
  box-shadow: var(--swp-shadow-sm);
}
.marketplace-panel::-webkit-scrollbar {
  width: 6px;
}
.marketplace-panel::-webkit-scrollbar-track {
  background: var(--swp-gray-100);
  border-radius: var(--swp-radius-full);
}
.marketplace-panel::-webkit-scrollbar-thumb {
  background: var(--swp-gray-300);
  border-radius: var(--swp-radius-full);
  transition: var(--swp-transition-colors);
}
.marketplace-panel::-webkit-scrollbar-thumb:hover {
  background: var(--swp-gray-400);
}

.marketplace-header h5 {
  font-size: var(--swp-text-lg);
  font-weight: 600;
  color: var(--swp-text-primary);
  letter-spacing: -0.01em;
}
.marketplace-header p {
  line-height: 1.5;
}
.marketplace-header .input-group {
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
  border-radius: var(--swp-radius-md);
  overflow: hidden;
}
.marketplace-header .input-group .input-group-text {
  border-right: 0;
  color: var(--swp-text-muted);
  background: var(--swp-surface);
}
.marketplace-header .input-group .form-control {
  border-left: 0;
  padding-left: 0;
  background: var(--swp-surface);
}
.marketplace-header .input-group .form-control:focus {
  box-shadow: 0 0 0 3px rgba(var(--swp-primary-rgb), 0.1);
  border-color: var(--swp-primary);
}
.marketplace-header .input-group .form-control::placeholder {
  color: var(--swp-text-muted);
  opacity: 0.6;
}
.marketplace-header .input-group:has(.form-control:focus) .input-group-text {
  border-color: var(--swp-primary);
}

.delete-confirmation-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.6);
  z-index: 1060;
  animation: marketplace-fade-in 0.15s ease;
  backdrop-filter: blur(4px);
}

.delete-confirmation-modal {
  position: fixed;
  inset: 0;
  z-index: 1070;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--swp-space-4);
  animation: marketplace-fade-in 0.15s ease;
}

.delete-confirmation-container {
  background: var(--swp-surface);
  border-radius: var(--swp-radius-lg);
  box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
  width: 100%;
  max-width: 480px;
  animation: marketplace-scale-in 0.2s cubic-bezier(0.16, 1, 0.3, 1);
}

.delete-confirmation-header {
  padding: var(--swp-space-6);
  border-bottom: 1px solid var(--swp-border);
}
.delete-confirmation-header h4 {
  font-size: 1.125rem;
  font-weight: 600;
  color: var(--swp-text-primary);
}
.delete-confirmation-header .delete-icon-wrapper {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  border-radius: var(--swp-radius-md);
  background: var(--swp-danger-light);
  flex-shrink: 0;
}

.delete-confirmation-body {
  padding: var(--swp-space-6);
  color: var(--swp-text-secondary);
  line-height: 1.6;
}

.delete-confirmation-footer {
  padding: var(--swp-space-4) var(--swp-space-6);
  border-top: 1px solid var(--swp-border);
  display: flex;
  justify-content: flex-end;
  gap: var(--swp-space-3);
  background: var(--swp-gray-50);
  border-bottom-left-radius: var(--swp-radius-lg);
  border-bottom-right-radius: var(--swp-radius-lg);
}

@keyframes marketplace-fade-in {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
@keyframes marketplace-slide-up {
  from {
    opacity: 0;
    transform: translateY(20px) scale(0.98);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}
@keyframes marketplace-scale-in {
  from {
    opacity: 0;
    transform: scale(0.95);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}
.badge-sm {
  font-size: 0.625rem;
  padding: 0.125rem 0.5rem;
  font-weight: 500;
  border-radius: var(--swp-radius-sm);
}

.marketplace-search-clear {
  z-index: 10;
  right: 8px !important;
}

/**
 * Global Search - Top navigation search bar with live results dropdown
 */
.global-search {
  position: relative;
  max-width: 600px;
}
.global-search-input-wrapper {
  position: relative;
  display: flex;
  align-items: center;
}
.global-search-icon {
  position: absolute;
  left: 0.75rem;
  top: 50%;
  transform: translateY(-50%);
  color: #9aa0ac;
  pointer-events: none;
  display: flex;
  align-items: center;
  line-height: 1;
  z-index: 1;
}
.global-search-input {
  box-sizing: border-box;
  width: 100%;
  padding: 0 6.5rem 0 2.5rem;
  height: 38px;
  line-height: 38px;
  background-color: #ffffff;
  border: 1px solid #d0d3d8;
  border-radius: 6px;
  font-size: 0.875rem;
  color: #354052;
  appearance: none;
  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
.global-search-input::-webkit-search-cancel-button, .global-search-input::-webkit-search-decoration {
  appearance: none;
}
.global-search-input:focus {
  border-color: #2e963a;
  box-shadow: 0 0 0 3px rgba(46, 150, 58, 0.12);
  background-color: #ffffff;
  outline: none;
}
.global-search-input::placeholder {
  color: #9aa0ac;
}
.global-search-actions {
  position: absolute;
  right: 0.625rem;
  top: 50%;
  transform: translateY(-50%);
  display: flex;
  align-items: center;
  gap: 6px;
}
.global-search-shortcut {
  display: flex;
  gap: 3px;
  pointer-events: none;
}
.global-search-shortcut kbd {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.1rem 0.35rem;
  font-size: 0.7rem;
  font-family: var(--tblr-font-monospace);
  color: #9aa0ac;
  background-color: #f5f7fb;
  border: 1px solid #e6e7e9;
  border-radius: 3px;
  line-height: 1.4;
}

.search-help-trigger {
  background: none;
  border: 1px solid #e0e3e8;
  padding: 0;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  color: #adb5bd;
  transition: color 0.15s ease, border-color 0.15s ease;
  flex-shrink: 0;
  line-height: 1;
}
.search-help-trigger:hover {
  color: #495057;
  border-color: #9aa0ac;
}

.search-help-section-title {
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  color: #9aa0ac;
  margin-bottom: 0.75rem;
}

.search-help-op {
  font-size: 0.8rem;
  font-family: var(--tblr-font-monospace);
  background: #f5f7fb;
  padding: 0.15rem 0.5rem;
  border-radius: 4px;
  color: #354052;
}

.search-help-example {
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding: 8px 12px;
  background: #f8fafc;
  border-radius: 6px;
  border-left: 3px solid #2e963a;
}
.search-help-example code {
  font-size: 0.8rem;
  color: #1a56db;
  background: none;
  padding: 0;
  word-break: break-all;
}
.search-help-example span {
  font-size: 0.775rem;
  color: #9aa0ac;
}

#searchHelpModal .modal-body {
  padding: 0;
}

.search-dropdown {
  display: none;
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  right: 0;
  min-width: 520px;
  margin-left: -60px;
  margin-right: -60px;
  background-color: #ffffff;
  border: 1px solid #e6e7e9;
  border-radius: 8px;
  box-shadow: 0 8px 40px rgba(0, 0, 0, 0.18), 0 2px 8px rgba(0, 0, 0, 0.08);
  isolation: isolate;
  z-index: 9999;
}
.search-dropdown.is-open {
  display: block;
  animation: search-dropdown-in 0.12s ease-out;
}

@keyframes search-dropdown-in {
  from {
    opacity: 0;
    transform: translateY(-4px) scale(0.99);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}
.search-spinner {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 1.25rem;
  color: #9aa0ac;
  font-size: 0.875rem;
}

.search-results {
  max-height: 440px;
  overflow-y: auto;
  overscroll-behavior: contain;
  background-color: #ffffff;
  border-radius: 8px;
}
.search-results::-webkit-scrollbar {
  width: 4px;
}
.search-results::-webkit-scrollbar-track {
  background: transparent;
}
.search-results::-webkit-scrollbar-thumb {
  background-color: #e0e3e8;
  border-radius: 2px;
}

.search-group + .search-group {
  border-top: 1px solid #f0f2f5;
}
.search-group:last-child {
  padding-bottom: 0.25rem;
}
.search-group-label {
  padding: 0.625rem 0.875rem 0.25rem;
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  color: #9aa0ac;
}

.search-result-item.is-active .search-result-link {
  background-color: #f5f7fb;
}
.search-result-item:hover .search-result-link {
  background-color: #f5f7fb;
  text-decoration: none;
}

.search-result-link {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.5rem 0.875rem;
  color: #354052;
  text-decoration: none;
  transition: background-color 0.08s ease;
}

.search-result-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 34px;
  height: 34px;
  padding: 6px;
  border-radius: 8px;
}
.search-result-icon svg {
  display: block;
}

.search-result-body {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-width: 0;
}

.search-result-title {
  font-size: 0.875rem;
  font-weight: 500;
  color: #354052;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.search-result-subtitle {
  font-size: 0.775rem;
  color: #9aa0ac;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  margin-top: 1px;
}

.search-result-aside {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.2rem;
  flex-shrink: 0;
  margin-left: auto;
  padding-left: 0.5rem;
}

.search-result-badge {
  font-size: 0.65rem;
  font-weight: 600;
  padding: 0.15rem 0.45rem;
}

.search-result-meta {
  font-size: 0.8rem;
  font-weight: 600;
  color: #354052;
  white-space: nowrap;
}

.search-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 2.5rem 1rem;
  color: #9aa0ac;
  background-color: #ffffff;
}
.search-empty-icon {
  margin-bottom: 0.625rem;
  opacity: 0.4;
  display: flex;
}
.search-empty-text {
  margin: 0;
  font-size: 0.875rem;
  font-weight: 500;
}

.search-error {
  padding: 1.25rem;
  font-size: 0.875rem;
  color: var(--tblr-danger, #d63939);
  text-align: center;
  background-color: #ffffff;
}

.search-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 0.15rem 0.5rem;
  background-color: #e8f0fe;
  color: #1a56db;
  border-radius: 4px;
  font-size: 0.8rem;
  font-weight: 500;
  white-space: nowrap;
  flex-shrink: 0;
}
.search-chip-remove {
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
  color: inherit;
  opacity: 0.6;
  font-size: 0.9rem;
  line-height: 1;
}
.search-chip-remove:hover {
  opacity: 1;
}

.search-chips-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  padding: 0.25rem 0.5rem;
  border-bottom: 1px solid #f0f2f5;
  min-height: 0;
}
.search-chips-bar:empty {
  display: none;
}

.search-suggestions {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  min-width: 220px;
  background: #ffffff;
  border: 1px solid #e6e7e9;
  border-radius: 6px;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
  z-index: 10000;
  padding: 0.25rem 0;
  display: none;
}
.search-suggestions.is-open {
  display: block;
}
.search-suggestions-header {
  padding: 0.25rem 0.75rem 0.1rem;
  font-size: 0.65rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  color: #9aa0ac;
}
.search-suggestions-item {
  padding: 0.4rem 0.75rem;
  font-size: 0.85rem;
  cursor: pointer;
  color: #354052;
}
.search-suggestions-item:hover, .search-suggestions-item.is-active {
  background-color: #f5f7fb;
}
.search-suggestions-item code {
  font-size: 0.75rem;
  color: #6c757d;
  margin-left: 0.5rem;
}

/**
 * SolidInvoice DataGrid Component Styles
 *
 * Modern, clean data grid styling following the SolidInvoice design system.
 * Uses design tokens from _tokens.scss for consistency.
 */
.datagrid {
  position: relative;
  display: block;
}
.datagrid > .alert {
  margin-bottom: var(--swp-space-4);
}

.datagrid-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--swp-space-4);
  padding: var(--swp-space-4) var(--swp-space-6);
  border-bottom: 1px solid var(--swp-border-light);
  background: var(--swp-surface);
}

.datagrid-title {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0;
}

.datagrid-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--swp-space-4);
  padding: var(--swp-space-4) var(--swp-space-6);
  background: var(--swp-surface);
  border-bottom: 1px solid var(--swp-border-light);
}
@media (width <= 768px) {
  .datagrid-toolbar {
    flex-direction: column;
    align-items: stretch;
  }
}

.datagrid-toolbar-start {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  flex: 1;
  min-width: 0;
}

.datagrid-toolbar-end {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  flex-shrink: 0;
}

.datagrid-search {
  position: relative;
  flex: 1;
  max-width: 320px;
}
.datagrid-search .datagrid-search-icon {
  position: absolute;
  left: var(--swp-space-3);
  top: 50%;
  transform: translateY(-50%);
  color: var(--swp-text-muted);
  pointer-events: none;
  width: 18px;
  height: 18px;
}
.datagrid-search .datagrid-search-input {
  width: 100%;
  padding: var(--swp-space-2) var(--swp-space-4) var(--swp-space-2) var(--swp-space-10);
  font-size: var(--swp-text-sm);
  color: var(--swp-text-primary);
  background: var(--swp-gray-50);
  border: 1px solid transparent;
  border-radius: var(--swp-radius-md);
  transition: background-color var(--swp-transition-fast), border-color var(--swp-transition-fast), box-shadow var(--swp-transition-fast);
}
.datagrid-search .datagrid-search-input::placeholder {
  color: var(--swp-text-muted);
}
.datagrid-search .datagrid-search-input:hover {
  background: var(--swp-gray-100);
}
.datagrid-search .datagrid-search-input:focus {
  background: var(--swp-surface);
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
  outline: none;
}

.datagrid-active-filters {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  flex-wrap: wrap;
}

.datagrid-active-filter {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  padding: var(--swp-space-1) var(--swp-space-2);
  font-size: var(--swp-text-xs);
  color: var(--swp-text-primary);
  background: var(--swp-gray-100);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  cursor: pointer;
  transition: all var(--swp-transition-fast);
}
.datagrid-active-filter:hover {
  background: var(--swp-danger-lighter);
  border-color: var(--swp-danger-light);
}
.datagrid-active-filter:hover .datagrid-active-filter-remove {
  color: var(--swp-danger);
}
.datagrid-active-filter .datagrid-active-filter-key {
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-muted);
}
.datagrid-active-filter .datagrid-active-filter-key::after {
  content: ":";
  margin-right: var(--swp-space-1);
}
.datagrid-active-filter .datagrid-active-filter-value {
  max-width: 150px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.datagrid-active-filter .datagrid-active-filter-remove {
  width: 14px;
  height: 14px;
  margin-left: var(--swp-space-1);
  color: var(--swp-text-muted);
  transition: color var(--swp-transition-fast);
}

.datagrid-filter-dropdown {
  position: relative;
}

.datagrid-filter-panel {
  width: 320px;
  max-height: calc(100vh - 200px);
  padding: 0 !important;
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  box-shadow: var(--swp-shadow-lg);
  overflow: hidden;
}
.datagrid-filter-panel .dropdown-menu,
.datagrid-filter-panel .select2-container--open {
  z-index: 1060 !important;
}

.datagrid-filter-panel-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--swp-space-3) var(--swp-space-4);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border-light);
}

.datagrid-filter-panel-title {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin: 0;
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}
.datagrid-filter-panel-title svg {
  width: 16px;
  height: 16px;
  color: var(--swp-text-muted);
}

.datagrid-filter-panel-body {
  padding: var(--swp-space-4);
  max-height: calc(100vh - 350px);
  overflow-y: auto;
}

.datagrid-filter-form {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}

.datagrid-filter-field {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}
.datagrid-filter-field .form-select,
.datagrid-filter-field select {
  position: relative;
  z-index: 1;
}
.datagrid-filter-field .row {
  --bs-gutter-x: 0.5rem;
}

.datagrid-filter-label {
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.datagrid-filter-widget > div:has(> div > input[type=date]) {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--swp-space-2);
}
.datagrid-filter-widget > div:has(> div > input[type=date]) > div .form-label {
  display: block;
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-muted);
  margin-bottom: var(--swp-space-1);
}
.datagrid-filter-widget > div:has(> div > input[type=date]) > div input[type=date] {
  width: 100%;
}
.datagrid-filter-widget .form-check {
  display: flex !important;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-3);
  margin: 0;
  border-radius: var(--swp-radius-sm);
  transition: background-color var(--swp-transition-fast);
}
.datagrid-filter-widget .form-check:hover {
  background: var(--swp-gray-50);
}
.datagrid-filter-widget .form-check.form-switch {
  padding-left: var(--swp-space-3);
}
.datagrid-filter-widget .form-check .form-check-input {
  width: 16px !important;
  height: 16px !important;
  min-width: 16px;
  margin: 0 !important;
  flex-shrink: 0;
  border-radius: 3px !important;
  border: 1px solid var(--swp-border-dark);
  background-color: var(--swp-surface);
  cursor: pointer;
}
.datagrid-filter-widget .form-check .form-check-input:checked {
  background-color: var(--swp-primary);
  border-color: var(--swp-primary);
}
.datagrid-filter-widget .form-check .form-check-input:focus {
  box-shadow: var(--swp-ring-primary);
}
.datagrid-filter-widget .form-check .form-check-input[type=checkbox] {
  border-radius: 3px !important;
  background-image: none;
}
.datagrid-filter-widget .form-check .form-check-input[type=checkbox]:checked {
  background-image: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 20 20%27%3e%3cpath fill=%27none%27 stroke=%27%23fff%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%273%27 d=%27M6 10l3 3l6-6%27/%3e%3c/svg%3e");
}
.datagrid-filter-widget .form-check .form-check-label {
  display: inline-block !important;
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-normal);
  color: var(--swp-text-primary);
  cursor: pointer;
  margin-left: var(--swp-space-2);
  user-select: none;
}
.datagrid-filter-widget .form-check + .form-check {
  margin-top: var(--swp-space-1);
}

.datagrid-filter-panel-footer {
  padding-top: var(--swp-space-4);
  margin-top: var(--swp-space-2);
  border-top: 1px solid var(--swp-border-light);
}

.datagrid-filter-panel .form-control,
.datagrid-filter-panel .form-select {
  font-size: var(--swp-text-sm);
  padding: var(--swp-space-2) var(--swp-space-3);
  border-radius: var(--swp-radius-md);
  border-color: var(--swp-border);
}
.datagrid-filter-panel .form-control:focus,
.datagrid-filter-panel .form-select:focus {
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
}
.datagrid-filter-panel .datagrid-filter-field > .form-label {
  display: none;
}
.datagrid-filter-panel .datagrid-filter-field .row .form-label {
  display: block;
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-normal);
  color: var(--swp-text-muted);
  margin-bottom: var(--swp-space-1);
}
.datagrid-filter-panel .datagrid-filter-field .row > div {
  padding-left: var(--swp-space-1);
  padding-right: var(--swp-space-1);
}
.datagrid-filter-panel .datagrid-filter-field .row > div:first-child {
  padding-left: 0;
}
.datagrid-filter-panel .datagrid-filter-field .row > div:last-child {
  padding-right: 0;
}
.datagrid-filter-panel .form-check {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-1-5) var(--swp-space-2);
  margin: 0;
  border-radius: var(--swp-radius-sm);
  transition: background-color var(--swp-transition-fast);
}
.datagrid-filter-panel .form-check:hover {
  background: var(--swp-gray-50);
}
.datagrid-filter-panel .form-check .form-check-input {
  width: 16px;
  height: 16px;
  margin: 0;
  flex-shrink: 0;
}
.datagrid-filter-panel .form-check .form-check-label {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-primary);
  cursor: pointer;
}
.datagrid-filter-panel .form-check + .form-check {
  margin-top: var(--swp-space-1);
}
.datagrid-filter-panel select[multiple] {
  min-height: 120px;
  padding: var(--swp-space-1);
}
.datagrid-filter-panel select[multiple] option {
  padding: var(--swp-space-2);
  border-radius: var(--swp-radius-sm);
}
.datagrid-filter-panel select[multiple] option:checked {
  background: var(--swp-primary-lighter);
  color: var(--swp-primary-dark);
}

.datagrid-export-dropdown {
  position: relative;
}

.datagrid-export-menu {
  width: 280px;
  padding: 0 !important;
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  box-shadow: var(--swp-shadow-lg);
  overflow: hidden;
}

.datagrid-export-menu-header {
  padding: var(--swp-space-3) var(--swp-space-4);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border-light);
}

.datagrid-export-menu-title {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin: 0;
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}
.datagrid-export-menu-title svg {
  width: 16px;
  height: 16px;
  color: var(--swp-text-muted);
}

.datagrid-export-menu-subtitle {
  margin: var(--swp-space-1) 0 0;
  font-size: var(--swp-text-xs);
  color: var(--swp-text-muted);
}

.datagrid-export-menu-body {
  display: flex;
  flex-direction: column;
  padding: var(--swp-space-2);
  gap: var(--swp-space-1);
}

.datagrid-export-option {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-2) var(--swp-space-3);
  border-radius: var(--swp-radius-md);
  color: var(--swp-text-primary);
  text-decoration: none;
  transition: background-color var(--swp-transition-fast), color var(--swp-transition-fast);
  cursor: pointer;
}
.datagrid-export-option:hover, .datagrid-export-option:focus-visible {
  background: var(--swp-gray-50);
  color: var(--swp-text-primary);
  outline: none;
}

.datagrid-export-option-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  flex-shrink: 0;
  color: var(--swp-text-secondary);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-md);
}
.datagrid-export-option:hover .datagrid-export-option-icon, .datagrid-export-option:focus-visible .datagrid-export-option-icon {
  color: var(--swp-primary);
  border-color: var(--swp-primary-light);
  background: var(--swp-primary-lighter);
}

.datagrid-export-option-text {
  display: flex;
  flex-direction: column;
  min-width: 0;
}

.datagrid-export-option-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  letter-spacing: 0.02em;
}

.datagrid-export-option-hint {
  font-size: var(--swp-text-xs);
  color: var(--swp-text-muted);
}

.datagrid-column-picker .dropdown-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  padding: 0;
  color: var(--swp-text-secondary);
  background: transparent;
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  cursor: pointer;
  transition: color var(--swp-transition-fast), background-color var(--swp-transition-fast), border-color var(--swp-transition-fast);
}
.datagrid-column-picker .dropdown-toggle:hover {
  color: var(--swp-text-primary);
  background: var(--swp-gray-50);
  border-color: var(--swp-border-dark);
}
.datagrid-column-picker .dropdown-toggle::after {
  display: none;
}
.datagrid-column-picker .dropdown-menu {
  min-width: 200px;
  max-height: 320px;
  overflow-y: auto;
  padding: var(--swp-space-2);
}
.datagrid-column-picker .dropdown-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-3);
  font-size: var(--swp-text-sm);
  color: var(--swp-text-primary);
  border-radius: var(--swp-radius-sm);
  cursor: pointer;
}
.datagrid-column-picker .dropdown-item:hover {
  background: var(--swp-gray-50);
}
.datagrid-column-picker .dropdown-item input[type=checkbox] {
  width: 16px;
  height: 16px;
  accent-color: var(--swp-primary);
}

.datagrid-table-wrapper {
  overflow-x: auto;
}

.datagrid-table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--swp-text-sm);
}
.datagrid-table th,
.datagrid-table td {
  padding: var(--swp-space-3) var(--swp-space-4);
  text-align: left;
  vertical-align: middle;
  border-bottom: 1px solid var(--swp-border-light);
}
.datagrid-table th {
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  background: var(--swp-gray-50);
  white-space: nowrap;
  user-select: none;
}
.datagrid-table tbody {
  font-variant-numeric: tabular-nums;
}
.datagrid-table tbody tr {
  transition: background-color var(--swp-transition-fast);
}
.datagrid-table tbody tr:hover {
  background: var(--swp-surface-hover);
}
.datagrid-table tbody tr.selected {
  background: var(--swp-primary-lighter);
}
.datagrid-table tbody tr.selected:hover {
  background: var(--swp-primary-light);
}
.datagrid-table .col-checkbox {
  width: 40px;
  text-align: center;
}
.datagrid-table th.col-checkbox {
  text-align: center;
}
.datagrid-table .col-id {
  font-family: var(--swp-font-mono);
  font-size: var(--swp-text-xs);
  color: var(--swp-text-muted);
}
.datagrid-table .col-date {
  white-space: nowrap;
}
.datagrid-table .col-amount,
.datagrid-table .col-money {
  text-align: right;
  font-variant-numeric: tabular-nums;
  font-weight: var(--swp-font-medium);
}
.datagrid-table th.col-amount,
.datagrid-table th.col-money {
  text-align: right;
}
.datagrid-table th.col-amount .datagrid-sort-link,
.datagrid-table th.col-money .datagrid-sort-link {
  justify-content: flex-end;
}
.datagrid-table .col-status {
  white-space: nowrap;
}
.datagrid-table .col-actions {
  width: 1%;
  white-space: nowrap;
  text-align: right;
}
.datagrid-table tbody .badge {
  border-radius: var(--swp-radius-full);
  padding: 2px 10px;
  font-weight: var(--swp-font-medium);
  letter-spacing: 0;
}
.datagrid-table tbody .badge.bg-gray.text-gray-fg {
  background-color: var(--swp-gray-100);
  color: var(--swp-text-secondary);
}

.datagrid-sort-link {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  color: var(--swp-text-muted);
  text-decoration: none;
  transition: color var(--swp-transition-fast);
}
.datagrid-sort-link:hover {
  color: var(--swp-text-primary);
}
.datagrid-sort-link.sorted {
  color: var(--swp-primary);
}
.datagrid-sort-link .datagrid-sort-icon {
  display: inline-flex;
  width: 14px;
  height: 14px;
  opacity: 0.35;
  transition: opacity var(--swp-transition-fast);
}
.datagrid-sort-link .datagrid-sort-icon.is-active {
  opacity: 1;
}
.datagrid-sort-link:hover .datagrid-sort-icon {
  opacity: 1;
}

.datagrid-row-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: var(--swp-space-1);
}

.datagrid-action-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  color: var(--swp-text-muted);
  background: transparent;
  border: none;
  border-radius: var(--swp-radius-md);
  text-decoration: none;
  cursor: pointer;
  transition: color var(--swp-transition-fast), background-color var(--swp-transition-fast);
}
.datagrid-action-btn svg {
  width: 18px;
  height: 18px;
}
.datagrid-action-btn:hover {
  color: var(--swp-primary);
  background: var(--swp-primary-lighter);
}
.datagrid-action-btn.action-view:hover {
  color: var(--swp-info);
  background: var(--swp-info-lighter);
}
.datagrid-action-btn.action-edit:hover {
  color: var(--swp-primary);
  background: var(--swp-primary-lighter);
}
.datagrid-action-btn.action-delete:hover {
  color: var(--swp-danger);
  background: var(--swp-danger-lighter);
}

.datagrid-more-btn {
  opacity: 0.6;
  transition: opacity var(--swp-transition-fast), color var(--swp-transition-fast), background-color var(--swp-transition-fast);
}
.datagrid-more-btn:hover, .datagrid-more-btn[aria-expanded=true] {
  opacity: 1;
  color: var(--swp-text-primary);
  background: var(--swp-gray-100);
}

.datagrid-more-menu .dropdown-menu {
  min-width: 160px;
  padding: var(--swp-space-1);
  border-radius: var(--swp-radius-md);
  box-shadow: var(--swp-shadow-md);
}
.datagrid-more-menu .dropdown-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-3);
  font-size: var(--swp-text-sm);
  color: var(--swp-text-primary);
  border-radius: var(--swp-radius-sm);
  cursor: pointer;
}
.datagrid-more-menu .dropdown-item svg {
  width: 16px;
  height: 16px;
  color: var(--swp-text-muted);
}
.datagrid-more-menu .dropdown-item:hover {
  background: var(--swp-gray-50);
}
.datagrid-more-menu .dropdown-item.text-danger {
  color: var(--swp-danger);
}
.datagrid-more-menu .dropdown-item.text-danger svg {
  color: var(--swp-danger);
}
.datagrid-more-menu .dropdown-item.text-danger:hover {
  background: var(--swp-danger-lighter);
}
.datagrid-more-menu .dropdown-divider {
  margin: var(--swp-space-1) 0;
}

tbody tr:not(:hover) .datagrid-more-btn {
  opacity: 0;
}

tbody tr:hover .datagrid-more-btn,
.datagrid-more-menu.show .datagrid-more-btn {
  opacity: 0.6;
}

.datagrid-checkbox {
  display: flex;
  align-items: center;
  justify-content: center;
}
.datagrid-checkbox input[type=checkbox] {
  width: 18px;
  height: 18px;
  margin: 0;
  accent-color: var(--swp-primary);
  cursor: pointer;
}

.datagrid-empty {
  padding: var(--swp-space-16) var(--swp-space-6);
  text-align: center;
}

.datagrid-empty-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 80px;
  height: 80px;
  margin: 0 auto var(--swp-space-6);
  color: var(--swp-gray-300);
  background: var(--swp-gray-50);
  border-radius: var(--swp-radius-full);
}
.datagrid-empty-icon svg {
  width: 40px;
  height: 40px;
}

.datagrid-empty-title {
  margin: 0 0 var(--swp-space-2);
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}

.datagrid-empty-message {
  margin: 0 0 var(--swp-space-6);
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  max-width: 400px;
  margin-left: auto;
  margin-right: auto;
}

.datagrid-empty-action {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
}

.datagrid-bulk-bar {
  position: fixed;
  bottom: 24px;
  left: 50%;
  transform: translateX(-50%) translateY(100px);
  z-index: 9999;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1), visibility 0s 300ms;
}
.datagrid-bulk-bar.visible {
  transform: translateX(-50%) translateY(0);
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transition: transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1), visibility 0s;
}

.datagrid-bulk-bar-inner {
  display: flex;
  align-items: center;
  gap: var(--swp-space-4);
  padding: var(--swp-space-3) var(--swp-space-4) var(--swp-space-3) var(--swp-space-6);
  background: var(--swp-gray-900);
  border-radius: var(--swp-radius-xl);
  box-shadow: var(--swp-shadow-xl);
}

.datagrid-bulk-count {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-inverse);
  white-space: nowrap;
}
.datagrid-bulk-count .count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 24px;
  height: 24px;
  padding: 0 var(--swp-space-2);
  margin-right: var(--swp-space-1);
  font-size: var(--swp-text-xs);
  color: var(--swp-gray-900);
  background: var(--swp-gray-100);
  border-radius: var(--swp-radius-full);
}

.datagrid-bulk-actions {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
}

.datagrid-bulk-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-4);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-inverse);
  background: rgba(255, 255, 255, 0.1);
  border: none;
  border-radius: var(--swp-radius-md);
  cursor: pointer;
  transition: background-color var(--swp-transition-fast);
}
.datagrid-bulk-btn svg {
  width: 16px;
  height: 16px;
}
.datagrid-bulk-btn:hover {
  background: rgba(255, 255, 255, 0.2);
}
.datagrid-bulk-btn.btn-danger {
  color: var(--swp-danger-light);
}
.datagrid-bulk-btn.btn-danger:hover {
  background: rgba(239, 68, 68, 0.2);
}

.datagrid-bulk-divider {
  width: 1px;
  height: 24px;
  background: rgba(255, 255, 255, 0.2);
}

.datagrid-bulk-close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  color: var(--swp-gray-400);
  background: transparent;
  border: none;
  border-radius: var(--swp-radius-md);
  cursor: pointer;
  transition: color var(--swp-transition-fast), background-color var(--swp-transition-fast);
}
.datagrid-bulk-close svg {
  width: 18px;
  height: 18px;
}
.datagrid-bulk-close:hover {
  color: var(--swp-text-inverse);
  background: rgba(255, 255, 255, 0.1);
}

.datagrid-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--swp-space-4);
  padding: var(--swp-space-4) var(--swp-space-6);
  border-top: 1px solid var(--swp-border-light);
  background: var(--swp-surface);
}
@media (width <= 768px) {
  .datagrid-footer {
    flex-direction: column;
    gap: var(--swp-space-3);
  }
}

.datagrid-footer-info {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
}

.datagrid-per-page {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
}
.datagrid-per-page select {
  padding: var(--swp-space-1-5) var(--swp-space-3);
  font-size: var(--swp-text-sm);
  color: var(--swp-text-primary);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  cursor: pointer;
}
.datagrid-per-page select:focus {
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
  outline: none;
}

.datagrid-pagination .pagination {
  display: flex;
  align-items: center;
  gap: var(--swp-space-1);
  margin: 0;
  padding: 0;
  list-style: none;
}
.datagrid-pagination .page-item .page-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 32px;
  height: 32px;
  padding: 0 var(--swp-space-2);
  font-size: var(--swp-text-sm);
  color: var(--swp-text-secondary);
  background: transparent;
  border: 1px solid transparent;
  border-radius: var(--swp-radius-md);
  text-decoration: none;
  transition: color var(--swp-transition-fast), background-color var(--swp-transition-fast), border-color var(--swp-transition-fast);
}
.datagrid-pagination .page-item .page-link:hover {
  color: var(--swp-text-primary);
  background: var(--swp-gray-50);
  border-color: var(--swp-border);
}
.datagrid-pagination .page-item.active .page-link {
  color: var(--swp-primary);
  background: var(--swp-primary-lighter);
  border-color: var(--swp-primary-light);
  font-weight: var(--swp-font-medium);
}
.datagrid-pagination .page-item.disabled .page-link {
  color: var(--swp-text-light);
  cursor: not-allowed;
  pointer-events: none;
}

.datagrid-status {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  padding: var(--swp-space-0-5) var(--swp-space-2);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-medium);
  text-transform: uppercase;
  letter-spacing: 0.025em;
  border-radius: var(--swp-radius-sm);
}
.datagrid-status.status-success {
  color: #065f46;
  background: var(--swp-success-lighter);
}
.datagrid-status.status-danger {
  color: #991b1b;
  background: var(--swp-danger-lighter);
}
.datagrid-status.status-warning {
  color: #92400e;
  background: var(--swp-warning-lighter);
}
.datagrid-status.status-info {
  color: #1e40af;
  background: var(--swp-info-lighter);
}
.datagrid-status.status-primary {
  color: var(--swp-primary-dark);
  background: var(--swp-primary-lighter);
}
.datagrid-status.status-secondary {
  color: var(--swp-gray-700);
  background: var(--swp-gray-100);
}

.datagrid-relative-date {
  cursor: help;
  text-decoration: underline dotted var(--swp-border-dark);
  text-underline-offset: 3px;
  text-decoration-thickness: 1px;
}

.datagrid-loading {
  position: relative;
}
.datagrid-loading::after {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(255, 255, 255, 0.7);
  z-index: 10;
}

.datagrid-loading-indicator {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 11;
}

@media (width <= 768px) {
  .datagrid-header {
    flex-direction: column;
    align-items: stretch;
  }
  .datagrid-search {
    max-width: none;
  }
  .datagrid-table th,
  .datagrid-table td {
    padding: var(--swp-space-2) var(--swp-space-3);
  }
  .datagrid-bulk-bar-inner {
    flex-wrap: wrap;
    justify-content: center;
    gap: var(--swp-space-3);
    padding: var(--swp-space-4);
  }
  .datagrid-bulk-divider {
    display: none;
  }
}
.datagrid-table .col-expand {
  width: 40px;
  text-align: center;
  padding-right: var(--swp-space-2);
}

.datagrid-expand-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  padding: 0;
  color: var(--swp-text-muted);
  background: transparent;
  border: none;
  border-radius: var(--swp-radius-sm);
  cursor: pointer;
  transition: color var(--swp-transition-fast), background-color var(--swp-transition-fast);
}
.datagrid-expand-btn span {
  display: inline-flex;
  transition: transform 200ms ease;
}
.datagrid-expand-btn:hover {
  color: var(--swp-text-primary);
  background: var(--swp-gray-100);
}

.datagrid-detail-row {
  display: none;
  background: var(--swp-gray-50);
}
.datagrid-detail-row.visible {
  display: table-row;
}
.datagrid-detail-row td {
  padding: 0;
  border-bottom: none;
}

.datagrid-detail-content {
  padding: var(--swp-space-4) var(--swp-space-6);
  animation: datagrid-slide-down 200ms ease;
}
.datagrid-detail-content .card {
  box-shadow: none;
  border: 1px solid var(--swp-border-light);
}

@keyframes datagrid-slide-down {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.api-token-history h4 {
  font-size: 1rem;
  font-weight: var(--swp-font-weight-semibold);
  color: var(--swp-text-primary);
}
.api-token-history .table {
  margin-bottom: 0;
  background: var(--swp-white);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-md);
  overflow: hidden;
}
.api-token-history .table thead th {
  font-size: 0.75rem;
  font-weight: var(--swp-font-weight-semibold);
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: var(--swp-text-muted);
  background: var(--swp-gray-50);
  border-bottom: 2px solid var(--swp-border-light);
  padding: var(--swp-space-2) var(--swp-space-3);
}
.api-token-history .table tbody tr {
  transition: background-color var(--swp-transition-fast);
}
.api-token-history .table tbody tr:hover {
  background-color: var(--swp-surface-hover);
}
.api-token-history .table tbody tr td {
  padding: var(--swp-space-2) var(--swp-space-3);
  vertical-align: middle;
  font-size: 0.875rem;
  border-bottom: 1px solid var(--swp-border-light);
}
.api-token-history .table tbody tr:last-child td {
  border-bottom: none;
}
.api-token-history .badge {
  font-size: 0.75rem;
  padding: 0.25rem 0.5rem;
  font-weight: var(--swp-font-weight-medium);
}

/**
 * SolidInvoice - Client Form Styles
 *
 * Client-specific styles for the client creation/edit form.
 * Outer form-page layout uses shared classes from _form-page.scss.
 */
.client-form-section-optional {
  background: var(--swp-gray-50);
  border-style: dashed;
}
.client-form-section-optional .section-header {
  background: transparent;
}

.section-icon-required {
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.2) 100%);
}

.contacts-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}

.contact-card {
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  transition: border-color var(--swp-transition-fast), box-shadow var(--swp-transition-fast);
}
.contact-card:focus-within {
  border-color: rgba(var(--swp-primary-rgb), 0.4);
  box-shadow: 0 0 0 3px rgba(var(--swp-primary-rgb), 0.08);
}

.contact-card-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-3) var(--swp-space-4);
  background: var(--swp-surface);
  border-bottom: 1px solid var(--swp-border-light);
}

.contact-avatar {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  background: var(--swp-primary-light);
  border-radius: var(--swp-radius-full);
  color: var(--swp-primary);
}

.contact-card-title {
  flex: 1;
}

.contact-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}

.contact-card-actions {
  display: flex;
  gap: var(--swp-space-2);
}

.contact-card-body {
  padding: var(--swp-space-4);
}

.contact-form-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--swp-space-3);
}
@media (width <= 576px) {
  .contact-form-grid {
    grid-template-columns: 1fr;
  }
}

.contact-field-email {
  grid-column: 1/-1;
}

.additional-details-section {
  margin-top: var(--swp-space-4);
  padding-top: var(--swp-space-4);
  border-top: 1px dashed var(--swp-border);
}

.additional-details-header {
  margin-bottom: var(--swp-space-3);
}

.additional-details-label {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-secondary);
}

.additional-details-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}

.additional-detail-row {
  display: grid;
  grid-template-columns: 140px 1fr auto;
  gap: var(--swp-space-2);
  align-items: start;
}
@media (width <= 576px) {
  .additional-detail-row {
    grid-template-columns: 1fr;
    gap: var(--swp-space-2);
  }
  .additional-detail-row .additional-detail-action {
    justify-self: end;
  }
}

.additional-detail-action {
  display: flex;
  align-items: center;
  padding-top: var(--swp-space-1);
}

.additional-details-add {
  margin-top: var(--swp-space-3);
}

.add-detail-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  font-size: var(--swp-text-sm);
}

.addresses-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}

.address-card {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  overflow: hidden;
  transition: border-color var(--swp-transition-fast), box-shadow var(--swp-transition-fast);
}
.address-card:focus-within {
  border-color: rgba(var(--swp-primary-rgb), 0.4);
  box-shadow: 0 0 0 3px rgba(var(--swp-primary-rgb), 0.08);
}

.address-card-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-3) var(--swp-space-4);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border-light);
}

.address-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  background: var(--swp-info-light);
  border-radius: var(--swp-radius-full);
  color: var(--swp-info);
}

.address-card-title {
  flex: 1;
}

.address-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}

.address-card-actions {
  display: flex;
  gap: var(--swp-space-2);
}

.address-card-body {
  padding: var(--swp-space-4);
}

.address-form-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--swp-space-3);
}
@media (width <= 576px) {
  .address-form-grid {
    grid-template-columns: 1fr;
  }
}

.add-item-action {
  margin-top: var(--swp-space-4);
  padding-top: var(--swp-space-4);
  border-top: 1px dashed var(--swp-border);
}

.add-item-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2-5) var(--swp-space-4);
  font-weight: var(--swp-font-medium);
  border-style: dashed;
  transition: all var(--swp-transition-fast);
}
.add-item-btn:hover {
  background: var(--swp-primary-lighter);
  border-style: solid;
}
.add-item-btn::before {
  content: "+";
  font-size: 1.25em;
  font-weight: 300;
}

@keyframes client-slide-in {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.contact-card,
.address-card {
  animation: client-slide-in 0.2s ease-out;
}

.contacts-list:empty::before,
.addresses-list:empty::before {
  content: "";
  display: none;
}

.empty-contacts-hint,
.empty-addresses-hint {
  padding: var(--swp-space-6);
  text-align: center;
  background: var(--swp-surface);
  border: 2px dashed var(--swp-border);
  border-radius: var(--swp-radius-md);
}
.empty-contacts-hint p,
.empty-addresses-hint p {
  font-size: var(--swp-text-sm);
}

/**
 * SolidInvoice - Billing Form Styles
 *
 * Modern, clean invoice creation form with 2-column layout,
 * sticky totals sidebar, and collapsible sections.
 * Uses design system tokens for consistent styling.
 */
.billing-form-page {
  min-height: 100%;
}

.billing-form-container {
  max-width: 1100px;
  margin: 0 auto;
  padding-bottom: var(--swp-space-24);
}

.billing-form-header {
  margin-bottom: var(--swp-space-6);
  padding: var(--swp-space-6) 0;
}

.billing-form-header-content {
  display: flex;
  align-items: center;
  gap: var(--swp-space-4);
}

.billing-form-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.15) 100%);
  border-radius: var(--swp-radius-lg);
  color: var(--swp-primary);
}

.billing-form-title {
  font-size: 1.75rem;
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
  margin: 0;
  letter-spacing: -0.025em;
}

.billing-form-subtitle {
  font-size: var(--swp-text-base);
  color: var(--swp-text-muted);
  margin: var(--swp-space-1) 0 0 0;
}

.billing-details-section {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  padding: var(--swp-space-6);
  margin-bottom: var(--swp-space-6);
  transition: box-shadow var(--swp-transition-base);
}
.billing-details-section:focus-within {
  border-color: rgba(var(--swp-primary-rgb), 0.3);
  box-shadow: 0 0 0 3px rgba(var(--swp-primary-rgb), 0.08);
}

.billing-details-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--swp-space-6);
}
@media (width <= 768px) {
  .billing-details-grid {
    grid-template-columns: 1fr;
  }
}
.billing-details-grid--no-dates .billing-details-right {
  justify-content: flex-start;
  padding-top: var(--swp-space-2);
}

.billing-details-left {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}

.billing-details-right {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}

.billing-id-display {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-2);
}
.billing-id-display .billing-id-label {
  font-size: var(--swp-text-2xl);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}
.billing-id-display .billing-id-value {
  font-size: var(--swp-text-2xl);
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
  font-family: var(--swp-font-mono);
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.01em;
}
.billing-id-display .billing-id-edit {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: var(--swp-radius-sm);
  color: var(--swp-text-muted);
  background: transparent;
  border: none;
  cursor: pointer;
  transition: all var(--swp-transition-fast);
}
.billing-id-display .billing-id-edit:hover {
  color: var(--swp-primary);
  background: var(--swp-primary-light);
}

.billing-id-form {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
}
.billing-id-form .form-control {
  max-width: 200px;
}
.billing-id-form .btn {
  padding: var(--swp-space-2);
}

.invoice-dates-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--swp-space-4);
}
@media (width <= 576px) {
  .invoice-dates-row {
    grid-template-columns: 1fr;
  }
}

.client-selection {
  margin-bottom: var(--swp-space-4);
}

.selected-client-card {
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  padding: var(--swp-space-4);
  animation: billing-slide-in 0.2s ease-out;
}

.selected-client-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--swp-space-3);
}

.selected-client-name {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
}

.selected-client-change {
  font-size: var(--swp-text-sm);
  color: var(--swp-primary);
  text-decoration: none;
}
.selected-client-change:hover {
  text-decoration: underline;
}

.selected-client-contacts {
  border-top: 1px dashed var(--swp-border);
  padding-top: var(--swp-space-3);
  margin-top: var(--swp-space-3);
}

.contacts-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-secondary);
  margin-bottom: var(--swp-space-2);
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
}

.contacts-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}

.contact-checkbox {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-3);
  background: var(--swp-surface);
  border-radius: var(--swp-radius-sm);
  transition: background var(--swp-transition-fast);
}
.contact-checkbox:hover {
  background: var(--swp-gray-100);
}
.contact-checkbox .form-check-input {
  margin: 0;
}
.contact-checkbox .contact-name {
  font-weight: var(--swp-font-medium);
}
.contact-checkbox .contact-email {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
}

.billing-form-main {
  display: grid;
  grid-template-columns: 1fr 320px;
  gap: var(--swp-space-6);
  align-items: start;
}
@media (width <= 1100px) {
  .billing-form-main {
    grid-template-columns: 1fr 280px;
  }
}
@media (width <= 900px) {
  .billing-form-main {
    grid-template-columns: 1fr;
  }
}

.billing-items-section {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
}

.billing-items-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4) var(--swp-space-6);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border-light);
}

.billing-items-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.2) 100%);
  border-radius: var(--swp-radius-md);
  color: var(--swp-primary);
}

.billing-items-title {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0;
}

.billing-items-body {
  padding: var(--swp-space-4);
}

.billing-items-list {
  margin-bottom: var(--swp-space-4);
}

.billing-items-header-row {
  display: grid;
  grid-template-columns: 28px minmax(0, 2.6fr) minmax(130px, 1.1fr) 56px minmax(140px, 0.9fr) minmax(60px, 0.4fr) 24px;
  gap: var(--swp-space-2);
  padding: var(--swp-space-3);
  border-bottom: 1px solid var(--swp-border);
}
.billing-items-header-row > div {
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-text-muted);
  white-space: nowrap;
}
.billing-items-header-row .column-total {
  text-align: right;
}
.billing-items-header-row .column-actions {
  text-align: center;
}
@media (width <= 900px) {
  .billing-items-header-row {
    display: none;
  }
}

.billing-items-list:not(:has(.column-tax)) .billing-items-header-row {
  grid-template-columns: 28px minmax(0, 3.8fr) minmax(100px, 0.9fr) 56px minmax(60px, 0.4fr) 24px;
}
.billing-items-list:not(:has(.column-tax)) .billing-item-row {
  grid-template-columns: 28px minmax(0, 3.8fr) minmax(100px, 0.9fr) 56px minmax(60px, 0.4fr) 24px;
}
@media (width <= 900px) {
  .billing-items-list:not(:has(.column-tax)) .billing-item-row {
    grid-template-columns: 1fr 1fr;
  }
}

.billing-items-list:has(.column-tax):not(:has(.line-tax-row)) .billing-items-header-row,
.billing-items-list:has(.column-tax):not(:has(.line-tax-row)) .billing-item-row {
  grid-template-columns: 28px minmax(0, 3.2fr) minmax(130px, 1.1fr) 56px minmax(80px, 0.5fr) minmax(60px, 0.4fr) 24px;
}
@media (width <= 900px) {
  .billing-items-list:has(.column-tax):not(:has(.line-tax-row)) .billing-item-row {
    grid-template-columns: 1fr 1fr;
  }
}

.billing-item-row {
  display: grid;
  grid-template-columns: 28px minmax(0, 2.6fr) minmax(130px, 1.1fr) 56px minmax(140px, 0.9fr) minmax(60px, 0.4fr) 24px;
  gap: var(--swp-space-2);
  padding: var(--swp-space-3);
  border-bottom: 1px solid var(--swp-border-light);
  align-items: start;
  transition: background var(--swp-transition-fast);
}
.billing-item-row > div {
  min-width: 0;
}
.billing-item-row:hover {
  background: var(--swp-gray-50);
}
.billing-item-row:last-child {
  border-bottom: none;
}
.billing-item-row .column-description {
  min-width: 0;
  overflow: hidden;
}
.billing-item-row .column-description textarea {
  min-height: 60px;
  resize: vertical;
  width: 100%;
  max-width: 100%;
}
.billing-item-row .line-description {
  margin-top: 0.25rem;
}
.billing-item-row .line-description > summary {
  color: var(--tblr-secondary);
  cursor: pointer;
  font-size: 0.75rem;
  list-style: none;
  width: fit-content;
}
.billing-item-row .line-description > summary::-webkit-details-marker {
  display: none;
}
.billing-item-row .line-description > summary::before {
  content: "+";
  margin-right: 0.25rem;
}
.billing-item-row .line-description > summary:hover {
  color: var(--tblr-primary);
}
.billing-item-row .line-description[open] > summary {
  margin-bottom: 0.25rem;
}
.billing-item-row .line-description[open] > summary::before {
  content: "−";
}
.billing-item-row .column-price input,
.billing-item-row .column-price select,
.billing-item-row .column-qty input,
.billing-item-row .column-qty select,
.billing-item-row .column-tax input,
.billing-item-row .column-tax select {
  width: 100%;
}
.billing-item-row .column-price .input-group-text {
  padding: 0.25rem 0.4rem;
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-muted);
  background: var(--swp-gray-50);
  border-color: var(--swp-border-light);
}
.billing-item-row .column-price input {
  min-width: 0;
}
.billing-item-row .column-qty input {
  text-align: center;
}
.billing-item-row .column-total {
  text-align: right;
  padding-top: var(--swp-space-1);
}
.billing-item-row .column-total .item-total-value {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.billing-item-row .column-actions {
  display: flex;
  align-items: flex-start;
  justify-content: center;
  padding-top: 0;
}
.billing-item-row .column-drag {
  display: flex;
  align-items: center;
  justify-content: center;
  padding-top: var(--swp-space-2);
}
.billing-item-row .line-drag-handle {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  padding: 0;
  border: 0;
  border-radius: var(--swp-radius-sm);
  background: none;
  color: var(--swp-text-muted);
  cursor: grab;
  opacity: 0;
  transition: opacity var(--swp-transition-fast), background var(--swp-transition-fast), color var(--swp-transition-fast);
}
.billing-item-row .line-drag-handle:hover {
  background: var(--swp-gray-100);
  color: var(--swp-text-primary);
}
.billing-item-row .line-drag-handle:active {
  cursor: grabbing;
}
.billing-item-row .line-drag-handle:focus-visible {
  opacity: 1;
  outline: 2px solid var(--swp-primary);
  outline-offset: 1px;
}
.billing-item-row:hover .line-drag-handle {
  opacity: 1;
}
.billing-item-row .mobile-label {
  display: none;
}
@media (width <= 900px) {
  .billing-item-row {
    display: grid;
    position: relative;
    grid-template-columns: 1fr 1fr;
    grid-template-areas: "desc desc" "price qty" "tax tax" "actions total";
    gap: var(--swp-space-3);
    padding: var(--swp-space-4);
    margin-bottom: var(--swp-space-3);
    background: var(--swp-gray-50);
    border: 1px solid var(--swp-border);
    border-radius: var(--swp-radius-md);
  }
  .billing-item-row:hover {
    background: var(--swp-gray-50);
  }
  .billing-item-row:last-child {
    border-bottom: 1px solid var(--swp-border);
  }
  .billing-item-row .mobile-label {
    display: block;
    font-size: var(--swp-text-xs);
    font-weight: var(--swp-font-semibold);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--swp-text-muted);
    margin-bottom: var(--swp-space-1);
  }
  .billing-item-row .column-description {
    grid-area: desc;
  }
  .billing-item-row .column-description textarea {
    width: 100%;
    min-height: 80px;
  }
  .billing-item-row .column-price {
    grid-area: price;
  }
  .billing-item-row .column-price input {
    width: 100%;
  }
  .billing-item-row .column-qty {
    grid-area: qty;
  }
  .billing-item-row .column-qty input {
    width: 100%;
  }
  .billing-item-row .column-tax {
    grid-area: tax;
  }
  .billing-item-row .column-tax select {
    width: 100%;
  }
  .billing-item-row .column-actions {
    grid-area: actions;
    display: flex;
    align-items: center;
    justify-content: flex-start;
    padding-top: var(--swp-space-3);
    border-top: 1px dashed var(--swp-border);
  }
  .billing-item-row .column-drag {
    position: absolute;
    top: var(--swp-space-2);
    right: var(--swp-space-2);
    padding-top: 0;
  }
  .billing-item-row .line-drag-handle {
    opacity: 1;
  }
  .billing-item-row .column-total {
    grid-area: total;
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: var(--swp-space-2);
    padding-top: var(--swp-space-3);
    border-top: 1px dashed var(--swp-border);
  }
  .billing-item-row .column-total .mobile-label {
    display: inline;
    margin-bottom: 0;
  }
  .billing-item-row .column-total .item-total-value {
    font-size: var(--swp-text-lg);
    font-weight: var(--swp-font-semibold);
    color: var(--swp-primary);
  }
}

.remove-item-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 2px 4px;
  line-height: 1;
  border: 1px solid var(--swp-border);
  background: var(--swp-surface);
  color: var(--swp-text-muted);
  border-radius: var(--swp-radius-sm);
  cursor: pointer;
  transition: all var(--swp-transition-fast);
}
.remove-item-btn svg {
  width: 12px;
  height: 12px;
}
.remove-item-btn:hover {
  color: var(--swp-danger);
  background: var(--swp-danger-lighter);
  border-color: var(--swp-danger);
}
.remove-item-btn:focus {
  outline: 2px solid var(--swp-primary);
  outline-offset: 2px;
}

.add-item-action {
  padding-top: var(--swp-space-4);
  border-top: 1px dashed var(--swp-border);
}

.add-item-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  gap: var(--swp-space-2);
  font-weight: var(--swp-font-medium);
  color: var(--swp-primary);
  background: transparent;
  border: 2px dashed var(--swp-border);
  border-radius: var(--swp-radius-md);
  cursor: pointer;
  transition: all var(--swp-transition-fast);
}
.add-item-btn:hover {
  background: var(--swp-primary-lighter);
  border-color: var(--swp-primary);
  border-style: solid;
}

.line-tax-collection {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
  min-width: 0;
}

.line-tax-list {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.line-tax-row {
  display: flex;
  align-items: center;
  gap: var(--swp-space-1);
  padding: 0;
  background: transparent;
  border: 0;
  border-radius: 0;
}

.line-tax-field-tax {
  flex: 1 1 auto;
  min-width: 0;
}
.line-tax-field-tax select,
.line-tax-field-tax .form-select {
  width: 100%;
  min-width: 0;
  padding: 4px 22px 4px 8px;
  font-size: var(--swp-text-xs);
  line-height: 1.2;
  background-position: right 6px center;
  background-size: 12px;
}

.line-tax-actions {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
}

.line-tax-remove-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 2px 4px;
  line-height: 1;
  color: var(--swp-text-muted);
  background: transparent;
  border: 0;
  border-radius: var(--swp-radius-sm);
  cursor: pointer;
  transition: color var(--swp-transition-fast), background var(--swp-transition-fast);
}
.line-tax-remove-btn svg {
  width: 12px;
  height: 12px;
}
.line-tax-remove-btn:hover {
  color: var(--swp-danger);
  background: rgba(var(--swp-danger-rgb), 0.08);
}

.line-tax-add-btn {
  align-self: flex-start;
  padding: 2px 8px;
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-medium);
  line-height: 1.4;
  color: var(--swp-primary);
  background: transparent;
  border: 1px dashed var(--swp-border);
  border-radius: var(--swp-radius-sm);
  cursor: pointer;
  transition: all var(--swp-transition-fast);
}
.line-tax-add-btn:hover {
  color: var(--swp-primary-dark);
  border-color: var(--swp-primary);
  background: var(--swp-primary-lighter);
}

.billing-invoice-taxes {
  margin-top: var(--swp-space-4);
  padding: var(--swp-space-4) var(--swp-space-6) var(--swp-space-6);
  border-top: 1px solid var(--swp-border-light);
  background: var(--swp-gray-50);
}

.billing-invoice-taxes-header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--swp-space-3);
  margin-bottom: var(--swp-space-3);
}

.billing-invoice-taxes-title {
  font-size: var(--swp-text-md);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0;
}

.billing-invoice-taxes-subtitle {
  flex-basis: 100%;
  margin: 0;
  font-size: var(--swp-text-sm);
}

.billing-invoice-taxes-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
  margin-bottom: var(--swp-space-3);
}

.billing-invoice-tax-row {
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(0, 1fr) minmax(0, 3fr) auto;
  gap: var(--swp-space-3);
  align-items: start;
  padding: var(--swp-space-3);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
}
@media (width <= 768px) {
  .billing-invoice-tax-row {
    grid-template-columns: 1fr;
  }
}

.invoice-tax-field {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
}
.invoice-tax-field .mobile-label {
  display: none;
  font-size: var(--swp-text-xs);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--swp-text-muted);
}
@media (width <= 768px) {
  .invoice-tax-field .mobile-label {
    display: block;
  }
}

.invoice-tax-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
}

.billing-totals-sidebar {
  position: sticky;
  top: var(--swp-space-6);
}
@media (width <= 992px) {
  .billing-totals-sidebar {
    position: static;
  }
}

.billing-totals-card {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
}

.billing-totals-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4) var(--swp-space-5);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border-light);
}

.billing-totals-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: linear-gradient(135deg, var(--swp-success-light) 0%, rgba(var(--swp-success-rgb), 0.2) 100%);
  border-radius: var(--swp-radius-md);
  color: var(--swp-success);
}

.billing-totals-title {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0;
}

.billing-totals-body {
  padding: var(--swp-space-5);
}

.totals-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--swp-space-3) 0;
}
.totals-row:not(:last-child) {
  border-bottom: 1px solid var(--swp-border-light);
}

.totals-label {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-secondary);
}

.totals-value {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
  font-variant-numeric: tabular-nums;
}

.totals-row-discount .totals-value {
  color: var(--swp-text-muted);
}

.totals-row-total {
  padding-top: var(--swp-space-4);
  margin-top: var(--swp-space-2);
  border-top: 1px solid var(--swp-border-dark);
}
.totals-row-total .totals-label {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}
.totals-row-total .totals-value {
  font-size: var(--swp-text-2xl);
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.02em;
}

.discount-field {
  margin-top: var(--swp-space-4);
  padding-top: var(--swp-space-4);
  border-top: 1px dashed var(--swp-border);
}
.discount-field .form-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-secondary);
}

.billing-terms-section {
  margin-top: var(--swp-space-6);
  background: var(--swp-gray-50);
  border: 1px dashed var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
}
.billing-terms-section[open] {
  background: var(--swp-surface);
  border-style: solid;
}
.billing-terms-section[open] .terms-summary {
  border-bottom: 1px solid var(--swp-border-light);
}
.billing-terms-section[open] .terms-summary-icon {
  transform: rotate(90deg);
}

.terms-summary {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4) var(--swp-space-5);
  cursor: pointer;
  list-style: none;
  transition: background var(--swp-transition-fast);
}
.terms-summary::-webkit-details-marker {
  display: none;
}
.terms-summary:hover {
  background: var(--swp-gray-100);
}

.terms-summary-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  color: var(--swp-text-muted);
  transition: transform var(--swp-transition-fast);
}

.terms-summary-text {
  flex: 1;
}

.terms-summary-title {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
}

.terms-content {
  padding: var(--swp-space-6);
}

.terms-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--swp-space-4);
}
@media (width <= 768px) {
  .terms-grid {
    grid-template-columns: 1fr;
  }
}

.billing-form-actions {
  position: sticky;
  bottom: 0;
  left: 0;
  right: 0;
  background: var(--swp-surface);
  border-top: 1px solid var(--swp-border);
  padding: var(--swp-space-4) 0;
  margin-top: var(--swp-space-8);
  z-index: 10;
  box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.05);
}

.billing-form-actions-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  max-width: 1100px;
  margin: 0 auto;
  padding: 0 var(--swp-space-4);
}

.save-button-group {
  box-shadow: var(--swp-shadow-primary);
  border-radius: var(--swp-radius-md);
}
.save-button-group .btn-save-primary {
  box-shadow: none;
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}
.save-button-group .btn-save-primary:hover {
  box-shadow: none;
  transform: none;
}
.save-button-group .dropdown-toggle-split {
  padding: var(--swp-space-3) var(--swp-space-3);
  border-left: 1px solid rgba(255, 255, 255, 0.2);
}
.save-button-group .dropdown-toggle-split::after {
  vertical-align: middle;
}
.save-button-group .dropdown-menu {
  min-width: 180px;
  padding: var(--swp-space-2);
  border-radius: var(--swp-radius-md);
  box-shadow: var(--swp-shadow-lg);
  border: 1px solid var(--swp-border);
}
.save-button-group .dropdown-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2-5) var(--swp-space-3);
  border-radius: var(--swp-radius-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
  transition: all var(--swp-transition-fast);
}
.save-button-group .dropdown-item svg {
  color: var(--swp-text-muted);
  transition: color var(--swp-transition-fast);
}
.save-button-group .dropdown-item:hover {
  background: var(--swp-primary-lighter);
  color: var(--swp-primary);
}
.save-button-group .dropdown-item:hover svg {
  color: var(--swp-primary);
}
.save-button-group:hover {
  box-shadow: var(--swp-shadow-primary-lg);
}

@media (width <= 768px) {
  .billing-items-table {
    display: none;
  }
  .billing-items-cards {
    display: flex;
    flex-direction: column;
    gap: var(--swp-space-4);
  }
}
@media (width >= 769px) {
  .billing-items-cards {
    display: none;
  }
}
.billing-item-card {
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  padding: var(--swp-space-4);
  animation: billing-slide-in 0.2s ease-out;
}
.billing-item-card:focus-within {
  border-color: rgba(var(--swp-primary-rgb), 0.4);
  box-shadow: 0 0 0 3px rgba(var(--swp-primary-rgb), 0.08);
}

.billing-item-card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--swp-space-3);
}

.billing-item-card-number {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-muted);
}

.billing-item-card-body {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
}

.billing-item-card-row {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: var(--swp-space-3);
}

.billing-item-card-total {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: var(--swp-space-3);
  margin-top: var(--swp-space-3);
  border-top: 1px dashed var(--swp-border);
}
.billing-item-card-total .item-total-label {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
}
.billing-item-card-total .item-total-value {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-primary);
}

@keyframes billing-slide-in {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
@media (width <= 768px) {
  .billing-form-container {
    padding: 0 var(--swp-space-4);
    padding-bottom: var(--swp-space-20);
  }
  .billing-form-header {
    margin-bottom: var(--swp-space-4);
    padding: var(--swp-space-4) 0;
  }
  .billing-form-icon {
    width: 48px;
    height: 48px;
  }
  .billing-form-title {
    font-size: 1.5rem;
  }
  .billing-details-section,
  .billing-items-section,
  .billing-totals-card {
    border-radius: var(--swp-radius-md);
  }
  .billing-form-actions-inner {
    gap: var(--swp-space-3);
  }
  .billing-form-actions-inner .btn {
    flex: 1;
  }
  .billing-id-display {
    flex-wrap: wrap;
  }
  .billing-id-display .billing-id-label,
  .billing-id-display .billing-id-value {
    font-size: var(--swp-text-xl);
  }
}
.recurring-schedule-section {
  margin-block: var(--swp-space-6);
  padding: var(--swp-space-5);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
}
.recurring-schedule-section .section-header {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-3);
  margin-block-end: var(--swp-space-5);
  padding-block-end: var(--swp-space-4);
  border-block-end: 1px solid var(--swp-border-light);
}
.recurring-schedule-section .section-header .section-header-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: var(--swp-radius-md);
  background: linear-gradient(135deg, var(--swp-primary) 0%, var(--swp-primary-dark) 100%);
  color: #ffffff;
  flex-shrink: 0;
}
.recurring-schedule-section .section-header .section-header-content {
  flex: 1;
}
.recurring-schedule-section .section-header .section-header-content .section-title {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-1) 0;
}
.recurring-schedule-section .section-header .section-header-content .section-description {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-secondary);
  margin: 0;
}
.recurring-schedule-section .recurring-schedule-content {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}

.recurring-options-wrapper [id$=_type], .recurring-options-wrapper [id$=_endType] {
  display: grid !important;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--swp-space-3);
  margin-block-start: var(--swp-space-2);
}
@media (width <= 768px) {
  .recurring-options-wrapper [id$=_type], .recurring-options-wrapper [id$=_endType] {
    grid-template-columns: repeat(2, 1fr);
  }
}
.recurring-options-wrapper [id$=_type] .form-check-label.required::after, .recurring-options-wrapper [id$=_endType] .form-check-label.required::after {
  display: none;
}
.recurring-options-wrapper [id$=_type] > .form-check, .recurring-options-wrapper [id$=_endType] > .form-check {
  position: relative;
  margin: 0;
  padding: 0;
}
.recurring-options-wrapper [id$=_type] > .form-check input[type=radio], .recurring-options-wrapper [id$=_endType] > .form-check input[type=radio] {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}
.recurring-options-wrapper [id$=_type] > .form-check label, .recurring-options-wrapper [id$=_endType] > .form-check label {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-1);
  padding: var(--swp-space-3);
  border: 2px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  background: var(--swp-surface);
  transition: all 0.2s ease;
  min-height: 70px;
  cursor: pointer;
  margin: 0;
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
  text-align: center;
}
.recurring-options-wrapper [id$=_type] > .form-check:hover label, .recurring-options-wrapper [id$=_endType] > .form-check:hover label {
  border-color: var(--swp-primary);
  background: var(--swp-primary-lighter);
}
.recurring-options-wrapper [id$=_type] > .form-check input[type=radio]:checked + label, .recurring-options-wrapper [id$=_endType] > .form-check input[type=radio]:checked + label {
  border-color: var(--swp-primary);
  background: var(--swp-primary);
  color: #ffffff;
}
.recurring-options-wrapper [id$=_endType] {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr) !important;
}
.recurring-options-wrapper [id$=_days] {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(80px, 1fr));
  gap: var(--swp-space-2);
  margin-block-start: var(--swp-space-2);
}
@media (width <= 768px) {
  .recurring-options-wrapper [id$=_days] {
    grid-template-columns: repeat(auto-fit, minmax(70px, 1fr));
  }
}
.recurring-options-wrapper [id$=_days] > .form-check {
  position: relative;
  margin: 0;
  padding: 0;
}
.recurring-options-wrapper [id$=_days] > .form-check input[type=checkbox] {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}
.recurring-options-wrapper [id$=_days] > .form-check label {
  display: flex !important;
  align-items: center;
  justify-content: center;
  padding: var(--swp-space-3) var(--swp-space-2);
  border: 2px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  background: var(--swp-surface);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary) !important;
  transition: all 0.2s ease;
  min-height: 44px;
  text-align: center;
  cursor: pointer;
  margin: 0;
  opacity: 1 !important;
  visibility: visible !important;
}
.recurring-options-wrapper [id$=_days] > .form-check label::before, .recurring-options-wrapper [id$=_days] > .form-check label::after {
  content: none !important;
}
.recurring-options-wrapper [id$=_days] > .form-check:hover label {
  border-color: var(--swp-primary);
  background: var(--swp-primary-lighter);
}
.recurring-options-wrapper [id$=_days] > .form-check input[type=checkbox]:checked + label {
  border-color: var(--swp-primary);
  background: var(--swp-primary);
  color: #ffffff !important;
}

.recurring-frequency-display {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4);
  background: linear-gradient(135deg, var(--swp-primary-lighter) 0%, rgba(var(--swp-primary-rgb), 0.05) 100%);
  border: 1px solid rgba(var(--swp-primary-rgb), 0.2);
  border-radius: var(--swp-radius-md);
}
.recurring-frequency-display .recurring-frequency-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: var(--swp-primary-light);
  border-radius: var(--swp-radius-md);
  color: var(--swp-primary);
  flex-shrink: 0;
}
.recurring-frequency-display .recurring-frequency-text {
  flex: 1;
  font-size: var(--swp-text-base);
  color: var(--swp-text-primary);
}
.recurring-frequency-display .recurring-frequency-text strong {
  font-weight: var(--swp-font-semibold);
  color: var(--swp-primary);
}

.recurring-variables-help {
  margin-block-start: var(--swp-space-3);
  padding: var(--swp-space-3);
  border: 1px solid var(--swp-info-border-subtle);
  border-radius: var(--swp-radius-md);
  background: var(--swp-info-bg-subtle);
}
.recurring-variables-help .variables-summary {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-info);
  cursor: pointer;
  list-style: none;
  user-select: none;
}
.recurring-variables-help .variables-summary::-webkit-details-marker {
  display: none;
}
.recurring-variables-help .variables-summary svg {
  flex-shrink: 0;
}
.recurring-variables-help .variables-summary:hover {
  color: var(--swp-info-emphasis);
}
.recurring-variables-help .variables-content {
  margin-block-start: var(--swp-space-3);
  padding-block-start: var(--swp-space-3);
  border-block-start: 1px solid var(--swp-info-border-subtle);
}
.recurring-variables-help .variables-content .variables-description {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-secondary);
  margin-block-end: var(--swp-space-3);
}
.recurring-variables-help .variables-content .variables-list {
  list-style: none;
  padding: 0;
  margin: 0 0 var(--swp-space-3) 0;
}
.recurring-variables-help .variables-content .variables-list li {
  display: flex;
  align-items: baseline;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) 0;
  font-size: var(--swp-text-sm);
  line-height: 1.6;
}
.recurring-variables-help .variables-content .variables-list li code {
  padding: 2px 8px;
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-sm);
  font-family: var(--swp-font-mono);
  font-size: var(--swp-text-xs);
  color: var(--swp-primary);
  font-weight: var(--swp-font-medium);
  white-space: nowrap;
}
.recurring-variables-help .variables-content .variables-list li .variable-description {
  color: var(--swp-text-muted);
}
.recurring-variables-help .variables-content .variable-example {
  padding: var(--swp-space-3);
  background: var(--swp-surface);
  border-inline-start: 3px solid var(--swp-info);
  border-radius: var(--swp-radius-sm);
  font-size: var(--swp-text-sm);
}
.recurring-variables-help .variables-content .variable-example strong {
  color: var(--swp-text-primary);
  font-weight: var(--swp-font-semibold);
}
.recurring-variables-help .variables-content .variable-example .example-text {
  display: block;
  margin-block-start: var(--swp-space-2);
  color: var(--swp-text-secondary);
  font-family: var(--swp-font-mono);
  font-size: var(--swp-text-xs);
}
.recurring-variables-help[open] .variables-summary {
  margin-block-end: 0;
}

.invoice-sidebar-card-highlight {
  border-left: 3px solid var(--swp-primary);
  background: linear-gradient(to right, rgba(var(--swp-primary-rgb), 0.03), transparent);
}

.recurring-schedule-grid {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
}

.recurring-schedule-item {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  padding: var(--swp-space-2) 0;
}
.recurring-schedule-item:not(:last-child) {
  border-bottom: 1px solid var(--swp-border-light);
}

.recurring-schedule-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-secondary);
}

.recurring-schedule-value {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
  text-align: right;
}

.occurrences-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
  padding: 0;
  margin: 0;
  list-style: none;
}

.occurrence-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-3);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-md);
  transition: all var(--swp-transition-fast);
}
.occurrence-item:hover {
  background: var(--swp-surface);
  border-color: rgba(var(--swp-primary-rgb), 0.3);
  transform: translateX(2px);
}

.occurrence-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  background: var(--swp-primary-lighter);
  border-radius: var(--swp-radius-md);
  color: var(--swp-primary);
  flex-shrink: 0;
}

.occurrence-date {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
}

.generated-invoices-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
  padding: 0;
  margin: 0;
  list-style: none;
}

.generated-invoice-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--swp-space-3);
  padding: var(--swp-space-3);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-md);
  transition: all var(--swp-transition-fast);
}
.generated-invoice-item:hover {
  background: var(--swp-surface);
  border-color: rgba(var(--swp-primary-rgb), 0.3);
}

.generated-invoice-link {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  flex: 1;
  min-width: 0;
  text-decoration: none;
  color: var(--swp-text-primary);
  transition: color var(--swp-transition-fast);
}
.generated-invoice-link:hover {
  color: var(--swp-primary);
}
.generated-invoice-link:hover .generated-invoice-number {
  color: var(--swp-primary);
}

.generated-invoice-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  background: var(--swp-success-lighter);
  border-radius: var(--swp-radius-sm);
  color: var(--swp-success);
  flex-shrink: 0;
}

.generated-invoice-number {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  transition: color var(--swp-transition-fast);
}

.generated-invoice-meta {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  flex-shrink: 0;
}

.generated-invoice-total {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-secondary);
  white-space: nowrap;
}

.view-all-link {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-3);
  margin-top: var(--swp-space-2);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-primary);
  text-decoration: none;
  background: var(--swp-primary-lighter);
  border: 1px solid rgba(var(--swp-primary-rgb), 0.2);
  border-radius: var(--swp-radius-md);
  transition: all var(--swp-transition-fast);
}
.view-all-link:hover {
  background: rgba(var(--swp-primary-rgb), 0.15);
  border-color: var(--swp-primary);
  transform: translateY(-1px);
}

/**
 * SolidInvoice - Payment Page Styles
 *
 * Modern, clean payment page with two-column layout,
 * card-based payment method selection, and invoice summary.
 * Uses design system tokens for consistent styling.
 */
.payment-page {
  min-height: 100%;
}

.payment-container {
  max-width: 1200px;
  margin: 0 auto;
  padding-bottom: var(--swp-space-12);
}

.payment-header {
  margin-bottom: var(--swp-space-6);
  padding: var(--swp-space-6) 0;
}

.payment-header-content {
  display: flex;
  align-items: center;
  gap: var(--swp-space-4);
}

.payment-header-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.15) 100%);
  border-radius: var(--swp-radius-lg);
  color: var(--swp-primary);
}

.payment-header-title {
  font-size: 1.75rem;
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
  margin: 0;
  letter-spacing: -0.025em;
}

.payment-header-subtitle {
  font-size: var(--swp-text-base);
  color: var(--swp-text-muted);
  margin: var(--swp-space-1) 0 0 0;
}

.payment-layout {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--swp-space-6);
  align-items: start;
}
@media (width <= 992px) {
  .payment-layout {
    grid-template-columns: 1fr;
  }
}

.payment-invoice-summary {
  position: sticky;
  top: var(--swp-space-6);
}
@media (width <= 992px) {
  .payment-invoice-summary {
    position: static;
    order: 2;
  }
}

.invoice-summary-card {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
}

.invoice-summary-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4) var(--swp-space-5);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border-light);
}

.invoice-summary-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: linear-gradient(135deg, var(--swp-info-light) 0%, rgba(var(--swp-info-rgb), 0.2) 100%);
  border-radius: var(--swp-radius-md);
  color: var(--swp-info);
}

.invoice-summary-title {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0;
}

.invoice-summary-body {
  padding: var(--swp-space-5);
}

.summary-section {
  padding: var(--swp-space-4) 0;
  border-bottom: 1px solid var(--swp-border-light);
}
.summary-section:first-child {
  padding-top: 0;
}
.summary-section:last-child {
  border-bottom: none;
  padding-bottom: 0;
}

.summary-section-label {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-text-muted);
  margin-bottom: var(--swp-space-3);
}

.summary-client-info {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  flex-wrap: wrap;
}
.summary-client-info .client-name {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}

.client-credit-badge {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  padding: var(--swp-space-1-5) var(--swp-space-3);
  margin-top: var(--swp-space-2);
  font-size: var(--swp-text-sm);
  color: var(--swp-success);
  background: var(--swp-success-lighter);
  border-radius: var(--swp-radius-full);
}

.invoice-details-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--swp-space-3);
}

.detail-item {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
}

.detail-label {
  font-size: var(--swp-text-xs);
  color: var(--swp-text-muted);
}

.detail-value {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
}

.line-items-preview {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}

.line-item-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--swp-space-2) var(--swp-space-3);
  background: var(--swp-gray-50);
  border-radius: var(--swp-radius-sm);
}

.line-item-desc {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-secondary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 60%;
}

.line-item-amount {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

.summary-totals {
  margin-top: var(--swp-space-4);
  padding-top: var(--swp-space-4);
  border-top: 1px solid var(--swp-border);
}

.summary-totals .totals-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--swp-space-2) 0;
}

.summary-totals .totals-label {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-secondary);
}

.summary-totals .totals-value {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
  font-variant-numeric: tabular-nums;
}

.summary-totals .totals-row-discount .totals-value {
  color: var(--swp-text-muted);
}

.summary-totals .totals-row-payment .totals-value {
  color: var(--swp-success);
}

.summary-totals .totals-row-balance {
  margin-top: var(--swp-space-2);
  padding-top: var(--swp-space-3);
  border-top: 1px solid var(--swp-border-dark);
}
.summary-totals .totals-row-balance .totals-label {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}
.summary-totals .totals-row-balance .totals-value {
  font-size: var(--swp-text-xl);
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.02em;
}

@media (width <= 992px) {
  .payment-form-section {
    order: 1;
  }
}

.payment-form-card {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
}

.payment-form-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4) var(--swp-space-5);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border-light);
}

.payment-form-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: linear-gradient(135deg, var(--swp-success-light) 0%, rgba(var(--swp-success-rgb), 0.2) 100%);
  border-radius: var(--swp-radius-md);
  color: var(--swp-success);
}

.payment-form-title {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0;
}

.payment-form-body {
  padding: var(--swp-space-5);
}

.payment-form-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--swp-space-4) var(--swp-space-5);
  background: var(--swp-gray-50);
  border-top: 1px solid var(--swp-border-light);
}

.payment-form-body .form-label {
  display: block;
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-secondary);
  margin-bottom: var(--swp-space-2);
}
.payment-form-body .form-label.required::after {
  content: " *";
  color: var(--swp-danger);
}
.payment-form-body .form-text {
  display: block;
  margin-top: var(--swp-space-2);
}
.payment-form-body .input-group {
  flex-wrap: nowrap;
}
.payment-form-body textarea.form-control {
  min-height: 80px;
  resize: vertical;
}
.payment-form-body .mb-4:last-child {
  margin-bottom: 0 !important;
}

.payment-methods-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: var(--swp-space-3);
}

.payment-method-card {
  position: relative;
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4);
  background: var(--swp-surface);
  border: 2px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  cursor: pointer;
  transition: all var(--swp-transition-fast);
}
.payment-method-card:hover {
  border-color: var(--swp-primary);
  background: var(--swp-primary-lighter);
}
.payment-method-card:has(.payment-method-input:checked) {
  border-color: var(--swp-primary);
  background: var(--swp-primary-lighter);
  box-shadow: var(--swp-ring-primary);
}
.payment-method-card:has(.payment-method-input:checked) .payment-method-check {
  opacity: 1;
  transform: scale(1);
}
.payment-method-card:has(.payment-method-input:checked) .payment-method-icon {
  background: var(--swp-primary);
  color: #ffffff;
}
.payment-method-card:has(.payment-method-input:focus-visible) {
  outline: 2px solid var(--swp-primary);
  outline-offset: 2px;
}

.payment-method-preferred {
  order: -1;
}

.payment-method-input {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}

.payment-method-content {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
  flex: 1;
}

.payment-method-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  background: var(--swp-gray-100);
  border-radius: var(--swp-radius-md);
  color: var(--swp-text-secondary);
  transition: all var(--swp-transition-fast);
}

.payment-method-name {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
}

.payment-method-badge {
  display: inline-flex;
  align-self: flex-start;
  padding: 2px 8px;
  font-size: 10px;
  font-weight: var(--swp-font-semibold);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-text-muted);
  background: var(--swp-gray-200);
  border-radius: var(--swp-radius-full);
}

.payment-method-badge-online {
  color: var(--swp-info);
  background: var(--swp-info-light);
}

.payment-method-badge-credit {
  color: var(--swp-success);
  background: var(--swp-success-light);
}

.payment-method-check {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  background: var(--swp-primary);
  color: #ffffff;
  border-radius: var(--swp-radius-full);
  opacity: 0;
  transform: scale(0.8);
  transition: all var(--swp-transition-fast);
}

.amount-field-wrapper {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-2);
  flex-wrap: wrap;
}
.amount-field-wrapper .form-label,
.amount-field-wrapper .form-section-label {
  margin-bottom: 0;
}

.amount-balance-hint {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  white-space: nowrap;
  padding: var(--swp-space-1) var(--swp-space-2);
  background: var(--swp-primary-lighter);
  border-radius: var(--swp-radius-sm);
}
.amount-balance-hint strong {
  color: var(--swp-primary);
  font-weight: var(--swp-font-semibold);
}

.capture-online-field {
  padding: var(--swp-space-4);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
}
.capture-online-field .form-check {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-2);
  padding-left: 0;
}
.capture-online-field .form-check-input {
  float: none;
  margin-left: 0;
  margin-top: 0;
  width: 2.5rem;
  height: 1.25rem;
  flex-shrink: 0;
}
.capture-online-field .form-check-label {
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
  margin-bottom: 0;
}
.capture-online-field .form-help {
  margin-left: 0;
  padding-left: calc(2.5rem + var(--swp-space-2));
}

[data-payment-method-select-target=captureOnline].d-none {
  display: none !important;
}

.client-name-link,
.invoice-id-link {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  color: var(--swp-primary);
  text-decoration: none;
  font-weight: var(--swp-font-semibold);
  transition: color var(--swp-transition-fast);
}
.client-name-link svg,
.invoice-id-link svg {
  opacity: 0.5;
  transition: opacity var(--swp-transition-fast);
}
.client-name-link:hover,
.invoice-id-link:hover {
  color: var(--swp-primary-dark);
  text-decoration: underline;
}
.client-name-link:hover svg,
.invoice-id-link:hover svg {
  opacity: 1;
}

.client-name-link {
  font-size: var(--swp-text-lg);
}

.invoice-id-link {
  font-size: var(--swp-text-sm);
  font-family: var(--swp-font-mono, monospace);
}

.payment-history-card {
  margin-top: var(--swp-space-4);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
}

.payment-history-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4) var(--swp-space-5);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border-light);
}

.payment-history-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  background: linear-gradient(135deg, var(--swp-warning-light, #fef3c7) 0%, rgba(245, 158, 11, 0.2) 100%);
  border-radius: var(--swp-radius-md);
  color: var(--swp-warning, #f59e0b);
}

.payment-history-title {
  flex: 1;
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0;
}

.payment-history-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 24px;
  height: 24px;
  padding: 0 var(--swp-space-2);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-muted);
  background: var(--swp-gray-200);
  border-radius: var(--swp-radius-full);
}

.payment-history-body {
  padding: var(--swp-space-4) var(--swp-space-5);
}

.payments-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
}

.payment-card {
  padding: var(--swp-space-3);
  background: var(--swp-gray-50);
  border-radius: var(--swp-radius-md);
  border-left: 3px solid var(--swp-gray-300);
  transition: all var(--swp-transition-fast);
}

.payment-card-captured {
  border-left-color: var(--swp-success);
  background: var(--swp-success-lighter, rgba(16, 185, 129, 0.05));
}

.payment-card-failed {
  border-left-color: var(--swp-danger);
  background: var(--swp-danger-lighter, rgba(239, 68, 68, 0.05));
}

.payment-card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--swp-space-2);
}

.payment-amount {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
}

.payment-card-body {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
}

.payment-detail {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-xs);
  color: var(--swp-text-muted);
}
.payment-detail svg {
  flex-shrink: 0;
  opacity: 0.7;
}

.payment-message {
  margin-top: var(--swp-space-2);
  padding-top: var(--swp-space-2);
  border-top: 1px solid var(--swp-border-light);
  font-size: var(--swp-text-xs);
  font-style: italic;
  color: var(--swp-text-secondary);
}

.btn-pay {
  padding: var(--swp-space-3) var(--swp-space-6);
  font-weight: var(--swp-font-semibold);
  box-shadow: var(--swp-shadow-primary);
}
.btn-pay:hover {
  box-shadow: var(--swp-shadow-primary-lg);
  transform: translateY(-1px);
}
.btn-pay:active {
  transform: translateY(0);
}

@media (width <= 768px) {
  .payment-container {
    padding: 0 var(--swp-space-4);
    padding-bottom: var(--swp-space-16);
  }
  .payment-header {
    margin-bottom: var(--swp-space-4);
    padding: var(--swp-space-4) 0;
  }
  .payment-header-icon {
    width: 48px;
    height: 48px;
  }
  .payment-header-title {
    font-size: 1.5rem;
  }
  .payment-methods-grid {
    grid-template-columns: 1fr;
  }
  .invoice-details-grid {
    grid-template-columns: 1fr;
  }
  .payment-form-footer {
    flex-direction: column-reverse;
    gap: var(--swp-space-3);
  }
  .payment-form-footer .btn {
    width: 100%;
    justify-content: center;
  }
  .amount-field-wrapper {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--swp-space-1);
  }
}
/**
 * Payments List Page Styles
 *
 * Minimal styling for the payments list page with KPI cards.
 * Most styles come from Tabler/Bootstrap - this file only adds specific customizations.
 */
.row-deck .card-sm {
  transition: all 0.2s ease-in-out;
}
.row-deck .card-sm:hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
}

/**
 * SolidInvoice - Users Page Styles
 *
 * Modern users list page with KPI cards and tabbed interface.
 * Uses design system tokens for consistent styling.
 */
.users-page {
  min-height: 100%;
}

/**
 * SolidInvoice - Profile Page Styles
 *
 * Styles for the user profile view and sidebar navigation.
 * Form pages (edit, change-password) use shared classes from _form-page.scss.
 * Includes: sidebar navigation, profile view, security status.
 */
.profile-sidebar {
  position: sticky;
  top: var(--swp-space-6);
}
@media (width <= 991.98px) {
  .profile-sidebar {
    position: static;
    margin-bottom: var(--swp-space-4);
  }
}

.profile-nav-card {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
  box-shadow: var(--swp-shadow-sm);
}

.profile-nav {
  display: flex;
  flex-direction: column;
}

.profile-nav-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-3) var(--swp-space-4);
  color: var(--swp-text-secondary);
  text-decoration: none;
  transition: all var(--swp-transition-base);
  border-left: 3px solid transparent;
  font-size: var(--swp-text-base);
}
.profile-nav-item:hover {
  background: var(--swp-gray-50);
  color: var(--swp-text-primary);
  text-decoration: none;
}
.profile-nav-item.active {
  background: var(--swp-primary-lighter);
  color: var(--swp-primary);
  border-left-color: var(--swp-primary);
  font-weight: var(--swp-font-semibold);
}

.profile-nav-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  color: currentcolor;
}

.profile-nav-text {
  flex: 1;
}

.profile-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-4);
  padding: var(--swp-space-6);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  margin-bottom: var(--swp-space-6);
  box-shadow: var(--swp-shadow-sm);
}
@media (width <= 767.98px) {
  .profile-header {
    flex-direction: column;
    text-align: center;
    padding: var(--swp-space-5);
  }
}

.profile-avatar {
  width: 64px;
  height: 64px;
  border-radius: var(--swp-radius-full);
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.2) 100%);
  color: var(--swp-primary);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.5rem;
  font-weight: var(--swp-font-bold);
  flex-shrink: 0;
  letter-spacing: -0.02em;
}

.profile-header-info {
  flex: 1;
}

.profile-name {
  font-size: 1.5rem;
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
  margin: 0;
  line-height: 1.3;
  letter-spacing: -0.025em;
}

.profile-email {
  font-size: var(--swp-text-base);
  color: var(--swp-text-muted);
  margin: var(--swp-space-1) 0 0;
}

.profile-section {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
  margin-bottom: var(--swp-space-6);
  box-shadow: var(--swp-shadow-sm);
  transition: box-shadow var(--swp-transition-base), border-color var(--swp-transition-base);
}
.profile-section:hover {
  border-color: var(--swp-border-dark);
}

.profile-section-header {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-3);
  padding: var(--swp-space-5) var(--swp-space-6);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border);
}

.profile-section-title {
  flex: 1;
  padding-top: var(--swp-space-1);
}

.profile-section-body {
  padding: var(--swp-space-6);
}

.profile-section-footer {
  padding: var(--swp-space-4) var(--swp-space-6);
  background: var(--swp-gray-50);
  border-top: 1px solid var(--swp-border);
  display: flex;
  justify-content: flex-end;
  gap: var(--swp-space-3);
}

.profile-detail-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--swp-space-5);
}
@media (width <= 767.98px) {
  .profile-detail-grid {
    grid-template-columns: 1fr;
    gap: var(--swp-space-4);
  }
}

.detail-item {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
}

.detail-item-wide {
  grid-column: 1/-1;
}

.detail-label {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  font-weight: var(--swp-font-medium);
  text-transform: uppercase;
  letter-spacing: 0.025em;
}

.detail-value {
  font-size: var(--swp-text-base);
  color: var(--swp-text-primary);
  font-weight: var(--swp-font-medium);
}

.security-status {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}

.security-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--swp-space-4);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  transition: border-color var(--swp-transition-base);
}
.security-item:hover {
  border-color: var(--swp-border-dark);
}

.security-item-info {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  flex: 1;
}

.security-item-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: var(--swp-radius-md);
  flex-shrink: 0;
}

.security-item-icon-success {
  background: rgba(var(--swp-success-rgb), 0.1);
  color: var(--swp-success);
}

.security-item-icon-warning {
  background: rgba(var(--swp-warning-rgb), 0.1);
  color: var(--swp-warning);
}

.security-item-content {
  flex: 1;
}

.security-item-title {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-0-5);
}

.security-item-description {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  margin: 0;
}

.security-item-action {
  flex-shrink: 0;
  margin-left: var(--swp-space-3);
}

.google-signin-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  background: var(--swp-surface);
  border-color: var(--swp-border);
  color: var(--swp-text-primary);
  transition: all var(--swp-transition-base);
}
.google-signin-btn:hover {
  background: var(--swp-gray-50);
  border-color: var(--swp-border-dark);
  color: var(--swp-text-primary);
  box-shadow: var(--swp-shadow-sm);
}
.google-signin-btn:active {
  transform: translateY(1px);
}
.google-signin-btn svg {
  flex-shrink: 0;
}

.password-requirements {
  background: rgba(var(--swp-info-rgb), 0.05);
  border: 1px solid rgba(var(--swp-info-rgb), 0.2);
  border-radius: var(--swp-radius-md);
  padding: var(--swp-space-4);
  margin-bottom: var(--swp-space-6);
}

.password-requirements-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-3);
}
.password-requirements-header .section-icon {
  width: 32px;
  height: 32px;
  background: rgba(var(--swp-info-rgb), 0.15);
  color: var(--swp-info);
}
.password-requirements-header h3 {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0;
}

.password-requirements-list {
  list-style: none;
  padding: 0;
  margin: 0;
}
.password-requirements-list li {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-secondary);
  padding: var(--swp-space-1) 0 var(--swp-space-1) var(--swp-space-6);
  position: relative;
}
.password-requirements-list li::before {
  content: "✓";
  position: absolute;
  left: var(--swp-space-2);
  color: var(--swp-info);
  font-weight: var(--swp-font-bold);
}

@media (width >= 768px) and (width <= 991.98px) {
  .profile-sidebar {
    margin-bottom: var(--swp-space-6);
  }
}
@media (width <= 767.98px) {
  .profile-section-footer {
    flex-direction: column;
  }
  .profile-section-footer .btn {
    width: 100%;
    justify-content: center;
  }
}
@media print {
  .profile-section-footer,
  .profile-sidebar {
    display: none !important;
  }
}
/**
 * SolidInvoice - Two-Factor Authentication Styles
 *
 * Modern 2FA configuration and login pages with elegant design.
 * Matches the profile page patterns and Tabler design system.
 */
.two-factor-settings .form-page-sections {
  gap: var(--swp-space-5);
}

.two-factor-section-content {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--swp-space-4);
  padding: var(--swp-space-5);
}
@media (width <= 767.98px) {
  .two-factor-section-content {
    flex-direction: column;
    align-items: flex-start;
    padding: var(--swp-space-4);
  }
}

.two-factor-section-info {
  flex: 1;
}

.two-factor-section-actions {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  flex-shrink: 0;
}
@media (width <= 767.98px) {
  .two-factor-section-actions {
    width: 100%;
    flex-direction: column;
  }
  .two-factor-section-actions .btn {
    width: 100%;
    justify-content: center;
  }
}

.totp-setup-container {
  padding: var(--swp-space-4) 0;
}

.setup-steps {
  display: flex;
  justify-content: center;
  gap: var(--swp-space-3);
  margin-bottom: var(--swp-space-6);
}
@media (width <= 575.98px) {
  .setup-steps {
    flex-direction: column;
    gap: var(--swp-space-2);
  }
}

.setup-steps .step {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-4);
  background: var(--swp-gray-100);
  border-radius: var(--swp-radius-md);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-muted);
  transition: all var(--swp-transition-base);
}
.setup-steps .step.active {
  background: var(--swp-primary-light);
  color: var(--swp-primary);
  box-shadow: var(--swp-shadow-sm);
}
.setup-steps .step .step-number {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  background: currentcolor;
  color: #ffffff;
  border-radius: var(--swp-radius-full);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-bold);
  opacity: 0.8;
}
.setup-steps .step.active .step-number {
  opacity: 1;
}

.qr-code-container {
  padding: var(--swp-space-6);
  background: var(--swp-gray-50);
  border-radius: var(--swp-radius-lg);
  margin-bottom: var(--swp-space-5);
}
@media (width <= 575.98px) {
  .qr-code-container {
    padding: var(--swp-space-4);
  }
}

.qr-code-image {
  max-width: 300px;
  width: 100%;
  height: auto;
  border: 2px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  background: #ffffff;
  padding: var(--swp-space-3);
  box-shadow: var(--swp-shadow-sm);
}

.manual-entry-details {
  text-align: center;
}
.manual-entry-details summary {
  cursor: pointer;
  color: var(--swp-primary);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  user-select: none;
  list-style: none;
  padding: var(--swp-space-2);
  border-radius: var(--swp-radius-md);
  transition: background-color var(--swp-transition-base);
}
.manual-entry-details summary:hover {
  background: rgba(var(--swp-primary-rgb), 0.05);
}
.manual-entry-details summary::-webkit-details-marker {
  display: none;
}
.manual-entry-details .manual-entry-content {
  margin-top: var(--swp-space-3);
  padding: var(--swp-space-4);
  background: #ffffff;
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
}
.manual-entry-details .manual-entry-code {
  display: block;
  padding: var(--swp-space-3);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  font-size: var(--swp-text-lg);
  font-family: var(--swp-font-mono);
  letter-spacing: 0.1em;
  word-break: break-all;
  color: var(--swp-text-primary);
}

.verification-form-container {
  padding: var(--swp-space-4) 0;
}

.verification-code-input {
  font-family: var(--swp-font-mono);
  letter-spacing: 0.5em !important;
  text-align: center;
  font-size: 1.5rem !important;
  padding: var(--swp-space-4) !important;
}
.verification-code-input::placeholder {
  letter-spacing: 0.3em;
  opacity: 0.5;
}
.verification-code-input:focus {
  letter-spacing: 0.5em !important;
}

.backup-codes-modal-content {
  padding: var(--swp-space-2) 0;
}

.backup-codes-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--swp-space-3);
  padding: var(--swp-space-4);
  background: var(--swp-gray-50);
  border-radius: var(--swp-radius-lg);
}
@media (width <= 575.98px) {
  .backup-codes-grid {
    grid-template-columns: 1fr;
    gap: var(--swp-space-2);
  }
}

.backup-code-item code {
  display: block;
  padding: var(--swp-space-3);
  background: #ffffff;
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  text-align: center;
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-medium);
  font-family: var(--swp-font-mono);
  letter-spacing: 0.05em;
  transition: all var(--swp-transition-base);
  color: var(--swp-text-primary);
}
.backup-code-item code:hover {
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
  transform: translateY(-2px);
}

.two-factor-login-page {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--swp-gray-50);
  padding: var(--swp-space-4);
}

.two-factor-login-card .card {
  border: none;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
  overflow: hidden;
}
.two-factor-login-card .card-status-top {
  height: 4px;
  background: var(--swp-primary);
}
.two-factor-login-card .card-body {
  padding: var(--swp-space-8) var(--swp-space-6);
}
@media (width <= 575.98px) {
  .two-factor-login-card .card-body {
    padding: var(--swp-space-6) var(--swp-space-4);
  }
}

.two-factor-avatar {
  width: 72px;
  height: 72px;
  margin: 0 auto var(--swp-space-4);
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.15) 100%);
  border-radius: var(--swp-radius-full);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--swp-primary);
  box-shadow: 0 4px 12px rgba(var(--swp-primary-rgb), 0.2);
}
.two-factor-avatar.two-factor-avatar-success {
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.2) 0%, rgba(var(--swp-success-rgb), 0.1) 100%);
  color: var(--swp-success);
  box-shadow: 0 4px 12px rgba(var(--swp-success-rgb), 0.2);
}

.two-factor-login-title {
  font-size: 1.5rem;
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
  margin-bottom: var(--swp-space-2);
  text-align: center;
}

.two-factor-login-description {
  font-size: var(--swp-text-base);
  color: var(--swp-text-muted);
  margin-bottom: var(--swp-space-6);
  text-align: center;
}

.two-factor-code-input {
  font-family: var(--swp-font-mono);
  letter-spacing: 0.5em;
  text-align: center;
  font-size: 1.75rem !important;
  padding: var(--swp-space-4) var(--swp-space-3) !important;
  border: 2px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  transition: all var(--swp-transition-base);
}
.two-factor-code-input::placeholder {
  letter-spacing: 0.3em;
  opacity: 0.4;
}
.two-factor-code-input:focus {
  border-color: var(--swp-primary);
  box-shadow: 0 0 0 4px rgba(var(--swp-primary-rgb), 0.1);
  letter-spacing: 0.5em !important;
}
@media (width <= 575.98px) {
  .two-factor-code-input {
    font-size: 1.5rem !important;
    padding: var(--swp-space-3) !important;
  }
}

.two-factor-form-hint {
  text-align: center;
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  margin-top: var(--swp-space-2);
}
.two-factor-form-hint a {
  color: var(--swp-primary);
  text-decoration: none;
  font-weight: var(--swp-font-medium);
}
.two-factor-form-hint a:hover {
  text-decoration: underline;
}

.trust-device-option {
  padding: var(--swp-space-3);
  background: rgba(var(--swp-info-rgb), 0.05);
  border: 1px solid rgba(var(--swp-info-rgb), 0.2);
  border-radius: var(--swp-radius-md);
  margin: var(--swp-space-4) 0;
}
.trust-device-option .form-check {
  margin: 0;
}
.trust-device-option .form-check-input {
  margin-top: 0.15em;
}
.trust-device-option .form-check-label {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-primary);
  font-weight: var(--swp-font-medium);
  cursor: pointer;
}

.alternative-methods {
  padding-top: var(--swp-space-4);
  margin-top: var(--swp-space-4);
  border-top: 1px solid var(--swp-border);
  text-align: center;
}
.alternative-methods .alternative-methods-title {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  margin-bottom: var(--swp-space-3);
}
.alternative-methods .alternative-methods-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}
.alternative-methods .btn {
  width: 100%;
  justify-content: center;
}

.two-factor-security-notice {
  text-align: center;
  margin-top: var(--swp-space-4);
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-2);
}

.email-resend-section {
  text-align: center;
  margin-top: var(--swp-space-4);
  padding: var(--swp-space-3);
  background: rgba(var(--swp-info-rgb), 0.05);
  border-radius: var(--swp-radius-md);
  border: 1px solid rgba(var(--swp-info-rgb), 0.2);
}
.email-resend-section .resend-text {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-secondary);
  margin-bottom: var(--swp-space-2);
}
.email-resend-section .resend-link {
  color: var(--swp-primary);
  text-decoration: none;
  font-weight: var(--swp-font-medium);
}
.email-resend-section .resend-link:hover {
  text-decoration: underline;
}
.email-resend-section .expiry-warning {
  font-size: var(--swp-text-xs);
  color: var(--swp-warning);
  margin-top: var(--swp-space-2);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-1);
}

@media (width <= 767.98px) {
  .totp-setup-container {
    padding: var(--swp-space-2) 0;
  }
  .setup-steps {
    margin-bottom: var(--swp-space-4);
  }
  .qr-code-container {
    padding: var(--swp-space-4);
    margin-bottom: var(--swp-space-4);
  }
  .qr-code-image {
    max-width: 250px;
  }
  .verification-form-container {
    padding: var(--swp-space-3) 0;
  }
  .backup-codes-grid {
    padding: var(--swp-space-3);
  }
}
@media (width <= 575.98px) {
  .qr-code-image {
    max-width: 200px;
  }
  .two-factor-login-card .card-body {
    padding: var(--swp-space-6) var(--swp-space-4);
  }
  .two-factor-avatar {
    width: 64px;
    height: 64px;
  }
  .two-factor-login-title {
    font-size: 1.25rem;
  }
  .two-factor-login-description {
    font-size: var(--swp-text-sm);
  }
}
.backup-code-item code:focus-visible,
.manual-entry-details summary:focus-visible {
  outline: 2px solid var(--swp-primary);
  outline-offset: 2px;
}

@media (prefers-contrast: high) {
  .qr-code-image {
    border-width: 3px;
  }
  .backup-code-item code {
    border-width: 2px;
  }
}
@media (prefers-reduced-motion: reduce) {
  .backup-code-item code,
  .setup-steps .step,
  .manual-entry-details summary,
  .two-factor-code-input {
    transition: none;
  }
}
/**
 * SolidInvoice - Notifications Page Styles
 *
 * Notification preferences page with card-based layout and category grouping.
 * Page container/header/footer use shared form-page-* classes from _form-page.scss.
 * This file contains only notification-specific styles.
 */
.integration-management-card {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  margin-bottom: var(--swp-space-6);
  box-shadow: var(--swp-shadow-sm);
}

.integration-management-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-4);
  padding: var(--swp-space-5);
}

.integration-management-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  background: linear-gradient(135deg, rgba(var(--swp-primary-rgb), 0.15) 0%, rgba(var(--swp-primary-rgb), 0.05) 100%);
  border-radius: var(--swp-radius-md);
  color: var(--swp-primary);
  flex-shrink: 0;
}

.integration-management-info {
  flex: 1;
}

.integration-management-title {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-1);
  line-height: 1.4;
}

.integration-management-description {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  margin: 0;
  line-height: 1.5;
}

.integration-management-list {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  flex-wrap: wrap;
  padding: 0 var(--swp-space-5) var(--swp-space-5);
  border-top: 1px solid var(--swp-border);
  padding-top: var(--swp-space-4);
}

.integration-badge {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1-5);
  padding: var(--swp-space-2) var(--swp-space-3);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-secondary);
  white-space: nowrap;
}
.integration-badge svg {
  flex-shrink: 0;
  color: var(--swp-primary);
}

.notification-groups {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--swp-space-6);
  margin-bottom: var(--swp-space-6);
}

.notification-group {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
}

.group-title {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-secondary);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin: 0 0 var(--swp-space-2);
}
.group-title svg {
  color: var(--swp-primary);
  flex-shrink: 0;
}

.notification-cards {
  display: grid;
  gap: var(--swp-space-3);
}

.notification-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--swp-space-4);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  padding: var(--swp-space-4) var(--swp-space-4);
  transition: all var(--swp-transition-base);
}
.notification-card:hover {
  border-color: var(--swp-border-dark);
  box-shadow: var(--swp-shadow-sm);
}
.notification-card:focus-within {
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
}

.notification-card-content {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  flex: 1;
  min-width: 0;
}

.notification-card-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.08) 100%);
  border-radius: var(--swp-radius-md);
  color: var(--swp-primary);
  flex-shrink: 0;
}

.notification-card-info {
  flex: 1;
  min-width: 0;
}

.notification-title {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-0-5);
  line-height: 1.4;
}

.notification-description {
  font-size: var(--swp-text-xs);
  color: var(--swp-text-muted);
  margin: 0;
  line-height: 1.4;
}

.notification-card-channels {
  flex-shrink: 0;
}

.notification-card-channels .form-check {
  margin: 0;
  padding: 0;
  min-height: auto;
  position: relative;
}
.notification-card-channels .form-check .form-check-input {
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
  pointer-events: none;
}
.notification-card-channels .form-check .form-check-input:focus + .form-check-label {
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
}
.notification-card-channels .form-check .form-check-label {
  display: inline-flex;
  align-items: center;
  padding: var(--swp-space-1-5) var(--swp-space-3);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-sm);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-secondary);
  cursor: pointer;
  transition: all var(--swp-transition-base);
  margin: 0;
  white-space: nowrap;
  user-select: none;
}
.notification-card-channels .form-check .form-check-label:hover {
  background: var(--swp-surface);
  border-color: var(--swp-primary);
  color: var(--swp-text-primary);
}
.notification-card-channels .form-check .form-check-input:checked + .form-check-label {
  background: var(--swp-primary-lighter);
  border-color: var(--swp-primary);
  color: var(--swp-primary);
  font-weight: var(--swp-font-semibold);
}

@media (width <= 767.98px) {
  .integration-management-header {
    flex-direction: column;
    align-items: stretch;
    gap: var(--swp-space-3);
  }
  .integration-management-header .btn {
    width: 100%;
    justify-content: center;
  }
  .integration-management-list {
    padding: var(--swp-space-3) var(--swp-space-4) var(--swp-space-4);
  }
  .notification-groups {
    gap: var(--swp-space-5);
  }
  .group-title {
    font-size: var(--swp-text-xs);
  }
  .group-title svg {
    width: 16px;
    height: 16px;
  }
  .notification-card {
    flex-direction: column;
    align-items: stretch;
    gap: var(--swp-space-3);
    padding: var(--swp-space-3);
  }
  .notification-card-content {
    gap: var(--swp-space-2-5);
  }
  .notification-card-icon {
    width: 32px;
    height: 32px;
  }
  .notification-card-icon svg {
    width: 16px;
    height: 16px;
  }
  .notification-title {
    font-size: var(--swp-text-sm);
  }
  .notification-description {
    font-size: var(--swp-text-xs);
  }
  .notification-card-channels .notification-channels-list {
    flex-direction: column;
    gap: var(--swp-space-1-5);
  }
  .notification-card-channels .form-check .form-check-label {
    width: 100%;
    padding: var(--swp-space-2-5) var(--swp-space-3);
    font-size: var(--swp-text-sm);
    min-height: 44px;
  }
  .notifications-empty-state {
    padding: var(--swp-space-8) var(--swp-space-4);
  }
  .notifications-empty-state .empty-state-icon {
    width: 64px;
    height: 64px;
  }
  .notifications-empty-state .empty-state-icon svg {
    width: 48px;
    height: 48px;
  }
  .notifications-empty-state h3 {
    font-size: var(--swp-text-lg);
  }
  .notifications-empty-state p {
    font-size: var(--swp-text-sm);
  }
  .notifications-empty-state .btn {
    width: 100%;
  }
}
@media (width >= 768px) {
  .notification-groups {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media print {
  .notification-card {
    break-inside: avoid;
  }
}
/**
 * SolidInvoice - Subscription Pages Styles
 *
 * Billing, plan-picker, and subscription-state pages (pricing, overview,
 * change, cancelled, paused, pending, trial expired).
 *
 * All values are `--swp-*` design tokens. State is carried by a soft icon
 * medallion + heading, never by a decorative accent stripe, a colored glow, or
 * a looping animation. Colour stays on the brand: Trust Green is the only
 * accent; there is no Tabler blue and no amber-by-accident here.
 */
.subscription-page {
  min-height: calc(100vh - var(--swp-space-24));
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--swp-space-12) var(--swp-space-4);
}

.subscription-container {
  max-width: 640px;
  width: 100%;
  text-align: center;
  padding: var(--swp-space-10);
  background: var(--swp-surface);
  border: none;
  border-radius: var(--swp-radius-xl);
  box-shadow: var(--swp-shadow-xl);
  animation: subscription-fade-in 0.3s ease-out;
}

@keyframes subscription-fade-in {
  from {
    opacity: 0;
    transform: translateY(10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.subscription-page-header {
  background: var(--swp-surface);
  border-bottom: 1px solid var(--swp-border);
  box-shadow: var(--swp-shadow-sm);
}
.subscription-page-header .h4 {
  font-weight: 600;
  color: var(--swp-text-primary);
}

.subscription-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  border-radius: var(--swp-radius-xl);
  margin: 0 auto var(--swp-space-8);
}
.subscription-icon svg {
  width: 32px;
  height: 32px;
}

.subscription-icon-warning {
  background: var(--swp-warning-light);
  color: var(--swp-warning);
}

.subscription-icon-danger {
  background: var(--swp-danger-light);
  color: var(--swp-danger);
}

.subscription-icon-info {
  background: var(--swp-info-light);
  color: var(--swp-info);
}

.subscription-icon-paused {
  background: var(--swp-gray-100);
  color: var(--swp-text-secondary);
}

.subscription-title {
  font-size: 1.75rem;
  font-weight: 700;
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-3);
  letter-spacing: -0.02em;
  line-height: 1.2;
}

.subscription-subtitle {
  font-size: var(--swp-text-lg);
  color: var(--swp-text-secondary);
  margin: 0 0 var(--swp-space-10);
  line-height: 1.7;
}

.subscription-benefits {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  padding: var(--swp-space-6);
  margin-bottom: var(--swp-space-8);
  text-align: left;
  box-shadow: var(--swp-shadow-xs);
}
.subscription-benefits h3 {
  font-size: var(--swp-text-md);
  font-weight: 600;
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-4);
}
.subscription-benefits ul {
  list-style: none;
  padding: 0;
  margin: 0;
}
.subscription-benefits li {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-2-5) 0;
  color: var(--swp-text-secondary);
  font-size: var(--swp-text-base);
}
.subscription-benefits li svg {
  width: 20px;
  height: 20px;
  color: var(--swp-success);
  flex-shrink: 0;
}

.subscription-cancelled-page .subscription-benefits li svg {
  color: var(--swp-text-muted);
}

.subscription-actions {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
  margin-bottom: var(--swp-space-4);
}
.subscription-actions .btn-lg {
  padding: var(--swp-space-3-5) var(--swp-space-6);
  font-size: var(--swp-text-md);
  font-weight: 600;
  box-shadow: var(--swp-shadow-sm);
  transition: box-shadow var(--swp-transition-base);
}
.subscription-actions .btn-lg svg {
  width: 20px;
  height: 20px;
}
.subscription-actions .btn-lg:hover {
  box-shadow: var(--swp-shadow-md);
}
.subscription-actions .btn-lg:focus-visible {
  outline: none;
  box-shadow: var(--swp-shadow-md), var(--swp-ring-primary);
}
.subscription-actions .btn-ghost svg {
  width: 18px;
  height: 18px;
}
.subscription-actions .btn-ghost:hover {
  background: var(--swp-gray-50);
}
.subscription-actions .btn-ghost:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
}

.subscription-paused-page .subscription-benefits li svg {
  color: var(--swp-text-secondary);
}

.alert-banner {
  border-radius: 0;
  border-left: 0;
  border-right: 0;
  border-top: 0;
  margin-bottom: 0;
  padding: var(--swp-space-3) var(--swp-space-4);
}
.alert-banner .d-flex {
  align-items: center;
}
.alert-banner .alert-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.alert-banner .btn-sm {
  white-space: nowrap;
  flex-shrink: 0;
}
.alert-banner.alert-warning {
  background: var(--swp-warning-lighter);
  border-bottom-color: var(--swp-warning-light);
  color: var(--swp-text-primary);
}
.alert-banner.alert-warning .btn-warning {
  background: var(--swp-warning);
  color: var(--swp-text-inverse);
  border: none;
}
.alert-banner.alert-warning .btn-warning:hover {
  background: var(--swp-warning-hover);
}
.alert-banner.alert-danger {
  background: var(--swp-danger-lighter);
  border-bottom-color: var(--swp-danger-light);
  color: var(--swp-text-primary);
}
.alert-banner.alert-danger .btn-danger {
  background: var(--swp-danger);
  color: var(--swp-text-inverse);
  border: none;
}
.alert-banner.alert-danger .btn-danger:hover {
  background: var(--swp-danger-hover);
}

.subscription-pricing-page .subscription-container {
  max-width: 1100px;
  text-align: center;
}

.plan-card {
  position: relative;
  overflow: hidden;
  transition: box-shadow var(--swp-transition-base), border-color var(--swp-transition-base);
}
.plan-card:hover {
  box-shadow: var(--swp-shadow-md);
}
.plan-card > .card-body {
  padding-top: var(--swp-space-9);
}

.plan-card-recommended {
  border-width: 2px;
  box-shadow: var(--swp-shadow-md);
}
.plan-card-recommended:hover {
  box-shadow: var(--swp-shadow-xl);
}

.plan-card-banner {
  position: absolute;
  top: 0;
  inset-inline: 0;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-1);
  padding: var(--swp-space-2) var(--swp-space-3);
  font-size: var(--swp-text-xs);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-text-inverse);
  background: var(--swp-primary);
}
.plan-card-banner svg {
  flex-shrink: 0;
}

.plan-card-free {
  background: var(--swp-gray-50);
  border: 1px dashed var(--swp-border);
  box-shadow: none;
  transition: border-color var(--swp-transition-base), background var(--swp-transition-base);
}
.plan-card-free:hover {
  border-color: var(--swp-primary);
  background: var(--swp-surface);
}
.plan-card-free .card-body {
  padding: var(--swp-space-4) var(--swp-space-6);
}
.plan-card-free .plan-card-features {
  font-size: var(--swp-text-sm);
}
.plan-card-free .plan-card-features li {
  margin-bottom: var(--swp-space-1);
}

.plan-card-free-header {
  flex-shrink: 0;
  min-width: 0;
}

.plan-card-free-cta {
  flex-shrink: 0;
}

.plan-card-features-inline {
  display: flex;
  flex-wrap: wrap;
  gap: var(--swp-space-2) var(--swp-space-4);
  font-size: var(--swp-text-sm);
}
.plan-card-features-inline li {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  white-space: nowrap;
}

.plan-card-price {
  font-size: var(--swp-text-4xl);
  line-height: 1.1;
}

.plan-card-interval {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-normal);
}

.plan-card-features {
  text-align: start;
}

.subscription-coupon {
  background: var(--swp-primary-lighter);
  border: 1px solid var(--swp-primary-light);
  border-radius: var(--swp-radius-lg);
}
.subscription-coupon .badge {
  background: var(--swp-primary);
  color: var(--swp-text-inverse);
}

.subscription-welcome-page .subscription-container {
  max-width: 720px;
}

.welcome-plan {
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  box-shadow: var(--swp-shadow-xs);
}
.welcome-plan .card-body {
  padding: var(--swp-space-6);
}
.welcome-plan .plan-card-features {
  margin-bottom: 0;
}

.welcome-plan-pricing {
  white-space: nowrap;
}

.welcome-plan-price {
  font-size: var(--swp-text-2xl);
  font-weight: 700;
  line-height: 1.1;
}

.welcome-reassure-item {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-2-5);
  height: 100%;
  padding: var(--swp-space-4);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
}
.welcome-reassure-item svg {
  flex-shrink: 0;
  margin-top: var(--swp-space-0-5);
  color: var(--swp-success);
}

@media (width <= 767.98px) {
  .subscription-page {
    padding: var(--swp-space-6) var(--swp-space-3);
  }
  .subscription-page-header .d-flex {
    flex-direction: column;
    align-items: flex-start !important;
    gap: var(--swp-space-3);
  }
  .subscription-page-header .btn-group {
    width: 100%;
  }
  .subscription-page-header .btn-group .btn {
    width: 100%;
  }
  .subscription-container {
    padding: var(--swp-space-6);
  }
  .subscription-icon {
    width: 48px;
    height: 48px;
  }
  .subscription-icon svg {
    width: 28px;
    height: 28px;
  }
  .subscription-title {
    font-size: 1.375rem;
  }
  .subscription-subtitle {
    font-size: var(--swp-text-md);
  }
  .subscription-benefits {
    padding: var(--swp-space-4);
  }
  .subscription-actions .btn {
    width: 100%;
  }
  .alert-banner .d-flex {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--swp-space-3);
  }
  .alert-banner .btn-sm {
    width: 100%;
  }
}
@media (width >= 768px) and (width <= 991.98px) {
  .subscription-container {
    max-width: 600px;
    padding: var(--swp-space-8);
  }
}
@media (prefers-reduced-motion: reduce) {
  .subscription-container {
    animation: none;
  }
  .plan-card,
  .plan-card-free,
  .subscription-actions .btn-lg {
    transition: none;
  }
}
@media print {
  .subscription-page {
    padding: 0;
  }
  .subscription-container {
    box-shadow: none;
    border: 1px solid var(--swp-border);
  }
  .subscription-actions {
    display: none;
  }
  .alert-banner {
    display: none;
  }
}
/**
 * Onboarding Checklist - Dashboard widget
 *
 * The first component a new user meets. Priorities, in order:
 *   1. Convey state (todo / done / hovered / focused). Never decoration.
 *   2. Stay on the SolidInvoice design system - `--swp-*` tokens only.
 *   3. Read correctly whether a row is an <a> (actionable) or a <span> (done).
 *
 * Structure comes from Tabler (`card`, `card-stamp`, `card-link-pop`,
 * `offcanvas`, `visually-hidden`). This file only adds what Tabler does not
 * already provide - it does not restate or fight it.
 */
.card.card-active {
  border-color: var(--swp-success);
  background: var(--swp-success-lighter);
}

.card-stamp-icon {
  opacity: 0.15;
}

.checklist-items-wrapper {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2-5);
}

.checklist-item {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  text-decoration: none;
  color: inherit;
  transition: color var(--swp-duration-fast) var(--swp-ease-out), background-color var(--swp-duration-fast) var(--swp-ease-out), border-color var(--swp-duration-fast) var(--swp-ease-out), box-shadow var(--swp-duration-fast) var(--swp-ease-out);
}
.checklist-item:not(.completed):is(:hover, :focus-visible) {
  background: var(--swp-primary-lighter);
  border-color: var(--swp-primary);
}
.checklist-item:not(.completed):is(:hover, :focus-visible) .checklist-item-action {
  color: var(--swp-primary);
}
.checklist-item:not(.completed):focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
}
.checklist-item.completed {
  background: var(--swp-success-lighter);
  border-color: var(--swp-success-light);
  cursor: default;
}
.checklist-item.completed .item-name {
  color: var(--swp-text-muted);
  font-weight: var(--swp-font-normal);
  text-decoration: line-through;
}
.checklist-item.completed .item-icon {
  color: var(--swp-text-light);
}
.checklist-item.completed .checklist-item-action {
  display: none;
}

.checklist-item-icon {
  width: 20px;
  height: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  margin-top: var(--swp-space-0-5);
  color: var(--swp-success);
}

.checklist-item:not(.completed) .checklist-item-icon {
  color: var(--swp-gray-400);
}

.checklist-item-content {
  flex: 1;
  min-width: 0;
}

.checklist-item-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-1);
}

.checklist-item .item-icon {
  display: flex;
  align-items: center;
  color: var(--swp-primary);
}

.checklist-item .item-name {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}

.checklist-item-description {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  margin: 0;
  line-height: var(--swp-leading-normal);
}

.checklist-item-action {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  flex-shrink: 0;
  margin-top: var(--swp-space-0-5);
  color: var(--swp-text-light);
}

.onboarding-offcanvas {
  width: 420px;
  max-width: 100%;
}

.onboarding-offcanvas .offcanvas-body .card {
  border: 1px solid var(--swp-border-light);
  background: var(--swp-primary-lighter);
  box-shadow: var(--swp-shadow-sm);
}

.onboarding-progress-label {
  min-width: 3rem;
}

@media (prefers-reduced-motion: reduce) {
  .checklist-item {
    transition: none;
  }
}
/**
 * Onboarding Wizard - the first-run flow (/onboarding)
 *
 * This is the first screen every new user meets: post-install and post-signup,
 * a user with no company is redirected here to create their company, an
 * optional first client, and a first invoice.
 *
 * It used to be styled with inline \3c style> blocks that contradicted the design
 * system wholesale - Bootstrap blue (#066fd1) instead of Trust Green, gradients
 * on the canvas / step icon / badge, a 3px `border-left` side-stripe on the
 * benefits box (a hard ban), and a bounce/elastic celebration with an infinite
 * pulse and no reduced-motion fallback. This file replaces all of it with
 * `--swp-*` tokens, flat surfaces, and ease-out motion.
 *
 * Everything is scoped under `.onboarding-container` because the class names
 * (`step-icon`, `step-benefits`, `welcome-badge`, ...) are generic and used
 * nowhere else - scoping keeps them from leaking into the rest of the app.
 *
 * Structure (Bootstrap grid, `card`, `btn`, `form-control`, `progress`) comes
 * from Tabler; this file only styles the custom wizard chrome.
 */
.onboarding-container {
  background: var(--swp-body-bg);
}
.onboarding-container .onboarding-progress {
  box-shadow: var(--swp-shadow-xs);
}
.onboarding-container .step-indicator {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
}
.onboarding-container .step-number {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  border-radius: var(--swp-radius-full);
  background: var(--swp-gray-100);
  color: var(--swp-text-muted);
  transition: background-color var(--swp-duration-slow) var(--swp-ease-out), color var(--swp-duration-slow) var(--swp-ease-out), box-shadow var(--swp-duration-slow) var(--swp-ease-out);
}
.onboarding-container .step-indicator.active .step-number {
  background: var(--swp-primary-light);
  color: var(--swp-primary-dark);
}
.onboarding-container .step-indicator.current .step-number {
  background: var(--swp-primary);
  color: var(--swp-text-inverse);
  box-shadow: var(--swp-ring-primary);
}
.onboarding-container .step-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-muted);
  transition: color var(--swp-duration-slow) var(--swp-ease-out);
}
.onboarding-container .step-indicator.active .step-label,
.onboarding-container .step-indicator.current .step-label {
  color: var(--swp-primary-dark);
}
.onboarding-container .step-indicator.current .step-label {
  font-weight: var(--swp-font-semibold);
}
.onboarding-container .step-connector {
  flex: 1;
  height: 2px;
  margin: 0 var(--swp-space-4);
  background: var(--swp-border);
  transition: background-color var(--swp-duration-slow) var(--swp-ease-out);
}
.onboarding-container .step-connector.completed {
  background: var(--swp-primary);
}
.onboarding-container .onboarding-step-card {
  padding: var(--swp-space-12);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-xl);
  box-shadow: var(--swp-shadow-sm);
}
.onboarding-container .step-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 4rem;
  height: 4rem;
  margin: 0 auto var(--swp-space-6);
  border-radius: var(--swp-radius-full);
  background: var(--swp-primary-light);
  color: var(--swp-primary);
}
.onboarding-container .welcome-section {
  margin-bottom: var(--swp-space-8);
  text-align: center;
}
.onboarding-container .welcome-badge {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-4);
  padding: var(--swp-space-2) var(--swp-space-4);
  border-radius: var(--swp-radius-full);
  background: var(--swp-primary-light);
  color: var(--swp-primary-dark);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
}
.onboarding-container .step-benefits {
  margin-bottom: var(--swp-space-6);
  padding: var(--swp-space-5);
  background: var(--swp-primary-lighter);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
}
.onboarding-container .step-benefits ul {
  margin: 0;
  padding-left: var(--swp-space-5);
  color: var(--swp-text-secondary);
}
.onboarding-container .step-benefits li + li {
  margin-top: var(--swp-space-2);
}
.onboarding-container .celebration-icon {
  display: flex;
  justify-content: center;
}
.onboarding-container .success-checkmark {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 6rem;
  height: 6rem;
  border-radius: var(--swp-radius-full);
  background: var(--swp-success-light);
  color: var(--swp-success-dark);
  animation: onboarding-celebrate var(--swp-duration-slow) var(--swp-ease-out) both;
}
.onboarding-container .onboarding-tip {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
  text-align: left;
  color: var(--swp-text-secondary);
}
.onboarding-container .onboarding-tip svg {
  flex-shrink: 0;
  margin-top: var(--swp-space-0-5);
  color: var(--swp-secondary-dark);
}
@media (width <= 768px) {
  .onboarding-container .onboarding-step-card {
    padding: var(--swp-space-8) var(--swp-space-6);
  }
  .onboarding-container .step-connector {
    margin: 0 var(--swp-space-2);
  }
}

@keyframes onboarding-celebrate {
  from {
    opacity: 0;
    transform: scale(0.9);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}
@media (prefers-reduced-motion: reduce) {
  .onboarding-container .step-number,
  .onboarding-container .step-label,
  .onboarding-container .step-connector {
    transition: none;
  }
  .onboarding-container .success-checkmark {
    animation: none;
  }
}
/**
 * SolidInvoice Design System - Money Display
 *
 * The signature component (DESIGN.md section 5). Every currency value in the
 * application renders through `.money`; it is the single source of truth for
 * money display, and raw `{{ amount }}` rendering is prohibited.
 *
 * Contract:
 *   <span class="money">
 *     <span class="money-currency">USD</span>
 *     <strong class="money-amount">1,234.56</strong>
 *   </span>
 *
 * Modifiers (on the `.money` root, combinable):
 *   .money--paid      Amount in AA-safe success. ONLY valid alongside an
 *                     explicit "Paid" label (the Money-Color Rule).
 *   .money--overdue   Amount in AA-safe danger. Same labelling rule.
 *   .money--total     Weight 600, amount one size step up.
 *   (none)            Neutral - the default and the common case.
 *
 * The component never sets its own font-size. It inherits from context, so the
 * same markup is correct inline in a table cell, in a heading, and at
 * `.stat-value` scale in the dashboard hero tiles. Only `.money--total` steps
 * the amount, and it steps relatively so the result is right at every base.
 */
.money {
  display: inline-flex;
  align-items: baseline;
  gap: var(--swp-space-1);
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

.money-currency {
  color: var(--swp-money-currency);
}

.money-amount {
  color: var(--swp-money-neutral);
  font-weight: var(--swp-font-medium);
}

.money--paid .money-amount {
  color: var(--swp-money-paid);
}

.money--overdue .money-amount {
  color: var(--swp-money-overdue);
}

.money--total .money-amount {
  font-size: calc(1em * var(--swp-money-total-scale));
  font-weight: var(--swp-font-semibold);
}

.money--total .money-currency {
  font-size: var(--swp-money-currency-scale);
}

/**
 * SolidInvoice Design System - Status Chip
 *
 * The one status chip (DESIGN.md section 5). Every status word in the
 * application renders through `.status-chip`, on a five-value semantic set:
 * neutral, info, success, warning, danger.
 *
 * Contract:
 *   <span class="status-chip status-chip--success">Paid</span>
 *
 * Every variant is an AA-safe text colour on its own tint:
 *   neutral   gray-100      / text-secondary   6.92:1
 *   info      info-light    / info-dark        5.49:1
 *   success   success-light / success-dark     4.84:1
 *   warning   warning-light / warning-dark     6.37:1
 *   danger    danger-light  / danger-dark      5.30:1
 *
 * The tint itself measures 1.05-1.22:1 against the page. That is deliberate.
 * The chip's meaning is carried by its text label, so the pill is decoration
 * around legible text, not a control whose boundary must be perceivable.
 *
 * A chip is never interactive: no shadow, no border, no hover, no transition,
 * and it is never a focus target. A chip is also never truncated - a
 * half-shown status is worse than a wider column.
 */
.status-chip {
  display: inline-flex;
  align-items: center;
  padding: var(--swp-space-0-5) var(--swp-space-2-5);
  border-radius: var(--swp-radius-full);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-medium);
  line-height: 1.25;
  letter-spacing: 0;
  white-space: nowrap;
  background-color: var(--swp-gray-100);
  color: var(--swp-text-secondary);
}
.status-chip--neutral {
  background-color: var(--swp-gray-100);
  color: var(--swp-text-secondary);
}
.status-chip--info {
  background-color: var(--swp-info-light);
  color: var(--swp-info-dark);
}
.status-chip--success {
  background-color: var(--swp-success-light);
  color: var(--swp-success-dark);
}
.status-chip--warning {
  background-color: var(--swp-warning-light);
  color: var(--swp-warning-dark);
}
.status-chip--danger {
  background-color: var(--swp-danger-light);
  color: var(--swp-danger-dark);
}

/**
 * SolidInvoice Design System - Layout Index
 *
 * Layout pattern styles that extend Tabler/Bootstrap.
 * Only add layout files for patterns not covered by the frameworks.
 *
 * Note: Most layout styling comes from Tabler (page-wrapper, page-header, etc.)
 * This file imports only custom extensions when needed.
 */
/**
 * SolidInvoice — Vertical Navbar (Sidebar)
 *
 * Tabler ships `.navbar-vertical.navbar-dark` as a heavy slate panel (gray-800)
 * that PRODUCT.md names as the AdminLTE anti-reference the rewrite is escaping.
 * This file recolors the sidebar one shade lighter (gray-700) so it still
 * carries presence, but uses tinted neutrals and a green-tinted active state
 * to differentiate it from generic Tabler admin output.
 *
 * Selector specificity targets `.navbar-vertical` so Tabler's mobile-collapse,
 * drawer, and dropdown rules continue to apply.
 */
.navbar.navbar-vertical,
.navbar.navbar-vertical.navbar-dark {
  background-color: var(--swp-gray-700);
  color: var(--swp-gray-300);
  border-right: 1px solid var(--swp-gray-800);
  box-shadow: none;
}
.navbar.navbar-vertical .navbar-brand,
.navbar.navbar-vertical.navbar-dark .navbar-brand {
  color: var(--swp-gray-50);
  font-weight: var(--swp-font-semibold);
}
.navbar.navbar-vertical .navbar-brand-autodark,
.navbar.navbar-vertical.navbar-dark .navbar-brand-autodark {
  filter: none;
}
.navbar.navbar-vertical .nav-link,
.navbar.navbar-vertical.navbar-dark .nav-link {
  color: var(--swp-gray-300);
  border-radius: var(--swp-radius-md);
  transition: background-color var(--swp-transition-fast), color var(--swp-transition-fast);
}
.navbar.navbar-vertical .nav-link .nav-link-icon,
.navbar.navbar-vertical .nav-link .nav-link-title,
.navbar.navbar-vertical.navbar-dark .nav-link .nav-link-icon,
.navbar.navbar-vertical.navbar-dark .nav-link .nav-link-title {
  color: inherit;
}
.navbar.navbar-vertical .nav-link:hover,
.navbar.navbar-vertical.navbar-dark .nav-link:hover {
  background-color: var(--swp-gray-600);
  color: var(--swp-gray-50);
}
.navbar.navbar-vertical .nav-link:focus-visible,
.navbar.navbar-vertical.navbar-dark .nav-link:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
  color: var(--swp-gray-50);
}
.navbar.navbar-vertical .nav-link.active,
.navbar.navbar-vertical.navbar-dark .nav-link.active {
  background-color: var(--swp-primary-light);
  color: var(--swp-primary-dark);
  font-weight: var(--swp-font-semibold);
}
.navbar.navbar-vertical .nav-link.active .nav-link-icon,
.navbar.navbar-vertical .nav-link.active .nav-link-title,
.navbar.navbar-vertical.navbar-dark .nav-link.active .nav-link-icon,
.navbar.navbar-vertical.navbar-dark .nav-link.active .nav-link-title {
  color: var(--swp-primary-dark);
}
.navbar.navbar-vertical .nav-link.active:hover,
.navbar.navbar-vertical.navbar-dark .nav-link.active:hover {
  background-color: var(--swp-primary-light);
  color: var(--swp-primary-dark);
}
.navbar.navbar-vertical .nav-subtitle,
.navbar.navbar-vertical .nav-header,
.navbar.navbar-vertical.navbar-dark .nav-subtitle,
.navbar.navbar-vertical.navbar-dark .nav-header {
  color: var(--swp-gray-400);
  text-transform: uppercase;
  letter-spacing: var(--swp-tracking-wider);
  font-weight: var(--swp-font-semibold);
  font-size: var(--swp-text-xs);
}
.navbar.navbar-vertical .nav-link-toggle,
.navbar.navbar-vertical .dropdown-toggle::after,
.navbar.navbar-vertical.navbar-dark .nav-link-toggle,
.navbar.navbar-vertical.navbar-dark .dropdown-toggle::after {
  color: var(--swp-gray-400);
}
.navbar.navbar-vertical .navbar-nav .dropdown-menu,
.navbar.navbar-vertical.navbar-dark .navbar-nav .dropdown-menu {
  background-color: var(--swp-surface);
  border: 1px solid var(--swp-border-light);
  box-shadow: var(--swp-shadow-md);
}
.navbar.navbar-vertical .navbar-nav .dropdown-menu .dropdown-item,
.navbar.navbar-vertical.navbar-dark .navbar-nav .dropdown-menu .dropdown-item {
  color: var(--swp-text-secondary);
  border-radius: var(--swp-radius-sm);
}
.navbar.navbar-vertical .navbar-nav .dropdown-menu .dropdown-item:hover, .navbar.navbar-vertical .navbar-nav .dropdown-menu .dropdown-item:focus,
.navbar.navbar-vertical.navbar-dark .navbar-nav .dropdown-menu .dropdown-item:hover,
.navbar.navbar-vertical.navbar-dark .navbar-nav .dropdown-menu .dropdown-item:focus {
  background-color: var(--swp-surface-hover);
  color: var(--swp-text-primary);
}
.navbar.navbar-vertical .navbar-nav .dropdown-menu .dropdown-item.active,
.navbar.navbar-vertical.navbar-dark .navbar-nav .dropdown-menu .dropdown-item.active {
  background-color: var(--swp-primary-light);
  color: var(--swp-primary-dark);
}
.navbar.navbar-vertical .navbar-toggler,
.navbar.navbar-vertical.navbar-dark .navbar-toggler {
  color: var(--swp-gray-200);
  border-color: var(--swp-gray-600);
}
.navbar.navbar-vertical .navbar-toggler:focus-visible,
.navbar.navbar-vertical.navbar-dark .navbar-toggler:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
}

@media (width < 992px) {
  .navbar.navbar-vertical.navbar-expand-lg .navbar-collapse {
    background-color: var(--swp-gray-700);
  }
}

/**
 * SolidInvoice Design System - Form Styles
 *
 * Generic form component styles for the entire application.
 * Uses design system tokens for consistent styling.
 */
.form-control,
.form-select {
  border-radius: var(--swp-input-radius);
  border-color: var(--swp-input-border);
  padding: var(--swp-input-padding-y) var(--swp-input-padding-x);
  font-size: var(--swp-text-base);
  transition: border-color var(--swp-transition-fast), box-shadow var(--swp-transition-fast);
}
.form-control:focus,
.form-select:focus {
  border-color: var(--swp-input-focus-border);
  box-shadow: var(--swp-input-focus-ring);
}
.form-control::placeholder,
.form-select::placeholder {
  color: var(--swp-text-light);
}

.form-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-secondary);
  margin-bottom: var(--swp-space-2);
}
.form-label.required::after {
  content: " *";
  color: var(--swp-danger);
}

.form-field .form-label {
  font-weight: var(--swp-font-medium);
  color: var(--swp-body-color);
  margin-bottom: var(--swp-space-2);
}
.form-field .form-control,
.form-field .form-select {
  border-color: var(--swp-border);
  transition: border-color var(--swp-transition-fast), box-shadow var(--swp-transition-fast);
}
.form-field .form-control:focus,
.form-field .form-select:focus {
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
}
.form-field .input-group-text {
  background-color: var(--swp-gray-50);
  border-color: var(--swp-border);
  color: var(--swp-text-muted);
}

.form-help,
.form-text,
.form-help-text {
  color: var(--swp-text-muted);
  font-size: var(--swp-text-sm);
  line-height: var(--swp-leading-normal);
  margin-top: var(--swp-space-1);
}
.form-help small,
.form-text small,
.form-help-text small {
  font-size: inherit;
}

.form-switch-field {
  padding: var(--swp-space-3-5) var(--swp-space-4);
  background-color: var(--swp-gray-50);
  border-radius: var(--swp-radius-md);
  border: 1px solid var(--swp-border);
  transition: border-color var(--swp-transition-fast), background-color var(--swp-transition-fast);
}
.form-switch-field:hover {
  border-color: rgba(var(--swp-primary-rgb), 0.3);
  background-color: var(--swp-primary-lighter);
}

.form-switch-wrapper {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  margin-bottom: 0;
}
.form-switch-wrapper .form-check-input {
  width: 2.5rem;
  height: 1.25rem;
  margin-top: 0;
  cursor: pointer;
  background-color: var(--swp-gray-300);
  border: none;
  transition: background-color var(--swp-transition-fast);
}
.form-switch-wrapper .form-check-input:checked {
  background-color: var(--swp-primary);
}
.form-switch-wrapper .form-check-input:focus {
  box-shadow: var(--swp-ring-primary);
}
.form-switch-wrapper .form-check-label {
  font-weight: var(--swp-font-medium);
  cursor: pointer;
  margin-bottom: 0;
  margin-left: 0.5rem;
  flex: 1;
}

.input-icon-group .input-group-text {
  background-color: var(--swp-gray-50);
  border-color: var(--swp-border);
  color: var(--swp-text-muted);
}
.input-icon-group .input-group-text svg {
  width: 18px;
  height: 18px;
}
.input-icon-group .form-control {
  border-left: none;
}
.input-icon-group .form-control:focus {
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
}
.input-icon-group .form-control:focus ~ .input-group-text,
.input-icon-group .form-control:focus + .input-group-text {
  border-color: var(--swp-primary);
}
.input-icon-group .input-group-text:first-child {
  border-right: none;
}
.input-icon-group .input-group-text:first-child + .form-control {
  border-left: none;
}

.input-validate-group .btn-validate {
  display: flex;
  align-items: center;
  gap: var(--swp-space-1-5);
  font-size: var(--swp-text-sm);
}
.input-validate-group .btn-validate svg {
  width: 16px;
  height: 16px;
}

.form-group-card {
  padding: var(--swp-space-5);
  background-color: var(--swp-gray-50);
  border-radius: var(--swp-radius-lg);
  border: 1px solid var(--swp-border);
}
.form-group-card .form-group-header {
  margin-bottom: var(--swp-space-4);
}
.form-group-card .form-group-title {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-body-color);
  margin: 0;
}
.form-group-card .form-group-content .mb-3:last-child,
.form-group-card .form-group-content .mb-4:last-child {
  margin-bottom: 0 !important;
}

.address-widget .card-body {
  padding: var(--swp-space-4);
}
.address-widget .form-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
}
.address-widget .form-control,
.address-widget .form-select {
  font-size: var(--swp-text-base);
}

.form-control.is-invalid,
.form-select.is-invalid {
  border-color: var(--swp-danger);
  padding-right: calc(1.5em + 0.75rem);
  background-image: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 12 12%27 width=%2712%27 height=%2712%27 fill=%27none%27 stroke=%27%23ef4444%27%3e%3ccircle cx=%276%27 cy=%276%27 r=%274.5%27/%3e%3cpath stroke-linejoin=%27round%27 d=%27M5.8 3.6h.4L6 6.5z%27/%3e%3ccircle cx=%276%27 cy=%278.2%27 r=%27.6%27 fill=%27%23ef4444%27 stroke=%27none%27/%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: right calc(0.375em + 0.1875rem) center;
  background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
}
.form-control.is-invalid:focus,
.form-select.is-invalid:focus {
  border-color: var(--swp-danger);
  box-shadow: var(--swp-ring-danger);
}

.form-control.is-valid,
.form-select.is-valid {
  border-color: var(--swp-success);
}
.form-control.is-valid:focus,
.form-select.is-valid:focus {
  border-color: var(--swp-success);
  box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.15);
}

.invalid-feedback {
  color: var(--swp-danger);
  font-size: var(--swp-text-sm);
  margin-top: var(--swp-space-1-5);
}

.valid-feedback {
  color: var(--swp-success);
  font-size: var(--swp-text-sm);
  margin-top: var(--swp-space-1-5);
}

.file-upload-area {
  border: 2px dashed var(--swp-gray-300);
  border-radius: var(--swp-radius-md);
  padding: var(--swp-space-6);
  text-align: center;
  background: var(--swp-surface);
  transition: border-color var(--swp-transition-fast), background-color var(--swp-transition-fast);
  cursor: pointer;
}
.file-upload-area:hover, .file-upload-area.dragover {
  border-color: var(--swp-primary);
  background-color: var(--swp-primary-lighter);
}
.file-upload-area .upload-icon {
  color: var(--swp-text-light);
  margin-bottom: var(--swp-space-2);
}
.file-upload-area .upload-icon svg {
  width: 32px;
  height: 32px;
}
.file-upload-area .upload-text {
  color: var(--swp-text-muted);
  font-size: var(--swp-text-sm);
}
.file-upload-area .upload-hint {
  color: var(--swp-text-light);
  font-size: var(--swp-text-xs);
  margin-top: var(--swp-space-1);
}

.dropzone {
  border: 2px dashed var(--swp-gray-300);
  border-radius: var(--swp-radius-md);
  padding: var(--swp-space-4);
  text-align: center;
  background: var(--swp-surface);
  transition: border-color var(--swp-transition-fast), background-color var(--swp-transition-fast);
  min-height: auto;
}
.dropzone:hover, .dropzone.dropzone-dragover {
  border-color: var(--swp-primary);
  background-color: var(--swp-primary-lighter);
}

.form-section-title {
  font-size: var(--swp-text-md);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-body-color);
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-4);
}
.form-section-title svg,
.form-section-title i {
  color: var(--swp-primary);
  opacity: 0.9;
  width: 20px;
  height: 20px;
}

/**
 * Standard Form Actions Pattern:
 *
 * ┌─────────────────────────────────────────────────────────────┐
 * │ [Cancel (ghost)]                      [Save (primary + icon)]│
 * └─────────────────────────────────────────────────────────────┘
 *
 * - Cancel: Left side OR ghost style
 * - Save: Right side, primary style, with save icon
 */
.form-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4) var(--swp-space-6);
  background: var(--swp-gray-50);
  border-top: 1px solid var(--swp-border-light);
}
.card-footer .form-actions {
  padding: 0;
  background: transparent;
  border-top: none;
}
.form-actions.form-actions-spread {
  justify-content: space-between;
}

.form-inline {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  flex-wrap: wrap;
}
.form-inline .form-control,
.form-inline .form-select {
  width: auto;
}

.form-horizontal .form-group,
.form-horizontal .mb-3,
.form-horizontal .mb-4 {
  display: grid;
  grid-template-columns: 200px 1fr;
  gap: var(--swp-space-4);
  align-items: start;
}
@media (width <= 768px) {
  .form-horizontal .form-group,
  .form-horizontal .mb-3,
  .form-horizontal .mb-4 {
    grid-template-columns: 1fr;
  }
}
.form-horizontal .form-label {
  padding-top: var(--swp-space-2-5);
  margin-bottom: 0;
  text-align: right;
}
@media (width <= 768px) {
  .form-horizontal .form-label {
    text-align: left;
    padding-top: 0;
  }
}

.form-compact .mb-3,
.form-compact .mb-4 {
  margin-bottom: var(--swp-space-3) !important;
}
.form-compact .form-control,
.form-compact .form-select {
  padding: var(--swp-space-2) var(--swp-space-3);
  font-size: var(--swp-text-sm);
}
.form-compact .form-label {
  font-size: var(--swp-text-xs);
  margin-bottom: var(--swp-space-1);
}

.btn {
  gap: var(--swp-space-2);
}

.btn-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  border-radius: var(--swp-radius-md);
}
.btn-icon svg {
  width: 18px;
  height: 18px;
}

.btn-ghost-danger {
  color: var(--swp-text-muted);
  background: transparent;
  border: none;
}
.btn-ghost-danger:hover {
  color: var(--swp-danger);
  background: var(--swp-danger-lighter);
}
.btn-ghost-danger:focus {
  box-shadow: var(--swp-ring-danger);
}

.card-header-tabs .nav-link {
  font-size: 0.875rem;
}

.fw-medium {
  font-weight: 500 !important;
}

@media (width <= 576px) {
  .form-switch-field {
    padding: var(--swp-space-3);
  }
  .form-switch-wrapper .form-check-input {
    width: 2.25rem;
    height: 1.125rem;
  }
  .form-group-card {
    padding: var(--swp-space-4);
  }
  .form-actions {
    padding: var(--swp-space-3) var(--swp-space-4);
    flex-wrap: wrap;
  }
  .form-actions .btn {
    flex: 1;
    min-width: 100px;
  }
}
/**
 * Company Pages Styles
 *
 * Styles for company selection and creation pages
 * All styles are scoped to .company-select-page and .company-create-page
 * to avoid conflicts with other pages.
 */
.company-select-page,
.company-create-page {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}
.company-select-page .company-page-header,
.company-create-page .company-page-header {
  background: var(--swp-surface);
  border-bottom: 1px solid var(--swp-border);
  box-shadow: var(--swp-shadow-xs);
}
.company-select-page .company-page-logo,
.company-create-page .company-page-logo {
  display: flex;
  align-items: center;
  justify-content: center;
}
.company-select-page .company-page-logo img,
.company-create-page .company-page-logo img {
  height: 48px;
  width: auto;
}
.company-select-page .company-page-brand h1,
.company-create-page .company-page-brand h1 {
  font-weight: 700;
  color: var(--swp-text-primary);
}
.company-select-page .company-page-intro h2,
.company-create-page .company-page-intro h2 {
  font-weight: 600;
  color: var(--swp-text-primary);
  font-size: 1.75rem;
}
.company-select-page .company-page-intro p,
.company-create-page .company-page-intro p {
  font-size: 1.125rem;
}
.company-select-page .avatar-md,
.company-create-page .avatar-md {
  width: 2.5rem;
  height: 2.5rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.company-select-page .avatar-lg,
.company-create-page .avatar-lg {
  width: 3.5rem;
  height: 3.5rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.company-select-page .avatar-2xl,
.company-create-page .avatar-2xl {
  width: 4rem;
  height: 4rem;
  font-size: 1.25rem;
  font-weight: 600;
}
.company-select-page .avatar-xl,
.company-create-page .avatar-xl {
  width: 5rem;
  height: 5rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.company-select-page .avatar-initials,
.company-create-page .avatar-initials {
  font-weight: 600;
  font-size: 1.25rem;
  letter-spacing: -0.02em;
}
.company-select-page .form-hint,
.company-create-page .form-hint {
  font-size: 0.875rem;
  color: var(--swp-text-secondary);
  display: flex;
  align-items: center;
}
@media (width <= 767.98px) {
  .company-select-page .avatar-lg,
  .company-create-page .avatar-lg {
    width: 3rem;
    height: 3rem;
  }
  .company-select-page .avatar-lg svg,
  .company-create-page .avatar-lg svg {
    width: 24px;
    height: 24px;
  }
  .company-select-page .avatar-2xl,
  .company-create-page .avatar-2xl {
    width: 3rem;
    height: 3rem;
    font-size: 1rem;
  }
  .company-select-page .h2, .company-select-page h2,
  .company-create-page .h2,
  .company-create-page h2 {
    font-size: 1.5rem;
  }
}

.company-select-page .card.shadow-sm {
  box-shadow: var(--swp-shadow-lg) !important;
  border: none;
  background: var(--swp-surface);
}
.company-select-page .card-company {
  transition: var(--swp-transition-all);
  border: 2px solid var(--swp-border);
  background: var(--swp-surface);
  box-shadow: var(--swp-shadow-md);
  border-radius: var(--swp-radius-lg);
}
.company-select-page .card-company:hover {
  transform: translateY(-4px);
  box-shadow: var(--swp-shadow-xl);
  border-color: var(--swp-primary);
}
.company-select-page .card-company:hover .company-arrow {
  transform: translateX(4px);
}
.company-select-page .card-company:hover h3 {
  color: var(--swp-primary);
}
.company-select-page .card-company:active {
  transform: translateY(-2px);
}
.company-select-page .company-avatar {
  flex-shrink: 0;
}
.company-select-page .company-avatar .avatar {
  box-shadow: var(--swp-shadow-sm);
}
.company-select-page .company-avatar .avatar img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  padding: var(--swp-space-2);
}
.company-select-page .company-avatar .avatar.bg-primary {
  background-color: var(--swp-primary) !important;
  background-image: none !important;
}
.company-select-page .company-avatar .avatar-initials,
.company-select-page .company-avatar .avatar.bg-primary span {
  color: var(--swp-text-inverse) !important;
  display: flex;
  align-items: center;
  justify-content: center;
}
.company-select-page .company-arrow {
  flex-shrink: 0;
  transition: transform var(--swp-duration-base) var(--swp-ease-in-out);
  display: flex;
  align-items: center;
  justify-content: center;
}
.company-select-page .min-w-0 {
  min-width: 0;
}
.company-select-page .card-create-company {
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.05) 0%, rgba(var(--swp-success-rgb), 0.02) 100%);
  border: 2px dashed var(--swp-border);
  transition: var(--swp-transition-all);
}
.company-select-page .card-create-company:hover {
  border-color: var(--swp-success);
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.08) 0%, rgba(var(--swp-success-rgb), 0.04) 100%);
}
.company-select-page .w-md-auto {
  width: auto !important;
}
@media (width >= 768px) {
  .company-select-page .w-md-auto {
    width: auto !important;
  }
}

.company-create-page .form-smooth .form-control:focus,
.company-create-page .form-smooth .form-select:focus {
  border-color: var(--swp-primary);
  box-shadow: 0 0 0 0.25rem rgba(var(--swp-primary-rgb), 0.1);
}
.company-create-page .card {
  box-shadow: var(--swp-shadow-lg);
  border: none;
}
.company-create-page .alert {
  border-radius: var(--swp-radius-lg);
  border: 1px solid transparent;
}
.company-create-page .alert.alert-info {
  background-color: rgba(var(--swp-info-rgb), 0.08);
  border-color: rgba(var(--swp-info-rgb), 0.2);
}
.company-create-page .alert.alert-warning {
  background-color: rgba(var(--swp-warning-rgb), 0.08);
  border-color: rgba(var(--swp-warning-rgb), 0.2);
}
.company-create-page .alert.alert-success {
  background-color: rgba(var(--swp-success-rgb), 0.08);
  border-color: rgba(var(--swp-success-rgb), 0.2);
}
.company-create-page .btn-primary {
  font-weight: 600;
  letter-spacing: 0.01em;
}

/**
 * Settings Page Styles
 * Only custom styles that can't be achieved with Bootstrap/Tabler utilities
 */
.settings-page {
  max-width: 900px;
  margin: 0 auto;
  padding-bottom: 2rem;
}

@media (max-width: 767.98px) {
  .settings-page > .nav-underline {
    margin-left: -1rem;
    margin-right: -1rem;
    padding-left: 1rem;
    padding-right: 1rem;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    flex-wrap: nowrap;
  }
  .settings-page > .nav-underline::-webkit-scrollbar {
    display: none;
  }
  .settings-page > .nav-underline .nav-item {
    flex-shrink: 0;
  }
}
.settings-content-card {
  border-radius: var(--swp-radius-lg);
}
.settings-content-card:hover {
  transform: none;
}
.settings-content-card > .card-body {
  padding: var(--swp-space-6);
}
@media (min-width: 768px) {
  .settings-content-card > .card-body {
    padding: var(--swp-space-8) var(--swp-space-8) var(--swp-space-6);
  }
}
.settings-content-card > .card-footer {
  padding: var(--swp-space-4) var(--swp-space-6);
  border-top-color: var(--swp-border-light);
}
@media (min-width: 768px) {
  .settings-content-card > .card-footer {
    padding: var(--swp-space-4) var(--swp-space-8);
  }
}
.settings-content-card .card-body > .border-bottom {
  border-bottom-color: var(--swp-border-light) !important;
}
.settings-content-card .card-body h3 {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  letter-spacing: -0.01em;
}
.settings-content-card .card-body h3 > svg {
  color: var(--swp-text-muted);
}
.settings-content-card .card-body h3 + p.text-muted {
  max-width: 65ch;
}

.logo-upload-card .logo-preview-frame {
  width: 80px;
  height: 80px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #ffffff;
  border-radius: 0.5rem;
  border: 1px solid #e2e8f0;
  overflow: hidden;
}
.logo-upload-card .logo-preview-frame img {
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}
.logo-upload-card .dropzone {
  border: 2px dashed #cbd5e1;
  border-radius: 0.5rem;
  min-height: auto;
}
.logo-upload-card .dropzone:hover, .logo-upload-card .dropzone.dropzone-dragover {
  border-color: var(--swp-primary);
  background-color: rgba(var(--swp-primary-rgb), 0.02);
}

.settings-danger-zone .card {
  border-radius: var(--swp-radius-lg);
  border-color: var(--swp-danger-light);
}
.settings-danger-zone .card:hover {
  transform: none;
}
.settings-danger-zone .card .card-header {
  background: var(--swp-danger-lighter) !important;
  border-bottom-color: var(--swp-danger-light) !important;
  padding: var(--swp-space-3) var(--swp-space-6);
}
.settings-danger-zone .card .card-header .card-title {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-danger);
}
.settings-danger-zone .card .card-body {
  padding: var(--swp-space-5) var(--swp-space-6);
}
.settings-danger-zone .card .card-body h3 {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}

#deleteCompanyModal .modal-content {
  border-radius: 1rem;
  box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
}
#deleteCompanyModal .font-monospace {
  background-color: #fef2f2;
  padding: 0.5rem 1rem;
  border-radius: 0.5rem;
}

.custom-field-list .custom-field-row {
  transition: background-color 120ms ease;
}
.custom-field-list .custom-field-row:hover .custom-field-handle {
  color: var(--tblr-body-color, #1e293b);
}
.custom-field-list .custom-field-row.sortable-ghost {
  opacity: 0.4;
  background-color: rgba(var(--swp-primary-rgb, 99 102 241), 0.06);
}
.custom-field-list .custom-field-row.sortable-chosen {
  background-color: rgba(var(--swp-primary-rgb, 99 102 241), 0.04);
}
.custom-field-list .custom-field-handle {
  cursor: grab;
  padding: 0.25rem;
  color: var(--tblr-muted, #94a3b8);
  line-height: 1;
  border-radius: 0.25rem;
}
.custom-field-list .custom-field-handle:active {
  cursor: grabbing;
}

@media print {
  .settings-page .nav-underline,
  .settings-page .settings-danger-zone,
  .settings-page .card-footer {
    display: none !important;
  }
}
.template-picker .template-picker-card {
  overflow: hidden;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.template-picker .template-picker-card:has(.template-picker-input:checked) {
  border-color: var(--tblr-primary, #206bc4);
  box-shadow: 0 0 0 2px rgba(var(--tblr-primary-rgb, 32, 107, 196), 0.25);
}
.template-picker .template-picker-card:has(.template-picker-input:focus-visible) {
  box-shadow: 0 0 0 3px rgba(var(--tblr-primary-rgb, 32, 107, 196), 0.5);
}
.template-picker .template-picker-option {
  display: block;
  position: relative;
  margin: 0;
  cursor: pointer;
}
.template-picker .template-picker-input {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: 0;
  padding: 0;
  border: 0;
  opacity: 0;
  pointer-events: none;
}
.template-picker .template-picker-thumb {
  display: block;
  position: relative;
  width: 100%;
  aspect-ratio: 4/3;
  overflow: hidden;
  background: var(--tblr-bg-surface-secondary, #f1f5f9);
}
.template-picker .template-picker-thumb iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 400%;
  height: 400%;
  border: 0;
  transform: scale(0.25);
  transform-origin: 0 0;
  pointer-events: none;
}
.template-picker .template-picker-check {
  position: absolute;
  top: 0.5rem;
  right: 0.5rem;
  display: none;
  align-items: center;
  justify-content: center;
  width: 1.75rem;
  height: 1.75rem;
  border-radius: 50%;
  background: var(--tblr-primary, #206bc4);
  color: #ffffff;
  box-shadow: 0 1px 3px rgba(15, 23, 42, 0.25);
}
.template-picker .template-picker-option:has(.template-picker-input:checked) .template-picker-check {
  display: flex;
}
.template-picker.template-picker-disabled .template-picker-option {
  cursor: not-allowed;
}
.template-picker.template-picker-disabled .template-picker-thumb {
  opacity: 0.6;
}

/**
 * SolidInvoice Dashboard Styles
 *
 * Styles for the redesigned dashboard including hero stats,
 * charts, attention required section, quick actions, and activity feed.
 */
.dashboard-hero-stats {
  display: grid;
  gap: var(--swp-space-4);
  grid-template-columns: 1fr;
}
@media (width >= 577px) {
  .dashboard-hero-stats {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (width >= 1201px) {
  .dashboard-hero-stats {
    grid-template-columns: repeat(9, 1fr);
  }
}

.stat-card {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
  box-shadow: var(--swp-shadow-sm);
  padding: var(--swp-space-6);
}
@media (width >= 1201px) {
  .stat-card {
    grid-column: span 2;
  }
}
.stat-card--danger {
  background: var(--swp-danger-lighter);
  border-color: var(--swp-danger-light);
}
@media (width >= 1201px) {
  .stat-card--urgent {
    grid-column: span 3;
  }
}
.stat-card--urgent .stat-value {
  font-size: var(--swp-text-3xl);
}

.stat-card-content {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-4);
}

.stat-icon {
  width: 48px;
  height: 48px;
  border-radius: var(--swp-radius-md);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.stat-icon--primary {
  background: var(--swp-primary-light);
  color: var(--swp-primary);
}
.stat-icon--success {
  background: var(--swp-success-light);
  color: var(--swp-success);
}
.stat-icon--danger {
  background: var(--swp-danger-light);
  color: var(--swp-danger);
}
.stat-icon--warning {
  background: var(--swp-warning-light);
  color: var(--swp-warning);
}
.stat-icon--info {
  background: var(--swp-info-light);
  color: var(--swp-info);
}

.stat-info {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
  min-width: 0;
}

.stat-label {
  font-size: var(--swp-text-xs);
  color: var(--swp-text-muted);
  font-weight: var(--swp-font-semibold);
  text-transform: uppercase;
  letter-spacing: var(--swp-tracking-wider);
}

.stat-value {
  font-size: var(--swp-text-2xl);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  line-height: 1.2;
  letter-spacing: var(--swp-tracking-tight);
  font-variant-numeric: tabular-nums;
}
.stat-value--danger {
  color: var(--swp-danger-hover);
}
.stat-value .money--total .money-amount {
  font-size: 1em;
}

.stat-subvalue {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  font-variant-numeric: tabular-nums;
}

.dashboard-chart-container {
  min-height: 280px;
  position: relative;
}

.dashboard-revenue-chart {
  height: 280px !important;
}

.dashboard-donut-container {
  min-height: 280px;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
}

.dashboard-donut-chart {
  height: 280px !important;
}

.dashboard-donut-center {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, calc(-50% - var(--swp-space-1-5)));
  text-align: center;
  pointer-events: none;
  z-index: 1;
}

.dashboard-donut-total {
  display: block;
  font-size: var(--swp-text-2xl);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  line-height: 1;
  letter-spacing: var(--swp-tracking-tight);
  font-variant-numeric: tabular-nums;
}

.dashboard-donut-label {
  display: block;
  font-size: var(--swp-text-xs);
  color: var(--swp-text-muted);
  text-transform: uppercase;
  letter-spacing: var(--swp-tracking-wider);
  font-weight: var(--swp-font-semibold);
  margin-top: var(--swp-space-1);
}

.dashboard-chart-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: var(--swp-space-8);
  text-align: center;
}

.dashboard-chart-empty-icon {
  color: var(--swp-text-muted);
  margin-bottom: var(--swp-space-3);
}

.dashboard-chart-empty-text {
  color: var(--swp-text-secondary);
  margin-bottom: var(--swp-space-2);
}

.dashboard-chart-error {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: var(--swp-space-8);
  text-align: center;
}

.dashboard-chart-error-icon {
  width: 64px;
  height: 64px;
  border-radius: var(--swp-radius-full);
  background: var(--swp-danger-light);
  color: var(--swp-danger);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: var(--swp-space-3);
}
.dashboard-chart-error-icon svg {
  width: 32px;
  height: 32px;
}

.dashboard-chart-error-title {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-1);
}

.dashboard-chart-error-text {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  margin: 0 0 var(--swp-space-4);
  max-width: 42ch;
}

.attention-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: var(--swp-space-8);
  text-align: center;
}

.attention-empty-icon {
  width: 64px;
  height: 64px;
  border-radius: var(--swp-radius-full);
  background: var(--swp-success-lighter);
  color: var(--swp-success);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: var(--swp-space-3);
}

.attention-empty-text {
  color: var(--swp-text-secondary);
  margin: 0;
}

.attention-sections {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}

.attention-section:not(:last-child) {
  padding-bottom: var(--swp-space-4);
  border-bottom: 1px solid var(--swp-border-light);
}

.attention-section-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  text-transform: uppercase;
  letter-spacing: var(--swp-tracking-wider);
  margin-bottom: var(--swp-space-3);
}
.attention-section-header--danger {
  color: var(--swp-danger);
}
.attention-section-header--warning {
  color: var(--swp-warning-hover);
}
.attention-section-header--info {
  color: var(--swp-info);
}
.attention-section-header--primary {
  color: var(--swp-primary);
}

.attention-badge {
  font-size: var(--swp-text-xs);
  padding: 2px 6px;
  border-radius: var(--swp-radius-full);
  font-weight: var(--swp-font-semibold);
}
.attention-badge--danger {
  background: var(--swp-danger-light);
  color: var(--swp-danger);
}
.attention-badge--warning {
  background: var(--swp-warning-light);
  color: var(--swp-warning-hover);
}
.attention-badge--info {
  background: var(--swp-info-light);
  color: var(--swp-info);
}
.attention-badge--primary {
  background: var(--swp-primary-light);
  color: var(--swp-primary);
}

.attention-items {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}

.attention-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--swp-space-3);
  padding: var(--swp-space-3);
  border-radius: var(--swp-radius-md);
  text-decoration: none;
  color: inherit;
  transition: background-color var(--swp-transition-fast), box-shadow var(--swp-transition-fast);
}
.attention-item:hover {
  background: var(--swp-surface-hover);
}
.attention-item:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
}
.attention-item--danger {
  background: var(--swp-danger-lighter);
}
.attention-item--danger:hover {
  background: var(--swp-danger-light);
}
.attention-item--danger:focus-visible {
  box-shadow: var(--swp-ring-danger);
}

.attention-item-main {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  min-width: 0;
  flex: 1;
}

.attention-item-id {
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  font-family: var(--swp-font-mono);
  font-size: var(--swp-text-sm);
}

.attention-item-client {
  color: var(--swp-text-secondary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.attention-item-meta {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  flex-shrink: 0;
}

.attention-item-amount {
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  font-variant-numeric: tabular-nums;
}

.attention-item-date {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  font-variant-numeric: tabular-nums;
}

.quick-actions-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--swp-space-3);
}

.quick-action-btn {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-4);
  border-radius: var(--swp-radius-md);
  text-decoration: none;
  transition: transform var(--swp-transition-fast), background-color var(--swp-transition-fast), box-shadow var(--swp-transition-fast);
}
.quick-action-btn:hover {
  transform: translateY(-2px);
  box-shadow: var(--swp-shadow-md);
}
.quick-action-btn:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
}
.quick-action-btn--primary {
  background: var(--swp-primary-lighter);
  color: var(--swp-primary-dark);
}
.quick-action-btn--primary:hover {
  background: var(--swp-primary-light);
}
.quick-action-btn--secondary {
  background: var(--swp-secondary-lighter);
  color: var(--swp-secondary-dark);
}
.quick-action-btn--secondary:hover {
  background: var(--swp-secondary-light);
}
.quick-action-btn--info {
  background: var(--swp-info-lighter);
  color: var(--swp-info-hover);
}
.quick-action-btn--info:hover {
  background: var(--swp-info-light);
}
.quick-action-btn--success {
  background: var(--swp-success-lighter);
  color: var(--swp-success-hover);
}
.quick-action-btn--success:hover {
  background: var(--swp-success-light);
}
@media (prefers-reduced-motion: reduce) {
  .quick-action-btn, .quick-action-btn:hover {
    transition: none;
    transform: none;
  }
}

.quick-action-icon {
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.quick-action-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  text-align: center;
}

.activity-timeline {
  display: flex;
  flex-direction: column;
}

.activity-item {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4) 0;
  border-bottom: 1px solid var(--swp-border-light);
}
.activity-item:last-child {
  border-bottom: none;
}

.activity-icon {
  width: 36px;
  height: 36px;
  border-radius: var(--swp-radius-full);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  margin-top: 2px;
}
.activity-icon--payment {
  background: var(--swp-success-light);
  color: var(--swp-success);
}
.activity-icon--invoice, .activity-icon--invoice_sent {
  background: var(--swp-primary-light);
  color: var(--swp-primary);
}
.activity-icon--quote_accepted {
  background: var(--swp-success-light);
  color: var(--swp-success);
}
.activity-icon--quote_declined {
  background: var(--swp-danger-light);
  color: var(--swp-danger);
}
.activity-icon--recurring_generated {
  background: var(--swp-info-light);
  color: var(--swp-info);
}

.activity-content {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}

.activity-description {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  flex-wrap: wrap;
  line-height: 1.4;
}

.activity-text {
  color: var(--swp-text-secondary);
  font-size: var(--swp-text-base);
}

.activity-doc-link {
  font-weight: var(--swp-font-semibold);
  color: var(--swp-primary);
  text-decoration: none;
  font-family: var(--swp-font-mono);
  font-size: var(--swp-text-sm);
  border-radius: var(--swp-radius-sm);
}
.activity-doc-link:hover {
  text-decoration: underline;
  color: var(--swp-primary-dark);
}
.activity-doc-link:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
}

.activity-details {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  flex-wrap: wrap;
  font-size: var(--swp-text-sm);
}

.activity-client-link {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: var(--swp-text-secondary);
  text-decoration: none;
  border-radius: var(--swp-radius-sm);
  transition: color var(--swp-transition-fast);
}
.activity-client-link:hover {
  color: var(--swp-primary);
}
.activity-client-link:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
  color: var(--swp-primary);
}
.activity-client-link svg {
  opacity: 0.6;
}

.activity-separator {
  color: var(--swp-text-muted);
}

.activity-amount {
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  font-variant-numeric: tabular-nums;
}

.activity-time {
  color: var(--swp-text-muted);
}

/**
 * Client Page Styles
 *
 * Custom styles for the Client view page.
 * Follows the design system tokens and modern SaaS aesthetic.
 */
.client-hero {
  padding: var(--swp-space-6);
  background: var(--swp-surface);
  border-radius: var(--swp-radius-lg);
  border: 1px solid var(--swp-border-light);
  box-shadow: var(--swp-shadow-sm);
  margin-bottom: var(--swp-space-6);
}

.client-hero-title {
  font-size: 1.75rem;
  font-weight: 700;
  color: var(--swp-text-primary);
  margin-bottom: 0;
  line-height: 1.2;
}

.client-hero-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--swp-space-4);
  color: var(--swp-text-muted);
  font-size: 0.875rem;
}
.client-hero-meta a {
  color: var(--swp-text-muted);
  text-decoration: none;
  transition: color var(--swp-transition-fast);
}
.client-hero-meta a:hover {
  color: var(--swp-primary);
}

.client-hero-meta-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-1-5);
}

.client-stat-label {
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-text-muted);
  margin-bottom: var(--swp-space-2);
}

.client-stat-value {
  font-size: 1.75rem;
  font-weight: 700;
  line-height: 1.2;
  color: var(--swp-text-primary);
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.02em;
}

.client-stat-value--success {
  color: var(--swp-success);
}

.client-stat-value--warning,
.client-stat-value--danger {
  color: var(--swp-warning);
}

.client-stat-badges {
  display: flex;
  flex-wrap: wrap;
  gap: var(--swp-space-2);
  margin-top: var(--swp-space-2);
}

.client-credit-card {
  margin-bottom: var(--swp-space-6);
}
.client-credit-card .card-body {
  padding: var(--swp-space-5);
}

.client-credit-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  border-radius: var(--swp-radius-lg);
  background: var(--swp-info-lighter);
  color: var(--swp-info);
}

.client-credit-amount {
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--swp-text-primary);
  margin-bottom: 0;
}

.client-credit-label {
  font-size: 0.75rem;
  color: var(--swp-text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.client-tabs-card .card-header {
  padding-bottom: 0;
  border-bottom: none;
}
.client-tabs-card {
  /* .nav-tabs {
      border-bottom: 1px solid var(--swp-border);
      margin: 0 calc(-1 * var(--swp-space-6));
      padding: 0 var(--swp-space-6);
  } */
}
.client-tabs-card .nav-link {
  padding: var(--swp-space-3) var(--swp-space-4);
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--swp-text-secondary);
  border: none;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  background: transparent;
  transition: color var(--swp-transition-fast), border-color var(--swp-transition-fast);
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
}
.client-tabs-card .nav-link:hover {
  color: var(--swp-primary);
  border-bottom-color: rgba(46, 150, 58, 0.3);
}
.client-tabs-card .nav-link.active {
  color: var(--swp-primary);
  border-bottom-color: var(--swp-primary);
}
.client-tabs-card .nav-link .badge {
  font-size: 0.65rem;
  font-weight: 600;
  padding: 0.2em 0.5em;
}
.client-tabs-card .tab-content {
  padding-top: var(--swp-space-4);
}

.client-section-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--swp-space-4);
}

.client-section-title {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: 1rem;
  font-weight: 600;
  color: var(--swp-text-primary);
  margin-bottom: 0;
}
.client-section-title .badge {
  font-size: 0.7rem;
  font-weight: 600;
}

.client-contact-card,
.client-address-card {
  height: 100%;
  transition: box-shadow var(--swp-transition-base);
}
.client-contact-card:hover,
.client-address-card:hover {
  box-shadow: var(--swp-shadow-md);
}
.client-contact-card .card-header,
.client-address-card .card-header {
  padding: var(--swp-space-3) var(--swp-space-4);
  background: transparent;
  border-bottom: 1px solid var(--swp-border-light);
}
.client-contact-card .card-body,
.client-address-card .card-body {
  padding: var(--swp-space-4);
}

.client-contact-avatar {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: var(--swp-radius-md);
  background: var(--swp-primary-lighter);
  color: var(--swp-primary);
  font-size: 0.875rem;
}

.client-contact-name {
  font-weight: 500;
  color: var(--swp-text-primary);
}

.client-contact-detail {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-2);
}
.client-contact-detail:last-child {
  margin-bottom: 0;
}

.client-contact-detail-icon {
  color: var(--swp-text-muted);
  flex-shrink: 0;
  margin-top: 2px;
}

.client-contact-detail-label {
  font-size: 0.75rem;
  color: var(--swp-text-muted);
  text-transform: uppercase;
  letter-spacing: 0.03em;
}

.client-contact-detail-value {
  color: var(--swp-text-primary);
}
.client-contact-detail-value a {
  color: var(--swp-primary);
  text-decoration: none;
}
.client-contact-detail-value a:hover {
  text-decoration: underline;
}

.btn-icon-sm {
  width: 28px;
  height: 28px;
  padding: var(--swp-space-1);
}

.btn-ghost-secondary {
  color: var(--swp-text-secondary);
  background: transparent;
  border: none;
}
.btn-ghost-secondary:hover {
  color: var(--swp-text-primary);
  background: var(--swp-gray-100);
}
.btn-ghost-secondary:focus {
  box-shadow: var(--swp-ring-primary);
}

.client-form-actions {
  display: flex;
  justify-content: flex-end;
  gap: var(--swp-space-2);
  margin-top: var(--swp-space-4);
  padding-top: var(--swp-space-4);
  border-top: 1px solid var(--swp-border-light);
}

.client-address-text {
  white-space: pre-line;
  color: var(--swp-text-primary);
  line-height: 1.5;
  margin-bottom: var(--swp-space-3);
}

.client-address-map-link {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1-5);
  font-size: 0.875rem;
}

.client-contact-extra {
  margin-top: var(--swp-space-3);
  padding-top: var(--swp-space-3);
  border-top: 1px solid var(--swp-border-light);
}

.client-contact-extra-title {
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--swp-text-muted);
  text-transform: uppercase;
  letter-spacing: 0.03em;
  margin-bottom: var(--swp-space-2);
}

.client-contact-extra-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: 0.875rem;
  margin-bottom: var(--swp-space-1);
}
.client-contact-extra-item:last-child {
  margin-bottom: 0;
}

.client-contact-extra-label {
  color: var(--swp-text-muted);
  min-width: 80px;
}

.client-contact-extra-value {
  color: var(--swp-text-primary);
}

.custom-fields-card .card-header {
  padding: var(--swp-space-3) var(--swp-space-4);
  background: transparent;
  border-bottom: 1px solid var(--swp-border-light);
}
.custom-fields-card .card-body {
  padding: var(--swp-space-2) var(--swp-space-4);
}

.custom-fields-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
}

.custom-fields-item {
  display: grid;
  grid-template-columns: minmax(140px, 30%) 1fr;
  gap: var(--swp-space-3);
  align-items: baseline;
  padding: var(--swp-space-2) 0;
  border-bottom: 1px solid var(--swp-border-light);
}
.custom-fields-item:last-child {
  border-bottom: none;
}

.custom-fields-label {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1-5);
  font-size: 0.8125rem;
  font-weight: 500;
  color: var(--swp-text-muted);
  margin: 0;
  text-transform: none;
  letter-spacing: 0;
}

.custom-fields-value {
  font-size: 0.875rem;
  color: var(--swp-text-primary);
  word-break: break-all;
}
.custom-fields-value a {
  color: var(--swp-primary);
  text-decoration: none;
}
.custom-fields-value a:hover {
  text-decoration: underline;
}
.custom-fields-value .badge {
  margin-right: var(--swp-space-1);
  font-weight: 500;
}

@media (width <= 575.98px) {
  .custom-fields-item {
    grid-template-columns: 1fr;
    gap: var(--swp-space-1);
  }
}
@media (width <= 991.98px) {
  .client-hero {
    padding: var(--swp-space-4);
  }
  .client-hero-title {
    font-size: 1.5rem;
  }
  .client-stat-value {
    font-size: 1.5rem;
  }
}
@media (width <= 767.98px) {
  .client-hero {
    text-align: center;
  }
  .client-hero-meta {
    justify-content: center;
  }
  .client-tabs-card .nav-tabs {
    margin: 0 calc(-1 * var(--swp-space-4));
    padding: 0 var(--swp-space-4);
    overflow-x: auto;
    flex-wrap: nowrap;
    -webkit-overflow-scrolling: touch;
  }
  .client-tabs-card .nav-tabs::-webkit-scrollbar {
    display: none;
  }
  .client-tabs-card .nav-item {
    flex-shrink: 0;
  }
  .client-section-header {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--swp-space-2);
  }
}
@media print {
  .client-hero .dropdown,
  .client-hero .btn,
  .client-section-header .btn,
  .btn-ghost-secondary,
  .btn-ghost-danger,
  .client-form-actions {
    display: none !important;
  }
  .client-hero {
    box-shadow: none;
    border: 1px solid #DDDDDD;
  }
}
/**
 * Invoice View Page
 *
 * All shared document view styles are in components/_document-view.scss.
 * Invoice-specific recurring invoice styles are also in that shared component.
 */
.recurring-schedule-grid {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
}

.schedule-item {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--swp-space-2);
}

.recurring-schedule-label {
  font-size: var(--swp-text-sm, 0.875rem);
  color: var(--swp-text-muted);
  flex-shrink: 0;
}

.schedule-value {
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-medium, 500);
  color: var(--swp-text-primary);
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.occurrences-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}

.occurrence-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm, 0.875rem);
  color: var(--swp-text-secondary);
}
.occurrence-item svg {
  opacity: 0.6;
  flex-shrink: 0;
}

.occurrence-date {
  color: var(--swp-text-primary);
}

.generated-invoices-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}

.generated-invoice-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-3);
  background: var(--swp-gray-50);
  border-radius: var(--swp-radius-sm);
}

.generated-invoice-link {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-medium, 500);
  color: var(--swp-primary);
  text-decoration: none;
}
.generated-invoice-link:hover {
  color: var(--swp-primary-dark);
  text-decoration: underline;
}

.generated-invoice-id {
  font-weight: var(--swp-font-semibold, 600);
}

.generated-invoice-meta {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
}

.generated-invoice-amount {
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-medium, 500);
  color: var(--swp-text-primary);
  font-variant-numeric: tabular-nums;
}

/**
 * External Invoice View
 *
 * Invoice-specific styles for the public-facing invoice page.
 * All shared external document styles are in components/_external-doc-view.scss.
 */
.btn-invoice-action {
  padding: 0.75rem 1.25rem;
  font-weight: 500;
  border-radius: 0.375rem;
  transition: all 0.2s ease;
}
.btn-invoice-action:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}
.btn-invoice-action:active {
  transform: translateY(0);
}

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
  border-width: 0;
}

@media print {
  .btn-invoice-action:hover {
    box-shadow: none !important;
    transform: none !important;
  }
}
/**
 * External Quote View
 *
 * All shared external document styles (including quote styles) are in
 * components/_external-doc-view.scss.
 *
 * There are currently no quote-specific styles beyond what is shared.
 */
/**
 * Quote View Page - Quote-Specific Styles
 *
 * Shared document layout is in components/_document-view.scss.
 * This file is intentionally minimal - all shared doc view styles are in the component.
 */
/**
 * Payment Marketplace Styles
 * Only payment-specific styles. Shared marketplace styles are in components/_marketplace.scss.
 */
.payment-marketplace {
  padding-bottom: var(--swp-space-8);
}

.payment-marketplace > .nav-tabs {
  border-bottom: 1px solid var(--swp-border);
}
.payment-marketplace > .nav-tabs .nav-link {
  padding: var(--swp-space-3) var(--swp-space-4);
  font-size: var(--swp-text-sm);
  font-weight: 500;
  color: var(--swp-text-secondary);
  border: none;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  background: transparent;
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  transition: var(--swp-transition-colors);
}
.payment-marketplace > .nav-tabs .nav-link:hover {
  color: var(--swp-primary);
  border-bottom-color: rgba(var(--swp-primary-rgb), 0.3);
}
.payment-marketplace > .nav-tabs .nav-link.active {
  color: var(--swp-primary);
  border-bottom-color: var(--swp-primary);
  background: transparent;
}
.payment-marketplace > .nav-tabs .nav-link .badge-sm {
  font-size: 0.625rem;
  padding: 0.125rem 0.375rem;
  font-weight: 600;
}

.gateway-grid {
  display: grid;
  gap: var(--swp-space-3);
}

.gateway-card {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  cursor: pointer;
  position: relative;
  box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.05);
}
.gateway-card:hover {
  border-color: var(--swp-primary);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08), 0 0 0 1px var(--swp-primary);
  transform: translateY(-2px);
}
.gateway-card:hover .gateway-icon {
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, var(--swp-primary) 100%);
  color: var(--swp-primary);
  box-shadow: 0 4px 8px rgba(var(--swp-primary-rgb), 0.2);
}
.gateway-card.is-configured {
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.05) 0%, rgba(var(--swp-success-rgb), 0.02) 100%);
  border-color: rgba(var(--swp-success-rgb), 0.3);
}
.gateway-card.is-configured .gateway-icon {
  background: linear-gradient(135deg, var(--swp-success-light) 0%, var(--swp-success) 100%);
  color: #ffffff;
}
.gateway-card.is-configured:hover {
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.08) 0%, rgba(var(--swp-success-rgb), 0.04) 100%);
  border-color: var(--swp-success);
}
.gateway-card.is-custom-gateway {
  background: linear-gradient(135deg, rgba(var(--swp-primary-rgb), 0.04) 0%, rgba(var(--swp-primary-rgb), 0.01) 100%);
  border: 2px dashed rgba(var(--swp-primary-rgb), 0.3);
  position: relative;
  margin-bottom: var(--swp-space-6);
}
.gateway-card.is-custom-gateway::after {
  content: "";
  position: absolute;
  bottom: calc(-1 * var(--swp-space-6) / 2);
  left: var(--swp-space-4);
  right: var(--swp-space-4);
  height: 1px;
  background: linear-gradient(90deg, transparent 0%, var(--swp-border) 15%, var(--swp-border) 85%, transparent 100%);
}
.gateway-card.is-custom-gateway::before {
  content: "";
  position: absolute;
  inset: -2px;
  background: linear-gradient(135deg, var(--swp-primary), var(--swp-primary-dark));
  border-radius: var(--swp-radius-lg);
  opacity: 0;
  z-index: -1;
  transition: opacity 0.2s ease;
}
.gateway-card.is-custom-gateway .gateway-icon {
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.2) 100%);
  color: var(--swp-primary);
  border: 2px solid rgba(var(--swp-primary-rgb), 0.2);
}
.gateway-card.is-custom-gateway:hover {
  background: linear-gradient(135deg, rgba(var(--swp-primary-rgb), 0.08) 0%, rgba(var(--swp-primary-rgb), 0.02) 100%);
  border-color: var(--swp-primary);
  border-style: solid;
}
.gateway-card.is-custom-gateway:hover::before {
  opacity: 0.08;
}
.gateway-card.is-custom-gateway:hover .gateway-icon {
  background: linear-gradient(135deg, var(--swp-primary) 0%, var(--swp-primary-dark) 100%);
  color: #ffffff;
  border-color: var(--swp-primary);
}
.gateway-card .gateway-card-body {
  padding: var(--swp-space-4);
}
.gateway-card .gateway-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  background: linear-gradient(135deg, var(--swp-gray-100) 0%, var(--swp-gray-200) 100%);
  border-radius: var(--swp-radius-lg);
  color: var(--swp-text-secondary);
  flex-shrink: 0;
  transition: all 0.2s ease;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);
}
.gateway-card h6 {
  font-size: var(--swp-text-base);
  font-weight: 600;
  color: var(--swp-text-primary);
  margin-bottom: 0;
  letter-spacing: -0.01em;
}
.gateway-card .text-muted {
  font-size: var(--swp-text-sm);
  line-height: 1.5;
  color: var(--swp-text-muted);
}
.gateway-card .btn {
  font-size: var(--swp-text-sm);
  padding: var(--swp-space-2) var(--swp-space-3);
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  font-weight: 500;
  transition: all 0.2s ease;
}
.gateway-card .btn:hover {
  transform: translateY(-1px);
  box-shadow: 0 2px 8px rgba(var(--swp-primary-rgb), 0.2);
}
.gateway-card .badge-sm {
  font-size: 0.625rem;
  padding: 0.2rem 0.5rem;
  font-weight: 600;
  border-radius: var(--swp-radius-full);
  letter-spacing: 0.02em;
}

.active-methods-panel h5 {
  font-size: var(--swp-text-lg);
  font-weight: 600;
  color: var(--swp-text-primary);
  letter-spacing: -0.01em;
}
.active-methods-panel > .d-flex > .badge {
  font-size: 0.75rem;
  padding: 0.35rem 0.75rem;
  font-weight: 600;
  border-radius: var(--swp-radius-full);
  background: linear-gradient(135deg, var(--swp-gray-100) 0%, var(--swp-gray-200) 100%);
  color: var(--swp-text-primary);
  border: 1px solid var(--swp-border-light);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}

.active-methods-list {
  display: grid;
  gap: var(--swp-space-3);
}

.active-method-card {
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
  box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.05);
  background: var(--swp-surface);
}
.active-method-card:hover {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08), 0 0 0 1px rgba(var(--swp-primary-rgb), 0.1);
  transform: translateY(-2px);
  border-color: rgba(var(--swp-primary-rgb), 0.2);
}
.active-method-card:hover .payment-method-icon {
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.15) 100%);
  box-shadow: 0 4px 8px rgba(var(--swp-primary-rgb), 0.15);
  color: var(--swp-primary);
}
.active-method-card:hover .btn-outline-secondary {
  border-color: var(--swp-primary);
  color: var(--swp-primary);
  background: rgba(var(--swp-primary-rgb), 0.04);
}
.active-method-card .card-body {
  padding: var(--swp-space-5);
}
.active-method-card h6 {
  font-size: 1.0625rem;
  font-weight: 600;
  color: var(--swp-text-primary);
  margin-bottom: 0;
  letter-spacing: -0.01em;
}
.active-method-card .payment-method-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  background: linear-gradient(135deg, var(--swp-gray-100) 0%, var(--swp-gray-200) 100%);
  border-radius: var(--swp-radius-lg);
  color: var(--swp-text-secondary);
  flex-shrink: 0;
  transition: all 0.2s ease;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);
}
.active-method-card .payment-method-icon svg {
  width: 28px;
  height: 28px;
}
.active-method-card .badge {
  font-size: 0.6875rem;
  padding: 0.3rem 0.75rem;
  font-weight: 600;
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  border-radius: var(--swp-radius-full);
  letter-spacing: 0.02em;
  text-transform: uppercase;
}
.active-method-card .badge.bg-success {
  background: linear-gradient(135deg, var(--swp-success) 0%, var(--swp-success-hover) 100%) !important;
  color: #ffffff;
  box-shadow: 0 2px 4px rgba(var(--swp-success-rgb), 0.2);
}
.active-method-card .badge.bg-secondary {
  background: linear-gradient(135deg, var(--swp-gray-400) 0%, var(--swp-gray-500) 100%) !important;
  color: #ffffff;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.active-method-card .btn {
  padding: var(--swp-space-2) var(--swp-space-3);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s ease;
  border-radius: var(--swp-radius-md);
  min-width: 40px;
  min-height: 40px;
}
.active-method-card .btn:hover {
  transform: translateY(-1px);
}
.active-method-card .btn.btn-outline-secondary {
  border-width: 1.5px;
  font-weight: 500;
}
.active-method-card .btn.btn-outline-secondary svg {
  width: 18px;
  height: 18px;
}

.payment-marketplace .card-header .d-flex {
  width: 100%;
}
.payment-marketplace .card-header .d-flex > div:first-child {
  flex: 1;
}
.payment-marketplace .card-header .d-flex .btn-icon {
  flex-shrink: 0;
}
.payment-marketplace form .form-switch-field + .form-switch-field {
  margin-top: var(--swp-space-4);
}
.payment-marketplace form .mb-3 + .mb-3 {
  margin-top: var(--swp-space-3);
}

.payment-modal-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.5);
  z-index: 1040;
  animation: marketplace-fade-in 0.2s ease;
  backdrop-filter: blur(2px);
}

.payment-modal {
  position: fixed;
  inset: 0;
  z-index: 1050;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--swp-space-4);
  animation: marketplace-fade-in 0.2s ease;
  overflow-y: auto;
}

.payment-modal-container {
  background: var(--swp-surface);
  border-radius: var(--swp-radius-xl);
  box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
  width: 100%;
  max-width: 920px;
  max-height: calc(100vh - var(--swp-space-8));
  display: flex;
  flex-direction: column;
  animation: marketplace-slide-up 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}

.payment-modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--swp-space-6);
  border-bottom: 1px solid var(--swp-border);
  flex-shrink: 0;
}

.payment-modal-title {
  font-size: var(--swp-text-xl);
  font-weight: 600;
  color: var(--swp-text-primary);
  margin: 0;
}

.payment-modal-close {
  flex-shrink: 0;
  margin-left: var(--swp-space-4);
}

.payment-modal-body {
  flex: 1;
  overflow-y: auto;
  padding: var(--swp-space-6);
}
.payment-modal-body > div > .card {
  border: none;
  box-shadow: none;
  background: transparent;
}
.payment-modal-body > div > .card .card-header {
  display: none;
}
.payment-modal-body > div > .card .card-body {
  padding: 0;
}
.payment-modal-body > div > .card .card-footer {
  padding: var(--swp-space-6) 0 0 0;
  border-top: 1px solid var(--swp-border);
  margin-top: var(--swp-space-6);
  background: transparent;
}

@media (max-width: 767.98px) {
  .payment-modal {
    padding: 0;
    align-items: flex-end;
  }
  .payment-modal-container {
    max-width: 100%;
    max-height: 90vh;
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
    animation: marketplace-slide-up-mobile 0.3s cubic-bezier(0.16, 1, 0.3, 1);
  }
  @keyframes marketplace-slide-up-mobile {
    from {
      transform: translateY(100%);
    }
    to {
      transform: translateY(0);
    }
  }
}
body:has(.payment-modal) {
  overflow: hidden;
}

@media (max-width: 767.98px) {
  .marketplace-panel {
    position: static;
    max-height: none;
    margin-bottom: var(--swp-space-4);
  }
  .gateway-grid {
    grid-template-columns: 1fr;
  }
  .active-method-card .d-flex {
    flex-direction: column;
    align-items: flex-start !important;
    gap: var(--swp-space-3);
  }
  .active-method-card .d-flex .btn-group,
  .active-method-card .d-flex .d-flex.gap-2 {
    width: 100%;
  }
  .active-method-card .d-flex .btn-group .btn,
  .active-method-card .d-flex .d-flex.gap-2 .btn {
    flex: 1;
  }
  .payment-marketplace > .nav-tabs {
    margin-left: calc(var(--swp-space-4) * -1);
    margin-right: calc(var(--swp-space-4) * -1);
    padding-left: var(--swp-space-4);
    padding-right: var(--swp-space-4);
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    flex-wrap: nowrap;
    scrollbar-width: none;
  }
  .payment-marketplace > .nav-tabs::-webkit-scrollbar {
    display: none;
  }
  .payment-marketplace > .nav-tabs .nav-item {
    flex-shrink: 0;
  }
}
@media print {
  .payment-marketplace .nav-tabs,
  .payment-marketplace .marketplace-panel,
  .payment-marketplace .btn {
    display: none !important;
  }
  .payment-marketplace .active-method-card {
    break-inside: avoid;
  }
}
.gateway-group {
  margin-bottom: var(--swp-space-4);
}
.gateway-group .gateway-group-header h6 {
  letter-spacing: 0.04em;
}
.gateway-group .is-custom-gateway {
  margin-bottom: var(--swp-space-3);
}
.gateway-group .is-custom-gateway::after {
  display: none;
}

.gateway-group--more {
  border-top: 1px solid var(--swp-border-light);
  padding-top: var(--swp-space-3);
}
.gateway-group--more > summary {
  cursor: pointer;
  list-style: none;
}
.gateway-group--more > summary::-webkit-details-marker {
  display: none;
}
.gateway-group--more > summary:hover h6 {
  color: var(--swp-primary);
}

.payment-gateway-about .alert-title {
  margin-bottom: var(--swp-space-1);
}
.payment-gateway-about .payment-gateway-compare summary {
  cursor: pointer;
  list-style: none;
}
.payment-gateway-about .payment-gateway-compare summary::-webkit-details-marker {
  display: none;
}

/**
 * Notification Marketplace Styles
 * Notification-specific styles. Shared marketplace styles are in components/_marketplace.scss.
 */
.notification-marketplace {
  padding-bottom: var(--swp-space-8);
}

.notification-marketplace > .nav-tabs {
  border-bottom: 1px solid var(--swp-border);
}
.notification-marketplace > .nav-tabs .nav-link {
  padding: var(--swp-space-3) var(--swp-space-4);
  font-size: var(--swp-text-sm);
  font-weight: 500;
  color: var(--swp-text-secondary);
  border: none;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  background: transparent;
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  transition: var(--swp-transition-colors);
}
.notification-marketplace > .nav-tabs .nav-link:hover {
  color: var(--swp-primary);
  border-bottom-color: rgba(var(--swp-primary-rgb), 0.3);
}
.notification-marketplace > .nav-tabs .nav-link.active {
  color: var(--swp-primary);
  border-bottom-color: var(--swp-primary);
  background: transparent;
}
.notification-marketplace > .nav-tabs .nav-link .badge-sm {
  font-size: 0.625rem;
  padding: 0.125rem 0.375rem;
  font-weight: 600;
}

.marketplace-tabs {
  border-bottom: 2px solid var(--swp-border);
  margin-bottom: 0;
}
.marketplace-tabs .nav-item {
  flex: 1;
}
.marketplace-tabs .nav-link {
  border: none;
  border-bottom: 3px solid transparent;
  color: var(--swp-text-secondary);
  font-weight: 600;
  padding: var(--swp-space-3) var(--swp-space-4);
  background: transparent;
  cursor: pointer;
  transition: all 0.2s ease;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm);
}
.marketplace-tabs .nav-link .nav-link-icon {
  display: flex;
  align-items: center;
}
.marketplace-tabs .nav-link:hover:not(.active) {
  color: var(--swp-primary-hover);
  background: rgba(var(--swp-primary-rgb), 0.05);
}
.marketplace-tabs .nav-link.active {
  color: var(--swp-primary);
  border-bottom-color: var(--swp-primary);
  background: transparent;
}

.integration-section-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm);
  font-weight: 600;
  color: var(--swp-text-secondary);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin-bottom: var(--swp-space-3);
  padding-bottom: var(--swp-space-2);
  border-bottom: 1px solid var(--swp-border-light);
}

.integration-section {
  margin-bottom: var(--swp-space-6);
}
.integration-section:last-child {
  margin-bottom: 0;
}

.integration-cards-grid {
  display: grid;
  gap: var(--swp-space-4);
  grid-template-columns: 1fr;
}
@media (min-width: 992px) {
  .integration-cards-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

.integration-card {
  background: var(--swp-surface);
  border: 1.5px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
  box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.05);
  transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
  height: 100%;
  display: flex;
  flex-direction: column;
}
.integration-card:hover {
  border-color: var(--swp-primary);
  box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);
  transform: translateY(-4px);
}
.integration-card:hover .integration-card-icon {
  background: linear-gradient(135deg, var(--swp-primary-light), rgba(var(--swp-primary-rgb), 0.2));
  color: var(--swp-primary);
  transform: scale(1.05);
}
.integration-card:hover .btn {
  transform: translateY(-1px);
  box-shadow: 0 4px 8px rgba(var(--swp-primary-rgb), 0.25);
}
.integration-card.is-configured {
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.03), rgba(var(--swp-success-rgb), 0.01));
  border-color: rgba(var(--swp-success-rgb), 0.25);
}
.integration-card.is-configured .integration-card-icon {
  background: linear-gradient(135deg, var(--swp-success-light), var(--swp-success));
  color: #ffffff;
}
.integration-card.is-configured:hover {
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.05), rgba(var(--swp-success-rgb), 0.02));
  border-color: var(--swp-success);
}
.integration-card .integration-card-body {
  padding: var(--swp-space-5);
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
  height: 100%;
}
.integration-card .integration-card-icon {
  width: 64px;
  height: 64px;
  background: linear-gradient(135deg, var(--swp-gray-100), var(--swp-gray-200));
  border-radius: var(--swp-radius-lg);
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto;
  transition: all 0.25s ease;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.06);
}
.integration-card .integration-card-icon svg {
  width: 32px;
  height: 32px;
}
.integration-card .integration-card-content {
  flex: 1;
  text-align: center;
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}
.integration-card .integration-card-title {
  font-size: var(--swp-text-base);
  font-weight: 600;
  color: var(--swp-text-primary);
  margin-bottom: 0;
  letter-spacing: -0.01em;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-2);
}
.integration-card .integration-card-description {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  line-height: 1.5;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.integration-card .integration-card-action {
  margin-top: auto;
}
.integration-card .integration-card-action .btn {
  font-size: var(--swp-text-sm);
  padding: var(--swp-space-2) var(--swp-space-3);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-1);
  font-weight: 500;
  transition: all 0.2s ease;
  width: 100%;
}

.configured-integrations-panel h5 {
  font-size: var(--swp-text-lg);
  font-weight: 600;
  color: var(--swp-text-primary);
  letter-spacing: -0.01em;
}
.configured-integrations-panel > .d-flex > .badge {
  font-size: 0.75rem;
  padding: 0.35rem 0.75rem;
  font-weight: 600;
  border-radius: var(--swp-radius-full);
  background: linear-gradient(135deg, var(--swp-gray-100) 0%, var(--swp-gray-200) 100%);
  color: var(--swp-text-primary);
  border: 1px solid var(--swp-border-light);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}

.configured-integrations-list {
  display: grid;
  gap: var(--swp-space-3);
}

.configured-integration-card {
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
  box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.05);
  background: var(--swp-surface);
}
.configured-integration-card:hover {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08), 0 0 0 1px rgba(var(--swp-primary-rgb), 0.1);
  transform: translateY(-2px);
  border-color: rgba(var(--swp-primary-rgb), 0.2);
}
.configured-integration-card:hover .integration-method-icon {
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.15) 100%);
  box-shadow: 0 4px 8px rgba(var(--swp-primary-rgb), 0.15);
  color: var(--swp-primary);
}
.configured-integration-card:hover .btn-outline-secondary {
  border-color: var(--swp-primary);
  color: var(--swp-primary);
  background: rgba(var(--swp-primary-rgb), 0.04);
}
.configured-integration-card .card-body {
  padding: var(--swp-space-5);
}
.configured-integration-card h6 {
  font-size: 1.0625rem;
  font-weight: 600;
  color: var(--swp-text-primary);
  margin-bottom: 0;
  letter-spacing: -0.01em;
}
.configured-integration-card .integration-method-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  background: linear-gradient(135deg, var(--swp-gray-100) 0%, var(--swp-gray-200) 100%);
  border-radius: var(--swp-radius-lg);
  color: var(--swp-text-secondary);
  flex-shrink: 0;
  transition: all 0.2s ease;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);
}
.configured-integration-card .integration-method-icon svg {
  width: 28px;
  height: 28px;
}
.configured-integration-card .badge {
  font-size: 0.6875rem;
  padding: 0.3rem 0.75rem;
  font-weight: 600;
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  border-radius: var(--swp-radius-full);
  letter-spacing: 0.02em;
  text-transform: uppercase;
}
.configured-integration-card .btn {
  padding: var(--swp-space-2) var(--swp-space-3);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s ease;
  border-radius: var(--swp-radius-md);
  min-width: 40px;
  min-height: 40px;
}
.configured-integration-card .btn:hover {
  transform: translateY(-1px);
}
.configured-integration-card .btn.btn-outline-secondary {
  border-width: 1.5px;
  font-weight: 500;
}
.configured-integration-card .btn.btn-outline-secondary svg {
  width: 18px;
  height: 18px;
}

.notification-modal-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.5);
  z-index: 1040;
  animation: marketplace-fade-in 0.2s ease;
  backdrop-filter: blur(2px);
}

.notification-modal {
  position: fixed;
  inset: 0;
  z-index: 1050;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--swp-space-4);
  animation: marketplace-fade-in 0.2s ease;
  overflow-y: auto;
}

.notification-modal-container {
  background: var(--swp-surface);
  border-radius: var(--swp-radius-xl);
  box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
  width: 100%;
  max-width: 800px;
  max-height: calc(100vh - var(--swp-space-8));
  display: flex;
  flex-direction: column;
  animation: marketplace-slide-up 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}

.notification-modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--swp-space-6);
  border-bottom: 1px solid var(--swp-border);
  flex-shrink: 0;
}

.notification-modal-title {
  font-size: var(--swp-text-xl);
  font-weight: 600;
  color: var(--swp-text-primary);
  margin: 0;
}

.notification-modal-close {
  flex-shrink: 0;
  margin-left: var(--swp-space-4);
}

.notification-modal-body {
  flex: 1;
  overflow-y: auto;
  padding: var(--swp-space-6);
}
.notification-modal-body > div > .card {
  border: none;
  box-shadow: none;
  background: transparent;
}
.notification-modal-body > div > .card .card-header {
  display: none;
}
.notification-modal-body > div > .card .card-body {
  padding: 0;
}
.notification-modal-body > div > .card .card-footer {
  padding: var(--swp-space-6) 0 0 0;
  border-top: 1px solid var(--swp-border);
  margin-top: var(--swp-space-6);
  background: transparent;
}

@media (max-width: 767.98px) {
  .marketplace-panel {
    position: static;
    max-height: none;
    margin-bottom: var(--swp-space-4);
  }
  .configured-integration-card .d-flex {
    flex-direction: column;
    align-items: flex-start !important;
    gap: var(--swp-space-3);
  }
  .configured-integration-card .d-flex .btn-group,
  .configured-integration-card .d-flex .d-flex.gap-2 {
    width: 100%;
  }
  .configured-integration-card .d-flex .btn-group .btn,
  .configured-integration-card .d-flex .d-flex.gap-2 .btn {
    flex: 1;
  }
  .notification-marketplace > .nav-tabs {
    margin-left: calc(var(--swp-space-4) * -1);
    margin-right: calc(var(--swp-space-4) * -1);
    padding-left: var(--swp-space-4);
    padding-right: var(--swp-space-4);
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    flex-wrap: nowrap;
    scrollbar-width: none;
  }
  .notification-marketplace > .nav-tabs::-webkit-scrollbar {
    display: none;
  }
  .notification-marketplace > .nav-tabs .nav-item {
    flex-shrink: 0;
  }
  .notification-modal {
    padding: 0;
    align-items: flex-end;
  }
  .notification-modal-container {
    max-width: 100%;
    max-height: 90vh;
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
    animation: notification-slide-up-mobile 0.3s cubic-bezier(0.16, 1, 0.3, 1);
  }
  @keyframes notification-slide-up-mobile {
    from {
      transform: translateY(100%);
    }
    to {
      transform: translateY(0);
    }
  }
}
body:has(.notification-modal) {
  overflow: hidden;
}

@media print {
  .notification-marketplace .nav-tabs,
  .notification-marketplace .marketplace-panel,
  .notification-marketplace .btn {
    display: none !important;
  }
  .notification-marketplace .configured-integration-card {
    break-inside: avoid;
  }
}
/* .nav-link.active {
    background-color: #eef2ff;
    color: #4f46e5;
    border-radius: 8px;
    font-weight: 600;
} */

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNzcyIsIm1hcHBpbmdzIjoiOzs7QUFBQSxnQkFBZ0I7QUFBaEI7Ozs7O0VBQUE7QUNBQTs7Ozs7O0VBQUE7QUNBQTs7Ozs7O0VBQUE7QUFZQTtFQU1JO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQU1BO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBVUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBS0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBTUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQVNBO0VBQ0E7RUFDQTtFQUNBO0VBS0E7RUFDQTtFQU1BO0VBQ0E7RUFDQTtFQU1BO0VBQ0E7QUY5Q0o7O0FFcURBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUZsREo7O0FFeURBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUZ0REo7O0FFNkRBO0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtBRmpFSjs7QUV3RUE7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBR0E7O2tFQUFBO0VBR0E7RUFDQTtFQUNBO0FGNUVKOztBRW1GQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUZoRko7O0FFdUZBO0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUtBO0VBQ0E7RUFDQTtFQUNBO0VBSUE7RUFJQTtBRnpHSjs7QUc3TUE7Ozs7O0VBQUE7QUFXQTtFQUVJOzs7cUNBQUE7RUFNQTt3RUFBQTtFQUlBO0FIc01KOztBRy9MQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FIa01KOztBRzNMQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBSDhMSjs7QUd2TEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUgwTEo7O0FHbkxBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FIc0xKOztBRzdLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUhnTEo7O0FHM0tBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QUg4S0o7O0FHektBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QUg0S0o7O0FHdktBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QUgwS0o7O0FHcktBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUh3S0o7QUd0S0k7O0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBSHdLUjs7QUdsS0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBSHFLSjs7QUdoS0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBSG1LSjs7QUc5SkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBSGlLSjs7QUc1SkE7RUFDSTtFQUNBO0FIK0pKOztBRzFKQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBSDZKSjs7QUd4SkE7RUFDSTtFQUNBO0FIMkpKOztBR3RKQTtFQUNJO0FIeUpKOztBR3BKQTtFQUNJO0VBQ0E7RUFDQTtBSHVKSjtBR3JKSTtFQUNJO0VBQ0E7QUh1SlI7O0FHakpBO0VBQ0k7RUFDQTtFQUNBO0FIb0pKOztBRy9JQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FIa0pKOztBRy9JQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FIa0pKOztBSWpZQTs7Ozs7Ozs7RUFBQTtBQ0FBOzs7Ozs7Ozs7Ozs7Ozs7RUFBQTtBQXFCQTtFQUNJO0FMd1lKOztBS2pZQTtFQUNJO0VBQ0E7QUxvWUo7QUtsWUk7RUFBWTtBTHFZaEI7QUtuWUk7RUFBWTtBTHNZaEI7QUtwWUk7RUFBWTtBTHVZaEI7O0FLaFlBO0VBQ0k7RUFDQTtBTG1ZSjs7QUtoWUE7RUFDSTtFQUNBO0VBQ0E7QUxtWUo7O0FLaFlBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FMbVlKO0FLallJO0VBQ0k7RUFDQTtBTG1ZUjs7QUsvWEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FMa1lKOztBSy9YQTtFQUNJO0VBQ0E7RUFDQTtBTGtZSjs7QUszWEE7RUFDSTtFQUNBO0VBQ0E7QUw4WEo7O0FLdlhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTDBYSjtBS3ZYSTtFQUNJO0FMeVhSO0FLdFhJO0VBQ0k7RUFDQTtBTHdYUjs7QUtoWEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUxtWEo7O0FLaFhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FMbVhKO0FLalhJO0VBQ0k7RUFDQTtBTG1YUjs7QUsvV0E7RUFDSTtFQUNBO0FMa1hKOztBSy9XQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTGtYSjs7QUsvV0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBTGtYSjs7QUszV0E7RUFDSTtBTDhXSjs7QUt2V0E7RUFDSTtFQUNBO0VBQ0E7QUwwV0o7QUt4V0k7RUFMSjtJQU1RO0lBQ0E7RUwyV047QUFDRjs7QUt4V0E7RUFDSTtFQUNBO0FMMldKOztBS3hXQTtFQUNJO0FMMldKOztBS3BXQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FMdVdKOztBS3BXQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTHVXSjtBS3JXSTtFQUFZO0FMd1doQjs7QUtqV0E7O0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FMb1dKO0FLbFdJOztFQUNJO0VBQ0E7QUxxV1I7QUtsV0k7O0VBQ0k7QUxxV1I7O0FLN1ZBO0VBRUk7SUFDSTtFTCtWTjtFSzVWRTtJQUNJO0lBQ0E7RUw4Vk47RUszVkU7SUFDSTtJQUNBO0lBQ0E7SUFDQTtFTDZWTjtFSzFWRTtJQUNJO0lBQ0E7RUw0Vk47RUt6VkU7SUFDSTtFTDJWTjtFS3hWRTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0VMMFZOO0VLdlZFO0lBQ0k7SUFDQTtFTHlWTjtFS3RWRTtJQUNJO0VMd1ZOO0VLclZFO0lBQ0k7RUx1Vk47RUtyVk07SUFDSTtFTHVWVjtBQUNGO0FLL1VBO0VBRUk7SUFDSTtFTGdWTjtFSzdVRTtJQUNJO0VMK1VOO0VLNVVFO0lBQ0k7RUw4VU47QUFDRjtBTXJwQkE7Ozs7OztFQUFBO0FBWUE7RUFDSTtFQUNBO0VBQ0E7QU5rcEJKOztBTTNvQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU44b0JKO0FNNW9CSTtFQVhKO0lBWVE7SUFDQTtFTitvQk47QUFDRjs7QU01b0JBO0VBQ0k7RUFDQTtFQUNBO0FOK29CSjs7QU01b0JBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTitvQko7O0FNNW9CQTtFQUNJO0VBQ0E7RUFDQTtBTitvQko7O0FNNW9CQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU4rb0JKOztBTTVvQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBTitvQko7O0FNNW9CQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU4rb0JKO0FNN29CSTtFQUNJO0FOK29CUjs7QU16b0JBO0VBQ0k7RUFDQTtFQUNBO0FONG9CSjtBTTFvQkk7RUFMSjtJQU1RO0lBQ0E7RU42b0JOO0FBQ0Y7O0FNMW9CQTtFQUNJO0VBQ0E7RUFDQTtBTjZvQko7O0FNeG9CQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU4yb0JKO0FNem9CSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTjJvQlI7QU16b0JRO0VBQ0k7QU4yb0JaO0FNeG9CUTtFQUNJO0FOMG9CWjtBTXZvQlE7RUFDSTtBTnlvQlo7QU1yb0JJO0VBQ0k7RUFDQTtBTnVvQlI7O0FNL25CQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU5rb0JKO0FNaG9CSTtFQUNJO0VBQ0E7QU5rb0JSO0FNL25CSTtFQUNJO0FOaW9CUjs7QU03bkJBO0VBQ0k7RUFDQTtFQUNBO0FOZ29CSjtBTTluQkk7RUFDSTtFQUNBO0FOZ29CUjs7QU14bkJBO0VBQ0k7RUFDQTtFQUNBO0FOMm5CSjtBTXpuQkk7RUFMSjtJQU1RO0VONG5CTjtBQUNGOztBTXJuQkE7RUFDSTtBTnduQko7O0FNcm5CQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FOd25CSjs7QU1sbkJBOzs7O0VBSUk7RUFDQTtFQUNBO0VBQ0E7QU5xbkJKO0FNL21CSTs7OztFQUNJO0VBQ0E7QU5vbkJSOztBTTltQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU5pbkJKO0FNL21CSTtFQVJKO0lBU1E7SUFDQTtFTmtuQk47QUFDRjs7QU0vbUJBO0VBQ0k7RUFDQTtFQUNBO0FOa25CSjs7QU0vbUJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTmtuQko7O0FNL21CQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FOa25CSjs7QU0vbUJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FOa25CSjtBTWhuQkk7RUFDSTtFQUNBO0VBQ0E7QU5rbkJSO0FNL21CSTtFQUNJO0VBQ0E7QU5pbkJSO0FNL21CUTtFQUNJO0VBQ0E7QU5pbkJaO0FNN21CSTtFQUNJO0FOK21CUjtBTTVtQkk7RUFDSTtBTjhtQlI7QU01bUJRO0VBQ0k7RUFDQTtBTjhtQlo7O0FNdm1CQTtFQUNJO0FOMG1CSjtBTXhtQkk7RUFISjtJQUlRO0VOMm1CTjtBQUNGOztBTXhtQkE7RUFDSTtFQUNBO0FOMm1CSjtBTXZtQlE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU55bUJaO0FNdm1CWTtFQUlJO0FOc21CaEI7QU1qbUJRO0VBdEJKO0lBdUJRO0VOb21CVjtBQUNGO0FNL2xCUTtFQUNJO0FOaW1CWjtBTS9sQlk7RUFDSTtBTmltQmhCO0FNN2xCWTtFQVJKO0lBU1E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VOZ21CZDtFTTlsQmM7SUFDSTtFTmdtQmxCO0VNN2xCYztJQUNJO0VOK2xCbEI7QUFDRjtBTTNsQlE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FONmxCWjtBTTNsQlk7RUFDSTtFQUNBO0FONmxCaEI7QU0xbEJZO0VBSUk7RUFDQTtFQUNBO0FOeWxCaEI7QU10bEJZO0VBQ0k7RUFDQTtBTndsQmhCO0FNcGxCWTtFQTNCSjtJQTRCUTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RU51bEJkO0VNcmxCYztJQUNJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFTnVsQmxCO0VNcGxCYztJQUNJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFTnNsQmxCO0VNcGxCa0I7SUFDSTtFTnNsQnRCO0VNbGxCYztJQUNJO0lBQ0E7RU5vbEJsQjtBQUNGO0FNOWtCSTtFQUVJO0lBQ0k7RU4ra0JWO0VNNWtCTTtJQUNJO0VOOGtCVjtFTTNrQk07SUFDSTtFTjZrQlY7RU0xa0JNO0lBQ0k7RU40a0JWO0VNemtCTTtJQUNJO0VOMmtCVjtBQUNGOztBTXJrQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBTndrQko7O0FNcmtCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FOd2tCSjs7QU1ya0JBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTndrQko7QU10a0JJO0VBQ0k7RUFDQTtBTndrQlI7QU1ya0JJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTnVrQlI7O0FNamtCQTtFQUNJO0FOb2tCSjs7QU0vakJBO0VBQ0k7QU5ra0JKOztBTS9qQkE7RUFDSTtFQUNBO0VBQ0E7QU5ra0JKO0FNaGtCSTtFQUNJO0VBQ0E7RUFDQTtBTmtrQlI7QU01akJJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QU44akJSOztBTXhqQkE7RUFDSTtFQUNBO0VBQ0E7QU4yakJKOztBTXRqQkk7RUFDSTtFQUNBO0VBQ0E7QU55akJSOztBTXJqQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBTndqQko7O0FNcmpCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU53akJKOztBTWpqQkE7RUFDSTtFQUNBO0VBQ0E7QU5vakJKO0FNbGpCSTtFQUxKO0lBTVE7SUFDQTtFTnFqQk47QUFDRjs7QU1sakJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QU5xakJKOztBTWxqQkE7RUFDSTtBTnFqQko7O0FNbGpCQTtFQUNJO0FOcWpCSjs7QU1sakJBO0VBQ0k7QU5xakJKOztBTWxqQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FOcWpCSjs7QU1sakJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTnFqQko7O0FNbGpCQTtFQUNJO0VBQ0E7QU5xakJKOztBTWxqQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBTnFqQko7O0FNbGpCQTtFQUNJO0FOcWpCSjs7QU1oakJBO0VBQ0k7RUFDQTtFQUNBO0FObWpCSjs7QU05aUJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QU5pakJKO0FNL2lCSTtFQUNJO0VBQ0E7QU5pakJSO0FNOWlCSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FOZ2pCUjtBTTFpQkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBTjRpQlI7QU12aUJJO0VBQ0k7RUFDQTtBTnlpQlI7O0FNcmlCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FOd2lCSjtBTXRpQkk7RUFDSTtBTndpQlI7O0FNbGlCSTtFQUNJO0FOcWlCUjs7QU0vaEJBO0VBQ0k7RUFDQTtFQUNBO0FOa2lCSjs7QU0vaEJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QU5raUJKO0FNaGlCSTtFQUNJO0VBQ0E7QU5raUJSOztBTTloQkE7RUFDSTtFQUNBO0VBQ0E7QU5paUJKOztBTTloQkE7RUFDSTtFQUNBO0VBQ0E7QU5paUJKOztBTTloQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBTmlpQko7O0FNOWhCQTs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FOaWlCSjtBTS9oQkk7O0VBQ0k7QU5raUJSOztBTTVoQkE7RUFDSTtFQUNBO0VBQ0E7QU4raEJKOztBTTVoQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FOK2hCSjs7QU01aEJBO0VBQ0k7RUFDQTtBTitoQko7O0FNNWhCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FOK2hCSjs7QU01aEJBO0VBQ0k7RUFDQTtFQUNBO0FOK2hCSjs7QU01aEJBO0VBQ0k7RUFDQTtFQUNBO0FOK2hCSjs7QU01aEJBOztFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU4raEJKO0FNN2hCSTs7RUFDSTtBTmdpQlI7O0FNNWhCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FOK2hCSjs7QU0xaEJBOztFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FONmhCSjtBTTNoQkk7O0VBQ0k7RUFDQTtBTjhoQlI7O0FNMWhCQTtFQUNJO0FONmhCSjs7QU10aEJBO0VBRUk7SUFDSTtJQUNBO0lBQ0E7RU53aEJOO0VNcmhCRTtJQUNJO0VOdWhCTjtFTXBoQkU7SUFDSTtFTnNoQk47RU1uaEJFO0lBQ0k7SUFDQTtFTnFoQk47RU1saEJFO0lBQ0k7SUFDQTtFTm9oQk47RU0vZ0JNO0lBQ0k7SUFDQTtJQUNBO0VOaWhCVjtFTTdnQkU7SUFDSTtJQUNBO0lBQ0E7RU4rZ0JOO0VNNWdCRTtJQUNJO0lBQ0E7SUFDQTtFTjhnQk47RU0zZ0JFO0lBQ0k7RU42Z0JOO0FBQ0Y7QU8xNENBOzs7Ozs7RUFBQTtBQVlBO0VBQ0k7RUFDQTtBUHU0Q0o7O0FPaDRDQTtFQUNJO0VBQ0E7QVBtNENKO0FPLzNDUTtFQUNJO0VBQ0E7RUFDQTtBUGk0Q1o7QU83M0NJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVArM0NSO0FPNTNDSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FQODNDUjs7QU90M0NBO0VBQ0k7RUFDQTtFQUNBO0FQeTNDSjtBT3YzQ0k7RUFDSTtBUHkzQ1I7QU90M0NJO0VBQ0k7QVB3M0NSOztBTzkyQ0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBUGkzQ0o7O0FPNTJDQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVArMkNKOztBTzUyQ0E7RUFDSTtFQUNBO0VBQ0E7QVArMkNKOztBTzEyQ0E7RUFDSTtFQUNBO0FQNjJDSjs7QU90MkNJO0VBQ0k7RUFDQTtFQUNBO0FQeTJDUjs7QU9qMkNBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVBvMkNKO0FPbDJDSTtFQUNJO0FQbzJDUjtBT2oyQ0k7RUFDSTtBUG0yQ1I7O0FPLzFDQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FQazJDSjs7QU8vMUNBO0VBQ0k7RUFDQTtBUGsyQ0o7O0FPLzFDQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FQazJDSjs7QU8zMUNBO0VBQ0k7QVA4MUNKOztBTzMxQ0E7RUFDSTtFQUNBO0VBQ0E7QVA4MUNKOztBTzMxQ0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBUDgxQ0o7O0FPMzFDQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FQODFDSjs7QU92MUNBO0VBQ0k7QVAwMUNKO0FPdDFDUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBUHcxQ1o7QU9sMUNRO0VBQ0k7RUFDQTtBUG8xQ1o7QU9sMUNZO0VBQ0k7QVBvMUNoQjtBT2oxQ1k7RUFDSTtBUG0xQ2hCO0FPLzBDUTtFQUNJO0VBQ0E7RUFDQTtBUGkxQ1o7QU83MENJO0VBQ0k7RUFDQTtFQUNBO0FQKzBDUjtBTzUwQ0k7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBUDgwQ1I7O0FPdDBDQTtFQUNJO0VBQ0E7RUFDQTtBUHkwQ0o7QU92MENJO0VBQ0k7QVB5MENSOztBT3IwQ0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBUHcwQ0o7QU90MENJO0VBQ0k7QVB3MENSOztBT3AwQ0E7RUFDSTtFQUNBO0VBQ0E7QVB1MENKOztBT3AwQ0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FQdTBDSjs7QU9wMENBO0VBQ0k7RUFDQTtFQUNBO0FQdTBDSjtBT3IwQ0k7RUFDSTtFQUNBO0FQdTBDUjtBT3AwQ0k7RUFDSTtFQUNBO0FQczBDUjtBT24wQ0k7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBUHEwQ1I7O0FPM3pDSTtFQUNJO0VBQ0E7RUFDQTtBUDh6Q1I7QU8zekNJO0VBQ0k7RUFDQTtBUDZ6Q1I7QU8xekNJO0VBQ0k7RUFDQTtFQUNBO0FQNHpDUjs7QU9sekNBO0VBQ0k7RUFDQTtBUHF6Q0o7O0FPaHpDQTtFQUNJO0VBQ0E7QVBtekNKOztBTzl5Q0E7RUFDSTtFQUNBO0FQaXpDSjs7QU85eUNBO0VBQ0k7RUFDQTtBUGl6Q0o7QU8veUNJO0VBQ0k7QVBpekNSOztBT3p5Q0E7RUFFSTs7SUFFSTtFUDJ5Q047RU94eUNFO0lBQ0k7RVAweUNOO0FBQ0Y7QU92eUNBO0VBRUk7SUFDSTtFUHd5Q047RU9yeUNFO0lBQ0k7RVB1eUNOO0VPcHlDRTtJQUNJO0VQc3lDTjtFT2p5Q007SUFDSTtFUG15Q1Y7QUFDRjtBTy94Q0E7RUFFSTtJQUNJO0lBQ0E7RVBneUNOO0VPN3hDRTtJQUNJO0VQK3hDTjtFTzV4Q0U7O0lBRUk7RVA4eENOO0VPenhDRTtJQUNJO0VQMnhDTjtFT3p4Q007SUFDSTtJQUNBO0VQMnhDVjtFT3h4Q007SUFDSTtFUDB4Q1Y7RU92eENNO0lBQ0k7RVB5eENWO0VPanhDTTtJQUNJO0lBQ0E7RVBteENWO0VPanhDVTtJQUNJO0VQbXhDZDtFTzF3Q007O0lBRUk7RVA0d0NWO0VPMXdDVTs7SUFDSTtFUDZ3Q2Q7RU9wd0NNO0lBQ0k7SUFDQTtFUHN3Q1Y7RU9wd0NVO0lBQ0k7SUFDQTtJQUNBO0VQc3dDZDtFT3B3Q2M7SUFDSTtJQUNBO0VQc3dDbEI7RU9sd0NVOztJQUVJO0lBQ0E7RVBvd0NkO0VPN3ZDRTtJQUNJO0VQK3ZDTjtFTzd2Q007SUFDSTtFUCt2Q1Y7RU81dkNNO0lBQ0k7RVA4dkNWO0FBQ0Y7QU90dkNBO0VBRUk7O0lBRUk7SUFDQTtFUHV2Q047RU9wdkNFO0lBQ0k7RVBzdkNOO0VPbnZDRTs7SUFFSTtJQUNBO0lBQ0E7RVBxdkNOO0VPbHZDRTs7O0lBR0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RVBvdkNOO0VPanZDRTtJQUNJO0lBQ0E7SUFDQTtFUG12Q047RU9odkNFO0lBQ0k7SUFDQTtFUGt2Q047RU8vdUNFOzs7SUFHSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VQaXZDTjtFTzl1Q0U7SUFDSTtJQUNBO0lBQ0E7RVBndkNOO0VPN3VDRTtJQUNJO0VQK3VDTjtFTzV1Q0U7SUFDSTtFUDh1Q047RU8zdUNFO0lBQ0k7SUFDQTtFUDZ1Q047RU8xdUNFO0lBQ0k7RVA0dUNOO0VPenVDRTs7O0lBR0k7SUFDQTtJQUNBO0VQMnVDTjtFT3h1Q0U7SUFDSTtJQUNBO0lBQ0E7RVAwdUNOO0VPdnVDRTs7O0lBR0k7SUFDQTtJQUNBO0VQeXVDTjtFT3R1Q0U7SUFDSTtJQUNBO0lBQ0E7RVB3dUNOO0VPcnVDRTtJQUNJO0lBQ0E7SUFDQTtFUHV1Q047RU9wdUNFO0lBQ0k7RVBzdUNOO0VPbnVDRTtJQUNJO0VQcXVDTjtFT2x1Q0U7SUFDSTtJQUNBO0VQb3VDTjtBQUNGO0FRbDFEQTs7Ozs7RUFBQTtBQVdBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FSKzBESjtBUTcwREk7RUFDSTtBUiswRFI7QVE1MERJO0VBQ0k7RUFDQTtBUjgwRFI7QVEzMERJO0VBQ0k7RUFDQTtFQUNBO0FSNjBEUjtBUTMwRFE7RUFDSTtBUjYwRFo7O0FRdDBESTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FSeTBEUjtBUXQwREk7RUFDSTtBUncwRFI7QVFyMERJO0VBQ0k7RUFDQTtFQUNBO0FSdTBEUjtBUXIwRFE7RUFDSTtFQUNBO0VBQ0E7QVJ1MERaO0FRcDBEUTtFQUNJO0VBQ0E7RUFDQTtBUnMwRFo7QVFwMERZO0VBQ0k7RUFDQTtBUnMwRGhCO0FRbjBEWTtFQUNJO0VBQ0E7QVJxMERoQjtBUS96RFk7RUFDSTtBUmkwRGhCOztBUXZ6REE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVIwekRKOztBUXZ6REE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FSMHpESjs7QVF2ekRBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FSMHpESjs7QVF2ekRBO0VBQ0k7RUFDQTtBUjB6REo7QVF4ekRJO0VBQ0k7RUFDQTtFQUNBO0FSMHpEUjtBUXZ6REk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FSeXpEUjs7QVFyekRBO0VBQ0k7RUFDQTtFQUNBO0FSd3pESjs7QVFyekRBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBUnd6REo7O0FRanpEQTtFQUVJO0lBQU87RVJvekRUO0VRbHpERTtJQUFLO0VScXpEUDtBQUNGO0FRbnpEQTtFQUVJO0lBQ0k7SUFDQTtFUm96RE47RVFqekRFO0lBQ0k7SUFDQTtFUm16RE47QUFDRjtBUWh6REE7RUFFSTtJQUNJO0lBQ0E7RVJpekROO0VROXlERTtJQUNJO0lBQ0E7RVJnekROO0FBQ0Y7QVF6eURBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVIyeURKOztBUXh5REE7RUFDSTtFQUNBO0FSMnlESjs7QVNoZ0VBOztFQUFBO0FBSUE7RUFDSTtFQUNBO0FUa2dFSjtBU2hnRUk7RUFDSTtFQUNBO0VBQ0E7QVRrZ0VSO0FTLy9ESTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FUaWdFUjtBUzkvREk7RUFDSTtFQUNBO0VBSUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVQ2L0RSO0FTei9EUTtFQUVJO0FUMC9EWjtBU3YvRFE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBVHkvRFo7QVN0L0RRO0VBQ0k7QVR3L0RaO0FTcC9ESTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FUcy9EUjtBU24vREk7RUFDSTtFQUNBO0VBQ0E7QVRxL0RSO0FTbi9EUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVRxL0RaOztBU2gvREE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FUbS9ESjtBU2ovREk7RUFDSTtFQUNBO0FUbS9EUjs7QVMvK0RBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FUay9ESjs7QVMvK0RBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FUay9ESjs7QVMvK0RBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVRrL0RKO0FTaC9ESTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVRrL0RSO0FTLytESTtFQUNJO0VBQ0E7QVRpL0RSOztBUzcrREE7RUFHSTtBVDgrREo7O0FTMytEQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7QVQwK0RKO0FTeCtESTtFQUNJO0VBQ0E7QVQwK0RSOztBU3QrREE7RUFFSTtJQUNJO0lBQ0E7RVR3K0ROO0VTcitERTtJQUNJO0lBQ0E7RVR1K0ROO0FBQ0Y7QVNwK0RBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVRzK0RKOztBU24rREE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FUcytESjtBU3ArREk7RUFDSTtBVHMrRFI7QVNuK0RJO0VBQ0k7QVRxK0RSO0FTbCtESTtFQUNJO0VBQ0E7QVRvK0RSOztBUzk5REk7RUFDSTtBVGkrRFI7QVM5OURJO0VBQ0k7QVRnK0RSO0FTNzlESTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVCs5RFI7O0FTejlESTtFQUNJO0FUNDlEUjtBU3o5REk7RUFDSTtFQUNBO0FUMjlEUjs7QVN2OURBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVQwOURKOztBU3Y5REE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FUMDlESjtBU3g5REk7RUFDSTtBVDA5RFI7O0FTdDlEQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FUeTlESjs7QVN0OURBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FUeTlESjs7QVN0OURBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FUeTlESjs7QVN0OURBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVR5OURKOztBU3Q5REE7RUFDSTtFQUNBO0VBQ0E7QVR5OURKOztBU3Q5REE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBVHk5REo7O0FTdDlEQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FUeTlESjtBU3Y5REk7RUFDSTtFQUNBO0VBQ0E7QVR5OURSO0FTdDlESTtFQUNJO0VBQ0E7RUFDQTtBVHc5RFI7O0FTcDlEQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVR1OURKOztBU3A5REE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FUdTlESjtBU3I5REk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FUdTlEUjtBU3I5RFE7RUFDSTtBVHU5RFo7O0FTbDlEQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVHE5REo7QVNuOURJO0VBQ0k7QVRxOURSOztBU2o5REE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FUbzlESjtBU2w5REk7RUFDSTtBVG85RFI7QVNqOURJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FUbTlEUjtBU2g5REk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBVGs5RFI7QVNoOURRO0VBRUk7QVRpOURaO0FTOThEUTtFQUNJO0VBQ0E7RUFDQTtBVGc5RFo7O0FVbDVFQTs7Ozs7RUFBQTtBQVdBO0VBR0k7RUFDQTtBVjg0RUo7QVUxNEVJO0VBQ0k7QVY0NEVSOztBVXg0RUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVjI0RUo7O0FVeDRFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FWMjRFSjs7QVVwNEVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZ1NEVKO0FVcjRFSTtFQVRKO0lBVVE7SUFDQTtFVnc0RU47QUFDRjs7QVVyNEVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVnc0RUo7O0FVcjRFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FWdzRFSjs7QVVyNEVBO0VBQ0k7RUFDQTtFQUNBO0FWdzRFSjtBVXQ0RUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWdzRFUjtBVXI0RUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWdTRFUjtBVW40RVE7RUFDSTtBVnE0RVo7QVVsNEVRO0VBQ0k7QVZvNEVaO0FVajRFUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FWbTRFWjs7QVUxM0VBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVY2M0VKOztBVTEzRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWNjNFSjtBVTMzRUk7RUFDSTtFQUNBO0FWNjNFUjtBVTMzRVE7RUFDSTtBVjYzRVo7QVV6M0VJO0VBQ0k7RUFDQTtBVjIzRVI7QVV6M0VRO0VBQ0k7RUFDQTtBVjIzRVo7QVV2M0VJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVZ5M0VSO0FVdDNFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZ3M0VSOztBVWgzRUE7RUFDSTtBVm0zRUo7O0FVaDNFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWbTNFSjtBVS8yRUk7O0VBRUk7QVZpM0VSOztBVTcyRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZnM0VKOztBVTcyRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVmczRUo7QVU5MkVJO0VBQ0k7RUFDQTtFQUNBO0FWZzNFUjs7QVU1MkVBO0VBQ0k7RUFDQTtFQUNBO0FWKzJFSjs7QVU1MkVBO0VBQ0k7RUFDQTtFQUNBO0FWKzJFSjs7QVU1MkVBO0VBQ0k7RUFDQTtFQUNBO0FWKzJFSjtBVTMyRUk7O0VBRUk7RUFDQTtBVjYyRVI7QVV4MkVJO0VBQ0k7QVYwMkVSOztBVXQyRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWeTJFSjs7QVVoMkVJO0VBQ0k7RUFDQTtFQUNBO0FWbTJFUjtBVTkxRVk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWZzJFaEI7QVU3MUVZO0VBQ0k7QVYrMUVoQjtBVXgxRUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVjAxRVI7QVV4MUVRO0VBQ0k7QVYwMUVaO0FVcjFFUTtFQUNJO0FWdTFFWjtBVXAxRVE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZzMUVaO0FVcDFFWTtFQUNJO0VBQ0E7QVZzMUVoQjtBVW4xRVk7RUFDSTtBVnExRWhCO0FVaDFFWTtFQUNJO0VBQ0E7QVZrMUVoQjtBVWgxRWdCO0VBQ0k7QVZrMUVwQjtBVTcwRVE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBViswRVo7QVV6MEVJO0VBQ0k7QVYyMEVSOztBVXYwRUE7RUFDSTtFQUNBO0VBQ0E7QVYwMEVKOztBVWwwRUk7O0VBRUk7RUFDQTtFQUNBO0VBQ0E7QVZxMEVSO0FVbjBFUTs7RUFDSTtFQUNBO0FWczBFWjtBVWgwRUk7RUFDSTtBVmswRVI7QVUzekVRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVjZ6RVo7QVUxekVRO0VBQ0k7RUFDQTtBVjR6RVo7QVUxekVZO0VBQ0k7QVY0ekVoQjtBVXp6RVk7RUFDSTtBVjJ6RWhCO0FVcHpFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWc3pFUjtBVXB6RVE7RUFDSTtBVnN6RVo7QVVuekVRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVZxekVaO0FVbHpFUTtFQUNJO0VBQ0E7RUFDQTtBVm96RVo7QVU5eUVJO0VBQ0k7QVZnekVSO0FVM3lFSTtFQUNJO0VBQ0E7QVY2eUVSO0FVM3lFUTtFQUNJO0VBQ0E7QVY2eUVaO0FVM3lFWTtFQUNJO0VBQ0E7QVY2eUVoQjs7QVVueUVBO0VBQ0k7QVZzeUVKOztBVW55RUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZzeUVKOztBVW55RUE7RUFDSTtFQUNBO0VBQ0E7QVZzeUVKOztBVW55RUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVnN5RUo7QVVweUVJO0VBQ0k7RUFDQTtFQUNBO0FWc3lFUjs7QVVseUVBO0VBQ0k7RUFDQTtFQUNBO0FWcXlFSjs7QVVseUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVZxeUVKOztBVWx5RUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7QVZveUVKO0FVbHlFSTtFQUVJO0VBQ0E7RUFDQTtBVm15RVI7O0FVL3hFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWa3lFSjtBVWh5RUk7RUFFSTtFQUNBO0VBQ0E7QVZpeUVSOztBVTd4RUE7RUFDSTtFQUNBO0VBQ0E7QVZneUVKOztBVTd4RUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBVmd5RUo7O0FVN3hFQTtFQUNJO0VBQ0E7QVZneUVKOztBVXZ4RUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVYweEVSO0FVdHhFUTtFQUNJO0VBQ0E7RUFDQTtBVnd4RVo7QVVyeEVRO0VBQ0k7QVZ1eEVaO0FVbnhFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FWcXhFUjtBVWx4RUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWb3hFUjtBVWx4RVE7RUFDSTtBVm94RVo7QVVqeEVRO0VBQ0k7RUFDQTtFQUNBO0FWbXhFWjs7QVUxd0VBO0VBQ0k7QVY2d0VKOztBVTF3RUE7RUFDSTtFQUNBO0VBQ0E7QVY2d0VKO0FVM3dFSTs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtBVjZ3RVI7QVUxd0VJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVjR3RVI7QVV6d0VJO0VBRUk7QVYwd0VSO0FVdndFSTtFQUNJO0FWeXdFUjtBVXZ3RVE7RUFDSTtBVnl3RVo7QVV0d0VRO0VBQ0k7QVZ3d0VaO0FVdHdFWTtFQUNJO0FWd3dFaEI7QVVqd0VJO0VBQ0k7RUFDQTtBVm13RVI7QVVod0VJO0VBRUk7QVZpd0VSO0FVOXZFSTtFQUNJO0VBQ0E7RUFDQTtBVmd3RVI7QVU3dkVJO0VBQ0k7QVYrdkVSO0FVenZFSTs7RUFFSTtFQUNBO0VBQ0E7QVYydkVSO0FVeHZFSTs7RUFFSTtBVjB2RVI7QVVydkVJOztFQUVJO0FWdXZFUjtBVXB2RUk7RUFDSTtBVnN2RVI7QVVudkVJO0VBQ0k7RUFDQTtFQUNBO0FWcXZFUjtBVWh2RUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBVmt2RVI7QVU5dUVRO0VBQ0k7RUFDQTtBVmd2RVo7O0FVenVFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVjR1RUo7QVUxdUVJO0VBQ0k7QVY0dUVSO0FVenVFSTtFQUNJO0FWMnVFUjtBVXh1RUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWMHVFUjtBVXh1RVE7RUFDSTtBVjB1RVo7QVV0dUVJO0VBQ0k7QVZ3dUVSOztBVWh1RUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBVm11RUo7O0FVaHVFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWbXVFSjtBVWh1RUk7RUFDSTtFQUNBO0FWa3VFUjtBVS90RUk7RUFDSTtFQUNBO0FWaXVFUjtBVTl0RUk7RUFDSTtFQUNBO0FWZ3VFUjtBVTd0RUk7RUFDSTtFQUNBO0FWK3RFUjtBVTV0RUk7RUFDSTtFQUNBO0FWOHRFUjs7QVV4dEVBO0VBQ0k7RUFDQTtBVjJ0RUo7QVV2dEVJO0VBRUk7RUFDQTtFQUNBO0FWd3RFUjs7QVVodEVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVZtdEVSO0FVaHRFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZrdEVSO0FVaHRFUTtFQUNJO0VBQ0E7RUFDQTtBVmt0RVo7QVUvc0VRO0VBQ0k7QVZpdEVaO0FVOXNFUTtFQUNJO0FWZ3RFWjtBVTlzRVk7RUFDSTtBVmd0RWhCO0FVN3NFWTtFQUNJO0FWK3NFaEI7QVUxc0VJO0VBQ0k7QVY0c0VSOztBVXRzRUE7RUFDSTtBVnlzRUo7O0FVdHNFQTs7RUFFSTtBVnlzRUo7O0FVbHNFQTtFQUNJO0VBQ0E7RUFDQTtBVnFzRUo7QVVuc0VJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVnFzRVI7O0FVN3JFQTtFQUNJO0VBQ0E7QVZnc0VKOztBVTdyRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZnc0VKO0FVOXJFSTtFQUNJO0VBQ0E7QVZnc0VSOztBVTVyRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBVityRUo7O0FVNXJFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVityRUo7O0FVNXJFQTtFQUNJO0VBQ0E7RUFDQTtBVityRUo7O0FVeHJFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVjJyRUo7QVV2ckVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVnlyRVI7O0FVbnJFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWc3JFSjs7QVVuckVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVZzckVKO0FVcHJFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZzckVSOztBVWxyRUE7RUFDSTtFQUNBO0VBQ0E7QVZxckVKOztBVWxyRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZxckVKO0FVbnJFSTtFQUNJO0VBQ0E7QVZxckVSO0FVbHJFSTtFQUNJO0FWb3JFUjtBVWpyRUk7RUFDSTtBVm1yRVI7QVVqckVRO0VBQ0k7QVZtckVaOztBVTlxRUE7RUFDSTtFQUNBO0VBQ0E7QVZpckVKOztBVTlxRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZpckVKO0FVOXFFSTtFQUNJO0VBQ0E7QVZnckVSO0FVN3FFSTtFQUNJO0VBQ0E7QVYrcUVSOztBVXZxRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVjBxRUo7QVV4cUVJO0VBVEo7SUFVUTtJQUNBO0VWMnFFTjtBQUNGOztBVXhxRUE7RUFDSTtFQUNBO0FWMnFFSjs7QVV4cUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVjJxRUo7QVV6cUVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVYycUVSO0FVenFFUTtFQUNJO0VBQ0E7RUFDQTtBVjJxRVo7O0FVcHFFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVnVxRVI7QVVscUVRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZvcUVaO0FVaHFFWTtFQUNJO0VBQ0E7RUFDQTtBVmtxRWhCO0FVOXBFUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FWZ3FFWjtBVTdwRVE7RUFDSTtFQUNBO0VBQ0E7QVYrcEVaOztBVXRwRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZ5cEVKO0FVdnBFSTtFQUNJO0VBQ0E7QVZ5cEVSO0FVdHBFSTtFQUNJO0VBQ0E7QVZ3cEVSO0FVcnBFSTtFQUNJO0VBQ0E7QVZ1cEVSO0FVcHBFSTtFQUNJO0VBQ0E7QVZzcEVSO0FVbnBFSTtFQUNJO0VBQ0E7QVZxcEVSO0FVbHBFSTtFQUNJO0VBQ0E7QVZvcEVSOztBVTVvRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBVitvRUo7O0FVeG9FQTtFQUNJO0FWMm9FSjtBVXpvRUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWMm9FUjs7QVV2b0VBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVjBvRUo7O0FVbm9FQTtFQUVJO0lBQ0k7SUFDQTtFVnFvRU47RVVsb0VFO0lBQ0k7RVZvb0VOO0VVL25FTTs7SUFFSTtFVmlvRVY7RVU3bkVFO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7RVYrbkVOO0VVNW5FRTtJQUNJO0VWOG5FTjtBQUNGO0FVcG5FSTtFQUNJO0VBQ0E7RUFDQTtBVnNuRVI7O0FVbG5FQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVnFuRUo7QVVsbkVJO0VBQ0k7RUFDQTtBVm9uRVI7QVVqbkVJO0VBQ0k7RUFDQTtBVm1uRVI7O0FVN21FQTtFQUNJO0VBQ0E7QVZnbkVKO0FVOW1FSTtFQUNJO0FWZ25FUjtBVTdtRUk7RUFDSTtFQUNBO0FWK21FUjs7QVUzbUVBO0VBQ0k7RUFDQTtBVjhtRUo7QVUxbUVJO0VBQ0k7RUFDQTtBVjRtRVI7O0FVeG1FQTtFQUVJO0lBQ0k7SUFDQTtFVjBtRU47RVV2bUVFO0lBQ0k7SUFDQTtFVnltRU47QUFDRjtBVWhtRUk7RUFDSTtFQUNBO0VBQ0E7QVZrbUVSO0FVL2xFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZpbUVSO0FVL2xFUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZpbUVaO0FVNWxFWTtFQUNJO0FWOGxFaEI7QVU1bEVnQjtFQUNJO0FWOGxFcEI7QVUzbEVnQjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FWNmxFcEI7QVV6bEVZO0VBQ0k7QVYybEVoQjtBVXRsRUk7RUFDSTtFQUNBO0VBQ0E7QVZ3bEVSOztBV3JpSEE7Ozs7O0VBQUE7QUFXQTtFQUNJO0VBQ0E7QVhtaUhKO0FXamlISTtFQUNJO0FYbWlIUjs7QVczaEhBO0VBQ0k7QVg4aEhKOztBV3RoSEE7RUFDSTtFQUNBO0VBQ0E7QVh5aEhKOztBV3RoSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWHloSEo7QVd0aEhJO0VBQ0k7RUFDQTtBWHdoSFI7O0FXcGhIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWHVoSEo7O0FXcGhIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVh1aEhKOztBV3BoSEE7RUFDSTtBWHVoSEo7O0FXcGhIQTtFQUNJO0VBQ0E7RUFDQTtBWHVoSEo7O0FXcGhIQTtFQUNJO0VBQ0E7QVh1aEhKOztBV3BoSEE7RUFDSTtBWHVoSEo7O0FXcGhIQTtFQUNJO0VBQ0E7RUFDQTtBWHVoSEo7QVdyaEhJO0VBTEo7SUFNUTtFWHdoSE47QUFDRjs7QVdyaEhBO0VBQ0k7QVh3aEhKOztBV2poSEE7RUFDSTtFQUNBO0VBQ0E7QVhvaEhKOztBV2poSEE7RUFDSTtBWG9oSEo7O0FXamhIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWG9oSEo7O0FXamhIQTtFQUNJO0VBQ0E7RUFDQTtBWG9oSEo7O0FXamhIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FYb2hISjtBV2xoSEk7RUFOSjtJQU9RO0lBQ0E7RVhxaEhOO0VXbmhITTtJQUNJO0VYcWhIVjtBQUNGOztBV2poSEE7RUFDSTtFQUNBO0VBQ0E7QVhvaEhKOztBV2poSEE7RUFDSTtBWG9oSEo7O0FXamhIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FYb2hISjs7QVc3Z0hBO0VBQ0k7RUFDQTtFQUNBO0FYZ2hISjs7QVc3Z0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWGdoSEo7QVc3Z0hJO0VBQ0k7RUFDQTtBWCtnSFI7O0FXM2dIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWDhnSEo7O0FXM2dIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVg4Z0hKOztBVzNnSEE7RUFDSTtBWDhnSEo7O0FXM2dIQTtFQUNJO0VBQ0E7RUFDQTtBWDhnSEo7O0FXM2dIQTtFQUNJO0VBQ0E7QVg4Z0hKOztBVzNnSEE7RUFDSTtBWDhnSEo7O0FXM2dIQTtFQUNJO0VBQ0E7RUFDQTtBWDhnSEo7QVc1Z0hJO0VBTEo7SUFNUTtFWCtnSE47QUFDRjs7QVd4Z0hBO0VBQ0k7RUFDQTtFQUNBO0FYMmdISjs7QVd4Z0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVgyZ0hKO0FXemdISTtFQUNJO0VBQ0E7QVgyZ0hSO0FXeGdISTtFQUNJO0VBQ0E7RUFDQTtBWDBnSFI7O0FXbGdIQTtFQUVJO0lBQ0k7SUFDQTtFWG9nSE47RVdqZ0hFO0lBQ0k7SUFDQTtFWG1nSE47QUFDRjtBV2hnSEE7O0VBRUk7QVhrZ0hKOztBVzMvR0E7O0VBRUk7RUFDQTtBWDgvR0o7O0FXMy9HQTs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FYOC9HSjtBVzUvR0k7O0VBQ0k7QVgrL0dSOztBWXZ6SEE7Ozs7OztFQUFBO0FBWUE7RUFDSTtBWnF6SEo7O0FZbHpIQTtFQUNJO0VBQ0E7RUFDQTtBWnF6SEo7O0FZOXlIQTtFQUNJO0VBQ0E7QVppekhKOztBWTl5SEE7RUFDSTtFQUNBO0VBQ0E7QVppekhKOztBWTl5SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaaXpISjs7QVk5eUhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWml6SEo7O0FZOXlIQTtFQUNJO0VBQ0E7RUFDQTtBWml6SEo7O0FZMXlIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWjZ5SEo7QVkzeUhJO0VBQ0k7RUFDQTtBWjZ5SFI7O0FZenlIQTtFQUNJO0VBQ0E7RUFDQTtBWjR5SEo7QVkxeUhJO0VBTEo7SUFNUTtFWjZ5SE47QUFDRjtBWXZ5SFE7RUFDSTtFQUNBO0FaeXlIWjs7QVlweUhBO0VBQ0k7RUFDQTtFQUNBO0FadXlISjs7QVlweUhBO0VBQ0k7RUFDQTtFQUNBO0FadXlISjs7QVlseUhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVpxeUhKO0FZbnlISTtFQUNJO0VBQ0E7RUFDQTtBWnF5SFI7QVlseUhJO0VBQ0k7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0Faa3lIUjtBWS94SEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaaXlIUjtBWS94SFE7RUFDSTtFQUNBO0FaaXlIWjs7QVk1eEhBO0VBQ0k7RUFDQTtFQUNBO0FaK3hISjtBWTd4SEk7RUFDSTtBWit4SFI7QVk1eEhJO0VBQ0k7QVo4eEhSOztBWXh4SEE7RUFDSTtFQUNBO0VBQ0E7QVoyeEhKO0FZenhISTtFQUxKO0lBTVE7RVo0eEhOO0FBQ0Y7O0FZcnhIQTtFQUNJO0Fad3hISjs7QVlyeEhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWnd4SEo7O0FZcnhIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0Fad3hISjs7QVlyeEhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0Fad3hISjs7QVlyeEhBO0VBQ0k7RUFDQTtFQUNBO0Fad3hISjtBWXR4SEk7RUFDSTtBWnd4SFI7O0FZcHhIQTtFQUNJO0VBQ0E7RUFDQTtBWnV4SEo7O0FZcHhIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FadXhISjs7QVlweEhBO0VBQ0k7RUFDQTtFQUNBO0FadXhISjs7QVlweEhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVp1eEhKO0FZcnhISTtFQUNJO0FadXhIUjtBWXB4SEk7RUFDSTtBWnN4SFI7QVlueEhJO0VBQ0k7QVpxeEhSO0FZbHhISTtFQUNJO0VBQ0E7QVpveEhSOztBWTV3SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWit3SEo7QVk3d0hJO0VBTko7SUFPUTtFWmd4SE47QUFDRjtBWTl3SEk7RUFWSjtJQVdRO0VaaXhITjtBQUNGOztBWTF3SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWjZ3SEo7O0FZMXdIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWjZ3SEo7O0FZMXdIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVo2d0hKOztBWTF3SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWjZ3SEo7O0FZMXdIQTtFQUNJO0FaNndISjs7QVl4d0hBO0VBQ0k7QVoyd0hKOztBWXh3SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaMndISjtBWXp3SEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVoyd0hSO0FZeHdISTtFQUNJO0FaMHdIUjtBWXZ3SEk7RUFDSTtBWnl3SFI7QVl0d0hJO0VBeEJKO0lBeUJRO0VaeXdITjtBQUNGOztBWWx3SEk7RUFDSTtBWnF3SFI7QVlsd0hJO0VBQ0k7QVpvd0hSO0FZbHdIUTtFQUhKO0lBT1E7RVprd0hWO0FBQ0Y7O0FZeHZISTs7RUFFSTtBWjJ2SFI7QVl2dkhRO0VBREo7SUFLUTtFWnV2SFY7QUFDRjs7QVludkhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVpzdkhKO0FZcHZISTtFQUNJO0Fac3ZIUjtBWW52SEk7RUFDSTtBWnF2SFI7QVlsdkhJO0VBQ0k7QVpvdkhSO0FZanZISTtFQUNJO0VBQ0E7QVptdkhSO0FZanZIUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FabXZIWjtBWTN1SEk7RUFDSTtBWjZ1SFI7QVkzdUhRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWjZ1SFo7QVkzdUhZO0VBQ0k7QVo2dUhoQjtBWTF1SFk7RUFDSTtFQUNBO0FaNHVIaEI7QVl6dUhZO0VBQ0k7QVoydUhoQjtBWXZ1SFE7RUFDSTtBWnl1SFo7QVl2dUhZO0VBQ0k7QVp5dUhoQjtBWWh1SFE7Ozs7OztFQUVJO0Fac3VIWjtBWTl0SFE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVpndUhaO0FZN3RIUTtFQUNJO0FaK3RIWjtBWXp0SFE7RUFDSTtBWjJ0SFo7QVl2dEhJO0VBQ0k7RUFDQTtBWnl0SFI7QVl2dEhRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWnl0SFo7QVlydEhJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVp1dEhSO0FZcHRISTtFQUNJO0VBQ0E7RUFDQTtFQUdBO0Fab3RIUjtBWTlzSEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSx1SEFDSTtBWitzSFo7QVkzc0hRO0VBQ0k7RUFDQTtBWjZzSFo7QVkxc0hRO0VBQ0k7QVo0c0haO0FZenNIUTtFQUNJO0VBQ0E7RUFDQTtBWjJzSFo7QVl2c0hJO0VBQ0k7QVp5c0hSO0FZdHNISTtFQUNJO0Fad3NIUjtBWXBzSEk7RUFwTEo7SUFxTFE7SUFDQTtJQUNBO0lBQ0Esc0VBQ0k7SUFJSjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RVptc0hOO0VZanNITTtJQUNJO0VabXNIVjtFWWhzSE07SUFDSTtFWmtzSFY7RVkvckhNO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RVppc0hWO0VZOXJITTtJQUNJO0VaZ3NIVjtFWTlySFU7SUFDSTtJQUNBO0VaZ3NIZDtFWTVySE07SUFDSTtFWjhySFY7RVk1ckhVO0lBQ0k7RVo4ckhkO0VZMXJITTtJQUNJO0VaNHJIVjtFWTFySFU7SUFDSTtFWjRySGQ7RVl4ckhNO0lBQ0k7RVowckhWO0VZeHJIVTtJQUNJO0VaMHJIZDtFWXRySE07SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RVp3ckhWO0VZbHJITTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0Vab3JIVjtFWWpySE07SUFDSTtFWm1ySFY7RVlockhNO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RVprckhWO0VZaHJIVTtJQUNJO0lBQ0E7RVprckhkO0VZL3FIVTtJQUNJO0lBQ0E7SUFDQTtFWmlySGQ7QUFDRjs7QVkxcUhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWjZxSEo7QVkzcUhJO0VBQ0k7RUFDQTtBWjZxSFI7QVkxcUhJO0VBQ0k7RUFDQTtFQUNBO0FaNHFIUjtBWXpxSEk7RUFDSTtFQUNBO0FaMnFIUjs7QVlycUhBO0VBQ0k7RUFDQTtBWndxSEo7O0FZcnFIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWndxSEo7QVl0cUhJO0VBQ0k7RUFDQTtFQUNBO0Fad3FIUjs7QVl6cEhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVo0cEhKOztBWXpwSEE7RUFDSTtFQUNBO0VBQ0E7QVo0cEhKOztBWXpwSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWjRwSEo7O0FZenBIQTtFQUNJO0VBQ0E7QVo0cEhKO0FZMXBISTs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWjRwSFI7O0FZeHBIQTtFQUNJO0VBQ0E7RUFDQTtBWjJwSEo7O0FZeHBIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVoycEhKO0FZenBISTtFQUNJO0VBQ0E7QVoycEhSO0FZeHBISTtFQUNJO0VBQ0E7QVowcEhSOztBWXRwSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaeXBISjtBWXZwSEk7RUFDSTtFQUNBO0VBQ0E7QVp5cEhSOztBWWpwSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWm9wSEo7O0FZanBIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVpvcEhKOztBWWpwSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWm9wSEo7O0FZanBIQTtFQUNJO0VBQ0E7RUFDQTtBWm9wSEo7O0FZanBIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0Fab3BISjs7QVlqcEhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWm9wSEo7QVlscEhJO0VBVko7SUFXUTtFWnFwSE47QUFDRjs7QVlscEhBO0VBQ0k7RUFDQTtFQUNBO0FacXBISjtBWW5wSEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FacXBIUjtBWW5wSFE7RUFQSjtJQVFRO0Vac3BIVjtBQUNGOztBWWxwSEE7RUFDSTtFQUNBO0VBQ0E7QVpxcEhKOztBWTlvSEE7RUFDSTtFQUNBO0FaaXBISjtBWS9vSEk7RUFKSjtJQUtRO0Vaa3BITjtBQUNGOztBWS9vSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWmtwSEo7O0FZL29IQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWmtwSEo7O0FZL29IQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVprcEhKOztBWS9vSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWmtwSEo7O0FZL29IQTtFQUNJO0Faa3BISjs7QVkvb0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVprcEhKO0FZaHBISTtFQUNJO0Faa3BIUjs7QVk5b0hBO0VBQ0k7RUFDQTtBWmlwSEo7O0FZOW9IQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FaaXBISjs7QVkzb0hJO0VBQ0k7QVo4b0hSOztBWTFvSEE7RUFDSTtFQUNBO0VBQ0E7QVo2b0hKO0FZM29ISTtFQUNJO0VBQ0E7RUFDQTtBWjZvSFI7QVl2b0hJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWnlvSFI7O0FZbm9IQTtFQUNJO0VBQ0E7RUFDQTtBWnNvSEo7QVlwb0hJO0VBQ0k7RUFDQTtFQUNBO0Fac29IUjs7QVk5bkhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWmlvSEo7QVkvbkhJO0VBQ0k7RUFDQTtBWmlvSFI7QVkvbkhRO0VBQ0k7QVppb0haO0FZOW5IUTtFQUNJO0FaZ29IWjs7QVkzbkhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVo4bkhKO0FZNW5ISTtFQUNJO0FaOG5IUjtBWTNuSEk7RUFDSTtBWjZuSFI7O0FZem5IQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaNG5ISjs7QVl6bkhBO0VBQ0k7QVo0bkhKOztBWXpuSEE7RUFDSTtFQUNBO0VBQ0E7QVo0bkhKOztBWXhuSEE7RUFDSTtBWjJuSEo7O0FZeG5IQTtFQUNJO0VBQ0E7RUFDQTtBWjJuSEo7QVl6bkhJO0VBTEo7SUFNUTtFWjRuSE47QUFDRjs7QVlybkhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVp3bkhKOztBWXJuSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVp3bkhKOztBWW5uSEE7RUFDSTtFQUNBO0Fac25ISjtBWXBuSEk7RUFDSTtFQUNBO0VBQ0E7QVpzbkhSO0FZcG5IUTtFQUNJO0VBQ0E7QVpzbkhaO0FZbG5ISTtFQUNJO0VBQ0E7QVpvbkhSO0FZbG5IUTtFQUNJO0Fab25IWjtBWWhuSEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0Faa25IUjtBWS9tSEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaaW5IUjtBWS9tSFE7RUFDSTtFQUNBO0FaaW5IWjtBWTltSFE7RUFDSTtFQUNBO0FaZ25IWjtBWTltSFk7RUFDSTtBWmduSGhCO0FZM21ISTtFQUNJO0FaNm1IUjs7QVlybUhBO0VBRUk7SUFDSTtFWnVtSE47RVlwbUhFO0lBQ0k7SUFDQTtJQUNBO0Vac21ITjtBQUNGO0FZbm1IQTtFQUVJO0lBQ0k7RVpvbUhOO0FBQ0Y7QVlqbUhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWm1tSEo7QVlqbUhJO0VBQ0k7RUFDQTtBWm1tSFI7O0FZL2xIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0Faa21ISjs7QVkvbEhBO0VBQ0k7RUFDQTtFQUNBO0Faa21ISjs7QVkvbEhBO0VBQ0k7RUFDQTtFQUNBO0Faa21ISjs7QVkvbEhBO0VBQ0k7RUFDQTtFQUNBO0Faa21ISjs7QVkvbEhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0Faa21ISjtBWWhtSEk7RUFDSTtFQUNBO0Faa21IUjtBWS9sSEk7RUFDSTtFQUNBO0VBQ0E7QVppbUhSOztBWXpsSEE7RUFFSTtJQUNJO0lBQ0E7RVoybEhOO0VZeGxIRTtJQUNJO0lBQ0E7RVowbEhOO0FBQ0Y7QVlubEhBO0VBRUk7SUFDSTtJQUNBO0Vab2xITjtFWWpsSEU7SUFDSTtJQUNBO0VabWxITjtFWWhsSEU7SUFDSTtJQUNBO0Vaa2xITjtFWS9rSEU7SUFDSTtFWmlsSE47RVk5a0hFOzs7SUFHSTtFWmdsSE47RVk3a0hFO0lBQ0k7RVora0hOO0VZN2tITTtJQUNJO0VaK2tIVjtFWTNrSEU7SUFDSTtFWjZrSE47RVkza0hNOztJQUVJO0VaNmtIVjtBQUNGO0FZbGtIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVpva0hKO0FZbGtISTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWm9rSFI7QVlsa0hRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0Fab2tIWjtBWWprSFE7RUFDSTtBWm1rSFo7QVlqa0hZO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVpta0hoQjtBWWhrSFk7RUFDSTtFQUNBO0VBQ0E7QVpra0hoQjtBWTdqSEk7RUFDSTtFQUNBO0VBQ0E7QVorakhSOztBWXRqSEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWnlqSFI7QVl2akhRO0VBTko7SUFPUTtFWjBqSFY7QUFDRjtBWXhqSFE7RUFDSTtBWjBqSFo7QVl2akhRO0VBQ0k7RUFDQTtFQUNBO0FaeWpIWjtBWXZqSFk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWnlqSGhCO0FZdGpIWTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVp3akhoQjtBWXJqSFk7RUFDSTtFQUNBO0FadWpIaEI7QVlwakhZO0VBQ0k7RUFDQTtFQUNBO0Fac2pIaEI7QVlqakhJO0VBQ0k7RUFDQTtBWm1qSFI7QVk5aUhJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVpnakhSO0FZOWlIUTtFQU5KO0lBT1E7RVppakhWO0FBQ0Y7QVkvaUhRO0VBQ0k7RUFDQTtFQUNBO0FaaWpIWjtBWS9pSFk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWmlqSGhCO0FZOWlIWTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVpnakhoQjtBWTVpSGdCO0VBRUk7QVo2aUhwQjtBWXppSFk7RUFDSTtFQUNBO0FaMmlIaEI7QVl4aUhZO0VBQ0k7RUFDQTtFQUNBO0FaMGlIaEI7O0FZcGlIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FadWlISjtBWXJpSEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVp1aUhSO0FZcGlISTtFQUNJO0VBQ0E7RUFDQTtBWnNpSFI7QVlwaUhRO0VBQ0k7RUFDQTtBWnNpSFo7O0FZL2hIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVpraUhKO0FZaGlISTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWmtpSFI7QVloaUhRO0VBQ0k7QVpraUhaO0FZL2hIUTtFQUNJO0FaaWlIWjtBWTloSFE7RUFDSTtBWmdpSFo7QVk1aEhJO0VBQ0k7RUFDQTtFQUNBO0FaOGhIUjtBWTVoSFE7RUFDSTtFQUNBO0VBQ0E7QVo4aEhaO0FZM2hIUTtFQUNJO0VBQ0E7RUFDQTtBWjZoSFo7QVkzaEhZO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaNmhIaEI7QVkzaEhnQjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWjZoSHBCO0FZMWhIZ0I7RUFDSTtBWjRoSHBCO0FZdmhIUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVp5aEhaO0FZdmhIWTtFQUNJO0VBQ0E7QVp5aEhoQjtBWXRoSFk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0Fad2hIaEI7QVluaEhJO0VBQ0k7QVpxaEhSOztBWTNnSEE7RUFDSTtFQUNBO0FaOGdISjs7QVl6Z0hBO0VBQ0k7RUFDQTtFQUNBO0FaNGdISjs7QVl6Z0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVo0Z0hKO0FZMWdISTtFQUNJO0FaNGdIUjs7QVl4Z0hBO0VBQ0k7RUFDQTtFQUNBO0FaMmdISjs7QVl4Z0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVoyZ0hKOztBWXRnSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVp5Z0hKOztBWXRnSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaeWdISjtBWXZnSEk7RUFDSTtFQUNBO0VBQ0E7QVp5Z0hSOztBWXJnSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVp3Z0hKOztBWXJnSEE7RUFDSTtFQUNBO0VBQ0E7QVp3Z0hKOztBWW5nSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVpzZ0hKOztBWW5nSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVpzZ0hKO0FZcGdISTtFQUNJO0VBQ0E7QVpzZ0hSOztBWWxnSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FacWdISjtBWW5nSEk7RUFDSTtBWnFnSFI7QVluZ0hRO0VBQ0k7QVpxZ0haOztBWWhnSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVptZ0hKOztBWWhnSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWm1nSEo7O0FZaGdIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FabWdISjs7QVloZ0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVptZ0hKOztBWWhnSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FabWdISjtBWWpnSEk7RUFDSTtFQUNBO0VBQ0E7QVptZ0hSOztBYXgyS0E7Ozs7OztFQUFBO0FBWUE7RUFDSTtBYnMyS0o7O0FhbjJLQTtFQUNJO0VBQ0E7RUFDQTtBYnMyS0o7O0FhLzFLQTtFQUNJO0VBQ0E7QWJrMktKOztBYS8xS0E7RUFDSTtFQUNBO0VBQ0E7QWJrMktKOztBYS8xS0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiazJLSjs7QWEvMUtBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYmsyS0o7O0FhLzFLQTtFQUNJO0VBQ0E7RUFDQTtBYmsyS0o7O0FhMzFLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FiODFLSjtBYTUxS0k7RUFOSjtJQU9RO0ViKzFLTjtBQUNGOztBYXgxS0E7RUFDSTtFQUNBO0FiMjFLSjtBYXoxS0k7RUFKSjtJQUtRO0lBQ0E7RWI0MUtOO0FBQ0Y7O0FhejFLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FiNDFLSjs7QWF6MUtBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiNDFLSjs7QWF6MUtBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYjQxS0o7O0FhejFLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FiNDFLSjs7QWF6MUtBO0VBQ0k7QWI0MUtKOztBYXYxS0E7RUFDSTtFQUNBO0FiMDFLSjtBYXgxS0k7RUFDSTtBYjAxS1I7QWF2MUtJO0VBQ0k7RUFDQTtBYnkxS1I7O0FhcjFLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYncxS0o7O0FhcjFLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FidzFLSjtBYXQxS0k7RUFDSTtFQUNBO0VBQ0E7QWJ3MUtSOztBYXAxS0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJ1MUtKOztBYWwxS0E7RUFDSTtFQUNBO0VBQ0E7QWJxMUtKOztBYWwxS0E7RUFDSTtFQUNBO0VBQ0E7QWJxMUtKOztBYWwxS0E7RUFDSTtFQUNBO0FicTFLSjs7QWFsMUtBO0VBQ0k7RUFDQTtFQUNBO0FicTFLSjs7QWFoMUtBO0VBQ0k7RUFDQTtFQUNBO0FibTFLSjs7QWFoMUtBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FibTFLSjs7QWFoMUtBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FibTFLSjs7QWFoMUtBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYm0xS0o7O0FhOTBLQTtFQUNJO0VBQ0E7RUFDQTtBYmkxS0o7O0FhOTBLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FiaTFLSjs7QWE5MEtBO0VBQ0k7RUFDQTtBYmkxS0o7O0FhOTBLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FiaTFLSjs7QWE1MEtBO0VBQ0k7QWIrMEtKOztBYTEwS0E7RUFDSTtBYjYwS0o7O0FhMTBLQTtFQUNJO0VBQ0E7RUFDQTtBYjYwS0o7QWEzMEtJO0VBQ0k7RUFDQTtFQUNBO0FiNjBLUjtBYXQwS0k7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FidzBLUjs7QWEvektJO0VBREo7SUFFUTtFYm0wS047QUFDRjs7QWFoMEtBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWJtMEtKOztBYWgwS0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJtMEtKOztBYWgwS0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FibTBLSjs7QWFoMEtBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWJtMEtKOztBYWgwS0E7RUFDSTtBYm0wS0o7O0FhaDBLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYm0wS0o7O0FhenpLSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWI0ektSO0FhMXpLUTtFQUNJO0VBQ0E7QWI0ektaO0FhdHpLSTtFQUNJO0VBQ0E7QWJ3ektSO0FhbnpLSTtFQUNJO0FicXpLUjtBYWh6S0k7RUFDSTtFQUNBO0Fia3pLUjtBYTd5S0k7RUFDSTtBYit5S1I7O0FhdnlLQTtFQUNJO0VBQ0E7RUFDQTtBYjB5S0o7O0FhdnlLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiMHlLSjtBYXh5S0k7RUFDSTtFQUNBO0FiMHlLUjtBYXZ5S0k7RUFDSTtFQUNBO0VBQ0E7QWJ5eUtSO0FhdnlLUTtFQUNJO0VBQ0E7QWJ5eUtaO0FhdHlLUTtFQUNJO0VBQ0E7QWJ3eUtaO0FhcHlLSTtFQUNJO0VBQ0E7QWJzeUtSOztBYWx5S0E7RUFDSTtBYnF5S0o7O0FhbHlLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FicXlLSjs7QWFseUtBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWJxeUtKOztBYWx5S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJxeUtKOztBYWx5S0E7RUFDSTtFQUNBO0VBQ0E7QWJxeUtKOztBYWx5S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYnF5S0o7O0FhbHlLQTtFQUNJO0VBQ0E7QWJxeUtKOztBYWx5S0E7RUFDSTtFQUNBO0FicXlLSjs7QWFseUtBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYnF5S0o7O0FhOXhLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYml5S0o7QWEveEtJOztFQUVJO0FiaXlLUjs7QWE3eEtBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiZ3lLSjtBYTl4S0k7RUFDSTtFQUNBO0FiZ3lLUjs7QWF4eEtBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWIyeEtKO0FhenhLSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWIyeEtSO0FheHhLSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYjB4S1I7QWF2eEtJO0VBQ0k7RUFDQTtFQUNBO0FieXhLUjtBYXR4S0k7RUFDSTtFQUNBO0Fid3hLUjs7QWFseEtBO0VBQ0k7QWJxeEtKOztBYTl3S0E7O0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJpeEtKO0FhL3dLSTs7RUFDSTtFQUNBO0Fia3hLUjtBYS93S0k7O0VBQ0k7RUFDQTtBYmt4S1I7QWFoeEtROztFQUNJO0FibXhLWjs7QWE5d0tBO0VBQ0k7QWJpeEtKOztBYTl3S0E7RUFDSTtFQUNBO0FiaXhLSjs7QWExd0tBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYjZ3S0o7O0FhMXdLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYjZ3S0o7O0FhMXdLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWI2d0tKOztBYTF3S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiNndLSjs7QWExd0tBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYjZ3S0o7O0FhMXdLQTtFQUNJO0FiNndLSjs7QWF0d0tBO0VBQ0k7RUFDQTtFQUNBO0FieXdLSjs7QWF0d0tBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYnl3S0o7O0FhdHdLQTtFQUNJO0VBQ0E7QWJ5d0tKOztBYXR3S0E7RUFDSTtFQUNBO0FieXdLSjs7QWF0d0tBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWJ5d0tKOztBYXR3S0E7RUFDSTtFQUNBO0VBQ0E7QWJ5d0tKOztBYXR3S0E7RUFDSTtFQUNBO0VBQ0E7QWJ5d0tKOztBYXR3S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FieXdLSjtBYXZ3S0k7RUFDSTtFQUNBO0FieXdLUjs7QWFyd0tBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0Fid3dLSjs7QWFqd0tBO0VBQ0k7RUFDQTtFQUNBO0Fib3dLSjtBYWx3S0k7RUFDSTtFQUNBO0Fib3dLUjtBYWp3S0k7RUFDSTtBYm13S1I7O0FhM3ZLQTtFQUVJO0lBQ0k7SUFDQTtFYjZ2S047RWExdktFO0lBQ0k7SUFDQTtFYjR2S047RWF6dktFO0lBQ0k7SUFDQTtFYjJ2S047RWF4dktFO0lBQ0k7RWIwdktOO0VhdnZLRTtJQUNJO0VieXZLTjtFYXR2S0U7SUFDSTtFYnd2S047RWFydktFO0lBQ0k7SUFDQTtFYnV2S047RWFydktNO0lBQ0k7SUFDQTtFYnV2S1Y7RWFudktFO0lBQ0k7SUFDQTtJQUNBO0VicXZLTjtBQUNGO0FjM2pNQTs7Ozs7RUFBQTtBQVNBO0VBQ0k7QWQwak1KO0FjeGpNSTtFQUNJO0VBQ0E7QWQwak1SOztBZXhrTUE7Ozs7O0VBQUE7QUFXQTtFQUNJO0Fmc2tNSjs7QWdCbGxNQTs7Ozs7O0VBQUE7QUFZQTtFQUNJO0VBQ0E7QWhCZ2xNSjtBZ0I5a01JO0VBSko7SUFLUTtJQUNBO0VoQmlsTU47QUFDRjs7QWdCOWtNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCaWxNSjs7QWdCOWtNQTtFQUNJO0VBQ0E7QWhCaWxNSjs7QWdCOWtNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEJpbE1KO0FnQi9rTUk7RUFDSTtFQUNBO0VBQ0E7QWhCaWxNUjtBZ0I5a01JO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWhCZ2xNUjs7QWdCNWtNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCK2tNSjs7QWdCNWtNQTtFQUNJO0FoQitrTUo7O0FnQnhrTUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCMmtNSjtBZ0J6a01JO0VBWEo7SUFZUTtJQUNBO0lBQ0E7RWhCNGtNTjtBQUNGOztBZ0J6a01BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQjRrTUo7O0FnQnprTUE7RUFDSTtBaEI0a01KOztBZ0J6a01BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQjRrTUo7O0FnQnprTUE7RUFDSTtFQUNBO0VBQ0E7QWhCNGtNSjs7QWdCcmtNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQndrTUo7QWdCcmtNSTtFQUNJO0FoQnVrTVI7O0FnQm5rTUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCc2tNSjs7QWdCbmtNQTtFQUNJO0VBQ0E7QWhCc2tNSjs7QWdCbmtNQTtFQUNJO0FoQnNrTUo7O0FnQm5rTUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCc2tNSjs7QWdCL2pNQTtFQUNJO0VBQ0E7RUFDQTtBaEJra01KO0FnQmhrTUk7RUFMSjtJQU1RO0lBQ0E7RWhCbWtNTjtBQUNGOztBZ0Joa01BO0VBQ0k7RUFDQTtFQUNBO0FoQm1rTUo7O0FnQmhrTUE7RUFDSTtBaEJta01KOztBZ0Joa01BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEJta01KOztBZ0Joa01BO0VBQ0k7RUFDQTtFQUNBO0FoQm1rTUo7O0FnQjVqTUE7RUFDSTtFQUNBO0VBQ0E7QWhCK2pNSjs7QWdCNWpNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCK2pNSjtBZ0I3ak1JO0VBQ0k7QWhCK2pNUjs7QWdCM2pNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FoQjhqTUo7O0FnQjNqTUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEI4ak1KOztBZ0Izak1BO0VBQ0k7RUFDQTtBaEI4ak1KOztBZ0Izak1BO0VBQ0k7RUFDQTtBaEI4ak1KOztBZ0Izak1BO0VBQ0k7QWhCOGpNSjs7QWdCM2pNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FoQjhqTUo7O0FnQjNqTUE7RUFDSTtFQUNBO0VBQ0E7QWhCOGpNSjs7QWdCM2pNQTtFQUNJO0VBQ0E7QWhCOGpNSjs7QWdCdmpNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQjBqTUo7QWdCeGpNSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FoQjBqTVI7QWdCdmpNSTtFQUNJO0FoQnlqTVI7QWdCdGpNSTtFQUNJO0FoQndqTVI7O0FnQmhqTUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQm1qTUo7O0FnQmhqTUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBaEJtak1KO0FnQmpqTUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBaEJtak1SO0FnQmhqTUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBaEJrak1SOztBZ0I5aU1BO0VBQ0k7RUFDQTtFQUNBO0FoQmlqTUo7QWdCL2lNSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FoQmlqTVI7QWdCL2lNUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCaWpNWjs7QWdCdmlNQTtFQUVJO0lBQ0k7RWhCeWlNTjtBQUNGO0FnQnRpTUE7RUFHSTtJQUNJO0VoQnNpTU47RWdCcGlNTTtJQUNJO0lBQ0E7RWhCc2lNVjtBQUNGO0FnQjloTUE7RUFFSTs7SUFFSTtFaEIraE1OO0FBQ0Y7QWlCbjdNQTs7Ozs7RUFBQTtBQWFJO0VBQ0k7QWpCODZNUjs7QWlCeDZNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCMjZNSjtBaUJ6Nk1JO0VBUEo7SUFRUTtJQUNBO0lBQ0E7RWpCNDZNTjtBQUNGOztBaUJ6Nk1BO0VBQ0k7QWpCNDZNSjs7QWlCejZNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FqQjQ2TUo7QWlCMTZNSTtFQU5KO0lBT1E7SUFDQTtFakI2Nk1OO0VpQjM2TU07SUFDSTtJQUNBO0VqQjY2TVY7QUFDRjs7QWlCcjZNQTtFQUNJO0FqQnc2TUo7O0FpQnI2TUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBakJ3Nk1KO0FpQnQ2TUk7RUFOSjtJQU9RO0lBQ0E7RWpCeTZNTjtBQUNGOztBaUJ0Nk1BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCeTZNSjtBaUJ2Nk1JO0VBQ0k7RUFDQTtFQUNBO0FqQnk2TVI7QWlCdDZNSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCdzZNUjtBaUJyNk1JO0VBQ0k7QWpCdTZNUjs7QWlCbjZNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FqQnM2TUo7QWlCcDZNSTtFQU5KO0lBT1E7RWpCdTZNTjtBQUNGOztBaUJwNk1BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakJ1Nk1KOztBaUJwNk1BO0VBQ0k7QWpCdTZNSjtBaUJyNk1JO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQnU2TVI7QWlCcjZNUTtFQUNJO0FqQnU2TVo7QWlCcDZNUTtFQUNJO0FqQnM2TVo7QWlCbDZNSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCbzZNUjtBaUJqNk1JO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCbTZNUjs7QWlCNzVNQTtFQUNJO0FqQmc2TUo7O0FpQjc1TUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQmc2TUo7QWlCOTVNSTtFQUNJO0VBQ0E7QWpCZzZNUjtBaUI3NU1JO0VBQ0k7QWpCKzVNUjs7QWlCdjVNQTtFQUNJO0FqQjA1TUo7O0FpQnY1TUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCMDVNSjtBaUJ4NU1JO0VBUko7SUFTUTtJQUNBO0VqQjI1TU47QUFDRjs7QWlCdDVNSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakJ5NU1SO0FpQnY1TVE7RUFDSTtFQUNBO0VBQ0E7QWpCeTVNWjs7QWlCaDVNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakJtNU1KOztBaUI5NE1JO0VBQ0k7RUFDQTtFQUNBO0FqQmk1TVI7QWlCOTRNSTtFQUNJO0VBQ0E7QWpCZzVNUjtBaUI3NE1JO0VBQ0k7QWpCKzRNUjtBaUI3NE1RO0VBSEo7SUFJUTtFakJnNU1WO0FBQ0Y7O0FpQjE0TUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakI2NE1KO0FpQjM0TUk7RUFDSTtFQUNBO0VBQ0E7QWpCNjRNUjs7QWlCdjRNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCMDRNSjs7QWlCdjRNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FqQjA0TUo7O0FpQnI0TUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQnc0TUo7QWlCdDRNSTtFQUNJO0VBQ0E7QWpCdzRNUjtBaUJyNE1JO0VBQ0k7RUFDQTtFQUNBO0FqQnU0TVI7QWlCcDRNSTtFQXJCSjtJQXNCUTtJQUNBO0VqQnU0TU47QUFDRjs7QWlCbDRNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FqQnE0TUo7QWlCbjRNSTtFQUNJO0VBQ0E7RUFDQTtBakJxNE1SO0FpQm40TVE7RUFDSTtBakJxNE1aOztBaUI5M01BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakJpNE1KO0FpQi8zTUk7RUFDSTtBakJpNE1SO0FpQjkzTUk7RUFDSTtBakJnNE1SO0FpQjczTUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBakIrM01SOztBaUJ6M01BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWpCNDNNSjtBaUIxM01JO0VBQ0k7RUFDQTtFQUNBO0FqQjQzTVI7QWlCejNNSTtFQUNJO0VBQ0E7RUFDQTtBakIyM01SO0FpQngzTUk7RUFDSTtFQUNBO0FqQjAzTVI7O0FpQnAzTUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQnUzTUo7O0FpQmwzTUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCcTNNSjtBaUJuM01JO0VBQ0k7RUFDQTtFQUNBO0FqQnEzTVI7QWlCbDNNSTtFQUNJO0VBQ0E7RUFDQTtBakJvM01SO0FpQmwzTVE7RUFDSTtBakJvM01aO0FpQmgzTUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakJrM01SOztBaUIxMk1BO0VBRUk7SUFDSTtFakI0Mk1OO0VpQnoyTUU7SUFDSTtFakIyMk1OO0VpQngyTUU7SUFDSTtJQUNBO0VqQjAyTU47RWlCdjJNRTtJQUNJO0VqQnkyTU47RWlCdDJNRTtJQUNJO0VqQncyTU47RWlCcjJNRTtJQUNJO0VqQnUyTU47QUFDRjtBaUJwMk1BO0VBRUk7SUFDSTtFakJxMk1OO0VpQmwyTUU7SUFDSTtFakJvMk1OO0VpQmoyTUU7SUFDSTtJQUNBO0VqQm0yTU47RWlCaDJNRTtJQUNJO0VqQmsyTU47RWlCLzFNRTtJQUNJO0VqQmkyTU47QUFDRjtBaUJ4MU1BOztFQUVJO0VBQ0E7QWpCMDFNSjs7QWlCdDFNQTtFQUVJO0lBQ0k7RWpCdzFNTjtFaUJyMU1FO0lBQ0k7RWpCdTFNTjtBQUNGO0FpQm4xTUE7RUFFSTs7OztJQUlJO0VqQm8xTU47QUFDRjtBa0JsNE5BOzs7Ozs7RUFBQTtBQVlBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbEIrM05KOztBa0I1M05BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWxCKzNOSjs7QWtCNTNOQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbEIrM05KOztBa0I1M05BO0VBQ0k7QWxCKzNOSjs7QWtCNTNOQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWxCKzNOSjs7QWtCNTNOQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FsQiszTko7O0FrQjUzTkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbEIrM05KOztBa0I1M05BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbEIrM05KO0FrQjczTkk7RUFDSTtFQUNBO0FsQiszTlI7O0FrQnYzTkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbEIwM05KOztBa0J2M05BO0VBQ0k7RUFDQTtFQUNBO0FsQjAzTko7O0FrQnYzTkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWxCMDNOSjtBa0J4M05JO0VBQ0k7RUFDQTtBbEIwM05SOztBa0JsM05BO0VBQ0k7RUFDQTtBbEJxM05KOztBa0JsM05BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsQnEzTko7QWtCbjNOSTtFQUNJO0VBQ0E7QWxCcTNOUjtBa0JsM05JO0VBQ0k7RUFDQTtBbEJvM05SOztBa0JoM05BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbEJtM05KOztBa0JoM05BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsQm0zTko7O0FrQmgzTkE7RUFDSTtFQUNBO0FsQm0zTko7O0FrQmgzTkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsQm0zTko7O0FrQmgzTkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbEJtM05KOztBa0JoM05BO0VBQ0k7QWxCbTNOSjs7QWtCdjJOSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FsQjAyTlI7QWtCeDJOUTtFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWxCeTJOWjtBa0JyMk5ZO0VBQ0k7RUFDQTtBbEJ1Mk5oQjtBa0JuMk5RO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbEJxMk5aO0FrQm4yTlk7RUFDSTtFQUNBO0VBQ0E7QWxCcTJOaEI7QWtCajJOUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FsQm0yTlo7O0FrQngxTkE7RUFFSTtJQUNJO0lBQ0E7SUFDQTtFbEIwMU5OO0VrQngxTk07SUFDSTtJQUNBO0VsQjAxTlY7RWtCdDFORTtJQUNJO0VsQncxTk47RWtCcjFORTtJQUNJO0VsQnUxTk47RWtCcDFORTtJQUNJO0VsQnMxTk47RWtCcDFOTTtJQUNJO0lBQ0E7RWxCczFOVjtFa0JsMU5FO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7RWxCbzFOTjtFa0JqMU5FO0lBQ0k7RWxCbTFOTjtFa0JoMU5FO0lBQ0k7SUFDQTtFbEJrMU5OO0VrQmgxTk07SUFDSTtJQUNBO0VsQmsxTlY7RWtCOTBORTtJQUNJO0VsQmcxTk47RWtCNzBORTtJQUNJO0VsQiswTk47RWtCMTBOTTtJQUNJO0lBQ0E7RWxCNDBOVjtFa0J6ME5NO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7RWxCMjBOVjtFa0J2ME5FO0lBQ0k7RWxCeTBOTjtFa0J2ME5NO0lBQ0k7SUFDQTtFbEJ5ME5WO0VrQnYwTlU7SUFDSTtJQUNBO0VsQnkwTmQ7RWtCcjBOTTtJQUNJO0VsQnUwTlY7RWtCcDBOTTtJQUNJO0VsQnMwTlY7RWtCbjBOTTtJQUNJO0VsQnEwTlY7QUFDRjtBa0JoME5BO0VBRUk7SUFDSTtFbEJpME5OO0FBQ0Y7QWtCMXpOQTtFQUVJO0lBQ0k7RWxCMnpOTjtBQUNGO0FtQnpyT0E7Ozs7Ozs7Ozs7RUFBQTtBQWdCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5Cc3JPSjs7QW1CbnJPQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkJzck9KOztBbUJuck9BO0VBRUk7SUFDSTtJQUNBO0VuQnFyT047RW1CbHJPRTtJQUNJO0lBQ0E7RW5Cb3JPTjtBQUNGO0FtQjNxT0E7RUFDSTtFQUNBO0VBQ0E7QW5CNnFPSjtBbUIzcU9JO0VBQ0k7RUFDQTtBbkI2cU9SOztBbUJ0cU9BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5CeXFPSjtBbUJ2cU9JO0VBQ0k7RUFDQTtBbkJ5cU9SOztBbUJycU9BO0VBQ0k7RUFDQTtBbkJ3cU9KOztBbUJycU9BO0VBQ0k7RUFDQTtBbkJ3cU9KOztBbUJycU9BO0VBQ0k7RUFDQTtBbkJ3cU9KOztBbUJycU9BO0VBQ0k7RUFDQTtBbkJ3cU9KOztBbUJycU9BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuQndxT0o7O0FtQnJxT0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbkJ3cU9KOztBbUJqcU9BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5Cb3FPSjtBbUJscU9JO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QW5Cb3FPUjtBbUJqcU9JO0VBQ0k7RUFDQTtFQUNBO0FuQm1xT1I7QW1CaHFPSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkJrcU9SO0FtQmhxT1E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbkJrcU9aOztBbUIxcE9BO0VBQ0k7QW5CNnBPSjs7QW1CdHBPQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FuQnlwT0o7QW1CdnBPSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5CeXBPUjtBbUJ2cE9RO0VBQ0k7RUFDQTtBbkJ5cE9aO0FtQnRwT1E7RUFDSTtBbkJ3cE9aO0FtQnJwT1E7RUFDSTtFQUNBO0FuQnVwT1o7QW1CanBPUTtFQUNJO0VBQ0E7QW5CbXBPWjtBbUJocE9RO0VBQ0k7QW5Ca3BPWjtBbUIvb09RO0VBQ0k7RUFDQTtBbkJpcE9aOztBbUIvbk9JO0VBQ0k7QW5Ca29PUjs7QW1CMW5PQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkI2bk9KO0FtQjNuT0k7RUFDSTtBbkI2bk9SO0FtQjFuT0k7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbkI0bk9SO0FtQnpuT0k7RUFDSTtFQUNBO0FuQjJuT1I7QW1CdG5PSTtFQUNJO0VBQ0E7RUFDQTtBbkJ3bk9SO0FtQnRuT1E7RUFDSTtFQUNBO0VBQ0E7QW5Cd25PWjtBbUJ0bk9ZO0VBQ0k7QW5Cd25PaEI7QW1Cam5PSTtFQUNJO0VBQ0E7RUFDQTtBbkJtbk9SO0FtQmpuT1E7RUFDSTtFQUNBO0VBQ0E7QW5CbW5PWjtBbUJqbk9ZO0VBQ0k7QW5CbW5PaEI7O0FtQnZtT0k7RUFDSTtFQUNBO0FuQjBtT1I7O0FtQnRtT0E7RUFDSTtFQUNBO0VBQ0EsMEZBQ0k7QW5Cd21PUjtBbUJsbU9JO0VBQ0k7QW5Cb21PUjtBbUI3bE9JO0VBQ0k7QW5CK2xPUjs7QW1CM2xPQTtFQUNJO0VBQ0E7QW5COGxPSjtBbUI1bE9JO0VBQ0k7QW5COGxPUjs7QW1CdGxPQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkJ5bE9KO0FtQnZsT0k7RUFDSTtBbkJ5bE9SOztBbUJubE9BO0VBQ0k7RUFDQTtFQUNBO0VBQ0EsMEZBQ0k7QW5CcWxPUjtBbUJsbE9JO0VBQ0k7RUFDQTtBbkJvbE9SO0FtQmpsT0k7RUFDSTtBbkJtbE9SO0FtQmhsT0k7RUFDSTtBbkJrbE9SO0FtQmhsT1E7RUFDSTtBbkJrbE9aOztBbUI3a09BO0VBQ0k7RUFDQTtBbkJnbE9KOztBbUI3a09BO0VBQ0k7QW5CZ2xPSjs7QW1CM2tPQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FuQjhrT0o7QW1CNWtPSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FuQjhrT1I7O0FtQnZrT0E7RUFDSTtFQUNBO0FuQjBrT0o7O0FtQnZrT0E7RUFDSTtFQUNBO0FuQjBrT0o7O0FtQnZrT0E7RUFDSTtBbkIwa09KOztBbUJwa09BO0VBQ0k7RUFDQTtFQUNBO0FuQnVrT0o7QW1CbGtPSTtFQUNJO0VBQ0E7QW5Cb2tPUjs7QW1CdmpPSTtFQUNJO0FuQjBqT1I7O0FtQnRqT0E7RUFDSTtFQUNBO0VBQ0E7QW5CeWpPSjtBbUJ2ak9JO0VBQ0k7QW5CeWpPUjtBbUJuak9JO0VBQ0k7QW5CcWpPUjs7QW1CampPQTtFQUNJO0FuQm9qT0o7O0FtQmpqT0E7RUFDSTtFQUNBO0VBQ0E7QW5Cb2pPSjs7QW1CL2lPQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5Ca2pPSjtBbUJoak9JO0VBQ0k7RUFDQTtFQUNBO0FuQmtqT1I7O0FtQjFpT0E7RUFFSTtJQUNJO0VuQjRpT047RW1CdmlPTTtJQUNJO0lBQ0E7SUFDQTtFbkJ5aU9WO0VtQnRpT007SUFDSTtFbkJ3aU9WO0VtQnRpT1U7SUFDSTtFbkJ3aU9kO0VtQm5pT0U7SUFDSTtFbkJxaU9OO0VtQmxpT0U7SUFDSTtJQUNBO0VuQm9pT047RW1CbGlPTTtJQUNJO0lBQ0E7RW5Cb2lPVjtFbUJoaU9FO0lBQ0k7RW5Ca2lPTjtFbUIvaE9FO0lBQ0k7RW5CaWlPTjtFbUI5aE9FO0lBQ0k7RW5CZ2lPTjtFbUIzaE9NO0lBQ0k7RW5CNmhPVjtFbUJ2aE9NO0lBQ0k7SUFDQTtJQUNBO0VuQnloT1Y7RW1CdGhPTTtJQUNJO0VuQndoT1Y7QUFDRjtBbUJuaE9BO0VBRUk7SUFDSTtJQUNBO0VuQm9oT047QUFDRjtBbUIzZ09BO0VBRUk7SUFDSTtFbkI0Z09OO0VtQnpnT0U7OztJQUdJO0VuQjJnT047QUFDRjtBbUJwZ09BO0VBRUk7SUFDSTtFbkJxZ09OO0VtQmxnT0U7SUFDSTtJQUNBO0VuQm9nT047RW1CamdPRTtJQUNJO0VuQm1nT047RW1CaGdPRTtJQUNJO0VuQmtnT047QUFDRjtBb0Jyb1BBOzs7Ozs7Ozs7OztFQUFBO0FBc0JBO0VBQ0k7RUFDQTtBcEI2blBKOztBb0J4blBBO0VBQ0k7QXBCMm5QSjs7QW9CcG5QQTtFQUNJO0VBQ0E7RUFDQTtBcEJ1blBKOztBb0JqblBBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsaVBBQ0k7QXBCbW5QUjtBb0IzbVBJO0VBQ0k7RUFDQTtBcEI2bVBSO0FvQjNtUFE7RUFDSTtBcEI2bVBaO0FvQnJtUEk7RUFDSTtFQUNBO0FwQnVtUFI7QW9CaG1QSTtFQUNJO0VBQ0E7RUFDQTtBcEJrbVBSO0FvQmhtUFE7RUFDSTtFQUNBO0VBQ0E7QXBCa21QWjtBb0IvbFBRO0VBQ0k7QXBCaW1QWjtBb0I1bFBRO0VBQ0k7QXBCOGxQWjs7QW9CdmxQQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBCMGxQSjs7QW9CdmxQQTtFQUNJO0FwQjBsUEo7O0FvQnZsUEE7RUFDSTtFQUNBO0FwQjBsUEo7O0FvQnZsUEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBcEIwbFBKOztBb0JybFBBO0VBQ0k7RUFDQTtFQUNBO0FwQndsUEo7O0FvQnJsUEE7RUFDSTtFQUNBO0VBQ0E7QXBCd2xQSjs7QW9CcmxQQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FwQndsUEo7O0FvQmxsUEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQnFsUEo7O0FvQjlrUEE7RUFDSTtFQUNBO0FwQmlsUEo7O0FvQjFrUEE7RUFDSTtFQUNBO0VBQ0E7QXBCNmtQSjs7QW9CMWtQQTtFQUNJO0FwQjZrUEo7O0FvQm5rUEE7RUFFSTtJQUNJO0VwQnFrUE47QUFDRjtBcUJyeFBBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQUFBO0FBc0JBO0VBR0k7QXJCb3hQSjtBcUI5d1BJO0VBQ0k7QXJCZ3hQUjtBcUI3d1BJO0VBQ0k7RUFDQTtFQUNBO0FyQit3UFI7QXFCMXdQSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxzTEFDSTtBckIyd1BaO0FxQnB3UEk7RUFDSTtFQUNBO0FyQnN3UFI7QXFCaHdQSTtFQUNJO0VBQ0E7RUFDQTtBckJrd1BSO0FxQi92UEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBckJpd1BSO0FxQjN2UEk7O0VBRUk7QXJCNnZQUjtBcUIxdlBJO0VBQ0k7QXJCNHZQUjtBcUJ6dlBJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckIydlBSO0FxQnh2UEk7RUFDSTtBckIwdlBSO0FxQmh2UEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FyQmt2UFI7QXFCdnVQSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckJ5dVBSO0FxQmx1UEk7RUFDSTtFQUNBO0FyQm91UFI7QXFCanVQSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FyQm11UFI7QXFCeHRQSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJCMHRQUjtBcUJ4dFBRO0VBQ0k7RUFDQTtFQUNBO0FyQjB0UFo7QXFCdnRQUTtFQUNJO0FyQnl0UFo7QXFCanRQSTtFQUNJO0VBQ0E7QXJCbXRQUjtBcUI3c1BJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FyQitzUFI7QXFCenNQSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckIyc1BSO0FxQnpzUFE7RUFDSTtFQUNBO0VBQ0E7QXJCMnNQWjtBcUJuc1BJO0VBRUk7SUFDSTtFckJvc1BWO0VxQmpzUE07SUFDSTtFckJtc1BWO0FBQ0Y7O0FxQi9yUEE7RUFFSTtJQUNJO0lBQ0E7RXJCaXNQTjtFcUI5clBFO0lBQ0k7SUFDQTtFckJnc1BOO0FBQ0Y7QXFCdHJQQTtFQUlROzs7SUFHSTtFckJxclBWO0VxQmxyUE07SUFDSTtFckJvclBWO0FBQ0Y7QXNCNzhQQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBQUE7QUEwQkE7RUFPSTtFQUNBO0VBQ0E7RUFHQTtFQUdBO0F0Qm84UEo7O0FzQjk3UEE7RUFDSTtBdEJpOFBKOztBc0IzN1BBO0VBQ0k7RUFDQTtBdEI4N1BKOztBc0JwN1BBO0VBQ0k7QXRCdTdQSjs7QXNCbDdQQTtFQUNJO0F0QnE3UEo7O0FzQjk2UEE7RUFDSTtFQUNBO0F0Qmk3UEo7O0FzQnY2UEE7RUFDSTtBdEIwNlBKOztBdUJ2Z1FBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFBQTtBQTBCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUlBO0VBQ0E7QXZCc2dRSjtBdUJwZ1FJO0VBSUk7RUFDQTtBdkJtZ1FSO0F1QmhnUUk7RUFDSTtFQUNBO0F2QmtnUVI7QXVCLy9QSTtFQUNJO0VBQ0E7QXZCaWdRUjtBdUI5L1BJO0VBQ0k7RUFDQTtBdkJnZ1FSO0F1QjcvUEk7RUFDSTtFQUNBO0F2QisvUFI7O0F3QmxrUUE7Ozs7Ozs7O0VBQUE7QUNBQTs7Ozs7Ozs7Ozs7RUFBQTtBQWFBOztFQUVJO0VBQ0E7RUFDQTtFQUNBO0F6QjZrUUo7QXlCemtRSTs7RUFDSTtFQUNBO0F6QjRrUVI7QXlCemtRSTs7RUFDSTtBekI0a1FSO0F5QnZrUUk7O0VBQ0k7RUFDQTtFQUNBO0F6QjBrUVI7QXlCdmtRUTs7OztFQUVJO0F6QjJrUVo7QXlCdGtRUTs7RUFDSTtFQUNBO0F6QnlrUVo7QXlCcGtRUTs7RUFDSTtFQUNBO0VBQ0E7QXpCdWtRWjtBeUJqa1FROztFQUNJO0VBQ0E7RUFDQTtBekJva1FaO0F5QmxrUVk7Ozs7RUFFSTtBekJza1FoQjtBeUJua1FZOztFQUNJO0VBQ0E7QXpCc2tRaEI7QXlCL2pRSTs7OztFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXpCbWtRUjtBeUI5alFJOzs7O0VBRUk7QXpCa2tRUjtBeUI1alFJOztFQUNJO0VBQ0E7RUFDQTtBekIralFSO0F5QjdqUVE7O0VBQ0k7RUFDQTtBekJna1FaO0F5QjlqUVk7OztFQUVJO0VBQ0E7QXpCaWtRaEI7QXlCOWpRWTs7RUFDSTtFQUNBO0F6QmlrUWhCO0F5QjFqUUk7O0VBQ0k7RUFDQTtBekI2alFSO0F5QjNqUVE7O0VBQ0k7RUFDQTtBekI4alFaOztBeUJ0alFJO0VBREo7SUFFUTtFekIwalFOO0FBQ0Y7O0EwQnRzUUE7Ozs7O0VBQUE7QUFXQTs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0ExQm9zUUo7QTBCanNRSTs7RUFDSTtFQUNBO0ExQm9zUVI7QTBCanNRSTs7RUFDSTtBMUJvc1FSOztBMEI1clFBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QTFCK3JRSjtBMEIzclFJO0VBQ0k7RUFDQTtBMUI2clFSOztBMEJuclFJO0VBQ0k7RUFDQTtFQUNBO0ExQnNyUVI7QTBCbnJRSTs7RUFFSTtFQUNBO0ExQnFyUVI7QTBCbHJRUTs7RUFDSTtFQUNBO0ExQnFyUVo7QTBCanJRSTtFQUNJO0VBQ0E7RUFDQTtBMUJtclFSOztBMEIzcVFBOzs7RUFHSTtFQUNBO0VBQ0E7RUFDQTtBMUI4cVFKO0EwQjVxUUk7OztFQUNJO0ExQmdyUVI7O0EwQnhxUUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0ExQjJxUUo7QTBCeHFRSTtFQUNJO0VBQ0E7QTFCMHFRUjs7QTBCdHFRQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0ExQnlxUUo7QTBCdnFRSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0ExQnlxUVI7QTBCdnFRUTtFQUNJO0ExQnlxUVo7QTBCdHFRUTtFQUNJO0ExQndxUVo7QTBCcHFRSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTFCc3FRUjs7QTBCNXBRSTtFQUNJO0VBQ0E7RUFDQTtBMUIrcFFSO0EwQjdwUVE7RUFDSTtFQUNBO0ExQitwUVo7QTBCM3BRSTtFQUNJO0ExQjZwUVI7QTBCM3BRUTtFQUNJO0VBQ0E7QTFCNnBRWjtBMEIzcFFZOztFQUVJO0ExQjZwUWhCO0EwQnRwUUk7RUFDSTtBMUJ3cFFSO0EwQnRwUVE7RUFDSTtBMUJ3cFFaOztBMEI3b1FJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QTFCZ3BRUjtBMEI5b1FRO0VBQ0k7RUFDQTtBMUJncFFaOztBMEJ2b1FBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QTFCMG9RSjtBMEJ4b1FJO0VBQ0k7QTFCMG9RUjtBMEJ2b1FJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QTFCeW9RUjtBMEJwb1FROztFQUVJO0ExQnNvUVo7O0EwQjNuUUk7RUFDSTtBMUI4blFSO0EwQjNuUUk7RUFDSTtFQUNBO0ExQjZuUVI7QTBCMW5RSTs7RUFFSTtBMUI0blFSOztBMEJwblFBOztFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBMUJ1blFKO0EwQnJuUUk7O0VBQ0k7RUFDQTtBMUJ3blFSOztBMEJwblFBOztFQUVJO0ExQnVuUUo7QTBCcm5RSTs7RUFDSTtFQUNBO0ExQnduUVI7O0EwQnBuUUE7RUFDSTtFQUNBO0VBQ0E7QTFCdW5RSjs7QTBCcG5RQTtFQUNJO0VBQ0E7RUFDQTtBMUJ1blFKOztBMEJoblFBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7QTFCa25RSjtBMEJoblFJO0VBRUk7RUFDQTtBMUJpblFSO0EwQjltUUk7RUFDSTtFQUNBO0ExQmduUVI7QTBCOW1RUTtFQUNJO0VBQ0E7QTFCZ25RWjtBMEI1bVFJO0VBQ0k7RUFDQTtBMUI4bVFSO0EwQjNtUUk7RUFDSTtFQUNBO0VBQ0E7QTFCNm1RUjs7QTBCdm1RQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0ExQnltUUo7QTBCdm1RSTtFQUVJO0VBQ0E7QTFCd21RUjs7QTBCaG1RQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0ExQm1tUUo7QTBCam1RSTs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtBMUJtbVFSOztBMEIzbFFBOzs7Ozs7Ozs7RUFBQTtBQVdBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTFCNmxRSjtBMEJ6bFFJO0VBQ0k7RUFDQTtFQUNBO0ExQjJsUVI7QTBCdGxRSTtFQUNJO0ExQndsUVI7O0EwQmhsUUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBMUJtbFFKO0EwQmpsUUk7O0VBRUk7QTFCbWxRUjs7QTBCemtRSTs7O0VBR0k7RUFDQTtFQUNBO0VBQ0E7QTFCNGtRUjtBMEIxa1FRO0VBUko7OztJQVNRO0UxQitrUVY7QUFDRjtBMEI1a1FJO0VBQ0k7RUFDQTtFQUNBO0ExQjhrUVI7QTBCNWtRUTtFQUxKO0lBTVE7SUFDQTtFMUIra1FWO0FBQ0Y7O0EwQnJrUUk7O0VBRUk7QTFCd2tRUjtBMEJya1FJOztFQUVJO0VBQ0E7QTFCdWtRUjtBMEJwa1FJO0VBQ0k7RUFDQTtBMUJza1FSOztBMEIzalFBO0VBQ0k7QTFCOGpRSjs7QTBCdmpRQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0ExQjBqUUo7QTBCeGpRSTtFQUNJO0VBQ0E7QTFCMGpRUjs7QTBCdGpRQTtFQUNJO0VBQ0E7RUFDQTtBMUJ5alFKO0EwQnZqUUk7RUFDSTtFQUNBO0ExQnlqUVI7QTBCdGpRSTtFQUNJO0ExQndqUVI7O0EwQjlpUUE7RUFDSTtBMUJpalFKOztBMEJ4aVFBO0VBQ0k7QTFCMmlRSjs7QTBCeGlRQTtFQUVJO0lBQ0k7RTFCMGlRTjtFMEJyaVFNO0lBQ0k7SUFDQTtFMUJ1aVFWO0UwQm5pUUU7SUFDSTtFMUJxaVFOO0UwQmxpUUU7SUFDSTtJQUNBO0UxQm9pUU47RTBCbGlRTTtJQUNJO0lBQ0E7RTFCb2lRVjtBQUNGO0EyQjFtUkE7Ozs7OztFQUFBO0FBWUE7O0VBRUk7RUFDQTtFQUNBO0EzQnVtUko7QTJCbm1SSTs7RUFDSTtFQUNBO0VBQ0E7QTNCc21SUjtBMkJubVJJOztFQUNJO0VBQ0E7RUFDQTtBM0JzbVJSO0EyQnBtUlE7O0VBQ0k7RUFDQTtBM0J1bVJaO0EyQmptUlE7O0VBQ0k7RUFDQTtBM0JvbVJaO0EyQjVsUlE7O0VBQ0k7RUFDQTtFQUNBO0EzQitsUlo7QTJCNWxSUTs7RUFDSTtBM0IrbFJaO0EyQjNsUkk7O0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBM0I4bFJSO0EyQjNsUkk7O0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBM0I4bFJSO0EyQjNsUkk7O0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QTNCOGxSUjtBMkIzbFJJOztFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTNCOGxSUjtBMkIzbFJJOztFQUNJO0VBQ0E7RUFDQTtBM0I4bFJSO0EyQjNsUkk7O0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QTNCOGxSUjtBMkIxbFJJO0VBRUk7O0lBQ0k7SUFDQTtFM0I0bFJWO0UyQjFsUlU7O0lBQ0k7SUFDQTtFM0I2bFJkO0UyQnpsUk07O0lBQ0k7SUFDQTtJQUNBO0UzQjRsUlY7RTJCemxSTTs7O0lBQ0k7RTNCNmxSVjtBQUNGOztBMkJsbFJJO0VBQ0k7RUFDQTtFQUNBO0EzQnFsUlI7QTJCaGxSSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTNCa2xSUjtBMkJobFJRO0VBQ0k7RUFDQTtFQUNBO0EzQmtsUlo7QTJCaGxSWTtFQUNJO0EzQmtsUmhCO0EyQi9rUlk7RUFDSTtBM0JpbFJoQjtBMkI3a1JRO0VBQ0k7QTNCK2tSWjtBMkIza1JJO0VBQ0k7QTNCNmtSUjtBMkIza1JRO0VBQ0k7QTNCNmtSWjtBMkJ4a1JRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QTNCMGtSWjtBMkJya1JRO0VBQ0k7RUFDQTtBM0J1a1JaO0EyQmxrUlE7O0VBRUk7RUFDQTtFQUNBO0VBQ0E7QTNCb2tSWjtBMkJoa1JJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBM0Jra1JSO0EyQi9qUkk7RUFDSTtBM0Jpa1JSO0EyQjVqUkk7RUFDSTtFQUNBO0VBQ0E7QTNCOGpSUjtBMkI1alJRO0VBQ0k7RUFDQTtBM0I4alJaO0EyQjFqUkk7RUFDSTtBM0I0alJSO0EyQnpqUkk7RUFFSTtJQUNJO0UzQjBqUlY7QUFDRjs7QTJCOWlSUTs7RUFFSTtFQUNBO0EzQmlqUlo7QTJCN2lSSTtFQUNJO0VBQ0E7QTNCK2lSUjtBMkI1aVJJO0VBQ0k7RUFDQTtBM0I4aVJSO0EyQjVpUlE7RUFDSTtFQUNBO0EzQjhpUlo7QTJCM2lSUTtFQUNJO0VBQ0E7QTNCNmlSWjtBMkIxaVJRO0VBQ0k7RUFDQTtBM0I0aVJaO0EyQnhpUkk7RUFDSTtFQUNBO0EzQjBpUlI7O0E0QnIwUkE7OztFQUFBO0FBYUE7RUFDSTtFQUNBO0VBQ0E7QTVCK3pSSjs7QTZCbndSSTtFRHREQTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0U1QjZ6Uk47RTRCM3pSTTtJQUNJO0U1QjZ6UlY7RTRCMXpSTTtJQUNJO0U1QjR6UlY7QUFDRjtBNEJwelJBO0VBQ0k7QTVCc3pSSjtBNEJwelJJO0VBQ0k7QTVCc3pSUjtBNEJuelJJO0VBQ0k7QTVCcXpSUjtBNkIzeVJJO0VEWEE7SUFJUTtFNUJzelJWO0FBQ0Y7QTRCbnpSSTtFQUNJO0VBQ0E7QTVCcXpSUjtBNkJwelJJO0VESEE7SUFLUTtFNUJzelJWO0FBQ0Y7QTRCaHpSSTtFQUNJO0E1Qmt6UlI7QTRCNXlSSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0E1Qjh5UlI7QTRCNXlSUTtFQUNJO0E1Qjh5Ulo7QTRCeHlSSTtFQUNJO0E1QjB5UlI7O0E0Qmh5Ukk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTVCbXlSUjtBNEJqeVJRO0VBQ0k7RUFDQTtFQUNBO0E1Qm15Ulo7QTRCL3hSSTtFQUNJO0VBQ0E7RUFDQTtBNUJpeVJSO0E0Qi94UlE7RUFFSTtFQUNBO0E1Qmd5Ulo7O0E0QnZ4UkE7RUFDSTtFQUNBO0E1QjB4Uko7QTRCeHhSSTtFQUNJO0E1QjB4UlI7QTRCdnhSSTtFQUNJO0VBQ0E7RUFDQTtBNUJ5eFJSO0E0QnZ4UlE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E1Qnl4Ulo7QTRCcnhSSTtFQUNJO0E1QnV4UlI7QTRCcnhSUTtFQUNJO0VBQ0E7RUFDQTtBNUJ1eFJaOztBNEI1d1JJO0VBQ0k7RUFDQTtBNUIrd1JSO0E0QjV3Ukk7RUFDSTtFQUNBO0VBQ0E7QTVCOHdSUjs7QTRCcHdSSTtFQUNJO0E1QnV3UlI7QTRCcndSUTtFQUNJO0E1QnV3Ulo7QTRCcHdSUTtFQUNJO0VBQ0E7QTVCc3dSWjtBNEJud1JRO0VBQ0k7QTVCcXdSWjtBNEJqd1JJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBNUJtd1JSO0E0Qmp3UlE7RUFDSTtBNUJtd1JaOztBNEIxdlJBO0VBSVE7OztJQUdJO0U1QjB2UlY7QUFDRjtBNEI3dVJJO0VBQ0k7RUFDQTtBNUIrdVJSO0E0Qjd1UlE7RUFDSTtFQUNBO0E1Qit1Ulo7QTRCNXVSUTtFQUNJO0E1Qjh1Ulo7QTRCMXVSSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0E1QjR1UlI7QTRCdHVSSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTVCd3VSUjtBNEJydVJJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E1QnV1UlI7QTRCcnVSUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtBNUJxdVJaO0E0Qi90Ukk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTVCaXVSUjtBNEI5dFJJO0VBQ0k7QTVCZ3VSUjtBNEIzdFJRO0VBQ0k7QTVCNnRSWjtBNEIxdFJRO0VBQ0k7QTVCNHRSWjs7QThCNWlTQTs7Ozs7RUFBQTtBQWdCQTtFQUNJO0VBQ0E7RUFDQTtBOUJxaVNKO0E4Qm5pU0k7RUFMSjtJQU1RO0U5QnNpU047QUFDRjtBOEJwaVNJO0VBVEo7SUFVUTtFOUJ1aVNOO0FBQ0Y7O0E4QnBpU0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E5QnVpU0o7QThCbGlTSTtFQVZKO0lBV1E7RTlCcWlTTjtBQUNGO0E4QjVoU0k7RUFDSTtFQUNBO0E5QjhoU1I7QThCdGhTUTtFQURKO0lBRVE7RTlCeWhTVjtBQUNGO0E4QnZoU1E7RUFDSTtBOUJ5aFNaOztBOEJwaFNBO0VBQ0k7RUFDQTtFQUNBO0E5QnVoU0o7O0E4QnBoU0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBOUJ1aFNKO0E4QnJoU0k7RUFDSTtFQUNBO0E5QnVoU1I7QThCcGhTSTtFQUNJO0VBQ0E7QTlCc2hTUjtBOEJuaFNJO0VBQ0k7RUFDQTtBOUJxaFNSO0E4QmxoU0k7RUFDSTtFQUNBO0E5Qm9oU1I7QThCamhTSTtFQUNJO0VBQ0E7QTlCbWhTUjs7QThCL2dTQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0E5QmtoU0o7O0E4Qi9nU0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E5QmtoU0o7O0E4Qi9nU0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlCa2hTSjtBOEI3Z1NJO0VBQ0k7QTlCK2dTUjtBOEJwZ1NJO0VBQ0k7QTlCc2dTUjs7QThCbGdTQTtFQUNJO0VBQ0E7RUFDQTtBOUJxZ1NKOztBOEI5L1JBO0VBQ0k7RUFDQTtBOUJpZ1NKOztBOEI5L1JBO0VBQ0k7QTlCaWdTSjs7QThCOS9SQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlCaWdTSjs7QThCOS9SQTtFQUNJO0E5QmlnU0o7O0E4QjkvUkE7RUFDSTtFQUNBO0VBQ0E7RUFPQTtFQUNBO0VBQ0E7RUFDQTtBOUIyL1JKOztBOEJ4L1JBO0VBQ0k7RUFJQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlCdy9SSjs7QThCci9SQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E5QncvUko7O0E4QnIvUkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlCdy9SSjs7QThCci9SQTtFQUtJO0VBQ0E7QTlCby9SSjs7QThCai9SQTtFQUNJO0VBQ0E7QTlCby9SSjs7QThCNStSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBOUIrK1JKOztBOEI1K1JBO0VBSUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E5QjQrUko7QThCMStSSTtFQUNJO0VBQ0E7QTlCNCtSUjs7QThCeCtSQTtFQUdJO0VBQ0E7RUFDQTtFQUNBO0E5QnkrUko7O0E4QnQrUkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBOUJ5K1JKOztBOEJsK1JBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E5QnErUko7O0E4QmwrUkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlCcStSSjs7QThCbCtSQTtFQUNJO0VBQ0E7QTlCcStSSjs7QThCbCtSQTtFQUNJO0VBQ0E7RUFDQTtBOUJxK1JKOztBOEJoK1JJO0VBQ0k7RUFDQTtBOUJtK1JSOztBOEIvOVJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBOUJrK1JKO0E4QmgrUkk7RUFDSTtBOUJrK1JSO0E4Qi85Ukk7RUFDSTtBOUJpK1JSO0E4Qjk5Ukk7RUFDSTtBOUJnK1JSO0E4Qjc5Ukk7RUFDSTtBOUIrOVJSOztBOEIzOVJBO0VBRUk7RUFDQTtFQUNBO0VBQ0E7QTlCNjlSSjtBOEIzOVJJO0VBQ0k7RUFDQTtBOUI2OVJSO0E4QjE5Ukk7RUFDSTtFQUNBO0E5QjQ5UlI7QThCejlSSTtFQUNJO0VBQ0E7QTlCMjlSUjtBOEJ4OVJJO0VBQ0k7RUFDQTtBOUIwOVJSOztBOEJ0OVJBO0VBQ0k7RUFDQTtFQUNBO0E5Qnk5Uko7O0E4QnQ5UkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlCeTlSSjtBOEJ0OVJJO0VBQ0k7QTlCdzlSUjtBOEJyOVJJO0VBQ0k7RUFDQTtBOUJ1OVJSO0E4QnA5Ukk7RUFDSTtBOUJzOVJSO0E4QnA5UlE7RUFDSTtBOUJzOVJaO0E4Qm45UlE7RUFDSTtBOUJxOVJaOztBOEJoOVJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBOUJtOVJKOztBOEJoOVJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QTlCbTlSSjs7QThCaDlSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0E5Qm05Uko7O0E4Qmg5UkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBOUJtOVJKOztBOEJoOVJBO0VBQ0k7RUFDQTtFQUNBO0E5Qm05Uko7O0E4Qmg5UkE7RUFDSTtFQUNBO0VBQ0E7QTlCbTlSSjs7QThCNThSQTtFQUNJO0VBQ0E7RUFDQTtBOUIrOFJKOztBOEI1OFJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E5Qis4Uko7QThCMzhSSTtFQUNJO0VBQ0E7QTlCNjhSUjtBOEIxOFJJO0VBQ0k7RUFDQTtBOUI0OFJSO0E4Qno4Ukk7RUFDSTtFQUNBO0E5QjI4UlI7QThCejhSUTtFQUNJO0E5QjI4Ulo7QThCdjhSSTtFQUNJO0VBQ0E7QTlCeThSUjtBOEJ2OFJRO0VBQ0k7QTlCeThSWjtBOEJyOFJJO0VBQ0k7RUFDQTtBOUJ1OFJSO0E4QnI4UlE7RUFDSTtBOUJ1OFJaO0E4Qm44Ukk7RUFDSTtFQUNBO0E5QnE4UlI7QThCbjhSUTtFQUNJO0E5QnE4Ulo7QThCajhSSTtFQUVJO0lBRUk7SUFDQTtFOUJpOFJWO0FBQ0Y7O0E4Qjc3UkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E5Qmc4Uko7O0E4Qjc3UkE7RUFDSTtFQUNBO0VBQ0E7QTlCZzhSSjs7QThCeDdSQTtFQUNJO0VBQ0E7QTlCMjdSSjs7QThCeDdSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlCMjdSSjtBOEJ6N1JJO0VBQ0k7QTlCMjdSUjs7QThCdjdSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlCMDdSSjtBOEJ4N1JJO0VBQ0k7RUFDQTtBOUIwN1JSO0E4QnY3Ukk7RUFFSTtFQUNBO0E5Qnc3UlI7QThCcjdSSTtFQUNJO0VBQ0E7QTlCdTdSUjtBOEJwN1JJO0VBQ0k7RUFDQTtBOUJzN1JSO0E4Qm43Ukk7RUFDSTtFQUNBO0E5QnE3UlI7O0E4Qmo3UkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E5Qm83Uko7O0E4Qmo3UkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E5Qm83Uko7O0E4Qmg3UkE7RUFDSTtFQUtBO0E5Qis2Uko7O0E4QjU2UkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlCKzZSSjtBOEI3NlJJO0VBQ0k7RUFDQTtBOUIrNlJSO0E4QjU2Ukk7RUFDSTtFQUNBO0E5Qjg2UlI7O0E4QjE2UkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E5QjY2Uko7O0E4QjE2UkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBOUI2NlJKO0E4QjM2Ukk7RUFDSTtBOUI2NlJSO0E4QjE2Ukk7RUFDSTtFQUNBO0VBQ0E7QTlCNDZSUjtBOEJ6NlJJO0VBQ0k7QTlCMjZSUjs7QThCdjZSQTtFQUdJO0E5Qnc2Uko7O0E4QnI2UkE7RUFDSTtFQUNBO0VBQ0E7QTlCdzZSSjs7QThCcjZSQTtFQUNJO0E5Qnc2Uko7O0ErQnhuVEE7Ozs7O0VBQUE7QUFXQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBL0JzblRKOztBK0JublRBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBL0JzblRKOztBK0JublRBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EvQnNuVEo7QStCcG5USTtFQUNJO0VBQ0E7RUFDQTtBL0JzblRSO0ErQnBuVFE7RUFDSTtBL0JzblRaOztBK0JqblRBO0VBQ0k7RUFDQTtFQUNBO0EvQm9uVEo7O0ErQjdtVEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QS9CZ25USjs7QStCN21UQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBL0JnblRKOztBK0IzbVRBO0VBQ0k7QS9COG1USjs7QStCeG1UQTs7RUFFSTtBL0IybVRKOztBK0J4bVRBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QS9CMm1USjs7QStCcG1UQTtFQUNJO0EvQnVtVEo7QStCcm1USTtFQUNJO0EvQnVtVFI7O0ErQm5tVEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EvQnNtVEo7O0ErQm5tVEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBL0JzbVRKOztBK0JubVRBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QS9Cc21USjs7QStCN2xUSTtFQUNJO0VBQ0E7QS9CZ21UUjtBK0JwbVRBO0VBT0k7Ozs7S0FBQTtBL0JvbVRKO0ErQjlsVEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QS9CZ21UUjtBK0I5bFRRO0VBQ0k7RUFDQTtBL0JnbVRaO0ErQjdsVFE7RUFDSTtFQUNBO0EvQitsVFo7QStCNWxUUTtFQUNJO0VBQ0E7RUFDQTtBL0I4bFRaO0ErQjFsVEk7RUFDSTtBL0I0bFRSOztBK0JwbFRBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QS9CdWxUSjs7QStCcGxUQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EvQnVsVEo7QStCcmxUSTtFQUNJO0VBQ0E7QS9CdWxUUjs7QStCL2tUQTs7RUFFSTtFQUNBO0EvQmtsVEo7QStCaGxUSTs7RUFDSTtBL0JtbFRSO0ErQmhsVEk7O0VBQ0k7RUFDQTtFQUNBO0EvQm1sVFI7QStCaGxUSTs7RUFDSTtBL0JtbFRSOztBK0Iva1RBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EvQmtsVEo7O0ErQi9rVEE7RUFDSTtFQUNBO0EvQmtsVEo7O0ErQi9rVEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBL0JrbFRKO0ErQmhsVEk7RUFDSTtBL0JrbFRSOztBK0I5a1RBO0VBQ0k7RUFDQTtFQUNBO0EvQmlsVEo7O0ErQjlrVEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBL0JpbFRKOztBK0I5a1RBO0VBQ0k7QS9CaWxUSjtBK0Iva1RJO0VBQ0k7RUFDQTtBL0JpbFRSO0ErQi9rVFE7RUFDSTtBL0JpbFRaOztBK0J4a1RBO0VBQ0k7RUFDQTtFQUNBO0EvQjJrVEo7O0ErQnhrVEE7RUFDSTtFQUNBO0VBQ0E7QS9CMmtUSjtBK0J6a1RJO0VBQ0k7RUFDQTtBL0Iya1RSO0ErQnhrVEk7RUFDSTtBL0Iwa1RSOztBK0Jsa1RBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EvQnFrVEo7O0ErQjlqVEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBL0Jpa1RKOztBK0I5alRBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QS9CaWtUSjs7QStCMWpUQTtFQUNJO0VBQ0E7RUFDQTtBL0I2alRKOztBK0IxalRBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EvQjZqVEo7O0ErQjFqVEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EvQjZqVEo7QStCM2pUSTtFQUNJO0EvQjZqVFI7O0ErQnpqVEE7RUFDSTtFQUNBO0EvQjRqVEo7O0ErQnpqVEE7RUFDSTtBL0I0alRKOztBK0JualRJO0VBQ0k7RUFDQTtFQUNBO0EvQnNqVFI7QStCbmpUSTtFQUNJO0EvQnFqVFI7O0ErQmpqVEE7RUFDSTtFQUNBO0VBQ0E7QS9Cb2pUSjs7QStCampUQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBL0JvalRKO0ErQmxqVEk7RUFDSTtBL0JvalRSOztBK0JoalRBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EvQm1qVEo7O0ErQmhqVEE7RUFDSTtFQUNBO0VBQ0E7QS9CbWpUSjtBK0JqalRJO0VBQ0k7RUFDQTtBL0JtalRSO0ErQmpqVFE7RUFDSTtBL0JtalRaO0ErQi9pVEk7RUFDSTtFQUNBO0EvQmlqVFI7O0ErQjdpVEE7RUFFSTtJQUNJO0lBQ0E7RS9CK2lUTjtBQUNGO0ErQnhpVEE7RUFFSTtJQUNJO0UvQnlpVE47RStCdGlURTtJQUNJO0UvQndpVE47RStCcmlURTtJQUNJO0UvQnVpVE47QUFDRjtBK0JwaVRBO0VBRUk7SUFDSTtFL0JxaVROO0UrQmxpVEU7SUFDSTtFL0JvaVROO0UrQmppVEU7SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0UvQm1pVE47RStCamlUTTtJQUNJO0UvQm1pVFY7RStCL2hURTtJQUNJO0UvQmlpVE47RStCOWhURTtJQUNJO0lBQ0E7SUFDQTtFL0JnaVROO0FBQ0Y7QStCemhUQTtFQUVJOzs7Ozs7SUFNSTtFL0IwaFROO0UrQnZoVEU7SUFDSTtJQUNBO0UvQnloVE47QUFDRjtBZ0M3aVVBOzs7OztFQUFBO0FBU0E7RUFDSTtFQUNBO0VBQ0E7QWhDNGlVSjs7QWdDemlVQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FoQzRpVUo7O0FnQ3ppVUE7RUFDSTtFQUNBO0VBQ0E7QWhDNGlVSjs7QWdDemlVQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBR0E7QWhDMGlVSjs7QWdDdmlVQTtFQUNJO0VBQ0E7RUFDQTtBaEMwaVVKOztBZ0N2aVVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEMwaVVKO0FnQ3hpVUk7RUFDSTtFQUNBO0FoQzBpVVI7O0FnQ3RpVUE7RUFDSTtBaEN5aVVKOztBZ0N0aVVBO0VBQ0k7RUFDQTtFQUNBO0FoQ3lpVUo7O0FnQ3RpVUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEN5aVVKOztBZ0N0aVVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhDeWlVSjtBZ0N2aVVJO0VBQ0k7RUFDQTtBaEN5aVVSOztBZ0NyaVVBO0VBQ0k7QWhDd2lVSjs7QWdDcmlVQTtFQUNJO0VBQ0E7RUFDQTtBaEN3aVVKOztBZ0NyaVVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWhDd2lVSjs7QWlDbHBVQTs7Ozs7RUFBQTtBQVNBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWpDa3BVSjtBaUNocFVJO0VBQ0k7RUFDQTtBakNrcFVSO0FpQy9vVUk7RUFDSTtBakNpcFVSOztBaUMzb1VBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQzhvVUo7O0FpQzNvVUE7RUFFSTtJQUNJO0lBQ0E7RWpDNm9VTjtBQUNGO0FrQ3pyVUE7Ozs7Ozs7RUFBQTtBQ0FBOzs7OztFQUFBO0FDQUE7OztFQUFBO0FBYUE7RUFDSTtBcENnc1VKOztBb0N6clVBO0VBQ0k7QXBDNHJVSjtBb0MxclVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQzRyVVI7QW9DMXJVUTtFQUNJO0VBQ0E7QXBDNHJVWjtBb0N6clVRO0VBQ0k7RUFDQTtFQUNBO0FwQzJyVVo7QW9DeHJVUTtFQUNJO0VBQ0E7RUFDQTtBcEMwclVaOztBb0NqclVBO0VBQ0k7RUFDQTtBcENvclVKOztBb0NqclVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBDb3JVSjtBb0NsclVJO0VBQ0k7RUFDQTtFQUNBO0FwQ29yVVI7QW9DbHJVUTtFQUNJO0VBQ0E7RUFDQTtBcENvclVaO0FvQ2hyVUk7RUFDSTtFQUNBO0FwQ2tyVVI7QW9DaHJVUTtFQUNJO0VBQ0E7QXBDa3JVWjtBb0MvcVVRO0VBQ0k7RUFDQTtBcENpclVaO0FvQzdxVUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBcEMrcVVSO0FvQzNxVVE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEM2cVVaO0FvQ3RxVVE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQ3dxVVo7QW9DcnFVUTtFQUNJO0VBQ0E7RUFDQTtBcEN1cVVaO0FvQ3BxVVE7RUFDSTtFQUNBO0VBQ0E7QXBDc3FVWjtBb0NwcVVZO0VBQ0k7QXBDc3FVaEI7QW9DbnFVWTtFQUNJO0VBQ0E7RUFDQTtBcENxcVVoQjtBb0NocVVJO0VBQ0k7QXBDa3FVUjtBb0MvcFVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcENpcVVSO0FvQzlwVUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQ2dxVVI7QW9DN3BVSTtFQUNJO0VBQ0E7RUFDQTtBcEMrcFVSO0FvQzVwVUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEM4cFVSO0FvQzVwVVE7RUFDSTtFQUNBO0FwQzhwVVo7QW9DMXBVSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBDNHBVUjs7QW9DbHBVSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FwQ3FwVVI7QW9DbHBVSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBDb3BVUjs7QW9DaHBVQTtFQUNJO0VBQ0E7QXBDbXBVSjs7QW9DaHBVQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBDbXBVSjtBb0NqcFVJO0VBQ0k7RUFDQTtFQUNBO0FwQ21wVVI7QW9DanBVUTtFQUNJO0VBQ0E7RUFDQTtBcENtcFVaO0FvQ2hwVVE7RUFDSTtFQUNBO0VBQ0E7QXBDa3BVWjtBb0M5b1VJO0VBQ0k7QXBDZ3BVUjtBb0M3b1VJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEMrb1VSO0FvQzVvVUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQzhvVVI7QW9DNW9VUTtFQUNJO0VBQ0E7QXBDOG9VWjtBb0Mxb1VJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQzRvVVI7QW9DMW9VUTtFQUNJO0VBQ0E7RUFDQTtBcEM0b1VaO0FvQ3pvVVE7RUFDSTtFQUNBO0VBQ0E7QXBDMm9VWjtBb0N2b1VJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEN5b1VSO0FvQ3ZvVVE7RUFDSTtBcEN5b1VaO0FvQ3RvVVE7RUFDSTtFQUNBO0FwQ3dvVVo7QW9DdG9VWTtFQUNJO0VBQ0E7QXBDd29VaEI7O0FvQ3puVVE7RUFDSTtBcEM0blVaO0FvQzFuVVk7RUFDSTtBcEM0blVoQjtBb0N6blVZO0VBQ0k7QXBDMm5VaEI7QW9DbG5VUTtFQUNJO0FwQ29uVVo7QW9DL21VUTtFQUNJO0FwQ2luVVo7O0FvQ3htVUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBDMm1VSjs7QW9DeG1VQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEMybVVKOztBb0N4bVVBO0VBQ0k7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQzBtVUo7O0FvQ3ZtVUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBDMG1VSjs7QW9Ddm1VQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FwQzBtVUo7O0FvQ3ZtVUE7RUFDSTtFQUNBO0FwQzBtVUo7O0FvQ3ZtVUE7RUFDSTtFQUNBO0VBQ0E7QXBDMG1VSjtBb0N0bVVJO0VBQ0k7RUFDQTtFQUNBO0FwQ3dtVVI7QW9DdG1VUTtFQUNJO0FwQ3dtVVo7QW9Dcm1VUTtFQUNJO0FwQ3VtVVo7QW9DcG1VUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FwQ3NtVVo7O0E2QmovVUk7RU9tWkE7SUFDSTtJQUNBO0VwQ2ttVU47RW9DL2xVRTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RXBDaW1VTjtFb0M5bFVFO0lBRUk7TUFDSTtJcEMrbFVSO0lvQzVsVUk7TUFDSTtJcEM4bFVSO0VBQ0Y7QUFDRjtBb0N6bFVBO0VBQ0k7QXBDMmxVSjs7QTZCMWdWSTtFT3diQTtJQUNJO0lBQ0E7SUFDQTtFcENzbFVOO0VvQ25sVUU7SUFDSTtFcENxbFVOO0VvQ2hsVU07SUFDSTtJQUNBO0lBQ0E7RXBDa2xVVjtFb0NobFVVOztJQUVJO0VwQ2tsVWQ7RW9DaGxVYzs7SUFDSTtFcENtbFVsQjtFb0Mza1VFO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFcEM2a1VOO0VvQzNrVU07SUFDSTtFcEM2a1VWO0VvQzFrVU07SUFDSTtFcEM0a1VWO0FBQ0Y7QW9DcGtVQTtFQUlROzs7SUFHSTtFcENta1VWO0VvQ2hrVU07SUFDSTtFcENra1VWO0FBQ0Y7QW9DMWpVQTtFQUNJO0FwQzRqVUo7QW9DeGpVUTtFQUNJO0FwQzBqVVo7QW9DbmpVSTtFQUNJO0FwQ3FqVVI7QW9DbmpVUTtFQUNJO0FwQ3FqVVo7O0FvQzlpVUE7RUFDSTtFQUNBO0FwQ2lqVUo7QW9DL2lVSTtFQUNJO0VBQ0E7QXBDaWpVUjtBb0MvaVVRO0VBQ0k7QXBDaWpVWjtBb0M5aVVRO0VBQ0k7QXBDZ2pVWjs7QW9DcmlVSTtFQUNJO0FwQ3dpVVI7QW9DbmlVUTtFQUNJO0VBQ0E7QXBDcWlVWjtBb0NuaVVZO0VBQ0k7QXBDcWlVaEI7O0FxQzlxVkE7OztFQUFBO0FBYUE7RUFDSTtBckN3cVZKOztBcUNqcVZBO0VBQ0k7QXJDb3FWSjtBcUNscVZJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FyQ29xVlI7QXFDbHFWUTtFQUNJO0VBQ0E7QXJDb3FWWjtBcUNqcVZRO0VBQ0k7RUFDQTtFQUNBO0FyQ21xVlo7QXFDaHFWUTtFQUNJO0VBQ0E7RUFDQTtBckNrcVZaOztBcUN6cFZBO0VBQ0k7RUFDQTtBckM0cFZKO0FxQzFwVkk7RUFDSTtBckM0cFZSO0FxQ3pwVkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckMycFZSO0FxQ3pwVlE7RUFDSTtFQUNBO0FyQzJwVlo7QXFDeHBWUTtFQUNJO0VBQ0E7QXJDMHBWWjtBcUN2cFZRO0VBQ0k7RUFDQTtFQUNBO0FyQ3lwVlo7O0FxQ2hwVkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FyQ21wVko7O0FxQ3hvVkE7RUFDSTtBckMyb1ZKO0FxQ3pvVkk7RUFDSTtBckMyb1ZSOztBcUN2b1ZBO0VBQ0k7RUFDQTtFQUNBO0FyQzBvVko7QTZCdHRWSTtFUXlFSjtJQU1RO0VyQzJvVk47QUFDRjs7QXFDdG9WQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJDeW9WSjtBcUN2b1ZJO0VBQ0k7RUFDQTtFQUNBO0FyQ3lvVlI7QXFDdm9WUTtFQUNJO0VBQ0E7RUFDQTtBckN5b1ZaO0FxQ3RvVlE7RUFDSTtFQUNBO0FyQ3dvVlo7QXFDcG9WSTtFQUNJO0VBQ0E7QXJDc29WUjtBcUNwb1ZRO0VBQ0k7RUFDQTtBckNzb1ZaO0FxQ25vVlE7RUFDSTtFQUNBO0FyQ3FvVlo7QXFDam9WSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJDbW9WUjtBcUNob1ZJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJDa29WUjtBcUNob1ZRO0VBQ0k7RUFDQTtBckNrb1ZaO0FxQzluVkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FyQ2dvVlI7QXFDN25WSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckMrblZSO0FxQzVuVkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckM4blZSO0FxQzNuVkk7RUFDSTtBckM2blZSO0FxQzNuVlE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJDNm5WWjs7QXFDam5WSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FyQ29uVlI7QXFDam5WSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJDbW5WUjs7QXFDL21WQTtFQUNJO0VBQ0E7QXJDa25WSjs7QXFDL21WQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJDa25WSjtBcUNoblZJO0VBQ0k7RUFDQTtFQUNBO0FyQ2tuVlI7QXFDaG5WUTtFQUNJO0VBQ0E7RUFDQTtBckNrblZaO0FxQy9tVlE7RUFDSTtFQUNBO0VBQ0E7QXJDaW5WWjtBcUM3bVZJO0VBQ0k7QXJDK21WUjtBcUM1bVZJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckM4bVZSO0FxQzNtVkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FyQzZtVlI7QXFDM21WUTtFQUNJO0VBQ0E7QXJDNm1WWjtBcUN6bVZJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FyQzJtVlI7QXFDeG1WSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJDMG1WUjtBcUN4bVZRO0VBQ0k7QXJDMG1WWjtBcUN2bVZRO0VBQ0k7RUFDQTtBckN5bVZaO0FxQ3ZtVlk7RUFDSTtFQUNBO0FyQ3ltVmhCOztBcUMvbFZBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FyQ2ttVko7O0FxQy9sVkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJDa21WSjs7QXFDL2xWQTtFQUNJO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckNpbVZKOztBcUM5bFZBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FyQ2ltVko7O0FxQzlsVkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBckNpbVZKOztBcUM5bFZBO0VBQ0k7RUFDQTtBckNpbVZKOztBcUM5bFZBO0VBQ0k7RUFDQTtFQUNBO0FyQ2ltVko7QXFDN2xWSTtFQUNJO0VBQ0E7RUFDQTtBckMrbFZSO0FxQzdsVlE7RUFDSTtBckMrbFZaO0FxQzVsVlE7RUFDSTtBckM4bFZaO0FxQzNsVlE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBckM2bFZaOztBNkJ4K1ZJO0VRc1pBO0lBQ0k7SUFDQTtJQUNBO0VyQ3NsVk47RXFDamxWTTtJQUNJO0lBQ0E7SUFDQTtFckNtbFZWO0VxQ2psVlU7O0lBRUk7RXJDbWxWZDtFcUNqbFZjOztJQUNJO0VyQ29sVmxCO0VxQzVrVkU7SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VyQzhrVk47RXFDNWtWTTtJQUNJO0VyQzhrVlY7RXFDM2tWTTtJQUNJO0VyQzZrVlY7RXFDemtWRTtJQUNJO0lBQ0E7RXJDMmtWTjtFcUN4a1ZFO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFckMwa1ZOO0VxQ3ZrVkU7SUFFSTtNQUNJO0lyQ3drVlI7SXFDcmtWSTtNQUNJO0lyQ3VrVlI7RUFDRjtBQUNGO0FxQ2xrVkE7RUFDSTtBckNva1ZKOztBcUM3alZBO0VBSVE7OztJQUdJO0VyQzZqVlY7RXFDMWpWTTtJQUNJO0VyQzRqVlY7QUFDRjtBQXIvVkE7Ozs7O0dBQUEsQyIsInNvdXJjZXMiOlsid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2FwcC5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2Rlc2lnbi1zeXN0ZW0vX2luZGV4LnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvZGVzaWduLXN5c3RlbS9fdG9rZW5zLnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvZGVzaWduLXN5c3RlbS9fdHlwb2dyYXBoeS5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX2luZGV4LnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fZm9ybS1wYWdlLnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fZG9jdW1lbnQtdmlldy5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX2V4dGVybmFsLWRvYy12aWV3LnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fbWFya2V0cGxhY2Uuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19nbG9iYWwtc2VhcmNoLnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fZGF0YWdyaWQuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19jbGllbnQtZm9ybS5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX2JpbGxpbmctZm9ybS5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX3BheW1lbnQtcGFnZS5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX3BheW1lbnRzLWxpc3Quc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL191c2Vycy1wYWdlLnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fcHJvZmlsZS1wYWdlLnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fdHdvLWZhY3Rvci5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX25vdGlmaWNhdGlvbnMtcGFnZS5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX3N1YnNjcmlwdGlvbi1wYWdlcy5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX29uYm9hcmRpbmctY2hlY2tsaXN0LnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fb25ib2FyZGluZy13aXphcmQuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19tb25leS5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX3N0YXR1cy1jaGlwLnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvbGF5b3V0cy9faW5kZXguc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9sYXlvdXRzL19uYXZiYXItdmVydGljYWwuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9fZm9ybXMuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9fY29tcGFueS5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL3NldHRpbmdzLnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fYnJlYWtwb2ludHMuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9fZGFzaGJvYXJkLnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY2xpZW50LnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvaW52b2ljZS12aWV3LnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvZXh0ZXJuYWwtaW52b2ljZS12aWV3LnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvZXh0ZXJuYWwtcXVvdGUtdmlldy5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL3F1b3RlLXZpZXcuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9wYXltZW50LW1hcmtldHBsYWNlLnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3Mvbm90aWZpY2F0aW9uLW1hcmtldHBsYWNlLnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTb2xpZEludm9pY2UgTWFpbiBBcHBsaWNhdGlvbiBTdHlsZXNoZWV0XG4gKlxuICogVGhpcyBpcyB0aGUgbWFpbiBlbnRyeSBwb2ludCBmb3IgYWxsIGFwcGxpY2F0aW9uIHN0eWxlcy5cbiAqIEl0IGltcG9ydHMgQm9vdHN0cmFwLCB0aGUgZGVzaWduIHN5c3RlbSwgY29tcG9uZW50cywgYW5kIGxheW91dHMuXG4gKi9cblxuQHVzZSAnc2Fzczpjb2xvcic7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIDEuIEJPT1RTVFJBUCBDT1JFIElNUE9SVFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gSW1wb3J0IEJvb3RzdHJhcCBmdW5jdGlvbnMgZmlyc3QgKG5lZWRlZCBmb3IgY29sb3IgbWFuaXB1bGF0aW9uLCBldGMuKVxuQGltcG9ydCAnfmJvb3RzdHJhcC9zY3NzL2Z1bmN0aW9ucyc7XG5AaW1wb3J0ICd+Ym9vdHN0cmFwL3Njc3MvdmFyaWFibGVzJztcbkBpbXBvcnQgJ35ib290c3RyYXAvc2Nzcy9taXhpbnMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyAyLiBTT0xJRElOVk9JQ0UgQlJBTkQgVkFSSUFCTEVTIChPdmVycmlkZSBCb290c3RyYXAgZGVmYXVsdHMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFByaW1hcnkgY29sb3JzXG4kZ3JlZW4tYmFzZTogIzJlOTYzYTtcbiRncmVlbi1kYXJrOiAjMWY2YzI5O1xuJGdyZWVuLWxpZ2h0OiAjZThmNWU5O1xuJG9yYW5nZS1iYXNlOiAjZjBhMDE1O1xuJG9yYW5nZS1kYXJrOiAjYzg4MjBlO1xuJG9yYW5nZS1saWdodDogI2ZmZjhlMTtcblxuLy8gT3ZlcnJpZGUgQm9vdHN0cmFwIHZhcmlhYmxlc1xuJHByaW1hcnk6ICRncmVlbi1iYXNlO1xuJHNlY29uZGFyeTogJG9yYW5nZS1iYXNlO1xuXG4vLyBCb2R5IGFuZCBMaW5rIENvbG9yc1xuJGJvZHktY29sb3I6ICMzMzMzMzM7XG4kYm9keS1iZzogI2Y0ZjZmODtcbiRsaW5rLWNvbG9yOiAkcHJpbWFyeTtcbiRsaW5rLWhvdmVyLWNvbG9yOiAkZ3JlZW4tZGFyaztcblxuLy8gQnV0dG9uIHN0YXRlc1xuJGJ0bi1wcmltYXJ5LWJnOiAkcHJpbWFyeTtcbiRidG4tcHJpbWFyeS1ib3JkZXItY29sb3I6ICRwcmltYXJ5O1xuJGJ0bi1wcmltYXJ5LWhvdmVyLWJnOiAkZ3JlZW4tZGFyaztcbiRidG4tcHJpbWFyeS1ob3Zlci1ib3JkZXItY29sb3I6ICRncmVlbi1kYXJrO1xuJGJ0bi1wcmltYXJ5LWFjdGl2ZS1iZzogJGdyZWVuLWRhcms7XG4kYnRuLXByaW1hcnktYWN0aXZlLWJvcmRlci1jb2xvcjogJGdyZWVuLWRhcms7XG4kYnRuLXNlY29uZGFyeS1iZzogJHNlY29uZGFyeTtcbiRidG4tc2Vjb25kYXJ5LWJvcmRlci1jb2xvcjogJHNlY29uZGFyeTtcbiRidG4tc2Vjb25kYXJ5LWhvdmVyLWJnOiAkb3JhbmdlLWRhcms7XG4kYnRuLXNlY29uZGFyeS1ob3Zlci1ib3JkZXItY29sb3I6ICRvcmFuZ2UtZGFyaztcbiRidG4tc2Vjb25kYXJ5LWFjdGl2ZS1iZzogJG9yYW5nZS1kYXJrO1xuJGJ0bi1zZWNvbmRhcnktYWN0aXZlLWJvcmRlci1jb2xvcjogJG9yYW5nZS1kYXJrO1xuXG4vLyBBbGVydCBDb2xvcnNcbiRhbGVydC1wcmltYXJ5LWJnOiAkZ3JlZW4tbGlnaHQ7XG4kYWxlcnQtcHJpbWFyeS1ib3JkZXItY29sb3I6IGNvbG9yLmFkanVzdCgkZ3JlZW4tbGlnaHQsICRsaWdodG5lc3M6IC01JSk7XG4kYWxlcnQtcHJpbWFyeS10ZXh0OiAkZ3JlZW4tZGFyaztcbiRhbGVydC1zZWNvbmRhcnktYmc6ICRvcmFuZ2UtbGlnaHQ7XG4kYWxlcnQtc2Vjb25kYXJ5LWJvcmRlci1jb2xvcjogY29sb3IuYWRqdXN0KCRvcmFuZ2UtbGlnaHQsICRsaWdodG5lc3M6IC01JSk7XG4kYWxlcnQtc2Vjb25kYXJ5LXRleHQ6ICRvcmFuZ2UtZGFyaztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gMy4gREVTSUdOIFNZU1RFTSBGT1VOREFUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEltcG9ydCBkZXNpZ24gdG9rZW5zIChjb2xvcnMsIHNwYWNpbmcsIHNoYWRvd3MsIHR5cG9ncmFwaHksIGV0Yy4pXG5AaW1wb3J0ICcuL2Rlc2lnbi1zeXN0ZW0vaW5kZXgnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyA0LiBDT01QT05FTlQgU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEltcG9ydCBhbGwgY29tcG9uZW50IHN0eWxlc1xuQGltcG9ydCAnLi9jb21wb25lbnRzL2luZGV4JztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gNS4gTEFZT1VUIFBBVFRFUk5TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEltcG9ydCBhbGwgbGF5b3V0IHN0eWxlc1xuQGltcG9ydCAnLi9sYXlvdXRzL2luZGV4JztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gNi4gRk9STSBTVFlMRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gR2VuZXJpYyBmb3JtIGNvbXBvbmVudHMgKHJldXNhYmxlIGFjcm9zcyB0aGUgYXBwKVxuQGltcG9ydCAnLi9mb3Jtcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIDcuIFBBR0UtU1BFQ0lGSUMgU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIENvbXBhbnkgcGFnZSBjdXN0b20gc3R5bGVzXG5AaW1wb3J0ICcuL2NvbXBhbnknO1xuXG4vLyBTZXR0aW5ncyBwYWdlIGN1c3RvbSBzdHlsZXNcbkBpbXBvcnQgJy4vc2V0dGluZ3MnO1xuXG4vLyBEYXNoYm9hcmQgY3VzdG9tIHN0eWxlc1xuQGltcG9ydCAnLi9kYXNoYm9hcmQnO1xuXG4vLyBDbGllbnQgcGFnZSBjdXN0b20gc3R5bGVzXG5AaW1wb3J0ICcuL2NsaWVudCc7XG5cbi8vIEludm9pY2UgdmlldyBwYWdlIHN0eWxlc1xuQGltcG9ydCAnLi9pbnZvaWNlLXZpZXcnO1xuXG4vLyBFeHRlcm5hbCBpbnZvaWNlIHZpZXcgcGFnZSBzdHlsZXMgKHB1YmxpYy1mYWNpbmcpXG5AaW1wb3J0ICcuL2V4dGVybmFsLWludm9pY2Utdmlldyc7XG5cbi8vIEV4dGVybmFsIHF1b3RlIHZpZXcgcGFnZSBzdHlsZXMgKHB1YmxpYy1mYWNpbmcpXG5AaW1wb3J0ICcuL2V4dGVybmFsLXF1b3RlLXZpZXcnO1xuXG4vLyBRdW90ZSB2aWV3IHBhZ2Ugc3R5bGVzXG5AaW1wb3J0ICcuL3F1b3RlLXZpZXcnO1xuXG4vLyBQYXltZW50IG1hcmtldHBsYWNlIHBhZ2Ugc3R5bGVzXG5AaW1wb3J0ICcuL3BheW1lbnQtbWFya2V0cGxhY2UnO1xuXG4vLyBOb3RpZmljYXRpb24gbWFya2V0cGxhY2UgcGFnZSBzdHlsZXNcbkBpbXBvcnQgJy4vbm90aWZpY2F0aW9uLW1hcmtldHBsYWNlJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gOC4gTEVHQUNZIEJPT1RTVFJBUCBPVkVSUklERVMgKFRvIGJlIGNsZWFuZWQgdXApXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFRoZXNlIGFyZSB0ZW1wb3Jhcnkgb3ZlcnJpZGVzIHRoYXQgc2hvdWxkIGV2ZW50dWFsbHkgYmUgbW92ZWRcbi8vIHRvIHRoZSBhcHByb3ByaWF0ZSBjb21wb25lbnQgZmlsZXMgaW4gdGhlIGRlc2lnbiBzeXN0ZW0uXG5cbi8vIEtlZXAgbGVnYWN5IGFjdGl2ZSBuYXYgc3R5bGluZyBmb3Igbm93XG5cbi8qIC5uYXYtbGluay5hY3RpdmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWYyZmY7XG4gICAgY29sb3I6ICM0ZjQ2ZTU7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG59ICovXG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSBEZXNpZ24gU3lzdGVtIC0gTWFpbiBJbmRleFxuICpcbiAqIEltcG9ydHMgYWxsIGRlc2lnbiBzeXN0ZW0gZm91bmRhdGlvbiBmaWxlcy5cbiAqIFRoaXMgZmlsZSBzaG91bGQgYmUgaW1wb3J0ZWQgZWFybHkgaW4gYXBwLnNjc3MsXG4gKiBhZnRlciBCb290c3RyYXAgZnVuY3Rpb25zL3ZhcmlhYmxlcyBidXQgYmVmb3JlIGNvbXBvbmVudHMuXG4gKi9cblxuLy8gQ29yZSBkZXNpZ24gdG9rZW5zIChjb2xvcnMsIHNwYWNpbmcsIHNoYWRvd3MsIGV0Yy4pXG5AaW1wb3J0ICd0b2tlbnMnO1xuXG4vLyBUeXBvZ3JhcGh5IHN5c3RlbVxuQGltcG9ydCAndHlwb2dyYXBoeSc7XG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSBEZXNpZ24gU3lzdGVtIC0gRGVzaWduIFRva2Vuc1xuICpcbiAqIENvcmUgZGVzaWduIHRva2VucyBkZWZpbmluZyBjb2xvcnMsIHNwYWNpbmcsIHNoYWRvd3MsIGJvcmRlciByYWRpdXMsXG4gKiBhbmQgdHJhbnNpdGlvbnMuIEFsbCB2YWx1ZXMgYXJlIGV4cG9zZWQgYXMgQ1NTIGN1c3RvbSBwcm9wZXJ0aWVzXG4gKiB3aXRoIHRoZSBgLS1zd3AtYCBwcmVmaXggZm9yIHJ1bnRpbWUgdGhlbWluZyBzdXBwb3J0LlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENPTE9SIFBBTEVUVEVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuOnJvb3Qge1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBCcmFuZCBDb2xvcnMgKFByaW1hcnkgJiBTZWNvbmRhcnkpXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLy8gUHJpbWFyeTogR3JlZW4gLSBVc2VkIGZvciBtYWluIENUQXMsIGxpbmtzLCBhY3RpdmUgc3RhdGVzXG4gICAgLS1zd3AtcHJpbWFyeTogIzJlOTYzYTtcbiAgICAtLXN3cC1wcmltYXJ5LXJnYjogNDYsIDE1MCwgNTg7XG4gICAgLS1zd3AtcHJpbWFyeS1ob3ZlcjogIzI2ODAzMjtcbiAgICAtLXN3cC1wcmltYXJ5LWRhcms6ICMxZjZjMjk7XG4gICAgLS1zd3AtcHJpbWFyeS1saWdodDogI2U4ZjVlOTtcbiAgICAtLXN3cC1wcmltYXJ5LWxpZ2h0ZXI6ICNmMWY5ZjI7XG5cbiAgICAvLyBTZWNvbmRhcnk6IE9yYW5nZSAtIFVzZWQgc3BhcmluZ2x5IGZvciBhY2NlbnRzXG4gICAgLS1zd3Atc2Vjb25kYXJ5OiAjZjBhMDE1O1xuICAgIC0tc3dwLXNlY29uZGFyeS1yZ2I6IDI0MCwgMTYwLCAyMTtcbiAgICAtLXN3cC1zZWNvbmRhcnktaG92ZXI6ICNkODkwMTI7XG4gICAgLS1zd3Atc2Vjb25kYXJ5LWRhcms6ICNjODgyMGU7XG4gICAgLS1zd3Atc2Vjb25kYXJ5LWxpZ2h0OiAjZmZmOGUxO1xuICAgIC0tc3dwLXNlY29uZGFyeS1saWdodGVyOiAjZmZmY2YwO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIE5ldXRyYWwgQ29sb3JzIChTbGF0ZS1iYXNlZCBncmF5IHNjYWxlIGZvciBtb2Rlcm4gZmVlbClcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAtLXN3cC1ncmF5LTUwOiAjZjhmYWZjO1xuICAgIC0tc3dwLWdyYXktMTAwOiAjZjFmNWY5O1xuICAgIC0tc3dwLWdyYXktMjAwOiAjZTJlOGYwO1xuICAgIC0tc3dwLWdyYXktMzAwOiAjY2JkNWUxO1xuICAgIC0tc3dwLWdyYXktNDAwOiAjOTRhM2I4O1xuICAgIC0tc3dwLWdyYXktNTAwOiAjNjQ3NDhiO1xuICAgIC0tc3dwLWdyYXktNjAwOiAjNDc1NTY5O1xuICAgIC0tc3dwLWdyYXktNzAwOiAjMzM0MTU1O1xuICAgIC0tc3dwLWdyYXktODAwOiAjMWUyOTNiO1xuICAgIC0tc3dwLWdyYXktOTAwOiAjMGYxNzJhO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIFNlbWFudGljIENvbG9ycyAoRmVlZGJhY2sgJiBTdGF0dXMpXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLy8gU3VjY2Vzc1xuICAgIC8vIE5PVEU6IGBzdWNjZXNzYCAoMi41NDoxIG9uIHN1cmZhY2UpIGFuZCBgc3VjY2Vzcy1ob3ZlcmAgKDMuNzc6MSkgYXJlIGZpbGxcbiAgICAvLyBjb2xvdXJzLCBub3QgdGV4dCBjb2xvdXJzIC0gYm90aCBmYWlsIFdDQUcgQUEgYXMgdGV4dC4gVXNlIGBzdWNjZXNzLWRhcmtgXG4gICAgLy8gZm9yIGFueSBzdWNjZXNzLWNvbG91cmVkICp0ZXh0Ki4gU2VlIERFU0lHTi5tZCAtIFRoZSBMZWdpYmxlIFN0YXR1cyBSdWxlLlxuICAgIC0tc3dwLXN1Y2Nlc3M6ICMxMGI5ODE7XG4gICAgLS1zd3Atc3VjY2Vzcy1yZ2I6IDE2LCAxODUsIDEyOTtcbiAgICAtLXN3cC1zdWNjZXNzLWhvdmVyOiAjMDU5NjY5O1xuICAgIC0tc3dwLXN1Y2Nlc3MtZGFyazogIzA0Nzg1NzsgICAvLyBFbWVyYWxkLTcwMCAtIEFBLXNhZmUgc3VjY2VzcyB0ZXh0ICg1LjQ4OjEgb24gc3VyZmFjZSwgNS4wNjoxIG9uIGJvZHktYmcpXG4gICAgLS1zd3Atc3VjY2Vzcy1saWdodDogI2QxZmFlNTtcbiAgICAtLXN3cC1zdWNjZXNzLWxpZ2h0ZXI6ICNlY2ZkZjU7XG5cbiAgICAvLyBEYW5nZXJcbiAgICAvLyBOT1RFOiBgZGFuZ2VyYCAoMy43NjoxIG9uIHN1cmZhY2UpIGlzIGEgZmlsbCBjb2xvdXIsIG5vdCBhIHRleHQgY29sb3VyLlxuICAgIC8vIFVzZSBgZGFuZ2VyLWRhcmtgIGZvciBkYW5nZXItY29sb3VyZWQgKnRleHQqLlxuICAgIC0tc3dwLWRhbmdlcjogI2VmNDQ0NDtcbiAgICAtLXN3cC1kYW5nZXItcmdiOiAyMzksIDY4LCA2ODtcbiAgICAtLXN3cC1kYW5nZXItaG92ZXI6ICNkYzI2MjY7XG4gICAgLS1zd3AtZGFuZ2VyLWRhcms6ICNiOTFjMWM7ICAgIC8vIFJlZC03MDAgLSBBQS1zYWZlIGRhbmdlciB0ZXh0ICg2LjQ3OjEgb24gc3VyZmFjZSwgNS45NzoxIG9uIGJvZHktYmcpXG4gICAgLS1zd3AtZGFuZ2VyLWxpZ2h0OiAjZmVlMmUyO1xuICAgIC0tc3dwLWRhbmdlci1saWdodGVyOiAjZmVmMmYyO1xuXG4gICAgLy8gV2FybmluZ1xuICAgIC0tc3dwLXdhcm5pbmc6ICNmNTllMGI7XG4gICAgLS1zd3Atd2FybmluZy1yZ2I6IDI0NSwgMTU4LCAxMTtcbiAgICAtLXN3cC13YXJuaW5nLWhvdmVyOiAjZDk3NzA2O1xuICAgIC0tc3dwLXdhcm5pbmctZGFyazogIzkyNDAwZTsgICAvLyBBbWJlci04MDAgLSBBQS1zYWZlIHdhcm5pbmcgdGV4dCAoNy4wOToxIG9uIHN1cmZhY2UsIDYuNTQ6MSBvbiBib2R5LWJnLCA2LjM3OjEgb24gd2FybmluZy1saWdodClcbiAgICAtLXN3cC13YXJuaW5nLWxpZ2h0OiAjZmVmM2M3O1xuICAgIC0tc3dwLXdhcm5pbmctbGlnaHRlcjogI2ZmZmJlYjtcblxuICAgIC8vIEluZm9cbiAgICAtLXN3cC1pbmZvOiAjM2I4MmY2O1xuICAgIC0tc3dwLWluZm8tcmdiOiA1OSwgMTMwLCAyNDY7XG4gICAgLS1zd3AtaW5mby1ob3ZlcjogIzI1NjNlYjtcbiAgICAtLXN3cC1pbmZvLWRhcms6ICMxZDRlZDg7ICAgICAgLy8gQmx1ZS03MDAgLSBBQS1zYWZlIGluZm8gdGV4dCAoNi43MDoxIG9uIHN1cmZhY2UsIDYuMTk6MSBvbiBib2R5LWJnLCA1LjQ5OjEgb24gaW5mby1saWdodClcbiAgICAtLXN3cC1pbmZvLWxpZ2h0OiAjZGJlYWZlO1xuICAgIC0tc3dwLWluZm8tbGlnaHRlcjogI2VmZjZmZjtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBTdXJmYWNlIENvbG9yc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC0tc3dwLWJvZHktYmc6ICNmNGY2Zjg7XG4gICAgLS1zd3Atc3VyZmFjZTogI2ZmZmZmZjtcbiAgICAtLXN3cC1zdXJmYWNlLWhvdmVyOiAjZjhmYWZjO1xuICAgIC0tc3dwLXN1cmZhY2UtZWxldmF0ZWQ6ICNmZmZmZmY7XG4gICAgLS1zd3Atc3VyZmFjZS1vdmVybGF5OiByZ2IoMTUgMjMgNDIgLyA1MCUpO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIFRleHQgQ29sb3JzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLy8gRGVmYXVsdCBib2R5IHRleHQuIEFsaWFzZXMgYHRleHQtcHJpbWFyeWAgcmF0aGVyIHRoYW4gZHVwbGljYXRpbmcgdGhlXG4gICAgLy8gbGl0ZXJhbCAtIGl0IHdhcyBhIHB1cmUgIzMzMzMzMyBncmF5LCB3aGljaCB0aGUgVGludGVkIE5ldXRyYWxzIFJ1bGVcbiAgICAvLyBwcm9oaWJpdHMsIGFuZCB0aGVyZSBpcyBubyByZWFzb24gZm9yIHRoZSB0d28gdG8gZXZlciBkaXZlcmdlLlxuICAgIC0tc3dwLWJvZHktY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIC0tc3dwLXRleHQtcHJpbWFyeTogIzFlMjkzYjtcbiAgICAtLXN3cC10ZXh0LXNlY29uZGFyeTogIzQ3NTU2OTtcbiAgICAtLXN3cC10ZXh0LW11dGVkOiAjNjQ3NDhiO1xuXG4gICAgLy8gV0FSTklORzogMi41NjoxIG9uIHN1cmZhY2UsIDIuMzc6MSBvbiBib2R5LWJnIC0gRkFJTFMgV0NBRyBBQSAoMS40LjMpLlxuICAgIC8vIFNhZmUgT05MWSBmb3IgZGlzYWJsZWQgdGV4dCAoZXhlbXB0IGZyb20gMS40LjMpIGFuZCBkZWNvcmF0aXZlIGdseXBocy5cbiAgICAvLyBOZXZlciB1c2UgZm9yIHBsYWNlaG9sZGVycyBvciBhbnkgb3RoZXIgbWVhbmluZ2Z1bCB0ZXh0LlxuICAgIC0tc3dwLXRleHQtbGlnaHQ6ICM5NGEzYjg7XG4gICAgLS1zd3AtdGV4dC1pbnZlcnNlOiAjZmZmZmZmO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEJvcmRlciBDb2xvcnNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAtLXN3cC1ib3JkZXI6ICNlMmU4ZjA7XG4gICAgLS1zd3AtYm9yZGVyLWxpZ2h0OiAjZjFmNWY5O1xuICAgIC0tc3dwLWJvcmRlci1kYXJrOiAjY2JkNWUxO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIExpbmsgQ29sb3JzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLS1zd3AtbGluay1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIC0tc3dwLWxpbmstaG92ZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWRhcmspO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTUEFDSU5HIFNDQUxFICg4cHggYmFzZSlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuOnJvb3Qge1xuICAgIC0tc3dwLXNwYWNlLTA6IDA7XG4gICAgLS1zd3Atc3BhY2UtcHg6IDFweDtcbiAgICAtLXN3cC1zcGFjZS0wLTU6IDAuMTI1cmVtOyAgLy8gMnB4XG4gICAgLS1zd3Atc3BhY2UtMTogMC4yNXJlbTsgICAgIC8vIDRweFxuICAgIC0tc3dwLXNwYWNlLTEtNTogMC4zNzVyZW07ICAvLyA2cHhcbiAgICAtLXN3cC1zcGFjZS0yOiAwLjVyZW07ICAgICAgLy8gOHB4XG4gICAgLS1zd3Atc3BhY2UtMi01OiAwLjYyNXJlbTsgIC8vIDEwcHhcbiAgICAtLXN3cC1zcGFjZS0zOiAwLjc1cmVtOyAgICAgLy8gMTJweFxuICAgIC0tc3dwLXNwYWNlLTMtNTogMC44NzVyZW07ICAvLyAxNHB4XG4gICAgLS1zd3Atc3BhY2UtNDogMXJlbTsgICAgICAgIC8vIDE2cHhcbiAgICAtLXN3cC1zcGFjZS01OiAxLjI1cmVtOyAgICAgLy8gMjBweFxuICAgIC0tc3dwLXNwYWNlLTY6IDEuNXJlbTsgICAgICAvLyAyNHB4XG4gICAgLS1zd3Atc3BhY2UtNzogMS43NXJlbTsgICAgIC8vIDI4cHhcbiAgICAtLXN3cC1zcGFjZS04OiAycmVtOyAgICAgICAgLy8gMzJweFxuICAgIC0tc3dwLXNwYWNlLTk6IDIuMjVyZW07ICAgICAvLyAzNnB4XG4gICAgLS1zd3Atc3BhY2UtMTA6IDIuNXJlbTsgICAgIC8vIDQwcHhcbiAgICAtLXN3cC1zcGFjZS0xMTogMi43NXJlbTsgICAgLy8gNDRweFxuICAgIC0tc3dwLXNwYWNlLTEyOiAzcmVtOyAgICAgICAvLyA0OHB4XG4gICAgLS1zd3Atc3BhY2UtMTQ6IDMuNXJlbTsgICAgIC8vIDU2cHhcbiAgICAtLXN3cC1zcGFjZS0xNjogNHJlbTsgICAgICAgLy8gNjRweFxuICAgIC0tc3dwLXNwYWNlLTIwOiA1cmVtOyAgICAgICAvLyA4MHB4XG4gICAgLS1zd3Atc3BhY2UtMjQ6IDZyZW07ICAgICAgIC8vIDk2cHhcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQk9SREVSIFJBRElVU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG46cm9vdCB7XG4gICAgLS1zd3AtcmFkaXVzLW5vbmU6IDA7XG4gICAgLS1zd3AtcmFkaXVzLXNtOiAwLjM3NXJlbTsgICAgLy8gNnB4IC0gU21hbGwgZWxlbWVudHMsIHRhZ3NcbiAgICAtLXN3cC1yYWRpdXMtbWQ6IDAuNXJlbTsgICAgICAvLyA4cHggLSBGb3JtIGNvbnRyb2xzLCBidXR0b25zXG4gICAgLS1zd3AtcmFkaXVzLWxnOiAwLjc1cmVtOyAgICAgLy8gMTJweCAtIENhcmRzLCBtb2RhbHNcbiAgICAtLXN3cC1yYWRpdXMteGw6IDFyZW07ICAgICAgICAvLyAxNnB4IC0gTGFyZ2UgY2FyZHMsIGRpYWxvZ3NcbiAgICAtLXN3cC1yYWRpdXMtMnhsOiAxLjVyZW07ICAgICAvLyAyNHB4IC0gRXh0cmEgbGFyZ2UgZWxlbWVudHNcbiAgICAtLXN3cC1yYWRpdXMtZnVsbDogOTk5OXB4OyAgICAvLyBQaWxsIHNoYXBlXG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNIQURPV1MgKFN1YnRsZSwgbW9kZXJuIGVsZXZhdGlvbilcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuOnJvb3Qge1xuICAgIC8vIEVsZXZhdGlvbiBzaGFkb3dzXG4gICAgLS1zd3Atc2hhZG93LXhzOiAwIDFweCAycHggMCByZ2IoMCAwIDAgLyA1JSk7XG4gICAgLS1zd3Atc2hhZG93LXNtOiAwIDFweCAzcHggMCByZ2IoMCAwIDAgLyAxMCUpLCAwIDFweCAycHggLTFweCByZ2IoMCAwIDAgLyAxMCUpO1xuICAgIC0tc3dwLXNoYWRvdy1tZDogMCA0cHggNnB4IC0xcHggcmdiKDAgMCAwIC8gMTAlKSwgMCAycHggNHB4IC0ycHggcmdiKDAgMCAwIC8gMTAlKTtcbiAgICAtLXN3cC1zaGFkb3ctbGc6IDAgMTBweCAxNXB4IC0zcHggcmdiKDAgMCAwIC8gMTAlKSwgMCA0cHggNnB4IC00cHggcmdiKDAgMCAwIC8gMTAlKTtcbiAgICAtLXN3cC1zaGFkb3cteGw6IDAgMjBweCAyNXB4IC01cHggcmdiKDAgMCAwIC8gMTAlKSwgMCA4cHggMTBweCAtNnB4IHJnYigwIDAgMCAvIDEwJSk7XG4gICAgLS1zd3Atc2hhZG93LTJ4bDogMCAyNXB4IDUwcHggLTEycHggcmdiKDAgMCAwIC8gMjUlKTtcblxuICAgIC8vIElubmVyIHNoYWRvd1xuICAgIC0tc3dwLXNoYWRvdy1pbm5lcjogaW5zZXQgMCAycHggNHB4IDAgcmdiKDAgMCAwIC8gNSUpO1xuXG4gICAgLy8gQ29sb3JlZCBzaGFkb3dzIGZvciBidXR0b25zIGFuZCBpbnRlcmFjdGl2ZSBlbGVtZW50c1xuICAgIC0tc3dwLXNoYWRvdy1wcmltYXJ5OiAwIDRweCAxNHB4IDAgcmdiKDQ2IDE1MCA1OCAvIDI1JSk7XG4gICAgLS1zd3Atc2hhZG93LXByaW1hcnktbGc6IDAgOHB4IDIwcHggMCByZ2IoNDYgMTUwIDU4IC8gMzAlKTtcbiAgICAtLXN3cC1zaGFkb3ctZGFuZ2VyOiAwIDRweCAxNHB4IDAgcmdiKDIzOSA2OCA2OCAvIDI1JSk7XG4gICAgLS1zd3Atc2hhZG93LWRhbmdlci1sZzogMCA4cHggMjBweCAwIHJnYigyMzkgNjggNjggLyAzMCUpO1xuXG4gICAgLy8gRm9jdXMgcmluZyBzaGFkb3dcbiAgICAtLXN3cC1yaW5nLXByaW1hcnk6IDAgMCAwIDNweCByZ2IoNDYgMTUwIDU4IC8gMTUlKTtcbiAgICAtLXN3cC1yaW5nLWRhbmdlcjogMCAwIDAgM3B4IHJnYigyMzkgNjggNjggLyAxNSUpO1xuICAgIC0tc3dwLXJpbmctb2Zmc2V0OiAwIDAgMCAycHggdmFyKC0tc3dwLXN1cmZhY2UpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUUkFOU0lUSU9OU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG46cm9vdCB7XG4gICAgLy8gRHVyYXRpb25zXG4gICAgLS1zd3AtZHVyYXRpb24tZmFzdDogMTUwbXM7XG4gICAgLS1zd3AtZHVyYXRpb24tYmFzZTogMjAwbXM7XG4gICAgLS1zd3AtZHVyYXRpb24tc2xvdzogMzAwbXM7XG4gICAgLS1zd3AtZHVyYXRpb24tc2xvd2VyOiA0MDBtcztcblxuICAgIC8vIFRpbWluZyBmdW5jdGlvbnNcbiAgICAtLXN3cC1lYXNlLWxpbmVhcjogbGluZWFyO1xuICAgIC0tc3dwLWVhc2UtaW46IGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpO1xuICAgIC0tc3dwLWVhc2Utb3V0OiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcbiAgICAtLXN3cC1lYXNlLWluLW91dDogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcblxuICAgIC8vIENvbW1vbiB0cmFuc2l0aW9uc1xuICAgIC0tc3dwLXRyYW5zaXRpb24tZmFzdDogdmFyKC0tc3dwLWR1cmF0aW9uLWZhc3QpIHZhcigtLXN3cC1lYXNlLWluLW91dCk7XG4gICAgLS1zd3AtdHJhbnNpdGlvbi1iYXNlOiB2YXIoLS1zd3AtZHVyYXRpb24tYmFzZSkgdmFyKC0tc3dwLWVhc2UtaW4tb3V0KTtcbiAgICAtLXN3cC10cmFuc2l0aW9uLXNsb3c6IHZhcigtLXN3cC1kdXJhdGlvbi1zbG93KSB2YXIoLS1zd3AtZWFzZS1pbi1vdXQpO1xuXG4gICAgLy8gUHJvcGVydHktc3BlY2lmaWMgdHJhbnNpdGlvbnNcbiAgICAtLXN3cC10cmFuc2l0aW9uLWNvbG9yczogY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcbiAgICAtLXN3cC10cmFuc2l0aW9uLXNoYWRvdzogYm94LXNoYWRvdyB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKTtcbiAgICAtLXN3cC10cmFuc2l0aW9uLXRyYW5zZm9ybTogdHJhbnNmb3JtIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xuICAgIC0tc3dwLXRyYW5zaXRpb24tYWxsOiBhbGwgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFotSU5ERVggU0NBTEVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuOnJvb3Qge1xuICAgIC0tc3dwLXotZHJvcGRvd246IDEwMDA7XG4gICAgLS1zd3Atei1zdGlja3k6IDEwMjA7XG4gICAgLS1zd3Atei1maXhlZDogMTAzMDtcbiAgICAtLXN3cC16LW1vZGFsLWJhY2tkcm9wOiAxMDQwO1xuICAgIC0tc3dwLXotbW9kYWw6IDEwNTA7XG4gICAgLS1zd3Atei1wb3BvdmVyOiAxMDYwO1xuICAgIC0tc3dwLXotdG9vbHRpcDogMTA3MDtcbiAgICAtLXN3cC16LXRvYXN0OiAxMDgwO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDT01QT05FTlQtU1BFQ0lGSUMgVE9LRU5TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbjpyb290IHtcbiAgICAvLyBDYXJkXG4gICAgLS1zd3AtY2FyZC1iZzogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIC0tc3dwLWNhcmQtYm9yZGVyOiB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICAtLXN3cC1jYXJkLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgLS1zd3AtY2FyZC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctc20pO1xuICAgIC0tc3dwLWNhcmQtcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIC0tc3dwLWNhcmQtaGVhZGVyLXBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgLS1zd3AtY2FyZC1mb290ZXItcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgIC8vIEZvcm0gY29udHJvbHNcbiAgICAtLXN3cC1pbnB1dC1iZzogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIC0tc3dwLWlucHV0LWJvcmRlcjogdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgLS1zd3AtaW5wdXQtcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICAtLXN3cC1pbnB1dC1wYWRkaW5nLXk6IHZhcigtLXN3cC1zcGFjZS0yLTUpO1xuICAgIC0tc3dwLWlucHV0LXBhZGRpbmcteDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIC0tc3dwLWlucHV0LWZvY3VzLWJvcmRlcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIC0tc3dwLWlucHV0LWZvY3VzLXJpbmc6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuXG4gICAgLy8gQnV0dG9uc1xuICAgIC0tc3dwLWJ0bi1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIC0tc3dwLWJ0bi1wYWRkaW5nLXk6IHZhcigtLXN3cC1zcGFjZS0yLTUpO1xuICAgIC0tc3dwLWJ0bi1wYWRkaW5nLXg6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAtLXN3cC1idG4tZm9udC13ZWlnaHQ6IDUwMDtcblxuICAgIC8vIE1vZGFsXG4gICAgLS1zd3AtbW9kYWwtYmc6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAtLXN3cC1tb2RhbC1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMteGwpO1xuICAgIC0tc3dwLW1vZGFsLXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy14bCk7XG4gICAgLS1zd3AtbW9kYWwtcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuXG4gICAgLy8gVGFibGVcbiAgICAtLXN3cC10YWJsZS1iZzogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIC0tc3dwLXRhYmxlLWJvcmRlcjogdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgLS1zd3AtdGFibGUtaGVhZGVyLWJnOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgLS1zd3AtdGFibGUtcm93LWhvdmVyLWJnOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgLS1zd3AtdGFibGUtY2VsbC1wYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuXG4gICAgLy8gQWxlcnRcbiAgICAtLXN3cC1hbGVydC1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIC0tc3dwLWFsZXJ0LXBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcblxuICAgIC8vIE1vbmV5IGRpc3BsYXkgKHNpZ25hdHVyZSBjb21wb25lbnQgLSBzZWUgY29tcG9uZW50cy9fbW9uZXkuc2NzcylcbiAgICAvLyBFdmVyeSBjb2xvdXIgaGVyZSBpcyBBQS1jb21wbGlhbnQgYWdhaW5zdCBCT1RIIGBzdXJmYWNlYCBhbmQgYGJvZHktYmdgLFxuICAgIC8vIGJlY2F1c2UgbW9uZXkgbXVzdCBuZXZlciBiZSBtaXNyZWFkYWJsZSBvbiBhbnkgc3VyZmFjZSBpdCBsYW5kcyBvbi5cbiAgICAtLXN3cC1tb25leS1jdXJyZW5jeTogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTsgIC8vIDcuNTg6MSAvIDYuOTk6MVxuICAgIC0tc3dwLW1vbmV5LW5ldXRyYWw6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpOyAgICAgLy8gMTQuNjM6MSAvIDEzLjUwOjFcbiAgICAtLXN3cC1tb25leS1wYWlkOiB2YXIoLS1zd3Atc3VjY2Vzcy1kYXJrKTsgICAgICAgIC8vIDUuNDg6MSAvIDUuMDY6MVxuICAgIC0tc3dwLW1vbmV5LW92ZXJkdWU6IHZhcigtLXN3cC1kYW5nZXItZGFyayk7ICAgICAgLy8gNi40NzoxIC8gNS45NzoxXG5cbiAgICAvLyBSZWxhdGl2ZSBzdGVwIGFwcGxpZWQgdG8gYSBgLm1vbmV5LS10b3RhbGAgYW1vdW50LiBVbml0bGVzcyBtdWx0aXBsaWVyIHNvXG4gICAgLy8gdGhlIHN0ZXAgaXMgY29ycmVjdCBhdCBldmVyeSBpbmhlcml0ZWQgYmFzZSBzaXplLlxuICAgIC0tc3dwLW1vbmV5LXRvdGFsLXNjYWxlOiAxLjEyNTtcblxuICAgIC8vIFJlbGF0aXZlIHNpemUgb2YgdGhlIGN1cnJlbmN5IGNvZGUgYWdhaW5zdCBpdHMgYW1vdW50LiBUaGUgY29kZSBpcyBhIHVuaXQsXG4gICAgLy8gbm90IGEgc2Vjb25kIG51bWJlciwgYW5kIHJlYWRzIGFzIHN1Ym9yZGluYXRlIHJhdGhlciB0aGFuIGNvbXBldGluZy5cbiAgICAtLXN3cC1tb25leS1jdXJyZW5jeS1zY2FsZTogMC43NWVtO1xufVxuIiwiLyoqXG4gKiBTb2xpZEludm9pY2UgRGVzaWduIFN5c3RlbSAtIFR5cG9ncmFwaHlcbiAqXG4gKiBUeXBvZ3JhcGh5IHNjYWxlLCBmb250IGZhbWlsaWVzLCB3ZWlnaHRzLCBhbmQgbGluZSBoZWlnaHRzLlxuICogVXNlcyBzeXN0ZW0gZm9udHMgZm9yIG9wdGltYWwgcGVyZm9ybWFuY2UgYW5kIG5hdGl2ZSBmZWVsLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZPTlQgRkFNSUxJRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuOnJvb3Qge1xuICAgIC8vIFN5c3RlbSBmb250IHN0YWNrIC0gTW9kZXJuLCBwZXJmb3JtYW50LCBuYXRpdmUgZmVlbFxuICAgIC0tc3dwLWZvbnQtc2FuczogLWFwcGxlLXN5c3RlbSwgYmxpbmttYWNzeXN0ZW1mb250LCAnU2Vnb2UgVUknLCByb2JvdG8sXG4gICAgICAgICAgICAgICAgICAgICAnSGVsdmV0aWNhIE5ldWUnLCBhcmlhbCwgJ05vdG8gU2FucycsIHNhbnMtc2VyaWYsXG4gICAgICAgICAgICAgICAgICAgICAnQXBwbGUgQ29sb3IgRW1vamknLCAnU2Vnb2UgVUkgRW1vamknLCAnU2Vnb2UgVUkgU3ltYm9sJyxcbiAgICAgICAgICAgICAgICAgICAgICdOb3RvIENvbG9yIEVtb2ppJztcblxuICAgIC8vIE1vbm9zcGFjZSBmb3IgY29kZSwgbnVtYmVycyBpbiB0YWJsZXNcbiAgICAtLXN3cC1mb250LW1vbm86IHVpLW1vbm9zcGFjZSwgc2Ztb25vLXJlZ3VsYXIsICdTRiBNb25vJywgbWVubG8sIG1vbmFjbyxcbiAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGFzLCAnTGliZXJhdGlvbiBNb25vJywgJ0NvdXJpZXIgTmV3JywgbW9ub3NwYWNlO1xuXG4gICAgLy8gRGVmYXVsdCBmb250IGZhbWlseVxuICAgIC0tc3dwLWZvbnQtZmFtaWx5OiB2YXIoLS1zd3AtZm9udC1zYW5zKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRk9OVCBTSVpFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG46cm9vdCB7XG4gICAgLS1zd3AtdGV4dC14czogMC43NXJlbTsgICAgICAgLy8gMTJweCAtIEZpbmUgcHJpbnQsIGJhZGdlc1xuICAgIC0tc3dwLXRleHQtc206IDAuODEyNXJlbTsgICAgIC8vIDEzcHggLSBIZWxwIHRleHQsIGNhcHRpb25zXG4gICAgLS1zd3AtdGV4dC1iYXNlOiAwLjkzNzVyZW07ICAgLy8gMTVweCAtIEJvZHkgdGV4dCAoc2xpZ2h0bHkgbGFyZ2VyIHRoYW4gMTRweCBmb3IgcmVhZGFiaWxpdHkpXG4gICAgLS1zd3AtdGV4dC1tZDogMXJlbTsgICAgICAgICAgLy8gMTZweCAtIEVtcGhhc2l6ZWQgYm9keVxuICAgIC0tc3dwLXRleHQtbGc6IDEuMTI1cmVtOyAgICAgIC8vIDE4cHggLSBDYXJkIHRpdGxlcywgc2VjdGlvbiBoZWFkZXJzXG4gICAgLS1zd3AtdGV4dC14bDogMS4yNXJlbTsgICAgICAgLy8gMjBweCAtIFBhZ2Ugc3VidGl0bGVzXG4gICAgLS1zd3AtdGV4dC0yeGw6IDEuNXJlbTsgICAgICAgLy8gMjRweCAtIFBhZ2UgdGl0bGVzXG4gICAgLS1zd3AtdGV4dC0zeGw6IDEuODc1cmVtOyAgICAgLy8gMzBweCAtIEhlcm8gdGl0bGVzXG4gICAgLS1zd3AtdGV4dC00eGw6IDIuMjVyZW07ICAgICAgLy8gMzZweCAtIExhcmdlIGRpc3BsYXlcbiAgICAtLXN3cC10ZXh0LTV4bDogM3JlbTsgICAgICAgICAvLyA0OHB4IC0gRXh0cmEgbGFyZ2UgZGlzcGxheVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMSU5FIEhFSUdIVFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuOnJvb3Qge1xuICAgIC0tc3dwLWxlYWRpbmctbm9uZTogMTtcbiAgICAtLXN3cC1sZWFkaW5nLXRpZ2h0OiAxLjI1O1xuICAgIC0tc3dwLWxlYWRpbmctc251ZzogMS4zNzU7XG4gICAgLS1zd3AtbGVhZGluZy1ub3JtYWw6IDEuNTtcbiAgICAtLXN3cC1sZWFkaW5nLXJlbGF4ZWQ6IDEuNjI1O1xuICAgIC0tc3dwLWxlYWRpbmctbG9vc2U6IDI7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZPTlQgV0VJR0hUU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG46cm9vdCB7XG4gICAgLS1zd3AtZm9udC10aGluOiAxMDA7XG4gICAgLS1zd3AtZm9udC1leHRyYWxpZ2h0OiAyMDA7XG4gICAgLS1zd3AtZm9udC1saWdodDogMzAwO1xuICAgIC0tc3dwLWZvbnQtbm9ybWFsOiA0MDA7XG4gICAgLS1zd3AtZm9udC1tZWRpdW06IDUwMDtcbiAgICAtLXN3cC1mb250LXNlbWlib2xkOiA2MDA7XG4gICAgLS1zd3AtZm9udC1ib2xkOiA3MDA7XG4gICAgLS1zd3AtZm9udC1leHRyYWJvbGQ6IDgwMDtcbiAgICAtLXN3cC1mb250LWJsYWNrOiA5MDA7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIExFVFRFUiBTUEFDSU5HXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbjpyb290IHtcbiAgICAtLXN3cC10cmFja2luZy10aWdodGVyOiAtMC4wNWVtO1xuICAgIC0tc3dwLXRyYWNraW5nLXRpZ2h0OiAtMC4wMjVlbTtcbiAgICAtLXN3cC10cmFja2luZy1ub3JtYWw6IDA7XG4gICAgLS1zd3AtdHJhY2tpbmctd2lkZTogMC4wMjVlbTtcbiAgICAtLXN3cC10cmFja2luZy13aWRlcjogMC4wNWVtO1xuICAgIC0tc3dwLXRyYWNraW5nLXdpZGVzdDogMC4xZW07XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRZUE9HUkFQSFkgVVRJTElUWSBDTEFTU0VTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFBhZ2UgdGl0bGUgLSBMYXJnZSwgcHJvbWluZW50IGhlYWRpbmdcblxuLnRleHQtcGFnZS10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC0yeGwpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXN3cC1sZWFkaW5nLXRpZ2h0KTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXN3cC10cmFja2luZy10aWdodCk7XG59XG5cbi8vIFBhZ2Ugc3VidGl0bGVcblxuLnRleHQtcGFnZS1zdWJ0aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbm9ybWFsKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc3dwLWxlYWRpbmctbm9ybWFsKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xufVxuXG4vLyBDYXJkIHRpdGxlXG5cbi50ZXh0LWNhcmQtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXN3cC1sZWFkaW5nLXNudWcpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbn1cblxuLy8gQ2FyZCBzdWJ0aXRsZVxuXG4udGV4dC1jYXJkLXN1YnRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbm9ybWFsKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc3dwLWxlYWRpbmctbm9ybWFsKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xufVxuXG4vLyBTZWN0aW9uIHRpdGxlICh3aXRoIGljb24gcGF0dGVybilcblxuLnRleHQtc2VjdGlvbi10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1tZCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc3dwLWxlYWRpbmctc251Zyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcblxuICAgIHN2ZyxcbiAgICBpIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgb3BhY2l0eTogMC45O1xuICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICB9XG59XG5cbi8vIExhYmVsIHRleHQgKGZvcm0gbGFiZWxzLCB0YWJsZSBoZWFkZXJzKVxuXG4udGV4dC1sYWJlbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXN3cC1sZWFkaW5nLW5vcm1hbCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG59XG5cbi8vIEJvZHkgdGV4dFxuXG4udGV4dC1ib2R5IHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ub3JtYWwpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zd3AtbGVhZGluZy1yZWxheGVkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLWJvZHktY29sb3IpO1xufVxuXG4vLyBTbWFsbC9IZWxwIHRleHRcblxuLnRleHQtaGVscCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW5vcm1hbCk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXN3cC1sZWFkaW5nLW5vcm1hbCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbn1cblxuLy8gTW9ub3NwYWNlIHRleHQgKGZvciBJRHMsIGNvZGVzKVxuXG4udGV4dC1tb25vIHtcbiAgICBmb250LWZhbWlseTogdmFyKC0tc3dwLWZvbnQtbW9ubyk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG59XG5cbi8vIFRhYmxlIGhlYWRlciB0ZXh0XG5cbi50ZXh0LXRhYmxlLWhlYWRlciB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc3dwLWxlYWRpbmctbm9ybWFsKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXN3cC10cmFja2luZy13aWRlcik7XG59XG5cbi8vIEVtcGhhc2l6ZWQvSGlnaGxpZ2h0IHRleHRcblxuLnRleHQtZW1waGFzaXMge1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xufVxuXG4vLyBNdXRlZCB0ZXh0XG5cbi50ZXh0LXN1YnRsZSB7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbn1cblxuLy8gTGluayBzdHlsaW5nXG5cbi50ZXh0LWxpbmsge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtbGluay1jb2xvcik7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtbGluay1ob3Zlci1jb2xvcik7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIH1cbn1cblxuLy8gVHJ1bmNhdGUgdGV4dCB3aXRoIGVsbGlwc2lzXG5cbi50ZXh0LXRydW5jYXRlIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi8vIE11bHRpLWxpbmUgdHJ1bmNhdGlvbiAocmVxdWlyZXMgLXdlYmtpdClcblxuLnRleHQtbGluZS1jbGFtcC0yIHtcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDI7XG4gICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4udGV4dC1saW5lLWNsYW1wLTMge1xuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgIC13ZWJraXQtbGluZS1jbGFtcDogMztcbiAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSBEZXNpZ24gU3lzdGVtIC0gQ29tcG9uZW50IEluZGV4XG4gKlxuICogQ3VzdG9tIGNvbXBvbmVudCBzdHlsZXMgdGhhdCBleHRlbmQgQm9vdHN0cmFwL1RhYmxlci5cbiAqIE9ubHkgYWRkIHN0eWxlcyBoZXJlIHRoYXQgcHJvdmlkZSBmdW5jdGlvbmFsaXR5IGJleW9uZCB3aGF0IEJvb3RzdHJhcC9UYWJsZXIgb2ZmZXIuXG4gKlxuICogTm90ZTogTW9zdCBjb21wb25lbnQgc3R5bGluZyBjb21lcyBmcm9tIEJvb3RzdHJhcCA1IGFuZCBUYWJsZXIuXG4gKiBUaGlzIGZpbGUgaW1wb3J0cyBvbmx5IGN1c3RvbSBleHRlbnNpb25zLCBub3QgcmVwbGFjZW1lbnRzLlxuICovXG5cbi8vIFNoYXJlZCBGb3JtIFBhZ2UgLSBDb25zb2xpZGF0ZWQgZm9ybS1wYWdlIGxheW91dCBwYXR0ZXJuXG5AaW1wb3J0ICdmb3JtLXBhZ2UnO1xuXG4vLyBEb2N1bWVudCBWaWV3IC0gU2hhcmVkIGxheW91dCBmb3IgSW52b2ljZSBhbmQgUXVvdGUgdmlldyBwYWdlc1xuQGltcG9ydCAnZG9jdW1lbnQtdmlldyc7XG5cbi8vIEV4dGVybmFsIERvY3VtZW50IFZpZXcgLSBTaGFyZWQgbGF5b3V0IGZvciBwdWJsaWMtZmFjaW5nIEludm9pY2UgYW5kIFF1b3RlIHBhZ2VzXG5AaW1wb3J0ICdleHRlcm5hbC1kb2Mtdmlldyc7XG5cbi8vIE1hcmtldHBsYWNlIC0gU2hhcmVkIHN0eWxlcyBmb3IgUGF5bWVudCBhbmQgTm90aWZpY2F0aW9uIG1hcmtldHBsYWNlIHBhZ2VzXG5AaW1wb3J0ICdtYXJrZXRwbGFjZSc7XG5cbi8vIEdsb2JhbCBTZWFyY2ggLSBUb3AgbmF2aWdhdGlvbiBzZWFyY2ggYmFyIHdpdGggbGl2ZSByZXN1bHRzIGRyb3Bkb3duXG5AaW1wb3J0ICdnbG9iYWwtc2VhcmNoJztcblxuLy8gRGF0YUdyaWQgLSBNb2Rlcm4gdGFibGUvZ3JpZCBjb21wb25lbnQgc3R5bGVzXG5AaW1wb3J0ICdkYXRhZ3JpZCc7XG5cbi8vIENsaWVudCBGb3JtIC0gTW9kZXJuIGNsaWVudCBjcmVhdGlvbiBmb3JtXG5AaW1wb3J0ICdjbGllbnQtZm9ybSc7XG5cbi8vIEJpbGxpbmcgRm9ybSAtIFNoYXJlZCBzdHlsZXMgZm9yIEludm9pY2UgYW5kIFF1b3RlIGNyZWF0aW9uIGZvcm1zXG5AaW1wb3J0ICdiaWxsaW5nLWZvcm0nO1xuXG4vLyBQYXltZW50IFBhZ2UgLSBJbnZvaWNlIHBheW1lbnQgZm9ybSB3aXRoIG1ldGhvZCBzZWxlY3Rpb25cbkBpbXBvcnQgJ3BheW1lbnQtcGFnZSc7XG5cbi8vIFBheW1lbnRzIExpc3QgLSBQYXltZW50cyBsaXN0IHBhZ2Ugd2l0aCBLUEkgY2FyZHMgYW5kIGZpbHRlcnNcbkBpbXBvcnQgJ3BheW1lbnRzLWxpc3QnO1xuXG4vLyBVc2VycyBQYWdlIC0gVXNlcnMgbGlzdCB3aXRoIEtQSSBjYXJkcyBhbmQgdGFic1xuQGltcG9ydCAndXNlcnMtcGFnZSc7XG5cbi8vIFByb2ZpbGUgUGFnZSAtIFVzZXIgcHJvZmlsZSBhbmQgc2V0dGluZ3MgcGFnZXNcbkBpbXBvcnQgJ3Byb2ZpbGUtcGFnZSc7XG5cbi8vIFR3by1GYWN0b3IgQXV0aGVudGljYXRpb24gLSAyRkEgY29uZmlndXJhdGlvbiBhbmQgbG9naW4gcGFnZXNcbkBpbXBvcnQgJ3R3by1mYWN0b3InO1xuXG4vLyBOb3RpZmljYXRpb25zIFBhZ2UgLSBVc2VyIG5vdGlmaWNhdGlvbiBwcmVmZXJlbmNlc1xuQGltcG9ydCAnbm90aWZpY2F0aW9ucy1wYWdlJztcblxuLy8gU3Vic2NyaXB0aW9uIFBhZ2VzIC0gVHJpYWwgZXhwaXJlZCwgY2FuY2VsbGVkLCBwZW5kaW5nIHN1YnNjcmlwdGlvbiBzdGF0ZXNcbkBpbXBvcnQgJ3N1YnNjcmlwdGlvbi1wYWdlcyc7XG5cbi8vIE9uYm9hcmRpbmcgQ2hlY2tsaXN0IC0gRGFzaGJvYXJkIGNoZWNrbGlzdCB3aWRnZXQgc3R5bGVzXG5AaW1wb3J0ICdvbmJvYXJkaW5nLWNoZWNrbGlzdCc7XG5cbi8vIE9uYm9hcmRpbmcgV2l6YXJkIC0gRmlyc3QtcnVuIGZsb3cgKC9vbmJvYXJkaW5nKSBzdHlsZXNcbkBpbXBvcnQgJ29uYm9hcmRpbmctd2l6YXJkJztcblxuLy8gTW9uZXkgLSBTaWduYXR1cmUgY29tcG9uZW50OyBzaW5nbGUgc291cmNlIG9mIHRydXRoIGZvciBldmVyeSBjdXJyZW5jeSB2YWx1ZVxuQGltcG9ydCAnbW9uZXknO1xuXG4vLyBTdGF0dXMgQ2hpcCAtIFNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIGV2ZXJ5IHN0YXR1cyB3b3JkXG5AaW1wb3J0ICdzdGF0dXMtY2hpcCc7XG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSAtIFNoYXJlZCBGb3JtIFBhZ2UgU3R5bGVzXG4gKlxuICogQ29uc29saWRhdGVkIGZvcm0tcGFnZSBsYXlvdXQgcGF0dGVybiB1c2VkIGFjcm9zcyBUYXhCdW5kbGUsIENsaWVudEJ1bmRsZSxcbiAqIFVzZXJCdW5kbGUgKFByb2ZpbGUsIEludml0ZSwgQ2hhbmdlUGFzc3dvcmQpIGFuZCBzaW1pbGFyIGZvcm0gcGFnZXMuXG4gKlxuICogVGVtcGxhdGUgc3RydWN0dXJlOlxuICogICAuZm9ybS1wYWdlID4gLmZvcm0tcGFnZS1jb250YWluZXJbLS1uYXJyb3d8LS1tZWRpdW18LS13aWRlXSA+XG4gKiAgICAgLmZvcm0tcGFnZS1oZWFkZXIgPiAuZm9ybS1wYWdlLWhlYWRlci1jb250ZW50ID5cbiAqICAgICAgIC5mb3JtLXBhZ2UtaWNvblstLXNlY3VyaXR5XSArIGRpdiguZm9ybS1wYWdlLXRpdGxlICsgLmZvcm0tcGFnZS1zdWJ0aXRsZSlcbiAqICAgICAuZm9ybS1wYWdlLXNlY3Rpb25zID4gLmZvcm0tcGFnZS1zZWN0aW9uID5cbiAqICAgICAgIC5zZWN0aW9uLWhlYWRlciA+IC5zZWN0aW9uLWljb25bLS1zZWN1cml0eV0gKyAuc2VjdGlvbi1oZWFkZXItdGV4dFxuICogICAgICAgICAoLnNlY3Rpb24tdGl0bGUgKyAuc2VjdGlvbi1kZXNjcmlwdGlvbilcbiAqICAgICAgIC5zZWN0aW9uLWNvbnRlbnQgPiAuZm9ybS1ncmlkID4gLmZvcm0tZmllbGRbLmZvcm0tZmllbGQtd2lkZV1cbiAqICAgICAuZm9ybS1wYWdlLWFjdGlvbnMgPiAuZm9ybS1wYWdlLWFjdGlvbnMtaW5uZXJbLS1tZWRpdW1dXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUEFHRSBXUkFQUEVSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLXBhZ2Uge1xuICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFdJRFRILUNPTlNUUkFJTkVEIENPTlRBSU5FUlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZm9ybS1wYWdlLWNvbnRhaW5lciB7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgcGFkZGluZy1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yNCk7XG5cbiAgICAmLS1uYXJyb3cgeyBtYXgtd2lkdGg6IDgwMHB4OyB9XG5cbiAgICAmLS1tZWRpdW0geyBtYXgtd2lkdGg6IDkwMHB4OyB9XG5cbiAgICAmLS13aWRlICAgeyBtYXgtd2lkdGg6IDExMDBweDsgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQQUdFIEhFQURFUlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZm9ybS1wYWdlLWhlYWRlciB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTgpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KSAwO1xufVxuXG4uZm9ybS1wYWdlLWhlYWRlci1jb250ZW50IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi5mb3JtLXBhZ2UtaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiA1NnB4O1xuICAgIGhlaWdodDogNTZweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCkgMCUsIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4xNSkgMTAwJSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICBmbGV4LXNocmluazogMDtcblxuICAgICYtLXNlY3VyaXR5IHtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjIpIDAlLCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMSkgMTAwJSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgfVxufVxuXG4uZm9ybS1wYWdlLXRpdGxlIHtcbiAgICBmb250LXNpemU6IDEuNzVyZW07XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyNWVtO1xufVxuXG4uZm9ybS1wYWdlLXN1YnRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luOiB2YXIoLS1zd3Atc3BhY2UtMSkgMCAwIDA7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNFQ1RJT05TIExJU1Rcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0tcGFnZS1zZWN0aW9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTYpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBJTkRJVklEVUFMIFNFQ1RJT04gQ0FSRFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZm9ybS1wYWdlLXNlY3Rpb24ge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRyYW5zaXRpb246IGJveC1zaGFkb3cgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSksXG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWJvcmRlci1kYXJrKTtcbiAgICB9XG5cbiAgICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNIQVJFRCBTRUNUSU9OIEhFQURFUiAodXNlZCBpbnNpZGUgZm9ybS1wYWdlLXNlY3Rpb24pXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5zZWN0aW9uLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNSkgdmFyKC0tc3dwLXNwYWNlLTYpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xufVxuXG4uc2VjdGlvbi1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KSAwJSwgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjEpIDEwMCUpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgZmxleC1zaHJpbms6IDA7XG5cbiAgICAmLS1zZWN1cml0eSB7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4xNSkgMCUsIHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4wNSkgMTAwJSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgfVxufVxuXG4uc2VjdGlvbi1oZWFkZXItdGV4dCB7XG4gICAgZmxleDogMTtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xufVxuXG4uc2VjdGlvbi10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1sZyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbWFyZ2luOiAwIDAgdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbn1cblxuLnNlY3Rpb24tZGVzY3JpcHRpb24ge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luOiAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNFQ1RJT04gQk9EWVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uc2VjdGlvbi1jb250ZW50IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRXTy1DT0xVTU4gRk9STSBHUklEXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNzY4cHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIH1cbn1cblxuLmZvcm0tZmllbGQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLmZvcm0tZmllbGQtd2lkZSB7XG4gICAgZ3JpZC1jb2x1bW46IDEgLyAtMTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU1RJQ0tZIEZPT1RFUiBBQ1RJT05TIEJBUlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZm9ybS1wYWdlLWFjdGlvbnMge1xuICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgMDtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtOCk7XG4gICAgei1pbmRleDogMTA7XG4gICAgYm94LXNoYWRvdzogMCAtNHB4IDEycHggcmdiKDAgMCAwIC8gNSUpO1xufVxuXG4uZm9ybS1wYWdlLWFjdGlvbnMtaW5uZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgbWF4LXdpZHRoOiA4MDBweDtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBwYWRkaW5nOiAwIHZhcigtLXN3cC1zcGFjZS00KTtcblxuICAgICYtLW1lZGl1bSB7IG1heC13aWR0aDogOTAwcHg7IH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRU5IQU5DRUQgU0FWRSBCVVRUT05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmJ0bi1zYXZlLFxuLmJ0bi1zYXZlLXByaW1hcnkge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctcHJpbWFyeSk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1wcmltYXJ5LWxnKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgIH1cblxuICAgICY6YWN0aXZlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUkVTUE9OU0lWRSBERVNJR05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhICh3aWR0aCA8PSA3NjcuOThweCkge1xuXG4gICAgLmZvcm0tcGFnZSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG5cbiAgICAuZm9ybS1wYWdlLWhlYWRlciB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSAwO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgfVxuXG4gICAgLmZvcm0tcGFnZS1oZWFkZXItY29udGVudCB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgfVxuXG4gICAgLmZvcm0tcGFnZS1pY29uIHtcbiAgICAgICAgd2lkdGg6IDQ4cHg7XG4gICAgICAgIGhlaWdodDogNDhweDtcbiAgICB9XG5cbiAgICAuZm9ybS1wYWdlLXRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgfVxuXG4gICAgLnNlY3Rpb24taGVhZGVyIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICB9XG5cbiAgICAuc2VjdGlvbi1pY29uIHtcbiAgICAgICAgd2lkdGg6IDM2cHg7XG4gICAgICAgIGhlaWdodDogMzZweDtcbiAgICB9XG5cbiAgICAuc2VjdGlvbi1jb250ZW50IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIC5mb3JtLXBhZ2UtYWN0aW9ucy1pbm5lciB7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuXG4gICAgICAgIC5idG4ge1xuICAgICAgICAgICAgZmxleDogMTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUFJJTlQgU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSBwcmludCB7XG5cbiAgICAuZm9ybS1wYWdlLWFjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmZvcm0tcGFnZSB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgfVxuXG4gICAgLmZvcm0tcGFnZS1jb250YWluZXIge1xuICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBTb2xpZEludm9pY2UgLSBEb2N1bWVudCBWaWV3IFNoYXJlZCBTdHlsZXNcbiAqXG4gKiBTaGFyZWQgbGF5b3V0IGFuZCBjb21wb25lbnQgc3R5bGVzIGZvciBJbnZvaWNlIGFuZCBRdW90ZSB2aWV3IHBhZ2VzLlxuICogVXNlcyBnZW5lcmljIGBkb2Mtdmlldy0qYCAvIGBkb2MtKmAgY2xhc3MgbmFtZXMgdG8gYXZvaWQgZHVwbGljYXRpb24uXG4gKiBCb3RoIGludm9pY2Utdmlldy5zY3NzIGFuZCBxdW90ZS12aWV3LnNjc3MgdXNlIHRoZXNlIGNsYXNzZXMgZGlyZWN0bHkuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUEFHRSBMQVlPVVRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRvYy12aWV3LXBhZ2Uge1xuICAgIG1heC13aWR0aDogMTQwMHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUEFHRSBIRUFERVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRvYy12aWV3LWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIH1cbn1cblxuLmRvYy12aWV3LWhlYWRlci1sZWZ0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi5kb2Mtdmlldy1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDU2cHg7XG4gICAgaGVpZ2h0OiA1NnB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KSAwJSwgdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcikgMTAwJSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbn1cblxuLmRvYy12aWV3LXRpdGxlLWdyb3VwIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG59XG5cbi5kb2Mtdmlldy10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14bCwgMS4yNXJlbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkLCA2MDApO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuMztcbn1cblxuLmRvYy12aWV3LW1ldGEge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG59XG5cbi5kb2Mtdmlldy1tZXRhLWl0ZW0ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSwgMC44NzVyZW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG5cbiAgICBzdmcge1xuICAgICAgICBvcGFjaXR5OiAwLjc7XG4gICAgfVxufVxuXG4vLyBIZWFkZXIgQWN0aW9uc1xuXG4uZG9jLXZpZXctaGVhZGVyLWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNzY4cHgpIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgfVxufVxuXG4uZG9jLXZpZXctdXRpbGl0eS1hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG59XG5cbi8vIERyb3Bkb3duIHN0eWxpbmdcblxuLmRvYy12aWV3LWhlYWRlciAuZHJvcGRvd24tbWVudSB7XG4gICAgbWluLXdpZHRoOiAyMDBweDtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1sZyk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG5cbiAgICAuZHJvcGRvd24taXRlbSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSwgMC44NzVyZW0pO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICB9XG5cbiAgICAgICAgJi50ZXh0LWRhbmdlcjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0ZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDAuNztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kcm9wZG93bi1kaXZpZGVyIHtcbiAgICAgICAgbWFyZ2luOiB2YXIoLS1zd3Atc3BhY2UtMikgMDtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEhFUk8gQlVUVE9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5idG4taGVybyB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCwgNjAwKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UsIDFyZW0pO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctcHJpbWFyeSk7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1wcmltYXJ5LWxnKTtcbiAgICB9XG5cbiAgICAmOmFjdGl2ZSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICB9XG59XG5cbi5idG4taGVyby11cmdlbnQge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1kYW5nZXIpIDAlLCB2YXIoLS1zd3AtZGFuZ2VyLWhvdmVyKSAxMDAlKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctZGFuZ2VyKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtZGFuZ2VyLWhvdmVyKSAwJSwgdmFyKC0tc3dwLWRhbmdlcikgMTAwJSk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctZGFuZ2VyLWxnKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1BSU4gQ09OVEVOVCBMQVlPVVRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRvYy12aWV3LWNvbnRlbnQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMzQwcHg7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDEwMjRweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERPQ1VNRU5UIEFSRUEgKE1haW4pXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kb2Mtdmlldy1kb2N1bWVudCB7XG4gICAgbWluLXdpZHRoOiAwOyAvLyBQcmV2ZW50IG92ZXJmbG93XG59XG5cbi5kb2MtY2FyZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctc20pO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi8vIFBpbGwtc2hhcGVkIHN0YXR1cyBjaGlwcyB3aGVyZXZlciB0aGV5IGFwcGVhciBpbnNpZGUgdGhlIGRvY3VtZW50IHZpZXcgb3IgaXRzXG4vLyBzaWRlYmFyLCBtYXRjaGluZyB0aGUgZGVzaWduIHN5c3RlbSBzcGVjIChyYWRpdXMtZnVsbCwgd2VpZ2h0IDUwMCwgMnB4IHggMTBweCkuXG5cbi5kb2MtY2FyZCAuYmFkZ2UsXG4uZG9jLXBhZ2UtaGVhZGVyIC5iYWRnZSxcbi5kb2Mtdmlldy1oZWFkZXIgLmJhZGdlLFxuLmRvYy12aWV3LXNpZGViYXIgLmJhZGdlIHtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgIHBhZGRpbmc6IDJweCAxMHB4O1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0sIDUwMCk7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDA7XG5cbiAgICAvLyBUYWJsZXIgYmluZHMgYHRleHQtZ3JheS1mZ2AgdG8gYW1iZXIgdmlhIC0tYnMtc2Vjb25kYXJ5OyB0aGlzIG1ha2VzIGFcbiAgICAvLyBgQ2FuY2VsbGVkYCBjaGlwIHJlYWQgYXMgYSB3YXJuaW5nLiBQaW4gdGhlIG5ldXRyYWwgY2hpcCB0byBzbGF0ZSBzbyB0aGVcbiAgICAvLyBjb2xvdXIgbWF0Y2hlcyB3aGF0IHRoZSBjbGFzcyBuYW1lIGltcGxpZXMuXG5cbiAgICAmLmJnLWdyYXkudGV4dC1ncmF5LWZnIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLWdyYXktMTAwKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgfVxufVxuXG4vLyBEb2N1bWVudCBIZWFkZXIgKEZyb20vVG8pXG5cbi5kb2MtaGVhZGVyLWZyb20tdG8ge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTgpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCB2YXIoLS1zd3AtZ3JheS01MCkgMCUsIHZhcigtLXN3cC1zdXJmYWNlKSAxMDAlKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDY0MHB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICB9XG59XG5cbi5kb2MtcGFydHkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLmRvYy1wYXJ0eS1sYWJlbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cywgMC43NXJlbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkLCA2MDApO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xufVxuXG4uZG9jLXBhcnR5LW5hbWUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcsIDEuMTI1cmVtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQsIDYwMCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMCAwIHZhcigtLXN3cC1zcGFjZS0yKSAwO1xufVxuXG4uZG9jLXBhcnR5LWRldGFpbCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtLCAwLjg3NXJlbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcblxuICAgIHN2ZyB7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICBtYXJnaW4tdG9wOiAycHg7XG4gICAgICAgIG9wYWNpdHk6IDAuNjtcbiAgICB9XG5cbiAgICAuZGV0YWlsLWxhYmVsIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSwgNTAwKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcblxuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICBjb250ZW50OiBcIjpcIjtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRldGFpbC12YWx1ZSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIH1cblxuICAgIGEuZGV0YWlsLXZhbHVlIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBMaW5lIEl0ZW1zIFRhYmxlXG5cbi5kb2MtaXRlbXMge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNjQwcHgpIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cbn1cblxuLmRvYy1pdGVtcy10YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcblxuICAgIHRoZWFkIHtcblxuICAgICAgICB0aCB7XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cywgMC43NXJlbSk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQsIDYwMCk7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuXG4gICAgICAgICAgICAmLmNvbHVtbi1wcmljZSxcbiAgICAgICAgICAgICYuY29sdW1uLXF0eSxcbiAgICAgICAgICAgICYuY29sdW1uLXRheCxcbiAgICAgICAgICAgICYuY29sdW1uLXRvdGFsIHtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEhpZGUgdGFibGUgaGVhZGVyIG9uIG1vYmlsZVxuICAgICAgICBAbWVkaWEgKHdpZHRoIDw9IDY0MHB4KSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGJvZHkge1xuXG4gICAgICAgIHRyIHtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gU3RhY2sgcm93cyBhcyBjYXJkcyBvbiBtb2JpbGVcbiAgICAgICAgICAgIEBtZWRpYSAod2lkdGggPD0gNjQwcHgpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcblxuICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS0xMDApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGQge1xuICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSwgMC44NzVyZW0pO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuXG4gICAgICAgICAgICAmLmNvbHVtbi1kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0sIDUwMCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYuY29sdW1uLXByaWNlLFxuICAgICAgICAgICAgJi5jb2x1bW4tcXR5LFxuICAgICAgICAgICAgJi5jb2x1bW4tdGF4LFxuICAgICAgICAgICAgJi5jb2x1bW4tdG90YWwge1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi5jb2x1bW4tdG90YWwge1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCwgNjAwKTtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFN0YWNrIGNlbGxzIG9uIG1vYmlsZVxuICAgICAgICAgICAgQG1lZGlhICh3aWR0aCA8PSA2NDBweCkge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSAwO1xuICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcblxuICAgICAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS1sYWJlbCk7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMsIDAuNzVyZW0pO1xuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQsIDYwMCk7XG4gICAgICAgICAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAmLmNvbHVtbi1kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcblxuICAgICAgICAgICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJi5jb2x1bW4tdG90YWwge1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDb2x1bW4gd2lkdGhzIChkZXNrdG9wIG9ubHkpXG4gICAgQG1lZGlhICh3aWR0aCA+PSA2NDFweCkge1xuXG4gICAgICAgIC5jb2x1bW4tZGVzY3JpcHRpb24ge1xuICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIH1cblxuICAgICAgICAuY29sdW1uLXByaWNlIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMjBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb2x1bW4tcXR5IHtcbiAgICAgICAgICAgIHdpZHRoOiA4MHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbHVtbi10YXgge1xuICAgICAgICAgICAgd2lkdGg6IDEwMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbHVtbi10b3RhbCB7XG4gICAgICAgICAgICB3aWR0aDogMTIwcHg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFRvdGFscyBTZWN0aW9uXG5cbi5kb2MtdG90YWxzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIHBhZGRpbmctdG9wOiAwO1xufVxuXG4uZG9jLXRvdGFscy1ncmlkIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgbWluLXdpZHRoOiAyODBweDtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xufVxuXG4udG90YWxzLXJvdyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgMDtcblxuICAgIC50b3RhbHMtbGFiZWwge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtLCAwLjg3NXJlbSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIH1cblxuICAgIC50b3RhbHMtdmFsdWUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtLCAwLjg3NXJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0sIDUwMCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG4gICAgfVxufVxuXG4vLyBQYXltZW50cyByZWNlaXZlZCBhcmUgbW9uZXkgaW47IHN1Y2Nlc3MgZ3JlZW4gZWFybnMgaXRzIHBsYWNlIGhlcmUuXG5cbi50b3RhbHMtcm93LXBheW1lbnQgLnRvdGFscy12YWx1ZSB7XG4gICAgY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbn1cblxuLy8gQSBkaXNjb3VudCBpcyBhIGRlZHVjdGlvbiwgbm90IGEgc3VjY2VzcyBzdGF0ZS4gU3RheSBuZXV0cmFsOyBxdWlldCAkMCBjYXNlcy5cblxuLnRvdGFscy1yb3ctZGlzY291bnQgLnRvdGFscy12YWx1ZSB7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbn1cblxuLnRvdGFscy1yb3ctZmluYWwge1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWRhcmspO1xuXG4gICAgLnRvdGFscy1sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSwgMXJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCwgNjAwKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIH1cblxuICAgIC8vIEdyYW5kIHRvdGFsIGlzIGluZm9ybWF0aW9uYWw7IGdyZWVuIGlzIHJlc2VydmVkIGZvciBhY3R1YWxseS1wYWlkIHN0YXRlc1xuICAgIC8vIChoYW5kbGVkIGJ5IC5zdW1tYXJ5LWl0ZW0tcGFpZCAvIC50b3RhbHMtcm93LXBheW1lbnQpLlxuXG4gICAgLnRvdGFscy12YWx1ZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcsIDEuMTI1cmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LWJvbGQsIDcwMCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG4gICAgfVxufVxuXG4vLyBEb2N1bWVudCBGb290ZXIgKFRlcm1zICYgTm90ZXMpXG5cbi5kb2MtZm9vdGVyIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbn1cblxuLmRvYy1mb290ZXItc2VjdGlvbiB7XG5cbiAgICAmICsgJiB7XG4gICAgICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIH1cbn1cblxuLmRvYy1mb290ZXItdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20sIDAuODc1cmVtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQsIDYwMCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMCAwIHZhcigtLXN3cC1zcGFjZS0yKSAwO1xufVxuXG4uZG9jLWZvb3Rlci10ZXh0IHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtLCAwLjg3NXJlbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgbWFyZ2luOiAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjY7XG4gICAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTSURFQkFSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kb2Mtdmlldy1zaWRlYmFyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDEwMjRweCkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDI4MHB4LCAxZnIpKTtcbiAgICB9XG59XG5cbi5kb2Mtc2lkZWJhci1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1zbSk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmRvYy1zaWRlYmFyLWNhcmQtbXV0ZWQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbn1cblxuLmRvYy1zaWRlYmFyLWNhcmQtc3VjY2VzcyB7XG4gICAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCB2YXIoLS1zd3Atc3VjY2Vzcyk7XG59XG5cbi5kb2Mtc2lkZWJhci1jYXJkLWhpZ2hsaWdodCB7XG4gICAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCB2YXIoLS1zd3AtcHJpbWFyeSk7XG59XG5cbi5kb2Mtc2lkZWJhci1jYXJkLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG59XG5cbi5kb2Mtc2lkZWJhci1jYXJkLWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzJweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG59XG5cbi5kb2Mtc2lkZWJhci1jYXJkLXN1Y2Nlc3MgLmRvYy1zaWRlYmFyLWNhcmQtaWNvbiB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1Y2Nlc3MtbGlnaHRlcik7XG4gICAgY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbn1cblxuLmRvYy1zaWRlYmFyLWNhcmQtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20sIDAuODc1cmVtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQsIDYwMCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbn1cblxuLmRvYy1zaWRlYmFyLWNhcmQtYm9keSB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4vLyBTdW1tYXJ5IEdyaWRcblxuLmRvYy1zdW1tYXJ5LWdyaWQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLy8gU3VtbWFyeSBJdGVtc1xuXG4uc3VtbWFyeS1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuXG4gICAgLnN1bW1hcnktbGFiZWwge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtLCAwLjg3NXJlbSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgfVxuXG4gICAgLnN1bW1hcnktdmFsdWUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtLCAwLjg3NXJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0sIDUwMCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbiAgICB9XG5cbiAgICAvLyBBbW91bnQgZmllbGQ6IHRvdGFsIGludm9pY2UgdmFsdWUuIE5ldXRyYWwgYnkgZGVmYXVsdDsgdGhlIHN0YXR1cyByb3cgY2Fycmllc1xuICAgIC8vIHRoZSBcIlBhaWQgLyBPdmVyZHVlIC8gRHJhZnRcIiBtZWFuaW5nLiBHcmVlbiBoZXJlIHdvdWxkIGRvdWJsZS1lbmNvZGUuXG5cbiAgICAuc3VtbWFyeS12YWx1ZS1hbW91bnQge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UsIDFyZW0pO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCwgNzAwKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcbiAgICB9XG5cbiAgICAvLyBCYWxhbmNlIHN0aWxsIG93ZWQ6IGFtYmVyIGF0dGVudGlvbiBpcyBhcHByb3ByaWF0ZS5cblxuICAgIC5zdW1tYXJ5LXZhbHVlLWJhbGFuY2Uge1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCwgNzAwKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC13YXJuaW5nKTtcbiAgICB9XG59XG5cbi5zdW1tYXJ5LWl0ZW0tb3ZlcmR1ZSB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIG1hcmdpbjogY2FsYygtMSAqIHZhcigtLXN3cC1zcGFjZS0yKSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcblxuICAgIC5zdW1tYXJ5LXZhbHVlIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xuICAgIH1cbn1cblxuLnN1bW1hcnktaXRlbS1wYWlkIHtcblxuICAgIC5zdW1tYXJ5LXZhbHVlIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbiAgICB9XG59XG5cbi8vIENsaWVudCBJbmZvICh1c2VkIGluIHNpZGViYXIpXG5cbi5jbGllbnQtaW5mbyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4uY2xpZW50LW5hbWUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSwgMXJlbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkLCA2MDApO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxufVxuXG4uY2xpZW50LWNvbnRhY3RzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5jbGllbnQtY29udGFjdCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcbn1cblxuLmNvbnRhY3QtbmFtZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSwgMC44NzVyZW0pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0sIDUwMCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLmNvbnRhY3QtZW1haWwsXG4uY29udGFjdC1kZXRhaWwge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzLCAwLjc1cmVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgb3BhY2l0eTogMC42O1xuICAgIH1cbn1cblxuLy8gUGF5bWVudHMgTGlzdCAodXNlZCBpbiBpbnZvaWNlIHNpZGViYXIpXG5cbi5wYXltZW50cy1saXN0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5wYXltZW50LWNhcmQge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCB2YXIoLS1zd3AtZ3JheS0zMDApO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcbn1cblxuLnBheW1lbnQtY2FyZC1jYXB0dXJlZCB7XG4gICAgYm9yZGVyLWxlZnQtY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodGVyKTtcbn1cblxuLnBheW1lbnQtY2FyZC1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4ucGF5bWVudC1hbW91bnQge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSwgMXJlbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LWJvbGQsIDcwMCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xufVxuXG4ucGF5bWVudC1jYXJkLWJvZHkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLnBheW1lbnQtbWV0aG9kLFxuLnBheW1lbnQtZGF0ZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMsIDAuNzVyZW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG5cbiAgICBzdmcge1xuICAgICAgICBvcGFjaXR5OiAwLjY7XG4gICAgfVxufVxuXG4ucGF5bWVudC1tZXNzYWdlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzLCAwLjc1cmVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xufVxuXG4vLyBSZWxhdGVkIGRvY3VtZW50IGxpbmtzXG5cbi5yZWxhdGVkLXF1b3RlLWxpbmssXG4ucmVsYXRlZC1pbnZvaWNlLWxpbmsge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSwgMC44NzVyZW0pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0sIDUwMCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWRhcmspO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICB9XG59XG5cbi5yZWxhdGVkLWludm9pY2Utc3RhdHVzIHtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBSSU5UIFNUWUxFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgcHJpbnQge1xuXG4gICAgLmRvYy12aWV3LXBhZ2Uge1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG5cbiAgICAuZG9jLXZpZXctY29udGVudCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIC5kb2Mtdmlldy1kb2N1bWVudCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC5kb2MtY2FyZCB7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICB9XG5cbiAgICAuZG9jLWhlYWRlci1mcm9tLXRvIHtcbiAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgICAgcGFkZGluZzogMjBweCAwO1xuICAgIH1cblxuICAgIC5kb2MtaXRlbXMtdGFibGUge1xuXG4gICAgICAgIHRoZWFkIHRoIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgLXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0O1xuICAgICAgICAgICAgcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kb2MtdG90YWxzLWdyaWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCkgIWltcG9ydGFudDtcbiAgICAgICAgLXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0O1xuICAgICAgICBwcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0O1xuICAgIH1cblxuICAgIC5kb2MtZm9vdGVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApICFpbXBvcnRhbnQ7XG4gICAgICAgIC13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICAgICAgcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICB9XG5cbiAgICAubm8tcHJpbnQge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBFeHRlcm5hbCBEb2N1bWVudCBWaWV3IC0gU2hhcmVkIFN0eWxlc1xuICpcbiAqIFNoYXJlZCBzdHlsZXMgZm9yIHB1YmxpYy1mYWNpbmcgaW52b2ljZSBhbmQgcXVvdGUgdmlld3MuXG4gKiBJbnZvaWNlLXNwZWNpZmljOiBleHRlcm5hbC1pbnZvaWNlLXZpZXcuc2Nzc1xuICogUXVvdGUtc3BlY2lmaWM6IGV4dGVybmFsLXF1b3RlLXZpZXcuc2Nzc1xuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBBR0UgV1JBUFBFUiAoc2hhcmVkIGJhc2UpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5leHQtZG9jLXBhZ2Uge1xuICAgIG1pbi1oZWlnaHQ6IDEwMHZoO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZ3JheS01MCwgI2Y4ZmFmYyk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFQUCBCUkFORElORyBIRUFERVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmFwcC1icmFuZGluZy1oZWFkZXIge1xuICAgIHBhZGRpbmc6IDEuNXJlbSAwO1xuICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlci1jb2xvci1saWdodCwgI2UyZThmMCk7XG5cbiAgICAuYXBwLWxvZ28ge1xuXG4gICAgICAgIGltZyB7XG4gICAgICAgICAgICBtYXgtaGVpZ2h0OiA0MHB4O1xuICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5hcHAtYnJhbmQtbmFtZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5LCAjMmU5NjNhKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICB9XG5cbiAgICAuYXBwLWJyYW5kLXRhZ2xpbmUge1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1zZWNvbmRhcnksICM2NDc0OGIpO1xuICAgICAgICBvcGFjaXR5OiAwLjg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBQ1RJT04gQkFSIChUT1ApXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5leHQtZG9jLWFjdGlvbi1iYXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItYmctc3VyZmFjZSwgI2ZmZmZmZik7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItY29sb3ItbGlnaHQsICNlMmU4ZjApO1xuICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2IoMCAwIDAgLyA1JSk7XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogMC43NXJlbSAxLjVyZW07XG4gICAgfVxuXG4gICAgLmJ0biB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUWVBPR1JBUEhZICYgVklTVUFMIEhJRVJBUkNIWVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBDb21wYW55IG5hbWUgaW4gaGVhZGVyXG5cbi5leHQtZG9jLWNvbXBhbnktbmFtZSB7XG4gICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1ib2R5LWNvbG9yLCAjMWUyOTNiKTtcbiAgICBsaW5lLWhlaWdodDogMS4zO1xufVxuXG4vLyBEb2N1bWVudCBudW1iZXIgLSBsYXJnZSBhbmQgcHJvbWluZW50XG5cbi5leHQtZG9jLW51bWJlciB7XG4gICAgZm9udC1zaXplOiAycmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgY29sb3I6IHZhcigtLXRibHItYm9keS1jb2xvciwgIzFlMjkzYik7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcbn1cblxuLmV4dC1kb2MtbnVtYmVyLWxhYmVsIHtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgb3BhY2l0eTogMC42O1xufVxuXG4vLyBWQVQgbnVtYmVyIC0gc3VidGxlIG9wYWNpdHlcblxuLmV4dC1kb2MtdmF0LW51bWJlciB7XG4gICAgZm9udC1zaXplOiAwLjkzNzVyZW07XG4gICAgb3BhY2l0eTogMC43NTtcbn1cblxuLy8gTG9nbyBjb250YWluZXJcblxuLmV4dC1kb2MtbG9nbyB7XG5cbiAgICBpbWcge1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNRVRBREFUQSBDQVJEIC0gRGF0ZSwgRHVlIERhdGUsIFRvdGFsXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5leHQtZG9jLW1ldGFkYXRhLWNhcmQge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWNvbG9yLWxpZ2h0LCAjZTJlOGYwKTtcbiAgICBib3JkZXItcmFkaXVzOiAwLjVyZW07XG4gICAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYigwIDAgMCAvIDUlKTtcbiAgICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuMnMgZWFzZTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiKDAgMCAwIC8gOCUpO1xuICAgIH1cblxuICAgIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiAxLjVyZW07XG4gICAgfVxufVxuXG4uZXh0LWRvYy1tZXRhZGF0YS1sYWJlbCB7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgIG1hcmdpbi1ib3R0b206IDAuMzc1cmVtO1xuICAgIG9wYWNpdHk6IDAuNjtcbn1cblxuLmV4dC1kb2MtbWV0YWRhdGEtdmFsdWUge1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1ib2R5LWNvbG9yLCAjMWUyOTNiKTtcbn1cblxuLmV4dC1kb2MtbWV0YWRhdGEtdG90YWwge1xuICAgIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnksICMyZTk2M2EpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZST00gLyBUTyBTRUNUSU9OU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZXh0LWRvYy1wYXJ0aWVzLXNlY3Rpb24ge1xuICAgIG1hcmdpbi1ib3R0b206IDJyZW07XG59XG5cbi5leHQtZG9jLXBhcnR5LWxhYmVsIHtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgb3BhY2l0eTogMC42O1xufVxuXG4uZXh0LWRvYy1wYXJ0eS1uYW1lIHtcbiAgICBmb250LXNpemU6IDEuMTI1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6IHZhcigtLXRibHItYm9keS1jb2xvciwgIzFlMjkzYik7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcbn1cblxuLmV4dC1kb2MtcGFydHktZGV0YWlsIHtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1ib2R5LWNvbG9yLCAjMWUyOTNiKTtcbiAgICBsaW5lLWhlaWdodDogMS42O1xuICAgIG1hcmdpbi1ib3R0b206IDAuMzc1cmVtO1xuICAgIGZvbnQtc2l6ZTogMC45Mzc1cmVtO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMSU5FIElURU1TIFRBQkxFXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5leHQtZG9jLWl0ZW1zLXRhYmxlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAycmVtO1xuXG4gICAgdGhlYWQge1xuXG4gICAgICAgIHRoIHtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlci1jb2xvciwgI2NiZDVlMSk7XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjg3NXJlbSAwLjc1cmVtO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgICAgICBvcGFjaXR5OiAwLjY7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0Ym9keSB7XG5cbiAgICAgICAgdHIge1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWNvbG9yLWxpZ2h0LCAjZTJlOGYwKTtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZTtcblxuICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10YmxyLWdyYXktNTAsICNmOGZhZmMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGQge1xuICAgICAgICAgICAgcGFkZGluZzogMXJlbSAwLjc1cmVtO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXRibHItYm9keS1jb2xvciwgIzFlMjkzYik7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLml0ZW0tZGVzY3JpcHRpb24ge1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1ib2R5LWNvbG9yLCAjMWUyOTNiKTtcbiAgICB9XG5cbiAgICAuaXRlbS1hbW91bnQge1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBmb250LWZlYXR1cmUtc2V0dGluZ3M6ICd0bnVtJztcbiAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRPVEFMUyBDQVJEXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5leHQtZG9jLXRvdGFscy1jYXJkIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlci1jb2xvci1saWdodCwgI2UyZThmMCk7XG4gICAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xuICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2IoMCAwIDAgLyA1JSk7XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogMS41cmVtO1xuICAgIH1cbn1cblxuLmV4dC1kb2MtdG90YWxzLXJvdyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAwLjYyNXJlbSAwO1xuXG4gICAgJjpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC4zNzVyZW07XG4gICAgfVxufVxuXG4uZXh0LWRvYy10b3RhbHMtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogMC45Mzc1cmVtO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLWJvZHktY29sb3IsICMxZTI5M2IpO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbi5leHQtZG9jLXRvdGFscy12YWx1ZSB7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1ib2R5LWNvbG9yLCAjMWUyOTNiKTtcbiAgICBmb250LWZlYXR1cmUtc2V0dGluZ3M6ICd0bnVtJztcbiAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5leHQtZG9jLXRvdGFscy1maW5hbCB7XG4gICAgYm9yZGVyLXRvcDogMnB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWNvbG9yLWRhcmssICM5NGEzYjgpO1xuICAgIHBhZGRpbmctdG9wOiAxcmVtO1xuICAgIG1hcmdpbi10b3A6IDAuNzVyZW07XG5cbiAgICAuZXh0LWRvYy10b3RhbHMtcm93IHtcbiAgICAgICAgcGFkZGluZzogMC41cmVtIDAgMDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG5cbiAgICAuZXh0LWRvYy10b3RhbHMtbGFiZWwge1xuICAgICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgfVxuXG4gICAgLmV4dC1kb2MtdG90YWxzLXZhbHVlIHtcbiAgICAgICAgZm9udC1zaXplOiAycmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5LCAjMmU5NjNhKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGT09URVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmV4dC1kb2MtZm9vdGVyIHtcblxuICAgIC5jYXJkIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1iZy1zdXJmYWNlLCAjZmZmZmZmKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItY29sb3ItbGlnaHQsICNlMmU4ZjApO1xuICAgICAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiKDAgMCAwIC8gNSUpO1xuICAgIH1cblxuICAgIC5idG4tc20ge1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBwYWRkaW5nOiAwLjVyZW0gMXJlbTtcbiAgICB9XG5cbiAgICAuYXBwLWxvZ28gaW1nIHtcbiAgICAgICAgbWF4LWhlaWdodDogMjRweDtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ0FSRCBSRUZJTkVNRU5UU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBTdGF0dXMgYmFkZ2VzXG5cbi5iYWRnZSB7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wMjVlbTtcbn1cblxuLy8gSG9yaXpvbnRhbCBydWxlc1xuXG5ociB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10YmxyLWJvcmRlci1jb2xvci1saWdodCwgI2UyZThmMCk7XG4gICAgb3BhY2l0eTogMTtcbn1cblxuLy8gRm9jdXMgc3R5bGVzIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uXG5cbi5idG46Zm9jdXMtdmlzaWJsZSB7XG4gICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLXRibHItcHJpbWFyeSwgIzJlOTYzYSk7XG4gICAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbn1cblxuLmNhcmQtbGcge1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2IoMCAwIDAgLyA4JSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItY29sb3ItbGlnaHQsICNlMmU4ZjApO1xuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IDIuNXJlbTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJFU1BPTlNJVkUgREVTSUdOXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSAod2lkdGggPD0gOTkxcHgpIHtcblxuICAgIC5leHQtZG9jLW1ldGFkYXRhLWNhcmQgLmNhcmQtYm9keSxcbiAgICAuZXh0LWRvYy10b3RhbHMtY2FyZCAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogMS4yNXJlbTtcbiAgICB9XG5cbiAgICAuY2FyZC1sZyAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogMnJlbTtcbiAgICB9XG59XG5cbkBtZWRpYSAod2lkdGggPD0gNzY3cHgpIHtcblxuICAgIC5leHQtZG9jLW51bWJlciB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgICB9XG5cbiAgICAuZXh0LWRvYy1tZXRhZGF0YS10b3RhbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIH1cblxuICAgIC5leHQtZG9jLXRvdGFscy1maW5hbCAuZXh0LWRvYy10b3RhbHMtdmFsdWUge1xuICAgICAgICBmb250LXNpemU6IDEuNzVyZW07XG4gICAgfVxuXG4gICAgLmV4dC1kb2MtcGFydGllcy1zZWN0aW9uIHtcblxuICAgICAgICAuY29sLXNtLTY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWVkaWEgKHdpZHRoIDw9IDU3NnB4KSB7XG5cbiAgICAuY29udGFpbmVyLXhsIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxcmVtO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtO1xuICAgIH1cblxuICAgIC5jYXJkLWxnIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiAxLjVyZW07XG4gICAgfVxuXG4gICAgLmV4dC1kb2MtbWV0YWRhdGEtY2FyZCAuY2FyZC1ib2R5LFxuICAgIC5leHQtZG9jLXRvdGFscy1jYXJkIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgIH1cblxuICAgIC8vIEFwcCBicmFuZGluZyBoZWFkZXIgLSBzdGFjayBvbiBtb2JpbGVcblxuICAgIC5hcHAtYnJhbmRpbmctaGVhZGVyIHtcbiAgICAgICAgcGFkZGluZzogMXJlbSAwO1xuXG4gICAgICAgIC5kLWZsZXgge1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5hcHAtYnJhbmQtbmFtZSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuYXBwLWJyYW5kLXRhZ2xpbmUge1xuICAgICAgICAgICAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGb290ZXIgLSBzdGFjayBvbiBtb2JpbGVcblxuICAgIC5leHQtZG9jLWZvb3RlciB7XG5cbiAgICAgICAgLmJ0bi1zbSB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcblxuICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU3RhY2sgbWV0YWRhdGEgaXRlbXMgb24gbW9iaWxlXG5cbiAgICAuZXh0LWRvYy1tZXRhZGF0YS1jYXJkIHtcblxuICAgICAgICAuY29sLXNtLTQsXG4gICAgICAgIC5jb2wtc20tNiB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuXG4gICAgICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNYWtlIGFjdGlvbiBidXR0b25zIHN0YWNrIG5pY2VseSBvbiBtb2JpbGVcblxuICAgIC5leHQtZG9jLWFjdGlvbi1iYXIge1xuXG4gICAgICAgIC5kLWZsZXguanVzdGlmeS1jb250ZW50LWJldHdlZW4ge1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIGdhcDogMC43NXJlbTtcblxuICAgICAgICAgICAgLmQtZmxleC5nYXAtMiB7XG4gICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBnYXA6IDAuNXJlbTtcblxuICAgICAgICAgICAgICAgIC5idG4ge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuYnRuLXByaW1hcnksXG4gICAgICAgICAgICAuYnRuLWRhbmdlciB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUYWJsZSBhZGp1c3RtZW50c1xuXG4gICAgLmV4dC1kb2MtaXRlbXMtdGFibGUge1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuXG4gICAgICAgIHRoZWFkIHRoIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAuNzVyZW0gMC41cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgdGJvZHkgdGQge1xuICAgICAgICAgICAgcGFkZGluZzogMC44NzVyZW0gMC41cmVtO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQUklOVCBTVFlMRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhIHByaW50IHtcblxuICAgIC5uby1wcmludCxcbiAgICAuZC1wcmludC1ub25lIHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBAcGFnZSB7XG4gICAgICAgIG1hcmdpbjogMWNtO1xuICAgIH1cblxuICAgIGh0bWwsXG4gICAgYm9keSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmYgIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgICAgIG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmV4dC1kb2MtcGFnZSxcbiAgICAucGFnZS13cmFwcGVyLFxuICAgIC5wYWdlLWJvZHkge1xuICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gICAgICAgIG9wYWNpdHk6IDEgIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgICAgIG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmYgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuY29udGFpbmVyLXhsIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgICAgIHBhZGRpbmc6IDAuNWNtICFpbXBvcnRhbnQ7XG4gICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5yb3cge1xuICAgICAgICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuY2FyZCxcbiAgICAuZXh0LWRvYy1tZXRhZGF0YS1jYXJkLFxuICAgIC5leHQtZG9jLXRvdGFscy1jYXJkIHtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZGVlMmU2O1xuICAgICAgICBicmVhay1pbnNpZGU6IGF2b2lkO1xuICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gICAgICAgIHZpc2liaWxpdHk6IHZpc2libGUgIWltcG9ydGFudDtcbiAgICAgICAgYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgICB9XG5cbiAgICAuY2FyZC1sZyAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogMS41cmVtO1xuICAgIH1cblxuICAgIHRhYmxlIHtcbiAgICAgICAgYnJlYWstaW5zaWRlOiBhdXRvO1xuICAgIH1cblxuICAgIHRyIHtcbiAgICAgICAgYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgICAgICAgYnJlYWstYWZ0ZXI6IGF1dG87XG4gICAgfVxuXG4gICAgdGhlYWQge1xuICAgICAgICBkaXNwbGF5OiB0YWJsZS1oZWFkZXItZ3JvdXA7XG4gICAgfVxuXG4gICAgLmJnLWxpZ2h0LFxuICAgIC5leHQtZG9jLW1ldGFkYXRhLWNhcmQsXG4gICAgLmV4dC1kb2MtdG90YWxzLWNhcmQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhICFpbXBvcnRhbnQ7XG4gICAgICAgIC13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICAgICAgcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICB9XG5cbiAgICAuYmctZGFuZ2VyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2RjMzU0NSAhaW1wb3J0YW50O1xuICAgICAgICAtd2Via2l0LXByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7XG4gICAgICAgIHByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7XG4gICAgfVxuXG4gICAgLnRleHQtcHJpbWFyeSxcbiAgICAuZXh0LWRvYy1tZXRhZGF0YS10b3RhbCxcbiAgICAuZXh0LWRvYy10b3RhbHMtZmluYWwgLmV4dC1kb2MtdG90YWxzLXZhbHVlIHtcbiAgICAgICAgY29sb3I6ICMyZTk2M2EgIWltcG9ydGFudDtcbiAgICAgICAgLXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0O1xuICAgICAgICBwcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0O1xuICAgIH1cblxuICAgIC50ZXh0LWRhbmdlciB7XG4gICAgICAgIGNvbG9yOiAjZGMzNTQ1ICFpbXBvcnRhbnQ7XG4gICAgICAgIC13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICAgICAgcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICB9XG5cbiAgICAudGV4dC1zdWNjZXNzIHtcbiAgICAgICAgY29sb3I6ICMxMGI5ODEgIWltcG9ydGFudDtcbiAgICAgICAgLXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0O1xuICAgICAgICBwcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0O1xuICAgIH1cblxuICAgIC5leHQtZG9jLWl0ZW1zLXRhYmxlIHRib2R5IHRyOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuZXh0LWRvYy1tZXRhZGF0YS1jYXJkOmhvdmVyIHtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIGhyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjY2JkNWUxICFpbXBvcnRhbnQ7XG4gICAgICAgIG9wYWNpdHk6IDEgIWltcG9ydGFudDtcbiAgICB9XG59XG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSAtIFNoYXJlZCBNYXJrZXRwbGFjZSBTdHlsZXNcbiAqXG4gKiBDb21tb24gc3R5bGVzIHNoYXJlZCBiZXR3ZWVuIFBheW1lbnRCdW5kbGUgYW5kIE5vdGlmaWNhdGlvbkJ1bmRsZSBtYXJrZXRwbGFjZSBwYWdlcy5cbiAqIFBhZ2Utc3BlY2lmaWMgc3R5bGVzIHJlbWFpbiBpbiBwYXltZW50LW1hcmtldHBsYWNlLnNjc3MgYW5kIG5vdGlmaWNhdGlvbi1tYXJrZXRwbGFjZS5zY3NzLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1BUktFVFBMQUNFIFBBTkVMIC0gTGVmdCBTaWRlIFN0aWNreSBQYW5lbFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ubWFya2V0cGxhY2UtcGFuZWwge1xuICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIHZhcigtLXN3cC1zcGFjZS0xNikpO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcblxuICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgICAgd2lkdGg6IDZweDtcbiAgICB9XG5cbiAgICAmOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgfVxuXG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS0zMDApO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgICAgICB0cmFuc2l0aW9uOiB2YXIoLS1zd3AtdHJhbnNpdGlvbi1jb2xvcnMpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNDAwKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm1hcmtldHBsYWNlLWhlYWRlciB7XG5cbiAgICBoNSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xuICAgIH1cblxuICAgIHAge1xuICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgIH1cblxuICAgIC5pbnB1dC1ncm91cCB7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDJweCByZ2IoMCAwIDAgLyA1JSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgICAgIC5pbnB1dC1ncm91cC10ZXh0IHtcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogMDtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybS1jb250cm9sIHtcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAwO1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuXG4gICAgICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjEpO1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjY7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOmhhcyguZm9ybS1jb250cm9sOmZvY3VzKSB7XG5cbiAgICAgICAgICAgIC5pbnB1dC1ncm91cC10ZXh0IHtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gREVMRVRFIENPTkZJUk1BVElPTiBORVNURUQgTU9EQUxcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRlbGV0ZS1jb25maXJtYXRpb24tYmFja2Ryb3Age1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBpbnNldDogMDtcbiAgICBiYWNrZ3JvdW5kOiByZ2IoMCAwIDAgLyA2MCUpO1xuICAgIHotaW5kZXg6IDEwNjA7XG4gICAgYW5pbWF0aW9uOiBtYXJrZXRwbGFjZS1mYWRlLWluIDAuMTVzIGVhc2U7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDRweCk7XG59XG5cbi5kZWxldGUtY29uZmlybWF0aW9uLW1vZGFsIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgaW5zZXQ6IDA7XG4gICAgei1pbmRleDogMTA3MDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGFuaW1hdGlvbjogbWFya2V0cGxhY2UtZmFkZS1pbiAwLjE1cyBlYXNlO1xufVxuXG4uZGVsZXRlLWNvbmZpcm1hdGlvbi1jb250YWluZXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBib3gtc2hhZG93OiAwIDI1cHggNTBweCAtMTJweCByZ2IoMCAwIDAgLyAyNSUpO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1heC13aWR0aDogNDgwcHg7XG4gICAgYW5pbWF0aW9uOiBtYXJrZXRwbGFjZS1zY2FsZS1pbiAwLjJzIGN1YmljLWJlemllcigwLjE2LCAxLCAwLjMsIDEpO1xufVxuXG4uZGVsZXRlLWNvbmZpcm1hdGlvbi1oZWFkZXIge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG5cbiAgICBoNCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4xMjVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAuZGVsZXRlLWljb24td3JhcHBlciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB3aWR0aDogNDhweDtcbiAgICAgICAgaGVpZ2h0OiA0OHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodCk7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cbn1cblxuLmRlbGV0ZS1jb25maXJtYXRpb24tYm9keSB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjY7XG59XG5cbi5kZWxldGUtY29uZmlybWF0aW9uLWZvb3RlciB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNIQVJFRCBBTklNQVRJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBrZXlmcmFtZXMgbWFya2V0cGxhY2UtZmFkZS1pbiB7XG5cbiAgICBmcm9tIHsgb3BhY2l0eTogMDsgfVxuXG4gICAgdG8geyBvcGFjaXR5OiAxOyB9XG59XG5cbkBrZXlmcmFtZXMgbWFya2V0cGxhY2Utc2xpZGUtdXAge1xuXG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMHB4KSBzY2FsZSgwLjk4KTtcbiAgICB9XG5cbiAgICB0byB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgxKTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgbWFya2V0cGxhY2Utc2NhbGUtaW4ge1xuXG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45NSk7XG4gICAgfVxuXG4gICAgdG8ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVVRJTElUWVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYmFkZ2Utc20ge1xuICAgIGZvbnQtc2l6ZTogMC42MjVyZW07XG4gICAgcGFkZGluZzogMC4xMjVyZW0gMC41cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG59XG5cbi5tYXJrZXRwbGFjZS1zZWFyY2gtY2xlYXIge1xuICAgIHotaW5kZXg6IDEwO1xuICAgIHJpZ2h0OiA4cHggIWltcG9ydGFudDtcbn1cbiIsIi8qKlxuICogR2xvYmFsIFNlYXJjaCAtIFRvcCBuYXZpZ2F0aW9uIHNlYXJjaCBiYXIgd2l0aCBsaXZlIHJlc3VsdHMgZHJvcGRvd25cbiAqL1xuXG4uZ2xvYmFsLXNlYXJjaCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1heC13aWR0aDogNjAwcHg7XG5cbiAgICAmLWlucHV0LXdyYXBwZXIge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgJi1pY29uIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBsZWZ0OiAwLjc1cmVtO1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICBjb2xvcjogIzlhYTBhYztcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgIH1cblxuICAgICYtaW5wdXQge1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAvLyAwLjc1cmVtIGljb24tbGVmdCArIDFyZW0gaWNvbi13aWR0aCArIDAuNXJlbSBnYXAgPSAyLjI1cmVtXG4gICAgICAgIC8vIFJpZ2h0OiBoZWxwLWJ0biAyMHB4ICsgZ2FwIDZweCArIHNob3J0Y3V0IH42NXB4ICsgbWFyZ2luIDEwcHggPSB+MTAxcHgg4omIIDYuNXJlbVxuICAgICAgICBwYWRkaW5nOiAwIDYuNXJlbSAwIDIuNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAzOHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMzhweDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2QwZDNkODtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICBjb2xvcjogIzM1NDA1MjtcbiAgICAgICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0O1xuXG4gICAgICAgIC8vIFJlbW92ZSBicm93c2VyIGRlZmF1bHQgc2VhcmNoIGNhbmNlbCBidXR0b25cblxuICAgICAgICAmOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLFxuICAgICAgICAmOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgICAgICAgICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogIzJlOTYzYTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2IoNDYgMTUwIDU4IC8gMTIlKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gICAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgICAgICAgY29sb3I6ICM5YWEwYWM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLWFjdGlvbnMge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHJpZ2h0OiAwLjYyNXJlbTtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgfVxuXG4gICAgJi1zaG9ydGN1dCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGdhcDogM3B4O1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICAgICAgICBrYmQge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjFyZW0gMC4zNXJlbTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43cmVtO1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6IHZhcigtLXRibHItZm9udC1tb25vc3BhY2UpO1xuICAgICAgICAgICAgY29sb3I6ICM5YWEwYWM7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmN2ZiO1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2U2ZTdlOTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5zZWFyY2gtaGVscC10cmlnZ2VyIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNlMGUzZTg7XG4gICAgcGFkZGluZzogMDtcbiAgICB3aWR0aDogMjJweDtcbiAgICBoZWlnaHQ6IDIycHg7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgY29sb3I6ICNhZGI1YmQ7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgMC4xNXMgZWFzZSwgYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2U7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6ICM0OTUwNTc7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzlhYTBhYztcbiAgICB9XG59XG5cbi5zZWFyY2gtaGVscC1zZWN0aW9uLXRpdGxlIHtcbiAgICBmb250LXNpemU6IDAuN3JlbTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDdlbTtcbiAgICBjb2xvcjogIzlhYTBhYztcbiAgICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtO1xufVxuXG4uc2VhcmNoLWhlbHAtb3Age1xuICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS10YmxyLWZvbnQtbW9ub3NwYWNlKTtcbiAgICBiYWNrZ3JvdW5kOiAjZjVmN2ZiO1xuICAgIHBhZGRpbmc6IDAuMTVyZW0gMC41cmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBjb2xvcjogIzM1NDA1Mjtcbn1cblxuLnNlYXJjaC1oZWxwLWV4YW1wbGUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDNweDtcbiAgICBwYWRkaW5nOiA4cHggMTJweDtcbiAgICBiYWNrZ3JvdW5kOiAjZjhmYWZjO1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkICMyZTk2M2E7XG5cbiAgICBjb2RlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgICAgIGNvbG9yOiAjMWE1NmRiO1xuICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG4gICAgfVxuXG4gICAgc3BhbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NzVyZW07XG4gICAgICAgIGNvbG9yOiAjOWFhMGFjO1xuICAgIH1cbn1cblxuI3NlYXJjaEhlbHBNb2RhbCAubW9kYWwtYm9keSB7XG4gICAgLy8gVGhlIHNlYXJjaCBndWlkZSBsYXlzIG91dCBpdHMgb3duIGZ1bGwtYmxlZWQgc2VjdGlvbnMgKGJhbmRzLCBkaXZpZGVycyxcbiAgICAvLyBjb2x1bW5zKSwgc28gdGhlIG1vZGFsIGJvZHkgbXVzdCBub3QgYWRkIHBhZGRpbmcgb2YgaXRzIG93bi5cbiAgICBwYWRkaW5nOiAwO1xufVxuXG4uc2VhcmNoLWRyb3Bkb3duIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IGNhbGMoMTAwJSArIDZweCk7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgICBtaW4td2lkdGg6IDUyMHB4O1xuXG4gICAgLy8gRXh0ZW5kIHN5bW1ldHJpY2FsbHkgYmV5b25kIHRoZSBpbnB1dCBmb3IgYSB3aWRlciBwYW5lbFxuICAgIG1hcmdpbi1sZWZ0OiAtNjBweDtcbiAgICBtYXJnaW4tcmlnaHQ6IC02MHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2U2ZTdlOTtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgYm94LXNoYWRvdzogMCA4cHggNDBweCByZ2IoMCAwIDAgLyAxOCUpLCAwIDJweCA4cHggcmdiKDAgMCAwIC8gOCUpO1xuXG4gICAgLy8gVXNlIGlzb2xhdGlvbiB0byBhdm9pZCBzdGFja2luZyBjb250ZXh0IGlzc3VlcyBmcm9tIHRoZSBuYXZiYXJcbiAgICBpc29sYXRpb246IGlzb2xhdGU7XG4gICAgei1pbmRleDogOTk5OTtcblxuICAgICYuaXMtb3BlbiB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBhbmltYXRpb246IHNlYXJjaC1kcm9wZG93bi1pbiAwLjEycyBlYXNlLW91dDtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgc2VhcmNoLWRyb3Bkb3duLWluIHtcblxuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTRweCkgc2NhbGUoMC45OSk7XG4gICAgfVxuXG4gICAgdG8ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSk7XG4gICAgfVxufVxuXG4uc2VhcmNoLXNwaW5uZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBnYXA6IDAuNXJlbTtcbiAgICBwYWRkaW5nOiAxLjI1cmVtO1xuICAgIGNvbG9yOiAjOWFhMGFjO1xuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG5cbi5zZWFyY2gtcmVzdWx0cyB7XG4gICAgbWF4LWhlaWdodDogNDQwcHg7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuXG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgICB3aWR0aDogNHB4O1xuICAgIH1cblxuICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgfVxuXG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTBlM2U4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgfVxufVxuXG4uc2VhcmNoLWdyb3VwIHtcblxuICAgICYgKyAmIHtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNmMGYyZjU7XG4gICAgfVxuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDAuMjVyZW07XG4gICAgfVxuXG4gICAgJi1sYWJlbCB7XG4gICAgICAgIHBhZGRpbmc6IDAuNjI1cmVtIDAuODc1cmVtIDAuMjVyZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMC43cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wN2VtO1xuICAgICAgICBjb2xvcjogIzlhYTBhYztcbiAgICB9XG59XG5cbi5zZWFyY2gtcmVzdWx0LWl0ZW0ge1xuXG4gICAgJi5pcy1hY3RpdmUgLnNlYXJjaC1yZXN1bHQtbGluayB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY3ZmI7XG4gICAgfVxuXG4gICAgJjpob3ZlciAuc2VhcmNoLXJlc3VsdC1saW5rIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjdmYjtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIH1cbn1cblxuLnNlYXJjaC1yZXN1bHQtbGluayB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMC43NXJlbTtcbiAgICBwYWRkaW5nOiAwLjVyZW0gMC44NzVyZW07XG4gICAgY29sb3I6ICMzNTQwNTI7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4wOHMgZWFzZTtcbn1cblxuLnNlYXJjaC1yZXN1bHQtaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIHdpZHRoOiAzNHB4O1xuICAgIGhlaWdodDogMzRweDtcbiAgICBwYWRkaW5nOiA2cHg7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuXG4gICAgc3ZnIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxufVxuXG4uc2VhcmNoLXJlc3VsdC1ib2R5IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZmxleDogMTtcbiAgICBtaW4td2lkdGg6IDA7XG59XG5cbi5zZWFyY2gtcmVzdWx0LXRpdGxlIHtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgY29sb3I6ICMzNTQwNTI7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuXG4uc2VhcmNoLXJlc3VsdC1zdWJ0aXRsZSB7XG4gICAgZm9udC1zaXplOiAwLjc3NXJlbTtcbiAgICBjb2xvcjogIzlhYTBhYztcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgbWFyZ2luLXRvcDogMXB4O1xufVxuXG4uc2VhcmNoLXJlc3VsdC1hc2lkZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgICBnYXA6IDAuMnJlbTtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTtcbn1cblxuLnNlYXJjaC1yZXN1bHQtYmFkZ2Uge1xuICAgIGZvbnQtc2l6ZTogMC42NXJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIHBhZGRpbmc6IDAuMTVyZW0gMC40NXJlbTtcbn1cblxuLnNlYXJjaC1yZXN1bHQtbWV0YSB7XG4gICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogIzM1NDA1MjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4uc2VhcmNoLWVtcHR5IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAyLjVyZW0gMXJlbTtcbiAgICBjb2xvcjogIzlhYTBhYztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuXG4gICAgJi1pY29uIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC42MjVyZW07XG4gICAgICAgIG9wYWNpdHk6IDAuNDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICB9XG5cbiAgICAmLXRleHQge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgfVxufVxuXG4uc2VhcmNoLWVycm9yIHtcbiAgICBwYWRkaW5nOiAxLjI1cmVtO1xuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgY29sb3I6IHZhcigtLXRibHItZGFuZ2VyLCAjZDYzOTM5KTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbn1cblxuLnNlYXJjaC1jaGlwIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogNHB4O1xuICAgIHBhZGRpbmc6IDAuMTVyZW0gMC41cmVtO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlOGYwZmU7XG4gICAgY29sb3I6ICMxYTU2ZGI7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBmbGV4LXNocmluazogMDtcblxuICAgICYtcmVtb3ZlIHtcbiAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgICBvcGFjaXR5OiAwLjY7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5zZWFyY2gtY2hpcHMtYmFyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBnYXA6IDRweDtcbiAgICBwYWRkaW5nOiAwLjI1cmVtIDAuNXJlbTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2YwZjJmNTtcbiAgICBtaW4taGVpZ2h0OiAwO1xuXG4gICAgJjplbXB0eSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG4uc2VhcmNoLXN1Z2dlc3Rpb25zIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiBjYWxjKDEwMCUgKyA0cHgpO1xuICAgIGxlZnQ6IDA7XG4gICAgbWluLXdpZHRoOiAyMjBweDtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNlNmU3ZTk7XG4gICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE2cHggcmdiKDAgMCAwIC8gMTIlKTtcbiAgICB6LWluZGV4OiAxMDAwMDtcbiAgICBwYWRkaW5nOiAwLjI1cmVtIDA7XG4gICAgZGlzcGxheTogbm9uZTtcblxuICAgICYuaXMtb3BlbiB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgICYtaGVhZGVyIHtcbiAgICAgICAgcGFkZGluZzogMC4yNXJlbSAwLjc1cmVtIDAuMXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wN2VtO1xuICAgICAgICBjb2xvcjogIzlhYTBhYztcbiAgICB9XG5cbiAgICAmLWl0ZW0ge1xuICAgICAgICBwYWRkaW5nOiAwLjRyZW0gMC43NXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGNvbG9yOiAjMzU0MDUyO1xuXG4gICAgICAgICY6aG92ZXIsXG4gICAgICAgICYuaXMtYWN0aXZlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY3ZmI7XG4gICAgICAgIH1cblxuICAgICAgICBjb2RlIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgICAgIGNvbG9yOiAjNmM3NTdkO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDAuNXJlbTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qKlxuICogU29saWRJbnZvaWNlIERhdGFHcmlkIENvbXBvbmVudCBTdHlsZXNcbiAqXG4gKiBNb2Rlcm4sIGNsZWFuIGRhdGEgZ3JpZCBzdHlsaW5nIGZvbGxvd2luZyB0aGUgU29saWRJbnZvaWNlIGRlc2lnbiBzeXN0ZW0uXG4gKiBVc2VzIGRlc2lnbiB0b2tlbnMgZnJvbSBfdG9rZW5zLnNjc3MgZm9yIGNvbnNpc3RlbmN5LlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERBVEFHUklEIEJBU0Vcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRhdGFncmlkIHtcbiAgICAvLyBDb250YWluZXIgZm9yIHRoZSBlbnRpcmUgZGF0YWdyaWQgY29tcG9uZW50XG4gICAgLy8gTm90ZTogb3ZlcmZsb3cgaXMgTk9UIHNldCB0byBoaWRkZW4gdG8gYWxsb3cgZHJvcGRvd25zIHRvIGV4dGVuZCBiZXlvbmQgYm91bmRzXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgLy8gRmxhc2ggbWVzc2FnZXMgaW5zaWRlIHRoZSBkYXRhZ3JpZFxuXG4gICAgPiAuYWxlcnQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbn1cblxuLmRhdGFncmlkLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDA7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNFQVJDSCAmIEZJTFRFUiBCQVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRhdGFncmlkLXRvb2xiYXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICB9XG59XG5cbi5kYXRhZ3JpZC10b29sYmFyLXN0YXJ0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgZmxleDogMTtcbiAgICBtaW4td2lkdGg6IDA7XG59XG5cbi5kYXRhZ3JpZC10b29sYmFyLWVuZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4uZGF0YWdyaWQtc2VhcmNoIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZmxleDogMTtcbiAgICBtYXgtd2lkdGg6IDMyMHB4O1xuXG4gICAgLmRhdGFncmlkLXNlYXJjaC1pY29uIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBsZWZ0OiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB3aWR0aDogMThweDtcbiAgICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgIH1cblxuICAgIC5kYXRhZ3JpZC1zZWFyY2gtaW5wdXQge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTEwKTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICAgICAgYm94LXNoYWRvdyB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS0xMDApO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgICAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQUNUSVZFIEZJTFRFUlMgKENoaXBzIGluIHRvb2xiYXIpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZC1hY3RpdmUtZmlsdGVycyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbn1cblxuLmRhdGFncmlkLWFjdGl2ZS1maWx0ZXIge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTEpIHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktMTAwKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1kYW5nZXItbGlnaHRlcik7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWRhbmdlci1saWdodCk7XG5cbiAgICAgICAgLmRhdGFncmlkLWFjdGl2ZS1maWx0ZXItcmVtb3ZlIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kYXRhZ3JpZC1hY3RpdmUtZmlsdGVyLWtleSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuXG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICc6JztcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRhdGFncmlkLWFjdGl2ZS1maWx0ZXItdmFsdWUge1xuICAgICAgICBtYXgtd2lkdGg6IDE1MHB4O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB9XG5cbiAgICAuZGF0YWdyaWQtYWN0aXZlLWZpbHRlci1yZW1vdmUge1xuICAgICAgICB3aWR0aDogMTRweDtcbiAgICAgICAgaGVpZ2h0OiAxNHB4O1xuICAgICAgICBtYXJnaW4tbGVmdDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZJTFRFUiBQQU5FTCAoRHJvcGRvd24pXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZC1maWx0ZXItZHJvcGRvd24ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmRhdGFncmlkLWZpbHRlci1wYW5lbCB7XG4gICAgd2lkdGg6IDMyMHB4O1xuICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSAyMDBweCk7XG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctbGcpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAvLyBFbnN1cmUgbmVzdGVkIGRyb3Bkb3ducyAobGlrZSBzZWxlY3QyKSBhcHBlYXIgYWJvdmUgdGhlIHBhbmVsXG5cbiAgICAuZHJvcGRvd24tbWVudSxcbiAgICAuc2VsZWN0Mi1jb250YWluZXItLW9wZW4ge1xuICAgICAgICB6LWluZGV4OiAxMDYwICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtZmlsdGVyLXBhbmVsLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG59XG5cbi5kYXRhZ3JpZC1maWx0ZXItcGFuZWwtdGl0bGUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBtYXJnaW46IDA7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG5cbiAgICBzdmcge1xuICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIH1cbn1cblxuLmRhdGFncmlkLWZpbHRlci1wYW5lbC1ib2R5IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDM1MHB4KTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xufVxuXG4uZGF0YWdyaWQtZmlsdGVyLWZvcm0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLmRhdGFncmlkLWZpbHRlci1maWVsZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuXG4gICAgLy8gRW5zdXJlIGRyb3Bkb3ducyB3aXRoaW4gZmllbGRzIGhhdmUgcHJvcGVyIHotaW5kZXhcblxuICAgIC5mb3JtLXNlbGVjdCxcbiAgICBzZWxlY3Qge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgfVxuXG4gICAgLy8gRGF0ZSByYW5nZSBmaWVsZHNcblxuICAgIC5yb3cge1xuICAgICAgICAtLWJzLWd1dHRlci14OiAwLjVyZW07XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtZmlsdGVyLWxhYmVsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xufVxuXG4uZGF0YWdyaWQtZmlsdGVyLXdpZGdldCB7XG4gICAgLy8gQ29udGFpbmVyIGZvciBmb3JtIHdpZGdldHNcblxuICAgIC8vIERhdGUgcmFuZ2UgZmllbGRzIC0gZGlzcGxheSBpbmxpbmUgKHNpZGUgYnkgc2lkZSlcbiAgICAvLyBUaGUgRGF0ZVJhbmdlRm9ybVR5cGUgY3JlYXRlcyBhIGNvbnRhaW5lciBkaXYgd2l0aCBzdGFydC9lbmQgZGF0ZSBmaWVsZHNcblxuICAgID4gZGl2Omhhcyg+IGRpdiA+IGlucHV0W3R5cGU9XCJkYXRlXCJdKSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG5cbiAgICAgICAgPiBkaXYge1xuICAgICAgICAgICAgLy8gRWFjaCBkYXRlIGZpZWxkIGNvbnRhaW5lclxuXG4gICAgICAgICAgICAuZm9ybS1sYWJlbCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlucHV0W3R5cGU9XCJkYXRlXCJdIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEV4cGFuZGVkIGNob2ljZSAoY2hlY2tib3hlcy9yYWRpb3MpIC0gcmVuZGVyIGFzIHN0YW5kYXJkIGNoZWNrYm94ZXNcblxuICAgIC5mb3JtLWNoZWNrIHtcbiAgICAgICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcbiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE92ZXJyaWRlIGFueSBzd2l0Y2ggc3R5bGVzIC0gZm9yY2UgcmVndWxhciBjaGVja2JveCBhcHBlYXJhbmNlXG5cbiAgICAgICAgJi5mb3JtLXN3aXRjaCB7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtLWNoZWNrLWlucHV0IHtcbiAgICAgICAgICAgIHdpZHRoOiAxNnB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBoZWlnaHQ6IDE2cHggIWltcG9ydGFudDtcbiAgICAgICAgICAgIG1pbi13aWR0aDogMTZweDtcbiAgICAgICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzcHggIWltcG9ydGFudDtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItZGFyayk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICAgICAgICY6Y2hlY2tlZCB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gUmVtb3ZlIHN3aXRjaC9waWxsIGFwcGVhcmFuY2VcblxuICAgICAgICAgICAgJlt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDNweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG5cbiAgICAgICAgICAgICAgICAmOmNoZWNrZWQge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDIwIDIwJyUzZSUzY3BhdGggZmlsbD0nbm9uZScgc3Ryb2tlPSclMjNmZmYnIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCcgc3Ryb2tlLXdpZHRoPSczJyBkPSdNNiAxMGwzIDNsNi02Jy8lM2UlM2Mvc3ZnJTNlXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtLWNoZWNrLWxhYmVsIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50O1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbm9ybWFsKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNwYWNlIGJldHdlZW4gY2hlY2tib3hlc1xuXG4gICAgLmZvcm0tY2hlY2sgKyAuZm9ybS1jaGVjayB7XG4gICAgICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICB9XG59XG5cbi5kYXRhZ3JpZC1maWx0ZXItcGFuZWwtZm9vdGVyIHtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG59XG5cbi8vIEZvcm0gZWxlbWVudHMgd2l0aGluIGZpbHRlciBwYW5lbFxuXG4uZGF0YWdyaWQtZmlsdGVyLXBhbmVsIHtcbiAgICAvLyBTdGFuZGFyZCBmb3JtIGNvbnRyb2xzXG5cbiAgICAuZm9ybS1jb250cm9sLFxuICAgIC5mb3JtLXNlbGVjdCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtYm9yZGVyKTtcblxuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctcHJpbWFyeSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBIaWRlIG5lc3RlZCBsYWJlbHMgZnJvbSBEYXRlUmFuZ2VGb3JtVHlwZSAod2Ugc2hvdyBvdXIgb3duKVxuXG4gICAgLmRhdGFncmlkLWZpbHRlci1maWVsZCA+IC5mb3JtLWxhYmVsIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAvLyBEYXRlIHJhbmdlIHN1Yi1sYWJlbHNcblxuICAgIC5kYXRhZ3JpZC1maWx0ZXItZmllbGQgLnJvdyB7XG5cbiAgICAgICAgLmZvcm0tbGFiZWwge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ub3JtYWwpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICAgICAgfVxuXG4gICAgICAgID4gZGl2IHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuXG4gICAgICAgICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE11bHRpcGxlIGNob2ljZSBjaGVja2JveGVzXG5cbiAgICAuZm9ybS1jaGVjayB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMS01KSB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybS1jaGVjay1pbnB1dCB7XG4gICAgICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgICAgIGhlaWdodDogMTZweDtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm0tY2hlY2stbGFiZWwge1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBXaGVuIG11bHRpcGxlIGNoZWNrYm94ZXMgaW4gYSBsaXN0XG5cbiAgICAuZm9ybS1jaGVjayArIC5mb3JtLWNoZWNrIHtcbiAgICAgICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIH1cblxuICAgIC8vIFNlbGVjdCBkcm9wZG93biBhZGp1c3RtZW50c1xuXG4gICAgc2VsZWN0W211bHRpcGxlXSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDEyMHB4O1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG5cbiAgICAgICAgb3B0aW9uIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuXG4gICAgICAgICAgICAmOmNoZWNrZWQge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRVhQT1JUIE1FTlUgKERyb3Bkb3duKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZGF0YWdyaWQtZXhwb3J0LWRyb3Bkb3duIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5kYXRhZ3JpZC1leHBvcnQtbWVudSB7XG4gICAgd2lkdGg6IDI4MHB4O1xuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LWxnKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uZGF0YWdyaWQtZXhwb3J0LW1lbnUtaGVhZGVyIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG59XG5cbi5kYXRhZ3JpZC1leHBvcnQtbWVudS10aXRsZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIG1hcmdpbjogMDtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcblxuICAgIHN2ZyB7XG4gICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtZXhwb3J0LW1lbnUtc3VidGl0bGUge1xuICAgIG1hcmdpbjogdmFyKC0tc3dwLXNwYWNlLTEpIDAgMDtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xufVxuXG4uZGF0YWdyaWQtZXhwb3J0LW1lbnUtYm9keSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLmRhdGFncmlkLWV4cG9ydC1vcHRpb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICBjb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgIH1cbn1cblxuLmRhdGFncmlkLWV4cG9ydC1vcHRpb24taWNvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzZweDtcbiAgICBoZWlnaHQ6IDM2cHg7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuXG4gICAgLmRhdGFncmlkLWV4cG9ydC1vcHRpb246aG92ZXIgJixcbiAgICAuZGF0YWdyaWQtZXhwb3J0LW9wdGlvbjpmb2N1cy12aXNpYmxlICYge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtZXhwb3J0LW9wdGlvbi10ZXh0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgbWluLXdpZHRoOiAwO1xufVxuXG4uZGF0YWdyaWQtZXhwb3J0LW9wdGlvbi1sYWJlbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDJlbTtcbn1cblxuLmRhdGFncmlkLWV4cG9ydC1vcHRpb24taGludCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ09MVU1OIFZJU0lCSUxJVFlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRhdGFncmlkLWNvbHVtbi1waWNrZXIge1xuXG4gICAgLmRyb3Bkb3duLXRvZ2dsZSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDM2cHg7XG4gICAgICAgIGhlaWdodDogMzZweDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWJvcmRlci1kYXJrKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7IC8vIEhpZGUgZGVmYXVsdCBkcm9wZG93biBjYXJldFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRyb3Bkb3duLW1lbnUge1xuICAgICAgICBtaW4td2lkdGg6IDIwMHB4O1xuICAgICAgICBtYXgtaGVpZ2h0OiAzMjBweDtcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIH1cblxuICAgIC5kcm9wZG93bi1pdGVtIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgIH1cblxuICAgICAgICBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICAgICAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgICAgICBhY2NlbnQtY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVEFCTEUgU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZC10YWJsZS13cmFwcGVyIHtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xufVxuXG4uZGF0YWdyaWQtdGFibGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG5cbiAgICB0aCxcbiAgICB0ZCB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICB9XG5cbiAgICB0aCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgIH1cblxuICAgIHRib2R5IHtcbiAgICAgICAgLy8gVGFidWxhciBmaWd1cmVzIGFjcm9zcyB0aGUgdGFibGUgc28gYW1vdW50cywgSURzIGFuZCBkYXRlcyBhbGlnbiBjbGVhbmx5XG4gICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG4gICAgfVxuXG4gICAgdGJvZHkgdHIge1xuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UtaG92ZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5zZWxlY3RlZCB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ29sdW1uIHR5cGVzXG5cbiAgICAuY29sLWNoZWNrYm94IHtcbiAgICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cbiAgICB0aC5jb2wtY2hlY2tib3gge1xuICAgICAgICAvLyBLZWVwIGhlYWRlciBjaGVja2JveCBjZW50ZXJlZCB0byBtYXRjaCBjZWxsc1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmNvbC1pZCB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1zd3AtZm9udC1tb25vKTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgfVxuXG4gICAgLmNvbC1kYXRlIHtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB9XG5cbiAgICAvLyBNb25leSBjb2x1bW5zOiByaWdodC1hbGlnbiBib3RoIGhlYWRlciBhbmQgY2VsbCwgdGFidWxhciBmaWd1cmVzIG9uIHN5c3RlbSBmb250LlxuICAgIC8vIE1vbm8gaXMgcmVzZXJ2ZWQgZm9yIGlkZW50aWZpZXJzIHBlciB0aGUgZGVzaWduIHN5c3RlbTsgbW9uZXkgcmVhZHMgYXMgZGF0YSwgbm90IGNvZGUuXG5cbiAgICAuY29sLWFtb3VudCxcbiAgICAuY29sLW1vbmV5IHtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIH1cblxuICAgIHRoLmNvbC1hbW91bnQsXG4gICAgdGguY29sLW1vbmV5IHtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxuXG4gICAgLy8gVGhlIHNvcnRhYmxlIGxpbmsgaW5zaWRlIGEgcmlnaHQtYWxpZ25lZCBoZWFkZXIgbmVlZHMgaXRzIGNvbnRlbnQgcHVzaGVkIHJpZ2h0IHRvb1xuXG4gICAgdGguY29sLWFtb3VudCAuZGF0YWdyaWQtc29ydC1saW5rLFxuICAgIHRoLmNvbC1tb25leSAuZGF0YWdyaWQtc29ydC1saW5rIHtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICB9XG5cbiAgICAuY29sLXN0YXR1cyB7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgfVxuXG4gICAgLmNvbC1hY3Rpb25zIHtcbiAgICAgICAgd2lkdGg6IDElO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB9XG5cbiAgICAvLyBUYWJsZXIgYmFkZ2VzIGxpdmUgaW5zaWRlIHN0YXR1cyBjZWxscy4gVGhlIGRlc2lnbiBzeXN0ZW0gbWFuZGF0ZXMgcGlsbCBjaGlwcy5cblxuICAgIHRib2R5IC5iYWRnZSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgICAgIHBhZGRpbmc6IDJweCAxMHB4O1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDA7XG5cbiAgICAgICAgLy8gYHRleHQtZ3JheS1mZ2AgaXMgYW1iZXItYm91bmQ7IG5ldXRyYWxpc2UgdGhlIENhbmNlbGxlZCBjaGlwIGV4cGxpY2l0bHkuXG5cbiAgICAgICAgJi5iZy1ncmF5LnRleHQtZ3JheS1mZyB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtZ3JheS0xMDApO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFNvcnRhYmxlIGNvbHVtbiBoZWFkZXJzXG5cbi5kYXRhZ3JpZC1zb3J0LWxpbmsge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIH1cblxuICAgICYuc29ydGVkIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAuZGF0YWdyaWQtc29ydC1pY29uIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIHdpZHRoOiAxNHB4O1xuICAgICAgICBoZWlnaHQ6IDE0cHg7XG4gICAgICAgIG9wYWNpdHk6IDAuMzU7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAgICAgJi5pcy1hY3RpdmUge1xuICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICY6aG92ZXIgLmRhdGFncmlkLXNvcnQtaWNvbiB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBST1cgQUNUSU9OUyAoSWNvbiBCdXR0b25zKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZGF0YWdyaWQtcm93LWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xufVxuXG4uZGF0YWdyaWQtYWN0aW9uLWJ0biB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzJweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgcGFkZGluZzogMDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICBzdmcge1xuICAgICAgICB3aWR0aDogMThweDtcbiAgICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICB9XG5cbiAgICAmLmFjdGlvbi12aWV3OmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1pbmZvKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWluZm8tbGlnaHRlcik7XG4gICAgfVxuXG4gICAgJi5hY3Rpb24tZWRpdDpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgIH1cblxuICAgICYuYWN0aW9uLWRlbGV0ZTpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodGVyKTtcbiAgICB9XG59XG5cbi8vIFRocmVlLWRvdCBtZW51IGJ1dHRvblxuXG4uZGF0YWdyaWQtbW9yZS1idG4ge1xuICAgIG9wYWNpdHk6IDAuNjtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmhvdmVyLFxuICAgICZbYXJpYS1leHBhbmRlZD1cInRydWVcIl0ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgfVxufVxuXG4vLyBUaHJlZS1kb3QgZHJvcGRvd24gbWVudSBjb250YWluZXJcblxuLmRhdGFncmlkLW1vcmUtbWVudSB7XG5cbiAgICAuZHJvcGRvd24tbWVudSB7XG4gICAgICAgIG1pbi13aWR0aDogMTYwcHg7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctbWQpO1xuICAgIH1cblxuICAgIC5kcm9wZG93bi1pdGVtIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICB9XG5cbiAgICAgICAgJi50ZXh0LWRhbmdlciB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWRhbmdlcik7XG5cbiAgICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRyb3Bkb3duLWRpdmlkZXIge1xuICAgICAgICBtYXJnaW46IHZhcigtLXN3cC1zcGFjZS0xKSAwO1xuICAgIH1cbn1cblxuLy8gU2hvdyBtb3JlIGJ1dHRvbiBvbiByb3cgaG92ZXIgb25seSAoc3VidGxlIFVYKVxuXG50Ym9keSB0cjpub3QoOmhvdmVyKSAuZGF0YWdyaWQtbW9yZS1idG4ge1xuICAgIG9wYWNpdHk6IDA7XG59XG5cbnRib2R5IHRyOmhvdmVyIC5kYXRhZ3JpZC1tb3JlLWJ0bixcbi5kYXRhZ3JpZC1tb3JlLW1lbnUuc2hvdyAuZGF0YWdyaWQtbW9yZS1idG4ge1xuICAgIG9wYWNpdHk6IDAuNjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ0hFQ0tCT1ggU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZC1jaGVja2JveCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gICAgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdIHtcbiAgICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICAgIGhlaWdodDogMThweDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBhY2NlbnQtY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRU1QVFkgU1RBVEVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRhdGFncmlkLWVtcHR5IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMTYpIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5kYXRhZ3JpZC1lbXB0eS1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDgwcHg7XG4gICAgaGVpZ2h0OiA4MHB4O1xuICAgIG1hcmdpbjogMCBhdXRvIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLWdyYXktMzAwKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcblxuICAgIHN2ZyB7XG4gICAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtZW1wdHktdGl0bGUge1xuICAgIG1hcmdpbjogMCAwIHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbn1cblxuLmRhdGFncmlkLWVtcHR5LW1lc3NhZ2Uge1xuICAgIG1hcmdpbjogMCAwIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIG1heC13aWR0aDogNDAwcHg7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xufVxuXG4uZGF0YWdyaWQtZW1wdHktYWN0aW9uIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGTE9BVElORyBCVUxLIEFDVElPTiBCQVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRhdGFncmlkLWJ1bGstYmFyIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgYm90dG9tOiAyNHB4O1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgxMDBweCk7XG4gICAgei1pbmRleDogOTk5OTsgLy8gVmVyeSBoaWdoIHRvIGVuc3VyZSB2aXNpYmlsaXR5IGFib3ZlIGV2ZXJ5dGhpbmdcbiAgICBvcGFjaXR5OiAwO1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMzAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSksXG4gICAgICAgICAgICAgICAgb3BhY2l0eSAzMDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSxcbiAgICAgICAgICAgICAgICB2aXNpYmlsaXR5IDBzIDMwMG1zO1xuXG4gICAgJi52aXNpYmxlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoMCk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMzAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSksXG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHkgMzAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSksXG4gICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHkgMHM7XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtYnVsay1iYXItaW5uZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktOTAwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXhsKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXhsKTtcbn1cblxuLmRhdGFncmlkLWJ1bGstY291bnQge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LWludmVyc2UpO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICAuY291bnQge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogMjRweDtcbiAgICAgICAgaGVpZ2h0OiAyNHB4O1xuICAgICAgICBwYWRkaW5nOiAwIHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWdyYXktOTAwKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktMTAwKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICB9XG59XG5cbi5kYXRhZ3JpZC1idWxrLWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLmRhdGFncmlkLWJ1bGstYnRuIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LWludmVyc2UpO1xuICAgIGJhY2tncm91bmQ6IHJnYigyNTUgMjU1IDI1NSAvIDEwJSk7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgIGhlaWdodDogMTZweDtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiKDI1NSAyNTUgMjU1IC8gMjAlKTtcbiAgICB9XG5cbiAgICAmLmJ0bi1kYW5nZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWRhbmdlci1saWdodCk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2IoMjM5IDY4IDY4IC8gMjAlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmRhdGFncmlkLWJ1bGstZGl2aWRlciB7XG4gICAgd2lkdGg6IDFweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gICAgYmFja2dyb3VuZDogcmdiKDI1NSAyNTUgMjU1IC8gMjAlKTtcbn1cblxuLmRhdGFncmlkLWJ1bGstY2xvc2Uge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDMycHg7XG4gICAgaGVpZ2h0OiAzMnB4O1xuICAgIHBhZGRpbmc6IDA7XG4gICAgY29sb3I6IHZhcigtLXN3cC1ncmF5LTQwMCk7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICAgIGhlaWdodDogMThweDtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LWludmVyc2UpO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2IoMjU1IDI1NSAyNTUgLyAxMCUpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUEFHSU5BVElPTiBGT09URVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRhdGFncmlkLWZvb3RlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIH1cbn1cblxuLmRhdGFncmlkLWZvb3Rlci1pbmZvIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xufVxuXG4uZGF0YWdyaWQtcGVyLXBhZ2Uge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuXG4gICAgc2VsZWN0IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTEtNSkgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5kYXRhZ3JpZC1wYWdpbmF0aW9uIHtcblxuICAgIC5wYWdpbmF0aW9uIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICB9XG5cbiAgICAucGFnZS1pdGVtIHtcblxuICAgICAgICAucGFnZS1saW5rIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgbWluLXdpZHRoOiAzMnB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgICAgICAgICAgcGFkZGluZzogMCB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLmFjdGl2ZSAucGFnZS1saW5rIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgICAgIH1cblxuICAgICAgICAmLmRpc2FibGVkIC5wYWdlLWxpbmsge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LWxpZ2h0KTtcbiAgICAgICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU1RBVFVTIEJBREdFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZGF0YWdyaWQtc3RhdHVzIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0wLTUpIHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjAyNWVtO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuXG4gICAgJi5zdGF0dXMtc3VjY2VzcyB7XG4gICAgICAgIGNvbG9yOiAjMDY1ZjQ2O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodGVyKTtcbiAgICB9XG5cbiAgICAmLnN0YXR1cy1kYW5nZXIge1xuICAgICAgICBjb2xvcjogIzk5MWIxYjtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodGVyKTtcbiAgICB9XG5cbiAgICAmLnN0YXR1cy13YXJuaW5nIHtcbiAgICAgICAgY29sb3I6ICM5MjQwMGU7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC13YXJuaW5nLWxpZ2h0ZXIpO1xuICAgIH1cblxuICAgICYuc3RhdHVzLWluZm8ge1xuICAgICAgICBjb2xvcjogIzFlNDBhZjtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWluZm8tbGlnaHRlcik7XG4gICAgfVxuXG4gICAgJi5zdGF0dXMtcHJpbWFyeSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgfVxuXG4gICAgJi5zdGF0dXMtc2Vjb25kYXJ5IHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1ncmF5LTcwMCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRUxBVElWRSBEQVRFXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZC1yZWxhdGl2ZS1kYXRlIHtcbiAgICBjdXJzb3I6IGhlbHA7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkIHZhcigtLXN3cC1ib3JkZXItZGFyayk7XG4gICAgdGV4dC11bmRlcmxpbmUtb2Zmc2V0OiAzcHg7XG4gICAgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogMXB4O1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMT0FESU5HIFNUQVRFXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZC1sb2FkaW5nIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAmOjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2IoMjU1IDI1NSAyNTUgLyA3MCUpO1xuICAgICAgICB6LWluZGV4OiAxMDtcbiAgICB9XG59XG5cbi5kYXRhZ3JpZC1sb2FkaW5nLWluZGljYXRvciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICB6LWluZGV4OiAxMTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUkVTUE9OU0lWRSBBREpVU1RNRU5UU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG5cbiAgICAuZGF0YWdyaWQtaGVhZGVyIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgfVxuXG4gICAgLmRhdGFncmlkLXNlYXJjaCB7XG4gICAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICB9XG5cbiAgICAuZGF0YWdyaWQtdGFibGUge1xuXG4gICAgICAgIHRoLFxuICAgICAgICB0ZCB7XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRhdGFncmlkLWJ1bGstYmFyLWlubmVyIHtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG5cbiAgICAuZGF0YWdyaWQtYnVsay1kaXZpZGVyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVYUEFOREFCTEUgUk9XU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZGF0YWdyaWQtdGFibGUge1xuICAgIC8vIEV4cGFuZCBjb2x1bW4gc3R5bGluZ1xuXG4gICAgLmNvbC1leHBhbmQge1xuICAgICAgICB3aWR0aDogNDBweDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtZXhwYW5kLWJ0biB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMjhweDtcbiAgICBoZWlnaHQ6IDI4cHg7XG4gICAgcGFkZGluZzogMDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDIwMG1zIGVhc2U7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktMTAwKTtcbiAgICB9XG59XG5cbi8vIERldGFpbCByb3cgKGhpZGRlbiBieSBkZWZhdWx0KVxuXG4uZGF0YWdyaWQtZGV0YWlsLXJvdyB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG5cbiAgICAmLnZpc2libGUge1xuICAgICAgICBkaXNwbGF5OiB0YWJsZS1yb3c7XG4gICAgfVxuXG4gICAgdGQge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgIH1cbn1cblxuLmRhdGFncmlkLWRldGFpbC1jb250ZW50IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGFuaW1hdGlvbjogZGF0YWdyaWQtc2xpZGUtZG93biAyMDBtcyBlYXNlO1xuXG4gICAgLy8gT3ZlcnJpZGUgbmVzdGVkIGRhdGFncmlkIGNhcmQgc3R5bGVzIHdoZW4gaW5zaWRlIGRldGFpbCByb3dcblxuICAgIC5jYXJkIHtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIGRhdGFncmlkLXNsaWRlLWRvd24ge1xuXG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTBweCk7XG4gICAgfVxuXG4gICAgdG8ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBUEkgVE9LRU4gSElTVE9SWSAoRXhwYW5kYWJsZSBSb3cgRGV0YWlsKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYXBpLXRva2VuLWhpc3Rvcnkge1xuXG4gICAgaDQge1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgLnRhYmxlIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXdoaXRlKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgICAgIHRoZWFkIHRoIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjVweDtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGJvZHkge1xuXG4gICAgICAgICAgICB0ciB7XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3Atc3VyZmFjZS1ob3Zlcik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGQge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0cjpsYXN0LWNoaWxkIHRkIHtcbiAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmJhZGdlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjI1cmVtIDAuNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXdlaWdodC1tZWRpdW0pO1xuICAgIH1cbn1cbiIsIi8qKlxuICogU29saWRJbnZvaWNlIC0gQ2xpZW50IEZvcm0gU3R5bGVzXG4gKlxuICogQ2xpZW50LXNwZWNpZmljIHN0eWxlcyBmb3IgdGhlIGNsaWVudCBjcmVhdGlvbi9lZGl0IGZvcm0uXG4gKiBPdXRlciBmb3JtLXBhZ2UgbGF5b3V0IHVzZXMgc2hhcmVkIGNsYXNzZXMgZnJvbSBfZm9ybS1wYWdlLnNjc3MuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gT1BUSU9OQUwgU0VDVElPTiBWQVJJQU5UXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jbGllbnQtZm9ybS1zZWN0aW9uLW9wdGlvbmFsIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLXN0eWxlOiBkYXNoZWQ7XG5cbiAgICAuc2VjdGlvbi1oZWFkZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJFUVVJUkVEIC8gT1BUSU9OQUwgU0VDVElPTiBJQ09OIE1PRElGSUVSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5zZWN0aW9uLWljb24tcmVxdWlyZWQge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KSAwJSwgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjIpIDEwMCUpO1xufVxuXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENPTlRBQ1QgQ0FSRFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY29udGFjdHMtbGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4uY29udGFjdC1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGJveC1zaGFkb3cgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjQpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjA4KTtcbiAgICB9XG59XG5cbi5jb250YWN0LWNhcmQtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xufVxuXG4uY29udGFjdC1hdmF0YXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzJweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbn1cblxuLmNvbnRhY3QtY2FyZC10aXRsZSB7XG4gICAgZmxleDogMTtcbn1cblxuLmNvbnRhY3QtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xufVxuXG4uY29udGFjdC1jYXJkLWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi5jb250YWN0LWNhcmQtYm9keSB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4uY29udGFjdC1mb3JtLWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNTc2cHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgfVxufVxuXG4uY29udGFjdC1maWVsZC1lbWFpbCB7XG4gICAgZ3JpZC1jb2x1bW46IDEgLyAtMTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQURESVRJT05BTCBDT05UQUNUIERFVEFJTFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmFkZGl0aW9uYWwtZGV0YWlscy1zZWN0aW9uIHtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBib3JkZXItdG9wOiAxcHggZGFzaGVkIHZhcigtLXN3cC1ib3JkZXIpO1xufVxuXG4uYWRkaXRpb25hbC1kZXRhaWxzLWhlYWRlciB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4uYWRkaXRpb25hbC1kZXRhaWxzLWxhYmVsIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xufVxuXG4uYWRkaXRpb25hbC1kZXRhaWxzLWxpc3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLmFkZGl0aW9uYWwtZGV0YWlsLXJvdyB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDE0MHB4IDFmciBhdXRvO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGFsaWduLWl0ZW1zOiBzdGFydDtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNTc2cHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuXG4gICAgICAgIC5hZGRpdGlvbmFsLWRldGFpbC1hY3Rpb24ge1xuICAgICAgICAgICAganVzdGlmeS1zZWxmOiBlbmQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5hZGRpdGlvbmFsLWRldGFpbC1hY3Rpb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xufVxuXG4uYWRkaXRpb25hbC1kZXRhaWxzLWFkZCB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4uYWRkLWRldGFpbC1idG4ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFERFJFU1MgQ0FSRFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYWRkcmVzc2VzLWxpc3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLmFkZHJlc3MtY2FyZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGJveC1zaGFkb3cgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjQpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjA4KTtcbiAgICB9XG59XG5cbi5hZGRyZXNzLWNhcmQtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xufVxuXG4uYWRkcmVzcy1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDMycHg7XG4gICAgaGVpZ2h0OiAzMnB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1pbmZvLWxpZ2h0KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtaW5mbyk7XG59XG5cbi5hZGRyZXNzLWNhcmQtdGl0bGUge1xuICAgIGZsZXg6IDE7XG59XG5cbi5hZGRyZXNzLWxhYmVsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbn1cblxuLmFkZHJlc3MtY2FyZC1hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4uYWRkcmVzcy1jYXJkLWJvZHkge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLmFkZHJlc3MtZm9ybS1ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDU3NnB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQUREIElURU0gQUNUSU9OIEJVVFRPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYWRkLWl0ZW0tYWN0aW9uIHtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBib3JkZXItdG9wOiAxcHggZGFzaGVkIHZhcigtLXN3cC1ib3JkZXIpO1xufVxuXG4uYWRkLWl0ZW0tYnRuIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yLTUpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBib3JkZXItc3R5bGU6IGRhc2hlZDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgfVxuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogJysnO1xuICAgICAgICBmb250LXNpemU6IDEuMjVlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFOSU1BVElPTiBGT1IgTkVXIElURU1TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBrZXlmcmFtZXMgY2xpZW50LXNsaWRlLWluIHtcblxuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpO1xuICAgIH1cblxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIH1cbn1cblxuLmNvbnRhY3QtY2FyZCxcbi5hZGRyZXNzLWNhcmQge1xuICAgIGFuaW1hdGlvbjogY2xpZW50LXNsaWRlLWluIDAuMnMgZWFzZS1vdXQ7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVNUFRZIFNUQVRFIFNUWUxJTkdcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNvbnRhY3RzLWxpc3Q6ZW1wdHk6OmJlZm9yZSxcbi5hZGRyZXNzZXMtbGlzdDplbXB0eTo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4uZW1wdHktY29udGFjdHMtaGludCxcbi5lbXB0eS1hZGRyZXNzZXMtaGludCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAycHggZGFzaGVkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuXG4gICAgcCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIH1cbn1cbiIsIi8qKlxuICogU29saWRJbnZvaWNlIC0gQmlsbGluZyBGb3JtIFN0eWxlc1xuICpcbiAqIE1vZGVybiwgY2xlYW4gaW52b2ljZSBjcmVhdGlvbiBmb3JtIHdpdGggMi1jb2x1bW4gbGF5b3V0LFxuICogc3RpY2t5IHRvdGFscyBzaWRlYmFyLCBhbmQgY29sbGFwc2libGUgc2VjdGlvbnMuXG4gKiBVc2VzIGRlc2lnbiBzeXN0ZW0gdG9rZW5zIGZvciBjb25zaXN0ZW50IHN0eWxpbmcuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQklMTElORyBGT1JNIFBBR0UgQ09OVEFJTkVSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5iaWxsaW5nLWZvcm0tcGFnZSB7XG4gICAgbWluLWhlaWdodDogMTAwJTtcbn1cblxuLmJpbGxpbmctZm9ybS1jb250YWluZXIge1xuICAgIG1heC13aWR0aDogMTEwMHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMjQpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQQUdFIEhFQURFUlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYmlsbGluZy1mb3JtLWhlYWRlciB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KSAwO1xufVxuXG4uYmlsbGluZy1mb3JtLWhlYWRlci1jb250ZW50IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi5iaWxsaW5nLWZvcm0taWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiA1NnB4O1xuICAgIGhlaWdodDogNTZweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCkgMCUsIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4xNSkgMTAwJSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbn1cblxuLmJpbGxpbmctZm9ybS10aXRsZSB7XG4gICAgZm9udC1zaXplOiAxLjc1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbWFyZ2luOiAwO1xuICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMjVlbTtcbn1cblxuLmJpbGxpbmctZm9ybS1zdWJ0aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIG1hcmdpbjogdmFyKC0tc3dwLXNwYWNlLTEpIDAgMCAwO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBCSUxMSU5HIERFVEFJTFMgU0VDVElPTiAoQ2xpZW50LCBJbnZvaWNlIElELCBEYXRlcywgRGlzY291bnQpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5iaWxsaW5nLWRldGFpbHMtc2VjdGlvbiB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKTtcblxuICAgICY6Zm9jdXMtd2l0aGluIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMyk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMDgpO1xuICAgIH1cbn1cblxuLmJpbGxpbmctZGV0YWlscy1ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNzY4cHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgfVxuXG4gICAgLy8gTW9kaWZpZXIgZm9yIGZvcm1zIHdpdGhvdXQgZGF0ZSBmaWVsZHMgKGUuZy4sIFF1b3RlcylcblxuICAgICYtLW5vLWRhdGVzIHtcblxuICAgICAgICAuYmlsbGluZy1kZXRhaWxzLXJpZ2h0IHtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5iaWxsaW5nLWRldGFpbHMtbGVmdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4uYmlsbGluZy1kZXRhaWxzLXJpZ2h0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi8vIEludm9pY2UgSUQgd2l0aCBpbmxpbmUgZWRpdFxuXG4uYmlsbGluZy1pZC1kaXNwbGF5IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTIpO1xuXG4gICAgLmJpbGxpbmctaWQtbGFiZWwge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LTJ4bCk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAuYmlsbGluZy1pZC12YWx1ZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtMnhsKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LWJvbGQpO1xuXG4gICAgICAgIC8vIElkZW50aWZpZXJzIGFyZSBub3QgbW9uZXkuIFByaW1hcnkgZ3JlZW4gaXMgcmVzZXJ2ZWQgZm9yIHBhaWQgc3RhdGVzIGFuZCBDVEFzLlxuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1zd3AtZm9udC1tb25vKTtcbiAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG4gICAgfVxuXG4gICAgLmJpbGxpbmctaWQtZWRpdCB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDI4cHg7XG4gICAgICAgIGhlaWdodDogMjhweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmJpbGxpbmctaWQtZm9ybSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuXG4gICAgLmZvcm0tY29udHJvbCB7XG4gICAgICAgIG1heC13aWR0aDogMjAwcHg7XG4gICAgfVxuXG4gICAgLmJ0biB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICB9XG59XG5cbi8vIERhdGUgZmllbGRzIHJvd1xuXG4uaW52b2ljZS1kYXRlcy1yb3cge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA1NzZweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENMSUVOVCBTRUxFQ1RJT05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNsaWVudC1zZWxlY3Rpb24ge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLnNlbGVjdGVkLWNsaWVudC1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGFuaW1hdGlvbjogYmlsbGluZy1zbGlkZS1pbiAwLjJzIGVhc2Utb3V0O1xufVxuXG4uc2VsZWN0ZWQtY2xpZW50LWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5zZWxlY3RlZC1jbGllbnQtbmFtZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1sZyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4uc2VsZWN0ZWQtY2xpZW50LWNoYW5nZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxufVxuXG4uc2VsZWN0ZWQtY2xpZW50LWNvbnRhY3RzIHtcbiAgICBib3JkZXItdG9wOiAxcHggZGFzaGVkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4uY29udGFjdHMtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi5jb250YWN0cy1saXN0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi5jb250YWN0LWNoZWNrYm94IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS0xMDApO1xuICAgIH1cblxuICAgIC5mb3JtLWNoZWNrLWlucHV0IHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cblxuICAgIC5jb250YWN0LW5hbWUge1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICB9XG5cbiAgICAuY29udGFjdC1lbWFpbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTUFJTiBDT05URU5UIC0gMiBDT0xVTU4gTEFZT1VUXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5iaWxsaW5nLWZvcm0tbWFpbiB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAzMjBweDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDExMDBweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAyODBweDtcbiAgICB9XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDkwMHB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTElORSBJVEVNUyBTRUNUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5iaWxsaW5nLWl0ZW1zLXNlY3Rpb24ge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uYmlsbGluZy1pdGVtcy1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG59XG5cbi5iaWxsaW5nLWl0ZW1zLWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzZweDtcbiAgICBoZWlnaHQ6IDM2cHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpIDAlLCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMikgMTAwJSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbn1cblxuLmJpbGxpbmctaXRlbXMtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbn1cblxuLmJpbGxpbmctaXRlbXMtYm9keSB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4vLyBMaW5lIGl0ZW1zIGxpc3QgKHJlc3BvbnNpdmUgZ3JpZClcblxuLmJpbGxpbmctaXRlbXMtbGlzdCB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4uYmlsbGluZy1pdGVtcy1oZWFkZXItcm93IHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMjhweCBtaW5tYXgoMCwgMi42ZnIpIG1pbm1heCgxMzBweCwgMS4xZnIpIDU2cHggbWlubWF4KDE0MHB4LCAwLjlmcikgbWlubWF4KDYwcHgsIDAuNGZyKSAyNHB4O1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG5cbiAgICA+IGRpdiB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cblxuICAgIC5jb2x1bW4tdG90YWwge1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB9XG5cbiAgICAuY29sdW1uLWFjdGlvbnMge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA5MDBweCkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuLy8gV2l0aG91dCB0YXggY29sdW1uIC0gZ2l2ZSBkZXNjcmlwdGlvbiBldmVuIG1vcmUgc3BhY2VcblxuLmJpbGxpbmctaXRlbXMtbGlzdDpub3QoOmhhcyguY29sdW1uLXRheCkpIHtcblxuICAgIC5iaWxsaW5nLWl0ZW1zLWhlYWRlci1yb3cge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDI4cHggbWlubWF4KDAsIDMuOGZyKSBtaW5tYXgoMTAwcHgsIDAuOWZyKSA1NnB4IG1pbm1heCg2MHB4LCAwLjRmcikgMjRweDtcbiAgICB9XG5cbiAgICAuYmlsbGluZy1pdGVtLXJvdyB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMjhweCBtaW5tYXgoMCwgMy44ZnIpIG1pbm1heCgxMDBweCwgMC45ZnIpIDU2cHggbWlubWF4KDYwcHgsIDAuNGZyKSAyNHB4O1xuXG4gICAgICAgIEBtZWRpYSAod2lkdGggPD0gOTAwcHgpIHtcbiAgICAgICAgICAgIC8vIFR3byBjb2x1bW5zLCBub3Qgb25lOiB0aGlzIHVuZG9lcyB0aGUgZGVza3RvcCB0ZW1wbGF0ZSBhYm92ZSwgYW5kIHRoZSBzdGFja2VkXG4gICAgICAgICAgICAvLyBgZ3JpZC10ZW1wbGF0ZS1hcmVhc2AgcHV0cyBwcmljZSBiZXNpZGUgcXR5LiBBIHNpbmdsZSBjb2x1bW4gbGVhdmVzIHRoZSBzZWNvbmRcbiAgICAgICAgICAgIC8vIG9uZSBpbXBsaWNpdCBhbmQgYGF1dG9gLCB3aGljaCBsZXRzIHF0eSBzdGFydmUgcHJpY2Ugb2YgaXRzIHdpZHRoLlxuICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBXaGVuIHRoZSBUYXggY29sdW1uIGV4aXN0cyBidXQgbm8gbGluZS10YXggZHJvcGRvd25zIGFyZSBhZGRlZCBvbiBhbnkgcm93LFxuLy8gc2hyaW5rIHRoZSBUYXggc2xvdCBzbyB0aGUgXCIrIEFkZCB0YXhcIiBidXR0b24gZG9lc24ndCBsZWF2ZSBhIHZpc2libGUgZ2FwXG4vLyBiZXR3ZWVuIFRheCBhbmQgVG90YWwuIFRoZSB3aWRlciBzbG90IHJldHVybnMgdGhlIG1vbWVudCBhIHRheCByb3cgYXBwZWFycy5cblxuLmJpbGxpbmctaXRlbXMtbGlzdDpoYXMoLmNvbHVtbi10YXgpOm5vdCg6aGFzKC5saW5lLXRheC1yb3cpKSB7XG5cbiAgICAuYmlsbGluZy1pdGVtcy1oZWFkZXItcm93LFxuICAgIC5iaWxsaW5nLWl0ZW0tcm93IHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAyOHB4IG1pbm1heCgwLCAzLjJmcikgbWlubWF4KDEzMHB4LCAxLjFmcikgNTZweCBtaW5tYXgoODBweCwgMC41ZnIpIG1pbm1heCg2MHB4LCAwLjRmcikgMjRweDtcbiAgICB9XG5cbiAgICAuYmlsbGluZy1pdGVtLXJvdyB7XG4gICAgICAgIEBtZWRpYSAod2lkdGggPD0gOTAwcHgpIHtcbiAgICAgICAgICAgIC8vIFR3byBjb2x1bW5zLCBub3Qgb25lOiB0aGlzIHVuZG9lcyB0aGUgZGVza3RvcCB0ZW1wbGF0ZSBhYm92ZSwgYW5kIHRoZSBzdGFja2VkXG4gICAgICAgICAgICAvLyBgZ3JpZC10ZW1wbGF0ZS1hcmVhc2AgcHV0cyBwcmljZSBiZXNpZGUgcXR5LiBBIHNpbmdsZSBjb2x1bW4gbGVhdmVzIHRoZSBzZWNvbmRcbiAgICAgICAgICAgIC8vIG9uZSBpbXBsaWNpdCBhbmQgYGF1dG9gLCB3aGljaCBsZXRzIHF0eSBzdGFydmUgcHJpY2Ugb2YgaXRzIHdpZHRoLlxuICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uYmlsbGluZy1pdGVtLXJvdyB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDI4cHggbWlubWF4KDAsIDIuNmZyKSBtaW5tYXgoMTMwcHgsIDEuMWZyKSA1NnB4IG1pbm1heCgxNDBweCwgMC45ZnIpIG1pbm1heCg2MHB4LCAwLjRmcikgMjRweDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIGFsaWduLWl0ZW1zOiBzdGFydDtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgPiBkaXYge1xuICAgICAgICBtaW4td2lkdGg6IDA7IC8vIFByZXZlbnQgZ3JpZCBibG93b3V0XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICB9XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgIH1cblxuICAgIC5jb2x1bW4tZGVzY3JpcHRpb24ge1xuICAgICAgICBtaW4td2lkdGg6IDA7IC8vIFByZXZlbnQgZ3JpZCBibG93b3V0XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAgICAgdGV4dGFyZWEge1xuICAgICAgICAgICAgbWluLWhlaWdodDogNjBweDtcbiAgICAgICAgICAgIHJlc2l6ZTogdmVydGljYWw7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRoZSBkZXNjcmlwdGlvbiBpcyBzZWNvbmRhcnkgdG8gdGhlIG5hbWUsIGFuZCBtb3N0IGxpbmVzIG5ldmVyIGdldCBvbmUuIEEgY2xvc2VkXG4gICAgLy8gYDxkZXRhaWxzPmAga2VlcHMgdGhlIGNvbW1vbiBjYXNlIHRvIHRoZSBzaW5nbGUgaW5wdXQgaXQgd2FzIGJlZm9yZSB0aGUgbmFtZSBleGlzdGVkLFxuICAgIC8vIGFuZCBjb3N0cyBhIGNsaWNrIOKAlCBub3QgYSB0cmlwIGVsc2V3aGVyZSDigJQgd2hlbiBhIGxpbmUgZG9lcyBuZWVkIGRldGFpbC5cblxuICAgIC5saW5lLWRlc2NyaXB0aW9uIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMC4yNXJlbTtcblxuICAgICAgICA+IHN1bW1hcnkge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXRibHItc2Vjb25kYXJ5KTtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgICAgICB3aWR0aDogZml0LWNvbnRlbnQ7XG5cbiAgICAgICAgICAgICY6Oi13ZWJraXQtZGV0YWlscy1tYXJrZXIge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgY29udGVudDogJysnO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMC4yNXJlbTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmW29wZW5dID4gc3VtbWFyeSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjI1cmVtO1xuXG4gICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICfiiJInO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNvbHVtbi1wcmljZSxcbiAgICAuY29sdW1uLXF0eSxcbiAgICAuY29sdW1uLXRheCB7XG5cbiAgICAgICAgaW5wdXQsXG4gICAgICAgIHNlbGVjdCB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jb2x1bW4tcHJpY2Uge1xuICAgICAgICAvLyBTbGltIGRvd24gdGhlIGxlYWRpbmcgY3VycmVuY3ktc3ltYm9sIGFkZG9uICh0aGUgXCIkXCIvXCLigqxcIiBwcmVmaXgpXG4gICAgICAgIC8vIHNvIGl0IHN0b3BzIGVhdGluZyB+MzAlIG9mIHRoZSBjb2x1bW4ncyB1c2FibGUgaW5wdXQgd2lkdGguXG5cbiAgICAgICAgLmlucHV0LWdyb3VwLXRleHQge1xuICAgICAgICAgICAgcGFkZGluZzogMC4yNXJlbSAwLjRyZW07XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgICAgIH1cblxuICAgICAgICBpbnB1dCB7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY29sdW1uLXF0eSB7XG5cbiAgICAgICAgaW5wdXQge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNvbHVtbi10b3RhbCB7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuXG4gICAgICAgIC5pdGVtLXRvdGFsLXZhbHVlIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNvbHVtbi1hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICB9XG5cbiAgICAuY29sdW1uLWRyYWcge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICAgICAgICAvLyBBbGlnbnMgdGhlIGdyaXAgd2l0aCB0aGUgZmlyc3QgbGluZSBvZiB0aGUgZGVzY3JpcHRpb24sIG5vdCB0aGUgdG9wIG9mIGl0cyBib3guXG4gICAgICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgfVxuXG4gICAgLy8gUXVpZXQgdW50aWwgdGhlIHJvdyBpcyBob3ZlcmVkIG9yIHRoZSBoYW5kbGUgaXMgdGFiYmVkIHRvLCBzbyBhIGNvbHVtbiBvZiBncmlwcyBkb2VzXG4gICAgLy8gbm90IGNvbXBldGUgd2l0aCB0aGUgZmllbGRzIGZvciBhdHRlbnRpb24uXG5cbiAgICAubGluZS1kcmFnLWhhbmRsZSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB3aWR0aDogMjRweDtcbiAgICAgICAgaGVpZ2h0OiAyNHB4O1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICBjdXJzb3I6IGdyYWI7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zaXRpb246XG4gICAgICAgICAgICBvcGFjaXR5IHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgYmFja2dyb3VuZCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgIGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktMTAwKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6YWN0aXZlIHtcbiAgICAgICAgICAgIGN1cnNvcjogZ3JhYmJpbmc7XG4gICAgICAgIH1cblxuICAgICAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBvdXRsaW5lLW9mZnNldDogMXB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJjpob3ZlciAubGluZS1kcmFnLWhhbmRsZSB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuXG4gICAgLm1vYmlsZS1sYWJlbCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLy8gTW9iaWxlIHJlc3BvbnNpdmUgbGF5b3V0XG4gICAgQG1lZGlhICh3aWR0aCA8PSA5MDBweCkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1hcmVhczpcbiAgICAgICAgICAgICdkZXNjIGRlc2MnXG4gICAgICAgICAgICAncHJpY2UgcXR5J1xuICAgICAgICAgICAgJ3RheCB0YXgnXG4gICAgICAgICAgICAnYWN0aW9ucyB0b3RhbCc7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgIH1cblxuICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLm1vYmlsZS1sYWJlbCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb2x1bW4tZGVzY3JpcHRpb24ge1xuICAgICAgICAgICAgZ3JpZC1hcmVhOiBkZXNjO1xuXG4gICAgICAgICAgICB0ZXh0YXJlYSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgbWluLWhlaWdodDogODBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5jb2x1bW4tcHJpY2Uge1xuICAgICAgICAgICAgZ3JpZC1hcmVhOiBwcmljZTtcblxuICAgICAgICAgICAgaW5wdXQge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmNvbHVtbi1xdHkge1xuICAgICAgICAgICAgZ3JpZC1hcmVhOiBxdHk7XG5cbiAgICAgICAgICAgIGlucHV0IHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5jb2x1bW4tdGF4IHtcbiAgICAgICAgICAgIGdyaWQtYXJlYTogdGF4O1xuXG4gICAgICAgICAgICBzZWxlY3Qge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmNvbHVtbi1hY3Rpb25zIHtcbiAgICAgICAgICAgIGdyaWQtYXJlYTogYWN0aW9ucztcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgICAgICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBkYXNoZWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPdXQgb2YgdGhlIHN0YWNrZWQgZmxvdyBhbmQgaW50byB0aGUgY2FyZCdzIGNvcm5lcjogdGhlIGFyZWFzIGJlbG93IGhhdmUgbm8gY29sdW1uXG4gICAgICAgIC8vIHRvIHNwYXJlLCBhbmQgdGhlcmUgaXMgbm8gaG92ZXIgdG8gcmV2ZWFsIGl0IG9uIGEgdG91Y2ggc2NyZWVuLlxuXG4gICAgICAgIC5jb2x1bW4tZHJhZyB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgICAgIHJpZ2h0OiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5saW5lLWRyYWctaGFuZGxlIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIH1cblxuICAgICAgICAuY29sdW1uLXRvdGFsIHtcbiAgICAgICAgICAgIGdyaWQtYXJlYTogdG90YWw7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxcHggZGFzaGVkIHZhcigtLXN3cC1ib3JkZXIpO1xuXG4gICAgICAgICAgICAubW9iaWxlLWxhYmVsIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLml0ZW0tdG90YWwtdmFsdWUge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gUmVtb3ZlIGl0ZW0gYnV0dG9uXG5cbi5yZW1vdmUtaXRlbS1idG4ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZzogMnB4IDRweDtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgd2lkdGg6IDEycHg7XG4gICAgICAgIGhlaWdodDogMTJweDtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0ZXIpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xuICAgIH1cblxuICAgICY6Zm9jdXMge1xuICAgICAgICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICAgIH1cbn1cblxuLy8gQWRkIGl0ZW0gYnV0dG9uXG5cbi5hZGQtaXRlbS1hY3Rpb24ge1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCB2YXIoLS1zd3AtYm9yZGVyKTtcbn1cblxuLmFkZC1pdGVtLWJ0biB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiAycHggZGFzaGVkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUEVSLUxJTkUgTVVMVEktVEFYIChTdGFja2VkIHJvd3MgaW4gdGhlIFRheCBjb2x1bW4pXG4vLyBFYWNoIC5saW5lLXRheC1yb3cgdXNlcyBhIHNpbmdsZS1yb3cgZmxleCBsYXlvdXQ6XG4vLyAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUrOKUgOKUgOKUgOKUgOKUgOKUkFxuLy8gICDilIIgdGF4IGRyb3Bkb3duICAgICAgICAgICAgICAgICAgICDilIIgIMOXICDilIJcbi8vICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS04pSA4pSA4pSA4pSA4pSA4pSYXG4vLyBDb21wb3VuZCBpcyBhIHByb3BlcnR5IG9mIHRoZSB1bmRlcmx5aW5nIFRheCByYXRlIChzbmFwc2hvdHRlZCBpbnRvIExpbmVUYXhcbi8vIHZpYSBgc25hcHNob3RGcm9tYCkg4oCUIHRoZXJlJ3Mgbm8gcGVyLWxpbmUgb3ZlcnJpZGUsIHNvIHRoZSBmb3JtIGRvZXNuJ3Rcbi8vIGV4cG9zZSBpdC5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmxpbmUtdGF4LWNvbGxlY3Rpb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICBtaW4td2lkdGg6IDA7XG59XG5cbi5saW5lLXRheC1saXN0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiA0cHg7XG59XG5cbi5saW5lLXRheC1yb3cge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogMDtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xufVxuXG4ubGluZS10YXgtZmllbGQtdGF4IHtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgICBtaW4td2lkdGg6IDA7XG5cbiAgICBzZWxlY3QsXG4gICAgLmZvcm0tc2VsZWN0IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgcGFkZGluZzogNHB4IDIycHggNHB4IDhweDtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IDZweCBjZW50ZXI7XG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogMTJweDtcbiAgICB9XG59XG5cbi5saW5lLXRheC1hY3Rpb25zIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5saW5lLXRheC1yZW1vdmUtYnRuIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHBhZGRpbmc6IDJweCA0cHg7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IDA7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLCBiYWNrZ3JvdW5kIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgd2lkdGg6IDEycHg7XG4gICAgICAgIGhlaWdodDogMTJweDtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXN3cC1kYW5nZXItcmdiKSwgMC4wOCk7XG4gICAgfVxufVxuXG4ubGluZS10YXgtYWRkLWJ0biB7XG4gICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDtcbiAgICBwYWRkaW5nOiAycHggOHB4O1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IDFweCBkYXNoZWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnktZGFyayk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIElOVk9JQ0UtTEVWRUwgVEFYRVMgKFdpdGhob2xkaW5nICYgYWRqdXN0bWVudHMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5iaWxsaW5nLWludm9pY2UtdGF4ZXMge1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTYpIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xufVxuXG4uYmlsbGluZy1pbnZvaWNlLXRheGVzLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5iaWxsaW5nLWludm9pY2UtdGF4ZXMtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbWQpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbn1cblxuLmJpbGxpbmctaW52b2ljZS10YXhlcy1zdWJ0aXRsZSB7XG4gICAgZmxleC1iYXNpczogMTAwJTtcbiAgICBtYXJnaW46IDA7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG59XG5cbi5iaWxsaW5nLWludm9pY2UtdGF4ZXMtbGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLmJpbGxpbmctaW52b2ljZS10YXgtcm93IHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDJmcikgbWlubWF4KDAsIDFmcikgbWlubWF4KDAsIDNmcikgYXV0bztcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNzY4cHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgfVxufVxuXG4uaW52b2ljZS10YXgtZmllbGQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcblxuICAgIC5tb2JpbGUtbGFiZWwge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcblxuICAgICAgICBAbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmludm9pY2UtdGF4LWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUT1RBTFMgU0lERUJBUiAoU3RpY2t5IG9uIERlc2t0b3ApXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5iaWxsaW5nLXRvdGFscy1zaWRlYmFyIHtcbiAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgIHRvcDogdmFyKC0tc3dwLXNwYWNlLTYpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA5OTJweCkge1xuICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgIH1cbn1cblxuLmJpbGxpbmctdG90YWxzLWNhcmQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uYmlsbGluZy10b3RhbHMtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS01KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xufVxuXG4uYmlsbGluZy10b3RhbHMtaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAzNnB4O1xuICAgIGhlaWdodDogMzZweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodCkgMCUsIHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4yKSAxMDAlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xufVxuXG4uYmlsbGluZy10b3RhbHMtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbn1cblxuLmJpbGxpbmctdG90YWxzLWJvZHkge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS01KTtcbn1cblxuLnRvdGFscy1yb3cge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIDA7XG5cbiAgICAmOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgfVxufVxuXG4udG90YWxzLWxhYmVsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbn1cblxuLnRvdGFscy12YWx1ZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbn1cblxuLnRvdGFscy1yb3ctZGlzY291bnQge1xuICAgIC8vIEEgZGlzY291bnQgaXMgYSBkZWR1Y3Rpb24sIG5vdCBhbiBlcnJvci4gUXVpZXQgaXQgZG93biBpbnN0ZWFkIG9mIGZsYWdnaW5nIGl0IHJlZC5cblxuICAgIC50b3RhbHMtdmFsdWUge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIH1cbn1cblxuLnRvdGFscy1yb3ctdG90YWwge1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWRhcmspO1xuXG4gICAgLnRvdGFscy1sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgLy8gVGhlIGdyYW5kIHRvdGFsIGlzIGluZm9ybWF0aW9uYWwsIG5vdCBhIFwiUGFpZFwiIHN0YXRlLiBHcmVlbiBvbmx5IHdoZW4gdGhlXG4gICAgLy8gaW52b2ljZSBpcyBhY3R1YWxseSBwYWlkOyBvbiB0aGUgZWRpdCBzY3JlZW4gdGhpcyBzdGF5cyBuZXV0cmFsIHRleHQuXG5cbiAgICAudG90YWxzLXZhbHVlIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC0yeGwpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gICAgfVxufVxuXG4vLyBEaXNjb3VudCBmaWVsZCBpbiBzaWRlYmFyXG5cbi5kaXNjb3VudC1maWVsZCB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCB2YXIoLS1zd3AtYm9yZGVyKTtcblxuICAgIC5mb3JtLWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRFUk1TICYgTk9URVMgQ09MTEFQU0lCTEUgU0VDVElPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYmlsbGluZy10ZXJtcy1zZWN0aW9uIHtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlcjogMXB4IGRhc2hlZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgJltvcGVuXSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcblxuICAgICAgICAudGVybXMtc3VtbWFyeSB7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgICAgIH1cblxuICAgICAgICAudGVybXMtc3VtbWFyeS1pY29uIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnRlcm1zLXN1bW1hcnkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOjotd2Via2l0LWRldGFpbHMtbWFya2VyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktMTAwKTtcbiAgICB9XG59XG5cbi50ZXJtcy1zdW1tYXJ5LWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG59XG5cbi50ZXJtcy1zdW1tYXJ5LXRleHQge1xuICAgIGZsZXg6IDE7XG59XG5cbi50ZXJtcy1zdW1tYXJ5LXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbn1cblxuXG4udGVybXMtY29udGVudCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xufVxuXG4udGVybXMtZ3JpZCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRk9STSBBQ1RJT05TIChTdGlja3kgRm9vdGVyKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYmlsbGluZy1mb3JtLWFjdGlvbnMge1xuICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgMDtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtOCk7XG4gICAgei1pbmRleDogMTA7XG4gICAgYm94LXNoYWRvdzogMCAtNHB4IDEycHggcmdiKDAgMCAwIC8gNSUpO1xufVxuXG4uYmlsbGluZy1mb3JtLWFjdGlvbnMtaW5uZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgbWF4LXdpZHRoOiAxMTAwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgcGFkZGluZzogMCB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi8vIFNwbGl0IGJ1dHRvbiBncm91cCBmb3Igc2F2ZSBhY3Rpb25zXG5cbi5zYXZlLWJ1dHRvbi1ncm91cCB7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1wcmltYXJ5KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcblxuICAgIC5idG4tc2F2ZS1wcmltYXJ5IHtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG4gICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kcm9wZG93bi10b2dnbGUtc3BsaXQge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHJnYigyNTUgMjU1IDI1NSAvIDIwJSk7XG5cbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kcm9wZG93bi1tZW51IHtcbiAgICAgICAgbWluLXdpZHRoOiAxODBweDtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1sZyk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIH1cblxuICAgIC5kcm9wZG93bi1pdGVtIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yLTUpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG5cbiAgICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXByaW1hcnktbGcpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTU9CSUxFIExJTkUgSVRFTSBDQVJEU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG5cbiAgICAuYmlsbGluZy1pdGVtcy10YWJsZSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLmJpbGxpbmctaXRlbXMtY2FyZHMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG59XG5cbkBtZWRpYSAod2lkdGggPj0gNzY5cHgpIHtcblxuICAgIC5iaWxsaW5nLWl0ZW1zLWNhcmRzIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbi5iaWxsaW5nLWl0ZW0tY2FyZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBhbmltYXRpb246IGJpbGxpbmctc2xpZGUtaW4gMC4ycyBlYXNlLW91dDtcblxuICAgICY6Zm9jdXMtd2l0aGluIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuNCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMDgpO1xuICAgIH1cbn1cblxuLmJpbGxpbmctaXRlbS1jYXJkLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5iaWxsaW5nLWl0ZW0tY2FyZC1udW1iZXIge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbn1cblxuLmJpbGxpbmctaXRlbS1jYXJkLWJvZHkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLmJpbGxpbmctaXRlbS1jYXJkLXJvdyB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnIgMWZyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4uYmlsbGluZy1pdGVtLWNhcmQtdG90YWwge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCB2YXIoLS1zd3AtYm9yZGVyKTtcblxuICAgIC5pdGVtLXRvdGFsLWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgfVxuXG4gICAgLml0ZW0tdG90YWwtdmFsdWUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFOSU1BVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQGtleWZyYW1lcyBiaWxsaW5nLXNsaWRlLWluIHtcblxuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpO1xuICAgIH1cblxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUkVTUE9OU0lWRSBBREpVU1RNRU5UU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG5cbiAgICAuYmlsbGluZy1mb3JtLWNvbnRhaW5lciB7XG4gICAgICAgIHBhZGRpbmc6IDAgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTIwKTtcbiAgICB9XG5cbiAgICAuYmlsbGluZy1mb3JtLWhlYWRlciB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIDA7XG4gICAgfVxuXG4gICAgLmJpbGxpbmctZm9ybS1pY29uIHtcbiAgICAgICAgd2lkdGg6IDQ4cHg7XG4gICAgICAgIGhlaWdodDogNDhweDtcbiAgICB9XG5cbiAgICAuYmlsbGluZy1mb3JtLXRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgfVxuXG4gICAgLmJpbGxpbmctZGV0YWlscy1zZWN0aW9uLFxuICAgIC5iaWxsaW5nLWl0ZW1zLXNlY3Rpb24sXG4gICAgLmJpbGxpbmctdG90YWxzLWNhcmQge1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICB9XG5cbiAgICAuYmlsbGluZy1mb3JtLWFjdGlvbnMtaW5uZXIge1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcblxuICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYmlsbGluZy1pZC1kaXNwbGF5IHtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuXG4gICAgICAgIC5iaWxsaW5nLWlkLWxhYmVsLFxuICAgICAgICAuYmlsbGluZy1pZC12YWx1ZSB7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhsKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRUNVUlJJTkcgSU5WT0lDRSBTVFlMRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gUmVjdXJyaW5nIFNjaGVkdWxlIFNlY3Rpb24gKG9uIGNyZWF0ZS9lZGl0IHBhZ2UpXG5cbi5yZWN1cnJpbmctc2NoZWR1bGUtc2VjdGlvbiB7XG4gICAgbWFyZ2luLWJsb2NrOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcblxuICAgIC5zZWN0aW9uLWhlYWRlciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgbWFyZ2luLWJsb2NrLWVuZDogdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgICAgICBwYWRkaW5nLWJsb2NrLWVuZDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBib3JkZXItYmxvY2stZW5kOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG5cbiAgICAgICAgLnNlY3Rpb24taGVhZGVyLWljb24ge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtcHJpbWFyeSkgMCUsIHZhcigtLXN3cC1wcmltYXJ5LWRhcmspIDEwMCUpO1xuICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zZWN0aW9uLWhlYWRlci1jb250ZW50IHtcbiAgICAgICAgICAgIGZsZXg6IDE7XG5cbiAgICAgICAgICAgIC5zZWN0aW9uLXRpdGxlIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgMCB2YXIoLS1zd3Atc3BhY2UtMSkgMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnNlY3Rpb24tZGVzY3JpcHRpb24ge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5yZWN1cnJpbmctc2NoZWR1bGUtY29udGVudCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cbn1cblxuLy8gUmVjdXJyaW5nIE9wdGlvbnMgV3JhcHBlciAtIFN0eWxlIGZvcm0gZmllbGRzIHJlbmRlcmVkIGJ5IER5bmFtaWNGb3JtQnVpbGRlclxuXG4ucmVjdXJyaW5nLW9wdGlvbnMtd3JhcHBlciB7XG4gICAgLy8gVHlwZSBmaWVsZCAocmFkaW8gYnV0dG9ucykgLSBNYWtlIHRoZW0gdmlzdWFsIGNhcmRzXG5cbiAgICBbaWQkPSdfdHlwZSddLCBbaWQkPSdfZW5kVHlwZSddIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZCAhaW1wb3J0YW50O1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCAxZnIpO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiB2YXIoLS1zd3Atc3BhY2UtMik7XG5cbiAgICAgICAgQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtLWNoZWNrLWxhYmVsLnJlcXVpcmVkOjphZnRlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgPiAuZm9ybS1jaGVjayB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuXG4gICAgICAgICAgICBpbnB1dFt0eXBlPSdyYWRpbyddIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICAgICAgICB3aWR0aDogMDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgICAgICAgICAgICAgbWluLWhlaWdodDogNzBweDtcbiAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6aG92ZXIgbGFiZWwge1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpbnB1dFt0eXBlPSdyYWRpbyddOmNoZWNrZWQgKyBsYWJlbCB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgW2lkJD0nX2VuZFR5cGUnXSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQgIWltcG9ydGFudDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC8vIERheXMgZmllbGQgZm9yIFdlZWtseS9ZZWFybHkgKGNoZWNrYm94ZXMgZm9yIGRheXMvbW9udGhzKSAtIE1ha2UgdGhlbSBidXR0b24gdG9nZ2xlc1xuXG4gICAgW2lkJD0nX2RheXMnXSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQgIWltcG9ydGFudDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCg4MHB4LCAxZnIpKTtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIG1hcmdpbi1ibG9jay1zdGFydDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuXG4gICAgICAgIEBtZWRpYSAod2lkdGggPD0gNzY4cHgpIHtcbiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoNzBweCwgMWZyKSk7XG4gICAgICAgIH1cblxuICAgICAgICA+IC5mb3JtLWNoZWNrIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG5cbiAgICAgICAgICAgIGlucHV0W3R5cGU9J2NoZWNrYm94J10ge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAwO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGFiZWwge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgICAgICAgICAgICAgbWluLWhlaWdodDogNDRweDtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50O1xuXG4gICAgICAgICAgICAgICAgLy8gRW5zdXJlIHRleHQgY29udGVudCBpcyB2aXNpYmxlXG5cbiAgICAgICAgICAgICAgICAmOjpiZWZvcmUsXG4gICAgICAgICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOmhvdmVyIGxhYmVsIHtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaW5wdXRbdHlwZT0nY2hlY2tib3gnXTpjaGVja2VkICsgbGFiZWwge1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgICAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4ucmVjdXJyaW5nLWZyZXF1ZW5jeS1kaXNwbGF5IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpIDAlLCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMDUpIDEwMCUpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4yKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcblxuICAgIC5yZWN1cnJpbmctZnJlcXVlbmN5LWljb24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDM2cHg7XG4gICAgICAgIGhlaWdodDogMzZweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxuXG4gICAgLnJlY3VycmluZy1mcmVxdWVuY3ktdGV4dCB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcblxuICAgICAgICBzdHJvbmcge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFZhcmlhYmxlIEhlbHAgLSBDb2xsYXBzaWJsZSBJbmZvIEJveFxuXG4ucmVjdXJyaW5nLXZhcmlhYmxlcy1oZWxwIHtcbiAgICBtYXJnaW4tYmxvY2stc3RhcnQ6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWluZm8tYm9yZGVyLXN1YnRsZSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWluZm8tYmctc3VidGxlKTtcblxuICAgIC52YXJpYWJsZXMtc3VtbWFyeSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtaW5mbyk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG5cbiAgICAgICAgJjo6LXdlYmtpdC1kZXRhaWxzLW1hcmtlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWluZm8tZW1waGFzaXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnZhcmlhYmxlcy1jb250ZW50IHtcbiAgICAgICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIHBhZGRpbmctYmxvY2stc3RhcnQ6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgYm9yZGVyLWJsb2NrLXN0YXJ0OiAxcHggc29saWQgdmFyKC0tc3dwLWluZm8tYm9yZGVyLXN1YnRsZSk7XG5cbiAgICAgICAgLnZhcmlhYmxlcy1kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICAgICAgbWFyZ2luLWJsb2NrLWVuZDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLnZhcmlhYmxlcy1saXN0IHtcbiAgICAgICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgbWFyZ2luOiAwIDAgdmFyKC0tc3dwLXNwYWNlLTMpIDA7XG5cbiAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcbiAgICAgICAgICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgMDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS42O1xuXG4gICAgICAgICAgICAgICAgY29kZSB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDJweCA4cHg7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogdmFyKC0tc3dwLWZvbnQtbW9ubyk7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAudmFyaWFibGUtZGVzY3JpcHRpb24ge1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC52YXJpYWJsZS1leGFtcGxlIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAgICAgICAgIGJvcmRlci1pbmxpbmUtc3RhcnQ6IDNweCBzb2xpZCB2YXIoLS1zd3AtaW5mbyk7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuXG4gICAgICAgICAgICBzdHJvbmcge1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuZXhhbXBsZS10ZXh0IHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBtYXJnaW4tYmxvY2stc3RhcnQ6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgICAgICAgICBmb250LWZhbWlseTogdmFyKC0tc3dwLWZvbnQtbW9ubyk7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmW29wZW5dIC52YXJpYWJsZXMtc3VtbWFyeSB7XG4gICAgICAgIG1hcmdpbi1ibG9jay1lbmQ6IDA7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRUNVUlJJTkcgSU5WT0lDRSBWSUVXIFBBR0UgU0lERUJBUlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBIaWdobGlnaHRlZCBjYXJkIChlLmcuLCBSZWN1cnJpbmcgU2NoZWR1bGUgY2FyZClcblxuLmludm9pY2Utc2lkZWJhci1jYXJkLWhpZ2hsaWdodCB7XG4gICAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMDMpLCB0cmFuc3BhcmVudCk7XG59XG5cbi8vIFJlY3VycmluZyBTY2hlZHVsZSBHcmlkIChsYWJlbCB8IHZhbHVlIHBhaXJzKVxuXG4ucmVjdXJyaW5nLXNjaGVkdWxlLWdyaWQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLnJlY3VycmluZy1zY2hlZHVsZS1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgMDtcblxuICAgICY6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICB9XG59XG5cbi5yZWN1cnJpbmctc2NoZWR1bGUtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbn1cblxuLnJlY3VycmluZy1zY2hlZHVsZS12YWx1ZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuXG4vLyBVcGNvbWluZyBPY2N1cnJlbmNlcyBMaXN0XG5cbi5vY2N1cnJlbmNlcy1saXN0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbn1cblxuLm9jY3VycmVuY2UtaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMyk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgycHgpO1xuICAgIH1cbn1cblxuLm9jY3VycmVuY2UtaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAzMnB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4ub2NjdXJyZW5jZS1kYXRlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG59XG5cbi8vIEdlbmVyYXRlZCBJbnZvaWNlcyBMaXN0XG5cbi5nZW5lcmF0ZWQtaW52b2ljZXMtbGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cbi5nZW5lcmF0ZWQtaW52b2ljZS1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMyk7XG4gICAgfVxufVxuXG4uZ2VuZXJhdGVkLWludm9pY2UtbGluayB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZsZXg6IDE7XG4gICAgbWluLXdpZHRoOiAwO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcblxuICAgICAgICAuZ2VuZXJhdGVkLWludm9pY2UtbnVtYmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5nZW5lcmF0ZWQtaW52b2ljZS1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDI4cHg7XG4gICAgaGVpZ2h0OiAyOHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0ZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5nZW5lcmF0ZWQtaW52b2ljZS1udW1iZXIge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xufVxuXG4uZ2VuZXJhdGVkLWludm9pY2UtbWV0YSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4uZ2VuZXJhdGVkLWludm9pY2UtdG90YWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi52aWV3LWFsbC1saW5rIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4xNSk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBTb2xpZEludm9pY2UgLSBQYXltZW50IFBhZ2UgU3R5bGVzXG4gKlxuICogTW9kZXJuLCBjbGVhbiBwYXltZW50IHBhZ2Ugd2l0aCB0d28tY29sdW1uIGxheW91dCxcbiAqIGNhcmQtYmFzZWQgcGF5bWVudCBtZXRob2Qgc2VsZWN0aW9uLCBhbmQgaW52b2ljZSBzdW1tYXJ5LlxuICogVXNlcyBkZXNpZ24gc3lzdGVtIHRva2VucyBmb3IgY29uc2lzdGVudCBzdHlsaW5nLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBBWU1FTlQgUEFHRSBDT05UQUlORVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnBheW1lbnQtcGFnZSB7XG4gICAgbWluLWhlaWdodDogMTAwJTtcbn1cblxuLnBheW1lbnQtY29udGFpbmVyIHtcbiAgICBtYXgtd2lkdGg6IDEyMDBweDtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTEyKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUEFHRSBIRUFERVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnBheW1lbnQtaGVhZGVyIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpIDA7XG59XG5cbi5wYXltZW50LWhlYWRlci1jb250ZW50IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi5wYXltZW50LWhlYWRlci1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDU2cHg7XG4gICAgaGVpZ2h0OiA1NnB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KSAwJSwgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjE1KSAxMDAlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xufVxuXG4ucGF5bWVudC1oZWFkZXItdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDI1ZW07XG59XG5cbi5wYXltZW50LWhlYWRlci1zdWJ0aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIG1hcmdpbjogdmFyKC0tc3dwLXNwYWNlLTEpIDAgMCAwO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUV08tQ09MVU1OIExBWU9VVFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucGF5bWVudC1sYXlvdXQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGFsaWduLWl0ZW1zOiBzdGFydDtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gOTkycHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBJTlZPSUNFIFNVTU1BUlkgQ0FSRCAoTGVmdCBDb2x1bW4pXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5wYXltZW50LWludm9pY2Utc3VtbWFyeSB7XG4gICAgcG9zaXRpb246IHN0aWNreTtcbiAgICB0b3A6IHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gOTkycHgpIHtcbiAgICAgICAgcG9zaXRpb246IHN0YXRpYztcbiAgICAgICAgb3JkZXI6IDI7XG4gICAgfVxufVxuXG4uaW52b2ljZS1zdW1tYXJ5LWNhcmQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uaW52b2ljZS1zdW1tYXJ5LWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbn1cblxuLmludm9pY2Utc3VtbWFyeS1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDM2cHg7XG4gICAgaGVpZ2h0OiAzNnB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1pbmZvLWxpZ2h0KSAwJSwgcmdiYSh2YXIoLS1zd3AtaW5mby1yZ2IpLCAwLjIpIDEwMCUpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtaW5mbyk7XG59XG5cbi5pbnZvaWNlLXN1bW1hcnktdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbn1cblxuLmludm9pY2Utc3VtbWFyeS1ib2R5IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNSk7XG59XG5cbi8vIFN1bW1hcnkgU2VjdGlvbnNcblxuLnN1bW1hcnktc2VjdGlvbiB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIDA7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuXG4gICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgIH1cblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgIH1cbn1cblxuLnN1bW1hcnktc2VjdGlvbi1sYWJlbCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4uc3VtbWFyeS1jbGllbnQtaW5mbyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcblxuICAgIC5jbGllbnQtbmFtZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgfVxufVxuXG4uY2xpZW50LWNyZWRpdC1iYWRnZSB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMS01KSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1Y2Nlc3MtbGlnaHRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbn1cblxuLy8gSW52b2ljZSBEZXRhaWxzIEdyaWRcblxuLmludm9pY2UtZGV0YWlscy1ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5kZXRhaWwtaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xufVxuXG4uZGV0YWlsLWxhYmVsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xufVxuXG4uZGV0YWlsLXZhbHVlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG59XG5cbi8vIExpbmUgSXRlbXMgUHJldmlld1xuXG4ubGluZS1pdGVtcy1wcmV2aWV3IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi5saW5lLWl0ZW0tcm93IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xufVxuXG4ubGluZS1pdGVtLWRlc2Mge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICBtYXgtd2lkdGg6IDYwJTtcbn1cblxuLmxpbmUtaXRlbS1hbW91bnQge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG59XG5cbi8vIFN1bW1hcnkgVG90YWxzXG5cbi5zdW1tYXJ5LXRvdGFscyB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xufVxuXG4uc3VtbWFyeS10b3RhbHMgLnRvdGFscy1yb3cge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIDA7XG59XG5cbi5zdW1tYXJ5LXRvdGFscyAudG90YWxzLWxhYmVsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbn1cblxuLnN1bW1hcnktdG90YWxzIC50b3RhbHMtdmFsdWUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xufVxuXG4vLyBBIGRpc2NvdW50IGlzIGEgZGVkdWN0aW9uLCBub3QgYW4gZXJyb3IuIFN0YXkgbmV1dHJhbC5cblxuLnN1bW1hcnktdG90YWxzIC50b3RhbHMtcm93LWRpc2NvdW50IC50b3RhbHMtdmFsdWUge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG59XG5cbi8vIFBheW1lbnRzIGFscmVhZHkgcmVjZWl2ZWQgYXJlIHBvc2l0aXZlIG1vbmV5IGluLlxuXG4uc3VtbWFyeS10b3RhbHMgLnRvdGFscy1yb3ctcGF5bWVudCAudG90YWxzLXZhbHVlIHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xufVxuXG4uc3VtbWFyeS10b3RhbHMgLnRvdGFscy1yb3ctYmFsYW5jZSB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItZGFyayk7XG5cbiAgICAudG90YWxzLWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIH1cblxuICAgIC8vIFRoZSBhbW91bnQtdG8tcGF5IGlzIGluZm9ybWF0aW9uYWw7IGdyZWVuIHdvdWxkIGltcGx5IFwiUGFpZFwiLCB3aGljaCBpdFxuICAgIC8vIGlzbid0IHlldC4gVGhlIFwiQmFsYW5jZSByZW1haW5pbmdcIiBjYWxsb3V0IG5leHQgdG8gdGhlIGFtb3VudCBmaWVsZFxuICAgIC8vIGFscmVhZHkgY2FycmllcyB0aGUgYXR0ZW50aW9uLlxuXG4gICAgLnRvdGFscy12YWx1ZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteGwpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQQVlNRU5UIEZPUk0gQ0FSRCAoUmlnaHQgQ29sdW1uKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucGF5bWVudC1mb3JtLXNlY3Rpb24ge1xuICAgIEBtZWRpYSAod2lkdGggPD0gOTkycHgpIHtcbiAgICAgICAgb3JkZXI6IDE7XG4gICAgfVxufVxuXG4ucGF5bWVudC1mb3JtLWNhcmQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4ucGF5bWVudC1mb3JtLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbn1cblxuLnBheW1lbnQtZm9ybS1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDM2cHg7XG4gICAgaGVpZ2h0OiAzNnB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0KSAwJSwgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjIpIDEwMCUpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG59XG5cbi5wYXltZW50LWZvcm0tdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbn1cblxuLnBheW1lbnQtZm9ybS1ib2R5IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNSk7XG59XG5cbi5wYXltZW50LWZvcm0tZm9vdGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUEFZTUVOVCBGT1JNIEJPRFkgU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5wYXltZW50LWZvcm0tYm9keSB7XG4gICAgLy8gU3R5bGUgZm9ybSBsYWJlbHNcblxuICAgIC5mb3JtLWxhYmVsIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yKTtcblxuICAgICAgICAmLnJlcXVpcmVkOjphZnRlciB7XG4gICAgICAgICAgICBjb250ZW50OiAnIConO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRm9ybSBoZWxwIHRleHRcblxuICAgIC5mb3JtLXRleHQge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIH1cblxuICAgIC8vIEZpeCBmb3IgbW9uZXkgdHlwZSBpbnB1dCBncm91cHNcblxuICAgIC5pbnB1dC1ncm91cCB7XG4gICAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgIH1cblxuICAgIC8vIFRleHRhcmVhIHN0eWxpbmdcblxuICAgIHRleHRhcmVhLmZvcm0tY29udHJvbCB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDgwcHg7XG4gICAgICAgIHJlc2l6ZTogdmVydGljYWw7XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlIHByb3BlciBzcGFjaW5nIGJldHdlZW4gZm9ybSBncm91cHNcblxuICAgIC5tYi00Omxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQQVlNRU5UIE1FVEhPRFMgR1JJRFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucGF5bWVudC1tZXRob2RzLWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyMDBweCwgMWZyKSk7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5wYXltZW50LW1ldGhvZC1jYXJkIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgfVxuXG4gICAgJjpoYXMoLnBheW1lbnQtbWV0aG9kLWlucHV0OmNoZWNrZWQpIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcblxuICAgICAgICAucGF5bWVudC1tZXRob2QtY2hlY2sge1xuICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgIH1cblxuICAgICAgICAucGF5bWVudC1tZXRob2QtaWNvbiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICY6aGFzKC5wYXltZW50LW1ldGhvZC1pbnB1dDpmb2N1cy12aXNpYmxlKSB7XG4gICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG4gICAgfVxufVxuXG4ucGF5bWVudC1tZXRob2QtcHJlZmVycmVkIHtcbiAgICBvcmRlcjogLTE7XG59XG5cbi5wYXltZW50LW1ldGhvZC1pbnB1dCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgd2lkdGg6IDA7XG4gICAgaGVpZ2h0OiAwO1xufVxuXG4ucGF5bWVudC1tZXRob2QtY29udGVudCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIGZsZXg6IDE7XG59XG5cbi5wYXltZW50LW1ldGhvZC1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xufVxuXG4ucGF5bWVudC1tZXRob2QtbmFtZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG59XG5cbi5wYXltZW50LW1ldGhvZC1iYWRnZSB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDtcbiAgICBwYWRkaW5nOiAycHggOHB4O1xuICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTIwMCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbn1cblxuLnBheW1lbnQtbWV0aG9kLWJhZGdlLW9ubGluZSB7XG4gICAgY29sb3I6IHZhcigtLXN3cC1pbmZvKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtaW5mby1saWdodCk7XG59XG5cbi5wYXltZW50LW1ldGhvZC1iYWRnZS1jcmVkaXQge1xuICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1Y2Nlc3MtbGlnaHQpO1xufVxuXG4ucGF5bWVudC1tZXRob2QtY2hlY2sge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOCk7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBTU9VTlQgRklFTERcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmFtb3VudC1maWVsZC13cmFwcGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuXG4gICAgLmZvcm0tbGFiZWwsXG4gICAgLmZvcm0tc2VjdGlvbi1sYWJlbCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxufVxuXG4uYW1vdW50LWJhbGFuY2UtaGludCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0xKSB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG5cbiAgICBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ0FQVFVSRSBPTkxJTkUgRklFTERcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNhcHR1cmUtb25saW5lLWZpZWxkIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuXG4gICAgLmZvcm0tY2hlY2sge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgfVxuXG4gICAgLmZvcm0tY2hlY2staW5wdXQge1xuICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgIHdpZHRoOiAyLjVyZW07XG4gICAgICAgIGhlaWdodDogMS4yNXJlbTtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxuXG4gICAgLmZvcm0tY2hlY2stbGFiZWwge1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cblxuICAgIC5mb3JtLWhlbHAge1xuICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiBjYWxjKDIuNXJlbSArIHZhcigtLXN3cC1zcGFjZS0yKSk7XG4gICAgfVxufVxuXG4vLyBIaWRlIGNhcHR1cmUgb25saW5lIHNlY3Rpb24gd2hlbiBvZmZsaW5lIG1ldGhvZCBzZWxlY3RlZFxuXG5bZGF0YS1wYXltZW50LW1ldGhvZC1zZWxlY3QtdGFyZ2V0PVwiY2FwdHVyZU9ubGluZVwiXS5kLW5vbmUge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ0xJQ0tBQkxFIExJTktTIChDbGllbnQgJiBJbnZvaWNlKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY2xpZW50LW5hbWUtbGluayxcbi5pbnZvaWNlLWlkLWxpbmsge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgIHN2ZyB7XG4gICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWRhcmspO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmNsaWVudC1uYW1lLWxpbmsge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xufVxuXG4uaW52b2ljZS1pZC1saW5rIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LWZhbWlseTogdmFyKC0tc3dwLWZvbnQtbW9ubywgbW9ub3NwYWNlKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUEFZTUVOVCBISVNUT1JZIENBUkRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnBheW1lbnQtaGlzdG9yeS1jYXJkIHtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5wYXltZW50LWhpc3RvcnktaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS01KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xufVxuXG4ucGF5bWVudC1oaXN0b3J5LWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzJweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXdhcm5pbmctbGlnaHQsICNmZWYzYzcpIDAlLCByZ2IoMjQ1IDE1OCAxMSAvIDIwJSkgMTAwJSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC13YXJuaW5nLCAjZjU5ZTBiKTtcbn1cblxuLnBheW1lbnQtaGlzdG9yeS10aXRsZSB7XG4gICAgZmxleDogMTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbn1cblxuLnBheW1lbnQtaGlzdG9yeS1jb3VudCB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBtaW4td2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICAgIHBhZGRpbmc6IDAgdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTIwMCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbn1cblxuLnBheW1lbnQtaGlzdG9yeS1ib2R5IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTUpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQQVlNRU5UIENBUkRTIChNYXRjaGluZyBQUiAjMjIxNSBzdHlsZSlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnBheW1lbnRzLWxpc3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLnBheW1lbnQtY2FyZCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkIHZhcigtLXN3cC1ncmF5LTMwMCk7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xufVxuXG4ucGF5bWVudC1jYXJkLWNhcHR1cmVkIHtcbiAgICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0ZXIsIHJnYigxNiAxODUgMTI5IC8gNSUpKTtcbn1cblxuLnBheW1lbnQtY2FyZC1mYWlsZWQge1xuICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0ZXIsIHJnYigyMzkgNjggNjggLyA1JSkpO1xufVxuXG4ucGF5bWVudC1jYXJkLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi5wYXltZW50LWFtb3VudCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xufVxuXG4ucGF5bWVudC1jYXJkLWJvZHkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLnBheW1lbnQtZGV0YWlsIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcblxuICAgIHN2ZyB7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICBvcGFjaXR5OiAwLjc7XG4gICAgfVxufVxuXG4ucGF5bWVudC1tZXNzYWdlIHtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQQVkgQlVUVE9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5idG4tcGF5IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1wcmltYXJ5KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXByaW1hcnktbGcpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgfVxuXG4gICAgJjphY3RpdmUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRVNQT05TSVZFIEFESlVTVE1FTlRTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSAod2lkdGggPD0gNzY4cHgpIHtcblxuICAgIC5wYXltZW50LWNvbnRhaW5lciB7XG4gICAgICAgIHBhZGRpbmc6IDAgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTE2KTtcbiAgICB9XG5cbiAgICAucGF5bWVudC1oZWFkZXIge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSAwO1xuICAgIH1cblxuICAgIC5wYXltZW50LWhlYWRlci1pY29uIHtcbiAgICAgICAgd2lkdGg6IDQ4cHg7XG4gICAgICAgIGhlaWdodDogNDhweDtcbiAgICB9XG5cbiAgICAucGF5bWVudC1oZWFkZXItdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICB9XG5cbiAgICAucGF5bWVudC1tZXRob2RzLWdyaWQge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICB9XG5cbiAgICAuaW52b2ljZS1kZXRhaWxzLWdyaWQge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICB9XG5cbiAgICAucGF5bWVudC1mb3JtLWZvb3RlciB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG5cbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmFtb3VudC1maWVsZC13cmFwcGVyIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIH1cbn1cbiIsIi8qKlxuICogUGF5bWVudHMgTGlzdCBQYWdlIFN0eWxlc1xuICpcbiAqIE1pbmltYWwgc3R5bGluZyBmb3IgdGhlIHBheW1lbnRzIGxpc3QgcGFnZSB3aXRoIEtQSSBjYXJkcy5cbiAqIE1vc3Qgc3R5bGVzIGNvbWUgZnJvbSBUYWJsZXIvQm9vdHN0cmFwIC0gdGhpcyBmaWxlIG9ubHkgYWRkcyBzcGVjaWZpYyBjdXN0b21pemF0aW9ucy5cbiAqL1xuXG4vLyBLUEkgU3RhdGlzdGljcyBDYXJkcyAtIHN1YnRsZSBob3ZlciBlZmZlY3RcblxuLnJvdy1kZWNrIC5jYXJkLXNtIHtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dDtcblxuICAgICY6aG92ZXIge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiKDAgMCAwIC8gOCUpO1xuICAgIH1cbn1cbiIsIi8qKlxuICogU29saWRJbnZvaWNlIC0gVXNlcnMgUGFnZSBTdHlsZXNcbiAqXG4gKiBNb2Rlcm4gdXNlcnMgbGlzdCBwYWdlIHdpdGggS1BJIGNhcmRzIGFuZCB0YWJiZWQgaW50ZXJmYWNlLlxuICogVXNlcyBkZXNpZ24gc3lzdGVtIHRva2VucyBmb3IgY29uc2lzdGVudCBzdHlsaW5nLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFVTRVJTIFBBR0UgQ09OVEFJTkVSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi51c2Vycy1wYWdlIHtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBLUEkgU1RBVFMgQ0FSRFMgKFRvcCBvZiBQYWdlKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBVc2VzIHN0YW5kYXJkIEJvb3RzdHJhcCBjYXJkLXNtIHN0eWxpbmcgZnJvbSByZWNlbnQgcmVkZXNpZ25zXG4vLyBObyBjdXN0b20gc3R5bGVzIG5lZWRlZCAtIEJvb3RzdHJhcC9UYWJsZXIgaGFuZGxlcyB0aGlzXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRBQlMgSU4gQ0FSRCBIRUFERVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gVXNlcyBzdGFuZGFyZCBuYXYtdGFicyBjYXJkLWhlYWRlci10YWJzIHBhdHRlcm5cbi8vIEN1c3RvbSB0YWIgc3R5bGVzIGFyZSBpbiBfdGFicy5zY3NzIGNvbXBvbmVudFxuLy8gTm8gYWRkaXRpb25hbCBjdXN0b20gc3R5bGVzIG5lZWRlZFxuXG4vLyBFbXB0eSBzdGF0ZSB1c2VzIFRhYmxlcidzIGJ1aWx0LWluIC5lbXB0eSBjb21wb25lbnQgY2xhc3Nlc1xuIiwiLyoqXG4gKiBTb2xpZEludm9pY2UgLSBQcm9maWxlIFBhZ2UgU3R5bGVzXG4gKlxuICogU3R5bGVzIGZvciB0aGUgdXNlciBwcm9maWxlIHZpZXcgYW5kIHNpZGViYXIgbmF2aWdhdGlvbi5cbiAqIEZvcm0gcGFnZXMgKGVkaXQsIGNoYW5nZS1wYXNzd29yZCkgdXNlIHNoYXJlZCBjbGFzc2VzIGZyb20gX2Zvcm0tcGFnZS5zY3NzLlxuICogSW5jbHVkZXM6IHNpZGViYXIgbmF2aWdhdGlvbiwgcHJvZmlsZSB2aWV3LCBzZWN1cml0eSBzdGF0dXMuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU0lERUJBUiBOQVZJR0FUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5wcm9maWxlLXNpZGViYXIge1xuICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgdG9wOiB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDk5MS45OHB4KSB7XG4gICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG59XG5cbi5wcm9maWxlLW5hdi1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcbn1cblxuLnByb2ZpbGUtbmF2IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5cbi5wcm9maWxlLW5hdi1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xuICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIH1cblxuICAgICYuYWN0aXZlIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgfVxufVxuXG4ucHJvZmlsZS1uYXYtaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIGNvbG9yOiBjdXJyZW50Y29sb3I7XG59XG5cbi5wcm9maWxlLW5hdi10ZXh0IHtcbiAgICBmbGV4OiAxO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQUk9GSUxFIFZJRVcgLSBIRUFERVIgV0lUSCBBVkFUQVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnByb2ZpbGUtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1zbSk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDc2Ny45OHB4KSB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgIH1cbn1cblxuLnByb2ZpbGUtYXZhdGFyIHtcbiAgICB3aWR0aDogNjRweDtcbiAgICBoZWlnaHQ6IDY0cHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCkgMCUsIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4yKSAxMDAlKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG59XG5cbi5wcm9maWxlLWhlYWRlci1pbmZvIHtcbiAgICBmbGV4OiAxO1xufVxuXG4ucHJvZmlsZS1uYW1lIHtcbiAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbiAgICBsaW5lLWhlaWdodDogMS4zO1xuICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMjVlbTtcbn1cblxuLnByb2ZpbGUtZW1haWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW46IHZhcigtLXN3cC1zcGFjZS0xKSAwIDA7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBST0ZJTEUgVklFVyAtIElORk9STUFUSU9OIFNFQ1RJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5wcm9maWxlLXNlY3Rpb24ge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcbiAgICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpLFxuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1ib3JkZXItZGFyayk7XG4gICAgfVxufVxuXG4ucHJvZmlsZS1zZWN0aW9uLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNSkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG59XG5cbi5wcm9maWxlLXNlY3Rpb24tdGl0bGUge1xuICAgIGZsZXg6IDE7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLnByb2ZpbGUtc2VjdGlvbi1ib2R5IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG59XG5cbi5wcm9maWxlLXNlY3Rpb24tZm9vdGVyIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQUk9GSUxFIFZJRVcgLSBERVRBSUwgR1JJRFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucHJvZmlsZS1kZXRhaWwtZ3JpZCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTUpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA3NjcuOThweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxufVxuXG4uZGV0YWlsLWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLmRldGFpbC1pdGVtLXdpZGUge1xuICAgIGdyaWQtY29sdW1uOiAxIC8gLTE7XG59XG5cbi5kZXRhaWwtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wMjVlbTtcbn1cblxuLmRldGFpbC12YWx1ZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBST0ZJTEUgVklFVyAtIFNFQ1VSSVRZIFNUQVRVU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uc2VjdXJpdHktc3RhdHVzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi5zZWN1cml0eS1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWJvcmRlci1kYXJrKTtcbiAgICB9XG59XG5cbi5zZWN1cml0eS1pdGVtLWluZm8ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBmbGV4OiAxO1xufVxuXG4uc2VjdXJpdHktaXRlbS1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDM2cHg7XG4gICAgaGVpZ2h0OiAzNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4uc2VjdXJpdHktaXRlbS1pY29uLXN1Y2Nlc3Mge1xuICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4xKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xufVxuXG4uc2VjdXJpdHktaXRlbS1pY29uLXdhcm5pbmcge1xuICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tc3dwLXdhcm5pbmctcmdiKSwgMC4xKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXdhcm5pbmcpO1xufVxuXG4uc2VjdXJpdHktaXRlbS1jb250ZW50IHtcbiAgICBmbGV4OiAxO1xufVxuXG4uc2VjdXJpdHktaXRlbS10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbWFyZ2luOiAwIDAgdmFyKC0tc3dwLXNwYWNlLTAtNSk7XG59XG5cbi5zZWN1cml0eS1pdGVtLWRlc2NyaXB0aW9uIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIG1hcmdpbjogMDtcbn1cblxuLnNlY3VyaXR5LWl0ZW0tYWN0aW9uIHtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBtYXJnaW4tbGVmdDogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBHT09HTEUgU0lHTi1JTiBCVVRUT05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmdvb2dsZS1zaWduaW4tYnRuIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1ib3JkZXItZGFyayk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1zbSk7XG4gICAgfVxuXG4gICAgJjphY3RpdmUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMXB4KTtcbiAgICB9XG5cbiAgICBzdmcge1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBBU1NXT1JEIFJFUVVJUkVNRU5UU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucGFzc3dvcmQtcmVxdWlyZW1lbnRzIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXN3cC1pbmZvLXJnYiksIDAuMDUpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tc3dwLWluZm8tcmdiKSwgMC4yKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTYpO1xufVxuXG4ucGFzc3dvcmQtcmVxdWlyZW1lbnRzLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0zKTtcblxuICAgIC5zZWN0aW9uLWljb24ge1xuICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXN3cC1pbmZvLXJnYiksIDAuMTUpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWluZm8pO1xuICAgIH1cblxuICAgIGgzIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgfVxufVxuXG4ucGFzc3dvcmQtcmVxdWlyZW1lbnRzLWxpc3Qge1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW46IDA7XG5cbiAgICBsaSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTEpIDAgdmFyKC0tc3dwLXNwYWNlLTEpIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICBjb250ZW50OiAn4pyTJztcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGxlZnQ6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtaW5mbyk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJFU1BPTlNJVkUgREVTSUdOXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFRhYmxldCBhZGp1c3RtZW50c1xuQG1lZGlhICh3aWR0aCA+PSA3NjhweCkgYW5kICh3aWR0aCA8PSA5OTEuOThweCkge1xuXG4gICAgLnByb2ZpbGUtc2lkZWJhciB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICB9XG59XG5cbkBtZWRpYSAod2lkdGggPD0gNzY3Ljk4cHgpIHtcbiAgICAvLyBQcm9maWxlIHNlY3Rpb24gZm9vdGVyIGJ1dHRvbnNcblxuICAgIC5wcm9maWxlLXNlY3Rpb24tZm9vdGVyIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBSSU5UIFNUWUxFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgcHJpbnQge1xuXG4gICAgLnByb2ZpbGUtc2VjdGlvbi1mb290ZXIsXG4gICAgLnByb2ZpbGUtc2lkZWJhciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG59XG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSAtIFR3by1GYWN0b3IgQXV0aGVudGljYXRpb24gU3R5bGVzXG4gKlxuICogTW9kZXJuIDJGQSBjb25maWd1cmF0aW9uIGFuZCBsb2dpbiBwYWdlcyB3aXRoIGVsZWdhbnQgZGVzaWduLlxuICogTWF0Y2hlcyB0aGUgcHJvZmlsZSBwYWdlIHBhdHRlcm5zIGFuZCBUYWJsZXIgZGVzaWduIHN5c3RlbS5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDT05GSUdVUkFUSU9OIFBBR0UgLSAyRkEgU0VUVElOR1MgU0VDVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnR3by1mYWN0b3Itc2V0dGluZ3Mge1xuXG4gICAgLmZvcm0tcGFnZS1zZWN0aW9ucyB7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgIH1cbn1cblxuLy8gU2VjdGlvbiBDb250ZW50IExheW91dFxuXG4udHdvLWZhY3Rvci1zZWN0aW9uLWNvbnRlbnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTUpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA3NjcuOThweCkge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cbn1cblxuLnR3by1mYWN0b3Itc2VjdGlvbi1pbmZvIHtcbiAgICBmbGV4OiAxO1xufVxuXG4udHdvLWZhY3Rvci1zZWN0aW9uLWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBmbGV4LXNocmluazogMDtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNzY3Ljk4cHgpIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUT1RQIFNFVFVQIE1PREFMXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi50b3RwLXNldHVwLWNvbnRhaW5lciB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIDA7XG59XG5cbi5zZXR1cC1zdGVwcyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDU3NS45OHB4KSB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIH1cbn1cblxuLnNldHVwLXN0ZXBzIC5zdGVwIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS0xMDApO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xuXG4gICAgJi5hY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctc20pO1xuICAgIH1cblxuICAgIC5zdGVwLW51bWJlciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB3aWR0aDogMjRweDtcbiAgICAgICAgaGVpZ2h0OiAyNHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiBjdXJyZW50Y29sb3I7XG4gICAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LWJvbGQpO1xuICAgICAgICBvcGFjaXR5OiAwLjg7XG4gICAgfVxuXG4gICAgJi5hY3RpdmUgLnN0ZXAtbnVtYmVyIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG59XG5cbi5xci1jb2RlLWNvbnRhaW5lciB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNSk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDU3NS45OHB4KSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG59XG5cbi5xci1jb2RlLWltYWdlIHtcbiAgICBtYXgtd2lkdGg6IDMwMHB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogYXV0bztcbiAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcbn1cblxuLm1hbnVhbC1lbnRyeS1kZXRhaWxzIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICBzdW1tYXJ5IHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjA1KTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6Oi13ZWJraXQtZGV0YWlscy1tYXJrZXIge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5tYW51YWwtZW50cnktY29udGVudCB7XG4gICAgICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgfVxuXG4gICAgLm1hbnVhbC1lbnRyeS1jb2RlIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgICAgICBmb250LWZhbWlseTogdmFyKC0tc3dwLWZvbnQtbW9ubyk7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjFlbTtcbiAgICAgICAgd29yZC1icmVhazogYnJlYWstYWxsO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgfVxufVxuXG4vLyBWZXJpZmljYXRpb24gRm9ybVxuXG4udmVyaWZpY2F0aW9uLWZvcm0tY29udGFpbmVyIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgMDtcbn1cblxuLnZlcmlmaWNhdGlvbi1jb2RlLWlucHV0IHtcbiAgICBmb250LWZhbWlseTogdmFyKC0tc3dwLWZvbnQtbW9ubyk7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuNWVtICFpbXBvcnRhbnQ7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogMS41cmVtICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpICFpbXBvcnRhbnQ7XG5cbiAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjNlbTtcbiAgICAgICAgb3BhY2l0eTogMC41O1xuICAgIH1cblxuICAgICY6Zm9jdXMge1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC41ZW0gIWltcG9ydGFudDtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJBQ0tVUCBDT0RFUyBNT0RBTFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYmFja3VwLWNvZGVzLW1vZGFsLWNvbnRlbnQge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSAwO1xufVxuXG4uYmFja3VwLWNvZGVzLWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA1NzUuOThweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgfVxufVxuXG4uYmFja3VwLWNvZGUtaXRlbSB7XG5cbiAgICBjb2RlIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICBmb250LWZhbWlseTogdmFyKC0tc3dwLWZvbnQtbW9ubyk7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTE9HSU4gUEFHRVMgLSAyRkEgVkVSSUZJQ0FUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi50d28tZmFjdG9yLWxvZ2luLXBhZ2Uge1xuICAgIG1pbi1oZWlnaHQ6IDEwMHZoO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4udHdvLWZhY3Rvci1sb2dpbi1jYXJkIHtcblxuICAgIC5jYXJkIHtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBib3gtc2hhZG93OiAwIDRweCAyMHB4IHJnYigwIDAgMCAvIDglKTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB9XG5cbiAgICAuY2FyZC1zdGF0dXMtdG9wIHtcbiAgICAgICAgaGVpZ2h0OiA0cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTgpIHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgICAgICBAbWVkaWEgKHdpZHRoIDw9IDU3NS45OHB4KSB7XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNikgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBBdmF0YXIgSWNvblxuXG4udHdvLWZhY3Rvci1hdmF0YXIge1xuICAgIHdpZHRoOiA3MnB4O1xuICAgIGhlaWdodDogNzJweDtcbiAgICBtYXJnaW46IDAgYXV0byB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpIDAlLCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMTUpIDEwMCUpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMik7XG5cbiAgICAmLnR3by1mYWN0b3ItYXZhdGFyLXN1Y2Nlc3Mge1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMikgMCUsIHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4xKSAxMDAlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMik7XG4gICAgfVxufVxuXG4vLyBMb2dpbiBIZWFkaW5nXG5cbi50d28tZmFjdG9yLWxvZ2luLXRpdGxlIHtcbiAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi50d28tZmFjdG9yLWxvZ2luLWRlc2NyaXB0aW9uIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLy8gVmVyaWZpY2F0aW9uIENvZGUgSW5wdXQgKGZvciBsb2dpbiBwYWdlcylcblxuLnR3by1mYWN0b3ItY29kZS1pbnB1dCB7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLXN3cC1mb250LW1vbm8pO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjVlbTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiAxLjc1cmVtICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS0zKSAhaW1wb3J0YW50O1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKTtcblxuICAgICY6OnBsYWNlaG9sZGVyIHtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuM2VtO1xuICAgICAgICBvcGFjaXR5OiAwLjQ7XG4gICAgfVxuXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCA0cHggcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjEpO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC41ZW0gIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDU3NS45OHB4KSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS41cmVtICFpbXBvcnRhbnQ7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSAhaW1wb3J0YW50O1xuICAgIH1cbn1cblxuLy8gRm9ybSBIaW50XG5cbi50d28tZmFjdG9yLWZvcm0taGludCB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuXG4gICAgYSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gVHJ1c3QgRGV2aWNlIE9wdGlvblxuXG4udHJ1c3QtZGV2aWNlLW9wdGlvbiB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tc3dwLWluZm8tcmdiKSwgMC4wNSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1zd3AtaW5mby1yZ2IpLCAwLjIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIG1hcmdpbjogdmFyKC0tc3dwLXNwYWNlLTQpIDA7XG5cbiAgICAuZm9ybS1jaGVjayB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG5cbiAgICAuZm9ybS1jaGVjay1pbnB1dCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDAuMTVlbTtcbiAgICB9XG5cbiAgICAuZm9ybS1jaGVjay1sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxufVxuXG4vLyBBbHRlcm5hdGl2ZSBNZXRob2RzIFNlY3Rpb25cblxuLmFsdGVybmF0aXZlLW1ldGhvZHMge1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAuYWx0ZXJuYXRpdmUtbWV0aG9kcy10aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgfVxuXG4gICAgLmFsdGVybmF0aXZlLW1ldGhvZHMtbGlzdCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIH1cblxuICAgIC5idG4ge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxufVxuXG4vLyBTZWN1cml0eSBOb3RpY2VcblxuLnR3by1mYWN0b3Itc2VjdXJpdHktbm90aWNlIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4vLyBFbWFpbCBSZXNlbmQgU2VjdGlvblxuXG4uZW1haWwtcmVzZW5kLXNlY3Rpb24ge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tc3dwLWluZm8tcmdiKSwgMC4wNSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1zd3AtaW5mby1yZ2IpLCAwLjIpO1xuXG4gICAgLnJlc2VuZC10ZXh0IHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgfVxuXG4gICAgLnJlc2VuZC1saW5rIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmV4cGlyeS13YXJuaW5nIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atd2FybmluZyk7XG4gICAgICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUkVTUE9OU0lWRSBERVNJR05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhICh3aWR0aCA8PSA3NjcuOThweCkge1xuXG4gICAgLnRvdHAtc2V0dXAtY29udGFpbmVyIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIDA7XG4gICAgfVxuXG4gICAgLnNldHVwLXN0ZXBzIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIC5xci1jb2RlLWNvbnRhaW5lciB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIC5xci1jb2RlLWltYWdlIHtcbiAgICAgICAgbWF4LXdpZHRoOiAyNTBweDtcbiAgICB9XG5cbiAgICAudmVyaWZpY2F0aW9uLWZvcm0tY29udGFpbmVyIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIDA7XG4gICAgfVxuXG4gICAgLmJhY2t1cC1jb2Rlcy1ncmlkIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIH1cbn1cblxuQG1lZGlhICh3aWR0aCA8PSA1NzUuOThweCkge1xuXG4gICAgLnFyLWNvZGUtaW1hZ2Uge1xuICAgICAgICBtYXgtd2lkdGg6IDIwMHB4O1xuICAgIH1cblxuICAgIC50d28tZmFjdG9yLWxvZ2luLWNhcmQgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxuXG4gICAgLnR3by1mYWN0b3ItYXZhdGFyIHtcbiAgICAgICAgd2lkdGg6IDY0cHg7XG4gICAgICAgIGhlaWdodDogNjRweDtcbiAgICB9XG5cbiAgICAudHdvLWZhY3Rvci1sb2dpbi10aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgICB9XG5cbiAgICAudHdvLWZhY3Rvci1sb2dpbi1kZXNjcmlwdGlvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQUNDRVNTSUJJTElUWSBJTVBST1ZFTUVOVFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gRm9jdXMgdmlzaWJsZSBzdHlsZXNcblxuLmJhY2t1cC1jb2RlLWl0ZW0gY29kZTpmb2N1cy12aXNpYmxlLFxuLm1hbnVhbC1lbnRyeS1kZXRhaWxzIHN1bW1hcnk6Zm9jdXMtdmlzaWJsZSB7XG4gICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xufVxuXG4vLyBIaWdoIGNvbnRyYXN0IG1vZGUgc3VwcG9ydFxuQG1lZGlhIChwcmVmZXJzLWNvbnRyYXN0OiBoaWdoKSB7XG5cbiAgICAucXItY29kZS1pbWFnZSB7XG4gICAgICAgIGJvcmRlci13aWR0aDogM3B4O1xuICAgIH1cblxuICAgIC5iYWNrdXAtY29kZS1pdGVtIGNvZGUge1xuICAgICAgICBib3JkZXItd2lkdGg6IDJweDtcbiAgICB9XG59XG5cbi8vIFJlZHVjZWQgbW90aW9uIHN1cHBvcnRcbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG5cbiAgICAuYmFja3VwLWNvZGUtaXRlbSBjb2RlLFxuICAgIC5zZXR1cC1zdGVwcyAuc3RlcCxcbiAgICAubWFudWFsLWVudHJ5LWRldGFpbHMgc3VtbWFyeSxcbiAgICAudHdvLWZhY3Rvci1jb2RlLWlucHV0IHtcbiAgICAgICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICB9XG59XG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSAtIE5vdGlmaWNhdGlvbnMgUGFnZSBTdHlsZXNcbiAqXG4gKiBOb3RpZmljYXRpb24gcHJlZmVyZW5jZXMgcGFnZSB3aXRoIGNhcmQtYmFzZWQgbGF5b3V0IGFuZCBjYXRlZ29yeSBncm91cGluZy5cbiAqIFBhZ2UgY29udGFpbmVyL2hlYWRlci9mb290ZXIgdXNlIHNoYXJlZCBmb3JtLXBhZ2UtKiBjbGFzc2VzIGZyb20gX2Zvcm0tcGFnZS5zY3NzLlxuICogVGhpcyBmaWxlIGNvbnRhaW5zIG9ubHkgbm90aWZpY2F0aW9uLXNwZWNpZmljIHN0eWxlcy5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBJTlRFR1JBVElPTiBNQU5BR0VNRU5UIENBUkRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmludGVncmF0aW9uLW1hbmFnZW1lbnQtY2FyZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcbn1cblxuLmludGVncmF0aW9uLW1hbmFnZW1lbnQtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTUpO1xufVxuXG4uaW50ZWdyYXRpb24tbWFuYWdlbWVudC1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4xNSkgMCUsIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4wNSkgMTAwJSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLmludGVncmF0aW9uLW1hbmFnZW1lbnQtaW5mbyB7XG4gICAgZmxleDogMTtcbn1cblxuLmludGVncmF0aW9uLW1hbmFnZW1lbnQtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMCAwIHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICBsaW5lLWhlaWdodDogMS40O1xufVxuXG4uaW50ZWdyYXRpb24tbWFuYWdlbWVudC1kZXNjcmlwdGlvbiB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW46IDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbn1cblxuLmludGVncmF0aW9uLW1hbmFnZW1lbnQtbGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBwYWRkaW5nOiAwIHZhcigtLXN3cC1zcGFjZS01KSB2YXIoLS1zd3Atc3BhY2UtNSk7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi5pbnRlZ3JhdGlvbi1iYWRnZSB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xLTUpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICBzdmcge1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE5PVElGSUNBVElPTiBHUk9VUFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLm5vdGlmaWNhdGlvbi1ncm91cHMge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7IC8vIFNpbmdsZSBjb2x1bW4gb24gbW9iaWxlXG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTYpO1xufVxuXG4ubm90aWZpY2F0aW9uLWdyb3VwIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5ncm91cC10aXRsZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgbWFyZ2luOiAwIDAgdmFyKC0tc3dwLXNwYWNlLTIpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBOT1RJRklDQVRJT04gQ0FSRFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLm5vdGlmaWNhdGlvbi1jYXJkcyB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLm5vdGlmaWNhdGlvbi1jYXJkIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1ib3JkZXItZGFyayk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctc20pO1xuICAgIH1cblxuICAgICY6Zm9jdXMtd2l0aGluIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgIH1cbn1cblxuLm5vdGlmaWNhdGlvbi1jYXJkLWNvbnRlbnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBmbGV4OiAxO1xuICAgIG1pbi13aWR0aDogMDsgLy8gQWxsb3dzIHRleHQgdHJ1bmNhdGlvblxufVxuXG4ubm90aWZpY2F0aW9uLWNhcmQtaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAzNnB4O1xuICAgIGhlaWdodDogMzZweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCkgMCUsIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4wOCkgMTAwJSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLm5vdGlmaWNhdGlvbi1jYXJkLWluZm8ge1xuICAgIGZsZXg6IDE7XG4gICAgbWluLXdpZHRoOiAwO1xufVxuXG4ubm90aWZpY2F0aW9uLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMCAwIHZhcigtLXN3cC1zcGFjZS0wLTUpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG59XG5cbi5ub3RpZmljYXRpb24tZGVzY3JpcHRpb24ge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luOiAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG59XG5cbi5ub3RpZmljYXRpb24tY2FyZC1jaGFubmVscyB7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENIQU5ORUwgQ0hFQ0tCT1hFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5cbi8vIEJvb3RzdHJhcCBmb3JtLWNoZWNrIGludGVncmF0aW9uIC0gY29tcGFjdCBpbmxpbmUgc3R5bGVcblxuLm5vdGlmaWNhdGlvbi1jYXJkLWNoYW5uZWxzIHtcblxuICAgIC5mb3JtLWNoZWNrIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBtaW4taGVpZ2h0OiBhdXRvO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgLmZvcm0tY2hlY2staW5wdXQge1xuICAgICAgICAgICAgLy8gSGlkZSBjaGVja2JveCB2aXN1YWxseSBidXQga2VlcCBpdCBhY2Nlc3NpYmxlIGZvciBmb3JtIHN1Ym1pc3Npb25cbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICB3aWR0aDogMXB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICAgICAgICAgICAgLy8gQXBwbHkgZm9jdXMgcmluZyB0byBsYWJlbCB3aGVuIGNoZWNrYm94IGlzIGZvY3VzZWRcblxuICAgICAgICAgICAgJjpmb2N1cyArIC5mb3JtLWNoZWNrLWxhYmVsIHtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtLWNoZWNrLWxhYmVsIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0xLTUpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSk7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybS1jaGVjay1pbnB1dDpjaGVja2VkICsgLmZvcm0tY2hlY2stbGFiZWwge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJFU1BPTlNJVkUgREVTSUdOXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIE1vYmlsZSAoPCA3NjhweClcbkBtZWRpYSAod2lkdGggPD0gNzY3Ljk4cHgpIHtcblxuICAgIC5pbnRlZ3JhdGlvbi1tYW5hZ2VtZW50LWhlYWRlciB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcblxuICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuaW50ZWdyYXRpb24tbWFuYWdlbWVudC1saXN0IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxuXG4gICAgLm5vdGlmaWNhdGlvbi1ncm91cHMge1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS01KTtcbiAgICB9XG5cbiAgICAuZ3JvdXAtdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubm90aWZpY2F0aW9uLWNhcmQge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICB9XG5cbiAgICAubm90aWZpY2F0aW9uLWNhcmQtY29udGVudCB7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTItNSk7XG4gICAgfVxuXG4gICAgLm5vdGlmaWNhdGlvbi1jYXJkLWljb24ge1xuICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgaGVpZ2h0OiAzMnB4O1xuXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgICAgIGhlaWdodDogMTZweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5ub3RpZmljYXRpb24tdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICB9XG5cbiAgICAubm90aWZpY2F0aW9uLWRlc2NyaXB0aW9uIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgfVxuXG4gICAgLm5vdGlmaWNhdGlvbi1jYXJkLWNoYW5uZWxzIHtcblxuICAgICAgICAubm90aWZpY2F0aW9uLWNoYW5uZWxzLWxpc3Qge1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEtNSk7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybS1jaGVjayAuZm9ybS1jaGVjay1sYWJlbCB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yLTUpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICAgICAgbWluLWhlaWdodDogNDRweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5ub3RpZmljYXRpb25zLWVtcHR5LXN0YXRlIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTgpIHZhcigtLXN3cC1zcGFjZS00KTtcblxuICAgICAgICAuZW1wdHktc3RhdGUtaWNvbiB7XG4gICAgICAgICAgICB3aWR0aDogNjRweDtcbiAgICAgICAgICAgIGhlaWdodDogNjRweDtcblxuICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogNDhweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDQ4cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBoMyB7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHAge1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIH1cblxuICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBUYWJsZXQgYW5kIERlc2t0b3AgKD4gNzY4cHgpIC0gMiBjb2x1bW4gbGF5b3V0IGZvciBjYXRlZ29yaWVzXG5AbWVkaWEgKHdpZHRoID49IDc2OHB4KSB7XG5cbiAgICAubm90aWZpY2F0aW9uLWdyb3VwcyB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQUklOVCBTVFlMRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhIHByaW50IHtcblxuICAgIC5ub3RpZmljYXRpb24tY2FyZCB7XG4gICAgICAgIGJyZWFrLWluc2lkZTogYXZvaWQ7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBTklNQVRJT05TIC0gRGlzYWJsZWQgZm9yIGNsZWFuZXIsIGZhc3RlciByZW5kZXJpbmdcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gQW5pbWF0aW9ucyByZW1vdmVkIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UgYW5kIGNsZWFuZXIgZmVlbFxuIiwiLyoqXG4gKiBTb2xpZEludm9pY2UgLSBTdWJzY3JpcHRpb24gUGFnZXMgU3R5bGVzXG4gKlxuICogQmlsbGluZywgcGxhbi1waWNrZXIsIGFuZCBzdWJzY3JpcHRpb24tc3RhdGUgcGFnZXMgKHByaWNpbmcsIG92ZXJ2aWV3LFxuICogY2hhbmdlLCBjYW5jZWxsZWQsIHBhdXNlZCwgcGVuZGluZywgdHJpYWwgZXhwaXJlZCkuXG4gKlxuICogQWxsIHZhbHVlcyBhcmUgYC0tc3dwLSpgIGRlc2lnbiB0b2tlbnMuIFN0YXRlIGlzIGNhcnJpZWQgYnkgYSBzb2Z0IGljb25cbiAqIG1lZGFsbGlvbiArIGhlYWRpbmcsIG5ldmVyIGJ5IGEgZGVjb3JhdGl2ZSBhY2NlbnQgc3RyaXBlLCBhIGNvbG9yZWQgZ2xvdywgb3JcbiAqIGEgbG9vcGluZyBhbmltYXRpb24uIENvbG91ciBzdGF5cyBvbiB0aGUgYnJhbmQ6IFRydXN0IEdyZWVuIGlzIHRoZSBvbmx5XG4gKiBhY2NlbnQ7IHRoZXJlIGlzIG5vIFRhYmxlciBibHVlIGFuZCBubyBhbWJlci1ieS1hY2NpZGVudCBoZXJlLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJBU0UgUEFHRSBMQVlPVVRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnN1YnNjcmlwdGlvbi1wYWdlIHtcbiAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoIC0gdmFyKC0tc3dwLXNwYWNlLTI0KSk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0xMikgdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4uc3Vic2NyaXB0aW9uLWNvbnRhaW5lciB7XG4gICAgbWF4LXdpZHRoOiA2NDBweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTEwKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMteGwpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3cteGwpO1xuICAgIGFuaW1hdGlvbjogc3Vic2NyaXB0aW9uLWZhZGUtaW4gMC4zcyBlYXNlLW91dDtcbn1cblxuQGtleWZyYW1lcyBzdWJzY3JpcHRpb24tZmFkZS1pbiB7XG5cbiAgICBmcm9tIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwcHgpO1xuICAgIH1cblxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSEVBREVSIFNFQ1RJT05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gUGFnZSBoZWFkZXIgKGFib3ZlIHN1YnNjcmlwdGlvbiBjb250YWluZXIpXG5cbi5zdWJzY3JpcHRpb24tcGFnZS1oZWFkZXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1zbSk7XG5cbiAgICAuaDQge1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgfVxufVxuXG4vLyBTb2Z0IG1lZGFsbGlvbiwgZmxhdCB0aW50ICsgdGludGVkIGdseXBoICh0aGUgc2FtZSBsYW5ndWFnZSB0aGUgZGFzaGJvYXJkXG4vLyBlbXB0eSBzdGF0ZXMgYW5kIG9uYm9hcmRpbmcgd2l6YXJkIHVzZSkuIE5vIGdyYWRpZW50IGRpc2MuXG5cbi5zdWJzY3JpcHRpb24taWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiA1NnB4O1xuICAgIGhlaWdodDogNTZweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXhsKTtcbiAgICBtYXJnaW46IDAgYXV0byB2YXIoLS1zd3Atc3BhY2UtOCk7XG5cbiAgICBzdmcge1xuICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgIH1cbn1cblxuLnN1YnNjcmlwdGlvbi1pY29uLXdhcm5pbmcge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC13YXJuaW5nLWxpZ2h0KTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXdhcm5pbmcpO1xufVxuXG4uc3Vic2NyaXB0aW9uLWljb24tZGFuZ2VyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0KTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLWRhbmdlcik7XG59XG5cbi5zdWJzY3JpcHRpb24taWNvbi1pbmZvIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtaW5mby1saWdodCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1pbmZvKTtcbn1cblxuLnN1YnNjcmlwdGlvbi1pY29uLXBhdXNlZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktMTAwKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbn1cblxuLnN1YnNjcmlwdGlvbi10aXRsZSB7XG4gICAgZm9udC1zaXplOiAxLjc1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMCAwIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcbiAgICBsaW5lLWhlaWdodDogMS4yO1xufVxuXG4uc3Vic2NyaXB0aW9uLXN1YnRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBtYXJnaW46IDAgMCB2YXIoLS1zd3Atc3BhY2UtMTApO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjc7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJFTkVGSVRTIFNFQ1RJT05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnN1YnNjcmlwdGlvbi1iZW5lZml0cyB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtOCk7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXhzKTtcblxuICAgIGgzIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1tZCk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgbWFyZ2luOiAwIDAgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIHVsIHtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cblxuICAgIGxpIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yLTUpIDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgICAgIGhlaWdodDogMjBweDtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gQ2FuY2VsbGVkIHBhZ2U6IGxvY2tlZCBmZWF0dXJlcyBhcmUgbXV0ZWQsIG5vdCBhbGFybWVkIGluIHJlZC4gTG9zaW5nIGFjY2Vzc1xuLy8gdG8gYSBmZWF0dXJlIHlvdSBjaG9zZSB0byBjYW5jZWwgaXMgaW5mb3JtYXRpb24sIG5vdCBhbiBlcnJvci5cblxuLnN1YnNjcmlwdGlvbi1jYW5jZWxsZWQtcGFnZSAuc3Vic2NyaXB0aW9uLWJlbmVmaXRzIGxpIHN2ZyB7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQUNUSU9OUyBTRUNUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5zdWJzY3JpcHRpb24tYWN0aW9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS00KTtcblxuICAgIC5idG4tbGcge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMy01KSB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbWQpO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcbiAgICAgICAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctbWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LW1kKSwgdmFyKC0tc3dwLXJpbmctcHJpbWFyeSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYnRuLWdob3N0IHtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDE4cHg7XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctcHJpbWFyeSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNUQVRFLVNQRUNJRklDIFBBR0VTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTdGF0ZSBpcyBjYXJyaWVkIGJ5IHRoZSBpY29uIG1lZGFsbGlvbiArIGhlYWRpbmcgKyBjb3B5LiBUaGUgcHJldmlvdXMgNHB4XG4vLyB0b3AgYWNjZW50IHN0cmlwZXMgb24gYC5zdWJzY3JpcHRpb24tY29udGFpbmVyYCB3ZXJlIHRoZSBhY2NlbnQtc3RyaXBlXG4vLyBhbnRpLXBhdHRlcm4gKHRoZSBcIj4xcHggY29sb3VyZWQgYm9yZGVyXCIgcnVsZSkgcm90YXRlZCB0byB0aGUgdG9wIGVkZ2UsIGFuZFxuLy8gdGhlIHJlZCBkYW5nZXIgZnJhbWluZyBvbiB0aGUgY2FuY2VsbGVkIHBhZ2Ugc2NvbGRlZCBhIHVzZXIgZm9yIGEgY2hvaWNlXG4vLyB0aGV5IG1hZGU7IGJvdGggYXJlIGdvbmUuXG5cbi5zdWJzY3JpcHRpb24tcGF1c2VkLXBhZ2Uge1xuICAgIC8vIFBhdXNlZCBiZW5lZml0cyBhcmUgbmVpdGhlciBhY2hpZXZlbWVudHMgKGdyZWVuKSBub3IgbG9zc2VzIChyZWQpIC0gdGhleVxuICAgIC8vIGFyZSBzaW1wbHkgb24gaG9sZC5cblxuICAgIC5zdWJzY3JpcHRpb24tYmVuZWZpdHMgbGkgc3ZnIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBTEVSVCBCQU5ORVIgKFRvcCBvZiBwYWdlIGluamVjdGlvbilcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmFsZXJ0LWJhbm5lciB7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICBib3JkZXItbGVmdDogMDtcbiAgICBib3JkZXItcmlnaHQ6IDA7XG4gICAgYm9yZGVyLXRvcDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtNCk7XG5cbiAgICAuZC1mbGV4IHtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9XG5cbiAgICAuYWxlcnQtaWNvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICB9XG5cbiAgICAuYnRuLXNtIHtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxuXG4gICAgLy8gV2FybmluZyBiYW5uZXIgKHRyaWFsKVxuXG4gICAgJi5hbGVydC13YXJuaW5nIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXdhcm5pbmctbGlnaHRlcik7XG4gICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLXN3cC13YXJuaW5nLWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuXG4gICAgICAgIC5idG4td2FybmluZyB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atd2FybmluZyk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtaW52ZXJzZSk7XG4gICAgICAgICAgICBib3JkZXI6IG5vbmU7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC13YXJuaW5nLWhvdmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIERhbmdlciBiYW5uZXIgKGNhbmNlbGxlZClcblxuICAgICYuYWxlcnQtZGFuZ2VyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodGVyKTtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tc3dwLWRhbmdlci1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcblxuICAgICAgICAuYnRuLWRhbmdlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1pbnZlcnNlKTtcbiAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1ob3Zlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBSSUNJTkcgUEFHRVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uc3Vic2NyaXB0aW9uLXByaWNpbmctcGFnZSB7XG5cbiAgICAuc3Vic2NyaXB0aW9uLWNvbnRhaW5lciB7XG4gICAgICAgIG1heC13aWR0aDogMTEwMHB4O1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxufVxuXG4ucGxhbi1jYXJkIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0cmFuc2l0aW9uOlxuICAgICAgICBib3gtc2hhZG93IHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpLFxuICAgICAgICBib3JkZXItY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSk7XG5cbiAgICAvLyBIb3ZlciBsaWZ0cyBieSBzaGFkb3cgb25seSAobm8gdHJhbnNmb3JtKSwgcGVyIHRoZSBkZXNpZ24gc3lzdGVtJ3MgY2FyZFxuICAgIC8vIHJ1bGVzLlxuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctbWQpO1xuICAgIH1cblxuICAgIC8vIFJlc2VydmUgdGhlIGJhbm5lcidzIGhlaWdodCBvbiBldmVyeSBwYWlkIGNhcmQgc28gdGhlIHByaWNlIGJhc2VsaW5lIGlzXG4gICAgLy8gdGhlIHNhbWUgd2hldGhlciBvciBub3QgdGhlIGNhcmQgY2FycmllcyBhIGJhbm5lciAodGhlIGJhbm5lciBpdHNlbGYgaXNcbiAgICAvLyB0YWtlbiBvdXQgb2YgZmxvdyBiZWxvdykuXG5cbiAgICA+IC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTkpO1xuICAgIH1cbn1cblxuLnBsYW4tY2FyZC1yZWNvbW1lbmRlZCB7XG4gICAgYm9yZGVyLXdpZHRoOiAycHg7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1tZCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy14bCk7XG4gICAgfVxufVxuXG4vLyBSaWJib24gYWNyb3NzIHRoZSB0b3Agb2YgdGhlIGNhcmQuIEFic29sdXRlbHkgcG9zaXRpb25lZCBzbyBpdCBuZXZlciBwdXNoZXNcbi8vIHRoZSBwcmljZSBkb3duICh0aGUgY2FyZCBib2R5IHJlc2VydmVzIG1hdGNoaW5nIHRvcCBwYWRkaW5nIGFib3ZlKSwgYW5kIGluXG4vLyBUcnVzdCBHcmVlbiAtIG5vdCB0aGUgVGFibGVyLWJsdWUgaXQgdXNlZCB0byBmYWxsIGJhY2sgdG8uXG5cbi5wbGFuLWNhcmQtYmFubmVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGluc2V0LWlubGluZTogMDtcbiAgICB6LWluZGV4OiAxO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1pbnZlcnNlKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG5cbiAgICBzdmcge1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICB9XG59XG5cbi8vIEZyZWUgcGxhbjogcHJlc2VudGVkIGFzIGEgc2xpbSBzZWNvbmRhcnkgY2FyZCBiZWxvdyB0aGUgbWFpbiBncmlkLlxuXG4ucGxhbi1jYXJkLWZyZWUge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXI6IDFweCBkYXNoZWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICB0cmFuc2l0aW9uOlxuICAgICAgICBib3JkZXItY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSksXG4gICAgICAgIGJhY2tncm91bmQgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICB9XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICB9XG5cbiAgICAucGxhbi1jYXJkLWZlYXR1cmVzIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG5cbiAgICAgICAgbGkge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ucGxhbi1jYXJkLWZyZWUtaGVhZGVyIHtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBtaW4td2lkdGg6IDA7XG59XG5cbi5wbGFuLWNhcmQtZnJlZS1jdGEge1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4vLyBJbmxpbmUgZmVhdHVyZSBsaXN0IGZsb3dzIGhvcml6b250YWxseSBhbmQgd3JhcHM7IGtlZXBzIHRoZSBmcmVlIHN0cmlwIHNsaW0uXG5cbi5wbGFuLWNhcmQtZmVhdHVyZXMtaW5saW5lIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG5cbiAgICBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB9XG59XG5cbi8vIFRoZSBkaXNwbGF5IHByaWNlIHJlbmRlcnMgdGhyb3VnaCB0aGUgYC5tb25leWAgY29tcG9uZW50IChgbW9uZXktLXRvdGFsYCksXG4vLyB3aGljaCBpbmhlcml0cyBpdHMgc2l6ZSBmcm9tIGhlcmU7IHRoZSBpbnRlcnZhbCBzaXRzIHF1aWV0bHkgYmVzaWRlIGl0LlxuXG4ucGxhbi1jYXJkLXByaWNlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LTR4bCk7XG4gICAgbGluZS1oZWlnaHQ6IDEuMTtcbn1cblxuLnBsYW4tY2FyZC1pbnRlcnZhbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbm9ybWFsKTtcbn1cblxuLnBsYW4tY2FyZC1mZWF0dXJlcyB7XG4gICAgdGV4dC1hbGlnbjogc3RhcnQ7XG59XG5cbi8vIEEgY291cG9uIC8gcHJvbW8gY2FyZCAodHJpYWwtZXhwaXJlZCBwYWdlKS4gVG9rZW5pc2VkIGdyZWVuLXRpbnQgcGFuZWwsXG4vLyByZXBsYWNpbmcgdGhlIG9mZi1zeXN0ZW0gVGFibGVyIGBhenVyZWAgdXRpbGl0aWVzLlxuXG4uc3Vic2NyaXB0aW9uLWNvdXBvbiB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuXG4gICAgLy8gVGhlIGNvdXBvbiBjb2RlIGl0c2VsZiwgaW4gc29saWQgVHJ1c3QgR3JlZW4gc28gaXQgcmVhZHMgYXMgdGhlIG9uZSB0aGluZ1xuICAgIC8vIHRvIGNvcHkuIFdpdGhvdXQgdGhpcyBhIGJhcmUgYC5iYWRnZWAgZmFsbHMgYmFjayB0byB0aGUgdGhlbWUncyBhbWJlci5cblxuICAgIC5iYWRnZSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LWludmVyc2UpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gV0VMQ09NRSAvIEFDVElWQVRJT04gUEFHRSAoY2FyZC1yZXF1aXJlZCBvbmJvYXJkaW5nKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gT25lIHBsYW4sIG9uZSBjYWxsIHRvIGFjdGlvbi4gVGhlIHBhZ2UgcmVhc3N1cmVzIHJhdGhlciB0aGFuIHNlbGxzOiB0aGVcbi8vIHBsYW4gaXMgYSBjYWxtIHN1bW1hcnksIG5vdCBhIHBpY2stbWUgY2FyZCwgYW5kIHRoZSB0aHJlZSBndWFyYW50ZWVzIGJlbG93IGl0XG4vLyBleGlzdCB0byBtZWx0IHRoZSBoZXNpdGF0aW9uIG9mIGVudGVyaW5nIGEgY2FyZCBiZWZvcmUgdGhlIHRyaWFsIHN0YXJ0cy5cblxuLnN1YnNjcmlwdGlvbi13ZWxjb21lLXBhZ2Uge1xuXG4gICAgLnN1YnNjcmlwdGlvbi1jb250YWluZXIge1xuICAgICAgICBtYXgtd2lkdGg6IDcyMHB4O1xuICAgIH1cbn1cblxuLndlbGNvbWUtcGxhbiB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy14cyk7XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIH1cblxuICAgIC8vIFRoZSBwbGFuJ3Mgb3duIGZlYXR1cmUgbGlzdCBpcyByZXVzZWQgZnJvbSB0aGUgcGlja2VyOyBoZXJlIGl0IHNpdHMgaW5zaWRlXG4gICAgLy8gYSBzdW1tYXJ5IGNhcmQsIHNvIGRyb3AgdGhlIHBpY2tlcidzIGJvdHRvbSBtYXJnaW4uXG5cbiAgICAucGxhbi1jYXJkLWZlYXR1cmVzIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG59XG5cbi53ZWxjb21lLXBsYW4tcHJpY2luZyB7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLndlbGNvbWUtcGxhbi1wcmljZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC0yeGwpO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuMTtcbn1cblxuLy8gVGhyZWUgcXVpZXQgcmVhc3N1cmFuY2VzOyB0aGUgQm9vdHN0cmFwIGdyaWQgc3RhY2tzIHRoZW0gb24gbW9iaWxlLlxuXG4ud2VsY29tZS1yZWFzc3VyZS1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTItNSk7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG5cbiAgICBzdmcge1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTAtNSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRVNQT05TSVZFIERFU0lHTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgKHdpZHRoIDw9IDc2Ny45OHB4KSB7XG5cbiAgICAuc3Vic2NyaXB0aW9uLXBhZ2Uge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNikgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIH1cblxuICAgIC5zdWJzY3JpcHRpb24tcGFnZS1oZWFkZXIge1xuXG4gICAgICAgIC5kLWZsZXgge1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5idG4tZ3JvdXAge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgICAgIC5idG4ge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnN1YnNjcmlwdGlvbi1jb250YWluZXIge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgfVxuXG4gICAgLnN1YnNjcmlwdGlvbi1pY29uIHtcbiAgICAgICAgd2lkdGg6IDQ4cHg7XG4gICAgICAgIGhlaWdodDogNDhweDtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgd2lkdGg6IDI4cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDI4cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuc3Vic2NyaXB0aW9uLXRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjM3NXJlbTtcbiAgICB9XG5cbiAgICAuc3Vic2NyaXB0aW9uLXN1YnRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1tZCk7XG4gICAgfVxuXG4gICAgLnN1YnNjcmlwdGlvbi1iZW5lZml0cyB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG5cbiAgICAuc3Vic2NyaXB0aW9uLWFjdGlvbnMge1xuXG4gICAgICAgIC5idG4ge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYWxlcnQtYmFubmVyIHtcblxuICAgICAgICAuZC1mbGV4IHtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmJ0bi1zbSB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gVGFibGV0IGFkanVzdG1lbnRzXG5AbWVkaWEgKHdpZHRoID49IDc2OHB4KSBhbmQgKHdpZHRoIDw9IDk5MS45OHB4KSB7XG5cbiAgICAuc3Vic2NyaXB0aW9uLWNvbnRhaW5lciB7XG4gICAgICAgIG1heC13aWR0aDogNjAwcHg7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS04KTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFDQ0VTU0lCSUxJVFlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gUmVkdWNlZCBtb3Rpb246IGRyb3AgdGhlIGNvbnRhaW5lciByZXZlYWwgYW5kIHRoZSBob3ZlciBzaGFkb3cgdHJhbnNpdGlvbnMuXG4vLyBUaGVyZSBpcyBubyBsb29waW5nL3B1bHNpbmcgYW5pbWF0aW9uIGxlZnQgaW4gdGhpcyBmaWxlIHRvIGd1YXJkLlxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcblxuICAgIC5zdWJzY3JpcHRpb24tY29udGFpbmVyIHtcbiAgICAgICAgYW5pbWF0aW9uOiBub25lO1xuICAgIH1cblxuICAgIC5wbGFuLWNhcmQsXG4gICAgLnBsYW4tY2FyZC1mcmVlLFxuICAgIC5zdWJzY3JpcHRpb24tYWN0aW9ucyAuYnRuLWxnIHtcbiAgICAgICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBSSU5UIFNUWUxFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgcHJpbnQge1xuXG4gICAgLnN1YnNjcmlwdGlvbi1wYWdlIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICB9XG5cbiAgICAuc3Vic2NyaXB0aW9uLWNvbnRhaW5lciB7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIH1cblxuICAgIC5zdWJzY3JpcHRpb24tYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLmFsZXJ0LWJhbm5lciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBPbmJvYXJkaW5nIENoZWNrbGlzdCAtIERhc2hib2FyZCB3aWRnZXRcbiAqXG4gKiBUaGUgZmlyc3QgY29tcG9uZW50IGEgbmV3IHVzZXIgbWVldHMuIFByaW9yaXRpZXMsIGluIG9yZGVyOlxuICogICAxLiBDb252ZXkgc3RhdGUgKHRvZG8gLyBkb25lIC8gaG92ZXJlZCAvIGZvY3VzZWQpLiBOZXZlciBkZWNvcmF0aW9uLlxuICogICAyLiBTdGF5IG9uIHRoZSBTb2xpZEludm9pY2UgZGVzaWduIHN5c3RlbSAtIGAtLXN3cC0qYCB0b2tlbnMgb25seS5cbiAqICAgMy4gUmVhZCBjb3JyZWN0bHkgd2hldGhlciBhIHJvdyBpcyBhbiA8YT4gKGFjdGlvbmFibGUpIG9yIGEgPHNwYW4+IChkb25lKS5cbiAqXG4gKiBTdHJ1Y3R1cmUgY29tZXMgZnJvbSBUYWJsZXIgKGBjYXJkYCwgYGNhcmQtc3RhbXBgLCBgY2FyZC1saW5rLXBvcGAsXG4gKiBgb2ZmY2FudmFzYCwgYHZpc3VhbGx5LWhpZGRlbmApLiBUaGlzIGZpbGUgb25seSBhZGRzIHdoYXQgVGFibGVyIGRvZXMgbm90XG4gKiBhbHJlYWR5IHByb3ZpZGUgLSBpdCBkb2VzIG5vdCByZXN0YXRlIG9yIGZpZ2h0IGl0LlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNVQ0NFU1MgQ0FSRCAtIGFsbCBzdGVwcyBjb21wbGV0ZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBNYXRjaGVzIGA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWFjdGl2ZVwiPmAuIE5vdCBpbnRlcmFjdGl2ZSAoaXRzIG9ubHkgY29udHJvbFxuLy8gaXMgdGhlIGRpc21pc3MgYnV0dG9uIGluc2lkZSksIHNvIGl0IGdldHMgbm8gaG92ZXIgc3RhdGUgLSBhIGxpZnQgaGVyZSB3b3VsZFxuLy8gYmUgYSBmYWxzZSBhZmZvcmRhbmNlLiBBIGZsYXQgc3VjY2VzcyB0aW50IHBsdXMgYSBmdWxsIDFweCBib3JkZXIgY2Fycmllc1xuLy8gdGhlIHN0YXRlOyB0aGUgY2FyZCBrZWVwcyBUYWJsZXIncyByZXN0aW5nIGBzaGFkb3ctc21gLlxuXG4uY2FyZC5jYXJkLWFjdGl2ZSB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1Y2Nlc3MtbGlnaHRlcik7XG59XG5cbi8vIERlY29yYXRpdmUgd2F0ZXJtYXJrIGJlaGluZCB0aGUgY2FyZCB0aXRsZSAoVGFibGVyIGAuY2FyZC1zdGFtcGApLlxuXG4uY2FyZC1zdGFtcC1pY29uIHtcbiAgICBvcGFjaXR5OiAwLjE1O1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDSEVDS0xJU1QgSVRFTVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNoZWNrbGlzdC1pdGVtcy13cmFwcGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMi01KTtcbn1cblxuLy8gUmVuZGVycyBhcyA8YT4gd2hpbGUgaW5jb21wbGV0ZSBhbmQgPHNwYW4+IG9uY2UgY29tcGxldGUsIHNvIGV2ZXJ5XG4vLyBpbnRlcmFjdGl2ZSBzdHlsZSBpcyBnYXRlZCBiZWhpbmQgYDpub3QoLmNvbXBsZXRlZClgLlxuXG4uY2hlY2tsaXN0LWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgdHJhbnNpdGlvbjpcbiAgICAgICAgY29sb3IgdmFyKC0tc3dwLWR1cmF0aW9uLWZhc3QpIHZhcigtLXN3cC1lYXNlLW91dCksXG4gICAgICAgIGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLWR1cmF0aW9uLWZhc3QpIHZhcigtLXN3cC1lYXNlLW91dCksXG4gICAgICAgIGJvcmRlci1jb2xvciB2YXIoLS1zd3AtZHVyYXRpb24tZmFzdCkgdmFyKC0tc3dwLWVhc2Utb3V0KSxcbiAgICAgICAgYm94LXNoYWRvdyB2YXIoLS1zd3AtZHVyYXRpb24tZmFzdCkgdmFyKC0tc3dwLWVhc2Utb3V0KTtcblxuICAgIC8vIEhvdmVyIGFuZCBmb2N1cyByZXNvbHZlIHRvIHRoZSBzYW1lIHN1cmZhY2Ugc28gcG9pbnRlciBhbmQga2V5Ym9hcmRcbiAgICAvLyB1c2VycyBhcmUgc2hvd24gdGhlIHNhbWUgdGFyZ2V0OyBmb2N1cyBhZGRzIHRoZSBoYWxvIGJlbG93LlxuXG4gICAgJjpub3QoLmNvbXBsZXRlZCk6aXMoOmhvdmVyLCA6Zm9jdXMtdmlzaWJsZSkge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG5cbiAgICAgICAgLmNoZWNrbGlzdC1pdGVtLWFjdGlvbiB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRm9jdXMgSGFsby4gYC0tc3dwLXJpbmctcHJpbWFyeWAgaXMgYSAxNSUtYWxwaGEgZ3JlZW4gKH4xLjE6MSBvbiB3aGl0ZSlcbiAgICAvLyBhbmQgY2Fubm90IGNhcnJ5IGEgZm9jdXMgaW5kaWNhdG9yIG9uIGl0cyBvd24sIHNvIHRoZSBib3JkZXIgc2hpZnRzIHRvXG4gICAgLy8gZnVsbCBgLS1zd3AtcHJpbWFyeWAgYWxvbmdzaWRlIGl0IHRvIG1lZXQgV0NBRyAyLjEgU0MgMi40LjExLlxuXG4gICAgJjpub3QoLmNvbXBsZXRlZCk6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgIH1cblxuICAgIC8vIERvbmUuIFNpZ25hbGxlZCBieSB0aW50ICsgc3RyaWtldGhyb3VnaCArIHdlaWdodCBkcm9wICsgZGUtZW1waGFzaXMsIHNvXG4gICAgLy8gaXQgc3Vydml2ZXMgd2l0aG91dCBodWUuIFRoZSBwcm9ncmFtbWF0aWMgc2lnbmFsIGlzIEE1J3NcbiAgICAvLyB2aXN1YWxseS1oaWRkZW4gc3RhdHVzIHRleHQsIG5vdCBhbnl0aGluZyBpbiBoZXJlLlxuXG4gICAgJi5jb21wbGV0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodGVyKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodCk7XG4gICAgICAgIGN1cnNvcjogZGVmYXVsdDtcblxuICAgICAgICAuaXRlbS1uYW1lIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbm9ybWFsKTtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoO1xuICAgICAgICB9XG5cbiAgICAgICAgLml0ZW0taWNvbiB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbGlnaHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTm90aGluZyBsZWZ0IHRvIG5hdmlnYXRlIHRvLlxuXG4gICAgICAgIC5jaGVja2xpc3QtaXRlbS1hY3Rpb24ge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gQ29tcGxldGlvbiBtYXJrZXIuIEdyZWVuIGNoZWNrIHdoZW4gZG9uZTsgYSBuZXV0cmFsIHJpbmcgd2hlbiBub3QuXG5cbi5jaGVja2xpc3QtaXRlbS1pY29uIHtcbiAgICB3aWR0aDogMjBweDtcbiAgICBoZWlnaHQ6IDIwcHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0wLTUpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG59XG5cbi5jaGVja2xpc3QtaXRlbTpub3QoLmNvbXBsZXRlZCkgLmNoZWNrbGlzdC1pdGVtLWljb24ge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtZ3JheS00MDApO1xufVxuXG4uY2hlY2tsaXN0LWl0ZW0tY29udGVudCB7XG4gICAgZmxleDogMTtcbiAgICBtaW4td2lkdGg6IDA7XG59XG5cbi5jaGVja2xpc3QtaXRlbS1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG59XG5cbi8vIFNjb3BlZCB0byB0aGUgcm93OiBgaXRlbS1pY29uYCAvIGBpdGVtLW5hbWVgIGFyZSB0b28gZ2VuZXJpYyB0byBvd24gZ2xvYmFsbHkuXG5cbi5jaGVja2xpc3QtaXRlbSAuaXRlbS1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbn1cblxuLmNoZWNrbGlzdC1pdGVtIC5pdGVtLW5hbWUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG59XG5cbi5jaGVja2xpc3QtaXRlbS1kZXNjcmlwdGlvbiB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW46IDA7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXN3cC1sZWFkaW5nLW5vcm1hbCk7XG59XG5cbi8vIEFsd2F5cyB2aXNpYmxlLCBub3QgaG92ZXItcmV2ZWFsZWQ6IGhvdmVyIG5ldmVyIGZpcmVzIG9uIHRvdWNoLCBzbyBhXG4vLyBob3Zlci1vbmx5IGFmZm9yZGFuY2UgaXMgaW52aXNpYmxlIHRvIGhhbGYgdGhlIHVzZXJzIHdobyBuZWVkIGl0LlxuXG4uY2hlY2tsaXN0LWl0ZW0tYWN0aW9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDE4cHg7XG4gICAgaGVpZ2h0OiAxOHB4O1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0wLTUpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1saWdodCk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE9GRkNBTlZBUyBQQU5FTFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ub25ib2FyZGluZy1vZmZjYW52YXMge1xuICAgIHdpZHRoOiA0MjBweDtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG59XG5cbi8vIFByb2dyZXNzIHN1bW1hcnkgY2FyZCBhdCB0aGUgdG9wIG9mIHRoZSBwYW5lbC4gU2NvcGVkIHRvIHRoaXMgd2lkZ2V0IC0gdGhlXG4vLyB1bnNjb3BlZCBgLm9mZmNhbnZhcy1ib2R5IC5jYXJkYCBpdCByZXBsYWNlcyB3b3VsZCByZXN0eWxlIGV2ZXJ5IGNhcmQgaW5cbi8vIGV2ZXJ5IG9mZmNhbnZhcyBpbiB0aGUgYXBwLlxuXG4ub25ib2FyZGluZy1vZmZjYW52YXMgLm9mZmNhbnZhcy1ib2R5IC5jYXJkIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcbn1cblxuLm9uYm9hcmRpbmctcHJvZ3Jlc3MtbGFiZWwge1xuICAgIG1pbi13aWR0aDogM3JlbTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQUNDRVNTSUJJTElUWVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBObyBtb3Rpb24gc3Vydml2ZXMgaW4gdGhpcyBmaWxlIC0gbm8gdHJhbnNmb3Jtcywgbm8ga2V5ZnJhbWVzLiBXaGF0IGlzIGxlZnRcbi8vIGlzIGEgMTUwbXMgY29sb3VyL3NoYWRvdyBjcm9zcy1mYWRlLCB3aGljaCBpcyBub3QgdmVzdGlidWxhci4gVGhpcyBibG9jayBpc1xuLy8gZGVmZW5zaXZlIG9ubHksIGFuZCBpcyBwb2ludGVkIGF0IGEgc2VsZWN0b3IgdGhhdCBhY3R1YWxseSBleGlzdHMuXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuXG4gICAgLmNoZWNrbGlzdC1pdGVtIHtcbiAgICAgICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICB9XG59XG4iLCIvKipcbiAqIE9uYm9hcmRpbmcgV2l6YXJkIC0gdGhlIGZpcnN0LXJ1biBmbG93ICgvb25ib2FyZGluZylcbiAqXG4gKiBUaGlzIGlzIHRoZSBmaXJzdCBzY3JlZW4gZXZlcnkgbmV3IHVzZXIgbWVldHM6IHBvc3QtaW5zdGFsbCBhbmQgcG9zdC1zaWdudXAsXG4gKiBhIHVzZXIgd2l0aCBubyBjb21wYW55IGlzIHJlZGlyZWN0ZWQgaGVyZSB0byBjcmVhdGUgdGhlaXIgY29tcGFueSwgYW5cbiAqIG9wdGlvbmFsIGZpcnN0IGNsaWVudCwgYW5kIGEgZmlyc3QgaW52b2ljZS5cbiAqXG4gKiBJdCB1c2VkIHRvIGJlIHN0eWxlZCB3aXRoIGlubGluZSA8c3R5bGU+IGJsb2NrcyB0aGF0IGNvbnRyYWRpY3RlZCB0aGUgZGVzaWduXG4gKiBzeXN0ZW0gd2hvbGVzYWxlIC0gQm9vdHN0cmFwIGJsdWUgKCMwNjZmZDEpIGluc3RlYWQgb2YgVHJ1c3QgR3JlZW4sIGdyYWRpZW50c1xuICogb24gdGhlIGNhbnZhcyAvIHN0ZXAgaWNvbiAvIGJhZGdlLCBhIDNweCBgYm9yZGVyLWxlZnRgIHNpZGUtc3RyaXBlIG9uIHRoZVxuICogYmVuZWZpdHMgYm94IChhIGhhcmQgYmFuKSwgYW5kIGEgYm91bmNlL2VsYXN0aWMgY2VsZWJyYXRpb24gd2l0aCBhbiBpbmZpbml0ZVxuICogcHVsc2UgYW5kIG5vIHJlZHVjZWQtbW90aW9uIGZhbGxiYWNrLiBUaGlzIGZpbGUgcmVwbGFjZXMgYWxsIG9mIGl0IHdpdGhcbiAqIGAtLXN3cC0qYCB0b2tlbnMsIGZsYXQgc3VyZmFjZXMsIGFuZCBlYXNlLW91dCBtb3Rpb24uXG4gKlxuICogRXZlcnl0aGluZyBpcyBzY29wZWQgdW5kZXIgYC5vbmJvYXJkaW5nLWNvbnRhaW5lcmAgYmVjYXVzZSB0aGUgY2xhc3MgbmFtZXNcbiAqIChgc3RlcC1pY29uYCwgYHN0ZXAtYmVuZWZpdHNgLCBgd2VsY29tZS1iYWRnZWAsIC4uLikgYXJlIGdlbmVyaWMgYW5kIHVzZWRcbiAqIG5vd2hlcmUgZWxzZSAtIHNjb3Bpbmcga2VlcHMgdGhlbSBmcm9tIGxlYWtpbmcgaW50byB0aGUgcmVzdCBvZiB0aGUgYXBwLlxuICpcbiAqIFN0cnVjdHVyZSAoQm9vdHN0cmFwIGdyaWQsIGBjYXJkYCwgYGJ0bmAsIGBmb3JtLWNvbnRyb2xgLCBgcHJvZ3Jlc3NgKSBjb21lc1xuICogZnJvbSBUYWJsZXI7IHRoaXMgZmlsZSBvbmx5IHN0eWxlcyB0aGUgY3VzdG9tIHdpemFyZCBjaHJvbWUuXG4gKi9cblxuLm9uYm9hcmRpbmctY29udGFpbmVyIHtcbiAgICAvLyBQYXBlci1vbi1kZXNrIGNhbnZhczogdGhlIGFwcCdzIG93biBmbGF0IGJvZHkgYmFja2dyb3VuZC4gVGhlIHByZXZpb3VzXG4gICAgLy8gZ3JleSBkaWFnb25hbCBncmFkaWVudCB3YXMgZGVjb3JhdGlvbiB0aGUgZGVzaWduIHN5c3RlbSBkb2VzIG5vdCBwZXJtaXQuXG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWJvZHktYmcpO1xuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gUFJPR1JFU1MgSEVBREVSXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgICAub25ib2FyZGluZy1wcm9ncmVzcyB7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3cteHMpO1xuICAgIH1cblxuICAgIC5zdGVwLWluZGljYXRvciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIH1cblxuICAgIC8vIFVwY29taW5nIHN0ZXAgYXQgcmVzdDogbmV1dHJhbCBzbGF0ZS5cblxuICAgIC5zdGVwLW51bWJlciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB3aWR0aDogMnJlbTtcbiAgICAgICAgaGVpZ2h0OiAycmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS0xMDApO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtZHVyYXRpb24tc2xvdykgdmFyKC0tc3dwLWVhc2Utb3V0KSxcbiAgICAgICAgICAgIGNvbG9yIHZhcigtLXN3cC1kdXJhdGlvbi1zbG93KSB2YXIoLS1zd3AtZWFzZS1vdXQpLFxuICAgICAgICAgICAgYm94LXNoYWRvdyB2YXIoLS1zd3AtZHVyYXRpb24tc2xvdykgdmFyKC0tc3dwLWVhc2Utb3V0KTtcbiAgICB9XG5cbiAgICAvLyBSZWFjaGVkICh0aGUgY3VycmVudCBzdGVwIG9yIGFuIGVhcmxpZXIgb25lKTogYSBzb2Z0IGdyZWVuIHRpbnQuXG5cbiAgICAuc3RlcC1pbmRpY2F0b3IuYWN0aXZlIC5zdGVwLW51bWJlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWRhcmspO1xuICAgIH1cblxuICAgIC8vIFRoZSBjdXJyZW50IHN0ZXA6IGZpbGxlZCBUcnVzdCBHcmVlbiB3aXRoIHRoZSBzdGFuZGFyZCBmb2N1cyBoYWxvLCBzbyB0aGVcbiAgICAvLyB1c2VyJ3MgcG9zaXRpb24gcmVhZHMgYXQgYSBnbGFuY2UuXG5cbiAgICAuc3RlcC1pbmRpY2F0b3IuY3VycmVudCAuc3RlcC1udW1iZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1pbnZlcnNlKTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgLnN0ZXAtbGFiZWwge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXN3cC1kdXJhdGlvbi1zbG93KSB2YXIoLS1zd3AtZWFzZS1vdXQpO1xuICAgIH1cblxuICAgIC8vIHByaW1hcnktZGFyayAoIzFmNmMyOSkgb24gdGhlIHdoaXRlIGhlYWRlciBob2xkcyBBQSBjb21mb3J0YWJseTsgdGhlIHJhd1xuICAgIC8vIHByaW1hcnkgd291bGQgbm90IGZvciB0ZXh0IHRoaXMgc21hbGwuXG5cbiAgICAuc3RlcC1pbmRpY2F0b3IuYWN0aXZlIC5zdGVwLWxhYmVsLFxuICAgIC5zdGVwLWluZGljYXRvci5jdXJyZW50IC5zdGVwLWxhYmVsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWRhcmspO1xuICAgIH1cblxuICAgIC5zdGVwLWluZGljYXRvci5jdXJyZW50IC5zdGVwLWxhYmVsIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICB9XG5cbiAgICAuc3RlcC1jb25uZWN0b3Ige1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBoZWlnaHQ6IDJweDtcbiAgICAgICAgbWFyZ2luOiAwIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLWR1cmF0aW9uLXNsb3cpIHZhcigtLXN3cC1lYXNlLW91dCk7XG4gICAgfVxuXG4gICAgLnN0ZXAtY29ubmVjdG9yLmNvbXBsZXRlZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBTVEVQIENBUkRcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIC8vIFBhcGVyIG9uIHRoZSBjYW52YXM6IHN1cmZhY2UsIHNvZnQgcmVzdGluZyBzaGFkb3csIGdlbmVyb3VzIHJhZGl1cy4gTm90IGFcbiAgICAvLyBoZWF2aWVyIGN1c3RvbSBzaGFkb3cgLSB0aGUgZGVzaWduIHN5c3RlbSdzIGBzaGFkb3ctc21gIGlzIHRoZSBjYXJkIHJlc3QuXG5cbiAgICAub25ib2FyZGluZy1zdGVwLWNhcmQge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMTIpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXhsKTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1zbSk7XG4gICAgfVxuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gU1RFUCBJQ09OIE1FREFMTElPTlxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gICAgLy8gRmxhdCBwcmltYXJ5IHRpbnQgd2l0aCBhIFRydXN0IEdyZWVuIGdseXBoIC0gdGhlIHNhbWUgc29mdC1tZWRhbGxpb25cbiAgICAvLyBsYW5ndWFnZSB0aGUgZGFzaGJvYXJkIGVtcHR5IHN0YXRlcyB1c2UuIFRoZSBwcmV2aW91cyBzYXR1cmF0ZWQgYmx1ZVxuICAgIC8vIGdyYWRpZW50IGRpc2Mgd2FzIHRoZSBBSS1zbG9wIGhlcm8taWNvbiB0ZWxsLlxuXG4gICAgLnN0ZXAtaWNvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB3aWR0aDogNHJlbTtcbiAgICAgICAgaGVpZ2h0OiA0cmVtO1xuICAgICAgICBtYXJnaW46IDAgYXV0byB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBXRUxDT01FIFNFQ1RJT04gKyBCQURHRVxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gICAgLndlbGNvbWUtc2VjdGlvbiB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS04KTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cblxuICAgIC53ZWxjb21lLWJhZGdlIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWRhcmspO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICB9XG5cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBCRU5FRklUUyAvIFwiV0hZIFRISVMgTUFUVEVSU1wiIEJPWFxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gICAgLy8gQSBmdWxsIDFweCBib3JkZXIgcGx1cyBhbiBhbWJpZW50IGdyZWVuIHdhc2guIE5PIHNpZGUtc3RyaXBlOiBhIGNvbG91cmVkXG4gICAgLy8gYGJvcmRlci1sZWZ0YCB0aGlja2VyIHRoYW4gMXB4IGlzIGEgaGFyZCBiYW4sIGFuZCB0aGUgbGVhZGluZyBpY29uIGluc2lkZVxuICAgIC8vIGFscmVhZHkgY2FycmllcyB0aGUgYWNjZW50LlxuXG4gICAgLnN0ZXAtYmVuZWZpdHMge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS01KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcblxuICAgICAgICB1bCB7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IHZhcigtLXN3cC1zcGFjZS01KTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGkgKyBsaSB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBDT01QTEVUSU9OIFNDUkVFTlxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gICAgLmNlbGVicmF0aW9uLWljb24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB9XG5cbiAgICAvLyBTdWNjZXNzIG1lZGFsbGlvbjogc3VjY2Vzcy1saWdodCBkaXNjLCBBQS1zYWZlIHN1Y2Nlc3MtZGFyayBjaGVjay4gRW50ZXJzXG4gICAgLy8gb25jZSB3aXRoIGEgZ2VudGxlIGVhc2Utb3V0IHNjYWxlLCBuZXZlciBib3VuY2VzLCBuZXZlciBsb29wcy5cblxuICAgIC5zdWNjZXNzLWNoZWNrbWFyayB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDZyZW07XG4gICAgICAgIGhlaWdodDogNnJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1Y2Nlc3MtbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MtZGFyayk7XG4gICAgICAgIGFuaW1hdGlvbjogb25ib2FyZGluZy1jZWxlYnJhdGUgdmFyKC0tc3dwLWR1cmF0aW9uLXNsb3cpIHZhcigtLXN3cC1lYXNlLW91dCkgYm90aDtcbiAgICB9XG5cbiAgICAvLyBBIHF1aWV0LCBuZXV0cmFsIHRpcCBub3RlIC0gZGlzdGluY3QgZnJvbSB0aGUgZ3JlZW4gYmVuZWZpdHMgYm94IGFuZCBub1xuICAgIC8vIGxvbmdlciBhIHJhdyBCb290c3RyYXAgYGFsZXJ0LWluZm9gIGJsdWUuXG5cbiAgICAub25ib2FyZGluZy10aXAge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0wLTUpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1zZWNvbmRhcnktZGFyayk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBSRVNQT05TSVZFXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG5cbiAgICAgICAgLm9uYm9hcmRpbmctc3RlcC1jYXJkIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS04KSB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgICAgIH1cblxuICAgICAgICAuc3RlcC1jb25uZWN0b3Ige1xuICAgICAgICAgICAgbWFyZ2luOiAwIHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQGtleWZyYW1lcyBvbmJvYXJkaW5nLWNlbGVicmF0ZSB7XG5cbiAgICBmcm9tIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjkpO1xuICAgIH1cblxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFDQ0VTU0lCSUxJVFlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gUmVkdWNlZCBtb3Rpb24gaXMgbm90IG9wdGlvbmFsLiBUaGUgcHJvZ3Jlc3MtaW5kaWNhdG9yIGNyb3NzLWZhZGVzIGFyZVxuLy8gbm9uLXZlc3RpYnVsYXIsIGJ1dCB0aGUgY2VsZWJyYXRpb24gc2NhbGUgaXMgYSB0cmFuc2Zvcm0sIHNvIGl0IGlzIGRpc2FibGVkXG4vLyBvdXRyaWdodCBhbmQgdGhlIGZpbmFsIHN0YXRlIHNob3dzIGluc3RhbnRseS5cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG5cbiAgICAub25ib2FyZGluZy1jb250YWluZXIge1xuXG4gICAgICAgIC5zdGVwLW51bWJlcixcbiAgICAgICAgLnN0ZXAtbGFiZWwsXG4gICAgICAgIC5zdGVwLWNvbm5lY3RvciB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLnN1Y2Nlc3MtY2hlY2ttYXJrIHtcbiAgICAgICAgICAgIGFuaW1hdGlvbjogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qKlxuICogU29saWRJbnZvaWNlIERlc2lnbiBTeXN0ZW0gLSBNb25leSBEaXNwbGF5XG4gKlxuICogVGhlIHNpZ25hdHVyZSBjb21wb25lbnQgKERFU0lHTi5tZCBzZWN0aW9uIDUpLiBFdmVyeSBjdXJyZW5jeSB2YWx1ZSBpbiB0aGVcbiAqIGFwcGxpY2F0aW9uIHJlbmRlcnMgdGhyb3VnaCBgLm1vbmV5YDsgaXQgaXMgdGhlIHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGggZm9yXG4gKiBtb25leSBkaXNwbGF5LCBhbmQgcmF3IGB7eyBhbW91bnQgfX1gIHJlbmRlcmluZyBpcyBwcm9oaWJpdGVkLlxuICpcbiAqIENvbnRyYWN0OlxuICogICA8c3BhbiBjbGFzcz1cIm1vbmV5XCI+XG4gKiAgICAgPHNwYW4gY2xhc3M9XCJtb25leS1jdXJyZW5jeVwiPlVTRDwvc3Bhbj5cbiAqICAgICA8c3Ryb25nIGNsYXNzPVwibW9uZXktYW1vdW50XCI+MSwyMzQuNTY8L3N0cm9uZz5cbiAqICAgPC9zcGFuPlxuICpcbiAqIE1vZGlmaWVycyAob24gdGhlIGAubW9uZXlgIHJvb3QsIGNvbWJpbmFibGUpOlxuICogICAubW9uZXktLXBhaWQgICAgICBBbW91bnQgaW4gQUEtc2FmZSBzdWNjZXNzLiBPTkxZIHZhbGlkIGFsb25nc2lkZSBhblxuICogICAgICAgICAgICAgICAgICAgICBleHBsaWNpdCBcIlBhaWRcIiBsYWJlbCAodGhlIE1vbmV5LUNvbG9yIFJ1bGUpLlxuICogICAubW9uZXktLW92ZXJkdWUgICBBbW91bnQgaW4gQUEtc2FmZSBkYW5nZXIuIFNhbWUgbGFiZWxsaW5nIHJ1bGUuXG4gKiAgIC5tb25leS0tdG90YWwgICAgIFdlaWdodCA2MDAsIGFtb3VudCBvbmUgc2l6ZSBzdGVwIHVwLlxuICogICAobm9uZSkgICAgICAgICAgICBOZXV0cmFsIC0gdGhlIGRlZmF1bHQgYW5kIHRoZSBjb21tb24gY2FzZS5cbiAqXG4gKiBUaGUgY29tcG9uZW50IG5ldmVyIHNldHMgaXRzIG93biBmb250LXNpemUuIEl0IGluaGVyaXRzIGZyb20gY29udGV4dCwgc28gdGhlXG4gKiBzYW1lIG1hcmt1cCBpcyBjb3JyZWN0IGlubGluZSBpbiBhIHRhYmxlIGNlbGwsIGluIGEgaGVhZGluZywgYW5kIGF0XG4gKiBgLnN0YXQtdmFsdWVgIHNjYWxlIGluIHRoZSBkYXNoYm9hcmQgaGVybyB0aWxlcy4gT25seSBgLm1vbmV5LS10b3RhbGAgc3RlcHNcbiAqIHRoZSBhbW91bnQsIGFuZCBpdCBzdGVwcyByZWxhdGl2ZWx5IHNvIHRoZSByZXN1bHQgaXMgcmlnaHQgYXQgZXZlcnkgYmFzZS5cbiAqL1xuXG4ubW9uZXkge1xuICAgIC8vIGlubGluZS1mbGV4IHJhdGhlciB0aGFuIHBsYWluIGlubGluZSwgZm9yIHR3byByZWFzb25zOlxuICAgIC8vICAxLiBUaGUgZ2FwIGJldHdlZW4gY3VycmVuY3kgYW5kIGFtb3VudCBpcyBkZXRlcm1pbmlzdGljIHdoZXRoZXIgb3Igbm90XG4gICAgLy8gICAgIHRoZSBlbWl0dGVkIG1hcmt1cCBoYXBwZW5zIHRvIGNhcnJ5IHdoaXRlc3BhY2UgYmV0d2VlbiB0aGUgc3BhbnNcbiAgICAvLyAgICAgKGZsZXggZHJvcHMgd2hpdGVzcGFjZS1vbmx5IGFub255bW91cyBib3hlcykuXG4gICAgLy8gIDIuIGBhbGlnbi1pdGVtczogYmFzZWxpbmVgIGtlZXBzIGEgc2l6ZS1zdGVwcGVkIGAubW9uZXktLXRvdGFsYCBhbW91bnRcbiAgICAvLyAgICAgc2hhcmluZyBhIGJhc2VsaW5lIHdpdGggaXRzIGN1cnJlbmN5LCBpbnN0ZWFkIG9mIGNlbnRyaW5nIGFnYWluc3QgaXQuXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuXG4gICAgLy8gTW9uZXkgY2xhcml0eTogYSBjdXJyZW5jeSBjb2RlIG11c3QgbmV2ZXIgYmUgb3JwaGFuZWQgZnJvbSBpdHMgbnVtYmVyLlxuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICAvLyBUaGUgVGFidWxhciBGaWd1cmVzIFJ1bGUgLSBhbW91bnRzIGFsaWduIGluIGNsZWFuIHZlcnRpY2FsIGNvbHVtbnMuXG4gICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbn1cblxuLy8gQ3VycmVuY3kgY29kZSBvciBzeW1ib2wuIERpbW1lZCByZWxhdGl2ZSB0byB0aGUgYW1vdW50LCBidXQgaXQgaXMgbWVhbmluZ2Z1bFxuLy8gdGV4dCByYXRoZXIgdGhhbiBkZWNvcmF0aW9uLCBzbyBpdCBob2xkcyBBQSBvbiBldmVyeSBzdXJmYWNlIGluIHRoZSBzeXN0ZW0uXG5cbi5tb25leS1jdXJyZW5jeSB7XG4gICAgY29sb3I6IHZhcigtLXN3cC1tb25leS1jdXJyZW5jeSk7XG59XG5cbi8vIFRoZSBhbW91bnQuIFdlaWdodCBpcyBub3JtYWxpc2VkIGhlcmUgc28gdGhhdCB0aGUgVUEgZGVmYXVsdCBvZiA3MDAgb25cbi8vIGA8c3Ryb25nPmAgZG9lcyBub3QgcHJlLWVtcHQgdGhlIGAubW9uZXktLXRvdGFsYCBzdGVwIHVwIHRvIDYwMC5cblxuLm1vbmV5LWFtb3VudCB7XG4gICAgY29sb3I6IHZhcigtLXN3cC1tb25leS1uZXV0cmFsKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTU9ESUZJRVJTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFBhaWQuIENvbG91ciBpcyBhbXBsaWZpY2F0aW9uIGhlcmUsIG5ldmVyIHRoZSBjYXJyaWVyIG9mIG1lYW5pbmcgLSBhIGdyZWVuXG4vLyBhbW91bnQgd2l0aG91dCBhbiBhY2NvbXBhbnlpbmcgXCJQYWlkXCIgbGFiZWwgaXMgYSBidWcsIG5vdCBhIHN0eWxlIGNob2ljZS5cblxuLm1vbmV5LS1wYWlkIC5tb25leS1hbW91bnQge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtbW9uZXktcGFpZCk7XG59XG5cbi8vIE92ZXJkdWUuIFNhbWUgcnVsZTogYWx3YXlzIHJlbmRlcmVkIHdpdGggYW4gZXhwbGljaXQgXCJPdmVyZHVlXCIgbGFiZWwuXG5cbi5tb25leS0tb3ZlcmR1ZSAubW9uZXktYW1vdW50IHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLW1vbmV5LW92ZXJkdWUpO1xufVxuXG4vLyBUb3RhbC4gSGVhdmllciwgYW5kIG9uZSBzaXplIHN0ZXAgdXAgcmVsYXRpdmUgdG8gdGhlIGluaGVyaXRlZCBjb250ZXh0LlxuLy8gVGhlIGN1cnJlbmN5IGtlZXBzIGl0cyBpbmhlcml0ZWQgd2VpZ2h0IHNvIHRoZSBkaW1tZWQtcHJlZml4IHJlbGF0aW9uc2hpcFxuLy8gc3Vydml2ZXMgdGhlIHN0ZXAgdXAuXG5cbi5tb25leS0tdG90YWwgLm1vbmV5LWFtb3VudCB7XG4gICAgZm9udC1zaXplOiBjYWxjKDFlbSAqIHZhcigtLXN3cC1tb25leS10b3RhbC1zY2FsZSkpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG59XG5cbi8vIEF0IGRpc3BsYXkgc2l6ZSB0aGUgY3VycmVuY3kgY29kZSBpcyBkaW1tZWQgYnkgc2l6ZSBhcyB3ZWxsIGFzIGJ5IGNvbG91cjogYXQgYVxuLy8gc2hhcmVkIHNpemUgaXQgY29tcGV0ZXMgd2l0aCB0aGUgYW1vdW50IGZvciBhdHRlbnRpb24gaXQgaGFzIG5vdCBlYXJuZWQsIGFuZFxuLy8gXCJVU0QgMTIwLDg4Mi4xOVwiIHNob3VsZCByZWFkIGFzIGEgbnVtYmVyIGNhcnJ5aW5nIGEgdW5pdCByYXRoZXIgdGhhbiBhcyB0d29cbi8vIGVxdWFsIHdvcmRzLiBTY29wZWQgdG8gYC0tdG90YWxgIGRlbGliZXJhdGVseS4gQXQgYm9keSBzaXplIChhIHRhYmxlIHJvdywgYW5cbi8vIGFjdGl2aXR5IGZlZWQpIHRoZSBzYW1lIHJlZHVjdGlvbiB3b3VsZCBwdXQgdGhlIGNvZGUgbmVhciAxMHB4LCB3aGljaCBpcyB0aGVcbi8vIGxlZ2liaWxpdHkgcHJvYmxlbSByYXRoZXIgdGhhbiB0aGUgZml4LCBzbyB0aGUgY29kZSBzdGF5cyBmdWxsIHNpemUgdGhlcmUuXG5cbi5tb25leS0tdG90YWwgLm1vbmV5LWN1cnJlbmN5IHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC1tb25leS1jdXJyZW5jeS1zY2FsZSk7XG59XG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSBEZXNpZ24gU3lzdGVtIC0gU3RhdHVzIENoaXBcbiAqXG4gKiBUaGUgb25lIHN0YXR1cyBjaGlwIChERVNJR04ubWQgc2VjdGlvbiA1KS4gRXZlcnkgc3RhdHVzIHdvcmQgaW4gdGhlXG4gKiBhcHBsaWNhdGlvbiByZW5kZXJzIHRocm91Z2ggYC5zdGF0dXMtY2hpcGAsIG9uIGEgZml2ZS12YWx1ZSBzZW1hbnRpYyBzZXQ6XG4gKiBuZXV0cmFsLCBpbmZvLCBzdWNjZXNzLCB3YXJuaW5nLCBkYW5nZXIuXG4gKlxuICogQ29udHJhY3Q6XG4gKiAgIDxzcGFuIGNsYXNzPVwic3RhdHVzLWNoaXAgc3RhdHVzLWNoaXAtLXN1Y2Nlc3NcIj5QYWlkPC9zcGFuPlxuICpcbiAqIEV2ZXJ5IHZhcmlhbnQgaXMgYW4gQUEtc2FmZSB0ZXh0IGNvbG91ciBvbiBpdHMgb3duIHRpbnQ6XG4gKiAgIG5ldXRyYWwgICBncmF5LTEwMCAgICAgIC8gdGV4dC1zZWNvbmRhcnkgICA2LjkyOjFcbiAqICAgaW5mbyAgICAgIGluZm8tbGlnaHQgICAgLyBpbmZvLWRhcmsgICAgICAgIDUuNDk6MVxuICogICBzdWNjZXNzICAgc3VjY2Vzcy1saWdodCAvIHN1Y2Nlc3MtZGFyayAgICAgNC44NDoxXG4gKiAgIHdhcm5pbmcgICB3YXJuaW5nLWxpZ2h0IC8gd2FybmluZy1kYXJrICAgICA2LjM3OjFcbiAqICAgZGFuZ2VyICAgIGRhbmdlci1saWdodCAgLyBkYW5nZXItZGFyayAgICAgIDUuMzA6MVxuICpcbiAqIFRoZSB0aW50IGl0c2VsZiBtZWFzdXJlcyAxLjA1LTEuMjI6MSBhZ2FpbnN0IHRoZSBwYWdlLiBUaGF0IGlzIGRlbGliZXJhdGUuXG4gKiBUaGUgY2hpcCdzIG1lYW5pbmcgaXMgY2FycmllZCBieSBpdHMgdGV4dCBsYWJlbCwgc28gdGhlIHBpbGwgaXMgZGVjb3JhdGlvblxuICogYXJvdW5kIGxlZ2libGUgdGV4dCwgbm90IGEgY29udHJvbCB3aG9zZSBib3VuZGFyeSBtdXN0IGJlIHBlcmNlaXZhYmxlLlxuICpcbiAqIEEgY2hpcCBpcyBuZXZlciBpbnRlcmFjdGl2ZTogbm8gc2hhZG93LCBubyBib3JkZXIsIG5vIGhvdmVyLCBubyB0cmFuc2l0aW9uLFxuICogYW5kIGl0IGlzIG5ldmVyIGEgZm9jdXMgdGFyZ2V0LiBBIGNoaXAgaXMgYWxzbyBuZXZlciB0cnVuY2F0ZWQgLSBhXG4gKiBoYWxmLXNob3duIHN0YXR1cyBpcyB3b3JzZSB0aGFuIGEgd2lkZXIgY29sdW1uLlxuICovXG5cbi5zdGF0dXMtY2hpcCB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMC01KSB2YXIoLS1zd3Atc3BhY2UtMi01KTsgICAvLyAycHggMTBweFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gMTJweFxuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pOyAgICAgICAgICAgICAgICAgIC8vIDUwMFxuICAgIGxpbmUtaGVpZ2h0OiAxLjI1O1xuICAgIGxldHRlci1zcGFjaW5nOiAwO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICAvLyBUaGUgYmFzZSBpcyB0aGUgbmV1dHJhbCB0cmVhdG1lbnQsIHNvIGEgY2hpcCB3aXRoIG5vIG1vZGlmaWVyIGlzIHN0aWxsXG4gICAgLy8gbGVnaWJsZSBhbmQgc3RpbGwgbG9va3MgbGlrZSBhIGNoaXAuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLWdyYXktMTAwKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcblxuICAgICYtLW5ldXRyYWwge1xuICAgICAgICAvLyBUaGUgbW9kaWZpZXIgZXhpc3RzIHNvIGNhbGwgc2l0ZXMgY2FuIHNheSBgbmV1dHJhbGAgcmF0aGVyIHRoYW4gc2F5XG4gICAgICAgIC8vIG5vdGhpbmcuIEl0IHJlcGVhdHMgdGhlIGJhc2UgdmFsdWVzIGluc3RlYWQgb2YgYmVpbmcgZW1wdHksIGJlY2F1c2VcbiAgICAgICAgLy8gYW4gZW1wdHkgcnVsZSBpcyBkcm9wcGVkIGJ5IHRoZSBidWlsZCBhbmQgYnkgc3R5bGVsaW50LlxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtZ3JheS0xMDApO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB9XG5cbiAgICAmLS1pbmZvIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLWluZm8tbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWluZm8tZGFyayk7XG4gICAgfVxuXG4gICAgJi0tc3VjY2VzcyB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzLWRhcmspO1xuICAgIH1cblxuICAgICYtLXdhcm5pbmcge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3Atd2FybmluZy1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atd2FybmluZy1kYXJrKTtcbiAgICB9XG5cbiAgICAmLS1kYW5nZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXItZGFyayk7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBTb2xpZEludm9pY2UgRGVzaWduIFN5c3RlbSAtIExheW91dCBJbmRleFxuICpcbiAqIExheW91dCBwYXR0ZXJuIHN0eWxlcyB0aGF0IGV4dGVuZCBUYWJsZXIvQm9vdHN0cmFwLlxuICogT25seSBhZGQgbGF5b3V0IGZpbGVzIGZvciBwYXR0ZXJucyBub3QgY292ZXJlZCBieSB0aGUgZnJhbWV3b3Jrcy5cbiAqXG4gKiBOb3RlOiBNb3N0IGxheW91dCBzdHlsaW5nIGNvbWVzIGZyb20gVGFibGVyIChwYWdlLXdyYXBwZXIsIHBhZ2UtaGVhZGVyLCBldGMuKVxuICogVGhpcyBmaWxlIGltcG9ydHMgb25seSBjdXN0b20gZXh0ZW5zaW9ucyB3aGVuIG5lZWRlZC5cbiAqL1xuXG4vLyBWZXJ0aWNhbCBzaWRlYmFyIHJlY29sb3Ig4oCUIGNvbnZlcnRzIFRhYmxlcidzIGRhcmsgc2xhdGUgc2lkZWJhciBpbnRvXG4vLyB0aGUgcXVpZXQgbGlnaHQgcGFuZWwgcHJlc2NyaWJlZCBieSBERVNJR04ubWQgKGdyYXktMTAwIGJlaGluZCB0aGUgYm9keSkuXG5AaW1wb3J0ICduYXZiYXItdmVydGljYWwnO1xuIiwiLyoqXG4gKiBTb2xpZEludm9pY2Ug4oCUIFZlcnRpY2FsIE5hdmJhciAoU2lkZWJhcilcbiAqXG4gKiBUYWJsZXIgc2hpcHMgYC5uYXZiYXItdmVydGljYWwubmF2YmFyLWRhcmtgIGFzIGEgaGVhdnkgc2xhdGUgcGFuZWwgKGdyYXktODAwKVxuICogdGhhdCBQUk9EVUNULm1kIG5hbWVzIGFzIHRoZSBBZG1pbkxURSBhbnRpLXJlZmVyZW5jZSB0aGUgcmV3cml0ZSBpcyBlc2NhcGluZy5cbiAqIFRoaXMgZmlsZSByZWNvbG9ycyB0aGUgc2lkZWJhciBvbmUgc2hhZGUgbGlnaHRlciAoZ3JheS03MDApIHNvIGl0IHN0aWxsXG4gKiBjYXJyaWVzIHByZXNlbmNlLCBidXQgdXNlcyB0aW50ZWQgbmV1dHJhbHMgYW5kIGEgZ3JlZW4tdGludGVkIGFjdGl2ZSBzdGF0ZVxuICogdG8gZGlmZmVyZW50aWF0ZSBpdCBmcm9tIGdlbmVyaWMgVGFibGVyIGFkbWluIG91dHB1dC5cbiAqXG4gKiBTZWxlY3RvciBzcGVjaWZpY2l0eSB0YXJnZXRzIGAubmF2YmFyLXZlcnRpY2FsYCBzbyBUYWJsZXIncyBtb2JpbGUtY29sbGFwc2UsXG4gKiBkcmF3ZXIsIGFuZCBkcm9wZG93biBydWxlcyBjb250aW51ZSB0byBhcHBseS5cbiAqL1xuXG4ubmF2YmFyLm5hdmJhci12ZXJ0aWNhbCxcbi5uYXZiYXIubmF2YmFyLXZlcnRpY2FsLm5hdmJhci1kYXJrIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtZ3JheS03MDApO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtZ3JheS0zMDApO1xuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLXN3cC1ncmF5LTgwMCk7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcblxuICAgIC8vIEJyYW5kOiBsb2dvICsgcHJvZHVjdCBuYW1lIGF0IHRoZSB0b3Agb2YgdGhlIHNpZGViYXIuXG5cbiAgICAubmF2YmFyLWJyYW5kIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICB9XG5cbiAgICAubmF2YmFyLWJyYW5kLWF1dG9kYXJrIHtcbiAgICAgICAgZmlsdGVyOiBub25lO1xuICAgIH1cblxuICAgIC8vIE5hdiBsaW5rIGRlZmF1bHQgc3RhdGUuXG5cbiAgICAubmF2LWxpbmsge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWdyYXktMzAwKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgICAgIC5uYXYtbGluay1pY29uLFxuICAgICAgICAubmF2LWxpbmstdGl0bGUge1xuICAgICAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBIb3ZlcjogbGlmdCB0byBhIHNsaWdodGx5IGxpZ2h0ZXIgc2xhdGUsIGJyaWdodGVyIHRleHQuXG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtZ3JheS02MDApO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEtleWJvYXJkIGZvY3VzIGhhbG8sIHBlciBUaGUgRm9jdXMgSGFsbyBSdWxlLlxuXG4gICAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctcHJpbWFyeSk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQWN0aXZlIHJvdXRlOiB0aW50ZWQgYmFja2dyb3VuZCBwdWxsZWQgZnJvbSBUcnVzdCBHcmVlbiBmYW1pbHkuXG4gICAgICAgIC8vIExvb2tzIGxpa2UgYSBzb2Z0IFwiYnV0dG9uXCIgb24gdGhlIGRhcmsgc2xhdGUgd2l0aG91dCBhbnkgc2lkZSBzdHJpcGUuXG5cbiAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWRhcmspO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcblxuICAgICAgICAgICAgLm5hdi1saW5rLWljb24sXG4gICAgICAgICAgICAubmF2LWxpbmstdGl0bGUge1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNlY3Rpb24gbGFiZWxzIChpZiBhbnkpIHNpdCBxdWlldGx5LlxuXG4gICAgLm5hdi1zdWJ0aXRsZSxcbiAgICAubmF2LWhlYWRlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZ3JheS00MDApO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogdmFyKC0tc3dwLXRyYWNraW5nLXdpZGVyKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgfVxuXG4gICAgLy8gRHJvcGRvd24gY2hldnJvbnMgbWF0Y2ggc2Vjb25kYXJ5IHRleHQuXG5cbiAgICAubmF2LWxpbmstdG9nZ2xlLFxuICAgIC5kcm9wZG93bi10b2dnbGU6OmFmdGVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1ncmF5LTQwMCk7XG4gICAgfVxuXG4gICAgLy8gTmVzdGVkIGRyb3Bkb3duIG1lbnVzIGluc2lkZSB0aGUgc2lkZWJhciBsaWZ0IG9udG8gYSBwYXBlciBzdXJmYWNlIHNvXG4gICAgLy8gc3VibWVudSBjb250ZW50IHJlYWRzIGxpa2UgY29udGVudCwgbm90IG5hdiBjaHJvbWUuXG5cbiAgICAubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctbWQpO1xuXG4gICAgICAgIC5kcm9wZG93bi1pdGVtIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG5cbiAgICAgICAgICAgICY6aG92ZXIsXG4gICAgICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3Atc3VyZmFjZS1ob3Zlcik7XG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENvbGxhcHNlZCBleHBhbmQgdG9nZ2xlIChoYW1idXJnZXIgb24gbW9iaWxlKS5cblxuICAgIC5uYXZiYXItdG9nZ2xlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZ3JheS0yMDApO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1ncmF5LTYwMCk7XG5cbiAgICAgICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gTW9iaWxlIGhvcml6b250YWwgbmF2YmFyIChyZW5kZXJlZCB3aGVuIHRoZSB2ZXJ0aWNhbCBkcmF3ZXIgY29sbGFwc2VzKS5cblxuLm5hdmJhci5uYXZiYXItdmVydGljYWwubmF2YmFyLWV4cGFuZC1sZyAubmF2YmFyLWNvbGxhcHNlIHtcbiAgICBAbWVkaWEgKHdpZHRoIDwgOTkycHgpIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLWdyYXktNzAwKTtcbiAgICB9XG59XG5cbi8vIFF1b3RlL2F2b2lkOiB3aGVuIHRoZSBzeXN0ZW0gZW5hYmxlcyBkYXJrIG1vZGUgcHJlZmVyZW5jZSwgbGVhdmUgdGhlIGRhcmtcbi8vIHRoZW1lIHRvIFRhYmxlci4gTGlnaHQgb3ZlcnJpZGVzIHNjb3BlIG9ubHkgdG8gZGVmYXVsdCB0aGVtZS5cbkBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHtcblxuICAgIFtkYXRhLWJzLXRoZW1lPVwiZGFya1wiXSAubmF2YmFyLm5hdmJhci12ZXJ0aWNhbC5uYXZiYXItZGFyayB7XG4gICAgICAgIC8vIEludGVudGlvbmFsbHkgZW1wdHk6IGRlZmVyIHRvIFRhYmxlciBkYXJrIGRlZmF1bHRzIHVudGlsIFNvbGlkSW52b2ljZVxuICAgICAgICAvLyBzaGlwcyBhIGRvY3VtZW50ZWQgZGFyayB0aGVtZS5cbiAgICB9XG59XG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSBEZXNpZ24gU3lzdGVtIC0gRm9ybSBTdHlsZXNcbiAqXG4gKiBHZW5lcmljIGZvcm0gY29tcG9uZW50IHN0eWxlcyBmb3IgdGhlIGVudGlyZSBhcHBsaWNhdGlvbi5cbiAqIFVzZXMgZGVzaWduIHN5c3RlbSB0b2tlbnMgZm9yIGNvbnNpc3RlbnQgc3R5bGluZy5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGT1JNIENPTlRST0wgQkFTRSBTVFlMRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0tY29udHJvbCxcbi5mb3JtLXNlbGVjdCB7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLWlucHV0LXJhZGl1cyk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtaW5wdXQtYm9yZGVyKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3AtaW5wdXQtcGFkZGluZy15KSB2YXIoLS1zd3AtaW5wdXQtcGFkZGluZy14KTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93IHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWlucHV0LWZvY3VzLWJvcmRlcik7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1pbnB1dC1mb2N1cy1yaW5nKTtcbiAgICB9XG5cbiAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1saWdodCk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGT1JNIExBQkVMU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZm9ybS1sYWJlbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTIpO1xuXG4gICAgLy8gUmVxdWlyZWQgaW5kaWNhdG9yXG5cbiAgICAmLnJlcXVpcmVkOjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICcgKic7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZPUk0gRklFTEQgV1JBUFBFUlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZm9ybS1maWVsZCB7XG5cbiAgICAuZm9ybS1sYWJlbCB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWJvZHktY29sb3IpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgfVxuXG4gICAgLmZvcm0tY29udHJvbCxcbiAgICAuZm9ybS1zZWxlY3Qge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgICAgIGJveC1zaGFkb3cgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmlucHV0LWdyb3VwLXRleHQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGT1JNIEhFTFAgVEVYVFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZm9ybS1oZWxwLFxuLmZvcm0tdGV4dCxcbi5mb3JtLWhlbHAtdGV4dCB7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc3dwLWxlYWRpbmctbm9ybWFsKTtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG5cbiAgICBzbWFsbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRPR0dMRSBTV0lUQ0ggKENoZWNrYm94IGFzIFN3aXRjaClcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0tc3dpdGNoLWZpZWxkIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMy01KSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjMpO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICB9XG59XG5cbi5mb3JtLXN3aXRjaC13cmFwcGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcblxuICAgIC5mb3JtLWNoZWNrLWlucHV0IHtcbiAgICAgICAgd2lkdGg6IDIuNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAxLjI1cmVtO1xuICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1ncmF5LTMwMCk7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICAgICAmOmNoZWNrZWQge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5mb3JtLWNoZWNrLWxhYmVsIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDAuNXJlbTtcbiAgICAgICAgZmxleDogMTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIElOUFVUIFdJVEggSUNPTiAoSW5wdXQgR3JvdXBzKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uaW5wdXQtaWNvbi1ncm91cCB7XG5cbiAgICAuaW5wdXQtZ3JvdXAtdGV4dCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDE4cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZm9ybS1jb250cm9sIHtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IG5vbmU7XG5cbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuXG4gICAgICAgICAgICB+IC5pbnB1dC1ncm91cC10ZXh0LFxuICAgICAgICAgICAgKyAuaW5wdXQtZ3JvdXAtdGV4dCB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBXaGVuIGljb24gaXMgb24gdGhlIGxlZnRcblxuICAgIC5pbnB1dC1ncm91cC10ZXh0OmZpcnN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiBub25lO1xuXG4gICAgICAgICsgLmZvcm0tY29udHJvbCB7XG4gICAgICAgICAgICBib3JkZXItbGVmdDogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVkFMSURBVElPTiBCVVRUT04gSU4gSU5QVVQgR1JPVVBcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmlucHV0LXZhbGlkYXRlLWdyb3VwIHtcblxuICAgIC5idG4tdmFsaWRhdGUge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xLTUpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZPUk0gR1JPVVBTIChOZXN0ZWQvR3JvdXBlZCBGaWVsZHMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLWdyb3VwLWNhcmQge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS01KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG5cbiAgICAuZm9ybS1ncm91cC1oZWFkZXIge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxuXG4gICAgLmZvcm0tZ3JvdXAtdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWJvZHktY29sb3IpO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgfVxuXG4gICAgLmZvcm0tZ3JvdXAtY29udGVudCB7XG5cbiAgICAgICAgLm1iLTM6bGFzdC1jaGlsZCxcbiAgICAgICAgLm1iLTQ6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFERFJFU1MgV0lER0VUXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5hZGRyZXNzLXdpZGdldCB7XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIC5mb3JtLWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIH1cblxuICAgIC5mb3JtLWNvbnRyb2wsXG4gICAgLmZvcm0tc2VsZWN0IHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZPUk0gVkFMSURBVElPTiBTVEFURVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0tY29udHJvbC5pcy1pbnZhbGlkLFxuLmZvcm0tc2VsZWN0LmlzLWludmFsaWQge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWRhbmdlcik7XG4gICAgcGFkZGluZy1yaWdodDogY2FsYygxLjVlbSArIDAuNzVyZW0pO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM2NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMTIgMTInIHdpZHRoPScxMicgaGVpZ2h0PScxMicgZmlsbD0nbm9uZScgc3Ryb2tlPSclMjNlZjQ0NDQnJTNlJTNjY2lyY2xlIGN4PSc2JyBjeT0nNicgcj0nNC41Jy8lM2UlM2NwYXRoIHN0cm9rZS1saW5lam9pbj0ncm91bmQnIGQ9J001LjggMy42aC40TDYgNi41eicvJTNlJTNjY2lyY2xlIGN4PSc2JyBjeT0nOC4yJyByPScuNicgZmlsbD0nJTIzZWY0NDQ0JyBzdHJva2U9J25vbmUnLyUzZSUzYy9zdmclM2VcIik7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCBjYWxjKDAuMzc1ZW0gKyAwLjE4NzVyZW0pIGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNhbGMoMC43NWVtICsgMC4zNzVyZW0pIGNhbGMoMC43NWVtICsgMC4zNzVyZW0pO1xuXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWRhbmdlcik7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLWRhbmdlcik7XG4gICAgfVxufVxuXG4uZm9ybS1jb250cm9sLmlzLXZhbGlkLFxuLmZvcm0tc2VsZWN0LmlzLXZhbGlkIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcblxuICAgICY6Zm9jdXMge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYigxNiAxODUgMTI5IC8gMTUlKTtcbiAgICB9XG59XG5cbi5pbnZhbGlkLWZlZWRiYWNrIHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLWRhbmdlcik7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTEtNSk7XG59XG5cbi52YWxpZC1mZWVkYmFjayB7XG4gICAgY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMS01KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRklMRSBVUExPQUQgLyBEUk9QWk9ORSBTVFlMSU5HXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5maWxlLXVwbG9hZC1hcmVhIHtcbiAgICBib3JkZXI6IDJweCBkYXNoZWQgdmFyKC0tc3dwLWdyYXktMzAwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAmOmhvdmVyLFxuICAgICYuZHJhZ292ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgfVxuXG4gICAgLnVwbG9hZC1pY29uIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LWxpZ2h0KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTIpO1xuXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgICAgIGhlaWdodDogMzJweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC51cGxvYWQtdGV4dCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIH1cblxuICAgIC51cGxvYWQtaGludCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1saWdodCk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgICAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgfVxufVxuXG4vLyBTeW1mb255IFVYIERyb3B6b25lIHN0eWxpbmdcblxuLmRyb3B6b25lIHtcbiAgICBib3JkZXI6IDJweCBkYXNoZWQgdmFyKC0tc3dwLWdyYXktMzAwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcbiAgICBtaW4taGVpZ2h0OiBhdXRvO1xuXG4gICAgJjpob3ZlcixcbiAgICAmLmRyb3B6b25lLWRyYWdvdmVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU0VDVElPTiBUSVRMRVMgKEZvciBvcmdhbml6ZWQgZm9ybXMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLXNlY3Rpb24tdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbWQpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1ib2R5LWNvbG9yKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTQpO1xuXG4gICAgc3ZnLFxuICAgIGkge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBvcGFjaXR5OiAwLjk7XG4gICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGT1JNIEFDVElPTlMgKENhcmQgZm9vdGVyIHdpdGggYnV0dG9ucylcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBTdGFuZGFyZCBGb3JtIEFjdGlvbnMgUGF0dGVybjpcbiAqXG4gKiDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJBcbiAqIOKUgiBbQ2FuY2VsIChnaG9zdCldICAgICAgICAgICAgICAgICAgICAgIFtTYXZlIChwcmltYXJ5ICsgaWNvbild4pSCXG4gKiDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJhcbiAqXG4gKiAtIENhbmNlbDogTGVmdCBzaWRlIE9SIGdob3N0IHN0eWxlXG4gKiAtIFNhdmU6IFJpZ2h0IHNpZGUsIHByaW1hcnkgc3R5bGUsIHdpdGggc2F2ZSBpY29uXG4gKi9cblxuLmZvcm0tYWN0aW9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuXG4gICAgLy8gV2hlbiB1c2VkIGluIGEgY2FyZCBmb290ZXJcblxuICAgIC5jYXJkLWZvb3RlciAmIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci10b3A6IG5vbmU7XG4gICAgfVxuXG4gICAgLy8gU3ByZWFkIGJ1dHRvbnMgKGNhbmNlbCBsZWZ0LCBzYXZlIHJpZ2h0KVxuXG4gICAgJi5mb3JtLWFjdGlvbnMtc3ByZWFkIHtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSU5MSU5FIEZPUk1cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0taW5saW5lIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuXG4gICAgLmZvcm0tY29udHJvbCxcbiAgICAuZm9ybS1zZWxlY3Qge1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEhPUklaT05UQUwgRk9STVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZm9ybS1ob3Jpem9udGFsIHtcblxuICAgIC5mb3JtLWdyb3VwLFxuICAgIC5tYi0zLFxuICAgIC5tYi00IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAyMDBweCAxZnI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG5cbiAgICAgICAgQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZm9ybS1sYWJlbCB7XG4gICAgICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtMi01KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG5cbiAgICAgICAgQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDT01QQUNUIEZPUk1cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0tY29tcGFjdCB7XG5cbiAgICAubWItMyxcbiAgICAubWItNCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0zKSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5mb3JtLWNvbnRyb2wsXG4gICAgLmZvcm0tc2VsZWN0IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgfVxuXG4gICAgLmZvcm0tbGFiZWwge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gR0xPQkFMIEJVVFRPTiBFTkhBTkNFTUVOVFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gVGFibGVyJ3MgLmJ0biBhbHJlYWR5IHNldHMgZGlzcGxheTogaW5saW5lLWZsZXggYW5kIGFsaWduLWl0ZW1zOiBjZW50ZXIsXG4vLyBidXQgZG9lcyBub3Qgc2V0IGdhcC4gQWRkIGNvbnNpc3RlbnQgc3BhY2luZyBiZXR3ZWVuIGljb24gYW5kIHRleHQuXG5cbi5idG4ge1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBJQ09OIEJVVFRPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmJ0bi1pY29uIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAzMnB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICAgIGhlaWdodDogMThweDtcbiAgICB9XG59XG5cbi5idG4tZ2hvc3QtZGFuZ2VyIHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogbm9uZTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWRhbmdlcik7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1kYW5nZXItbGlnaHRlcik7XG4gICAgfVxuXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLWRhbmdlcik7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUQUIgTkFWSUdBVElPTiBJTiBDQVJEIEhFQURFUlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gUmVkdWNlIGZvbnQgc2l6ZSBmb3IgdGFicyBpbiBjYXJkIGhlYWRlcnNcblxuLmNhcmQtaGVhZGVyLXRhYnMgLm5hdi1saW5rIHtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRVNQT05TSVZFIEFESlVTVE1FTlRTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEJvb3RzdHJhcCA1IGRvZXMgbm90IGluY2x1ZGUgYSA1MDAtd2VpZ2h0IHV0aWxpdHk7IGFkZCBpdCBoZXJlIGFzIGEgc2hhcmVkIHV0aWxpdHkuXG5cbi5mdy1tZWRpdW0ge1xuICAgIGZvbnQtd2VpZ2h0OiA1MDAgIWltcG9ydGFudDtcbn1cblxuQG1lZGlhICh3aWR0aCA8PSA1NzZweCkge1xuXG4gICAgLmZvcm0tc3dpdGNoLWZpZWxkIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIH1cblxuICAgIC5mb3JtLXN3aXRjaC13cmFwcGVyIHtcblxuICAgICAgICAuZm9ybS1jaGVjay1pbnB1dCB7XG4gICAgICAgICAgICB3aWR0aDogMi4yNXJlbTtcbiAgICAgICAgICAgIGhlaWdodDogMS4xMjVyZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZm9ybS1ncm91cC1jYXJkIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIC5mb3JtLWFjdGlvbnMge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG5cbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgICAgbWluLXdpZHRoOiAxMDBweDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qKlxuICogQ29tcGFueSBQYWdlcyBTdHlsZXNcbiAqXG4gKiBTdHlsZXMgZm9yIGNvbXBhbnkgc2VsZWN0aW9uIGFuZCBjcmVhdGlvbiBwYWdlc1xuICogQWxsIHN0eWxlcyBhcmUgc2NvcGVkIHRvIC5jb21wYW55LXNlbGVjdC1wYWdlIGFuZCAuY29tcGFueS1jcmVhdGUtcGFnZVxuICogdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggb3RoZXIgcGFnZXMuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2hhcmVkIFN0eWxlcyAoYm90aCBzZWxlY3QgYW5kIGNyZWF0ZSBwYWdlcylcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNvbXBhbnktc2VsZWN0LXBhZ2UsXG4uY29tcGFueS1jcmVhdGUtcGFnZSB7XG4gICAgbWluLWhlaWdodDogMTAwdmg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgLy8gQXBwbGljYXRpb24gSGVhZGVyXG5cbiAgICAuY29tcGFueS1wYWdlLWhlYWRlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXhzKTtcbiAgICB9XG5cbiAgICAuY29tcGFueS1wYWdlLWxvZ28ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICAgICAgICBpbWcge1xuICAgICAgICAgICAgaGVpZ2h0OiA0OHB4O1xuICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY29tcGFueS1wYWdlLWJyYW5kIHtcblxuICAgICAgICBoMSB7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUGFnZSBpbnRybyBzZWN0aW9uICh1c2VkIGJ5IGJvdGggc2VsZWN0IGFuZCBjcmVhdGUgcGFnZXMpXG5cbiAgICAuY29tcGFueS1wYWdlLWludHJvIHtcblxuICAgICAgICBoMiB7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxLjc1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgcCB7XG4gICAgICAgICAgICBmb250LXNpemU6IDEuMTI1cmVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmF2YXRhci1tZCB7XG4gICAgICAgIHdpZHRoOiAyLjVyZW07XG4gICAgICAgIGhlaWdodDogMi41cmVtO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmF2YXRhci1sZyB7XG4gICAgICAgIHdpZHRoOiAzLjVyZW07XG4gICAgICAgIGhlaWdodDogMy41cmVtO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmF2YXRhci0yeGwge1xuICAgICAgICB3aWR0aDogNHJlbTtcbiAgICAgICAgaGVpZ2h0OiA0cmVtO1xuICAgICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgfVxuXG4gICAgLmF2YXRhci14bCB7XG4gICAgICAgIHdpZHRoOiA1cmVtO1xuICAgICAgICBoZWlnaHQ6IDVyZW07XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB9XG5cbiAgICAuYXZhdGFyLWluaXRpYWxzIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgZm9udC1zaXplOiAxLjI1cmVtO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcbiAgICB9XG5cbiAgICAuZm9ybS1oaW50IHtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLy8gUmVzcG9uc2l2ZSBhZGp1c3RtZW50c1xuICAgIEBtZWRpYSAod2lkdGggPD0gNzY3Ljk4cHgpIHtcblxuICAgICAgICAuYXZhdGFyLWxnIHtcbiAgICAgICAgICAgIHdpZHRoOiAzcmVtO1xuICAgICAgICAgICAgaGVpZ2h0OiAzcmVtO1xuXG4gICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAyNHB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMjRweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5hdmF0YXItMnhsIHtcbiAgICAgICAgICAgIHdpZHRoOiAzcmVtO1xuICAgICAgICAgICAgaGVpZ2h0OiAzcmVtO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmgyLCBoMiB7XG4gICAgICAgICAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ29tcGFueSBTZWxlY3Rpb24gUGFnZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY29tcGFueS1zZWxlY3QtcGFnZSB7XG4gICAgLy8gTWFpbiBDYXJkIENvbnRhaW5lclxuXG4gICAgLmNhcmQuc2hhZG93LXNtIHtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1sZykgIWltcG9ydGFudDtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgfVxuXG4gICAgLy8gQ29tcGFueSBDYXJkc1xuXG4gICAgLmNhcmQtY29tcGFueSB7XG4gICAgICAgIHRyYW5zaXRpb246IHZhcigtLXN3cC10cmFuc2l0aW9uLWFsbCk7XG4gICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctbWQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNHB4KTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3cteGwpO1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG5cbiAgICAgICAgICAgIC5jb21wYW55LWFycm93IHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNHB4KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaDMge1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOmFjdGl2ZSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY29tcGFueS1hdmF0YXIge1xuICAgICAgICBmbGV4LXNocmluazogMDtcblxuICAgICAgICAuYXZhdGFyIHtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctc20pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQXZhdGFyIHdpdGggbG9nbyBpbWFnZVxuXG4gICAgICAgIC5hdmF0YXIgaW1nIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEF2YXRhciB3aXRoIGluaXRpYWxzIC0gZm9yY2Ugc29saWQgcHJpbWFyeSBiYWNrZ3JvdW5kXG5cbiAgICAgICAgLmF2YXRhci5iZy1wcmltYXJ5IHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQXZhdGFyIGluaXRpYWxzIHRleHQgLSBmb3JjZSB3aGl0ZSBjb2xvclxuXG4gICAgICAgIC5hdmF0YXItaW5pdGlhbHMsXG4gICAgICAgIC5hdmF0YXIuYmctcHJpbWFyeSBzcGFuIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1pbnZlcnNlKSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jb21wYW55LWFycm93IHtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS1zd3AtZHVyYXRpb24tYmFzZSkgdmFyKC0tc3dwLWVhc2UtaW4tb3V0KTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLm1pbi13LTAge1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIENvbXBhbnkgQ2FyZFxuXG4gICAgLmNhcmQtY3JlYXRlLWNvbXBhbnkge1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMDUpIDAlLCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMDIpIDEwMCUpO1xuICAgICAgICBib3JkZXI6IDJweCBkYXNoZWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgIHRyYW5zaXRpb246IHZhcigtLXN3cC10cmFuc2l0aW9uLWFsbCk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4wOCkgMCUsIHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4wNCkgMTAwJSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAudy1tZC1hdXRvIHtcbiAgICAgICAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBAbWVkaWEgKHdpZHRoID49IDc2OHB4KSB7XG5cbiAgICAgICAgLnctbWQtYXV0byB7XG4gICAgICAgICAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDb21wYW55IENyZWF0aW9uIFBhZ2Vcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNvbXBhbnktY3JlYXRlLXBhZ2Uge1xuXG4gICAgLmZvcm0tc21vb3RoIHtcblxuICAgICAgICAuZm9ybS1jb250cm9sOmZvY3VzLFxuICAgICAgICAuZm9ybS1zZWxlY3Q6Zm9jdXMge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjI1cmVtIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4xKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jYXJkIHtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1sZyk7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICB9XG5cbiAgICAuYWxlcnQge1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG5cbiAgICAgICAgJi5hbGVydC1pbmZvIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tc3dwLWluZm8tcmdiKSwgMC4wOCk7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tc3dwLWluZm8tcmdiKSwgMC4yKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuYWxlcnQtd2FybmluZyB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXN3cC13YXJuaW5nLXJnYiksIDAuMDgpO1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLXN3cC13YXJuaW5nLXJnYiksIDAuMik7XG4gICAgICAgIH1cblxuICAgICAgICAmLmFsZXJ0LXN1Y2Nlc3Mge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjA4KTtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmJ0bi1wcmltYXJ5IHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDFlbTtcbiAgICB9XG59XG4iLCIvKipcbiAqIFNldHRpbmdzIFBhZ2UgU3R5bGVzXG4gKiBPbmx5IGN1c3RvbSBzdHlsZXMgdGhhdCBjYW4ndCBiZSBhY2hpZXZlZCB3aXRoIEJvb3RzdHJhcC9UYWJsZXIgdXRpbGl0aWVzXG4gKi9cblxuQGltcG9ydCAnfmJvb3RzdHJhcC9zY3NzL2Z1bmN0aW9ucyc7XG5AaW1wb3J0ICd+Ym9vdHN0cmFwL3Njc3MvdmFyaWFibGVzJztcbkBpbXBvcnQgJ35ib290c3RyYXAvc2Nzcy9taXhpbnMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZXR0aW5ncyBQYWdlIENvbnRhaW5lciAtIE1heC13aWR0aCBjZW50ZXJpbmdcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnNldHRpbmdzLXBhZ2Uge1xuICAgIG1heC13aWR0aDogOTAwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgcGFkZGluZy1ib3R0b206IDJyZW07XG59XG5cbi8vIE1vYmlsZTogaG9yaXpvbnRhbCBzY3JvbGxpbmcgdGFic1xuQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKG1kKSB7XG5cbiAgICAuc2V0dGluZ3MtcGFnZSA+IC5uYXYtdW5kZXJsaW5lIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IC0xcmVtO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IC0xcmVtO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDFyZW07XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDFyZW07XG4gICAgICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgICAgICAgZmxleC13cmFwOiBub3dyYXA7XG5cbiAgICAgICAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5uYXYtaXRlbSB7XG4gICAgICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2V0dGluZ3MgQ2FyZCAtIHBhcGVyLW9uLWRlc2sgc3VyZmFjZSBwZXIgZGVzaWduIHN5c3RlbVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uc2V0dGluZ3MtY29udGVudC1jYXJkIHtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgfVxuXG4gICAgPiAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAobWQpIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS04KSB2YXIoLS1zd3Atc3BhY2UtOCkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgPiAuY2FyZC1mb290ZXIge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgICAgICBib3JkZXItdG9wLWNvbG9yOiB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcblxuICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKG1kKSB7XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2VjdGlvbiBibG9ja3MgaW5zaWRlIHRoZSBjYXJkIHVzZSBsaWdodGVyIGRpdmlkZXJzIHNvIHRoZSBwYWdlIHJlYWRzIGFzXG4gICAgLy8gYSBzaW5nbGUgcXVpZXQgc3VyZmFjZSwgbm90IGZpdmUgc3RhY2tlZCBjYXJkcy5cblxuICAgIC5jYXJkLWJvZHkgPiAuYm9yZGVyLWJvdHRvbSB7XG4gICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLXN3cC1ib3JkZXItbGlnaHQpICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLy8gU2VjdGlvbiBoZWFkaW5nOiBtYXRjaCB0aGUgZGVzaWduIHN5c3RlbSB0aXRsZSBzY2FsZSBhbmQgbGV0IHRoZSBpY29uXG4gICAgLy8gYmUgYSBzbGF0ZSBhY2NlbnQgcmF0aGVyIHRoYW4gYSBmaWZ0aCBncmVlbiBlbGVtZW50IG9uIHRoZSBwYWdlLlxuXG4gICAgLmNhcmQtYm9keSBoMyB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xuXG4gICAgICAgID4gc3ZnIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBIZWxwZXIgcGFyYWdyYXBocyBzaXQgdW5kZXIgaGVhZGluZ3M7IGNhcCB0aGVpciByZWFkaW5nIHdpZHRoLlxuXG4gICAgLmNhcmQtYm9keSBoMyArIHAudGV4dC1tdXRlZCB7XG4gICAgICAgIG1heC13aWR0aDogNjVjaDtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIExvZ28gVXBsb2FkIC0gQ3VzdG9tIGRyb3B6b25lIHN0eWxpbmdcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmxvZ28tdXBsb2FkLWNhcmQge1xuXG4gICAgLmxvZ28tcHJldmlldy1mcmFtZSB7XG4gICAgICAgIHdpZHRoOiA4MHB4O1xuICAgICAgICBoZWlnaHQ6IDgwcHg7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNlMmU4ZjA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICBvYmplY3QtZml0OiBjb250YWluO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRyb3B6b25lIHtcbiAgICAgICAgYm9yZGVyOiAycHggZGFzaGVkICNjYmQ1ZTE7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcbiAgICAgICAgbWluLWhlaWdodDogYXV0bztcblxuICAgICAgICAmOmhvdmVyLFxuICAgICAgICAmLmRyb3B6b25lLWRyYWdvdmVyIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjAyKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRGFuZ2VyIFpvbmUgLSBzZXJpb3VzLCBub3QgdGhlYXRyaWNhbFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uc2V0dGluZ3MtZGFuZ2VyLXpvbmUgLmNhcmQge1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWRhbmdlci1saWdodCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiBub25lO1xuICAgIH1cblxuICAgIC5jYXJkLWhlYWRlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1kYW5nZXItbGlnaHRlcikgIWltcG9ydGFudDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tc3dwLWRhbmdlci1saWdodCkgIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgICAgICAuY2FyZC10aXRsZSB7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNSkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuXG4gICAgICAgIGgzIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEZWxldGUgQ29tcGFueSBNb2RhbCAtIEVuaGFuY2VkIHN0eWxpbmdcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuI2RlbGV0ZUNvbXBhbnlNb2RhbCB7XG5cbiAgICAubW9kYWwtY29udGVudCB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMjVweCA1MHB4IC0xMnB4IHJnYigwIDAgMCAvIDI1JSk7XG4gICAgfVxuXG4gICAgLmZvbnQtbW9ub3NwYWNlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZlZjJmMjtcbiAgICAgICAgcGFkZGluZzogMC41cmVtIDFyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEN1c3RvbSBGaWVsZHMgLSBSZW9yZGVyYWJsZSBsaXN0XG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jdXN0b20tZmllbGQtbGlzdCB7XG5cbiAgICAuY3VzdG9tLWZpZWxkLXJvdyB7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMTIwbXMgZWFzZTtcblxuICAgICAgICAmOmhvdmVyIC5jdXN0b20tZmllbGQtaGFuZGxlIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLWJvZHktY29sb3IsICMxZTI5M2IpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5zb3J0YWJsZS1naG9zdCB7XG4gICAgICAgICAgICBvcGFjaXR5OiAwLjQ7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiwgOTkgMTAyIDI0MSksIDAuMDYpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5zb3J0YWJsZS1jaG9zZW4ge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IsIDk5IDEwMiAyNDEpLCAwLjA0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jdXN0b20tZmllbGQtaGFuZGxlIHtcbiAgICAgICAgY3Vyc29yOiBncmFiO1xuICAgICAgICBwYWRkaW5nOiAwLjI1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1tdXRlZCwgIzk0YTNiOCk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xuXG4gICAgICAgICY6YWN0aXZlIHtcbiAgICAgICAgICAgIGN1cnNvcjogZ3JhYmJpbmc7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFByaW50IFN0eWxlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgcHJpbnQge1xuXG4gICAgLnNldHRpbmdzLXBhZ2Uge1xuXG4gICAgICAgIC5uYXYtdW5kZXJsaW5lLFxuICAgICAgICAuc2V0dGluZ3MtZGFuZ2VyLXpvbmUsXG4gICAgICAgIC5jYXJkLWZvb3RlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERlc2lnbiB0ZW1wbGF0ZSBwaWNrZXIgKFNldHRpbmdzID4gRGVzaWduKVxuLy8gU2VsZi1jb250YWluZWQ6IGRvZXMgbm90IHJlbHkgb24gVGFibGVyJ3MgZm9ybS1pbWFnZWNoZWNrIGNvbXBvbmVudC4gVGhlXG4vLyByYWRpbyBpcyB2aXN1YWxseSBoaWRkZW4gYW5kIHRvZ2dsZWQgdGhyb3VnaCBpdHMgd3JhcHBpbmcgPGxhYmVsPjsgdGhlXG4vLyBzZWxlY3RlZCBzdGF0ZSBzaG93cyBhcyBhIHByaW1hcnkgYm9yZGVyIG9uIHRoZSBjYXJkIHBsdXMgYSBjaGVjayBiYWRnZS5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnRlbXBsYXRlLXBpY2tlciB7XG5cbiAgICAudGVtcGxhdGUtcGlja2VyLWNhcmQge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4xNXMgZWFzZSwgYm94LXNoYWRvdyAwLjE1cyBlYXNlO1xuXG4gICAgICAgICY6aGFzKC50ZW1wbGF0ZS1waWNrZXItaW5wdXQ6Y2hlY2tlZCkge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnksICMyMDZiYzQpO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHJnYmEodmFyKC0tdGJsci1wcmltYXJ5LXJnYiwgMzIsIDEwNywgMTk2KSwgMC4yNSk7XG4gICAgICAgIH1cblxuICAgICAgICAmOmhhcygudGVtcGxhdGUtcGlja2VyLWlucHV0OmZvY3VzLXZpc2libGUpIHtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKHZhcigtLXRibHItcHJpbWFyeS1yZ2IsIDMyLCAxMDcsIDE5NiksIDAuNSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAudGVtcGxhdGUtcGlja2VyLW9wdGlvbiB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cblxuICAgIC8vIFZpc3VhbGx5IGhpZGRlbiwgYnV0IHN0aWxsIGZvcm0tc3VibWl0dGFibGUgYW5kIGZvY3VzYWJsZTsgY2xpY2tzIG9uXG4gICAgLy8gdGhlIGxhYmVsICh0aHVtYm5haWwpIHRvZ2dsZSBpdCBuYXRpdmVseS5cblxuICAgIC50ZW1wbGF0ZS1waWNrZXItaW5wdXQge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHdpZHRoOiAxcHg7XG4gICAgICAgIGhlaWdodDogMXB4O1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgfVxuXG4gICAgLnRlbXBsYXRlLXBpY2tlci10aHVtYiB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBhc3BlY3QtcmF0aW86IDQgLyAzO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWJnLXN1cmZhY2Utc2Vjb25kYXJ5LCAjZjFmNWY5KTtcblxuICAgICAgICBpZnJhbWUge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIHdpZHRoOiA0MDAlO1xuICAgICAgICAgICAgaGVpZ2h0OiA0MDAlO1xuICAgICAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjI1KTtcbiAgICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IDAgMDtcblxuICAgICAgICAgICAgLy8gVGhlIGlmcmFtZSBtdXN0IG5ldmVyIHN3YWxsb3cgY2xpY2tzIG1lYW50IGZvciB0aGUgbGFiZWwuXG4gICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENoZWNrIGJhZGdlIGluIHRoZSB0aHVtYm5haWwgY29ybmVyLCBvbmx5IHdoaWxlIHNlbGVjdGVkLlxuXG4gICAgLnRlbXBsYXRlLXBpY2tlci1jaGVjayB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwLjVyZW07XG4gICAgICAgIHJpZ2h0OiAwLjVyZW07XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB3aWR0aDogMS43NXJlbTtcbiAgICAgICAgaGVpZ2h0OiAxLjc1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItcHJpbWFyeSwgIzIwNmJjNCk7XG4gICAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgICAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiKDE1IDIzIDQyIC8gMjUlKTtcbiAgICB9XG5cbiAgICAudGVtcGxhdGUtcGlja2VyLW9wdGlvbjpoYXMoLnRlbXBsYXRlLXBpY2tlci1pbnB1dDpjaGVja2VkKSAudGVtcGxhdGUtcGlja2VyLWNoZWNrIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICB9XG5cbiAgICAmLnRlbXBsYXRlLXBpY2tlci1kaXNhYmxlZCB7XG5cbiAgICAgICAgLnRlbXBsYXRlLXBpY2tlci1vcHRpb24ge1xuICAgICAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC50ZW1wbGF0ZS1waWNrZXItdGh1bWIge1xuICAgICAgICAgICAgb3BhY2l0eTogMC42O1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLy8gQnJlYWtwb2ludCB2aWV3cG9ydCBzaXplcyBhbmQgbWVkaWEgcXVlcmllcy5cbi8vXG4vLyBCcmVha3BvaW50cyBhcmUgZGVmaW5lZCBhcyBhIG1hcCBvZiAobmFtZTogbWluaW11bSB3aWR0aCksIG9yZGVyIGZyb20gc21hbGwgdG8gbGFyZ2U6XG4vL1xuLy8gICAgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweClcbi8vXG4vLyBUaGUgbWFwIGRlZmluZWQgaW4gdGhlIGAkZ3JpZC1icmVha3BvaW50c2AgZ2xvYmFsIHZhcmlhYmxlIGlzIHVzZWQgYXMgdGhlIGAkYnJlYWtwb2ludHNgIGFyZ3VtZW50IGJ5IGRlZmF1bHQuXG5cbi8vIE5hbWUgb2YgdGhlIG5leHQgYnJlYWtwb2ludCwgb3IgbnVsbCBmb3IgdGhlIGxhc3QgYnJlYWtwb2ludC5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20pXG4vLyAgICBtZFxuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcbi8vICAgIG1kXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20sICRicmVha3BvaW50LW5hbWVzOiAoeHMgc20gbWQgbGcgeGwgeHhsKSlcbi8vICAgIG1kXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludC1uYW1lczogbWFwLWtleXMoJGJyZWFrcG9pbnRzKSkge1xuICAkbjogaW5kZXgoJGJyZWFrcG9pbnQtbmFtZXMsICRuYW1lKTtcbiAgQGlmIG5vdCAkbiB7XG4gICAgQGVycm9yIFwiYnJlYWtwb2ludCBgI3skbmFtZX1gIG5vdCBmb3VuZCBpbiBgI3skYnJlYWtwb2ludHN9YFwiO1xuICB9XG4gIEByZXR1cm4gaWYoJG4gPCBsZW5ndGgoJGJyZWFrcG9pbnQtbmFtZXMpLCBudGgoJGJyZWFrcG9pbnQtbmFtZXMsICRuICsgMSksIG51bGwpO1xufVxuXG4vLyBNaW5pbXVtIGJyZWFrcG9pbnQgd2lkdGguIE51bGwgZm9yIHRoZSBzbWFsbGVzdCAoZmlyc3QpIGJyZWFrcG9pbnQuXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1taW4oc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxuLy8gICAgNTc2cHhcbkBmdW5jdGlvbiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICBAcmV0dXJuIGlmKCRtaW4gIT0gMCwgJG1pbiwgbnVsbCk7XG59XG5cbi8vIE1heGltdW0gYnJlYWtwb2ludCB3aWR0aC5cbi8vIFRoZSBtYXhpbXVtIHZhbHVlIGlzIHJlZHVjZWQgYnkgMC4wMnB4IHRvIHdvcmsgYXJvdW5kIHRoZSBsaW1pdGF0aW9ucyBvZlxuLy8gYG1pbi1gIGFuZCBgbWF4LWAgcHJlZml4ZXMgYW5kIHZpZXdwb3J0cyB3aXRoIGZyYWN0aW9uYWwgd2lkdGhzLlxuLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9tZWRpYXF1ZXJpZXMtNC8jbXEtbWluLW1heFxuLy8gVXNlcyAwLjAycHggcmF0aGVyIHRoYW4gMC4wMXB4IHRvIHdvcmsgYXJvdW5kIGEgY3VycmVudCByb3VuZGluZyBidWcgaW4gU2FmYXJpLlxuLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgyNjFcbi8vXG4vLyAgICA+PiBicmVha3BvaW50LW1heChtZCwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXG4vLyAgICA3NjcuOThweFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtYXg6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XG4gIEByZXR1cm4gaWYoJG1heCBhbmQgJG1heCA+IDAsICRtYXggLSAuMDIsIG51bGwpO1xufVxuXG4vLyBSZXR1cm5zIGEgYmxhbmsgc3RyaW5nIGlmIHNtYWxsZXN0IGJyZWFrcG9pbnQsIG90aGVyd2lzZSByZXR1cm5zIHRoZSBuYW1lIHdpdGggYSBkYXNoIGluIGZyb250LlxuLy8gVXNlZnVsIGZvciBtYWtpbmcgcmVzcG9uc2l2ZSB1dGlsaXRpZXMuXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1pbmZpeCh4cywgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXG4vLyAgICBcIlwiICAoUmV0dXJucyBhIGJsYW5rIHN0cmluZylcbi8vICAgID4+IGJyZWFrcG9pbnQtaW5maXgoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxuLy8gICAgXCItc21cIlxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaW5maXgoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgQHJldHVybiBpZihicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKSA9PSBudWxsLCBcIlwiLCBcIi0jeyRuYW1lfVwiKTtcbn1cblxuLy8gTWVkaWEgb2YgYXQgbGVhc3QgdGhlIG1pbmltdW0gYnJlYWtwb2ludCB3aWR0aC4gTm8gcXVlcnkgZm9yIHRoZSBzbWFsbGVzdCBicmVha3BvaW50LlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50IGFuZCB3aWRlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LXVwKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAaWYgJG1pbiB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gTWVkaWEgb2YgYXQgbW9zdCB0aGUgbWF4aW11bSBicmVha3BvaW50IHdpZHRoLiBObyBxdWVyeSBmb3IgdGhlIGxhcmdlc3QgYnJlYWtwb2ludC5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBhbmQgbmFycm93ZXIuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1kb3duKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAaWYgJG1heCB7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gTWVkaWEgdGhhdCBzcGFucyBtdWx0aXBsZSBicmVha3BvaW50IHdpZHRocy5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSBiZXR3ZWVuIHRoZSBtaW4gYW5kIG1heCBicmVha3BvaW50c1xuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtYmV0d2VlbigkbG93ZXIsICR1cHBlciwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBicmVha3BvaW50LW1pbigkbG93ZXIsICRicmVha3BvaW50cyk7XG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCR1cHBlciwgJGJyZWFrcG9pbnRzKTtcblxuICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbG93ZXIsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtaW4gPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKCR1cHBlciwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8gTWVkaWEgYmV0d2VlbiB0aGUgYnJlYWtwb2ludCdzIG1pbmltdW0gYW5kIG1heGltdW0gd2lkdGhzLlxuLy8gTm8gbWluaW11bSBmb3IgdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQsIGFuZCBubyBtYXhpbXVtIGZvciB0aGUgbGFyZ2VzdCBvbmUuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgb25seSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCwgbm90IHZpZXdwb3J0cyBhbnkgd2lkZXIgb3IgbmFycm93ZXIuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1vbmx5KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46ICBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgJG5leHQ6IGJyZWFrcG9pbnQtbmV4dCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgJG1heDogIGJyZWFrcG9pbnQtbWF4KCRuZXh0LCAkYnJlYWtwb2ludHMpO1xuXG4gIEBpZiAkbWluICE9IG51bGwgYW5kICRtYXggIT0gbnVsbCB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1heCA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRuYW1lLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWluID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkbmV4dCwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cbiIsIi8qKlxuICogU29saWRJbnZvaWNlIERhc2hib2FyZCBTdHlsZXNcbiAqXG4gKiBTdHlsZXMgZm9yIHRoZSByZWRlc2lnbmVkIGRhc2hib2FyZCBpbmNsdWRpbmcgaGVybyBzdGF0cyxcbiAqIGNoYXJ0cywgYXR0ZW50aW9uIHJlcXVpcmVkIHNlY3Rpb24sIHF1aWNrIGFjdGlvbnMsIGFuZCBhY3Rpdml0eSBmZWVkLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBIRVJPIFNUQVRTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBGb3VyIHRpbGVzLCBidXQgZGVsaWJlcmF0ZWx5IG5vdCBmb3VyIGVxdWFsIHRpbGVzLiBUaGUgcm93IGlzIGxhaWQgb3V0IG9uIGFcbi8vIG5pbmUtdHJhY2sgZ3JpZDogb3JkaW5hcnkgdGlsZXMgc3BhbiB0d28gdHJhY2tzLCB0aGUgdXJnZW50IG9uZSBzcGFucyB0aHJlZS5cbi8vIFNwYW5zIGFyZSB1c2VkIGluc3RlYWQgb2YgcG9zaXRpb25hbCBjb2x1bW4gc2l6ZXMgc28gdGhlIGVtcGhhc2lzIGZvbGxvd3MgdGhlXG4vLyBgLS11cmdlbnRgIGNsYXNzIHJhdGhlciB0aGFuIHRoZSB0aWxlJ3MgcG9zaXRpb24gaW4gdGhlIG1hcmt1cC5cblxuLmRhc2hib2FyZC1oZXJvLXN0YXRzIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuXG4gICAgQG1lZGlhICh3aWR0aCA+PSA1NzdweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgIH1cblxuICAgIEBtZWRpYSAod2lkdGggPj0gMTIwMXB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDksIDFmcik7XG4gICAgfVxufVxuXG4uc3RhdC1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1zbSk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuXG4gICAgLy8gTm8gaG92ZXIgdHJlYXRtZW50OiB0aGUgdGlsZSBpcyBhbiBpbmVydCBkaXYgd2l0aCBubyBsaW5rIGFuZCBubyBoYW5kbGVyLlxuICAgIC8vIE5vdGhpbmcgaGVyZSB0cmFuc2l0aW9ucywgc28gdGhlcmUgaXMgbm90aGluZyBmb3IgcmVkdWNlZC1tb3Rpb24gdG8gdW5kby5cblxuICAgIEBtZWRpYSAod2lkdGggPj0gMTIwMXB4KSB7XG4gICAgICAgIGdyaWQtY29sdW1uOiBzcGFuIDI7XG4gICAgfVxuXG4gICAgLy8gU3RhdGUgaXMgY2FycmllZCBieSB0aGUgaWNvbiB0aW50LCB0aGUgdmFsdWUgY29sb3VyIGFuZCB0aGUgc3VyZmFjZSB0aW50LlxuICAgIC8vIE5ldmVyIGEgc2lkZSBzdHJpcGUsIG5ldmVyIGEgZ2xvdy5cbiAgICAvLyBUaGUgdGludCBsaXZlcyBvbiAtLWRhbmdlciBhbG9uZSwgbmV2ZXIgb24gLS11cmdlbnQuIC0tdXJnZW50IGlzIGFwcGxpZWRcbiAgICAvLyB1bmNvbmRpdGlvbmFsbHkgdG8gaG9sZCB0aGUgZ3JpZCB0cmFjaywgc28gdGludGluZyBpdCB3b3VsZCBwYWludCBhIHJlZFxuICAgIC8vIGNhcmQgZm9yIGEgdXNlciB3aXRoIHplcm8gb3ZlcmR1ZSBpbnZvaWNlczogdGhlIHNhbWUgZGVmZWN0IGFzIHJlbmRlcmluZ1xuICAgIC8vIGEgJDAuMDAgdG90YWwgaW4gc3VjY2VzcyBncmVlbiwgbWlycm9yZWQuXG5cbiAgICAmLS1kYW5nZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0ZXIpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1kYW5nZXItbGlnaHQpO1xuICAgIH1cblxuICAgIC8vIFwiT3ZlcmR1ZVwiIGlzIHRoZSBvbmx5IGFjdGlvbmFibGUgbnVtYmVyIGluIHRoZSByb3csIHNvIGl0IG11c3Qgbm90IHJlYWQgYXNcbiAgICAvLyBpbnRlcmNoYW5nZWFibGUgd2l0aCB0aGUgdG90YWxzIGJlc2lkZSBpdDogaGFsZiBhZ2FpbiBhcyB3aWRlIHdoZXJlIHRoZXJlXG4gICAgLy8gaXMgcm9vbSBmb3IgYW4gYXN5bW1ldHJpYyByb3csIGFuZCBhIGZ1bGwgdHlwZSBzdGVwIGxhcmdlciBhdCBldmVyeSB3aWR0aC5cblxuICAgICYtLXVyZ2VudCB7XG4gICAgICAgIEBtZWRpYSAod2lkdGggPj0gMTIwMXB4KSB7XG4gICAgICAgICAgICBncmlkLWNvbHVtbjogc3BhbiAzO1xuICAgICAgICB9XG5cbiAgICAgICAgLnN0YXQtdmFsdWUge1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC0zeGwpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uc3RhdC1jYXJkLWNvbnRlbnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi5zdGF0LWljb24ge1xuICAgIHdpZHRoOiA0OHB4O1xuICAgIGhlaWdodDogNDhweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZmxleC1zaHJpbms6IDA7XG5cbiAgICAmLS1wcmltYXJ5IHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIH1cblxuICAgICYtLXN1Y2Nlc3Mge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgfVxuXG4gICAgJi0tZGFuZ2VyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICB9XG5cbiAgICAmLS13YXJuaW5nIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXdhcm5pbmctbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXdhcm5pbmcpO1xuICAgIH1cblxuICAgICYtLWluZm8ge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtaW5mby1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtaW5mbyk7XG4gICAgfVxufVxuXG4uc3RhdC1pbmZvIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgbWluLXdpZHRoOiAwO1xufVxuXG4uc3RhdC1sYWJlbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXN3cC10cmFja2luZy13aWRlcik7XG59XG5cbi5zdGF0LXZhbHVlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LTJ4bCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICBsZXR0ZXItc3BhY2luZzogdmFyKC0tc3dwLXRyYWNraW5nLXRpZ2h0KTtcbiAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuXG4gICAgLy8gR3JlZW4gbWVhbnMgXCJQYWlkXCIuIEEgbGlmZXRpbWUgcmV2ZW51ZSBhZ2dyZWdhdGUgaXMgbm90IGEgcGF5bWVudCBzdGF0ZSxcbiAgICAvLyBzbyB0aGVyZSBpcyBubyBgLS1zdWNjZXNzYCBoZXJlOyBwYWlkIHNlbWFudGljcyBsaXZlIGluIGAubW9uZXktLXBhaWRgLlxuXG4gICAgJi0tZGFuZ2VyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXItaG92ZXIpO1xuICAgIH1cblxuICAgIC8vIFRoZSB0aWxlIGFscmVhZHkgY2FycmllcyB0aGUgZW1waGFzaXM6IGAuc3RhdC12YWx1ZWAgaXMgdGhlIGxhcmdlc3QgdGV4dCBpblxuICAgIC8vIHRoZSBjYXJkLiBgLm1vbmV5LS10b3RhbGAgc3RlcHBpbmcgaXQgdXAgYW5vdGhlciAxMi41JSBvbiB0b3Agb2YgdGhhdCBpcyB3aGF0XG4gICAgLy8gcHVzaGVkIFwiVVNEIDEyMCw4ODIuMTlcIiBwYXN0IHRoZSBjYXJkIGVkZ2Ugb24gYSBzcGFuLTIgdGlsZS4gVGhlIG1vZGlmaWVyIGlzXG4gICAgLy8ga2VwdCBmb3IgaXRzIHdlaWdodCwgd2hpY2ggdGhlIHRpbGUgc3RpbGwgd2FudHM7IG9ubHkgdGhlIHNpemUgc3RlcCBpcyB1bmRvbmUuXG4gICAgLy8gYC5tb25leWAgaXMgYHdoaXRlLXNwYWNlOiBub3dyYXBgIGJ5IGRlc2lnbiAoYSBjdXJyZW5jeSBjb2RlIG11c3QgbmV2ZXIgYmVcbiAgICAvLyBvcnBoYW5lZCBmcm9tIGl0cyBudW1iZXIpLCBzbyBhbiBhbW91bnQgdGhhdCBkb2VzIG5vdCBmaXQgb3ZlcmZsb3dzIHJhdGhlclxuICAgIC8vIHRoYW4gd3JhcHBpbmcuIFdpZHRoIGhhcyB0byBiZSB3b24gYmFjayBoZXJlLCBub3QgYWJzb3JiZWQgYXQgcmVuZGVyIHRpbWUuXG5cbiAgICAubW9uZXktLXRvdGFsIC5tb25leS1hbW91bnQge1xuICAgICAgICBmb250LXNpemU6IDFlbTtcbiAgICB9XG59XG5cbi5zdGF0LXN1YnZhbHVlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDSEFSVCBDT05UQUlORVJTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZGFzaGJvYXJkLWNoYXJ0LWNvbnRhaW5lciB7XG4gICAgbWluLWhlaWdodDogMjgwcHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uZGFzaGJvYXJkLXJldmVudWUtY2hhcnQge1xuICAgIGhlaWdodDogMjgwcHggIWltcG9ydGFudDtcbn1cblxuLmRhc2hib2FyZC1kb251dC1jb250YWluZXIge1xuICAgIG1pbi1oZWlnaHQ6IDI4MHB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi5kYXNoYm9hcmQtZG9udXQtY2hhcnQge1xuICAgIGhlaWdodDogMjgwcHggIWltcG9ydGFudDtcbn1cblxuLmRhc2hib2FyZC1kb251dC1jZW50ZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiA1MCU7XG5cbiAgICAvLyBDaGFydC5qcyBwYWludHMgdGhlIGxlZ2VuZCBpbnNpZGUgdGhlIGNhbnZhcyBhbG9uZyBpdHMgYm90dG9tIGVkZ2UsIHNvIHRoZVxuICAgIC8vIHJpbmcncyBjZW50cmUgc2l0cyBhIGxpdHRsZSBhYm92ZSB0aGUgY29udGFpbmVyJ3MgbWlkcG9pbnQuIFRoaXMgbnVkZ2VcbiAgICAvLyBjb21wZW5zYXRlcy4gSXQgaXMgYSBmaXhlZCBkaXN0YW5jZSByYXRoZXIgdGhhbiBhIHBlcmNlbnRhZ2Ugb2YgdGhpc1xuICAgIC8vIGVsZW1lbnQncyBvd24gaGVpZ2h0LCBzbyBjaGFuZ2luZyB0aGUgdG90YWwncyB0eXBlIHNpemUgb3Igd3JhcHBpbmcgaXRzXG4gICAgLy8gbGFiZWwgY2FuIG5vIGxvbmdlciBkcmFnIHRoZSBudW1iZXIgb2ZmIHRoZSByaW5nJ3MgY2VudHJlLlxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIGNhbGMoLTUwJSAtIHZhcigtLXN3cC1zcGFjZS0xLTUpKSk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIHotaW5kZXg6IDE7XG59XG5cbi5kYXNoYm9hcmQtZG9udXQtdG90YWwge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgLy8gRGVtb3RlZCBmcm9tIDMycHg6IHRoZSBsZWFzdCBhY3Rpb25hYmxlIHdpZGdldCBvbiB0aGUgcGFnZSBzaG91bGQgbm90IG93blxuICAgIC8vIGl0cyBsYXJnZXN0IG51bWJlci4gVGhhdCBub3cgYmVsb25ncyB0byB0aGUgb3ZlcmR1ZSBjb3VudC5cbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LTJ4bCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXN3cC10cmFja2luZy10aWdodCk7XG4gICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbn1cblxuLmRhc2hib2FyZC1kb251dC1sYWJlbCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiB2YXIoLS1zd3AtdHJhY2tpbmctd2lkZXIpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xufVxuXG4uZGFzaGJvYXJkLWNoYXJ0LWVtcHR5IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtOCk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uZGFzaGJvYXJkLWNoYXJ0LWVtcHR5LWljb24ge1xuICAgIC8vIFdhcyBgLS1zd3AtdGV4dC1saWdodGAgKDIuNTY6MSBvbiBzdXJmYWNlKTogdGVjaG5pY2FsbHkgZGVjb3JhdGlvbiwgYnV0XG4gICAgLy8gY2xvc2UgZW5vdWdoIHRvIGludmlzaWJsZSB0aGF0IGl0IHJlYWQgYXMgYSByZW5kZXJpbmcgZmF1bHQuIGAtLXRleHQtbXV0ZWRgXG4gICAgLy8gY2xlYXJzIDEuNC4xMSBmb3IgYSBtZWFuaW5nZnVsIGdyYXBoaWMgYW5kIHN0aWxsIHNpdHMgYSBzdGVwIGxpZ2h0ZXIgdGhhblxuICAgIC8vIHRoZSB0ZXh0IGJlbG93IGl0LCBzbyB0aGUgaWNvbiBzdXBwb3J0cyB0aGUgbWVzc2FnZSBpbnN0ZWFkIG9mIGxlYWRpbmcgaXQuXG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5kYXNoYm9hcmQtY2hhcnQtZW1wdHktdGV4dCB7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4vLyBBIGZhaWxlZCBxdWVyeSBpcyBub3QgYW4gZW1wdHkgYWNjb3VudCwgYW5kIG11c3QgbmV2ZXIgaW1wZXJzb25hdGUgb25lLiBUaGVcbi8vIGVtcHR5IHN0YXRlIGFib3ZlIGlzIGNhbG0gYW5kIGVuY291cmFnaW5nOyB0aGlzIG9uZSBuYW1lcyBhIHByb2JsZW0gYW5kIG9mZmVyc1xuLy8gYSB3YXkgb3V0IG9mIGl0LiBDb2xvdXIgYW1wbGlmaWVzIHRoZSBkaXN0aW5jdGlvbiwgaXQgbmV2ZXIgY2FycmllcyBpdCBhbG9uZTpcbi8vIHRoZSB0ZXh0IGxhYmVsIGRvZXMgdGhhdC5cblxuLmRhc2hib2FyZC1jaGFydC1lcnJvciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTgpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLmRhc2hib2FyZC1jaGFydC1lcnJvci1pY29uIHtcbiAgICAvLyBDb250YWluZWQgaW4gYSB0aW50ZWQgbWVkYWxsaW9uLCB1bmxpa2UgdGhlIGVtcHR5IHN0YXRlJ3MgYmFyZSBpY29uLiBUaGlzXG4gICAgLy8gaXMgdGhlIHNhbWUgXCJzdGF0ZSBtZWRhbGxpb25cIiBzaGFwZSBgLmF0dGVudGlvbi1lbXB0eS1pY29uYCBhbHJlYWR5IHVzZXMsXG4gICAgLy8gc28gdGhlIHR3byBzdGF0ZXMgYXJlIHRvbGQgYXBhcnQgYnkgZm9ybSBiZWZvcmUgY29sb3VyIGlzIHJlYWQgYXQgYWxsLlxuICAgIHdpZHRoOiA2NHB4O1xuICAgIGhlaWdodDogNjRweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1kYW5nZXItbGlnaHQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTMpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgd2lkdGg6IDMycHg7XG4gICAgICAgIGhlaWdodDogMzJweDtcbiAgICB9XG59XG5cbi5kYXNoYm9hcmQtY2hhcnQtZXJyb3ItdGl0bGUge1xuICAgIC8vIEhlYXZpZXIgYW5kIGRhcmtlciB0aGFuIGAuZGFzaGJvYXJkLWNoYXJ0LWVtcHR5LXRleHRgOiBhIHN0YXRlbWVudCBvZiB3aGF0XG4gICAgLy8gd2VudCB3cm9uZywgbm90IGEgc2hydWcuXG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDAgMCB2YXIoLS1zd3Atc3BhY2UtMSk7XG59XG5cbi5kYXNoYm9hcmQtY2hhcnQtZXJyb3ItdGV4dCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW46IDAgMCB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgbWF4LXdpZHRoOiA0MmNoO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQVRURU5USU9OIFJFUVVJUkVEXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYXR0ZW50aW9uLWVtcHR5IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtOCk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uYXR0ZW50aW9uLWVtcHR5LWljb24ge1xuICAgIHdpZHRoOiA2NHB4O1xuICAgIGhlaWdodDogNjRweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0ZXIpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLmF0dGVudGlvbi1lbXB0eS10ZXh0IHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5hdHRlbnRpb24tc2VjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLmF0dGVudGlvbi1zZWN0aW9uIHtcblxuICAgICY6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICB9XG59XG5cbi5hdHRlbnRpb24tc2VjdGlvbi1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXN3cC10cmFja2luZy13aWRlcik7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTMpO1xuXG4gICAgJi0tZGFuZ2VyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xuICAgIH1cblxuICAgICYtLXdhcm5pbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXdhcm5pbmctaG92ZXIpO1xuICAgIH1cblxuICAgICYtLWluZm8ge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWluZm8pO1xuICAgIH1cblxuICAgICYtLXByaW1hcnkge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIH1cbn1cblxuLmF0dGVudGlvbi1iYWRnZSB7XG4gICAgLy8gV2FzIDExcHgsIG9mZi1yYW1wLiBCYWRnZSB0ZXh0IGlzIHRoZSBkb2N1bWVudGVkIExhYmVsIHN0ZXAgKDEycHgpLlxuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgIHBhZGRpbmc6IDJweCA2cHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuXG4gICAgJi0tZGFuZ2VyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICB9XG5cbiAgICAmLS13YXJuaW5nIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXdhcm5pbmctbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXdhcm5pbmctaG92ZXIpO1xuICAgIH1cblxuICAgICYtLWluZm8ge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtaW5mby1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtaW5mbyk7XG4gICAgfVxuXG4gICAgJi0tcHJpbWFyeSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB9XG59XG5cbi5hdHRlbnRpb24taXRlbXMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLmF0dGVudGlvbi1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93IHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlLWhvdmVyKTtcbiAgICB9XG5cbiAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAmLS1kYW5nZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0ZXIpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodCk7XG4gICAgICAgIH1cblxuICAgICAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctZGFuZ2VyKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmF0dGVudGlvbi1pdGVtLW1haW4ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBtaW4td2lkdGg6IDA7XG4gICAgZmxleDogMTtcbn1cblxuLmF0dGVudGlvbi1pdGVtLWlkIHtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBmb250LWZhbWlseTogdmFyKC0tc3dwLWZvbnQtbW9ubyk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG59XG5cbi5hdHRlbnRpb24taXRlbS1jbGllbnQge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbn1cblxuLmF0dGVudGlvbi1pdGVtLW1ldGEge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLmF0dGVudGlvbi1pdGVtLWFtb3VudCB7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbn1cblxuLmF0dGVudGlvbi1pdGVtLWRhdGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFFVSUNLIEFDVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5xdWljay1hY3Rpb25zLWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLnF1aWNrLWFjdGlvbi1idG4ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdyB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctbWQpO1xuICAgIH1cblxuICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgIH1cblxuICAgICYtLXByaW1hcnkge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWRhcmspO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi0tc2Vjb25kYXJ5IHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXNlY29uZGFyeS1saWdodGVyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1zZWNvbmRhcnktZGFyayk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc2Vjb25kYXJ5LWxpZ2h0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtLWluZm8ge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtaW5mby1saWdodGVyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1pbmZvLWhvdmVyKTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1pbmZvLWxpZ2h0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtLXN1Y2Nlc3Mge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodGVyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzLWhvdmVyKTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG5cbiAgICAgICAgJixcbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ucXVpY2stYWN0aW9uLWljb24ge1xuICAgIHdpZHRoOiA0MHB4O1xuICAgIGhlaWdodDogNDBweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi5xdWljay1hY3Rpb24tbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQUNUSVZJVFkgVElNRUxJTkVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblxuLmFjdGl2aXR5LXRpbWVsaW5lIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5cbi5hY3Rpdml0eS1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSAwO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgfVxufVxuXG4uYWN0aXZpdHktaWNvbiB7XG4gICAgd2lkdGg6IDM2cHg7XG4gICAgaGVpZ2h0OiAzNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIG1hcmdpbi10b3A6IDJweDtcblxuICAgICYtLXBheW1lbnQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgfVxuXG4gICAgJi0taW52b2ljZSxcbiAgICAmLS1pbnZvaWNlX3NlbnQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgJi0tcXVvdGVfYWNjZXB0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgfVxuXG4gICAgJi0tcXVvdGVfZGVjbGluZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xuICAgIH1cblxuICAgICYtLXJlY3VycmluZ19nZW5lcmF0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtaW5mby1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtaW5mbyk7XG4gICAgfVxufVxuXG4uYWN0aXZpdHktY29udGVudCB7XG4gICAgZmxleDogMTtcbiAgICBtaW4td2lkdGg6IDA7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4uYWN0aXZpdHktZGVzY3JpcHRpb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcbn1cblxuXG4uYWN0aXZpdHktdGV4dCB7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG5cbiAgICAvLyBXYXMgMTRweCwgb2ZmLXJhbXAuIEJvZHkgaXMgMTVweCwgYW5kIGl0IHBhaXJzIHdpdGggdGhlIDEzcHggbW9ubyBkb2MtbGlua1xuICAgIC8vIG5lc3RlZCBpbnNpZGUgaXQgZXhhY3RseSBhcyB0aGUgcmFtcCBpbnRlbmRzLiBJdCBhbHNvIGtlZXBzIHRoaXMgcm93IGEgc3RlcFxuICAgIC8vIGFib3ZlIGAuYWN0aXZpdHktZGV0YWlsc2AgYmVsb3csIHdoaWNoIHRoZSAxM3B4IHN0ZXAgd291bGQgaGF2ZSBmbGF0dGVuZWQuXG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbn1cblxuLmFjdGl2aXR5LWRvYy1saW5rIHtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1zd3AtZm9udC1tb25vKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWRhcmspO1xuICAgIH1cblxuICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgIH1cbn1cblxuLmFjdGl2aXR5LWRldGFpbHMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG59XG5cbi5hY3Rpdml0eS1jbGllbnQtbGluayB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDRweDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICBzdmcge1xuICAgICAgICBvcGFjaXR5OiAwLjY7XG4gICAgfVxufVxuXG4uYWN0aXZpdHktc2VwYXJhdG9yIHtcbiAgICAvLyBUaGlzIGlzIHRleHQsIG5vdCBhIHJ1bGUgb3IgYSBncmFwaGljLiBgLS1zd3AtdGV4dC1saWdodGAgaXMgMi41NjoxIG9uIHRoZVxuICAgIC8vIGNhcmQgc3VyZmFjZSBhbmQgZmFpbHMgQUEgb3V0cmlnaHQuXG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbn1cblxuLmFjdGl2aXR5LWFtb3VudCB7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbn1cblxuLmFjdGl2aXR5LXRpbWUge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG59XG5cbiIsIi8qKlxuICogQ2xpZW50IFBhZ2UgU3R5bGVzXG4gKlxuICogQ3VzdG9tIHN0eWxlcyBmb3IgdGhlIENsaWVudCB2aWV3IHBhZ2UuXG4gKiBGb2xsb3dzIHRoZSBkZXNpZ24gc3lzdGVtIHRva2VucyBhbmQgbW9kZXJuIFNhYVMgYWVzdGhldGljLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENMSUVOVCBIRVJPIFNFQ1RJT05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNsaWVudC1oZXJvIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctc20pO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS02KTtcbn1cblxuLmNsaWVudC1oZXJvLXRpdGxlIHtcbiAgICBmb250LXNpemU6IDEuNzVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICBsaW5lLWhlaWdodDogMS4yO1xufVxuXG4uY2xpZW50LWhlcm8tbWV0YSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG5cbiAgICBhIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5jbGllbnQtaGVyby1tZXRhLWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xLTUpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTVEFUIENBUkRTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jbGllbnQtc3RhdC1sYWJlbCB7XG4gICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4uY2xpZW50LXN0YXQtdmFsdWUge1xuICAgIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG59XG5cbi8vIEluY29tZSByZWNlaXZlZCBpcyBhIHBvc2l0aXZlIHN0YXRlOyBzdWNjZXNzIGdyZWVuIGVhcm5zIGl0cyBwbGFjZS5cblxuLmNsaWVudC1zdGF0LXZhbHVlLS1zdWNjZXNzIHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xufVxuXG4vLyBcIk91dHN0YW5kaW5nXCIgbWVhbnMgb3dlZCwgbm90IG92ZXJkdWUuIEFtYmVyLCBub3QgZGFuZ2VyIHJlZC5cbi8vIEtlcHQgLS1kYW5nZXIgYWxpYXMgc28gYW55IGxlZ2FjeSBjYWxsZXJzIHN0aWxsIHJlbmRlciBtZWFuaW5nZnVsbHkuXG5cbi5jbGllbnQtc3RhdC12YWx1ZS0td2FybmluZyxcbi5jbGllbnQtc3RhdC12YWx1ZS0tZGFuZ2VyIHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXdhcm5pbmcpO1xufVxuXG4uY2xpZW50LXN0YXQtYmFkZ2VzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENMSUVOVCBDUkVESVQgU0VDVElPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY2xpZW50LWNyZWRpdC1jYXJkIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgIH1cbn1cblxuLmNsaWVudC1jcmVkaXQtaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiA0OHB4O1xuICAgIGhlaWdodDogNDhweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtaW5mby1saWdodGVyKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLWluZm8pO1xufVxuXG4uY2xpZW50LWNyZWRpdC1hbW91bnQge1xuICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi5jbGllbnQtY3JlZGl0LWxhYmVsIHtcbiAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRBQlMgTkFWSUdBVElPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY2xpZW50LXRhYnMtY2FyZCB7XG5cbiAgICAuY2FyZC1oZWFkZXIge1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICB9XG5cbiAgICAvKiAubmF2LXRhYnMge1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgIG1hcmdpbjogMCBjYWxjKC0xICogdmFyKC0tc3dwLXNwYWNlLTYpKTtcbiAgICAgICAgcGFkZGluZzogMCB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgfSAqL1xuXG4gICAgLm5hdi1saW5rIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAtMXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksIGJvcmRlci1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiKDQ2IDE1MCA1OCAvIDMwJSk7XG4gICAgICAgIH1cblxuICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmJhZGdlIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC42NXJlbTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjJlbSAwLjVlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC50YWItY29udGVudCB7XG4gICAgICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTRUNUSU9OIEhFQURFUlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNsaWVudC1zZWN0aW9uLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi5jbGllbnQtc2VjdGlvbi10aXRsZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gICAgLmJhZGdlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjdyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDT05UQUNUICYgQUREUkVTUyBDQVJEU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY2xpZW50LWNvbnRhY3QtY2FyZCxcbi5jbGllbnQtYWRkcmVzcy1jYXJkIHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LW1kKTtcbiAgICB9XG5cbiAgICAuY2FyZC1oZWFkZXIge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIH1cblxuICAgIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxufVxuXG4uY2xpZW50LWNvbnRhY3QtYXZhdGFyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDMycHg7XG4gICAgaGVpZ2h0OiAzMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbn1cblxuLmNsaWVudC1jb250YWN0LW5hbWUge1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xufVxuXG4uY2xpZW50LWNvbnRhY3QtZGV0YWlsIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yKTtcblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxufVxuXG4uY2xpZW50LWNvbnRhY3QtZGV0YWlsLWljb24ge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgbWFyZ2luLXRvcDogMnB4O1xufVxuXG4uY2xpZW50LWNvbnRhY3QtZGV0YWlsLWxhYmVsIHtcbiAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjAzZW07XG59XG5cbi5jbGllbnQtY29udGFjdC1kZXRhaWwtdmFsdWUge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcblxuICAgIGEge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSUNPTiBCVVRUT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5idG4taWNvbi1zbSB7XG4gICAgd2lkdGg6IDI4cHg7XG4gICAgaGVpZ2h0OiAyOHB4O1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLmJ0bi1naG9zdC1zZWNvbmRhcnkge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogbm9uZTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgfVxuXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRk9STSBBQ1RJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jbGllbnQtZm9ybS1hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBRERSRVNTIERJU1BMQVlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNsaWVudC1hZGRyZXNzLXRleHQge1xuICAgIHdoaXRlLXNwYWNlOiBwcmUtbGluZTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5jbGllbnQtYWRkcmVzcy1tYXAtbGluayB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xLTUpO1xuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFERElUSU9OQUwgQ09OVEFDVCBERVRBSUxTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jbGllbnQtY29udGFjdC1leHRyYSB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xufVxuXG4uY2xpZW50LWNvbnRhY3QtZXh0cmEtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wM2VtO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLmNsaWVudC1jb250YWN0LWV4dHJhLWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0xKTtcblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxufVxuXG4uY2xpZW50LWNvbnRhY3QtZXh0cmEtbGFiZWwge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgbWluLXdpZHRoOiA4MHB4O1xufVxuXG4uY2xpZW50LWNvbnRhY3QtZXh0cmEtdmFsdWUge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ1VTVE9NIEZJRUxEUyBDQVJEXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jdXN0b20tZmllbGRzLWNhcmQge1xuXG4gICAgLmNhcmQtaGVhZGVyIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICB9XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG59XG5cbi5jdXN0b20tZmllbGRzLWxpc3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLmN1c3RvbS1maWVsZHMtaXRlbSB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgxNDBweCwgMzAlKSAxZnI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSAwO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgfVxufVxuXG4uY3VzdG9tLWZpZWxkcy1sYWJlbCB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xLTUpO1xuICAgIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW46IDA7XG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDA7XG59XG5cbi5jdXN0b20tZmllbGRzLXZhbHVlIHtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG5cbiAgICBhIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYmFkZ2Uge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICB9XG59XG5cbkBtZWRpYSAod2lkdGggPD0gNTc1Ljk4cHgpIHtcblxuICAgIC5jdXN0b20tZmllbGRzLWl0ZW0ge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRVNQT05TSVZFIFNUWUxFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgKHdpZHRoIDw9IDk5MS45OHB4KSB7XG5cbiAgICAuY2xpZW50LWhlcm8ge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxuXG4gICAgLmNsaWVudC1oZXJvLXRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgfVxuXG4gICAgLmNsaWVudC1zdGF0LXZhbHVlIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgfVxufVxuXG5AbWVkaWEgKHdpZHRoIDw9IDc2Ny45OHB4KSB7XG5cbiAgICAuY2xpZW50LWhlcm8ge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmNsaWVudC1oZXJvLW1ldGEge1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB9XG5cbiAgICAuY2xpZW50LXRhYnMtY2FyZCAubmF2LXRhYnMge1xuICAgICAgICBtYXJnaW46IDAgY2FsYygtMSAqIHZhcigtLXN3cC1zcGFjZS00KSk7XG4gICAgICAgIHBhZGRpbmc6IDAgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAgICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuXG4gICAgICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY2xpZW50LXRhYnMtY2FyZCAubmF2LWl0ZW0ge1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICB9XG5cbiAgICAuY2xpZW50LXNlY3Rpb24taGVhZGVyIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUFJJTlQgU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSBwcmludCB7XG5cbiAgICAuY2xpZW50LWhlcm8gLmRyb3Bkb3duLFxuICAgIC5jbGllbnQtaGVybyAuYnRuLFxuICAgIC5jbGllbnQtc2VjdGlvbi1oZWFkZXIgLmJ0bixcbiAgICAuYnRuLWdob3N0LXNlY29uZGFyeSxcbiAgICAuYnRuLWdob3N0LWRhbmdlcixcbiAgICAuY2xpZW50LWZvcm0tYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuY2xpZW50LWhlcm8ge1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjREREREREO1xuICAgIH1cbn1cbiIsIi8qKlxuICogSW52b2ljZSBWaWV3IFBhZ2VcbiAqXG4gKiBBbGwgc2hhcmVkIGRvY3VtZW50IHZpZXcgc3R5bGVzIGFyZSBpbiBjb21wb25lbnRzL19kb2N1bWVudC12aWV3LnNjc3MuXG4gKiBJbnZvaWNlLXNwZWNpZmljIHJlY3VycmluZyBpbnZvaWNlIHN0eWxlcyBhcmUgYWxzbyBpbiB0aGF0IHNoYXJlZCBjb21wb25lbnQuXG4gKi9cblxuLy8gUmVjdXJyaW5nIGludm9pY2Ugc2lkZWJhcjogc2NoZWR1bGUgJiBnZW5lcmF0ZWQgaW52b2ljZXNcblxuLnJlY3VycmluZy1zY2hlZHVsZS1ncmlkIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5zY2hlZHVsZS1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLnJlY3VycmluZy1zY2hlZHVsZS1sYWJlbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSwgMC44NzVyZW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5zY2hlZHVsZS12YWx1ZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSwgMC44NzVyZW0pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0sIDUwMCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuXG4gICAgLy8gRGF0ZXMgYW5kIGNvdW50cyBsaW5lIHVwIGNsZWFubHkgZG93biB0aGUgc2NoZWR1bGUgc2lkZWJhclxuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG59XG5cbi5vY2N1cnJlbmNlcy1saXN0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi5vY2N1cnJlbmNlLWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtLCAwLjg3NXJlbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG5cbiAgICBzdmcge1xuICAgICAgICBvcGFjaXR5OiAwLjY7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cbn1cblxuLm9jY3VycmVuY2UtZGF0ZSB7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xufVxuXG4uZ2VuZXJhdGVkLWludm9pY2VzLWxpc3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLmdlbmVyYXRlZC1pbnZvaWNlLWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG59XG5cbi5nZW5lcmF0ZWQtaW52b2ljZS1saW5rIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20sIDAuODc1cmVtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtLCA1MDApO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxufVxuXG4uZ2VuZXJhdGVkLWludm9pY2UtaWQge1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCwgNjAwKTtcbn1cblxuLmdlbmVyYXRlZC1pbnZvaWNlLW1ldGEge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLmdlbmVyYXRlZC1pbnZvaWNlLWFtb3VudCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSwgMC44NzVyZW0pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0sIDUwMCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG59XG4iLCIvKipcbiAqIEV4dGVybmFsIEludm9pY2UgVmlld1xuICpcbiAqIEludm9pY2Utc3BlY2lmaWMgc3R5bGVzIGZvciB0aGUgcHVibGljLWZhY2luZyBpbnZvaWNlIHBhZ2UuXG4gKiBBbGwgc2hhcmVkIGV4dGVybmFsIGRvY3VtZW50IHN0eWxlcyBhcmUgaW4gY29tcG9uZW50cy9fZXh0ZXJuYWwtZG9jLXZpZXcuc2Nzcy5cbiAqL1xuXG4vLyBJbnZvaWNlLXNwZWNpZmljIGFjdGlvbiBidXR0b25cblxuLmJ0bi1pbnZvaWNlLWFjdGlvbiB7XG4gICAgcGFkZGluZzogMC43NXJlbSAxLjI1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgYm9yZGVyLXJhZGl1czogMC4zNzVyZW07XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiKDAgMCAwIC8gMTAlKTtcbiAgICB9XG5cbiAgICAmOmFjdGl2ZSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICB9XG59XG5cbi8vIFNjcmVlbiByZWFkZXIgb25seSB0ZXh0XG5cbi5zci1vbmx5IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDFweDtcbiAgICBoZWlnaHQ6IDFweDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbjogLTFweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGNsaXAtcGF0aDogaW5zZXQoNTAlKTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIGJvcmRlci13aWR0aDogMDtcbn1cblxuQG1lZGlhIHByaW50IHtcblxuICAgIC5idG4taW52b2ljZS1hY3Rpb246aG92ZXIge1xuICAgICAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbn1cbiIsIi8qKlxuICogRXh0ZXJuYWwgUXVvdGUgVmlld1xuICpcbiAqIEFsbCBzaGFyZWQgZXh0ZXJuYWwgZG9jdW1lbnQgc3R5bGVzIChpbmNsdWRpbmcgcXVvdGUgc3R5bGVzKSBhcmUgaW5cbiAqIGNvbXBvbmVudHMvX2V4dGVybmFsLWRvYy12aWV3LnNjc3MuXG4gKlxuICogVGhlcmUgYXJlIGN1cnJlbnRseSBubyBxdW90ZS1zcGVjaWZpYyBzdHlsZXMgYmV5b25kIHdoYXQgaXMgc2hhcmVkLlxuICovXG4iLCIvKipcbiAqIFF1b3RlIFZpZXcgUGFnZSAtIFF1b3RlLVNwZWNpZmljIFN0eWxlc1xuICpcbiAqIFNoYXJlZCBkb2N1bWVudCBsYXlvdXQgaXMgaW4gY29tcG9uZW50cy9fZG9jdW1lbnQtdmlldy5zY3NzLlxuICogVGhpcyBmaWxlIGlzIGludGVudGlvbmFsbHkgbWluaW1hbCAtIGFsbCBzaGFyZWQgZG9jIHZpZXcgc3R5bGVzIGFyZSBpbiB0aGUgY29tcG9uZW50LlxuICovXG5cbi8vIE5vIHF1b3RlLXNwZWNpZmljIG92ZXJyaWRlcyBuZWVkZWQgYmV5b25kIHdoYXQgX2RvY3VtZW50LXZpZXcuc2NzcyBwcm92aWRlcy5cbiIsIi8qKlxuICogUGF5bWVudCBNYXJrZXRwbGFjZSBTdHlsZXNcbiAqIE9ubHkgcGF5bWVudC1zcGVjaWZpYyBzdHlsZXMuIFNoYXJlZCBtYXJrZXRwbGFjZSBzdHlsZXMgYXJlIGluIGNvbXBvbmVudHMvX21hcmtldHBsYWNlLnNjc3MuXG4gKi9cblxuQGltcG9ydCAnfmJvb3RzdHJhcC9zY3NzL2Z1bmN0aW9ucyc7XG5AaW1wb3J0ICd+Ym9vdHN0cmFwL3Njc3MvdmFyaWFibGVzJztcbkBpbXBvcnQgJ35ib290c3RyYXAvc2Nzcy9taXhpbnMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQYXltZW50IE1hcmtldHBsYWNlIENvbnRhaW5lclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucGF5bWVudC1tYXJrZXRwbGFjZSB7XG4gICAgcGFkZGluZy1ib3R0b206IHZhcigtLXN3cC1zcGFjZS04KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTW9iaWxlIFRhYnMgTmF2aWdhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucGF5bWVudC1tYXJrZXRwbGFjZSA+IC5uYXYtdGFicyB7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuXG4gICAgLm5hdi1saW5rIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogLTFweDtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICB0cmFuc2l0aW9uOiB2YXIoLS1zd3AtdHJhbnNpdGlvbi1jb2xvcnMpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4zKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5iYWRnZS1zbSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDAuNjI1cmVtO1xuICAgICAgICAgICAgcGFkZGluZzogMC4xMjVyZW0gMC4zNzVyZW07XG4gICAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBHYXRld2F5IENhcmRzIEdyaWRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmdhdGV3YXktZ3JpZCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLmdhdGV3YXktY2FyZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBib3gtc2hhZG93OiAwIDFweCAzcHggMCByZ2IoMCAwIDAgLyA1JSk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiKDAgMCAwIC8gOCUpLCAwIDAgMCAxcHggdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG5cbiAgICAgICAgLmdhdGV3YXktaWNvbiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCkgMCUsIHZhcigtLXN3cC1wcmltYXJ5KSAxMDAlKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDRweCA4cHggcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5pcy1jb25maWd1cmVkIHtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjA1KSAwJSwgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjAyKSAxMDAlKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMyk7XG5cbiAgICAgICAgLmdhdGV3YXktaWNvbiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodCkgMCUsIHZhcigtLXN3cC1zdWNjZXNzKSAxMDAlKTtcbiAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMDgpIDAlLCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMDQpIDEwMCUpO1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLmlzLWN1c3RvbS1nYXRld2F5IHtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjA0KSAwJSwgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjAxKSAxMDAlKTtcbiAgICAgICAgYm9yZGVyOiAycHggZGFzaGVkIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4zKTtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICAgICAgLy8gQWRkIGhvcml6b250YWwgZGl2aWRlciBhZnRlciBjdXN0b20gZ2F0ZXdheVxuXG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgYm90dG9tOiBjYWxjKC0xICogdmFyKC0tc3dwLXNwYWNlLTYpIC8gMik7XG4gICAgICAgICAgICBsZWZ0OiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgICAgICByaWdodDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsXG4gICAgICAgICAgICAgICAgdHJhbnNwYXJlbnQgMCUsXG4gICAgICAgICAgICAgICAgdmFyKC0tc3dwLWJvcmRlcikgMTUlLFxuICAgICAgICAgICAgICAgIHZhcigtLXN3cC1ib3JkZXIpIDg1JSxcbiAgICAgICAgICAgICAgICB0cmFuc3BhcmVudCAxMDAlKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGluc2V0OiAtMnB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXByaW1hcnkpLCB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKSk7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICB6LWluZGV4OiAtMTtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLmdhdGV3YXktaWNvbiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCkgMCUsIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4yKSAxMDAlKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMik7XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4wOCkgMCUsIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4wMikgMTAwJSk7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG5cbiAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMC4wODtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmdhdGV3YXktaWNvbiB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXByaW1hcnkpIDAlLCB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKSAxMDAlKTtcbiAgICAgICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5nYXRld2F5LWNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG5cbiAgICAuZ2F0ZXdheS1pY29uIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiA1MnB4O1xuICAgICAgICBoZWlnaHQ6IDUycHg7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1ncmF5LTEwMCkgMCUsIHZhcigtLXN3cC1ncmF5LTIwMCkgMTAwJSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2IoMCAwIDAgLyA0JSk7XG4gICAgfVxuXG4gICAgaDYge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xuICAgIH1cblxuICAgIC50ZXh0LW11dGVkIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgfVxuXG4gICAgLmJ0biB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmJhZGdlLXNtIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjYyNXJlbTtcbiAgICAgICAgcGFkZGluZzogMC4ycmVtIDAuNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDJlbTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFjdGl2ZSBNZXRob2RzIFBhbmVsIC0gUmlnaHQgU2lkZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYWN0aXZlLW1ldGhvZHMtcGFuZWwge1xuXG4gICAgaDUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcbiAgICB9XG5cbiAgICA+IC5kLWZsZXggPiAuYmFkZ2Uge1xuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuMzVyZW0gMC43NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLWdyYXktMTAwKSAwJSwgdmFyKC0tc3dwLWdyYXktMjAwKSAxMDAlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggMnB4IHJnYigwIDAgMCAvIDUlKTtcbiAgICB9XG59XG5cbi5hY3RpdmUtbWV0aG9kcy1saXN0IHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4uYWN0aXZlLW1ldGhvZC1jYXJkIHtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCAwIHJnYigwIDAgMCAvIDUlKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2IoMCAwIDAgLyA4JSksIDAgMCAwIDFweCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMik7XG5cbiAgICAgICAgLnBheW1lbnQtbWV0aG9kLWljb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpIDAlLCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMTUpIDEwMCUpO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCA0cHggOHB4IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4xNSk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMDQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS01KTtcbiAgICB9XG5cbiAgICBoNiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4wNjI1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xuICAgIH1cblxuICAgIC5wYXltZW50LW1ldGhvZC1pY29uIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiA1NnB4O1xuICAgICAgICBoZWlnaHQ6IDU2cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1ncmF5LTEwMCkgMCUsIHZhcigtLXN3cC1ncmF5LTIwMCkgMTAwJSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2IoMCAwIDAgLyA0JSk7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIHdpZHRoOiAyOHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAyOHB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmJhZGdlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjY4NzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuM3JlbSAwLjc1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAyZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cbiAgICAgICAgJi5iZy1zdWNjZXNzIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1zdWNjZXNzKSAwJSwgdmFyKC0tc3dwLXN1Y2Nlc3MtaG92ZXIpIDEwMCUpICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMik7XG4gICAgICAgIH1cblxuICAgICAgICAmLmJnLXNlY29uZGFyeSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtZ3JheS00MDApIDAlLCB2YXIoLS1zd3AtZ3JheS01MDApIDEwMCUpICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2IoMCAwIDAgLyAxMCUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmJ0biB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgIG1pbi13aWR0aDogNDBweDtcbiAgICAgICAgbWluLWhlaWdodDogNDBweDtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuYnRuLW91dGxpbmUtc2Vjb25kYXJ5IHtcbiAgICAgICAgICAgIGJvcmRlci13aWR0aDogMS41cHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuXG4gICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxOHB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMThweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ29uZmlndXJhdGlvbiBGb3JtIFN0eWxlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucGF5bWVudC1tYXJrZXRwbGFjZSB7XG4gICAgLy8gRml4IGNsb3NlIGJ1dHRvbiBhbGlnbm1lbnQgaW4gY2FyZCBoZWFkZXJcblxuICAgIC5jYXJkLWhlYWRlciB7XG5cbiAgICAgICAgLmQtZmxleCB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgPiBkaXY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5idG4taWNvbiB7XG4gICAgICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZGQgc3BhY2luZyBiZXR3ZWVuIGZvcm0gc3dpdGNoIGZpZWxkcyAodGhlIGNvbnRhaW5lcnMgd2l0aCBiYWNrZ3JvdW5kcylcblxuICAgIGZvcm0ge1xuXG4gICAgICAgIC5mb3JtLXN3aXRjaC1maWVsZCArIC5mb3JtLXN3aXRjaC1maWVsZCB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBZGQgc3BhY2luZyBiZXR3ZWVuIHJlZ3VsYXIgZm9ybSBmaWVsZHNcblxuICAgICAgICAubWItMyArIC5tYi0zIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUGF5bWVudCBDb25maWd1cmF0aW9uIE1vZGFsXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5wYXltZW50LW1vZGFsLWJhY2tkcm9wIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgaW5zZXQ6IDA7XG4gICAgYmFja2dyb3VuZDogcmdiKDAgMCAwIC8gNTAlKTtcbiAgICB6LWluZGV4OiAxMDQwO1xuICAgIGFuaW1hdGlvbjogbWFya2V0cGxhY2UtZmFkZS1pbiAwLjJzIGVhc2U7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDJweCk7XG59XG5cbi5wYXltZW50LW1vZGFsIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgaW5zZXQ6IDA7XG4gICAgei1pbmRleDogMTA1MDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGFuaW1hdGlvbjogbWFya2V0cGxhY2UtZmFkZS1pbiAwLjJzIGVhc2U7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbn1cblxuLnBheW1lbnQtbW9kYWwtY29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy14bCk7XG4gICAgYm94LXNoYWRvdzogMCAyMHB4IDI1cHggLTVweCByZ2IoMCAwIDAgLyAxMCUpLFxuICAgICAgICAgICAgICAgIDAgMTBweCAxMHB4IC01cHggcmdiKDAgMCAwIC8gNCUpO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1heC13aWR0aDogOTIwcHg7XG4gICAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIHZhcigtLXN3cC1zcGFjZS04KSk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFuaW1hdGlvbjogbWFya2V0cGxhY2Utc2xpZGUtdXAgMC4zcyBjdWJpYy1iZXppZXIoMC4xNiwgMSwgMC4zLCAxKTtcbn1cblxuLnBheW1lbnQtbW9kYWwtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5wYXltZW50LW1vZGFsLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhsKTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5wYXltZW50LW1vZGFsLWNsb3NlIHtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBtYXJnaW4tbGVmdDogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4ucGF5bWVudC1tb2RhbC1ib2R5IHtcbiAgICBmbGV4OiAxO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuXG4gICAgLy8gUmVtb3ZlIGNhcmQgc3R5bGluZyBmcm9tIFBheW1lbnRTZXR0aW5ncyB3aGVuIGluc2lkZSBtb2RhbFxuXG4gICAgPiBkaXYgPiAuY2FyZCB7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG5cbiAgICAgICAgLmNhcmQtaGVhZGVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7IC8vIEhpZGUgdGhlIGNhcmQgaGVhZGVyIHNpbmNlIG1vZGFsIGhhcyBpdHMgb3duXG4gICAgICAgIH1cblxuICAgICAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuY2FyZC1mb290ZXIge1xuICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpIDAgMCAwO1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIE1vYmlsZSBhZGFwdGF0aW9uc1xuQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKG1kKSB7XG5cbiAgICAucGF5bWVudC1tb2RhbCB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgICB9XG5cbiAgICAucGF5bWVudC1tb2RhbC1jb250YWluZXIge1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIG1heC1oZWlnaHQ6IDkwdmg7XG4gICAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG4gICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuICAgICAgICBhbmltYXRpb246IG1hcmtldHBsYWNlLXNsaWRlLXVwLW1vYmlsZSAwLjNzIGN1YmljLWJlemllcigwLjE2LCAxLCAwLjMsIDEpO1xuICAgIH1cblxuICAgIEBrZXlmcmFtZXMgbWFya2V0cGxhY2Utc2xpZGUtdXAtbW9iaWxlIHtcblxuICAgICAgICBmcm9tIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRvIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gUHJldmVudCBib2R5IHNjcm9sbCB3aGVuIG1vZGFsIGlzIG9wZW5cblxuYm9keTpoYXMoLnBheW1lbnQtbW9kYWwpIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNb2JpbGUgUmVzcG9uc2l2ZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24obWQpIHtcblxuICAgIC5tYXJrZXRwbGFjZS1wYW5lbCB7XG4gICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgICAgIG1heC1oZWlnaHQ6IG5vbmU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG5cbiAgICAuZ2F0ZXdheS1ncmlkIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgfVxuXG4gICAgLmFjdGl2ZS1tZXRob2QtY2FyZCB7XG5cbiAgICAgICAgLmQtZmxleCB7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuXG4gICAgICAgICAgICAuYnRuLWdyb3VwLFxuICAgICAgICAgICAgLmQtZmxleC5nYXAtMiB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgICAgICAgICAgZmxleDogMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBIb3Jpem9udGFsIHNjcm9sbGluZyB0YWJzIG9uIG1vYmlsZVxuXG4gICAgLnBheW1lbnQtbWFya2V0cGxhY2UgPiAubmF2LXRhYnMge1xuICAgICAgICBtYXJnaW4tbGVmdDogY2FsYyh2YXIoLS1zd3Atc3BhY2UtNCkgKiAtMSk7XG4gICAgICAgIG1hcmdpbi1yaWdodDogY2FsYyh2YXIoLS1zd3Atc3BhY2UtNCkgKiAtMSk7XG4gICAgICAgIHBhZGRpbmctbGVmdDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgICAgICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgICAgIHNjcm9sbGJhci13aWR0aDogbm9uZTtcblxuICAgICAgICAmOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLm5hdi1pdGVtIHtcbiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQcmludCBTdHlsZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhIHByaW50IHtcblxuICAgIC5wYXltZW50LW1hcmtldHBsYWNlIHtcblxuICAgICAgICAubmF2LXRhYnMsXG4gICAgICAgIC5tYXJrZXRwbGFjZS1wYW5lbCxcbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAuYWN0aXZlLW1ldGhvZC1jYXJkIHtcbiAgICAgICAgICAgIGJyZWFrLWluc2lkZTogYXZvaWQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEdhdGV3YXkgR3JvdXBzIChjYXRlZ29yaXNlZCBtYXJrZXRwbGFjZSBzZWN0aW9ucylcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmdhdGV3YXktZ3JvdXAge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS00KTtcblxuICAgIC5nYXRld2F5LWdyb3VwLWhlYWRlciB7XG5cbiAgICAgICAgaDYge1xuICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEN1c3RvbSBcImNyZWF0ZSB5b3VyIG93blwiIGNhcmQgc2l0cyBpbnNpZGUgdGhlIG9mZmxpbmUgZ3JvdXAgbm93LCBzbyB0aGVcbiAgICAvLyBsZWdhY3kgZnVsbC13aWR0aCBkaXZpZGVyIGl0IHVzZWQgdG8gZHJhdyBpcyBubyBsb25nZXIgbmVlZGVkLlxuXG4gICAgLmlzLWN1c3RvbS1nYXRld2F5IHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTMpO1xuXG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIExlZ2FjeSAvIGFkdmFuY2VkIHByb2Nlc3NvcnMgYXJlIGNvbGxhcHNlZCBhd2F5IGJ5IGRlZmF1bHQuXG5cbi5nYXRld2F5LWdyb3VwLS1tb3JlIHtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS0zKTtcblxuICAgID4gc3VtbWFyeSB7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcblxuICAgICAgICAmOjotd2Via2l0LWRldGFpbHMtbWFya2VyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyIGg2IHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFwiQWJvdXQgdGhpcyBnYXRld2F5XCIgZ3VpZGFuY2UgcGFuZWwgKGluIHRoZSBjb25maWcgbW9kYWwpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5wYXltZW50LWdhdGV3YXktYWJvdXQge1xuXG4gICAgLmFsZXJ0LXRpdGxlIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIH1cblxuICAgIC5wYXltZW50LWdhdGV3YXktY29tcGFyZSB7XG5cbiAgICAgICAgc3VtbWFyeSB7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuXG4gICAgICAgICAgICAmOjotd2Via2l0LWRldGFpbHMtbWFya2VyIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLyoqXG4gKiBOb3RpZmljYXRpb24gTWFya2V0cGxhY2UgU3R5bGVzXG4gKiBOb3RpZmljYXRpb24tc3BlY2lmaWMgc3R5bGVzLiBTaGFyZWQgbWFya2V0cGxhY2Ugc3R5bGVzIGFyZSBpbiBjb21wb25lbnRzL19tYXJrZXRwbGFjZS5zY3NzLlxuICovXG5cbkBpbXBvcnQgJ35ib290c3RyYXAvc2Nzcy9mdW5jdGlvbnMnO1xuQGltcG9ydCAnfmJvb3RzdHJhcC9zY3NzL3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICd+Ym9vdHN0cmFwL3Njc3MvbWl4aW5zJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTm90aWZpY2F0aW9uIE1hcmtldHBsYWNlIENvbnRhaW5lclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ubm90aWZpY2F0aW9uLW1hcmtldHBsYWNlIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTgpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNb2JpbGUgVGFicyBOYXZpZ2F0aW9uXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5ub3RpZmljYXRpb24tbWFya2V0cGxhY2UgPiAubmF2LXRhYnMge1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcblxuICAgIC5uYXYtbGluayB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IC0xcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgdHJhbnNpdGlvbjogdmFyKC0tc3dwLXRyYW5zaXRpb24tY29sb3JzKTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMyk7XG4gICAgICAgIH1cblxuICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAuYmFkZ2Utc20ge1xuICAgICAgICAgICAgZm9udC1zaXplOiAwLjYyNXJlbTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAuMTI1cmVtIDAuMzc1cmVtO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTWFya2V0cGxhY2UgVGFicyAoU01TL0NoYXQpIC0gSW5zaWRlIFBhbmVsXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5tYXJrZXRwbGFjZS10YWJzIHtcbiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcblxuICAgIC5uYXYtaXRlbSB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgfVxuXG4gICAgLm5hdi1saW5rIHtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBib3JkZXItYm90dG9tOiAzcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuXG4gICAgICAgIC5uYXYtbGluay1pY29uIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3Zlcjpub3QoLmFjdGl2ZSkge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWhvdmVyKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4wNSk7XG4gICAgICAgIH1cblxuICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEludGVncmF0aW9uIFNlY3Rpb24gSGVhZGVyc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uaW50ZWdyYXRpb24tc2VjdGlvbi1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgcGFkZGluZy1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEludGVncmF0aW9uIENhcmRzIEdyaWRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmludGVncmF0aW9uLWdyaWQge1xuICAgIC8vIENvbnRhaW5lciBmb3IgdGhlIGZ1bGwgaW50ZWdyYXRpb24gYXJlYSAobm8gZ3JpZCBoZXJlKVxufVxuXG4uaW50ZWdyYXRpb24tc2VjdGlvbiB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTYpO1xuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG59XG5cbi5pbnRlZ3JhdGlvbi1jYXJkcy1ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuXG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChsZykge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgIH1cbn1cblxuLy8gSW50ZWdyYXRpb24gQ2FyZCAtIFZlcnRpY2FsIExheW91dFxuXG4uaW50ZWdyYXRpb24tY2FyZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMS41cHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgYm94LXNoYWRvdzogMCAxcHggM3B4IDAgcmdiKDAgMCAwIC8gNSUpO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjI1cyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgOHB4IDE2cHggcmdiKDAgMCAwIC8gMTAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpO1xuXG4gICAgICAgIC5pbnRlZ3JhdGlvbi1jYXJkLWljb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpLCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMikpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7XG4gICAgICAgIH1cblxuICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDhweCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMjUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5pcy1jb25maWd1cmVkIHtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjAzKSwgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjAxKSk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjI1KTtcblxuICAgICAgICAuaW50ZWdyYXRpb24tY2FyZC1pY29uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0KSwgdmFyKC0tc3dwLXN1Y2Nlc3MpKTtcbiAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMDUpLCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMDIpKTtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmludGVncmF0aW9uLWNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS01KTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG5cbiAgICAuaW50ZWdyYXRpb24tY2FyZC1pY29uIHtcbiAgICAgICAgd2lkdGg6IDY0cHg7XG4gICAgICAgIGhlaWdodDogNjRweDtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLWdyYXktMTAwKSwgdmFyKC0tc3dwLWdyYXktMjAwKSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjI1cyBlYXNlO1xuICAgICAgICBib3gtc2hhZG93OiAwIDJweCA2cHggcmdiKDAgMCAwIC8gNiUpO1xuXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgICAgIGhlaWdodDogMzJweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5pbnRlZ3JhdGlvbi1jYXJkLWNvbnRlbnQge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIH1cblxuICAgIC5pbnRlZ3JhdGlvbi1jYXJkLXRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIH1cblxuICAgIC5pbnRlZ3JhdGlvbi1jYXJkLWRlc2NyaXB0aW9uIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgICAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDI7XG4gICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgfVxuXG4gICAgLmludGVncmF0aW9uLWNhcmQtYWN0aW9uIHtcbiAgICAgICAgbWFyZ2luLXRvcDogYXV0bztcblxuICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG4gICAgfVxuXG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENvbmZpZ3VyZWQgSW50ZWdyYXRpb25zIFBhbmVsIC0gUmlnaHQgU2lkZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY29uZmlndXJlZC1pbnRlZ3JhdGlvbnMtcGFuZWwge1xuXG4gICAgaDUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcbiAgICB9XG5cbiAgICA+IC5kLWZsZXggPiAuYmFkZ2Uge1xuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuMzVyZW0gMC43NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLWdyYXktMTAwKSAwJSwgdmFyKC0tc3dwLWdyYXktMjAwKSAxMDAlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggMnB4IHJnYigwIDAgMCAvIDUlKTtcbiAgICB9XG59XG5cbi5jb25maWd1cmVkLWludGVncmF0aW9ucy1saXN0IHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4uY29uZmlndXJlZC1pbnRlZ3JhdGlvbi1jYXJkIHtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCAwIHJnYigwIDAgMCAvIDUlKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2IoMCAwIDAgLyA4JSksIDAgMCAwIDFweCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMik7XG5cbiAgICAgICAgLmludGVncmF0aW9uLW1ldGhvZC1pY29uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KSAwJSwgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjE1KSAxMDAlKTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDhweCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMTUpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5idG4tb3V0bGluZS1zZWNvbmRhcnkge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjA0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNSk7XG4gICAgfVxuXG4gICAgaDYge1xuICAgICAgICBmb250LXNpemU6IDEuMDYyNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcbiAgICB9XG5cbiAgICAuaW50ZWdyYXRpb24tbWV0aG9kLWljb24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDU2cHg7XG4gICAgICAgIGhlaWdodDogNTZweDtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLWdyYXktMTAwKSAwJSwgdmFyKC0tc3dwLWdyYXktMjAwKSAxMDAlKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAycHggNHB4IHJnYigwIDAgMCAvIDQlKTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgd2lkdGg6IDI4cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDI4cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYmFkZ2Uge1xuICAgICAgICBmb250LXNpemU6IDAuNjg3NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC4zcmVtIDAuNzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDJlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICB9XG5cbiAgICAuYnRuIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICAgICAgbWluLXdpZHRoOiA0MHB4O1xuICAgICAgICBtaW4taGVpZ2h0OiA0MHB4O1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5idG4tb3V0bGluZS1zZWNvbmRhcnkge1xuICAgICAgICAgICAgYm9yZGVyLXdpZHRoOiAxLjVweDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG5cbiAgICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDb25maWd1cmF0aW9uIE1vZGFsXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5ub3RpZmljYXRpb24tbW9kYWwtYmFja2Ryb3Age1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBpbnNldDogMDtcbiAgICBiYWNrZ3JvdW5kOiByZ2IoMCAwIDAgLyA1MCUpO1xuICAgIHotaW5kZXg6IDEwNDA7XG4gICAgYW5pbWF0aW9uOiBtYXJrZXRwbGFjZS1mYWRlLWluIDAuMnMgZWFzZTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMnB4KTtcbn1cblxuLm5vdGlmaWNhdGlvbi1tb2RhbCB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGluc2V0OiAwO1xuICAgIHotaW5kZXg6IDEwNTA7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBhbmltYXRpb246IG1hcmtldHBsYWNlLWZhZGUtaW4gMC4ycyBlYXNlO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG59XG5cbi5ub3RpZmljYXRpb24tbW9kYWwtY29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy14bCk7XG4gICAgYm94LXNoYWRvdzogMCAyMHB4IDI1cHggLTVweCByZ2IoMCAwIDAgLyAxMCUpLFxuICAgICAgICAgICAgICAgIDAgMTBweCAxMHB4IC01cHggcmdiKDAgMCAwIC8gNCUpO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1heC13aWR0aDogODAwcHg7XG4gICAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIHZhcigtLXN3cC1zcGFjZS04KSk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFuaW1hdGlvbjogbWFya2V0cGxhY2Utc2xpZGUtdXAgMC4zcyBjdWJpYy1iZXppZXIoMC4xNiwgMSwgMC4zLCAxKTtcbn1cblxuLm5vdGlmaWNhdGlvbi1tb2RhbC1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLm5vdGlmaWNhdGlvbi1tb2RhbC10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14bCk7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbWFyZ2luOiAwO1xufVxuXG4ubm90aWZpY2F0aW9uLW1vZGFsLWNsb3NlIHtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBtYXJnaW4tbGVmdDogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4ubm90aWZpY2F0aW9uLW1vZGFsLWJvZHkge1xuICAgIGZsZXg6IDE7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICAvLyBSZW1vdmUgY2FyZCBzdHlsaW5nIGZyb20gTm90aWZpY2F0aW9uVHJhbnNwb3J0Q29uZmlndXJhdGlvbiB3aGVuIGluc2lkZSBtb2RhbFxuXG4gICAgPiBkaXYgPiAuY2FyZCB7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG5cbiAgICAgICAgLmNhcmQtaGVhZGVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7IC8vIEhpZGUgdGhlIGNhcmQgaGVhZGVyIHNpbmNlIG1vZGFsIGhhcyBpdHMgb3duXG4gICAgICAgIH1cblxuICAgICAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuY2FyZC1mb290ZXIge1xuICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpIDAgMCAwO1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1vYmlsZSBSZXNwb25zaXZlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihtZCkge1xuXG4gICAgLm1hcmtldHBsYWNlLXBhbmVsIHtcbiAgICAgICAgcG9zaXRpb246IHN0YXRpYztcbiAgICAgICAgbWF4LWhlaWdodDogbm9uZTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIC5jb25maWd1cmVkLWludGVncmF0aW9uLWNhcmQge1xuXG4gICAgICAgIC5kLWZsZXgge1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcblxuICAgICAgICAgICAgLmJ0bi1ncm91cCxcbiAgICAgICAgICAgIC5kLWZsZXguZ2FwLTIge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgICAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gSG9yaXpvbnRhbCBzY3JvbGxpbmcgdGFicyBvbiBtb2JpbGVcblxuICAgIC5ub3RpZmljYXRpb24tbWFya2V0cGxhY2UgPiAubmF2LXRhYnMge1xuICAgICAgICBtYXJnaW4tbGVmdDogY2FsYyh2YXIoLS1zd3Atc3BhY2UtNCkgKiAtMSk7XG4gICAgICAgIG1hcmdpbi1yaWdodDogY2FsYyh2YXIoLS1zd3Atc3BhY2UtNCkgKiAtMSk7XG4gICAgICAgIHBhZGRpbmctbGVmdDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgICAgICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgICAgIHNjcm9sbGJhci13aWR0aDogbm9uZTtcblxuICAgICAgICAmOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLm5hdi1pdGVtIHtcbiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm5vdGlmaWNhdGlvbi1tb2RhbCB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgICB9XG5cbiAgICAubm90aWZpY2F0aW9uLW1vZGFsLWNvbnRhaW5lciB7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgbWF4LWhlaWdodDogOTB2aDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gICAgICAgIGFuaW1hdGlvbjogbm90aWZpY2F0aW9uLXNsaWRlLXVwLW1vYmlsZSAwLjNzIGN1YmljLWJlemllcigwLjE2LCAxLCAwLjMsIDEpO1xuICAgIH1cblxuICAgIEBrZXlmcmFtZXMgbm90aWZpY2F0aW9uLXNsaWRlLXVwLW1vYmlsZSB7XG5cbiAgICAgICAgZnJvbSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gICAgICAgIH1cblxuICAgICAgICB0byB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFByZXZlbnQgYm9keSBzY3JvbGwgd2hlbiBtb2RhbCBpcyBvcGVuXG5cbmJvZHk6aGFzKC5ub3RpZmljYXRpb24tbW9kYWwpIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQcmludCBTdHlsZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhIHByaW50IHtcblxuICAgIC5ub3RpZmljYXRpb24tbWFya2V0cGxhY2Uge1xuXG4gICAgICAgIC5uYXYtdGFicyxcbiAgICAgICAgLm1hcmtldHBsYWNlLXBhbmVsLFxuICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb25maWd1cmVkLWludGVncmF0aW9uLWNhcmQge1xuICAgICAgICAgICAgYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/