{"version":3,"file":"app.js","sources":["../../vite/modulepreload-polyfill","../../src/components/CmsContentArea/methods.ts","../../src/config/config.ts","../../src/components/CmsBlockComponentSelector/CmsBlockComponentSelector.vue","../../src/components/CmsContentArea/CmsContentArea.vue","../../plugin-vue:export-helper","../../src/views/blocks/ContactCardBlock.vue","../../src/views/blocks/HeroBlock.vue","../../src/views/blocks/MediaBlock.vue","../../src/views/blocks/ParagraphBlock.vue","../../src/views/blocks/PreviewBlock.vue","../../src/views/blocks/TeaserCardBlock.vue","../../src/components/SmartSvg/SmartSvg.vue","../../src/views/blocks/TileBlock.vue","../../src/episerver/config.ts","../../src/App.vue","../../src/episerver/apiClient.ts","../../src/episerver/models.ts","../../src/episerver/ContentResolver.ts","../../src/store/modules/cmsDataModel.ts","../../src/store/modules/cmsContext.ts","../../src/store/index.ts","../../src/directives/epiEdit.ts","../../src/directives/inView.ts","../../src/components/LanguagePicker/LanguagePicker.vue","../../src/views/blocks/HeaderBlock/headerBlock.vue","../../src/views/blocks/FooterBlock/footerBlock.vue","../../src/store/helpers.ts","../../src/components/CmsPageComponentSelector/CmsPageComponentSelector.vue","../../src/router/index.ts","../../src/appinsights/index.ts","../../src/epiBootstrap.ts","../../src/components/SmartLink/SmartLink.vue","../../src/components/SmartImage/SmartImage.vue","../../src/main.ts"],"sourcesContent":["const p = function polyfill() {\n const relList = document.createElement('link').relList;\n if (relList && relList.supports && relList.supports('modulepreload')) {\n return;\n }\n for (const link of document.querySelectorAll('link[rel=\"modulepreload\"]')) {\n processPreload(link);\n }\n new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type !== 'childList') {\n continue;\n }\n for (const node of mutation.addedNodes) {\n if (node.tagName === 'LINK' && node.rel === 'modulepreload')\n processPreload(node);\n }\n }\n }).observe(document, { childList: true, subtree: true });\n function getFetchOpts(script) {\n const fetchOpts = {};\n if (script.integrity)\n fetchOpts.integrity = script.integrity;\n if (script.referrerpolicy)\n fetchOpts.referrerPolicy = script.referrerpolicy;\n if (script.crossorigin === 'use-credentials')\n fetchOpts.credentials = 'include';\n else if (script.crossorigin === 'anonymous')\n fetchOpts.credentials = 'omit';\n else\n fetchOpts.credentials = 'same-origin';\n return fetchOpts;\n }\n function processPreload(link) {\n if (link.ep)\n // ep marker = processed\n return;\n link.ep = true;\n // prepopulate the load record\n const fetchOpts = getFetchOpts(link);\n fetch(link.href, fetchOpts);\n }\n};__VITE_IS_MODERN__&&p();","import { ContentData } from '@/episerver/models'\r\n\r\nfunction getInnerGridType(block: any): string {\r\n return block?.innerGridType || 'grid grid--contained'\r\n}\r\n\r\nfunction getOuterGridType(block: any): string {\r\n if (useOuterGrid(block) && block?.outerGridType === undefined) {\r\n return 'grid grid--fluid'\r\n }\r\n return block?.outerGridType || 'grid'\r\n}\r\n\r\nfunction getMarginClass(block: any): string {\r\n const cssClasses = []\r\n\r\n if (block.marginBottom !== 'default') {\r\n cssClasses.push(`mb-${block.marginBottom}`)\r\n } else {\r\n cssClasses.push('mb-3') // default bottom margin\r\n }\r\n\r\n if (block.marginTop !== 'default') {\r\n cssClasses.push(`mt-${block.marginTop}`)\r\n }\r\n\r\n return cssClasses.join(' ')\r\n}\r\n\r\nfunction useOuterGrid(block: any): boolean {\r\n return !!block?.useOuterGrid\r\n}\r\n\r\nfunction getInnerBackgroundColor(block: any): string {\r\n return block?.innerBackgroundColor || ''\r\n}\r\n\r\nfunction getOuterBackgroundColor(block: any): string {\r\n return block?.outerBackgroundColor || ''\r\n}\r\n\r\nfunction getGridSizeClasses(block: any, contentType?: any): string {\r\n if (block === undefined) return ''\r\n\r\n let text = ''\r\n\r\n if (block.gridSize && block.gridSize !== 'None') {\r\n text += block.gridSize\r\n } else {\r\n if (contentType === 'ParagraphBlock' || contentType === 'MediaBlock') {\r\n // defaults for certain blocks\r\n text += 'span8 move2 span10--md move1--md'\r\n } else {\r\n text += 'span12' // all others, no display setting applied\r\n }\r\n }\r\n\r\n if (block.gridMove && block.gridSize !== '') {\r\n text += ` ${block.gridMove}`\r\n }\r\n\r\n if (block.tabletGridSize && block.tabletGridSize !== 'None' && block.gridSize !== '') {\r\n text += ` ${block.tabletGridSize}--md`\r\n }\r\n\r\n if (block.tabletGridMove && block.gridSize !== '') {\r\n text += ` ${block.tabletGridMove}--md`\r\n }\r\n\r\n if (block.mobileGridSize && block.mobileGridSize !== 'None') {\r\n text += ` ${block.mobileGridSize}--sm`\r\n }\r\n\r\n if (block.mobileGridMove) {\r\n text += ` ${block.mobileGridMove}--sm`\r\n }\r\n\r\n return text\r\n}\r\n\r\n// eslint-disable-next-line\r\nfunction getModelFromBlock(block: any): ContentData {\r\n return block.content\r\n}\r\n\r\nexport {\r\n getInnerGridType,\r\n getOuterGridType,\r\n getMarginClass,\r\n useOuterGrid,\r\n getInnerBackgroundColor,\r\n getOuterBackgroundColor,\r\n getGridSizeClasses,\r\n getModelFromBlock,\r\n}\r\n","/**\r\n * Type describing configuration to using harmonia\r\n */\r\nexport type CmsConfig = {\r\n /**\r\n * settings for CmsBlockComponentSelector and CmsPageComponentSelector components\r\n */\r\n componentSelector: {\r\n /**\r\n * used when previewing an block in the editor.\r\n * the component must be registed globally in vue.\r\n * @default \"BlockPreview\"\r\n */\r\n blockPreviewComponent: string\r\n\r\n /**\r\n * used when an block type cannot be matched to a component\r\n * the component must be registed globally in vue.\r\n * @default \"GenericBlock\"\r\n */\r\n fallbackBlockComponent: string\r\n }\r\n\r\n /**\r\n * settings for the CmsContentArea component\r\n */\r\n contentArea: {\r\n /**\r\n * the default css class for the root/outer html tag\r\n * @default \"contentArea\"\r\n */\r\n cssClass: string\r\n\r\n /**\r\n * the default css class(es) for the item html tag\r\n * @default \"contentAreaItem\"\r\n */\r\n cssItemClass: string\r\n\r\n /**\r\n * the default root html tag\r\n * if empty then the content area items will be rendered without a enclosing root element\r\n * @default \"div\"\r\n */\r\n rootHtmlTag: string\r\n\r\n /**\r\n * the default item html tag\r\n * @default \"div\"\r\n */\r\n itemHtmlTag: string\r\n }\r\n\r\n /**\r\n * settings for the CmsLink component\r\n */\r\n link: {\r\n /**\r\n * the default css class for links\r\n * @default \"\"\r\n */\r\n cssClass: string\r\n }\r\n\r\n /**\r\n * settings for the cms stores\r\n */\r\n store: {\r\n /**\r\n * Settings for the cmsContext store\r\n */\r\n cmsContext: {\r\n mutations: {\r\n /**\r\n * the id for the UPDATE_CONTENT mutation\r\n * @default \"cmsContext/UPDATE_CONTEXT\"\r\n */\r\n UPDATE_CONTEXT: string\r\n }\r\n }\r\n /**\r\n * Settings for the cmsDataModel store\r\n */\r\n cmsDataModel: {\r\n mutations: {\r\n /**\r\n * the id for the UPDATE_MODEL mutation\r\n * @default \"cmsDataModel/UPDATE_MODEL\"\r\n */\r\n UPDATE_MODEL: string\r\n }\r\n actions: {\r\n /**\r\n * the id for the UPDATE_MODEL_BY_URL action\r\n * @default \"cmsDataModel/UPDATE_MODEL_BY_URL\"\r\n */\r\n UPDATE_MODEL_BY_URL: string\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport const defaultCmsConfig: CmsConfig = {\r\n componentSelector: {\r\n blockPreviewComponent: 'BlockPreview',\r\n fallbackBlockComponent: 'GenericBlock',\r\n },\r\n contentArea: {\r\n cssClass: 'contentArea',\r\n cssItemClass: 'contentAreaItem',\r\n rootHtmlTag: 'div',\r\n itemHtmlTag: 'div',\r\n },\r\n link: {\r\n cssClass: '',\r\n },\r\n store: {\r\n cmsContext: {\r\n mutations: {\r\n UPDATE_CONTEXT: 'cmsContext/UPDATE_CONTEXT',\r\n },\r\n },\r\n cmsDataModel: {\r\n actions: {\r\n UPDATE_MODEL_BY_URL: 'cmsDataModel/UPDATE_MODEL_BY_URL',\r\n },\r\n mutations: {\r\n UPDATE_MODEL: 'cmsDataModel/UPDATE_MODEL',\r\n },\r\n },\r\n },\r\n}\r\n","\r\n\r\n\r\n","\r\n\r\n\r\n","\nexport default (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n}\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n","\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","/* eslint-disable no-unused-vars */\r\n/**\r\n * Type describing configuration to use when making\r\n * requests to the Content Delivery API.\r\n */\r\nexport type ContentDeliveryConfig = {\r\n /**\r\n * URL to the Content Delivery API.\r\n */\r\n apiUrl: string\r\n\r\n /**\r\n * Function to call to get an access token for authorizing\r\n * requests to the Content Delivery API.\r\n */\r\n getAccessToken?: (path?: string) => Promise\r\n\r\n /**\r\n * Select all properties by default, unless otherwise\r\n * specified in each request to the Content Delivery API.\r\n */\r\n selectAllProperties: boolean\r\n\r\n /**\r\n * Expand all properties by default, unless otherwise\r\n * specified in each request to the Content Delivery API.\r\n */\r\n expandAllProperties: boolean\r\n}\r\n\r\n/**\r\n * Default configuration to use when making requests to the\r\n * Content Delivery API.\r\n */\r\nexport const defaultConfig: ContentDeliveryConfig = {\r\n apiUrl: '/',\r\n selectAllProperties: true,\r\n expandAllProperties: false,\r\n}\r\n","\r\n\r\n\r\n","import 'cross-fetch/polyfill'\r\nimport { ContentDeliveryConfig } from './config'\r\n\r\n/* eslint-disable */\r\n\r\n/**\r\n * Interface describing a response from the API.\r\n */\r\nexport interface ApiResponse {\r\n /**\r\n * HTTP status code from the API.\r\n */\r\n status: number\r\n\r\n /**\r\n * Status text.\r\n */\r\n statusText: string\r\n\r\n /**\r\n * The requested resource.\r\n */\r\n data?: any\r\n\r\n /**\r\n * Headers associated with the resource.\r\n */\r\n headers: Map\r\n\r\n /**\r\n * True if the response has status between 200 and 299.\r\n */\r\n ok: boolean\r\n}\r\n\r\n/**\r\n * Interface describing an error from the API.\r\n */\r\nexport interface ApiError {\r\n /**\r\n * HTTP status code from the API.\r\n */\r\n status?: number\r\n\r\n /**\r\n * Status text.\r\n */\r\n statusText?: string\r\n\r\n /**\r\n * Data if any.\r\n */\r\n data?: any\r\n}\r\n\r\n/**\r\n * Interface describing the default API parameters.\r\n */\r\nexport interface ApiParameters extends Record {\r\n /**\r\n * Properties to include in the response.\r\n */\r\n select?: string\r\n\r\n /**\r\n * Properties to expand in the response.\r\n */\r\n expand?: string\r\n\r\n /**\r\n * Number of items to fetch per set.\r\n */\r\n top?: number\r\n}\r\n\r\n/**\r\n * Interface describing the default API headers.\r\n */\r\nexport interface ApiHeaders extends Record {\r\n /**\r\n * Branch of the content.\r\n */\r\n 'Accept-Language'?: string\r\n\r\n /**\r\n * Continuation token to fetch next set of items.\r\n */\r\n 'x-epi-continuation'?: string\r\n}\r\n\r\n/**\r\n * Class for making API calls to the Content Delivery API.\r\n */\r\nexport class ApiClient {\r\n readonly #config: ContentDeliveryConfig\r\n\r\n /**\r\n * Constructs an instance of ApiClient.\r\n *\r\n * @param config Configuration to use.\r\n */\r\n constructor(config: ContentDeliveryConfig) {\r\n this.#config = config\r\n }\r\n\r\n /**\r\n * Make a GET request.\r\n *\r\n * @param path - Path to request.\r\n * @param parameters - Parameters to include in the request.\r\n * @param headers - Headers to include in the request.\r\n * @returns A promise with an ApiRespone if the request was successful, otherwise rejected with an ApiError.\r\n */\r\n async get(path: string, parameters: ApiParameters = {}, headers: ApiHeaders = {}): Promise {\r\n const requestUrl = getUrl(this.#config.apiUrl, path, parameters)\r\n\r\n const request: RequestInit = {\r\n method: 'get',\r\n credentials: 'include',\r\n headers: await getHeaders(path, headers, this.#config),\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n fetch(requestUrl, request)\r\n .then(async (response: Response) => {\r\n const result: ApiResponse = {\r\n ok: response.ok,\r\n status: response.status,\r\n statusText: response.statusText,\r\n headers: new Map(),\r\n data: await response.json().catch(() => {}),\r\n }\r\n\r\n response.headers.forEach((value: string, key: string) => {\r\n result.headers.set(key, value)\r\n })\r\n\r\n resolve(result)\r\n })\r\n .catch((error: any) => {\r\n reject(mapToError(error))\r\n })\r\n })\r\n }\r\n\r\n /**\r\n * Get default API parameters to use when making requests.\r\n *\r\n * @param select - Properties to include in the response. All by default, unless configured differently.\r\n * @param expand - Properties to expand in the response. None by default, unless configured differently.\r\n * @returns Default parameters combined with the default configuration.\r\n */\r\n getDefaultParameters(select?: Array, expand?: Array): ApiParameters {\r\n return {\r\n select: select ? select.join() : this.#config.selectAllProperties ? undefined : 'name',\r\n expand: expand ? expand.join() : this.#config.expandAllProperties ? '*' : undefined,\r\n }\r\n }\r\n\r\n /**\r\n * Get default API headers to use when making requests.\r\n *\r\n * @param branch - Branch of the content.\r\n * @returns Default headers combined with the default configuration.\r\n */\r\n getDefaultHeaders(branch?: string): ApiHeaders {\r\n return {\r\n 'Accept-Language': branch ? branch : undefined,\r\n }\r\n }\r\n}\r\n\r\nasync function getHeaders(path: string, headers: ApiHeaders = {}, config: ContentDeliveryConfig): Promise {\r\n const result = new Headers()\r\n\r\n for (const name in headers) {\r\n if (headers[name] !== undefined) {\r\n result.set(name, headers[name])\r\n }\r\n }\r\n\r\n if (config.getAccessToken) {\r\n const accessToken = await config.getAccessToken(path)\r\n if (accessToken) {\r\n result.set('Authorization', `Bearer ${accessToken}`)\r\n }\r\n }\r\n\r\n return Promise.resolve(result)\r\n}\r\n\r\nfunction getUrl(baseUrl: string, path: string, parameters: ApiParameters): string {\r\n if (!baseUrl.endsWith('/') && path) baseUrl += '/'\r\n if (path.startsWith('/')) path = path.substring(1)\r\n\r\n let query = Object.keys(parameters)\r\n .filter((key) => parameters[key] !== undefined)\r\n .map((key) => `${encodeURIComponent(key)}=${encodeURIComponent(parameters[key])}`)\r\n .join('&')\r\n\r\n if (query) query = '?' + query\r\n\r\n return baseUrl + path + query\r\n}\r\n\r\nfunction mapToError(error: any): ApiError {\r\n const result: ApiError = {}\r\n\r\n if (typeof error.json === 'function') {\r\n error\r\n .json()\r\n .then((jsonError: any) => {\r\n result.data = jsonError\r\n })\r\n .catch((errorResponse: Response) => {\r\n result.status = errorResponse.status\r\n result.statusText = errorResponse.statusText\r\n })\r\n } else {\r\n result.statusText = error\r\n }\r\n\r\n return result\r\n}\r\n","/* eslint-disable no-unused-vars */\r\n/**\r\n * Enum describing in which mode the Content Delivery API\r\n * is being used.\r\n */\r\nexport enum ContextMode {\r\n /**\r\n * Default mode, also known as view mode.\r\n */\r\n Default = 'DEFAULT',\r\n\r\n /**\r\n * Preview mode in the CMS shell.\r\n */\r\n Preview = 'PREVIEW',\r\n\r\n /**\r\n * Edit mode in the CMS shell.\r\n */\r\n Edit = 'EDIT',\r\n}\r\n\r\n/**\r\n * Interface describing the content language,\r\n * also known as branch.\r\n */\r\nexport interface Language {\r\n /**\r\n * URL to this specific language branch\r\n * of the content.\r\n */\r\n currentLanguage: string\r\n\r\n /**\r\n * Displayable name of the language branch.\r\n */\r\n languages: Array\r\n}\r\n\r\nexport interface ContentLanguage {\r\n /**\r\n * URL to this specific language branch\r\n * of the content.\r\n */\r\n languageName: string\r\n\r\n /**\r\n * Displayable name of the language branch.\r\n */\r\n languageCode: string\r\n\r\n /**\r\n * Identifier of the language branch.\r\n */\r\n url: string\r\n}\r\n\r\n/**\r\n * Interface describing a reference to a\r\n * content item.\r\n */\r\nexport interface ContentLink {\r\n /**\r\n * Universally unique identifier of the content.\r\n */\r\n guidValue: string\r\n\r\n /**\r\n * URL to the content.\r\n */\r\n url: string\r\n\r\n /**\r\n * Language branch of the content.\r\n */\r\n language: Language\r\n\r\n /**\r\n * The content item id.\r\n */\r\n id: string\r\n\r\n /**\r\n * The content item if it was expanded.\r\n */\r\n expanded?: ContentData\r\n}\r\n\r\nexport interface ContentArea {\r\n items: Array\r\n}\r\n\r\n/**\r\n * Interface describing content.\r\n */\r\nexport interface ContentData {\r\n /**\r\n * Reference to the content.\r\n */\r\n blockId: string\r\n\r\n /**\r\n * Reference to the parent content.\r\n */\r\n parentLink: ContentLink\r\n\r\n /**\r\n * Content type.\r\n */\r\n contentType: string\r\n\r\n /**\r\n * Language branch of the content.\r\n */\r\n language: Language\r\n\r\n /**\r\n * Language branches this content exists in.\r\n */\r\n existingLanguages: Array\r\n\r\n /**\r\n * Date this content was created.\r\n */\r\n created: Date\r\n\r\n /**\r\n * Date this content was changed.\r\n */\r\n changed: Date\r\n\r\n /**\r\n * Date this content was saved.\r\n */\r\n saved: Date\r\n\r\n /**\r\n * Date this content was published.\r\n */\r\n startPublish: Date\r\n\r\n /**\r\n * Name of the content.\r\n */\r\n name: string\r\n}\r\n\r\n/**\r\n * Inteface describing a category\r\n */\r\nexport interface Category {\r\n /**\r\n * Identifier of the category.\r\n */\r\n id: number\r\n\r\n /**\r\n * Identifier of the category.\r\n */\r\n name: string\r\n\r\n /**\r\n * Description of the category.\r\n */\r\n description: string\r\n}\r\n\r\n/**\r\n * Interface describing page content.\r\n */\r\nexport interface PageData extends ContentData {\r\n /**\r\n * Url to the page.\r\n */\r\n url: string\r\n\r\n /**\r\n * Last segment in the URL.\r\n */\r\n routeSegment: string\r\n\r\n /**\r\n * List of categories.\r\n */\r\n category: Array\r\n\r\n frontendConfiguration?: ContentData\r\n}\r\n\r\n/**\r\n * Inteface describing a site\r\n */\r\nexport interface SiteDefinition {\r\n /**\r\n * Identifier of the site.\r\n */\r\n id: string\r\n\r\n /**\r\n * Name of the site.\r\n */\r\n name: string\r\n\r\n /**\r\n * The EditLocation of the site.\r\n */\r\n editLocation: string\r\n\r\n /**\r\n * References to content asset roots for the site.\r\n */\r\n contentRoots: Record\r\n\r\n /**\r\n * Languages available for the site\r\n */\r\n languages: Array\r\n\r\n /**\r\n * The hosts for the site\r\n */\r\n hosts: Array\r\n}\r\n\r\n/**\r\n * Interface describing the language of a site definition.\r\n */\r\nexport interface SiteDefinitionLanguage extends Language {\r\n /**\r\n * Defines if this language is master language or not\r\n */\r\n isMasterLanguage: boolean\r\n\r\n /**\r\n * The string uses to represent this language as a URL segment\r\n */\r\n UrlSegment: string\r\n\r\n /**\r\n * The primary location of the site language.\r\n * Remark: This property is only include when hosts are excluded from the main site information.\r\n */\r\n Url?: string\r\n}\r\n\r\n/**\r\n * Interface describing a host\r\n */\r\nexport interface HostDefinition {\r\n /**\r\n * Name of the host\r\n */\r\n name: string\r\n\r\n /**\r\n * Type of the host\r\n */\r\n type: string\r\n\r\n /**\r\n * Language of the host\r\n */\r\n language: Language\r\n}\r\n","import { ApiClient, ApiResponse, ApiError } from './apiClient'\r\nimport { ContentDeliveryConfig, defaultConfig } from './config'\r\nimport store from '@/store'\r\nimport { ContentData, ContextMode } from './models'\r\n\r\n/* eslint-disable no-unused-vars */\r\n/**\r\n * Interface describing additional request parameters\r\n * for resolving content.\r\n */\r\nexport interface ResolveContentRequest {\r\n /**\r\n * Properties to include in the response.\r\n * All by default, unless configured differently.\r\n */\r\n select?: Array\r\n\r\n /**\r\n * Properties to expand in the response.\r\n * None by default, unless configured differently.\r\n */\r\n expand?: Array\r\n}\r\n\r\n/**\r\n * Enum describing the status of the resolved content.\r\n */\r\nexport enum ResolvedContentStatus {\r\n /**\r\n * Content was unsuccessfully resolved due to\r\n * unknown reasons.\r\n */\r\n Unknown = 'UNKNOWN',\r\n\r\n /**\r\n * Content was successfully resolved.\r\n */\r\n Resolved = 'RESOLVED',\r\n\r\n /**\r\n * Content was not found.\r\n */\r\n NotFound = 'NOTFOUND',\r\n\r\n /**\r\n * Request needs to be authorized to be able to\r\n * resolve the content.\r\n */\r\n Unauthorized = 'UNAUTHORIZED',\r\n\r\n /**\r\n * Request was authorized but didn't have sufficient\r\n * access rights to be able to resolve the content.\r\n */\r\n AccessDenied = 'ACCESSDENIED',\r\n}\r\n\r\n/**\r\n * Interface describing resolved content.\r\n *\r\n * @typeparam T - Type of content that is being resolved.\r\n */\r\nexport interface ResolvedContent {\r\n /**\r\n * Content that was resolved. Can be undefined if no\r\n * content was resolved\r\n */\r\n content?: T\r\n\r\n /**\r\n * Branch that was resolved.\r\n */\r\n branch?: string\r\n\r\n /**\r\n * Status of the resolved content.\r\n */\r\n status: ResolvedContentStatus\r\n\r\n /**\r\n * Context mode the content was resolved in.\r\n */\r\n mode: ContextMode\r\n\r\n /**\r\n * Rremaining path of the URL if the content was partially matched.\r\n */\r\n remainingPath?: string\r\n\r\n /**\r\n * Identifier of the site the content belongs to.\r\n */\r\n siteId?: string\r\n\r\n /**\r\n * Identifier of the start page the content belongs to.\r\n */\r\n startPageId?: string\r\n}\r\n\r\n/**\r\n * Interface describing a content resolving error.\r\n */\r\nexport type ContentResolverError = {\r\n /**\r\n * Message describing the error.\r\n */\r\n errorMessage?: string\r\n}\r\n\r\n/**\r\n * Class for resolving content.\r\n */\r\nexport class ContentResolver {\r\n readonly #api: ApiClient\r\n\r\n /**\r\n * Constructs an instance of ContentResolver.\r\n *\r\n * @param config - Optional configuration to use. The configuration is\r\n * combined with the default configuration specified in defaultConfig.\r\n */\r\n constructor(config?: Partial) {\r\n this.#api = new ApiClient({ ...defaultConfig, ...config })\r\n }\r\n\r\n /**\r\n * Resolve content from an URL.\r\n *\r\n * @param url - URL to resolve.\r\n * @param matchExact - Match the URL exactly or patially.\r\n * @returns A promise with a ResolvedContent regardless the content was successfully resolved or not.\r\n * Check the status property whether the resolving was successful.\r\n * If the service returned a server error, the promise is rejected with a ContentResolverError.\r\n */\r\n resolveContent(url: string, matchExact: boolean): Promise> {\r\n const parameters = {\r\n contentUrl: url,\r\n matchExact: matchExact,\r\n config: store.state.cmsDataModel.configuration?.blockId ?? '',\r\n }\r\n\r\n const headers = {\r\n ContentLanguage: store.state.cmsDataModel.language,\r\n }\r\n\r\n return new Promise>((resolve, reject) => {\r\n this.#api\r\n .get('', parameters, headers)\r\n .then((response: ApiResponse) => {\r\n const contentData = response.data as T | undefined\r\n let status = ResolvedContentStatus.Unknown\r\n let content: T | undefined\r\n\r\n switch (response.status) {\r\n case 401:\r\n status = ResolvedContentStatus.Unauthorized\r\n break\r\n case 403:\r\n status = ResolvedContentStatus.AccessDenied\r\n break\r\n case 404:\r\n status = ResolvedContentStatus.NotFound\r\n break\r\n default:\r\n if (contentData != null && contentData != undefined) {\r\n status = ResolvedContentStatus.Resolved\r\n content = contentData\r\n } else {\r\n status = ResolvedContentStatus.NotFound\r\n }\r\n break\r\n }\r\n\r\n const result: ResolvedContent = {\r\n content: content,\r\n branch: response.headers.get('x-epi-branch'),\r\n status: status,\r\n // eslint-disable-next-line\r\n mode:\r\n (ContextMode)[response.headers.get('x-epi-contextmode') ?? ''] ?? ContextMode.Default,\r\n remainingPath: response.headers.get('x-epi-remainingroute'),\r\n siteId: response.headers.get('x-epi-siteid'),\r\n startPageId: response.headers.get('x-epi-startpageguid'),\r\n }\r\n\r\n resolve(result)\r\n })\r\n .catch((error: ApiError) => {\r\n reject(mapToError(error))\r\n })\r\n })\r\n }\r\n}\r\n\r\nfunction mapToError(error: ApiError): ContentResolverError {\r\n return {\r\n errorMessage: error.statusText,\r\n }\r\n}\r\n","/*\r\n * The module that is responsible for handling the state of the current content\r\n * that is being either viewed or edited. This module will handle talking to\r\n * the API when the model needs to be updated when navigating or editing the\r\n * site.\r\n */\r\n\r\n/* eslint-disable */\r\nimport { ContentResolver, ResolvedContent, ResolvedContentStatus } from '../../episerver/ContentResolver'\r\nimport { ContentData, PageData } from '../../episerver/models'\r\nimport { ActionTree, Module, MutationTree, GetterTree } from 'vuex'\r\nimport { defaultCmsConfig as config } from '../../config'\r\nimport { isEmpty } from 'lodash-es'\r\n\r\nexport type CmsDataModelState = {\r\n model: ContentData | Record\r\n configuration: ContentData | Record\r\n language: string\r\n modelLoaded: boolean\r\n status: ResolvedContentStatus\r\n}\r\n\r\nconst UPDATE_MODEL_BY_URL = config.store.cmsDataModel.actions.UPDATE_MODEL_BY_URL\r\n\r\nconst UPDATE_MODEL = config.store.cmsDataModel.mutations.UPDATE_MODEL\r\n\r\nconst state: CmsDataModelState = {\r\n model: {},\r\n configuration: {},\r\n language: '',\r\n modelLoaded: false,\r\n status: ResolvedContentStatus.Unknown,\r\n}\r\n\r\nconst mutations: MutationTree = {\r\n [UPDATE_MODEL](state: CmsDataModelState, payload: ResolvedContent) {\r\n state.model = payload.content || {}\r\n\r\n if (!isEmpty(payload.content?.frontendConfiguration)) {\r\n state.configuration = payload.content?.frontendConfiguration || {}\r\n }\r\n\r\n if (payload.content?.language?.currentLanguage) {\r\n state.language = payload.content?.language.currentLanguage\r\n }\r\n\r\n state.modelLoaded = payload.status === ResolvedContentStatus.Resolved\r\n state.status = payload.status\r\n },\r\n}\r\n\r\nconst actions: ActionTree = {\r\n async [UPDATE_MODEL_BY_URL]({ commit }, url: string) {\r\n const contentResolver = new ContentResolver()\r\n\r\n return contentResolver\r\n .resolveContent(url, true)\r\n .then((resolvedContent) => {\r\n commit(UPDATE_MODEL, { ...resolvedContent })\r\n\r\n const context = {\r\n isEditable: resolvedContent.mode === 'EDIT',\r\n inEditMode: resolvedContent.mode === 'EDIT',\r\n }\r\n\r\n commit(config.store.cmsContext.mutations.UPDATE_CONTEXT, context)\r\n })\r\n .catch(() =>\r\n commit<{ type: string; status: ResolvedContentStatus }>({\r\n type: UPDATE_MODEL,\r\n status: ResolvedContentStatus.Unknown,\r\n })\r\n )\r\n },\r\n}\r\n\r\nconst getters: GetterTree = {\r\n language: (state: CmsDataModelState) => {\r\n return state.model.language\r\n },\r\n model: (state: CmsDataModelState) => {\r\n return state.model\r\n },\r\n config: (state: CmsDataModelState) => {\r\n return state.configuration\r\n },\r\n modelLoaded: (state: CmsDataModelState) => {\r\n return state.modelLoaded\r\n },\r\n}\r\n\r\nexport default {\r\n state,\r\n mutations,\r\n actions,\r\n getters,\r\n}\r\n","/*\r\n * The module responsible to handling Episerver specific state that is relevant\r\n * when editing content in edit mode.\r\n */\r\n\r\nimport { MutationTree } from 'vuex'\r\nimport { defaultCmsConfig } from '@/config'\r\n\r\n// Mutation for the epiContext module\r\nconst UPDATE_CONTEXT = defaultCmsConfig.store.cmsContext.mutations.UPDATE_CONTEXT\r\n\r\nexport type CmsContextState = {\r\n inEditMode: boolean\r\n isEditable: boolean\r\n}\r\n\r\nconst state: CmsContextState = {\r\n inEditMode: false,\r\n isEditable: false,\r\n}\r\n\r\nconst mutations: MutationTree = {\r\n [UPDATE_CONTEXT](state: CmsContextState, newContext: CmsContextState): void {\r\n state.isEditable = newContext.isEditable\r\n state.inEditMode = newContext.inEditMode\r\n },\r\n}\r\n\r\nexport default {\r\n state,\r\n mutations,\r\n}\r\n","import { createStore } from 'vuex'\r\nimport cmsDataModel from './modules/cmsDataModel'\r\nimport cmsContext from './modules/cmsContext'\r\n// import search from './modules/search';\r\nimport { CmsContextState, CmsDataModelState } from './modules'\r\n\r\nexport type CmsRootState = {\r\n cmsContext: CmsContextState\r\n cmsDataModel: CmsDataModelState\r\n // search: SearchState,\r\n isMenuOpen: boolean\r\n windowWidth: number\r\n scrollPosition: number\r\n isTouchDevice: boolean\r\n allowTracking: boolean\r\n}\r\n\r\nconst rootState = {\r\n isMenuOpen: false,\r\n windowWidth: 0,\r\n scrollPosition: 0,\r\n isTouchDevice: false,\r\n allowTracking: false,\r\n} as CmsRootState\r\n\r\nexport default createStore({\r\n state: rootState,\r\n mutations: {\r\n toggleMenu(state, payload) {\r\n state.isMenuOpen = payload\r\n },\r\n setWindowWidth(state, payload) {\r\n state.windowWidth = payload\r\n },\r\n setScrollPosition(state, payload) {\r\n state.scrollPosition = payload\r\n },\r\n setDeviceType(state, payload) {\r\n state.isTouchDevice = payload\r\n },\r\n setAllowTracking(state, payload) {\r\n state.allowTracking = payload\r\n },\r\n },\r\n actions: {},\r\n modules: {\r\n cmsContext,\r\n cmsDataModel,\r\n // search\r\n },\r\n})\r\n","/* eslint-disable */\r\n/**\r\n * The directive `v-epi-edit` is used similarly to @Html.EditAttributes() in\r\n * Razor views. It enables On-Page Editing on elements using the `data-epi-edit`\r\n * property (introduced in Episerver CMS UI 11.X.0) and disables the DOM\r\n * updating from the CMS so that Vue can keep the responsibility over the DOM.\r\n *\r\n * It's enabled by the `isEditable` value that is stored in the Vuex store, but\r\n * can be overwritten by a component having a property named\r\n * `epiDisableEditing` being true.\r\n *\r\n * Usage can be found on most Vue components, such as ArtistDetailsPage.vue.\r\n */\r\n\r\nimport store from '@/store'\r\nfunction toggleEditAttributes(el: any, binding: any): void {\r\n const siteIsEditable = store.state.cmsContext.isEditable\r\n const componentIsEditable = !binding.instance.epiDisableEditing\r\n\r\n if (siteIsEditable && componentIsEditable) {\r\n el.setAttribute('data-epi-edit', binding.value)\r\n } else {\r\n el.removeAttribute('data-epi-edit')\r\n }\r\n}\r\n\r\nexport default {\r\n beforeMount: toggleEditAttributes,\r\n updated: toggleEditAttributes,\r\n}\r\n","/* eslint-disable */\r\n/*\r\n USAGE:\r\n 1. // offset intersection observer trigger, use px or % of element\r\n 2. // use \"intersecting\" event to fire method when element in viewport\r\n 3. // add custom animation to element when enter viewport\r\n - \"animate\"-class will be added to element, animation-class will be added to element when entering viewport, \"fade\" in this ex.\r\n*/\r\n\r\nconst initIntersectionObserver = (el: any, binding: any, value: any) => {\r\n if (/\\S+/.test(value)) {\r\n const observer = new IntersectionObserver(\r\n (entries) => {\r\n entries.forEach((entry) => {\r\n if (binding.value && binding.value.animate) el.classList.add('animate')\r\n\r\n if (entry && entry.isIntersecting) {\r\n if (binding.value && binding.value.animate) el.classList.add(binding.value.animation)\r\n\r\n const event = new CustomEvent('intersecting')\r\n el.dispatchEvent(event)\r\n\r\n observer.disconnect()\r\n }\r\n })\r\n },\r\n {\r\n rootMargin: binding.value && binding.value.offset ? `0px 0px ${binding.value.offset} 0px` : '0px',\r\n }\r\n )\r\n observer.observe(el)\r\n el.$inview = observer\r\n }\r\n}\r\n\r\nexport default function (Vue: any) {\r\n Vue.directive('inview', {\r\n mounted(el: any, binding: any, { value }: any) {\r\n initIntersectionObserver(el, binding, { value })\r\n },\r\n updated(el: any, binding: any, { value }: any) {\r\n if (el.$inview) el.$inview.unobserve(el)\r\n initIntersectionObserver(el, binding, { value })\r\n },\r\n beforeUnmount(el: any) {\r\n if (el.$inview) el.$inview.unobserve(el)\r\n },\r\n })\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","import { computed } from 'vue'\r\nimport { useStore } from 'vuex'\r\n\r\nconst mapState = () => {\r\n const store = useStore()\r\n return Object.fromEntries(Object.keys(store.state).map((key) => [key, computed(() => store.state[key])]))\r\n}\r\n\r\nconst mapGetters = () => {\r\n const store = useStore()\r\n return Object.fromEntries(\r\n Object.keys(store.getters).map((getter) => [getter, computed(() => store.getters[getter])])\r\n )\r\n}\r\n\r\nexport { mapState, mapGetters }\r\n","\r\n\r\n\r\n\r\n\r\n","import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'\r\nimport CmsPageComponentSelector from '@/components/CmsPageComponentSelector/CmsPageComponentSelector.vue'\r\nimport DocsPage from '@/views/pages/Docs.vue'\r\nimport { defaultCmsConfig } from '@/config'\r\nimport store from '@/store'\r\nimport { PageData } from '@/episerver/models'\r\n\r\nconst routes: Array = [\r\n {\r\n name: 'page-component-selector',\r\n path: '/:pathMatch(.*)',\r\n component: CmsPageComponentSelector,\r\n },\r\n]\r\n\r\nif (import.meta.env.DEV) {\r\n routes.push({\r\n name: 'docs',\r\n path: '/docs',\r\n component: DocsPage,\r\n })\r\n}\r\n\r\nconst router = createRouter({\r\n history: createWebHistory(),\r\n routes,\r\n scrollBehavior(to, from, savedPosition) {\r\n // return to scrolled position using browser history back\r\n return new Promise((resolve) => {\r\n setTimeout(() => {\r\n let position = { left: 0, top: 0 }\r\n if (savedPosition) position = savedPosition\r\n resolve(position)\r\n }, 320) // match page transition duration + small render delay for consistent positioning\r\n })\r\n },\r\n})\r\n\r\nrouter.beforeEach((to, from, next) => {\r\n // URL is updated by vue-route-sync, and when time travelling with the\r\n // debugger we don't want to trigger a model commit as the model is already\r\n // part of the store holding the url update.\r\n if (to.name === 'page-component-selector' && (store.state.cmsDataModel.model as PageData).url !== to.fullPath) {\r\n store.dispatch(defaultCmsConfig.store.cmsDataModel.actions.UPDATE_MODEL_BY_URL, to.fullPath).then(() => {\r\n switch (store.state.cmsDataModel.status) {\r\n case 'NOTFOUND':\r\n case 'UNAUTHORIZED':\r\n case 'ACCESSDENIED':\r\n default:\r\n }\r\n })\r\n }\r\n\r\n // set timing marker for page speed tracking between routes\r\n // eslint-disable-next-line\r\n if (store.state.allowTracking && (window as any).dataLayer) window.performance.mark('betweenRoutesMark')\r\n\r\n next()\r\n})\r\n\r\nrouter.afterEach(() => {\r\n if (store.state.isMenuOpen) store.commit('toggleMenu', false)\r\n})\r\n\r\nexport default router\r\n","import { ApplicationInsights } from '@microsoft/applicationinsights-web'\r\nimport { App } from 'vue'\r\nimport { Router } from 'vue-router'\r\n\r\n/* eslint-disable */\r\nfunction createAppInsights(options: AppInsightsOptions) {\r\n const dataAppInsightsKey = document.querySelector('#app')?.getAttribute('data-appinsights-key') ?? ''\r\n const appInsights = new ApplicationInsights({\r\n config: {\r\n instrumentationKey: options.instrumentationKey ?? dataAppInsightsKey,\r\n //enabling this causes double tracking of a pageview\r\n enableAutoRouteTracking: false,\r\n },\r\n })\r\n\r\n appInsights.loadAppInsights()\r\n\r\n return appInsights\r\n}\r\n\r\nexport default function install(app: App, options: AppInsightsOptions) {\r\n const appInsights = createAppInsights(options)\r\n\r\n options.router.afterEach(async (to, from) => {\r\n //this is required for the DXP billing\r\n appInsights.trackPageView({\r\n name: document.title,\r\n refUri: from.fullPath,\r\n })\r\n })\r\n app.provide('appInsights', appInsights)\r\n}\r\n\r\nexport interface AppInsightsOptions {\r\n instrumentationKey?: string\r\n router: Router\r\n}\r\n","/*\r\n * Context flags that are useful to enable properly working On-Page Editing.\r\n * Sets the context in the vuex store to be used on every component that is\r\n * interested.\r\n *\r\n * These values are `false` by default and will be updated when the page has\r\n * finished loading. See the event handler at the bottom of the page.\r\n *\r\n * Also registers the `contentSaved` event that will update\r\n * the model in the store during editing.\r\n */\r\n\r\nimport store from '@/store'\r\nimport { defaultCmsConfig } from './config'\r\n\r\nfunction setContext() {\r\n // The `epiReady` event only has `isEditable`, but the epi object has both.\r\n const context = {\r\n inEditMode: window.epi.inEditMode,\r\n isEditable: window.epi.isEditable,\r\n }\r\n\r\n // Make the context available to all Vue components.\r\n store.commit(defaultCmsConfig.store.cmsContext.mutations.UPDATE_CONTEXT, context)\r\n\r\n // If we're in an editable context we want to update the model on every change by the editor\r\n if (window.epi.isEditable) {\r\n window.epi.subscribe('contentSaved', (message) => {\r\n store.dispatch(defaultCmsConfig.store.cmsDataModel.actions.UPDATE_MODEL_BY_URL, message.url)\r\n })\r\n }\r\n}\r\n\r\n// Listen to the `epiReady` event to update the `context` property.\r\nwindow.addEventListener('load', () => {\r\n // Expect `epi` to be there after the `load` event. If it's not then we're\r\n // not in any editing context.\r\n if (!window.epi) {\r\n return\r\n }\r\n\r\n // Check that ready is an actual true value (not just truthy).\r\n if (window.epi.ready === true) {\r\n // `epiReady` already fired.\r\n setContext()\r\n\r\n // The subscribe method won't be available in View mode.\r\n } else if (window.epi.subscribe) {\r\n // Subscribe if the `epiReady` event hasn't happened yet.\r\n window.epi.subscribe('epiReady', () => setContext())\r\n }\r\n})\r\n","\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","/* eslint-disable no-unused-vars */\r\nimport { createApp } from 'vue'\r\nimport { toPairs } from 'lodash-es'\r\nimport InlineSvg from 'vue-inline-svg'\r\nimport App from '@/App.vue'\r\nimport EpiEdit from '@/directives/epiEdit'\r\nimport inView from '@/directives/inView'\r\nimport router from '@/router'\r\nimport store from '@/store'\r\nimport appInsights, { AppInsightsOptions } from './appinsights'\r\nimport '@/epiBootstrap'\r\nimport { defaultCmsConfig } from '@/config'\r\nimport SmartLink from '@/components/SmartLink/SmartLink.vue'\r\nimport SmartImage from '@/components/SmartImage/SmartImage.vue'\r\nimport SmartSvg from '@/components/SmartSvg/SmartSvg.vue'\r\ndefaultCmsConfig.contentArea.rootHtmlTag = 'section'\r\n\r\nimport '/src/assets/scss/framework.scss'\r\n\r\nconst app = createApp(App)\r\n .directive('epi-edit', EpiEdit)\r\n .use(store)\r\n .use(router)\r\n .use(inView)\r\n .use(appInsights, { router } as AppInsightsOptions)\r\n .component('inline-svg', InlineSvg)\r\n .component('smart-link', SmartLink)\r\n .component('smart-image', SmartImage)\r\n .component('smart-svg', SmartSvg)\r\n\r\n// Register all Episerver view components globally.\r\n// Otherwise we need to register all components manually here in main.js.\r\nconst blocks = import.meta.globEager('./views/blocks/*.vue')\r\nconst pages = import.meta.globEager('./views/pages/*.vue')\r\n\r\nconst registerComponents = (components: Object) => {\r\n toPairs(components).forEach(([path, moduleDefinition]) => {\r\n // Get name of component, based on filename\r\n const componentName = path\r\n .split('/')\r\n .pop()!\r\n .replace(/\\.\\w+$/, '')\r\n\r\n // Register component on this Vue instance\r\n // Look for the component options on `.default`, which will\r\n // exist if the component was exported with `export default`,\r\n // otherwise fall back to module's root.\r\n app.component(componentName, moduleDefinition.default || moduleDefinition)\r\n })\r\n}\r\n\r\n;[blocks, pages].forEach((comps) => {\r\n registerComponents(comps)\r\n})\r\n\r\napp.mount('#app')\r\n\r\ndeclare global {\r\n interface Window {\r\n epi: {\r\n inEditMode: boolean\r\n isEditable: boolean\r\n subscribe(eventName: string, callback: (message: { url: string }) => void): void\r\n ready: boolean\r\n }\r\n }\r\n}\r\n"],"names":["mapToError","config","state","mutations","CmsPageComponentSelector","ApplicationInsights","App","appInsights","InlineSvg","SmartLink","SmartImage","SmartSvg"],"mappings":"y1CAAA,KAAM,IAAI,UAAoB,CAC1B,KAAM,GAAU,SAAS,cAAc,MAAM,EAAE,QAC/C,GAAI,GAAW,EAAQ,UAAY,EAAQ,SAAS,eAAe,EAC/D,OAEJ,SAAW,KAAQ,UAAS,iBAAiB,2BAA2B,EACpE,EAAe,CAAI,EAEvB,GAAI,kBAAiB,AAAC,GAAc,CAChC,SAAW,KAAY,GACnB,GAAI,EAAS,OAAS,YAGtB,SAAW,KAAQ,GAAS,WACxB,AAAI,EAAK,UAAY,QAAU,EAAK,MAAQ,iBACxC,EAAe,CAAI,CAGvC,CAAK,EAAE,QAAQ,SAAU,CAAE,UAAW,GAAM,QAAS,EAAI,CAAE,EACvD,WAAsB,EAAQ,CAC1B,KAAM,GAAY,CAAA,EAClB,MAAI,GAAO,WACP,GAAU,UAAY,EAAO,WAC7B,EAAO,gBACP,GAAU,eAAiB,EAAO,gBACtC,AAAI,EAAO,cAAgB,kBACvB,EAAU,YAAc,UACvB,AAAI,EAAO,cAAgB,YAC5B,EAAU,YAAc,OAExB,EAAU,YAAc,cACrB,CACV,CACD,WAAwB,EAAM,CAC1B,GAAI,EAAK,GAEL,OACJ,EAAK,GAAK,GAEV,KAAM,GAAY,EAAa,CAAI,EACnC,MAAM,EAAK,KAAM,CAAS,CAC7B,CACL,EAAE,AAAoB,GAAG,yOCxCzB,YAA0B,EAAoB,CAC1C,MAAO,kBAAO,gBAAiB,sBACnC,CAEA,YAA0B,EAAoB,CAC1C,MAAI,IAAa,CAAK,GAAK,kBAAO,iBAAkB,OACzC,mBAEJ,kBAAO,gBAAiB,MACnC,CAEA,YAAwB,EAAoB,CACxC,KAAM,GAAa,CAAA,EAEf,MAAA,GAAM,eAAiB,UACZ,EAAA,KAAK,MAAM,EAAM,cAAc,EAE1C,EAAW,KAAK,MAAM,EAGtB,EAAM,YAAc,WACT,EAAA,KAAK,MAAM,EAAM,WAAW,EAGpC,EAAW,KAAK,GAAG,CAC9B,CAEA,YAAsB,EAAqB,CAChC,MAAA,CAAC,CAAC,YAAO,aACpB,CAEA,YAAiC,EAAoB,CACjD,MAAO,kBAAO,uBAAwB,EAC1C,CAEA,YAAiC,EAAoB,CACjD,MAAO,kBAAO,uBAAwB,EAC1C,CAEA,YAA4B,EAAY,EAA2B,CAC/D,GAAI,IAAU,OAAkB,MAAA,GAEhC,GAAI,GAAO,GAEX,MAAI,GAAM,UAAY,EAAM,WAAa,OACrC,GAAQ,EAAM,SAEV,AAAA,IAAgB,kBAAoB,IAAgB,aAE5C,GAAA,mCAEA,GAAA,SAIZ,EAAM,UAAY,EAAM,WAAa,IACrC,IAAQ,IAAI,EAAM,YAGlB,EAAM,gBAAkB,EAAM,iBAAmB,QAAU,EAAM,WAAa,IAC9E,IAAQ,IAAI,EAAM,sBAGlB,EAAM,gBAAkB,EAAM,WAAa,IAC3C,IAAQ,IAAI,EAAM,sBAGlB,EAAM,gBAAkB,EAAM,iBAAmB,QACjD,IAAQ,IAAI,EAAM,sBAGlB,EAAM,gBACN,IAAQ,IAAI,EAAM,sBAGf,CACX,CAGA,YAA2B,EAAyB,CAChD,MAAO,GAAM,OACjB,CCmBO,KAAM,GAA8B,CACvC,kBAAmB,CACf,sBAAuB,eACvB,uBAAwB,cAC5B,EACA,YAAa,CACT,SAAU,cACV,aAAc,kBACd,YAAa,MACb,YAAa,KACjB,EACA,KAAM,CACF,SAAU,EACd,EACA,MAAO,CACH,WAAY,CACR,UAAW,CACP,eAAgB,2BACpB,CACJ,EACA,aAAc,CACV,QAAS,CACL,oBAAqB,kCACzB,EACA,UAAW,CACP,aAAc,2BAClB,CACJ,CACJ,CACJ,8CCtHM,EAAuB,AAAC,GAEnB,MADU,GAAiB,EAAM,WAAW,GACxB,SAAW,EAAM,YAAc,EAAiB,kBAAkB,yNC4C3F,EAAQ,IAKR,EAAa,EAAS,IAAM,EAAM,MAAM,WAAW,UAAU,ikCC/DnE,GAAA,IAAe,CAAC,EAAK,IAAU,CAC7B,KAAM,GAAS,EAAI,WAAa,EAChC,SAAW,CAAC,EAAK,IAAQ,GACvB,EAAO,GAAO,EAEhB,MAAO,EACT,s/QC+BM,EAAQ,IAKR,EAAqB,CACvB,CAAE,KAAM,SAAU,GAAI,QAAS,GAAI,QAAS,EAC5C,CAAE,KAAM,QAAS,GAAI,UAAW,GAAI,OAAQ,EAC5C,CAAE,KAAM,QAAS,GAAI,OAAQ,GAAI,MAAO,EACxC,CAAE,KAAM,YAAa,GAAI,UAAQ,GAAI,QAAS,EAC9C,CAAE,KAAM,iBAAkB,GAAI,QAAS,GAAI,WAAY,EACvD,CAAE,KAAM,YAAa,GAAI,OAAQ,GAAI,MAAO,CAAA,EAG1C,EAAS,EAAS,IAAe,OACnC,MAAO,CAAC,GAAQ,KAAM,QAAN,cAAa,KAAK,CAAA,CACrC,EAEK,EAAW,EAAS,IACf,EAAM,MAAM,YAAc,IAAM,MAAQ,KAClD,EAEK,EAAc,EAAS,IAAW,CACpC,GAAI,CAAE,SAAQ,QAAO,QAAO,YAAW,iBAAgB,aAAc,EAAM,MAE3E,SAAY,EAAW,CAAS,EAChC,EAAiB,EAAW,CAAc,EAEpC,EAAA,MAAM,cACL,EAAQ,mBAAmB,sBAA0B,qCAAyC,QAC9F,EAAQ,mBAAmB,MAAU,QAExC,EAAc,OACd,GAAS,gBAAgB,MAAW,QAE9B,EAAA,MAAM,cACL,EAAQ,gBAAgB,sBAA0B,qCAAyC,QAC3F,EAAQ,gBAAgB,MAAU,SAGtC,CAAE,SAAQ,QAAO,QAAO,YAAW,iBAAgB,YAAU,CACvE,EAEK,EAAc,EAAS,IAClB,EAAM,MAAM,aAAa,SAAS,UAAU,EAAG,CAAC,CAC1D,EAEK,EAAW,EAAS,IACf,EAAM,MAAM,aAAa,MAAM,SAAS,eAClD,EAEK,EAAgB,EAAS,IACpB,EAAM,MAAM,aACtB,EAEK,EAAa,AAAC,GAAqD,CACrE,GAAI,EAAC,EACL,MAAO,IAAI,MAAK,CAAQ,EAAE,mBAAmB,EAAS,MAAO,CACzD,IAAK,UACL,MAAO,QACP,KAAM,SAAA,CACT,CAAA,usECtCC,EAAQ,IAKV,GAAA,GAAS,EAAI,EAAK,EAClB,EAAoB,EAAI,CAAC,EAE7B,KAAM,GAAe,IAAM,CACvB,AAAI,EAAkB,QAAU,OAAO,YAAc,EAAM,MAAM,eAInD,GAAA,EAEZ,EAAgB,IAAM,CAGpB,GAAA,GAAK,OAAO,YAAc,IAC9B,SAAS,gBAAgB,MAAM,YAAY,OAAQ,GAAG,KAAM,CAAA,EAE1D,EAA0B,IAAM,CAClC,EAAkB,MAAQ,OAAO,WACnB,GAAA,EAGlB,GAAU,IAAM,CACE,IACd,EAAkB,MAAQ,OAAO,WAC1B,OAAA,iBAAiB,SAAU,CAAY,EACvC,OAAA,iBAAiB,oBAAqB,CAAuB,CAAA,CACvE,EAED,GAAY,IAAM,CACP,OAAA,oBAAoB,SAAU,CAAY,EAC1C,OAAA,oBAAoB,oBAAqB,CAAuB,CAAA,CAC1E,EAEK,KAAA,GAAW,EAAS,IACf,EAAO,KACjB,EAEK,EAAY,AAAC,GAAiB,CAChC,EAAO,MAAQ,CAAA,EAGb,EAAS,EAAS,IAAM,SAC1B,MAAO,MAAM,QAAN,cAAa,IAAI,OAAQ,MAAM,QAAN,cAAa,IAAI,KAAK,IAAA,CACzD,EAEK,EAAS,EAAS,IAAM,OAC1B,MAAO,CAAC,GAAQ,KAAM,QAAN,cAAa,KAAK,CAAA,CACrC,EACK,EAAW,EAAS,IACf,EAAM,MAAM,YAAc,GACpC,EACK,EAAkB,EAAS,IACtB,EAAM,MAAM,aAAa,MAAM,YAAY,YAAkB,IAAA,WACvE,EAEK,EAAY,EAAS,IAAM,OACtB,MAAA,KAAM,QAAN,QAAa,SAAW,OAAS,MAAA,CAC3C,6qDCtGK,EAAS,EAAS,IAAM,OAC1B,MAAO,CAAC,GAAQ,KAAM,QAAN,cAAa,KAAK,CAAA,CACrC,EAEK,EAAQ,EAAS,IACZ,EAAM,OAAS,EAAM,MAAM,QAAU,UAAY,EAAM,MAAM,MAAQ,IAC/E,0lBCGK,EAAY,EAAS,IAAM,SAC7B,MAAO,MAAM,QAAN,cAAa,gBAAiB,UAAY,OAAS,MAAM,KAAM,QAAN,cAAa,cAAA,CAChF,EAEK,EAAe,EAAS,IAAM,SAChC,MAAO,MAAM,QAAN,cAAa,mBAAoB,UAAY,OAAS,MAAM,KAAM,QAAN,cAAa,iBAAA,CACnF,EAEK,EAAc,AAAC,GACV,IAAa,UAAY,uBAAyB,ilCCMvD,EAAQ,IAKR,EAAe,EAAI,WAAW,EAC9B,EAAQ,CAAC,YAAa,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAE3D,EAAa,EAAS,IAAM,EAAM,MAAM,WAAW,UAAU,EAE7D,EAAqB,CAAC,EAAkB,EAAc,IAAgC,CACxF,GAAI,IAAU,OAAkB,MAAA,GAEhC,GAAI,GAAO,GAEX,MAAI,KAAS,YACD,GAAA,EAEJ,AAAA,IAAgB,kBAAoB,IAAgB,aAE5C,GAAA,mCAEA,GAAA,SAIZ,EAAM,UAAY,IAAS,IAC3B,IAAQ,IAAI,EAAM,YAGlB,EAAM,gBAAkB,EAAM,iBAAmB,QAAU,IAAS,IACpE,IAAQ,IAAI,EAAM,sBAGlB,EAAM,gBAAkB,IAAS,IACjC,IAAQ,IAAI,EAAM,sBAGlB,EAAM,gBAAkB,EAAM,iBAAmB,QACjD,IAAQ,IAAI,EAAM,sBAGlB,EAAM,gBACN,IAAQ,IAAI,EAAM,sBAGf,CAAA,u5BC1BL,EAAQ,EAAI,EAAK,EAEjB,EAAY,EAAS,IAAM,WACtB,MAAA,MAAM,QAAN,cAAa,MAAO,MAAM,QAAN,cAAa,IAAI,OAAQ,MAAM,QAAN,cAAa,IAAI,MAAA,CACxE,EAEK,EAAY,EAAS,IAAM,WAC7B,MAAO,MAAM,QAAN,cAAa,MAAO,MAAM,QAAN,cAAa,IAAI,OAAQ,MAAM,QAAN,cAAa,IAAI,KAAK,KAAM,EAAM,MAAM,IAAI,KAAK,IAAM,GAAA,CAC9G,EACK,EAAc,EAAS,IAAM,SAC/B,MAAO,MAAM,QAAN,cAAa,YAAa,UAAY,KAAM,QAAN,cAAa,SAAW,wBAAA,CACxE,EACK,EAAmB,EAAS,IAAM,WAC7B,MAAA,MAAM,QAAN,cAAa,MAAO,MAAM,QAAN,cAAa,IAAI,WAAY,KAAM,QAAN,cAAa,IAAI,UAAY,aAAA,CACxF,6rECnEK,EAAQ,KACR,EAAQ,IACR,EAAY,IAEZ,EAAgB,AAAC,GAAkB,CACrC,GAAI,GAAa,GAEjB,SAAW,KAAO,QAAO,KAAK,CAAK,EACjB,GAAA,GAAG,MAAQ,EAAM,OAGzB,EAAA,MAAQ,EAAU,MAAM,OAAO,EAAG,CAAK,EAAI,EAAa,EAAU,MAAM,OAAO,CAAK,CAAA,EAG5F,EAAW,AAAC,GAAgB,CACxB,MAAA,CAAG,EACJ,KAAK,AAAC,GAAM,EAAE,MAAM,EACpB,KAAK,AAAC,GAAS,SACZ,EAAU,MAAQ,EAElB,KAAM,GAAW,EAAK,QAAQ,OAAO,EAAI,EACrC,AAAA,EAAW,IAAM,GAEjB,EAAc,CAAQ,EAI1B,KAAM,QAAN,QAAa,mBAAmB,cAAe,EAAU,OACzD,KAAM,QAAN,QAAa,QAAO,CACvB,EACA,MAAM,QAAQ,MAAM,KAAK,OAAO,CAAC,CAAA,EAG1C,UAAU,IAAM,CACZ,EAAS,EAAM,GAAG,CAAA,CACrB,oLCPG,GAAA,GAAQ,EAAI,CAAC,EACjB,KAAM,GAAS,IAET,EAAW,EAAS,IACf,EAAM,MAAQ,GAAK,GAAK,EAAM,MAAQ,GAAK,EACrD,EAEK,EAAe,IAAM,OAEjB,EAAA,MAAQ,KAAO,QAAP,cAAc,IAAI,WAAA,EAGpC,UAAU,IAAM,CACL,OAAA,iBAAiB,SAAU,CAAY,EACjC,GAAA,CAChB,EAED,GAAgB,IAAM,CACX,OAAA,oBAAoB,SAAU,CAAY,CAAA,CACpD,8/BCzBM,KAAM,IAAuC,CAChD,OAAQ,IACR,oBAAqB,GACrB,oBAAqB,EACzB,iBC5BA,KAAM,GAAQ,IACR,EAAQ,KAER,EAAY,EAAI,EAAI,EAEpB,EAAO,EAAS,IAAM,CAElB,KAAA,CAAE,kBAAiB,eAAc,YAAW,UAAS,UAAS,iBAAkB,EAAM,QAAQ,MAC7F,MAAA,CACH,kBACA,eACA,YACA,UACA,UACA,eAAA,CACJ,CACH,EAEK,EAAe,EAAS,IAEnB,EAAM,QAAQ,MAAM,YAC9B,EAEK,EAAe,IAAM,CACjB,EAAA,OAAO,iBAAkB,OAAO,UAAU,CAAA,EAE9C,EAAe,IAAM,CACvB,EAAM,OAAO,oBAAqB,SAAS,gBAAgB,WAAa,SAAS,KAAK,SAAS,CAAA,EAE7F,EAAiB,IAAM,CAGzB,GAAK,OAAe,oBAAsB,OAAW,OACrD,KAAM,GAAmB,OAAe,kBAAkB,mBAAmB,sBAAsB,EAC7F,EAAA,OAAO,mBAAoB,CAAe,CAAA,EAE9C,EAAgB,IAAM,CACxB,KAAM,GACF,gBAAkB,SAClB,UAAU,eAAiB,GAE1B,UAAkB,iBAAmB,EACpC,SAAA,OAAO,gBAAiB,CAAa,EACpC,CAAA,EAEL,EAAoB,IAAM,CAC5B,GAAI,EAAc,EAAG,OACrB,KAAM,GAAiB,OAAO,WAAa,SAAS,gBAAgB,YACpE,SAAS,gBAAgB,MAAM,YAAY,mBAAoB,GAAG,KAAkB,CAAA,EAElF,EAAc,IAAM,CACtB,SAAS,MAAQ,EAAK,MAAM,UAAY,EAAK,MAAM,UAAY,mBA6BtD,AA3BQ,CACb,CACI,KAAM,cACN,MAAO,EAAK,MAAM,iBAAmB,GACrC,SAAU,MACd,EACA,CACI,KAAM,WACN,MAAO,EAAK,MAAM,cAAgB,GAClC,SAAU,MACd,EACA,CACI,KAAM,WACN,MAAO,EAAK,MAAM,SAAW,EAAK,MAAM,QAAQ,IAAM,EAAK,MAAM,QAAQ,IAAM,GAC/E,SAAU,UACd,EACA,CACI,KAAM,iBACN,MAAO,EAAK,MAAM,eAAiB,GACnC,SAAU,UACd,EACA,CACI,KAAM,WACN,MAAO,EAAK,MAAM,SAAW,GAC7B,SAAU,UACd,CAAA,EAEK,QAAQ,AAAC,GAAS,CACvB,KAAM,GAAU,SAAS,cAAc,QAAQ,EAAK,aAAa,EAAK,QAAQ,EAE9E,GAAK,EAMO,EAAA,aAAa,UAAW,EAAK,KAAK,MANhC,CACN,GAAA,GAAM,SAAS,cAAc,MAAM,EACvC,EAAI,aAAa,EAAK,SAAU,EAAK,IAAI,EACrC,EAAA,aAAa,UAAW,EAAK,KAAK,EAC7B,SAAA,KAAK,YAAY,CAAG,CAAA,CAGjC,CACH,CAAA,EAEC,EAAkB,IAAM,CACpB,KAAA,GAAM,SAAS,cAAc,uBAAuB,EACtD,AAAA,GAAK,EAAI,aAAa,OAAQ,EAAa,MAAM,GAAG,CAAA,EAEtD,EAAgB,IAAM,CAClB,KAAA,GAAY,EAAU,MAAQ,gBAAkB,oBAChD,EAAc,OAAO,YAAY,QAAQ,aAAc,EAAW,KAAK,EAG3E,OAAe,UAAU,KAAK,CAC5B,MAAO,WACP,KAAM,EAAa,MAAM,MAAQ,OAAO,SAAS,SACjD,MAAO,SAAS,MAChB,SAAU,EAAa,MAAM,KAAO,OAAO,SAAS,KACpD,WAAY,EAAY,QAAA,CAC3B,EACI,EAAU,OAET,OAAe,UAAU,KAAK,CAC5B,MAAO,WACP,oBAAqB,CAAA,CACxB,CACL,EAGE,EAAuB,AAAC,GAAsB,CAC1C,KAAA,GAAe,SAAS,cAAc,QAAQ,EACpD,EAAa,UAAY,iCAChB,SAAA,KAAK,YAAY,CAAY,EAEhC,KAAA,GAAsB,SAAS,cAAc,QAAQ,EAC3D,EAAoB,IAAM,GAAG,0EACpB,SAAA,KAAK,YAAY,CAAmB,CAAA,EAGjD,UAAc,IAAM,CACT,OAAA,iBAAiB,SAAU,CAAY,EACvC,OAAA,iBAAiB,SAAU,CAAY,EACvC,OAAA,iBAAiB,gCAAiC,EAAgB,CACrE,KAAM,EAAA,CACT,CAAA,CACJ,EAED,GAAU,IAAM,eACN,KAAA,GAAU,SAAS,eAAe,KAAK,EACvC,EAAY,uBAAS,aAAa,iBAAtB,OAAwC,kCAAxC,OAA4E,GACxF,EACF,uBAAS,aAAa,8BAAtB,OAAqD,uBAArD,OAAqG,GACnG,EAAW,oBAAS,aAAa,mBAAtB,OAA0C,GACrD,EAAA,QAAQ,MAAM,SAAW,EAC/B,GAAc,OAAS,EAAY,EACnC,GAAc,oBAAsB,GACpC,GAAc,oBAAsB,GAKhC,GAAM,MAAM,aAAe,SAAS,SAAS,OAAO,SAAS,aAAa,IAC1E,EAAqB,CAAS,EAGlC,SAAS,mBAAqB,IAAM,CAEhC,AAAI,SAAS,aAAe,YAAY,WAAW,EAAmB,GAAG,EAGzE,EAAU,MAAQ,EAAA,EAGT,IACA,IACE,GAAA,CAClB,EAED,GAAgB,IAAM,CACX,OAAA,oBAAoB,SAAU,CAAY,EAC1C,OAAA,oBAAoB,SAAU,CAAY,CAAA,CACpD,EAGG,GAAA,IAAM,EAAK,MACX,IAAM,CAEU,IACI,IAET,OAAA,YAAY,KAAK,KAAK,EAEzB,EAAM,MAAM,eAAkB,OAAe,WAAyB,GAAA,CAElF,6DCpGO,MAAM,EAAU,CAQnB,YAAY,EAA+B,CAPlC,kBAQU,QAAA,EAAA,EACnB,CAUM,IAAI,EAA8F,mCAA9F,EAAc,EAA4B,CAAA,EAAI,EAAsB,CAAA,EAA0B,CACpG,KAAM,GAAa,GAAO,OAAa,GAAA,OAAQ,EAAM,CAAU,EAEzD,EAAuB,CACzB,OAAQ,MACR,YAAa,UACb,QAAS,KAAM,IAAW,EAAM,EAAS,OAAY,EAAA,CAAA,EAGzD,MAAO,IAAI,SAAqB,CAAC,EAAS,IAAW,CACjD,MAAM,EAAY,CAAO,EACpB,KAAK,AAAO,GAAuB,wBAChC,KAAM,GAAsB,CACxB,GAAI,EAAS,GACb,OAAQ,EAAS,OACjB,WAAY,EAAS,WACrB,WAAa,KACb,KAAM,KAAM,GAAS,KAAK,EAAE,MAAM,IAAM,CAAA,CAAE,CAAA,EAG9C,EAAS,QAAQ,QAAQ,CAAC,EAAe,IAAgB,CAC9C,EAAA,QAAQ,IAAI,EAAK,CAAK,CAAA,CAChC,EAED,EAAQ,CAAM,CAAA,EACjB,EACA,MAAM,AAAC,GAAe,CACZ,EAAAA,GAAW,CAAK,CAAC,CAAA,CAC3B,CAAA,CACR,CACL,GASA,qBAAqB,EAAwB,EAAuC,CACzE,MAAA,CACH,OAAQ,EAAS,EAAO,KAAS,EAAA,OAAA,GAAa,oBAAsB,OAAY,OAChF,OAAQ,EAAS,EAAO,KAAS,EAAA,OAAA,GAAa,oBAAsB,IAAM,MAAA,CAElF,CAQA,kBAAkB,EAA6B,CACpC,MAAA,CACH,kBAAmB,GAAkB,MAAA,CAE7C,CACJ,CA5Ea,cA8Eb,YAA0B,EAAyF,mCAAzF,EAAc,EAAsB,CAAA,EAAI,EAAiD,CACzG,KAAA,GAAS,GAAI,SAEnB,SAAW,KAAQ,GACX,AAAA,EAAQ,KAAU,QACX,EAAA,IAAI,EAAM,EAAQ,EAAK,EAItC,GAAI,EAAO,eAAgB,CACvB,KAAM,GAAc,KAAM,GAAO,eAAe,CAAI,EACpD,AAAI,GACO,EAAA,IAAI,gBAAiB,UAAU,GAAa,CAE3D,CAEO,MAAA,SAAQ,QAAQ,CAAM,CACjC,GAEA,YAAgB,EAAiB,EAAc,EAAmC,CAC9E,AAAI,CAAC,EAAQ,SAAS,GAAG,GAAK,GAAiB,IAAA,KAC3C,EAAK,WAAW,GAAG,GAAU,GAAA,EAAK,UAAU,CAAC,GAE7C,GAAA,GAAQ,OAAO,KAAK,CAAU,EAC7B,OAAO,AAAC,GAAQ,EAAW,KAAS,MAAS,EAC7C,IAAI,AAAC,GAAQ,GAAG,mBAAmB,CAAG,KAAK,mBAAmB,EAAW,EAAI,GAAG,EAChF,KAAK,GAAG,EAET,MAAA,IAAO,GAAQ,IAAM,GAElB,EAAU,EAAO,CAC5B,CAEA,YAAoB,EAAsB,CACtC,KAAM,GAAmB,CAAA,EAErB,MAAA,OAAO,GAAM,MAAS,WACtB,EACK,KAAK,EACL,KAAK,AAAC,GAAmB,CACtB,EAAO,KAAO,CAAA,CACjB,EACA,MAAM,AAAC,GAA4B,CAChC,EAAO,OAAS,EAAc,OAC9B,EAAO,WAAa,EAAc,UAAA,CACrC,EAEL,EAAO,WAAa,EAGjB,CACX,CC1NY,GAAA,KAAA,GAIE,GAAA,QAAA,UAKA,EAAA,QAAA,UAKH,EAAA,KAAA,OAdC,IAAA,IAAA,CAAA,CAAA,ECsBA,IAAA,GAKE,GAAA,QAAA,UAKC,EAAA,SAAA,WAKA,EAAA,SAAA,WAMI,EAAA,aAAA,eAMA,EAAA,aAAA,eA3BP,IAAA,IAAA,CAAA,CAAA,KAsFL,MAAM,EAAgB,CASzB,YAAY,EAAyC,CAR5C,mBASL,QAAA,GAAY,GAAI,IAAU,SAAK,IAAkB,EAAQ,EAC7D,CAWA,eAAsC,EAAa,EAAkD,SACjG,KAAM,GAAa,CACf,WAAY,EACZ,aACA,OAAQ,QAAM,MAAM,aAAa,gBAAzB,cAAwC,UAAxC,OAAmD,EAAA,EAGzD,EAAU,CACZ,gBAAiB,EAAM,MAAM,aAAa,QAAA,EAG9C,MAAO,IAAI,SAA4B,CAAC,EAAS,IAAW,CACxD,OAAA,IACK,IAAI,GAAI,EAAY,CAAO,EAC3B,KAAK,AAAC,GAA0B,SAC7B,KAAM,GAAc,EAAS,KAC7B,GAAI,GAAS,UACT,EAEJ,OAAQ,EAAS,YACR,KACQ,EAAA,eACT,UACC,KACQ,EAAA,eACT,UACC,KACQ,EAAA,WACT,cAEI,AAAA,GAAe,MAAQ,GAAe,KAC7B,GAAA,WACC,EAAA,GAED,EAAA,WAEb,MAGR,KAAM,GAA6B,CAC/B,UACA,OAAQ,EAAS,QAAQ,IAAI,cAAc,EAC3C,SAEA,KACU,MAAa,KAAS,QAAQ,IAAI,mBAAmB,IAAxC,OAA6C,MAA1D,OAAiE,GAAY,QACvF,cAAe,EAAS,QAAQ,IAAI,sBAAsB,EAC1D,OAAQ,EAAS,QAAQ,IAAI,cAAc,EAC3C,YAAa,EAAS,QAAQ,IAAI,qBAAqB,CAAA,EAG3D,EAAQ,CAAM,CAAA,CACjB,EACA,MAAM,AAAC,GAAoB,CACjB,EAAA,GAAW,CAAK,CAAC,CAAA,CAC3B,CAAA,CACR,CACL,CACJ,CA/Ea,eAiFb,YAAoB,EAAuC,CAChD,MAAA,CACH,aAAc,EAAM,UAAA,CAE5B,CCjLA,KAAM,IAAsBC,EAAO,MAAM,aAAa,QAAQ,oBAExD,GAAeA,EAAO,MAAM,aAAa,UAAU,aAEnDC,GAA2B,CAC7B,MAAO,CAAC,EACR,cAAe,CAAC,EAChB,SAAU,GACV,YAAa,GACb,OAAQ,GAAsB,OAClC,EAEMC,GAA6C,EAC9C,IAAc,EAA0B,EAAoC,eACnE,EAAA,MAAQ,EAAQ,SAAW,CAAA,EAE5B,GAAQ,KAAQ,UAAR,cAAiB,qBAAqB,GAC/C,GAAM,cAAgB,MAAQ,UAAR,cAAiB,wBAAyB,CAAA,GAGhE,QAAQ,UAAR,cAAiB,WAAjB,QAA2B,iBACrB,GAAA,SAAW,KAAQ,UAAR,cAAiB,SAAS,iBAGzC,EAAA,YAAc,EAAQ,SAAW,GAAsB,SAC7D,EAAM,OAAS,EAAQ,MAC3B,CACJ,EAEM,GAAkD,EAC7C,IAAqB,EAAY,EAAa,mCAAzB,CAAE,UAAU,EAAa,CAGjD,MAAO,AAFiB,IAAI,MAGvB,eAAe,EAAK,EAAI,EACxB,KAAK,AAAC,GAAoB,CAChB,EAAA,GAAc,MAAK,EAAiB,EAE3C,KAAM,GAAU,CACZ,WAAY,EAAgB,OAAS,OACrC,WAAY,EAAgB,OAAS,MAAA,EAGzC,EAAOF,EAAO,MAAM,WAAW,UAAU,eAAgB,CAAO,CAAA,CACnE,EACA,MAAM,IACH,EAAwD,CACpD,KAAM,GACN,OAAQ,GAAsB,OACjC,CAAA,CACL,CACR,GACJ,EAEM,GAAkD,CACpD,SAAU,AAAC,GACA,EAAM,MAAM,SAEvB,MAAO,AAAC,GACG,EAAM,MAEjB,OAAQ,AAAC,GACE,EAAM,cAEjB,YAAa,AAAC,GACH,EAAM,WAErB,EAEA,GAAe,IAAA,CAAA,MACXC,GAAA,UACAC,GACA,WACA,UACJ,ECvFA,KAAM,IAAiB,EAAiB,MAAM,WAAW,UAAU,eAO7D,GAAyB,CAC3B,WAAY,GACZ,WAAY,EAChB,EAEM,GAA2C,EAC5C,IAAgB,EAAwB,EAAmC,CACxE,EAAM,WAAa,EAAW,WAC9B,EAAM,WAAa,EAAW,UAClC,CACJ,EAEA,GAAe,IAAA,CACX,SACA,YACJ,ECdA,KAAM,IAAY,CACd,WAAY,GACZ,YAAa,EACb,eAAgB,EAChB,cAAe,GACf,cAAe,EACnB,EAEA,GAAA,GAAe,GAA0B,CACrC,MAAO,GACP,UAAW,CACP,WAAW,EAAO,EAAS,CACvB,EAAM,WAAa,CACvB,EACA,eAAe,EAAO,EAAS,CAC3B,EAAM,YAAc,CACxB,EACA,kBAAkB,EAAO,EAAS,CAC9B,EAAM,eAAiB,CAC3B,EACA,cAAc,EAAO,EAAS,CAC1B,EAAM,cAAgB,CAC1B,EACA,iBAAiB,EAAO,EAAS,CAC7B,EAAM,cAAgB,CAC1B,CACJ,EACA,QAAS,CAAC,EACV,QAAS,CACL,cACA,eAEJ,CACJ,CAAC,ECnCD,YAA8B,EAAS,EAAoB,CACjD,KAAA,GAAiB,EAAM,MAAM,WAAW,WACxC,EAAsB,CAAC,EAAQ,SAAS,kBAE9C,AAAI,GAAkB,EACf,EAAA,aAAa,gBAAiB,EAAQ,KAAK,EAE9C,EAAG,gBAAgB,eAAe,CAE1C,CAEA,GAAe,IAAA,CACX,YAAa,GACb,QAAS,EACb,ECpBA,KAAM,IAA2B,CAAC,EAAS,EAAc,IAAe,CAChE,GAAA,MAAM,KAAK,CAAK,EAAG,CACnB,KAAM,GAAW,GAAI,sBACjB,AAAC,GAAY,CACD,EAAA,QAAQ,AAAC,GAAU,CAGnB,GAFA,EAAQ,OAAS,EAAQ,MAAM,SAAY,EAAA,UAAU,IAAI,SAAS,EAElE,GAAS,EAAM,eAAgB,CAC3B,AAAA,EAAQ,OAAS,EAAQ,MAAM,SAAS,EAAG,UAAU,IAAI,EAAQ,MAAM,SAAS,EAE9E,KAAA,GAAQ,GAAI,aAAY,cAAc,EAC5C,EAAG,cAAc,CAAK,EAEtB,EAAS,WAAW,CACxB,CAAA,CACH,CAAA,EAEL,CACI,WAAY,EAAQ,OAAS,EAAQ,MAAM,OAAS,WAAW,EAAQ,MAAM,aAAe,KAAA,CAEpG,EACA,EAAS,QAAQ,CAAE,EACnB,EAAG,QAAU,CACjB,CACJ,EAEA,YAAyB,EAAU,CAC/B,EAAI,UAAU,SAAU,CACpB,QAAQ,EAAS,EAAc,CAAE,SAAc,CAC3C,GAAyB,EAAI,EAAS,CAAE,OAAO,CAAA,CACnD,EACA,QAAQ,EAAS,EAAc,CAAE,SAAc,CAC3C,AAAI,EAAG,SAAY,EAAA,QAAQ,UAAU,CAAE,EACvC,GAAyB,EAAI,EAAS,CAAE,OAAO,CAAA,CACnD,EACA,cAAc,EAAS,CACnB,AAAI,EAAG,SAAY,EAAA,QAAQ,UAAU,CAAE,CAC3C,CAAA,CACH,CACL,63CC5BM,EAAQ,IAMR,EAAkB,EAAS,IACtB,EAAM,QAAQ,SAAS,eACjC,EAEK,EAAW,EAAS,IACf,EAAM,QAAQ,SAAS,UAAU,IAAI,AAAC,GAClC,SACA,GADA,CAEH,kBAAmB,EAAgB,QAAU,EAAK,YAAsB,EAE/E,CACJ,EAEK,EAAiB,EAAS,IACrB,EAAM,QAAQ,SAAS,UAAU,OAAS,CACpD,EAED,UACI,IAAM,EAAgB,MACtB,AAAC,GAAY,CACT,SAAS,gBAAgB,KAAO,CAAA,CAExC,spBCqBM,EAAQ,IAKR,EAAoB,oBAEpB,EAAe,EAAS,IAAM,OACzB,MAAA,MAAM,QAAN,cAAa,qBAAsB,EAAA,CAC7C,EACK,EAAiB,EAAS,IACrB,EAAM,MAAM,YAAc,GACpC,EACK,EAAe,EAAS,IACnB,EAAM,MAAM,UACtB,EACK,EAAc,EAAS,IAClB,EAAM,MAAM,aAAa,MAAM,cAAgB,WACzD,EACK,EAAe,EAAS,IACnB,EAAM,MAAM,eAAiB,EACvC,EACK,EAAwB,EAAS,IAC5B,EAAM,MAAM,eAAiB,IAAM,EAAY,OAAS,EAAa,KAC/E,EACK,EAAU,EAAS,IAAM,WACpB,MAAA,MAAM,QAAN,cAAa,UAAW,MAAM,QAAN,cAAa,QAAQ,KAAM,KAAM,QAAN,cAAa,QAAQ,IAAM,GAAA,CACxF,EACK,EAAiB,EAAS,IACrB,EAAY,OAAS,CAAC,EAAa,OAAS,CAAC,EAAsB,MAAQ,aAAe,WACpG,EAEK,EAAqB,IAAM,CAC7B,AAAI,EAAM,MAAM,YAAkB,EAAA,OAAO,aAAc,EAAK,CAAA;;;uUCI1D,EAAoB,oBAEpB,EAAY,EAAS,IAAM,WAC7B,MAAI,MAAM,QAAN,cAAa,cAAe,MAAM,QAAN,cAAa,YAAY,QAE9C,OADY,GAAY,OAAA,QAAA,cAAO,YAAY,QAAS,KAIxD,OAAA,CACV,85DC3GK,GAAa,IAAM,CACrB,KAAM,GAAQ,IACd,MAAO,QAAO,YACV,OAAO,KAAK,EAAM,OAAO,EAAE,IAAI,AAAC,GAAW,CAAC,EAAQ,EAAS,IAAM,EAAM,QAAQ,EAAO,CAAC,CAAC,CAC9F,CACJ,iBCkBA,KAAM,CAAE,QAAO,SAAQ,eAAgB,GAAW,EAE5C,EAAuB,AAAC,GACrB,EAAM,YAIP,EAAM,cAAgB,QACf,EAAiB,kBAAkB,sBAIvC,MADU,GAAiB,EAAM,WAAW,GACxB,SAAW,EAAM,YAAc,KAT3B,uZC3B7B,GAAgC,CAClC,CACI,KAAM,0BACN,KAAM,kBACN,UAAWC,EACf,CACJ,EAUM,GAAS,GAAa,CACxB,QAAS,GAAiB,EAC1B,UACA,eAAe,EAAI,EAAM,EAAe,CAE7B,MAAA,IAAI,SAAQ,AAAC,GAAY,CAC5B,WAAW,IAAM,CACb,GAAI,GAAW,CAAE,KAAM,EAAG,IAAK,CAAE,EAC7B,AAAA,GAA0B,GAAA,GAC9B,EAAQ,CAAQ,GACjB,GAAG,CAAA,CACT,CACL,CACJ,CAAC,EAED,GAAO,WAAW,CAAC,EAAI,EAAM,IAAS,CAI9B,AAAA,EAAG,OAAS,2BAA8B,EAAM,MAAM,aAAa,MAAmB,MAAQ,EAAG,UAC3F,EAAA,SAAS,EAAiB,MAAM,aAAa,QAAQ,oBAAqB,EAAG,QAAQ,EAAE,KAAK,IAAM,CAC5F,OAAA,EAAM,MAAM,aAAa,SAGxB,CAGZ,EAKD,EAAM,MAAM,eAAkB,OAAe,WAAkB,OAAA,YAAY,KAAK,mBAAmB,EAElG,GACT,CAAC,EAED,GAAO,UAAU,IAAM,CACnB,AAAI,EAAM,MAAM,YAAkB,EAAA,OAAO,aAAc,EAAK,CAChE,CAAC,ECzDD,YAA2B,EAA6B,WACpD,KAAM,GAAqB,eAAS,cAAc,MAAM,IAA7B,cAAgC,aAAa,0BAA7C,OAAwE,GAC7F,EAAc,GAAIC,IAAoB,CACxC,OAAQ,CACJ,mBAAoB,KAAQ,qBAAR,OAA8B,EAElD,wBAAyB,EAC7B,CAAA,CACH,EAED,SAAY,gBAAgB,EAErB,CACX,CAEA,YAAgC,EAAU,EAA6B,CAC7D,KAAA,GAAc,GAAkB,CAAO,EAE7C,EAAQ,OAAO,UAAU,CAAO,EAAI,IAAS,wBAEzC,EAAY,cAAc,CACtB,KAAM,SAAS,MACf,OAAQ,EAAK,QAAA,CAChB,CAAA,EACJ,EACG,EAAA,QAAQ,cAAe,CAAW,CAC1C,CChBA,aAAsB,CAElB,KAAM,GAAU,CACZ,WAAY,OAAO,IAAI,WACvB,WAAY,OAAO,IAAI,UAAA,EAI3B,EAAM,OAAO,EAAiB,MAAM,WAAW,UAAU,eAAgB,CAAO,EAG5E,OAAO,IAAI,YACX,OAAO,IAAI,UAAU,eAAgB,AAAC,GAAY,CAC9C,EAAM,SAAS,EAAiB,MAAM,aAAa,QAAQ,oBAAqB,EAAQ,GAAG,CAAA,CAC9F,CAET,CAGA,OAAO,iBAAiB,OAAQ,IAAM,CAG9B,AAAA,CAAC,OAAO,KAKR,CAAA,OAAO,IAAI,QAAU,GAEV,KAGJ,OAAO,IAAI,WAElB,OAAO,IAAI,UAAU,WAAY,IAAM,GAAY,CAAA,EAE3D,CAAC,oPCfK,EAAQ,IAQR,EAAS,IACT,EAAW,EAAI,EAAE,EAEjB,EAAkB,EAAS,IACtB,EAAM,MAAM,aACtB,EAEK,EAAU,EAAS,IAUjB,EAAM,MAAM,WAAW,WAChB,IAEJ,EAAM,YAAc,cAAgB,GAC9C,EAEK,EAAkB,EAAS,IACxB,EAAgB,MAEd,EAAM,SAAW,EAAM,SAAW,EAAS,MAFf,IAGtC,EAEK,EAAmB,EAAS,IACzB,EAAgB,MACd,EAAM,UAAY,EAAM,UAAY,SADR,IAEtC,EAEK,EAAc,IAAM,SAEtB,KAAM,GAAU,KAAO,QAAP,QAAc,IAAM,KAAO,QAAP,cAAc,IAAM,EAAO,MAC/D,EAAS,MAAS,EAAwB,SAAA,EAG9C,UAAU,IAAM,CACA,GAAA,CACf,EAED,GAAU,IAAM,CACA,GAAA,CACf,slBC7CK,EAAa,IACb,EAAa,IACb,EAAY,IAEd,GAAA,GAAY,EAAI,CAAC,EACjB,EAAW,EAAI,CAAC,EACd,KAAA,GAAe,KAAK,MAAO,EAAM,OAAS,EAAM,MAAS,IAAM,GAAG,EAAI,IACtE,EAAW,GAAS,CACtB,MAAO,IACP,OAAQ,IAAa,GAAA,MAAQ,EAAM,QACnC,QAAS,EAAA,CACZ,EACG,GAAA,GAAY,EAAI,EAAK,EACrB,EAAW,EAAI,EAAK,EACxB,KAAM,GAAW,CAAC,IAAK,KAAM,KAAM,KAAM,IAAI,EACvC,EAAa,GACf,GAAA,GAAa,EAAI,EAAK,EACtB,EAAY,GAAa,GAAA,IAAK,EAC9B,EAAa,EAAI,CAAC,EAEhB,KAAA,GAAc,EAAS,IAClB,GAAG,EAAM,aAAa,EAAS,iBAAiB,EAAS,SACnE,EACK,EAAmB,EAAS,IACvB,EAAW,GAAG,EAAM,aAAa,EAAQ,iBAAiB,IAAe,EAAM,GACzF,EACK,EAAU,EAAS,IAAqB,CAC1C,KAAM,GAAgB,EAAS,OAAO,AAAC,GAAQ,GAAO,EAAS,KAAM,EACrE,GAAI,GAAU,EAAc,OAAS,EAAc,GAAK,EAAS,EAAS,OAAS,GAG/E,MAAA,IAAY,EAAc,QAAU,GAAG,GAAU,EAAc,IAE5D,EAAW,EAAU,IAAA,CAC/B,EACK,EAAgB,EAAS,IACpB,CAAC,GAAQ,EAAM,UAAU,CACnC,EACK,EAAqB,EAAS,IACzB,EAAc,MACf,wBAAwB,CAAC,EAAM,WAAY,EAAK,QAAQ,CAAC,EAAM,WAAY,EAAK,OAChF,EACT,EACK,EAAmB,EAAS,IAAc,OACxC,GAAA,EAAM,OAAS,SAAU,CACzB,GAAI,EAAM,MAAO,CACb,KAAM,GAAe,KAAM,QAAN,cAAa,MAAM,KAClC,EAAiB,CAAC,EAAa,GAAK,CAAC,EAAa,GACjD,MAAA,mBAAoB,EAAI,EAAkB,MACrD,CACA,MAAO,mBAAmB,IAC9B,CACO,MAAA,EAAA,CACV,EACK,EAAU,EAAS,IACd,EAAM,OAAS,IACzB,EACK,EAAW,EAAS,IACf,EAAW,OAAS,CAC9B,EACK,EAAS,EAAS,IACb,EAAM,OAAS,UAAY,CAAC,EAAM,MAAQ,UAAY,OAChE,EAEK,EAAkB,IAAM,CAC1B,WAAW,IAAM,CACb,KAAM,GAAU,EAAW,MAC3B,AAAI,CAAC,GACL,EAAQ,OAAO,GAChB,GAAG,CAAA,EAEJ,EAAc,IAAM,CACtB,GAAU,EAAW,KAAoB,EACpC,KAAK,IAAM,CACR,EAAW,MAAQ,GACnB,EAAU,MAAQ,GAElB,GAAS,IAAM,CACX,GAAU,EAAU,KAAoB,EACnC,KAAK,IAAM,CACR,EAAU,MAAQ,GAEF,GAAA,CACnB,EACA,MAAM,IAAM,CACT,EAAS,MAAQ,EAAA,CACpB,CAAA,CACR,CAAA,CACJ,EACA,MAAM,IAAM,CACT,EAAS,MAAQ,EAAA,CACpB,CAAA,EAEH,GAAY,AAAC,GACR,GAAI,SAAQ,CAAC,EAAS,IAAW,CAC9B,KAAA,IAAQ,GAAI,OACZ,GAAW,EAAK,QAAQ,IAE9B,AAAI,CAAC,IAEC,IAAA,iBAAiB,OAAQ,CAAO,EAChC,GAAA,iBAAiB,QAAS,CAAM,EACtC,GAAM,IAAM,GACZ,EAAU,IAAI,GAAO,CAAO,EAAE,IAAI,GAAO,CAAM,EAE1C,EAAA,MAAM,gBAAkB,OAAO,MACpC,MAAO,GAAK,QAAQ,IAAA,CACvB,EAGL,UAAU,IAAM,CAMH,EAAA,MAAQ,EAAW,MAAO,YACzB,EAAA,MAAQ,EAAW,MAAO,YAAA,CACvC,EACD,GAAc,IAAM,CAChB,EAAW,MAAQ,OAAO,iBAChB,EAAA,QAAQ,CAAC,EAAO,IAAQ,EAAI,oBAAoB,OAAQ,CAAK,CAAC,CAAA,CAC3E,2jBCxJD,EAAiB,YAAY,YAAc,UAI3C,KAAM,IAAM,GAAUC,EAAG,EACpB,UAAU,WAAY,EAAO,EAC7B,IAAI,CAAK,EACT,IAAI,EAAM,EACV,IAAI,EAAM,EACV,IAAIC,GAAa,CAAE,UAA8B,EACjD,UAAU,aAAcC,EAAS,EACjC,UAAU,aAAcC,EAAS,EACjC,UAAU,cAAeC,EAAU,EACnC,UAAU,YAAaC,EAAQ,EAI9B,GAAS,6UACT,GAAQ,4MAER,GAAqB,AAAC,GAAuB,CAC/C,GAAQ,CAAU,EAAE,QAAQ,CAAC,CAAC,EAAM,KAAsB,CAEhD,KAAA,GAAgB,EACjB,MAAM,GAAG,EACT,IAAI,EACJ,QAAQ,SAAU,EAAE,EAMzB,GAAI,UAAU,EAAe,EAAiB,SAAW,CAAgB,CAAA,CAC5E,CACL,EAEC,CAAC,GAAQ,EAAK,EAAE,QAAQ,AAAC,GAAU,CAChC,GAAmB,CAAK,CAC5B,CAAC,EAED,GAAI,MAAM,MAAM"}