@acorex/platform 21.0.0-next.1 → 21.0.0-next.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/auth/index.d.ts +6 -1
- package/common/index.d.ts +208 -207
- package/core/index.d.ts +31 -44
- package/fesm2022/acorex-platform-auth.mjs +10 -3
- package/fesm2022/acorex-platform-auth.mjs.map +1 -1
- package/fesm2022/acorex-platform-common.mjs +20 -30
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-core.mjs +100 -93
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-core.mjs","sources":["../tmp-esm2022/core/lib/activity-log/activity-log.service.js","../tmp-esm2022/core/lib/activity-log/activity-log.provider.js","../tmp-esm2022/core/lib/color-palette/color-palette.provider.js","../tmp-esm2022/core/lib/color-palette/color-palette.service.js","../tmp-esm2022/core/lib/color-palette/color-palette.types.js","../tmp-esm2022/core/lib/color-palette/default-palettes.provider.js","../tmp-esm2022/core/lib/utils/object-util.js","../tmp-esm2022/core/lib/context/context-store.service.js","../tmp-esm2022/core/lib/data/data-generator.js","../tmp-esm2022/core/lib/data/value-transformer.js","../tmp-esm2022/core/lib/module-manifest/provider-registry.service.js","../tmp-esm2022/core/lib/data/datasource-definition-provider.service.js","../tmp-esm2022/core/lib/directives/element-data.directive.js","../tmp-esm2022/core/lib/directives/dbl-click.directive.js","../tmp-esm2022/core/lib/directives/grid-layout.directive.js","../tmp-esm2022/core/lib/directives/content-checker.directive.js","../tmp-esm2022/core/lib/directives/fullscreen.directive.js","../tmp-esm2022/core/lib/distributed-events/distributed-event-listener.provider.js","../tmp-esm2022/core/lib/distributed-events/distributed-event-listener.service.js","../tmp-esm2022/core/lib/event-service/event.service.js","../tmp-esm2022/core/lib/expression-evaluator/expression-evaluator-scope-provider.service.js","../tmp-esm2022/core/lib/expression-evaluator/expression-evaluator.service.js","../tmp-esm2022/core/lib/hook/utill.service.js","../tmp-esm2022/core/lib/module-manifest/module-manifest.types.js","../tmp-esm2022/core/lib/module-manifest/module-manifest.provider.js","../tmp-esm2022/core/lib/module-manifest/module-manifest.registry.js","../tmp-esm2022/core/lib/module-manifest/module-manifest.initializer.js","../tmp-esm2022/core/lib/module-manifest/feature-definition.provider.js","../tmp-esm2022/core/lib/module-manifest/provider-interfaces.js","../tmp-esm2022/core/lib/module-manifest/module-access-control.service.js","../tmp-esm2022/core/lib/startup/app-startup.service.js","../tmp-esm2022/core/lib/tags/tag.types.js","../tmp-esm2022/core/lib/tags/tag.provider.js","../tmp-esm2022/core/lib/tags/tag.service.js","../tmp-esm2022/core/lib/types/actions.types.js","../tmp-esm2022/core/lib/types/core.types.js","../tmp-esm2022/core/lib/types/interactive.types.js","../tmp-esm2022/core/lib/types/logo.types.js","../tmp-esm2022/core/lib/types/scope.types.js","../tmp-esm2022/core/lib/types/export.types.js","../tmp-esm2022/core/lib/utils/countdown-timer.js","../tmp-esm2022/core/lib/utils/data-conditioner.js","../tmp-esm2022/core/lib/utils/device.service.js","../tmp-esm2022/core/lib/utils/highlighter.js","../tmp-esm2022/core/lib/utils/string.js","../tmp-esm2022/core/acorex-platform-core.js"],"sourcesContent":["import { inject, Injectable, InjectionToken } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport const AXP_ACTIVITY_LOG_PROVIDER = new InjectionToken('AXP_ACTIVITY_LOGS_PROVIDER');\nexport class AXPActivityLogService {\n constructor() {\n this.providers = inject(AXP_ACTIVITY_LOG_PROVIDER, { optional: true });\n }\n async getHistory(refId, refType, options) {\n return (await Promise.all(this.providers?.map((p) => p.getHistory(refId, refType, options)) ?? [])).flat();\n }\n async getHistoryByIds(refId, refType, ids) {\n return (await Promise.all(this.providers?.map((p) => p.getHistoryByIds(refId, refType, ids)) ?? [])).flat();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPActivityLogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPActivityLogService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPActivityLogService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2NvcmUvc3JjL2xpYi9hY3Rpdml0eS1sb2cvYWN0aXZpdHktbG9nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUluRSxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLGNBQWMsQ0FBMkIsNEJBQTRCLENBQUMsQ0FBQztBQUdwSCxNQUFNLE9BQU8scUJBQXFCO0lBRGxDO1FBRVUsY0FBUyxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0tBVTNFO0lBUkMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFhLEVBQUUsT0FBZSxFQUFFLE9BQXFFO1FBQ3BILE9BQU8sQ0FBQyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFN0csQ0FBQztJQUVELEtBQUssQ0FBQyxlQUFlLENBQUMsS0FBYSxFQUFFLE9BQWUsRUFBRSxHQUFhO1FBQ2pFLE9BQU8sQ0FBQyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDOUcsQ0FBQzsrR0FWVSxxQkFBcUI7bUhBQXJCLHFCQUFxQixjQURSLE1BQU07OzRGQUNuQixxQkFBcUI7a0JBRGpDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQQWN0aXZpdHlMb2dQcm92aWRlciB9IGZyb20gJy4vYWN0aXZpdHktbG9nLnByb3ZpZGVyJztcbmltcG9ydCB7IEFYUEFjdGl2aXR5TG9nIH0gZnJvbSAnLi9hY3Rpdml0eS1sb2cudHlwZXMnO1xuXG5leHBvcnQgY29uc3QgQVhQX0FDVElWSVRZX0xPR19QUk9WSURFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBWFBBY3Rpdml0eUxvZ1Byb3ZpZGVyW10+KCdBWFBfQUNUSVZJVFlfTE9HU19QUk9WSURFUicpO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFYUEFjdGl2aXR5TG9nU2VydmljZSB7XG4gIHByaXZhdGUgcHJvdmlkZXJzID0gaW5qZWN0KEFYUF9BQ1RJVklUWV9MT0dfUFJPVklERVIsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgYXN5bmMgZ2V0SGlzdG9yeShyZWZJZDogc3RyaW5nLCByZWZUeXBlOiBzdHJpbmcsIG9wdGlvbnM/OiB7IGZyb20/OiBEYXRlOyB0bz86IERhdGU7IGxpbWl0PzogbnVtYmVyOyBvZmZzZXQ/OiBudW1iZXIgfSk6IFByb21pc2U8QVhQQWN0aXZpdHlMb2dbXT4ge1xuICAgIHJldHVybiAoYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5wcm92aWRlcnM/Lm1hcCgocCkgPT4gcC5nZXRIaXN0b3J5KHJlZklkLCByZWZUeXBlLCBvcHRpb25zKSkgPz8gW10pKS5mbGF0KCk7XG5cbiAgfVxuXG4gIGFzeW5jIGdldEhpc3RvcnlCeUlkcyhyZWZJZDogc3RyaW5nLCByZWZUeXBlOiBzdHJpbmcsIGlkczogc3RyaW5nW10pOiBQcm9taXNlPEFYUEFjdGl2aXR5TG9nW10+IHtcbiAgICByZXR1cm4gKGF3YWl0IFByb21pc2UuYWxsKHRoaXMucHJvdmlkZXJzPy5tYXAoKHApID0+IHAuZ2V0SGlzdG9yeUJ5SWRzKHJlZklkLCByZWZUeXBlLCBpZHMpKSA/PyBbXSkpLmZsYXQoKTtcbiAgfVxufSJdfQ==","export class AXPActivityLogProvider {\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktbG9nLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9jb3JlL3NyYy9saWIvYWN0aXZpdHktbG9nL2FjdGl2aXR5LWxvZy5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQWdCLHNCQUFzQjtDQUczQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUEFjdGl2aXR5TG9nIH0gZnJvbSAnLi9hY3Rpdml0eS1sb2cudHlwZXMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhQQWN0aXZpdHlMb2dQcm92aWRlciB7XG4gIGFic3RyYWN0IGdldEhpc3RvcnkocmVmSWQ6IHN0cmluZywgcmVmVHlwZTogc3RyaW5nLCBvcHRpb25zPzogeyBmcm9tPzogRGF0ZTsgdG8/OiBEYXRlOyBsaW1pdD86IG51bWJlcjsgb2Zmc2V0PzogbnVtYmVyIH0pOiBQcm9taXNlPEFYUEFjdGl2aXR5TG9nW10+O1xuICBhYnN0cmFjdCBnZXRIaXN0b3J5QnlJZHMocmVmSWQ6IHN0cmluZywgcmVmVHlwZTogc3RyaW5nLCBpZHM6IHN0cmluZ1tdKTogUHJvbWlzZTxBWFBBY3Rpdml0eUxvZ1tdPjtcbn0iXX0=","import { InjectionToken } from '@angular/core';\n//#region ---- Color Palette Provider ----\n/**\n * Abstract class for color palette providers\n * Implement this to provide palettes from different sources (system, app, module, etc.)\n */\nexport class AXPColorPaletteProvider {\n}\n/**\n * Injection token for color palette providers\n * Use this to register multiple palette providers\n */\nexport const AXP_COLOR_PALETTE_PROVIDER = new InjectionToken('AXP_COLOR_PALETTE_PROVIDER');\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGFsZXR0ZS5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL2NvbG9yLXBhbGV0dGUvY29sb3ItcGFsZXR0ZS5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9DLDhDQUE4QztBQUU5Qzs7O0dBR0c7QUFDSCxNQUFNLE9BQWdCLHVCQUF1QjtDQVc1QztBQUVEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLElBQUksY0FBYyxDQUN4RCw0QkFBNEIsQ0FDL0IsQ0FBQztBQUVGLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQQ29sb3JQYWxldHRlIH0gZnJvbSAnLi9jb2xvci1wYWxldHRlLnR5cGVzJztcblxuLy8jcmVnaW9uIC0tLS0gICBDb2xvciBQYWxldHRlIFByb3ZpZGVyICAgLS0tLVxuXG4vKipcbiAqIEFic3RyYWN0IGNsYXNzIGZvciBjb2xvciBwYWxldHRlIHByb3ZpZGVyc1xuICogSW1wbGVtZW50IHRoaXMgdG8gcHJvdmlkZSBwYWxldHRlcyBmcm9tIGRpZmZlcmVudCBzb3VyY2VzIChzeXN0ZW0sIGFwcCwgbW9kdWxlLCBldGMuKVxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhQQ29sb3JQYWxldHRlUHJvdmlkZXIge1xuICAgIC8qKlxuICAgICAqIFVuaXF1ZSBuYW1lIGZvciB0aGlzIHByb3ZpZGVyIChlLmcuLCAnc3lzdGVtJywgJ2FwcCcsICdtb2R1bGUnKVxuICAgICAqL1xuICAgIGFic3RyYWN0IG5hbWU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGUgY29sb3IgcGFsZXR0ZXMgZnJvbSB0aGlzIHNvdXJjZVxuICAgICAqIEByZXR1cm5zIFByb21pc2Ugb2YgcGFsZXR0ZXNcbiAgICAgKi9cbiAgICBhYnN0cmFjdCBwcm92aWRlKCk6IFByb21pc2U8QVhQQ29sb3JQYWxldHRlW10+O1xufVxuXG4vKipcbiAqIEluamVjdGlvbiB0b2tlbiBmb3IgY29sb3IgcGFsZXR0ZSBwcm92aWRlcnNcbiAqIFVzZSB0aGlzIHRvIHJlZ2lzdGVyIG11bHRpcGxlIHBhbGV0dGUgcHJvdmlkZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBBWFBfQ09MT1JfUEFMRVRURV9QUk9WSURFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBWFBDb2xvclBhbGV0dGVQcm92aWRlcltdPihcbiAgICAnQVhQX0NPTE9SX1BBTEVUVEVfUFJPVklERVInLFxuKTtcblxuLy8jZW5kcmVnaW9uXG5cbiJdfQ==","import { inject, Injectable } from '@angular/core';\nimport { AXP_COLOR_PALETTE_PROVIDER } from './color-palette.provider';\nimport * as i0 from \"@angular/core\";\n//#region ---- Color Palette Service ----\n/**\n * Service for managing color palettes from multiple providers\n * Aggregates palettes from all registered providers\n */\nexport class AXPColorPaletteService {\n constructor() {\n //#region ---- Dependencies ----\n this.providers = inject(AXP_COLOR_PALETTE_PROVIDER, { optional: true }) ?? [];\n //#endregion\n //#region ---- State ----\n this.cache = null;\n }\n //#endregion\n //#region ---- Public API ----\n /**\n * Get all palettes from all providers\n * @param options Filter options\n * @returns Promise of palettes\n */\n async getPalettes(options) {\n if (!this.cache) {\n await this.loadPalettes();\n }\n let palettes = this.cache;\n // Apply category filter\n if (options?.category) {\n palettes = palettes.filter((palette) => palette.category === options.category);\n }\n // Apply search filter\n if (options?.search) {\n const searchLower = options.search.toLowerCase();\n palettes = palettes.filter((palette) => palette.name.toLowerCase().includes(searchLower) ||\n palette.title.toLowerCase().includes(searchLower) ||\n palette.description?.toLowerCase().includes(searchLower));\n }\n return palettes;\n }\n /**\n * Get a palette by name\n * @param name The unique name of the palette\n * @returns Promise of palette or undefined if not found\n */\n async getPalette(name) {\n if (!this.cache) {\n await this.loadPalettes();\n }\n return this.cache.find((p) => p.name === name);\n }\n /**\n * Get palettes by category\n * @param category The category to filter by\n * @returns Promise of palettes in the specified category\n */\n async getByCategory(category) {\n return this.getPalettes({ category });\n }\n /**\n * Check if a palette exists\n * @param name The unique name of the palette\n * @returns Promise of true if the palette exists\n */\n async has(name) {\n const palette = await this.getPalette(name);\n return palette !== undefined;\n }\n /**\n * Reload palettes from all providers\n */\n async reload() {\n this.cache = null;\n await this.loadPalettes();\n }\n /**\n * Get the default palette (material-design) or fallback colors\n * @returns Promise of default palette, never returns undefined\n */\n async getDefaultPalette() {\n const defaultPalette = await this.getPalette('material-design');\n if (defaultPalette) {\n return defaultPalette;\n }\n // Fallback to hardcoded material design colors if provider fails\n return {\n name: 'material-design',\n title: 'Material Design',\n category: 'material',\n description: 'Google Material Design color palette',\n colors: [\n '#F44336', // Red\n '#E91E63', // Pink\n '#9C27B0', // Purple\n '#673AB7', // Deep Purple\n '#3F51B5', // Indigo\n '#2196F3', // Blue\n '#03A9F4', // Light Blue\n '#00BCD4', // Cyan\n '#009688', // Teal\n '#4CAF50', // Green\n '#8BC34A', // Light Green\n '#CDDC39', // Lime\n '#FFEB3B', // Yellow\n '#FFC107', // Amber\n '#FF9800', // Orange\n '#FF5722', // Deep Orange\n ],\n };\n }\n //#endregion\n //#region ---- Private Methods ----\n /**\n * Load palettes from all providers\n */\n async loadPalettes() {\n const allPalettes = [];\n for (const provider of this.providers) {\n try {\n const palettes = await provider.provide();\n allPalettes.push(...palettes);\n }\n catch (error) {\n console.error(`Error loading palettes from provider ${provider.name}:`, error);\n }\n }\n // Remove duplicates based on name\n const uniquePalettes = allPalettes.filter((palette, index, self) => index === self.findIndex((p) => p.name === palette.name));\n this.cache = uniquePalettes;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPColorPaletteService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPColorPaletteService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPColorPaletteService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGFsZXR0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9jb3JlL3NyYy9saWIvY29sb3ItcGFsZXR0ZS9jb2xvci1wYWxldHRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLDBCQUEwQixFQUEyQixNQUFNLDBCQUEwQixDQUFDOztBQUcvRiw2Q0FBNkM7QUFFN0M7OztHQUdHO0FBSUgsTUFBTSxPQUFPLHNCQUFzQjtJQUhuQztRQUlJLG9DQUFvQztRQUU1QixjQUFTLEdBQThCLE1BQU0sQ0FBQywwQkFBMEIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUU1RyxZQUFZO1FBRVosNkJBQTZCO1FBRXJCLFVBQUssR0FBNkIsSUFBSSxDQUFDO0tBOElsRDtJQTVJRyxZQUFZO0lBRVosa0NBQWtDO0lBRWxDOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQXNDO1FBQ3BELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZCxNQUFNLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM5QixDQUFDO1FBRUQsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQU0sQ0FBQztRQUUzQix3QkFBd0I7UUFDeEIsSUFBSSxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUM7WUFDcEIsUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEtBQUssT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25GLENBQUM7UUFFRCxzQkFBc0I7UUFDdEIsSUFBSSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7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QUFRLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQzFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQztZQUNsQyxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDYixPQUFPLENBQUMsS0FBSyxDQUFDLHdDQUF3QyxRQUFRLENBQUMsSUFBSSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbkYsQ0FBQztRQUNMLENBQUM7UUFFRCxrQ0FBa0M7UUFDbEMsTUFBTSxjQUFjLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FDckMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxDQUNyRixDQUFDO1FBRUYsSUFBSSxDQUFDLEtBQUssR0FBRyxjQUFjLENBQUM7SUFDaEMsQ0FBQzsrR0FwSlEsc0JBQXNCO21IQUF0QixzQkFBc0IsY0FGbkIsTUFBTTs7NEZBRVQsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQX0NPTE9SX1BBTEVUVEVfUFJPVklERVIsIEFYUENvbG9yUGFsZXR0ZVByb3ZpZGVyIH0gZnJvbSAnLi9jb2xvci1wYWxldHRlLnByb3ZpZGVyJztcbmltcG9ydCB7IEFYUENvbG9yUGFsZXR0ZSwgQVhQQ29sb3JQYWxldHRlRmlsdGVyT3B0aW9ucyB9IGZyb20gJy4vY29sb3ItcGFsZXR0ZS50eXBlcyc7XG5cbi8vI3JlZ2lvbiAtLS0tICAgQ29sb3IgUGFsZXR0ZSBTZXJ2aWNlICAgLS0tLVxuXG4vKipcbiAqIFNlcnZpY2UgZm9yIG1hbmFnaW5nIGNvbG9yIHBhbGV0dGVzIGZyb20gbXVsdGlwbGUgcHJvdmlkZXJzXG4gKiBBZ2dyZWdhdGVzIHBhbGV0dGVzIGZyb20gYWxsIHJlZ2lzdGVyZWQgcHJvdmlkZXJzXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFYUENvbG9yUGFsZXR0ZVNlcnZpY2Uge1xuICAgIC8vI3JlZ2lvbiAtLS0tICAgRGVwZW5kZW5jaWVzICAgLS0tLVxuXG4gICAgcHJpdmF0ZSBwcm92aWRlcnM6IEFYUENvbG9yUGFsZXR0ZVByb3ZpZGVyW10gPSBpbmplY3QoQVhQX0NPTE9SX1BBTEVUVEVfUFJPVklERVIsIHsgb3B0aW9uYWw6IHRydWUgfSkgPz8gW107XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgU3RhdGUgICAtLS0tXG5cbiAgICBwcml2YXRlIGNhY2hlOiBBWFBDb2xvclBhbGV0dGVbXSB8IG51bGwgPSBudWxsO1xuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIFB1YmxpYyBBUEkgICAtLS0tXG5cbiAgICAvKipcbiAgICAgKiBHZXQgYWxsIHBhbGV0dGVzIGZyb20gYWxsIHByb3ZpZGVyc1xuICAgICAqIEBwYXJhbSBvcHRpb25zIEZpbHRlciBvcHRpb25zXG4gICAgICogQHJldHVybnMgUHJvbWlzZSBvZiBwYWxldHRlc1xuICAgICAqL1xuICAgIGFzeW5jIGdldFBhbGV0dGVzKG9wdGlvbnM/OiBBWFBDb2xvclBhbGV0dGVGaWx0ZXJPcHRpb25zKTogUHJvbWlzZTxBWFBDb2xvclBhbGV0dGVbXT4ge1xuICAgICAgICBpZiAoIXRoaXMuY2FjaGUpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMubG9hZFBhbGV0dGVzKCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcGFsZXR0ZXMgPSB0aGlzLmNhY2hlITtcblxuICAgICAgICAvLyBBcHBseSBjYXRlZ29yeSBmaWx0ZXJcbiAgICAgICAgaWYgKG9wdGlvbnM/LmNhdGVnb3J5KSB7XG4gICAgICAgICAgICBwYWxldHRlcyA9IHBhbGV0dGVzLmZpbHRlcigocGFsZXR0ZSkgPT4gcGFsZXR0ZS5jYXRlZ29yeSA9PT0gb3B0aW9ucy5jYXRlZ29yeSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBcHBseSBzZWFyY2ggZmlsdGVyXG4gICAgICAgIGlmIChvcHRpb25zPy5zZWFyY2gpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlYXJjaExvd2VyID0gb3B0aW9ucy5zZWFyY2gudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIHBhbGV0dGVzID0gcGFsZXR0ZXMuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChwYWxldHRlKSA9PlxuICAgICAgICAgICAgICAgICAgICBwYWxldHRlLm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hMb3dlcikgfHxcbiAgICAgICAgICAgICAgICAgICAgcGFsZXR0ZS50aXRsZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaExvd2VyKSB8fFxuICAgICAgICAgICAgICAgICAgICBwYWxldHRlLmRlc2NyaXB0aW9uPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaExvd2VyKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcGFsZXR0ZXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGEgcGFsZXR0ZSBieSBuYW1lXG4gICAgICogQHBhcmFtIG5hbWUgVGhlIHVuaXF1ZSBuYW1lIG9mIHRoZSBwYWxldHRlXG4gICAgICogQHJldHVybnMgUHJvbWlzZSBvZiBwYWxldHRlIG9yIHVuZGVmaW5lZCBpZiBub3QgZm91bmRcbiAgICAgKi9cbiAgICBhc3luYyBnZXRQYWxldHRlKG5hbWU6IHN0cmluZyk6IFByb21pc2U8QVhQQ29sb3JQYWxldHRlIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmICghdGhpcy5jYWNoZSkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5sb2FkUGFsZXR0ZXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmNhY2hlIS5maW5kKChwKSA9PiBwLm5hbWUgPT09IG5hbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBwYWxldHRlcyBieSBjYXRlZ29yeVxuICAgICAqIEBwYXJhbSBjYXRlZ29yeSBUaGUgY2F0ZWdvcnkgdG8gZmlsdGVyIGJ5XG4gICAgICogQHJldHVybnMgUHJvbWlzZSBvZiBwYWxldHRlcyBpbiB0aGUgc3BlY2lmaWVkIGNhdGVnb3J5XG4gICAgICovXG4gICAgYXN5bmMgZ2V0QnlDYXRlZ29yeShjYXRlZ29yeTogc3RyaW5nKTogUHJvbWlzZTxBWFBDb2xvclBhbGV0dGVbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRQYWxldHRlcyh7IGNhdGVnb3J5IH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIGEgcGFsZXR0ZSBleGlzdHNcbiAgICAgKiBAcGFyYW0gbmFtZSBUaGUgdW5pcXVlIG5hbWUgb2YgdGhlIHBhbGV0dGVcbiAgICAgKiBAcmV0dXJucyBQcm9taXNlIG9mIHRydWUgaWYgdGhlIHBhbGV0dGUgZXhpc3RzXG4gICAgICovXG4gICAgYXN5bmMgaGFzKG5hbWU6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBjb25zdCBwYWxldHRlID0gYXdhaXQgdGhpcy5nZXRQYWxldHRlKG5hbWUpO1xuICAgICAgICByZXR1cm4gcGFsZXR0ZSAhPT0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbG9hZCBwYWxldHRlcyBmcm9tIGFsbCBwcm92aWRlcnNcbiAgICAgKi9cbiAgICBhc3luYyByZWxvYWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuY2FjaGUgPSBudWxsO1xuICAgICAgICBhd2FpdCB0aGlzLmxvYWRQYWxldHRlcygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgZGVmYXVsdCBwYWxldHRlIChtYXRlcmlhbC1kZXNpZ24pIG9yIGZhbGxiYWNrIGNvbG9yc1xuICAgICAqIEByZXR1cm5zIFByb21pc2Ugb2YgZGVmYXVsdCBwYWxldHRlLCBuZXZlciByZXR1cm5zIHVuZGVmaW5lZFxuICAgICAqL1xuICAgIGFzeW5jIGdldERlZmF1bHRQYWxldHRlKCk6IFByb21pc2U8QVhQQ29sb3JQYWxldHRlPiB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRQYWxldHRlID0gYXdhaXQgdGhpcy5nZXRQYWxldHRlKCdtYXRlcmlhbC1kZXNpZ24nKTtcbiAgICAgICAgaWYgKGRlZmF1bHRQYWxldHRlKSB7XG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdFBhbGV0dGU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGYWxsYmFjayB0byBoYXJkY29kZWQgbWF0ZXJpYWwgZGVzaWduIGNvbG9ycyBpZiBwcm92aWRlciBmYWlsc1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmFtZTogJ21hdGVyaWFsLWRlc2lnbicsXG4gICAgICAgICAgICB0aXRsZTogJ01hdGVyaWFsIERlc2lnbicsXG4gICAgICAgICAgICBjYXRlZ29yeTogJ21hdGVyaWFsJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnR29vZ2xlIE1hdGVyaWFsIERlc2lnbiBjb2xvciBwYWxldHRlJyxcbiAgICAgICAgICAgIGNvbG9yczogW1xuICAgICAgICAgICAgICAgICcjRjQ0MzM2JywgLy8gUmVkXG4gICAgICAgICAgICAgICAgJyNFOTFFNjMnLCAvLyBQaW5rXG4gICAgICAgICAgICAgICAgJyM5QzI3QjAnLCAvLyBQdXJwbGVcbiAgICAgICAgICAgICAgICAnIzY3M0FCNycsIC8vIERlZXAgUHVycGxlXG4gICAgICAgICAgICAgICAgJyMzRjUxQjUnLCAvLyBJbmRpZ29cbiAgICAgICAgICAgICAgICAnIzIxOTZGMycsIC8vIEJsdWVcbiAgICAgICAgICAgICAgICAnIzAzQTlGNCcsIC8vIExpZ2h0IEJsdWVcbiAgICAgICAgICAgICAgICAnIzAwQkNENCcsIC8vIEN5YW5cbiAgICAgICAgICAgICAgICAnIzAwOTY4OCcsIC8vIFRlYWxcbiAgICAgICAgICAgICAgICAnIzRDQUY1MCcsIC8vIEdyZWVuXG4gICAgICAgICAgICAgICAgJyM4QkMzNEEnLCAvLyBMaWdodCBHcmVlblxuICAgICAgICAgICAgICAgICcjQ0REQzM5JywgLy8gTGltZVxuICAgICAgICAgICAgICAgICcjRkZFQjNCJywgLy8gWWVsbG93XG4gICAgICAgICAgICAgICAgJyNGRkMxMDcnLCAvLyBBbWJlclxuICAgICAgICAgICAgICAgICcjRkY5ODAwJywgLy8gT3JhbmdlXG4gICAgICAgICAgICAgICAgJyNGRjU3MjInLCAvLyBEZWVwIE9yYW5nZVxuICAgICAgICAgICAgXSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgUHJpdmF0ZSBNZXRob2RzICAgLS0tLVxuXG4gICAgLyoqXG4gICAgICogTG9hZCBwYWxldHRlcyBmcm9tIGFsbCBwcm92aWRlcnNcbiAgICAgKi9cbiAgICBwcml2YXRlIGFzeW5jIGxvYWRQYWxldHRlcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgYWxsUGFsZXR0ZXM6IEFYUENvbG9yUGFsZXR0ZVtdID0gW107XG5cbiAgICAgICAgZm9yIChjb25zdCBwcm92aWRlciBvZiB0aGlzLnByb3ZpZGVycykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYWxldHRlcyA9IGF3YWl0IHByb3ZpZGVyLnByb3ZpZGUoKTtcbiAgICAgICAgICAgICAgICBhbGxQYWxldHRlcy5wdXNoKC4uLnBhbGV0dGVzKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgRXJyb3IgbG9hZGluZyBwYWxldHRlcyBmcm9tIHByb3ZpZGVyICR7cHJvdmlkZXIubmFtZX06YCwgZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmVtb3ZlIGR1cGxpY2F0ZXMgYmFzZWQgb24gbmFtZVxuICAgICAgICBjb25zdCB1bmlxdWVQYWxldHRlcyA9IGFsbFBhbGV0dGVzLmZpbHRlcihcbiAgICAgICAgICAgIChwYWxldHRlLCBpbmRleCwgc2VsZikgPT4gaW5kZXggPT09IHNlbGYuZmluZEluZGV4KChwKSA9PiBwLm5hbWUgPT09IHBhbGV0dGUubmFtZSksXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5jYWNoZSA9IHVuaXF1ZVBhbGV0dGVzO1xuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxufVxuXG4vLyNlbmRyZWdpb25cbiJdfQ==","//#region ---- Color Palette Types ----\nexport {};\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGFsZXR0ZS50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL2NvbG9yLXBhbGV0dGUvY29sb3ItcGFsZXR0ZS50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7O0FBNEMzQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBDb2xvciBQYWxldHRlIFR5cGVzICAgLS0tLVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBjb2xvciBwYWxldHRlIHdpdGggYSB1bmlxdWUgaWRlbnRpZmllciBhbmQgY29sbGVjdGlvbiBvZiBjb2xvcnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBDb2xvclBhbGV0dGUge1xuICAgIC8qKlxuICAgICAqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcGFsZXR0ZVxuICAgICAqIEBleGFtcGxlICdtYXRlcmlhbC1kZXNpZ24nLCAnYnJhbmQtY29sb3JzJywgJ3Bhc3RlbC10aGVtZSdcbiAgICAgKi9cbiAgICBuYW1lOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBEaXNwbGF5IHRpdGxlIGZvciB0aGUgcGFsZXR0ZVxuICAgICAqIEBleGFtcGxlICdNYXRlcmlhbCBEZXNpZ24nLCAnQnJhbmQgQ29sb3JzJywgJ1Bhc3RlbCBUaGVtZSdcbiAgICAgKi9cbiAgICB0aXRsZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQXJyYXkgb2YgY29sb3IgY29kZXMgaW4gYW55IHZhbGlkIENTUyBjb2xvciBmb3JtYXRcbiAgICAgKiBAZXhhbXBsZSBbJyNGRjZCNkInLCAnIzRFQ0RDNCcsICdyZ2IoMjU1LCAxMDcsIDEwNyknXVxuICAgICAqL1xuICAgIGNvbG9yczogc3RyaW5nW107XG5cbiAgICAvKipcbiAgICAgKiBPcHRpb25hbCBkZXNjcmlwdGlvbiBvZiB0aGUgcGFsZXR0ZVxuICAgICAqL1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogT3B0aW9uYWwgY2F0ZWdvcnkgZm9yIGdyb3VwaW5nIHBhbGV0dGVzXG4gICAgICogQGV4YW1wbGUgJ2JyYW5kJywgJ21hdGVyaWFsJywgJ3RoZW1lJywgJ2N1c3RvbSdcbiAgICAgKi9cbiAgICBjYXRlZ29yeT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBmaWx0ZXJpbmcgY29sb3IgcGFsZXR0ZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBDb2xvclBhbGV0dGVGaWx0ZXJPcHRpb25zIHtcbiAgICBjYXRlZ29yeT86IHN0cmluZztcbiAgICBzZWFyY2g/OiBzdHJpbmc7XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4iXX0=","import { Injectable } from '@angular/core';\nimport { AXPColorPaletteProvider } from './color-palette.provider';\nimport * as i0 from \"@angular/core\";\n//#region ---- Default System Palettes Provider ----\n/**\n * Default system color palette provider\n * Provides built-in color palettes\n */\nexport class AXPDefaultColorPalettesProvider extends AXPColorPaletteProvider {\n constructor() {\n super(...arguments);\n this.name = 'system';\n }\n async provide() {\n return [\n {\n name: 'material-design',\n title: 'Material Design',\n category: 'material',\n description: 'Google Material Design color palette',\n colors: [\n '#F44336', // Red\n '#E91E63', // Pink\n '#9C27B0', // Purple\n '#673AB7', // Deep Purple\n '#3F51B5', // Indigo\n '#2196F3', // Blue\n '#03A9F4', // Light Blue\n '#00BCD4', // Cyan\n '#009688', // Teal\n '#4CAF50', // Green\n '#8BC34A', // Light Green\n '#CDDC39', // Lime\n '#FFEB3B', // Yellow\n '#FFC107', // Amber\n '#FF9800', // Orange\n '#FF5722', // Deep Orange\n ],\n },\n {\n name: 'pastel',\n title: 'Pastel Colors',\n category: 'theme',\n description: 'Soft pastel color palette',\n colors: [\n '#FFB3BA', // Light Pink\n '#FFDFBA', // Light Peach\n '#FFFFBA', // Light Yellow\n '#BAFFC9', // Light Green\n '#BAE1FF', // Light Blue\n '#E0BBE4', // Light Purple\n '#FFDFD3', // Light Coral\n '#D4F1F4', // Light Cyan\n ],\n },\n {\n name: 'vibrant',\n title: 'Vibrant Colors',\n category: 'theme',\n description: 'Bold and vibrant color palette',\n colors: [\n '#FF6B6B', // Vibrant Red\n '#4ECDC4', // Vibrant Teal\n '#45B7D1', // Vibrant Blue\n '#FFA07A', // Vibrant Salmon\n '#98D8C8', // Vibrant Mint\n '#F7DC6F', // Vibrant Yellow\n '#BB8FCE', // Vibrant Purple\n '#85C1E2', // Vibrant Sky Blue\n ],\n },\n {\n name: 'earth-tones',\n title: 'Earth Tones',\n category: 'theme',\n description: 'Natural earth tone color palette',\n colors: [\n '#8B4513', // Saddle Brown\n '#A0522D', // Sienna\n '#D2691E', // Chocolate\n '#CD853F', // Peru\n '#DEB887', // Burlywood\n '#F5DEB3', // Wheat\n '#556B2F', // Dark Olive Green\n '#6B8E23', // Olive Drab\n ],\n },\n {\n name: 'monochrome',\n title: 'Monochrome',\n category: 'theme',\n description: 'Grayscale color palette',\n colors: [\n '#000000', // Black\n '#262626', // Very Dark Gray\n '#404040', // Dark Gray\n '#595959', // Medium Dark Gray\n '#737373', // Medium Gray\n '#8C8C8C', // Light Medium Gray\n '#A6A6A6', // Light Gray\n '#BFBFBF', // Very Light Gray\n '#D9D9D9', // Lighter Gray\n '#F2F2F2', // Almost White\n '#FFFFFF', // White\n ],\n },\n ];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDefaultColorPalettesProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDefaultColorPalettesProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDefaultColorPalettesProvider, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1wYWxldHRlcy5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL2NvbG9yLXBhbGV0dGUvZGVmYXVsdC1wYWxldHRlcy5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQUduRSx3REFBd0Q7QUFFeEQ7OztHQUdHO0FBRUgsTUFBTSxPQUFPLCtCQUFnQyxTQUFRLHVCQUF1QjtJQUQ1RTs7UUFFSSxTQUFJLEdBQUcsUUFBUSxDQUFDO0tBaUduQjtJQS9GRyxLQUFLLENBQUMsT0FBTztRQUNULE9BQU87WUFDSDtnQkFDSSxJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixLQUFLLEVBQUUsaUJBQWlCO2dCQUN4QixRQUFRLEVBQUUsVUFBVTtnQkFDcEIsV0FBVyxFQUFFLHNDQUFzQztnQkFDbkQsTUFBTSxFQUFFO29CQUNKLFNBQVMsRUFBRSxNQUFNO29CQUNqQixTQUFTLEVBQUUsT0FBTztvQkFDbEIsU0FBUyxFQUFFLFNBQVM7b0JBQ3BCLFNBQVMsRUFBRSxjQUFjO29CQUN6QixTQUFTLEVBQUUsU0FBUztvQkFDcEIsU0FBUyxFQUFFLE9BQU87b0JBQ2xCLFNBQVMsRUFBRSxhQUFhO29CQUN4QixTQUFTLEVBQUUsT0FBTztvQkFDbEIsU0FBUyxFQUFFLE9BQU87b0JBQ2xCLFNBQVMsRUFBRSxRQUFRO29CQUNuQixTQUFTLEVBQUUsY0FBYztvQkFDekIsU0FBUyxFQUFFLE9BQU87b0JBQ2xCLFNBQVMsRUFBRSxTQUFTO29CQUNwQixTQUFTLEVBQUUsUUFBUTtvQkFDbkIsU0FBUyxFQUFFLFNBQVM7b0JBQ3BCLFNBQVMsRUFBRSxjQUFjO2lCQUM1QjthQUNKO1lBQ0Q7Z0JBQ0ksSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsS0FBSyxFQUFFLGVBQWU7Z0JBQ3RCLFFBQVEsRUFBRSxPQUFPO2dCQUNqQixXQUFXLEVBQUUsMkJBQTJCO2dCQUN4QyxNQUFNLEVBQUU7b0JBQ0osU0FBUyxFQUFFLGFBQWE7b0JBQ3hCLFNBQVMsRUFBRSxjQUFjO29CQUN6QixTQUFTLEVBQUUsZUFBZTtvQkFDMUIsU0FBUyxFQUFFLGNBQWM7b0JBQ3pCLFNBQVMsRUFBRSxhQUFhO29CQUN4QixTQUFTLEVBQUUsZUFBZTtvQkFDMUIsU0FBUyxFQUFFLGNBQWM7b0JBQ3pCLFNBQVMsRUFBRSxhQUFhO2lCQUMzQjthQUNKO1lBQ0Q7Z0JBQ0ksSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsS0FBSyxFQUFFLGdCQUFnQjtnQkFDdkIsUUFBUSxFQUFFLE9BQU87Z0JBQ2pCLFdBQVcsRUFBRSxnQ0FBZ0M7Z0JBQzdDLE1BQU0sRUFBRTtvQkFDSixTQUFTLEVBQUUsY0FBYztvQkFDekIsU0FBUyxFQUFFLGVBQWU7b0JBQzFCLFNBQVMsRUFBRSxlQUFlO29CQUMxQixTQUFTLEVBQUUsaUJBQWlCO29CQUM1QixTQUFTLEVBQUUsZUFBZTtvQkFDMUIsU0FBUyxFQUFFLGlCQUFpQjtvQkFDNUIsU0FBUyxFQUFFLGlCQUFpQjtvQkFDNUIsU0FBUyxFQUFFLG1CQUFtQjtpQkFDakM7YUFDSjtZQUNEO2dCQUNJLElBQUksRUFBRSxhQUFhO2dCQUNuQixLQUFLLEVBQUUsYUFBYTtnQkFDcEIsUUFBUSxFQUFFLE9BQU87Z0JBQ2pCLFdBQVcsRUFBRSxrQ0FBa0M7Z0JBQy9DLE1BQU0sRUFBRTtvQkFDSixTQUFTLEVBQUUsZUFBZTtvQkFDMUIsU0FBUyxFQUFFLFNBQVM7b0JBQ3BCLFNBQVMsRUFBRSxZQUFZO29CQUN2QixTQUFTLEVBQUUsT0FBTztvQkFDbEIsU0FBUyxFQUFFLFlBQVk7b0JBQ3ZCLFNBQVMsRUFBRSxRQUFRO29CQUNuQixTQUFTLEVBQUUsbUJBQW1CO29CQUM5QixTQUFTLEVBQUUsYUFBYTtpQkFDM0I7YUFDSjtZQUNEO2dCQUNJLElBQUksRUFBRSxZQUFZO2dCQUNsQixLQUFLLEVBQUUsWUFBWTtnQkFDbkIsUUFBUSxFQUFFLE9BQU87Z0JBQ2pCLFdBQVcsRUFBRSx5QkFBeUI7Z0JBQ3RDLE1BQU0sRUFBRTtvQkFDSixTQUFTLEVBQUUsUUFBUTtvQkFDbkIsU0FBUyxFQUFFLGlCQUFpQjtvQkFDNUIsU0FBUyxFQUFFLFlBQVk7b0JBQ3ZCLFNBQVMsRUFBRSxtQkFBbUI7b0JBQzlCLFNBQVMsRUFBRSxjQUFjO29CQUN6QixTQUFTLEVBQUUsb0JBQW9CO29CQUMvQixTQUFTLEVBQUUsYUFBYTtvQkFDeEIsU0FBUyxFQUFFLGtCQUFrQjtvQkFDN0IsU0FBUyxFQUFFLGVBQWU7b0JBQzFCLFNBQVMsRUFBRSxlQUFlO29CQUMxQixTQUFTLEVBQUUsUUFBUTtpQkFDdEI7YUFDSjtTQUNKLENBQUM7SUFDTixDQUFDOytHQWpHUSwrQkFBK0I7bUhBQS9CLCtCQUErQjs7NEZBQS9CLCtCQUErQjtrQkFEM0MsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUENvbG9yUGFsZXR0ZVByb3ZpZGVyIH0gZnJvbSAnLi9jb2xvci1wYWxldHRlLnByb3ZpZGVyJztcbmltcG9ydCB7IEFYUENvbG9yUGFsZXR0ZSB9IGZyb20gJy4vY29sb3ItcGFsZXR0ZS50eXBlcyc7XG5cbi8vI3JlZ2lvbiAtLS0tICAgRGVmYXVsdCBTeXN0ZW0gUGFsZXR0ZXMgUHJvdmlkZXIgICAtLS0tXG5cbi8qKlxuICogRGVmYXVsdCBzeXN0ZW0gY29sb3IgcGFsZXR0ZSBwcm92aWRlclxuICogUHJvdmlkZXMgYnVpbHQtaW4gY29sb3IgcGFsZXR0ZXNcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYUERlZmF1bHRDb2xvclBhbGV0dGVzUHJvdmlkZXIgZXh0ZW5kcyBBWFBDb2xvclBhbGV0dGVQcm92aWRlciB7XG4gICAgbmFtZSA9ICdzeXN0ZW0nO1xuXG4gICAgYXN5bmMgcHJvdmlkZSgpOiBQcm9taXNlPEFYUENvbG9yUGFsZXR0ZVtdPiB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ21hdGVyaWFsLWRlc2lnbicsXG4gICAgICAgICAgICAgICAgdGl0bGU6ICdNYXRlcmlhbCBEZXNpZ24nLFxuICAgICAgICAgICAgICAgIGNhdGVnb3J5OiAnbWF0ZXJpYWwnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnR29vZ2xlIE1hdGVyaWFsIERlc2lnbiBjb2xvciBwYWxldHRlJyxcbiAgICAgICAgICAgICAgICBjb2xvcnM6IFtcbiAgICAgICAgICAgICAgICAgICAgJyNGNDQzMzYnLCAvLyBSZWRcbiAgICAgICAgICAgICAgICAgICAgJyNFOTFFNjMnLCAvLyBQaW5rXG4gICAgICAgICAgICAgICAgICAgICcjOUMyN0IwJywgLy8gUHVycGxlXG4gICAgICAgICAgICAgICAgICAgICcjNjczQUI3JywgLy8gRGVlcCBQdXJwbGVcbiAgICAgICAgICAgICAgICAgICAgJyMzRjUxQjUnLCAvLyBJbmRpZ29cbiAgICAgICAgICAgICAgICAgICAgJyMyMTk2RjMnLCAvLyBCbHVlXG4gICAgICAgICAgICAgICAgICAgICcjMDNBOUY0JywgLy8gTGlnaHQgQmx1ZVxuICAgICAgICAgICAgICAgICAgICAnIzAwQkNENCcsIC8vIEN5YW5cbiAgICAgICAgICAgICAgICAgICAgJyMwMDk2ODgnLCAvLyBUZWFsXG4gICAgICAgICAgICAgICAgICAgICcjNENBRjUwJywgLy8gR3JlZW5cbiAgICAgICAgICAgICAgICAgICAgJyM4QkMzNEEnLCAvLyBMaWdodCBHcmVlblxuICAgICAgICAgICAgICAgICAgICAnI0NEREMzOScsIC8vIExpbWVcbiAgICAgICAgICAgICAgICAgICAgJyNGRkVCM0InLCAvLyBZZWxsb3dcbiAgICAgICAgICAgICAgICAgICAgJyNGRkMxMDcnLCAvLyBBbWJlclxuICAgICAgICAgICAgICAgICAgICAnI0ZGOTgwMCcsIC8vIE9yYW5nZVxuICAgICAgICAgICAgICAgICAgICAnI0ZGNTcyMicsIC8vIERlZXAgT3JhbmdlXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ3Bhc3RlbCcsXG4gICAgICAgICAgICAgICAgdGl0bGU6ICdQYXN0ZWwgQ29sb3JzJyxcbiAgICAgICAgICAgICAgICBjYXRlZ29yeTogJ3RoZW1lJyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1NvZnQgcGFzdGVsIGNvbG9yIHBhbGV0dGUnLFxuICAgICAgICAgICAgICAgIGNvbG9yczogW1xuICAgICAgICAgICAgICAgICAgICAnI0ZGQjNCQScsIC8vIExpZ2h0IFBpbmtcbiAgICAgICAgICAgICAgICAgICAgJyNGRkRGQkEnLCAvLyBMaWdodCBQZWFjaFxuICAgICAgICAgICAgICAgICAgICAnI0ZGRkZCQScsIC8vIExpZ2h0IFllbGxvd1xuICAgICAgICAgICAgICAgICAgICAnI0JBRkZDOScsIC8vIExpZ2h0IEdyZWVuXG4gICAgICAgICAgICAgICAgICAgICcjQkFFMUZGJywgLy8gTGlnaHQgQmx1ZVxuICAgICAgICAgICAgICAgICAgICAnI0UwQkJFNCcsIC8vIExpZ2h0IFB1cnBsZVxuICAgICAgICAgICAgICAgICAgICAnI0ZGREZEMycsIC8vIExpZ2h0IENvcmFsXG4gICAgICAgICAgICAgICAgICAgICcjRDRGMUY0JywgLy8gTGlnaHQgQ3lhblxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICd2aWJyYW50JyxcbiAgICAgICAgICAgICAgICB0aXRsZTogJ1ZpYnJhbnQgQ29sb3JzJyxcbiAgICAgICAgICAgICAgICBjYXRlZ29yeTogJ3RoZW1lJyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0JvbGQgYW5kIHZpYnJhbnQgY29sb3IgcGFsZXR0ZScsXG4gICAgICAgICAgICAgICAgY29sb3JzOiBbXG4gICAgICAgICAgICAgICAgICAgICcjRkY2QjZCJywgLy8gVmlicmFudCBSZWRcbiAgICAgICAgICAgICAgICAgICAgJyM0RUNEQzQnLCAvLyBWaWJyYW50IFRlYWxcbiAgICAgICAgICAgICAgICAgICAgJyM0NUI3RDEnLCAvLyBWaWJyYW50IEJsdWVcbiAgICAgICAgICAgICAgICAgICAgJyNGRkEwN0EnLCAvLyBWaWJyYW50IFNhbG1vblxuICAgICAgICAgICAgICAgICAgICAnIzk4RDhDOCcsIC8vIFZpYnJhbnQgTWludFxuICAgICAgICAgICAgICAgICAgICAnI0Y3REM2RicsIC8vIFZpYnJhbnQgWWVsbG93XG4gICAgICAgICAgICAgICAgICAgICcjQkI4RkNFJywgLy8gVmlicmFudCBQdXJwbGVcbiAgICAgICAgICAgICAgICAgICAgJyM4NUMxRTInLCAvLyBWaWJyYW50IFNreSBCbHVlXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ2VhcnRoLXRvbmVzJyxcbiAgICAgICAgICAgICAgICB0aXRsZTogJ0VhcnRoIFRvbmVzJyxcbiAgICAgICAgICAgICAgICBjYXRlZ29yeTogJ3RoZW1lJyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ05hdHVyYWwgZWFydGggdG9uZSBjb2xvciBwYWxldHRlJyxcbiAgICAgICAgICAgICAgICBjb2xvcnM6IFtcbiAgICAgICAgICAgICAgICAgICAgJyM4QjQ1MTMnLCAvLyBTYWRkbGUgQnJvd25cbiAgICAgICAgICAgICAgICAgICAgJyNBMDUyMkQnLCAvLyBTaWVubmFcbiAgICAgICAgICAgICAgICAgICAgJyNEMjY5MUUnLCAvLyBDaG9jb2xhdGVcbiAgICAgICAgICAgICAgICAgICAgJyNDRDg1M0YnLCAvLyBQZXJ1XG4gICAgICAgICAgICAgICAgICAgICcjREVCODg3JywgLy8gQnVybHl3b29kXG4gICAgICAgICAgICAgICAgICAgICcjRjVERUIzJywgLy8gV2hlYXRcbiAgICAgICAgICAgICAgICAgICAgJyM1NTZCMkYnLCAvLyBEYXJrIE9saXZlIEdyZWVuXG4gICAgICAgICAgICAgICAgICAgICcjNkI4RTIzJywgLy8gT2xpdmUgRHJhYlxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdtb25vY2hyb21lJyxcbiAgICAgICAgICAgICAgICB0aXRsZTogJ01vbm9jaHJvbWUnLFxuICAgICAgICAgICAgICAgIGNhdGVnb3J5OiAndGhlbWUnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnR3JheXNjYWxlIGNvbG9yIHBhbGV0dGUnLFxuICAgICAgICAgICAgICAgIGNvbG9yczogW1xuICAgICAgICAgICAgICAgICAgICAnIzAwMDAwMCcsIC8vIEJsYWNrXG4gICAgICAgICAgICAgICAgICAgICcjMjYyNjI2JywgLy8gVmVyeSBEYXJrIEdyYXlcbiAgICAgICAgICAgICAgICAgICAgJyM0MDQwNDAnLCAvLyBEYXJrIEdyYXlcbiAgICAgICAgICAgICAgICAgICAgJyM1OTU5NTknLCAvLyBNZWRpdW0gRGFyayBHcmF5XG4gICAgICAgICAgICAgICAgICAgICcjNzM3MzczJywgLy8gTWVkaXVtIEdyYXlcbiAgICAgICAgICAgICAgICAgICAgJyM4QzhDOEMnLCAvLyBMaWdodCBNZWRpdW0gR3JheVxuICAgICAgICAgICAgICAgICAgICAnI0E2QTZBNicsIC8vIExpZ2h0IEdyYXlcbiAgICAgICAgICAgICAgICAgICAgJyNCRkJGQkYnLCAvLyBWZXJ5IExpZ2h0IEdyYXlcbiAgICAgICAgICAgICAgICAgICAgJyNEOUQ5RDknLCAvLyBMaWdodGVyIEdyYXlcbiAgICAgICAgICAgICAgICAgICAgJyNGMkYyRjInLCAvLyBBbG1vc3QgV2hpdGVcbiAgICAgICAgICAgICAgICAgICAgJyNGRkZGRkYnLCAvLyBXaGl0ZVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cblxuLy8jZW5kcmVnaW9uXG5cbiJdfQ==","import { differenceWith, get, isArray, isEmpty, isEqual, isNil, isObjectLike, isPlainObject, merge, set, transform, union, } from 'lodash-es';\nexport function extractNestedFieldsWildcard(obj, basePath, fields) {\n const result = {};\n if (fields.length === 1 && fields[0] === '*') {\n const fullObj = get(obj, basePath);\n return isPlainObject(fullObj) ? fullObj : {};\n }\n for (const field of fields) {\n const fullPath = basePath ? `${basePath}.${field}` : field;\n const value = get(obj, fullPath);\n set(result, field, value);\n }\n return result;\n}\nexport function setSmart(obj, smartPath, value) {\n const pathParts = smartPath.split('.');\n const lastPart = pathParts[pathParts.length - 1];\n const fieldMatch = lastPart.match(/^\\{(.+)\\}$/);\n if (!fieldMatch) {\n set(obj, smartPath, value);\n return obj;\n }\n const fields = fieldMatch[1].split(',').map((f) => f.trim());\n const basePath = pathParts.slice(0, -1).join('.');\n const [arrayKey, ...restPath] = basePath.split('.');\n // Make sure the array exists\n if (!obj[arrayKey])\n obj[arrayKey] = [];\n // 🟡 Case A: value is array (normal set)\n if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n const targetItem = obj[arrayKey][i] ?? {};\n const nested = {};\n if (restPath.length > 0) {\n const picked = extractNestedFieldsWildcard(item, restPath.join('.'), fields);\n set(nested, restPath.join('.'), picked);\n }\n else {\n const picked = extractNestedFieldsWildcard(item, '', fields);\n Object.assign(nested, picked);\n }\n obj[arrayKey][i] = merge({}, targetItem, nested);\n }\n }\n // 🟢 Case B: value is a single value → broadcast\n else {\n for (let i = 0; i < obj[arrayKey].length; i++) {\n const targetItem = obj[arrayKey][i] ?? {};\n const nested = {};\n if (restPath.length > 0) {\n for (const field of fields) {\n set(nested, `${restPath.join('.')}.${field}`, value);\n }\n }\n else {\n for (const field of fields) {\n set(nested, field, value);\n }\n }\n obj[arrayKey][i] = merge({}, targetItem, nested);\n }\n }\n return obj;\n}\nfunction extractFieldsFromPath(obj, basePath, fields) {\n if (fields.length === 1 && fields[0] === '*') {\n const fullObj = basePath ? get(obj, basePath) : obj;\n return isPlainObject(fullObj) ? fullObj : {};\n }\n const result = {};\n for (const field of fields) {\n const fullPath = basePath ? `${basePath}.${field}` : field;\n const val = get(obj, fullPath);\n if (val !== undefined) {\n result[field] = val;\n }\n }\n return result;\n}\nexport function getSmart(obj, smartPath) {\n const pathParts = smartPath.split('.');\n const lastPart = pathParts[pathParts.length - 1];\n const fieldMatch = lastPart.match(/^\\{(.+)\\}$/);\n // Simple get (no fields)\n if (!fieldMatch) {\n return get(obj, smartPath);\n }\n const fields = fieldMatch[1].split(',').map((f) => f.trim());\n const basePath = pathParts.slice(0, -1).join('.');\n const items = get(obj, basePath);\n if (!isArray(items))\n return [];\n const nestedPath = basePath.includes('.') ? basePath.split('.').slice(1).join('.') : '';\n return items.map((item) => {\n return extractFieldsFromPath(item, nestedPath, fields);\n });\n}\nexport function extractValue(value, key = 'id') {\n if (isNil(value)) {\n return null;\n }\n return isObjectLike(value) ? get(value, key) : value;\n}\nexport function cleanDeep(obj) {\n return transform(obj, (result, value, key) => {\n if (isObjectLike(value)) {\n const cleaned = cleanDeep(value);\n if (!isEmpty(cleaned)) {\n result[key] = cleaned;\n }\n }\n else if (!isNil(value) && // not null or undefined\n !(typeof value === 'string' && value.trim() === '') && // not empty string\n !(Array.isArray(value) && value.length === 0) // not empty array\n ) {\n result[key] = value;\n }\n });\n}\nfunction getDeepChanges(obj1, obj2) {\n const changes = [];\n function walk(o1, o2, currentPath = []) {\n // If both values are deeply equal, skip\n if (isEqual(o1, o2))\n return;\n const isObj1Nil = o1 === null || o1 === undefined;\n const isObj2Nil = o2 === null || o2 === undefined;\n // If obj1 is null/undefined and obj2 is not, treat entire obj2 as added\n if (isObj1Nil && !isObj2Nil) {\n if (isPlainObject(o2)) {\n for (const key of Object.keys(o2)) {\n walk(undefined, o2[key], [...currentPath, key]);\n }\n }\n else if (Array.isArray(o2)) {\n changes.push({\n path: currentPath.join('.'),\n oldValue: undefined,\n newValue: o2,\n arrayDiff: {\n added: o2,\n removed: [],\n },\n });\n }\n else {\n changes.push({\n path: currentPath.join('.'),\n oldValue: undefined,\n newValue: o2,\n });\n }\n return;\n }\n // If obj2 is null/undefined and obj1 is not, treat entire obj1 as removed\n if (!isObj1Nil && isObj2Nil) {\n if (isPlainObject(o1)) {\n for (const key of Object.keys(o1)) {\n walk(o1[key], undefined, [...currentPath, key]);\n }\n }\n else if (Array.isArray(o1)) {\n changes.push({\n path: currentPath.join('.'),\n oldValue: o1,\n newValue: undefined,\n arrayDiff: {\n added: [],\n removed: o1,\n },\n });\n }\n else {\n changes.push({\n path: currentPath.join('.'),\n oldValue: o1,\n newValue: undefined,\n });\n }\n return;\n }\n // If both are arrays, compare items\n if (Array.isArray(o1) && Array.isArray(o2)) {\n if (!isEqual(o1, o2)) {\n const added = differenceWith(o2, o1, isEqual);\n const removed = differenceWith(o1, o2, isEqual);\n changes.push({\n path: currentPath.join('.'),\n oldValue: o1,\n newValue: o2,\n arrayDiff: {\n added,\n removed,\n },\n });\n }\n return;\n }\n // If both are plain objects, walk each key\n if (isPlainObject(o1) && isPlainObject(o2)) {\n const allKeys = union(Object.keys(o1), Object.keys(o2));\n for (const key of allKeys) {\n walk(o1[key], o2[key], [...currentPath, key]);\n }\n return;\n }\n // Primitive values or mismatched types\n changes.push({\n path: currentPath.join('.'),\n oldValue: o1,\n newValue: o2,\n });\n }\n walk(obj1, obj2);\n return changes;\n}\n// Method 1: Returns only changed paths\nexport function getChangedPaths(obj1, obj2) {\n return getDeepChanges(obj1, obj2).map((change) => change.path);\n}\n// Method 2: Returns full change entries\nexport function getDetailedChanges(obj1, obj2) {\n return getDeepChanges(obj1, obj2);\n}\nexport function getEnumValues(enumType) {\n return Object.entries(enumType).map(([key, value]) => ({ id: value, title: key }));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LXV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2NvcmUvc3JjL2xpYi91dGlscy9vYmplY3QtdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsY0FBYyxFQUNkLEdBQUcsRUFDSCxPQUFPLEVBQ1AsT0FBTyxFQUNQLE9BQU8sRUFDUCxLQUFLLEVBQ0wsWUFBWSxFQUNaLGFBQWEsRUFDYixLQUFLLEVBQ0wsR0FBRyxFQUNILFNBQVMsRUFDVCxLQUFLLEdBQ04sTUFBTSxXQUFXLENBQUM7QUFFbkIsTUFBTSxVQUFVLDJCQUEyQixDQUFDLEdBQVEsRUFBRSxRQUFnQixFQUFFLE1BQWdCO0lBQ3RGLE1BQU0sTUFBTSxHQUFRLEVBQUUsQ0FBQztJQUV2QixJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUM3QyxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRUQsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUMzQixNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDM0QsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNqQyxHQUFHLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztB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QUcsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDaEQsQ0FBQztZQUNELE9BQU87UUFDVCxDQUFDO1FBRUQsdUNBQXVDO1FBQ3ZDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDWCxJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDM0IsUUFBUSxFQUFFLEVBQUU7WUFDWixRQUFRLEVBQUUsRUFBRTtTQUNiLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFFRCx1Q0FBdUM7QUFDdkMsTUFBTSxVQUFVLGVBQWUsQ0FBQyxJQUFTLEVBQUUsSUFBUztJQUNsRCxPQUFPLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakUsQ0FBQztBQUVELHdDQUF3QztBQUN4QyxNQUFNLFVBQVUsa0JBQWtCLENBQUMsSUFBUyxFQUFFLElBQVM7SUFDckQsT0FBTyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFJRCxNQUFNLFVBQVUsYUFBYSxDQUFDLFFBQWE7SUFDekMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQWUsRUFBRSxLQUFLLEVBQUUsR0FBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3pHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBkaWZmZXJlbmNlV2l0aCxcbiAgZ2V0LFxuICBpc0FycmF5LFxuICBpc0VtcHR5LFxuICBpc0VxdWFsLFxuICBpc05pbCxcbiAgaXNPYmplY3RMaWtlLFxuICBpc1BsYWluT2JqZWN0LFxuICBtZXJnZSxcbiAgc2V0LFxuICB0cmFuc2Zvcm0sXG4gIHVuaW9uLFxufSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdE5lc3RlZEZpZWxkc1dpbGRjYXJkKG9iajogYW55LCBiYXNlUGF0aDogc3RyaW5nLCBmaWVsZHM6IHN0cmluZ1tdKTogYW55IHtcbiAgY29uc3QgcmVzdWx0OiBhbnkgPSB7fTtcblxuICBpZiAoZmllbGRzLmxlbmd0aCA9PT0gMSAmJiBmaWVsZHNbMF0gPT09ICcqJykge1xuICAgIGNvbnN0IGZ1bGxPYmogPSBnZXQob2JqLCBiYXNlUGF0aCk7XG4gICAgcmV0dXJuIGlzUGxhaW5PYmplY3QoZnVsbE9iaikgPyBmdWxsT2JqIDoge307XG4gIH1cblxuICBmb3IgKGNvbnN0IGZpZWxkIG9mIGZpZWxkcykge1xuICAgIGNvbnN0IGZ1bGxQYXRoID0gYmFzZVBhdGggPyBgJHtiYXNlUGF0aH0uJHtmaWVsZH1gIDogZmllbGQ7XG4gICAgY29uc3QgdmFsdWUgPSBnZXQob2JqLCBmdWxsUGF0aCk7XG4gICAgc2V0KHJlc3VsdCwgZmllbGQsIHZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRTbWFydChvYmo6IGFueSwgc21hcnRQYXRoOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBhbnkge1xuICBjb25zdCBwYXRoUGFydHMgPSBzbWFydFBhdGguc3BsaXQoJy4nKTtcbiAgY29uc3QgbGFzdFBhcnQgPSBwYXRoUGFydHNbcGF0aFBhcnRzLmxlbmd0aCAtIDFdO1xuICBjb25zdCBmaWVsZE1hdGNoID0gbGFzdFBhcnQubWF0Y2goL15cXHsoLispXFx9JC8pO1xuXG4gIGlmICghZmllbGRNYXRjaCkge1xuICAgIHNldChvYmosIHNtYXJ0UGF0aCwgdmFsdWUpO1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICBjb25zdCBmaWVsZHMgPSBmaWVsZE1hdGNoWzFdLnNwbGl0KCcsJykubWFwKChmKSA9PiBmLnRyaW0oKSk7XG4gIGNvbnN0IGJhc2VQYXRoID0gcGF0aFBhcnRzLnNsaWNlKDAsIC0xKS5qb2luKCcuJyk7XG4gIGNvbnN0IFthcnJheUtleSwgLi4ucmVzdFBhdGhdID0gYmFzZVBhdGguc3BsaXQoJy4nKTtcblxuICAvLyBNYWtlIHN1cmUgdGhlIGFycmF5IGV4aXN0c1xuICBpZiAoIW9ialthcnJheUtleV0pIG9ialthcnJheUtleV0gPSBbXTtcblxuICAvLyDwn5+hIENhc2UgQTogdmFsdWUgaXMgYXJyYXkgKG5vcm1hbCBzZXQpXG4gIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSB2YWx1ZVtpXTtcbiAgICAgIGNvbnN0IHRhcmdldEl0ZW0gPSBvYmpbYXJyYXlLZXldW2ldID8/IHt9O1xuICAgICAgY29uc3QgbmVzdGVkID0ge307XG5cbiAgICAgIGlmIChyZXN0UGF0aC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHBpY2tlZCA9IGV4dHJhY3ROZXN0ZWRGaWVsZHNXaWxkY2FyZChpdGVtLCByZXN0UGF0aC5qb2luKCcuJyksIGZpZWxkcyk7XG4gICAgICAgIHNldChuZXN0ZWQsIHJlc3RQYXRoLmpvaW4oJy4nKSwgcGlja2VkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHBpY2tlZCA9IGV4dHJhY3ROZXN0ZWRGaWVsZHNXaWxkY2FyZChpdGVtLCAnJywgZmllbGRzKTtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihuZXN0ZWQsIHBpY2tlZCk7XG4gICAgICB9XG5cbiAgICAgIG9ialthcnJheUtleV1baV0gPSBtZXJnZSh7fSwgdGFyZ2V0SXRlbSwgbmVzdGVkKTtcbiAgICB9XG4gIH1cblxuICAvLyDwn5+iIENhc2UgQjogdmFsdWUgaXMgYSBzaW5nbGUgdmFsdWUg4oaSIGJyb2FkY2FzdFxuICBlbHNlIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9ialthcnJheUtleV0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHRhcmdldEl0ZW0gPSBvYmpbYXJyYXlLZXldW2ldID8/IHt9O1xuICAgICAgY29uc3QgbmVzdGVkID0ge307XG5cbiAgICAgIGlmIChyZXN0UGF0aC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgZmllbGRzKSB7XG4gICAgICAgICAgc2V0KG5lc3RlZCwgYCR7cmVzdFBhdGguam9pbignLicpfS4ke2ZpZWxkfWAsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBmaWVsZHMpIHtcbiAgICAgICAgICBzZXQobmVzdGVkLCBmaWVsZCwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIG9ialthcnJheUtleV1baV0gPSBtZXJnZSh7fSwgdGFyZ2V0SXRlbSwgbmVzdGVkKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBleHRyYWN0RmllbGRzRnJvbVBhdGgob2JqOiBhbnksIGJhc2VQYXRoOiBzdHJpbmcsIGZpZWxkczogc3RyaW5nW10pOiBhbnkge1xuICBpZiAoZmllbGRzLmxlbmd0aCA9PT0gMSAmJiBmaWVsZHNbMF0gPT09ICcqJykge1xuICAgIGNvbnN0IGZ1bGxPYmogPSBiYXNlUGF0aCA/IGdldChvYmosIGJhc2VQYXRoKSA6IG9iajtcbiAgICByZXR1cm4gaXNQbGFpbk9iamVjdChmdWxsT2JqKSA/IGZ1bGxPYmogOiB7fTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdDogYW55ID0ge307XG4gIGZvciAoY29uc3QgZmllbGQgb2YgZmllbGRzKSB7XG4gICAgY29uc3QgZnVsbFBhdGggPSBiYXNlUGF0aCA/IGAke2Jhc2VQYXRofS4ke2ZpZWxkfWAgOiBmaWVsZDtcbiAgICBjb25zdCB2YWwgPSBnZXQob2JqLCBmdWxsUGF0aCk7XG4gICAgaWYgKHZhbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXN1bHRbZmllbGRdID0gdmFsO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U21hcnQob2JqOiBhbnksIHNtYXJ0UGF0aDogc3RyaW5nKTogYW55IHtcbiAgY29uc3QgcGF0aFBhcnRzID0gc21hcnRQYXRoLnNwbGl0KCcuJyk7XG4gIGNvbnN0IGxhc3RQYXJ0ID0gcGF0aFBhcnRzW3BhdGhQYXJ0cy5sZW5ndGggLSAxXTtcbiAgY29uc3QgZmllbGRNYXRjaCA9IGxhc3RQYXJ0Lm1hdGNoKC9eXFx7KC4rKVxcfSQvKTtcblxuICAvLyBTaW1wbGUgZ2V0IChubyBmaWVsZHMpXG4gIGlmICghZmllbGRNYXRjaCkge1xuICAgIHJldHVybiBnZXQob2JqLCBzbWFydFBhdGgpO1xuICB9XG5cbiAgY29uc3QgZmllbGRzID0gZmllbGRNYXRjaFsxXS5zcGxpdCgnLCcpLm1hcCgoZikgPT4gZi50cmltKCkpO1xuICBjb25zdCBiYXNlUGF0aCA9IHBhdGhQYXJ0cy5zbGljZSgwLCAtMSkuam9pbignLicpO1xuICBjb25zdCBpdGVtcyA9IGdldChvYmosIGJhc2VQYXRoKTtcblxuICBpZiAoIWlzQXJyYXkoaXRlbXMpKSByZXR1cm4gW107XG5cbiAgY29uc3QgbmVzdGVkUGF0aCA9IGJhc2VQYXRoLmluY2x1ZGVzKCcuJykgPyBiYXNlUGF0aC5zcGxpdCgnLicpLnNsaWNlKDEpLmpvaW4oJy4nKSA6ICcnO1xuXG4gIHJldHVybiBpdGVtcy5tYXAoKGl0ZW0pID0+IHtcbiAgICByZXR1cm4gZXh0cmFjdEZpZWxkc0Zyb21QYXRoKGl0ZW0sIG5lc3RlZFBhdGgsIGZpZWxkcyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdFZhbHVlPFQgPSBhbnk+KHZhbHVlOiBhbnksIGtleTogc3RyaW5nID0gJ2lkJyk6IFQgfCBudWxsIHtcbiAgaWYgKGlzTmlsKHZhbHVlKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpID8gZ2V0KHZhbHVlLCBrZXkpIDogdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhbkRlZXAob2JqOiBhbnkpIHtcbiAgcmV0dXJuIHRyYW5zZm9ybShvYmosIChyZXN1bHQ6IGFueSwgdmFsdWU6IGFueSwga2V5OiBzdHJpbmcpID0+IHtcbiAgICBpZiAoaXNPYmplY3RMaWtlKHZhbHVlKSkge1xuICAgICAgY29uc3QgY2xlYW5lZCA9IGNsZWFuRGVlcCh2YWx1ZSk7XG4gICAgICBpZiAoIWlzRW1wdHkoY2xlYW5lZCkpIHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSBjbGVhbmVkO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoXG4gICAgICAhaXNOaWwodmFsdWUpICYmIC8vIG5vdCBudWxsIG9yIHVuZGVmaW5lZFxuICAgICAgISh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnRyaW0oKSA9PT0gJycpICYmIC8vIG5vdCBlbXB0eSBzdHJpbmdcbiAgICAgICEoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKSAvLyBub3QgZW1wdHkgYXJyYXlcbiAgICApIHtcbiAgICAgIHJlc3VsdFtrZXldID0gdmFsdWU7XG4gICAgfVxuICB9KTtcbn1cblxudHlwZSBDaGFuZ2VFbnRyeSA9IHtcbiAgcGF0aDogc3RyaW5nO1xuICBvbGRWYWx1ZTogYW55O1xuICBuZXdWYWx1ZTogYW55O1xuICBhcnJheURpZmY/OiB7XG4gICAgYWRkZWQ6IGFueVtdO1xuICAgIHJlbW92ZWQ6IGFueVtdO1xuICB9O1xufTtcblxuZnVuY3Rpb24gZ2V0RGVlcENoYW5nZXMob2JqMTogYW55LCBvYmoyOiBhbnkpOiBDaGFuZ2VFbnRyeVtdIHtcbiAgY29uc3QgY2hhbmdlczogQ2hhbmdlRW50cnlbXSA9IFtdO1xuXG4gIGZ1bmN0aW9uIHdhbGsobzE6IGFueSwgbzI6IGFueSwgY3VycmVudFBhdGg6IHN0cmluZ1tdID0gW10pIHtcbiAgICAvLyBJZiBib3RoIHZhbHVlcyBhcmUgZGVlcGx5IGVxdWFsLCBza2lwXG4gICAgaWYgKGlzRXF1YWwobzEsIG8yKSkgcmV0dXJuO1xuXG4gICAgY29uc3QgaXNPYmoxTmlsID0gbzEgPT09IG51bGwgfHwgbzEgPT09IHVuZGVmaW5lZDtcbiAgICBjb25zdCBpc09iajJOaWwgPSBvMiA9PT0gbnVsbCB8fCBvMiA9PT0gdW5kZWZpbmVkO1xuXG4gICAgLy8gSWYgb2JqMSBpcyBudWxsL3VuZGVmaW5lZCBhbmQgb2JqMiBpcyBub3QsIHRyZWF0IGVudGlyZSBvYmoyIGFzIGFkZGVkXG4gICAgaWYgKGlzT2JqMU5pbCAmJiAhaXNPYmoyTmlsKSB7XG4gICAgICBpZiAoaXNQbGFpbk9iamVjdChvMikpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobzIpKSB7XG4gICAgICAgICAgd2Fsayh1bmRlZmluZWQsIG8yW2tleV0sIFsuLi5jdXJyZW50UGF0aCwga2V5XSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShvMikpIHtcbiAgICAgICAgY2hhbmdlcy5wdXNoKHtcbiAgICAgICAgICBwYXRoOiBjdXJyZW50UGF0aC5qb2luKCcuJyksXG4gICAgICAgICAgb2xkVmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICBuZXdWYWx1ZTogbzIsXG4gICAgICAgICAgYXJyYXlEaWZmOiB7XG4gICAgICAgICAgICBhZGRlZDogbzIsXG4gICAgICAgICAgICByZW1vdmVkOiBbXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNoYW5nZXMucHVzaCh7XG4gICAgICAgICAgcGF0aDogY3VycmVudFBhdGguam9pbignLicpLFxuICAgICAgICAgIG9sZFZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgbmV3VmFsdWU6IG8yLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBJZiBvYmoyIGlzIG51bGwvdW5kZWZpbmVkIGFuZCBvYmoxIGlzIG5vdCwgdHJlYXQgZW50aXJlIG9iajEgYXMgcmVtb3ZlZFxuICAgIGlmICghaXNPYmoxTmlsICYmIGlzT2JqMk5pbCkge1xuICAgICAgaWYgKGlzUGxhaW5PYmplY3QobzEpKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG8xKSkge1xuICAgICAgICAgIHdhbGsobzFba2V5XSwgdW5kZWZpbmVkLCBbLi4uY3VycmVudFBhdGgsIGtleV0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkobzEpKSB7XG4gICAgICAgIGNoYW5nZXMucHVzaCh7XG4gICAgICAgICAgcGF0aDogY3VycmVudFBhdGguam9pbignLicpLFxuICAgICAgICAgIG9sZFZhbHVlOiBvMSxcbiAgICAgICAgICBuZXdWYWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgIGFycmF5RGlmZjoge1xuICAgICAgICAgICAgYWRkZWQ6IFtdLFxuICAgICAgICAgICAgcmVtb3ZlZDogbzEsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjaGFuZ2VzLnB1c2goe1xuICAgICAgICAgIHBhdGg6IGN1cnJlbnRQYXRoLmpvaW4oJy4nKSxcbiAgICAgICAgICBvbGRWYWx1ZTogbzEsXG4gICAgICAgICAgbmV3VmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gSWYgYm90aCBhcmUgYXJyYXlzLCBjb21wYXJlIGl0ZW1zXG4gICAgaWYgKEFycmF5LmlzQXJyYXkobzEpICYmIEFycmF5LmlzQXJyYXkobzIpKSB7XG4gICAgICBpZiAoIWlzRXF1YWwobzEsIG8yKSkge1xuICAgICAgICBjb25zdCBhZGRlZCA9IGRpZmZlcmVuY2VXaXRoKG8yLCBvMSwgaXNFcXVhbCk7XG4gICAgICAgIGNvbnN0IHJlbW92ZWQgPSBkaWZmZXJlbmNlV2l0aChvMSwgbzIsIGlzRXF1YWwpO1xuXG4gICAgICAgIGNoYW5nZXMucHVzaCh7XG4gICAgICAgICAgcGF0aDogY3VycmVudFBhdGguam9pbignLicpLFxuICAgICAgICAgIG9sZFZhbHVlOiBvMSxcbiAgICAgICAgICBuZXdWYWx1ZTogbzIsXG4gICAgICAgICAgYXJyYXlEaWZmOiB7XG4gICAgICAgICAgICBhZGRlZCxcbiAgICAgICAgICAgIHJlbW92ZWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gSWYgYm90aCBhcmUgcGxhaW4gb2JqZWN0cywgd2FsayBlYWNoIGtleVxuICAgIGlmIChpc1BsYWluT2JqZWN0KG8xKSAmJiBpc1BsYWluT2JqZWN0KG8yKSkge1xuICAgICAgY29uc3QgYWxsS2V5cyA9IHVuaW9uKE9iamVjdC5rZXlzKG8xKSwgT2JqZWN0LmtleXMobzIpKTtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGFsbEtleXMpIHtcbiAgICAgICAgd2FsayhvMVtrZXldLCBvMltrZXldLCBbLi4uY3VycmVudFBhdGgsIGtleV0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFByaW1pdGl2ZSB2YWx1ZXMgb3IgbWlzbWF0Y2hlZCB0eXBlc1xuICAgIGNoYW5nZXMucHVzaCh7XG4gICAgICBwYXRoOiBjdXJyZW50UGF0aC5qb2luKCcuJyksXG4gICAgICBvbGRWYWx1ZTogbzEsXG4gICAgICBuZXdWYWx1ZTogbzIsXG4gICAgfSk7XG4gIH1cblxuICB3YWxrKG9iajEsIG9iajIpO1xuICByZXR1cm4gY2hhbmdlcztcbn1cblxuLy8gTWV0aG9kIDE6IFJldHVybnMgb25seSBjaGFuZ2VkIHBhdGhzXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2hhbmdlZFBhdGhzKG9iajE6IGFueSwgb2JqMjogYW55KTogc3RyaW5nW10ge1xuICByZXR1cm4gZ2V0RGVlcENoYW5nZXMob2JqMSwgb2JqMikubWFwKChjaGFuZ2UpID0+IGNoYW5nZS5wYXRoKTtcbn1cblxuLy8gTWV0aG9kIDI6IFJldHVybnMgZnVsbCBjaGFuZ2UgZW50cmllc1xuZXhwb3J0IGZ1bmN0aW9uIGdldERldGFpbGVkQ2hhbmdlcyhvYmoxOiBhbnksIG9iajI6IGFueSk6IENoYW5nZUVudHJ5W10ge1xuICByZXR1cm4gZ2V0RGVlcENoYW5nZXMob2JqMSwgb2JqMik7XG59XG5cblxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW51bVZhbHVlcyhlbnVtVHlwZTogYW55KTogeyBpZDogc3RyaW5nOyB0aXRsZTogc3RyaW5nIH1bXSB7XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhlbnVtVHlwZSkubWFwKChba2V5LCB2YWx1ZV0pID0+ICh7IGlkOiB2YWx1ZSBhcyBzdHJpbmcsIHRpdGxlOiBrZXkgYXMgc3RyaW5nIH0pKTtcbn1cblxuXG5cblxuXG4iXX0=","import { signalStore, withState, withComputed, withMethods, patchState } from '@ngrx/signals';\nimport { cloneDeep, isEqual } from 'lodash-es';\nimport { computed } from '@angular/core';\nimport { getSmart, setSmart } from '../utils/object-util';\nexport class AXPContextChangeEvent {\n}\nexport const AXPContextStore = signalStore({\n providedIn: 'root',\n}, \n// Initial State\nwithState(() => ({\n data: {}, // Shared context data\n state: 'initiated', // Current state\n initialSnapshot: {}, // Snapshot of the first initialized state\n previousSnapshot: {}, // Snapshot of the previous state\n lastChange: {\n state: 'initiated',\n }, // Last change event\n})), \n// Computed Signals\nwithComputed(({ data, state, lastChange, initialSnapshot, previousSnapshot }) => ({\n isChanged: computed(() => state() === 'changed'),\n isReset: computed(() => state() === 'restored'),\n isInitiated: computed(() => state() === 'initiated'),\n isEmpty: computed(() => Object.keys(data()).length === 0),\n isDirty: computed(() => !isEqual(data(), previousSnapshot())),\n snapshot: computed(() => cloneDeep(data())), // Current data snapshot\n initial: computed(() => cloneDeep(initialSnapshot())), // Initial snapshot\n previous: computed(() => cloneDeep(previousSnapshot())), // Previous snapshot\n changeEvent: computed(() => lastChange()), // Reactive last change event\n})), \n// Methods for State Management\nwithMethods((store) => ({\n // Update a specific value\n update(path, value) {\n const currentData = cloneDeep(store.data());\n const oldValue = getSmart(currentData, path);\n // Skip if the value hasn't changed\n if (isEqual(oldValue, value)) {\n return;\n }\n // Update the value and prepare the change event\n const updatedData = setSmart(currentData, path, value);\n const changeEvent = {\n oldValue,\n newValue: value,\n path,\n state: 'changed',\n data: updatedData,\n };\n // Patch the state\n patchState(store, {\n previousSnapshot: store.snapshot(), // Save the previous state\n data: updatedData,\n state: 'changed',\n lastChange: changeEvent,\n });\n },\n patch(context) {\n const currentData = cloneDeep(store.data());\n // Update the value and prepare the change event\n const updatedData = { ...currentData, ...context };\n const changeEvent = {\n state: 'patch',\n data: updatedData,\n };\n // Patch the state\n patchState(store, {\n previousSnapshot: store.snapshot(), // Save the previous state\n data: updatedData,\n state: 'changed',\n lastChange: changeEvent,\n });\n },\n // Reset to the initial state\n reset() {\n const initialData = store.initial();\n const changeEvent = {\n oldValue: cloneDeep(store.data()), // Current data becomes old value\n newValue: cloneDeep(initialData), // Reset to the initial state\n path: '',\n state: 'restored',\n data: initialData,\n };\n patchState(store, {\n previousSnapshot: store.snapshot(), // Save the previous state\n data: initialData,\n state: 'restored',\n lastChange: changeEvent,\n });\n },\n // Initialize the state\n set(initialData) {\n const currentData = store.data();\n if (isEqual(currentData, initialData)) {\n return; // Skip if the current state matches the initial state\n }\n const changeEvent = {\n oldValue: null,\n newValue: cloneDeep(initialData),\n path: '',\n state: 'initiated',\n data: initialData,\n };\n patchState(store, {\n initialSnapshot: cloneDeep(initialData), // Save the initial state\n previousSnapshot: store.snapshot(), // Save the current state as the previous\n data: initialData,\n state: 'initiated',\n lastChange: changeEvent,\n });\n },\n // Get a specific value\n getValue(path) {\n return getSmart(store.data(), path);\n },\n})));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1zdG9yZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9jb3JlL3NyYy9saWIvY29udGV4dC9jb250ZXh0LXN0b3JlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBUzFELE1BQU0sT0FBTyxxQkFBcUI7Q0FNakM7QUFFRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsV0FBVyxDQUN0QztJQUNJLFVBQVUsRUFBRSxNQUFNO0NBQ3JCO0FBQ0QsZ0JBQWdCO0FBQ2hCLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2IsSUFBSSxFQUFFLEVBQW9CLEVBQUUsc0JBQXNCO0lBQ2xELEtBQUssRUFBRSxXQUE4QixFQUFFLGdCQUFnQjtJQUN2RCxlQUFlLEVBQUUsRUFBRSxFQUFFLDBDQUEwQztJQUMvRCxnQkFBZ0IsRUFBRSxFQUFFLEVBQUUsaUNBQWlDO0lBQ3ZELFVBQVUsRUFBRTtRQUNSLEtBQUssRUFBRSxXQUFXO0tBQ0ksRUFBRSxvQkFBb0I7Q0FDbkQsQ0FBQyxDQUFDO0FBRUgsbUJBQW1CO0FBQ25CLFlBQVksQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDOUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxHQUFHLEVBQUUs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V0FBVztTQUMxQixDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsdUJBQXVCO0lBQ3ZCLFFBQVEsQ0FBQyxJQUFZO1FBQ2pCLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN4QyxDQUFDO0NBQ0osQ0FBQyxDQUFDLENBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNpZ25hbFN0b3JlLCB3aXRoU3RhdGUsIHdpdGhDb21wdXRlZCwgd2l0aE1ldGhvZHMsIHBhdGNoU3RhdGUgfSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7IGNsb25lRGVlcCwgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZ2V0U21hcnQsIHNldFNtYXJ0IH0gZnJvbSAnLi4vdXRpbHMvb2JqZWN0LXV0aWwnO1xuXG5cbmV4cG9ydCB0eXBlIEFYUENvbnRleHRTdGF0ZSA9ICdpbml0aWF0ZWQnIHwgJ3Jlc3RvcmVkJyB8ICdjaGFuZ2VkJyB8ICdwYXRjaCc7XG5cbmV4cG9ydCB0eXBlIEFYUENvbnRleHREYXRhID0ge1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGNsYXNzIEFYUENvbnRleHRDaGFuZ2VFdmVudCB7XG4gICAgb2xkVmFsdWU/OiBhbnk7XG4gICAgbmV3VmFsdWU/OiBhbnk7XG4gICAgcGF0aD86IHN0cmluZztcbiAgICBzdGF0ZTogQVhQQ29udGV4dFN0YXRlO1xuICAgIGRhdGE6IGFueTtcbn1cblxuZXhwb3J0IGNvbnN0IEFYUENvbnRleHRTdG9yZSA9IHNpZ25hbFN0b3JlKFxuICAgIHtcbiAgICAgICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICAgIH0sXG4gICAgLy8gSW5pdGlhbCBTdGF0ZVxuICAgIHdpdGhTdGF0ZSgoKSA9PiAoe1xuICAgICAgICBkYXRhOiB7fSBhcyBBWFBDb250ZXh0RGF0YSwgLy8gU2hhcmVkIGNvbnRleHQgZGF0YVxuICAgICAgICBzdGF0ZTogJ2luaXRpYXRlZCcgYXMgQVhQQ29udGV4dFN0YXRlLCAvLyBDdXJyZW50IHN0YXRlXG4gICAgICAgIGluaXRpYWxTbmFwc2hvdDoge30sIC8vIFNuYXBzaG90IG9mIHRoZSBmaXJzdCBpbml0aWFsaXplZCBzdGF0ZVxuICAgICAgICBwcmV2aW91c1NuYXBzaG90OiB7fSwgLy8gU25hcHNob3Qgb2YgdGhlIHByZXZpb3VzIHN0YXRlXG4gICAgICAgIGxhc3RDaGFuZ2U6IHtcbiAgICAgICAgICAgIHN0YXRlOiAnaW5pdGlhdGVkJyxcbiAgICAgICAgfSBhcyBBWFBDb250ZXh0Q2hhbmdlRXZlbnQsIC8vIExhc3QgY2hhbmdlIGV2ZW50XG4gICAgfSkpLFxuXG4gICAgLy8gQ29tcHV0ZWQgU2lnbmFsc1xuICAgIHdpdGhDb21wdXRlZCgoeyBkYXRhLCBzdGF0ZSwgbGFzdENoYW5nZSwgaW5pdGlhbFNuYXBzaG90LCBwcmV2aW91c1NuYXBzaG90IH0pID0+ICh7XG4gICAgICAgIGlzQ2hhbmdlZDogY29tcHV0ZWQoKCkgPT4gc3RhdGUoKSA9PT0gJ2NoYW5nZWQnKSxcbiAgICAgICAgaXNSZXNldDogY29tcHV0ZWQoKCkgPT4gc3RhdGUoKSA9PT0gJ3Jlc3RvcmVkJyksXG4gICAgICAgIGlzSW5pdGlhdGVkOiBjb21wdXRlZCgoKSA9PiBzdGF0ZSgpID09PSAnaW5pdGlhdGVkJyksXG4gICAgICAgIGlzRW1wdHk6IGNvbXB1dGVkKCgpID0+IE9iamVjdC5rZXlzKGRhdGEoKSkubGVuZ3RoID09PSAwKSxcbiAgICAgICAgaXNEaXJ0eTogY29tcHV0ZWQoKCkgPT4gIWlzRXF1YWwoZGF0YSgpLCBwcmV2aW91c1NuYXBzaG90KCkpKSwgXG4gICAgICAgIHNuYXBzaG90OiBjb21wdXRlZCgoKSA9PiBjbG9uZURlZXAoZGF0YSgpKSksIC8vIEN1cnJlbnQgZGF0YSBzbmFwc2hvdFxuICAgICAgICBpbml0aWFsOiBjb21wdXRlZCgoKSA9PiBjbG9uZURlZXAoaW5pdGlhbFNuYXBzaG90KCkpKSwgLy8gSW5pdGlhbCBzbmFwc2hvdFxuICAgICAgICBwcmV2aW91czogY29tcHV0ZWQoKCkgPT4gY2xvbmVEZWVwKHByZXZpb3VzU25hcHNob3QoKSkpLCAvLyBQcmV2aW91cyBzbmFwc2hvdFxuICAgICAgICBjaGFuZ2VFdmVudDogY29tcHV0ZWQoKCkgPT4gbGFzdENoYW5nZSgpKSwgLy8gUmVhY3RpdmUgbGFzdCBjaGFuZ2UgZXZlbnRcbiAgICB9KSksXG5cbiAgICAvLyBNZXRob2RzIGZvciBTdGF0ZSBNYW5hZ2VtZW50XG4gICAgd2l0aE1ldGhvZHMoKHN0b3JlKSA9PiAoe1xuICAgICAgICAvLyBVcGRhdGUgYSBzcGVjaWZpYyB2YWx1ZVxuICAgICAgICB1cGRhdGUocGF0aDogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RGF0YSA9IGNsb25lRGVlcChzdG9yZS5kYXRhKCkpO1xuICAgICAgICAgICAgY29uc3Qgb2xkVmFsdWUgPSBnZXRTbWFydChjdXJyZW50RGF0YSwgcGF0aCk7XG5cbiAgICAgICAgICAgIC8vIFNraXAgaWYgdGhlIHZhbHVlIGhhc24ndCBjaGFuZ2VkXG4gICAgICAgICAgICBpZiAoaXNFcXVhbChvbGRWYWx1ZSwgdmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHZhbHVlIGFuZCBwcmVwYXJlIHRoZSBjaGFuZ2UgZXZlbnRcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0gc2V0U21hcnQoY3VycmVudERhdGEsIHBhdGgsIHZhbHVlKTtcbiAgICAgICAgICAgIGNvbnN0IGNoYW5nZUV2ZW50OiBBWFBDb250ZXh0Q2hhbmdlRXZlbnQgPSB7XG4gICAgICAgICAgICAgICAgb2xkVmFsdWUsXG4gICAgICAgICAgICAgICAgbmV3VmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICAgICAgc3RhdGU6ICdjaGFuZ2VkJyxcbiAgICAgICAgICAgICAgICBkYXRhOiB1cGRhdGVkRGF0YSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8vIFBhdGNoIHRoZSBzdGF0ZVxuICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICAgIHByZXZpb3VzU25hcHNob3Q6IHN0b3JlLnNuYXBzaG90KCksIC8vIFNhdmUgdGhlIHByZXZpb3VzIHN0YXRlXG4gICAgICAgICAgICAgICAgZGF0YTogdXBkYXRlZERhdGEsXG4gICAgICAgICAgICAgICAgc3RhdGU6ICdjaGFuZ2VkJyxcbiAgICAgICAgICAgICAgICBsYXN0Q2hhbmdlOiBjaGFuZ2VFdmVudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIHBhdGNoKGNvbnRleHQ6IHt9KSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RGF0YSA9IGNsb25lRGVlcChzdG9yZS5kYXRhKCkpO1xuICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSB2YWx1ZSBhbmQgcHJlcGFyZSB0aGUgY2hhbmdlIGV2ZW50XG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IHsgLi4uY3VycmVudERhdGEsIC4uLmNvbnRleHQgfTtcbiAgICAgICAgICAgIGNvbnN0IGNoYW5nZUV2ZW50OiBBWFBDb250ZXh0Q2hhbmdlRXZlbnQgPSB7XG4gICAgICAgICAgICAgICAgc3RhdGU6ICdwYXRjaCcsXG4gICAgICAgICAgICAgICAgZGF0YTogdXBkYXRlZERhdGEsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvLyBQYXRjaCB0aGUgc3RhdGVcbiAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgICAgICBwcmV2aW91c1NuYXBzaG90OiBzdG9yZS5zbmFwc2hvdCgpLCAvLyBTYXZlIHRoZSBwcmV2aW91cyBzdGF0ZVxuICAgICAgICAgICAgICAgIGRhdGE6IHVwZGF0ZWREYXRhLFxuICAgICAgICAgICAgICAgIHN0YXRlOiAnY2hhbmdlZCcsXG4gICAgICAgICAgICAgICAgbGFzdENoYW5nZTogY2hhbmdlRXZlbnQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcblxuICAgICAgICAvLyBSZXNldCB0byB0aGUgaW5pdGlhbCBzdGF0ZVxuICAgICAgICByZXNldCgpIHtcbiAgICAgICAgICAgIGNvbnN0IGluaXRpYWxEYXRhID0gc3RvcmUuaW5pdGlhbCgpO1xuICAgICAgICAgICAgY29uc3QgY2hhbmdlRXZlbnQ6IEFYUENvbnRleHRDaGFuZ2VFdmVudCA9IHtcbiAgICAgICAgICAgICAgICBvbGRWYWx1ZTogY2xvbmVEZWVwKHN0b3JlLmRhdGEoKSksIC8vIEN1cnJlbnQgZGF0YSBiZWNvbWVzIG9sZCB2YWx1ZVxuICAgICAgICAgICAgICAgIG5ld1ZhbHVlOiBjbG9uZURlZXAoaW5pdGlhbERhdGEpLCAvLyBSZXNldCB0byB0aGUgaW5pdGlhbCBzdGF0ZVxuICAgICAgICAgICAgICAgIHBhdGg6ICcnLFxuICAgICAgICAgICAgICAgIHN0YXRlOiAncmVzdG9yZWQnLFxuICAgICAgICAgICAgICAgIGRhdGE6IGluaXRpYWxEYXRhLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICAgIHByZXZpb3VzU25hcHNob3Q6IHN0b3JlLnNuYXBzaG90KCksIC8vIFNhdmUgdGhlIHByZXZpb3VzIHN0YXRlXG4gICAgICAgICAgICAgICAgZGF0YTogaW5pdGlhbERhdGEsXG4gICAgICAgICAgICAgICAgc3RhdGU6ICdyZXN0b3JlZCcsXG4gICAgICAgICAgICAgICAgbGFzdENoYW5nZTogY2hhbmdlRXZlbnQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcblxuICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBzdGF0ZVxuICAgICAgICBzZXQoaW5pdGlhbERhdGE6IGFueSkge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudERhdGEgPSBzdG9yZS5kYXRhKCk7XG4gICAgICAgICAgICBpZiAoaXNFcXVhbChjdXJyZW50RGF0YSwgaW5pdGlhbERhdGEpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBTa2lwIGlmIHRoZSBjdXJyZW50IHN0YXRlIG1hdGNoZXMgdGhlIGluaXRpYWwgc3RhdGVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgY2hhbmdlRXZlbnQ6IEFYUENvbnRleHRDaGFuZ2VFdmVudCA9IHtcbiAgICAgICAgICAgICAgICBvbGRWYWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICBuZXdWYWx1ZTogY2xvbmVEZWVwKGluaXRpYWxEYXRhKSxcbiAgICAgICAgICAgICAgICBwYXRoOiAnJyxcbiAgICAgICAgICAgICAgICBzdGF0ZTogJ2luaXRpYXRlZCcsXG4gICAgICAgICAgICAgICAgZGF0YTogaW5pdGlhbERhdGEsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICAgICAgaW5pdGlhbFNuYXBzaG90OiBjbG9uZURlZXAoaW5pdGlhbERhdGEpLCAvLyBTYXZlIHRoZSBpbml0aWFsIHN0YXRlXG4gICAgICAgICAgICAgICAgcHJldmlvdXNTbmFwc2hvdDogc3RvcmUuc25hcHNob3QoKSwgLy8gU2F2ZSB0aGUgY3VycmVudCBzdGF0ZSBhcyB0aGUgcHJldmlvdXNcbiAgICAgICAgICAgICAgICBkYXRhOiBpbml0aWFsRGF0YSxcbiAgICAgICAgICAgICAgICBzdGF0ZTogJ2luaXRpYXRlZCcsXG4gICAgICAgICAgICAgICAgbGFzdENoYW5nZTogY2hhbmdlRXZlbnQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gR2V0IGEgc3BlY2lmaWMgdmFsdWVcbiAgICAgICAgZ2V0VmFsdWUocGF0aDogc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0U21hcnQoc3RvcmUuZGF0YSgpLCBwYXRoKTtcbiAgICAgICAgfSxcbiAgICB9KSlcbik7XG4iXX0=","export class AXPDataGenerator {\n static uuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (char) => {\n const random = (Math.random() * 16) | 0;\n const value = char === 'x' ? random : (random & 0x3) | 0x8;\n return value.toString(16);\n });\n }\n static number(...args) {\n let min = 0;\n let max = 100;\n if (args.length == 1)\n max = args[0];\n if (args.length == 2) {\n min = args[0];\n max = args[1];\n }\n return Math.floor(Math.random() * (max - min + 1)) + min;\n }\n static date(...args) {\n let start = new Date(2000, 0, 1);\n let end = new Date();\n if (args.length === 1) {\n start = args[0];\n }\n else if (args.length === 2) {\n start = args[0];\n end = args[1];\n }\n const startTime = start.getTime();\n const endTime = end.getTime();\n return new Date(startTime + Math.random() * (endTime - startTime));\n }\n static array(length = 5, generator) {\n return Array.from({ length }, generator);\n }\n static pick(...args) {\n if (args.length < 1) {\n throw new Error('Invalid parameters');\n }\n const items = args[0];\n const count = args[1] ?? 1;\n if (count < 1) {\n throw new Error('Count must be at least 1');\n }\n // If the count is greater than the number of items, just return a shuffled copy of the array\n if (count >= items.length) {\n return [...items].sort(() => Math.random() - 0.5);\n }\n // Shuffle the array and slice the first 'count' elements\n const shuffled = items.slice();\n for (let i = shuffled.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]]; // Swap elements\n }\n return count == 1 ? shuffled.slice(0, count)[0] : shuffled.slice(0, count);\n }\n static string(length = 10) {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n return Array.from({ length }, () => chars.charAt(Math.floor(Math.random() * chars.length))).join('');\n }\n static boolean() {\n return Math.random() >= 0.5;\n }\n static item(array = []) {\n return array.length > 0 ? array[Math.floor(Math.random() * array.length)] : undefined;\n }\n static color(format = 'hex') {\n // Generate HSL values with safe ranges for good contrast\n const h = Math.floor(Math.random() * 360);\n const s = Math.floor(Math.random() * 20) + 60; // 60% - 80%\n const l = Math.floor(Math.random() * 20) + 40; // 40% - 60%\n if (format === 'hsl') {\n return `hsl(${h}, ${s}%, ${l}%)`;\n }\n // Convert HSL to RGB\n const { r, g, b } = this.hslToRgb(h, s / 100, l / 100);\n if (format === 'rgb') {\n return `rgb(${r}, ${g}, ${b})`;\n }\n // Convert RGB to HEX\n const toHex = (val) => val.toString(16).padStart(2, '0');\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n }\n //TODO: move or read from utils\n static hslToRgb(h, s, l) {\n const c = (1 - Math.abs(2 * l - 1)) * s;\n const x = c * (1 - Math.abs((h / 60) % 2 - 1));\n const m = l - c / 2;\n let r = 0, g = 0, b = 0;\n if (h < 60)\n [r, g, b] = [c, x, 0];\n else if (h < 120)\n [r, g, b] = [x, c, 0];\n else if (h < 180)\n [r, g, b] = [0, c, x];\n else if (h < 240)\n [r, g, b] = [0, x, c];\n else if (h < 300)\n [r, g, b] = [x, 0, c];\n else\n [r, g, b] = [c, 0, x];\n return {\n r: Math.round((r + m) * 255),\n g: Math.round((g + m) * 255),\n b: Math.round((b + m) * 255)\n };\n }\n static alphanumeric(length = 10) {\n const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\n return Array.from({ length }, () => chars.charAt(Math.floor(Math.random() * chars.length))).join('');\n }\n static alphabet(length = 10) {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\n return Array.from({ length }, () => chars.charAt(Math.floor(Math.random() * chars.length))).join('');\n }\n static phone() {\n const areaCode = this.number(100, 999);\n const exchangeCode = this.number(100, 999);\n const lineNumber = this.number(1000, 9999);\n return `${areaCode}-${exchangeCode}-${lineNumber}`;\n }\n static firstName() {\n const firstNames = ['John', 'Allen', 'Jak', 'Rose', 'Kate', 'Liam', 'Olivia', 'Noah', 'Emma', 'Ava'];\n return this.pick(firstNames);\n }\n static lastName() {\n const lastNames = ['Gates', 'Jonsen', 'Smith', 'Ford', 'Jakson', 'Brown', 'Johnson', 'Williams', 'Jones', 'Garcia'];\n return this.pick(lastNames);\n }\n static email(...args) {\n const domains = ['gmail.com', 'yahoo.com', 'outlook.com', 'example.com'];\n const domain = this.pick(domains);\n const separator = this.pick(['.', '_', '']);\n const randomSuffix = this.boolean() ? this.number(1, 99).toString() : '';\n if (args.length === 2) {\n const firstName = args[0].toLowerCase();\n const lastName = args[1].toLowerCase();\n return `${firstName}${separator}${lastName}${randomSuffix}@${domain}`;\n }\n else {\n const firstName = this.firstName().toLowerCase();\n const lastName = this.lastName().toLowerCase();\n return `${firstName}${separator}${lastName}${randomSuffix}@${domain}`;\n }\n }\n static country() {\n const countries = ['USA', 'Canada', 'Mexico', 'Germany', 'France', 'Japan', 'Australia'];\n return this.pick(countries);\n }\n static city() {\n const cities = ['Los Angeles', 'Toronto', 'Vancouver', 'Berlin', 'Paris', 'Tokyo', 'Sydney'];\n return this.pick(cities);\n }\n static state() {\n const states = ['NY', 'CA', 'TX', 'ON', 'BC', 'NSW', 'BER', 'IDF', 'TYO'];\n return this.pick(states);\n }\n static address() {\n const streets = ['Main St', 'High St', 'Maple Ave', 'Oak St', 'Pine St', 'Cedar St'];\n const streetNumber = this.number(100, 9999);\n const street = this.pick(streets);\n const city = this.city();\n const state = this.state();\n const zip = this.number(10000, 99999);\n const country = this.country();\n return `${streetNumber} ${street}, ${city}, ${state} ${zip}, ${country}`;\n }\n static avatar() {\n return `https://avatar.iran.liara.run/public/${this.pick([35, 22, 16, 6, 31])}`;\n //return `https://i.pravatar.cc/300?u=${this.uuid()}`;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1nZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2NvcmUvc3JjL2xpYi9kYXRhL2RhdGEtZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsTUFBTSxDQUFDLElBQUk7UUFDVCxPQUFPLHNDQUFzQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN0RSxNQUFNLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDeEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDM0QsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUlELE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFjO1FBQzdCLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNaLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNkLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDO1lBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDckIsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNkLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FB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QUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFPO1FBQ1osTUFBTSxPQUFPLEdBQUcsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3JGLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzVDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN0QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDL0IsT0FBTyxHQUFHLFlBQVksSUFBSSxNQUFNLEtBQUssSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEtBQUssT0FBTyxFQUFFLENBQUM7SUFDM0UsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNO1FBQ1gsT0FBTyx3Q0FBd0MsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDaEYsc0RBQXNEO0lBQ3hELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0IGNsYXNzIEFYUERhdGFHZW5lcmF0b3Ige1xuICBzdGF0aWMgdXVpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiAneHh4eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4Jy5yZXBsYWNlKC9beHldL2csIChjaGFyKSA9PiB7XG4gICAgICBjb25zdCByYW5kb20gPSAoTWF0aC5yYW5kb20oKSAqIDE2KSB8IDA7XG4gICAgICBjb25zdCB2YWx1ZSA9IGNoYXIgPT09ICd4JyA/IHJhbmRvbSA6IChyYW5kb20gJiAweDMpIHwgMHg4O1xuICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKDE2KTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBudW1iZXIobWF4OiBudW1iZXIpOiBudW1iZXI7XG4gIHN0YXRpYyBudW1iZXIobWluOiBudW1iZXIsIG1heDogbnVtYmVyKTogbnVtYmVyO1xuICBzdGF0aWMgbnVtYmVyKC4uLmFyZ3M6IG51bWJlcltdKTogbnVtYmVyIHtcbiAgICBsZXQgbWluID0gMDtcbiAgICBsZXQgbWF4ID0gMTAwO1xuICAgIGlmIChhcmdzLmxlbmd0aCA9PSAxKSBtYXggPSBhcmdzWzBdO1xuICAgIGlmIChhcmdzLmxlbmd0aCA9PSAyKSB7XG4gICAgICBtaW4gPSBhcmdzWzBdO1xuICAgICAgbWF4ID0gYXJnc1sxXTtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4gKyAxKSkgKyBtaW47XG4gIH1cblxuICBzdGF0aWMgZGF0ZSgpOiBEYXRlO1xuICBzdGF0aWMgZGF0ZShzdGFydDogRGF0ZSk6IERhdGU7XG4gIHN0YXRpYyBkYXRlKHN0YXJ0OiBEYXRlLCBlbmQ6IERhdGUpOiBEYXRlO1xuICBzdGF0aWMgZGF0ZSguLi5hcmdzOiBhbnlbXSk6IERhdGUge1xuICAgIGxldCBzdGFydCA9IG5ldyBEYXRlKDIwMDAsIDAsIDEpO1xuICAgIGxldCBlbmQgPSBuZXcgRGF0ZSgpO1xuXG4gICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICBzdGFydCA9IGFyZ3NbMF07XG4gICAgfSBlbHNlIGlmIChhcmdzLmxlbmd0aCA9PT0gMikge1xuICAgICAgc3RhcnQgPSBhcmdzWzBdO1xuICAgICAgZW5kID0gYXJnc1sxXTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFydFRpbWUgPSBzdGFydC5nZXRUaW1lKCk7XG4gICAgY29uc3QgZW5kVGltZSA9IGVuZC5nZXRUaW1lKCk7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHN0YXJ0VGltZSArIE1hdGgucmFuZG9tKCkgKiAoZW5kVGltZSAtIHN0YXJ0VGltZSkpO1xuICB9XG5cbiAgc3RhdGljIGFycmF5PFQ+KGxlbmd0aDogbnVtYmVyID0gNSwgZ2VuZXJhdG9yOiAoKSA9PiBUKTogVFtdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aCB9LCBnZW5lcmF0b3IpO1xuICB9XG5cbiAgc3RhdGljIHBpY2s8VD4oaXRlbXM6IFRbXSk6IFQ7XG4gIHN0YXRpYyBwaWNrPFQ+KGl0ZW1zOiBUW10sIGNvdW50OiBudW1iZXIpOiBUW107XG4gIHN0YXRpYyBwaWNrPFQ+KC4uLmFyZ3M6IGFueVtdKTogVCB8IFRbXSB7XG4gICAgaWYgKGFyZ3MubGVuZ3RoIDwgMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHBhcmFtZXRlcnMnKTtcbiAgICB9XG4gICAgY29uc3QgaXRlbXM6IFRbXSA9IGFyZ3NbMF07XG4gICAgY29uc3QgY291bnQ6IG51bWJlciA9IGFyZ3NbMV0gPz8gMTtcbiAgICBpZiAoY291bnQgPCAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdW50IG11c3QgYmUgYXQgbGVhc3QgMScpO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSBjb3VudCBpcyBncmVhdGVyIHRoYW4gdGhlIG51bWJlciBvZiBpdGVtcywganVzdCByZXR1cm4gYSBzaHVmZmxlZCBjb3B5IG9mIHRoZSBhcnJheVxuICAgIGlmIChjb3VudCA+PSBpdGVtcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBbLi4uaXRlbXNdLnNvcnQoKCkgPT4gTWF0aC5yYW5kb20oKSAtIDAuNSk7XG4gICAgfVxuXG4gICAgLy8gU2h1ZmZsZSB0aGUgYXJyYXkgYW5kIHNsaWNlIHRoZSBmaXJzdCAnY291bnQnIGVsZW1lbnRzXG4gICAgY29uc3Qgc2h1ZmZsZWQgPSBpdGVtcy5zbGljZSgpO1xuICAgIGZvciAobGV0IGkgPSBzaHVmZmxlZC5sZW5ndGggLSAxOyBpID4gMDsgaS0tKSB7XG4gICAgICBjb25zdCBqID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKGkgKyAxKSk7XG4gICAgICBbc2h1ZmZsZWRbaV0sIHNodWZmbGVkW2pdXSA9IFtzaHVmZmxlZFtqXSwgc2h1ZmZsZWRbaV1dOyAvLyBTd2FwIGVsZW1lbnRzXG4gICAgfVxuICAgIHJldHVybiBjb3VudCA9PSAxID8gc2h1ZmZsZWQuc2xpY2UoMCwgY291bnQpWzBdIDogc2h1ZmZsZWQuc2xpY2UoMCwgY291bnQpO1xuICB9XG5cbiAgc3RhdGljIHN0cmluZyhsZW5ndGg6IG51bWJlciA9IDEwKTogc3RyaW5nIHtcbiAgICBjb25zdCBjaGFycyA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSc7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGggfSwgKCkgPT4gY2hhcnMuY2hhckF0KE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGNoYXJzLmxlbmd0aCkpKS5qb2luKCcnKTtcbiAgfVxuXG4gIHN0YXRpYyBib29sZWFuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBNYXRoLnJhbmRvbSgpID49IDAuNTtcbiAgfVxuXG4gIHN0YXRpYyBpdGVtPFQ+KGFycmF5OiBUW10gPSBbXSk6IFQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBhcnJheS5sZW5ndGggPiAwID8gYXJyYXlbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogYXJyYXkubGVuZ3RoKV0gOiB1bmRlZmluZWQ7XG4gIH1cblxuICBzdGF0aWMgY29sb3IoZm9ybWF0OiAnaHNsJyB8ICdyZ2InIHwgJ2hleCcgPSAnaGV4Jyk6IHN0cmluZyB7XG4gICAgLy8gR2VuZXJhdGUgSFNMIHZhbHVlcyB3aXRoIHNhZmUgcmFuZ2VzIGZvciBnb29kIGNvbnRyYXN0XG4gICAgY29uc3QgaCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDM2MCk7XG4gICAgY29uc3QgcyA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDIwKSArIDYwOyAvLyA2MCUgLSA4MCVcbiAgICBjb25zdCBsID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMjApICsgNDA7IC8vIDQwJSAtIDYwJVxuXG4gICAgaWYgKGZvcm1hdCA9PT0gJ2hzbCcpIHtcbiAgICAgIHJldHVybiBgaHNsKCR7aH0sICR7c30lLCAke2x9JSlgO1xuICAgIH1cblxuICAgIC8vIENvbnZlcnQgSFNMIHRvIFJHQlxuICAgIGNvbnN0IHsgciwgZywgYiB9ID0gdGhpcy5oc2xUb1JnYihoLCBzIC8gMTAwLCBsIC8gMTAwKTtcblxuICAgIGlmIChmb3JtYXQgPT09ICdyZ2InKSB7XG4gICAgICByZXR1cm4gYHJnYigke3J9LCAke2d9LCAke2J9KWA7XG4gICAgfVxuXG4gICAgLy8gQ29udmVydCBSR0IgdG8gSEVYXG4gICAgY29uc3QgdG9IZXggPSAodmFsOiBudW1iZXIpID0+IHZhbC50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKTtcbiAgICByZXR1cm4gYCMke3RvSGV4KHIpfSR7dG9IZXgoZyl9JHt0b0hleChiKX1gO1xuICB9XG5cbiAgLy9UT0RPOiBtb3ZlIG9yIHJlYWQgZnJvbSB1dGlsc1xuICBwcml2YXRlIHN0YXRpYyBoc2xUb1JnYihoOiBudW1iZXIsIHM6IG51bWJlciwgbDogbnVtYmVyKTogeyByOiBudW1iZXI7IGc6IG51bWJlcjsgYjogbnVtYmVyIH0ge1xuICAgIGNvbnN0IGMgPSAoMSAtIE1hdGguYWJzKDIgKiBsIC0gMSkpICogcztcbiAgICBjb25zdCB4ID0gYyAqICgxIC0gTWF0aC5hYnMoKGggLyA2MCkgJSAyIC0gMSkpO1xuICAgIGNvbnN0IG0gPSBsIC0gYyAvIDI7XG4gICAgbGV0IHIgPSAwLCBnID0gMCwgYiA9IDA7XG5cbiAgICBpZiAoaCA8IDYwKSBbciwgZywgYl0gPSBbYywgeCwgMF07XG4gICAgZWxzZSBpZiAoaCA8IDEyMCkgW3IsIGcsIGJdID0gW3gsIGMsIDBdO1xuICAgIGVsc2UgaWYgKGggPCAxODApIFtyLCBnLCBiXSA9IFswLCBjLCB4XTtcbiAgICBlbHNlIGlmIChoIDwgMjQwKSBbciwgZywgYl0gPSBbMCwgeCwgY107XG4gICAgZWxzZSBpZiAoaCA8IDMwMCkgW3IsIGcsIGJdID0gW3gsIDAsIGNdO1xuICAgIGVsc2VbciwgZywgYl0gPSBbYywgMCwgeF07XG5cbiAgICByZXR1cm4ge1xuICAgICAgcjogTWF0aC5yb3VuZCgociArIG0pICogMjU1KSxcbiAgICAgIGc6IE1hdGgucm91bmQoKGcgKyBtKSAqIDI1NSksXG4gICAgICBiOiBNYXRoLnJvdW5kKChiICsgbSkgKiAyNTUpXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBhbHBoYW51bWVyaWMobGVuZ3RoOiBudW1iZXIgPSAxMCk6IHN0cmluZyB7XG4gICAgY29uc3QgY2hhcnMgPSAnMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonO1xuICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoIH0sICgpID0+IGNoYXJzLmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFycy5sZW5ndGgpKSkuam9pbignJyk7XG4gIH1cbiAgc3RhdGljIGFscGhhYmV0KGxlbmd0aDogbnVtYmVyID0gMTApOiBzdHJpbmcge1xuICAgIGNvbnN0IGNoYXJzID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonO1xuICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoIH0sICgpID0+IGNoYXJzLmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFycy5sZW5ndGgpKSkuam9pbignJyk7XG4gIH1cblxuICBzdGF0aWMgcGhvbmUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBhcmVhQ29kZSA9IHRoaXMubnVtYmVyKDEwMCwgOTk5KTtcbiAgICBjb25zdCBleGNoYW5nZUNvZGUgPSB0aGlzLm51bWJlcigxMDAsIDk5OSk7XG4gICAgY29uc3QgbGluZU51bWJlciA9IHRoaXMubnVtYmVyKDEwMDAsIDk5OTkpO1xuICAgIHJldHVybiBgJHthcmVhQ29kZX0tJHtleGNoYW5nZUNvZGV9LSR7bGluZU51bWJlcn1gO1xuICB9XG5cbiAgc3RhdGljIGZpcnN0TmFtZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGZpcnN0TmFtZXMgPSBbJ0pvaG4nLCAnQWxsZW4nLCAnSmFrJywgJ1Jvc2UnLCAnS2F0ZScsICdMaWFtJywgJ09saXZpYScsICdOb2FoJywgJ0VtbWEnLCAnQXZhJ107XG4gICAgcmV0dXJuIHRoaXMucGljayhmaXJzdE5hbWVzKTtcbiAgfVxuXG4gIHN0YXRpYyBsYXN0TmFtZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGxhc3ROYW1lcyA9IFsnR2F0ZXMnLCAnSm9uc2VuJywgJ1NtaXRoJywgJ0ZvcmQnLCAnSmFrc29uJywgJ0Jyb3duJywgJ0pvaG5zb24nLCAnV2lsbGlhbXMnLCAnSm9uZXMnLCAnR2FyY2lhJ107XG4gICAgcmV0dXJuIHRoaXMucGljayhsYXN0TmFtZXMpO1xuICB9XG5cbiAgc3RhdGljIGVtYWlsKCk6IHN0cmluZztcbiAgc3RhdGljIGVtYWlsKGZpcnN0TmFtZTogc3RyaW5nLCBsYXN0TmFtZTogc3RyaW5nKTogc3RyaW5nO1xuICBzdGF0aWMgZW1haWwoLi4uYXJnczogYW55W10pOiBzdHJpbmcge1xuICAgIGNvbnN0IGRvbWFpbnMgPSBbJ2dtYWlsLmNvbScsICd5YWhvby5jb20nLCAnb3V0bG9vay5jb20nLCAnZXhhbXBsZS5jb20nXTtcbiAgICBjb25zdCBkb21haW4gPSB0aGlzLnBpY2soZG9tYWlucyk7XG4gICAgY29uc3Qgc2VwYXJhdG9yID0gdGhpcy5waWNrKFsnLicsICdfJywgJyddKTtcbiAgICBjb25zdCByYW5kb21TdWZmaXggPSB0aGlzLmJvb2xlYW4oKSA/IHRoaXMubnVtYmVyKDEsIDk5KS50b1N0cmluZygpIDogJyc7XG5cbiAgICBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgIGNvbnN0IGZpcnN0TmFtZSA9IGFyZ3NbMF0udG9Mb3dlckNhc2UoKTtcbiAgICAgIGNvbnN0IGxhc3ROYW1lID0gYXJnc1sxXS50b0xvd2VyQ2FzZSgpO1xuICAgICAgcmV0dXJuIGAke2ZpcnN0TmFtZX0ke3NlcGFyYXRvcn0ke2xhc3ROYW1lfSR7cmFuZG9tU3VmZml4fUAke2RvbWFpbn1gO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBmaXJzdE5hbWUgPSB0aGlzLmZpcnN0TmFtZSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgICBjb25zdCBsYXN0TmFtZSA9IHRoaXMubGFzdE5hbWUoKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgcmV0dXJuIGAke2ZpcnN0TmFtZX0ke3NlcGFyYXRvcn0ke2xhc3ROYW1lfSR7cmFuZG9tU3VmZml4fUAke2RvbWFpbn1gO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBjb3VudHJ5KCk6IHN0cmluZyB7XG4gICAgY29uc3QgY291bnRyaWVzID0gWydVU0EnLCAnQ2FuYWRhJywgJ01leGljbycsICdHZXJtYW55JywgJ0ZyYW5jZScsICdKYXBhbicsICdBdXN0cmFsaWEnXTtcbiAgICByZXR1cm4gdGhpcy5waWNrKGNvdW50cmllcyk7XG4gIH1cblxuICBzdGF0aWMgY2l0eSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNpdGllcyA9IFsnTG9zIEFuZ2VsZXMnLCAnVG9yb250bycsICdWYW5jb3V2ZXInLCAnQmVybGluJywgJ1BhcmlzJywgJ1Rva3lvJywgJ1N5ZG5leSddO1xuICAgIHJldHVybiB0aGlzLnBpY2soY2l0aWVzKTtcbiAgfVxuXG4gIHN0YXRpYyBzdGF0ZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN0YXRlcyA9IFsnTlknLCAnQ0EnLCAnVFgnLCAnT04nLCAnQkMnLCAnTlNXJywgJ0JFUicsICdJREYnLCAnVFlPJ107XG4gICAgcmV0dXJuIHRoaXMucGljayhzdGF0ZXMpO1xuICB9XG5cbiAgc3RhdGljIGFkZHJlc3MoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdHJlZXRzID0gWydNYWluIFN0JywgJ0hpZ2ggU3QnLCAnTWFwbGUgQXZlJywgJ09hayBTdCcsICdQaW5lIFN0JywgJ0NlZGFyIFN0J107XG4gICAgY29uc3Qgc3RyZWV0TnVtYmVyID0gdGhpcy5udW1iZXIoMTAwLCA5OTk5KTtcbiAgICBjb25zdCBzdHJlZXQgPSB0aGlzLnBpY2soc3RyZWV0cyk7XG4gICAgY29uc3QgY2l0eSA9IHRoaXMuY2l0eSgpO1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZSgpO1xuICAgIGNvbnN0IHppcCA9IHRoaXMubnVtYmVyKDEwMDAwLCA5OTk5OSk7XG4gICAgY29uc3QgY291bnRyeSA9IHRoaXMuY291bnRyeSgpO1xuICAgIHJldHVybiBgJHtzdHJlZXROdW1iZXJ9ICR7c3RyZWV0fSwgJHtjaXR5fSwgJHtzdGF0ZX0gJHt6aXB9LCAke2NvdW50cnl9YDtcbiAgfVxuXG4gIHN0YXRpYyBhdmF0YXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYGh0dHBzOi8vYXZhdGFyLmlyYW4ubGlhcmEucnVuL3B1YmxpYy8ke3RoaXMucGljayhbMzUsIDIyLCAxNiwgNiwgMzFdKX1gO1xuICAgIC8vcmV0dXJuIGBodHRwczovL2kucHJhdmF0YXIuY2MvMzAwP3U9JHt0aGlzLnV1aWQoKX1gO1xuICB9XG59XG4iXX0=","import { extractValue } from \"../utils/object-util\";\nexport function objectKeyValueTransforms(keyName) {\n return {\n getter: (value) => {\n return extractValue(value, keyName);\n },\n setter: (value) => {\n return extractValue(value, keyName);\n },\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtdHJhbnNmb3JtZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2NvcmUvc3JjL2xpYi9kYXRhL3ZhbHVlLXRyYW5zZm9ybWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQVFwRCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsT0FBZTtJQUNwRCxPQUFPO1FBQ0gsTUFBTSxFQUFFLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDbkIsT0FBTyxZQUFZLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFDRCxNQUFNLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUNuQixPQUFPLFlBQVksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDeEMsQ0FBQztLQUNKLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXh0cmFjdFZhbHVlIH0gZnJvbSBcIi4uL3V0aWxzL29iamVjdC11dGlsXCI7XG5leHBvcnQgdHlwZSBBWFBWYWx1ZVRyYW5zZm9ybWVyRnVuY3Rpb24gPSAodmFsdWU6IGFueSkgPT4gYW55O1xuXG5leHBvcnQgdHlwZSBBWFBWYWx1ZVRyYW5zZm9ybWVyRnVuY3Rpb25zID0ge1xuICAgIGdldHRlcj86IEFYUFZhbHVlVHJhbnNmb3JtZXJGdW5jdGlvbjtcbiAgICBzZXR0ZXI/OiBBWFBWYWx1ZVRyYW5zZm9ybWVyRnVuY3Rpb247XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gb2JqZWN0S2V5VmFsdWVUcmFuc2Zvcm1zKGtleU5hbWU6IHN0cmluZyk6IEFYUFZhbHVlVHJhbnNmb3JtZXJGdW5jdGlvbnMge1xuICAgIHJldHVybiB7XG4gICAgICAgIGdldHRlcjogKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBleHRyYWN0VmFsdWUodmFsdWUsIGtleU5hbWUpO1xuICAgICAgICB9LFxuICAgICAgICBzZXR0ZXI6ICh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZXh0cmFjdFZhbHVlKHZhbHVlLCBrZXlOYW1lKTtcbiAgICAgICAgfSxcbiAgICB9O1xufSJdfQ==","//#region ---- Imports ----\nimport { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n//#endregion\n//#region ---- Provider Registry Service ----\n/**\n * Registry service for dynamically loaded module providers.\n * Stores provider instances that are loaded conditionally based on access control.\n */\nexport class AXPModuleProviderRegistry {\n constructor() {\n //#region ---- Fields ----\n this.permissionProviders = [];\n this.menuProviders = [];\n this.entityProviders = [];\n this.settingProviders = [];\n this.searchProviders = [];\n this.featureProviders = [];\n this.datasourceProviders = [];\n }\n //#endregion\n //#region ---- Public Methods ----\n /**\n * Register a permission provider.\n */\n registerPermissionProvider(provider) {\n this.permissionProviders.push(provider);\n }\n /**\n * Get all registered permission providers.\n */\n getPermissionProviders() {\n return [...this.permissionProviders];\n }\n /**\n * Register a menu provider.\n */\n registerMenuProvider(provider) {\n this.menuProviders.push(provider);\n }\n /**\n * Get all registered menu providers.\n */\n getMenuProviders() {\n return [...this.menuProviders];\n }\n /**\n * Register an entity provider.\n */\n registerEntityProvider(provider) {\n this.entityProviders.push(provider);\n }\n /**\n * Get all registered entity providers.\n */\n getEntityProviders() {\n return [...this.entityProviders];\n }\n /**\n * Register a settings provider.\n */\n registerSettingProvider(provider) {\n this.settingProviders.push(provider);\n }\n /**\n * Get all registered settings providers.\n */\n getSettingProviders() {\n return [...this.settingProviders];\n }\n /**\n * Register a search provider.\n */\n registerSearchProvider(provider) {\n this.searchProviders.push(provider);\n }\n /**\n * Get all registered search providers.\n */\n getSearchProviders() {\n return [...this.searchProviders];\n }\n /**\n * Register a feature provider.\n */\n registerFeatureProvider(provider) {\n this.featureProviders.push(provider);\n }\n /**\n * Get all registered feature providers.\n */\n getFeatureProviders() {\n return [...this.featureProviders];\n }\n /**\n * Register a datasource provider.\n */\n registerDatasourceProvider(provider) {\n this.datasourceProviders.push(provider);\n }\n /**\n * Get all registered datasource providers.\n */\n getDatasourceProviders() {\n return [...this.datasourceProviders];\n }\n /**\n * Clear all registered providers.\n * Useful for testing or re-initialization.\n */\n clear() {\n this.permissionProviders.length = 0;\n this.menuProviders.length = 0;\n this.entityProviders.length = 0;\n this.settingProviders.length = 0;\n this.searchProviders.length = 0;\n this.featureProviders.length = 0;\n this.datasourceProviders.length = 0;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPModuleProviderRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPModuleProviderRegistry, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPModuleProviderRegistry, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXItcmVnaXN0cnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL21vZHVsZS1tYW5pZmVzdC9wcm92aWRlci1yZWdpc3RyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUUvQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVczQyxZQUFZO0FBRVosaURBQWlEO0FBRWpEOzs7R0FHRztBQUVILE1BQU0sT0FBTyx5QkFBeUI7SUFEdEM7UUFFRSw4QkFBOEI7UUFFYix3QkFBbUIsR0FBdUMsRUFBRSxDQUFDO1FBQzdELGtCQUFhLEdBQXVCLEVBQUUsQ0FBQztRQUN2QyxvQkFBZSxHQUFnQyxFQUFFLENBQUM7UUFDbEQscUJBQWdCLEdBQW9DLEVBQUUsQ0FBQztRQUN2RCxvQkFBZSxHQUFnQyxFQUFFLENBQUM7UUFDbEQscUJBQWdCLEdBQW1DLEVBQUUsQ0FBQztRQUN0RCx3QkFBbUIsR0FBc0MsRUFBRSxDQUFDO0tBdUg5RTtJQXJIQyxZQUFZO0lBRVosc0NBQXNDO0lBRXRDOztPQUVHO0lBQ0gsMEJBQTBCLENBQUMsUUFBMEM7UUFDbkUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxzQkFBc0I7UUFDcEIsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsb0JBQW9CLENBQUMsUUFBMEI7UUFDN0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZ0JBQWdCO1FBQ2QsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7T0FFRztJQUNILHNCQUFzQixDQUFDLFFBQW1DO1FBQ3hELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7T0FFRztJQUNILGtCQUFrQjtRQUNoQixPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsdUJBQXVCLENBQUMsUUFBdUM7UUFDN0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUI7UUFDakIsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsc0JBQXNCLENBQUMsUUFBbUM7UUFDeEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsa0JBQWtCO1FBQ2hCLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCx1QkFBdUIsQ0FBQyxRQUFzQztRQUM1RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7T0FFRztJQUNILG1CQUFtQjtRQUNqQixPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCwwQkFBMEIsQ0FBQyxRQUF5QztRQUNsRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7T0FFRztJQUNILHNCQUFzQjtRQUNwQixPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSztRQUNILElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7K0dBN0hVLHlCQUF5QjttSEFBekIseUJBQXlCLGNBRFosTUFBTTs7NEZBQ25CLHlCQUF5QjtrQkFEckMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvLyNyZWdpb24gLS0tLSAgIEltcG9ydHMgICAtLS0tXG5cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUERhdGFTb3VyY2VEZWZpbml0aW9uUHJvdmlkZXIgfSBmcm9tICcuLi9kYXRhL2RhdGFzb3VyY2UtZGVmaW5pdGlvbi1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFYUEZlYXR1cmVEZWZpbml0aW9uUHJvdmlkZXIgfSBmcm9tICcuL2ZlYXR1cmUtZGVmaW5pdGlvbi5wcm92aWRlcic7XG5pbXBvcnQge1xuICBBWFBJUGVybWlzc2lvbkRlZmluaXRpb25Qcm92aWRlcixcbiAgQVhQSU1lbnVQcm92aWRlcixcbiAgQVhQSVNldHRpbmdEZWZpbml0aW9uUHJvdmlkZXIsXG4gIEFYUElTZWFyY2hDb21tYW5kUHJvdmlkZXIsXG4gIEFYSUVudGl0eURlZmluaXRpb25Mb2FkZXIsXG59IGZyb20gJy4vcHJvdmlkZXItaW50ZXJmYWNlcyc7XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIFByb3ZpZGVyIFJlZ2lzdHJ5IFNlcnZpY2UgICAtLS0tXG5cbi8qKlxuICogUmVnaXN0cnkgc2VydmljZSBmb3IgZHluYW1pY2FsbHkgbG9hZGVkIG1vZHVsZSBwcm92aWRlcnMuXG4gKiBTdG9yZXMgcHJvdmlkZXIgaW5zdGFuY2VzIHRoYXQgYXJlIGxvYWRlZCBjb25kaXRpb25hbGx5IGJhc2VkIG9uIGFjY2VzcyBjb250cm9sLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFYUE1vZHVsZVByb3ZpZGVyUmVnaXN0cnkge1xuICAvLyNyZWdpb24gLS0tLSAgIEZpZWxkcyAgIC0tLS1cblxuICBwcml2YXRlIHJlYWRvbmx5IHBlcm1pc3Npb25Qcm92aWRlcnM6IEFYUElQZXJtaXNzaW9uRGVmaW5pdGlvblByb3ZpZGVyW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBtZW51UHJvdmlkZXJzOiBBWFBJTWVudVByb3ZpZGVyW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBlbnRpdHlQcm92aWRlcnM6IEFYSUVudGl0eURlZmluaXRpb25Mb2FkZXJbXSA9IFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IHNldHRpbmdQcm92aWRlcnM6IEFYUElTZXR0aW5nRGVmaW5pdGlvblByb3ZpZGVyW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZWFyY2hQcm92aWRlcnM6IEFYUElTZWFyY2hDb21tYW5kUHJvdmlkZXJbXSA9IFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IGZlYXR1cmVQcm92aWRlcnM6IEFYUEZlYXR1cmVEZWZpbml0aW9uUHJvdmlkZXJbXSA9IFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IGRhdGFzb3VyY2VQcm92aWRlcnM6IEFYUERhdGFTb3VyY2VEZWZpbml0aW9uUHJvdmlkZXJbXSA9IFtdO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgUHVibGljIE1ldGhvZHMgICAtLS0tXG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGEgcGVybWlzc2lvbiBwcm92aWRlci5cbiAgICovXG4gIHJlZ2lzdGVyUGVybWlzc2lvblByb3ZpZGVyKHByb3ZpZGVyOiBBWFBJUGVybWlzc2lvbkRlZmluaXRpb25Qcm92aWRlcik6IHZvaWQge1xuICAgIHRoaXMucGVybWlzc2lvblByb3ZpZGVycy5wdXNoKHByb3ZpZGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWxsIHJlZ2lzdGVyZWQgcGVybWlzc2lvbiBwcm92aWRlcnMuXG4gICAqL1xuICBnZXRQZXJtaXNzaW9uUHJvdmlkZXJzKCk6IEFYUElQZXJtaXNzaW9uRGVmaW5pdGlvblByb3ZpZGVyW10ge1xuICAgIHJldHVybiBbLi4udGhpcy5wZXJtaXNzaW9uUHJvdmlkZXJzXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIG1lbnUgcHJvdmlkZXIuXG4gICAqL1xuICByZWdpc3Rlck1lbnVQcm92aWRlcihwcm92aWRlcjogQVhQSU1lbnVQcm92aWRlcik6IHZvaWQge1xuICAgIHRoaXMubWVudVByb3ZpZGVycy5wdXNoKHByb3ZpZGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWxsIHJlZ2lzdGVyZWQgbWVudSBwcm92aWRlcnMuXG4gICAqL1xuICBnZXRNZW51UHJvdmlkZXJzKCk6IEFYUElNZW51UHJvdmlkZXJbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLm1lbnVQcm92aWRlcnNdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGFuIGVudGl0eSBwcm92aWRlci5cbiAgICovXG4gIHJlZ2lzdGVyRW50aXR5UHJvdmlkZXIocHJvdmlkZXI6IEFYSUVudGl0eURlZmluaXRpb25Mb2FkZXIpOiB2b2lkIHtcbiAgICB0aGlzLmVudGl0eVByb3ZpZGVycy5wdXNoKHByb3ZpZGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWxsIHJlZ2lzdGVyZWQgZW50aXR5IHByb3ZpZGVycy5cbiAgICovXG4gIGdldEVudGl0eVByb3ZpZGVycygpOiBBWElFbnRpdHlEZWZpbml0aW9uTG9hZGVyW10ge1xuICAgIHJldHVybiBbLi4udGhpcy5lbnRpdHlQcm92aWRlcnNdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGEgc2V0dGluZ3MgcHJvdmlkZXIuXG4gICAqL1xuICByZWdpc3RlclNldHRpbmdQcm92aWRlcihwcm92aWRlcjogQVhQSVNldHRpbmdEZWZpbml0aW9uUHJvdmlkZXIpOiB2b2lkIHtcbiAgICB0aGlzLnNldHRpbmdQcm92aWRlcnMucHVzaChwcm92aWRlcik7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFsbCByZWdpc3RlcmVkIHNldHRpbmdzIHByb3ZpZGVycy5cbiAgICovXG4gIGdldFNldHRpbmdQcm92aWRlcnMoKTogQVhQSVNldHRpbmdEZWZpbml0aW9uUHJvdmlkZXJbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLnNldHRpbmdQcm92aWRlcnNdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGEgc2VhcmNoIHByb3ZpZGVyLlxuICAgKi9cbiAgcmVnaXN0ZXJTZWFyY2hQcm92aWRlcihwcm92aWRlcjogQVhQSVNlYXJjaENvbW1hbmRQcm92aWRlcik6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoUHJvdmlkZXJzLnB1c2gocHJvdmlkZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbGwgcmVnaXN0ZXJlZCBzZWFyY2ggcHJvdmlkZXJzLlxuICAgKi9cbiAgZ2V0U2VhcmNoUHJvdmlkZXJzKCk6IEFYUElTZWFyY2hDb21tYW5kUHJvdmlkZXJbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLnNlYXJjaFByb3ZpZGVyc107XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgYSBmZWF0dXJlIHByb3ZpZGVyLlxuICAgKi9cbiAgcmVnaXN0ZXJGZWF0dXJlUHJvdmlkZXIocHJvdmlkZXI6IEFYUEZlYXR1cmVEZWZpbml0aW9uUHJvdmlkZXIpOiB2b2lkIHtcbiAgICB0aGlzLmZlYXR1cmVQcm92aWRlcnMucHVzaChwcm92aWRlcik7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFsbCByZWdpc3RlcmVkIGZlYXR1cmUgcHJvdmlkZXJzLlxuICAgKi9cbiAgZ2V0RmVhdHVyZVByb3ZpZGVycygpOiBBWFBGZWF0dXJlRGVmaW5pdGlvblByb3ZpZGVyW10ge1xuICAgIHJldHVybiBbLi4udGhpcy5mZWF0dXJlUHJvdmlkZXJzXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIGRhdGFzb3VyY2UgcHJvdmlkZXIuXG4gICAqL1xuICByZWdpc3RlckRhdGFzb3VyY2VQcm92aWRlcihwcm92aWRlcjogQVhQRGF0YVNvdXJjZURlZmluaXRpb25Qcm92aWRlcik6IHZvaWQge1xuICAgIHRoaXMuZGF0YXNvdXJjZVByb3ZpZGVycy5wdXNoKHByb3ZpZGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWxsIHJlZ2lzdGVyZWQgZGF0YXNvdXJjZSBwcm92aWRlcnMuXG4gICAqL1xuICBnZXREYXRhc291cmNlUHJvdmlkZXJzKCk6IEFYUERhdGFTb3VyY2VEZWZpbml0aW9uUHJvdmlkZXJbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLmRhdGFzb3VyY2VQcm92aWRlcnNdO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIGFsbCByZWdpc3RlcmVkIHByb3ZpZGVycy5cbiAgICogVXNlZnVsIGZvciB0ZXN0aW5nIG9yIHJlLWluaXRpYWxpemF0aW9uLlxuICAgKi9cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5wZXJtaXNzaW9uUHJvdmlkZXJzLmxlbmd0aCA9IDA7XG4gICAgdGhpcy5tZW51UHJvdmlkZXJzLmxlbmd0aCA9IDA7XG4gICAgdGhpcy5lbnRpdHlQcm92aWRlcnMubGVuZ3RoID0gMDtcbiAgICB0aGlzLnNldHRpbmdQcm92aWRlcnMubGVuZ3RoID0gMDtcbiAgICB0aGlzLnNlYXJjaFByb3ZpZGVycy5sZW5ndGggPSAwO1xuICAgIHRoaXMuZmVhdHVyZVByb3ZpZGVycy5sZW5ndGggPSAwO1xuICAgIHRoaXMuZGF0YXNvdXJjZVByb3ZpZGVycy5sZW5ndGggPSAwO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG59XG5cbi8vI2VuZHJlZ2lvblxuXG4iXX0=","import { inject, Injectable, InjectionToken } from '@angular/core';\nimport { AXPModuleProviderRegistry } from '../module-manifest/provider-registry.service';\nimport { set } from 'lodash-es';\nimport * as i0 from \"@angular/core\";\nexport const AXP_DATASOURCE_DEFINITION_PROVIDER = new InjectionToken('AXP_DATASOURCE_TYPE_PROVIDER');\nexport class AXPDataSourceDefinitionProviderService {\n constructor() {\n this.providers = inject(AXP_DATASOURCE_DEFINITION_PROVIDER, { optional: true });\n this.providerRegistry = inject(AXPModuleProviderRegistry);\n }\n async items() {\n const items = [];\n // Load from DI tokens (backward compatibility)\n if (Array.isArray(this.providers)) {\n for (const provider of this.providers) {\n set(provider, '__parent__', this);\n items.push(...(await provider.items()));\n }\n }\n // Load from registry (manifest-based, conditionally loaded)\n const registryProviders = this.providerRegistry.getDatasourceProviders();\n for (const provider of registryProviders) {\n set(provider, '__parent__', this);\n items.push(...(await provider.items()));\n }\n return items;\n }\n async get(name) {\n return (await this.items()).find((c) => c.name == name);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDataSourceDefinitionProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDataSourceDefinitionProviderService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDataSourceDefinitionProviderService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXNvdXJjZS1kZWZpbml0aW9uLXByb3ZpZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2NvcmUvc3JjL2xpYi9kYXRhL2RhdGFzb3VyY2UtZGVmaW5pdGlvbi1wcm92aWRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUV6RixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQWdDaEMsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUcsSUFBSSxjQUFjLENBQ2xFLDhCQUE4QixDQUMvQixDQUFDO0FBR0YsTUFBTSxPQUFPLHNDQUFzQztJQURuRDtRQUVVLGNBQVMsR0FBRyxNQUFNLENBQUMsa0NBQWtDLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMzRSxxQkFBZ0IsR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztLQTBCOUQ7SUF4QkMsS0FBSyxDQUFDLEtBQUs7UUFDVCxNQUFNLEtBQUssR0FBOEIsRUFBRSxDQUFDO1FBRTVDLCtDQUErQztRQUMvQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDbEMsS0FBSyxNQUFNLFFBQVEsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3RDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNsQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDMUMsQ0FBQztRQUNILENBQUM7UUFFRCw0REFBNEQ7UUFDNUQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUN6RSxLQUFLLE1BQU0sUUFBUSxJQUFJLGlCQUFpQixFQUFFLENBQUM7WUFDekMsR0FBRyxDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDbEMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBRyxDQUFDLElBQVk7UUFDcEIsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDO0lBQzFELENBQUM7K0dBM0JVLHNDQUFzQzttSEFBdEMsc0NBQXNDLGNBRHpCLE1BQU07OzRGQUNuQixzQ0FBc0M7a0JBRGxELFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhEYXRhU291cmNlIH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUE1vZHVsZVByb3ZpZGVyUmVnaXN0cnkgfSBmcm9tICcuLi9tb2R1bGUtbWFuaWZlc3QvcHJvdmlkZXItcmVnaXN0cnkuc2VydmljZSc7XG5pbXBvcnQgeyBBWFBGaWx0ZXJEZWZpbml0aW9uLCBBWFBPcHRpb25zRGF0YSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IHNldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRGF0YVNvdXJjZURhdGFGaWVsZERlZmluaXRpb24ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRhdGF0eXBlOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgb3B0aW9ucz86IEFYUE9wdGlvbnNEYXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUERhdGFTb3VyY2VEZWZpbml0aW9uPFQgPSBhbnk+IHtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICB2YWx1ZUZpZWxkPzoge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICB9O1xuICB0ZXh0RmllbGQ/OiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gIH07XG4gIGNvbHVtbnM6IEFYUERhdGFTb3VyY2VEYXRhRmllbGREZWZpbml0aW9uW107XG4gIGZpbHRlcnM6IEFYUEZpbHRlckRlZmluaXRpb25bXTtcbiAgc2FtcGxlcz86IGFueVtdO1xuICB2aXNpYmxlPzogYm9vbGVhbjtcbiAgc291cmNlOiAoKSA9PiBBWERhdGFTb3VyY2U8VD4gfCBQcm9taXNlPEFYRGF0YVNvdXJjZTxUPj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRGF0YVNvdXJjZURlZmluaXRpb25Qcm92aWRlciB7XG4gIGl0ZW1zKCk6IFByb21pc2U8QVhQRGF0YVNvdXJjZURlZmluaXRpb25bXT47XG59XG5cbmV4cG9ydCBjb25zdCBBWFBfREFUQVNPVVJDRV9ERUZJTklUSU9OX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuPEFYUERhdGFTb3VyY2VEZWZpbml0aW9uUHJvdmlkZXJbXT4oXG4gICdBWFBfREFUQVNPVVJDRV9UWVBFX1BST1ZJREVSJyxcbik7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQVhQRGF0YVNvdXJjZURlZmluaXRpb25Qcm92aWRlclNlcnZpY2UgaW1wbGVtZW50cyBBWFBEYXRhU291cmNlRGVmaW5pdGlvblByb3ZpZGVyIHtcbiAgcHJpdmF0ZSBwcm92aWRlcnMgPSBpbmplY3QoQVhQX0RBVEFTT1VSQ0VfREVGSU5JVElPTl9QUk9WSURFUiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSBwcm92aWRlclJlZ2lzdHJ5ID0gaW5qZWN0KEFYUE1vZHVsZVByb3ZpZGVyUmVnaXN0cnkpO1xuXG4gIGFzeW5jIGl0ZW1zKCk6IFByb21pc2U8QVhQRGF0YVNvdXJjZURlZmluaXRpb25bXT4ge1xuICAgIGNvbnN0IGl0ZW1zOiBBWFBEYXRhU291cmNlRGVmaW5pdGlvbltdID0gW107XG5cbiAgICAvLyBMb2FkIGZyb20gREkgdG9rZW5zIChiYWNrd2FyZCBjb21wYXRpYmlsaXR5KVxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMucHJvdmlkZXJzKSkge1xuICAgICAgZm9yIChjb25zdCBwcm92aWRlciBvZiB0aGlzLnByb3ZpZGVycykge1xuICAgICAgICBzZXQocHJvdmlkZXIsICdfX3BhcmVudF9fJywgdGhpcyk7XG4gICAgICAgIGl0ZW1zLnB1c2goLi4uKGF3YWl0IHByb3ZpZGVyLml0ZW1zKCkpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBMb2FkIGZyb20gcmVnaXN0cnkgKG1hbmlmZXN0LWJhc2VkLCBjb25kaXRpb25hbGx5IGxvYWRlZClcbiAgICBjb25zdCByZWdpc3RyeVByb3ZpZGVycyA9IHRoaXMucHJvdmlkZXJSZWdpc3RyeS5nZXREYXRhc291cmNlUHJvdmlkZXJzKCk7XG4gICAgZm9yIChjb25zdCBwcm92aWRlciBvZiByZWdpc3RyeVByb3ZpZGVycykge1xuICAgICAgc2V0KHByb3ZpZGVyLCAnX19wYXJlbnRfXycsIHRoaXMpO1xuICAgICAgaXRlbXMucHVzaCguLi4oYXdhaXQgcHJvdmlkZXIuaXRlbXMoKSkpO1xuICAgIH1cblxuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIGFzeW5jIGdldChuYW1lOiBzdHJpbmcpOiBQcm9taXNlPEFYUERhdGFTb3VyY2VEZWZpbml0aW9uIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLml0ZW1zKCkpLmZpbmQoKGMpID0+IGMubmFtZSA9PSBuYW1lKTtcbiAgfVxufVxuIl19","import { Directive, ElementRef, input, effect } from '@angular/core';\nimport { set, get } from 'lodash-es';\nimport * as i0 from \"@angular/core\";\nexport class AXPElementDataDirective {\n constructor(elementRef) {\n this.elementRef = elementRef;\n this.data = input(null, ...(ngDevMode ? [{ debugName: \"data\", alias: 'axp-data' }] : [{ alias: 'axp-data' }]));\n this.path = input('__data__', ...(ngDevMode ? [{ debugName: \"path\", alias: 'axp-data-path' }] : [{ alias: 'axp-data-path' }]));\n // Effect to update element data when inputs change\n this.updateEffect = effect(() => {\n const currentData = this.data();\n const currentPath = this.path();\n set(this.elementRef.nativeElement, currentPath, currentData);\n }, ...(ngDevMode ? [{ debugName: \"updateEffect\" }] : []));\n }\n ngOnInit() {\n // Initial data setup\n set(this.elementRef.nativeElement, this.path(), this.data());\n }\n /**\n * Get data from the element\n */\n getData() {\n return get(this.elementRef.nativeElement, this.path());\n }\n /**\n * Update data at runtime\n */\n setData(data) {\n set(this.elementRef.nativeElement, this.path(), data);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPElementDataDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.3.12\", type: AXPElementDataDirective, isStandalone: true, selector: \"[axp-data]\", inputs: { data: { classPropertyName: \"data\", publicName: \"axp-data\", isSignal: true, isRequired: false, transformFunction: null }, path: { classPropertyName: \"path\", publicName: \"axp-data-path\", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPElementDataDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[axp-data]',\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: \"axp-data\", required: false }] }], path: [{ type: i0.Input, args: [{ isSignal: true, alias: \"axp-data-path\", required: false }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1kYXRhLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL2RpcmVjdGl2ZXMvZWxlbWVudC1kYXRhLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQU1yQyxNQUFNLE9BQU8sdUJBQXVCO0lBS2hDLFlBQW9CLFVBQW1DO1FBQW5DLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBSHZELFNBQUksR0FBRyxLQUFLLENBQU0sSUFBSSx3Q0FBSSxLQUFLLEVBQUUsVUFBVSxPQUFuQixFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsR0FBQyxDQUFDO1FBQy9DLFNBQUksR0FBRyxLQUFLLENBQVMsVUFBVSx3Q0FBSSxLQUFLLEVBQUUsZUFBZSxPQUF4QixFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsR0FBQyxDQUFDO1FBUzdELG1EQUFtRDtRQUMzQyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDL0IsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2hDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNoQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ2pFLENBQUMsd0RBQUMsQ0FBQztJQVp3RCxDQUFDO0lBRTVELFFBQVE7UUFDSixxQkFBcUI7UUFDckIsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBU0Q7O09BRUc7SUFDSCxPQUFPO1FBQ0gsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsT0FBTyxDQUFDLElBQVM7UUFDYixHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzFELENBQUM7K0dBL0JRLHVCQUF1QjttR0FBdkIsdUJBQXVCOzs0RkFBdkIsdUJBQXVCO2tCQUpuQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxZQUFZO29CQUN0QixVQUFVLEVBQUUsSUFBSTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGlucHV0LCBPbkluaXQsIGVmZmVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc2V0LCBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1theHAtZGF0YV0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgQVhQRWxlbWVudERhdGFEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgZGF0YSA9IGlucHV0PGFueT4obnVsbCwgeyBhbGlhczogJ2F4cC1kYXRhJyB9KTtcbiAgICBwYXRoID0gaW5wdXQ8c3RyaW5nPignX19kYXRhX18nLCB7IGFsaWFzOiAnYXhwLWRhdGEtcGF0aCcgfSk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7IH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICAvLyBJbml0aWFsIGRhdGEgc2V0dXBcbiAgICAgICAgc2V0KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB0aGlzLnBhdGgoKSwgdGhpcy5kYXRhKCkpO1xuICAgIH1cblxuICAgIC8vIEVmZmVjdCB0byB1cGRhdGUgZWxlbWVudCBkYXRhIHdoZW4gaW5wdXRzIGNoYW5nZVxuICAgIHByaXZhdGUgdXBkYXRlRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3QgY3VycmVudERhdGEgPSB0aGlzLmRhdGEoKTtcbiAgICAgICAgY29uc3QgY3VycmVudFBhdGggPSB0aGlzLnBhdGgoKTtcbiAgICAgICAgc2V0KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBjdXJyZW50UGF0aCwgY3VycmVudERhdGEpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogR2V0IGRhdGEgZnJvbSB0aGUgZWxlbWVudFxuICAgICAqL1xuICAgIGdldERhdGEoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIGdldCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgdGhpcy5wYXRoKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSBkYXRhIGF0IHJ1bnRpbWVcbiAgICAgKi9cbiAgICBzZXREYXRhKGRhdGE6IGFueSkge1xuICAgICAgICBzZXQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMucGF0aCgpLCBkYXRhKTtcbiAgICB9XG59ICJdfQ==","import { Directive, HostListener, Output, EventEmitter } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXPDblClickDirective {\n constructor() {\n this.onDblClick = new EventEmitter();\n this.lastTap = 0;\n this.doubleTapThreshold = 300; // milliseconds\n }\n // Listen for the native dblclick event (desktop)\n handleOnDblClick(event) {\n this.onDblClick.emit(event);\n }\n // Listen for touchend events (mobile)\n onTouchEnd(event) {\n const currentTime = new Date().getTime();\n const tapGap = currentTime - this.lastTap;\n if (tapGap > 0 && tapGap < this.doubleTapThreshold) {\n // Detected a double-tap\n this.onDblClick.emit(event);\n event.preventDefault(); // Optionally prevent further default actions\n }\n this.lastTap = currentTime;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDblClickDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.12\", type: AXPDblClickDirective, isStandalone: true, selector: \"[onDblClick]\", outputs: { onDblClick: \"onDblClick\" }, host: { listeners: { \"dblclick\": \"handleOnDblClick($event)\", \"touchend\": \"onTouchEnd($event)\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDblClickDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[onDblClick]'\n }]\n }], propDecorators: { onDblClick: [{\n type: Output\n }], handleOnDblClick: [{\n type: HostListener,\n args: ['dblclick', ['$event']]\n }], onTouchEnd: [{\n type: HostListener,\n args: ['touchend', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGJsLWNsaWNrLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL2RpcmVjdGl2ZXMvZGJsLWNsaWNrLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUs5RSxNQUFNLE9BQU8sb0JBQW9CO0lBSGpDO1FBSWMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7UUFFekMsWUFBTyxHQUFHLENBQUMsQ0FBQztRQUNILHVCQUFrQixHQUFHLEdBQUcsQ0FBQyxDQUFDLGVBQWU7S0FxQjdEO0lBbkJHLGlEQUFpRDtJQUVqRCxnQkFBZ0IsQ0FBQyxLQUFZO1FBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxzQ0FBc0M7SUFFdEMsVUFBVSxDQUFDLEtBQWlCO1FBQ3hCLE1BQU0sV0FBVyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDekMsTUFBTSxNQUFNLEdBQUcsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFFMUMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUNqRCx3QkFBd0I7WUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsNkNBQTZDO1FBQ3pFLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQztJQUMvQixDQUFDOytHQXhCUSxvQkFBb0I7bUdBQXBCLG9CQUFvQjs7NEZBQXBCLG9CQUFvQjtrQkFIaEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsY0FBYztpQkFDM0I7O3NCQUVJLE1BQU07O3NCQU1OLFlBQVk7dUJBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFNbkMsWUFBWTt1QkFBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbb25EYmxDbGlja10nXG59KVxuZXhwb3J0IGNsYXNzIEFYUERibENsaWNrRGlyZWN0aXZlIHtcbiAgICBAT3V0cHV0KCkgb25EYmxDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG5cbiAgICBwcml2YXRlIGxhc3RUYXAgPSAwO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZG91YmxlVGFwVGhyZXNob2xkID0gMzAwOyAvLyBtaWxsaXNlY29uZHNcblxuICAgIC8vIExpc3RlbiBmb3IgdGhlIG5hdGl2ZSBkYmxjbGljayBldmVudCAoZGVza3RvcClcbiAgICBASG9zdExpc3RlbmVyKCdkYmxjbGljaycsIFsnJGV2ZW50J10pXG4gICAgaGFuZGxlT25EYmxDbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkRibENsaWNrLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIC8vIExpc3RlbiBmb3IgdG91Y2hlbmQgZXZlbnRzIChtb2JpbGUpXG4gICAgQEhvc3RMaXN0ZW5lcigndG91Y2hlbmQnLCBbJyRldmVudCddKVxuICAgIG9uVG91Y2hFbmQoZXZlbnQ6IFRvdWNoRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY3VycmVudFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgY29uc3QgdGFwR2FwID0gY3VycmVudFRpbWUgLSB0aGlzLmxhc3RUYXA7XG5cbiAgICAgICAgaWYgKHRhcEdhcCA+IDAgJiYgdGFwR2FwIDwgdGhpcy5kb3VibGVUYXBUaHJlc2hvbGQpIHtcbiAgICAgICAgICAgIC8vIERldGVjdGVkIGEgZG91YmxlLXRhcFxuICAgICAgICAgICAgdGhpcy5vbkRibENsaWNrLmVtaXQoZXZlbnQpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8gT3B0aW9uYWxseSBwcmV2ZW50IGZ1cnRoZXIgZGVmYXVsdCBhY3Rpb25zXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sYXN0VGFwID0gY3VycmVudFRpbWU7XG4gICAgfVxufVxuIl19","// src/app/directives/grid-layout.directive.ts\nimport { Directive, ElementRef, Renderer2, input } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXPGridLayoutDirective {\n constructor(el, renderer) {\n this.el = el;\n this.renderer = renderer;\n this.options = input.required(...(ngDevMode ? [{ debugName: \"options\", alias: 'axp-grid-layout' }] : [{ alias: 'axp-grid-layout' }]));\n }\n ngOnChanges(changes) {\n if (changes['options']) {\n this.applyTailwindClasses();\n }\n }\n applyTailwindClasses() {\n const placement = this.options()?.positions;\n if (!placement)\n return;\n // Clear existing grid classes\n this.clearClasses();\n // Apply new grid classes based on the input options\n this.setClasses(placement.sm, '');\n this.setClasses(placement.md, 'md:');\n this.setClasses(placement.lg, 'lg:');\n this.setClasses(placement.xl, 'xl:');\n this.setClasses(placement.xxl, '2xl:');\n }\n setClasses(placement, prefix) {\n if (placement == null)\n return;\n const colStart = placement.colStart ? `${prefix}ax-col-start-${placement.colStart}` : '';\n const colEnd = placement.colEnd ? `${prefix}ax-col-end-${placement.colEnd}` : '';\n const colSpan = placement.colSpan ? `${prefix}ax-col-span-${placement.colSpan}` : '';\n const rowStart = placement.rowStart ? `${prefix}ax-row-start-${placement.rowStart}` : '';\n const rowEnd = placement.rowEnd ? `${prefix}ax-row-end-${placement.rowEnd}` : '';\n const rowSpan = placement.rowSpan ? `${prefix}ax-row-span-${placement.rowSpan}` : '';\n const order = placement.order ? `${prefix}ax-order-${placement.order}` : ''; // Handling order\n [colStart, colEnd, colSpan, rowStart, rowEnd, rowSpan, order].forEach(cls => {\n if (cls) {\n this.renderer.addClass(this.el.nativeElement, cls);\n }\n });\n }\n clearClasses() {\n const currentClasses = this.el.nativeElement.className.split(' ');\n currentClasses.forEach((className) => {\n if (className.startsWith('ax-col-') || className.startsWith('ax-row-') || className.startsWith('ax-order-')) {\n this.renderer.removeClass(this.el.nativeElement, className);\n }\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPGridLayoutDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.3.12\", type: AXPGridLayoutDirective, isStandalone: true, selector: \"[axp-grid-layout]\", inputs: { options: { classPropertyName: \"options\", publicName: \"axp-grid-layout\", isSignal: true, isRequired: true, transformFunction: null } }, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPGridLayoutDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[axp-grid-layout]',\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: \"axp-grid-layout\", required: true }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1sYXlvdXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9jb3JlL3NyYy9saWIvZGlyZWN0aXZlcy9ncmlkLWxheW91dC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsOENBQThDO0FBRTlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBNEIsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU9sRyxNQUFNLE9BQU8sc0JBQXNCO0lBRy9CLFlBQW9CLEVBQWMsRUFBVSxRQUFtQjtRQUEzQyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUYvRCxZQUFPLEdBQUcsS0FBSyxDQUFDLFFBQVEsMENBQXlCLEtBQUssRUFBRSxpQkFBaUIsT0FBMUIsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsR0FBQyxDQUFDO0lBRVYsQ0FBQztJQUVwRSxXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUNoQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLG9CQUFvQjtRQUN4QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsU0FBUyxDQUFDO1FBQzVDLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUN2Qiw4QkFBOEI7UUFDOUIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXBCLG9EQUFvRDtRQUNwRCxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxVQUFVLENBQUMs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ZW50IjpbIi8vIHNyYy9hcHAvZGlyZWN0aXZlcy9ncmlkLWxheW91dC5kaXJlY3RpdmUudHNcblxuaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBSZW5kZXJlcjIsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUEdyaWRMYXlvdXRPcHRpb25zLCBBWFBHcmlkUGxhY2VtZW50IH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1theHAtZ3JpZC1sYXlvdXRdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBHcmlkTGF5b3V0RGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICBvcHRpb25zID0gaW5wdXQucmVxdWlyZWQ8QVhQR3JpZExheW91dE9wdGlvbnM+KHsgYWxpYXM6ICdheHAtZ3JpZC1sYXlvdXQnIH0pO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZiwgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7IH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXNbJ29wdGlvbnMnXSkge1xuICAgICAgICAgICAgdGhpcy5hcHBseVRhaWx3aW5kQ2xhc3NlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBseVRhaWx3aW5kQ2xhc3NlcygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGxhY2VtZW50ID0gdGhpcy5vcHRpb25zKCk/LnBvc2l0aW9ucztcbiAgICAgICAgaWYgKCFwbGFjZW1lbnQpIHJldHVybjtcbiAgICAgICAgLy8gQ2xlYXIgZXhpc3RpbmcgZ3JpZCBjbGFzc2VzXG4gICAgICAgIHRoaXMuY2xlYXJDbGFzc2VzKCk7XG5cbiAgICAgICAgLy8gQXBwbHkgbmV3IGdyaWQgY2xhc3NlcyBiYXNlZCBvbiB0aGUgaW5wdXQgb3B0aW9uc1xuICAgICAgICB0aGlzLnNldENsYXNzZXMocGxhY2VtZW50LnNtLCAnJyk7XG4gICAgICAgIHRoaXMuc2V0Q2xhc3NlcyhwbGFjZW1lbnQubWQsICdtZDonKTtcbiAgICAgICAgdGhpcy5zZXRDbGFzc2VzKHBsYWNlbWVudC5sZywgJ2xnOicpO1xuICAgICAgICB0aGlzLnNldENsYXNzZXMocGxhY2VtZW50LnhsLCAneGw6Jyk7XG4gICAgICAgIHRoaXMuc2V0Q2xhc3NlcyhwbGFjZW1lbnQueHhsLCAnMnhsOicpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0Q2xhc3NlcyhwbGFjZW1lbnQ6IEFYUEdyaWRQbGFjZW1lbnQgfCB1bmRlZmluZWQsIHByZWZpeDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmIChwbGFjZW1lbnQgPT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IGNvbFN0YXJ0ID0gcGxhY2VtZW50LmNvbFN0YXJ0ID8gYCR7cHJlZml4fWF4LWNvbC1zdGFydC0ke3BsYWNlbWVudC5jb2xTdGFydH1gIDogJyc7XG4gICAgICAgIGNvbnN0IGNvbEVuZCA9IHBsYWNlbWVudC5jb2xFbmQgPyBgJHtwcmVmaXh9YXgtY29sLWVuZC0ke3BsYWNlbWVudC5jb2xFbmR9YCA6ICcnO1xuICAgICAgICBjb25zdCBjb2xTcGFuID0gcGxhY2VtZW50LmNvbFNwYW4gPyBgJHtwcmVmaXh9YXgtY29sLXNwYW4tJHtwbGFjZW1lbnQuY29sU3Bhbn1gIDogJyc7XG4gICAgICAgIGNvbnN0IHJvd1N0YXJ0ID0gcGxhY2VtZW50LnJvd1N0YXJ0ID8gYCR7cHJlZml4fWF4LXJvdy1zdGFydC0ke3BsYWNlbWVudC5yb3dTdGFydH1gIDogJyc7XG4gICAgICAgIGNvbnN0IHJvd0VuZCA9IHBsYWNlbWVudC5yb3dFbmQgPyBgJHtwcmVmaXh9YXgtcm93LWVuZC0ke3BsYWNlbWVudC5yb3dFbmR9YCA6ICcnO1xuICAgICAgICBjb25zdCByb3dTcGFuID0gcGxhY2VtZW50LnJvd1NwYW4gPyBgJHtwcmVmaXh9YXgtcm93LXNwYW4tJHtwbGFjZW1lbnQucm93U3Bhbn1gIDogJyc7XG4gICAgICAgIGNvbnN0IG9yZGVyID0gcGxhY2VtZW50Lm9yZGVyID8gYCR7cHJlZml4fWF4LW9yZGVyLSR7cGxhY2VtZW50Lm9yZGVyfWAgOiAnJzsgLy8gSGFuZGxpbmcgb3JkZXJcblxuICAgICAgICBbY29sU3RhcnQsIGNvbEVuZCwgY29sU3Bhbiwgcm93U3RhcnQsIHJvd0VuZCwgcm93U3Bhbiwgb3JkZXJdLmZvckVhY2goY2xzID0+IHtcbiAgICAgICAgICAgIGlmIChjbHMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgY2xzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbGVhckNsYXNzZXMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRDbGFzc2VzID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZS5zcGxpdCgnICcpO1xuICAgICAgICBjdXJyZW50Q2xhc3Nlcy5mb3JFYWNoKChjbGFzc05hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgaWYgKGNsYXNzTmFtZS5zdGFydHNXaXRoKCdheC1jb2wtJykgfHwgY2xhc3NOYW1lLnN0YXJ0c1dpdGgoJ2F4LXJvdy0nKSB8fCBjbGFzc05hbWUuc3RhcnRzV2l0aCgnYXgtb3JkZXItJykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgY2xhc3NOYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19","// src/app/directives/grid-layout.directive.ts\nimport { Directive, ElementRef, ViewContainerRef, computed, inject } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXPContentCheckerDirective {\n constructor() {\n this.viewContainerRef = inject(ViewContainerRef);\n this.elementRef = inject((ElementRef));\n this.isEmpty = computed(() => this.viewContainerRef.length === 0, ...(ngDevMode ? [{ debugName: \"isEmpty\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPContentCheckerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.12\", type: AXPContentCheckerDirective, isStandalone: true, selector: \"[axp-content-checker]\", exportAs: [\"checker\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPContentCheckerDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[axp-content-checker]',\n standalone: true,\n exportAs: 'checker'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1jaGVja2VyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL2RpcmVjdGl2ZXMvY29udGVudC1jaGVja2VyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw4Q0FBOEM7QUFFOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFPMUYsTUFBTSxPQUFPLDBCQUEwQjtJQUx2QztRQU9XLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVDLGVBQVUsR0FBK0IsTUFBTSxDQUFDLENBQUEsVUFBMEIsQ0FBQSxDQUFDLENBQUM7UUFFNUUsWUFBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxLQUFLLENBQUMsbURBQUMsQ0FBQztLQUN2RTsrR0FOWSwwQkFBMEI7bUdBQTFCLDBCQUEwQjs7NEZBQTFCLDBCQUEwQjtrQkFMdEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLFNBQVM7aUJBQ3RCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gc3JjL2FwcC9kaXJlY3RpdmVzL2dyaWQtbGF5b3V0LmRpcmVjdGl2ZS50c1xuXG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIFZpZXdDb250YWluZXJSZWYsIGNvbXB1dGVkLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbYXhwLWNvbnRlbnQtY2hlY2tlcl0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgZXhwb3J0QXM6ICdjaGVja2VyJ1xufSlcbmV4cG9ydCBjbGFzcyBBWFBDb250ZW50Q2hlY2tlckRpcmVjdGl2ZSB7XG5cbiAgICBwdWJsaWMgdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcbiAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4gPSBpbmplY3QoRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4pO1xuXG4gICAgcHVibGljIGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnZpZXdDb250YWluZXJSZWYubGVuZ3RoID09PSAwKTtcbn1cbiJdfQ==","//#region ---- Imports ----\nimport { Directive, ElementRef, output, signal, effect, inject, DestroyRef, untracked, Renderer2 } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n//#endregion\n//#region ---- Directive ----\n/**\n * Fullscreen directive that provides CSS-based fullscreen functionality\n * Usage: <element axFullscreen #fullscreen=\"axFullscreen\"></element>\n * Then: fullscreen.toggle() or fullscreen.enter() or fullscreen.exit()\n */\nexport class AXFullscreenDirective {\n constructor(elementRef) {\n this.elementRef = elementRef;\n //#region ---- Properties ----\n /**\n * Current fullscreen state\n */\n this.isFullscreenState = signal(false, ...(ngDevMode ? [{ debugName: \"isFullscreenState\" }] : []));\n /**\n * Original element styles to restore\n */\n this.originalStyles = {};\n /**\n * Original parent element reference\n */\n this.originalParent = null;\n /**\n * Fullscreen container element\n */\n this.fullscreenContainer = null;\n /**\n * Fullscreen change event\n */\n this.fullscreenChange = output();\n //#endregion\n //#region ---- Constructor ----\n this.destroyRef = inject(DestroyRef);\n this.renderer = inject(Renderer2);\n // Sync state changes to output\n effect(() => {\n const isFullscreen = this.isFullscreenState();\n untracked(() => {\n this.fullscreenChange.emit(isFullscreen);\n });\n });\n }\n //#endregion\n //#region ---- Public API ----\n /**\n * Toggle fullscreen state\n */\n async toggle() {\n if (this.isFullscreenState()) {\n await this.exit();\n }\n else {\n await this.enter();\n }\n }\n /**\n * Enter fullscreen mode using CSS\n */\n async enter() {\n if (this.isFullscreenState()) {\n return;\n }\n const element = this.elementRef.nativeElement;\n try {\n // Store original styles and parent\n this.storeOriginalStyles(element);\n this.originalParent = element.parentElement;\n // Create fullscreen container\n this.fullscreenContainer = this.renderer.createElement('div');\n this.renderer.setStyle(this.fullscreenContainer, 'position', 'fixed');\n this.renderer.setStyle(this.fullscreenContainer, 'top', '0');\n this.renderer.setStyle(this.fullscreenContainer, 'left', '0');\n this.renderer.setStyle(this.fullscreenContainer, 'width', '100vw');\n this.renderer.setStyle(this.fullscreenContainer, 'height', '100vh');\n this.renderer.setStyle(this.fullscreenContainer, 'z-index', '9999');\n this.renderer.setStyle(this.fullscreenContainer, 'background-color', '#ffffff');\n this.renderer.setStyle(this.fullscreenContainer, 'overflow', 'auto');\n // Move element to container\n this.renderer.appendChild(this.fullscreenContainer, element);\n // Apply fullscreen styles to element\n this.renderer.setStyle(element, 'position', 'relative');\n this.renderer.setStyle(element, 'width', '100%');\n this.renderer.setStyle(element, 'height', '100%');\n this.renderer.setStyle(element, 'margin', '0');\n this.renderer.setStyle(element, 'padding', '0');\n // Append container to body\n this.renderer.appendChild(document.body, this.fullscreenContainer);\n // Prevent body scroll\n this.renderer.setStyle(document.body, 'overflow', 'hidden');\n this.isFullscreenState.set(true);\n }\n catch (error) {\n console.error('Error entering fullscreen:', error);\n this.restoreOriginalStyles(element);\n }\n }\n /**\n * Exit fullscreen mode\n */\n async exit() {\n if (!this.isFullscreenState()) {\n return;\n }\n const element = this.elementRef.nativeElement;\n try {\n // Restore body scroll\n this.renderer.removeStyle(document.body, 'overflow');\n // Move element back to original parent\n if (this.fullscreenContainer && this.originalParent) {\n this.renderer.removeChild(this.fullscreenContainer, element);\n this.renderer.appendChild(this.originalParent, element);\n // Remove container\n this.renderer.removeChild(document.body, this.fullscreenContainer);\n this.fullscreenContainer = null;\n }\n // Restore original styles\n this.restoreOriginalStyles(element);\n this.isFullscreenState.set(false);\n }\n catch (error) {\n console.error('Error exiting fullscreen:', error);\n }\n }\n /**\n * Check if currently in fullscreen mode\n */\n isFullscreen() {\n return this.isFullscreenState();\n }\n //#endregion\n //#region ---- Private Methods ----\n /**\n * Store original element styles\n */\n storeOriginalStyles(element) {\n const computedStyle = window.getComputedStyle(element);\n this.originalStyles = {\n position: computedStyle.position,\n top: computedStyle.top,\n left: computedStyle.left,\n width: computedStyle.width,\n height: computedStyle.height,\n zIndex: computedStyle.zIndex,\n backgroundColor: computedStyle.backgroundColor,\n margin: computedStyle.margin,\n padding: computedStyle.padding,\n };\n }\n /**\n * Restore original element styles\n */\n restoreOriginalStyles(element) {\n if (!this.originalStyles) {\n return;\n }\n // Restore each style property\n Object.entries(this.originalStyles).forEach(([key, value]) => {\n const styleKey = this.camelToKebabCase(key);\n if (value) {\n this.renderer.setStyle(element, styleKey, value);\n }\n else {\n this.renderer.removeStyle(element, styleKey);\n }\n });\n this.originalStyles = {};\n }\n /**\n * Convert camelCase to kebab-case for CSS properties\n */\n camelToKebabCase(str) {\n return str.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, '$1-$2').toLowerCase();\n }\n //#endregion\n //#region ---- Lifecycle ----\n ngOnDestroy() {\n // Exit fullscreen if still active\n if (this.isFullscreenState()) {\n this.exit().catch(() => {\n // Ignore errors during cleanup\n });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXFullscreenDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.12\", type: AXFullscreenDirective, isStandalone: true, selector: \"[axFullscreen]\", outputs: { fullscreenChange: \"fullscreenChange\" }, exportAs: [\"axFullscreen\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXFullscreenDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[axFullscreen]',\n standalone: true,\n exportAs: 'axFullscreen',\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { fullscreenChange: [{ type: i0.Output, args: [\"fullscreenChange\"] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVsbHNjcmVlbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2NvcmUvc3JjL2xpYi9kaXJlY3RpdmVzL2Z1bGxzY3JlZW4uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUUvQixPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBYSxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRW5JLFlBQVk7QUFFWixpQ0FBaUM7QUFFakM7Ozs7R0FJRztBQU1ILE1BQU0sT0FBTyxxQkFBcUI7SUE2QzlCLFlBQ1ksVUFBbUM7UUFBbkMsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUE3Qy9DLGtDQUFrQztRQUVsQzs7V0FFRztRQUNjLHNCQUFpQixHQUFHLE1BQU0sQ0FBVSxLQUFLLDZEQUFDLENBQUM7UUFFNUQ7O1dBRUc7UUFDSyxtQkFBYyxHQVVsQixFQUFFLENBQUM7UUFFUDs7V0FFRztRQUNLLG1CQUFjLEdBQXVCLElBQUksQ0FBQztRQUVsRDs7V0FFRztRQUNLLHdCQUFtQixHQUF1QixJQUFJLENBQUM7UUFFdkQ7O1dBRUc7UUFDTSxxQkFBZ0IsR0FBRyxNQUFNLEVBQVcsQ0FBQztRQUU5QyxZQUFZO1FBRVosbUNBQW1DO1FBRWxCLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsYUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUsxQywrQkFBK0I7UUFDL0IsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNSLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzlDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUks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LS0tXG5cbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgb3V0cHV0LCBzaWduYWwsIGVmZmVjdCwgT25EZXN0cm95LCBpbmplY3QsIERlc3Ryb3lSZWYsIHVudHJhY2tlZCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIERpcmVjdGl2ZSAgIC0tLS1cblxuLyoqXG4gKiBGdWxsc2NyZWVuIGRpcmVjdGl2ZSB0aGF0IHByb3ZpZGVzIENTUy1iYXNlZCBmdWxsc2NyZWVuIGZ1bmN0aW9uYWxpdHlcbiAqIFVzYWdlOiA8ZWxlbWVudCBheEZ1bGxzY3JlZW4gI2Z1bGxzY3JlZW49XCJheEZ1bGxzY3JlZW5cIj48L2VsZW1lbnQ+XG4gKiBUaGVuOiBmdWxsc2NyZWVuLnRvZ2dsZSgpIG9yIGZ1bGxzY3JlZW4uZW50ZXIoKSBvciBmdWxsc2NyZWVuLmV4aXQoKVxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1theEZ1bGxzY3JlZW5dJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGV4cG9ydEFzOiAnYXhGdWxsc2NyZWVuJyxcbn0pXG5leHBvcnQgY2xhc3MgQVhGdWxsc2NyZWVuRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICAvLyNyZWdpb24gLS0tLSAgIFByb3BlcnRpZXMgICAtLS0tXG5cbiAgICAvKipcbiAgICAgKiBDdXJyZW50IGZ1bGxzY3JlZW4gc3RhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGlzRnVsbHNjcmVlblN0YXRlID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICAgIC8qKlxuICAgICAqIE9yaWdpbmFsIGVsZW1lbnQgc3R5bGVzIHRvIHJlc3RvcmVcbiAgICAgKi9cbiAgICBwcml2YXRlIG9yaWdpbmFsU3R5bGVzOiB7XG4gICAgICAgIHBvc2l0aW9uPzogc3RyaW5nO1xuICAgICAgICB0b3A/OiBzdHJpbmc7XG4gICAgICAgIGxlZnQ/OiBzdHJpbmc7XG4gICAgICAgIHdpZHRoPzogc3RyaW5nO1xuICAgICAgICBoZWlnaHQ/OiBzdHJpbmc7XG4gICAgICAgIHpJbmRleD86IHN0cmluZztcbiAgICAgICAgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nO1xuICAgICAgICBtYXJnaW4/OiBzdHJpbmc7XG4gICAgICAgIHBhZGRpbmc/OiBzdHJpbmc7XG4gICAgfSA9IHt9O1xuXG4gICAgLyoqXG4gICAgICogT3JpZ2luYWwgcGFyZW50IGVsZW1lbnQgcmVmZXJlbmNlXG4gICAgICovXG4gICAgcHJpdmF0ZSBvcmlnaW5hbFBhcmVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIEZ1bGxzY3JlZW4gY29udGFpbmVyIGVsZW1lbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIGZ1bGxzY3JlZW5Db250YWluZXI6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBGdWxsc2NyZWVuIGNoYW5nZSBldmVudFxuICAgICAqL1xuICAgIHJlYWRvbmx5IGZ1bGxzY3JlZW5DaGFuZ2UgPSBvdXRwdXQ8Ym9vbGVhbj4oKTtcblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBDb25zdHJ1Y3RvciAgIC0tLS1cblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICApIHtcbiAgICAgICAgLy8gU3luYyBzdGF0ZSBjaGFuZ2VzIHRvIG91dHB1dFxuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXNGdWxsc2NyZWVuID0gdGhpcy5pc0Z1bGxzY3JlZW5TdGF0ZSgpO1xuICAgICAgICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZ1bGxzY3JlZW5DaGFuZ2UuZW1pdChpc0Z1bGxzY3JlZW4pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBQdWJsaWMgQVBJICAgLS0tLVxuXG4gICAgLyoqXG4gICAgICogVG9nZ2xlIGZ1bGxzY3JlZW4gc3RhdGVcbiAgICAgKi9cbiAgICBhc3luYyB0b2dnbGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLmlzRnVsbHNjcmVlblN0YXRlKCkpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZXhpdCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5lbnRlcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW50ZXIgZnVsbHNjcmVlbiBtb2RlIHVzaW5nIENTU1xuICAgICAqL1xuICAgIGFzeW5jIGVudGVyKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5pc0Z1bGxzY3JlZW5TdGF0ZSgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFN0b3JlIG9yaWdpbmFsIHN0eWxlcyBhbmQgcGFyZW50XG4gICAgICAgICAgICB0aGlzLnN0b3JlT3JpZ2luYWxTdHlsZXMoZWxlbWVudCk7XG4gICAgICAgICAgICB0aGlzLm9yaWdpbmFsUGFyZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50O1xuXG4gICAgICAgICAgICAvLyBDcmVhdGUgZnVsbHNjcmVlbiBjb250YWluZXJcbiAgICAgICAgICAgIHRoaXMuZnVsbHNjcmVlbkNvbnRhaW5lciA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZnVsbHNjcmVlbkNvbnRhaW5lciwgJ3Bvc2l0aW9uJywgJ2ZpeGVkJyk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZnVsbHNjcmVlbkNvbnRhaW5lciwgJ3RvcCcsICcwJyk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZnVsbHNjcmVlbkNvbnRhaW5lciwgJ2xlZnQnLCAnMCcpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmZ1bGxzY3JlZW5Db250YWluZXIsICd3aWR0aCcsICcxMDB2dycpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmZ1bGxzY3JlZW5Db250YWluZXIsICdoZWlnaHQnLCAnMTAwdmgnKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5mdWxsc2NyZWVuQ29udGFpbmVyLCAnei1pbmRleCcsICc5OTk5Jyk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZnVsbHNjcmVlbkNvbnRhaW5lciwgJ2JhY2tncm91bmQtY29sb3InLCAnI2ZmZmZmZicpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmZ1bGxzY3JlZW5Db250YWluZXIsICdvdmVyZmxvdycsICdhdXRvJyk7XG5cbiAgICAgICAgICAgIC8vIE1vdmUgZWxlbWVudCB0byBjb250YWluZXJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5mdWxsc2NyZWVuQ29udGFpbmVyLCBlbGVtZW50KTtcblxuICAgICAgICAgICAgLy8gQXBwbHkgZnVsbHNjcmVlbiBzdHlsZXMgdG8gZWxlbWVudFxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbGVtZW50LCAncG9zaXRpb24nLCAncmVsYXRpdmUnKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZWxlbWVudCwgJ3dpZHRoJywgJzEwMCUnKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZWxlbWVudCwgJ2hlaWdodCcsICcxMDAlJyk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsZW1lbnQsICdtYXJnaW4nLCAnMCcpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbGVtZW50LCAncGFkZGluZycsICcwJyk7XG5cbiAgICAgICAgICAgIC8vIEFwcGVuZCBjb250YWluZXIgdG8gYm9keVxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChkb2N1bWVudC5ib2R5LCB0aGlzLmZ1bGxzY3JlZW5Db250YWluZXIpO1xuXG4gICAgICAgICAgICAvLyBQcmV2ZW50IGJvZHkgc2Nyb2xsXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGRvY3VtZW50LmJvZHksICdvdmVyZmxvdycsICdoaWRkZW4nKTtcblxuICAgICAgICAgICAgdGhpcy5pc0Z1bGxzY3JlZW5TdGF0ZS5zZXQodHJ1ZSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBlbnRlcmluZyBmdWxsc2NyZWVuOicsIGVycm9yKTtcbiAgICAgICAgICAgIHRoaXMucmVzdG9yZU9yaWdpbmFsU3R5bGVzKGVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXhpdCBmdWxsc2NyZWVuIG1vZGVcbiAgICAgKi9cbiAgICBhc3luYyBleGl0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoIXRoaXMuaXNGdWxsc2NyZWVuU3RhdGUoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBSZXN0b3JlIGJvZHkgc2Nyb2xsXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKGRvY3VtZW50LmJvZHksICdvdmVyZmxvdycpO1xuXG4gICAgICAgICAgICAvLyBNb3ZlIGVsZW1lbnQgYmFjayB0byBvcmlnaW5hbCBwYXJlbnRcbiAgICAgICAgICAgIGlmICh0aGlzLmZ1bGxzY3JlZW5Db250YWluZXIgJiYgdGhpcy5vcmlnaW5hbFBhcmVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5mdWxsc2NyZWVuQ29udGFpbmVyLCBlbGVtZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMub3JpZ2luYWxQYXJlbnQsIGVsZW1lbnQpO1xuXG4gICAgICAgICAgICAgICAgLy8gUmVtb3ZlIGNvbnRhaW5lclxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuYm9keSwgdGhpcy5mdWxsc2NyZWVuQ29udGFpbmVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZ1bGxzY3JlZW5Db250YWluZXIgPSBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBSZXN0b3JlIG9yaWdpbmFsIHN0eWxlc1xuICAgICAgICAgICAgdGhpcy5yZXN0b3JlT3JpZ2luYWxTdHlsZXMoZWxlbWVudCk7XG5cbiAgICAgICAgICAgIHRoaXMuaXNGdWxsc2NyZWVuU3RhdGUuc2V0KGZhbHNlKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGV4aXRpbmcgZnVsbHNjcmVlbjonLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBjdXJyZW50bHkgaW4gZnVsbHNjcmVlbiBtb2RlXG4gICAgICovXG4gICAgaXNGdWxsc2NyZWVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0Z1bGxzY3JlZW5TdGF0ZSgpO1xuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBQcml2YXRlIE1ldGhvZHMgICAtLS0tXG5cbiAgICAvKipcbiAgICAgKiBTdG9yZSBvcmlnaW5hbCBlbGVtZW50IHN0eWxlc1xuICAgICAqL1xuICAgIHByaXZhdGUgc3RvcmVPcmlnaW5hbFN0eWxlcyhlbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb21wdXRlZFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gICAgICAgIHRoaXMub3JpZ2luYWxTdHlsZXMgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbjogY29tcHV0ZWRTdHlsZS5wb3NpdGlvbixcbiAgICAgICAgICAgIHRvcDogY29tcHV0ZWRTdHlsZS50b3AsXG4gICAgICAgICAgICBsZWZ0OiBjb21wdXRlZFN0eWxlLmxlZnQsXG4gICAgICAgICAgICB3aWR0aDogY29tcHV0ZWRTdHlsZS53aWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogY29tcHV0ZWRTdHlsZS5oZWlnaHQsXG4gICAgICAgICAgICB6SW5kZXg6IGNvbXB1dGVkU3R5bGUuekluZGV4LFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBjb21wdXRlZFN0eWxlLmJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIG1hcmdpbjogY29tcHV0ZWRTdHlsZS5tYXJnaW4sXG4gICAgICAgICAgICBwYWRkaW5nOiBjb21wdXRlZFN0eWxlLnBhZGRpbmcsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVzdG9yZSBvcmlnaW5hbCBlbGVtZW50IHN0eWxlc1xuICAgICAqL1xuICAgIHByaXZhdGUgcmVzdG9yZU9yaWdpbmFsU3R5bGVzKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5vcmlnaW5hbFN0eWxlcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmVzdG9yZSBlYWNoIHN0eWxlIHByb3BlcnR5XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMub3JpZ2luYWxTdHlsZXMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3R5bGVLZXkgPSB0aGlzLmNhbWVsVG9LZWJhYkNhc2Uoa2V5KTtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZWxlbWVudCwgc3R5bGVLZXksIHZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZShlbGVtZW50LCBzdHlsZUtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMub3JpZ2luYWxTdHlsZXMgPSB7fTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IGNhbWVsQ2FzZSB0byBrZWJhYi1jYXNlIGZvciBDU1MgcHJvcGVydGllc1xuICAgICAqL1xuICAgIHByaXZhdGUgY2FtZWxUb0tlYmFiQ2FzZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBzdHIucmVwbGFjZSgvKFthLXowLTldfCg/PVtBLVpdKSkoW0EtWl0pL2csICckMS0kMicpLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIExpZmVjeWNsZSAgIC0tLS1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICAvLyBFeGl0IGZ1bGxzY3JlZW4gaWYgc3RpbGwgYWN0aXZlXG4gICAgICAgIGlmICh0aGlzLmlzRnVsbHNjcmVlblN0YXRlKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZXhpdCgpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBJZ25vcmUgZXJyb3JzIGR1cmluZyBjbGVhbnVwXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxufVxuXG4vLyNlbmRyZWdpb25cbiJdfQ==","import { InjectionToken } from '@angular/core';\nexport const AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER = new InjectionToken('AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzdHJpYnV0ZWQtZXZlbnQtbGlzdGVuZXIucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2NvcmUvc3JjL2xpYi9kaXN0cmlidXRlZC1ldmVudHMvZGlzdHJpYnV0ZWQtZXZlbnQtbGlzdGVuZXIucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU0vQyxNQUFNLENBQUMsTUFBTSx1Q0FBdUMsR0FBRyxJQUFJLGNBQWMsQ0FDdkUseUNBQXlDLENBQzFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgdHlwZSBBWFBEaXN0cmlidXRlZEV2ZW50TGlzdGVuZXJQcm92aWRlclRva2VuPFQ+ID1cbiAgfCBBWFBEaXN0cmlidXRlZEV2ZW50TGlzdGVuZXJQcm92aWRlcjxUPlxuICB8IFByb21pc2U8QVhQRGlzdHJpYnV0ZWRFdmVudExpc3RlbmVyUHJvdmlkZXI8VD4+O1xuXG5leHBvcnQgY29uc3QgQVhQX0RJU1RSSUJVVEVEX0VWRU5UX0xJU1RFTkVSX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuPEFYUERpc3RyaWJ1dGVkRXZlbnRMaXN0ZW5lclByb3ZpZGVyVG9rZW48YW55PltdPihcbiAgJ0FYUF9ESVNUUklCVVRFRF9FVkVOVF9MSVNURU5FUl9QUk9WSURFUidcbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRGlzdHJpYnV0ZWRFdmVudExpc3RlbmVyUHJvdmlkZXI8VElucHV0ID0gYW55LCBUT3V0cHV0ID0gdm9pZD4ge1xuICBrZXk6IHN0cmluZztcbiAgZXhlY3V0ZShkYXRhOiBUSW5wdXQpOiBQcm9taXNlPFRPdXRwdXQ+IHwgVE91dHB1dDtcblxuICBwcmlvcml0eT86IG51bWJlcjtcbn0iXX0=","//#region ---- Imports ----\nimport { inject, Injectable, Injector, runInInjectionContext } from '@angular/core';\nimport { AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER } from './distributed-event-listener.provider';\nimport * as i0 from \"@angular/core\";\n//#endregion\nexport class AXPDistributedEventListenerService {\n constructor() {\n //#region ---- Providers & Caches ----\n this.listenerProviders = inject(AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, { optional: true }) || [];\n this.injector = inject(Injector);\n /** Cache for listeners by key. */\n this.listenersByKey = new Map();\n /** Flag to track if providers have been loaded */\n this.providersLoaded = false;\n }\n //#endregion\n //#region ---- Public API ----\n /**\n * Dispatches an event to all registered listeners for the given key.\n * @param key The event key.\n * @param data The event data to pass to listeners.\n */\n async dispatch(key, data) {\n const providers = await this.resolveProviders();\n const matched = providers.filter(p => p.key === key);\n if (!matched.length) {\n return;\n }\n for (const provider of matched) {\n try {\n await Promise.resolve(runInInjectionContext(this.injector, () => provider.execute(data)));\n }\n catch (err) {\n console.error(`[AXPDistributedEventListenerService] Provider for key='${key}' failed`, err);\n }\n }\n }\n /**\n * Dispatch with async response (first matching provider, with retry/timeout)\n */\n async dispatchAsync(key, data, options = {\n timeout: 60_000,\n retries: 3,\n retryDelay: 1000,\n }) {\n const providers = await this.resolveProviders();\n const matched = providers.filter(p => p.key === key);\n if (!matched.length) {\n throw new Error(`No provider found for key='${key}'`);\n }\n const attempt = (n) => {\n return new Promise((resolve, reject) => {\n let finished = false;\n const timer = setTimeout(() => {\n if (!finished) {\n if (n < options.retries) {\n resolve(attempt(n + 1));\n }\n else {\n reject(new Error(`Timeout: no response for key='${key}' after ${options.retries} attempts.`));\n }\n }\n }, options.timeout);\n try {\n const provider = matched[0];\n const result = runInInjectionContext(this.injector, () => provider.execute(data));\n Promise.resolve(result)\n .then((r) => {\n finished = true;\n clearTimeout(timer);\n resolve(r);\n })\n .catch(err => {\n finished = true;\n clearTimeout(timer);\n reject(err);\n });\n }\n catch (err) {\n clearTimeout(timer);\n reject(err);\n }\n });\n };\n return attempt(0);\n }\n /**\n * Resolve all providers (handle both direct provider and Promise<provider>)\n */\n async resolveProviders() {\n return Promise.all(this.listenerProviders.map(p => p instanceof Promise ? p : Promise.resolve(p)));\n }\n /**\n * Returns all listeners for a specific event key.\n * @param key The event key.\n * @returns Array of listeners for the key.\n */\n async getListeners(key) {\n await this.ensureProvidersLoaded();\n return this.listenersByKey.get(key) || [];\n }\n /**\n * Returns all registered event keys.\n * @returns Array of all event keys that have listeners.\n */\n async getRegisteredKeys() {\n await this.ensureProvidersLoaded();\n return Array.from(this.listenersByKey.keys());\n }\n //#endregion\n //#region ---- Private Methods ----\n /**\n * Ensures that all providers have been loaded and cached.\n */\n async ensureProvidersLoaded() {\n if (this.providersLoaded) {\n return;\n }\n // Resolve all providers\n const resolvedProviders = await Promise.all(this.listenerProviders);\n // Group listeners by key\n for (const provider of resolvedProviders) {\n if (provider) {\n const existingListeners = this.listenersByKey.get(provider.key) || [];\n existingListeners.push(provider);\n this.listenersByKey.set(provider.key, existingListeners);\n }\n }\n this.providersLoaded = true;\n }\n //#endregion\n //#region ---- Cache Management ----\n /** Clears the listeners cache and forces reload on next access. */\n clearListenersCache() {\n this.listenersByKey.clear();\n this.providersLoaded = false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDistributedEventListenerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDistributedEventListenerService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDistributedEventListenerService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzdHJpYnV0ZWQtZXZlbnQtbGlzdGVuZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL2Rpc3RyaWJ1dGVkLWV2ZW50cy9kaXN0cmlidXRlZC1ldmVudC1saXN0ZW5lci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUUvQixPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFFLHVDQUF1QyxFQUF1QyxNQUFNLHVDQUF1QyxDQUFDOztBQUVySSxZQUFZO0FBS1osTUFBTSxPQUFPLGtDQUFrQztJQUgvQztRQUlFLDBDQUEwQztRQUV6QixzQkFBaUIsR0FBRyxNQUFNLENBQUMsdUNBQXVDLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDOUYsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU3QyxrQ0FBa0M7UUFDMUIsbUJBQWMsR0FBNEQsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUU1RixrREFBa0Q7UUFDMUMsb0JBQWUsR0FBRyxLQUFLLENBQUM7S0FpS2pDO0lBL0pDLFlBQVk7SUFFWixrQ0FBa0M7SUFFbEM7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBVyxFQUFFLElBQVU7UUFDcEMsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNoRCxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUVyRCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3BCLE9B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QWlCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDdEUsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNqQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLGlCQUFpQixDQUFDLENBQUM7WUFDM0QsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRUQsWUFBWTtJQUVaLHdDQUF3QztJQUV4QyxtRUFBbUU7SUFDbkUsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDL0IsQ0FBQzsrR0F4S1Usa0NBQWtDO21IQUFsQyxrQ0FBa0MsY0FGakMsTUFBTTs7NEZBRVAsa0NBQWtDO2tCQUg5QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiAtLS0tICAgSW1wb3J0cyAgIC0tLS1cblxuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciwgcnVuSW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBfRElTVFJJQlVURURfRVZFTlRfTElTVEVORVJfUFJPVklERVIsIEFYUERpc3RyaWJ1dGVkRXZlbnRMaXN0ZW5lclByb3ZpZGVyIH0gZnJvbSAnLi9kaXN0cmlidXRlZC1ldmVudC1saXN0ZW5lci5wcm92aWRlcic7XG5cbi8vI2VuZHJlZ2lvblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQVhQRGlzdHJpYnV0ZWRFdmVudExpc3RlbmVyU2VydmljZSB7XG4gIC8vI3JlZ2lvbiAtLS0tICAgUHJvdmlkZXJzICYgQ2FjaGVzICAgLS0tLVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgbGlzdGVuZXJQcm92aWRlcnMgPSBpbmplY3QoQVhQX0RJU1RSSUJVVEVEX0VWRU5UX0xJU1RFTkVSX1BST1ZJREVSLCB7IG9wdGlvbmFsOiB0cnVlIH0pIHx8IFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblxuICAvKiogQ2FjaGUgZm9yIGxpc3RlbmVycyBieSBrZXkuICovXG4gIHByaXZhdGUgbGlzdGVuZXJzQnlLZXk6IE1hcDxzdHJpbmcsIEFYUERpc3RyaWJ1dGVkRXZlbnRMaXN0ZW5lclByb3ZpZGVyPGFueT5bXT4gPSBuZXcgTWFwKCk7XG4gIFxuICAvKiogRmxhZyB0byB0cmFjayBpZiBwcm92aWRlcnMgaGF2ZSBiZWVuIGxvYWRlZCAqL1xuICBwcml2YXRlIHByb3ZpZGVyc0xvYWRlZCA9IGZhbHNlO1xuICBcbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBQdWJsaWMgQVBJICAgLS0tLVxuXG4gIC8qKlxuICAgKiBEaXNwYXRjaGVzIGFuIGV2ZW50IHRvIGFsbCByZWdpc3RlcmVkIGxpc3RlbmVycyBmb3IgdGhlIGdpdmVuIGtleS5cbiAgICogQHBhcmFtIGtleSBUaGUgZXZlbnQga2V5LlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgZXZlbnQgZGF0YSB0byBwYXNzIHRvIGxpc3RlbmVycy5cbiAgICovXG4gIGFzeW5jIGRpc3BhdGNoKGtleTogc3RyaW5nLCBkYXRhPzogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcHJvdmlkZXJzID0gYXdhaXQgdGhpcy5yZXNvbHZlUHJvdmlkZXJzKCk7XG4gICAgY29uc3QgbWF0Y2hlZCA9IHByb3ZpZGVycy5maWx0ZXIocCA9PiBwLmtleSA9PT0ga2V5KTtcblxuICAgIGlmICghbWF0Y2hlZC5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHByb3ZpZGVyIG9mIG1hdGNoZWQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IFByb21pc2UucmVzb2x2ZShcbiAgICAgICAgICBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgKCkgPT4gcHJvdmlkZXIuZXhlY3V0ZShkYXRhKSlcbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBbQVhQRGlzdHJpYnV0ZWRFdmVudExpc3RlbmVyU2VydmljZV0gUHJvdmlkZXIgZm9yIGtleT0nJHtrZXl9JyBmYWlsZWRgLCBlcnIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4vKipcbiAgICogRGlzcGF0Y2ggd2l0aCBhc3luYyByZXNwb25zZSAoZmlyc3QgbWF0Y2hpbmcgcHJvdmlkZXIsIHdpdGggcmV0cnkvdGltZW91dClcbiAgICovXG5wdWJsaWMgYXN5bmMgZGlzcGF0Y2hBc3luYzxULCBSPihcbiAga2V5OiBzdHJpbmcsXG4gIGRhdGE6IFQsXG4gIG9wdGlvbnM6IHsgdGltZW91dDogbnVtYmVyOyByZXRyaWVzOiBudW1iZXI7IHJldHJ5RGVsYXk6IG51bWJlciB9ID0ge1xuICAgIHRpbWVvdXQ6IDYwXzAwMCxcbiAgICByZXRyaWVzOiAzLFxuICAgIHJldHJ5RGVsYXk6IDEwMDAsXG4gIH1cbik6IFByb21pc2U8Uj4ge1xuICBjb25zdCBwcm92aWRlcnMgPSBhd2FpdCB0aGlzLnJlc29sdmVQcm92aWRlcnMoKTtcbiAgY29uc3QgbWF0Y2hlZCA9IHByb3ZpZGVycy5maWx0ZXIocCA9PiBwLmtleSA9PT0ga2V5KTtcblxuICBpZiAoIW1hdGNoZWQubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBObyBwcm92aWRlciBmb3VuZCBmb3Iga2V5PScke2tleX0nYCk7XG4gIH1cblxuICBjb25zdCBhdHRlbXB0ID0gKG46IG51bWJlcik6IFByb21pc2U8Uj4gPT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxSPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBsZXQgZmluaXNoZWQgPSBmYWxzZTtcblxuICAgICAgY29uc3QgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKCFmaW5pc2hlZCkge1xuICAgICAgICAgIGlmIChuIDwgb3B0aW9ucy5yZXRyaWVzKSB7ICAgICAgICAgIFxuICAgICAgICAgICAgcmVzb2x2ZShhdHRlbXB0KG4gKyAxKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlamVjdChcbiAgICAgICAgICAgICAgbmV3IEVycm9yKGBUaW1lb3V0OiBubyByZXNwb25zZSBmb3Iga2V5PScke2tleX0nIGFmdGVyICR7b3B0aW9ucy5yZXRyaWVzfSBhdHRlbXB0cy5gKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sIG9wdGlvbnMudGltZW91dCk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHByb3ZpZGVyID0gbWF0Y2hlZFswXTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsICgpID0+XG4gICAgICAgICAgcHJvdmlkZXIuZXhlY3V0ZShkYXRhKVxuICAgICAgICApO1xuXG4gICAgICAgIFByb21pc2UucmVzb2x2ZShyZXN1bHQpXG4gICAgICAgICAgLnRoZW4oKHI6IGFueSkgPT4ge1xuICAgICAgICAgICAgZmluaXNoZWQgPSB0cnVlO1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgICAgICAgIHJlc29sdmUocik7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gYXR0ZW1wdCgwKTtcbn1cblxuIC8qKlxuICAgKiBSZXNvbHZlIGFsbCBwcm92aWRlcnMgKGhhbmRsZSBib3RoIGRpcmVjdCBwcm92aWRlciBhbmQgUHJvbWlzZTxwcm92aWRlcj4pXG4gICAqL1xuIHByaXZhdGUgYXN5bmMgcmVzb2x2ZVByb3ZpZGVycygpOiBQcm9taXNlPEFYUERpc3RyaWJ1dGVkRXZlbnRMaXN0ZW5lclByb3ZpZGVyPGFueT5bXT4ge1xuICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgdGhpcy5saXN0ZW5lclByb3ZpZGVycy5tYXAocCA9PlxuICAgICAgcCBpbnN0YW5jZW9mIFByb21pc2UgPyBwIDogUHJvbWlzZS5yZXNvbHZlKHApXG4gICAgKVxuICApO1xufVxuXG5cbiAgLyoqXG4gICAqIFJldHVybnMgYWxsIGxpc3RlbmVycyBmb3IgYSBzcGVjaWZpYyBldmVudCBrZXkuXG4gICAqIEBwYXJhbSBrZXkgVGhlIGV2ZW50IGtleS5cbiAgICogQHJldHVybnMgQXJyYXkgb2YgbGlzdGVuZXJzIGZvciB0aGUga2V5LlxuICAgKi9cbiAgYXN5bmMgZ2V0TGlzdGVuZXJzKGtleTogc3RyaW5nKTogUHJvbWlzZTxBWFBEaXN0cmlidXRlZEV2ZW50TGlzdGVuZXJQcm92aWRlcjxhbnk+W10+IHtcbiAgICBhd2FpdCB0aGlzLmVuc3VyZVByb3ZpZGVyc0xvYWRlZCgpO1xuICAgIHJldHVybiB0aGlzLmxpc3RlbmVyc0J5S2V5LmdldChrZXkpIHx8IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYWxsIHJlZ2lzdGVyZWQgZXZlbnQga2V5cy5cbiAgICogQHJldHVybnMgQXJyYXkgb2YgYWxsIGV2ZW50IGtleXMgdGhhdCBoYXZlIGxpc3RlbmVycy5cbiAgICovXG4gIGFzeW5jIGdldFJlZ2lzdGVyZWRLZXlzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBhd2FpdCB0aGlzLmVuc3VyZVByb3ZpZGVyc0xvYWRlZCgpO1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMubGlzdGVuZXJzQnlLZXkua2V5cygpKTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgUHJpdmF0ZSBNZXRob2RzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBFbnN1cmVzIHRoYXQgYWxsIHByb3ZpZGVycyBoYXZlIGJlZW4gbG9hZGVkIGFuZCBjYWNoZWQuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGVuc3VyZVByb3ZpZGVyc0xvYWRlZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5wcm92aWRlcnNMb2FkZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBSZXNvbHZlIGFsbCBwcm92aWRlcnNcbiAgICBjb25zdCByZXNvbHZlZFByb3ZpZGVycyA9IGF3YWl0IFByb21pc2UuYWxsKHRoaXMubGlzdGVuZXJQcm92aWRlcnMpO1xuXG4gICAgLy8gR3JvdXAgbGlzdGVuZXJzIGJ5IGtleVxuICAgIGZvciAoY29uc3QgcHJvdmlkZXIgb2YgcmVzb2x2ZWRQcm92aWRlcnMpIHtcbiAgICAgIGlmIChwcm92aWRlcikge1xuICAgICAgICBjb25zdCBleGlzdGluZ0xpc3RlbmVycyA9IHRoaXMubGlzdGVuZXJzQnlLZXkuZ2V0KHByb3ZpZGVyLmtleSkgfHwgW107XG4gICAgICAgIGV4aXN0aW5nTGlzdGVuZXJzLnB1c2gocHJvdmlkZXIpO1xuICAgICAgICB0aGlzLmxpc3RlbmVyc0J5S2V5LnNldChwcm92aWRlci5rZXksIGV4aXN0aW5nTGlzdGVuZXJzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnByb3ZpZGVyc0xvYWRlZCA9IHRydWU7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIENhY2hlIE1hbmFnZW1lbnQgICAtLS0tXG5cbiAgLyoqIENsZWFycyB0aGUgbGlzdGVuZXJzIGNhY2hlIGFuZCBmb3JjZXMgcmVsb2FkIG9uIG5leHQgYWNjZXNzLiAqL1xuICBjbGVhckxpc3RlbmVyc0NhY2hlKCk6IHZvaWQge1xuICAgIHRoaXMubGlzdGVuZXJzQnlLZXkuY2xlYXIoKTtcbiAgICB0aGlzLnByb3ZpZGVyc0xvYWRlZCA9IGZhbHNlO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG59Il19","import { Injectable } from '@angular/core';\nimport { isUndefined } from 'lodash-es';\nimport { Subject } from 'rxjs';\nimport { AXPDataGenerator } from '../data/data-generator';\nimport * as i0 from \"@angular/core\";\nexport class AXPBroadcastEventService {\n constructor() {\n this.eventSubjects = new Map();\n this.pendingRequests = new Map();\n this.multiTabEventHistory = new Set(); // Prevent duplicate processing of the same event\n this.instanceId = AXPDataGenerator.uuid();\n this.channel = new BroadcastChannel('platform_global_events');\n // Handle incoming messages\n this.channel.onmessage = (event) => {\n const { type, payload, requestId, response, sourceId } = event.data;\n // Prevent processing the same event multiple times (multi-tab synchronization)\n if (requestId && this.multiTabEventHistory.has(requestId)) {\n return;\n }\n if (requestId) {\n this.multiTabEventHistory.add(requestId); // Store processed requestId\n setTimeout(() => this.multiTabEventHistory.delete(requestId), 10000); // Cleanup after 10 sec\n }\n // Handle responses to pending requests\n if (requestId && !isUndefined(response) && this.pendingRequests.has(requestId)) {\n this.pendingRequests.get(requestId)(response);\n this.pendingRequests.delete(requestId);\n return;\n }\n // Handle normal broadcast events\n // Ignore events originating from this same instance to avoid double-delivery\n if (sourceId && sourceId === this.instanceId) {\n return;\n }\n if (type && this.eventSubjects.has(type)) {\n this.eventSubjects.get(type).next({ data: payload, requestId });\n }\n };\n }\n /**\n * Publish an event without expecting a response\n */\n publish(type, payload) {\n this.channel.postMessage({ type, payload, sourceId: this.instanceId });\n // Local echo so same-tab listeners receive the event as well\n if (this.eventSubjects.has(type)) {\n this.eventSubjects.get(type).next({ data: payload });\n }\n }\n /**\n * Subscribe to an event\n */\n listen(type) {\n if (!this.eventSubjects.has(type)) {\n this.eventSubjects.set(type, new Subject());\n }\n return this.eventSubjects.get(type).asObservable();\n }\n /**\n * Unsubscribe from an event\n */\n unsubscribe(type) {\n if (this.eventSubjects.has(type)) {\n this.eventSubjects.get(type).complete();\n this.eventSubjects.delete(type);\n }\n }\n /**\n * Send a message and wait for a response with retry logic\n */\n async sendAndWaitForResponse(type, payload, options = {\n timeout: 60 * 60 * 1000,\n retries: 3,\n retryDelay: 1000,\n }) {\n const requestId = AXPDataGenerator.uuid();\n const attemptRequest = (attempt) => {\n return new Promise((resolve, reject) => {\n this.pendingRequests.set(requestId, resolve);\n this.channel.postMessage({ type, payload, requestId });\n setTimeout(() => {\n if (this.pendingRequests.has(requestId)) {\n this.pendingRequests.delete(requestId);\n if (attempt < options.retries) {\n console.warn(`Retrying request '${type}' (${attempt + 1}/${options.retries})...`);\n resolve(attemptRequest(attempt + 1)); // Retry request\n }\n else {\n reject(new Error(`Timeout: No response received for event '${type}' after ${options.retries} attempts.`));\n }\n }\n }, options.timeout);\n });\n };\n return attemptRequest(0);\n }\n /**\n * Respond to a request\n */\n respondToRequest(requestId, response) {\n if (!requestId) {\n console.warn('Invalid requestId. Cannot send response.');\n return;\n }\n this.channel.postMessage({ requestId, response });\n }\n /**\n * Cleanup when the service is destroyed\n */\n ngOnDestroy() {\n this.channel.close();\n // Complete all subjects\n this.eventSubjects.forEach((subject) => subject.complete());\n this.eventSubjects.clear();\n // Reject all pending requests to avoid dangling promises\n this.pendingRequests.forEach((resolve, requestId) => {\n resolve(Promise.reject(new Error(`Service destroyed. Request ${requestId} was not completed.`)));\n });\n this.pendingRequests.clear();\n // Cleanup multi-tab event history\n this.multiTabEventHistory.clear();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPBroadcastEventService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPBroadcastEventService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPBroadcastEventService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL2V2ZW50LXNlcnZpY2UvZXZlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDeEMsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFLMUQsTUFBTSxPQUFPLHdCQUF3QjtJQU9uQztRQUxRLGtCQUFhLEdBQUcsSUFBSSxHQUFHLEVBQXNELENBQUM7UUFDOUUsb0JBQWUsR0FBRyxJQUFJLEdBQUcsRUFBbUMsQ0FBQztRQUM3RCx5QkFBb0IsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDLENBQUMsaURBQWlEO1FBQ2xGLGVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUdwRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksZ0JBQWdCLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUU5RCwyQkFBMkI7UUFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNqQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDcEUsK0VBQStFO1lBQy9FLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDMUQsT0FBTztZQUNULENBQUM7WUFFRCxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNkLElBQUks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QUksQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1lBQ3pELE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXO1FBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUVyQix3QkFBd0I7UUFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFM0IseURBQXlEO1FBQ3pELElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxFQUFFO1lBQ2xELE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLDhCQUE4QixTQUFTLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25HLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUU3QixrQ0FBa0M7UUFDbEMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3BDLENBQUM7K0dBMUlVLHdCQUF3QjttSEFBeEIsd0JBQXdCLGNBRnZCLE1BQU07OzRGQUVQLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzVW5kZWZpbmVkIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYUERhdGFHZW5lcmF0b3IgfSBmcm9tICcuLi9kYXRhL2RhdGEtZ2VuZXJhdG9yJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFYUEJyb2FkY2FzdEV2ZW50U2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgY2hhbm5lbDogQnJvYWRjYXN0Q2hhbm5lbDtcbiAgcHJpdmF0ZSBldmVudFN1YmplY3RzID0gbmV3IE1hcDxzdHJpbmcsIFN1YmplY3Q8eyBkYXRhOiBhbnk7IHJlcXVlc3RJZD86IHN0cmluZyB9Pj4oKTtcbiAgcHJpdmF0ZSBwZW5kaW5nUmVxdWVzdHMgPSBuZXcgTWFwPHN0cmluZywgKHJlc3BvbnNlOiBhbnkpID0+IHZvaWQ+KCk7XG4gIHByaXZhdGUgbXVsdGlUYWJFdmVudEhpc3RvcnkgPSBuZXcgU2V0PHN0cmluZz4oKTsgLy8gUHJldmVudCBkdXBsaWNhdGUgcHJvY2Vzc2luZyBvZiB0aGUgc2FtZSBldmVudFxuICBwcml2YXRlIHJlYWRvbmx5IGluc3RhbmNlSWQgPSBBWFBEYXRhR2VuZXJhdG9yLnV1aWQoKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmNoYW5uZWwgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbCgncGxhdGZvcm1fZ2xvYmFsX2V2ZW50cycpO1xuXG4gICAgLy8gSGFuZGxlIGluY29taW5nIG1lc3NhZ2VzXG4gICAgdGhpcy5jaGFubmVsLm9ubWVzc2FnZSA9IChldmVudCkgPT4ge1xuICAgICAgY29uc3QgeyB0eXBlLCBwYXlsb2FkLCByZXF1ZXN0SWQsIHJlc3BvbnNlLCBzb3VyY2VJZCB9ID0gZXZlbnQuZGF0YTtcbiAgICAgIC8vIFByZXZlbnQgcHJvY2Vzc2luZyB0aGUgc2FtZSBldmVudCBtdWx0aXBsZSB0aW1lcyAobXVsdGktdGFiIHN5bmNocm9uaXphdGlvbilcbiAgICAgIGlmIChyZXF1ZXN0SWQgJiYgdGhpcy5tdWx0aVRhYkV2ZW50SGlzdG9yeS5oYXMocmVxdWVzdElkKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXF1ZXN0SWQpIHtcbiAgICAgICAgdGhpcy5tdWx0aVRhYkV2ZW50SGlzdG9yeS5hZGQocmVxdWVzdElkKTsgLy8gU3RvcmUgcHJvY2Vzc2VkIHJlcXVlc3RJZFxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMubXVsdGlUYWJFdmVudEhpc3RvcnkuZGVsZXRlKHJlcXVlc3RJZCksIDEwMDAwKTsgLy8gQ2xlYW51cCBhZnRlciAxMCBzZWNcbiAgICAgIH1cblxuICAgICAgLy8gSGFuZGxlIHJlc3BvbnNlcyB0byBwZW5kaW5nIHJlcXVlc3RzXG4gICAgICBpZiAocmVxdWVzdElkICYmICFpc1VuZGVmaW5lZChyZXNwb25zZSkgJiYgdGhpcy5wZW5kaW5nUmVxdWVzdHMuaGFzKHJlcXVlc3RJZCkpIHtcbiAgICAgICAgdGhpcy5wZW5kaW5nUmVxdWVzdHMuZ2V0KHJlcXVlc3RJZCkhKHJlc3BvbnNlKTtcbiAgICAgICAgdGhpcy5wZW5kaW5nUmVxdWVzdHMuZGVsZXRlKHJlcXVlc3RJZCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gSGFuZGxlIG5vcm1hbCBicm9hZGNhc3QgZXZlbnRzXG4gICAgICAvLyBJZ25vcmUgZXZlbnRzIG9yaWdpbmF0aW5nIGZyb20gdGhpcyBzYW1lIGluc3RhbmNlIHRvIGF2b2lkIGRvdWJsZS1kZWxpdmVyeVxuICAgICAgaWYgKHNvdXJjZUlkICYmIHNvdXJjZUlkID09PSB0aGlzLmluc3RhbmNlSWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGUgJiYgdGhpcy5ldmVudFN1YmplY3RzLmhhcyh0eXBlKSkge1xuICAgICAgICB0aGlzLmV2ZW50U3ViamVjdHMuZ2V0KHR5cGUpIS5uZXh0KHsgZGF0YTogcGF5bG9hZCwgcmVxdWVzdElkIH0pO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUHVibGlzaCBhbiBldmVudCB3aXRob3V0IGV4cGVjdGluZyBhIHJlc3BvbnNlXG4gICAqL1xuICBwdWJsaWMgcHVibGlzaDxUPih0eXBlOiBzdHJpbmcsIHBheWxvYWQ/OiBUKTogdm9pZCB7XG4gICAgdGhpcy5jaGFubmVsLnBvc3RNZXNzYWdlKHsgdHlwZSwgcGF5bG9hZCwgc291cmNlSWQ6IHRoaXMuaW5zdGFuY2VJZCB9KTtcbiAgICAvLyBMb2NhbCBlY2hvIHNvIHNhbWUtdGFiIGxpc3RlbmVycyByZWNlaXZlIHRoZSBldmVudCBhcyB3ZWxsXG4gICAgaWYgKHRoaXMuZXZlbnRTdWJqZWN0cy5oYXModHlwZSkpIHtcbiAgICAgIHRoaXMuZXZlbnRTdWJqZWN0cy5nZXQodHlwZSkhLm5leHQoeyBkYXRhOiBwYXlsb2FkIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gYW4gZXZlbnRcbiAgICovXG4gIHB1YmxpYyBsaXN0ZW48VD4odHlwZTogc3RyaW5nKTogT2JzZXJ2YWJsZTx7IGRhdGE6IFQ7IHJlcXVlc3RJZD86IHN0cmluZyB9PiB7XG4gICAgaWYgKCF0aGlzLmV2ZW50U3ViamVjdHMuaGFzKHR5cGUpKSB7XG4gICAgICB0aGlzLmV2ZW50U3ViamVjdHMuc2V0KHR5cGUsIG5ldyBTdWJqZWN0PHsgZGF0YTogVDsgcmVxdWVzdElkPzogc3RyaW5nIH0+KCkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5ldmVudFN1YmplY3RzLmdldCh0eXBlKSEuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogVW5zdWJzY3JpYmUgZnJvbSBhbiBldmVudFxuICAgKi9cbiAgcHVibGljIHVuc3Vic2NyaWJlKHR5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmV2ZW50U3ViamVjdHMuaGFzKHR5cGUpKSB7XG4gICAgICB0aGlzLmV2ZW50U3ViamVjdHMuZ2V0KHR5cGUpIS5jb21wbGV0ZSgpO1xuICAgICAgdGhpcy5ldmVudFN1YmplY3RzLmRlbGV0ZSh0eXBlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2VuZCBhIG1lc3NhZ2UgYW5kIHdhaXQgZm9yIGEgcmVzcG9uc2Ugd2l0aCByZXRyeSBsb2dpY1xuICAgKi9cbiAgcHVibGljIGFzeW5jIHNlbmRBbmRXYWl0Rm9yUmVzcG9uc2U8VCwgUj4oXG4gICAgdHlwZTogc3RyaW5nLFxuICAgIHBheWxvYWQ/OiBULFxuICAgIG9wdGlvbnM6IHsgdGltZW91dDogbnVtYmVyOyByZXRyaWVzOiBudW1iZXI7IHJldHJ5RGVsYXk6IG51bWJlciB9ID0ge1xuICAgICAgdGltZW91dDogNjAgKiA2MCAqIDEwMDAsXG4gICAgICByZXRyaWVzOiAzLFxuICAgICAgcmV0cnlEZWxheTogMTAwMCxcbiAgICB9LFxuICApOiBQcm9taXNlPFI+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSBBWFBEYXRhR2VuZXJhdG9yLnV1aWQoKTtcblxuICAgIGNvbnN0IGF0dGVtcHRSZXF1ZXN0ID0gKGF0dGVtcHQ6IG51bWJlcik6IFByb21pc2U8Uj4gPT4ge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPFI+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgdGhpcy5wZW5kaW5nUmVxdWVzdHMuc2V0KHJlcXVlc3RJZCwgcmVzb2x2ZSk7XG5cbiAgICAgICAgdGhpcy5jaGFubmVsLnBvc3RNZXNzYWdlKHsgdHlwZSwgcGF5bG9hZCwgcmVxdWVzdElkIH0pO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLnBlbmRpbmdSZXF1ZXN0cy5oYXMocmVxdWVzdElkKSkge1xuICAgICAgICAgICAgdGhpcy5wZW5kaW5nUmVxdWVzdHMuZGVsZXRlKHJlcXVlc3RJZCk7XG4gICAgICAgICAgICBpZiAoYXR0ZW1wdCA8IG9wdGlvbnMucmV0cmllcykge1xuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFJldHJ5aW5nIHJlcXVlc3QgJyR7dHlwZX0nICgke2F0dGVtcHQgKyAxfS8ke29wdGlvbnMucmV0cmllc30pLi4uYCk7XG4gICAgICAgICAgICAgIHJlc29sdmUoYXR0ZW1wdFJlcXVlc3QoYXR0ZW1wdCArIDEpKTsgLy8gUmV0cnkgcmVxdWVzdFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgVGltZW91dDogTm8gcmVzcG9uc2UgcmVjZWl2ZWQgZm9yIGV2ZW50ICcke3R5cGV9JyBhZnRlciAke29wdGlvbnMucmV0cmllc30gYXR0ZW1wdHMuYCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgb3B0aW9ucy50aW1lb3V0KTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICByZXR1cm4gYXR0ZW1wdFJlcXVlc3QoMCk7XG4gIH1cblxuICAvKipcbiAgICogUmVzcG9uZCB0byBhIHJlcXVlc3RcbiAgICovXG4gIHB1YmxpYyByZXNwb25kVG9SZXF1ZXN0KHJlcXVlc3RJZDogc3RyaW5nLCByZXNwb25zZTogYW55KTogdm9pZCB7XG4gICAgaWYgKCFyZXF1ZXN0SWQpIHtcbiAgICAgIGNvbnNvbGUud2FybignSW52YWxpZCByZXF1ZXN0SWQuIENhbm5vdCBzZW5kIHJlc3BvbnNlLicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNoYW5uZWwucG9zdE1lc3NhZ2UoeyByZXF1ZXN0SWQsIHJlc3BvbnNlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFudXAgd2hlbiB0aGUgc2VydmljZSBpcyBkZXN0cm95ZWRcbiAgICovXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY2hhbm5lbC5jbG9zZSgpO1xuXG4gICAgLy8gQ29tcGxldGUgYWxsIHN1YmplY3RzXG4gICAgdGhpcy5ldmVudFN1YmplY3RzLmZvckVhY2goKHN1YmplY3QpID0+IHN1YmplY3QuY29tcGxldGUoKSk7XG4gICAgdGhpcy5ldmVudFN1YmplY3RzLmNsZWFyKCk7XG5cbiAgICAvLyBSZWplY3QgYWxsIHBlbmRpbmcgcmVxdWVzdHMgdG8gYXZvaWQgZGFuZ2xpbmcgcHJvbWlzZXNcbiAgICB0aGlzLnBlbmRpbmdSZXF1ZXN0cy5mb3JFYWNoKChyZXNvbHZlLCByZXF1ZXN0SWQpID0+IHtcbiAgICAgIHJlc29sdmUoUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKGBTZXJ2aWNlIGRlc3Ryb3llZC4gUmVxdWVzdCAke3JlcXVlc3RJZH0gd2FzIG5vdCBjb21wbGV0ZWQuYCkpKTtcbiAgICB9KTtcbiAgICB0aGlzLnBlbmRpbmdSZXF1ZXN0cy5jbGVhcigpO1xuXG4gICAgLy8gQ2xlYW51cCBtdWx0aS10YWIgZXZlbnQgaGlzdG9yeVxuICAgIHRoaXMubXVsdGlUYWJFdmVudEhpc3RvcnkuY2xlYXIoKTtcbiAgfVxufVxuIl19","import { Injectable, InjectionToken, inject } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXPExpressionEvaluatorScopeProviderContext {\n constructor() {\n this.scopes = {};\n }\n addScope(namespace, functions) {\n this.scopes[namespace] = { ...this.scopes[namespace], ...functions };\n }\n getScopes() {\n return this.scopes;\n }\n}\nexport const AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER = new InjectionToken('AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER');\nexport class AXPExpressionEvaluatorScopeProviderService {\n constructor() {\n this.providers = inject(AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, { optional: true });\n this.cache = null;\n }\n async load() {\n if (this.cache)\n return;\n const context = new AXPExpressionEvaluatorScopeProviderContext();\n if (Array.isArray(this.providers)) {\n for (const provider of this.providers) {\n await provider.provide(context);\n }\n }\n this.cache = context.getScopes();\n }\n async getScopesAsync() {\n await this.load();\n return this.cache || {};\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPExpressionEvaluatorScopeProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPExpressionEvaluatorScopeProviderService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPExpressionEvaluatorScopeProviderService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwcmVzc2lvbi1ldmFsdWF0b3Itc2NvcGUtcHJvdmlkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL2V4cHJlc3Npb24tZXZhbHVhdG9yL2V4cHJlc3Npb24tZXZhbHVhdG9yLXNjb3BlLXByb3ZpZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU9uRSxNQUFNLE9BQU8sMENBQTBDO0lBQXZEO1FBQ1ksV0FBTSxHQUFnQyxFQUFFLENBQUM7SUFPckQsQ0FBQztJQU5HLFFBQVEsQ0FBQyxTQUFpQixFQUFFLFNBQXVDO1FBQy9ELElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxTQUFTLEVBQUUsQ0FBQztJQUN6RSxDQUFDO0lBQ0QsU0FBUztRQUNMLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0NBQ0o7QUFHRCxNQUFNLENBQUMsTUFBTSx1Q0FBdUMsR0FBRyxJQUFJLGNBQWMsQ0FDckUseUNBQXlDLENBQzVDLENBQUM7QUFHRixNQUFNLE9BQU8sMENBQTBDO0lBRHZEO1FBRVksY0FBUyxHQUFHLE1BQU0sQ0FBQyx1Q0FBdUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2hGLFVBQUssR0FBdUMsSUFBSSxDQUFDO0tBaUI1RDtJQWZXLEtBQUssQ0FBQyxJQUFJO1FBQ2QsSUFBSSxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU87UUFDdkIsTUFBTSxPQUFPLEdBQUcsSUFBSSwwQ0FBMEMsRUFBRSxDQUFDO1FBQ2pFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNoQyxLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDcEMsTUFBTSxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3BDLENBQUM7UUFDTCxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVNLEtBQUssQ0FBQyxjQUFjO1FBQ3ZCLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDNUIsQ0FBQzsrR0FsQlEsMENBQTBDO21IQUExQywwQ0FBMEMsY0FEN0IsTUFBTTs7NEZBQ25CLDBDQUEwQztrQkFEdEQsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2NvcGUgfSBmcm9tICcuL2V4cHJlc3Npb24tZXZhbHVhdG9yLnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYUEV4cHJlc3Npb25FdmFsdWF0b3JTY29wZVByb3ZpZGVyIHtcbiAgICBwcm92aWRlKGNvbnRleHQ6IEFYUEV4cHJlc3Npb25FdmFsdWF0b3JTY29wZVByb3ZpZGVyQ29udGV4dCk6IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCBjbGFzcyBBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2NvcGVQcm92aWRlckNvbnRleHQge1xuICAgIHByaXZhdGUgc2NvcGVzOiBBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2NvcGUgPSB7fTtcbiAgICBhZGRTY29wZShuYW1lc3BhY2U6IHN0cmluZywgZnVuY3Rpb25zOiB7IFtuYW1lOiBzdHJpbmddOiBGdW5jdGlvbiB9KSB7XG4gICAgICAgIHRoaXMuc2NvcGVzW25hbWVzcGFjZV0gPSB7IC4uLnRoaXMuc2NvcGVzW25hbWVzcGFjZV0sIC4uLmZ1bmN0aW9ucyB9O1xuICAgIH1cbiAgICBnZXRTY29wZXMoKTogQVhQRXhwcmVzc2lvbkV2YWx1YXRvclNjb3BlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NvcGVzO1xuICAgIH1cbn1cbmV4cG9ydCB0eXBlIEFYUEV4cHJlc3Npb25FdmFsdWF0b3JTY29wZVByb3ZpZGVycyA9IEFYUEV4cHJlc3Npb25FdmFsdWF0b3JTY29wZVByb3ZpZGVyW10gfCAoKCkgPT4gQVhQRXhwcmVzc2lvbkV2YWx1YXRvclNjb3BlUHJvdmlkZXJbXSk7XG5cbmV4cG9ydCBjb25zdCBBWFBfRVhQUkVTU0lPTl9FVkFMVUFUT1JfU0NPUEVfUFJPVklERVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48QVhQRXhwcmVzc2lvbkV2YWx1YXRvclNjb3BlUHJvdmlkZXJzPihcbiAgICAnQVhQX0VYUFJFU1NJT05fRVZBTFVBVE9SX1NDT1BFX1BST1ZJREVSJ1xuKTtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2NvcGVQcm92aWRlclNlcnZpY2Uge1xuICAgIHByaXZhdGUgcHJvdmlkZXJzID0gaW5qZWN0KEFYUF9FWFBSRVNTSU9OX0VWQUxVQVRPUl9TQ09QRV9QUk9WSURFUiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgICBwcml2YXRlIGNhY2hlOiBBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2NvcGUgfCBudWxsID0gbnVsbDtcblxuICAgIHByaXZhdGUgYXN5bmMgbG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuY2FjaGUpIHJldHVybjtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IG5ldyBBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2NvcGVQcm92aWRlckNvbnRleHQoKTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5wcm92aWRlcnMpKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHByb3ZpZGVyIG9mIHRoaXMucHJvdmlkZXJzKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgcHJvdmlkZXIucHJvdmlkZShjb250ZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNhY2hlID0gY29udGV4dC5nZXRTY29wZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0U2NvcGVzQXN5bmMoKTogUHJvbWlzZTxBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2NvcGU+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5sb2FkKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmNhY2hlIHx8IHt9O1xuICAgIH1cbn0gIl19","import { Injectable, inject } from '@angular/core';\nimport { AXPExpressionEvaluatorScopeProviderService } from './expression-evaluator-scope-provider.service';\nimport * as i0 from \"@angular/core\";\nexport class AXPExpressionEvaluatorService {\n constructor() {\n // Memoization cache for compiled expressions\n this.expressionCache = new Map();\n this.providerService = inject(AXPExpressionEvaluatorScopeProviderService);\n }\n getOrCompileFunction(expression) {\n if (!this.expressionCache.has(expression)) {\n // Check if expression contains multiple statements (has semicolons or newlines)\n const hasMultipleStatements = expression.includes(';') || expression.includes('\\n');\n let fn;\n if (hasMultipleStatements) {\n // For multiple statements, execute them in sequence and return the last expression\n fn = new Function('scope', `with (scope) { return (async function() { ${expression} })(); }`);\n }\n else {\n // For single expressions, use return\n fn = new Function('scope', `with (scope) { return (async function() { return ${expression}; })(); }`);\n }\n this.expressionCache.set(expression, fn);\n }\n return this.expressionCache.get(expression);\n }\n async getMergedScope(userScope) {\n const pluginScopes = await this.providerService.getScopesAsync();\n // Merge pluginScopes and userScope (userScope takes precedence)\n return { ...pluginScopes, ...userScope };\n }\n async evaluate(source, scope = {}) {\n try {\n const mergedScope = await this.getMergedScope(scope);\n if (typeof source === 'string' && source.includes('{{')) {\n return await this.evaluateStringExpression(source, mergedScope);\n }\n else if (Array.isArray(source)) {\n const evaluatedArray = [];\n for (const item of source) {\n evaluatedArray.push(await this.evaluate(item, mergedScope));\n }\n return evaluatedArray;\n }\n else if (typeof source === 'object' && source !== null) {\n const evaluatedObject = {};\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n evaluatedObject[key] = await this.evaluate(source[key], mergedScope);\n }\n }\n return evaluatedObject;\n }\n else {\n return source;\n }\n }\n catch (error) {\n console.error('Expression evaluator - Error evaluating expression:', source, error);\n return false;\n }\n }\n async evaluateStringExpression(templateExpression, scope) {\n // Check if the input is exactly a single {{ ... }} expression (handle multiline)\n const exactMatch = templateExpression.match(/^\\s*\\{\\{\\s*([\\s\\S]*?)\\s*\\}\\}\\s*$/);\n if (exactMatch) {\n const expression = exactMatch[1];\n const sandbox = this.getOrCompileFunction(expression);\n const result = await sandbox(scope);\n return result;\n }\n // Otherwise, interpolate all {{ ... }} expressions in the string\n const regex = /\\{\\{\\s*([\\s\\S]*?)\\s*\\}\\}/g;\n // Collect all matches and their positions\n const matches = [];\n let match;\n while ((match = regex.exec(templateExpression)) !== null) {\n matches.push({\n expression: match[1],\n start: match.index,\n end: regex.lastIndex,\n raw: match[0],\n });\n }\n // Evaluate all expressions in parallel\n const values = await Promise.all(matches.map((m) => {\n const sandbox = this.getOrCompileFunction(m.expression);\n return sandbox(scope);\n }));\n // Reconstruct the string with evaluated values\n let result = '';\n let lastIndex = 0;\n matches.forEach((m, i) => {\n result += templateExpression.slice(lastIndex, m.start);\n const value = values[i];\n result += value !== undefined && value !== null ? value : '';\n lastIndex = m.end;\n });\n result += templateExpression.slice(lastIndex);\n return result;\n }\n isExpression(expression) {\n if (typeof expression === 'string') {\n return expression.includes('{{');\n }\n return false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPExpressionEvaluatorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPExpressionEvaluatorService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPExpressionEvaluatorService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwcmVzc2lvbi1ldmFsdWF0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL2V4cHJlc3Npb24tZXZhbHVhdG9yL2V4cHJlc3Npb24tZXZhbHVhdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLDBDQUEwQyxFQUFFLE1BQU0sK0NBQStDLENBQUM7O0FBSzNHLE1BQU0sT0FBTyw2QkFBNkI7SUFEMUM7UUFFRSw2Q0FBNkM7UUFDckMsb0JBQWUsR0FBRyxJQUFJLEdBQUcsRUFBb0IsQ0FBQztRQUM5QyxvQkFBZSxHQUFHLE1BQU0sQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO0tBdUc5RTtJQXJHUyxvQkFBb0IsQ0FBQyxVQUFrQjtRQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUMxQyxnRkFBZ0Y7WUFDaEYsTUFBTSxxQkFBcUIsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFcEYsSUFBSSxFQUFZLENBQUM7WUFDakIsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO2dCQUMxQixtRkFBbUY7Z0JBQ25GLEVBQUUsR0FBRyxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsNkNBQTZDLFVBQVUsVUFBVSxDQUFDLENBQUM7WUFDaEcsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLHFDQUFxQztnQkFDckMsRUFBRSxHQUFHLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxvREFBb0QsVUFBVSxXQUFXLENBQUMsQ0FBQztZQUN4RyxDQUFDO1lBRUQsSUFBSSxDQUFDLGVBQWUsQ0FB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Q0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5QyxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU0sWUFBWSxDQUFDLFVBQWtCO1FBQ3BDLElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbkMsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7K0dBekdVLDZCQUE2QjttSEFBN0IsNkJBQTZCLGNBRGhCLE1BQU07OzRGQUNuQiw2QkFBNkI7a0JBRHpDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2NvcGVQcm92aWRlclNlcnZpY2UgfSBmcm9tICcuL2V4cHJlc3Npb24tZXZhbHVhdG9yLXNjb3BlLXByb3ZpZGVyLnNlcnZpY2UnO1xuXG5leHBvcnQgdHlwZSBBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2NvcGUgPSB7IFtuYW1lOiBzdHJpbmddOiB7IFtuYW1lOiBzdHJpbmddOiBGdW5jdGlvbiB9IH07XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQVhQRXhwcmVzc2lvbkV2YWx1YXRvclNlcnZpY2Uge1xuICAvLyBNZW1vaXphdGlvbiBjYWNoZSBmb3IgY29tcGlsZWQgZXhwcmVzc2lvbnNcbiAgcHJpdmF0ZSBleHByZXNzaW9uQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgRnVuY3Rpb24+KCk7XG4gIHByaXZhdGUgcHJvdmlkZXJTZXJ2aWNlID0gaW5qZWN0KEFYUEV4cHJlc3Npb25FdmFsdWF0b3JTY29wZVByb3ZpZGVyU2VydmljZSk7XG5cbiAgcHJpdmF0ZSBnZXRPckNvbXBpbGVGdW5jdGlvbihleHByZXNzaW9uOiBzdHJpbmcpOiBGdW5jdGlvbiB7XG4gICAgaWYgKCF0aGlzLmV4cHJlc3Npb25DYWNoZS5oYXMoZXhwcmVzc2lvbikpIHtcbiAgICAgIC8vIENoZWNrIGlmIGV4cHJlc3Npb24gY29udGFpbnMgbXVsdGlwbGUgc3RhdGVtZW50cyAoaGFzIHNlbWljb2xvbnMgb3IgbmV3bGluZXMpXG4gICAgICBjb25zdCBoYXNNdWx0aXBsZVN0YXRlbWVudHMgPSBleHByZXNzaW9uLmluY2x1ZGVzKCc7JykgfHwgZXhwcmVzc2lvbi5pbmNsdWRlcygnXFxuJyk7XG5cbiAgICAgIGxldCBmbjogRnVuY3Rpb247XG4gICAgICBpZiAoaGFzTXVsdGlwbGVTdGF0ZW1lbnRzKSB7XG4gICAgICAgIC8vIEZvciBtdWx0aXBsZSBzdGF0ZW1lbnRzLCBleGVjdXRlIHRoZW0gaW4gc2VxdWVuY2UgYW5kIHJldHVybiB0aGUgbGFzdCBleHByZXNzaW9uXG4gICAgICAgIGZuID0gbmV3IEZ1bmN0aW9uKCdzY29wZScsIGB3aXRoIChzY29wZSkgeyByZXR1cm4gKGFzeW5jIGZ1bmN0aW9uKCkgeyAke2V4cHJlc3Npb259IH0pKCk7IH1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEZvciBzaW5nbGUgZXhwcmVzc2lvbnMsIHVzZSByZXR1cm5cbiAgICAgICAgZm4gPSBuZXcgRnVuY3Rpb24oJ3Njb3BlJywgYHdpdGggKHNjb3BlKSB7IHJldHVybiAoYXN5bmMgZnVuY3Rpb24oKSB7IHJldHVybiAke2V4cHJlc3Npb259OyB9KSgpOyB9YCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZXhwcmVzc2lvbkNhY2hlLnNldChleHByZXNzaW9uLCBmbik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmV4cHJlc3Npb25DYWNoZS5nZXQoZXhwcmVzc2lvbikhO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRNZXJnZWRTY29wZSh1c2VyU2NvcGU6IEFYUEV4cHJlc3Npb25FdmFsdWF0b3JTY29wZSk6IFByb21pc2U8QVhQRXhwcmVzc2lvbkV2YWx1YXRvclNjb3BlPiB7XG4gICAgY29uc3QgcGx1Z2luU2NvcGVzID0gYXdhaXQgdGhpcy5wcm92aWRlclNlcnZpY2UuZ2V0U2NvcGVzQXN5bmMoKTtcbiAgICAvLyBNZXJnZSBwbHVnaW5TY29wZXMgYW5kIHVzZXJTY29wZSAodXNlclNjb3BlIHRha2VzIHByZWNlZGVuY2UpXG4gICAgcmV0dXJuIHsgLi4ucGx1Z2luU2NvcGVzLCAuLi51c2VyU2NvcGUgfTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBldmFsdWF0ZShzb3VyY2U6IGFueSB8IGFueVtdLCBzY29wZTogQVhQRXhwcmVzc2lvbkV2YWx1YXRvclNjb3BlID0ge30pOiBQcm9taXNlPGFueT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBtZXJnZWRTY29wZSA9IGF3YWl0IHRoaXMuZ2V0TWVyZ2VkU2NvcGUoc2NvcGUpO1xuICAgICAgaWYgKHR5cGVvZiBzb3VyY2UgPT09ICdzdHJpbmcnICYmIHNvdXJjZS5pbmNsdWRlcygne3snKSkge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5ldmFsdWF0ZVN0cmluZ0V4cHJlc3Npb24oc291cmNlLCBtZXJnZWRTY29wZSk7XG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoc291cmNlKSkge1xuICAgICAgICBjb25zdCBldmFsdWF0ZWRBcnJheSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2Ygc291cmNlKSB7XG4gICAgICAgICAgZXZhbHVhdGVkQXJyYXkucHVzaChhd2FpdCB0aGlzLmV2YWx1YXRlKGl0ZW0sIG1lcmdlZFNjb3BlKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGV2YWx1YXRlZEFycmF5O1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygc291cmNlID09PSAnb2JqZWN0JyAmJiBzb3VyY2UgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgZXZhbHVhdGVkT2JqZWN0OiBhbnkgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gc291cmNlKSB7XG4gICAgICAgICAgaWYgKHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICBldmFsdWF0ZWRPYmplY3Rba2V5XSA9IGF3YWl0IHRoaXMuZXZhbHVhdGUoc291cmNlW2tleV0sIG1lcmdlZFNjb3BlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGV2YWx1YXRlZE9iamVjdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0V4cHJlc3Npb24gZXZhbHVhdG9yIC0gRXJyb3IgZXZhbHVhdGluZyBleHByZXNzaW9uOicsIHNvdXJjZSwgZXJyb3IpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZXZhbHVhdGVTdHJpbmdFeHByZXNzaW9uKHRlbXBsYXRlRXhwcmVzc2lvbjogc3RyaW5nLCBzY29wZTogQVhQRXhwcmVzc2lvbkV2YWx1YXRvclNjb3BlKTogUHJvbWlzZTxhbnk+IHtcbiAgICAvLyBDaGVjayBpZiB0aGUgaW5wdXQgaXMgZXhhY3RseSBhIHNpbmdsZSB7eyAuLi4gfX0gZXhwcmVzc2lvbiAoaGFuZGxlIG11bHRpbGluZSlcbiAgICBjb25zdCBleGFjdE1hdGNoID0gdGVtcGxhdGVFeHByZXNzaW9uLm1hdGNoKC9eXFxzKlxce1xce1xccyooW1xcc1xcU10qPylcXHMqXFx9XFx9XFxzKiQvKTtcbiAgICBpZiAoZXhhY3RNYXRjaCkge1xuICAgICAgY29uc3QgZXhwcmVzc2lvbiA9IGV4YWN0TWF0Y2hbMV07XG4gICAgICBjb25zdCBzYW5kYm94ID0gdGhpcy5nZXRPckNvbXBpbGVGdW5jdGlvbihleHByZXNzaW9uKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNhbmRib3goc2NvcGUpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgLy8gT3RoZXJ3aXNlLCBpbnRlcnBvbGF0ZSBhbGwge3sgLi4uIH19IGV4cHJlc3Npb25zIGluIHRoZSBzdHJpbmdcbiAgICBjb25zdCByZWdleCA9IC9cXHtcXHtcXHMqKFtcXHNcXFNdKj8pXFxzKlxcfVxcfS9nO1xuICAgIC8vIENvbGxlY3QgYWxsIG1hdGNoZXMgYW5kIHRoZWlyIHBvc2l0aW9uc1xuICAgIGNvbnN0IG1hdGNoZXMgPSBbXTtcbiAgICBsZXQgbWF0Y2g7XG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4LmV4ZWModGVtcGxhdGVFeHByZXNzaW9uKSkgIT09IG51bGwpIHtcbiAgICAgIG1hdGNoZXMucHVzaCh7XG4gICAgICAgIGV4cHJlc3Npb246IG1hdGNoWzFdLFxuICAgICAgICBzdGFydDogbWF0Y2guaW5kZXgsXG4gICAgICAgIGVuZDogcmVnZXgubGFzdEluZGV4LFxuICAgICAgICByYXc6IG1hdGNoWzBdLFxuICAgICAgfSk7XG4gICAgfVxuICAgIC8vIEV2YWx1YXRlIGFsbCBleHByZXNzaW9ucyBpbiBwYXJhbGxlbFxuICAgIGNvbnN0IHZhbHVlcyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgbWF0Y2hlcy5tYXAoKG0pID0+IHtcbiAgICAgICAgY29uc3Qgc2FuZGJveCA9IHRoaXMuZ2V0T3JDb21waWxlRnVuY3Rpb24obS5leHByZXNzaW9uKTtcbiAgICAgICAgcmV0dXJuIHNhbmRib3goc2NvcGUpO1xuICAgICAgfSksXG4gICAgKTtcbiAgICAvLyBSZWNvbnN0cnVjdCB0aGUgc3RyaW5nIHdpdGggZXZhbHVhdGVkIHZhbHVlc1xuICAgIGxldCByZXN1bHQgPSAnJztcbiAgICBsZXQgbGFzdEluZGV4ID0gMDtcbiAgICBtYXRjaGVzLmZvckVhY2goKG0sIGkpID0+IHtcbiAgICAgIHJlc3VsdCArPSB0ZW1wbGF0ZUV4cHJlc3Npb24uc2xpY2UobGFzdEluZGV4LCBtLnN0YXJ0KTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdmFsdWVzW2ldO1xuICAgICAgcmVzdWx0ICs9IHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IG51bGwgPyB2YWx1ZSA6ICcnO1xuICAgICAgbGFzdEluZGV4ID0gbS5lbmQ7XG4gICAgfSk7XG4gICAgcmVzdWx0ICs9IHRlbXBsYXRlRXhwcmVzc2lvbi5zbGljZShsYXN0SW5kZXgpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgaXNFeHByZXNzaW9uKGV4cHJlc3Npb246IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlb2YgZXhwcmVzc2lvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBleHByZXNzaW9uLmluY2x1ZGVzKCd7eycpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdfQ==","import { Injectable, Injector, inject, runInInjectionContext } from '@angular/core';\nimport { AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, } from '../distributed-events/distributed-event-listener.provider';\nimport * as i0 from \"@angular/core\";\nexport class AXPHookService {\n constructor() {\n this.listenerProviders = inject(AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, { optional: true }) || [];\n this.injector = inject(Injector);\n }\n /**\n * Resolve all providers (handle both direct providers and Promise<provider>)\n */\n async resolveProviders() {\n return Promise.all(this.listenerProviders.map(p => p instanceof Promise ? p : Promise.resolve(p)));\n }\n /**\n * Fire sync hooks (fire-and-forget).\n * All providers with the given key will be executed.\n * Execution is not awaited.\n */\n fire(key, data) {\n this.resolveProviders().then(providers => {\n providers\n .filter(p => p.key === key)\n .sort((a, b) => (a.priority ?? 0) - (b.priority ?? 0))\n .forEach(p => {\n try {\n runInInjectionContext(this.injector, () => p.execute(data));\n }\n catch (err) {\n console.error(`[AXPHookService] Hook '${key}' failed`, err);\n }\n });\n });\n }\n /**\n * Run async hooks sequentially (waterfall).\n * The output of each hook is passed as input to the next hook.\n * Returns the final merged data after all hooks are executed.\n */\n async runAsync(key, initialData) {\n const providers = (await this.resolveProviders())\n .filter(p => p.key === key)\n .sort((a, b) => (a.priority ?? 0) - (b.priority ?? 0));\n let data = initialData;\n for (const p of providers) {\n data = await Promise.resolve(runInInjectionContext(this.injector, () => p.execute(data)));\n }\n return data;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPHookService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPHookService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPHookService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL2hvb2svdXRpbGwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUNMLHVDQUF1QyxHQUV4QyxNQUFNLDJEQUEyRCxDQUFDOztBQUduRSxNQUFNLE9BQU8sY0FBYztJQUQzQjtRQUVtQixzQkFBaUIsR0FDaEMsTUFBTSxDQUFDLHVDQUF1QyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNELGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7S0FtRDlDO0lBakRDOztPQUVHO0lBQ0ssS0FBSyxDQUFDLGdCQUFnQjtRQUM1QixPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQ2hCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDN0IsQ0FBQyxZQUFZLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUM5QyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLElBQUksQ0FBSSxHQUFXLEVBQUUsSUFBTztRQUNqQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDdkMsU0FBUztpQkFDTixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQztpQkFDMUIsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQztpQkFDckQsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNYLElBQUksQ0FBQztvQkFDSCxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDOUQsQ0FBQztnQkFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO29CQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEdBQUcsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUM5RCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLFFBQVEsQ0FBSSxHQUFXLEVBQUUsV0FBYztRQUNsRCxNQUFNLFNBQVMsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7YUFDOUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUM7YUFDMUIsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXpELElBQUksSUFBSSxHQUFHLFdBQVcsQ0FBQztRQUN2QixLQUFLLE1BQU0sQ0FBQyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQzFCLElBQUksR0FBRyxNQUFNLE9BQU8sQ0FBQyxPQUFPLENBQzFCLHFCQUFxQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUM1RCxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzsrR0FyRFUsY0FBYzttSEFBZCxjQUFjLGNBREQsTUFBTTs7NEZBQ25CLGNBQWM7a0JBRDFCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIGluamVjdCwgcnVuSW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBWFBfRElTVFJJQlVURURfRVZFTlRfTElTVEVORVJfUFJPVklERVIsXG4gIEFYUERpc3RyaWJ1dGVkRXZlbnRMaXN0ZW5lclByb3ZpZGVyLFxufSBmcm9tICcuLi9kaXN0cmlidXRlZC1ldmVudHMvZGlzdHJpYnV0ZWQtZXZlbnQtbGlzdGVuZXIucHJvdmlkZXInO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFYUEhvb2tTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBsaXN0ZW5lclByb3ZpZGVycyA9XG4gICAgaW5qZWN0KEFYUF9ESVNUUklCVVRFRF9FVkVOVF9MSVNURU5FUl9QUk9WSURFUiwgeyBvcHRpb25hbDogdHJ1ZSB9KSB8fCBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgYWxsIHByb3ZpZGVycyAoaGFuZGxlIGJvdGggZGlyZWN0IHByb3ZpZGVycyBhbmQgUHJvbWlzZTxwcm92aWRlcj4pXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHJlc29sdmVQcm92aWRlcnMoKTogUHJvbWlzZTxBWFBEaXN0cmlidXRlZEV2ZW50TGlzdGVuZXJQcm92aWRlcjxhbnksIGFueT5bXT4ge1xuICAgIHJldHVybiBQcm9taXNlLmFsbChcbiAgICAgIHRoaXMubGlzdGVuZXJQcm92aWRlcnMubWFwKHAgPT5cbiAgICAgICAgcCBpbnN0YW5jZW9mIFByb21pc2UgPyBwIDogUHJvbWlzZS5yZXNvbHZlKHApXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlIHN5bmMgaG9va3MgKGZpcmUtYW5kLWZvcmdldCkuXG4gICAqIEFsbCBwcm92aWRlcnMgd2l0aCB0aGUgZ2l2ZW4ga2V5IHdpbGwgYmUgZXhlY3V0ZWQuXG4gICAqIEV4ZWN1dGlvbiBpcyBub3QgYXdhaXRlZC5cbiAgICovXG4gIHB1YmxpYyBmaXJlPFQ+KGtleTogc3RyaW5nLCBkYXRhOiBUKTogdm9pZCB7XG4gICAgdGhpcy5yZXNvbHZlUHJvdmlkZXJzKCkudGhlbihwcm92aWRlcnMgPT4ge1xuICAgICAgcHJvdmlkZXJzXG4gICAgICAgIC5maWx0ZXIocCA9PiBwLmtleSA9PT0ga2V5KVxuICAgICAgICAuc29ydCgoYSwgYikgPT4gKGEucHJpb3JpdHkgPz8gMCkgLSAoYi5wcmlvcml0eSA/PyAwKSlcbiAgICAgICAgLmZvckVhY2gocCA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmluamVjdG9yLCAoKSA9PiBwLmV4ZWN1dGUoZGF0YSkpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgW0FYUEhvb2tTZXJ2aWNlXSBIb29rICcke2tleX0nIGZhaWxlZGAsIGVycik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW4gYXN5bmMgaG9va3Mgc2VxdWVudGlhbGx5ICh3YXRlcmZhbGwpLlxuICAgKiBUaGUgb3V0cHV0IG9mIGVhY2ggaG9vayBpcyBwYXNzZWQgYXMgaW5wdXQgdG8gdGhlIG5leHQgaG9vay5cbiAgICogUmV0dXJucyB0aGUgZmluYWwgbWVyZ2VkIGRhdGEgYWZ0ZXIgYWxsIGhvb2tzIGFyZSBleGVjdXRlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBydW5Bc3luYzxUPihrZXk6IHN0cmluZywgaW5pdGlhbERhdGE6IFQpOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCBwcm92aWRlcnMgPSAoYXdhaXQgdGhpcy5yZXNvbHZlUHJvdmlkZXJzKCkpXG4gICAgICAuZmlsdGVyKHAgPT4gcC5rZXkgPT09IGtleSlcbiAgICAgIC5zb3J0KChhLCBiKSA9PiAoYS5wcmlvcml0eSA/PyAwKSAtIChiLnByaW9yaXR5ID8/IDApKTtcblxuICAgIGxldCBkYXRhID0gaW5pdGlhbERhdGE7XG4gICAgZm9yIChjb25zdCBwIG9mIHByb3ZpZGVycykge1xuICAgICAgZGF0YSA9IGF3YWl0IFByb21pc2UucmVzb2x2ZShcbiAgICAgICAgcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsICgpID0+IHAuZXhlY3V0ZShkYXRhKSlcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iXX0=","//#region ---- Imports ----\nexport {};\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLW1hbmlmZXN0LnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9jb3JlL3NyYy9saWIvbW9kdWxlLW1hbmlmZXN0L21vZHVsZS1tYW5pZmVzdC50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7O0FBZ04vQixZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBJbXBvcnRzICAgLS0tLVxuXG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIEZlYXR1cmUgRGVmaW5pdGlvbiBUeXBlcyAgIC0tLS1cblxuLyoqXG4gKiBGZWF0dXJlIGRlZmluaXRpb24gaW4gbW9kdWxlIG1hbmlmZXN0LlxuICogRGVmaW5lcyBhdmFpbGFibGUgZmVhdHVyZXMgd2l0aCBkZWZhdWx0IHZhbHVlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBNb2R1bGVGZWF0dXJlRGVmaW5pdGlvbiB7XG4gICAgLyoqXG4gICAgICogRmVhdHVyZSB0aXRsZSAodHJhbnNsYXRpb24ga2V5IG9yIGxpdGVyYWwpXG4gICAgICovXG4gICAgdGl0bGU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEZlYXR1cmUgZGVzY3JpcHRpb24gKHRyYW5zbGF0aW9uIGtleSBvciBsaXRlcmFsKVxuICAgICAqL1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGZlYXR1cmUuXG4gICAgICogVXNlZCB3aGVuIHVzZXIgZG9lc24ndCBoYXZlIGV4cGxpY2l0IGZlYXR1cmUgdmFsdWUuXG4gICAgICovXG4gICAgZGVmYXVsdFZhbHVlOiBib29sZWFuIHwgbnVtYmVyIHwgc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsO1xuXG4gICAgLyoqXG4gICAgICogVHlwZSBoaW50IGZvciB2YWxpZGF0aW9uIGFuZCBVSSByZW5kZXJpbmdcbiAgICAgKi9cbiAgICB0eXBlPzogJ2Jvb2xlYW4nIHwgJ251bWJlcicgfCAnc3RyaW5nJyB8ICdhcnJheSc7XG5cbiAgICAvKipcbiAgICAgKiBXaWRnZXQgaW50ZXJmYWNlIGZvciBmZWF0dXJlIGNvbmZpZ3VyYXRpb24gVUkgKG9wdGlvbmFsKVxuICAgICAqL1xuICAgIGludGVyZmFjZT86IHtcbiAgICAgICAgdHlwZTogc3RyaW5nO1xuICAgICAgICBvcHRpb25zPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICB9O1xufVxuXG4vKipcbiAqIEZlYXR1cmUgZGVmaW5pdGlvbiBpbiBhcnJheSBmb3JtYXQgKHdpdGgga2V5KS5cbiAqIFVzZWQgd2hlbiBmZWF0dXJlcyBhcmUgZGVmaW5lZCBhcyBhbiBhcnJheSBpbiBtYW5pZmVzdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBNb2R1bGVGZWF0dXJlRGVmaW5pdGlvbldpdGhLZXkgZXh0ZW5kcyBBWFBNb2R1bGVGZWF0dXJlRGVmaW5pdGlvbiB7XG4gICAgLyoqXG4gICAgICogRnVsbCBmZWF0dXJlIGtleSAoTW9kdWxlTmFtZS5GZWF0dXJlS2V5IGZvcm1hdCkuXG4gICAgICogV2hlbiB1c2luZyBhcnJheSBmb3JtYXQsIHRoaXMgbXVzdCBiZSBwcm92aWRlZC5cbiAgICAgKi9cbiAgICBrZXk6IHN0cmluZztcbn1cblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgTWFuaWZlc3QgVHlwZXMgICAtLS0tXG5cbi8qKlxuICogTW9kdWxlIG1hbmlmZXN0IHN0cnVjdHVyZS5cbiAqIERlZmluZXMgbW9kdWxlIG1ldGFkYXRhLCBmZWF0dXJlcywgYW5kIHByb3ZpZGVyIHJlZmVyZW5jZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQTW9kdWxlTWFuaWZlc3Qge1xuICAgIC8qKlxuICAgICAqIE1vZHVsZSBuYW1lIChtdXN0IG1hdGNoIFJvb3RDb25maWcubW9kdWxlLm5hbWUpXG4gICAgICovXG4gICAgbmFtZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogTW9kdWxlIHZlcnNpb25cbiAgICAgKi9cbiAgICB2ZXJzaW9uOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBNb2R1bGUgdGl0bGUgKGNhbiByZWZlcmVuY2UgY29uc3QudHMgb3IgYmUgdHJhbnNsYXRpb24ga2V5KVxuICAgICAqL1xuICAgIHRpdGxlOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBNb2R1bGUgZGVzY3JpcHRpb24gKG9wdGlvbmFsKVxuICAgICAqL1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogTW9kdWxlIGljb24gKGNhbiByZWZlcmVuY2UgY29uc3QudHMpXG4gICAgICovXG4gICAgaWNvbj86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIGkxOG4gc2NvcGUgbmFtZSAoY2FuIHJlZmVyZW5jZSBjb25zdC50cylcbiAgICAgKi9cbiAgICBpMThuPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogUGVybWlzc2lvbiBwcm92aWRlciByZWZlcmVuY2UgKGxhenktbG9hZGVkKS5cbiAgICAgKi9cbiAgICBwZXJtaXNzaW9ucz86IHtcbiAgICAgICAgcHJvdmlkZXI6ICgpID0+IFByb21pc2U8YW55PjtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogTWVudSBwcm92aWRlciByZWZlcmVuY2UgKGxhenktbG9hZGVkKS5cbiAgICAgKi9cbiAgICBtZW51cz86IHtcbiAgICAgICAgcHJvdmlkZXI6ICgpID0+IFByb21pc2U8YW55PjtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogRW50aXR5IGRlZmluaXRpb24gcHJvdmlkZXIgcmVmZXJlbmNlIChsYXp5LWxvYWRlZCkuXG4gICAgICovXG4gICAgZW50aXRpZXM/OiB7XG4gICAgICAgIHByb3ZpZGVyOiAoKSA9PiBQcm9taXNlPGFueT47XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFNldHRpbmdzIHByb3ZpZGVyIHJlZmVyZW5jZSAobGF6eS1sb2FkZWQpLlxuICAgICAqL1xuICAgIHNldHRpbmdzPzoge1xuICAgICAgICBwcm92aWRlcjogKCkgPT4gUHJvbWlzZTxhbnk+O1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBTZWFyY2ggcHJvdmlkZXIgcmVmZXJlbmNlIChsYXp5LWxvYWRlZCkuXG4gICAgICovXG4gICAgc2VhcmNoPzoge1xuICAgICAgICBwcm92aWRlcjogKCkgPT4gUHJvbWlzZTxhbnk+O1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBGZWF0dXJlIGRlZmluaXRpb24gcHJvdmlkZXIgcmVmZXJlbmNlIChsYXp5LWxvYWRlZCkuXG4gICAgICogVXNlZCB0byBwcm92aWRlIGZlYXR1cmUgZGVmaW5pdGlvbnMgZm9yIHRoZSBtb2R1bGUuXG4gICAgICovXG4gICAgZmVhdHVyZXM/OiB7XG4gICAgICAgIHByb3ZpZGVyOiAoKSA9PiBQcm9taXNlPGFueT47XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIERhdGEgc291cmNlIHByb3ZpZGVyIHJlZmVyZW5jZSAobGF6eS1sb2FkZWQpLlxuICAgICAqL1xuICAgIGRhdGFzb3VyY2VzPzoge1xuICAgICAgICBwcm92aWRlcjogKCkgPT4gUHJvbWlzZTxhbnk+O1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDb21wb25lbnQgc2xvdHMgcHJvdmlkZXIgcmVmZXJlbmNlIChsYXp5LWxvYWRlZCkuXG4gICAgICogUmV0dXJucyBjb21wb25lbnQgc2xvdCBjb25maWd1cmF0aW9ucyBncm91cGVkIGJ5IHNsb3QgbmFtZS5cbiAgICAgKiBTbG90cyByZWdpc3RlcmVkIHZpYSBtYW5pZmVzdCBhcmUgbG9hZGVkIGFmdGVyIGFwcGxpY2F0aW9uIHNlbGVjdGlvbi5cbiAgICAgKiBNb2R1bGUtbGV2ZWwgcmVnaXN0cmF0aW9uIChBWFBDb21wb25lbnRTbG90TW9kdWxlLmZvckNoaWxkKSBzdGlsbCB3b3JrcyBmb3IgaW1tZWRpYXRlIGF2YWlsYWJpbGl0eS5cbiAgICAgKi9cbiAgICBjb21wb25lbnRTbG90cz86IHtcbiAgICAgICAgcHJvdmlkZXI6ICgpID0+IFByb21pc2U8YW55PjtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogTW9kdWxlIGRlcGVuZGVuY2llc1xuICAgICAqL1xuICAgIGRlcGVuZGVuY2llcz86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJlcXVpcmVkIG1vZHVsZSBuYW1lc1xuICAgICAgICAgKi9cbiAgICAgICAgbW9kdWxlcz86IHN0cmluZ1tdO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSZXF1aXJlZCBmZWF0dXJlIGtleXMgKGZ1bGwgZm9ybWF0OiBNb2R1bGVOYW1lLkZlYXR1cmVLZXkpXG4gICAgICAgICAqL1xuICAgICAgICBmZWF0dXJlcz86IHN0cmluZ1tdO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoaXMgbW9kdWxlIGlzIHJlcXVpcmVkIChhbHdheXMgZW5hYmxlZCwgY2Fubm90IGJlIGRpc2FibGVkKS5cbiAgICAgKiBSZXF1aXJlZCBtb2R1bGVzIGxpa2UgJ2F1dGgnIGFuZCAnY29tbW9uJyBhcmUgYWx3YXlzIGF2YWlsYWJsZS5cbiAgICAgKi9cbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBBZGRpdGlvbmFsIG1ldGFkYXRhXG4gICAgICovXG4gICAgbWV0YWRhdGE/OiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICB9O1xufVxuXG4vKipcbiAqIEZ1bGwgZmVhdHVyZSBuYW1lIHdpdGggbW9kdWxlIHByZWZpeC5cbiAqIEZvcm1hdDogTW9kdWxlTmFtZS5GZWF0dXJlS2V5XG4gKi9cbmV4cG9ydCB0eXBlIEFYUEZlYXR1cmVOYW1lID0gc3RyaW5nO1xuXG4vKipcbiAqIEZlYXR1cmUgZGVmaW5pdGlvbiB3aXRoIGZ1bGwgbmFtZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBGZWF0dXJlRGVmaW5pdGlvbiBleHRlbmRzIEFYUE1vZHVsZUZlYXR1cmVEZWZpbml0aW9uIHtcbiAgICAvKipcbiAgICAgKiBGdWxsIGZlYXR1cmUgbmFtZSAoTW9kdWxlTmFtZS5GZWF0dXJlS2V5KVxuICAgICAqL1xuICAgIG5hbWU6IEFYUEZlYXR1cmVOYW1lO1xuXG4gICAgLyoqXG4gICAgICogTW9kdWxlIG5hbWVcbiAgICAgKi9cbiAgICBtb2R1bGU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEZlYXR1cmUga2V5IChzaG9ydCBuYW1lKVxuICAgICAqL1xuICAgIGtleTogc3RyaW5nO1xufVxuXG4vLyNlbmRyZWdpb25cblxuIl19","//#region ---- Imports ----\nimport { InjectionToken } from '@angular/core';\n//#endregion\n//#region ---- Injection Token ----\n/**\n * Injection token for module manifest providers.\n * Modules register their manifest providers using this token.\n */\nexport const AXP_MODULE_MANIFEST_PROVIDER = new InjectionToken('AXP_MODULE_MANIFEST_PROVIDER');\n//#endregion\n//#region ---- Default Provider ----\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLW1hbmlmZXN0LnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9jb3JlL3NyYy9saWIvbW9kdWxlLW1hbmlmZXN0L21vZHVsZS1tYW5pZmVzdC5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFFL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvQyxZQUFZO0FBR1osdUNBQXVDO0FBRXZDOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLElBQUksY0FBYyxDQUMxRCw4QkFBOEIsQ0FDakMsQ0FBQztBQUVGLFlBQVk7QUFFWix3Q0FBd0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyNyZWdpb24gLS0tLSAgIEltcG9ydHMgICAtLS0tXG5cbmltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBNb2R1bGVNYW5pZmVzdCB9IGZyb20gJy4vbW9kdWxlLW1hbmlmZXN0LnR5cGVzJztcblxuLy8jZW5kcmVnaW9uXG5cblxuLy8jcmVnaW9uIC0tLS0gICBJbmplY3Rpb24gVG9rZW4gICAtLS0tXG5cbi8qKlxuICogSW5qZWN0aW9uIHRva2VuIGZvciBtb2R1bGUgbWFuaWZlc3QgcHJvdmlkZXJzLlxuICogTW9kdWxlcyByZWdpc3RlciB0aGVpciBtYW5pZmVzdCBwcm92aWRlcnMgdXNpbmcgdGhpcyB0b2tlbi5cbiAqL1xuZXhwb3J0IGNvbnN0IEFYUF9NT0RVTEVfTUFOSUZFU1RfUFJPVklERVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48QVhQTW9kdWxlTWFuaWZlc3RbXT4oXG4gICAgJ0FYUF9NT0RVTEVfTUFOSUZFU1RfUFJPVklERVInXG4pO1xuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIC0tLS0gICBEZWZhdWx0IFByb3ZpZGVyICAgLS0tLVxuXG5cblxuIl19","//#region ---- Imports ----\nimport { Injectable, inject, Injector } from '@angular/core';\nimport { AXP_MODULE_MANIFEST_PROVIDER } from './module-manifest.provider';\nimport * as i0 from \"@angular/core\";\n//#endregion\n//#region ---- Registry Service ----\n/**\n * Registry service for module manifests.\n * Collects and manages all registered module manifests.\n */\nexport class AXPModuleManifestRegistry {\n constructor() {\n //#region ---- Fields ----\n this.manifests = new Map();\n this.featureDefinitions = new Map();\n this.injector = inject(Injector);\n this.initializationPromise = null;\n this.isInitialized = false;\n }\n //#endregion\n //#region ---- Initialization ----\n /**\n * Initialize registry by loading all manifest providers.\n * Should be called during app startup.\n * Safe to call multiple times - will only initialize once.\n */\n async initialize() {\n // If already initialized, return immediately\n if (this.isInitialized) {\n return;\n }\n // If initialization is in progress, wait for it\n if (this.initializationPromise) {\n return this.initializationPromise;\n }\n // Start initialization\n this.initializationPromise = this._doInitialize();\n await this.initializationPromise;\n }\n /**\n * Internal initialization logic.\n */\n async _doInitialize() {\n // Get manifests from injector (using useValue, they are provided directly)\n let manifests;\n try {\n const injectedManifests = this.injector.get(AXP_MODULE_MANIFEST_PROVIDER, []);\n manifests = Array.isArray(injectedManifests) ? injectedManifests : injectedManifests ? [injectedManifests] : [];\n }\n catch (error) {\n console.error('Failed to get manifest providers from injector:', error);\n manifests = [];\n }\n // Register all manifests directly\n const registerPromises = manifests.map(async (manifest) => {\n try {\n // Validate manifest\n if (!manifest) {\n console.error('Invalid manifest:', manifest);\n return;\n }\n await this.register(manifest);\n }\n catch (error) {\n console.error(`Failed to register manifest:`, error);\n }\n });\n await Promise.all(registerPromises);\n this.isInitialized = true;\n }\n //#endregion\n //#region ---- Manifest Management ----\n /**\n * Register a module manifest.\n */\n async register(manifest) {\n // Validate manifest\n if (!manifest.name) {\n throw new Error('Manifest must have a name');\n }\n if (!manifest.version) {\n throw new Error(`Manifest for module '${manifest.name}' must have a version`);\n }\n // Register manifest\n this.manifests.set(manifest.name, manifest);\n }\n /**\n * Get manifest for a module.\n */\n get(moduleName) {\n return this.manifests.get(moduleName);\n }\n /**\n * Get all registered manifests.\n */\n getAll() {\n return Array.from(this.manifests.values());\n }\n /**\n * Check if a module manifest is registered.\n */\n has(moduleName) {\n return this.manifests.has(moduleName);\n }\n //#endregion\n //#region ---- Feature Definition Management ----\n /**\n * Get all feature definitions from all manifests.\n */\n getAllFeatureDefinitions() {\n return Array.from(this.featureDefinitions.values());\n }\n /**\n * Get feature definition by full name.\n */\n getFeatureDefinition(featureName) {\n return this.featureDefinitions.get(featureName);\n }\n /**\n * Check if a feature is defined in any manifest.\n */\n isFeatureDefined(featureName) {\n return this.featureDefinitions.has(featureName);\n }\n /**\n * Get default value for a feature.\n * Returns undefined if feature is not defined.\n */\n getFeatureDefault(featureName) {\n const definition = this.getFeatureDefinition(featureName);\n return definition?.defaultValue;\n }\n /**\n * Get all feature definitions for a specific module.\n */\n getModuleFeatures(moduleName) {\n return Array.from(this.featureDefinitions.values()).filter((def) => def.module === moduleName);\n }\n /**\n * Register a feature definition dynamically (e.g., from feature definition provider).\n * Used to add features that are defined at runtime via featuresProvider.\n */\n registerFeatureDefinition(definition) {\n this.featureDefinitions.set(definition.name, definition);\n }\n //#endregion\n //#region ---- Dependency Checking ----\n /**\n * Check if module dependencies are satisfied.\n * Returns array of missing dependencies.\n */\n checkDependencies(moduleName) {\n const manifest = this.get(moduleName);\n if (!manifest?.dependencies) {\n return { missingModules: [], missingFeatures: [] };\n }\n const missingModules = [];\n const missingFeatures = [];\n // Check module dependencies\n if (manifest.dependencies.modules) {\n for (const depModule of manifest.dependencies.modules) {\n if (!this.has(depModule)) {\n missingModules.push(depModule);\n }\n }\n }\n // Check feature dependencies\n if (manifest.dependencies.features) {\n for (const featureName of manifest.dependencies.features) {\n if (!this.isFeatureDefined(featureName)) {\n missingFeatures.push(featureName);\n }\n }\n }\n return { missingModules, missingFeatures };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPModuleManifestRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPModuleManifestRegistry, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPModuleManifestRegistry, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLW1hbmlmZXN0LnJlZ2lzdHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9jb3JlL3NyYy9saWIvbW9kdWxlLW1hbmlmZXN0L21vZHVsZS1tYW5pZmVzdC5yZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFFL0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUcxRSxZQUFZO0FBRVosd0NBQXdDO0FBRXhDOzs7R0FHRztBQUVILE1BQU0sT0FBTyx5QkFBeUI7SUFEdEM7UUFFSSw4QkFBOEI7UUFFYixjQUFTLEdBQUcsSUFBSSxHQUFHLEVBQTZCLENBQUM7UUFDakQsdUJBQWtCLEdBQUcsSUFBSSxHQUFHLEVBQXdDLENBQUM7UUFDckUsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyQywwQkFBcUIsR0FBeUIsSUFBSSxDQUFDO1FBQ25ELGtCQUFhLEdBQUcsS0FBSyxDQUFDO0tBZ01qQztJQTlMRyxZQUFZO0lBRVosc0NBQXNDO0lBRXRDOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsVUFBVTtRQUNaLDZDQUE2QztRQUM3QyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixPQUFPO1FBQ1gsQ0FBQztRQUVELGdEQUFnRDtRQUNoRCxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQzdCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDO1FBQ3RDLENBQUM7UUFFRCx1QkFBdUI7UUFDdkIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNsRCxNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztJQUNyQyxDQUFDO0lB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QUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2hDLEtBQUssTUFBTSxTQUFTLElBQUksUUFBUSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztvQkFDdkIsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDbkMsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDO1FBRUQsNkJBQTZCO1FBQzdCLElBQUksUUFBUSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNqQyxLQUFLLE1BQU0sV0FBVyxJQUFJLFFBQVEsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztvQkFDdEMsZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDdEMsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsQ0FBQztJQUMvQyxDQUFDOytHQXBNUSx5QkFBeUI7bUhBQXpCLHlCQUF5QixjQURaLE1BQU07OzRGQUNuQix5QkFBeUI7a0JBRHJDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBJbXBvcnRzICAgLS0tLVxuXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBfTU9EVUxFX01BTklGRVNUX1BST1ZJREVSIH0gZnJvbSAnLi9tb2R1bGUtbWFuaWZlc3QucHJvdmlkZXInO1xuaW1wb3J0IHsgQVhQTW9kdWxlTWFuaWZlc3QsIEFYUEZlYXR1cmVEZWZpbml0aW9uLCBBWFBGZWF0dXJlTmFtZSB9IGZyb20gJy4vbW9kdWxlLW1hbmlmZXN0LnR5cGVzJztcblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgUmVnaXN0cnkgU2VydmljZSAgIC0tLS1cblxuLyoqXG4gKiBSZWdpc3RyeSBzZXJ2aWNlIGZvciBtb2R1bGUgbWFuaWZlc3RzLlxuICogQ29sbGVjdHMgYW5kIG1hbmFnZXMgYWxsIHJlZ2lzdGVyZWQgbW9kdWxlIG1hbmlmZXN0cy5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBWFBNb2R1bGVNYW5pZmVzdFJlZ2lzdHJ5IHtcbiAgICAvLyNyZWdpb24gLS0tLSAgIEZpZWxkcyAgIC0tLS1cblxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWFuaWZlc3RzID0gbmV3IE1hcDxzdHJpbmcsIEFYUE1vZHVsZU1hbmlmZXN0PigpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmVhdHVyZURlZmluaXRpb25zID0gbmV3IE1hcDxBWFBGZWF0dXJlTmFtZSwgQVhQRmVhdHVyZURlZmluaXRpb24+KCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gICAgcHJpdmF0ZSBpbml0aWFsaXphdGlvblByb21pc2U6IFByb21pc2U8dm9pZD4gfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIGlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBJbml0aWFsaXphdGlvbiAgIC0tLS1cblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemUgcmVnaXN0cnkgYnkgbG9hZGluZyBhbGwgbWFuaWZlc3QgcHJvdmlkZXJzLlxuICAgICAqIFNob3VsZCBiZSBjYWxsZWQgZHVyaW5nIGFwcCBzdGFydHVwLlxuICAgICAqIFNhZmUgdG8gY2FsbCBtdWx0aXBsZSB0aW1lcyAtIHdpbGwgb25seSBpbml0aWFsaXplIG9uY2UuXG4gICAgICovXG4gICAgYXN5bmMgaW5pdGlhbGl6ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgLy8gSWYgYWxyZWFkeSBpbml0aWFsaXplZCwgcmV0dXJuIGltbWVkaWF0ZWx5XG4gICAgICAgIGlmICh0aGlzLmlzSW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIGluaXRpYWxpemF0aW9uIGlzIGluIHByb2dyZXNzLCB3YWl0IGZvciBpdFxuICAgICAgICBpZiAodGhpcy5pbml0aWFsaXphdGlvblByb21pc2UpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmluaXRpYWxpemF0aW9uUHJvbWlzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFN0YXJ0IGluaXRpYWxpemF0aW9uXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6YXRpb25Qcm9taXNlID0gdGhpcy5fZG9Jbml0aWFsaXplKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuaW5pdGlhbGl6YXRpb25Qcm9taXNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEludGVybmFsIGluaXRpYWxpemF0aW9uIGxvZ2ljLlxuICAgICAqL1xuICAgIHByaXZhdGUgYXN5bmMgX2RvSW5pdGlhbGl6ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgLy8gR2V0IG1hbmlmZXN0cyBmcm9tIGluamVjdG9yICh1c2luZyB1c2VWYWx1ZSwgdGhleSBhcmUgcHJvdmlkZWQgZGlyZWN0bHkpXG4gICAgICAgIGxldCBtYW5pZmVzdHM6IEFYUE1vZHVsZU1hbmlmZXN0W107XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBpbmplY3RlZE1hbmlmZXN0cyA9IHRoaXMuaW5qZWN0b3IuZ2V0KEFYUF9NT0RVTEVfTUFOSUZFU1RfUFJPVklERVIsIFtdKTtcbiAgICAgICAgICAgIG1hbmlmZXN0cyA9IEFycmF5LmlzQXJyYXkoaW5qZWN0ZWRNYW5pZmVzdHMpID8gaW5qZWN0ZWRNYW5pZmVzdHMgOiBpbmplY3RlZE1hbmlmZXN0cyA/IFtpbmplY3RlZE1hbmlmZXN0c10gOiBbXTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBnZXQgbWFuaWZlc3QgcHJvdmlkZXJzIGZyb20gaW5qZWN0b3I6JywgZXJyb3IpO1xuICAgICAgICAgICAgbWFuaWZlc3RzID0gW107XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZWdpc3RlciBhbGwgbWFuaWZlc3RzIGRpcmVjdGx5XG4gICAgICAgIGNvbnN0IHJlZ2lzdGVyUHJvbWlzZXMgPSBtYW5pZmVzdHMubWFwKGFzeW5jIChtYW5pZmVzdDogQVhQTW9kdWxlTWFuaWZlc3QpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgLy8gVmFsaWRhdGUgbWFuaWZlc3RcbiAgICAgICAgICAgICAgICBpZiAoIW1hbmlmZXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ludmFsaWQgbWFuaWZlc3Q6JywgbWFuaWZlc3QpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucmVnaXN0ZXIobWFuaWZlc3QpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gcmVnaXN0ZXIgbWFuaWZlc3Q6YCwgZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChyZWdpc3RlclByb21pc2VzKTtcbiAgICAgICAgdGhpcy5pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgTWFuaWZlc3QgTWFuYWdlbWVudCAgIC0tLS1cblxuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVyIGEgbW9kdWxlIG1hbmlmZXN0LlxuICAgICAqL1xuICAgIGFzeW5jIHJlZ2lzdGVyKG1hbmlmZXN0OiBBWFBNb2R1bGVNYW5pZmVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAvLyBWYWxpZGF0ZSBtYW5pZmVzdFxuICAgICAgICBpZiAoIW1hbmlmZXN0Lm5hbWUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTWFuaWZlc3QgbXVzdCBoYXZlIGEgbmFtZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFtYW5pZmVzdC52ZXJzaW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1hbmlmZXN0IGZvciBtb2R1bGUgJyR7bWFuaWZlc3QubmFtZX0nIG11c3QgaGF2ZSBhIHZlcnNpb25gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlZ2lzdGVyIG1hbmlmZXN0XG4gICAgICAgIHRoaXMubWFuaWZlc3RzLnNldChtYW5pZmVzdC5uYW1lLCBtYW5pZmVzdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IG1hbmlmZXN0IGZvciBhIG1vZHVsZS5cbiAgICAgKi9cbiAgICBnZXQobW9kdWxlTmFtZTogc3RyaW5nKTogQVhQTW9kdWxlTWFuaWZlc3QgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5tYW5pZmVzdHMuZ2V0KG1vZHVsZU5hbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBhbGwgcmVnaXN0ZXJlZCBtYW5pZmVzdHMuXG4gICAgICovXG4gICAgZ2V0QWxsKCk6IEFYUE1vZHVsZU1hbmlmZXN0W10ge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLm1hbmlmZXN0cy52YWx1ZXMoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgYSBtb2R1bGUgbWFuaWZlc3QgaXMgcmVnaXN0ZXJlZC5cbiAgICAgKi9cbiAgICBoYXMobW9kdWxlTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hbmlmZXN0cy5oYXMobW9kdWxlTmFtZSk7XG4gICAgfVxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIEZlYXR1cmUgRGVmaW5pdGlvbiBNYW5hZ2VtZW50ICAgLS0tLVxuXG4gICAgLyoqXG4gICAgICogR2V0IGFsbCBmZWF0dXJlIGRlZmluaXRpb25zIGZyb20gYWxsIG1hbmlmZXN0cy5cbiAgICAgKi9cbiAgICBnZXRBbGxGZWF0dXJlRGVmaW5pdGlvbnMoKTogQVhQRmVhdHVyZURlZmluaXRpb25bXSB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZmVhdHVyZURlZmluaXRpb25zLnZhbHVlcygpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgZmVhdHVyZSBkZWZpbml0aW9uIGJ5IGZ1bGwgbmFtZS5cbiAgICAgKi9cbiAgICBnZXRGZWF0dXJlRGVmaW5pdGlvbihmZWF0dXJlTmFtZTogQVhQRmVhdHVyZU5hbWUpOiBBWFBGZWF0dXJlRGVmaW5pdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmZlYXR1cmVEZWZpbml0aW9ucy5nZXQoZmVhdHVyZU5hbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIGEgZmVhdHVyZSBpcyBkZWZpbmVkIGluIGFueSBtYW5pZmVzdC5cbiAgICAgKi9cbiAgICBpc0ZlYXR1cmVEZWZpbmVkKGZlYXR1cmVOYW1lOiBBWFBGZWF0dXJlTmFtZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mZWF0dXJlRGVmaW5pdGlvbnMuaGFzKGZlYXR1cmVOYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgZGVmYXVsdCB2YWx1ZSBmb3IgYSBmZWF0dXJlLlxuICAgICAqIFJldHVybnMgdW5kZWZpbmVkIGlmIGZlYXR1cmUgaXMgbm90IGRlZmluZWQuXG4gICAgICovXG4gICAgZ2V0RmVhdHVyZURlZmF1bHQoZmVhdHVyZU5hbWU6IEFYUEZlYXR1cmVOYW1lKTogYW55IHtcbiAgICAgICAgY29uc3QgZGVmaW5pdGlvbiA9IHRoaXMuZ2V0RmVhdHVyZURlZmluaXRpb24oZmVhdHVyZU5hbWUpO1xuICAgICAgICByZXR1cm4gZGVmaW5pdGlvbj8uZGVmYXVsdFZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBhbGwgZmVhdHVyZSBkZWZpbml0aW9ucyBmb3IgYSBzcGVjaWZpYyBtb2R1bGUuXG4gICAgICovXG4gICAgZ2V0TW9kdWxlRmVhdHVyZXMobW9kdWxlTmFtZTogc3RyaW5nKTogQVhQRmVhdHVyZURlZmluaXRpb25bXSB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZmVhdHVyZURlZmluaXRpb25zLnZhbHVlcygpKS5maWx0ZXIoKGRlZikgPT4gZGVmLm1vZHVsZSA9PT0gbW9kdWxlTmFtZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVnaXN0ZXIgYSBmZWF0dXJlIGRlZmluaXRpb24gZHluYW1pY2FsbHkgKGUuZy4sIGZyb20gZmVhdHVyZSBkZWZpbml0aW9uIHByb3ZpZGVyKS5cbiAgICAgKiBVc2VkIHRvIGFkZCBmZWF0dXJlcyB0aGF0IGFyZSBkZWZpbmVkIGF0IHJ1bnRpbWUgdmlhIGZlYXR1cmVzUHJvdmlkZXIuXG4gICAgICovXG4gICAgcmVnaXN0ZXJGZWF0dXJlRGVmaW5pdGlvbihkZWZpbml0aW9uOiBBWFBGZWF0dXJlRGVmaW5pdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLmZlYXR1cmVEZWZpbml0aW9ucy5zZXQoZGVmaW5pdGlvbi5uYW1lLCBkZWZpbml0aW9uKTtcbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgRGVwZW5kZW5jeSBDaGVja2luZyAgIC0tLS1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIG1vZHVsZSBkZXBlbmRlbmNpZXMgYXJlIHNhdGlzZmllZC5cbiAgICAgKiBSZXR1cm5zIGFycmF5IG9mIG1pc3NpbmcgZGVwZW5kZW5jaWVzLlxuICAgICAqL1xuICAgIGNoZWNrRGVwZW5kZW5jaWVzKG1vZHVsZU5hbWU6IHN0cmluZyk6IHtcbiAgICAgICAgbWlzc2luZ01vZHVsZXM6IHN0cmluZ1tdO1xuICAgICAgICBtaXNzaW5nRmVhdHVyZXM6IHN0cmluZ1tdO1xuICAgIH0ge1xuICAgICAgICBjb25zdCBtYW5pZmVzdCA9IHRoaXMuZ2V0KG1vZHVsZU5hbWUpO1xuICAgICAgICBpZiAoIW1hbmlmZXN0Py5kZXBlbmRlbmNpZXMpIHtcbiAgICAgICAgICAgIHJldHVybiB7IG1pc3NpbmdNb2R1bGVzOiBbXSwgbWlzc2luZ0ZlYXR1cmVzOiBbXSB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWlzc2luZ01vZHVsZXM6IHN0cmluZ1tdID0gW107XG4gICAgICAgIGNvbnN0IG1pc3NpbmdGZWF0dXJlczogc3RyaW5nW10gPSBbXTtcblxuICAgICAgICAvLyBDaGVjayBtb2R1bGUgZGVwZW5kZW5jaWVzXG4gICAgICAgIGlmIChtYW5pZmVzdC5kZXBlbmRlbmNpZXMubW9kdWxlcykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBkZXBNb2R1bGUgb2YgbWFuaWZlc3QuZGVwZW5kZW5jaWVzLm1vZHVsZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaGFzKGRlcE1vZHVsZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgbWlzc2luZ01vZHVsZXMucHVzaChkZXBNb2R1bGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENoZWNrIGZlYXR1cmUgZGVwZW5kZW5jaWVzXG4gICAgICAgIGlmIChtYW5pZmVzdC5kZXBlbmRlbmNpZXMuZmVhdHVyZXMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZmVhdHVyZU5hbWUgb2YgbWFuaWZlc3QuZGVwZW5kZW5jaWVzLmZlYXR1cmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzRmVhdHVyZURlZmluZWQoZmVhdHVyZU5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIG1pc3NpbmdGZWF0dXJlcy5wdXNoKGZlYXR1cmVOYW1lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4geyBtaXNzaW5nTW9kdWxlcywgbWlzc2luZ0ZlYXR1cmVzIH07XG4gICAgfVxuXG4gICAgLy8jZW5kcmVnaW9uXG59XG5cbi8vI2VuZHJlZ2lvblxuXG4iXX0=","//#region ---- Imports ----\nimport { Injectable, inject } from '@angular/core';\nimport { AXPModuleManifestRegistry } from './module-manifest.registry';\nimport * as i0 from \"@angular/core\";\n//#endregion\n//#region ---- Initializer ----\n/**\n * Startup task to initialize module manifest registry.\n * Registers this task with app startup service.\n */\nexport class AXPModuleManifestInitializer {\n constructor() {\n //#region ---- Fields ----\n this.manifestRegistry = inject(AXPModuleManifestRegistry);\n }\n //#endregion\n //#region ---- Public Methods ----\n /**\n * Create startup task for manifest initialization.\n */\n createStartupTask() {\n return {\n name: 'ModuleManifests',\n statusText: 'Loading module manifests...',\n priority: 1, // Load early, before features/permissions\n run: async () => {\n await this.manifestRegistry.initialize();\n },\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPModuleManifestInitializer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPModuleManifestInitializer, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPModuleManifestInitializer, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLW1hbmlmZXN0LmluaXRpYWxpemVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9jb3JlL3NyYy9saWIvbW9kdWxlLW1hbmlmZXN0L21vZHVsZS1tYW5pZmVzdC5pbml0aWFsaXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFFL0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBR3ZFLFlBQVk7QUFFWixtQ0FBbUM7QUFFbkM7OztHQUdHO0FBRUgsTUFBTSxPQUFPLDRCQUE0QjtJQUR6QztRQUVFLDhCQUE4QjtRQUViLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0tBcUJ2RTtJQW5CQyxZQUFZO0lBRVosc0NBQXNDO0lBRXRDOztPQUVHO0lBQ0gsaUJBQWlCO1FBQ2YsT0FBTztZQUNMLElBQUksRUFBRSxpQkFBaUI7WUFDdkIsVUFBVSxFQUFFLDZCQUE2QjtZQUN6QyxRQUFRLEVBQUUsQ0FBQyxFQUFFLDBDQUEwQztZQUN2RCxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUU7Z0JBQ2QsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDM0MsQ0FBQztTQUNGLENBQUM7SUFDSixDQUFDOytHQXJCVSw0QkFBNEI7bUhBQTVCLDRCQUE0QixjQURmLE1BQU07OzRGQUNuQiw0QkFBNEI7a0JBRHhDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBJbXBvcnRzICAgLS0tLVxuXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUE1vZHVsZU1hbmlmZXN0UmVnaXN0cnkgfSBmcm9tICcuL21vZHVsZS1tYW5pZmVzdC5yZWdpc3RyeSc7XG5pbXBvcnQgeyBBWFBTdGFydFVwVGFzayB9IGZyb20gJy4uL3N0YXJ0dXAvYXBwLXN0YXJ0dXAudHlwZXMnO1xuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIC0tLS0gICBJbml0aWFsaXplciAgIC0tLS1cblxuLyoqXG4gKiBTdGFydHVwIHRhc2sgdG8gaW5pdGlhbGl6ZSBtb2R1bGUgbWFuaWZlc3QgcmVnaXN0cnkuXG4gKiBSZWdpc3RlcnMgdGhpcyB0YXNrIHdpdGggYXBwIHN0YXJ0dXAgc2VydmljZS5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBWFBNb2R1bGVNYW5pZmVzdEluaXRpYWxpemVyIHtcbiAgLy8jcmVnaW9uIC0tLS0gICBGaWVsZHMgICAtLS0tXG5cbiAgcHJpdmF0ZSByZWFkb25seSBtYW5pZmVzdFJlZ2lzdHJ5ID0gaW5qZWN0KEFYUE1vZHVsZU1hbmlmZXN0UmVnaXN0cnkpO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgUHVibGljIE1ldGhvZHMgICAtLS0tXG5cbiAgLyoqXG4gICAqIENyZWF0ZSBzdGFydHVwIHRhc2sgZm9yIG1hbmlmZXN0IGluaXRpYWxpemF0aW9uLlxuICAgKi9cbiAgY3JlYXRlU3RhcnR1cFRhc2soKTogQVhQU3RhcnRVcFRhc2sge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiAnTW9kdWxlTWFuaWZlc3RzJyxcbiAgICAgIHN0YXR1c1RleHQ6ICdMb2FkaW5nIG1vZHVsZSBtYW5pZmVzdHMuLi4nLFxuICAgICAgcHJpb3JpdHk6IDEsIC8vIExvYWQgZWFybHksIGJlZm9yZSBmZWF0dXJlcy9wZXJtaXNzaW9uc1xuICAgICAgcnVuOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMubWFuaWZlc3RSZWdpc3RyeS5pbml0aWFsaXplKCk7XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvLyNlbmRyZWdpb25cbn1cblxuLy8jZW5kcmVnaW9uXG5cbiJdfQ==","//#region ---- Imports ----\nimport { InjectionToken } from '@angular/core';\n//#endregion\n//#region ---- Feature Definition Provider Interface ----\n/**\n * Context for feature definition providers.\n * Allows providers to add additional feature definitions dynamically.\n */\nexport class AXPFeatureDefinitionProviderContext {\n constructor() {\n this.features = new Map();\n }\n /**\n * Add a feature definition.\n * @param key Full feature key (ModuleName:FeatureKey format with colon separator)\n * @param definition Feature definition\n */\n addFeature(key, definition) {\n this.features.set(key, definition);\n }\n /**\n * Get all feature definitions.\n */\n getFeatures() {\n return this.features;\n }\n}\n/**\n * Injection token for feature definition providers.\n */\nexport const AXP_FEATURE_DEFINITION_PROVIDER = new InjectionToken('AXP_FEATURE_DEFINITION_PROVIDER', {\n providedIn: 'root',\n factory: () => [],\n});\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1kZWZpbml0aW9uLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9jb3JlL3NyYy9saWIvbW9kdWxlLW1hbmlmZXN0L2ZlYXR1cmUtZGVmaW5pdGlvbi5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFFL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvQyxZQUFZO0FBRVosNkRBQTZEO0FBRTdEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxtQ0FBbUM7SUFBaEQ7UUFDcUIsYUFBUSxHQUE0QyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBaUJuRixDQUFDO0lBZkc7Ozs7T0FJRztJQUNILFVBQVUsQ0FBQyxHQUFXLEVBQUUsVUFBc0M7UUFDMUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDUCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztDQUNKO0FBY0Q7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyxJQUFJLGNBQWMsQ0FDN0QsaUNBQWlDLEVBQ2pDO0lBQ0ksVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Q0FDcEIsQ0FDSixDQUFDO0FBRUYsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiAtLS0tICAgSW1wb3J0cyAgIC0tLS1cblxuaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUE1vZHVsZUZlYXR1cmVEZWZpbml0aW9uIH0gZnJvbSAnLi9tb2R1bGUtbWFuaWZlc3QudHlwZXMnO1xuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIC0tLS0gICBGZWF0dXJlIERlZmluaXRpb24gUHJvdmlkZXIgSW50ZXJmYWNlICAgLS0tLVxuXG4vKipcbiAqIENvbnRleHQgZm9yIGZlYXR1cmUgZGVmaW5pdGlvbiBwcm92aWRlcnMuXG4gKiBBbGxvd3MgcHJvdmlkZXJzIHRvIGFkZCBhZGRpdGlvbmFsIGZlYXR1cmUgZGVmaW5pdGlvbnMgZHluYW1pY2FsbHkuXG4gKi9cbmV4cG9ydCBjbGFzcyBBWFBGZWF0dXJlRGVmaW5pdGlvblByb3ZpZGVyQ29udGV4dCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmZWF0dXJlczogTWFwPHN0cmluZywgQVhQTW9kdWxlRmVhdHVyZURlZmluaXRpb24+ID0gbmV3IE1hcCgpO1xuXG4gICAgLyoqXG4gICAgICogQWRkIGEgZmVhdHVyZSBkZWZpbml0aW9uLlxuICAgICAqIEBwYXJhbSBrZXkgRnVsbCBmZWF0dXJlIGtleSAoTW9kdWxlTmFtZTpGZWF0dXJlS2V5IGZvcm1hdCB3aXRoIGNvbG9uIHNlcGFyYXRvcilcbiAgICAgKiBAcGFyYW0gZGVmaW5pdGlvbiBGZWF0dXJlIGRlZmluaXRpb25cbiAgICAgKi9cbiAgICBhZGRGZWF0dXJlKGtleTogc3RyaW5nLCBkZWZpbml0aW9uOiBBWFBNb2R1bGVGZWF0dXJlRGVmaW5pdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLmZlYXR1cmVzLnNldChrZXksIGRlZmluaXRpb24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBhbGwgZmVhdHVyZSBkZWZpbml0aW9ucy5cbiAgICAgKi9cbiAgICBnZXRGZWF0dXJlcygpOiBNYXA8c3RyaW5nLCBBWFBNb2R1bGVGZWF0dXJlRGVmaW5pdGlvbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mZWF0dXJlcztcbiAgICB9XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIGZvciBmZWF0dXJlIGRlZmluaXRpb24gcHJvdmlkZXJzLlxuICogVXNlZCB0byBkeW5hbWljYWxseSBwcm92aWRlIGZlYXR1cmUgZGVmaW5pdGlvbnMgZm9yIG1vZHVsZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRmVhdHVyZURlZmluaXRpb25Qcm92aWRlciB7XG4gICAgLyoqXG4gICAgICogUHJvdmlkZSBmZWF0dXJlIGRlZmluaXRpb25zLlxuICAgICAqIEBwYXJhbSBjb250ZXh0IENvbnRleHQgZm9yIGFkZGluZyBmZWF0dXJlIGRlZmluaXRpb25zXG4gICAgICovXG4gICAgcHJvdmlkZShjb250ZXh0OiBBWFBGZWF0dXJlRGVmaW5pdGlvblByb3ZpZGVyQ29udGV4dCk6IFByb21pc2U8dm9pZD47XG59XG5cbi8qKlxuICogSW5qZWN0aW9uIHRva2VuIGZvciBmZWF0dXJlIGRlZmluaXRpb24gcHJvdmlkZXJzLlxuICovXG5leHBvcnQgY29uc3QgQVhQX0ZFQVRVUkVfREVGSU5JVElPTl9QUk9WSURFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBWFBGZWF0dXJlRGVmaW5pdGlvblByb3ZpZGVyW10+KFxuICAgICdBWFBfRkVBVFVSRV9ERUZJTklUSU9OX1BST1ZJREVSJyxcbiAgICB7XG4gICAgICAgIHByb3ZpZGVkSW46ICdyb290JyxcbiAgICAgICAgZmFjdG9yeTogKCkgPT4gW10sXG4gICAgfVxuKTtcblxuLy8jZW5kcmVnaW9uXG5cbiJdfQ==","//#region ---- Provider Interfaces ----\nimport { InjectionToken } from '@angular/core';\n/**\n * Injection token for edition service.\n * Modules should provide their implementation using this token.\n */\nexport const AXP_EDITION_SERVICE = new InjectionToken('AXP_EDITION_SERVICE', {\n providedIn: 'root',\n factory: () => {\n return null;\n },\n});\n/**\n * Injection token for module provider loader.\n * Implementation: @acorex/platform/auth\n */\nexport const AXP_MODULE_PROVIDER_LOADER = new InjectionToken('AXP_MODULE_PROVIDER_LOADER');\n/**\n * Injection token for module provider initializer.\n * Implementation: @acorex/platform/auth\n */\nexport const AXP_MODULE_PROVIDER_INITIALIZER = new InjectionToken('AXP_MODULE_PROVIDER_INITIALIZER');\n/**\n * Injection token for session service.\n * Implementation: @acorex/platform/auth\n */\nexport const AXP_SESSION_SERVICE = new InjectionToken('AXP_SESSION_SERVICE');\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXItaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL21vZHVsZS1tYW5pZmVzdC9wcm92aWRlci1pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJDQUEyQztBQUUzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBNEUvQzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGNBQWMsQ0FDakQscUJBQXFCLEVBQ3JCO0lBQ0ksVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUNWLE9BQU8sSUFBVyxDQUFDO0lBQ3ZCLENBQUM7Q0FDSixDQUNKLENBQUM7QUFhRjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLGNBQWMsQ0FDeEQsNEJBQTRCLENBQy9CLENBQUM7QUFhRjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyxJQUFJLGNBQWMsQ0FDN0QsaUNBQWlDLENBQ3BDLENBQUM7QUFjRjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGNBQWMsQ0FDakQscUJBQXFCLENBQ3hCLENBQUM7QUFFRixZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBQcm92aWRlciBJbnRlcmZhY2VzICAgLS0tLVxuXG5pbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIE1pbmltYWwgcHJvdmlkZXIgaW50ZXJmYWNlcyBmb3IgdGhlIG1vZHVsZSBwcm92aWRlciByZWdpc3RyeS5cbiAqIFRoZXNlIGludGVyZmFjZXMgYXJlIGRlZmluZWQgaW4gY29yZSB0byBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmNpZXMuXG4gKiBUaGUgYWN0dWFsIGltcGxlbWVudGF0aW9ucyBpbiBwbGF0Zm9ybS9hdXRoIGFuZCBwbGF0Zm9ybS9jb21tb24gaW1wbGVtZW50IHRoZXNlIGludGVyZmFjZXMuXG4gKi9cblxuLyoqXG4gKiBQZXJtaXNzaW9uIGRlZmluaXRpb24gcHJvdmlkZXIgaW50ZXJmYWNlLlxuICogQWN0dWFsIGltcGxlbWVudGF0aW9uOiBAYWNvcmV4L3BsYXRmb3JtL2F1dGhcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBJUGVybWlzc2lvbkRlZmluaXRpb25Qcm92aWRlciB7XG4gICAgZGVmaW5lKGNvbnRleHQ6IGFueSk6IFByb21pc2U8dm9pZD47XG59XG5cbi8qKlxuICogTWVudSBwcm92aWRlciBpbnRlcmZhY2UuXG4gKiBBY3R1YWwgaW1wbGVtZW50YXRpb246IEBhY29yZXgvcGxhdGZvcm0vY29tbW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQSU1lbnVQcm92aWRlciB7XG4gICAgcHJvdmlkZShjb250ZXh0OiBhbnkpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG4vKipcbiAqIFNldHRpbmcgZGVmaW5pdGlvbiBwcm92aWRlciBpbnRlcmZhY2UuXG4gKiBBY3R1YWwgaW1wbGVtZW50YXRpb246IEBhY29yZXgvcGxhdGZvcm0vY29tbW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQSVNldHRpbmdEZWZpbml0aW9uUHJvdmlkZXIge1xuICAgIHByb3ZpZGUoY29udGV4dDogYW55KTogUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqXG4gKiBTZWFyY2ggY29tbWFuZCBwcm92aWRlciBpbnRlcmZhY2UuXG4gKiBBY3R1YWwgaW1wbGVtZW50YXRpb246IEBhY29yZXgvcGxhdGZvcm0vY29tbW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQSVNlYXJjaENvbW1hbmRQcm92aWRlciB7XG4gICAgc2VhcmNoKHRleHQ6IHN0cmluZyk6IFByb21pc2U8YW55W10+O1xuICAgIGNvbW1hbmRzPzogYW55W107XG59XG5cbi8qKlxuICogRW50aXR5IGRlZmluaXRpb24gbG9hZGVyIGludGVyZmFjZS5cbiAqIEFjdHVhbCBpbXBsZW1lbnRhdGlvbjogQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhJRW50aXR5RGVmaW5pdGlvbkxvYWRlciB7XG4gICAgZ2V0KG1vZHVsZU5hbWU6IHN0cmluZywgZW50aXR5TmFtZTogc3RyaW5nKTogUHJvbWlzZTxhbnkgfCBudWxsPjtcbn1cblxuLyoqXG4gKiBFZGl0aW9uIHNlcnZpY2UgaW50ZXJmYWNlIGZvciBxdWVyeWluZyBlZGl0aW9uIGluZm9ybWF0aW9uLlxuICogQWN0dWFsIGltcGxlbWVudGF0aW9uOiBAYWNvcmV4L21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudFxuICogXG4gKiBUaGlzIGludGVyZmFjZSBpcyBkZWZpbmVkIGluIGNvcmUgdG8gYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLlxuICogTW9kdWxlcyBwcm92aWRlIGltcGxlbWVudGF0aW9ucyB0aGF0IGV4dGVuZCBBWE1FbnRpdHlDcnVkU2VydmljZUltcGwuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQSUVkaXRpb25TZXJ2aWNlIHtcbiAgICAvKipcbiAgICAgKiBRdWVyeSBlZGl0aW9ucyB3aXRoIHBhZ2luYXRpb24gYW5kIGZpbHRlcmluZy5cbiAgICAgKiBAcGFyYW0gcmVxdWVzdCBRdWVyeSByZXF1ZXN0IHdpdGggc2tpcCwgdGFrZSwgYW5kIG9wdGlvbmFsIGZpbHRlcnNcbiAgICAgKiBAcmV0dXJucyBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gcGFnZWQgbGlzdCBvZiBlZGl0aW9uc1xuICAgICAqL1xuICAgIHF1ZXJ5KHJlcXVlc3Q6IHsgc2tpcDogbnVtYmVyOyB0YWtlOiBudW1iZXI7W2tleTogc3RyaW5nXTogYW55IH0pOiBQcm9taXNlPHtcbiAgICAgICAgaXRlbXM6IEFycmF5PHtcbiAgICAgICAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAgICAgICB0aXRsZTogc3RyaW5nO1xuICAgICAgICAgICAgbW9kdWxlc0FuZEZlYXR1cmVzPzoge1xuICAgICAgICAgICAgICAgIG1vZHVsZXM6IHN0cmluZ1tdO1xuICAgICAgICAgICAgICAgIGZlYXR1cmVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfT47XG4gICAgICAgIHRvdGFsOiBudW1iZXI7XG4gICAgfT47XG59XG5cbi8qKlxuICogSW5qZWN0aW9uIHRva2VuIGZvciBlZGl0aW9uIHNlcnZpY2UuXG4gKiBNb2R1bGVzIHNob3VsZCBwcm92aWRlIHRoZWlyIGltcGxlbWVudGF0aW9uIHVzaW5nIHRoaXMgdG9rZW4uXG4gKi9cbmV4cG9ydCBjb25zdCBBWFBfRURJVElPTl9TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuPEFYUElFZGl0aW9uU2VydmljZT4oXG4gICAgJ0FYUF9FRElUSU9OX1NFUlZJQ0UnLFxuICAgIHtcbiAgICAgICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICAgICAgICBmYWN0b3J5OiAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbCBhcyBhbnk7XG4gICAgICAgIH0sXG4gICAgfVxuKTtcblxuLyoqXG4gKiBNb2R1bGUgcHJvdmlkZXIgbG9hZGVyIGludGVyZmFjZS5cbiAqIEltcGxlbWVudGF0aW9uOiBAYWNvcmV4L3BsYXRmb3JtL2F1dGhcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBJTW9kdWxlUHJvdmlkZXJMb2FkZXIge1xuICAgIGxvYWRSZXF1aXJlZE1vZHVsZXMoKTogUHJvbWlzZTx2b2lkPjtcbiAgICBsb2FkUHJvdmlkZXJzKGNvbnRleHQ6IGFueSk6IFByb21pc2U8dm9pZD47XG4gICAgY2xlYXIoKTogUHJvbWlzZTx2b2lkPjtcbiAgICBpc01vZHVsZVJlZ2lzdGVyZWQobW9kdWxlTmFtZTogc3RyaW5nKTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBJbmplY3Rpb24gdG9rZW4gZm9yIG1vZHVsZSBwcm92aWRlciBsb2FkZXIuXG4gKiBJbXBsZW1lbnRhdGlvbjogQGFjb3JleC9wbGF0Zm9ybS9hdXRoXG4gKi9cbmV4cG9ydCBjb25zdCBBWFBfTU9EVUxFX1BST1ZJREVSX0xPQURFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBWFBJTW9kdWxlUHJvdmlkZXJMb2FkZXI+KFxuICAgICdBWFBfTU9EVUxFX1BST1ZJREVSX0xPQURFUidcbik7XG5cbi8qKlxuICogTW9kdWxlIHByb3ZpZGVyIGluaXRpYWxpemVyIGludGVyZmFjZS5cbiAqIEltcGxlbWVudGF0aW9uOiBAYWNvcmV4L3BsYXRmb3JtL2F1dGhcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBJTW9kdWxlUHJvdmlkZXJJbml0aWFsaXplciB7XG4gICAgY3JlYXRlUmVxdWlyZWRNb2R1bGVzVGFzaygpOiBhbnk7XG4gICAgY3JlYXRlU3RhcnR1cFRhc2soKTogYW55O1xuICAgIGxvYWRQcm92aWRlcnNJZlJlYWR5KCk6IFByb21pc2U8dm9pZD47XG4gICAgbG9hZFByb3ZpZGVyc0ZvckFwcGxpY2F0aW9uKGFwcGxpY2F0aW9uOiBhbnkpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG4vKipcbiAqIEluamVjdGlvbiB0b2tlbiBmb3IgbW9kdWxlIHByb3ZpZGVyIGluaXRpYWxpemVyLlxuICogSW1wbGVtZW50YXRpb246IEBhY29yZXgvcGxhdGZvcm0vYXV0aFxuICovXG5leHBvcnQgY29uc3QgQVhQX01PRFVMRV9QUk9WSURFUl9JTklUSUFMSVpFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBWFBJTW9kdWxlUHJvdmlkZXJJbml0aWFsaXplcj4oXG4gICAgJ0FYUF9NT0RVTEVfUFJPVklERVJfSU5JVElBTElaRVInXG4pO1xuXG4vKipcbiAqIFNlc3Npb24gc2VydmljZSBpbnRlcmZhY2UgZm9yIG1vZHVsZSBwcm92aWRlciBvcGVyYXRpb25zLlxuICogSW1wbGVtZW50YXRpb246IEBhY29yZXgvcGxhdGZvcm0vYXV0aFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUElTZXNzaW9uU2VydmljZSB7XG4gICAgaXNMb2FkaW5nJDogYW55O1xuICAgIHN0YXR1cyQ6IGFueTtcbiAgICB0ZW5hbnQ6IGFueSB8IG51bGw7XG4gICAgYXBwbGljYXRpb246IGFueSB8IG51bGw7XG4gICAgdXNlcjogYW55IHwgbnVsbDtcbn1cblxuLyoqXG4gKiBJbmplY3Rpb24gdG9rZW4gZm9yIHNlc3Npb24gc2VydmljZS5cbiAqIEltcGxlbWVudGF0aW9uOiBAYWNvcmV4L3BsYXRmb3JtL2F1dGhcbiAqL1xuZXhwb3J0IGNvbnN0IEFYUF9TRVNTSU9OX1NFUlZJQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48QVhQSVNlc3Npb25TZXJ2aWNlPihcbiAgICAnQVhQX1NFU1NJT05fU0VSVklDRSdcbik7XG5cbi8vI2VuZHJlZ2lvblxuXG4iXX0=","//#region ---- Imports ----\nimport { Injectable, InjectionToken } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n//#endregion\n//#region ---- Default Implementation ----\n/**\n * Default implementation of module access control service.\n * Checks if module is enabled in edition.modulesAndFeatures.modules.\n */\nexport class DefaultModuleAccessControlService {\n checkAccess(moduleName, context) {\n // Check if module is enabled in edition\n const enabledModules = context.edition.modulesAndFeatures?.modules || [];\n return enabledModules.includes(moduleName);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: DefaultModuleAccessControlService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: DefaultModuleAccessControlService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: DefaultModuleAccessControlService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//#endregion\n//#region ---- Injection Token ----\n/**\n * Injection token for module access control service.\n * If not provided, DefaultModuleAccessControlService will be used as fallback.\n */\nexport const AXP_MODULE_ACCESS_CONTROL_SERVICE = new InjectionToken('AXP_MODULE_ACCESS_CONTROL_SERVICE');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLWFjY2Vzcy1jb250cm9sLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2NvcmUvc3JjL2xpYi9tb2R1bGUtbWFuaWZlc3QvbW9kdWxlLWFjY2Vzcy1jb250cm9sLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBRS9CLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFVLE1BQU0sZUFBZSxDQUFDOztBQXNFbkUsWUFBWTtBQUVaLDhDQUE4QztBQUU5Qzs7O0dBR0c7QUFFSCxNQUFNLE9BQU8saUNBQWlDO0lBQzVDLFdBQVcsQ0FBQyxVQUFrQixFQUFFLE9BQStCO1FBQzdELHdDQUF3QztRQUN4QyxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDekUsT0FBTyxjQUFjLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7K0dBTFUsaUNBQWlDO21IQUFqQyxpQ0FBaUMsY0FEcEIsTUFBTTs7NEZBQ25CLGlDQUFpQztrQkFEN0MsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O0FBU2xDLFlBQVk7QUFFWix1Q0FBdUM7QUFFdkM7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQUcsSUFBSSxjQUFjLENBQ2pFLG1DQUFtQyxDQUNwQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBJbXBvcnRzICAgLS0tLVxuXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIEFjY2VzcyBDb250ZXh0IFR5cGUgICAtLS0tXG5cbi8qKlxuICogQWNjZXNzIGNvbnRyb2wgY29udGV4dCBmb3IgbW9kdWxlIGxvYWRpbmcuXG4gKiBOb3RlOiBUeXBlcyBhcmUgZGVmaW5lZCBsb2NhbGx5IHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY3kgd2l0aCBAYWNvcmV4L3BsYXRmb3JtL2F1dGhcbiAqIFRoZXNlIHR5cGVzIG1hdGNoIHRoZSBzdHJ1Y3R1cmUgb2YgQVhQVGVuYW50LCBBWFBBcHBsaWNhdGlvbiwgYW5kIEFYUFVzZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBNb2R1bGVBY2Nlc3NDb250ZXh0IHtcbiAgdGVuYW50OiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBsb2dvPzogYW55O1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgfTtcbiAgYXBwbGljYXRpb246IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICB2ZXJzaW9uPzogc3RyaW5nO1xuICAgIGVkaXRpb24/OiB7XG4gICAgICBpZDogc3RyaW5nO1xuICAgICAgdGl0bGU6IHN0cmluZztcbiAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIH07XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgbG9nbz86IGFueTtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIH07XG4gIGVkaXRpb246IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgbW9kdWxlc0FuZEZlYXR1cmVzPzoge1xuICAgICAgbW9kdWxlczogc3RyaW5nW107XG4gICAgICBmZWF0dXJlczogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICB9O1xuICB9O1xuICBzdWJzY3JpcHRpb24/OiBhbnk7XG4gIHVzZXI6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIGF2YXRhcj86IHN0cmluZztcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIH07XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIE1vZHVsZSBBY2Nlc3MgQ29udHJvbCBTZXJ2aWNlIEludGVyZmFjZSAgIC0tLS1cblxuLyoqXG4gKiBTZXJ2aWNlIGZvciBjaGVja2luZyBtb2R1bGUgYWNjZXNzIGNvbnRyb2wuXG4gKiBQcm92aWRlcyBjZW50cmFsaXplZCBhY2Nlc3MgY29udHJvbCBsb2dpYyB0aGF0IGNhbiBiZSBvdmVycmlkZGVuIHBlciBtb2R1bGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQTW9kdWxlQWNjZXNzQ29udHJvbFNlcnZpY2Uge1xuICAvKipcbiAgICogQ2hlY2sgaWYgdXNlciBoYXMgYWNjZXNzIHRvIGEgbW9kdWxlIGJhc2VkIG9uIGNvbnRleHQuXG4gICAqIEBwYXJhbSBtb2R1bGVOYW1lIE1vZHVsZSBuYW1lIHRvIGNoZWNrIGFjY2VzcyBmb3JcbiAgICogQHBhcmFtIGNvbnRleHQgQWNjZXNzIGNvbnRyb2wgY29udGV4dFxuICAgKiBAcmV0dXJucyB0cnVlIGlmIG1vZHVsZSBzaG91bGQgYmUgbG9hZGVkLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIGNoZWNrQWNjZXNzKG1vZHVsZU5hbWU6IHN0cmluZywgY29udGV4dDogQVhQTW9kdWxlQWNjZXNzQ29udGV4dCk6IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+O1xufVxuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIC0tLS0gICBEZWZhdWx0IEltcGxlbWVudGF0aW9uICAgLS0tLVxuXG4vKipcbiAqIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgbW9kdWxlIGFjY2VzcyBjb250cm9sIHNlcnZpY2UuXG4gKiBDaGVja3MgaWYgbW9kdWxlIGlzIGVuYWJsZWQgaW4gZWRpdGlvbi5tb2R1bGVzQW5kRmVhdHVyZXMubW9kdWxlcy5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBEZWZhdWx0TW9kdWxlQWNjZXNzQ29udHJvbFNlcnZpY2UgaW1wbGVtZW50cyBBWFBNb2R1bGVBY2Nlc3NDb250cm9sU2VydmljZSB7XG4gIGNoZWNrQWNjZXNzKG1vZHVsZU5hbWU6IHN0cmluZywgY29udGV4dDogQVhQTW9kdWxlQWNjZXNzQ29udGV4dCk6IGJvb2xlYW4ge1xuICAgIC8vIENoZWNrIGlmIG1vZHVsZSBpcyBlbmFibGVkIGluIGVkaXRpb25cbiAgICBjb25zdCBlbmFibGVkTW9kdWxlcyA9IGNvbnRleHQuZWRpdGlvbi5tb2R1bGVzQW5kRmVhdHVyZXM/Lm1vZHVsZXMgfHwgW107XG4gICAgcmV0dXJuIGVuYWJsZWRNb2R1bGVzLmluY2x1ZGVzKG1vZHVsZU5hbWUpO1xuICB9XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIEluamVjdGlvbiBUb2tlbiAgIC0tLS1cblxuLyoqXG4gKiBJbmplY3Rpb24gdG9rZW4gZm9yIG1vZHVsZSBhY2Nlc3MgY29udHJvbCBzZXJ2aWNlLlxuICogSWYgbm90IHByb3ZpZGVkLCBEZWZhdWx0TW9kdWxlQWNjZXNzQ29udHJvbFNlcnZpY2Ugd2lsbCBiZSB1c2VkIGFzIGZhbGxiYWNrLlxuICovXG5leHBvcnQgY29uc3QgQVhQX01PRFVMRV9BQ0NFU1NfQ09OVFJPTF9TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuPEFYUE1vZHVsZUFjY2Vzc0NvbnRyb2xTZXJ2aWNlPihcbiAgJ0FYUF9NT0RVTEVfQUNDRVNTX0NPTlRST0xfU0VSVklDRSdcbik7XG5cbi8vI2VuZHJlZ2lvblxuIl19","import { Injectable, inject, provideAppInitializer } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXPAppStartUpService {\n constructor() {\n this.tasks = [];\n }\n registerTask(task) {\n this.tasks.push(task);\n }\n async runAllTasks() {\n for (const task of this.tasks.sort((a, b) => a.priority - b.priority)) {\n this.updateStatus(task.statusText);\n await task.run();\n }\n }\n updateStatus(status) {\n const loadingText = document.querySelector('#loadingText');\n if (loadingText) {\n loadingText.innerHTML = status;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPAppStartUpService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPAppStartUpService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPAppStartUpService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\nfunction initAppFactory(appInitService) {\n return () => appInitService.runAllTasks();\n}\nexport const AXPAppStartUpProvider = provideAppInitializer(() => {\n const initializerFn = initAppFactory(inject(AXPAppStartUpService));\n return initializerFn();\n});\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXN0YXJ0dXAuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL3N0YXJ0dXAvYXBwLXN0YXJ0dXAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFRMUUsTUFBTSxPQUFPLG9CQUFvQjtJQUhqQztRQUlVLFVBQUssR0FBcUIsRUFBRSxDQUFDO0tBbUJ0QztJQWpCQyxZQUFZLENBQUMsSUFBb0I7UUFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXO1FBQ2YsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDdEUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbkMsTUFBTSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFFTyxZQUFZLENBQUMsTUFBYztRQUNqQyxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzNELElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsV0FBVyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7UUFDakMsQ0FBQztJQUNILENBQUM7K0dBbkJVLG9CQUFvQjttSEFBcEIsb0JBQW9CLGNBRm5CLE1BQU07OzRGQUVQLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBdUJELFNBQVMsY0FBYyxDQUFDLGNBQW9DO0lBQzFELE9BQU8sR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQzVDLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUU7SUFDOUQsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7SUFDbkUsT0FBTyxhQUFhLEVBQUUsQ0FBQztBQUN6QixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCwgcHJvdmlkZUFwcEluaXRpYWxpemVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBTdGFydFVwVGFzayB9IGZyb20gJy4vYXBwLXN0YXJ0dXAudHlwZXMnO1xuXG5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFYUEFwcFN0YXJ0VXBTZXJ2aWNlIHtcbiAgcHJpdmF0ZSB0YXNrczogQVhQU3RhcnRVcFRhc2tbXSA9IFtdO1xuXG4gIHJlZ2lzdGVyVGFzayh0YXNrOiBBWFBTdGFydFVwVGFzaykge1xuICAgIHRoaXMudGFza3MucHVzaCh0YXNrKTtcbiAgfVxuXG4gIGFzeW5jIHJ1bkFsbFRhc2tzKCkge1xuICAgIGZvciAoY29uc3QgdGFzayBvZiB0aGlzLnRhc2tzLnNvcnQoKGEsIGIpID0+IGEucHJpb3JpdHkgLSBiLnByaW9yaXR5KSkge1xuICAgICAgdGhpcy51cGRhdGVTdGF0dXModGFzay5zdGF0dXNUZXh0KTtcbiAgICAgIGF3YWl0IHRhc2sucnVuKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTdGF0dXMoc3RhdHVzOiBzdHJpbmcpIHtcbiAgICBjb25zdCBsb2FkaW5nVGV4dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNsb2FkaW5nVGV4dCcpO1xuICAgIGlmIChsb2FkaW5nVGV4dCkge1xuICAgICAgbG9hZGluZ1RleHQuaW5uZXJIVE1MID0gc3RhdHVzO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0QXBwRmFjdG9yeShhcHBJbml0U2VydmljZTogQVhQQXBwU3RhcnRVcFNlcnZpY2UpIHtcbiAgcmV0dXJuICgpID0+IGFwcEluaXRTZXJ2aWNlLnJ1bkFsbFRhc2tzKCk7XG59XG5cbmV4cG9ydCBjb25zdCBBWFBBcHBTdGFydFVwUHJvdmlkZXIgPSBwcm92aWRlQXBwSW5pdGlhbGl6ZXIoKCkgPT4ge1xuICBjb25zdCBpbml0aWFsaXplckZuID0gaW5pdEFwcEZhY3RvcnkoaW5qZWN0KEFYUEFwcFN0YXJ0VXBTZXJ2aWNlKSk7XG4gIHJldHVybiBpbml0aWFsaXplckZuKCk7XG59KTtcbiJdfQ==","//#region ---- Tag Types ----\nexport {};\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9jb3JlL3NyYy9saWIvdGFncy90YWcudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUNBQWlDOztBQXFCakMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiAtLS0tICAgVGFnIFR5cGVzICAgLS0tLVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSB0YWcgd2l0aCB0ZXh0LCBjb2xvciwgYW5kIG1ldGFkYXRhXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQVGFnIHtcbiAgICBpZD86IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIGNvbG9yOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgc2NvcGU/OiAnc3lzdGVtJyB8ICd0ZW5hbnQnIHwgJ3VzZXInO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGZpbHRlcmluZyB0YWdzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQVGFnRmlsdGVyT3B0aW9ucyB7XG4gICAgc2NvcGU/OiAoJ3N5c3RlbScgfCAndGVuYW50JyB8ICd1c2VyJylbXTtcbiAgICBzZWFyY2g/OiBzdHJpbmc7XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4iXX0=","import { InjectionToken } from '@angular/core';\n//#region ---- Tag Provider ----\n/**\n * Abstract class for tag providers\n * Implement this to provide tags from different sources (system, tenant, user, etc.)\n */\nexport class AXPTagProvider {\n /**\n * Create a new tag (optional - not all providers support creation)\n * @param tag Tag to create\n * @returns Created tag with id\n */\n async create(tag) {\n throw new Error(`Provider ${this.name} does not support tag creation`);\n }\n /**\n * Update an existing tag (optional)\n * @param tag Tag to update\n * @returns Updated tag\n */\n async update(tag) {\n throw new Error(`Provider ${this.name} does not support tag updates`);\n }\n /**\n * Delete a tag (optional)\n * @param id Tag id to delete\n */\n async delete(id) {\n throw new Error(`Provider ${this.name} does not support tag deletion`);\n }\n}\n/**\n * Injection token for tag providers\n * Use this to register multiple tag providers\n */\nexport const AXP_TAG_PROVIDER = new InjectionToken('AXP_TAG_PROVIDER');\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9jb3JlL3NyYy9saWIvdGFncy90YWcucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvQyxvQ0FBb0M7QUFFcEM7OztHQUdHO0FBQ0gsTUFBTSxPQUFnQixjQUFjO0lBWWhDOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFFLEdBQXVCO1FBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSxnQ0FBZ0MsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLE1BQU0sQ0FBRSxHQUFXO1FBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSwrQkFBK0IsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFFLEVBQVU7UUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLGdDQUFnQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztDQUNKO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQW1CLGtCQUFrQixDQUFDLENBQUM7QUFFekYsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBUYWcgfSBmcm9tICcuL3RhZy50eXBlcyc7XG5cbi8vI3JlZ2lvbiAtLS0tICAgVGFnIFByb3ZpZGVyICAgLS0tLVxuXG4vKipcbiAqIEFic3RyYWN0IGNsYXNzIGZvciB0YWcgcHJvdmlkZXJzXG4gKiBJbXBsZW1lbnQgdGhpcyB0byBwcm92aWRlIHRhZ3MgZnJvbSBkaWZmZXJlbnQgc291cmNlcyAoc3lzdGVtLCB0ZW5hbnQsIHVzZXIsIGV0Yy4pXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWFBUYWdQcm92aWRlciB7XG4gICAgLyoqXG4gICAgICogVW5pcXVlIG5hbWUgZm9yIHRoaXMgcHJvdmlkZXIgKGUuZy4sICdzeXN0ZW0nLCAndGVuYW50JywgJ3VzZXInKVxuICAgICAqL1xuICAgIGFic3RyYWN0IG5hbWU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGUgdGFncyBmcm9tIHRoaXMgc291cmNlXG4gICAgICogQHJldHVybnMgUHJvbWlzZSBvZiB0YWdzXG4gICAgICovXG4gICAgYWJzdHJhY3QgcHJvdmlkZSgpOiBQcm9taXNlPEFYUFRhZ1tdPjtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhIG5ldyB0YWcgKG9wdGlvbmFsIC0gbm90IGFsbCBwcm92aWRlcnMgc3VwcG9ydCBjcmVhdGlvbilcbiAgICAgKiBAcGFyYW0gdGFnIFRhZyB0byBjcmVhdGVcbiAgICAgKiBAcmV0dXJucyBDcmVhdGVkIHRhZyB3aXRoIGlkXG4gICAgICovXG4gICAgYXN5bmMgY3JlYXRlPyh0YWc6IE9taXQ8QVhQVGFnLCAnaWQnPik6IFByb21pc2U8QVhQVGFnPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgUHJvdmlkZXIgJHt0aGlzLm5hbWV9IGRvZXMgbm90IHN1cHBvcnQgdGFnIGNyZWF0aW9uYCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlIGFuIGV4aXN0aW5nIHRhZyAob3B0aW9uYWwpXG4gICAgICogQHBhcmFtIHRhZyBUYWcgdG8gdXBkYXRlXG4gICAgICogQHJldHVybnMgVXBkYXRlZCB0YWdcbiAgICAgKi9cbiAgICBhc3luYyB1cGRhdGU/KHRhZzogQVhQVGFnKTogUHJvbWlzZTxBWFBUYWc+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQcm92aWRlciAke3RoaXMubmFtZX0gZG9lcyBub3Qgc3VwcG9ydCB0YWcgdXBkYXRlc2ApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlbGV0ZSBhIHRhZyAob3B0aW9uYWwpXG4gICAgICogQHBhcmFtIGlkIFRhZyBpZCB0byBkZWxldGVcbiAgICAgKi9cbiAgICBhc3luYyBkZWxldGU/KGlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQcm92aWRlciAke3RoaXMubmFtZX0gZG9lcyBub3Qgc3VwcG9ydCB0YWcgZGVsZXRpb25gKTtcbiAgICB9XG59XG5cbi8qKlxuICogSW5qZWN0aW9uIHRva2VuIGZvciB0YWcgcHJvdmlkZXJzXG4gKiBVc2UgdGhpcyB0byByZWdpc3RlciBtdWx0aXBsZSB0YWcgcHJvdmlkZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBBWFBfVEFHX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuPEFYUFRhZ1Byb3ZpZGVyW10+KCdBWFBfVEFHX1BST1ZJREVSJyk7XG5cbi8vI2VuZHJlZ2lvblxuXG4iXX0=","import { inject, Injectable } from '@angular/core';\nimport { AXP_TAG_PROVIDER } from './tag.provider';\nimport * as i0 from \"@angular/core\";\n//#region ---- Tag Service ----\n/**\n * Service for managing tags from multiple providers\n * Aggregates tags from all registered providers\n */\nexport class AXPTagService {\n constructor() {\n //#region ---- Dependencies ----\n this.providers = inject(AXP_TAG_PROVIDER, { optional: true }) ?? [];\n //#endregion\n //#region ---- State ----\n this.cache = null;\n }\n //#endregion\n //#region ---- Public API ----\n /**\n * Get all tags from all providers\n * @param options Filter options\n * @returns Promise of tags\n */\n async getTags(options) {\n if (!this.cache) {\n await this.loadTags();\n }\n let tags = this.cache;\n // Apply scope filter\n if (options?.scope && options.scope.length > 0) {\n tags = tags.filter((tag) => tag.scope && options.scope.includes(tag.scope));\n }\n // Apply search filter\n if (options?.search) {\n const searchLower = options.search.toLowerCase();\n tags = tags.filter((tag) => tag.title.toLowerCase().includes(searchLower) ||\n tag.description?.toLowerCase().includes(searchLower));\n }\n return tags;\n }\n /**\n * Create a new tag using the appropriate provider\n * @param tag Tag to create\n * @param providerName Provider to use (defaults to first writable provider)\n * @returns Created tag\n */\n async createTag(tag, providerName) {\n const provider = providerName\n ? this.providers.find((p) => p.name === providerName)\n : this.providers.find((p) => p.create);\n if (!provider || !provider.create) {\n throw new Error('No writable tag provider available');\n }\n const createdTag = await provider.create(tag);\n // Invalidate cache\n this.cache = null;\n return createdTag;\n }\n /**\n * Update an existing tag\n * @param tag Tag to update\n * @returns Updated tag\n */\n async updateTag(tag) {\n const provider = this.providers.find((p) => p.name === tag.scope && p.update);\n if (!provider || !provider.update) {\n throw new Error(`No provider found for updating tag with scope: ${tag.scope}`);\n }\n const updatedTag = await provider.update(tag);\n // Invalidate cache\n this.cache = null;\n return updatedTag;\n }\n /**\n * Delete a tag\n * @param tagId Tag id to delete\n * @param scope Tag scope\n */\n async deleteTag(tagId, scope) {\n const provider = this.providers.find((p) => p.name === scope && p.delete);\n if (!provider || !provider.delete) {\n throw new Error(`No provider found for deleting tag with scope: ${scope}`);\n }\n await provider.delete(tagId);\n // Invalidate cache\n this.cache = null;\n }\n /**\n * Reload tags from all providers\n */\n async reload() {\n this.cache = null;\n await this.loadTags();\n }\n //#endregion\n //#region ---- Private Methods ----\n /**\n * Load tags from all providers\n */\n async loadTags() {\n const allTags = [];\n for (const provider of this.providers) {\n try {\n const tags = await provider.provide();\n allTags.push(...tags);\n }\n catch (error) {\n console.error(`Error loading tags from provider ${provider.name}:`, error);\n }\n }\n // Remove duplicates based on title (case-insensitive)\n const uniqueTags = allTags.filter((tag, index, self) => index === self.findIndex((t) => t.title.toLowerCase() === tag.title.toLowerCase()));\n this.cache = uniqueTags;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPTagService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPTagService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPTagService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2NvcmUvc3JjL2xpYi90YWdzL3RhZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBa0IsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFbEUsbUNBQW1DO0FBRW5DOzs7R0FHRztBQUlILE1BQU0sT0FBTyxhQUFhO0lBSDFCO1FBS0ksb0NBQW9DO1FBRTVCLGNBQVMsR0FBcUIsTUFBTSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRXpGLFlBQVk7UUFFWiw2QkFBNkI7UUFFckIsVUFBSyxHQUFvQixJQUFJLENBQUM7S0FzSXpDO0lBcElHLFlBQVk7SUFFWixrQ0FBa0M7SUFFbEM7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBNkI7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNkLE1BQU0sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFCLENBQUM7UUFFRCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBTSxDQUFDO1FBRXZCLHFCQUFxQjtRQUNyQixJQUFJLE9BQU8sRUFBRSxLQUFLLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDN0MsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLEtBQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDakYsQ0FBQztRQUVE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LElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsWUFBWTtJQUVaLHVDQUF1QztJQUV2Qzs7T0FFRztJQUNLLEtBQUssQ0FBQyxRQUFRO1FBQ2xCLE1BQU0sT0FBTyxHQUFhLEVBQUUsQ0FBQztRQUU3QixLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUM7Z0JBQ0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUMxQixDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDYixPQUFPLENBQUMsS0FBSyxDQUFDLG9DQUFvQyxRQUFRLENBQUMsSUFBSSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDL0UsQ0FBQztRQUNMLENBQUM7UUFFRCxzREFBc0Q7UUFDdEQsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FDN0IsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLENBQ2pCLEtBQUssS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FDekYsQ0FBQztRQUVGLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDO0lBQzVCLENBQUM7K0dBN0lRLGFBQWE7bUhBQWIsYUFBYSxjQUZWLE1BQU07OzRGQUVULGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBUYWcsIEFYUFRhZ0ZpbHRlck9wdGlvbnMgfSBmcm9tICcuL3RhZy50eXBlcyc7XG5pbXBvcnQgeyBBWFBfVEFHX1BST1ZJREVSLCBBWFBUYWdQcm92aWRlciB9IGZyb20gJy4vdGFnLnByb3ZpZGVyJztcblxuLy8jcmVnaW9uIC0tLS0gICBUYWcgU2VydmljZSAgIC0tLS1cblxuLyoqXG4gKiBTZXJ2aWNlIGZvciBtYW5hZ2luZyB0YWdzIGZyb20gbXVsdGlwbGUgcHJvdmlkZXJzXG4gKiBBZ2dyZWdhdGVzIHRhZ3MgZnJvbSBhbGwgcmVnaXN0ZXJlZCBwcm92aWRlcnNcbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQVhQVGFnU2VydmljZSB7XG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIERlcGVuZGVuY2llcyAgIC0tLS1cblxuICAgIHByaXZhdGUgcHJvdmlkZXJzOiBBWFBUYWdQcm92aWRlcltdID0gaW5qZWN0KEFYUF9UQUdfUFJPVklERVIsIHsgb3B0aW9uYWw6IHRydWUgfSkgPz8gW107XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgU3RhdGUgICAtLS0tXG5cbiAgICBwcml2YXRlIGNhY2hlOiBBWFBUYWdbXSB8IG51bGwgPSBudWxsO1xuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIFB1YmxpYyBBUEkgICAtLS0tXG5cbiAgICAvKipcbiAgICAgKiBHZXQgYWxsIHRhZ3MgZnJvbSBhbGwgcHJvdmlkZXJzXG4gICAgICogQHBhcmFtIG9wdGlvbnMgRmlsdGVyIG9wdGlvbnNcbiAgICAgKiBAcmV0dXJucyBQcm9taXNlIG9mIHRhZ3NcbiAgICAgKi9cbiAgICBhc3luYyBnZXRUYWdzKG9wdGlvbnM/OiBBWFBUYWdGaWx0ZXJPcHRpb25zKTogUHJvbWlzZTxBWFBUYWdbXT4ge1xuICAgICAgICBpZiAoIXRoaXMuY2FjaGUpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMubG9hZFRhZ3MoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB0YWdzID0gdGhpcy5jYWNoZSE7XG5cbiAgICAgICAgLy8gQXBwbHkgc2NvcGUgZmlsdGVyXG4gICAgICAgIGlmIChvcHRpb25zPy5zY29wZSAmJiBvcHRpb25zLnNjb3BlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRhZ3MgPSB0YWdzLmZpbHRlcigodGFnKSA9PiB0YWcuc2NvcGUgJiYgb3B0aW9ucy5zY29wZSEuaW5jbHVkZXModGFnLnNjb3BlKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBcHBseSBzZWFyY2ggZmlsdGVyXG4gICAgICAgIGlmIChvcHRpb25zPy5zZWFyY2gpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlYXJjaExvd2VyID0gb3B0aW9ucy5zZWFyY2gudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIHRhZ3MgPSB0YWdzLmZpbHRlcihcbiAgICAgICAgICAgICAgICAodGFnKSA9PlxuICAgICAgICAgICAgICAgICAgICB0YWcudGl0bGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hMb3dlcikgfHxcbiAgICAgICAgICAgICAgICAgICAgdGFnLmRlc2NyaXB0aW9uPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaExvd2VyKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGFncztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSBuZXcgdGFnIHVzaW5nIHRoZSBhcHByb3ByaWF0ZSBwcm92aWRlclxuICAgICAqIEBwYXJhbSB0YWcgVGFnIHRvIGNyZWF0ZVxuICAgICAqIEBwYXJhbSBwcm92aWRlck5hbWUgUHJvdmlkZXIgdG8gdXNlIChkZWZhdWx0cyB0byBmaXJzdCB3cml0YWJsZSBwcm92aWRlcilcbiAgICAgKiBAcmV0dXJucyBDcmVhdGVkIHRhZ1xuICAgICAqL1xuICAgIGFzeW5jIGNyZWF0ZVRhZyh0YWc6IE9taXQ8QVhQVGFnLCAnaWQnPiwgcHJvdmlkZXJOYW1lPzogc3RyaW5nKTogUHJvbWlzZTxBWFBUYWc+IHtcbiAgICAgICAgY29uc3QgcHJvdmlkZXIgPSBwcm92aWRlck5hbWVcbiAgICAgICAgICAgID8gdGhpcy5wcm92aWRlcnMuZmluZCgocCkgPT4gcC5uYW1lID09PSBwcm92aWRlck5hbWUpXG4gICAgICAgICAgICA6IHRoaXMucHJvdmlkZXJzLmZpbmQoKHApID0+IHAuY3JlYXRlKTtcblxuICAgICAgICBpZiAoIXByb3ZpZGVyIHx8ICFwcm92aWRlci5jcmVhdGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gd3JpdGFibGUgdGFnIHByb3ZpZGVyIGF2YWlsYWJsZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY3JlYXRlZFRhZyA9IGF3YWl0IHByb3ZpZGVyLmNyZWF0ZSh0YWcpO1xuXG4gICAgICAgIC8vIEludmFsaWRhdGUgY2FjaGVcbiAgICAgICAgdGhpcy5jYWNoZSA9IG51bGw7XG5cbiAgICAgICAgcmV0dXJuIGNyZWF0ZWRUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlIGFuIGV4aXN0aW5nIHRhZ1xuICAgICAqIEBwYXJhbSB0YWcgVGFnIHRvIHVwZGF0ZVxuICAgICAqIEByZXR1cm5zIFVwZGF0ZWQgdGFnXG4gICAgICovXG4gICAgYXN5bmMgdXBkYXRlVGFnKHRhZzogQVhQVGFnKTogUHJvbWlzZTxBWFBUYWc+IHtcbiAgICAgICAgY29uc3QgcHJvdmlkZXIgPSB0aGlzLnByb3ZpZGVycy5maW5kKChwKSA9PiBwLm5hbWUgPT09IHRhZy5zY29wZSAmJiBwLnVwZGF0ZSk7XG5cbiAgICAgICAgaWYgKCFwcm92aWRlciB8fCAhcHJvdmlkZXIudXBkYXRlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHByb3ZpZGVyIGZvdW5kIGZvciB1cGRhdGluZyB0YWcgd2l0aCBzY29wZTogJHt0YWcuc2NvcGV9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1cGRhdGVkVGFnID0gYXdhaXQgcHJvdmlkZXIudXBkYXRlKHRhZyk7XG5cbiAgICAgICAgLy8gSW52YWxpZGF0ZSBjYWNoZVxuICAgICAgICB0aGlzLmNhY2hlID0gbnVsbDtcblxuICAgICAgICByZXR1cm4gdXBkYXRlZFRhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWxldGUgYSB0YWdcbiAgICAgKiBAcGFyYW0gdGFnSWQgVGFnIGlkIHRvIGRlbGV0ZVxuICAgICAqIEBwYXJhbSBzY29wZSBUYWcgc2NvcGVcbiAgICAgKi9cbiAgICBhc3luYyBkZWxldGVUYWcodGFnSWQ6IHN0cmluZywgc2NvcGU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBwcm92aWRlciA9IHRoaXMucHJvdmlkZXJzLmZpbmQoKHApID0+IHAubmFtZSA9PT0gc2NvcGUgJiYgcC5kZWxldGUpO1xuXG4gICAgICAgIGlmICghcHJvdmlkZXIgfHwgIXByb3ZpZGVyLmRlbGV0ZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBwcm92aWRlciBmb3VuZCBmb3IgZGVsZXRpbmcgdGFnIHdpdGggc2NvcGU6ICR7c2NvcGV9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBwcm92aWRlci5kZWxldGUodGFnSWQpO1xuXG4gICAgICAgIC8vIEludmFsaWRhdGUgY2FjaGVcbiAgICAgICAgdGhpcy5jYWNoZSA9IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVsb2FkIHRhZ3MgZnJvbSBhbGwgcHJvdmlkZXJzXG4gICAgICovXG4gICAgYXN5bmMgcmVsb2FkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLmNhY2hlID0gbnVsbDtcbiAgICAgICAgYXdhaXQgdGhpcy5sb2FkVGFncygpO1xuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBQcml2YXRlIE1ldGhvZHMgICAtLS0tXG5cbiAgICAvKipcbiAgICAgKiBMb2FkIHRhZ3MgZnJvbSBhbGwgcHJvdmlkZXJzXG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3luYyBsb2FkVGFncygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgYWxsVGFnczogQVhQVGFnW10gPSBbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IHByb3ZpZGVyIG9mIHRoaXMucHJvdmlkZXJzKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhZ3MgPSBhd2FpdCBwcm92aWRlci5wcm92aWRlKCk7XG4gICAgICAgICAgICAgICAgYWxsVGFncy5wdXNoKC4uLnRhZ3MpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvciBsb2FkaW5nIHRhZ3MgZnJvbSBwcm92aWRlciAke3Byb3ZpZGVyLm5hbWV9OmAsIGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlbW92ZSBkdXBsaWNhdGVzIGJhc2VkIG9uIHRpdGxlIChjYXNlLWluc2Vuc2l0aXZlKVxuICAgICAgICBjb25zdCB1bmlxdWVUYWdzID0gYWxsVGFncy5maWx0ZXIoXG4gICAgICAgICAgICAodGFnLCBpbmRleCwgc2VsZikgPT5cbiAgICAgICAgICAgICAgICBpbmRleCA9PT0gc2VsZi5maW5kSW5kZXgoKHQpID0+IHQudGl0bGUudG9Mb3dlckNhc2UoKSA9PT0gdGFnLnRpdGxlLnRvTG93ZXJDYXNlKCkpLFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuY2FjaGUgPSB1bmlxdWVUYWdzO1xuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxufVxuXG4vLyNlbmRyZWdpb25cblxuIl19","/**\n * Additional suggested generic actions for future consideration:\n *\n * Data & Content Actions:\n * - Search = 'search' - Search functionality\n * - Filter = 'filter' - Apply filters\n * - Sort = 'sort' - Sort data\n * - Group = 'group' - Group data\n * - Expand = 'expand' - Expand details\n * - Collapse = 'collapse' - Collapse details\n * - Pin = 'pin' - Pin to favorites\n * - Bookmark = 'bookmark' - Bookmark item\n * - Favorite = 'favorite' - Mark as favorite\n * - Star = 'star' - Star rating\n *\n * Workflow Actions:\n * - Start = 'start' - Start process/workflow\n * - Stop = 'stop' - Stop process\n * - Pause = 'pause' - Pause process\n * - Resume = 'resume' - Resume process\n * - Cancel = 'cancel' - Cancel operation\n * - Complete = 'complete' - Mark as complete\n * - Close = 'close' - Close item\n * - Reopen = 'reopen' - Reopen closed item\n * - Forward = 'forward' - Forward to next step\n * - Back = 'back' - Go back\n *\n * Communication Actions:\n * - Reply = 'reply' - Reply to message\n * - Forward = 'forward' - Forward message\n * - Notify = 'notify' - Send notification\n * - Invite = 'invite' - Invite user\n * - Join = 'join' - Join group/meeting\n * - Leave = 'leave' - Leave group/meeting\n *\n * Security Actions:\n * - Login = 'login' - User login\n * - Logout = 'logout' - User logout\n * - Block = 'block' - Block user/content\n * - Unblock = 'unblock' - Unblock user/content\n * - Ban = 'ban' - Ban user\n * - Unban = 'unban' - Unban user\n * - Verify = 'verify' - Verify identity\n * - Authenticate = 'authenticate' - Authenticate\n *\n * File & Media Actions:\n * - Open = 'open' - Open file\n * - Save = 'save' - Save file\n * - SaveAs = 'save-as' - Save as new file\n * - Attach = 'attach' - Attach file\n * - Detach = 'detach' - Detach file\n * - Compress = 'compress' - Compress files\n * - Extract = 'extract' - Extract archive\n * - Convert = 'convert' - Convert format\n * - Crop = 'crop' - Crop image\n * - Resize = 'resize' - Resize image\n *\n * System Actions:\n * - Sync = 'sync' - Synchronize data\n * - Backup = 'backup' - Create backup\n * - Restore = 'restore' - Restore from backup\n * - Reset = 'reset' - Reset to defaults\n * - Clear = 'clear' - Clear data\n * - Optimize = 'optimize' - Optimize performance\n * - Update = 'update' - Update system\n * - Install = 'install' - Install component\n * - Uninstall = 'uninstall' - Uninstall component\n * - Enable = 'enable' - Enable feature\n * - Disable = 'disable' - Disable feature\n *\n * Analytics & Monitoring:\n * - Monitor = 'monitor' - Monitor activity\n * - Track = 'track' - Track progress\n * - Analyze = 'analyze' - Analyze data\n * - Debug = 'debug' - Debug issue\n * - Log = 'log' - View logs\n * - Alert = 'alert' - Set alert\n * - Dashboard = 'dashboard' - View dashboard\n * - Metrics = 'metrics' - View metrics\n *\n * Collaboration Actions:\n * - Collaborate = 'collaborate' - Start collaboration\n * - Share = 'share' - Share content\n * - Comment = 'comment' - Add comment\n * - Like = 'like' - Like content\n * - Follow = 'follow' - Follow user/content\n * - Subscribe = 'subscribe' - Subscribe to updates\n * - Unsubscribe = 'unsubscribe' - Unsubscribe\n * - Rate = 'rate' - Rate content\n * - Review = 'review' - Review content\n * - Recommend = 'recommend' - Recommend content\n */\nexport var AXPSystemActionType;\n(function (AXPSystemActionType) {\n AXPSystemActionType[\"View\"] = \"view\";\n AXPSystemActionType[\"Create\"] = \"create\";\n AXPSystemActionType[\"Update\"] = \"update\";\n AXPSystemActionType[\"Delete\"] = \"delete\";\n AXPSystemActionType[\"Approve\"] = \"approve\";\n AXPSystemActionType[\"Reject\"] = \"reject\";\n AXPSystemActionType[\"Submit\"] = \"submit\";\n AXPSystemActionType[\"Export\"] = \"export\";\n AXPSystemActionType[\"Import\"] = \"import\";\n AXPSystemActionType[\"Print\"] = \"print\";\n AXPSystemActionType[\"Assign\"] = \"assign\";\n AXPSystemActionType[\"Lock\"] = \"lock\";\n AXPSystemActionType[\"Unlock\"] = \"unlock\";\n AXPSystemActionType[\"Share\"] = \"share\";\n AXPSystemActionType[\"Configure\"] = \"configure\";\n AXPSystemActionType[\"Reorder\"] = \"reorder\";\n AXPSystemActionType[\"Preview\"] = \"preview\";\n AXPSystemActionType[\"Duplicate\"] = \"duplicate\";\n AXPSystemActionType[\"Archive\"] = \"archive\";\n AXPSystemActionType[\"Publish\"] = \"publish\";\n AXPSystemActionType[\"Unpublish\"] = \"unpublish\";\n AXPSystemActionType[\"Upload\"] = \"upload\";\n AXPSystemActionType[\"Download\"] = \"download\";\n AXPSystemActionType[\"Copy\"] = \"copy\";\n AXPSystemActionType[\"Move\"] = \"move\";\n AXPSystemActionType[\"Rename\"] = \"rename\";\n AXPSystemActionType[\"Restore\"] = \"restore\";\n AXPSystemActionType[\"Manage\"] = \"manage\";\n AXPSystemActionType[\"Info\"] = \"info\";\n AXPSystemActionType[\"Confirm\"] = \"confirm\";\n AXPSystemActionType[\"Design\"] = \"design\";\n AXPSystemActionType[\"VersionHistory\"] = \"version-history\";\n AXPSystemActionType[\"Compare\"] = \"compare\";\n AXPSystemActionType[\"Comments\"] = \"comments\";\n AXPSystemActionType[\"Sign\"] = \"sign\";\n AXPSystemActionType[\"Setup\"] = \"setup\";\n AXPSystemActionType[\"Send\"] = \"send\";\n AXPSystemActionType[\"Report\"] = \"report\";\n AXPSystemActionType[\"Sent\"] = \"sent\";\n AXPSystemActionType[\"Review\"] = \"review\";\n AXPSystemActionType[\"Generate\"] = \"generate\";\n AXPSystemActionType[\"Refresh\"] = \"refresh\";\n AXPSystemActionType[\"Reload\"] = \"reload\";\n AXPSystemActionType[\"Search\"] = \"search\";\n AXPSystemActionType[\"Filter\"] = \"filter\";\n AXPSystemActionType[\"Sort\"] = \"sort\";\n AXPSystemActionType[\"Start\"] = \"start\";\n AXPSystemActionType[\"Stop\"] = \"stop\";\n AXPSystemActionType[\"Pause\"] = \"pause\";\n AXPSystemActionType[\"Cancel\"] = \"cancel\";\n AXPSystemActionType[\"Close\"] = \"close\";\n AXPSystemActionType[\"Complete\"] = \"complete\";\n AXPSystemActionType[\"Save\"] = \"save\";\n AXPSystemActionType[\"SaveAs\"] = \"save-as\";\n AXPSystemActionType[\"Sync\"] = \"sync\";\n AXPSystemActionType[\"Reset\"] = \"reset\";\n AXPSystemActionType[\"Clear\"] = \"clear\";\n AXPSystemActionType[\"Distribution\"] = \"distribution\";\n})(AXPSystemActionType || (AXPSystemActionType = {}));\nconst i18n = (key) => `@general:actions.${key}`;\nexport const AXPSystemActions = Object.freeze({\n View: {\n key: AXPSystemActionType.View,\n title: i18n('view.title'),\n icon: 'fa-light fa-eye',\n color: 'primary',\n descriptions: {\n title: i18n('view.title'),\n tooltip: i18n('view.description'),\n permission: i18n('view.permission'),\n audit: i18n('view.audit')\n }\n },\n Create: {\n key: AXPSystemActionType.Create,\n title: i18n('create.title'),\n icon: 'fa-light fa-plus',\n color: 'primary',\n descriptions: {\n title: i18n('create.title'),\n tooltip: i18n('create.description'),\n permission: i18n('create.permission'),\n audit: i18n('create.audit')\n }\n },\n Edit: {\n key: AXPSystemActionType.Update,\n title: i18n('edit.title'),\n icon: 'fa-light fa-pen',\n color: 'default',\n descriptions: {\n title: i18n('edit.title'),\n tooltip: i18n('edit.description'),\n permission: i18n('edit.permission'),\n audit: i18n('edit.audit')\n }\n },\n Delete: {\n key: AXPSystemActionType.Delete,\n title: i18n('delete.title'),\n icon: 'fa-light fa-trash',\n color: 'danger',\n critical: true,\n descriptions: {\n title: i18n('delete.title'),\n tooltip: i18n('delete.description'),\n permission: i18n('delete.permission'),\n audit: i18n('delete.audit')\n }\n },\n Approve: {\n key: AXPSystemActionType.Approve,\n title: i18n('approve.title'),\n icon: 'fa-light fa-circle-check',\n color: 'success',\n critical: true,\n descriptions: {\n title: i18n('approve.title'),\n tooltip: i18n('approve.description'),\n permission: i18n('approve.permission'),\n audit: i18n('approve.audit')\n }\n },\n Submit: {\n key: AXPSystemActionType.Submit,\n title: i18n('submit.title'),\n icon: 'fa-light fa-paper-plane',\n color: 'primary',\n descriptions: {\n title: i18n('submit.title'),\n tooltip: i18n('submit.description'),\n permission: i18n('submit.permission'),\n audit: i18n('submit.audit')\n }\n },\n Reject: {\n key: AXPSystemActionType.Reject,\n title: i18n('reject.title'),\n icon: 'fa-light fa-ban',\n color: 'danger',\n critical: true,\n descriptions: {\n title: i18n('reject.title'),\n tooltip: i18n('reject.description'),\n permission: i18n('reject.permission'),\n audit: i18n('reject.audit')\n }\n },\n Export: {\n key: AXPSystemActionType.Export,\n title: i18n('export.title'),\n icon: 'fa-light fa-download',\n color: 'default',\n descriptions: {\n title: i18n('export.title'),\n tooltip: i18n('export.description'),\n permission: i18n('export.permission'),\n audit: i18n('export.audit')\n }\n },\n Import: {\n key: AXPSystemActionType.Import,\n title: i18n('import.title'),\n icon: 'fa-light fa-upload',\n color: 'default',\n descriptions: {\n title: i18n('import.title'),\n tooltip: i18n('import.description'),\n permission: i18n('import.permission'),\n audit: i18n('import.audit')\n }\n },\n Print: {\n key: AXPSystemActionType.Print,\n title: i18n('print.title'),\n icon: 'fa-light fa-print',\n color: 'default',\n descriptions: {\n title: i18n('print.title'),\n tooltip: i18n('print.description'),\n permission: i18n('print.permission'),\n audit: i18n('print.audit')\n }\n },\n Duplicate: {\n key: AXPSystemActionType.Duplicate,\n title: i18n('duplicate.title'),\n icon: 'fa-light fa-clone',\n color: 'warning',\n descriptions: {\n title: i18n('duplicate.title'),\n tooltip: i18n('duplicate.description'),\n permission: i18n('duplicate.permission'),\n audit: i18n('duplicate.audit')\n }\n },\n Archive: {\n key: AXPSystemActionType.Archive,\n title: i18n('archive.title'),\n icon: 'fa-light fa-box-archive',\n color: 'default',\n descriptions: {\n title: i18n('archive.title'),\n tooltip: i18n('archive.description'),\n permission: i18n('archive.permission'),\n audit: i18n('archive.audit')\n }\n },\n Restore: {\n key: AXPSystemActionType.Restore,\n title: i18n('restore.title'),\n icon: 'fa-light fa-arrow-rotate-left',\n color: 'default',\n descriptions: {\n title: i18n('restore.title'),\n tooltip: i18n('restore.description'),\n permission: i18n('restore.permission'),\n audit: i18n('restore.audit')\n }\n },\n Assign: {\n key: AXPSystemActionType.Assign,\n title: i18n('assign.title'),\n icon: 'fa-light fa-user-plus',\n color: 'primary',\n descriptions: {\n title: i18n('assign.title'),\n tooltip: i18n('assign.description'),\n permission: i18n('assign.permission'),\n audit: i18n('assign.audit')\n }\n },\n Lock: {\n key: AXPSystemActionType.Lock,\n title: i18n('lock.title'),\n icon: 'fa-light fa-lock',\n color: 'warning',\n descriptions: {\n title: i18n('lock.title'),\n tooltip: i18n('lock.description'),\n permission: i18n('lock.permission'),\n audit: i18n('lock.audit')\n }\n },\n Unlock: {\n key: AXPSystemActionType.Unlock,\n title: i18n('unlock.title'),\n icon: 'fa-light fa-unlock',\n color: 'success',\n descriptions: {\n title: i18n('unlock.title'),\n tooltip: i18n('unlock.description'),\n permission: i18n('unlock.permission'),\n audit: i18n('unlock.audit')\n }\n },\n Share: {\n key: AXPSystemActionType.Share,\n title: i18n('share.title'),\n icon: 'fa-light fa-share-nodes',\n color: 'info',\n descriptions: {\n title: i18n('share.title'),\n tooltip: i18n('share.description'),\n permission: i18n('share.permission'),\n audit: i18n('share.audit')\n }\n },\n Configure: {\n key: AXPSystemActionType.Configure,\n title: i18n('configure.title'),\n icon: 'fa-light fa-sliders',\n color: 'primary',\n descriptions: {\n title: i18n('configure.title'),\n tooltip: i18n('configure.description'),\n permission: i18n('configure.permission'),\n audit: i18n('configure.audit')\n }\n },\n Reorder: {\n key: AXPSystemActionType.Reorder,\n title: i18n('reorder.title'),\n icon: 'fa-light fa-arrow-down-up-across-line',\n color: 'default',\n descriptions: {\n title: i18n('reorder.title'),\n tooltip: i18n('reorder.description'),\n permission: i18n('reorder.permission'),\n audit: i18n('reorder.audit')\n }\n },\n Preview: {\n key: AXPSystemActionType.Preview,\n title: i18n('preview.title'),\n icon: 'fa-light fa-magnifying-glass',\n color: 'default',\n descriptions: {\n title: i18n('preview.title'),\n tooltip: i18n('preview.description'),\n permission: i18n('preview.permission'),\n audit: i18n('preview.audit')\n }\n },\n Publish: {\n key: AXPSystemActionType.Publish,\n title: i18n('publish.title'),\n icon: 'fa-light fa-globe',\n color: 'success',\n descriptions: {\n title: i18n('publish.title'),\n tooltip: i18n('publish.description'),\n permission: i18n('publish.permission'),\n audit: i18n('publish.audit')\n }\n },\n Unpublish: {\n key: AXPSystemActionType.Unpublish,\n title: i18n('unpublish.title'),\n icon: 'fa-light fa-globe-slash',\n color: 'danger',\n descriptions: {\n title: i18n('unpublish.title'),\n tooltip: i18n('unpublish.description'),\n permission: i18n('unpublish.permission'),\n audit: i18n('unpublish.audit')\n }\n },\n Upload: {\n key: AXPSystemActionType.Upload,\n title: i18n('upload.title'),\n icon: 'fa-light fa-upload',\n color: 'default',\n descriptions: {\n title: i18n('upload.title'),\n tooltip: i18n('upload.description'),\n permission: i18n('upload.permission'),\n audit: i18n('upload.audit')\n }\n },\n Download: {\n key: AXPSystemActionType.Download,\n title: i18n('download.title'),\n icon: 'fa-light fa-download',\n color: 'default',\n descriptions: {\n title: i18n('download.title'),\n tooltip: i18n('download.description'),\n permission: i18n('download.permission'),\n audit: i18n('download.audit')\n }\n },\n Copy: {\n key: AXPSystemActionType.Copy,\n title: i18n('copy.title'),\n icon: 'fa-light fa-copy',\n color: 'default',\n descriptions: {\n title: i18n('copy.title'),\n tooltip: i18n('copy.description'),\n permission: i18n('copy.permission'),\n audit: i18n('copy.audit')\n }\n },\n Move: {\n key: AXPSystemActionType.Move,\n title: i18n('move.title'),\n icon: 'fa-light fa-arrow-right-arrow-left',\n color: 'default',\n descriptions: {\n title: i18n('move.title'),\n tooltip: i18n('move.description'),\n permission: i18n('move.permission'),\n audit: i18n('move.audit')\n }\n },\n Rename: {\n key: AXPSystemActionType.Rename,\n title: i18n('rename.title'),\n icon: 'fa-light fa-pen',\n color: 'default',\n descriptions: {\n title: i18n('rename.title'),\n tooltip: i18n('rename.description'),\n permission: i18n('rename.permission'),\n audit: i18n('rename.audit')\n }\n },\n Manage: {\n key: AXPSystemActionType.Manage,\n title: i18n('manage.title'),\n icon: 'fa-light fa-gear',\n color: 'default',\n descriptions: {\n title: i18n('manage.title'),\n tooltip: i18n('manage.description'),\n permission: i18n('manage.permission'),\n audit: i18n('manage.audit')\n }\n },\n Info: {\n key: AXPSystemActionType.Info,\n title: i18n('info.title'),\n icon: 'fa-light fa-info',\n color: 'default',\n descriptions: {\n title: i18n('info.title'),\n tooltip: i18n('info.description'),\n permission: i18n('info.permission'),\n audit: i18n('info.audit')\n }\n },\n Confirm: {\n key: AXPSystemActionType.Confirm,\n title: i18n('confirm.title'),\n icon: 'fa-light fa-check',\n color: 'success',\n descriptions: {\n title: i18n('confirm.title'),\n tooltip: i18n('confirm.description'),\n permission: i18n('confirm.permission'),\n audit: i18n('confirm.audit')\n }\n },\n Design: {\n key: AXPSystemActionType.Design,\n title: i18n('design.title'),\n icon: 'fa-light fa-paintbrush',\n color: 'default',\n descriptions: {\n title: i18n('design.title'),\n tooltip: i18n('design.description'),\n permission: i18n('design.permission'),\n audit: i18n('design.audit')\n }\n },\n VersionHistory: {\n key: AXPSystemActionType.VersionHistory,\n title: i18n('version-history.title'),\n icon: 'fa-light fa-history',\n color: 'default',\n descriptions: {\n title: i18n('version-history.title'),\n tooltip: i18n('version-history.description'),\n permission: i18n('version-history.permission'),\n audit: i18n('version-history.audit')\n }\n },\n Compare: {\n key: AXPSystemActionType.Compare,\n title: i18n('compare.title'),\n icon: 'fa-light fa-code-compare',\n color: 'default',\n descriptions: {\n title: i18n('compare.title'),\n tooltip: i18n('compare.description'),\n permission: i18n('compare.permission'),\n audit: i18n('compare.audit')\n }\n },\n Comments: {\n key: AXPSystemActionType.Comments,\n title: i18n('comments.title'),\n icon: 'fa-light fa-comments',\n color: 'default',\n descriptions: {\n title: i18n('comments.title'),\n tooltip: i18n('comments.description'),\n permission: i18n('comments.permission'),\n audit: i18n('comments.audit')\n }\n },\n Sign: {\n key: AXPSystemActionType.Sign,\n title: i18n('sign.title'),\n icon: 'fa-light fa-signature',\n color: 'default',\n descriptions: {\n title: i18n('sign.title'),\n tooltip: i18n('sign.description'),\n permission: i18n('sign.permission'),\n audit: i18n('sign.audit')\n }\n },\n Setup: {\n key: AXPSystemActionType.Setup,\n title: i18n('setup.title'),\n icon: 'fa-light fa-cog',\n color: 'default',\n descriptions: {\n title: i18n('setup.title'),\n tooltip: i18n('setup.description'),\n permission: i18n('setup.permission'),\n audit: i18n('setup.audit')\n }\n },\n Send: {\n key: AXPSystemActionType.Send,\n title: i18n('send.title'),\n icon: 'fa-light fa-envelope',\n color: 'default',\n descriptions: {\n title: i18n('send.title'),\n tooltip: i18n('send.description'),\n permission: i18n('send.permission'),\n audit: i18n('send.audit')\n }\n },\n Report: {\n key: AXPSystemActionType.Report,\n title: i18n('report.title'),\n icon: 'fa-light fa-chart-line',\n color: 'default',\n descriptions: {\n title: i18n('report.title'),\n tooltip: i18n('report.description'),\n permission: i18n('report.permission'),\n audit: i18n('report.audit')\n }\n },\n Sent: {\n key: AXPSystemActionType.Sent,\n title: i18n('sent.title'),\n icon: 'fa-light fa-paper-plane',\n color: 'default',\n descriptions: {\n title: i18n('sent.title'),\n tooltip: i18n('sent.description'),\n permission: i18n('sent.permission'),\n audit: i18n('sent.audit')\n }\n },\n Review: {\n key: AXPSystemActionType.Review,\n title: i18n('review.title'),\n icon: 'fa-light fa-eye',\n color: 'default',\n descriptions: {\n title: i18n('review.title'),\n tooltip: i18n('review.description'),\n permission: i18n('review.permission'),\n audit: i18n('review.audit')\n }\n },\n Generate: {\n key: AXPSystemActionType.Generate,\n title: i18n('generate.title'),\n icon: 'fa-light fa-wand-magic-sparkles',\n color: 'primary',\n descriptions: {\n title: i18n('generate.title'),\n tooltip: i18n('generate.description'),\n permission: i18n('generate.permission'),\n audit: i18n('generate.audit')\n }\n },\n Refresh: {\n key: AXPSystemActionType.Refresh,\n title: i18n('refresh.title'),\n icon: 'fa-light fa-arrows-rotate',\n color: 'default',\n descriptions: {\n title: i18n('refresh.title'),\n tooltip: i18n('refresh.description'),\n permission: i18n('refresh.permission'),\n audit: i18n('refresh.audit')\n }\n },\n Reload: {\n key: AXPSystemActionType.Reload,\n title: i18n('reload.title'),\n icon: 'fa-light fa-arrows-rotate',\n color: 'default',\n descriptions: {\n title: i18n('reload.title'),\n tooltip: i18n('reload.description'),\n permission: i18n('reload.permission'),\n audit: i18n('reload.audit')\n }\n },\n Search: {\n key: AXPSystemActionType.Search,\n title: i18n('search.title'),\n icon: 'fa-light fa-magnifying-glass',\n color: 'default',\n descriptions: {\n title: i18n('search.title'),\n tooltip: i18n('search.description'),\n permission: i18n('search.permission'),\n audit: i18n('search.audit')\n }\n },\n Filter: {\n key: AXPSystemActionType.Filter,\n title: i18n('filter.title'),\n icon: 'fa-light fa-filter',\n color: 'default',\n descriptions: {\n title: i18n('filter.title'),\n tooltip: i18n('filter.description'),\n permission: i18n('filter.permission'),\n audit: i18n('filter.audit')\n }\n },\n Sort: {\n key: AXPSystemActionType.Sort,\n title: i18n('sort.title'),\n icon: 'fa-light fa-arrow-down-up-across-line',\n color: 'default',\n descriptions: {\n title: i18n('sort.title'),\n tooltip: i18n('sort.description'),\n permission: i18n('sort.permission'),\n audit: i18n('sort.audit')\n }\n },\n Start: {\n key: AXPSystemActionType.Start,\n title: i18n('start.title'),\n icon: 'fa-light fa-play',\n color: 'success',\n descriptions: {\n title: i18n('start.title'),\n tooltip: i18n('start.description'),\n permission: i18n('start.permission'),\n audit: i18n('start.audit')\n }\n },\n Stop: {\n key: AXPSystemActionType.Stop,\n title: i18n('stop.title'),\n icon: 'fa-light fa-stop',\n color: 'danger',\n critical: true,\n descriptions: {\n title: i18n('stop.title'),\n tooltip: i18n('stop.description'),\n permission: i18n('stop.permission'),\n audit: i18n('stop.audit')\n }\n },\n Pause: {\n key: AXPSystemActionType.Pause,\n title: i18n('pause.title'),\n icon: 'fa-light fa-pause',\n color: 'warning',\n descriptions: {\n title: i18n('pause.title'),\n tooltip: i18n('pause.description'),\n permission: i18n('pause.permission'),\n audit: i18n('pause.audit')\n }\n },\n Cancel: {\n key: AXPSystemActionType.Cancel,\n title: i18n('cancel.title'),\n icon: 'fa-light fa-xmark',\n critical: true,\n descriptions: {\n title: i18n('cancel.title'),\n tooltip: i18n('cancel.description'),\n permission: i18n('cancel.permission'),\n audit: i18n('cancel.audit')\n }\n },\n Close: {\n key: AXPSystemActionType.Close,\n title: i18n('close.title'),\n icon: 'fa-light fa-xmark',\n color: 'default',\n descriptions: {\n title: i18n('close.title'),\n tooltip: i18n('close.description'),\n permission: i18n('close.permission'),\n audit: i18n('close.audit')\n }\n },\n Complete: {\n key: AXPSystemActionType.Complete,\n title: i18n('complete.title'),\n icon: 'fa-light fa-check',\n color: 'success',\n descriptions: {\n title: i18n('complete.title'),\n tooltip: i18n('complete.description'),\n permission: i18n('complete.permission'),\n audit: i18n('complete.audit')\n }\n },\n Save: {\n key: AXPSystemActionType.Save,\n title: i18n('save.title'),\n icon: 'fa-light fa-floppy-disk',\n color: 'primary',\n descriptions: {\n title: i18n('save.title'),\n tooltip: i18n('save.description'),\n permission: i18n('save.permission'),\n audit: i18n('save.audit')\n }\n },\n SaveAs: {\n key: AXPSystemActionType.SaveAs,\n title: i18n('save-as.title'),\n icon: 'fa-light fa-floppy-disk',\n color: 'default',\n descriptions: {\n title: i18n('save-as.title'),\n tooltip: i18n('save-as.description'),\n permission: i18n('save-as.permission'),\n audit: i18n('save-as.audit')\n }\n },\n Sync: {\n key: AXPSystemActionType.Sync,\n title: i18n('sync.title'),\n icon: 'fa-light fa-arrows-rotate',\n color: 'default',\n descriptions: {\n title: i18n('sync.title'),\n tooltip: i18n('sync.description'),\n permission: i18n('sync.permission'),\n audit: i18n('sync.audit')\n }\n },\n Reset: {\n key: AXPSystemActionType.Reset,\n title: i18n('reset.title'),\n icon: 'fa-light fa-arrow-rotate-left',\n color: 'warning',\n critical: true,\n descriptions: {\n title: i18n('reset.title'),\n tooltip: i18n('reset.description'),\n permission: i18n('reset.permission'),\n audit: i18n('reset.audit')\n }\n },\n Clear: {\n key: AXPSystemActionType.Clear,\n title: i18n('clear.title'),\n icon: 'fa-light fa-eraser',\n color: 'default',\n descriptions: {\n title: i18n('clear.title'),\n tooltip: i18n('clear.description'),\n permission: i18n('clear.permission'),\n audit: i18n('clear.audit')\n }\n },\n Distribution: {\n key: AXPSystemActionType.Distribution,\n title: i18n('distribution.title'),\n icon: 'fa-light fa-share-nodes',\n color: 'default',\n descriptions: {\n title: i18n('distribution.title'),\n tooltip: i18n('distribution.description'),\n permission: i18n('distribution.permission'),\n audit: i18n('distribution.audit')\n }\n },\n});\nexport function getSystemActions(type) {\n return Object.values(AXPSystemActions).find(action => action.key === type);\n}\n/**\n * Resolves the visual appearance (color and icon) for entity actions\n * using the system actions from the core module.\n */\nexport function resolveActionLook(actionType) {\n // Try to get system action first\n const systemActionType = actionType;\n if (systemActionType) {\n const systemAction = getSystemActions(systemActionType);\n if (systemAction) {\n return {\n color: (systemAction.color || 'default'),\n icon: systemAction.icon || ''\n };\n }\n }\n // Fallback for unknown actions\n return {\n color: 'default',\n icon: ''\n };\n}\n/**\n * Resolves the title, description, icon and color for button actions\n * using the system actions from the core module.\n * @param actionType\n * @returns\n */\nexport function getActionButton(actionType) {\n const systemActionType = actionType;\n if (systemActionType) {\n const systemAction = getSystemActions(systemActionType);\n if (systemAction) {\n return {\n name: actionType,\n icon: systemAction.icon || '',\n color: systemAction.color || 'default',\n title: systemAction.title,\n description: systemAction.descriptions.title\n };\n }\n }\n // Fallback for unknown actions\n return {\n name: actionType,\n title: actionType,\n description: `Perform ${actionType} action`,\n icon: '',\n color: 'default'\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL3R5cGVzL2FjdGlvbnMudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyRkc7QUFFSCxNQUFNLENBQU4sSUFBWSxtQkEyRFg7QUEzREQsV0FBWSxtQkFBbUI7SUFDM0Isb0NBQWEsQ0FBQTtJQUNiLHdDQUFpQixDQUFBO0lBQ2pCLHdDQUFpQixDQUFBO0lBQ2pCLHdDQUFpQixDQUFBO0lBQ2pCLDBDQUFtQixDQUFBO0lBQ25CLHdDQUFpQixDQUFBO0lBQ2pCLHdDQUFpQixDQUFBO0lBQ2pCLHdDQUFpQixDQUFBO0lBQ2pCLHdDQUFpQixDQUFBO0lBQ2pCLHNDQUFlLENBQUE7SUFDZix3Q0FBaUIsQ0FBQTtJQUNqQixvQ0FBYSxDQUFBO0lBQ2Isd0NBQWlCLENBQUE7SUFDakIsc0NBQWUsQ0FBQTtJQUNmLDhDQUF1QixDQUFBO0lBQ3ZCLDBDQUFtQixDQUFBO0lBQ25CLDBDQUFtQixDQUFBO0lBQ25CLDhDQUF1QixDQUFBO0lBQ3ZCLDBDQUFtQixDQUFBO0lBQ25CLDBDQUFtQixDQUFBO0lBQ25CLDhDQUF1QixDQUFBO0lBQ3ZCLHdDQUFpQixDQUFBO0lBQ2pCLDRDQUFxQixDQUFBO0lBQ3JCLG9DQUFhLENBQUE7SUFDYixvQ0FBYSxDQUFBO0lBQ2Isd0NBQWlCLENBQUE7SUFDakIsMENBQW1CLENBQUE7SUFDbkIsd0NBQWlCLENBQUE7SUFDakIsb0NBQWEsQ0FBQTtJQUNiLDBDQUFtQixDQUFBO0lBQ25CLHdDQUFpQixDQUFBO0lBQ2pCLHlEQUFrQyxDQUFBO0lBQ2xDLDBDQUFtQixDQUFBO0lBQ25CLDRDQUFxQixDQUFBO0lBQ3JCLG9DQUFhLENBQUE7SUFDYixzQ0FBZSxDQUFBO0lBQ2Ysb0NBQWEsQ0FBQTtJQUNiLHdDQUFpQixDQUFBO0lBQ2pCLG9DQUFhLENBQUE7SUFDYix3Q0FBaUIsQ0FBQTtJQUNqQiw0Q0FBcUIsQ0FBQTtJQUNyQiwwQ0FBbUIsQ0FBQTtJQUNuQix3Q0FBaUIsQ0FBQTtJQUNqQix3Q0FBaUIsQ0FBQTtJQUNqQix3Q0FBaUIsQ0FBQTtJQUNqQixvQ0FBYSxDQUFBO0lBQ2Isc0NBQWUsQ0FBQTtJQUNmLG9DQUFhLENBQUE7SUFDYixzQ0FBZSxDQUFBO0lBQ2Ysd0NBQWlCLENBQUE7SUFDakIsc0NBQWUsQ0FBQTtJQUNmLDRDQUFxQixDQUFBO0lBQ3JCLG9DQUFhLENBQUE7SUFDYix5Q0FBa0IsQ0FBQTtJQUNsQixvQ0FBYSxDQUFBO0lBQ2Isc0NBQWUsQ0FBQTtJQUNmLHNDQUFlLENBQUE7SUFDZixvREFBNkIsQ0FBQTtBQUNqQyxDQUFDLEVBM0RXLG1CQUFtQixLQUFuQixtQkFBbUIsUUEyRDlCO0FBZUQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztBQUV4RCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQzFDLElBQUksRUFBRTtRQUNGLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQyxJQUFJO1FBQzdCLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3pCLElBQUksRUFBRSxpQkFBaUI7UUFDdkIsS0FBSyxFQUFFLFNBQVM7UUFDaEIsWUFBWSxFQUFFO1lBQ1YsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDekIsT0FBTyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztZQUNqQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQ25DLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDO1NBQzVCO0tBQ0o7SUFDRCxNQUFNLEVBQUU7UUFDSixHQUFHLEVBQUUsbUJBQW1CLENBQUMsTUFBTTtRQUMvQixLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUMzQixJQUFJLEVBQUUsa0JBQWtCO1FBQ3hCLEtBQUssRUFBRSxTQUFTO1FBQ2hCLFlBQVksRUFBRTtZQUNWLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQzNCLE9BQU8sRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUM7WUFDbkMsVUFBVSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUNyQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUM5QjtLQUNKO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsR0FBRyxFQUFFLG1CQUFtQixDQUFDLE1BQU07UUFDL0IsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDekIsSUFBSSxFQUFFLGlCQUFpQjtRQUN2QixLQUFLLEVBQUUsU0FBUztRQUNoQixZQUFZLEVBQUU7WUFDVixLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUN6QixPQUFPLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1lBQ2pDLFVBQVUsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUM7WUFDbkMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7U0FDNUI7S0FDSjtJQUNELE1BQU0sRUFBRTtRQUNKLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQyxNQUFNO1FBQy9CLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzNCLElBQUksRUFBRSxtQkFBbUI7UUFDekIsS0FBSyxFQUFFLFFBQVE7UUFDZixRQUFRLEVBQUUsSUFBSTtRQUNkLFlBQVksRUFBRTtZQUNWLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQzNCLE9BQU8sRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUM7WUFDbkMsVUFBVSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUNyQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUM5QjtLQUNKO0lBQ0QsT0FBTyxFQUFFO1FBQ0wsR0FBRyxFQUFFLG1CQUFtQixDQUFDLE9BQU87UUFDaEMsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDNUIsSUFBSSxFQUFFLDBCQUEwQjtRQUNoQyxLQUFLLEVBQUUsU0FBUztRQUNoQixRQUFRLEVBQUUsSUFBSTtRQUNkLFlBQVksRUFBRTtZQUNWLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQzVCLE9BQU8sRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUM7WUFDcEMsVUFBVSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztZQUN0QyxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQztTQUMvQjtLQUNKO0lBQ0QsTUFBTSxFQUFFO1FBQ0osR0FBRyxFQUFFLG1CQUFtQixDQUFDLE1BQU07UUFDL0IsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDM0IsSUFBSSxFQUFFLHlCQUF5QjtRQUMvQixLQUFLLEVBQUUsU0FBUztRQUNoQixZQUFZLEVBQUU7WUFDVixLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUMzQixPQUFPLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1lBQ25DLFVBQVUsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUM7WUFDckMsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUM7U0FDOUI7S0FDSjtJQUNELE1BQU0sRUFBRTtRQUNKLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQyxNQUFNO1FBQy9CLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzNCLElBQUksRUFBRSxpQkFBaUI7UUFDdkIsS0FBSyxFQUFFLFFBQVE7UUFDZixRQUFRLEVBQUUsSUFBSTtRQUNkLFlBQVksRUFBRTtZQUNWLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQzNCLE9BQU8sRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUM7WUFDbkMsVUFBVSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUNyQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUM5QjtLQUNKO0lBQ0QsTUFBTSxFQUFFO1FBQ0osR0FBRyxFQUFFLG1CQUFtQixDQUFDLE1BQU07UUFDL0IsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDM0IsSUFBSSxFQUFFLHNCQUFzQjtRQUM1QixLQUFLLEVBQUUsU0FBUztRQUNoQixZQUFZLEVBQUU7WUFDVixLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUMzQixPQUFPLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1lBQ25DLFVBQVUsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUM7WUFDckMsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUM7U0FDOUI7S0FDSjtJQUNELE1BQU0sRUFBRTtRQUNKLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQyxNQUFNO1FBQy9CLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzNCLElBQUksRUFBRSxvQkFBb0I7UUFDMUIsS0FBSyxFQUFFLFNBQVM7UUFDaEIsWUFBWSxFQUFFO1lBQ1YsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUM7WUFDM0IsT0FBTyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztZQUNuQyxVQUFVLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1lBQ3JDLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDO1NBQzlCO0tBQ0o7SUFDRCxLQUFLLEVBQUU7UUFDSCxHQUFHLEVBQUUsbUJBQW1CLENBQUMsS0FBSztRQUM5QixLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUMxQixJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLEtBQUssRUFBRSxTQUFTO1FBQ2hCLFlBQVksRUFBRTtZQUNWLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQzFCLE9BQU8sRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUM7WUFDbEMsVUFBVSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztZQUNwQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQztTQUM3QjtLQUNKO0lBQ0QsU0FBUyxFQUFFO1FBQ1AsR0FBRyxFQUFFLG1CQUFtQixDQUFDLFNBQVM7UUFDbEMsS0FBSyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUM5QixJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLEtBQUssRUFBRSxTQUFTO1FBQ2hCLFlBQVksRUFBRTtZQUNWLEtBQUssRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUM7WUFDOUIsT0FBTyxFQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztZQUN0QyxVQUFVLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDO1lBQ3hDLEtBQUssRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUM7U0FDakM7S0FDSjtJQUNELE9BQU8sRUFBRTtRQUNMLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQyxPQUFPO1FBQ2hDLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQzVCLElBQUksRUFBRSx5QkFBeUI7UUFDL0IsS0FBSyxFQUFFLFNBQVM7UUFDaEIsWUFBWSxFQUFFO1lBQ1YsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDNUIsT0FBTyxFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztZQUNwQyxVQUFVLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1lBQ3RDLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDO1NBQy9CO0tBQ0o7SUFDRCxPQUFPLEVBQUU7UUFDTCxHQUFHLEVBQUUsbUJBQW1CLENBQUMsT0FBTztRQUNoQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUM1QixJQUFJLEVBQUUsK0JBQStCO1FBQ3JDLEtBQUssRUFBRSxTQUFTO1FBQ2hCLFlBQVksRUFBRTtZQUNWLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQzVCLE9BQU8sRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUM7WUFDcEMsVUFBVSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztZQUN0QyxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQztTQUMvQjtLQUNKO0lBQ0QsTUFBTSxFQUFFO1FBQ0osR0FBRyxFQUFFLG1CQUFtQixDQUFDLE1BQU07UUFDL0IsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDM0IsSUFBSSxFQUFFLHVCQUF1QjtRQUM3QixLQUFLLEVBQUUsU0FBUztRQUNoQixZQUFZLEVBQUU7WUFDVixLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUMzQixPQUFPLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1lBQ25DLFVBQVUsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUM7WUFDckMsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUM7U0FDOUI7S0FDSjtJQUNELElBQUksRUFBRTtRQUNGLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQyxJQUFJO1FBQzdCLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3pCLElBQUksRUFBRSxrQkFBa0I7UUFDeEIsS0FBSyxFQUFFLFNBQVM7UUFDaEIsWUFBWSxFQUFFO1lBQ1YsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDekIsT0FBTyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztZQUNqQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQ25DLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDO1NBQzVCO0tBQ0o7SUFDRCxNQUFNLEVBQUU7UUFDSixHQUFHLEVBQUUsbUJBQW1CLENBQUMsTUFBTTtRQUMvQixLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUMzQixJQUFJLEVBQUUsb0JBQW9CO1FBQzFCLEtBQUssRUFBRSxTQUFTO1FBQ2hCLFlBQVksRUFBRTtZQUNWLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQzNCLE9BQU8sRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUM7WUFDbkMsVUFBVSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUNyQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUM5QjtLQUNKO0lBQ0QsS0FBSyxFQUFFO1FBQ0gsR0FBRyxFQUFFLG1CQUFtQixDQUFDLEtBQUs7UUFDOUIsS0FBSyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDMUIsSUFBSSxFQUFFLHlCQUF5QjtRQUMvQixLQUFLLEVBQUUsTUFBTTtRQUNiLFlBQVksRUFBRTtZQUNWLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQzFCLE9BQU8sRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUM7WUFDbEMsVUFBVSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztZQUNwQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQztTQUM3QjtLQUNKO0lBQ0QsU0FBUyxFQUFFO1FBQ1AsR0FBRyxFQUFFLG1CQUFtQixDQUFDLFNBQVM7UUFDbEMsS0FBSyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUM5QixJQUFJLEVBQUUscUJBQXFCO1FBQzNCLEtBQUssRUFBRSxTQUFTO1FBQ2hCLFlBQVksRUFBRTtZQUNWLEtBQUssRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUM7WUFDOUIsT0FBTyxFQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztZQUN0QyxVQUFVLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDO1lBQ3hDLEtBQUssRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUM7U0FDakM7S0FDSjtJQUNELE9BQU8sRUFBRTtRQUNMLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQyxPQUFPO1FBQ2hDLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQzVCLElBQUksRUFBRSx1Q0FBdUM7UUFDN0MsS0FBSyxFQUFFLFNBQVM7UUFDaEIsWUFBWSxFQUFFO1lBQ1YsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDNUIsT0FBTyxFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztZQUNwQyxVQUFVLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1lBQ3RDLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDO1NBQy9CO0tBQ0o7SUFDRCxPQUFPLEVBQUU7UUFDTCxHQUFHLEVBQUUsbUJBQW1CLENBQUMsT0FBTztRQUNoQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUM1QixJQUFJLEVBQUUsOEJBQThCO1FBQ3BDLEtBQUssRUFBRSxTQUFTO1FBQ2hCLFlBQVksRUFBRTtZQUNWLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQzVCLE9BQU8sRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUM7WUFDcEMsVUFBVSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztZQUN0QyxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQztTQUMvQjtLQUNKO0lBQ0QsT0FBTyxFQUFFO1FBQ0wsR0FBRyxFQUFFLG1CQUFtQixDQUFDLE9BQU87UUFDaEMsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDNUIsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixLQUFLLEVBQUUsU0FBUztRQUNoQixZQUFZLEVBQUU7WUFDVixLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUM1QixPQUFPLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1lBQ3BDLFVBQVUsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUM7WUFDdEMsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUM7U0FDL0I7S0FDSjtJQUNELFNBQVMsRUFBRTtRQUNQLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQyxTQUFTO1FBQ2xDLEtBQUssRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDOUIsSUFBSSxFQUFFLHlCQUF5QjtRQUMvQixLQUFLLEVBQUUsUUFBUTtRQUNmLFlBQVksRUFBRTtZQUNWLEtBQUssRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUM7WUFDOUIsT0FBTyxFQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztZQUN0QyxVQUFVLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDO1lBQ3hDLEtBQUssRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUM7U0FDakM7S0FDSjtJQUNELE1BQU0sRUFBRTtRQUNKLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQyxNQUFNO1FBQy9CLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzNCLElBQUksRUFBRSxvQkFBb0I7UUFDMUIsS0FBSyxFQUFFLFNBQVM7UUFDaEIsWUFBWSxFQUFFO1lBQ1YsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUM7WUFDM0IsT0FBTyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztZQUNuQyxVQUFVLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1lBQ3JDLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDO1NBQzlCO0tBQ0o7SUFDRCxRQUFRLEVBQUU7UUFDTixHQUFHLEVBQUUsbUJBQW1CLENBQUMsUUFBUTtRQUNqQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQzdCLElBQUksRUFBRSxzQkFBc0I7UUFDNUIsS0FBSyxFQUFFLFNBQVM7UUFDaEIsWUFBWSxFQUFFO1lBQ1YsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUM3QixPQUFPLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDO1lBQ3JDLFVBQVUsRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUM7WUFDdkMsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztTQUNoQztLQUNKO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsR0FBRyxFQUFFLG1CQUFtQixDQUFDLElBQUk7UUFDN0IsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDekIsSUFBSSxFQUFFLGtCQUFrQjtRQUN4QixLQUFLLEVBQUUsU0FBUztRQUNoQixZQUFZLEVBQUU7WUFDVixLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUN6QixPQUFPLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1lBQ2pDLFVBQVUsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUM7WUFDbkMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7U0FDNUI7S0FDSjtJQUNELElBQUksRUFBRTtRQUNGLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQyxJQUFJO1FBQzdCLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3pCLElBQUksRUFBRSxvQ0FBb0M7UUFDMUMsS0FBSyxFQUFFLFNBQVM7UUFDaEIsWUFBWSxFQUFFO1lBQ1YsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDekIsT0FBTyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztZQUNqQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQ25DLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDO1NBQzVCO0tBQ0o7SUFDRCxNQUFNLEVBQUU7UUFDSixHQUFHLEVBQUUsbUJBQW1CLENBQUMsTUFBTTtRQUMvQixLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUMzQixJQUFJLEVBQUUsaUJBQWlCO1FBQ3ZCLEtBQUssRUFBRSxTQUFTO1FBQ2hCLFlBQVksRUFBRTtZQUNWLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQzNCLE9BQU8sRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUM7WUFDbkMsVUFBVSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUNyQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUM5QjtLQUNKO0lBQ0QsTUFBTSxFQUFFO1FBQ0osR0FBRyxFQUFFLG1CQUFtQixDQUFDLE1BQU07UUFDL0IsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDM0IsSUFBSSxFQUFFLGtCQUFrQjtRQUN4QixLQUFLLEVBQUUsU0FBUztRQUNoQixZQUFZLEVBQUU7WUFDVixLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUMzQixPQUFPLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1lBQ25DLFVBQVUsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUM7WUFDckMsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUM7U0FDOUI7S0FDSjtJQUNELElBQUksRUFBRTtRQUNGLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQyxJQUFJO1FBQzdCLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3pCLElBQUksRUFBRSxrQkFBa0I7UUFDeEIsS0FBSyxFQUFFLFNBQVM7UUFDaEIsWUFBWSxFQUFFO1lBQ1YsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDekIsT0FBTyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztZQUNqQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQ25DLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDO1NBQzVCO0tBQ0o7SUFDRCxPQUFPLEVBQUU7UUFDTCxHQUFHLEVBQUUsbUJBQW1CLENBQUMsT0FBTztRQUNoQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUM1QixJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLEtBQUssRUFBRSxTQUFTO1FBQ2hCLFlBQVksRUFBRTtZQUNWLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQzVCLE9BQU8sRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUM7WUFDcEMsVUFBVSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztZQUN0QyxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQztTQUMvQjtLQUNKO0lBQ0QsTUFBTSxFQUFFO1FBQ0osR0FBRyxFQUFFLG1CQUFtQixDQUFDLE1BQU07UUFDL0IsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDM0IsSUFBSSxFQUFFLHdCQUF3QjtRQUM5QixLQUFLLEVBQUUsU0FBUztRQUNoQixZQUFZLEVBQUU7WUFDVixLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUMzQixPQUFPLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1lBQ25DLFVBQVUsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUM7WUFDckMsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUM7U0FDOUI7S0FDSjtJQUNELGNBQWMsRUFBRTtRQUNaLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQyxjQUFjO1FBQ3ZDLEtBQUssRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQUM7UUFDcEMsSUFBSSxFQUFFLHFCQUFxQjtRQUMzQixLQUFLLEVBQUUsU0FBUztRQUNoQixZQUFZLEVBQUU7WUFDVixLQUFLLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixDQUFDO1lBQ3BDLE9BQU8sRUFBRSxJQUFJLENBQUMsNkJBQTZCLENBQUM7WUFDNUMsVUFBVSxFQUFFLElBQUksQ0FBQyw0QkFBNEIsQ0FBQztZQUM5QyxLQUFLLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixDQUFDO1NBQ3ZDO0tBQ0o7SUFDRCxPQUFPLEVBQUU7UUFDTCxHQUFHLEVBQUUsbUJBQW1CLENBQUMsT0FBTztRQUNoQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUM1QixJQUFJLEVBQUUsMEJBQTBCO1FBQ2hDLEtBQUssRUFBRSxTQUFTO1FBQ2hCLFlBQVksRUFBRTtZQUNWLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQzVCLE9BQU8sRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUM7WUFDcEMsVUFBVSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztZQUN0QyxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQztTQUMvQjtLQUNKO0lBQ0QsUUFBUSxFQUFFO1FBQ04sR0FBRyxFQUFFLG1CQUFtQixDQUFDLFFBQVE7UUFDakMsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUM3QixJQUFJLEVBQUUsc0JBQXNCO1FBQzVCLEtBQUssRUFBRSxTQUFTO1FBQ2hCLFlBQVksRUFBRTtZQUNWLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUM7WUFDN0IsT0FBTyxFQUFFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztZQUNyQyxVQUFVLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1lBQ3ZDLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUM7U0FDaEM7S0FDSjtJQUNELElBQUksRUFBRTtRQUNGLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQyxJQUFJO1FBQzdCLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3pCLElBQUksRUFBRSx1QkFBdUI7UUFDN0IsS0FBSyxFQUFFLFNBQVM7UUFDaEIsWUFBWSxFQUFFO1lBQ1YsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDekIsT0FBTyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztZQUNqQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQ25DLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDO1NBQzVCO0tBQ0o7SUFDRCxLQUFLLEVBQUU7UUFDSCxHQUFHLEVBQUUsbUJBQW1CLENBQUMsS0FBSztRQUM5QixLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUMxQixJQUFJLEVBQUUsaUJBQWlCO1FBQ3ZCLEtBQUssRUFBRSxTQUFTO1FBQ2hCLFlBQVksRUFBRTtZQUNWLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQzFCLE9BQU8sRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUM7WUFDbEMsVUFBVSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztZQUNwQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQztTQUM3QjtLQUNKO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsR0FBRyxFQUFFLG1CQUFtQixDQUFDLElBQUk7UUFDN0IsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDekIsSUFBSSxFQUFFLHNCQUFzQjtRQUM1QixLQUFLLEVBQUUsU0FBUztRQUNoQixZQUFZLEVBQUU7WUFDVixLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUN6QixPQUFPLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1lBQ2pDLFVBQVUsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUM7WUFDbkMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7U0FDNUI7S0FDSjtJQUNELE1BQU0sRUFBRTtRQUNKLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQyxNQUFNO1FBQy9CLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzNCLElBQUksRUFBRSx3QkFBd0I7UUFDOUIsS0FBSyxFQUFFLFNBQVM7UUFDaEIsWUFBWSxFQUFFO1lBQ1YsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUM7WUFDM0IsT0FBTyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztZQUNuQyxVQUFVLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1lBQ3JDLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDO1NBQzlCO0tBQ0o7SUFDRCxJQUFJLEVBQUU7UUFDRixHQUFHLEVBQUUsbUJBQW1CLENBQUMsSUFBSTtRQUM3QixLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN6QixJQUFJLEVBQUUseUJBQXlCO1FBQy9CLEtBQUssRUFBRSxTQUFTO1FBQ2hCLFlBQVksRUFBRTtZQUNWLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDO1lBQ3pCLE9BQU8sRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUM7WUFDakMsVUFBVSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztZQUNuQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQztTQUM1QjtLQUNKO0lBQ0QsTUFBTSxFQUFFO1FBQ0osR0FBRyxFQUFFLG1CQUFtQixDQUFDLE1BQU07UUFDL0IsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDM0IsSUFBSSxFQUFFLGlCQUFpQjtRQUN2QixLQUFLLEVBQUUsU0FBUztRQUNoQixZQUFZLEVBQUU7WUFDVixLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUMzQixPQUFPLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1lBQ25DLFVBQVUsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUM7WUFDckMsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUM7U0FDOUI7S0FDSjtJQUNELFFBQVEsRUFBRTtRQUNOLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQyxRQUFRO1FBQ2pDLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDN0IsSUFBSSxFQUFFLGlDQUFpQztRQUN2QyxLQUFLLEVBQUUsU0FBUztRQUNoQixZQUFZLEVBQUU7WUFDVixLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1lBQzdCLE9BQU8sRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUM7WUFDckMsVUFBVSxFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztZQUN2QyxLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1NBQ2hDO0tBQ0o7SUFDRCxPQUFPLEVBQUU7UUFDTCxHQUFHLEVBQUUsbUJBQW1CLENBQUMsT0FBTztRQUNoQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUM1QixJQUFJLEVBQUUsMkJBQTJCO1FBQ2pDLEtBQUssRUFBRSxTQUFTO1FBQ2hCLFlBQVksRUFBRTtZQUNWLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQzVCLE9BQU8sRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUM7WUFDcEMsVUFBVSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztZQUN0QyxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQztTQUMvQjtLQUNKO0lBQ0QsTUFBTSxFQUFFO1FBQ0osR0FBRyxFQUFFLG1CQUFtQixDQUFDLE1BQU07UUFDL0IsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDM0IsSUFBSSxFQUFFLDJCQUEyQjtRQUNqQyxLQUFLLEVBQUUsU0FBUztRQUNoQixZQUFZLEVBQUU7WUFDVixLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUMzQixPQUFPLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1lBQ25DLFVBQVUsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUM7WUFDckMsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUM7U0FDOUI7S0FDSjtJQUNELE1BQU0sRUFBRTtRQUNKLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQyxNQUFNO1FBQy9CLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzNCLElBQUksRUFBRSw4QkFBOEI7UUFDcEMsS0FBSyxFQUFFLFNBQVM7UUFDaEIsWUFBWSxFQUFFO1lBQ1YsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUM7WUFDM0IsT0FBTyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztZQUNuQyxVQUFVLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1lBQ3JDLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDO1NBQzlCO0tBQ0o7SUFDRCxNQUFNLEVBQUU7UUFDSixHQUFHLEVBQUUsbUJBQW1CLENBQUMsTUFBTTtRQUMvQixLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUMzQixJQUFJLEVBQUUsb0JBQW9CO1FBQzFCLEtBQUssRUFBRSxTQUFTO1FBQ2hCLFlBQVksRUFBRTtZQUNWLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQzNCLE9BQU8sRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUM7WUFDbkMsVUFBVSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUNyQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUM5QjtLQUNKO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsR0FBRyxFQUFFLG1CQUFtQixDQUFDLElBQUk7UUFDN0IsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDekIsSUFBSSxFQUFFLHVDQUF1QztRQUM3QyxLQUFLLEVBQUUsU0FBUztRQUNoQixZQUFZLEVBQUU7WUFDVixLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUN6QixPQUFPLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1lBQ2pDLFVBQVUsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUM7WUFDbkMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7U0FDNUI7S0FDSjtJQUNELEtBQUssRUFBRTtRQUNILEdBQUcsRUFBRSxtQkFBbUIsQ0FBQyxLQUFLO1FBQzlCLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQzFCLElBQUksRUFBRSxrQkFBa0I7UUFDeEIsS0FBSyxFQUFFLFNBQVM7UUFDaEIsWUFBWSxFQUFFO1lBQ1YsS0FBSyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDMUIsT0FBTyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUNsQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1lBQ3BDLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDO1NBQzdCO0tBQ0o7SUFDRCxJQUFJLEVBQUU7UUFDRixHQUFHLEVBQUUsbUJBQW1CLENBQUMsSUFBSTtRQUM3QixLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN6QixJQUFJLEVBQUUsa0JBQWtCO1FBQ3hCLEtBQUssRUFBRSxRQUFRO1FBQ2YsUUFBUSxFQUFFLElBQUk7UUFDZCxZQUFZLEVBQUU7WUFDVixLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUN6QixPQUFPLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1lBQ2pDLFVBQVUsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUM7WUFDbkMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7U0FDNUI7S0FDSjtJQUNELEtBQUssRUFBRTtRQUNILEdBQUcsRUFBRSxtQkFBbUIsQ0FBQyxLQUFLO1FBQzlCLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQzFCLElBQUksRUFBRSxtQkFBbUI7UUFDekIsS0FBSyxFQUFFLFNBQVM7UUFDaEIsWUFBWSxFQUFFO1lBQ1YsS0FBSyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDMUIsT0FBTyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUNsQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1lBQ3BDLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDO1NBQzdCO0tBQ0o7SUFDRCxNQUFNLEVBQUU7UUFDSixHQUFHLEVBQUUsbUJBQW1CLENBQUMsTUFBTTtRQUMvQixLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUMzQixJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFFBQVEsRUFBRSxJQUFJO1FBQ2QsWUFBWSxFQUFFO1lBQ1YsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUM7WUFDM0IsT0FBTyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztZQUNuQyxVQUFVLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1lBQ3JDLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDO1NBQzlCO0tBQ0o7SUFDRCxLQUFLLEVBQUU7UUFDSCxHQUFHLEVBQUUsbUJBQW1CLENBQUMsS0FBSztRQUM5QixLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUMxQixJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLEtBQUssRUFBRSxTQUFTO1FBQ2hCLFlBQVksRUFBRTtZQUNWLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQzFCLE9BQU8sRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUM7WUFDbEMsVUFBVSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztZQUNwQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQztTQUM3QjtLQUNKO0lBQ0QsUUFBUSxFQUFFO1FBQ04sR0FBRyxFQUFFLG1CQUFtQixDQUFDLFFBQVE7UUFDakMsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUM3QixJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLEtBQUssRUFBRSxTQUFTO1FBQ2hCLFlBQVksRUFBRTtZQUNWLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUM7WUFDN0IsT0FBTyxFQUFFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztZQUNyQyxVQUFVLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1lBQ3ZDLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUM7U0FDaEM7S0FDSjtJQUNELElBQUksRUFBRTtRQUNGLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQyxJQUFJO1FBQzdCLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3pCLElBQUksRUFBRSx5QkFBeUI7UUFDL0IsS0FBSyxFQUFFLFNBQVM7UUFDaEIsWUFBWSxFQUFFO1lBQ1YsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDekIsT0FBTyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztZQUNqQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQ25DLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDO1NBQzVCO0tBQ0o7SUFDRCxNQUFNLEVBQUU7UUFDSixHQUFHLEVBQUUsbUJBQW1CLENBQUMsTUFBTTtRQUMvQixLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUM1QixJQUFJLEVBQUUseUJBQXlCO1FBQy9CLEtBQUssRUFBRSxTQUFTO1FBQ2hCLFlBQVksRUFBRTtZQUNWLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQzVCLE9BQU8sRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUM7WUFDcEMsVUFBVSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztZQUN0QyxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQztTQUMvQjtLQUNKO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsR0FBRyxFQUFFLG1CQUFtQixDQUFDLElBQUk7UUFDN0IsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDekIsSUFBSSxFQUFFLDJCQUEyQjtRQUNqQyxLQUFLLEVBQUUsU0FBUztRQUNoQixZQUFZLEVBQUU7WUFDVixLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUN6QixPQUFPLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1lBQ2pDLFVBQVUsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUM7WUFDbkMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7U0FDNUI7S0FDSjtJQUNELEtBQUssRUFBRTtRQUNILEdBQUcsRUFBRSxtQkFBbUIsQ0FBQyxLQUFLO1FBQzlCLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQzFCLElBQUksRUFBRSwrQkFBK0I7UUFDckMsS0FBSyxFQUFFLFNBQVM7UUFDaEIsUUFBUSxFQUFFLElBQUk7UUFDZCxZQUFZLEVBQUU7WUFDVixLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUMxQixPQUFPLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1lBQ2xDLFVBQVUsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUM7WUFDcEMsS0FBSyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUM7U0FDN0I7S0FDSjtJQUNELEtBQUssRUFBRTtRQUNILEdBQUcsRUFBRSxtQkFBbUIsQ0FBQyxLQUFLO1FBQzlCLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQzFCLElBQUksRUFBRSxvQkFBb0I7UUFDMUIsS0FBSyxFQUFFLFNBQVM7UUFDaEIsWUFBWSxFQUFFO1lBQ1YsS0FBSyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDMUIsT0FBTyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUNsQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1lBQ3BDLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDO1NBQzdCO0tBQ0o7SUFDRCxZQUFZLEVBQUU7UUFDVixHQUFHLEVBQUUsbUJBQW1CLENBQUMsWUFBWTtRQUNyQyxLQUFLLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1FBQ2pDLElBQUksRUFBRSx5QkFBeUI7UUFDL0IsS0FBSyxFQUFFLFNBQVM7UUFDaEIsWUFBWSxFQUFFO1lBQ1YsS0FBSyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztZQUNqQyxPQUFPLEVBQUUsSUFBSSxDQUFDLDBCQUEwQixDQUFDO1lBQ3pDLFVBQVUsRUFBRSxJQUFJLENBQUMseUJBQXlCLENBQUM7WUFDM0MsS0FBSyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztTQUNwQztLQUNKO0NBRStDLENBQUMsQ0FBQztBQUl0RCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsSUFBeUI7SUFDdEQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQW9CLENBQUM7QUFDbEcsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxVQUFrQjtJQUNoRCxpQ0FBaUM7SUFDakMsTUFBTSxnQkFBZ0IsR0FBRyxVQUFpQyxDQUFDO0lBQzNELElBQUksZ0JBQWdCLEVBQUUsQ0FBQztRQUNuQixNQUFNLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3hELElBQUksWUFBWSxFQUFFLENBQUM7WUFDZixPQUFPO2dCQUNILEtBQUssRUFBRSxDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksU0FBUyxDQUFxQjtnQkFDNUQsSUFBSSxFQUFFLFlBQVksQ0FBQyxJQUFJLElBQUksRUFBRTthQUNoQyxDQUFDO1FBQ04sQ0FBQztJQUNMLENBQUM7SUFFRCwrQkFBK0I7SUFDL0IsT0FBTztRQUNILEtBQUssRUFBRSxTQUE2QjtRQUNwQyxJQUFJLEVBQUUsRUFBRTtLQUNYLENBQUM7QUFDTixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLFVBQWtCO0lBQzlDLE1BQU0sZ0JBQWdCLEdBQUcsVUFBaUMsQ0FBQztJQUMzRCxJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFDbkIsTUFBTSxZQUFZLEdBQUcsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN4RCxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2YsT0FBTztnQkFDSCxJQUFJLEVBQUUsVUFBVTtnQkFDaEIsSUFBSSxFQUFFLFlBQVksQ0FBQyxJQUFJLElBQUksRUFBRTtnQkFDN0IsS0FBSyxFQUFFLFlBQVksQ0FBQyxLQUFLLElBQUksU0FBUztnQkFDdEMsS0FBSyxFQUFFLFlBQVksQ0FBQyxLQUFLO2dCQUN6QixXQUFXLEVBQUUsWUFBWSxDQUFDLFlBQVksQ0FBQyxLQUFLO2FBQy9DLENBQUM7UUFDTixDQUFDO0lBQ0wsQ0FBQztJQUVELCtCQUErQjtJQUMvQixPQUFPO1FBQ0gsSUFBSSxFQUFFLFVBQVU7UUFDaEIsS0FBSyxFQUFFLFVBQVU7UUFDakIsV0FBVyxFQUFFLFdBQVcsVUFBVSxTQUFTO1FBQzNDLElBQUksRUFBRSxFQUFFO1FBQ1IsS0FBSyxFQUFFLFNBQVM7S0FDbkIsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFN0eWxlQ29sb3JUeXBlIH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcblxuLyoqXG4gKiBBZGRpdGlvbmFsIHN1Z2dlc3RlZCBnZW5lcmljIGFjdGlvbnMgZm9yIGZ1dHVyZSBjb25zaWRlcmF0aW9uOlxuICogXG4gKiBEYXRhICYgQ29udGVudCBBY3Rpb25zOlxuICogLSBTZWFyY2ggPSAnc2VhcmNoJyAtIFNlYXJjaCBmdW5jdGlvbmFsaXR5XG4gKiAtIEZpbHRlciA9ICdmaWx0ZXInIC0gQXBwbHkgZmlsdGVyc1xuICogLSBTb3J0ID0gJ3NvcnQnIC0gU29ydCBkYXRhXG4gKiAtIEdyb3VwID0gJ2dyb3VwJyAtIEdyb3VwIGRhdGFcbiAqIC0gRXhwYW5kID0gJ2V4cGFuZCcgLSBFeHBhbmQgZGV0YWlsc1xuICogLSBDb2xsYXBzZSA9ICdjb2xsYXBzZScgLSBDb2xsYXBzZSBkZXRhaWxzXG4gKiAtIFBpbiA9ICdwaW4nIC0gUGluIHRvIGZhdm9yaXRlc1xuICogLSBCb29rbWFyayA9ICdib29rbWFyaycgLSBCb29rbWFyayBpdGVtXG4gKiAtIEZhdm9yaXRlID0gJ2Zhdm9yaXRlJyAtIE1hcmsgYXMgZmF2b3JpdGVcbiAqIC0gU3RhciA9ICdzdGFyJyAtIFN0YXIgcmF0aW5nXG4gKiBcbiAqIFdvcmtmbG93IEFjdGlvbnM6XG4gKiAtIFN0YXJ0ID0gJ3N0YXJ0JyAtIFN0YXJ0IHByb2Nlc3Mvd29ya2Zsb3dcbiAqIC0gU3RvcCA9ICdzdG9wJyAtIFN0b3AgcHJvY2Vzc1xuICogLSBQYXVzZSA9ICdwYXVzZScgLSBQYXVzZSBwcm9jZXNzXG4gKiAtIFJlc3VtZSA9ICdyZXN1bWUnIC0gUmVzdW1lIHByb2Nlc3NcbiAqIC0gQ2FuY2VsID0gJ2NhbmNlbCcgLSBDYW5jZWwgb3BlcmF0aW9uXG4gKiAtIENvbXBsZXRlID0gJ2NvbXBsZXRlJyAtIE1hcmsgYXMgY29tcGxldGVcbiAqIC0gQ2xvc2UgPSAnY2xvc2UnIC0gQ2xvc2UgaXRlbVxuICogLSBSZW9wZW4gPSAncmVvcGVuJyAtIFJlb3BlbiBjbG9zZWQgaXRlbVxuICogLSBGb3J3YXJkID0gJ2ZvcndhcmQnIC0gRm9yd2FyZCB0byBuZXh0IHN0ZXBcbiAqIC0gQmFjayA9ICdiYWNrJyAtIEdvIGJhY2tcbiAqIFxuICogQ29tbXVuaWNhdGlvbiBBY3Rpb25zOlxuICogLSBSZXBseSA9ICdyZXBseScgLSBSZXBseSB0byBtZXNzYWdlXG4gKiAtIEZvcndhcmQgPSAnZm9yd2FyZCcgLSBGb3J3YXJkIG1lc3NhZ2VcbiAqIC0gTm90aWZ5ID0gJ25vdGlmeScgLSBTZW5kIG5vdGlmaWNhdGlvblxuICogLSBJbnZpdGUgPSAnaW52aXRlJyAtIEludml0ZSB1c2VyXG4gKiAtIEpvaW4gPSAnam9pbicgLSBKb2luIGdyb3VwL21lZXRpbmdcbiAqIC0gTGVhdmUgPSAnbGVhdmUnIC0gTGVhdmUgZ3JvdXAvbWVldGluZ1xuICogXG4gKiBTZWN1cml0eSBBY3Rpb25zOlxuICogLSBMb2dpbiA9ICdsb2dpbicgLSBVc2VyIGxvZ2luXG4gKiAtIExvZ291dCA9ICdsb2dvdXQnIC0gVXNlciBsb2dvdXRcbiAqIC0gQmxvY2sgPSAnYmxvY2snIC0gQmxvY2sgdXNlci9jb250ZW50XG4gKiAtIFVuYmxvY2sgPSAndW5ibG9jaycgLSBVbmJsb2NrIHVzZXIvY29udGVudFxuICogLSBCYW4gPSAnYmFuJyAtIEJhbiB1c2VyXG4gKiAtIFVuYmFuID0gJ3VuYmFuJyAtIFVuYmFuIHVzZXJcbiAqIC0gVmVyaWZ5ID0gJ3ZlcmlmeScgLSBWZXJpZnkgaWRlbnRpdHlcbiAqIC0gQXV0aGVudGljYXRlID0gJ2F1dGhlbnRpY2F0ZScgLSBBdXRoZW50aWNhdGVcbiAqIFxuICogRmlsZSAmIE1lZGlhIEFjdGlvbnM6XG4gKiAtIE9wZW4gPSAnb3BlbicgLSBPcGVuIGZpbGVcbiAqIC0gU2F2ZSA9ICdzYXZlJyAtIFNhdmUgZmlsZVxuICogLSBTYXZlQXMgPSAnc2F2ZS1hcycgLSBTYXZlIGFzIG5ldyBmaWxlXG4gKiAtIEF0dGFjaCA9ICdhdHRhY2gnIC0gQXR0YWNoIGZpbGVcbiAqIC0gRGV0YWNoID0gJ2RldGFjaCcgLSBEZXRhY2ggZmlsZVxuICogLSBDb21wcmVzcyA9ICdjb21wcmVzcycgLSBDb21wcmVzcyBmaWxlc1xuICogLSBFeHRyYWN0ID0gJ2V4dHJhY3QnIC0gRXh0cmFjdCBhcmNoaXZlXG4gKiAtIENvbnZlcnQgPSAnY29udmVydCcgLSBDb252ZXJ0IGZvcm1hdFxuICogLSBDcm9wID0gJ2Nyb3AnIC0gQ3JvcCBpbWFnZVxuICogLSBSZXNpemUgPSAncmVzaXplJyAtIFJlc2l6ZSBpbWFnZVxuICogXG4gKiBTeXN0ZW0gQWN0aW9uczpcbiAqIC0gU3luYyA9ICdzeW5jJyAtIFN5bmNocm9uaXplIGRhdGFcbiAqIC0gQmFja3VwID0gJ2JhY2t1cCcgLSBDcmVhdGUgYmFja3VwXG4gKiAtIFJlc3RvcmUgPSAncmVzdG9yZScgLSBSZXN0b3JlIGZyb20gYmFja3VwXG4gKiAtIFJlc2V0ID0gJ3Jlc2V0JyAtIFJlc2V0IHRvIGRlZmF1bHRzXG4gKiAtIENsZWFyID0gJ2NsZWFyJyAtIENsZWFyIGRhdGFcbiAqIC0gT3B0aW1pemUgPSAnb3B0aW1pemUnIC0gT3B0aW1pemUgcGVyZm9ybWFuY2VcbiAqIC0gVXBkYXRlID0gJ3VwZGF0ZScgLSBVcGRhdGUgc3lzdGVtXG4gKiAtIEluc3RhbGwgPSAnaW5zdGFsbCcgLSBJbnN0YWxsIGNvbXBvbmVudFxuICogLSBVbmluc3RhbGwgPSAndW5pbnN0YWxsJyAtIFVuaW5zdGFsbCBjb21wb25lbnRcbiAqIC0gRW5hYmxlID0gJ2VuYWJsZScgLSBFbmFibGUgZmVhdHVyZVxuICogLSBEaXNhYmxlID0gJ2Rpc2FibGUnIC0gRGlzYWJsZSBmZWF0dXJlXG4gKiBcbiAqIEFuYWx5dGljcyAmIE1vbml0b3Jpbmc6XG4gKiAtIE1vbml0b3IgPSAnbW9uaXRvcicgLSBNb25pdG9yIGFjdGl2aXR5XG4gKiAtIFRyYWNrID0gJ3RyYWNrJyAtIFRyYWNrIHByb2dyZXNzXG4gKiAtIEFuYWx5emUgPSAnYW5hbHl6ZScgLSBBbmFseXplIGRhdGFcbiAqIC0gRGVidWcgPSAnZGVidWcnIC0gRGVidWcgaXNzdWVcbiAqIC0gTG9nID0gJ2xvZycgLSBWaWV3IGxvZ3NcbiAqIC0gQWxlcnQgPSAnYWxlcnQnIC0gU2V0IGFsZXJ0XG4gKiAtIERhc2hib2FyZCA9ICdkYXNoYm9hcmQnIC0gVmlldyBkYXNoYm9hcmRcbiAqIC0gTWV0cmljcyA9ICdtZXRyaWNzJyAtIFZpZXcgbWV0cmljc1xuICogXG4gKiBDb2xsYWJvcmF0aW9uIEFjdGlvbnM6XG4gKiAtIENvbGxhYm9yYXRlID0gJ2NvbGxhYm9yYXRlJyAtIFN0YXJ0IGNvbGxhYm9yYXRpb25cbiAqIC0gU2hhcmUgPSAnc2hhcmUnIC0gU2hhcmUgY29udGVudFxuICogLSBDb21tZW50ID0gJ2NvbW1lbnQnIC0gQWRkIGNvbW1lbnRcbiAqIC0gTGlrZSA9ICdsaWtlJyAtIExpa2UgY29udGVudFxuICogLSBGb2xsb3cgPSAnZm9sbG93JyAtIEZvbGxvdyB1c2VyL2NvbnRlbnRcbiAqIC0gU3Vic2NyaWJlID0gJ3N1YnNjcmliZScgLSBTdWJzY3JpYmUgdG8gdXBkYXRlc1xuICogLSBVbnN1YnNjcmliZSA9ICd1bnN1YnNjcmliZScgLSBVbnN1YnNjcmliZVxuICogLSBSYXRlID0gJ3JhdGUnIC0gUmF0ZSBjb250ZW50XG4gKiAtIFJldmlldyA9ICdyZXZpZXcnIC0gUmV2aWV3IGNvbnRlbnRcbiAqIC0gUmVjb21tZW5kID0gJ3JlY29tbWVuZCcgLSBSZWNvbW1lbmQgY29udGVudFxuICovXG5cbmV4cG9ydCBlbnVtIEFYUFN5c3RlbUFjdGlvblR5cGUge1xuICAgIFZpZXcgPSAndmlldycsXG4gICAgQ3JlYXRlID0gJ2NyZWF0ZScsXG4gICAgVXBkYXRlID0gJ3VwZGF0ZScsXG4gICAgRGVsZXRlID0gJ2RlbGV0ZScsXG4gICAgQXBwcm92ZSA9ICdhcHByb3ZlJyxcbiAgICBSZWplY3QgPSAncmVqZWN0JyxcbiAgICBTdWJtaXQgPSAnc3VibWl0JyxcbiAgICBFeHBvcnQgPSAnZXhwb3J0JyxcbiAgICBJbXBvcnQgPSAnaW1wb3J0JyxcbiAgICBQcmludCA9ICdwcmludCcsXG4gICAgQXNzaWduID0gJ2Fzc2lnbicsXG4gICAgTG9jayA9ICdsb2NrJyxcbiAgICBVbmxvY2sgPSAndW5sb2NrJyxcbiAgICBTaGFyZSA9ICdzaGFyZScsXG4gICAgQ29uZmlndXJlID0gJ2NvbmZpZ3VyZScsXG4gICAgUmVvcmRlciA9ICdyZW9yZGVyJyxcbiAgICBQcmV2aWV3ID0gJ3ByZXZpZXcnLFxuICAgIER1cGxpY2F0ZSA9ICdkdXBsaWNhdGUnLFxuICAgIEFyY2hpdmUgPSAnYXJjaGl2ZScsXG4gICAgUHVibGlzaCA9ICdwdWJsaXNoJyxcbiAgICBVbnB1Ymxpc2ggPSAndW5wdWJsaXNoJyxcbiAgICBVcGxvYWQgPSAndXBsb2FkJyxcbiAgICBEb3dubG9hZCA9ICdkb3dubG9hZCcsXG4gICAgQ29weSA9ICdjb3B5JyxcbiAgICBNb3ZlID0gJ21vdmUnLFxuICAgIFJlbmFtZSA9ICdyZW5hbWUnLFxuICAgIFJlc3RvcmUgPSAncmVzdG9yZScsXG4gICAgTWFuYWdlID0gJ21hbmFnZScsXG4gICAgSW5mbyA9ICdpbmZvJyxcbiAgICBDb25maXJtID0gJ2NvbmZpcm0nLFxuICAgIERlc2lnbiA9ICdkZXNpZ24nLFxuICAgIFZlcnNpb25IaXN0b3J5ID0gJ3ZlcnNpb24taGlzdG9yeScsXG4gICAgQ29tcGFyZSA9ICdjb21wYXJlJyxcbiAgICBDb21tZW50cyA9ICdjb21tZW50cycsXG4gICAgU2lnbiA9ICdzaWduJyxcbiAgICBTZXR1cCA9ICdzZXR1cCcsXG4gICAgU2VuZCA9ICdzZW5kJyxcbiAgICBSZXBvcnQgPSAncmVwb3J0JyxcbiAgICBTZW50ID0gJ3NlbnQnLFxuICAgIFJldmlldyA9ICdyZXZpZXcnLFxuICAgIEdlbmVyYXRlID0gJ2dlbmVyYXRlJyxcbiAgICBSZWZyZXNoID0gJ3JlZnJlc2gnLFxuICAgIFJlbG9hZCA9ICdyZWxvYWQnLFxuICAgIFNlYXJjaCA9ICdzZWFyY2gnLFxuICAgIEZpbHRlciA9ICdmaWx0ZXInLFxuICAgIFNvcnQgPSAnc29ydCcsXG4gICAgU3RhcnQgPSAnc3RhcnQnLFxuICAgIFN0b3AgPSAnc3RvcCcsXG4gICAgUGF1c2UgPSAncGF1c2UnLFxuICAgIENhbmNlbCA9ICdjYW5jZWwnLFxuICAgIENsb3NlID0gJ2Nsb3NlJyxcbiAgICBDb21wbGV0ZSA9ICdjb21wbGV0ZScsXG4gICAgU2F2ZSA9ICdzYXZlJyxcbiAgICBTYXZlQXMgPSAnc2F2ZS1hcycsXG4gICAgU3luYyA9ICdzeW5jJyxcbiAgICBSZXNldCA9ICdyZXNldCcsXG4gICAgQ2xlYXIgPSAnY2xlYXInLFxuICAgIERpc3RyaWJ1dGlvbiA9ICdkaXN0cmlidXRpb24nLFxufVxuZXhwb3J0IGludGVyZmFjZSBBWFBTeXN0ZW1BY3Rpb24ge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgaWNvbj86IHN0cmluZztcbiAgICBjb2xvcj86IHN0cmluZztcbiAgICBjcml0aWNhbD86IGJvb2xlYW47XG4gICAgZGVzY3JpcHRpb25zOiB7XG4gICAgICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgICAgIHRvb2x0aXA6IHN0cmluZztcbiAgICAgICAgcGVybWlzc2lvbjogc3RyaW5nO1xuICAgICAgICBhdWRpdDogc3RyaW5nO1xuICAgIH07XG59XG5cbmNvbnN0IGkxOG4gPSAoa2V5OiBzdHJpbmcpID0+IGBAZ2VuZXJhbDphY3Rpb25zLiR7a2V5fWA7XG5cbmV4cG9ydCBjb25zdCBBWFBTeXN0ZW1BY3Rpb25zID0gT2JqZWN0LmZyZWV6ZSh7XG4gICAgVmlldzoge1xuICAgICAgICBrZXk6IEFYUFN5c3RlbUFjdGlvblR5cGUuVmlldyxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ3ZpZXcudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWV5ZScsXG4gICAgICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ3ZpZXcudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ3ZpZXcuZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ3ZpZXcucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ3ZpZXcuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBDcmVhdGU6IHtcbiAgICAgICAga2V5OiBBWFBTeXN0ZW1BY3Rpb25UeXBlLkNyZWF0ZSxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ2NyZWF0ZS50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtcGx1cycsXG4gICAgICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ2NyZWF0ZS50aXRsZScpLFxuICAgICAgICAgICAgdG9vbHRpcDogaTE4bignY3JlYXRlLmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiBpMThuKCdjcmVhdGUucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ2NyZWF0ZS5hdWRpdCcpXG4gICAgICAgIH1cbiAgICB9LFxuICAgIEVkaXQ6IHtcbiAgICAgICAga2V5OiBBWFBTeXN0ZW1BY3Rpb25UeXBlLlVwZGF0ZSxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ2VkaXQudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLXBlbicsXG4gICAgICAgIGNvbG9yOiAnZGVmYXVsdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ2VkaXQudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ2VkaXQuZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ2VkaXQucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ2VkaXQuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBEZWxldGU6IHtcbiAgICAgICAga2V5OiBBWFBTeXN0ZW1BY3Rpb25UeXBlLkRlbGV0ZSxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ2RlbGV0ZS50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtdHJhc2gnLFxuICAgICAgICBjb2xvcjogJ2RhbmdlcicsXG4gICAgICAgIGNyaXRpY2FsOiB0cnVlLFxuICAgICAgICBkZXNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuKCdkZWxldGUudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ2RlbGV0ZS5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bignZGVsZXRlLnBlcm1pc3Npb24nKSxcbiAgICAgICAgICAgIGF1ZGl0OiBpMThuKCdkZWxldGUuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBBcHByb3ZlOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5BcHByb3ZlLFxuICAgICAgICB0aXRsZTogaTE4bignYXBwcm92ZS50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtY2lyY2xlLWNoZWNrJyxcbiAgICAgICAgY29sb3I6ICdzdWNjZXNzJyxcbiAgICAgICAgY3JpdGljYWw6IHRydWUsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ2FwcHJvdmUudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ2FwcHJvdmUuZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ2FwcHJvdmUucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ2FwcHJvdmUuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBTdWJtaXQ6IHtcbiAgICAgICAga2V5OiBBWFBTeXN0ZW1BY3Rpb25UeXBlLlN1Ym1pdCxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ3N1Ym1pdC50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtcGFwZXItcGxhbmUnLFxuICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICBkZXNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuKCdzdWJtaXQudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ3N1Ym1pdC5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bignc3VibWl0LnBlcm1pc3Npb24nKSxcbiAgICAgICAgICAgIGF1ZGl0OiBpMThuKCdzdWJtaXQuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBSZWplY3Q6IHtcbiAgICAgICAga2V5OiBBWFBTeXN0ZW1BY3Rpb25UeXBlLlJlamVjdCxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ3JlamVjdC50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtYmFuJyxcbiAgICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgICBjcml0aWNhbDogdHJ1ZSxcbiAgICAgICAgZGVzY3JpcHRpb25zOiB7XG4gICAgICAgICAgICB0aXRsZTogaTE4bigncmVqZWN0LnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdyZWplY3QuZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ3JlamVjdC5wZXJtaXNzaW9uJyksXG4gICAgICAgICAgICBhdWRpdDogaTE4bigncmVqZWN0LmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgRXhwb3J0OiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5FeHBvcnQsXG4gICAgICAgIHRpdGxlOiBpMThuKCdleHBvcnQudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWRvd25sb2FkJyxcbiAgICAgICAgY29sb3I6ICdkZWZhdWx0JyxcbiAgICAgICAgZGVzY3JpcHRpb25zOiB7XG4gICAgICAgICAgICB0aXRsZTogaTE4bignZXhwb3J0LnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdleHBvcnQuZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ2V4cG9ydC5wZXJtaXNzaW9uJyksXG4gICAgICAgICAgICBhdWRpdDogaTE4bignZXhwb3J0LmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgSW1wb3J0OiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5JbXBvcnQsXG4gICAgICAgIHRpdGxlOiBpMThuKCdpbXBvcnQudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLXVwbG9hZCcsXG4gICAgICAgIGNvbG9yOiAnZGVmYXVsdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ2ltcG9ydC50aXRsZScpLFxuICAgICAgICAgICAgdG9vbHRpcDogaTE4bignaW1wb3J0LmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiBpMThuKCdpbXBvcnQucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ2ltcG9ydC5hdWRpdCcpXG4gICAgICAgIH1cbiAgICB9LFxuICAgIFByaW50OiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5QcmludCxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ3ByaW50LnRpdGxlJyksXG4gICAgICAgIGljb246ICdmYS1saWdodCBmYS1wcmludCcsXG4gICAgICAgIGNvbG9yOiAnZGVmYXVsdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ3ByaW50LnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdwcmludC5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bigncHJpbnQucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ3ByaW50LmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgRHVwbGljYXRlOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5EdXBsaWNhdGUsXG4gICAgICAgIHRpdGxlOiBpMThuKCdkdXBsaWNhdGUudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWNsb25lJyxcbiAgICAgICAgY29sb3I6ICd3YXJuaW5nJyxcbiAgICAgICAgZGVzY3JpcHRpb25zOiB7XG4gICAgICAgICAgICB0aXRsZTogaTE4bignZHVwbGljYXRlLnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdkdXBsaWNhdGUuZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ2R1cGxpY2F0ZS5wZXJtaXNzaW9uJyksXG4gICAgICAgICAgICBhdWRpdDogaTE4bignZHVwbGljYXRlLmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgQXJjaGl2ZToge1xuICAgICAgICBrZXk6IEFYUFN5c3RlbUFjdGlvblR5cGUuQXJjaGl2ZSxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ2FyY2hpdmUudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWJveC1hcmNoaXZlJyxcbiAgICAgICAgY29sb3I6ICdkZWZhdWx0JyxcbiAgICAgICAgZGVzY3JpcHRpb25zOiB7XG4gICAgICAgICAgICB0aXRsZTogaTE4bignYXJjaGl2ZS50aXRsZScpLFxuICAgICAgICAgICAgdG9vbHRpcDogaTE4bignYXJjaGl2ZS5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bignYXJjaGl2ZS5wZXJtaXNzaW9uJyksXG4gICAgICAgICAgICBhdWRpdDogaTE4bignYXJjaGl2ZS5hdWRpdCcpXG4gICAgICAgIH1cbiAgICB9LFxuICAgIFJlc3RvcmU6IHtcbiAgICAgICAga2V5OiBBWFBTeXN0ZW1BY3Rpb25UeXBlLlJlc3RvcmUsXG4gICAgICAgIHRpdGxlOiBpMThuKCdyZXN0b3JlLnRpdGxlJyksXG4gICAgICAgIGljb246ICdmYS1saWdodCBmYS1hcnJvdy1yb3RhdGUtbGVmdCcsXG4gICAgICAgIGNvbG9yOiAnZGVmYXVsdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ3Jlc3RvcmUudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ3Jlc3RvcmUuZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ3Jlc3RvcmUucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ3Jlc3RvcmUuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBBc3NpZ246IHtcbiAgICAgICAga2V5OiBBWFBTeXN0ZW1BY3Rpb25UeXBlLkFzc2lnbixcbiAgICAgICAgdGl0bGU6IGkxOG4oJ2Fzc2lnbi50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtdXNlci1wbHVzJyxcbiAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgICAgZGVzY3JpcHRpb25zOiB7XG4gICAgICAgICAgICB0aXRsZTogaTE4bignYXNzaWduLnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdhc3NpZ24uZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ2Fzc2lnbi5wZXJtaXNzaW9uJyksXG4gICAgICAgICAgICBhdWRpdDogaTE4bignYXNzaWduLmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgTG9jazoge1xuICAgICAgICBrZXk6IEFYUFN5c3RlbUFjdGlvblR5cGUuTG9jayxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ2xvY2sudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWxvY2snLFxuICAgICAgICBjb2xvcjogJ3dhcm5pbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuKCdsb2NrLnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdsb2NrLmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiBpMThuKCdsb2NrLnBlcm1pc3Npb24nKSxcbiAgICAgICAgICAgIGF1ZGl0OiBpMThuKCdsb2NrLmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgVW5sb2NrOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5VbmxvY2ssXG4gICAgICAgIHRpdGxlOiBpMThuKCd1bmxvY2sudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLXVubG9jaycsXG4gICAgICAgIGNvbG9yOiAnc3VjY2VzcycsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ3VubG9jay50aXRsZScpLFxuICAgICAgICAgICAgdG9vbHRpcDogaTE4bigndW5sb2NrLmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiBpMThuKCd1bmxvY2sucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ3VubG9jay5hdWRpdCcpXG4gICAgICAgIH1cbiAgICB9LFxuICAgIFNoYXJlOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5TaGFyZSxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ3NoYXJlLnRpdGxlJyksXG4gICAgICAgIGljb246ICdmYS1saWdodCBmYS1zaGFyZS1ub2RlcycsXG4gICAgICAgIGNvbG9yOiAnaW5mbycsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ3NoYXJlLnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdzaGFyZS5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bignc2hhcmUucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ3NoYXJlLmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgQ29uZmlndXJlOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5Db25maWd1cmUsXG4gICAgICAgIHRpdGxlOiBpMThuKCdjb25maWd1cmUudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLXNsaWRlcnMnLFxuICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICBkZXNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuKCdjb25maWd1cmUudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ2NvbmZpZ3VyZS5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bignY29uZmlndXJlLnBlcm1pc3Npb24nKSxcbiAgICAgICAgICAgIGF1ZGl0OiBpMThuKCdjb25maWd1cmUuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBSZW9yZGVyOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5SZW9yZGVyLFxuICAgICAgICB0aXRsZTogaTE4bigncmVvcmRlci50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtYXJyb3ctZG93bi11cC1hY3Jvc3MtbGluZScsXG4gICAgICAgIGNvbG9yOiAnZGVmYXVsdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ3Jlb3JkZXIudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ3Jlb3JkZXIuZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ3Jlb3JkZXIucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ3Jlb3JkZXIuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBQcmV2aWV3OiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5QcmV2aWV3LFxuICAgICAgICB0aXRsZTogaTE4bigncHJldmlldy50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtbWFnbmlmeWluZy1nbGFzcycsXG4gICAgICAgIGNvbG9yOiAnZGVmYXVsdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ3ByZXZpZXcudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ3ByZXZpZXcuZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ3ByZXZpZXcucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ3ByZXZpZXcuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBQdWJsaXNoOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5QdWJsaXNoLFxuICAgICAgICB0aXRsZTogaTE4bigncHVibGlzaC50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtZ2xvYmUnLFxuICAgICAgICBjb2xvcjogJ3N1Y2Nlc3MnLFxuICAgICAgICBkZXNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuKCdwdWJsaXNoLnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdwdWJsaXNoLmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiBpMThuKCdwdWJsaXNoLnBlcm1pc3Npb24nKSxcbiAgICAgICAgICAgIGF1ZGl0OiBpMThuKCdwdWJsaXNoLmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgVW5wdWJsaXNoOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5VbnB1Ymxpc2gsXG4gICAgICAgIHRpdGxlOiBpMThuKCd1bnB1Ymxpc2gudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWdsb2JlLXNsYXNoJyxcbiAgICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgICBkZXNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuKCd1bnB1Ymxpc2gudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ3VucHVibGlzaC5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bigndW5wdWJsaXNoLnBlcm1pc3Npb24nKSxcbiAgICAgICAgICAgIGF1ZGl0OiBpMThuKCd1bnB1Ymxpc2guYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBVcGxvYWQ6IHtcbiAgICAgICAga2V5OiBBWFBTeXN0ZW1BY3Rpb25UeXBlLlVwbG9hZCxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ3VwbG9hZC50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtdXBsb2FkJyxcbiAgICAgICAgY29sb3I6ICdkZWZhdWx0JyxcbiAgICAgICAgZGVzY3JpcHRpb25zOiB7XG4gICAgICAgICAgICB0aXRsZTogaTE4bigndXBsb2FkLnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCd1cGxvYWQuZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ3VwbG9hZC5wZXJtaXNzaW9uJyksXG4gICAgICAgICAgICBhdWRpdDogaTE4bigndXBsb2FkLmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgRG93bmxvYWQ6IHtcbiAgICAgICAga2V5OiBBWFBTeXN0ZW1BY3Rpb25UeXBlLkRvd25sb2FkLFxuICAgICAgICB0aXRsZTogaTE4bignZG93bmxvYWQudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWRvd25sb2FkJyxcbiAgICAgICAgY29sb3I6ICdkZWZhdWx0JyxcbiAgICAgICAgZGVzY3JpcHRpb25zOiB7XG4gICAgICAgICAgICB0aXRsZTogaTE4bignZG93bmxvYWQudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ2Rvd25sb2FkLmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiBpMThuKCdkb3dubG9hZC5wZXJtaXNzaW9uJyksXG4gICAgICAgICAgICBhdWRpdDogaTE4bignZG93bmxvYWQuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBDb3B5OiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5Db3B5LFxuICAgICAgICB0aXRsZTogaTE4bignY29weS50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtY29weScsXG4gICAgICAgIGNvbG9yOiAnZGVmYXVsdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ2NvcHkudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ2NvcHkuZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ2NvcHkucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ2NvcHkuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBNb3ZlOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5Nb3ZlLFxuICAgICAgICB0aXRsZTogaTE4bignbW92ZS50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtYXJyb3ctcmlnaHQtYXJyb3ctbGVmdCcsXG4gICAgICAgIGNvbG9yOiAnZGVmYXVsdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ21vdmUudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ21vdmUuZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ21vdmUucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ21vdmUuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBSZW5hbWU6IHtcbiAgICAgICAga2V5OiBBWFBTeXN0ZW1BY3Rpb25UeXBlLlJlbmFtZSxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ3JlbmFtZS50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtcGVuJyxcbiAgICAgICAgY29sb3I6ICdkZWZhdWx0JyxcbiAgICAgICAgZGVzY3JpcHRpb25zOiB7XG4gICAgICAgICAgICB0aXRsZTogaTE4bigncmVuYW1lLnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdyZW5hbWUuZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ3JlbmFtZS5wZXJtaXNzaW9uJyksXG4gICAgICAgICAgICBhdWRpdDogaTE4bigncmVuYW1lLmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgTWFuYWdlOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5NYW5hZ2UsXG4gICAgICAgIHRpdGxlOiBpMThuKCdtYW5hZ2UudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWdlYXInLFxuICAgICAgICBjb2xvcjogJ2RlZmF1bHQnLFxuICAgICAgICBkZXNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuKCdtYW5hZ2UudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ21hbmFnZS5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bignbWFuYWdlLnBlcm1pc3Npb24nKSxcbiAgICAgICAgICAgIGF1ZGl0OiBpMThuKCdtYW5hZ2UuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBJbmZvOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5JbmZvLFxuICAgICAgICB0aXRsZTogaTE4bignaW5mby50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtaW5mbycsXG4gICAgICAgIGNvbG9yOiAnZGVmYXVsdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ2luZm8udGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ2luZm8uZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ2luZm8ucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ2luZm8uYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBDb25maXJtOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5Db25maXJtLFxuICAgICAgICB0aXRsZTogaTE4bignY29uZmlybS50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtY2hlY2snLFxuICAgICAgICBjb2xvcjogJ3N1Y2Nlc3MnLFxuICAgICAgICBkZXNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuKCdjb25maXJtLnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdjb25maXJtLmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiBpMThuKCdjb25maXJtLnBlcm1pc3Npb24nKSxcbiAgICAgICAgICAgIGF1ZGl0OiBpMThuKCdjb25maXJtLmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgRGVzaWduOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5EZXNpZ24sXG4gICAgICAgIHRpdGxlOiBpMThuKCdkZXNpZ24udGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLXBhaW50YnJ1c2gnLFxuICAgICAgICBjb2xvcjogJ2RlZmF1bHQnLFxuICAgICAgICBkZXNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuKCdkZXNpZ24udGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ2Rlc2lnbi5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bignZGVzaWduLnBlcm1pc3Npb24nKSxcbiAgICAgICAgICAgIGF1ZGl0OiBpMThuKCdkZXNpZ24uYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBWZXJzaW9uSGlzdG9yeToge1xuICAgICAgICBrZXk6IEFYUFN5c3RlbUFjdGlvblR5cGUuVmVyc2lvbkhpc3RvcnksXG4gICAgICAgIHRpdGxlOiBpMThuKCd2ZXJzaW9uLWhpc3RvcnkudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWhpc3RvcnknLFxuICAgICAgICBjb2xvcjogJ2RlZmF1bHQnLFxuICAgICAgICBkZXNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuKCd2ZXJzaW9uLWhpc3RvcnkudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ3ZlcnNpb24taGlzdG9yeS5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bigndmVyc2lvbi1oaXN0b3J5LnBlcm1pc3Npb24nKSxcbiAgICAgICAgICAgIGF1ZGl0OiBpMThuKCd2ZXJzaW9uLWhpc3RvcnkuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBDb21wYXJlOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5Db21wYXJlLFxuICAgICAgICB0aXRsZTogaTE4bignY29tcGFyZS50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtY29kZS1jb21wYXJlJyxcbiAgICAgICAgY29sb3I6ICdkZWZhdWx0JyxcbiAgICAgICAgZGVzY3JpcHRpb25zOiB7XG4gICAgICAgICAgICB0aXRsZTogaTE4bignY29tcGFyZS50aXRsZScpLFxuICAgICAgICAgICAgdG9vbHRpcDogaTE4bignY29tcGFyZS5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bignY29tcGFyZS5wZXJtaXNzaW9uJyksXG4gICAgICAgICAgICBhdWRpdDogaTE4bignY29tcGFyZS5hdWRpdCcpXG4gICAgICAgIH1cbiAgICB9LFxuICAgIENvbW1lbnRzOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5Db21tZW50cyxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ2NvbW1lbnRzLnRpdGxlJyksXG4gICAgICAgIGljb246ICdmYS1saWdodCBmYS1jb21tZW50cycsXG4gICAgICAgIGNvbG9yOiAnZGVmYXVsdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ2NvbW1lbnRzLnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdjb21tZW50cy5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bignY29tbWVudHMucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ2NvbW1lbnRzLmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgU2lnbjoge1xuICAgICAgICBrZXk6IEFYUFN5c3RlbUFjdGlvblR5cGUuU2lnbixcbiAgICAgICAgdGl0bGU6IGkxOG4oJ3NpZ24udGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLXNpZ25hdHVyZScsXG4gICAgICAgIGNvbG9yOiAnZGVmYXVsdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ3NpZ24udGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ3NpZ24uZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ3NpZ24ucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ3NpZ24uYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBTZXR1cDoge1xuICAgICAgICBrZXk6IEFYUFN5c3RlbUFjdGlvblR5cGUuU2V0dXAsXG4gICAgICAgIHRpdGxlOiBpMThuKCdzZXR1cC50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtY29nJyxcbiAgICAgICAgY29sb3I6ICdkZWZhdWx0JyxcbiAgICAgICAgZGVzY3JpcHRpb25zOiB7XG4gICAgICAgICAgICB0aXRsZTogaTE4bignc2V0dXAudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ3NldHVwLmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiBpMThuKCdzZXR1cC5wZXJtaXNzaW9uJyksXG4gICAgICAgICAgICBhdWRpdDogaTE4bignc2V0dXAuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBTZW5kOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5TZW5kLFxuICAgICAgICB0aXRsZTogaTE4bignc2VuZC50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtZW52ZWxvcGUnLFxuICAgICAgICBjb2xvcjogJ2RlZmF1bHQnLFxuICAgICAgICBkZXNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuKCdzZW5kLnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdzZW5kLmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiBpMThuKCdzZW5kLnBlcm1pc3Npb24nKSxcbiAgICAgICAgICAgIGF1ZGl0OiBpMThuKCdzZW5kLmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgUmVwb3J0OiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5SZXBvcnQsXG4gICAgICAgIHRpdGxlOiBpMThuKCdyZXBvcnQudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWNoYXJ0LWxpbmUnLFxuICAgICAgICBjb2xvcjogJ2RlZmF1bHQnLFxuICAgICAgICBkZXNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuKCdyZXBvcnQudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ3JlcG9ydC5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bigncmVwb3J0LnBlcm1pc3Npb24nKSxcbiAgICAgICAgICAgIGF1ZGl0OiBpMThuKCdyZXBvcnQuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBTZW50OiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5TZW50LFxuICAgICAgICB0aXRsZTogaTE4bignc2VudC50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtcGFwZXItcGxhbmUnLFxuICAgICAgICBjb2xvcjogJ2RlZmF1bHQnLFxuICAgICAgICBkZXNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuKCdzZW50LnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdzZW50LmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiBpMThuKCdzZW50LnBlcm1pc3Npb24nKSxcbiAgICAgICAgICAgIGF1ZGl0OiBpMThuKCdzZW50LmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgUmV2aWV3OiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5SZXZpZXcsXG4gICAgICAgIHRpdGxlOiBpMThuKCdyZXZpZXcudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWV5ZScsXG4gICAgICAgIGNvbG9yOiAnZGVmYXVsdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ3Jldmlldy50aXRsZScpLFxuICAgICAgICAgICAgdG9vbHRpcDogaTE4bigncmV2aWV3LmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiBpMThuKCdyZXZpZXcucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ3Jldmlldy5hdWRpdCcpXG4gICAgICAgIH1cbiAgICB9LFxuICAgIEdlbmVyYXRlOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5HZW5lcmF0ZSxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ2dlbmVyYXRlLnRpdGxlJyksXG4gICAgICAgIGljb246ICdmYS1saWdodCBmYS13YW5kLW1hZ2ljLXNwYXJrbGVzJyxcbiAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgICAgZGVzY3JpcHRpb25zOiB7XG4gICAgICAgICAgICB0aXRsZTogaTE4bignZ2VuZXJhdGUudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ2dlbmVyYXRlLmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiBpMThuKCdnZW5lcmF0ZS5wZXJtaXNzaW9uJyksXG4gICAgICAgICAgICBhdWRpdDogaTE4bignZ2VuZXJhdGUuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBSZWZyZXNoOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5SZWZyZXNoLFxuICAgICAgICB0aXRsZTogaTE4bigncmVmcmVzaC50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtYXJyb3dzLXJvdGF0ZScsXG4gICAgICAgIGNvbG9yOiAnZGVmYXVsdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ3JlZnJlc2gudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ3JlZnJlc2guZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ3JlZnJlc2gucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ3JlZnJlc2guYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBSZWxvYWQ6IHtcbiAgICAgICAga2V5OiBBWFBTeXN0ZW1BY3Rpb25UeXBlLlJlbG9hZCxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ3JlbG9hZC50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtYXJyb3dzLXJvdGF0ZScsXG4gICAgICAgIGNvbG9yOiAnZGVmYXVsdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ3JlbG9hZC50aXRsZScpLFxuICAgICAgICAgICAgdG9vbHRpcDogaTE4bigncmVsb2FkLmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiBpMThuKCdyZWxvYWQucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ3JlbG9hZC5hdWRpdCcpXG4gICAgICAgIH1cbiAgICB9LFxuICAgIFNlYXJjaDoge1xuICAgICAgICBrZXk6IEFYUFN5c3RlbUFjdGlvblR5cGUuU2VhcmNoLFxuICAgICAgICB0aXRsZTogaTE4bignc2VhcmNoLnRpdGxlJyksXG4gICAgICAgIGljb246ICdmYS1saWdodCBmYS1tYWduaWZ5aW5nLWdsYXNzJyxcbiAgICAgICAgY29sb3I6ICdkZWZhdWx0JyxcbiAgICAgICAgZGVzY3JpcHRpb25zOiB7XG4gICAgICAgICAgICB0aXRsZTogaTE4bignc2VhcmNoLnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdzZWFyY2guZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ3NlYXJjaC5wZXJtaXNzaW9uJyksXG4gICAgICAgICAgICBhdWRpdDogaTE4bignc2VhcmNoLmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgRmlsdGVyOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5GaWx0ZXIsXG4gICAgICAgIHRpdGxlOiBpMThuKCdmaWx0ZXIudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWZpbHRlcicsXG4gICAgICAgIGNvbG9yOiAnZGVmYXVsdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ2ZpbHRlci50aXRsZScpLFxuICAgICAgICAgICAgdG9vbHRpcDogaTE4bignZmlsdGVyLmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiBpMThuKCdmaWx0ZXIucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ2ZpbHRlci5hdWRpdCcpXG4gICAgICAgIH1cbiAgICB9LFxuICAgIFNvcnQ6IHtcbiAgICAgICAga2V5OiBBWFBTeXN0ZW1BY3Rpb25UeXBlLlNvcnQsXG4gICAgICAgIHRpdGxlOiBpMThuKCdzb3J0LnRpdGxlJyksXG4gICAgICAgIGljb246ICdmYS1saWdodCBmYS1hcnJvdy1kb3duLXVwLWFjcm9zcy1saW5lJyxcbiAgICAgICAgY29sb3I6ICdkZWZhdWx0JyxcbiAgICAgICAgZGVzY3JpcHRpb25zOiB7XG4gICAgICAgICAgICB0aXRsZTogaTE4bignc29ydC50aXRsZScpLFxuICAgICAgICAgICAgdG9vbHRpcDogaTE4bignc29ydC5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bignc29ydC5wZXJtaXNzaW9uJyksXG4gICAgICAgICAgICBhdWRpdDogaTE4bignc29ydC5hdWRpdCcpXG4gICAgICAgIH1cbiAgICB9LFxuICAgIFN0YXJ0OiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5TdGFydCxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ3N0YXJ0LnRpdGxlJyksXG4gICAgICAgIGljb246ICdmYS1saWdodCBmYS1wbGF5JyxcbiAgICAgICAgY29sb3I6ICdzdWNjZXNzJyxcbiAgICAgICAgZGVzY3JpcHRpb25zOiB7XG4gICAgICAgICAgICB0aXRsZTogaTE4bignc3RhcnQudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ3N0YXJ0LmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiBpMThuKCdzdGFydC5wZXJtaXNzaW9uJyksXG4gICAgICAgICAgICBhdWRpdDogaTE4bignc3RhcnQuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBTdG9wOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5TdG9wLFxuICAgICAgICB0aXRsZTogaTE4bignc3RvcC50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtc3RvcCcsXG4gICAgICAgIGNvbG9yOiAnZGFuZ2VyJyxcbiAgICAgICAgY3JpdGljYWw6IHRydWUsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ3N0b3AudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ3N0b3AuZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ3N0b3AucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ3N0b3AuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBQYXVzZToge1xuICAgICAgICBrZXk6IEFYUFN5c3RlbUFjdGlvblR5cGUuUGF1c2UsXG4gICAgICAgIHRpdGxlOiBpMThuKCdwYXVzZS50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtcGF1c2UnLFxuICAgICAgICBjb2xvcjogJ3dhcm5pbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuKCdwYXVzZS50aXRsZScpLFxuICAgICAgICAgICAgdG9vbHRpcDogaTE4bigncGF1c2UuZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ3BhdXNlLnBlcm1pc3Npb24nKSxcbiAgICAgICAgICAgIGF1ZGl0OiBpMThuKCdwYXVzZS5hdWRpdCcpXG4gICAgICAgIH1cbiAgICB9LFxuICAgIENhbmNlbDoge1xuICAgICAgICBrZXk6IEFYUFN5c3RlbUFjdGlvblR5cGUuQ2FuY2VsLFxuICAgICAgICB0aXRsZTogaTE4bignY2FuY2VsLnRpdGxlJyksXG4gICAgICAgIGljb246ICdmYS1saWdodCBmYS14bWFyaycsXG4gICAgICAgIGNyaXRpY2FsOiB0cnVlLFxuICAgICAgICBkZXNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuKCdjYW5jZWwudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ2NhbmNlbC5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bignY2FuY2VsLnBlcm1pc3Npb24nKSxcbiAgICAgICAgICAgIGF1ZGl0OiBpMThuKCdjYW5jZWwuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBDbG9zZToge1xuICAgICAgICBrZXk6IEFYUFN5c3RlbUFjdGlvblR5cGUuQ2xvc2UsXG4gICAgICAgIHRpdGxlOiBpMThuKCdjbG9zZS50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEteG1hcmsnLFxuICAgICAgICBjb2xvcjogJ2RlZmF1bHQnLFxuICAgICAgICBkZXNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuKCdjbG9zZS50aXRsZScpLFxuICAgICAgICAgICAgdG9vbHRpcDogaTE4bignY2xvc2UuZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ2Nsb3NlLnBlcm1pc3Npb24nKSxcbiAgICAgICAgICAgIGF1ZGl0OiBpMThuKCdjbG9zZS5hdWRpdCcpXG4gICAgICAgIH1cbiAgICB9LFxuICAgIENvbXBsZXRlOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5Db21wbGV0ZSxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ2NvbXBsZXRlLnRpdGxlJyksXG4gICAgICAgIGljb246ICdmYS1saWdodCBmYS1jaGVjaycsXG4gICAgICAgIGNvbG9yOiAnc3VjY2VzcycsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ2NvbXBsZXRlLnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdjb21wbGV0ZS5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bignY29tcGxldGUucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ2NvbXBsZXRlLmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgU2F2ZToge1xuICAgICAgICBrZXk6IEFYUFN5c3RlbUFjdGlvblR5cGUuU2F2ZSxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ3NhdmUudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWZsb3BweS1kaXNrJyxcbiAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgICAgZGVzY3JpcHRpb25zOiB7XG4gICAgICAgICAgICB0aXRsZTogaTE4bignc2F2ZS50aXRsZScpLFxuICAgICAgICAgICAgdG9vbHRpcDogaTE4bignc2F2ZS5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bignc2F2ZS5wZXJtaXNzaW9uJyksXG4gICAgICAgICAgICBhdWRpdDogaTE4bignc2F2ZS5hdWRpdCcpXG4gICAgICAgIH1cbiAgICB9LFxuICAgIFNhdmVBczoge1xuICAgICAgICBrZXk6IEFYUFN5c3RlbUFjdGlvblR5cGUuU2F2ZUFzLFxuICAgICAgICB0aXRsZTogaTE4bignc2F2ZS1hcy50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtZmxvcHB5LWRpc2snLFxuICAgICAgICBjb2xvcjogJ2RlZmF1bHQnLFxuICAgICAgICBkZXNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuKCdzYXZlLWFzLnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdzYXZlLWFzLmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiBpMThuKCdzYXZlLWFzLnBlcm1pc3Npb24nKSxcbiAgICAgICAgICAgIGF1ZGl0OiBpMThuKCdzYXZlLWFzLmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgU3luYzoge1xuICAgICAgICBrZXk6IEFYUFN5c3RlbUFjdGlvblR5cGUuU3luYyxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ3N5bmMudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWFycm93cy1yb3RhdGUnLFxuICAgICAgICBjb2xvcjogJ2RlZmF1bHQnLFxuICAgICAgICBkZXNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuKCdzeW5jLnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdzeW5jLmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiBpMThuKCdzeW5jLnBlcm1pc3Npb24nKSxcbiAgICAgICAgICAgIGF1ZGl0OiBpMThuKCdzeW5jLmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgUmVzZXQ6IHtcbiAgICAgICAga2V5OiBBWFBTeXN0ZW1BY3Rpb25UeXBlLlJlc2V0LFxuICAgICAgICB0aXRsZTogaTE4bigncmVzZXQudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWFycm93LXJvdGF0ZS1sZWZ0JyxcbiAgICAgICAgY29sb3I6ICd3YXJuaW5nJyxcbiAgICAgICAgY3JpdGljYWw6IHRydWUsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ3Jlc2V0LnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdyZXNldC5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bigncmVzZXQucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ3Jlc2V0LmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgQ2xlYXI6IHtcbiAgICAgICAga2V5OiBBWFBTeXN0ZW1BY3Rpb25UeXBlLkNsZWFyLFxuICAgICAgICB0aXRsZTogaTE4bignY2xlYXIudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWVyYXNlcicsXG4gICAgICAgIGNvbG9yOiAnZGVmYXVsdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ2NsZWFyLnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdjbGVhci5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bignY2xlYXIucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ2NsZWFyLmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgRGlzdHJpYnV0aW9uOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5EaXN0cmlidXRpb24sXG4gICAgICAgIHRpdGxlOiBpMThuKCdkaXN0cmlidXRpb24udGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLXNoYXJlLW5vZGVzJyxcbiAgICAgICAgY29sb3I6ICdkZWZhdWx0JyxcbiAgICAgICAgZGVzY3JpcHRpb25zOiB7XG4gICAgICAgICAgICB0aXRsZTogaTE4bignZGlzdHJpYnV0aW9uLnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdkaXN0cmlidXRpb24uZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ2Rpc3RyaWJ1dGlvbi5wZXJtaXNzaW9uJyksXG4gICAgICAgICAgICBhdWRpdDogaTE4bignZGlzdHJpYnV0aW9uLmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG5cbn0gYXMgY29uc3Qgc2F0aXNmaWVzIFJlY29yZDxzdHJpbmcsIEFYUFN5c3RlbUFjdGlvbj4pO1xuXG5cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFN5c3RlbUFjdGlvbnModHlwZTogQVhQU3lzdGVtQWN0aW9uVHlwZSk6IEFYUFN5c3RlbUFjdGlvbiB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoQVhQU3lzdGVtQWN0aW9ucykuZmluZChhY3Rpb24gPT4gYWN0aW9uLmtleSA9PT0gdHlwZSkgYXMgQVhQU3lzdGVtQWN0aW9uO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHRoZSB2aXN1YWwgYXBwZWFyYW5jZSAoY29sb3IgYW5kIGljb24pIGZvciBlbnRpdHkgYWN0aW9uc1xuICogdXNpbmcgdGhlIHN5c3RlbSBhY3Rpb25zIGZyb20gdGhlIGNvcmUgbW9kdWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUFjdGlvbkxvb2soYWN0aW9uVHlwZTogc3RyaW5nKTogeyBjb2xvcjogQVhTdHlsZUNvbG9yVHlwZTsgaWNvbjogc3RyaW5nIH0ge1xuICAgIC8vIFRyeSB0byBnZXQgc3lzdGVtIGFjdGlvbiBmaXJzdFxuICAgIGNvbnN0IHN5c3RlbUFjdGlvblR5cGUgPSBhY3Rpb25UeXBlIGFzIEFYUFN5c3RlbUFjdGlvblR5cGU7XG4gICAgaWYgKHN5c3RlbUFjdGlvblR5cGUpIHtcbiAgICAgICAgY29uc3Qgc3lzdGVtQWN0aW9uID0gZ2V0U3lzdGVtQWN0aW9ucyhzeXN0ZW1BY3Rpb25UeXBlKTtcbiAgICAgICAgaWYgKHN5c3RlbUFjdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogKHN5c3RlbUFjdGlvbi5jb2xvciB8fCAnZGVmYXVsdCcpIGFzIEFYU3R5bGVDb2xvclR5cGUsXG4gICAgICAgICAgICAgICAgaWNvbjogc3lzdGVtQWN0aW9uLmljb24gfHwgJydcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGYWxsYmFjayBmb3IgdW5rbm93biBhY3Rpb25zXG4gICAgcmV0dXJuIHtcbiAgICAgICAgY29sb3I6ICdkZWZhdWx0JyBhcyBBWFN0eWxlQ29sb3JUeXBlLFxuICAgICAgICBpY29uOiAnJ1xuICAgIH07XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIHRpdGxlLCBkZXNjcmlwdGlvbiwgaWNvbiBhbmQgY29sb3IgZm9yIGJ1dHRvbiBhY3Rpb25zXG4gKiB1c2luZyB0aGUgc3lzdGVtIGFjdGlvbnMgZnJvbSB0aGUgY29yZSBtb2R1bGUuXG4gKiBAcGFyYW0gYWN0aW9uVHlwZSBcbiAqIEByZXR1cm5zIFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWN0aW9uQnV0dG9uKGFjdGlvblR5cGU6IHN0cmluZyk6IHsgbmFtZTogc3RyaW5nOyB0aXRsZTogc3RyaW5nOyBkZXNjcmlwdGlvbjogc3RyaW5nLCBpY29uOiBzdHJpbmcsIGNvbG9yOiBzdHJpbmcgfSB7XG4gICAgY29uc3Qgc3lzdGVtQWN0aW9uVHlwZSA9IGFjdGlvblR5cGUgYXMgQVhQU3lzdGVtQWN0aW9uVHlwZTtcbiAgICBpZiAoc3lzdGVtQWN0aW9uVHlwZSkge1xuICAgICAgICBjb25zdCBzeXN0ZW1BY3Rpb24gPSBnZXRTeXN0ZW1BY3Rpb25zKHN5c3RlbUFjdGlvblR5cGUpO1xuICAgICAgICBpZiAoc3lzdGVtQWN0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG5hbWU6IGFjdGlvblR5cGUsXG4gICAgICAgICAgICAgICAgaWNvbjogc3lzdGVtQWN0aW9uLmljb24gfHwgJycsXG4gICAgICAgICAgICAgICAgY29sb3I6IHN5c3RlbUFjdGlvbi5jb2xvciB8fCAnZGVmYXVsdCcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHN5c3RlbUFjdGlvbi50aXRsZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogc3lzdGVtQWN0aW9uLmRlc2NyaXB0aW9ucy50aXRsZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZhbGxiYWNrIGZvciB1bmtub3duIGFjdGlvbnNcbiAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiBhY3Rpb25UeXBlLFxuICAgICAgICB0aXRsZTogYWN0aW9uVHlwZSxcbiAgICAgICAgZGVzY3JpcHRpb246IGBQZXJmb3JtICR7YWN0aW9uVHlwZX0gYWN0aW9uYCxcbiAgICAgICAgaWNvbjogJycsXG4gICAgICAgIGNvbG9yOiAnZGVmYXVsdCdcbiAgICB9O1xufVxuIl19","export function getNestedKeys(obj, prefix = '') {\n let keys = [];\n for (const key in obj) {\n if (typeof obj[key] === 'object' && obj[key] !== null && !Array.isArray(obj[key])) {\n keys = [...keys, ...getNestedKeys(obj[key], prefix + key + '.')];\n }\n else {\n keys.push(prefix + key);\n }\n }\n return keys;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL3R5cGVzL2NvcmUudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxVQUFVLGFBQWEsQ0FBQyxHQUFRLEVBQUUsU0FBaUIsRUFBRTtJQUN6RCxJQUFJLElBQUksR0FBYSxFQUFFLENBQUM7SUFDeEIsS0FBSyxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFFBQVEsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2xGLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbkUsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEFYUFBhcnRpYWxOZXN0ZWQ8VD4gPSB7XG4gIFtLIGluIGtleW9mIFRdPzogVFtLXSBleHRlbmRzIG9iamVjdCA/IEFYUFBhcnRpYWxOZXN0ZWQ8VFtLXT4gOiBUW0tdO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldE5lc3RlZEtleXMob2JqOiBhbnksIHByZWZpeDogc3RyaW5nID0gJycpOiBzdHJpbmdbXSB7XG4gIGxldCBrZXlzOiBzdHJpbmdbXSA9IFtdO1xuICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcbiAgICBpZiAodHlwZW9mIG9ialtrZXldID09PSAnb2JqZWN0JyAmJiBvYmpba2V5XSAhPT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheShvYmpba2V5XSkpIHtcbiAgICAgIGtleXMgPSBbLi4ua2V5cywgLi4uZ2V0TmVzdGVkS2V5cyhvYmpba2V5XSwgcHJlZml4ICsga2V5ICsgJy4nKV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGtleXMucHVzaChwcmVmaXggKyBrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4ga2V5cztcbn1cblxuZXhwb3J0IHR5cGUgQVhQRXhwcmVzc2lvbiA9IHN0cmluZztcblxuZXhwb3J0IHR5cGUgQVhQTWV0YURhdGEgPSBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG5leHBvcnQgdHlwZSBBWFBPcHRpb25zRGF0YTxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+PiA9IFQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQVmFsdWVVbml0IHtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICByYXRpbzogbnVtYmVyO1xuICBvcmRlcjogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFZhbHVlVW5pdHMge1xuICBuYW1lOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGl0ZW1zOiBBWFBWYWx1ZVVuaXRbXTtcbiAgZGVmYXVsdDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUEVudGl0eVJlZmVyZW5jZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIG1ldGFkYXRhPzogQVhQTWV0YURhdGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQVXNlclJlZmVyZW5jZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHR5cGU/OiAndXNlcic7XG4gIGZ1bGxOYW1lPzogc3RyaW5nO1xuICB1c2VybmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBBcHBsaWNhdGlvblVzZXJSZWZlcmVuY2Uge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEFYUENvbnRlbnRUeXBlID0gJ3RleHQnIHwgJ2ltYWdlJyB8ICdmaWxlJyB8ICd2aWRlbycgfCAnbGluayc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQQ29udGVudCB7XG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgY29udGVudFR5cGU6IEFYUENvbnRlbnRUeXBlO1xufVxuIl19","import { getSystemActions } from './actions.types';\nexport function applySystemActionDefault(action, type) {\n const systemAction = getSystemActions(type);\n return {\n name: systemAction.key,\n title: systemAction.title,\n icon: systemAction.icon,\n color: systemAction.color,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJhY3RpdmUudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2NvcmUvc3JjL2xpYi90eXBlcy9pbnRlcmFjdGl2ZS50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQXVCLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFvRnhFLE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxNQUF5QixFQUFFLElBQXlCO0lBQzNGLE1BQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVDLE9BQU87UUFDTCxJQUFJLEVBQUUsWUFBWSxDQUFDLEdBQUc7UUFDdEIsS0FBSyxFQUFFLFlBQVksQ0FBQyxLQUFLO1FBQ3pCLElBQUksRUFBRSxZQUFZLENBQUMsSUFBSTtRQUN2QixLQUFLLEVBQUUsWUFBWSxDQUFDLEtBQUs7S0FDMUIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRXh0cmFzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEFYUFN5c3RlbUFjdGlvblR5cGUsIGdldFN5c3RlbUFjdGlvbnMgfSBmcm9tICcuL2FjdGlvbnMudHlwZXMnO1xuaW1wb3J0IHsgQVhQTWV0YURhdGEgfSBmcm9tICcuL2NvcmUudHlwZXMnO1xuXG5leHBvcnQgdHlwZSBBWFBBY3Rpb25NZW51SXRlbSA9IHtcbiAgbmFtZT86IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbiAgaWNvbk9ubHk/OiBib29sZWFuO1xuICBjb2xvcj86IHN0cmluZztcbiAgYnJlYWs/OiBib29sZWFuO1xuICBpdGVtcz86IEFYUEFjdGlvbk1lbnVJdGVtW107XG4gIGNvbW1hbmQ/OiBBWFBFeGVjdXRlQ29tbWFuZDtcbiAgZGlzYWJsZWQ/OiBib29sZWFuIHwgc3RyaW5nO1xuICB2aXNpYmxlPzogYm9vbGVhbiB8IHN0cmluZztcbiAgcG9saWN5Pzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQVhQQmFja0J1dHRvbiA9IHtcbiAgdGl0bGU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEFYUEJyZWFkY3J1bWJJdGVtID0ge1xuICBuYW1lPzogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xuICBjb21tYW5kPzogQVhQRXhlY3V0ZUNvbW1hbmQ7XG59O1xuXG5leHBvcnQgdHlwZSBBWFBCYWRnZSA9IHtcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGNvbG9yPzogJ3ByaW1hcnknIHwgJ3N1Y2Nlc3MnIHwgJ3dhcm5pbmcnIHwgJ2Rhbmdlcic7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYUENvbW1hbmRNZXNzYWdlIHtcbiAgdHlwZT86ICdpbmZvJyB8ICdzdWNjZXNzJyB8ICd3YXJuaW5nJyB8ICdlcnJvcic7XG4gIGNvZGU/OiBzdHJpbmc7XG4gIHRleHQ6IHN0cmluZztcbiAgZGV0YWlscz86IHVua25vd247XG59XG5cbmV4cG9ydCB0eXBlIEFYUEV4ZWN1dGVDb21tYW5kID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIG9wdGlvbnM/OiBBWFBNZXRhRGF0YTtcbiAgbWV0YWRhdGE/OiBBWFBNZXRhRGF0YTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRXhlY3V0ZUNvbW1hbmRSZXN1bHQ8VCA9IGFueT4ge1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBkYXRhPzogVDtcbiAgbWVzc2FnZT86IEFYUENvbW1hbmRNZXNzYWdlO1xuICBtZXRhZGF0YT86IEFYUE1ldGFEYXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFF1ZXJ5RmV0Y2hSZXN1bHQ8VCA9IGFueT4ge1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBkYXRhPzoge1xuICAgIGl0ZW1zPzogVFtdO1xuICAgIHRvdGFsPzogbnVtYmVyO1xuICB9O1xuICBtZXNzYWdlPzoge1xuICAgIGNvZGU/OiBzdHJpbmc7XG4gICAgdGV4dD86IHN0cmluZztcbiAgICBkZXRhaWxzPzogYW55O1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBBWFBOYXZpZ2F0ZUFjdGlvbk9wdGlvbnMgPSB7XG4gIHJvdXRlcjoge1xuICAgIHBhdGg6IHN0cmluZztcbiAgICBleHRyYXM/OiBOYXZpZ2F0aW9uRXh0cmFzICYgeyB0YXJnZXQ/OiBzdHJpbmcgfTtcbiAgfTtcbiAgbW9kYWw6IHtcbiAgICBjb21wb25lbnQ6IFR5cGU8YW55PjtcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIG9wdGlvbnM/OiBhbnk7XG4gIH07XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYUE5hdmlnYXRlQWN0aW9uQ29tbWFuZDxUIGV4dGVuZHMga2V5b2YgQVhQTmF2aWdhdGVBY3Rpb25PcHRpb25zPiB7XG4gIHR5cGU6IFQ7XG4gIG9wdGlvbnM6IEFYUE5hdmlnYXRlQWN0aW9uT3B0aW9uc1tUXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5U3lzdGVtQWN0aW9uRGVmYXVsdChhY3Rpb246IEFYUEFjdGlvbk1lbnVJdGVtLCB0eXBlOiBBWFBTeXN0ZW1BY3Rpb25UeXBlKTogQVhQQWN0aW9uTWVudUl0ZW0ge1xuICBjb25zdCBzeXN0ZW1BY3Rpb24gPSBnZXRTeXN0ZW1BY3Rpb25zKHR5cGUpO1xuICByZXR1cm4ge1xuICAgIG5hbWU6IHN5c3RlbUFjdGlvbi5rZXksXG4gICAgdGl0bGU6IHN5c3RlbUFjdGlvbi50aXRsZSxcbiAgICBpY29uOiBzeXN0ZW1BY3Rpb24uaWNvbixcbiAgICBjb2xvcjogc3lzdGVtQWN0aW9uLmNvbG9yLFxuICB9O1xufVxuIl19","export class AXPImageUrlLogoConfig {\n constructor(url, width, height) {\n this.url = url;\n this.width = width;\n this.height = height;\n }\n}\nexport class AXPComponentLogoConfig {\n constructor(component) {\n this.component = component;\n }\n}\nexport class AXPIconLogoConfig {\n constructor(icon, color) {\n this.icon = icon;\n this.color = color;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nby50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL3R5cGVzL2xvZ28udHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxPQUFPLHFCQUFxQjtJQUNoQyxZQUFtQixHQUFXLEVBQVMsS0FBYyxFQUFTLE1BQWU7UUFBMUQsUUFBRyxHQUFILEdBQUcsQ0FBUTtRQUFTLFVBQUssR0FBTCxLQUFLLENBQVM7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFTO0lBQUksQ0FBQztDQUNuRjtBQUNELE1BQU0sT0FBTyxzQkFBc0I7SUFHakMsWUFBbUIsU0FBb0I7UUFBcEIsY0FBUyxHQUFULFNBQVMsQ0FBVztJQUFJLENBQUM7Q0FDN0M7QUFFRCxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLFlBQW1CLElBQVksRUFBUyxLQUFjO1FBQW5DLFNBQUksR0FBSixJQUFJLENBQVE7UUFBUyxVQUFLLEdBQUwsS0FBSyxDQUFTO0lBQUksQ0FBQztDQUM1RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBBWFBMb2dvQ29uZmlnIHsgfVxuXG5leHBvcnQgY2xhc3MgQVhQSW1hZ2VVcmxMb2dvQ29uZmlnIGltcGxlbWVudHMgQVhQTG9nb0NvbmZpZyB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB1cmw6IHN0cmluZywgcHVibGljIHdpZHRoPzogbnVtYmVyLCBwdWJsaWMgaGVpZ2h0PzogbnVtYmVyKSB7IH1cbn1cbmV4cG9ydCBjbGFzcyBBWFBDb21wb25lbnRMb2dvQ29uZmlnIGltcGxlbWVudHMgQVhQTG9nb0NvbmZpZyB7XG4gIGhlaWdodD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgd2lkdGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb21wb25lbnQ6IFR5cGU8YW55PikgeyB9XG59XG5cbmV4cG9ydCBjbGFzcyBBWFBJY29uTG9nb0NvbmZpZyBpbXBsZW1lbnRzIEFYUExvZ29Db25maWcge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgaWNvbjogc3RyaW5nLCBwdWJsaWMgY29sb3I/OiBzdHJpbmcpIHsgfVxufVxuXG5cblxuIl19","export var AXPPlatformScope;\n(function (AXPPlatformScope) {\n AXPPlatformScope[\"Environment\"] = \"C\";\n AXPPlatformScope[\"Global\"] = \"G\";\n AXPPlatformScope[\"Platform\"] = \"P\";\n AXPPlatformScope[\"Tenant\"] = \"T\";\n AXPPlatformScope[\"User\"] = \"U\";\n})(AXPPlatformScope || (AXPPlatformScope = {}));\n;\nexport function resolvePlatformScopeKey(name) {\n const scopeMap = {\n environment: AXPPlatformScope.Environment,\n global: AXPPlatformScope.Global,\n platform: AXPPlatformScope.Platform,\n tenant: AXPPlatformScope.Tenant,\n user: AXPPlatformScope.User,\n };\n return scopeMap[name.toLowerCase()] ?? AXPPlatformScope.User;\n}\nexport function resolvePlatformScopeName(scope) {\n const scopeMap = {\n C: 'environment',\n G: 'global',\n P: 'platform',\n T: 'tenant',\n U: 'user',\n };\n return scopeMap[scope] ?? 'user';\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NvcGUudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2NvcmUvc3JjL2xpYi90eXBlcy9zY29wZS50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxNQUFNLENBQU4sSUFBWSxnQkFNWDtBQU5ELFdBQVksZ0JBQWdCO0lBQ3hCLHFDQUFpQixDQUFBO0lBQ2pCLGdDQUFZLENBQUE7SUFDWixrQ0FBYyxDQUFBO0lBQ2QsZ0NBQVksQ0FBQTtJQUNaLDhCQUFVLENBQUE7QUFDZCxDQUFDLEVBTlcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQU0zQjtBQUFBLENBQUM7QUFFRixNQUFNLFVBQVUsdUJBQXVCLENBQUMsSUFBWTtJQUNoRCxNQUFNLFFBQVEsR0FBd0M7UUFDbEQsV0FBVyxFQUFFLGdCQUFnQixDQUFDLFdBQVc7UUFDekMsTUFBTSxFQUFFLGdCQUFnQixDQUFDLE1BQU07UUFDL0IsUUFBUSxFQUFFLGdCQUFnQixDQUFDLFFBQVE7UUFDbkMsTUFBTSxFQUFFLGdCQUFnQixDQUFDLE1BQU07UUFDL0IsSUFBSSxFQUFFLGdCQUFnQixDQUFDLElBQUk7S0FDOUIsQ0FBQztJQUNGLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQztBQUNqRSxDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QixDQUFDLEtBQTBCO0lBQy9ELE1BQU0sUUFBUSxHQUF3QztRQUNsRCxDQUFDLEVBQUUsYUFBYTtRQUNoQixDQUFDLEVBQUUsUUFBUTtRQUNYLENBQUMsRUFBRSxVQUFVO1FBQ2IsQ0FBQyxFQUFFLFFBQVE7UUFDWCxDQUFDLEVBQUUsTUFBTTtLQUNaLENBQUM7SUFDRixPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUM7QUFDckMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEFYUFBsYXRmb3JtU2NvcGVLZXkgPSAnQycgfCAnRycgfCAnUCcgfCAnVCcgfCAnVSc7XG5leHBvcnQgZW51bSBBWFBQbGF0Zm9ybVNjb3BlIHtcbiAgICBFbnZpcm9ubWVudCA9ICdDJyxcbiAgICBHbG9iYWwgPSAnRycsXG4gICAgUGxhdGZvcm0gPSAnUCcsXG4gICAgVGVuYW50ID0gJ1QnLFxuICAgIFVzZXIgPSAnVSdcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlUGxhdGZvcm1TY29wZUtleShuYW1lOiBzdHJpbmcpOiBBWFBQbGF0Zm9ybVNjb3BlS2V5IHtcbiAgICBjb25zdCBzY29wZU1hcDogUmVjb3JkPHN0cmluZywgQVhQUGxhdGZvcm1TY29wZUtleT4gPSB7XG4gICAgICAgIGVudmlyb25tZW50OiBBWFBQbGF0Zm9ybVNjb3BlLkVudmlyb25tZW50LFxuICAgICAgICBnbG9iYWw6IEFYUFBsYXRmb3JtU2NvcGUuR2xvYmFsLFxuICAgICAgICBwbGF0Zm9ybTogQVhQUGxhdGZvcm1TY29wZS5QbGF0Zm9ybSxcbiAgICAgICAgdGVuYW50OiBBWFBQbGF0Zm9ybVNjb3BlLlRlbmFudCxcbiAgICAgICAgdXNlcjogQVhQUGxhdGZvcm1TY29wZS5Vc2VyLFxuICAgIH07XG4gICAgcmV0dXJuIHNjb3BlTWFwW25hbWUudG9Mb3dlckNhc2UoKV0gPz8gQVhQUGxhdGZvcm1TY29wZS5Vc2VyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVBsYXRmb3JtU2NvcGVOYW1lKHNjb3BlOiBBWFBQbGF0Zm9ybVNjb3BlS2V5KTogc3RyaW5nIHtcbiAgICBjb25zdCBzY29wZU1hcDogUmVjb3JkPEFYUFBsYXRmb3JtU2NvcGVLZXksIHN0cmluZz4gPSB7XG4gICAgICAgIEM6ICdlbnZpcm9ubWVudCcsXG4gICAgICAgIEc6ICdnbG9iYWwnLFxuICAgICAgICBQOiAncGxhdGZvcm0nLFxuICAgICAgICBUOiAndGVuYW50JyxcbiAgICAgICAgVTogJ3VzZXInLFxuICAgIH07XG4gICAgcmV0dXJuIHNjb3BlTWFwW3Njb3BlXSA/PyAndXNlcic7XG59Il19","export var AXPExportTemplateToken;\n(function (AXPExportTemplateToken) {\n AXPExportTemplateToken[\"Date\"] = \"{date}\";\n AXPExportTemplateToken[\"Time\"] = \"{time}\";\n AXPExportTemplateToken[\"User\"] = \"{user}\";\n AXPExportTemplateToken[\"ReportTitle\"] = \"{title}\";\n AXPExportTemplateToken[\"UUID\"] = \"{uuid}\";\n})(AXPExportTemplateToken || (AXPExportTemplateToken = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9jb3JlL3NyYy9saWIvdHlwZXMvZXhwb3J0LnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQStFQSxNQUFNLENBQU4sSUFBWSxzQkFNWDtBQU5ELFdBQVksc0JBQXNCO0lBQzlCLHlDQUFlLENBQUE7SUFDZix5Q0FBZSxDQUFBO0lBQ2YseUNBQWUsQ0FBQTtJQUNmLGlEQUF1QixDQUFBO0lBQ3ZCLHlDQUFlLENBQUE7QUFDbkIsQ0FBQyxFQU5XLHNCQUFzQixLQUF0QixzQkFBc0IsUUFNakMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmV4cG9ydCBpbnRlcmZhY2UgQVhQRXhwb3J0T3B0aW9ucyB7XG4gICAgZmlsZU5hbWVUZW1wbGF0ZT86IHN0cmluZzsgLy8g2YXYq9in2YQ6IFwiUmVwb3J0X3tkYXRlfV97dXNlcn1cIlxuXG4gICAgcGRmPzogQVhQRXhwb3J0UGRmT3B0aW9ucztcbiAgICBleGNlbD86IEFYUEV4cG9ydEV4Y2VsT3B0aW9ucztcbiAgICBjc3Y/OiBBWFBFeHBvcnRDc3ZPcHRpb25zO1xuICAgIHByaW50PzogQVhQRXhwb3J0UHJpbnRPcHRpb25zO1xufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRXhwb3J0UGRmT3B0aW9ucyB7XG4gICAgZW5hYmxlZDogYm9vbGVhbjtcblxuICAgIHBhZ2VTaXplPzogJ0E0JyB8ICdBMycgfCAnTGV0dGVyJyB8ICdMZWdhbCc7XG4gICAgb3JpZW50YXRpb24/OiAncG9ydHJhaXQnIHwgJ2xhbmRzY2FwZSc7XG5cbiAgICBtYXJnaW4/OiBudW1iZXIgfCB7XG4gICAgICAgIHRvcDogbnVtYmVyO1xuICAgICAgICBib3R0b206IG51bWJlcjtcbiAgICAgICAgbGVmdDogbnVtYmVyO1xuICAgICAgICByaWdodDogbnVtYmVyO1xuICAgIH07XG5cbiAgICBmb250Pzogc3RyaW5nO1xuICAgIGZvbnRTaXplPzogbnVtYmVyO1xuXG4gICAgaGVhZGVyRW5hYmxlZD86IGJvb2xlYW47XG4gICAgZm9vdGVyRW5hYmxlZD86IGJvb2xlYW47XG4gICAgc2hvd1BhZ2VOdW1iZXJzPzogYm9vbGVhbjtcblxuICAgIHdhdGVybWFya1RleHQ/OiBzdHJpbmc7XG4gICAgd2F0ZXJtYXJrT3BhY2l0eT86IG51bWJlcjtcblxuICAgIGNvbXByZXNzaW9uPzogYm9vbGVhbjtcbiAgICBlbWJlZEltYWdlcz86IGJvb2xlYW47XG59XG5cblxuZXhwb3J0IGludGVyZmFjZSBBWFBFeHBvcnRFeGNlbE9wdGlvbnMge1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBzaGVldE5hbWU/OiBzdHJpbmc7XG4gICAgaW5jbHVkZUZpbHRlcnM/OiBib29sZWFuO1xuICAgIGZyZWV6ZUhlYWRlcj86IGJvb2xlYW47XG4gICAgYXV0b0ZpdENvbHVtbnM/OiBib29sZWFuO1xuXG4gICAgc3R5bGU/OiB7XG4gICAgICAgIGhlYWRlckNvbG9yPzogc3RyaW5nO1xuICAgICAgICBmb250Pzogc3RyaW5nO1xuICAgICAgICBmb250U2l6ZT86IG51bWJlcjtcbiAgICAgICAgbnVtYmVyRm9ybWF0PzogJ2F1dG8nIHwgJ2N1cnJlbmN5JyB8ICdwZXJjZW50JyB8ICdkZWNpbWFsJztcbiAgICB9O1xuXG4gICAgc3VtbWFyeVJvd0VuYWJsZWQ/OiBib29sZWFuO1xuICAgIGV4cG9ydEhpZGRlbkNvbHVtbnM/OiBib29sZWFuO1xufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRXhwb3J0Q3N2T3B0aW9ucyB7XG4gICAgZW5hYmxlZDogYm9vbGVhbjtcblxuICAgIGRlbGltaXRlcj86ICcsJyB8ICc7JyB8ICdcXHQnO1xuICAgIGluY2x1ZGVIZWFkZXJzPzogYm9vbGVhbjtcbiAgICBxdW90ZVZhbHVlcz86IGJvb2xlYW47XG4gICAgZW5jb2Rpbmc/OiAndXRmLTgnIHwgJ3V0Zi0xNicgfCAnaXNvLTg4NTktMSc7XG59XG5cblxuZXhwb3J0IGludGVyZmFjZSBBWFBFeHBvcnRQcmludE9wdGlvbnMge1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBpbmNsdWRlSGVhZGVyPzogYm9vbGVhbjtcbiAgICBpbmNsdWRlRm9vdGVyPzogYm9vbGVhbjtcbiAgICBzaG93UGFnZUJyZWFrcz86IGJvb2xlYW47XG4gICAgY3VzdG9tQ3NzVXJsPzogc3RyaW5nO1xufVxuXG5cbmV4cG9ydCBlbnVtIEFYUEV4cG9ydFRlbXBsYXRlVG9rZW4ge1xuICAgIERhdGUgPSAne2RhdGV9JyxcbiAgICBUaW1lID0gJ3t0aW1lfScsXG4gICAgVXNlciA9ICd7dXNlcn0nLFxuICAgIFJlcG9ydFRpdGxlID0gJ3t0aXRsZX0nLFxuICAgIFVVSUQgPSAne3V1aWR9Jyxcbn1cbiJdfQ==","import { AXCalendarService } from '@acorex/core/date-time';\nimport { inject, Pipe, signal } from '@angular/core';\nimport { interval } from 'rxjs';\nimport { map, startWith } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nexport class AXPCountdownPipe {\n constructor() {\n this.calendarService = inject(AXCalendarService);\n this.countdownSignal = signal(this.setupTimer(), ...(ngDevMode ? [{ debugName: \"countdownSignal\" }] : []));\n this.targetDate = 0;\n this.prevValue = 0;\n }\n transform(value) {\n if (this.prevValue != value) {\n this.prevValue = value;\n const expireTime = this.calendarService.calendar.add(new Date(), 'second', value).date;\n this.updateTargetDate(expireTime.toISOString());\n }\n return this.countdownSignal();\n }\n setupTimer() {\n return interval(1000).pipe(startWith(0), map(() => {\n const diff = this.targetDate - new Date().getTime();\n if (diff < 0) {\n return \"Time's up!\";\n }\n const times = [86400, 3600, 60, 1].map((seconds) => Math.floor((diff / 1000 / seconds) % (seconds === 1 ? 60 : 24)));\n const labels = ['d', 'h', 'm', 's'];\n return times\n .map((t, i) => (t > 0 || i === 3 ? `${t}${labels[i]}` : ''))\n .join(' ')\n .trim();\n }));\n }\n updateTargetDate(value) {\n this.targetDate = new Date(value).getTime();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPCountdownPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPCountdownPipe, isStandalone: true, name: \"countdown\", pure: false }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPCountdownPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'countdown',\n pure: false,\n standalone: true,\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRkb3duLXRpbWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9jb3JlL3NyYy9saWIvdXRpbHMvY291bnRkb3duLXRpbWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFpQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLFFBQVEsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQU9oRCxNQUFNLE9BQU8sZ0JBQWdCO0lBTDdCO1FBTVUsb0JBQWUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUU1QyxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLDJEQUFDLENBQUM7UUFFNUMsZUFBVSxHQUFXLENBQUMsQ0FBQztRQUN2QixjQUFTLEdBQUcsQ0FBQyxDQUFDO0tBaUN2QjtJQS9CQyxTQUFTLENBQUMsS0FBYTtRQUNyQixJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksS0FBSyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDdkIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQztZQUN2RixJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTyxVQUFVO1FBQ2hCLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FDeEIsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUNaLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEQsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2IsT0FBTyxZQUFZLENBQUM7WUFDdEIsQ0FBQztZQUVELE1BQU0sS0FBSyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JILE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDcEMsT0FBTyxLQUFLO2lCQUNULEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQzNELElBQUksQ0FBQyxHQUFHLENBQUM7aUJBQ1QsSUFBSSxFQUFFLENBQUM7UUFDWixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVPLGdCQUFnQixDQUFDLEtBQWE7UUFDcEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM5QyxDQUFDOytHQXRDVSxnQkFBZ0I7NkdBQWhCLGdCQUFnQjs7NEZBQWhCLGdCQUFnQjtrQkFMNUIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsV0FBVztvQkFDakIsSUFBSSxFQUFFLEtBQUs7b0JBQ1gsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhDYWxlbmRhclNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvZGF0ZS10aW1lJztcbmltcG9ydCB7IGluamVjdCwgUGlwZSwgUGlwZVRyYW5zZm9ybSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbnRlcnZhbCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2NvdW50ZG93bicsXG4gIHB1cmU6IGZhbHNlLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBDb3VudGRvd25QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHByaXZhdGUgY2FsZW5kYXJTZXJ2aWNlID0gaW5qZWN0KEFYQ2FsZW5kYXJTZXJ2aWNlKTtcblxuICBwcml2YXRlIGNvdW50ZG93blNpZ25hbCA9IHNpZ25hbCh0aGlzLnNldHVwVGltZXIoKSk7XG5cbiAgcHJpdmF0ZSB0YXJnZXREYXRlOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIHByZXZWYWx1ZSA9IDA7XG5cbiAgdHJhbnNmb3JtKHZhbHVlOiBudW1iZXIpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIGlmICh0aGlzLnByZXZWYWx1ZSAhPSB2YWx1ZSkge1xuICAgICAgdGhpcy5wcmV2VmFsdWUgPSB2YWx1ZTtcbiAgICAgIGNvbnN0IGV4cGlyZVRpbWUgPSB0aGlzLmNhbGVuZGFyU2VydmljZS5jYWxlbmRhci5hZGQobmV3IERhdGUoKSwgJ3NlY29uZCcsIHZhbHVlKS5kYXRlO1xuICAgICAgdGhpcy51cGRhdGVUYXJnZXREYXRlKGV4cGlyZVRpbWUudG9JU09TdHJpbmcoKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvdW50ZG93blNpZ25hbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFRpbWVyKCkge1xuICAgIHJldHVybiBpbnRlcnZhbCgxMDAwKS5waXBlKFxuICAgICAgc3RhcnRXaXRoKDApLFxuICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgY29uc3QgZGlmZiA9IHRoaXMudGFyZ2V0RGF0ZSAtIG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICBpZiAoZGlmZiA8IDApIHtcbiAgICAgICAgICByZXR1cm4gXCJUaW1lJ3MgdXAhXCI7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0aW1lcyA9IFs4NjQwMCwgMzYwMCwgNjAsIDFdLm1hcCgoc2Vjb25kcykgPT4gTWF0aC5mbG9vcigoZGlmZiAvIDEwMDAgLyBzZWNvbmRzKSAlIChzZWNvbmRzID09PSAxID8gNjAgOiAyNCkpKTtcbiAgICAgICAgY29uc3QgbGFiZWxzID0gWydkJywgJ2gnLCAnbScsICdzJ107XG4gICAgICAgIHJldHVybiB0aW1lc1xuICAgICAgICAgIC5tYXAoKHQsIGkpID0+ICh0ID4gMCB8fCBpID09PSAzID8gYCR7dH0ke2xhYmVsc1tpXX1gIDogJycpKVxuICAgICAgICAgIC5qb2luKCcgJylcbiAgICAgICAgICAudHJpbSgpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVUYXJnZXREYXRlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhcmdldERhdGUgPSBuZXcgRGF0ZSh2YWx1ZSkuZ2V0VGltZSgpO1xuICB9XG59XG4iXX0=","import { endsWith, get, gt, gte, includes, isEmpty, isEqual, isNil, lt, lte, orderBy, startsWith } from 'lodash-es';\nconst loggingEnabled = false; // Set to true to enable logging, false to disable\nfunction applyCondition(item, condition) {\n const rawValue = condition.field ? get(item, condition.field) : null;\n const itemValue = typeof rawValue === 'string' ? rawValue.toLowerCase() : rawValue;\n const conditionValue = typeof condition.value === 'string' ? condition.value.toLowerCase() : condition.value;\n // Conditional Logging for debugging\n if (loggingEnabled) {\n console.log('Condition:', condition);\n console.log('Item Value:', itemValue);\n console.log('Condition Value:', conditionValue);\n }\n let result;\n const valueToCompare = isNil(condition.field) || condition.field === '' ? conditionValue : itemValue;\n const conditionType = condition?.operator?.type;\n if (!conditionType) {\n return true;\n }\n const op = String(conditionType);\n switch (op) {\n case 'equal':\n case 'eq':\n result = isEqual(valueToCompare, conditionValue);\n if (loggingEnabled) {\n console.log('Equal check result:', result);\n }\n break;\n case 'notEqual':\n case 'ne':\n case 'neq':\n result = !isEqual(valueToCompare, conditionValue);\n if (loggingEnabled) {\n console.log('Not equal check result:', result);\n }\n break;\n case 'greaterThan':\n case 'gt':\n result = gt(valueToCompare, conditionValue);\n if (loggingEnabled) {\n console.log('Greater than check result:', result);\n }\n break;\n case 'lessThan':\n case 'lt':\n result = lt(valueToCompare, conditionValue);\n if (loggingEnabled) {\n console.log('Less than check result:', result);\n }\n break;\n case 'greaterThanOrEqual':\n case 'gte':\n result = gte(valueToCompare, conditionValue);\n if (loggingEnabled) {\n console.log('Greater than or equal check result:', result);\n }\n break;\n case 'lessThanOrEqual':\n case 'lte':\n result = lte(valueToCompare, conditionValue);\n if (loggingEnabled) {\n console.log('Less than or equal check result:', result);\n }\n break;\n case 'contains':\n if (typeof valueToCompare === 'string') {\n result = includes(valueToCompare, conditionValue);\n }\n else if (Array.isArray(valueToCompare)) {\n result = includes(valueToCompare.map((val) => val.toString().toLowerCase()), conditionValue);\n }\n else {\n result = false;\n }\n if (loggingEnabled) {\n console.log('Contains check result:', result);\n }\n break;\n case 'in':\n if (Array.isArray(conditionValue)) {\n if (typeof valueToCompare === 'string') {\n result = conditionValue.some(val => typeof val === 'string' ? val.toLowerCase() === valueToCompare : val === valueToCompare);\n }\n else if (Array.isArray(valueToCompare)) {\n result = valueToCompare.some(val => conditionValue.some(condVal => typeof val === 'string' && typeof condVal === 'string'\n ? val.toLowerCase() === condVal.toLowerCase()\n : val === condVal));\n }\n else {\n result = conditionValue.includes(valueToCompare);\n }\n }\n else {\n result = false;\n }\n if (loggingEnabled) {\n console.log('In check result:', result);\n }\n break;\n case 'notContains':\n if (typeof valueToCompare === 'string') {\n result = !includes(valueToCompare, conditionValue);\n }\n else if (Array.isArray(valueToCompare)) {\n result = !includes(valueToCompare.map((val) => val.toString().toLowerCase()), conditionValue);\n }\n else {\n result = false;\n }\n if (loggingEnabled) {\n console.log('Not contains check result:', result);\n }\n break;\n case 'startsWith':\n result = typeof valueToCompare === 'string' && startsWith(valueToCompare, conditionValue);\n if (loggingEnabled) {\n console.log('Starts with check result:', result);\n }\n break;\n case 'endsWith':\n result = typeof valueToCompare === 'string' && endsWith(valueToCompare, conditionValue);\n if (loggingEnabled) {\n console.log('Ends with check result:', result);\n }\n break;\n case 'isEmpty':\n result = isEmpty(valueToCompare);\n if (loggingEnabled) {\n console.log('Is empty check result:', result);\n }\n break;\n case 'isNull':\n result = isNil(valueToCompare);\n if (loggingEnabled) {\n console.log('Is null check result:', result);\n }\n break;\n case 'isNotEmpty':\n result = !isEmpty(valueToCompare);\n if (loggingEnabled) {\n console.log('Is not empty check result:', result);\n }\n break;\n case 'between':\n result = !isNil(valueToCompare) && valueToCompare >= condition.value.from && valueToCompare <= condition.value.to;\n if (loggingEnabled) {\n console.log('Between check result:', result);\n }\n break;\n default:\n result = true;\n if (loggingEnabled) {\n console.log('Default case, returning true');\n }\n }\n // Apply negative flag if present on operator (invert the result)\n const isNegative = !!condition?.operator?.negative;\n return isNegative ? !result : result;\n}\nexport function applyFilterArray(dataArray, filters, logic = 'and') {\n if (filters && filters.length) {\n return dataArray.filter((item) => {\n if (logic === 'and') {\n return filters.every((f) => {\n return f.filters ? applyFilterArray([item], f.filters, f.logic).length > 0 : applyCondition(item, f);\n });\n }\n else {\n // logic === 'or'\n return filters.some((f) => {\n return f.filters ? applyFilterArray([item], f.filters, f.logic).length > 0 : applyCondition(item, f);\n });\n }\n });\n }\n else {\n return dataArray;\n }\n}\nexport function applySortArray(dataArray, sorts) {\n if (sorts && sorts.length > 0) {\n const sortFields = sorts.map((s) => s.field);\n const sortOrders = sorts.map((s) => s.dir);\n return orderBy(dataArray, sortFields, sortOrders);\n }\n else\n return dataArray;\n}\nexport function applyPagination(dataArray, skip, take) {\n return dataArray.slice(skip, skip + take);\n}\nexport async function applyQueryArray(dataArray, query) {\n let result = [...dataArray];\n // Apply filtering\n if (query.filter) {\n result = applyFilterArray(result, [query.filter], query.filter.logic ?? 'and');\n }\n // Store total count before pagination\n const total = result.length;\n // Apply sorting\n if (query.sort && query.sort.length > 0) {\n result = applySortArray(result, query.sort);\n }\n // Apply pagination\n result = applyPagination(result, query.skip, query.take);\n return {\n items: result,\n total,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1jb25kaXRpb25lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL3V0aWxzL2RhdGEtY29uZGl0aW9uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBILE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxDQUFDLGtEQUFrRDtBQUVoRixTQUFTLGNBQWMsQ0FBQyxJQUFTLEVBQUUsU0FBbUM7SUFDcEUsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNyRSxNQUFNLFNBQVMsR0FBRyxPQUFPLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQ25GLE1BQU0sY0FBYyxHQUFHLE9BQU8sU0FBUyxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7SUFFN0csb0NBQW9DO0lBQ3BDLElBQUksY0FBYyxFQUFFLENBQUM7UUFDbkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDckMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDdEMsT0FBTyxD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S0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFFNUIsZ0JBQWdCO0lBQ2hCLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN4QyxNQUFNLEdBQUcsY0FBYyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELG1CQUFtQjtJQUNuQixNQUFNLEdBQUcsZUFBZSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUV6RCxPQUFPO1FBQ0wsS0FBSyxFQUFFLE1BQU07UUFDYixLQUFLO0tBQ04sQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBWERhdGFTb3VyY2VDYWxsYmFja1Jlc3VsdCxcbiAgQVhEYXRhU291cmNlRmlsdGVyT3B0aW9uLFxuICBBWERhdGFTb3VyY2VMb2FkQ2FsbGJhY2ssXG4gIEFYRGF0YVNvdXJjZVF1ZXJ5LFxuICBBWERhdGFTb3VyY2VTb3J0T3B0aW9uLFxufSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgZW5kc1dpdGgsIGdldCwgZ3QsIGd0ZSwgaW5jbHVkZXMsIGlzRW1wdHksIGlzRXF1YWwsIGlzTmlsLCBsdCwgbHRlLCBvcmRlckJ5LCBzdGFydHNXaXRoIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuY29uc3QgbG9nZ2luZ0VuYWJsZWQgPSBmYWxzZTsgLy8gU2V0IHRvIHRydWUgdG8gZW5hYmxlIGxvZ2dpbmcsIGZhbHNlIHRvIGRpc2FibGVcblxuZnVuY3Rpb24gYXBwbHlDb25kaXRpb24oaXRlbTogYW55LCBjb25kaXRpb246IEFYRGF0YVNvdXJjZUZpbHRlck9wdGlvbikge1xuICBjb25zdCByYXdWYWx1ZSA9IGNvbmRpdGlvbi5maWVsZCA/IGdldChpdGVtLCBjb25kaXRpb24uZmllbGQpIDogbnVsbDtcbiAgY29uc3QgaXRlbVZhbHVlID0gdHlwZW9mIHJhd1ZhbHVlID09PSAnc3RyaW5nJyA/IHJhd1ZhbHVlLnRvTG93ZXJDYXNlKCkgOiByYXdWYWx1ZTtcbiAgY29uc3QgY29uZGl0aW9uVmFsdWUgPSB0eXBlb2YgY29uZGl0aW9uLnZhbHVlID09PSAnc3RyaW5nJyA/IGNvbmRpdGlvbi52YWx1ZS50b0xvd2VyQ2FzZSgpIDogY29uZGl0aW9uLnZhbHVlO1xuXG4gIC8vIENvbmRpdGlvbmFsIExvZ2dpbmcgZm9yIGRlYnVnZ2luZ1xuICBpZiAobG9nZ2luZ0VuYWJsZWQpIHtcbiAgICBjb25zb2xlLmxvZygnQ29uZGl0aW9uOicsIGNvbmRpdGlvbik7XG4gICAgY29uc29sZS5sb2coJ0l0ZW0gVmFsdWU6JywgaXRlbVZhbHVlKTtcbiAgICBjb25zb2xlLmxvZygnQ29uZGl0aW9uIFZhbHVlOicsIGNvbmRpdGlvblZhbHVlKTtcbiAgfVxuXG4gIGxldCByZXN1bHQ6IGJvb2xlYW47XG4gIGNvbnN0IHZhbHVlVG9Db21wYXJlID0gaXNOaWwoY29uZGl0aW9uLmZpZWxkKSB8fCBjb25kaXRpb24uZmllbGQgPT09ICcnID8gY29uZGl0aW9uVmFsdWUgOiBpdGVtVmFsdWU7XG4gIGNvbnN0IGNvbmRpdGlvblR5cGUgPSBjb25kaXRpb24/Lm9wZXJhdG9yPy50eXBlO1xuICBpZiAoIWNvbmRpdGlvblR5cGUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNvbnN0IG9wID0gU3RyaW5nKGNvbmRpdGlvblR5cGUpO1xuXG4gIHN3aXRjaCAob3ApIHtcbiAgICBjYXNlICdlcXVhbCc6XG4gICAgY2FzZSAnZXEnOlxuICAgICAgcmVzdWx0ID0gaXNFcXVhbCh2YWx1ZVRvQ29tcGFyZSwgY29uZGl0aW9uVmFsdWUpO1xuICAgICAgaWYgKGxvZ2dpbmdFbmFibGVkKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdFcXVhbCBjaGVjayByZXN1bHQ6JywgcmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ25vdEVxdWFsJzpcbiAgICBjYXNlICduZSc6XG4gICAgY2FzZSAnbmVxJzpcbiAgICAgIHJlc3VsdCA9ICFpc0VxdWFsKHZhbHVlVG9Db21wYXJlLCBjb25kaXRpb25WYWx1ZSk7XG4gICAgICBpZiAobG9nZ2luZ0VuYWJsZWQpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ05vdCBlcXVhbCBjaGVjayByZXN1bHQ6JywgcmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2dyZWF0ZXJUaGFuJzpcbiAgICBjYXNlICdndCc6XG4gICAgICByZXN1bHQgPSBndCh2YWx1ZVRvQ29tcGFyZSwgY29uZGl0aW9uVmFsdWUpO1xuICAgICAgaWYgKGxvZ2dpbmdFbmFibGVkKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdHcmVhdGVyIHRoYW4gY2hlY2sgcmVzdWx0OicsIHJlc3VsdCk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlICdsZXNzVGhhbic6XG4gICAgY2FzZSAnbHQnOlxuICAgICAgcmVzdWx0ID0gbHQodmFsdWVUb0NvbXBhcmUsIGNvbmRpdGlvblZhbHVlKTtcbiAgICAgIGlmIChsb2dnaW5nRW5hYmxlZCkge1xuICAgICAgICBjb25zb2xlLmxvZygnTGVzcyB0aGFuIGNoZWNrIHJlc3VsdDonLCByZXN1bHQpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZ3JlYXRlclRoYW5PckVxdWFsJzpcbiAgICBjYXNlICdndGUnOlxuICAgICAgcmVzdWx0ID0gZ3RlKHZhbHVlVG9Db21wYXJlLCBjb25kaXRpb25WYWx1ZSk7XG4gICAgICBpZiAobG9nZ2luZ0VuYWJsZWQpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ0dyZWF0ZXIgdGhhbiBvciBlcXVhbCBjaGVjayByZXN1bHQ6JywgcmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2xlc3NUaGFuT3JFcXVhbCc6XG4gICAgY2FzZSAnbHRlJzpcbiAgICAgIHJlc3VsdCA9IGx0ZSh2YWx1ZVRvQ29tcGFyZSwgY29uZGl0aW9uVmFsdWUpO1xuICAgICAgaWYgKGxvZ2dpbmdFbmFibGVkKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdMZXNzIHRoYW4gb3IgZXF1YWwgY2hlY2sgcmVzdWx0OicsIHJlc3VsdCk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlICdjb250YWlucyc6XG4gICAgICBpZiAodHlwZW9mIHZhbHVlVG9Db21wYXJlID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXN1bHQgPSBpbmNsdWRlcyh2YWx1ZVRvQ29tcGFyZSwgY29uZGl0aW9uVmFsdWUpO1xuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlVG9Db21wYXJlKSkge1xuICAgICAgICByZXN1bHQgPSBpbmNsdWRlcyhcbiAgICAgICAgICB2YWx1ZVRvQ29tcGFyZS5tYXAoKHZhbCkgPT4gdmFsLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSksXG4gICAgICAgICAgY29uZGl0aW9uVmFsdWUsXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChsb2dnaW5nRW5hYmxlZCkge1xuICAgICAgICBjb25zb2xlLmxvZygnQ29udGFpbnMgY2hlY2sgcmVzdWx0OicsIHJlc3VsdCk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlICdpbic6XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShjb25kaXRpb25WYWx1ZSkpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZVRvQ29tcGFyZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICByZXN1bHQgPSBjb25kaXRpb25WYWx1ZS5zb21lKHZhbCA9PlxuICAgICAgICAgICAgdHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgPyB2YWwudG9Mb3dlckNhc2UoKSA9PT0gdmFsdWVUb0NvbXBhcmUgOiB2YWwgPT09IHZhbHVlVG9Db21wYXJlXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlVG9Db21wYXJlKSkge1xuICAgICAgICAgIHJlc3VsdCA9IHZhbHVlVG9Db21wYXJlLnNvbWUodmFsID0+XG4gICAgICAgICAgICBjb25kaXRpb25WYWx1ZS5zb21lKGNvbmRWYWwgPT5cbiAgICAgICAgICAgICAgdHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIGNvbmRWYWwgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgPyB2YWwudG9Mb3dlckNhc2UoKSA9PT0gY29uZFZhbC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgOiB2YWwgPT09IGNvbmRWYWxcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IGNvbmRpdGlvblZhbHVlLmluY2x1ZGVzKHZhbHVlVG9Db21wYXJlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAobG9nZ2luZ0VuYWJsZWQpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ0luIGNoZWNrIHJlc3VsdDonLCByZXN1bHQpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnbm90Q29udGFpbnMnOlxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZVRvQ29tcGFyZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmVzdWx0ID0gIWluY2x1ZGVzKHZhbHVlVG9Db21wYXJlLCBjb25kaXRpb25WYWx1ZSk7XG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWVUb0NvbXBhcmUpKSB7XG4gICAgICAgIHJlc3VsdCA9ICFpbmNsdWRlcyhcbiAgICAgICAgICB2YWx1ZVRvQ29tcGFyZS5tYXAoKHZhbCkgPT4gdmFsLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSksXG4gICAgICAgICAgY29uZGl0aW9uVmFsdWUsXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChsb2dnaW5nRW5hYmxlZCkge1xuICAgICAgICBjb25zb2xlLmxvZygnTm90IGNvbnRhaW5zIGNoZWNrIHJlc3VsdDonLCByZXN1bHQpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnc3RhcnRzV2l0aCc6XG4gICAgICByZXN1bHQgPSB0eXBlb2YgdmFsdWVUb0NvbXBhcmUgPT09ICdzdHJpbmcnICYmIHN0YXJ0c1dpdGgodmFsdWVUb0NvbXBhcmUsIGNvbmRpdGlvblZhbHVlIGFzIHN0cmluZyk7XG4gICAgICBpZiAobG9nZ2luZ0VuYWJsZWQpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ1N0YXJ0cyB3aXRoIGNoZWNrIHJlc3VsdDonLCByZXN1bHQpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZW5kc1dpdGgnOlxuICAgICAgcmVzdWx0ID0gdHlwZW9mIHZhbHVlVG9Db21wYXJlID09PSAnc3RyaW5nJyAmJiBlbmRzV2l0aCh2YWx1ZVRvQ29tcGFyZSwgY29uZGl0aW9uVmFsdWUgYXMgc3RyaW5nKTtcbiAgICAgIGlmIChsb2dnaW5nRW5hYmxlZCkge1xuICAgICAgICBjb25zb2xlLmxvZygnRW5kcyB3aXRoIGNoZWNrIHJlc3VsdDonLCByZXN1bHQpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnaXNFbXB0eSc6XG4gICAgICByZXN1bHQgPSBpc0VtcHR5KHZhbHVlVG9Db21wYXJlKTtcbiAgICAgIGlmIChsb2dnaW5nRW5hYmxlZCkge1xuICAgICAgICBjb25zb2xlLmxvZygnSXMgZW1wdHkgY2hlY2sgcmVzdWx0OicsIHJlc3VsdCk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlICdpc051bGwnOlxuICAgICAgcmVzdWx0ID0gaXNOaWwodmFsdWVUb0NvbXBhcmUpO1xuICAgICAgaWYgKGxvZ2dpbmdFbmFibGVkKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdJcyBudWxsIGNoZWNrIHJlc3VsdDonLCByZXN1bHQpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnaXNOb3RFbXB0eSc6XG4gICAgICByZXN1bHQgPSAhaXNFbXB0eSh2YWx1ZVRvQ29tcGFyZSk7XG4gICAgICBpZiAobG9nZ2luZ0VuYWJsZWQpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ0lzIG5vdCBlbXB0eSBjaGVjayByZXN1bHQ6JywgcmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2JldHdlZW4nOlxuICAgICAgcmVzdWx0ID0gIWlzTmlsKHZhbHVlVG9Db21wYXJlKSAmJiB2YWx1ZVRvQ29tcGFyZSA+PSAoY29uZGl0aW9uLnZhbHVlIGFzIHsgZnJvbTogbnVtYmVyOyB0bzogbnVtYmVyIH0pLmZyb20gJiYgdmFsdWVUb0NvbXBhcmUgPD0gKGNvbmRpdGlvbi52YWx1ZSBhcyB7IGZyb206IG51bWJlcjsgdG86IG51bWJlciB9KS50bztcbiAgICAgIGlmIChsb2dnaW5nRW5hYmxlZCkge1xuICAgICAgICBjb25zb2xlLmxvZygnQmV0d2VlbiBjaGVjayByZXN1bHQ6JywgcmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXN1bHQgPSB0cnVlO1xuICAgICAgaWYgKGxvZ2dpbmdFbmFibGVkKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdEZWZhdWx0IGNhc2UsIHJldHVybmluZyB0cnVlJyk7XG4gICAgICB9XG4gIH1cblxuICAvLyBBcHBseSBuZWdhdGl2ZSBmbGFnIGlmIHByZXNlbnQgb24gb3BlcmF0b3IgKGludmVydCB0aGUgcmVzdWx0KVxuICBjb25zdCBpc05lZ2F0aXZlID0gISFjb25kaXRpb24/Lm9wZXJhdG9yPy5uZWdhdGl2ZTtcbiAgcmV0dXJuIGlzTmVnYXRpdmUgPyAhcmVzdWx0IDogcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlGaWx0ZXJBcnJheShcbiAgZGF0YUFycmF5OiBhbnlbXSxcbiAgZmlsdGVycz86IEFYRGF0YVNvdXJjZUZpbHRlck9wdGlvbltdLFxuICBsb2dpYzogJ2FuZCcgfCAnb3InID0gJ2FuZCcsXG4pOiBhbnlbXSB7XG4gIGlmIChmaWx0ZXJzICYmIGZpbHRlcnMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGRhdGFBcnJheS5maWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgIGlmIChsb2dpYyA9PT0gJ2FuZCcpIHtcbiAgICAgICAgcmV0dXJuIGZpbHRlcnMuZXZlcnkoKGYpID0+IHtcbiAgICAgICAgICByZXR1cm4gZi5maWx0ZXJzID8gYXBwbHlGaWx0ZXJBcnJheShbaXRlbV0sIGYuZmlsdGVycywgZi5sb2dpYykubGVuZ3RoID4gMCA6IGFwcGx5Q29uZGl0aW9uKGl0ZW0sIGYpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGxvZ2ljID09PSAnb3InXG4gICAgICAgIHJldHVybiBmaWx0ZXJzLnNvbWUoKGYpID0+IHtcbiAgICAgICAgICByZXR1cm4gZi5maWx0ZXJzID8gYXBwbHlGaWx0ZXJBcnJheShbaXRlbV0sIGYuZmlsdGVycywgZi5sb2dpYykubGVuZ3RoID4gMCA6IGFwcGx5Q29uZGl0aW9uKGl0ZW0sIGYpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZGF0YUFycmF5O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVNvcnRBcnJheShkYXRhQXJyYXk6IGFueSwgc29ydHM6IEFYRGF0YVNvdXJjZVNvcnRPcHRpb25bXSkge1xuICBpZiAoc29ydHMgJiYgc29ydHMubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IHNvcnRGaWVsZHMgPSBzb3J0cy5tYXAoKHMpID0+IHMuZmllbGQpO1xuICAgIGNvbnN0IHNvcnRPcmRlcnMgPSBzb3J0cy5tYXAoKHMpID0+IHMuZGlyKTtcbiAgICByZXR1cm4gb3JkZXJCeShkYXRhQXJyYXksIHNvcnRGaWVsZHMsIHNvcnRPcmRlcnMpO1xuICB9IGVsc2UgcmV0dXJuIGRhdGFBcnJheTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UGFnaW5hdGlvbjxUPihkYXRhQXJyYXk6IFRbXSwgc2tpcDogbnVtYmVyLCB0YWtlOiBudW1iZXIpOiBUW10ge1xuICByZXR1cm4gZGF0YUFycmF5LnNsaWNlKHNraXAsIHNraXAgKyB0YWtlKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwcGx5UXVlcnlBcnJheTxUPihcbiAgZGF0YUFycmF5OiBUW10sXG4gIHF1ZXJ5OiBBWERhdGFTb3VyY2VRdWVyeSxcbik6IFByb21pc2U8QVhEYXRhU291cmNlQ2FsbGJhY2tSZXN1bHQ8VD4+IHtcbiAgbGV0IHJlc3VsdCA9IFsuLi5kYXRhQXJyYXldO1xuXG4gIC8vIEFwcGx5IGZpbHRlcmluZ1xuICBpZiAocXVlcnkuZmlsdGVyKSB7XG4gICAgcmVzdWx0ID0gYXBwbHlGaWx0ZXJBcnJheShyZXN1bHQsIFtxdWVyeS5maWx0ZXJdLCBxdWVyeS5maWx0ZXIubG9naWMgPz8gJ2FuZCcpO1xuICB9XG5cbiAgLy8gU3RvcmUgdG90YWwgY291bnQgYmVmb3JlIHBhZ2luYXRpb25cbiAgY29uc3QgdG90YWwgPSByZXN1bHQubGVuZ3RoO1xuXG4gIC8vIEFwcGx5IHNvcnRpbmdcbiAgaWYgKHF1ZXJ5LnNvcnQgJiYgcXVlcnkuc29ydC5sZW5ndGggPiAwKSB7XG4gICAgcmVzdWx0ID0gYXBwbHlTb3J0QXJyYXkocmVzdWx0LCBxdWVyeS5zb3J0KTtcbiAgfVxuXG4gIC8vIEFwcGx5IHBhZ2luYXRpb25cbiAgcmVzdWx0ID0gYXBwbHlQYWdpbmF0aW9uKHJlc3VsdCwgcXVlcnkuc2tpcCwgcXVlcnkudGFrZSk7XG5cbiAgcmV0dXJuIHtcbiAgICBpdGVtczogcmVzdWx0LFxuICAgIHRvdGFsLFxuICB9O1xufVxuIl19","import { computed, Injectable, signal } from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\n//#region ---- Type Definitions ----\n/**\n * Screen Size Enum\n */\nexport var AXPScreenSize;\n(function (AXPScreenSize) {\n AXPScreenSize[\"Small\"] = \"small\";\n AXPScreenSize[\"Medium\"] = \"medium\";\n AXPScreenSize[\"Large\"] = \"large\";\n})(AXPScreenSize || (AXPScreenSize = {}));\n/**\n * Device Type Enum\n */\nexport var AXPDeviceType;\n(function (AXPDeviceType) {\n AXPDeviceType[\"Mobile\"] = \"mobile\";\n AXPDeviceType[\"Tablet\"] = \"tablet\";\n AXPDeviceType[\"Desktop\"] = \"desktop\";\n})(AXPDeviceType || (AXPDeviceType = {}));\n//#endregion\n//#region ---- Helper Functions ----\n/**\n * Get the initial screen size based on window width\n */\nconst getScreenSize = () => {\n const width = window.innerWidth;\n if (width <= 600)\n return AXPScreenSize.Small;\n if (width <= 1024)\n return AXPScreenSize.Medium;\n return AXPScreenSize.Large;\n};\n/**\n * Determine device type based on viewport width\n */\nconst getDeviceType = () => {\n const width = window.innerWidth;\n if (width <= 600) {\n return AXPDeviceType.Mobile;\n }\n else if (width <= 1024) {\n return AXPDeviceType.Tablet;\n }\n return AXPDeviceType.Desktop;\n};\n/**\n * Determine if the device supports touch\n */\nconst isTouchDevice = () => {\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n};\n//#endregion\n//#region ---- Device Service ----\n/**\n * Injectable service that provides reactive device and screen size information.\n * Monitors window resize events and updates signals accordingly.\n */\nexport class AXPDeviceService {\n //#endregion\n //#region ---- Constructor & Lifecycle ----\n constructor() {\n //#region ---- State Signals ----\n /**\n * Current screen size (Small, Medium, Large)\n */\n this.screenSize = signal(getScreenSize(), ...(ngDevMode ? [{ debugName: \"screenSize\" }] : []));\n /**\n * Current device type (Mobile, Tablet, Desktop)\n */\n this.deviceType = signal(getDeviceType(), ...(ngDevMode ? [{ debugName: \"deviceType\" }] : []));\n /**\n * Whether the device supports touch input\n */\n this.isTouchDevice = signal(isTouchDevice(), ...(ngDevMode ? [{ debugName: \"isTouchDevice\" }] : []));\n //#endregion\n //#region ---- Computed Signals ----\n /**\n * Whether the screen size is Small\n */\n this.isSmall = computed(() => this.screenSize() === AXPScreenSize.Small, ...(ngDevMode ? [{ debugName: \"isSmall\" }] : []));\n /**\n * Whether the screen size is Medium\n */\n this.isMedium = computed(() => this.screenSize() === AXPScreenSize.Medium, ...(ngDevMode ? [{ debugName: \"isMedium\" }] : []));\n /**\n * Whether the screen size is Large\n */\n this.isLarge = computed(() => this.screenSize() === AXPScreenSize.Large, ...(ngDevMode ? [{ debugName: \"isLarge\" }] : []));\n /**\n * Whether the device is Mobile\n */\n this.isMobileDevice = computed(() => this.deviceType() === AXPDeviceType.Mobile, ...(ngDevMode ? [{ debugName: \"isMobileDevice\" }] : []));\n /**\n * Whether the device is Tablet\n */\n this.isTabletDevice = computed(() => this.deviceType() === AXPDeviceType.Tablet, ...(ngDevMode ? [{ debugName: \"isTabletDevice\" }] : []));\n /**\n * Whether the device is Desktop\n */\n this.isDesktopDevice = computed(() => this.deviceType() === AXPDeviceType.Desktop, ...(ngDevMode ? [{ debugName: \"isDesktopDevice\" }] : []));\n /**\n * Whether the device supports touch (alias for isTouchDevice)\n */\n this.isTouchScreen = computed(() => this.isTouchDevice(), ...(ngDevMode ? [{ debugName: \"isTouchScreen\" }] : []));\n //#endregion\n //#region ---- Private Properties ----\n this._resizeListener = null;\n this._setupResizeListener();\n }\n //#endregion\n //#region ---- Private Methods ----\n /**\n * Update screen size and device type based on window width\n */\n _updateScreenSize() {\n const width = window.innerWidth;\n let newScreenSize;\n if (width <= 600) {\n newScreenSize = AXPScreenSize.Small;\n }\n else if (width <= 1024) {\n newScreenSize = AXPScreenSize.Medium;\n }\n else {\n newScreenSize = AXPScreenSize.Large;\n }\n // Determine device type based on width to keep it reactive to devtools emulation\n let newDeviceType;\n if (width <= 600) {\n newDeviceType = AXPDeviceType.Mobile;\n }\n else if (width <= 1024) {\n newDeviceType = AXPDeviceType.Tablet;\n }\n else {\n newDeviceType = AXPDeviceType.Desktop;\n }\n if (newScreenSize !== this.screenSize() || newDeviceType !== this.deviceType()) {\n this.screenSize.set(newScreenSize);\n this.deviceType.set(newDeviceType);\n }\n }\n /**\n * Set up event listener for window resize\n */\n _setupResizeListener() {\n this._resizeListener = fromEvent(window, 'resize')\n .pipe(debounceTime(250)) // 250ms debounce delay\n .subscribe(() => {\n this._updateScreenSize();\n });\n }\n /**\n * Remove event listener for window resize\n */\n _removeResizeListener() {\n if (this._resizeListener) {\n this._resizeListener.unsubscribe();\n this._resizeListener = null;\n }\n }\n //#endregion\n //#region ---- Public Methods ----\n /**\n * Clean up resources when service is destroyed\n */\n destroy() {\n this._removeResizeListener();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDeviceService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDeviceService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDeviceService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2NvcmUvc3JjL2xpYi91dGlscy9kZXZpY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUU5Qyx3Q0FBd0M7QUFFeEM7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxhQUlYO0FBSkQsV0FBWSxhQUFhO0lBQ3ZCLGdDQUFlLENBQUE7SUFDZixrQ0FBaUIsQ0FBQTtJQUNqQixnQ0FBZSxDQUFBO0FBQ2pCLENBQUMsRUFKVyxhQUFhLEtBQWIsYUFBYSxRQUl4QjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksYUFJWDtBQUpELFdBQVksYUFBYTtJQUN2QixrQ0FBaUIsQ0FBQTtJQUNqQixrQ0FBaUIsQ0FBQTtJQUNqQixvQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBSlcsYUFBYSxLQUFiLGFBQWEsUUFJeEI7QUFFRCxZQUFZO0FBRVosd0NBQXdDO0FBRXhDOztHQUVHO0FBQ0gsTUFBTSxhQUFhLEdBQUcsR0FBa0IsRUFBRTtJQUN4QyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO0lBQ2hDLElBQUksS0FBSyxJQUFJLEdBQUc7UUFBRSxPQUFPLGFBQWEsQ0FBQyxLQUFLLENBQUM7SUFDN0MsSUFBSSxLQUFLLElBQUksSUFBSTtRQUFFLE9BQU8sYUFBYSxDQUFDLE1BQU0sQ0FBQztJQUMvQyxPQUFPLGFBQWEsQ0FBQyxLQUFLLENBQUM7QUFDN0IsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLGFBQWEsR0FB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QUMscUJBQXFCLEVBQUUsQ0FBQztJQUMvQixDQUFDOytHQXhJVSxnQkFBZ0I7bUhBQWhCLGdCQUFnQixjQUZmLE1BQU07OzRGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vLyNyZWdpb24gLS0tLSAgIFR5cGUgRGVmaW5pdGlvbnMgICAtLS0tXG5cbi8qKlxuICogU2NyZWVuIFNpemUgRW51bVxuICovXG5leHBvcnQgZW51bSBBWFBTY3JlZW5TaXplIHtcbiAgU21hbGwgPSAnc21hbGwnLFxuICBNZWRpdW0gPSAnbWVkaXVtJyxcbiAgTGFyZ2UgPSAnbGFyZ2UnLFxufVxuXG4vKipcbiAqIERldmljZSBUeXBlIEVudW1cbiAqL1xuZXhwb3J0IGVudW0gQVhQRGV2aWNlVHlwZSB7XG4gIE1vYmlsZSA9ICdtb2JpbGUnLFxuICBUYWJsZXQgPSAndGFibGV0JyxcbiAgRGVza3RvcCA9ICdkZXNrdG9wJyxcbn1cblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgSGVscGVyIEZ1bmN0aW9ucyAgIC0tLS1cblxuLyoqXG4gKiBHZXQgdGhlIGluaXRpYWwgc2NyZWVuIHNpemUgYmFzZWQgb24gd2luZG93IHdpZHRoXG4gKi9cbmNvbnN0IGdldFNjcmVlblNpemUgPSAoKTogQVhQU2NyZWVuU2l6ZSA9PiB7XG4gIGNvbnN0IHdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gIGlmICh3aWR0aCA8PSA2MDApIHJldHVybiBBWFBTY3JlZW5TaXplLlNtYWxsO1xuICBpZiAod2lkdGggPD0gMTAyNCkgcmV0dXJuIEFYUFNjcmVlblNpemUuTWVkaXVtO1xuICByZXR1cm4gQVhQU2NyZWVuU2l6ZS5MYXJnZTtcbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lIGRldmljZSB0eXBlIGJhc2VkIG9uIHZpZXdwb3J0IHdpZHRoXG4gKi9cbmNvbnN0IGdldERldmljZVR5cGUgPSAoKTogQVhQRGV2aWNlVHlwZSA9PiB7XG4gIGNvbnN0IHdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gIGlmICh3aWR0aCA8PSA2MDApIHtcbiAgICByZXR1cm4gQVhQRGV2aWNlVHlwZS5Nb2JpbGU7XG4gIH0gZWxzZSBpZiAod2lkdGggPD0gMTAyNCkge1xuICAgIHJldHVybiBBWFBEZXZpY2VUeXBlLlRhYmxldDtcbiAgfVxuICByZXR1cm4gQVhQRGV2aWNlVHlwZS5EZXNrdG9wO1xufTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgdGhlIGRldmljZSBzdXBwb3J0cyB0b3VjaFxuICovXG5jb25zdCBpc1RvdWNoRGV2aWNlID0gKCk6IGJvb2xlYW4gPT4ge1xuICByZXR1cm4gJ29udG91Y2hzdGFydCcgaW4gd2luZG93IHx8IG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyA+IDA7XG59O1xuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIC0tLS0gICBEZXZpY2UgU2VydmljZSAgIC0tLS1cblxuLyoqXG4gKiBJbmplY3RhYmxlIHNlcnZpY2UgdGhhdCBwcm92aWRlcyByZWFjdGl2ZSBkZXZpY2UgYW5kIHNjcmVlbiBzaXplIGluZm9ybWF0aW9uLlxuICogTW9uaXRvcnMgd2luZG93IHJlc2l6ZSBldmVudHMgYW5kIHVwZGF0ZXMgc2lnbmFscyBhY2NvcmRpbmdseS5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFYUERldmljZVNlcnZpY2Uge1xuICAvLyNyZWdpb24gLS0tLSAgIFN0YXRlIFNpZ25hbHMgICAtLS0tXG5cbiAgLyoqXG4gICAqIEN1cnJlbnQgc2NyZWVuIHNpemUgKFNtYWxsLCBNZWRpdW0sIExhcmdlKVxuICAgKi9cbiAgcmVhZG9ubHkgc2NyZWVuU2l6ZSA9IHNpZ25hbDxBWFBTY3JlZW5TaXplPihnZXRTY3JlZW5TaXplKCkpO1xuXG4gIC8qKlxuICAgKiBDdXJyZW50IGRldmljZSB0eXBlIChNb2JpbGUsIFRhYmxldCwgRGVza3RvcClcbiAgICovXG4gIHJlYWRvbmx5IGRldmljZVR5cGUgPSBzaWduYWw8QVhQRGV2aWNlVHlwZT4oZ2V0RGV2aWNlVHlwZSgpKTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZGV2aWNlIHN1cHBvcnRzIHRvdWNoIGlucHV0XG4gICAqL1xuICByZWFkb25seSBpc1RvdWNoRGV2aWNlID0gc2lnbmFsPGJvb2xlYW4+KGlzVG91Y2hEZXZpY2UoKSk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBDb21wdXRlZCBTaWduYWxzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBzY3JlZW4gc2l6ZSBpcyBTbWFsbFxuICAgKi9cbiAgcmVhZG9ubHkgaXNTbWFsbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2NyZWVuU2l6ZSgpID09PSBBWFBTY3JlZW5TaXplLlNtYWxsKTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgc2NyZWVuIHNpemUgaXMgTWVkaXVtXG4gICAqL1xuICByZWFkb25seSBpc01lZGl1bSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2NyZWVuU2l6ZSgpID09PSBBWFBTY3JlZW5TaXplLk1lZGl1bSk7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHNjcmVlbiBzaXplIGlzIExhcmdlXG4gICAqL1xuICByZWFkb25seSBpc0xhcmdlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zY3JlZW5TaXplKCkgPT09IEFYUFNjcmVlblNpemUuTGFyZ2UpO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBkZXZpY2UgaXMgTW9iaWxlXG4gICAqL1xuICByZWFkb25seSBpc01vYmlsZURldmljZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZGV2aWNlVHlwZSgpID09PSBBWFBEZXZpY2VUeXBlLk1vYmlsZSk7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGRldmljZSBpcyBUYWJsZXRcbiAgICovXG4gIHJlYWRvbmx5IGlzVGFibGV0RGV2aWNlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5kZXZpY2VUeXBlKCkgPT09IEFYUERldmljZVR5cGUuVGFibGV0KTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZGV2aWNlIGlzIERlc2t0b3BcbiAgICovXG4gIHJlYWRvbmx5IGlzRGVza3RvcERldmljZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZGV2aWNlVHlwZSgpID09PSBBWFBEZXZpY2VUeXBlLkRlc2t0b3ApO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBkZXZpY2Ugc3VwcG9ydHMgdG91Y2ggKGFsaWFzIGZvciBpc1RvdWNoRGV2aWNlKVxuICAgKi9cbiAgcmVhZG9ubHkgaXNUb3VjaFNjcmVlbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaXNUb3VjaERldmljZSgpKTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIFByaXZhdGUgUHJvcGVydGllcyAgIC0tLS1cblxuICBwcml2YXRlIF9yZXNpemVMaXN0ZW5lcjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBDb25zdHJ1Y3RvciAmIExpZmVjeWNsZSAgIC0tLS1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9zZXR1cFJlc2l6ZUxpc3RlbmVyKCk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIFByaXZhdGUgTWV0aG9kcyAgIC0tLS1cblxuICAvKipcbiAgICogVXBkYXRlIHNjcmVlbiBzaXplIGFuZCBkZXZpY2UgdHlwZSBiYXNlZCBvbiB3aW5kb3cgd2lkdGhcbiAgICovXG4gIHByaXZhdGUgX3VwZGF0ZVNjcmVlblNpemUoKTogdm9pZCB7XG4gICAgY29uc3Qgd2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICBsZXQgbmV3U2NyZWVuU2l6ZTogQVhQU2NyZWVuU2l6ZTtcblxuICAgIGlmICh3aWR0aCA8PSA2MDApIHtcbiAgICAgIG5ld1NjcmVlblNpemUgPSBBWFBTY3JlZW5TaXplLlNtYWxsO1xuICAgIH0gZWxzZSBpZiAod2lkdGggPD0gMTAyNCkge1xuICAgICAgbmV3U2NyZWVuU2l6ZSA9IEFYUFNjcmVlblNpemUuTWVkaXVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXdTY3JlZW5TaXplID0gQVhQU2NyZWVuU2l6ZS5MYXJnZTtcbiAgICB9XG5cbiAgICAvLyBEZXRlcm1pbmUgZGV2aWNlIHR5cGUgYmFzZWQgb24gd2lkdGggdG8ga2VlcCBpdCByZWFjdGl2ZSB0byBkZXZ0b29scyBlbXVsYXRpb25cbiAgICBsZXQgbmV3RGV2aWNlVHlwZTogQVhQRGV2aWNlVHlwZTtcbiAgICBpZiAod2lkdGggPD0gNjAwKSB7XG4gICAgICBuZXdEZXZpY2VUeXBlID0gQVhQRGV2aWNlVHlwZS5Nb2JpbGU7XG4gICAgfSBlbHNlIGlmICh3aWR0aCA8PSAxMDI0KSB7XG4gICAgICBuZXdEZXZpY2VUeXBlID0gQVhQRGV2aWNlVHlwZS5UYWJsZXQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld0RldmljZVR5cGUgPSBBWFBEZXZpY2VUeXBlLkRlc2t0b3A7XG4gICAgfVxuXG4gICAgaWYgKG5ld1NjcmVlblNpemUgIT09IHRoaXMuc2NyZWVuU2l6ZSgpIHx8IG5ld0RldmljZVR5cGUgIT09IHRoaXMuZGV2aWNlVHlwZSgpKSB7XG4gICAgICB0aGlzLnNjcmVlblNpemUuc2V0KG5ld1NjcmVlblNpemUpO1xuICAgICAgdGhpcy5kZXZpY2VUeXBlLnNldChuZXdEZXZpY2VUeXBlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0IHVwIGV2ZW50IGxpc3RlbmVyIGZvciB3aW5kb3cgcmVzaXplXG4gICAqL1xuICBwcml2YXRlIF9zZXR1cFJlc2l6ZUxpc3RlbmVyKCk6IHZvaWQge1xuICAgIHRoaXMuX3Jlc2l6ZUxpc3RlbmVyID0gZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoMjUwKSkgLy8gMjUwbXMgZGVib3VuY2UgZGVsYXlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLl91cGRhdGVTY3JlZW5TaXplKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgZXZlbnQgbGlzdGVuZXIgZm9yIHdpbmRvdyByZXNpemVcbiAgICovXG4gIHByaXZhdGUgX3JlbW92ZVJlc2l6ZUxpc3RlbmVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9yZXNpemVMaXN0ZW5lcikge1xuICAgICAgdGhpcy5fcmVzaXplTGlzdGVuZXIudW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuX3Jlc2l6ZUxpc3RlbmVyID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIFB1YmxpYyBNZXRob2RzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBDbGVhbiB1cCByZXNvdXJjZXMgd2hlbiBzZXJ2aWNlIGlzIGRlc3Ryb3llZFxuICAgKi9cbiAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9yZW1vdmVSZXNpemVMaXN0ZW5lcigpO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG59XG5cbi8vI2VuZHJlZ2lvblxuIl19","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * Service for applying and resetting text highlighting within specified HTML elements.\n */\nexport class AXHighlightService {\n constructor() { }\n /**\n * Highlights all occurrences of a search value within the elements matching the provided query selector.\n *\n * @param querySelector - CSS selector to identify target elements.\n * @param searchValue - Text to search and highlight.\n */\n highlight(querySelector, searchValue) {\n this.clear();\n if (!querySelector || !searchValue) {\n return;\n }\n this.querySelector = querySelector;\n this.searchValue = searchValue;\n const elements = document.querySelectorAll(querySelector);\n elements.forEach((element) => {\n this.applyHighlight(element);\n });\n }\n /**\n * Resets all highlighted text within the elements matching the previously used query selector.\n */\n clear() {\n const elements = document.querySelectorAll(`${this.querySelector} .ax-highlight-text`);\n elements.forEach((element) => {\n let combinedText = '';\n element.querySelectorAll('span').forEach((span) => {\n combinedText += span.textContent;\n });\n const mergedSpan = document.createElement('span');\n mergedSpan.textContent = combinedText;\n element?.parentNode?.replaceChild(mergedSpan, element);\n });\n }\n /**\n * Applies highlighting to a specific element by matching text against the search value.\n *\n * @param element - The HTML element to apply highlights to.\n */\n applyHighlight(element) {\n const searchRegex = new RegExp(`(${this.searchValue})`, 'gi');\n this.recursivelyHighlight(element, searchRegex);\n }\n /**\n * Recursively applies highlighting to text nodes within an element.\n *\n * @param element - The current node being processed.\n * @param searchRegex - Regular expression for matching text to highlight.\n */\n recursivelyHighlight(element, searchRegex) {\n const childNodes = Array.from(element.childNodes);\n childNodes.forEach((node) => {\n if (node.nodeType === Node.TEXT_NODE) {\n const textContent = node.textContent || '';\n if (textContent.match(searchRegex)) {\n const highlightedHTML = this.createHighlightedHTML(textContent, searchRegex);\n const tempContainer = document.createElement('div');\n tempContainer.innerHTML = highlightedHTML;\n const fragment = document.createDocumentFragment();\n Array.from(tempContainer.childNodes).forEach((child) => fragment.appendChild(child));\n node.replaceWith(fragment);\n }\n }\n else if (node.nodeType === Node.ELEMENT_NODE) {\n this.recursivelyHighlight(node, searchRegex);\n }\n });\n }\n /**\n * Generates the HTML structure for highlighted text.\n *\n * @param textContent - The original text content to process.\n * @param searchRegex - Regular expression for matching text to highlight.\n * @returns A string of HTML with highlighted portions wrapped in span elements.\n */\n createHighlightedHTML(textContent, searchRegex) {\n let parts = [];\n let match;\n let lastIndex = 0;\n let resultHTML = '<span class=\"ax-highlight-text\">';\n while ((match = searchRegex.exec(textContent)) !== null) {\n if (match.index > lastIndex) {\n resultHTML += `<span>${textContent.slice(lastIndex, match.index)}</span>`;\n }\n resultHTML += `<span class=\"ax-highlight\">${match[0]}</span>`;\n lastIndex = searchRegex.lastIndex;\n }\n if (lastIndex < textContent.length) {\n resultHTML += `<span>${textContent.slice(lastIndex)}</span>`;\n }\n resultHTML += '</span>';\n return resultHTML;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXHighlightService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXHighlightService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXHighlightService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlnaGxpZ2h0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2NvcmUvc3JjL2xpYi91dGlscy9oaWdobGlnaHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUzQzs7R0FFRztBQUlILE1BQU0sT0FBTyxrQkFBa0I7SUFJN0IsZ0JBQWdCLENBQUM7SUFFakI7Ozs7O09BS0c7SUFDSCxTQUFTLENBQUMsYUFBcUIsRUFBRSxXQUFtQjtRQUNsRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkMsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDMUQsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBc0IsQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSztRQUNWLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLHNCQUFzQixDQUFDLENBQUM7UUFDeEYsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQzNCLElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztZQUN0QixPQUFPLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ2hELFlBQVksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQ25DLENBQUMsQ0FBQyxDQUFDO1lBRUgsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNsRCxVQUFVLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQztZQUV0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDekQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGNBQWMsQ0FBQyxPQUFvQjtRQUN6QyxNQUFNLFdBQVcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLG9CQUFvQixDQUFDLE9BQWEsRUFBRSxXQUFtQjtRQUM3RCxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVsRCxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDMUIsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDckMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7Z0JBQzNDLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO29CQUNuQyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO29CQUM3RSxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNwRCxhQUFhLENBQUMsU0FBUyxHQUFHLGVBQWUsQ0FBQztvQkFFMUMsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLHNCQUFzQixFQUFFLENBQUM7b0JBQ25ELEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO29CQUVyRixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM3QixDQUFDO1lBQ0gsQ0FBQztpQkFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUMvQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQy9DLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxxQkFBcUIsQ0FBQyxXQUFtQixFQUFFLFdBQW1CO1FBQ3BFLElBQUksS0FBSyxHQUFhLEVBQUUsQ0FBQztRQUN6QixJQUFJLEtBQUssQ0FBQztRQUNWLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztRQUNsQixJQUFJLFVBQVUsR0FBRyxrQ0FBa0MsQ0FBQztRQUVwRCxPQUFPLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUN4RCxJQUFJLEtBQUssQ0FBQyxLQUFLLEdBQUcsU0FBUyxFQUFFLENBQUM7Z0JBQzVCLFVBQVUsSUFBSSxTQUFTLFdBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO1lBQzVFLENBQUM7WUFDRCxVQUFVLElBQUksOEJBQThCLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzlELFNBQVMsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDO1FBQ3BDLENBQUM7UUFFRCxJQUFJLFNBQVMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbkMsVUFBVSxJQUFJLFNBQVMsV0FBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDO1FBQy9ELENBQUM7UUFFRCxVQUFVLElBQUksU0FBUyxDQUFDO1FBRXhCLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7K0dBN0dVLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzRGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogU2VydmljZSBmb3IgYXBwbHlpbmcgYW5kIHJlc2V0dGluZyB0ZXh0IGhpZ2hsaWdodGluZyB3aXRoaW4gc3BlY2lmaWVkIEhUTUwgZWxlbWVudHMuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBWEhpZ2hsaWdodFNlcnZpY2Uge1xuICBwcml2YXRlIHF1ZXJ5U2VsZWN0b3I6IHN0cmluZyB8IG51bGw7XG4gIHByaXZhdGUgc2VhcmNoVmFsdWU6IHN0cmluZyB8IG51bGw7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICAvKipcbiAgICogSGlnaGxpZ2h0cyBhbGwgb2NjdXJyZW5jZXMgb2YgYSBzZWFyY2ggdmFsdWUgd2l0aGluIHRoZSBlbGVtZW50cyBtYXRjaGluZyB0aGUgcHJvdmlkZWQgcXVlcnkgc2VsZWN0b3IuXG4gICAqXG4gICAqIEBwYXJhbSBxdWVyeVNlbGVjdG9yIC0gQ1NTIHNlbGVjdG9yIHRvIGlkZW50aWZ5IHRhcmdldCBlbGVtZW50cy5cbiAgICogQHBhcmFtIHNlYXJjaFZhbHVlIC0gVGV4dCB0byBzZWFyY2ggYW5kIGhpZ2hsaWdodC5cbiAgICovXG4gIGhpZ2hsaWdodChxdWVyeVNlbGVjdG9yOiBzdHJpbmcsIHNlYXJjaFZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyKCk7XG4gICAgaWYgKCFxdWVyeVNlbGVjdG9yIHx8ICFzZWFyY2hWYWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3IgPSBxdWVyeVNlbGVjdG9yO1xuICAgIHRoaXMuc2VhcmNoVmFsdWUgPSBzZWFyY2hWYWx1ZTtcbiAgICBjb25zdCBlbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwocXVlcnlTZWxlY3Rvcik7XG4gICAgZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgdGhpcy5hcHBseUhpZ2hsaWdodChlbGVtZW50IGFzIEhUTUxFbGVtZW50KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHMgYWxsIGhpZ2hsaWdodGVkIHRleHQgd2l0aGluIHRoZSBlbGVtZW50cyBtYXRjaGluZyB0aGUgcHJldmlvdXNseSB1c2VkIHF1ZXJ5IHNlbGVjdG9yLlxuICAgKi9cbiAgcHVibGljIGNsZWFyKCk6IHZvaWQge1xuICAgIGNvbnN0IGVsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgJHt0aGlzLnF1ZXJ5U2VsZWN0b3J9ICAuYXgtaGlnaGxpZ2h0LXRleHRgKTtcbiAgICBlbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICBsZXQgY29tYmluZWRUZXh0ID0gJyc7XG4gICAgICBlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3NwYW4nKS5mb3JFYWNoKChzcGFuKSA9PiB7XG4gICAgICAgIGNvbWJpbmVkVGV4dCArPSBzcGFuLnRleHRDb250ZW50O1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IG1lcmdlZFNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICBtZXJnZWRTcGFuLnRleHRDb250ZW50ID0gY29tYmluZWRUZXh0O1xuXG4gICAgICBlbGVtZW50Py5wYXJlbnROb2RlPy5yZXBsYWNlQ2hpbGQobWVyZ2VkU3BhbiwgZWxlbWVudCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQXBwbGllcyBoaWdobGlnaHRpbmcgdG8gYSBzcGVjaWZpYyBlbGVtZW50IGJ5IG1hdGNoaW5nIHRleHQgYWdhaW5zdCB0aGUgc2VhcmNoIHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0gZWxlbWVudCAtIFRoZSBIVE1MIGVsZW1lbnQgdG8gYXBwbHkgaGlnaGxpZ2h0cyB0by5cbiAgICovXG4gIHByaXZhdGUgYXBwbHlIaWdobGlnaHQoZWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBzZWFyY2hSZWdleCA9IG5ldyBSZWdFeHAoYCgke3RoaXMuc2VhcmNoVmFsdWV9KWAsICdnaScpO1xuICAgIHRoaXMucmVjdXJzaXZlbHlIaWdobGlnaHQoZWxlbWVudCwgc2VhcmNoUmVnZXgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY3Vyc2l2ZWx5IGFwcGxpZXMgaGlnaGxpZ2h0aW5nIHRvIHRleHQgbm9kZXMgd2l0aGluIGFuIGVsZW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSBlbGVtZW50IC0gVGhlIGN1cnJlbnQgbm9kZSBiZWluZyBwcm9jZXNzZWQuXG4gICAqIEBwYXJhbSBzZWFyY2hSZWdleCAtIFJlZ3VsYXIgZXhwcmVzc2lvbiBmb3IgbWF0Y2hpbmcgdGV4dCB0byBoaWdobGlnaHQuXG4gICAqL1xuICBwcml2YXRlIHJlY3Vyc2l2ZWx5SGlnaGxpZ2h0KGVsZW1lbnQ6IE5vZGUsIHNlYXJjaFJlZ2V4OiBSZWdFeHApOiB2b2lkIHtcbiAgICBjb25zdCBjaGlsZE5vZGVzID0gQXJyYXkuZnJvbShlbGVtZW50LmNoaWxkTm9kZXMpO1xuXG4gICAgY2hpbGROb2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHtcbiAgICAgICAgY29uc3QgdGV4dENvbnRlbnQgPSBub2RlLnRleHRDb250ZW50IHx8ICcnO1xuICAgICAgICBpZiAodGV4dENvbnRlbnQubWF0Y2goc2VhcmNoUmVnZXgpKSB7XG4gICAgICAgICAgY29uc3QgaGlnaGxpZ2h0ZWRIVE1MID0gdGhpcy5jcmVhdGVIaWdobGlnaHRlZEhUTUwodGV4dENvbnRlbnQsIHNlYXJjaFJlZ2V4KTtcbiAgICAgICAgICBjb25zdCB0ZW1wQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgICAgdGVtcENvbnRhaW5lci5pbm5lckhUTUwgPSBoaWdobGlnaHRlZEhUTUw7XG5cbiAgICAgICAgICBjb25zdCBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgICAgICAgICBBcnJheS5mcm9tKHRlbXBDb250YWluZXIuY2hpbGROb2RlcykuZm9yRWFjaCgoY2hpbGQpID0+IGZyYWdtZW50LmFwcGVuZENoaWxkKGNoaWxkKSk7XG5cbiAgICAgICAgICBub2RlLnJlcGxhY2VXaXRoKGZyYWdtZW50KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChub2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSkge1xuICAgICAgICB0aGlzLnJlY3Vyc2l2ZWx5SGlnaGxpZ2h0KG5vZGUsIHNlYXJjaFJlZ2V4KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIEhUTUwgc3RydWN0dXJlIGZvciBoaWdobGlnaHRlZCB0ZXh0LlxuICAgKlxuICAgKiBAcGFyYW0gdGV4dENvbnRlbnQgLSBUaGUgb3JpZ2luYWwgdGV4dCBjb250ZW50IHRvIHByb2Nlc3MuXG4gICAqIEBwYXJhbSBzZWFyY2hSZWdleCAtIFJlZ3VsYXIgZXhwcmVzc2lvbiBmb3IgbWF0Y2hpbmcgdGV4dCB0byBoaWdobGlnaHQuXG4gICAqIEByZXR1cm5zIEEgc3RyaW5nIG9mIEhUTUwgd2l0aCBoaWdobGlnaHRlZCBwb3J0aW9ucyB3cmFwcGVkIGluIHNwYW4gZWxlbWVudHMuXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUhpZ2hsaWdodGVkSFRNTCh0ZXh0Q29udGVudDogc3RyaW5nLCBzZWFyY2hSZWdleDogUmVnRXhwKTogc3RyaW5nIHtcbiAgICBsZXQgcGFydHM6IHN0cmluZ1tdID0gW107XG4gICAgbGV0IG1hdGNoO1xuICAgIGxldCBsYXN0SW5kZXggPSAwO1xuICAgIGxldCByZXN1bHRIVE1MID0gJzxzcGFuIGNsYXNzPVwiYXgtaGlnaGxpZ2h0LXRleHRcIj4nO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHNlYXJjaFJlZ2V4LmV4ZWModGV4dENvbnRlbnQpKSAhPT0gbnVsbCkge1xuICAgICAgaWYgKG1hdGNoLmluZGV4ID4gbGFzdEluZGV4KSB7XG4gICAgICAgIHJlc3VsdEhUTUwgKz0gYDxzcGFuPiR7dGV4dENvbnRlbnQuc2xpY2UobGFzdEluZGV4LCBtYXRjaC5pbmRleCl9PC9zcGFuPmA7XG4gICAgICB9XG4gICAgICByZXN1bHRIVE1MICs9IGA8c3BhbiBjbGFzcz1cImF4LWhpZ2hsaWdodFwiPiR7bWF0Y2hbMF19PC9zcGFuPmA7XG4gICAgICBsYXN0SW5kZXggPSBzZWFyY2hSZWdleC5sYXN0SW5kZXg7XG4gICAgfVxuXG4gICAgaWYgKGxhc3RJbmRleCA8IHRleHRDb250ZW50Lmxlbmd0aCkge1xuICAgICAgcmVzdWx0SFRNTCArPSBgPHNwYW4+JHt0ZXh0Q29udGVudC5zbGljZShsYXN0SW5kZXgpfTwvc3Bhbj5gO1xuICAgIH1cblxuICAgIHJlc3VsdEhUTUwgKz0gJzwvc3Bhbj4nO1xuXG4gICAgcmV0dXJuIHJlc3VsdEhUTUw7XG4gIH1cbn1cbiJdfQ==","export function extractTextFromHtml(value) {\n const div = document.createElement('div');\n div.innerHTML = value;\n return div.textContent || div.innerText || '';\n}\n/**\n * Generate kebab-case group name from title\n */\nexport function generateKebabCase(title) {\n return title\n .toLowerCase()\n .trim()\n .replace(/[^a-z0-9\\s-]/g, '') // Remove special characters\n .replace(/\\s+/g, '-') // Replace spaces with hyphens\n .replace(/-+/g, '-') // Replace multiple hyphens with single\n .replace(/^-+|-+$/g, ''); // Remove leading/trailing hyphens\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9jb3JlL3NyYy9saWIvdXRpbHMvc3RyaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxLQUFhO0lBQy9DLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDdEIsT0FBTyxHQUFHLENBQUMsV0FBVyxJQUFJLEdBQUcsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO0FBQ2hELENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxLQUFhO0lBQzdDLE9BQU8sS0FBSztTQUNULFdBQVcsRUFBRTtTQUNiLElBQUksRUFBRTtTQUNOLE9BQU8sQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsNEJBQTRCO1NBQ3pELE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsOEJBQThCO1NBQ25ELE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsdUNBQXVDO1NBQzNELE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQ0FBa0M7QUFDaEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBleHRyYWN0VGV4dEZyb21IdG1sKHZhbHVlOiBzdHJpbmcpIHtcbiAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIGRpdi5pbm5lckhUTUwgPSB2YWx1ZTtcbiAgcmV0dXJuIGRpdi50ZXh0Q29udGVudCB8fCBkaXYuaW5uZXJUZXh0IHx8ICcnO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGtlYmFiLWNhc2UgZ3JvdXAgbmFtZSBmcm9tIHRpdGxlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUtlYmFiQ2FzZSh0aXRsZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHRpdGxlXG4gICAgLnRvTG93ZXJDYXNlKClcbiAgICAudHJpbSgpXG4gICAgLnJlcGxhY2UoL1teYS16MC05XFxzLV0vZywgJycpIC8vIFJlbW92ZSBzcGVjaWFsIGNoYXJhY3RlcnNcbiAgICAucmVwbGFjZSgvXFxzKy9nLCAnLScpIC8vIFJlcGxhY2Ugc3BhY2VzIHdpdGggaHlwaGVuc1xuICAgIC5yZXBsYWNlKC8tKy9nLCAnLScpIC8vIFJlcGxhY2UgbXVsdGlwbGUgaHlwaGVucyB3aXRoIHNpbmdsZVxuICAgIC5yZXBsYWNlKC9eLSt8LSskL2csICcnKTsgLy8gUmVtb3ZlIGxlYWRpbmcvdHJhaWxpbmcgaHlwaGVuc1xufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LXBsYXRmb3JtLWNvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2NvcmUvc3JjL2Fjb3JleC1wbGF0Zm9ybS1jb3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-core.mjs","sources":["../tmp-esm2022/core/lib/activity-log/activity-log.service.js","../tmp-esm2022/core/lib/activity-log/activity-log.provider.js","../tmp-esm2022/core/lib/color-palette/color-palette.provider.js","../tmp-esm2022/core/lib/color-palette/color-palette.service.js","../tmp-esm2022/core/lib/color-palette/color-palette.types.js","../tmp-esm2022/core/lib/color-palette/default-palettes.provider.js","../tmp-esm2022/core/lib/utils/object-util.js","../tmp-esm2022/core/lib/context/context-store.service.js","../tmp-esm2022/core/lib/data/data-generator.js","../tmp-esm2022/core/lib/data/value-transformer.js","../tmp-esm2022/core/lib/module-manifest/provider-registry.service.js","../tmp-esm2022/core/lib/data/datasource-definition-provider.service.js","../tmp-esm2022/core/lib/directives/element-data.directive.js","../tmp-esm2022/core/lib/directives/dbl-click.directive.js","../tmp-esm2022/core/lib/directives/grid-layout.directive.js","../tmp-esm2022/core/lib/directives/content-checker.directive.js","../tmp-esm2022/core/lib/directives/fullscreen.directive.js","../tmp-esm2022/core/lib/distributed-events/distributed-event-listener.provider.js","../tmp-esm2022/core/lib/distributed-events/distributed-event-listener.service.js","../tmp-esm2022/core/lib/event-service/event.service.js","../tmp-esm2022/core/lib/expression-evaluator/expression-evaluator-scope-provider.service.js","../tmp-esm2022/core/lib/expression-evaluator/expression-evaluator.service.js","../tmp-esm2022/core/lib/hook/utill.service.js","../tmp-esm2022/core/lib/module-manifest/module-manifest.types.js","../tmp-esm2022/core/lib/module-manifest/provider-interfaces.js","../tmp-esm2022/core/lib/module-manifest/module-manifest.registry.js","../tmp-esm2022/core/lib/startup/app-startup.service.js","../tmp-esm2022/core/lib/module-manifest/module-manifest.module.js","../tmp-esm2022/core/lib/module-manifest/feature-definition.provider.js","../tmp-esm2022/core/lib/module-manifest/module-access-control.service.js","../tmp-esm2022/core/lib/tags/tag.types.js","../tmp-esm2022/core/lib/tags/tag.provider.js","../tmp-esm2022/core/lib/tags/tag.service.js","../tmp-esm2022/core/lib/types/actions.types.js","../tmp-esm2022/core/lib/types/core.types.js","../tmp-esm2022/core/lib/types/interactive.types.js","../tmp-esm2022/core/lib/types/logo.types.js","../tmp-esm2022/core/lib/types/scope.types.js","../tmp-esm2022/core/lib/types/export.types.js","../tmp-esm2022/core/lib/utils/countdown-timer.js","../tmp-esm2022/core/lib/utils/data-conditioner.js","../tmp-esm2022/core/lib/utils/device.service.js","../tmp-esm2022/core/lib/utils/highlighter.js","../tmp-esm2022/core/lib/utils/string.js","../tmp-esm2022/core/acorex-platform-core.js"],"sourcesContent":["import { inject, Injectable, InjectionToken } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport const AXP_ACTIVITY_LOG_PROVIDER = new InjectionToken('AXP_ACTIVITY_LOGS_PROVIDER');\nexport class AXPActivityLogService {\n constructor() {\n this.providers = inject(AXP_ACTIVITY_LOG_PROVIDER, { optional: true });\n }\n async getHistory(refId, refType, options) {\n return (await Promise.all(this.providers?.map((p) => p.getHistory(refId, refType, options)) ?? [])).flat();\n }\n async getHistoryByIds(refId, refType, ids) {\n return (await Promise.all(this.providers?.map((p) => p.getHistoryByIds(refId, refType, ids)) ?? [])).flat();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPActivityLogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPActivityLogService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPActivityLogService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2NvcmUvc3JjL2xpYi9hY3Rpdml0eS1sb2cvYWN0aXZpdHktbG9nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUluRSxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLGNBQWMsQ0FBMkIsNEJBQTRCLENBQUMsQ0FBQztBQUdwSCxNQUFNLE9BQU8scUJBQXFCO0lBRGxDO1FBRVUsY0FBUyxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0tBVTNFO0lBUkMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFhLEVBQUUsT0FBZSxFQUFFLE9BQXFFO1FBQ3BILE9BQU8sQ0FBQyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFN0csQ0FBQztJQUVELEtBQUssQ0FBQyxlQUFlLENBQUMsS0FBYSxFQUFFLE9BQWUsRUFBRSxHQUFhO1FBQ2pFLE9BQU8sQ0FBQyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDOUcsQ0FBQzsrR0FWVSxxQkFBcUI7bUhBQXJCLHFCQUFxQixjQURSLE1BQU07OzRGQUNuQixxQkFBcUI7a0JBRGpDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQQWN0aXZpdHlMb2dQcm92aWRlciB9IGZyb20gJy4vYWN0aXZpdHktbG9nLnByb3ZpZGVyJztcbmltcG9ydCB7IEFYUEFjdGl2aXR5TG9nIH0gZnJvbSAnLi9hY3Rpdml0eS1sb2cudHlwZXMnO1xuXG5leHBvcnQgY29uc3QgQVhQX0FDVElWSVRZX0xPR19QUk9WSURFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBWFBBY3Rpdml0eUxvZ1Byb3ZpZGVyW10+KCdBWFBfQUNUSVZJVFlfTE9HU19QUk9WSURFUicpO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFYUEFjdGl2aXR5TG9nU2VydmljZSB7XG4gIHByaXZhdGUgcHJvdmlkZXJzID0gaW5qZWN0KEFYUF9BQ1RJVklUWV9MT0dfUFJPVklERVIsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgYXN5bmMgZ2V0SGlzdG9yeShyZWZJZDogc3RyaW5nLCByZWZUeXBlOiBzdHJpbmcsIG9wdGlvbnM/OiB7IGZyb20/OiBEYXRlOyB0bz86IERhdGU7IGxpbWl0PzogbnVtYmVyOyBvZmZzZXQ/OiBudW1iZXIgfSk6IFByb21pc2U8QVhQQWN0aXZpdHlMb2dbXT4ge1xuICAgIHJldHVybiAoYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5wcm92aWRlcnM/Lm1hcCgocCkgPT4gcC5nZXRIaXN0b3J5KHJlZklkLCByZWZUeXBlLCBvcHRpb25zKSkgPz8gW10pKS5mbGF0KCk7XG5cbiAgfVxuXG4gIGFzeW5jIGdldEhpc3RvcnlCeUlkcyhyZWZJZDogc3RyaW5nLCByZWZUeXBlOiBzdHJpbmcsIGlkczogc3RyaW5nW10pOiBQcm9taXNlPEFYUEFjdGl2aXR5TG9nW10+IHtcbiAgICByZXR1cm4gKGF3YWl0IFByb21pc2UuYWxsKHRoaXMucHJvdmlkZXJzPy5tYXAoKHApID0+IHAuZ2V0SGlzdG9yeUJ5SWRzKHJlZklkLCByZWZUeXBlLCBpZHMpKSA/PyBbXSkpLmZsYXQoKTtcbiAgfVxufSJdfQ==","export class AXPActivityLogProvider {\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktbG9nLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9jb3JlL3NyYy9saWIvYWN0aXZpdHktbG9nL2FjdGl2aXR5LWxvZy5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQWdCLHNCQUFzQjtDQUczQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUEFjdGl2aXR5TG9nIH0gZnJvbSAnLi9hY3Rpdml0eS1sb2cudHlwZXMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhQQWN0aXZpdHlMb2dQcm92aWRlciB7XG4gIGFic3RyYWN0IGdldEhpc3RvcnkocmVmSWQ6IHN0cmluZywgcmVmVHlwZTogc3RyaW5nLCBvcHRpb25zPzogeyBmcm9tPzogRGF0ZTsgdG8/OiBEYXRlOyBsaW1pdD86IG51bWJlcjsgb2Zmc2V0PzogbnVtYmVyIH0pOiBQcm9taXNlPEFYUEFjdGl2aXR5TG9nW10+O1xuICBhYnN0cmFjdCBnZXRIaXN0b3J5QnlJZHMocmVmSWQ6IHN0cmluZywgcmVmVHlwZTogc3RyaW5nLCBpZHM6IHN0cmluZ1tdKTogUHJvbWlzZTxBWFBBY3Rpdml0eUxvZ1tdPjtcbn0iXX0=","import { InjectionToken } from '@angular/core';\n//#region ---- Color Palette Provider ----\n/**\n * Abstract class for color palette providers\n * Implement this to provide palettes from different sources (system, app, module, etc.)\n */\nexport class AXPColorPaletteProvider {\n}\n/**\n * Injection token for color palette providers\n * Use this to register multiple palette providers\n */\nexport const AXP_COLOR_PALETTE_PROVIDER = new InjectionToken('AXP_COLOR_PALETTE_PROVIDER');\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGFsZXR0ZS5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL2NvbG9yLXBhbGV0dGUvY29sb3ItcGFsZXR0ZS5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9DLDhDQUE4QztBQUU5Qzs7O0dBR0c7QUFDSCxNQUFNLE9BQWdCLHVCQUF1QjtDQVc1QztBQUVEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLElBQUksY0FBYyxDQUN4RCw0QkFBNEIsQ0FDL0IsQ0FBQztBQUVGLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQQ29sb3JQYWxldHRlIH0gZnJvbSAnLi9jb2xvci1wYWxldHRlLnR5cGVzJztcblxuLy8jcmVnaW9uIC0tLS0gICBDb2xvciBQYWxldHRlIFByb3ZpZGVyICAgLS0tLVxuXG4vKipcbiAqIEFic3RyYWN0IGNsYXNzIGZvciBjb2xvciBwYWxldHRlIHByb3ZpZGVyc1xuICogSW1wbGVtZW50IHRoaXMgdG8gcHJvdmlkZSBwYWxldHRlcyBmcm9tIGRpZmZlcmVudCBzb3VyY2VzIChzeXN0ZW0sIGFwcCwgbW9kdWxlLCBldGMuKVxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhQQ29sb3JQYWxldHRlUHJvdmlkZXIge1xuICAgIC8qKlxuICAgICAqIFVuaXF1ZSBuYW1lIGZvciB0aGlzIHByb3ZpZGVyIChlLmcuLCAnc3lzdGVtJywgJ2FwcCcsICdtb2R1bGUnKVxuICAgICAqL1xuICAgIGFic3RyYWN0IG5hbWU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGUgY29sb3IgcGFsZXR0ZXMgZnJvbSB0aGlzIHNvdXJjZVxuICAgICAqIEByZXR1cm5zIFByb21pc2Ugb2YgcGFsZXR0ZXNcbiAgICAgKi9cbiAgICBhYnN0cmFjdCBwcm92aWRlKCk6IFByb21pc2U8QVhQQ29sb3JQYWxldHRlW10+O1xufVxuXG4vKipcbiAqIEluamVjdGlvbiB0b2tlbiBmb3IgY29sb3IgcGFsZXR0ZSBwcm92aWRlcnNcbiAqIFVzZSB0aGlzIHRvIHJlZ2lzdGVyIG11bHRpcGxlIHBhbGV0dGUgcHJvdmlkZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBBWFBfQ09MT1JfUEFMRVRURV9QUk9WSURFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBWFBDb2xvclBhbGV0dGVQcm92aWRlcltdPihcbiAgICAnQVhQX0NPTE9SX1BBTEVUVEVfUFJPVklERVInLFxuKTtcblxuLy8jZW5kcmVnaW9uXG5cbiJdfQ==","import { inject, Injectable } from '@angular/core';\nimport { AXP_COLOR_PALETTE_PROVIDER } from './color-palette.provider';\nimport * as i0 from \"@angular/core\";\n//#region ---- Color Palette Service ----\n/**\n * Service for managing color palettes from multiple providers\n * Aggregates palettes from all registered providers\n */\nexport class AXPColorPaletteService {\n constructor() {\n //#region ---- Dependencies ----\n this.providers = inject(AXP_COLOR_PALETTE_PROVIDER, { optional: true }) ?? [];\n //#endregion\n //#region ---- State ----\n this.cache = null;\n }\n //#endregion\n //#region ---- Public API ----\n /**\n * Get all palettes from all providers\n * @param options Filter options\n * @returns Promise of palettes\n */\n async getPalettes(options) {\n if (!this.cache) {\n await this.loadPalettes();\n }\n let palettes = this.cache;\n // Apply category filter\n if (options?.category) {\n palettes = palettes.filter((palette) => palette.category === options.category);\n }\n // Apply search filter\n if (options?.search) {\n const searchLower = options.search.toLowerCase();\n palettes = palettes.filter((palette) => palette.name.toLowerCase().includes(searchLower) ||\n palette.title.toLowerCase().includes(searchLower) ||\n palette.description?.toLowerCase().includes(searchLower));\n }\n return palettes;\n }\n /**\n * Get a palette by name\n * @param name The unique name of the palette\n * @returns Promise of palette or undefined if not found\n */\n async getPalette(name) {\n if (!this.cache) {\n await this.loadPalettes();\n }\n return this.cache.find((p) => p.name === name);\n }\n /**\n * Get palettes by category\n * @param category The category to filter by\n * @returns Promise of palettes in the specified category\n */\n async getByCategory(category) {\n return this.getPalettes({ category });\n }\n /**\n * Check if a palette exists\n * @param name The unique name of the palette\n * @returns Promise of true if the palette exists\n */\n async has(name) {\n const palette = await this.getPalette(name);\n return palette !== undefined;\n }\n /**\n * Reload palettes from all providers\n */\n async reload() {\n this.cache = null;\n await this.loadPalettes();\n }\n /**\n * Get the default palette (material-design) or fallback colors\n * @returns Promise of default palette, never returns undefined\n */\n async getDefaultPalette() {\n const defaultPalette = await this.getPalette('material-design');\n if (defaultPalette) {\n return defaultPalette;\n }\n // Fallback to hardcoded material design colors if provider fails\n return {\n name: 'material-design',\n title: 'Material Design',\n category: 'material',\n description: 'Google Material Design color palette',\n colors: [\n '#F44336', // Red\n '#E91E63', // Pink\n '#9C27B0', // Purple\n '#673AB7', // Deep Purple\n '#3F51B5', // Indigo\n '#2196F3', // Blue\n '#03A9F4', // Light Blue\n '#00BCD4', // Cyan\n '#009688', // Teal\n '#4CAF50', // Green\n '#8BC34A', // Light Green\n '#CDDC39', // Lime\n '#FFEB3B', // Yellow\n '#FFC107', // Amber\n '#FF9800', // Orange\n '#FF5722', // Deep Orange\n ],\n };\n }\n //#endregion\n //#region ---- Private Methods ----\n /**\n * Load palettes from all providers\n */\n async loadPalettes() {\n const allPalettes = [];\n for (const provider of this.providers) {\n try {\n const palettes = await provider.provide();\n allPalettes.push(...palettes);\n }\n catch (error) {\n console.error(`Error loading palettes from provider ${provider.name}:`, error);\n }\n }\n // Remove duplicates based on name\n const uniquePalettes = allPalettes.filter((palette, index, self) => index === self.findIndex((p) => p.name === palette.name));\n this.cache = uniquePalettes;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPColorPaletteService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPColorPaletteService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPColorPaletteService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGFsZXR0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9jb3JlL3NyYy9saWIvY29sb3ItcGFsZXR0ZS9jb2xvci1wYWxldHRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLDBCQUEwQixFQUEyQixNQUFNLDBCQUEwQixDQUFDOztBQUcvRiw2Q0FBNkM7QUFFN0M7OztHQUdHO0FBSUgsTUFBTSxPQUFPLHNCQUFzQjtJQUhuQztRQUlJLG9DQUFvQztRQUU1QixjQUFTLEdBQThCLE1BQU0sQ0FBQywwQkFBMEIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUU1RyxZQUFZO1FBRVosNkJBQTZCO1FBRXJCLFVBQUssR0FBNkIsSUFBSSxDQUFDO0tBOElsRDtJQTVJRyxZQUFZO0lBRVosa0NBQWtDO0lBRWxDOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQXNDO1FBQ3BELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZCxNQUFNLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM5QixDQUFDO1FBRUQsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQU0sQ0FBQztRQUUzQix3QkFBd0I7UUFDeEIsSUFBSSxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUM7WUFDcEIsUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEtBQUssT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25GLENBQUM7UUFFRCxzQkFBc0I7UUFDdEIsSUFBSSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7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QUFRLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQzFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQztZQUNsQyxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDYixPQUFPLENBQUMsS0FBSyxDQUFDLHdDQUF3QyxRQUFRLENBQUMsSUFBSSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbkYsQ0FBQztRQUNMLENBQUM7UUFFRCxrQ0FBa0M7UUFDbEMsTUFBTSxjQUFjLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FDckMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxDQUNyRixDQUFDO1FBRUYsSUFBSSxDQUFDLEtBQUssR0FBRyxjQUFjLENBQUM7SUFDaEMsQ0FBQzsrR0FwSlEsc0JBQXNCO21IQUF0QixzQkFBc0IsY0FGbkIsTUFBTTs7NEZBRVQsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQX0NPTE9SX1BBTEVUVEVfUFJPVklERVIsIEFYUENvbG9yUGFsZXR0ZVByb3ZpZGVyIH0gZnJvbSAnLi9jb2xvci1wYWxldHRlLnByb3ZpZGVyJztcbmltcG9ydCB7IEFYUENvbG9yUGFsZXR0ZSwgQVhQQ29sb3JQYWxldHRlRmlsdGVyT3B0aW9ucyB9IGZyb20gJy4vY29sb3ItcGFsZXR0ZS50eXBlcyc7XG5cbi8vI3JlZ2lvbiAtLS0tICAgQ29sb3IgUGFsZXR0ZSBTZXJ2aWNlICAgLS0tLVxuXG4vKipcbiAqIFNlcnZpY2UgZm9yIG1hbmFnaW5nIGNvbG9yIHBhbGV0dGVzIGZyb20gbXVsdGlwbGUgcHJvdmlkZXJzXG4gKiBBZ2dyZWdhdGVzIHBhbGV0dGVzIGZyb20gYWxsIHJlZ2lzdGVyZWQgcHJvdmlkZXJzXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFYUENvbG9yUGFsZXR0ZVNlcnZpY2Uge1xuICAgIC8vI3JlZ2lvbiAtLS0tICAgRGVwZW5kZW5jaWVzICAgLS0tLVxuXG4gICAgcHJpdmF0ZSBwcm92aWRlcnM6IEFYUENvbG9yUGFsZXR0ZVByb3ZpZGVyW10gPSBpbmplY3QoQVhQX0NPTE9SX1BBTEVUVEVfUFJPVklERVIsIHsgb3B0aW9uYWw6IHRydWUgfSkgPz8gW107XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgU3RhdGUgICAtLS0tXG5cbiAgICBwcml2YXRlIGNhY2hlOiBBWFBDb2xvclBhbGV0dGVbXSB8IG51bGwgPSBudWxsO1xuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIFB1YmxpYyBBUEkgICAtLS0tXG5cbiAgICAvKipcbiAgICAgKiBHZXQgYWxsIHBhbGV0dGVzIGZyb20gYWxsIHByb3ZpZGVyc1xuICAgICAqIEBwYXJhbSBvcHRpb25zIEZpbHRlciBvcHRpb25zXG4gICAgICogQHJldHVybnMgUHJvbWlzZSBvZiBwYWxldHRlc1xuICAgICAqL1xuICAgIGFzeW5jIGdldFBhbGV0dGVzKG9wdGlvbnM/OiBBWFBDb2xvclBhbGV0dGVGaWx0ZXJPcHRpb25zKTogUHJvbWlzZTxBWFBDb2xvclBhbGV0dGVbXT4ge1xuICAgICAgICBpZiAoIXRoaXMuY2FjaGUpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMubG9hZFBhbGV0dGVzKCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcGFsZXR0ZXMgPSB0aGlzLmNhY2hlITtcblxuICAgICAgICAvLyBBcHBseSBjYXRlZ29yeSBmaWx0ZXJcbiAgICAgICAgaWYgKG9wdGlvbnM/LmNhdGVnb3J5KSB7XG4gICAgICAgICAgICBwYWxldHRlcyA9IHBhbGV0dGVzLmZpbHRlcigocGFsZXR0ZSkgPT4gcGFsZXR0ZS5jYXRlZ29yeSA9PT0gb3B0aW9ucy5jYXRlZ29yeSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBcHBseSBzZWFyY2ggZmlsdGVyXG4gICAgICAgIGlmIChvcHRpb25zPy5zZWFyY2gpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlYXJjaExvd2VyID0gb3B0aW9ucy5zZWFyY2gudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIHBhbGV0dGVzID0gcGFsZXR0ZXMuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChwYWxldHRlKSA9PlxuICAgICAgICAgICAgICAgICAgICBwYWxldHRlLm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hMb3dlcikgfHxcbiAgICAgICAgICAgICAgICAgICAgcGFsZXR0ZS50aXRsZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaExvd2VyKSB8fFxuICAgICAgICAgICAgICAgICAgICBwYWxldHRlLmRlc2NyaXB0aW9uPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaExvd2VyKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcGFsZXR0ZXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGEgcGFsZXR0ZSBieSBuYW1lXG4gICAgICogQHBhcmFtIG5hbWUgVGhlIHVuaXF1ZSBuYW1lIG9mIHRoZSBwYWxldHRlXG4gICAgICogQHJldHVybnMgUHJvbWlzZSBvZiBwYWxldHRlIG9yIHVuZGVmaW5lZCBpZiBub3QgZm91bmRcbiAgICAgKi9cbiAgICBhc3luYyBnZXRQYWxldHRlKG5hbWU6IHN0cmluZyk6IFByb21pc2U8QVhQQ29sb3JQYWxldHRlIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmICghdGhpcy5jYWNoZSkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5sb2FkUGFsZXR0ZXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmNhY2hlIS5maW5kKChwKSA9PiBwLm5hbWUgPT09IG5hbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBwYWxldHRlcyBieSBjYXRlZ29yeVxuICAgICAqIEBwYXJhbSBjYXRlZ29yeSBUaGUgY2F0ZWdvcnkgdG8gZmlsdGVyIGJ5XG4gICAgICogQHJldHVybnMgUHJvbWlzZSBvZiBwYWxldHRlcyBpbiB0aGUgc3BlY2lmaWVkIGNhdGVnb3J5XG4gICAgICovXG4gICAgYXN5bmMgZ2V0QnlDYXRlZ29yeShjYXRlZ29yeTogc3RyaW5nKTogUHJvbWlzZTxBWFBDb2xvclBhbGV0dGVbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRQYWxldHRlcyh7IGNhdGVnb3J5IH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIGEgcGFsZXR0ZSBleGlzdHNcbiAgICAgKiBAcGFyYW0gbmFtZSBUaGUgdW5pcXVlIG5hbWUgb2YgdGhlIHBhbGV0dGVcbiAgICAgKiBAcmV0dXJucyBQcm9taXNlIG9mIHRydWUgaWYgdGhlIHBhbGV0dGUgZXhpc3RzXG4gICAgICovXG4gICAgYXN5bmMgaGFzKG5hbWU6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBjb25zdCBwYWxldHRlID0gYXdhaXQgdGhpcy5nZXRQYWxldHRlKG5hbWUpO1xuICAgICAgICByZXR1cm4gcGFsZXR0ZSAhPT0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbG9hZCBwYWxldHRlcyBmcm9tIGFsbCBwcm92aWRlcnNcbiAgICAgKi9cbiAgICBhc3luYyByZWxvYWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuY2FjaGUgPSBudWxsO1xuICAgICAgICBhd2FpdCB0aGlzLmxvYWRQYWxldHRlcygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgZGVmYXVsdCBwYWxldHRlIChtYXRlcmlhbC1kZXNpZ24pIG9yIGZhbGxiYWNrIGNvbG9yc1xuICAgICAqIEByZXR1cm5zIFByb21pc2Ugb2YgZGVmYXVsdCBwYWxldHRlLCBuZXZlciByZXR1cm5zIHVuZGVmaW5lZFxuICAgICAqL1xuICAgIGFzeW5jIGdldERlZmF1bHRQYWxldHRlKCk6IFByb21pc2U8QVhQQ29sb3JQYWxldHRlPiB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRQYWxldHRlID0gYXdhaXQgdGhpcy5nZXRQYWxldHRlKCdtYXRlcmlhbC1kZXNpZ24nKTtcbiAgICAgICAgaWYgKGRlZmF1bHRQYWxldHRlKSB7XG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdFBhbGV0dGU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGYWxsYmFjayB0byBoYXJkY29kZWQgbWF0ZXJpYWwgZGVzaWduIGNvbG9ycyBpZiBwcm92aWRlciBmYWlsc1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmFtZTogJ21hdGVyaWFsLWRlc2lnbicsXG4gICAgICAgICAgICB0aXRsZTogJ01hdGVyaWFsIERlc2lnbicsXG4gICAgICAgICAgICBjYXRlZ29yeTogJ21hdGVyaWFsJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnR29vZ2xlIE1hdGVyaWFsIERlc2lnbiBjb2xvciBwYWxldHRlJyxcbiAgICAgICAgICAgIGNvbG9yczogW1xuICAgICAgICAgICAgICAgICcjRjQ0MzM2JywgLy8gUmVkXG4gICAgICAgICAgICAgICAgJyNFOTFFNjMnLCAvLyBQaW5rXG4gICAgICAgICAgICAgICAgJyM5QzI3QjAnLCAvLyBQdXJwbGVcbiAgICAgICAgICAgICAgICAnIzY3M0FCNycsIC8vIERlZXAgUHVycGxlXG4gICAgICAgICAgICAgICAgJyMzRjUxQjUnLCAvLyBJbmRpZ29cbiAgICAgICAgICAgICAgICAnIzIxOTZGMycsIC8vIEJsdWVcbiAgICAgICAgICAgICAgICAnIzAzQTlGNCcsIC8vIExpZ2h0IEJsdWVcbiAgICAgICAgICAgICAgICAnIzAwQkNENCcsIC8vIEN5YW5cbiAgICAgICAgICAgICAgICAnIzAwOTY4OCcsIC8vIFRlYWxcbiAgICAgICAgICAgICAgICAnIzRDQUY1MCcsIC8vIEdyZWVuXG4gICAgICAgICAgICAgICAgJyM4QkMzNEEnLCAvLyBMaWdodCBHcmVlblxuICAgICAgICAgICAgICAgICcjQ0REQzM5JywgLy8gTGltZVxuICAgICAgICAgICAgICAgICcjRkZFQjNCJywgLy8gWWVsbG93XG4gICAgICAgICAgICAgICAgJyNGRkMxMDcnLCAvLyBBbWJlclxuICAgICAgICAgICAgICAgICcjRkY5ODAwJywgLy8gT3JhbmdlXG4gICAgICAgICAgICAgICAgJyNGRjU3MjInLCAvLyBEZWVwIE9yYW5nZVxuICAgICAgICAgICAgXSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgUHJpdmF0ZSBNZXRob2RzICAgLS0tLVxuXG4gICAgLyoqXG4gICAgICogTG9hZCBwYWxldHRlcyBmcm9tIGFsbCBwcm92aWRlcnNcbiAgICAgKi9cbiAgICBwcml2YXRlIGFzeW5jIGxvYWRQYWxldHRlcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgYWxsUGFsZXR0ZXM6IEFYUENvbG9yUGFsZXR0ZVtdID0gW107XG5cbiAgICAgICAgZm9yIChjb25zdCBwcm92aWRlciBvZiB0aGlzLnByb3ZpZGVycykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYWxldHRlcyA9IGF3YWl0IHByb3ZpZGVyLnByb3ZpZGUoKTtcbiAgICAgICAgICAgICAgICBhbGxQYWxldHRlcy5wdXNoKC4uLnBhbGV0dGVzKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgRXJyb3IgbG9hZGluZyBwYWxldHRlcyBmcm9tIHByb3ZpZGVyICR7cHJvdmlkZXIubmFtZX06YCwgZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmVtb3ZlIGR1cGxpY2F0ZXMgYmFzZWQgb24gbmFtZVxuICAgICAgICBjb25zdCB1bmlxdWVQYWxldHRlcyA9IGFsbFBhbGV0dGVzLmZpbHRlcihcbiAgICAgICAgICAgIChwYWxldHRlLCBpbmRleCwgc2VsZikgPT4gaW5kZXggPT09IHNlbGYuZmluZEluZGV4KChwKSA9PiBwLm5hbWUgPT09IHBhbGV0dGUubmFtZSksXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5jYWNoZSA9IHVuaXF1ZVBhbGV0dGVzO1xuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxufVxuXG4vLyNlbmRyZWdpb25cbiJdfQ==","//#region ---- Color Palette Types ----\nexport {};\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGFsZXR0ZS50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL2NvbG9yLXBhbGV0dGUvY29sb3ItcGFsZXR0ZS50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7O0FBNEMzQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBDb2xvciBQYWxldHRlIFR5cGVzICAgLS0tLVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBjb2xvciBwYWxldHRlIHdpdGggYSB1bmlxdWUgaWRlbnRpZmllciBhbmQgY29sbGVjdGlvbiBvZiBjb2xvcnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBDb2xvclBhbGV0dGUge1xuICAgIC8qKlxuICAgICAqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcGFsZXR0ZVxuICAgICAqIEBleGFtcGxlICdtYXRlcmlhbC1kZXNpZ24nLCAnYnJhbmQtY29sb3JzJywgJ3Bhc3RlbC10aGVtZSdcbiAgICAgKi9cbiAgICBuYW1lOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBEaXNwbGF5IHRpdGxlIGZvciB0aGUgcGFsZXR0ZVxuICAgICAqIEBleGFtcGxlICdNYXRlcmlhbCBEZXNpZ24nLCAnQnJhbmQgQ29sb3JzJywgJ1Bhc3RlbCBUaGVtZSdcbiAgICAgKi9cbiAgICB0aXRsZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQXJyYXkgb2YgY29sb3IgY29kZXMgaW4gYW55IHZhbGlkIENTUyBjb2xvciBmb3JtYXRcbiAgICAgKiBAZXhhbXBsZSBbJyNGRjZCNkInLCAnIzRFQ0RDNCcsICdyZ2IoMjU1LCAxMDcsIDEwNyknXVxuICAgICAqL1xuICAgIGNvbG9yczogc3RyaW5nW107XG5cbiAgICAvKipcbiAgICAgKiBPcHRpb25hbCBkZXNjcmlwdGlvbiBvZiB0aGUgcGFsZXR0ZVxuICAgICAqL1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogT3B0aW9uYWwgY2F0ZWdvcnkgZm9yIGdyb3VwaW5nIHBhbGV0dGVzXG4gICAgICogQGV4YW1wbGUgJ2JyYW5kJywgJ21hdGVyaWFsJywgJ3RoZW1lJywgJ2N1c3RvbSdcbiAgICAgKi9cbiAgICBjYXRlZ29yeT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBmaWx0ZXJpbmcgY29sb3IgcGFsZXR0ZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBDb2xvclBhbGV0dGVGaWx0ZXJPcHRpb25zIHtcbiAgICBjYXRlZ29yeT86IHN0cmluZztcbiAgICBzZWFyY2g/OiBzdHJpbmc7XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4iXX0=","import { Injectable } from '@angular/core';\nimport { AXPColorPaletteProvider } from './color-palette.provider';\nimport * as i0 from \"@angular/core\";\n//#region ---- Default System Palettes Provider ----\n/**\n * Default system color palette provider\n * Provides built-in color palettes\n */\nexport class AXPDefaultColorPalettesProvider extends AXPColorPaletteProvider {\n constructor() {\n super(...arguments);\n this.name = 'system';\n }\n async provide() {\n return [\n {\n name: 'material-design',\n title: 'Material Design',\n category: 'material',\n description: 'Google Material Design color palette',\n colors: [\n '#F44336', // Red\n '#E91E63', // Pink\n '#9C27B0', // Purple\n '#673AB7', // Deep Purple\n '#3F51B5', // Indigo\n '#2196F3', // Blue\n '#03A9F4', // Light Blue\n '#00BCD4', // Cyan\n '#009688', // Teal\n '#4CAF50', // Green\n '#8BC34A', // Light Green\n '#CDDC39', // Lime\n '#FFEB3B', // Yellow\n '#FFC107', // Amber\n '#FF9800', // Orange\n '#FF5722', // Deep Orange\n ],\n },\n {\n name: 'pastel',\n title: 'Pastel Colors',\n category: 'theme',\n description: 'Soft pastel color palette',\n colors: [\n '#FFB3BA', // Light Pink\n '#FFDFBA', // Light Peach\n '#FFFFBA', // Light Yellow\n '#BAFFC9', // Light Green\n '#BAE1FF', // Light Blue\n '#E0BBE4', // Light Purple\n '#FFDFD3', // Light Coral\n '#D4F1F4', // Light Cyan\n ],\n },\n {\n name: 'vibrant',\n title: 'Vibrant Colors',\n category: 'theme',\n description: 'Bold and vibrant color palette',\n colors: [\n '#FF6B6B', // Vibrant Red\n '#4ECDC4', // Vibrant Teal\n '#45B7D1', // Vibrant Blue\n '#FFA07A', // Vibrant Salmon\n '#98D8C8', // Vibrant Mint\n '#F7DC6F', // Vibrant Yellow\n '#BB8FCE', // Vibrant Purple\n '#85C1E2', // Vibrant Sky Blue\n ],\n },\n {\n name: 'earth-tones',\n title: 'Earth Tones',\n category: 'theme',\n description: 'Natural earth tone color palette',\n colors: [\n '#8B4513', // Saddle Brown\n '#A0522D', // Sienna\n '#D2691E', // Chocolate\n '#CD853F', // Peru\n '#DEB887', // Burlywood\n '#F5DEB3', // Wheat\n '#556B2F', // Dark Olive Green\n '#6B8E23', // Olive Drab\n ],\n },\n {\n name: 'monochrome',\n title: 'Monochrome',\n category: 'theme',\n description: 'Grayscale color palette',\n colors: [\n '#000000', // Black\n '#262626', // Very Dark Gray\n '#404040', // Dark Gray\n '#595959', // Medium Dark Gray\n '#737373', // Medium Gray\n '#8C8C8C', // Light Medium Gray\n '#A6A6A6', // Light Gray\n '#BFBFBF', // Very Light Gray\n '#D9D9D9', // Lighter Gray\n '#F2F2F2', // Almost White\n '#FFFFFF', // White\n ],\n },\n ];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDefaultColorPalettesProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDefaultColorPalettesProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDefaultColorPalettesProvider, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1wYWxldHRlcy5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL2NvbG9yLXBhbGV0dGUvZGVmYXVsdC1wYWxldHRlcy5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQUduRSx3REFBd0Q7QUFFeEQ7OztHQUdHO0FBRUgsTUFBTSxPQUFPLCtCQUFnQyxTQUFRLHVCQUF1QjtJQUQ1RTs7UUFFSSxTQUFJLEdBQUcsUUFBUSxDQUFDO0tBaUduQjtJQS9GRyxLQUFLLENBQUMsT0FBTztRQUNULE9BQU87WUFDSDtnQkFDSSxJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixLQUFLLEVBQUUsaUJBQWlCO2dCQUN4QixRQUFRLEVBQUUsVUFBVTtnQkFDcEIsV0FBVyxFQUFFLHNDQUFzQztnQkFDbkQsTUFBTSxFQUFFO29CQUNKLFNBQVMsRUFBRSxNQUFNO29CQUNqQixTQUFTLEVBQUUsT0FBTztvQkFDbEIsU0FBUyxFQUFFLFNBQVM7b0JBQ3BCLFNBQVMsRUFBRSxjQUFjO29CQUN6QixTQUFTLEVBQUUsU0FBUztvQkFDcEIsU0FBUyxFQUFFLE9BQU87b0JBQ2xCLFNBQVMsRUFBRSxhQUFhO29CQUN4QixTQUFTLEVBQUUsT0FBTztvQkFDbEIsU0FBUyxFQUFFLE9BQU87b0JBQ2xCLFNBQVMsRUFBRSxRQUFRO29CQUNuQixTQUFTLEVBQUUsY0FBYztvQkFDekIsU0FBUyxFQUFFLE9BQU87b0JBQ2xCLFNBQVMsRUFBRSxTQUFTO29CQUNwQixTQUFTLEVBQUUsUUFBUTtvQkFDbkIsU0FBUyxFQUFFLFNBQVM7b0JBQ3BCLFNBQVMsRUFBRSxjQUFjO2lCQUM1QjthQUNKO1lBQ0Q7Z0JBQ0ksSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsS0FBSyxFQUFFLGVBQWU7Z0JBQ3RCLFFBQVEsRUFBRSxPQUFPO2dCQUNqQixXQUFXLEVBQUUsMkJBQTJCO2dCQUN4QyxNQUFNLEVBQUU7b0JBQ0osU0FBUyxFQUFFLGFBQWE7b0JBQ3hCLFNBQVMsRUFBRSxjQUFjO29CQUN6QixTQUFTLEVBQUUsZUFBZTtvQkFDMUIsU0FBUyxFQUFFLGNBQWM7b0JBQ3pCLFNBQVMsRUFBRSxhQUFhO29CQUN4QixTQUFTLEVBQUUsZUFBZTtvQkFDMUIsU0FBUyxFQUFFLGNBQWM7b0JBQ3pCLFNBQVMsRUFBRSxhQUFhO2lCQUMzQjthQUNKO1lBQ0Q7Z0JBQ0ksSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsS0FBSyxFQUFFLGdCQUFnQjtnQkFDdkIsUUFBUSxFQUFFLE9BQU87Z0JBQ2pCLFdBQVcsRUFBRSxnQ0FBZ0M7Z0JBQzdDLE1BQU0sRUFBRTtvQkFDSixTQUFTLEVBQUUsY0FBYztvQkFDekIsU0FBUyxFQUFFLGVBQWU7b0JBQzFCLFNBQVMsRUFBRSxlQUFlO29CQUMxQixTQUFTLEVBQUUsaUJBQWlCO29CQUM1QixTQUFTLEVBQUUsZUFBZTtvQkFDMUIsU0FBUyxFQUFFLGlCQUFpQjtvQkFDNUIsU0FBUyxFQUFFLGlCQUFpQjtvQkFDNUIsU0FBUyxFQUFFLG1CQUFtQjtpQkFDakM7YUFDSjtZQUNEO2dCQUNJLElBQUksRUFBRSxhQUFhO2dCQUNuQixLQUFLLEVBQUUsYUFBYTtnQkFDcEIsUUFBUSxFQUFFLE9BQU87Z0JBQ2pCLFdBQVcsRUFBRSxrQ0FBa0M7Z0JBQy9DLE1BQU0sRUFBRTtvQkFDSixTQUFTLEVBQUUsZUFBZTtvQkFDMUIsU0FBUyxFQUFFLFNBQVM7b0JBQ3BCLFNBQVMsRUFBRSxZQUFZO29CQUN2QixTQUFTLEVBQUUsT0FBTztvQkFDbEIsU0FBUyxFQUFFLFlBQVk7b0JBQ3ZCLFNBQVMsRUFBRSxRQUFRO29CQUNuQixTQUFTLEVBQUUsbUJBQW1CO29CQUM5QixTQUFTLEVBQUUsYUFBYTtpQkFDM0I7YUFDSjtZQUNEO2dCQUNJLElBQUksRUFBRSxZQUFZO2dCQUNsQixLQUFLLEVBQUUsWUFBWTtnQkFDbkIsUUFBUSxFQUFFLE9BQU87Z0JBQ2pCLFdBQVcsRUFBRSx5QkFBeUI7Z0JBQ3RDLE1BQU0sRUFBRTtvQkFDSixTQUFTLEVBQUUsUUFBUTtvQkFDbkIsU0FBUyxFQUFFLGlCQUFpQjtvQkFDNUIsU0FBUyxFQUFFLFlBQVk7b0JBQ3ZCLFNBQVMsRUFBRSxtQkFBbUI7b0JBQzlCLFNBQVMsRUFBRSxjQUFjO29CQUN6QixTQUFTLEVBQUUsb0JBQW9CO29CQUMvQixTQUFTLEVBQUUsYUFBYTtvQkFDeEIsU0FBUyxFQUFFLGtCQUFrQjtvQkFDN0IsU0FBUyxFQUFFLGVBQWU7b0JBQzFCLFNBQVMsRUFBRSxlQUFlO29CQUMxQixTQUFTLEVBQUUsUUFBUTtpQkFDdEI7YUFDSjtTQUNKLENBQUM7SUFDTixDQUFDOytHQWpHUSwrQkFBK0I7bUhBQS9CLCtCQUErQjs7NEZBQS9CLCtCQUErQjtrQkFEM0MsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUENvbG9yUGFsZXR0ZVByb3ZpZGVyIH0gZnJvbSAnLi9jb2xvci1wYWxldHRlLnByb3ZpZGVyJztcbmltcG9ydCB7IEFYUENvbG9yUGFsZXR0ZSB9IGZyb20gJy4vY29sb3ItcGFsZXR0ZS50eXBlcyc7XG5cbi8vI3JlZ2lvbiAtLS0tICAgRGVmYXVsdCBTeXN0ZW0gUGFsZXR0ZXMgUHJvdmlkZXIgICAtLS0tXG5cbi8qKlxuICogRGVmYXVsdCBzeXN0ZW0gY29sb3IgcGFsZXR0ZSBwcm92aWRlclxuICogUHJvdmlkZXMgYnVpbHQtaW4gY29sb3IgcGFsZXR0ZXNcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYUERlZmF1bHRDb2xvclBhbGV0dGVzUHJvdmlkZXIgZXh0ZW5kcyBBWFBDb2xvclBhbGV0dGVQcm92aWRlciB7XG4gICAgbmFtZSA9ICdzeXN0ZW0nO1xuXG4gICAgYXN5bmMgcHJvdmlkZSgpOiBQcm9taXNlPEFYUENvbG9yUGFsZXR0ZVtdPiB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ21hdGVyaWFsLWRlc2lnbicsXG4gICAgICAgICAgICAgICAgdGl0bGU6ICdNYXRlcmlhbCBEZXNpZ24nLFxuICAgICAgICAgICAgICAgIGNhdGVnb3J5OiAnbWF0ZXJpYWwnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnR29vZ2xlIE1hdGVyaWFsIERlc2lnbiBjb2xvciBwYWxldHRlJyxcbiAgICAgICAgICAgICAgICBjb2xvcnM6IFtcbiAgICAgICAgICAgICAgICAgICAgJyNGNDQzMzYnLCAvLyBSZWRcbiAgICAgICAgICAgICAgICAgICAgJyNFOTFFNjMnLCAvLyBQaW5rXG4gICAgICAgICAgICAgICAgICAgICcjOUMyN0IwJywgLy8gUHVycGxlXG4gICAgICAgICAgICAgICAgICAgICcjNjczQUI3JywgLy8gRGVlcCBQdXJwbGVcbiAgICAgICAgICAgICAgICAgICAgJyMzRjUxQjUnLCAvLyBJbmRpZ29cbiAgICAgICAgICAgICAgICAgICAgJyMyMTk2RjMnLCAvLyBCbHVlXG4gICAgICAgICAgICAgICAgICAgICcjMDNBOUY0JywgLy8gTGlnaHQgQmx1ZVxuICAgICAgICAgICAgICAgICAgICAnIzAwQkNENCcsIC8vIEN5YW5cbiAgICAgICAgICAgICAgICAgICAgJyMwMDk2ODgnLCAvLyBUZWFsXG4gICAgICAgICAgICAgICAgICAgICcjNENBRjUwJywgLy8gR3JlZW5cbiAgICAgICAgICAgICAgICAgICAgJyM4QkMzNEEnLCAvLyBMaWdodCBHcmVlblxuICAgICAgICAgICAgICAgICAgICAnI0NEREMzOScsIC8vIExpbWVcbiAgICAgICAgICAgICAgICAgICAgJyNGRkVCM0InLCAvLyBZZWxsb3dcbiAgICAgICAgICAgICAgICAgICAgJyNGRkMxMDcnLCAvLyBBbWJlclxuICAgICAgICAgICAgICAgICAgICAnI0ZGOTgwMCcsIC8vIE9yYW5nZVxuICAgICAgICAgICAgICAgICAgICAnI0ZGNTcyMicsIC8vIERlZXAgT3JhbmdlXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ3Bhc3RlbCcsXG4gICAgICAgICAgICAgICAgdGl0bGU6ICdQYXN0ZWwgQ29sb3JzJyxcbiAgICAgICAgICAgICAgICBjYXRlZ29yeTogJ3RoZW1lJyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1NvZnQgcGFzdGVsIGNvbG9yIHBhbGV0dGUnLFxuICAgICAgICAgICAgICAgIGNvbG9yczogW1xuICAgICAgICAgICAgICAgICAgICAnI0ZGQjNCQScsIC8vIExpZ2h0IFBpbmtcbiAgICAgICAgICAgICAgICAgICAgJyNGRkRGQkEnLCAvLyBMaWdodCBQZWFjaFxuICAgICAgICAgICAgICAgICAgICAnI0ZGRkZCQScsIC8vIExpZ2h0IFllbGxvd1xuICAgICAgICAgICAgICAgICAgICAnI0JBRkZDOScsIC8vIExpZ2h0IEdyZWVuXG4gICAgICAgICAgICAgICAgICAgICcjQkFFMUZGJywgLy8gTGlnaHQgQmx1ZVxuICAgICAgICAgICAgICAgICAgICAnI0UwQkJFNCcsIC8vIExpZ2h0IFB1cnBsZVxuICAgICAgICAgICAgICAgICAgICAnI0ZGREZEMycsIC8vIExpZ2h0IENvcmFsXG4gICAgICAgICAgICAgICAgICAgICcjRDRGMUY0JywgLy8gTGlnaHQgQ3lhblxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICd2aWJyYW50JyxcbiAgICAgICAgICAgICAgICB0aXRsZTogJ1ZpYnJhbnQgQ29sb3JzJyxcbiAgICAgICAgICAgICAgICBjYXRlZ29yeTogJ3RoZW1lJyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0JvbGQgYW5kIHZpYnJhbnQgY29sb3IgcGFsZXR0ZScsXG4gICAgICAgICAgICAgICAgY29sb3JzOiBbXG4gICAgICAgICAgICAgICAgICAgICcjRkY2QjZCJywgLy8gVmlicmFudCBSZWRcbiAgICAgICAgICAgICAgICAgICAgJyM0RUNEQzQnLCAvLyBWaWJyYW50IFRlYWxcbiAgICAgICAgICAgICAgICAgICAgJyM0NUI3RDEnLCAvLyBWaWJyYW50IEJsdWVcbiAgICAgICAgICAgICAgICAgICAgJyNGRkEwN0EnLCAvLyBWaWJyYW50IFNhbG1vblxuICAgICAgICAgICAgICAgICAgICAnIzk4RDhDOCcsIC8vIFZpYnJhbnQgTWludFxuICAgICAgICAgICAgICAgICAgICAnI0Y3REM2RicsIC8vIFZpYnJhbnQgWWVsbG93XG4gICAgICAgICAgICAgICAgICAgICcjQkI4RkNFJywgLy8gVmlicmFudCBQdXJwbGVcbiAgICAgICAgICAgICAgICAgICAgJyM4NUMxRTInLCAvLyBWaWJyYW50IFNreSBCbHVlXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ2VhcnRoLXRvbmVzJyxcbiAgICAgICAgICAgICAgICB0aXRsZTogJ0VhcnRoIFRvbmVzJyxcbiAgICAgICAgICAgICAgICBjYXRlZ29yeTogJ3RoZW1lJyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ05hdHVyYWwgZWFydGggdG9uZSBjb2xvciBwYWxldHRlJyxcbiAgICAgICAgICAgICAgICBjb2xvcnM6IFtcbiAgICAgICAgICAgICAgICAgICAgJyM4QjQ1MTMnLCAvLyBTYWRkbGUgQnJvd25cbiAgICAgICAgICAgICAgICAgICAgJyNBMDUyMkQnLCAvLyBTaWVubmFcbiAgICAgICAgICAgICAgICAgICAgJyNEMjY5MUUnLCAvLyBDaG9jb2xhdGVcbiAgICAgICAgICAgICAgICAgICAgJyNDRDg1M0YnLCAvLyBQZXJ1XG4gICAgICAgICAgICAgICAgICAgICcjREVCODg3JywgLy8gQnVybHl3b29kXG4gICAgICAgICAgICAgICAgICAgICcjRjVERUIzJywgLy8gV2hlYXRcbiAgICAgICAgICAgICAgICAgICAgJyM1NTZCMkYnLCAvLyBEYXJrIE9saXZlIEdyZWVuXG4gICAgICAgICAgICAgICAgICAgICcjNkI4RTIzJywgLy8gT2xpdmUgRHJhYlxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdtb25vY2hyb21lJyxcbiAgICAgICAgICAgICAgICB0aXRsZTogJ01vbm9jaHJvbWUnLFxuICAgICAgICAgICAgICAgIGNhdGVnb3J5OiAndGhlbWUnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnR3JheXNjYWxlIGNvbG9yIHBhbGV0dGUnLFxuICAgICAgICAgICAgICAgIGNvbG9yczogW1xuICAgICAgICAgICAgICAgICAgICAnIzAwMDAwMCcsIC8vIEJsYWNrXG4gICAgICAgICAgICAgICAgICAgICcjMjYyNjI2JywgLy8gVmVyeSBEYXJrIEdyYXlcbiAgICAgICAgICAgICAgICAgICAgJyM0MDQwNDAnLCAvLyBEYXJrIEdyYXlcbiAgICAgICAgICAgICAgICAgICAgJyM1OTU5NTknLCAvLyBNZWRpdW0gRGFyayBHcmF5XG4gICAgICAgICAgICAgICAgICAgICcjNzM3MzczJywgLy8gTWVkaXVtIEdyYXlcbiAgICAgICAgICAgICAgICAgICAgJyM4QzhDOEMnLCAvLyBMaWdodCBNZWRpdW0gR3JheVxuICAgICAgICAgICAgICAgICAgICAnI0E2QTZBNicsIC8vIExpZ2h0IEdyYXlcbiAgICAgICAgICAgICAgICAgICAgJyNCRkJGQkYnLCAvLyBWZXJ5IExpZ2h0IEdyYXlcbiAgICAgICAgICAgICAgICAgICAgJyNEOUQ5RDknLCAvLyBMaWdodGVyIEdyYXlcbiAgICAgICAgICAgICAgICAgICAgJyNGMkYyRjInLCAvLyBBbG1vc3QgV2hpdGVcbiAgICAgICAgICAgICAgICAgICAgJyNGRkZGRkYnLCAvLyBXaGl0ZVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cblxuLy8jZW5kcmVnaW9uXG5cbiJdfQ==","import { differenceWith, get, isArray, isEmpty, isEqual, isNil, isObjectLike, isPlainObject, merge, set, transform, union, } from 'lodash-es';\nexport function extractNestedFieldsWildcard(obj, basePath, fields) {\n const result = {};\n if (fields.length === 1 && fields[0] === '*') {\n const fullObj = get(obj, basePath);\n return isPlainObject(fullObj) ? fullObj : {};\n }\n for (const field of fields) {\n const fullPath = basePath ? `${basePath}.${field}` : field;\n const value = get(obj, fullPath);\n set(result, field, value);\n }\n return result;\n}\nexport function setSmart(obj, smartPath, value) {\n const pathParts = smartPath.split('.');\n const lastPart = pathParts[pathParts.length - 1];\n const fieldMatch = lastPart.match(/^\\{(.+)\\}$/);\n if (!fieldMatch) {\n set(obj, smartPath, value);\n return obj;\n }\n const fields = fieldMatch[1].split(',').map((f) => f.trim());\n const basePath = pathParts.slice(0, -1).join('.');\n const [arrayKey, ...restPath] = basePath.split('.');\n // Make sure the array exists\n if (!obj[arrayKey])\n obj[arrayKey] = [];\n // 🟡 Case A: value is array (normal set)\n if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n const targetItem = obj[arrayKey][i] ?? {};\n const nested = {};\n if (restPath.length > 0) {\n const picked = extractNestedFieldsWildcard(item, restPath.join('.'), fields);\n set(nested, restPath.join('.'), picked);\n }\n else {\n const picked = extractNestedFieldsWildcard(item, '', fields);\n Object.assign(nested, picked);\n }\n obj[arrayKey][i] = merge({}, targetItem, nested);\n }\n }\n // 🟢 Case B: value is a single value → broadcast\n else {\n for (let i = 0; i < obj[arrayKey].length; i++) {\n const targetItem = obj[arrayKey][i] ?? {};\n const nested = {};\n if (restPath.length > 0) {\n for (const field of fields) {\n set(nested, `${restPath.join('.')}.${field}`, value);\n }\n }\n else {\n for (const field of fields) {\n set(nested, field, value);\n }\n }\n obj[arrayKey][i] = merge({}, targetItem, nested);\n }\n }\n return obj;\n}\nfunction extractFieldsFromPath(obj, basePath, fields) {\n if (fields.length === 1 && fields[0] === '*') {\n const fullObj = basePath ? get(obj, basePath) : obj;\n return isPlainObject(fullObj) ? fullObj : {};\n }\n const result = {};\n for (const field of fields) {\n const fullPath = basePath ? `${basePath}.${field}` : field;\n const val = get(obj, fullPath);\n if (val !== undefined) {\n result[field] = val;\n }\n }\n return result;\n}\nexport function getSmart(obj, smartPath) {\n const pathParts = smartPath.split('.');\n const lastPart = pathParts[pathParts.length - 1];\n const fieldMatch = lastPart.match(/^\\{(.+)\\}$/);\n // Simple get (no fields)\n if (!fieldMatch) {\n return get(obj, smartPath);\n }\n const fields = fieldMatch[1].split(',').map((f) => f.trim());\n const basePath = pathParts.slice(0, -1).join('.');\n const items = get(obj, basePath);\n if (!isArray(items))\n return [];\n const nestedPath = basePath.includes('.') ? basePath.split('.').slice(1).join('.') : '';\n return items.map((item) => {\n return extractFieldsFromPath(item, nestedPath, fields);\n });\n}\nexport function extractValue(value, key = 'id') {\n if (isNil(value)) {\n return null;\n }\n return isObjectLike(value) ? get(value, key) : value;\n}\nexport function cleanDeep(obj) {\n return transform(obj, (result, value, key) => {\n if (isObjectLike(value)) {\n const cleaned = cleanDeep(value);\n if (!isEmpty(cleaned)) {\n result[key] = cleaned;\n }\n }\n else if (!isNil(value) && // not null or undefined\n !(typeof value === 'string' && value.trim() === '') && // not empty string\n !(Array.isArray(value) && value.length === 0) // not empty array\n ) {\n result[key] = value;\n }\n });\n}\nfunction getDeepChanges(obj1, obj2) {\n const changes = [];\n function walk(o1, o2, currentPath = []) {\n // If both values are deeply equal, skip\n if (isEqual(o1, o2))\n return;\n const isObj1Nil = o1 === null || o1 === undefined;\n const isObj2Nil = o2 === null || o2 === undefined;\n // If obj1 is null/undefined and obj2 is not, treat entire obj2 as added\n if (isObj1Nil && !isObj2Nil) {\n if (isPlainObject(o2)) {\n for (const key of Object.keys(o2)) {\n walk(undefined, o2[key], [...currentPath, key]);\n }\n }\n else if (Array.isArray(o2)) {\n changes.push({\n path: currentPath.join('.'),\n oldValue: undefined,\n newValue: o2,\n arrayDiff: {\n added: o2,\n removed: [],\n },\n });\n }\n else {\n changes.push({\n path: currentPath.join('.'),\n oldValue: undefined,\n newValue: o2,\n });\n }\n return;\n }\n // If obj2 is null/undefined and obj1 is not, treat entire obj1 as removed\n if (!isObj1Nil && isObj2Nil) {\n if (isPlainObject(o1)) {\n for (const key of Object.keys(o1)) {\n walk(o1[key], undefined, [...currentPath, key]);\n }\n }\n else if (Array.isArray(o1)) {\n changes.push({\n path: currentPath.join('.'),\n oldValue: o1,\n newValue: undefined,\n arrayDiff: {\n added: [],\n removed: o1,\n },\n });\n }\n else {\n changes.push({\n path: currentPath.join('.'),\n oldValue: o1,\n newValue: undefined,\n });\n }\n return;\n }\n // If both are arrays, compare items\n if (Array.isArray(o1) && Array.isArray(o2)) {\n if (!isEqual(o1, o2)) {\n const added = differenceWith(o2, o1, isEqual);\n const removed = differenceWith(o1, o2, isEqual);\n changes.push({\n path: currentPath.join('.'),\n oldValue: o1,\n newValue: o2,\n arrayDiff: {\n added,\n removed,\n },\n });\n }\n return;\n }\n // If both are plain objects, walk each key\n if (isPlainObject(o1) && isPlainObject(o2)) {\n const allKeys = union(Object.keys(o1), Object.keys(o2));\n for (const key of allKeys) {\n walk(o1[key], o2[key], [...currentPath, key]);\n }\n return;\n }\n // Primitive values or mismatched types\n changes.push({\n path: currentPath.join('.'),\n oldValue: o1,\n newValue: o2,\n });\n }\n walk(obj1, obj2);\n return changes;\n}\n// Method 1: Returns only changed paths\nexport function getChangedPaths(obj1, obj2) {\n return getDeepChanges(obj1, obj2).map((change) => change.path);\n}\n// Method 2: Returns full change entries\nexport function getDetailedChanges(obj1, obj2) {\n return getDeepChanges(obj1, obj2);\n}\nexport function getEnumValues(enumType) {\n return Object.entries(enumType).map(([key, value]) => ({ id: value, title: key }));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LXV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2NvcmUvc3JjL2xpYi91dGlscy9vYmplY3QtdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsY0FBYyxFQUNkLEdBQUcsRUFDSCxPQUFPLEVBQ1AsT0FBTyxFQUNQLE9BQU8sRUFDUCxLQUFLLEVBQ0wsWUFBWSxFQUNaLGFBQWEsRUFDYixLQUFLLEVBQ0wsR0FBRyxFQUNILFNBQVMsRUFDVCxLQUFLLEdBQ04sTUFBTSxXQUFXLENBQUM7QUFFbkIsTUFBTSxVQUFVLDJCQUEyQixDQUFDLEdBQVEsRUFBRSxRQUFnQixFQUFFLE1BQWdCO0lBQ3RGLE1BQU0sTUFBTSxHQUFRLEVBQUUsQ0FBQztJQUV2QixJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUM3QyxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRUQsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUMzQixNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDM0QsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNqQyxHQUFHLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztB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QUcsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDaEQsQ0FBQztZQUNELE9BQU87UUFDVCxDQUFDO1FBRUQsdUNBQXVDO1FBQ3ZDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDWCxJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDM0IsUUFBUSxFQUFFLEVBQUU7WUFDWixRQUFRLEVBQUUsRUFBRTtTQUNiLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFFRCx1Q0FBdUM7QUFDdkMsTUFBTSxVQUFVLGVBQWUsQ0FBQyxJQUFTLEVBQUUsSUFBUztJQUNsRCxPQUFPLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakUsQ0FBQztBQUVELHdDQUF3QztBQUN4QyxNQUFNLFVBQVUsa0JBQWtCLENBQUMsSUFBUyxFQUFFLElBQVM7SUFDckQsT0FBTyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFJRCxNQUFNLFVBQVUsYUFBYSxDQUFDLFFBQWE7SUFDekMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQWUsRUFBRSxLQUFLLEVBQUUsR0FBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3pHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBkaWZmZXJlbmNlV2l0aCxcbiAgZ2V0LFxuICBpc0FycmF5LFxuICBpc0VtcHR5LFxuICBpc0VxdWFsLFxuICBpc05pbCxcbiAgaXNPYmplY3RMaWtlLFxuICBpc1BsYWluT2JqZWN0LFxuICBtZXJnZSxcbiAgc2V0LFxuICB0cmFuc2Zvcm0sXG4gIHVuaW9uLFxufSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdE5lc3RlZEZpZWxkc1dpbGRjYXJkKG9iajogYW55LCBiYXNlUGF0aDogc3RyaW5nLCBmaWVsZHM6IHN0cmluZ1tdKTogYW55IHtcbiAgY29uc3QgcmVzdWx0OiBhbnkgPSB7fTtcblxuICBpZiAoZmllbGRzLmxlbmd0aCA9PT0gMSAmJiBmaWVsZHNbMF0gPT09ICcqJykge1xuICAgIGNvbnN0IGZ1bGxPYmogPSBnZXQob2JqLCBiYXNlUGF0aCk7XG4gICAgcmV0dXJuIGlzUGxhaW5PYmplY3QoZnVsbE9iaikgPyBmdWxsT2JqIDoge307XG4gIH1cblxuICBmb3IgKGNvbnN0IGZpZWxkIG9mIGZpZWxkcykge1xuICAgIGNvbnN0IGZ1bGxQYXRoID0gYmFzZVBhdGggPyBgJHtiYXNlUGF0aH0uJHtmaWVsZH1gIDogZmllbGQ7XG4gICAgY29uc3QgdmFsdWUgPSBnZXQob2JqLCBmdWxsUGF0aCk7XG4gICAgc2V0KHJlc3VsdCwgZmllbGQsIHZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRTbWFydChvYmo6IGFueSwgc21hcnRQYXRoOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBhbnkge1xuICBjb25zdCBwYXRoUGFydHMgPSBzbWFydFBhdGguc3BsaXQoJy4nKTtcbiAgY29uc3QgbGFzdFBhcnQgPSBwYXRoUGFydHNbcGF0aFBhcnRzLmxlbmd0aCAtIDFdO1xuICBjb25zdCBmaWVsZE1hdGNoID0gbGFzdFBhcnQubWF0Y2goL15cXHsoLispXFx9JC8pO1xuXG4gIGlmICghZmllbGRNYXRjaCkge1xuICAgIHNldChvYmosIHNtYXJ0UGF0aCwgdmFsdWUpO1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICBjb25zdCBmaWVsZHMgPSBmaWVsZE1hdGNoWzFdLnNwbGl0KCcsJykubWFwKChmKSA9PiBmLnRyaW0oKSk7XG4gIGNvbnN0IGJhc2VQYXRoID0gcGF0aFBhcnRzLnNsaWNlKDAsIC0xKS5qb2luKCcuJyk7XG4gIGNvbnN0IFthcnJheUtleSwgLi4ucmVzdFBhdGhdID0gYmFzZVBhdGguc3BsaXQoJy4nKTtcblxuICAvLyBNYWtlIHN1cmUgdGhlIGFycmF5IGV4aXN0c1xuICBpZiAoIW9ialthcnJheUtleV0pIG9ialthcnJheUtleV0gPSBbXTtcblxuICAvLyDwn5+hIENhc2UgQTogdmFsdWUgaXMgYXJyYXkgKG5vcm1hbCBzZXQpXG4gIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSB2YWx1ZVtpXTtcbiAgICAgIGNvbnN0IHRhcmdldEl0ZW0gPSBvYmpbYXJyYXlLZXldW2ldID8/IHt9O1xuICAgICAgY29uc3QgbmVzdGVkID0ge307XG5cbiAgICAgIGlmIChyZXN0UGF0aC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHBpY2tlZCA9IGV4dHJhY3ROZXN0ZWRGaWVsZHNXaWxkY2FyZChpdGVtLCByZXN0UGF0aC5qb2luKCcuJyksIGZpZWxkcyk7XG4gICAgICAgIHNldChuZXN0ZWQsIHJlc3RQYXRoLmpvaW4oJy4nKSwgcGlja2VkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHBpY2tlZCA9IGV4dHJhY3ROZXN0ZWRGaWVsZHNXaWxkY2FyZChpdGVtLCAnJywgZmllbGRzKTtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihuZXN0ZWQsIHBpY2tlZCk7XG4gICAgICB9XG5cbiAgICAgIG9ialthcnJheUtleV1baV0gPSBtZXJnZSh7fSwgdGFyZ2V0SXRlbSwgbmVzdGVkKTtcbiAgICB9XG4gIH1cblxuICAvLyDwn5+iIENhc2UgQjogdmFsdWUgaXMgYSBzaW5nbGUgdmFsdWUg4oaSIGJyb2FkY2FzdFxuICBlbHNlIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9ialthcnJheUtleV0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHRhcmdldEl0ZW0gPSBvYmpbYXJyYXlLZXldW2ldID8/IHt9O1xuICAgICAgY29uc3QgbmVzdGVkID0ge307XG5cbiAgICAgIGlmIChyZXN0UGF0aC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgZmllbGRzKSB7XG4gICAgICAgICAgc2V0KG5lc3RlZCwgYCR7cmVzdFBhdGguam9pbignLicpfS4ke2ZpZWxkfWAsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBmaWVsZHMpIHtcbiAgICAgICAgICBzZXQobmVzdGVkLCBmaWVsZCwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIG9ialthcnJheUtleV1baV0gPSBtZXJnZSh7fSwgdGFyZ2V0SXRlbSwgbmVzdGVkKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBleHRyYWN0RmllbGRzRnJvbVBhdGgob2JqOiBhbnksIGJhc2VQYXRoOiBzdHJpbmcsIGZpZWxkczogc3RyaW5nW10pOiBhbnkge1xuICBpZiAoZmllbGRzLmxlbmd0aCA9PT0gMSAmJiBmaWVsZHNbMF0gPT09ICcqJykge1xuICAgIGNvbnN0IGZ1bGxPYmogPSBiYXNlUGF0aCA/IGdldChvYmosIGJhc2VQYXRoKSA6IG9iajtcbiAgICByZXR1cm4gaXNQbGFpbk9iamVjdChmdWxsT2JqKSA/IGZ1bGxPYmogOiB7fTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdDogYW55ID0ge307XG4gIGZvciAoY29uc3QgZmllbGQgb2YgZmllbGRzKSB7XG4gICAgY29uc3QgZnVsbFBhdGggPSBiYXNlUGF0aCA/IGAke2Jhc2VQYXRofS4ke2ZpZWxkfWAgOiBmaWVsZDtcbiAgICBjb25zdCB2YWwgPSBnZXQob2JqLCBmdWxsUGF0aCk7XG4gICAgaWYgKHZhbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXN1bHRbZmllbGRdID0gdmFsO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U21hcnQob2JqOiBhbnksIHNtYXJ0UGF0aDogc3RyaW5nKTogYW55IHtcbiAgY29uc3QgcGF0aFBhcnRzID0gc21hcnRQYXRoLnNwbGl0KCcuJyk7XG4gIGNvbnN0IGxhc3RQYXJ0ID0gcGF0aFBhcnRzW3BhdGhQYXJ0cy5sZW5ndGggLSAxXTtcbiAgY29uc3QgZmllbGRNYXRjaCA9IGxhc3RQYXJ0Lm1hdGNoKC9eXFx7KC4rKVxcfSQvKTtcblxuICAvLyBTaW1wbGUgZ2V0IChubyBmaWVsZHMpXG4gIGlmICghZmllbGRNYXRjaCkge1xuICAgIHJldHVybiBnZXQob2JqLCBzbWFydFBhdGgpO1xuICB9XG5cbiAgY29uc3QgZmllbGRzID0gZmllbGRNYXRjaFsxXS5zcGxpdCgnLCcpLm1hcCgoZikgPT4gZi50cmltKCkpO1xuICBjb25zdCBiYXNlUGF0aCA9IHBhdGhQYXJ0cy5zbGljZSgwLCAtMSkuam9pbignLicpO1xuICBjb25zdCBpdGVtcyA9IGdldChvYmosIGJhc2VQYXRoKTtcblxuICBpZiAoIWlzQXJyYXkoaXRlbXMpKSByZXR1cm4gW107XG5cbiAgY29uc3QgbmVzdGVkUGF0aCA9IGJhc2VQYXRoLmluY2x1ZGVzKCcuJykgPyBiYXNlUGF0aC5zcGxpdCgnLicpLnNsaWNlKDEpLmpvaW4oJy4nKSA6ICcnO1xuXG4gIHJldHVybiBpdGVtcy5tYXAoKGl0ZW0pID0+IHtcbiAgICByZXR1cm4gZXh0cmFjdEZpZWxkc0Zyb21QYXRoKGl0ZW0sIG5lc3RlZFBhdGgsIGZpZWxkcyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdFZhbHVlPFQgPSBhbnk+KHZhbHVlOiBhbnksIGtleTogc3RyaW5nID0gJ2lkJyk6IFQgfCBudWxsIHtcbiAgaWYgKGlzTmlsKHZhbHVlKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpID8gZ2V0KHZhbHVlLCBrZXkpIDogdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhbkRlZXAob2JqOiBhbnkpIHtcbiAgcmV0dXJuIHRyYW5zZm9ybShvYmosIChyZXN1bHQ6IGFueSwgdmFsdWU6IGFueSwga2V5OiBzdHJpbmcpID0+IHtcbiAgICBpZiAoaXNPYmplY3RMaWtlKHZhbHVlKSkge1xuICAgICAgY29uc3QgY2xlYW5lZCA9IGNsZWFuRGVlcCh2YWx1ZSk7XG4gICAgICBpZiAoIWlzRW1wdHkoY2xlYW5lZCkpIHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSBjbGVhbmVkO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoXG4gICAgICAhaXNOaWwodmFsdWUpICYmIC8vIG5vdCBudWxsIG9yIHVuZGVmaW5lZFxuICAgICAgISh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnRyaW0oKSA9PT0gJycpICYmIC8vIG5vdCBlbXB0eSBzdHJpbmdcbiAgICAgICEoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKSAvLyBub3QgZW1wdHkgYXJyYXlcbiAgICApIHtcbiAgICAgIHJlc3VsdFtrZXldID0gdmFsdWU7XG4gICAgfVxuICB9KTtcbn1cblxudHlwZSBDaGFuZ2VFbnRyeSA9IHtcbiAgcGF0aDogc3RyaW5nO1xuICBvbGRWYWx1ZTogYW55O1xuICBuZXdWYWx1ZTogYW55O1xuICBhcnJheURpZmY/OiB7XG4gICAgYWRkZWQ6IGFueVtdO1xuICAgIHJlbW92ZWQ6IGFueVtdO1xuICB9O1xufTtcblxuZnVuY3Rpb24gZ2V0RGVlcENoYW5nZXMob2JqMTogYW55LCBvYmoyOiBhbnkpOiBDaGFuZ2VFbnRyeVtdIHtcbiAgY29uc3QgY2hhbmdlczogQ2hhbmdlRW50cnlbXSA9IFtdO1xuXG4gIGZ1bmN0aW9uIHdhbGsobzE6IGFueSwgbzI6IGFueSwgY3VycmVudFBhdGg6IHN0cmluZ1tdID0gW10pIHtcbiAgICAvLyBJZiBib3RoIHZhbHVlcyBhcmUgZGVlcGx5IGVxdWFsLCBza2lwXG4gICAgaWYgKGlzRXF1YWwobzEsIG8yKSkgcmV0dXJuO1xuXG4gICAgY29uc3QgaXNPYmoxTmlsID0gbzEgPT09IG51bGwgfHwgbzEgPT09IHVuZGVmaW5lZDtcbiAgICBjb25zdCBpc09iajJOaWwgPSBvMiA9PT0gbnVsbCB8fCBvMiA9PT0gdW5kZWZpbmVkO1xuXG4gICAgLy8gSWYgb2JqMSBpcyBudWxsL3VuZGVmaW5lZCBhbmQgb2JqMiBpcyBub3QsIHRyZWF0IGVudGlyZSBvYmoyIGFzIGFkZGVkXG4gICAgaWYgKGlzT2JqMU5pbCAmJiAhaXNPYmoyTmlsKSB7XG4gICAgICBpZiAoaXNQbGFpbk9iamVjdChvMikpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobzIpKSB7XG4gICAgICAgICAgd2Fsayh1bmRlZmluZWQsIG8yW2tleV0sIFsuLi5jdXJyZW50UGF0aCwga2V5XSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShvMikpIHtcbiAgICAgICAgY2hhbmdlcy5wdXNoKHtcbiAgICAgICAgICBwYXRoOiBjdXJyZW50UGF0aC5qb2luKCcuJyksXG4gICAgICAgICAgb2xkVmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICBuZXdWYWx1ZTogbzIsXG4gICAgICAgICAgYXJyYXlEaWZmOiB7XG4gICAgICAgICAgICBhZGRlZDogbzIsXG4gICAgICAgICAgICByZW1vdmVkOiBbXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNoYW5nZXMucHVzaCh7XG4gICAgICAgICAgcGF0aDogY3VycmVudFBhdGguam9pbignLicpLFxuICAgICAgICAgIG9sZFZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgbmV3VmFsdWU6IG8yLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBJZiBvYmoyIGlzIG51bGwvdW5kZWZpbmVkIGFuZCBvYmoxIGlzIG5vdCwgdHJlYXQgZW50aXJlIG9iajEgYXMgcmVtb3ZlZFxuICAgIGlmICghaXNPYmoxTmlsICYmIGlzT2JqMk5pbCkge1xuICAgICAgaWYgKGlzUGxhaW5PYmplY3QobzEpKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG8xKSkge1xuICAgICAgICAgIHdhbGsobzFba2V5XSwgdW5kZWZpbmVkLCBbLi4uY3VycmVudFBhdGgsIGtleV0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkobzEpKSB7XG4gICAgICAgIGNoYW5nZXMucHVzaCh7XG4gICAgICAgICAgcGF0aDogY3VycmVudFBhdGguam9pbignLicpLFxuICAgICAgICAgIG9sZFZhbHVlOiBvMSxcbiAgICAgICAgICBuZXdWYWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgIGFycmF5RGlmZjoge1xuICAgICAgICAgICAgYWRkZWQ6IFtdLFxuICAgICAgICAgICAgcmVtb3ZlZDogbzEsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjaGFuZ2VzLnB1c2goe1xuICAgICAgICAgIHBhdGg6IGN1cnJlbnRQYXRoLmpvaW4oJy4nKSxcbiAgICAgICAgICBvbGRWYWx1ZTogbzEsXG4gICAgICAgICAgbmV3VmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gSWYgYm90aCBhcmUgYXJyYXlzLCBjb21wYXJlIGl0ZW1zXG4gICAgaWYgKEFycmF5LmlzQXJyYXkobzEpICYmIEFycmF5LmlzQXJyYXkobzIpKSB7XG4gICAgICBpZiAoIWlzRXF1YWwobzEsIG8yKSkge1xuICAgICAgICBjb25zdCBhZGRlZCA9IGRpZmZlcmVuY2VXaXRoKG8yLCBvMSwgaXNFcXVhbCk7XG4gICAgICAgIGNvbnN0IHJlbW92ZWQgPSBkaWZmZXJlbmNlV2l0aChvMSwgbzIsIGlzRXF1YWwpO1xuXG4gICAgICAgIGNoYW5nZXMucHVzaCh7XG4gICAgICAgICAgcGF0aDogY3VycmVudFBhdGguam9pbignLicpLFxuICAgICAgICAgIG9sZFZhbHVlOiBvMSxcbiAgICAgICAgICBuZXdWYWx1ZTogbzIsXG4gICAgICAgICAgYXJyYXlEaWZmOiB7XG4gICAgICAgICAgICBhZGRlZCxcbiAgICAgICAgICAgIHJlbW92ZWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gSWYgYm90aCBhcmUgcGxhaW4gb2JqZWN0cywgd2FsayBlYWNoIGtleVxuICAgIGlmIChpc1BsYWluT2JqZWN0KG8xKSAmJiBpc1BsYWluT2JqZWN0KG8yKSkge1xuICAgICAgY29uc3QgYWxsS2V5cyA9IHVuaW9uKE9iamVjdC5rZXlzKG8xKSwgT2JqZWN0LmtleXMobzIpKTtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGFsbEtleXMpIHtcbiAgICAgICAgd2FsayhvMVtrZXldLCBvMltrZXldLCBbLi4uY3VycmVudFBhdGgsIGtleV0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFByaW1pdGl2ZSB2YWx1ZXMgb3IgbWlzbWF0Y2hlZCB0eXBlc1xuICAgIGNoYW5nZXMucHVzaCh7XG4gICAgICBwYXRoOiBjdXJyZW50UGF0aC5qb2luKCcuJyksXG4gICAgICBvbGRWYWx1ZTogbzEsXG4gICAgICBuZXdWYWx1ZTogbzIsXG4gICAgfSk7XG4gIH1cblxuICB3YWxrKG9iajEsIG9iajIpO1xuICByZXR1cm4gY2hhbmdlcztcbn1cblxuLy8gTWV0aG9kIDE6IFJldHVybnMgb25seSBjaGFuZ2VkIHBhdGhzXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2hhbmdlZFBhdGhzKG9iajE6IGFueSwgb2JqMjogYW55KTogc3RyaW5nW10ge1xuICByZXR1cm4gZ2V0RGVlcENoYW5nZXMob2JqMSwgb2JqMikubWFwKChjaGFuZ2UpID0+IGNoYW5nZS5wYXRoKTtcbn1cblxuLy8gTWV0aG9kIDI6IFJldHVybnMgZnVsbCBjaGFuZ2UgZW50cmllc1xuZXhwb3J0IGZ1bmN0aW9uIGdldERldGFpbGVkQ2hhbmdlcyhvYmoxOiBhbnksIG9iajI6IGFueSk6IENoYW5nZUVudHJ5W10ge1xuICByZXR1cm4gZ2V0RGVlcENoYW5nZXMob2JqMSwgb2JqMik7XG59XG5cblxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW51bVZhbHVlcyhlbnVtVHlwZTogYW55KTogeyBpZDogc3RyaW5nOyB0aXRsZTogc3RyaW5nIH1bXSB7XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhlbnVtVHlwZSkubWFwKChba2V5LCB2YWx1ZV0pID0+ICh7IGlkOiB2YWx1ZSBhcyBzdHJpbmcsIHRpdGxlOiBrZXkgYXMgc3RyaW5nIH0pKTtcbn1cblxuXG5cblxuXG4iXX0=","import { signalStore, withState, withComputed, withMethods, patchState } from '@ngrx/signals';\nimport { cloneDeep, isEqual } from 'lodash-es';\nimport { computed } from '@angular/core';\nimport { getSmart, setSmart } from '../utils/object-util';\nexport class AXPContextChangeEvent {\n}\nexport const AXPContextStore = signalStore({\n providedIn: 'root',\n}, \n// Initial State\nwithState(() => ({\n data: {}, // Shared context data\n state: 'initiated', // Current state\n initialSnapshot: {}, // Snapshot of the first initialized state\n previousSnapshot: {}, // Snapshot of the previous state\n lastChange: {\n state: 'initiated',\n }, // Last change event\n})), \n// Computed Signals\nwithComputed(({ data, state, lastChange, initialSnapshot, previousSnapshot }) => ({\n isChanged: computed(() => state() === 'changed'),\n isReset: computed(() => state() === 'restored'),\n isInitiated: computed(() => state() === 'initiated'),\n isEmpty: computed(() => Object.keys(data()).length === 0),\n isDirty: computed(() => !isEqual(data(), previousSnapshot())),\n snapshot: computed(() => cloneDeep(data())), // Current data snapshot\n initial: computed(() => cloneDeep(initialSnapshot())), // Initial snapshot\n previous: computed(() => cloneDeep(previousSnapshot())), // Previous snapshot\n changeEvent: computed(() => lastChange()), // Reactive last change event\n})), \n// Methods for State Management\nwithMethods((store) => ({\n // Update a specific value\n update(path, value) {\n const currentData = cloneDeep(store.data());\n const oldValue = getSmart(currentData, path);\n // Skip if the value hasn't changed\n if (isEqual(oldValue, value)) {\n return;\n }\n // Update the value and prepare the change event\n const updatedData = setSmart(currentData, path, value);\n const changeEvent = {\n oldValue,\n newValue: value,\n path,\n state: 'changed',\n data: updatedData,\n };\n // Patch the state\n patchState(store, {\n previousSnapshot: store.snapshot(), // Save the previous state\n data: updatedData,\n state: 'changed',\n lastChange: changeEvent,\n });\n },\n patch(context) {\n const currentData = cloneDeep(store.data());\n // Update the value and prepare the change event\n const updatedData = { ...currentData, ...context };\n const changeEvent = {\n state: 'patch',\n data: updatedData,\n };\n // Patch the state\n patchState(store, {\n previousSnapshot: store.snapshot(), // Save the previous state\n data: updatedData,\n state: 'changed',\n lastChange: changeEvent,\n });\n },\n // Reset to the initial state\n reset() {\n const initialData = store.initial();\n const changeEvent = {\n oldValue: cloneDeep(store.data()), // Current data becomes old value\n newValue: cloneDeep(initialData), // Reset to the initial state\n path: '',\n state: 'restored',\n data: initialData,\n };\n patchState(store, {\n previousSnapshot: store.snapshot(), // Save the previous state\n data: initialData,\n state: 'restored',\n lastChange: changeEvent,\n });\n },\n // Initialize the state\n set(initialData) {\n const currentData = store.data();\n if (isEqual(currentData, initialData)) {\n return; // Skip if the current state matches the initial state\n }\n const changeEvent = {\n oldValue: null,\n newValue: cloneDeep(initialData),\n path: '',\n state: 'initiated',\n data: initialData,\n };\n patchState(store, {\n initialSnapshot: cloneDeep(initialData), // Save the initial state\n previousSnapshot: store.snapshot(), // Save the current state as the previous\n data: initialData,\n state: 'initiated',\n lastChange: changeEvent,\n });\n },\n // Get a specific value\n getValue(path) {\n return getSmart(store.data(), path);\n },\n})));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1zdG9yZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9jb3JlL3NyYy9saWIvY29udGV4dC9jb250ZXh0LXN0b3JlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBUzFELE1BQU0sT0FBTyxxQkFBcUI7Q0FNakM7QUFFRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsV0FBVyxDQUN0QztJQUNJLFVBQVUsRUFBRSxNQUFNO0NBQ3JCO0FBQ0QsZ0JBQWdCO0FBQ2hCLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2IsSUFBSSxFQUFFLEVBQW9CLEVBQUUsc0JBQXNCO0lBQ2xELEtBQUssRUFBRSxXQUE4QixFQUFFLGdCQUFnQjtJQUN2RCxlQUFlLEVBQUUsRUFBRSxFQUFFLDBDQUEwQztJQUMvRCxnQkFBZ0IsRUFBRSxFQUFFLEVBQUUsaUNBQWlDO0lBQ3ZELFVBQVUsRUFBRTtRQUNSLEtBQUssRUFBRSxXQUFXO0tBQ0ksRUFBRSxvQkFBb0I7Q0FDbkQsQ0FBQyxDQUFDO0FBRUgsbUJBQW1CO0FBQ25CLFlBQVksQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDOUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxHQUFHLEVBQUUs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V0FBVztTQUMxQixDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsdUJBQXVCO0lBQ3ZCLFFBQVEsQ0FBQyxJQUFZO1FBQ2pCLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN4QyxDQUFDO0NBQ0osQ0FBQyxDQUFDLENBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNpZ25hbFN0b3JlLCB3aXRoU3RhdGUsIHdpdGhDb21wdXRlZCwgd2l0aE1ldGhvZHMsIHBhdGNoU3RhdGUgfSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7IGNsb25lRGVlcCwgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZ2V0U21hcnQsIHNldFNtYXJ0IH0gZnJvbSAnLi4vdXRpbHMvb2JqZWN0LXV0aWwnO1xuXG5cbmV4cG9ydCB0eXBlIEFYUENvbnRleHRTdGF0ZSA9ICdpbml0aWF0ZWQnIHwgJ3Jlc3RvcmVkJyB8ICdjaGFuZ2VkJyB8ICdwYXRjaCc7XG5cbmV4cG9ydCB0eXBlIEFYUENvbnRleHREYXRhID0ge1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGNsYXNzIEFYUENvbnRleHRDaGFuZ2VFdmVudCB7XG4gICAgb2xkVmFsdWU/OiBhbnk7XG4gICAgbmV3VmFsdWU/OiBhbnk7XG4gICAgcGF0aD86IHN0cmluZztcbiAgICBzdGF0ZTogQVhQQ29udGV4dFN0YXRlO1xuICAgIGRhdGE6IGFueTtcbn1cblxuZXhwb3J0IGNvbnN0IEFYUENvbnRleHRTdG9yZSA9IHNpZ25hbFN0b3JlKFxuICAgIHtcbiAgICAgICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICAgIH0sXG4gICAgLy8gSW5pdGlhbCBTdGF0ZVxuICAgIHdpdGhTdGF0ZSgoKSA9PiAoe1xuICAgICAgICBkYXRhOiB7fSBhcyBBWFBDb250ZXh0RGF0YSwgLy8gU2hhcmVkIGNvbnRleHQgZGF0YVxuICAgICAgICBzdGF0ZTogJ2luaXRpYXRlZCcgYXMgQVhQQ29udGV4dFN0YXRlLCAvLyBDdXJyZW50IHN0YXRlXG4gICAgICAgIGluaXRpYWxTbmFwc2hvdDoge30sIC8vIFNuYXBzaG90IG9mIHRoZSBmaXJzdCBpbml0aWFsaXplZCBzdGF0ZVxuICAgICAgICBwcmV2aW91c1NuYXBzaG90OiB7fSwgLy8gU25hcHNob3Qgb2YgdGhlIHByZXZpb3VzIHN0YXRlXG4gICAgICAgIGxhc3RDaGFuZ2U6IHtcbiAgICAgICAgICAgIHN0YXRlOiAnaW5pdGlhdGVkJyxcbiAgICAgICAgfSBhcyBBWFBDb250ZXh0Q2hhbmdlRXZlbnQsIC8vIExhc3QgY2hhbmdlIGV2ZW50XG4gICAgfSkpLFxuXG4gICAgLy8gQ29tcHV0ZWQgU2lnbmFsc1xuICAgIHdpdGhDb21wdXRlZCgoeyBkYXRhLCBzdGF0ZSwgbGFzdENoYW5nZSwgaW5pdGlhbFNuYXBzaG90LCBwcmV2aW91c1NuYXBzaG90IH0pID0+ICh7XG4gICAgICAgIGlzQ2hhbmdlZDogY29tcHV0ZWQoKCkgPT4gc3RhdGUoKSA9PT0gJ2NoYW5nZWQnKSxcbiAgICAgICAgaXNSZXNldDogY29tcHV0ZWQoKCkgPT4gc3RhdGUoKSA9PT0gJ3Jlc3RvcmVkJyksXG4gICAgICAgIGlzSW5pdGlhdGVkOiBjb21wdXRlZCgoKSA9PiBzdGF0ZSgpID09PSAnaW5pdGlhdGVkJyksXG4gICAgICAgIGlzRW1wdHk6IGNvbXB1dGVkKCgpID0+IE9iamVjdC5rZXlzKGRhdGEoKSkubGVuZ3RoID09PSAwKSxcbiAgICAgICAgaXNEaXJ0eTogY29tcHV0ZWQoKCkgPT4gIWlzRXF1YWwoZGF0YSgpLCBwcmV2aW91c1NuYXBzaG90KCkpKSwgXG4gICAgICAgIHNuYXBzaG90OiBjb21wdXRlZCgoKSA9PiBjbG9uZURlZXAoZGF0YSgpKSksIC8vIEN1cnJlbnQgZGF0YSBzbmFwc2hvdFxuICAgICAgICBpbml0aWFsOiBjb21wdXRlZCgoKSA9PiBjbG9uZURlZXAoaW5pdGlhbFNuYXBzaG90KCkpKSwgLy8gSW5pdGlhbCBzbmFwc2hvdFxuICAgICAgICBwcmV2aW91czogY29tcHV0ZWQoKCkgPT4gY2xvbmVEZWVwKHByZXZpb3VzU25hcHNob3QoKSkpLCAvLyBQcmV2aW91cyBzbmFwc2hvdFxuICAgICAgICBjaGFuZ2VFdmVudDogY29tcHV0ZWQoKCkgPT4gbGFzdENoYW5nZSgpKSwgLy8gUmVhY3RpdmUgbGFzdCBjaGFuZ2UgZXZlbnRcbiAgICB9KSksXG5cbiAgICAvLyBNZXRob2RzIGZvciBTdGF0ZSBNYW5hZ2VtZW50XG4gICAgd2l0aE1ldGhvZHMoKHN0b3JlKSA9PiAoe1xuICAgICAgICAvLyBVcGRhdGUgYSBzcGVjaWZpYyB2YWx1ZVxuICAgICAgICB1cGRhdGUocGF0aDogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RGF0YSA9IGNsb25lRGVlcChzdG9yZS5kYXRhKCkpO1xuICAgICAgICAgICAgY29uc3Qgb2xkVmFsdWUgPSBnZXRTbWFydChjdXJyZW50RGF0YSwgcGF0aCk7XG5cbiAgICAgICAgICAgIC8vIFNraXAgaWYgdGhlIHZhbHVlIGhhc24ndCBjaGFuZ2VkXG4gICAgICAgICAgICBpZiAoaXNFcXVhbChvbGRWYWx1ZSwgdmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHZhbHVlIGFuZCBwcmVwYXJlIHRoZSBjaGFuZ2UgZXZlbnRcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0gc2V0U21hcnQoY3VycmVudERhdGEsIHBhdGgsIHZhbHVlKTtcbiAgICAgICAgICAgIGNvbnN0IGNoYW5nZUV2ZW50OiBBWFBDb250ZXh0Q2hhbmdlRXZlbnQgPSB7XG4gICAgICAgICAgICAgICAgb2xkVmFsdWUsXG4gICAgICAgICAgICAgICAgbmV3VmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICAgICAgc3RhdGU6ICdjaGFuZ2VkJyxcbiAgICAgICAgICAgICAgICBkYXRhOiB1cGRhdGVkRGF0YSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8vIFBhdGNoIHRoZSBzdGF0ZVxuICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICAgIHByZXZpb3VzU25hcHNob3Q6IHN0b3JlLnNuYXBzaG90KCksIC8vIFNhdmUgdGhlIHByZXZpb3VzIHN0YXRlXG4gICAgICAgICAgICAgICAgZGF0YTogdXBkYXRlZERhdGEsXG4gICAgICAgICAgICAgICAgc3RhdGU6ICdjaGFuZ2VkJyxcbiAgICAgICAgICAgICAgICBsYXN0Q2hhbmdlOiBjaGFuZ2VFdmVudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIHBhdGNoKGNvbnRleHQ6IHt9KSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RGF0YSA9IGNsb25lRGVlcChzdG9yZS5kYXRhKCkpO1xuICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSB2YWx1ZSBhbmQgcHJlcGFyZSB0aGUgY2hhbmdlIGV2ZW50XG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IHsgLi4uY3VycmVudERhdGEsIC4uLmNvbnRleHQgfTtcbiAgICAgICAgICAgIGNvbnN0IGNoYW5nZUV2ZW50OiBBWFBDb250ZXh0Q2hhbmdlRXZlbnQgPSB7XG4gICAgICAgICAgICAgICAgc3RhdGU6ICdwYXRjaCcsXG4gICAgICAgICAgICAgICAgZGF0YTogdXBkYXRlZERhdGEsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvLyBQYXRjaCB0aGUgc3RhdGVcbiAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgICAgICBwcmV2aW91c1NuYXBzaG90OiBzdG9yZS5zbmFwc2hvdCgpLCAvLyBTYXZlIHRoZSBwcmV2aW91cyBzdGF0ZVxuICAgICAgICAgICAgICAgIGRhdGE6IHVwZGF0ZWREYXRhLFxuICAgICAgICAgICAgICAgIHN0YXRlOiAnY2hhbmdlZCcsXG4gICAgICAgICAgICAgICAgbGFzdENoYW5nZTogY2hhbmdlRXZlbnQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcblxuICAgICAgICAvLyBSZXNldCB0byB0aGUgaW5pdGlhbCBzdGF0ZVxuICAgICAgICByZXNldCgpIHtcbiAgICAgICAgICAgIGNvbnN0IGluaXRpYWxEYXRhID0gc3RvcmUuaW5pdGlhbCgpO1xuICAgICAgICAgICAgY29uc3QgY2hhbmdlRXZlbnQ6IEFYUENvbnRleHRDaGFuZ2VFdmVudCA9IHtcbiAgICAgICAgICAgICAgICBvbGRWYWx1ZTogY2xvbmVEZWVwKHN0b3JlLmRhdGEoKSksIC8vIEN1cnJlbnQgZGF0YSBiZWNvbWVzIG9sZCB2YWx1ZVxuICAgICAgICAgICAgICAgIG5ld1ZhbHVlOiBjbG9uZURlZXAoaW5pdGlhbERhdGEpLCAvLyBSZXNldCB0byB0aGUgaW5pdGlhbCBzdGF0ZVxuICAgICAgICAgICAgICAgIHBhdGg6ICcnLFxuICAgICAgICAgICAgICAgIHN0YXRlOiAncmVzdG9yZWQnLFxuICAgICAgICAgICAgICAgIGRhdGE6IGluaXRpYWxEYXRhLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICAgIHByZXZpb3VzU25hcHNob3Q6IHN0b3JlLnNuYXBzaG90KCksIC8vIFNhdmUgdGhlIHByZXZpb3VzIHN0YXRlXG4gICAgICAgICAgICAgICAgZGF0YTogaW5pdGlhbERhdGEsXG4gICAgICAgICAgICAgICAgc3RhdGU6ICdyZXN0b3JlZCcsXG4gICAgICAgICAgICAgICAgbGFzdENoYW5nZTogY2hhbmdlRXZlbnQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcblxuICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBzdGF0ZVxuICAgICAgICBzZXQoaW5pdGlhbERhdGE6IGFueSkge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudERhdGEgPSBzdG9yZS5kYXRhKCk7XG4gICAgICAgICAgICBpZiAoaXNFcXVhbChjdXJyZW50RGF0YSwgaW5pdGlhbERhdGEpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBTa2lwIGlmIHRoZSBjdXJyZW50IHN0YXRlIG1hdGNoZXMgdGhlIGluaXRpYWwgc3RhdGVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgY2hhbmdlRXZlbnQ6IEFYUENvbnRleHRDaGFuZ2VFdmVudCA9IHtcbiAgICAgICAgICAgICAgICBvbGRWYWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICBuZXdWYWx1ZTogY2xvbmVEZWVwKGluaXRpYWxEYXRhKSxcbiAgICAgICAgICAgICAgICBwYXRoOiAnJyxcbiAgICAgICAgICAgICAgICBzdGF0ZTogJ2luaXRpYXRlZCcsXG4gICAgICAgICAgICAgICAgZGF0YTogaW5pdGlhbERhdGEsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICAgICAgaW5pdGlhbFNuYXBzaG90OiBjbG9uZURlZXAoaW5pdGlhbERhdGEpLCAvLyBTYXZlIHRoZSBpbml0aWFsIHN0YXRlXG4gICAgICAgICAgICAgICAgcHJldmlvdXNTbmFwc2hvdDogc3RvcmUuc25hcHNob3QoKSwgLy8gU2F2ZSB0aGUgY3VycmVudCBzdGF0ZSBhcyB0aGUgcHJldmlvdXNcbiAgICAgICAgICAgICAgICBkYXRhOiBpbml0aWFsRGF0YSxcbiAgICAgICAgICAgICAgICBzdGF0ZTogJ2luaXRpYXRlZCcsXG4gICAgICAgICAgICAgICAgbGFzdENoYW5nZTogY2hhbmdlRXZlbnQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gR2V0IGEgc3BlY2lmaWMgdmFsdWVcbiAgICAgICAgZ2V0VmFsdWUocGF0aDogc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0U21hcnQoc3RvcmUuZGF0YSgpLCBwYXRoKTtcbiAgICAgICAgfSxcbiAgICB9KSlcbik7XG4iXX0=","export class AXPDataGenerator {\n static uuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (char) => {\n const random = (Math.random() * 16) | 0;\n const value = char === 'x' ? random : (random & 0x3) | 0x8;\n return value.toString(16);\n });\n }\n static number(...args) {\n let min = 0;\n let max = 100;\n if (args.length == 1)\n max = args[0];\n if (args.length == 2) {\n min = args[0];\n max = args[1];\n }\n return Math.floor(Math.random() * (max - min + 1)) + min;\n }\n static date(...args) {\n let start = new Date(2000, 0, 1);\n let end = new Date();\n if (args.length === 1) {\n start = args[0];\n }\n else if (args.length === 2) {\n start = args[0];\n end = args[1];\n }\n const startTime = start.getTime();\n const endTime = end.getTime();\n return new Date(startTime + Math.random() * (endTime - startTime));\n }\n static array(length = 5, generator) {\n return Array.from({ length }, generator);\n }\n static pick(...args) {\n if (args.length < 1) {\n throw new Error('Invalid parameters');\n }\n const items = args[0];\n const count = args[1] ?? 1;\n if (count < 1) {\n throw new Error('Count must be at least 1');\n }\n // If the count is greater than the number of items, just return a shuffled copy of the array\n if (count >= items.length) {\n return [...items].sort(() => Math.random() - 0.5);\n }\n // Shuffle the array and slice the first 'count' elements\n const shuffled = items.slice();\n for (let i = shuffled.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]]; // Swap elements\n }\n return count == 1 ? shuffled.slice(0, count)[0] : shuffled.slice(0, count);\n }\n static string(length = 10) {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n return Array.from({ length }, () => chars.charAt(Math.floor(Math.random() * chars.length))).join('');\n }\n static boolean() {\n return Math.random() >= 0.5;\n }\n static item(array = []) {\n return array.length > 0 ? array[Math.floor(Math.random() * array.length)] : undefined;\n }\n static color(format = 'hex') {\n // Generate HSL values with safe ranges for good contrast\n const h = Math.floor(Math.random() * 360);\n const s = Math.floor(Math.random() * 20) + 60; // 60% - 80%\n const l = Math.floor(Math.random() * 20) + 40; // 40% - 60%\n if (format === 'hsl') {\n return `hsl(${h}, ${s}%, ${l}%)`;\n }\n // Convert HSL to RGB\n const { r, g, b } = this.hslToRgb(h, s / 100, l / 100);\n if (format === 'rgb') {\n return `rgb(${r}, ${g}, ${b})`;\n }\n // Convert RGB to HEX\n const toHex = (val) => val.toString(16).padStart(2, '0');\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n }\n //TODO: move or read from utils\n static hslToRgb(h, s, l) {\n const c = (1 - Math.abs(2 * l - 1)) * s;\n const x = c * (1 - Math.abs((h / 60) % 2 - 1));\n const m = l - c / 2;\n let r = 0, g = 0, b = 0;\n if (h < 60)\n [r, g, b] = [c, x, 0];\n else if (h < 120)\n [r, g, b] = [x, c, 0];\n else if (h < 180)\n [r, g, b] = [0, c, x];\n else if (h < 240)\n [r, g, b] = [0, x, c];\n else if (h < 300)\n [r, g, b] = [x, 0, c];\n else\n [r, g, b] = [c, 0, x];\n return {\n r: Math.round((r + m) * 255),\n g: Math.round((g + m) * 255),\n b: Math.round((b + m) * 255)\n };\n }\n static alphanumeric(length = 10) {\n const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\n return Array.from({ length }, () => chars.charAt(Math.floor(Math.random() * chars.length))).join('');\n }\n static alphabet(length = 10) {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\n return Array.from({ length }, () => chars.charAt(Math.floor(Math.random() * chars.length))).join('');\n }\n static phone() {\n const areaCode = this.number(100, 999);\n const exchangeCode = this.number(100, 999);\n const lineNumber = this.number(1000, 9999);\n return `${areaCode}-${exchangeCode}-${lineNumber}`;\n }\n static firstName() {\n const firstNames = ['John', 'Allen', 'Jak', 'Rose', 'Kate', 'Liam', 'Olivia', 'Noah', 'Emma', 'Ava'];\n return this.pick(firstNames);\n }\n static lastName() {\n const lastNames = ['Gates', 'Jonsen', 'Smith', 'Ford', 'Jakson', 'Brown', 'Johnson', 'Williams', 'Jones', 'Garcia'];\n return this.pick(lastNames);\n }\n static email(...args) {\n const domains = ['gmail.com', 'yahoo.com', 'outlook.com', 'example.com'];\n const domain = this.pick(domains);\n const separator = this.pick(['.', '_', '']);\n const randomSuffix = this.boolean() ? this.number(1, 99).toString() : '';\n if (args.length === 2) {\n const firstName = args[0].toLowerCase();\n const lastName = args[1].toLowerCase();\n return `${firstName}${separator}${lastName}${randomSuffix}@${domain}`;\n }\n else {\n const firstName = this.firstName().toLowerCase();\n const lastName = this.lastName().toLowerCase();\n return `${firstName}${separator}${lastName}${randomSuffix}@${domain}`;\n }\n }\n static country() {\n const countries = ['USA', 'Canada', 'Mexico', 'Germany', 'France', 'Japan', 'Australia'];\n return this.pick(countries);\n }\n static city() {\n const cities = ['Los Angeles', 'Toronto', 'Vancouver', 'Berlin', 'Paris', 'Tokyo', 'Sydney'];\n return this.pick(cities);\n }\n static state() {\n const states = ['NY', 'CA', 'TX', 'ON', 'BC', 'NSW', 'BER', 'IDF', 'TYO'];\n return this.pick(states);\n }\n static address() {\n const streets = ['Main St', 'High St', 'Maple Ave', 'Oak St', 'Pine St', 'Cedar St'];\n const streetNumber = this.number(100, 9999);\n const street = this.pick(streets);\n const city = this.city();\n const state = this.state();\n const zip = this.number(10000, 99999);\n const country = this.country();\n return `${streetNumber} ${street}, ${city}, ${state} ${zip}, ${country}`;\n }\n static avatar() {\n return `https://avatar.iran.liara.run/public/${this.pick([35, 22, 16, 6, 31])}`;\n //return `https://i.pravatar.cc/300?u=${this.uuid()}`;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1nZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2NvcmUvc3JjL2xpYi9kYXRhL2RhdGEtZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsTUFBTSxDQUFDLElBQUk7UUFDVCxPQUFPLHNDQUFzQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN0RSxNQUFNLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDeEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDM0QsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUlELE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFjO1FBQzdCLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNaLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNkLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDO1lBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDckIsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNkLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQzNELENBQUM7SUFLRCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBVztRQUN4QixJQUFJLEtBQUssR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFFckIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3RCLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEIsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM3QixLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hCLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEIsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNsQyxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDOUIsT0FBTyxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUksU0FBaUIsQ0FBQyxFQUFFLFNBQWtCO1FBQ3BELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFJRCxNQUFNLENBQUMsSUFBSSxDQUFJLEdBQUcsSUFBVztRQUMzQixJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFDRCxNQUFNLEtBQUssR0FBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsTUFBTSxLQUFLLEdBQVcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBRUQsNkZBQTZGO1FBQzdGLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMxQixPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFFRCx5REFBeUQ7UUFDekQsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQy9CLEtBQUssSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzdDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0I7UUFDM0UsQ0FBQztRQUNELE9BQU8sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQWlCLEVBQUU7UUFDL0IsTUFBTSxLQUFLLEdBQUcsZ0VBQWdFLENBQUM7UUFDL0UsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2RyxDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQU87UUFDWixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxHQUFHLENBQUM7SUFDOUIsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFJLENBQUksUUFBYSxFQUFFO1FBQzVCLE9BQU8sS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3hGLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQWdDLEtBQUs7UUFDaEQseURBQXlEO1FBQ3pELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFlBQVk7UUFDM0QsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsWUFBWTtRQUUzRCxJQUFJLE1BQU0sS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUNyQixPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztRQUNuQyxDQUFDO1FBRUQscUJBQXFCO1FBQ3JCLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBRXZELElBQUksTUFBTSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3JCLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQ2pDLENBQUM7UUFFRCxxQkFBcUI7UUFDckIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNqRSxPQUFPLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRUQsK0JBQStCO0lBQ3ZCLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxDQUFTO1FBQ3JELE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXhCLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQzdCLElBQUksQ0FBQyxHQUFHLEdBQUc7WUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ25DLElBQUksQ0FBQyxHQUFHLEdBQUc7WUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ25DLElBQUksQ0FBQyxHQUFHLEdBQUc7WUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ25DLElBQUksQ0FBQyxHQUFHLEdBQUc7WUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDOztZQUNwQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTFCLE9BQU87WUFDTCxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDNUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO1lBQzVCLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztTQUM3QixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBaUIsRUFBRTtRQUNyQyxNQUFNLEtBQUssR0FBRyxnRUFBZ0UsQ0FBQztRQUMvRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZHLENBQUM7SUFDRCxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQWlCLEVBQUU7UUFDakMsTUFBTSxLQUFLLEdBQUcsc0RBQXNELENBQUM7UUFDckUsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2RyxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUs7UUFDVixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN2QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMzQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzQyxPQUFPLEdBQUcsUUFBUSxJQUFJLFlBQVksSUFBSSxVQUFVLEVBQUUsQ0FBQztJQUNyRCxDQUFDO0lBRUQsTUFBTSxDQUFDLFNBQVM7UUFDZCxNQUFNLFVBQVUsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JHLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVE7UUFDYixNQUFNLFNBQVMsR0FBRyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3BILE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBSUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQVc7UUFDekIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUN6RSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRXpFLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN0QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDeEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3ZDLE9BQU8sR0FBRyxTQUFTLEdBQUcsU0FBUyxHQUFHLFFBQVEsR0FBRyxZQUFZLElBQUksTUFBTSxFQUFFLENBQUM7UUFDeEUsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQy9DLE9BQU8sR0FBRyxTQUFTLEdBQUcsU0FBUyxHQUFHLFFBQVEsR0FBRyxZQUFZLElBQUksTUFBTSxFQUFFLENBQUM7UUFDeEUsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsT0FBTztRQUNaLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDekYsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBSTtRQUNULE1BQU0sTUFBTSxHQUFHLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDN0YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSztRQUNWLE1BQU0sTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMxRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFPO1FBQ1osTUFBTSxPQUFPLEdBQUcsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3JGLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzVDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN0QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDL0IsT0FBTyxHQUFHLFlBQVksSUFBSSxNQUFNLEtBQUssSUFBSSxLQUFLLEtBQUssSUFBSSxHQUFHLEtBQUssT0FBTyxFQUFFLENBQUM7SUFDM0UsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNO1FBQ1gsT0FBTyx3Q0FBd0MsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDaEYsc0RBQXNEO0lBQ3hELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0IGNsYXNzIEFYUERhdGFHZW5lcmF0b3Ige1xuICBzdGF0aWMgdXVpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiAneHh4eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4Jy5yZXBsYWNlKC9beHldL2csIChjaGFyKSA9PiB7XG4gICAgICBjb25zdCByYW5kb20gPSAoTWF0aC5yYW5kb20oKSAqIDE2KSB8IDA7XG4gICAgICBjb25zdCB2YWx1ZSA9IGNoYXIgPT09ICd4JyA/IHJhbmRvbSA6IChyYW5kb20gJiAweDMpIHwgMHg4O1xuICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKDE2KTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBudW1iZXIobWF4OiBudW1iZXIpOiBudW1iZXI7XG4gIHN0YXRpYyBudW1iZXIobWluOiBudW1iZXIsIG1heDogbnVtYmVyKTogbnVtYmVyO1xuICBzdGF0aWMgbnVtYmVyKC4uLmFyZ3M6IG51bWJlcltdKTogbnVtYmVyIHtcbiAgICBsZXQgbWluID0gMDtcbiAgICBsZXQgbWF4ID0gMTAwO1xuICAgIGlmIChhcmdzLmxlbmd0aCA9PSAxKSBtYXggPSBhcmdzWzBdO1xuICAgIGlmIChhcmdzLmxlbmd0aCA9PSAyKSB7XG4gICAgICBtaW4gPSBhcmdzWzBdO1xuICAgICAgbWF4ID0gYXJnc1sxXTtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4gKyAxKSkgKyBtaW47XG4gIH1cblxuICBzdGF0aWMgZGF0ZSgpOiBEYXRlO1xuICBzdGF0aWMgZGF0ZShzdGFydDogRGF0ZSk6IERhdGU7XG4gIHN0YXRpYyBkYXRlKHN0YXJ0OiBEYXRlLCBlbmQ6IERhdGUpOiBEYXRlO1xuICBzdGF0aWMgZGF0ZSguLi5hcmdzOiBhbnlbXSk6IERhdGUge1xuICAgIGxldCBzdGFydCA9IG5ldyBEYXRlKDIwMDAsIDAsIDEpO1xuICAgIGxldCBlbmQgPSBuZXcgRGF0ZSgpO1xuXG4gICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICBzdGFydCA9IGFyZ3NbMF07XG4gICAgfSBlbHNlIGlmIChhcmdzLmxlbmd0aCA9PT0gMikge1xuICAgICAgc3RhcnQgPSBhcmdzWzBdO1xuICAgICAgZW5kID0gYXJnc1sxXTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFydFRpbWUgPSBzdGFydC5nZXRUaW1lKCk7XG4gICAgY29uc3QgZW5kVGltZSA9IGVuZC5nZXRUaW1lKCk7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHN0YXJ0VGltZSArIE1hdGgucmFuZG9tKCkgKiAoZW5kVGltZSAtIHN0YXJ0VGltZSkpO1xuICB9XG5cbiAgc3RhdGljIGFycmF5PFQ+KGxlbmd0aDogbnVtYmVyID0gNSwgZ2VuZXJhdG9yOiAoKSA9PiBUKTogVFtdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aCB9LCBnZW5lcmF0b3IpO1xuICB9XG5cbiAgc3RhdGljIHBpY2s8VD4oaXRlbXM6IFRbXSk6IFQ7XG4gIHN0YXRpYyBwaWNrPFQ+KGl0ZW1zOiBUW10sIGNvdW50OiBudW1iZXIpOiBUW107XG4gIHN0YXRpYyBwaWNrPFQ+KC4uLmFyZ3M6IGFueVtdKTogVCB8IFRbXSB7XG4gICAgaWYgKGFyZ3MubGVuZ3RoIDwgMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHBhcmFtZXRlcnMnKTtcbiAgICB9XG4gICAgY29uc3QgaXRlbXM6IFRbXSA9IGFyZ3NbMF07XG4gICAgY29uc3QgY291bnQ6IG51bWJlciA9IGFyZ3NbMV0gPz8gMTtcbiAgICBpZiAoY291bnQgPCAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdW50IG11c3QgYmUgYXQgbGVhc3QgMScpO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSBjb3VudCBpcyBncmVhdGVyIHRoYW4gdGhlIG51bWJlciBvZiBpdGVtcywganVzdCByZXR1cm4gYSBzaHVmZmxlZCBjb3B5IG9mIHRoZSBhcnJheVxuICAgIGlmIChjb3VudCA+PSBpdGVtcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBbLi4uaXRlbXNdLnNvcnQoKCkgPT4gTWF0aC5yYW5kb20oKSAtIDAuNSk7XG4gICAgfVxuXG4gICAgLy8gU2h1ZmZsZSB0aGUgYXJyYXkgYW5kIHNsaWNlIHRoZSBmaXJzdCAnY291bnQnIGVsZW1lbnRzXG4gICAgY29uc3Qgc2h1ZmZsZWQgPSBpdGVtcy5zbGljZSgpO1xuICAgIGZvciAobGV0IGkgPSBzaHVmZmxlZC5sZW5ndGggLSAxOyBpID4gMDsgaS0tKSB7XG4gICAgICBjb25zdCBqID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKGkgKyAxKSk7XG4gICAgICBbc2h1ZmZsZWRbaV0sIHNodWZmbGVkW2pdXSA9IFtzaHVmZmxlZFtqXSwgc2h1ZmZsZWRbaV1dOyAvLyBTd2FwIGVsZW1lbnRzXG4gICAgfVxuICAgIHJldHVybiBjb3VudCA9PSAxID8gc2h1ZmZsZWQuc2xpY2UoMCwgY291bnQpWzBdIDogc2h1ZmZsZWQuc2xpY2UoMCwgY291bnQpO1xuICB9XG5cbiAgc3RhdGljIHN0cmluZyhsZW5ndGg6IG51bWJlciA9IDEwKTogc3RyaW5nIHtcbiAgICBjb25zdCBjaGFycyA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSc7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGggfSwgKCkgPT4gY2hhcnMuY2hhckF0KE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGNoYXJzLmxlbmd0aCkpKS5qb2luKCcnKTtcbiAgfVxuXG4gIHN0YXRpYyBib29sZWFuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBNYXRoLnJhbmRvbSgpID49IDAuNTtcbiAgfVxuXG4gIHN0YXRpYyBpdGVtPFQ+KGFycmF5OiBUW10gPSBbXSk6IFQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBhcnJheS5sZW5ndGggPiAwID8gYXJyYXlbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogYXJyYXkubGVuZ3RoKV0gOiB1bmRlZmluZWQ7XG4gIH1cblxuICBzdGF0aWMgY29sb3IoZm9ybWF0OiAnaHNsJyB8ICdyZ2InIHwgJ2hleCcgPSAnaGV4Jyk6IHN0cmluZyB7XG4gICAgLy8gR2VuZXJhdGUgSFNMIHZhbHVlcyB3aXRoIHNhZmUgcmFuZ2VzIGZvciBnb29kIGNvbnRyYXN0XG4gICAgY29uc3QgaCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDM2MCk7XG4gICAgY29uc3QgcyA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDIwKSArIDYwOyAvLyA2MCUgLSA4MCVcbiAgICBjb25zdCBsID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMjApICsgNDA7IC8vIDQwJSAtIDYwJVxuXG4gICAgaWYgKGZvcm1hdCA9PT0gJ2hzbCcpIHtcbiAgICAgIHJldHVybiBgaHNsKCR7aH0sICR7c30lLCAke2x9JSlgO1xuICAgIH1cblxuICAgIC8vIENvbnZlcnQgSFNMIHRvIFJHQlxuICAgIGNvbnN0IHsgciwgZywgYiB9ID0gdGhpcy5oc2xUb1JnYihoLCBzIC8gMTAwLCBsIC8gMTAwKTtcblxuICAgIGlmIChmb3JtYXQgPT09ICdyZ2InKSB7XG4gICAgICByZXR1cm4gYHJnYigke3J9LCAke2d9LCAke2J9KWA7XG4gICAgfVxuXG4gICAgLy8gQ29udmVydCBSR0IgdG8gSEVYXG4gICAgY29uc3QgdG9IZXggPSAodmFsOiBudW1iZXIpID0+IHZhbC50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKTtcbiAgICByZXR1cm4gYCMke3RvSGV4KHIpfSR7dG9IZXgoZyl9JHt0b0hleChiKX1gO1xuICB9XG5cbiAgLy9UT0RPOiBtb3ZlIG9yIHJlYWQgZnJvbSB1dGlsc1xuICBwcml2YXRlIHN0YXRpYyBoc2xUb1JnYihoOiBudW1iZXIsIHM6IG51bWJlciwgbDogbnVtYmVyKTogeyByOiBudW1iZXI7IGc6IG51bWJlcjsgYjogbnVtYmVyIH0ge1xuICAgIGNvbnN0IGMgPSAoMSAtIE1hdGguYWJzKDIgKiBsIC0gMSkpICogcztcbiAgICBjb25zdCB4ID0gYyAqICgxIC0gTWF0aC5hYnMoKGggLyA2MCkgJSAyIC0gMSkpO1xuICAgIGNvbnN0IG0gPSBsIC0gYyAvIDI7XG4gICAgbGV0IHIgPSAwLCBnID0gMCwgYiA9IDA7XG5cbiAgICBpZiAoaCA8IDYwKSBbciwgZywgYl0gPSBbYywgeCwgMF07XG4gICAgZWxzZSBpZiAoaCA8IDEyMCkgW3IsIGcsIGJdID0gW3gsIGMsIDBdO1xuICAgIGVsc2UgaWYgKGggPCAxODApIFtyLCBnLCBiXSA9IFswLCBjLCB4XTtcbiAgICBlbHNlIGlmIChoIDwgMjQwKSBbciwgZywgYl0gPSBbMCwgeCwgY107XG4gICAgZWxzZSBpZiAoaCA8IDMwMCkgW3IsIGcsIGJdID0gW3gsIDAsIGNdO1xuICAgIGVsc2VbciwgZywgYl0gPSBbYywgMCwgeF07XG5cbiAgICByZXR1cm4ge1xuICAgICAgcjogTWF0aC5yb3VuZCgociArIG0pICogMjU1KSxcbiAgICAgIGc6IE1hdGgucm91bmQoKGcgKyBtKSAqIDI1NSksXG4gICAgICBiOiBNYXRoLnJvdW5kKChiICsgbSkgKiAyNTUpXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBhbHBoYW51bWVyaWMobGVuZ3RoOiBudW1iZXIgPSAxMCk6IHN0cmluZyB7XG4gICAgY29uc3QgY2hhcnMgPSAnMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonO1xuICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoIH0sICgpID0+IGNoYXJzLmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFycy5sZW5ndGgpKSkuam9pbignJyk7XG4gIH1cbiAgc3RhdGljIGFscGhhYmV0KGxlbmd0aDogbnVtYmVyID0gMTApOiBzdHJpbmcge1xuICAgIGNvbnN0IGNoYXJzID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonO1xuICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoIH0sICgpID0+IGNoYXJzLmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFycy5sZW5ndGgpKSkuam9pbignJyk7XG4gIH1cblxuICBzdGF0aWMgcGhvbmUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBhcmVhQ29kZSA9IHRoaXMubnVtYmVyKDEwMCwgOTk5KTtcbiAgICBjb25zdCBleGNoYW5nZUNvZGUgPSB0aGlzLm51bWJlcigxMDAsIDk5OSk7XG4gICAgY29uc3QgbGluZU51bWJlciA9IHRoaXMubnVtYmVyKDEwMDAsIDk5OTkpO1xuICAgIHJldHVybiBgJHthcmVhQ29kZX0tJHtleGNoYW5nZUNvZGV9LSR7bGluZU51bWJlcn1gO1xuICB9XG5cbiAgc3RhdGljIGZpcnN0TmFtZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGZpcnN0TmFtZXMgPSBbJ0pvaG4nLCAnQWxsZW4nLCAnSmFrJywgJ1Jvc2UnLCAnS2F0ZScsICdMaWFtJywgJ09saXZpYScsICdOb2FoJywgJ0VtbWEnLCAnQXZhJ107XG4gICAgcmV0dXJuIHRoaXMucGljayhmaXJzdE5hbWVzKTtcbiAgfVxuXG4gIHN0YXRpYyBsYXN0TmFtZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGxhc3ROYW1lcyA9IFsnR2F0ZXMnLCAnSm9uc2VuJywgJ1NtaXRoJywgJ0ZvcmQnLCAnSmFrc29uJywgJ0Jyb3duJywgJ0pvaG5zb24nLCAnV2lsbGlhbXMnLCAnSm9uZXMnLCAnR2FyY2lhJ107XG4gICAgcmV0dXJuIHRoaXMucGljayhsYXN0TmFtZXMpO1xuICB9XG5cbiAgc3RhdGljIGVtYWlsKCk6IHN0cmluZztcbiAgc3RhdGljIGVtYWlsKGZpcnN0TmFtZTogc3RyaW5nLCBsYXN0TmFtZTogc3RyaW5nKTogc3RyaW5nO1xuICBzdGF0aWMgZW1haWwoLi4uYXJnczogYW55W10pOiBzdHJpbmcge1xuICAgIGNvbnN0IGRvbWFpbnMgPSBbJ2dtYWlsLmNvbScsICd5YWhvby5jb20nLCAnb3V0bG9vay5jb20nLCAnZXhhbXBsZS5jb20nXTtcbiAgICBjb25zdCBkb21haW4gPSB0aGlzLnBpY2soZG9tYWlucyk7XG4gICAgY29uc3Qgc2VwYXJhdG9yID0gdGhpcy5waWNrKFsnLicsICdfJywgJyddKTtcbiAgICBjb25zdCByYW5kb21TdWZmaXggPSB0aGlzLmJvb2xlYW4oKSA/IHRoaXMubnVtYmVyKDEsIDk5KS50b1N0cmluZygpIDogJyc7XG5cbiAgICBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgIGNvbnN0IGZpcnN0TmFtZSA9IGFyZ3NbMF0udG9Mb3dlckNhc2UoKTtcbiAgICAgIGNvbnN0IGxhc3ROYW1lID0gYXJnc1sxXS50b0xvd2VyQ2FzZSgpO1xuICAgICAgcmV0dXJuIGAke2ZpcnN0TmFtZX0ke3NlcGFyYXRvcn0ke2xhc3ROYW1lfSR7cmFuZG9tU3VmZml4fUAke2RvbWFpbn1gO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBmaXJzdE5hbWUgPSB0aGlzLmZpcnN0TmFtZSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgICBjb25zdCBsYXN0TmFtZSA9IHRoaXMubGFzdE5hbWUoKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgcmV0dXJuIGAke2ZpcnN0TmFtZX0ke3NlcGFyYXRvcn0ke2xhc3ROYW1lfSR7cmFuZG9tU3VmZml4fUAke2RvbWFpbn1gO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBjb3VudHJ5KCk6IHN0cmluZyB7XG4gICAgY29uc3QgY291bnRyaWVzID0gWydVU0EnLCAnQ2FuYWRhJywgJ01leGljbycsICdHZXJtYW55JywgJ0ZyYW5jZScsICdKYXBhbicsICdBdXN0cmFsaWEnXTtcbiAgICByZXR1cm4gdGhpcy5waWNrKGNvdW50cmllcyk7XG4gIH1cblxuICBzdGF0aWMgY2l0eSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNpdGllcyA9IFsnTG9zIEFuZ2VsZXMnLCAnVG9yb250bycsICdWYW5jb3V2ZXInLCAnQmVybGluJywgJ1BhcmlzJywgJ1Rva3lvJywgJ1N5ZG5leSddO1xuICAgIHJldHVybiB0aGlzLnBpY2soY2l0aWVzKTtcbiAgfVxuXG4gIHN0YXRpYyBzdGF0ZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN0YXRlcyA9IFsnTlknLCAnQ0EnLCAnVFgnLCAnT04nLCAnQkMnLCAnTlNXJywgJ0JFUicsICdJREYnLCAnVFlPJ107XG4gICAgcmV0dXJuIHRoaXMucGljayhzdGF0ZXMpO1xuICB9XG5cbiAgc3RhdGljIGFkZHJlc3MoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdHJlZXRzID0gWydNYWluIFN0JywgJ0hpZ2ggU3QnLCAnTWFwbGUgQXZlJywgJ09hayBTdCcsICdQaW5lIFN0JywgJ0NlZGFyIFN0J107XG4gICAgY29uc3Qgc3RyZWV0TnVtYmVyID0gdGhpcy5udW1iZXIoMTAwLCA5OTk5KTtcbiAgICBjb25zdCBzdHJlZXQgPSB0aGlzLnBpY2soc3RyZWV0cyk7XG4gICAgY29uc3QgY2l0eSA9IHRoaXMuY2l0eSgpO1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZSgpO1xuICAgIGNvbnN0IHppcCA9IHRoaXMubnVtYmVyKDEwMDAwLCA5OTk5OSk7XG4gICAgY29uc3QgY291bnRyeSA9IHRoaXMuY291bnRyeSgpO1xuICAgIHJldHVybiBgJHtzdHJlZXROdW1iZXJ9ICR7c3RyZWV0fSwgJHtjaXR5fSwgJHtzdGF0ZX0gJHt6aXB9LCAke2NvdW50cnl9YDtcbiAgfVxuXG4gIHN0YXRpYyBhdmF0YXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYGh0dHBzOi8vYXZhdGFyLmlyYW4ubGlhcmEucnVuL3B1YmxpYy8ke3RoaXMucGljayhbMzUsIDIyLCAxNiwgNiwgMzFdKX1gO1xuICAgIC8vcmV0dXJuIGBodHRwczovL2kucHJhdmF0YXIuY2MvMzAwP3U9JHt0aGlzLnV1aWQoKX1gO1xuICB9XG59XG4iXX0=","import { extractValue } from \"../utils/object-util\";\nexport function objectKeyValueTransforms(keyName) {\n return {\n getter: (value) => {\n return extractValue(value, keyName);\n },\n setter: (value) => {\n return extractValue(value, keyName);\n },\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtdHJhbnNmb3JtZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2NvcmUvc3JjL2xpYi9kYXRhL3ZhbHVlLXRyYW5zZm9ybWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQVFwRCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsT0FBZTtJQUNwRCxPQUFPO1FBQ0gsTUFBTSxFQUFFLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDbkIsT0FBTyxZQUFZLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFDRCxNQUFNLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUNuQixPQUFPLFlBQVksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDeEMsQ0FBQztLQUNKLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXh0cmFjdFZhbHVlIH0gZnJvbSBcIi4uL3V0aWxzL29iamVjdC11dGlsXCI7XG5leHBvcnQgdHlwZSBBWFBWYWx1ZVRyYW5zZm9ybWVyRnVuY3Rpb24gPSAodmFsdWU6IGFueSkgPT4gYW55O1xuXG5leHBvcnQgdHlwZSBBWFBWYWx1ZVRyYW5zZm9ybWVyRnVuY3Rpb25zID0ge1xuICAgIGdldHRlcj86IEFYUFZhbHVlVHJhbnNmb3JtZXJGdW5jdGlvbjtcbiAgICBzZXR0ZXI/OiBBWFBWYWx1ZVRyYW5zZm9ybWVyRnVuY3Rpb247XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gb2JqZWN0S2V5VmFsdWVUcmFuc2Zvcm1zKGtleU5hbWU6IHN0cmluZyk6IEFYUFZhbHVlVHJhbnNmb3JtZXJGdW5jdGlvbnMge1xuICAgIHJldHVybiB7XG4gICAgICAgIGdldHRlcjogKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBleHRyYWN0VmFsdWUodmFsdWUsIGtleU5hbWUpO1xuICAgICAgICB9LFxuICAgICAgICBzZXR0ZXI6ICh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZXh0cmFjdFZhbHVlKHZhbHVlLCBrZXlOYW1lKTtcbiAgICAgICAgfSxcbiAgICB9O1xufSJdfQ==","//#region ---- Imports ----\nimport { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n//#endregion\n//#region ---- Provider Registry Service ----\n/**\n * Registry service for dynamically loaded module providers.\n * Stores provider instances that are loaded conditionally based on access control.\n */\nexport class AXPModuleProviderRegistry {\n constructor() {\n //#region ---- Fields ----\n this.permissionProviders = [];\n this.menuProviders = [];\n this.entityProviders = [];\n this.settingProviders = [];\n this.searchProviders = [];\n this.featureProviders = [];\n this.datasourceProviders = [];\n }\n //#endregion\n //#region ---- Public Methods ----\n /**\n * Register a permission provider.\n */\n registerPermissionProvider(provider) {\n this.permissionProviders.push(provider);\n }\n /**\n * Get all registered permission providers.\n */\n getPermissionProviders() {\n return [...this.permissionProviders];\n }\n /**\n * Register a menu provider.\n */\n registerMenuProvider(provider) {\n this.menuProviders.push(provider);\n }\n /**\n * Get all registered menu providers.\n */\n getMenuProviders() {\n return [...this.menuProviders];\n }\n /**\n * Register an entity provider.\n */\n registerEntityProvider(provider) {\n this.entityProviders.push(provider);\n }\n /**\n * Get all registered entity providers.\n */\n getEntityProviders() {\n return [...this.entityProviders];\n }\n /**\n * Register a settings provider.\n */\n registerSettingProvider(provider) {\n this.settingProviders.push(provider);\n }\n /**\n * Get all registered settings providers.\n */\n getSettingProviders() {\n return [...this.settingProviders];\n }\n /**\n * Register a search provider.\n */\n registerSearchProvider(provider) {\n this.searchProviders.push(provider);\n }\n /**\n * Get all registered search providers.\n */\n getSearchProviders() {\n return [...this.searchProviders];\n }\n /**\n * Register a feature provider.\n */\n registerFeatureProvider(provider) {\n this.featureProviders.push(provider);\n }\n /**\n * Get all registered feature providers.\n */\n getFeatureProviders() {\n return [...this.featureProviders];\n }\n /**\n * Register a datasource provider.\n */\n registerDatasourceProvider(provider) {\n this.datasourceProviders.push(provider);\n }\n /**\n * Get all registered datasource providers.\n */\n getDatasourceProviders() {\n return [...this.datasourceProviders];\n }\n /**\n * Clear all registered providers.\n * Useful for testing or re-initialization.\n */\n clear() {\n this.permissionProviders.length = 0;\n this.menuProviders.length = 0;\n this.entityProviders.length = 0;\n this.settingProviders.length = 0;\n this.searchProviders.length = 0;\n this.featureProviders.length = 0;\n this.datasourceProviders.length = 0;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPModuleProviderRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPModuleProviderRegistry, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPModuleProviderRegistry, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXItcmVnaXN0cnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL21vZHVsZS1tYW5pZmVzdC9wcm92aWRlci1yZWdpc3RyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUUvQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVczQyxZQUFZO0FBRVosaURBQWlEO0FBRWpEOzs7R0FHRztBQUVILE1BQU0sT0FBTyx5QkFBeUI7SUFEdEM7UUFFRSw4QkFBOEI7UUFFYix3QkFBbUIsR0FBdUMsRUFBRSxDQUFDO1FBQzdELGtCQUFhLEdBQXVCLEVBQUUsQ0FBQztRQUN2QyxvQkFBZSxHQUFnQyxFQUFFLENBQUM7UUFDbEQscUJBQWdCLEdBQW9DLEVBQUUsQ0FBQztRQUN2RCxvQkFBZSxHQUFnQyxFQUFFLENBQUM7UUFDbEQscUJBQWdCLEdBQW1DLEVBQUUsQ0FBQztRQUN0RCx3QkFBbUIsR0FBc0MsRUFBRSxDQUFDO0tBdUg5RTtJQXJIQyxZQUFZO0lBRVosc0NBQXNDO0lBRXRDOztPQUVHO0lBQ0gsMEJBQTBCLENBQUMsUUFBMEM7UUFDbkUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxzQkFBc0I7UUFDcEIsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsb0JBQW9CLENBQUMsUUFBMEI7UUFDN0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZ0JBQWdCO1FBQ2QsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7T0FFRztJQUNILHNCQUFzQixDQUFDLFFBQW1DO1FBQ3hELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7T0FFRztJQUNILGtCQUFrQjtRQUNoQixPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsdUJBQXVCLENBQUMsUUFBdUM7UUFDN0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUI7UUFDakIsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsc0JBQXNCLENBQUMsUUFBbUM7UUFDeEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsa0JBQWtCO1FBQ2hCLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCx1QkFBdUIsQ0FBQyxRQUFzQztRQUM1RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7T0FFRztJQUNILG1CQUFtQjtRQUNqQixPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCwwQkFBMEIsQ0FBQyxRQUF5QztRQUNsRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7T0FFRztJQUNILHNCQUFzQjtRQUNwQixPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSztRQUNILElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7K0dBN0hVLHlCQUF5QjttSEFBekIseUJBQXlCLGNBRFosTUFBTTs7NEZBQ25CLHlCQUF5QjtrQkFEckMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvLyNyZWdpb24gLS0tLSAgIEltcG9ydHMgICAtLS0tXG5cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUERhdGFTb3VyY2VEZWZpbml0aW9uUHJvdmlkZXIgfSBmcm9tICcuLi9kYXRhL2RhdGFzb3VyY2UtZGVmaW5pdGlvbi1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFYUEZlYXR1cmVEZWZpbml0aW9uUHJvdmlkZXIgfSBmcm9tICcuL2ZlYXR1cmUtZGVmaW5pdGlvbi5wcm92aWRlcic7XG5pbXBvcnQge1xuICBBWFBJUGVybWlzc2lvbkRlZmluaXRpb25Qcm92aWRlcixcbiAgQVhQSU1lbnVQcm92aWRlcixcbiAgQVhQSVNldHRpbmdEZWZpbml0aW9uUHJvdmlkZXIsXG4gIEFYUElTZWFyY2hDb21tYW5kUHJvdmlkZXIsXG4gIEFYSUVudGl0eURlZmluaXRpb25Mb2FkZXIsXG59IGZyb20gJy4vcHJvdmlkZXItaW50ZXJmYWNlcyc7XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIFByb3ZpZGVyIFJlZ2lzdHJ5IFNlcnZpY2UgICAtLS0tXG5cbi8qKlxuICogUmVnaXN0cnkgc2VydmljZSBmb3IgZHluYW1pY2FsbHkgbG9hZGVkIG1vZHVsZSBwcm92aWRlcnMuXG4gKiBTdG9yZXMgcHJvdmlkZXIgaW5zdGFuY2VzIHRoYXQgYXJlIGxvYWRlZCBjb25kaXRpb25hbGx5IGJhc2VkIG9uIGFjY2VzcyBjb250cm9sLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFYUE1vZHVsZVByb3ZpZGVyUmVnaXN0cnkge1xuICAvLyNyZWdpb24gLS0tLSAgIEZpZWxkcyAgIC0tLS1cblxuICBwcml2YXRlIHJlYWRvbmx5IHBlcm1pc3Npb25Qcm92aWRlcnM6IEFYUElQZXJtaXNzaW9uRGVmaW5pdGlvblByb3ZpZGVyW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBtZW51UHJvdmlkZXJzOiBBWFBJTWVudVByb3ZpZGVyW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBlbnRpdHlQcm92aWRlcnM6IEFYSUVudGl0eURlZmluaXRpb25Mb2FkZXJbXSA9IFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IHNldHRpbmdQcm92aWRlcnM6IEFYUElTZXR0aW5nRGVmaW5pdGlvblByb3ZpZGVyW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZWFyY2hQcm92aWRlcnM6IEFYUElTZWFyY2hDb21tYW5kUHJvdmlkZXJbXSA9IFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IGZlYXR1cmVQcm92aWRlcnM6IEFYUEZlYXR1cmVEZWZpbml0aW9uUHJvdmlkZXJbXSA9IFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IGRhdGFzb3VyY2VQcm92aWRlcnM6IEFYUERhdGFTb3VyY2VEZWZpbml0aW9uUHJvdmlkZXJbXSA9IFtdO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgUHVibGljIE1ldGhvZHMgICAtLS0tXG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGEgcGVybWlzc2lvbiBwcm92aWRlci5cbiAgICovXG4gIHJlZ2lzdGVyUGVybWlzc2lvblByb3ZpZGVyKHByb3ZpZGVyOiBBWFBJUGVybWlzc2lvbkRlZmluaXRpb25Qcm92aWRlcik6IHZvaWQge1xuICAgIHRoaXMucGVybWlzc2lvblByb3ZpZGVycy5wdXNoKHByb3ZpZGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWxsIHJlZ2lzdGVyZWQgcGVybWlzc2lvbiBwcm92aWRlcnMuXG4gICAqL1xuICBnZXRQZXJtaXNzaW9uUHJvdmlkZXJzKCk6IEFYUElQZXJtaXNzaW9uRGVmaW5pdGlvblByb3ZpZGVyW10ge1xuICAgIHJldHVybiBbLi4udGhpcy5wZXJtaXNzaW9uUHJvdmlkZXJzXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIG1lbnUgcHJvdmlkZXIuXG4gICAqL1xuICByZWdpc3Rlck1lbnVQcm92aWRlcihwcm92aWRlcjogQVhQSU1lbnVQcm92aWRlcik6IHZvaWQge1xuICAgIHRoaXMubWVudVByb3ZpZGVycy5wdXNoKHByb3ZpZGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWxsIHJlZ2lzdGVyZWQgbWVudSBwcm92aWRlcnMuXG4gICAqL1xuICBnZXRNZW51UHJvdmlkZXJzKCk6IEFYUElNZW51UHJvdmlkZXJbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLm1lbnVQcm92aWRlcnNdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGFuIGVudGl0eSBwcm92aWRlci5cbiAgICovXG4gIHJlZ2lzdGVyRW50aXR5UHJvdmlkZXIocHJvdmlkZXI6IEFYSUVudGl0eURlZmluaXRpb25Mb2FkZXIpOiB2b2lkIHtcbiAgICB0aGlzLmVudGl0eVByb3ZpZGVycy5wdXNoKHByb3ZpZGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWxsIHJlZ2lzdGVyZWQgZW50aXR5IHByb3ZpZGVycy5cbiAgICovXG4gIGdldEVudGl0eVByb3ZpZGVycygpOiBBWElFbnRpdHlEZWZpbml0aW9uTG9hZGVyW10ge1xuICAgIHJldHVybiBbLi4udGhpcy5lbnRpdHlQcm92aWRlcnNdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGEgc2V0dGluZ3MgcHJvdmlkZXIuXG4gICAqL1xuICByZWdpc3RlclNldHRpbmdQcm92aWRlcihwcm92aWRlcjogQVhQSVNldHRpbmdEZWZpbml0aW9uUHJvdmlkZXIpOiB2b2lkIHtcbiAgICB0aGlzLnNldHRpbmdQcm92aWRlcnMucHVzaChwcm92aWRlcik7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFsbCByZWdpc3RlcmVkIHNldHRpbmdzIHByb3ZpZGVycy5cbiAgICovXG4gIGdldFNldHRpbmdQcm92aWRlcnMoKTogQVhQSVNldHRpbmdEZWZpbml0aW9uUHJvdmlkZXJbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLnNldHRpbmdQcm92aWRlcnNdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGEgc2VhcmNoIHByb3ZpZGVyLlxuICAgKi9cbiAgcmVnaXN0ZXJTZWFyY2hQcm92aWRlcihwcm92aWRlcjogQVhQSVNlYXJjaENvbW1hbmRQcm92aWRlcik6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoUHJvdmlkZXJzLnB1c2gocHJvdmlkZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbGwgcmVnaXN0ZXJlZCBzZWFyY2ggcHJvdmlkZXJzLlxuICAgKi9cbiAgZ2V0U2VhcmNoUHJvdmlkZXJzKCk6IEFYUElTZWFyY2hDb21tYW5kUHJvdmlkZXJbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLnNlYXJjaFByb3ZpZGVyc107XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgYSBmZWF0dXJlIHByb3ZpZGVyLlxuICAgKi9cbiAgcmVnaXN0ZXJGZWF0dXJlUHJvdmlkZXIocHJvdmlkZXI6IEFYUEZlYXR1cmVEZWZpbml0aW9uUHJvdmlkZXIpOiB2b2lkIHtcbiAgICB0aGlzLmZlYXR1cmVQcm92aWRlcnMucHVzaChwcm92aWRlcik7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFsbCByZWdpc3RlcmVkIGZlYXR1cmUgcHJvdmlkZXJzLlxuICAgKi9cbiAgZ2V0RmVhdHVyZVByb3ZpZGVycygpOiBBWFBGZWF0dXJlRGVmaW5pdGlvblByb3ZpZGVyW10ge1xuICAgIHJldHVybiBbLi4udGhpcy5mZWF0dXJlUHJvdmlkZXJzXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIGRhdGFzb3VyY2UgcHJvdmlkZXIuXG4gICAqL1xuICByZWdpc3RlckRhdGFzb3VyY2VQcm92aWRlcihwcm92aWRlcjogQVhQRGF0YVNvdXJjZURlZmluaXRpb25Qcm92aWRlcik6IHZvaWQge1xuICAgIHRoaXMuZGF0YXNvdXJjZVByb3ZpZGVycy5wdXNoKHByb3ZpZGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWxsIHJlZ2lzdGVyZWQgZGF0YXNvdXJjZSBwcm92aWRlcnMuXG4gICAqL1xuICBnZXREYXRhc291cmNlUHJvdmlkZXJzKCk6IEFYUERhdGFTb3VyY2VEZWZpbml0aW9uUHJvdmlkZXJbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLmRhdGFzb3VyY2VQcm92aWRlcnNdO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIGFsbCByZWdpc3RlcmVkIHByb3ZpZGVycy5cbiAgICogVXNlZnVsIGZvciB0ZXN0aW5nIG9yIHJlLWluaXRpYWxpemF0aW9uLlxuICAgKi9cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5wZXJtaXNzaW9uUHJvdmlkZXJzLmxlbmd0aCA9IDA7XG4gICAgdGhpcy5tZW51UHJvdmlkZXJzLmxlbmd0aCA9IDA7XG4gICAgdGhpcy5lbnRpdHlQcm92aWRlcnMubGVuZ3RoID0gMDtcbiAgICB0aGlzLnNldHRpbmdQcm92aWRlcnMubGVuZ3RoID0gMDtcbiAgICB0aGlzLnNlYXJjaFByb3ZpZGVycy5sZW5ndGggPSAwO1xuICAgIHRoaXMuZmVhdHVyZVByb3ZpZGVycy5sZW5ndGggPSAwO1xuICAgIHRoaXMuZGF0YXNvdXJjZVByb3ZpZGVycy5sZW5ndGggPSAwO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG59XG5cbi8vI2VuZHJlZ2lvblxuXG4iXX0=","import { inject, Injectable, InjectionToken } from '@angular/core';\nimport { AXPModuleProviderRegistry } from '../module-manifest/provider-registry.service';\nimport { set } from 'lodash-es';\nimport * as i0 from \"@angular/core\";\nexport const AXP_DATASOURCE_DEFINITION_PROVIDER = new InjectionToken('AXP_DATASOURCE_TYPE_PROVIDER');\nexport class AXPDataSourceDefinitionProviderService {\n constructor() {\n this.providers = inject(AXP_DATASOURCE_DEFINITION_PROVIDER, { optional: true });\n this.providerRegistry = inject(AXPModuleProviderRegistry);\n }\n async items() {\n const items = [];\n // Load from DI tokens (backward compatibility)\n if (Array.isArray(this.providers)) {\n for (const provider of this.providers) {\n set(provider, '__parent__', this);\n items.push(...(await provider.items()));\n }\n }\n // Load from registry (manifest-based, conditionally loaded)\n const registryProviders = this.providerRegistry.getDatasourceProviders();\n for (const provider of registryProviders) {\n set(provider, '__parent__', this);\n items.push(...(await provider.items()));\n }\n return items;\n }\n async get(name) {\n return (await this.items()).find((c) => c.name == name);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDataSourceDefinitionProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDataSourceDefinitionProviderService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDataSourceDefinitionProviderService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXNvdXJjZS1kZWZpbml0aW9uLXByb3ZpZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2NvcmUvc3JjL2xpYi9kYXRhL2RhdGFzb3VyY2UtZGVmaW5pdGlvbi1wcm92aWRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUV6RixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQWdDaEMsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUcsSUFBSSxjQUFjLENBQ2xFLDhCQUE4QixDQUMvQixDQUFDO0FBR0YsTUFBTSxPQUFPLHNDQUFzQztJQURuRDtRQUVVLGNBQVMsR0FBRyxNQUFNLENBQUMsa0NBQWtDLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMzRSxxQkFBZ0IsR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztLQTBCOUQ7SUF4QkMsS0FBSyxDQUFDLEtBQUs7UUFDVCxNQUFNLEtBQUssR0FBOEIsRUFBRSxDQUFDO1FBRTVDLCtDQUErQztRQUMvQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDbEMsS0FBSyxNQUFNLFFBQVEsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3RDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNsQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDMUMsQ0FBQztRQUNILENBQUM7UUFFRCw0REFBNEQ7UUFDNUQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUN6RSxLQUFLLE1BQU0sUUFBUSxJQUFJLGlCQUFpQixFQUFFLENBQUM7WUFDekMsR0FBRyxDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDbEMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBRyxDQUFDLElBQVk7UUFDcEIsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDO0lBQzFELENBQUM7K0dBM0JVLHNDQUFzQzttSEFBdEMsc0NBQXNDLGNBRHpCLE1BQU07OzRGQUNuQixzQ0FBc0M7a0JBRGxELFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhEYXRhU291cmNlIH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUE1vZHVsZVByb3ZpZGVyUmVnaXN0cnkgfSBmcm9tICcuLi9tb2R1bGUtbWFuaWZlc3QvcHJvdmlkZXItcmVnaXN0cnkuc2VydmljZSc7XG5pbXBvcnQgeyBBWFBGaWx0ZXJEZWZpbml0aW9uLCBBWFBPcHRpb25zRGF0YSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IHNldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRGF0YVNvdXJjZURhdGFGaWVsZERlZmluaXRpb24ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRhdGF0eXBlOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgb3B0aW9ucz86IEFYUE9wdGlvbnNEYXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUERhdGFTb3VyY2VEZWZpbml0aW9uPFQgPSBhbnk+IHtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICB2YWx1ZUZpZWxkPzoge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICB9O1xuICB0ZXh0RmllbGQ/OiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gIH07XG4gIGNvbHVtbnM6IEFYUERhdGFTb3VyY2VEYXRhRmllbGREZWZpbml0aW9uW107XG4gIGZpbHRlcnM6IEFYUEZpbHRlckRlZmluaXRpb25bXTtcbiAgc2FtcGxlcz86IGFueVtdO1xuICB2aXNpYmxlPzogYm9vbGVhbjtcbiAgc291cmNlOiAoKSA9PiBBWERhdGFTb3VyY2U8VD4gfCBQcm9taXNlPEFYRGF0YVNvdXJjZTxUPj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRGF0YVNvdXJjZURlZmluaXRpb25Qcm92aWRlciB7XG4gIGl0ZW1zKCk6IFByb21pc2U8QVhQRGF0YVNvdXJjZURlZmluaXRpb25bXT47XG59XG5cbmV4cG9ydCBjb25zdCBBWFBfREFUQVNPVVJDRV9ERUZJTklUSU9OX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuPEFYUERhdGFTb3VyY2VEZWZpbml0aW9uUHJvdmlkZXJbXT4oXG4gICdBWFBfREFUQVNPVVJDRV9UWVBFX1BST1ZJREVSJyxcbik7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQVhQRGF0YVNvdXJjZURlZmluaXRpb25Qcm92aWRlclNlcnZpY2UgaW1wbGVtZW50cyBBWFBEYXRhU291cmNlRGVmaW5pdGlvblByb3ZpZGVyIHtcbiAgcHJpdmF0ZSBwcm92aWRlcnMgPSBpbmplY3QoQVhQX0RBVEFTT1VSQ0VfREVGSU5JVElPTl9QUk9WSURFUiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSBwcm92aWRlclJlZ2lzdHJ5ID0gaW5qZWN0KEFYUE1vZHVsZVByb3ZpZGVyUmVnaXN0cnkpO1xuXG4gIGFzeW5jIGl0ZW1zKCk6IFByb21pc2U8QVhQRGF0YVNvdXJjZURlZmluaXRpb25bXT4ge1xuICAgIGNvbnN0IGl0ZW1zOiBBWFBEYXRhU291cmNlRGVmaW5pdGlvbltdID0gW107XG5cbiAgICAvLyBMb2FkIGZyb20gREkgdG9rZW5zIChiYWNrd2FyZCBjb21wYXRpYmlsaXR5KVxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMucHJvdmlkZXJzKSkge1xuICAgICAgZm9yIChjb25zdCBwcm92aWRlciBvZiB0aGlzLnByb3ZpZGVycykge1xuICAgICAgICBzZXQocHJvdmlkZXIsICdfX3BhcmVudF9fJywgdGhpcyk7XG4gICAgICAgIGl0ZW1zLnB1c2goLi4uKGF3YWl0IHByb3ZpZGVyLml0ZW1zKCkpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBMb2FkIGZyb20gcmVnaXN0cnkgKG1hbmlmZXN0LWJhc2VkLCBjb25kaXRpb25hbGx5IGxvYWRlZClcbiAgICBjb25zdCByZWdpc3RyeVByb3ZpZGVycyA9IHRoaXMucHJvdmlkZXJSZWdpc3RyeS5nZXREYXRhc291cmNlUHJvdmlkZXJzKCk7XG4gICAgZm9yIChjb25zdCBwcm92aWRlciBvZiByZWdpc3RyeVByb3ZpZGVycykge1xuICAgICAgc2V0KHByb3ZpZGVyLCAnX19wYXJlbnRfXycsIHRoaXMpO1xuICAgICAgaXRlbXMucHVzaCguLi4oYXdhaXQgcHJvdmlkZXIuaXRlbXMoKSkpO1xuICAgIH1cblxuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIGFzeW5jIGdldChuYW1lOiBzdHJpbmcpOiBQcm9taXNlPEFYUERhdGFTb3VyY2VEZWZpbml0aW9uIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLml0ZW1zKCkpLmZpbmQoKGMpID0+IGMubmFtZSA9PSBuYW1lKTtcbiAgfVxufVxuIl19","import { Directive, ElementRef, input, effect } from '@angular/core';\nimport { set, get } from 'lodash-es';\nimport * as i0 from \"@angular/core\";\nexport class AXPElementDataDirective {\n constructor(elementRef) {\n this.elementRef = elementRef;\n this.data = input(null, ...(ngDevMode ? [{ debugName: \"data\", alias: 'axp-data' }] : [{ alias: 'axp-data' }]));\n this.path = input('__data__', ...(ngDevMode ? [{ debugName: \"path\", alias: 'axp-data-path' }] : [{ alias: 'axp-data-path' }]));\n // Effect to update element data when inputs change\n this.updateEffect = effect(() => {\n const currentData = this.data();\n const currentPath = this.path();\n set(this.elementRef.nativeElement, currentPath, currentData);\n }, ...(ngDevMode ? [{ debugName: \"updateEffect\" }] : []));\n }\n ngOnInit() {\n // Initial data setup\n set(this.elementRef.nativeElement, this.path(), this.data());\n }\n /**\n * Get data from the element\n */\n getData() {\n return get(this.elementRef.nativeElement, this.path());\n }\n /**\n * Update data at runtime\n */\n setData(data) {\n set(this.elementRef.nativeElement, this.path(), data);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPElementDataDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.3.12\", type: AXPElementDataDirective, isStandalone: true, selector: \"[axp-data]\", inputs: { data: { classPropertyName: \"data\", publicName: \"axp-data\", isSignal: true, isRequired: false, transformFunction: null }, path: { classPropertyName: \"path\", publicName: \"axp-data-path\", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPElementDataDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[axp-data]',\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: \"axp-data\", required: false }] }], path: [{ type: i0.Input, args: [{ isSignal: true, alias: \"axp-data-path\", required: false }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1kYXRhLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL2RpcmVjdGl2ZXMvZWxlbWVudC1kYXRhLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQU1yQyxNQUFNLE9BQU8sdUJBQXVCO0lBS2hDLFlBQW9CLFVBQW1DO1FBQW5DLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBSHZELFNBQUksR0FBRyxLQUFLLENBQU0sSUFBSSx3Q0FBSSxLQUFLLEVBQUUsVUFBVSxPQUFuQixFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsR0FBQyxDQUFDO1FBQy9DLFNBQUksR0FBRyxLQUFLLENBQVMsVUFBVSx3Q0FBSSxLQUFLLEVBQUUsZUFBZSxPQUF4QixFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsR0FBQyxDQUFDO1FBUzdELG1EQUFtRDtRQUMzQyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDL0IsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2hDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNoQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ2pFLENBQUMsd0RBQUMsQ0FBQztJQVp3RCxDQUFDO0lBRTVELFFBQVE7UUFDSixxQkFBcUI7UUFDckIsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBU0Q7O09BRUc7SUFDSCxPQUFPO1FBQ0gsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsT0FBTyxDQUFDLElBQVM7UUFDYixHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzFELENBQUM7K0dBL0JRLHVCQUF1QjttR0FBdkIsdUJBQXVCOzs0RkFBdkIsdUJBQXVCO2tCQUpuQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxZQUFZO29CQUN0QixVQUFVLEVBQUUsSUFBSTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGlucHV0LCBPbkluaXQsIGVmZmVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc2V0LCBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1theHAtZGF0YV0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgQVhQRWxlbWVudERhdGFEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgZGF0YSA9IGlucHV0PGFueT4obnVsbCwgeyBhbGlhczogJ2F4cC1kYXRhJyB9KTtcbiAgICBwYXRoID0gaW5wdXQ8c3RyaW5nPignX19kYXRhX18nLCB7IGFsaWFzOiAnYXhwLWRhdGEtcGF0aCcgfSk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7IH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICAvLyBJbml0aWFsIGRhdGEgc2V0dXBcbiAgICAgICAgc2V0KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB0aGlzLnBhdGgoKSwgdGhpcy5kYXRhKCkpO1xuICAgIH1cblxuICAgIC8vIEVmZmVjdCB0byB1cGRhdGUgZWxlbWVudCBkYXRhIHdoZW4gaW5wdXRzIGNoYW5nZVxuICAgIHByaXZhdGUgdXBkYXRlRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3QgY3VycmVudERhdGEgPSB0aGlzLmRhdGEoKTtcbiAgICAgICAgY29uc3QgY3VycmVudFBhdGggPSB0aGlzLnBhdGgoKTtcbiAgICAgICAgc2V0KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBjdXJyZW50UGF0aCwgY3VycmVudERhdGEpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogR2V0IGRhdGEgZnJvbSB0aGUgZWxlbWVudFxuICAgICAqL1xuICAgIGdldERhdGEoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIGdldCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgdGhpcy5wYXRoKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSBkYXRhIGF0IHJ1bnRpbWVcbiAgICAgKi9cbiAgICBzZXREYXRhKGRhdGE6IGFueSkge1xuICAgICAgICBzZXQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMucGF0aCgpLCBkYXRhKTtcbiAgICB9XG59ICJdfQ==","import { Directive, HostListener, Output, EventEmitter } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXPDblClickDirective {\n constructor() {\n this.onDblClick = new EventEmitter();\n this.lastTap = 0;\n this.doubleTapThreshold = 300; // milliseconds\n }\n // Listen for the native dblclick event (desktop)\n handleOnDblClick(event) {\n this.onDblClick.emit(event);\n }\n // Listen for touchend events (mobile)\n onTouchEnd(event) {\n const currentTime = new Date().getTime();\n const tapGap = currentTime - this.lastTap;\n if (tapGap > 0 && tapGap < this.doubleTapThreshold) {\n // Detected a double-tap\n this.onDblClick.emit(event);\n event.preventDefault(); // Optionally prevent further default actions\n }\n this.lastTap = currentTime;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDblClickDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.12\", type: AXPDblClickDirective, isStandalone: true, selector: \"[onDblClick]\", outputs: { onDblClick: \"onDblClick\" }, host: { listeners: { \"dblclick\": \"handleOnDblClick($event)\", \"touchend\": \"onTouchEnd($event)\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDblClickDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[onDblClick]'\n }]\n }], propDecorators: { onDblClick: [{\n type: Output\n }], handleOnDblClick: [{\n type: HostListener,\n args: ['dblclick', ['$event']]\n }], onTouchEnd: [{\n type: HostListener,\n args: ['touchend', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGJsLWNsaWNrLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL2RpcmVjdGl2ZXMvZGJsLWNsaWNrLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUs5RSxNQUFNLE9BQU8sb0JBQW9CO0lBSGpDO1FBSWMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7UUFFekMsWUFBTyxHQUFHLENBQUMsQ0FBQztRQUNILHVCQUFrQixHQUFHLEdBQUcsQ0FBQyxDQUFDLGVBQWU7S0FxQjdEO0lBbkJHLGlEQUFpRDtJQUVqRCxnQkFBZ0IsQ0FBQyxLQUFZO1FBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxzQ0FBc0M7SUFFdEMsVUFBVSxDQUFDLEtBQWlCO1FBQ3hCLE1BQU0sV0FBVyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDekMsTUFBTSxNQUFNLEdBQUcsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFFMUMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUNqRCx3QkFBd0I7WUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsNkNBQTZDO1FBQ3pFLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQztJQUMvQixDQUFDOytHQXhCUSxvQkFBb0I7bUdBQXBCLG9CQUFvQjs7NEZBQXBCLG9CQUFvQjtrQkFIaEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsY0FBYztpQkFDM0I7O3NCQUVJLE1BQU07O3NCQU1OLFlBQVk7dUJBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFNbkMsWUFBWTt1QkFBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbb25EYmxDbGlja10nXG59KVxuZXhwb3J0IGNsYXNzIEFYUERibENsaWNrRGlyZWN0aXZlIHtcbiAgICBAT3V0cHV0KCkgb25EYmxDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG5cbiAgICBwcml2YXRlIGxhc3RUYXAgPSAwO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZG91YmxlVGFwVGhyZXNob2xkID0gMzAwOyAvLyBtaWxsaXNlY29uZHNcblxuICAgIC8vIExpc3RlbiBmb3IgdGhlIG5hdGl2ZSBkYmxjbGljayBldmVudCAoZGVza3RvcClcbiAgICBASG9zdExpc3RlbmVyKCdkYmxjbGljaycsIFsnJGV2ZW50J10pXG4gICAgaGFuZGxlT25EYmxDbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkRibENsaWNrLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIC8vIExpc3RlbiBmb3IgdG91Y2hlbmQgZXZlbnRzIChtb2JpbGUpXG4gICAgQEhvc3RMaXN0ZW5lcigndG91Y2hlbmQnLCBbJyRldmVudCddKVxuICAgIG9uVG91Y2hFbmQoZXZlbnQ6IFRvdWNoRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY3VycmVudFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgY29uc3QgdGFwR2FwID0gY3VycmVudFRpbWUgLSB0aGlzLmxhc3RUYXA7XG5cbiAgICAgICAgaWYgKHRhcEdhcCA+IDAgJiYgdGFwR2FwIDwgdGhpcy5kb3VibGVUYXBUaHJlc2hvbGQpIHtcbiAgICAgICAgICAgIC8vIERldGVjdGVkIGEgZG91YmxlLXRhcFxuICAgICAgICAgICAgdGhpcy5vbkRibENsaWNrLmVtaXQoZXZlbnQpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8gT3B0aW9uYWxseSBwcmV2ZW50IGZ1cnRoZXIgZGVmYXVsdCBhY3Rpb25zXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sYXN0VGFwID0gY3VycmVudFRpbWU7XG4gICAgfVxufVxuIl19","// src/app/directives/grid-layout.directive.ts\nimport { Directive, ElementRef, Renderer2, input } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXPGridLayoutDirective {\n constructor(el, renderer) {\n this.el = el;\n this.renderer = renderer;\n this.options = input.required(...(ngDevMode ? [{ debugName: \"options\", alias: 'axp-grid-layout' }] : [{ alias: 'axp-grid-layout' }]));\n }\n ngOnChanges(changes) {\n if (changes['options']) {\n this.applyTailwindClasses();\n }\n }\n applyTailwindClasses() {\n const placement = this.options()?.positions;\n if (!placement)\n return;\n // Clear existing grid classes\n this.clearClasses();\n // Apply new grid classes based on the input options\n this.setClasses(placement.sm, '');\n this.setClasses(placement.md, 'md:');\n this.setClasses(placement.lg, 'lg:');\n this.setClasses(placement.xl, 'xl:');\n this.setClasses(placement.xxl, '2xl:');\n }\n setClasses(placement, prefix) {\n if (placement == null)\n return;\n const colStart = placement.colStart ? `${prefix}ax-col-start-${placement.colStart}` : '';\n const colEnd = placement.colEnd ? `${prefix}ax-col-end-${placement.colEnd}` : '';\n const colSpan = placement.colSpan ? `${prefix}ax-col-span-${placement.colSpan}` : '';\n const rowStart = placement.rowStart ? `${prefix}ax-row-start-${placement.rowStart}` : '';\n const rowEnd = placement.rowEnd ? `${prefix}ax-row-end-${placement.rowEnd}` : '';\n const rowSpan = placement.rowSpan ? `${prefix}ax-row-span-${placement.rowSpan}` : '';\n const order = placement.order ? `${prefix}ax-order-${placement.order}` : ''; // Handling order\n [colStart, colEnd, colSpan, rowStart, rowEnd, rowSpan, order].forEach(cls => {\n if (cls) {\n this.renderer.addClass(this.el.nativeElement, cls);\n }\n });\n }\n clearClasses() {\n const currentClasses = this.el.nativeElement.className.split(' ');\n currentClasses.forEach((className) => {\n if (className.startsWith('ax-col-') || className.startsWith('ax-row-') || className.startsWith('ax-order-')) {\n this.renderer.removeClass(this.el.nativeElement, className);\n }\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPGridLayoutDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.3.12\", type: AXPGridLayoutDirective, isStandalone: true, selector: \"[axp-grid-layout]\", inputs: { options: { classPropertyName: \"options\", publicName: \"axp-grid-layout\", isSignal: true, isRequired: true, transformFunction: null } }, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPGridLayoutDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[axp-grid-layout]',\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: \"axp-grid-layout\", required: true }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1sYXlvdXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9jb3JlL3NyYy9saWIvZGlyZWN0aXZlcy9ncmlkLWxheW91dC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsOENBQThDO0FBRTlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBNEIsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU9sRyxNQUFNLE9BQU8sc0JBQXNCO0lBRy9CLFlBQW9CLEVBQWMsRUFBVSxRQUFtQjtRQUEzQyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUYvRCxZQUFPLEdBQUcsS0FBSyxDQUFDLFFBQVEsMENBQXlCLEtBQUssRUFBRSxpQkFBaUIsT0FBMUIsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsR0FBQyxDQUFDO0lBRVYsQ0FBQztJQUVwRSxXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUNoQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLG9CQUFvQjtRQUN4QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsU0FBUyxDQUFDO1FBQzVDLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUN2Qiw4QkFBOEI7UUFDOUIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXBCLG9EQUFvRDtRQUNwRCxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxVQUFVLENBQUMs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ZW50IjpbIi8vIHNyYy9hcHAvZGlyZWN0aXZlcy9ncmlkLWxheW91dC5kaXJlY3RpdmUudHNcblxuaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBSZW5kZXJlcjIsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUEdyaWRMYXlvdXRPcHRpb25zLCBBWFBHcmlkUGxhY2VtZW50IH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1theHAtZ3JpZC1sYXlvdXRdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBHcmlkTGF5b3V0RGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICBvcHRpb25zID0gaW5wdXQucmVxdWlyZWQ8QVhQR3JpZExheW91dE9wdGlvbnM+KHsgYWxpYXM6ICdheHAtZ3JpZC1sYXlvdXQnIH0pO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZiwgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7IH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXNbJ29wdGlvbnMnXSkge1xuICAgICAgICAgICAgdGhpcy5hcHBseVRhaWx3aW5kQ2xhc3NlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBseVRhaWx3aW5kQ2xhc3NlcygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGxhY2VtZW50ID0gdGhpcy5vcHRpb25zKCk/LnBvc2l0aW9ucztcbiAgICAgICAgaWYgKCFwbGFjZW1lbnQpIHJldHVybjtcbiAgICAgICAgLy8gQ2xlYXIgZXhpc3RpbmcgZ3JpZCBjbGFzc2VzXG4gICAgICAgIHRoaXMuY2xlYXJDbGFzc2VzKCk7XG5cbiAgICAgICAgLy8gQXBwbHkgbmV3IGdyaWQgY2xhc3NlcyBiYXNlZCBvbiB0aGUgaW5wdXQgb3B0aW9uc1xuICAgICAgICB0aGlzLnNldENsYXNzZXMocGxhY2VtZW50LnNtLCAnJyk7XG4gICAgICAgIHRoaXMuc2V0Q2xhc3NlcyhwbGFjZW1lbnQubWQsICdtZDonKTtcbiAgICAgICAgdGhpcy5zZXRDbGFzc2VzKHBsYWNlbWVudC5sZywgJ2xnOicpO1xuICAgICAgICB0aGlzLnNldENsYXNzZXMocGxhY2VtZW50LnhsLCAneGw6Jyk7XG4gICAgICAgIHRoaXMuc2V0Q2xhc3NlcyhwbGFjZW1lbnQueHhsLCAnMnhsOicpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0Q2xhc3NlcyhwbGFjZW1lbnQ6IEFYUEdyaWRQbGFjZW1lbnQgfCB1bmRlZmluZWQsIHByZWZpeDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmIChwbGFjZW1lbnQgPT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IGNvbFN0YXJ0ID0gcGxhY2VtZW50LmNvbFN0YXJ0ID8gYCR7cHJlZml4fWF4LWNvbC1zdGFydC0ke3BsYWNlbWVudC5jb2xTdGFydH1gIDogJyc7XG4gICAgICAgIGNvbnN0IGNvbEVuZCA9IHBsYWNlbWVudC5jb2xFbmQgPyBgJHtwcmVmaXh9YXgtY29sLWVuZC0ke3BsYWNlbWVudC5jb2xFbmR9YCA6ICcnO1xuICAgICAgICBjb25zdCBjb2xTcGFuID0gcGxhY2VtZW50LmNvbFNwYW4gPyBgJHtwcmVmaXh9YXgtY29sLXNwYW4tJHtwbGFjZW1lbnQuY29sU3Bhbn1gIDogJyc7XG4gICAgICAgIGNvbnN0IHJvd1N0YXJ0ID0gcGxhY2VtZW50LnJvd1N0YXJ0ID8gYCR7cHJlZml4fWF4LXJvdy1zdGFydC0ke3BsYWNlbWVudC5yb3dTdGFydH1gIDogJyc7XG4gICAgICAgIGNvbnN0IHJvd0VuZCA9IHBsYWNlbWVudC5yb3dFbmQgPyBgJHtwcmVmaXh9YXgtcm93LWVuZC0ke3BsYWNlbWVudC5yb3dFbmR9YCA6ICcnO1xuICAgICAgICBjb25zdCByb3dTcGFuID0gcGxhY2VtZW50LnJvd1NwYW4gPyBgJHtwcmVmaXh9YXgtcm93LXNwYW4tJHtwbGFjZW1lbnQucm93U3Bhbn1gIDogJyc7XG4gICAgICAgIGNvbnN0IG9yZGVyID0gcGxhY2VtZW50Lm9yZGVyID8gYCR7cHJlZml4fWF4LW9yZGVyLSR7cGxhY2VtZW50Lm9yZGVyfWAgOiAnJzsgLy8gSGFuZGxpbmcgb3JkZXJcblxuICAgICAgICBbY29sU3RhcnQsIGNvbEVuZCwgY29sU3Bhbiwgcm93U3RhcnQsIHJvd0VuZCwgcm93U3Bhbiwgb3JkZXJdLmZvckVhY2goY2xzID0+IHtcbiAgICAgICAgICAgIGlmIChjbHMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgY2xzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbGVhckNsYXNzZXMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRDbGFzc2VzID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZS5zcGxpdCgnICcpO1xuICAgICAgICBjdXJyZW50Q2xhc3Nlcy5mb3JFYWNoKChjbGFzc05hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgaWYgKGNsYXNzTmFtZS5zdGFydHNXaXRoKCdheC1jb2wtJykgfHwgY2xhc3NOYW1lLnN0YXJ0c1dpdGgoJ2F4LXJvdy0nKSB8fCBjbGFzc05hbWUuc3RhcnRzV2l0aCgnYXgtb3JkZXItJykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgY2xhc3NOYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19","// src/app/directives/grid-layout.directive.ts\nimport { Directive, ElementRef, ViewContainerRef, computed, inject } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXPContentCheckerDirective {\n constructor() {\n this.viewContainerRef = inject(ViewContainerRef);\n this.elementRef = inject((ElementRef));\n this.isEmpty = computed(() => this.viewContainerRef.length === 0, ...(ngDevMode ? [{ debugName: \"isEmpty\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPContentCheckerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.12\", type: AXPContentCheckerDirective, isStandalone: true, selector: \"[axp-content-checker]\", exportAs: [\"checker\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPContentCheckerDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[axp-content-checker]',\n standalone: true,\n exportAs: 'checker'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1jaGVja2VyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL2RpcmVjdGl2ZXMvY29udGVudC1jaGVja2VyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw4Q0FBOEM7QUFFOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFPMUYsTUFBTSxPQUFPLDBCQUEwQjtJQUx2QztRQU9XLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVDLGVBQVUsR0FBK0IsTUFBTSxDQUFDLENBQUEsVUFBMEIsQ0FBQSxDQUFDLENBQUM7UUFFNUUsWUFBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxLQUFLLENBQUMsbURBQUMsQ0FBQztLQUN2RTsrR0FOWSwwQkFBMEI7bUdBQTFCLDBCQUEwQjs7NEZBQTFCLDBCQUEwQjtrQkFMdEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLFNBQVM7aUJBQ3RCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gc3JjL2FwcC9kaXJlY3RpdmVzL2dyaWQtbGF5b3V0LmRpcmVjdGl2ZS50c1xuXG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIFZpZXdDb250YWluZXJSZWYsIGNvbXB1dGVkLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbYXhwLWNvbnRlbnQtY2hlY2tlcl0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgZXhwb3J0QXM6ICdjaGVja2VyJ1xufSlcbmV4cG9ydCBjbGFzcyBBWFBDb250ZW50Q2hlY2tlckRpcmVjdGl2ZSB7XG5cbiAgICBwdWJsaWMgdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcbiAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4gPSBpbmplY3QoRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4pO1xuXG4gICAgcHVibGljIGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnZpZXdDb250YWluZXJSZWYubGVuZ3RoID09PSAwKTtcbn1cbiJdfQ==","//#region ---- Imports ----\nimport { Directive, ElementRef, output, signal, effect, inject, DestroyRef, untracked, Renderer2 } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n//#endregion\n//#region ---- Directive ----\n/**\n * Fullscreen directive that provides CSS-based fullscreen functionality\n * Usage: <element axFullscreen #fullscreen=\"axFullscreen\"></element>\n * Then: fullscreen.toggle() or fullscreen.enter() or fullscreen.exit()\n */\nexport class AXFullscreenDirective {\n constructor(elementRef) {\n this.elementRef = elementRef;\n //#region ---- Properties ----\n /**\n * Current fullscreen state\n */\n this.isFullscreenState = signal(false, ...(ngDevMode ? [{ debugName: \"isFullscreenState\" }] : []));\n /**\n * Original element styles to restore\n */\n this.originalStyles = {};\n /**\n * Original parent element reference\n */\n this.originalParent = null;\n /**\n * Fullscreen container element\n */\n this.fullscreenContainer = null;\n /**\n * Fullscreen change event\n */\n this.fullscreenChange = output();\n //#endregion\n //#region ---- Constructor ----\n this.destroyRef = inject(DestroyRef);\n this.renderer = inject(Renderer2);\n // Sync state changes to output\n effect(() => {\n const isFullscreen = this.isFullscreenState();\n untracked(() => {\n this.fullscreenChange.emit(isFullscreen);\n });\n });\n }\n //#endregion\n //#region ---- Public API ----\n /**\n * Toggle fullscreen state\n */\n async toggle() {\n if (this.isFullscreenState()) {\n await this.exit();\n }\n else {\n await this.enter();\n }\n }\n /**\n * Enter fullscreen mode using CSS\n */\n async enter() {\n if (this.isFullscreenState()) {\n return;\n }\n const element = this.elementRef.nativeElement;\n try {\n // Store original styles and parent\n this.storeOriginalStyles(element);\n this.originalParent = element.parentElement;\n // Create fullscreen container\n this.fullscreenContainer = this.renderer.createElement('div');\n this.renderer.setStyle(this.fullscreenContainer, 'position', 'fixed');\n this.renderer.setStyle(this.fullscreenContainer, 'top', '0');\n this.renderer.setStyle(this.fullscreenContainer, 'left', '0');\n this.renderer.setStyle(this.fullscreenContainer, 'width', '100vw');\n this.renderer.setStyle(this.fullscreenContainer, 'height', '100vh');\n this.renderer.setStyle(this.fullscreenContainer, 'z-index', '9999');\n this.renderer.setStyle(this.fullscreenContainer, 'background-color', '#ffffff');\n this.renderer.setStyle(this.fullscreenContainer, 'overflow', 'auto');\n // Move element to container\n this.renderer.appendChild(this.fullscreenContainer, element);\n // Apply fullscreen styles to element\n this.renderer.setStyle(element, 'position', 'relative');\n this.renderer.setStyle(element, 'width', '100%');\n this.renderer.setStyle(element, 'height', '100%');\n this.renderer.setStyle(element, 'margin', '0');\n this.renderer.setStyle(element, 'padding', '0');\n // Append container to body\n this.renderer.appendChild(document.body, this.fullscreenContainer);\n // Prevent body scroll\n this.renderer.setStyle(document.body, 'overflow', 'hidden');\n this.isFullscreenState.set(true);\n }\n catch (error) {\n console.error('Error entering fullscreen:', error);\n this.restoreOriginalStyles(element);\n }\n }\n /**\n * Exit fullscreen mode\n */\n async exit() {\n if (!this.isFullscreenState()) {\n return;\n }\n const element = this.elementRef.nativeElement;\n try {\n // Restore body scroll\n this.renderer.removeStyle(document.body, 'overflow');\n // Move element back to original parent\n if (this.fullscreenContainer && this.originalParent) {\n this.renderer.removeChild(this.fullscreenContainer, element);\n this.renderer.appendChild(this.originalParent, element);\n // Remove container\n this.renderer.removeChild(document.body, this.fullscreenContainer);\n this.fullscreenContainer = null;\n }\n // Restore original styles\n this.restoreOriginalStyles(element);\n this.isFullscreenState.set(false);\n }\n catch (error) {\n console.error('Error exiting fullscreen:', error);\n }\n }\n /**\n * Check if currently in fullscreen mode\n */\n isFullscreen() {\n return this.isFullscreenState();\n }\n //#endregion\n //#region ---- Private Methods ----\n /**\n * Store original element styles\n */\n storeOriginalStyles(element) {\n const computedStyle = window.getComputedStyle(element);\n this.originalStyles = {\n position: computedStyle.position,\n top: computedStyle.top,\n left: computedStyle.left,\n width: computedStyle.width,\n height: computedStyle.height,\n zIndex: computedStyle.zIndex,\n backgroundColor: computedStyle.backgroundColor,\n margin: computedStyle.margin,\n padding: computedStyle.padding,\n };\n }\n /**\n * Restore original element styles\n */\n restoreOriginalStyles(element) {\n if (!this.originalStyles) {\n return;\n }\n // Restore each style property\n Object.entries(this.originalStyles).forEach(([key, value]) => {\n const styleKey = this.camelToKebabCase(key);\n if (value) {\n this.renderer.setStyle(element, styleKey, value);\n }\n else {\n this.renderer.removeStyle(element, styleKey);\n }\n });\n this.originalStyles = {};\n }\n /**\n * Convert camelCase to kebab-case for CSS properties\n */\n camelToKebabCase(str) {\n return str.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, '$1-$2').toLowerCase();\n }\n //#endregion\n //#region ---- Lifecycle ----\n ngOnDestroy() {\n // Exit fullscreen if still active\n if (this.isFullscreenState()) {\n this.exit().catch(() => {\n // Ignore errors during cleanup\n });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXFullscreenDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.12\", type: AXFullscreenDirective, isStandalone: true, selector: \"[axFullscreen]\", outputs: { fullscreenChange: \"fullscreenChange\" }, exportAs: [\"axFullscreen\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXFullscreenDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[axFullscreen]',\n standalone: true,\n exportAs: 'axFullscreen',\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { fullscreenChange: [{ type: i0.Output, args: [\"fullscreenChange\"] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVsbHNjcmVlbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2NvcmUvc3JjL2xpYi9kaXJlY3RpdmVzL2Z1bGxzY3JlZW4uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUUvQixPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBYSxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRW5JLFlBQVk7QUFFWixpQ0FBaUM7QUFFakM7Ozs7R0FJRztBQU1ILE1BQU0sT0FBTyxxQkFBcUI7SUE2QzlCLFlBQ1ksVUFBbUM7UUFBbkMsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUE3Qy9DLGtDQUFrQztRQUVsQzs7V0FFRztRQUNjLHNCQUFpQixHQUFHLE1BQU0sQ0FBVSxLQUFLLDZEQUFDLENBQUM7UUFFNUQ7O1dBRUc7UUFDSyxtQkFBYyxHQVVsQixFQUFFLENBQUM7UUFFUDs7V0FFRztRQUNLLG1CQUFjLEdBQXVCLElBQUksQ0FBQztRQUVsRDs7V0FFRztRQUNLLHdCQUFtQixHQUF1QixJQUFJLENBQUM7UUFFdkQ7O1dBRUc7UUFDTSxxQkFBZ0IsR0FBRyxNQUFNLEVBQVcsQ0FBQztRQUU5QyxZQUFZO1FBRVosbUNBQW1DO1FBRWxCLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsYUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUsxQywrQkFBK0I7UUFDL0IsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNSLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzlDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUks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LS0tXG5cbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgb3V0cHV0LCBzaWduYWwsIGVmZmVjdCwgT25EZXN0cm95LCBpbmplY3QsIERlc3Ryb3lSZWYsIHVudHJhY2tlZCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIERpcmVjdGl2ZSAgIC0tLS1cblxuLyoqXG4gKiBGdWxsc2NyZWVuIGRpcmVjdGl2ZSB0aGF0IHByb3ZpZGVzIENTUy1iYXNlZCBmdWxsc2NyZWVuIGZ1bmN0aW9uYWxpdHlcbiAqIFVzYWdlOiA8ZWxlbWVudCBheEZ1bGxzY3JlZW4gI2Z1bGxzY3JlZW49XCJheEZ1bGxzY3JlZW5cIj48L2VsZW1lbnQ+XG4gKiBUaGVuOiBmdWxsc2NyZWVuLnRvZ2dsZSgpIG9yIGZ1bGxzY3JlZW4uZW50ZXIoKSBvciBmdWxsc2NyZWVuLmV4aXQoKVxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1theEZ1bGxzY3JlZW5dJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGV4cG9ydEFzOiAnYXhGdWxsc2NyZWVuJyxcbn0pXG5leHBvcnQgY2xhc3MgQVhGdWxsc2NyZWVuRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICAvLyNyZWdpb24gLS0tLSAgIFByb3BlcnRpZXMgICAtLS0tXG5cbiAgICAvKipcbiAgICAgKiBDdXJyZW50IGZ1bGxzY3JlZW4gc3RhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGlzRnVsbHNjcmVlblN0YXRlID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICAgIC8qKlxuICAgICAqIE9yaWdpbmFsIGVsZW1lbnQgc3R5bGVzIHRvIHJlc3RvcmVcbiAgICAgKi9cbiAgICBwcml2YXRlIG9yaWdpbmFsU3R5bGVzOiB7XG4gICAgICAgIHBvc2l0aW9uPzogc3RyaW5nO1xuICAgICAgICB0b3A/OiBzdHJpbmc7XG4gICAgICAgIGxlZnQ/OiBzdHJpbmc7XG4gICAgICAgIHdpZHRoPzogc3RyaW5nO1xuICAgICAgICBoZWlnaHQ/OiBzdHJpbmc7XG4gICAgICAgIHpJbmRleD86IHN0cmluZztcbiAgICAgICAgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nO1xuICAgICAgICBtYXJnaW4/OiBzdHJpbmc7XG4gICAgICAgIHBhZGRpbmc/OiBzdHJpbmc7XG4gICAgfSA9IHt9O1xuXG4gICAgLyoqXG4gICAgICogT3JpZ2luYWwgcGFyZW50IGVsZW1lbnQgcmVmZXJlbmNlXG4gICAgICovXG4gICAgcHJpdmF0ZSBvcmlnaW5hbFBhcmVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIEZ1bGxzY3JlZW4gY29udGFpbmVyIGVsZW1lbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIGZ1bGxzY3JlZW5Db250YWluZXI6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBGdWxsc2NyZWVuIGNoYW5nZSBldmVudFxuICAgICAqL1xuICAgIHJlYWRvbmx5IGZ1bGxzY3JlZW5DaGFuZ2UgPSBvdXRwdXQ8Ym9vbGVhbj4oKTtcblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBDb25zdHJ1Y3RvciAgIC0tLS1cblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICApIHtcbiAgICAgICAgLy8gU3luYyBzdGF0ZSBjaGFuZ2VzIHRvIG91dHB1dFxuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXNGdWxsc2NyZWVuID0gdGhpcy5pc0Z1bGxzY3JlZW5TdGF0ZSgpO1xuICAgICAgICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZ1bGxzY3JlZW5DaGFuZ2UuZW1pdChpc0Z1bGxzY3JlZW4pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBQdWJsaWMgQVBJICAgLS0tLVxuXG4gICAgLyoqXG4gICAgICogVG9nZ2xlIGZ1bGxzY3JlZW4gc3RhdGVcbiAgICAgKi9cbiAgICBhc3luYyB0b2dnbGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLmlzRnVsbHNjcmVlblN0YXRlKCkpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZXhpdCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5lbnRlcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW50ZXIgZnVsbHNjcmVlbiBtb2RlIHVzaW5nIENTU1xuICAgICAqL1xuICAgIGFzeW5jIGVudGVyKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5pc0Z1bGxzY3JlZW5TdGF0ZSgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFN0b3JlIG9yaWdpbmFsIHN0eWxlcyBhbmQgcGFyZW50XG4gICAgICAgICAgICB0aGlzLnN0b3JlT3JpZ2luYWxTdHlsZXMoZWxlbWVudCk7XG4gICAgICAgICAgICB0aGlzLm9yaWdpbmFsUGFyZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50O1xuXG4gICAgICAgICAgICAvLyBDcmVhdGUgZnVsbHNjcmVlbiBjb250YWluZXJcbiAgICAgICAgICAgIHRoaXMuZnVsbHNjcmVlbkNvbnRhaW5lciA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZnVsbHNjcmVlbkNvbnRhaW5lciwgJ3Bvc2l0aW9uJywgJ2ZpeGVkJyk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZnVsbHNjcmVlbkNvbnRhaW5lciwgJ3RvcCcsICcwJyk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZnVsbHNjcmVlbkNvbnRhaW5lciwgJ2xlZnQnLCAnMCcpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmZ1bGxzY3JlZW5Db250YWluZXIsICd3aWR0aCcsICcxMDB2dycpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmZ1bGxzY3JlZW5Db250YWluZXIsICdoZWlnaHQnLCAnMTAwdmgnKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5mdWxsc2NyZWVuQ29udGFpbmVyLCAnei1pbmRleCcsICc5OTk5Jyk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZnVsbHNjcmVlbkNvbnRhaW5lciwgJ2JhY2tncm91bmQtY29sb3InLCAnI2ZmZmZmZicpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmZ1bGxzY3JlZW5Db250YWluZXIsICdvdmVyZmxvdycsICdhdXRvJyk7XG5cbiAgICAgICAgICAgIC8vIE1vdmUgZWxlbWVudCB0byBjb250YWluZXJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5mdWxsc2NyZWVuQ29udGFpbmVyLCBlbGVtZW50KTtcblxuICAgICAgICAgICAgLy8gQXBwbHkgZnVsbHNjcmVlbiBzdHlsZXMgdG8gZWxlbWVudFxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbGVtZW50LCAncG9zaXRpb24nLCAncmVsYXRpdmUnKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZWxlbWVudCwgJ3dpZHRoJywgJzEwMCUnKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZWxlbWVudCwgJ2hlaWdodCcsICcxMDAlJyk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsZW1lbnQsICdtYXJnaW4nLCAnMCcpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbGVtZW50LCAncGFkZGluZycsICcwJyk7XG5cbiAgICAgICAgICAgIC8vIEFwcGVuZCBjb250YWluZXIgdG8gYm9keVxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChkb2N1bWVudC5ib2R5LCB0aGlzLmZ1bGxzY3JlZW5Db250YWluZXIpO1xuXG4gICAgICAgICAgICAvLyBQcmV2ZW50IGJvZHkgc2Nyb2xsXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGRvY3VtZW50LmJvZHksICdvdmVyZmxvdycsICdoaWRkZW4nKTtcblxuICAgICAgICAgICAgdGhpcy5pc0Z1bGxzY3JlZW5TdGF0ZS5zZXQodHJ1ZSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBlbnRlcmluZyBmdWxsc2NyZWVuOicsIGVycm9yKTtcbiAgICAgICAgICAgIHRoaXMucmVzdG9yZU9yaWdpbmFsU3R5bGVzKGVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXhpdCBmdWxsc2NyZWVuIG1vZGVcbiAgICAgKi9cbiAgICBhc3luYyBleGl0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoIXRoaXMuaXNGdWxsc2NyZWVuU3RhdGUoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBSZXN0b3JlIGJvZHkgc2Nyb2xsXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKGRvY3VtZW50LmJvZHksICdvdmVyZmxvdycpO1xuXG4gICAgICAgICAgICAvLyBNb3ZlIGVsZW1lbnQgYmFjayB0byBvcmlnaW5hbCBwYXJlbnRcbiAgICAgICAgICAgIGlmICh0aGlzLmZ1bGxzY3JlZW5Db250YWluZXIgJiYgdGhpcy5vcmlnaW5hbFBhcmVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5mdWxsc2NyZWVuQ29udGFpbmVyLCBlbGVtZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMub3JpZ2luYWxQYXJlbnQsIGVsZW1lbnQpO1xuXG4gICAgICAgICAgICAgICAgLy8gUmVtb3ZlIGNvbnRhaW5lclxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuYm9keSwgdGhpcy5mdWxsc2NyZWVuQ29udGFpbmVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZ1bGxzY3JlZW5Db250YWluZXIgPSBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBSZXN0b3JlIG9yaWdpbmFsIHN0eWxlc1xuICAgICAgICAgICAgdGhpcy5yZXN0b3JlT3JpZ2luYWxTdHlsZXMoZWxlbWVudCk7XG5cbiAgICAgICAgICAgIHRoaXMuaXNGdWxsc2NyZWVuU3RhdGUuc2V0KGZhbHNlKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGV4aXRpbmcgZnVsbHNjcmVlbjonLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBjdXJyZW50bHkgaW4gZnVsbHNjcmVlbiBtb2RlXG4gICAgICovXG4gICAgaXNGdWxsc2NyZWVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0Z1bGxzY3JlZW5TdGF0ZSgpO1xuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBQcml2YXRlIE1ldGhvZHMgICAtLS0tXG5cbiAgICAvKipcbiAgICAgKiBTdG9yZSBvcmlnaW5hbCBlbGVtZW50IHN0eWxlc1xuICAgICAqL1xuICAgIHByaXZhdGUgc3RvcmVPcmlnaW5hbFN0eWxlcyhlbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb21wdXRlZFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gICAgICAgIHRoaXMub3JpZ2luYWxTdHlsZXMgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbjogY29tcHV0ZWRTdHlsZS5wb3NpdGlvbixcbiAgICAgICAgICAgIHRvcDogY29tcHV0ZWRTdHlsZS50b3AsXG4gICAgICAgICAgICBsZWZ0OiBjb21wdXRlZFN0eWxlLmxlZnQsXG4gICAgICAgICAgICB3aWR0aDogY29tcHV0ZWRTdHlsZS53aWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogY29tcHV0ZWRTdHlsZS5oZWlnaHQsXG4gICAgICAgICAgICB6SW5kZXg6IGNvbXB1dGVkU3R5bGUuekluZGV4LFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBjb21wdXRlZFN0eWxlLmJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIG1hcmdpbjogY29tcHV0ZWRTdHlsZS5tYXJnaW4sXG4gICAgICAgICAgICBwYWRkaW5nOiBjb21wdXRlZFN0eWxlLnBhZGRpbmcsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVzdG9yZSBvcmlnaW5hbCBlbGVtZW50IHN0eWxlc1xuICAgICAqL1xuICAgIHByaXZhdGUgcmVzdG9yZU9yaWdpbmFsU3R5bGVzKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5vcmlnaW5hbFN0eWxlcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmVzdG9yZSBlYWNoIHN0eWxlIHByb3BlcnR5XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMub3JpZ2luYWxTdHlsZXMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3R5bGVLZXkgPSB0aGlzLmNhbWVsVG9LZWJhYkNhc2Uoa2V5KTtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZWxlbWVudCwgc3R5bGVLZXksIHZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZShlbGVtZW50LCBzdHlsZUtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMub3JpZ2luYWxTdHlsZXMgPSB7fTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IGNhbWVsQ2FzZSB0byBrZWJhYi1jYXNlIGZvciBDU1MgcHJvcGVydGllc1xuICAgICAqL1xuICAgIHByaXZhdGUgY2FtZWxUb0tlYmFiQ2FzZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBzdHIucmVwbGFjZSgvKFthLXowLTldfCg/PVtBLVpdKSkoW0EtWl0pL2csICckMS0kMicpLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIExpZmVjeWNsZSAgIC0tLS1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICAvLyBFeGl0IGZ1bGxzY3JlZW4gaWYgc3RpbGwgYWN0aXZlXG4gICAgICAgIGlmICh0aGlzLmlzRnVsbHNjcmVlblN0YXRlKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZXhpdCgpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBJZ25vcmUgZXJyb3JzIGR1cmluZyBjbGVhbnVwXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxufVxuXG4vLyNlbmRyZWdpb25cbiJdfQ==","import { InjectionToken } from '@angular/core';\nexport const AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER = new InjectionToken('AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzdHJpYnV0ZWQtZXZlbnQtbGlzdGVuZXIucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2NvcmUvc3JjL2xpYi9kaXN0cmlidXRlZC1ldmVudHMvZGlzdHJpYnV0ZWQtZXZlbnQtbGlzdGVuZXIucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU0vQyxNQUFNLENBQUMsTUFBTSx1Q0FBdUMsR0FBRyxJQUFJLGNBQWMsQ0FDdkUseUNBQXlDLENBQzFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgdHlwZSBBWFBEaXN0cmlidXRlZEV2ZW50TGlzdGVuZXJQcm92aWRlclRva2VuPFQ+ID1cbiAgfCBBWFBEaXN0cmlidXRlZEV2ZW50TGlzdGVuZXJQcm92aWRlcjxUPlxuICB8IFByb21pc2U8QVhQRGlzdHJpYnV0ZWRFdmVudExpc3RlbmVyUHJvdmlkZXI8VD4+O1xuXG5leHBvcnQgY29uc3QgQVhQX0RJU1RSSUJVVEVEX0VWRU5UX0xJU1RFTkVSX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuPEFYUERpc3RyaWJ1dGVkRXZlbnRMaXN0ZW5lclByb3ZpZGVyVG9rZW48YW55PltdPihcbiAgJ0FYUF9ESVNUUklCVVRFRF9FVkVOVF9MSVNURU5FUl9QUk9WSURFUidcbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRGlzdHJpYnV0ZWRFdmVudExpc3RlbmVyUHJvdmlkZXI8VElucHV0ID0gYW55LCBUT3V0cHV0ID0gdm9pZD4ge1xuICBrZXk6IHN0cmluZztcbiAgZXhlY3V0ZShkYXRhOiBUSW5wdXQpOiBQcm9taXNlPFRPdXRwdXQ+IHwgVE91dHB1dDtcblxuICBwcmlvcml0eT86IG51bWJlcjtcbn0iXX0=","//#region ---- Imports ----\nimport { inject, Injectable, Injector, runInInjectionContext } from '@angular/core';\nimport { AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER } from './distributed-event-listener.provider';\nimport * as i0 from \"@angular/core\";\n//#endregion\nexport class AXPDistributedEventListenerService {\n constructor() {\n //#region ---- Providers & Caches ----\n this.listenerProviders = inject(AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, { optional: true }) || [];\n this.injector = inject(Injector);\n /** Cache for listeners by key. */\n this.listenersByKey = new Map();\n /** Flag to track if providers have been loaded */\n this.providersLoaded = false;\n }\n //#endregion\n //#region ---- Public API ----\n /**\n * Dispatches an event to all registered listeners for the given key.\n * @param key The event key.\n * @param data The event data to pass to listeners.\n */\n async dispatch(key, data) {\n const providers = await this.resolveProviders();\n const matched = providers.filter(p => p.key === key);\n if (!matched.length) {\n return;\n }\n for (const provider of matched) {\n try {\n await Promise.resolve(runInInjectionContext(this.injector, () => provider.execute(data)));\n }\n catch (err) {\n console.error(`[AXPDistributedEventListenerService] Provider for key='${key}' failed`, err);\n }\n }\n }\n /**\n * Dispatch with async response (first matching provider, with retry/timeout)\n */\n async dispatchAsync(key, data, options = {\n timeout: 60_000,\n retries: 3,\n retryDelay: 1000,\n }) {\n const providers = await this.resolveProviders();\n const matched = providers.filter(p => p.key === key);\n if (!matched.length) {\n throw new Error(`No provider found for key='${key}'`);\n }\n const attempt = (n) => {\n return new Promise((resolve, reject) => {\n let finished = false;\n const timer = setTimeout(() => {\n if (!finished) {\n if (n < options.retries) {\n resolve(attempt(n + 1));\n }\n else {\n reject(new Error(`Timeout: no response for key='${key}' after ${options.retries} attempts.`));\n }\n }\n }, options.timeout);\n try {\n const provider = matched[0];\n const result = runInInjectionContext(this.injector, () => provider.execute(data));\n Promise.resolve(result)\n .then((r) => {\n finished = true;\n clearTimeout(timer);\n resolve(r);\n })\n .catch(err => {\n finished = true;\n clearTimeout(timer);\n reject(err);\n });\n }\n catch (err) {\n clearTimeout(timer);\n reject(err);\n }\n });\n };\n return attempt(0);\n }\n /**\n * Resolve all providers (handle both direct provider and Promise<provider>)\n */\n async resolveProviders() {\n return Promise.all(this.listenerProviders.map(p => p instanceof Promise ? p : Promise.resolve(p)));\n }\n /**\n * Returns all listeners for a specific event key.\n * @param key The event key.\n * @returns Array of listeners for the key.\n */\n async getListeners(key) {\n await this.ensureProvidersLoaded();\n return this.listenersByKey.get(key) || [];\n }\n /**\n * Returns all registered event keys.\n * @returns Array of all event keys that have listeners.\n */\n async getRegisteredKeys() {\n await this.ensureProvidersLoaded();\n return Array.from(this.listenersByKey.keys());\n }\n //#endregion\n //#region ---- Private Methods ----\n /**\n * Ensures that all providers have been loaded and cached.\n */\n async ensureProvidersLoaded() {\n if (this.providersLoaded) {\n return;\n }\n // Resolve all providers\n const resolvedProviders = await Promise.all(this.listenerProviders);\n // Group listeners by key\n for (const provider of resolvedProviders) {\n if (provider) {\n const existingListeners = this.listenersByKey.get(provider.key) || [];\n existingListeners.push(provider);\n this.listenersByKey.set(provider.key, existingListeners);\n }\n }\n this.providersLoaded = true;\n }\n //#endregion\n //#region ---- Cache Management ----\n /** Clears the listeners cache and forces reload on next access. */\n clearListenersCache() {\n this.listenersByKey.clear();\n this.providersLoaded = false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDistributedEventListenerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDistributedEventListenerService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDistributedEventListenerService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzdHJpYnV0ZWQtZXZlbnQtbGlzdGVuZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL2Rpc3RyaWJ1dGVkLWV2ZW50cy9kaXN0cmlidXRlZC1ldmVudC1saXN0ZW5lci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUUvQixPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFFLHVDQUF1QyxFQUF1QyxNQUFNLHVDQUF1QyxDQUFDOztBQUVySSxZQUFZO0FBS1osTUFBTSxPQUFPLGtDQUFrQztJQUgvQztRQUlFLDBDQUEwQztRQUV6QixzQkFBaUIsR0FBRyxNQUFNLENBQUMsdUNBQXVDLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDOUYsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU3QyxrQ0FBa0M7UUFDMUIsbUJBQWMsR0FBNEQsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUU1RixrREFBa0Q7UUFDMUMsb0JBQWUsR0FBRyxLQUFLLENBQUM7S0FpS2pDO0lBL0pDLFlBQVk7SUFFWixrQ0FBa0M7SUFFbEM7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBVyxFQUFFLElBQVU7UUFDcEMsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNoRCxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUVyRCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3BCLE9B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QWlCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDdEUsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNqQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLGlCQUFpQixDQUFDLENBQUM7WUFDM0QsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRUQsWUFBWTtJQUVaLHdDQUF3QztJQUV4QyxtRUFBbUU7SUFDbkUsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDL0IsQ0FBQzsrR0F4S1Usa0NBQWtDO21IQUFsQyxrQ0FBa0MsY0FGakMsTUFBTTs7NEZBRVAsa0NBQWtDO2tCQUg5QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiAtLS0tICAgSW1wb3J0cyAgIC0tLS1cblxuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciwgcnVuSW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBfRElTVFJJQlVURURfRVZFTlRfTElTVEVORVJfUFJPVklERVIsIEFYUERpc3RyaWJ1dGVkRXZlbnRMaXN0ZW5lclByb3ZpZGVyIH0gZnJvbSAnLi9kaXN0cmlidXRlZC1ldmVudC1saXN0ZW5lci5wcm92aWRlcic7XG5cbi8vI2VuZHJlZ2lvblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQVhQRGlzdHJpYnV0ZWRFdmVudExpc3RlbmVyU2VydmljZSB7XG4gIC8vI3JlZ2lvbiAtLS0tICAgUHJvdmlkZXJzICYgQ2FjaGVzICAgLS0tLVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgbGlzdGVuZXJQcm92aWRlcnMgPSBpbmplY3QoQVhQX0RJU1RSSUJVVEVEX0VWRU5UX0xJU1RFTkVSX1BST1ZJREVSLCB7IG9wdGlvbmFsOiB0cnVlIH0pIHx8IFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblxuICAvKiogQ2FjaGUgZm9yIGxpc3RlbmVycyBieSBrZXkuICovXG4gIHByaXZhdGUgbGlzdGVuZXJzQnlLZXk6IE1hcDxzdHJpbmcsIEFYUERpc3RyaWJ1dGVkRXZlbnRMaXN0ZW5lclByb3ZpZGVyPGFueT5bXT4gPSBuZXcgTWFwKCk7XG4gIFxuICAvKiogRmxhZyB0byB0cmFjayBpZiBwcm92aWRlcnMgaGF2ZSBiZWVuIGxvYWRlZCAqL1xuICBwcml2YXRlIHByb3ZpZGVyc0xvYWRlZCA9IGZhbHNlO1xuICBcbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBQdWJsaWMgQVBJICAgLS0tLVxuXG4gIC8qKlxuICAgKiBEaXNwYXRjaGVzIGFuIGV2ZW50IHRvIGFsbCByZWdpc3RlcmVkIGxpc3RlbmVycyBmb3IgdGhlIGdpdmVuIGtleS5cbiAgICogQHBhcmFtIGtleSBUaGUgZXZlbnQga2V5LlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgZXZlbnQgZGF0YSB0byBwYXNzIHRvIGxpc3RlbmVycy5cbiAgICovXG4gIGFzeW5jIGRpc3BhdGNoKGtleTogc3RyaW5nLCBkYXRhPzogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcHJvdmlkZXJzID0gYXdhaXQgdGhpcy5yZXNvbHZlUHJvdmlkZXJzKCk7XG4gICAgY29uc3QgbWF0Y2hlZCA9IHByb3ZpZGVycy5maWx0ZXIocCA9PiBwLmtleSA9PT0ga2V5KTtcblxuICAgIGlmICghbWF0Y2hlZC5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHByb3ZpZGVyIG9mIG1hdGNoZWQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IFByb21pc2UucmVzb2x2ZShcbiAgICAgICAgICBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgKCkgPT4gcHJvdmlkZXIuZXhlY3V0ZShkYXRhKSlcbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBbQVhQRGlzdHJpYnV0ZWRFdmVudExpc3RlbmVyU2VydmljZV0gUHJvdmlkZXIgZm9yIGtleT0nJHtrZXl9JyBmYWlsZWRgLCBlcnIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4vKipcbiAgICogRGlzcGF0Y2ggd2l0aCBhc3luYyByZXNwb25zZSAoZmlyc3QgbWF0Y2hpbmcgcHJvdmlkZXIsIHdpdGggcmV0cnkvdGltZW91dClcbiAgICovXG5wdWJsaWMgYXN5bmMgZGlzcGF0Y2hBc3luYzxULCBSPihcbiAga2V5OiBzdHJpbmcsXG4gIGRhdGE6IFQsXG4gIG9wdGlvbnM6IHsgdGltZW91dDogbnVtYmVyOyByZXRyaWVzOiBudW1iZXI7IHJldHJ5RGVsYXk6IG51bWJlciB9ID0ge1xuICAgIHRpbWVvdXQ6IDYwXzAwMCxcbiAgICByZXRyaWVzOiAzLFxuICAgIHJldHJ5RGVsYXk6IDEwMDAsXG4gIH1cbik6IFByb21pc2U8Uj4ge1xuICBjb25zdCBwcm92aWRlcnMgPSBhd2FpdCB0aGlzLnJlc29sdmVQcm92aWRlcnMoKTtcbiAgY29uc3QgbWF0Y2hlZCA9IHByb3ZpZGVycy5maWx0ZXIocCA9PiBwLmtleSA9PT0ga2V5KTtcblxuICBpZiAoIW1hdGNoZWQubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBObyBwcm92aWRlciBmb3VuZCBmb3Iga2V5PScke2tleX0nYCk7XG4gIH1cblxuICBjb25zdCBhdHRlbXB0ID0gKG46IG51bWJlcik6IFByb21pc2U8Uj4gPT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxSPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBsZXQgZmluaXNoZWQgPSBmYWxzZTtcblxuICAgICAgY29uc3QgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKCFmaW5pc2hlZCkge1xuICAgICAgICAgIGlmIChuIDwgb3B0aW9ucy5yZXRyaWVzKSB7ICAgICAgICAgIFxuICAgICAgICAgICAgcmVzb2x2ZShhdHRlbXB0KG4gKyAxKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlamVjdChcbiAgICAgICAgICAgICAgbmV3IEVycm9yKGBUaW1lb3V0OiBubyByZXNwb25zZSBmb3Iga2V5PScke2tleX0nIGFmdGVyICR7b3B0aW9ucy5yZXRyaWVzfSBhdHRlbXB0cy5gKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sIG9wdGlvbnMudGltZW91dCk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHByb3ZpZGVyID0gbWF0Y2hlZFswXTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsICgpID0+XG4gICAgICAgICAgcHJvdmlkZXIuZXhlY3V0ZShkYXRhKVxuICAgICAgICApO1xuXG4gICAgICAgIFByb21pc2UucmVzb2x2ZShyZXN1bHQpXG4gICAgICAgICAgLnRoZW4oKHI6IGFueSkgPT4ge1xuICAgICAgICAgICAgZmluaXNoZWQgPSB0cnVlO1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgICAgICAgIHJlc29sdmUocik7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gYXR0ZW1wdCgwKTtcbn1cblxuIC8qKlxuICAgKiBSZXNvbHZlIGFsbCBwcm92aWRlcnMgKGhhbmRsZSBib3RoIGRpcmVjdCBwcm92aWRlciBhbmQgUHJvbWlzZTxwcm92aWRlcj4pXG4gICAqL1xuIHByaXZhdGUgYXN5bmMgcmVzb2x2ZVByb3ZpZGVycygpOiBQcm9taXNlPEFYUERpc3RyaWJ1dGVkRXZlbnRMaXN0ZW5lclByb3ZpZGVyPGFueT5bXT4ge1xuICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgdGhpcy5saXN0ZW5lclByb3ZpZGVycy5tYXAocCA9PlxuICAgICAgcCBpbnN0YW5jZW9mIFByb21pc2UgPyBwIDogUHJvbWlzZS5yZXNvbHZlKHApXG4gICAgKVxuICApO1xufVxuXG5cbiAgLyoqXG4gICAqIFJldHVybnMgYWxsIGxpc3RlbmVycyBmb3IgYSBzcGVjaWZpYyBldmVudCBrZXkuXG4gICAqIEBwYXJhbSBrZXkgVGhlIGV2ZW50IGtleS5cbiAgICogQHJldHVybnMgQXJyYXkgb2YgbGlzdGVuZXJzIGZvciB0aGUga2V5LlxuICAgKi9cbiAgYXN5bmMgZ2V0TGlzdGVuZXJzKGtleTogc3RyaW5nKTogUHJvbWlzZTxBWFBEaXN0cmlidXRlZEV2ZW50TGlzdGVuZXJQcm92aWRlcjxhbnk+W10+IHtcbiAgICBhd2FpdCB0aGlzLmVuc3VyZVByb3ZpZGVyc0xvYWRlZCgpO1xuICAgIHJldHVybiB0aGlzLmxpc3RlbmVyc0J5S2V5LmdldChrZXkpIHx8IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYWxsIHJlZ2lzdGVyZWQgZXZlbnQga2V5cy5cbiAgICogQHJldHVybnMgQXJyYXkgb2YgYWxsIGV2ZW50IGtleXMgdGhhdCBoYXZlIGxpc3RlbmVycy5cbiAgICovXG4gIGFzeW5jIGdldFJlZ2lzdGVyZWRLZXlzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBhd2FpdCB0aGlzLmVuc3VyZVByb3ZpZGVyc0xvYWRlZCgpO1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMubGlzdGVuZXJzQnlLZXkua2V5cygpKTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgUHJpdmF0ZSBNZXRob2RzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBFbnN1cmVzIHRoYXQgYWxsIHByb3ZpZGVycyBoYXZlIGJlZW4gbG9hZGVkIGFuZCBjYWNoZWQuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGVuc3VyZVByb3ZpZGVyc0xvYWRlZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5wcm92aWRlcnNMb2FkZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBSZXNvbHZlIGFsbCBwcm92aWRlcnNcbiAgICBjb25zdCByZXNvbHZlZFByb3ZpZGVycyA9IGF3YWl0IFByb21pc2UuYWxsKHRoaXMubGlzdGVuZXJQcm92aWRlcnMpO1xuXG4gICAgLy8gR3JvdXAgbGlzdGVuZXJzIGJ5IGtleVxuICAgIGZvciAoY29uc3QgcHJvdmlkZXIgb2YgcmVzb2x2ZWRQcm92aWRlcnMpIHtcbiAgICAgIGlmIChwcm92aWRlcikge1xuICAgICAgICBjb25zdCBleGlzdGluZ0xpc3RlbmVycyA9IHRoaXMubGlzdGVuZXJzQnlLZXkuZ2V0KHByb3ZpZGVyLmtleSkgfHwgW107XG4gICAgICAgIGV4aXN0aW5nTGlzdGVuZXJzLnB1c2gocHJvdmlkZXIpO1xuICAgICAgICB0aGlzLmxpc3RlbmVyc0J5S2V5LnNldChwcm92aWRlci5rZXksIGV4aXN0aW5nTGlzdGVuZXJzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnByb3ZpZGVyc0xvYWRlZCA9IHRydWU7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIENhY2hlIE1hbmFnZW1lbnQgICAtLS0tXG5cbiAgLyoqIENsZWFycyB0aGUgbGlzdGVuZXJzIGNhY2hlIGFuZCBmb3JjZXMgcmVsb2FkIG9uIG5leHQgYWNjZXNzLiAqL1xuICBjbGVhckxpc3RlbmVyc0NhY2hlKCk6IHZvaWQge1xuICAgIHRoaXMubGlzdGVuZXJzQnlLZXkuY2xlYXIoKTtcbiAgICB0aGlzLnByb3ZpZGVyc0xvYWRlZCA9IGZhbHNlO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG59Il19","import { Injectable } from '@angular/core';\nimport { isUndefined } from 'lodash-es';\nimport { Subject } from 'rxjs';\nimport { AXPDataGenerator } from '../data/data-generator';\nimport * as i0 from \"@angular/core\";\nexport class AXPBroadcastEventService {\n constructor() {\n this.eventSubjects = new Map();\n this.pendingRequests = new Map();\n this.multiTabEventHistory = new Set(); // Prevent duplicate processing of the same event\n this.instanceId = AXPDataGenerator.uuid();\n this.channel = new BroadcastChannel('platform_global_events');\n // Handle incoming messages\n this.channel.onmessage = (event) => {\n const { type, payload, requestId, response, sourceId } = event.data;\n // Prevent processing the same event multiple times (multi-tab synchronization)\n if (requestId && this.multiTabEventHistory.has(requestId)) {\n return;\n }\n if (requestId) {\n this.multiTabEventHistory.add(requestId); // Store processed requestId\n setTimeout(() => this.multiTabEventHistory.delete(requestId), 10000); // Cleanup after 10 sec\n }\n // Handle responses to pending requests\n if (requestId && !isUndefined(response) && this.pendingRequests.has(requestId)) {\n this.pendingRequests.get(requestId)(response);\n this.pendingRequests.delete(requestId);\n return;\n }\n // Handle normal broadcast events\n // Ignore events originating from this same instance to avoid double-delivery\n if (sourceId && sourceId === this.instanceId) {\n return;\n }\n if (type && this.eventSubjects.has(type)) {\n this.eventSubjects.get(type).next({ data: payload, requestId });\n }\n };\n }\n /**\n * Publish an event without expecting a response\n */\n publish(type, payload) {\n this.channel.postMessage({ type, payload, sourceId: this.instanceId });\n // Local echo so same-tab listeners receive the event as well\n if (this.eventSubjects.has(type)) {\n this.eventSubjects.get(type).next({ data: payload });\n }\n }\n /**\n * Subscribe to an event\n */\n listen(type) {\n if (!this.eventSubjects.has(type)) {\n this.eventSubjects.set(type, new Subject());\n }\n return this.eventSubjects.get(type).asObservable();\n }\n /**\n * Unsubscribe from an event\n */\n unsubscribe(type) {\n if (this.eventSubjects.has(type)) {\n this.eventSubjects.get(type).complete();\n this.eventSubjects.delete(type);\n }\n }\n /**\n * Send a message and wait for a response with retry logic\n */\n async sendAndWaitForResponse(type, payload, options = {\n timeout: 60 * 60 * 1000,\n retries: 3,\n retryDelay: 1000,\n }) {\n const requestId = AXPDataGenerator.uuid();\n const attemptRequest = (attempt) => {\n return new Promise((resolve, reject) => {\n this.pendingRequests.set(requestId, resolve);\n this.channel.postMessage({ type, payload, requestId });\n setTimeout(() => {\n if (this.pendingRequests.has(requestId)) {\n this.pendingRequests.delete(requestId);\n if (attempt < options.retries) {\n console.warn(`Retrying request '${type}' (${attempt + 1}/${options.retries})...`);\n resolve(attemptRequest(attempt + 1)); // Retry request\n }\n else {\n reject(new Error(`Timeout: No response received for event '${type}' after ${options.retries} attempts.`));\n }\n }\n }, options.timeout);\n });\n };\n return attemptRequest(0);\n }\n /**\n * Respond to a request\n */\n respondToRequest(requestId, response) {\n if (!requestId) {\n console.warn('Invalid requestId. Cannot send response.');\n return;\n }\n this.channel.postMessage({ requestId, response });\n }\n /**\n * Cleanup when the service is destroyed\n */\n ngOnDestroy() {\n this.channel.close();\n // Complete all subjects\n this.eventSubjects.forEach((subject) => subject.complete());\n this.eventSubjects.clear();\n // Reject all pending requests to avoid dangling promises\n this.pendingRequests.forEach((resolve, requestId) => {\n resolve(Promise.reject(new Error(`Service destroyed. Request ${requestId} was not completed.`)));\n });\n this.pendingRequests.clear();\n // Cleanup multi-tab event history\n this.multiTabEventHistory.clear();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPBroadcastEventService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPBroadcastEventService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPBroadcastEventService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL2V2ZW50LXNlcnZpY2UvZXZlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDeEMsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFLMUQsTUFBTSxPQUFPLHdCQUF3QjtJQU9uQztRQUxRLGtCQUFhLEdBQUcsSUFBSSxHQUFHLEVBQXNELENBQUM7UUFDOUUsb0JBQWUsR0FBRyxJQUFJLEdBQUcsRUFBbUMsQ0FBQztRQUM3RCx5QkFBb0IsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDLENBQUMsaURBQWlEO1FBQ2xGLGVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUdwRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksZ0JBQWdCLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUU5RCwyQkFBMkI7UUFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNqQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDcEUsK0VBQStFO1lBQy9FLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDMUQsT0FBTztZQUNULENBQUM7WUFFRCxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNkLElBQUks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QUksQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1lBQ3pELE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXO1FBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUVyQix3QkFBd0I7UUFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFM0IseURBQXlEO1FBQ3pELElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxFQUFFO1lBQ2xELE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLDhCQUE4QixTQUFTLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25HLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUU3QixrQ0FBa0M7UUFDbEMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3BDLENBQUM7K0dBMUlVLHdCQUF3QjttSEFBeEIsd0JBQXdCLGNBRnZCLE1BQU07OzRGQUVQLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzVW5kZWZpbmVkIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYUERhdGFHZW5lcmF0b3IgfSBmcm9tICcuLi9kYXRhL2RhdGEtZ2VuZXJhdG9yJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFYUEJyb2FkY2FzdEV2ZW50U2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgY2hhbm5lbDogQnJvYWRjYXN0Q2hhbm5lbDtcbiAgcHJpdmF0ZSBldmVudFN1YmplY3RzID0gbmV3IE1hcDxzdHJpbmcsIFN1YmplY3Q8eyBkYXRhOiBhbnk7IHJlcXVlc3RJZD86IHN0cmluZyB9Pj4oKTtcbiAgcHJpdmF0ZSBwZW5kaW5nUmVxdWVzdHMgPSBuZXcgTWFwPHN0cmluZywgKHJlc3BvbnNlOiBhbnkpID0+IHZvaWQ+KCk7XG4gIHByaXZhdGUgbXVsdGlUYWJFdmVudEhpc3RvcnkgPSBuZXcgU2V0PHN0cmluZz4oKTsgLy8gUHJldmVudCBkdXBsaWNhdGUgcHJvY2Vzc2luZyBvZiB0aGUgc2FtZSBldmVudFxuICBwcml2YXRlIHJlYWRvbmx5IGluc3RhbmNlSWQgPSBBWFBEYXRhR2VuZXJhdG9yLnV1aWQoKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmNoYW5uZWwgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbCgncGxhdGZvcm1fZ2xvYmFsX2V2ZW50cycpO1xuXG4gICAgLy8gSGFuZGxlIGluY29taW5nIG1lc3NhZ2VzXG4gICAgdGhpcy5jaGFubmVsLm9ubWVzc2FnZSA9IChldmVudCkgPT4ge1xuICAgICAgY29uc3QgeyB0eXBlLCBwYXlsb2FkLCByZXF1ZXN0SWQsIHJlc3BvbnNlLCBzb3VyY2VJZCB9ID0gZXZlbnQuZGF0YTtcbiAgICAgIC8vIFByZXZlbnQgcHJvY2Vzc2luZyB0aGUgc2FtZSBldmVudCBtdWx0aXBsZSB0aW1lcyAobXVsdGktdGFiIHN5bmNocm9uaXphdGlvbilcbiAgICAgIGlmIChyZXF1ZXN0SWQgJiYgdGhpcy5tdWx0aVRhYkV2ZW50SGlzdG9yeS5oYXMocmVxdWVzdElkKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXF1ZXN0SWQpIHtcbiAgICAgICAgdGhpcy5tdWx0aVRhYkV2ZW50SGlzdG9yeS5hZGQocmVxdWVzdElkKTsgLy8gU3RvcmUgcHJvY2Vzc2VkIHJlcXVlc3RJZFxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMubXVsdGlUYWJFdmVudEhpc3RvcnkuZGVsZXRlKHJlcXVlc3RJZCksIDEwMDAwKTsgLy8gQ2xlYW51cCBhZnRlciAxMCBzZWNcbiAgICAgIH1cblxuICAgICAgLy8gSGFuZGxlIHJlc3BvbnNlcyB0byBwZW5kaW5nIHJlcXVlc3RzXG4gICAgICBpZiAocmVxdWVzdElkICYmICFpc1VuZGVmaW5lZChyZXNwb25zZSkgJiYgdGhpcy5wZW5kaW5nUmVxdWVzdHMuaGFzKHJlcXVlc3RJZCkpIHtcbiAgICAgICAgdGhpcy5wZW5kaW5nUmVxdWVzdHMuZ2V0KHJlcXVlc3RJZCkhKHJlc3BvbnNlKTtcbiAgICAgICAgdGhpcy5wZW5kaW5nUmVxdWVzdHMuZGVsZXRlKHJlcXVlc3RJZCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gSGFuZGxlIG5vcm1hbCBicm9hZGNhc3QgZXZlbnRzXG4gICAgICAvLyBJZ25vcmUgZXZlbnRzIG9yaWdpbmF0aW5nIGZyb20gdGhpcyBzYW1lIGluc3RhbmNlIHRvIGF2b2lkIGRvdWJsZS1kZWxpdmVyeVxuICAgICAgaWYgKHNvdXJjZUlkICYmIHNvdXJjZUlkID09PSB0aGlzLmluc3RhbmNlSWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGUgJiYgdGhpcy5ldmVudFN1YmplY3RzLmhhcyh0eXBlKSkge1xuICAgICAgICB0aGlzLmV2ZW50U3ViamVjdHMuZ2V0KHR5cGUpIS5uZXh0KHsgZGF0YTogcGF5bG9hZCwgcmVxdWVzdElkIH0pO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUHVibGlzaCBhbiBldmVudCB3aXRob3V0IGV4cGVjdGluZyBhIHJlc3BvbnNlXG4gICAqL1xuICBwdWJsaWMgcHVibGlzaDxUPih0eXBlOiBzdHJpbmcsIHBheWxvYWQ/OiBUKTogdm9pZCB7XG4gICAgdGhpcy5jaGFubmVsLnBvc3RNZXNzYWdlKHsgdHlwZSwgcGF5bG9hZCwgc291cmNlSWQ6IHRoaXMuaW5zdGFuY2VJZCB9KTtcbiAgICAvLyBMb2NhbCBlY2hvIHNvIHNhbWUtdGFiIGxpc3RlbmVycyByZWNlaXZlIHRoZSBldmVudCBhcyB3ZWxsXG4gICAgaWYgKHRoaXMuZXZlbnRTdWJqZWN0cy5oYXModHlwZSkpIHtcbiAgICAgIHRoaXMuZXZlbnRTdWJqZWN0cy5nZXQodHlwZSkhLm5leHQoeyBkYXRhOiBwYXlsb2FkIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gYW4gZXZlbnRcbiAgICovXG4gIHB1YmxpYyBsaXN0ZW48VD4odHlwZTogc3RyaW5nKTogT2JzZXJ2YWJsZTx7IGRhdGE6IFQ7IHJlcXVlc3RJZD86IHN0cmluZyB9PiB7XG4gICAgaWYgKCF0aGlzLmV2ZW50U3ViamVjdHMuaGFzKHR5cGUpKSB7XG4gICAgICB0aGlzLmV2ZW50U3ViamVjdHMuc2V0KHR5cGUsIG5ldyBTdWJqZWN0PHsgZGF0YTogVDsgcmVxdWVzdElkPzogc3RyaW5nIH0+KCkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5ldmVudFN1YmplY3RzLmdldCh0eXBlKSEuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogVW5zdWJzY3JpYmUgZnJvbSBhbiBldmVudFxuICAgKi9cbiAgcHVibGljIHVuc3Vic2NyaWJlKHR5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmV2ZW50U3ViamVjdHMuaGFzKHR5cGUpKSB7XG4gICAgICB0aGlzLmV2ZW50U3ViamVjdHMuZ2V0KHR5cGUpIS5jb21wbGV0ZSgpO1xuICAgICAgdGhpcy5ldmVudFN1YmplY3RzLmRlbGV0ZSh0eXBlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2VuZCBhIG1lc3NhZ2UgYW5kIHdhaXQgZm9yIGEgcmVzcG9uc2Ugd2l0aCByZXRyeSBsb2dpY1xuICAgKi9cbiAgcHVibGljIGFzeW5jIHNlbmRBbmRXYWl0Rm9yUmVzcG9uc2U8VCwgUj4oXG4gICAgdHlwZTogc3RyaW5nLFxuICAgIHBheWxvYWQ/OiBULFxuICAgIG9wdGlvbnM6IHsgdGltZW91dDogbnVtYmVyOyByZXRyaWVzOiBudW1iZXI7IHJldHJ5RGVsYXk6IG51bWJlciB9ID0ge1xuICAgICAgdGltZW91dDogNjAgKiA2MCAqIDEwMDAsXG4gICAgICByZXRyaWVzOiAzLFxuICAgICAgcmV0cnlEZWxheTogMTAwMCxcbiAgICB9LFxuICApOiBQcm9taXNlPFI+IHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSBBWFBEYXRhR2VuZXJhdG9yLnV1aWQoKTtcblxuICAgIGNvbnN0IGF0dGVtcHRSZXF1ZXN0ID0gKGF0dGVtcHQ6IG51bWJlcik6IFByb21pc2U8Uj4gPT4ge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPFI+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgdGhpcy5wZW5kaW5nUmVxdWVzdHMuc2V0KHJlcXVlc3RJZCwgcmVzb2x2ZSk7XG5cbiAgICAgICAgdGhpcy5jaGFubmVsLnBvc3RNZXNzYWdlKHsgdHlwZSwgcGF5bG9hZCwgcmVxdWVzdElkIH0pO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLnBlbmRpbmdSZXF1ZXN0cy5oYXMocmVxdWVzdElkKSkge1xuICAgICAgICAgICAgdGhpcy5wZW5kaW5nUmVxdWVzdHMuZGVsZXRlKHJlcXVlc3RJZCk7XG4gICAgICAgICAgICBpZiAoYXR0ZW1wdCA8IG9wdGlvbnMucmV0cmllcykge1xuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFJldHJ5aW5nIHJlcXVlc3QgJyR7dHlwZX0nICgke2F0dGVtcHQgKyAxfS8ke29wdGlvbnMucmV0cmllc30pLi4uYCk7XG4gICAgICAgICAgICAgIHJlc29sdmUoYXR0ZW1wdFJlcXVlc3QoYXR0ZW1wdCArIDEpKTsgLy8gUmV0cnkgcmVxdWVzdFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgVGltZW91dDogTm8gcmVzcG9uc2UgcmVjZWl2ZWQgZm9yIGV2ZW50ICcke3R5cGV9JyBhZnRlciAke29wdGlvbnMucmV0cmllc30gYXR0ZW1wdHMuYCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgb3B0aW9ucy50aW1lb3V0KTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICByZXR1cm4gYXR0ZW1wdFJlcXVlc3QoMCk7XG4gIH1cblxuICAvKipcbiAgICogUmVzcG9uZCB0byBhIHJlcXVlc3RcbiAgICovXG4gIHB1YmxpYyByZXNwb25kVG9SZXF1ZXN0KHJlcXVlc3RJZDogc3RyaW5nLCByZXNwb25zZTogYW55KTogdm9pZCB7XG4gICAgaWYgKCFyZXF1ZXN0SWQpIHtcbiAgICAgIGNvbnNvbGUud2FybignSW52YWxpZCByZXF1ZXN0SWQuIENhbm5vdCBzZW5kIHJlc3BvbnNlLicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNoYW5uZWwucG9zdE1lc3NhZ2UoeyByZXF1ZXN0SWQsIHJlc3BvbnNlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFudXAgd2hlbiB0aGUgc2VydmljZSBpcyBkZXN0cm95ZWRcbiAgICovXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY2hhbm5lbC5jbG9zZSgpO1xuXG4gICAgLy8gQ29tcGxldGUgYWxsIHN1YmplY3RzXG4gICAgdGhpcy5ldmVudFN1YmplY3RzLmZvckVhY2goKHN1YmplY3QpID0+IHN1YmplY3QuY29tcGxldGUoKSk7XG4gICAgdGhpcy5ldmVudFN1YmplY3RzLmNsZWFyKCk7XG5cbiAgICAvLyBSZWplY3QgYWxsIHBlbmRpbmcgcmVxdWVzdHMgdG8gYXZvaWQgZGFuZ2xpbmcgcHJvbWlzZXNcbiAgICB0aGlzLnBlbmRpbmdSZXF1ZXN0cy5mb3JFYWNoKChyZXNvbHZlLCByZXF1ZXN0SWQpID0+IHtcbiAgICAgIHJlc29sdmUoUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKGBTZXJ2aWNlIGRlc3Ryb3llZC4gUmVxdWVzdCAke3JlcXVlc3RJZH0gd2FzIG5vdCBjb21wbGV0ZWQuYCkpKTtcbiAgICB9KTtcbiAgICB0aGlzLnBlbmRpbmdSZXF1ZXN0cy5jbGVhcigpO1xuXG4gICAgLy8gQ2xlYW51cCBtdWx0aS10YWIgZXZlbnQgaGlzdG9yeVxuICAgIHRoaXMubXVsdGlUYWJFdmVudEhpc3RvcnkuY2xlYXIoKTtcbiAgfVxufVxuIl19","import { Injectable, InjectionToken, inject } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXPExpressionEvaluatorScopeProviderContext {\n constructor() {\n this.scopes = {};\n }\n addScope(namespace, functions) {\n this.scopes[namespace] = { ...this.scopes[namespace], ...functions };\n }\n getScopes() {\n return this.scopes;\n }\n}\nexport const AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER = new InjectionToken('AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER');\nexport class AXPExpressionEvaluatorScopeProviderService {\n constructor() {\n this.providers = inject(AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, { optional: true });\n this.cache = null;\n }\n async load() {\n if (this.cache)\n return;\n const context = new AXPExpressionEvaluatorScopeProviderContext();\n if (Array.isArray(this.providers)) {\n for (const provider of this.providers) {\n await provider.provide(context);\n }\n }\n this.cache = context.getScopes();\n }\n async getScopesAsync() {\n await this.load();\n return this.cache || {};\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPExpressionEvaluatorScopeProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPExpressionEvaluatorScopeProviderService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPExpressionEvaluatorScopeProviderService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwcmVzc2lvbi1ldmFsdWF0b3Itc2NvcGUtcHJvdmlkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL2V4cHJlc3Npb24tZXZhbHVhdG9yL2V4cHJlc3Npb24tZXZhbHVhdG9yLXNjb3BlLXByb3ZpZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU9uRSxNQUFNLE9BQU8sMENBQTBDO0lBQXZEO1FBQ1ksV0FBTSxHQUFnQyxFQUFFLENBQUM7SUFPckQsQ0FBQztJQU5HLFFBQVEsQ0FBQyxTQUFpQixFQUFFLFNBQXVDO1FBQy9ELElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxTQUFTLEVBQUUsQ0FBQztJQUN6RSxDQUFDO0lBQ0QsU0FBUztRQUNMLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0NBQ0o7QUFHRCxNQUFNLENBQUMsTUFBTSx1Q0FBdUMsR0FBRyxJQUFJLGNBQWMsQ0FDckUseUNBQXlDLENBQzVDLENBQUM7QUFHRixNQUFNLE9BQU8sMENBQTBDO0lBRHZEO1FBRVksY0FBUyxHQUFHLE1BQU0sQ0FBQyx1Q0FBdUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2hGLFVBQUssR0FBdUMsSUFBSSxDQUFDO0tBaUI1RDtJQWZXLEtBQUssQ0FBQyxJQUFJO1FBQ2QsSUFBSSxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU87UUFDdkIsTUFBTSxPQUFPLEdBQUcsSUFBSSwwQ0FBMEMsRUFBRSxDQUFDO1FBQ2pFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNoQyxLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDcEMsTUFBTSxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3BDLENBQUM7UUFDTCxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVNLEtBQUssQ0FBQyxjQUFjO1FBQ3ZCLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDNUIsQ0FBQzsrR0FsQlEsMENBQTBDO21IQUExQywwQ0FBMEMsY0FEN0IsTUFBTTs7NEZBQ25CLDBDQUEwQztrQkFEdEQsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2NvcGUgfSBmcm9tICcuL2V4cHJlc3Npb24tZXZhbHVhdG9yLnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYUEV4cHJlc3Npb25FdmFsdWF0b3JTY29wZVByb3ZpZGVyIHtcbiAgICBwcm92aWRlKGNvbnRleHQ6IEFYUEV4cHJlc3Npb25FdmFsdWF0b3JTY29wZVByb3ZpZGVyQ29udGV4dCk6IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCBjbGFzcyBBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2NvcGVQcm92aWRlckNvbnRleHQge1xuICAgIHByaXZhdGUgc2NvcGVzOiBBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2NvcGUgPSB7fTtcbiAgICBhZGRTY29wZShuYW1lc3BhY2U6IHN0cmluZywgZnVuY3Rpb25zOiB7IFtuYW1lOiBzdHJpbmddOiBGdW5jdGlvbiB9KSB7XG4gICAgICAgIHRoaXMuc2NvcGVzW25hbWVzcGFjZV0gPSB7IC4uLnRoaXMuc2NvcGVzW25hbWVzcGFjZV0sIC4uLmZ1bmN0aW9ucyB9O1xuICAgIH1cbiAgICBnZXRTY29wZXMoKTogQVhQRXhwcmVzc2lvbkV2YWx1YXRvclNjb3BlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NvcGVzO1xuICAgIH1cbn1cbmV4cG9ydCB0eXBlIEFYUEV4cHJlc3Npb25FdmFsdWF0b3JTY29wZVByb3ZpZGVycyA9IEFYUEV4cHJlc3Npb25FdmFsdWF0b3JTY29wZVByb3ZpZGVyW10gfCAoKCkgPT4gQVhQRXhwcmVzc2lvbkV2YWx1YXRvclNjb3BlUHJvdmlkZXJbXSk7XG5cbmV4cG9ydCBjb25zdCBBWFBfRVhQUkVTU0lPTl9FVkFMVUFUT1JfU0NPUEVfUFJPVklERVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48QVhQRXhwcmVzc2lvbkV2YWx1YXRvclNjb3BlUHJvdmlkZXJzPihcbiAgICAnQVhQX0VYUFJFU1NJT05fRVZBTFVBVE9SX1NDT1BFX1BST1ZJREVSJ1xuKTtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2NvcGVQcm92aWRlclNlcnZpY2Uge1xuICAgIHByaXZhdGUgcHJvdmlkZXJzID0gaW5qZWN0KEFYUF9FWFBSRVNTSU9OX0VWQUxVQVRPUl9TQ09QRV9QUk9WSURFUiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgICBwcml2YXRlIGNhY2hlOiBBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2NvcGUgfCBudWxsID0gbnVsbDtcblxuICAgIHByaXZhdGUgYXN5bmMgbG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuY2FjaGUpIHJldHVybjtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IG5ldyBBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2NvcGVQcm92aWRlckNvbnRleHQoKTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5wcm92aWRlcnMpKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHByb3ZpZGVyIG9mIHRoaXMucHJvdmlkZXJzKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgcHJvdmlkZXIucHJvdmlkZShjb250ZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNhY2hlID0gY29udGV4dC5nZXRTY29wZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0U2NvcGVzQXN5bmMoKTogUHJvbWlzZTxBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2NvcGU+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5sb2FkKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmNhY2hlIHx8IHt9O1xuICAgIH1cbn0gIl19","import { Injectable, inject } from '@angular/core';\nimport { AXPExpressionEvaluatorScopeProviderService } from './expression-evaluator-scope-provider.service';\nimport * as i0 from \"@angular/core\";\nexport class AXPExpressionEvaluatorService {\n constructor() {\n // Memoization cache for compiled expressions\n this.expressionCache = new Map();\n this.providerService = inject(AXPExpressionEvaluatorScopeProviderService);\n }\n getOrCompileFunction(expression) {\n if (!this.expressionCache.has(expression)) {\n // Check if expression contains multiple statements (has semicolons or newlines)\n const hasMultipleStatements = expression.includes(';') || expression.includes('\\n');\n let fn;\n if (hasMultipleStatements) {\n // For multiple statements, execute them in sequence and return the last expression\n fn = new Function('scope', `with (scope) { return (async function() { ${expression} })(); }`);\n }\n else {\n // For single expressions, use return\n fn = new Function('scope', `with (scope) { return (async function() { return ${expression}; })(); }`);\n }\n this.expressionCache.set(expression, fn);\n }\n return this.expressionCache.get(expression);\n }\n async getMergedScope(userScope) {\n const pluginScopes = await this.providerService.getScopesAsync();\n // Merge pluginScopes and userScope (userScope takes precedence)\n return { ...pluginScopes, ...userScope };\n }\n async evaluate(source, scope = {}) {\n try {\n const mergedScope = await this.getMergedScope(scope);\n if (typeof source === 'string' && source.includes('{{')) {\n return await this.evaluateStringExpression(source, mergedScope);\n }\n else if (Array.isArray(source)) {\n const evaluatedArray = [];\n for (const item of source) {\n evaluatedArray.push(await this.evaluate(item, mergedScope));\n }\n return evaluatedArray;\n }\n else if (typeof source === 'object' && source !== null) {\n const evaluatedObject = {};\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n evaluatedObject[key] = await this.evaluate(source[key], mergedScope);\n }\n }\n return evaluatedObject;\n }\n else {\n return source;\n }\n }\n catch (error) {\n console.error('Expression evaluator - Error evaluating expression:', source, error);\n return false;\n }\n }\n async evaluateStringExpression(templateExpression, scope) {\n // Check if the input is exactly a single {{ ... }} expression (handle multiline)\n const exactMatch = templateExpression.match(/^\\s*\\{\\{\\s*([\\s\\S]*?)\\s*\\}\\}\\s*$/);\n if (exactMatch) {\n const expression = exactMatch[1];\n const sandbox = this.getOrCompileFunction(expression);\n const result = await sandbox(scope);\n return result;\n }\n // Otherwise, interpolate all {{ ... }} expressions in the string\n const regex = /\\{\\{\\s*([\\s\\S]*?)\\s*\\}\\}/g;\n // Collect all matches and their positions\n const matches = [];\n let match;\n while ((match = regex.exec(templateExpression)) !== null) {\n matches.push({\n expression: match[1],\n start: match.index,\n end: regex.lastIndex,\n raw: match[0],\n });\n }\n // Evaluate all expressions in parallel\n const values = await Promise.all(matches.map((m) => {\n const sandbox = this.getOrCompileFunction(m.expression);\n return sandbox(scope);\n }));\n // Reconstruct the string with evaluated values\n let result = '';\n let lastIndex = 0;\n matches.forEach((m, i) => {\n result += templateExpression.slice(lastIndex, m.start);\n const value = values[i];\n result += value !== undefined && value !== null ? value : '';\n lastIndex = m.end;\n });\n result += templateExpression.slice(lastIndex);\n return result;\n }\n isExpression(expression) {\n if (typeof expression === 'string') {\n return expression.includes('{{');\n }\n return false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPExpressionEvaluatorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPExpressionEvaluatorService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPExpressionEvaluatorService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwcmVzc2lvbi1ldmFsdWF0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL2V4cHJlc3Npb24tZXZhbHVhdG9yL2V4cHJlc3Npb24tZXZhbHVhdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLDBDQUEwQyxFQUFFLE1BQU0sK0NBQStDLENBQUM7O0FBSzNHLE1BQU0sT0FBTyw2QkFBNkI7SUFEMUM7UUFFRSw2Q0FBNkM7UUFDckMsb0JBQWUsR0FBRyxJQUFJLEdBQUcsRUFBb0IsQ0FBQztRQUM5QyxvQkFBZSxHQUFHLE1BQU0sQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO0tBdUc5RTtJQXJHUyxvQkFBb0IsQ0FBQyxVQUFrQjtRQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUMxQyxnRkFBZ0Y7WUFDaEYsTUFBTSxxQkFBcUIsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFcEYsSUFBSSxFQUFZLENBQUM7WUFDakIsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO2dCQUMxQixtRkFBbUY7Z0JBQ25GLEVBQUUsR0FBRyxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsNkNBQTZDLFVBQVUsVUFBVSxDQUFDLENBQUM7WUFDaEcsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLHFDQUFxQztnQkFDckMsRUFBRSxHQUFHLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxvREFBb0QsVUFBVSxXQUFXLENBQUMsQ0FBQztZQUN4RyxDQUFDO1lBRUQsSUFBSSxDQUFDLGVBQWUsQ0FB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Q0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5QyxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU0sWUFBWSxDQUFDLFVBQWtCO1FBQ3BDLElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbkMsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7K0dBekdVLDZCQUE2QjttSEFBN0IsNkJBQTZCLGNBRGhCLE1BQU07OzRGQUNuQiw2QkFBNkI7a0JBRHpDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2NvcGVQcm92aWRlclNlcnZpY2UgfSBmcm9tICcuL2V4cHJlc3Npb24tZXZhbHVhdG9yLXNjb3BlLXByb3ZpZGVyLnNlcnZpY2UnO1xuXG5leHBvcnQgdHlwZSBBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2NvcGUgPSB7IFtuYW1lOiBzdHJpbmddOiB7IFtuYW1lOiBzdHJpbmddOiBGdW5jdGlvbiB9IH07XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQVhQRXhwcmVzc2lvbkV2YWx1YXRvclNlcnZpY2Uge1xuICAvLyBNZW1vaXphdGlvbiBjYWNoZSBmb3IgY29tcGlsZWQgZXhwcmVzc2lvbnNcbiAgcHJpdmF0ZSBleHByZXNzaW9uQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgRnVuY3Rpb24+KCk7XG4gIHByaXZhdGUgcHJvdmlkZXJTZXJ2aWNlID0gaW5qZWN0KEFYUEV4cHJlc3Npb25FdmFsdWF0b3JTY29wZVByb3ZpZGVyU2VydmljZSk7XG5cbiAgcHJpdmF0ZSBnZXRPckNvbXBpbGVGdW5jdGlvbihleHByZXNzaW9uOiBzdHJpbmcpOiBGdW5jdGlvbiB7XG4gICAgaWYgKCF0aGlzLmV4cHJlc3Npb25DYWNoZS5oYXMoZXhwcmVzc2lvbikpIHtcbiAgICAgIC8vIENoZWNrIGlmIGV4cHJlc3Npb24gY29udGFpbnMgbXVsdGlwbGUgc3RhdGVtZW50cyAoaGFzIHNlbWljb2xvbnMgb3IgbmV3bGluZXMpXG4gICAgICBjb25zdCBoYXNNdWx0aXBsZVN0YXRlbWVudHMgPSBleHByZXNzaW9uLmluY2x1ZGVzKCc7JykgfHwgZXhwcmVzc2lvbi5pbmNsdWRlcygnXFxuJyk7XG5cbiAgICAgIGxldCBmbjogRnVuY3Rpb247XG4gICAgICBpZiAoaGFzTXVsdGlwbGVTdGF0ZW1lbnRzKSB7XG4gICAgICAgIC8vIEZvciBtdWx0aXBsZSBzdGF0ZW1lbnRzLCBleGVjdXRlIHRoZW0gaW4gc2VxdWVuY2UgYW5kIHJldHVybiB0aGUgbGFzdCBleHByZXNzaW9uXG4gICAgICAgIGZuID0gbmV3IEZ1bmN0aW9uKCdzY29wZScsIGB3aXRoIChzY29wZSkgeyByZXR1cm4gKGFzeW5jIGZ1bmN0aW9uKCkgeyAke2V4cHJlc3Npb259IH0pKCk7IH1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEZvciBzaW5nbGUgZXhwcmVzc2lvbnMsIHVzZSByZXR1cm5cbiAgICAgICAgZm4gPSBuZXcgRnVuY3Rpb24oJ3Njb3BlJywgYHdpdGggKHNjb3BlKSB7IHJldHVybiAoYXN5bmMgZnVuY3Rpb24oKSB7IHJldHVybiAke2V4cHJlc3Npb259OyB9KSgpOyB9YCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZXhwcmVzc2lvbkNhY2hlLnNldChleHByZXNzaW9uLCBmbik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmV4cHJlc3Npb25DYWNoZS5nZXQoZXhwcmVzc2lvbikhO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRNZXJnZWRTY29wZSh1c2VyU2NvcGU6IEFYUEV4cHJlc3Npb25FdmFsdWF0b3JTY29wZSk6IFByb21pc2U8QVhQRXhwcmVzc2lvbkV2YWx1YXRvclNjb3BlPiB7XG4gICAgY29uc3QgcGx1Z2luU2NvcGVzID0gYXdhaXQgdGhpcy5wcm92aWRlclNlcnZpY2UuZ2V0U2NvcGVzQXN5bmMoKTtcbiAgICAvLyBNZXJnZSBwbHVnaW5TY29wZXMgYW5kIHVzZXJTY29wZSAodXNlclNjb3BlIHRha2VzIHByZWNlZGVuY2UpXG4gICAgcmV0dXJuIHsgLi4ucGx1Z2luU2NvcGVzLCAuLi51c2VyU2NvcGUgfTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBldmFsdWF0ZShzb3VyY2U6IGFueSB8IGFueVtdLCBzY29wZTogQVhQRXhwcmVzc2lvbkV2YWx1YXRvclNjb3BlID0ge30pOiBQcm9taXNlPGFueT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBtZXJnZWRTY29wZSA9IGF3YWl0IHRoaXMuZ2V0TWVyZ2VkU2NvcGUoc2NvcGUpO1xuICAgICAgaWYgKHR5cGVvZiBzb3VyY2UgPT09ICdzdHJpbmcnICYmIHNvdXJjZS5pbmNsdWRlcygne3snKSkge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5ldmFsdWF0ZVN0cmluZ0V4cHJlc3Npb24oc291cmNlLCBtZXJnZWRTY29wZSk7XG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoc291cmNlKSkge1xuICAgICAgICBjb25zdCBldmFsdWF0ZWRBcnJheSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2Ygc291cmNlKSB7XG4gICAgICAgICAgZXZhbHVhdGVkQXJyYXkucHVzaChhd2FpdCB0aGlzLmV2YWx1YXRlKGl0ZW0sIG1lcmdlZFNjb3BlKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGV2YWx1YXRlZEFycmF5O1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygc291cmNlID09PSAnb2JqZWN0JyAmJiBzb3VyY2UgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgZXZhbHVhdGVkT2JqZWN0OiBhbnkgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gc291cmNlKSB7XG4gICAgICAgICAgaWYgKHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICBldmFsdWF0ZWRPYmplY3Rba2V5XSA9IGF3YWl0IHRoaXMuZXZhbHVhdGUoc291cmNlW2tleV0sIG1lcmdlZFNjb3BlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGV2YWx1YXRlZE9iamVjdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0V4cHJlc3Npb24gZXZhbHVhdG9yIC0gRXJyb3IgZXZhbHVhdGluZyBleHByZXNzaW9uOicsIHNvdXJjZSwgZXJyb3IpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZXZhbHVhdGVTdHJpbmdFeHByZXNzaW9uKHRlbXBsYXRlRXhwcmVzc2lvbjogc3RyaW5nLCBzY29wZTogQVhQRXhwcmVzc2lvbkV2YWx1YXRvclNjb3BlKTogUHJvbWlzZTxhbnk+IHtcbiAgICAvLyBDaGVjayBpZiB0aGUgaW5wdXQgaXMgZXhhY3RseSBhIHNpbmdsZSB7eyAuLi4gfX0gZXhwcmVzc2lvbiAoaGFuZGxlIG11bHRpbGluZSlcbiAgICBjb25zdCBleGFjdE1hdGNoID0gdGVtcGxhdGVFeHByZXNzaW9uLm1hdGNoKC9eXFxzKlxce1xce1xccyooW1xcc1xcU10qPylcXHMqXFx9XFx9XFxzKiQvKTtcbiAgICBpZiAoZXhhY3RNYXRjaCkge1xuICAgICAgY29uc3QgZXhwcmVzc2lvbiA9IGV4YWN0TWF0Y2hbMV07XG4gICAgICBjb25zdCBzYW5kYm94ID0gdGhpcy5nZXRPckNvbXBpbGVGdW5jdGlvbihleHByZXNzaW9uKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNhbmRib3goc2NvcGUpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgLy8gT3RoZXJ3aXNlLCBpbnRlcnBvbGF0ZSBhbGwge3sgLi4uIH19IGV4cHJlc3Npb25zIGluIHRoZSBzdHJpbmdcbiAgICBjb25zdCByZWdleCA9IC9cXHtcXHtcXHMqKFtcXHNcXFNdKj8pXFxzKlxcfVxcfS9nO1xuICAgIC8vIENvbGxlY3QgYWxsIG1hdGNoZXMgYW5kIHRoZWlyIHBvc2l0aW9uc1xuICAgIGNvbnN0IG1hdGNoZXMgPSBbXTtcbiAgICBsZXQgbWF0Y2g7XG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4LmV4ZWModGVtcGxhdGVFeHByZXNzaW9uKSkgIT09IG51bGwpIHtcbiAgICAgIG1hdGNoZXMucHVzaCh7XG4gICAgICAgIGV4cHJlc3Npb246IG1hdGNoWzFdLFxuICAgICAgICBzdGFydDogbWF0Y2guaW5kZXgsXG4gICAgICAgIGVuZDogcmVnZXgubGFzdEluZGV4LFxuICAgICAgICByYXc6IG1hdGNoWzBdLFxuICAgICAgfSk7XG4gICAgfVxuICAgIC8vIEV2YWx1YXRlIGFsbCBleHByZXNzaW9ucyBpbiBwYXJhbGxlbFxuICAgIGNvbnN0IHZhbHVlcyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgbWF0Y2hlcy5tYXAoKG0pID0+IHtcbiAgICAgICAgY29uc3Qgc2FuZGJveCA9IHRoaXMuZ2V0T3JDb21waWxlRnVuY3Rpb24obS5leHByZXNzaW9uKTtcbiAgICAgICAgcmV0dXJuIHNhbmRib3goc2NvcGUpO1xuICAgICAgfSksXG4gICAgKTtcbiAgICAvLyBSZWNvbnN0cnVjdCB0aGUgc3RyaW5nIHdpdGggZXZhbHVhdGVkIHZhbHVlc1xuICAgIGxldCByZXN1bHQgPSAnJztcbiAgICBsZXQgbGFzdEluZGV4ID0gMDtcbiAgICBtYXRjaGVzLmZvckVhY2goKG0sIGkpID0+IHtcbiAgICAgIHJlc3VsdCArPSB0ZW1wbGF0ZUV4cHJlc3Npb24uc2xpY2UobGFzdEluZGV4LCBtLnN0YXJ0KTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdmFsdWVzW2ldO1xuICAgICAgcmVzdWx0ICs9IHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IG51bGwgPyB2YWx1ZSA6ICcnO1xuICAgICAgbGFzdEluZGV4ID0gbS5lbmQ7XG4gICAgfSk7XG4gICAgcmVzdWx0ICs9IHRlbXBsYXRlRXhwcmVzc2lvbi5zbGljZShsYXN0SW5kZXgpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgaXNFeHByZXNzaW9uKGV4cHJlc3Npb246IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlb2YgZXhwcmVzc2lvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBleHByZXNzaW9uLmluY2x1ZGVzKCd7eycpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdfQ==","import { Injectable, Injector, inject, runInInjectionContext } from '@angular/core';\nimport { AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, } from '../distributed-events/distributed-event-listener.provider';\nimport * as i0 from \"@angular/core\";\nexport class AXPHookService {\n constructor() {\n this.listenerProviders = inject(AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, { optional: true }) || [];\n this.injector = inject(Injector);\n }\n /**\n * Resolve all providers (handle both direct providers and Promise<provider>)\n */\n async resolveProviders() {\n return Promise.all(this.listenerProviders.map(p => p instanceof Promise ? p : Promise.resolve(p)));\n }\n /**\n * Fire sync hooks (fire-and-forget).\n * All providers with the given key will be executed.\n * Execution is not awaited.\n */\n fire(key, data) {\n this.resolveProviders().then(providers => {\n providers\n .filter(p => p.key === key)\n .sort((a, b) => (a.priority ?? 0) - (b.priority ?? 0))\n .forEach(p => {\n try {\n runInInjectionContext(this.injector, () => p.execute(data));\n }\n catch (err) {\n console.error(`[AXPHookService] Hook '${key}' failed`, err);\n }\n });\n });\n }\n /**\n * Run async hooks sequentially (waterfall).\n * The output of each hook is passed as input to the next hook.\n * Returns the final merged data after all hooks are executed.\n */\n async runAsync(key, initialData) {\n const providers = (await this.resolveProviders())\n .filter(p => p.key === key)\n .sort((a, b) => (a.priority ?? 0) - (b.priority ?? 0));\n let data = initialData;\n for (const p of providers) {\n data = await Promise.resolve(runInInjectionContext(this.injector, () => p.execute(data)));\n }\n return data;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPHookService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPHookService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPHookService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL2hvb2svdXRpbGwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUNMLHVDQUF1QyxHQUV4QyxNQUFNLDJEQUEyRCxDQUFDOztBQUduRSxNQUFNLE9BQU8sY0FBYztJQUQzQjtRQUVtQixzQkFBaUIsR0FDaEMsTUFBTSxDQUFDLHVDQUF1QyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNELGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7S0FtRDlDO0lBakRDOztPQUVHO0lBQ0ssS0FBSyxDQUFDLGdCQUFnQjtRQUM1QixPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQ2hCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDN0IsQ0FBQyxZQUFZLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUM5QyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLElBQUksQ0FBSSxHQUFXLEVBQUUsSUFBTztRQUNqQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDdkMsU0FBUztpQkFDTixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQztpQkFDMUIsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQztpQkFDckQsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNYLElBQUksQ0FBQztvQkFDSCxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDOUQsQ0FBQztnQkFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO29CQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEdBQUcsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUM5RCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLFFBQVEsQ0FBSSxHQUFXLEVBQUUsV0FBYztRQUNsRCxNQUFNLFNBQVMsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7YUFDOUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUM7YUFDMUIsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXpELElBQUksSUFBSSxHQUFHLFdBQVcsQ0FBQztRQUN2QixLQUFLLE1BQU0sQ0FBQyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQzFCLElBQUksR0FBRyxNQUFNLE9BQU8sQ0FBQyxPQUFPLENBQzFCLHFCQUFxQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUM1RCxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzsrR0FyRFUsY0FBYzttSEFBZCxjQUFjLGNBREQsTUFBTTs7NEZBQ25CLGNBQWM7a0JBRDFCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIGluamVjdCwgcnVuSW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBWFBfRElTVFJJQlVURURfRVZFTlRfTElTVEVORVJfUFJPVklERVIsXG4gIEFYUERpc3RyaWJ1dGVkRXZlbnRMaXN0ZW5lclByb3ZpZGVyLFxufSBmcm9tICcuLi9kaXN0cmlidXRlZC1ldmVudHMvZGlzdHJpYnV0ZWQtZXZlbnQtbGlzdGVuZXIucHJvdmlkZXInO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFYUEhvb2tTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBsaXN0ZW5lclByb3ZpZGVycyA9XG4gICAgaW5qZWN0KEFYUF9ESVNUUklCVVRFRF9FVkVOVF9MSVNURU5FUl9QUk9WSURFUiwgeyBvcHRpb25hbDogdHJ1ZSB9KSB8fCBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgYWxsIHByb3ZpZGVycyAoaGFuZGxlIGJvdGggZGlyZWN0IHByb3ZpZGVycyBhbmQgUHJvbWlzZTxwcm92aWRlcj4pXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHJlc29sdmVQcm92aWRlcnMoKTogUHJvbWlzZTxBWFBEaXN0cmlidXRlZEV2ZW50TGlzdGVuZXJQcm92aWRlcjxhbnksIGFueT5bXT4ge1xuICAgIHJldHVybiBQcm9taXNlLmFsbChcbiAgICAgIHRoaXMubGlzdGVuZXJQcm92aWRlcnMubWFwKHAgPT5cbiAgICAgICAgcCBpbnN0YW5jZW9mIFByb21pc2UgPyBwIDogUHJvbWlzZS5yZXNvbHZlKHApXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlIHN5bmMgaG9va3MgKGZpcmUtYW5kLWZvcmdldCkuXG4gICAqIEFsbCBwcm92aWRlcnMgd2l0aCB0aGUgZ2l2ZW4ga2V5IHdpbGwgYmUgZXhlY3V0ZWQuXG4gICAqIEV4ZWN1dGlvbiBpcyBub3QgYXdhaXRlZC5cbiAgICovXG4gIHB1YmxpYyBmaXJlPFQ+KGtleTogc3RyaW5nLCBkYXRhOiBUKTogdm9pZCB7XG4gICAgdGhpcy5yZXNvbHZlUHJvdmlkZXJzKCkudGhlbihwcm92aWRlcnMgPT4ge1xuICAgICAgcHJvdmlkZXJzXG4gICAgICAgIC5maWx0ZXIocCA9PiBwLmtleSA9PT0ga2V5KVxuICAgICAgICAuc29ydCgoYSwgYikgPT4gKGEucHJpb3JpdHkgPz8gMCkgLSAoYi5wcmlvcml0eSA/PyAwKSlcbiAgICAgICAgLmZvckVhY2gocCA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmluamVjdG9yLCAoKSA9PiBwLmV4ZWN1dGUoZGF0YSkpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgW0FYUEhvb2tTZXJ2aWNlXSBIb29rICcke2tleX0nIGZhaWxlZGAsIGVycik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW4gYXN5bmMgaG9va3Mgc2VxdWVudGlhbGx5ICh3YXRlcmZhbGwpLlxuICAgKiBUaGUgb3V0cHV0IG9mIGVhY2ggaG9vayBpcyBwYXNzZWQgYXMgaW5wdXQgdG8gdGhlIG5leHQgaG9vay5cbiAgICogUmV0dXJucyB0aGUgZmluYWwgbWVyZ2VkIGRhdGEgYWZ0ZXIgYWxsIGhvb2tzIGFyZSBleGVjdXRlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBydW5Bc3luYzxUPihrZXk6IHN0cmluZywgaW5pdGlhbERhdGE6IFQpOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCBwcm92aWRlcnMgPSAoYXdhaXQgdGhpcy5yZXNvbHZlUHJvdmlkZXJzKCkpXG4gICAgICAuZmlsdGVyKHAgPT4gcC5rZXkgPT09IGtleSlcbiAgICAgIC5zb3J0KChhLCBiKSA9PiAoYS5wcmlvcml0eSA/PyAwKSAtIChiLnByaW9yaXR5ID8/IDApKTtcblxuICAgIGxldCBkYXRhID0gaW5pdGlhbERhdGE7XG4gICAgZm9yIChjb25zdCBwIG9mIHByb3ZpZGVycykge1xuICAgICAgZGF0YSA9IGF3YWl0IFByb21pc2UucmVzb2x2ZShcbiAgICAgICAgcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsICgpID0+IHAuZXhlY3V0ZShkYXRhKSlcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iXX0=","//#region ---- Imports ----\nexport {};\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLW1hbmlmZXN0LnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9jb3JlL3NyYy9saWIvbW9kdWxlLW1hbmlmZXN0L21vZHVsZS1tYW5pZmVzdC50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7O0FBZ04vQixZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBJbXBvcnRzICAgLS0tLVxuXG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIEZlYXR1cmUgRGVmaW5pdGlvbiBUeXBlcyAgIC0tLS1cblxuLyoqXG4gKiBGZWF0dXJlIGRlZmluaXRpb24gaW4gbW9kdWxlIG1hbmlmZXN0LlxuICogRGVmaW5lcyBhdmFpbGFibGUgZmVhdHVyZXMgd2l0aCBkZWZhdWx0IHZhbHVlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBNb2R1bGVGZWF0dXJlRGVmaW5pdGlvbiB7XG4gICAgLyoqXG4gICAgICogRmVhdHVyZSB0aXRsZSAodHJhbnNsYXRpb24ga2V5IG9yIGxpdGVyYWwpXG4gICAgICovXG4gICAgdGl0bGU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEZlYXR1cmUgZGVzY3JpcHRpb24gKHRyYW5zbGF0aW9uIGtleSBvciBsaXRlcmFsKVxuICAgICAqL1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGZlYXR1cmUuXG4gICAgICogVXNlZCB3aGVuIHVzZXIgZG9lc24ndCBoYXZlIGV4cGxpY2l0IGZlYXR1cmUgdmFsdWUuXG4gICAgICovXG4gICAgZGVmYXVsdFZhbHVlOiBib29sZWFuIHwgbnVtYmVyIHwgc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsO1xuXG4gICAgLyoqXG4gICAgICogVHlwZSBoaW50IGZvciB2YWxpZGF0aW9uIGFuZCBVSSByZW5kZXJpbmdcbiAgICAgKi9cbiAgICB0eXBlPzogJ2Jvb2xlYW4nIHwgJ251bWJlcicgfCAnc3RyaW5nJyB8ICdhcnJheSc7XG5cbiAgICAvKipcbiAgICAgKiBXaWRnZXQgaW50ZXJmYWNlIGZvciBmZWF0dXJlIGNvbmZpZ3VyYXRpb24gVUkgKG9wdGlvbmFsKVxuICAgICAqL1xuICAgIGludGVyZmFjZT86IHtcbiAgICAgICAgdHlwZTogc3RyaW5nO1xuICAgICAgICBvcHRpb25zPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICB9O1xufVxuXG4vKipcbiAqIEZlYXR1cmUgZGVmaW5pdGlvbiBpbiBhcnJheSBmb3JtYXQgKHdpdGgga2V5KS5cbiAqIFVzZWQgd2hlbiBmZWF0dXJlcyBhcmUgZGVmaW5lZCBhcyBhbiBhcnJheSBpbiBtYW5pZmVzdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBNb2R1bGVGZWF0dXJlRGVmaW5pdGlvbldpdGhLZXkgZXh0ZW5kcyBBWFBNb2R1bGVGZWF0dXJlRGVmaW5pdGlvbiB7XG4gICAgLyoqXG4gICAgICogRnVsbCBmZWF0dXJlIGtleSAoTW9kdWxlTmFtZS5GZWF0dXJlS2V5IGZvcm1hdCkuXG4gICAgICogV2hlbiB1c2luZyBhcnJheSBmb3JtYXQsIHRoaXMgbXVzdCBiZSBwcm92aWRlZC5cbiAgICAgKi9cbiAgICBrZXk6IHN0cmluZztcbn1cblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgTWFuaWZlc3QgVHlwZXMgICAtLS0tXG5cbi8qKlxuICogTW9kdWxlIG1hbmlmZXN0IHN0cnVjdHVyZS5cbiAqIERlZmluZXMgbW9kdWxlIG1ldGFkYXRhLCBmZWF0dXJlcywgYW5kIHByb3ZpZGVyIHJlZmVyZW5jZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQTW9kdWxlTWFuaWZlc3Qge1xuICAgIC8qKlxuICAgICAqIE1vZHVsZSBuYW1lIChtdXN0IG1hdGNoIFJvb3RDb25maWcubW9kdWxlLm5hbWUpXG4gICAgICovXG4gICAgbmFtZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogTW9kdWxlIHZlcnNpb25cbiAgICAgKi9cbiAgICB2ZXJzaW9uOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBNb2R1bGUgdGl0bGUgKGNhbiByZWZlcmVuY2UgY29uc3QudHMgb3IgYmUgdHJhbnNsYXRpb24ga2V5KVxuICAgICAqL1xuICAgIHRpdGxlOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBNb2R1bGUgZGVzY3JpcHRpb24gKG9wdGlvbmFsKVxuICAgICAqL1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogTW9kdWxlIGljb24gKGNhbiByZWZlcmVuY2UgY29uc3QudHMpXG4gICAgICovXG4gICAgaWNvbj86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIGkxOG4gc2NvcGUgbmFtZSAoY2FuIHJlZmVyZW5jZSBjb25zdC50cylcbiAgICAgKi9cbiAgICBpMThuPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogUGVybWlzc2lvbiBwcm92aWRlciByZWZlcmVuY2UgKGxhenktbG9hZGVkKS5cbiAgICAgKi9cbiAgICBwZXJtaXNzaW9ucz86IHtcbiAgICAgICAgcHJvdmlkZXI6ICgpID0+IFByb21pc2U8YW55PjtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogTWVudSBwcm92aWRlciByZWZlcmVuY2UgKGxhenktbG9hZGVkKS5cbiAgICAgKi9cbiAgICBtZW51cz86IHtcbiAgICAgICAgcHJvdmlkZXI6ICgpID0+IFByb21pc2U8YW55PjtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogRW50aXR5IGRlZmluaXRpb24gcHJvdmlkZXIgcmVmZXJlbmNlIChsYXp5LWxvYWRlZCkuXG4gICAgICovXG4gICAgZW50aXRpZXM/OiB7XG4gICAgICAgIHByb3ZpZGVyOiAoKSA9PiBQcm9taXNlPGFueT47XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFNldHRpbmdzIHByb3ZpZGVyIHJlZmVyZW5jZSAobGF6eS1sb2FkZWQpLlxuICAgICAqL1xuICAgIHNldHRpbmdzPzoge1xuICAgICAgICBwcm92aWRlcjogKCkgPT4gUHJvbWlzZTxhbnk+O1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBTZWFyY2ggcHJvdmlkZXIgcmVmZXJlbmNlIChsYXp5LWxvYWRlZCkuXG4gICAgICovXG4gICAgc2VhcmNoPzoge1xuICAgICAgICBwcm92aWRlcjogKCkgPT4gUHJvbWlzZTxhbnk+O1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBGZWF0dXJlIGRlZmluaXRpb24gcHJvdmlkZXIgcmVmZXJlbmNlIChsYXp5LWxvYWRlZCkuXG4gICAgICogVXNlZCB0byBwcm92aWRlIGZlYXR1cmUgZGVmaW5pdGlvbnMgZm9yIHRoZSBtb2R1bGUuXG4gICAgICovXG4gICAgZmVhdHVyZXM/OiB7XG4gICAgICAgIHByb3ZpZGVyOiAoKSA9PiBQcm9taXNlPGFueT47XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIERhdGEgc291cmNlIHByb3ZpZGVyIHJlZmVyZW5jZSAobGF6eS1sb2FkZWQpLlxuICAgICAqL1xuICAgIGRhdGFzb3VyY2VzPzoge1xuICAgICAgICBwcm92aWRlcjogKCkgPT4gUHJvbWlzZTxhbnk+O1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDb21wb25lbnQgc2xvdHMgcHJvdmlkZXIgcmVmZXJlbmNlIChsYXp5LWxvYWRlZCkuXG4gICAgICogUmV0dXJucyBjb21wb25lbnQgc2xvdCBjb25maWd1cmF0aW9ucyBncm91cGVkIGJ5IHNsb3QgbmFtZS5cbiAgICAgKiBTbG90cyByZWdpc3RlcmVkIHZpYSBtYW5pZmVzdCBhcmUgbG9hZGVkIGFmdGVyIGFwcGxpY2F0aW9uIHNlbGVjdGlvbi5cbiAgICAgKiBNb2R1bGUtbGV2ZWwgcmVnaXN0cmF0aW9uIChBWFBDb21wb25lbnRTbG90TW9kdWxlLmZvckNoaWxkKSBzdGlsbCB3b3JrcyBmb3IgaW1tZWRpYXRlIGF2YWlsYWJpbGl0eS5cbiAgICAgKi9cbiAgICBjb21wb25lbnRTbG90cz86IHtcbiAgICAgICAgcHJvdmlkZXI6ICgpID0+IFByb21pc2U8YW55PjtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogTW9kdWxlIGRlcGVuZGVuY2llc1xuICAgICAqL1xuICAgIGRlcGVuZGVuY2llcz86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJlcXVpcmVkIG1vZHVsZSBuYW1lc1xuICAgICAgICAgKi9cbiAgICAgICAgbW9kdWxlcz86IHN0cmluZ1tdO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSZXF1aXJlZCBmZWF0dXJlIGtleXMgKGZ1bGwgZm9ybWF0OiBNb2R1bGVOYW1lLkZlYXR1cmVLZXkpXG4gICAgICAgICAqL1xuICAgICAgICBmZWF0dXJlcz86IHN0cmluZ1tdO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoaXMgbW9kdWxlIGlzIHJlcXVpcmVkIChhbHdheXMgZW5hYmxlZCwgY2Fubm90IGJlIGRpc2FibGVkKS5cbiAgICAgKiBSZXF1aXJlZCBtb2R1bGVzIGxpa2UgJ2F1dGgnIGFuZCAnY29tbW9uJyBhcmUgYWx3YXlzIGF2YWlsYWJsZS5cbiAgICAgKi9cbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBBZGRpdGlvbmFsIG1ldGFkYXRhXG4gICAgICovXG4gICAgbWV0YWRhdGE/OiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICB9O1xufVxuXG4vKipcbiAqIEZ1bGwgZmVhdHVyZSBuYW1lIHdpdGggbW9kdWxlIHByZWZpeC5cbiAqIEZvcm1hdDogTW9kdWxlTmFtZS5GZWF0dXJlS2V5XG4gKi9cbmV4cG9ydCB0eXBlIEFYUEZlYXR1cmVOYW1lID0gc3RyaW5nO1xuXG4vKipcbiAqIEZlYXR1cmUgZGVmaW5pdGlvbiB3aXRoIGZ1bGwgbmFtZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBGZWF0dXJlRGVmaW5pdGlvbiBleHRlbmRzIEFYUE1vZHVsZUZlYXR1cmVEZWZpbml0aW9uIHtcbiAgICAvKipcbiAgICAgKiBGdWxsIGZlYXR1cmUgbmFtZSAoTW9kdWxlTmFtZS5GZWF0dXJlS2V5KVxuICAgICAqL1xuICAgIG5hbWU6IEFYUEZlYXR1cmVOYW1lO1xuXG4gICAgLyoqXG4gICAgICogTW9kdWxlIG5hbWVcbiAgICAgKi9cbiAgICBtb2R1bGU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEZlYXR1cmUga2V5IChzaG9ydCBuYW1lKVxuICAgICAqL1xuICAgIGtleTogc3RyaW5nO1xufVxuXG4vLyNlbmRyZWdpb25cblxuIl19","//#region ---- Provider Interfaces ----\nimport { InjectionToken } from '@angular/core';\n/**\n * Injection token for edition service.\n * Modules should provide their implementation using this token.\n */\nexport const AXP_EDITION_SERVICE = new InjectionToken('AXP_EDITION_SERVICE', {\n providedIn: 'root',\n factory: () => {\n return null;\n },\n});\n/**\n * Injection token for module provider loader.\n * Implementation: @acorex/platform/auth\n */\nexport const AXP_MODULE_PROVIDER_LOADER = new InjectionToken('AXP_MODULE_PROVIDER_LOADER');\n/**\n * Injection token for session service.\n * Implementation: @acorex/platform/auth\n */\nexport const AXP_SESSION_SERVICE = new InjectionToken('AXP_SESSION_SERVICE');\n/**\n * Injection token for module manifest providers.\n * Modules register their manifest providers using this token.\n */\nexport const AXP_MODULE_MANIFEST_PROVIDER = new InjectionToken('AXP_MODULE_MANIFEST_PROVIDER');\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXItaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL21vZHVsZS1tYW5pZmVzdC9wcm92aWRlci1pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJDQUEyQztBQUUzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBNkUvQzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGNBQWMsQ0FDakQscUJBQXFCLEVBQ3JCO0lBQ0ksVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUNWLE9BQU8sSUFBVyxDQUFDO0lBQ3ZCLENBQUM7Q0FDSixDQUNKLENBQUM7QUFlRjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLGNBQWMsQ0FDeEQsNEJBQTRCLENBQy9CLENBQUM7QUFjRjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGNBQWMsQ0FDakQscUJBQXFCLENBQ3hCLENBQUM7QUFHRjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLGNBQWMsQ0FDMUQsOEJBQThCLENBQ2pDLENBQUM7QUFFRixZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBQcm92aWRlciBJbnRlcmZhY2VzICAgLS0tLVxuXG5pbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQTW9kdWxlTWFuaWZlc3QgfSBmcm9tICcuL21vZHVsZS1tYW5pZmVzdC50eXBlcyc7XG5cbi8qKlxuICogTWluaW1hbCBwcm92aWRlciBpbnRlcmZhY2VzIGZvciB0aGUgbW9kdWxlIHByb3ZpZGVyIHJlZ2lzdHJ5LlxuICogVGhlc2UgaW50ZXJmYWNlcyBhcmUgZGVmaW5lZCBpbiBjb3JlIHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llcy5cbiAqIFRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb25zIGluIHBsYXRmb3JtL2F1dGggYW5kIHBsYXRmb3JtL2NvbW1vbiBpbXBsZW1lbnQgdGhlc2UgaW50ZXJmYWNlcy5cbiAqL1xuXG4vKipcbiAqIFBlcm1pc3Npb24gZGVmaW5pdGlvbiBwcm92aWRlciBpbnRlcmZhY2UuXG4gKiBBY3R1YWwgaW1wbGVtZW50YXRpb246IEBhY29yZXgvcGxhdGZvcm0vYXV0aFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUElQZXJtaXNzaW9uRGVmaW5pdGlvblByb3ZpZGVyIHtcbiAgICBkZWZpbmUoY29udGV4dDogYW55KTogUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqXG4gKiBNZW51IHByb3ZpZGVyIGludGVyZmFjZS5cbiAqIEFjdHVhbCBpbXBsZW1lbnRhdGlvbjogQGFjb3JleC9wbGF0Zm9ybS9jb21tb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBJTWVudVByb3ZpZGVyIHtcbiAgICBwcm92aWRlKGNvbnRleHQ6IGFueSk6IFByb21pc2U8dm9pZD47XG59XG5cbi8qKlxuICogU2V0dGluZyBkZWZpbml0aW9uIHByb3ZpZGVyIGludGVyZmFjZS5cbiAqIEFjdHVhbCBpbXBsZW1lbnRhdGlvbjogQGFjb3JleC9wbGF0Zm9ybS9jb21tb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBJU2V0dGluZ0RlZmluaXRpb25Qcm92aWRlciB7XG4gICAgcHJvdmlkZShjb250ZXh0OiBhbnkpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG4vKipcbiAqIFNlYXJjaCBjb21tYW5kIHByb3ZpZGVyIGludGVyZmFjZS5cbiAqIEFjdHVhbCBpbXBsZW1lbnRhdGlvbjogQGFjb3JleC9wbGF0Zm9ybS9jb21tb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBJU2VhcmNoQ29tbWFuZFByb3ZpZGVyIHtcbiAgICBzZWFyY2godGV4dDogc3RyaW5nKTogUHJvbWlzZTxhbnlbXT47XG4gICAgY29tbWFuZHM/OiBhbnlbXTtcbn1cblxuLyoqXG4gKiBFbnRpdHkgZGVmaW5pdGlvbiBsb2FkZXIgaW50ZXJmYWNlLlxuICogQWN0dWFsIGltcGxlbWVudGF0aW9uOiBAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9lbnRpdHlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWElFbnRpdHlEZWZpbml0aW9uTG9hZGVyIHtcbiAgICBnZXQobW9kdWxlTmFtZTogc3RyaW5nLCBlbnRpdHlOYW1lOiBzdHJpbmcpOiBQcm9taXNlPGFueSB8IG51bGw+O1xufVxuXG4vKipcbiAqIEVkaXRpb24gc2VydmljZSBpbnRlcmZhY2UgZm9yIHF1ZXJ5aW5nIGVkaXRpb24gaW5mb3JtYXRpb24uXG4gKiBBY3R1YWwgaW1wbGVtZW50YXRpb246IEBhY29yZXgvbW9kdWxlcy9hcHBsaWNhdGlvbi1tYW5hZ2VtZW50XG4gKiBcbiAqIFRoaXMgaW50ZXJmYWNlIGlzIGRlZmluZWQgaW4gY29yZSB0byBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmNpZXMuXG4gKiBNb2R1bGVzIHByb3ZpZGUgaW1wbGVtZW50YXRpb25zIHRoYXQgZXh0ZW5kIEFYTUVudGl0eUNydWRTZXJ2aWNlSW1wbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBJRWRpdGlvblNlcnZpY2Uge1xuICAgIC8qKlxuICAgICAqIFF1ZXJ5IGVkaXRpb25zIHdpdGggcGFnaW5hdGlvbiBhbmQgZmlsdGVyaW5nLlxuICAgICAqIEBwYXJhbSByZXF1ZXN0IFF1ZXJ5IHJlcXVlc3Qgd2l0aCBza2lwLCB0YWtlLCBhbmQgb3B0aW9uYWwgZmlsdGVyc1xuICAgICAqIEByZXR1cm5zIFByb21pc2UgdGhhdCByZXNvbHZlcyB0byBwYWdlZCBsaXN0IG9mIGVkaXRpb25zXG4gICAgICovXG4gICAgcXVlcnkocmVxdWVzdDogeyBza2lwOiBudW1iZXI7IHRha2U6IG51bWJlcjtba2V5OiBzdHJpbmddOiBhbnkgfSk6IFByb21pc2U8e1xuICAgICAgICBpdGVtczogQXJyYXk8e1xuICAgICAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgICAgICAgICBtb2R1bGVzQW5kRmVhdHVyZXM/OiB7XG4gICAgICAgICAgICAgICAgbW9kdWxlczogc3RyaW5nW107XG4gICAgICAgICAgICAgICAgZmVhdHVyZXM6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9PjtcbiAgICAgICAgdG90YWw6IG51bWJlcjtcbiAgICB9Pjtcbn1cblxuLyoqXG4gKiBJbmplY3Rpb24gdG9rZW4gZm9yIGVkaXRpb24gc2VydmljZS5cbiAqIE1vZHVsZXMgc2hvdWxkIHByb3ZpZGUgdGhlaXIgaW1wbGVtZW50YXRpb24gdXNpbmcgdGhpcyB0b2tlbi5cbiAqL1xuZXhwb3J0IGNvbnN0IEFYUF9FRElUSU9OX1NFUlZJQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48QVhQSUVkaXRpb25TZXJ2aWNlPihcbiAgICAnQVhQX0VESVRJT05fU0VSVklDRScsXG4gICAge1xuICAgICAgICBwcm92aWRlZEluOiAncm9vdCcsXG4gICAgICAgIGZhY3Rvcnk6ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBudWxsIGFzIGFueTtcbiAgICAgICAgfSxcbiAgICB9XG4pO1xuXG4vKipcbiAqIE1vZHVsZSBwcm92aWRlciBsb2FkZXIgaW50ZXJmYWNlLlxuICogSW1wbGVtZW50YXRpb246IEBhY29yZXgvcGxhdGZvcm0vYXV0aFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUElNb2R1bGVQcm92aWRlckxvYWRlciB7XG4gICAgbG9hZFJlcXVpcmVkTW9kdWxlcygpOiBQcm9taXNlPHZvaWQ+O1xuICAgIGxvYWRQcm92aWRlcnMoY29udGV4dDogYW55KTogUHJvbWlzZTx2b2lkPjtcbiAgICBsb2FkUHJvdmlkZXJzSWZSZWFkeSgpOiBQcm9taXNlPHZvaWQ+O1xuICAgIGxvYWRQcm92aWRlcnNGb3JBcHBsaWNhdGlvbihhcHBsaWNhdGlvbjogYW55KTogUHJvbWlzZTx2b2lkPjtcbiAgICBjbGVhcigpOiBQcm9taXNlPHZvaWQ+O1xuICAgIGlzTW9kdWxlUmVnaXN0ZXJlZChtb2R1bGVOYW1lOiBzdHJpbmcpOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEluamVjdGlvbiB0b2tlbiBmb3IgbW9kdWxlIHByb3ZpZGVyIGxvYWRlci5cbiAqIEltcGxlbWVudGF0aW9uOiBAYWNvcmV4L3BsYXRmb3JtL2F1dGhcbiAqL1xuZXhwb3J0IGNvbnN0IEFYUF9NT0RVTEVfUFJPVklERVJfTE9BREVSID0gbmV3IEluamVjdGlvblRva2VuPEFYUElNb2R1bGVQcm92aWRlckxvYWRlcj4oXG4gICAgJ0FYUF9NT0RVTEVfUFJPVklERVJfTE9BREVSJ1xuKTtcblxuLyoqXG4gKiBTZXNzaW9uIHNlcnZpY2UgaW50ZXJmYWNlIGZvciBtb2R1bGUgcHJvdmlkZXIgb3BlcmF0aW9ucy5cbiAqIEltcGxlbWVudGF0aW9uOiBAYWNvcmV4L3BsYXRmb3JtL2F1dGhcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBJU2Vzc2lvblNlcnZpY2Uge1xuICAgIGlzTG9hZGluZyQ6IGFueTtcbiAgICBzdGF0dXMkOiBhbnk7XG4gICAgdGVuYW50OiBhbnkgfCBudWxsO1xuICAgIGFwcGxpY2F0aW9uOiBhbnkgfCBudWxsO1xuICAgIHVzZXI6IGFueSB8IG51bGw7XG59XG5cbi8qKlxuICogSW5qZWN0aW9uIHRva2VuIGZvciBzZXNzaW9uIHNlcnZpY2UuXG4gKiBJbXBsZW1lbnRhdGlvbjogQGFjb3JleC9wbGF0Zm9ybS9hdXRoXG4gKi9cbmV4cG9ydCBjb25zdCBBWFBfU0VTU0lPTl9TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuPEFYUElTZXNzaW9uU2VydmljZT4oXG4gICAgJ0FYUF9TRVNTSU9OX1NFUlZJQ0UnXG4pO1xuXG5cbi8qKlxuICogSW5qZWN0aW9uIHRva2VuIGZvciBtb2R1bGUgbWFuaWZlc3QgcHJvdmlkZXJzLlxuICogTW9kdWxlcyByZWdpc3RlciB0aGVpciBtYW5pZmVzdCBwcm92aWRlcnMgdXNpbmcgdGhpcyB0b2tlbi5cbiAqL1xuZXhwb3J0IGNvbnN0IEFYUF9NT0RVTEVfTUFOSUZFU1RfUFJPVklERVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48QVhQTW9kdWxlTWFuaWZlc3RbXT4oXG4gICAgJ0FYUF9NT0RVTEVfTUFOSUZFU1RfUFJPVklERVInXG4pO1xuXG4vLyNlbmRyZWdpb25cblxuXG5cblxuIl19","//#region ---- Imports ----\nimport { Injectable, inject, Injector } from '@angular/core';\nimport { AXP_MODULE_MANIFEST_PROVIDER } from './provider-interfaces';\nimport * as i0 from \"@angular/core\";\n//#endregion\n//#region ---- Registry Service ----\n/**\n * Registry service for module manifests.\n * Collects and manages all registered module manifests.\n */\nexport class AXPModuleManifestRegistry {\n constructor() {\n //#region ---- Fields ----\n this.manifests = new Map();\n this.featureDefinitions = new Map();\n this.injector = inject(Injector);\n this.initializationPromise = null;\n this.isInitialized = false;\n }\n //#endregion\n //#region ---- Initialization ----\n /**\n * Initialize registry by loading all manifest providers.\n * Should be called during app startup.\n * Safe to call multiple times - will only initialize once.\n */\n async initialize() {\n // If already initialized, return immediately\n if (this.isInitialized) {\n return;\n }\n // If initialization is in progress, wait for it\n if (this.initializationPromise) {\n return this.initializationPromise;\n }\n // Start initialization\n this.initializationPromise = this._doInitialize();\n await this.initializationPromise;\n }\n /**\n * Internal initialization logic.\n */\n async _doInitialize() {\n // Get manifests from injector (using useValue, they are provided directly)\n let manifests;\n try {\n const injectedManifests = this.injector.get(AXP_MODULE_MANIFEST_PROVIDER, []);\n manifests = Array.isArray(injectedManifests) ? injectedManifests : injectedManifests ? [injectedManifests] : [];\n }\n catch (error) {\n console.error('Failed to get manifest providers from injector:', error);\n manifests = [];\n }\n // Register all manifests directly\n const registerPromises = manifests.map(async (manifest) => {\n try {\n // Validate manifest\n if (!manifest) {\n console.error('Invalid manifest:', manifest);\n return;\n }\n await this.register(manifest);\n }\n catch (error) {\n console.error(`Failed to register manifest:`, error);\n }\n });\n await Promise.all(registerPromises);\n this.isInitialized = true;\n }\n //#endregion\n //#region ---- Manifest Management ----\n /**\n * Register a module manifest.\n */\n async register(manifest) {\n // Validate manifest\n if (!manifest.name) {\n throw new Error('Manifest must have a name');\n }\n if (!manifest.version) {\n throw new Error(`Manifest for module '${manifest.name}' must have a version`);\n }\n // Register manifest\n this.manifests.set(manifest.name, manifest);\n }\n /**\n * Get manifest for a module.\n */\n get(moduleName) {\n return this.manifests.get(moduleName);\n }\n /**\n * Get all registered manifests.\n */\n getAll() {\n return Array.from(this.manifests.values());\n }\n /**\n * Check if a module manifest is registered.\n */\n has(moduleName) {\n return this.manifests.has(moduleName);\n }\n //#endregion\n //#region ---- Feature Definition Management ----\n /**\n * Get all feature definitions from all manifests.\n */\n getAllFeatureDefinitions() {\n return Array.from(this.featureDefinitions.values());\n }\n /**\n * Get feature definition by full name.\n */\n getFeatureDefinition(featureName) {\n return this.featureDefinitions.get(featureName);\n }\n /**\n * Check if a feature is defined in any manifest.\n */\n isFeatureDefined(featureName) {\n return this.featureDefinitions.has(featureName);\n }\n /**\n * Get default value for a feature.\n * Returns undefined if feature is not defined.\n */\n getFeatureDefault(featureName) {\n const definition = this.getFeatureDefinition(featureName);\n return definition?.defaultValue;\n }\n /**\n * Get all feature definitions for a specific module.\n */\n getModuleFeatures(moduleName) {\n return Array.from(this.featureDefinitions.values()).filter((def) => def.module === moduleName);\n }\n /**\n * Register a feature definition dynamically (e.g., from feature definition provider).\n * Used to add features that are defined at runtime via featuresProvider.\n */\n registerFeatureDefinition(definition) {\n this.featureDefinitions.set(definition.name, definition);\n }\n //#endregion\n //#region ---- Dependency Checking ----\n /**\n * Check if module dependencies are satisfied.\n * Returns array of missing dependencies.\n */\n checkDependencies(moduleName) {\n const manifest = this.get(moduleName);\n if (!manifest?.dependencies) {\n return { missingModules: [], missingFeatures: [] };\n }\n const missingModules = [];\n const missingFeatures = [];\n // Check module dependencies\n if (manifest.dependencies.modules) {\n for (const depModule of manifest.dependencies.modules) {\n if (!this.has(depModule)) {\n missingModules.push(depModule);\n }\n }\n }\n // Check feature dependencies\n if (manifest.dependencies.features) {\n for (const featureName of manifest.dependencies.features) {\n if (!this.isFeatureDefined(featureName)) {\n missingFeatures.push(featureName);\n }\n }\n }\n return { missingModules, missingFeatures };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPModuleManifestRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPModuleManifestRegistry, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPModuleManifestRegistry, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLW1hbmlmZXN0LnJlZ2lzdHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9jb3JlL3NyYy9saWIvbW9kdWxlLW1hbmlmZXN0L21vZHVsZS1tYW5pZmVzdC5yZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFFL0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQUVyRSxZQUFZO0FBRVosd0NBQXdDO0FBRXhDOzs7R0FHRztBQUVILE1BQU0sT0FBTyx5QkFBeUI7SUFEdEM7UUFFSSw4QkFBOEI7UUFFYixjQUFTLEdBQUcsSUFBSSxHQUFHLEVBQTZCLENBQUM7UUFDakQsdUJBQWtCLEdBQUcsSUFBSSxHQUFHLEVBQXdDLENBQUM7UUFDckUsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyQywwQkFBcUIsR0FBeUIsSUFBSSxDQUFDO1FBQ25ELGtCQUFhLEdBQUcsS0FBSyxDQUFDO0tBZ01qQztJQTlMRyxZQUFZO0lBRVosc0NBQXNDO0lBRXRDOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsVUFBVTtRQUNaLDZDQUE2QztRQUM3QyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixPQUFPO1FBQ1gsQ0FBQztRQUVELGdEQUFnRDtRQUNoRCxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQzdCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDO1FBQ3RDLENBQUM7UUFFRCx1QkFBdUI7UUFDdkIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNsRCxNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztJQUNyQyxDQUFDO0lB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QUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2hDLEtBQUssTUFBTSxTQUFTLElBQUksUUFBUSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztvQkFDdkIsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDbkMsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDO1FBRUQsNkJBQTZCO1FBQzdCLElBQUksUUFBUSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNqQyxLQUFLLE1BQU0sV0FBVyxJQUFJLFFBQVEsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztvQkFDdEMsZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDdEMsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsQ0FBQztJQUMvQyxDQUFDOytHQXBNUSx5QkFBeUI7bUhBQXpCLHlCQUF5QixjQURaLE1BQU07OzRGQUNuQix5QkFBeUI7a0JBRHJDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBJbXBvcnRzICAgLS0tLVxuXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBNb2R1bGVNYW5pZmVzdCwgQVhQRmVhdHVyZURlZmluaXRpb24sIEFYUEZlYXR1cmVOYW1lIH0gZnJvbSAnLi9tb2R1bGUtbWFuaWZlc3QudHlwZXMnO1xuaW1wb3J0IHsgQVhQX01PRFVMRV9NQU5JRkVTVF9QUk9WSURFUiB9IGZyb20gJy4vcHJvdmlkZXItaW50ZXJmYWNlcyc7XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIFJlZ2lzdHJ5IFNlcnZpY2UgICAtLS0tXG5cbi8qKlxuICogUmVnaXN0cnkgc2VydmljZSBmb3IgbW9kdWxlIG1hbmlmZXN0cy5cbiAqIENvbGxlY3RzIGFuZCBtYW5hZ2VzIGFsbCByZWdpc3RlcmVkIG1vZHVsZSBtYW5pZmVzdHMuXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQVhQTW9kdWxlTWFuaWZlc3RSZWdpc3RyeSB7XG4gICAgLy8jcmVnaW9uIC0tLS0gICBGaWVsZHMgICAtLS0tXG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IG1hbmlmZXN0cyA9IG5ldyBNYXA8c3RyaW5nLCBBWFBNb2R1bGVNYW5pZmVzdD4oKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZlYXR1cmVEZWZpbml0aW9ucyA9IG5ldyBNYXA8QVhQRmVhdHVyZU5hbWUsIEFYUEZlYXR1cmVEZWZpbml0aW9uPigpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICAgIHByaXZhdGUgaW5pdGlhbGl6YXRpb25Qcm9taXNlOiBQcm9taXNlPHZvaWQ+IHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBpc0luaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgSW5pdGlhbGl6YXRpb24gICAtLS0tXG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplIHJlZ2lzdHJ5IGJ5IGxvYWRpbmcgYWxsIG1hbmlmZXN0IHByb3ZpZGVycy5cbiAgICAgKiBTaG91bGQgYmUgY2FsbGVkIGR1cmluZyBhcHAgc3RhcnR1cC5cbiAgICAgKiBTYWZlIHRvIGNhbGwgbXVsdGlwbGUgdGltZXMgLSB3aWxsIG9ubHkgaW5pdGlhbGl6ZSBvbmNlLlxuICAgICAqL1xuICAgIGFzeW5jIGluaXRpYWxpemUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIC8vIElmIGFscmVhZHkgaW5pdGlhbGl6ZWQsIHJldHVybiBpbW1lZGlhdGVseVxuICAgICAgICBpZiAodGhpcy5pc0luaXRpYWxpemVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiBpbml0aWFsaXphdGlvbiBpcyBpbiBwcm9ncmVzcywgd2FpdCBmb3IgaXRcbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6YXRpb25Qcm9taXNlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pbml0aWFsaXphdGlvblByb21pc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTdGFydCBpbml0aWFsaXphdGlvblxuICAgICAgICB0aGlzLmluaXRpYWxpemF0aW9uUHJvbWlzZSA9IHRoaXMuX2RvSW5pdGlhbGl6ZSgpO1xuICAgICAgICBhd2FpdCB0aGlzLmluaXRpYWxpemF0aW9uUHJvbWlzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbnRlcm5hbCBpbml0aWFsaXphdGlvbiBsb2dpYy5cbiAgICAgKi9cbiAgICBwcml2YXRlIGFzeW5jIF9kb0luaXRpYWxpemUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIC8vIEdldCBtYW5pZmVzdHMgZnJvbSBpbmplY3RvciAodXNpbmcgdXNlVmFsdWUsIHRoZXkgYXJlIHByb3ZpZGVkIGRpcmVjdGx5KVxuICAgICAgICBsZXQgbWFuaWZlc3RzOiBBWFBNb2R1bGVNYW5pZmVzdFtdO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgaW5qZWN0ZWRNYW5pZmVzdHMgPSB0aGlzLmluamVjdG9yLmdldChBWFBfTU9EVUxFX01BTklGRVNUX1BST1ZJREVSLCBbXSk7XG4gICAgICAgICAgICBtYW5pZmVzdHMgPSBBcnJheS5pc0FycmF5KGluamVjdGVkTWFuaWZlc3RzKSA/IGluamVjdGVkTWFuaWZlc3RzIDogaW5qZWN0ZWRNYW5pZmVzdHMgPyBbaW5qZWN0ZWRNYW5pZmVzdHNdIDogW107XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gZ2V0IG1hbmlmZXN0IHByb3ZpZGVycyBmcm9tIGluamVjdG9yOicsIGVycm9yKTtcbiAgICAgICAgICAgIG1hbmlmZXN0cyA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmVnaXN0ZXIgYWxsIG1hbmlmZXN0cyBkaXJlY3RseVxuICAgICAgICBjb25zdCByZWdpc3RlclByb21pc2VzID0gbWFuaWZlc3RzLm1hcChhc3luYyAobWFuaWZlc3Q6IEFYUE1vZHVsZU1hbmlmZXN0KSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIC8vIFZhbGlkYXRlIG1hbmlmZXN0XG4gICAgICAgICAgICAgICAgaWYgKCFtYW5pZmVzdCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdJbnZhbGlkIG1hbmlmZXN0OicsIG1hbmlmZXN0KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnJlZ2lzdGVyKG1hbmlmZXN0KTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIHJlZ2lzdGVyIG1hbmlmZXN0OmAsIGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwocmVnaXN0ZXJQcm9taXNlcyk7XG4gICAgICAgIHRoaXMuaXNJbml0aWFsaXplZCA9IHRydWU7XG4gICAgfVxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIE1hbmlmZXN0IE1hbmFnZW1lbnQgICAtLS0tXG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RlciBhIG1vZHVsZSBtYW5pZmVzdC5cbiAgICAgKi9cbiAgICBhc3luYyByZWdpc3RlcihtYW5pZmVzdDogQVhQTW9kdWxlTWFuaWZlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgLy8gVmFsaWRhdGUgbWFuaWZlc3RcbiAgICAgICAgaWYgKCFtYW5pZmVzdC5uYW1lKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01hbmlmZXN0IG11c3QgaGF2ZSBhIG5hbWUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghbWFuaWZlc3QudmVyc2lvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNYW5pZmVzdCBmb3IgbW9kdWxlICcke21hbmlmZXN0Lm5hbWV9JyBtdXN0IGhhdmUgYSB2ZXJzaW9uYCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZWdpc3RlciBtYW5pZmVzdFxuICAgICAgICB0aGlzLm1hbmlmZXN0cy5zZXQobWFuaWZlc3QubmFtZSwgbWFuaWZlc3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBtYW5pZmVzdCBmb3IgYSBtb2R1bGUuXG4gICAgICovXG4gICAgZ2V0KG1vZHVsZU5hbWU6IHN0cmluZyk6IEFYUE1vZHVsZU1hbmlmZXN0IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFuaWZlc3RzLmdldChtb2R1bGVOYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgYWxsIHJlZ2lzdGVyZWQgbWFuaWZlc3RzLlxuICAgICAqL1xuICAgIGdldEFsbCgpOiBBWFBNb2R1bGVNYW5pZmVzdFtdIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5tYW5pZmVzdHMudmFsdWVzKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIGEgbW9kdWxlIG1hbmlmZXN0IGlzIHJlZ2lzdGVyZWQuXG4gICAgICovXG4gICAgaGFzKG1vZHVsZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYW5pZmVzdHMuaGFzKG1vZHVsZU5hbWUpO1xuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBGZWF0dXJlIERlZmluaXRpb24gTWFuYWdlbWVudCAgIC0tLS1cblxuICAgIC8qKlxuICAgICAqIEdldCBhbGwgZmVhdHVyZSBkZWZpbml0aW9ucyBmcm9tIGFsbCBtYW5pZmVzdHMuXG4gICAgICovXG4gICAgZ2V0QWxsRmVhdHVyZURlZmluaXRpb25zKCk6IEFYUEZlYXR1cmVEZWZpbml0aW9uW10ge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmZlYXR1cmVEZWZpbml0aW9ucy52YWx1ZXMoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGZlYXR1cmUgZGVmaW5pdGlvbiBieSBmdWxsIG5hbWUuXG4gICAgICovXG4gICAgZ2V0RmVhdHVyZURlZmluaXRpb24oZmVhdHVyZU5hbWU6IEFYUEZlYXR1cmVOYW1lKTogQVhQRmVhdHVyZURlZmluaXRpb24gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5mZWF0dXJlRGVmaW5pdGlvbnMuZ2V0KGZlYXR1cmVOYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBhIGZlYXR1cmUgaXMgZGVmaW5lZCBpbiBhbnkgbWFuaWZlc3QuXG4gICAgICovXG4gICAgaXNGZWF0dXJlRGVmaW5lZChmZWF0dXJlTmFtZTogQVhQRmVhdHVyZU5hbWUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmVhdHVyZURlZmluaXRpb25zLmhhcyhmZWF0dXJlTmFtZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGRlZmF1bHQgdmFsdWUgZm9yIGEgZmVhdHVyZS5cbiAgICAgKiBSZXR1cm5zIHVuZGVmaW5lZCBpZiBmZWF0dXJlIGlzIG5vdCBkZWZpbmVkLlxuICAgICAqL1xuICAgIGdldEZlYXR1cmVEZWZhdWx0KGZlYXR1cmVOYW1lOiBBWFBGZWF0dXJlTmFtZSk6IGFueSB7XG4gICAgICAgIGNvbnN0IGRlZmluaXRpb24gPSB0aGlzLmdldEZlYXR1cmVEZWZpbml0aW9uKGZlYXR1cmVOYW1lKTtcbiAgICAgICAgcmV0dXJuIGRlZmluaXRpb24/LmRlZmF1bHRWYWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgYWxsIGZlYXR1cmUgZGVmaW5pdGlvbnMgZm9yIGEgc3BlY2lmaWMgbW9kdWxlLlxuICAgICAqL1xuICAgIGdldE1vZHVsZUZlYXR1cmVzKG1vZHVsZU5hbWU6IHN0cmluZyk6IEFYUEZlYXR1cmVEZWZpbml0aW9uW10ge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmZlYXR1cmVEZWZpbml0aW9ucy52YWx1ZXMoKSkuZmlsdGVyKChkZWYpID0+IGRlZi5tb2R1bGUgPT09IG1vZHVsZU5hbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVyIGEgZmVhdHVyZSBkZWZpbml0aW9uIGR5bmFtaWNhbGx5IChlLmcuLCBmcm9tIGZlYXR1cmUgZGVmaW5pdGlvbiBwcm92aWRlcikuXG4gICAgICogVXNlZCB0byBhZGQgZmVhdHVyZXMgdGhhdCBhcmUgZGVmaW5lZCBhdCBydW50aW1lIHZpYSBmZWF0dXJlc1Byb3ZpZGVyLlxuICAgICAqL1xuICAgIHJlZ2lzdGVyRmVhdHVyZURlZmluaXRpb24oZGVmaW5pdGlvbjogQVhQRmVhdHVyZURlZmluaXRpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mZWF0dXJlRGVmaW5pdGlvbnMuc2V0KGRlZmluaXRpb24ubmFtZSwgZGVmaW5pdGlvbik7XG4gICAgfVxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIERlcGVuZGVuY3kgQ2hlY2tpbmcgICAtLS0tXG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBtb2R1bGUgZGVwZW5kZW5jaWVzIGFyZSBzYXRpc2ZpZWQuXG4gICAgICogUmV0dXJucyBhcnJheSBvZiBtaXNzaW5nIGRlcGVuZGVuY2llcy5cbiAgICAgKi9cbiAgICBjaGVja0RlcGVuZGVuY2llcyhtb2R1bGVOYW1lOiBzdHJpbmcpOiB7XG4gICAgICAgIG1pc3NpbmdNb2R1bGVzOiBzdHJpbmdbXTtcbiAgICAgICAgbWlzc2luZ0ZlYXR1cmVzOiBzdHJpbmdbXTtcbiAgICB9IHtcbiAgICAgICAgY29uc3QgbWFuaWZlc3QgPSB0aGlzLmdldChtb2R1bGVOYW1lKTtcbiAgICAgICAgaWYgKCFtYW5pZmVzdD8uZGVwZW5kZW5jaWVzKSB7XG4gICAgICAgICAgICByZXR1cm4geyBtaXNzaW5nTW9kdWxlczogW10sIG1pc3NpbmdGZWF0dXJlczogW10gfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1pc3NpbmdNb2R1bGVzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBjb25zdCBtaXNzaW5nRmVhdHVyZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICAgICAgLy8gQ2hlY2sgbW9kdWxlIGRlcGVuZGVuY2llc1xuICAgICAgICBpZiAobWFuaWZlc3QuZGVwZW5kZW5jaWVzLm1vZHVsZXMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZGVwTW9kdWxlIG9mIG1hbmlmZXN0LmRlcGVuZGVuY2llcy5tb2R1bGVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmhhcyhkZXBNb2R1bGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIG1pc3NpbmdNb2R1bGVzLnB1c2goZGVwTW9kdWxlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBmZWF0dXJlIGRlcGVuZGVuY2llc1xuICAgICAgICBpZiAobWFuaWZlc3QuZGVwZW5kZW5jaWVzLmZlYXR1cmVzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZlYXR1cmVOYW1lIG9mIG1hbmlmZXN0LmRlcGVuZGVuY2llcy5mZWF0dXJlcykge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc0ZlYXR1cmVEZWZpbmVkKGZlYXR1cmVOYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICBtaXNzaW5nRmVhdHVyZXMucHVzaChmZWF0dXJlTmFtZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsgbWlzc2luZ01vZHVsZXMsIG1pc3NpbmdGZWF0dXJlcyB9O1xuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxufVxuXG4vLyNlbmRyZWdpb25cblxuIl19","import { Injectable, inject, provideAppInitializer } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXPAppStartUpService {\n constructor() {\n this.tasks = [];\n }\n registerTask(task) {\n this.tasks.push(task);\n }\n async runAllTasks() {\n for (const task of this.tasks.sort((a, b) => a.priority - b.priority)) {\n this.updateStatus(task.statusText);\n await task.run();\n }\n }\n updateStatus(status) {\n const loadingText = document.querySelector('#loadingText');\n if (loadingText) {\n loadingText.innerHTML = status;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPAppStartUpService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPAppStartUpService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPAppStartUpService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\nfunction initAppFactory(appInitService) {\n return () => appInitService.runAllTasks();\n}\nexport const AXPAppStartUpProvider = provideAppInitializer(() => {\n const initializerFn = initAppFactory(inject(AXPAppStartUpService));\n return initializerFn();\n});\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXN0YXJ0dXAuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL3N0YXJ0dXAvYXBwLXN0YXJ0dXAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFRMUUsTUFBTSxPQUFPLG9CQUFvQjtJQUhqQztRQUlVLFVBQUssR0FBcUIsRUFBRSxDQUFDO0tBbUJ0QztJQWpCQyxZQUFZLENBQUMsSUFBb0I7UUFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXO1FBQ2YsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDdEUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbkMsTUFBTSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFFTyxZQUFZLENBQUMsTUFBYztRQUNqQyxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzNELElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsV0FBVyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7UUFDakMsQ0FBQztJQUNILENBQUM7K0dBbkJVLG9CQUFvQjttSEFBcEIsb0JBQW9CLGNBRm5CLE1BQU07OzRGQUVQLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBdUJELFNBQVMsY0FBYyxDQUFDLGNBQW9DO0lBQzFELE9BQU8sR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQzVDLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUU7SUFDOUQsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7SUFDbkUsT0FBTyxhQUFhLEVBQUUsQ0FBQztBQUN6QixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCwgcHJvdmlkZUFwcEluaXRpYWxpemVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBTdGFydFVwVGFzayB9IGZyb20gJy4vYXBwLXN0YXJ0dXAudHlwZXMnO1xuXG5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFYUEFwcFN0YXJ0VXBTZXJ2aWNlIHtcbiAgcHJpdmF0ZSB0YXNrczogQVhQU3RhcnRVcFRhc2tbXSA9IFtdO1xuXG4gIHJlZ2lzdGVyVGFzayh0YXNrOiBBWFBTdGFydFVwVGFzaykge1xuICAgIHRoaXMudGFza3MucHVzaCh0YXNrKTtcbiAgfVxuXG4gIGFzeW5jIHJ1bkFsbFRhc2tzKCkge1xuICAgIGZvciAoY29uc3QgdGFzayBvZiB0aGlzLnRhc2tzLnNvcnQoKGEsIGIpID0+IGEucHJpb3JpdHkgLSBiLnByaW9yaXR5KSkge1xuICAgICAgdGhpcy51cGRhdGVTdGF0dXModGFzay5zdGF0dXNUZXh0KTtcbiAgICAgIGF3YWl0IHRhc2sucnVuKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTdGF0dXMoc3RhdHVzOiBzdHJpbmcpIHtcbiAgICBjb25zdCBsb2FkaW5nVGV4dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNsb2FkaW5nVGV4dCcpO1xuICAgIGlmIChsb2FkaW5nVGV4dCkge1xuICAgICAgbG9hZGluZ1RleHQuaW5uZXJIVE1MID0gc3RhdHVzO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0QXBwRmFjdG9yeShhcHBJbml0U2VydmljZTogQVhQQXBwU3RhcnRVcFNlcnZpY2UpIHtcbiAgcmV0dXJuICgpID0+IGFwcEluaXRTZXJ2aWNlLnJ1bkFsbFRhc2tzKCk7XG59XG5cbmV4cG9ydCBjb25zdCBBWFBBcHBTdGFydFVwUHJvdmlkZXIgPSBwcm92aWRlQXBwSW5pdGlhbGl6ZXIoKCkgPT4ge1xuICBjb25zdCBpbml0aWFsaXplckZuID0gaW5pdEFwcEZhY3RvcnkoaW5qZWN0KEFYUEFwcFN0YXJ0VXBTZXJ2aWNlKSk7XG4gIHJldHVybiBpbml0aWFsaXplckZuKCk7XG59KTtcbiJdfQ==","//#region ---- Imports ----\nimport { Injector, NgModule } from '@angular/core';\nimport { AXPAppStartUpService } from '../startup/app-startup.service';\nimport { AXPModuleManifestRegistry } from './module-manifest.registry';\nimport { AXP_MODULE_PROVIDER_LOADER } from './provider-interfaces';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../startup/app-startup.service\";\n//#endregion\n//#region ---- Module ----\n/**\n * Module for managing module manifests and providers initialization.\n * Handles the registration of manifest and module provider startup tasks.\n */\nexport class AXPModuleManifestModule {\n /**\n * @ignore\n * Initializes module manifest and provider tasks on module construction.\n */\n constructor(appInitService, injector) {\n const manifestRegistry = injector.get(AXPModuleManifestRegistry);\n const moduleProviderLoader = injector.get(AXP_MODULE_PROVIDER_LOADER);\n // Register manifest initialization task\n appInitService.registerTask({\n name: 'ModuleManifests',\n statusText: 'Loading module manifests...',\n priority: 1, // Load early, before features/permissions\n run: async () => {\n await manifestRegistry.initialize();\n },\n });\n // Register module provider tasks\n appInitService.registerTask({\n name: 'RequiredModuleProviders',\n statusText: 'Loading required modules...',\n priority: 1.5,\n run: async () => {\n await moduleProviderLoader.loadRequiredModules();\n },\n });\n appInitService.registerTask({\n name: 'ModuleProviders',\n statusText: 'Loading module providers...',\n priority: 3,\n run: async () => {\n await moduleProviderLoader.loadProvidersIfReady();\n },\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPModuleManifestModule, deps: [{ token: i1.AXPAppStartUpService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPModuleManifestModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPModuleManifestModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPModuleManifestModule, decorators: [{\n type: NgModule,\n args: [{\n providers: [],\n }]\n }], ctorParameters: () => [{ type: i1.AXPAppStartUpService }, { type: i0.Injector }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLW1hbmlmZXN0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL21vZHVsZS1tYW5pZmVzdC9tb2R1bGUtbWFuaWZlc3QubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUUvQixPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBRW5FLFlBQVk7QUFFWiw4QkFBOEI7QUFFOUI7OztHQUdHO0FBSUgsTUFBTSxPQUFPLHVCQUF1QjtJQUNsQzs7O09BR0c7SUFDSCxZQUNFLGNBQW9DLEVBQ3BDLFFBQWtCO1FBRWxCLE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sb0JBQW9CLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBRXRFLHdDQUF3QztRQUN4QyxjQUFjLENBQUMsWUFBWSxDQUN6QjtZQUNFLElBQUksRUFBRSxpQkFBaUI7WUFDdkIsVUFBVSxFQUFFLDZCQUE2QjtZQUN6QyxRQUFRLEVBQUUsQ0FBQyxFQUFFLDBDQUEwQztZQUN2RCxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUU7Z0JBQ2QsTUFBTSxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN0QyxDQUFDO1NBQ0YsQ0FDRixDQUFDO1FBRUYsaUNBQWlDO1FBQ2pDLGNBQWMsQ0FBQyxZQUFZLENBQUM7WUFDMUIsSUFBSSxFQUFFLHlCQUF5QjtZQUMvQixVQUFVLEVBQUUsNkJBQTZCO1lBQ3pDLFFBQVEsRUFBRSxHQUFHO1lBQ2IsR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFO2dCQUNkLE1BQU0sb0JBQW9CLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUNuRCxDQUFDO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsY0FBYyxDQUFDLFlBQVksQ0FBQztZQUMxQixJQUFJLEVBQUUsaUJBQWlCO1lBQ3ZCLFVBQVUsRUFBRSw2QkFBNkI7WUFDekMsUUFBUSxFQUFFLENBQUM7WUFDWCxHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUU7Z0JBQ2QsTUFBTSxvQkFBb0IsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQ3BELENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOytHQTFDVSx1QkFBdUI7Z0hBQXZCLHVCQUF1QjtnSEFBdkIsdUJBQXVCOzs0RkFBdkIsdUJBQXVCO2tCQUhuQyxRQUFRO21CQUFDO29CQUNSLFNBQVMsRUFBRSxFQUFFO2lCQUNkIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBJbXBvcnRzICAgLS0tLVxuXG5pbXBvcnQgeyBJbmplY3RvciwgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUEFwcFN0YXJ0VXBTZXJ2aWNlIH0gZnJvbSAnLi4vc3RhcnR1cC9hcHAtc3RhcnR1cC5zZXJ2aWNlJztcbmltcG9ydCB7IEFYUE1vZHVsZU1hbmlmZXN0UmVnaXN0cnkgfSBmcm9tICcuL21vZHVsZS1tYW5pZmVzdC5yZWdpc3RyeSc7XG5pbXBvcnQgeyBBWFBfTU9EVUxFX1BST1ZJREVSX0xPQURFUiB9IGZyb20gJy4vcHJvdmlkZXItaW50ZXJmYWNlcyc7XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIE1vZHVsZSAgIC0tLS1cblxuLyoqXG4gKiBNb2R1bGUgZm9yIG1hbmFnaW5nIG1vZHVsZSBtYW5pZmVzdHMgYW5kIHByb3ZpZGVycyBpbml0aWFsaXphdGlvbi5cbiAqIEhhbmRsZXMgdGhlIHJlZ2lzdHJhdGlvbiBvZiBtYW5pZmVzdCBhbmQgbW9kdWxlIHByb3ZpZGVyIHN0YXJ0dXAgdGFza3MuXG4gKi9cbkBOZ01vZHVsZSh7XG4gIHByb3ZpZGVyczogW10sXG59KVxuZXhwb3J0IGNsYXNzIEFYUE1vZHVsZU1hbmlmZXN0TW9kdWxlIHtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICogSW5pdGlhbGl6ZXMgbW9kdWxlIG1hbmlmZXN0IGFuZCBwcm92aWRlciB0YXNrcyBvbiBtb2R1bGUgY29uc3RydWN0aW9uLlxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgYXBwSW5pdFNlcnZpY2U6IEFYUEFwcFN0YXJ0VXBTZXJ2aWNlLFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgKSB7XG4gICAgY29uc3QgbWFuaWZlc3RSZWdpc3RyeSA9IGluamVjdG9yLmdldChBWFBNb2R1bGVNYW5pZmVzdFJlZ2lzdHJ5KTtcbiAgICBjb25zdCBtb2R1bGVQcm92aWRlckxvYWRlciA9IGluamVjdG9yLmdldChBWFBfTU9EVUxFX1BST1ZJREVSX0xPQURFUik7XG4gICAgXG4gICAgLy8gUmVnaXN0ZXIgbWFuaWZlc3QgaW5pdGlhbGl6YXRpb24gdGFza1xuICAgIGFwcEluaXRTZXJ2aWNlLnJlZ2lzdGVyVGFzayhcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ01vZHVsZU1hbmlmZXN0cycsXG4gICAgICAgIHN0YXR1c1RleHQ6ICdMb2FkaW5nIG1vZHVsZSBtYW5pZmVzdHMuLi4nLFxuICAgICAgICBwcmlvcml0eTogMSwgLy8gTG9hZCBlYXJseSwgYmVmb3JlIGZlYXR1cmVzL3Blcm1pc3Npb25zXG4gICAgICAgIHJ1bjogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGF3YWl0IG1hbmlmZXN0UmVnaXN0cnkuaW5pdGlhbGl6ZSgpO1xuICAgICAgICB9LFxuICAgICAgfVxuICAgICk7XG5cbiAgICAvLyBSZWdpc3RlciBtb2R1bGUgcHJvdmlkZXIgdGFza3NcbiAgICBhcHBJbml0U2VydmljZS5yZWdpc3RlclRhc2soe1xuICAgICAgbmFtZTogJ1JlcXVpcmVkTW9kdWxlUHJvdmlkZXJzJyxcbiAgICAgIHN0YXR1c1RleHQ6ICdMb2FkaW5nIHJlcXVpcmVkIG1vZHVsZXMuLi4nLFxuICAgICAgcHJpb3JpdHk6IDEuNSxcbiAgICAgIHJ1bjogYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCBtb2R1bGVQcm92aWRlckxvYWRlci5sb2FkUmVxdWlyZWRNb2R1bGVzKCk7XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgYXBwSW5pdFNlcnZpY2UucmVnaXN0ZXJUYXNrKHtcbiAgICAgIG5hbWU6ICdNb2R1bGVQcm92aWRlcnMnLFxuICAgICAgc3RhdHVzVGV4dDogJ0xvYWRpbmcgbW9kdWxlIHByb3ZpZGVycy4uLicsXG4gICAgICBwcmlvcml0eTogMyxcbiAgICAgIHJ1bjogYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCBtb2R1bGVQcm92aWRlckxvYWRlci5sb2FkUHJvdmlkZXJzSWZSZWFkeSgpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuXG4vLyNlbmRyZWdpb25cblxuIl19","//#region ---- Imports ----\nimport { InjectionToken } from '@angular/core';\n//#endregion\n//#region ---- Feature Definition Provider Interface ----\n/**\n * Context for feature definition providers.\n * Allows providers to add additional feature definitions dynamically.\n */\nexport class AXPFeatureDefinitionProviderContext {\n constructor() {\n this.features = new Map();\n }\n /**\n * Add a feature definition.\n * @param key Full feature key (ModuleName:FeatureKey format with colon separator)\n * @param definition Feature definition\n */\n addFeature(key, definition) {\n this.features.set(key, definition);\n }\n /**\n * Get all feature definitions.\n */\n getFeatures() {\n return this.features;\n }\n}\n/**\n * Injection token for feature definition providers.\n */\nexport const AXP_FEATURE_DEFINITION_PROVIDER = new InjectionToken('AXP_FEATURE_DEFINITION_PROVIDER', {\n providedIn: 'root',\n factory: () => [],\n});\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1kZWZpbml0aW9uLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9jb3JlL3NyYy9saWIvbW9kdWxlLW1hbmlmZXN0L2ZlYXR1cmUtZGVmaW5pdGlvbi5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFFL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvQyxZQUFZO0FBRVosNkRBQTZEO0FBRTdEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxtQ0FBbUM7SUFBaEQ7UUFDcUIsYUFBUSxHQUE0QyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBaUJuRixDQUFDO0lBZkc7Ozs7T0FJRztJQUNILFVBQVUsQ0FBQyxHQUFXLEVBQUUsVUFBc0M7UUFDMUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDUCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztDQUNKO0FBY0Q7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyxJQUFJLGNBQWMsQ0FDN0QsaUNBQWlDLEVBQ2pDO0lBQ0ksVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Q0FDcEIsQ0FDSixDQUFDO0FBRUYsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiAtLS0tICAgSW1wb3J0cyAgIC0tLS1cblxuaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUE1vZHVsZUZlYXR1cmVEZWZpbml0aW9uIH0gZnJvbSAnLi9tb2R1bGUtbWFuaWZlc3QudHlwZXMnO1xuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIC0tLS0gICBGZWF0dXJlIERlZmluaXRpb24gUHJvdmlkZXIgSW50ZXJmYWNlICAgLS0tLVxuXG4vKipcbiAqIENvbnRleHQgZm9yIGZlYXR1cmUgZGVmaW5pdGlvbiBwcm92aWRlcnMuXG4gKiBBbGxvd3MgcHJvdmlkZXJzIHRvIGFkZCBhZGRpdGlvbmFsIGZlYXR1cmUgZGVmaW5pdGlvbnMgZHluYW1pY2FsbHkuXG4gKi9cbmV4cG9ydCBjbGFzcyBBWFBGZWF0dXJlRGVmaW5pdGlvblByb3ZpZGVyQ29udGV4dCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmZWF0dXJlczogTWFwPHN0cmluZywgQVhQTW9kdWxlRmVhdHVyZURlZmluaXRpb24+ID0gbmV3IE1hcCgpO1xuXG4gICAgLyoqXG4gICAgICogQWRkIGEgZmVhdHVyZSBkZWZpbml0aW9uLlxuICAgICAqIEBwYXJhbSBrZXkgRnVsbCBmZWF0dXJlIGtleSAoTW9kdWxlTmFtZTpGZWF0dXJlS2V5IGZvcm1hdCB3aXRoIGNvbG9uIHNlcGFyYXRvcilcbiAgICAgKiBAcGFyYW0gZGVmaW5pdGlvbiBGZWF0dXJlIGRlZmluaXRpb25cbiAgICAgKi9cbiAgICBhZGRGZWF0dXJlKGtleTogc3RyaW5nLCBkZWZpbml0aW9uOiBBWFBNb2R1bGVGZWF0dXJlRGVmaW5pdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLmZlYXR1cmVzLnNldChrZXksIGRlZmluaXRpb24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBhbGwgZmVhdHVyZSBkZWZpbml0aW9ucy5cbiAgICAgKi9cbiAgICBnZXRGZWF0dXJlcygpOiBNYXA8c3RyaW5nLCBBWFBNb2R1bGVGZWF0dXJlRGVmaW5pdGlvbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mZWF0dXJlcztcbiAgICB9XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIGZvciBmZWF0dXJlIGRlZmluaXRpb24gcHJvdmlkZXJzLlxuICogVXNlZCB0byBkeW5hbWljYWxseSBwcm92aWRlIGZlYXR1cmUgZGVmaW5pdGlvbnMgZm9yIG1vZHVsZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRmVhdHVyZURlZmluaXRpb25Qcm92aWRlciB7XG4gICAgLyoqXG4gICAgICogUHJvdmlkZSBmZWF0dXJlIGRlZmluaXRpb25zLlxuICAgICAqIEBwYXJhbSBjb250ZXh0IENvbnRleHQgZm9yIGFkZGluZyBmZWF0dXJlIGRlZmluaXRpb25zXG4gICAgICovXG4gICAgcHJvdmlkZShjb250ZXh0OiBBWFBGZWF0dXJlRGVmaW5pdGlvblByb3ZpZGVyQ29udGV4dCk6IFByb21pc2U8dm9pZD47XG59XG5cbi8qKlxuICogSW5qZWN0aW9uIHRva2VuIGZvciBmZWF0dXJlIGRlZmluaXRpb24gcHJvdmlkZXJzLlxuICovXG5leHBvcnQgY29uc3QgQVhQX0ZFQVRVUkVfREVGSU5JVElPTl9QUk9WSURFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBWFBGZWF0dXJlRGVmaW5pdGlvblByb3ZpZGVyW10+KFxuICAgICdBWFBfRkVBVFVSRV9ERUZJTklUSU9OX1BST1ZJREVSJyxcbiAgICB7XG4gICAgICAgIHByb3ZpZGVkSW46ICdyb290JyxcbiAgICAgICAgZmFjdG9yeTogKCkgPT4gW10sXG4gICAgfVxuKTtcblxuLy8jZW5kcmVnaW9uXG5cbiJdfQ==","//#region ---- Imports ----\nimport { Injectable, InjectionToken } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n//#endregion\n//#region ---- Default Implementation ----\n/**\n * Default implementation of module access control service.\n * Checks if module is enabled in edition.modulesAndFeatures.modules.\n */\nexport class DefaultModuleAccessControlService {\n checkAccess(manifest, context) {\n // Check if module is enabled in edition\n const enabledModules = context.edition.modulesAndFeatures?.modules || [];\n return enabledModules.includes(manifest.name);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: DefaultModuleAccessControlService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: DefaultModuleAccessControlService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: DefaultModuleAccessControlService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//#endregion\n//#region ---- Injection Token ----\n/**\n * Injection token for module access control service.\n * If not provided, DefaultModuleAccessControlService will be used as fallback.\n */\nexport const AXP_MODULE_ACCESS_CONTROL_SERVICE = new InjectionToken('AXP_MODULE_ACCESS_CONTROL_SERVICE');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLWFjY2Vzcy1jb250cm9sLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2NvcmUvc3JjL2xpYi9tb2R1bGUtbWFuaWZlc3QvbW9kdWxlLWFjY2Vzcy1jb250cm9sLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBRS9CLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFVLE1BQU0sZUFBZSxDQUFDOztBQXVFbkUsWUFBWTtBQUVaLDhDQUE4QztBQUU5Qzs7O0dBR0c7QUFFSCxNQUFNLE9BQU8saUNBQWlDO0lBQzVDLFdBQVcsQ0FBQyxRQUEyQixFQUFFLE9BQStCO1FBQ3RFLHdDQUF3QztRQUN4QyxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDekUsT0FBTyxjQUFjLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRCxDQUFDOytHQUxVLGlDQUFpQzttSEFBakMsaUNBQWlDLGNBRHBCLE1BQU07OzRGQUNuQixpQ0FBaUM7a0JBRDdDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztBQVNsQyxZQUFZO0FBRVosdUNBQXVDO0FBRXZDOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUFHLElBQUksY0FBYyxDQUNqRSxtQ0FBbUMsQ0FDcEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiAtLS0tICAgSW1wb3J0cyAgIC0tLS1cblxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQTW9kdWxlTWFuaWZlc3QgfSBmcm9tICcuL21vZHVsZS1tYW5pZmVzdC50eXBlcyc7XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIEFjY2VzcyBDb250ZXh0IFR5cGUgICAtLS0tXG5cbi8qKlxuICogQWNjZXNzIGNvbnRyb2wgY29udGV4dCBmb3IgbW9kdWxlIGxvYWRpbmcuXG4gKiBOb3RlOiBUeXBlcyBhcmUgZGVmaW5lZCBsb2NhbGx5IHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY3kgd2l0aCBAYWNvcmV4L3BsYXRmb3JtL2F1dGhcbiAqIFRoZXNlIHR5cGVzIG1hdGNoIHRoZSBzdHJ1Y3R1cmUgb2YgQVhQVGVuYW50LCBBWFBBcHBsaWNhdGlvbiwgYW5kIEFYUFVzZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBNb2R1bGVBY2Nlc3NDb250ZXh0IHtcbiAgdGVuYW50OiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBsb2dvPzogYW55O1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgfTtcbiAgYXBwbGljYXRpb246IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICB2ZXJzaW9uPzogc3RyaW5nO1xuICAgIGVkaXRpb24/OiB7XG4gICAgICBpZDogc3RyaW5nO1xuICAgICAgdGl0bGU6IHN0cmluZztcbiAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIH07XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgbG9nbz86IGFueTtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIH07XG4gIGVkaXRpb246IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgbW9kdWxlc0FuZEZlYXR1cmVzPzoge1xuICAgICAgbW9kdWxlczogc3RyaW5nW107XG4gICAgICBmZWF0dXJlczogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICB9O1xuICB9O1xuICBzdWJzY3JpcHRpb24/OiBhbnk7XG4gIHVzZXI6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIGF2YXRhcj86IHN0cmluZztcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIH07XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIE1vZHVsZSBBY2Nlc3MgQ29udHJvbCBTZXJ2aWNlIEludGVyZmFjZSAgIC0tLS1cblxuLyoqXG4gKiBTZXJ2aWNlIGZvciBjaGVja2luZyBtb2R1bGUgYWNjZXNzIGNvbnRyb2wuXG4gKiBQcm92aWRlcyBjZW50cmFsaXplZCBhY2Nlc3MgY29udHJvbCBsb2dpYyB0aGF0IGNhbiBiZSBvdmVycmlkZGVuIHBlciBtb2R1bGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQTW9kdWxlQWNjZXNzQ29udHJvbFNlcnZpY2Uge1xuICAvKipcbiAgICogQ2hlY2sgaWYgdXNlciBoYXMgYWNjZXNzIHRvIGEgbW9kdWxlIGJhc2VkIG9uIGNvbnRleHQuXG4gICAqIEBwYXJhbSBtb2R1bGVOYW1lIE1vZHVsZSBuYW1lIHRvIGNoZWNrIGFjY2VzcyBmb3JcbiAgICogQHBhcmFtIGNvbnRleHQgQWNjZXNzIGNvbnRyb2wgY29udGV4dFxuICAgKiBAcmV0dXJucyB0cnVlIGlmIG1vZHVsZSBzaG91bGQgYmUgbG9hZGVkLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIGNoZWNrQWNjZXNzKG1hbmlmZXN0OiBBWFBNb2R1bGVNYW5pZmVzdCwgY29udGV4dDogQVhQTW9kdWxlQWNjZXNzQ29udGV4dCk6IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+O1xufVxuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIC0tLS0gICBEZWZhdWx0IEltcGxlbWVudGF0aW9uICAgLS0tLVxuXG4vKipcbiAqIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgbW9kdWxlIGFjY2VzcyBjb250cm9sIHNlcnZpY2UuXG4gKiBDaGVja3MgaWYgbW9kdWxlIGlzIGVuYWJsZWQgaW4gZWRpdGlvbi5tb2R1bGVzQW5kRmVhdHVyZXMubW9kdWxlcy5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBEZWZhdWx0TW9kdWxlQWNjZXNzQ29udHJvbFNlcnZpY2UgaW1wbGVtZW50cyBBWFBNb2R1bGVBY2Nlc3NDb250cm9sU2VydmljZSB7XG4gIGNoZWNrQWNjZXNzKG1hbmlmZXN0OiBBWFBNb2R1bGVNYW5pZmVzdCwgY29udGV4dDogQVhQTW9kdWxlQWNjZXNzQ29udGV4dCk6IGJvb2xlYW4ge1xuICAgIC8vIENoZWNrIGlmIG1vZHVsZSBpcyBlbmFibGVkIGluIGVkaXRpb25cbiAgICBjb25zdCBlbmFibGVkTW9kdWxlcyA9IGNvbnRleHQuZWRpdGlvbi5tb2R1bGVzQW5kRmVhdHVyZXM/Lm1vZHVsZXMgfHwgW107XG4gICAgcmV0dXJuIGVuYWJsZWRNb2R1bGVzLmluY2x1ZGVzKG1hbmlmZXN0Lm5hbWUpO1xuICB9XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIEluamVjdGlvbiBUb2tlbiAgIC0tLS1cblxuLyoqXG4gKiBJbmplY3Rpb24gdG9rZW4gZm9yIG1vZHVsZSBhY2Nlc3MgY29udHJvbCBzZXJ2aWNlLlxuICogSWYgbm90IHByb3ZpZGVkLCBEZWZhdWx0TW9kdWxlQWNjZXNzQ29udHJvbFNlcnZpY2Ugd2lsbCBiZSB1c2VkIGFzIGZhbGxiYWNrLlxuICovXG5leHBvcnQgY29uc3QgQVhQX01PRFVMRV9BQ0NFU1NfQ09OVFJPTF9TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuPEFYUE1vZHVsZUFjY2Vzc0NvbnRyb2xTZXJ2aWNlPihcbiAgJ0FYUF9NT0RVTEVfQUNDRVNTX0NPTlRST0xfU0VSVklDRSdcbik7XG5cbi8vI2VuZHJlZ2lvblxuIl19","//#region ---- Tag Types ----\nexport {};\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9jb3JlL3NyYy9saWIvdGFncy90YWcudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUNBQWlDOztBQXFCakMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiAtLS0tICAgVGFnIFR5cGVzICAgLS0tLVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSB0YWcgd2l0aCB0ZXh0LCBjb2xvciwgYW5kIG1ldGFkYXRhXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQVGFnIHtcbiAgICBpZD86IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIGNvbG9yOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgc2NvcGU/OiAnc3lzdGVtJyB8ICd0ZW5hbnQnIHwgJ3VzZXInO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGZpbHRlcmluZyB0YWdzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQVGFnRmlsdGVyT3B0aW9ucyB7XG4gICAgc2NvcGU/OiAoJ3N5c3RlbScgfCAndGVuYW50JyB8ICd1c2VyJylbXTtcbiAgICBzZWFyY2g/OiBzdHJpbmc7XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4iXX0=","import { InjectionToken } from '@angular/core';\n//#region ---- Tag Provider ----\n/**\n * Abstract class for tag providers\n * Implement this to provide tags from different sources (system, tenant, user, etc.)\n */\nexport class AXPTagProvider {\n /**\n * Create a new tag (optional - not all providers support creation)\n * @param tag Tag to create\n * @returns Created tag with id\n */\n async create(tag) {\n throw new Error(`Provider ${this.name} does not support tag creation`);\n }\n /**\n * Update an existing tag (optional)\n * @param tag Tag to update\n * @returns Updated tag\n */\n async update(tag) {\n throw new Error(`Provider ${this.name} does not support tag updates`);\n }\n /**\n * Delete a tag (optional)\n * @param id Tag id to delete\n */\n async delete(id) {\n throw new Error(`Provider ${this.name} does not support tag deletion`);\n }\n}\n/**\n * Injection token for tag providers\n * Use this to register multiple tag providers\n */\nexport const AXP_TAG_PROVIDER = new InjectionToken('AXP_TAG_PROVIDER');\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9jb3JlL3NyYy9saWIvdGFncy90YWcucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvQyxvQ0FBb0M7QUFFcEM7OztHQUdHO0FBQ0gsTUFBTSxPQUFnQixjQUFjO0lBWWhDOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFFLEdBQXVCO1FBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSxnQ0FBZ0MsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLE1BQU0sQ0FBRSxHQUFXO1FBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSwrQkFBK0IsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFFLEVBQVU7UUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLGdDQUFnQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztDQUNKO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQW1CLGtCQUFrQixDQUFDLENBQUM7QUFFekYsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBUYWcgfSBmcm9tICcuL3RhZy50eXBlcyc7XG5cbi8vI3JlZ2lvbiAtLS0tICAgVGFnIFByb3ZpZGVyICAgLS0tLVxuXG4vKipcbiAqIEFic3RyYWN0IGNsYXNzIGZvciB0YWcgcHJvdmlkZXJzXG4gKiBJbXBsZW1lbnQgdGhpcyB0byBwcm92aWRlIHRhZ3MgZnJvbSBkaWZmZXJlbnQgc291cmNlcyAoc3lzdGVtLCB0ZW5hbnQsIHVzZXIsIGV0Yy4pXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWFBUYWdQcm92aWRlciB7XG4gICAgLyoqXG4gICAgICogVW5pcXVlIG5hbWUgZm9yIHRoaXMgcHJvdmlkZXIgKGUuZy4sICdzeXN0ZW0nLCAndGVuYW50JywgJ3VzZXInKVxuICAgICAqL1xuICAgIGFic3RyYWN0IG5hbWU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGUgdGFncyBmcm9tIHRoaXMgc291cmNlXG4gICAgICogQHJldHVybnMgUHJvbWlzZSBvZiB0YWdzXG4gICAgICovXG4gICAgYWJzdHJhY3QgcHJvdmlkZSgpOiBQcm9taXNlPEFYUFRhZ1tdPjtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhIG5ldyB0YWcgKG9wdGlvbmFsIC0gbm90IGFsbCBwcm92aWRlcnMgc3VwcG9ydCBjcmVhdGlvbilcbiAgICAgKiBAcGFyYW0gdGFnIFRhZyB0byBjcmVhdGVcbiAgICAgKiBAcmV0dXJucyBDcmVhdGVkIHRhZyB3aXRoIGlkXG4gICAgICovXG4gICAgYXN5bmMgY3JlYXRlPyh0YWc6IE9taXQ8QVhQVGFnLCAnaWQnPik6IFByb21pc2U8QVhQVGFnPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgUHJvdmlkZXIgJHt0aGlzLm5hbWV9IGRvZXMgbm90IHN1cHBvcnQgdGFnIGNyZWF0aW9uYCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlIGFuIGV4aXN0aW5nIHRhZyAob3B0aW9uYWwpXG4gICAgICogQHBhcmFtIHRhZyBUYWcgdG8gdXBkYXRlXG4gICAgICogQHJldHVybnMgVXBkYXRlZCB0YWdcbiAgICAgKi9cbiAgICBhc3luYyB1cGRhdGU/KHRhZzogQVhQVGFnKTogUHJvbWlzZTxBWFBUYWc+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQcm92aWRlciAke3RoaXMubmFtZX0gZG9lcyBub3Qgc3VwcG9ydCB0YWcgdXBkYXRlc2ApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlbGV0ZSBhIHRhZyAob3B0aW9uYWwpXG4gICAgICogQHBhcmFtIGlkIFRhZyBpZCB0byBkZWxldGVcbiAgICAgKi9cbiAgICBhc3luYyBkZWxldGU/KGlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQcm92aWRlciAke3RoaXMubmFtZX0gZG9lcyBub3Qgc3VwcG9ydCB0YWcgZGVsZXRpb25gKTtcbiAgICB9XG59XG5cbi8qKlxuICogSW5qZWN0aW9uIHRva2VuIGZvciB0YWcgcHJvdmlkZXJzXG4gKiBVc2UgdGhpcyB0byByZWdpc3RlciBtdWx0aXBsZSB0YWcgcHJvdmlkZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBBWFBfVEFHX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuPEFYUFRhZ1Byb3ZpZGVyW10+KCdBWFBfVEFHX1BST1ZJREVSJyk7XG5cbi8vI2VuZHJlZ2lvblxuXG4iXX0=","import { inject, Injectable } from '@angular/core';\nimport { AXP_TAG_PROVIDER } from './tag.provider';\nimport * as i0 from \"@angular/core\";\n//#region ---- Tag Service ----\n/**\n * Service for managing tags from multiple providers\n * Aggregates tags from all registered providers\n */\nexport class AXPTagService {\n constructor() {\n //#region ---- Dependencies ----\n this.providers = inject(AXP_TAG_PROVIDER, { optional: true }) ?? [];\n //#endregion\n //#region ---- State ----\n this.cache = null;\n }\n //#endregion\n //#region ---- Public API ----\n /**\n * Get all tags from all providers\n * @param options Filter options\n * @returns Promise of tags\n */\n async getTags(options) {\n if (!this.cache) {\n await this.loadTags();\n }\n let tags = this.cache;\n // Apply scope filter\n if (options?.scope && options.scope.length > 0) {\n tags = tags.filter((tag) => tag.scope && options.scope.includes(tag.scope));\n }\n // Apply search filter\n if (options?.search) {\n const searchLower = options.search.toLowerCase();\n tags = tags.filter((tag) => tag.title.toLowerCase().includes(searchLower) ||\n tag.description?.toLowerCase().includes(searchLower));\n }\n return tags;\n }\n /**\n * Create a new tag using the appropriate provider\n * @param tag Tag to create\n * @param providerName Provider to use (defaults to first writable provider)\n * @returns Created tag\n */\n async createTag(tag, providerName) {\n const provider = providerName\n ? this.providers.find((p) => p.name === providerName)\n : this.providers.find((p) => p.create);\n if (!provider || !provider.create) {\n throw new Error('No writable tag provider available');\n }\n const createdTag = await provider.create(tag);\n // Invalidate cache\n this.cache = null;\n return createdTag;\n }\n /**\n * Update an existing tag\n * @param tag Tag to update\n * @returns Updated tag\n */\n async updateTag(tag) {\n const provider = this.providers.find((p) => p.name === tag.scope && p.update);\n if (!provider || !provider.update) {\n throw new Error(`No provider found for updating tag with scope: ${tag.scope}`);\n }\n const updatedTag = await provider.update(tag);\n // Invalidate cache\n this.cache = null;\n return updatedTag;\n }\n /**\n * Delete a tag\n * @param tagId Tag id to delete\n * @param scope Tag scope\n */\n async deleteTag(tagId, scope) {\n const provider = this.providers.find((p) => p.name === scope && p.delete);\n if (!provider || !provider.delete) {\n throw new Error(`No provider found for deleting tag with scope: ${scope}`);\n }\n await provider.delete(tagId);\n // Invalidate cache\n this.cache = null;\n }\n /**\n * Reload tags from all providers\n */\n async reload() {\n this.cache = null;\n await this.loadTags();\n }\n //#endregion\n //#region ---- Private Methods ----\n /**\n * Load tags from all providers\n */\n async loadTags() {\n const allTags = [];\n for (const provider of this.providers) {\n try {\n const tags = await provider.provide();\n allTags.push(...tags);\n }\n catch (error) {\n console.error(`Error loading tags from provider ${provider.name}:`, error);\n }\n }\n // Remove duplicates based on title (case-insensitive)\n const uniqueTags = allTags.filter((tag, index, self) => index === self.findIndex((t) => t.title.toLowerCase() === tag.title.toLowerCase()));\n this.cache = uniqueTags;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPTagService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPTagService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPTagService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2NvcmUvc3JjL2xpYi90YWdzL3RhZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBa0IsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFbEUsbUNBQW1DO0FBRW5DOzs7R0FHRztBQUlILE1BQU0sT0FBTyxhQUFhO0lBSDFCO1FBS0ksb0NBQW9DO1FBRTVCLGNBQVMsR0FBcUIsTUFBTSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRXpGLFlBQVk7UUFFWiw2QkFBNkI7UUFFckIsVUFBSyxHQUFvQixJQUFJLENBQUM7S0FzSXpDO0lBcElHLFlBQVk7SUFFWixrQ0FBa0M7SUFFbEM7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBNkI7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNkLE1BQU0sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFCLENBQUM7UUFFRCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBTSxDQUFDO1FBRXZCLHFCQUFxQjtRQUNyQixJQUFJLE9BQU8sRUFBRSxLQUFLLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDN0MsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLEtBQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDakYsQ0FBQztRQUVE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LElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsWUFBWTtJQUVaLHVDQUF1QztJQUV2Qzs7T0FFRztJQUNLLEtBQUssQ0FBQyxRQUFRO1FBQ2xCLE1BQU0sT0FBTyxHQUFhLEVBQUUsQ0FBQztRQUU3QixLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUM7Z0JBQ0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUMxQixDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDYixPQUFPLENBQUMsS0FBSyxDQUFDLG9DQUFvQyxRQUFRLENBQUMsSUFBSSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDL0UsQ0FBQztRQUNMLENBQUM7UUFFRCxzREFBc0Q7UUFDdEQsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FDN0IsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLENBQ2pCLEtBQUssS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FDekYsQ0FBQztRQUVGLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDO0lBQzVCLENBQUM7K0dBN0lRLGFBQWE7bUhBQWIsYUFBYSxjQUZWLE1BQU07OzRGQUVULGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBUYWcsIEFYUFRhZ0ZpbHRlck9wdGlvbnMgfSBmcm9tICcuL3RhZy50eXBlcyc7XG5pbXBvcnQgeyBBWFBfVEFHX1BST1ZJREVSLCBBWFBUYWdQcm92aWRlciB9IGZyb20gJy4vdGFnLnByb3ZpZGVyJztcblxuLy8jcmVnaW9uIC0tLS0gICBUYWcgU2VydmljZSAgIC0tLS1cblxuLyoqXG4gKiBTZXJ2aWNlIGZvciBtYW5hZ2luZyB0YWdzIGZyb20gbXVsdGlwbGUgcHJvdmlkZXJzXG4gKiBBZ2dyZWdhdGVzIHRhZ3MgZnJvbSBhbGwgcmVnaXN0ZXJlZCBwcm92aWRlcnNcbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQVhQVGFnU2VydmljZSB7XG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIERlcGVuZGVuY2llcyAgIC0tLS1cblxuICAgIHByaXZhdGUgcHJvdmlkZXJzOiBBWFBUYWdQcm92aWRlcltdID0gaW5qZWN0KEFYUF9UQUdfUFJPVklERVIsIHsgb3B0aW9uYWw6IHRydWUgfSkgPz8gW107XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgU3RhdGUgICAtLS0tXG5cbiAgICBwcml2YXRlIGNhY2hlOiBBWFBUYWdbXSB8IG51bGwgPSBudWxsO1xuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIFB1YmxpYyBBUEkgICAtLS0tXG5cbiAgICAvKipcbiAgICAgKiBHZXQgYWxsIHRhZ3MgZnJvbSBhbGwgcHJvdmlkZXJzXG4gICAgICogQHBhcmFtIG9wdGlvbnMgRmlsdGVyIG9wdGlvbnNcbiAgICAgKiBAcmV0dXJucyBQcm9taXNlIG9mIHRhZ3NcbiAgICAgKi9cbiAgICBhc3luYyBnZXRUYWdzKG9wdGlvbnM/OiBBWFBUYWdGaWx0ZXJPcHRpb25zKTogUHJvbWlzZTxBWFBUYWdbXT4ge1xuICAgICAgICBpZiAoIXRoaXMuY2FjaGUpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMubG9hZFRhZ3MoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB0YWdzID0gdGhpcy5jYWNoZSE7XG5cbiAgICAgICAgLy8gQXBwbHkgc2NvcGUgZmlsdGVyXG4gICAgICAgIGlmIChvcHRpb25zPy5zY29wZSAmJiBvcHRpb25zLnNjb3BlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRhZ3MgPSB0YWdzLmZpbHRlcigodGFnKSA9PiB0YWcuc2NvcGUgJiYgb3B0aW9ucy5zY29wZSEuaW5jbHVkZXModGFnLnNjb3BlKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBcHBseSBzZWFyY2ggZmlsdGVyXG4gICAgICAgIGlmIChvcHRpb25zPy5zZWFyY2gpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlYXJjaExvd2VyID0gb3B0aW9ucy5zZWFyY2gudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIHRhZ3MgPSB0YWdzLmZpbHRlcihcbiAgICAgICAgICAgICAgICAodGFnKSA9PlxuICAgICAgICAgICAgICAgICAgICB0YWcudGl0bGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hMb3dlcikgfHxcbiAgICAgICAgICAgICAgICAgICAgdGFnLmRlc2NyaXB0aW9uPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaExvd2VyKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGFncztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSBuZXcgdGFnIHVzaW5nIHRoZSBhcHByb3ByaWF0ZSBwcm92aWRlclxuICAgICAqIEBwYXJhbSB0YWcgVGFnIHRvIGNyZWF0ZVxuICAgICAqIEBwYXJhbSBwcm92aWRlck5hbWUgUHJvdmlkZXIgdG8gdXNlIChkZWZhdWx0cyB0byBmaXJzdCB3cml0YWJsZSBwcm92aWRlcilcbiAgICAgKiBAcmV0dXJucyBDcmVhdGVkIHRhZ1xuICAgICAqL1xuICAgIGFzeW5jIGNyZWF0ZVRhZyh0YWc6IE9taXQ8QVhQVGFnLCAnaWQnPiwgcHJvdmlkZXJOYW1lPzogc3RyaW5nKTogUHJvbWlzZTxBWFBUYWc+IHtcbiAgICAgICAgY29uc3QgcHJvdmlkZXIgPSBwcm92aWRlck5hbWVcbiAgICAgICAgICAgID8gdGhpcy5wcm92aWRlcnMuZmluZCgocCkgPT4gcC5uYW1lID09PSBwcm92aWRlck5hbWUpXG4gICAgICAgICAgICA6IHRoaXMucHJvdmlkZXJzLmZpbmQoKHApID0+IHAuY3JlYXRlKTtcblxuICAgICAgICBpZiAoIXByb3ZpZGVyIHx8ICFwcm92aWRlci5jcmVhdGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gd3JpdGFibGUgdGFnIHByb3ZpZGVyIGF2YWlsYWJsZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY3JlYXRlZFRhZyA9IGF3YWl0IHByb3ZpZGVyLmNyZWF0ZSh0YWcpO1xuXG4gICAgICAgIC8vIEludmFsaWRhdGUgY2FjaGVcbiAgICAgICAgdGhpcy5jYWNoZSA9IG51bGw7XG5cbiAgICAgICAgcmV0dXJuIGNyZWF0ZWRUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlIGFuIGV4aXN0aW5nIHRhZ1xuICAgICAqIEBwYXJhbSB0YWcgVGFnIHRvIHVwZGF0ZVxuICAgICAqIEByZXR1cm5zIFVwZGF0ZWQgdGFnXG4gICAgICovXG4gICAgYXN5bmMgdXBkYXRlVGFnKHRhZzogQVhQVGFnKTogUHJvbWlzZTxBWFBUYWc+IHtcbiAgICAgICAgY29uc3QgcHJvdmlkZXIgPSB0aGlzLnByb3ZpZGVycy5maW5kKChwKSA9PiBwLm5hbWUgPT09IHRhZy5zY29wZSAmJiBwLnVwZGF0ZSk7XG5cbiAgICAgICAgaWYgKCFwcm92aWRlciB8fCAhcHJvdmlkZXIudXBkYXRlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHByb3ZpZGVyIGZvdW5kIGZvciB1cGRhdGluZyB0YWcgd2l0aCBzY29wZTogJHt0YWcuc2NvcGV9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1cGRhdGVkVGFnID0gYXdhaXQgcHJvdmlkZXIudXBkYXRlKHRhZyk7XG5cbiAgICAgICAgLy8gSW52YWxpZGF0ZSBjYWNoZVxuICAgICAgICB0aGlzLmNhY2hlID0gbnVsbDtcblxuICAgICAgICByZXR1cm4gdXBkYXRlZFRhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWxldGUgYSB0YWdcbiAgICAgKiBAcGFyYW0gdGFnSWQgVGFnIGlkIHRvIGRlbGV0ZVxuICAgICAqIEBwYXJhbSBzY29wZSBUYWcgc2NvcGVcbiAgICAgKi9cbiAgICBhc3luYyBkZWxldGVUYWcodGFnSWQ6IHN0cmluZywgc2NvcGU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBwcm92aWRlciA9IHRoaXMucHJvdmlkZXJzLmZpbmQoKHApID0+IHAubmFtZSA9PT0gc2NvcGUgJiYgcC5kZWxldGUpO1xuXG4gICAgICAgIGlmICghcHJvdmlkZXIgfHwgIXByb3ZpZGVyLmRlbGV0ZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBwcm92aWRlciBmb3VuZCBmb3IgZGVsZXRpbmcgdGFnIHdpdGggc2NvcGU6ICR7c2NvcGV9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBwcm92aWRlci5kZWxldGUodGFnSWQpO1xuXG4gICAgICAgIC8vIEludmFsaWRhdGUgY2FjaGVcbiAgICAgICAgdGhpcy5jYWNoZSA9IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVsb2FkIHRhZ3MgZnJvbSBhbGwgcHJvdmlkZXJzXG4gICAgICovXG4gICAgYXN5bmMgcmVsb2FkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLmNhY2hlID0gbnVsbDtcbiAgICAgICAgYXdhaXQgdGhpcy5sb2FkVGFncygpO1xuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBQcml2YXRlIE1ldGhvZHMgICAtLS0tXG5cbiAgICAvKipcbiAgICAgKiBMb2FkIHRhZ3MgZnJvbSBhbGwgcHJvdmlkZXJzXG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3luYyBsb2FkVGFncygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgYWxsVGFnczogQVhQVGFnW10gPSBbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IHByb3ZpZGVyIG9mIHRoaXMucHJvdmlkZXJzKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhZ3MgPSBhd2FpdCBwcm92aWRlci5wcm92aWRlKCk7XG4gICAgICAgICAgICAgICAgYWxsVGFncy5wdXNoKC4uLnRhZ3MpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvciBsb2FkaW5nIHRhZ3MgZnJvbSBwcm92aWRlciAke3Byb3ZpZGVyLm5hbWV9OmAsIGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlbW92ZSBkdXBsaWNhdGVzIGJhc2VkIG9uIHRpdGxlIChjYXNlLWluc2Vuc2l0aXZlKVxuICAgICAgICBjb25zdCB1bmlxdWVUYWdzID0gYWxsVGFncy5maWx0ZXIoXG4gICAgICAgICAgICAodGFnLCBpbmRleCwgc2VsZikgPT5cbiAgICAgICAgICAgICAgICBpbmRleCA9PT0gc2VsZi5maW5kSW5kZXgoKHQpID0+IHQudGl0bGUudG9Mb3dlckNhc2UoKSA9PT0gdGFnLnRpdGxlLnRvTG93ZXJDYXNlKCkpLFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuY2FjaGUgPSB1bmlxdWVUYWdzO1xuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxufVxuXG4vLyNlbmRyZWdpb25cblxuIl19","/**\n * Additional suggested generic actions for future consideration:\n *\n * Data & Content Actions:\n * - Search = 'search' - Search functionality\n * - Filter = 'filter' - Apply filters\n * - Sort = 'sort' - Sort data\n * - Group = 'group' - Group data\n * - Expand = 'expand' - Expand details\n * - Collapse = 'collapse' - Collapse details\n * - Pin = 'pin' - Pin to favorites\n * - Bookmark = 'bookmark' - Bookmark item\n * - Favorite = 'favorite' - Mark as favorite\n * - Star = 'star' - Star rating\n *\n * Workflow Actions:\n * - Start = 'start' - Start process/workflow\n * - Stop = 'stop' - Stop process\n * - Pause = 'pause' - Pause process\n * - Resume = 'resume' - Resume process\n * - Cancel = 'cancel' - Cancel operation\n * - Complete = 'complete' - Mark as complete\n * - Close = 'close' - Close item\n * - Reopen = 'reopen' - Reopen closed item\n * - Forward = 'forward' - Forward to next step\n * - Back = 'back' - Go back\n *\n * Communication Actions:\n * - Reply = 'reply' - Reply to message\n * - Forward = 'forward' - Forward message\n * - Notify = 'notify' - Send notification\n * - Invite = 'invite' - Invite user\n * - Join = 'join' - Join group/meeting\n * - Leave = 'leave' - Leave group/meeting\n *\n * Security Actions:\n * - Login = 'login' - User login\n * - Logout = 'logout' - User logout\n * - Block = 'block' - Block user/content\n * - Unblock = 'unblock' - Unblock user/content\n * - Ban = 'ban' - Ban user\n * - Unban = 'unban' - Unban user\n * - Verify = 'verify' - Verify identity\n * - Authenticate = 'authenticate' - Authenticate\n *\n * File & Media Actions:\n * - Open = 'open' - Open file\n * - Save = 'save' - Save file\n * - SaveAs = 'save-as' - Save as new file\n * - Attach = 'attach' - Attach file\n * - Detach = 'detach' - Detach file\n * - Compress = 'compress' - Compress files\n * - Extract = 'extract' - Extract archive\n * - Convert = 'convert' - Convert format\n * - Crop = 'crop' - Crop image\n * - Resize = 'resize' - Resize image\n *\n * System Actions:\n * - Sync = 'sync' - Synchronize data\n * - Backup = 'backup' - Create backup\n * - Restore = 'restore' - Restore from backup\n * - Reset = 'reset' - Reset to defaults\n * - Clear = 'clear' - Clear data\n * - Optimize = 'optimize' - Optimize performance\n * - Update = 'update' - Update system\n * - Install = 'install' - Install component\n * - Uninstall = 'uninstall' - Uninstall component\n * - Enable = 'enable' - Enable feature\n * - Disable = 'disable' - Disable feature\n *\n * Analytics & Monitoring:\n * - Monitor = 'monitor' - Monitor activity\n * - Track = 'track' - Track progress\n * - Analyze = 'analyze' - Analyze data\n * - Debug = 'debug' - Debug issue\n * - Log = 'log' - View logs\n * - Alert = 'alert' - Set alert\n * - Dashboard = 'dashboard' - View dashboard\n * - Metrics = 'metrics' - View metrics\n *\n * Collaboration Actions:\n * - Collaborate = 'collaborate' - Start collaboration\n * - Share = 'share' - Share content\n * - Comment = 'comment' - Add comment\n * - Like = 'like' - Like content\n * - Follow = 'follow' - Follow user/content\n * - Subscribe = 'subscribe' - Subscribe to updates\n * - Unsubscribe = 'unsubscribe' - Unsubscribe\n * - Rate = 'rate' - Rate content\n * - Review = 'review' - Review content\n * - Recommend = 'recommend' - Recommend content\n */\nexport var AXPSystemActionType;\n(function (AXPSystemActionType) {\n AXPSystemActionType[\"View\"] = \"view\";\n AXPSystemActionType[\"Create\"] = \"create\";\n AXPSystemActionType[\"Update\"] = \"update\";\n AXPSystemActionType[\"Delete\"] = \"delete\";\n AXPSystemActionType[\"Approve\"] = \"approve\";\n AXPSystemActionType[\"Reject\"] = \"reject\";\n AXPSystemActionType[\"Submit\"] = \"submit\";\n AXPSystemActionType[\"Export\"] = \"export\";\n AXPSystemActionType[\"Import\"] = \"import\";\n AXPSystemActionType[\"Print\"] = \"print\";\n AXPSystemActionType[\"Assign\"] = \"assign\";\n AXPSystemActionType[\"Lock\"] = \"lock\";\n AXPSystemActionType[\"Unlock\"] = \"unlock\";\n AXPSystemActionType[\"Share\"] = \"share\";\n AXPSystemActionType[\"Configure\"] = \"configure\";\n AXPSystemActionType[\"Reorder\"] = \"reorder\";\n AXPSystemActionType[\"Preview\"] = \"preview\";\n AXPSystemActionType[\"Duplicate\"] = \"duplicate\";\n AXPSystemActionType[\"Archive\"] = \"archive\";\n AXPSystemActionType[\"Publish\"] = \"publish\";\n AXPSystemActionType[\"Unpublish\"] = \"unpublish\";\n AXPSystemActionType[\"Upload\"] = \"upload\";\n AXPSystemActionType[\"Download\"] = \"download\";\n AXPSystemActionType[\"Copy\"] = \"copy\";\n AXPSystemActionType[\"Move\"] = \"move\";\n AXPSystemActionType[\"Rename\"] = \"rename\";\n AXPSystemActionType[\"Restore\"] = \"restore\";\n AXPSystemActionType[\"Manage\"] = \"manage\";\n AXPSystemActionType[\"Info\"] = \"info\";\n AXPSystemActionType[\"Confirm\"] = \"confirm\";\n AXPSystemActionType[\"Design\"] = \"design\";\n AXPSystemActionType[\"VersionHistory\"] = \"version-history\";\n AXPSystemActionType[\"Compare\"] = \"compare\";\n AXPSystemActionType[\"Comments\"] = \"comments\";\n AXPSystemActionType[\"Sign\"] = \"sign\";\n AXPSystemActionType[\"Setup\"] = \"setup\";\n AXPSystemActionType[\"Send\"] = \"send\";\n AXPSystemActionType[\"Report\"] = \"report\";\n AXPSystemActionType[\"Sent\"] = \"sent\";\n AXPSystemActionType[\"Review\"] = \"review\";\n AXPSystemActionType[\"Generate\"] = \"generate\";\n AXPSystemActionType[\"Refresh\"] = \"refresh\";\n AXPSystemActionType[\"Reload\"] = \"reload\";\n AXPSystemActionType[\"Search\"] = \"search\";\n AXPSystemActionType[\"Filter\"] = \"filter\";\n AXPSystemActionType[\"Sort\"] = \"sort\";\n AXPSystemActionType[\"Start\"] = \"start\";\n AXPSystemActionType[\"Stop\"] = \"stop\";\n AXPSystemActionType[\"Pause\"] = \"pause\";\n AXPSystemActionType[\"Cancel\"] = \"cancel\";\n AXPSystemActionType[\"Close\"] = \"close\";\n AXPSystemActionType[\"Complete\"] = \"complete\";\n AXPSystemActionType[\"Save\"] = \"save\";\n AXPSystemActionType[\"SaveAs\"] = \"save-as\";\n AXPSystemActionType[\"Sync\"] = \"sync\";\n AXPSystemActionType[\"Reset\"] = \"reset\";\n AXPSystemActionType[\"Clear\"] = \"clear\";\n AXPSystemActionType[\"Distribution\"] = \"distribution\";\n})(AXPSystemActionType || (AXPSystemActionType = {}));\nconst i18n = (key) => `@general:actions.${key}`;\nexport const AXPSystemActions = Object.freeze({\n View: {\n key: AXPSystemActionType.View,\n title: i18n('view.title'),\n icon: 'fa-light fa-eye',\n color: 'primary',\n descriptions: {\n title: i18n('view.title'),\n tooltip: i18n('view.description'),\n permission: i18n('view.permission'),\n audit: i18n('view.audit')\n }\n },\n Create: {\n key: AXPSystemActionType.Create,\n title: i18n('create.title'),\n icon: 'fa-light fa-plus',\n color: 'primary',\n descriptions: {\n title: i18n('create.title'),\n tooltip: i18n('create.description'),\n permission: i18n('create.permission'),\n audit: i18n('create.audit')\n }\n },\n Edit: {\n key: AXPSystemActionType.Update,\n title: i18n('edit.title'),\n icon: 'fa-light fa-pen',\n color: 'default',\n descriptions: {\n title: i18n('edit.title'),\n tooltip: i18n('edit.description'),\n permission: i18n('edit.permission'),\n audit: i18n('edit.audit')\n }\n },\n Delete: {\n key: AXPSystemActionType.Delete,\n title: i18n('delete.title'),\n icon: 'fa-light fa-trash',\n color: 'danger',\n critical: true,\n descriptions: {\n title: i18n('delete.title'),\n tooltip: i18n('delete.description'),\n permission: i18n('delete.permission'),\n audit: i18n('delete.audit')\n }\n },\n Approve: {\n key: AXPSystemActionType.Approve,\n title: i18n('approve.title'),\n icon: 'fa-light fa-circle-check',\n color: 'success',\n critical: true,\n descriptions: {\n title: i18n('approve.title'),\n tooltip: i18n('approve.description'),\n permission: i18n('approve.permission'),\n audit: i18n('approve.audit')\n }\n },\n Submit: {\n key: AXPSystemActionType.Submit,\n title: i18n('submit.title'),\n icon: 'fa-light fa-paper-plane',\n color: 'primary',\n descriptions: {\n title: i18n('submit.title'),\n tooltip: i18n('submit.description'),\n permission: i18n('submit.permission'),\n audit: i18n('submit.audit')\n }\n },\n Reject: {\n key: AXPSystemActionType.Reject,\n title: i18n('reject.title'),\n icon: 'fa-light fa-ban',\n color: 'danger',\n critical: true,\n descriptions: {\n title: i18n('reject.title'),\n tooltip: i18n('reject.description'),\n permission: i18n('reject.permission'),\n audit: i18n('reject.audit')\n }\n },\n Export: {\n key: AXPSystemActionType.Export,\n title: i18n('export.title'),\n icon: 'fa-light fa-download',\n color: 'default',\n descriptions: {\n title: i18n('export.title'),\n tooltip: i18n('export.description'),\n permission: i18n('export.permission'),\n audit: i18n('export.audit')\n }\n },\n Import: {\n key: AXPSystemActionType.Import,\n title: i18n('import.title'),\n icon: 'fa-light fa-upload',\n color: 'default',\n descriptions: {\n title: i18n('import.title'),\n tooltip: i18n('import.description'),\n permission: i18n('import.permission'),\n audit: i18n('import.audit')\n }\n },\n Print: {\n key: AXPSystemActionType.Print,\n title: i18n('print.title'),\n icon: 'fa-light fa-print',\n color: 'default',\n descriptions: {\n title: i18n('print.title'),\n tooltip: i18n('print.description'),\n permission: i18n('print.permission'),\n audit: i18n('print.audit')\n }\n },\n Duplicate: {\n key: AXPSystemActionType.Duplicate,\n title: i18n('duplicate.title'),\n icon: 'fa-light fa-clone',\n color: 'warning',\n descriptions: {\n title: i18n('duplicate.title'),\n tooltip: i18n('duplicate.description'),\n permission: i18n('duplicate.permission'),\n audit: i18n('duplicate.audit')\n }\n },\n Archive: {\n key: AXPSystemActionType.Archive,\n title: i18n('archive.title'),\n icon: 'fa-light fa-box-archive',\n color: 'default',\n descriptions: {\n title: i18n('archive.title'),\n tooltip: i18n('archive.description'),\n permission: i18n('archive.permission'),\n audit: i18n('archive.audit')\n }\n },\n Restore: {\n key: AXPSystemActionType.Restore,\n title: i18n('restore.title'),\n icon: 'fa-light fa-arrow-rotate-left',\n color: 'default',\n descriptions: {\n title: i18n('restore.title'),\n tooltip: i18n('restore.description'),\n permission: i18n('restore.permission'),\n audit: i18n('restore.audit')\n }\n },\n Assign: {\n key: AXPSystemActionType.Assign,\n title: i18n('assign.title'),\n icon: 'fa-light fa-user-plus',\n color: 'primary',\n descriptions: {\n title: i18n('assign.title'),\n tooltip: i18n('assign.description'),\n permission: i18n('assign.permission'),\n audit: i18n('assign.audit')\n }\n },\n Lock: {\n key: AXPSystemActionType.Lock,\n title: i18n('lock.title'),\n icon: 'fa-light fa-lock',\n color: 'warning',\n descriptions: {\n title: i18n('lock.title'),\n tooltip: i18n('lock.description'),\n permission: i18n('lock.permission'),\n audit: i18n('lock.audit')\n }\n },\n Unlock: {\n key: AXPSystemActionType.Unlock,\n title: i18n('unlock.title'),\n icon: 'fa-light fa-unlock',\n color: 'success',\n descriptions: {\n title: i18n('unlock.title'),\n tooltip: i18n('unlock.description'),\n permission: i18n('unlock.permission'),\n audit: i18n('unlock.audit')\n }\n },\n Share: {\n key: AXPSystemActionType.Share,\n title: i18n('share.title'),\n icon: 'fa-light fa-share-nodes',\n color: 'info',\n descriptions: {\n title: i18n('share.title'),\n tooltip: i18n('share.description'),\n permission: i18n('share.permission'),\n audit: i18n('share.audit')\n }\n },\n Configure: {\n key: AXPSystemActionType.Configure,\n title: i18n('configure.title'),\n icon: 'fa-light fa-sliders',\n color: 'primary',\n descriptions: {\n title: i18n('configure.title'),\n tooltip: i18n('configure.description'),\n permission: i18n('configure.permission'),\n audit: i18n('configure.audit')\n }\n },\n Reorder: {\n key: AXPSystemActionType.Reorder,\n title: i18n('reorder.title'),\n icon: 'fa-light fa-arrow-down-up-across-line',\n color: 'default',\n descriptions: {\n title: i18n('reorder.title'),\n tooltip: i18n('reorder.description'),\n permission: i18n('reorder.permission'),\n audit: i18n('reorder.audit')\n }\n },\n Preview: {\n key: AXPSystemActionType.Preview,\n title: i18n('preview.title'),\n icon: 'fa-light fa-magnifying-glass',\n color: 'default',\n descriptions: {\n title: i18n('preview.title'),\n tooltip: i18n('preview.description'),\n permission: i18n('preview.permission'),\n audit: i18n('preview.audit')\n }\n },\n Publish: {\n key: AXPSystemActionType.Publish,\n title: i18n('publish.title'),\n icon: 'fa-light fa-globe',\n color: 'success',\n descriptions: {\n title: i18n('publish.title'),\n tooltip: i18n('publish.description'),\n permission: i18n('publish.permission'),\n audit: i18n('publish.audit')\n }\n },\n Unpublish: {\n key: AXPSystemActionType.Unpublish,\n title: i18n('unpublish.title'),\n icon: 'fa-light fa-globe-slash',\n color: 'danger',\n descriptions: {\n title: i18n('unpublish.title'),\n tooltip: i18n('unpublish.description'),\n permission: i18n('unpublish.permission'),\n audit: i18n('unpublish.audit')\n }\n },\n Upload: {\n key: AXPSystemActionType.Upload,\n title: i18n('upload.title'),\n icon: 'fa-light fa-upload',\n color: 'default',\n descriptions: {\n title: i18n('upload.title'),\n tooltip: i18n('upload.description'),\n permission: i18n('upload.permission'),\n audit: i18n('upload.audit')\n }\n },\n Download: {\n key: AXPSystemActionType.Download,\n title: i18n('download.title'),\n icon: 'fa-light fa-download',\n color: 'default',\n descriptions: {\n title: i18n('download.title'),\n tooltip: i18n('download.description'),\n permission: i18n('download.permission'),\n audit: i18n('download.audit')\n }\n },\n Copy: {\n key: AXPSystemActionType.Copy,\n title: i18n('copy.title'),\n icon: 'fa-light fa-copy',\n color: 'default',\n descriptions: {\n title: i18n('copy.title'),\n tooltip: i18n('copy.description'),\n permission: i18n('copy.permission'),\n audit: i18n('copy.audit')\n }\n },\n Move: {\n key: AXPSystemActionType.Move,\n title: i18n('move.title'),\n icon: 'fa-light fa-arrow-right-arrow-left',\n color: 'default',\n descriptions: {\n title: i18n('move.title'),\n tooltip: i18n('move.description'),\n permission: i18n('move.permission'),\n audit: i18n('move.audit')\n }\n },\n Rename: {\n key: AXPSystemActionType.Rename,\n title: i18n('rename.title'),\n icon: 'fa-light fa-pen',\n color: 'default',\n descriptions: {\n title: i18n('rename.title'),\n tooltip: i18n('rename.description'),\n permission: i18n('rename.permission'),\n audit: i18n('rename.audit')\n }\n },\n Manage: {\n key: AXPSystemActionType.Manage,\n title: i18n('manage.title'),\n icon: 'fa-light fa-gear',\n color: 'default',\n descriptions: {\n title: i18n('manage.title'),\n tooltip: i18n('manage.description'),\n permission: i18n('manage.permission'),\n audit: i18n('manage.audit')\n }\n },\n Info: {\n key: AXPSystemActionType.Info,\n title: i18n('info.title'),\n icon: 'fa-light fa-info',\n color: 'default',\n descriptions: {\n title: i18n('info.title'),\n tooltip: i18n('info.description'),\n permission: i18n('info.permission'),\n audit: i18n('info.audit')\n }\n },\n Confirm: {\n key: AXPSystemActionType.Confirm,\n title: i18n('confirm.title'),\n icon: 'fa-light fa-check',\n color: 'success',\n descriptions: {\n title: i18n('confirm.title'),\n tooltip: i18n('confirm.description'),\n permission: i18n('confirm.permission'),\n audit: i18n('confirm.audit')\n }\n },\n Design: {\n key: AXPSystemActionType.Design,\n title: i18n('design.title'),\n icon: 'fa-light fa-paintbrush',\n color: 'default',\n descriptions: {\n title: i18n('design.title'),\n tooltip: i18n('design.description'),\n permission: i18n('design.permission'),\n audit: i18n('design.audit')\n }\n },\n VersionHistory: {\n key: AXPSystemActionType.VersionHistory,\n title: i18n('version-history.title'),\n icon: 'fa-light fa-history',\n color: 'default',\n descriptions: {\n title: i18n('version-history.title'),\n tooltip: i18n('version-history.description'),\n permission: i18n('version-history.permission'),\n audit: i18n('version-history.audit')\n }\n },\n Compare: {\n key: AXPSystemActionType.Compare,\n title: i18n('compare.title'),\n icon: 'fa-light fa-code-compare',\n color: 'default',\n descriptions: {\n title: i18n('compare.title'),\n tooltip: i18n('compare.description'),\n permission: i18n('compare.permission'),\n audit: i18n('compare.audit')\n }\n },\n Comments: {\n key: AXPSystemActionType.Comments,\n title: i18n('comments.title'),\n icon: 'fa-light fa-comments',\n color: 'default',\n descriptions: {\n title: i18n('comments.title'),\n tooltip: i18n('comments.description'),\n permission: i18n('comments.permission'),\n audit: i18n('comments.audit')\n }\n },\n Sign: {\n key: AXPSystemActionType.Sign,\n title: i18n('sign.title'),\n icon: 'fa-light fa-signature',\n color: 'default',\n descriptions: {\n title: i18n('sign.title'),\n tooltip: i18n('sign.description'),\n permission: i18n('sign.permission'),\n audit: i18n('sign.audit')\n }\n },\n Setup: {\n key: AXPSystemActionType.Setup,\n title: i18n('setup.title'),\n icon: 'fa-light fa-cog',\n color: 'default',\n descriptions: {\n title: i18n('setup.title'),\n tooltip: i18n('setup.description'),\n permission: i18n('setup.permission'),\n audit: i18n('setup.audit')\n }\n },\n Send: {\n key: AXPSystemActionType.Send,\n title: i18n('send.title'),\n icon: 'fa-light fa-envelope',\n color: 'default',\n descriptions: {\n title: i18n('send.title'),\n tooltip: i18n('send.description'),\n permission: i18n('send.permission'),\n audit: i18n('send.audit')\n }\n },\n Report: {\n key: AXPSystemActionType.Report,\n title: i18n('report.title'),\n icon: 'fa-light fa-chart-line',\n color: 'default',\n descriptions: {\n title: i18n('report.title'),\n tooltip: i18n('report.description'),\n permission: i18n('report.permission'),\n audit: i18n('report.audit')\n }\n },\n Sent: {\n key: AXPSystemActionType.Sent,\n title: i18n('sent.title'),\n icon: 'fa-light fa-paper-plane',\n color: 'default',\n descriptions: {\n title: i18n('sent.title'),\n tooltip: i18n('sent.description'),\n permission: i18n('sent.permission'),\n audit: i18n('sent.audit')\n }\n },\n Review: {\n key: AXPSystemActionType.Review,\n title: i18n('review.title'),\n icon: 'fa-light fa-eye',\n color: 'default',\n descriptions: {\n title: i18n('review.title'),\n tooltip: i18n('review.description'),\n permission: i18n('review.permission'),\n audit: i18n('review.audit')\n }\n },\n Generate: {\n key: AXPSystemActionType.Generate,\n title: i18n('generate.title'),\n icon: 'fa-light fa-wand-magic-sparkles',\n color: 'primary',\n descriptions: {\n title: i18n('generate.title'),\n tooltip: i18n('generate.description'),\n permission: i18n('generate.permission'),\n audit: i18n('generate.audit')\n }\n },\n Refresh: {\n key: AXPSystemActionType.Refresh,\n title: i18n('refresh.title'),\n icon: 'fa-light fa-arrows-rotate',\n color: 'default',\n descriptions: {\n title: i18n('refresh.title'),\n tooltip: i18n('refresh.description'),\n permission: i18n('refresh.permission'),\n audit: i18n('refresh.audit')\n }\n },\n Reload: {\n key: AXPSystemActionType.Reload,\n title: i18n('reload.title'),\n icon: 'fa-light fa-arrows-rotate',\n color: 'default',\n descriptions: {\n title: i18n('reload.title'),\n tooltip: i18n('reload.description'),\n permission: i18n('reload.permission'),\n audit: i18n('reload.audit')\n }\n },\n Search: {\n key: AXPSystemActionType.Search,\n title: i18n('search.title'),\n icon: 'fa-light fa-magnifying-glass',\n color: 'default',\n descriptions: {\n title: i18n('search.title'),\n tooltip: i18n('search.description'),\n permission: i18n('search.permission'),\n audit: i18n('search.audit')\n }\n },\n Filter: {\n key: AXPSystemActionType.Filter,\n title: i18n('filter.title'),\n icon: 'fa-light fa-filter',\n color: 'default',\n descriptions: {\n title: i18n('filter.title'),\n tooltip: i18n('filter.description'),\n permission: i18n('filter.permission'),\n audit: i18n('filter.audit')\n }\n },\n Sort: {\n key: AXPSystemActionType.Sort,\n title: i18n('sort.title'),\n icon: 'fa-light fa-arrow-down-up-across-line',\n color: 'default',\n descriptions: {\n title: i18n('sort.title'),\n tooltip: i18n('sort.description'),\n permission: i18n('sort.permission'),\n audit: i18n('sort.audit')\n }\n },\n Start: {\n key: AXPSystemActionType.Start,\n title: i18n('start.title'),\n icon: 'fa-light fa-play',\n color: 'success',\n descriptions: {\n title: i18n('start.title'),\n tooltip: i18n('start.description'),\n permission: i18n('start.permission'),\n audit: i18n('start.audit')\n }\n },\n Stop: {\n key: AXPSystemActionType.Stop,\n title: i18n('stop.title'),\n icon: 'fa-light fa-stop',\n color: 'danger',\n critical: true,\n descriptions: {\n title: i18n('stop.title'),\n tooltip: i18n('stop.description'),\n permission: i18n('stop.permission'),\n audit: i18n('stop.audit')\n }\n },\n Pause: {\n key: AXPSystemActionType.Pause,\n title: i18n('pause.title'),\n icon: 'fa-light fa-pause',\n color: 'warning',\n descriptions: {\n title: i18n('pause.title'),\n tooltip: i18n('pause.description'),\n permission: i18n('pause.permission'),\n audit: i18n('pause.audit')\n }\n },\n Cancel: {\n key: AXPSystemActionType.Cancel,\n title: i18n('cancel.title'),\n icon: 'fa-light fa-xmark',\n critical: true,\n descriptions: {\n title: i18n('cancel.title'),\n tooltip: i18n('cancel.description'),\n permission: i18n('cancel.permission'),\n audit: i18n('cancel.audit')\n }\n },\n Close: {\n key: AXPSystemActionType.Close,\n title: i18n('close.title'),\n icon: 'fa-light fa-xmark',\n color: 'default',\n descriptions: {\n title: i18n('close.title'),\n tooltip: i18n('close.description'),\n permission: i18n('close.permission'),\n audit: i18n('close.audit')\n }\n },\n Complete: {\n key: AXPSystemActionType.Complete,\n title: i18n('complete.title'),\n icon: 'fa-light fa-check',\n color: 'success',\n descriptions: {\n title: i18n('complete.title'),\n tooltip: i18n('complete.description'),\n permission: i18n('complete.permission'),\n audit: i18n('complete.audit')\n }\n },\n Save: {\n key: AXPSystemActionType.Save,\n title: i18n('save.title'),\n icon: 'fa-light fa-floppy-disk',\n color: 'primary',\n descriptions: {\n title: i18n('save.title'),\n tooltip: i18n('save.description'),\n permission: i18n('save.permission'),\n audit: i18n('save.audit')\n }\n },\n SaveAs: {\n key: AXPSystemActionType.SaveAs,\n title: i18n('save-as.title'),\n icon: 'fa-light fa-floppy-disk',\n color: 'default',\n descriptions: {\n title: i18n('save-as.title'),\n tooltip: i18n('save-as.description'),\n permission: i18n('save-as.permission'),\n audit: i18n('save-as.audit')\n }\n },\n Sync: {\n key: AXPSystemActionType.Sync,\n title: i18n('sync.title'),\n icon: 'fa-light fa-arrows-rotate',\n color: 'default',\n descriptions: {\n title: i18n('sync.title'),\n tooltip: i18n('sync.description'),\n permission: i18n('sync.permission'),\n audit: i18n('sync.audit')\n }\n },\n Reset: {\n key: AXPSystemActionType.Reset,\n title: i18n('reset.title'),\n icon: 'fa-light fa-arrow-rotate-left',\n color: 'warning',\n critical: true,\n descriptions: {\n title: i18n('reset.title'),\n tooltip: i18n('reset.description'),\n permission: i18n('reset.permission'),\n audit: i18n('reset.audit')\n }\n },\n Clear: {\n key: AXPSystemActionType.Clear,\n title: i18n('clear.title'),\n icon: 'fa-light fa-eraser',\n color: 'default',\n descriptions: {\n title: i18n('clear.title'),\n tooltip: i18n('clear.description'),\n permission: i18n('clear.permission'),\n audit: i18n('clear.audit')\n }\n },\n Distribution: {\n key: AXPSystemActionType.Distribution,\n title: i18n('distribution.title'),\n icon: 'fa-light fa-share-nodes',\n color: 'default',\n descriptions: {\n title: i18n('distribution.title'),\n tooltip: i18n('distribution.description'),\n permission: i18n('distribution.permission'),\n audit: i18n('distribution.audit')\n }\n },\n});\nexport function getSystemActions(type) {\n return Object.values(AXPSystemActions).find(action => action.key === type);\n}\n/**\n * Resolves the visual appearance (color and icon) for entity actions\n * using the system actions from the core module.\n */\nexport function resolveActionLook(actionType) {\n // Try to get system action first\n const systemActionType = actionType;\n if (systemActionType) {\n const systemAction = getSystemActions(systemActionType);\n if (systemAction) {\n return {\n color: (systemAction.color || 'default'),\n icon: systemAction.icon || ''\n };\n }\n }\n // Fallback for unknown actions\n return {\n color: 'default',\n icon: ''\n };\n}\n/**\n * Resolves the title, description, icon and color for button actions\n * using the system actions from the core module.\n * @param actionType\n * @returns\n */\nexport function getActionButton(actionType) {\n const systemActionType = actionType;\n if (systemActionType) {\n const systemAction = getSystemActions(systemActionType);\n if (systemAction) {\n return {\n name: actionType,\n icon: systemAction.icon || '',\n color: systemAction.color || 'default',\n title: systemAction.title,\n description: systemAction.descriptions.title\n };\n }\n }\n // Fallback for unknown actions\n return {\n name: actionType,\n title: actionType,\n description: `Perform ${actionType} action`,\n icon: '',\n color: 'default'\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL3R5cGVzL2FjdGlvbnMudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyRkc7QUFFSCxNQUFNLENBQU4sSUFBWSxtQkEyRFg7QUEzREQsV0FBWSxtQkFBbUI7SUFDM0Isb0NBQWEsQ0FBQTtJQUNiLHdDQUFpQixDQUFBO0lBQ2pCLHdDQUFpQixDQUFBO0lBQ2pCLHdDQUFpQixDQUFBO0lBQ2pCLDBDQUFtQixDQUFBO0lBQ25CLHdDQUFpQixDQUFBO0lBQ2pCLHdDQUFpQixDQUFBO0lBQ2pCLHdDQUFpQixDQUFBO0lBQ2pCLHdDQUFpQixDQUFBO0lBQ2pCLHNDQUFlLENBQUE7SUFDZix3Q0FBaUIsQ0FBQTtJQUNqQixvQ0FBYSxDQUFBO0lBQ2Isd0NBQWlCLENBQUE7SUFDakIsc0NBQWUsQ0FBQTtJQUNmLDhDQUF1QixDQUFBO0lBQ3ZCLDBDQUFtQixDQUFBO0lBQ25CLDBDQUFtQixDQUFBO0lBQ25CLDhDQUF1QixDQUFBO0lBQ3ZCLDBDQUFtQixDQUFBO0lBQ25CLDBDQUFtQixDQUFBO0lBQ25CLDhDQUF1QixDQUFBO0lBQ3ZCLHdDQUFpQixDQUFBO0lBQ2pCLDRDQUFxQixDQUFBO0lBQ3JCLG9DQUFhLENBQUE7SUFDYixvQ0FBYSxDQUFBO0lBQ2Isd0NBQWlCLENBQUE7SUFDakIsMENBQW1CLENBQUE7SUFDbkIsd0NBQWlCLENBQUE7SUFDakIsb0NBQWEsQ0FBQTtJQUNiLDBDQUFtQixDQUFBO0lBQ25CLHdDQUFpQixDQUFBO0lBQ2pCLHlEQUFrQyxDQUFBO0lBQ2xDLDBDQUFtQixDQUFBO0lBQ25CLDRDQUFx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QUcsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN4RCxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2YsT0FBTztnQkFDSCxJQUFJLEVBQUUsVUFBVTtnQkFDaEIsSUFBSSxFQUFFLFlBQVksQ0FBQyxJQUFJLElBQUksRUFBRTtnQkFDN0IsS0FBSyxFQUFFLFlBQVksQ0FBQyxLQUFLLElBQUksU0FBUztnQkFDdEMsS0FBSyxFQUFFLFlBQVksQ0FBQyxLQUFLO2dCQUN6QixXQUFXLEVBQUUsWUFBWSxDQUFDLFlBQVksQ0FBQyxLQUFLO2FBQy9DLENBQUM7UUFDTixDQUFDO0lBQ0wsQ0FBQztJQUVELCtCQUErQjtJQUMvQixPQUFPO1FBQ0gsSUFBSSxFQUFFLFVBQVU7UUFDaEIsS0FBSyxFQUFFLFVBQVU7UUFDakIsV0FBVyxFQUFFLFdBQVcsVUFBVSxTQUFTO1FBQzNDLElBQUksRUFBRSxFQUFFO1FBQ1IsS0FBSyxFQUFFLFNBQVM7S0FDbkIsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFN0eWxlQ29sb3JUeXBlIH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcblxuLyoqXG4gKiBBZGRpdGlvbmFsIHN1Z2dlc3RlZCBnZW5lcmljIGFjdGlvbnMgZm9yIGZ1dHVyZSBjb25zaWRlcmF0aW9uOlxuICogXG4gKiBEYXRhICYgQ29udGVudCBBY3Rpb25zOlxuICogLSBTZWFyY2ggPSAnc2VhcmNoJyAtIFNlYXJjaCBmdW5jdGlvbmFsaXR5XG4gKiAtIEZpbHRlciA9ICdmaWx0ZXInIC0gQXBwbHkgZmlsdGVyc1xuICogLSBTb3J0ID0gJ3NvcnQnIC0gU29ydCBkYXRhXG4gKiAtIEdyb3VwID0gJ2dyb3VwJyAtIEdyb3VwIGRhdGFcbiAqIC0gRXhwYW5kID0gJ2V4cGFuZCcgLSBFeHBhbmQgZGV0YWlsc1xuICogLSBDb2xsYXBzZSA9ICdjb2xsYXBzZScgLSBDb2xsYXBzZSBkZXRhaWxzXG4gKiAtIFBpbiA9ICdwaW4nIC0gUGluIHRvIGZhdm9yaXRlc1xuICogLSBCb29rbWFyayA9ICdib29rbWFyaycgLSBCb29rbWFyayBpdGVtXG4gKiAtIEZhdm9yaXRlID0gJ2Zhdm9yaXRlJyAtIE1hcmsgYXMgZmF2b3JpdGVcbiAqIC0gU3RhciA9ICdzdGFyJyAtIFN0YXIgcmF0aW5nXG4gKiBcbiAqIFdvcmtmbG93IEFjdGlvbnM6XG4gKiAtIFN0YXJ0ID0gJ3N0YXJ0JyAtIFN0YXJ0IHByb2Nlc3Mvd29ya2Zsb3dcbiAqIC0gU3RvcCA9ICdzdG9wJyAtIFN0b3AgcHJvY2Vzc1xuICogLSBQYXVzZSA9ICdwYXVzZScgLSBQYXVzZSBwcm9jZXNzXG4gKiAtIFJlc3VtZSA9ICdyZXN1bWUnIC0gUmVzdW1lIHByb2Nlc3NcbiAqIC0gQ2FuY2VsID0gJ2NhbmNlbCcgLSBDYW5jZWwgb3BlcmF0aW9uXG4gKiAtIENvbXBsZXRlID0gJ2NvbXBsZXRlJyAtIE1hcmsgYXMgY29tcGxldGVcbiAqIC0gQ2xvc2UgPSAnY2xvc2UnIC0gQ2xvc2UgaXRlbVxuICogLSBSZW9wZW4gPSAncmVvcGVuJyAtIFJlb3BlbiBjbG9zZWQgaXRlbVxuICogLSBGb3J3YXJkID0gJ2ZvcndhcmQnIC0gRm9yd2FyZCB0byBuZXh0IHN0ZXBcbiAqIC0gQmFjayA9ICdiYWNrJyAtIEdvIGJhY2tcbiAqIFxuICogQ29tbXVuaWNhdGlvbiBBY3Rpb25zOlxuICogLSBSZXBseSA9ICdyZXBseScgLSBSZXBseSB0byBtZXNzYWdlXG4gKiAtIEZvcndhcmQgPSAnZm9yd2FyZCcgLSBGb3J3YXJkIG1lc3NhZ2VcbiAqIC0gTm90aWZ5ID0gJ25vdGlmeScgLSBTZW5kIG5vdGlmaWNhdGlvblxuICogLSBJbnZpdGUgPSAnaW52aXRlJyAtIEludml0ZSB1c2VyXG4gKiAtIEpvaW4gPSAnam9pbicgLSBKb2luIGdyb3VwL21lZXRpbmdcbiAqIC0gTGVhdmUgPSAnbGVhdmUnIC0gTGVhdmUgZ3JvdXAvbWVldGluZ1xuICogXG4gKiBTZWN1cml0eSBBY3Rpb25zOlxuICogLSBMb2dpbiA9ICdsb2dpbicgLSBVc2VyIGxvZ2luXG4gKiAtIExvZ291dCA9ICdsb2dvdXQnIC0gVXNlciBsb2dvdXRcbiAqIC0gQmxvY2sgPSAnYmxvY2snIC0gQmxvY2sgdXNlci9jb250ZW50XG4gKiAtIFVuYmxvY2sgPSAndW5ibG9jaycgLSBVbmJsb2NrIHVzZXIvY29udGVudFxuICogLSBCYW4gPSAnYmFuJyAtIEJhbiB1c2VyXG4gKiAtIFVuYmFuID0gJ3VuYmFuJyAtIFVuYmFuIHVzZXJcbiAqIC0gVmVyaWZ5ID0gJ3ZlcmlmeScgLSBWZXJpZnkgaWRlbnRpdHlcbiAqIC0gQXV0aGVudGljYXRlID0gJ2F1dGhlbnRpY2F0ZScgLSBBdXRoZW50aWNhdGVcbiAqIFxuICogRmlsZSAmIE1lZGlhIEFjdGlvbnM6XG4gKiAtIE9wZW4gPSAnb3BlbicgLSBPcGVuIGZpbGVcbiAqIC0gU2F2ZSA9ICdzYXZlJyAtIFNhdmUgZmlsZVxuICogLSBTYXZlQXMgPSAnc2F2ZS1hcycgLSBTYXZlIGFzIG5ldyBmaWxlXG4gKiAtIEF0dGFjaCA9ICdhdHRhY2gnIC0gQXR0YWNoIGZpbGVcbiAqIC0gRGV0YWNoID0gJ2RldGFjaCcgLSBEZXRhY2ggZmlsZVxuICogLSBDb21wcmVzcyA9ICdjb21wcmVzcycgLSBDb21wcmVzcyBmaWxlc1xuICogLSBFeHRyYWN0ID0gJ2V4dHJhY3QnIC0gRXh0cmFjdCBhcmNoaXZlXG4gKiAtIENvbnZlcnQgPSAnY29udmVydCcgLSBDb252ZXJ0IGZvcm1hdFxuICogLSBDcm9wID0gJ2Nyb3AnIC0gQ3JvcCBpbWFnZVxuICogLSBSZXNpemUgPSAncmVzaXplJyAtIFJlc2l6ZSBpbWFnZVxuICogXG4gKiBTeXN0ZW0gQWN0aW9uczpcbiAqIC0gU3luYyA9ICdzeW5jJyAtIFN5bmNocm9uaXplIGRhdGFcbiAqIC0gQmFja3VwID0gJ2JhY2t1cCcgLSBDcmVhdGUgYmFja3VwXG4gKiAtIFJlc3RvcmUgPSAncmVzdG9yZScgLSBSZXN0b3JlIGZyb20gYmFja3VwXG4gKiAtIFJlc2V0ID0gJ3Jlc2V0JyAtIFJlc2V0IHRvIGRlZmF1bHRzXG4gKiAtIENsZWFyID0gJ2NsZWFyJyAtIENsZWFyIGRhdGFcbiAqIC0gT3B0aW1pemUgPSAnb3B0aW1pemUnIC0gT3B0aW1pemUgcGVyZm9ybWFuY2VcbiAqIC0gVXBkYXRlID0gJ3VwZGF0ZScgLSBVcGRhdGUgc3lzdGVtXG4gKiAtIEluc3RhbGwgPSAnaW5zdGFsbCcgLSBJbnN0YWxsIGNvbXBvbmVudFxuICogLSBVbmluc3RhbGwgPSAndW5pbnN0YWxsJyAtIFVuaW5zdGFsbCBjb21wb25lbnRcbiAqIC0gRW5hYmxlID0gJ2VuYWJsZScgLSBFbmFibGUgZmVhdHVyZVxuICogLSBEaXNhYmxlID0gJ2Rpc2FibGUnIC0gRGlzYWJsZSBmZWF0dXJlXG4gKiBcbiAqIEFuYWx5dGljcyAmIE1vbml0b3Jpbmc6XG4gKiAtIE1vbml0b3IgPSAnbW9uaXRvcicgLSBNb25pdG9yIGFjdGl2aXR5XG4gKiAtIFRyYWNrID0gJ3RyYWNrJyAtIFRyYWNrIHByb2dyZXNzXG4gKiAtIEFuYWx5emUgPSAnYW5hbHl6ZScgLSBBbmFseXplIGRhdGFcbiAqIC0gRGVidWcgPSAnZGVidWcnIC0gRGVidWcgaXNzdWVcbiAqIC0gTG9nID0gJ2xvZycgLSBWaWV3IGxvZ3NcbiAqIC0gQWxlcnQgPSAnYWxlcnQnIC0gU2V0IGFsZXJ0XG4gKiAtIERhc2hib2FyZCA9ICdkYXNoYm9hcmQnIC0gVmlldyBkYXNoYm9hcmRcbiAqIC0gTWV0cmljcyA9ICdtZXRyaWNzJyAtIFZpZXcgbWV0cmljc1xuICogXG4gKiBDb2xsYWJvcmF0aW9uIEFjdGlvbnM6XG4gKiAtIENvbGxhYm9yYXRlID0gJ2NvbGxhYm9yYXRlJyAtIFN0YXJ0IGNvbGxhYm9yYXRpb25cbiAqIC0gU2hhcmUgPSAnc2hhcmUnIC0gU2hhcmUgY29udGVudFxuICogLSBDb21tZW50ID0gJ2NvbW1lbnQnIC0gQWRkIGNvbW1lbnRcbiAqIC0gTGlrZSA9ICdsaWtlJyAtIExpa2UgY29udGVudFxuICogLSBGb2xsb3cgPSAnZm9sbG93JyAtIEZvbGxvdyB1c2VyL2NvbnRlbnRcbiAqIC0gU3Vic2NyaWJlID0gJ3N1YnNjcmliZScgLSBTdWJzY3JpYmUgdG8gdXBkYXRlc1xuICogLSBVbnN1YnNjcmliZSA9ICd1bnN1YnNjcmliZScgLSBVbnN1YnNjcmliZVxuICogLSBSYXRlID0gJ3JhdGUnIC0gUmF0ZSBjb250ZW50XG4gKiAtIFJldmlldyA9ICdyZXZpZXcnIC0gUmV2aWV3IGNvbnRlbnRcbiAqIC0gUmVjb21tZW5kID0gJ3JlY29tbWVuZCcgLSBSZWNvbW1lbmQgY29udGVudFxuICovXG5cbmV4cG9ydCBlbnVtIEFYUFN5c3RlbUFjdGlvblR5cGUge1xuICAgIFZpZXcgPSAndmlldycsXG4gICAgQ3JlYXRlID0gJ2NyZWF0ZScsXG4gICAgVXBkYXRlID0gJ3VwZGF0ZScsXG4gICAgRGVsZXRlID0gJ2RlbGV0ZScsXG4gICAgQXBwcm92ZSA9ICdhcHByb3ZlJyxcbiAgICBSZWplY3QgPSAncmVqZWN0JyxcbiAgICBTdWJtaXQgPSAnc3VibWl0JyxcbiAgICBFeHBvcnQgPSAnZXhwb3J0JyxcbiAgICBJbXBvcnQgPSAnaW1wb3J0JyxcbiAgICBQcmludCA9ICdwcmludCcsXG4gICAgQXNzaWduID0gJ2Fzc2lnbicsXG4gICAgTG9jayA9ICdsb2NrJyxcbiAgICBVbmxvY2sgPSAndW5sb2NrJyxcbiAgICBTaGFyZSA9ICdzaGFyZScsXG4gICAgQ29uZmlndXJlID0gJ2NvbmZpZ3VyZScsXG4gICAgUmVvcmRlciA9ICdyZW9yZGVyJyxcbiAgICBQcmV2aWV3ID0gJ3ByZXZpZXcnLFxuICAgIER1cGxpY2F0ZSA9ICdkdXBsaWNhdGUnLFxuICAgIEFyY2hpdmUgPSAnYXJjaGl2ZScsXG4gICAgUHVibGlzaCA9ICdwdWJsaXNoJyxcbiAgICBVbnB1Ymxpc2ggPSAndW5wdWJsaXNoJyxcbiAgICBVcGxvYWQgPSAndXBsb2FkJyxcbiAgICBEb3dubG9hZCA9ICdkb3dubG9hZCcsXG4gICAgQ29weSA9ICdjb3B5JyxcbiAgICBNb3ZlID0gJ21vdmUnLFxuICAgIFJlbmFtZSA9ICdyZW5hbWUnLFxuICAgIFJlc3RvcmUgPSAncmVzdG9yZScsXG4gICAgTWFuYWdlID0gJ21hbmFnZScsXG4gICAgSW5mbyA9ICdpbmZvJyxcbiAgICBDb25maXJtID0gJ2NvbmZpcm0nLFxuICAgIERlc2lnbiA9ICdkZXNpZ24nLFxuICAgIFZlcnNpb25IaXN0b3J5ID0gJ3ZlcnNpb24taGlzdG9yeScsXG4gICAgQ29tcGFyZSA9ICdjb21wYXJlJyxcbiAgICBDb21tZW50cyA9ICdjb21tZW50cycsXG4gICAgU2lnbiA9ICdzaWduJyxcbiAgICBTZXR1cCA9ICdzZXR1cCcsXG4gICAgU2VuZCA9ICdzZW5kJyxcbiAgICBSZXBvcnQgPSAncmVwb3J0JyxcbiAgICBTZW50ID0gJ3NlbnQnLFxuICAgIFJldmlldyA9ICdyZXZpZXcnLFxuICAgIEdlbmVyYXRlID0gJ2dlbmVyYXRlJyxcbiAgICBSZWZyZXNoID0gJ3JlZnJlc2gnLFxuICAgIFJlbG9hZCA9ICdyZWxvYWQnLFxuICAgIFNlYXJjaCA9ICdzZWFyY2gnLFxuICAgIEZpbHRlciA9ICdmaWx0ZXInLFxuICAgIFNvcnQgPSAnc29ydCcsXG4gICAgU3RhcnQgPSAnc3RhcnQnLFxuICAgIFN0b3AgPSAnc3RvcCcsXG4gICAgUGF1c2UgPSAncGF1c2UnLFxuICAgIENhbmNlbCA9ICdjYW5jZWwnLFxuICAgIENsb3NlID0gJ2Nsb3NlJyxcbiAgICBDb21wbGV0ZSA9ICdjb21wbGV0ZScsXG4gICAgU2F2ZSA9ICdzYXZlJyxcbiAgICBTYXZlQXMgPSAnc2F2ZS1hcycsXG4gICAgU3luYyA9ICdzeW5jJyxcbiAgICBSZXNldCA9ICdyZXNldCcsXG4gICAgQ2xlYXIgPSAnY2xlYXInLFxuICAgIERpc3RyaWJ1dGlvbiA9ICdkaXN0cmlidXRpb24nLFxufVxuZXhwb3J0IGludGVyZmFjZSBBWFBTeXN0ZW1BY3Rpb24ge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgaWNvbj86IHN0cmluZztcbiAgICBjb2xvcj86IHN0cmluZztcbiAgICBjcml0aWNhbD86IGJvb2xlYW47XG4gICAgZGVzY3JpcHRpb25zOiB7XG4gICAgICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgICAgIHRvb2x0aXA6IHN0cmluZztcbiAgICAgICAgcGVybWlzc2lvbjogc3RyaW5nO1xuICAgICAgICBhdWRpdDogc3RyaW5nO1xuICAgIH07XG59XG5cbmNvbnN0IGkxOG4gPSAoa2V5OiBzdHJpbmcpID0+IGBAZ2VuZXJhbDphY3Rpb25zLiR7a2V5fWA7XG5cbmV4cG9ydCBjb25zdCBBWFBTeXN0ZW1BY3Rpb25zID0gT2JqZWN0LmZyZWV6ZSh7XG4gICAgVmlldzoge1xuICAgICAgICBrZXk6IEFYUFN5c3RlbUFjdGlvblR5cGUuVmlldyxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ3ZpZXcudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWV5ZScsXG4gICAgICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ3ZpZXcudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ3ZpZXcuZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ3ZpZXcucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ3ZpZXcuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBDcmVhdGU6IHtcbiAgICAgICAga2V5OiBBWFBTeXN0ZW1BY3Rpb25UeXBlLkNyZWF0ZSxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ2NyZWF0ZS50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtcGx1cycsXG4gICAgICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ2NyZWF0ZS50aXRsZScpLFxuICAgICAgICAgICAgdG9vbHRpcDogaTE4bignY3JlYXRlLmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiBpMThuKCdjcmVhdGUucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ2NyZWF0ZS5hdWRpdCcpXG4gICAgICAgIH1cbiAgICB9LFxuICAgIEVkaXQ6IHtcbiAgICAgICAga2V5OiBBWFBTeXN0ZW1BY3Rpb25UeXBlLlVwZGF0ZSxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ2VkaXQudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLXBlbicsXG4gICAgICAgIGNvbG9yOiAnZGVmYXVsdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ2VkaXQudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ2VkaXQuZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ2VkaXQucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ2VkaXQuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBEZWxldGU6IHtcbiAgICAgICAga2V5OiBBWFBTeXN0ZW1BY3Rpb25UeXBlLkRlbGV0ZSxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ2RlbGV0ZS50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtdHJhc2gnLFxuICAgICAgICBjb2xvcjogJ2RhbmdlcicsXG4gICAgICAgIGNyaXRpY2FsOiB0cnVlLFxuICAgICAgICBkZXNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuKCdkZWxldGUudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ2RlbGV0ZS5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bignZGVsZXRlLnBlcm1pc3Npb24nKSxcbiAgICAgICAgICAgIGF1ZGl0OiBpMThuKCdkZWxldGUuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBBcHByb3ZlOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5BcHByb3ZlLFxuICAgICAgICB0aXRsZTogaTE4bignYXBwcm92ZS50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtY2lyY2xlLWNoZWNrJyxcbiAgICAgICAgY29sb3I6ICdzdWNjZXNzJyxcbiAgICAgICAgY3JpdGljYWw6IHRydWUsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ2FwcHJvdmUudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ2FwcHJvdmUuZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ2FwcHJvdmUucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ2FwcHJvdmUuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBTdWJtaXQ6IHtcbiAgICAgICAga2V5OiBBWFBTeXN0ZW1BY3Rpb25UeXBlLlN1Ym1pdCxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ3N1Ym1pdC50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtcGFwZXItcGxhbmUnLFxuICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICBkZXNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuKCdzdWJtaXQudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ3N1Ym1pdC5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bignc3VibWl0LnBlcm1pc3Npb24nKSxcbiAgICAgICAgICAgIGF1ZGl0OiBpMThuKCdzdWJtaXQuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBSZWplY3Q6IHtcbiAgICAgICAga2V5OiBBWFBTeXN0ZW1BY3Rpb25UeXBlLlJlamVjdCxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ3JlamVjdC50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtYmFuJyxcbiAgICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgICBjcml0aWNhbDogdHJ1ZSxcbiAgICAgICAgZGVzY3JpcHRpb25zOiB7XG4gICAgICAgICAgICB0aXRsZTogaTE4bigncmVqZWN0LnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdyZWplY3QuZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ3JlamVjdC5wZXJtaXNzaW9uJyksXG4gICAgICAgICAgICBhdWRpdDogaTE4bigncmVqZWN0LmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgRXhwb3J0OiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5FeHBvcnQsXG4gICAgICAgIHRpdGxlOiBpMThuKCdleHBvcnQudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWRvd25sb2FkJyxcbiAgICAgICAgY29sb3I6ICdkZWZhdWx0JyxcbiAgICAgICAgZGVzY3JpcHRpb25zOiB7XG4gICAgICAgICAgICB0aXRsZTogaTE4bignZXhwb3J0LnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdleHBvcnQuZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ2V4cG9ydC5wZXJtaXNzaW9uJyksXG4gICAgICAgICAgICBhdWRpdDogaTE4bignZXhwb3J0LmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgSW1wb3J0OiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5JbXBvcnQsXG4gICAgICAgIHRpdGxlOiBpMThuKCdpbXBvcnQudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLXVwbG9hZCcsXG4gICAgICAgIGNvbG9yOiAnZGVmYXVsdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ2ltcG9ydC50aXRsZScpLFxuICAgICAgICAgICAgdG9vbHRpcDogaTE4bignaW1wb3J0LmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiBpMThuKCdpbXBvcnQucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ2ltcG9ydC5hdWRpdCcpXG4gICAgICAgIH1cbiAgICB9LFxuICAgIFByaW50OiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5QcmludCxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ3ByaW50LnRpdGxlJyksXG4gICAgICAgIGljb246ICdmYS1saWdodCBmYS1wcmludCcsXG4gICAgICAgIGNvbG9yOiAnZGVmYXVsdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ3ByaW50LnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdwcmludC5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bigncHJpbnQucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ3ByaW50LmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgRHVwbGljYXRlOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5EdXBsaWNhdGUsXG4gICAgICAgIHRpdGxlOiBpMThuKCdkdXBsaWNhdGUudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWNsb25lJyxcbiAgICAgICAgY29sb3I6ICd3YXJuaW5nJyxcbiAgICAgICAgZGVzY3JpcHRpb25zOiB7XG4gICAgICAgICAgICB0aXRsZTogaTE4bignZHVwbGljYXRlLnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdkdXBsaWNhdGUuZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ2R1cGxpY2F0ZS5wZXJtaXNzaW9uJyksXG4gICAgICAgICAgICBhdWRpdDogaTE4bignZHVwbGljYXRlLmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgQXJjaGl2ZToge1xuICAgICAgICBrZXk6IEFYUFN5c3RlbUFjdGlvblR5cGUuQXJjaGl2ZSxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ2FyY2hpdmUudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWJveC1hcmNoaXZlJyxcbiAgICAgICAgY29sb3I6ICdkZWZhdWx0JyxcbiAgICAgICAgZGVzY3JpcHRpb25zOiB7XG4gICAgICAgICAgICB0aXRsZTogaTE4bignYXJjaGl2ZS50aXRsZScpLFxuICAgICAgICAgICAgdG9vbHRpcDogaTE4bignYXJjaGl2ZS5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bignYXJjaGl2ZS5wZXJtaXNzaW9uJyksXG4gICAgICAgICAgICBhdWRpdDogaTE4bignYXJjaGl2ZS5hdWRpdCcpXG4gICAgICAgIH1cbiAgICB9LFxuICAgIFJlc3RvcmU6IHtcbiAgICAgICAga2V5OiBBWFBTeXN0ZW1BY3Rpb25UeXBlLlJlc3RvcmUsXG4gICAgICAgIHRpdGxlOiBpMThuKCdyZXN0b3JlLnRpdGxlJyksXG4gICAgICAgIGljb246ICdmYS1saWdodCBmYS1hcnJvdy1yb3RhdGUtbGVmdCcsXG4gICAgICAgIGNvbG9yOiAnZGVmYXVsdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ3Jlc3RvcmUudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ3Jlc3RvcmUuZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ3Jlc3RvcmUucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ3Jlc3RvcmUuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBBc3NpZ246IHtcbiAgICAgICAga2V5OiBBWFBTeXN0ZW1BY3Rpb25UeXBlLkFzc2lnbixcbiAgICAgICAgdGl0bGU6IGkxOG4oJ2Fzc2lnbi50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtdXNlci1wbHVzJyxcbiAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgICAgZGVzY3JpcHRpb25zOiB7XG4gICAgICAgICAgICB0aXRsZTogaTE4bignYXNzaWduLnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdhc3NpZ24uZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ2Fzc2lnbi5wZXJtaXNzaW9uJyksXG4gICAgICAgICAgICBhdWRpdDogaTE4bignYXNzaWduLmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgTG9jazoge1xuICAgICAgICBrZXk6IEFYUFN5c3RlbUFjdGlvblR5cGUuTG9jayxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ2xvY2sudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWxvY2snLFxuICAgICAgICBjb2xvcjogJ3dhcm5pbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuKCdsb2NrLnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdsb2NrLmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiBpMThuKCdsb2NrLnBlcm1pc3Npb24nKSxcbiAgICAgICAgICAgIGF1ZGl0OiBpMThuKCdsb2NrLmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgVW5sb2NrOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5VbmxvY2ssXG4gICAgICAgIHRpdGxlOiBpMThuKCd1bmxvY2sudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLXVubG9jaycsXG4gICAgICAgIGNvbG9yOiAnc3VjY2VzcycsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ3VubG9jay50aXRsZScpLFxuICAgICAgICAgICAgdG9vbHRpcDogaTE4bigndW5sb2NrLmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiBpMThuKCd1bmxvY2sucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ3VubG9jay5hdWRpdCcpXG4gICAgICAgIH1cbiAgICB9LFxuICAgIFNoYXJlOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5TaGFyZSxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ3NoYXJlLnRpdGxlJyksXG4gICAgICAgIGljb246ICdmYS1saWdodCBmYS1zaGFyZS1ub2RlcycsXG4gICAgICAgIGNvbG9yOiAnaW5mbycsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ3NoYXJlLnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdzaGFyZS5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bignc2hhcmUucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ3NoYXJlLmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgQ29uZmlndXJlOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5Db25maWd1cmUsXG4gICAgICAgIHRpdGxlOiBpMThuKCdjb25maWd1cmUudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLXNsaWRlcnMnLFxuICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICBkZXNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuKCdjb25maWd1cmUudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ2NvbmZpZ3VyZS5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bignY29uZmlndXJlLnBlcm1pc3Npb24nKSxcbiAgICAgICAgICAgIGF1ZGl0OiBpMThuKCdjb25maWd1cmUuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBSZW9yZGVyOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5SZW9yZGVyLFxuICAgICAgICB0aXRsZTogaTE4bigncmVvcmRlci50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtYXJyb3ctZG93bi11cC1hY3Jvc3MtbGluZScsXG4gICAgICAgIGNvbG9yOiAnZGVmYXVsdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ3Jlb3JkZXIudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ3Jlb3JkZXIuZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ3Jlb3JkZXIucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ3Jlb3JkZXIuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBQcmV2aWV3OiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5QcmV2aWV3LFxuICAgICAgICB0aXRsZTogaTE4bigncHJldmlldy50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtbWFnbmlmeWluZy1nbGFzcycsXG4gICAgICAgIGNvbG9yOiAnZGVmYXVsdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ3ByZXZpZXcudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ3ByZXZpZXcuZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ3ByZXZpZXcucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ3ByZXZpZXcuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBQdWJsaXNoOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5QdWJsaXNoLFxuICAgICAgICB0aXRsZTogaTE4bigncHVibGlzaC50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtZ2xvYmUnLFxuICAgICAgICBjb2xvcjogJ3N1Y2Nlc3MnLFxuICAgICAgICBkZXNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuKCdwdWJsaXNoLnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdwdWJsaXNoLmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiBpMThuKCdwdWJsaXNoLnBlcm1pc3Npb24nKSxcbiAgICAgICAgICAgIGF1ZGl0OiBpMThuKCdwdWJsaXNoLmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgVW5wdWJsaXNoOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5VbnB1Ymxpc2gsXG4gICAgICAgIHRpdGxlOiBpMThuKCd1bnB1Ymxpc2gudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWdsb2JlLXNsYXNoJyxcbiAgICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgICBkZXNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuKCd1bnB1Ymxpc2gudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ3VucHVibGlzaC5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bigndW5wdWJsaXNoLnBlcm1pc3Npb24nKSxcbiAgICAgICAgICAgIGF1ZGl0OiBpMThuKCd1bnB1Ymxpc2guYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBVcGxvYWQ6IHtcbiAgICAgICAga2V5OiBBWFBTeXN0ZW1BY3Rpb25UeXBlLlVwbG9hZCxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ3VwbG9hZC50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtdXBsb2FkJyxcbiAgICAgICAgY29sb3I6ICdkZWZhdWx0JyxcbiAgICAgICAgZGVzY3JpcHRpb25zOiB7XG4gICAgICAgICAgICB0aXRsZTogaTE4bigndXBsb2FkLnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCd1cGxvYWQuZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ3VwbG9hZC5wZXJtaXNzaW9uJyksXG4gICAgICAgICAgICBhdWRpdDogaTE4bigndXBsb2FkLmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgRG93bmxvYWQ6IHtcbiAgICAgICAga2V5OiBBWFBTeXN0ZW1BY3Rpb25UeXBlLkRvd25sb2FkLFxuICAgICAgICB0aXRsZTogaTE4bignZG93bmxvYWQudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWRvd25sb2FkJyxcbiAgICAgICAgY29sb3I6ICdkZWZhdWx0JyxcbiAgICAgICAgZGVzY3JpcHRpb25zOiB7XG4gICAgICAgICAgICB0aXRsZTogaTE4bignZG93bmxvYWQudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ2Rvd25sb2FkLmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiBpMThuKCdkb3dubG9hZC5wZXJtaXNzaW9uJyksXG4gICAgICAgICAgICBhdWRpdDogaTE4bignZG93bmxvYWQuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBDb3B5OiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5Db3B5LFxuICAgICAgICB0aXRsZTogaTE4bignY29weS50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtY29weScsXG4gICAgICAgIGNvbG9yOiAnZGVmYXVsdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ2NvcHkudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ2NvcHkuZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ2NvcHkucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ2NvcHkuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBNb3ZlOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5Nb3ZlLFxuICAgICAgICB0aXRsZTogaTE4bignbW92ZS50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtYXJyb3ctcmlnaHQtYXJyb3ctbGVmdCcsXG4gICAgICAgIGNvbG9yOiAnZGVmYXVsdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ21vdmUudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ21vdmUuZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ21vdmUucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ21vdmUuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBSZW5hbWU6IHtcbiAgICAgICAga2V5OiBBWFBTeXN0ZW1BY3Rpb25UeXBlLlJlbmFtZSxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ3JlbmFtZS50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtcGVuJyxcbiAgICAgICAgY29sb3I6ICdkZWZhdWx0JyxcbiAgICAgICAgZGVzY3JpcHRpb25zOiB7XG4gICAgICAgICAgICB0aXRsZTogaTE4bigncmVuYW1lLnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdyZW5hbWUuZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ3JlbmFtZS5wZXJtaXNzaW9uJyksXG4gICAgICAgICAgICBhdWRpdDogaTE4bigncmVuYW1lLmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgTWFuYWdlOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5NYW5hZ2UsXG4gICAgICAgIHRpdGxlOiBpMThuKCdtYW5hZ2UudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWdlYXInLFxuICAgICAgICBjb2xvcjogJ2RlZmF1bHQnLFxuICAgICAgICBkZXNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuKCdtYW5hZ2UudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ21hbmFnZS5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bignbWFuYWdlLnBlcm1pc3Npb24nKSxcbiAgICAgICAgICAgIGF1ZGl0OiBpMThuKCdtYW5hZ2UuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBJbmZvOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5JbmZvLFxuICAgICAgICB0aXRsZTogaTE4bignaW5mby50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtaW5mbycsXG4gICAgICAgIGNvbG9yOiAnZGVmYXVsdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ2luZm8udGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ2luZm8uZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ2luZm8ucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ2luZm8uYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBDb25maXJtOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5Db25maXJtLFxuICAgICAgICB0aXRsZTogaTE4bignY29uZmlybS50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtY2hlY2snLFxuICAgICAgICBjb2xvcjogJ3N1Y2Nlc3MnLFxuICAgICAgICBkZXNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuKCdjb25maXJtLnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdjb25maXJtLmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiBpMThuKCdjb25maXJtLnBlcm1pc3Npb24nKSxcbiAgICAgICAgICAgIGF1ZGl0OiBpMThuKCdjb25maXJtLmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgRGVzaWduOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5EZXNpZ24sXG4gICAgICAgIHRpdGxlOiBpMThuKCdkZXNpZ24udGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLXBhaW50YnJ1c2gnLFxuICAgICAgICBjb2xvcjogJ2RlZmF1bHQnLFxuICAgICAgICBkZXNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuKCdkZXNpZ24udGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ2Rlc2lnbi5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bignZGVzaWduLnBlcm1pc3Npb24nKSxcbiAgICAgICAgICAgIGF1ZGl0OiBpMThuKCdkZXNpZ24uYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBWZXJzaW9uSGlzdG9yeToge1xuICAgICAgICBrZXk6IEFYUFN5c3RlbUFjdGlvblR5cGUuVmVyc2lvbkhpc3RvcnksXG4gICAgICAgIHRpdGxlOiBpMThuKCd2ZXJzaW9uLWhpc3RvcnkudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWhpc3RvcnknLFxuICAgICAgICBjb2xvcjogJ2RlZmF1bHQnLFxuICAgICAgICBkZXNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuKCd2ZXJzaW9uLWhpc3RvcnkudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ3ZlcnNpb24taGlzdG9yeS5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bigndmVyc2lvbi1oaXN0b3J5LnBlcm1pc3Npb24nKSxcbiAgICAgICAgICAgIGF1ZGl0OiBpMThuKCd2ZXJzaW9uLWhpc3RvcnkuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBDb21wYXJlOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5Db21wYXJlLFxuICAgICAgICB0aXRsZTogaTE4bignY29tcGFyZS50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtY29kZS1jb21wYXJlJyxcbiAgICAgICAgY29sb3I6ICdkZWZhdWx0JyxcbiAgICAgICAgZGVzY3JpcHRpb25zOiB7XG4gICAgICAgICAgICB0aXRsZTogaTE4bignY29tcGFyZS50aXRsZScpLFxuICAgICAgICAgICAgdG9vbHRpcDogaTE4bignY29tcGFyZS5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bignY29tcGFyZS5wZXJtaXNzaW9uJyksXG4gICAgICAgICAgICBhdWRpdDogaTE4bignY29tcGFyZS5hdWRpdCcpXG4gICAgICAgIH1cbiAgICB9LFxuICAgIENvbW1lbnRzOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5Db21tZW50cyxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ2NvbW1lbnRzLnRpdGxlJyksXG4gICAgICAgIGljb246ICdmYS1saWdodCBmYS1jb21tZW50cycsXG4gICAgICAgIGNvbG9yOiAnZGVmYXVsdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ2NvbW1lbnRzLnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdjb21tZW50cy5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bignY29tbWVudHMucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ2NvbW1lbnRzLmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgU2lnbjoge1xuICAgICAgICBrZXk6IEFYUFN5c3RlbUFjdGlvblR5cGUuU2lnbixcbiAgICAgICAgdGl0bGU6IGkxOG4oJ3NpZ24udGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLXNpZ25hdHVyZScsXG4gICAgICAgIGNvbG9yOiAnZGVmYXVsdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ3NpZ24udGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ3NpZ24uZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ3NpZ24ucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ3NpZ24uYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBTZXR1cDoge1xuICAgICAgICBrZXk6IEFYUFN5c3RlbUFjdGlvblR5cGUuU2V0dXAsXG4gICAgICAgIHRpdGxlOiBpMThuKCdzZXR1cC50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtY29nJyxcbiAgICAgICAgY29sb3I6ICdkZWZhdWx0JyxcbiAgICAgICAgZGVzY3JpcHRpb25zOiB7XG4gICAgICAgICAgICB0aXRsZTogaTE4bignc2V0dXAudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ3NldHVwLmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiBpMThuKCdzZXR1cC5wZXJtaXNzaW9uJyksXG4gICAgICAgICAgICBhdWRpdDogaTE4bignc2V0dXAuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBTZW5kOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5TZW5kLFxuICAgICAgICB0aXRsZTogaTE4bignc2VuZC50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtZW52ZWxvcGUnLFxuICAgICAgICBjb2xvcjogJ2RlZmF1bHQnLFxuICAgICAgICBkZXNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuKCdzZW5kLnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdzZW5kLmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiBpMThuKCdzZW5kLnBlcm1pc3Npb24nKSxcbiAgICAgICAgICAgIGF1ZGl0OiBpMThuKCdzZW5kLmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgUmVwb3J0OiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5SZXBvcnQsXG4gICAgICAgIHRpdGxlOiBpMThuKCdyZXBvcnQudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWNoYXJ0LWxpbmUnLFxuICAgICAgICBjb2xvcjogJ2RlZmF1bHQnLFxuICAgICAgICBkZXNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuKCdyZXBvcnQudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ3JlcG9ydC5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bigncmVwb3J0LnBlcm1pc3Npb24nKSxcbiAgICAgICAgICAgIGF1ZGl0OiBpMThuKCdyZXBvcnQuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBTZW50OiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5TZW50LFxuICAgICAgICB0aXRsZTogaTE4bignc2VudC50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtcGFwZXItcGxhbmUnLFxuICAgICAgICBjb2xvcjogJ2RlZmF1bHQnLFxuICAgICAgICBkZXNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuKCdzZW50LnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdzZW50LmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiBpMThuKCdzZW50LnBlcm1pc3Npb24nKSxcbiAgICAgICAgICAgIGF1ZGl0OiBpMThuKCdzZW50LmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgUmV2aWV3OiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5SZXZpZXcsXG4gICAgICAgIHRpdGxlOiBpMThuKCdyZXZpZXcudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWV5ZScsXG4gICAgICAgIGNvbG9yOiAnZGVmYXVsdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ3Jldmlldy50aXRsZScpLFxuICAgICAgICAgICAgdG9vbHRpcDogaTE4bigncmV2aWV3LmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiBpMThuKCdyZXZpZXcucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ3Jldmlldy5hdWRpdCcpXG4gICAgICAgIH1cbiAgICB9LFxuICAgIEdlbmVyYXRlOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5HZW5lcmF0ZSxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ2dlbmVyYXRlLnRpdGxlJyksXG4gICAgICAgIGljb246ICdmYS1saWdodCBmYS13YW5kLW1hZ2ljLXNwYXJrbGVzJyxcbiAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgICAgZGVzY3JpcHRpb25zOiB7XG4gICAgICAgICAgICB0aXRsZTogaTE4bignZ2VuZXJhdGUudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ2dlbmVyYXRlLmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiBpMThuKCdnZW5lcmF0ZS5wZXJtaXNzaW9uJyksXG4gICAgICAgICAgICBhdWRpdDogaTE4bignZ2VuZXJhdGUuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBSZWZyZXNoOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5SZWZyZXNoLFxuICAgICAgICB0aXRsZTogaTE4bigncmVmcmVzaC50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtYXJyb3dzLXJvdGF0ZScsXG4gICAgICAgIGNvbG9yOiAnZGVmYXVsdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ3JlZnJlc2gudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ3JlZnJlc2guZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ3JlZnJlc2gucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ3JlZnJlc2guYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBSZWxvYWQ6IHtcbiAgICAgICAga2V5OiBBWFBTeXN0ZW1BY3Rpb25UeXBlLlJlbG9hZCxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ3JlbG9hZC50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtYXJyb3dzLXJvdGF0ZScsXG4gICAgICAgIGNvbG9yOiAnZGVmYXVsdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ3JlbG9hZC50aXRsZScpLFxuICAgICAgICAgICAgdG9vbHRpcDogaTE4bigncmVsb2FkLmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiBpMThuKCdyZWxvYWQucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ3JlbG9hZC5hdWRpdCcpXG4gICAgICAgIH1cbiAgICB9LFxuICAgIFNlYXJjaDoge1xuICAgICAgICBrZXk6IEFYUFN5c3RlbUFjdGlvblR5cGUuU2VhcmNoLFxuICAgICAgICB0aXRsZTogaTE4bignc2VhcmNoLnRpdGxlJyksXG4gICAgICAgIGljb246ICdmYS1saWdodCBmYS1tYWduaWZ5aW5nLWdsYXNzJyxcbiAgICAgICAgY29sb3I6ICdkZWZhdWx0JyxcbiAgICAgICAgZGVzY3JpcHRpb25zOiB7XG4gICAgICAgICAgICB0aXRsZTogaTE4bignc2VhcmNoLnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdzZWFyY2guZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ3NlYXJjaC5wZXJtaXNzaW9uJyksXG4gICAgICAgICAgICBhdWRpdDogaTE4bignc2VhcmNoLmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgRmlsdGVyOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5GaWx0ZXIsXG4gICAgICAgIHRpdGxlOiBpMThuKCdmaWx0ZXIudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWZpbHRlcicsXG4gICAgICAgIGNvbG9yOiAnZGVmYXVsdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ2ZpbHRlci50aXRsZScpLFxuICAgICAgICAgICAgdG9vbHRpcDogaTE4bignZmlsdGVyLmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiBpMThuKCdmaWx0ZXIucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ2ZpbHRlci5hdWRpdCcpXG4gICAgICAgIH1cbiAgICB9LFxuICAgIFNvcnQ6IHtcbiAgICAgICAga2V5OiBBWFBTeXN0ZW1BY3Rpb25UeXBlLlNvcnQsXG4gICAgICAgIHRpdGxlOiBpMThuKCdzb3J0LnRpdGxlJyksXG4gICAgICAgIGljb246ICdmYS1saWdodCBmYS1hcnJvdy1kb3duLXVwLWFjcm9zcy1saW5lJyxcbiAgICAgICAgY29sb3I6ICdkZWZhdWx0JyxcbiAgICAgICAgZGVzY3JpcHRpb25zOiB7XG4gICAgICAgICAgICB0aXRsZTogaTE4bignc29ydC50aXRsZScpLFxuICAgICAgICAgICAgdG9vbHRpcDogaTE4bignc29ydC5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bignc29ydC5wZXJtaXNzaW9uJyksXG4gICAgICAgICAgICBhdWRpdDogaTE4bignc29ydC5hdWRpdCcpXG4gICAgICAgIH1cbiAgICB9LFxuICAgIFN0YXJ0OiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5TdGFydCxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ3N0YXJ0LnRpdGxlJyksXG4gICAgICAgIGljb246ICdmYS1saWdodCBmYS1wbGF5JyxcbiAgICAgICAgY29sb3I6ICdzdWNjZXNzJyxcbiAgICAgICAgZGVzY3JpcHRpb25zOiB7XG4gICAgICAgICAgICB0aXRsZTogaTE4bignc3RhcnQudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ3N0YXJ0LmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiBpMThuKCdzdGFydC5wZXJtaXNzaW9uJyksXG4gICAgICAgICAgICBhdWRpdDogaTE4bignc3RhcnQuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBTdG9wOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5TdG9wLFxuICAgICAgICB0aXRsZTogaTE4bignc3RvcC50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtc3RvcCcsXG4gICAgICAgIGNvbG9yOiAnZGFuZ2VyJyxcbiAgICAgICAgY3JpdGljYWw6IHRydWUsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ3N0b3AudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ3N0b3AuZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ3N0b3AucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ3N0b3AuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBQYXVzZToge1xuICAgICAgICBrZXk6IEFYUFN5c3RlbUFjdGlvblR5cGUuUGF1c2UsXG4gICAgICAgIHRpdGxlOiBpMThuKCdwYXVzZS50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtcGF1c2UnLFxuICAgICAgICBjb2xvcjogJ3dhcm5pbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuKCdwYXVzZS50aXRsZScpLFxuICAgICAgICAgICAgdG9vbHRpcDogaTE4bigncGF1c2UuZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ3BhdXNlLnBlcm1pc3Npb24nKSxcbiAgICAgICAgICAgIGF1ZGl0OiBpMThuKCdwYXVzZS5hdWRpdCcpXG4gICAgICAgIH1cbiAgICB9LFxuICAgIENhbmNlbDoge1xuICAgICAgICBrZXk6IEFYUFN5c3RlbUFjdGlvblR5cGUuQ2FuY2VsLFxuICAgICAgICB0aXRsZTogaTE4bignY2FuY2VsLnRpdGxlJyksXG4gICAgICAgIGljb246ICdmYS1saWdodCBmYS14bWFyaycsXG4gICAgICAgIGNyaXRpY2FsOiB0cnVlLFxuICAgICAgICBkZXNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuKCdjYW5jZWwudGl0bGUnKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGkxOG4oJ2NhbmNlbC5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bignY2FuY2VsLnBlcm1pc3Npb24nKSxcbiAgICAgICAgICAgIGF1ZGl0OiBpMThuKCdjYW5jZWwuYXVkaXQnKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBDbG9zZToge1xuICAgICAgICBrZXk6IEFYUFN5c3RlbUFjdGlvblR5cGUuQ2xvc2UsXG4gICAgICAgIHRpdGxlOiBpMThuKCdjbG9zZS50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEteG1hcmsnLFxuICAgICAgICBjb2xvcjogJ2RlZmF1bHQnLFxuICAgICAgICBkZXNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuKCdjbG9zZS50aXRsZScpLFxuICAgICAgICAgICAgdG9vbHRpcDogaTE4bignY2xvc2UuZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ2Nsb3NlLnBlcm1pc3Npb24nKSxcbiAgICAgICAgICAgIGF1ZGl0OiBpMThuKCdjbG9zZS5hdWRpdCcpXG4gICAgICAgIH1cbiAgICB9LFxuICAgIENvbXBsZXRlOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5Db21wbGV0ZSxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ2NvbXBsZXRlLnRpdGxlJyksXG4gICAgICAgIGljb246ICdmYS1saWdodCBmYS1jaGVjaycsXG4gICAgICAgIGNvbG9yOiAnc3VjY2VzcycsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ2NvbXBsZXRlLnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdjb21wbGV0ZS5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bignY29tcGxldGUucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ2NvbXBsZXRlLmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgU2F2ZToge1xuICAgICAgICBrZXk6IEFYUFN5c3RlbUFjdGlvblR5cGUuU2F2ZSxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ3NhdmUudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWZsb3BweS1kaXNrJyxcbiAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgICAgZGVzY3JpcHRpb25zOiB7XG4gICAgICAgICAgICB0aXRsZTogaTE4bignc2F2ZS50aXRsZScpLFxuICAgICAgICAgICAgdG9vbHRpcDogaTE4bignc2F2ZS5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bignc2F2ZS5wZXJtaXNzaW9uJyksXG4gICAgICAgICAgICBhdWRpdDogaTE4bignc2F2ZS5hdWRpdCcpXG4gICAgICAgIH1cbiAgICB9LFxuICAgIFNhdmVBczoge1xuICAgICAgICBrZXk6IEFYUFN5c3RlbUFjdGlvblR5cGUuU2F2ZUFzLFxuICAgICAgICB0aXRsZTogaTE4bignc2F2ZS1hcy50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtZmxvcHB5LWRpc2snLFxuICAgICAgICBjb2xvcjogJ2RlZmF1bHQnLFxuICAgICAgICBkZXNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuKCdzYXZlLWFzLnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdzYXZlLWFzLmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiBpMThuKCdzYXZlLWFzLnBlcm1pc3Npb24nKSxcbiAgICAgICAgICAgIGF1ZGl0OiBpMThuKCdzYXZlLWFzLmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgU3luYzoge1xuICAgICAgICBrZXk6IEFYUFN5c3RlbUFjdGlvblR5cGUuU3luYyxcbiAgICAgICAgdGl0bGU6IGkxOG4oJ3N5bmMudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWFycm93cy1yb3RhdGUnLFxuICAgICAgICBjb2xvcjogJ2RlZmF1bHQnLFxuICAgICAgICBkZXNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuKCdzeW5jLnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdzeW5jLmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiBpMThuKCdzeW5jLnBlcm1pc3Npb24nKSxcbiAgICAgICAgICAgIGF1ZGl0OiBpMThuKCdzeW5jLmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgUmVzZXQ6IHtcbiAgICAgICAga2V5OiBBWFBTeXN0ZW1BY3Rpb25UeXBlLlJlc2V0LFxuICAgICAgICB0aXRsZTogaTE4bigncmVzZXQudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWFycm93LXJvdGF0ZS1sZWZ0JyxcbiAgICAgICAgY29sb3I6ICd3YXJuaW5nJyxcbiAgICAgICAgY3JpdGljYWw6IHRydWUsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ3Jlc2V0LnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdyZXNldC5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bigncmVzZXQucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ3Jlc2V0LmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgQ2xlYXI6IHtcbiAgICAgICAga2V5OiBBWFBTeXN0ZW1BY3Rpb25UeXBlLkNsZWFyLFxuICAgICAgICB0aXRsZTogaTE4bignY2xlYXIudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWVyYXNlcicsXG4gICAgICAgIGNvbG9yOiAnZGVmYXVsdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uczoge1xuICAgICAgICAgICAgdGl0bGU6IGkxOG4oJ2NsZWFyLnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdjbGVhci5kZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogaTE4bignY2xlYXIucGVybWlzc2lvbicpLFxuICAgICAgICAgICAgYXVkaXQ6IGkxOG4oJ2NsZWFyLmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG4gICAgRGlzdHJpYnV0aW9uOiB7XG4gICAgICAgIGtleTogQVhQU3lzdGVtQWN0aW9uVHlwZS5EaXN0cmlidXRpb24sXG4gICAgICAgIHRpdGxlOiBpMThuKCdkaXN0cmlidXRpb24udGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLXNoYXJlLW5vZGVzJyxcbiAgICAgICAgY29sb3I6ICdkZWZhdWx0JyxcbiAgICAgICAgZGVzY3JpcHRpb25zOiB7XG4gICAgICAgICAgICB0aXRsZTogaTE4bignZGlzdHJpYnV0aW9uLnRpdGxlJyksXG4gICAgICAgICAgICB0b29sdGlwOiBpMThuKCdkaXN0cmlidXRpb24uZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGkxOG4oJ2Rpc3RyaWJ1dGlvbi5wZXJtaXNzaW9uJyksXG4gICAgICAgICAgICBhdWRpdDogaTE4bignZGlzdHJpYnV0aW9uLmF1ZGl0JylcbiAgICAgICAgfVxuICAgIH0sXG5cbn0gYXMgY29uc3Qgc2F0aXNmaWVzIFJlY29yZDxzdHJpbmcsIEFYUFN5c3RlbUFjdGlvbj4pO1xuXG5cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFN5c3RlbUFjdGlvbnModHlwZTogQVhQU3lzdGVtQWN0aW9uVHlwZSk6IEFYUFN5c3RlbUFjdGlvbiB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoQVhQU3lzdGVtQWN0aW9ucykuZmluZChhY3Rpb24gPT4gYWN0aW9uLmtleSA9PT0gdHlwZSkgYXMgQVhQU3lzdGVtQWN0aW9uO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHRoZSB2aXN1YWwgYXBwZWFyYW5jZSAoY29sb3IgYW5kIGljb24pIGZvciBlbnRpdHkgYWN0aW9uc1xuICogdXNpbmcgdGhlIHN5c3RlbSBhY3Rpb25zIGZyb20gdGhlIGNvcmUgbW9kdWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUFjdGlvbkxvb2soYWN0aW9uVHlwZTogc3RyaW5nKTogeyBjb2xvcjogQVhTdHlsZUNvbG9yVHlwZTsgaWNvbjogc3RyaW5nIH0ge1xuICAgIC8vIFRyeSB0byBnZXQgc3lzdGVtIGFjdGlvbiBmaXJzdFxuICAgIGNvbnN0IHN5c3RlbUFjdGlvblR5cGUgPSBhY3Rpb25UeXBlIGFzIEFYUFN5c3RlbUFjdGlvblR5cGU7XG4gICAgaWYgKHN5c3RlbUFjdGlvblR5cGUpIHtcbiAgICAgICAgY29uc3Qgc3lzdGVtQWN0aW9uID0gZ2V0U3lzdGVtQWN0aW9ucyhzeXN0ZW1BY3Rpb25UeXBlKTtcbiAgICAgICAgaWYgKHN5c3RlbUFjdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogKHN5c3RlbUFjdGlvbi5jb2xvciB8fCAnZGVmYXVsdCcpIGFzIEFYU3R5bGVDb2xvclR5cGUsXG4gICAgICAgICAgICAgICAgaWNvbjogc3lzdGVtQWN0aW9uLmljb24gfHwgJydcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGYWxsYmFjayBmb3IgdW5rbm93biBhY3Rpb25zXG4gICAgcmV0dXJuIHtcbiAgICAgICAgY29sb3I6ICdkZWZhdWx0JyBhcyBBWFN0eWxlQ29sb3JUeXBlLFxuICAgICAgICBpY29uOiAnJ1xuICAgIH07XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIHRpdGxlLCBkZXNjcmlwdGlvbiwgaWNvbiBhbmQgY29sb3IgZm9yIGJ1dHRvbiBhY3Rpb25zXG4gKiB1c2luZyB0aGUgc3lzdGVtIGFjdGlvbnMgZnJvbSB0aGUgY29yZSBtb2R1bGUuXG4gKiBAcGFyYW0gYWN0aW9uVHlwZSBcbiAqIEByZXR1cm5zIFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWN0aW9uQnV0dG9uKGFjdGlvblR5cGU6IHN0cmluZyk6IHsgbmFtZTogc3RyaW5nOyB0aXRsZTogc3RyaW5nOyBkZXNjcmlwdGlvbjogc3RyaW5nLCBpY29uOiBzdHJpbmcsIGNvbG9yOiBzdHJpbmcgfSB7XG4gICAgY29uc3Qgc3lzdGVtQWN0aW9uVHlwZSA9IGFjdGlvblR5cGUgYXMgQVhQU3lzdGVtQWN0aW9uVHlwZTtcbiAgICBpZiAoc3lzdGVtQWN0aW9uVHlwZSkge1xuICAgICAgICBjb25zdCBzeXN0ZW1BY3Rpb24gPSBnZXRTeXN0ZW1BY3Rpb25zKHN5c3RlbUFjdGlvblR5cGUpO1xuICAgICAgICBpZiAoc3lzdGVtQWN0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG5hbWU6IGFjdGlvblR5cGUsXG4gICAgICAgICAgICAgICAgaWNvbjogc3lzdGVtQWN0aW9uLmljb24gfHwgJycsXG4gICAgICAgICAgICAgICAgY29sb3I6IHN5c3RlbUFjdGlvbi5jb2xvciB8fCAnZGVmYXVsdCcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHN5c3RlbUFjdGlvbi50aXRsZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogc3lzdGVtQWN0aW9uLmRlc2NyaXB0aW9ucy50aXRsZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZhbGxiYWNrIGZvciB1bmtub3duIGFjdGlvbnNcbiAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiBhY3Rpb25UeXBlLFxuICAgICAgICB0aXRsZTogYWN0aW9uVHlwZSxcbiAgICAgICAgZGVzY3JpcHRpb246IGBQZXJmb3JtICR7YWN0aW9uVHlwZX0gYWN0aW9uYCxcbiAgICAgICAgaWNvbjogJycsXG4gICAgICAgIGNvbG9yOiAnZGVmYXVsdCdcbiAgICB9O1xufVxuIl19","export function getNestedKeys(obj, prefix = '') {\n let keys = [];\n for (const key in obj) {\n if (typeof obj[key] === 'object' && obj[key] !== null && !Array.isArray(obj[key])) {\n keys = [...keys, ...getNestedKeys(obj[key], prefix + key + '.')];\n }\n else {\n keys.push(prefix + key);\n }\n }\n return keys;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL3R5cGVzL2NvcmUudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxVQUFVLGFBQWEsQ0FBQyxHQUFRLEVBQUUsU0FBaUIsRUFBRTtJQUN6RCxJQUFJLElBQUksR0FBYSxFQUFFLENBQUM7SUFDeEIsS0FBSyxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFFBQVEsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2xGLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbkUsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEFYUFBhcnRpYWxOZXN0ZWQ8VD4gPSB7XG4gIFtLIGluIGtleW9mIFRdPzogVFtLXSBleHRlbmRzIG9iamVjdCA/IEFYUFBhcnRpYWxOZXN0ZWQ8VFtLXT4gOiBUW0tdO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldE5lc3RlZEtleXMob2JqOiBhbnksIHByZWZpeDogc3RyaW5nID0gJycpOiBzdHJpbmdbXSB7XG4gIGxldCBrZXlzOiBzdHJpbmdbXSA9IFtdO1xuICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcbiAgICBpZiAodHlwZW9mIG9ialtrZXldID09PSAnb2JqZWN0JyAmJiBvYmpba2V5XSAhPT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheShvYmpba2V5XSkpIHtcbiAgICAgIGtleXMgPSBbLi4ua2V5cywgLi4uZ2V0TmVzdGVkS2V5cyhvYmpba2V5XSwgcHJlZml4ICsga2V5ICsgJy4nKV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGtleXMucHVzaChwcmVmaXggKyBrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4ga2V5cztcbn1cblxuZXhwb3J0IHR5cGUgQVhQRXhwcmVzc2lvbiA9IHN0cmluZztcblxuZXhwb3J0IHR5cGUgQVhQTWV0YURhdGEgPSBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG5leHBvcnQgdHlwZSBBWFBPcHRpb25zRGF0YTxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+PiA9IFQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQVmFsdWVVbml0IHtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICByYXRpbzogbnVtYmVyO1xuICBvcmRlcjogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFZhbHVlVW5pdHMge1xuICBuYW1lOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGl0ZW1zOiBBWFBWYWx1ZVVuaXRbXTtcbiAgZGVmYXVsdDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUEVudGl0eVJlZmVyZW5jZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIG1ldGFkYXRhPzogQVhQTWV0YURhdGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQVXNlclJlZmVyZW5jZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHR5cGU/OiAndXNlcic7XG4gIGZ1bGxOYW1lPzogc3RyaW5nO1xuICB1c2VybmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBBcHBsaWNhdGlvblVzZXJSZWZlcmVuY2Uge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEFYUENvbnRlbnRUeXBlID0gJ3RleHQnIHwgJ2ltYWdlJyB8ICdmaWxlJyB8ICd2aWRlbycgfCAnbGluayc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQQ29udGVudCB7XG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgY29udGVudFR5cGU6IEFYUENvbnRlbnRUeXBlO1xufVxuIl19","import { getSystemActions } from './actions.types';\nexport function applySystemActionDefault(action, type) {\n const systemAction = getSystemActions(type);\n return {\n name: systemAction.key,\n title: systemAction.title,\n icon: systemAction.icon,\n color: systemAction.color,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJhY3RpdmUudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2NvcmUvc3JjL2xpYi90eXBlcy9pbnRlcmFjdGl2ZS50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQXVCLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFvRnhFLE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxNQUF5QixFQUFFLElBQXlCO0lBQzNGLE1BQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVDLE9BQU87UUFDTCxJQUFJLEVBQUUsWUFBWSxDQUFDLEdBQUc7UUFDdEIsS0FBSyxFQUFFLFlBQVksQ0FBQyxLQUFLO1FBQ3pCLElBQUksRUFBRSxZQUFZLENBQUMsSUFBSTtRQUN2QixLQUFLLEVBQUUsWUFBWSxDQUFDLEtBQUs7S0FDMUIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRXh0cmFzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEFYUFN5c3RlbUFjdGlvblR5cGUsIGdldFN5c3RlbUFjdGlvbnMgfSBmcm9tICcuL2FjdGlvbnMudHlwZXMnO1xuaW1wb3J0IHsgQVhQTWV0YURhdGEgfSBmcm9tICcuL2NvcmUudHlwZXMnO1xuXG5leHBvcnQgdHlwZSBBWFBBY3Rpb25NZW51SXRlbSA9IHtcbiAgbmFtZT86IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbiAgaWNvbk9ubHk/OiBib29sZWFuO1xuICBjb2xvcj86IHN0cmluZztcbiAgYnJlYWs/OiBib29sZWFuO1xuICBpdGVtcz86IEFYUEFjdGlvbk1lbnVJdGVtW107XG4gIGNvbW1hbmQ/OiBBWFBFeGVjdXRlQ29tbWFuZDtcbiAgZGlzYWJsZWQ/OiBib29sZWFuIHwgc3RyaW5nO1xuICB2aXNpYmxlPzogYm9vbGVhbiB8IHN0cmluZztcbiAgcG9saWN5Pzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQVhQQmFja0J1dHRvbiA9IHtcbiAgdGl0bGU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEFYUEJyZWFkY3J1bWJJdGVtID0ge1xuICBuYW1lPzogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xuICBjb21tYW5kPzogQVhQRXhlY3V0ZUNvbW1hbmQ7XG59O1xuXG5leHBvcnQgdHlwZSBBWFBCYWRnZSA9IHtcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGNvbG9yPzogJ3ByaW1hcnknIHwgJ3N1Y2Nlc3MnIHwgJ3dhcm5pbmcnIHwgJ2Rhbmdlcic7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYUENvbW1hbmRNZXNzYWdlIHtcbiAgdHlwZT86ICdpbmZvJyB8ICdzdWNjZXNzJyB8ICd3YXJuaW5nJyB8ICdlcnJvcic7XG4gIGNvZGU/OiBzdHJpbmc7XG4gIHRleHQ6IHN0cmluZztcbiAgZGV0YWlscz86IHVua25vd247XG59XG5cbmV4cG9ydCB0eXBlIEFYUEV4ZWN1dGVDb21tYW5kID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIG9wdGlvbnM/OiBBWFBNZXRhRGF0YTtcbiAgbWV0YWRhdGE/OiBBWFBNZXRhRGF0YTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRXhlY3V0ZUNvbW1hbmRSZXN1bHQ8VCA9IGFueT4ge1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBkYXRhPzogVDtcbiAgbWVzc2FnZT86IEFYUENvbW1hbmRNZXNzYWdlO1xuICBtZXRhZGF0YT86IEFYUE1ldGFEYXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFF1ZXJ5RmV0Y2hSZXN1bHQ8VCA9IGFueT4ge1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBkYXRhPzoge1xuICAgIGl0ZW1zPzogVFtdO1xuICAgIHRvdGFsPzogbnVtYmVyO1xuICB9O1xuICBtZXNzYWdlPzoge1xuICAgIGNvZGU/OiBzdHJpbmc7XG4gICAgdGV4dD86IHN0cmluZztcbiAgICBkZXRhaWxzPzogYW55O1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBBWFBOYXZpZ2F0ZUFjdGlvbk9wdGlvbnMgPSB7XG4gIHJvdXRlcjoge1xuICAgIHBhdGg6IHN0cmluZztcbiAgICBleHRyYXM/OiBOYXZpZ2F0aW9uRXh0cmFzICYgeyB0YXJnZXQ/OiBzdHJpbmcgfTtcbiAgfTtcbiAgbW9kYWw6IHtcbiAgICBjb21wb25lbnQ6IFR5cGU8YW55PjtcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIG9wdGlvbnM/OiBhbnk7XG4gIH07XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYUE5hdmlnYXRlQWN0aW9uQ29tbWFuZDxUIGV4dGVuZHMga2V5b2YgQVhQTmF2aWdhdGVBY3Rpb25PcHRpb25zPiB7XG4gIHR5cGU6IFQ7XG4gIG9wdGlvbnM6IEFYUE5hdmlnYXRlQWN0aW9uT3B0aW9uc1tUXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5U3lzdGVtQWN0aW9uRGVmYXVsdChhY3Rpb246IEFYUEFjdGlvbk1lbnVJdGVtLCB0eXBlOiBBWFBTeXN0ZW1BY3Rpb25UeXBlKTogQVhQQWN0aW9uTWVudUl0ZW0ge1xuICBjb25zdCBzeXN0ZW1BY3Rpb24gPSBnZXRTeXN0ZW1BY3Rpb25zKHR5cGUpO1xuICByZXR1cm4ge1xuICAgIG5hbWU6IHN5c3RlbUFjdGlvbi5rZXksXG4gICAgdGl0bGU6IHN5c3RlbUFjdGlvbi50aXRsZSxcbiAgICBpY29uOiBzeXN0ZW1BY3Rpb24uaWNvbixcbiAgICBjb2xvcjogc3lzdGVtQWN0aW9uLmNvbG9yLFxuICB9O1xufVxuIl19","export class AXPImageUrlLogoConfig {\n constructor(url, width, height) {\n this.url = url;\n this.width = width;\n this.height = height;\n }\n}\nexport class AXPComponentLogoConfig {\n constructor(component) {\n this.component = component;\n }\n}\nexport class AXPIconLogoConfig {\n constructor(icon, color) {\n this.icon = icon;\n this.color = color;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nby50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL3R5cGVzL2xvZ28udHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxPQUFPLHFCQUFxQjtJQUNoQyxZQUFtQixHQUFXLEVBQVMsS0FBYyxFQUFTLE1BQWU7UUFBMUQsUUFBRyxHQUFILEdBQUcsQ0FBUTtRQUFTLFVBQUssR0FBTCxLQUFLLENBQVM7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFTO0lBQUksQ0FBQztDQUNuRjtBQUNELE1BQU0sT0FBTyxzQkFBc0I7SUFHakMsWUFBbUIsU0FBb0I7UUFBcEIsY0FBUyxHQUFULFNBQVMsQ0FBVztJQUFJLENBQUM7Q0FDN0M7QUFFRCxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLFlBQW1CLElBQVksRUFBUyxLQUFjO1FBQW5DLFNBQUksR0FBSixJQUFJLENBQVE7UUFBUyxVQUFLLEdBQUwsS0FBSyxDQUFTO0lBQUksQ0FBQztDQUM1RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBBWFBMb2dvQ29uZmlnIHsgfVxuXG5leHBvcnQgY2xhc3MgQVhQSW1hZ2VVcmxMb2dvQ29uZmlnIGltcGxlbWVudHMgQVhQTG9nb0NvbmZpZyB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB1cmw6IHN0cmluZywgcHVibGljIHdpZHRoPzogbnVtYmVyLCBwdWJsaWMgaGVpZ2h0PzogbnVtYmVyKSB7IH1cbn1cbmV4cG9ydCBjbGFzcyBBWFBDb21wb25lbnRMb2dvQ29uZmlnIGltcGxlbWVudHMgQVhQTG9nb0NvbmZpZyB7XG4gIGhlaWdodD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgd2lkdGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb21wb25lbnQ6IFR5cGU8YW55PikgeyB9XG59XG5cbmV4cG9ydCBjbGFzcyBBWFBJY29uTG9nb0NvbmZpZyBpbXBsZW1lbnRzIEFYUExvZ29Db25maWcge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgaWNvbjogc3RyaW5nLCBwdWJsaWMgY29sb3I/OiBzdHJpbmcpIHsgfVxufVxuXG5cblxuIl19","export var AXPPlatformScope;\n(function (AXPPlatformScope) {\n AXPPlatformScope[\"Environment\"] = \"C\";\n AXPPlatformScope[\"Global\"] = \"G\";\n AXPPlatformScope[\"Platform\"] = \"P\";\n AXPPlatformScope[\"Tenant\"] = \"T\";\n AXPPlatformScope[\"User\"] = \"U\";\n})(AXPPlatformScope || (AXPPlatformScope = {}));\n;\nexport function resolvePlatformScopeKey(name) {\n const scopeMap = {\n environment: AXPPlatformScope.Environment,\n global: AXPPlatformScope.Global,\n platform: AXPPlatformScope.Platform,\n tenant: AXPPlatformScope.Tenant,\n user: AXPPlatformScope.User,\n };\n return scopeMap[name.toLowerCase()] ?? AXPPlatformScope.User;\n}\nexport function resolvePlatformScopeName(scope) {\n const scopeMap = {\n C: 'environment',\n G: 'global',\n P: 'platform',\n T: 'tenant',\n U: 'user',\n };\n return scopeMap[scope] ?? 'user';\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NvcGUudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2NvcmUvc3JjL2xpYi90eXBlcy9zY29wZS50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxNQUFNLENBQU4sSUFBWSxnQkFNWDtBQU5ELFdBQVksZ0JBQWdCO0lBQ3hCLHFDQUFpQixDQUFBO0lBQ2pCLGdDQUFZLENBQUE7SUFDWixrQ0FBYyxDQUFBO0lBQ2QsZ0NBQVksQ0FBQTtJQUNaLDhCQUFVLENBQUE7QUFDZCxDQUFDLEVBTlcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQU0zQjtBQUFBLENBQUM7QUFFRixNQUFNLFVBQVUsdUJBQXVCLENBQUMsSUFBWTtJQUNoRCxNQUFNLFFBQVEsR0FBd0M7UUFDbEQsV0FBVyxFQUFFLGdCQUFnQixDQUFDLFdBQVc7UUFDekMsTUFBTSxFQUFFLGdCQUFnQixDQUFDLE1BQU07UUFDL0IsUUFBUSxFQUFFLGdCQUFnQixDQUFDLFFBQVE7UUFDbkMsTUFBTSxFQUFFLGdCQUFnQixDQUFDLE1BQU07UUFDL0IsSUFBSSxFQUFFLGdCQUFnQixDQUFDLElBQUk7S0FDOUIsQ0FBQztJQUNGLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQztBQUNqRSxDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QixDQUFDLEtBQTBCO0lBQy9ELE1BQU0sUUFBUSxHQUF3QztRQUNsRCxDQUFDLEVBQUUsYUFBYTtRQUNoQixDQUFDLEVBQUUsUUFBUTtRQUNYLENBQUMsRUFBRSxVQUFVO1FBQ2IsQ0FBQyxFQUFFLFFBQVE7UUFDWCxDQUFDLEVBQUUsTUFBTTtLQUNaLENBQUM7SUFDRixPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUM7QUFDckMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEFYUFBsYXRmb3JtU2NvcGVLZXkgPSAnQycgfCAnRycgfCAnUCcgfCAnVCcgfCAnVSc7XG5leHBvcnQgZW51bSBBWFBQbGF0Zm9ybVNjb3BlIHtcbiAgICBFbnZpcm9ubWVudCA9ICdDJyxcbiAgICBHbG9iYWwgPSAnRycsXG4gICAgUGxhdGZvcm0gPSAnUCcsXG4gICAgVGVuYW50ID0gJ1QnLFxuICAgIFVzZXIgPSAnVSdcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlUGxhdGZvcm1TY29wZUtleShuYW1lOiBzdHJpbmcpOiBBWFBQbGF0Zm9ybVNjb3BlS2V5IHtcbiAgICBjb25zdCBzY29wZU1hcDogUmVjb3JkPHN0cmluZywgQVhQUGxhdGZvcm1TY29wZUtleT4gPSB7XG4gICAgICAgIGVudmlyb25tZW50OiBBWFBQbGF0Zm9ybVNjb3BlLkVudmlyb25tZW50LFxuICAgICAgICBnbG9iYWw6IEFYUFBsYXRmb3JtU2NvcGUuR2xvYmFsLFxuICAgICAgICBwbGF0Zm9ybTogQVhQUGxhdGZvcm1TY29wZS5QbGF0Zm9ybSxcbiAgICAgICAgdGVuYW50OiBBWFBQbGF0Zm9ybVNjb3BlLlRlbmFudCxcbiAgICAgICAgdXNlcjogQVhQUGxhdGZvcm1TY29wZS5Vc2VyLFxuICAgIH07XG4gICAgcmV0dXJuIHNjb3BlTWFwW25hbWUudG9Mb3dlckNhc2UoKV0gPz8gQVhQUGxhdGZvcm1TY29wZS5Vc2VyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVBsYXRmb3JtU2NvcGVOYW1lKHNjb3BlOiBBWFBQbGF0Zm9ybVNjb3BlS2V5KTogc3RyaW5nIHtcbiAgICBjb25zdCBzY29wZU1hcDogUmVjb3JkPEFYUFBsYXRmb3JtU2NvcGVLZXksIHN0cmluZz4gPSB7XG4gICAgICAgIEM6ICdlbnZpcm9ubWVudCcsXG4gICAgICAgIEc6ICdnbG9iYWwnLFxuICAgICAgICBQOiAncGxhdGZvcm0nLFxuICAgICAgICBUOiAndGVuYW50JyxcbiAgICAgICAgVTogJ3VzZXInLFxuICAgIH07XG4gICAgcmV0dXJuIHNjb3BlTWFwW3Njb3BlXSA/PyAndXNlcic7XG59Il19","export var AXPExportTemplateToken;\n(function (AXPExportTemplateToken) {\n AXPExportTemplateToken[\"Date\"] = \"{date}\";\n AXPExportTemplateToken[\"Time\"] = \"{time}\";\n AXPExportTemplateToken[\"User\"] = \"{user}\";\n AXPExportTemplateToken[\"ReportTitle\"] = \"{title}\";\n AXPExportTemplateToken[\"UUID\"] = \"{uuid}\";\n})(AXPExportTemplateToken || (AXPExportTemplateToken = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9jb3JlL3NyYy9saWIvdHlwZXMvZXhwb3J0LnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQStFQSxNQUFNLENBQU4sSUFBWSxzQkFNWDtBQU5ELFdBQVksc0JBQXNCO0lBQzlCLHlDQUFlLENBQUE7SUFDZix5Q0FBZSxDQUFBO0lBQ2YseUNBQWUsQ0FBQTtJQUNmLGlEQUF1QixDQUFBO0lBQ3ZCLHlDQUFlLENBQUE7QUFDbkIsQ0FBQyxFQU5XLHNCQUFzQixLQUF0QixzQkFBc0IsUUFNakMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmV4cG9ydCBpbnRlcmZhY2UgQVhQRXhwb3J0T3B0aW9ucyB7XG4gICAgZmlsZU5hbWVUZW1wbGF0ZT86IHN0cmluZzsgLy8g2YXYq9in2YQ6IFwiUmVwb3J0X3tkYXRlfV97dXNlcn1cIlxuXG4gICAgcGRmPzogQVhQRXhwb3J0UGRmT3B0aW9ucztcbiAgICBleGNlbD86IEFYUEV4cG9ydEV4Y2VsT3B0aW9ucztcbiAgICBjc3Y/OiBBWFBFeHBvcnRDc3ZPcHRpb25zO1xuICAgIHByaW50PzogQVhQRXhwb3J0UHJpbnRPcHRpb25zO1xufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRXhwb3J0UGRmT3B0aW9ucyB7XG4gICAgZW5hYmxlZDogYm9vbGVhbjtcblxuICAgIHBhZ2VTaXplPzogJ0E0JyB8ICdBMycgfCAnTGV0dGVyJyB8ICdMZWdhbCc7XG4gICAgb3JpZW50YXRpb24/OiAncG9ydHJhaXQnIHwgJ2xhbmRzY2FwZSc7XG5cbiAgICBtYXJnaW4/OiBudW1iZXIgfCB7XG4gICAgICAgIHRvcDogbnVtYmVyO1xuICAgICAgICBib3R0b206IG51bWJlcjtcbiAgICAgICAgbGVmdDogbnVtYmVyO1xuICAgICAgICByaWdodDogbnVtYmVyO1xuICAgIH07XG5cbiAgICBmb250Pzogc3RyaW5nO1xuICAgIGZvbnRTaXplPzogbnVtYmVyO1xuXG4gICAgaGVhZGVyRW5hYmxlZD86IGJvb2xlYW47XG4gICAgZm9vdGVyRW5hYmxlZD86IGJvb2xlYW47XG4gICAgc2hvd1BhZ2VOdW1iZXJzPzogYm9vbGVhbjtcblxuICAgIHdhdGVybWFya1RleHQ/OiBzdHJpbmc7XG4gICAgd2F0ZXJtYXJrT3BhY2l0eT86IG51bWJlcjtcblxuICAgIGNvbXByZXNzaW9uPzogYm9vbGVhbjtcbiAgICBlbWJlZEltYWdlcz86IGJvb2xlYW47XG59XG5cblxuZXhwb3J0IGludGVyZmFjZSBBWFBFeHBvcnRFeGNlbE9wdGlvbnMge1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBzaGVldE5hbWU/OiBzdHJpbmc7XG4gICAgaW5jbHVkZUZpbHRlcnM/OiBib29sZWFuO1xuICAgIGZyZWV6ZUhlYWRlcj86IGJvb2xlYW47XG4gICAgYXV0b0ZpdENvbHVtbnM/OiBib29sZWFuO1xuXG4gICAgc3R5bGU/OiB7XG4gICAgICAgIGhlYWRlckNvbG9yPzogc3RyaW5nO1xuICAgICAgICBmb250Pzogc3RyaW5nO1xuICAgICAgICBmb250U2l6ZT86IG51bWJlcjtcbiAgICAgICAgbnVtYmVyRm9ybWF0PzogJ2F1dG8nIHwgJ2N1cnJlbmN5JyB8ICdwZXJjZW50JyB8ICdkZWNpbWFsJztcbiAgICB9O1xuXG4gICAgc3VtbWFyeVJvd0VuYWJsZWQ/OiBib29sZWFuO1xuICAgIGV4cG9ydEhpZGRlbkNvbHVtbnM/OiBib29sZWFuO1xufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRXhwb3J0Q3N2T3B0aW9ucyB7XG4gICAgZW5hYmxlZDogYm9vbGVhbjtcblxuICAgIGRlbGltaXRlcj86ICcsJyB8ICc7JyB8ICdcXHQnO1xuICAgIGluY2x1ZGVIZWFkZXJzPzogYm9vbGVhbjtcbiAgICBxdW90ZVZhbHVlcz86IGJvb2xlYW47XG4gICAgZW5jb2Rpbmc/OiAndXRmLTgnIHwgJ3V0Zi0xNicgfCAnaXNvLTg4NTktMSc7XG59XG5cblxuZXhwb3J0IGludGVyZmFjZSBBWFBFeHBvcnRQcmludE9wdGlvbnMge1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBpbmNsdWRlSGVhZGVyPzogYm9vbGVhbjtcbiAgICBpbmNsdWRlRm9vdGVyPzogYm9vbGVhbjtcbiAgICBzaG93UGFnZUJyZWFrcz86IGJvb2xlYW47XG4gICAgY3VzdG9tQ3NzVXJsPzogc3RyaW5nO1xufVxuXG5cbmV4cG9ydCBlbnVtIEFYUEV4cG9ydFRlbXBsYXRlVG9rZW4ge1xuICAgIERhdGUgPSAne2RhdGV9JyxcbiAgICBUaW1lID0gJ3t0aW1lfScsXG4gICAgVXNlciA9ICd7dXNlcn0nLFxuICAgIFJlcG9ydFRpdGxlID0gJ3t0aXRsZX0nLFxuICAgIFVVSUQgPSAne3V1aWR9Jyxcbn1cbiJdfQ==","import { AXCalendarService } from '@acorex/core/date-time';\nimport { inject, Pipe, signal } from '@angular/core';\nimport { interval } from 'rxjs';\nimport { map, startWith } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nexport class AXPCountdownPipe {\n constructor() {\n this.calendarService = inject(AXCalendarService);\n this.countdownSignal = signal(this.setupTimer(), ...(ngDevMode ? [{ debugName: \"countdownSignal\" }] : []));\n this.targetDate = 0;\n this.prevValue = 0;\n }\n transform(value) {\n if (this.prevValue != value) {\n this.prevValue = value;\n const expireTime = this.calendarService.calendar.add(new Date(), 'second', value).date;\n this.updateTargetDate(expireTime.toISOString());\n }\n return this.countdownSignal();\n }\n setupTimer() {\n return interval(1000).pipe(startWith(0), map(() => {\n const diff = this.targetDate - new Date().getTime();\n if (diff < 0) {\n return \"Time's up!\";\n }\n const times = [86400, 3600, 60, 1].map((seconds) => Math.floor((diff / 1000 / seconds) % (seconds === 1 ? 60 : 24)));\n const labels = ['d', 'h', 'm', 's'];\n return times\n .map((t, i) => (t > 0 || i === 3 ? `${t}${labels[i]}` : ''))\n .join(' ')\n .trim();\n }));\n }\n updateTargetDate(value) {\n this.targetDate = new Date(value).getTime();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPCountdownPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPCountdownPipe, isStandalone: true, name: \"countdown\", pure: false }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPCountdownPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'countdown',\n pure: false,\n standalone: true,\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRkb3duLXRpbWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9jb3JlL3NyYy9saWIvdXRpbHMvY291bnRkb3duLXRpbWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFpQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLFFBQVEsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQU9oRCxNQUFNLE9BQU8sZ0JBQWdCO0lBTDdCO1FBTVUsb0JBQWUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUU1QyxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLDJEQUFDLENBQUM7UUFFNUMsZUFBVSxHQUFXLENBQUMsQ0FBQztRQUN2QixjQUFTLEdBQUcsQ0FBQyxDQUFDO0tBaUN2QjtJQS9CQyxTQUFTLENBQUMsS0FBYTtRQUNyQixJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksS0FBSyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDdkIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQztZQUN2RixJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTyxVQUFVO1FBQ2hCLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FDeEIsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUNaLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEQsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2IsT0FBTyxZQUFZLENBQUM7WUFDdEIsQ0FBQztZQUVELE1BQU0sS0FBSyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JILE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDcEMsT0FBTyxLQUFLO2lCQUNULEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQzNELElBQUksQ0FBQyxHQUFHLENBQUM7aUJBQ1QsSUFBSSxFQUFFLENBQUM7UUFDWixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVPLGdCQUFnQixDQUFDLEtBQWE7UUFDcEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM5QyxDQUFDOytHQXRDVSxnQkFBZ0I7NkdBQWhCLGdCQUFnQjs7NEZBQWhCLGdCQUFnQjtrQkFMNUIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsV0FBVztvQkFDakIsSUFBSSxFQUFFLEtBQUs7b0JBQ1gsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhDYWxlbmRhclNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvZGF0ZS10aW1lJztcbmltcG9ydCB7IGluamVjdCwgUGlwZSwgUGlwZVRyYW5zZm9ybSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbnRlcnZhbCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2NvdW50ZG93bicsXG4gIHB1cmU6IGZhbHNlLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBDb3VudGRvd25QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHByaXZhdGUgY2FsZW5kYXJTZXJ2aWNlID0gaW5qZWN0KEFYQ2FsZW5kYXJTZXJ2aWNlKTtcblxuICBwcml2YXRlIGNvdW50ZG93blNpZ25hbCA9IHNpZ25hbCh0aGlzLnNldHVwVGltZXIoKSk7XG5cbiAgcHJpdmF0ZSB0YXJnZXREYXRlOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIHByZXZWYWx1ZSA9IDA7XG5cbiAgdHJhbnNmb3JtKHZhbHVlOiBudW1iZXIpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIGlmICh0aGlzLnByZXZWYWx1ZSAhPSB2YWx1ZSkge1xuICAgICAgdGhpcy5wcmV2VmFsdWUgPSB2YWx1ZTtcbiAgICAgIGNvbnN0IGV4cGlyZVRpbWUgPSB0aGlzLmNhbGVuZGFyU2VydmljZS5jYWxlbmRhci5hZGQobmV3IERhdGUoKSwgJ3NlY29uZCcsIHZhbHVlKS5kYXRlO1xuICAgICAgdGhpcy51cGRhdGVUYXJnZXREYXRlKGV4cGlyZVRpbWUudG9JU09TdHJpbmcoKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvdW50ZG93blNpZ25hbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFRpbWVyKCkge1xuICAgIHJldHVybiBpbnRlcnZhbCgxMDAwKS5waXBlKFxuICAgICAgc3RhcnRXaXRoKDApLFxuICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgY29uc3QgZGlmZiA9IHRoaXMudGFyZ2V0RGF0ZSAtIG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICBpZiAoZGlmZiA8IDApIHtcbiAgICAgICAgICByZXR1cm4gXCJUaW1lJ3MgdXAhXCI7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0aW1lcyA9IFs4NjQwMCwgMzYwMCwgNjAsIDFdLm1hcCgoc2Vjb25kcykgPT4gTWF0aC5mbG9vcigoZGlmZiAvIDEwMDAgLyBzZWNvbmRzKSAlIChzZWNvbmRzID09PSAxID8gNjAgOiAyNCkpKTtcbiAgICAgICAgY29uc3QgbGFiZWxzID0gWydkJywgJ2gnLCAnbScsICdzJ107XG4gICAgICAgIHJldHVybiB0aW1lc1xuICAgICAgICAgIC5tYXAoKHQsIGkpID0+ICh0ID4gMCB8fCBpID09PSAzID8gYCR7dH0ke2xhYmVsc1tpXX1gIDogJycpKVxuICAgICAgICAgIC5qb2luKCcgJylcbiAgICAgICAgICAudHJpbSgpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVUYXJnZXREYXRlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhcmdldERhdGUgPSBuZXcgRGF0ZSh2YWx1ZSkuZ2V0VGltZSgpO1xuICB9XG59XG4iXX0=","import { endsWith, get, gt, gte, includes, isEmpty, isEqual, isNil, lt, lte, orderBy, startsWith } from 'lodash-es';\nconst loggingEnabled = false; // Set to true to enable logging, false to disable\nfunction applyCondition(item, condition) {\n const rawValue = condition.field ? get(item, condition.field) : null;\n const itemValue = typeof rawValue === 'string' ? rawValue.toLowerCase() : rawValue;\n const conditionValue = typeof condition.value === 'string' ? condition.value.toLowerCase() : condition.value;\n // Conditional Logging for debugging\n if (loggingEnabled) {\n console.log('Condition:', condition);\n console.log('Item Value:', itemValue);\n console.log('Condition Value:', conditionValue);\n }\n let result;\n const valueToCompare = isNil(condition.field) || condition.field === '' ? conditionValue : itemValue;\n const conditionType = condition?.operator?.type;\n if (!conditionType) {\n return true;\n }\n const op = String(conditionType);\n switch (op) {\n case 'equal':\n case 'eq':\n result = isEqual(valueToCompare, conditionValue);\n if (loggingEnabled) {\n console.log('Equal check result:', result);\n }\n break;\n case 'notEqual':\n case 'ne':\n case 'neq':\n result = !isEqual(valueToCompare, conditionValue);\n if (loggingEnabled) {\n console.log('Not equal check result:', result);\n }\n break;\n case 'greaterThan':\n case 'gt':\n result = gt(valueToCompare, conditionValue);\n if (loggingEnabled) {\n console.log('Greater than check result:', result);\n }\n break;\n case 'lessThan':\n case 'lt':\n result = lt(valueToCompare, conditionValue);\n if (loggingEnabled) {\n console.log('Less than check result:', result);\n }\n break;\n case 'greaterThanOrEqual':\n case 'gte':\n result = gte(valueToCompare, conditionValue);\n if (loggingEnabled) {\n console.log('Greater than or equal check result:', result);\n }\n break;\n case 'lessThanOrEqual':\n case 'lte':\n result = lte(valueToCompare, conditionValue);\n if (loggingEnabled) {\n console.log('Less than or equal check result:', result);\n }\n break;\n case 'contains':\n if (typeof valueToCompare === 'string') {\n result = includes(valueToCompare, conditionValue);\n }\n else if (Array.isArray(valueToCompare)) {\n result = includes(valueToCompare.map((val) => val.toString().toLowerCase()), conditionValue);\n }\n else {\n result = false;\n }\n if (loggingEnabled) {\n console.log('Contains check result:', result);\n }\n break;\n case 'in':\n if (Array.isArray(conditionValue)) {\n if (typeof valueToCompare === 'string') {\n result = conditionValue.some(val => typeof val === 'string' ? val.toLowerCase() === valueToCompare : val === valueToCompare);\n }\n else if (Array.isArray(valueToCompare)) {\n result = valueToCompare.some(val => conditionValue.some(condVal => typeof val === 'string' && typeof condVal === 'string'\n ? val.toLowerCase() === condVal.toLowerCase()\n : val === condVal));\n }\n else {\n result = conditionValue.includes(valueToCompare);\n }\n }\n else {\n result = false;\n }\n if (loggingEnabled) {\n console.log('In check result:', result);\n }\n break;\n case 'notContains':\n if (typeof valueToCompare === 'string') {\n result = !includes(valueToCompare, conditionValue);\n }\n else if (Array.isArray(valueToCompare)) {\n result = !includes(valueToCompare.map((val) => val.toString().toLowerCase()), conditionValue);\n }\n else {\n result = false;\n }\n if (loggingEnabled) {\n console.log('Not contains check result:', result);\n }\n break;\n case 'startsWith':\n result = typeof valueToCompare === 'string' && startsWith(valueToCompare, conditionValue);\n if (loggingEnabled) {\n console.log('Starts with check result:', result);\n }\n break;\n case 'endsWith':\n result = typeof valueToCompare === 'string' && endsWith(valueToCompare, conditionValue);\n if (loggingEnabled) {\n console.log('Ends with check result:', result);\n }\n break;\n case 'isEmpty':\n result = isEmpty(valueToCompare);\n if (loggingEnabled) {\n console.log('Is empty check result:', result);\n }\n break;\n case 'isNull':\n result = isNil(valueToCompare);\n if (loggingEnabled) {\n console.log('Is null check result:', result);\n }\n break;\n case 'isNotEmpty':\n result = !isEmpty(valueToCompare);\n if (loggingEnabled) {\n console.log('Is not empty check result:', result);\n }\n break;\n case 'between':\n result = !isNil(valueToCompare) && valueToCompare >= condition.value.from && valueToCompare <= condition.value.to;\n if (loggingEnabled) {\n console.log('Between check result:', result);\n }\n break;\n default:\n result = true;\n if (loggingEnabled) {\n console.log('Default case, returning true');\n }\n }\n // Apply negative flag if present on operator (invert the result)\n const isNegative = !!condition?.operator?.negative;\n return isNegative ? !result : result;\n}\nexport function applyFilterArray(dataArray, filters, logic = 'and') {\n if (filters && filters.length) {\n return dataArray.filter((item) => {\n if (logic === 'and') {\n return filters.every((f) => {\n return f.filters ? applyFilterArray([item], f.filters, f.logic).length > 0 : applyCondition(item, f);\n });\n }\n else {\n // logic === 'or'\n return filters.some((f) => {\n return f.filters ? applyFilterArray([item], f.filters, f.logic).length > 0 : applyCondition(item, f);\n });\n }\n });\n }\n else {\n return dataArray;\n }\n}\nexport function applySortArray(dataArray, sorts) {\n if (sorts && sorts.length > 0) {\n const sortFields = sorts.map((s) => s.field);\n const sortOrders = sorts.map((s) => s.dir);\n return orderBy(dataArray, sortFields, sortOrders);\n }\n else\n return dataArray;\n}\nexport function applyPagination(dataArray, skip, take) {\n return dataArray.slice(skip, skip + take);\n}\nexport async function applyQueryArray(dataArray, query) {\n let result = [...dataArray];\n // Apply filtering\n if (query.filter) {\n result = applyFilterArray(result, [query.filter], query.filter.logic ?? 'and');\n }\n // Store total count before pagination\n const total = result.length;\n // Apply sorting\n if (query.sort && query.sort.length > 0) {\n result = applySortArray(result, query.sort);\n }\n // Apply pagination\n result = applyPagination(result, query.skip, query.take);\n return {\n items: result,\n total,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1jb25kaXRpb25lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vY29yZS9zcmMvbGliL3V0aWxzL2RhdGEtY29uZGl0aW9uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBILE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxDQUFDLGtEQUFrRDtBQUVoRixTQUFTLGNBQWMsQ0FBQyxJQUFTLEVBQUUsU0FBbUM7SUFDcEUsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNyRSxNQUFNLFNBQVMsR0FBRyxPQUFPLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQ25GLE1BQU0sY0FBYyxHQUFHLE9BQU8sU0FBUyxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7SUFFN0csb0NBQW9DO0lBQ3BDLElBQUksY0FBYyxFQUFFLENBQUM7UUFDbkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDckMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDdEMsT0FBTyxD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S0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFFNUIsZ0JBQWdCO0lBQ2hCLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN4QyxNQUFNLEdBQUcsY0FBYyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELG1CQUFtQjtJQUNuQixNQUFNLEdBQUcsZUFBZSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUV6RCxPQUFPO1FBQ0wsS0FBSyxFQUFFLE1BQU07UUFDYixLQUFLO0tBQ04sQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBWERhdGFTb3VyY2VDYWxsYmFja1Jlc3VsdCxcbiAgQVhEYXRhU291cmNlRmlsdGVyT3B0aW9uLFxuICBBWERhdGFTb3VyY2VMb2FkQ2FsbGJhY2ssXG4gIEFYRGF0YVNvdXJjZVF1ZXJ5LFxuICBBWERhdGFTb3VyY2VTb3J0T3B0aW9uLFxufSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgZW5kc1dpdGgsIGdldCwgZ3QsIGd0ZSwgaW5jbHVkZXMsIGlzRW1wdHksIGlzRXF1YWwsIGlzTmlsLCBsdCwgbHRlLCBvcmRlckJ5LCBzdGFydHNXaXRoIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuY29uc3QgbG9nZ2luZ0VuYWJsZWQgPSBmYWxzZTsgLy8gU2V0IHRvIHRydWUgdG8gZW5hYmxlIGxvZ2dpbmcsIGZhbHNlIHRvIGRpc2FibGVcblxuZnVuY3Rpb24gYXBwbHlDb25kaXRpb24oaXRlbTogYW55LCBjb25kaXRpb246IEFYRGF0YVNvdXJjZUZpbHRlck9wdGlvbikge1xuICBjb25zdCByYXdWYWx1ZSA9IGNvbmRpdGlvbi5maWVsZCA/IGdldChpdGVtLCBjb25kaXRpb24uZmllbGQpIDogbnVsbDtcbiAgY29uc3QgaXRlbVZhbHVlID0gdHlwZW9mIHJhd1ZhbHVlID09PSAnc3RyaW5nJyA/IHJhd1ZhbHVlLnRvTG93ZXJDYXNlKCkgOiByYXdWYWx1ZTtcbiAgY29uc3QgY29uZGl0aW9uVmFsdWUgPSB0eXBlb2YgY29uZGl0aW9uLnZhbHVlID09PSAnc3RyaW5nJyA/IGNvbmRpdGlvbi52YWx1ZS50b0xvd2VyQ2FzZSgpIDogY29uZGl0aW9uLnZhbHVlO1xuXG4gIC8vIENvbmRpdGlvbmFsIExvZ2dpbmcgZm9yIGRlYnVnZ2luZ1xuICBpZiAobG9nZ2luZ0VuYWJsZWQpIHtcbiAgICBjb25zb2xlLmxvZygnQ29uZGl0aW9uOicsIGNvbmRpdGlvbik7XG4gICAgY29uc29sZS5sb2coJ0l0ZW0gVmFsdWU6JywgaXRlbVZhbHVlKTtcbiAgICBjb25zb2xlLmxvZygnQ29uZGl0aW9uIFZhbHVlOicsIGNvbmRpdGlvblZhbHVlKTtcbiAgfVxuXG4gIGxldCByZXN1bHQ6IGJvb2xlYW47XG4gIGNvbnN0IHZhbHVlVG9Db21wYXJlID0gaXNOaWwoY29uZGl0aW9uLmZpZWxkKSB8fCBjb25kaXRpb24uZmllbGQgPT09ICcnID8gY29uZGl0aW9uVmFsdWUgOiBpdGVtVmFsdWU7XG4gIGNvbnN0IGNvbmRpdGlvblR5cGUgPSBjb25kaXRpb24/Lm9wZXJhdG9yPy50eXBlO1xuICBpZiAoIWNvbmRpdGlvblR5cGUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNvbnN0IG9wID0gU3RyaW5nKGNvbmRpdGlvblR5cGUpO1xuXG4gIHN3aXRjaCAob3ApIHtcbiAgICBjYXNlICdlcXVhbCc6XG4gICAgY2FzZSAnZXEnOlxuICAgICAgcmVzdWx0ID0gaXNFcXVhbCh2YWx1ZVRvQ29tcGFyZSwgY29uZGl0aW9uVmFsdWUpO1xuICAgICAgaWYgKGxvZ2dpbmdFbmFibGVkKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdFcXVhbCBjaGVjayByZXN1bHQ6JywgcmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ25vdEVxdWFsJzpcbiAgICBjYXNlICduZSc6XG4gICAgY2FzZSAnbmVxJzpcbiAgICAgIHJlc3VsdCA9ICFpc0VxdWFsKHZhbHVlVG9Db21wYXJlLCBjb25kaXRpb25WYWx1ZSk7XG4gICAgICBpZiAobG9nZ2luZ0VuYWJsZWQpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ05vdCBlcXVhbCBjaGVjayByZXN1bHQ6JywgcmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2dyZWF0ZXJUaGFuJzpcbiAgICBjYXNlICdndCc6XG4gICAgICByZXN1bHQgPSBndCh2YWx1ZVRvQ29tcGFyZSwgY29uZGl0aW9uVmFsdWUpO1xuICAgICAgaWYgKGxvZ2dpbmdFbmFibGVkKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdHcmVhdGVyIHRoYW4gY2hlY2sgcmVzdWx0OicsIHJlc3VsdCk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlICdsZXNzVGhhbic6XG4gICAgY2FzZSAnbHQnOlxuICAgICAgcmVzdWx0ID0gbHQodmFsdWVUb0NvbXBhcmUsIGNvbmRpdGlvblZhbHVlKTtcbiAgICAgIGlmIChsb2dnaW5nRW5hYmxlZCkge1xuICAgICAgICBjb25zb2xlLmxvZygnTGVzcyB0aGFuIGNoZWNrIHJlc3VsdDonLCByZXN1bHQpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZ3JlYXRlclRoYW5PckVxdWFsJzpcbiAgICBjYXNlICdndGUnOlxuICAgICAgcmVzdWx0ID0gZ3RlKHZhbHVlVG9Db21wYXJlLCBjb25kaXRpb25WYWx1ZSk7XG4gICAgICBpZiAobG9nZ2luZ0VuYWJsZWQpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ0dyZWF0ZXIgdGhhbiBvciBlcXVhbCBjaGVjayByZXN1bHQ6JywgcmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2xlc3NUaGFuT3JFcXVhbCc6XG4gICAgY2FzZSAnbHRlJzpcbiAgICAgIHJlc3VsdCA9IGx0ZSh2YWx1ZVRvQ29tcGFyZSwgY29uZGl0aW9uVmFsdWUpO1xuICAgICAgaWYgKGxvZ2dpbmdFbmFibGVkKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdMZXNzIHRoYW4gb3IgZXF1YWwgY2hlY2sgcmVzdWx0OicsIHJlc3VsdCk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlICdjb250YWlucyc6XG4gICAgICBpZiAodHlwZW9mIHZhbHVlVG9Db21wYXJlID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXN1bHQgPSBpbmNsdWRlcyh2YWx1ZVRvQ29tcGFyZSwgY29uZGl0aW9uVmFsdWUpO1xuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlVG9Db21wYXJlKSkge1xuICAgICAgICByZXN1bHQgPSBpbmNsdWRlcyhcbiAgICAgICAgICB2YWx1ZVRvQ29tcGFyZS5tYXAoKHZhbCkgPT4gdmFsLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSksXG4gICAgICAgICAgY29uZGl0aW9uVmFsdWUsXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChsb2dnaW5nRW5hYmxlZCkge1xuICAgICAgICBjb25zb2xlLmxvZygnQ29udGFpbnMgY2hlY2sgcmVzdWx0OicsIHJlc3VsdCk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlICdpbic6XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShjb25kaXRpb25WYWx1ZSkpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZVRvQ29tcGFyZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICByZXN1bHQgPSBjb25kaXRpb25WYWx1ZS5zb21lKHZhbCA9PlxuICAgICAgICAgICAgdHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgPyB2YWwudG9Mb3dlckNhc2UoKSA9PT0gdmFsdWVUb0NvbXBhcmUgOiB2YWwgPT09IHZhbHVlVG9Db21wYXJlXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlVG9Db21wYXJlKSkge1xuICAgICAgICAgIHJlc3VsdCA9IHZhbHVlVG9Db21wYXJlLnNvbWUodmFsID0+XG4gICAgICAgICAgICBjb25kaXRpb25WYWx1ZS5zb21lKGNvbmRWYWwgPT5cbiAgICAgICAgICAgICAgdHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIGNvbmRWYWwgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgPyB2YWwudG9Mb3dlckNhc2UoKSA9PT0gY29uZFZhbC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgOiB2YWwgPT09IGNvbmRWYWxcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IGNvbmRpdGlvblZhbHVlLmluY2x1ZGVzKHZhbHVlVG9Db21wYXJlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAobG9nZ2luZ0VuYWJsZWQpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ0luIGNoZWNrIHJlc3VsdDonLCByZXN1bHQpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnbm90Q29udGFpbnMnOlxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZVRvQ29tcGFyZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmVzdWx0ID0gIWluY2x1ZGVzKHZhbHVlVG9Db21wYXJlLCBjb25kaXRpb25WYWx1ZSk7XG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWVUb0NvbXBhcmUpKSB7XG4gICAgICAgIHJlc3VsdCA9ICFpbmNsdWRlcyhcbiAgICAgICAgICB2YWx1ZVRvQ29tcGFyZS5tYXAoKHZhbCkgPT4gdmFsLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSksXG4gICAgICAgICAgY29uZGl0aW9uVmFsdWUsXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChsb2dnaW5nRW5hYmxlZCkge1xuICAgICAgICBjb25zb2xlLmxvZygnTm90IGNvbnRhaW5zIGNoZWNrIHJlc3VsdDonLCByZXN1bHQpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnc3RhcnRzV2l0aCc6XG4gICAgICByZXN1bHQgPSB0eXBlb2YgdmFsdWVUb0NvbXBhcmUgPT09ICdzdHJpbmcnICYmIHN0YXJ0c1dpdGgodmFsdWVUb0NvbXBhcmUsIGNvbmRpdGlvblZhbHVlIGFzIHN0cmluZyk7XG4gICAgICBpZiAobG9nZ2luZ0VuYWJsZWQpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ1N0YXJ0cyB3aXRoIGNoZWNrIHJlc3VsdDonLCByZXN1bHQpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZW5kc1dpdGgnOlxuICAgICAgcmVzdWx0ID0gdHlwZW9mIHZhbHVlVG9Db21wYXJlID09PSAnc3RyaW5nJyAmJiBlbmRzV2l0aCh2YWx1ZVRvQ29tcGFyZSwgY29uZGl0aW9uVmFsdWUgYXMgc3RyaW5nKTtcbiAgICAgIGlmIChsb2dnaW5nRW5hYmxlZCkge1xuICAgICAgICBjb25zb2xlLmxvZygnRW5kcyB3aXRoIGNoZWNrIHJlc3VsdDonLCByZXN1bHQpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnaXNFbXB0eSc6XG4gICAgICByZXN1bHQgPSBpc0VtcHR5KHZhbHVlVG9Db21wYXJlKTtcbiAgICAgIGlmIChsb2dnaW5nRW5hYmxlZCkge1xuICAgICAgICBjb25zb2xlLmxvZygnSXMgZW1wdHkgY2hlY2sgcmVzdWx0OicsIHJlc3VsdCk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlICdpc051bGwnOlxuICAgICAgcmVzdWx0ID0gaXNOaWwodmFsdWVUb0NvbXBhcmUpO1xuICAgICAgaWYgKGxvZ2dpbmdFbmFibGVkKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdJcyBudWxsIGNoZWNrIHJlc3VsdDonLCByZXN1bHQpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnaXNOb3RFbXB0eSc6XG4gICAgICByZXN1bHQgPSAhaXNFbXB0eSh2YWx1ZVRvQ29tcGFyZSk7XG4gICAgICBpZiAobG9nZ2luZ0VuYWJsZWQpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ0lzIG5vdCBlbXB0eSBjaGVjayByZXN1bHQ6JywgcmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2JldHdlZW4nOlxuICAgICAgcmVzdWx0ID0gIWlzTmlsKHZhbHVlVG9Db21wYXJlKSAmJiB2YWx1ZVRvQ29tcGFyZSA+PSAoY29uZGl0aW9uLnZhbHVlIGFzIHsgZnJvbTogbnVtYmVyOyB0bzogbnVtYmVyIH0pLmZyb20gJiYgdmFsdWVUb0NvbXBhcmUgPD0gKGNvbmRpdGlvbi52YWx1ZSBhcyB7IGZyb206IG51bWJlcjsgdG86IG51bWJlciB9KS50bztcbiAgICAgIGlmIChsb2dnaW5nRW5hYmxlZCkge1xuICAgICAgICBjb25zb2xlLmxvZygnQmV0d2VlbiBjaGVjayByZXN1bHQ6JywgcmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXN1bHQgPSB0cnVlO1xuICAgICAgaWYgKGxvZ2dpbmdFbmFibGVkKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdEZWZhdWx0IGNhc2UsIHJldHVybmluZyB0cnVlJyk7XG4gICAgICB9XG4gIH1cblxuICAvLyBBcHBseSBuZWdhdGl2ZSBmbGFnIGlmIHByZXNlbnQgb24gb3BlcmF0b3IgKGludmVydCB0aGUgcmVzdWx0KVxuICBjb25zdCBpc05lZ2F0aXZlID0gISFjb25kaXRpb24/Lm9wZXJhdG9yPy5uZWdhdGl2ZTtcbiAgcmV0dXJuIGlzTmVnYXRpdmUgPyAhcmVzdWx0IDogcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlGaWx0ZXJBcnJheShcbiAgZGF0YUFycmF5OiBhbnlbXSxcbiAgZmlsdGVycz86IEFYRGF0YVNvdXJjZUZpbHRlck9wdGlvbltdLFxuICBsb2dpYzogJ2FuZCcgfCAnb3InID0gJ2FuZCcsXG4pOiBhbnlbXSB7XG4gIGlmIChmaWx0ZXJzICYmIGZpbHRlcnMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGRhdGFBcnJheS5maWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgIGlmIChsb2dpYyA9PT0gJ2FuZCcpIHtcbiAgICAgICAgcmV0dXJuIGZpbHRlcnMuZXZlcnkoKGYpID0+IHtcbiAgICAgICAgICByZXR1cm4gZi5maWx0ZXJzID8gYXBwbHlGaWx0ZXJBcnJheShbaXRlbV0sIGYuZmlsdGVycywgZi5sb2dpYykubGVuZ3RoID4gMCA6IGFwcGx5Q29uZGl0aW9uKGl0ZW0sIGYpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGxvZ2ljID09PSAnb3InXG4gICAgICAgIHJldHVybiBmaWx0ZXJzLnNvbWUoKGYpID0+IHtcbiAgICAgICAgICByZXR1cm4gZi5maWx0ZXJzID8gYXBwbHlGaWx0ZXJBcnJheShbaXRlbV0sIGYuZmlsdGVycywgZi5sb2dpYykubGVuZ3RoID4gMCA6IGFwcGx5Q29uZGl0aW9uKGl0ZW0sIGYpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZGF0YUFycmF5O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVNvcnRBcnJheShkYXRhQXJyYXk6IGFueSwgc29ydHM6IEFYRGF0YVNvdXJjZVNvcnRPcHRpb25bXSkge1xuICBpZiAoc29ydHMgJiYgc29ydHMubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IHNvcnRGaWVsZHMgPSBzb3J0cy5tYXAoKHMpID0+IHMuZmllbGQpO1xuICAgIGNvbnN0IHNvcnRPcmRlcnMgPSBzb3J0cy5tYXAoKHMpID0+IHMuZGlyKTtcbiAgICByZXR1cm4gb3JkZXJCeShkYXRhQXJyYXksIHNvcnRGaWVsZHMsIHNvcnRPcmRlcnMpO1xuICB9IGVsc2UgcmV0dXJuIGRhdGFBcnJheTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UGFnaW5hdGlvbjxUPihkYXRhQXJyYXk6IFRbXSwgc2tpcDogbnVtYmVyLCB0YWtlOiBudW1iZXIpOiBUW10ge1xuICByZXR1cm4gZGF0YUFycmF5LnNsaWNlKHNraXAsIHNraXAgKyB0YWtlKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwcGx5UXVlcnlBcnJheTxUPihcbiAgZGF0YUFycmF5OiBUW10sXG4gIHF1ZXJ5OiBBWERhdGFTb3VyY2VRdWVyeSxcbik6IFByb21pc2U8QVhEYXRhU291cmNlQ2FsbGJhY2tSZXN1bHQ8VD4+IHtcbiAgbGV0IHJlc3VsdCA9IFsuLi5kYXRhQXJyYXldO1xuXG4gIC8vIEFwcGx5IGZpbHRlcmluZ1xuICBpZiAocXVlcnkuZmlsdGVyKSB7XG4gICAgcmVzdWx0ID0gYXBwbHlGaWx0ZXJBcnJheShyZXN1bHQsIFtxdWVyeS5maWx0ZXJdLCBxdWVyeS5maWx0ZXIubG9naWMgPz8gJ2FuZCcpO1xuICB9XG5cbiAgLy8gU3RvcmUgdG90YWwgY291bnQgYmVmb3JlIHBhZ2luYXRpb25cbiAgY29uc3QgdG90YWwgPSByZXN1bHQubGVuZ3RoO1xuXG4gIC8vIEFwcGx5IHNvcnRpbmdcbiAgaWYgKHF1ZXJ5LnNvcnQgJiYgcXVlcnkuc29ydC5sZW5ndGggPiAwKSB7XG4gICAgcmVzdWx0ID0gYXBwbHlTb3J0QXJyYXkocmVzdWx0LCBxdWVyeS5zb3J0KTtcbiAgfVxuXG4gIC8vIEFwcGx5IHBhZ2luYXRpb25cbiAgcmVzdWx0ID0gYXBwbHlQYWdpbmF0aW9uKHJlc3VsdCwgcXVlcnkuc2tpcCwgcXVlcnkudGFrZSk7XG5cbiAgcmV0dXJuIHtcbiAgICBpdGVtczogcmVzdWx0LFxuICAgIHRvdGFsLFxuICB9O1xufVxuIl19","import { computed, Injectable, signal } from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\n//#region ---- Type Definitions ----\n/**\n * Screen Size Enum\n */\nexport var AXPScreenSize;\n(function (AXPScreenSize) {\n AXPScreenSize[\"Small\"] = \"small\";\n AXPScreenSize[\"Medium\"] = \"medium\";\n AXPScreenSize[\"Large\"] = \"large\";\n})(AXPScreenSize || (AXPScreenSize = {}));\n/**\n * Device Type Enum\n */\nexport var AXPDeviceType;\n(function (AXPDeviceType) {\n AXPDeviceType[\"Mobile\"] = \"mobile\";\n AXPDeviceType[\"Tablet\"] = \"tablet\";\n AXPDeviceType[\"Desktop\"] = \"desktop\";\n})(AXPDeviceType || (AXPDeviceType = {}));\n//#endregion\n//#region ---- Helper Functions ----\n/**\n * Get the initial screen size based on window width\n */\nconst getScreenSize = () => {\n const width = window.innerWidth;\n if (width <= 600)\n return AXPScreenSize.Small;\n if (width <= 1024)\n return AXPScreenSize.Medium;\n return AXPScreenSize.Large;\n};\n/**\n * Determine device type based on viewport width\n */\nconst getDeviceType = () => {\n const width = window.innerWidth;\n if (width <= 600) {\n return AXPDeviceType.Mobile;\n }\n else if (width <= 1024) {\n return AXPDeviceType.Tablet;\n }\n return AXPDeviceType.Desktop;\n};\n/**\n * Determine if the device supports touch\n */\nconst isTouchDevice = () => {\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n};\n//#endregion\n//#region ---- Device Service ----\n/**\n * Injectable service that provides reactive device and screen size information.\n * Monitors window resize events and updates signals accordingly.\n */\nexport class AXPDeviceService {\n //#endregion\n //#region ---- Constructor & Lifecycle ----\n constructor() {\n //#region ---- State Signals ----\n /**\n * Current screen size (Small, Medium, Large)\n */\n this.screenSize = signal(getScreenSize(), ...(ngDevMode ? [{ debugName: \"screenSize\" }] : []));\n /**\n * Current device type (Mobile, Tablet, Desktop)\n */\n this.deviceType = signal(getDeviceType(), ...(ngDevMode ? [{ debugName: \"deviceType\" }] : []));\n /**\n * Whether the device supports touch input\n */\n this.isTouchDevice = signal(isTouchDevice(), ...(ngDevMode ? [{ debugName: \"isTouchDevice\" }] : []));\n //#endregion\n //#region ---- Computed Signals ----\n /**\n * Whether the screen size is Small\n */\n this.isSmall = computed(() => this.screenSize() === AXPScreenSize.Small, ...(ngDevMode ? [{ debugName: \"isSmall\" }] : []));\n /**\n * Whether the screen size is Medium\n */\n this.isMedium = computed(() => this.screenSize() === AXPScreenSize.Medium, ...(ngDevMode ? [{ debugName: \"isMedium\" }] : []));\n /**\n * Whether the screen size is Large\n */\n this.isLarge = computed(() => this.screenSize() === AXPScreenSize.Large, ...(ngDevMode ? [{ debugName: \"isLarge\" }] : []));\n /**\n * Whether the device is Mobile\n */\n this.isMobileDevice = computed(() => this.deviceType() === AXPDeviceType.Mobile, ...(ngDevMode ? [{ debugName: \"isMobileDevice\" }] : []));\n /**\n * Whether the device is Tablet\n */\n this.isTabletDevice = computed(() => this.deviceType() === AXPDeviceType.Tablet, ...(ngDevMode ? [{ debugName: \"isTabletDevice\" }] : []));\n /**\n * Whether the device is Desktop\n */\n this.isDesktopDevice = computed(() => this.deviceType() === AXPDeviceType.Desktop, ...(ngDevMode ? [{ debugName: \"isDesktopDevice\" }] : []));\n /**\n * Whether the device supports touch (alias for isTouchDevice)\n */\n this.isTouchScreen = computed(() => this.isTouchDevice(), ...(ngDevMode ? [{ debugName: \"isTouchScreen\" }] : []));\n //#endregion\n //#region ---- Private Properties ----\n this._resizeListener = null;\n this._setupResizeListener();\n }\n //#endregion\n //#region ---- Private Methods ----\n /**\n * Update screen size and device type based on window width\n */\n _updateScreenSize() {\n const width = window.innerWidth;\n let newScreenSize;\n if (width <= 600) {\n newScreenSize = AXPScreenSize.Small;\n }\n else if (width <= 1024) {\n newScreenSize = AXPScreenSize.Medium;\n }\n else {\n newScreenSize = AXPScreenSize.Large;\n }\n // Determine device type based on width to keep it reactive to devtools emulation\n let newDeviceType;\n if (width <= 600) {\n newDeviceType = AXPDeviceType.Mobile;\n }\n else if (width <= 1024) {\n newDeviceType = AXPDeviceType.Tablet;\n }\n else {\n newDeviceType = AXPDeviceType.Desktop;\n }\n if (newScreenSize !== this.screenSize() || newDeviceType !== this.deviceType()) {\n this.screenSize.set(newScreenSize);\n this.deviceType.set(newDeviceType);\n }\n }\n /**\n * Set up event listener for window resize\n */\n _setupResizeListener() {\n this._resizeListener = fromEvent(window, 'resize')\n .pipe(debounceTime(250)) // 250ms debounce delay\n .subscribe(() => {\n this._updateScreenSize();\n });\n }\n /**\n * Remove event listener for window resize\n */\n _removeResizeListener() {\n if (this._resizeListener) {\n this._resizeListener.unsubscribe();\n this._resizeListener = null;\n }\n }\n //#endregion\n //#region ---- Public Methods ----\n /**\n * Clean up resources when service is destroyed\n */\n destroy() {\n this._removeResizeListener();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDeviceService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDeviceService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDeviceService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2NvcmUvc3JjL2xpYi91dGlscy9kZXZpY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUU5Qyx3Q0FBd0M7QUFFeEM7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxhQUlYO0FBSkQsV0FBWSxhQUFhO0lBQ3ZCLGdDQUFlLENBQUE7SUFDZixrQ0FBaUIsQ0FBQTtJQUNqQixnQ0FBZSxDQUFBO0FBQ2pCLENBQUMsRUFKVyxhQUFhLEtBQWIsYUFBYSxRQUl4QjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksYUFJWDtBQUpELFdBQVksYUFBYTtJQUN2QixrQ0FBaUIsQ0FBQTtJQUNqQixrQ0FBaUIsQ0FBQTtJQUNqQixvQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBSlcsYUFBYSxLQUFiLGFBQWEsUUFJeEI7QUFFRCxZQUFZO0FBRVosd0NBQXdDO0FBRXhDOztHQUVHO0FBQ0gsTUFBTSxhQUFhLEdBQUcsR0FBa0IsRUFBRTtJQUN4QyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO0lBQ2hDLElBQUksS0FBSyxJQUFJLEdBQUc7UUFBRSxPQUFPLGFBQWEsQ0FBQyxLQUFLLENBQUM7SUFDN0MsSUFBSSxLQUFLLElBQUksSUFBSTtRQUFFLE9BQU8sYUFBYSxDQUFDLE1BQU0sQ0FBQztJQUMvQyxPQUFPLGFBQWEsQ0FBQyxLQUFLLENBQUM7QUFDN0IsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLGFBQWEsR0FB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QUMscUJBQXFCLEVBQUUsQ0FBQztJQUMvQixDQUFDOytHQXhJVSxnQkFBZ0I7bUhBQWhCLGdCQUFnQixjQUZmLE1BQU07OzRGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vLyNyZWdpb24gLS0tLSAgIFR5cGUgRGVmaW5pdGlvbnMgICAtLS0tXG5cbi8qKlxuICogU2NyZWVuIFNpemUgRW51bVxuICovXG5leHBvcnQgZW51bSBBWFBTY3JlZW5TaXplIHtcbiAgU21hbGwgPSAnc21hbGwnLFxuICBNZWRpdW0gPSAnbWVkaXVtJyxcbiAgTGFyZ2UgPSAnbGFyZ2UnLFxufVxuXG4vKipcbiAqIERldmljZSBUeXBlIEVudW1cbiAqL1xuZXhwb3J0IGVudW0gQVhQRGV2aWNlVHlwZSB7XG4gIE1vYmlsZSA9ICdtb2JpbGUnLFxuICBUYWJsZXQgPSAndGFibGV0JyxcbiAgRGVza3RvcCA9ICdkZXNrdG9wJyxcbn1cblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgSGVscGVyIEZ1bmN0aW9ucyAgIC0tLS1cblxuLyoqXG4gKiBHZXQgdGhlIGluaXRpYWwgc2NyZWVuIHNpemUgYmFzZWQgb24gd2luZG93IHdpZHRoXG4gKi9cbmNvbnN0IGdldFNjcmVlblNpemUgPSAoKTogQVhQU2NyZWVuU2l6ZSA9PiB7XG4gIGNvbnN0IHdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gIGlmICh3aWR0aCA8PSA2MDApIHJldHVybiBBWFBTY3JlZW5TaXplLlNtYWxsO1xuICBpZiAod2lkdGggPD0gMTAyNCkgcmV0dXJuIEFYUFNjcmVlblNpemUuTWVkaXVtO1xuICByZXR1cm4gQVhQU2NyZWVuU2l6ZS5MYXJnZTtcbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lIGRldmljZSB0eXBlIGJhc2VkIG9uIHZpZXdwb3J0IHdpZHRoXG4gKi9cbmNvbnN0IGdldERldmljZVR5cGUgPSAoKTogQVhQRGV2aWNlVHlwZSA9PiB7XG4gIGNvbnN0IHdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gIGlmICh3aWR0aCA8PSA2MDApIHtcbiAgICByZXR1cm4gQVhQRGV2aWNlVHlwZS5Nb2JpbGU7XG4gIH0gZWxzZSBpZiAod2lkdGggPD0gMTAyNCkge1xuICAgIHJldHVybiBBWFBEZXZpY2VUeXBlLlRhYmxldDtcbiAgfVxuICByZXR1cm4gQVhQRGV2aWNlVHlwZS5EZXNrdG9wO1xufTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgdGhlIGRldmljZSBzdXBwb3J0cyB0b3VjaFxuICovXG5jb25zdCBpc1RvdWNoRGV2aWNlID0gKCk6IGJvb2xlYW4gPT4ge1xuICByZXR1cm4gJ29udG91Y2hzdGFydCcgaW4gd2luZG93IHx8IG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyA+IDA7XG59O1xuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIC0tLS0gICBEZXZpY2UgU2VydmljZSAgIC0tLS1cblxuLyoqXG4gKiBJbmplY3RhYmxlIHNlcnZpY2UgdGhhdCBwcm92aWRlcyByZWFjdGl2ZSBkZXZpY2UgYW5kIHNjcmVlbiBzaXplIGluZm9ybWF0aW9uLlxuICogTW9uaXRvcnMgd2luZG93IHJlc2l6ZSBldmVudHMgYW5kIHVwZGF0ZXMgc2lnbmFscyBhY2NvcmRpbmdseS5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFYUERldmljZVNlcnZpY2Uge1xuICAvLyNyZWdpb24gLS0tLSAgIFN0YXRlIFNpZ25hbHMgICAtLS0tXG5cbiAgLyoqXG4gICAqIEN1cnJlbnQgc2NyZWVuIHNpemUgKFNtYWxsLCBNZWRpdW0sIExhcmdlKVxuICAgKi9cbiAgcmVhZG9ubHkgc2NyZWVuU2l6ZSA9IHNpZ25hbDxBWFBTY3JlZW5TaXplPihnZXRTY3JlZW5TaXplKCkpO1xuXG4gIC8qKlxuICAgKiBDdXJyZW50IGRldmljZSB0eXBlIChNb2JpbGUsIFRhYmxldCwgRGVza3RvcClcbiAgICovXG4gIHJlYWRvbmx5IGRldmljZVR5cGUgPSBzaWduYWw8QVhQRGV2aWNlVHlwZT4oZ2V0RGV2aWNlVHlwZSgpKTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZGV2aWNlIHN1cHBvcnRzIHRvdWNoIGlucHV0XG4gICAqL1xuICByZWFkb25seSBpc1RvdWNoRGV2aWNlID0gc2lnbmFsPGJvb2xlYW4+KGlzVG91Y2hEZXZpY2UoKSk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBDb21wdXRlZCBTaWduYWxzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBzY3JlZW4gc2l6ZSBpcyBTbWFsbFxuICAgKi9cbiAgcmVhZG9ubHkgaXNTbWFsbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2NyZWVuU2l6ZSgpID09PSBBWFBTY3JlZW5TaXplLlNtYWxsKTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgc2NyZWVuIHNpemUgaXMgTWVkaXVtXG4gICAqL1xuICByZWFkb25seSBpc01lZGl1bSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2NyZWVuU2l6ZSgpID09PSBBWFBTY3JlZW5TaXplLk1lZGl1bSk7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHNjcmVlbiBzaXplIGlzIExhcmdlXG4gICAqL1xuICByZWFkb25seSBpc0xhcmdlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zY3JlZW5TaXplKCkgPT09IEFYUFNjcmVlblNpemUuTGFyZ2UpO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBkZXZpY2UgaXMgTW9iaWxlXG4gICAqL1xuICByZWFkb25seSBpc01vYmlsZURldmljZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZGV2aWNlVHlwZSgpID09PSBBWFBEZXZpY2VUeXBlLk1vYmlsZSk7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGRldmljZSBpcyBUYWJsZXRcbiAgICovXG4gIHJlYWRvbmx5IGlzVGFibGV0RGV2aWNlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5kZXZpY2VUeXBlKCkgPT09IEFYUERldmljZVR5cGUuVGFibGV0KTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZGV2aWNlIGlzIERlc2t0b3BcbiAgICovXG4gIHJlYWRvbmx5IGlzRGVza3RvcERldmljZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZGV2aWNlVHlwZSgpID09PSBBWFBEZXZpY2VUeXBlLkRlc2t0b3ApO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBkZXZpY2Ugc3VwcG9ydHMgdG91Y2ggKGFsaWFzIGZvciBpc1RvdWNoRGV2aWNlKVxuICAgKi9cbiAgcmVhZG9ubHkgaXNUb3VjaFNjcmVlbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaXNUb3VjaERldmljZSgpKTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIFByaXZhdGUgUHJvcGVydGllcyAgIC0tLS1cblxuICBwcml2YXRlIF9yZXNpemVMaXN0ZW5lcjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBDb25zdHJ1Y3RvciAmIExpZmVjeWNsZSAgIC0tLS1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9zZXR1cFJlc2l6ZUxpc3RlbmVyKCk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIFByaXZhdGUgTWV0aG9kcyAgIC0tLS1cblxuICAvKipcbiAgICogVXBkYXRlIHNjcmVlbiBzaXplIGFuZCBkZXZpY2UgdHlwZSBiYXNlZCBvbiB3aW5kb3cgd2lkdGhcbiAgICovXG4gIHByaXZhdGUgX3VwZGF0ZVNjcmVlblNpemUoKTogdm9pZCB7XG4gICAgY29uc3Qgd2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICBsZXQgbmV3U2NyZWVuU2l6ZTogQVhQU2NyZWVuU2l6ZTtcblxuICAgIGlmICh3aWR0aCA8PSA2MDApIHtcbiAgICAgIG5ld1NjcmVlblNpemUgPSBBWFBTY3JlZW5TaXplLlNtYWxsO1xuICAgIH0gZWxzZSBpZiAod2lkdGggPD0gMTAyNCkge1xuICAgICAgbmV3U2NyZWVuU2l6ZSA9IEFYUFNjcmVlblNpemUuTWVkaXVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXdTY3JlZW5TaXplID0gQVhQU2NyZWVuU2l6ZS5MYXJnZTtcbiAgICB9XG5cbiAgICAvLyBEZXRlcm1pbmUgZGV2aWNlIHR5cGUgYmFzZWQgb24gd2lkdGggdG8ga2VlcCBpdCByZWFjdGl2ZSB0byBkZXZ0b29scyBlbXVsYXRpb25cbiAgICBsZXQgbmV3RGV2aWNlVHlwZTogQVhQRGV2aWNlVHlwZTtcbiAgICBpZiAod2lkdGggPD0gNjAwKSB7XG4gICAgICBuZXdEZXZpY2VUeXBlID0gQVhQRGV2aWNlVHlwZS5Nb2JpbGU7XG4gICAgfSBlbHNlIGlmICh3aWR0aCA8PSAxMDI0KSB7XG4gICAgICBuZXdEZXZpY2VUeXBlID0gQVhQRGV2aWNlVHlwZS5UYWJsZXQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld0RldmljZVR5cGUgPSBBWFBEZXZpY2VUeXBlLkRlc2t0b3A7XG4gICAgfVxuXG4gICAgaWYgKG5ld1NjcmVlblNpemUgIT09IHRoaXMuc2NyZWVuU2l6ZSgpIHx8IG5ld0RldmljZVR5cGUgIT09IHRoaXMuZGV2aWNlVHlwZSgpKSB7XG4gICAgICB0aGlzLnNjcmVlblNpemUuc2V0KG5ld1NjcmVlblNpemUpO1xuICAgICAgdGhpcy5kZXZpY2VUeXBlLnNldChuZXdEZXZpY2VUeXBlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0IHVwIGV2ZW50IGxpc3RlbmVyIGZvciB3aW5kb3cgcmVzaXplXG4gICAqL1xuICBwcml2YXRlIF9zZXR1cFJlc2l6ZUxpc3RlbmVyKCk6IHZvaWQge1xuICAgIHRoaXMuX3Jlc2l6ZUxpc3RlbmVyID0gZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoMjUwKSkgLy8gMjUwbXMgZGVib3VuY2UgZGVsYXlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLl91cGRhdGVTY3JlZW5TaXplKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgZXZlbnQgbGlzdGVuZXIgZm9yIHdpbmRvdyByZXNpemVcbiAgICovXG4gIHByaXZhdGUgX3JlbW92ZVJlc2l6ZUxpc3RlbmVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9yZXNpemVMaXN0ZW5lcikge1xuICAgICAgdGhpcy5fcmVzaXplTGlzdGVuZXIudW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuX3Jlc2l6ZUxpc3RlbmVyID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIFB1YmxpYyBNZXRob2RzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBDbGVhbiB1cCByZXNvdXJjZXMgd2hlbiBzZXJ2aWNlIGlzIGRlc3Ryb3llZFxuICAgKi9cbiAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9yZW1vdmVSZXNpemVMaXN0ZW5lcigpO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG59XG5cbi8vI2VuZHJlZ2lvblxuIl19","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * Service for applying and resetting text highlighting within specified HTML elements.\n */\nexport class AXHighlightService {\n constructor() { }\n /**\n * Highlights all occurrences of a search value within the elements matching the provided query selector.\n *\n * @param querySelector - CSS selector to identify target elements.\n * @param searchValue - Text to search and highlight.\n */\n highlight(querySelector, searchValue) {\n this.clear();\n if (!querySelector || !searchValue) {\n return;\n }\n this.querySelector = querySelector;\n this.searchValue = searchValue;\n const elements = document.querySelectorAll(querySelector);\n elements.forEach((element) => {\n this.applyHighlight(element);\n });\n }\n /**\n * Resets all highlighted text within the elements matching the previously used query selector.\n */\n clear() {\n const elements = document.querySelectorAll(`${this.querySelector} .ax-highlight-text`);\n elements.forEach((element) => {\n let combinedText = '';\n element.querySelectorAll('span').forEach((span) => {\n combinedText += span.textContent;\n });\n const mergedSpan = document.createElement('span');\n mergedSpan.textContent = combinedText;\n element?.parentNode?.replaceChild(mergedSpan, element);\n });\n }\n /**\n * Applies highlighting to a specific element by matching text against the search value.\n *\n * @param element - The HTML element to apply highlights to.\n */\n applyHighlight(element) {\n const searchRegex = new RegExp(`(${this.searchValue})`, 'gi');\n this.recursivelyHighlight(element, searchRegex);\n }\n /**\n * Recursively applies highlighting to text nodes within an element.\n *\n * @param element - The current node being processed.\n * @param searchRegex - Regular expression for matching text to highlight.\n */\n recursivelyHighlight(element, searchRegex) {\n const childNodes = Array.from(element.childNodes);\n childNodes.forEach((node) => {\n if (node.nodeType === Node.TEXT_NODE) {\n const textContent = node.textContent || '';\n if (textContent.match(searchRegex)) {\n const highlightedHTML = this.createHighlightedHTML(textContent, searchRegex);\n const tempContainer = document.createElement('div');\n tempContainer.innerHTML = highlightedHTML;\n const fragment = document.createDocumentFragment();\n Array.from(tempContainer.childNodes).forEach((child) => fragment.appendChild(child));\n node.replaceWith(fragment);\n }\n }\n else if (node.nodeType === Node.ELEMENT_NODE) {\n this.recursivelyHighlight(node, searchRegex);\n }\n });\n }\n /**\n * Generates the HTML structure for highlighted text.\n *\n * @param textContent - The original text content to process.\n * @param searchRegex - Regular expression for matching text to highlight.\n * @returns A string of HTML with highlighted portions wrapped in span elements.\n */\n createHighlightedHTML(textContent, searchRegex) {\n let parts = [];\n let match;\n let lastIndex = 0;\n let resultHTML = '<span class=\"ax-highlight-text\">';\n while ((match = searchRegex.exec(textContent)) !== null) {\n if (match.index > lastIndex) {\n resultHTML += `<span>${textContent.slice(lastIndex, match.index)}</span>`;\n }\n resultHTML += `<span class=\"ax-highlight\">${match[0]}</span>`;\n lastIndex = searchRegex.lastIndex;\n }\n if (lastIndex < textContent.length) {\n resultHTML += `<span>${textContent.slice(lastIndex)}</span>`;\n }\n resultHTML += '</span>';\n return resultHTML;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXHighlightService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXHighlightService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXHighlightService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlnaGxpZ2h0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2NvcmUvc3JjL2xpYi91dGlscy9oaWdobGlnaHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUzQzs7R0FFRztBQUlILE1BQU0sT0FBTyxrQkFBa0I7SUFJN0IsZ0JBQWdCLENBQUM7SUFFakI7Ozs7O09BS0c7SUFDSCxTQUFTLENBQUMsYUFBcUIsRUFBRSxXQUFtQjtRQUNsRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkMsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDMUQsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBc0IsQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSztRQUNWLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLHNCQUFzQixDQUFDLENBQUM7UUFDeEYsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQzNCLElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztZQUN0QixPQUFPLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ2hE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TUFBTSxFQUFFLENBQUM7WUFDbkMsVUFBVSxJQUFJLFNBQVMsV0FBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDO1FBQy9ELENBQUM7UUFFRCxVQUFVLElBQUksU0FBUyxDQUFDO1FBRXhCLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7K0dBN0dVLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzRGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogU2VydmljZSBmb3IgYXBwbHlpbmcgYW5kIHJlc2V0dGluZyB0ZXh0IGhpZ2hsaWdodGluZyB3aXRoaW4gc3BlY2lmaWVkIEhUTUwgZWxlbWVudHMuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBWEhpZ2hsaWdodFNlcnZpY2Uge1xuICBwcml2YXRlIHF1ZXJ5U2VsZWN0b3I6IHN0cmluZyB8IG51bGw7XG4gIHByaXZhdGUgc2VhcmNoVmFsdWU6IHN0cmluZyB8IG51bGw7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICAvKipcbiAgICogSGlnaGxpZ2h0cyBhbGwgb2NjdXJyZW5jZXMgb2YgYSBzZWFyY2ggdmFsdWUgd2l0aGluIHRoZSBlbGVtZW50cyBtYXRjaGluZyB0aGUgcHJvdmlkZWQgcXVlcnkgc2VsZWN0b3IuXG4gICAqXG4gICAqIEBwYXJhbSBxdWVyeVNlbGVjdG9yIC0gQ1NTIHNlbGVjdG9yIHRvIGlkZW50aWZ5IHRhcmdldCBlbGVtZW50cy5cbiAgICogQHBhcmFtIHNlYXJjaFZhbHVlIC0gVGV4dCB0byBzZWFyY2ggYW5kIGhpZ2hsaWdodC5cbiAgICovXG4gIGhpZ2hsaWdodChxdWVyeVNlbGVjdG9yOiBzdHJpbmcsIHNlYXJjaFZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyKCk7XG4gICAgaWYgKCFxdWVyeVNlbGVjdG9yIHx8ICFzZWFyY2hWYWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3IgPSBxdWVyeVNlbGVjdG9yO1xuICAgIHRoaXMuc2VhcmNoVmFsdWUgPSBzZWFyY2hWYWx1ZTtcbiAgICBjb25zdCBlbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwocXVlcnlTZWxlY3Rvcik7XG4gICAgZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgdGhpcy5hcHBseUhpZ2hsaWdodChlbGVtZW50IGFzIEhUTUxFbGVtZW50KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHMgYWxsIGhpZ2hsaWdodGVkIHRleHQgd2l0aGluIHRoZSBlbGVtZW50cyBtYXRjaGluZyB0aGUgcHJldmlvdXNseSB1c2VkIHF1ZXJ5IHNlbGVjdG9yLlxuICAgKi9cbiAgcHVibGljIGNsZWFyKCk6IHZvaWQge1xuICAgIGNvbnN0IGVsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgJHt0aGlzLnF1ZXJ5U2VsZWN0b3J9ICAuYXgtaGlnaGxpZ2h0LXRleHRgKTtcbiAgICBlbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICBsZXQgY29tYmluZWRUZXh0ID0gJyc7XG4gICAgICBlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3NwYW4nKS5mb3JFYWNoKChzcGFuKSA9PiB7XG4gICAgICAgIGNvbWJpbmVkVGV4dCArPSBzcGFuLnRleHRDb250ZW50O1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IG1lcmdlZFNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICBtZXJnZWRTcGFuLnRleHRDb250ZW50ID0gY29tYmluZWRUZXh0O1xuXG4gICAgICBlbGVtZW50Py5wYXJlbnROb2RlPy5yZXBsYWNlQ2hpbGQobWVyZ2VkU3BhbiwgZWxlbWVudCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQXBwbGllcyBoaWdobGlnaHRpbmcgdG8gYSBzcGVjaWZpYyBlbGVtZW50IGJ5IG1hdGNoaW5nIHRleHQgYWdhaW5zdCB0aGUgc2VhcmNoIHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0gZWxlbWVudCAtIFRoZSBIVE1MIGVsZW1lbnQgdG8gYXBwbHkgaGlnaGxpZ2h0cyB0by5cbiAgICovXG4gIHByaXZhdGUgYXBwbHlIaWdobGlnaHQoZWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBzZWFyY2hSZWdleCA9IG5ldyBSZWdFeHAoYCgke3RoaXMuc2VhcmNoVmFsdWV9KWAsICdnaScpO1xuICAgIHRoaXMucmVjdXJzaXZlbHlIaWdobGlnaHQoZWxlbWVudCwgc2VhcmNoUmVnZXgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY3Vyc2l2ZWx5IGFwcGxpZXMgaGlnaGxpZ2h0aW5nIHRvIHRleHQgbm9kZXMgd2l0aGluIGFuIGVsZW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSBlbGVtZW50IC0gVGhlIGN1cnJlbnQgbm9kZSBiZWluZyBwcm9jZXNzZWQuXG4gICAqIEBwYXJhbSBzZWFyY2hSZWdleCAtIFJlZ3VsYXIgZXhwcmVzc2lvbiBmb3IgbWF0Y2hpbmcgdGV4dCB0byBoaWdobGlnaHQuXG4gICAqL1xuICBwcml2YXRlIHJlY3Vyc2l2ZWx5SGlnaGxpZ2h0KGVsZW1lbnQ6IE5vZGUsIHNlYXJjaFJlZ2V4OiBSZWdFeHApOiB2b2lkIHtcbiAgICBjb25zdCBjaGlsZE5vZGVzID0gQXJyYXkuZnJvbShlbGVtZW50LmNoaWxkTm9kZXMpO1xuXG4gICAgY2hpbGROb2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHtcbiAgICAgICAgY29uc3QgdGV4dENvbnRlbnQgPSBub2RlLnRleHRDb250ZW50IHx8ICcnO1xuICAgICAgICBpZiAodGV4dENvbnRlbnQubWF0Y2goc2VhcmNoUmVnZXgpKSB7XG4gICAgICAgICAgY29uc3QgaGlnaGxpZ2h0ZWRIVE1MID0gdGhpcy5jcmVhdGVIaWdobGlnaHRlZEhUTUwodGV4dENvbnRlbnQsIHNlYXJjaFJlZ2V4KTtcbiAgICAgICAgICBjb25zdCB0ZW1wQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgICAgdGVtcENvbnRhaW5lci5pbm5lckhUTUwgPSBoaWdobGlnaHRlZEhUTUw7XG5cbiAgICAgICAgICBjb25zdCBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgICAgICAgICBBcnJheS5mcm9tKHRlbXBDb250YWluZXIuY2hpbGROb2RlcykuZm9yRWFjaCgoY2hpbGQpID0+IGZyYWdtZW50LmFwcGVuZENoaWxkKGNoaWxkKSk7XG5cbiAgICAgICAgICBub2RlLnJlcGxhY2VXaXRoKGZyYWdtZW50KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChub2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSkge1xuICAgICAgICB0aGlzLnJlY3Vyc2l2ZWx5SGlnaGxpZ2h0KG5vZGUsIHNlYXJjaFJlZ2V4KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIEhUTUwgc3RydWN0dXJlIGZvciBoaWdobGlnaHRlZCB0ZXh0LlxuICAgKlxuICAgKiBAcGFyYW0gdGV4dENvbnRlbnQgLSBUaGUgb3JpZ2luYWwgdGV4dCBjb250ZW50IHRvIHByb2Nlc3MuXG4gICAqIEBwYXJhbSBzZWFyY2hSZWdleCAtIFJlZ3VsYXIgZXhwcmVzc2lvbiBmb3IgbWF0Y2hpbmcgdGV4dCB0byBoaWdobGlnaHQuXG4gICAqIEByZXR1cm5zIEEgc3RyaW5nIG9mIEhUTUwgd2l0aCBoaWdobGlnaHRlZCBwb3J0aW9ucyB3cmFwcGVkIGluIHNwYW4gZWxlbWVudHMuXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUhpZ2hsaWdodGVkSFRNTCh0ZXh0Q29udGVudDogc3RyaW5nLCBzZWFyY2hSZWdleDogUmVnRXhwKTogc3RyaW5nIHtcbiAgICBsZXQgcGFydHM6IHN0cmluZ1tdID0gW107XG4gICAgbGV0IG1hdGNoO1xuICAgIGxldCBsYXN0SW5kZXggPSAwO1xuICAgIGxldCByZXN1bHRIVE1MID0gJzxzcGFuIGNsYXNzPVwiYXgtaGlnaGxpZ2h0LXRleHRcIj4nO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHNlYXJjaFJlZ2V4LmV4ZWModGV4dENvbnRlbnQpKSAhPT0gbnVsbCkge1xuICAgICAgaWYgKG1hdGNoLmluZGV4ID4gbGFzdEluZGV4KSB7XG4gICAgICAgIHJlc3VsdEhUTUwgKz0gYDxzcGFuPiR7dGV4dENvbnRlbnQuc2xpY2UobGFzdEluZGV4LCBtYXRjaC5pbmRleCl9PC9zcGFuPmA7XG4gICAgICB9XG4gICAgICByZXN1bHRIVE1MICs9IGA8c3BhbiBjbGFzcz1cImF4LWhpZ2hsaWdodFwiPiR7bWF0Y2hbMF19PC9zcGFuPmA7XG4gICAgICBsYXN0SW5kZXggPSBzZWFyY2hSZWdleC5sYXN0SW5kZXg7XG4gICAgfVxuXG4gICAgaWYgKGxhc3RJbmRleCA8IHRleHRDb250ZW50Lmxlbmd0aCkge1xuICAgICAgcmVzdWx0SFRNTCArPSBgPHNwYW4+JHt0ZXh0Q29udGVudC5zbGljZShsYXN0SW5kZXgpfTwvc3Bhbj5gO1xuICAgIH1cblxuICAgIHJlc3VsdEhUTUwgKz0gJzwvc3Bhbj4nO1xuXG4gICAgcmV0dXJuIHJlc3VsdEhUTUw7XG4gIH1cbn1cbiJdfQ==","export function extractTextFromHtml(value) {\n const div = document.createElement('div');\n div.innerHTML = value;\n return div.textContent || div.innerText || '';\n}\n/**\n * Generate kebab-case group name from title\n */\nexport function generateKebabCase(title) {\n return title\n .toLowerCase()\n .trim()\n .replace(/[^a-z0-9\\s-]/g, '') // Remove special characters\n .replace(/\\s+/g, '-') // Replace spaces with hyphens\n .replace(/-+/g, '-') // Replace multiple hyphens with single\n .replace(/^-+|-+$/g, ''); // Remove leading/trailing hyphens\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9jb3JlL3NyYy9saWIvdXRpbHMvc3RyaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxLQUFhO0lBQy9DLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDdEIsT0FBTyxHQUFHLENBQUMsV0FBVyxJQUFJLEdBQUcsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO0FBQ2hELENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxLQUFhO0lBQzdDLE9BQU8sS0FBSztTQUNULFdBQVcsRUFBRTtTQUNiLElBQUksRUFBRTtTQUNOLE9BQU8sQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsNEJBQTRCO1NBQ3pELE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsOEJBQThCO1NBQ25ELE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsdUNBQXVDO1NBQzNELE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQ0FBa0M7QUFDaEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBleHRyYWN0VGV4dEZyb21IdG1sKHZhbHVlOiBzdHJpbmcpIHtcbiAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIGRpdi5pbm5lckhUTUwgPSB2YWx1ZTtcbiAgcmV0dXJuIGRpdi50ZXh0Q29udGVudCB8fCBkaXYuaW5uZXJUZXh0IHx8ICcnO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGtlYmFiLWNhc2UgZ3JvdXAgbmFtZSBmcm9tIHRpdGxlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUtlYmFiQ2FzZSh0aXRsZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHRpdGxlXG4gICAgLnRvTG93ZXJDYXNlKClcbiAgICAudHJpbSgpXG4gICAgLnJlcGxhY2UoL1teYS16MC05XFxzLV0vZywgJycpIC8vIFJlbW92ZSBzcGVjaWFsIGNoYXJhY3RlcnNcbiAgICAucmVwbGFjZSgvXFxzKy9nLCAnLScpIC8vIFJlcGxhY2Ugc3BhY2VzIHdpdGggaHlwaGVuc1xuICAgIC5yZXBsYWNlKC8tKy9nLCAnLScpIC8vIFJlcGxhY2UgbXVsdGlwbGUgaHlwaGVucyB3aXRoIHNpbmdsZVxuICAgIC5yZXBsYWNlKC9eLSt8LSskL2csICcnKTsgLy8gUmVtb3ZlIGxlYWRpbmcvdHJhaWxpbmcgaHlwaGVuc1xufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LXBsYXRmb3JtLWNvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2NvcmUvc3JjL2Fjb3JleC1wbGF0Zm9ybS1jb3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i1.AXPAppStartUpService"],"mappings":"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"}
|