/* ============================================================
   Klarsicht Brand Tokens
   ============================================================ */
:root {
  --kl-green:      #1F3B2D;
  --kl-green-deep: #15281F;
  --kl-cream:      #F1EAD8;
  --kl-cream-soft: #F7F1E1;
  --kl-brass:      #D28B34;
  --kl-moss:       #A6B5A1;
  --kl-grey-green: #C8CFC4;
  --kl-ink:        #14181A;
}

/* ============================================================
   Google Fonts
   ============================================================ */
@import url('https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=Inter:wght@400;500;600;700;800;900&family=IBM+Plex+Mono:wght@400;500&display=swap');

/* ============================================================
   Base Reset — Admin Body
   ============================================================ */
body {
  font-family: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
  color: var(--kl-ink);
}

/* ============================================================
   Login Page — Full Rebrand
   ============================================================ */

body.login_admin {
  background-color: var(--kl-cream) !important;
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
}

body.login_admin .authentication-form-wrapper {
  padding-top: 0 !important;
}

/* Logo area */
body.login_admin .company-logo {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 0 0 24px 0;
}

body.login_admin .company-logo img {
  display: none; /* Hide default logo — SVG injected via module hook */
}

/* Login card */
body.login_admin .tw-bg-white {
  background-color: var(--kl-cream-soft) !important;
  border-color: var(--kl-grey-green) !important;
  box-shadow: 0 4px 24px rgba(31, 59, 45, 0.08) !important;
}

/* Headline */
body.login_admin h1 {
  font-family: 'Instrument Serif', Georgia, serif !important;
  font-style: italic !important;
  font-size: 2.25rem !important;
  font-weight: 400 !important;
  color: var(--kl-ink) !important;
  line-height: 1.15 !important;
  margin-bottom: 6px !important;
}

/* Subheadline / description */
body.login_admin p.tw-text-neutral-500,
body.login_admin .tw-text-neutral-500 {
  color: rgba(20, 24, 26, 0.6) !important;
  font-size: 0.95rem !important;
}

/* Labels */
body.login_admin .control-label {
  color: var(--kl-ink) !important;
  font-weight: 500 !important;
  font-size: 0.875rem !important;
}

/* Input fields */
body.login_admin .form-control {
  background-color: white !important;
  border: 1.5px solid var(--kl-moss) !important;
  border-radius: 6px !important;
  color: var(--kl-ink) !important;
  height: 48px !important;
  font-size: 0.9375rem !important;
  padding: 0 14px !important;
  transition: border-color 150ms ease, box-shadow 150ms ease;
}

body.login_admin .form-control:focus {
  border-color: var(--kl-green) !important;
  box-shadow: 0 0 0 3px rgba(31, 59, 45, 0.12) !important;
  outline: none !important;
}

/* Submit button */
body.login_admin .btn-primary {
  background-color: var(--kl-green) !important;
  border-color: var(--kl-green) !important;
  color: var(--kl-cream) !important;
  height: 48px !important;
  border-radius: 6px !important;
  font-weight: 600 !important;
  font-size: 0.9375rem !important;
  letter-spacing: 0.01em !important;
  transition: background-color 150ms ease, border-color 150ms ease;
}

body.login_admin .btn-primary:hover,
body.login_admin .btn-primary:focus {
  background-color: var(--kl-green-deep) !important;
  border-color: var(--kl-green-deep) !important;
  color: var(--kl-cream) !important;
}

/* Forgot password link */
body.login_admin a.text-muted {
  color: var(--kl-brass) !important;
  text-decoration: none !important;
  font-weight: 500 !important;
}

body.login_admin a.text-muted:hover {
  text-decoration: underline !important;
  color: var(--kl-brass) !important;
}

/* Remember checkbox */
body.login_admin .checkbox label {
  color: var(--kl-ink) !important;
  font-size: 0.875rem !important;
}

/* Alert messages */
body.login_admin .alert-danger {
  background-color: #fef2f2 !important;
  border-color: #fecaca !important;
  color: #991b1b !important;
  border-radius: 6px !important;
}

/* Login footer */
#kl-login-footer {
  text-align: center;
  padding: 24px 0 16px;
  font-family: 'IBM Plex Mono', ui-monospace, monospace;
  font-size: 11px;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--kl-moss);
}

#kl-login-footer a {
  color: var(--kl-moss);
  text-decoration: none;
  transition: color 150ms ease;
}

#kl-login-footer a:hover {
  color: var(--kl-ink);
}

#kl-login-footer span {
  margin: 0 8px;
  opacity: 0.5;
}

/* ============================================================
   Admin Sidebar (aside#menu)
   ============================================================ */

aside#menu.sidebar,
#menu.sidebar {
  background-color: var(--kl-green) !important;
}

/* Sidebar logo area */
.navbar-header,
.sidebar .navbar-header {
  background-color: var(--kl-green) !important;
  border-bottom: 1px solid var(--kl-green-deep) !important;
}

/* Sidebar navigation items */
aside#menu .nav li a,
#menu .nav li a,
.metis-menu li a {
  color: var(--kl-cream) !important;
  transition: background-color 120ms ease, color 120ms ease;
}

aside#menu .nav li a:hover,
#menu .nav li a:hover,
.metis-menu li a:hover {
  background-color: var(--kl-green-deep) !important;
  color: var(--kl-cream) !important;
}

/* Active sidebar item */
aside#menu .nav li.active > a,
#menu .nav li.active > a,
.metis-menu li.active > a {
  background-color: var(--kl-green-deep) !important;
  color: var(--kl-cream) !important;
  position: relative;
}

aside#menu .nav li.active > a::before,
#menu .nav li.active > a::before,
.metis-menu li.active > a::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 3px;
  background-color: var(--kl-brass);
  border-radius: 0 2px 2px 0;
}

/* Sidebar icons */
aside#menu .nav li a i,
#menu .nav li a i,
.metis-menu li a i {
  color: var(--kl-cream) !important;
  opacity: 0.9;
}

/* Submenu items — inactive */
aside#menu .nav li ul li a,
#menu .nav li ul li a,
.metis-menu li ul li a {
  color: var(--kl-moss) !important;
  background-color: var(--kl-green-deep) !important;
}

aside#menu .nav li ul li a:hover,
#menu .nav li ul li a:hover {
  color: var(--kl-cream) !important;
  background-color: var(--kl-green-deep) !important;
}

aside#menu .nav li ul li.active a {
  color: var(--kl-cream) !important;
}

/* Sidebar user profile section */
.sidebar .dropdown.sidebar-user-profile a {
  color: var(--kl-cream) !important;
}

.sidebar .dropdown.sidebar-user-profile .dropdown-menu {
  background-color: var(--kl-green-deep) !important;
  border-color: var(--kl-green-deep) !important;
}

.sidebar .dropdown.sidebar-user-profile .dropdown-menu li a {
  color: var(--kl-cream) !important;
}

.sidebar .dropdown.sidebar-user-profile .dropdown-menu li a:hover {
  background-color: rgba(255,255,255,0.08) !important;
}

/* ============================================================
   Admin Header (top bar)
   ============================================================ */

.navbar-default,
.navbar.navbar-default {
  background-color: var(--kl-cream) !important;
  border-bottom: 1px solid var(--kl-grey-green) !important;
  box-shadow: none !important;
}

/* Header nav links */
.navbar-default .navbar-nav > li > a {
  color: var(--kl-green) !important;
  transition: color 120ms ease;
}

.navbar-default .navbar-nav > li > a:hover,
.navbar-default .navbar-nav > li > a:focus {
  color: var(--kl-ink) !important;
  text-decoration: underline;
  text-decoration-color: var(--kl-brass);
}

/* Notification bell */
.navbar-default .navbar-nav > li.notifications-menu > a i,
.navbar-default .navbar-nav > li > a .fa-bell {
  color: var(--kl-green) !important;
}

/* Notification badge */
.navbar-default .navbar-nav > li .badge {
  background-color: var(--kl-brass) !important;
  color: white !important;
}

/* Top search */
.navbar-default .navbar-form .form-control {
  background-color: var(--kl-cream-soft) !important;
  border-color: var(--kl-moss) !important;
  color: var(--kl-ink) !important;
}

.navbar-default .navbar-form .form-control:focus {
  border-color: var(--kl-green) !important;
}

/* ============================================================
   General Admin UI — Brand Tokens
   ============================================================ */

/* Primary buttons everywhere */
.btn-primary {
  background-color: var(--kl-green) !important;
  border-color: var(--kl-green) !important;
  color: var(--kl-cream) !important;
}

.btn-primary:hover,
.btn-primary:focus,
.btn-primary:active {
  background-color: var(--kl-green-deep) !important;
  border-color: var(--kl-green-deep) !important;
  color: var(--kl-cream) !important;
}

/* Links */
a {
  color: var(--kl-green);
}

a:hover {
  color: var(--kl-green-deep);
}

/* Table headers */
.table > thead > tr > th {
  color: var(--kl-ink) !important;
  border-bottom-color: var(--kl-grey-green) !important;
}

/* Admin display headlines — Instrument Serif */
h1.kl-display,
h2.kl-display,
.kl-headline {
  font-family: 'Instrument Serif', Georgia, serif;
  font-style: italic;
}

/* Mono caption style */
.kl-caption,
.kl-mono {
  font-family: 'IBM Plex Mono', ui-monospace, monospace;
  font-size: 0.6875rem;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2FwcGxpY2F0aW9uL3ZpZXdzL3RoZW1lcy9rbGFyc2ljaHQvYXNzZXRzL3NyYy9jc3Mva2xhcnNpY2h0LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsImZpbGUiOiJjdXN0b20uY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBLbGFyc2ljaHQgQnJhbmQgVG9rZW5zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbjpyb290IHtcbiAgLS1rbC1ncmVlbjogICAgICAjMUYzQjJEO1xuICAtLWtsLWdyZWVuLWRlZXA6ICMxNTI4MUY7XG4gIC0ta2wtY3JlYW06ICAgICAgI0YxRUFEODtcbiAgLS1rbC1jcmVhbS1zb2Z0OiAjRjdGMUUxO1xuICAtLWtsLWJyYXNzOiAgICAgICNEMjhCMzQ7XG4gIC0ta2wtbW9zczogICAgICAgI0E2QjVBMTtcbiAgLS1rbC1ncmV5LWdyZWVuOiAjQzhDRkM0O1xuICAtLWtsLWluazogICAgICAgICMxNDE4MUE7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgR29vZ2xlIEZvbnRzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbkBpbXBvcnQgdXJsKCdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PUluc3RydW1lbnQrU2VyaWY6aXRhbEAwOzEmZmFtaWx5PUludGVyOndnaHRANDAwOzUwMDs2MDA7NzAwOzgwMDs5MDAmZmFtaWx5PUlCTStQbGV4K01vbm86d2dodEA0MDA7NTAwJmRpc3BsYXk9c3dhcCcpO1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEJhc2UgUmVzZXQg4oCUIEFkbWluIEJvZHlcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuYm9keSB7XG4gIGZvbnQtZmFtaWx5OiAnSW50ZXInLCBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sICdTZWdvZSBVSScsIFJvYm90bywgc2Fucy1zZXJpZjtcbiAgY29sb3I6IHZhcigtLWtsLWluayk7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgTG9naW4gUGFnZSDigJQgRnVsbCBSZWJyYW5kXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuYm9keS5sb2dpbl9hZG1pbiB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWtsLWNyZWFtKSAhaW1wb3J0YW50O1xuICBtaW4taGVpZ2h0OiAxMDB2aDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbmJvZHkubG9naW5fYWRtaW4gLmF1dGhlbnRpY2F0aW9uLWZvcm0td3JhcHBlciB7XG4gIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7XG59XG5cbi8qIExvZ28gYXJlYSAqL1xuYm9keS5sb2dpbl9hZG1pbiAuY29tcGFueS1sb2dvIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogMCAwIDI0cHggMDtcbn1cblxuYm9keS5sb2dpbl9hZG1pbiAuY29tcGFueS1sb2dvIGltZyB7XG4gIGRpc3BsYXk6IG5vbmU7IC8qIEhpZGUgZGVmYXVsdCBsb2dvIOKAlCBTVkcgaW5qZWN0ZWQgdmlhIG1vZHVsZSBob29rICovXG59XG5cbi8qIExvZ2luIGNhcmQgKi9cbmJvZHkubG9naW5fYWRtaW4gLnR3LWJnLXdoaXRlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0ta2wtY3JlYW0tc29mdCkgIWltcG9ydGFudDtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1rbC1ncmV5LWdyZWVuKSAhaW1wb3J0YW50O1xuICBib3gtc2hhZG93OiAwIDRweCAyNHB4IHJnYmEoMzEsIDU5LCA0NSwgMC4wOCkgIWltcG9ydGFudDtcbn1cblxuLyogSGVhZGxpbmUgKi9cbmJvZHkubG9naW5fYWRtaW4gaDEge1xuICBmb250LWZhbWlseTogJ0luc3RydW1lbnQgU2VyaWYnLCBHZW9yZ2lhLCBzZXJpZiAhaW1wb3J0YW50O1xuICBmb250LXN0eWxlOiBpdGFsaWMgIWltcG9ydGFudDtcbiAgZm9udC1zaXplOiAyLjI1cmVtICFpbXBvcnRhbnQ7XG4gIGZvbnQtd2VpZ2h0OiA0MDAgIWltcG9ydGFudDtcbiAgY29sb3I6IHZhcigtLWtsLWluaykgIWltcG9ydGFudDtcbiAgbGluZS1oZWlnaHQ6IDEuMTUgIWltcG9ydGFudDtcbiAgbWFyZ2luLWJvdHRvbTogNnB4ICFpbXBvcnRhbnQ7XG59XG5cbi8qIFN1YmhlYWRsaW5lIC8gZGVzY3JpcHRpb24gKi9cbmJvZHkubG9naW5fYWRtaW4gcC50dy10ZXh0LW5ldXRyYWwtNTAwLFxuYm9keS5sb2dpbl9hZG1pbiAudHctdGV4dC1uZXV0cmFsLTUwMCB7XG4gIGNvbG9yOiByZ2JhKDIwLCAyNCwgMjYsIDAuNikgIWltcG9ydGFudDtcbiAgZm9udC1zaXplOiAwLjk1cmVtICFpbXBvcnRhbnQ7XG59XG5cbi8qIExhYmVscyAqL1xuYm9keS5sb2dpbl9hZG1pbiAuY29udHJvbC1sYWJlbCB7XG4gIGNvbG9yOiB2YXIoLS1rbC1pbmspICFpbXBvcnRhbnQ7XG4gIGZvbnQtd2VpZ2h0OiA1MDAgIWltcG9ydGFudDtcbiAgZm9udC1zaXplOiAwLjg3NXJlbSAhaW1wb3J0YW50O1xufVxuXG4vKiBJbnB1dCBmaWVsZHMgKi9cbmJvZHkubG9naW5fYWRtaW4gLmZvcm0tY29udHJvbCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG4gIGJvcmRlcjogMS41cHggc29saWQgdmFyKC0ta2wtbW9zcykgIWltcG9ydGFudDtcbiAgYm9yZGVyLXJhZGl1czogNnB4ICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiB2YXIoLS1rbC1pbmspICFpbXBvcnRhbnQ7XG4gIGhlaWdodDogNDhweCAhaW1wb3J0YW50O1xuICBmb250LXNpemU6IDAuOTM3NXJlbSAhaW1wb3J0YW50O1xuICBwYWRkaW5nOiAwIDE0cHggIWltcG9ydGFudDtcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDE1MG1zIGVhc2UsIGJveC1zaGFkb3cgMTUwbXMgZWFzZTtcbn1cblxuYm9keS5sb2dpbl9hZG1pbiAuZm9ybS1jb250cm9sOmZvY3VzIHtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1rbC1ncmVlbikgIWltcG9ydGFudDtcbiAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMzEsIDU5LCA0NSwgMC4xMikgIWltcG9ydGFudDtcbiAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4vKiBTdWJtaXQgYnV0dG9uICovXG5ib2R5LmxvZ2luX2FkbWluIC5idG4tcHJpbWFyeSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWtsLWdyZWVuKSAhaW1wb3J0YW50O1xuICBib3JkZXItY29sb3I6IHZhcigtLWtsLWdyZWVuKSAhaW1wb3J0YW50O1xuICBjb2xvcjogdmFyKC0ta2wtY3JlYW0pICFpbXBvcnRhbnQ7XG4gIGhlaWdodDogNDhweCAhaW1wb3J0YW50O1xuICBib3JkZXItcmFkaXVzOiA2cHggIWltcG9ydGFudDtcbiAgZm9udC13ZWlnaHQ6IDYwMCAhaW1wb3J0YW50O1xuICBmb250LXNpemU6IDAuOTM3NXJlbSAhaW1wb3J0YW50O1xuICBsZXR0ZXItc3BhY2luZzogMC4wMWVtICFpbXBvcnRhbnQ7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMTUwbXMgZWFzZSwgYm9yZGVyLWNvbG9yIDE1MG1zIGVhc2U7XG59XG5cbmJvZHkubG9naW5fYWRtaW4gLmJ0bi1wcmltYXJ5OmhvdmVyLFxuYm9keS5sb2dpbl9hZG1pbiAuYnRuLXByaW1hcnk6Zm9jdXMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1rbC1ncmVlbi1kZWVwKSAhaW1wb3J0YW50O1xuICBib3JkZXItY29sb3I6IHZhcigtLWtsLWdyZWVuLWRlZXApICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiB2YXIoLS1rbC1jcmVhbSkgIWltcG9ydGFudDtcbn1cblxuLyogRm9yZ290IHBhc3N3b3JkIGxpbmsgKi9cbmJvZHkubG9naW5fYWRtaW4gYS50ZXh0LW11dGVkIHtcbiAgY29sb3I6IHZhcigtLWtsLWJyYXNzKSAhaW1wb3J0YW50O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmUgIWltcG9ydGFudDtcbiAgZm9udC13ZWlnaHQ6IDUwMCAhaW1wb3J0YW50O1xufVxuXG5ib2R5LmxvZ2luX2FkbWluIGEudGV4dC1tdXRlZDpob3ZlciB7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiB2YXIoLS1rbC1icmFzcykgIWltcG9ydGFudDtcbn1cblxuLyogUmVtZW1iZXIgY2hlY2tib3ggKi9cbmJvZHkubG9naW5fYWRtaW4gLmNoZWNrYm94IGxhYmVsIHtcbiAgY29sb3I6IHZhcigtLWtsLWluaykgIWltcG9ydGFudDtcbiAgZm9udC1zaXplOiAwLjg3NXJlbSAhaW1wb3J0YW50O1xufVxuXG4vKiBBbGVydCBtZXNzYWdlcyAqL1xuYm9keS5sb2dpbl9hZG1pbiAuYWxlcnQtZGFuZ2VyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZlZjJmMiAhaW1wb3J0YW50O1xuICBib3JkZXItY29sb3I6ICNmZWNhY2EgIWltcG9ydGFudDtcbiAgY29sb3I6ICM5OTFiMWIgIWltcG9ydGFudDtcbiAgYm9yZGVyLXJhZGl1czogNnB4ICFpbXBvcnRhbnQ7XG59XG5cbi8qIExvZ2luIGZvb3RlciAqL1xuI2tsLWxvZ2luLWZvb3RlciB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcGFkZGluZzogMjRweCAwIDE2cHg7XG4gIGZvbnQtZmFtaWx5OiAnSUJNIFBsZXggTW9ubycsIHVpLW1vbm9zcGFjZSwgbW9ub3NwYWNlO1xuICBmb250LXNpemU6IDExcHg7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGNvbG9yOiB2YXIoLS1rbC1tb3NzKTtcbn1cblxuI2tsLWxvZ2luLWZvb3RlciBhIHtcbiAgY29sb3I6IHZhcigtLWtsLW1vc3MpO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRyYW5zaXRpb246IGNvbG9yIDE1MG1zIGVhc2U7XG59XG5cbiNrbC1sb2dpbi1mb290ZXIgYTpob3ZlciB7XG4gIGNvbG9yOiB2YXIoLS1rbC1pbmspO1xufVxuXG4ja2wtbG9naW4tZm9vdGVyIHNwYW4ge1xuICBtYXJnaW46IDAgOHB4O1xuICBvcGFjaXR5OiAwLjU7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQWRtaW4gU2lkZWJhciAoYXNpZGUjbWVudSlcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG5hc2lkZSNtZW51LnNpZGViYXIsXG4jbWVudS5zaWRlYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0ta2wtZ3JlZW4pICFpbXBvcnRhbnQ7XG59XG5cbi8qIFNpZGViYXIgbG9nbyBhcmVhICovXG4ubmF2YmFyLWhlYWRlcixcbi5zaWRlYmFyIC5uYXZiYXItaGVhZGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0ta2wtZ3JlZW4pICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1rbC1ncmVlbi1kZWVwKSAhaW1wb3J0YW50O1xufVxuXG4vKiBTaWRlYmFyIG5hdmlnYXRpb24gaXRlbXMgKi9cbmFzaWRlI21lbnUgLm5hdiBsaSBhLFxuI21lbnUgLm5hdiBsaSBhLFxuLm1ldGlzLW1lbnUgbGkgYSB7XG4gIGNvbG9yOiB2YXIoLS1rbC1jcmVhbSkgIWltcG9ydGFudDtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAxMjBtcyBlYXNlLCBjb2xvciAxMjBtcyBlYXNlO1xufVxuXG5hc2lkZSNtZW51IC5uYXYgbGkgYTpob3ZlcixcbiNtZW51IC5uYXYgbGkgYTpob3Zlcixcbi5tZXRpcy1tZW51IGxpIGE6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1rbC1ncmVlbi1kZWVwKSAhaW1wb3J0YW50O1xuICBjb2xvcjogdmFyKC0ta2wtY3JlYW0pICFpbXBvcnRhbnQ7XG59XG5cbi8qIEFjdGl2ZSBzaWRlYmFyIGl0ZW0gKi9cbmFzaWRlI21lbnUgLm5hdiBsaS5hY3RpdmUgPiBhLFxuI21lbnUgLm5hdiBsaS5hY3RpdmUgPiBhLFxuLm1ldGlzLW1lbnUgbGkuYWN0aXZlID4gYSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWtsLWdyZWVuLWRlZXApICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiB2YXIoLS1rbC1jcmVhbSkgIWltcG9ydGFudDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG5hc2lkZSNtZW51IC5uYXYgbGkuYWN0aXZlID4gYTo6YmVmb3JlLFxuI21lbnUgLm5hdiBsaS5hY3RpdmUgPiBhOjpiZWZvcmUsXG4ubWV0aXMtbWVudSBsaS5hY3RpdmUgPiBhOjpiZWZvcmUge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIGJvdHRvbTogMDtcbiAgd2lkdGg6IDNweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0ta2wtYnJhc3MpO1xuICBib3JkZXItcmFkaXVzOiAwIDJweCAycHggMDtcbn1cblxuLyogU2lkZWJhciBpY29ucyAqL1xuYXNpZGUjbWVudSAubmF2IGxpIGEgaSxcbiNtZW51IC5uYXYgbGkgYSBpLFxuLm1ldGlzLW1lbnUgbGkgYSBpIHtcbiAgY29sb3I6IHZhcigtLWtsLWNyZWFtKSAhaW1wb3J0YW50O1xuICBvcGFjaXR5OiAwLjk7XG59XG5cbi8qIFN1Ym1lbnUgaXRlbXMg4oCUIGluYWN0aXZlICovXG5hc2lkZSNtZW51IC5uYXYgbGkgdWwgbGkgYSxcbiNtZW51IC5uYXYgbGkgdWwgbGkgYSxcbi5tZXRpcy1tZW51IGxpIHVsIGxpIGEge1xuICBjb2xvcjogdmFyKC0ta2wtbW9zcykgIWltcG9ydGFudDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0ta2wtZ3JlZW4tZGVlcCkgIWltcG9ydGFudDtcbn1cblxuYXNpZGUjbWVudSAubmF2IGxpIHVsIGxpIGE6aG92ZXIsXG4jbWVudSAubmF2IGxpIHVsIGxpIGE6aG92ZXIge1xuICBjb2xvcjogdmFyKC0ta2wtY3JlYW0pICFpbXBvcnRhbnQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWtsLWdyZWVuLWRlZXApICFpbXBvcnRhbnQ7XG59XG5cbmFzaWRlI21lbnUgLm5hdiBsaSB1bCBsaS5hY3RpdmUgYSB7XG4gIGNvbG9yOiB2YXIoLS1rbC1jcmVhbSkgIWltcG9ydGFudDtcbn1cblxuLyogU2lkZWJhciB1c2VyIHByb2ZpbGUgc2VjdGlvbiAqL1xuLnNpZGViYXIgLmRyb3Bkb3duLnNpZGViYXItdXNlci1wcm9maWxlIGEge1xuICBjb2xvcjogdmFyKC0ta2wtY3JlYW0pICFpbXBvcnRhbnQ7XG59XG5cbi5zaWRlYmFyIC5kcm9wZG93bi5zaWRlYmFyLXVzZXItcHJvZmlsZSAuZHJvcGRvd24tbWVudSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWtsLWdyZWVuLWRlZXApICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0ta2wtZ3JlZW4tZGVlcCkgIWltcG9ydGFudDtcbn1cblxuLnNpZGViYXIgLmRyb3Bkb3duLnNpZGViYXItdXNlci1wcm9maWxlIC5kcm9wZG93bi1tZW51IGxpIGEge1xuICBjb2xvcjogdmFyKC0ta2wtY3JlYW0pICFpbXBvcnRhbnQ7XG59XG5cbi5zaWRlYmFyIC5kcm9wZG93bi5zaWRlYmFyLXVzZXItcHJvZmlsZSAuZHJvcGRvd24tbWVudSBsaSBhOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwwLjA4KSAhaW1wb3J0YW50O1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEFkbWluIEhlYWRlciAodG9wIGJhcilcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4ubmF2YmFyLWRlZmF1bHQsXG4ubmF2YmFyLm5hdmJhci1kZWZhdWx0IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0ta2wtY3JlYW0pICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1rbC1ncmV5LWdyZWVuKSAhaW1wb3J0YW50O1xuICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi8qIEhlYWRlciBuYXYgbGlua3MgKi9cbi5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiA+IGxpID4gYSB7XG4gIGNvbG9yOiB2YXIoLS1rbC1ncmVlbikgIWltcG9ydGFudDtcbiAgdHJhbnNpdGlvbjogY29sb3IgMTIwbXMgZWFzZTtcbn1cblxuLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2ID4gbGkgPiBhOmhvdmVyLFxuLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2ID4gbGkgPiBhOmZvY3VzIHtcbiAgY29sb3I6IHZhcigtLWtsLWluaykgIWltcG9ydGFudDtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gIHRleHQtZGVjb3JhdGlvbi1jb2xvcjogdmFyKC0ta2wtYnJhc3MpO1xufVxuXG4vKiBOb3RpZmljYXRpb24gYmVsbCAqL1xuLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2ID4gbGkubm90aWZpY2F0aW9ucy1tZW51ID4gYSBpLFxuLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2ID4gbGkgPiBhIC5mYS1iZWxsIHtcbiAgY29sb3I6IHZhcigtLWtsLWdyZWVuKSAhaW1wb3J0YW50O1xufVxuXG4vKiBOb3RpZmljYXRpb24gYmFkZ2UgKi9cbi5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiA+IGxpIC5iYWRnZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWtsLWJyYXNzKSAhaW1wb3J0YW50O1xuICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbn1cblxuLyogVG9wIHNlYXJjaCAqL1xuLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItZm9ybSAuZm9ybS1jb250cm9sIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0ta2wtY3JlYW0tc29mdCkgIWltcG9ydGFudDtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1rbC1tb3NzKSAhaW1wb3J0YW50O1xuICBjb2xvcjogdmFyKC0ta2wtaW5rKSAhaW1wb3J0YW50O1xufVxuXG4ubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1mb3JtIC5mb3JtLWNvbnRyb2w6Zm9jdXMge1xuICBib3JkZXItY29sb3I6IHZhcigtLWtsLWdyZWVuKSAhaW1wb3J0YW50O1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEdlbmVyYWwgQWRtaW4gVUkg4oCUIEJyYW5kIFRva2Vuc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIFByaW1hcnkgYnV0dG9ucyBldmVyeXdoZXJlICovXG4uYnRuLXByaW1hcnkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1rbC1ncmVlbikgIWltcG9ydGFudDtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1rbC1ncmVlbikgIWltcG9ydGFudDtcbiAgY29sb3I6IHZhcigtLWtsLWNyZWFtKSAhaW1wb3J0YW50O1xufVxuXG4uYnRuLXByaW1hcnk6aG92ZXIsXG4uYnRuLXByaW1hcnk6Zm9jdXMsXG4uYnRuLXByaW1hcnk6YWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0ta2wtZ3JlZW4tZGVlcCkgIWltcG9ydGFudDtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1rbC1ncmVlbi1kZWVwKSAhaW1wb3J0YW50O1xuICBjb2xvcjogdmFyKC0ta2wtY3JlYW0pICFpbXBvcnRhbnQ7XG59XG5cbi8qIExpbmtzICovXG5hIHtcbiAgY29sb3I6IHZhcigtLWtsLWdyZWVuKTtcbn1cblxuYTpob3ZlciB7XG4gIGNvbG9yOiB2YXIoLS1rbC1ncmVlbi1kZWVwKTtcbn1cblxuLyogVGFibGUgaGVhZGVycyAqL1xuLnRhYmxlID4gdGhlYWQgPiB0ciA+IHRoIHtcbiAgY29sb3I6IHZhcigtLWtsLWluaykgIWltcG9ydGFudDtcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0ta2wtZ3JleS1ncmVlbikgIWltcG9ydGFudDtcbn1cblxuLyogQWRtaW4gZGlzcGxheSBoZWFkbGluZXMg4oCUIEluc3RydW1lbnQgU2VyaWYgKi9cbmgxLmtsLWRpc3BsYXksXG5oMi5rbC1kaXNwbGF5LFxuLmtsLWhlYWRsaW5lIHtcbiAgZm9udC1mYW1pbHk6ICdJbnN0cnVtZW50IFNlcmlmJywgR2VvcmdpYSwgc2VyaWY7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLyogTW9ubyBjYXB0aW9uIHN0eWxlICovXG4ua2wtY2FwdGlvbixcbi5rbC1tb25vIHtcbiAgZm9udC1mYW1pbHk6ICdJQk0gUGxleCBNb25vJywgdWktbW9ub3NwYWNlLCBtb25vc3BhY2U7XG4gIGZvbnQtc2l6ZTogMC42ODc1cmVtO1xuICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuIl19 */