@acorex/modules 20.6.0-next.15 → 20.6.0-next.16
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/common/index.d.ts +1 -0
- package/fesm2022/acorex-modules-common.mjs +5 -2
- package/fesm2022/acorex-modules-common.mjs.map +1 -1
- package/fesm2022/{acorex-modules-form-template-management-template-picker.component-BiCwa7Ww.mjs → acorex-modules-form-template-management-template-picker.component-R6Ijm-97.mjs} +13 -13
- package/fesm2022/acorex-modules-form-template-management-template-picker.component-R6Ijm-97.mjs.map +1 -0
- package/fesm2022/acorex-modules-form-template-management.mjs +1 -1
- package/fesm2022/{acorex-modules-party-management-acorex-modules-party-management-1KGMBDfA.mjs → acorex-modules-party-management-acorex-modules-party-management-DB3H-49E.mjs} +7 -7
- package/fesm2022/{acorex-modules-party-management-acorex-modules-party-management-1KGMBDfA.mjs.map → acorex-modules-party-management-acorex-modules-party-management-DB3H-49E.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-party-management-industry.entity-DHuE1kt7.mjs → acorex-modules-party-management-industry.entity-E0RPqKYR.mjs} +2 -2
- package/fesm2022/{acorex-modules-party-management-industry.entity-DHuE1kt7.mjs.map → acorex-modules-party-management-industry.entity-E0RPqKYR.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-party-management-party-identifier-type.entity-jD8FUA11.mjs → acorex-modules-party-management-party-identifier-type.entity-COMURXUX.mjs} +2 -2
- package/fesm2022/{acorex-modules-party-management-party-identifier-type.entity-jD8FUA11.mjs.map → acorex-modules-party-management-party-identifier-type.entity-COMURXUX.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-party-management-party-identifier.entity-BykPw02a.mjs → acorex-modules-party-management-party-identifier.entity-C6b-Vrgs.mjs} +2 -2
- package/fesm2022/{acorex-modules-party-management-party-identifier.entity-BykPw02a.mjs.map → acorex-modules-party-management-party-identifier.entity-C6b-Vrgs.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-party-management-party-relationship.entity-DT0eidsI.mjs → acorex-modules-party-management-party-relationship.entity-rZHjByaY.mjs} +2 -2
- package/fesm2022/{acorex-modules-party-management-party-relationship.entity-DT0eidsI.mjs.map → acorex-modules-party-management-party-relationship.entity-rZHjByaY.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-party-management-party-role.entity-avNIs_Ga.mjs → acorex-modules-party-management-party-role.entity-B_fesIiR.mjs} +2 -2
- package/fesm2022/{acorex-modules-party-management-party-role.entity-avNIs_Ga.mjs.map → acorex-modules-party-management-party-role.entity-B_fesIiR.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-party-management-party.entity-CPN2U-mp.mjs → acorex-modules-party-management-party.entity-Czvx5O4_.mjs} +3 -13
- package/fesm2022/acorex-modules-party-management-party.entity-Czvx5O4_.mjs.map +1 -0
- package/fesm2022/acorex-modules-party-management.mjs +1 -1
- package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-B0TrJk70.mjs → acorex-modules-platform-management-acorex-modules-platform-management-B99sSLFQ.mjs} +5 -5
- package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-B0TrJk70.mjs.map → acorex-modules-platform-management-acorex-modules-platform-management-B99sSLFQ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-platform-management-list-version.component-_xsJ6KyX.mjs → acorex-modules-platform-management-list-version.component-um9dTYaN.mjs} +2 -2
- package/fesm2022/{acorex-modules-platform-management-list-version.component-_xsJ6KyX.mjs.map → acorex-modules-platform-management-list-version.component-um9dTYaN.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-platform-management-menu-list.component-CXlEbNtH.mjs → acorex-modules-platform-management-menu-list.component-DeS8hSoB.mjs} +8 -8
- package/fesm2022/acorex-modules-platform-management-menu-list.component-DeS8hSoB.mjs.map +1 -0
- package/fesm2022/{acorex-modules-platform-management-permission-definition.provider-BWt2Ib-i.mjs → acorex-modules-platform-management-permission-definition.provider-DHfWGH0p.mjs} +2 -2
- package/fesm2022/{acorex-modules-platform-management-permission-definition.provider-BWt2Ib-i.mjs.map → acorex-modules-platform-management-permission-definition.provider-DHfWGH0p.mjs.map} +1 -1
- package/fesm2022/acorex-modules-platform-management.mjs +1 -1
- package/fesm2022/{acorex-modules-report-management-report-runner-root-page.component-BPHpCx1z.mjs → acorex-modules-report-management-report-runner-root-page.component-Cjpx-4Q9.mjs} +5 -9
- package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-Cjpx-4Q9.mjs.map +1 -0
- package/fesm2022/acorex-modules-report-management.mjs +1 -1
- package/package.json +14 -14
- package/fesm2022/acorex-modules-form-template-management-template-picker.component-BiCwa7Ww.mjs.map +0 -1
- package/fesm2022/acorex-modules-party-management-party.entity-CPN2U-mp.mjs.map +0 -1
- package/fesm2022/acorex-modules-platform-management-menu-list.component-CXlEbNtH.mjs.map +0 -1
- package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-BPHpCx1z.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-modules-platform-management-menu-list.component-DeS8hSoB.mjs","sources":["../tmp-esm2022/platform-management/lib/features/menu-management/menu-management.service.js","../tmp-esm2022/platform-management/lib/features/menu-management/pages/menu-list/menu-list.component.js"],"sourcesContent":["import { AXPMenuProviderService, AXPSettingService } from '@acorex/platform/common';\nimport { inject, Injectable } from '@angular/core';\nimport { cloneDeep } from 'lodash-es';\nimport { AXP_MENU_CUSTOMIZATION_DEFAULT, AXP_MENU_CUSTOMIZATION_KEY } from './menu-customization.const';\nimport * as i0 from \"@angular/core\";\n//#region ---- Menu Management Service ----\n/**\n * Constants for priority calculation\n */\nconst PRIORITY_BASE_ROOT = 0;\nconst PRIORITY_BASE_NESTED = 1000;\nconst PRIORITY_STEP = 10;\nexport class AXPMenuManagementService {\n constructor() {\n //#region ---- Dependencies ----\n this.settingService = inject(AXPSettingService);\n this.menuProviderService = inject(AXPMenuProviderService);\n }\n //#endregion\n //#region ---- Public Methods ----\n /**\n * Get menu tree as AXTreeNode[] for ax-tree2 component\n */\n async getMenuTree(scope) {\n // Get RAW menu items WITHOUT middleware (for management purposes)\n const baseItems = await this.menuProviderService.rawItems();\n // Load customizations for the given scope\n const customization = await this.loadCustomization(scope);\n // Merge custom items with base items\n const allItems = [...baseItems, ...customization.customItems];\n // Apply parent overrides to restructure items BEFORE building tree\n const restructuredItems = this.applyParentOverrides(allItems, customization);\n // Convert to tree nodes with metadata\n return this.convertToTreeNodes(restructuredItems, customization);\n }\n /**\n * Sync tree changes back to customization\n * Called automatically when tree structure changes via drag-drop\n */\n async syncTreeChanges(scope, treeNodes) {\n const customization = await this.loadCustomization(scope);\n // Extract and update priorities and parent relationships from tree structure\n this.updateCustomizationFromTree(treeNodes, customization);\n await this.saveCustomization(scope, customization);\n }\n /**\n * Load menu customization for a specific scope\n */\n async loadCustomization(scope) {\n try {\n const scopedSettings = this.settingService.scope(scope);\n const saved = await scopedSettings.get(AXP_MENU_CUSTOMIZATION_KEY);\n if (saved && saved.version) {\n return saved;\n }\n return cloneDeep(AXP_MENU_CUSTOMIZATION_DEFAULT);\n }\n catch (error) {\n console.warn('Failed to load menu customization, using defaults', error);\n return cloneDeep(AXP_MENU_CUSTOMIZATION_DEFAULT);\n }\n }\n /**\n * Save menu customization for a specific scope\n */\n async saveCustomization(scope, customization) {\n const scopedSettings = this.settingService.scope(scope);\n await scopedSettings.set(AXP_MENU_CUSTOMIZATION_KEY, customization);\n // Clear menu cache to force reload\n this.menuProviderService.clearCache();\n }\n /**\n * Hide a menu item\n */\n async hideMenuItem(scope, menuName) {\n this.validateMenuName(menuName, 'hide');\n const customization = await this.loadCustomization(scope);\n this.ensureOverrideExists(customization, menuName);\n customization.overrides[menuName].hidden = true;\n await this.saveCustomization(scope, customization);\n }\n /**\n * Show a menu item\n */\n async showMenuItem(scope, menuName) {\n this.validateMenuName(menuName, 'show');\n const customization = await this.loadCustomization(scope);\n if (customization.overrides[menuName]) {\n delete customization.overrides[menuName].hidden;\n this.cleanupEmptyOverride(customization, menuName);\n }\n await this.saveCustomization(scope, customization);\n }\n /**\n * Update menu item priority\n */\n async updateMenuPriority(scope, menuName, priority) {\n this.validateMenuName(menuName, 'update priority for');\n const customization = await this.loadCustomization(scope);\n this.ensureOverrideExists(customization, menuName);\n customization.overrides[menuName].priority = priority;\n await this.saveCustomization(scope, customization);\n }\n /**\n * Update menu item properties\n */\n async updateMenuProperties(scope, menuName, properties) {\n this.validateMenuName(menuName, 'update properties for');\n const customization = await this.loadCustomization(scope);\n this.ensureOverrideExists(customization, menuName);\n customization.overrides[menuName].properties = {\n ...customization.overrides[menuName].properties,\n ...properties,\n };\n await this.saveCustomization(scope, customization);\n }\n /**\n * Add custom menu item\n */\n async addCustomMenuItem(scope, menuItem, parent) {\n const customization = await this.loadCustomization(scope);\n // Generate unique name if not provided\n if (!menuItem.name) {\n menuItem.name = `custom-menu-${Date.now()}`;\n }\n customization.customItems.push(menuItem);\n await this.saveCustomization(scope, customization);\n }\n /**\n * Update custom menu item\n */\n async updateCustomMenuItem(scope, menuName, menuItem) {\n this.validateMenuName(menuName, 'update');\n const customization = await this.loadCustomization(scope);\n const index = customization.customItems.findIndex((item) => item.name === menuName);\n if (index === -1) {\n throw new Error(`Custom menu item '${menuName}' not found`);\n }\n customization.customItems[index] = menuItem;\n await this.saveCustomization(scope, customization);\n }\n /**\n * Delete custom menu item\n */\n async deleteCustomMenuItem(scope, menuName) {\n this.validateMenuName(menuName, 'delete');\n const customization = await this.loadCustomization(scope);\n const initialLength = customization.customItems.length;\n customization.customItems = customization.customItems.filter((item) => item.name !== menuName);\n if (customization.customItems.length === initialLength) {\n throw new Error(`Custom menu item '${menuName}' not found`);\n }\n await this.saveCustomization(scope, customization);\n }\n /**\n * Reset all customizations for a scope\n */\n async resetCustomizations(scope) {\n await this.saveCustomization(scope, cloneDeep(AXP_MENU_CUSTOMIZATION_DEFAULT));\n }\n //#endregion\n //#region ---- Private Methods ----\n /**\n * Apply parent overrides from customization to restructure menu items\n * This ensures the tree reflects saved parent changes (moves)\n */\n applyParentOverrides(items, customization) {\n // First, flatten all items into a map for easy lookup\n const itemMap = this.flattenMenuItems(items);\n // Build new structure based on effective parent relationships\n const rootItems = [];\n const childrenMap = new Map();\n for (const [itemName, item] of itemMap.entries()) {\n const override = customization.overrides[itemName];\n // Determine effective parent (override takes precedence)\n let effectiveParent;\n if (override?.parentName !== undefined) {\n // parentName is explicitly set (could be null for root, or a parent name)\n effectiveParent = override.parentName;\n }\n else {\n // No override - find original parent by searching original structure\n effectiveParent = this.findOriginalParent(items, itemName);\n }\n if (effectiveParent === null || effectiveParent === undefined) {\n // Root level item\n rootItems.push(item);\n }\n else {\n // Child item - add to parent's children\n if (!childrenMap.has(effectiveParent)) {\n childrenMap.set(effectiveParent, []);\n }\n childrenMap.get(effectiveParent).push(item);\n }\n }\n // Attach children to their parents recursively\n const attachChildren = (item) => {\n if (item.name && childrenMap.has(item.name)) {\n item.children = childrenMap.get(item.name);\n item.children?.forEach(attachChildren);\n }\n };\n rootItems.forEach(attachChildren);\n return rootItems;\n }\n /**\n * Find the original parent name of an item in the original structure\n * Returns undefined for root items, string for items with parents, null for not found\n */\n findOriginalParent(items, targetName, currentParent) {\n for (const item of items) {\n if (item.name === targetName) {\n return currentParent; // undefined if root, string if has parent\n }\n if (item.children) {\n const found = this.findOriginalParent(item.children, targetName, item.name);\n if (found !== null) {\n // Found in children (could be undefined for root of subtree, or string for nested item)\n return found;\n }\n // found === null means not found in this subtree, continue searching\n }\n }\n return null; // Not found in this level or any children\n }\n /**\n * Convert menu items to AXTreeNode[] with metadata\n */\n convertToTreeNodes(items, customization, parentName) {\n const nodes = items.map((item) => {\n const itemName = item.name;\n const override = itemName ? customization.overrides[itemName] : undefined;\n const isCustom = itemName ? customization.customItems.some((ci) => ci.name === itemName) : false;\n // Create metadata\n const metadata = {\n isBuiltIn: !isCustom,\n isCustom,\n isHidden: override?.hidden || false,\n originalPriority: item.priority,\n originalParentName: parentName,\n };\n // Apply priority override\n const effectivePriority = override?.priority !== undefined ? override.priority : item.priority;\n const itemWithPriority = { ...item, priority: effectivePriority };\n // Create tree node data\n const nodeData = {\n menuItem: itemWithPriority,\n metadata,\n };\n // Create tree node\n const treeNode = {\n id: itemName || item.path || this.generateNodeId(),\n label: item.text || item.path || 'Unnamed',\n icon: item.icon,\n expanded: false,\n selected: false,\n visible: true, // Always visible in management interface, CSS handles hidden styling\n children: item.children ? this.convertToTreeNodes(item.children, customization, itemName) : undefined,\n childrenCount: item.children?.length,\n data: nodeData,\n };\n return treeNode;\n });\n // Sort by priority\n nodes.sort((a, b) => {\n const aPriority = a.data?.menuItem.priority ?? 0;\n const bPriority = b.data?.menuItem.priority ?? 0;\n return aPriority - bPriority;\n });\n return nodes;\n }\n /**\n * Update customization from tree structure\n * Extracts priorities and parent relationships from tree nodes\n */\n updateCustomizationFromTree(treeNodes, customization, parentName) {\n // Calculate base priority for this level to maintain relative ordering\n const basePriority = parentName ? PRIORITY_BASE_NESTED : PRIORITY_BASE_ROOT;\n const priorityStep = PRIORITY_STEP;\n treeNodes.forEach((node, index) => {\n const nodeData = node.data;\n const menuItem = nodeData?.menuItem;\n if (menuItem?.name) {\n this.ensureOverrideExists(customization, menuItem.name);\n // Calculate new priority based on current position\n const newPriority = basePriority + index * priorityStep;\n // Get current effective priority (considering existing overrides)\n const currentEffectivePriority = customization.overrides[menuItem.name]?.priority ?? nodeData.metadata.originalPriority ?? 0;\n // Always update priority to reflect current position in tree\n // This ensures reordering works correctly even after multiple moves\n if (newPriority !== currentEffectivePriority) {\n customization.overrides[menuItem.name].priority = newPriority;\n }\n // Determine current effective parent (considering existing overrides)\n const currentEffectiveParent = customization.overrides[menuItem.name]?.parentName ?? nodeData.metadata.originalParentName;\n // Update parent relationship if it changed from current effective parent\n if (parentName !== currentEffectiveParent) {\n if (parentName) {\n customization.overrides[menuItem.name].parentName = parentName;\n }\n else {\n // Moving to root - set to null (not undefined) so middleware will process it\n // moveTo(null) moves the item to root level\n customization.overrides[menuItem.name].parentName = null;\n }\n }\n // Clean up empty overrides\n this.cleanupEmptyOverride(customization, menuItem.name);\n // Recursively process children\n if (node.children && node.children.length > 0) {\n this.updateCustomizationFromTree(node.children, customization, menuItem.name);\n }\n }\n });\n }\n /**\n * Validate menu name before operations\n */\n validateMenuName(menuName, operation) {\n if (!menuName) {\n throw new Error(`Menu item must have a name to be ${operation}`);\n }\n }\n /**\n * Ensure override object exists for a menu item\n */\n ensureOverrideExists(customization, menuName) {\n if (!customization.overrides[menuName]) {\n customization.overrides[menuName] = {};\n }\n }\n /**\n * Clean up empty override objects\n */\n cleanupEmptyOverride(customization, menuName) {\n if (Object.keys(customization.overrides[menuName] || {}).length === 0) {\n delete customization.overrides[menuName];\n }\n }\n /**\n * Flatten menu items recursively into a map\n */\n flattenMenuItems(items) {\n const itemMap = new Map();\n const flatten = (itemList) => {\n for (const item of itemList) {\n if (item.name) {\n // Clone item without children to rebuild structure\n itemMap.set(item.name, { ...item, children: undefined });\n }\n if (item.children) {\n flatten(item.children);\n }\n }\n };\n flatten(items);\n return itemMap;\n }\n /**\n * Generate unique ID for tree nodes\n */\n generateNodeId() {\n return `node-${Date.now()}-${Math.floor(Math.random() * 10000)}`;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPMenuManagementService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPMenuManagementService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPMenuManagementService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1tYW5hZ2VtZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcGxhdGZvcm0tbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL21lbnUtbWFuYWdlbWVudC9tZW51LW1hbmFnZW1lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWUsc0JBQXNCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVqRyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQWlCeEcsK0NBQStDO0FBRS9DOztHQUVHO0FBQ0gsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLENBQUM7QUFDN0IsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUM7QUFDbEMsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO0FBR3pCLE1BQU0sT0FBTyx3QkFBd0I7SUFEckM7UUFFRSxvQ0FBb0M7UUFFNUIsbUJBQWMsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMzQyx3QkFBbUIsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztLQTRiOUQ7SUExYkMsWUFBWTtJQUVaLHNDQUFzQztJQUV0Qzs7T0FFRztJQUNILEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBdUI7UUFDdkMsa0VBQWtFO1FBQ2xFLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRTVELDBDQUEwQztRQUMxQyxNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FB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QyxNQUFNLE9BQU8sR0FBRyxDQUFDLFFBQXVCLEVBQUUsRUFBRTtZQUMxQyxLQUFLLE1BQU0sSUFBSSxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUM1QixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDZCxtREFBbUQ7b0JBQ25ELE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO2dCQUMzRCxDQUFDO2dCQUNELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN6QixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQztRQUVGLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNmLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7T0FFRztJQUNLLGNBQWM7UUFDcEIsT0FBTyxRQUFRLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQ25FLENBQUM7K0dBN2JVLHdCQUF3QjttSEFBeEIsd0JBQXdCLGNBRFgsTUFBTTs7NEZBQ25CLHdCQUF3QjtrQkFEcEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFRyZWVWaWV3Tm9kZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90cmVlLXZpZXcnO1xuaW1wb3J0IHsgQVhQTWVudUl0ZW0sIEFYUE1lbnVQcm92aWRlclNlcnZpY2UsIEFYUFNldHRpbmdTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQUGxhdGZvcm1TY29wZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBBWFBfTUVOVV9DVVNUT01JWkFUSU9OX0RFRkFVTFQsIEFYUF9NRU5VX0NVU1RPTUlaQVRJT05fS0VZIH0gZnJvbSAnLi9tZW51LWN1c3RvbWl6YXRpb24uY29uc3QnO1xuaW1wb3J0IHsgQVhQTWVudUN1c3RvbWl6YXRpb24gfSBmcm9tICcuL21lbnUtY3VzdG9taXphdGlvbi50eXBlcyc7XG5cbi8qKlxuICogRGF0YSBzdHJ1Y3R1cmUgZm9yIHRyZWUgbm9kZSBjb21iaW5pbmcgbWVudSBpdGVtIHdpdGggbWV0YWRhdGFcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBNZW51VHJlZU5vZGVEYXRhIHtcbiAgbWVudUl0ZW06IEFYUE1lbnVJdGVtO1xuICBtZXRhZGF0YToge1xuICAgIGlzQnVpbHRJbjogYm9vbGVhbjtcbiAgICBpc0N1c3RvbTogYm9vbGVhbjtcbiAgICBpc0hpZGRlbjogYm9vbGVhbjtcbiAgICBvcmlnaW5hbFByaW9yaXR5PzogbnVtYmVyO1xuICAgIG9yaWdpbmFsUGFyZW50TmFtZT86IHN0cmluZztcbiAgfTtcbn1cblxuLy8jcmVnaW9uIC0tLS0gICBNZW51IE1hbmFnZW1lbnQgU2VydmljZSAgIC0tLS1cblxuLyoqXG4gKiBDb25zdGFudHMgZm9yIHByaW9yaXR5IGNhbGN1bGF0aW9uXG4gKi9cbmNvbnN0IFBSSU9SSVRZX0JBU0VfUk9PVCA9IDA7XG5jb25zdCBQUklPUklUWV9CQVNFX05FU1RFRCA9IDEwMDA7XG5jb25zdCBQUklPUklUWV9TVEVQID0gMTA7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQVhQTWVudU1hbmFnZW1lbnRTZXJ2aWNlIHtcbiAgLy8jcmVnaW9uIC0tLS0gICBEZXBlbmRlbmNpZXMgICAtLS0tXG5cbiAgcHJpdmF0ZSBzZXR0aW5nU2VydmljZSA9IGluamVjdChBWFBTZXR0aW5nU2VydmljZSk7XG4gIHByaXZhdGUgbWVudVByb3ZpZGVyU2VydmljZSA9IGluamVjdChBWFBNZW51UHJvdmlkZXJTZXJ2aWNlKTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIFB1YmxpYyBNZXRob2RzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBHZXQgbWVudSB0cmVlIGFzIEFYVHJlZU5vZGVbXSBmb3IgYXgtdHJlZTIgY29tcG9uZW50XG4gICAqL1xuICBhc3luYyBnZXRNZW51VHJlZShzY29wZTogQVhQUGxhdGZvcm1TY29wZSk6IFByb21pc2U8QVhUcmVlVmlld05vZGVbXT4ge1xuICAgIC8vIEdldCBSQVcgbWVudSBpdGVtcyBXSVRIT1VUIG1pZGRsZXdhcmUgKGZvciBtYW5hZ2VtZW50IHB1cnBvc2VzKVxuICAgIGNvbnN0IGJhc2VJdGVtcyA9IGF3YWl0IHRoaXMubWVudVByb3ZpZGVyU2VydmljZS5yYXdJdGVtcygpO1xuXG4gICAgLy8gTG9hZCBjdXN0b21pemF0aW9ucyBmb3IgdGhlIGdpdmVuIHNjb3BlXG4gICAgY29uc3QgY3VzdG9taXphdGlvbiA9IGF3YWl0IHRoaXMubG9hZEN1c3RvbWl6YXRpb24oc2NvcGUpO1xuXG4gICAgLy8gTWVyZ2UgY3VzdG9tIGl0ZW1zIHdpdGggYmFzZSBpdGVtc1xuICAgIGNvbnN0IGFsbEl0ZW1zID0gWy4uLmJhc2VJdGVtcywgLi4uY3VzdG9taXphdGlvbi5jdXN0b21JdGVtc107XG5cbiAgICAvLyBBcHBseSBwYXJlbnQgb3ZlcnJpZGVzIHRvIHJlc3RydWN0dXJlIGl0ZW1zIEJFRk9SRSBidWlsZGluZyB0cmVlXG4gICAgY29uc3QgcmVzdHJ1Y3R1cmVkSXRlbXMgPSB0aGlzLmFwcGx5UGFyZW50T3ZlcnJpZGVzKGFsbEl0ZW1zLCBjdXN0b21pemF0aW9uKTtcblxuICAgIC8vIENvbnZlcnQgdG8gdHJlZSBub2RlcyB3aXRoIG1ldGFkYXRhXG4gICAgcmV0dXJuIHRoaXMuY29udmVydFRvVHJlZU5vZGVzKHJlc3RydWN0dXJlZEl0ZW1zLCBjdXN0b21pemF0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTeW5jIHRyZWUgY2hhbmdlcyBiYWNrIHRvIGN1c3RvbWl6YXRpb25cbiAgICogQ2FsbGVkIGF1dG9tYXRpY2FsbHkgd2hlbiB0cmVlIHN0cnVjdHVyZSBjaGFuZ2VzIHZpYSBkcmFnLWRyb3BcbiAgICovXG4gIGFzeW5jIHN5bmNUcmVlQ2hhbmdlcyhzY29wZTogQVhQUGxhdGZvcm1TY29wZSwgdHJlZU5vZGVzOiBBWFRyZWVWaWV3Tm9kZVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY3VzdG9taXphdGlvbiA9IGF3YWl0IHRoaXMubG9hZEN1c3RvbWl6YXRpb24oc2NvcGUpO1xuXG4gICAgLy8gRXh0cmFjdCBhbmQgdXBkYXRlIHByaW9yaXRpZXMgYW5kIHBhcmVudCByZWxhdGlvbnNoaXBzIGZyb20gdHJlZSBzdHJ1Y3R1cmVcbiAgICB0aGlzLnVwZGF0ZUN1c3RvbWl6YXRpb25Gcm9tVHJlZSh0cmVlTm9kZXMsIGN1c3RvbWl6YXRpb24pO1xuXG4gICAgYXdhaXQgdGhpcy5zYXZlQ3VzdG9taXphdGlvbihzY29wZSwgY3VzdG9taXphdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCBtZW51IGN1c3RvbWl6YXRpb24gZm9yIGEgc3BlY2lmaWMgc2NvcGVcbiAgICovXG4gIGFzeW5jIGxvYWRDdXN0b21pemF0aW9uKHNjb3BlOiBBWFBQbGF0Zm9ybVNjb3BlKTogUHJvbWlzZTxBWFBNZW51Q3VzdG9taXphdGlvbj4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzY29wZWRTZXR0aW5ncyA9IHRoaXMuc2V0dGluZ1NlcnZpY2Uuc2NvcGUoc2NvcGUpO1xuICAgICAgY29uc3Qgc2F2ZWQgPSBhd2FpdCBzY29wZWRTZXR0aW5ncy5nZXQ8QVhQTWVudUN1c3RvbWl6YXRpb24+KEFYUF9NRU5VX0NVU1RPTUlaQVRJT05fS0VZKTtcblxuICAgICAgaWYgKHNhdmVkICYmIHNhdmVkLnZlcnNpb24pIHtcbiAgICAgICAgcmV0dXJuIHNhdmVkO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2xvbmVEZWVwKEFYUF9NRU5VX0NVU1RPTUlaQVRJT05fREVGQVVMVCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignRmFpbGVkIHRvIGxvYWQgbWVudSBjdXN0b21pemF0aW9uLCB1c2luZyBkZWZhdWx0cycsIGVycm9yKTtcbiAgICAgIHJldHVybiBjbG9uZURlZXAoQVhQX01FTlVfQ1VTVE9NSVpBVElPTl9ERUZBVUxUKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSBtZW51IGN1c3RvbWl6YXRpb24gZm9yIGEgc3BlY2lmaWMgc2NvcGVcbiAgICovXG4gIGFzeW5jIHNhdmVDdXN0b21pemF0aW9uKHNjb3BlOiBBWFBQbGF0Zm9ybVNjb3BlLCBjdXN0b21pemF0aW9uOiBBWFBNZW51Q3VzdG9taXphdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHNjb3BlZFNldHRpbmdzID0gdGhpcy5zZXR0aW5nU2VydmljZS5zY29wZShzY29wZSk7XG4gICAgYXdhaXQgc2NvcGVkU2V0dGluZ3Muc2V0KEFYUF9NRU5VX0NVU1RPTUlaQVRJT05fS0VZLCBjdXN0b21pemF0aW9uKTtcblxuICAgIC8vIENsZWFyIG1lbnUgY2FjaGUgdG8gZm9yY2UgcmVsb2FkXG4gICAgdGhpcy5tZW51UHJvdmlkZXJTZXJ2aWNlLmNsZWFyQ2FjaGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIaWRlIGEgbWVudSBpdGVtXG4gICAqL1xuICBhc3luYyBoaWRlTWVudUl0ZW0oc2NvcGU6IEFYUFBsYXRmb3JtU2NvcGUsIG1lbnVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnZhbGlkYXRlTWVudU5hbWUobWVudU5hbWUsICdoaWRlJyk7XG5cbiAgICBjb25zdCBjdXN0b21pemF0aW9uID0gYXdhaXQgdGhpcy5sb2FkQ3VzdG9taXphdGlvbihzY29wZSk7XG4gICAgdGhpcy5lbnN1cmVPdmVycmlkZUV4aXN0cyhjdXN0b21pemF0aW9uLCBtZW51TmFtZSk7XG4gICAgY3VzdG9taXphdGlvbi5vdmVycmlkZXNbbWVudU5hbWVdLmhpZGRlbiA9IHRydWU7XG5cbiAgICBhd2FpdCB0aGlzLnNhdmVDdXN0b21pemF0aW9uKHNjb3BlLCBjdXN0b21pemF0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG93IGEgbWVudSBpdGVtXG4gICAqL1xuICBhc3luYyBzaG93TWVudUl0ZW0oc2NvcGU6IEFYUFBsYXRmb3JtU2NvcGUsIG1lbnVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnZhbGlkYXRlTWVudU5hbWUobWVudU5hbWUsICdzaG93Jyk7XG5cbiAgICBjb25zdCBjdXN0b21pemF0aW9uID0gYXdhaXQgdGhpcy5sb2FkQ3VzdG9taXphdGlvbihzY29wZSk7XG5cbiAgICBpZiAoY3VzdG9taXphdGlvbi5vdmVycmlkZXNbbWVudU5hbWVdKSB7XG4gICAgICBkZWxldGUgY3VzdG9taXphdGlvbi5vdmVycmlkZXNbbWVudU5hbWVdLmhpZGRlbjtcbiAgICAgIHRoaXMuY2xlYW51cEVtcHR5T3ZlcnJpZGUoY3VzdG9taXphdGlvbiwgbWVudU5hbWUpO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuc2F2ZUN1c3RvbWl6YXRpb24oc2NvcGUsIGN1c3RvbWl6YXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBtZW51IGl0ZW0gcHJpb3JpdHlcbiAgICovXG4gIGFzeW5jIHVwZGF0ZU1lbnVQcmlvcml0eShzY29wZTogQVhQUGxhdGZvcm1TY29wZSwgbWVudU5hbWU6IHN0cmluZywgcHJpb3JpdHk6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMudmFsaWRhdGVNZW51TmFtZShtZW51TmFtZSwgJ3VwZGF0ZSBwcmlvcml0eSBmb3InKTtcblxuICAgIGNvbnN0IGN1c3RvbWl6YXRpb24gPSBhd2FpdCB0aGlzLmxvYWRDdXN0b21pemF0aW9uKHNjb3BlKTtcbiAgICB0aGlzLmVuc3VyZU92ZXJyaWRlRXhpc3RzKGN1c3RvbWl6YXRpb24sIG1lbnVOYW1lKTtcbiAgICBjdXN0b21pemF0aW9uLm92ZXJyaWRlc1ttZW51TmFtZV0ucHJpb3JpdHkgPSBwcmlvcml0eTtcblxuICAgIGF3YWl0IHRoaXMuc2F2ZUN1c3RvbWl6YXRpb24oc2NvcGUsIGN1c3RvbWl6YXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBtZW51IGl0ZW0gcHJvcGVydGllc1xuICAgKi9cbiAgYXN5bmMgdXBkYXRlTWVudVByb3BlcnRpZXMoXG4gICAgc2NvcGU6IEFYUFBsYXRmb3JtU2NvcGUsXG4gICAgbWVudU5hbWU6IHN0cmluZyxcbiAgICBwcm9wZXJ0aWVzOiBQYXJ0aWFsPEFYUE1lbnVJdGVtPixcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy52YWxpZGF0ZU1lbnVOYW1lKG1lbnVOYW1lLCAndXBkYXRlIHByb3BlcnRpZXMgZm9yJyk7XG5cbiAgICBjb25zdCBjdXN0b21pemF0aW9uID0gYXdhaXQgdGhpcy5sb2FkQ3VzdG9taXphdGlvbihzY29wZSk7XG4gICAgdGhpcy5lbnN1cmVPdmVycmlkZUV4aXN0cyhjdXN0b21pemF0aW9uLCBtZW51TmFtZSk7XG5cbiAgICBjdXN0b21pemF0aW9uLm92ZXJyaWRlc1ttZW51TmFtZV0ucHJvcGVydGllcyA9IHtcbiAgICAgIC4uLmN1c3RvbWl6YXRpb24ub3ZlcnJpZGVzW21lbnVOYW1lXS5wcm9wZXJ0aWVzLFxuICAgICAgLi4ucHJvcGVydGllcyxcbiAgICB9O1xuXG4gICAgYXdhaXQgdGhpcy5zYXZlQ3VzdG9taXphdGlvbihzY29wZSwgY3VzdG9taXphdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGN1c3RvbSBtZW51IGl0ZW1cbiAgICovXG4gIGFzeW5jIGFkZEN1c3RvbU1lbnVJdGVtKHNjb3BlOiBBWFBQbGF0Zm9ybVNjb3BlLCBtZW51SXRlbTogQVhQTWVudUl0ZW0sIHBhcmVudDogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY3VzdG9taXphdGlvbiA9IGF3YWl0IHRoaXMubG9hZEN1c3RvbWl6YXRpb24oc2NvcGUpO1xuXG4gICAgLy8gR2VuZXJhdGUgdW5pcXVlIG5hbWUgaWYgbm90IHByb3ZpZGVkXG4gICAgaWYgKCFtZW51SXRlbS5uYW1lKSB7XG4gICAgICBtZW51SXRlbS5uYW1lID0gYGN1c3RvbS1tZW51LSR7RGF0ZS5ub3coKX1gO1xuICAgIH1cblxuICAgIGN1c3RvbWl6YXRpb24uY3VzdG9tSXRlbXMucHVzaChtZW51SXRlbSk7XG5cbiAgICBhd2FpdCB0aGlzLnNhdmVDdXN0b21pemF0aW9uKHNjb3BlLCBjdXN0b21pemF0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgY3VzdG9tIG1lbnUgaXRlbVxuICAgKi9cbiAgYXN5bmMgdXBkYXRlQ3VzdG9tTWVudUl0ZW0oc2NvcGU6IEFYUFBsYXRmb3JtU2NvcGUsIG1lbnVOYW1lOiBzdHJpbmcsIG1lbnVJdGVtOiBBWFBNZW51SXRlbSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMudmFsaWRhdGVNZW51TmFtZShtZW51TmFtZSwgJ3VwZGF0ZScpO1xuXG4gICAgY29uc3QgY3VzdG9taXphdGlvbiA9IGF3YWl0IHRoaXMubG9hZEN1c3RvbWl6YXRpb24oc2NvcGUpO1xuXG4gICAgY29uc3QgaW5kZXggPSBjdXN0b21pemF0aW9uLmN1c3RvbUl0ZW1zLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5uYW1lID09PSBtZW51TmFtZSk7XG5cbiAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEN1c3RvbSBtZW51IGl0ZW0gJyR7bWVudU5hbWV9JyBub3QgZm91bmRgKTtcbiAgICB9XG5cbiAgICBjdXN0b21pemF0aW9uLmN1c3RvbUl0ZW1zW2luZGV4XSA9IG1lbnVJdGVtO1xuICAgIGF3YWl0IHRoaXMuc2F2ZUN1c3RvbWl6YXRpb24oc2NvcGUsIGN1c3RvbWl6YXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBjdXN0b20gbWVudSBpdGVtXG4gICAqL1xuICBhc3luYyBkZWxldGVDdXN0b21NZW51SXRlbShzY29wZTogQVhQUGxhdGZvcm1TY29wZSwgbWVudU5hbWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMudmFsaWRhdGVNZW51TmFtZShtZW51TmFtZSwgJ2RlbGV0ZScpO1xuXG4gICAgY29uc3QgY3VzdG9taXphdGlvbiA9IGF3YWl0IHRoaXMubG9hZEN1c3RvbWl6YXRpb24oc2NvcGUpO1xuXG4gICAgY29uc3QgaW5pdGlhbExlbmd0aCA9IGN1c3RvbWl6YXRpb24uY3VzdG9tSXRlbXMubGVuZ3RoO1xuICAgIGN1c3RvbWl6YXRpb24uY3VzdG9tSXRlbXMgPSBjdXN0b21pemF0aW9uLmN1c3RvbUl0ZW1zLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5uYW1lICE9PSBtZW51TmFtZSk7XG5cbiAgICBpZiAoY3VzdG9taXphdGlvbi5jdXN0b21JdGVtcy5sZW5ndGggPT09IGluaXRpYWxMZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VzdG9tIG1lbnUgaXRlbSAnJHttZW51TmFtZX0nIG5vdCBmb3VuZGApO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuc2F2ZUN1c3RvbWl6YXRpb24oc2NvcGUsIGN1c3RvbWl6YXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IGFsbCBjdXN0b21pemF0aW9ucyBmb3IgYSBzY29wZVxuICAgKi9cbiAgYXN5bmMgcmVzZXRDdXN0b21pemF0aW9ucyhzY29wZTogQVhQUGxhdGZvcm1TY29wZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuc2F2ZUN1c3RvbWl6YXRpb24oc2NvcGUsIGNsb25lRGVlcChBWFBfTUVOVV9DVVNUT01JWkFUSU9OX0RFRkFVTFQpKTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgUHJpdmF0ZSBNZXRob2RzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBBcHBseSBwYXJlbnQgb3ZlcnJpZGVzIGZyb20gY3VzdG9taXphdGlvbiB0byByZXN0cnVjdHVyZSBtZW51IGl0ZW1zXG4gICAqIFRoaXMgZW5zdXJlcyB0aGUgdHJlZSByZWZsZWN0cyBzYXZlZCBwYXJlbnQgY2hhbmdlcyAobW92ZXMpXG4gICAqL1xuICBwcml2YXRlIGFwcGx5UGFyZW50T3ZlcnJpZGVzKGl0ZW1zOiBBWFBNZW51SXRlbVtdLCBjdXN0b21pemF0aW9uOiBBWFBNZW51Q3VzdG9taXphdGlvbik6IEFYUE1lbnVJdGVtW10ge1xuICAgIC8vIEZpcnN0LCBmbGF0dGVuIGFsbCBpdGVtcyBpbnRvIGEgbWFwIGZvciBlYXN5IGxvb2t1cFxuICAgIGNvbnN0IGl0ZW1NYXAgPSB0aGlzLmZsYXR0ZW5NZW51SXRlbXMoaXRlbXMpO1xuXG4gICAgLy8gQnVpbGQgbmV3IHN0cnVjdHVyZSBiYXNlZCBvbiBlZmZlY3RpdmUgcGFyZW50IHJlbGF0aW9uc2hpcHNcbiAgICBjb25zdCByb290SXRlbXM6IEFYUE1lbnVJdGVtW10gPSBbXTtcbiAgICBjb25zdCBjaGlsZHJlbk1hcCA9IG5ldyBNYXA8c3RyaW5nLCBBWFBNZW51SXRlbVtdPigpO1xuXG4gICAgZm9yIChjb25zdCBbaXRlbU5hbWUsIGl0ZW1dIG9mIGl0ZW1NYXAuZW50cmllcygpKSB7XG4gICAgICBjb25zdCBvdmVycmlkZSA9IGN1c3RvbWl6YXRpb24ub3ZlcnJpZGVzW2l0ZW1OYW1lXTtcblxuICAgICAgLy8gRGV0ZXJtaW5lIGVmZmVjdGl2ZSBwYXJlbnQgKG92ZXJyaWRlIHRha2VzIHByZWNlZGVuY2UpXG4gICAgICBsZXQgZWZmZWN0aXZlUGFyZW50OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKG92ZXJyaWRlPy5wYXJlbnROYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gcGFyZW50TmFtZSBpcyBleHBsaWNpdGx5IHNldCAoY291bGQgYmUgbnVsbCBmb3Igcm9vdCwgb3IgYSBwYXJlbnQgbmFtZSlcbiAgICAgICAgZWZmZWN0aXZlUGFyZW50ID0gb3ZlcnJpZGUucGFyZW50TmFtZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE5vIG92ZXJyaWRlIC0gZmluZCBvcmlnaW5hbCBwYXJlbnQgYnkgc2VhcmNoaW5nIG9yaWdpbmFsIHN0cnVjdHVyZVxuICAgICAgICBlZmZlY3RpdmVQYXJlbnQgPSB0aGlzLmZpbmRPcmlnaW5hbFBhcmVudChpdGVtcywgaXRlbU5hbWUpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZWZmZWN0aXZlUGFyZW50ID09PSBudWxsIHx8IGVmZmVjdGl2ZVBhcmVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIFJvb3QgbGV2ZWwgaXRlbVxuICAgICAgICByb290SXRlbXMucHVzaChpdGVtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIENoaWxkIGl0ZW0gLSBhZGQgdG8gcGFyZW50J3MgY2hpbGRyZW5cbiAgICAgICAgaWYgKCFjaGlsZHJlbk1hcC5oYXMoZWZmZWN0aXZlUGFyZW50KSkge1xuICAgICAgICAgIGNoaWxkcmVuTWFwLnNldChlZmZlY3RpdmVQYXJlbnQsIFtdKTtcbiAgICAgICAgfVxuICAgICAgICBjaGlsZHJlbk1hcC5nZXQoZWZmZWN0aXZlUGFyZW50KSEucHVzaChpdGVtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBdHRhY2ggY2hpbGRyZW4gdG8gdGhlaXIgcGFyZW50cyByZWN1cnNpdmVseVxuICAgIGNvbnN0IGF0dGFjaENoaWxkcmVuID0gKGl0ZW06IEFYUE1lbnVJdGVtKSA9PiB7XG4gICAgICBpZiAoaXRlbS5uYW1lICYmIGNoaWxkcmVuTWFwLmhhcyhpdGVtLm5hbWUpKSB7XG4gICAgICAgIGl0ZW0uY2hpbGRyZW4gPSBjaGlsZHJlbk1hcC5nZXQoaXRlbS5uYW1lKTtcbiAgICAgICAgaXRlbS5jaGlsZHJlbj8uZm9yRWFjaChhdHRhY2hDaGlsZHJlbik7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJvb3RJdGVtcy5mb3JFYWNoKGF0dGFjaENoaWxkcmVuKTtcblxuICAgIHJldHVybiByb290SXRlbXM7XG4gIH1cblxuICAvKipcbiAgICogRmluZCB0aGUgb3JpZ2luYWwgcGFyZW50IG5hbWUgb2YgYW4gaXRlbSBpbiB0aGUgb3JpZ2luYWwgc3RydWN0dXJlXG4gICAqIFJldHVybnMgdW5kZWZpbmVkIGZvciByb290IGl0ZW1zLCBzdHJpbmcgZm9yIGl0ZW1zIHdpdGggcGFyZW50cywgbnVsbCBmb3Igbm90IGZvdW5kXG4gICAqL1xuICBwcml2YXRlIGZpbmRPcmlnaW5hbFBhcmVudChcbiAgICBpdGVtczogQVhQTWVudUl0ZW1bXSxcbiAgICB0YXJnZXROYW1lOiBzdHJpbmcsXG4gICAgY3VycmVudFBhcmVudD86IHN0cmluZyxcbiAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICBpZiAoaXRlbS5uYW1lID09PSB0YXJnZXROYW1lKSB7XG4gICAgICAgIHJldHVybiBjdXJyZW50UGFyZW50OyAvLyB1bmRlZmluZWQgaWYgcm9vdCwgc3RyaW5nIGlmIGhhcyBwYXJlbnRcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtLmNoaWxkcmVuKSB7XG4gICAgICAgIGNvbnN0IGZvdW5kID0gdGhpcy5maW5kT3JpZ2luYWxQYXJlbnQoaXRlbS5jaGlsZHJlbiwgdGFyZ2V0TmFtZSwgaXRlbS5uYW1lKTtcbiAgICAgICAgaWYgKGZvdW5kICE9PSBudWxsKSB7XG4gICAgICAgICAgLy8gRm91bmQgaW4gY2hpbGRyZW4gKGNvdWxkIGJlIHVuZGVmaW5lZCBmb3Igcm9vdCBvZiBzdWJ0cmVlLCBvciBzdHJpbmcgZm9yIG5lc3RlZCBpdGVtKVxuICAgICAgICAgIHJldHVybiBmb3VuZDtcbiAgICAgICAgfVxuICAgICAgICAvLyBmb3VuZCA9PT0gbnVsbCBtZWFucyBub3QgZm91bmQgaW4gdGhpcyBzdWJ0cmVlLCBjb250aW51ZSBzZWFyY2hpbmdcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7IC8vIE5vdCBmb3VuZCBpbiB0aGlzIGxldmVsIG9yIGFueSBjaGlsZHJlblxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgbWVudSBpdGVtcyB0byBBWFRyZWVOb2RlW10gd2l0aCBtZXRhZGF0YVxuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJ0VG9UcmVlTm9kZXMoXG4gICAgaXRlbXM6IEFYUE1lbnVJdGVtW10sXG4gICAgY3VzdG9taXphdGlvbjogQVhQTWVudUN1c3RvbWl6YXRpb24sXG4gICAgcGFyZW50TmFtZT86IHN0cmluZyxcbiAgKTogQVhUcmVlVmlld05vZGVbXSB7XG4gICAgY29uc3Qgbm9kZXMgPSBpdGVtcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IGl0ZW1OYW1lID0gaXRlbS5uYW1lO1xuICAgICAgY29uc3Qgb3ZlcnJpZGUgPSBpdGVtTmFtZSA/IGN1c3RvbWl6YXRpb24ub3ZlcnJpZGVzW2l0ZW1OYW1lXSA6IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IGlzQ3VzdG9tID0gaXRlbU5hbWUgPyBjdXN0b21pemF0aW9uLmN1c3RvbUl0ZW1zLnNvbWUoKGNpKSA9PiBjaS5uYW1lID09PSBpdGVtTmFtZSkgOiBmYWxzZTtcblxuICAgICAgLy8gQ3JlYXRlIG1ldGFkYXRhXG4gICAgICBjb25zdCBtZXRhZGF0YSA9IHtcbiAgICAgICAgaXNCdWlsdEluOiAhaXNDdXN0b20sXG4gICAgICAgIGlzQ3VzdG9tLFxuICAgICAgICBpc0hpZGRlbjogb3ZlcnJpZGU/LmhpZGRlbiB8fCBmYWxzZSxcbiAgICAgICAgb3JpZ2luYWxQcmlvcml0eTogaXRlbS5wcmlvcml0eSxcbiAgICAgICAgb3JpZ2luYWxQYXJlbnROYW1lOiBwYXJlbnROYW1lLFxuICAgICAgfTtcblxuICAgICAgLy8gQXBwbHkgcHJpb3JpdHkgb3ZlcnJpZGVcbiAgICAgIGNvbnN0IGVmZmVjdGl2ZVByaW9yaXR5ID0gb3ZlcnJpZGU/LnByaW9yaXR5ICE9PSB1bmRlZmluZWQgPyBvdmVycmlkZS5wcmlvcml0eSA6IGl0ZW0ucHJpb3JpdHk7XG4gICAgICBjb25zdCBpdGVtV2l0aFByaW9yaXR5ID0geyAuLi5pdGVtLCBwcmlvcml0eTogZWZmZWN0aXZlUHJpb3JpdHkgfTtcblxuICAgICAgLy8gQ3JlYXRlIHRyZWUgbm9kZSBkYXRhXG4gICAgICBjb25zdCBub2RlRGF0YTogQVhQTWVudVRyZWVOb2RlRGF0YSA9IHtcbiAgICAgICAgbWVudUl0ZW06IGl0ZW1XaXRoUHJpb3JpdHksXG4gICAgICAgIG1ldGFkYXRhLFxuICAgICAgfTtcblxuICAgICAgLy8gQ3JlYXRlIHRyZWUgbm9kZVxuICAgICAgY29uc3QgdHJlZU5vZGU6IEFYVHJlZVZpZXdOb2RlID0ge1xuICAgICAgICBpZDogaXRlbU5hbWUgfHwgaXRlbS5wYXRoIHx8IHRoaXMuZ2VuZXJhdGVOb2RlSWQoKSxcbiAgICAgICAgbGFiZWw6IGl0ZW0udGV4dCB8fCBpdGVtLnBhdGggfHwgJ1VubmFtZWQnLFxuICAgICAgICBpY29uOiBpdGVtLmljb24sXG4gICAgICAgIGV4cGFuZGVkOiBmYWxzZSxcbiAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICB2aXNpYmxlOiB0cnVlLCAvLyBBbHdheXMgdmlzaWJsZSBpbiBtYW5hZ2VtZW50IGludGVyZmFjZSwgQ1NTIGhhbmRsZXMgaGlkZGVuIHN0eWxpbmdcbiAgICAgICAgY2hpbGRyZW46IGl0ZW0uY2hpbGRyZW4gPyB0aGlzLmNvbnZlcnRUb1RyZWVOb2RlcyhpdGVtLmNoaWxkcmVuLCBjdXN0b21pemF0aW9uLCBpdGVtTmFtZSkgOiB1bmRlZmluZWQsXG4gICAgICAgIGNoaWxkcmVuQ291bnQ6IGl0ZW0uY2hpbGRyZW4/Lmxlbmd0aCxcbiAgICAgICAgZGF0YTogbm9kZURhdGEsXG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gdHJlZU5vZGU7XG4gICAgfSk7XG5cbiAgICAvLyBTb3J0IGJ5IHByaW9yaXR5XG4gICAgbm9kZXMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgY29uc3QgYVByaW9yaXR5ID0gKGEuZGF0YSBhcyBBWFBNZW51VHJlZU5vZGVEYXRhKT8ubWVudUl0ZW0ucHJpb3JpdHkgPz8gMDtcbiAgICAgIGNvbnN0IGJQcmlvcml0eSA9IChiLmRhdGEgYXMgQVhQTWVudVRyZWVOb2RlRGF0YSk/Lm1lbnVJdGVtLnByaW9yaXR5ID8/IDA7XG4gICAgICByZXR1cm4gYVByaW9yaXR5IC0gYlByaW9yaXR5O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5vZGVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBjdXN0b21pemF0aW9uIGZyb20gdHJlZSBzdHJ1Y3R1cmVcbiAgICogRXh0cmFjdHMgcHJpb3JpdGllcyBhbmQgcGFyZW50IHJlbGF0aW9uc2hpcHMgZnJvbSB0cmVlIG5vZGVzXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZUN1c3RvbWl6YXRpb25Gcm9tVHJlZShcbiAgICB0cmVlTm9kZXM6IEFYVHJlZVZpZXdOb2RlW10sXG4gICAgY3VzdG9taXphdGlvbjogQVhQTWVudUN1c3RvbWl6YXRpb24sXG4gICAgcGFyZW50TmFtZT86IHN0cmluZyxcbiAgKTogdm9pZCB7XG4gICAgLy8gQ2FsY3VsYXRlIGJhc2UgcHJpb3JpdHkgZm9yIHRoaXMgbGV2ZWwgdG8gbWFpbnRhaW4gcmVsYXRpdmUgb3JkZXJpbmdcbiAgICBjb25zdCBiYXNlUHJpb3JpdHkgPSBwYXJlbnROYW1lID8gUFJJT1JJVFlfQkFTRV9ORVNURUQgOiBQUklPUklUWV9CQVNFX1JPT1Q7XG4gICAgY29uc3QgcHJpb3JpdHlTdGVwID0gUFJJT1JJVFlfU1RFUDtcblxuICAgIHRyZWVOb2Rlcy5mb3JFYWNoKChub2RlLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3Qgbm9kZURhdGEgPSBub2RlLmRhdGEgYXMgQVhQTWVudVRyZWVOb2RlRGF0YTtcbiAgICAgIGNvbnN0IG1lbnVJdGVtID0gbm9kZURhdGE/Lm1lbnVJdGVtO1xuXG4gICAgICBpZiAobWVudUl0ZW0/Lm5hbWUpIHtcbiAgICAgICAgdGhpcy5lbnN1cmVPdmVycmlkZUV4aXN0cyhjdXN0b21pemF0aW9uLCBtZW51SXRlbS5uYW1lKTtcblxuICAgICAgICAvLyBDYWxjdWxhdGUgbmV3IHByaW9yaXR5IGJhc2VkIG9uIGN1cnJlbnQgcG9zaXRpb25cbiAgICAgICAgY29uc3QgbmV3UHJpb3JpdHkgPSBiYXNlUHJpb3JpdHkgKyBpbmRleCAqIHByaW9yaXR5U3RlcDtcblxuICAgICAgICAvLyBHZXQgY3VycmVudCBlZmZlY3RpdmUgcHJpb3JpdHkgKGNvbnNpZGVyaW5nIGV4aXN0aW5nIG92ZXJyaWRlcylcbiAgICAgICAgY29uc3QgY3VycmVudEVmZmVjdGl2ZVByaW9yaXR5ID1cbiAgICAgICAgICBjdXN0b21pemF0aW9uLm92ZXJyaWRlc1ttZW51SXRlbS5uYW1lXT8ucHJpb3JpdHkgPz8gbm9kZURhdGEubWV0YWRhdGEub3JpZ2luYWxQcmlvcml0eSA/PyAwO1xuXG4gICAgICAgIC8vIEFsd2F5cyB1cGRhdGUgcHJpb3JpdHkgdG8gcmVmbGVjdCBjdXJyZW50IHBvc2l0aW9uIGluIHRyZWVcbiAgICAgICAgLy8gVGhpcyBlbnN1cmVzIHJlb3JkZXJpbmcgd29ya3MgY29ycmVjdGx5IGV2ZW4gYWZ0ZXIgbXVsdGlwbGUgbW92ZXNcbiAgICAgICAgaWYgKG5ld1ByaW9yaXR5ICE9PSBjdXJyZW50RWZmZWN0aXZlUHJpb3JpdHkpIHtcbiAgICAgICAgICBjdXN0b21pemF0aW9uLm92ZXJyaWRlc1ttZW51SXRlbS5uYW1lXS5wcmlvcml0eSA9IG5ld1ByaW9yaXR5O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGV0ZXJtaW5lIGN1cnJlbnQgZWZmZWN0aXZlIHBhcmVudCAoY29uc2lkZXJpbmcgZXhpc3Rpbmcgb3ZlcnJpZGVzKVxuICAgICAgICBjb25zdCBjdXJyZW50RWZmZWN0aXZlUGFyZW50ID1cbiAgICAgICAgICBjdXN0b21pemF0aW9uLm92ZXJyaWRlc1ttZW51SXRlbS5uYW1lXT8ucGFyZW50TmFtZSA/PyBub2RlRGF0YS5tZXRhZGF0YS5vcmlnaW5hbFBhcmVudE5hbWU7XG5cbiAgICAgICAgLy8gVXBkYXRlIHBhcmVudCByZWxhdGlvbnNoaXAgaWYgaXQgY2hhbmdlZCBmcm9tIGN1cnJlbnQgZWZmZWN0aXZlIHBhcmVudFxuICAgICAgICBpZiAocGFyZW50TmFtZSAhPT0gY3VycmVudEVmZmVjdGl2ZVBhcmVudCkge1xuICAgICAgICAgIGlmIChwYXJlbnROYW1lKSB7XG4gICAgICAgICAgICBjdXN0b21pemF0aW9uLm92ZXJyaWRlc1ttZW51SXRlbS5uYW1lXS5wYXJlbnROYW1lID0gcGFyZW50TmFtZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gTW92aW5nIHRvIHJvb3QgLSBzZXQgdG8gbnVsbCAobm90IHVuZGVmaW5lZCkgc28gbWlkZGxld2FyZSB3aWxsIHByb2Nlc3MgaXRcbiAgICAgICAgICAgIC8vIG1vdmVUbyhudWxsKSBtb3ZlcyB0aGUgaXRlbSB0byByb290IGxldmVsXG4gICAgICAgICAgICBjdXN0b21pemF0aW9uLm92ZXJyaWRlc1ttZW51SXRlbS5uYW1lXS5wYXJlbnROYW1lID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDbGVhbiB1cCBlbXB0eSBvdmVycmlkZXNcbiAgICAgICAgdGhpcy5jbGVhbnVwRW1wdHlPdmVycmlkZShjdXN0b21pemF0aW9uLCBtZW51SXRlbS5uYW1lKTtcblxuICAgICAgICAvLyBSZWN1cnNpdmVseSBwcm9jZXNzIGNoaWxkcmVuXG4gICAgICAgIGlmIChub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMudXBkYXRlQ3VzdG9taXphdGlvbkZyb21UcmVlKG5vZGUuY2hpbGRyZW4sIGN1c3RvbWl6YXRpb24sIG1lbnVJdGVtLm5hbWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgbWVudSBuYW1lIGJlZm9yZSBvcGVyYXRpb25zXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlTWVudU5hbWUobWVudU5hbWU6IHN0cmluZywgb3BlcmF0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIW1lbnVOYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1lbnUgaXRlbSBtdXN0IGhhdmUgYSBuYW1lIHRvIGJlICR7b3BlcmF0aW9ufWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbnN1cmUgb3ZlcnJpZGUgb2JqZWN0IGV4aXN0cyBmb3IgYSBtZW51IGl0ZW1cbiAgICovXG4gIHByaXZhdGUgZW5zdXJlT3ZlcnJpZGVFeGlzdHMoY3VzdG9taXphdGlvbjogQVhQTWVudUN1c3RvbWl6YXRpb24sIG1lbnVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIWN1c3RvbWl6YXRpb24ub3ZlcnJpZGVzW21lbnVOYW1lXSkge1xuICAgICAgY3VzdG9taXphdGlvbi5vdmVycmlkZXNbbWVudU5hbWVdID0ge307XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsZWFuIHVwIGVtcHR5IG92ZXJyaWRlIG9iamVjdHNcbiAgICovXG4gIHByaXZhdGUgY2xlYW51cEVtcHR5T3ZlcnJpZGUoY3VzdG9taXphdGlvbjogQVhQTWVudUN1c3RvbWl6YXRpb24sIG1lbnVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoT2JqZWN0LmtleXMoY3VzdG9taXphdGlvbi5vdmVycmlkZXNbbWVudU5hbWVdIHx8IHt9KS5sZW5ndGggPT09IDApIHtcbiAgICAgIGRlbGV0ZSBjdXN0b21pemF0aW9uLm92ZXJyaWRlc1ttZW51TmFtZV07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZsYXR0ZW4gbWVudSBpdGVtcyByZWN1cnNpdmVseSBpbnRvIGEgbWFwXG4gICAqL1xuICBwcml2YXRlIGZsYXR0ZW5NZW51SXRlbXMoaXRlbXM6IEFYUE1lbnVJdGVtW10pOiBNYXA8c3RyaW5nLCBBWFBNZW51SXRlbT4ge1xuICAgIGNvbnN0IGl0ZW1NYXAgPSBuZXcgTWFwPHN0cmluZywgQVhQTWVudUl0ZW0+KCk7XG5cbiAgICBjb25zdCBmbGF0dGVuID0gKGl0ZW1MaXN0OiBBWFBNZW51SXRlbVtdKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbUxpc3QpIHtcbiAgICAgICAgaWYgKGl0ZW0ubmFtZSkge1xuICAgICAgICAgIC8vIENsb25lIGl0ZW0gd2l0aG91dCBjaGlsZHJlbiB0byByZWJ1aWxkIHN0cnVjdHVyZVxuICAgICAgICAgIGl0ZW1NYXAuc2V0KGl0ZW0ubmFtZSwgeyAuLi5pdGVtLCBjaGlsZHJlbjogdW5kZWZpbmVkIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpdGVtLmNoaWxkcmVuKSB7XG4gICAgICAgICAgZmxhdHRlbihpdGVtLmNoaWxkcmVuKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBmbGF0dGVuKGl0ZW1zKTtcbiAgICByZXR1cm4gaXRlbU1hcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSB1bmlxdWUgSUQgZm9yIHRyZWUgbm9kZXNcbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVOb2RlSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYG5vZGUtJHtEYXRlLm5vdygpfS0ke01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwMDAwKX1gO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG59XG5cbi8vI2VuZHJlZ2lvblxuIl19","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTreeViewComponent } from '@acorex/components/tree-view';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXPPlatformScope } from '@acorex/platform/core';\nimport { AXPLayoutBuilderService } from '@acorex/platform/layout/builder';\nimport { AXPStateMessageComponent, AXPThemeLayoutBlockComponent } from '@acorex/platform/layout/components';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent } from '@acorex/platform/layout/views';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, signal, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Subject, takeUntil } from 'rxjs';\nimport { AXPMenuManagementService } from '../../menu-management.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/button\";\nimport * as i2 from \"@acorex/components/decorators\";\nimport * as i3 from \"@acorex/components/dropdown\";\nimport * as i4 from \"@acorex/components/badge\";\nimport * as i5 from \"@angular/common\";\nimport * as i6 from \"@acorex/core/translation\";\n//#region ---- Menu List Component ----\nexport class AXMMenuListComponent extends AXPPageLayoutBaseComponent {\n constructor() {\n super(...arguments);\n //#region ---- Dependencies ----\n this.menuManagementService = inject(AXPMenuManagementService);\n this.layoutBuilder = inject(AXPLayoutBuilderService);\n this.dialogService = inject(AXDialogService);\n this.toastService = inject(AXToastService);\n this.translationService = inject(AXTranslationService);\n this.route = inject(ActivatedRoute);\n //#endregion\n //#region ---- Component State ----\n this.tree = viewChild(AXTreeViewComponent, ...(ngDevMode ? [{ debugName: \"tree\" }] : []));\n this.treeNodes = signal([], ...(ngDevMode ? [{ debugName: \"treeNodes\" }] : []));\n this.isLoading = signal(false, ...(ngDevMode ? [{ debugName: \"isLoading\" }] : []));\n this.error = signal('', ...(ngDevMode ? [{ debugName: \"error\" }] : []));\n this.currentScope = signal(AXPPlatformScope.User, ...(ngDevMode ? [{ debugName: \"currentScope\" }] : []));\n this.isSyncing = false; // Prevent concurrent sync operations\n this.destroy$ = new Subject(); // For subscription cleanup\n }\n //#endregion\n //#region ---- Lifecycle ----\n async ngOnInit() {\n await super.ngOnInit();\n // Get scope from route (with memory leak prevention)\n this.route.params.pipe(takeUntil(this.destroy$)).subscribe(async (params) => {\n const scope = params['scope'];\n if (scope) {\n this.currentScope.set(scope);\n await this.loadMenuItems();\n this.recompute(); // Update page header after loading\n }\n });\n }\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n //#endregion\n //#region ---- Event Handlers ----\n /**\n * Handle before drop validation\n */\n async handleBeforeDrop(e) {\n const targetParent = e.currentParent?.data;\n // Prevent dropping into items with paths (leaf nodes)\n if (targetParent?.menuItem?.path) {\n e.canceled = true;\n const message = await this.translationService.translateAsync('@platform-management:menu-management.messages.error.move');\n this.toastService.warning(message);\n return;\n }\n // Note: Circular reference validation is handled by the tree component itself\n // Additional validation can be added here if needed based on business rules\n }\n /**\n * Handle after drop event to sync changes\n */\n async handleAfterDrop() {\n await this.syncTreeChanges();\n }\n //#endregion\n //#region ---- Data Loading ----\n /**\n * Load menu tree for current scope\n */\n async loadMenuItems() {\n try {\n this.isLoading.set(true);\n this.error.set('');\n const treeNodes = await this.menuManagementService.getMenuTree(this.currentScope());\n this.treeNodes.set(treeNodes);\n this.recompute();\n }\n catch (error) {\n this.error.set(error instanceof Error ? error.message : 'Failed to load menu items');\n const message = await this.translationService.translateAsync('@platform-management:menu-management.messages.error.load');\n this.toastService.danger(message);\n }\n finally {\n this.isLoading.set(false);\n }\n }\n /**\n * Sync tree changes to backend\n */\n async syncTreeChanges() {\n // Prevent concurrent sync operations\n if (this.isSyncing) {\n return;\n }\n try {\n this.isSyncing = true;\n const nodes = this.treeNodes();\n const scope = this.currentScope();\n if (nodes.length === 0) {\n return;\n }\n await this.menuManagementService.syncTreeChanges(scope, nodes);\n const message = await this.translationService.translateAsync('@platform-management:menu-management.messages.success.reorder');\n this.toastService.success(message);\n }\n catch (error) {\n console.error('Failed to sync tree changes:', error);\n const message = await this.translationService.translateAsync('@platform-management:menu-management.messages.error.sync');\n this.toastService.danger(message);\n }\n finally {\n this.isSyncing = false;\n }\n }\n //#endregion\n //#region ---- Page Layout Interface ----\n /**\n * Get page title\n */\n async getPageTitle() {\n const scopeName = this.currentScope();\n const scopeKey = scopeName === AXPPlatformScope.User ? 'user' : 'tenant';\n return this.translationService.translateAsync(`@platform-management:menu-management.menus.${scopeKey}.title`);\n }\n /**\n * Get page description\n */\n async getPageDescription() {\n return this.translationService.translateAsync('@platform-management:menu-management.components.menu-list.description');\n }\n /**\n * Get primary menu items (actions)\n */\n async getPrimaryMenuItems() {\n return [\n {\n title: await this.translationService.translateAsync('@platform-management:menu-management.actions.add-root.title'),\n icon: 'fa-light fa-plus',\n color: 'primary',\n command: { name: 'add-root' },\n },\n ];\n }\n /**\n * Get secondary menu items\n */\n async getSecondaryMenuItems() {\n return [\n {\n title: await this.translationService.translateAsync('@platform-management:menu-management.actions.collapse.title'),\n icon: 'fa-light fa-minus-square',\n command: { name: 'collapse' },\n },\n {\n title: await this.translationService.translateAsync('@platform-management:menu-management.actions.expand.title'),\n icon: 'fa-light fa-plus-square',\n command: { name: 'expand' },\n break: true,\n },\n {\n title: await this.translationService.translateAsync('@platform-management:menu-management.actions.reset.title'),\n icon: 'fa-light fa-rotate-left',\n color: 'danger',\n command: { name: 'reset' },\n },\n ];\n }\n /**\n * Execute commands from page actions\n */\n async execute(command) {\n switch (command.name) {\n case 'add-root':\n await this.addRootMenuItem();\n break;\n case 'collapse':\n this.tree()?.collapseAll();\n break;\n case 'expand':\n this.tree()?.expandAll();\n break;\n case 'reset':\n await this.resetCustomizations();\n break;\n }\n }\n //#endregion\n //#region ---- Action Handlers ----\n /**\n * Handle menu item action\n */\n async onAction(action, nodeData) {\n switch (action) {\n case 'show':\n await this.showMenuItem(nodeData);\n break;\n case 'hide':\n await this.hideMenuItem(nodeData);\n break;\n case 'edit':\n await this.editMenuItem(nodeData);\n break;\n case 'delete':\n await this.deleteMenuItem(nodeData);\n break;\n case 'add-child':\n await this.addChildMenuItem(nodeData);\n break;\n }\n }\n /**\n * Add new root menu item\n */\n async addRootMenuItem() {\n await this.showMenuItemDialog(null, null);\n }\n /**\n * Add new child menu item\n */\n async addChildMenuItem(parentNodeData) {\n await this.showMenuItemDialog(null, parentNodeData.menuItem.name);\n }\n /**\n * Reset customizations\n */\n async resetCustomizations() {\n const title = await this.translationService.translateAsync('@platform-management:menu-management.actions.reset.confirm.title');\n const message = await this.translationService.translateAsync('@platform-management:menu-management.actions.reset.confirm.message');\n const confirmed = await this.dialogService.confirm(title, message);\n if (!confirmed)\n return;\n try {\n // Reset customizations for current scope\n await this.menuManagementService.resetCustomizations(this.currentScope());\n const message = await this.translationService.translateAsync('@platform-management:menu-management.messages.success.reset');\n this.toastService.success(message);\n }\n catch (error) {\n console.error('Failed to reset customizations:', error);\n const message = await this.translationService.translateAsync('@platform-management:menu-management.messages.error.reset');\n this.toastService.danger(message);\n }\n finally {\n // Reload anyway to show current state\n await this.loadMenuItems();\n }\n }\n //#endregion\n //#region ---- Menu Item Actions ----\n /**\n * Show menu item\n */\n async showMenuItem(nodeData) {\n await this.executeMenuAction(() => this.menuManagementService.showMenuItem(this.currentScope(), nodeData.menuItem.name), '@platform-management:menu-management.messages.success.show', '@platform-management:menu-management.messages.error.show');\n }\n /**\n * Hide menu item\n */\n async hideMenuItem(nodeData) {\n await this.executeMenuAction(() => this.menuManagementService.hideMenuItem(this.currentScope(), nodeData.menuItem.name), '@platform-management:menu-management.messages.success.hide', '@platform-management:menu-management.messages.error.hide');\n }\n /**\n * Edit menu item\n */\n async editMenuItem(nodeData) {\n await this.showMenuItemDialog(nodeData);\n }\n /**\n * Delete custom menu item\n */\n async deleteMenuItem(nodeData) {\n const title = await this.translationService.translateAsync('@general:actions.delete.title');\n const message = await this.translationService.translateAsync('@platform-management:menu-management.actions.delete.confirm.message');\n const confirmed = await this.dialogService.confirm(title, message);\n if (!confirmed)\n return;\n try {\n const item = nodeData.menuItem;\n if (!item.name)\n return;\n await this.menuManagementService.deleteCustomMenuItem(this.currentScope(), item.name);\n const message = await this.translationService.translateAsync('@platform-management:menu-management.messages.success.delete');\n this.toastService.success(message);\n await this.loadMenuItems();\n }\n catch (error) {\n const message = await this.translationService.translateAsync('@platform-management:menu-management.messages.error.delete');\n this.toastService.danger(message);\n }\n }\n //#endregion\n //#region ---- Dialog Helpers ----\n /**\n * Show menu item dialog (add/edit)\n */\n async showMenuItemDialog(nodeData, parentName = null) {\n const item = nodeData?.menuItem;\n const isEdit = !!item;\n const title = isEdit\n ? '@platform-management:menu-management.components.edit-dialog.title'\n : '@platform-management:menu-management.components.add-dialog.title';\n const context = {\n name: item?.name || '',\n text: item?.text || '',\n type: item?.type || 'menu',\n icon: item?.icon || '',\n path: item?.path || '',\n priority: item?.priority || 0,\n description: item?.description || '',\n };\n const dialogRef = await this.layoutBuilder\n .create()\n .dialog((dialog) => {\n dialog\n .setTitle(title)\n .setContext(context)\n .content((flex) => {\n flex\n .setDirection('column')\n .formField('@platform-management:menu-management.fields.name', (field) => {\n field.path('name');\n field.textBox({\n placeholder: '@platform-management:menu-management.fields.name',\n validations: [{ rule: 'required' }],\n disabled: isEdit && nodeData?.metadata?.isBuiltIn,\n });\n })\n .formField('@platform-management:menu-management.fields.text', (field) => {\n field.path('text');\n field.textBox({\n placeholder: '@platform-management:menu-management.fields.text',\n validations: [{ rule: 'required' }],\n });\n })\n .formField('@platform-management:menu-management.fields.icon', (field) => {\n field.path('icon');\n field.customWidget('icon-chooser', {});\n })\n .formField('@platform-management:menu-management.fields.path', (field) => {\n field.path('path');\n field.textBox({\n placeholder: '@platform-management:menu-management.fields.path',\n disabled: isEdit && nodeData?.metadata?.isBuiltIn,\n });\n })\n .formField('@platform-management:menu-management.fields.priority', (field) => {\n field.path('priority');\n field.numberBox({\n placeholder: '@platform-management:menu-management.fields.priority',\n step: 10,\n });\n })\n .formField('@platform-management:menu-management.fields.description', (field) => {\n field.path('description');\n field.largeTextBox({\n placeholder: '@platform-management:menu-management.fields.description',\n rows: 3,\n });\n });\n })\n .setActions((actions) => {\n actions.cancel('@general:actions.cancel.title').submit('@general:actions.save.title');\n });\n })\n .show();\n const action = dialogRef.action();\n if (action === 'cancel') {\n dialogRef.close();\n return;\n }\n const formData = dialogRef.context();\n try {\n if (isEdit && item?.name) {\n // Update existing item\n if (nodeData?.metadata?.isCustom) {\n await this.menuManagementService.updateCustomMenuItem(this.currentScope(), item.name, formData);\n }\n else {\n await this.menuManagementService.updateMenuProperties(this.currentScope(), item.name, formData);\n }\n }\n else {\n // Add new custom item\n const newItem = {\n name: formData.name,\n text: formData.text,\n icon: formData.icon,\n path: formData.path,\n priority: formData.priority,\n description: formData.description,\n };\n // If parent is specified, add as child\n if (parentName) {\n // Add custom item as child of parent\n await this.menuManagementService.addCustomMenuItem(this.currentScope(), newItem, parentName);\n }\n else {\n // Add as root level item\n await this.menuManagementService.addCustomMenuItem(this.currentScope(), newItem, null);\n }\n }\n const message = await this.translationService.translateAsync('@platform-management:menu-management.messages.success.save');\n this.toastService.success(message);\n await this.loadMenuItems();\n dialogRef.close();\n }\n catch (error) {\n const message = await this.translationService.translateAsync('@platform-management:menu-management.messages.error.save');\n this.toastService.danger(message);\n }\n }\n /**\n * Execute a menu action with common error handling\n */\n async executeMenuAction(action, successMessageKey, errorMessageKey) {\n try {\n await action();\n const message = await this.translationService.translateAsync(successMessageKey);\n this.toastService.success(message);\n await this.loadMenuItems();\n }\n catch (error) {\n console.error('Menu action failed:', error);\n const message = await this.translationService.translateAsync(errorMessageKey);\n this.toastService.danger(message);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMMenuListComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXMMenuListComponent, isStandalone: true, selector: \"axm-menu-list\", host: { classAttribute: \"axm-menu-list-page\" }, providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMMenuListComponent,\n },\n ], viewQueries: [{ propertyName: \"tree\", first: true, predicate: AXTreeViewComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: \"<axp-page-layout>\\n <axp-page-content>\\n @if (isLoading()) {\\n <!-- Loading State -->\\n <axp-state-message\\n mode=\\\"loading\\\"\\n icon=\\\"fa-light fa-spinner-third fa-spin\\\"\\n [title]=\\\"\\n ('@platform-management:menu-management.components.menu-list.empty-states.loading.title' | translate | async)!\\n \\\"\\n [description]=\\\"\\n ('@platform-management:menu-management.components.menu-list.empty-states.loading.description'\\n | translate\\n | async)!\\n \\\"\\n />\\n } @else if (error()) {\\n <!-- Error State -->\\n <axp-state-message\\n mode=\\\"error\\\"\\n icon=\\\"fa-light fa-circle-exclamation\\\"\\n [title]=\\\"\\n ('@platform-management:menu-management.components.menu-list.empty-states.error.title' | translate | async)!\\n \\\"\\n [description]=\\\"\\n ('@platform-management:menu-management.components.menu-list.empty-states.error.description'\\n | translate\\n | async)!\\n \\\"\\n >\\n <ax-button\\n slot=\\\"actions\\\"\\n [text]=\\\"'@general:actions.retry.title' | translate | async\\\"\\n [look]=\\\"'outline'\\\"\\n [color]=\\\"'primary'\\\"\\n (onClick)=\\\"loadMenuItems()\\\"\\n >\\n <i class=\\\"fa-light fa-rotate-left\\\"></i>\\n </ax-button>\\n </axp-state-message>\\n } @else if (treeNodes().length === 0) {\\n <!-- Empty State -->\\n <axp-state-message\\n mode=\\\"empty\\\"\\n icon=\\\"fa-light fa-bars\\\"\\n [title]=\\\"\\n ('@platform-management:menu-management.components.menu-list.empty-states.no-data.title' | translate | async)!\\n \\\"\\n [description]=\\\"\\n ('@platform-management:menu-management.components.menu-list.empty-states.no-data.description'\\n | translate\\n | async)!\\n \\\"\\n >\\n <ax-button\\n slot=\\\"actions\\\"\\n [text]=\\\"'@platform-management:menu-management.actions.add-root.title' | translate | async\\\"\\n [look]=\\\"'solid'\\\"\\n [color]=\\\"'primary'\\\"\\n (onClick)=\\\"addRootMenuItem()\\\"\\n >\\n <i class=\\\"fa-light fa-plus\\\"></i>\\n </ax-button>\\n </axp-state-message>\\n } @else {\\n <!-- Menu Tree Content -->\\n <div class=\\\"axm-menu-list__container\\\">\\n <!-- Menu Tree -->\\n <div class=\\\"axm-menu-list__tree\\\">\\n <ax-tree-view\\n [(datasource)]=\\\"treeNodes\\\"\\n look=\\\"default\\\"\\n [itemTemplate]=\\\"itemTemplate\\\"\\n [showCheckbox]=\\\"false\\\"\\n [showIcons]=\\\"false\\\"\\n [showChildrenBadge]=\\\"false\\\"\\n [nodeHeight]=\\\"'normal'\\\"\\n [dragMode]=\\\"'handler'\\\"\\n (onBeforeDrop)=\\\"handleBeforeDrop($event)\\\"\\n (onItemsChange)=\\\"handleAfterDrop()\\\"\\n ></ax-tree-view>\\n </div>\\n </div>\\n }\\n </axp-page-content>\\n</axp-page-layout>\\n\\n<!-- Custom Item Template -->\\n<ng-template #itemTemplate let-node=\\\"node\\\" let-level=\\\"level\\\">\\n @let nodeData = node.data;\\n @let item = nodeData.menuItem;\\n @let metadata = nodeData.metadata;\\n <div\\n class=\\\"axm-menu-tree-item__wrapper\\\"\\n [class.axm-menu-tree-item__wrapper--hidden]=\\\"metadata.isHidden\\\"\\n [class.axm-menu-tree-item__wrapper--custom]=\\\"metadata.isCustom\\\"\\n [class.axm-menu-tree-item__wrapper--group]=\\\"item.type === 'group'\\\"\\n >\\n <!-- Icon (hidden for groups) -->\\n @if (item.icon && item.type !== 'group') {\\n <i class=\\\"axm-menu-tree-item__icon\\\" [class]=\\\"item.icon\\\"></i>\\n }\\n\\n <!-- Text or Info -->\\n @if (item.type === 'group') {\\n <!-- Group Heading -->\\n <span class=\\\"axm-menu-tree-item__group\\\">\\n <i class=\\\"fa-light fa-layer-group\\\"></i>\\n {{ item.text | translate | async }}\\n </span>\\n } @else if (item.type === 'break') {\\n <!-- Divider -->\\n <span class=\\\"axm-menu-tree-item__divider\\\">\\n <i class=\\\"fa-light fa-minus\\\"></i>\\n {{ '@platform-management:menu-management.states.divider' | translate | async }}\\n </span>\\n } @else if (item.text) {\\n <!-- Regular Menu Item -->\\n <span class=\\\"axm-menu-tree-item__text\\\">\\n {{ item.text | translate | async }}\\n </span>\\n } @else if (item.path) {\\n <!-- Path-only Item -->\\n <span class=\\\"axm-menu-tree-item__path\\\">\\n <i class=\\\"fa-light fa-link\\\"></i>\\n {{ item.path }}\\n </span>\\n }\\n\\n <!-- Menu Name/Key -->\\n @if (item.name) {\\n <code class=\\\"axm-menu-tree-item__name\\\">{{ item.name }}</code>\\n }\\n\\n <!-- Status Badges -->\\n @if (metadata.isHidden) {\\n <ax-badge\\n [text]=\\\"('@platform-management:menu-management.states.hidden' | translate | async)!\\\"\\n color=\\\"danger\\\"\\n ></ax-badge>\\n } @else if (metadata.isCustom) {\\n <ax-badge\\n [text]=\\\"('@platform-management:menu-management.states.custom' | translate | async)!\\\"\\n color=\\\"success\\\"\\n ></ax-badge>\\n } @else if (metadata.isBuiltIn) {\\n <ax-badge\\n [text]=\\\"('@platform-management:menu-management.states.built-in' | translate | async)!\\\"\\n color=\\\"primary\\\"\\n ></ax-badge>\\n }\\n\\n <!-- Actions Dropdown -->\\n <ax-button class=\\\"axm-menu-tree-item__actions\\\" [look]=\\\"'blank'\\\" [size]=\\\"'sm'\\\" [iconOnly]=\\\"true\\\">\\n <ax-prefix>\\n <i class=\\\"fa-light fa-ellipsis-vertical\\\"></i>\\n </ax-prefix>\\n\\n <ax-dropdown-panel #panel>\\n <ax-button-item-list>\\n <!-- Edit (only for items with names) -->\\n @if (item.name) {\\n <ax-button-item\\n [text]=\\\"('@general:actions.edit.title' | translate | async)!\\\"\\n (onClick)=\\\"onAction('edit', nodeData); panel.close()\\\"\\n >\\n <ax-prefix>\\n <i class=\\\"fa-light fa-edit\\\"></i>\\n </ax-prefix>\\n </ax-button-item>\\n }\\n\\n <!-- Show/Hide (only for items with names) -->\\n @if (item.name && metadata.isBuiltIn) {\\n @if (metadata.isHidden) {\\n <ax-button-item\\n [text]=\\\"('@platform-management:menu-management.actions.show.title' | translate | async)!\\\"\\n (onClick)=\\\"onAction('show', nodeData); panel.close()\\\"\\n >\\n <ax-prefix>\\n <i class=\\\"fa-light fa-eye\\\"></i>\\n </ax-prefix>\\n </ax-button-item>\\n } @else {\\n <ax-button-item\\n [text]=\\\"('@platform-management:menu-management.actions.hide.title' | translate | async)!\\\"\\n (onClick)=\\\"onAction('hide', nodeData); panel.close()\\\"\\n >\\n <ax-prefix>\\n <i class=\\\"fa-light fa-eye-slash\\\"></i>\\n </ax-prefix>\\n </ax-button-item>\\n }\\n }\\n\\n @if (!item.path && (item.type === 'menu' || !item.type)) {\\n <!-- Add Child -->\\n <ax-button-item\\n [text]=\\\"('@platform-management:menu-management.actions.add-child.title' | translate | async)!\\\"\\n (onClick)=\\\"onAction('add-child', nodeData); panel.close()\\\"\\n >\\n <ax-prefix>\\n <i class=\\\"fa-light fa-plus\\\"></i>\\n </ax-prefix>\\n </ax-button-item>\\n }\\n\\n <!-- Delete (only for custom items with names) -->\\n @if (item.name && metadata.isCustom) {\\n <ax-divider></ax-divider>\\n <ax-button-item\\n [color]=\\\"'danger'\\\"\\n [text]=\\\"('@general:actions.delete.title' | translate | async)!\\\"\\n (onClick)=\\\"onAction('delete', nodeData); panel.close()\\\"\\n >\\n <ax-prefix>\\n <i class=\\\"fa-light fa-trash\\\"></i>\\n </ax-prefix>\\n </ax-button-item>\\n }\\n\\n <!-- Info message for items without names -->\\n @if (!item.name) {\\n <ax-divider></ax-divider>\\n <div class=\\\"ax-p-2 ax-text-xs ax-text-neutral-500 ax-italic\\\">\\n {{ '@platform-management:menu-management.messages.info.no-name' | translate | async }}\\n </div>\\n }\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-button>\\n </div>\\n</ng-template>\\n\", styles: [\".axm-menu-list-page .axm-menu-list__container{display:flex;flex-direction:column;gap:1rem;padding:1.5rem}.axm-menu-list-page .axm-menu-list__tree{display:flex;flex-direction:column;gap:.5rem}.axm-menu-list-page .axm-menu-tree-item__wrapper{display:flex;flex:1 1 0%;align-items:center;gap:1rem;border-radius:.375rem;padding:.5rem;border-width:1px;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.axm-menu-list-page .axm-menu-tree-item__wrapper:hover{background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}.axm-menu-list-page .axm-menu-tree-item__wrapper--hidden{opacity:.5}.axm-menu-list-page .axm-menu-tree-item__wrapper--custom{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1))}.axm-menu-list-page .axm-menu-tree-item__wrapper--group{padding-top:.75rem;padding-bottom:.75rem}.axm-menu-list-page .axm-menu-tree-item__icon{display:flex;align-items:center;justify-content:center;height:1.5rem;width:1.5rem;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-500),var(--tw-text-opacity, 1))}.axm-menu-list-page .axm-menu-tree-item__text{flex:1 1 0%;font-size:.875rem;line-height:1.25rem;font-weight:500}.axm-menu-list-page .axm-menu-tree-item__group,.axm-menu-list-page .axm-menu-tree-item__divider,.axm-menu-list-page .axm-menu-tree-item__path{display:flex;flex:1 1 0%;align-items:center;gap:.5rem;font-size:.75rem;line-height:1rem;font-style:italic;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.axm-menu-list-page .axm-menu-tree-item__divider i,.axm-menu-list-page .axm-menu-tree-item__path i{--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.axm-menu-list-page .axm-menu-tree-item__name{display:flex;align-items:center;border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1));font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-weight:400;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1));white-space:nowrap;-webkit-user-select:all;user-select:all}.axm-menu-list-page .axm-menu-tree-item__actions{margin-left:.5rem}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i1.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"component\", type: i1.AXButtonItemComponent, selector: \"ax-button-item\", inputs: [\"color\", \"disabled\", \"text\", \"selected\", \"divided\", \"data\", \"name\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\", \"disabledChange\"] }, { kind: \"component\", type: i1.AXButtonItemListComponent, selector: \"ax-button-item-list\", inputs: [\"items\", \"closeParentOnClick\", \"lockOnLoading\"], outputs: [\"onItemClick\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i2.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXDropdownButtonModule }, { kind: \"ngmodule\", type: AXDropdownModule }, { kind: \"component\", type: i3.AXDropdownPanelComponent, selector: \"ax-dropdown-panel\", inputs: [\"isOpen\", \"fitParent\", \"dropdownWidth\", \"position\", \"placement\", \"_target\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"component\", type: AXTreeViewComponent, selector: \"ax-tree-view\", inputs: [\"datasource\", \"selectMode\", \"showCheckbox\", \"checkChildrenOnSelect\", \"intermediateState\", \"checkOnClick\", \"dragMode\", \"dragOperationType\", \"showIcons\", \"showChildrenBadge\", \"expandedIcon\", \"collapsedIcon\", \"indentSize\", \"nodeHeight\", \"look\", \"itemTemplate\"], outputs: [\"datasourceChange\", \"onBeforeDrop\", \"onNodeToggle\", \"onNodeSelect\", \"onOrderChange\", \"onMoveChange\", \"onItemsChange\"] }, { kind: \"component\", type: AXPPageLayoutComponent, selector: \"axp-page-layout\" }, { kind: \"component\", type: AXPThemeLayoutBlockComponent, selector: \" axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, \" }, { kind: \"component\", type: AXPStateMessageComponent, selector: \"axp-state-message\", inputs: [\"mode\", \"icon\", \"title\", \"description\", \"variant\"] }, { kind: \"ngmodule\", type: AXBadgeModule }, { kind: \"component\", type: i4.AXBadgeComponent, selector: \"ax-badge\", inputs: [\"color\", \"look\", \"text\"] }, { kind: \"pipe\", type: i5.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i6.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMMenuListComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-menu-list', imports: [\n CommonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXDropdownButtonModule,\n AXDropdownModule,\n AXTranslationModule,\n AXTreeViewComponent,\n AXPPageLayoutComponent,\n AXPThemeLayoutBlockComponent,\n AXPStateMessageComponent,\n AXBadgeModule,\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMMenuListComponent,\n },\n ], host: { class: 'axm-menu-list-page' }, template: \"<axp-page-layout>\\n <axp-page-content>\\n @if (isLoading()) {\\n <!-- Loading State -->\\n <axp-state-message\\n mode=\\\"loading\\\"\\n icon=\\\"fa-light fa-spinner-third fa-spin\\\"\\n [title]=\\\"\\n ('@platform-management:menu-management.components.menu-list.empty-states.loading.title' | translate | async)!\\n \\\"\\n [description]=\\\"\\n ('@platform-management:menu-management.components.menu-list.empty-states.loading.description'\\n | translate\\n | async)!\\n \\\"\\n />\\n } @else if (error()) {\\n <!-- Error State -->\\n <axp-state-message\\n mode=\\\"error\\\"\\n icon=\\\"fa-light fa-circle-exclamation\\\"\\n [title]=\\\"\\n ('@platform-management:menu-management.components.menu-list.empty-states.error.title' | translate | async)!\\n \\\"\\n [description]=\\\"\\n ('@platform-management:menu-management.components.menu-list.empty-states.error.description'\\n | translate\\n | async)!\\n \\\"\\n >\\n <ax-button\\n slot=\\\"actions\\\"\\n [text]=\\\"'@general:actions.retry.title' | translate | async\\\"\\n [look]=\\\"'outline'\\\"\\n [color]=\\\"'primary'\\\"\\n (onClick)=\\\"loadMenuItems()\\\"\\n >\\n <i class=\\\"fa-light fa-rotate-left\\\"></i>\\n </ax-button>\\n </axp-state-message>\\n } @else if (treeNodes().length === 0) {\\n <!-- Empty State -->\\n <axp-state-message\\n mode=\\\"empty\\\"\\n icon=\\\"fa-light fa-bars\\\"\\n [title]=\\\"\\n ('@platform-management:menu-management.components.menu-list.empty-states.no-data.title' | translate | async)!\\n \\\"\\n [description]=\\\"\\n ('@platform-management:menu-management.components.menu-list.empty-states.no-data.description'\\n | translate\\n | async)!\\n \\\"\\n >\\n <ax-button\\n slot=\\\"actions\\\"\\n [text]=\\\"'@platform-management:menu-management.actions.add-root.title' | translate | async\\\"\\n [look]=\\\"'solid'\\\"\\n [color]=\\\"'primary'\\\"\\n (onClick)=\\\"addRootMenuItem()\\\"\\n >\\n <i class=\\\"fa-light fa-plus\\\"></i>\\n </ax-button>\\n </axp-state-message>\\n } @else {\\n <!-- Menu Tree Content -->\\n <div class=\\\"axm-menu-list__container\\\">\\n <!-- Menu Tree -->\\n <div class=\\\"axm-menu-list__tree\\\">\\n <ax-tree-view\\n [(datasource)]=\\\"treeNodes\\\"\\n look=\\\"default\\\"\\n [itemTemplate]=\\\"itemTemplate\\\"\\n [showCheckbox]=\\\"false\\\"\\n [showIcons]=\\\"false\\\"\\n [showChildrenBadge]=\\\"false\\\"\\n [nodeHeight]=\\\"'normal'\\\"\\n [dragMode]=\\\"'handler'\\\"\\n (onBeforeDrop)=\\\"handleBeforeDrop($event)\\\"\\n (onItemsChange)=\\\"handleAfterDrop()\\\"\\n ></ax-tree-view>\\n </div>\\n </div>\\n }\\n </axp-page-content>\\n</axp-page-layout>\\n\\n<!-- Custom Item Template -->\\n<ng-template #itemTemplate let-node=\\\"node\\\" let-level=\\\"level\\\">\\n @let nodeData = node.data;\\n @let item = nodeData.menuItem;\\n @let metadata = nodeData.metadata;\\n <div\\n class=\\\"axm-menu-tree-item__wrapper\\\"\\n [class.axm-menu-tree-item__wrapper--hidden]=\\\"metadata.isHidden\\\"\\n [class.axm-menu-tree-item__wrapper--custom]=\\\"metadata.isCustom\\\"\\n [class.axm-menu-tree-item__wrapper--group]=\\\"item.type === 'group'\\\"\\n >\\n <!-- Icon (hidden for groups) -->\\n @if (item.icon && item.type !== 'group') {\\n <i class=\\\"axm-menu-tree-item__icon\\\" [class]=\\\"item.icon\\\"></i>\\n }\\n\\n <!-- Text or Info -->\\n @if (item.type === 'group') {\\n <!-- Group Heading -->\\n <span class=\\\"axm-menu-tree-item__group\\\">\\n <i class=\\\"fa-light fa-layer-group\\\"></i>\\n {{ item.text | translate | async }}\\n </span>\\n } @else if (item.type === 'break') {\\n <!-- Divider -->\\n <span class=\\\"axm-menu-tree-item__divider\\\">\\n <i class=\\\"fa-light fa-minus\\\"></i>\\n {{ '@platform-management:menu-management.states.divider' | translate | async }}\\n </span>\\n } @else if (item.text) {\\n <!-- Regular Menu Item -->\\n <span class=\\\"axm-menu-tree-item__text\\\">\\n {{ item.text | translate | async }}\\n </span>\\n } @else if (item.path) {\\n <!-- Path-only Item -->\\n <span class=\\\"axm-menu-tree-item__path\\\">\\n <i class=\\\"fa-light fa-link\\\"></i>\\n {{ item.path }}\\n </span>\\n }\\n\\n <!-- Menu Name/Key -->\\n @if (item.name) {\\n <code class=\\\"axm-menu-tree-item__name\\\">{{ item.name }}</code>\\n }\\n\\n <!-- Status Badges -->\\n @if (metadata.isHidden) {\\n <ax-badge\\n [text]=\\\"('@platform-management:menu-management.states.hidden' | translate | async)!\\\"\\n color=\\\"danger\\\"\\n ></ax-badge>\\n } @else if (metadata.isCustom) {\\n <ax-badge\\n [text]=\\\"('@platform-management:menu-management.states.custom' | translate | async)!\\\"\\n color=\\\"success\\\"\\n ></ax-badge>\\n } @else if (metadata.isBuiltIn) {\\n <ax-badge\\n [text]=\\\"('@platform-management:menu-management.states.built-in' | translate | async)!\\\"\\n color=\\\"primary\\\"\\n ></ax-badge>\\n }\\n\\n <!-- Actions Dropdown -->\\n <ax-button class=\\\"axm-menu-tree-item__actions\\\" [look]=\\\"'blank'\\\" [size]=\\\"'sm'\\\" [iconOnly]=\\\"true\\\">\\n <ax-prefix>\\n <i class=\\\"fa-light fa-ellipsis-vertical\\\"></i>\\n </ax-prefix>\\n\\n <ax-dropdown-panel #panel>\\n <ax-button-item-list>\\n <!-- Edit (only for items with names) -->\\n @if (item.name) {\\n <ax-button-item\\n [text]=\\\"('@general:actions.edit.title' | translate | async)!\\\"\\n (onClick)=\\\"onAction('edit', nodeData); panel.close()\\\"\\n >\\n <ax-prefix>\\n <i class=\\\"fa-light fa-edit\\\"></i>\\n </ax-prefix>\\n </ax-button-item>\\n }\\n\\n <!-- Show/Hide (only for items with names) -->\\n @if (item.name && metadata.isBuiltIn) {\\n @if (metadata.isHidden) {\\n <ax-button-item\\n [text]=\\\"('@platform-management:menu-management.actions.show.title' | translate | async)!\\\"\\n (onClick)=\\\"onAction('show', nodeData); panel.close()\\\"\\n >\\n <ax-prefix>\\n <i class=\\\"fa-light fa-eye\\\"></i>\\n </ax-prefix>\\n </ax-button-item>\\n } @else {\\n <ax-button-item\\n [text]=\\\"('@platform-management:menu-management.actions.hide.title' | translate | async)!\\\"\\n (onClick)=\\\"onAction('hide', nodeData); panel.close()\\\"\\n >\\n <ax-prefix>\\n <i class=\\\"fa-light fa-eye-slash\\\"></i>\\n </ax-prefix>\\n </ax-button-item>\\n }\\n }\\n\\n @if (!item.path && (item.type === 'menu' || !item.type)) {\\n <!-- Add Child -->\\n <ax-button-item\\n [text]=\\\"('@platform-management:menu-management.actions.add-child.title' | translate | async)!\\\"\\n (onClick)=\\\"onAction('add-child', nodeData); panel.close()\\\"\\n >\\n <ax-prefix>\\n <i class=\\\"fa-light fa-plus\\\"></i>\\n </ax-prefix>\\n </ax-button-item>\\n }\\n\\n <!-- Delete (only for custom items with names) -->\\n @if (item.name && metadata.isCustom) {\\n <ax-divider></ax-divider>\\n <ax-button-item\\n [color]=\\\"'danger'\\\"\\n [text]=\\\"('@general:actions.delete.title' | translate | async)!\\\"\\n (onClick)=\\\"onAction('delete', nodeData); panel.close()\\\"\\n >\\n <ax-prefix>\\n <i class=\\\"fa-light fa-trash\\\"></i>\\n </ax-prefix>\\n </ax-button-item>\\n }\\n\\n <!-- Info message for items without names -->\\n @if (!item.name) {\\n <ax-divider></ax-divider>\\n <div class=\\\"ax-p-2 ax-text-xs ax-text-neutral-500 ax-italic\\\">\\n {{ '@platform-management:menu-management.messages.info.no-name' | translate | async }}\\n </div>\\n }\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-button>\\n </div>\\n</ng-template>\\n\", styles: [\".axm-menu-list-page .axm-menu-list__container{display:flex;flex-direction:column;gap:1rem;padding:1.5rem}.axm-menu-list-page .axm-menu-list__tree{display:flex;flex-direction:column;gap:.5rem}.axm-menu-list-page .axm-menu-tree-item__wrapper{display:flex;flex:1 1 0%;align-items:center;gap:1rem;border-radius:.375rem;padding:.5rem;border-width:1px;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.axm-menu-list-page .axm-menu-tree-item__wrapper:hover{background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}.axm-menu-list-page .axm-menu-tree-item__wrapper--hidden{opacity:.5}.axm-menu-list-page .axm-menu-tree-item__wrapper--custom{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1))}.axm-menu-list-page .axm-menu-tree-item__wrapper--group{padding-top:.75rem;padding-bottom:.75rem}.axm-menu-list-page .axm-menu-tree-item__icon{display:flex;align-items:center;justify-content:center;height:1.5rem;width:1.5rem;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-500),var(--tw-text-opacity, 1))}.axm-menu-list-page .axm-menu-tree-item__text{flex:1 1 0%;font-size:.875rem;line-height:1.25rem;font-weight:500}.axm-menu-list-page .axm-menu-tree-item__group,.axm-menu-list-page .axm-menu-tree-item__divider,.axm-menu-list-page .axm-menu-tree-item__path{display:flex;flex:1 1 0%;align-items:center;gap:.5rem;font-size:.75rem;line-height:1rem;font-style:italic;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.axm-menu-list-page .axm-menu-tree-item__divider i,.axm-menu-list-page .axm-menu-tree-item__path i{--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.axm-menu-list-page .axm-menu-tree-item__name{display:flex;align-items:center;border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1));font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-weight:400;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1));white-space:nowrap;-webkit-user-select:all;user-select:all}.axm-menu-list-page .axm-menu-tree-item__actions{margin-left:.5rem}\\n\"] }]\n }], propDecorators: { tree: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXTreeViewComponent), { isSignal: true }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9wbGF0Zm9ybS1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvbWVudS1tYW5hZ2VtZW50L3BhZ2VzL21lbnUtbGlzdC9tZW51LWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3BsYXRmb3JtLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9tZW51LW1hbmFnZW1lbnQvcGFnZXMvbWVudS1saXN0L21lbnUtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUE2QixtQkFBbUIsRUFBa0IsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVyRixPQUFPLEVBQXdDLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0YsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDMUUsT0FBTyxFQUFFLHdCQUF3QixFQUFF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d0IsMEhBQ3hCLGFBQWE7OzRGQWNKLG9CQUFvQjtrQkEzQmhDLFNBQVM7K0JBQ0UsZUFBZSxXQUNoQjt3QkFDUCxZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsaUJBQWlCO3dCQUNqQixzQkFBc0I7d0JBQ3RCLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLHNCQUFzQjt3QkFDdEIsNEJBQTRCO3dCQUM1Qix3QkFBd0I7d0JBQ3hCLGFBQWE7cUJBQ2QsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksYUFDMUI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxzQkFBc0I7eUJBQ2xDO3FCQUNGLFFBQ0ssRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUU7c0ZBZ0JWLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQmFkZ2VNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYmFkZ2UnO1xuaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RpYWxvZyc7XG5pbXBvcnQgeyBBWERyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEFYRHJvcGRvd25CdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24tYnV0dG9uJztcbmltcG9ydCB7IEFYVG9hc3RTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RvYXN0JztcbmltcG9ydCB7IEFYVHJlZVZpZXdCZWZvcmVEcm9wRXZlbnQsIEFYVHJlZVZpZXdDb21wb25lbnQsIEFYVHJlZVZpZXdOb2RlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RyZWUtdmlldyc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlLCBBWFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFBNZW51SXRlbSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEFYUEFjdGlvbk1lbnVJdGVtLCBBWFBFeGVjdXRlQ29tbWFuZCwgQVhQUGxhdGZvcm1TY29wZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBBWFBMYXlvdXRCdWlsZGVyU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgQVhQU3RhdGVNZXNzYWdlQ29tcG9uZW50LCBBWFBUaGVtZUxheW91dEJsb2NrQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBWFBQYWdlTGF5b3V0QmFzZSwgQVhQUGFnZUxheW91dEJhc2VDb21wb25lbnQsIEFYUFBhZ2VMYXlvdXRDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC92aWV3cyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgaW5qZWN0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgc2lnbmFsLFxuICB2aWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVhQTWVudUl0ZW1BY3Rpb24gfSBmcm9tICcuLi8uLi9tZW51LWN1c3RvbWl6YXRpb24udHlwZXMnO1xuaW1wb3J0IHsgQVhQTWVudU1hbmFnZW1lbnRTZXJ2aWNlLCBBWFBNZW51VHJlZU5vZGVEYXRhIH0gZnJvbSAnLi4vLi4vbWVudS1tYW5hZ2VtZW50LnNlcnZpY2UnO1xuXG4vLyNyZWdpb24gLS0tLSAgIE1lbnUgTGlzdCBDb21wb25lbnQgICAtLS0tXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4bS1tZW51LWxpc3QnLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIEFYRHJvcGRvd25CdXR0b25Nb2R1bGUsXG4gICAgQVhEcm9wZG93bk1vZHVsZSxcbiAgICBBWFRyYW5zbGF0aW9uTW9kdWxlLFxuICAgIEFYVHJlZVZpZXdDb21wb25lbnQsXG4gICAgQVhQUGFnZUxheW91dENvbXBvbmVudCxcbiAgICBBWFBUaGVtZUxheW91dEJsb2NrQ29tcG9uZW50LFxuICAgIEFYUFN0YXRlTWVzc2FnZUNvbXBvbmVudCxcbiAgICBBWEJhZGdlTW9kdWxlLFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVudS1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWVudS1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFBQYWdlTGF5b3V0QmFzZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBBWE1NZW51TGlzdENvbXBvbmVudCxcbiAgICB9LFxuICBdLFxuICBob3N0OiB7IGNsYXNzOiAnYXhtLW1lbnUtbGlzdC1wYWdlJyB9LFxufSlcbmV4cG9ydCBjbGFzcyBBWE1NZW51TGlzdENvbXBvbmVudCBleHRlbmRzIEFYUFBhZ2VMYXlvdXRCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvLyNyZWdpb24gLS0tLSAgIERlcGVuZGVuY2llcyAgIC0tLS1cblxuICBwcml2YXRlIG1lbnVNYW5hZ2VtZW50U2VydmljZSA9IGluamVjdChBWFBNZW51TWFuYWdlbWVudFNlcnZpY2UpO1xuICBwcml2YXRlIGxheW91dEJ1aWxkZXIgPSBpbmplY3QoQVhQTGF5b3V0QnVpbGRlclNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgZGlhbG9nU2VydmljZSA9IGluamVjdChBWERpYWxvZ1NlcnZpY2UpO1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdG9hc3RTZXJ2aWNlID0gaW5qZWN0KEFYVG9hc3RTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0cmFuc2xhdGlvblNlcnZpY2UgPSBpbmplY3QoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIENvbXBvbmVudCBTdGF0ZSAgIC0tLS1cblxuICBwcm90ZWN0ZWQgdHJlZSA9IHZpZXdDaGlsZChBWFRyZWVWaWV3Q29tcG9uZW50KTtcbiAgcHJvdGVjdGVkIHRyZWVOb2RlcyA9IHNpZ25hbDxBWFRyZWVWaWV3Tm9kZVtdPihbXSk7XG4gIHByb3RlY3RlZCBpc0xvYWRpbmcgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcm90ZWN0ZWQgZXJyb3IgPSBzaWduYWw8c3RyaW5nPignJyk7XG4gIHByb3RlY3RlZCBjdXJyZW50U2NvcGUgPSBzaWduYWw8QVhQUGxhdGZvcm1TY29wZT4oQVhQUGxhdGZvcm1TY29wZS5Vc2VyKTtcbiAgcHJpdmF0ZSBpc1N5bmNpbmcgPSBmYWxzZTsgLy8gUHJldmVudCBjb25jdXJyZW50IHN5bmMgb3BlcmF0aW9uc1xuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTsgLy8gRm9yIHN1YnNjcmlwdGlvbiBjbGVhbnVwXG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBMaWZlY3ljbGUgICAtLS0tXG5cbiAgb3ZlcnJpZGUgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIC8vIEdldCBzY29wZSBmcm9tIHJvdXRlICh3aXRoIG1lbW9yeSBsZWFrIHByZXZlbnRpb24pXG4gICAgdGhpcy5yb3V0ZS5wYXJhbXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZShhc3luYyAocGFyYW1zKSA9PiB7XG4gICAgICBjb25zdCBzY29wZSA9IHBhcmFtc1snc2NvcGUnXSBhcyBBWFBQbGF0Zm9ybVNjb3BlO1xuICAgICAgaWYgKHNjb3BlKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFNjb3BlLnNldChzY29wZSk7XG4gICAgICAgIGF3YWl0IHRoaXMubG9hZE1lbnVJdGVtcygpO1xuICAgICAgICB0aGlzLnJlY29tcHV0ZSgpOyAvLyBVcGRhdGUgcGFnZSBoZWFkZXIgYWZ0ZXIgbG9hZGluZ1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBFdmVudCBIYW5kbGVycyAgIC0tLS1cblxuICAvKipcbiAgICogSGFuZGxlIGJlZm9yZSBkcm9wIHZhbGlkYXRpb25cbiAgICovXG4gIGFzeW5jIGhhbmRsZUJlZm9yZURyb3AoZTogQVhUcmVlVmlld0JlZm9yZURyb3BFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHRhcmdldFBhcmVudCA9IGUuY3VycmVudFBhcmVudD8uZGF0YSBhcyBBWFBNZW51VHJlZU5vZGVEYXRhO1xuXG4gICAgLy8gUHJldmVudCBkcm9wcGluZyBpbnRvIGl0ZW1zIHdpdGggcGF0aHMgKGxlYWYgbm9kZXMpXG4gICAgaWYgKHRhcmdldFBhcmVudD8ubWVudUl0ZW0/LnBhdGgpIHtcbiAgICAgIGUuY2FuY2VsZWQgPSB0cnVlO1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50Lm1lc3NhZ2VzLmVycm9yLm1vdmUnLFxuICAgICAgKTtcbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLndhcm5pbmcobWVzc2FnZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTm90ZTogQ2lyY3VsYXIgcmVmZXJlbmNlIHZhbGlkYXRpb24gaXMgaGFuZGxlZCBieSB0aGUgdHJlZSBjb21wb25lbnQgaXRzZWxmXG4gICAgLy8gQWRkaXRpb25hbCB2YWxpZGF0aW9uIGNhbiBiZSBhZGRlZCBoZXJlIGlmIG5lZWRlZCBiYXNlZCBvbiBidXNpbmVzcyBydWxlc1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBhZnRlciBkcm9wIGV2ZW50IHRvIHN5bmMgY2hhbmdlc1xuICAgKi9cbiAgYXN5bmMgaGFuZGxlQWZ0ZXJEcm9wKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuc3luY1RyZWVDaGFuZ2VzKCk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIERhdGEgTG9hZGluZyAgIC0tLS1cblxuICAvKipcbiAgICogTG9hZCBtZW51IHRyZWUgZm9yIGN1cnJlbnQgc2NvcGVcbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBsb2FkTWVudUl0ZW1zKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgICB0aGlzLmVycm9yLnNldCgnJyk7XG5cbiAgICAgIGNvbnN0IHRyZWVOb2RlcyA9IGF3YWl0IHRoaXMubWVudU1hbmFnZW1lbnRTZXJ2aWNlLmdldE1lbnVUcmVlKHRoaXMuY3VycmVudFNjb3BlKCkpO1xuICAgICAgdGhpcy50cmVlTm9kZXMuc2V0KHRyZWVOb2Rlcyk7XG4gICAgICB0aGlzLnJlY29tcHV0ZSgpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmVycm9yLnNldChlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdGYWlsZWQgdG8gbG9hZCBtZW51IGl0ZW1zJyk7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQubWVzc2FnZXMuZXJyb3IubG9hZCcsXG4gICAgICApO1xuICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZGFuZ2VyKG1lc3NhZ2UpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTeW5jIHRyZWUgY2hhbmdlcyB0byBiYWNrZW5kXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHN5bmNUcmVlQ2hhbmdlcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBQcmV2ZW50IGNvbmN1cnJlbnQgc3luYyBvcGVyYXRpb25zXG4gICAgaWYgKHRoaXMuaXNTeW5jaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuaXNTeW5jaW5nID0gdHJ1ZTtcbiAgICAgIGNvbnN0IG5vZGVzID0gdGhpcy50cmVlTm9kZXMoKTtcbiAgICAgIGNvbnN0IHNjb3BlID0gdGhpcy5jdXJyZW50U2NvcGUoKTtcblxuICAgICAgaWYgKG5vZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHRoaXMubWVudU1hbmFnZW1lbnRTZXJ2aWNlLnN5bmNUcmVlQ2hhbmdlcyhzY29wZSwgbm9kZXMpO1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50Lm1lc3NhZ2VzLnN1Y2Nlc3MucmVvcmRlcicsXG4gICAgICApO1xuICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc3VjY2VzcyhtZXNzYWdlKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIHN5bmMgdHJlZSBjaGFuZ2VzOicsIGVycm9yKTtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5tZXNzYWdlcy5lcnJvci5zeW5jJyxcbiAgICAgICk7XG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5kYW5nZXIobWVzc2FnZSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuaXNTeW5jaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBQYWdlIExheW91dCBJbnRlcmZhY2UgICAtLS0tXG5cbiAgLyoqXG4gICAqIEdldCBwYWdlIHRpdGxlXG4gICAqL1xuICBvdmVycmlkZSBhc3luYyBnZXRQYWdlVGl0bGUoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBzY29wZU5hbWUgPSB0aGlzLmN1cnJlbnRTY29wZSgpO1xuICAgIGNvbnN0IHNjb3BlS2V5ID0gc2NvcGVOYW1lID09PSBBWFBQbGF0Zm9ybVNjb3BlLlVzZXIgPyAndXNlcicgOiAndGVuYW50JztcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoYEBwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5tZW51cy4ke3Njb3BlS2V5fS50aXRsZWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBwYWdlIGRlc2NyaXB0aW9uXG4gICAqL1xuICBvdmVycmlkZSBhc3luYyBnZXRQYWdlRGVzY3JpcHRpb24oKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LmNvbXBvbmVudHMubWVudS1saXN0LmRlc2NyaXB0aW9uJyxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBwcmltYXJ5IG1lbnUgaXRlbXMgKGFjdGlvbnMpXG4gICAqL1xuICBvdmVycmlkZSBhc3luYyBnZXRQcmltYXJ5TWVudUl0ZW1zKCk6IFByb21pc2U8QVhQQWN0aW9uTWVudUl0ZW1bXT4ge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgICAnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LmFjdGlvbnMuYWRkLXJvb3QudGl0bGUnLFxuICAgICAgICApLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtcGx1cycsXG4gICAgICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgICAgIGNvbW1hbmQ6IHsgbmFtZTogJ2FkZC1yb290JyB9LFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBzZWNvbmRhcnkgbWVudSBpdGVtc1xuICAgKi9cbiAgb3ZlcnJpZGUgYXN5bmMgZ2V0U2Vjb25kYXJ5TWVudUl0ZW1zKCk6IFByb21pc2U8QVhQQWN0aW9uTWVudUl0ZW1bXT4ge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgICAnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LmFjdGlvbnMuY29sbGFwc2UudGl0bGUnLFxuICAgICAgICApLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtbWludXMtc3F1YXJlJyxcbiAgICAgICAgY29tbWFuZDogeyBuYW1lOiAnY29sbGFwc2UnIH0sXG4gICAgICB9LFxuXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgICAnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LmFjdGlvbnMuZXhwYW5kLnRpdGxlJyxcbiAgICAgICAgKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLXBsdXMtc3F1YXJlJyxcbiAgICAgICAgY29tbWFuZDogeyBuYW1lOiAnZXhwYW5kJyB9LFxuICAgICAgICBicmVhazogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LmFjdGlvbnMucmVzZXQudGl0bGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLXJvdGF0ZS1sZWZ0JyxcbiAgICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgICBjb21tYW5kOiB7IG5hbWU6ICdyZXNldCcgfSxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlIGNvbW1hbmRzIGZyb20gcGFnZSBhY3Rpb25zXG4gICAqL1xuICBvdmVycmlkZSBhc3luYyBleGVjdXRlKGNvbW1hbmQ6IEFYUEV4ZWN1dGVDb21tYW5kKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgc3dpdGNoIChjb21tYW5kLm5hbWUpIHtcbiAgICAgIGNhc2UgJ2FkZC1yb290JzpcbiAgICAgICAgYXdhaXQgdGhpcy5hZGRSb290TWVudUl0ZW0oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjb2xsYXBzZSc6XG4gICAgICAgIHRoaXMudHJlZSgpPy5jb2xsYXBzZUFsbCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V4cGFuZCc6XG4gICAgICAgIHRoaXMudHJlZSgpPy5leHBhbmRBbGwoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyZXNldCc6XG4gICAgICAgIGF3YWl0IHRoaXMucmVzZXRDdXN0b21pemF0aW9ucygpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIEFjdGlvbiBIYW5kbGVycyAgIC0tLS1cblxuICAvKipcbiAgICogSGFuZGxlIG1lbnUgaXRlbSBhY3Rpb25cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBvbkFjdGlvbihhY3Rpb246IEFYUE1lbnVJdGVtQWN0aW9uLCBub2RlRGF0YTogQVhQTWVudVRyZWVOb2RlRGF0YSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgICBjYXNlICdzaG93JzpcbiAgICAgICAgYXdhaXQgdGhpcy5zaG93TWVudUl0ZW0obm9kZURhdGEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2hpZGUnOlxuICAgICAgICBhd2FpdCB0aGlzLmhpZGVNZW51SXRlbShub2RlRGF0YSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZWRpdCc6XG4gICAgICAgIGF3YWl0IHRoaXMuZWRpdE1lbnVJdGVtKG5vZGVEYXRhKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdkZWxldGUnOlxuICAgICAgICBhd2FpdCB0aGlzLmRlbGV0ZU1lbnVJdGVtKG5vZGVEYXRhKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhZGQtY2hpbGQnOlxuICAgICAgICBhd2FpdCB0aGlzLmFkZENoaWxkTWVudUl0ZW0obm9kZURhdGEpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkIG5ldyByb290IG1lbnUgaXRlbVxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGFkZFJvb3RNZW51SXRlbSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnNob3dNZW51SXRlbURpYWxvZyhudWxsLCBudWxsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgbmV3IGNoaWxkIG1lbnUgaXRlbVxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGFkZENoaWxkTWVudUl0ZW0ocGFyZW50Tm9kZURhdGE6IEFYUE1lbnVUcmVlTm9kZURhdGEpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnNob3dNZW51SXRlbURpYWxvZyhudWxsLCBwYXJlbnROb2RlRGF0YS5tZW51SXRlbS5uYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCBjdXN0b21pemF0aW9uc1xuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIHJlc2V0Q3VzdG9taXphdGlvbnMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdGl0bGUgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQuYWN0aW9ucy5yZXNldC5jb25maXJtLnRpdGxlJyxcbiAgICApO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQuYWN0aW9ucy5yZXNldC5jb25maXJtLm1lc3NhZ2UnLFxuICAgICk7XG4gICAgY29uc3QgY29uZmlybWVkID0gYXdhaXQgdGhpcy5kaWFsb2dTZXJ2aWNlLmNvbmZpcm0odGl0bGUsIG1lc3NhZ2UpO1xuXG4gICAgaWYgKCFjb25maXJtZWQpIHJldHVybjtcblxuICAgIHRyeSB7XG4gICAgICAvLyBSZXNldCBjdXN0b21pemF0aW9ucyBmb3IgY3VycmVudCBzY29wZVxuICAgICAgYXdhaXQgdGhpcy5tZW51TWFuYWdlbWVudFNlcnZpY2UucmVzZXRDdXN0b21pemF0aW9ucyh0aGlzLmN1cnJlbnRTY29wZSgpKTtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5tZXNzYWdlcy5zdWNjZXNzLnJlc2V0JyxcbiAgICAgICk7XG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5zdWNjZXNzKG1lc3NhZ2UpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gcmVzZXQgY3VzdG9taXphdGlvbnM6JywgZXJyb3IpO1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50Lm1lc3NhZ2VzLmVycm9yLnJlc2V0JyxcbiAgICAgICk7XG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5kYW5nZXIobWVzc2FnZSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIC8vIFJlbG9hZCBhbnl3YXkgdG8gc2hvdyBjdXJyZW50IHN0YXRlXG4gICAgICBhd2FpdCB0aGlzLmxvYWRNZW51SXRlbXMoKTtcbiAgICB9XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIE1lbnUgSXRlbSBBY3Rpb25zICAgLS0tLVxuXG4gIC8qKlxuICAgKiBTaG93IG1lbnUgaXRlbVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBzaG93TWVudUl0ZW0obm9kZURhdGE6IEFYUE1lbnVUcmVlTm9kZURhdGEpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmV4ZWN1dGVNZW51QWN0aW9uKFxuICAgICAgKCkgPT4gdGhpcy5tZW51TWFuYWdlbWVudFNlcnZpY2Uuc2hvd01lbnVJdGVtKHRoaXMuY3VycmVudFNjb3BlKCksIG5vZGVEYXRhLm1lbnVJdGVtLm5hbWUhKSxcbiAgICAgICdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQubWVzc2FnZXMuc3VjY2Vzcy5zaG93JyxcbiAgICAgICdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQubWVzc2FnZXMuZXJyb3Iuc2hvdycsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIaWRlIG1lbnUgaXRlbVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBoaWRlTWVudUl0ZW0obm9kZURhdGE6IEFYUE1lbnVUcmVlTm9kZURhdGEpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmV4ZWN1dGVNZW51QWN0aW9uKFxuICAgICAgKCkgPT4gdGhpcy5tZW51TWFuYWdlbWVudFNlcnZpY2UuaGlkZU1lbnVJdGVtKHRoaXMuY3VycmVudFNjb3BlKCksIG5vZGVEYXRhLm1lbnVJdGVtLm5hbWUhKSxcbiAgICAgICdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQubWVzc2FnZXMuc3VjY2Vzcy5oaWRlJyxcbiAgICAgICdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQubWVzc2FnZXMuZXJyb3IuaGlkZScsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFZGl0IG1lbnUgaXRlbVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBlZGl0TWVudUl0ZW0obm9kZURhdGE6IEFYUE1lbnVUcmVlTm9kZURhdGEpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnNob3dNZW51SXRlbURpYWxvZyhub2RlRGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIGN1c3RvbSBtZW51IGl0ZW1cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZGVsZXRlTWVudUl0ZW0obm9kZURhdGE6IEFYUE1lbnVUcmVlTm9kZURhdGEpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB0aXRsZSA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAZ2VuZXJhbDphY3Rpb25zLmRlbGV0ZS50aXRsZScpO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQuYWN0aW9ucy5kZWxldGUuY29uZmlybS5tZXNzYWdlJyxcbiAgICApO1xuICAgIGNvbnN0IGNvbmZpcm1lZCA9IGF3YWl0IHRoaXMuZGlhbG9nU2VydmljZS5jb25maXJtKHRpdGxlLCBtZXNzYWdlKTtcblxuICAgIGlmICghY29uZmlybWVkKSByZXR1cm47XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgaXRlbSA9IG5vZGVEYXRhLm1lbnVJdGVtO1xuICAgICAgaWYgKCFpdGVtLm5hbWUpIHJldHVybjtcblxuICAgICAgYXdhaXQgdGhpcy5tZW51TWFuYWdlbWVudFNlcnZpY2UuZGVsZXRlQ3VzdG9tTWVudUl0ZW0odGhpcy5jdXJyZW50U2NvcGUoKSwgaXRlbS5uYW1lKTtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5tZXNzYWdlcy5zdWNjZXNzLmRlbGV0ZScsXG4gICAgICApO1xuICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc3VjY2VzcyhtZXNzYWdlKTtcbiAgICAgIGF3YWl0IHRoaXMubG9hZE1lbnVJdGVtcygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQubWVzc2FnZXMuZXJyb3IuZGVsZXRlJyxcbiAgICAgICk7XG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5kYW5nZXIobWVzc2FnZSk7XG4gICAgfVxuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBEaWFsb2cgSGVscGVycyAgIC0tLS1cblxuICAvKipcbiAgICogU2hvdyBtZW51IGl0ZW0gZGlhbG9nIChhZGQvZWRpdClcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgc2hvd01lbnVJdGVtRGlhbG9nKFxuICAgIG5vZGVEYXRhOiBBWFBNZW51VHJlZU5vZGVEYXRhIHwgbnVsbCxcbiAgICBwYXJlbnROYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaXRlbSA9IG5vZGVEYXRhPy5tZW51SXRlbTtcbiAgICBjb25zdCBpc0VkaXQgPSAhIWl0ZW07XG4gICAgY29uc3QgdGl0bGUgPSBpc0VkaXRcbiAgICAgID8gJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5jb21wb25lbnRzLmVkaXQtZGlhbG9nLnRpdGxlJ1xuICAgICAgOiAnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LmNvbXBvbmVudHMuYWRkLWRpYWxvZy50aXRsZSc7XG5cbiAgICBjb25zdCBjb250ZXh0ID0ge1xuICAgICAgbmFtZTogaXRlbT8ubmFtZSB8fCAnJyxcbiAgICAgIHRleHQ6IGl0ZW0/LnRleHQgfHwgJycsXG4gICAgICB0eXBlOiBpdGVtPy50eXBlIHx8ICdtZW51JyxcbiAgICAgIGljb246IGl0ZW0/Lmljb24gfHwgJycsXG4gICAgICBwYXRoOiBpdGVtPy5wYXRoIHx8ICcnLFxuICAgICAgcHJpb3JpdHk6IGl0ZW0/LnByaW9yaXR5IHx8IDAsXG4gICAgICBkZXNjcmlwdGlvbjogaXRlbT8uZGVzY3JpcHRpb24gfHwgJycsXG4gICAgfTtcblxuICAgIGNvbnN0IGRpYWxvZ1JlZjogYW55ID0gYXdhaXQgdGhpcy5sYXlvdXRCdWlsZGVyXG4gICAgICAuY3JlYXRlKClcbiAgICAgIC5kaWFsb2coKGRpYWxvZzogYW55KSA9PiB7XG4gICAgICAgIGRpYWxvZ1xuICAgICAgICAgIC5zZXRUaXRsZSh0aXRsZSlcbiAgICAgICAgICAuc2V0Q29udGV4dChjb250ZXh0KVxuICAgICAgICAgIC5jb250ZW50KChmbGV4OiBhbnkpID0+IHtcbiAgICAgICAgICAgIGZsZXhcbiAgICAgICAgICAgICAgLnNldERpcmVjdGlvbignY29sdW1uJylcbiAgICAgICAgICAgICAgLmZvcm1GaWVsZCgnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LmZpZWxkcy5uYW1lJywgKGZpZWxkOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBmaWVsZC5wYXRoKCduYW1lJyk7XG4gICAgICAgICAgICAgICAgZmllbGQudGV4dEJveCh7XG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5maWVsZHMubmFtZScsXG4gICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uczogW3sgcnVsZTogJ3JlcXVpcmVkJyB9XSxcbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBpc0VkaXQgJiYgbm9kZURhdGE/Lm1ldGFkYXRhPy5pc0J1aWx0SW4sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5mb3JtRmllbGQoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5maWVsZHMudGV4dCcsIChmaWVsZDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgZmllbGQucGF0aCgndGV4dCcpO1xuICAgICAgICAgICAgICAgIGZpZWxkLnRleHRCb3goe1xuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQuZmllbGRzLnRleHQnLFxuICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbnM6IFt7IHJ1bGU6ICdyZXF1aXJlZCcgfV0sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5mb3JtRmllbGQoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5maWVsZHMuaWNvbicsIChmaWVsZDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgZmllbGQucGF0aCgnaWNvbicpO1xuICAgICAgICAgICAgICAgIGZpZWxkLmN1c3RvbVdpZGdldCgnaWNvbi1jaG9vc2VyJywge30pO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAuZm9ybUZpZWxkKCdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQuZmllbGRzLnBhdGgnLCAoZmllbGQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGZpZWxkLnBhdGgoJ3BhdGgnKTtcbiAgICAgICAgICAgICAgICBmaWVsZC50ZXh0Qm94KHtcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LmZpZWxkcy5wYXRoJyxcbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBpc0VkaXQgJiYgbm9kZURhdGE/Lm1ldGFkYXRhPy5pc0J1aWx0SW4sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5mb3JtRmllbGQoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5maWVsZHMucHJpb3JpdHknLCAoZmllbGQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGZpZWxkLnBhdGgoJ3ByaW9yaXR5Jyk7XG4gICAgICAgICAgICAgICAgZmllbGQubnVtYmVyQm94KHtcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LmZpZWxkcy5wcmlvcml0eScsXG4gICAgICAgICAgICAgICAgICBzdGVwOiAxMCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmZvcm1GaWVsZCgnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LmZpZWxkcy5kZXNjcmlwdGlvbicsIChmaWVsZDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgZmllbGQucGF0aCgnZGVzY3JpcHRpb24nKTtcbiAgICAgICAgICAgICAgICBmaWVsZC5sYXJnZVRleHRCb3goe1xuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQuZmllbGRzLmRlc2NyaXB0aW9uJyxcbiAgICAgICAgICAgICAgICAgIHJvd3M6IDMsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLnNldEFjdGlvbnMoKGFjdGlvbnM6IGFueSkgPT4ge1xuICAgICAgICAgICAgYWN0aW9ucy5jYW5jZWwoJ0BnZW5lcmFsOmFjdGlvbnMuY2FuY2VsLnRpdGxlJykuc3VibWl0KCdAZ2VuZXJhbDphY3Rpb25zLnNhdmUudGl0bGUnKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgICAuc2hvdygpO1xuXG4gICAgY29uc3QgYWN0aW9uID0gZGlhbG9nUmVmLmFjdGlvbigpO1xuICAgIGlmIChhY3Rpb24gPT09ICdjYW5jZWwnKSB7XG4gICAgICBkaWFsb2dSZWYuY2xvc2UoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmb3JtRGF0YSA9IGRpYWxvZ1JlZi5jb250ZXh0KCkgYXMgUGFydGlhbDxBWFBNZW51SXRlbT47XG5cbiAgICB0cnkge1xuICAgICAgaWYgKGlzRWRpdCAmJiBpdGVtPy5uYW1lKSB7XG4gICAgICAgIC8vIFVwZGF0ZSBleGlzdGluZyBpdGVtXG4gICAgICAgIGlmIChub2RlRGF0YT8ubWV0YWRhdGE/LmlzQ3VzdG9tKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5tZW51TWFuYWdlbWVudFNlcnZpY2UudXBkYXRlQ3VzdG9tTWVudUl0ZW0oXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTY29wZSgpLFxuICAgICAgICAgICAgaXRlbS5uYW1lLFxuICAgICAgICAgICAgZm9ybURhdGEgYXMgQVhQTWVudUl0ZW0sXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLm1lbnVNYW5hZ2VtZW50U2VydmljZS51cGRhdGVNZW51UHJvcGVydGllcyh0aGlzLmN1cnJlbnRTY29wZSgpLCBpdGVtLm5hbWUsIGZvcm1EYXRhKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQWRkIG5ldyBjdXN0b20gaXRlbVxuICAgICAgICBjb25zdCBuZXdJdGVtOiBBWFBNZW51SXRlbSA9IHtcbiAgICAgICAgICBuYW1lOiBmb3JtRGF0YS5uYW1lISxcbiAgICAgICAgICB0ZXh0OiBmb3JtRGF0YS50ZXh0ISxcbiAgICAgICAgICBpY29uOiBmb3JtRGF0YS5pY29uLFxuICAgICAgICAgIHBhdGg6IGZvcm1EYXRhLnBhdGgsXG4gICAgICAgICAgcHJpb3JpdHk6IGZvcm1EYXRhLnByaW9yaXR5LFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBmb3JtRGF0YS5kZXNjcmlwdGlvbixcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBJZiBwYXJlbnQgaXMgc3BlY2lmaWVkLCBhZGQgYXMgY2hpbGRcbiAgICAgICAgaWYgKHBhcmVudE5hbWUpIHtcbiAgICAgICAgICAvLyBBZGQgY3VzdG9tIGl0ZW0gYXMgY2hpbGQgb2YgcGFyZW50XG4gICAgICAgICAgYXdhaXQgdGhpcy5tZW51TWFuYWdlbWVudFNlcnZpY2UuYWRkQ3VzdG9tTWVudUl0ZW0odGhpcy5jdXJyZW50U2NvcGUoKSwgbmV3SXRlbSwgcGFyZW50TmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQWRkIGFzIHJvb3QgbGV2ZWwgaXRlbVxuICAgICAgICAgIGF3YWl0IHRoaXMubWVudU1hbmFnZW1lbnRTZXJ2aWNlLmFkZEN1c3RvbU1lbnVJdGVtKHRoaXMuY3VycmVudFNjb3BlKCksIG5ld0l0ZW0sIG51bGwpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5tZXNzYWdlcy5zdWNjZXNzLnNhdmUnLFxuICAgICAgKTtcbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLnN1Y2Nlc3MobWVzc2FnZSk7XG4gICAgICBhd2FpdCB0aGlzLmxvYWRNZW51SXRlbXMoKTtcbiAgICAgIGRpYWxvZ1JlZi5jbG9zZSgpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQubWVzc2FnZXMuZXJyb3Iuc2F2ZScsXG4gICAgICApO1xuICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZGFuZ2VyKG1lc3NhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlIGEgbWVudSBhY3Rpb24gd2l0aCBjb21tb24gZXJyb3IgaGFuZGxpbmdcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZXhlY3V0ZU1lbnVBY3Rpb24oXG4gICAgYWN0aW9uOiAoKSA9PiBQcm9taXNlPHZvaWQ+LFxuICAgIHN1Y2Nlc3NNZXNzYWdlS2V5OiBzdHJpbmcsXG4gICAgZXJyb3JNZXNzYWdlS2V5OiBzdHJpbmcsXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBhY3Rpb24oKTtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhzdWNjZXNzTWVzc2FnZUtleSk7XG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5zdWNjZXNzKG1lc3NhZ2UpO1xuICAgICAgYXdhaXQgdGhpcy5sb2FkTWVudUl0ZW1zKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ01lbnUgYWN0aW9uIGZhaWxlZDonLCBlcnJvcik7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoZXJyb3JNZXNzYWdlS2V5KTtcbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmRhbmdlcihtZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICAvLyNlbmRyZWdpb25cbn1cblxuLy8jZW5kcmVnaW9uXG4iLCI8YXhwLXBhZ2UtbGF5b3V0PlxuICA8YXhwLXBhZ2UtY29udGVudD5cbiAgICBAaWYgKGlzTG9hZGluZygpKSB7XG4gICAgICA8IS0tIExvYWRpbmcgU3RhdGUgLS0+XG4gICAgICA8YXhwLXN0YXRlLW1lc3NhZ2VcbiAgICAgICAgbW9kZT1cImxvYWRpbmdcIlxuICAgICAgICBpY29uPVwiZmEtbGlnaHQgZmEtc3Bpbm5lci10aGlyZCBmYS1zcGluXCJcbiAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICgnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LmNvbXBvbmVudHMubWVudS1saXN0LmVtcHR5LXN0YXRlcy5sb2FkaW5nLnRpdGxlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jKSFcbiAgICAgICAgXCJcbiAgICAgICAgW2Rlc2NyaXB0aW9uXT1cIlxuICAgICAgICAgICgnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LmNvbXBvbmVudHMubWVudS1saXN0LmVtcHR5LXN0YXRlcy5sb2FkaW5nLmRlc2NyaXB0aW9uJ1xuICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgIHwgYXN5bmMpIVxuICAgICAgICBcIlxuICAgICAgLz5cbiAgICB9IEBlbHNlIGlmIChlcnJvcigpKSB7XG4gICAgICA8IS0tIEVycm9yIFN0YXRlIC0tPlxuICAgICAgPGF4cC1zdGF0ZS1tZXNzYWdlXG4gICAgICAgIG1vZGU9XCJlcnJvclwiXG4gICAgICAgIGljb249XCJmYS1saWdodCBmYS1jaXJjbGUtZXhjbGFtYXRpb25cIlxuICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgKCdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQuY29tcG9uZW50cy5tZW51LWxpc3QuZW1wdHktc3RhdGVzLmVycm9yLnRpdGxlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jKSFcbiAgICAgICAgXCJcbiAgICAgICAgW2Rlc2NyaXB0aW9uXT1cIlxuICAgICAgICAgICgnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LmNvbXBvbmVudHMubWVudS1saXN0LmVtcHR5LXN0YXRlcy5lcnJvci5kZXNjcmlwdGlvbidcbiAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICB8IGFzeW5jKSFcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGF4LWJ1dHRvblxuICAgICAgICAgIHNsb3Q9XCJhY3Rpb25zXCJcbiAgICAgICAgICBbdGV4dF09XCInQGdlbmVyYWw6YWN0aW9ucy5yZXRyeS50aXRsZScgfCB0cmFuc2xhdGUgfCBhc3luY1wiXG4gICAgICAgICAgW2xvb2tdPVwiJ291dGxpbmUnXCJcbiAgICAgICAgICBbY29sb3JdPVwiJ3ByaW1hcnknXCJcbiAgICAgICAgICAob25DbGljayk9XCJsb2FkTWVudUl0ZW1zKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYS1saWdodCBmYS1yb3RhdGUtbGVmdFwiPjwvaT5cbiAgICAgICAgPC9heC1idXR0b24+XG4gICAgICA8L2F4cC1zdGF0ZS1tZXNzYWdlPlxuICAgIH0gQGVsc2UgaWYgKHRyZWVOb2RlcygpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgPCEtLSBFbXB0eSBTdGF0ZSAtLT5cbiAgICAgIDxheHAtc3RhdGUtbWVzc2FnZVxuICAgICAgICBtb2RlPVwiZW1wdHlcIlxuICAgICAgICBpY29uPVwiZmEtbGlnaHQgZmEtYmFyc1wiXG4gICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5jb21wb25lbnRzLm1lbnUtbGlzdC5lbXB0eS1zdGF0ZXMubm8tZGF0YS50aXRsZScgfCB0cmFuc2xhdGUgfCBhc3luYykhXG4gICAgICAgIFwiXG4gICAgICAgIFtkZXNjcmlwdGlvbl09XCJcbiAgICAgICAgICAoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5jb21wb25lbnRzLm1lbnUtbGlzdC5lbXB0eS1zdGF0ZXMubm8tZGF0YS5kZXNjcmlwdGlvbidcbiAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICB8IGFzeW5jKSFcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGF4LWJ1dHRvblxuICAgICAgICAgIHNsb3Q9XCJhY3Rpb25zXCJcbiAgICAgICAgICBbdGV4dF09XCInQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LmFjdGlvbnMuYWRkLXJvb3QudGl0bGUnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIlxuICAgICAgICAgIFtsb29rXT1cIidzb2xpZCdcIlxuICAgICAgICAgIFtjb2xvcl09XCIncHJpbWFyeSdcIlxuICAgICAgICAgIChvbkNsaWNrKT1cImFkZFJvb3RNZW51SXRlbSgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEtbGlnaHQgZmEtcGx1c1wiPjwvaT5cbiAgICAgICAgPC9heC1idXR0b24+XG4gICAgICA8L2F4cC1zdGF0ZS1tZXNzYWdlPlxuICAgIH0gQGVsc2Uge1xuICAgICAgPCEtLSBNZW51IFRyZWUgQ29udGVudCAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJheG0tbWVudS1saXN0X19jb250YWluZXJcIj5cbiAgICAgICAgPCEtLSBNZW51IFRyZWUgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheG0tbWVudS1saXN0X190cmVlXCI+XG4gICAgICAgICAgPGF4LXRyZWUtdmlld1xuICAgICAgICAgICAgWyhkYXRhc291cmNlKV09XCJ0cmVlTm9kZXNcIlxuICAgICAgICAgICAgbG9vaz1cImRlZmF1bHRcIlxuICAgICAgICAgICAgW2l0ZW1UZW1wbGF0ZV09XCJpdGVtVGVtcGxhdGVcIlxuICAgICAgICAgICAgW3Nob3dDaGVja2JveF09XCJmYWxzZVwiXG4gICAgICAgICAgICBbc2hvd0ljb25zXT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtzaG93Q2hpbGRyZW5CYWRnZV09XCJmYWxzZVwiXG4gICAgICAgICAgICBbbm9kZUhlaWdodF09XCInbm9ybWFsJ1wiXG4gICAgICAgICAgICBbZHJhZ01vZGVdPVwiJ2hhbmRsZXInXCJcbiAgICAgICAgICAgIChvbkJlZm9yZURyb3ApPVwiaGFuZGxlQmVmb3JlRHJvcCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChvbkl0ZW1zQ2hhbmdlKT1cImhhbmRsZUFmdGVyRHJvcCgpXCJcbiAgICAgICAgICA+PC9heC10cmVlLXZpZXc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2F4cC1wYWdlLWNvbnRlbnQ+XG48L2F4cC1wYWdlLWxheW91dD5cblxuPCEtLSBDdXN0b20gSXRlbSBUZW1wbGF0ZSAtLT5cbjxuZy10ZW1wbGF0ZSAjaXRlbVRlbXBsYXRlIGxldC1ub2RlPVwibm9kZVwiIGxldC1sZXZlbD1cImxldmVsXCI+XG4gIEBsZXQgbm9kZURhdGEgPSBub2RlLmRhdGE7XG4gIEBsZXQgaXRlbSA9IG5vZGVEYXRhLm1lbnVJdGVtO1xuICBAbGV0IG1ldGFkYXRhID0gbm9kZURhdGEubWV0YWRhdGE7XG4gIDxkaXZcbiAgICBjbGFzcz1cImF4bS1tZW51LXRyZWUtaXRlbV9fd3JhcHBlclwiXG4gICAgW2NsYXNzLmF4bS1tZW51LXRyZWUtaXRlbV9fd3JhcHBlci0taGlkZGVuXT1cIm1ldGFkYXRhLmlzSGlkZGVuXCJcbiAgICBbY2xhc3MuYXhtLW1lbnUtdHJlZS1pdGVtX193cmFwcGVyLS1jdXN0b21dPVwibWV0YWRhdGEuaXNDdXN0b21cIlxuICAgIFtjbGFzcy5heG0tbWVudS10cmVlLWl0ZW1fX3dyYXBwZXItLWdyb3VwXT1cIml0ZW0udHlwZSA9PT0gJ2dyb3VwJ1wiXG4gID5cbiAgICA8IS0tIEljb24gKGhpZGRlbiBmb3IgZ3JvdXBzKSAtLT5cbiAgICBAaWYgKGl0ZW0uaWNvbiAmJiBpdGVtLnR5cGUgIT09ICdncm91cCcpIHtcbiAgICAgIDxpIGNsYXNzPVwiYXhtLW1lbnUtdHJlZS1pdGVtX19pY29uXCIgW2NsYXNzXT1cIml0ZW0uaWNvblwiPjwvaT5cbiAgICB9XG5cbiAgICA8IS0tIFRleHQgb3IgSW5mbyAtLT5cbiAgICBAaWYgKGl0ZW0udHlwZSA9PT0gJ2dyb3VwJykge1xuICAgICAgPCEtLSBHcm91cCBIZWFkaW5nIC0tPlxuICAgICAgPHNwYW4gY2xhc3M9XCJheG0tbWVudS10cmVlLWl0ZW1fX2dyb3VwXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiZmEtbGlnaHQgZmEtbGF5ZXItZ3JvdXBcIj48L2k+XG4gICAgICAgIHt7IGl0ZW0udGV4dCB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICA8L3NwYW4+XG4gICAgfSBAZWxzZSBpZiAoaXRlbS50eXBlID09PSAnYnJlYWsnKSB7XG4gICAgICA8IS0tIERpdmlkZXIgLS0+XG4gICAgICA8c3BhbiBjbGFzcz1cImF4bS1tZW51LXRyZWUtaXRlbV9fZGl2aWRlclwiPlxuICAgICAgICA8aSBjbGFzcz1cImZhLWxpZ2h0IGZhLW1pbnVzXCI+PC9pPlxuICAgICAgICB7eyAnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LnN0YXRlcy5kaXZpZGVyJyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICA8L3NwYW4+XG4gICAgfSBAZWxzZSBpZiAoaXRlbS50ZXh0KSB7XG4gICAgICA8IS0tIFJlZ3VsYXIgTWVudSBJdGVtIC0tPlxuICAgICAgPHNwYW4gY2xhc3M9XCJheG0tbWVudS10cmVlLWl0ZW1fX3RleHRcIj5cbiAgICAgICAge3sgaXRlbS50ZXh0IHwgdHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICB9IEBlbHNlIGlmIChpdGVtLnBhdGgpIHtcbiAgICAgIDwhLS0gUGF0aC1vbmx5IEl0ZW0gLS0+XG4gICAgICA8c3BhbiBjbGFzcz1cImF4bS1tZW51LXRyZWUtaXRlbV9fcGF0aFwiPlxuICAgICAgICA8aSBjbGFzcz1cImZhLWxpZ2h0IGZhLWxpbmtcIj48L2k+XG4gICAgICAgIHt7IGl0ZW0ucGF0aCB9fVxuICAgICAgPC9zcGFuPlxuICAgIH1cblxuICAgIDwhLS0gTWVudSBOYW1lL0tleSAtLT5cbiAgICBAaWYgKGl0ZW0ubmFtZSkge1xuICAgICAgPGNvZGUgY2xhc3M9XCJheG0tbWVudS10cmVlLWl0ZW1fX25hbWVcIj57eyBpdGVtLm5hbWUgfX08L2NvZGU+XG4gICAgfVxuXG4gICAgPCEtLSBTdGF0dXMgQmFkZ2VzIC0tPlxuICAgIEBpZiAobWV0YWRhdGEuaXNIaWRkZW4pIHtcbiAgICAgIDxheC1iYWRnZVxuICAgICAgICBbdGV4dF09XCIoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5zdGF0ZXMuaGlkZGVuJyB8IHRyYW5zbGF0ZSB8IGFzeW5jKSFcIlxuICAgICAgICBjb2xvcj1cImRhbmdlclwiXG4gICAgICA+PC9heC1iYWRnZT5cbiAgICB9IEBlbHNlIGlmIChtZXRhZGF0YS5pc0N1c3RvbSkge1xuICAgICAgPGF4LWJhZGdlXG4gICAgICAgIFt0ZXh0XT1cIignQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LnN0YXRlcy5jdXN0b20nIHwgdHJhbnNsYXRlIHwgYXN5bmMpIVwiXG4gICAgICAgIGNvbG9yPVwic3VjY2Vzc1wiXG4gICAgICA+PC9heC1iYWRnZT5cbiAgICB9IEBlbHNlIGlmIChtZXRhZGF0YS5pc0J1aWx0SW4pIHtcbiAgICAgIDxheC1iYWRnZVxuICAgICAgICBbdGV4dF09XCIoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5zdGF0ZXMuYnVpbHQtaW4nIHwgdHJhbnNsYXRlIHwgYXN5bmMpIVwiXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICA+PC9heC1iYWRnZT5cbiAgICB9XG5cbiAgICA8IS0tIEFjdGlvbnMgRHJvcGRvd24gLS0+XG4gICAgPGF4LWJ1dHRvbiBjbGFzcz1cImF4bS1tZW51LXRyZWUtaXRlbV9fYWN0aW9uc1wiIFtsb29rXT1cIidibGFuaydcIiBbc2l6ZV09XCInc20nXCIgW2ljb25Pbmx5XT1cInRydWVcIj5cbiAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgIDxpIGNsYXNzPVwiZmEtbGlnaHQgZmEtZWxsaXBzaXMtdmVydGljYWxcIj48L2k+XG4gICAgICA8L2F4LXByZWZpeD5cblxuICAgICAgPGF4LWRyb3Bkb3duLXBhbmVsICNwYW5lbD5cbiAgICAgICAgPGF4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgPCEtLSBFZGl0IChvbmx5IGZvciBpdGVtcyB3aXRoIG5hbWVzKSAtLT5cbiAgICAgICAgICBAaWYgKGl0ZW0ubmFtZSkge1xuICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtXG4gICAgICAgICAgICAgIFt0ZXh0XT1cIignQGdlbmVyYWw6YWN0aW9ucy5lZGl0LnRpdGxlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jKSFcIlxuICAgICAgICAgICAgICAob25DbGljayk9XCJvbkFjdGlvbignZWRpdCcsIG5vZGVEYXRhKTsgcGFuZWwuY2xvc2UoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1saWdodCBmYS1lZGl0XCI+PC9pPlxuICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPCEtLSBTaG93L0hpZGUgKG9ubHkgZm9yIGl0ZW1zIHdpdGggbmFtZXMpIC0tPlxuICAgICAgICAgIEBpZiAoaXRlbS5uYW1lICYmIG1ldGFkYXRhLmlzQnVpbHRJbikge1xuICAgICAgICAgICAgQGlmIChtZXRhZGF0YS5pc0hpZGRlbikge1xuICAgICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW1cbiAgICAgICAgICAgICAgICBbdGV4dF09XCIoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5hY3Rpb25zLnNob3cudGl0bGUnIHwgdHJhbnNsYXRlIHwgYXN5bmMpIVwiXG4gICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwib25BY3Rpb24oJ3Nob3cnLCBub2RlRGF0YSk7IHBhbmVsLmNsb3NlKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtbGlnaHQgZmEtZXllXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDxheC1idXR0b24taXRlbVxuICAgICAgICAgICAgICAgIFt0ZXh0XT1cIignQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LmFjdGlvbnMuaGlkZS50aXRsZScgfCB0cmFuc2xhdGUgfCBhc3luYykhXCJcbiAgICAgICAgICAgICAgICAob25DbGljayk9XCJvbkFjdGlvbignaGlkZScsIG5vZGVEYXRhKTsgcGFuZWwuY2xvc2UoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1saWdodCBmYS1leWUtc2xhc2hcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmICghaXRlbS5wYXRoICYmIChpdGVtLnR5cGUgPT09ICdtZW51JyB8fCAhaXRlbS50eXBlKSkge1xuICAgICAgICAgICAgPCEtLSBBZGQgQ2hpbGQgLS0+XG4gICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW1cbiAgICAgICAgICAgICAgW3RleHRdPVwiKCdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQuYWN0aW9ucy5hZGQtY2hpbGQudGl0bGUnIHwgdHJhbnNsYXRlIHwgYXN5bmMpIVwiXG4gICAgICAgICAgICAgIChvbkNsaWNrKT1cIm9uQWN0aW9uKCdhZGQtY2hpbGQnLCBub2RlRGF0YSk7IHBhbmVsLmNsb3NlKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtbGlnaHQgZmEtcGx1c1wiPjwvaT5cbiAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDwhLS0gRGVsZXRlIChvbmx5IGZvciBjdXN0b20gaXRlbXMgd2l0aCBuYW1lcykgLS0+XG4gICAgICAgICAgQGlmIChpdGVtLm5hbWUgJiYgbWV0YWRhdGEuaXNDdXN0b20pIHtcbiAgICAgICAgICAgIDxheC1kaXZpZGVyPjwvYXgtZGl2aWRlcj5cbiAgICAgICAgICAgIDxheC1idXR0b24taXRlbVxuICAgICAgICAgICAgICBbY29sb3JdPVwiJ2RhbmdlcidcIlxuICAgICAgICAgICAgICBbdGV4dF09XCIoJ0BnZW5lcmFsOmFjdGlvbnMuZGVsZXRlLnRpdGxlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jKSFcIlxuICAgICAgICAgICAgICAob25DbGljayk9XCJvbkFjdGlvbignZGVsZXRlJywgbm9kZURhdGEpOyBwYW5lbC5jbG9zZSgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLWxpZ2h0IGZhLXRyYXNoXCI+PC9pPlxuICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPCEtLSBJbmZvIG1lc3NhZ2UgZm9yIGl0ZW1zIHdpdGhvdXQgbmFtZXMgLS0+XG4gICAgICAgICAgQGlmICghaXRlbS5uYW1lKSB7XG4gICAgICAgICAgICA8YXgtZGl2aWRlcj48L2F4LWRpdmlkZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtcC0yIGF4LXRleHQteHMgYXgtdGV4dC1uZXV0cmFsLTUwMCBheC1pdGFsaWNcIj5cbiAgICAgICAgICAgICAge3sgJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5tZXNzYWdlcy5pbmZvLm5vLW5hbWUnIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9heC1idXR0b24taXRlbS1saXN0PlxuICAgICAgPC9heC1kcm9wZG93bi1wYW5lbD5cbiAgICA8L2F4LWJ1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AXTranslationService } from '@acorex/core/translation';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
3
|
import { Injectable } from '@angular/core';
|
|
4
|
-
import { b as AXMPermissionsKeys } from './acorex-modules-platform-management-acorex-modules-platform-management-
|
|
4
|
+
import { b as AXMPermissionsKeys } from './acorex-modules-platform-management-acorex-modules-platform-management-B99sSLFQ.mjs';
|
|
5
5
|
|
|
6
6
|
class AXMPermissionDefinitionProvider {
|
|
7
7
|
constructor(injector) {
|
|
@@ -36,4 +36,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
|
|
|
36
36
|
}], ctorParameters: () => [{ type: i0.Injector }] });
|
|
37
37
|
|
|
38
38
|
export { AXMPermissionDefinitionProvider };
|
|
39
|
-
//# sourceMappingURL=acorex-modules-platform-management-permission-definition.provider-
|
|
39
|
+
//# sourceMappingURL=acorex-modules-platform-management-permission-definition.provider-DHfWGH0p.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-modules-platform-management-permission-definition.provider-BWt2Ib-i.mjs","sources":["../tmp-esm2022/platform-management/lib/permission-definition.provider.js"],"sourcesContent":["import { AXTranslationService } from '@acorex/core/translation';\nimport { Injectable, Injector } from '@angular/core';\nimport { AXMPermissionsKeys } from './permission.keys';\nimport * as i0 from \"@angular/core\";\nexport class AXMPermissionDefinitionProvider {\n constructor(injector) {\n this.injector = injector;\n this.translateService = this.injector.get(AXTranslationService);\n }\n async define(context) {\n const keys = AXMPermissionsKeys.PlatformManagement;\n context.addGroup(keys.Management, await this.translateService.translateAsync('@platform-management:permissions.manage.title'), await this.translateService.translateAsync('@platform-management:permissions.manage.description'))\n //\n .addPermission(keys.GlobalVariable.Management, await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.manage.title'), await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.manage.description'))\n .addChild(keys.GlobalVariable.View, await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.view.title'), await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.view.description'))\n .addChild(keys.GlobalVariable.Create, await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.create.title'), await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.create.description'))\n .addChild(keys.GlobalVariable.Edit, await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.edit.title'), await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.edit.description'))\n .addChild(keys.GlobalVariable.Delete, await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.delete.title'), await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.delete.description'))\n .endPermission()\n //\n .addPermission(keys.MenuManagement.Management, await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.manage.title'), await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.manage.description'))\n .addChild(keys.MenuManagement.View, await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.view.title'), await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.view.description'))\n .addChild(keys.MenuManagement.Create, await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.create.title'), await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.create.description'))\n .addChild(keys.MenuManagement.Edit, await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.edit.title'), await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.edit.description'))\n .addChild(keys.MenuManagement.Delete, await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.delete.title'), await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.delete.description'))\n .endPermission()\n //\n .endGroup();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMPermissionDefinitionProvider, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMPermissionDefinitionProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMPermissionDefinitionProvider, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i0.Injector }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1kZWZpbml0aW9uLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3BsYXRmb3JtLW1hbmFnZW1lbnQvc3JjL2xpYi9wZXJtaXNzaW9uLWRlZmluaXRpb24ucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBR3ZELE1BQU0sT0FBTywrQkFBK0I7SUFHMUMsWUFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNwQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUErQztRQUMxRCxNQUFNLElBQUksR0FBRyxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQztRQUVuRCxPQUFPLENBQUMsUUFBUSxDQUNkLElBQUksQ0FBQyxVQUFVLEVBQ2YsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLCtDQUErQyxDQUFDLEVBQzNGLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxxREFBcUQsQ0FBQyxDQUNsRztZQUNDLEVBQUU7YUFDRCxhQUFhLENBQ1osSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQzlCLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyx3RkFBd0YsQ0FBQyxFQUNwSSxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsOEZBQThGLENBQUMsQ0FDM0k7YUFDQSxRQUFRLENBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQ3hCLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxzRkFBc0YsQ0FBQyxFQUNsSSxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsNEZBQTRGLENBQUMsQ0FDekk7YUFDQSxRQUFRLENBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQzFCLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyx3RkFBd0YsQ0FBQyxFQUNwSSxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsOEZBQThGLENBQUMsQ0FDM0k7YUFDQSxRQUFRLENBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQ3hCLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxzRkFBc0YsQ0FBQyxFQUNsSSxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsNEZBQTRGLENBQUMsQ0FDekk7YUFDQSxRQUFRLENBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQzFCLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyx3RkFBd0YsQ0FBQyxFQUNwSSxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsOEZBQThGLENBQUMsQ0FDM0k7YUFDQSxhQUFhLEVBQUU7WUFDaEIsRUFBRTthQUNELGFBQWEsQ0FDWixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFDOUIsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLHVGQUF1RixDQUFDLEVBQ25JLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyw2RkFBNkYsQ0FBQyxDQUMxSTthQUNBLFFBQVEsQ0FDUCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFDeEIsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLHFGQUFxRixDQUFDLEVBQ2pJLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQywyRkFBMkYsQ0FBQyxDQUN4STthQUNBLFFBQVEsQ0FDUCxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFDMUIsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLHVGQUF1RixDQUFDLEVBQ25JLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyw2RkFBNkYsQ0FBQyxDQUMxSTthQUNBLFFBQVEsQ0FDUCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFDeEIsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLHFGQUFxRixDQUFDLEVBQ2pJLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQywyRkFBMkYsQ0FBQyxDQUN4STthQUNBLFFBQVEsQ0FDUCxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFDMUIsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLHVGQUF1RixDQUFDLEVBQ25JLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyw2RkFBNkYsQ0FBQyxDQUMxSTthQUNBLGFBQWEsRUFBRTtZQUNoQixFQUFFO2FBQ0QsUUFBUSxFQUFFLENBQUM7SUFDaEIsQ0FBQzsrR0F2RVUsK0JBQStCO21IQUEvQiwrQkFBK0I7OzRGQUEvQiwrQkFBK0I7a0JBRDNDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFBQZXJtaXNzaW9uRGVmaW5pdGlvblByb3ZpZGVyLCBBWFBQZXJtaXNzaW9uRGVmaW5pdGlvblByb3ZpZGVyQ29udGV4dCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vYXV0aCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhNUGVybWlzc2lvbnNLZXlzIH0gZnJvbSAnLi9wZXJtaXNzaW9uLmtleXMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhNUGVybWlzc2lvbkRlZmluaXRpb25Qcm92aWRlciBpbXBsZW1lbnRzIEFYUFBlcm1pc3Npb25EZWZpbml0aW9uUHJvdmlkZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IEFYVHJhbnNsYXRpb25TZXJ2aWNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuICB9XG5cbiAgYXN5bmMgZGVmaW5lKGNvbnRleHQ6IEFYUFBlcm1pc3Npb25EZWZpbml0aW9uUHJvdmlkZXJDb250ZXh0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qga2V5cyA9IEFYTVBlcm1pc3Npb25zS2V5cy5QbGF0Zm9ybU1hbmFnZW1lbnQ7XG5cbiAgICBjb250ZXh0LmFkZEdyb3VwKFxuICAgICAga2V5cy5NYW5hZ2VtZW50LFxuICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDpwZXJtaXNzaW9ucy5tYW5hZ2UudGl0bGUnKSxcbiAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6cGVybWlzc2lvbnMubWFuYWdlLmRlc2NyaXB0aW9uJylcbiAgICApXG4gICAgICAvL1xuICAgICAgLmFkZFBlcm1pc3Npb24oXG4gICAgICAgIGtleXMuR2xvYmFsVmFyaWFibGUuTWFuYWdlbWVudCxcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDpnbG9iYWwtdmFyaWFibGVzLnBlcm1pc3Npb25zLmdsb2JhbC12YXJpYWJsZS5hY3Rpb25zLm1hbmFnZS50aXRsZScpLFxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Omdsb2JhbC12YXJpYWJsZXMucGVybWlzc2lvbnMuZ2xvYmFsLXZhcmlhYmxlLmFjdGlvbnMubWFuYWdlLmRlc2NyaXB0aW9uJylcbiAgICAgIClcbiAgICAgIC5hZGRDaGlsZChcbiAgICAgICAga2V5cy5HbG9iYWxWYXJpYWJsZS5WaWV3LFxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Omdsb2JhbC12YXJpYWJsZXMucGVybWlzc2lvbnMuZ2xvYmFsLXZhcmlhYmxlLmFjdGlvbnMudmlldy50aXRsZScpLFxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Omdsb2JhbC12YXJpYWJsZXMucGVybWlzc2lvbnMuZ2xvYmFsLXZhcmlhYmxlLmFjdGlvbnMudmlldy5kZXNjcmlwdGlvbicpXG4gICAgICApXG4gICAgICAuYWRkQ2hpbGQoXG4gICAgICAgIGtleXMuR2xvYmFsVmFyaWFibGUuQ3JlYXRlLFxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Omdsb2JhbC12YXJpYWJsZXMucGVybWlzc2lvbnMuZ2xvYmFsLXZhcmlhYmxlLmFjdGlvbnMuY3JlYXRlLnRpdGxlJyksXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6Z2xvYmFsLXZhcmlhYmxlcy5wZXJtaXNzaW9ucy5nbG9iYWwtdmFyaWFibGUuYWN0aW9ucy5jcmVhdGUuZGVzY3JpcHRpb24nKVxuICAgICAgKVxuICAgICAgLmFkZENoaWxkKFxuICAgICAgICBrZXlzLkdsb2JhbFZhcmlhYmxlLkVkaXQsXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6Z2xvYmFsLXZhcmlhYmxlcy5wZXJtaXNzaW9ucy5nbG9iYWwtdmFyaWFibGUuYWN0aW9ucy5lZGl0LnRpdGxlJyksXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6Z2xvYmFsLXZhcmlhYmxlcy5wZXJtaXNzaW9ucy5nbG9iYWwtdmFyaWFibGUuYWN0aW9ucy5lZGl0LmRlc2NyaXB0aW9uJylcbiAgICAgIClcbiAgICAgIC5hZGRDaGlsZChcbiAgICAgICAga2V5cy5HbG9iYWxWYXJpYWJsZS5EZWxldGUsXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6Z2xvYmFsLXZhcmlhYmxlcy5wZXJtaXNzaW9ucy5nbG9iYWwtdmFyaWFibGUuYWN0aW9ucy5kZWxldGUudGl0bGUnKSxcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDpnbG9iYWwtdmFyaWFibGVzLnBlcm1pc3Npb25zLmdsb2JhbC12YXJpYWJsZS5hY3Rpb25zLmRlbGV0ZS5kZXNjcmlwdGlvbicpXG4gICAgICApXG4gICAgICAuZW5kUGVybWlzc2lvbigpXG4gICAgICAvL1xuICAgICAgLmFkZFBlcm1pc3Npb24oXG4gICAgICAgIGtleXMuTWVudU1hbmFnZW1lbnQuTWFuYWdlbWVudCxcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQucGVybWlzc2lvbnMubWVudS1tYW5hZ2VtZW50LmFjdGlvbnMubWFuYWdlLnRpdGxlJyksXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LnBlcm1pc3Npb25zLm1lbnUtbWFuYWdlbWVudC5hY3Rpb25zLm1hbmFnZS5kZXNjcmlwdGlvbicpXG4gICAgICApXG4gICAgICAuYWRkQ2hpbGQoXG4gICAgICAgIGtleXMuTWVudU1hbmFnZW1lbnQuVmlldyxcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQucGVybWlzc2lvbnMubWVudS1tYW5hZ2VtZW50LmFjdGlvbnMudmlldy50aXRsZScpLFxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5wZXJtaXNzaW9ucy5tZW51LW1hbmFnZW1lbnQuYWN0aW9ucy52aWV3LmRlc2NyaXB0aW9uJylcbiAgICAgIClcbiAgICAgIC5hZGRDaGlsZChcbiAgICAgICAga2V5cy5NZW51TWFuYWdlbWVudC5DcmVhdGUsXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LnBlcm1pc3Npb25zLm1lbnUtbWFuYWdlbWVudC5hY3Rpb25zLmNyZWF0ZS50aXRsZScpLFxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5wZXJtaXNzaW9ucy5tZW51LW1hbmFnZW1lbnQuYWN0aW9ucy5jcmVhdGUuZGVzY3JpcHRpb24nKVxuICAgICAgKVxuICAgICAgLmFkZENoaWxkKFxuICAgICAgICBrZXlzLk1lbnVNYW5hZ2VtZW50LkVkaXQsXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LnBlcm1pc3Npb25zLm1lbnUtbWFuYWdlbWVudC5hY3Rpb25zLmVkaXQudGl0bGUnKSxcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQucGVybWlzc2lvbnMubWVudS1tYW5hZ2VtZW50LmFjdGlvbnMuZWRpdC5kZXNjcmlwdGlvbicpXG4gICAgICApXG4gICAgICAuYWRkQ2hpbGQoXG4gICAgICAgIGtleXMuTWVudU1hbmFnZW1lbnQuRGVsZXRlLFxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5wZXJtaXNzaW9ucy5tZW51LW1hbmFnZW1lbnQuYWN0aW9ucy5kZWxldGUudGl0bGUnKSxcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQucGVybWlzc2lvbnMubWVudS1tYW5hZ2VtZW50LmFjdGlvbnMuZGVsZXRlLmRlc2NyaXB0aW9uJylcbiAgICAgIClcbiAgICAgIC5lbmRQZXJtaXNzaW9uKClcbiAgICAgIC8vXG4gICAgICAuZW5kR3JvdXAoKTtcbiAgfVxufVxuXG4iXX0="],"names":[],"mappings":";;;;;AAIO,MAAM,+BAA+B,CAAC;AAC7C,IAAI,WAAW,CAAC,QAAQ,EAAE;AAC1B,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAChC,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,oBAAoB,CAAC;AACvE,IAAI;AACJ,IAAI,MAAM,MAAM,CAAC,OAAO,EAAE;AAC1B,QAAQ,MAAM,IAAI,GAAG,kBAAkB,CAAC,kBAAkB;AAC1D,QAAQ,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,+CAA+C,CAAC,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,qDAAqD,CAAC;AACxO;AACA,aAAa,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,wFAAwF,CAAC,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,8FAA8F,CAAC;AAC3U,aAAa,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,sFAAsF,CAAC,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,4FAA4F,CAAC;AAC5T,aAAa,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,wFAAwF,CAAC,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,8FAA8F,CAAC;AAClU,aAAa,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,sFAAsF,CAAC,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,4FAA4F,CAAC;AAC5T,aAAa,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,wFAAwF,CAAC,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,8FAA8F,CAAC;AAClU,aAAa,aAAa;AAC1B;AACA,aAAa,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,uFAAuF,CAAC,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,6FAA6F,CAAC;AACzU,aAAa,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,qFAAqF,CAAC,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,2FAA2F,CAAC;AAC1T,aAAa,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,uFAAuF,CAAC,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,6FAA6F,CAAC;AAChU,aAAa,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,qFAAqF,CAAC,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,2FAA2F,CAAC;AAC1T,aAAa,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,uFAAuF,CAAC,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,6FAA6F,CAAC;AAChU,aAAa,aAAa;AAC1B;AACA,aAAa,QAAQ,EAAE;AACvB,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AACzN,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE,CAAC,CAAC;AACtJ;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE,UAAU,EAAE,CAAC;AAC1I,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"acorex-modules-platform-management-permission-definition.provider-DHfWGH0p.mjs","sources":["../tmp-esm2022/platform-management/lib/permission-definition.provider.js"],"sourcesContent":["import { AXTranslationService } from '@acorex/core/translation';\nimport { Injectable, Injector } from '@angular/core';\nimport { AXMPermissionsKeys } from './permission.keys';\nimport * as i0 from \"@angular/core\";\nexport class AXMPermissionDefinitionProvider {\n constructor(injector) {\n this.injector = injector;\n this.translateService = this.injector.get(AXTranslationService);\n }\n async define(context) {\n const keys = AXMPermissionsKeys.PlatformManagement;\n context.addGroup(keys.Management, await this.translateService.translateAsync('@platform-management:permissions.manage.title'), await this.translateService.translateAsync('@platform-management:permissions.manage.description'))\n //\n .addPermission(keys.GlobalVariable.Management, await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.manage.title'), await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.manage.description'))\n .addChild(keys.GlobalVariable.View, await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.view.title'), await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.view.description'))\n .addChild(keys.GlobalVariable.Create, await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.create.title'), await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.create.description'))\n .addChild(keys.GlobalVariable.Edit, await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.edit.title'), await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.edit.description'))\n .addChild(keys.GlobalVariable.Delete, await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.delete.title'), await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.delete.description'))\n .endPermission()\n //\n .addPermission(keys.MenuManagement.Management, await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.manage.title'), await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.manage.description'))\n .addChild(keys.MenuManagement.View, await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.view.title'), await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.view.description'))\n .addChild(keys.MenuManagement.Create, await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.create.title'), await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.create.description'))\n .addChild(keys.MenuManagement.Edit, await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.edit.title'), await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.edit.description'))\n .addChild(keys.MenuManagement.Delete, await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.delete.title'), await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.delete.description'))\n .endPermission()\n //\n .endGroup();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMPermissionDefinitionProvider, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMPermissionDefinitionProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMPermissionDefinitionProvider, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i0.Injector }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1kZWZpbml0aW9uLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3BsYXRmb3JtLW1hbmFnZW1lbnQvc3JjL2xpYi9wZXJtaXNzaW9uLWRlZmluaXRpb24ucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBR3ZELE1BQU0sT0FBTywrQkFBK0I7SUFHMUMsWUFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNwQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUErQztRQUMxRCxNQUFNLElBQUksR0FBRyxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQztRQUVuRCxPQUFPLENBQUMsUUFBUSxDQUNkLElBQUksQ0FBQyxVQUFVLEVBQ2YsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLCtDQUErQyxDQUFDLEVBQzNGLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxxREFBcUQsQ0FBQyxDQUNsRztZQUNDLEVBQUU7YUFDRCxhQUFhLENBQ1osSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQzlCLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyx3RkFBd0YsQ0FBQyxFQUNwSSxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsOEZBQThGLENBQUMsQ0FDM0k7YUFDQSxRQUFRLENBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQ3hCLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxzRkFBc0YsQ0FBQyxFQUNsSSxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsNEZBQTRGLENBQUMsQ0FDekk7YUFDQSxRQUFRLENBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQzFCLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyx3RkFBd0YsQ0FBQyxFQUNwSSxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsOEZBQThGLENBQUMsQ0FDM0k7YUFDQSxRQUFRLENBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQ3hCLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxzRkFBc0YsQ0FBQyxFQUNsSSxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsNEZBQTRGLENBQUMsQ0FDekk7YUFDQSxRQUFRLENBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQzFCLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyx3RkFBd0YsQ0FBQyxFQUNwSSxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsOEZBQThGLENBQUMsQ0FDM0k7YUFDQSxhQUFhLEVBQUU7WUFDaEIsRUFBRTthQUNELGFBQWEsQ0FDWixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFDOUIsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLHVGQUF1RixDQUFDLEVBQ25JLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyw2RkFBNkYsQ0FBQyxDQUMxSTthQUNBLFFBQVEsQ0FDUCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFDeEIsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLHFGQUFxRixDQUFDLEVBQ2pJLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQywyRkFBMkYsQ0FBQyxDQUN4STthQUNBLFFBQVEsQ0FDUCxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFDMUIsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLHVGQUF1RixDQUFDLEVBQ25JLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyw2RkFBNkYsQ0FBQyxDQUMxSTthQUNBLFFBQVEsQ0FDUCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFDeEIsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLHFGQUFxRixDQUFDLEVBQ2pJLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQywyRkFBMkYsQ0FBQyxDQUN4STthQUNBLFFBQVEsQ0FDUCxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFDMUIsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLHVGQUF1RixDQUFDLEVBQ25JLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyw2RkFBNkYsQ0FBQyxDQUMxSTthQUNBLGFBQWEsRUFBRTtZQUNoQixFQUFFO2FBQ0QsUUFBUSxFQUFFLENBQUM7SUFDaEIsQ0FBQzsrR0F2RVUsK0JBQStCO21IQUEvQiwrQkFBK0I7OzRGQUEvQiwrQkFBK0I7a0JBRDNDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFBQZXJtaXNzaW9uRGVmaW5pdGlvblByb3ZpZGVyLCBBWFBQZXJtaXNzaW9uRGVmaW5pdGlvblByb3ZpZGVyQ29udGV4dCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vYXV0aCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhNUGVybWlzc2lvbnNLZXlzIH0gZnJvbSAnLi9wZXJtaXNzaW9uLmtleXMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhNUGVybWlzc2lvbkRlZmluaXRpb25Qcm92aWRlciBpbXBsZW1lbnRzIEFYUFBlcm1pc3Npb25EZWZpbml0aW9uUHJvdmlkZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IEFYVHJhbnNsYXRpb25TZXJ2aWNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuICB9XG5cbiAgYXN5bmMgZGVmaW5lKGNvbnRleHQ6IEFYUFBlcm1pc3Npb25EZWZpbml0aW9uUHJvdmlkZXJDb250ZXh0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qga2V5cyA9IEFYTVBlcm1pc3Npb25zS2V5cy5QbGF0Zm9ybU1hbmFnZW1lbnQ7XG5cbiAgICBjb250ZXh0LmFkZEdyb3VwKFxuICAgICAga2V5cy5NYW5hZ2VtZW50LFxuICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDpwZXJtaXNzaW9ucy5tYW5hZ2UudGl0bGUnKSxcbiAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6cGVybWlzc2lvbnMubWFuYWdlLmRlc2NyaXB0aW9uJylcbiAgICApXG4gICAgICAvL1xuICAgICAgLmFkZFBlcm1pc3Npb24oXG4gICAgICAgIGtleXMuR2xvYmFsVmFyaWFibGUuTWFuYWdlbWVudCxcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDpnbG9iYWwtdmFyaWFibGVzLnBlcm1pc3Npb25zLmdsb2JhbC12YXJpYWJsZS5hY3Rpb25zLm1hbmFnZS50aXRsZScpLFxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Omdsb2JhbC12YXJpYWJsZXMucGVybWlzc2lvbnMuZ2xvYmFsLXZhcmlhYmxlLmFjdGlvbnMubWFuYWdlLmRlc2NyaXB0aW9uJylcbiAgICAgIClcbiAgICAgIC5hZGRDaGlsZChcbiAgICAgICAga2V5cy5HbG9iYWxWYXJpYWJsZS5WaWV3LFxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Omdsb2JhbC12YXJpYWJsZXMucGVybWlzc2lvbnMuZ2xvYmFsLXZhcmlhYmxlLmFjdGlvbnMudmlldy50aXRsZScpLFxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Omdsb2JhbC12YXJpYWJsZXMucGVybWlzc2lvbnMuZ2xvYmFsLXZhcmlhYmxlLmFjdGlvbnMudmlldy5kZXNjcmlwdGlvbicpXG4gICAgICApXG4gICAgICAuYWRkQ2hpbGQoXG4gICAgICAgIGtleXMuR2xvYmFsVmFyaWFibGUuQ3JlYXRlLFxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Omdsb2JhbC12YXJpYWJsZXMucGVybWlzc2lvbnMuZ2xvYmFsLXZhcmlhYmxlLmFjdGlvbnMuY3JlYXRlLnRpdGxlJyksXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6Z2xvYmFsLXZhcmlhYmxlcy5wZXJtaXNzaW9ucy5nbG9iYWwtdmFyaWFibGUuYWN0aW9ucy5jcmVhdGUuZGVzY3JpcHRpb24nKVxuICAgICAgKVxuICAgICAgLmFkZENoaWxkKFxuICAgICAgICBrZXlzLkdsb2JhbFZhcmlhYmxlLkVkaXQsXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6Z2xvYmFsLXZhcmlhYmxlcy5wZXJtaXNzaW9ucy5nbG9iYWwtdmFyaWFibGUuYWN0aW9ucy5lZGl0LnRpdGxlJyksXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6Z2xvYmFsLXZhcmlhYmxlcy5wZXJtaXNzaW9ucy5nbG9iYWwtdmFyaWFibGUuYWN0aW9ucy5lZGl0LmRlc2NyaXB0aW9uJylcbiAgICAgIClcbiAgICAgIC5hZGRDaGlsZChcbiAgICAgICAga2V5cy5HbG9iYWxWYXJpYWJsZS5EZWxldGUsXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6Z2xvYmFsLXZhcmlhYmxlcy5wZXJtaXNzaW9ucy5nbG9iYWwtdmFyaWFibGUuYWN0aW9ucy5kZWxldGUudGl0bGUnKSxcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDpnbG9iYWwtdmFyaWFibGVzLnBlcm1pc3Npb25zLmdsb2JhbC12YXJpYWJsZS5hY3Rpb25zLmRlbGV0ZS5kZXNjcmlwdGlvbicpXG4gICAgICApXG4gICAgICAuZW5kUGVybWlzc2lvbigpXG4gICAgICAvL1xuICAgICAgLmFkZFBlcm1pc3Npb24oXG4gICAgICAgIGtleXMuTWVudU1hbmFnZW1lbnQuTWFuYWdlbWVudCxcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQucGVybWlzc2lvbnMubWVudS1tYW5hZ2VtZW50LmFjdGlvbnMubWFuYWdlLnRpdGxlJyksXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LnBlcm1pc3Npb25zLm1lbnUtbWFuYWdlbWVudC5hY3Rpb25zLm1hbmFnZS5kZXNjcmlwdGlvbicpXG4gICAgICApXG4gICAgICAuYWRkQ2hpbGQoXG4gICAgICAgIGtleXMuTWVudU1hbmFnZW1lbnQuVmlldyxcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQucGVybWlzc2lvbnMubWVudS1tYW5hZ2VtZW50LmFjdGlvbnMudmlldy50aXRsZScpLFxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5wZXJtaXNzaW9ucy5tZW51LW1hbmFnZW1lbnQuYWN0aW9ucy52aWV3LmRlc2NyaXB0aW9uJylcbiAgICAgIClcbiAgICAgIC5hZGRDaGlsZChcbiAgICAgICAga2V5cy5NZW51TWFuYWdlbWVudC5DcmVhdGUsXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LnBlcm1pc3Npb25zLm1lbnUtbWFuYWdlbWVudC5hY3Rpb25zLmNyZWF0ZS50aXRsZScpLFxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5wZXJtaXNzaW9ucy5tZW51LW1hbmFnZW1lbnQuYWN0aW9ucy5jcmVhdGUuZGVzY3JpcHRpb24nKVxuICAgICAgKVxuICAgICAgLmFkZENoaWxkKFxuICAgICAgICBrZXlzLk1lbnVNYW5hZ2VtZW50LkVkaXQsXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LnBlcm1pc3Npb25zLm1lbnUtbWFuYWdlbWVudC5hY3Rpb25zLmVkaXQudGl0bGUnKSxcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQucGVybWlzc2lvbnMubWVudS1tYW5hZ2VtZW50LmFjdGlvbnMuZWRpdC5kZXNjcmlwdGlvbicpXG4gICAgICApXG4gICAgICAuYWRkQ2hpbGQoXG4gICAgICAgIGtleXMuTWVudU1hbmFnZW1lbnQuRGVsZXRlLFxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5wZXJtaXNzaW9ucy5tZW51LW1hbmFnZW1lbnQuYWN0aW9ucy5kZWxldGUudGl0bGUnKSxcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQucGVybWlzc2lvbnMubWVudS1tYW5hZ2VtZW50LmFjdGlvbnMuZGVsZXRlLmRlc2NyaXB0aW9uJylcbiAgICAgIClcbiAgICAgIC5lbmRQZXJtaXNzaW9uKClcbiAgICAgIC8vXG4gICAgICAuZW5kR3JvdXAoKTtcbiAgfVxufVxuXG4iXX0="],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { r as AXMAppVersionEntityModule, c as AXMAppVersionService, i as AXMAppVersionServiceImpl, k as AXMAppVersionSlotComponent, l as AXMChangeLogPopupAction, m as AXMChangeLogUpdateSettingAction, o as AXMCheckNewVersionAction, p as AXMCheckNewVersionWorkflow, q as AXMGlobalVariableEntityModule, e as AXMGlobalVariablesService, f as AXMGlobalVariablesServiceImpl, j as AXMNotifyAppComponent, d as AXMPlatformManagementModule, n as AXMWhatsNewWorkflow, R as RootConfig, h as appVersionEntityEntityFactory, g as globalVariableEntityFactory } from './acorex-modules-platform-management-acorex-modules-platform-management-
|
|
1
|
+
export { r as AXMAppVersionEntityModule, c as AXMAppVersionService, i as AXMAppVersionServiceImpl, k as AXMAppVersionSlotComponent, l as AXMChangeLogPopupAction, m as AXMChangeLogUpdateSettingAction, o as AXMCheckNewVersionAction, p as AXMCheckNewVersionWorkflow, q as AXMGlobalVariableEntityModule, e as AXMGlobalVariablesService, f as AXMGlobalVariablesServiceImpl, j as AXMNotifyAppComponent, d as AXMPlatformManagementModule, n as AXMWhatsNewWorkflow, R as RootConfig, h as appVersionEntityEntityFactory, g as globalVariableEntityFactory } from './acorex-modules-platform-management-acorex-modules-platform-management-B99sSLFQ.mjs';
|
|
2
2
|
//# sourceMappingURL=acorex-modules-platform-management.mjs.map
|