@rxap/ngx-theme
Version:
This package provides an Angular theme service that allows you to manage and customize the look and feel of your application. It includes features such as dark mode support, theme density control, typography settings, and color palette management. The ser
1 lines • 47.1 kB
Source Map (JSON)
{"version":3,"file":"rxap-ngx-theme.mjs","sources":["../../../../../packages/angular/theme/src/lib/compute-color-palette.ts","../../../../../packages/angular/theme/src/lib/observe-current-theme-density.ts","../../../../../packages/angular/theme/src/lib/theme-mode.service.ts","../../../../../packages/angular/theme/src/lib/theme.service.ts","../../../../../packages/angular/theme/src/lib/provide.ts","../../../../../packages/angular/theme/src/index.ts","../../../../../packages/angular/theme/src/rxap-ngx-theme.ts"],"sourcesContent":["import {\n ColorInput,\n Numberify,\n RGBA,\n TinyColor,\n} from '@ctrl/tinycolor';\n\nexport interface ColorPalette {\n 50: string;\n 100: string;\n 200: string;\n 300: string;\n 400: string;\n 500: string;\n 600: string;\n 700: string;\n 800: string;\n 900: string;\n A100: string;\n A200: string;\n A400: string;\n A700: string;\n}\n\nexport enum ColorPaletteAlgorithm {\n CONSTANTIN = 'constantin',\n BUCKNER = 'buckner',\n}\n\nexport function ComputeColorPalette(\n color: ColorInput,\n colorPalette: Partial<ColorPalette> = {},\n algorithm?: ColorPaletteAlgorithm | string,\n): ColorPalette {\n colorPalette = { ...colorPalette };\n\n const baseLight = new TinyColor('#ffffff');\n const baseDark = multiply(new TinyColor(color).toRgb(), new TinyColor(color).toRgb());\n const baseTriad = new TinyColor(color).tetrad();\n\n switch (algorithm) {\n\n case ColorPaletteAlgorithm.CONSTANTIN:\n colorPalette[50] ??= baseLight.mix(color, 12).toHexString();\n colorPalette[100] ??= baseLight.mix(color, 30).toHexString();\n colorPalette[200] ??= baseLight.mix(color, 50).toHexString();\n colorPalette[300] ??= baseLight.mix(color, 70).toHexString();\n colorPalette[400] ??= baseLight.mix(color, 85).toHexString();\n colorPalette[500] ??= baseLight.mix(color, 100).toHexString();\n colorPalette[600] ??= baseDark.mix(color, 87).toHexString();\n colorPalette[700] ??= baseDark.mix(color, 70).toHexString();\n colorPalette[800] ??= baseDark.mix(color, 54).toHexString();\n colorPalette[900] ??= baseDark.mix(color, 25).toHexString();\n colorPalette.A100 ??= baseDark.mix(baseTriad[4], 15).saturate(80).lighten(65).toHexString();\n colorPalette.A200 ??= baseDark.mix(baseTriad[4], 15).saturate(80).lighten(55).toHexString();\n colorPalette.A400 ??= baseDark.mix(baseTriad[4], 15).saturate(100).lighten(45).toHexString();\n colorPalette.A700 ??= baseDark.mix(baseTriad[4], 15).saturate(100).lighten(40).toHexString();\n break;\n\n case ColorPaletteAlgorithm.BUCKNER:\n colorPalette[50] ??= baseLight.mix(color, 12).toHexString();\n colorPalette[100] ??= baseLight.mix(color, 30).toHexString();\n colorPalette[200] ??= baseLight.mix(color, 50).toHexString();\n colorPalette[300] ??= baseLight.mix(color, 70).toHexString();\n colorPalette[400] ??= baseLight.mix(color, 85).toHexString();\n colorPalette[500] ??= baseLight.mix(color, 100).toHexString();\n colorPalette[600] ??= baseDark.mix(color, 87).toHexString();\n colorPalette[700] ??= baseDark.mix(color, 70).toHexString();\n colorPalette[800] ??= baseDark.mix(color, 54).toHexString();\n colorPalette[900] ??= baseDark.mix(color, 25).toHexString();\n colorPalette.A100 ??= baseDark.mix(baseTriad[3], 15).saturate(80).lighten(48).toHexString();\n colorPalette.A200 ??= baseDark.mix(baseTriad[3], 15).saturate(80).lighten(36).toHexString();\n colorPalette.A400 ??= baseDark.mix(baseTriad[3], 15).saturate(100).lighten(31).toHexString();\n colorPalette.A700 ??= baseDark.mix(baseTriad[3], 15).saturate(100).lighten(28).toHexString();\n break;\n\n default:\n colorPalette[50] ??= new TinyColor(color).lighten(52).toHexString();\n colorPalette[100] ??= new TinyColor(color).lighten(37).toHexString();\n colorPalette[200] ??= new TinyColor(color).lighten(26).toHexString();\n colorPalette[300] ??= new TinyColor(color).lighten(12).toHexString();\n colorPalette[400] ??= new TinyColor(color).lighten(6).toHexString();\n colorPalette[500] ??= new TinyColor(color).toHexString();\n colorPalette[600] ??= new TinyColor(color).darken(6).toHexString();\n colorPalette[700] ??= new TinyColor(color).darken(12).toHexString();\n colorPalette[800] ??= new TinyColor(color).darken(18).toHexString();\n colorPalette[900] ??= new TinyColor(color).darken(24).toHexString();\n colorPalette.A100 ??= new TinyColor(color).lighten(50).saturate(30).toHexString();\n colorPalette.A200 ??= new TinyColor(color).lighten(30).saturate(30).toHexString();\n colorPalette.A400 ??= new TinyColor(color).lighten(10).saturate(15).toHexString();\n colorPalette.A700 ??= new TinyColor(color).lighten(5).saturate(5).toHexString();\n break;\n\n }\n\n return colorPalette as ColorPalette;\n}\n\nfunction multiply(rgb1: Numberify<RGBA>, rgb2: Numberify<RGBA>) {\n rgb1.b = Math.floor(rgb1.b * rgb2.b / 255);\n rgb1.g = Math.floor(rgb1.g * rgb2.g / 255);\n rgb1.r = Math.floor(rgb1.r * rgb2.r / 255);\n return new TinyColor('rgb ' + rgb1.r + ' ' + rgb1.g + ' ' + rgb1.b);\n}\n","import { ThemeDensity } from '@rxap/utilities';\nimport { Observable } from 'rxjs';\n\nexport function ObserveCurrentThemeDensity(): Observable<ThemeDensity> {\n return new Observable((subscriber) => {\n\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.type === 'attributes' && mutation.attributeName === 'class') {\n const classList = (mutation.target as HTMLElement).classList;\n const matchingClasses = Array.from(classList).filter((className) =>\n /density-\\d/.test(className),\n );\n if (matchingClasses.length > 0) {\n const match = matchingClasses[0].match(/density-(\\d)/);\n if (match) {\n subscriber.next(Number(match[1]) * -1 as ThemeDensity);\n }\n } else {\n subscriber.next(0);\n }\n }\n });\n });\n\n subscriber.add(() => observer.disconnect());\n\n observer.observe(document.body, {\n attributes: true,\n attributeFilter: [ 'class' ],\n });\n\n });\n}\n","import { MediaMatcher } from '@angular/cdk/layout';\nimport { DOCUMENT } from '@angular/common';\nimport {\n computed,\n effect,\n inject,\n Inject,\n Injectable,\n OnDestroy,\n Renderer2,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport { ConfigService } from '@rxap/config';\nimport {\n PubSubService,\n RXAP_TOPICS,\n} from '@rxap/ngx-pub-sub';\nimport { isDefined } from '@rxap/rxjs';\nimport {\n debounceTime,\n map,\n Subscription,\n tap,\n} from 'rxjs';\n\n// Represents the user's preference setting ('system', 'light', or 'dark')\nexport type ThemeSetting = 'system' | 'light' | 'dark';\n// Represents the currently active theme ('light' or 'dark')\nexport type ActiveTheme = 'light' | 'dark';\n\nexport const THEME_SETTING_KEY = 'rxap_theme_settings';\n\n/**\n * Service to manage theme mode (light/dark/system) for the application.\n * It provides functionality to handle theme preferences, persist them, and synchronize changes.\n *\n * This service integrates with media queries to detect system-level theme changes and allows the user\n * or application logic to toggle or set a specific theme.\n *\n * It utilizes dependency injection to access various required services and the document object.\n * Additionally, it publishes theme-related events for other parts of the application to react to\n * theme changes.\n */\n@Injectable({ providedIn: 'root' })\nexport class ThemeModeService implements OnDestroy {\n\n public readonly config = inject(ConfigService);\n public readonly pubSub = inject(PubSubService);\n\n public readonly activeTheme: WritableSignal<ActiveTheme>;\n public readonly themeSetting: WritableSignal<ThemeSetting>;\n public readonly darkMode = computed(() => this.activeTheme() === 'dark');\n\n protected readonly darkColorSchemaMediaQuery: MediaQueryList;\n\n protected readonly subscriptions: Subscription | null = null;\n protected readonly mediaQueryListener: (this: MediaQueryList, ev: MediaQueryListEventMap['change']) => any;\n\n protected syncSubscription?: Subscription;\n\n constructor(\n protected readonly mediaMatcher: MediaMatcher,\n @Inject(DOCUMENT) protected readonly document: Document,\n ) {\n this.darkColorSchemaMediaQuery = this.mediaMatcher.matchMedia('(prefers-color-scheme: dark)');\n this.themeSetting = signal(this.restoreThemeSetting());\n let activeTheme: ActiveTheme;\n const themeSetting = this.themeSetting();\n switch (themeSetting) {\n case 'system':\n activeTheme = this.darkColorSchemaMediaQuery.matches ? 'dark' : 'light';\n break;\n case 'light':\n activeTheme = 'light';\n break;\n case 'dark':\n activeTheme = 'dark';\n break;\n default:\n activeTheme = this.config.get('theme.active', 'light');\n break;\n }\n this.activeTheme = signal(activeTheme);\n effect(() => {\n const setting = this.themeSetting();\n this.storeThemeSetting(setting);\n });\n effect(() => {\n const active = this.activeTheme();\n this.setThemeClasses(active);\n });\n this.mediaQueryListener = (event: MediaQueryListEventMap['change']) => {\n if (this.themeSetting() === 'system') {\n this.activeTheme.set(event.matches ? 'dark' : 'light');\n }\n };\n this.darkColorSchemaMediaQuery.addEventListener('change', this.mediaQueryListener);\n this.restoreFromPubSub();\n }\n\n private get darkModeLocalStorageKey() {\n return (\n window as any\n )?.['__rxap__']?.['ngx']?.['theme']?.['darkMode']?.['key'] ?? THEME_SETTING_KEY;\n }\n\n protected restoreFromPubSub() {\n if (this.syncSubscription) {\n return;\n }\n this.syncSubscription = new Subscription();\n this.syncSubscription.add(this.pubSub.subscribe<boolean>(RXAP_TOPICS.theme.darkMode.restore).pipe(\n debounceTime(1000),\n map(event => event.data),\n isDefined(),\n tap(data => {\n const active = data ? 'dark' : 'light';\n this.themeSetting.set(active);\n this.activeTheme.set(active);\n })\n ).subscribe());\n }\n\n /**\n * Cleans up subscriptions and event listeners when the service is destroyed.\n */\n ngOnDestroy(): void {\n // Remove the media query listener if it exists.\n this.darkColorSchemaMediaQuery.removeEventListener('change', this.mediaQueryListener);\n // Unsubscribe from all RxJS subscriptions.\n this.subscriptions?.unsubscribe();\n this.syncSubscription?.unsubscribe();\n }\n\n protected restoreThemeSetting() {\n const setting = localStorage.getItem(this.darkModeLocalStorageKey) ?? this.config.get('theme.setting', 'system');\n if (setting && ['system', 'dark', 'light'].includes(setting)) {\n return setting as ThemeSetting;\n }\n return 'system';\n }\n\n protected storeThemeSetting(setting: ThemeSetting) {\n localStorage.setItem(this.darkModeLocalStorageKey, setting);\n }\n\n protected removeThemeClasses() {\n this.document.body.classList.remove('light');\n this.document.body.classList.remove('dark');\n }\n\n protected setThemeClasses(active: ActiveTheme) {\n this.document.body.classList.remove(active === 'light' ? 'dark' : 'light');\n this.document.body.classList.add(active);\n }\n\n /**\n * Toggles the application theme between 'light' and 'dark' modes.\n * It checks the currently active theme and switches to the opposite mode.\n *\n * @return {void} Does not return a value.\n */\n public toggleTheme(): void {\n const currentActive = this.activeTheme();\n // Determine the new setting based on the *currently active* theme.\n const newActive = currentActive === 'light' ? 'dark' : 'light';\n this.themeSetting.set(newActive);\n this.activeTheme.set(newActive);\n }\n\n /**\n * Sets the active theme for the application and optionally publishes the change.\n *\n * @param {ActiveTheme} active - The theme to be set as active.\n * @param {boolean} [publish=true] - Indicates whether to publish the theme change event.\n * @return {void}\n */\n public setTheme(active: ActiveTheme, publish = true) {\n this.themeSetting.set(active);\n this.activeTheme.set(active);\n if (publish) {\n this.pubSub.publish(RXAP_TOPICS.theme.darkMode.changed, this.darkMode());\n }\n }\n\n}\n","import { MediaMatcher } from '@angular/cdk/layout';\nimport {\n inject,\n Injectable,\n isDevMode,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport { ConfigService } from '@rxap/config';\nimport {\n PubSubService,\n RXAP_TOPICS,\n} from '@rxap/ngx-pub-sub';\nimport { isDefined } from '@rxap/rxjs';\nimport { ThemeDensity } from '@rxap/utilities';\nimport {\n debounceTime,\n map,\n Subscription,\n tap,\n} from 'rxjs';\nimport {\n ColorPalette,\n ComputeColorPalette,\n} from './compute-color-palette';\nimport { ThemeModeService } from './theme-mode.service';\n\nexport interface ColorPaletteConfigWithName extends ColorPaletteConfig {\n name?: string;\n}\n\nexport interface ThemeConfig {\n primaryColor?: ColorPaletteConfigWithName;\n accentColor?: ColorPaletteConfigWithName;\n warnColor?: ColorPaletteConfigWithName;\n density?: ThemeDensity;\n typography?: string;\n}\n\nexport interface ColorPaletteConfig {\n algorithm?: string;\n base?: string;\n color?: Partial<ColorPalette>;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ThemeService {\n\n public readonly config = inject(ConfigService);\n public readonly pubSub = inject(PubSubService);\n\n public readonly themeModeService = inject(ThemeModeService);\n\n public readonly darkMode = this.themeModeService.darkMode;\n public readonly themeName: WritableSignal<string>;\n public readonly density: WritableSignal<ThemeDensity>;\n public readonly typography: WritableSignal<string>;\n\n protected syncSubscription?: Subscription;\n\n constructor(private readonly mediaMatcher: MediaMatcher) {\n this.themeName = signal(this.getTheme());\n this.density = signal(this.getDensity());\n this.typography = signal(this.getTypography());\n }\n\n public restore() {\n if (isDevMode()) {\n console.log('Restore theme settings from local storage');\n }\n\n this.restoreThemeName();\n this.restoreDensity();\n this.restoreTypography();\n\n this.restoreFromPubSub();\n }\n\n protected restoreFromPubSub() {\n if (this.syncSubscription) {\n return;\n }\n this.syncSubscription = new Subscription();\n this.syncSubscription.add(this.pubSub.subscribe<ThemeDensity>(RXAP_TOPICS.theme.density.restore).pipe(\n debounceTime(1000),\n map(event => event.data),\n isDefined(),\n tap(data => this.setDensity(data, false, false))\n ).subscribe());\n this.syncSubscription.add(this.pubSub.subscribe<string>(RXAP_TOPICS.theme.preset.restore).pipe(\n debounceTime(1000),\n map(event => event.data),\n isDefined(),\n tap(data => this.setTheme(data, false, false))\n ).subscribe());\n this.syncSubscription.add(this.pubSub.subscribe<string>(RXAP_TOPICS.theme.typography.restore).pipe(\n debounceTime(1000),\n map(event => event.data),\n isDefined(),\n tap(data => this.setTypography(data, false, false))\n ).subscribe());\n }\n\n private get themeNameLocalStorageKey() {\n return (\n window as any\n )?.['__rxap__']?.['ngx']?.['theme']?.['name']?.['key'] ?? `rxap-theme-name`;\n }\n\n private get densityLocalStorageKey() {\n return (\n window as any\n )?.['__rxap__']?.['ngx']?.['theme']?.['density']?.['key'] ?? `rxap-theme-density`;\n }\n\n private get typographyLocalStorageKey() {\n return (\n window as any\n )?.['__rxap__']?.['ngx']?.['theme']?.['typography']?.['key'] ?? `rxap-theme-typography`;\n }\n\n // region restore\n\n public restoreThemeName() {\n const themeName = localStorage.getItem(this.themeNameLocalStorageKey);\n if (themeName) {\n this.setTheme(themeName, true);\n }\n return themeName;\n }\n\n public restoreTypography() {\n const typography = localStorage.getItem(this.typographyLocalStorageKey);\n if (typography) {\n this.setTypography(typography, true);\n }\n return typography;\n }\n\n public restoreDensity() {\n const density = localStorage.getItem('rxap-theme-density');\n if (density) {\n const value = Number(density) as ThemeDensity;\n if (value <= 0 && value >= -3) {\n this.setDensity(Number(density) as ThemeDensity, true);\n return value;\n }\n }\n return null;\n }\n\n // endregion\n\n public toggleDarkTheme(): void {\n this.themeModeService.toggleTheme();\n }\n\n // region set theme configuration state\n\n public setDarkTheme(darkMode: boolean, silent = false, publish = true): void {\n this.themeModeService.setTheme(darkMode ? 'dark' : 'light', publish);\n }\n\n public setDensity(density: ThemeDensity, silent = false, publish = true): void {\n this.applyDensity(density);\n if (this.density() !== density) {\n this.density.set(density);\n if (!silent) {\n localStorage.setItem(this.densityLocalStorageKey, String(density));\n if (publish) {\n this.pubSub.publish(RXAP_TOPICS.theme.density.changed, density);\n }\n }\n }\n }\n\n public setTypography(typography: string, silent = false, publish = true): void {\n this.applyTypography(typography);\n if (this.typography() !== typography) {\n this.typography.set(typography);\n if (!silent) {\n localStorage.setItem(this.typographyLocalStorageKey, typography);\n if (publish) {\n this.pubSub.publish(RXAP_TOPICS.theme.typography.changed, typography);\n }\n }\n }\n }\n\n public setTheme(themeName: string, silent = false, publish = true) {\n this.applyTheme(themeName);\n this.density.set(this.getDensity());\n this.typography.set(this.getTypography());\n if (this.themeName() !== themeName) {\n this.themeName.set(themeName);\n if (!silent) {\n localStorage.setItem(this.themeNameLocalStorageKey, themeName);\n if (publish) {\n this.pubSub.publish(RXAP_TOPICS.theme.preset.changed, themeName);\n }\n }\n }\n }\n\n // endregion\n\n // region apply theme configuration state\n\n public applyDensity(density: ThemeDensity): void {\n document.body.classList.remove('density-0', 'density-1', 'density-2', 'density-3');\n if (density < 0) {\n document.body.classList.add(`density${ density }`);\n }\n }\n\n public applyTypography(typography: string): void {\n document.body.style.setProperty('--font-family', `var(--font-family-${ typography })`);\n }\n\n public applyTheme(themeName: string): void {\n if (themeName === 'default') {\n this.resetToDefaultTheme();\n return;\n }\n\n const theme = this.getThemeConfig(themeName);\n\n if (theme.primaryColor?.color) {\n this.setCssColorVariables('primary', theme.primaryColor.color);\n }\n\n if (theme.accentColor?.color) {\n this.setCssColorVariables('accent', theme.accentColor.color);\n }\n\n if (theme.warnColor?.color) {\n this.setCssColorVariables('warn', theme.warnColor.color);\n }\n\n if (theme.density !== undefined) {\n this.applyDensity(theme.density);\n }\n\n if (theme.typography) {\n this.applyTypography(theme.typography);\n }\n\n document.body.style.setProperty(`--theme-name`, themeName);\n }\n\n // endregion\n\n // region get theme configuration state\n\n public getDensity(): ThemeDensity {\n let density = 0;\n document.body.classList.forEach((className) => {\n const match = className.match(/density-([123])/);\n if (match) {\n density = Number(match[1]) * -1;\n }\n });\n return density as ThemeDensity;\n }\n\n public getTypography(): string {\n const variable = document.body.style.getPropertyValue('--font-family');\n const match = variable.match(/var\\(--font-family-(.*)\\)/);\n if (match) {\n return match[1];\n }\n return 'default';\n }\n\n public getTheme() {\n return document.body.style.getPropertyValue('--theme-name') || 'default';\n }\n\n // endregion\n\n // region get available\n\n public getAvailableColorPalettes(): string[] | null {\n const colorPalettesConfigs: Record<string, unknown> | boolean = this.config.get('colorPalettes', false);\n if (!colorPalettesConfigs) {\n return null;\n }\n const availableColorPalettes: string[] = Object.keys(colorPalettesConfigs);\n availableColorPalettes.unshift('default');\n return availableColorPalettes;\n }\n\n public getAvailableThemes(): string[] | null {\n const themeConfigs: Record<string, unknown> | boolean = this.config.get('themes', false);\n if (!themeConfigs) {\n return null;\n }\n const availableThemes: string[] = Object.keys(themeConfigs);\n availableThemes.unshift('default');\n return availableThemes;\n }\n\n public getAvailableTypographies(): string[] | null {\n const availableTypographies = this.config.get('typographies', false);\n if (!availableTypographies) {\n return null;\n }\n return Array\n .from(document.styleSheets)\n .filter(sheet => sheet.href === null || sheet.href.startsWith(window.location.origin))\n .flatMap(sheet => Array.from(sheet.cssRules || []))\n .filter((rule: any) => rule.selectorText === ':root')\n .flatMap((rule: any) => Array.from(rule.style))\n .filter((prop: any) => prop.startsWith('--'))\n .filter((prop: any) => prop.startsWith('--font-family-'))\n .map((prop: any) => prop.replace('--font-family-', ''))\n .sort();\n }\n\n // endregion\n\n public getColorPalette(colorPaletteName: string): Partial<ColorPalette> {\n const colorPaletteConfig = this.config.getOrThrow<ColorPaletteConfig>(`colorPalettes.${ colorPaletteName }`);\n return this.coerceColorPalette(colorPaletteConfig);\n }\n\n // region utility\n\n private coerceColorPalette(colorPaletteConfig: ColorPaletteConfig): Partial<ColorPalette> {\n let colorPalette: Partial<ColorPalette> = {};\n\n if (colorPaletteConfig.color) {\n if (Object.keys(colorPaletteConfig.color).length !== 14) {\n // the color palette is not complete\n if (colorPaletteConfig.base) {\n colorPalette =\n ComputeColorPalette(colorPaletteConfig.base, colorPaletteConfig.color, colorPaletteConfig.algorithm);\n }\n }\n colorPalette = colorPaletteConfig.color;\n } else if (colorPaletteConfig.base) {\n colorPalette = ComputeColorPalette(colorPaletteConfig.base, {}, colorPaletteConfig.algorithm);\n }\n\n if (Object.keys(colorPalette).length === 0) {\n throw new Error('FATAL: The color palette has neither a base nor a color property');\n }\n\n return colorPalette;\n }\n\n private getThemeConfig(themeName: string): ThemeConfig {\n const themeConfig = this.config.getOrThrow<ThemeConfig>(`themes.${ themeName }`);\n\n if (themeConfig.accentColor) {\n themeConfig.accentColor.color = this.coerceColorPalette(themeConfig.accentColor);\n }\n\n if (themeConfig.primaryColor) {\n themeConfig.primaryColor.color = this.coerceColorPalette(themeConfig.primaryColor);\n }\n\n if (themeConfig.warnColor) {\n themeConfig.warnColor.color = this.coerceColorPalette(themeConfig.warnColor);\n }\n\n return themeConfig;\n }\n\n private setCssColorVariables(name: string, colorPalette: Partial<ColorPalette>): void {\n this.clearCssColorVariables(name);\n for (const [ index, color ] of Object.entries(colorPalette)) {\n document.body.style.setProperty(`--${ name }-${ index }`, color);\n }\n }\n\n private clearCssColorVariables(name: string): void {\n document.body.style.removeProperty(`--${ name }-50`);\n for (let index = 100; index <= 900; index += 100) {\n document.body.style.removeProperty(`--${ name }-${ index }`);\n }\n document.body.style.removeProperty(`--${ name }-a100`);\n document.body.style.removeProperty(`--${ name }-a200`);\n document.body.style.removeProperty(`--${ name }-a400`);\n document.body.style.removeProperty(`--${ name }-a700`);\n }\n\n private resetToDefaultTheme() {\n this.clearCssColorVariables('primary');\n this.clearCssColorVariables('accent');\n this.clearCssColorVariables('warn');\n this.setDensity(0);\n this.setTypography('default');\n document.body.style.removeProperty(`--theme-name`);\n localStorage.removeItem(this.themeNameLocalStorageKey);\n localStorage.removeItem(this.densityLocalStorageKey);\n localStorage.removeItem(this.typographyLocalStorageKey);\n }\n\n // endregion\n\n}\n","import {\n inject,\n provideAppInitializer,\n} from '@angular/core';\nimport { ThemeService } from './theme.service';\n\nexport function provideTheme() {\n return [\n provideAppInitializer(() => {\n const initializerFn = ((themeService: ThemeService) => () => themeService.restore())(inject(ThemeService));\n return initializerFn();\n })\n ];\n}\n","// region \nexport * from './lib/compute-color-palette';\nexport * from './lib/observe-current-theme-density';\nexport * from './lib/provide';\nexport * from './lib/theme-mode.service';\nexport * from './lib/theme.service';\n// endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;IAwBY;AAAZ,CAAA,UAAY,qBAAqB,EAAA;AAC/B,IAAA,qBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,qBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACrB,CAAC,EAHW,qBAAqB,KAArB,qBAAqB,GAGhC,EAAA,CAAA,CAAA;AAEK,SAAU,mBAAmB,CACjC,KAAiB,EACjB,YAAsC,GAAA,EAAE,EACxC,SAA0C,EAAA;AAE1C,IAAA,YAAY,GAAG,EAAE,GAAG,YAAY,EAAE;AAElC,IAAA,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,SAAS,CAAC;IAC1C,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;IACrF,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE;IAE/C,QAAQ,SAAS;QAEf,KAAK,qBAAqB,CAAC,UAAU;AACnC,YAAA,YAAY,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE;AAC3D,YAAA,YAAY,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE;AAC5D,YAAA,YAAY,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE;AAC5D,YAAA,YAAY,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE;AAC5D,YAAA,YAAY,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE;AAC5D,YAAA,YAAY,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE;AAC7D,YAAA,YAAY,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE;AAC3D,YAAA,YAAY,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE;AAC3D,YAAA,YAAY,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE;AAC3D,YAAA,YAAY,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE;YAC3D,YAAY,CAAC,IAAI,KAAK,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;YAC3F,YAAY,CAAC,IAAI,KAAK,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;YAC3F,YAAY,CAAC,IAAI,KAAK,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;YAC5F,YAAY,CAAC,IAAI,KAAK,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;YAC5F;QAEF,KAAK,qBAAqB,CAAC,OAAO;AAChC,YAAA,YAAY,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE;AAC3D,YAAA,YAAY,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE;AAC5D,YAAA,YAAY,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE;AAC5D,YAAA,YAAY,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE;AAC5D,YAAA,YAAY,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE;AAC5D,YAAA,YAAY,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE;AAC7D,YAAA,YAAY,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE;AAC3D,YAAA,YAAY,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE;AAC3D,YAAA,YAAY,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE;AAC3D,YAAA,YAAY,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE;YAC3D,YAAY,CAAC,IAAI,KAAK,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;YAC3F,YAAY,CAAC,IAAI,KAAK,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;YAC3F,YAAY,CAAC,IAAI,KAAK,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;YAC5F,YAAY,CAAC,IAAI,KAAK,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;YAC5F;AAEF,QAAA;AACE,YAAA,YAAY,CAAC,EAAE,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;AACnE,YAAA,YAAY,CAAC,GAAG,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;AACpE,YAAA,YAAY,CAAC,GAAG,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;AACpE,YAAA,YAAY,CAAC,GAAG,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;AACpE,YAAA,YAAY,CAAC,GAAG,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;AACnE,YAAA,YAAY,CAAC,GAAG,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;AACxD,YAAA,YAAY,CAAC,GAAG,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;AAClE,YAAA,YAAY,CAAC,GAAG,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;AACnE,YAAA,YAAY,CAAC,GAAG,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;AACnE,YAAA,YAAY,CAAC,GAAG,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;YACnE,YAAY,CAAC,IAAI,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;YACjF,YAAY,CAAC,IAAI,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;YACjF,YAAY,CAAC,IAAI,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;YACjF,YAAY,CAAC,IAAI,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;YAC/E;;AAIJ,IAAA,OAAO,YAA4B;AACrC;AAEA,SAAS,QAAQ,CAAC,IAAqB,EAAE,IAAqB,EAAA;AAC5D,IAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;AAC1C,IAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;AAC1C,IAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;IAC1C,OAAO,IAAI,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;AACrE;;SCpGgB,0BAA0B,GAAA;AACxC,IAAA,OAAO,IAAI,UAAU,CAAC,CAAC,UAAU,KAAI;QAEnC,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,CAAC,SAAS,KAAI;AAClD,YAAA,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;AAC7B,gBAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,IAAI,QAAQ,CAAC,aAAa,KAAK,OAAO,EAAE;AACxE,oBAAA,MAAM,SAAS,GAAI,QAAQ,CAAC,MAAsB,CAAC,SAAS;oBAC5D,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,KAC7D,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAC7B;AACD,oBAAA,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC9B,MAAM,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC;wBACtD,IAAI,KAAK,EAAE;AACT,4BAAA,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAiB,CAAC;;;yBAEnD;AACL,wBAAA,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;;;AAGxB,aAAC,CAAC;AACJ,SAAC,CAAC;QAEF,UAAU,CAAC,GAAG,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;AAE3C,QAAA,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC9B,YAAA,UAAU,EAAE,IAAI;YAChB,eAAe,EAAE,CAAE,OAAO,CAAE;AAC7B,SAAA,CAAC;AAEJ,KAAC,CAAC;AACJ;;ACFO,MAAM,iBAAiB,GAAG;AAEjC;;;;;;;;;;AAUG;MAEU,gBAAgB,CAAA;IAgB3B,WACqB,CAAA,YAA0B,EACR,QAAkB,EAAA;QADpC,IAAY,CAAA,YAAA,GAAZ,YAAY;QACM,IAAQ,CAAA,QAAA,GAAR,QAAQ;AAhB/B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;AAC9B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;AAI9B,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;QAIrD,IAAa,CAAA,aAAA,GAAwB,IAAI;QAS1D,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,8BAA8B,CAAC;QAC7F,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;AACtD,QAAA,IAAI,WAAwB;AAC5B,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;QACxC,QAAQ,YAAY;AAClB,YAAA,KAAK,QAAQ;AACX,gBAAA,WAAW,GAAG,IAAI,CAAC,yBAAyB,CAAC,OAAO,GAAG,MAAM,GAAG,OAAO;gBACvE;AACF,YAAA,KAAK,OAAO;gBACV,WAAW,GAAI,OAAO;gBACtB;AACF,YAAA,KAAK,MAAM;gBACT,WAAW,GAAI,MAAM;gBACrB;AACF,YAAA;gBACE,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC;gBACtD;;AAEJ,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACtC,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE;AACnC,YAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;AACjC,SAAC,CAAC;QACF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE;AACjC,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;AAC9B,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,kBAAkB,GAAG,CAAC,KAAuC,KAAI;AACpE,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,QAAQ,EAAE;AACpC,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;;AAE1D,SAAC;QACD,IAAI,CAAC,yBAAyB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC;QAClF,IAAI,CAAC,iBAAiB,EAAE;;AAG1B,IAAA,IAAY,uBAAuB,GAAA;QACjC,OACS,MACD,GAAG,UAAU,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,GAAG,UAAU,CAAC,GAAG,KAAK,CAAC,IAAI,iBAAiB;;IAG9E,iBAAiB,GAAA;AACzB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB;;AAEF,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,YAAY,EAAE;QAC1C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAU,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAC/F,YAAY,CAAC,IAAI,CAAC,EAClB,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,EACxB,SAAS,EAAE,EACX,GAAG,CAAC,IAAI,IAAG;YACT,MAAM,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO;AACtC,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;AAC7B,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;AAC9B,SAAC,CAAC,CACH,CAAC,SAAS,EAAE,CAAC;;AAGhB;;AAEG;IACH,WAAW,GAAA;;QAET,IAAI,CAAC,yBAAyB,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC;;AAErF,QAAA,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE;AACjC,QAAA,IAAI,CAAC,gBAAgB,EAAE,WAAW,EAAE;;IAG5B,mBAAmB,GAAA;QAC3B,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC;AAChH,QAAA,IAAI,OAAO,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC5D,YAAA,OAAO,OAAuB;;AAEhC,QAAA,OAAO,QAAQ;;AAGP,IAAA,iBAAiB,CAAC,OAAqB,EAAA;QAC/C,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,OAAO,CAAC;;IAGnD,kBAAkB,GAAA;QAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;;AAGnC,IAAA,eAAe,CAAC,MAAmB,EAAA;QAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;QAC1E,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;;AAG1C;;;;;AAKG;IACI,WAAW,GAAA;AAChB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE;;AAExC,QAAA,MAAM,SAAS,GAAG,aAAa,KAAK,OAAO,GAAG,MAAM,GAAG,OAAO;AAC9D,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC;AAChC,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC;;AAGjC;;;;;;AAMG;AACI,IAAA,QAAQ,CAAC,MAAmB,EAAE,OAAO,GAAG,IAAI,EAAA;AACjD,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;AAC7B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;QAC5B,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;;;AAzIjE,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,8CAkBjB,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAlBP,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cADH,MAAM,EAAA,CAAA,CAAA;;4FACnB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;0BAmB7B,MAAM;2BAAC,QAAQ;;;MCjBP,YAAY,CAAA;AAcvB,IAAA,WAAA,CAA6B,YAA0B,EAAA;QAA1B,IAAY,CAAA,YAAA,GAAZ,YAAY;AAZzB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;AAC9B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;AAE9B,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAE3C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ;QAQvD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACxC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACxC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;;IAGzC,OAAO,GAAA;QACZ,IAAI,SAAS,EAAE,EAAE;AACf,YAAA,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC;;QAG1D,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,cAAc,EAAE;QACrB,IAAI,CAAC,iBAAiB,EAAE;QAExB,IAAI,CAAC,iBAAiB,EAAE;;IAGhB,iBAAiB,GAAA;AACzB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB;;AAEF,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,YAAY,EAAE;AAC1C,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAe,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CACnG,YAAY,CAAC,IAAI,CAAC,EAClB,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,EACxB,SAAS,EAAE,EACX,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CACjD,CAAC,SAAS,EAAE,CAAC;AACd,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAS,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAC5F,YAAY,CAAC,IAAI,CAAC,EAClB,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,EACxB,SAAS,EAAE,EACX,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAC/C,CAAC,SAAS,EAAE,CAAC;AACd,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAS,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAChG,YAAY,CAAC,IAAI,CAAC,EAClB,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,EACxB,SAAS,EAAE,EACX,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CACpD,CAAC,SAAS,EAAE,CAAC;;AAGhB,IAAA,IAAY,wBAAwB,GAAA;QAClC,OACS,MACD,GAAG,UAAU,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,GAAG,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAA,eAAA,CAAiB;;AAGpF,IAAA,IAAY,sBAAsB,GAAA;QAChC,OACS,MACD,GAAG,UAAU,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,GAAG,SAAS,CAAC,GAAG,KAAK,CAAC,IAAI,CAAA,kBAAA,CAAoB;;AAG1F,IAAA,IAAY,yBAAyB,GAAA;QACnC,OACS,MACD,GAAG,UAAU,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,GAAG,YAAY,CAAC,GAAG,KAAK,CAAC,IAAI,CAAA,qBAAA,CAAuB;;;IAKzF,gBAAgB,GAAA;QACrB,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC;QACrE,IAAI,SAAS,EAAE;AACb,YAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;;AAEhC,QAAA,OAAO,SAAS;;IAGX,iBAAiB,GAAA;QACtB,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC;QACvE,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC;;AAEtC,QAAA,OAAO,UAAU;;IAGZ,cAAc,GAAA;QACnB,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAAC;QAC1D,IAAI,OAAO,EAAE;AACX,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAiB;YAC7C,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,EAAE;gBAC7B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAiB,EAAE,IAAI,CAAC;AACtD,gBAAA,OAAO,KAAK;;;AAGhB,QAAA,OAAO,IAAI;;;IAKN,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;;;IAK9B,YAAY,CAAC,QAAiB,EAAE,MAAM,GAAG,KAAK,EAAE,OAAO,GAAG,IAAI,EAAA;AACnE,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,GAAG,OAAO,EAAE,OAAO,CAAC;;IAG/D,UAAU,CAAC,OAAqB,EAAE,MAAM,GAAG,KAAK,EAAE,OAAO,GAAG,IAAI,EAAA;AACrE,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;AAC1B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,OAAO,EAAE;AAC9B,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;YACzB,IAAI,CAAC,MAAM,EAAE;AACX,gBAAA,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;gBAClE,IAAI,OAAO,EAAE;AACX,oBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;;;;;IAMhE,aAAa,CAAC,UAAkB,EAAE,MAAM,GAAG,KAAK,EAAE,OAAO,GAAG,IAAI,EAAA;AACrE,QAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;AAChC,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,UAAU,EAAE;AACpC,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;YAC/B,IAAI,CAAC,MAAM,EAAE;gBACX,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,yBAAyB,EAAE,UAAU,CAAC;gBAChE,IAAI,OAAO,EAAE;AACX,oBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC;;;;;IAMtE,QAAQ,CAAC,SAAiB,EAAE,MAAM,GAAG,KAAK,EAAE,OAAO,GAAG,IAAI,EAAA;AAC/D,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAC1B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;AACzC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,SAAS,EAAE;AAClC,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;YAC7B,IAAI,CAAC,MAAM,EAAE;gBACX,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE,SAAS,CAAC;gBAC9D,IAAI,OAAO,EAAE;AACX,oBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC;;;;;;;AAUjE,IAAA,YAAY,CAAC,OAAqB,EAAA;AACvC,QAAA,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC;AAClF,QAAA,IAAI,OAAO,GAAG,CAAC,EAAE;YACf,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAW,OAAA,EAAA,OAAQ,CAAE,CAAA,CAAC;;;AAI/C,IAAA,eAAe,CAAC,UAAkB,EAAA;AACvC,QAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,eAAe,EAAE,CAAA,kBAAA,EAAsB,UAAW,CAAA,CAAA,CAAG,CAAC;;AAGjF,IAAA,UAAU,CAAC,SAAiB,EAAA;AACjC,QAAA,IAAI,SAAS,KAAK,SAAS,EAAE;YAC3B,IAAI,CAAC,mBAAmB,EAAE;YAC1B;;QAGF,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;AAE5C,QAAA,IAAI,KAAK,CAAC,YAAY,EAAE,KAAK,EAAE;YAC7B,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC;;AAGhE,QAAA,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,EAAE;YAC5B,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC;;AAG9D,QAAA,IAAI,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE;YAC1B,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;;AAG1D,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE;AAC/B,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC;;AAGlC,QAAA,IAAI,KAAK,CAAC,UAAU,EAAE;AACpB,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC;;QAGxC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAc,YAAA,CAAA,EAAE,SAAS,CAAC;;;;IAOrD,UAAU,GAAA;QACf,IAAI,OAAO,GAAG,CAAC;QACf,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;YAC5C,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,iBAAiB,CAAC;YAChD,IAAI,KAAK,EAAE;gBACT,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;;AAEnC,SAAC,CAAC;AACF,QAAA,OAAO,OAAuB;;IAGzB,aAAa,GAAA;AAClB,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,eAAe,CAAC;QACtE,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,2BAA2B,CAAC;QACzD,IAAI,KAAK,EAAE;AACT,YAAA,OAAO,KAAK,CAAC,CAAC,CAAC;;AAEjB,QAAA,OAAO,SAAS;;IAGX,QAAQ,GAAA;AACb,QAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,SAAS;;;;IAOnE,yBAAyB,GAAA;AAC9B,QAAA,MAAM,oBAAoB,GAAsC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC;QACvG,IAAI,CAAC,oBAAoB,EAAE;AACzB,YAAA,OAAO,IAAI;;QAEb,MAAM,sBAAsB,GAAa,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC;AAC1E,QAAA,sBAAsB,CAAC,OAAO,CAAC,SAAS,CAAC;AACzC,QAAA,OAAO,sBAAsB;;IAGxB,kBAAkB,GAAA;AACvB,QAAA,MAAM,YAAY,GAAsC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC;QACxF,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,OAAO,IAAI;;QAEb,MAAM,eAAe,GAAa,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;AAC3D,QAAA,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC;AAClC,QAAA,OAAO,eAAe;;IAGjB,wBAAwB,GAAA;AAC7B,QAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC;QACpE,IAAI,CAAC,qBAAqB,EAAE;AAC1B,YAAA,OAAO,IAAI;;AAEb,QAAA,OAAO;AACJ,aAAA,IAAI,CAAC,QAAQ,CAAC,WAAW;aACzB,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AACpF,aAAA,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;aACjD,MAAM,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,YAAY,KAAK,OAAO;AACnD,aAAA,OAAO,CAAC,CAAC,IAAS,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAC7C,aAAA,MAAM,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AAC3C,aAAA,MAAM,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC;AACvD,aAAA,GAAG,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;AACrD,aAAA,IAAI,EAAE;;;AAKJ,IAAA,eAAe,CAAC,gBAAwB,EAAA;AAC7C,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAqB,CAAkB,cAAA,EAAA,gBAAiB,CAAE,CAAA,CAAC;AAC5G,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC;;;AAK5C,IAAA,kBAAkB,CAAC,kBAAsC,EAAA;QAC/D,IAAI,YAAY,GAA0B,EAAE;AAE5C,QAAA,IAAI,kBAAkB,CAAC,KAAK,EAAE;AAC5B,YAAA,IAAI,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,EAAE,EAAE;;AAEvD,gBAAA,IAAI,kBAAkB,CAAC,IAAI,EAAE;oBAC3B,YAAY;AACV,wBAAA,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,EAAE,kBAAkB,CAAC,KAAK,EAAE,kBAAkB,CAAC,SAAS,CAAC;;;AAG1G,YAAA,YAAY,GAAG,kBAAkB,CAAC,KAAK;;AAClC,aAAA,IAAI,kBAAkB,CAAC,IAAI,EAAE;AAClC,YAAA,YAAY,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,EAAE,kBAAkB,CAAC,SAAS,CAAC;;QAG/F,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1C,YAAA,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC;;AAGrF,QAAA,OAAO,YAAY;;AAGb,IAAA,cAAc,CAAC,SAAiB,EAAA;AACtC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAc,CAAW,OAAA,EAAA,SAAU,CAAE,CAAA,CAAC;AAEhF,QAAA,IAAI,WAAW,CAAC,WAAW,EAAE;AAC3B,YAAA,WAAW,CAAC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,WAAW,CAAC;;AAGlF,QAAA,IAAI,WAAW,CAAC,YAAY,EAAE;AAC5B,YAAA,WAAW,CAAC,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,YAAY,CAAC;;AAGpF,QAAA,IAAI,WAAW,CAAC,SAAS,EAAE;AACzB,YAAA,WAAW,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,SAAS,CAAC;;AAG9E,QAAA,OAAO,WAAW;;IAGZ,oBAAoB,CAAC,IAAY,EAAE,YAAmC,EAAA;AAC5E,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;AACjC,QAAA,KAAK,MAAM,CAAE,KAAK,EAAE,KAAK,CAAE,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;AAC3D,YAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAM,EAAA,EAAA,IAAK,IAAK,KAAM,CAAA,CAAE,EAAE,KAAK,CAAC;;;AAI5D,IAAA,sBAAsB,CAAC,IAAY,EAAA;QACzC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAM,EAAA,EAAA,IAAK,CAAK,GAAA,CAAA,CAAC;AACpD,QAAA,KAAK,IAAI,KAAK,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE;AAChD,YAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA,EAAA,EAAM,IAAK,CAAA,CAAA,EAAK,KAAM,CAAA,CAAE,CAAC;;QAE9D,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAM,EAAA,EAAA,IAAK,CAAO,KAAA,CAAA,CAAC;QACtD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAM,EAAA,EAAA,IAAK,CAAO,KAAA,CAAA,CAAC;QACtD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAM,EAAA,EAAA,IAAK,CAAO,KAAA,CAAA,CAAC;QACtD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAM,EAAA,EAAA,IAAK,CAAO,KAAA,CAAA,CAAC;;IAGhD,mBAAmB,GAAA;AACzB,QAAA,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC;AACtC,QAAA,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC;AACrC,QAAA,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC;AACnC,QAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AAClB,QAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;QAC7B,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAc,YAAA,CAAA,CAAC;AAClD,QAAA,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,wBAAwB,CAAC;AACtD,QAAA,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC;AACpD,QAAA,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC;;+GA9V9C,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cADC,MAAM,EAAA,CAAA,CAAA;;4FACnB,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;SCvClB,YAAY,GAAA;IAC1B,OAAO;QACL,qBAAqB,CAAC,MAAK;YACvB,MAAM,aAAa,GAAG,CAAC,CAAC,YAA0B,KAAK,MAAM,YAAY,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;YAC1G,OAAO,aAAa,EAAE;AACxB,SAAC;KACJ;AACH;;ACbA;AAMA;;ACNA;;AAEG;;;;"}