@cisstech/nge
Version:
NG Essentials is a collection of libraries for Angular developers.
1 lines • 89.9 kB
Source Map (JSON)
{"version":3,"file":"cisstech-nge-monaco.mjs","sources":["../../../projects/nge/monaco/src/monaco-config.ts","../../../projects/nge/monaco/src/contributions/monaco-contribution.ts","../../../projects/nge/monaco/src/services/monaco-loader.service.ts","../../../projects/nge/monaco/src/components/monaco-diff-editor/monaco-diff-editor.component.ts","../../../projects/nge/monaco/src/components/monaco-diff-editor/monaco-diff-editor.component.html","../../../projects/nge/monaco/src/components/monaco-placeholder/monaco-placeholder.component.ts","../../../projects/nge/monaco/src/components/monaco-placeholder/monaco-placeholder.component.html","../../../projects/nge/monaco/src/components/monaco-editor/monaco-editor.component.ts","../../../projects/nge/monaco/src/components/monaco-editor/monaco-editor.component.html","../../../projects/nge/monaco/src/services/monaco-theme.service.ts","../../../projects/nge/monaco/src/services/monaco-colorizer.service.ts","../../../projects/nge/monaco/src/components/monaco-viewer/monaco-viewer.component.ts","../../../projects/nge/monaco/src/components/monaco-viewer/monaco-viewer.component.html","../../../projects/nge/monaco/src/monaco-constants.ts","../../../projects/nge/monaco/src/contributions/prevent-symbol-duplication.ts","../../../projects/nge/monaco/src/monaco.module.ts","../../../projects/nge/monaco/index.ts","../../../projects/nge/monaco/cisstech-nge-monaco.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core'\n\n/**\n * Monaco editor loader configuration.\n */\nexport interface NgeMonacoConfig {\n /**\n * Base path for monaco editor default: 'https://cdn.jsdelivr.net/npm/monaco-editor@0.20.0'\n */\n assets?: string\n\n /**\n * Default locale (en).\n */\n locale?: 'de' | 'en' | 'es' | 'fr' | 'it' | 'ja' | 'ko' | 'ru' | 'zh-ch' | 'zh-tw'\n\n /**\n * Monaco editor default options.\n */\n options?: monaco.editor.IEditorOptions\n\n /** Monaco editor theming configuration. */\n theming?: {\n /** path to theme files. */\n themes?: string[]\n /** default theme 'vs' */\n default?: string\n }\n}\n\n/**\n * Monaco editor loader configuration token.\n */\nexport const NGE_MONACO_CONFIG = new InjectionToken<NgeMonacoConfig>('NGE_MONACO_CONFIG')\n","import { InjectionToken } from '@angular/core'\n\nexport interface NgeMonacoContribution {\n activate(): void | Promise<void>\n deactivate?(): void | Promise<void>\n}\n\nexport const NGE_MONACO_CONTRIBUTION = new InjectionToken<NgeMonacoContribution>('NGE_MONACO_CONTRIBUTION')\n","import { Inject, Injectable, OnDestroy, Optional } from '@angular/core'\nimport { ResourceLoaderService } from '@cisstech/nge/services'\nimport { lastValueFrom, of, Subject } from 'rxjs'\nimport { NGE_MONACO_CONTRIBUTION, NgeMonacoContribution } from '../contributions/monaco-contribution'\nimport { NGE_MONACO_CONFIG, NgeMonacoConfig } from '../monaco-config'\n\n/** monaco editor cdn url hosted at cdnjs. */\nexport const MONACO_CDNJS_URL = 'https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.52.0'\n\n/** monaco editor cdn url hosted at jsdeliver. */\nexport const MONACO_JS_DELIVER_URL = 'https://cdn.jsdelivr.net/npm/monaco-editor@0.52.0'\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst WINDOW = window as any\n\n/**\n * Loads monaco editor using AMD loader.\n */\n@Injectable({ providedIn: 'root' })\nexport class NgeMonacoLoaderService implements OnDestroy {\n private readonly monaco$ = new Subject<typeof monaco>()\n\n private baseUrl = MONACO_CDNJS_URL\n private loadPromise?: Promise<typeof monaco>\n\n constructor(\n @Optional()\n @Inject(NGE_MONACO_CONFIG)\n private readonly config: NgeMonacoConfig,\n @Optional()\n @Inject(NGE_MONACO_CONTRIBUTION)\n private readonly contributions: NgeMonacoContribution[],\n private readonly resourceLoader: ResourceLoaderService\n ) {\n this.contributions = contributions || []\n }\n\n async ngOnDestroy() {\n await this.deactivateContributions()\n }\n\n /**\n * Call the given `observer` function to extend monaco editor functionalities\n * once it will be available in `window.monaco`.\n *\n * The function will be called immediately if monaco api is already loaded.\n * @param observer observer object.\n * @returns A subscription object that should be unsubscribed later.\n */\n onLoadMonaco(observer: (arg: typeof monaco) => void) {\n if (typeof WINDOW.monaco === 'undefined') {\n return this.monaco$.asObservable().subscribe(observer)\n }\n return of(WINDOW.monaco as typeof monaco).subscribe(observer)\n }\n\n /**\n * Loads monaco editor if it is not loaded.\n */\n loadAsync() {\n return (\n this.loadPromise ??\n (this.loadPromise = new Promise((resolve) => {\n (async () => {\n // Try to fix the issues described here by loading monaco editor\n // after all the other scripts.\n // https://stackoverflow.com/a/33635881\n // https://github.com/microsoft/monaco-editor/issues/662\n // https://github.com/microsoft/monaco-editor/issues/1249\n const interval = setInterval(() => {\n if (document.readyState !== 'complete') return\n clearInterval(interval)\n\n setTimeout(async () => {\n await this.resourceLoader.waitForPendings()\n\n this.baseUrl = this.config?.assets || MONACO_CDNJS_URL\n if (this.baseUrl.endsWith('/')) {\n this.baseUrl = this.baseUrl.slice(0, this.baseUrl.length - 1)\n }\n\n this.addWorkersIfCrossDomain()\n\n if (!WINDOW.require) {\n lastValueFrom(this.resourceLoader.loadAllAsync([['script', `${this.baseUrl}/min/vs/loader.js`]])).then(\n () => this.onLoad(resolve)\n )\n } else {\n this.onLoad(resolve)\n }\n }, 300)\n })\n })()\n }))\n )\n }\n\n private onLoad(resolve: (e: typeof monaco) => void): void {\n WINDOW.require.config({\n paths: { vs: this.baseUrl + '/min/vs' },\n })\n\n const locale = this.config?.locale || ''\n if (locale !== 'en') {\n WINDOW.require.config({\n 'vs/nls': {\n availableLanguages: { '*': locale },\n },\n })\n }\n\n WINDOW.require(['vs/editor/editor.main'], async () => {\n await this.activateContributions()\n this.monaco$.next(monaco)\n resolve(monaco)\n })\n }\n\n private addWorkersIfCrossDomain() {\n // https://github.com/microsoft/monaco-editor/blob/master/docs/integrate-amd-cross.md\n if (this.baseUrl.startsWith('http')) {\n const proxy = URL.createObjectURL(\n new Blob(\n [\n `\n self.MonacoEnvironment = { baseUrl: '${this.baseUrl}/min' };\n importScripts('${this.baseUrl}/min/vs/base/worker/workerMain.js');\n `,\n ],\n { type: 'text/javascript' }\n )\n )\n\n WINDOW.MonacoEnvironment = {\n baseUrl: this.baseUrl + '/min',\n getWorkerUrl: () => proxy,\n globalAPI: true,\n }\n }\n }\n\n private async activateContributions(): Promise<void> {\n await Promise.all(this.contributions.map((e) => e.activate()))\n }\n\n private async deactivateContributions(): Promise<void> {\n await Promise.all(\n this.contributions.map((e) => {\n if (e.deactivate) {\n return e.deactivate()\n }\n return Promise.resolve()\n })\n )\n }\n}\n","import {\n AfterViewChecked,\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n ViewChild,\n} from '@angular/core'\nimport { NgeMonacoConfig, NGE_MONACO_CONFIG } from '../../monaco-config'\nimport { NgeMonacoLoaderService } from '../../services/monaco-loader.service'\n\n@Component({\n selector: 'nge-monaco-diff-editor',\n templateUrl: './monaco-diff-editor.component.html',\n styleUrls: ['./monaco-diff-editor.component.scss'],\n})\nexport class NgeMonacoDiffEditorComponent implements AfterViewInit, AfterViewChecked, OnDestroy {\n @ViewChild('container', { static: true })\n container!: ElementRef<HTMLElement>\n\n @Output()\n ready = new EventEmitter<monaco.editor.IEditor>()\n\n @Input()\n autoLayout = true\n\n @Input()\n options?: monaco.editor.IStandaloneDiffEditorConstructionOptions\n\n private editor?: monaco.editor.IStandaloneDiffEditor\n private width = 0\n private height = 0\n\n constructor(\n private readonly loader: NgeMonacoLoaderService,\n @Optional()\n @Inject(NGE_MONACO_CONFIG)\n private readonly config: NgeMonacoConfig\n ) {}\n\n @HostListener('window:resize')\n onResizeWindow() {\n this.editor?.layout()\n }\n\n ngAfterViewInit() {\n this.loader.loadAsync().then(() => {\n this.createEditor()\n })\n }\n\n ngAfterViewChecked() {\n if (!this.autoLayout) {\n return\n }\n const { offsetWidth, offsetHeight } = this.container.nativeElement\n if (offsetWidth !== this.width || offsetHeight !== this.height) {\n this.width = offsetWidth\n this.height = offsetHeight\n this.editor?.layout()\n }\n }\n\n ngOnDestroy() {\n this.editor?.dispose()\n }\n\n private createEditor() {\n this.editor = monaco.editor.createDiffEditor(this.container.nativeElement, {\n ...(this.config.options || {}),\n ...(this.options || {}),\n })\n this.ready.emit(this.editor)\n }\n}\n","<div class=\"nge-monaco-diff-editor-container\" #container></div>\n","import { ChangeDetectionStrategy, Component } from '@angular/core'\n\n@Component({\n selector: 'nge-monaco-placeholder',\n templateUrl: './monaco-placeholder.component.html',\n styleUrls: ['./monaco-placeholder.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgeMonacoPlaceholderComponent {}\n","\n","import {\n AfterViewChecked,\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n ViewChild,\n} from '@angular/core'\nimport { NGE_MONACO_CONFIG, NgeMonacoConfig } from '../../monaco-config'\nimport { NgeMonacoLoaderService } from '../../services/monaco-loader.service'\n\n@Component({\n selector: 'nge-monaco-editor',\n templateUrl: './monaco-editor.component.html',\n styleUrls: ['./monaco-editor.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgeMonacoEditorComponent implements AfterViewInit, AfterViewChecked, OnDestroy {\n protected loading = true\n @ViewChild('container', { static: true })\n protected container!: ElementRef<HTMLElement>\n\n @Output() ready = new EventEmitter<monaco.editor.IEditor>()\n @Input() autoLayout = true\n @Input() options?: monaco.editor.IStandaloneEditorConstructionOptions\n\n private editor?: monaco.editor.IStandaloneCodeEditor\n private width = 0\n private height = 0\n\n constructor(\n private readonly loader: NgeMonacoLoaderService,\n @Optional()\n @Inject(NGE_MONACO_CONFIG)\n private readonly config: NgeMonacoConfig\n ) {}\n\n ngAfterViewInit(): void {\n this.loader.loadAsync().then(() => {\n this.createEditor()\n })\n }\n\n ngAfterViewChecked(): void {\n if (!this.autoLayout) {\n return\n }\n const { offsetWidth, offsetHeight } = this.container.nativeElement\n if (offsetWidth !== this.width || offsetHeight !== this.height) {\n this.width = offsetWidth\n this.height = offsetHeight\n this.editor?.layout()\n }\n }\n\n ngOnDestroy(): void {\n this.editor?.dispose()\n }\n\n @HostListener('window:resize')\n protected onResizeWindow(): void {\n this.editor?.layout()\n }\n\n private createEditor(): void {\n this.editor = monaco.editor.create(this.container.nativeElement, {\n ...(this.config.options || {}),\n ...(this.options || {}),\n })\n this.loading = false\n this.ready.emit(this.editor)\n }\n}\n","<nge-monaco-placeholder *ngIf=\"loading\" />\n<div class=\"nge-monaco-editor-container\" #container></div>\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { HttpClient } from '@angular/common/http'\nimport { Inject, Injectable, Optional } from '@angular/core'\nimport { BehaviorSubject, Observable, firstValueFrom } from 'rxjs'\nimport { map } from 'rxjs/operators'\nimport { NgeMonacoContribution } from '../contributions/monaco-contribution'\nimport { NGE_MONACO_CONFIG, NgeMonacoConfig } from '../monaco-config'\n\n@Injectable({ providedIn: 'root' })\nexport class NgeMonacoThemeService implements NgeMonacoContribution {\n private readonly themes = new BehaviorSubject<string[]>([])\n private readonly activeTheme = new BehaviorSubject<NgeMonacoTheme | undefined>(undefined)\n\n private themeService: any\n\n constructor(\n @Optional()\n private readonly http: HttpClient,\n\n @Optional()\n @Inject(NGE_MONACO_CONFIG)\n private readonly config: NgeMonacoConfig\n ) {}\n\n /**\n * Gets the current active theme of monaco editor (undefined if monaco editor is not loaded).\n */\n get theme(): NgeMonacoTheme | undefined {\n return this.activeTheme.value\n }\n\n /**\n * Gets an observable that emit each time monaco editor theme change.\n *\n * Note: The observable emits first with the current theme\n * the first time `subscribe()` method is called.\n */\n get themeChanges(): Observable<NgeMonacoTheme | undefined> {\n return this.activeTheme.asObservable()\n }\n\n /**\n * Gets an observable that emit each time monaco editor theme list change.\n */\n get themesChanges(): Observable<string[]> {\n return this.themes.asObservable().pipe(\n map((e) => e.slice()) // return a copy of the array\n )\n }\n\n async activate(): Promise<void> {\n //this.decorateCreateEditorAPI()\n\n const node = document.createElement('div')\n\n const editor = monaco.editor.create(node)\n this.themeService = (editor as any)._themeService\n setTimeout(() => editor.dispose())\n\n this.retrieveThemes()\n\n await this.setTheme(this.config?.theming?.default || 'vs')\n node.remove()\n }\n\n /**\n * Switches monaco editor theme.\n * @param themeName The new theme to use.\n *\n */\n async setTheme(themeName: string): Promise<void> {\n await this.defineTheme(themeName)\n monaco.editor.setTheme(themeName)\n this.activeTheme.next(this.themeService.getColorTheme())\n }\n\n /**\n * Gets the information about the given `themeName`\n * @param themeName The theme to get.\n * @returns A promise that resolves with the theme info.\n */\n async getTheme(themeName: string): Promise<NgeMonacoTheme> {\n await this.defineTheme(themeName)\n return this.themeService._knownThemes.get(themeName)\n }\n\n /**\n * Defines a theme for the Monaco editor.\n * @remarks\n * - If the theme is already defined, this method does nothing.\n * @param themeName - The name of the theme to define.\n * @throws {ReferenceError} If the themeName argument is not provided.\n * @throws {Error} If the specified theme is missing.\n * @throws {Error} If HttpClientModule is missing in AppModule.\n * @returns A Promise that resolves when the theme is defined successfully.\n */\n async defineTheme(themeName: string): Promise<void> {\n if (!themeName) {\n throw new ReferenceError('Argument \"themeName\" is required')\n }\n\n const knownThemes: Map<string, NgeMonacoTheme> = this.themeService._knownThemes\n if (knownThemes.has(themeName)) {\n return\n }\n\n const customThemePath = this.config?.theming?.themes?.find((e) => {\n return this.themeNameFromPath(e) === themeName\n })\n if (!customThemePath) {\n throw new Error(`[nge-monaco] Missing theme \"${themeName}\"`)\n }\n\n if (!this.http) {\n throw new Error('[nge-monaco] Missing HttpClientModule in AppModule. See README for more information')\n }\n\n try {\n const theme = await firstValueFrom(this.http.get<any>(customThemePath))\n monaco.editor.defineTheme(themeName, {\n base: theme.base,\n inherit: theme.inherit,\n rules: theme.rules,\n colors: theme.colors as any,\n })\n } catch (error) {\n console.error('[nge-monaco] Failed to load theme ' + customThemePath, error)\n }\n }\n\n private retrieveThemes(): void {\n const themes: string[] = []\n this.themeService._knownThemes.forEach((theme: any) => {\n themes.push(theme.themeName)\n })\n const customThemes: string[] = (this.config?.theming?.themes || []).map(this.themeNameFromPath.bind(this))\n this.themes.next(themes.concat(customThemes))\n }\n\n private themeNameFromPath(path: string): string {\n const name = path.split('/').pop()\n if (!name) {\n throw new Error(`[nge-monaco]: invalid theme path \"${path}\"`)\n }\n return name.replace('.json', '')\n }\n\n private decorateCreateEditorAPI(): void {\n const createEditor = monaco.editor.create\n monaco.editor.create = (\n element: HTMLElement,\n options?: monaco.editor.IStandaloneEditorConstructionOptions | undefined,\n override?: monaco.editor.IEditorOverrideServices | undefined\n ) => {\n const editor = createEditor.call(monaco.editor, element, options, override)\n const updateOptions = editor.updateOptions\n editor.updateOptions = (newOptions: monaco.editor.IStandaloneEditorConstructionOptions) => {\n updateOptions.call(editor, newOptions)\n if (newOptions.theme) {\n this.setTheme(newOptions.theme).catch(console.error)\n }\n }\n\n if (options?.theme) {\n this.setTheme(options.theme).catch(console.error)\n }\n return editor\n }\n }\n}\n\nexport interface NgeMonacoTheme {\n id: string\n type: 'light' | 'dark' | 'hc'\n colors: Map<string, any>\n themeName: string\n semanticHighlighting: boolean\n themeData: monaco.editor.IStandaloneThemeData\n defaultColors: Map<string, any>\n defines(colorId: string): boolean\n getColor(colorId: string, useDefault?: boolean): any\n getColors(): Map<string, any>\n}\n\n/** List of all custom themes from of the library */\nexport const NGE_MONACO_THEMES = [\n 'active4d.json',\n 'all-hallows-eve.json',\n 'amy.json',\n 'birds-of-paradise.json',\n 'blackboard.json',\n 'brilliance-black.json',\n 'brilliance-dull.json',\n 'chrome-devtools.json',\n 'clouds-midnight.json',\n 'clouds.json',\n 'cobalt.json',\n 'dawn.json',\n 'dreamweaver.json',\n 'eiffel.json',\n 'espresso-libre.json',\n 'github.json',\n 'idle-fingers.json',\n 'idle.json',\n 'iplastic.json',\n 'katzenmilch.json',\n 'kuroir-theme.json',\n 'kr-theme.json',\n 'lazy.json',\n 'magicwb-amiga.json',\n 'merbivore-soft.json',\n 'merbivore.json',\n 'monokai-bright.json',\n 'monokai.json',\n 'monoindustrial.json',\n 'night-owl.json',\n 'nord.json',\n 'oceanic-next.json',\n 'one-dark-pro.json',\n 'pastels-on-dark.json',\n 'slush-and-poppies.json',\n 'solarized-dark.json',\n 'solarized-light.json',\n 'space-cadet.json',\n 'sunburst.json',\n 'textmate.json',\n 'tomorrow-night-blue.json',\n 'tomorrow-night-bright.json',\n 'tomorrow-night-eighties.json',\n 'tomorrow-night.json',\n 'tomorrow.json',\n 'twilight.json',\n 'upstream-sunburst.json',\n 'vibrant-ink.json',\n 'xcode.json',\n 'zenburnesque.json',\n]\n","import { Injectable } from '@angular/core'\nimport { NgeMonacoLoaderService } from './monaco-loader.service'\nimport { NgeMonacoThemeService } from './monaco-theme.service'\n\n@Injectable({ providedIn: 'root' })\nexport class NgeMonacoColorizerService {\n constructor(\n private readonly loader: NgeMonacoLoaderService,\n private readonly theming: NgeMonacoThemeService\n ) {}\n\n async colorizeElement(options: NgeMonacoColorizeOptions) {\n await this.loader.loadAsync()\n if (options.theme) {\n await this.theming.defineTheme(options.theme)\n }\n\n const { element } = options\n\n element.innerHTML = this.escapeHtml(options.code || '')\n element.style.padding = '4px'\n element.style.display = 'block'\n\n const pre = element.parentElement\n if (pre?.tagName === 'PRE') {\n if (!pre.classList.contains('monaco-editor')) {\n pre.classList.add('monaco-editor')\n }\n if (!pre.classList.contains('monaco-editor-background')) {\n pre.classList.add('monaco-editor-background')\n }\n }\n\n element.className = ''\n\n const languages = monaco.languages.getLanguages()\n const language = languages.find((e) => {\n return e.id === options.language || e.aliases?.find((a) => a === options.language)\n })?.id\n\n await monaco.editor.colorizeElement(element, {\n mimeType: language || 'plaintext',\n theme: options.theme || this.theming.theme?.themeName || 'vs',\n })\n\n this.highlightLines(options)\n this.showLineNumbers(options)\n\n this.addFileTab(options)\n }\n\n private escapeHtml(input: string): string {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const map: any = {\n '<': '<',\n '>': '>',\n }\n return input.replace(/[<>]/g, (tag) => map[tag] || tag)\n }\n\n private highlightLines(options: NgeMonacoColorizeOptions): void {\n if (!options.highlights) {\n return\n }\n\n const { element } = options\n\n const linesToHighlight = this.lineNumbersFromString(options.highlights.toString())\n\n let newLine = true\n let lineNumber = 1\n element.childNodes.forEach((e) => {\n const node = e as HTMLElement\n if (newLine) {\n const div = document.createElement('div')\n div.style.height = '18px'\n if (linesToHighlight.includes(lineNumber)) {\n div.classList.add('rangeHighlight')\n div.classList.add('selected-text')\n }\n element.insertBefore(div, node)\n element.removeChild(node)\n div.appendChild(node)\n newLine = false\n } else if (node.tagName === 'BR') {\n lineNumber++\n newLine = true\n }\n })\n Array.from(element.getElementsByTagName('br')).forEach((node) => node.remove())\n }\n\n private showLineNumbers(options: NgeMonacoColorizeOptions): void {\n if (!options.lines) {\n return\n }\n\n const { element } = options\n const lines = this.lineNumbersFromString(options.lines.toString())\n const length = (options.code || '').split('\\n').length\n if (lines.length === 1) {\n for (let i = lines[0] + 1; i <= length; i++) {\n lines.push(i)\n }\n }\n\n const side = ['<div style=\"padding:0 12px; text-align: right;\">']\n for (let i = 0; i < length; i++) {\n let num = ''\n if (lines.includes(i + 1)) {\n num = '' + (i + 1)\n }\n side.push(`<div class=\"line-numbers\" style=\"height: 18px\">${num}</div>`)\n }\n side.push('</div>')\n\n element.style.display = 'flex'\n element.innerHTML = `\n ${side.join('')}\n <div style=\"flex: 1;\">${element.innerHTML}</div>\n `\n }\n\n private lineNumbersFromString(input: string): number[] {\n const tokens = (input || '').trim().split(' ')\n const lines: number[] = []\n for (const token of tokens) {\n if (token.includes('-')) {\n const range = token.split('-')\n const start = Number.parseInt(range[0], 10)\n const end = Number.parseInt(range[1], 10)\n if (start && end) {\n for (let i = start; i <= end; i++) {\n if (!lines.includes(i)) {\n lines.push(i)\n }\n }\n }\n } else {\n const n = Number.parseInt(token, 10)\n if (n) {\n lines.push(n)\n }\n }\n }\n return lines\n }\n\n private addFileTab(options: NgeMonacoColorizeOptions): void {\n const { element, code, filename } = options\n const container = element.parentElement as HTMLElement\n\n // Force remove padding from pre element\n if (container) {\n container.style.padding = '0'\n container.style.margin = '0'\n container.style.width = '100%'\n }\n\n // Create tab container that takes full width\n const tabContainer = document.createElement('div')\n tabContainer.style.display = 'flex'\n tabContainer.style.justifyContent = 'space-between'\n tabContainer.style.alignItems = 'center'\n tabContainer.style.padding = '8px 16px'\n tabContainer.style.borderBottom = '1px solid var(--vscode-dropdown-border, #e8e8e8)'\n tabContainer.style.backgroundColor = 'var(--vscode-editor-background, #fafafa)'\n tabContainer.style.fontSize = '14px'\n tabContainer.style.width = '100%'\n tabContainer.style.boxSizing = 'border-box'\n tabContainer.style.fontFamily = 'var(--monaco-monospace-font, \"SF Mono\", Monaco, Menlo, Consolas, \"Ubuntu Mono\", monospace)'\n\n // Add filename on left side\n const filenameSpan = document.createElement('span')\n filenameSpan.textContent = filename || ''\n filenameSpan.style.overflow = 'hidden'\n filenameSpan.style.textOverflow = 'ellipsis'\n filenameSpan.style.whiteSpace = 'nowrap'\n filenameSpan.style.fontWeight = '500'\n filenameSpan.style.color = 'var(--vscode-editor-foreground, rgba(0, 0, 0, 0.85))'\n filenameSpan.title = filename || ''\n\n // Add file actions container (right side)\n const fileActions = document.createElement('div')\n fileActions.className = 'file-actions'\n fileActions.style.display = 'flex'\n fileActions.style.gap = '4px'\n\n // Create copy button with icon\n const copyButton = document.createElement('button')\n copyButton.style.border = 'none'\n copyButton.style.background = 'none'\n copyButton.style.cursor = 'pointer'\n copyButton.style.color = 'var(--vscode-editor-foreground, rgba(0, 0, 0, 0.85))'\n copyButton.style.display = 'flex'\n copyButton.style.alignItems = 'center'\n copyButton.style.justifyContent = 'center'\n copyButton.style.width = '32px'\n copyButton.style.height = '32px'\n copyButton.style.padding = '0'\n copyButton.style.borderRadius = '4px'\n copyButton.style.transition = 'all 0.3s'\n copyButton.title = 'Copy code to clipboard'\n\n // Hover effect\n copyButton.addEventListener('mouseover', () => {\n copyButton.style.color = '#1890ff'\n copyButton.style.backgroundColor = 'rgba(0, 0, 0, 0.04)'\n })\n copyButton.addEventListener('mouseout', () => {\n copyButton.style.color = 'var(--vscode-editor-foreground, rgba(0, 0, 0, 0.85))'\n copyButton.style.backgroundColor = 'transparent'\n })\n\n // Copy functionality\n copyButton.addEventListener('click', async (event) => {\n // Prevent default action and event bubbling\n event.preventDefault();\n event.stopPropagation();\n\n try {\n await navigator.clipboard.writeText(code || '');\n\n // Show feedback\n copyButton.innerHTML = `<svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" stroke=\"currentColor\" stroke-width=\"2\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"></path></svg>`;\n copyButton.style.color = '#52c41a';\n\n\n setTimeout(() => {\n // Use requestAnimationFrame to ensure smooth transition\n requestAnimationFrame(() => {\n copyButton.innerHTML = copySvg;\n copyButton.style.color = 'var(--vscode-editor-foreground, rgba(0, 0, 0, 0.85))';\n\n });\n }, 2000);\n } catch (err) {\n console.error('Failed to copy code:', err);\n\n }\n\n // Return false to ensure no further action\n return false;\n })\n\n // Create download button with icon\n const downloadButton = document.createElement('button')\n downloadButton.style.border = 'none'\n downloadButton.style.background = 'none'\n downloadButton.style.cursor = 'pointer'\n downloadButton.style.color = 'var(--vscode-editor-foreground, rgba(0, 0, 0, 0.85))'\n downloadButton.style.display = 'flex'\n downloadButton.style.alignItems = 'center'\n downloadButton.style.justifyContent = 'center'\n downloadButton.style.width = '32px'\n downloadButton.style.height = '32px'\n downloadButton.style.padding = '0'\n downloadButton.style.borderRadius = '4px'\n downloadButton.style.transition = 'all 0.3s'\n downloadButton.title = 'Download code as file'\n\n // Hover effect\n downloadButton.addEventListener('mouseover', () => {\n downloadButton.style.color = '#1890ff'\n downloadButton.style.backgroundColor = 'rgba(0, 0, 0, 0.04)'\n })\n downloadButton.addEventListener('mouseout', () => {\n downloadButton.style.color = 'var(--vscode-editor-foreground, rgba(0, 0, 0, 0.85))'\n downloadButton.style.backgroundColor = 'transparent'\n })\n\n // Download functionality\n downloadButton.addEventListener('click', (event) => {\n // Prevent default action and event bubbling\n event.preventDefault();\n event.stopPropagation();\n\n // Save original content\n const originalInnerHTML = downloadButton.innerHTML;\n\n try {\n const blob = new Blob([code || ''], { type: 'text/plain' });\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename || 'code.txt';\n a.style.display = 'none';\n a.setAttribute('data-no-scroll', 'true'); // Mark as no-scroll\n\n // Execute download\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n\n // Show success feedback similar to copy button\n downloadButton.innerHTML = `<svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" stroke=\"currentColor\" stroke-width=\"2\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"></path></svg>`;\n downloadButton.style.color = '#52c41a';\n\n\n // Reset button after timeout\n setTimeout(() => {\n // Use requestAnimationFrame for smoother transition\n requestAnimationFrame(() => {\n downloadButton.innerHTML = downloadSvg;\n downloadButton.style.color = 'var(--vscode-editor-foreground, rgba(0, 0, 0, 0.85))';\n URL.revokeObjectURL(url); // Clean up URL object\n\n });\n }, 2000);\n } catch (err) {\n console.error('Failed to download code:', err);\n downloadButton.innerHTML = originalInnerHTML;\n }\n\n // Return false to ensure no further action\n return false;\n })\n\n // Copy icon SVG\n const copySvg = `<svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" stroke=\"currentColor\" stroke-width=\"2\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\"></rect><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"></path></svg>`;\n\n // Download icon SVG\n const downloadSvg = `<svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" stroke=\"currentColor\" stroke-width=\"2\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"></path><polyline points=\"7 10 12 15 17 10\"></polyline><line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"></line></svg>`;\n\n copyButton.innerHTML = copySvg;\n downloadButton.innerHTML = downloadSvg;\n\n // Add buttons to actions container\n fileActions.appendChild(copyButton)\n fileActions.appendChild(downloadButton)\n\n // Build the tab\n tabContainer.appendChild(filenameSpan)\n tabContainer.appendChild(fileActions)\n\n // Insert tab before the editor content\n if (container) {\n container.insertBefore(tabContainer, element)\n\n // Add some styling to the container for better appearance\n container.style.border = '1px solid #e8e8e8'\n container.style.borderRadius = '2px'\n container.style.overflow = 'hidden'\n container.style.marginBottom = '16px'\n container.style.padding = '0'\n\n // Add inner padding to code content\n element.style.padding = '16px'\n } else {\n // If no container, wrap the element with one\n const wrapper = document.createElement('div')\n wrapper.style.border = '1px solid #e8e8e8'\n wrapper.style.borderRadius = '2px'\n wrapper.style.overflow = 'hidden'\n wrapper.style.marginBottom = '16px'\n wrapper.style.padding = '0'\n wrapper.style.width = '100%'\n\n const parent = element.parentElement\n if (parent) {\n parent.insertBefore(wrapper, element)\n wrapper.appendChild(tabContainer)\n wrapper.appendChild(element)\n\n // Add inner padding to code content\n element.style.padding = '16px'\n }\n }\n }\n}\n\nexport interface NgeMonacoColorizeOptions {\n /** Element to colorize (<code> element). */\n element: HTMLElement\n\n /** Code to highlight */\n code: string\n\n /** Theme to use for the syntax highlighting */\n theme?: string\n\n /** Target language (default plaintext). */\n language?: string\n\n /**\n * Start line number or a space separated list of line numbers to show.\n *\n * Example:\n *\n * *Show all line numbers starting 1*\n *\n * `\"1\"`\n *\n * *Show all line numbers from 1 to 4*\n *\n * `\"1-4\"`\n *\n * *Show lines 2 4 5 6 7 9*\n *\n * `\"2 4-7 9\"`\n */\n lines?: string | number\n\n /**\n * A space separated list of line numbers to highlight.\n *\n * Example:\n *\n * *Highlight line 1*\n *\n * `\"1\"`\n *\n * *Highlight all lines from 1 to 4*\n *\n * `\"1-4\"`\n *\n * *Highlight lines 2 4 5 6 7 9*\n *\n * `\"2 4-7 9\"`\n */\n highlights?: string | number\n\n\n /**\n * Optional filename to display in the tab header.\n */\n filename?: string\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnChanges,\n OnDestroy,\n ViewChild,\n inject,\n} from '@angular/core'\nimport { NgeMonacoColorizerService } from '../../services/monaco-colorizer.service'\nimport { Subscription } from 'rxjs'\n\n@Component({\n selector: 'nge-monaco-viewer',\n templateUrl: 'monaco-viewer.component.html',\n styleUrls: ['monaco-viewer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgeMonacoViewerComponent implements OnChanges, OnDestroy {\n private readonly colorizer = inject(NgeMonacoColorizerService)\n private readonly changeDetectorRef = inject(ChangeDetectorRef)\n\n private editor?: monaco.editor.IEditor\n private observer?: MutationObserver\n private subscriptions: Subscription[] = []\n\n protected loading = true\n\n @ViewChild('container', { static: true }) container!: ElementRef<HTMLElement>\n @ViewChild('transclusion', { static: true })\n transclusion!: ElementRef<HTMLElement>\n\n /** code to highlight */\n @Input() code?: string\n\n /** show line numbers? */\n @Input() lines?: string | number\n\n /** theme to use for the syntax highlighting */\n @Input() theme?: string\n\n /** target language */\n @Input() language?: string\n\n /** space separated list of line numbers to highlight */\n @Input() highlights?: string | number\n\n /** filename to display in the header tab */\n @Input() filename?: string\n\n\n ngOnChanges(): void {\n const code = this.transclusion.nativeElement.textContent?.trim() || this.code || ''\n this.colorize(code)\n }\n\n ngOnDestroy(): void {\n this.editor?.dispose()\n this.observer?.disconnect()\n this.subscriptions.forEach((s) => s.unsubscribe())\n }\n\n private async colorize(code: string): Promise<void> {\n try {\n await this.colorizer.colorizeElement({\n code: code || '',\n theme: this.theme,\n lines: this.lines,\n language: this.language,\n highlights: this.highlights,\n filename: this.filename,\n element: this.container.nativeElement,\n })\n } finally {\n this.loading = false\n this.changeDetectorRef.markForCheck()\n }\n }\n}\n","<nge-monaco-placeholder *ngIf=\"loading\" />\n\n<pre class=\"monaco-editor monaco-editor-background\">\n <code #container></code>\n</pre>\n\n<div #transclusion style=\"display: none;\">\n <ng-content></ng-content>\n</div>\n\n","// ACTIONS\n/** Toggle High Contrast Theme */\nexport const ACTION_TOGGLE_HIGH_CONTRAST = 'editor.action.toggleHighContrast'\n\n/** Set Selection Anchor */\nexport const ACTION_SET_SELECTION_ANCHOR = 'editor.action.setSelectionAnchor'\n\n/** Move Selected Text Left */\nexport const ACTION_MOVE_CARRET_LEFT = 'editor.action.moveCarretLeftAction'\n\n/** Move Selected Text Right */\nexport const ACTION_MOVE_CARRET_RIGHT = 'editor.action.moveCarretRightAction'\n\n/** Transpose Letters */\nexport const ACTION_TRANSPOSE_LETTERS = 'editor.action.transposeLetters'\n\n/** Copy With Syntax Highlighting */\nexport const ACTION_CLIPBOARD_COPY_WITH_SYNTAX_HIGHLIGHTING = 'editor.action.clipboardCopyWithSyntaxHighlightingAction'\n\n/** Toggle Line Comment */\nexport const ACTION_COMMENT_LINE = 'editor.action.commentLine'\n\n/** Add Line Comment */\nexport const ACTION_ADD_COMMENT_LINE = 'editor.action.addCommentLine'\n\n/** Remove Line Comment */\nexport const ACTION_REMOVE_COMMENT_LINE = 'editor.action.removeCommentLine'\n\n/** Toggle Block Comment */\nexport const ACTION_BLOCK_COMMENT = 'editor.action.blockComment'\n\n/** Show Editor Context Menu */\nexport const ACTION_SHOW_CONTEXT_MENU = 'editor.action.showContextMenu'\n\n/** Cursor Undo */\nexport const ACTION_CURSOR_UNDO = 'cursorUndo'\n\n/** Cursor Redo */\nexport const ACTION_CURSOR_REDO = 'cursorRedo'\n\n/** Editor Font Zoom In */\nexport const ACTION_FONT_ZOOM_IN = 'editor.action.fontZoomIn'\n\n/** Editor Font Zoom Out */\nexport const ACTION_FONT_ZOOM_OUT = 'editor.action.fontZoomOut'\n\n/** Editor Font Zoom Reset */\nexport const ACTION_FONT_ZOOM_RESET = 'editor.action.fontZoomReset'\n\n/** Convert Indentation to Spaces */\nexport const ACTION_INDENTATION_TO_SPACES = 'editor.action.indentationToSpaces'\n\n/** Convert Indentation to Tabs */\nexport const ACTION_INDENTATION_TO_TABS = 'editor.action.indentationToTabs'\n\n/** Indent Using Tabs */\nexport const ACTION_INDENT_USING_TABS = 'editor.action.indentUsingTabs'\n\n/** Indent Using Spaces */\nexport const ACTION_INDENT_USING_SPACES = 'editor.action.indentUsingSpaces'\n\n/** Detect Indentation from Content */\nexport const ACTION_DETECT_INDENTATION = 'editor.action.detectIndentation'\n\n/** Reindent Lines */\nexport const ACTION_REINDENTLINES = 'editor.action.reindentlines'\n\n/** Reindent Selected Lines */\nexport const ACTION_REINDENTSELECTEDLINES = 'editor.action.reindentselectedlines'\n\n/** Copy Line Up */\nexport const ACTION_COPY_LINES_UP = 'editor.action.copyLinesUpAction'\n\n/** Copy Line Down */\nexport const ACTION_COPY_LINES_DOWN = 'editor.action.copyLinesDownAction'\n\n/** Duplicate Selection */\nexport const ACTION_DUPLICATE_SELECTION = 'editor.action.duplicateSelection'\n\n/** Move Line Up */\nexport const ACTION_MOVE_LINES_UP = 'editor.action.moveLinesUpAction'\n\n/** Move Line Down */\nexport const ACTION_MOVE_LINES_DOWN = 'editor.action.moveLinesDownAction'\n\n/** Sort Lines Ascending */\nexport const ACTION_SORT_LINES_ASCENDING = 'editor.action.sortLinesAscending'\n\n/** Sort Lines Descending */\nexport const ACTION_SORT_LINES_DESCENDING = 'editor.action.sortLinesDescending'\n\n/** Trim Trailing Whitespace */\nexport const ACTION_TRIM_TRAILING_WHITESPACE = 'editor.action.trimTrailingWhitespace'\n\n/** Delete Line */\nexport const ACTION_DELETE_LINES = 'editor.action.deleteLines'\n\n/** Indent Line */\nexport const ACTION_INDENT_LINES = 'editor.action.indentLines'\n\n/** Outdent Line */\nexport const ACTION_OUTDENT_LINES = 'editor.action.outdentLines'\n\n/** Insert Line Above */\nexport const ACTION_INSERT_LINE_BEFORE = 'editor.action.insertLineBefore'\n\n/** Insert Line Below */\nexport const ACTION_INSERT_LINE_AFTER = 'editor.action.insertLineAfter'\n\n/** Delete All Left */\nexport const ACTION_DELETE_ALL_LEFT = 'deleteAllLeft'\n\n/** Delete All Right */\nexport const ACTION_DELETE_ALL_RIGHT = 'deleteAllRight'\n\n/** Join Lines */\nexport const ACTION_JOIN_LINES = 'editor.action.joinLines'\n\n/** Transpose characters around the cursor */\nexport const ACTION_TRANSPOSE = 'editor.action.transpose'\n\n/** Transform to Uppercase */\nexport const ACTION_TRANSFORM_TO_UPPERCASE = 'editor.action.transformToUppercase'\n\n/** Transform to Lowercase */\nexport const ACTION_TRANSFORM_TO_LOWERCASE = 'editor.action.transformToLowercase'\n\n/** Transform to Title Case */\nexport const ACTION_TRANSFORM_TO_TITLECASE = 'editor.action.transformToTitlecase'\n\n/** Expand Selection */\nexport const ACTION_SMART_SELECT_EXPAND = 'editor.action.smartSelect.expand'\n\n/** Shrink Selection */\nexport const ACTION_SMART_SELECT_SHRINK = 'editor.action.smartSelect.shrink'\n\n/** Developer: Force Retokenize */\nexport const ACTION_FORCE_RETOKENIZE = 'editor.action.forceRetokenize'\n\n/** Toggle Tab Key Moves Focus */\nexport const ACTION_TOGGLE_TAB_FOCUS_MODE = 'editor.action.toggleTabFocusMode'\n\n/** Command Palette */\nexport const ACTION_QUICK_COMMAND = 'editor.action.quickCommand'\n\n/** Replace with Previous Value */\nexport const ACTION_IN_PLACE_REPLACE_UP = 'editor.action.inPlaceReplace.up'\n\n/** Replace with Next Value */\nexport const ACTION_IN_PLACE_REPLACE_DOWN = 'editor.action.inPlaceReplace.down'\n\n/** Go to Line/Column... */\nexport const ACTION_GOTO_LINE = 'editor.action.gotoLine'\n\n/** Select to Bracket */\nexport const ACTION_SELECT_TO_BRACKET = 'editor.action.selectToBracket'\n\n/** Go to Bracket */\nexport const ACTION_JUMP_TO_BRACKET = 'editor.action.jumpToBracket'\n\n/** Find */\nexport const ACTION_FIND = 'actions.find'\n\n/** Find With Selection */\nexport const ACTION_FIND_WITH_SELECTION = 'actions.findWithSelection'\n\n/** Find Next */\nexport const ACTION_NEXT_MATCH_FIND = 'editor.action.nextMatchFindAction'\n\n/** Find Previous */\nexport const ACTION_PREVIOUS_MATCH_FIND = 'editor.action.previousMatchFindAction'\n\n/** Find Next Selection */\nexport const ACTION_NEXT_SELECTION_MATCH_FIND = 'editor.action.nextSelectionMatchFindAction'\n\n/** Find Previous Selection */\nexport const ACTION_PREVIOUS_SELECTION_MATCH_FIND = 'editor.action.previousSelectionMatchFindAction'\n\n/** Replace */\nexport const ACTION_START_FIND_REPLACE = 'editor.action.startFindReplaceAction'\n\n/** Unfold */\nexport const ACTION_EDITOR_UNFOLD = 'editor.unfold'\n\n/** Unfold Recursively */\nexport const ACTION_EDITOR_UNFOLD_RECURSIVELY = 'editor.unfoldRecursively'\n\n/** Fold */\nexport const ACTION_EDITOR_FOLD = 'editor.fold'\n\n/** Fold Recursively */\nexport const ACTION_EDITOR_FOLD_RECURSIVELY = 'editor.foldRecursively'\n\n/** Fold All */\nexport const ACTION_EDITOR_FOLD_ALL = 'editor.foldAll'\n\n/** Unfold All */\nexport const ACTION_EDITOR_UNFOLD_ALL = 'editor.unfoldAll'\n\n/** Fold All Block Comments */\nexport const ACTION_EDITOR_FOLD_ALL_BLOCK_COMMENTS = 'editor.foldAllBlockComments'\n\n/** Fold All Regions */\nexport const ACTION_EDITOR_FOLD_ALL_MARKER_REGIONS = 'editor.foldAllMarkerRegions'\n\n/** Unfold All Regions */\nexport const ACTION_EDITOR_UNFOLD_ALL_MARKER_REGIONS = 'editor.unfoldAllMarkerRegions'\n\n/** Toggle Fold */\nexport const ACTION_EDITOR_TOGGLE_FOLD = 'editor.toggleFold'\n\n/** Fold Level 1 */\nexport const ACTION_EDITOR_FOLD_LEVEL1 = 'editor.foldLevel1'\n\n/** Fold Level 2 */\nexport const ACTION_EDITOR_FOLD_LEVEL2 = 'editor.foldLevel2'\n\n/** Fold Level 3 */\nexport const ACTION_EDITOR_FOLD_LEVEL3 = 'editor.foldLevel3'\n\n/** Fold Level 4 */\nexport const ACTION_EDITOR_FOLD_LEVEL4 = 'editor.foldLevel4'\n\n/** Fold Level 5 */\nexport const ACTION_EDITOR_FOLD_LEVEL5 = 'editor.foldLevel5'\n\n/** Fold Level 6 */\nexport const ACTION_EDITOR_FOLD_LEVEL6 = 'editor.foldLevel6'\n\n/** Fold Level 7 */\nexport const ACTION_EDITOR_FOLD_LEVEL7 = 'editor.foldLevel7'\n\n/** Open Link */\nexport const ACTION_OPEN_LINK = 'editor.action.openLink'\n\n/** Trigger Symbol Highlight */\nexport const ACTION_WORD_HIGHLIGHT_TRIGGER = 'editor.action.wordHighlight.trigger'\n\n/** Show Accessibility Help */\nexport const ACTION_SHOW_ACCESSIBILITY_HELP = 'editor.action.showAccessibilityHelp'\n\n/** Developer: Inspect Tokens */\nexport const ACTION_INSPECT_TOKENS = 'editor.action.inspectTokens'\n\n/** Go to Next Problem (Error, Warning, Info) */\nexport const ACTION_MARKER_NEXT = 'editor.action.marker.next'\n\n/** Go to Previous Problem (Error, Warning, Info) */\nexport const ACTION_MARKER_PREV = 'editor.action.marker.prev'\n\n/** Go to Next Problem in Files (Error, Warning, Info) */\nexport const ACTION_MARKER_NEXT_IN_FILES = 'editor.action.marker.nextInFiles'\n\n/** Go to Previous Problem in Files (Error, Warning, Info) */\nexport const ACTION_MARKER_PREV_IN_FILES = 'editor.action.marker.prevInFiles'\n\n/** Show Hover */\nexport const ACTION_SHOW_HOVER = 'editor.action.showHover'\n\n/** Show Definition Preview Hover */\nexport const ACTION_SHOW_DEFINITION_PREVIEW_HOVER = 'editor.action.showDefinitionPreviewHover'\n\n/** Add Cursor Above */\nexport const ACTION_INSERT_CURSOR_ABOVE = 'editor.action.insertCursorAbove'\n\n/** Add Cursor Below */\nexport const ACTION_INSERT_CURSOR_BELOW = 'editor.action.insertCursorBelow'\n\n/** Add Cursors to Line Ends */\nexport const ACTION_INSERT_CURSOR_AT_END_OF_EACH_LINE_SELECTED = 'editor.action.insertCursorAtEndOfEachLineSelected'\n\n/** Add Selection To Next Find Match */\nexport const ACTION_ADD_SELECTION_TO_NEXT_FIND_MATCH = 'editor.action.addSelectionToNextFindMatch'\n\n/** Add Selection To Previous Find Match */\nexport const ACTION_ADD_SELECTION_TO_PREVIOUS_FIND_MATCH = 'editor.action.addSelectionToPreviousFindMatch'\n\n/** Move Last Selection To Next Find Match */\nexport const ACTION_MOVE_SELECTION_TO_NEXT_FIND_MATCH = 'editor.action.moveSelectionToNextFindMatch'\n\n/** Move Last Selection To Previous Find Match */\nexport const ACTION_MOVE_SELECTION_TO_PREVIOUS_FIND_MATCH = 'editor.action.moveSelectionToPreviousFindMatch'\n\n/** Select All Occurrences of Find Match */\nexport const ACTION_SELECT_HIGHLIGHTS = 'editor.action.selectHighlights'\n\n/** Add Cursors To Bottom */\nexport const ACTION_ADD_CURSORS_TO_BOTTOM = 'editor.action.addCursorsToBottom'\n\n/** Add Cursors To Top */\nexport const ACTION_ADD_CURSORS_TO_TOP = 'editor.action.addCursorsToTop'\n\n/** Trigger Suggest */\nexport const ACTION_TRIGGER_SUGGEST = 'editor.action.triggerSuggest'\n\n// https://github.com/microsoft/vscode/tree/master/src/vs/editor/contrib\n\nexport const COLOR_DETECTOR_CONTRIB = 'editor.contrib.colorDetector'\nexport const CONTEXT_MENU_CONTRIB = 'editor.contrib.contextmenu'\nexport const CURSOR_UNDO_REDO_CONTROLLER_CONTRIB = 'editor.contrib.cursorUndoRedoController'\nexport const DRAG_AND_DROP_CONTRIB = 'editor.contrib.dragAndDrop'\nexport const AUTO_FORMAT_CONTRIB = 'editor.contrib.autoFormat'\nexport const FORMAT_ON_PAST_CONTRIB = 'editor.contrib.formatOnPaste'\nexport const SMART_SELECT_CONTRIB = 'editor.contrib.smartSelectController'\nexport const IPAD_SHOW_KEYBOARD_CONTRIB = 'editor.contrib.iPadShowKeyboard'\nexport const BRACKET_MATCHING_CONTROLLER_CONTRIB = 'editor.contrib.bracketMatchingController'\nexport const CODE_LENS_CONTRIB = 'css.editor.codeLens'\nexport const FIND_CONTROLLE_CONTRIB = 'editor.contrib.findController'\nexport const FOLDING_CONTRIB = 'editor.contrib.folding'\nexport const IN_PLACE_REPLACE_CONTROLLER_CONTRIB = 'editor.contrib.inPlaceReplaceController'\nexport const LINK_DETECTOR_CONTRIB = 'editor.linkDetector'\nexport const MESSAGE_CONTROLLER_CONTRIB = 'editor.contrib.messageController'\nexport const QUICK_FIX_CONTROLLER_CONTRIB = 'editor.contrib.quickFixController'\nexport const MULTI_CURSOR_CONTROLLER_CONTRIB = 'editor.contrib.multiCursorController'\nexport const SELECTION_HIGHLIGHTER_CONTRIB = 'editor.contrib.selectionHighlighter'\nexport const PARAMETER_HINTS_CONTRIB = 'editor.controller.parameterHints'\nexport const REFERENCE_CONTROLLER_CONTRIB = 'editor.contrib.referenceController'\nexport const RENAME_CONTROLLER_CONTRIB = 'editor.contrib.renameController'\nexport const WORD_HIGHLIGHTER_CONTRIB = 'editor.contrib.wordHighlighter'\nexport const ACCESSIBILIY_HELP_CONTROLLER_CONTRIB = 'editor.contrib.accessibilityHelpController'\nexport const INSPECT_TOKENS_CONTRIB = 'editor.contrib.inspectTokens'\nexport const QUICK_OPEN_CONTROLLER_CONTRIB = 'editor.controller.quickOpenController'\nexport const GOTO_DEFINITION_CONTRIB = 'editor.contrib.gotodefinitionatposition'\nexport const REFERENCES_CONTROLLER_CONTRIB = 'editor.contrib.referencesController'\nexport const MARKER_CONTROLLER_CONTRIB = 'editor.contrib.markerController'\nexport const HOVER_CONTRIB = 'editor.contrib.hover'\nexport const SNIPPET_CONTROLLER_CONTRIB = 'snippetController2'\nexport const SUGGEST_CONTROLLER_CONTRIB = 'editor.contrib.suggestController'\n","import { NgeMonacoContribution } from './monaco-contribution'\n\n/**\n * When a user type a composition key like ^ or \\` the editor\n * enter in composition mode, then after the user type any key the editor leave\n * this composition mode an duplicate the character pressed by the user.\n *\n * This bug occurs only on some browsers like firefox and calling this method will prevent this behavior\n * by removing any extra character added by the editor between 2 calls\n * of `onDidCompositionStart` and `onDidCompositionEnd`\n */\nexport class PreventSymbolDuplication implements NgeMonacoContribution {\n private disposable?: monaco.IDisposable\n\n activate() {\n this.disposable = monaco.editor.onDidCreateEditor((e) => {\n this.preventSymbolDuplicationOnCompositionEnd(e)\n })\n }\n\n deactivate() {\n this.disposable?.dispose()\n }\n\n private preventSymbolDuplicationOnCompositionEnd(editor: monaco.editor.ICodeEditor) {\n const positions: monaco.Position[] = []\n let disposables: monaco.IDisposable[] = []\n disposables.push(\n editor.onDidCompositionStart(() => {\n const position = editor.getPosition()\n if (position) {\n positions.push(position)\n }\n })\n )\n disposables.push(\n editor.onDidCompositionEnd(() => {\n setTimeout(() => {\n if (!positions.length) {\n return\n }\n const before = positions[0]\n const after = editor.getPosition()\n if (!after) {\n return\n }\n\n positions.splice(0, 1)\n const diff = after.column - before.column\n if (diff > 1) {\n // unfocus the editor to leave composition\n // mode because when the user type ` the editor\n // leave the composition mode and begin another one\n ;(document.activeElement as any)?.blur()\n\n // focus the editor to let the user continue to edit the content\n // of the editor\n editor.focus()\n\n const r = new monaco.Range(after.lineNumber, after.column - (diff - 1), after.lineNumber, after.column)\n editor.executeEdits('api', [{ range: r, text: '', forceMoveMarkers: false }])\n }\n })\n })\n )\n disposables.push(\n editor.onDidDispose(() => {\n disposables.forEach((e) => e.dispose())\n disposables = []\n })\n )\n }\n}\n","import { CommonModule } from '@angular/common'\nimport { ModuleWithProviders, NgModule } from '@angular/core'\nimport { NgeMonacoDiffEditorComponent } from './components/monaco-diff-editor/monaco-diff-editor.component'\nimport { NgeMonacoEditorComponent } from './components/monaco-editor/monaco-editor.component'\nimport { NgeMonacoViewerComponent } from './components/monaco-viewer/monaco-viewer.component'\nimport { NGE_MONACO_CONTRIBUTION } from './contributions/monaco-contribution'\nimport { PreventSymbolDuplication } from './contributions/prevent-symbol-duplication'\nimport { NgeMonacoConfig, NGE_MONACO_CONFIG } from './monaco-config'\nimport { NgeMonacoThemeService } from './services/monaco-theme.service'\nimport { NgeMonacoPlaceholderComponent } from './components/monaco-placeholder/monaco-placeholder.component'\n\n@NgModule({\n imports: [CommonModule],\n exports: [NgeMonacoEditorComponent, NgeMonacoDiffEditorComponent, NgeMonacoViewerComponent],\n declarations: [\n NgeMonacoEditorComponent,\n NgeMonacoDiffEditorComponent,\n NgeMonacoViewerComponent,\n NgeMonacoPlaceholderComponent,\n ],\n})\nexport class NgeMonacoModule {\n static forRoot(config: NgeMonacoConfig): ModuleWithProviders<NgeMonacoModule> {\n return {\n ngModule: NgeMonacoModule,\n providers: [\n { provide: NGE_MONACO_CONFIG, useValue: config },\n {\n provide: NGE_MONACO_CONTRIBUTION,\n multi: true,\n useExisting: NgeMonacoThemeService,\n },\n {\n provide: NGE_MONACO_CONTRIBUTION,\n multi: true,\n useClass: PreventSymbolDuplication,\n },\n ],\n }\n }\n}\n","/// <reference types=\"monaco-editor/monaco\" />\n\nexport * from './src/components/monaco-diff-editor/monaco-diff-editor.component'\nexport * from './src/components/monaco-editor/monaco-editor.component'\nexport * from './src/components/monaco-viewer/monaco-viewer.component'\nexport * from './src/contributions/monaco-contribution'\nexport * from './src/monaco-constants'\nexport * from './src/monaco.module'\nexport * from './src/services/monaco-colorizer.service'\nexport * from './src/services/monaco-loader.service'\nexport * from './src/services/monaco-theme.service'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3.NgeMonacoPlaceholderComponent","i1.NgeMonacoLoaderService","i2.NgeMonacoThemeService","i1","i2.NgeMonacoPlaceholderComponent"],"mappings":";;;;;;;;;AA8BA;;AAEG;AACI,MAAM,iBAAiB,GAAG,IAAI,cAAc,CAAkB,mBAAmB,CAAC;;MC1B5E,uBAAuB,GAAG,IAAI,cAAc,CAAwB,yBAAyB;;ACD1G;AACO,MAAM,gBAAgB,GAAG,8DAA6D;AAE7F;AACO,MAAM,qBAAqB,GAAG,oDAAmD;AAExF;AACA,MAAM,MAAM,GAAG,MAAa,CAAA;AAE5B;;AAEG;MAEU,sBAAsB,CAAA;AAMjC,IAAA,WAAA,CAGmB,MAAuB,EAGvB,aAAsC,EACtC,cAAqC,EAAA;QAJrC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAiB;QAGvB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QACtC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAuB;AAZvC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAAiB,CAAA;QAE/C,IAAO,CAAA,OAAA,GAAG,gBAAgB,CAAA;AAYhC,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa,IAAI,EAAE,CAAA;KACzC;AAED,IAAA,MAAM,WAAW,GAAA;AACf,QAAA,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAA;KACrC;AAED;;;;;;;AAOG;AACH,IAAA,YAAY,CAAC,QAAsC,EAAA;AACjD,QAAA,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE;YACxC,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;SACvD;QACD,OAAO,EAAE,CAAC,MAAM,CAAC,MAAuB,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;KAC9D;AAED;;AAEG;IACH,SAAS,GAAA;QACP,QACE,IAAI,CAAC,WAAW;aACf,IAAI,CAAC,WAAW,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;gBAC1C,CAAC,YAAW;;;;;;AAMV,oBAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAK;AAChC,wBAAA,IAAI,QAAQ,CAAC,UAAU,KAAK,UAAU;4BAAE,OAAM;wBAC9C,aAAa,CAAC,QAAQ,CAAC,CAAA;wBAEvB,UAAU,CAAC,YAAW;AACpB,4BAAA,MAAM,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAA;4BAE3C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,gBAAgB,CAAA;4BACtD,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC9B,gCAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;6BAC9D;4BAED,IAAI,CAAC,uBAAuB,EAAE,CAAA;AAE9B,4BAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACnB,gCAAA,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAG,EAAA,IAAI,CAAC,OAAO,CAAA,iBAAA,CAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CACpG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAC3B,CAAA;6BACF;iCAAM;AACL,gCAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;6BACrB;yBACF,EAAE,GAAG,CAAC,CAAA;AACT,qBAAC,CAAC,CAAA;iBACH,GAAG,CAAA;aACL,CAAC,CAAC,EACJ;KACF;AAEO,IAAA,MAAM,CAAC,OAAmC,EAAA;AAChD,QAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YACpB,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,GAAG,SAAS,EAAE;AACxC,SAAA,CAAC,CAAA;QAEF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAA;AACxC,QAAA,IAAI,MAAM,KAAK,IAAI,EAAE;AACnB,YAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AACpB,gBAAA,QAAQ,EAAE;AACR,oBAAA,kBAAkB,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE;AACpC,iBAAA;AACF,aAAA,CAAC,CAAA;SACH;QAED,MAAM,CAAC,OAAO,CAAC,CAAC,uBAAuB,CAAC,EAAE,YAAW;AACnD,YAAA,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAA;AAClC,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACzB,OAAO,CAAC,MAAM,CAAC,CAAA;AACjB,SAAC,CAAC,CAAA;KACH;IAEO,uBAAuB,GAAA;;QAE7B,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YACnC,MAAM,KAAK,GAAG,GAAG,CAAC,eAAe,CAC/B,IAAI,IAAI,CACN;AACE,gBAAA,CAAA;AAC2C,qDAAA,EAAA,IAAI,CAAC,OAAO,CAAA;AAClC,+BAAA,EAAA,IAAI,CAAC,OAAO,CAAA;AAChC,YAAA,CAAA;AACF,aAAA,EACD,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAC5B,CACF,CAAA;YAED,MAAM,CAAC,iBAAiB,GAAG;AACzB,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,GAAG,MAAM;AAC9B,gBAAA,YAAY,EAAE,MAAM,KAAK;AACzB,gBAAA,SAAS,EAAE,IAAI;aAChB,CAAA;SACF;KACF;AAEO,IAAA,MAAM,qBAAqB,GAAA;QACjC,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;KAC/D;AAEO,IAAA,MAAM,uBAAuB,GAAA;AACnC,QAAA,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;AAC3B,YAAA,IAAI,CAAC,CAAC,UAAU,EAAE;AAChB,gBAAA,OAAO,CAAC,CAAC,UAAU,EAAE,CAAA;aACtB;AACD,YAAA,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;SACzB,CAAC,CACH,CAAA;KACF;8GAvIU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAQvB,iBAAiB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAGjB,uBAAuB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAXtB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cADT,MAAM,EAAA,CAAA,CAAA,EAAA;;2FACnB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;0BAQ7B,QAAQ;;0BACR,MAAM;2BAAC,iBAAiB,CAAA;;0BAExB,QAAQ;;0BACR,MAAM;2BAAC,uBAAuB,CAAA;;;MCRtB,4BAA4B,CAAA;IAiBvC,WACmB,CAAA,MAA8B,EAG9B,MAAuB,EAAA;QAHvB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAwB;QAG9B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAiB;AAhB1C,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAAyB,CAAA;QAGjD,IAAU,CAAA,UAAA,GAAG,IAAI,CAAA;QAMT,IAAK,CAAA,KAAA,GAAG,CAAC,CAAA;QACT,IAAM,CAAA,MAAA,GAAG,CAAC,CAAA;KAOd;IAGJ,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KACtB;IAED,eAAe,GAAA;QACb,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,MAAK;YAChC,IAAI,CAAC,YAAY,EAAE,CAAA;AACrB,SAAC,CAAC,CAAA;KACH;IAED,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,OAAM;SACP;QACD,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAA;AAClE,QAAA,IAAI,WAAW,KAAK,IAAI,CAAC,KAAK,IAAI,YAAY,KAAK,IAAI,CAAC,MAAM,EAAE;AAC9D,YAAA,IAAI,CAAC,KAAK,GAAG,WAAW,CAAA;AACxB,YAAA,IAAI,CAAC,MAAM,GAAG,YAAY,CAAA;AAC1B,YAAA,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAA;SACtB;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAA;KACvB;IAEO,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;YACzE,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;AAC9B,YAAA,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;AACxB,SAAA,CAAC,CAAA;QACF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;KAC7B;AAzDU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,qDAoB7B,iBAAiB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AApBhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,yUCtBzC,qEACA,EAAA,MAAA,EAAA,CAAA,kKAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDqBa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBALxC,SAAS;+BACE,wBAAwB,EAAA,QAAA,EAAA,qEAAA,EAAA,MAAA,EAAA,CAAA,kKAAA,CAAA,EAAA,CAAA;;0BAuB/B,QAAQ;;0BACR,MAAM;2BAAC,iBAAiB,CAAA;yCAlB3B,SAAS,EAAA,CAAA;sBADR,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAIxC,KAAK,EAAA,CAAA;sBADJ,MAAM;gBAIP,UAAU,EAAA,CAAA;sBADT,KAAK;gBAIN,OAAO,EAAA,CAAA;sBADN,KAAK;gBAeN,cAAc,EAAA,CAAA;sBADb,YAAY;uBAAC,eAAe,CAAA;;;MEtClB,6BAA6B,CAAA;8GAA7B,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,8DCR1C,IACA,EAAA,MAAA,EAAA,CAAA,4PAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDOa,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBANzC,SAAS;+BACE,wBAAwB,EAAA,eAAA,EAGjB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4PAAA,CAAA,EAAA,CAAA;;;MEkBpC,wBAAwB,CAAA;IAanC,WACmB,CAAA,MAA8B,EAG9B,MAAuB,EAAA;QAHvB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAwB;QAG9B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAiB;QAhBhC,IAAO,CAAA,OAAA,GAAG,IAAI,CAAA;AAId,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAAyB,CAAA;QAClD,IAAU,CAAA,UAAA,GAAG,IAAI,CAAA;QAIlB,IAAK,CAAA,KAAA,GAAG,CAAC,CAAA;QACT,IAAM,CAAA,MAAA,GAAG,CAAC,CAAA;KAOd;IAEJ,eAAe,GAAA;QACb,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,MAAK;YAChC,IAAI,CAAC,YAAY,EAAE,CAAA;AACrB,SAAC,CAAC,CAAA;KACH;IAED,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,OAAM;SACP;QACD,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAA;AAClE,QAAA,IAAI,WAAW,KAAK,IAAI,CAAC,KAAK,IAAI,YAAY,KAAK,IAAI,CAAC,MAAM,EAAE;AAC9D,YAAA,IAAI,CAAC,KAAK,GAAG,WAAW,CAAA;AACxB,YAAA,IAAI,CAAC,MAAM,GAAG,YAAY,CAAA;AAC1B,YAAA,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAA;SACtB;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAA;KACvB;IAGS,cAAc,GAAA;AACtB,QAAA,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KACtB;IAEO,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;YAC/D,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;AAC9B,YAAA,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;AACxB,SAAA,CAAC,CAAA;AACF,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;KAC7B;AAtDU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,qDAgBzB,iBAAiB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAhBhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,oUCxBrC,8GAEA,EAAA,MAAA,EAAA,CAAA,6JAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,6BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDsBa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;+BACE,mBAAmB,EAAA,eAAA,EAGZ,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,8GAAA,EAAA,MAAA,EAAA,CAAA,6JAAA,CAAA,EAAA,CAAA;;0BAiB5C,QAAQ;;0BACR,MAAM;2BAAC,iBAAiB,CAAA;yCAbjB,SAAS,EAAA,CAAA;sBADlB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAG9B,KAAK,EAAA,CAAA;sBAAd,MAAM;gBACE,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAoCI,cAAc,EAAA,CAAA;sBADvB,YAAY;uBAAC,eAAe,CAAA;;;MEzDlB,qBAAqB,CAAA;IAMhC,WAEmB,CAAA,IAAgB,EAIhB,MAAuB,EAAA;QAJvB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;QAIhB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAiB;AAXzB,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAAW,EAAE,CAAC,CAAA;AAC1C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAA6B,SAAS,CAAC,CAAA;KAWrF;AAEJ;;AAEG;AACH,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAA;KAC9B;AAED;;;;;AAKG;AACH,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAA;KACvC;AAED;;AAEG;AACH,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,IAAI,CACpC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;SACtB,CAAA;KACF;AAED,IAAA,MAAM,QAAQ,GAAA;;QAGZ,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QAE1C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AACzC,QAAA,IAAI,CAAC,YAAY,GAAI,MAAc,CAAC,aAAa,CAAA;QACjD,UAAU,CAAC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;QAElC,IAAI,CAAC,cAAc,EAAE,CAAA;AAErB,QAAA,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,CAAA;QAC1D,IAAI,CAAC,MAAM,EAAE,CAAA;KACd;AAED;;;;AAIG;IACH,MAAM,QAAQ,CAAC,SAAiB,EAAA;AAC9B,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;AACjC,QAAA,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;AACjC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC,CAAA;KACzD;AAED;;;;AAIG;IACH,MAAM,QAAQ,CAAC,SAAiB,EAAA;AAC9B,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;QACjC,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;KACrD;AAED;;;;;;;;;AASG;IACH,MAAM,WAAW,CAAC,SAAiB,EAAA;QACjC,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,MAAM,IAAI,cAAc,CAAC,kCAAkC,CAAC,CAAA;SAC7D;AAED,QAAA,MAAM,WAAW,GAAgC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAA;AAC/E,QAAA,IAAI,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;YAC9B,OAAM;SACP;AAED,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,KAAI;YAC/D,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,SAAS,CAAA;AAChD,SAAC,CAAC,CAAA;QACF,IAAI,CAAC,eAAe,EAAE;AACpB,YAAA,MAAM,IAAI,KAAK,CAAC,+BAA+B,SAAS,CAAA,CAAA,CAAG,CAAC,CAAA;SAC7D;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACd,YAAA,MAAM,IAAI,KAAK,CAAC,qFAAqF,CAAC,CAAA;SACvG;AAED,QAAA,IAAI;AACF,YAAA,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,eAAe,CAAC,CAAC,CAAA;AACvE,YAAA,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE;gBACnC,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,MAAM,EAAE,KAAK,CAAC,MAAa;AAC5B,aAAA,CAAC,CAAA;SACH;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,CAAC,KAAK,CAAC,oCAAoC,GAAG,eAAe,EAAE,KAAK,CAAC,CAAA;SAC7E;KACF;IAEO,cAAc,GAAA;QACpB,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,KAAU,KAAI;AACpD,YAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;AAC9B,SAAC,CAAC,CAAA;QACF,MAAM,YAAY,GAAa,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;AAC1G,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAA;KAC9C;AAEO,IAAA,iBAAiB,CAAC,IAAY,EAAA;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAA;QAClC,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,CAAA,CAAA,CAAG,CAAC,CAAA;SAC9D;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;KACjC;IAEO,uBAAuB,GAAA;AAC7B,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAA;AACzC,QAAA,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CACrB,OAAoB,EACpB,OAAwE,EACxE,QAA4D,KAC1D;AACF,YAAA,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;AAC3E,YAAA,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAA;AAC1C,YAAA,MAAM,CAAC,aAAa,GAAG,CAAC,UAA8D,KAAI;AACxF,gBAAA,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;AACtC,gBAAA,IAAI,UAAU,CAAC,KAAK,EAAE;AACpB,oBAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;iBACrD;AACH,aAAC,CAAA;AAED,YAAA,IAAI,OAAO,EAAE,KAAK,EAAE;AAClB,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;aAClD;AACD,YAAA,OAAO,MAAM,CAAA;AACf,SAAC,CAAA;KACF;AA/JU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,8DAWtB,iBAAiB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAXhB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cADR,MAAM,EAAA,CAAA,CAAA,EAAA;;2FACnB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;0BAQ7B,QAAQ;;0BAGR,QAAQ;;0BACR,MAAM;2BAAC,iBAAiB,CAAA;;AAoK7B;AACa,MAAA,iBAAiB,GAAG;IAC/B,eAAe;IACf,sBAAsB;IACtB,UAAU;IACV,wBAAwB;IACxB,iBAAiB;IACjB,uBAAuB;IACvB,sBAAsB;IACtB,sBAAsB;IACtB,sBAAsB;IACtB,aAAa;IACb,aAAa;IACb,WAAW;IACX,kBAAkB;IAClB,aAAa;IACb,qBAAqB;IACrB,aAAa;IACb,mBAAmB;IACnB,WAAW;IACX,eAAe;IACf,kBAAkB;IAClB,mBAAmB;IACnB,eAAe;IACf,WAAW;IACX,oBAAoB;IACpB,qBAAqB;IACrB,gBAAgB;IAChB,qBAAqB;IACrB,cAAc;IACd,qBAAqB;IACrB,gBAAgB;IAChB,WAAW;IACX,mBAAmB;IACnB,mBAAmB;IACnB,sBAAsB;IACtB,wBAAwB;IACxB,qBAAqB;IACrB,sBAAsB;IACtB,kBAAkB;IAClB,eAAe;IACf,eAAe;IACf,0BAA0B;IAC1B,4BAA4B;IAC5B,8BAA8B;IAC9B,qBAAqB;IACrB,eAAe;IACf,eAAe;IACf,wBAAwB;IACxB,kBAAkB;IAClB,YAAY;IACZ,mBAAmB;;;MCtOR,yBAAyB,CAAA;IACpC,WACmB,CAAA,MAA8B,EAC9B,OAA8B,EAAA;QAD9B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAwB;QAC9B,IAAO,CAAA,OAAA,GAAP,OAAO,CAAuB;KAC7C;IAEJ,MAAM,eAAe,CAAC,OAAiC,EAAA;AACrD,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAA;AAC7B,QAAA,IAAI,OAAO,CAAC,KAAK,EAAE;YACjB,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;SAC9C;AAED,QAAA,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;AAE3B,QAAA,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;AACvD,QAAA,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAA;AAC7B,QAAA,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAA;AAE/B,QAAA,MAAM,GAAG,GAAG,OAAO,CAAC,aAAa,CAAA;AACjC,QAAA,IAAI,GAAG,EAAE,OAAO,KAAK,KAAK,EAAE;YAC1B,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;AAC5C,gBAAA,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;aACnC;YACD,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,0BAA0B,CAAC,EAAE;AACvD,gBAAA,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAA;aAC9C;SACF;AAED,QAAA,OAAO,CAAC,SAAS,GAAG,EAAE,CAAA;QAEtB,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAA;QACjD,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAI;YACpC,OAAO,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;SACnF,CAAC,EAAE,EAAE,CAAA;AAEN,QAAA,MAAM,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE;YAC3C,QAAQ,EAAE,QAAQ,IAAI,WAAW;AACjC,YAAA,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,IAAI,IAAI;AAC9D,SAAA,CAAC,CAAA;AAEF,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;AAC5B,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;AAE7B,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;KACzB;AAEO,IAAA,UAAU,CAAC,KAAa,EAAA;;AAE9B,QAAA,MAAM,GAAG,GAAQ;AACf,YAAA,GAAG,EAAE,MAAM;AACX,YAAA,GAAG,EAAE,MAAM;SACZ,CAAA;AACD,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAA;KACxD;AAEO,IAAA,cAAc,CAAC,OAAiC,EAAA;AACtD,QAAA,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YACvB,OAAM;SACP;AAED,QAAA,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;AAE3B,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAA;QAElF,IAAI,OAAO,GAAG,IAAI,CAAA;QAClB,IAAI,UAAU,GAAG,CAAC,CAAA;QAClB,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;YAC/B,MAAM,IAAI,GAAG,CAAgB,CAAA;YAC7B,IAAI,OAAO,EAAE;gBACX,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;AACzC,gBAAA,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAA;AACzB,gBAAA,IAAI,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACzC,oBAAA,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;AACnC,oBAAA,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;iBACnC;AACD,gBAAA,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;AAC/B,gBAAA,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;AACzB,gBAAA,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;gBACrB,OAAO,GAAG,KAAK,CAAA;aAChB;AAAM,iBAAA,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE;AAChC,gBAAA,UAAU,EAAE,CAAA;gBACZ,OAAO,GAAG,IAAI,CAAA;aACf;AACH,SAAC,CAAC,CAAA;QACF,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;KAChF;AAEO,IAAA,eAAe,CAAC,OAAiC,EAAA;AACvD,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;YAClB,OAAM;SACP;AAED,QAAA,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;AAC3B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;AAClE,QAAA,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAA;AACtD,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACtB,YAAA,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,gBAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;aACd;SACF;AAED,QAAA,MAAM,IAAI,GAAG,CAAC,mDAAmD,CAAC,CAAA;AAClE,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/B,IAAI,GAAG,GAAG,EAAE,CAAA;YACZ,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;gBACzB,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;aACnB;AACD,YAAA,IAAI,CAAC,IAAI,CAAC,kDAAkD,GAAG,CAAA,MAAA,CAAQ,CAAC,CAAA;SACzE;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;AAEnB,QAAA,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;QAC9B,OAAO,CAAC,SAAS,GAAG,CAAA;AACV,YAAA,EAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AACS,kCAAA,EAAA,OAAO,CAAC,SAAS,CAAA;SAC5C,CAAA;KACN;AAEO,IAAA,qBAAqB,CAAC,KAAa,EAAA;AACzC,QAAA,MAAM,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC9C,MAAM,KAAK,GAAa,EAAE,CAAA;AAC1B,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC1B,YAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACvB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AAC9B,gBAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AAC3C,gBAAA,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AACzC,gBAAA,IAAI,KAAK,IAAI,GAAG,EAAE;AAChB,oBAAA,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE;wBACjC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AACtB,4BAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;yBACd;qBACF;iBACF;aACF;iBAAM;gBACL,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;gBACpC,IAAI,CAAC,EAAE;AACL,oBAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;iBACd;aACF;SACF;AACD,QAAA,OAAO,KAAK,CAAA;KACb;AAEO,IAAA,UAAU,CAAC,OAAiC,EAAA;QAClD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;AAC3C,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,aAA4B,CAAA;;QAGtD,IAAI,SAAS,EAAE;AACb,YAAA,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAA;AAC7B,YAAA,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAA;AAC5B,YAAA,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAA;SAC/B;;QAGD,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;AAClD,QAAA,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;AACnC,QAAA,YAAY,CAAC,KAAK,CAAC,cAAc,GAAG,eAAe,CAAA;AACnD,QAAA,YAAY,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAA;AACxC,QAAA,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG,UAAU,CAAA;AACvC,QAAA,YAAY,CAAC,KAAK,CAAC,YAAY,GAAG,kDAAkD,CAAA;AACpF,QAAA,YAAY,CAAC,KAAK,CAAC,eAAe,GAAG,0CAA0C,CAAA;AAC/E,QAAA,YAAY,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAA;AACpC,QAAA,YAAY,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAA;AACjC,QAAA,YAAY,CAAC,KAAK,CAAC,SAAS,GAAG,YAAY,CAAA;AAC3C,QAAA,YAAY,CAAC,KAAK,CAAC,UAAU,GAAG,4FAA4F,CAAA;;QAG5H,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;AACnD,QAAA,YAAY,CAAC,WAAW,GAAG,QAAQ,IAAI,EAAE,CAAA;AACzC,QAAA,YAAY,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAA;AACtC,QAAA,YAAY,CAAC,KAAK,CAAC,YAAY,GAAG,UAAU,CAAA;AAC5C,QAAA,YAAY,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAA;AACxC,QAAA,YAAY,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAA;AACrC,QAAA,YAAY,CAAC,KAAK,CAAC,KAAK,GAAG,sDAAsD,CAAA;AACjF,QAAA,YAAY,CAAC,KAAK,GAAG,QAAQ,IAAI,EAAE,CAAA;;QAGnC,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;AACjD,QAAA,WAAW,CAAC,SAAS,GAAG,cAAc,CAAA;AACtC,QAAA,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;AAClC,QAAA,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAA;;QAG7B,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;AACnD,QAAA,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAA;AAChC,QAAA,UAAU,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAA;AACpC,QAAA,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAA;AACnC,QAAA,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,sDAAsD,CAAA;AAC/E,QAAA,UAAU,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;AACjC,QAAA,UAAU,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAA;AACtC,QAAA,UAAU,CAAC,KAAK,CAAC,cAAc,GAAG,QAAQ,CAAA;AAC1C,QAAA,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAA;AAC/B,QAAA,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAA;AAChC,QAAA,UAAU,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAA;AAC9B,QAAA,UAAU,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAA;AACrC,QAAA,UAAU,CAAC,KAAK,CAAC,UAAU,GAAG,UAAU,CAAA;AACxC,QAAA,UAAU,CAAC,KAAK,GAAG,wBAAwB,CAAA;;AAG3C,QAAA,UAAU,CAAC,gBAAgB,CAAC,WAAW,EAAE,MAAK;AAC5C,YAAA,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAA;AAClC,YAAA,UAAU,CAAC,KAAK,CAAC,eAAe,GAAG,qBAAqB,CAAA;AAC1D,SAAC,CAAC,CAAA;AACF,QAAA,UAAU,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAK;AAC3C,YAAA,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,sDAAsD,CAAA;AAC/E,YAAA,UAAU,CAAC,KAAK,CAAC,eAAe,GAAG,aAAa,CAAA;AAClD,SAAC,CAAC,CAAA;;QAGF,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,KAAK,KAAI;;YAEnD,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;AAExB,YAAA,IAAI;gBACF,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;;AAGhD,gBAAA,UAAU,CAAC,SAAS,GAAG,CAAA,2NAAA,CAA6N,CAAC;AACrP,gBAAA,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;gBAGnC,UAAU,CAAC,MAAK;;oBAEd,qBAAqB,CAAC,MAAK;AACzB,wBAAA,UAAU,CAAC,SAAS,GAAG,OAAO,CAAC;AAC/B,wBAAA,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,sDAAsD,CAAC;AAElF,qBAAC,CAAC,CAAC;iBACJ,EAAE,IAAI,CAAC,CAAC;aACV;YAAC,OAAO,GAAG,EAAE;AACZ,gBAAA,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;aAE5C;;AAGD,YAAA,OAAO,KAAK,CAAC;AACf,SAAC,CAAC,CAAA;;QAGF,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;AACvD,QAAA,cAAc,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAA;AACpC,QAAA,cAAc,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAA;AACxC,QAAA,cAAc,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAA;AACvC,QAAA,cAAc,CAAC,KAAK,CAAC,KAAK,GAAG,sDAAsD,CAAA;AACnF,QAAA,cAAc,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;AACrC,QAAA,cAAc,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAA;AAC1C,QAAA,cAAc,CAAC,KAAK,CAAC,cAAc,GAAG,QAAQ,CAAA;AAC9C,QAAA,cAAc,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAA;AACnC,QAAA,cAAc,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAA;AACpC,QAAA,cAAc,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAA;AAClC,QAAA,cAAc,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAA;AACzC,QAAA,cAAc,CAAC,KAAK,CAAC,UAAU,GAAG,UAAU,CAAA;AAC5C,QAAA,cAAc,CAAC,KAAK,GAAG,uBAAuB,CAAA;;AAG9C,QAAA,cAAc,CAAC,gBAAgB,CAAC,WAAW,EAAE,MAAK;AAChD,YAAA,cAAc,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAA;AACtC,YAAA,cAAc,CAAC,KAAK,CAAC,eAAe,GAAG,qBAAqB,CAAA;AAC9D,SAAC,CAAC,CAAA;AACF,QAAA,cAAc,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAK;AAC/C,YAAA,cAAc,CAAC,KAAK,CAAC,KAAK,GAAG,sDAAsD,CAAA;AACnF,YAAA,cAAc,CAAC,KAAK,CAAC,eAAe,GAAG,aAAa,CAAA;AACtD,SAAC,CAAC,CAAA;;QAGF,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK,KAAI;;YAEjD,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;;AAGxB,YAAA,MAAM,iBAAiB,GAAG,cAAc,CAAC,SAAS,CAAC;AAEnD,YAAA,IAAI;AACF,gBAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;gBAC5D,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;gBACtC,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AACtC,gBAAA,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC;AACb,gBAAA,CAAC,CAAC,QAAQ,GAAG,QAAQ,IAAI,UAAU,CAAC;AACpC,gBAAA,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;gBACzB,CAAC,CAAC,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;;AAGzC,gBAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBAC7B,CAAC,CAAC,KAAK,EAAE,CAAC;AACV,gBAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;;AAG7B,gBAAA,cAAc,CAAC,SAAS,GAAG,CAAA,2NAAA,CAA6N,CAAC;AACzP,gBAAA,cAAc,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;;gBAIvC,UAAU,CAAC,MAAK;;oBAEd,qBAAqB,CAAC,MAAK;AACzB,wBAAA,cAAc,CAAC,SAAS,GAAG,WAAW,CAAC;AACvC,wBAAA,cAAc,CAAC,KAAK,CAAC,KAAK,GAAG,sDAAsD,CAAC;AACpF,wBAAA,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;AAE3B,qBAAC,CAAC,CAAC;iBACJ,EAAE,IAAI,CAAC,CAAC;aACV;YAAC,OAAO,GAAG,EAAE;AACZ,gBAAA,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;AAC/C,gBAAA,cAAc,CAAC,SAAS,GAAG,iBAAiB,CAAC;aAC9C;;AAGD,YAAA,OAAO,KAAK,CAAC;AACf,SAAC,CAAC,CAAA;;QAGF,MAAM,OAAO,GAAG,CAAA,+RAAA,CAAiS,CAAC;;QAGlT,MAAM,WAAW,GAAG,CAAA,8SAAA,CAAgT,CAAC;AAErU,QAAA,UAAU,CAAC,SAAS,GAAG,OAAO,CAAC;AAC/B,QAAA,cAAc,CAAC,SAAS,GAAG,WAAW,CAAC;;AAGvC,QAAA,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;AACnC,QAAA,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,CAAA;;AAGvC,QAAA,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;AACtC,QAAA,YAAY,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;;QAGrC,IAAI,SAAS,EAAE;AACb,YAAA,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;;AAG7C,YAAA,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,mBAAmB,CAAA;AAC5C,YAAA,SAAS,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAA;AACpC,YAAA,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAA;AACnC,YAAA,SAAS,CAAC,KAAK,CAAC,YAAY,GAAG,MAAM,CAAA;AACrC,YAAA,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAA;;AAG7B,YAAA,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;SAC/B;aAAM;;YAEL,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;AAC7C,YAAA,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,mBAAmB,CAAA;AAC1C,YAAA,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAA;AAClC,YAAA,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAA;AACjC,YAAA,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,MAAM,CAAA;AACnC,YAAA,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAA;AAC3B,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAA;AAE5B,YAAA,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAA;YACpC,IAAI,MAAM,EAAE;AACV,gBAAA,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;AACrC,gBAAA,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;AACjC,gBAAA,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;;AAG5B,gBAAA,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;aAC/B;SACF;KACF;8GA3WU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,cADZ,MAAM,EAAA,CAAA,CAAA,EAAA;;2FACnB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;MCgBrB,wBAAwB,CAAA;AANrC,IAAA,WAAA,GAAA;AAOmB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAA;AAC7C,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAA;QAItD,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAA;QAEhC,IAAO,CAAA,OAAA,GAAG,IAAI,CAAA;AAoDzB,KAAA;IA3BC,WAAW,GAAA;AACT,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAA;AACnF,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;KACpB;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAA;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;KACnD;IAEO,MAAM,QAAQ,CAAC,IAAY,EAAA;AACjC,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;gBACnC,IAAI,EAAE,IAAI,IAAI,EAAE;gBAChB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,gBAAA,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa;AACtC,aAAA,CAAC,CAAA;SACH;gBAAS;AACR,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;AACpB,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAA;SACtC;KACF;8GA3DU,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,ibCpBrC,qOAUA,EAAA,MAAA,EAAA,CAAA,qGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,6BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDUa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;+BACE,mBAAmB,EAAA,eAAA,EAGZ,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qOAAA,EAAA,MAAA,EAAA,CAAA,qGAAA,CAAA,EAAA,CAAA;8BAYL,SAAS,EAAA,CAAA;sBAAlD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAExC,YAAY,EAAA,CAAA;sBADX,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAIlC,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAGG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAGG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAGG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAGG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAGG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;;AElDR;AACA;AACO,MAAM,2BAA2B,GAAG,mCAAkC;AAE7E;AACO,MAAM,2BAA2B,GAAG,mCAAkC;AAE7E;AACO,MAAM,uBAAuB,GAAG,qCAAoC;AAE3E;AACO,MAAM,wBAAwB,GAAG,sCAAqC;AAE7E;AACO,MAAM,wBAAwB,GAAG,iCAAgC;AAExE;AACO,MAAM,8CAA8C,GAAG,0DAAyD;AAEvH;AACO,MAAM,mBAAmB,GAAG,4BAA2B;AAE9D;AACO,MAAM,uBAAuB,GAAG,+BAA8B;AAErE;AACO,MAAM,0BAA0B,GAAG,kCAAiC;AAE3E;AACO,MAAM,oBAAoB,GAAG,6BAA4B;AAEhE;AACO,MAAM,wBAAwB,GAAG,gCAA+B;AAEvE;AACO,MAAM,kBAAkB,GAAG,aAAY;AAE9C;AACO,MAAM,kBAAkB,GAAG,aAAY;AAE9C;AACO,MAAM,mBAAmB,GAAG,2BAA0B;AAE7D;AACO,MAAM,oBAAoB,GAAG,4BAA2B;AAE/D;AACO,MAAM,sBAAsB,GAAG,8BAA6B;AAEnE;AACO,MAAM,4BAA4B,GAAG,oCAAmC;AAE/E;AACO,MAAM,0BAA0B,GAAG,kCAAiC;AAE3E;AACO,MAAM,wBAAwB,GAAG,gCAA+B;AAEvE;AACO,MAAM,0BAA0B,GAAG,kCAAiC;AAE3E;AACO,MAAM,yBAAyB,GAAG,kCAAiC;AAE1E;AACO,MAAM,oBAAoB,GAAG,8BAA6B;AAEjE;AACO,MAAM,4BAA4B,GAAG,sCAAqC;AAEjF;AACO,MAAM,oBAAoB,GAAG,kCAAiC;AAErE;AACO,MAAM,sBAAsB,GAAG,oCAAmC;AAEzE;AACO,MAAM,0BAA0B,GAAG,mCAAkC;AAE5E;AACO,MAAM,oBAAoB,GAAG,kCAAiC;AAErE;AACO,MAAM,sBAAsB,GAAG,oCAAmC;AAEzE;AACO,MAAM,2BAA2B,GAAG,mCAAkC;AAE7E;AACO,MAAM,4BAA4B,GAAG,oCAAmC;AAE/E;AACO,MAAM,+BAA+B,GAAG,uCAAsC;AAErF;AACO,MAAM,mBAAmB,GAAG,4BAA2B;AAE9D;AACO,MAAM,mBAAmB,GAAG,4BAA2B;AAE9D;AACO,MAAM,oBAAoB,GAAG,6BAA4B;AAEhE;AACO,MAAM,yBAAyB,GAAG,iCAAgC;AAEzE;AACO,MAAM,wBAAwB,GAAG,gCAA+B;AAEvE;AACO,MAAM,sBAAsB,GAAG,gBAAe;AAErD;AACO,MAAM,uBAAuB,GAAG,iBAAgB;AAEvD;AACO,MAAM,iBAAiB,GAAG,0BAAyB;AAE1D;AACO,MAAM,gBAAgB,GAAG,0BAAyB;AAEzD;AACO,MAAM,6BAA6B,GAAG,qCAAoC;AAEjF;AACO,MAAM,6BAA6B,GAAG,qCAAoC;AAEjF;AACO,MAAM,6BAA6B,GAAG,qCAAoC;AAEjF;AACO,MAAM,0BAA0B,GAAG,mCAAkC;AAE5E;AACO,MAAM,0BAA0B,GAAG,mCAAkC;AAE5E;AACO,MAAM,uBAAuB,GAAG,gCAA+B;AAEtE;AACO,MAAM,4BAA4B,GAAG,mCAAkC;AAE9E;AACO,MAAM,oBAAoB,GAAG,6BAA4B;AAEhE;AACO,MAAM,0BAA0B,GAAG,kCAAiC;AAE3E;AACO,MAAM,4BAA4B,GAAG,oCAAmC;AAE/E;AACO,MAAM,gBAAgB,GAAG,yBAAwB;AAExD;AACO,MAAM,wBAAwB,GAAG,gCAA+B;AAEvE;AACO,MAAM,sBAAsB,GAAG,8BAA6B;AAEnE;AACO,MAAM,WAAW,GAAG,eAAc;AAEzC;AACO,MAAM,0BAA0B,GAAG,4BAA2B;AAErE;AACO,MAAM,sBAAsB,GAAG,oCAAmC;AAEzE;AACO,MAAM,0BAA0B,GAAG,wCAAuC;AAEjF;AACO,MAAM,gCAAgC,GAAG,6CAA4C;AAE5F;AACO,MAAM,oCAAoC,GAAG,iDAAgD;AAEpG;AACO,MAAM,yBAAyB,GAAG,uCAAsC;AAE/E;AACO,MAAM,oBAAoB,GAAG,gBAAe;AAEnD;AACO,MAAM,gCAAgC,GAAG,2BAA0B;AAE1E;AACO,MAAM,kBAAkB,GAAG,cAAa;AAE/C;AACO,MAAM,8BAA8B,GAAG,yBAAwB;AAEtE;AACO,MAAM,sBAAsB,GAAG,iBAAgB;AAEtD;AACO,MAAM,wBAAwB,GAAG,mBAAkB;AAE1D;AACO,MAAM,qCAAqC,GAAG,8BAA6B;AAElF;AACO,MAAM,qCAAqC,GAAG,8BAA6B;AAElF;AACO,MAAM,uCAAuC,GAAG,gCAA+B;AAEtF;AACO,MAAM,yBAAyB,GAAG,oBAAmB;AAE5D;AACO,MAAM,yBAAyB,GAAG,oBAAmB;AAE5D;AACO,MAAM,yBAAyB,GAAG,oBAAmB;AAE5D;AACO,MAAM,yBAAyB,GAAG,oBAAmB;AAE5D;AACO,MAAM,yBAAyB,GAAG,oBAAmB;AAE5D;AACO,MAAM,yBAAyB,GAAG,oBAAmB;AAE5D;AACO,MAAM,yBAAyB,GAAG,oBAAmB;AAE5D;AACO,MAAM,yBAAyB,GAAG,oBAAmB;AAE5D;AACO,MAAM,gBAAgB,GAAG,yBAAwB;AAExD;AACO,MAAM,6BAA6B,GAAG,sCAAqC;AAElF;AACO,MAAM,8BAA8B,GAAG,sCAAqC;AAEnF;AACO,MAAM,qBAAqB,GAAG,8BAA6B;AAElE;AACO,MAAM,kBAAkB,GAAG,4BAA2B;AAE7D;AACO,MAAM,kBAAkB,GAAG,4BAA2B;AAE7D;AACO,MAAM,2BAA2B,GAAG,mCAAkC;AAE7E;AACO,MAAM,2BAA2B,GAAG,mCAAkC;AAE7E;AACO,MAAM,iBAAiB,GAAG,0BAAyB;AAE1D;AACO,MAAM,oCAAoC,GAAG,2CAA0C;AAE9F;AACO,MAAM,0BAA0B,GAAG,kCAAiC;AAE3E;AACO,MAAM,0BAA0B,GAAG,kCAAiC;AAE3E;AACO,MAAM,iDAAiD,GAAG,oDAAmD;AAEpH;AACO,MAAM,uCAAuC,GAAG,4CAA2C;AAElG;AACO,MAAM,2CAA2C,GAAG,gDAA+C;AAE1G;AACO,MAAM,wCAAwC,GAAG,6CAA4C;AAEpG;AACO,MAAM,4CAA4C,GAAG,iDAAgD;AAE5G;AACO,MAAM,wBAAwB,GAAG,iCAAgC;AAExE;AACO,MAAM,4BAA4B,GAAG,mCAAkC;AAE9E;AACO,MAAM,yBAAyB,GAAG,gCAA+B;AAExE;AACO,MAAM,sBAAsB,GAAG,+BAA8B;AAEpE;AAEO,MAAM,sBAAsB,GAAG,+BAA8B;AAC7D,MAAM,oBAAoB,GAAG,6BAA4B;AACzD,MAAM,mCAAmC,GAAG,0CAAyC;AACrF,MAAM,qBAAqB,GAAG,6BAA4B;AAC1D,MAAM,mBAAmB,GAAG,4BAA2B;AACvD,MAAM,sBAAsB,GAAG,+BAA8B;AAC7D,MAAM,oBAAoB,GAAG,uCAAsC;AACnE,MAAM,0BAA0B,GAAG,kCAAiC;AACpE,MAAM,mCAAmC,GAAG,2CAA0C;AACtF,MAAM,iBAAiB,GAAG,sBAAqB;AAC/C,MAAM,sBAAsB,GAAG,gCAA+B;AAC9D,MAAM,eAAe,GAAG,yBAAwB;AAChD,MAAM,mCAAmC,GAAG,0CAAyC;AACrF,MAAM,qBAAqB,GAAG,sBAAqB;AACnD,MAAM,0BAA0B,GAAG,mCAAkC;AACrE,MAAM,4BAA4B,GAAG,oCAAmC;AACxE,MAAM,+BAA+B,GAAG,uCAAsC;AAC9E,MAAM,6BAA6B,GAAG,sCAAqC;AAC3E,MAAM,uBAAuB,GAAG,mCAAkC;AAClE,MAAM,4BAA4B,GAAG,qCAAoC;AACzE,MAAM,yBAAyB,GAAG,kCAAiC;AACnE,MAAM,wBAAwB,GAAG,iCAAgC;AACjE,MAAM,oCAAoC,GAAG,6CAA4C;AACzF,MAAM,sBAAsB,GAAG,+BAA8B;AAC7D,MAAM,6BAA6B,GAAG,wCAAuC;AAC7E,MAAM,uBAAuB,GAAG,0CAAyC;AACzE,MAAM,6BAA6B,GAAG,sCAAqC;AAC3E,MAAM,yBAAyB,GAAG,kCAAiC;AACnE,MAAM,aAAa,GAAG,uBAAsB;AAC5C,MAAM,0BAA0B,GAAG,qBAAoB;AACvD,MAAM,0BAA0B,GAAG;;ACrU1C;;;;;;;;AAQG;MACU,wBAAwB,CAAA;IAGnC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAI;AACtD,YAAA,IAAI,CAAC,wCAAwC,CAAC,CAAC,CAAC,CAAA;AAClD,SAAC,CAAC,CAAA;KACH;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAA;KAC3B;AAEO,IAAA,wCAAwC,CAAC,MAAiC,EAAA;QAChF,MAAM,SAAS,GAAsB,EAAE,CAAA;QACvC,IAAI,WAAW,GAAyB,EAAE,CAAA;QAC1C,WAAW,CAAC,IAAI,CACd,MAAM,CAAC,qBAAqB,CAAC,MAAK;AAChC,YAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE,CAAA;YACrC,IAAI,QAAQ,EAAE;AACZ,gBAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;aACzB;SACF,CAAC,CACH,CAAA;QACD,WAAW,CAAC,IAAI,CACd,MAAM,CAAC,mBAAmB,CAAC,MAAK;YAC9B,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;oBACrB,OAAM;iBACP;AACD,gBAAA,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;AAC3B,gBAAA,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,CAAA;gBAClC,IAAI,CAAC,KAAK,EAAE;oBACV,OAAM;iBACP;AAED,gBAAA,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBACtB,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;AACzC,gBAAA,IAAI,IAAI,GAAG,CAAC,EAAE;;;;oBAIZ,CAAC;AAAC,oBAAA,QAAQ,CAAC,aAAqB,EAAE,IAAI,EAAE,CAAA;;;oBAIxC,MAAM,CAAC,KAAK,EAAE,CAAA;AAEd,oBAAA,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;oBACvG,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;iBAC9E;AACH,aAAC,CAAC,CAAA;SACH,CAAC,CACH,CAAA;QACD,WAAW,CAAC,IAAI,CACd,MAAM,CAAC,YAAY,CAAC,MAAK;AACvB,YAAA,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;YACvC,WAAW,GAAG,EAAE,CAAA;SACjB,CAAC,CACH,CAAA;KACF;AACF;;MCnDY,eAAe,CAAA;IAC1B,OAAO,OAAO,CAAC,MAAuB,EAAA;QACpC,OAAO;AACL,YAAA,QAAQ,EAAE,eAAe;AACzB,YAAA,SAAS,EAAE;AACT,gBAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,EAAE;AAChD,gBAAA;AACE,oBAAA,OAAO,EAAE,uBAAuB;AAChC,oBAAA,KAAK,EAAE,IAAI;AACX,oBAAA,WAAW,EAAE,qBAAqB;AACnC,iBAAA;AACD,gBAAA;AACE,oBAAA,OAAO,EAAE,uBAAuB;AAChC,oBAAA,KAAK,EAAE,IAAI;AACX,oBAAA,QAAQ,EAAE,wBAAwB;AACnC,iBAAA;AACF,aAAA;SACF,CAAA;KACF;8GAlBU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,iBANxB,wBAAwB;YACxB,4BAA4B;YAC5B,wBAAwB;AACxB,YAAA,6BAA6B,aANrB,YAAY,CAAA,EAAA,OAAA,EAAA,CACZ,wBAAwB,EAAE,4BAA4B,EAAE,wBAAwB,CAAA,EAAA,CAAA,CAAA,EAAA;AAQ/E,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAThB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FASX,eAAe,EAAA,UAAA,EAAA,CAAA;kBAV3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,OAAO,EAAE,CAAC,wBAAwB,EAAE,4BAA4B,EAAE,wBAAwB,CAAC;AAC3F,oBAAA,YAAY,EAAE;wBACZ,wBAAwB;wBACxB,4BAA4B;wBAC5B,wBAAwB;wBACxB,6BAA6B;AAC9B,qBAAA;AACF,iBAAA,CAAA;;;ACpBD;;ACAA;;AAEG;;;;"}