/* ===== Modular CSS Imports ===== */
/* Each file is organized by functionality for better maintainability */
/* ===== Theme System: Dual-Layer Design Tokens ===== */
/* App-theme: Controls login, lobby, menus, buttons (changes per theme) */
/* Game-theme: Controls felt grid, cards, trick area (always green) */
/* Default Theme: Golden Ascent */
:root,
[data-theme="golden-ascent"] {
  /* App Theme - Black & Gold */
  --app-bg: #0a0a0a;
  --app-bg-gradient-start: #0a0a0a;
  --app-bg-gradient-mid: #1a1a1a;
  --app-bg-gradient-end: #0d0d0d;
  --app-surface: rgba(255, 255, 255, 0.05);
  --app-surface-border: rgba(212, 175, 55, 0.3);
  --app-surface-hover: rgba(255, 255, 255, 0.1);
  --app-text: #ffffff;
  --app-text-muted: rgba(255, 255, 255, 0.6);
  --app-text-dim: rgba(255, 255, 255, 0.4);
  --app-primary: #d4af37;
  --app-primary-hover: #e0bf4a;
  --app-primary-active: #b8972e;
  --app-primary-active-deep: #9a7d24;
  --app-primary-bg: rgba(212, 175, 55, 0.1);
  --app-primary-bg-hover: rgba(212, 175, 55, 0.2);
  --app-primary-shadow: rgba(212, 175, 55, 0.3);
  --app-primary-shadow-hover: rgba(212, 175, 55, 0.4);
  --app-secondary: rgba(255, 255, 255, 0.08);
  --app-secondary-border: rgba(255, 255, 255, 0.25);
  --app-secondary-hover: rgba(255, 255, 255, 0.15);
  --app-secondary-active: rgba(255, 255, 255, 0.2);
  --app-error-bg: rgba(220, 38, 38, 0.15);
  --app-error-border: rgba(220, 38, 38, 0.3);
  --app-error-text: #fca5a5;
  --app-success: #22c55e;
  --app-info: #3b82f6;
  --app-input-bg: rgba(255, 255, 255, 0.08);
  --app-input-border: rgba(255, 255, 255, 0.2);
  --app-input-focus-bg: rgba(255, 255, 255, 0.12);
  --app-input-focus-ring: rgba(212, 175, 55, 0.15);
  --app-glow-1: rgba(212, 175, 55, 0.08);
  --app-glow-2: rgba(212, 175, 55, 0.05);

  /* Felt Grid - Theme-Aware */
  --felt-bg: #1a1a1a;
  --felt-bg-gradient: #2a2a2a;
  --felt-glow: rgba(212, 175, 55, 0.08);

  /* Game Theme - Dynamic Casino Felt */
  --game-bg: var(--felt-bg, #0A1428);
  --game-bg-gradient-start: var(--felt-bg, #0A1428);
  --game-bg-gradient-center: var(--felt-bg-gradient, #112A46);
  --game-surface: rgba(0, 0, 0, 0.4);
  --game-surface-border: rgba(212, 175, 55, 0.15);
  --game-text: #ffffff;
  --game-text-muted: rgba(255, 255, 255, 0.6);
  --game-text-dim: rgba(255, 255, 255, 0.4);
  --game-text-dark: rgba(255, 255, 255, 0.3);
  --game-primary: #d4af37;
  --game-primary-bg: rgba(212, 175, 55, 0.2);
  --game-primary-border: rgba(212, 175, 55, 0.6);
  --game-card-bg: #ffffff;
  --game-card-border: #d4af37;
  --game-card-playable-border: #d4af37;
  --game-card-unplayable-bg: #e0e0e0;
  --game-card-unplayable-border: #999;
  --game-card-text: #1a1a2e;
  --game-accent-ring: #d4af37;
  --game-trick-area-bg: rgba(0, 0, 0, 0.15);
  --game-trick-area-border: rgba(255, 255, 255, 0.05);
  --game-hand-gradient: rgba(0, 0, 0, 0.3);
  --game-player-bg: rgba(0, 0, 0, 0.3);
  --game-player-active-bg: rgba(212, 175, 55, 0.2);
  --game-player-active-border: rgba(212, 175, 55, 0.6);
  --game-avatar-bg: rgba(255, 255, 255, 0.15);
  --game-card-label-bg: rgba(0, 0, 0, 0.5);
  --game-card-label-text: rgba(255, 255, 255, 0.7);
  --game-card-shadow: rgba(0, 0, 0, 0.3);
  --game-card-shadow-hover: rgba(0, 0, 0, 0.4);
  --game-card-selected-shadow: rgba(212, 175, 55, 0.5);
  --game-team-0-bg: rgba(212, 175, 55, 0.3);
  --game-team-0-border: rgba(212, 175, 55, 0.5);
  --game-team-0-text: #d4af37;
  --game-team-1-bg: rgba(59, 130, 246, 0.3);
  --game-team-1-border: rgba(59, 130, 246, 0.5);
  --game-team-1-text: #60a5fa;
  --game-suit-red: #dc2626;
  --game-suit-black: #1a1a2e;
  --game-menu-bg: rgba(20, 60, 30, 0.95);
  --game-menu-border: rgba(212, 175, 55, 0.5);
  --game-menu-item-hover: rgba(255, 255, 255, 0.15);
  --game-offline-bg: rgba(0, 0, 0, 0.5);
  --game-offline-text: rgba(255, 255, 255, 0.7);
  --game-lobby-btn-bg: rgba(255, 255, 255, 0.15);
  --game-lobby-btn-border: rgba(255, 255, 255, 0.3);
  --game-lobby-btn-hover: rgba(255, 255, 255, 0.25);
  --game-modal-overlay: rgba(0, 0, 0, 0.5);
  --game-redeal-text: #d4af37;
  --game-winner-text: #d4af37;
  --game-winner-bg: rgba(212, 175, 55, 0.2);

  /* ===== Responsive Size Tokens (Portrait Default) ===== */
  /* Felt Grid */
  --felt-gap: 3px;
  --felt-padding: 3px;
  --felt-rows: 15% 60% 25%;
  --felt-cols: 1fr 2.5fr 1fr;

  /* Cards */
  --card-width: 65px;
  --card-height: 80px;
  --card-radius: 6px;
  --card-rank-size: 22px;
  --card-suit-size: 22px;
  --card-player-label-size: 9px;
  --card-player-label-padding: 2px 6px;
  --card-player-label-radius: 4px;
  --hand-gap: 4px;
  --hand-padding: 6px 3px 10px;
  --hand-radius: 12px 12px 0 0;

  /* Player Info */
  --player-info-min-width: 68px;
  --player-info-padding: 6px;
  --player-info-radius: 10px;
  --player-info-gap: 3px;
  --avatar-size: 36px;
  --avatar-font-size: 18px;
  --avatar-radius: 50%;
  --active-ring-inset: -4px;
  --active-ring-width: 2px;
  --crown-icon-top: -10px;
  --crown-icon-size: 14px;
  --player-name-size: 11px;
  --card-count-size: 10px;

  /* Team Labels */
  --team-label-size: 9px;
  --team-label-padding: 1px 6px;
  --team-label-radius: 4px;

  /* User Display (in hand corner) */
  --user-display-player-min-width: 60px;
  --user-display-player-padding: 4px 6px;
  --user-display-name-size: 10px;
  --user-display-team-label-size: 8px;
  --user-display-team-label-padding: 1px 4px;
  --user-display-card-count-size: 9px;

  /* Corner Cells (Trump, Scores, Tricks) */
  --trump-cell-min-width: 44px;
  --trump-cell-padding: 4px;
  --trump-cell-radius: 8px;
  --trump-cell-label-size: 9px;
  --trump-cell-label-spacing: 0.5px;
  --trump-cell-value-size: 22px;
  --scores-cell-min-width: 52px;
  --scores-cell-padding: 4px;
  --scores-cell-radius: 8px;
  --scores-cell-label-size: 9px;
  --scores-cell-label-spacing: 0.5px;
  --team-score-size: 16px;
  --crown-cell-name-size: 10px;
  --trump-declarer-cell-size: 10px;
  --trick-cell-min-width: 40px;
  --trick-cell-padding: 4px;
  --trick-cell-radius: 8px;
  --trick-value-size: 16px;
  --round-score-size: 12px;

  /* Trick Area */
  --trick-area-radius: 14px;
  --trick-placeholder-size: 13px;
  --trick-card-slot-gap: 4px;
  --trick-position-offset: 8%;

  /* Menu Button */
  --menu-icon-size: 20px;
  --menu-toggle-padding: 4px 8px;
  --menu-toggle-btn-icon-size: 24px;

  /* Trump Selector */
  --trump-card-width: 56px;
  --trump-card-height: 76px;
  --trump-card-radius: 6px;
  --trump-card-suit-size: 20px;
  --trump-card-rank-size: 14px;
  --trump-suit-grid-gap: 12px;
  --trump-suit-btn-height: 80px;
  --trump-suit-btn-padding: 16px;
  --trump-suit-btn-radius: 12px;
  --trump-suit-symbol-size: 28px;
  --trump-suit-name-size: 13px;
  --trump-selector-gap: 16px;
  --trump-selector-title-size: 20px;
  --trump-selector-desc-size: 14px;
  --trump-cancel-btn-padding: 10px 24px;
  --trump-cancel-btn-radius: 8px;
  --trump-cancel-btn-size: 14px;

  /* Modal Bottom Sheet */
  --modal-max-width: min(90vw, 600px);
  --modal-max-height: max(85vh, 85dvh);
  --modal-radius: 16px 16px 0 0;
  --modal-content-padding: 24px 16px;
  --modal-close-size: 20px;

  /* Context Menu */
  --context-menu-item-padding: 16px;
  --context-menu-item-gap: 12px;
  --context-menu-item-radius: 8px;
  --context-menu-icon-size: 20px;
  --context-menu-label-size: 16px;

  /* Round End Modal */
  --round-end-gap: 16px;
  --round-end-title-size: 20px;
  --round-end-result-size: 18px;
  --round-end-points-size: 24px;
  --round-end-trick-gap: 12px;
  --round-end-trick-padding: 12px;
  --round-end-trick-label-size: 12px;
  --round-end-trick-value-size: 16px;
  --round-end-trick-radius: 8px;
  --round-end-score-padding: 12px;
  --round-end-score-gap: 4px;
  --round-end-score-label-size: 12px;
  --round-end-score-value-size: 18px;
  --round-end-score-radius: 8px;
  --round-end-continue-btn-padding: 12px 32px;
  --round-end-continue-btn-radius: 10px;
  --round-end-continue-btn-size: 16px;

  /* Victory Modal */
  --victory-gap: 16px;
  --victory-icon-size: 56px;
  --victory-title-size: 24px;
  --victory-winner-size: 18px;
  --victory-scores-title-size: 16px;
  --victory-score-padding: 16px;
  --victory-score-gap: 4px;
  --victory-score-label-size: 13px;
  --victory-score-value-size: 28px;
  --victory-score-unit-size: 12px;
  --victory-score-radius: 10px;
  --victory-new-game-btn-padding: 14px 24px;
  --victory-new-game-btn-radius: 10px;
  --victory-new-game-btn-size: 16px;
  --victory-lobby-btn-padding: 12px 24px;
  --victory-lobby-btn-radius: 10px;
  --victory-lobby-btn-size: 15px;

  /* Played Cards Modal */
  --played-cards-gap: 16px;
  --played-cards-title-size: 20px;
  --played-cards-trick-padding: 12px;
  --played-cards-trick-radius: 8px;
  --trick-label-size: 14px;
  --trick-status-size: 11px;
  --trick-status-padding: 2px 8px;
  --trick-status-radius: 4px;
  --cards-grid-gap: 8px;
  --played-card-padding: 8px;
  --played-card-radius: 6px;
  --played-card-min-height: 60px;
  --played-card-value-size: 16px;
  --played-card-player-size: 11px;
  --empty-state-min-height: 150px;
  --empty-state-text-size: 16px;
  --empty-state-hint-size: 13px;

  /* Theme Selector */
  --theme-selector-panel-max-width: 360px;
  --theme-selector-panel-padding: 24px;
  --theme-selector-panel-radius: 16px;
  --theme-selector-title-size: 18px;
  --theme-selector-close-size: 20px;
  --theme-selector-grid-gap: 12px;
  --theme-option-padding: 16px 12px;
  --theme-option-radius: 12px;
  --theme-option-preview-size: 40px;
  --theme-option-preview-text-size: 18px;
  --theme-option-name-size: 14px;
  --theme-option-desc-size: 12px;
  --theme-option-badge-size: 11px;

  /* Room Code Modal */
  --room-code-modal-padding: 24px;
  --room-code-modal-radius: 16px;
  --room-code-modal-max-width: 340px;
  --room-code-modal-header-size: 16px;
  --room-code-display-size: 36px;
  --room-code-display-spacing: 8px;
  --room-code-display-padding: 16px 24px;
  --room-code-display-radius: 12px;
  --room-code-waiting-size: 14px;

  /* App Header */
  --app-header-height: 48px;
  --app-header-padding: 0 8px;
  --app-header-back-size: 40px;
  --app-header-back-icon-size: 24px;
  --app-header-title-size: 16px;

  /* Login / Lobby / Registration */
  --view-padding: 24px;
  --container-max-width: 400px;
  --container-padding: 32px 24px;
  --container-padding-bottom: 40px;
  --container-radius: 16px;
  --app-title-size: 32px;
  --app-title-spacing: 1px;
  --app-subtitle-size: 14px;
  --form-group-max-width: 320px;
  --form-group-gap: 12px;
  --form-group-margin-bottom: 16px;
  --form-input-padding: 14px 16px;
  --form-input-radius: 10px;
  --form-input-size: 16px;
  --form-input-focus-ring: 3px;
  --error-max-width: 320px;
  --error-padding: 10px 14px;
  --error-radius: 8px;
  --error-size: 14px;
  --error-margin-bottom: 12px;
  --success-max-width: 320px;
  --success-padding: 10px 14px;
  --success-radius: 8px;
  --success-size: 14px;
  --success-margin-top: 12px;
  --btn-max-width: 320px;
  --btn-padding: 14px 24px;
  --btn-radius: 10px;
  --btn-size: 16px;
  --btn-secondary-size: 15px;
  --btn-outline-size: 15px;
  --btn-lg-padding: 16px 28px;
  --btn-lg-size: 16px;
  --btn-sm-padding: 6px 12px;
  --btn-sm-size: 13px;
  --btn-ghost-padding: 8px 16px;
  --btn-ghost-radius: 8px;
  --btn-ghost-size: 14px;
  --link-size: 14px;

  /* Lobby Specific */
  --lobby-header-margin-bottom: 24px;
  --lobby-title-size: 28px;
  --lobby-subtitle-size: 14px;
  --user-section-max-width: 320px;
  --user-section-padding: 16px;
  --user-section-radius: 12px;
  --user-section-margin-bottom: 24px;
  --user-info-margin-bottom: 12px;
  --user-info-padding-bottom: 12px;
  --username-size: 18px;
  --stats-gap: 12px;
  --stat-label-size: 11px;
  --stat-label-spacing: 0.5px;
  --stat-value-size: 20px;
  --lobby-actions-max-width: 320px;
  --lobby-actions-gap: 12px;
  --lobby-footer-max-width: 320px;
  --lobby-footer-margin-top: 24px;
  --lobby-footer-padding-top: 16px;

  /* Theme Badge */
  --theme-badge-padding: 8px 16px;
  --theme-badge-radius: 20px;
  --theme-badge-gap: 8px;
  --theme-dot-size: 12px;
  --theme-name-size: 13px;

  /* Waiting Room */
  --waiting-room-padding: 16px;
  --waiting-room-padding-top: calc(16px + 48px);
  --waiting-room-header-gap: 12px;
  --waiting-room-header-margin-bottom: 16px;
  --waiting-room-title-size: 18px;
  --waiting-room-info-padding: 16px;
  --waiting-room-info-gap: 8px;
  --waiting-room-info-margin-bottom: 16px;
  --waiting-room-info-radius: 12px;
  --room-code-label-size: 12px;
  --room-code-label-spacing: 1px;
  --room-code-gap: 8px;
  --room-code-size: 32px;
  --room-code-spacing: 6px;
  --room-timer-size: 16px;
  --room-timer-gap: 6px;
  --room-timer-icon-size: 16px; /* corrected from 1px */
  --room-player-count-size: 14px;
  --team-slots-gap: 12px;
  --team-slots-margin-bottom: 16px;
  --team-section-padding: 12px;
  --team-section-gap: 8px;
  --team-section-radius: 12px;
  --team-badge-size: 12px;
  --team-badge-padding: 4px 12px;
  --team-badge-radius: 9999px;
  --team-badge-spacing: 0.5px;
  --player-slot-padding: 8px;
  --player-slot-gap: 8px;
  --player-slot-radius: 8px;
  --slot-avatar-size: 36px;
  --slot-avatar-font-size: 16px;
  --admin-crown-top: -4px;
  --admin-crown-right: -4px;
  --admin-crown-size: 12px;
  --slot-player-name-size: 13px;
  --slot-player-name-empty-size: 12px;
  --admin-badge-size: 10px;
  --controls-gap: 8px;
  --controls-padding-top: 8px;
  --controls-border-top: 1px solid var(--app-surface-border);

  /* Trump Declarer */
  --trump-declarer-padding: 8px 16px;
  --trump-declarer-radius: 20px;
  --trump-declarer-size: 0.9rem;
  --trump-declarer-label-size: 1rem;
  --trump-declarer-badge-top: -4px;
  --trump-declarer-badge-right: -4px;
  --trump-declarer-badge-size: 0.8rem;
  --trump-declarer-text-size: 0.7rem;

  /* Join Room */
  --join-room-gap: 10px;
  --join-room-title-size: 18px;
  --join-room-code-input-gap: 8px;
  --join-room-label-size: 13px;
  --join-room-code-field-size: 18px;
  --join-room-code-field-spacing: 4px;
  --join-room-code-field-min-height: 48px;
  --join-room-code-field-padding: 12px;
  --join-room-code-field-radius: 8px;
  --join-room-btn-min-height: 48px;
  --join-room-btn-size: 16px;
  --join-room-btn-radius: 8px;
  --join-room-error-size: 12px;
  --join-room-error-padding: 8px 12px;
  --join-room-error-radius: 6px;
  --join-room-divider-gap: 12px;
  --join-room-divider-size: 13px;
  --join-room-rooms-gap: 8px;
  --join-room-rooms-title-size: 14px;
  --join-room-empty-size: 14px;
  --join-room-empty-padding: 16px;
  --join-room-empty-radius: 8px;
  --join-room-room-card-gap: 12px;
  --join-room-room-card-padding: 12px 16px;
  --join-room-room-card-radius: 10px;
  --join-room-room-card-min-height: 56px;
  --join-room-room-card-bar-width: 3px;
  --join-room-room-code-size: 16px;
  --join-room-room-code-spacing: 3px;
  --join-room-room-code-padding: 4px 8px;
  --join-room-room-code-radius: 6px;
  --join-room-room-code-min-width: 56px;
  --join-room-room-host-size: 14px;
  --join-room-room-players-size: 12px;
  --join-room-room-players-padding: 4px 10px;
  --join-room-room-players-radius: 9999px;

  /* Offline Game */
  --offline-indicator-top: 8px;
  --offline-indicator-right: 8px;
  --offline-indicator-padding: 4px 8px;
  --offline-indicator-radius: 8px;
  --offline-indicator-size: 11px;
  --offline-icon-size: 14px;
  --return-btn-bottom: 8px;
  --return-btn-right: 8px;
  --return-btn-padding: 8px 16px;
  --return-btn-radius: 8px;
  --return-btn-size: 13px;

  /* Game Room (legacy) */
  --game-room-padding: 32px;
  --game-room-radius: 16px;
  --game-room-max-width: 320px;
  --game-room-title-size: 20px;
  --game-room-desc-size: 14px;

  /* Re-dealing */
  --redeal-size: 16px;

  /* Reconnection */
  --reconnection-padding: 32px;
  --reconnection-radius: 16px;
  --reconnection-max-width: 320px;
  --reconnection-title-size: 18px;
  --reconnection-countdown-size: 24px;
  --reconnection-hint-size: 14px;
  --reconnection-spinner-size: 48px;
  --reconnection-spinner-border: 4px;
  --reconnection-check-size: 48px;
  --reconnection-check-icon-size: 24px;

  /* ===== Landscape Size Overrides ===== */
  @media (orientation: landscape) and (max-height: 500px) {
    /* Felt Grid */
    --felt-gap: 2px;
    --felt-padding: 2px;
    --felt-rows: 15% 60% 25%;
    --felt-cols: 1fr 3fr 1fr;

    /* Cards */
    --card-width: 50px;
    --card-height: 70px;
    --card-rank-size: 20px;
    --card-suit-size: 20px;
    --card-player-label-size: 6px;
    --card-player-label-padding: 1px 2px;
    --hand-gap: 1px;
    --hand-padding: 2px 3px 4px;

    /* Player Info — larger to fill the space in landscape */
    --player-info-min-width: 60px;
    --player-info-padding: 4px 6px;
    --player-info-gap: 2px;
    --avatar-size: 28px;
    --avatar-font-size: 13px;
    --active-ring-inset: -3px;
    --active-ring-width: 2px;
    --crown-icon-top: -6px;
    --crown-icon-size: 10px;
    --player-name-size: 10px;
    --card-count-size: 8px;

    /* Team Labels */
    --team-label-size: 8px;
    --team-label-padding: 2px 6px;

    /* User Display */
    --user-display-player-min-width: 60px;
    --user-display-player-padding: 4px 6px;
    --user-display-name-size: 10px;
    --user-display-team-label-size: 8px;
    --user-display-team-label-padding: 2px 6px;
    --user-display-card-count-size: 8px;

    /* Corner Cells */
    --trump-cell-min-width: 28px;
    --trump-cell-padding: 2px;
    --trump-cell-label-size: 6px;
    --trump-cell-label-spacing: 0;
    --trump-cell-value-size: 14px;
    --scores-cell-min-width: 36px;
    --scores-cell-padding: 2px;
    --scores-cell-gap: 1px;
    --scores-cell-label-size: 6px;
    --scores-cell-label-spacing: 0;
    --team-score-size: 11px;
    --crown-cell-name-size: 7px;
    --trump-declarer-cell-size: 7px;
    --trick-cell-min-width: 28px;
    --trick-cell-padding: 2px;
    --trick-value-size: 11px;
    --trick-label-size: 6px;
    --round-score-size: 9px;

    /* Trick Area */
    --trick-area-radius: 6px;
    --trick-placeholder-size: 9px;
    --trick-card-slot-gap: 2px;
    --trick-position-offset: 8%;

    /* Menu */
    --menu-icon-size: 18px;
    --menu-toggle-btn-icon-size: 18px;

    /* Trump Selector */
    --trump-card-width: 48px;
    --trump-card-height: 64px;
    --trump-card-suit-size: 18px;
    --trump-card-rank-size: 12px;
    --trump-suit-grid-gap: 4px;
    --trump-suit-btn-height: 64px;
    --trump-suit-btn-padding: 12px;
    --trump-suit-symbol-size: 24px;
    --trump-suit-name-size: 11px;
    --trump-selector-gap: 8px;

    /* Modal */
    --modal-max-width: min(95vw, 700px);
    --modal-max-height: 95vh;
    --modal-radius: 12px;
    --modal-content-padding: 12px;

    /* Context Menu */
    --context-menu-item-padding: 12px;
    --context-menu-icon-size: 16px;
    --context-menu-label-size: 14px;

    /* Round End */
    --round-end-gap: 12px;
    --round-end-title-size: 16px;
    --round-end-result-size: 14px;
    --round-end-points-size: 18px;
    --round-end-trick-gap: 8px;
    --round-end-trick-padding: 8px;
    --round-end-trick-label-size: 10px;
    --round-end-trick-value-size: 13px;
    --round-end-score-padding: 8px;
    --round-end-score-label-size: 10px;
    --round-end-score-value-size: 14px;
    --round-end-continue-btn-padding: 10px 24px;
    --round-end-continue-btn-size: 14px;

    /* Victory */
    --victory-gap: 12px;
    --victory-icon-size: 40px;
    --victory-title-size: 20px;
    --victory-winner-size: 14px;
    --victory-scores-title-size: 14px;
    --victory-score-padding: 10px;
    --victory-score-label-size: 11px;
    --victory-score-value-size: 22px;
    --victory-score-unit-size: 10px;
    --victory-new-game-btn-padding: 10px 20px;
    --victory-new-game-btn-size: 14px;
    --victory-lobby-btn-padding: 10px 20px;
    --victory-lobby-btn-size: 13px;

    /* Played Cards */
    --played-cards-gap: 12px;
    --played-cards-title-size: 16px;
    --played-cards-trick-padding: 8px;
    --trick-label-size: 12px;
    --trick-status-size: 10px;
    --cards-grid-gap: 6px;
    --played-card-padding: 6px;
    --played-card-min-height: 48px;
    --played-card-value-size: 13px;
    --played-card-player-size: 9px;
    --empty-state-min-height: 100px;
    --empty-state-text-size: 13px;
    --empty-state-hint-size: 11px;

    /* Theme Selector */
    --theme-selector-panel-max-width: min(90vw, 500px);
    --theme-selector-panel-padding: 16px;
    --theme-selector-title-size: 15px;
    --theme-selector-grid-gap: 8px;
    --theme-option-padding: 10px 8px;
    --theme-option-preview-size: 32px;
    --theme-option-preview-text-size: 14px;
    --theme-option-name-size: 12px;
    --theme-option-desc-size: 10px;
    --theme-option-badge-size: 9px;

    /* Room Code Modal */
    --room-code-modal-padding: 16px;
    --room-code-modal-max-width: 300px;
    --room-code-display-size: 28px;
    --room-code-display-spacing: 5px;
    --room-code-display-padding: 12px 16px;
    --room-code-waiting-size: 12px;

    /* App Header */
    --app-header-height: 40px;
    --app-header-back-size: 32px;
    --app-header-back-icon-size: 20px;
    --app-header-title-size: 14px;

    /* Login / Lobby */
    --view-padding: 55px 10px 16px 10px;
    --container-max-width: min(85vw, 650px);
    --container-padding: 16px 20px;
    --container-padding-bottom: 16px;
    --app-title-size: 22px;
    --app-subtitle-size: 12px;
    --form-group-gap: 8px;
    --form-input-padding: 10px 12px;
    --form-input-size: 14px;
    --error-padding: 8px 12px;
    --error-size: 12px;
    --success-padding: 8px 12px;
    --success-size: 12px;
    --btn-padding: 10px 16px;
    --btn-size: 14px;
    --btn-secondary-size: 13px;
    --btn-outline-size: 13px;
    --btn-lg-padding: 12px 20px;
    --btn-lg-size: 14px;
    --link-size: 12px;

    /* Lobby */
    --lobby-header-margin-bottom: 0;
    --lobby-title-size: 22px;
    --lobby-subtitle-size: 11px;
    --user-section-padding: 12px;
    --user-section-margin-bottom: 0;
    --user-info-margin-bottom: 8px;
    --user-info-padding-bottom: 8px;
    --username-size: 15px;
    --stats-gap: 8px;
    --stat-label-size: 9px;
    --stat-value-size: 16px;
    --lobby-footer-margin-top: 8px;
    --lobby-footer-padding-top: 8px;

    /* Theme Badge */
    --theme-badge-padding: 6px 12px;
    --theme-dot-size: 10px;
    --theme-name-size: 11px;

    /* Waiting Room */
    --waiting-room-padding: 55px 16px 16px 16px;
    --waiting-room-header-gap: 8px;
    --waiting-room-title-size: 14px;
    --waiting-room-info-padding: 8px 12px;
    --waiting-room-info-gap: 6px;
    --waiting-room-info-margin-bottom: 8px;
    --room-code-label-size: 9px;
    --room-code-size: 20px;
    --room-code-spacing: 3px;
    --room-timer-size: 13px;
    --room-timer-gap: 4px;
    --room-timer-icon-size: 14px;
    --room-player-count-size: 12px;
    --team-slots-gap: 8px;
    --team-slots-margin-bottom: 8px;
    --team-section-padding: 8px;
    --team-section-gap: 6px;
    --team-badge-size: 9px;
    --team-badge-padding: 2px 8px;
    --player-slot-padding: 6px;
    --player-slot-gap: 6px;
    --slot-avatar-size: 28px;
    --slot-avatar-font-size: 12px;
    --slot-player-name-size: 10px;
    --slot-player-name-empty-size: 10px;
    --admin-badge-size: 9px;
    --admin-crown-size: 10px;
    --controls-gap: 6px;
    --controls-padding-top: 6px;

    /* Trump Declarer */
    --trump-declarer-padding: 4px 10px;
    --trump-declarer-size: 0.75rem;
    --trump-declarer-label-size: 0.8rem;
    --trump-declarer-badge-size: 0.8rem;
    --trump-declarer-text-size: 0.7rem;

    /* Join Room */
    --join-room-gap: 8px;
    --join-room-title-size: 15px;
    --join-room-label-size: 12px;
    --join-room-code-field-size: 15px;
    --join-room-code-field-spacing: 3px;
    --join-room-code-field-min-height: 40px;
    --join-room-code-field-padding: 8px;
    --join-room-btn-min-height: 40px;
    --join-room-btn-size: 14px;
    --join-room-error-size: 11px;
    --join-room-error-padding: 6px 10px;
    --join-room-divider-gap: 8px;
    --join-room-divider-size: 11px;
    --join-room-rooms-gap: 6px;
    --join-room-rooms-title-size: 12px;
    --join-room-empty-size: 12px;
    --join-room-empty-padding: 12px;
    --join-room-room-card-gap: 8px;
    --join-room-room-card-padding: 8px 12px;
    --join-room-room-card-radius: 8px;
    --join-room-room-card-min-height: 48px;
    --join-room-room-code-size: 14px;
    --join-room-room-code-spacing: 2px;
    --join-room-room-code-padding: 3px 6px;
    --join-room-room-code-min-width: 48px;
    --join-room-room-host-size: 12px;
    --join-room-room-players-size: 11px;
    --join-room-room-players-padding: 3px 8px;

    /* Offline */
    --offline-indicator-size: 10px;
    --offline-icon-size: 12px;
    --return-btn-padding: 6px 12px;
    --return-btn-size: 11px;

    /* Game Room */
    --game-room-padding: 20px;
    --game-room-title-size: 16px;
    --game-room-desc-size: 12px;

    /* Re-dealing */
    --redeal-size: 12px;

    /* Reconnection */
    --reconnection-padding: 20px;
    --reconnection-title-size: 15px;
    --reconnection-countdown-size: 20px;
    --reconnection-hint-size: 12px;
    --reconnection-spinner-size: 36px;
    --reconnection-spinner-border: 3px;
    --reconnection-check-size: 36px;
    --reconnection-check-icon-size: 18px;
  }
}
/* Theme: Royal Emerald */
[data-theme="royal-emerald"] {
  --app-bg: #0a1a0f;
  --app-bg-gradient-start: #0a1a0f;
  --app-bg-gradient-mid: #1a2e1a;
  --app-bg-gradient-end: #0d1a0f;
  --app-surface: rgba(255, 255, 255, 0.05);
  --app-surface-border: rgba(34, 197, 94, 0.3);
  --app-surface-hover: rgba(255, 255, 255, 0.1);
  --app-text: #ffffff;
  --app-text-muted: rgba(255, 255, 255, 0.6);
  --app-text-dim: rgba(255, 255, 255, 0.4);
  --app-primary: #22c55e;
  --app-primary-hover: #4ade80;
  --app-primary-active: #16a34a;
  --app-primary-active-deep: #15803d;
  --app-primary-bg: rgba(34, 197, 94, 0.1);
  --app-primary-bg-hover: rgba(34, 197, 94, 0.2);
  --app-primary-shadow: rgba(34, 197, 94, 0.3);
  --app-primary-shadow-hover: rgba(34, 197, 94, 0.4);
  --app-secondary: rgba(255, 255, 255, 0.08);
  --app-secondary-border: rgba(255, 255, 255, 0.25);
  --app-secondary-hover: rgba(255, 255, 255, 0.15);
  --app-secondary-active: rgba(255, 255, 255, 0.2);
  --app-error-bg: rgba(220, 38, 38, 0.15);
  --app-error-border: rgba(220, 38, 38, 0.3);
  --app-error-text: #fca5a5;
  --app-success: #22c55e;
  --app-info: #3b82f6;
  --app-input-bg: rgba(255, 255, 255, 0.08);
  --app-input-border: rgba(255, 255, 255, 0.2);
  --app-input-focus-bg: rgba(255, 255, 255, 0.12);
  --app-input-focus-ring: rgba(34, 197, 94, 0.15);
  --app-glow-1: rgba(34, 197, 94, 0.08);
  --app-glow-2: rgba(34, 197, 94, 0.05);

  /* Felt Grid - Theme-Aware */
  --felt-bg: #1a472a;
  --felt-bg-gradient: #2d6b45;
  --felt-glow: rgba(34, 197, 94, 0.08);
}
/* Theme: Crimson Velvet */
[data-theme="crimson-velvet"] {
  --app-bg: #1a0a0a;
  --app-bg-gradient-start: #1a0a0a;
  --app-bg-gradient-mid: #2a1515;
  --app-bg-gradient-end: #1a0d0d;
  --app-surface: rgba(255, 255, 255, 0.05);
  --app-surface-border: rgba(239, 68, 68, 0.3);
  --app-surface-hover: rgba(255, 255, 255, 0.1);
  --app-text: #ffffff;
  --app-text-muted: rgba(255, 255, 255, 0.6);
  --app-text-dim: rgba(255, 255, 255, 0.4);
  --app-primary: #ef4444;
  --app-primary-hover: #f87171;
  --app-primary-active: #dc2626;
  --app-primary-active-deep: #b91c1c;
  --app-primary-bg: rgba(239, 68, 68, 0.1);
  --app-primary-bg-hover: rgba(239, 68, 68, 0.2);
  --app-primary-shadow: rgba(239, 68, 68, 0.3);
  --app-primary-shadow-hover: rgba(239, 68, 68, 0.4);
  --app-secondary: rgba(255, 255, 255, 0.08);
  --app-secondary-border: rgba(255, 255, 255, 0.25);
  --app-secondary-hover: rgba(255, 255, 255, 0.15);
  --app-secondary-active: rgba(255, 255, 255, 0.2);
  --app-error-bg: rgba(220, 38, 38, 0.15);
  --app-error-border: rgba(220, 38, 38, 0.3);
  --app-error-text: #fca5a5;
  --app-success: #22c55e;
  --app-info: #3b82f6;
  --app-input-bg: rgba(255, 255, 255, 0.08);
  --app-input-border: rgba(255, 255, 255, 0.2);
  --app-input-focus-bg: rgba(255, 255, 255, 0.12);
  --app-input-focus-ring: rgba(239, 68, 68, 0.15);
  --app-glow-1: rgba(239, 68, 68, 0.08);
  --app-glow-2: rgba(239, 68, 68, 0.05);

  /* Felt Grid - Theme-Aware */
  --felt-bg: #2a1515;
  --felt-bg-gradient: #3d1f1f;
  --felt-glow: rgba(239, 68, 68, 0.08);
}
/* Theme: Midnight Sapphire */
[data-theme="midnight-sapphire"] {
  --app-bg: #0A1428;
  --app-bg-gradient-start: #0A1428;
  --app-bg-gradient-mid: #14213d;
  --app-bg-gradient-end: #050a14;
  --app-surface: rgba(255, 255, 255, 0.05);
  --app-surface-border: rgba(212, 175, 55, 0.3);
  --app-surface-hover: rgba(255, 255, 255, 0.1);
  --app-text: #ffffff;
  --app-text-muted: rgba(255, 255, 255, 0.6);
  --app-text-dim: rgba(255, 255, 255, 0.4);
  --app-primary: #d4af37;
  --app-primary-hover: #fcd34d;
  --app-primary-active: #b45309;
  --app-primary-active-deep: #78350f;
  --app-primary-bg: rgba(212, 175, 55, 0.1);
  --app-primary-bg-hover: rgba(212, 175, 55, 0.2);
  --app-primary-shadow: rgba(212, 175, 55, 0.3);
  --app-primary-shadow-hover: rgba(212, 175, 55, 0.4);
  --app-secondary: rgba(255, 255, 255, 0.08);
  --app-secondary-border: rgba(255, 255, 255, 0.25);
  --app-secondary-hover: rgba(255, 255, 255, 0.15);
  --app-secondary-active: rgba(255, 255, 255, 0.2);
  --app-error-bg: rgba(220, 38, 38, 0.15);
  --app-error-border: rgba(220, 38, 38, 0.3);
  --app-error-text: #fca5a5;
  --app-success: #22c55e;
  --app-info: #d4af37;
  --app-input-bg: rgba(255, 255, 255, 0.08);
  --app-input-border: rgba(255, 255, 255, 0.2);
  --app-input-focus-bg: rgba(255, 255, 255, 0.12);
  --app-input-focus-ring: rgba(212, 175, 55, 0.15);
  --app-glow-1: rgba(212, 175, 55, 0.08);
  --app-glow-2: rgba(212, 175, 55, 0.05);

  /* Felt Grid - Theme-Aware */
  --felt-bg: #0A1428;
  --felt-bg-gradient: #112A46;
  --felt-glow: rgba(212, 175, 55, 0.08);
}
/* Theme: Royal Amethyst */
[data-theme="royal-amethyst"] {
  --app-bg: #1a0a2e;
  --app-bg-gradient-start: #1a0a2e;
  --app-bg-gradient-mid: #3b1a6e;
  --app-bg-gradient-end: #1a0d2e;
  --app-surface: rgba(255, 255, 255, 0.05);
  --app-surface-border: rgba(139, 92, 246, 0.3);
  --app-surface-hover: rgba(255, 255, 255, 0.1);
  --app-text: #ffffff;
  --app-text-muted: rgba(255, 255, 255, 0.6);
  --app-text-dim: rgba(255, 255, 255, 0.4);
  --app-primary: #8b5cf6;
  --app-primary-hover: #a78bfa;
  --app-primary-active: #7c3aed;
  --app-primary-active-deep: #6d28d9;
  --app-primary-bg: rgba(139, 92, 246, 0.1);
  --app-primary-bg-hover: rgba(139, 92, 246, 0.2);
  --app-primary-shadow: rgba(139, 92, 246, 0.3);
  --app-primary-shadow-hover: rgba(139, 92, 246, 0.4);
  --app-secondary: rgba(255, 255, 255, 0.08);
  --app-secondary-border: rgba(255, 255, 255, 0.25);
  --app-secondary-hover: rgba(255, 255, 255, 0.15);
  --app-secondary-active: rgba(255, 255, 255, 0.2);
  --app-error-bg: rgba(220, 38, 38, 0.15);
  --app-error-border: rgba(220, 38, 38, 0.3);
  --app-error-text: #fca5a5;
  --app-success: #22c55e;
  --app-info: #3b82f6;
  --app-input-bg: rgba(255, 255, 255, 0.08);
  --app-input-border: rgba(255, 255, 255, 0.2);
  --app-input-focus-bg: rgba(255, 255, 255, 0.12);
  --app-input-focus-ring: rgba(139, 92, 246, 0.15);
  --app-glow-1: rgba(139, 92, 246, 0.08);
  --app-glow-2: rgba(139, 92, 246, 0.05);

  /* Felt Grid - Theme-Aware */
  --felt-bg: #3b1a6e;
  --felt-bg-gradient: #4a2a7e;
  --felt-glow: rgba(139, 92, 246, 0.08);
}
/* ===== Root Layout ===== */
html, body {
  margin: 0;
  padding: 0;
  width: 100%;
  height: 100%;
  background-color: var(--app-bg);
  color: var(--app-text);
  font-family: system-ui, -apple-system, sans-serif;
  overflow: hidden;
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
}
#app {
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
  position: relative;
}
/* ===== App Header ===== */
.app-header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  height: var(--app-header-height);
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--app-header-padding);
  background: var(--app-surface);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--app-surface-border);
  z-index: 1000;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
}
.app-header-back-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--app-header-back-size);
  height: var(--app-header-back-size);
  background: transparent;
  border: none;
  border-radius: 8px;
  color: var(--app-text);
  cursor: pointer;
  -webkit-app-region: no-drag;
  transition: background-color 0.15s ease;
}
.app-header-back-btn:active {
  background-color: var(--app-hover);
}
.app-header-back-btn svg {
  width: var(--app-header-back-icon-size);
  height: var(--app-header-back-icon-size);
}
.app-header-title {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  font-size: var(--app-header-title-size);
  font-weight: 600;
  color: var(--app-text);
}
.app-header-spacer {
  width: var(--app-header-back-size);
}
/* ===== Safe area insets for notch devices ===== */
@supports (padding: max(0px)) {
  .felt-grid {
    padding-top: max(var(--felt-padding), env(safe-area-inset-top));
    padding-bottom: max(var(--felt-padding), env(safe-area-inset-bottom));
  }
  .user-hand {
    padding-bottom: max(10px, env(safe-area-inset-bottom));
  }
  .app-header {
    padding-top: max(0px, env(safe-area-inset-top));
    height: calc(var(--app-header-height) + env(safe-area-inset-top));
  }
}
/* ===== Game View ===== */
.game-view {
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
  position: relative;
  overflow: hidden;
}
/* ===== Felt Grid (3x3 - No Separate Header) ===== */
.felt-grid {
  flex: 1;
  display: grid;
  grid-template-areas:
    "top-left partner top-right"
    "left-opponent trick-area right-opponent"
    "user-hand user-hand user-hand";
  grid-template-rows: var(--felt-rows);
  grid-template-columns: var(--felt-cols);
  gap: var(--felt-gap);
  padding: var(--felt-padding);
  background-color: var(--felt-bg);
  background-image:
    radial-gradient(ellipse at center, var(--felt-bg-gradient) 0%, var(--felt-bg) 70%);
  width: 100%;
  height: 100%;
}
/* ===== Grid Corner Cells ===== */
.grid-cell {
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  padding: 4px;
}
.top-left {
  grid-area: top-left;
}
.top-right {
  grid-area: top-right;
}
.bottom-left {
  position: absolute;
  bottom: var(--felt-padding);
  left: var(--felt-padding);
  z-index: 50;
  pointer-events: none; /* Let clicks pass through to cards if overlapped */
}
.bottom-right {
  position: absolute;
  bottom: 30px;
  right: 20px;
  z-index: 50;
}
/* Trump Cell (top-left) */
.trump-cell {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  padding: var(--trump-cell-padding);
  background: var(--game-surface);
  border-radius: var(--trump-cell-radius);
  min-width: var(--trump-cell-min-width);
}
.trump-cell-label {
  font-size: var(--trump-cell-label-size);
  font-weight: 600;
  color: var(--game-text-dim);
  text-transform: uppercase;
  letter-spacing: var(--trump-cell-label-spacing);
}
.trump-cell-value {
  font-size: var(--trump-cell-value-size);
  line-height: 1;
}
.trump-cell-value.red {
  color: var(--game-suit-red);
}
.trump-cell-value.black {
  color: var(--game-text);
}
/* Scores Cell (top-right) */
.scores-cell {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  padding: var(--scores-cell-padding);
  background: var(--game-surface);
  border-radius: var(--scores-cell-radius);
  min-width: var(--scores-cell-min-width);
}
.scores-cell-label {
  font-size: var(--scores-cell-label-size);
  font-weight: 600;
  color: var(--game-text-dim);
  text-transform: uppercase;
  letter-spacing: var(--scores-cell-label-spacing);
}
.scores-cell-row {
  display: flex;
  align-items: center;
  gap: 4px;
}
.team-score-mini {
  font-size: var(--team-score-size);
  font-weight: 700;
}
.team-score-mini.team-0 {
  color: var(--game-team-0-text);
}
.team-score-mini.team-1 {
  color: var(--game-text);
}
.scores-divider {
  font-size: 12px;
  color: var(--game-text-dim);
}
.crown-cell-name {
  font-size: var(--crown-cell-name-size);
  color: var(--game-text-muted);
}
.trump-declarer-cell {
  font-size: var(--trump-declarer-cell-size);
  color: var(--game-text);
  font-weight: 600;
}
/* Trick Count Cell (bottom-left) */
.trick-count-cell {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1px;
  padding: var(--trick-cell-padding);
  background: var(--game-surface);
  border-radius: var(--trick-cell-radius);
  min-width: var(--trick-cell-min-width);
}
.trick-count-value {
  font-size: var(--trick-value-size);
  font-weight: 700;
  color: var(--game-text-muted);
}
.trick-count-label {
  font-size: var(--trick-label-size);
  color: var(--game-text-dim);
  text-transform: uppercase;
}
/* Current Round Score */
.round-score-row {
  display: flex;
  align-items: center;
  gap: 3px;
  margin-top: 2px;
}
.round-score {
  font-size: var(--round-score-size);
  font-weight: 700;
}
.round-score.team-0 {
  color: var(--game-team-0-text);
}
.round-score.team-1 {
  color: var(--game-text);
}
.round-score-divider {
  font-size: 10px;
  color: var(--game-text-dim);
}
/* Bottom Right Cell (menu placeholder) */
.bottom-right-cell {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 4px;
}
.menu-icon {
  font-size: var(--menu-icon-size);
  color: var(--game-text-dim);
  cursor: pointer;
}
.menu-toggle-btn {
  padding: var(--menu-toggle-padding);
  min-height: auto;
  line-height: 1;
}
.menu-toggle-btn .menu-icon {
  font-size: var(--menu-toggle-btn-icon-size);
  color: var(--game-text-muted);
}
.menu-toggle-btn:hover {
  background-color: var(--game-menu-item-hover);
}
/* ===== Cards — Real Casino Style ===== */
.card {
  width: var(--card-width);
  height: var(--card-height);
  border-radius: var(--card-radius);
  cursor: pointer;
  transition: transform 0.15s ease, opacity 0.15s ease, box-shadow 0.15s ease;
  -moz-user-select: none;
       user-select: none;
  -webkit-user-select: none;
  position: relative;
  flex-shrink: 0;
  /* Real-card appearance: white linen with fine inner border */
  background: #fafaf8;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4'%3E%3Crect width='4' height='4' fill='%23f5f5f0'/%3E%3Crect x='0' y='0' width='1' height='1' fill='%23eeeeea' opacity='0.5'/%3E%3C/svg%3E");
  border: 1px solid #c8c0a8;
  box-shadow: 0 3px 8px rgba(0,0,0,0.35), inset 0 0 0 1px rgba(255,255,255,0.9);
  display: block;
  overflow: hidden;
}
.card.playable {
  /* Inherits white linen background — gold border to mark it */
  border: 2px solid #d4af37;
  box-shadow: 0 3px 8px rgba(0,0,0,0.35), 0 0 8px rgba(212,175,55,0.25), inset 0 0 0 1px rgba(255,255,255,0.9);
  opacity: 1;
}
.card.playable:hover,
.card.playable:active {
  transform: translateY(-8px);
  box-shadow: 0 10px 20px rgba(0,0,0,0.45), 0 0 14px rgba(212,175,55,0.4), inset 0 0 0 1px rgba(255,255,255,0.9);
}
.card.unplayable {
  /* Desaturated / greyed */
  background: #d8d8d8;
  background-image: none;
  border: 1px solid #b0b0b0;
  opacity: 0.9;
  cursor: not-allowed;
  pointer-events: none;
  box-shadow: none;
}
.card.selected {
  transform: translateY(-12px);
  box-shadow: 0 12px 24px rgba(0,0,0,0.5), 0 0 16px rgba(212,175,55,0.6);
}
.card-back {
  width: calc(var(--card-width) * 0.5); /* Scale down opponent cards */
  height: calc(var(--card-height) * 0.5);
  border-radius: var(--card-radius);
  background: radial-gradient(circle at 50% 50%, #b22222, #550000);
  border: 1px solid rgba(212, 175, 55, 0.8);
  box-shadow: inset 0 0 4px rgba(0, 0, 0, 0.6), 0 2px 4px rgba(0, 0, 0, 0.5);
  flex-shrink: 0;
  position: relative;
  /* Stack overlapping */
  margin-right: -10px;
}
.card-back:last-child {
  margin-right: 0;
}
.opponent-hands {
  display: flex;
  margin-top: 8px;
  justify-content: center;
}
/* Side Opponents: Stack Vertically (portrait only) */
.left-opponent .opponent-hands,
.right-opponent .opponent-hands {
  flex-direction: column;
}
.left-opponent .card-back,
.right-opponent .card-back {
  margin-right: 0;
}
/* Only overlap from the 2nd card down — first card sits naturally below the player name */
.left-opponent .card-back + .card-back,
.right-opponent .card-back + .card-back {
  margin-top: -20px;
}
/* Landscape: revert side opponents to horizontal stacking — plenty of width */
@media (orientation: landscape) {
  .left-opponent .opponent-hands,
  .right-opponent .opponent-hands {
    flex-direction: row;
    align-items: center;
  }

  .left-opponent .card-back,
  .right-opponent .card-back {
    margin: 0 -6px 0 0; /* horizontal overlap */
  }

  /* Reset the portrait vertical overlap in landscape */
  .left-opponent .card-back + .card-back,
  .right-opponent .card-back + .card-back {
    margin-top: 0;
    margin-left: -6px;
  }

  .left-opponent .card-back:last-child,
  .right-opponent .card-back:last-child {
    margin-right: 0;
  }
}
.card.animating {
  position: absolute;
  z-index: 100;
  pointer-events: none;
  transition: transform 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
.card-animating {
  opacity: 0.3;
}
.card-collected {
  opacity: 0.3;
}
/* Top-left pip block (rank + suit) */
.card-content {
  position: absolute;
  top: 3px;
  left: 4px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0;
  line-height: 1;
}
/* Card rank: colour by suit, bold and readable on white */
.card-rank {
  font-size: var(--card-rank-size);
  font-weight: 800;
  line-height: 1;
  color: #111827; /* default black */
}
.card-rank.red {
  color: #cc0000;
}
.card-rank.black {
  color: #111827;
}
/* Small corner suit pip */
.card-suit {
  font-size: calc(var(--card-suit-size) * 0.8);
  line-height: 1;
}
.card-suit.red {
  color: #cc0000;
}
.card-suit.black {
  color: #111827;
}
/* Large centered suit symbol — makes it look like a real playing card */
.card-center {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-size: calc(var(--card-suit-size) * 1.6);
  line-height: 1;
  pointer-events: none;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
}
.card-center.red {
  color: #cc0000;
}
.card-center.black {
  color: #111827;
}
/* Duplicate suit/red classes for trick cards */
.suit-red {
  color: #cc0000;
}
.suit-black {
  color: #111827;
}
/* Individual card position in circular layout */
.trick-card-slot {
  position: absolute;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--trick-card-slot-gap);
  transition: all 0.3s ease;
}
/* Card positions based on player relative to user (bottom) */
/* User (bottom) */
.trick-card-slot.position-bottom {
  bottom: var(--trick-position-offset);
  left: 50%;
  transform: translateX(-50%);
}
/* Partner (top) */
.trick-card-slot.position-top {
  top: var(--trick-position-offset);
  left: 50%;
  transform: translateX(-50%);
}
/* Left opponent */
.trick-card-slot.position-left {
  left: var(--trick-position-offset);
  top: 50%;
  transform: translateY(-50%);
}
/* Right opponent */
.trick-card-slot.position-right {
  right: var(--trick-position-offset);
  top: 50%;
  transform: translateY(-50%);
}
/* Player label under card */
.card-player-label {
  font-size: var(--card-player-label-size);
  font-weight: 600;
  color: var(--game-card-label-text);
  background: var(--game-card-label-bg);
  padding: var(--card-player-label-padding);
  border-radius: var(--card-player-label-radius);
  white-space: nowrap;
}
/* Winner indicator */
.card-player-label.winner {
  color: var(--game-winner-text);
  background: var(--game-winner-bg);
  animation: winner-pulse 0.5s ease-in-out 3;
}
/* ===== Animations ===== */
@keyframes pulse-ring {
  0%, 100% { transform: scale(1); opacity: 1; }
  50% { transform: scale(1.15); opacity: 0.7; }
}
@keyframes winner-pulse {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.1); }
}
@keyframes redeal-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.5; }
}
@keyframes spin {
  to { transform: rotate(360deg); }
}
.re-dealing-message {
  color: var(--game-redeal-text);
  font-size: var(--redeal-size);
  font-weight: 600;
  animation: redeal-pulse 1s ease-in-out infinite;
}
/* ===== Modal Bottom Sheet ===== */
/* Uses existing --game-modal-overlay for backdrop, --app-surface for panel */
.modal-bottom-sheet {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: flex;
  align-items: flex-end;
  justify-content: center;
}
.modal-bottom-sheet-backdrop {
  position: absolute;
  inset: 0;
  background-color: var(--game-modal-overlay);
  z-index: 0;
}
.modal-bottom-sheet-backdrop.no-dismiss {
  pointer-events: none;
}
.modal-bottom-sheet-panel {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: var(--modal-max-width);
  max-height: var(--modal-max-height);
  height: auto;
  overflow-y: auto;
  background: var(--app-surface);
  border: 1px solid var(--app-surface-border);
  border-radius: var(--modal-radius);
  color: var(--app-text);
  transform: translateY(100%);
  transition: transform 0.3s ease;
  backdrop-filter: blur(8px);
  -webkit-overflow-scrolling: touch;
  padding-bottom: env(safe-area-inset-bottom, 0);
}
.modal-bottom-sheet-panel.open {
  transform: translateY(0);
}
.modal-bottom-sheet-content {
  padding: var(--modal-content-padding);
}
/* ===== Context Menu ===== */
.context-menu-panel {
  max-height: none;
}
.context-menu-nav {
  width: 100%;
}
.context-menu-list {
  list-style: none;
  padding: 0;
  margin: 0;
}
.context-menu-item {
  display: flex;
  align-items: center;
  gap: var(--context-menu-item-gap);
  padding: var(--context-menu-item-padding);
  color: var(--app-text);
  cursor: pointer;
  border-radius: var(--context-menu-item-radius);
  transition: background 0.2s ease;
}
.context-menu-item:hover {
  background: var(--app-surface-hover);
}
.context-menu-item:active {
  background: var(--app-secondary-active);
}
.context-menu-icon {
  font-size: var(--context-menu-icon-size);
  flex-shrink: 0;
}
.context-menu-label {
  font-size: var(--context-menu-label-size);
  font-weight: 500;
}
/* ===== Trump Selector ===== */
.trump-selector-content {
  display: flex;
  flex-direction: column;
  gap: var(--trump-selector-gap);
}
.trump-selector-title {
  font-size: var(--trump-selector-title-size);
  font-weight: 700;
  color: var(--app-primary);
  margin: 0;
}
.trump-selector-description {
  font-size: var(--trump-selector-desc-size);
  color: var(--app-text-muted);
  margin: 0;
}
.trump-selector-cards {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 6px;
  padding: 8px 0;
}
.trump-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: var(--trump-card-width);
  height: var(--trump-card-height);
  background: var(--game-card-bg);
  border: 1px solid var(--game-card-border);
  border-radius: var(--trump-card-radius);
  box-shadow: 0 2px 4px var(--game-card-shadow);
}
.trump-card-suit {
  font-size: var(--trump-card-suit-size);
  line-height: 1;
}
.trump-card-rank {
  font-size: var(--trump-card-rank-size);
  font-weight: 700;
  color: var(--game-card-text);
}
.trump-suit-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--trump-suit-grid-gap);
}
.trump-suit-btn {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  padding: var(--trump-suit-btn-padding);
  height: var(--trump-suit-btn-height);
  background: var(--app-surface);
  border: 2px solid var(--app-secondary-border);
  border-radius: var(--trump-suit-btn-radius);
  cursor: pointer;
  transition: all 0.2s ease;
}
.trump-suit-btn:hover {
  background: var(--app-surface-hover);
  border-color: var(--app-primary);
}
.trump-suit-btn:active {
  background: var(--app-primary-bg);
}
.trump-suit-symbol {
  font-size: var(--trump-suit-symbol-size);
  line-height: 1;
  background: var(--game-card-bg);
  border-radius: var(--trump-cell-radius);
}
.trump-suit-name {
  font-size: var(--trump-suit-name-size);
  font-weight: 600;
  color: var(--app-text);
}
.trump-selector-actions {
  display: flex;
  justify-content: center;
  padding-top: 8px;
  border-top: 1px solid var(--app-secondary-border);
}
.trump-selector-cancel-btn {
  padding: var(--trump-cancel-btn-padding);
  background: transparent;
  color: var(--app-text-muted);
  border: 1px solid var(--app-secondary-border);
  border-radius: var(--trump-cancel-btn-radius);
  font-size: var(--trump-cancel-btn-size);
  cursor: pointer;
  transition: all 0.2s ease;
}
.trump-selector-cancel-btn:hover {
  background: var(--app-surface-hover);
  color: var(--app-text);
}
/* ===== Round End Modal ===== */
.round-end-content {
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.round-end-title {
  font-size: 20px;
  font-weight: 700;
  color: var(--app-primary);
  margin: 0;
}
.round-end-result {
  text-align: center;
}
.round-end-result-text {
  font-size: 18px;
  font-weight: 700;
  color: var(--app-success);
  margin: 0 0 4px 0;
}
.round-end-points {
  font-size: 24px;
  font-weight: 800;
  color: var(--app-primary);
  margin: 0;
}
.round-end-tricks {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px;
}
.round-end-trick-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  padding: 12px;
  background: var(--app-secondary);
  border: 1px solid var(--app-secondary-border);
  border-radius: 8px;
}
.round-end-trick-label {
  font-size: 12px;
  color: var(--app-text-muted);
}
.round-end-trick-value {
  font-size: 16px;
  font-weight: 700;
  color: var(--app-text);
}
.round-end-scores {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px;
}
.round-end-score-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  padding: 12px;
  background: var(--app-primary-bg);
  border: 1px solid var(--app-surface-border);
  border-radius: 8px;
}
.round-end-score-label {
  font-size: 12px;
  color: var(--app-text-muted);
}
.round-end-score-value {
  font-size: 18px;
  font-weight: 700;
  color: var(--app-primary);
}
.round-end-actions {
  display: flex;
  justify-content: center;
  padding-top: 8px;
  border-top: 1px solid var(--app-secondary-border);
}
.round-end-continue-btn {
  padding: 12px 32px;
  background: linear-gradient(135deg, var(--app-primary) 0%, var(--app-primary-active) 100%);
  color: var(--app-bg);
  border: none;
  border-radius: 10px;
  font-size: 16px;
  font-weight: 700;
  cursor: pointer;
  transition: all 0.2s ease;
  box-shadow: 0 4px 12px var(--app-primary-shadow);
}
.round-end-continue-btn:hover {
  background: linear-gradient(135deg, var(--app-primary-hover) 0%, var(--app-primary) 100%);
  box-shadow: 0 6px 16px var(--app-primary-shadow-hover);
}
/* ===== Victory Modal ===== */
.victory-content {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
}
.victory-icon {
  font-size: 56px;
  line-height: 1;
}
.victory-title {
  font-size: 24px;
  font-weight: 800;
  color: var(--app-primary);
  margin: 0;
}
.victory-winner {
  font-size: 18px;
  font-weight: 700;
  color: var(--app-success);
  margin: 0;
}
.victory-scores {
  width: 100%;
}
.victory-scores-title {
  font-size: 16px;
  font-weight: 600;
  color: var(--app-text);
  margin: 0 0 12px 0;
  text-align: center;
}
.victory-scores-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px;
}
.victory-score-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  padding: 16px;
  background: var(--app-primary-bg);
  border: 1px solid var(--app-surface-border);
  border-radius: 10px;
}
.victory-score-label {
  font-size: 13px;
  color: var(--app-text-muted);
}
.victory-score-value {
  font-size: 28px;
  font-weight: 800;
  color: var(--app-primary);
}
.victory-score-unit {
  font-size: 12px;
  color: var(--app-text-dim);
}
.victory-actions {
  display: flex;
  flex-direction: column;
  gap: 8px;
  width: 100%;
  padding-top: 8px;
  border-top: 1px solid var(--app-secondary-border);
}
.victory-new-game-btn {
  padding: 14px 24px;
  background: linear-gradient(135deg, var(--app-primary) 0%, var(--app-primary-active) 100%);
  color: var(--app-bg);
  border: none;
  border-radius: 10px;
  font-size: 16px;
  font-weight: 700;
  cursor: pointer;
  transition: all 0.2s ease;
  box-shadow: 0 4px 12px var(--app-primary-shadow);
}
.victory-new-game-btn:hover {
  background: linear-gradient(135deg, var(--app-primary-hover) 0%, var(--app-primary) 100%);
  box-shadow: 0 6px 16px var(--app-primary-shadow-hover);
}
.victory-lobby-btn {
  padding: 12px 24px;
  background: var(--app-secondary);
  color: var(--app-text);
  border: 1px solid var(--app-secondary-border);
  border-radius: 10px;
  font-size: 15px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s ease;
}
.victory-lobby-btn:hover {
  background: var(--app-secondary-hover);
}
/* ===== Played Cards Modal ===== */
.played-cards-content {
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.played-cards-title {
  font-size: 20px;
  font-weight: 700;
  color: var(--app-primary);
  margin: 0;
}
.played-cards-content .trick-row {
  padding: 12px;
  background: var(--app-secondary);
  border: 1px solid var(--app-secondary-border);
  border-radius: 8px;
}
.trick-row-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 8px;
}
.trick-label {
  font-size: 14px;
  font-weight: 600;
  color: var(--app-text);
}
.trick-status {
  font-size: 11px;
  font-weight: 600;
  padding: 2px 8px;
  border-radius: 4px;
}
.trick-status.status-won {
  background: var(--app-primary-bg);
  color: var(--app-primary);
}
.trick-status.status-in-progress {
  background: var(--app-info);
  color: var(--app-bg);
}
.cards-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
}
.played-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  padding: 8px;
  background: var(--app-surface);
  border: 1px solid var(--app-surface-border);
  border-radius: 6px;
  min-height: 60px;
  justify-content: center;
}
.played-card.played-card-empty {
  opacity: 0.5;
}
.played-card-value {
  font-size: 16px;
  font-weight: 700;
  border: 1px solid var(--app-surface-border);
  border-radius: 6px;
  background-color: var(--game-card-bg);
}
.played-card-player {
  font-size: 11px;
  color: var(--app-text-muted);
}
.empty-state {
  min-height: 150px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 8px;
}
.empty-state p {
  font-size: 16px;
  color: var(--app-text-muted);
  margin: 0;
}
.empty-state-hint {
  font-size: 13px !important;
  color: var(--app-text-dim) !important;
}
/* ===== Theme Selector Overlay ===== */
.theme-selector-overlay {
  position: fixed;
  inset: 0;
  z-index: 2000;
  background-color: var(--game-modal-overlay);
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transition: opacity 0.3s ease;
}
.theme-selector-overlay.open {
  opacity: 1;
}
.theme-selector-panel {
  width: 100%;
  max-width: 360px;
  max-height: 80vh;
  overflow-y: auto;
  padding: 24px;
  background: var(--app-surface);
  border: 1px solid var(--app-surface-border);
  border-radius: 16px;
  backdrop-filter: blur(8px);
}
.theme-selector-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 16px;
}
.theme-selector-title {
  font-size: 18px;
  font-weight: 700;
  color: var(--app-primary);
  margin: 0;
}
.theme-selector-close {
  background: transparent;
  border: none;
  color: var(--app-text-muted);
  font-size: 20px;
  cursor: pointer;
  padding: 4px 8px;
  border-radius: 4px;
  transition: all 0.2s ease;
}
.theme-selector-close:hover {
  background: var(--app-surface-hover);
  color: var(--app-text);
}
.theme-selector-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px;
}
/* ===== Room Code Modal ===== */
.room-code-modal-overlay {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: var(--game-modal-overlay);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 2000;
}
.room-code-modal {
  max-height: 80vh;
  overflow-y: auto;
  padding: 24px;
  background: var(--app-bg);
  border: 1px solid var(--app-surface-border);
  border-radius: 16px;
  max-width: 340px;
  width: 100%;
  text-align: center;
}
.room-code-modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 16px;
}
.room-code-modal-header h3 {
  font-size: 16px;
  font-weight: 600;
  color: var(--app-text);
}
.room-code-modal-body {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
}
.room-code-display {
  font-size: 36px;
  font-weight: 800;
  letter-spacing: 8px;
  font-family: monospace;
  color: var(--app-text);
  background: var(--app-surface);
  border: 2px dashed var(--app-surface-border);
  border-radius: 12px;
  padding: 16px 24px;
  width: 100%;
  text-align: center;
}
.room-code-waiting {
  font-size: 14px;
  color: var(--app-text-muted);
  margin-top: 4px;
}
/* ===== Login / Lobby Views ===== */
.login-view, .lobby-view, .registration-view {
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 24px;
  background: linear-gradient(135deg, var(--app-bg-gradient-start) 0%, var(--app-bg-gradient-mid) 50%, var(--app-bg-gradient-end) 100%);
  background-image:
    radial-gradient(ellipse at 30% 20%, var(--app-glow-1) 0%, transparent 50%),
    radial-gradient(ellipse at 70% 80%, var(--app-glow-2) 0%, transparent 50%),
    linear-gradient(135deg, var(--app-bg-gradient-start) 0%, var(--app-bg-gradient-mid) 50%, var(--app-bg-gradient-end) 100%);
}
.login-container, .lobby-container, .registration-container {
  width: 100%;
  max-width: 400px;
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 32px 24px;
  padding-bottom: 40px;
  background: var(--app-surface);
  border: 1px solid var(--app-surface-border);
  border-radius: 16px;
  backdrop-filter: blur(8px);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
}
.app-title {
  font-size: 32px;
  font-weight: 800;
  color: var(--app-primary);
  text-align: center;
  margin-bottom: 4px;
  text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
  letter-spacing: 1px;
}
.app-subtitle {
  font-size: 14px;
  color: var(--app-text-muted);
  text-align: center;
  margin-bottom: 24px;
}
.form-group {
  width: 100%;
  max-width: 320px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-bottom: 16px;
}
.form-input {
  width: 100%;
  padding: 14px 16px;
  background: var(--app-input-bg);
  border: 1px solid var(--app-input-border);
  border-radius: 10px;
  color: var(--app-text);
  font-size: 16px;
  outline: none;
  box-sizing: border-box;
  transition: border-color 0.2s ease, background 0.2s ease, box-shadow 0.2s ease;
}
.form-input:focus {
  border-color: var(--app-primary);
  background: var(--app-input-focus-bg);
  box-shadow: 0 0 0 3px var(--app-input-focus-ring);
}
.form-input::-moz-placeholder {
  color: var(--app-text-muted);
}
.form-input::placeholder {
  color: var(--app-text-muted);
}
.error-message {
  width: 100%;
  max-width: 320px;
  padding: 10px 14px;
  background: var(--app-error-bg);
  border: 1px solid var(--app-error-border);
  border-radius: 8px;
  color: var(--app-error-text);
  font-size: 14px;
  margin-bottom: 12px;
}
.error-message.hidden {
  display: none;
}
.success-message {
  width: 100%;
  max-width: 320px;
  padding: 10px 14px;
  background: var(--app-success-bg);
  border: 1px solid var(--app-success-border);
  border-radius: 8px;
  color: var(--app-success-text);
  font-size: 14px;
  margin-top: 12px;
  text-align: center;
}
.success-message.hidden {
  display: none;
}
/* ===== Buttons ===== */
.btn-primary {
  width: 100%;
  max-width: 320px;
  padding: 14px 24px;
  background: linear-gradient(135deg, var(--app-primary) 0%, var(--app-primary-active) 100%);
  color: var(--app-bg);
  border: none;
  border-radius: 10px;
  font-size: 16px;
  font-weight: 700;
  cursor: pointer;
  transition: transform 0.15s ease, box-shadow 0.15s ease, background 0.2s ease;
  box-shadow: 0 4px 12px var(--app-primary-shadow);
}
.btn-primary:hover {
  background: linear-gradient(135deg, var(--app-primary-hover) 0%, var(--app-primary) 100%);
  box-shadow: 0 6px 16px var(--app-primary-shadow-hover);
}
.btn-primary:active {
  transform: scale(0.98);
  background: linear-gradient(135deg, var(--app-primary-active) 0%, var(--app-primary-active-deep) 100%);
}
.btn-secondary {
  width: 100%;
  max-width: 320px;
  padding: 14px 24px;
  background: var(--app-secondary);
  color: var(--app-text);
  border: 1px solid var(--app-secondary-border);
  border-radius: 10px;
  font-size: 15px;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.2s ease, border-color 0.2s ease, transform 0.15s ease;
}
.btn-secondary:hover {
  background: var(--app-secondary-hover);
  border-color: var(--app-secondary-border);
}
.btn-secondary:active {
  transform: scale(0.98);
  background: var(--app-secondary-active);
}
.btn-outline {
  width: 100%;
  max-width: 320px;
  padding: 14px 24px;
  background: transparent;
  color: var(--app-primary);
  border: 2px solid rgba(212, 175, 55, 0.5);
  border-radius: 10px;
  font-size: 15px;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.2s ease, border-color 0.2s ease, transform 0.15s ease;
}
.btn-outline:hover {
  background: var(--app-primary-bg);
  border-color: var(--app-primary);
}
.btn-outline:active {
  transform: scale(0.98);
  background: var(--app-primary-bg-hover);
}
.btn-ghost {
  width: auto;
  padding: 8px 16px;
  background: transparent;
  color: var(--app-text-muted);
  border: none;
  border-radius: 8px;
  font-size: 14px;
  cursor: pointer;
  transition: color 0.2s ease, background 0.2s ease;
}
.btn-ghost:hover {
  color: var(--app-text);
  background: var(--app-surface-hover);
}
.btn-lg {
  padding: 16px 28px;
  font-size: 16px;
}
.btn-sm {
  padding: 6px 12px;
  font-size: 13px;
}
.w-full {
  width: 100%;
}
.mt-2 {
  margin-top: 8px;
}
.mt-3 {
  margin-top: 12px;
}
.mt-4 {
  margin-top: 16px;
}
.register-link {
  font-size: 14px;
  color: var(--app-text-muted);
  text-align: center;
}
.register-link a {
  color: var(--app-primary);
  text-decoration: none;
  font-weight: 600;
  transition: color 0.2s ease;
}
.register-link a:hover {
  color: var(--app-primary-hover);
  text-decoration: underline;
}
.register-back-link, .forgot-link, .back-link {
  font-size: 14px;
  color: var(--app-text-muted);
  text-align: center;
}
.register-back-link a, .forgot-link a, .back-link a {
  color: var(--app-primary);
  text-decoration: none;
  font-weight: 600;
  transition: color 0.2s ease;
}
.register-back-link a:hover, .forgot-link a:hover, .back-link a:hover {
  color: var(--app-primary-hover);
  text-decoration: underline;
}
/* ===== Lobby View ===== */
.lobby-header {
  text-align: center;
  margin-bottom: 24px;
}
.lobby-header h1 {
  font-size: 28px;
  font-weight: 800;
  color: var(--app-primary);
  margin: 0 0 4px 0;
  text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
}
.lobby-header .subtitle {
  font-size: 14px;
  color: var(--app-text-muted);
  margin: 0;
}
.user-section {
  width: 100%;
  max-width: 320px;
  margin-bottom: 24px;
  padding: 16px;
  background: var(--app-surface);
  border: 1px solid var(--app-secondary-border);
  border-radius: 12px;
}
.user-info {
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 12px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--app-secondary-border);
}
.username {
  font-size: 18px;
  font-weight: 700;
  color: var(--app-text);
}
.stats-section {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px;
}
.stat-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
}
.stat-label {
  font-size: 11px;
  color: var(--app-text-dim);
  text-transform: uppercase;
  letter-spacing: 0.5px;
}
.stat-value {
  font-size: 20px;
  font-weight: 700;
  color: var(--app-primary);
}
.lobby-actions {
  width: 100%;
  max-width: 320px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.lobby-footer {
  width: 100%;
  max-width: 320px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-top: 24px;
  padding-top: 16px;
  border-top: 1px solid var(--app-secondary-border);
}
/* ===== Theme Badge (Lobby Footer) ===== */
.theme-badge-btn {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 16px;
  background: var(--app-surface);
  border: 1px solid var(--app-surface-border);
  border-radius: 20px;
  cursor: pointer;
  transition: all 0.2s ease;
}
.theme-badge-btn:hover {
  background: var(--app-surface-hover);
  border-color: var(--app-primary);
}
.theme-dot {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: var(--app-primary);
  transition: background 0.2s ease;
}
.theme-name {
  font-size: 13px;
  color: var(--app-text-muted);
  white-space: nowrap;
}
/* ===== Theme Selector Modal ===== */
.theme-selector-modal {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: var(--game-modal-overlay);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 2000;
}
.theme-selector-content {
  max-height: 80vh;
  overflow-y: auto;
  padding: 24px;
  background: var(--app-bg);
  border: 1px solid var(--app-surface-border);
  border-radius: 16px;
  max-width: 360px;
  width: 100%;
}
.theme-option-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 16px 12px;
  border-radius: 12px;
  cursor: pointer;
  transition: transform 0.15s ease, box-shadow 0.15s ease;
  border: 2px solid transparent;
}
.theme-option-card:hover {
  transform: scale(1.05);
}
.theme-option-card.active {
  box-shadow: 0 0 0 2px var(--theme-primary);
}
.theme-option-preview {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 8px;
}
.theme-option-preview-text {
  font-size: 18px;
  font-weight: 700;
}
.theme-option-name {
  font-size: 14px;
  font-weight: 600;
  text-align: center;
  margin-bottom: 2px;
}
.theme-option-desc {
  font-size: 12px;
  opacity: 0.6;
  text-align: center;
}
.theme-option-active-badge {
  font-size: 11px;
  font-weight: 700;
  margin-top: 4px;
}
/* Theme-specific card styles */
.theme-option-card[data-theme-id="golden-ascent"] {
  background: #0a0a0a;
  border-color: #d4af37;
}
.theme-option-card[data-theme-id="golden-ascent"] .theme-option-preview {
  background: #d4af37;
}
.theme-option-card[data-theme-id="golden-ascent"] .theme-option-preview-text {
  color: #0a0a0a;
}
.theme-option-card[data-theme-id="golden-ascent"] .theme-option-name,
.theme-option-card[data-theme-id="golden-ascent"] .theme-option-desc,
.theme-option-card[data-theme-id="golden-ascent"] .theme-option-active-badge {
  color: #d4af37;
}
.theme-option-card[data-theme-id="royal-emerald"] {
  background: #0a1a0f;
  border-color: #22c55e;
}
.theme-option-card[data-theme-id="royal-emerald"] .theme-option-preview {
  background: #22c55e;
}
.theme-option-card[data-theme-id="royal-emerald"] .theme-option-preview-text {
  color: #0a1a0f;
}
.theme-option-card[data-theme-id="royal-emerald"] .theme-option-name,
.theme-option-card[data-theme-id="royal-emerald"] .theme-option-desc,
.theme-option-card[data-theme-id="royal-emerald"] .theme-option-active-badge {
  color: #22c55e;
}
.theme-option-card[data-theme-id="crimson-velvet"] {
  background: #1a0a0a;
  border-color: #ef4444;
}
.theme-option-card[data-theme-id="crimson-velvet"] .theme-option-preview {
  background: #ef4444;
}
.theme-option-card[data-theme-id="crimson-velvet"] .theme-option-preview-text {
  color: #1a0a0a;
}
.theme-option-card[data-theme-id="crimson-velvet"] .theme-option-name,
.theme-option-card[data-theme-id="crimson-velvet"] .theme-option-desc,
.theme-option-card[data-theme-id="crimson-velvet"] .theme-option-active-badge {
  color: #ef4444;
}
.theme-option-card[data-theme-id="midnight-sapphire"] {
  background: #0a1628;
  border-color: #3b82f6;
}
.theme-option-card[data-theme-id="midnight-sapphire"] .theme-option-preview {
  background: #3b82f6;
}
.theme-option-card[data-theme-id="midnight-sapphire"] .theme-option-preview-text {
  color: #0a1628;
}
.theme-option-card[data-theme-id="midnight-sapphire"] .theme-option-name,
.theme-option-card[data-theme-id="midnight-sapphire"] .theme-option-desc,
.theme-option-card[data-theme-id="midnight-sapphire"] .theme-option-active-badge {
  color: #3b82f6;
}
.theme-option-card[data-theme-id="royal-amethyst"] {
  background: #1a0a2e;
  border-color: #8b5cf6;
}
.theme-option-card[data-theme-id="royal-amethyst"] .theme-option-preview {
  background: #8b5cf6;
}
.theme-option-card[data-theme-id="royal-amethyst"] .theme-option-preview-text {
  color: #1a0a2e;
}
.theme-option-card[data-theme-id="royal-amethyst"] .theme-option-name,
.theme-option-card[data-theme-id="royal-amethyst"] .theme-option-desc,
.theme-option-card[data-theme-id="royal-amethyst"] .theme-option-active-badge {
  color: #8b5cf6;
}
/* ===== Player Displays ===== */
.player-display {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  position: relative;
  overflow: visible;
}
.partner-display {
  grid-area: partner;
}
.opponent-display.left-opponent {
  grid-area: left-opponent;
}
.opponent-display.right-opponent {
  grid-area: right-opponent;
}
.player-info {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--player-info-gap);
  padding: var(--player-info-padding);
  border-radius: var(--player-info-radius);
  background: var(--game-player-bg);
  min-width: var(--player-info-min-width);
}
.player-info.active {
  background: var(--game-player-active-bg);
  border: 2px solid var(--game-player-active-border);
}
.player-avatar {
  width: var(--avatar-size);
  height: var(--avatar-size);
  border-radius: var(--avatar-radius);
  background: var(--game-avatar-bg);
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  font-size: var(--avatar-font-size);
}
.active-ring {
  position: absolute;
  inset: var(--active-ring-inset);
  border-radius: 50%;
  border: var(--active-ring-width) solid var(--game-accent-ring);
  animation: pulse-ring 1.5s ease-in-out infinite;
}
.crown-icon {
  position: absolute;
  top: var(--crown-icon-top);
  font-size: var(--crown-icon-size);
}
.player-name {
  font-size: var(--player-name-size);
  font-weight: 600;
  color: var(--game-text);
  max-width: 6ch;
}
.card-count {
  font-size: var(--card-count-size);
  color: var(--game-text-muted);
}
/* Team Labels */
.team-label {
  font-size: var(--team-label-size);
  font-weight: 700;
  padding: var(--team-label-padding);
  border-radius: var(--team-label-radius);
  text-transform: uppercase;
  letter-spacing: 0.5px;
}
.team-label.team-0 {
  background: var(--game-team-0-bg);
  color: var(--game-team-0-text);
  border: 1px solid var(--game-team-0-border);
}
.team-label.team-1 {
  background: var(--game-team-1-bg);
  color: var(--game-team-1-text);
  border: 1px solid var(--game-team-1-border);
}
/* User Display (bottom right corner of user hand area) */
.user-display {
  margin-top: 5px;
}
.user-display .player-info {
  min-width: var(--user-display-player-min-width);
  padding: var(--user-display-player-padding);
}
.user-display .player-name {
  font-size: var(--user-display-name-size);
}
.user-display .team-label {
  font-size: var(--user-display-team-label-size);
  padding: var(--user-display-team-label-padding);
}
.user-display .card-count {
  font-size: var(--user-display-card-count-size);
}
/* ===== Trick Area (Center) ===== */
.trick-area {
  grid-area: trick-area;
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  border-radius: var(--trick-area-radius);
  background: var(--game-trick-area-bg);
  border: 1px solid rgba(212, 175, 55, 0.15);
  /* Gold tinted border */
}
.trick-area::before {
  content: '';
  position: absolute;
  width: min(80%, 150px);
  aspect-ratio: 1 / 1;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(212, 175, 55, 0.15) 0%, rgba(212, 175, 55, 0) 70%);
  border: 1px solid rgba(212, 175, 55, 0.2);
  pointer-events: none;
  z-index: 0;
}
.trick-placeholder {
  color: var(--game-text-dim);
  font-size: var(--trick-placeholder-size);
  font-style: italic;
}
/* Circular card arrangement */
.trick-cards {
  position: relative;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 24px;
  font-weight: 700;
  margin: 0 auto;
  z-index: 1;
  /* ensure cards appear on top of background */
}
/* ===== User Hand (Bottom - Thumb Zone) ===== */
.user-hand {
  grid-area: user-hand;
  display: flex;
  align-items: center;
  /* Drop cards to the shelf boundary */
  justify-content: center;
  padding: 0 4px 8px;
  /* Remove thick top padding, ensure 8px bottom pad */
  background: rgba(5, 10, 20, 0.6);
  border: 1px solid rgba(212, 175, 55, 0.5);
  /* Casino gold outline */
  box-shadow: inset 0 0 15px rgba(0, 0, 0, 0.8), 0 0 10px rgba(212, 175, 55, 0.05);
  /* inner shadow */
  border-radius: 8px;
  /* Squared off a bit more */
  margin: 4px;
}
.hand-cards {
  display: flex;
  justify-content: center;
  align-content: center;
  max-width: 100%;
  max-height: 100%;
  overflow: visible;
  /* ensure overlapping cards aren't clipped */
  padding: 0 20px;
}
/* Force horizontal overlap to fit 8 cards cleanly on narrow mobile devices seamlessly centered */
.hand-cards .card {
  margin: 0 max(-3vw, -12px);
  /* reduced overlap to keep cards fully in view */
}
/* ===== Offline Game View ===== */
.offline-game-view {
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
  position: relative;
  padding-top: 48px;
  box-sizing: border-box;
  background: linear-gradient(135deg, var(--app-bg-gradient-start) 0%, var(--app-bg-gradient-mid) 50%, var(--app-bg-gradient-end) 100%);
}
.offline-indicator {
  position: absolute;
  top: var(--offline-indicator-top);
  right: var(--offline-indicator-right);
  display: flex;
  align-items: center;
  gap: 4px;
  padding: var(--offline-indicator-padding);
  background: var(--game-offline-bg);
  border-radius: var(--offline-indicator-radius);
  font-size: var(--offline-indicator-size);
  color: var(--game-offline-text);
  z-index: 20;
}
.offline-icon {
  font-size: var(--offline-icon-size);
}
.return-to-lobby-btn {
  position: absolute;
  bottom: var(--return-btn-bottom);
  right: var(--return-btn-right);
  padding: var(--return-btn-padding);
  background: var(--game-lobby-btn-bg);
  color: var(--game-text);
  border: 1px solid var(--game-lobby-btn-border);
  border-radius: var(--return-btn-radius);
  font-size: var(--return-btn-size);
  font-weight: 500;
  overflow: visible;
  /* allow large center suit and overlap to be fully visible */
  z-index: 20;
  transition: background 0.2s ease;
}
.return-to-lobby-btn:active {
  background: var(--game-lobby-btn-hover);
}
/* ===== Modals - Using DaisyUI ===== */
/* Custom modal styles removed - using DaisyUI modal components */
/* ===== Game View (legacy) ===== */
.game-view {
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, var(--app-bg-gradient-start) 0%, var(--app-bg-gradient-mid) 50%, var(--app-bg-gradient-end) 100%);
}
.game-room {
  text-align: center;
  padding: var(--game-room-padding);
  background: var(--app-surface);
  border: 1px solid var(--app-surface-border);
  border-radius: var(--game-room-radius);
  max-width: var(--game-room-max-width);
}
.game-room h2 {
  font-size: var(--game-room-title-size);
  font-weight: 700;
  color: var(--app-primary);
  margin: 0 0 8px 0;
}
.game-room p {
  font-size: var(--game-room-desc-size);
  color: var(--app-text-muted);
  margin: 0 0 24px 0;
}
/* ===== Online Game Container ===== */
.online-game-container {
  width: 100%;
  height: 100%;
  padding-top: var(--app-header-height);
  box-sizing: border-box;
  background: linear-gradient(135deg, var(--app-bg-gradient-start) 0%, var(--app-bg-gradient-mid) 50%, var(--app-bg-gradient-end) 100%);
}
/* Waiting Room View */
.waiting-room-wrapper {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, var(--app-bg-gradient-start) 0%, var(--app-bg-gradient-mid) 50%, var(--app-bg-gradient-end) 100%);
}
.waiting-room-loading {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--controls-gap);
  color: var(--app-text);
}
.waiting-room-loading p {
  font-size: var(--join-room-btn-size);
  color: var(--app-text-muted);
}
.waiting-room-view {
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
  padding: var(--waiting-room-padding);
  padding-top: var(--waiting-room-padding-top);
  background: linear-gradient(135deg, var(--app-bg-gradient-start) 0%, var(--app-bg-gradient-mid) 50%, var(--app-bg-gradient-end) 100%);
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
.waiting-room-header {
  display: flex;
  align-items: center;
  gap: var(--waiting-room-header-gap);
  margin-bottom: var(--waiting-room-header-margin-bottom);
}
.waiting-room-back-btn {
  flex-shrink: 0;
}
.waiting-room-title {
  font-size: var(--waiting-room-title-size);
  font-weight: 700;
  color: var(--app-text);
  margin: 0;
}
.waiting-room-info {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--waiting-room-info-gap);
  padding: var(--waiting-room-info-padding);
  background: var(--app-surface);
  border: 1px solid var(--app-surface-border);
  border-radius: var(--waiting-room-info-radius);
  margin-bottom: var(--waiting-room-info-margin-bottom);
  backdrop-filter: blur(8px);
}
.trump-declarer-section {
  display: flex;
  align-items: center;
  gap: var(--controls-gap);
  padding: var(--trump-declarer-padding);
  background: linear-gradient(135deg, var(--app-primary) 0%, var(--app-primary-dark, #1a365d) 100%);
  border-radius: var(--trump-declarer-radius);
  color: white;
  font-weight: 600;
  font-size: var(--trump-declarer-size);
  animation: pulse-glow 2s ease-in-out infinite;
}
@keyframes pulse-glow {
  0%, 100% { box-shadow: 0 0 8px rgba(59, 130, 246, 0.5); }
  50% { box-shadow: 0 0 16px rgba(59, 130, 246, 0.8); }
}
.trump-declarer-label {
  font-size: var(--trump-declarer-label-size);
}
.trump-declarer-name {
  font-weight: 700;
}
.trump-declarer-badge {
  position: absolute;
  top: var(--trump-declarer-badge-top);
  right: var(--trump-declarer-badge-right);
  font-size: var(--trump-declarer-badge-size);
  animation: bounce 1s ease-in-out infinite;
}
@keyframes bounce {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-4px); }
}
.trump-declarer-text {
  display: block;
  font-size: var(--trump-declarer-text-size);
  color: var(--app-primary);
  font-weight: 600;
  margin-top: 2px;
}
.room-code-section {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--room-code-gap);
}
.room-code-label {
  font-size: var(--room-code-label-size);
  color: var(--app-text-muted);
  text-transform: uppercase;
  letter-spacing: var(--room-code-label-spacing);
}
.room-code-display {
  display: flex;
  align-items: center;
  gap: var(--room-code-spacing);
}
.room-code-text {
  font-size: var(--room-code-size);
  font-weight: 800;
  letter-spacing: var(--room-code-spacing);
  font-family: monospace;
  color: var(--app-primary);
}
.room-timer {
  display: flex;
  align-items: center;
  gap: var(--room-timer-gap);
  font-size: var(--room-timer-size);
  font-weight: 600;
  color: var(--app-text);
}
.room-timer .timer-icon {
  color: var(--app-text-muted);
}
.room-timer .timer-warning {
  color: var(--app-error-text);
}
.timer-warning {
  color: var(--app-error-text);
}
.room-player-count {
  font-size: var(--room-player-count-size);
  color: var(--app-text-muted);
}
/* Team Slots - Single Column Layout */
.team-slots-container {
  display: flex;
  flex-direction: column;
  gap: var(--team-slots-gap);
  margin-bottom: var(--team-slots-margin-bottom);
  flex: 1;
}
.team-section {
  background: var(--app-surface);
  border: 1px solid var(--app-surface-border);
  border-radius: var(--team-section-radius);
  padding: var(--team-section-padding);
  display: flex;
  flex-direction: column;
  gap: var(--team-section-gap);
}
.team-section-header {
  display: flex;
  justify-content: center;
}
.team-players-list {
  display: flex;
  flex-direction: column;
  gap: var(--team-section-gap);
  flex: 1;
}
.team-badge {
  font-size: var(--team-badge-size);
  font-weight: 700;
  padding: var(--team-badge-padding);
  border-radius: var(--team-badge-radius);
  text-transform: uppercase;
  letter-spacing: var(--team-badge-spacing);
}
.team-badge-0 {
  background: var(--game-team-0-bg, rgba(59, 130, 246, 0.2));
  color: var(--game-team-0-text, #60a5fa);
  border: 1px solid var(--game-team-0-border, rgba(59, 130, 246, 0.4));
}
.team-badge-1 {
  background: var(--game-team-1-bg, rgba(239, 68, 68, 0.2));
  color: var(--game-team-1-text, #f87171);
  border: 1px solid var(--game-team-1-border, rgba(239, 68, 68, 0.4));
}
.player-slot {
  display: flex;
  align-items: center;
  gap: var(--player-slot-gap);
  padding: var(--player-slot-padding);
  border-radius: var(--player-slot-radius);
  background: var(--app-surface);
  border: 1px solid var(--app-surface-border);
}
.player-slot-admin {
  border-color: var(--app-primary);
}
.player-slot-empty {
  border-style: dashed;
  opacity: 0.6;
}
.player-avatar {
  position: relative;
  flex-shrink: 0;
}
.avatar-circle {
  width: var(--slot-avatar-size);
  height: var(--slot-avatar-size);
  border-radius: 50%;
  background: var(--game-avatar-bg, var(--app-primary));
  color: white;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: var(--slot-avatar-font-size);
  font-weight: 700;
}
.avatar-empty {
  background: var(--app-surface-border);
  color: var(--app-text-muted);
}
.admin-crown {
  position: absolute;
  top: var(--admin-crown-top);
  right: var(--admin-crown-right);
  font-size: var(--admin-crown-size);
}
.player-info {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.player-name {
  font-size: var(--slot-player-name-size);
  font-weight: 600;
  color: var(--app-text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 6ch;
}
.player-name-empty {
  font-size: var(--slot-player-name-empty-size);
  font-style: italic;
  color: var(--app-text-muted);
}
.admin-badge {
  font-size: var(--admin-badge-size);
  color: var(--app-primary);
  font-weight: 600;
}
/* Admin Controls */
.waiting-room-controls {
  display: flex;
  flex-direction: column;
  gap: var(--controls-gap);
  padding-top: var(--controls-padding-top);
  border-top: var(--controls-border-top);
}
.admin-controls {
  display: flex;
  gap: var(--controls-gap);
}
.admin-controls .btn {
  flex: 1;
  justify-content: center;
}
/* Join Room Modal */
.join-room-modal {
  display: flex;
  flex-direction: column;
  gap: var(--join-room-gap);
}
.join-room-title {
  font-size: var(--join-room-title-size);
  font-weight: 700;
  color: var(--app-text);
  margin: 0;
  text-align: center;
}
.join-room-code-input {
  display: flex;
  flex-direction: column;
  gap: var(--join-room-code-input-gap);
}
.join-room-label {
  font-size: var(--join-room-label-size);
  font-weight: 600;
  color: var(--app-text);
}
.join-room-code-field {
  width: 100%;
  text-transform: uppercase;
  letter-spacing: var(--join-room-code-field-spacing);
  text-align: center;
  font-family: monospace;
  font-size: var(--join-room-code-field-size);
  font-weight: 700;
  background: var(--app-input-bg);
  color: var(--app-text);
  border: 1px solid var(--app-input-border);
  border-radius: var(--join-room-code-field-radius);
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
  min-height: var(--join-room-code-field-min-height);
  padding: var(--join-room-code-field-padding);
}
.join-room-code-field:focus {
  outline: none;
  border-color: var(--app-primary);
  box-shadow: 0 0 0 3px var(--app-input-focus-ring);
  background: var(--app-input-focus-bg);
}
.join-room-join-btn {
  width: 100%;
  min-height: var(--join-room-btn-min-height);
  justify-content: center;
  font-size: var(--join-room-btn-size);
  font-weight: 600;
  border-radius: var(--join-room-btn-radius);
}
.join-room-error {
  font-size: var(--join-room-error-size);
  color: var(--app-error-text);
  background: var(--app-error-bg);
  border: 1px solid var(--app-error-border);
  border-radius: var(--join-room-error-radius);
  padding: var(--join-room-error-padding);
}
.join-room-divider {
  display: flex;
  align-items: center;
  gap: var(--join-room-divider-gap);
  color: var(--app-text-muted);
  font-size: var(--join-room-divider-size);
}
.join-room-divider::before,
.join-room-divider::after {
  content: '';
  flex: 1;
  height: 1px;
  background: var(--app-surface-border);
}
.join-room-rooms-list {
  display: flex;
  flex-direction: column;
  gap: var(--join-room-rooms-gap);
}
.join-room-rooms-title {
  font-size: var(--join-room-rooms-title-size);
  font-weight: 600;
  color: var(--app-text);
  margin: 0;
}
.join-room-empty {
  font-size: var(--join-room-empty-size);
  color: var(--app-text-muted);
  text-align: center;
  padding: var(--join-room-empty-padding);
  background: var(--app-surface);
  border: 1px dashed var(--app-surface-border);
  border-radius: var(--join-room-empty-radius);
}
.join-room-rooms {
  display: flex;
  flex-direction: column;
  gap: var(--join-room-rooms-gap);
  max-height: min(200px, 35vh);
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
  scrollbar-color: var(--app-surface-border) transparent;
}
.join-room-rooms::-webkit-scrollbar {
  width: var(--join-room-room-card-bar-width);
}
.join-room-rooms::-webkit-scrollbar-track {
  background: transparent;
}
.join-room-rooms::-webkit-scrollbar-thumb {
  background: var(--app-surface-border);
  border-radius: var(--join-room-room-card-radius);
}
.join-room-room-card {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: space-between;
  gap: var(--join-room-room-card-gap);
  padding: var(--join-room-room-card-padding);
  background: var(--app-surface);
  border: 1px solid var(--app-surface-border);
  border-radius: var(--join-room-room-card-radius);
  cursor: pointer;
  transition: border-color 0.15s ease, background-color 0.15s ease, box-shadow 0.15s ease;
  width: 100%;
  text-align: left;
  position: relative;
  overflow: hidden;
  min-height: var(--join-room-room-card-min-height);
}
.join-room-room-card::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: var(--join-room-room-card-bar-width);
  height: 100%;
  background: var(--app-primary);
  opacity: 0;
  transition: opacity 0.15s ease;
}
.join-room-room-card:hover {
  border-color: var(--app-primary);
  background: var(--app-surface-hover);
  box-shadow: 0 2px 8px var(--app-glow-1, rgba(0, 0, 0, 0.1));
}
.join-room-room-card:hover::before {
  opacity: 1;
}
.join-room-room-card:active {
  transform: scale(0.98);
}
.join-room-room-code {
  font-size: var(--join-room-room-code-size);
  font-weight: 800;
  font-family: monospace;
  letter-spacing: var(--join-room-room-code-spacing);
  color: var(--app-primary);
  line-height: 1;
  flex-shrink: 0;
  min-width: var(--join-room-room-code-min-width);
  text-align: center;
  padding: var(--join-room-room-code-padding);
  background: var(--app-primary-bg, rgba(59, 130, 246, 0.1));
  border-radius: var(--join-room-room-code-radius);
}
.join-room-room-host {
  font-size: var(--join-room-room-host-size);
  font-weight: 500;
  color: var(--app-text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  flex: 1;
  line-height: 1.2;
}
.join-room-room-players {
  font-size: var(--join-room-room-players-size);
  font-weight: 600;
  color: var(--app-text-muted);
  white-space: nowrap;
  line-height: 1;
  padding: var(--join-room-room-players-padding);
  background: var(--app-surface);
  border-radius: var(--join-room-room-players-radius);
  border: 1px solid var(--app-surface-border);
  flex-shrink: 0;
}
/* Reconnection Overlay */
.reconnection-overlay {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: var(--game-modal-overlay);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 3000;
}
.reconnection-card {
  background: var(--app-bg);
  border: 1px solid var(--app-surface-border);
  border-radius: var(--reconnection-radius);
  padding: var(--reconnection-padding);
  text-align: center;
  max-width: var(--reconnection-max-width);
  width: 90%;
}
.reconnection-card h3 {
  font-size: var(--reconnection-title-size);
  font-weight: 600;
  color: var(--app-text);
  margin: var(--reconnection-padding) 0 var(--controls-gap);
}
.reconnection-countdown {
  font-size: var(--reconnection-countdown-size);
  font-weight: 700;
  color: var(--app-text);
  margin: var(--controls-gap) 0;
}
.reconnection-hint {
  font-size: var(--reconnection-hint-size);
  color: var(--app-text-muted);
}
.reconnection-spinner {
  width: var(--reconnection-spinner-size);
  height: var(--reconnection-spinner-size);
  border: var(--reconnection-spinner-border) solid var(--app-surface-border);
  border-top-color: var(--app-primary);
  border-radius: 50%;
  animation: spin 1s linear infinite;
  margin: 0 auto;
}
.reconnection-success {
  border-color: var(--app-success);
}
.reconnection-check {
  width: var(--reconnection-check-size);
  height: var(--reconnection-check-size);
  background: var(--app-success);
  color: var(--app-text);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: var(--reconnection-check-icon-size);
  font-weight: 700;
  margin: 0 auto;
}
.reconnection-failed {
  border-color: var(--app-error-text);
}
.reconnection-icon {
  width: var(--reconnection-spinner-size);
  height: var(--reconnection-spinner-size);
  background: var(--app-error-text);
  color: var(--app-text);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: var(--reconnection-check-icon-size);
  font-weight: 700;
  margin: 0 auto;
}
/* ===== Responsive: Layout Shifts Only ===== */
/* All sizing is handled by CSS custom properties in 01-theme-tokens.css.
   This file only contains structural changes (grid layouts, flex directions)
   for landscape orientation. Portrait uses base styles from component files. */
/* ===== Landscape: Login / Lobby / Registration Grid Layout ===== */
@media (orientation: landscape) and (max-height: 500px) {
  /* Login / Registration - 2 column grid */
  .login-container, .registration-container {
    display: grid;
    grid-template-columns: 160px 1fr;
    grid-template-rows: auto auto auto auto auto;
    align-items: center;
  }

  .login-container > .app-title, .registration-container > .app-title {
    grid-column: 1;
    grid-row: 1 / span 5;
    text-align: left;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding-right: 18px;
    border-right: 1px solid var(--app-secondary-border);
    margin-bottom: 0;
  }

  .login-container > .app-subtitle, .registration-container > .app-subtitle {
    display: none;
  }

  .login-container > .form-group, .registration-container > .form-group {
    grid-column: 2;
    max-width: 100%;
    margin-bottom: 0;
  }

  .login-container > .form-group:nth-of-type(1), .registration-container > .form-group:nth-of-type(1) {
    grid-row: 1;
  }

  .login-container > .form-group:nth-of-type(2), .registration-container > .form-group:nth-of-type(2) {
    grid-row: 2;
  }

  .login-container > .btn-primary, .registration-container > .btn-primary {
    grid-column: 2;
    grid-row: 3;
    max-width: 100%;
  }

  .login-container > .btn-outline {
    grid-column: 2;
    grid-row: 4;
    max-width: 100%;
  }

  .login-container > .register-link, .registration-container > .register-back-link {
    grid-column: 2;
    grid-row: 5;
    margin-top: 0;
  }

  .login-container > .login-link {
    grid-column: 2;
    grid-row: 5;
    margin-top: 0;
  }

  .login-container > .success-message, .registration-container > .success-message {
    grid-column: 2;
    max-width: 100%;
  }

  .error-message, .success-message {
    grid-column: 2;
    max-width: 100%;
    margin-bottom: 0;
  }

  .btn-primary, .btn-secondary, .btn-outline {
    max-width: 100%;
  }

  .register-link, .login-link {
    margin-top: 0;
  }

  /* Lobby - 2 column grid */
  .lobby-container {
    display: grid;
    grid-template-columns: 1fr 200px;
    grid-template-rows: auto auto auto;
    align-items: center;
  }

  .lobby-header {
    grid-column: 1;
    grid-row: 1;
    margin-bottom: 0;
    text-align: left;
  }

  .user-section {
    grid-column: 1;
    grid-row: 2;
    max-width: 100%;
    margin-bottom: 0;
  }

  .lobby-actions {
    grid-column: 2;
    grid-row: 1 / span 2;
    max-width: 100%;
    flex-direction: column;
    justify-content: center;
  }

  .lobby-footer {
    grid-column: 1 / span 2;
    grid-row: 3;
    max-width: 100%;
    margin-top: 0;
    padding-top: 0;
  }

  /* Waiting Room - horizontal layout */
  .waiting-room-info {
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: center;
  }

  .room-code-section {
    flex-direction: row;
    gap: 6px;
    align-items: center;
  }

  .team-slots-container {
    flex-direction: row;
  }

  /* Join Room - horizontal code input */
  .join-room-code-input {
    flex-direction: row;
    gap: 8px;
    align-items: flex-end;
  }

  .join-room-label {
    display: none;
  }

  .join-room-code-field {
    flex: 1;
  }

  .join-room-join-btn {
    width: auto;
    flex-shrink: 0;
  }

  /* Trump selector cards wrap in landscape */
  .trump-selector-cards {
    flex-wrap: wrap;
    gap: 4px;
  }

  /* Partner display centered in landscape */
  .partner-display {
    align-self: center;
  }
}
/* ===== Short-height landscape tweak ===== */
@media (orientation: landscape) and (max-height: 450px) {
  .waiting-room-info {
    padding: 12px 16px;
  }
}
/* ===== Landscape: Game Table Overrides ===== */
@media (orientation: landscape) {

  /* --- Grid: give side columns more room --- */
  .felt-grid {
    grid-template-columns: 1fr 2.5fr 1fr;
  }

  /* --- Partner (top center): horizontal layout, spread across the wide center --- */
  .partner-display {
    flex-direction: row;
    justify-content: center;
    align-items: center;
    gap: 12px;
    padding: 4px 8px;
    width: 100%;
  }

  .partner-display .player-info {
    min-width: 60px;
    padding: 4px 8px;
    flex-direction: row;
  }

  .partner-display .player-name {
    font-size: 10px;
  }

  .partner-display .opponent-hands {
    margin-top: 0;
    margin-left: 6px;
  }

  /* --- Side opponents: column layout, centered, use full cell height --- */
  .opponent-display.left-opponent,
  .opponent-display.right-opponent {
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 6px;
    overflow: visible;
    padding: 4px;
    height: 100%;
  }

  .opponent-display .player-info {
    min-width: 56px;
    padding: 4px 6px;
  }

  .opponent-display .player-name {
    font-size: 10px;
    max-width: 8ch;
  }

  .opponent-display .avatar {
    width: 28px;
    height: 28px;
  }

  .opponent-display .team-label {
    font-size: 8px;
    padding: 2px 6px;
  }

  /* Opponent hands sit below player info, row of cards */
  .opponent-display .opponent-hands {
    margin-top: 4px;
    justify-content: center;
  }

  /* Card-backs: slightly larger than before to fill space */
  .card-back {
    width: calc(var(--card-width) * 0.45);
    height: calc(var(--card-height) * 0.45);
  }

  /* --- User hand: spread cards with breathing room --- */
  .hand-cards .card {
    margin: 0 2px; /* tiny positive gap, no overlap needed */
  }

  .user-hand {
    align-items: flex-end;
    padding: 0 12px 8px;
  }

  /* --- Trick area: use the extra vertical room --- */
  .trick-area {
    min-height: 120px;
  }

  .trick-area::before {
    width: min(70%, 180px);
  }
}
*, ::before, ::after {
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x:  ;
  --tw-pan-y:  ;
  --tw-pinch-zoom:  ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position:  ;
  --tw-gradient-via-position:  ;
  --tw-gradient-to-position:  ;
  --tw-ordinal:  ;
  --tw-slashed-zero:  ;
  --tw-numeric-figure:  ;
  --tw-numeric-spacing:  ;
  --tw-numeric-fraction:  ;
  --tw-ring-inset:  ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgb(59 130 246 / 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur:  ;
  --tw-brightness:  ;
  --tw-contrast:  ;
  --tw-grayscale:  ;
  --tw-hue-rotate:  ;
  --tw-invert:  ;
  --tw-saturate:  ;
  --tw-sepia:  ;
  --tw-drop-shadow:  ;
  --tw-backdrop-blur:  ;
  --tw-backdrop-brightness:  ;
  --tw-backdrop-contrast:  ;
  --tw-backdrop-grayscale:  ;
  --tw-backdrop-hue-rotate:  ;
  --tw-backdrop-invert:  ;
  --tw-backdrop-opacity:  ;
  --tw-backdrop-saturate:  ;
  --tw-backdrop-sepia:  ;
  --tw-contain-size:  ;
  --tw-contain-layout:  ;
  --tw-contain-paint:  ;
  --tw-contain-style:  ;
}
::backdrop {
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x:  ;
  --tw-pan-y:  ;
  --tw-pinch-zoom:  ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position:  ;
  --tw-gradient-via-position:  ;
  --tw-gradient-to-position:  ;
  --tw-ordinal:  ;
  --tw-slashed-zero:  ;
  --tw-numeric-figure:  ;
  --tw-numeric-spacing:  ;
  --tw-numeric-fraction:  ;
  --tw-ring-inset:  ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgb(59 130 246 / 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur:  ;
  --tw-brightness:  ;
  --tw-contrast:  ;
  --tw-grayscale:  ;
  --tw-hue-rotate:  ;
  --tw-invert:  ;
  --tw-saturate:  ;
  --tw-sepia:  ;
  --tw-drop-shadow:  ;
  --tw-backdrop-blur:  ;
  --tw-backdrop-brightness:  ;
  --tw-backdrop-contrast:  ;
  --tw-backdrop-grayscale:  ;
  --tw-backdrop-hue-rotate:  ;
  --tw-backdrop-invert:  ;
  --tw-backdrop-opacity:  ;
  --tw-backdrop-saturate:  ;
  --tw-backdrop-sepia:  ;
  --tw-contain-size:  ;
  --tw-contain-layout:  ;
  --tw-contain-paint:  ;
  --tw-contain-style:  ;
}
/* ! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com */
/*
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
*/
*,
::before,
::after {
  box-sizing: border-box; /* 1 */
  border-width: 0; /* 2 */
  border-style: solid; /* 2 */
  border-color: #e5e7eb; /* 2 */
}
::before,
::after {
  --tw-content: '';
}
/*
1. Use a consistent sensible line-height in all browsers.
2. Prevent adjustments of font size after orientation changes in iOS.
3. Use a more readable tab size.
4. Use the user's configured `sans` font-family by default.
5. Use the user's configured `sans` font-feature-settings by default.
6. Use the user's configured `sans` font-variation-settings by default.
7. Disable tap highlights on iOS
*/
html,
:host {
  line-height: 1.5; /* 1 */
  -webkit-text-size-adjust: 100%; /* 2 */
  -moz-tab-size: 4; /* 3 */
  -o-tab-size: 4;
     tab-size: 4; /* 3 */
  font-family: system-ui, -apple-system, sans-serif; /* 4 */
  font-feature-settings: normal; /* 5 */
  font-variation-settings: normal; /* 6 */
  -webkit-tap-highlight-color: transparent; /* 7 */
}
/*
1. Remove the margin in all browsers.
2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
*/
body {
  margin: 0; /* 1 */
  line-height: inherit; /* 2 */
}
/*
1. Add the correct height in Firefox.
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
3. Ensure horizontal rules are visible by default.
*/
hr {
  height: 0; /* 1 */
  color: inherit; /* 2 */
  border-top-width: 1px; /* 3 */
}
/*
Add the correct text decoration in Chrome, Edge, and Safari.
*/
abbr:where([title]) {
  -webkit-text-decoration: underline dotted;
          text-decoration: underline dotted;
}
/*
Remove the default font size and weight for headings.
*/
h1,
h2,
h3,
h4,
h5,
h6 {
  font-size: inherit;
  font-weight: inherit;
}
/*
Reset links to optimize for opt-in styling instead of opt-out.
*/
a {
  color: inherit;
  text-decoration: inherit;
}
/*
Add the correct font weight in Edge and Safari.
*/
b,
strong {
  font-weight: bolder;
}
/*
1. Use the user's configured `mono` font-family by default.
2. Use the user's configured `mono` font-feature-settings by default.
3. Use the user's configured `mono` font-variation-settings by default.
4. Correct the odd `em` font sizing in all browsers.
*/
code,
kbd,
samp,
pre {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; /* 1 */
  font-feature-settings: normal; /* 2 */
  font-variation-settings: normal; /* 3 */
  font-size: 1em; /* 4 */
}
/*
Add the correct font size in all browsers.
*/
small {
  font-size: 80%;
}
/*
Prevent `sub` and `sup` elements from affecting the line height in all browsers.
*/
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}
sub {
  bottom: -0.25em;
}
sup {
  top: -0.5em;
}
/*
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
3. Remove gaps between table borders by default.
*/
table {
  text-indent: 0; /* 1 */
  border-color: inherit; /* 2 */
  border-collapse: collapse; /* 3 */
}
/*
1. Change the font styles in all browsers.
2. Remove the margin in Firefox and Safari.
3. Remove default padding in all browsers.
*/
button,
input,
optgroup,
select,
textarea {
  font-family: inherit; /* 1 */
  font-feature-settings: inherit; /* 1 */
  font-variation-settings: inherit; /* 1 */
  font-size: 100%; /* 1 */
  font-weight: inherit; /* 1 */
  line-height: inherit; /* 1 */
  letter-spacing: inherit; /* 1 */
  color: inherit; /* 1 */
  margin: 0; /* 2 */
  padding: 0; /* 3 */
}
/*
Remove the inheritance of text transform in Edge and Firefox.
*/
button,
select {
  text-transform: none;
}
/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Remove default button styles.
*/
button,
input:where([type='button']),
input:where([type='reset']),
input:where([type='submit']) {
  -webkit-appearance: button; /* 1 */
  background-color: transparent; /* 2 */
  background-image: none; /* 2 */
}
/*
Use the modern Firefox focus style for all focusable elements.
*/
:-moz-focusring {
  outline: auto;
}
/*
Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
*/
:-moz-ui-invalid {
  box-shadow: none;
}
/*
Add the correct vertical alignment in Chrome and Firefox.
*/
progress {
  vertical-align: baseline;
}
/*
Correct the cursor style of increment and decrement buttons in Safari.
*/
::-webkit-inner-spin-button,
::-webkit-outer-spin-button {
  height: auto;
}
/*
1. Correct the odd appearance in Chrome and Safari.
2. Correct the outline style in Safari.
*/
[type='search'] {
  -webkit-appearance: textfield; /* 1 */
  outline-offset: -2px; /* 2 */
}
/*
Remove the inner padding in Chrome and Safari on macOS.
*/
::-webkit-search-decoration {
  -webkit-appearance: none;
}
/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Change font properties to `inherit` in Safari.
*/
::-webkit-file-upload-button {
  -webkit-appearance: button; /* 1 */
  font: inherit; /* 2 */
}
/*
Add the correct display in Chrome and Safari.
*/
summary {
  display: list-item;
}
/*
Removes the default spacing and border for appropriate elements.
*/
blockquote,
dl,
dd,
h1,
h2,
h3,
h4,
h5,
h6,
hr,
figure,
p,
pre {
  margin: 0;
}
fieldset {
  margin: 0;
  padding: 0;
}
legend {
  padding: 0;
}
ol,
ul,
menu {
  list-style: none;
  margin: 0;
  padding: 0;
}
/*
Reset default styling for dialogs.
*/
dialog {
  padding: 0;
}
/*
Prevent resizing textareas horizontally by default.
*/
textarea {
  resize: vertical;
}
/*
1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
2. Set the default placeholder color to the user's configured gray 400 color.
*/
input::-moz-placeholder, textarea::-moz-placeholder {
  opacity: 1; /* 1 */
  color: #9ca3af; /* 2 */
}
input::placeholder,
textarea::placeholder {
  opacity: 1; /* 1 */
  color: #9ca3af; /* 2 */
}
/*
Set the default cursor for buttons.
*/
button,
[role="button"] {
  cursor: pointer;
}
/*
Make sure disabled buttons don't get the pointer cursor.
*/
:disabled {
  cursor: default;
}
/*
1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
   This can trigger a poorly considered lint error in some tools but is included by design.
*/
img,
svg,
video,
canvas,
audio,
iframe,
embed,
object {
  display: block; /* 1 */
  vertical-align: middle; /* 2 */
}
/*
Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
*/
img,
video {
  max-width: 100%;
  height: auto;
}
/* Make elements with the HTML hidden attribute stay hidden by default */
[hidden]:where(:not([hidden="until-found"])) {
  display: none;
}
:root,
[data-theme] {
  background-color: var(--fallback-b1,oklch(var(--b1)/1));
  color: var(--fallback-bc,oklch(var(--bc)/1));
}
@supports not (color: oklch(0% 0 0)) {
  :root {
    color-scheme: light;
    --fallback-p: #491eff;
    --fallback-pc: #d4dbff;
    --fallback-s: #ff41c7;
    --fallback-sc: #fff9fc;
    --fallback-a: #00cfbd;
    --fallback-ac: #00100d;
    --fallback-n: #2b3440;
    --fallback-nc: #d7dde4;
    --fallback-b1: #ffffff;
    --fallback-b2: #e5e6e6;
    --fallback-b3: #e5e6e6;
    --fallback-bc: #1f2937;
    --fallback-in: #00b3f0;
    --fallback-inc: #000000;
    --fallback-su: #00ca92;
    --fallback-suc: #000000;
    --fallback-wa: #ffc22d;
    --fallback-wac: #000000;
    --fallback-er: #ff6f70;
    --fallback-erc: #000000;
  }
  @media (prefers-color-scheme: dark) {
    :root {
      color-scheme: dark;
      --fallback-p: #7582ff;
      --fallback-pc: #050617;
      --fallback-s: #ff71cf;
      --fallback-sc: #190211;
      --fallback-a: #00c7b5;
      --fallback-ac: #000e0c;
      --fallback-n: #2a323c;
      --fallback-nc: #a6adbb;
      --fallback-b1: #1d232a;
      --fallback-b2: #191e24;
      --fallback-b3: #15191e;
      --fallback-bc: #a6adbb;
      --fallback-in: #00b3f0;
      --fallback-inc: #000000;
      --fallback-su: #00ca92;
      --fallback-suc: #000000;
      --fallback-wa: #ffc22d;
      --fallback-wac: #000000;
      --fallback-er: #ff6f70;
      --fallback-erc: #000000;
    }
  }
}
html {
  -webkit-tap-highlight-color: transparent;
}
* {
  scrollbar-color: color-mix(in oklch, currentColor 35%, transparent) transparent;
}
*:hover {
  scrollbar-color: color-mix(in oklch, currentColor 60%, transparent) transparent;
}
:root {
  --p: 35.7757% 0.070726 152.748959;
  --b2: 33.2714% 0.065775 152.748959;
  --b3: 30.7671% 0.060824 152.748959;
  --bc: 87.1551% 0.014145 152.748959;
  --pc: 87.1551% 0.014145 152.748959;
  --sc: 89.5216% 0.017844 154.180872;
  --ac: 15.3306% 0.027735 91.059354;
  --nc: 84.5688% 0.007686 282.932396;
  --inc: 12.4617% 0.037603 259.814527;
  --suc: 14.4549% 0.038401 149.57933;
  --wac: 15.3718% 0.032932 70.08039;
  --erc: 12.7367% 0.04157 25.331328;
  --rounded-box: 1rem;
  --rounded-btn: 0.5rem;
  --rounded-badge: 1.9rem;
  --animation-btn: 0.25s;
  --animation-input: .2s;
  --btn-focus-scale: 0.95;
  --border-btn: 1px;
  --tab-border: 1px;
  --tab-radius: 0.5rem;
  --s: 47.6079% 0.089221 154.180872;
  --a: 76.6528% 0.138677 91.059354;
  --n: 22.8438% 0.038429 282.932396;
  --b1: 35.7757% 0.070726 152.748959;
  --in: 62.3083% 0.188015 259.814527;
  --su: 72.2746% 0.192007 149.57933;
  --wa: 76.859% 0.164659 70.08039;
  --er: 63.6834% 0.207849 25.331328;
}
.\!container {
  width: 100% !important;
}
.container {
  width: 100%;
}
@media (min-width: 640px) {
  .\!container {
    max-width: 640px !important;
  }
  .container {
    max-width: 640px;
  }
}
@media (min-width: 768px) {
  .\!container {
    max-width: 768px !important;
  }
  .container {
    max-width: 768px;
  }
}
@media (min-width: 1024px) {
  .\!container {
    max-width: 1024px !important;
  }
  .container {
    max-width: 1024px;
  }
}
@media (min-width: 1280px) {
  .\!container {
    max-width: 1280px !important;
  }
  .container {
    max-width: 1280px;
  }
}
@media (min-width: 1536px) {
  .\!container {
    max-width: 1536px !important;
  }
  .container {
    max-width: 1536px;
  }
}
.avatar.placeholder > div {
  display: flex;
  align-items: center;
  justify-content: center;
}
@media (hover:hover) {
  .label a:hover {
    --tw-text-opacity: 1;
    color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));
  }
  .menu li > *:not(ul, .menu-title, details, .btn):active,
.menu li > *:not(ul, .menu-title, details, .btn).active,
.menu li > details > summary:active {
    --tw-bg-opacity: 1;
    background-color: var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));
    --tw-text-opacity: 1;
    color: var(--fallback-nc,oklch(var(--nc)/var(--tw-text-opacity)));
  }
  .table tr.hover:hover,
  .table tr.hover:nth-child(even):hover {
    --tw-bg-opacity: 1;
    background-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)));
  }
}
.btn {
  display: inline-flex;
  height: 3rem;
  min-height: 3rem;
  flex-shrink: 0;
  cursor: pointer;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  border-radius: var(--rounded-btn, 0.5rem);
  border-color: transparent;
  border-color: oklch(var(--btn-color, var(--b2)) / var(--tw-border-opacity));
  padding-left: 1rem;
  padding-right: 1rem;
  text-align: center;
  font-size: 0.875rem;
  line-height: 1em;
  gap: 0.5rem;
  font-weight: 600;
  text-decoration-line: none;
  transition-duration: 200ms;
  transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
  border-width: var(--border-btn, 1px);
  transition-property: color, background-color, border-color, opacity, box-shadow, transform;
  --tw-text-opacity: 1;
  color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));
  --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
  --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
  outline-color: var(--fallback-bc,oklch(var(--bc)/1));
  background-color: oklch(var(--btn-color, var(--b2)) / var(--tw-bg-opacity));
  --tw-bg-opacity: 1;
  --tw-border-opacity: 1;
}
.btn-disabled,
  .btn[disabled],
  .btn:disabled {
  pointer-events: none;
}
.btn-circle {
  height: 3rem;
  width: 3rem;
  border-radius: 9999px;
  padding: 0px;
}
:where(.btn:is(input[type="checkbox"])),
:where(.btn:is(input[type="radio"])) {
  width: auto;
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
}
.btn:is(input[type="checkbox"]):after,
.btn:is(input[type="radio"]):after {
  --tw-content: attr(aria-label);
  content: var(--tw-content);
}
.card {
  position: relative;
  display: flex;
  flex-direction: column;
  border-radius: var(--rounded-box, 1rem);
}
.card:focus {
  outline: 2px solid transparent;
  outline-offset: 2px;
}
.card figure {
  display: flex;
  align-items: center;
  justify-content: center;
}
.card.image-full {
  display: grid;
}
.card.image-full:before {
  position: relative;
  content: "";
  z-index: 10;
  border-radius: var(--rounded-box, 1rem);
  --tw-bg-opacity: 1;
  background-color: var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));
  opacity: 0.75;
}
.card.image-full:before,
    .card.image-full > * {
  grid-column-start: 1;
  grid-row-start: 1;
}
.card.image-full > figure img {
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
}
.card.image-full > .card-body {
  position: relative;
  z-index: 20;
  --tw-text-opacity: 1;
  color: var(--fallback-nc,oklch(var(--nc)/var(--tw-text-opacity)));
}
:root .countdown {
  line-height: 1em;
}
.countdown {
  display: inline-flex;
}
.countdown > * {
  height: 1em;
  display: inline-block;
  overflow-y: hidden;
}
.countdown > *:before {
  position: relative;
  content: "00\A 01\A 02\A 03\A 04\A 05\A 06\A 07\A 08\A 09\A 10\A 11\A 12\A 13\A 14\A 15\A 16\A 17\A 18\A 19\A 20\A 21\A 22\A 23\A 24\A 25\A 26\A 27\A 28\A 29\A 30\A 31\A 32\A 33\A 34\A 35\A 36\A 37\A 38\A 39\A 40\A 41\A 42\A 43\A 44\A 45\A 46\A 47\A 48\A 49\A 50\A 51\A 52\A 53\A 54\A 55\A 56\A 57\A 58\A 59\A 60\A 61\A 62\A 63\A 64\A 65\A 66\A 67\A 68\A 69\A 70\A 71\A 72\A 73\A 74\A 75\A 76\A 77\A 78\A 79\A 80\A 81\A 82\A 83\A 84\A 85\A 86\A 87\A 88\A 89\A 90\A 91\A 92\A 93\A 94\A 95\A 96\A 97\A 98\A 99\A";
  white-space: pre;
  top: calc(var(--value) * -1em);
  text-align: center;
  transition: all 1s cubic-bezier(1, 0, 0, 1);
}
.dropdown {
  position: relative;
  display: inline-block;
}
.dropdown > *:not(summary):focus {
  outline: 2px solid transparent;
  outline-offset: 2px;
}
.dropdown .dropdown-content {
  position: absolute;
}
.dropdown:is(:not(details)) .dropdown-content {
  visibility: hidden;
  opacity: 0;
  transform-origin: top;
  --tw-scale-x: .95;
  --tw-scale-y: .95;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
  transition-duration: 200ms;
}
.dropdown.dropdown-open .dropdown-content,
.dropdown:not(.dropdown-hover):focus .dropdown-content,
.dropdown:focus-within .dropdown-content {
  visibility: visible;
  opacity: 1;
}
@media (hover: hover) {
  .dropdown.dropdown-hover:hover .dropdown-content {
    visibility: visible;
    opacity: 1;
  }
  .btm-nav > *.disabled:hover,
      .btm-nav > *[disabled]:hover {
    pointer-events: none;
    --tw-border-opacity: 0;
    background-color: var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));
    --tw-bg-opacity: 0.1;
    color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));
    --tw-text-opacity: 0.2;
  }
  .btn:hover {
    --tw-border-opacity: 1;
    border-color: var(--fallback-b3,oklch(var(--b3)/var(--tw-border-opacity)));
    --tw-bg-opacity: 1;
    background-color: var(--fallback-b3,oklch(var(--b3)/var(--tw-bg-opacity)));
  }
  @supports (color: color-mix(in oklab, black, black)) {
    .btn:hover {
      background-color: color-mix(
            in oklab,
            oklch(var(--btn-color, var(--b2)) / var(--tw-bg-opacity, 1)) 90%,
            black
          );
      border-color: color-mix(
            in oklab,
            oklch(var(--btn-color, var(--b2)) / var(--tw-border-opacity, 1)) 90%,
            black
          );
    }
  }
  @supports not (color: oklch(0% 0 0)) {
    .btn:hover {
      background-color: var(--btn-color, var(--fallback-b2));
      border-color: var(--btn-color, var(--fallback-b2));
    }
  }
  .btn.glass:hover {
    --glass-opacity: 25%;
    --glass-border-opacity: 15%;
  }
  .btn-ghost:hover {
    border-color: transparent;
  }
  @supports (color: oklch(0% 0 0)) {
    .btn-ghost:hover {
      background-color: var(--fallback-bc,oklch(var(--bc)/0.2));
    }
  }
  .btn-outline:hover {
    --tw-border-opacity: 1;
    border-color: var(--fallback-bc,oklch(var(--bc)/var(--tw-border-opacity)));
    --tw-bg-opacity: 1;
    background-color: var(--fallback-bc,oklch(var(--bc)/var(--tw-bg-opacity)));
    --tw-text-opacity: 1;
    color: var(--fallback-b1,oklch(var(--b1)/var(--tw-text-opacity)));
  }
  .btn-outline.btn-primary:hover {
    --tw-text-opacity: 1;
    color: var(--fallback-pc,oklch(var(--pc)/var(--tw-text-opacity)));
  }
  @supports (color: color-mix(in oklab, black, black)) {
    .btn-outline.btn-primary:hover {
      background-color: color-mix(in oklab, var(--fallback-p,oklch(var(--p)/1)) 90%, black);
      border-color: color-mix(in oklab, var(--fallback-p,oklch(var(--p)/1)) 90%, black);
    }
  }
  .btn-outline.btn-secondary:hover {
    --tw-text-opacity: 1;
    color: var(--fallback-sc,oklch(var(--sc)/var(--tw-text-opacity)));
  }
  @supports (color: color-mix(in oklab, black, black)) {
    .btn-outline.btn-secondary:hover {
      background-color: color-mix(in oklab, var(--fallback-s,oklch(var(--s)/1)) 90%, black);
      border-color: color-mix(in oklab, var(--fallback-s,oklch(var(--s)/1)) 90%, black);
    }
  }
  .btn-outline.btn-accent:hover {
    --tw-text-opacity: 1;
    color: var(--fallback-ac,oklch(var(--ac)/var(--tw-text-opacity)));
  }
  @supports (color: color-mix(in oklab, black, black)) {
    .btn-outline.btn-accent:hover {
      background-color: color-mix(in oklab, var(--fallback-a,oklch(var(--a)/1)) 90%, black);
      border-color: color-mix(in oklab, var(--fallback-a,oklch(var(--a)/1)) 90%, black);
    }
  }
  .btn-outline.btn-success:hover {
    --tw-text-opacity: 1;
    color: var(--fallback-suc,oklch(var(--suc)/var(--tw-text-opacity)));
  }
  @supports (color: color-mix(in oklab, black, black)) {
    .btn-outline.btn-success:hover {
      background-color: color-mix(in oklab, var(--fallback-su,oklch(var(--su)/1)) 90%, black);
      border-color: color-mix(in oklab, var(--fallback-su,oklch(var(--su)/1)) 90%, black);
    }
  }
  .btn-outline.btn-info:hover {
    --tw-text-opacity: 1;
    color: var(--fallback-inc,oklch(var(--inc)/var(--tw-text-opacity)));
  }
  @supports (color: color-mix(in oklab, black, black)) {
    .btn-outline.btn-info:hover {
      background-color: color-mix(in oklab, var(--fallback-in,oklch(var(--in)/1)) 90%, black);
      border-color: color-mix(in oklab, var(--fallback-in,oklch(var(--in)/1)) 90%, black);
    }
  }
  .btn-outline.btn-warning:hover {
    --tw-text-opacity: 1;
    color: var(--fallback-wac,oklch(var(--wac)/var(--tw-text-opacity)));
  }
  @supports (color: color-mix(in oklab, black, black)) {
    .btn-outline.btn-warning:hover {
      background-color: color-mix(in oklab, var(--fallback-wa,oklch(var(--wa)/1)) 90%, black);
      border-color: color-mix(in oklab, var(--fallback-wa,oklch(var(--wa)/1)) 90%, black);
    }
  }
  .btn-outline.btn-error:hover {
    --tw-text-opacity: 1;
    color: var(--fallback-erc,oklch(var(--erc)/var(--tw-text-opacity)));
  }
  @supports (color: color-mix(in oklab, black, black)) {
    .btn-outline.btn-error:hover {
      background-color: color-mix(in oklab, var(--fallback-er,oklch(var(--er)/1)) 90%, black);
      border-color: color-mix(in oklab, var(--fallback-er,oklch(var(--er)/1)) 90%, black);
    }
  }
  .btn-disabled:hover,
    .btn[disabled]:hover,
    .btn:disabled:hover {
    --tw-border-opacity: 0;
    background-color: var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));
    --tw-bg-opacity: 0.2;
    color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));
    --tw-text-opacity: 0.2;
  }
  @supports (color: color-mix(in oklab, black, black)) {
    .btn:is(input[type="checkbox"]:checked):hover, .btn:is(input[type="radio"]:checked):hover {
      background-color: color-mix(in oklab, var(--fallback-p,oklch(var(--p)/1)) 90%, black);
      border-color: color-mix(in oklab, var(--fallback-p,oklch(var(--p)/1)) 90%, black);
    }
  }
  .dropdown.dropdown-hover:hover .dropdown-content {
    --tw-scale-x: 1;
    --tw-scale-y: 1;
    transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
  }
  :where(.menu li:not(.menu-title, .disabled) > *:not(ul, details, .menu-title)):not(.active, .btn):hover, :where(.menu li:not(.menu-title, .disabled) > details > summary:not(.menu-title)):not(.active, .btn):hover {
    cursor: pointer;
    outline: 2px solid transparent;
    outline-offset: 2px;
  }
  @supports (color: oklch(0% 0 0)) {
    :where(.menu li:not(.menu-title, .disabled) > *:not(ul, details, .menu-title)):not(.active, .btn):hover, :where(.menu li:not(.menu-title, .disabled) > details > summary:not(.menu-title)):not(.active, .btn):hover {
      background-color: var(--fallback-bc,oklch(var(--bc)/0.1));
    }
  }
}
.dropdown:is(details) summary::-webkit-details-marker {
  display: none;
}
.label {
  display: flex;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
  align-items: center;
  justify-content: space-between;
  padding-left: 0.25rem;
  padding-right: 0.25rem;
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
}
.indicator {
  position: relative;
  display: inline-flex;
  width: -moz-max-content;
  width: max-content;
}
.indicator :where(.indicator-item) {
  z-index: 1;
  position: absolute;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
  white-space: nowrap;
}
.input {
  flex-shrink: 1;
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  height: 3rem;
  padding-left: 1rem;
  padding-right: 1rem;
  font-size: 1rem;
  line-height: 2;
  line-height: 1.5rem;
  border-radius: var(--rounded-btn, 0.5rem);
  border-width: 1px;
  border-color: transparent;
  --tw-bg-opacity: 1;
  background-color: var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));
}
.input[type="number"]::-webkit-inner-spin-button,
.input-md[type="number"]::-webkit-inner-spin-button {
  margin-top: -1rem;
  margin-bottom: -1rem;
  margin-inline-end: -1rem;
}
.join {
  display: inline-flex;
  align-items: stretch;
  border-radius: var(--rounded-btn, 0.5rem);
}
.join :where(.join-item) {
  border-start-end-radius: 0;
  border-end-end-radius: 0;
  border-end-start-radius: 0;
  border-start-start-radius: 0;
}
.join .join-item:not(:first-child):not(:last-child),
  .join *:not(:first-child):not(:last-child) .join-item {
  border-start-end-radius: 0;
  border-end-end-radius: 0;
  border-end-start-radius: 0;
  border-start-start-radius: 0;
}
.join .join-item:first-child:not(:last-child),
  .join *:first-child:not(:last-child) .join-item {
  border-start-end-radius: 0;
  border-end-end-radius: 0;
}
.join .dropdown .join-item:first-child:not(:last-child),
  .join *:first-child:not(:last-child) .dropdown .join-item {
  border-start-end-radius: inherit;
  border-end-end-radius: inherit;
}
.join :where(.join-item:first-child:not(:last-child)),
  .join :where(*:first-child:not(:last-child) .join-item) {
  border-end-start-radius: inherit;
  border-start-start-radius: inherit;
}
.join .join-item:last-child:not(:first-child),
  .join *:last-child:not(:first-child) .join-item {
  border-end-start-radius: 0;
  border-start-start-radius: 0;
}
.join :where(.join-item:last-child:not(:first-child)),
  .join :where(*:last-child:not(:first-child) .join-item) {
  border-start-end-radius: inherit;
  border-end-end-radius: inherit;
}
@supports not selector(:has(*)) {
  :where(.join *) {
    border-radius: inherit;
  }
}
@supports selector(:has(*)) {
  :where(.join *:has(.join-item)) {
    border-radius: inherit;
  }
}
.link {
  cursor: pointer;
  text-decoration-line: underline;
}
.menu {
  display: flex;
  flex-direction: column;
  flex-wrap: wrap;
  font-size: 0.875rem;
  line-height: 1.25rem;
  padding: 0.5rem;
}
.menu :where(li ul) {
  position: relative;
  white-space: nowrap;
  margin-inline-start: 1rem;
  padding-inline-start: 0.5rem;
}
.menu :where(li:not(.menu-title) > *:not(ul, details, .menu-title, .btn)), .menu :where(li:not(.menu-title) > details > summary:not(.menu-title)) {
  display: grid;
  grid-auto-flow: column;
  align-content: flex-start;
  align-items: center;
  gap: 0.5rem;
  grid-auto-columns: minmax(auto, max-content) auto max-content;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
}
.menu li.disabled {
  cursor: not-allowed;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
  color: var(--fallback-bc,oklch(var(--bc)/0.3));
}
.menu :where(li > .menu-dropdown:not(.menu-dropdown-show)) {
  display: none;
}
:where(.menu li) {
  position: relative;
  display: flex;
  flex-shrink: 0;
  flex-direction: column;
  flex-wrap: wrap;
  align-items: stretch;
}
:where(.menu li) .badge {
  justify-self: end;
}
.modal {
  pointer-events: none;
  position: fixed;
  inset: 0px;
  margin: 0px;
  display: grid;
  height: 100%;
  max-height: none;
  width: 100%;
  max-width: none;
  justify-items: center;
  padding: 0px;
  opacity: 0;
  overscroll-behavior: contain;
  z-index: 999;
  background-color: transparent;
  color: inherit;
  transition-duration: 200ms;
  transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
  transition-property: transform, opacity, visibility;
  overflow-y: hidden;
}
:where(.modal) {
  align-items: center;
}
.modal-open,
.modal:target,
.modal-toggle:checked + .modal,
.modal[open] {
  pointer-events: auto;
  visibility: visible;
  opacity: 1;
}
:root:has(:is(.modal-open, .modal:target, .modal-toggle:checked + .modal, .modal[open])) {
  overflow: hidden;
  scrollbar-gutter: stable;
}
.progress {
  position: relative;
  width: 100%;
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  overflow: hidden;
  height: 0.5rem;
  border-radius: var(--rounded-box, 1rem);
  background-color: var(--fallback-bc,oklch(var(--bc)/0.2));
}
.select {
  display: inline-flex;
  cursor: pointer;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  height: 3rem;
  min-height: 3rem;
  padding-inline-start: 1rem;
  padding-inline-end: 2.5rem;
  font-size: 0.875rem;
  line-height: 1.25rem;
  line-height: 2;
  border-radius: var(--rounded-btn, 0.5rem);
  border-width: 1px;
  border-color: transparent;
  --tw-bg-opacity: 1;
  background-color: var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));
  background-image: linear-gradient(45deg, transparent 50%, currentColor 50%),
    linear-gradient(135deg, currentColor 50%, transparent 50%);
  background-position: calc(100% - 20px) calc(1px + 50%),
    calc(100% - 16.1px) calc(1px + 50%);
  background-size: 4px 4px,
    4px 4px;
  background-repeat: no-repeat;
}
.select[multiple] {
  height: auto;
}
.stats {
  display: inline-grid;
  border-radius: var(--rounded-box, 1rem);
  --tw-bg-opacity: 1;
  background-color: var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));
  --tw-text-opacity: 1;
  color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));
}
:where(.stats) {
  grid-auto-flow: column;
  overflow-x: auto;
}
.stat-value {
  grid-column-start: 1;
  white-space: nowrap;
  font-size: 2.25rem;
  line-height: 2.5rem;
  font-weight: 800;
}
.swap {
  position: relative;
  display: inline-grid;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
  place-content: center;
  cursor: pointer;
}
.swap > * {
  grid-column-start: 1;
  grid-row-start: 1;
  transition-duration: 300ms;
  transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
  transition-property: transform, opacity;
}
.swap input {
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
}
.swap .swap-on,
.swap .swap-indeterminate,
.swap input:indeterminate ~ .swap-on {
  opacity: 0;
}
.swap input:checked ~ .swap-off,
.swap-active .swap-off,
.swap input:indeterminate ~ .swap-off {
  opacity: 0;
}
.swap input:checked ~ .swap-on,
.swap-active .swap-on,
.swap input:indeterminate ~ .swap-indeterminate {
  opacity: 1;
}
.table {
  position: relative;
  width: 100%;
  border-radius: var(--rounded-box, 1rem);
  text-align: left;
  font-size: 0.875rem;
  line-height: 1.25rem;
}
.table :where(.table-pin-rows thead tr) {
  position: sticky;
  top: 0px;
  z-index: 1;
  --tw-bg-opacity: 1;
  background-color: var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));
}
.table :where(.table-pin-rows tfoot tr) {
  position: sticky;
  bottom: 0px;
  z-index: 1;
  --tw-bg-opacity: 1;
  background-color: var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));
}
.table :where(.table-pin-cols tr th) {
  position: sticky;
  left: 0px;
  right: 0px;
  --tw-bg-opacity: 1;
  background-color: var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));
}
.textarea {
  min-height: 3rem;
  flex-shrink: 1;
  padding-left: 1rem;
  padding-right: 1rem;
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
  font-size: 0.875rem;
  line-height: 1.25rem;
  line-height: 2;
  border-radius: var(--rounded-btn, 0.5rem);
  border-width: 1px;
  border-color: transparent;
  --tw-bg-opacity: 1;
  background-color: var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));
}
.btm-nav > *:where(.active) {
  border-top-width: 2px;
  --tw-bg-opacity: 1;
  background-color: var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));
}
.btm-nav > *.disabled,
    .btm-nav > *[disabled] {
  pointer-events: none;
  --tw-border-opacity: 0;
  background-color: var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));
  --tw-bg-opacity: 0.1;
  color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));
  --tw-text-opacity: 0.2;
}
.btm-nav > * .label {
  font-size: 1rem;
  line-height: 1.5rem;
}
@media (prefers-reduced-motion: no-preference) {
  .btn {
    animation: button-pop var(--animation-btn, 0.25s) ease-out;
  }
}
.btn:active:hover,
  .btn:active:focus {
  animation: button-pop 0s ease-out;
  transform: scale(var(--btn-focus-scale, 0.97));
}
@supports not (color: oklch(0% 0 0)) {
  .btn {
    background-color: var(--btn-color, var(--fallback-b2));
    border-color: var(--btn-color, var(--fallback-b2));
  }
  .btn-primary {
    --btn-color: var(--fallback-p);
  }
  .btn-secondary {
    --btn-color: var(--fallback-s);
  }
  .btn-success {
    --btn-color: var(--fallback-su);
  }
}
@supports (color: color-mix(in oklab, black, black)) {
  .btn-outline.btn-primary.btn-active {
    background-color: color-mix(in oklab, var(--fallback-p,oklch(var(--p)/1)) 90%, black);
    border-color: color-mix(in oklab, var(--fallback-p,oklch(var(--p)/1)) 90%, black);
  }
  .btn-outline.btn-secondary.btn-active {
    background-color: color-mix(in oklab, var(--fallback-s,oklch(var(--s)/1)) 90%, black);
    border-color: color-mix(in oklab, var(--fallback-s,oklch(var(--s)/1)) 90%, black);
  }
  .btn-outline.btn-accent.btn-active {
    background-color: color-mix(in oklab, var(--fallback-a,oklch(var(--a)/1)) 90%, black);
    border-color: color-mix(in oklab, var(--fallback-a,oklch(var(--a)/1)) 90%, black);
  }
  .btn-outline.btn-success.btn-active {
    background-color: color-mix(in oklab, var(--fallback-su,oklch(var(--su)/1)) 90%, black);
    border-color: color-mix(in oklab, var(--fallback-su,oklch(var(--su)/1)) 90%, black);
  }
  .btn-outline.btn-info.btn-active {
    background-color: color-mix(in oklab, var(--fallback-in,oklch(var(--in)/1)) 90%, black);
    border-color: color-mix(in oklab, var(--fallback-in,oklch(var(--in)/1)) 90%, black);
  }
  .btn-outline.btn-warning.btn-active {
    background-color: color-mix(in oklab, var(--fallback-wa,oklch(var(--wa)/1)) 90%, black);
    border-color: color-mix(in oklab, var(--fallback-wa,oklch(var(--wa)/1)) 90%, black);
  }
  .btn-outline.btn-error.btn-active {
    background-color: color-mix(in oklab, var(--fallback-er,oklch(var(--er)/1)) 90%, black);
    border-color: color-mix(in oklab, var(--fallback-er,oklch(var(--er)/1)) 90%, black);
  }
}
.btn:focus-visible {
  outline-style: solid;
  outline-width: 2px;
  outline-offset: 2px;
}
.btn-primary {
  --tw-text-opacity: 1;
  color: var(--fallback-pc,oklch(var(--pc)/var(--tw-text-opacity)));
  outline-color: var(--fallback-p,oklch(var(--p)/1));
}
@supports (color: oklch(0% 0 0)) {
  .btn-primary {
    --btn-color: var(--p);
  }
  .btn-secondary {
    --btn-color: var(--s);
  }
  .btn-success {
    --btn-color: var(--su);
  }
}
.btn-secondary {
  --tw-text-opacity: 1;
  color: var(--fallback-sc,oklch(var(--sc)/var(--tw-text-opacity)));
  outline-color: var(--fallback-s,oklch(var(--s)/1));
}
.btn-success {
  --tw-text-opacity: 1;
  color: var(--fallback-suc,oklch(var(--suc)/var(--tw-text-opacity)));
  outline-color: var(--fallback-su,oklch(var(--su)/1));
}
.btn.glass {
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
  outline-color: currentColor;
}
.btn.glass.btn-active {
  --glass-opacity: 25%;
  --glass-border-opacity: 15%;
}
.btn-ghost {
  border-width: 1px;
  border-color: transparent;
  background-color: transparent;
  color: currentColor;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
  outline-color: currentColor;
}
.btn-ghost.btn-active {
  border-color: transparent;
  background-color: var(--fallback-bc,oklch(var(--bc)/0.2));
}
.btn-outline {
  border-color: currentColor;
  background-color: transparent;
  --tw-text-opacity: 1;
  color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.btn-outline.btn-active {
  --tw-border-opacity: 1;
  border-color: var(--fallback-bc,oklch(var(--bc)/var(--tw-border-opacity)));
  --tw-bg-opacity: 1;
  background-color: var(--fallback-bc,oklch(var(--bc)/var(--tw-bg-opacity)));
  --tw-text-opacity: 1;
  color: var(--fallback-b1,oklch(var(--b1)/var(--tw-text-opacity)));
}
.btn-outline.btn-primary {
  --tw-text-opacity: 1;
  color: var(--fallback-p,oklch(var(--p)/var(--tw-text-opacity)));
}
.btn-outline.btn-primary.btn-active {
  --tw-text-opacity: 1;
  color: var(--fallback-pc,oklch(var(--pc)/var(--tw-text-opacity)));
}
.btn-outline.btn-secondary {
  --tw-text-opacity: 1;
  color: var(--fallback-s,oklch(var(--s)/var(--tw-text-opacity)));
}
.btn-outline.btn-secondary.btn-active {
  --tw-text-opacity: 1;
  color: var(--fallback-sc,oklch(var(--sc)/var(--tw-text-opacity)));
}
.btn-outline.btn-accent {
  --tw-text-opacity: 1;
  color: var(--fallback-a,oklch(var(--a)/var(--tw-text-opacity)));
}
.btn-outline.btn-accent.btn-active {
  --tw-text-opacity: 1;
  color: var(--fallback-ac,oklch(var(--ac)/var(--tw-text-opacity)));
}
.btn-outline.btn-success {
  --tw-text-opacity: 1;
  color: var(--fallback-su,oklch(var(--su)/var(--tw-text-opacity)));
}
.btn-outline.btn-success.btn-active {
  --tw-text-opacity: 1;
  color: var(--fallback-suc,oklch(var(--suc)/var(--tw-text-opacity)));
}
.btn-outline.btn-info {
  --tw-text-opacity: 1;
  color: var(--fallback-in,oklch(var(--in)/var(--tw-text-opacity)));
}
.btn-outline.btn-info.btn-active {
  --tw-text-opacity: 1;
  color: var(--fallback-inc,oklch(var(--inc)/var(--tw-text-opacity)));
}
.btn-outline.btn-warning {
  --tw-text-opacity: 1;
  color: var(--fallback-wa,oklch(var(--wa)/var(--tw-text-opacity)));
}
.btn-outline.btn-warning.btn-active {
  --tw-text-opacity: 1;
  color: var(--fallback-wac,oklch(var(--wac)/var(--tw-text-opacity)));
}
.btn-outline.btn-error {
  --tw-text-opacity: 1;
  color: var(--fallback-er,oklch(var(--er)/var(--tw-text-opacity)));
}
.btn-outline.btn-error.btn-active {
  --tw-text-opacity: 1;
  color: var(--fallback-erc,oklch(var(--erc)/var(--tw-text-opacity)));
}
.btn.btn-disabled,
  .btn[disabled],
  .btn:disabled {
  --tw-border-opacity: 0;
  background-color: var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));
  --tw-bg-opacity: 0.2;
  color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));
  --tw-text-opacity: 0.2;
}
.btn:is(input[type="checkbox"]:checked),
.btn:is(input[type="radio"]:checked) {
  --tw-border-opacity: 1;
  border-color: var(--fallback-p,oklch(var(--p)/var(--tw-border-opacity)));
  --tw-bg-opacity: 1;
  background-color: var(--fallback-p,oklch(var(--p)/var(--tw-bg-opacity)));
  --tw-text-opacity: 1;
  color: var(--fallback-pc,oklch(var(--pc)/var(--tw-text-opacity)));
}
.btn:is(input[type="checkbox"]:checked):focus-visible, .btn:is(input[type="radio"]:checked):focus-visible {
  outline-color: var(--fallback-p,oklch(var(--p)/1));
}
@keyframes button-pop {
  0% {
    transform: scale(var(--btn-focus-scale, 0.98));
  }
  40% {
    transform: scale(1.02);
  }
  100% {
    transform: scale(1);
  }
}
.card :where(figure:first-child) {
  overflow: hidden;
  border-start-start-radius: inherit;
  border-start-end-radius: inherit;
  border-end-start-radius: unset;
  border-end-end-radius: unset;
}
.card :where(figure:last-child) {
  overflow: hidden;
  border-start-start-radius: unset;
  border-start-end-radius: unset;
  border-end-start-radius: inherit;
  border-end-end-radius: inherit;
}
.card:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 2px;
}
.card.bordered {
  border-width: 1px;
  --tw-border-opacity: 1;
  border-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity)));
}
.card.compact .card-body {
  padding: 1rem;
  font-size: 0.875rem;
  line-height: 1.25rem;
}
.card.image-full :where(figure) {
  overflow: hidden;
  border-radius: inherit;
}
@keyframes checkmark {
  0% {
    background-position-y: 5px;
  }
  50% {
    background-position-y: -2px;
  }
  100% {
    background-position-y: 0;
  }
}
.dropdown.dropdown-open .dropdown-content,
.dropdown:focus .dropdown-content,
.dropdown:focus-within .dropdown-content {
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.input input {
  --tw-bg-opacity: 1;
  background-color: var(--fallback-p,oklch(var(--p)/var(--tw-bg-opacity)));
  background-color: transparent;
}
.input input:focus {
  outline: 2px solid transparent;
  outline-offset: 2px;
}
.input[list]::-webkit-calendar-picker-indicator {
  line-height: 1em;
}
.input-bordered {
  border-color: var(--fallback-bc,oklch(var(--bc)/0.2));
}
.input:focus,
  .input:focus-within {
  box-shadow: none;
  border-color: var(--fallback-bc,oklch(var(--bc)/0.2));
  outline-style: solid;
  outline-width: 2px;
  outline-offset: 2px;
  outline-color: var(--fallback-bc,oklch(var(--bc)/0.2));
}
.input:has(> input[disabled]),
  .input-disabled,
  .input:disabled,
  .input[disabled] {
  cursor: not-allowed;
  --tw-border-opacity: 1;
  border-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity)));
  --tw-bg-opacity: 1;
  background-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)));
  color: var(--fallback-bc,oklch(var(--bc)/0.4));
}
.input:has(> input[disabled])::-moz-placeholder, .input-disabled::-moz-placeholder, .input:disabled::-moz-placeholder, .input[disabled]::-moz-placeholder {
  color: var(--fallback-bc,oklch(var(--bc)/var(--tw-placeholder-opacity)));
  --tw-placeholder-opacity: 0.2;
}
.input:has(> input[disabled])::placeholder,
  .input-disabled::placeholder,
  .input:disabled::placeholder,
  .input[disabled]::placeholder {
  color: var(--fallback-bc,oklch(var(--bc)/var(--tw-placeholder-opacity)));
  --tw-placeholder-opacity: 0.2;
}
.input:has(> input[disabled]) > input[disabled] {
  cursor: not-allowed;
}
.input::-webkit-date-and-time-value {
  text-align: inherit;
}
.join > :where(*:not(:first-child)) {
  margin-top: 0px;
  margin-bottom: 0px;
  margin-inline-start: -1px;
}
.join > :where(*:not(:first-child)):is(.btn) {
  margin-inline-start: calc(var(--border-btn) * -1);
}
.link:focus {
  outline: 2px solid transparent;
  outline-offset: 2px;
}
.link:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 2px;
}
.loading {
  pointer-events: none;
  display: inline-block;
  aspect-ratio: 1 / 1;
  width: 1.5rem;
  background-color: currentColor;
  -webkit-mask-size: 100%;
          mask-size: 100%;
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-position: center;
          mask-position: center;
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");
          mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");
}
:where(.menu li:empty) {
  --tw-bg-opacity: 1;
  background-color: var(--fallback-bc,oklch(var(--bc)/var(--tw-bg-opacity)));
  opacity: 0.1;
  margin: 0.5rem 1rem;
  height: 1px;
}
.menu :where(li ul):before {
  position: absolute;
  bottom: 0.75rem;
  inset-inline-start: 0px;
  top: 0.75rem;
  width: 1px;
  --tw-bg-opacity: 1;
  background-color: var(--fallback-bc,oklch(var(--bc)/var(--tw-bg-opacity)));
  opacity: 0.1;
  content: "";
}
.menu :where(li:not(.menu-title) > *:not(ul, details, .menu-title, .btn)),
.menu :where(li:not(.menu-title) > details > summary:not(.menu-title)) {
  border-radius: var(--rounded-btn, 0.5rem);
  padding-left: 1rem;
  padding-right: 1rem;
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
  text-align: start;
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
  transition-duration: 200ms;
  text-wrap: balance;
}
:where(.menu li:not(.menu-title, .disabled) > *:not(ul, details, .menu-title)):not(summary, .active, .btn).focus, :where(.menu li:not(.menu-title, .disabled) > *:not(ul, details, .menu-title)):not(summary, .active, .btn):focus, :where(.menu li:not(.menu-title, .disabled) > *:not(ul, details, .menu-title)):is(summary):not(.active, .btn):focus-visible, :where(.menu li:not(.menu-title, .disabled) > details > summary:not(.menu-title)):not(summary, .active, .btn).focus, :where(.menu li:not(.menu-title, .disabled) > details > summary:not(.menu-title)):not(summary, .active, .btn):focus, :where(.menu li:not(.menu-title, .disabled) > details > summary:not(.menu-title)):is(summary):not(.active, .btn):focus-visible {
  cursor: pointer;
  background-color: var(--fallback-bc,oklch(var(--bc)/0.1));
  --tw-text-opacity: 1;
  color: var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));
  outline: 2px solid transparent;
  outline-offset: 2px;
}
.menu li > *:not(ul, .menu-title, details, .btn):active,
.menu li > *:not(ul, .menu-title, details, .btn).active,
.menu li > details > summary:active {
  --tw-bg-opacity: 1;
  background-color: var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));
  --tw-text-opacity: 1;
  color: var(--fallback-nc,oklch(var(--nc)/var(--tw-text-opacity)));
}
.menu :where(li > details > summary)::-webkit-details-marker {
  display: none;
}
.menu :where(li > details > summary):after,
.menu :where(li > .menu-dropdown-toggle):after {
  justify-self: end;
  display: block;
  margin-top: -0.5rem;
  height: 0.5rem;
  width: 0.5rem;
  transform: rotate(45deg);
  transition-property: transform, margin-top;
  transition-duration: 0.3s;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  content: "";
  transform-origin: 75% 75%;
  box-shadow: 2px 2px;
  pointer-events: none;
}
.menu :where(li > details[open] > summary):after,
.menu :where(li > .menu-dropdown-toggle.menu-dropdown-show):after {
  transform: rotate(225deg);
  margin-top: 0;
}
.mockup-phone .display {
  overflow: hidden;
  border-radius: 40px;
  margin-top: -25px;
}
.mockup-browser .mockup-browser-toolbar .input {
  position: relative;
  margin-left: auto;
  margin-right: auto;
  display: block;
  height: 1.75rem;
  width: 24rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  --tw-bg-opacity: 1;
  background-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)));
  padding-left: 2rem;
  direction: ltr;
}
.mockup-browser .mockup-browser-toolbar .input:before {
  content: "";
  position: absolute;
  left: 0.5rem;
  top: 50%;
  aspect-ratio: 1 / 1;
  height: 0.75rem;
  --tw-translate-y: -50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
  border-radius: 9999px;
  border-width: 2px;
  border-color: currentColor;
  opacity: 0.6;
}
.mockup-browser .mockup-browser-toolbar .input:after {
  content: "";
  position: absolute;
  left: 1.25rem;
  top: 50%;
  height: 0.5rem;
  --tw-translate-y: 25%;
  --tw-rotate: -45deg;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
  border-radius: 9999px;
  border-width: 1px;
  border-color: currentColor;
  opacity: 0.6;
}
.modal:not(dialog:not(.modal-open)),
  .modal::backdrop {
  background-color: #0006;
  animation: modal-pop 0.2s ease-out;
}
.modal-open .modal-box,
.modal-toggle:checked + .modal .modal-box,
.modal:target .modal-box,
.modal[open] .modal-box {
  --tw-translate-y: 0px;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
@keyframes modal-pop {
  0% {
    opacity: 0;
  }
}
.progress::-moz-progress-bar {
  border-radius: var(--rounded-box, 1rem);
  background-color: currentColor;
}
.progress:indeterminate {
  --progress-color: var(--fallback-bc,oklch(var(--bc)/1));
  background-image: repeating-linear-gradient(
    90deg,
    var(--progress-color) -1%,
    var(--progress-color) 10%,
    transparent 10%,
    transparent 90%
  );
  background-size: 200%;
  background-position-x: 15%;
  animation: progress-loading 5s ease-in-out infinite;
}
.progress::-webkit-progress-bar {
  border-radius: var(--rounded-box, 1rem);
  background-color: transparent;
}
.progress::-webkit-progress-value {
  border-radius: var(--rounded-box, 1rem);
  background-color: currentColor;
}
.progress:indeterminate::-moz-progress-bar {
  background-color: transparent;
  background-image: repeating-linear-gradient(
    90deg,
    var(--progress-color) -1%,
    var(--progress-color) 10%,
    transparent 10%,
    transparent 90%
  );
  background-size: 200%;
  background-position-x: 15%;
  animation: progress-loading 5s ease-in-out infinite;
}
@keyframes progress-loading {
  50% {
    background-position-x: -115%;
  }
}
@keyframes radiomark {
  0% {
    box-shadow: 0 0 0 12px var(--fallback-b1,oklch(var(--b1)/1)) inset,
      0 0 0 12px var(--fallback-b1,oklch(var(--b1)/1)) inset;
  }
  50% {
    box-shadow: 0 0 0 3px var(--fallback-b1,oklch(var(--b1)/1)) inset,
      0 0 0 3px var(--fallback-b1,oklch(var(--b1)/1)) inset;
  }
  100% {
    box-shadow: 0 0 0 4px var(--fallback-b1,oklch(var(--b1)/1)) inset,
      0 0 0 4px var(--fallback-b1,oklch(var(--b1)/1)) inset;
  }
}
@keyframes rating-pop {
  0% {
    transform: translateY(-0.125em);
  }
  40% {
    transform: translateY(-0.125em);
  }
  100% {
    transform: translateY(0);
  }
}
.select:focus {
  box-shadow: none;
  border-color: var(--fallback-bc,oklch(var(--bc)/0.2));
  outline-style: solid;
  outline-width: 2px;
  outline-offset: 2px;
  outline-color: var(--fallback-bc,oklch(var(--bc)/0.2));
}
.select-disabled,
  .select:disabled,
  .select[disabled] {
  cursor: not-allowed;
  --tw-border-opacity: 1;
  border-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity)));
  --tw-bg-opacity: 1;
  background-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)));
  color: var(--fallback-bc,oklch(var(--bc)/0.4));
}
.select-disabled::-moz-placeholder, .select:disabled::-moz-placeholder, .select[disabled]::-moz-placeholder {
  color: var(--fallback-bc,oklch(var(--bc)/var(--tw-placeholder-opacity)));
  --tw-placeholder-opacity: 0.2;
}
.select-disabled::placeholder,
  .select:disabled::placeholder,
  .select[disabled]::placeholder {
  color: var(--fallback-bc,oklch(var(--bc)/var(--tw-placeholder-opacity)));
  --tw-placeholder-opacity: 0.2;
}
.select-multiple,
  .select[multiple],
  .select[size].select:not([size="1"]) {
  background-image: none;
  padding-right: 1rem;
}
[dir="rtl"] .select {
  background-position: calc(0% + 12px) calc(1px + 50%),
    calc(0% + 16px) calc(1px + 50%);
}
@keyframes skeleton {
  from {
    background-position: 150%;
  }
  to {
    background-position: -50%;
  }
}
:where(.stats) > :not([hidden]) ~ :not([hidden]) {
  --tw-divide-x-reverse: 0;
  border-right-width: calc(1px * var(--tw-divide-x-reverse));
  border-left-width: calc(1px * calc(1 - var(--tw-divide-x-reverse)));
  --tw-divide-y-reverse: 0;
  border-top-width: calc(0px * calc(1 - var(--tw-divide-y-reverse)));
  border-bottom-width: calc(0px * var(--tw-divide-y-reverse));
}
[dir="rtl"] .stats > *:not([hidden]) ~ *:not([hidden]) {
  --tw-divide-x-reverse: 1;
}
.table:where([dir="rtl"], [dir="rtl"] *) {
  text-align: right;
}
.table :where(th, td) {
  padding-left: 1rem;
  padding-right: 1rem;
  padding-top: 0.75rem;
  padding-bottom: 0.75rem;
  vertical-align: middle;
}
.table tr.active,
  .table tr.active:nth-child(even),
  .table-zebra tbody tr:nth-child(even) {
  --tw-bg-opacity: 1;
  background-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)));
}
.table-zebra tr.active,
    .table-zebra tr.active:nth-child(even),
    .table-zebra-zebra tbody tr:nth-child(even) {
  --tw-bg-opacity: 1;
  background-color: var(--fallback-b3,oklch(var(--b3)/var(--tw-bg-opacity)));
}
.table :where(thead tr, tbody tr:not(:last-child), tbody tr:first-child:last-child) {
  border-bottom-width: 1px;
  --tw-border-opacity: 1;
  border-bottom-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity)));
}
.table :where(thead, tfoot) {
  white-space: nowrap;
  font-size: 0.75rem;
  line-height: 1rem;
  font-weight: 700;
  color: var(--fallback-bc,oklch(var(--bc)/0.6));
}
.table :where(tfoot) {
  border-top-width: 1px;
  --tw-border-opacity: 1;
  border-top-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity)));
}
.textarea:focus {
  box-shadow: none;
  border-color: var(--fallback-bc,oklch(var(--bc)/0.2));
  outline-style: solid;
  outline-width: 2px;
  outline-offset: 2px;
  outline-color: var(--fallback-bc,oklch(var(--bc)/0.2));
}
.textarea-disabled,
  .textarea:disabled,
  .textarea[disabled] {
  cursor: not-allowed;
  --tw-border-opacity: 1;
  border-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity)));
  --tw-bg-opacity: 1;
  background-color: var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)));
  color: var(--fallback-bc,oklch(var(--bc)/0.4));
}
.textarea-disabled::-moz-placeholder, .textarea:disabled::-moz-placeholder, .textarea[disabled]::-moz-placeholder {
  color: var(--fallback-bc,oklch(var(--bc)/var(--tw-placeholder-opacity)));
  --tw-placeholder-opacity: 0.2;
}
.textarea-disabled::placeholder,
  .textarea:disabled::placeholder,
  .textarea[disabled]::placeholder {
  color: var(--fallback-bc,oklch(var(--bc)/var(--tw-placeholder-opacity)));
  --tw-placeholder-opacity: 0.2;
}
@keyframes toast-pop {
  0% {
    transform: scale(0.9);
    opacity: 0;
  }
  100% {
    transform: scale(1);
    opacity: 1;
  }
}
.artboard.phone-1.horizontal,
      .artboard.phone-1.artboard-horizontal {
  width: 568px;
  height: 320px;
}
.artboard.phone-2.horizontal,
      .artboard.phone-2.artboard-horizontal {
  width: 667px;
  height: 375px;
}
.artboard.phone-3.horizontal,
      .artboard.phone-3.artboard-horizontal {
  width: 736px;
  height: 414px;
}
.artboard.phone-4.horizontal,
      .artboard.phone-4.artboard-horizontal {
  width: 812px;
  height: 375px;
}
.artboard.phone-5.horizontal,
      .artboard.phone-5.artboard-horizontal {
  width: 896px;
  height: 414px;
}
.artboard.phone-6.horizontal,
      .artboard.phone-6.artboard-horizontal {
  width: 1024px;
  height: 320px;
}
.btm-nav-xs > *:where(.active) {
  border-top-width: 1px;
}
.btm-nav-sm > *:where(.active) {
  border-top-width: 2px;
}
.btm-nav-md > *:where(.active) {
  border-top-width: 2px;
}
.btm-nav-lg > *:where(.active) {
  border-top-width: 4px;
}
.btn-xs {
  height: 1.5rem;
  min-height: 1.5rem;
  padding-left: 0.5rem;
  padding-right: 0.5rem;
  font-size: 0.75rem;
}
.btn-sm {
  height: 2rem;
  min-height: 2rem;
  padding-left: 0.75rem;
  padding-right: 0.75rem;
  font-size: 0.875rem;
}
.btn-lg {
  height: 4rem;
  min-height: 4rem;
  padding-left: 1.5rem;
  padding-right: 1.5rem;
  font-size: 1.125rem;
}
.btn-block {
  width: 100%;
}
.btn-square:where(.btn-xs) {
  height: 1.5rem;
  width: 1.5rem;
  padding: 0px;
}
.btn-square:where(.btn-sm) {
  height: 2rem;
  width: 2rem;
  padding: 0px;
}
.btn-square:where(.btn-lg) {
  height: 4rem;
  width: 4rem;
  padding: 0px;
}
.btn-circle:where(.btn-xs) {
  height: 1.5rem;
  width: 1.5rem;
  border-radius: 9999px;
  padding: 0px;
}
.btn-circle:where(.btn-sm) {
  height: 2rem;
  width: 2rem;
  border-radius: 9999px;
  padding: 0px;
}
.btn-circle:where(.btn-md) {
  height: 3rem;
  width: 3rem;
  border-radius: 9999px;
  padding: 0px;
}
.btn-circle:where(.btn-lg) {
  height: 4rem;
  width: 4rem;
  border-radius: 9999px;
  padding: 0px;
}
.indicator :where(.indicator-item) {
  bottom: auto;
  inset-inline-end: 0px;
  inset-inline-start: auto;
  top: 0px;
  --tw-translate-y: -50%;
  --tw-translate-x: 50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.indicator :where(.indicator-item):where([dir="rtl"], [dir="rtl"] *) {
  --tw-translate-x: -50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.indicator :where(.indicator-item.indicator-start) {
  inset-inline-end: auto;
  inset-inline-start: 0px;
  --tw-translate-x: -50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.indicator :where(.indicator-item.indicator-start):where([dir="rtl"], [dir="rtl"] *) {
  --tw-translate-x: 50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.indicator :where(.indicator-item.indicator-center) {
  inset-inline-end: 50%;
  inset-inline-start: 50%;
  --tw-translate-x: -50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.indicator :where(.indicator-item.indicator-center):where([dir="rtl"], [dir="rtl"] *) {
  --tw-translate-x: 50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.indicator :where(.indicator-item.indicator-end) {
  inset-inline-end: 0px;
  inset-inline-start: auto;
  --tw-translate-x: 50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.indicator :where(.indicator-item.indicator-end):where([dir="rtl"], [dir="rtl"] *) {
  --tw-translate-x: -50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.indicator :where(.indicator-item.indicator-bottom) {
  bottom: 0px;
  top: auto;
  --tw-translate-y: 50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.indicator :where(.indicator-item.indicator-middle) {
  bottom: 50%;
  top: 50%;
  --tw-translate-y: -50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.indicator :where(.indicator-item.indicator-top) {
  bottom: auto;
  top: 0px;
  --tw-translate-y: -50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.join.join-vertical {
  flex-direction: column;
}
.join.join-vertical .join-item:first-child:not(:last-child),
  .join.join-vertical *:first-child:not(:last-child) .join-item {
  border-end-start-radius: 0;
  border-end-end-radius: 0;
  border-start-start-radius: inherit;
  border-start-end-radius: inherit;
}
.join.join-vertical .join-item:last-child:not(:first-child),
  .join.join-vertical *:last-child:not(:first-child) .join-item {
  border-start-start-radius: 0;
  border-start-end-radius: 0;
  border-end-start-radius: inherit;
  border-end-end-radius: inherit;
}
.join.join-horizontal {
  flex-direction: row;
}
.join.join-horizontal .join-item:first-child:not(:last-child),
  .join.join-horizontal *:first-child:not(:last-child) .join-item {
  border-end-end-radius: 0;
  border-start-end-radius: 0;
  border-end-start-radius: inherit;
  border-start-start-radius: inherit;
}
.join.join-horizontal .join-item:last-child:not(:first-child),
  .join.join-horizontal *:last-child:not(:first-child) .join-item {
  border-end-start-radius: 0;
  border-start-start-radius: 0;
  border-end-end-radius: inherit;
  border-start-end-radius: inherit;
}
.avatar.online:before {
  content: "";
  position: absolute;
  z-index: 10;
  display: block;
  border-radius: 9999px;
  --tw-bg-opacity: 1;
  background-color: var(--fallback-su,oklch(var(--su)/var(--tw-bg-opacity)));
  outline-style: solid;
  outline-width: 2px;
  outline-color: var(--fallback-b1,oklch(var(--b1)/1));
  width: 15%;
  height: 15%;
  top: 7%;
  right: 7%;
}
.avatar.offline:before {
  content: "";
  position: absolute;
  z-index: 10;
  display: block;
  border-radius: 9999px;
  --tw-bg-opacity: 1;
  background-color: var(--fallback-b3,oklch(var(--b3)/var(--tw-bg-opacity)));
  outline-style: solid;
  outline-width: 2px;
  outline-color: var(--fallback-b1,oklch(var(--b1)/1));
  width: 15%;
  height: 15%;
  top: 7%;
  right: 7%;
}
.join.join-vertical > :where(*:not(:first-child)) {
  margin-left: 0px;
  margin-right: 0px;
  margin-top: -1px;
}
.join.join-vertical > :where(*:not(:first-child)):is(.btn) {
  margin-top: calc(var(--border-btn) * -1);
}
.join.join-horizontal > :where(*:not(:first-child)) {
  margin-top: 0px;
  margin-bottom: 0px;
  margin-inline-start: -1px;
}
.join.join-horizontal > :where(*:not(:first-child)):is(.btn) {
  margin-inline-start: calc(var(--border-btn) * -1);
  margin-top: 0px;
}
.visible {
  visibility: visible;
}
.static {
  position: static;
}
.fixed {
  position: fixed;
}
.absolute {
  position: absolute;
}
.relative {
  position: relative;
}
.mb-4 {
  margin-bottom: 1rem;
}
.mt-2 {
  margin-top: 0.5rem;
}
.mt-3 {
  margin-top: 0.75rem;
}
.mt-4 {
  margin-top: 1rem;
}
.block {
  display: block;
}
.flex {
  display: flex;
}
.table {
  display: table;
}
.grid {
  display: grid;
}
.hidden {
  display: none;
}
.h-4 {
  height: 1rem;
}
.h-5 {
  height: 1.25rem;
}
.h-6 {
  height: 1.5rem;
}
.w-4 {
  width: 1rem;
}
.w-5 {
  width: 1.25rem;
}
.w-6 {
  width: 1.5rem;
}
.w-full {
  width: 100%;
}
.transform {
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.grid-cols-2 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.items-center {
  align-items: center;
}
.justify-between {
  justify-content: space-between;
}
.gap-3 {
  gap: 0.75rem;
}
.text-2xl {
  font-size: 1.5rem;
  line-height: 2rem;
}
.text-lg {
  font-size: 1.125rem;
  line-height: 1.75rem;
}
.font-bold {
  font-weight: 700;
}
.filter {
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}
.transition {
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91aS9zdHlsZXMvbWFpbi5jc3MiLCIuLi8uLi9zcmMvdWkvc3R5bGVzLzAxLXRoZW1lLXRva2Vucy5jc3MiLCIuLi8uLi9zcmMvdWkvc3R5bGVzLzAyLWJhc2UtbGF5b3V0LmNzcyIsIi4uLy4uL3NyYy91aS9zdHlsZXMvMDMtZmVsdC1ncmlkLmNzcyIsIi4uLy4uL3NyYy91aS9zdHlsZXMvMDQtY2FyZHMtYW5pbWF0aW9ucy5jc3MiLCIuLi8uLi9zcmMvdWkvc3R5bGVzLzA1LWNvbXBvbmVudHMtbW9kYWxzLmNzcyIsIi4uLy4uL3NyYy91aS9zdHlsZXMvMDYtY29tcG9uZW50cy1mb3Jtcy5jc3MiLCIuLi8uLi9zcmMvdWkvc3R5bGVzLzA3LXZpZXdzLWdhbWUuY3NzIiwiLi4vLi4vc3JjL3VpL3N0eWxlcy8wOC12aWV3cy1vbmxpbmUuY3NzIiwiLi4vLi4vc3JjL3VpL3N0eWxlcy8wOS1yZXNwb25zaXZlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7QUFDcEMsdUVBQXVFO0FDRHZFLHVEQUF1RDtBQUN2RCx5RUFBeUU7QUFDekUscUVBQXFFO0FBRXJFLGlDQUFpQztBQUNqQzs7RUFFRSw2QkFBNkI7RUFDN0IsaUJBQWlCO0VBQ2pCLGdDQUFnQztFQUNoQyw4QkFBOEI7RUFDOUIsOEJBQThCO0VBQzlCLHdDQUF3QztFQUN4Qyw2Q0FBNkM7RUFDN0MsNkNBQTZDO0VBQzdDLG1CQUFtQjtFQUNuQiwwQ0FBMEM7RUFDMUMsd0NBQXdDO0VBQ3hDLHNCQUFzQjtFQUN0Qiw0QkFBNEI7RUFDNUIsNkJBQTZCO0VBQzdCLGtDQUFrQztFQUNsQyx5Q0FBeUM7RUFDekMsK0NBQStDO0VBQy9DLDZDQUE2QztFQUM3QyxtREFBbUQ7RUFDbkQsMENBQTBDO0VBQzFDLGlEQUFpRDtFQUNqRCxnREFBZ0Q7RUFDaEQsZ0RBQWdEO0VBQ2hELHVDQUF1QztFQUN2QywwQ0FBMEM7RUFDMUMseUJBQXlCO0VBQ3pCLHNCQUFzQjtFQUN0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QUFvQjtFQUFwQixxQkFBb0I7RUFBcEI7QUFBb0I7QUFBcEI7RUFBQSxZQUFvQjtFQUFwQixnQkFBb0I7RUFBcEIscUJBQW9CO0VBQXBCLHNCQUFvQjtFQUFwQjtBQUFvQjtBQUFwQjtFQUFBLFlBQW9CO0VBQXBCLGdCQUFvQjtFQUFwQixvQkFBb0I7RUFBcEIscUJBQW9CO0VBQXBCO0FBQW9CO0FBQXBCO0VBQUE7QUFBb0I7QUFBcEI7RUFBQSxjQUFvQjtFQUFwQixhQUFvQjtFQUFwQjtBQUFvQjtBQUFwQjtFQUFBLFlBQW9CO0VBQXBCLFdBQW9CO0VBQXBCO0FBQW9CO0FBQXBCO0VBQUEsWUFBb0I7RUFBcEIsV0FBb0I7RUFBcEI7QUFBb0I7QUFBcEI7RUFBQSxjQUFvQjtFQUFwQixhQUFvQjtFQUFwQixxQkFBb0I7RUFBcEI7QUFBb0I7QUFBcEI7RUFBQSxZQUFvQjtFQUFwQixXQUFvQjtFQUFwQixxQkFBb0I7RUFBcEI7QUFBb0I7QUFBcEI7RUFBQSxZQUFvQjtFQUFwQixXQUFvQjtFQUFwQixxQkFBb0I7RUFBcEI7QUFBb0I7QUFBcEI7RUFBQSxZQUFvQjtFQUFwQixXQUFvQjtFQUFwQixxQkFBb0I7RUFBcEI7QUFBb0I7QUFBcEI7RUFBQSxZQUFvQjtFQUFwQixxQkFBb0I7RUFBcEIsd0JBQW9CO0VBQXBCLFFBQW9CO0VBQXBCLHNCQUFvQjtFQUFwQixxQkFBb0I7RUFBcEI7QUFBb0I7QUFBcEI7RUFBQSxzQkFBb0I7RUFBcEI7QUFBb0I7QUFBcEI7RUFBQSxzQkFBb0I7RUFBcEIsdUJBQW9CO0VBQXBCLHNCQUFvQjtFQUFwQjtBQUFvQjtBQUFwQjtFQUFBLHFCQUFvQjtFQUFwQjtBQUFvQjtBQUFwQjtFQUFBLHFCQUFvQjtFQUFwQix1QkFBb0I7RUFBcEIsc0JBQW9CO0VBQXBCO0FBQW9CO0FBQXBCO0VBQUEscUJBQW9CO0VBQXBCO0FBQW9CO0FBQXBCO0VBQUEscUJBQW9CO0VBQXBCLHdCQUFvQjtFQUFwQixxQkFBb0I7RUFBcEI7QUFBb0I7QUFBcEI7RUFBQSxzQkFBb0I7RUFBcEI7QUFBb0I7QUFBcEI7RUFBQSxXQUFvQjtFQUFwQixTQUFvQjtFQUFwQixxQkFBb0I7RUFBcEI7QUFBb0I7QUFBcEI7RUFBQSxXQUFvQjtFQUFwQixRQUFvQjtFQUFwQixzQkFBb0I7RUFBcEI7QUFBb0I7QUFBcEI7RUFBQSxZQUFvQjtFQUFwQixRQUFvQjtFQUFwQixzQkFBb0I7RUFBcEI7QUFBb0I7QUFBcEI7RUFBQTtBQUFvQjtBQUFwQjs7RUFBQSwwQkFBb0I7RUFBcEIsd0JBQW9CO0VBQXBCLGtDQUFvQjtFQUFwQjtBQUFvQjtBQUFwQjs7RUFBQSw0QkFBb0I7RUFBcEIsMEJBQW9CO0VBQXBCLGdDQUFvQjtFQUFwQjtBQUFvQjtBQUFwQjtFQUFBO0FBQW9CO0FBQXBCOztFQUFBLHdCQUFvQjtFQUFwQiwwQkFBb0I7RUFBcEIsZ0NBQW9CO0VBQXBCO0FBQW9CO0FBQXBCOztFQUFBLDBCQUFvQjtFQUFwQiw0QkFBb0I7RUFBcEIsOEJBQW9CO0VBQXBCO0FBQW9CO0FBQXBCO0VBQUEsV0FBb0I7RUFBcEIsa0JBQW9CO0VBQXBCLFdBQW9CO0VBQXBCLGNBQW9CO0VBQXBCLHFCQUFvQjtFQUFwQixrQkFBb0I7RUFBcEIsMEVBQW9CO0VBQXBCLG9CQUFvQjtFQUFwQixrQkFBb0I7RUFBcEIsb0RBQW9CO0VBQXBCLFVBQW9CO0VBQXBCLFdBQW9CO0VBQXBCLE9BQW9CO0VBQXBCO0FBQW9CO0FBQXBCO0VBQUEsV0FBb0I7RUFBcEIsa0JBQW9CO0VBQXBCLFdBQW9CO0VBQXBCLGNBQW9CO0VBQXBCLHFCQUFvQjtFQUFwQixrQkFBb0I7RUFBcEIsMEVBQW9CO0VBQXBCLG9CQUFvQjtFQUFwQixrQkFBb0I7RUFBcEIsb0RBQW9CO0VBQXBCLFVBQW9CO0VBQXBCLFdBQW9CO0VBQXBCLE9BQW9CO0VBQXBCO0FBQW9CO0FBQXBCO0VBQUEsZ0JBQW9CO0VBQXBCLGlCQUFvQjtFQUFwQjtBQUFvQjtBQUFwQjtFQUFBO0FBQW9CO0FBQXBCO0VBQUEsZUFBb0I7RUFBcEIsa0JBQW9CO0VBQXBCO0FBQW9CO0FBQXBCO0VBQUEsaURBQW9CO0VBQXBCO0FBQW9CO0FBQ3BCO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBLGlCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG1CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQSx3SkFBbUI7RUFBbkIsd0RBQW1CO0VBQW5CO0FBQW1CIiwiZmlsZSI6InN0eWxlcy5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiA9PT09PSBNb2R1bGFyIENTUyBJbXBvcnRzID09PT09ICovXG4vKiBFYWNoIGZpbGUgaXMgb3JnYW5pemVkIGJ5IGZ1bmN0aW9uYWxpdHkgZm9yIGJldHRlciBtYWludGFpbmFiaWxpdHkgKi9cblxuQGltcG9ydCAnLi8wMS10aGVtZS10b2tlbnMuY3NzJztcbkBpbXBvcnQgJy4vMDItYmFzZS1sYXlvdXQuY3NzJztcbkBpbXBvcnQgJy4vMDMtZmVsdC1ncmlkLmNzcyc7XG5AaW1wb3J0ICcuLzA0LWNhcmRzLWFuaW1hdGlvbnMuY3NzJztcbkBpbXBvcnQgJy4vMDUtY29tcG9uZW50cy1tb2RhbHMuY3NzJztcbkBpbXBvcnQgJy4vMDYtY29tcG9uZW50cy1mb3Jtcy5jc3MnO1xuQGltcG9ydCAnLi8wNy12aWV3cy1nYW1lLmNzcyc7XG5AaW1wb3J0ICcuLzA4LXZpZXdzLW9ubGluZS5jc3MnO1xuQGltcG9ydCAnLi8wOS1yZXNwb25zaXZlLmNzcyc7XG5cbkB0YWlsd2luZCBiYXNlO1xuQHRhaWx3aW5kIGNvbXBvbmVudHM7XG5AdGFpbHdpbmQgdXRpbGl0aWVzO1xuIiwiLyogPT09PT0gVGhlbWUgU3lzdGVtOiBEdWFsLUxheWVyIERlc2lnbiBUb2tlbnMgPT09PT0gKi9cbi8qIEFwcC10aGVtZTogQ29udHJvbHMgbG9naW4sIGxvYmJ5LCBtZW51cywgYnV0dG9ucyAoY2hhbmdlcyBwZXIgdGhlbWUpICovXG4vKiBHYW1lLXRoZW1lOiBDb250cm9scyBmZWx0IGdyaWQsIGNhcmRzLCB0cmljayBhcmVhIChhbHdheXMgZ3JlZW4pICovXG5cbi8qIERlZmF1bHQgVGhlbWU6IEdvbGRlbiBBc2NlbnQgKi9cbjpyb290LFxuW2RhdGEtdGhlbWU9XCJnb2xkZW4tYXNjZW50XCJdIHtcbiAgLyogQXBwIFRoZW1lIC0gQmxhY2sgJiBHb2xkICovXG4gIC0tYXBwLWJnOiAjMGEwYTBhO1xuICAtLWFwcC1iZy1ncmFkaWVudC1zdGFydDogIzBhMGEwYTtcbiAgLS1hcHAtYmctZ3JhZGllbnQtbWlkOiAjMWExYTFhO1xuICAtLWFwcC1iZy1ncmFkaWVudC1lbmQ6ICMwZDBkMGQ7XG4gIC0tYXBwLXN1cmZhY2U6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7XG4gIC0tYXBwLXN1cmZhY2UtYm9yZGVyOiByZ2JhKDIxMiwgMTc1LCA1NSwgMC4zKTtcbiAgLS1hcHAtc3VyZmFjZS1ob3ZlcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xuICAtLWFwcC10ZXh0OiAjZmZmZmZmO1xuICAtLWFwcC10ZXh0LW11dGVkOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNik7XG4gIC0tYXBwLXRleHQtZGltOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCk7XG4gIC0tYXBwLXByaW1hcnk6ICNkNGFmMzc7XG4gIC0tYXBwLXByaW1hcnktaG92ZXI6ICNlMGJmNGE7XG4gIC0tYXBwLXByaW1hcnktYWN0aXZlOiAjYjg5NzJlO1xuICAtLWFwcC1wcmltYXJ5LWFjdGl2ZS1kZWVwOiAjOWE3ZDI0O1xuICAtLWFwcC1wcmltYXJ5LWJnOiByZ2JhKDIxMiwgMTc1LCA1NSwgMC4xKTtcbiAgLS1hcHAtcHJpbWFyeS1iZy1ob3ZlcjogcmdiYSgyMTIsIDE3NSwgNTUsIDAuMik7XG4gIC0tYXBwLXByaW1hcnktc2hhZG93OiByZ2JhKDIxMiwgMTc1LCA1NSwgMC4zKTtcbiAgLS1hcHAtcHJpbWFyeS1zaGFkb3ctaG92ZXI6IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjQpO1xuICAtLWFwcC1zZWNvbmRhcnk6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7XG4gIC0tYXBwLXNlY29uZGFyeS1ib3JkZXI6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNSk7XG4gIC0tYXBwLXNlY29uZGFyeS1ob3ZlcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTtcbiAgLS1hcHAtc2Vjb25kYXJ5LWFjdGl2ZTogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xuICAtLWFwcC1lcnJvci1iZzogcmdiYSgyMjAsIDM4LCAzOCwgMC4xNSk7XG4gIC0tYXBwLWVycm9yLWJvcmRlcjogcmdiYSgyMjAsIDM4LCAzOCwgMC4zKTtcbiAgLS1hcHAtZXJyb3ItdGV4dDogI2ZjYTVhNTtcbiAgLS1hcHAtc3VjY2VzczogIzIyYzU1ZTtcbiAgLS1hcHAtaW5mbzogIzNiODJmNjtcbiAgLS1hcHAtaW5wdXQtYmc6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7XG4gIC0tYXBwLWlucHV0LWJvcmRlcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xuICAtLWFwcC1pbnB1dC1mb2N1cy1iZzogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKTtcbiAgLS1hcHAtaW5wdXQtZm9jdXMtcmluZzogcmdiYSgyMTIsIDE3NSwgNTUsIDAuMTUpO1xuICAtLWFwcC1nbG93LTE6IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjA4KTtcbiAgLS1hcHAtZ2xvdy0yOiByZ2JhKDIxMiwgMTc1LCA1NSwgMC4wNSk7XG5cbiAgLyogRmVsdCBHcmlkIC0gVGhlbWUtQXdhcmUgKi9cbiAgLS1mZWx0LWJnOiAjMWExYTFhO1xuICAtLWZlbHQtYmctZ3JhZGllbnQ6ICMyYTJhMmE7XG4gIC0tZmVsdC1nbG93OiByZ2JhKDIxMiwgMTc1LCA1NSwgMC4wOCk7XG5cbiAgLyogR2FtZSBUaGVtZSAtIER5bmFtaWMgQ2FzaW5vIEZlbHQgKi9cbiAgLS1nYW1lLWJnOiB2YXIoLS1mZWx0LWJnLCAjMEExNDI4KTtcbiAgLS1nYW1lLWJnLWdyYWRpZW50LXN0YXJ0OiB2YXIoLS1mZWx0LWJnLCAjMEExNDI4KTtcbiAgLS1nYW1lLWJnLWdyYWRpZW50LWNlbnRlcjogdmFyKC0tZmVsdC1iZy1ncmFkaWVudCwgIzExMkE0Nik7XG4gIC0tZ2FtZS1zdXJmYWNlOiByZ2JhKDAsIDAsIDAsIDAuNCk7XG4gIC0tZ2FtZS1zdXJmYWNlLWJvcmRlcjogcmdiYSgyMTIsIDE3NSwgNTUsIDAuMTUpO1xuICAtLWdhbWUtdGV4dDogI2ZmZmZmZjtcbiAgLS1nYW1lLXRleHQtbXV0ZWQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42KTtcbiAgLS1nYW1lLXRleHQtZGltOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCk7XG4gIC0tZ2FtZS10ZXh0LWRhcms6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTtcbiAgLS1nYW1lLXByaW1hcnk6ICNkNGFmMzc7XG4gIC0tZ2FtZS1wcmltYXJ5LWJnOiByZ2JhKDIxMiwgMTc1LCA1NSwgMC4yKTtcbiAgLS1nYW1lLXByaW1hcnktYm9yZGVyOiByZ2JhKDIxMiwgMTc1LCA1NSwgMC42KTtcbiAgLS1nYW1lLWNhcmQtYmc6ICNmZmZmZmY7XG4gIC0tZ2FtZS1jYXJkLWJvcmRlcjogI2Q0YWYzNztcbiAgLS1nYW1lLWNhcmQtcGxheWFibGUtYm9yZGVyOiAjZDRhZjM3O1xuICAtLWdhbWUtY2FyZC11bnBsYXlhYmxlLWJnOiAjZTBlMGUwO1xuICAtLWdhbWUtY2FyZC11bnBsYXlhYmxlLWJvcmRlcjogIzk5OTtcbiAgLS1nYW1lLWNhcmQtdGV4dDogIzFhMWEyZTtcbiAgLS1nYW1lLWFjY2VudC1yaW5nOiAjZDRhZjM3O1xuICAtLWdhbWUtdHJpY2stYXJlYS1iZzogcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgLS1nYW1lLXRyaWNrLWFyZWEtYm9yZGVyOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpO1xuICAtLWdhbWUtaGFuZC1ncmFkaWVudDogcmdiYSgwLCAwLCAwLCAwLjMpO1xuICAtLWdhbWUtcGxheWVyLWJnOiByZ2JhKDAsIDAsIDAsIDAuMyk7XG4gIC0tZ2FtZS1wbGF5ZXItYWN0aXZlLWJnOiByZ2JhKDIxMiwgMTc1LCA1NSwgMC4yKTtcbiAgLS1nYW1lLXBsYXllci1hY3RpdmUtYm9yZGVyOiByZ2JhKDIxMiwgMTc1LCA1NSwgMC42KTtcbiAgLS1nYW1lLWF2YXRhci1iZzogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTtcbiAgLS1nYW1lLWNhcmQtbGFiZWwtYmc6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgLS1nYW1lLWNhcmQtbGFiZWwtdGV4dDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xuICAtLWdhbWUtY2FyZC1zaGFkb3c6IHJnYmEoMCwgMCwgMCwgMC4zKTtcbiAgLS1nYW1lLWNhcmQtc2hhZG93LWhvdmVyOiByZ2JhKDAsIDAsIDAsIDAuNCk7XG4gIC0tZ2FtZS1jYXJkLXNlbGVjdGVkLXNoYWRvdzogcmdiYSgyMTIsIDE3NSwgNTUsIDAuNSk7XG4gIC0tZ2FtZS10ZWFtLTAtYmc6IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjMpO1xuICAtLWdhbWUtdGVhbS0wLWJvcmRlcjogcmdiYSgyMTIsIDE3NSwgNTUsIDAuNSk7XG4gIC0tZ2FtZS10ZWFtLTAtdGV4dDogI2Q0YWYzNztcbiAgLS1nYW1lLXRlYW0tMS1iZzogcmdiYSg1OSwgMTMwLCAyNDYsIDAuMyk7XG4gIC0tZ2FtZS10ZWFtLTEtYm9yZGVyOiByZ2JhKDU5LCAxMzAsIDI0NiwgMC41KTtcbiAgLS1nYW1lLXRlYW0tMS10ZXh0OiAjNjBhNWZhO1xuICAtLWdhbWUtc3VpdC1yZWQ6ICNkYzI2MjY7XG4gIC0tZ2FtZS1zdWl0LWJsYWNrOiAjMWExYTJlO1xuICAtLWdhbWUtbWVudS1iZzogcmdiYSgyMCwgNjAsIDMwLCAwLjk1KTtcbiAgLS1nYW1lLW1lbnUtYm9yZGVyOiByZ2JhKDIxMiwgMTc1LCA1NSwgMC41KTtcbiAgLS1nYW1lLW1lbnUtaXRlbS1ob3ZlcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTtcbiAgLS1nYW1lLW9mZmxpbmUtYmc6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgLS1nYW1lLW9mZmxpbmUtdGV4dDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xuICAtLWdhbWUtbG9iYnktYnRuLWJnOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpO1xuICAtLWdhbWUtbG9iYnktYnRuLWJvcmRlcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpO1xuICAtLWdhbWUtbG9iYnktYnRuLWhvdmVyOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjUpO1xuICAtLWdhbWUtbW9kYWwtb3ZlcmxheTogcmdiYSgwLCAwLCAwLCAwLjUpO1xuICAtLWdhbWUtcmVkZWFsLXRleHQ6ICNkNGFmMzc7XG4gIC0tZ2FtZS13aW5uZXItdGV4dDogI2Q0YWYzNztcbiAgLS1nYW1lLXdpbm5lci1iZzogcmdiYSgyMTIsIDE3NSwgNTUsIDAuMik7XG5cbiAgLyogPT09PT0gUmVzcG9uc2l2ZSBTaXplIFRva2VucyAoUG9ydHJhaXQgRGVmYXVsdCkgPT09PT0gKi9cbiAgLyogRmVsdCBHcmlkICovXG4gIC0tZmVsdC1nYXA6IDNweDtcbiAgLS1mZWx0LXBhZGRpbmc6IDNweDtcbiAgLS1mZWx0LXJvd3M6IDE1JSA2MCUgMjUlO1xuICAtLWZlbHQtY29sczogMWZyIDIuNWZyIDFmcjtcblxuICAvKiBDYXJkcyAqL1xuICAtLWNhcmQtd2lkdGg6IDY1cHg7XG4gIC0tY2FyZC1oZWlnaHQ6IDgwcHg7XG4gIC0tY2FyZC1yYWRpdXM6IDZweDtcbiAgLS1jYXJkLXJhbmstc2l6ZTogMjJweDtcbiAgLS1jYXJkLXN1aXQtc2l6ZTogMjJweDtcbiAgLS1jYXJkLXBsYXllci1sYWJlbC1zaXplOiA5cHg7XG4gIC0tY2FyZC1wbGF5ZXItbGFiZWwtcGFkZGluZzogMnB4IDZweDtcbiAgLS1jYXJkLXBsYXllci1sYWJlbC1yYWRpdXM6IDRweDtcbiAgLS1oYW5kLWdhcDogNHB4O1xuICAtLWhhbmQtcGFkZGluZzogNnB4IDNweCAxMHB4O1xuICAtLWhhbmQtcmFkaXVzOiAxMnB4IDEycHggMCAwO1xuXG4gIC8qIFBsYXllciBJbmZvICovXG4gIC0tcGxheWVyLWluZm8tbWluLXdpZHRoOiA2OHB4O1xuICAtLXBsYXllci1pbmZvLXBhZGRpbmc6IDZweDtcbiAgLS1wbGF5ZXItaW5mby1yYWRpdXM6IDEwcHg7XG4gIC0tcGxheWVyLWluZm8tZ2FwOiAzcHg7XG4gIC0tYXZhdGFyLXNpemU6IDM2cHg7XG4gIC0tYXZhdGFyLWZvbnQtc2l6ZTogMThweDtcbiAgLS1hdmF0YXItcmFkaXVzOiA1MCU7XG4gIC0tYWN0aXZlLXJpbmctaW5zZXQ6IC00cHg7XG4gIC0tYWN0aXZlLXJpbmctd2lkdGg6IDJweDtcbiAgLS1jcm93bi1pY29uLXRvcDogLTEwcHg7XG4gIC0tY3Jvd24taWNvbi1zaXplOiAxNHB4O1xuICAtLXBsYXllci1uYW1lLXNpemU6IDExcHg7XG4gIC0tY2FyZC1jb3VudC1zaXplOiAxMHB4O1xuXG4gIC8qIFRlYW0gTGFiZWxzICovXG4gIC0tdGVhbS1sYWJlbC1zaXplOiA5cHg7XG4gIC0tdGVhbS1sYWJlbC1wYWRkaW5nOiAxcHggNnB4O1xuICAtLXRlYW0tbGFiZWwtcmFkaXVzOiA0cHg7XG5cbiAgLyogVXNlciBEaXNwbGF5IChpbiBoYW5kIGNvcm5lcikgKi9cbiAgLS11c2VyLWRpc3BsYXktcGxheWVyLW1pbi13aWR0aDogNjBweDtcbiAgLS11c2VyLWRpc3BsYXktcGxheWVyLXBhZGRpbmc6IDRweCA2cHg7XG4gIC0tdXNlci1kaXNwbGF5LW5hbWUtc2l6ZTogMTBweDtcbiAgLS11c2VyLWRpc3BsYXktdGVhbS1sYWJlbC1zaXplOiA4cHg7XG4gIC0tdXNlci1kaXNwbGF5LXRlYW0tbGFiZWwtcGFkZGluZzogMXB4IDRweDtcbiAgLS11c2VyLWRpc3BsYXktY2FyZC1jb3VudC1zaXplOiA5cHg7XG5cbiAgLyogQ29ybmVyIENlbGxzIChUcnVtcCwgU2NvcmVzLCBUcmlja3MpICovXG4gIC0tdHJ1bXAtY2VsbC1taW4td2lkdGg6IDQ0cHg7XG4gIC0tdHJ1bXAtY2VsbC1wYWRkaW5nOiA0cHg7XG4gIC0tdHJ1bXAtY2VsbC1yYWRpdXM6IDhweDtcbiAgLS10cnVtcC1jZWxsLWxhYmVsLXNpemU6IDlweDtcbiAgLS10cnVtcC1jZWxsLWxhYmVsLXNwYWNpbmc6IDAuNXB4O1xuICAtLXRydW1wLWNlbGwtdmFsdWUtc2l6ZTogMjJweDtcbiAgLS1zY29yZXMtY2VsbC1taW4td2lkdGg6IDUycHg7XG4gIC0tc2NvcmVzLWNlbGwtcGFkZGluZzogNHB4O1xuICAtLXNjb3Jlcy1jZWxsLXJhZGl1czogOHB4O1xuICAtLXNjb3Jlcy1jZWxsLWxhYmVsLXNpemU6IDlweDtcbiAgLS1zY29yZXMtY2VsbC1sYWJlbC1zcGFjaW5nOiAwLjVweDtcbiAgLS10ZWFtLXNjb3JlLXNpemU6IDE2cHg7XG4gIC0tY3Jvd24tY2VsbC1uYW1lLXNpemU6IDEwcHg7XG4gIC0tdHJ1bXAtZGVjbGFyZXItY2VsbC1zaXplOiAxMHB4O1xuICAtLXRyaWNrLWNlbGwtbWluLXdpZHRoOiA0MHB4O1xuICAtLXRyaWNrLWNlbGwtcGFkZGluZzogNHB4O1xuICAtLXRyaWNrLWNlbGwtcmFkaXVzOiA4cHg7XG4gIC0tdHJpY2stdmFsdWUtc2l6ZTogMTZweDtcbiAgLS10cmljay1sYWJlbC1zaXplOiA5cHg7XG4gIC0tcm91bmQtc2NvcmUtc2l6ZTogMTJweDtcblxuICAvKiBUcmljayBBcmVhICovXG4gIC0tdHJpY2stYXJlYS1yYWRpdXM6IDE0cHg7XG4gIC0tdHJpY2stcGxhY2Vob2xkZXItc2l6ZTogMTNweDtcbiAgLS10cmljay1jYXJkLXNsb3QtZ2FwOiA0cHg7XG4gIC0tdHJpY2stcG9zaXRpb24tb2Zmc2V0OiA4JTtcblxuICAvKiBNZW51IEJ1dHRvbiAqL1xuICAtLW1lbnUtaWNvbi1zaXplOiAyMHB4O1xuICAtLW1lbnUtdG9nZ2xlLXBhZGRpbmc6IDRweCA4cHg7XG4gIC0tbWVudS10b2dnbGUtYnRuLWljb24tc2l6ZTogMjRweDtcblxuICAvKiBUcnVtcCBTZWxlY3RvciAqL1xuICAtLXRydW1wLWNhcmQtd2lkdGg6IDU2cHg7XG4gIC0tdHJ1bXAtY2FyZC1oZWlnaHQ6IDc2cHg7XG4gIC0tdHJ1bXAtY2FyZC1yYWRpdXM6IDZweDtcbiAgLS10cnVtcC1jYXJkLXN1aXQtc2l6ZTogMjBweDtcbiAgLS10cnVtcC1jYXJkLXJhbmstc2l6ZTogMTRweDtcbiAgLS10cnVtcC1zdWl0LWdyaWQtZ2FwOiAxMnB4O1xuICAtLXRydW1wLXN1aXQtYnRuLWhlaWdodDogODBweDtcbiAgLS10cnVtcC1zdWl0LWJ0bi1wYWRkaW5nOiAxNnB4O1xuICAtLXRydW1wLXN1aXQtYnRuLXJhZGl1czogMTJweDtcbiAgLS10cnVtcC1zdWl0LXN5bWJvbC1zaXplOiAyOHB4O1xuICAtLXRydW1wLXN1aXQtbmFtZS1zaXplOiAxM3B4O1xuICAtLXRydW1wLXNlbGVjdG9yLWdhcDogMTZweDtcbiAgLS10cnVtcC1zZWxlY3Rvci10aXRsZS1zaXplOiAyMHB4O1xuICAtLXRydW1wLXNlbGVjdG9yLWRlc2Mtc2l6ZTogMTRweDtcbiAgLS10cnVtcC1jYW5jZWwtYnRuLXBhZGRpbmc6IDEwcHggMjRweDtcbiAgLS10cnVtcC1jYW5jZWwtYnRuLXJhZGl1czogOHB4O1xuICAtLXRydW1wLWNhbmNlbC1idG4tc2l6ZTogMTRweDtcblxuICAvKiBNb2RhbCBCb3R0b20gU2hlZXQgKi9cbiAgLS1tb2RhbC1tYXgtd2lkdGg6IG1pbig5MHZ3LCA2MDBweCk7XG4gIC0tbW9kYWwtbWF4LWhlaWdodDogbWF4KDg1dmgsIDg1ZHZoKTtcbiAgLS1tb2RhbC1yYWRpdXM6IDE2cHggMTZweCAwIDA7XG4gIC0tbW9kYWwtY29udGVudC1wYWRkaW5nOiAyNHB4IDE2cHg7XG4gIC0tbW9kYWwtY2xvc2Utc2l6ZTogMjBweDtcblxuICAvKiBDb250ZXh0IE1lbnUgKi9cbiAgLS1jb250ZXh0LW1lbnUtaXRlbS1wYWRkaW5nOiAxNnB4O1xuICAtLWNvbnRleHQtbWVudS1pdGVtLWdhcDogMTJweDtcbiAgLS1jb250ZXh0LW1lbnUtaXRlbS1yYWRpdXM6IDhweDtcbiAgLS1jb250ZXh0LW1lbnUtaWNvbi1zaXplOiAyMHB4O1xuICAtLWNvbnRleHQtbWVudS1sYWJlbC1zaXplOiAxNnB4O1xuXG4gIC8qIFJvdW5kIEVuZCBNb2RhbCAqL1xuICAtLXJvdW5kLWVuZC1nYXA6IDE2cHg7XG4gIC0tcm91bmQtZW5kLXRpdGxlLXNpemU6IDIwcHg7XG4gIC0tcm91bmQtZW5kLXJlc3VsdC1zaXplOiAxOHB4O1xuICAtLXJvdW5kLWVuZC1wb2ludHMtc2l6ZTogMjRweDtcbiAgLS1yb3VuZC1lbmQtdHJpY2stZ2FwOiAxMnB4O1xuICAtLXJvdW5kLWVuZC10cmljay1wYWRkaW5nOiAxMnB4O1xuICAtLXJvdW5kLWVuZC10cmljay1sYWJlbC1zaXplOiAxMnB4O1xuICAtLXJvdW5kLWVuZC10cmljay12YWx1ZS1zaXplOiAxNnB4O1xuICAtLXJvdW5kLWVuZC10cmljay1yYWRpdXM6IDhweDtcbiAgLS1yb3VuZC1lbmQtc2NvcmUtcGFkZGluZzogMTJweDtcbiAgLS1yb3VuZC1lbmQtc2NvcmUtZ2FwOiA0cHg7XG4gIC0tcm91bmQtZW5kLXNjb3JlLWxhYmVsLXNpemU6IDEycHg7XG4gIC0tcm91bmQtZW5kLXNjb3JlLXZhbHVlLXNpemU6IDE4cHg7XG4gIC0tcm91bmQtZW5kLXNjb3JlLXJhZGl1czogOHB4O1xuICAtLXJvdW5kLWVuZC1jb250aW51ZS1idG4tcGFkZGluZzogMTJweCAzMnB4O1xuICAtLXJvdW5kLWVuZC1jb250aW51ZS1idG4tcmFkaXVzOiAxMHB4O1xuICAtLXJvdW5kLWVuZC1jb250aW51ZS1idG4tc2l6ZTogMTZweDtcblxuICAvKiBWaWN0b3J5IE1vZGFsICovXG4gIC0tdmljdG9yeS1nYXA6IDE2cHg7XG4gIC0tdmljdG9yeS1pY29uLXNpemU6IDU2cHg7XG4gIC0tdmljdG9yeS10aXRsZS1zaXplOiAyNHB4O1xuICAtLXZpY3Rvcnktd2lubmVyLXNpemU6IDE4cHg7XG4gIC0tdmljdG9yeS1zY29yZXMtdGl0bGUtc2l6ZTogMTZweDtcbiAgLS12aWN0b3J5LXNjb3JlLXBhZGRpbmc6IDE2cHg7XG4gIC0tdmljdG9yeS1zY29yZS1nYXA6IDRweDtcbiAgLS12aWN0b3J5LXNjb3JlLWxhYmVsLXNpemU6IDEzcHg7XG4gIC0tdmljdG9yeS1zY29yZS12YWx1ZS1zaXplOiAyOHB4O1xuICAtLXZpY3Rvcnktc2NvcmUtdW5pdC1zaXplOiAxMnB4O1xuICAtLXZpY3Rvcnktc2NvcmUtcmFkaXVzOiAxMHB4O1xuICAtLXZpY3RvcnktbmV3LWdhbWUtYnRuLXBhZGRpbmc6IDE0cHggMjRweDtcbiAgLS12aWN0b3J5LW5ldy1nYW1lLWJ0bi1yYWRpdXM6IDEwcHg7XG4gIC0tdmljdG9yeS1uZXctZ2FtZS1idG4tc2l6ZTogMTZweDtcbiAgLS12aWN0b3J5LWxvYmJ5LWJ0bi1wYWRkaW5nOiAxMnB4IDI0cHg7XG4gIC0tdmljdG9yeS1sb2JieS1idG4tcmFkaXVzOiAxMHB4O1xuICAtLXZpY3RvcnktbG9iYnktYnRuLXNpemU6IDE1cHg7XG5cbiAgLyogUGxheWVkIENhcmRzIE1vZGFsICovXG4gIC0tcGxheWVkLWNhcmRzLWdhcDogMTZweDtcbiAgLS1wbGF5ZWQtY2FyZHMtdGl0bGUtc2l6ZTogMjBweDtcbiAgLS1wbGF5ZWQtY2FyZHMtdHJpY2stcGFkZGluZzogMTJweDtcbiAgLS1wbGF5ZWQtY2FyZHMtdHJpY2stcmFkaXVzOiA4cHg7XG4gIC0tdHJpY2stbGFiZWwtc2l6ZTogMTRweDtcbiAgLS10cmljay1zdGF0dXMtc2l6ZTogMTFweDtcbiAgLS10cmljay1zdGF0dXMtcGFkZGluZzogMnB4IDhweDtcbiAgLS10cmljay1zdGF0dXMtcmFkaXVzOiA0cHg7XG4gIC0tY2FyZHMtZ3JpZC1nYXA6IDhweDtcbiAgLS1wbGF5ZWQtY2FyZC1wYWRkaW5nOiA4cHg7XG4gIC0tcGxheWVkLWNhcmQtcmFkaXVzOiA2cHg7XG4gIC0tcGxheWVkLWNhcmQtbWluLWhlaWdodDogNjBweDtcbiAgLS1wbGF5ZWQtY2FyZC12YWx1ZS1zaXplOiAxNnB4O1xuICAtLXBsYXllZC1jYXJkLXBsYXllci1zaXplOiAxMXB4O1xuICAtLWVtcHR5LXN0YXRlLW1pbi1oZWlnaHQ6IDE1MHB4O1xuICAtLWVtcHR5LXN0YXRlLXRleHQtc2l6ZTogMTZweDtcbiAgLS1lbXB0eS1zdGF0ZS1oaW50LXNpemU6IDEzcHg7XG5cbiAgLyogVGhlbWUgU2VsZWN0b3IgKi9cbiAgLS10aGVtZS1zZWxlY3Rvci1wYW5lbC1tYXgtd2lkdGg6IDM2MHB4O1xuICAtLXRoZW1lLXNlbGVjdG9yLXBhbmVsLXBhZGRpbmc6IDI0cHg7XG4gIC0tdGhlbWUtc2VsZWN0b3ItcGFuZWwtcmFkaXVzOiAxNnB4O1xuICAtLXRoZW1lLXNlbGVjdG9yLXRpdGxlLXNpemU6IDE4cHg7XG4gIC0tdGhlbWUtc2VsZWN0b3ItY2xvc2Utc2l6ZTogMjBweDtcbiAgLS10aGVtZS1zZWxlY3Rvci1ncmlkLWdhcDogMTJweDtcbiAgLS10aGVtZS1vcHRpb24tcGFkZGluZzogMTZweCAxMnB4O1xuICAtLXRoZW1lLW9wdGlvbi1yYWRpdXM6IDEycHg7XG4gIC0tdGhlbWUtb3B0aW9uLXByZXZpZXctc2l6ZTogNDBweDtcbiAgLS10aGVtZS1vcHRpb24tcHJldmlldy10ZXh0LXNpemU6IDE4cHg7XG4gIC0tdGhlbWUtb3B0aW9uLW5hbWUtc2l6ZTogMTRweDtcbiAgLS10aGVtZS1vcHRpb24tZGVzYy1zaXplOiAxMnB4O1xuICAtLXRoZW1lLW9wdGlvbi1iYWRnZS1zaXplOiAxMXB4O1xuXG4gIC8qIFJvb20gQ29kZSBNb2RhbCAqL1xuICAtLXJvb20tY29kZS1tb2RhbC1wYWRkaW5nOiAyNHB4O1xuICAtLXJvb20tY29kZS1tb2RhbC1yYWRpdXM6IDE2cHg7XG4gIC0tcm9vbS1jb2RlLW1vZGFsLW1heC13aWR0aDogMzQwcHg7XG4gIC0tcm9vbS1jb2RlLW1vZGFsLWhlYWRlci1zaXplOiAxNnB4O1xuICAtLXJvb20tY29kZS1kaXNwbGF5LXNpemU6IDM2cHg7XG4gIC0tcm9vbS1jb2RlLWRpc3BsYXktc3BhY2luZzogOHB4O1xuICAtLXJvb20tY29kZS1kaXNwbGF5LXBhZGRpbmc6IDE2cHggMjRweDtcbiAgLS1yb29tLWNvZGUtZGlzcGxheS1yYWRpdXM6IDEycHg7XG4gIC0tcm9vbS1jb2RlLXdhaXRpbmctc2l6ZTogMTRweDtcblxuICAvKiBBcHAgSGVhZGVyICovXG4gIC0tYXBwLWhlYWRlci1oZWlnaHQ6IDQ4cHg7XG4gIC0tYXBwLWhlYWRlci1wYWRkaW5nOiAwIDhweDtcbiAgLS1hcHAtaGVhZGVyLWJhY2stc2l6ZTogNDBweDtcbiAgLS1hcHAtaGVhZGVyLWJhY2staWNvbi1zaXplOiAyNHB4O1xuICAtLWFwcC1oZWFkZXItdGl0bGUtc2l6ZTogMTZweDtcblxuICAvKiBMb2dpbiAvIExvYmJ5IC8gUmVnaXN0cmF0aW9uICovXG4gIC0tdmlldy1wYWRkaW5nOiAyNHB4O1xuICAtLWNvbnRhaW5lci1tYXgtd2lkdGg6IDQwMHB4O1xuICAtLWNvbnRhaW5lci1wYWRkaW5nOiAzMnB4IDI0cHg7XG4gIC0tY29udGFpbmVyLXBhZGRpbmctYm90dG9tOiA0MHB4O1xuICAtLWNvbnRhaW5lci1yYWRpdXM6IDE2cHg7XG4gIC0tYXBwLXRpdGxlLXNpemU6IDMycHg7XG4gIC0tYXBwLXRpdGxlLXNwYWNpbmc6IDFweDtcbiAgLS1hcHAtc3VidGl0bGUtc2l6ZTogMTRweDtcbiAgLS1mb3JtLWdyb3VwLW1heC13aWR0aDogMzIwcHg7XG4gIC0tZm9ybS1ncm91cC1nYXA6IDEycHg7XG4gIC0tZm9ybS1ncm91cC1tYXJnaW4tYm90dG9tOiAxNnB4O1xuICAtLWZvcm0taW5wdXQtcGFkZGluZzogMTRweCAxNnB4O1xuICAtLWZvcm0taW5wdXQtcmFkaXVzOiAxMHB4O1xuICAtLWZvcm0taW5wdXQtc2l6ZTogMTZweDtcbiAgLS1mb3JtLWlucHV0LWZvY3VzLXJpbmc6IDNweDtcbiAgLS1lcnJvci1tYXgtd2lkdGg6IDMyMHB4O1xuICAtLWVycm9yLXBhZGRpbmc6IDEwcHggMTRweDtcbiAgLS1lcnJvci1yYWRpdXM6IDhweDtcbiAgLS1lcnJvci1zaXplOiAxNHB4O1xuICAtLWVycm9yLW1hcmdpbi1ib3R0b206IDEycHg7XG4gIC0tc3VjY2Vzcy1tYXgtd2lkdGg6IDMyMHB4O1xuICAtLXN1Y2Nlc3MtcGFkZGluZzogMTBweCAxNHB4O1xuICAtLXN1Y2Nlc3MtcmFkaXVzOiA4cHg7XG4gIC0tc3VjY2Vzcy1zaXplOiAxNHB4O1xuICAtLXN1Y2Nlc3MtbWFyZ2luLXRvcDogMTJweDtcbiAgLS1idG4tbWF4LXdpZHRoOiAzMjBweDtcbiAgLS1idG4tcGFkZGluZzogMTRweCAyNHB4O1xuICAtLWJ0bi1yYWRpdXM6IDEwcHg7XG4gIC0tYnRuLXNpemU6IDE2cHg7XG4gIC0tYnRuLXNlY29uZGFyeS1zaXplOiAxNXB4O1xuICAtLWJ0bi1vdXRsaW5lLXNpemU6IDE1cHg7XG4gIC0tYnRuLWxnLXBhZGRpbmc6IDE2cHggMjhweDtcbiAgLS1idG4tbGctc2l6ZTogMTZweDtcbiAgLS1idG4tc20tcGFkZGluZzogNnB4IDEycHg7XG4gIC0tYnRuLXNtLXNpemU6IDEzcHg7XG4gIC0tYnRuLWdob3N0LXBhZGRpbmc6IDhweCAxNnB4O1xuICAtLWJ0bi1naG9zdC1yYWRpdXM6IDhweDtcbiAgLS1idG4tZ2hvc3Qtc2l6ZTogMTRweDtcbiAgLS1saW5rLXNpemU6IDE0cHg7XG5cbiAgLyogTG9iYnkgU3BlY2lmaWMgKi9cbiAgLS1sb2JieS1oZWFkZXItbWFyZ2luLWJvdHRvbTogMjRweDtcbiAgLS1sb2JieS10aXRsZS1zaXplOiAyOHB4O1xuICAtLWxvYmJ5LXN1YnRpdGxlLXNpemU6IDE0cHg7XG4gIC0tdXNlci1zZWN0aW9uLW1heC13aWR0aDogMzIwcHg7XG4gIC0tdXNlci1zZWN0aW9uLXBhZGRpbmc6IDE2cHg7XG4gIC0tdXNlci1zZWN0aW9uLXJhZGl1czogMTJweDtcbiAgLS11c2VyLXNlY3Rpb24tbWFyZ2luLWJvdHRvbTogMjRweDtcbiAgLS11c2VyLWluZm8tbWFyZ2luLWJvdHRvbTogMTJweDtcbiAgLS11c2VyLWluZm8tcGFkZGluZy1ib3R0b206IDEycHg7XG4gIC0tdXNlcm5hbWUtc2l6ZTogMThweDtcbiAgLS1zdGF0cy1nYXA6IDEycHg7XG4gIC0tc3RhdC1sYWJlbC1zaXplOiAxMXB4O1xuICAtLXN0YXQtbGFiZWwtc3BhY2luZzogMC41cHg7XG4gIC0tc3RhdC12YWx1ZS1zaXplOiAyMHB4O1xuICAtLWxvYmJ5LWFjdGlvbnMtbWF4LXdpZHRoOiAzMjBweDtcbiAgLS1sb2JieS1hY3Rpb25zLWdhcDogMTJweDtcbiAgLS1sb2JieS1mb290ZXItbWF4LXdpZHRoOiAzMjBweDtcbiAgLS1sb2JieS1mb290ZXItbWFyZ2luLXRvcDogMjRweDtcbiAgLS1sb2JieS1mb290ZXItcGFkZGluZy10b3A6IDE2cHg7XG5cbiAgLyogVGhlbWUgQmFkZ2UgKi9cbiAgLS10aGVtZS1iYWRnZS1wYWRkaW5nOiA4cHggMTZweDtcbiAgLS10aGVtZS1iYWRnZS1yYWRpdXM6IDIwcHg7XG4gIC0tdGhlbWUtYmFkZ2UtZ2FwOiA4cHg7XG4gIC0tdGhlbWUtZG90LXNpemU6IDEycHg7XG4gIC0tdGhlbWUtbmFtZS1zaXplOiAxM3B4O1xuXG4gIC8qIFdhaXRpbmcgUm9vbSAqL1xuICAtLXdhaXRpbmctcm9vbS1wYWRkaW5nOiAxNnB4O1xuICAtLXdhaXRpbmctcm9vbS1wYWRkaW5nLXRvcDogY2FsYygxNnB4ICsgNDhweCk7XG4gIC0td2FpdGluZy1yb29tLWhlYWRlci1nYXA6IDEycHg7XG4gIC0td2FpdGluZy1yb29tLWhlYWRlci1tYXJnaW4tYm90dG9tOiAxNnB4O1xuICAtLXdhaXRpbmctcm9vbS10aXRsZS1zaXplOiAxOHB4O1xuICAtLXdhaXRpbmctcm9vbS1pbmZvLXBhZGRpbmc6IDE2cHg7XG4gIC0td2FpdGluZy1yb29tLWluZm8tZ2FwOiA4cHg7XG4gIC0td2FpdGluZy1yb29tLWluZm8tbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgLS13YWl0aW5nLXJvb20taW5mby1yYWRpdXM6IDEycHg7XG4gIC0tcm9vbS1jb2RlLWxhYmVsLXNpemU6IDEycHg7XG4gIC0tcm9vbS1jb2RlLWxhYmVsLXNwYWNpbmc6IDFweDtcbiAgLS1yb29tLWNvZGUtZ2FwOiA4cHg7XG4gIC0tcm9vbS1jb2RlLXNpemU6IDMycHg7XG4gIC0tcm9vbS1jb2RlLXNwYWNpbmc6IDZweDtcbiAgLS1yb29tLXRpbWVyLXNpemU6IDE2cHg7XG4gIC0tcm9vbS10aW1lci1nYXA6IDZweDtcbiAgLS1yb29tLXRpbWVyLWljb24tc2l6ZTogMTZweDsgLyogY29ycmVjdGVkIGZyb20gMXB4ICovXG4gIC0tcm9vbS1wbGF5ZXItY291bnQtc2l6ZTogMTRweDtcbiAgLS10ZWFtLXNsb3RzLWdhcDogMTJweDtcbiAgLS10ZWFtLXNsb3RzLW1hcmdpbi1ib3R0b206IDE2cHg7XG4gIC0tdGVhbS1zZWN0aW9uLXBhZGRpbmc6IDEycHg7XG4gIC0tdGVhbS1zZWN0aW9uLWdhcDogOHB4O1xuICAtLXRlYW0tc2VjdGlvbi1yYWRpdXM6IDEycHg7XG4gIC0tdGVhbS1iYWRnZS1zaXplOiAxMnB4O1xuICAtLXRlYW0tYmFkZ2UtcGFkZGluZzogNHB4IDEycHg7XG4gIC0tdGVhbS1iYWRnZS1yYWRpdXM6IDk5OTlweDtcbiAgLS10ZWFtLWJhZGdlLXNwYWNpbmc6IDAuNXB4O1xuICAtLXBsYXllci1zbG90LXBhZGRpbmc6IDhweDtcbiAgLS1wbGF5ZXItc2xvdC1nYXA6IDhweDtcbiAgLS1wbGF5ZXItc2xvdC1yYWRpdXM6IDhweDtcbiAgLS1zbG90LWF2YXRhci1zaXplOiAzNnB4O1xuICAtLXNsb3QtYXZhdGFyLWZvbnQtc2l6ZTogMTZweDtcbiAgLS1hZG1pbi1jcm93bi10b3A6IC00cHg7XG4gIC0tYWRtaW4tY3Jvd24tcmlnaHQ6IC00cHg7XG4gIC0tYWRtaW4tY3Jvd24tc2l6ZTogMTJweDtcbiAgLS1zbG90LXBsYXllci1uYW1lLXNpemU6IDEzcHg7XG4gIC0tc2xvdC1wbGF5ZXItbmFtZS1lbXB0eS1zaXplOiAxMnB4O1xuICAtLWFkbWluLWJhZGdlLXNpemU6IDEwcHg7XG4gIC0tY29udHJvbHMtZ2FwOiA4cHg7XG4gIC0tY29udHJvbHMtcGFkZGluZy10b3A6IDhweDtcbiAgLS1jb250cm9scy1ib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tYXBwLXN1cmZhY2UtYm9yZGVyKTtcblxuICAvKiBUcnVtcCBEZWNsYXJlciAqL1xuICAtLXRydW1wLWRlY2xhcmVyLXBhZGRpbmc6IDhweCAxNnB4O1xuICAtLXRydW1wLWRlY2xhcmVyLXJhZGl1czogMjBweDtcbiAgLS10cnVtcC1kZWNsYXJlci1zaXplOiAwLjlyZW07XG4gIC0tdHJ1bXAtZGVjbGFyZXItbGFiZWwtc2l6ZTogMXJlbTtcbiAgLS10cnVtcC1kZWNsYXJlci1iYWRnZS10b3A6IC00cHg7XG4gIC0tdHJ1bXAtZGVjbGFyZXItYmFkZ2UtcmlnaHQ6IC00cHg7XG4gIC0tdHJ1bXAtZGVjbGFyZXItYmFkZ2Utc2l6ZTogMC44cmVtO1xuICAtLXRydW1wLWRlY2xhcmVyLXRleHQtc2l6ZTogMC43cmVtO1xuXG4gIC8qIEpvaW4gUm9vbSAqL1xuICAtLWpvaW4tcm9vbS1nYXA6IDEwcHg7XG4gIC0tam9pbi1yb29tLXRpdGxlLXNpemU6IDE4cHg7XG4gIC0tam9pbi1yb29tLWNvZGUtaW5wdXQtZ2FwOiA4cHg7XG4gIC0tam9pbi1yb29tLWxhYmVsLXNpemU6IDEzcHg7XG4gIC0tam9pbi1yb29tLWNvZGUtZmllbGQtc2l6ZTogMThweDtcbiAgLS1qb2luLXJvb20tY29kZS1maWVsZC1zcGFjaW5nOiA0cHg7XG4gIC0tam9pbi1yb29tLWNvZGUtZmllbGQtbWluLWhlaWdodDogNDhweDtcbiAgLS1qb2luLXJvb20tY29kZS1maWVsZC1wYWRkaW5nOiAxMnB4O1xuICAtLWpvaW4tcm9vbS1jb2RlLWZpZWxkLXJhZGl1czogOHB4O1xuICAtLWpvaW4tcm9vbS1idG4tbWluLWhlaWdodDogNDhweDtcbiAgLS1qb2luLXJvb20tYnRuLXNpemU6IDE2cHg7XG4gIC0tam9pbi1yb29tLWJ0bi1yYWRpdXM6IDhweDtcbiAgLS1qb2luLXJvb20tZXJyb3Itc2l6ZTogMTJweDtcbiAgLS1qb2luLXJvb20tZXJyb3ItcGFkZGluZzogOHB4IDEycHg7XG4gIC0tam9pbi1yb29tLWVycm9yLXJhZGl1czogNnB4O1xuICAtLWpvaW4tcm9vbS1kaXZpZGVyLWdhcDogMTJweDtcbiAgLS1qb2luLXJvb20tZGl2aWRlci1zaXplOiAxM3B4O1xuICAtLWpvaW4tcm9vbS1yb29tcy1nYXA6IDhweDtcbiAgLS1qb2luLXJvb20tcm9vbXMtdGl0bGUtc2l6ZTogMTRweDtcbiAgLS1qb2luLXJvb20tZW1wdHktc2l6ZTogMTRweDtcbiAgLS1qb2luLXJvb20tZW1wdHktcGFkZGluZzogMTZweDtcbiAgLS1qb2luLXJvb20tZW1wdHktcmFkaXVzOiA4cHg7XG4gIC0tam9pbi1yb29tLXJvb20tY2FyZC1nYXA6IDEycHg7XG4gIC0tam9pbi1yb29tLXJvb20tY2FyZC1wYWRkaW5nOiAxMnB4IDE2cHg7XG4gIC0tam9pbi1yb29tLXJvb20tY2FyZC1yYWRpdXM6IDEwcHg7XG4gIC0tam9pbi1yb29tLXJvb20tY2FyZC1taW4taGVpZ2h0OiA1NnB4O1xuICAtLWpvaW4tcm9vbS1yb29tLWNhcmQtYmFyLXdpZHRoOiAzcHg7XG4gIC0tam9pbi1yb29tLXJvb20tY29kZS1zaXplOiAxNnB4O1xuICAtLWpvaW4tcm9vbS1yb29tLWNvZGUtc3BhY2luZzogM3B4O1xuICAtLWpvaW4tcm9vbS1yb29tLWNvZGUtcGFkZGluZzogNHB4IDhweDtcbiAgLS1qb2luLXJvb20tcm9vbS1jb2RlLXJhZGl1czogNnB4O1xuICAtLWpvaW4tcm9vbS1yb29tLWNvZGUtbWluLXdpZHRoOiA1NnB4O1xuICAtLWpvaW4tcm9vbS1yb29tLWhvc3Qtc2l6ZTogMTRweDtcbiAgLS1qb2luLXJvb20tcm9vbS1wbGF5ZXJzLXNpemU6IDEycHg7XG4gIC0tam9pbi1yb29tLXJvb20tcGxheWVycy1wYWRkaW5nOiA0cHggMTBweDtcbiAgLS1qb2luLXJvb20tcm9vbS1wbGF5ZXJzLXJhZGl1czogOTk5OXB4O1xuXG4gIC8qIE9mZmxpbmUgR2FtZSAqL1xuICAtLW9mZmxpbmUtaW5kaWNhdG9yLXRvcDogOHB4O1xuICAtLW9mZmxpbmUtaW5kaWNhdG9yLXJpZ2h0OiA4cHg7XG4gIC0tb2ZmbGluZS1pbmRpY2F0b3ItcGFkZGluZzogNHB4IDhweDtcbiAgLS1vZmZsaW5lLWluZGljYXRvci1yYWRpdXM6IDhweDtcbiAgLS1vZmZsaW5lLWluZGljYXRvci1zaXplOiAxMXB4O1xuICAtLW9mZmxpbmUtaWNvbi1zaXplOiAxNHB4O1xuICAtLXJldHVybi1idG4tYm90dG9tOiA4cHg7XG4gIC0tcmV0dXJuLWJ0bi1yaWdodDogOHB4O1xuICAtLXJldHVybi1idG4tcGFkZGluZzogOHB4IDE2cHg7XG4gIC0tcmV0dXJuLWJ0bi1yYWRpdXM6IDhweDtcbiAgLS1yZXR1cm4tYnRuLXNpemU6IDEzcHg7XG5cbiAgLyogR2FtZSBSb29tIChsZWdhY3kpICovXG4gIC0tZ2FtZS1yb29tLXBhZGRpbmc6IDMycHg7XG4gIC0tZ2FtZS1yb29tLXJhZGl1czogMTZweDtcbiAgLS1nYW1lLXJvb20tbWF4LXdpZHRoOiAzMjBweDtcbiAgLS1nYW1lLXJvb20tdGl0bGUtc2l6ZTogMjBweDtcbiAgLS1nYW1lLXJvb20tZGVzYy1zaXplOiAxNHB4O1xuXG4gIC8qIFJlLWRlYWxpbmcgKi9cbiAgLS1yZWRlYWwtc2l6ZTogMTZweDtcblxuICAvKiBSZWNvbm5lY3Rpb24gKi9cbiAgLS1yZWNvbm5lY3Rpb24tcGFkZGluZzogMzJweDtcbiAgLS1yZWNvbm5lY3Rpb24tcmFkaXVzOiAxNnB4O1xuICAtLXJlY29ubmVjdGlvbi1tYXgtd2lkdGg6IDMyMHB4O1xuICAtLXJlY29ubmVjdGlvbi10aXRsZS1zaXplOiAxOHB4O1xuICAtLXJlY29ubmVjdGlvbi1jb3VudGRvd24tc2l6ZTogMjRweDtcbiAgLS1yZWNvbm5lY3Rpb24taGludC1zaXplOiAxNHB4O1xuICAtLXJlY29ubmVjdGlvbi1zcGlubmVyLXNpemU6IDQ4cHg7XG4gIC0tcmVjb25uZWN0aW9uLXNwaW5uZXItYm9yZGVyOiA0cHg7XG4gIC0tcmVjb25uZWN0aW9uLWNoZWNrLXNpemU6IDQ4cHg7XG4gIC0tcmVjb25uZWN0aW9uLWNoZWNrLWljb24tc2l6ZTogMjRweDtcblxuICAvKiA9PT09PSBMYW5kc2NhcGUgU2l6ZSBPdmVycmlkZXMgPT09PT0gKi9cbiAgQG1lZGlhIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKSBhbmQgKG1heC1oZWlnaHQ6IDUwMHB4KSB7XG4gICAgLyogRmVsdCBHcmlkICovXG4gICAgLS1mZWx0LWdhcDogMnB4O1xuICAgIC0tZmVsdC1wYWRkaW5nOiAycHg7XG4gICAgLS1mZWx0LXJvd3M6IDE1JSA2MCUgMjUlO1xuICAgIC0tZmVsdC1jb2xzOiAxZnIgM2ZyIDFmcjtcblxuICAgIC8qIENhcmRzICovXG4gICAgLS1jYXJkLXdpZHRoOiA1MHB4O1xuICAgIC0tY2FyZC1oZWlnaHQ6IDcwcHg7XG4gICAgLS1jYXJkLXJhbmstc2l6ZTogMjBweDtcbiAgICAtLWNhcmQtc3VpdC1zaXplOiAyMHB4O1xuICAgIC0tY2FyZC1wbGF5ZXItbGFiZWwtc2l6ZTogNnB4O1xuICAgIC0tY2FyZC1wbGF5ZXItbGFiZWwtcGFkZGluZzogMXB4IDJweDtcbiAgICAtLWhhbmQtZ2FwOiAxcHg7XG4gICAgLS1oYW5kLXBhZGRpbmc6IDJweCAzcHggNHB4O1xuXG4gICAgLyogUGxheWVyIEluZm8g4oCUIGxhcmdlciB0byBmaWxsIHRoZSBzcGFjZSBpbiBsYW5kc2NhcGUgKi9cbiAgICAtLXBsYXllci1pbmZvLW1pbi13aWR0aDogNjBweDtcbiAgICAtLXBsYXllci1pbmZvLXBhZGRpbmc6IDRweCA2cHg7XG4gICAgLS1wbGF5ZXItaW5mby1nYXA6IDJweDtcbiAgICAtLWF2YXRhci1zaXplOiAyOHB4O1xuICAgIC0tYXZhdGFyLWZvbnQtc2l6ZTogMTNweDtcbiAgICAtLWFjdGl2ZS1yaW5nLWluc2V0OiAtM3B4O1xuICAgIC0tYWN0aXZlLXJpbmctd2lkdGg6IDJweDtcbiAgICAtLWNyb3duLWljb24tdG9wOiAtNnB4O1xuICAgIC0tY3Jvd24taWNvbi1zaXplOiAxMHB4O1xuICAgIC0tcGxheWVyLW5hbWUtc2l6ZTogMTBweDtcbiAgICAtLWNhcmQtY291bnQtc2l6ZTogOHB4O1xuXG4gICAgLyogVGVhbSBMYWJlbHMgKi9cbiAgICAtLXRlYW0tbGFiZWwtc2l6ZTogOHB4O1xuICAgIC0tdGVhbS1sYWJlbC1wYWRkaW5nOiAycHggNnB4O1xuXG4gICAgLyogVXNlciBEaXNwbGF5ICovXG4gICAgLS11c2VyLWRpc3BsYXktcGxheWVyLW1pbi13aWR0aDogNjBweDtcbiAgICAtLXVzZXItZGlzcGxheS1wbGF5ZXItcGFkZGluZzogNHB4IDZweDtcbiAgICAtLXVzZXItZGlzcGxheS1uYW1lLXNpemU6IDEwcHg7XG4gICAgLS11c2VyLWRpc3BsYXktdGVhbS1sYWJlbC1zaXplOiA4cHg7XG4gICAgLS11c2VyLWRpc3BsYXktdGVhbS1sYWJlbC1wYWRkaW5nOiAycHggNnB4O1xuICAgIC0tdXNlci1kaXNwbGF5LWNhcmQtY291bnQtc2l6ZTogOHB4O1xuXG4gICAgLyogQ29ybmVyIENlbGxzICovXG4gICAgLS10cnVtcC1jZWxsLW1pbi13aWR0aDogMjhweDtcbiAgICAtLXRydW1wLWNlbGwtcGFkZGluZzogMnB4O1xuICAgIC0tdHJ1bXAtY2VsbC1sYWJlbC1zaXplOiA2cHg7XG4gICAgLS10cnVtcC1jZWxsLWxhYmVsLXNwYWNpbmc6IDA7XG4gICAgLS10cnVtcC1jZWxsLXZhbHVlLXNpemU6IDE0cHg7XG4gICAgLS1zY29yZXMtY2VsbC1taW4td2lkdGg6IDM2cHg7XG4gICAgLS1zY29yZXMtY2VsbC1wYWRkaW5nOiAycHg7XG4gICAgLS1zY29yZXMtY2VsbC1nYXA6IDFweDtcbiAgICAtLXNjb3Jlcy1jZWxsLWxhYmVsLXNpemU6IDZweDtcbiAgICAtLXNjb3Jlcy1jZWxsLWxhYmVsLXNwYWNpbmc6IDA7XG4gICAgLS10ZWFtLXNjb3JlLXNpemU6IDExcHg7XG4gICAgLS1jcm93bi1jZWxsLW5hbWUtc2l6ZTogN3B4O1xuICAgIC0tdHJ1bXAtZGVjbGFyZXItY2VsbC1zaXplOiA3cHg7XG4gICAgLS10cmljay1jZWxsLW1pbi13aWR0aDogMjhweDtcbiAgICAtLXRyaWNrLWNlbGwtcGFkZGluZzogMnB4O1xuICAgIC0tdHJpY2stdmFsdWUtc2l6ZTogMTFweDtcbiAgICAtLXRyaWNrLWxhYmVsLXNpemU6IDZweDtcbiAgICAtLXJvdW5kLXNjb3JlLXNpemU6IDlweDtcblxuICAgIC8qIFRyaWNrIEFyZWEgKi9cbiAgICAtLXRyaWNrLWFyZWEtcmFkaXVzOiA2cHg7XG4gICAgLS10cmljay1wbGFjZWhvbGRlci1zaXplOiA5cHg7XG4gICAgLS10cmljay1jYXJkLXNsb3QtZ2FwOiAycHg7XG4gICAgLS10cmljay1wb3NpdGlvbi1vZmZzZXQ6IDglO1xuXG4gICAgLyogTWVudSAqL1xuICAgIC0tbWVudS1pY29uLXNpemU6IDE4cHg7XG4gICAgLS1tZW51LXRvZ2dsZS1idG4taWNvbi1zaXplOiAxOHB4O1xuXG4gICAgLyogVHJ1bXAgU2VsZWN0b3IgKi9cbiAgICAtLXRydW1wLWNhcmQtd2lkdGg6IDQ4cHg7XG4gICAgLS10cnVtcC1jYXJkLWhlaWdodDogNjRweDtcbiAgICAtLXRydW1wLWNhcmQtc3VpdC1zaXplOiAxOHB4O1xuICAgIC0tdHJ1bXAtY2FyZC1yYW5rLXNpemU6IDEycHg7XG4gICAgLS10cnVtcC1zdWl0LWdyaWQtZ2FwOiA0cHg7XG4gICAgLS10cnVtcC1zdWl0LWJ0bi1oZWlnaHQ6IDY0cHg7XG4gICAgLS10cnVtcC1zdWl0LWJ0bi1wYWRkaW5nOiAxMnB4O1xuICAgIC0tdHJ1bXAtc3VpdC1zeW1ib2wtc2l6ZTogMjRweDtcbiAgICAtLXRydW1wLXN1aXQtbmFtZS1zaXplOiAxMXB4O1xuICAgIC0tdHJ1bXAtc2VsZWN0b3ItZ2FwOiA4cHg7XG5cbiAgICAvKiBNb2RhbCAqL1xuICAgIC0tbW9kYWwtbWF4LXdpZHRoOiBtaW4oOTV2dywgNzAwcHgpO1xuICAgIC0tbW9kYWwtbWF4LWhlaWdodDogOTV2aDtcbiAgICAtLW1vZGFsLXJhZGl1czogMTJweDtcbiAgICAtLW1vZGFsLWNvbnRlbnQtcGFkZGluZzogMTJweDtcblxuICAgIC8qIENvbnRleHQgTWVudSAqL1xuICAgIC0tY29udGV4dC1tZW51LWl0ZW0tcGFkZGluZzogMTJweDtcbiAgICAtLWNvbnRleHQtbWVudS1pY29uLXNpemU6IDE2cHg7XG4gICAgLS1jb250ZXh0LW1lbnUtbGFiZWwtc2l6ZTogMTRweDtcblxuICAgIC8qIFJvdW5kIEVuZCAqL1xuICAgIC0tcm91bmQtZW5kLWdhcDogMTJweDtcbiAgICAtLXJvdW5kLWVuZC10aXRsZS1zaXplOiAxNnB4O1xuICAgIC0tcm91bmQtZW5kLXJlc3VsdC1zaXplOiAxNHB4O1xuICAgIC0tcm91bmQtZW5kLXBvaW50cy1zaXplOiAxOHB4O1xuICAgIC0tcm91bmQtZW5kLXRyaWNrLWdhcDogOHB4O1xuICAgIC0tcm91bmQtZW5kLXRyaWNrLXBhZGRpbmc6IDhweDtcbiAgICAtLXJvdW5kLWVuZC10cmljay1sYWJlbC1zaXplOiAxMHB4O1xuICAgIC0tcm91bmQtZW5kLXRyaWNrLXZhbHVlLXNpemU6IDEzcHg7XG4gICAgLS1yb3VuZC1lbmQtc2NvcmUtcGFkZGluZzogOHB4O1xuICAgIC0tcm91bmQtZW5kLXNjb3JlLWxhYmVsLXNpemU6IDEwcHg7XG4gICAgLS1yb3VuZC1lbmQtc2NvcmUtdmFsdWUtc2l6ZTogMTRweDtcbiAgICAtLXJvdW5kLWVuZC1jb250aW51ZS1idG4tcGFkZGluZzogMTBweCAyNHB4O1xuICAgIC0tcm91bmQtZW5kLWNvbnRpbnVlLWJ0bi1zaXplOiAxNHB4O1xuXG4gICAgLyogVmljdG9yeSAqL1xuICAgIC0tdmljdG9yeS1nYXA6IDEycHg7XG4gICAgLS12aWN0b3J5LWljb24tc2l6ZTogNDBweDtcbiAgICAtLXZpY3RvcnktdGl0bGUtc2l6ZTogMjBweDtcbiAgICAtLXZpY3Rvcnktd2lubmVyLXNpemU6IDE0cHg7XG4gICAgLS12aWN0b3J5LXNjb3Jlcy10aXRsZS1zaXplOiAxNHB4O1xuICAgIC0tdmljdG9yeS1zY29yZS1wYWRkaW5nOiAxMHB4O1xuICAgIC0tdmljdG9yeS1zY29yZS1sYWJlbC1zaXplOiAxMXB4O1xuICAgIC0tdmljdG9yeS1zY29yZS12YWx1ZS1zaXplOiAyMnB4O1xuICAgIC0tdmljdG9yeS1zY29yZS11bml0LXNpemU6IDEwcHg7XG4gICAgLS12aWN0b3J5LW5ldy1nYW1lLWJ0bi1wYWRkaW5nOiAxMHB4IDIwcHg7XG4gICAgLS12aWN0b3J5LW5ldy1nYW1lLWJ0bi1zaXplOiAxNHB4O1xuICAgIC0tdmljdG9yeS1sb2JieS1idG4tcGFkZGluZzogMTBweCAyMHB4O1xuICAgIC0tdmljdG9yeS1sb2JieS1idG4tc2l6ZTogMTNweDtcblxuICAgIC8qIFBsYXllZCBDYXJkcyAqL1xuICAgIC0tcGxheWVkLWNhcmRzLWdhcDogMTJweDtcbiAgICAtLXBsYXllZC1jYXJkcy10aXRsZS1zaXplOiAxNnB4O1xuICAgIC0tcGxheWVkLWNhcmRzLXRyaWNrLXBhZGRpbmc6IDhweDtcbiAgICAtLXRyaWNrLWxhYmVsLXNpemU6IDEycHg7XG4gICAgLS10cmljay1zdGF0dXMtc2l6ZTogMTBweDtcbiAgICAtLWNhcmRzLWdyaWQtZ2FwOiA2cHg7XG4gICAgLS1wbGF5ZWQtY2FyZC1wYWRkaW5nOiA2cHg7XG4gICAgLS1wbGF5ZWQtY2FyZC1taW4taGVpZ2h0OiA0OHB4O1xuICAgIC0tcGxheWVkLWNhcmQtdmFsdWUtc2l6ZTogMTNweDtcbiAgICAtLXBsYXllZC1jYXJkLXBsYXllci1zaXplOiA5cHg7XG4gICAgLS1lbXB0eS1zdGF0ZS1taW4taGVpZ2h0OiAxMDBweDtcbiAgICAtLWVtcHR5LXN0YXRlLXRleHQtc2l6ZTogMTNweDtcbiAgICAtLWVtcHR5LXN0YXRlLWhpbnQtc2l6ZTogMTFweDtcblxuICAgIC8qIFRoZW1lIFNlbGVjdG9yICovXG4gICAgLS10aGVtZS1zZWxlY3Rvci1wYW5lbC1tYXgtd2lkdGg6IG1pbig5MHZ3LCA1MDBweCk7XG4gICAgLS10aGVtZS1zZWxlY3Rvci1wYW5lbC1wYWRkaW5nOiAxNnB4O1xuICAgIC0tdGhlbWUtc2VsZWN0b3ItdGl0bGUtc2l6ZTogMTVweDtcbiAgICAtLXRoZW1lLXNlbGVjdG9yLWdyaWQtZ2FwOiA4cHg7XG4gICAgLS10aGVtZS1vcHRpb24tcGFkZGluZzogMTBweCA4cHg7XG4gICAgLS10aGVtZS1vcHRpb24tcHJldmlldy1zaXplOiAzMnB4O1xuICAgIC0tdGhlbWUtb3B0aW9uLXByZXZpZXctdGV4dC1zaXplOiAxNHB4O1xuICAgIC0tdGhlbWUtb3B0aW9uLW5hbWUtc2l6ZTogMTJweDtcbiAgICAtLXRoZW1lLW9wdGlvbi1kZXNjLXNpemU6IDEwcHg7XG4gICAgLS10aGVtZS1vcHRpb24tYmFkZ2Utc2l6ZTogOXB4O1xuXG4gICAgLyogUm9vbSBDb2RlIE1vZGFsICovXG4gICAgLS1yb29tLWNvZGUtbW9kYWwtcGFkZGluZzogMTZweDtcbiAgICAtLXJvb20tY29kZS1tb2RhbC1tYXgtd2lkdGg6IDMwMHB4O1xuICAgIC0tcm9vbS1jb2RlLWRpc3BsYXktc2l6ZTogMjhweDtcbiAgICAtLXJvb20tY29kZS1kaXNwbGF5LXNwYWNpbmc6IDVweDtcbiAgICAtLXJvb20tY29kZS1kaXNwbGF5LXBhZGRpbmc6IDEycHggMTZweDtcbiAgICAtLXJvb20tY29kZS13YWl0aW5nLXNpemU6IDEycHg7XG5cbiAgICAvKiBBcHAgSGVhZGVyICovXG4gICAgLS1hcHAtaGVhZGVyLWhlaWdodDogNDBweDtcbiAgICAtLWFwcC1oZWFkZXItYmFjay1zaXplOiAzMnB4O1xuICAgIC0tYXBwLWhlYWRlci1iYWNrLWljb24tc2l6ZTogMjBweDtcbiAgICAtLWFwcC1oZWFkZXItdGl0bGUtc2l6ZTogMTRweDtcblxuICAgIC8qIExvZ2luIC8gTG9iYnkgKi9cbiAgICAtLXZpZXctcGFkZGluZzogNTVweCAxMHB4IDE2cHggMTBweDtcbiAgICAtLWNvbnRhaW5lci1tYXgtd2lkdGg6IG1pbig4NXZ3LCA2NTBweCk7XG4gICAgLS1jb250YWluZXItcGFkZGluZzogMTZweCAyMHB4O1xuICAgIC0tY29udGFpbmVyLXBhZGRpbmctYm90dG9tOiAxNnB4O1xuICAgIC0tYXBwLXRpdGxlLXNpemU6IDIycHg7XG4gICAgLS1hcHAtc3VidGl0bGUtc2l6ZTogMTJweDtcbiAgICAtLWZvcm0tZ3JvdXAtZ2FwOiA4cHg7XG4gICAgLS1mb3JtLWlucHV0LXBhZGRpbmc6IDEwcHggMTJweDtcbiAgICAtLWZvcm0taW5wdXQtc2l6ZTogMTRweDtcbiAgICAtLWVycm9yLXBhZGRpbmc6IDhweCAxMnB4O1xuICAgIC0tZXJyb3Itc2l6ZTogMTJweDtcbiAgICAtLXN1Y2Nlc3MtcGFkZGluZzogOHB4IDEycHg7XG4gICAgLS1zdWNjZXNzLXNpemU6IDEycHg7XG4gICAgLS1idG4tcGFkZGluZzogMTBweCAxNnB4O1xuICAgIC0tYnRuLXNpemU6IDE0cHg7XG4gICAgLS1idG4tc2Vjb25kYXJ5LXNpemU6IDEzcHg7XG4gICAgLS1idG4tb3V0bGluZS1zaXplOiAxM3B4O1xuICAgIC0tYnRuLWxnLXBhZGRpbmc6IDEycHggMjBweDtcbiAgICAtLWJ0bi1sZy1zaXplOiAxNHB4O1xuICAgIC0tbGluay1zaXplOiAxMnB4O1xuXG4gICAgLyogTG9iYnkgKi9cbiAgICAtLWxvYmJ5LWhlYWRlci1tYXJnaW4tYm90dG9tOiAwO1xuICAgIC0tbG9iYnktdGl0bGUtc2l6ZTogMjJweDtcbiAgICAtLWxvYmJ5LXN1YnRpdGxlLXNpemU6IDExcHg7XG4gICAgLS11c2VyLXNlY3Rpb24tcGFkZGluZzogMTJweDtcbiAgICAtLXVzZXItc2VjdGlvbi1tYXJnaW4tYm90dG9tOiAwO1xuICAgIC0tdXNlci1pbmZvLW1hcmdpbi1ib3R0b206IDhweDtcbiAgICAtLXVzZXItaW5mby1wYWRkaW5nLWJvdHRvbTogOHB4O1xuICAgIC0tdXNlcm5hbWUtc2l6ZTogMTVweDtcbiAgICAtLXN0YXRzLWdhcDogOHB4O1xuICAgIC0tc3RhdC1sYWJlbC1zaXplOiA5cHg7XG4gICAgLS1zdGF0LXZhbHVlLXNpemU6IDE2cHg7XG4gICAgLS1sb2JieS1mb290ZXItbWFyZ2luLXRvcDogOHB4O1xuICAgIC0tbG9iYnktZm9vdGVyLXBhZGRpbmctdG9wOiA4cHg7XG5cbiAgICAvKiBUaGVtZSBCYWRnZSAqL1xuICAgIC0tdGhlbWUtYmFkZ2UtcGFkZGluZzogNnB4IDEycHg7XG4gICAgLS10aGVtZS1kb3Qtc2l6ZTogMTBweDtcbiAgICAtLXRoZW1lLW5hbWUtc2l6ZTogMTFweDtcblxuICAgIC8qIFdhaXRpbmcgUm9vbSAqL1xuICAgIC0td2FpdGluZy1yb29tLXBhZGRpbmc6IDU1cHggMTZweCAxNnB4IDE2cHg7XG4gICAgLS13YWl0aW5nLXJvb20taGVhZGVyLWdhcDogOHB4O1xuICAgIC0td2FpdGluZy1yb29tLXRpdGxlLXNpemU6IDE0cHg7XG4gICAgLS13YWl0aW5nLXJvb20taW5mby1wYWRkaW5nOiA4cHggMTJweDtcbiAgICAtLXdhaXRpbmctcm9vbS1pbmZvLWdhcDogNnB4O1xuICAgIC0td2FpdGluZy1yb29tLWluZm8tbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgIC0tcm9vbS1jb2RlLWxhYmVsLXNpemU6IDlweDtcbiAgICAtLXJvb20tY29kZS1zaXplOiAyMHB4O1xuICAgIC0tcm9vbS1jb2RlLXNwYWNpbmc6IDNweDtcbiAgICAtLXJvb20tdGltZXItc2l6ZTogMTNweDtcbiAgICAtLXJvb20tdGltZXItZ2FwOiA0cHg7XG4gICAgLS1yb29tLXRpbWVyLWljb24tc2l6ZTogMTRweDtcbiAgICAtLXJvb20tcGxheWVyLWNvdW50LXNpemU6IDEycHg7XG4gICAgLS10ZWFtLXNsb3RzLWdhcDogOHB4O1xuICAgIC0tdGVhbS1zbG90cy1tYXJnaW4tYm90dG9tOiA4cHg7XG4gICAgLS10ZWFtLXNlY3Rpb24tcGFkZGluZzogOHB4O1xuICAgIC0tdGVhbS1zZWN0aW9uLWdhcDogNnB4O1xuICAgIC0tdGVhbS1iYWRnZS1zaXplOiA5cHg7XG4gICAgLS10ZWFtLWJhZGdlLXBhZGRpbmc6IDJweCA4cHg7XG4gICAgLS1wbGF5ZXItc2xvdC1wYWRkaW5nOiA2cHg7XG4gICAgLS1wbGF5ZXItc2xvdC1nYXA6IDZweDtcbiAgICAtLXNsb3QtYXZhdGFyLXNpemU6IDI4cHg7XG4gICAgLS1zbG90LWF2YXRhci1mb250LXNpemU6IDEycHg7XG4gICAgLS1zbG90LXBsYXllci1uYW1lLXNpemU6IDEwcHg7XG4gICAgLS1zbG90LXBsYXllci1uYW1lLWVtcHR5LXNpemU6IDEwcHg7XG4gICAgLS1hZG1pbi1iYWRnZS1zaXplOiA5cHg7XG4gICAgLS1hZG1pbi1jcm93bi1zaXplOiAxMHB4O1xuICAgIC0tY29udHJvbHMtZ2FwOiA2cHg7XG4gICAgLS1jb250cm9scy1wYWRkaW5nLXRvcDogNnB4O1xuXG4gICAgLyogVHJ1bXAgRGVjbGFyZXIgKi9cbiAgICAtLXRydW1wLWRlY2xhcmVyLXBhZGRpbmc6IDRweCAxMHB4O1xuICAgIC0tdHJ1bXAtZGVjbGFyZXItc2l6ZTogMC43NXJlbTtcbiAgICAtLXRydW1wLWRlY2xhcmVyLWxhYmVsLXNpemU6IDAuOHJlbTtcbiAgICAtLXRydW1wLWRlY2xhcmVyLWJhZGdlLXNpemU6IDAuOHJlbTtcbiAgICAtLXRydW1wLWRlY2xhcmVyLXRleHQtc2l6ZTogMC43cmVtO1xuXG4gICAgLyogSm9pbiBSb29tICovXG4gICAgLS1qb2luLXJvb20tZ2FwOiA4cHg7XG4gICAgLS1qb2luLXJvb20tdGl0bGUtc2l6ZTogMTVweDtcbiAgICAtLWpvaW4tcm9vbS1sYWJlbC1zaXplOiAxMnB4O1xuICAgIC0tam9pbi1yb29tLWNvZGUtZmllbGQtc2l6ZTogMTVweDtcbiAgICAtLWpvaW4tcm9vbS1jb2RlLWZpZWxkLXNwYWNpbmc6IDNweDtcbiAgICAtLWpvaW4tcm9vbS1jb2RlLWZpZWxkLW1pbi1oZWlnaHQ6IDQwcHg7XG4gICAgLS1qb2luLXJvb20tY29kZS1maWVsZC1wYWRkaW5nOiA4cHg7XG4gICAgLS1qb2luLXJvb20tYnRuLW1pbi1oZWlnaHQ6IDQwcHg7XG4gICAgLS1qb2luLXJvb20tYnRuLXNpemU6IDE0cHg7XG4gICAgLS1qb2luLXJvb20tZXJyb3Itc2l6ZTogMTFweDtcbiAgICAtLWpvaW4tcm9vbS1lcnJvci1wYWRkaW5nOiA2cHggMTBweDtcbiAgICAtLWpvaW4tcm9vbS1kaXZpZGVyLWdhcDogOHB4O1xuICAgIC0tam9pbi1yb29tLWRpdmlkZXItc2l6ZTogMTFweDtcbiAgICAtLWpvaW4tcm9vbS1yb29tcy1nYXA6IDZweDtcbiAgICAtLWpvaW4tcm9vbS1yb29tcy10aXRsZS1zaXplOiAxMnB4O1xuICAgIC0tam9pbi1yb29tLWVtcHR5LXNpemU6IDEycHg7XG4gICAgLS1qb2luLXJvb20tZW1wdHktcGFkZGluZzogMTJweDtcbiAgICAtLWpvaW4tcm9vbS1yb29tLWNhcmQtZ2FwOiA4cHg7XG4gICAgLS1qb2luLXJvb20tcm9vbS1jYXJkLXBhZGRpbmc6IDhweCAxMnB4O1xuICAgIC0tam9pbi1yb29tLXJvb20tY2FyZC1yYWRpdXM6IDhweDtcbiAgICAtLWpvaW4tcm9vbS1yb29tLWNhcmQtbWluLWhlaWdodDogNDhweDtcbiAgICAtLWpvaW4tcm9vbS1yb29tLWNvZGUtc2l6ZTogMTRweDtcbiAgICAtLWpvaW4tcm9vbS1yb29tLWNvZGUtc3BhY2luZzogMnB4O1xuICAgIC0tam9pbi1yb29tLXJvb20tY29kZS1wYWRkaW5nOiAzcHggNnB4O1xuICAgIC0tam9pbi1yb29tLXJvb20tY29kZS1taW4td2lkdGg6IDQ4cHg7XG4gICAgLS1qb2luLXJvb20tcm9vbS1ob3N0LXNpemU6IDEycHg7XG4gICAgLS1qb2luLXJvb20tcm9vbS1wbGF5ZXJzLXNpemU6IDExcHg7XG4gICAgLS1qb2luLXJvb20tcm9vbS1wbGF5ZXJzLXBhZGRpbmc6IDNweCA4cHg7XG5cbiAgICAvKiBPZmZsaW5lICovXG4gICAgLS1vZmZsaW5lLWluZGljYXRvci1zaXplOiAxMHB4O1xuICAgIC0tb2ZmbGluZS1pY29uLXNpemU6IDEycHg7XG4gICAgLS1yZXR1cm4tYnRuLXBhZGRpbmc6IDZweCAxMnB4O1xuICAgIC0tcmV0dXJuLWJ0bi1zaXplOiAxMXB4O1xuXG4gICAgLyogR2FtZSBSb29tICovXG4gICAgLS1nYW1lLXJvb20tcGFkZGluZzogMjBweDtcbiAgICAtLWdhbWUtcm9vbS10aXRsZS1zaXplOiAxNnB4O1xuICAgIC0tZ2FtZS1yb29tLWRlc2Mtc2l6ZTogMTJweDtcblxuICAgIC8qIFJlLWRlYWxpbmcgKi9cbiAgICAtLXJlZGVhbC1zaXplOiAxMnB4O1xuXG4gICAgLyogUmVjb25uZWN0aW9uICovXG4gICAgLS1yZWNvbm5lY3Rpb24tcGFkZGluZzogMjBweDtcbiAgICAtLXJlY29ubmVjdGlvbi10aXRsZS1zaXplOiAxNXB4O1xuICAgIC0tcmVjb25uZWN0aW9uLWNvdW50ZG93bi1zaXplOiAyMHB4O1xuICAgIC0tcmVjb25uZWN0aW9uLWhpbnQtc2l6ZTogMTJweDtcbiAgICAtLXJlY29ubmVjdGlvbi1zcGlubmVyLXNpemU6IDM2cHg7XG4gICAgLS1yZWNvbm5lY3Rpb24tc3Bpbm5lci1ib3JkZXI6IDNweDtcbiAgICAtLXJlY29ubmVjdGlvbi1jaGVjay1zaXplOiAzNnB4O1xuICAgIC0tcmVjb25uZWN0aW9uLWNoZWNrLWljb24tc2l6ZTogMThweDtcbiAgfVxufVxuXG4vKiBUaGVtZTogUm95YWwgRW1lcmFsZCAqL1xuW2RhdGEtdGhlbWU9XCJyb3lhbC1lbWVyYWxkXCJdIHtcbiAgLS1hcHAtYmc6ICMwYTFhMGY7XG4gIC0tYXBwLWJnLWdyYWRpZW50LXN0YXJ0OiAjMGExYTBmO1xuICAtLWFwcC1iZy1ncmFkaWVudC1taWQ6ICMxYTJlMWE7XG4gIC0tYXBwLWJnLWdyYWRpZW50LWVuZDogIzBkMWEwZjtcbiAgLS1hcHAtc3VyZmFjZTogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTtcbiAgLS1hcHAtc3VyZmFjZS1ib3JkZXI6IHJnYmEoMzQsIDE5NywgOTQsIDAuMyk7XG4gIC0tYXBwLXN1cmZhY2UtaG92ZXI6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTtcbiAgLS1hcHAtdGV4dDogI2ZmZmZmZjtcbiAgLS1hcHAtdGV4dC1tdXRlZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjYpO1xuICAtLWFwcC10ZXh0LWRpbTogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpO1xuICAtLWFwcC1wcmltYXJ5OiAjMjJjNTVlO1xuICAtLWFwcC1wcmltYXJ5LWhvdmVyOiAjNGFkZTgwO1xuICAtLWFwcC1wcmltYXJ5LWFjdGl2ZTogIzE2YTM0YTtcbiAgLS1hcHAtcHJpbWFyeS1hY3RpdmUtZGVlcDogIzE1ODAzZDtcbiAgLS1hcHAtcHJpbWFyeS1iZzogcmdiYSgzNCwgMTk3LCA5NCwgMC4xKTtcbiAgLS1hcHAtcHJpbWFyeS1iZy1ob3ZlcjogcmdiYSgzNCwgMTk3LCA5NCwgMC4yKTtcbiAgLS1hcHAtcHJpbWFyeS1zaGFkb3c6IHJnYmEoMzQsIDE5NywgOTQsIDAuMyk7XG4gIC0tYXBwLXByaW1hcnktc2hhZG93LWhvdmVyOiByZ2JhKDM0LCAxOTcsIDk0LCAwLjQpO1xuICAtLWFwcC1zZWNvbmRhcnk6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7XG4gIC0tYXBwLXNlY29uZGFyeS1ib3JkZXI6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNSk7XG4gIC0tYXBwLXNlY29uZGFyeS1ob3ZlcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTtcbiAgLS1hcHAtc2Vjb25kYXJ5LWFjdGl2ZTogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xuICAtLWFwcC1lcnJvci1iZzogcmdiYSgyMjAsIDM4LCAzOCwgMC4xNSk7XG4gIC0tYXBwLWVycm9yLWJvcmRlcjogcmdiYSgyMjAsIDM4LCAzOCwgMC4zKTtcbiAgLS1hcHAtZXJyb3ItdGV4dDogI2ZjYTVhNTtcbiAgLS1hcHAtc3VjY2VzczogIzIyYzU1ZTtcbiAgLS1hcHAtaW5mbzogIzNiODJmNjtcbiAgLS1hcHAtaW5wdXQtYmc6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7XG4gIC0tYXBwLWlucHV0LWJvcmRlcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xuICAtLWFwcC1pbnB1dC1mb2N1cy1iZzogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKTtcbiAgLS1hcHAtaW5wdXQtZm9jdXMtcmluZzogcmdiYSgzNCwgMTk3LCA5NCwgMC4xNSk7XG4gIC0tYXBwLWdsb3ctMTogcmdiYSgzNCwgMTk3LCA5NCwgMC4wOCk7XG4gIC0tYXBwLWdsb3ctMjogcmdiYSgzNCwgMTk3LCA5NCwgMC4wNSk7XG5cbiAgLyogRmVsdCBHcmlkIC0gVGhlbWUtQXdhcmUgKi9cbiAgLS1mZWx0LWJnOiAjMWE0NzJhO1xuICAtLWZlbHQtYmctZ3JhZGllbnQ6ICMyZDZiNDU7XG4gIC0tZmVsdC1nbG93OiByZ2JhKDM0LCAxOTcsIDk0LCAwLjA4KTtcbn1cblxuLyogVGhlbWU6IENyaW1zb24gVmVsdmV0ICovXG5bZGF0YS10aGVtZT1cImNyaW1zb24tdmVsdmV0XCJdIHtcbiAgLS1hcHAtYmc6ICMxYTBhMGE7XG4gIC0tYXBwLWJnLWdyYWRpZW50LXN0YXJ0OiAjMWEwYTBhO1xuICAtLWFwcC1iZy1ncmFkaWVudC1taWQ6ICMyYTE1MTU7XG4gIC0tYXBwLWJnLWdyYWRpZW50LWVuZDogIzFhMGQwZDtcbiAgLS1hcHAtc3VyZmFjZTogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTtcbiAgLS1hcHAtc3VyZmFjZS1ib3JkZXI6IHJnYmEoMjM5LCA2OCwgNjgsIDAuMyk7XG4gIC0tYXBwLXN1cmZhY2UtaG92ZXI6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTtcbiAgLS1hcHAtdGV4dDogI2ZmZmZmZjtcbiAgLS1hcHAtdGV4dC1tdXRlZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjYpO1xuICAtLWFwcC10ZXh0LWRpbTogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpO1xuICAtLWFwcC1wcmltYXJ5OiAjZWY0NDQ0O1xuICAtLWFwcC1wcmltYXJ5LWhvdmVyOiAjZjg3MTcxO1xuICAtLWFwcC1wcmltYXJ5LWFjdGl2ZTogI2RjMjYyNjtcbiAgLS1hcHAtcHJpbWFyeS1hY3RpdmUtZGVlcDogI2I5MWMxYztcbiAgLS1hcHAtcHJpbWFyeS1iZzogcmdiYSgyMzksIDY4LCA2OCwgMC4xKTtcbiAgLS1hcHAtcHJpbWFyeS1iZy1ob3ZlcjogcmdiYSgyMzksIDY4LCA2OCwgMC4yKTtcbiAgLS1hcHAtcHJpbWFyeS1zaGFkb3c6IHJnYmEoMjM5LCA2OCwgNjgsIDAuMyk7XG4gIC0tYXBwLXByaW1hcnktc2hhZG93LWhvdmVyOiByZ2JhKDIzOSwgNjgsIDY4LCAwLjQpO1xuICAtLWFwcC1zZWNvbmRhcnk6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7XG4gIC0tYXBwLXNlY29uZGFyeS1ib3JkZXI6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNSk7XG4gIC0tYXBwLXNlY29uZGFyeS1ob3ZlcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTtcbiAgLS1hcHAtc2Vjb25kYXJ5LWFjdGl2ZTogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xuICAtLWFwcC1lcnJvci1iZzogcmdiYSgyMjAsIDM4LCAzOCwgMC4xNSk7XG4gIC0tYXBwLWVycm9yLWJvcmRlcjogcmdiYSgyMjAsIDM4LCAzOCwgMC4zKTtcbiAgLS1hcHAtZXJyb3ItdGV4dDogI2ZjYTVhNTtcbiAgLS1hcHAtc3VjY2VzczogIzIyYzU1ZTtcbiAgLS1hcHAtaW5mbzogIzNiODJmNjtcbiAgLS1hcHAtaW5wdXQtYmc6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7XG4gIC0tYXBwLWlucHV0LWJvcmRlcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xuICAtLWFwcC1pbnB1dC1mb2N1cy1iZzogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKTtcbiAgLS1hcHAtaW5wdXQtZm9jdXMtcmluZzogcmdiYSgyMzksIDY4LCA2OCwgMC4xNSk7XG4gIC0tYXBwLWdsb3ctMTogcmdiYSgyMzksIDY4LCA2OCwgMC4wOCk7XG4gIC0tYXBwLWdsb3ctMjogcmdiYSgyMzksIDY4LCA2OCwgMC4wNSk7XG5cbiAgLyogRmVsdCBHcmlkIC0gVGhlbWUtQXdhcmUgKi9cbiAgLS1mZWx0LWJnOiAjMmExNTE1O1xuICAtLWZlbHQtYmctZ3JhZGllbnQ6ICMzZDFmMWY7XG4gIC0tZmVsdC1nbG93OiByZ2JhKDIzOSwgNjgsIDY4LCAwLjA4KTtcbn1cblxuLyogVGhlbWU6IE1pZG5pZ2h0IFNhcHBoaXJlICovXG5bZGF0YS10aGVtZT1cIm1pZG5pZ2h0LXNhcHBoaXJlXCJdIHtcbiAgLS1hcHAtYmc6ICMwQTE0Mjg7XG4gIC0tYXBwLWJnLWdyYWRpZW50LXN0YXJ0OiAjMEExNDI4O1xuICAtLWFwcC1iZy1ncmFkaWVudC1taWQ6ICMxNDIxM2Q7XG4gIC0tYXBwLWJnLWdyYWRpZW50LWVuZDogIzA1MGExNDtcbiAgLS1hcHAtc3VyZmFjZTogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTtcbiAgLS1hcHAtc3VyZmFjZS1ib3JkZXI6IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjMpO1xuICAtLWFwcC1zdXJmYWNlLWhvdmVyOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4gIC0tYXBwLXRleHQ6ICNmZmZmZmY7XG4gIC0tYXBwLXRleHQtbXV0ZWQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42KTtcbiAgLS1hcHAtdGV4dC1kaW06IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40KTtcbiAgLS1hcHAtcHJpbWFyeTogI2Q0YWYzNztcbiAgLS1hcHAtcHJpbWFyeS1ob3ZlcjogI2ZjZDM0ZDtcbiAgLS1hcHAtcHJpbWFyeS1hY3RpdmU6ICNiNDUzMDk7XG4gIC0tYXBwLXByaW1hcnktYWN0aXZlLWRlZXA6ICM3ODM1MGY7XG4gIC0tYXBwLXByaW1hcnktYmc6IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjEpO1xuICAtLWFwcC1wcmltYXJ5LWJnLWhvdmVyOiByZ2JhKDIxMiwgMTc1LCA1NSwgMC4yKTtcbiAgLS1hcHAtcHJpbWFyeS1zaGFkb3c6IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjMpO1xuICAtLWFwcC1wcmltYXJ5LXNoYWRvdy1ob3ZlcjogcmdiYSgyMTIsIDE3NSwgNTUsIDAuNCk7XG4gIC0tYXBwLXNlY29uZGFyeTogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTtcbiAgLS1hcHAtc2Vjb25kYXJ5LWJvcmRlcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KTtcbiAgLS1hcHAtc2Vjb25kYXJ5LWhvdmVyOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpO1xuICAtLWFwcC1zZWNvbmRhcnktYWN0aXZlOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7XG4gIC0tYXBwLWVycm9yLWJnOiByZ2JhKDIyMCwgMzgsIDM4LCAwLjE1KTtcbiAgLS1hcHAtZXJyb3ItYm9yZGVyOiByZ2JhKDIyMCwgMzgsIDM4LCAwLjMpO1xuICAtLWFwcC1lcnJvci10ZXh0OiAjZmNhNWE1O1xuICAtLWFwcC1zdWNjZXNzOiAjMjJjNTVlO1xuICAtLWFwcC1pbmZvOiAjZDRhZjM3O1xuICAtLWFwcC1pbnB1dC1iZzogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTtcbiAgLS1hcHAtaW5wdXQtYm9yZGVyOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7XG4gIC0tYXBwLWlucHV0LWZvY3VzLWJnOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpO1xuICAtLWFwcC1pbnB1dC1mb2N1cy1yaW5nOiByZ2JhKDIxMiwgMTc1LCA1NSwgMC4xNSk7XG4gIC0tYXBwLWdsb3ctMTogcmdiYSgyMTIsIDE3NSwgNTUsIDAuMDgpO1xuICAtLWFwcC1nbG93LTI6IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjA1KTtcblxuICAvKiBGZWx0IEdyaWQgLSBUaGVtZS1Bd2FyZSAqL1xuICAtLWZlbHQtYmc6ICMwQTE0Mjg7XG4gIC0tZmVsdC1iZy1ncmFkaWVudDogIzExMkE0NjtcbiAgLS1mZWx0LWdsb3c6IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjA4KTtcbn1cblxuLyogVGhlbWU6IFJveWFsIEFtZXRoeXN0ICovXG5bZGF0YS10aGVtZT1cInJveWFsLWFtZXRoeXN0XCJdIHtcbiAgLS1hcHAtYmc6ICMxYTBhMmU7XG4gIC0tYXBwLWJnLWdyYWRpZW50LXN0YXJ0OiAjMWEwYTJlO1xuICAtLWFwcC1iZy1ncmFkaWVudC1taWQ6ICMzYjFhNmU7XG4gIC0tYXBwLWJnLWdyYWRpZW50LWVuZDogIzFhMGQyZTtcbiAgLS1hcHAtc3VyZmFjZTogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTtcbiAgLS1hcHAtc3VyZmFjZS1ib3JkZXI6IHJnYmEoMTM5LCA5MiwgMjQ2LCAwLjMpO1xuICAtLWFwcC1zdXJmYWNlLWhvdmVyOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4gIC0tYXBwLXRleHQ6ICNmZmZmZmY7XG4gIC0tYXBwLXRleHQtbXV0ZWQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42KTtcbiAgLS1hcHAtdGV4dC1kaW06IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40KTtcbiAgLS1hcHAtcHJpbWFyeTogIzhiNWNmNjtcbiAgLS1hcHAtcHJpbWFyeS1ob3ZlcjogI2E3OGJmYTtcbiAgLS1hcHAtcHJpbWFyeS1hY3RpdmU6ICM3YzNhZWQ7XG4gIC0tYXBwLXByaW1hcnktYWN0aXZlLWRlZXA6ICM2ZDI4ZDk7XG4gIC0tYXBwLXByaW1hcnktYmc6IHJnYmEoMTM5LCA5MiwgMjQ2LCAwLjEpO1xuICAtLWFwcC1wcmltYXJ5LWJnLWhvdmVyOiByZ2JhKDEzOSwgOTIsIDI0NiwgMC4yKTtcbiAgLS1hcHAtcHJpbWFyeS1zaGFkb3c6IHJnYmEoMTM5LCA5MiwgMjQ2LCAwLjMpO1xuICAtLWFwcC1wcmltYXJ5LXNoYWRvdy1ob3ZlcjogcmdiYSgxMzksIDkyLCAyNDYsIDAuNCk7XG4gIC0tYXBwLXNlY29uZGFyeTogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTtcbiAgLS1hcHAtc2Vjb25kYXJ5LWJvcmRlcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KTtcbiAgLS1hcHAtc2Vjb25kYXJ5LWhvdmVyOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpO1xuICAtLWFwcC1zZWNvbmRhcnktYWN0aXZlOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7XG4gIC0tYXBwLWVycm9yLWJnOiByZ2JhKDIyMCwgMzgsIDM4LCAwLjE1KTtcbiAgLS1hcHAtZXJyb3ItYm9yZGVyOiByZ2JhKDIyMCwgMzgsIDM4LCAwLjMpO1xuICAtLWFwcC1lcnJvci10ZXh0OiAjZmNhNWE1O1xuICAtLWFwcC1zdWNjZXNzOiAjMjJjNTVlO1xuICAtLWFwcC1pbmZvOiAjM2I4MmY2O1xuICAtLWFwcC1pbnB1dC1iZzogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTtcbiAgLS1hcHAtaW5wdXQtYm9yZGVyOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7XG4gIC0tYXBwLWlucHV0LWZvY3VzLWJnOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpO1xuICAtLWFwcC1pbnB1dC1mb2N1cy1yaW5nOiByZ2JhKDEzOSwgOTIsIDI0NiwgMC4xNSk7XG4gIC0tYXBwLWdsb3ctMTogcmdiYSgxMzksIDkyLCAyNDYsIDAuMDgpO1xuICAtLWFwcC1nbG93LTI6IHJnYmEoMTM5LCA5MiwgMjQ2LCAwLjA1KTtcblxuICAvKiBGZWx0IEdyaWQgLSBUaGVtZS1Bd2FyZSAqL1xuICAtLWZlbHQtYmc6ICMzYjFhNmU7XG4gIC0tZmVsdC1iZy1ncmFkaWVudDogIzRhMmE3ZTtcbiAgLS1mZWx0LWdsb3c6IHJnYmEoMTM5LCA5MiwgMjQ2LCAwLjA4KTtcbn1cbiIsIi8qID09PT09IFJvb3QgTGF5b3V0ID09PT09ICovXG5odG1sLCBib2R5IHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1hcHAtYmcpO1xuICBjb2xvcjogdmFyKC0tYXBwLXRleHQpO1xuICBmb250LWZhbWlseTogc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBzYW5zLXNlcmlmO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjtcbn1cblxuI2FwcCB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLyogPT09PT0gQXBwIEhlYWRlciA9PT09PSAqL1xuLmFwcC1oZWFkZXIge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGhlaWdodDogdmFyKC0tYXBwLWhlYWRlci1oZWlnaHQpO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIHBhZGRpbmc6IHZhcigtLWFwcC1oZWFkZXItcGFkZGluZyk7XG4gIGJhY2tncm91bmQ6IHZhcigtLWFwcC1zdXJmYWNlKTtcbiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDhweCk7XG4gIC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOiBibHVyKDhweCk7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1hcHAtc3VyZmFjZS1ib3JkZXIpO1xuICB6LWluZGV4OiAxMDAwO1xuICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbn1cblxuLmFwcC1oZWFkZXItYmFjay1idG4ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgd2lkdGg6IHZhcigtLWFwcC1oZWFkZXItYmFjay1zaXplKTtcbiAgaGVpZ2h0OiB2YXIoLS1hcHAtaGVhZGVyLWJhY2stc2l6ZSk7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgY29sb3I6IHZhcigtLWFwcC10ZXh0KTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICAtd2Via2l0LWFwcC1yZWdpb246IG5vLWRyYWc7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZTtcbn1cblxuLmFwcC1oZWFkZXItYmFjay1idG46YWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYXBwLWhvdmVyKTtcbn1cblxuLmFwcC1oZWFkZXItYmFjay1idG4gc3ZnIHtcbiAgd2lkdGg6IHZhcigtLWFwcC1oZWFkZXItYmFjay1pY29uLXNpemUpO1xuICBoZWlnaHQ6IHZhcigtLWFwcC1oZWFkZXItYmFjay1pY29uLXNpemUpO1xufVxuXG4uYXBwLWhlYWRlci10aXRsZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tYXBwLWhlYWRlci10aXRsZS1zaXplKTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgY29sb3I6IHZhcigtLWFwcC10ZXh0KTtcbn1cblxuLmFwcC1oZWFkZXItc3BhY2VyIHtcbiAgd2lkdGg6IHZhcigtLWFwcC1oZWFkZXItYmFjay1zaXplKTtcbn1cblxuLyogPT09PT0gU2FmZSBhcmVhIGluc2V0cyBmb3Igbm90Y2ggZGV2aWNlcyA9PT09PSAqL1xuQHN1cHBvcnRzIChwYWRkaW5nOiBtYXgoMHB4KSkge1xuICAuZmVsdC1ncmlkIHtcbiAgICBwYWRkaW5nLXRvcDogbWF4KHZhcigtLWZlbHQtcGFkZGluZyksIGVudihzYWZlLWFyZWEtaW5zZXQtdG9wKSk7XG4gICAgcGFkZGluZy1ib3R0b206IG1heCh2YXIoLS1mZWx0LXBhZGRpbmcpLCBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSkpO1xuICB9XG4gIC51c2VyLWhhbmQge1xuICAgIHBhZGRpbmctYm90dG9tOiBtYXgoMTBweCwgZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pKTtcbiAgfVxuICAuYXBwLWhlYWRlciB7XG4gICAgcGFkZGluZy10b3A6IG1heCgwcHgsIGVudihzYWZlLWFyZWEtaW5zZXQtdG9wKSk7XG4gICAgaGVpZ2h0OiBjYWxjKHZhcigtLWFwcC1oZWFkZXItaGVpZ2h0KSArIGVudihzYWZlLWFyZWEtaW5zZXQtdG9wKSk7XG4gIH1cbn1cbiIsIi8qID09PT09IEdhbWUgVmlldyA9PT09PSAqL1xuLmdhbWUtdmlldyB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLyogPT09PT0gRmVsdCBHcmlkICgzeDMgLSBObyBTZXBhcmF0ZSBIZWFkZXIpID09PT09ICovXG4uZmVsdC1ncmlkIHtcbiAgZmxleDogMTtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1hcmVhczpcbiAgICBcInRvcC1sZWZ0IHBhcnRuZXIgdG9wLXJpZ2h0XCJcbiAgICBcImxlZnQtb3Bwb25lbnQgdHJpY2stYXJlYSByaWdodC1vcHBvbmVudFwiXG4gICAgXCJ1c2VyLWhhbmQgdXNlci1oYW5kIHVzZXItaGFuZFwiO1xuICBncmlkLXRlbXBsYXRlLXJvd3M6IHZhcigtLWZlbHQtcm93cyk7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogdmFyKC0tZmVsdC1jb2xzKTtcbiAgZ2FwOiB2YXIoLS1mZWx0LWdhcCk7XG4gIHBhZGRpbmc6IHZhcigtLWZlbHQtcGFkZGluZyk7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWZlbHQtYmcpO1xuICBiYWNrZ3JvdW5kLWltYWdlOlxuICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IGNlbnRlciwgdmFyKC0tZmVsdC1iZy1ncmFkaWVudCkgMCUsIHZhcigtLWZlbHQtYmcpIDcwJSk7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbi8qID09PT09IEdyaWQgQ29ybmVyIENlbGxzID09PT09ICovXG4uZ3JpZC1jZWxsIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZzogNHB4O1xufVxuXG4udG9wLWxlZnQge1xuICBncmlkLWFyZWE6IHRvcC1sZWZ0O1xufVxuXG4udG9wLXJpZ2h0IHtcbiAgZ3JpZC1hcmVhOiB0b3AtcmlnaHQ7XG59XG5cbi5ib3R0b20tbGVmdCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiB2YXIoLS1mZWx0LXBhZGRpbmcpO1xuICBsZWZ0OiB2YXIoLS1mZWx0LXBhZGRpbmcpO1xuICB6LWluZGV4OiA1MDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7IC8qIExldCBjbGlja3MgcGFzcyB0aHJvdWdoIHRvIGNhcmRzIGlmIG92ZXJsYXBwZWQgKi9cbn1cblxuLmJvdHRvbS1yaWdodCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiAzMHB4O1xuICByaWdodDogMjBweDtcbiAgei1pbmRleDogNTA7XG59XG5cbi8qIFRydW1wIENlbGwgKHRvcC1sZWZ0KSAqL1xuLnRydW1wLWNlbGwge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgZ2FwOiAycHg7XG4gIHBhZGRpbmc6IHZhcigtLXRydW1wLWNlbGwtcGFkZGluZyk7XG4gIGJhY2tncm91bmQ6IHZhcigtLWdhbWUtc3VyZmFjZSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXRydW1wLWNlbGwtcmFkaXVzKTtcbiAgbWluLXdpZHRoOiB2YXIoLS10cnVtcC1jZWxsLW1pbi13aWR0aCk7XG59XG5cbi50cnVtcC1jZWxsLWxhYmVsIHtcbiAgZm9udC1zaXplOiB2YXIoLS10cnVtcC1jZWxsLWxhYmVsLXNpemUpO1xuICBmb250LXdlaWdodDogNjAwO1xuICBjb2xvcjogdmFyKC0tZ2FtZS10ZXh0LWRpbSk7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGxldHRlci1zcGFjaW5nOiB2YXIoLS10cnVtcC1jZWxsLWxhYmVsLXNwYWNpbmcpO1xufVxuXG4udHJ1bXAtY2VsbC12YWx1ZSB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tdHJ1bXAtY2VsbC12YWx1ZS1zaXplKTtcbiAgbGluZS1oZWlnaHQ6IDE7XG59XG5cbi50cnVtcC1jZWxsLXZhbHVlLnJlZCB7XG4gIGNvbG9yOiB2YXIoLS1nYW1lLXN1aXQtcmVkKTtcbn1cblxuLnRydW1wLWNlbGwtdmFsdWUuYmxhY2sge1xuICBjb2xvcjogdmFyKC0tZ2FtZS10ZXh0KTtcbn1cblxuLyogU2NvcmVzIENlbGwgKHRvcC1yaWdodCkgKi9cbi5zY29yZXMtY2VsbCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBnYXA6IDJweDtcbiAgcGFkZGluZzogdmFyKC0tc2NvcmVzLWNlbGwtcGFkZGluZyk7XG4gIGJhY2tncm91bmQ6IHZhcigtLWdhbWUtc3VyZmFjZSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXNjb3Jlcy1jZWxsLXJhZGl1cyk7XG4gIG1pbi13aWR0aDogdmFyKC0tc2NvcmVzLWNlbGwtbWluLXdpZHRoKTtcbn1cblxuLnNjb3Jlcy1jZWxsLWxhYmVsIHtcbiAgZm9udC1zaXplOiB2YXIoLS1zY29yZXMtY2VsbC1sYWJlbC1zaXplKTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgY29sb3I6IHZhcigtLWdhbWUtdGV4dC1kaW0pO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBsZXR0ZXItc3BhY2luZzogdmFyKC0tc2NvcmVzLWNlbGwtbGFiZWwtc3BhY2luZyk7XG59XG5cbi5zY29yZXMtY2VsbC1yb3cge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDRweDtcbn1cblxuLnRlYW0tc2NvcmUtbWluaSB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tdGVhbS1zY29yZS1zaXplKTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbn1cblxuLnRlYW0tc2NvcmUtbWluaS50ZWFtLTAge1xuICBjb2xvcjogdmFyKC0tZ2FtZS10ZWFtLTAtdGV4dCk7XG59XG5cbi50ZWFtLXNjb3JlLW1pbmkudGVhbS0xIHtcbiAgY29sb3I6IHZhcigtLWdhbWUtdGV4dCk7XG59XG5cbi5zY29yZXMtZGl2aWRlciB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgY29sb3I6IHZhcigtLWdhbWUtdGV4dC1kaW0pO1xufVxuXG4uY3Jvd24tY2VsbC1uYW1lIHtcbiAgZm9udC1zaXplOiB2YXIoLS1jcm93bi1jZWxsLW5hbWUtc2l6ZSk7XG4gIGNvbG9yOiB2YXIoLS1nYW1lLXRleHQtbXV0ZWQpO1xufVxuXG4udHJ1bXAtZGVjbGFyZXItY2VsbCB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tdHJ1bXAtZGVjbGFyZXItY2VsbC1zaXplKTtcbiAgY29sb3I6IHZhcigtLWdhbWUtdGV4dCk7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi8qIFRyaWNrIENvdW50IENlbGwgKGJvdHRvbS1sZWZ0KSAqL1xuLnRyaWNrLWNvdW50LWNlbGwge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgZ2FwOiAxcHg7XG4gIHBhZGRpbmc6IHZhcigtLXRyaWNrLWNlbGwtcGFkZGluZyk7XG4gIGJhY2tncm91bmQ6IHZhcigtLWdhbWUtc3VyZmFjZSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXRyaWNrLWNlbGwtcmFkaXVzKTtcbiAgbWluLXdpZHRoOiB2YXIoLS10cmljay1jZWxsLW1pbi13aWR0aCk7XG59XG5cbi50cmljay1jb3VudC12YWx1ZSB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tdHJpY2stdmFsdWUtc2l6ZSk7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGNvbG9yOiB2YXIoLS1nYW1lLXRleHQtbXV0ZWQpO1xufVxuXG4udHJpY2stY291bnQtbGFiZWwge1xuICBmb250LXNpemU6IHZhcigtLXRyaWNrLWxhYmVsLXNpemUpO1xuICBjb2xvcjogdmFyKC0tZ2FtZS10ZXh0LWRpbSk7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbi8qIEN1cnJlbnQgUm91bmQgU2NvcmUgKi9cbi5yb3VuZC1zY29yZS1yb3cge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDNweDtcbiAgbWFyZ2luLXRvcDogMnB4O1xufVxuXG4ucm91bmQtc2NvcmUge1xuICBmb250LXNpemU6IHZhcigtLXJvdW5kLXNjb3JlLXNpemUpO1xuICBmb250LXdlaWdodDogNzAwO1xufVxuXG4ucm91bmQtc2NvcmUudGVhbS0wIHtcbiAgY29sb3I6IHZhcigtLWdhbWUtdGVhbS0wLXRleHQpO1xufVxuXG4ucm91bmQtc2NvcmUudGVhbS0xIHtcbiAgY29sb3I6IHZhcigtLWdhbWUtdGV4dCk7XG59XG5cbi5yb3VuZC1zY29yZS1kaXZpZGVyIHtcbiAgZm9udC1zaXplOiAxMHB4O1xuICBjb2xvcjogdmFyKC0tZ2FtZS10ZXh0LWRpbSk7XG59XG5cbi8qIEJvdHRvbSBSaWdodCBDZWxsIChtZW51IHBsYWNlaG9sZGVyKSAqL1xuLmJvdHRvbS1yaWdodC1jZWxsIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHBhZGRpbmc6IDRweDtcbn1cblxuLm1lbnUtaWNvbiB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tbWVudS1pY29uLXNpemUpO1xuICBjb2xvcjogdmFyKC0tZ2FtZS10ZXh0LWRpbSk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLm1lbnUtdG9nZ2xlLWJ0biB7XG4gIHBhZGRpbmc6IHZhcigtLW1lbnUtdG9nZ2xlLXBhZGRpbmcpO1xuICBtaW4taGVpZ2h0OiBhdXRvO1xuICBsaW5lLWhlaWdodDogMTtcbn1cblxuLm1lbnUtdG9nZ2xlLWJ0biAubWVudS1pY29uIHtcbiAgZm9udC1zaXplOiB2YXIoLS1tZW51LXRvZ2dsZS1idG4taWNvbi1zaXplKTtcbiAgY29sb3I6IHZhcigtLWdhbWUtdGV4dC1tdXRlZCk7XG59XG5cbi5tZW51LXRvZ2dsZS1idG46aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1nYW1lLW1lbnUtaXRlbS1ob3Zlcik7XG59XG4iLCIvKiA9PT09PSBDYXJkcyDigJQgUmVhbCBDYXNpbm8gU3R5bGUgPT09PT0gKi9cbi5jYXJkIHtcbiAgd2lkdGg6IHZhcigtLWNhcmQtd2lkdGgpO1xuICBoZWlnaHQ6IHZhcigtLWNhcmQtaGVpZ2h0KTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tY2FyZC1yYWRpdXMpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjE1cyBlYXNlLCBvcGFjaXR5IDAuMTVzIGVhc2UsIGJveC1zaGFkb3cgMC4xNXMgZWFzZTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZmxleC1zaHJpbms6IDA7XG4gIC8qIFJlYWwtY2FyZCBhcHBlYXJhbmNlOiB3aGl0ZSBsaW5lbiB3aXRoIGZpbmUgaW5uZXIgYm9yZGVyICovXG4gIGJhY2tncm91bmQ6ICNmYWZhZjg7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nNCcgaGVpZ2h0PSc0JyUzRSUzQ3JlY3Qgd2lkdGg9JzQnIGhlaWdodD0nNCcgZmlsbD0nJTIzZjVmNWYwJy8lM0UlM0NyZWN0IHg9JzAnIHk9JzAnIHdpZHRoPScxJyBoZWlnaHQ9JzEnIGZpbGw9JyUyM2VlZWVlYScgb3BhY2l0eT0nMC41Jy8lM0UlM0Mvc3ZnJTNFXCIpO1xuICBib3JkZXI6IDFweCBzb2xpZCAjYzhjMGE4O1xuICBib3gtc2hhZG93OiAwIDNweCA4cHggcmdiYSgwLDAsMCwwLjM1KSwgaW5zZXQgMCAwIDAgMXB4IHJnYmEoMjU1LDI1NSwyNTUsMC45KTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5jYXJkLnBsYXlhYmxlIHtcbiAgLyogSW5oZXJpdHMgd2hpdGUgbGluZW4gYmFja2dyb3VuZCDigJQgZ29sZCBib3JkZXIgdG8gbWFyayBpdCAqL1xuICBib3JkZXI6IDJweCBzb2xpZCAjZDRhZjM3O1xuICBib3gtc2hhZG93OiAwIDNweCA4cHggcmdiYSgwLDAsMCwwLjM1KSwgMCAwIDhweCByZ2JhKDIxMiwxNzUsNTUsMC4yNSksIGluc2V0IDAgMCAwIDFweCByZ2JhKDI1NSwyNTUsMjU1LDAuOSk7XG4gIG9wYWNpdHk6IDE7XG59XG5cbi5jYXJkLnBsYXlhYmxlOmhvdmVyLFxuLmNhcmQucGxheWFibGU6YWN0aXZlIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC04cHgpO1xuICBib3gtc2hhZG93OiAwIDEwcHggMjBweCByZ2JhKDAsMCwwLDAuNDUpLCAwIDAgMTRweCByZ2JhKDIxMiwxNzUsNTUsMC40KSwgaW5zZXQgMCAwIDAgMXB4IHJnYmEoMjU1LDI1NSwyNTUsMC45KTtcbn1cblxuLmNhcmQudW5wbGF5YWJsZSB7XG4gIC8qIERlc2F0dXJhdGVkIC8gZ3JleWVkICovXG4gIGJhY2tncm91bmQ6ICNkOGQ4ZDg7XG4gIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNiMGIwYjA7XG4gIG9wYWNpdHk6IDAuOTtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG59XG5cbi5jYXJkLnNlbGVjdGVkIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMnB4KTtcbiAgYm94LXNoYWRvdzogMCAxMnB4IDI0cHggcmdiYSgwLDAsMCwwLjUpLCAwIDAgMTZweCByZ2JhKDIxMiwxNzUsNTUsMC42KTtcbn1cblxuLmNhcmQtYmFjayB7XG4gIHdpZHRoOiBjYWxjKHZhcigtLWNhcmQtd2lkdGgpICogMC41KTsgLyogU2NhbGUgZG93biBvcHBvbmVudCBjYXJkcyAqL1xuICBoZWlnaHQ6IGNhbGModmFyKC0tY2FyZC1oZWlnaHQpICogMC41KTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tY2FyZC1yYWRpdXMpO1xuICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA1MCUsICNiMjIyMjIsICM1NTAwMDApO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDIxMiwgMTc1LCA1NSwgMC44KTtcbiAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDRweCByZ2JhKDAsIDAsIDAsIDAuNiksIDAgMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIC8qIFN0YWNrIG92ZXJsYXBwaW5nICovXG4gIG1hcmdpbi1yaWdodDogLTEwcHg7XG59XG5cbi5jYXJkLWJhY2s6bGFzdC1jaGlsZCB7XG4gIG1hcmdpbi1yaWdodDogMDtcbn1cblxuLm9wcG9uZW50LWhhbmRzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgbWFyZ2luLXRvcDogOHB4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuLyogU2lkZSBPcHBvbmVudHM6IFN0YWNrIFZlcnRpY2FsbHkgKHBvcnRyYWl0IG9ubHkpICovXG4ubGVmdC1vcHBvbmVudCAub3Bwb25lbnQtaGFuZHMsXG4ucmlnaHQtb3Bwb25lbnQgLm9wcG9uZW50LWhhbmRzIHtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLmxlZnQtb3Bwb25lbnQgLmNhcmQtYmFjayxcbi5yaWdodC1vcHBvbmVudCAuY2FyZC1iYWNrIHtcbiAgbWFyZ2luLXJpZ2h0OiAwO1xufVxuXG4vKiBPbmx5IG92ZXJsYXAgZnJvbSB0aGUgMm5kIGNhcmQgZG93biDigJQgZmlyc3QgY2FyZCBzaXRzIG5hdHVyYWxseSBiZWxvdyB0aGUgcGxheWVyIG5hbWUgKi9cbi5sZWZ0LW9wcG9uZW50IC5jYXJkLWJhY2sgKyAuY2FyZC1iYWNrLFxuLnJpZ2h0LW9wcG9uZW50IC5jYXJkLWJhY2sgKyAuY2FyZC1iYWNrIHtcbiAgbWFyZ2luLXRvcDogLTIwcHg7XG59XG5cbi8qIExhbmRzY2FwZTogcmV2ZXJ0IHNpZGUgb3Bwb25lbnRzIHRvIGhvcml6b250YWwgc3RhY2tpbmcg4oCUIHBsZW50eSBvZiB3aWR0aCAqL1xuQG1lZGlhIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKSB7XG4gIC5sZWZ0LW9wcG9uZW50IC5vcHBvbmVudC1oYW5kcyxcbiAgLnJpZ2h0LW9wcG9uZW50IC5vcHBvbmVudC1oYW5kcyB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG5cbiAgLmxlZnQtb3Bwb25lbnQgLmNhcmQtYmFjayxcbiAgLnJpZ2h0LW9wcG9uZW50IC5jYXJkLWJhY2sge1xuICAgIG1hcmdpbjogMCAtNnB4IDAgMDsgLyogaG9yaXpvbnRhbCBvdmVybGFwICovXG4gIH1cblxuICAvKiBSZXNldCB0aGUgcG9ydHJhaXQgdmVydGljYWwgb3ZlcmxhcCBpbiBsYW5kc2NhcGUgKi9cbiAgLmxlZnQtb3Bwb25lbnQgLmNhcmQtYmFjayArIC5jYXJkLWJhY2ssXG4gIC5yaWdodC1vcHBvbmVudCAuY2FyZC1iYWNrICsgLmNhcmQtYmFjayB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBtYXJnaW4tbGVmdDogLTZweDtcbiAgfVxuXG4gIC5sZWZ0LW9wcG9uZW50IC5jYXJkLWJhY2s6bGFzdC1jaGlsZCxcbiAgLnJpZ2h0LW9wcG9uZW50IC5jYXJkLWJhY2s6bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICB9XG59XG5cbi5jYXJkLmFuaW1hdGluZyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMTAwO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpO1xufVxuXG4uY2FyZC1hbmltYXRpbmcge1xuICBvcGFjaXR5OiAwLjM7XG59XG5cbi5jYXJkLWNvbGxlY3RlZCB7XG4gIG9wYWNpdHk6IDAuMztcbn1cblxuLyogVG9wLWxlZnQgcGlwIGJsb2NrIChyYW5rICsgc3VpdCkgKi9cbi5jYXJkLWNvbnRlbnQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogM3B4O1xuICBsZWZ0OiA0cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMDtcbiAgbGluZS1oZWlnaHQ6IDE7XG59XG5cbi8qIENhcmQgcmFuazogY29sb3VyIGJ5IHN1aXQsIGJvbGQgYW5kIHJlYWRhYmxlIG9uIHdoaXRlICovXG4uY2FyZC1yYW5rIHtcbiAgZm9udC1zaXplOiB2YXIoLS1jYXJkLXJhbmstc2l6ZSk7XG4gIGZvbnQtd2VpZ2h0OiA4MDA7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBjb2xvcjogIzExMTgyNzsgLyogZGVmYXVsdCBibGFjayAqL1xufVxuXG4uY2FyZC1yYW5rLnJlZCB7XG4gIGNvbG9yOiAjY2MwMDAwO1xufVxuXG4uY2FyZC1yYW5rLmJsYWNrIHtcbiAgY29sb3I6ICMxMTE4Mjc7XG59XG5cbi8qIFNtYWxsIGNvcm5lciBzdWl0IHBpcCAqL1xuLmNhcmQtc3VpdCB7XG4gIGZvbnQtc2l6ZTogY2FsYyh2YXIoLS1jYXJkLXN1aXQtc2l6ZSkgKiAwLjgpO1xuICBsaW5lLWhlaWdodDogMTtcbn1cblxuLmNhcmQtc3VpdC5yZWQge1xuICBjb2xvcjogI2NjMDAwMDtcbn1cblxuLmNhcmQtc3VpdC5ibGFjayB7XG4gIGNvbG9yOiAjMTExODI3O1xufVxuXG4vKiBMYXJnZSBjZW50ZXJlZCBzdWl0IHN5bWJvbCDigJQgbWFrZXMgaXQgbG9vayBsaWtlIGEgcmVhbCBwbGF5aW5nIGNhcmQgKi9cbi5jYXJkLWNlbnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIGZvbnQtc2l6ZTogY2FsYyh2YXIoLS1jYXJkLXN1aXQtc2l6ZSkgKiAxLjYpO1xuICBsaW5lLWhlaWdodDogMTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHVzZXItc2VsZWN0OiBub25lO1xufVxuXG4uY2FyZC1jZW50ZXIucmVkIHtcbiAgY29sb3I6ICNjYzAwMDA7XG59XG5cbi5jYXJkLWNlbnRlci5ibGFjayB7XG4gIGNvbG9yOiAjMTExODI3O1xufVxuXG4vKiBEdXBsaWNhdGUgc3VpdC9yZWQgY2xhc3NlcyBmb3IgdHJpY2sgY2FyZHMgKi9cbi5zdWl0LXJlZCB7XG4gIGNvbG9yOiAjY2MwMDAwO1xufVxuXG4uc3VpdC1ibGFjayB7XG4gIGNvbG9yOiAjMTExODI3O1xufVxuXG4vKiBJbmRpdmlkdWFsIGNhcmQgcG9zaXRpb24gaW4gY2lyY3VsYXIgbGF5b3V0ICovXG4udHJpY2stY2FyZC1zbG90IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IHZhcigtLXRyaWNrLWNhcmQtc2xvdC1nYXApO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xufVxuXG4vKiBDYXJkIHBvc2l0aW9ucyBiYXNlZCBvbiBwbGF5ZXIgcmVsYXRpdmUgdG8gdXNlciAoYm90dG9tKSAqL1xuLyogVXNlciAoYm90dG9tKSAqL1xuLnRyaWNrLWNhcmQtc2xvdC5wb3NpdGlvbi1ib3R0b20ge1xuICBib3R0b206IHZhcigtLXRyaWNrLXBvc2l0aW9uLW9mZnNldCk7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xufVxuXG4vKiBQYXJ0bmVyICh0b3ApICovXG4udHJpY2stY2FyZC1zbG90LnBvc2l0aW9uLXRvcCB7XG4gIHRvcDogdmFyKC0tdHJpY2stcG9zaXRpb24tb2Zmc2V0KTtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG59XG5cbi8qIExlZnQgb3Bwb25lbnQgKi9cbi50cmljay1jYXJkLXNsb3QucG9zaXRpb24tbGVmdCB7XG4gIGxlZnQ6IHZhcigtLXRyaWNrLXBvc2l0aW9uLW9mZnNldCk7XG4gIHRvcDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG59XG5cbi8qIFJpZ2h0IG9wcG9uZW50ICovXG4udHJpY2stY2FyZC1zbG90LnBvc2l0aW9uLXJpZ2h0IHtcbiAgcmlnaHQ6IHZhcigtLXRyaWNrLXBvc2l0aW9uLW9mZnNldCk7XG4gIHRvcDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG59XG5cbi8qIFBsYXllciBsYWJlbCB1bmRlciBjYXJkICovXG4uY2FyZC1wbGF5ZXItbGFiZWwge1xuICBmb250LXNpemU6IHZhcigtLWNhcmQtcGxheWVyLWxhYmVsLXNpemUpO1xuICBmb250LXdlaWdodDogNjAwO1xuICBjb2xvcjogdmFyKC0tZ2FtZS1jYXJkLWxhYmVsLXRleHQpO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1nYW1lLWNhcmQtbGFiZWwtYmcpO1xuICBwYWRkaW5nOiB2YXIoLS1jYXJkLXBsYXllci1sYWJlbC1wYWRkaW5nKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tY2FyZC1wbGF5ZXItbGFiZWwtcmFkaXVzKTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLyogV2lubmVyIGluZGljYXRvciAqL1xuLmNhcmQtcGxheWVyLWxhYmVsLndpbm5lciB7XG4gIGNvbG9yOiB2YXIoLS1nYW1lLXdpbm5lci10ZXh0KTtcbiAgYmFja2dyb3VuZDogdmFyKC0tZ2FtZS13aW5uZXItYmcpO1xuICBhbmltYXRpb246IHdpbm5lci1wdWxzZSAwLjVzIGVhc2UtaW4tb3V0IDM7XG59XG5cbi8qID09PT09IEFuaW1hdGlvbnMgPT09PT0gKi9cbkBrZXlmcmFtZXMgcHVsc2UtcmluZyB7XG4gIDAlLCAxMDAlIHsgdHJhbnNmb3JtOiBzY2FsZSgxKTsgb3BhY2l0eTogMTsgfVxuICA1MCUgeyB0cmFuc2Zvcm06IHNjYWxlKDEuMTUpOyBvcGFjaXR5OiAwLjc7IH1cbn1cblxuQGtleWZyYW1lcyB3aW5uZXItcHVsc2Uge1xuICAwJSwgMTAwJSB7IHRyYW5zZm9ybTogc2NhbGUoMSk7IH1cbiAgNTAlIHsgdHJhbnNmb3JtOiBzY2FsZSgxLjEpOyB9XG59XG5cbkBrZXlmcmFtZXMgcmVkZWFsLXB1bHNlIHtcbiAgMCUsIDEwMCUgeyBvcGFjaXR5OiAxOyB9XG4gIDUwJSB7IG9wYWNpdHk6IDAuNTsgfVxufVxuXG5Aa2V5ZnJhbWVzIHNwaW4ge1xuICB0byB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH1cbn1cblxuLnJlLWRlYWxpbmctbWVzc2FnZSB7XG4gIGNvbG9yOiB2YXIoLS1nYW1lLXJlZGVhbC10ZXh0KTtcbiAgZm9udC1zaXplOiB2YXIoLS1yZWRlYWwtc2l6ZSk7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGFuaW1hdGlvbjogcmVkZWFsLXB1bHNlIDFzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xufVxuIiwiLyogPT09PT0gTW9kYWwgQm90dG9tIFNoZWV0ID09PT09ICovXG4vKiBVc2VzIGV4aXN0aW5nIC0tZ2FtZS1tb2RhbC1vdmVybGF5IGZvciBiYWNrZHJvcCwgLS1hcHAtc3VyZmFjZSBmb3IgcGFuZWwgKi9cblxuLm1vZGFsLWJvdHRvbS1zaGVldCB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgaW5zZXQ6IDA7XG4gIHotaW5kZXg6IDEwMDA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi5tb2RhbC1ib3R0b20tc2hlZXQtYmFja2Ryb3Age1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGluc2V0OiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1nYW1lLW1vZGFsLW92ZXJsYXkpO1xuICB6LWluZGV4OiAwO1xufVxuXG4ubW9kYWwtYm90dG9tLXNoZWV0LWJhY2tkcm9wLm5vLWRpc21pc3Mge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLm1vZGFsLWJvdHRvbS1zaGVldC1wYW5lbCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogdmFyKC0tbW9kYWwtbWF4LXdpZHRoKTtcbiAgbWF4LWhlaWdodDogdmFyKC0tbW9kYWwtbWF4LWhlaWdodCk7XG4gIGhlaWdodDogYXV0bztcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgYmFja2dyb3VuZDogdmFyKC0tYXBwLXN1cmZhY2UpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1hcHAtc3VyZmFjZS1ib3JkZXIpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1tb2RhbC1yYWRpdXMpO1xuICBjb2xvcjogdmFyKC0tYXBwLXRleHQpO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2U7XG4gIGJhY2tkcm9wLWZpbHRlcjogYmx1cig4cHgpO1xuICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG4gIHBhZGRpbmctYm90dG9tOiBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSwgMCk7XG59XG5cbi5tb2RhbC1ib3R0b20tc2hlZXQtcGFuZWwub3BlbiB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbn1cblxuLm1vZGFsLWJvdHRvbS1zaGVldC1jb250ZW50IHtcbiAgcGFkZGluZzogdmFyKC0tbW9kYWwtY29udGVudC1wYWRkaW5nKTtcbn1cblxuLyogPT09PT0gQ29udGV4dCBNZW51ID09PT09ICovXG4uY29udGV4dC1tZW51LXBhbmVsIHtcbiAgbWF4LWhlaWdodDogbm9uZTtcbn1cblxuLmNvbnRleHQtbWVudS1uYXYge1xuICB3aWR0aDogMTAwJTtcbn1cblxuLmNvbnRleHQtbWVudS1saXN0IHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAwO1xufVxuXG4uY29udGV4dC1tZW51LWl0ZW0ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IHZhcigtLWNvbnRleHQtbWVudS1pdGVtLWdhcCk7XG4gIHBhZGRpbmc6IHZhcigtLWNvbnRleHQtbWVudS1pdGVtLXBhZGRpbmcpO1xuICBjb2xvcjogdmFyKC0tYXBwLXRleHQpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLWNvbnRleHQtbWVudS1pdGVtLXJhZGl1cyk7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4ycyBlYXNlO1xufVxuXG4uY29udGV4dC1tZW51LWl0ZW06aG92ZXIge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hcHAtc3VyZmFjZS1ob3Zlcik7XG59XG5cbi5jb250ZXh0LW1lbnUtaXRlbTphY3RpdmUge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hcHAtc2Vjb25kYXJ5LWFjdGl2ZSk7XG59XG5cbi5jb250ZXh0LW1lbnUtaWNvbiB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tY29udGV4dC1tZW51LWljb24tc2l6ZSk7XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4uY29udGV4dC1tZW51LWxhYmVsIHtcbiAgZm9udC1zaXplOiB2YXIoLS1jb250ZXh0LW1lbnUtbGFiZWwtc2l6ZSk7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbi8qID09PT09IFRydW1wIFNlbGVjdG9yID09PT09ICovXG4udHJ1bXAtc2VsZWN0b3ItY29udGVudCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogdmFyKC0tdHJ1bXAtc2VsZWN0b3ItZ2FwKTtcbn1cblxuLnRydW1wLXNlbGVjdG9yLXRpdGxlIHtcbiAgZm9udC1zaXplOiB2YXIoLS10cnVtcC1zZWxlY3Rvci10aXRsZS1zaXplKTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgY29sb3I6IHZhcigtLWFwcC1wcmltYXJ5KTtcbiAgbWFyZ2luOiAwO1xufVxuXG4udHJ1bXAtc2VsZWN0b3ItZGVzY3JpcHRpb24ge1xuICBmb250LXNpemU6IHZhcigtLXRydW1wLXNlbGVjdG9yLWRlc2Mtc2l6ZSk7XG4gIGNvbG9yOiB2YXIoLS1hcHAtdGV4dC1tdXRlZCk7XG4gIG1hcmdpbjogMDtcbn1cblxuLnRydW1wLXNlbGVjdG9yLWNhcmRzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgZ2FwOiA2cHg7XG4gIHBhZGRpbmc6IDhweCAwO1xufVxuXG4udHJ1bXAtY2FyZCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB3aWR0aDogdmFyKC0tdHJ1bXAtY2FyZC13aWR0aCk7XG4gIGhlaWdodDogdmFyKC0tdHJ1bXAtY2FyZC1oZWlnaHQpO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1nYW1lLWNhcmQtYmcpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1nYW1lLWNhcmQtYm9yZGVyKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tdHJ1bXAtY2FyZC1yYWRpdXMpO1xuICBib3gtc2hhZG93OiAwIDJweCA0cHggdmFyKC0tZ2FtZS1jYXJkLXNoYWRvdyk7XG59XG5cbi50cnVtcC1jYXJkLXN1aXQge1xuICBmb250LXNpemU6IHZhcigtLXRydW1wLWNhcmQtc3VpdC1zaXplKTtcbiAgbGluZS1oZWlnaHQ6IDE7XG59XG5cbi50cnVtcC1jYXJkLXJhbmsge1xuICBmb250LXNpemU6IHZhcigtLXRydW1wLWNhcmQtcmFuay1zaXplKTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgY29sb3I6IHZhcigtLWdhbWUtY2FyZC10ZXh0KTtcbn1cblxuLnRydW1wLXN1aXQtZ3JpZCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gIGdhcDogdmFyKC0tdHJ1bXAtc3VpdC1ncmlkLWdhcCk7XG59XG5cbi50cnVtcC1zdWl0LWJ0biB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBnYXA6IDRweDtcbiAgcGFkZGluZzogdmFyKC0tdHJ1bXAtc3VpdC1idG4tcGFkZGluZyk7XG4gIGhlaWdodDogdmFyKC0tdHJ1bXAtc3VpdC1idG4taGVpZ2h0KTtcbiAgYmFja2dyb3VuZDogdmFyKC0tYXBwLXN1cmZhY2UpO1xuICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1hcHAtc2Vjb25kYXJ5LWJvcmRlcik7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXRydW1wLXN1aXQtYnRuLXJhZGl1cyk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbn1cblxuLnRydW1wLXN1aXQtYnRuOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tYXBwLXN1cmZhY2UtaG92ZXIpO1xuICBib3JkZXItY29sb3I6IHZhcigtLWFwcC1wcmltYXJ5KTtcbn1cblxuLnRydW1wLXN1aXQtYnRuOmFjdGl2ZSB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWFwcC1wcmltYXJ5LWJnKTtcbn1cblxuLnRydW1wLXN1aXQtc3ltYm9sIHtcbiAgZm9udC1zaXplOiB2YXIoLS10cnVtcC1zdWl0LXN5bWJvbC1zaXplKTtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGJhY2tncm91bmQ6IHZhcigtLWdhbWUtY2FyZC1iZyk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXRydW1wLWNlbGwtcmFkaXVzKTtcbn1cblxuLnRydW1wLXN1aXQtbmFtZSB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tdHJ1bXAtc3VpdC1uYW1lLXNpemUpO1xuICBmb250LXdlaWdodDogNjAwO1xuICBjb2xvcjogdmFyKC0tYXBwLXRleHQpO1xufVxuXG4udHJ1bXAtc2VsZWN0b3ItYWN0aW9ucyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBwYWRkaW5nLXRvcDogOHB4O1xuICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tYXBwLXNlY29uZGFyeS1ib3JkZXIpO1xufVxuXG4udHJ1bXAtc2VsZWN0b3ItY2FuY2VsLWJ0biB7XG4gIHBhZGRpbmc6IHZhcigtLXRydW1wLWNhbmNlbC1idG4tcGFkZGluZyk7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBjb2xvcjogdmFyKC0tYXBwLXRleHQtbXV0ZWQpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1hcHAtc2Vjb25kYXJ5LWJvcmRlcik7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXRydW1wLWNhbmNlbC1idG4tcmFkaXVzKTtcbiAgZm9udC1zaXplOiB2YXIoLS10cnVtcC1jYW5jZWwtYnRuLXNpemUpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG59XG5cbi50cnVtcC1zZWxlY3Rvci1jYW5jZWwtYnRuOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tYXBwLXN1cmZhY2UtaG92ZXIpO1xuICBjb2xvcjogdmFyKC0tYXBwLXRleHQpO1xufVxuXG4vKiA9PT09PSBSb3VuZCBFbmQgTW9kYWwgPT09PT0gKi9cbi5yb3VuZC1lbmQtY29udGVudCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogMTZweDtcbn1cblxuLnJvdW5kLWVuZC10aXRsZSB7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgY29sb3I6IHZhcigtLWFwcC1wcmltYXJ5KTtcbiAgbWFyZ2luOiAwO1xufVxuXG4ucm91bmQtZW5kLXJlc3VsdCB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLnJvdW5kLWVuZC1yZXN1bHQtdGV4dCB7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgY29sb3I6IHZhcigtLWFwcC1zdWNjZXNzKTtcbiAgbWFyZ2luOiAwIDAgNHB4IDA7XG59XG5cbi5yb3VuZC1lbmQtcG9pbnRzIHtcbiAgZm9udC1zaXplOiAyNHB4O1xuICBmb250LXdlaWdodDogODAwO1xuICBjb2xvcjogdmFyKC0tYXBwLXByaW1hcnkpO1xuICBtYXJnaW46IDA7XG59XG5cbi5yb3VuZC1lbmQtdHJpY2tzIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgZ2FwOiAxMnB4O1xufVxuXG4ucm91bmQtZW5kLXRyaWNrLWl0ZW0ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDRweDtcbiAgcGFkZGluZzogMTJweDtcbiAgYmFja2dyb3VuZDogdmFyKC0tYXBwLXNlY29uZGFyeSk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWFwcC1zZWNvbmRhcnktYm9yZGVyKTtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xufVxuXG4ucm91bmQtZW5kLXRyaWNrLWxhYmVsIHtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBjb2xvcjogdmFyKC0tYXBwLXRleHQtbXV0ZWQpO1xufVxuXG4ucm91bmQtZW5kLXRyaWNrLXZhbHVlIHtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBmb250LXdlaWdodDogNzAwO1xuICBjb2xvcjogdmFyKC0tYXBwLXRleHQpO1xufVxuXG4ucm91bmQtZW5kLXNjb3JlcyB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gIGdhcDogMTJweDtcbn1cblxuLnJvdW5kLWVuZC1zY29yZS1pdGVtIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiA0cHg7XG4gIHBhZGRpbmc6IDEycHg7XG4gIGJhY2tncm91bmQ6IHZhcigtLWFwcC1wcmltYXJ5LWJnKTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYXBwLXN1cmZhY2UtYm9yZGVyKTtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xufVxuXG4ucm91bmQtZW5kLXNjb3JlLWxhYmVsIHtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBjb2xvcjogdmFyKC0tYXBwLXRleHQtbXV0ZWQpO1xufVxuXG4ucm91bmQtZW5kLXNjb3JlLXZhbHVlIHtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBmb250LXdlaWdodDogNzAwO1xuICBjb2xvcjogdmFyKC0tYXBwLXByaW1hcnkpO1xufVxuXG4ucm91bmQtZW5kLWFjdGlvbnMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgcGFkZGluZy10b3A6IDhweDtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWFwcC1zZWNvbmRhcnktYm9yZGVyKTtcbn1cblxuLnJvdW5kLWVuZC1jb250aW51ZS1idG4ge1xuICBwYWRkaW5nOiAxMnB4IDMycHg7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWFwcC1wcmltYXJ5KSAwJSwgdmFyKC0tYXBwLXByaW1hcnktYWN0aXZlKSAxMDAlKTtcbiAgY29sb3I6IHZhcigtLWFwcC1iZyk7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBmb250LXdlaWdodDogNzAwO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDEycHggdmFyKC0tYXBwLXByaW1hcnktc2hhZG93KTtcbn1cblxuLnJvdW5kLWVuZC1jb250aW51ZS1idG46aG92ZXIge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1hcHAtcHJpbWFyeS1ob3ZlcikgMCUsIHZhcigtLWFwcC1wcmltYXJ5KSAxMDAlKTtcbiAgYm94LXNoYWRvdzogMCA2cHggMTZweCB2YXIoLS1hcHAtcHJpbWFyeS1zaGFkb3ctaG92ZXIpO1xufVxuXG4vKiA9PT09PSBWaWN0b3J5IE1vZGFsID09PT09ICovXG4udmljdG9yeS1jb250ZW50IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAxNnB4O1xufVxuXG4udmljdG9yeS1pY29uIHtcbiAgZm9udC1zaXplOiA1NnB4O1xuICBsaW5lLWhlaWdodDogMTtcbn1cblxuLnZpY3RvcnktdGl0bGUge1xuICBmb250LXNpemU6IDI0cHg7XG4gIGZvbnQtd2VpZ2h0OiA4MDA7XG4gIGNvbG9yOiB2YXIoLS1hcHAtcHJpbWFyeSk7XG4gIG1hcmdpbjogMDtcbn1cblxuLnZpY3Rvcnktd2lubmVyIHtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBmb250LXdlaWdodDogNzAwO1xuICBjb2xvcjogdmFyKC0tYXBwLXN1Y2Nlc3MpO1xuICBtYXJnaW46IDA7XG59XG5cbi52aWN0b3J5LXNjb3JlcyB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4udmljdG9yeS1zY29yZXMtdGl0bGUge1xuICBmb250LXNpemU6IDE2cHg7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGNvbG9yOiB2YXIoLS1hcHAtdGV4dCk7XG4gIG1hcmdpbjogMCAwIDEycHggMDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4udmljdG9yeS1zY29yZXMtZ3JpZCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gIGdhcDogMTJweDtcbn1cblxuLnZpY3Rvcnktc2NvcmUtaXRlbSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogNHB4O1xuICBwYWRkaW5nOiAxNnB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hcHAtcHJpbWFyeS1iZyk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWFwcC1zdXJmYWNlLWJvcmRlcik7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XG59XG5cbi52aWN0b3J5LXNjb3JlLWxhYmVsIHtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBjb2xvcjogdmFyKC0tYXBwLXRleHQtbXV0ZWQpO1xufVxuXG4udmljdG9yeS1zY29yZS12YWx1ZSB7XG4gIGZvbnQtc2l6ZTogMjhweDtcbiAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgY29sb3I6IHZhcigtLWFwcC1wcmltYXJ5KTtcbn1cblxuLnZpY3Rvcnktc2NvcmUtdW5pdCB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgY29sb3I6IHZhcigtLWFwcC10ZXh0LWRpbSk7XG59XG5cbi52aWN0b3J5LWFjdGlvbnMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDhweDtcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmctdG9wOiA4cHg7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1hcHAtc2Vjb25kYXJ5LWJvcmRlcik7XG59XG5cbi52aWN0b3J5LW5ldy1nYW1lLWJ0biB7XG4gIHBhZGRpbmc6IDE0cHggMjRweDtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tYXBwLXByaW1hcnkpIDAlLCB2YXIoLS1hcHAtcHJpbWFyeS1hY3RpdmUpIDEwMCUpO1xuICBjb2xvcjogdmFyKC0tYXBwLWJnKTtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICBmb250LXNpemU6IDE2cHg7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgYm94LXNoYWRvdzogMCA0cHggMTJweCB2YXIoLS1hcHAtcHJpbWFyeS1zaGFkb3cpO1xufVxuXG4udmljdG9yeS1uZXctZ2FtZS1idG46aG92ZXIge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1hcHAtcHJpbWFyeS1ob3ZlcikgMCUsIHZhcigtLWFwcC1wcmltYXJ5KSAxMDAlKTtcbiAgYm94LXNoYWRvdzogMCA2cHggMTZweCB2YXIoLS1hcHAtcHJpbWFyeS1zaGFkb3ctaG92ZXIpO1xufVxuXG4udmljdG9yeS1sb2JieS1idG4ge1xuICBwYWRkaW5nOiAxMnB4IDI0cHg7XG4gIGJhY2tncm91bmQ6IHZhcigtLWFwcC1zZWNvbmRhcnkpO1xuICBjb2xvcjogdmFyKC0tYXBwLXRleHQpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1hcHAtc2Vjb25kYXJ5LWJvcmRlcik7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gIGZvbnQtc2l6ZTogMTVweDtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xufVxuXG4udmljdG9yeS1sb2JieS1idG46aG92ZXIge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hcHAtc2Vjb25kYXJ5LWhvdmVyKTtcbn1cblxuLyogPT09PT0gUGxheWVkIENhcmRzIE1vZGFsID09PT09ICovXG4ucGxheWVkLWNhcmRzLWNvbnRlbnQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDE2cHg7XG59XG5cbi5wbGF5ZWQtY2FyZHMtdGl0bGUge1xuICBmb250LXNpemU6IDIwcHg7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGNvbG9yOiB2YXIoLS1hcHAtcHJpbWFyeSk7XG4gIG1hcmdpbjogMDtcbn1cblxuLnBsYXllZC1jYXJkcy1jb250ZW50IC50cmljay1yb3cge1xuICBwYWRkaW5nOiAxMnB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hcHAtc2Vjb25kYXJ5KTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYXBwLXNlY29uZGFyeS1ib3JkZXIpO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG59XG5cbi50cmljay1yb3ctaGVhZGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBtYXJnaW4tYm90dG9tOiA4cHg7XG59XG5cbi50cmljay1sYWJlbCB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgY29sb3I6IHZhcigtLWFwcC10ZXh0KTtcbn1cblxuLnRyaWNrLXN0YXR1cyB7XG4gIGZvbnQtc2l6ZTogMTFweDtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgcGFkZGluZzogMnB4IDhweDtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xufVxuXG4udHJpY2stc3RhdHVzLnN0YXR1cy13b24ge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hcHAtcHJpbWFyeS1iZyk7XG4gIGNvbG9yOiB2YXIoLS1hcHAtcHJpbWFyeSk7XG59XG5cbi50cmljay1zdGF0dXMuc3RhdHVzLWluLXByb2dyZXNzIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tYXBwLWluZm8pO1xuICBjb2xvcjogdmFyKC0tYXBwLWJnKTtcbn1cblxuLmNhcmRzLWdyaWQge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCAxZnIpO1xuICBnYXA6IDhweDtcbn1cblxuLnBsYXllZC1jYXJkIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiA0cHg7XG4gIHBhZGRpbmc6IDhweDtcbiAgYmFja2dyb3VuZDogdmFyKC0tYXBwLXN1cmZhY2UpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1hcHAtc3VyZmFjZS1ib3JkZXIpO1xuICBib3JkZXItcmFkaXVzOiA2cHg7XG4gIG1pbi1oZWlnaHQ6IDYwcHg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4ucGxheWVkLWNhcmQucGxheWVkLWNhcmQtZW1wdHkge1xuICBvcGFjaXR5OiAwLjU7XG59XG5cbi5wbGF5ZWQtY2FyZC12YWx1ZSB7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYXBwLXN1cmZhY2UtYm9yZGVyKTtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1nYW1lLWNhcmQtYmcpO1xufVxuXG4ucGxheWVkLWNhcmQtcGxheWVyIHtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBjb2xvcjogdmFyKC0tYXBwLXRleHQtbXV0ZWQpO1xufVxuXG4uZW1wdHktc3RhdGUge1xuICBtaW4taGVpZ2h0OiAxNTBweDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogOHB4O1xufVxuXG4uZW1wdHktc3RhdGUgcCB7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgY29sb3I6IHZhcigtLWFwcC10ZXh0LW11dGVkKTtcbiAgbWFyZ2luOiAwO1xufVxuXG4uZW1wdHktc3RhdGUtaGludCB7XG4gIGZvbnQtc2l6ZTogMTNweCAhaW1wb3J0YW50O1xuICBjb2xvcjogdmFyKC0tYXBwLXRleHQtZGltKSAhaW1wb3J0YW50O1xufVxuXG4vKiA9PT09PSBUaGVtZSBTZWxlY3RvciBPdmVybGF5ID09PT09ICovXG4udGhlbWUtc2VsZWN0b3Itb3ZlcmxheSB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgaW5zZXQ6IDA7XG4gIHotaW5kZXg6IDIwMDA7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWdhbWUtbW9kYWwtb3ZlcmxheSk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZTtcbn1cblxuLnRoZW1lLXNlbGVjdG9yLW92ZXJsYXkub3BlbiB7XG4gIG9wYWNpdHk6IDE7XG59XG5cbi50aGVtZS1zZWxlY3Rvci1wYW5lbCB7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDM2MHB4O1xuICBtYXgtaGVpZ2h0OiA4MHZoO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICBwYWRkaW5nOiAyNHB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hcHAtc3VyZmFjZSk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWFwcC1zdXJmYWNlLWJvcmRlcik7XG4gIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gIGJhY2tkcm9wLWZpbHRlcjogYmx1cig4cHgpO1xufVxuXG4udGhlbWUtc2VsZWN0b3ItaGVhZGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBtYXJnaW4tYm90dG9tOiAxNnB4O1xufVxuXG4udGhlbWUtc2VsZWN0b3ItdGl0bGUge1xuICBmb250LXNpemU6IDE4cHg7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGNvbG9yOiB2YXIoLS1hcHAtcHJpbWFyeSk7XG4gIG1hcmdpbjogMDtcbn1cblxuLnRoZW1lLXNlbGVjdG9yLWNsb3NlIHtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogbm9uZTtcbiAgY29sb3I6IHZhcigtLWFwcC10ZXh0LW11dGVkKTtcbiAgZm9udC1zaXplOiAyMHB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHBhZGRpbmc6IDRweCA4cHg7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbn1cblxuLnRoZW1lLXNlbGVjdG9yLWNsb3NlOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tYXBwLXN1cmZhY2UtaG92ZXIpO1xuICBjb2xvcjogdmFyKC0tYXBwLXRleHQpO1xufVxuXG4udGhlbWUtc2VsZWN0b3ItZ3JpZCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gIGdhcDogMTJweDtcbn1cblxuLyogPT09PT0gUm9vbSBDb2RlIE1vZGFsID09PT09ICovXG4ucm9vbS1jb2RlLW1vZGFsLW92ZXJsYXkge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZ2FtZS1tb2RhbC1vdmVybGF5KTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHotaW5kZXg6IDIwMDA7XG59XG5cbi5yb29tLWNvZGUtbW9kYWwge1xuICBtYXgtaGVpZ2h0OiA4MHZoO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICBwYWRkaW5nOiAyNHB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hcHAtYmcpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1hcHAtc3VyZmFjZS1ib3JkZXIpO1xuICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICBtYXgtd2lkdGg6IDM0MHB4O1xuICB3aWR0aDogMTAwJTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4ucm9vbS1jb2RlLW1vZGFsLWhlYWRlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgbWFyZ2luLWJvdHRvbTogMTZweDtcbn1cblxuLnJvb20tY29kZS1tb2RhbC1oZWFkZXIgaDMge1xuICBmb250LXNpemU6IDE2cHg7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGNvbG9yOiB2YXIoLS1hcHAtdGV4dCk7XG59XG5cbi5yb29tLWNvZGUtbW9kYWwtYm9keSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMTJweDtcbn1cblxuLnJvb20tY29kZS1kaXNwbGF5IHtcbiAgZm9udC1zaXplOiAzNnB4O1xuICBmb250LXdlaWdodDogODAwO1xuICBsZXR0ZXItc3BhY2luZzogOHB4O1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlO1xuICBjb2xvcjogdmFyKC0tYXBwLXRleHQpO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hcHAtc3VyZmFjZSk7XG4gIGJvcmRlcjogMnB4IGRhc2hlZCB2YXIoLS1hcHAtc3VyZmFjZS1ib3JkZXIpO1xuICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICBwYWRkaW5nOiAxNnB4IDI0cHg7XG4gIHdpZHRoOiAxMDAlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5yb29tLWNvZGUtd2FpdGluZyB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgY29sb3I6IHZhcigtLWFwcC10ZXh0LW11dGVkKTtcbiAgbWFyZ2luLXRvcDogNHB4O1xufVxuIiwiLyogPT09PT0gTG9naW4gLyBMb2JieSBWaWV3cyA9PT09PSAqL1xuLmxvZ2luLXZpZXcsIC5sb2JieS12aWV3LCAucmVnaXN0cmF0aW9uLXZpZXcge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgcGFkZGluZzogMjRweDtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tYXBwLWJnLWdyYWRpZW50LXN0YXJ0KSAwJSwgdmFyKC0tYXBwLWJnLWdyYWRpZW50LW1pZCkgNTAlLCB2YXIoLS1hcHAtYmctZ3JhZGllbnQtZW5kKSAxMDAlKTtcbiAgYmFja2dyb3VuZC1pbWFnZTpcbiAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCAzMCUgMjAlLCB2YXIoLS1hcHAtZ2xvdy0xKSAwJSwgdHJhbnNwYXJlbnQgNTAlKSxcbiAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCA3MCUgODAlLCB2YXIoLS1hcHAtZ2xvdy0yKSAwJSwgdHJhbnNwYXJlbnQgNTAlKSxcbiAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1hcHAtYmctZ3JhZGllbnQtc3RhcnQpIDAlLCB2YXIoLS1hcHAtYmctZ3JhZGllbnQtbWlkKSA1MCUsIHZhcigtLWFwcC1iZy1ncmFkaWVudC1lbmQpIDEwMCUpO1xufVxuXG4ubG9naW4tY29udGFpbmVyLCAubG9iYnktY29udGFpbmVyLCAucmVnaXN0cmF0aW9uLWNvbnRhaW5lciB7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDQwMHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiAzMnB4IDI0cHg7XG4gIHBhZGRpbmctYm90dG9tOiA0MHB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hcHAtc3VyZmFjZSk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWFwcC1zdXJmYWNlLWJvcmRlcik7XG4gIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gIGJhY2tkcm9wLWZpbHRlcjogYmx1cig4cHgpO1xuICBib3gtc2hhZG93OiAwIDhweCAzMnB4IHJnYmEoMCwgMCwgMCwgMC40KTtcbn1cblxuLmFwcC10aXRsZSB7XG4gIGZvbnQtc2l6ZTogMzJweDtcbiAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgY29sb3I6IHZhcigtLWFwcC1wcmltYXJ5KTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gIHRleHQtc2hhZG93OiAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjMpO1xuICBsZXR0ZXItc3BhY2luZzogMXB4O1xufVxuXG4uYXBwLXN1YnRpdGxlIHtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBjb2xvcjogdmFyKC0tYXBwLXRleHQtbXV0ZWQpO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG1hcmdpbi1ib3R0b206IDI0cHg7XG59XG5cbi5mb3JtLWdyb3VwIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogMzIwcHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogMTJweDtcbiAgbWFyZ2luLWJvdHRvbTogMTZweDtcbn1cblxuLmZvcm0taW5wdXQge1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMTRweCAxNnB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hcHAtaW5wdXQtYmcpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1hcHAtaW5wdXQtYm9yZGVyKTtcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgY29sb3I6IHZhcigtLWFwcC10ZXh0KTtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBvdXRsaW5lOiBub25lO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4ycyBlYXNlLCBiYWNrZ3JvdW5kIDAuMnMgZWFzZSwgYm94LXNoYWRvdyAwLjJzIGVhc2U7XG59XG5cbi5mb3JtLWlucHV0OmZvY3VzIHtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1hcHAtcHJpbWFyeSk7XG4gIGJhY2tncm91bmQ6IHZhcigtLWFwcC1pbnB1dC1mb2N1cy1iZyk7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDNweCB2YXIoLS1hcHAtaW5wdXQtZm9jdXMtcmluZyk7XG59XG5cbi5mb3JtLWlucHV0OjpwbGFjZWhvbGRlciB7XG4gIGNvbG9yOiB2YXIoLS1hcHAtdGV4dC1tdXRlZCk7XG59XG5cbi5lcnJvci1tZXNzYWdlIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogMzIwcHg7XG4gIHBhZGRpbmc6IDEwcHggMTRweDtcbiAgYmFja2dyb3VuZDogdmFyKC0tYXBwLWVycm9yLWJnKTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYXBwLWVycm9yLWJvcmRlcik7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgY29sb3I6IHZhcigtLWFwcC1lcnJvci10ZXh0KTtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBtYXJnaW4tYm90dG9tOiAxMnB4O1xufVxuXG4uZXJyb3ItbWVzc2FnZS5oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4uc3VjY2Vzcy1tZXNzYWdlIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogMzIwcHg7XG4gIHBhZGRpbmc6IDEwcHggMTRweDtcbiAgYmFja2dyb3VuZDogdmFyKC0tYXBwLXN1Y2Nlc3MtYmcpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1hcHAtc3VjY2Vzcy1ib3JkZXIpO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIGNvbG9yOiB2YXIoLS1hcHAtc3VjY2Vzcy10ZXh0KTtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBtYXJnaW4tdG9wOiAxMnB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5zdWNjZXNzLW1lc3NhZ2UuaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLyogPT09PT0gQnV0dG9ucyA9PT09PSAqL1xuLmJ0bi1wcmltYXJ5IHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogMzIwcHg7XG4gIHBhZGRpbmc6IDE0cHggMjRweDtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tYXBwLXByaW1hcnkpIDAlLCB2YXIoLS1hcHAtcHJpbWFyeS1hY3RpdmUpIDEwMCUpO1xuICBjb2xvcjogdmFyKC0tYXBwLWJnKTtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICBmb250LXNpemU6IDE2cHg7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMTVzIGVhc2UsIGJveC1zaGFkb3cgMC4xNXMgZWFzZSwgYmFja2dyb3VuZCAwLjJzIGVhc2U7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDEycHggdmFyKC0tYXBwLXByaW1hcnktc2hhZG93KTtcbn1cblxuLmJ0bi1wcmltYXJ5OmhvdmVyIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tYXBwLXByaW1hcnktaG92ZXIpIDAlLCB2YXIoLS1hcHAtcHJpbWFyeSkgMTAwJSk7XG4gIGJveC1zaGFkb3c6IDAgNnB4IDE2cHggdmFyKC0tYXBwLXByaW1hcnktc2hhZG93LWhvdmVyKTtcbn1cblxuLmJ0bi1wcmltYXJ5OmFjdGl2ZSB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMC45OCk7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWFwcC1wcmltYXJ5LWFjdGl2ZSkgMCUsIHZhcigtLWFwcC1wcmltYXJ5LWFjdGl2ZS1kZWVwKSAxMDAlKTtcbn1cblxuLmJ0bi1zZWNvbmRhcnkge1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAzMjBweDtcbiAgcGFkZGluZzogMTRweCAyNHB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hcHAtc2Vjb25kYXJ5KTtcbiAgY29sb3I6IHZhcigtLWFwcC10ZXh0KTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYXBwLXNlY29uZGFyeS1ib3JkZXIpO1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICBmb250LXNpemU6IDE1cHg7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjJzIGVhc2UsIGJvcmRlci1jb2xvciAwLjJzIGVhc2UsIHRyYW5zZm9ybSAwLjE1cyBlYXNlO1xufVxuXG4uYnRuLXNlY29uZGFyeTpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWFwcC1zZWNvbmRhcnktaG92ZXIpO1xuICBib3JkZXItY29sb3I6IHZhcigtLWFwcC1zZWNvbmRhcnktYm9yZGVyKTtcbn1cblxuLmJ0bi1zZWNvbmRhcnk6YWN0aXZlIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjk4KTtcbiAgYmFja2dyb3VuZDogdmFyKC0tYXBwLXNlY29uZGFyeS1hY3RpdmUpO1xufVxuXG4uYnRuLW91dGxpbmUge1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAzMjBweDtcbiAgcGFkZGluZzogMTRweCAyNHB4O1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgY29sb3I6IHZhcigtLWFwcC1wcmltYXJ5KTtcbiAgYm9yZGVyOiAycHggc29saWQgcmdiYSgyMTIsIDE3NSwgNTUsIDAuNSk7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gIGZvbnQtc2l6ZTogMTVweDtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMnMgZWFzZSwgYm9yZGVyLWNvbG9yIDAuMnMgZWFzZSwgdHJhbnNmb3JtIDAuMTVzIGVhc2U7XG59XG5cbi5idG4tb3V0bGluZTpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWFwcC1wcmltYXJ5LWJnKTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1hcHAtcHJpbWFyeSk7XG59XG5cbi5idG4tb3V0bGluZTphY3RpdmUge1xuICB0cmFuc2Zvcm06IHNjYWxlKDAuOTgpO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hcHAtcHJpbWFyeS1iZy1ob3Zlcik7XG59XG5cbi5idG4tZ2hvc3Qge1xuICB3aWR0aDogYXV0bztcbiAgcGFkZGluZzogOHB4IDE2cHg7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBjb2xvcjogdmFyKC0tYXBwLXRleHQtbXV0ZWQpO1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGNvbG9yIDAuMnMgZWFzZSwgYmFja2dyb3VuZCAwLjJzIGVhc2U7XG59XG5cbi5idG4tZ2hvc3Q6aG92ZXIge1xuICBjb2xvcjogdmFyKC0tYXBwLXRleHQpO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hcHAtc3VyZmFjZS1ob3Zlcik7XG59XG5cbi5idG4tbGcge1xuICBwYWRkaW5nOiAxNnB4IDI4cHg7XG4gIGZvbnQtc2l6ZTogMTZweDtcbn1cblxuLmJ0bi1zbSB7XG4gIHBhZGRpbmc6IDZweCAxMnB4O1xuICBmb250LXNpemU6IDEzcHg7XG59XG5cbi53LWZ1bGwge1xuICB3aWR0aDogMTAwJTtcbn1cblxuLm10LTIge1xuICBtYXJnaW4tdG9wOiA4cHg7XG59XG5cbi5tdC0zIHtcbiAgbWFyZ2luLXRvcDogMTJweDtcbn1cblxuLm10LTQge1xuICBtYXJnaW4tdG9wOiAxNnB4O1xufVxuXG4ucmVnaXN0ZXItbGluayB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgY29sb3I6IHZhcigtLWFwcC10ZXh0LW11dGVkKTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4ucmVnaXN0ZXItbGluayBhIHtcbiAgY29sb3I6IHZhcigtLWFwcC1wcmltYXJ5KTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBmb250LXdlaWdodDogNjAwO1xuICB0cmFuc2l0aW9uOiBjb2xvciAwLjJzIGVhc2U7XG59XG5cbi5yZWdpc3Rlci1saW5rIGE6aG92ZXIge1xuICBjb2xvcjogdmFyKC0tYXBwLXByaW1hcnktaG92ZXIpO1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cblxuLnJlZ2lzdGVyLWJhY2stbGluaywgLmZvcmdvdC1saW5rLCAuYmFjay1saW5rIHtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBjb2xvcjogdmFyKC0tYXBwLXRleHQtbXV0ZWQpO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5yZWdpc3Rlci1iYWNrLWxpbmsgYSwgLmZvcmdvdC1saW5rIGEsIC5iYWNrLWxpbmsgYSB7XG4gIGNvbG9yOiB2YXIoLS1hcHAtcHJpbWFyeSk7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgdHJhbnNpdGlvbjogY29sb3IgMC4ycyBlYXNlO1xufVxuXG4ucmVnaXN0ZXItYmFjay1saW5rIGE6aG92ZXIsIC5mb3Jnb3QtbGluayBhOmhvdmVyLCAuYmFjay1saW5rIGE6aG92ZXIge1xuICBjb2xvcjogdmFyKC0tYXBwLXByaW1hcnktaG92ZXIpO1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cblxuLyogPT09PT0gTG9iYnkgVmlldyA9PT09PSAqL1xuLmxvYmJ5LWhlYWRlciB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWFyZ2luLWJvdHRvbTogMjRweDtcbn1cblxuLmxvYmJ5LWhlYWRlciBoMSB7XG4gIGZvbnQtc2l6ZTogMjhweDtcbiAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgY29sb3I6IHZhcigtLWFwcC1wcmltYXJ5KTtcbiAgbWFyZ2luOiAwIDAgNHB4IDA7XG4gIHRleHQtc2hhZG93OiAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjMpO1xufVxuXG4ubG9iYnktaGVhZGVyIC5zdWJ0aXRsZSB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgY29sb3I6IHZhcigtLWFwcC10ZXh0LW11dGVkKTtcbiAgbWFyZ2luOiAwO1xufVxuXG4udXNlci1zZWN0aW9uIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogMzIwcHg7XG4gIG1hcmdpbi1ib3R0b206IDI0cHg7XG4gIHBhZGRpbmc6IDE2cHg7XG4gIGJhY2tncm91bmQ6IHZhcigtLWFwcC1zdXJmYWNlKTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYXBwLXNlY29uZGFyeS1ib3JkZXIpO1xuICBib3JkZXItcmFkaXVzOiAxMnB4O1xufVxuXG4udXNlci1pbmZvIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIG1hcmdpbi1ib3R0b206IDEycHg7XG4gIHBhZGRpbmctYm90dG9tOiAxMnB4O1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYXBwLXNlY29uZGFyeS1ib3JkZXIpO1xufVxuXG4udXNlcm5hbWUge1xuICBmb250LXNpemU6IDE4cHg7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGNvbG9yOiB2YXIoLS1hcHAtdGV4dCk7XG59XG5cbi5zdGF0cy1zZWN0aW9uIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgZ2FwOiAxMnB4O1xufVxuXG4uc3RhdC1pdGVtIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiA0cHg7XG59XG5cbi5zdGF0LWxhYmVsIHtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBjb2xvcjogdmFyKC0tYXBwLXRleHQtZGltKTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4O1xufVxuXG4uc3RhdC12YWx1ZSB7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgY29sb3I6IHZhcigtLWFwcC1wcmltYXJ5KTtcbn1cblxuLmxvYmJ5LWFjdGlvbnMge1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAzMjBweDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiAxMnB4O1xufVxuXG4ubG9iYnktZm9vdGVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogMzIwcHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgbWFyZ2luLXRvcDogMjRweDtcbiAgcGFkZGluZy10b3A6IDE2cHg7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1hcHAtc2Vjb25kYXJ5LWJvcmRlcik7XG59XG5cbi8qID09PT09IFRoZW1lIEJhZGdlIChMb2JieSBGb290ZXIpID09PT09ICovXG4udGhlbWUtYmFkZ2UtYnRuIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiA4cHg7XG4gIHBhZGRpbmc6IDhweCAxNnB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hcHAtc3VyZmFjZSk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWFwcC1zdXJmYWNlLWJvcmRlcik7XG4gIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbn1cblxuLnRoZW1lLWJhZGdlLWJ0bjpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWFwcC1zdXJmYWNlLWhvdmVyKTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1hcHAtcHJpbWFyeSk7XG59XG5cbi50aGVtZS1kb3Qge1xuICB3aWR0aDogMTJweDtcbiAgaGVpZ2h0OiAxMnB4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJhY2tncm91bmQ6IHZhcigtLWFwcC1wcmltYXJ5KTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjJzIGVhc2U7XG59XG5cbi50aGVtZS1uYW1lIHtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBjb2xvcjogdmFyKC0tYXBwLXRleHQtbXV0ZWQpO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4vKiA9PT09PSBUaGVtZSBTZWxlY3RvciBNb2RhbCA9PT09PSAqL1xuLnRoZW1lLXNlbGVjdG9yLW1vZGFsIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWdhbWUtbW9kYWwtb3ZlcmxheSk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB6LWluZGV4OiAyMDAwO1xufVxuXG4udGhlbWUtc2VsZWN0b3ItY29udGVudCB7XG4gIG1heC1oZWlnaHQ6IDgwdmg7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIHBhZGRpbmc6IDI0cHg7XG4gIGJhY2tncm91bmQ6IHZhcigtLWFwcC1iZyk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWFwcC1zdXJmYWNlLWJvcmRlcik7XG4gIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gIG1heC13aWR0aDogMzYwcHg7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4udGhlbWUtb3B0aW9uLWNhcmQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiAxNnB4IDEycHg7XG4gIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMTVzIGVhc2UsIGJveC1zaGFkb3cgMC4xNXMgZWFzZTtcbiAgYm9yZGVyOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XG59XG5cbi50aGVtZS1vcHRpb24tY2FyZDpob3ZlciB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7XG59XG5cbi50aGVtZS1vcHRpb24tY2FyZC5hY3RpdmUge1xuICBib3gtc2hhZG93OiAwIDAgMCAycHggdmFyKC0tdGhlbWUtcHJpbWFyeSk7XG59XG5cbi50aGVtZS1vcHRpb24tcHJldmlldyB7XG4gIHdpZHRoOiA0MHB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIG1hcmdpbi1ib3R0b206IDhweDtcbn1cblxuLnRoZW1lLW9wdGlvbi1wcmV2aWV3LXRleHQge1xuICBmb250LXNpemU6IDE4cHg7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG59XG5cbi50aGVtZS1vcHRpb24tbmFtZSB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtYXJnaW4tYm90dG9tOiAycHg7XG59XG5cbi50aGVtZS1vcHRpb24tZGVzYyB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgb3BhY2l0eTogMC42O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi50aGVtZS1vcHRpb24tYWN0aXZlLWJhZGdlIHtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBmb250LXdlaWdodDogNzAwO1xuICBtYXJnaW4tdG9wOiA0cHg7XG59XG5cbi8qIFRoZW1lLXNwZWNpZmljIGNhcmQgc3R5bGVzICovXG4udGhlbWUtb3B0aW9uLWNhcmRbZGF0YS10aGVtZS1pZD1cImdvbGRlbi1hc2NlbnRcIl0ge1xuICBiYWNrZ3JvdW5kOiAjMGEwYTBhO1xuICBib3JkZXItY29sb3I6ICNkNGFmMzc7XG59XG4udGhlbWUtb3B0aW9uLWNhcmRbZGF0YS10aGVtZS1pZD1cImdvbGRlbi1hc2NlbnRcIl0gLnRoZW1lLW9wdGlvbi1wcmV2aWV3IHtcbiAgYmFja2dyb3VuZDogI2Q0YWYzNztcbn1cbi50aGVtZS1vcHRpb24tY2FyZFtkYXRhLXRoZW1lLWlkPVwiZ29sZGVuLWFzY2VudFwiXSAudGhlbWUtb3B0aW9uLXByZXZpZXctdGV4dCB7XG4gIGNvbG9yOiAjMGEwYTBhO1xufVxuLnRoZW1lLW9wdGlvbi1jYXJkW2RhdGEtdGhlbWUtaWQ9XCJnb2xkZW4tYXNjZW50XCJdIC50aGVtZS1vcHRpb24tbmFtZSxcbi50aGVtZS1vcHRpb24tY2FyZFtkYXRhLXRoZW1lLWlkPVwiZ29sZGVuLWFzY2VudFwiXSAudGhlbWUtb3B0aW9uLWRlc2MsXG4udGhlbWUtb3B0aW9uLWNhcmRbZGF0YS10aGVtZS1pZD1cImdvbGRlbi1hc2NlbnRcIl0gLnRoZW1lLW9wdGlvbi1hY3RpdmUtYmFkZ2Uge1xuICBjb2xvcjogI2Q0YWYzNztcbn1cblxuLnRoZW1lLW9wdGlvbi1jYXJkW2RhdGEtdGhlbWUtaWQ9XCJyb3lhbC1lbWVyYWxkXCJdIHtcbiAgYmFja2dyb3VuZDogIzBhMWEwZjtcbiAgYm9yZGVyLWNvbG9yOiAjMjJjNTVlO1xufVxuLnRoZW1lLW9wdGlvbi1jYXJkW2RhdGEtdGhlbWUtaWQ9XCJyb3lhbC1lbWVyYWxkXCJdIC50aGVtZS1vcHRpb24tcHJldmlldyB7XG4gIGJhY2tncm91bmQ6ICMyMmM1NWU7XG59XG4udGhlbWUtb3B0aW9uLWNhcmRbZGF0YS10aGVtZS1pZD1cInJveWFsLWVtZXJhbGRcIl0gLnRoZW1lLW9wdGlvbi1wcmV2aWV3LXRleHQge1xuICBjb2xvcjogIzBhMWEwZjtcbn1cbi50aGVtZS1vcHRpb24tY2FyZFtkYXRhLXRoZW1lLWlkPVwicm95YWwtZW1lcmFsZFwiXSAudGhlbWUtb3B0aW9uLW5hbWUsXG4udGhlbWUtb3B0aW9uLWNhcmRbZGF0YS10aGVtZS1pZD1cInJveWFsLWVtZXJhbGRcIl0gLnRoZW1lLW9wdGlvbi1kZXNjLFxuLnRoZW1lLW9wdGlvbi1jYXJkW2RhdGEtdGhlbWUtaWQ9XCJyb3lhbC1lbWVyYWxkXCJdIC50aGVtZS1vcHRpb24tYWN0aXZlLWJhZGdlIHtcbiAgY29sb3I6ICMyMmM1NWU7XG59XG5cbi50aGVtZS1vcHRpb24tY2FyZFtkYXRhLXRoZW1lLWlkPVwiY3JpbXNvbi12ZWx2ZXRcIl0ge1xuICBiYWNrZ3JvdW5kOiAjMWEwYTBhO1xuICBib3JkZXItY29sb3I6ICNlZjQ0NDQ7XG59XG4udGhlbWUtb3B0aW9uLWNhcmRbZGF0YS10aGVtZS1pZD1cImNyaW1zb24tdmVsdmV0XCJdIC50aGVtZS1vcHRpb24tcHJldmlldyB7XG4gIGJhY2tncm91bmQ6ICNlZjQ0NDQ7XG59XG4udGhlbWUtb3B0aW9uLWNhcmRbZGF0YS10aGVtZS1pZD1cImNyaW1zb24tdmVsdmV0XCJdIC50aGVtZS1vcHRpb24tcHJldmlldy10ZXh0IHtcbiAgY29sb3I6ICMxYTBhMGE7XG59XG4udGhlbWUtb3B0aW9uLWNhcmRbZGF0YS10aGVtZS1pZD1cImNyaW1zb24tdmVsdmV0XCJdIC50aGVtZS1vcHRpb24tbmFtZSxcbi50aGVtZS1vcHRpb24tY2FyZFtkYXRhLXRoZW1lLWlkPVwiY3JpbXNvbi12ZWx2ZXRcIl0gLnRoZW1lLW9wdGlvbi1kZXNjLFxuLnRoZW1lLW9wdGlvbi1jYXJkW2RhdGEtdGhlbWUtaWQ9XCJjcmltc29uLXZlbHZldFwiXSAudGhlbWUtb3B0aW9uLWFjdGl2ZS1iYWRnZSB7XG4gIGNvbG9yOiAjZWY0NDQ0O1xufVxuXG4udGhlbWUtb3B0aW9uLWNhcmRbZGF0YS10aGVtZS1pZD1cIm1pZG5pZ2h0LXNhcHBoaXJlXCJdIHtcbiAgYmFja2dyb3VuZDogIzBhMTYyODtcbiAgYm9yZGVyLWNvbG9yOiAjM2I4MmY2O1xufVxuLnRoZW1lLW9wdGlvbi1jYXJkW2RhdGEtdGhlbWUtaWQ9XCJtaWRuaWdodC1zYXBwaGlyZVwiXSAudGhlbWUtb3B0aW9uLXByZXZpZXcge1xuICBiYWNrZ3JvdW5kOiAjM2I4MmY2O1xufVxuLnRoZW1lLW9wdGlvbi1jYXJkW2RhdGEtdGhlbWUtaWQ9XCJtaWRuaWdodC1zYXBwaGlyZVwiXSAudGhlbWUtb3B0aW9uLXByZXZpZXctdGV4dCB7XG4gIGNvbG9yOiAjMGExNjI4O1xufVxuLnRoZW1lLW9wdGlvbi1jYXJkW2RhdGEtdGhlbWUtaWQ9XCJtaWRuaWdodC1zYXBwaGlyZVwiXSAudGhlbWUtb3B0aW9uLW5hbWUsXG4udGhlbWUtb3B0aW9uLWNhcmRbZGF0YS10aGVtZS1pZD1cIm1pZG5pZ2h0LXNhcHBoaXJlXCJdIC50aGVtZS1vcHRpb24tZGVzYyxcbi50aGVtZS1vcHRpb24tY2FyZFtkYXRhLXRoZW1lLWlkPVwibWlkbmlnaHQtc2FwcGhpcmVcIl0gLnRoZW1lLW9wdGlvbi1hY3RpdmUtYmFkZ2Uge1xuICBjb2xvcjogIzNiODJmNjtcbn1cblxuLnRoZW1lLW9wdGlvbi1jYXJkW2RhdGEtdGhlbWUtaWQ9XCJyb3lhbC1hbWV0aHlzdFwiXSB7XG4gIGJhY2tncm91bmQ6ICMxYTBhMmU7XG4gIGJvcmRlci1jb2xvcjogIzhiNWNmNjtcbn1cbi50aGVtZS1vcHRpb24tY2FyZFtkYXRhLXRoZW1lLWlkPVwicm95YWwtYW1ldGh5c3RcIl0gLnRoZW1lLW9wdGlvbi1wcmV2aWV3IHtcbiAgYmFja2dyb3VuZDogIzhiNWNmNjtcbn1cbi50aGVtZS1vcHRpb24tY2FyZFtkYXRhLXRoZW1lLWlkPVwicm95YWwtYW1ldGh5c3RcIl0gLnRoZW1lLW9wdGlvbi1wcmV2aWV3LXRleHQge1xuICBjb2xvcjogIzFhMGEyZTtcbn1cbi50aGVtZS1vcHRpb24tY2FyZFtkYXRhLXRoZW1lLWlkPVwicm95YWwtYW1ldGh5c3RcIl0gLnRoZW1lLW9wdGlvbi1uYW1lLFxuLnRoZW1lLW9wdGlvbi1jYXJkW2RhdGEtdGhlbWUtaWQ9XCJyb3lhbC1hbWV0aHlzdFwiXSAudGhlbWUtb3B0aW9uLWRlc2MsXG4udGhlbWUtb3B0aW9uLWNhcmRbZGF0YS10aGVtZS1pZD1cInJveWFsLWFtZXRoeXN0XCJdIC50aGVtZS1vcHRpb24tYWN0aXZlLWJhZGdlIHtcbiAgY29sb3I6ICM4YjVjZjY7XG59XG4iLCIvKiA9PT09PSBQbGF5ZXIgRGlzcGxheXMgPT09PT0gKi9cbi5wbGF5ZXItZGlzcGxheSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG4ucGFydG5lci1kaXNwbGF5IHtcbiAgZ3JpZC1hcmVhOiBwYXJ0bmVyO1xufVxuXG4ub3Bwb25lbnQtZGlzcGxheS5sZWZ0LW9wcG9uZW50IHtcbiAgZ3JpZC1hcmVhOiBsZWZ0LW9wcG9uZW50O1xufVxuXG4ub3Bwb25lbnQtZGlzcGxheS5yaWdodC1vcHBvbmVudCB7XG4gIGdyaWQtYXJlYTogcmlnaHQtb3Bwb25lbnQ7XG59XG5cbi5wbGF5ZXItaW5mbyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogdmFyKC0tcGxheWVyLWluZm8tZ2FwKTtcbiAgcGFkZGluZzogdmFyKC0tcGxheWVyLWluZm8tcGFkZGluZyk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXBsYXllci1pbmZvLXJhZGl1cyk7XG4gIGJhY2tncm91bmQ6IHZhcigtLWdhbWUtcGxheWVyLWJnKTtcbiAgbWluLXdpZHRoOiB2YXIoLS1wbGF5ZXItaW5mby1taW4td2lkdGgpO1xufVxuXG4ucGxheWVyLWluZm8uYWN0aXZlIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tZ2FtZS1wbGF5ZXItYWN0aXZlLWJnKTtcbiAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tZ2FtZS1wbGF5ZXItYWN0aXZlLWJvcmRlcik7XG59XG5cbi5wbGF5ZXItYXZhdGFyIHtcbiAgd2lkdGg6IHZhcigtLWF2YXRhci1zaXplKTtcbiAgaGVpZ2h0OiB2YXIoLS1hdmF0YXItc2l6ZSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLWF2YXRhci1yYWRpdXMpO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1nYW1lLWF2YXRhci1iZyk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZvbnQtc2l6ZTogdmFyKC0tYXZhdGFyLWZvbnQtc2l6ZSk7XG59XG5cbi5hY3RpdmUtcmluZyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQ6IHZhcigtLWFjdGl2ZS1yaW5nLWluc2V0KTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBib3JkZXI6IHZhcigtLWFjdGl2ZS1yaW5nLXdpZHRoKSBzb2xpZCB2YXIoLS1nYW1lLWFjY2VudC1yaW5nKTtcbiAgYW5pbWF0aW9uOiBwdWxzZS1yaW5nIDEuNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG59XG5cbi5jcm93bi1pY29uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IHZhcigtLWNyb3duLWljb24tdG9wKTtcbiAgZm9udC1zaXplOiB2YXIoLS1jcm93bi1pY29uLXNpemUpO1xufVxuXG4ucGxheWVyLW5hbWUge1xuICBmb250LXNpemU6IHZhcigtLXBsYXllci1uYW1lLXNpemUpO1xuICBmb250LXdlaWdodDogNjAwO1xuICBjb2xvcjogdmFyKC0tZ2FtZS10ZXh0KTtcbiAgbWF4LXdpZHRoOiA2Y2g7XG59XG5cbi5jYXJkLWNvdW50IHtcbiAgZm9udC1zaXplOiB2YXIoLS1jYXJkLWNvdW50LXNpemUpO1xuICBjb2xvcjogdmFyKC0tZ2FtZS10ZXh0LW11dGVkKTtcbn1cblxuLyogVGVhbSBMYWJlbHMgKi9cbi50ZWFtLWxhYmVsIHtcbiAgZm9udC1zaXplOiB2YXIoLS10ZWFtLWxhYmVsLXNpemUpO1xuICBmb250LXdlaWdodDogNzAwO1xuICBwYWRkaW5nOiB2YXIoLS10ZWFtLWxhYmVsLXBhZGRpbmcpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS10ZWFtLWxhYmVsLXJhZGl1cyk7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGxldHRlci1zcGFjaW5nOiAwLjVweDtcbn1cblxuLnRlYW0tbGFiZWwudGVhbS0wIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tZ2FtZS10ZWFtLTAtYmcpO1xuICBjb2xvcjogdmFyKC0tZ2FtZS10ZWFtLTAtdGV4dCk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWdhbWUtdGVhbS0wLWJvcmRlcik7XG59XG5cbi50ZWFtLWxhYmVsLnRlYW0tMSB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWdhbWUtdGVhbS0xLWJnKTtcbiAgY29sb3I6IHZhcigtLWdhbWUtdGVhbS0xLXRleHQpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1nYW1lLXRlYW0tMS1ib3JkZXIpO1xufVxuXG4vKiBVc2VyIERpc3BsYXkgKGJvdHRvbSByaWdodCBjb3JuZXIgb2YgdXNlciBoYW5kIGFyZWEpICovXG4udXNlci1kaXNwbGF5IHtcbiAgbWFyZ2luLXRvcDogNXB4O1xufVxuXG4udXNlci1kaXNwbGF5IC5wbGF5ZXItaW5mbyB7XG4gIG1pbi13aWR0aDogdmFyKC0tdXNlci1kaXNwbGF5LXBsYXllci1taW4td2lkdGgpO1xuICBwYWRkaW5nOiB2YXIoLS11c2VyLWRpc3BsYXktcGxheWVyLXBhZGRpbmcpO1xufVxuXG4udXNlci1kaXNwbGF5IC5wbGF5ZXItbmFtZSB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tdXNlci1kaXNwbGF5LW5hbWUtc2l6ZSk7XG59XG5cbi51c2VyLWRpc3BsYXkgLnRlYW0tbGFiZWwge1xuICBmb250LXNpemU6IHZhcigtLXVzZXItZGlzcGxheS10ZWFtLWxhYmVsLXNpemUpO1xuICBwYWRkaW5nOiB2YXIoLS11c2VyLWRpc3BsYXktdGVhbS1sYWJlbC1wYWRkaW5nKTtcbn1cblxuLnVzZXItZGlzcGxheSAuY2FyZC1jb3VudCB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tdXNlci1kaXNwbGF5LWNhcmQtY291bnQtc2l6ZSk7XG59XG5cbi8qID09PT09IFRyaWNrIEFyZWEgKENlbnRlcikgPT09PT0gKi9cbi50cmljay1hcmVhIHtcbiAgZ3JpZC1hcmVhOiB0cmljay1hcmVhO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS10cmljay1hcmVhLXJhZGl1cyk7XG4gIGJhY2tncm91bmQ6IHZhcigtLWdhbWUtdHJpY2stYXJlYS1iZyk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjEyLCAxNzUsIDU1LCAwLjE1KTtcbiAgLyogR29sZCB0aW50ZWQgYm9yZGVyICovXG59XG5cbi50cmljay1hcmVhOjpiZWZvcmUge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogbWluKDgwJSwgMTUwcHgpO1xuICBhc3BlY3QtcmF0aW86IDEgLyAxO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHJnYmEoMjEyLCAxNzUsIDU1LCAwLjE1KSAwJSwgcmdiYSgyMTIsIDE3NSwgNTUsIDApIDcwJSk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjEyLCAxNzUsIDU1LCAwLjIpO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMDtcbn1cblxuLnRyaWNrLXBsYWNlaG9sZGVyIHtcbiAgY29sb3I6IHZhcigtLWdhbWUtdGV4dC1kaW0pO1xuICBmb250LXNpemU6IHZhcigtLXRyaWNrLXBsYWNlaG9sZGVyLXNpemUpO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbi8qIENpcmN1bGFyIGNhcmQgYXJyYW5nZW1lbnQgKi9cbi50cmljay1jYXJkcyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMjRweDtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHotaW5kZXg6IDE7XG4gIC8qIGVuc3VyZSBjYXJkcyBhcHBlYXIgb24gdG9wIG9mIGJhY2tncm91bmQgKi9cbn1cblxuLyogPT09PT0gVXNlciBIYW5kIChCb3R0b20gLSBUaHVtYiBab25lKSA9PT09PSAqL1xuLnVzZXItaGFuZCB7XG4gIGdyaWQtYXJlYTogdXNlci1oYW5kO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAvKiBEcm9wIGNhcmRzIHRvIHRoZSBzaGVsZiBib3VuZGFyeSAqL1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgcGFkZGluZzogMCA0cHggOHB4O1xuICAvKiBSZW1vdmUgdGhpY2sgdG9wIHBhZGRpbmcsIGVuc3VyZSA4cHggYm90dG9tIHBhZCAqL1xuICBiYWNrZ3JvdW5kOiByZ2JhKDUsIDEwLCAyMCwgMC42KTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyMTIsIDE3NSwgNTUsIDAuNSk7XG4gIC8qIENhc2lubyBnb2xkIG91dGxpbmUgKi9cbiAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDE1cHggcmdiYSgwLCAwLCAwLCAwLjgpLCAwIDAgMTBweCByZ2JhKDIxMiwgMTc1LCA1NSwgMC4wNSk7XG4gIC8qIGlubmVyIHNoYWRvdyAqL1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIC8qIFNxdWFyZWQgb2ZmIGEgYml0IG1vcmUgKi9cbiAgbWFyZ2luOiA0cHg7XG59XG5cbi5oYW5kLWNhcmRzIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBtYXgtaGVpZ2h0OiAxMDAlO1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgLyogZW5zdXJlIG92ZXJsYXBwaW5nIGNhcmRzIGFyZW4ndCBjbGlwcGVkICovXG4gIHBhZGRpbmc6IDAgMjBweDtcbn1cblxuLyogRm9yY2UgaG9yaXpvbnRhbCBvdmVybGFwIHRvIGZpdCA4IGNhcmRzIGNsZWFubHkgb24gbmFycm93IG1vYmlsZSBkZXZpY2VzIHNlYW1sZXNzbHkgY2VudGVyZWQgKi9cbi5oYW5kLWNhcmRzIC5jYXJkIHtcbiAgbWFyZ2luOiAwIG1heCgtM3Z3LCAtMTJweCk7XG4gIC8qIHJlZHVjZWQgb3ZlcmxhcCB0byBrZWVwIGNhcmRzIGZ1bGx5IGluIHZpZXcgKi9cbn1cblxuLyogPT09PT0gT2ZmbGluZSBHYW1lIFZpZXcgPT09PT0gKi9cbi5vZmZsaW5lLWdhbWUtdmlldyB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZy10b3A6IDQ4cHg7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWFwcC1iZy1ncmFkaWVudC1zdGFydCkgMCUsIHZhcigtLWFwcC1iZy1ncmFkaWVudC1taWQpIDUwJSwgdmFyKC0tYXBwLWJnLWdyYWRpZW50LWVuZCkgMTAwJSk7XG59XG5cbi5vZmZsaW5lLWluZGljYXRvciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiB2YXIoLS1vZmZsaW5lLWluZGljYXRvci10b3ApO1xuICByaWdodDogdmFyKC0tb2ZmbGluZS1pbmRpY2F0b3ItcmlnaHQpO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDRweDtcbiAgcGFkZGluZzogdmFyKC0tb2ZmbGluZS1pbmRpY2F0b3ItcGFkZGluZyk7XG4gIGJhY2tncm91bmQ6IHZhcigtLWdhbWUtb2ZmbGluZS1iZyk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLW9mZmxpbmUtaW5kaWNhdG9yLXJhZGl1cyk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tb2ZmbGluZS1pbmRpY2F0b3Itc2l6ZSk7XG4gIGNvbG9yOiB2YXIoLS1nYW1lLW9mZmxpbmUtdGV4dCk7XG4gIHotaW5kZXg6IDIwO1xufVxuXG4ub2ZmbGluZS1pY29uIHtcbiAgZm9udC1zaXplOiB2YXIoLS1vZmZsaW5lLWljb24tc2l6ZSk7XG59XG5cbi5yZXR1cm4tdG8tbG9iYnktYnRuIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IHZhcigtLXJldHVybi1idG4tYm90dG9tKTtcbiAgcmlnaHQ6IHZhcigtLXJldHVybi1idG4tcmlnaHQpO1xuICBwYWRkaW5nOiB2YXIoLS1yZXR1cm4tYnRuLXBhZGRpbmcpO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1nYW1lLWxvYmJ5LWJ0bi1iZyk7XG4gIGNvbG9yOiB2YXIoLS1nYW1lLXRleHQpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1nYW1lLWxvYmJ5LWJ0bi1ib3JkZXIpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yZXR1cm4tYnRuLXJhZGl1cyk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tcmV0dXJuLWJ0bi1zaXplKTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIC8qIGFsbG93IGxhcmdlIGNlbnRlciBzdWl0IGFuZCBvdmVybGFwIHRvIGJlIGZ1bGx5IHZpc2libGUgKi9cbiAgei1pbmRleDogMjA7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4ycyBlYXNlO1xufVxuXG4ucmV0dXJuLXRvLWxvYmJ5LWJ0bjphY3RpdmUge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1nYW1lLWxvYmJ5LWJ0bi1ob3Zlcik7XG59XG5cbi8qID09PT09IE1vZGFscyAtIFVzaW5nIERhaXN5VUkgPT09PT0gKi9cbi8qIEN1c3RvbSBtb2RhbCBzdHlsZXMgcmVtb3ZlZCAtIHVzaW5nIERhaXN5VUkgbW9kYWwgY29tcG9uZW50cyAqL1xuXG4vKiA9PT09PSBHYW1lIFZpZXcgKGxlZ2FjeSkgPT09PT0gKi9cbi5nYW1lLXZpZXcge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tYXBwLWJnLWdyYWRpZW50LXN0YXJ0KSAwJSwgdmFyKC0tYXBwLWJnLWdyYWRpZW50LW1pZCkgNTAlLCB2YXIoLS1hcHAtYmctZ3JhZGllbnQtZW5kKSAxMDAlKTtcbn1cblxuLmdhbWUtcm9vbSB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcGFkZGluZzogdmFyKC0tZ2FtZS1yb29tLXBhZGRpbmcpO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hcHAtc3VyZmFjZSk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWFwcC1zdXJmYWNlLWJvcmRlcik7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLWdhbWUtcm9vbS1yYWRpdXMpO1xuICBtYXgtd2lkdGg6IHZhcigtLWdhbWUtcm9vbS1tYXgtd2lkdGgpO1xufVxuXG4uZ2FtZS1yb29tIGgyIHtcbiAgZm9udC1zaXplOiB2YXIoLS1nYW1lLXJvb20tdGl0bGUtc2l6ZSk7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGNvbG9yOiB2YXIoLS1hcHAtcHJpbWFyeSk7XG4gIG1hcmdpbjogMCAwIDhweCAwO1xufVxuXG4uZ2FtZS1yb29tIHAge1xuICBmb250LXNpemU6IHZhcigtLWdhbWUtcm9vbS1kZXNjLXNpemUpO1xuICBjb2xvcjogdmFyKC0tYXBwLXRleHQtbXV0ZWQpO1xuICBtYXJnaW46IDAgMCAyNHB4IDA7XG59IiwiLyogPT09PT0gT25saW5lIEdhbWUgQ29udGFpbmVyID09PT09ICovXG4ub25saW5lLWdhbWUtY29udGFpbmVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgcGFkZGluZy10b3A6IHZhcigtLWFwcC1oZWFkZXItaGVpZ2h0KTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tYXBwLWJnLWdyYWRpZW50LXN0YXJ0KSAwJSwgdmFyKC0tYXBwLWJnLWdyYWRpZW50LW1pZCkgNTAlLCB2YXIoLS1hcHAtYmctZ3JhZGllbnQtZW5kKSAxMDAlKTtcbn1cblxuLyogV2FpdGluZyBSb29tIFZpZXcgKi9cbi53YWl0aW5nLXJvb20td3JhcHBlciB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1hcHAtYmctZ3JhZGllbnQtc3RhcnQpIDAlLCB2YXIoLS1hcHAtYmctZ3JhZGllbnQtbWlkKSA1MCUsIHZhcigtLWFwcC1iZy1ncmFkaWVudC1lbmQpIDEwMCUpO1xufVxuXG4ud2FpdGluZy1yb29tLWxvYWRpbmcge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IHZhcigtLWNvbnRyb2xzLWdhcCk7XG4gIGNvbG9yOiB2YXIoLS1hcHAtdGV4dCk7XG59XG5cbi53YWl0aW5nLXJvb20tbG9hZGluZyBwIHtcbiAgZm9udC1zaXplOiB2YXIoLS1qb2luLXJvb20tYnRuLXNpemUpO1xuICBjb2xvcjogdmFyKC0tYXBwLXRleHQtbXV0ZWQpO1xufVxuXG4ud2FpdGluZy1yb29tLXZpZXcge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBwYWRkaW5nOiB2YXIoLS13YWl0aW5nLXJvb20tcGFkZGluZyk7XG4gIHBhZGRpbmctdG9wOiB2YXIoLS13YWl0aW5nLXJvb20tcGFkZGluZy10b3ApO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1hcHAtYmctZ3JhZGllbnQtc3RhcnQpIDAlLCB2YXIoLS1hcHAtYmctZ3JhZGllbnQtbWlkKSA1MCUsIHZhcigtLWFwcC1iZy1ncmFkaWVudC1lbmQpIDEwMCUpO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG5cbi53YWl0aW5nLXJvb20taGVhZGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiB2YXIoLS13YWl0aW5nLXJvb20taGVhZGVyLWdhcCk7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXdhaXRpbmctcm9vbS1oZWFkZXItbWFyZ2luLWJvdHRvbSk7XG59XG5cbi53YWl0aW5nLXJvb20tYmFjay1idG4ge1xuICBmbGV4LXNocmluazogMDtcbn1cblxuLndhaXRpbmctcm9vbS10aXRsZSB7XG4gIGZvbnQtc2l6ZTogdmFyKC0td2FpdGluZy1yb29tLXRpdGxlLXNpemUpO1xuICBmb250LXdlaWdodDogNzAwO1xuICBjb2xvcjogdmFyKC0tYXBwLXRleHQpO1xuICBtYXJnaW46IDA7XG59XG5cbi53YWl0aW5nLXJvb20taW5mbyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogdmFyKC0td2FpdGluZy1yb29tLWluZm8tZ2FwKTtcbiAgcGFkZGluZzogdmFyKC0td2FpdGluZy1yb29tLWluZm8tcGFkZGluZyk7XG4gIGJhY2tncm91bmQ6IHZhcigtLWFwcC1zdXJmYWNlKTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYXBwLXN1cmZhY2UtYm9yZGVyKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0td2FpdGluZy1yb29tLWluZm8tcmFkaXVzKTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0td2FpdGluZy1yb29tLWluZm8tbWFyZ2luLWJvdHRvbSk7XG4gIGJhY2tkcm9wLWZpbHRlcjogYmx1cig4cHgpO1xufVxuXG4udHJ1bXAtZGVjbGFyZXItc2VjdGlvbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogdmFyKC0tY29udHJvbHMtZ2FwKTtcbiAgcGFkZGluZzogdmFyKC0tdHJ1bXAtZGVjbGFyZXItcGFkZGluZyk7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWFwcC1wcmltYXJ5KSAwJSwgdmFyKC0tYXBwLXByaW1hcnktZGFyaywgIzFhMzY1ZCkgMTAwJSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXRydW1wLWRlY2xhcmVyLXJhZGl1cyk7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgZm9udC1zaXplOiB2YXIoLS10cnVtcC1kZWNsYXJlci1zaXplKTtcbiAgYW5pbWF0aW9uOiBwdWxzZS1nbG93IDJzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xufVxuXG5Aa2V5ZnJhbWVzIHB1bHNlLWdsb3cge1xuICAwJSwgMTAwJSB7IGJveC1zaGFkb3c6IDAgMCA4cHggcmdiYSg1OSwgMTMwLCAyNDYsIDAuNSk7IH1cbiAgNTAlIHsgYm94LXNoYWRvdzogMCAwIDE2cHggcmdiYSg1OSwgMTMwLCAyNDYsIDAuOCk7IH1cbn1cblxuLnRydW1wLWRlY2xhcmVyLWxhYmVsIHtcbiAgZm9udC1zaXplOiB2YXIoLS10cnVtcC1kZWNsYXJlci1sYWJlbC1zaXplKTtcbn1cblxuLnRydW1wLWRlY2xhcmVyLW5hbWUge1xuICBmb250LXdlaWdodDogNzAwO1xufVxuXG4udHJ1bXAtZGVjbGFyZXItYmFkZ2Uge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogdmFyKC0tdHJ1bXAtZGVjbGFyZXItYmFkZ2UtdG9wKTtcbiAgcmlnaHQ6IHZhcigtLXRydW1wLWRlY2xhcmVyLWJhZGdlLXJpZ2h0KTtcbiAgZm9udC1zaXplOiB2YXIoLS10cnVtcC1kZWNsYXJlci1iYWRnZS1zaXplKTtcbiAgYW5pbWF0aW9uOiBib3VuY2UgMXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG59XG5cbkBrZXlmcmFtZXMgYm91bmNlIHtcbiAgMCUsIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH1cbiAgNTAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpOyB9XG59XG5cbi50cnVtcC1kZWNsYXJlci10ZXh0IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGZvbnQtc2l6ZTogdmFyKC0tdHJ1bXAtZGVjbGFyZXItdGV4dC1zaXplKTtcbiAgY29sb3I6IHZhcigtLWFwcC1wcmltYXJ5KTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgbWFyZ2luLXRvcDogMnB4O1xufVxuXG4ucm9vbS1jb2RlLXNlY3Rpb24ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IHZhcigtLXJvb20tY29kZS1nYXApO1xufVxuXG4ucm9vbS1jb2RlLWxhYmVsIHtcbiAgZm9udC1zaXplOiB2YXIoLS1yb29tLWNvZGUtbGFiZWwtc2l6ZSk7XG4gIGNvbG9yOiB2YXIoLS1hcHAtdGV4dC1tdXRlZCk7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGxldHRlci1zcGFjaW5nOiB2YXIoLS1yb29tLWNvZGUtbGFiZWwtc3BhY2luZyk7XG59XG5cbi5yb29tLWNvZGUtZGlzcGxheSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogdmFyKC0tcm9vbS1jb2RlLXNwYWNpbmcpO1xufVxuXG4ucm9vbS1jb2RlLXRleHQge1xuICBmb250LXNpemU6IHZhcigtLXJvb20tY29kZS1zaXplKTtcbiAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXJvb20tY29kZS1zcGFjaW5nKTtcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTtcbiAgY29sb3I6IHZhcigtLWFwcC1wcmltYXJ5KTtcbn1cblxuLnJvb20tdGltZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IHZhcigtLXJvb20tdGltZXItZ2FwKTtcbiAgZm9udC1zaXplOiB2YXIoLS1yb29tLXRpbWVyLXNpemUpO1xuICBmb250LXdlaWdodDogNjAwO1xuICBjb2xvcjogdmFyKC0tYXBwLXRleHQpO1xufVxuXG4ucm9vbS10aW1lciAudGltZXItaWNvbiB7XG4gIGNvbG9yOiB2YXIoLS1hcHAtdGV4dC1tdXRlZCk7XG59XG5cbi5yb29tLXRpbWVyIC50aW1lci13YXJuaW5nIHtcbiAgY29sb3I6IHZhcigtLWFwcC1lcnJvci10ZXh0KTtcbn1cblxuLnRpbWVyLXdhcm5pbmcge1xuICBjb2xvcjogdmFyKC0tYXBwLWVycm9yLXRleHQpO1xufVxuXG4ucm9vbS1wbGF5ZXItY291bnQge1xuICBmb250LXNpemU6IHZhcigtLXJvb20tcGxheWVyLWNvdW50LXNpemUpO1xuICBjb2xvcjogdmFyKC0tYXBwLXRleHQtbXV0ZWQpO1xufVxuXG4vKiBUZWFtIFNsb3RzIC0gU2luZ2xlIENvbHVtbiBMYXlvdXQgKi9cbi50ZWFtLXNsb3RzLWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogdmFyKC0tdGVhbS1zbG90cy1nYXApO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS10ZWFtLXNsb3RzLW1hcmdpbi1ib3R0b20pO1xuICBmbGV4OiAxO1xufVxuXG4udGVhbS1zZWN0aW9uIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tYXBwLXN1cmZhY2UpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1hcHAtc3VyZmFjZS1ib3JkZXIpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS10ZWFtLXNlY3Rpb24tcmFkaXVzKTtcbiAgcGFkZGluZzogdmFyKC0tdGVhbS1zZWN0aW9uLXBhZGRpbmcpO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IHZhcigtLXRlYW0tc2VjdGlvbi1nYXApO1xufVxuXG4udGVhbS1zZWN0aW9uLWhlYWRlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4udGVhbS1wbGF5ZXJzLWxpc3Qge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IHZhcigtLXRlYW0tc2VjdGlvbi1nYXApO1xuICBmbGV4OiAxO1xufVxuXG4udGVhbS1iYWRnZSB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tdGVhbS1iYWRnZS1zaXplKTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgcGFkZGluZzogdmFyKC0tdGVhbS1iYWRnZS1wYWRkaW5nKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGVhbS1iYWRnZS1yYWRpdXMpO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBsZXR0ZXItc3BhY2luZzogdmFyKC0tdGVhbS1iYWRnZS1zcGFjaW5nKTtcbn1cblxuLnRlYW0tYmFkZ2UtMCB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWdhbWUtdGVhbS0wLWJnLCByZ2JhKDU5LCAxMzAsIDI0NiwgMC4yKSk7XG4gIGNvbG9yOiB2YXIoLS1nYW1lLXRlYW0tMC10ZXh0LCAjNjBhNWZhKTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZ2FtZS10ZWFtLTAtYm9yZGVyLCByZ2JhKDU5LCAxMzAsIDI0NiwgMC40KSk7XG59XG5cbi50ZWFtLWJhZGdlLTEge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1nYW1lLXRlYW0tMS1iZywgcmdiYSgyMzksIDY4LCA2OCwgMC4yKSk7XG4gIGNvbG9yOiB2YXIoLS1nYW1lLXRlYW0tMS10ZXh0LCAjZjg3MTcxKTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZ2FtZS10ZWFtLTEtYm9yZGVyLCByZ2JhKDIzOSwgNjgsIDY4LCAwLjQpKTtcbn1cblxuLnBsYXllci1zbG90IHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiB2YXIoLS1wbGF5ZXItc2xvdC1nYXApO1xuICBwYWRkaW5nOiB2YXIoLS1wbGF5ZXItc2xvdC1wYWRkaW5nKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcGxheWVyLXNsb3QtcmFkaXVzKTtcbiAgYmFja2dyb3VuZDogdmFyKC0tYXBwLXN1cmZhY2UpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1hcHAtc3VyZmFjZS1ib3JkZXIpO1xufVxuXG4ucGxheWVyLXNsb3QtYWRtaW4ge1xuICBib3JkZXItY29sb3I6IHZhcigtLWFwcC1wcmltYXJ5KTtcbn1cblxuLnBsYXllci1zbG90LWVtcHR5IHtcbiAgYm9yZGVyLXN0eWxlOiBkYXNoZWQ7XG4gIG9wYWNpdHk6IDAuNjtcbn1cblxuLnBsYXllci1hdmF0YXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4uYXZhdGFyLWNpcmNsZSB7XG4gIHdpZHRoOiB2YXIoLS1zbG90LWF2YXRhci1zaXplKTtcbiAgaGVpZ2h0OiB2YXIoLS1zbG90LWF2YXRhci1zaXplKTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1nYW1lLWF2YXRhci1iZywgdmFyKC0tYXBwLXByaW1hcnkpKTtcbiAgY29sb3I6IHdoaXRlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgZm9udC1zaXplOiB2YXIoLS1zbG90LWF2YXRhci1mb250LXNpemUpO1xuICBmb250LXdlaWdodDogNzAwO1xufVxuXG4uYXZhdGFyLWVtcHR5IHtcbiAgYmFja2dyb3VuZDogdmFyKC0tYXBwLXN1cmZhY2UtYm9yZGVyKTtcbiAgY29sb3I6IHZhcigtLWFwcC10ZXh0LW11dGVkKTtcbn1cblxuLmFkbWluLWNyb3duIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IHZhcigtLWFkbWluLWNyb3duLXRvcCk7XG4gIHJpZ2h0OiB2YXIoLS1hZG1pbi1jcm93bi1yaWdodCk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tYWRtaW4tY3Jvd24tc2l6ZSk7XG59XG5cbi5wbGF5ZXItaW5mbyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogMnB4O1xuICBtaW4td2lkdGg6IDA7XG59XG5cbi5wbGF5ZXItbmFtZSB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tc2xvdC1wbGF5ZXItbmFtZS1zaXplKTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgY29sb3I6IHZhcigtLWFwcC10ZXh0KTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIG1heC13aWR0aDogNmNoO1xufVxuXG4ucGxheWVyLW5hbWUtZW1wdHkge1xuICBmb250LXNpemU6IHZhcigtLXNsb3QtcGxheWVyLW5hbWUtZW1wdHktc2l6ZSk7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgY29sb3I6IHZhcigtLWFwcC10ZXh0LW11dGVkKTtcbn1cblxuLmFkbWluLWJhZGdlIHtcbiAgZm9udC1zaXplOiB2YXIoLS1hZG1pbi1iYWRnZS1zaXplKTtcbiAgY29sb3I6IHZhcigtLWFwcC1wcmltYXJ5KTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLyogQWRtaW4gQ29udHJvbHMgKi9cbi53YWl0aW5nLXJvb20tY29udHJvbHMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IHZhcigtLWNvbnRyb2xzLWdhcCk7XG4gIHBhZGRpbmctdG9wOiB2YXIoLS1jb250cm9scy1wYWRkaW5nLXRvcCk7XG4gIGJvcmRlci10b3A6IHZhcigtLWNvbnRyb2xzLWJvcmRlci10b3ApO1xufVxuXG4uYWRtaW4tY29udHJvbHMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6IHZhcigtLWNvbnRyb2xzLWdhcCk7XG59XG5cbi5hZG1pbi1jb250cm9scyAuYnRuIHtcbiAgZmxleDogMTtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi8qIEpvaW4gUm9vbSBNb2RhbCAqL1xuLmpvaW4tcm9vbS1tb2RhbCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogdmFyKC0tam9pbi1yb29tLWdhcCk7XG59XG5cbi5qb2luLXJvb20tdGl0bGUge1xuICBmb250LXNpemU6IHZhcigtLWpvaW4tcm9vbS10aXRsZS1zaXplKTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgY29sb3I6IHZhcigtLWFwcC10ZXh0KTtcbiAgbWFyZ2luOiAwO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5qb2luLXJvb20tY29kZS1pbnB1dCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogdmFyKC0tam9pbi1yb29tLWNvZGUtaW5wdXQtZ2FwKTtcbn1cblxuLmpvaW4tcm9vbS1sYWJlbCB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tam9pbi1yb29tLWxhYmVsLXNpemUpO1xuICBmb250LXdlaWdodDogNjAwO1xuICBjb2xvcjogdmFyKC0tYXBwLXRleHQpO1xufVxuXG4uam9pbi1yb29tLWNvZGUtZmllbGQge1xuICB3aWR0aDogMTAwJTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLWpvaW4tcm9vbS1jb2RlLWZpZWxkLXNwYWNpbmcpO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XG4gIGZvbnQtc2l6ZTogdmFyKC0tam9pbi1yb29tLWNvZGUtZmllbGQtc2l6ZSk7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGJhY2tncm91bmQ6IHZhcigtLWFwcC1pbnB1dC1iZyk7XG4gIGNvbG9yOiB2YXIoLS1hcHAtdGV4dCk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWFwcC1pbnB1dC1ib3JkZXIpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1qb2luLXJvb20tY29kZS1maWVsZC1yYWRpdXMpO1xuICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4xNXMgZWFzZSwgYm94LXNoYWRvdyAwLjE1cyBlYXNlO1xuICBtaW4taGVpZ2h0OiB2YXIoLS1qb2luLXJvb20tY29kZS1maWVsZC1taW4taGVpZ2h0KTtcbiAgcGFkZGluZzogdmFyKC0tam9pbi1yb29tLWNvZGUtZmllbGQtcGFkZGluZyk7XG59XG5cbi5qb2luLXJvb20tY29kZS1maWVsZDpmb2N1cyB7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0tYXBwLXByaW1hcnkpO1xuICBib3gtc2hhZG93OiAwIDAgMCAzcHggdmFyKC0tYXBwLWlucHV0LWZvY3VzLXJpbmcpO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hcHAtaW5wdXQtZm9jdXMtYmcpO1xufVxuXG4uam9pbi1yb29tLWpvaW4tYnRuIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi1oZWlnaHQ6IHZhcigtLWpvaW4tcm9vbS1idG4tbWluLWhlaWdodCk7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBmb250LXNpemU6IHZhcigtLWpvaW4tcm9vbS1idG4tc2l6ZSk7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLWpvaW4tcm9vbS1idG4tcmFkaXVzKTtcbn1cblxuLmpvaW4tcm9vbS1lcnJvciB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tam9pbi1yb29tLWVycm9yLXNpemUpO1xuICBjb2xvcjogdmFyKC0tYXBwLWVycm9yLXRleHQpO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hcHAtZXJyb3ItYmcpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1hcHAtZXJyb3ItYm9yZGVyKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tam9pbi1yb29tLWVycm9yLXJhZGl1cyk7XG4gIHBhZGRpbmc6IHZhcigtLWpvaW4tcm9vbS1lcnJvci1wYWRkaW5nKTtcbn1cblxuLmpvaW4tcm9vbS1kaXZpZGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiB2YXIoLS1qb2luLXJvb20tZGl2aWRlci1nYXApO1xuICBjb2xvcjogdmFyKC0tYXBwLXRleHQtbXV0ZWQpO1xuICBmb250LXNpemU6IHZhcigtLWpvaW4tcm9vbS1kaXZpZGVyLXNpemUpO1xufVxuXG4uam9pbi1yb29tLWRpdmlkZXI6OmJlZm9yZSxcbi5qb2luLXJvb20tZGl2aWRlcjo6YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgZmxleDogMTtcbiAgaGVpZ2h0OiAxcHg7XG4gIGJhY2tncm91bmQ6IHZhcigtLWFwcC1zdXJmYWNlLWJvcmRlcik7XG59XG5cbi5qb2luLXJvb20tcm9vbXMtbGlzdCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogdmFyKC0tam9pbi1yb29tLXJvb21zLWdhcCk7XG59XG5cbi5qb2luLXJvb20tcm9vbXMtdGl0bGUge1xuICBmb250LXNpemU6IHZhcigtLWpvaW4tcm9vbS1yb29tcy10aXRsZS1zaXplKTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgY29sb3I6IHZhcigtLWFwcC10ZXh0KTtcbiAgbWFyZ2luOiAwO1xufVxuXG4uam9pbi1yb29tLWVtcHR5IHtcbiAgZm9udC1zaXplOiB2YXIoLS1qb2luLXJvb20tZW1wdHktc2l6ZSk7XG4gIGNvbG9yOiB2YXIoLS1hcHAtdGV4dC1tdXRlZCk7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcGFkZGluZzogdmFyKC0tam9pbi1yb29tLWVtcHR5LXBhZGRpbmcpO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hcHAtc3VyZmFjZSk7XG4gIGJvcmRlcjogMXB4IGRhc2hlZCB2YXIoLS1hcHAtc3VyZmFjZS1ib3JkZXIpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1qb2luLXJvb20tZW1wdHktcmFkaXVzKTtcbn1cblxuLmpvaW4tcm9vbS1yb29tcyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogdmFyKC0tam9pbi1yb29tLXJvb21zLWdhcCk7XG4gIG1heC1oZWlnaHQ6IG1pbigyMDBweCwgMzV2aCk7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgc2Nyb2xsYmFyLXdpZHRoOiB0aGluO1xuICBzY3JvbGxiYXItY29sb3I6IHZhcigtLWFwcC1zdXJmYWNlLWJvcmRlcikgdHJhbnNwYXJlbnQ7XG59XG5cbi5qb2luLXJvb20tcm9vbXM6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgd2lkdGg6IHZhcigtLWpvaW4tcm9vbS1yb29tLWNhcmQtYmFyLXdpZHRoKTtcbn1cblxuLmpvaW4tcm9vbS1yb29tczo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbn1cblxuLmpvaW4tcm9vbS1yb29tczo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hcHAtc3VyZmFjZS1ib3JkZXIpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1qb2luLXJvb20tcm9vbS1jYXJkLXJhZGl1cyk7XG59XG5cbi5qb2luLXJvb20tcm9vbS1jYXJkIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBnYXA6IHZhcigtLWpvaW4tcm9vbS1yb29tLWNhcmQtZ2FwKTtcbiAgcGFkZGluZzogdmFyKC0tam9pbi1yb29tLXJvb20tY2FyZC1wYWRkaW5nKTtcbiAgYmFja2dyb3VuZDogdmFyKC0tYXBwLXN1cmZhY2UpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1hcHAtc3VyZmFjZS1ib3JkZXIpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1qb2luLXJvb20tcm9vbS1jYXJkLXJhZGl1cyk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UsIGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZSwgYm94LXNoYWRvdyAwLjE1cyBlYXNlO1xuICB3aWR0aDogMTAwJTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBtaW4taGVpZ2h0OiB2YXIoLS1qb2luLXJvb20tcm9vbS1jYXJkLW1pbi1oZWlnaHQpO1xufVxuXG4uam9pbi1yb29tLXJvb20tY2FyZDo6YmVmb3JlIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogdmFyKC0tam9pbi1yb29tLXJvb20tY2FyZC1iYXItd2lkdGgpO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQ6IHZhcigtLWFwcC1wcmltYXJ5KTtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjE1cyBlYXNlO1xufVxuXG4uam9pbi1yb29tLXJvb20tY2FyZDpob3ZlciB7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0tYXBwLXByaW1hcnkpO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hcHAtc3VyZmFjZS1ob3Zlcik7XG4gIGJveC1zaGFkb3c6IDAgMnB4IDhweCB2YXIoLS1hcHAtZ2xvdy0xLCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xufVxuXG4uam9pbi1yb29tLXJvb20tY2FyZDpob3Zlcjo6YmVmb3JlIHtcbiAgb3BhY2l0eTogMTtcbn1cblxuLmpvaW4tcm9vbS1yb29tLWNhcmQ6YWN0aXZlIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjk4KTtcbn1cblxuLmpvaW4tcm9vbS1yb29tLWNvZGUge1xuICBmb250LXNpemU6IHZhcigtLWpvaW4tcm9vbS1yb29tLWNvZGUtc2l6ZSk7XG4gIGZvbnQtd2VpZ2h0OiA4MDA7XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XG4gIGxldHRlci1zcGFjaW5nOiB2YXIoLS1qb2luLXJvb20tcm9vbS1jb2RlLXNwYWNpbmcpO1xuICBjb2xvcjogdmFyKC0tYXBwLXByaW1hcnkpO1xuICBsaW5lLWhlaWdodDogMTtcbiAgZmxleC1zaHJpbms6IDA7XG4gIG1pbi13aWR0aDogdmFyKC0tam9pbi1yb29tLXJvb20tY29kZS1taW4td2lkdGgpO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHBhZGRpbmc6IHZhcigtLWpvaW4tcm9vbS1yb29tLWNvZGUtcGFkZGluZyk7XG4gIGJhY2tncm91bmQ6IHZhcigtLWFwcC1wcmltYXJ5LWJnLCByZ2JhKDU5LCAxMzAsIDI0NiwgMC4xKSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLWpvaW4tcm9vbS1yb29tLWNvZGUtcmFkaXVzKTtcbn1cblxuLmpvaW4tcm9vbS1yb29tLWhvc3Qge1xuICBmb250LXNpemU6IHZhcigtLWpvaW4tcm9vbS1yb29tLWhvc3Qtc2l6ZSk7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGNvbG9yOiB2YXIoLS1hcHAtdGV4dCk7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBmbGV4OiAxO1xuICBsaW5lLWhlaWdodDogMS4yO1xufVxuXG4uam9pbi1yb29tLXJvb20tcGxheWVycyB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tam9pbi1yb29tLXJvb20tcGxheWVycy1zaXplKTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgY29sb3I6IHZhcigtLWFwcC10ZXh0LW11dGVkKTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIHBhZGRpbmc6IHZhcigtLWpvaW4tcm9vbS1yb29tLXBsYXllcnMtcGFkZGluZyk7XG4gIGJhY2tncm91bmQ6IHZhcigtLWFwcC1zdXJmYWNlKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tam9pbi1yb29tLXJvb20tcGxheWVycy1yYWRpdXMpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1hcHAtc3VyZmFjZS1ib3JkZXIpO1xuICBmbGV4LXNocmluazogMDtcbn1cblxuLyogUmVjb25uZWN0aW9uIE92ZXJsYXkgKi9cbi5yZWNvbm5lY3Rpb24tb3ZlcmxheSB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1nYW1lLW1vZGFsLW92ZXJsYXkpO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgei1pbmRleDogMzAwMDtcbn1cblxuLnJlY29ubmVjdGlvbi1jYXJkIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tYXBwLWJnKTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYXBwLXN1cmZhY2UtYm9yZGVyKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmVjb25uZWN0aW9uLXJhZGl1cyk7XG4gIHBhZGRpbmc6IHZhcigtLXJlY29ubmVjdGlvbi1wYWRkaW5nKTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtYXgtd2lkdGg6IHZhcigtLXJlY29ubmVjdGlvbi1tYXgtd2lkdGgpO1xuICB3aWR0aDogOTAlO1xufVxuXG4ucmVjb25uZWN0aW9uLWNhcmQgaDMge1xuICBmb250LXNpemU6IHZhcigtLXJlY29ubmVjdGlvbi10aXRsZS1zaXplKTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgY29sb3I6IHZhcigtLWFwcC10ZXh0KTtcbiAgbWFyZ2luOiB2YXIoLS1yZWNvbm5lY3Rpb24tcGFkZGluZykgMCB2YXIoLS1jb250cm9scy1nYXApO1xufVxuXG4ucmVjb25uZWN0aW9uLWNvdW50ZG93biB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tcmVjb25uZWN0aW9uLWNvdW50ZG93bi1zaXplKTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgY29sb3I6IHZhcigtLWFwcC10ZXh0KTtcbiAgbWFyZ2luOiB2YXIoLS1jb250cm9scy1nYXApIDA7XG59XG5cbi5yZWNvbm5lY3Rpb24taGludCB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tcmVjb25uZWN0aW9uLWhpbnQtc2l6ZSk7XG4gIGNvbG9yOiB2YXIoLS1hcHAtdGV4dC1tdXRlZCk7XG59XG5cbi5yZWNvbm5lY3Rpb24tc3Bpbm5lciB7XG4gIHdpZHRoOiB2YXIoLS1yZWNvbm5lY3Rpb24tc3Bpbm5lci1zaXplKTtcbiAgaGVpZ2h0OiB2YXIoLS1yZWNvbm5lY3Rpb24tc3Bpbm5lci1zaXplKTtcbiAgYm9yZGVyOiB2YXIoLS1yZWNvbm5lY3Rpb24tc3Bpbm5lci1ib3JkZXIpIHNvbGlkIHZhcigtLWFwcC1zdXJmYWNlLWJvcmRlcik7XG4gIGJvcmRlci10b3AtY29sb3I6IHZhcigtLWFwcC1wcmltYXJ5KTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBhbmltYXRpb246IHNwaW4gMXMgbGluZWFyIGluZmluaXRlO1xuICBtYXJnaW46IDAgYXV0bztcbn1cblxuLnJlY29ubmVjdGlvbi1zdWNjZXNzIHtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1hcHAtc3VjY2Vzcyk7XG59XG5cbi5yZWNvbm5lY3Rpb24tY2hlY2sge1xuICB3aWR0aDogdmFyKC0tcmVjb25uZWN0aW9uLWNoZWNrLXNpemUpO1xuICBoZWlnaHQ6IHZhcigtLXJlY29ubmVjdGlvbi1jaGVjay1zaXplKTtcbiAgYmFja2dyb3VuZDogdmFyKC0tYXBwLXN1Y2Nlc3MpO1xuICBjb2xvcjogdmFyKC0tYXBwLXRleHQpO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBmb250LXNpemU6IHZhcigtLXJlY29ubmVjdGlvbi1jaGVjay1pY29uLXNpemUpO1xuICBmb250LXdlaWdodDogNzAwO1xuICBtYXJnaW46IDAgYXV0bztcbn1cblxuLnJlY29ubmVjdGlvbi1mYWlsZWQge1xuICBib3JkZXItY29sb3I6IHZhcigtLWFwcC1lcnJvci10ZXh0KTtcbn1cblxuLnJlY29ubmVjdGlvbi1pY29uIHtcbiAgd2lkdGg6IHZhcigtLXJlY29ubmVjdGlvbi1zcGlubmVyLXNpemUpO1xuICBoZWlnaHQ6IHZhcigtLXJlY29ubmVjdGlvbi1zcGlubmVyLXNpemUpO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hcHAtZXJyb3ItdGV4dCk7XG4gIGNvbG9yOiB2YXIoLS1hcHAtdGV4dCk7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogdmFyKC0tcmVjb25uZWN0aW9uLWNoZWNrLWljb24tc2l6ZSk7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIG1hcmdpbjogMCBhdXRvO1xufVxuIiwiLyogPT09PT0gUmVzcG9uc2l2ZTogTGF5b3V0IFNoaWZ0cyBPbmx5ID09PT09ICovXG4vKiBBbGwgc2l6aW5nIGlzIGhhbmRsZWQgYnkgQ1NTIGN1c3RvbSBwcm9wZXJ0aWVzIGluIDAxLXRoZW1lLXRva2Vucy5jc3MuXG4gICBUaGlzIGZpbGUgb25seSBjb250YWlucyBzdHJ1Y3R1cmFsIGNoYW5nZXMgKGdyaWQgbGF5b3V0cywgZmxleCBkaXJlY3Rpb25zKVxuICAgZm9yIGxhbmRzY2FwZSBvcmllbnRhdGlvbi4gUG9ydHJhaXQgdXNlcyBiYXNlIHN0eWxlcyBmcm9tIGNvbXBvbmVudCBmaWxlcy4gKi9cblxuLyogPT09PT0gTGFuZHNjYXBlOiBMb2dpbiAvIExvYmJ5IC8gUmVnaXN0cmF0aW9uIEdyaWQgTGF5b3V0ID09PT09ICovXG5AbWVkaWEgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpIGFuZCAobWF4LWhlaWdodDogNTAwcHgpIHtcbiAgLyogTG9naW4gLyBSZWdpc3RyYXRpb24gLSAyIGNvbHVtbiBncmlkICovXG4gIC5sb2dpbi1jb250YWluZXIsIC5yZWdpc3RyYXRpb24tY29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMTYwcHggMWZyO1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byBhdXRvIGF1dG8gYXV0byBhdXRvO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cblxuICAubG9naW4tY29udGFpbmVyID4gLmFwcC10aXRsZSwgLnJlZ2lzdHJhdGlvbi1jb250YWluZXIgPiAuYXBwLXRpdGxlIHtcbiAgICBncmlkLWNvbHVtbjogMTtcbiAgICBncmlkLXJvdzogMSAvIHNwYW4gNTtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxOHB4O1xuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLWFwcC1zZWNvbmRhcnktYm9yZGVyKTtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbiAgLmxvZ2luLWNvbnRhaW5lciA+IC5hcHAtc3VidGl0bGUsIC5yZWdpc3RyYXRpb24tY29udGFpbmVyID4gLmFwcC1zdWJ0aXRsZSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC5sb2dpbi1jb250YWluZXIgPiAuZm9ybS1ncm91cCwgLnJlZ2lzdHJhdGlvbi1jb250YWluZXIgPiAuZm9ybS1ncm91cCB7XG4gICAgZ3JpZC1jb2x1bW46IDI7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxuICAubG9naW4tY29udGFpbmVyID4gLmZvcm0tZ3JvdXA6bnRoLW9mLXR5cGUoMSksIC5yZWdpc3RyYXRpb24tY29udGFpbmVyID4gLmZvcm0tZ3JvdXA6bnRoLW9mLXR5cGUoMSkge1xuICAgIGdyaWQtcm93OiAxO1xuICB9XG5cbiAgLmxvZ2luLWNvbnRhaW5lciA+IC5mb3JtLWdyb3VwOm50aC1vZi10eXBlKDIpLCAucmVnaXN0cmF0aW9uLWNvbnRhaW5lciA+IC5mb3JtLWdyb3VwOm50aC1vZi10eXBlKDIpIHtcbiAgICBncmlkLXJvdzogMjtcbiAgfVxuXG4gIC5sb2dpbi1jb250YWluZXIgPiAuYnRuLXByaW1hcnksIC5yZWdpc3RyYXRpb24tY29udGFpbmVyID4gLmJ0bi1wcmltYXJ5IHtcbiAgICBncmlkLWNvbHVtbjogMjtcbiAgICBncmlkLXJvdzogMztcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cblxuICAubG9naW4tY29udGFpbmVyID4gLmJ0bi1vdXRsaW5lIHtcbiAgICBncmlkLWNvbHVtbjogMjtcbiAgICBncmlkLXJvdzogNDtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cblxuICAubG9naW4tY29udGFpbmVyID4gLnJlZ2lzdGVyLWxpbmssIC5yZWdpc3RyYXRpb24tY29udGFpbmVyID4gLnJlZ2lzdGVyLWJhY2stbGluayB7XG4gICAgZ3JpZC1jb2x1bW46IDI7XG4gICAgZ3JpZC1yb3c6IDU7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgfVxuXG4gIC5sb2dpbi1jb250YWluZXIgPiAubG9naW4tbGluayB7XG4gICAgZ3JpZC1jb2x1bW46IDI7XG4gICAgZ3JpZC1yb3c6IDU7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgfVxuXG4gIC5sb2dpbi1jb250YWluZXIgPiAuc3VjY2Vzcy1tZXNzYWdlLCAucmVnaXN0cmF0aW9uLWNvbnRhaW5lciA+IC5zdWNjZXNzLW1lc3NhZ2Uge1xuICAgIGdyaWQtY29sdW1uOiAyO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgfVxuXG4gIC5lcnJvci1tZXNzYWdlLCAuc3VjY2Vzcy1tZXNzYWdlIHtcbiAgICBncmlkLWNvbHVtbjogMjtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG4gIC5idG4tcHJpbWFyeSwgLmJ0bi1zZWNvbmRhcnksIC5idG4tb3V0bGluZSB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG5cbiAgLnJlZ2lzdGVyLWxpbmssIC5sb2dpbi1saW5rIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICB9XG5cbiAgLyogTG9iYnkgLSAyIGNvbHVtbiBncmlkICovXG4gIC5sb2JieS1jb250YWluZXIge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMjAwcHg7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvIGF1dG8gYXV0bztcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG5cbiAgLmxvYmJ5LWhlYWRlciB7XG4gICAgZ3JpZC1jb2x1bW46IDE7XG4gICAgZ3JpZC1yb3c6IDE7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICB9XG5cbiAgLnVzZXItc2VjdGlvbiB7XG4gICAgZ3JpZC1jb2x1bW46IDE7XG4gICAgZ3JpZC1yb3c6IDI7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxuICAubG9iYnktYWN0aW9ucyB7XG4gICAgZ3JpZC1jb2x1bW46IDI7XG4gICAgZ3JpZC1yb3c6IDEgLyBzcGFuIDI7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIH1cblxuICAubG9iYnktZm9vdGVyIHtcbiAgICBncmlkLWNvbHVtbjogMSAvIHNwYW4gMjtcbiAgICBncmlkLXJvdzogMztcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBwYWRkaW5nLXRvcDogMDtcbiAgfVxuXG4gIC8qIFdhaXRpbmcgUm9vbSAtIGhvcml6b250YWwgbGF5b3V0ICovXG4gIC53YWl0aW5nLXJvb20taW5mbyB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIH1cblxuICAucm9vbS1jb2RlLXNlY3Rpb24ge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgZ2FwOiA2cHg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxuXG4gIC50ZWFtLXNsb3RzLWNvbnRhaW5lciB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgfVxuXG4gIC8qIEpvaW4gUm9vbSAtIGhvcml6b250YWwgY29kZSBpbnB1dCAqL1xuICAuam9pbi1yb29tLWNvZGUtaW5wdXQge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgZ2FwOiA4cHg7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICB9XG5cbiAgLmpvaW4tcm9vbS1sYWJlbCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC5qb2luLXJvb20tY29kZS1maWVsZCB7XG4gICAgZmxleDogMTtcbiAgfVxuXG4gIC5qb2luLXJvb20tam9pbi1idG4ge1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICB9XG5cbiAgLyogVHJ1bXAgc2VsZWN0b3IgY2FyZHMgd3JhcCBpbiBsYW5kc2NhcGUgKi9cbiAgLnRydW1wLXNlbGVjdG9yLWNhcmRzIHtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgZ2FwOiA0cHg7XG4gIH1cblxuICAvKiBQYXJ0bmVyIGRpc3BsYXkgY2VudGVyZWQgaW4gbGFuZHNjYXBlICovXG4gIC5wYXJ0bmVyLWRpc3BsYXkge1xuICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgfVxufVxuXG4vKiA9PT09PSBTaG9ydC1oZWlnaHQgbGFuZHNjYXBlIHR3ZWFrID09PT09ICovXG5AbWVkaWEgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpIGFuZCAobWF4LWhlaWdodDogNDUwcHgpIHtcbiAgLndhaXRpbmctcm9vbS1pbmZvIHtcbiAgICBwYWRkaW5nOiAxMnB4IDE2cHg7XG4gIH1cbn1cblxuLyogPT09PT0gTGFuZHNjYXBlOiBHYW1lIFRhYmxlIE92ZXJyaWRlcyA9PT09PSAqL1xuQG1lZGlhIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKSB7XG5cbiAgLyogLS0tIEdyaWQ6IGdpdmUgc2lkZSBjb2x1bW5zIG1vcmUgcm9vbSAtLS0gKi9cbiAgLmZlbHQtZ3JpZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMi41ZnIgMWZyO1xuICB9XG5cbiAgLyogLS0tIFBhcnRuZXIgKHRvcCBjZW50ZXIpOiBob3Jpem9udGFsIGxheW91dCwgc3ByZWFkIGFjcm9zcyB0aGUgd2lkZSBjZW50ZXIgLS0tICovXG4gIC5wYXJ0bmVyLWRpc3BsYXkge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDEycHg7XG4gICAgcGFkZGluZzogNHB4IDhweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gIC5wYXJ0bmVyLWRpc3BsYXkgLnBsYXllci1pbmZvIHtcbiAgICBtaW4td2lkdGg6IDYwcHg7XG4gICAgcGFkZGluZzogNHB4IDhweDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICB9XG5cbiAgLnBhcnRuZXItZGlzcGxheSAucGxheWVyLW5hbWUge1xuICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgfVxuXG4gIC5wYXJ0bmVyLWRpc3BsYXkgLm9wcG9uZW50LWhhbmRzIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIG1hcmdpbi1sZWZ0OiA2cHg7XG4gIH1cblxuICAvKiAtLS0gU2lkZSBvcHBvbmVudHM6IGNvbHVtbiBsYXlvdXQsIGNlbnRlcmVkLCB1c2UgZnVsbCBjZWxsIGhlaWdodCAtLS0gKi9cbiAgLm9wcG9uZW50LWRpc3BsYXkubGVmdC1vcHBvbmVudCxcbiAgLm9wcG9uZW50LWRpc3BsYXkucmlnaHQtb3Bwb25lbnQge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBnYXA6IDZweDtcbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICBwYWRkaW5nOiA0cHg7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG5cbiAgLm9wcG9uZW50LWRpc3BsYXkgLnBsYXllci1pbmZvIHtcbiAgICBtaW4td2lkdGg6IDU2cHg7XG4gICAgcGFkZGluZzogNHB4IDZweDtcbiAgfVxuXG4gIC5vcHBvbmVudC1kaXNwbGF5IC5wbGF5ZXItbmFtZSB7XG4gICAgZm9udC1zaXplOiAxMHB4O1xuICAgIG1heC13aWR0aDogOGNoO1xuICB9XG5cbiAgLm9wcG9uZW50LWRpc3BsYXkgLmF2YXRhciB7XG4gICAgd2lkdGg6IDI4cHg7XG4gICAgaGVpZ2h0OiAyOHB4O1xuICB9XG5cbiAgLm9wcG9uZW50LWRpc3BsYXkgLnRlYW0tbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogOHB4O1xuICAgIHBhZGRpbmc6IDJweCA2cHg7XG4gIH1cblxuICAvKiBPcHBvbmVudCBoYW5kcyBzaXQgYmVsb3cgcGxheWVyIGluZm8sIHJvdyBvZiBjYXJkcyAqL1xuICAub3Bwb25lbnQtZGlzcGxheSAub3Bwb25lbnQtaGFuZHMge1xuICAgIG1hcmdpbi10b3A6IDRweDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxuXG4gIC8qIENhcmQtYmFja3M6IHNsaWdodGx5IGxhcmdlciB0aGFuIGJlZm9yZSB0byBmaWxsIHNwYWNlICovXG4gIC5jYXJkLWJhY2sge1xuICAgIHdpZHRoOiBjYWxjKHZhcigtLWNhcmQtd2lkdGgpICogMC40NSk7XG4gICAgaGVpZ2h0OiBjYWxjKHZhcigtLWNhcmQtaGVpZ2h0KSAqIDAuNDUpO1xuICB9XG5cbiAgLyogLS0tIFVzZXIgaGFuZDogc3ByZWFkIGNhcmRzIHdpdGggYnJlYXRoaW5nIHJvb20gLS0tICovXG4gIC5oYW5kLWNhcmRzIC5jYXJkIHtcbiAgICBtYXJnaW46IDAgMnB4OyAvKiB0aW55IHBvc2l0aXZlIGdhcCwgbm8gb3ZlcmxhcCBuZWVkZWQgKi9cbiAgfVxuXG4gIC51c2VyLWhhbmQge1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgICBwYWRkaW5nOiAwIDEycHggOHB4O1xuICB9XG5cbiAgLyogLS0tIFRyaWNrIGFyZWE6IHVzZSB0aGUgZXh0cmEgdmVydGljYWwgcm9vbSAtLS0gKi9cbiAgLnRyaWNrLWFyZWEge1xuICAgIG1pbi1oZWlnaHQ6IDEyMHB4O1xuICB9XG5cbiAgLnRyaWNrLWFyZWE6OmJlZm9yZSB7XG4gICAgd2lkdGg6IG1pbig3MCUsIDE4MHB4KTtcbiAgfVxufVxuIl19 */